From 76f77d0fdb5e0c183ed8283290f489aea582ae0d Mon Sep 17 00:00:00 2001 From: Juan Ignacio Ubeira Date: Thu, 5 Dec 2024 09:26:50 -0300 Subject: [PATCH] Weighted pool factory deployment preparation. --- README.md | 1 + .../artifact/WeightedPool.json | 1042 +++++++++++++++++ .../artifact/WeightedPoolFactory.json | 481 ++++++++ .../build-info/WeightedPoolFactory.json | 1 + v3/tasks/20241205-v3-weighted-pool/index.ts | 86 ++ v3/tasks/20241205-v3-weighted-pool/input.ts | 26 + v3/tasks/20241205-v3-weighted-pool/readme.md | 10 + .../test/task.fork.ts | 85 ++ 8 files changed, 1732 insertions(+) create mode 100644 v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPool.json create mode 100644 v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPoolFactory.json create mode 100644 v3/tasks/20241205-v3-weighted-pool/build-info/WeightedPoolFactory.json create mode 100644 v3/tasks/20241205-v3-weighted-pool/index.ts create mode 100644 v3/tasks/20241205-v3-weighted-pool/input.ts create mode 100644 v3/tasks/20241205-v3-weighted-pool/readme.md create mode 100644 v3/tasks/20241205-v3-weighted-pool/test/task.fork.ts diff --git a/README.md b/README.md index e65d7334..8c1ab4f6 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,7 @@ Returns an object with all contracts from a deployment and their addresses. | Composable Stable Pools V6 | [`20240223-composable-stable-pool-v6`](./v2/tasks/20240223-composable-stable-pool-v6) | | Fraxtal Root Gauge, for veBAL voting | [`20240522-fraxtal-root-gauge-factory`](./v2/tasks/20240522-fraxtal-root-gauge-factory) | | V3 Vault | [`20241204-v3-vault`](./v3/tasks/20241204-v3-vault) | +| V3 Weighted Pool | [`20241205-v3-weighted-pool`](./v3/tasks/20241205-v3-weighted-pool) | ## Scripts diff --git a/v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPool.json b/v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPool.json new file mode 100644 index 00000000..9e65e4b4 --- /dev/null +++ b/v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPool.json @@ -0,0 +1,1042 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WeightedPool", + "sourceName": "contracts/WeightedPool.sol", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "numTokens", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "normalizedWeights", + "type": "uint256[]" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + } + ], + "internalType": "struct WeightedPool.NewPoolParams", + "name": "params", + "type": "tuple" + }, + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BaseOutOfBounds", + "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": [], + "name": "ExponentOutOfBounds", + "type": "error" + }, + { + "inputs": [], + "name": "InputLengthMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentNonce", + "type": "uint256" + } + ], + "name": "InvalidAccountNonce", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidExponent", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShortString", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidToken", + "type": "error" + }, + { + "inputs": [], + "name": "MaxInRatio", + "type": "error" + }, + { + "inputs": [], + "name": "MaxOutRatio", + "type": "error" + }, + { + "inputs": [], + "name": "MinWeight", + "type": "error" + }, + { + "inputs": [], + "name": "NormalizedWeightInvariant", + "type": "error" + }, + { + "inputs": [], + "name": "ProductOutOfBounds", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "SenderIsNotVault", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "StringTooLong", + "type": "error" + }, + { + "inputs": [], + "name": "WeightedPoolBptRateUnsupported", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroDivision", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroInvariant", + "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": [], + "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[]" + }, + { + "internalType": "enum Rounding", + "name": "rounding", + "type": "uint8" + } + ], + "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": [], + "name": "getAggregateFeePercentages", + "outputs": [ + { + "internalType": "uint256", + "name": "aggregateSwapFeePercentage", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aggregateYieldFeePercentage", + "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": "getNormalizedWeights", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "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": "getWeightedPoolDynamicData", + "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": "bool", + "name": "isPoolInitialized", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPoolPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPoolInRecoveryMode", + "type": "bool" + } + ], + "internalType": "struct WeightedPoolDynamicData", + "name": "data", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWeightedPoolImmutableData", + "outputs": [ + { + "components": [ + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "decimalScalingFactors", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "normalizedWeights", + "type": "uint256[]" + } + ], + "internalType": "struct WeightedPoolImmutableData", + "name": "data", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incrementNonce", + "outputs": [], + "stateMutability": "nonpayable", + "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": "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" + } + ], + "bytecode": "0x6102c08060405234610907576146c5803803809161001d828561091b565b833981016040828203126109075781516001600160401b0381116109075782019160a083830312610907576040519160a083016001600160401b038111848210176107105760405283516001600160401b038111610907578161008191860161093e565b835260208401516001600160401b03811161090757816100a291860161093e565b602084019081526040808601519085015260608501519094906001600160401b03811161090757810182601f82011215610907578051906001600160401b038211610710578160051b604051926100fc602083018561091b565b83526020808401918301019185831161090757602001905b82821061090b5750505060608501526080810151916001600160401b03831161090757602092610144920161093e565b608084018190529101516001600160a01b03811681036109075782519351604080519195919081016001600160401b03811182821017610710576040526001815260208101603160f81b815261019983610993565b610120526101a682610b16565b6101405282516020840120918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b03821117610710576040525190206080523060c0526101608290528051906001600160401b0382116107105760035490600182811c921680156108fd575b60208310146106f25781601f849311610892575b50602090601f831160011461080a575f926107ff575b50508160011b915f199060031b1c1916176003555b83516001600160401b03811161071057600454600181811c911680156107f5575b60208210146106f257601f8111610796575b506020601f821160011461072f5781929394955f92610724575b50508160011b915f199060031b1c1916176004555b610180528051906001600160401b0382116107105760055490600182811c92168015610706575b60208310146106f25781601f8493116106a4575b50602090601f831160011461061c575f92610611575b50508160011b915f199060031b1c1916176005555b60408101516101a09080825260608301515103610602575f905f5b81519260ff821693841015610494576060850151805185101561048057602090611fe08460051b1601015190662386f26fc100008210610471578181018091116103d95793806103ed57506101c0525b60ff8091169081146103d957600101610375565b634e487b7160e01b5f52601160045260245ffd5b600181036103ff57506101e0526103c5565b600281036104115750610200526103c5565b600381036104235750610220526103c5565b600481036104355750610240526103c5565b600581036104475750610260526103c5565b600681036104595750610280526103c5565b600714610467575b506103c5565b6102a0525f610461565b63bd39358360e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b670de0b6b3a76400009150036105f357604051613a789182610c4d833960805182612806015260a051826128d2015260c051826127d7015260e051826128550152610100518261287b0152610120518261112801526101405182611152015261016051828181610260015281816104880152818161065f01528181610d7e015281816110ed015281816114ae01528181611733015281816119d801528181612118015261276c01526101805182818161059d0152818161094a01528181610a1201528181610c7a0152611277015251816128fa01526101c0518181816125d2015261295101526101e0518181816125ff015261297e01526102005181818161262c01526129b701526102205181818161265901526129f00152610240518181816126860152612a2a0152610260518181816126b30152612a630152610280518181816126e00152612a9f01526102a05181818161270b0152612ad90152f35b631ce788a760e11b5f5260045ffd5b63aaad13f760e01b5f5260045ffd5b015190505f80610345565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091905b601f1984168510610689576001945083601f19811610610671575b505050811b0160055561035a565b01515f1960f88460031b161c191690555f8080610663565b81810151835560209485019460019093019290910190610648565b90915060055f5260205f20601f840160051c8101602085106106eb575b90849392915b601f830160051c820181106106dd57505061032f565b5f81558594506001016106c7565b50806106c1565b634e487b7160e01b5f52602260045260245ffd5b91607f169161031b565b634e487b7160e01b5f52604160045260245ffd5b015190505f806102df565b60045f5260205f20905f5b601f198416811061077e575060019394959683601f19811610610766575b505050811b016004556102f4565b01515f1960f88460031b161c191690555f8080610758565b9091602060018192858b01518155019301910161073a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101602084106107ee575b601f830160051c820181106107e35750506102c5565b5f81556001016107cd565b50806107cd565b90607f16906102b3565b015190505f8061027d565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510610877576001945083601f1981161061085f575b505050811b01600355610292565b01515f1960f88460031b161c191690555f8080610851565b81810151835560209485019460019093019290910190610836565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101602085106108f6575b90849392915b601f830160051c820181106108e8575050610267565b5f81558594506001016108d2565b50806108cc565b91607f1691610253565b5f80fd5b8151815260209182019101610114565b601f909101601f19168101906001600160401b0382119082101761071057604052565b81601f82011215610907578051906001600160401b0382116107105760405192610972601f8401601f19166020018561091b565b8284526020838301011161090757815f9260208093018386015e8301015290565b805160209081811015610a095750601f8251116109cb57808251920151908083106109bd57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610710575f54926001938481811c91168015610b0c575b838210146106f257601f8111610ad9575b5081601f8411600114610a7757509282939183925f94610a6c575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610a57565b919083601f1981165f8052845f20945f905b88838310610abf5750505010610aa7575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610a9a565b858701518855909601959485019487935090810190610a89565b5f805284601f845f20920160051c820191601f860160051c015b828110610b01575050610a3c565b5f8155018590610af3565b90607f1690610a2b565b805160209081811015610b405750601f8251116109cb57808251920151908083106109bd57501790565b9192916001600160401b0381116107105760019182548381811c91168015610c42575b828210146106f257601f8111610c0f575b5080601f8311600114610baf5750819293945f92610ba4575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610b8d565b90601f19831695845f52825f20925f905b888210610bf85750508385969710610be0575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f8080610bd3565b808785968294968601518155019501930190610bc0565b835f5283601f835f20920160051c820191601f850160051c015b828110610c37575050610b74565b5f8155018490610c29565b90607f1690610b6356fe6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611d905750826306fdde0314611ce1578263095ea7b314611c6357826316a0b3e014611a2a57826318160ddd14611a0e57826323b872dd1461196657826323de665114611934578263273c1adf1461191257826330adf81f146118d8578263313ce567146118bd5782633644e515146118a157826353b79bd7146116e557826354fd4d50146115f55782635687f2b814611596578263627cdcb91461156d578263654cf15d1461154b578263679aefce1461151457826370a082311461144057826372c981861461131f5782637ecebe00146112db57826381fa807c1461121a57826384b0196e146111115782638d928af8146110c157826395d89b4114610fbb578263984de9e814610df9578263a9059cbb14610ce6578263aa6ca80814610c21578263abb1dc44146109b8578263b156aa0a146108f1578263b677fa56146108cf578263c0bc6f33146105f6578263ce20ece7146105d6578263d335b0cf14610543578263d505accf146102d857508163dd62ed3e146101e5575063f89f27ed146101ae575f80fd5b346101e1575f6003193601126101e1576101dd906101ca6128f8565b9051918291602083526020830190611fa7565b0390f35b5f80fd5b82346101e157806003193601126101e1576020610200611e1c565b606461020a611e3f565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a575b6020925051908152f35b90506020823d6020116102c7575b816102b560209383611eca565b810103126101e1576020915190610290565b3d91506102a8565b513d5f823e3d90fd5b8390346101e1576003193601126101e1576102f1611e1c565b906102fa611e3f565b604435926084359060643560ff831683036101e157804211610519576103478273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9061041361040a875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103be81611e92565b5190206103c96127c0565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f35565b90929192612fc4565b168181036104ec5750505f84959661048460209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102cf57506104b857005b6020813d6020116104e4575b816104d160209383611eca565b810103126101e1576104e290612079565b005b3d91506104c4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101e1575f6003193601126101e1578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a576020925051908152f35b83346101e1575f6003193601126101e157602090516509184e72a0008152f35b9150346101e1575f6003193601126101e157825161061381611e92565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f916108ad575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f91610889575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa90811561087f575f91610852575b5089526107516120cf565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561084857928b9c926107e0926107f396955f9e9c9d9e9261081b575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190611fa7565b915190601f198b840301908b0152611fa7565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b61083a9250803d10610841575b6108328183611eca565b810190612482565b5f806107aa565b503d610828565b8c513d5f823e3d90fd5b90508a81813d8311610878575b6108698183611eca565b810103126101e157515f610746565b503d61085f565b8d513d5f823e3d90fd5b6108a591503d805f833e61089d8183611eca565b81019061228d565b90505f610703565b6108c991503d805f833e6108c18183611eca565b8101906125a4565b5f6106c0565b83346101e1575f6003193601126101e157602090516709b6e64a8ec600008152f35b8382346101e1575f6003193601126101e1578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610992575b5051918291602083526020830190611fa7565b6109a79192503d805f833e6108c18183611eca565b908361097f565b82513d5f823e3d90fd5b8382346101e1575f6003193601126101e15773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f935f925f925f95610aed575b5090610a6595949392918151968796608088526080880190611fda565b6020878203818901528080875193848152019601925f905b838210610aa957898803868b015289806101dd8b610a9b8c8c611fa7565b908382036060850152611fa7565b9184989950606086979860019395978397518051610ac681612023565b83528685820151168584015201511515898201520198019201899897969594929391610a7d565b955093509150503d805f853e610b038185611eca565b8301926080818503126101e15780519167ffffffffffffffff928381116101e15785610b30918401612185565b91602095868201518581116101e157820181601f820112156101e157805190610b5882611eed565b98610b6586519a8b611eca565b828a52808a01816060809502840101928584116101e1578201905b838210610bc5575050505050828201518581116101e15781610ba391840161222c565b9460608301519081116101e157610bba920161222c565b919492919386610a48565b84828703126101e157875190610bda82611e62565b825160028110156101e157825283830151908c821682036101e1578285928389950152610c088b8601612079565b8b820152815201910190610b80565b83513d5f823e3d90fd5b8382346101e1575f6003193601126101e1578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610cc2575b5051918291602083526020830190611fda565b610cdf9192503d805f833e610cd78183611eca565b810190612203565b9083610caf565b5082346101e157806003193601126101e1576020610d6492610d06611e1c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5575b6020905160018152f35b6020823d602011610de7575b81610dce60209383611eca565b810103126101e157610de1602092612079565b50610dab565b3d9150610dc1565b50513d5f823e3d90fd5b5082346101e157806003193601126101e157813567ffffffffffffffff81116101e157610e299036908401611f05565b60243560028110156101e157610e3e81612023565b610fb457825b610e4c6128f8565b9080600314610f5f5780600414610ed85780600114610e9557600214610e7f57605184634e487b7160e01b5f525260245ffd5b6020935090610e8d9161306f565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610ec55750602092610ebf91612b84565b90610e8f565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357610f1b600191610f15610f0387876120bb565b51610f0e888b6120bb565b5190612ba2565b90612c4c565b930192610ee7565b92509350508015610f38576020925090610e8f565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357670de0b6b3a7640000610fab600192610fa5610f9388886120bb565b51610f9e898c6120bb565b5190612e7d565b90612b71565b04930192610f6e565b6003610e44565b8382346101e1575f6003193601126101e157815191825f8354610fdd81612041565b90818452602095600191876001821691825f1461107c575050600114611020575b5050506101dd9291611011910385611eca565b51928284938452830190611df7565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061106457505050820101816110116101dd610ffe565b8054848a01860152889550879490930192810161104b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061101191506101dd9050610ffe565b83346101e1575f6003193601126101e1576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101e1575f6003193601126101e15761114c7f0000000000000000000000000000000000000000000000000000000000000000612c8d565b926111767f0000000000000000000000000000000000000000000000000000000000000000612dbf565b815192602084019084821067ffffffffffffffff8311176112075750916111e7916101dd949382525f84526111da82519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611df7565b9186830390870152611df7565b904660608501523060808501525f60a085015283820360c0850152611fa7565b604190634e487b7160e01b5f525260245ffd5b8382346101e1575f6003193601126101e1578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f926112be575b505060608282015191015182519182526020820152f35b6112d49250803d10610841576108328183611eca565b82806112a7565b83346101e15760206003193601126101e15760209073ffffffffffffffffffffffffffffffffffffffff61130d611e1c565b165f5260028252805f20549051908152f35b8382346101e15760209260031984813601126101e15782359167ffffffffffffffff918284116101e15783360301126101e15783519161135e83611e92565b8084013560028110156101e157835260248101358684015260448101358281116101e15761139190853691840101611f05565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101e15760a084015260c4810135908282116101e1570192366023850112156101e15780840135918211611207575083519061140c86601f19601f8401160183611eca565b80825236602482860101116101e15785815f926024610e8d9701838601378301015260c082015261143b612755565b6122d1565b8382346101e157602091826003193601126101e1578261145e611e1c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610def575f926114e5575b5051908152f35b9091508281813d831161150d575b6114fd8183611eca565b810103126101e1575190836114de565b503d6114f3565b50346101e1575f6003193601126101e1577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101e1575f6003193601126101e1576020905167016345785d8a00008152f35b346101e1575f6003193601126101e157335f908152600260205260409020805460018101909155005b83346101e15760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115c836611f65565b9391946115d3612755565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101e1575f6003193601126101e15780516005549091825f61161884612041565b808352602094600190866001821691825f146116a557505060011461164a575b50506101dd9291611011910385611eca565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b82841061168d5750505082010181611011611638565b8054848a018601528895508794909301928101611677565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506110119050611638565b5082346101e1575f6003193601126101e15780519061170382611e62565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561189757905f9291839161187d575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611873575f9161185a575b5081959295526117e96128f8565b84528251948086526080860192519260608288015283518091528160a088019401915f5b8281106118445788806101dd8a8a6118338b8b51601f1993848884030190880152611fa7565b915190848303016060850152611fa7565b83518a168652948101949281019260010161180d565b61186e91503d805f833e61089d8183611eca565b6117db565b84513d5f823e3d90fd5b61189191503d8085833e610cd78183611eca565b8a611798565b86513d5f823e3d90fd5b83346101e1575f6003193601126101e157602090610e8d6127c0565b83346101e1575f6003193601126101e1576020905160128152f35b83346101e1575f6003193601126101e157602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101e1575f6003193601126101e157602090516729a2241af62c00008152f35b83346101e15760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115c836611f65565b5082346101e15760205f608461197b36611f65565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5576020905160018152f35b83346101e1575f6003193601126101e157602090610e8d6120cf565b8382346101e15760606003193601126101e157803567ffffffffffffffff81116101e157611a5b9036908301611f05565b9160243592611a77611a7085604435936120bb565b51946125ca565b60019081831115611c5d5760025b80600314611be75780600414611b4e5780600114611b0c57600214611ab757605185634e487b7160e01b5f525260245ffd5b909192938115611ae65750610e8d9260209592610f15926ec097ce7bc90715b34b9f0fffffffff040190612ba2565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611b3b575092610f15610e8d926020956ec097ce7bc90715b34b9f10000000000490612ba2565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611ba7575b5050508115611b81575092610f15610e8d9260209590612ba2565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611be1579082611bd98193610f15611bcf89866120bb565b51610f0e8a612086565b950192611b61565b93611b66565b509192939080670de0b6b3a7640000935f925b611c19575050508115611b81575092610f15610e8d9260209590612ba2565b909193670de0b6b3a764000051851015611be1579082670de0b6b3a7640000611c548294610fa5611c4a8a876120bb565b51610f9e8b612086565b04950192611bfa565b81611a85565b5082346101e157806003193601126101e1576020610d6492611c83611e1c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101e1575f6003193601126101e15780516003549091825f611d0484612041565b808352602094600190866001821691825f146116a5575050600114611d355750506101dd9291611011910385611eca565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611d785750505082010181611011611638565b8054848a018601528895508794909301928101611d62565b82346101e15760206003193601126101e15735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101e1577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6060810190811067ffffffffffffffff821117611e7e57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff821117611e7e57604052565b6040810190811067ffffffffffffffff821117611e7e57604052565b90601f601f19910116810190811067ffffffffffffffff821117611e7e57604052565b67ffffffffffffffff8111611e7e5760051b60200190565b9080601f830112156101e1576020908235611f1f81611eed565b93611f2d6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b828210611f56575050505090565b81358152908301908301611f48565b60031960609101126101e15773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101e1579160243590811681036101e1579060443590565b9081518082526020808093019301915f5b828110611fc6575050505090565b835185529381019392810192600101611fb8565b9081518082526020808093019301915f5b828110611ff9575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611feb565b6002111561202d57565b634e487b7160e01b5f52602160045260245ffd5b90600182811c9216801561206f575b602083101461205b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612050565b519081151582036101e157565b670de0b6b3a7640000518110156120a75760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120a75760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561217a575f9161214b575090565b90506020813d602011612172575b8161216660209383611eca565b810103126101e1575190565b3d9150612159565b6040513d5f823e3d90fd5b9080601f830112156101e1578151906020916121a081611eed565b936121ae6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b8282106121d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101e15781529083019083016121c9565b906020828203126101e157815167ffffffffffffffff81116101e1576122299201612185565b90565b9080601f830112156101e15781519060209161224781611eed565b936122556040519586611eca565b81855260208086019260051b8201019283116101e157602001905b82821061227e575050505090565b81518152908301908301612270565b9190916040818403126101e15780519267ffffffffffffffff938481116101e157816122ba91840161222c565b9360208301519081116101e157612229920161222c565b604081019081516122e860608301918251906120bb565b519251916122fc60808201938451906120bb565b5191815161230981612023565b61231281612023565b6123d15761232c612325602092516125ca565b94516125ca565b910151670de0b6b3a7640000948561234382612b3d565b0482116123a95761235761235d9282612b30565b9061306f565b848402938085048614901517156123955761237e6123849261239195612b84565b90612ba2565b8381810391100290612b71565b0490565b634e487b7160e01b5f52601160045260245ffd5b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6123eb6123e460209295939495516125ca565b92516125ca565b920151670de0b6b3a764000061240085612b3d565b04811161245a578303908382116123955761242161237e926124279561306f565b9261306f565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123955761222991612c4c565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101e15760405192610140928385019267ffffffffffffffff9086851082861117611e7e576080136101e1576101c0860190811184821017611e7e576040526124d481612079565b83526124e260208201612079565b9261016093848701526124f760408301612079565b92610180938488015261250c60608401612079565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101e15760808601526101008082015163ffffffff811681036101e15761259d946125939160a08901526125876101209761257b898701612079565b60c08b01528501612079565b60e08901528301612079565b9086015201612079565b9082015290565b906020828203126101e157815167ffffffffffffffff81116101e157612229920161222c565b806125f457507f000000000000000000000000000000000000000000000000000000000000000090565b6001810361262157507f000000000000000000000000000000000000000000000000000000000000000090565b6002810361264e57507f000000000000000000000000000000000000000000000000000000000000000090565b6003810361267b57507f000000000000000000000000000000000000000000000000000000000000000090565b600481036126a857507f000000000000000000000000000000000000000000000000000000000000000090565b600581036126d557507f000000000000000000000000000000000000000000000000000000000000000090565b6006810361270257507f000000000000000000000000000000000000000000000000000000000000000090565b60070361272d577f000000000000000000000000000000000000000000000000000000000000000090565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361279457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128cf575b15612828577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e7e5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127ff565b7f000000000000000000000000000000000000000000000000000000000000000061292281611eed565b906129306040519283611eca565b80825261293c81611eed565b601f196020840191013682378251156120a7577f000000000000000000000000000000000000000000000000000000000000000090528151600110156120a7577f000000000000000000000000000000000000000000000000000000000000000060408301526002811115612b2c578151600210156120a7577f000000000000000000000000000000000000000000000000000000000000000060608301526003811115612b2c578151600310156120a7577f0000000000000000000000000000000000000000000000000000000000000000608083015260049081811115612b27578251821015612b14577f000000000000000000000000000000000000000000000000000000000000000060a08401526005811115612b2757825160051015612b14577f000000000000000000000000000000000000000000000000000000000000000060c08401526006811115612b2757825160061015612b14576007907f000000000000000000000000000000000000000000000000000000000000000060e085015211612acc575090565b815160071015612b0157507f000000000000000000000000000000000000000000000000000000000000000061010082015290565b603290634e487b7160e01b5f525260245ffd5b603282634e487b7160e01b5f525260245ffd5b505090565b5090565b9190820180921161239557565b90670429d069189e00009182810292818404149015171561239557565b906127109182810292818404149015171561239557565b8181029291811591840414171561239557565b8115612b8e570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612bb957505090565b671bc16d674ec800008103612bd45750508061222991612c4c565b673782dace9d9000008103612bf8575050612bf28161222992612c4c565b80612c4c565b612c02919261310b565b906001612c0e83612b5a565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116123955761222991612b30565b90612c5691612b71565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b60ff8114612ce15760ff811690601f8211612cb95760405191612caf83611eae565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612cf383612041565b80835292602090600190818116908115612d7c5750600114612d1e575b505061222992500382611eca565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612d6457506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612d49565b9050602093506122299592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612d10565b60ff8114612de15760ff811690601f8211612cb95760405191612caf83611eae565b506040515f81600191600154612df681612041565b8084529360209160018116908115612d7c5750600114612e1e57505061222992500382611eca565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612e6557506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612e4a565b670de0b6b3a764000091808303612e945750905090565b8290671bc16d674ec800008103612eb15750508061239191612b71565b673782dace9d9000008103612ed55750612ece8261239193612b71565b0480612b71565b9050612ee09161310b565b612ee981612b5a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848301040190151502906001820180831161239557811015612f30575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fb9579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561217a575f5173ffffffffffffffffffffffffffffffffffffffff811615612faf57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561202d5780612fd6575050565b60018103613006577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361303a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146130445750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156130bf57670de0b6b3a764000091828102928184041490151715612395576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612b8e576ec097ce7bc90715b34b9f10000000000590565b8115612b8e570590565b908015613a34578115613a2e578160ff1c613a0657770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156139de5781670c7d713b49da000012806139cd575b1561366a57670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906131a4908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613101565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580613657575b1561362f5781908212158061361c575b156135f4575f915f81126135e5575b506064906806f05b59d3b20000008112613582577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215613549575b6856bc75e2d63100000081121561350f575b682b5e3af16b188000008112156134d7575b6815af1d78b58c40000081121561349f575b680ad78ebc5ac6200000811215613468575b82811215613431575b6802b5e3af16b18800008112156133fa575b68015af1d78b58c400008112156133c3575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f1461222957612229906130e7565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590613344565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590613332565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613320565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613317565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613305565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906132f3565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906132e1565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016132cf565b6803782dace9d900000081126135d2577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132ba565b68056bc75e2d63100000826001926132ba565b600192505f039050606461325e565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561324f565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561323f565b81670de0b6b3a7640000925f918481126139b7575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561398c575b73011798004d755d3c8bc8e03204cf44619e00000082121561396b575b820290808302906e01855144814a7ff805980ff00840009081831215613948575b50506b02df0ab5a80a22c61ab5a70080821215613928575b50693f1fce3da636ea5cf85080821215613908575b50690127fa27722cc06cc5e2808212156138e8575b5068280e60114edb805d03808212156138c8575b50680ebc5fb41746121110808212156138b1575b506808f00f760a4b2db55d80821215613891575b506806f5f177578893793780821215613871575b506806248f33704b28660380821215613852575b506805c548670b9510e7ac80821215613833575b506137e068056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613101565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f1461382e575f035b02613213565b613828565b68056bc75e2d631000006756bc75e2d63100009202059101905f6137a4565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613790565b68056bc75e2d6310000068015af1d78b58c400009202059101905f61377c565b68056bc75e2d631000006802b5e3af16b18800009202059101905f613768565b68056bc75e2d63100000809202059101905f613754565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f613740565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61372c565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613717565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613702565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f806136ea565b906b1425982cf597cd205cef73806803782dace9d9000000910591016136c9565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b20000006136ac565b90506139c391506130e7565b600190606461367f565b50670f43fc2c04ee00008212613151565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212204b1676dd274814fed4fff49a83b5404b448d288d13e3f2848873c7c36baed2cf64736f6c634300081a0033", + "deployedBytecode": "0x6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611d905750826306fdde0314611ce1578263095ea7b314611c6357826316a0b3e014611a2a57826318160ddd14611a0e57826323b872dd1461196657826323de665114611934578263273c1adf1461191257826330adf81f146118d8578263313ce567146118bd5782633644e515146118a157826353b79bd7146116e557826354fd4d50146115f55782635687f2b814611596578263627cdcb91461156d578263654cf15d1461154b578263679aefce1461151457826370a082311461144057826372c981861461131f5782637ecebe00146112db57826381fa807c1461121a57826384b0196e146111115782638d928af8146110c157826395d89b4114610fbb578263984de9e814610df9578263a9059cbb14610ce6578263aa6ca80814610c21578263abb1dc44146109b8578263b156aa0a146108f1578263b677fa56146108cf578263c0bc6f33146105f6578263ce20ece7146105d6578263d335b0cf14610543578263d505accf146102d857508163dd62ed3e146101e5575063f89f27ed146101ae575f80fd5b346101e1575f6003193601126101e1576101dd906101ca6128f8565b9051918291602083526020830190611fa7565b0390f35b5f80fd5b82346101e157806003193601126101e1576020610200611e1c565b606461020a611e3f565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a575b6020925051908152f35b90506020823d6020116102c7575b816102b560209383611eca565b810103126101e1576020915190610290565b3d91506102a8565b513d5f823e3d90fd5b8390346101e1576003193601126101e1576102f1611e1c565b906102fa611e3f565b604435926084359060643560ff831683036101e157804211610519576103478273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9061041361040a875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103be81611e92565b5190206103c96127c0565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f35565b90929192612fc4565b168181036104ec5750505f84959661048460209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102cf57506104b857005b6020813d6020116104e4575b816104d160209383611eca565b810103126101e1576104e290612079565b005b3d91506104c4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101e1575f6003193601126101e1578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a576020925051908152f35b83346101e1575f6003193601126101e157602090516509184e72a0008152f35b9150346101e1575f6003193601126101e157825161061381611e92565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f916108ad575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f91610889575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa90811561087f575f91610852575b5089526107516120cf565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561084857928b9c926107e0926107f396955f9e9c9d9e9261081b575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190611fa7565b915190601f198b840301908b0152611fa7565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b61083a9250803d10610841575b6108328183611eca565b810190612482565b5f806107aa565b503d610828565b8c513d5f823e3d90fd5b90508a81813d8311610878575b6108698183611eca565b810103126101e157515f610746565b503d61085f565b8d513d5f823e3d90fd5b6108a591503d805f833e61089d8183611eca565b81019061228d565b90505f610703565b6108c991503d805f833e6108c18183611eca565b8101906125a4565b5f6106c0565b83346101e1575f6003193601126101e157602090516709b6e64a8ec600008152f35b8382346101e1575f6003193601126101e1578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610992575b5051918291602083526020830190611fa7565b6109a79192503d805f833e6108c18183611eca565b908361097f565b82513d5f823e3d90fd5b8382346101e1575f6003193601126101e15773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f935f925f925f95610aed575b5090610a6595949392918151968796608088526080880190611fda565b6020878203818901528080875193848152019601925f905b838210610aa957898803868b015289806101dd8b610a9b8c8c611fa7565b908382036060850152611fa7565b9184989950606086979860019395978397518051610ac681612023565b83528685820151168584015201511515898201520198019201899897969594929391610a7d565b955093509150503d805f853e610b038185611eca565b8301926080818503126101e15780519167ffffffffffffffff928381116101e15785610b30918401612185565b91602095868201518581116101e157820181601f820112156101e157805190610b5882611eed565b98610b6586519a8b611eca565b828a52808a01816060809502840101928584116101e1578201905b838210610bc5575050505050828201518581116101e15781610ba391840161222c565b9460608301519081116101e157610bba920161222c565b919492919386610a48565b84828703126101e157875190610bda82611e62565b825160028110156101e157825283830151908c821682036101e1578285928389950152610c088b8601612079565b8b820152815201910190610b80565b83513d5f823e3d90fd5b8382346101e1575f6003193601126101e1578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610cc2575b5051918291602083526020830190611fda565b610cdf9192503d805f833e610cd78183611eca565b810190612203565b9083610caf565b5082346101e157806003193601126101e1576020610d6492610d06611e1c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5575b6020905160018152f35b6020823d602011610de7575b81610dce60209383611eca565b810103126101e157610de1602092612079565b50610dab565b3d9150610dc1565b50513d5f823e3d90fd5b5082346101e157806003193601126101e157813567ffffffffffffffff81116101e157610e299036908401611f05565b60243560028110156101e157610e3e81612023565b610fb457825b610e4c6128f8565b9080600314610f5f5780600414610ed85780600114610e9557600214610e7f57605184634e487b7160e01b5f525260245ffd5b6020935090610e8d9161306f565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610ec55750602092610ebf91612b84565b90610e8f565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357610f1b600191610f15610f0387876120bb565b51610f0e888b6120bb565b5190612ba2565b90612c4c565b930192610ee7565b92509350508015610f38576020925090610e8f565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357670de0b6b3a7640000610fab600192610fa5610f9388886120bb565b51610f9e898c6120bb565b5190612e7d565b90612b71565b04930192610f6e565b6003610e44565b8382346101e1575f6003193601126101e157815191825f8354610fdd81612041565b90818452602095600191876001821691825f1461107c575050600114611020575b5050506101dd9291611011910385611eca565b51928284938452830190611df7565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061106457505050820101816110116101dd610ffe565b8054848a01860152889550879490930192810161104b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061101191506101dd9050610ffe565b83346101e1575f6003193601126101e1576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101e1575f6003193601126101e15761114c7f0000000000000000000000000000000000000000000000000000000000000000612c8d565b926111767f0000000000000000000000000000000000000000000000000000000000000000612dbf565b815192602084019084821067ffffffffffffffff8311176112075750916111e7916101dd949382525f84526111da82519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611df7565b9186830390870152611df7565b904660608501523060808501525f60a085015283820360c0850152611fa7565b604190634e487b7160e01b5f525260245ffd5b8382346101e1575f6003193601126101e1578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f926112be575b505060608282015191015182519182526020820152f35b6112d49250803d10610841576108328183611eca565b82806112a7565b83346101e15760206003193601126101e15760209073ffffffffffffffffffffffffffffffffffffffff61130d611e1c565b165f5260028252805f20549051908152f35b8382346101e15760209260031984813601126101e15782359167ffffffffffffffff918284116101e15783360301126101e15783519161135e83611e92565b8084013560028110156101e157835260248101358684015260448101358281116101e15761139190853691840101611f05565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101e15760a084015260c4810135908282116101e1570192366023850112156101e15780840135918211611207575083519061140c86601f19601f8401160183611eca565b80825236602482860101116101e15785815f926024610e8d9701838601378301015260c082015261143b612755565b6122d1565b8382346101e157602091826003193601126101e1578261145e611e1c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610def575f926114e5575b5051908152f35b9091508281813d831161150d575b6114fd8183611eca565b810103126101e1575190836114de565b503d6114f3565b50346101e1575f6003193601126101e1577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101e1575f6003193601126101e1576020905167016345785d8a00008152f35b346101e1575f6003193601126101e157335f908152600260205260409020805460018101909155005b83346101e15760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115c836611f65565b9391946115d3612755565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101e1575f6003193601126101e15780516005549091825f61161884612041565b808352602094600190866001821691825f146116a557505060011461164a575b50506101dd9291611011910385611eca565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b82841061168d5750505082010181611011611638565b8054848a018601528895508794909301928101611677565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506110119050611638565b5082346101e1575f6003193601126101e15780519061170382611e62565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561189757905f9291839161187d575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611873575f9161185a575b5081959295526117e96128f8565b84528251948086526080860192519260608288015283518091528160a088019401915f5b8281106118445788806101dd8a8a6118338b8b51601f1993848884030190880152611fa7565b915190848303016060850152611fa7565b83518a168652948101949281019260010161180d565b61186e91503d805f833e61089d8183611eca565b6117db565b84513d5f823e3d90fd5b61189191503d8085833e610cd78183611eca565b8a611798565b86513d5f823e3d90fd5b83346101e1575f6003193601126101e157602090610e8d6127c0565b83346101e1575f6003193601126101e1576020905160128152f35b83346101e1575f6003193601126101e157602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101e1575f6003193601126101e157602090516729a2241af62c00008152f35b83346101e15760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115c836611f65565b5082346101e15760205f608461197b36611f65565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5576020905160018152f35b83346101e1575f6003193601126101e157602090610e8d6120cf565b8382346101e15760606003193601126101e157803567ffffffffffffffff81116101e157611a5b9036908301611f05565b9160243592611a77611a7085604435936120bb565b51946125ca565b60019081831115611c5d5760025b80600314611be75780600414611b4e5780600114611b0c57600214611ab757605185634e487b7160e01b5f525260245ffd5b909192938115611ae65750610e8d9260209592610f15926ec097ce7bc90715b34b9f0fffffffff040190612ba2565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611b3b575092610f15610e8d926020956ec097ce7bc90715b34b9f10000000000490612ba2565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611ba7575b5050508115611b81575092610f15610e8d9260209590612ba2565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611be1579082611bd98193610f15611bcf89866120bb565b51610f0e8a612086565b950192611b61565b93611b66565b509192939080670de0b6b3a7640000935f925b611c19575050508115611b81575092610f15610e8d9260209590612ba2565b909193670de0b6b3a764000051851015611be1579082670de0b6b3a7640000611c548294610fa5611c4a8a876120bb565b51610f9e8b612086565b04950192611bfa565b81611a85565b5082346101e157806003193601126101e1576020610d6492611c83611e1c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101e1575f6003193601126101e15780516003549091825f611d0484612041565b808352602094600190866001821691825f146116a5575050600114611d355750506101dd9291611011910385611eca565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611d785750505082010181611011611638565b8054848a018601528895508794909301928101611d62565b82346101e15760206003193601126101e15735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101e1577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6060810190811067ffffffffffffffff821117611e7e57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff821117611e7e57604052565b6040810190811067ffffffffffffffff821117611e7e57604052565b90601f601f19910116810190811067ffffffffffffffff821117611e7e57604052565b67ffffffffffffffff8111611e7e5760051b60200190565b9080601f830112156101e1576020908235611f1f81611eed565b93611f2d6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b828210611f56575050505090565b81358152908301908301611f48565b60031960609101126101e15773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101e1579160243590811681036101e1579060443590565b9081518082526020808093019301915f5b828110611fc6575050505090565b835185529381019392810192600101611fb8565b9081518082526020808093019301915f5b828110611ff9575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611feb565b6002111561202d57565b634e487b7160e01b5f52602160045260245ffd5b90600182811c9216801561206f575b602083101461205b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612050565b519081151582036101e157565b670de0b6b3a7640000518110156120a75760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120a75760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561217a575f9161214b575090565b90506020813d602011612172575b8161216660209383611eca565b810103126101e1575190565b3d9150612159565b6040513d5f823e3d90fd5b9080601f830112156101e1578151906020916121a081611eed565b936121ae6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b8282106121d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101e15781529083019083016121c9565b906020828203126101e157815167ffffffffffffffff81116101e1576122299201612185565b90565b9080601f830112156101e15781519060209161224781611eed565b936122556040519586611eca565b81855260208086019260051b8201019283116101e157602001905b82821061227e575050505090565b81518152908301908301612270565b9190916040818403126101e15780519267ffffffffffffffff938481116101e157816122ba91840161222c565b9360208301519081116101e157612229920161222c565b604081019081516122e860608301918251906120bb565b519251916122fc60808201938451906120bb565b5191815161230981612023565b61231281612023565b6123d15761232c612325602092516125ca565b94516125ca565b910151670de0b6b3a7640000948561234382612b3d565b0482116123a95761235761235d9282612b30565b9061306f565b848402938085048614901517156123955761237e6123849261239195612b84565b90612ba2565b8381810391100290612b71565b0490565b634e487b7160e01b5f52601160045260245ffd5b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6123eb6123e460209295939495516125ca565b92516125ca565b920151670de0b6b3a764000061240085612b3d565b04811161245a578303908382116123955761242161237e926124279561306f565b9261306f565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123955761222991612c4c565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101e15760405192610140928385019267ffffffffffffffff9086851082861117611e7e576080136101e1576101c0860190811184821017611e7e576040526124d481612079565b83526124e260208201612079565b9261016093848701526124f760408301612079565b92610180938488015261250c60608401612079565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101e15760808601526101008082015163ffffffff811681036101e15761259d946125939160a08901526125876101209761257b898701612079565b60c08b01528501612079565b60e08901528301612079565b9086015201612079565b9082015290565b906020828203126101e157815167ffffffffffffffff81116101e157612229920161222c565b806125f457507f000000000000000000000000000000000000000000000000000000000000000090565b6001810361262157507f000000000000000000000000000000000000000000000000000000000000000090565b6002810361264e57507f000000000000000000000000000000000000000000000000000000000000000090565b6003810361267b57507f000000000000000000000000000000000000000000000000000000000000000090565b600481036126a857507f000000000000000000000000000000000000000000000000000000000000000090565b600581036126d557507f000000000000000000000000000000000000000000000000000000000000000090565b6006810361270257507f000000000000000000000000000000000000000000000000000000000000000090565b60070361272d577f000000000000000000000000000000000000000000000000000000000000000090565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361279457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128cf575b15612828577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e7e5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127ff565b7f000000000000000000000000000000000000000000000000000000000000000061292281611eed565b906129306040519283611eca565b80825261293c81611eed565b601f196020840191013682378251156120a7577f000000000000000000000000000000000000000000000000000000000000000090528151600110156120a7577f000000000000000000000000000000000000000000000000000000000000000060408301526002811115612b2c578151600210156120a7577f000000000000000000000000000000000000000000000000000000000000000060608301526003811115612b2c578151600310156120a7577f0000000000000000000000000000000000000000000000000000000000000000608083015260049081811115612b27578251821015612b14577f000000000000000000000000000000000000000000000000000000000000000060a08401526005811115612b2757825160051015612b14577f000000000000000000000000000000000000000000000000000000000000000060c08401526006811115612b2757825160061015612b14576007907f000000000000000000000000000000000000000000000000000000000000000060e085015211612acc575090565b815160071015612b0157507f000000000000000000000000000000000000000000000000000000000000000061010082015290565b603290634e487b7160e01b5f525260245ffd5b603282634e487b7160e01b5f525260245ffd5b505090565b5090565b9190820180921161239557565b90670429d069189e00009182810292818404149015171561239557565b906127109182810292818404149015171561239557565b8181029291811591840414171561239557565b8115612b8e570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612bb957505090565b671bc16d674ec800008103612bd45750508061222991612c4c565b673782dace9d9000008103612bf8575050612bf28161222992612c4c565b80612c4c565b612c02919261310b565b906001612c0e83612b5a565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116123955761222991612b30565b90612c5691612b71565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b60ff8114612ce15760ff811690601f8211612cb95760405191612caf83611eae565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612cf383612041565b80835292602090600190818116908115612d7c5750600114612d1e575b505061222992500382611eca565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612d6457506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612d49565b9050602093506122299592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612d10565b60ff8114612de15760ff811690601f8211612cb95760405191612caf83611eae565b506040515f81600191600154612df681612041565b8084529360209160018116908115612d7c5750600114612e1e57505061222992500382611eca565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612e6557506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612e4a565b670de0b6b3a764000091808303612e945750905090565b8290671bc16d674ec800008103612eb15750508061239191612b71565b673782dace9d9000008103612ed55750612ece8261239193612b71565b0480612b71565b9050612ee09161310b565b612ee981612b5a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848301040190151502906001820180831161239557811015612f30575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fb9579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561217a575f5173ffffffffffffffffffffffffffffffffffffffff811615612faf57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561202d5780612fd6575050565b60018103613006577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361303a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146130445750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156130bf57670de0b6b3a764000091828102928184041490151715612395576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612b8e576ec097ce7bc90715b34b9f10000000000590565b8115612b8e570590565b908015613a34578115613a2e578160ff1c613a0657770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156139de5781670c7d713b49da000012806139cd575b1561366a57670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906131a4908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613101565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580613657575b1561362f5781908212158061361c575b156135f4575f915f81126135e5575b506064906806f05b59d3b20000008112613582577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215613549575b6856bc75e2d63100000081121561350f575b682b5e3af16b188000008112156134d7575b6815af1d78b58c40000081121561349f575b680ad78ebc5ac6200000811215613468575b82811215613431575b6802b5e3af16b18800008112156133fa575b68015af1d78b58c400008112156133c3575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f1461222957612229906130e7565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590613344565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590613332565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613320565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613317565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613305565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906132f3565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906132e1565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016132cf565b6803782dace9d900000081126135d2577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132ba565b68056bc75e2d63100000826001926132ba565b600192505f039050606461325e565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561324f565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561323f565b81670de0b6b3a7640000925f918481126139b7575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561398c575b73011798004d755d3c8bc8e03204cf44619e00000082121561396b575b820290808302906e01855144814a7ff805980ff00840009081831215613948575b50506b02df0ab5a80a22c61ab5a70080821215613928575b50693f1fce3da636ea5cf85080821215613908575b50690127fa27722cc06cc5e2808212156138e8575b5068280e60114edb805d03808212156138c8575b50680ebc5fb41746121110808212156138b1575b506808f00f760a4b2db55d80821215613891575b506806f5f177578893793780821215613871575b506806248f33704b28660380821215613852575b506805c548670b9510e7ac80821215613833575b506137e068056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613101565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f1461382e575f035b02613213565b613828565b68056bc75e2d631000006756bc75e2d63100009202059101905f6137a4565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613790565b68056bc75e2d6310000068015af1d78b58c400009202059101905f61377c565b68056bc75e2d631000006802b5e3af16b18800009202059101905f613768565b68056bc75e2d63100000809202059101905f613754565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f613740565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61372c565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613717565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613702565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f806136ea565b906b1425982cf597cd205cef73806803782dace9d9000000910591016136c9565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b20000006136ac565b90506139c391506130e7565b600190606461367f565b50670f43fc2c04ee00008212613151565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212204b1676dd274814fed4fff49a83b5404b448d288d13e3f2848873c7c36baed2cf64736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPoolFactory.json b/v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPoolFactory.json new file mode 100644 index 00000000..7a46526a --- /dev/null +++ b/v3/tasks/20241205-v3-weighted-pool/artifact/WeightedPoolFactory.json @@ -0,0 +1,481 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WeightedPoolFactory", + "sourceName": "contracts/WeightedPoolFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + }, + { + "internalType": "uint32", + "name": "pauseWindowDuration", + "type": "uint32" + }, + { + "internalType": "string", + "name": "factoryVersion", + "type": "string" + }, + { + "internalType": "string", + "name": "poolVersion", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "Disabled", + "type": "error" + }, + { + "inputs": [], + "name": "IndexOutOfBounds", + "type": "error" + }, + { + "inputs": [], + "name": "PoolPauseWindowDurationOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "SenderNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "StandardPoolWithCreator", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "FactoryDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "components": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "enum TokenType", + "name": "tokenType", + "type": "uint8" + }, + { + "internalType": "contract IRateProvider", + "name": "rateProvider", + "type": "address" + }, + { + "internalType": "bool", + "name": "paysYieldFees", + "type": "bool" + } + ], + "internalType": "struct TokenConfig[]", + "name": "tokens", + "type": "tuple[]" + }, + { + "internalType": "uint256[]", + "name": "normalizedWeights", + "type": "uint256[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "pauseManager", + "type": "address" + }, + { + "internalType": "address", + "name": "swapFeeManager", + "type": "address" + }, + { + "internalType": "address", + "name": "poolCreator", + "type": "address" + } + ], + "internalType": "struct PoolRoleAccounts", + "name": "roleAccounts", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "swapFeePercentage", + "type": "uint256" + }, + { + "internalType": "address", + "name": "poolHooksContract", + "type": "address" + }, + { + "internalType": "bool", + "name": "enableDonation", + "type": "bool" + }, + { + "internalType": "bool", + "name": "disableUnbalancedLiquidity", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "disable", + "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": "getAuthorizer", + "outputs": [ + { + "internalType": "contract IAuthorizer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDefaultLiquidityManagement", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "disableUnbalancedLiquidity", + "type": "bool" + }, + { + "internalType": "bool", + "name": "enableAddLiquidityCustom", + "type": "bool" + }, + { + "internalType": "bool", + "name": "enableRemoveLiquidityCustom", + "type": "bool" + }, + { + "internalType": "bool", + "name": "enableDonation", + "type": "bool" + } + ], + "internalType": "struct LiquidityManagement", + "name": "liquidityManagement", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getDefaultPoolHooksContract", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "constructorArgs", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "getDeploymentAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNewPoolPauseWindowEndTime", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOriginalPauseWindowEndTime", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPauseWindowDuration", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPools", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "count", + "type": "uint256" + } + ], + "name": "getPoolsInRange", + "outputs": [ + { + "internalType": "address[]", + "name": "pools", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isDisabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "isPoolFromFactory", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x610100604052346104245761620d8038038061001a81610428565b9283398101608082820312610424578151916001600160a01b038316830361042457602092838201519363ffffffff808616958681036104245760408501516001600160401b039590868111610424578761007691830161044d565b9660608201518781116104245761008d920161044d565b966146c59461009d858701610428565b95808752611b48868801393060805260a052420190814211610410578282116104015760c0521660e05281519383851161035f576003946100de865461049e565b93601f948581116103d5575b5083908583116001146103735761011892915f9183610210575b50508160011b915f199060031b1c19161790565b85555b805184811161035f57600491610131835461049e565b858111610329575b5083908583116001146102c75761016692915f91836102105750508160011b915f199060031b1c19161790565b81555b85519384116102b45750600593610180855461049e565b838111610280575b508192841160011461021b57505081906101b793945f926102105750508160011b915f199060031b1c19161790565b90555b60405161165b90816104ed823960805181611495015260a051818181610478015281816105c8015281816106ed01528181610acd0152611523015260c05181610b5d015260e051818181610a0001526115930152f35b015190505f80610104565b9091601f19841695855f52835f20935f905b88821061026857505084600196971061024f575b50505050811b0190556101ba565b01519060f8845f19921b161c191690555f808080610241565b8060018597829496860151815501960193019061022d565b6102a590865f52835f2085808801891c8201928689106102ab575b01881c01906104d6565b5f610188565b9250819261029b565b604190634e487b7160e01b5f525260245ffd5b90601f19831691845f52855f20925f5b878282106103135750509084600195949392106102fc575b505050811b018155610169565b01515f19838a1b60f8161c191690555f80806102ef565b60018596829396860151815501950193016102d7565b61035090845f52855f208780860160051c820192888710610356575b0160051c01906104d6565b5f610139565b92508192610345565b634e487b7160e01b5f52604160045260245ffd5b90601f19831691885f52855f20925f5b878282106103bf5750509084600195949392106103a8575b505050811b01855561011b565b01515f19838a1b60f8161c191690555f808061039b565b6001859682939686015181550195019301610383565b6103fb90885f52855f208780860160051c820192888710610356570160051c01906104d6565b5f6100ea565b6368755a1160e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761035f57604052565b81601f82011215610424578051906001600160401b03821161035f5761047c601f8301601f1916602001610428565b928284526020838301011161042457815f9260208093018386015e8301015290565b90600182811c921680156104cc575b60208310146104b857565b634e487b7160e01b5f52602260045260245ffd5b91607f16916104ad565b8181106104e1575050565b5f81556001016104d656fe60806040526004361015610011575f80fd5b5f358060e01c908163193ad50f1461117a5781632f2770db1461102d575080633f819b6f14610f8457806344f6fec714610eca57806353a72f7e14610d6c57806354fd4d5014610c8e5780636634b75314610c42578063673a2a1f14610ba35780636c57f5a914610b8157806378da80cb14610b41578063851c1bb314610af15780638d928af814610aa15780638eec5d7014610a84578063aaabadc514610a4c578063db035ebc14610a24578063e9d56e19146109e4578063ec888061146109ca5763fed4cdda146100e2575f80fd5b34610823576101806003193601126108235760043567ffffffffffffffff8111610823576101149036906004016112c4565b60243567ffffffffffffffff8111610823576101349036906004016112c4565b906044359167ffffffffffffffff8311610823573660238401121561082357826004013590610162826112e2565b93610170604051958661120a565b82855260208501906024829460071b8201019036821161082357602401915b818310610946575050506064359067ffffffffffffffff82116108235736602383011215610823578160040135916101c6836112e2565b926101d4604051948561120a565b8084526024602085019160051b8301019136831161082357602401905b8282106109365750505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261082357604051936060850185811067ffffffffffffffff82111761073f5760405260843573ffffffffffffffffffffffffffffffffffffffff8116810361082357855260a43573ffffffffffffffffffffffffffffffffffffffff8116810361082357602086015260c4359273ffffffffffffffffffffffffffffffffffffffff841693848103610823576040870152610104359273ffffffffffffffffffffffffffffffffffffffff84168403610823576101243594851515860361082357610144359081151582036108235761090e576102fc6112fa565b951515606087015215158552875190604051938460a081011067ffffffffffffffff60a08701111761073f5760a0850160405284526020840152604083015260608201526040515f81600554916103528361131e565b80835292600181169081156108ef5750600114610890575b6103769250038261120a565b60808201526040518091604060208301526103d56103a1825160a060608601526101008501906111c9565b60208301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526111c9565b90604081015160a08401526060810151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08482030160c0850152602080845192838152019301905f5b818110610877575050509060806104619201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08483030160e08501526111c9565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604083015203906104b1601f199283810183528261120a565b6104e160405192836020808201946104c88661136f565b90805192839101825e015f81520390810184528361120a565b6104ed610164356115fc565b9082511561084f5773ffffffffffffffffffffffffffffffffffffffff9251905ff5169384156108275761051f6115c8565b845f525f60205260405f20600160ff198254161790556001546801000000000000000081101561073f578060016105599201600155611408565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff88831b921b191617905560405195857f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc5f80a26105b0611591565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561082357908794959392917feeec802f0000000000000000000000000000000000000000000000000000000086526101a48601908860048801526101a06024880152518091526101c4860194905f5b818110610777575050509473ffffffffffffffffffffffffffffffffffffffff8594938160406106d39563ffffffff5f9b60e43560448c01521660648a01528a60848a01528281511660a48a01528260208201511660c48a015201511660e4870152166101048501526101248401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561076c57610725575b602090604051908152f35b67ffffffffffffffff821161073f5760209160405261071a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b91809897509590929394955173ffffffffffffffffffffffffffffffffffffffff815116825260208101519060028210156107f65782606060809260209485600197015273ffffffffffffffffffffffffffffffffffffffff604082015116604084015201511515606082015201980191019189969795949392610639565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b825185528695506020948501949092019160010161041f565b509060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b8183106108d35750509060206103769282010161036a565b60209193508060019154838588010152019101909183926108bb565b6020925061037694915060ff191682840152151560051b82010161036a565b7f61ee1764000000000000000000000000000000000000000000000000000000005f5260045ffd5b81358152602091820191016101f1565b608083360312610823576040519061095d826111ee565b73ffffffffffffffffffffffffffffffffffffffff843581811681036108235783526020850135600281101561082357602084015260408501359081168103610823576040830152606090818501359283151584036108235760809360209382015281520192019161018f565b34610823575f6003193601126108235760206040515f8152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f600319360112610823576020610a3e611591565b63ffffffff60405191168152f35b34610823575f600319360112610823576020610a666114e0565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576020600154604051908152f35b34610823575f60031936011261082357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823576020600319360112610823576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361082357610b3960209161146a565b604051908152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f60031936011261082357602060ff600254166040519015158152f35b34610823575f60031936011261082357604051806001916001549283825260208092019360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b828210610c1757610c1386610c07818a038261120a565b60405191829182611273565b0390f35b845473ffffffffffffffffffffffffffffffffffffffff168752958601959383019390830190610bf0565b346108235760206003193601126108235760043573ffffffffffffffffffffffffffffffffffffffff8116809103610823575f525f602052602060ff60405f2054166040519015158152f35b34610823575f600319360112610823576040516004545f82610caf8361131e565b91828252602093600190856001821691825f14610d4c575050600114610cf1575b50610cdd9250038361120a565b610c136040519282849384528301906111c9565b84915060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b905f915b858310610d34575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610d1d565b60ff191685820152610cdd95151560051b8501019250879150610cd09050565b34610823576040600319360112610823576004356024803560019260015480821015610ea25780610d9d84846113fb565b11610e61575b50610dad826112e2565b92610dbb604051948561120a565b828452610dc7836112e2565b91601f19602093013660208701375f5b848110610dec5760405180610c138882611273565b610dfe610df982846113fb565b611408565b9054908751831015610e355760031b1c73ffffffffffffffffffffffffffffffffffffffff16600582901b87018501528601610dd7565b847f4e487b71000000000000000000000000000000000000000000000000000000005f5260326004525ffd5b908092508103908111610e75579084610da3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e23d035000000000000000000000000000000000000000000000000000000005f5260045ffd5b346108235760406003193601126108235760043567ffffffffffffffff81116108235736602382011215610823576055600b610f12602093369060248160040135910161122d565b604051610f42818680820194610f278661136f565b90805192839101825e015f815203601f19810183528261120a565b519020610f506024356115fc565b604051916040830152848201523081520160ff81532073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576040516005545f82610fa58361131e565b91828252602093600190856001821691825f14610d4c575050600114610fd25750610cdd9250038361120a565b84915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b858310611015575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610ffe565b34610823575f600319360112610823577fffffffff00000000000000000000000000000000000000000000000000000000611068911661146a565b602073ffffffffffffffffffffffffffffffffffffffff6110876114e0565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa90811561076c575f9161113f575b5015611117576110e46115c8565b600160ff1960025416176002557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d505f80a1005b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506020813d602011611172575b8161115a6020938361120a565b810103126108235751801515810361082357816110d6565b3d915061114d565b34610823575f6003193601126108235760806111946112fa565b6111c760405180926060809180511515845260208101511515602085015260408101511515604085015201511515910152565bf35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6080810190811067ffffffffffffffff82111761073f57604052565b90601f601f19910116810190811067ffffffffffffffff82111761073f57604052565b92919267ffffffffffffffff821161073f57604051916112576020601f19601f840116018461120a565b829481845281830111610823578281602093845f960137010152565b60209060206040818301928281528551809452019301915f5b82811061129a575050505090565b835173ffffffffffffffffffffffffffffffffffffffff168552938101939281019260010161128c565b9080601f83011215610823578160206112df9335910161122d565b90565b67ffffffffffffffff811161073f5760051b60200190565b60405190611307826111ee565b5f6060838281528260208201528260408201520152565b90600182811c92168015611365575b602083101461133857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161132d565b6003545f929161137e8261131e565b916001908181169081156113e8575060011461139957505050565b909192935060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f915b8483106113d5575050500190565b81816020925485870152019201916113c7565b60ff191683525050811515909102019150565b91908201809211610e7557565b60015481101561143d5760015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526060810181811067ffffffffffffffff82111761073f5760405251902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa91821561076c575f9261155857505090565b9091506020813d602011611589575b816115746020938361120a565b81010312610823575190811681036108235790565b3d9150611567565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81164210156115c35790565b505f90565b60ff600254166115d457565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b604051602081019133835246604083015260608201526060815261161f816111ee565b5190209056fea2646970667358221220f40127d232f8d908273c324b8db4ec8d0aa7dbff87a7e5627774e299dc68f47664736f6c634300081a00336102c08060405234610907576146c5803803809161001d828561091b565b833981016040828203126109075781516001600160401b0381116109075782019160a083830312610907576040519160a083016001600160401b038111848210176107105760405283516001600160401b038111610907578161008191860161093e565b835260208401516001600160401b03811161090757816100a291860161093e565b602084019081526040808601519085015260608501519094906001600160401b03811161090757810182601f82011215610907578051906001600160401b038211610710578160051b604051926100fc602083018561091b565b83526020808401918301019185831161090757602001905b82821061090b5750505060608501526080810151916001600160401b03831161090757602092610144920161093e565b608084018190529101516001600160a01b03811681036109075782519351604080519195919081016001600160401b03811182821017610710576040526001815260208101603160f81b815261019983610993565b610120526101a682610b16565b6101405282516020840120918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b03821117610710576040525190206080523060c0526101608290528051906001600160401b0382116107105760035490600182811c921680156108fd575b60208310146106f25781601f849311610892575b50602090601f831160011461080a575f926107ff575b50508160011b915f199060031b1c1916176003555b83516001600160401b03811161071057600454600181811c911680156107f5575b60208210146106f257601f8111610796575b506020601f821160011461072f5781929394955f92610724575b50508160011b915f199060031b1c1916176004555b610180528051906001600160401b0382116107105760055490600182811c92168015610706575b60208310146106f25781601f8493116106a4575b50602090601f831160011461061c575f92610611575b50508160011b915f199060031b1c1916176005555b60408101516101a09080825260608301515103610602575f905f5b81519260ff821693841015610494576060850151805185101561048057602090611fe08460051b1601015190662386f26fc100008210610471578181018091116103d95793806103ed57506101c0525b60ff8091169081146103d957600101610375565b634e487b7160e01b5f52601160045260245ffd5b600181036103ff57506101e0526103c5565b600281036104115750610200526103c5565b600381036104235750610220526103c5565b600481036104355750610240526103c5565b600581036104475750610260526103c5565b600681036104595750610280526103c5565b600714610467575b506103c5565b6102a0525f610461565b63bd39358360e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b670de0b6b3a76400009150036105f357604051613a789182610c4d833960805182612806015260a051826128d2015260c051826127d7015260e051826128550152610100518261287b0152610120518261112801526101405182611152015261016051828181610260015281816104880152818161065f01528181610d7e015281816110ed015281816114ae01528181611733015281816119d801528181612118015261276c01526101805182818161059d0152818161094a01528181610a1201528181610c7a0152611277015251816128fa01526101c0518181816125d2015261295101526101e0518181816125ff015261297e01526102005181818161262c01526129b701526102205181818161265901526129f00152610240518181816126860152612a2a0152610260518181816126b30152612a630152610280518181816126e00152612a9f01526102a05181818161270b0152612ad90152f35b631ce788a760e11b5f5260045ffd5b63aaad13f760e01b5f5260045ffd5b015190505f80610345565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091905b601f1984168510610689576001945083601f19811610610671575b505050811b0160055561035a565b01515f1960f88460031b161c191690555f8080610663565b81810151835560209485019460019093019290910190610648565b90915060055f5260205f20601f840160051c8101602085106106eb575b90849392915b601f830160051c820181106106dd57505061032f565b5f81558594506001016106c7565b50806106c1565b634e487b7160e01b5f52602260045260245ffd5b91607f169161031b565b634e487b7160e01b5f52604160045260245ffd5b015190505f806102df565b60045f5260205f20905f5b601f198416811061077e575060019394959683601f19811610610766575b505050811b016004556102f4565b01515f1960f88460031b161c191690555f8080610758565b9091602060018192858b01518155019301910161073a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101602084106107ee575b601f830160051c820181106107e35750506102c5565b5f81556001016107cd565b50806107cd565b90607f16906102b3565b015190505f8061027d565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510610877576001945083601f1981161061085f575b505050811b01600355610292565b01515f1960f88460031b161c191690555f8080610851565b81810151835560209485019460019093019290910190610836565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101602085106108f6575b90849392915b601f830160051c820181106108e8575050610267565b5f81558594506001016108d2565b50806108cc565b91607f1691610253565b5f80fd5b8151815260209182019101610114565b601f909101601f19168101906001600160401b0382119082101761071057604052565b81601f82011215610907578051906001600160401b0382116107105760405192610972601f8401601f19166020018561091b565b8284526020838301011161090757815f9260208093018386015e8301015290565b805160209081811015610a095750601f8251116109cb57808251920151908083106109bd57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610710575f54926001938481811c91168015610b0c575b838210146106f257601f8111610ad9575b5081601f8411600114610a7757509282939183925f94610a6c575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610a57565b919083601f1981165f8052845f20945f905b88838310610abf5750505010610aa7575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610a9a565b858701518855909601959485019487935090810190610a89565b5f805284601f845f20920160051c820191601f860160051c015b828110610b01575050610a3c565b5f8155018590610af3565b90607f1690610a2b565b805160209081811015610b405750601f8251116109cb57808251920151908083106109bd57501790565b9192916001600160401b0381116107105760019182548381811c91168015610c42575b828210146106f257601f8111610c0f575b5080601f8311600114610baf5750819293945f92610ba4575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610b8d565b90601f19831695845f52825f20925f905b888210610bf85750508385969710610be0575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f8080610bd3565b808785968294968601518155019501930190610bc0565b835f5283601f835f20920160051c820191601f850160051c015b828110610c37575050610b74565b5f8155018490610c29565b90607f1690610b6356fe6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611d905750826306fdde0314611ce1578263095ea7b314611c6357826316a0b3e014611a2a57826318160ddd14611a0e57826323b872dd1461196657826323de665114611934578263273c1adf1461191257826330adf81f146118d8578263313ce567146118bd5782633644e515146118a157826353b79bd7146116e557826354fd4d50146115f55782635687f2b814611596578263627cdcb91461156d578263654cf15d1461154b578263679aefce1461151457826370a082311461144057826372c981861461131f5782637ecebe00146112db57826381fa807c1461121a57826384b0196e146111115782638d928af8146110c157826395d89b4114610fbb578263984de9e814610df9578263a9059cbb14610ce6578263aa6ca80814610c21578263abb1dc44146109b8578263b156aa0a146108f1578263b677fa56146108cf578263c0bc6f33146105f6578263ce20ece7146105d6578263d335b0cf14610543578263d505accf146102d857508163dd62ed3e146101e5575063f89f27ed146101ae575f80fd5b346101e1575f6003193601126101e1576101dd906101ca6128f8565b9051918291602083526020830190611fa7565b0390f35b5f80fd5b82346101e157806003193601126101e1576020610200611e1c565b606461020a611e3f565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a575b6020925051908152f35b90506020823d6020116102c7575b816102b560209383611eca565b810103126101e1576020915190610290565b3d91506102a8565b513d5f823e3d90fd5b8390346101e1576003193601126101e1576102f1611e1c565b906102fa611e3f565b604435926084359060643560ff831683036101e157804211610519576103478273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9061041361040a875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103be81611e92565b5190206103c96127c0565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f35565b90929192612fc4565b168181036104ec5750505f84959661048460209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102cf57506104b857005b6020813d6020116104e4575b816104d160209383611eca565b810103126101e1576104e290612079565b005b3d91506104c4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101e1575f6003193601126101e1578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a576020925051908152f35b83346101e1575f6003193601126101e157602090516509184e72a0008152f35b9150346101e1575f6003193601126101e157825161061381611e92565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f916108ad575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f91610889575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa90811561087f575f91610852575b5089526107516120cf565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561084857928b9c926107e0926107f396955f9e9c9d9e9261081b575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190611fa7565b915190601f198b840301908b0152611fa7565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b61083a9250803d10610841575b6108328183611eca565b810190612482565b5f806107aa565b503d610828565b8c513d5f823e3d90fd5b90508a81813d8311610878575b6108698183611eca565b810103126101e157515f610746565b503d61085f565b8d513d5f823e3d90fd5b6108a591503d805f833e61089d8183611eca565b81019061228d565b90505f610703565b6108c991503d805f833e6108c18183611eca565b8101906125a4565b5f6106c0565b83346101e1575f6003193601126101e157602090516709b6e64a8ec600008152f35b8382346101e1575f6003193601126101e1578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610992575b5051918291602083526020830190611fa7565b6109a79192503d805f833e6108c18183611eca565b908361097f565b82513d5f823e3d90fd5b8382346101e1575f6003193601126101e15773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f935f925f925f95610aed575b5090610a6595949392918151968796608088526080880190611fda565b6020878203818901528080875193848152019601925f905b838210610aa957898803868b015289806101dd8b610a9b8c8c611fa7565b908382036060850152611fa7565b9184989950606086979860019395978397518051610ac681612023565b83528685820151168584015201511515898201520198019201899897969594929391610a7d565b955093509150503d805f853e610b038185611eca565b8301926080818503126101e15780519167ffffffffffffffff928381116101e15785610b30918401612185565b91602095868201518581116101e157820181601f820112156101e157805190610b5882611eed565b98610b6586519a8b611eca565b828a52808a01816060809502840101928584116101e1578201905b838210610bc5575050505050828201518581116101e15781610ba391840161222c565b9460608301519081116101e157610bba920161222c565b919492919386610a48565b84828703126101e157875190610bda82611e62565b825160028110156101e157825283830151908c821682036101e1578285928389950152610c088b8601612079565b8b820152815201910190610b80565b83513d5f823e3d90fd5b8382346101e1575f6003193601126101e1578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610cc2575b5051918291602083526020830190611fda565b610cdf9192503d805f833e610cd78183611eca565b810190612203565b9083610caf565b5082346101e157806003193601126101e1576020610d6492610d06611e1c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5575b6020905160018152f35b6020823d602011610de7575b81610dce60209383611eca565b810103126101e157610de1602092612079565b50610dab565b3d9150610dc1565b50513d5f823e3d90fd5b5082346101e157806003193601126101e157813567ffffffffffffffff81116101e157610e299036908401611f05565b60243560028110156101e157610e3e81612023565b610fb457825b610e4c6128f8565b9080600314610f5f5780600414610ed85780600114610e9557600214610e7f57605184634e487b7160e01b5f525260245ffd5b6020935090610e8d9161306f565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610ec55750602092610ebf91612b84565b90610e8f565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357610f1b600191610f15610f0387876120bb565b51610f0e888b6120bb565b5190612ba2565b90612c4c565b930192610ee7565b92509350508015610f38576020925090610e8f565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357670de0b6b3a7640000610fab600192610fa5610f9388886120bb565b51610f9e898c6120bb565b5190612e7d565b90612b71565b04930192610f6e565b6003610e44565b8382346101e1575f6003193601126101e157815191825f8354610fdd81612041565b90818452602095600191876001821691825f1461107c575050600114611020575b5050506101dd9291611011910385611eca565b51928284938452830190611df7565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061106457505050820101816110116101dd610ffe565b8054848a01860152889550879490930192810161104b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061101191506101dd9050610ffe565b83346101e1575f6003193601126101e1576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101e1575f6003193601126101e15761114c7f0000000000000000000000000000000000000000000000000000000000000000612c8d565b926111767f0000000000000000000000000000000000000000000000000000000000000000612dbf565b815192602084019084821067ffffffffffffffff8311176112075750916111e7916101dd949382525f84526111da82519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611df7565b9186830390870152611df7565b904660608501523060808501525f60a085015283820360c0850152611fa7565b604190634e487b7160e01b5f525260245ffd5b8382346101e1575f6003193601126101e1578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f926112be575b505060608282015191015182519182526020820152f35b6112d49250803d10610841576108328183611eca565b82806112a7565b83346101e15760206003193601126101e15760209073ffffffffffffffffffffffffffffffffffffffff61130d611e1c565b165f5260028252805f20549051908152f35b8382346101e15760209260031984813601126101e15782359167ffffffffffffffff918284116101e15783360301126101e15783519161135e83611e92565b8084013560028110156101e157835260248101358684015260448101358281116101e15761139190853691840101611f05565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101e15760a084015260c4810135908282116101e1570192366023850112156101e15780840135918211611207575083519061140c86601f19601f8401160183611eca565b80825236602482860101116101e15785815f926024610e8d9701838601378301015260c082015261143b612755565b6122d1565b8382346101e157602091826003193601126101e1578261145e611e1c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610def575f926114e5575b5051908152f35b9091508281813d831161150d575b6114fd8183611eca565b810103126101e1575190836114de565b503d6114f3565b50346101e1575f6003193601126101e1577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101e1575f6003193601126101e1576020905167016345785d8a00008152f35b346101e1575f6003193601126101e157335f908152600260205260409020805460018101909155005b83346101e15760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115c836611f65565b9391946115d3612755565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101e1575f6003193601126101e15780516005549091825f61161884612041565b808352602094600190866001821691825f146116a557505060011461164a575b50506101dd9291611011910385611eca565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b82841061168d5750505082010181611011611638565b8054848a018601528895508794909301928101611677565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506110119050611638565b5082346101e1575f6003193601126101e15780519061170382611e62565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561189757905f9291839161187d575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611873575f9161185a575b5081959295526117e96128f8565b84528251948086526080860192519260608288015283518091528160a088019401915f5b8281106118445788806101dd8a8a6118338b8b51601f1993848884030190880152611fa7565b915190848303016060850152611fa7565b83518a168652948101949281019260010161180d565b61186e91503d805f833e61089d8183611eca565b6117db565b84513d5f823e3d90fd5b61189191503d8085833e610cd78183611eca565b8a611798565b86513d5f823e3d90fd5b83346101e1575f6003193601126101e157602090610e8d6127c0565b83346101e1575f6003193601126101e1576020905160128152f35b83346101e1575f6003193601126101e157602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101e1575f6003193601126101e157602090516729a2241af62c00008152f35b83346101e15760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115c836611f65565b5082346101e15760205f608461197b36611f65565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5576020905160018152f35b83346101e1575f6003193601126101e157602090610e8d6120cf565b8382346101e15760606003193601126101e157803567ffffffffffffffff81116101e157611a5b9036908301611f05565b9160243592611a77611a7085604435936120bb565b51946125ca565b60019081831115611c5d5760025b80600314611be75780600414611b4e5780600114611b0c57600214611ab757605185634e487b7160e01b5f525260245ffd5b909192938115611ae65750610e8d9260209592610f15926ec097ce7bc90715b34b9f0fffffffff040190612ba2565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611b3b575092610f15610e8d926020956ec097ce7bc90715b34b9f10000000000490612ba2565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611ba7575b5050508115611b81575092610f15610e8d9260209590612ba2565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611be1579082611bd98193610f15611bcf89866120bb565b51610f0e8a612086565b950192611b61565b93611b66565b509192939080670de0b6b3a7640000935f925b611c19575050508115611b81575092610f15610e8d9260209590612ba2565b909193670de0b6b3a764000051851015611be1579082670de0b6b3a7640000611c548294610fa5611c4a8a876120bb565b51610f9e8b612086565b04950192611bfa565b81611a85565b5082346101e157806003193601126101e1576020610d6492611c83611e1c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101e1575f6003193601126101e15780516003549091825f611d0484612041565b808352602094600190866001821691825f146116a5575050600114611d355750506101dd9291611011910385611eca565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611d785750505082010181611011611638565b8054848a018601528895508794909301928101611d62565b82346101e15760206003193601126101e15735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101e1577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6060810190811067ffffffffffffffff821117611e7e57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff821117611e7e57604052565b6040810190811067ffffffffffffffff821117611e7e57604052565b90601f601f19910116810190811067ffffffffffffffff821117611e7e57604052565b67ffffffffffffffff8111611e7e5760051b60200190565b9080601f830112156101e1576020908235611f1f81611eed565b93611f2d6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b828210611f56575050505090565b81358152908301908301611f48565b60031960609101126101e15773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101e1579160243590811681036101e1579060443590565b9081518082526020808093019301915f5b828110611fc6575050505090565b835185529381019392810192600101611fb8565b9081518082526020808093019301915f5b828110611ff9575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611feb565b6002111561202d57565b634e487b7160e01b5f52602160045260245ffd5b90600182811c9216801561206f575b602083101461205b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612050565b519081151582036101e157565b670de0b6b3a7640000518110156120a75760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120a75760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561217a575f9161214b575090565b90506020813d602011612172575b8161216660209383611eca565b810103126101e1575190565b3d9150612159565b6040513d5f823e3d90fd5b9080601f830112156101e1578151906020916121a081611eed565b936121ae6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b8282106121d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101e15781529083019083016121c9565b906020828203126101e157815167ffffffffffffffff81116101e1576122299201612185565b90565b9080601f830112156101e15781519060209161224781611eed565b936122556040519586611eca565b81855260208086019260051b8201019283116101e157602001905b82821061227e575050505090565b81518152908301908301612270565b9190916040818403126101e15780519267ffffffffffffffff938481116101e157816122ba91840161222c565b9360208301519081116101e157612229920161222c565b604081019081516122e860608301918251906120bb565b519251916122fc60808201938451906120bb565b5191815161230981612023565b61231281612023565b6123d15761232c612325602092516125ca565b94516125ca565b910151670de0b6b3a7640000948561234382612b3d565b0482116123a95761235761235d9282612b30565b9061306f565b848402938085048614901517156123955761237e6123849261239195612b84565b90612ba2565b8381810391100290612b71565b0490565b634e487b7160e01b5f52601160045260245ffd5b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6123eb6123e460209295939495516125ca565b92516125ca565b920151670de0b6b3a764000061240085612b3d565b04811161245a578303908382116123955761242161237e926124279561306f565b9261306f565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123955761222991612c4c565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101e15760405192610140928385019267ffffffffffffffff9086851082861117611e7e576080136101e1576101c0860190811184821017611e7e576040526124d481612079565b83526124e260208201612079565b9261016093848701526124f760408301612079565b92610180938488015261250c60608401612079565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101e15760808601526101008082015163ffffffff811681036101e15761259d946125939160a08901526125876101209761257b898701612079565b60c08b01528501612079565b60e08901528301612079565b9086015201612079565b9082015290565b906020828203126101e157815167ffffffffffffffff81116101e157612229920161222c565b806125f457507f000000000000000000000000000000000000000000000000000000000000000090565b6001810361262157507f000000000000000000000000000000000000000000000000000000000000000090565b6002810361264e57507f000000000000000000000000000000000000000000000000000000000000000090565b6003810361267b57507f000000000000000000000000000000000000000000000000000000000000000090565b600481036126a857507f000000000000000000000000000000000000000000000000000000000000000090565b600581036126d557507f000000000000000000000000000000000000000000000000000000000000000090565b6006810361270257507f000000000000000000000000000000000000000000000000000000000000000090565b60070361272d577f000000000000000000000000000000000000000000000000000000000000000090565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361279457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128cf575b15612828577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e7e5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127ff565b7f000000000000000000000000000000000000000000000000000000000000000061292281611eed565b906129306040519283611eca565b80825261293c81611eed565b601f196020840191013682378251156120a7577f000000000000000000000000000000000000000000000000000000000000000090528151600110156120a7577f000000000000000000000000000000000000000000000000000000000000000060408301526002811115612b2c578151600210156120a7577f000000000000000000000000000000000000000000000000000000000000000060608301526003811115612b2c578151600310156120a7577f0000000000000000000000000000000000000000000000000000000000000000608083015260049081811115612b27578251821015612b14577f000000000000000000000000000000000000000000000000000000000000000060a08401526005811115612b2757825160051015612b14577f000000000000000000000000000000000000000000000000000000000000000060c08401526006811115612b2757825160061015612b14576007907f000000000000000000000000000000000000000000000000000000000000000060e085015211612acc575090565b815160071015612b0157507f000000000000000000000000000000000000000000000000000000000000000061010082015290565b603290634e487b7160e01b5f525260245ffd5b603282634e487b7160e01b5f525260245ffd5b505090565b5090565b9190820180921161239557565b90670429d069189e00009182810292818404149015171561239557565b906127109182810292818404149015171561239557565b8181029291811591840414171561239557565b8115612b8e570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612bb957505090565b671bc16d674ec800008103612bd45750508061222991612c4c565b673782dace9d9000008103612bf8575050612bf28161222992612c4c565b80612c4c565b612c02919261310b565b906001612c0e83612b5a565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116123955761222991612b30565b90612c5691612b71565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b60ff8114612ce15760ff811690601f8211612cb95760405191612caf83611eae565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612cf383612041565b80835292602090600190818116908115612d7c5750600114612d1e575b505061222992500382611eca565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612d6457506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612d49565b9050602093506122299592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612d10565b60ff8114612de15760ff811690601f8211612cb95760405191612caf83611eae565b506040515f81600191600154612df681612041565b8084529360209160018116908115612d7c5750600114612e1e57505061222992500382611eca565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612e6557506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612e4a565b670de0b6b3a764000091808303612e945750905090565b8290671bc16d674ec800008103612eb15750508061239191612b71565b673782dace9d9000008103612ed55750612ece8261239193612b71565b0480612b71565b9050612ee09161310b565b612ee981612b5a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848301040190151502906001820180831161239557811015612f30575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fb9579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561217a575f5173ffffffffffffffffffffffffffffffffffffffff811615612faf57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561202d5780612fd6575050565b60018103613006577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361303a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146130445750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156130bf57670de0b6b3a764000091828102928184041490151715612395576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612b8e576ec097ce7bc90715b34b9f10000000000590565b8115612b8e570590565b908015613a34578115613a2e578160ff1c613a0657770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156139de5781670c7d713b49da000012806139cd575b1561366a57670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906131a4908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613101565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580613657575b1561362f5781908212158061361c575b156135f4575f915f81126135e5575b506064906806f05b59d3b20000008112613582577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215613549575b6856bc75e2d63100000081121561350f575b682b5e3af16b188000008112156134d7575b6815af1d78b58c40000081121561349f575b680ad78ebc5ac6200000811215613468575b82811215613431575b6802b5e3af16b18800008112156133fa575b68015af1d78b58c400008112156133c3575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f1461222957612229906130e7565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590613344565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590613332565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613320565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613317565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613305565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906132f3565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906132e1565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016132cf565b6803782dace9d900000081126135d2577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132ba565b68056bc75e2d63100000826001926132ba565b600192505f039050606461325e565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561324f565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561323f565b81670de0b6b3a7640000925f918481126139b7575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561398c575b73011798004d755d3c8bc8e03204cf44619e00000082121561396b575b820290808302906e01855144814a7ff805980ff00840009081831215613948575b50506b02df0ab5a80a22c61ab5a70080821215613928575b50693f1fce3da636ea5cf85080821215613908575b50690127fa27722cc06cc5e2808212156138e8575b5068280e60114edb805d03808212156138c8575b50680ebc5fb41746121110808212156138b1575b506808f00f760a4b2db55d80821215613891575b506806f5f177578893793780821215613871575b506806248f33704b28660380821215613852575b506805c548670b9510e7ac80821215613833575b506137e068056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613101565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f1461382e575f035b02613213565b613828565b68056bc75e2d631000006756bc75e2d63100009202059101905f6137a4565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613790565b68056bc75e2d6310000068015af1d78b58c400009202059101905f61377c565b68056bc75e2d631000006802b5e3af16b18800009202059101905f613768565b68056bc75e2d63100000809202059101905f613754565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f613740565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61372c565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613717565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613702565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f806136ea565b906b1425982cf597cd205cef73806803782dace9d9000000910591016136c9565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b20000006136ac565b90506139c391506130e7565b600190606461367f565b50670f43fc2c04ee00008212613151565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212204b1676dd274814fed4fff49a83b5404b448d288d13e3f2848873c7c36baed2cf64736f6c634300081a0033", + "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f358060e01c908163193ad50f1461117a5781632f2770db1461102d575080633f819b6f14610f8457806344f6fec714610eca57806353a72f7e14610d6c57806354fd4d5014610c8e5780636634b75314610c42578063673a2a1f14610ba35780636c57f5a914610b8157806378da80cb14610b41578063851c1bb314610af15780638d928af814610aa15780638eec5d7014610a84578063aaabadc514610a4c578063db035ebc14610a24578063e9d56e19146109e4578063ec888061146109ca5763fed4cdda146100e2575f80fd5b34610823576101806003193601126108235760043567ffffffffffffffff8111610823576101149036906004016112c4565b60243567ffffffffffffffff8111610823576101349036906004016112c4565b906044359167ffffffffffffffff8311610823573660238401121561082357826004013590610162826112e2565b93610170604051958661120a565b82855260208501906024829460071b8201019036821161082357602401915b818310610946575050506064359067ffffffffffffffff82116108235736602383011215610823578160040135916101c6836112e2565b926101d4604051948561120a565b8084526024602085019160051b8301019136831161082357602401905b8282106109365750505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261082357604051936060850185811067ffffffffffffffff82111761073f5760405260843573ffffffffffffffffffffffffffffffffffffffff8116810361082357855260a43573ffffffffffffffffffffffffffffffffffffffff8116810361082357602086015260c4359273ffffffffffffffffffffffffffffffffffffffff841693848103610823576040870152610104359273ffffffffffffffffffffffffffffffffffffffff84168403610823576101243594851515860361082357610144359081151582036108235761090e576102fc6112fa565b951515606087015215158552875190604051938460a081011067ffffffffffffffff60a08701111761073f5760a0850160405284526020840152604083015260608201526040515f81600554916103528361131e565b80835292600181169081156108ef5750600114610890575b6103769250038261120a565b60808201526040518091604060208301526103d56103a1825160a060608601526101008501906111c9565b60208301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526111c9565b90604081015160a08401526060810151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08482030160c0850152602080845192838152019301905f5b818110610877575050509060806104619201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08483030160e08501526111c9565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604083015203906104b1601f199283810183528261120a565b6104e160405192836020808201946104c88661136f565b90805192839101825e015f81520390810184528361120a565b6104ed610164356115fc565b9082511561084f5773ffffffffffffffffffffffffffffffffffffffff9251905ff5169384156108275761051f6115c8565b845f525f60205260405f20600160ff198254161790556001546801000000000000000081101561073f578060016105599201600155611408565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff88831b921b191617905560405195857f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc5f80a26105b0611591565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561082357908794959392917feeec802f0000000000000000000000000000000000000000000000000000000086526101a48601908860048801526101a06024880152518091526101c4860194905f5b818110610777575050509473ffffffffffffffffffffffffffffffffffffffff8594938160406106d39563ffffffff5f9b60e43560448c01521660648a01528a60848a01528281511660a48a01528260208201511660c48a015201511660e4870152166101048501526101248401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561076c57610725575b602090604051908152f35b67ffffffffffffffff821161073f5760209160405261071a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b91809897509590929394955173ffffffffffffffffffffffffffffffffffffffff815116825260208101519060028210156107f65782606060809260209485600197015273ffffffffffffffffffffffffffffffffffffffff604082015116604084015201511515606082015201980191019189969795949392610639565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b825185528695506020948501949092019160010161041f565b509060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b8183106108d35750509060206103769282010161036a565b60209193508060019154838588010152019101909183926108bb565b6020925061037694915060ff191682840152151560051b82010161036a565b7f61ee1764000000000000000000000000000000000000000000000000000000005f5260045ffd5b81358152602091820191016101f1565b608083360312610823576040519061095d826111ee565b73ffffffffffffffffffffffffffffffffffffffff843581811681036108235783526020850135600281101561082357602084015260408501359081168103610823576040830152606090818501359283151584036108235760809360209382015281520192019161018f565b34610823575f6003193601126108235760206040515f8152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f600319360112610823576020610a3e611591565b63ffffffff60405191168152f35b34610823575f600319360112610823576020610a666114e0565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576020600154604051908152f35b34610823575f60031936011261082357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823576020600319360112610823576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361082357610b3960209161146a565b604051908152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f60031936011261082357602060ff600254166040519015158152f35b34610823575f60031936011261082357604051806001916001549283825260208092019360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b828210610c1757610c1386610c07818a038261120a565b60405191829182611273565b0390f35b845473ffffffffffffffffffffffffffffffffffffffff168752958601959383019390830190610bf0565b346108235760206003193601126108235760043573ffffffffffffffffffffffffffffffffffffffff8116809103610823575f525f602052602060ff60405f2054166040519015158152f35b34610823575f600319360112610823576040516004545f82610caf8361131e565b91828252602093600190856001821691825f14610d4c575050600114610cf1575b50610cdd9250038361120a565b610c136040519282849384528301906111c9565b84915060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b905f915b858310610d34575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610d1d565b60ff191685820152610cdd95151560051b8501019250879150610cd09050565b34610823576040600319360112610823576004356024803560019260015480821015610ea25780610d9d84846113fb565b11610e61575b50610dad826112e2565b92610dbb604051948561120a565b828452610dc7836112e2565b91601f19602093013660208701375f5b848110610dec5760405180610c138882611273565b610dfe610df982846113fb565b611408565b9054908751831015610e355760031b1c73ffffffffffffffffffffffffffffffffffffffff16600582901b87018501528601610dd7565b847f4e487b71000000000000000000000000000000000000000000000000000000005f5260326004525ffd5b908092508103908111610e75579084610da3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e23d035000000000000000000000000000000000000000000000000000000005f5260045ffd5b346108235760406003193601126108235760043567ffffffffffffffff81116108235736602382011215610823576055600b610f12602093369060248160040135910161122d565b604051610f42818680820194610f278661136f565b90805192839101825e015f815203601f19810183528261120a565b519020610f506024356115fc565b604051916040830152848201523081520160ff81532073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576040516005545f82610fa58361131e565b91828252602093600190856001821691825f14610d4c575050600114610fd25750610cdd9250038361120a565b84915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b858310611015575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610ffe565b34610823575f600319360112610823577fffffffff00000000000000000000000000000000000000000000000000000000611068911661146a565b602073ffffffffffffffffffffffffffffffffffffffff6110876114e0565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa90811561076c575f9161113f575b5015611117576110e46115c8565b600160ff1960025416176002557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d505f80a1005b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506020813d602011611172575b8161115a6020938361120a565b810103126108235751801515810361082357816110d6565b3d915061114d565b34610823575f6003193601126108235760806111946112fa565b6111c760405180926060809180511515845260208101511515602085015260408101511515604085015201511515910152565bf35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6080810190811067ffffffffffffffff82111761073f57604052565b90601f601f19910116810190811067ffffffffffffffff82111761073f57604052565b92919267ffffffffffffffff821161073f57604051916112576020601f19601f840116018461120a565b829481845281830111610823578281602093845f960137010152565b60209060206040818301928281528551809452019301915f5b82811061129a575050505090565b835173ffffffffffffffffffffffffffffffffffffffff168552938101939281019260010161128c565b9080601f83011215610823578160206112df9335910161122d565b90565b67ffffffffffffffff811161073f5760051b60200190565b60405190611307826111ee565b5f6060838281528260208201528260408201520152565b90600182811c92168015611365575b602083101461133857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161132d565b6003545f929161137e8261131e565b916001908181169081156113e8575060011461139957505050565b909192935060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f915b8483106113d5575050500190565b81816020925485870152019201916113c7565b60ff191683525050811515909102019150565b91908201809211610e7557565b60015481101561143d5760015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526060810181811067ffffffffffffffff82111761073f5760405251902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa91821561076c575f9261155857505090565b9091506020813d602011611589575b816115746020938361120a565b81010312610823575190811681036108235790565b3d9150611567565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81164210156115c35790565b505f90565b60ff600254166115d457565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b604051602081019133835246604083015260608201526060815261161f816111ee565b5190209056fea2646970667358221220f40127d232f8d908273c324b8db4ec8d0aa7dbff87a7e5627774e299dc68f47664736f6c634300081a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/v3/tasks/20241205-v3-weighted-pool/build-info/WeightedPoolFactory.json b/v3/tasks/20241205-v3-weighted-pool/build-info/WeightedPoolFactory.json new file mode 100644 index 00000000..d6860cfd --- /dev/null +++ b/v3/tasks/20241205-v3-weighted-pool/build-info/WeightedPoolFactory.json @@ -0,0 +1 @@ +{"id":"7e26711dea08e97e7f12bd13a12bdbc7","_format":"hh-sol-build-info-1","solcVersion":"0.8.26","solcLongVersion":"0.8.26+commit.8a97fa7a","input":{"language":"Solidity","sources":{"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { TokenInfo } from \"../vault/VaultTypes.sol\";\n\n/**\n * @notice Convenience interface for pools, to get easy access to information stored in the Vault.\n * Intended mostly for off-chain requests; pools do not need to implement this to work properly.\n */\ninterface IPoolInfo {\n /**\n * @notice Gets the tokens registered in the pool.\n * @return tokens List of tokens in the pool, sorted in registration order\n */\n function getTokens() external view returns (IERC20[] memory tokens);\n\n /**\n * @notice Gets the raw data for the pool: tokens, token info, raw balances, and last live balances.\n * @return tokens Pool tokens, sorted in token registration order\n * @return tokenInfo Token info structs (type, rate provider, yield flag), sorted in token registration order\n * @return balancesRaw Current native decimal balances of the pool tokens, sorted in token registration order\n * @return lastBalancesLiveScaled18 Last saved live balances, sorted in token registration order\n */\n function getTokenInfo()\n external\n view\n returns (\n IERC20[] memory tokens,\n TokenInfo[] memory tokenInfo,\n uint256[] memory balancesRaw,\n uint256[] memory lastBalancesLiveScaled18\n );\n\n /**\n * @notice Gets the current live balances of the pool as fixed point, 18-decimal numbers.\n * @dev Note that live balances will not necessarily be accurate if the pool is in Recovery Mode.\n * Withdrawals in Recovery Mode do not make external calls (including those necessary for updating live balances),\n * so if there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\n *\n * @return balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n */\n function getCurrentLiveBalances() external view returns (uint256[] memory balancesLiveScaled18);\n\n /**\n * @notice Fetches the static swap fee percentage for the pool.\n * @return staticSwapFeePercentage 18-decimal FP value of the static swap fee percentage\n */\n function getStaticSwapFeePercentage() external view returns (uint256 staticSwapFeePercentage);\n\n /**\n * @notice Gets the aggregate swap and yield fee percentages for a pool.\n * @dev These are determined by the current protocol and pool creator fees, set in the `ProtocolFeeController`.\n * @return aggregateSwapFeePercentage The aggregate percentage fee applied to swaps\n * @return aggregateYieldFeePercentage The aggregate percentage fee applied to yield\n */\n function getAggregateFeePercentages()\n external\n view\n returns (uint256 aggregateSwapFeePercentage, uint256 aggregateYieldFeePercentage);\n}\n"},"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IBasePool } from \"../vault/IBasePool.sol\";\n\n/**\n * @notice Weighted Pool data that cannot change after deployment.\n * @param tokens Pool tokens, sorted in token registration order\n * @param decimalScalingFactors Conversion factor used to adjust for token decimals for uniform precision in\n * calculations. FP(1) for 18-decimal tokens\n * @param normalizedWeights The token weights, sorted in token registration order\n */\nstruct WeightedPoolImmutableData {\n IERC20[] tokens;\n uint256[] decimalScalingFactors;\n uint256[] normalizedWeights;\n}\n\n/**\n * @notice Snapshot of current Weighted Pool data that can change.\n * @dev Note that live balances will not necessarily be accurate if the pool is in Recovery Mode. Withdrawals\n * in Recovery Mode do not make external calls (including those necessary for updating live balances), so if\n * there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\n *\n * @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n * @param tokenRates 18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\n * @param staticSwapFeePercentage 18-decimal FP value of the static swap fee percentage\n * @param totalSupply The current total supply of the pool tokens (BPT)\n * @param isPoolInitialized If false, the pool has not been seeded with initial liquidity, so operations will revert\n * @param isPoolPaused If true, the pool is paused, and all non-recovery-mode state-changing operations will revert\n * @param isPoolInRecoveryMode If true, Recovery Mode withdrawals are enabled, and live balances may be inaccurate\n */\nstruct WeightedPoolDynamicData {\n uint256[] balancesLiveScaled18;\n uint256[] tokenRates;\n uint256 staticSwapFeePercentage;\n uint256 totalSupply;\n bool isPoolInitialized;\n bool isPoolPaused;\n bool isPoolInRecoveryMode;\n}\n\n/// @notice Full Weighted pool interface.\ninterface IWeightedPool is IBasePool {\n /**\n * @notice Get the normalized weights.\n * @return normalizedWeights The normalized weights, sorted in token registration order\n */\n function getNormalizedWeights() external view returns (uint256[] memory normalizedWeights);\n\n /**\n * @notice Get dynamic pool data relevant to swap/add/remove calculations.\n * @return data A struct containing all dynamic weighted pool parameters\n */\n function getWeightedPoolDynamicData() external view returns (WeightedPoolDynamicData memory data);\n\n /**\n * @notice Get immutable pool data relevant to swap/add/remove calculations.\n * @return data A struct containing all immutable weighted pool parameters\n */\n function getWeightedPoolImmutableData() external view returns (WeightedPoolImmutableData memory data);\n}\n"},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/// @notice Simple interface for permissioned calling of external functions.\ninterface IAuthentication {\n /// @notice The sender does not have permission to call a function.\n error SenderNotAllowed();\n\n /**\n * @notice Returns the action identifier associated with the external function described by `selector`.\n * @param selector The 4-byte selector of the permissioned function\n * @return actionId The computed actionId\n */\n function getActionId(bytes4 selector) external view returns (bytes32 actionId);\n}\n"},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/// @notice Simple interface to retrieve the version of pools deployed by a pool factory.\ninterface IPoolVersion {\n /**\n * @notice Returns a JSON representation of the deployed pool version containing name, version number and task ID.\n * @dev This is typically only useful in complex Pool deployment schemes, where multiple subsystems need to know\n * about each other. Note that this value will only be set at factory creation time.\n *\n * @return poolVersion A string representation of the pool version\n */\n function getPoolVersion() external view returns (string memory poolVersion);\n}\n"},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/// @notice General interface for token exchange rates.\ninterface IRateProvider {\n /**\n * @notice An 18 decimal fixed point number representing the exchange rate of one token to another related token.\n * @dev The meaning of this rate depends on the context. Note that there may be an error associated with a token\n * rate, and the caller might require a certain rounding direction to ensure correctness. This (legacy) interface\n * does not take a rounding direction or return an error, so great care must be taken when interpreting and using\n * rates in downstream computations.\n *\n * @return rate The current token rate\n */\n function getRate() external view returns (uint256 rate);\n}\n"},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/// @notice Simple interface to retrieve the version of a deployed contract.\ninterface IVersion {\n /**\n * @notice Return arbitrary text representing the version of a contract.\n * @dev For standard Balancer contracts, returns a JSON representation of the contract version containing name,\n * version number and task ID. See real examples in the deployment repo; local tests just use plain text strings.\n *\n * @return version The version string corresponding to the current deployed contract\n */\n function version() external view returns (string memory);\n}\n"},"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @notice Interface for WETH9.\n * See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\n */\ninterface IWETH is IERC20 {\n /**\n * @notice \"wrap\" native ETH to WETH.\n * @dev The amount is msg.value.\n */\n function deposit() external payable;\n\n /**\n * @notice \"unwrap\" WETH to native ETH.\n * @param amount The amount to withdraw\n */\n function withdraw(uint256 amount) external;\n}\n"},"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\n\ninterface IVaultAdminMock {\n function manualPauseVault() external;\n\n function manualUnpauseVault() external;\n\n function manualPausePool(address pool) external;\n\n function manualUnpausePool(address pool) external;\n\n function manualEnableRecoveryMode(address pool) external;\n\n function manualDisableRecoveryMode(address pool) external;\n\n function manualReentrancyInitializeBuffer(\n IERC4626 wrappedToken,\n uint256 amountUnderlying,\n uint256 amountWrapped,\n uint256 minIssuedShares,\n address sharesOwner\n ) external;\n\n /// @dev Adds liquidity to buffer unbalanced, so it can unbalance the buffer.\n function addLiquidityToBufferUnbalancedForTests(\n IERC4626 wrappedToken,\n uint256 underlyingAmount,\n uint256 wrappedAmount\n ) external;\n\n function manualReentrancyAddLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 maxAmountUnderlyingInRaw,\n uint256 maxAmountWrappedInRaw,\n uint256 exactSharesToIssue,\n address sharesOwner\n ) external;\n\n function manualReentrancyRemoveLiquidityFromBufferHook(\n IERC4626 wrappedToken,\n uint256 sharesToRemove,\n uint256 minAmountUnderlyingOut,\n uint256 minAmountWrappedOut,\n address sharesOwner\n ) external;\n\n function manualReentrancyDisableRecoveryMode(address pool) external;\n\n function mockWithValidPercentage(uint256 percentage) external view;\n\n function mockEnsurePoolNotInRecoveryMode(address pool) external view;\n\n function manualMintBufferShares(IERC4626 wrappedToken, address to, uint256 amount) external;\n\n function manualBurnBufferShares(IERC4626 wrappedToken, address from, uint256 amount) external;\n\n function manualMintMinimumBufferSupplyReserve(IERC4626 wrappedToken) external;\n}\n"},"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { TokenConfig, PoolRoleAccounts, LiquidityManagement } from \"../../contracts/vault/VaultTypes.sol\";\n\ninterface IVaultExtensionMock {\n // Used in tests to circumvent minimum swap fees.\n function manuallySetSwapFee(address pool, uint256 swapFeePercentage) external;\n\n function manualRegisterPoolReentrancy(\n address pool,\n TokenConfig[] memory tokenConfig,\n uint256 swapFeePercentage,\n uint32 pauseWindowEndTime,\n bool protocolFeeExempt,\n PoolRoleAccounts calldata roleAccounts,\n address poolHooksContract,\n LiquidityManagement calldata liquidityManagement\n ) external;\n\n function manualInitializePoolReentrancy(\n address pool,\n address to,\n IERC20[] memory tokens,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bytes memory userData\n ) external;\n}\n"},"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IRateProvider } from \"../solidity-utils/helpers/IRateProvider.sol\";\nimport \"../vault/VaultTypes.sol\";\n\ninterface IVaultMainMock {\n function getPoolFactoryMock() external view returns (address);\n\n function burnERC20(address token, address from, uint256 amount) external;\n\n function mintERC20(address token, address to, uint256 amount) external;\n\n function manualRegisterPool(address pool, IERC20[] memory tokens) external;\n\n function manualRegisterPoolWithSwapFee(address pool, IERC20[] memory tokens, uint256 swapFeePercentage) external;\n\n function manualRegisterPoolPassThruTokens(address pool, IERC20[] memory tokens) external;\n\n function manualRegisterPoolAtTimestamp(\n address pool,\n IERC20[] memory tokens,\n uint32 timestamp,\n PoolRoleAccounts memory roleAccounts\n ) external;\n\n function manualSetPoolRegistered(address pool, bool status) external;\n\n function manualSetInitializedPool(address pool, bool isPoolInitialized) external;\n\n function manualSetPoolPaused(address, bool) external;\n\n function manualSetPoolPauseWindowEndTime(address, uint32) external;\n\n function manualSetVaultPaused(bool) external;\n\n function manualSetVaultState(bool, bool) external;\n\n function manualSetPoolTokenInfo(address, TokenConfig[] memory) external;\n\n function manualSetPoolTokenInfo(address, IERC20[] memory, TokenInfo[] memory) external;\n\n function manualSetPoolConfig(address pool, PoolConfig memory config) external;\n\n function manualSetHooksConfig(address pool, HooksConfig memory config) external;\n\n function manualSetStaticSwapFeePercentage(address pool, uint256 value) external;\n\n /// @dev Does not check the value against any min/max limits normally enforced by the pool.\n function manualUnsafeSetStaticSwapFeePercentage(address pool, uint256 value) external;\n\n function manualSetPoolTokens(address pool, IERC20[] memory tokens) external;\n\n function manualSetPoolTokensAndBalances(address, IERC20[] memory, uint256[] memory, uint256[] memory) external;\n\n function manualSetPoolBalances(address, uint256[] memory, uint256[] memory) external;\n\n function manualSetPoolConfigBits(address pool, PoolConfigBits config) external;\n\n function mockIsUnlocked() external view;\n\n function mockWithInitializedPool(address pool) external view;\n\n function ensurePoolNotPaused(address) external view;\n\n function ensureUnpausedAndGetVaultState(address) external view returns (VaultState memory);\n\n function internalGetBufferUnderlyingImbalance(IERC4626 wrappedToken) external view returns (int256);\n\n function internalGetBufferWrappedImbalance(IERC4626 wrappedToken) external view returns (int256);\n\n function getBufferTokenBalancesBytes(IERC4626 wrappedToken) external view returns (bytes32);\n\n function recoveryModeExit(address pool) external view;\n\n function loadPoolDataUpdatingBalancesAndYieldFees(\n address pool,\n Rounding roundingDirection\n ) external returns (PoolData memory);\n\n function loadPoolDataUpdatingBalancesAndYieldFeesReentrancy(\n address pool,\n Rounding roundingDirection\n ) external returns (PoolData memory);\n\n function manualWritePoolBalancesToStorage(address pool, PoolData memory poolData) external;\n\n function getRawBalances(address pool) external view returns (uint256[] memory balancesRaw);\n\n function getLastLiveBalances(address pool) external view returns (uint256[] memory lastBalancesLiveScaled18);\n\n function updateLiveTokenBalanceInPoolData(\n PoolData memory poolData,\n uint256 newRawBalance,\n Rounding roundingDirection,\n uint256 tokenIndex\n ) external pure returns (PoolData memory);\n\n function computeYieldFeesDue(\n PoolData memory poolData,\n uint256 lastLiveBalance,\n uint256 tokenIndex,\n uint256 aggregateYieldFeePercentage\n ) external pure returns (uint256);\n\n function guardedCheckEntered() external;\n\n function unguardedCheckNotEntered() external view;\n\n // Convenience functions for constructing TokenConfig arrays\n\n function buildTokenConfig(IERC20[] memory tokens) external view returns (TokenConfig[] memory tokenConfig);\n\n /// @dev Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\n function buildTokenConfig(\n IERC20[] memory tokens,\n IRateProvider[] memory rateProviders\n ) external view returns (TokenConfig[] memory tokenConfig);\n\n /// @dev Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\n function buildTokenConfig(\n IERC20[] memory tokens,\n IRateProvider[] memory rateProviders,\n bool[] memory yieldFeeFlags\n ) external view returns (TokenConfig[] memory tokenConfig);\n\n function buildTokenConfig(\n IERC20[] memory tokens,\n TokenType[] memory tokenTypes,\n IRateProvider[] memory rateProviders,\n bool[] memory yieldFeeFlags\n ) external view returns (TokenConfig[] memory tokenConfig);\n\n function accountDelta(IERC20 token, int256 delta) external;\n\n function supplyCredit(IERC20 token, uint256 credit) external;\n\n function takeDebt(IERC20 token, uint256 debt) external;\n\n function manualSetAccountDelta(IERC20 token, int256 delta) external;\n\n function manualSetNonZeroDeltaCount(uint256 deltaCount) external;\n\n function manualSetReservesOf(IERC20 token, uint256 reserves) external;\n\n function manualInternalSwap(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory state,\n PoolData memory poolData\n )\n external\n returns (\n uint256 amountCalculatedRaw,\n uint256 amountCalculatedScaled18,\n uint256 amountIn,\n uint256 amountOut,\n VaultSwapParams memory,\n SwapState memory,\n PoolData memory\n );\n\n function manualReentrancySwap(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory state,\n PoolData memory poolData\n ) external;\n\n function manualGetAggregateSwapFeeAmount(address pool, IERC20 token) external view returns (uint256);\n\n function manualGetAggregateYieldFeeAmount(address pool, IERC20 token) external view returns (uint256);\n\n function manualSetAggregateSwapFeeAmount(address pool, IERC20 token, uint256 value) external;\n\n function manualSetAggregateYieldFeeAmount(address pool, IERC20 token, uint256 value) external;\n\n function manualSetAggregateSwapFeePercentage(address pool, uint256 value) external;\n\n function manualSetAggregateYieldFeePercentage(address pool, uint256 value) external;\n\n function manualBuildPoolSwapParams(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory state,\n PoolData memory poolData\n ) external view returns (PoolSwapParams memory);\n\n function manualComputeAndChargeAggregateSwapFees(\n PoolData memory poolData,\n uint256 totalSwapFeeAmountScaled18,\n address pool,\n IERC20 token,\n uint256 index\n ) external returns (uint256 totalSwapFeeAmountRaw, uint256 aggregateSwapFeeAmountRaw);\n\n function manualUpdatePoolDataLiveBalancesAndRates(\n address pool,\n PoolData memory poolData,\n Rounding roundingDirection\n ) external view returns (PoolData memory);\n\n function manualAddLiquidity(\n PoolData memory poolData,\n AddLiquidityParams memory params,\n uint256[] memory maxAmountsInScaled18\n )\n external\n returns (\n PoolData memory updatedPoolData,\n uint256[] memory amountsInRaw,\n uint256[] memory amountsInScaled18,\n uint256 bptAmountOut,\n bytes memory returnData\n );\n\n function manualReentrancyAddLiquidity(\n PoolData memory poolData,\n AddLiquidityParams memory params,\n uint256[] memory maxAmountsInScaled18\n ) external;\n\n function forceUnlock() external;\n\n function forceLock() external;\n\n function manualRemoveLiquidity(\n PoolData memory poolData,\n RemoveLiquidityParams memory params,\n uint256[] memory minAmountsOutScaled18\n )\n external\n returns (\n PoolData memory updatedPoolData,\n uint256 bptAmountIn,\n uint256[] memory amountsOutRaw,\n uint256[] memory amountsOutScaled18,\n bytes memory returnData\n );\n\n function manualReentrancyRemoveLiquidity(\n PoolData memory poolData,\n RemoveLiquidityParams memory params,\n uint256[] memory minAmountsOutScaled18\n ) external;\n\n function manualSettleWrap(\n IERC20 underlyingToken,\n IERC20 wrappedToken,\n uint256 underlyingHint,\n uint256 wrappedHint\n ) external;\n\n function manualSettleUnwrap(\n IERC20 underlyingToken,\n IERC20 wrappedToken,\n uint256 underlyingHint,\n uint256 wrappedHint\n ) external;\n\n function manualTransfer(IERC20 token, address to, uint256 amount) external;\n\n function manualGetPoolConfigBits(address pool) external view returns (PoolConfigBits);\n\n function manualErc4626BufferWrapOrUnwrapReentrancy(\n BufferWrapOrUnwrapParams memory params\n ) external returns (uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw);\n\n function manualSetBufferAsset(IERC4626 wrappedToken, address underlyingToken) external;\n\n function manualSetBufferOwnerShares(IERC4626 wrappedToken, address owner, uint256 shares) external;\n\n function manualSetBufferTotalShares(IERC4626 wrappedToken, uint256 shares) external;\n\n function manualSetBufferBalances(IERC4626 wrappedToken, uint256 underlyingAmount, uint256 wrappedAmount) external;\n\n function manualSettleReentrancy(IERC20 token) external returns (uint256 paid);\n\n function manualSendToReentrancy(IERC20 token, address to, uint256 amount) external;\n\n function manualFindTokenIndex(IERC20[] memory tokens, IERC20 token) external pure returns (uint256 index);\n\n function manualSetAddLiquidityCalledFlag(address pool, bool flag) external;\n\n function manualSetPoolCreator(address pool, address newPoolCreator) external;\n\n function ensureValidTradeAmount(uint256 tradeAmount) external view;\n\n function ensureValidSwapAmount(uint256 tradeAmount) external view;\n\n function manualUpdateAggregateSwapFeePercentage(address pool, uint256 newAggregateSwapFeePercentage) external;\n\n function manualGetAddLiquidityCalledFlagBySession(address pool, uint256 sessionId) external view returns (bool);\n\n function manualGetCurrentUnlockSessionId() external view returns (uint256);\n\n function previewDeposit(IERC4626 wrapper, uint256 amountInUnderlying) external returns (uint256 amountOutWrapped);\n\n function previewMint(IERC4626 wrapper, uint256 amountOutWrapped) external returns (uint256 amountInUnderlying);\n\n function previewRedeem(IERC4626 wrapper, uint256 amountInWrapped) external returns (uint256 amountOutUnderlying);\n\n function previewWithdraw(IERC4626 wrapper, uint256 amountOutUnderlying) external returns (uint256 amountInWrapped);\n}\n"},"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20Errors } from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\n\nimport { IVaultExtensionMock } from \"./IVaultExtensionMock.sol\";\nimport { IVaultStorageMock } from \"./IVaultStorageMock.sol\";\nimport { IVaultAdminMock } from \"./IVaultAdminMock.sol\";\nimport { IVaultMainMock } from \"./IVaultMainMock.sol\";\nimport { IVault } from \"../vault/IVault.sol\";\n\n/// @dev One-fits-all solution for hardhat tests. Use the typechain type for errors, events and functions.\ninterface IVaultMock is IVault, IVaultMainMock, IVaultExtensionMock, IVaultAdminMock, IVaultStorageMock, IERC20Errors {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { StorageSlotExtension } from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\";\n\nimport {\n TokenDeltaMappingSlotType\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\ninterface IVaultStorageMock {\n function manualGetIsUnlocked() external pure returns (StorageSlotExtension.BooleanSlotType slot);\n\n function manualGetNonzeroDeltaCount() external pure returns (StorageSlotExtension.Uint256SlotType slot);\n\n function manualGetTokenDeltas() external pure returns (TokenDeltaMappingSlotType slot);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/// @notice Interface to the Vault's permission system.\ninterface IAuthorizer {\n /**\n * @notice Returns true if `account` can perform the action described by `actionId` in the contract `where`.\n * @param actionId Identifier for the action to be performed\n * @param account Account trying to perform the action\n * @param where Target contract for the action\n * @return success True if the action is permitted\n */\n function canPerform(bytes32 actionId, address account, address where) external view returns (bool success);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IUnbalancedLiquidityInvariantRatioBounds } from \"./IUnbalancedLiquidityInvariantRatioBounds.sol\";\nimport { ISwapFeePercentageBounds } from \"./ISwapFeePercentageBounds.sol\";\nimport { PoolSwapParams, Rounding, SwapKind } from \"./VaultTypes.sol\";\n\n/**\n * @notice Base interface for a Balancer Pool.\n * @dev All pool types should implement this interface. Note that it also requires implementation of:\n * - `ISwapFeePercentageBounds` to specify the minimum and maximum swap fee percentages.\n * - `IUnbalancedLiquidityInvariantRatioBounds` to specify how much the invariant can change during an unbalanced\n * liquidity operation.\n */\ninterface IBasePool is ISwapFeePercentageBounds, IUnbalancedLiquidityInvariantRatioBounds {\n /***************************************************************************\n Invariant\n ***************************************************************************/\n\n /**\n * @notice Computes the pool's invariant.\n * @dev This function computes the invariant based on current balances (and potentially other pool state).\n * The rounding direction must be respected for the Vault to round in the pool's favor when calling this function.\n * If the invariant computation involves no precision loss (e.g. simple sum of balances), the same result can be\n * returned for both rounding directions.\n *\n * You can think of the invariant as a measure of the \"value\" of the pool, which is related to the total liquidity\n * (i.e., the \"BPT rate\" is `invariant` / `totalSupply`). Two critical properties must hold:\n *\n * 1) The invariant should not change due to a swap. In practice, it can *increase* due to swap fees, which\n * effectively add liquidity after the swap - but it should never decrease.\n *\n * 2) The invariant must be \"linear\"; i.e., increasing the balances proportionally must increase the invariant in\n * the same proportion: inv(a * n, b * n, c * n) = inv(a, b, c) * n\n *\n * Property #1 is required to prevent \"round trip\" paths that drain value from the pool (and all LP shareholders).\n * Intuitively, an accurate pricing algorithm ensures the user gets an equal value of token out given token in, so\n * the total value should not change.\n *\n * Property #2 is essential for the \"fungibility\" of LP shares. If it did not hold, then different users depositing\n * the same total value would get a different number of LP shares. In that case, LP shares would not be\n * interchangeable, as they must be in a fair DEX.\n *\n * @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n * @param rounding Rounding direction to consider when computing the invariant\n * @return invariant The calculated invariant of the pool, represented as a uint256\n */\n function computeInvariant(\n uint256[] memory balancesLiveScaled18,\n Rounding rounding\n ) external view returns (uint256 invariant);\n\n /**\n * @notice Computes a new token balance, given the invariant growth ratio and all other balances.\n * @dev Similar to V2's `_getTokenBalanceGivenInvariantAndAllOtherBalances` in StableMath.\n * The pool must round up for the Vault to round in the protocol's favor when calling this function.\n *\n * @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n * @param tokenInIndex The index of the token we're computing the balance for, sorted in token registration order\n * @param invariantRatio The ratio of the new invariant (after an operation) to the old\n * @return newBalance The new balance of the selected token, after the operation\n */\n function computeBalance(\n uint256[] memory balancesLiveScaled18,\n uint256 tokenInIndex,\n uint256 invariantRatio\n ) external view returns (uint256 newBalance);\n\n /***************************************************************************\n Swaps\n ***************************************************************************/\n\n /**\n * @notice Execute a swap in the pool.\n * @param params Swap parameters (see above for struct definition)\n * @return amountCalculatedScaled18 Calculated amount for the swap operation\n */\n function onSwap(PoolSwapParams calldata params) external returns (uint256 amountCalculatedScaled18);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IAuthentication } from \"../solidity-utils/helpers/IAuthentication.sol\";\n\n/**\n * @notice Base interface for a Balancer Pool Factory.\n * @dev All pool factories should be derived from `BasePoolFactory` to enable common behavior for all pool types\n * (e.g., address prediction, tracking deployed pools, and governance-facilitated migration).\n */\ninterface IBasePoolFactory is IAuthentication {\n /**\n * @notice A pool was deployed.\n * @param pool The address of the new pool\n */\n event PoolCreated(address indexed pool);\n\n /// @notice The factory was disabled by governance.\n event FactoryDisabled();\n\n /// @notice Attempted pool creation after the factory was disabled.\n error Disabled();\n\n /// @notice A pool index is beyond the current bounds of the array.\n error IndexOutOfBounds();\n\n /**\n * @notice Check whether a pool was deployed by this factory.\n * @param pool The pool to check\n * @return success True if `pool` was created by this factory\n */\n function isPoolFromFactory(address pool) external view returns (bool success);\n\n /**\n * @notice Return the total number of pools deployed by this factory.\n * @dev This can then be used to \"paginate\" calls to `getPools` to control gas costs.\n * @return poolCount The number of pools deployed by this factory\n */\n function getPoolCount() external view returns (uint256 poolCount);\n\n /**\n * @notice Return a subset of the list of pools deployed by this factory.\n * @dev `start` must be a valid index, but if `count` exceeds the total length, it will not revert, but simply\n * stop at the end and return fewer results than requested.\n *\n * @param start The index of the first pool to return\n * @param count The maximum number of pools to return\n * @return pools The list of pools deployed by this factory, starting at `start` and returning up to `count` pools\n */\n function getPoolsInRange(uint256 start, uint256 count) external view returns (address[] memory pools);\n\n /**\n * @notice Return the complete list of pools deployed by this factory.\n * @return pools The list of pools deployed by this factory\n */\n function getPools() external view returns (address[] memory pools);\n\n /**\n * @notice Return the address where a new pool will be deployed, based on the factory address and salt.\n * @param constructorArgs The arguments used to create the pool\n * @param salt The salt used to deploy the pool\n * @return deploymentAddress The predicted address of the pool, given the salt\n */\n function getDeploymentAddress(\n bytes memory constructorArgs,\n bytes32 salt\n ) external view returns (address deploymentAddress);\n\n /**\n * @notice Check whether this factory has been disabled by governance.\n * @return success True if this factory was disabled\n */\n function isDisabled() external view returns (bool success);\n\n /**\n * @notice Disable the factory, preventing the creation of more pools.\n * @dev Existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\n */\n function disable() external;\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { AddLiquidityKind, RemoveLiquidityKind, SwapKind } from \"./VaultTypes.sol\";\n\n/// @notice Interface for the `BatchRouter`, supporting multi-hop swaps.\ninterface IBatchRouter {\n /***************************************************************************\n Swaps\n ***************************************************************************/\n\n struct SwapPathStep {\n address pool;\n IERC20 tokenOut;\n // If true, the \"pool\" is an ERC4626 Buffer. Used to wrap/unwrap tokens if pool doesn't have enough liquidity.\n bool isBuffer;\n }\n\n struct SwapPathExactAmountIn {\n IERC20 tokenIn;\n // For each step:\n // If tokenIn == pool, use removeLiquidity SINGLE_TOKEN_EXACT_IN.\n // If tokenOut == pool, use addLiquidity UNBALANCED.\n SwapPathStep[] steps;\n uint256 exactAmountIn;\n uint256 minAmountOut;\n }\n\n struct SwapPathExactAmountOut {\n IERC20 tokenIn;\n // for each step:\n // If tokenIn == pool, use removeLiquidity SINGLE_TOKEN_EXACT_OUT.\n // If tokenOut == pool, use addLiquidity SINGLE_TOKEN_EXACT_OUT.\n SwapPathStep[] steps;\n uint256 maxAmountIn;\n uint256 exactAmountOut;\n }\n\n struct SwapExactInHookParams {\n address sender;\n SwapPathExactAmountIn[] paths;\n uint256 deadline;\n bool wethIsEth;\n bytes userData;\n }\n\n struct SwapExactOutHookParams {\n address sender;\n SwapPathExactAmountOut[] paths;\n uint256 deadline;\n bool wethIsEth;\n bytes userData;\n }\n\n /**\n * @notice Executes a swap operation involving multiple paths (steps), specifying exact input token amounts.\n * @param paths Swap paths from token in to token out, specifying exact amounts in\n * @param deadline Deadline for the swap, after which it will revert\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data required for the swap\n * @return pathAmountsOut Calculated amounts of output tokens corresponding to the last step of each given path\n * @return tokensOut Output token addresses\n * @return amountsOut Calculated amounts of output tokens, ordered by output token address\n */\n function swapExactIn(\n SwapPathExactAmountIn[] memory paths,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n )\n external\n payable\n returns (uint256[] memory pathAmountsOut, address[] memory tokensOut, uint256[] memory amountsOut);\n\n /**\n * @notice Executes a swap operation involving multiple paths (steps), specifying exact output token amounts.\n * @param paths Swap paths from token in to token out, specifying exact amounts out\n * @param deadline Deadline for the swap\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data required for the swap\n * @return pathAmountsIn Calculated amounts of input tokens corresponding to the first step of each given path\n * @return tokensIn Input token addresses\n * @return amountsIn Calculated amounts of input tokens, ordered by input token address\n */\n function swapExactOut(\n SwapPathExactAmountOut[] memory paths,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n ) external payable returns (uint256[] memory pathAmountsIn, address[] memory tokensIn, uint256[] memory amountsIn);\n\n /***************************************************************************\n Queries\n ***************************************************************************/\n\n /**\n * @notice Queries a swap operation involving multiple paths (steps), specifying exact input token amounts.\n * @dev Min amounts out specified in the paths are ignored.\n * @param paths Swap paths from token in to token out, specifying exact amounts in\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data required for the query\n * @return pathAmountsOut Calculated amounts of output tokens corresponding to the last step of each given path\n * @return tokensOut Output token addresses\n * @return amountsOut Calculated amounts of output tokens to be received, ordered by output token address\n */\n function querySwapExactIn(\n SwapPathExactAmountIn[] memory paths,\n address sender,\n bytes calldata userData\n ) external returns (uint256[] memory pathAmountsOut, address[] memory tokensOut, uint256[] memory amountsOut);\n\n /**\n * @notice Queries a swap operation involving multiple paths (steps), specifying exact output token amounts.\n * @dev Max amounts in specified in the paths are ignored.\n * @param paths Swap paths from token in to token out, specifying exact amounts out\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data required for the query\n * @return pathAmountsIn Calculated amounts of input tokens corresponding to the last step of each given path\n * @return tokensIn Input token addresses\n * @return amountsIn Calculated amounts of input tokens to be received, ordered by input token address\n */\n function querySwapExactOut(\n SwapPathExactAmountOut[] memory paths,\n address sender,\n bytes calldata userData\n ) external returns (uint256[] memory pathAmountsIn, address[] memory tokensIn, uint256[] memory amountsIn);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\n\nimport { AddLiquidityKind, RemoveLiquidityKind, SwapKind } from \"./VaultTypes.sol\";\n\n/// @notice User-friendly interface for Buffer liquidity operations with the Vault.\ninterface IBufferRouter {\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /**\n * @notice Adds liquidity for the first time to an internal ERC4626 buffer in the Vault.\n * @dev Calling this method binds the wrapped token to its underlying asset internally; the asset in the wrapper\n * cannot change afterwards, or every other operation on that wrapper (add / remove / wrap / unwrap) will fail.\n * To avoid unexpected behavior, always initialize buffers before creating or initializing any pools that contain\n * the wrapped tokens to be used with them.\n *\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param exactAmountUnderlyingIn Amount of underlying tokens that will be deposited into the buffer\n * @param exactAmountWrappedIn Amount of wrapped tokens that will be deposited into the buffer\n * @param minIssuedShares Minimum amount of shares to receive from the buffer, expressed in underlying token\n * native decimals\n * @return issuedShares the amount of tokens sharesOwner has in the buffer, denominated in underlying tokens\n * (This is the BPT of the Vault's internal ERC4626 buffer.)\n */\n function initializeBuffer(\n IERC4626 wrappedToken,\n uint256 exactAmountUnderlyingIn,\n uint256 exactAmountWrappedIn,\n uint256 minIssuedShares\n ) external returns (uint256 issuedShares);\n\n /**\n * @notice Adds liquidity proportionally to an internal ERC4626 buffer in the Vault.\n * @dev Requires the buffer to be initialized beforehand. Restricting adds to proportional simplifies the Vault\n * code, avoiding rounding issues and minimum amount checks. It is possible to add unbalanced by interacting\n * with the wrapper contract directly.\n *\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param maxAmountUnderlyingIn Maximum amount of underlying tokens to add to the buffer. It is expressed in\n * underlying token native decimals\n * @param maxAmountWrappedIn Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped\n * token native decimals\n * @param exactSharesToIssue The amount of shares that `sharesOwner` wants to add to the buffer, in underlying\n * token decimals\n * @return amountUnderlyingIn Amount of underlying tokens deposited into the buffer\n * @return amountWrappedIn Amount of wrapped tokens deposited into the buffer\n */\n function addLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 maxAmountUnderlyingIn,\n uint256 maxAmountWrappedIn,\n uint256 exactSharesToIssue\n ) external returns (uint256 amountUnderlyingIn, uint256 amountWrappedIn);\n\n /**\n * @notice Queries an `initializeBuffer` operation without actually executing it.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param exactAmountUnderlyingIn Amount of underlying tokens that the sender wishes to deposit into the buffer\n * @param exactAmountWrappedIn Amount of wrapped tokens that the sender wishes to deposit into the buffer\n * @return issuedShares The amount of shares that would be minted, in underlying token decimals\n */\n function queryInitializeBuffer(\n IERC4626 wrappedToken,\n uint256 exactAmountUnderlyingIn,\n uint256 exactAmountWrappedIn\n ) external returns (uint256 issuedShares);\n\n /**\n * @notice Queries an `addLiquidityToBuffer` operation without actually executing it.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param exactSharesToIssue The amount of shares that would be minted, in underlying token decimals\n * @return amountUnderlyingIn Amount of underlying tokens that would be deposited into the buffer\n * @return amountWrappedIn Amount of wrapped tokens that would be deposited into the buffer\n */\n function queryAddLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 exactSharesToIssue\n ) external returns (uint256 amountUnderlyingIn, uint256 amountWrappedIn);\n\n /**\n * @notice Queries an `removeLiquidityFromBuffer` operation without actually executing it.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param exactSharesToRemove The amount of shares that would be burned, in underlying token decimals\n * @return removedUnderlyingBalanceOut Amount of underlying tokens that would be removed from the buffer\n * @return removedWrappedBalanceOut Amount of wrapped tokens that would be removed from the buffer\n */\n function queryRemoveLiquidityFromBuffer(\n IERC4626 wrappedToken,\n uint256 exactSharesToRemove\n ) external returns (uint256 removedUnderlyingBalanceOut, uint256 removedWrappedBalanceOut);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\ninterface IERC20MultiTokenErrors {\n /**\n * @notice The total supply of a pool token can't be lower than the absolute minimum.\n * @param totalSupply The total supply value that was below the minimum\n */\n error PoolTotalSupplyTooLow(uint256 totalSupply);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n// Explicitly import VaultTypes structs because we expect this interface to be heavily used by external developers.\n// Internally, when this list gets too long, we usually just do a simple import to keep things tidy.\nimport {\n TokenConfig,\n LiquidityManagement,\n PoolSwapParams,\n AfterSwapParams,\n HookFlags,\n AddLiquidityKind,\n RemoveLiquidityKind,\n SwapKind\n} from \"./VaultTypes.sol\";\n\n/**\n * @notice Interface for pool hooks.\n * @dev Hooks are functions invoked by the Vault at specific points in the flow of each operation. This guarantees that\n * they are called in the correct order, and with the correct arguments. To maintain this security, these functions\n * should only be called by the Vault. The recommended way to do this is to derive the hook contract from `BaseHooks`,\n * then use the `onlyVault` modifier from `VaultGuard`. (See the examples in /pool-hooks.)\n */\ninterface IHooks {\n /***************************************************************************\n Register\n ***************************************************************************/\n\n /**\n * @notice Hook executed when a pool is registered with a non-zero hooks contract.\n * @dev Returns true if registration was successful, and false to revert the pool registration.\n * Make sure this function is properly implemented (e.g. check the factory, and check that the\n * given pool is from the factory). The Vault address will be msg.sender.\n *\n * @param factory Address of the pool factory (contract deploying the pool)\n * @param pool Address of the pool\n * @param tokenConfig An array of descriptors for the tokens the pool will manage\n * @param liquidityManagement Liquidity management flags indicating which functions are enabled\n * @return success True if the hook allowed the registration, false otherwise\n */\n function onRegister(\n address factory,\n address pool,\n TokenConfig[] memory tokenConfig,\n LiquidityManagement calldata liquidityManagement\n ) external returns (bool success);\n\n /**\n * @notice Return the set of hooks implemented by the contract.\n * @dev The Vault will only call hooks the pool says it supports, and of course only if a hooks contract is defined\n * (i.e., the `poolHooksContract` in `PoolRegistrationParams` is non-zero).\n * `onRegister` is the only \"mandatory\" hook.\n *\n * @return hookFlags Flags indicating which hooks the contract supports\n */\n function getHookFlags() external view returns (HookFlags memory hookFlags);\n\n /***************************************************************************\n Initialize\n ***************************************************************************/\n\n /**\n * @notice Hook executed before pool initialization.\n * @dev Called if the `shouldCallBeforeInitialize` flag is set in the configuration. Hook contracts should use\n * the `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param exactAmountsIn Exact amounts of input tokens\n * @param userData Optional, arbitrary data sent with the encoded request\n * @return success True if the pool wishes to proceed with initialization\n */\n function onBeforeInitialize(uint256[] memory exactAmountsIn, bytes memory userData) external returns (bool success);\n\n /**\n * @notice Hook to be executed after pool initialization.\n * @dev Called if the `shouldCallAfterInitialize` flag is set in the configuration. Hook contracts should use\n * the `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param exactAmountsIn Exact amounts of input tokens\n * @param bptAmountOut Amount of pool tokens minted during initialization\n * @param userData Optional, arbitrary data sent with the encoded request\n * @return success True if the pool accepts the initialization results\n */\n function onAfterInitialize(\n uint256[] memory exactAmountsIn,\n uint256 bptAmountOut,\n bytes memory userData\n ) external returns (bool success);\n\n /***************************************************************************\n Add Liquidity\n ***************************************************************************/\n\n /**\n * @notice Hook to be executed before adding liquidity.\n * @dev Called if the `shouldCallBeforeAddLiquidity` flag is set in the configuration. Hook contracts should use\n * the `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param router The address (usually a router contract) that initiated an add liquidity operation on the Vault\n * @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n * @param kind The add liquidity operation type (e.g., proportional, custom)\n * @param maxAmountsInScaled18 Maximum amounts of input tokens\n * @param minBptAmountOut Minimum amount of output pool tokens\n * @param balancesScaled18 Current pool balances, sorted in token registration order\n * @param userData Optional, arbitrary data sent with the encoded request\n * @return success True if the pool wishes to proceed with settlement\n */\n function onBeforeAddLiquidity(\n address router,\n address pool,\n AddLiquidityKind kind,\n uint256[] memory maxAmountsInScaled18,\n uint256 minBptAmountOut,\n uint256[] memory balancesScaled18,\n bytes memory userData\n ) external returns (bool success);\n\n /**\n * @notice Hook to be executed after adding liquidity.\n * @dev Called if the `shouldCallAfterAddLiquidity` flag is set in the configuration. The Vault will ignore\n * `hookAdjustedAmountsInRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the\n * `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param router The address (usually a router contract) that initiated an add liquidity operation on the Vault\n * @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n * @param kind The add liquidity operation type (e.g., proportional, custom)\n * @param amountsInScaled18 Actual amounts of tokens added, sorted in token registration order\n * @param amountsInRaw Actual amounts of tokens added, sorted in token registration order\n * @param bptAmountOut Amount of pool tokens minted\n * @param balancesScaled18 Current pool balances, sorted in token registration order\n * @param userData Additional (optional) data provided by the user\n * @return success True if the pool wishes to proceed with settlement\n * @return hookAdjustedAmountsInRaw New amountsInRaw, potentially modified by the hook\n */\n function onAfterAddLiquidity(\n address router,\n address pool,\n AddLiquidityKind kind,\n uint256[] memory amountsInScaled18,\n uint256[] memory amountsInRaw,\n uint256 bptAmountOut,\n uint256[] memory balancesScaled18,\n bytes memory userData\n ) external returns (bool success, uint256[] memory hookAdjustedAmountsInRaw);\n\n /***************************************************************************\n Remove Liquidity\n ***************************************************************************/\n\n /**\n * @notice Hook to be executed before removing liquidity.\n * @dev Called if the `shouldCallBeforeRemoveLiquidity` flag is set in the configuration. Hook contracts should use\n * the `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param router The address (usually a router contract) that initiated a remove liquidity operation on the Vault\n * @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n * @param kind The type of remove liquidity operation (e.g., proportional, custom)\n * @param maxBptAmountIn Maximum amount of input pool tokens\n * @param minAmountsOutScaled18 Minimum output amounts, sorted in token registration order\n * @param balancesScaled18 Current pool balances, sorted in token registration order\n * @param userData Optional, arbitrary data sent with the encoded request\n * @return success True if the pool wishes to proceed with settlement\n */\n function onBeforeRemoveLiquidity(\n address router,\n address pool,\n RemoveLiquidityKind kind,\n uint256 maxBptAmountIn,\n uint256[] memory minAmountsOutScaled18,\n uint256[] memory balancesScaled18,\n bytes memory userData\n ) external returns (bool success);\n\n /**\n * @notice Hook to be executed after removing liquidity.\n * @dev Called if the `shouldCallAfterRemoveLiquidity` flag is set in the configuration. The Vault will ignore\n * `hookAdjustedAmountsOutRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the\n * `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param router The address (usually a router contract) that initiated a remove liquidity operation on the Vault\n * @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n * @param kind The type of remove liquidity operation (e.g., proportional, custom)\n * @param bptAmountIn Amount of pool tokens to burn\n * @param amountsOutScaled18 Scaled amount of tokens to receive, sorted in token registration order\n * @param amountsOutRaw Actual amount of tokens to receive, sorted in token registration order\n * @param balancesScaled18 Current pool balances, sorted in token registration order\n * @param userData Additional (optional) data provided by the user\n * @return success True if the pool wishes to proceed with settlement\n * @return hookAdjustedAmountsOutRaw New amountsOutRaw, potentially modified by the hook\n */\n function onAfterRemoveLiquidity(\n address router,\n address pool,\n RemoveLiquidityKind kind,\n uint256 bptAmountIn,\n uint256[] memory amountsOutScaled18,\n uint256[] memory amountsOutRaw,\n uint256[] memory balancesScaled18,\n bytes memory userData\n ) external returns (bool success, uint256[] memory hookAdjustedAmountsOutRaw);\n\n /***************************************************************************\n Swap\n ***************************************************************************/\n\n /**\n * @notice Called before a swap to give the Pool an opportunity to perform actions.\n * @dev Called if the `shouldCallBeforeSwap` flag is set in the configuration. Hook contracts should use the\n * `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param params Swap parameters (see PoolSwapParams for struct definition)\n * @param pool Pool address, used to get pool information from the Vault (poolData, token config, etc.)\n * @return success True if the pool wishes to proceed with settlement\n */\n function onBeforeSwap(PoolSwapParams calldata params, address pool) external returns (bool success);\n\n /**\n * @notice Called after a swap to perform further actions once the balances have been updated by the swap.\n * @dev Called if the `shouldCallAfterSwap` flag is set in the configuration. The Vault will ignore\n * `hookAdjustedAmountCalculatedRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should\n * use the `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param params Swap parameters (see above for struct definition)\n * @return success True if the pool wishes to proceed with settlement\n * @return hookAdjustedAmountCalculatedRaw New amount calculated, potentially modified by the hook\n */\n function onAfterSwap(\n AfterSwapParams calldata params\n ) external returns (bool success, uint256 hookAdjustedAmountCalculatedRaw);\n\n /**\n * @notice Called after `onBeforeSwap` and before the main swap operation, if the pool has dynamic fees.\n * @dev Called if the `shouldCallComputeDynamicSwapFee` flag is set in the configuration. Hook contracts should use\n * the `onlyVault` modifier to guarantee this is only called by the Vault.\n *\n * @param params Swap parameters (see PoolSwapParams for struct definition)\n * @param pool Pool address, used to get pool information from the Vault (poolData, token config, etc.)\n * @param staticSwapFeePercentage 18-decimal FP value of the static swap fee percentage, for reference\n * @return success True if the pool wishes to proceed with settlement\n * @return dynamicSwapFeePercentage Value of the swap fee percentage, as an 18-decimal FP value\n */\n function onComputeDynamicSwapFeePercentage(\n PoolSwapParams calldata params,\n address pool,\n uint256 staticSwapFeePercentage\n ) external view returns (bool success, uint256 dynamicSwapFeePercentage);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/// @notice Interface for custom liquidity operations.\ninterface IPoolLiquidity {\n /**\n * @notice Add liquidity to the pool with a custom hook.\n * @param router The address (usually a router contract) that initiated a swap operation on the Vault\n * @param maxAmountsInScaled18 Maximum input amounts, sorted in token registration order\n * @param minBptAmountOut Minimum amount of output pool tokens\n * @param balancesScaled18 Current pool balances, sorted in token registration order\n * @param userData Arbitrary data sent with the encoded request\n * @return amountsInScaled18 Input token amounts, sorted in token registration order\n * @return bptAmountOut Calculated pool token amount to receive\n * @return swapFeeAmountsScaled18 The amount of swap fees charged for each token\n * @return returnData Arbitrary data with an encoded response from the pool\n */\n function onAddLiquidityCustom(\n address router,\n uint256[] memory maxAmountsInScaled18,\n uint256 minBptAmountOut,\n uint256[] memory balancesScaled18,\n bytes memory userData\n )\n external\n returns (\n uint256[] memory amountsInScaled18,\n uint256 bptAmountOut,\n uint256[] memory swapFeeAmountsScaled18,\n bytes memory returnData\n );\n\n /**\n * @notice Remove liquidity from the pool with a custom hook.\n * @param router The address (usually a router contract) that initiated a swap operation on the Vault\n * @param maxBptAmountIn Maximum amount of input pool tokens\n * @param minAmountsOutScaled18 Minimum output amounts, sorted in token registration order\n * @param balancesScaled18 Current pool balances, sorted in token registration order\n * @param userData Arbitrary data sent with the encoded request\n * @return bptAmountIn Calculated pool token amount to burn\n * @return amountsOutScaled18 Amount of tokens to receive, sorted in token registration order\n * @return swapFeeAmountsScaled18 The amount of swap fees charged for each token\n * @return returnData Arbitrary data with an encoded response from the pool\n */\n function onRemoveLiquidityCustom(\n address router,\n uint256 maxBptAmountIn,\n uint256[] memory minAmountsOutScaled18,\n uint256[] memory balancesScaled18,\n bytes memory userData\n )\n external\n returns (\n uint256 bptAmountIn,\n uint256[] memory amountsOutScaled18,\n uint256[] memory swapFeeAmountsScaled18,\n bytes memory returnData\n );\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IVault } from \"./IVault.sol\";\n\n/// @notice Contract that handles protocol and pool creator fees for the Vault.\ninterface IProtocolFeeController {\n /**\n * @notice Emitted when the protocol swap fee percentage is updated.\n * @param swapFeePercentage The updated protocol swap fee percentage\n */\n event GlobalProtocolSwapFeePercentageChanged(uint256 swapFeePercentage);\n\n /**\n * @notice Emitted when the protocol yield fee percentage is updated.\n * @param yieldFeePercentage The updated protocol yield fee percentage\n */\n event GlobalProtocolYieldFeePercentageChanged(uint256 yieldFeePercentage);\n\n /**\n * @notice Emitted when the protocol swap fee percentage is updated for a specific pool.\n * @param pool The pool whose protocol swap fee will be changed\n * @param swapFeePercentage The updated protocol swap fee percentage\n */\n event ProtocolSwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage);\n\n /**\n * @notice Emitted when the protocol yield fee percentage is updated for a specific pool.\n * @param pool The pool whose protocol yield fee will be changed\n * @param yieldFeePercentage The updated protocol yield fee percentage\n */\n event ProtocolYieldFeePercentageChanged(address indexed pool, uint256 yieldFeePercentage);\n\n /**\n * @notice Emitted when the pool creator swap fee percentage of a pool is updated.\n * @param pool The pool whose pool creator swap fee will be changed\n * @param poolCreatorSwapFeePercentage The new pool creator swap fee percentage for the pool\n */\n event PoolCreatorSwapFeePercentageChanged(address indexed pool, uint256 poolCreatorSwapFeePercentage);\n\n /**\n * @notice Emitted when the pool creator yield fee percentage of a pool is updated.\n * @param pool The pool whose pool creator yield fee will be changed\n * @param poolCreatorYieldFeePercentage The new pool creator yield fee percentage for the pool\n */\n event PoolCreatorYieldFeePercentageChanged(address indexed pool, uint256 poolCreatorYieldFeePercentage);\n\n /**\n * @notice Logs the collection of protocol swap fees in a specific token and amount.\n * @dev Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs\n * in the Vault, but fee collection happens in the ProtocolFeeController, the swap fees reported here may encompass\n * multiple operations.\n *\n * @param pool The pool on which the swap fee was charged\n * @param token The token in which the swap fee was charged\n * @param amount The amount of the token collected in fees\n */\n event ProtocolSwapFeeCollected(address indexed pool, IERC20 indexed token, uint256 amount);\n\n /**\n * @notice Logs the collection of protocol yield fees in a specific token and amount.\n * @dev Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs\n * in the Vault, but fee collection happens in the ProtocolFeeController, the yield fees reported here may encompass\n * multiple operations.\n *\n * @param pool The pool on which the yield fee was charged\n * @param token The token in which the yield fee was charged\n * @param amount The amount of the token collected in fees\n */\n event ProtocolYieldFeeCollected(address indexed pool, IERC20 indexed token, uint256 amount);\n\n /**\n * @notice Logs the withdrawal of protocol fees in a specific token and amount.\n * @param pool The pool from which protocol fees are being withdrawn\n * @param token The token being withdrawn\n * @param recipient The recipient of the funds\n * @param amount The amount of the fee token that was withdrawn\n */\n event ProtocolFeesWithdrawn(address indexed pool, IERC20 indexed token, address indexed recipient, uint256 amount);\n\n /**\n * @notice Logs the withdrawal of pool creator fees in a specific token and amount.\n * @param pool The pool from which pool creator fees are being withdrawn\n * @param token The token being withdrawn\n * @param recipient The recipient of the funds (the pool creator if permissionless, or another account)\n * @param amount The amount of the fee token that was withdrawn\n */\n event PoolCreatorFeesWithdrawn(\n address indexed pool,\n IERC20 indexed token,\n address indexed recipient,\n uint256 amount\n );\n\n /**\n * @notice Error raised when the protocol swap fee percentage exceeds the maximum allowed value.\n * @dev Note that this is checked for both the global and pool-specific protocol swap fee percentages.\n */\n error ProtocolSwapFeePercentageTooHigh();\n\n /**\n * @notice Error raised when the protocol yield fee percentage exceeds the maximum allowed value.\n * @dev Note that this is checked for both the global and pool-specific protocol yield fee percentages.\n */\n error ProtocolYieldFeePercentageTooHigh();\n\n /**\n * @notice Error raised if there is no pool creator on a withdrawal attempt from the given pool.\n * @param pool The pool with no creator\n */\n error PoolCreatorNotRegistered(address pool);\n\n /**\n * @notice Error raised if the wrong account attempts to withdraw pool creator fees.\n * @param caller The account attempting to withdraw pool creator fees\n * @param pool The pool the caller tried to withdraw from\n */\n error CallerIsNotPoolCreator(address caller, address pool);\n\n /// @notice Error raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value.\n error PoolCreatorFeePercentageTooHigh();\n\n /**\n * @notice Get the address of the main Vault contract.\n * @return vault The Vault address\n */\n function vault() external view returns (IVault);\n\n /**\n * @notice Collects aggregate fees from the Vault for a given pool.\n * @param pool The pool with aggregate fees\n */\n function collectAggregateFees(address pool) external;\n\n /**\n * @notice Getter for the current global protocol swap fee.\n * @return protocolSwapFeePercentage The global protocol swap fee percentage\n */\n function getGlobalProtocolSwapFeePercentage() external view returns (uint256 protocolSwapFeePercentage);\n\n /**\n * @notice Getter for the current global protocol yield fee.\n * @return protocolYieldFeePercentage The global protocol yield fee percentage\n */\n function getGlobalProtocolYieldFeePercentage() external view returns (uint256 protocolYieldFeePercentage);\n\n /**\n * @notice Getter for the current protocol swap fee for a given pool.\n * @param pool The address of the pool\n * @return protocolSwapFeePercentage The global protocol swap fee percentage\n * @return isOverride True if the protocol fee has been overridden\n */\n function getPoolProtocolSwapFeeInfo(\n address pool\n ) external view returns (uint256 protocolSwapFeePercentage, bool isOverride);\n\n /**\n * @notice Getter for the current protocol yield fee for a given pool.\n * @param pool The address of the pool\n * @return protocolYieldFeePercentage The global protocol yield fee percentage\n * @return isOverride True if the protocol fee has been overridden\n */\n function getPoolProtocolYieldFeeInfo(\n address pool\n ) external view returns (uint256 protocolYieldFeePercentage, bool isOverride);\n\n /**\n * @notice Returns the amount of each pool token allocated to the protocol for withdrawal.\n * @dev Includes both swap and yield fees.\n * @param pool The address of the pool on which fees were collected\n * @return feeAmounts The total amounts of each token available for withdrawal, sorted in token registration order\n */\n function getProtocolFeeAmounts(address pool) external view returns (uint256[] memory feeAmounts);\n\n /**\n * @notice Returns the amount of each pool token allocated to the pool creator for withdrawal.\n * @dev Includes both swap and yield fees.\n * @param pool The address of the pool on which fees were collected\n * @return feeAmounts The total amounts of each token available for withdrawal, sorted in token registration order\n */\n function getPoolCreatorFeeAmounts(address pool) external view returns (uint256[] memory feeAmounts);\n\n /**\n * @notice Returns a calculated aggregate percentage from protocol and pool creator fee percentages.\n * @dev Not tied to any particular pool; this just performs the low-level \"additive fee\" calculation. Note that\n * pool creator fees are calculated based on creatorAndLpFees, and not in totalFees. Since aggregate fees are\n * stored in the Vault with 24-bit precision, this will truncate any values that require greater precision.\n * It is expected that pool creators will negotiate with the DAO and agree on reasonable values for these fee\n * components, but the truncation ensures it will not revert for any valid set of fee percentages.\n *\n * See example below:\n *\n * tokenOutAmount = 10000; poolSwapFeePct = 10%; protocolFeePct = 40%; creatorFeePct = 60%\n * totalFees = tokenOutAmount * poolSwapFeePct = 10000 * 10% = 1000\n * protocolFees = totalFees * protocolFeePct = 1000 * 40% = 400\n * creatorAndLpFees = totalFees - protocolFees = 1000 - 400 = 600\n * creatorFees = creatorAndLpFees * creatorFeePct = 600 * 60% = 360\n * lpFees (will stay in the pool) = creatorAndLpFees - creatorFees = 600 - 360 = 240\n *\n * @param protocolFeePercentage The protocol portion of the aggregate fee percentage\n * @param poolCreatorFeePercentage The pool creator portion of the aggregate fee percentage\n * @return aggregateFeePercentage The computed aggregate percentage\n */\n function computeAggregateFeePercentage(\n uint256 protocolFeePercentage,\n uint256 poolCreatorFeePercentage\n ) external pure returns (uint256 aggregateFeePercentage);\n\n /**\n * @notice Override the protocol swap fee percentage for a specific pool.\n * @dev This is a permissionless call, and will set the pool's fee to the current global fee, if it is different\n * from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\n *\n * @param pool The pool for which we are setting the protocol swap fee\n */\n function updateProtocolSwapFeePercentage(address pool) external;\n\n /**\n * @notice Override the protocol yield fee percentage for a specific pool.\n * @dev This is a permissionless call, and will set the pool's fee to the current global fee, if it is different\n * from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\n *\n * @param pool The pool for which we are setting the protocol yield fee\n */\n function updateProtocolYieldFeePercentage(address pool) external;\n\n /***************************************************************************\n Permissioned Functions\n ***************************************************************************/\n\n /**\n * @notice Add pool-specific entries to the protocol swap and yield percentages.\n * @dev This must be called from the Vault during pool registration. It will initialize the pool to the global\n * protocol fee percentage values (or 0, if the `protocolFeeExempt` flags is set), and return the initial aggregate\n * fee percentages, based on an initial pool creator fee of 0.\n *\n * @param pool The address of the pool being registered\n * @param poolCreator The address of the pool creator (or 0 if there won't be a pool creator fee)\n * @param protocolFeeExempt If true, the pool is initially exempt from protocol fees\n * @return aggregateSwapFeePercentage The initial aggregate swap fee percentage\n * @return aggregateYieldFeePercentage The initial aggregate yield fee percentage\n */\n function registerPool(\n address pool,\n address poolCreator,\n bool protocolFeeExempt\n ) external returns (uint256 aggregateSwapFeePercentage, uint256 aggregateYieldFeePercentage);\n\n /**\n * @notice Set the global protocol swap fee percentage, used by standard pools.\n * @param newProtocolSwapFeePercentage The new protocol swap fee percentage\n */\n function setGlobalProtocolSwapFeePercentage(uint256 newProtocolSwapFeePercentage) external;\n\n /**\n * @notice Set the global protocol yield fee percentage, used by standard pools.\n * @param newProtocolYieldFeePercentage The new protocol yield fee percentage\n */\n function setGlobalProtocolYieldFeePercentage(uint256 newProtocolYieldFeePercentage) external;\n\n /**\n * @notice Override the protocol swap fee percentage for a specific pool.\n * @param pool The address of the pool for which we are setting the protocol swap fee\n * @param newProtocolSwapFeePercentage The new protocol swap fee percentage for the pool\n */\n function setProtocolSwapFeePercentage(address pool, uint256 newProtocolSwapFeePercentage) external;\n\n /**\n * @notice Override the protocol yield fee percentage for a specific pool.\n * @param pool The address of the pool for which we are setting the protocol yield fee\n * @param newProtocolYieldFeePercentage The new protocol yield fee percentage for the pool\n */\n function setProtocolYieldFeePercentage(address pool, uint256 newProtocolYieldFeePercentage) external;\n\n /**\n * @notice Assigns a new pool creator swap fee percentage to the specified pool.\n * @dev Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to\n * the \"net\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the\n * pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\n *\n * @param pool The address of the pool for which the pool creator fee will be changed\n * @param poolCreatorSwapFeePercentage The new pool creator swap fee percentage to apply to the pool\n */\n function setPoolCreatorSwapFeePercentage(address pool, uint256 poolCreatorSwapFeePercentage) external;\n\n /**\n * @notice Assigns a new pool creator yield fee percentage to the specified pool.\n * @dev Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to\n * the \"net\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the\n * pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\n *\n * @param pool The address of the pool for which the pool creator fee will be changed\n * @param poolCreatorYieldFeePercentage The new pool creator yield fee percentage to apply to the pool\n */\n function setPoolCreatorYieldFeePercentage(address pool, uint256 poolCreatorYieldFeePercentage) external;\n\n /**\n * @notice Withdraw collected protocol fees for a given pool (all tokens). This is a permissioned function.\n * @dev Sends swap and yield protocol fees to the recipient.\n * @param pool The pool on which fees were collected\n * @param recipient Address to send the tokens\n */\n function withdrawProtocolFees(address pool, address recipient) external;\n\n /**\n * @notice Withdraw collected protocol fees for a given pool and a given token. This is a permissioned function.\n * @dev Sends swap and yield protocol fees to the recipient.\n * @param pool The pool on which fees were collected\n * @param recipient Address to send the tokens\n * @param token Token to withdraw\n */\n function withdrawProtocolFeesForToken(address pool, address recipient, IERC20 token) external;\n\n /**\n * @notice Withdraw collected pool creator fees for a given pool. This is a permissioned function.\n * @dev Sends swap and yield pool creator fees to the recipient.\n * @param pool The pool on which fees were collected\n * @param recipient Address to send the tokens\n */\n function withdrawPoolCreatorFees(address pool, address recipient) external;\n\n /**\n * @notice Withdraw collected pool creator fees for a given pool.\n * @dev Sends swap and yield pool creator fees to the registered poolCreator. Since this is a known and immutable\n * value, this function is permissionless.\n *\n * @param pool The pool on which fees were collected\n */\n function withdrawPoolCreatorFees(address pool) external;\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { AddLiquidityKind, RemoveLiquidityKind, SwapKind } from \"./VaultTypes.sol\";\n\n/// @notice User-friendly interface to basic Vault operations: swap, add/remove liquidity, and associated queries.\ninterface IRouter {\n /***************************************************************************\n Pool Initialization\n ***************************************************************************/\n\n /**\n * @notice Data for the pool initialization hook.\n * @param sender Account originating the pool initialization operation\n * @param pool Address of the liquidity pool\n * @param tokens Pool tokens, in token registration order\n * @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n * @param minBptAmountOut Minimum amount of pool tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to add initial liquidity\n */\n struct InitializeHookParams {\n address sender;\n address pool;\n IERC20[] tokens;\n uint256[] exactAmountsIn;\n uint256 minBptAmountOut;\n bool wethIsEth;\n bytes userData;\n }\n\n /**\n * @notice Initialize a liquidity pool.\n * @param pool Address of the liquidity pool\n * @param tokens Pool tokens, in token registration order\n * @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n * @param minBptAmountOut Minimum amount of pool tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to add initial liquidity\n * @return bptAmountOut Actual amount of pool tokens minted in exchange for initial liquidity\n */\n function initialize(\n address pool,\n IERC20[] memory tokens,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256 bptAmountOut);\n\n /***************************************************************************\n Add Liquidity\n ***************************************************************************/\n\n /**\n * @notice Adds liquidity to a pool with proportional token amounts, receiving an exact amount of pool tokens.\n * @param pool Address of the liquidity pool\n * @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n * @param exactBptAmountOut Exact amount of pool tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to add liquidity\n * @return amountsIn Actual amounts of tokens added, sorted in token registration order\n */\n function addLiquidityProportional(\n address pool,\n uint256[] memory maxAmountsIn,\n uint256 exactBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256[] memory amountsIn);\n\n /**\n * @notice Adds liquidity to a pool with arbitrary token amounts.\n * @param pool Address of the liquidity pool\n * @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n * @param minBptAmountOut Minimum amount of pool tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to add liquidity\n * @return bptAmountOut Actual amount of pool tokens received\n */\n function addLiquidityUnbalanced(\n address pool,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256 bptAmountOut);\n\n /**\n * @notice Adds liquidity to a pool in a single token, receiving an exact amount of pool tokens.\n * @param pool Address of the liquidity pool\n * @param tokenIn Token used to add liquidity\n * @param maxAmountIn Maximum amount of tokens to be added\n * @param exactBptAmountOut Exact amount of pool tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to add liquidity\n * @return amountIn Actual amount of tokens added\n */\n function addLiquiditySingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n uint256 maxAmountIn,\n uint256 exactBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256 amountIn);\n\n /**\n * @notice Adds liquidity to a pool by donating the amounts in (no BPT out).\n * @dev To support donation, the pool config `enableDonation` flag must be set to true.\n * @param pool Address of the liquidity pool\n * @param amountsIn Amounts of tokens to be donated, sorted in token registration order\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to donate liquidity\n */\n function donate(address pool, uint256[] memory amountsIn, bool wethIsEth, bytes memory userData) external payable;\n\n /**\n * @notice Adds liquidity to a pool with a custom request.\n * @dev The given maximum and minimum amounts given may be interpreted as exact depending on the pool type.\n * In any case the caller can expect them to be hard boundaries for the request.\n *\n * @param pool Address of the liquidity pool\n * @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n * @param minBptAmountOut Minimum amount of pool tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to add liquidity\n * @return amountsIn Actual amounts of tokens added, sorted in token registration order\n * @return bptAmountOut Actual amount of pool tokens received\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function addLiquidityCustom(\n address pool,\n uint256[] memory maxAmountsIn,\n uint256 minBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData);\n\n /***************************************************************************\n Remove Liquidity\n ***************************************************************************/\n\n /**\n * @notice Removes liquidity with proportional token amounts from a pool, burning an exact pool token amount.\n * @param pool Address of the liquidity pool\n * @param exactBptAmountIn Exact amount of pool tokens provided\n * @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to remove liquidity\n * @return amountsOut Actual amounts of tokens received, sorted in token registration order\n */\n function removeLiquidityProportional(\n address pool,\n uint256 exactBptAmountIn,\n uint256[] memory minAmountsOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256[] memory amountsOut);\n\n /**\n * @notice Removes liquidity from a pool via a single token, burning an exact pool token amount.\n * @param pool Address of the liquidity pool\n * @param exactBptAmountIn Exact amount of pool tokens provided\n * @param tokenOut Token used to remove liquidity\n * @param minAmountOut Minimum amount of tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to remove liquidity\n * @return amountOut Actual amount of tokens received\n */\n function removeLiquiditySingleTokenExactIn(\n address pool,\n uint256 exactBptAmountIn,\n IERC20 tokenOut,\n uint256 minAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256 amountOut);\n\n /**\n * @notice Removes liquidity from a pool via a single token, specifying the exact amount of tokens to receive.\n * @param pool Address of the liquidity pool\n * @param maxBptAmountIn Maximum amount of pool tokens provided\n * @param tokenOut Token used to remove liquidity\n * @param exactAmountOut Exact amount of tokens to be received\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to remove liquidity\n * @return bptAmountIn Actual amount of pool tokens burned\n */\n function removeLiquiditySingleTokenExactOut(\n address pool,\n uint256 maxBptAmountIn,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256 bptAmountIn);\n\n /**\n * @notice Removes liquidity from a pool with a custom request.\n * @dev The given maximum and minimum amounts given may be interpreted as exact depending on the pool type.\n * In any case the caller can expect them to be hard boundaries for the request.\n *\n * @param pool Address of the liquidity pool\n * @param maxBptAmountIn Maximum amount of pool tokens provided\n * @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to remove liquidity\n * @return bptAmountIn Actual amount of pool tokens burned\n * @return amountsOut Actual amounts of tokens received, sorted in token registration order\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function removeLiquidityCustom(\n address pool,\n uint256 maxBptAmountIn,\n uint256[] memory minAmountsOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData);\n\n /**\n * @notice Removes liquidity proportionally, burning an exact pool token amount. Only available in Recovery Mode.\n * @param pool Address of the liquidity pool\n * @param exactBptAmountIn Exact amount of pool tokens provided\n * @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n * @return amountsOut Actual amounts of tokens received, sorted in token registration order\n */\n function removeLiquidityRecovery(\n address pool,\n uint256 exactBptAmountIn,\n uint256[] memory minAmountsOut\n ) external payable returns (uint256[] memory amountsOut);\n\n /***************************************************************************\n Swaps\n ***************************************************************************/\n\n /**\n * @notice Data for the swap hook.\n * @param sender Account initiating the swap operation\n * @param kind Type of swap (exact in or exact out)\n * @param pool Address of the liquidity pool\n * @param tokenIn Token to be swapped from\n * @param tokenOut Token to be swapped to\n * @param amountGiven Amount given based on kind of the swap (e.g., tokenIn for exact in)\n * @param limit Maximum or minimum amount based on the kind of swap (e.g., maxAmountIn for exact out)\n * @param deadline Deadline for the swap, after which it will revert\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the swap request\n */\n struct SwapSingleTokenHookParams {\n address sender;\n SwapKind kind;\n address pool;\n IERC20 tokenIn;\n IERC20 tokenOut;\n uint256 amountGiven;\n uint256 limit;\n uint256 deadline;\n bool wethIsEth;\n bytes userData;\n }\n\n /**\n * @notice Executes a swap operation specifying an exact input token amount.\n * @param pool Address of the liquidity pool\n * @param tokenIn Token to be swapped from\n * @param tokenOut Token to be swapped to\n * @param exactAmountIn Exact amounts of input tokens to send\n * @param minAmountOut Minimum amount of tokens to be received\n * @param deadline Deadline for the swap, after which it will revert\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the swap request\n * @return amountOut Calculated amount of output tokens to be received in exchange for the given input tokens\n */\n function swapSingleTokenExactIn(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountIn,\n uint256 minAmountOut,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n ) external payable returns (uint256 amountOut);\n\n /**\n * @notice Executes a swap operation specifying an exact output token amount.\n * @param pool Address of the liquidity pool\n * @param tokenIn Token to be swapped from\n * @param tokenOut Token to be swapped to\n * @param exactAmountOut Exact amounts of input tokens to receive\n * @param maxAmountIn Maximum amount of tokens to be sent\n * @param deadline Deadline for the swap, after which it will revert\n * @param userData Additional (optional) data sent with the swap request\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @return amountIn Calculated amount of input tokens to be sent in exchange for the requested output tokens\n */\n function swapSingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n uint256 maxAmountIn,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n ) external payable returns (uint256 amountIn);\n\n /***************************************************************************\n Queries\n ***************************************************************************/\n\n /**\n * @notice Queries an `addLiquidityProportional` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param exactBptAmountOut Exact amount of pool tokens to be received\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return amountsIn Expected amounts of tokens to add, sorted in token registration order\n */\n function queryAddLiquidityProportional(\n address pool,\n uint256 exactBptAmountOut,\n address sender,\n bytes memory userData\n ) external returns (uint256[] memory amountsIn);\n\n /**\n * @notice Queries an `addLiquidityUnbalanced` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return bptAmountOut Expected amount of pool tokens to receive\n */\n function queryAddLiquidityUnbalanced(\n address pool,\n uint256[] memory exactAmountsIn,\n address sender,\n bytes memory userData\n ) external returns (uint256 bptAmountOut);\n\n /**\n * @notice Queries an `addLiquiditySingleTokenExactOut` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param tokenIn Token used to add liquidity\n * @param exactBptAmountOut Expected exact amount of pool tokens to receive\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return amountIn Expected amount of tokens to add\n */\n function queryAddLiquiditySingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n uint256 exactBptAmountOut,\n address sender,\n bytes memory userData\n ) external returns (uint256 amountIn);\n\n /**\n * @notice Queries an `addLiquidityCustom` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n * @param minBptAmountOut Expected minimum amount of pool tokens to receive\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return amountsIn Expected amounts of tokens to add, sorted in token registration order\n * @return bptAmountOut Expected amount of pool tokens to receive\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function queryAddLiquidityCustom(\n address pool,\n uint256[] memory maxAmountsIn,\n uint256 minBptAmountOut,\n address sender,\n bytes memory userData\n ) external returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData);\n\n /**\n * @notice Queries a `removeLiquidityProportional` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param exactBptAmountIn Exact amount of pool tokens provided for the query\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return amountsOut Expected amounts of tokens to receive, sorted in token registration order\n */\n function queryRemoveLiquidityProportional(\n address pool,\n uint256 exactBptAmountIn,\n address sender,\n bytes memory userData\n ) external returns (uint256[] memory amountsOut);\n\n /**\n * @notice Queries a `removeLiquiditySingleTokenExactIn` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param exactBptAmountIn Exact amount of pool tokens provided for the query\n * @param tokenOut Token used to remove liquidity\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return amountOut Expected amount of tokens to receive\n */\n function queryRemoveLiquiditySingleTokenExactIn(\n address pool,\n uint256 exactBptAmountIn,\n IERC20 tokenOut,\n address sender,\n bytes memory userData\n ) external returns (uint256 amountOut);\n\n /**\n * @notice Queries a `removeLiquiditySingleTokenExactOut` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param tokenOut Token used to remove liquidity\n * @param exactAmountOut Expected exact amount of tokens to receive\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return bptAmountIn Expected amount of pool tokens to burn\n */\n function queryRemoveLiquiditySingleTokenExactOut(\n address pool,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n address sender,\n bytes memory userData\n ) external returns (uint256 bptAmountIn);\n\n /**\n * @notice Queries a `removeLiquidityCustom` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param maxBptAmountIn Maximum amount of pool tokens provided\n * @param minAmountsOut Expected minimum amounts of tokens to receive, sorted in token registration order\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return bptAmountIn Expected amount of pool tokens to burn\n * @return amountsOut Expected amounts of tokens to receive, sorted in token registration order\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function queryRemoveLiquidityCustom(\n address pool,\n uint256 maxBptAmountIn,\n uint256[] memory minAmountsOut,\n address sender,\n bytes memory userData\n ) external returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData);\n\n /**\n * @notice Queries a `removeLiquidityRecovery` operation without actually executing it.\n * @param pool Address of the liquidity pool\n * @param exactBptAmountIn Exact amount of pool tokens provided for the query\n * @return amountsOut Expected amounts of tokens to receive, sorted in token registration order\n */\n function queryRemoveLiquidityRecovery(\n address pool,\n uint256 exactBptAmountIn\n ) external returns (uint256[] memory amountsOut);\n\n /**\n * @notice Queries a swap operation specifying an exact input token amount without actually executing it.\n * @param pool Address of the liquidity pool\n * @param tokenIn Token to be swapped from\n * @param tokenOut Token to be swapped to\n * @param exactAmountIn Exact amounts of input tokens to send\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return amountOut Calculated amount of output tokens to be received in exchange for the given input tokens\n */\n function querySwapSingleTokenExactIn(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountIn,\n address sender,\n bytes calldata userData\n ) external returns (uint256 amountOut);\n\n /**\n * @notice Queries a swap operation specifying an exact output token amount without actually executing it.\n * @param pool Address of the liquidity pool\n * @param tokenIn Token to be swapped from\n * @param tokenOut Token to be swapped to\n * @param exactAmountOut Exact amounts of input tokens to receive\n * @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n * @param userData Additional (optional) data sent with the query request\n * @return amountIn Calculated amount of input tokens to be sent in exchange for the requested output tokens\n */\n function querySwapSingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n address sender,\n bytes calldata userData\n ) external returns (uint256 amountIn);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IAllowanceTransfer } from \"permit2/src/interfaces/IAllowanceTransfer.sol\";\nimport { AddLiquidityKind, RemoveLiquidityKind } from \"./VaultTypes.sol\";\n\n/// @notice Interface for functions shared between the `Router` and `BatchRouter`.\ninterface IRouterCommon {\n /**\n * @notice Data for the add liquidity hook.\n * @param sender Account originating the add liquidity operation\n * @param pool Address of the liquidity pool\n * @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n * @param minBptAmountOut Minimum amount of pool tokens to be received\n * @param kind Type of join (e.g., single or multi-token)\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to add liquidity\n */\n struct AddLiquidityHookParams {\n address sender;\n address pool;\n uint256[] maxAmountsIn;\n uint256 minBptAmountOut;\n AddLiquidityKind kind;\n bool wethIsEth;\n bytes userData;\n }\n\n /**\n * @notice Data for the remove liquidity hook.\n * @param sender Account originating the remove liquidity operation\n * @param pool Address of the liquidity pool\n * @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n * @param maxBptAmountIn Maximum amount of pool tokens provided\n * @param kind Type of exit (e.g., single or multi-token)\n * @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n * @param userData Additional (optional) data sent with the request to remove liquidity\n */\n struct RemoveLiquidityHookParams {\n address sender;\n address pool;\n uint256[] minAmountsOut;\n uint256 maxBptAmountIn;\n RemoveLiquidityKind kind;\n bool wethIsEth;\n bytes userData;\n }\n\n /**\n * @notice Get the first sender which initialized the call to Router.\n * @return sender The address of the sender\n */\n function getSender() external view returns (address sender);\n\n /*******************************************************************************\n Utils\n *******************************************************************************/\n\n struct PermitApproval {\n address token;\n address owner;\n address spender;\n uint256 amount;\n uint256 nonce;\n uint256 deadline;\n }\n\n /**\n * @notice Permits multiple allowances and executes a batch of function calls on this contract.\n * @param permitBatch An array of `PermitApproval` structs, each representing an ERC20 permit request\n * @param permitSignatures An array of bytes, corresponding to the permit request signature in `permitBatch`\n * @param permit2Batch A batch of permit2 approvals\n * @param permit2Signature A permit2 signature for the batch approval\n * @param multicallData An array of bytes arrays, each representing an encoded function call on this contract\n * @return results Array of bytes arrays, each representing the return data from each function call executed\n */\n function permitBatchAndCall(\n PermitApproval[] calldata permitBatch,\n bytes[] calldata permitSignatures,\n IAllowanceTransfer.PermitBatch calldata permit2Batch,\n bytes calldata permit2Signature,\n bytes[] calldata multicallData\n ) external payable returns (bytes[] memory results);\n\n /**\n * @notice Executes a batch of function calls on this contract.\n * @param data Encoded function calls to be executed in the batch.\n * @return results Array of bytes arrays, each representing the return data from each function call executed.\n */\n function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/**\n * @notice Return the minimum/maximum swap fee percentages for a pool.\n * @dev The Vault does not enforce bounds on swap fee percentages; `IBasePool` implements this interface to ensure\n * that new pool developers think about and set these bounds according to their specific pool type.\n *\n * A minimum swap fee might be necessary to ensure mathematical soundness (e.g., Weighted Pools, which use the power\n * function in the invariant). A maximum swap fee is general protection for users. With no limits at the Vault level,\n * a pool could specify a near 100% swap fee, effectively disabling trading. Though there are some use cases, such as\n * LVR/MEV strategies, where a very high fee makes sense.\n *\n * Note that the Vault does ensure that dynamic and aggregate fees are less than 100% to prevent attempting to allocate\n * more fees than were collected by the operation. The true `MAX_FEE_PERCENTAGE` is defined in VaultTypes.sol, and is\n * the highest value below 100% that satisfies the precision requirements.\n */\ninterface ISwapFeePercentageBounds {\n /// @return minimumSwapFeePercentage The minimum swap fee percentage for a pool\n function getMinimumSwapFeePercentage() external view returns (uint256 minimumSwapFeePercentage);\n\n /// @return maximumSwapFeePercentage The maximum swap fee percentage for a pool\n function getMaximumSwapFeePercentage() external view returns (uint256 maximumSwapFeePercentage);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/**\n * @notice Return the minimum/maximum invariant ratios allowed during an unbalanced liquidity operation.\n * @dev The Vault does not enforce any \"baseline\" bounds on invariant ratios, since such bounds are highly specific\n * and dependent on the math of each pool type. Instead, the Vault reads invariant ratio bounds from the pools.\n * `IBasePool` implements this interface to ensure that new pool developers think about and set these bounds according\n * to their pool type's math.\n *\n * For instance, Balancer Weighted Pool math involves exponentiation (the `pow` function), which uses natural\n * logarithms and a discrete Taylor series expansion to compute x^y values for the 18-decimal floating point numbers\n * used in all Vault computations. See `LogExpMath` and `WeightedMath` for a derivation of the bounds for these pools.\n */\ninterface IUnbalancedLiquidityInvariantRatioBounds {\n /// @return minimumInvariantRatio The minimum invariant ratio for a pool during unbalanced remove liquidity\n function getMinimumInvariantRatio() external view returns (uint256 minimumInvariantRatio);\n\n /// @return maximumInvariantRatio The maximum invariant ratio for a pool during unbalanced add liquidity\n function getMaximumInvariantRatio() external view returns (uint256 maximumInvariantRatio);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IAuthentication } from \"../solidity-utils/helpers/IAuthentication.sol\";\nimport { IVaultExtension } from \"./IVaultExtension.sol\";\nimport { IVaultErrors } from \"./IVaultErrors.sol\";\nimport { IVaultEvents } from \"./IVaultEvents.sol\";\nimport { IVaultAdmin } from \"./IVaultAdmin.sol\";\nimport { IVaultMain } from \"./IVaultMain.sol\";\n\n/// @notice Composite interface for all Vault operations: swap, add/remove liquidity, and associated queries.\ninterface IVault is IVaultMain, IVaultExtension, IVaultAdmin, IVaultErrors, IVaultEvents, IAuthentication {\n /// @return vault The main Vault address.\n function vault() external view override(IVaultAdmin, IVaultExtension) returns (IVault);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\n\nimport { IProtocolFeeController } from \"./IProtocolFeeController.sol\";\nimport { IAuthorizer } from \"./IAuthorizer.sol\";\nimport { IVault } from \"./IVault.sol\";\n\n/**\n * @notice Interface for functions defined on the `VaultAdmin` contract.\n * @dev `VaultAdmin` is the Proxy extension of `VaultExtension`, and handles the least critical operations,\n * as two delegate calls add gas to each call. Most of the permissioned calls are here.\n */\ninterface IVaultAdmin {\n /*******************************************************************************\n Constants and immutables\n *******************************************************************************/\n\n /**\n * @notice Returns the main Vault address.\n * @dev The main Vault contains the entrypoint and main liquidity operation implementations.\n * @return vault The address of the main Vault\n */\n function vault() external view returns (IVault);\n\n /**\n * @notice Returns the Vault's pause window end time.\n * @dev This value is immutable, and represents the timestamp after which the Vault can no longer be paused\n * by governance. Balancer timestamps are 32 bits.\n *\n * @return pauseWindowEndTime The timestamp when the Vault's pause window ends\n */\n function getPauseWindowEndTime() external view returns (uint32 pauseWindowEndTime);\n\n /**\n * @notice Returns the Vault's buffer period duration.\n * @dev This value is immutable. It represents the period during which, if paused, the Vault will remain paused.\n * This ensures there is time available to address whatever issue caused the Vault to be paused. Balancer\n * timestamps are 32 bits.\n *\n * @return bufferPeriodDuration The length of the buffer period in seconds\n */\n function getBufferPeriodDuration() external view returns (uint32 bufferPeriodDuration);\n\n /**\n * @notice Returns the Vault's buffer period end time.\n * @dev This value is immutable. If already paused, the Vault can be unpaused until this timestamp. Balancer\n * timestamps are 32 bits.\n *\n * @return bufferPeriodEndTime The timestamp after which the Vault remains permanently unpaused\n */\n function getBufferPeriodEndTime() external view returns (uint32 bufferPeriodEndTime);\n\n /**\n * @notice Get the minimum number of tokens in a pool.\n * @dev We expect the vast majority of pools to be 2-token.\n * @return minTokens The minimum token count of a pool\n */\n function getMinimumPoolTokens() external pure returns (uint256 minTokens);\n\n /**\n * @notice Get the maximum number of tokens in a pool.\n * @return maxTokens The maximum token count of a pool\n */\n function getMaximumPoolTokens() external pure returns (uint256 maxTokens);\n\n /**\n * @notice Get the minimum total supply of pool tokens (BPT) for an initialized pool.\n * @dev This prevents pools from being completely drained. When the pool is initialized, this minimum amount of BPT\n * is minted to the zero address. This is an 18-decimal floating point number; BPT are always 18 decimals.\n *\n * @return poolMinimumTotalSupply The minimum total supply a pool can have after initialization\n */\n function getPoolMinimumTotalSupply() external pure returns (uint256 poolMinimumTotalSupply);\n\n /**\n * @notice Get the minimum total supply of an ERC4626 wrapped token buffer in the Vault.\n * @dev This prevents buffers from being completely drained. When the buffer is initialized, this minimum number\n * of shares is added to the shares resulting from the initial deposit. Buffer total supply accounting is internal\n * to the Vault, as buffers are not tokenized.\n *\n * @return bufferMinimumTotalSupply The minimum total supply a buffer can have after initialization\n */\n function getBufferMinimumTotalSupply() external pure returns (uint256 bufferMinimumTotalSupply);\n\n /**\n * @notice Get the minimum trade amount in a pool operation.\n * @dev This limit is applied to the 18-decimal \"upscaled\" amount in any operation (swap, add/remove liquidity).\n * @return minimumTradeAmount The minimum trade amount as an 18-decimal floating point number\n */\n function getMinimumTradeAmount() external view returns (uint256 minimumTradeAmount);\n\n /**\n * @notice Get the minimum wrap amount in a buffer operation.\n * @dev This limit is applied to the wrap operation amount, in native underlying token decimals.\n * @return minimumWrapAmount The minimum wrap amount in native underlying token decimals\n */\n function getMinimumWrapAmount() external view returns (uint256 minimumWrapAmount);\n\n /*******************************************************************************\n Vault Pausing\n *******************************************************************************/\n\n /**\n * @notice Indicates whether the Vault is paused.\n * @dev If the Vault is paused, all non-Recovery Mode state-changing operations on pools will revert. Note that\n * ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not\n * also pause buffers (though we anticipate they would likely be paused and unpaused together). Call\n * `areBuffersPaused` to check the pause state of the buffers.\n *\n * @return vaultPaused True if the Vault is paused\n */\n function isVaultPaused() external view returns (bool vaultPaused);\n\n /**\n * @notice Returns the paused status, and end times of the Vault's pause window and buffer period.\n * @dev Balancer timestamps are 32 bits.\n * @return vaultPaused True if the Vault is paused\n * @return vaultPauseWindowEndTime The timestamp of the end of the Vault's pause window\n * @return vaultBufferPeriodEndTime The timestamp of the end of the Vault's buffer period\n */\n function getVaultPausedState()\n external\n view\n returns (bool vaultPaused, uint32 vaultPauseWindowEndTime, uint32 vaultBufferPeriodEndTime);\n\n /**\n * @notice Pause the Vault: an emergency action which disables all operational state-changing functions on pools.\n * @dev This is a permissioned function that will only work during the Pause Window set during deployment.\n * Note that ERC4626 buffer operations have an independent pause mechanism, which is not affected by pausing\n * the Vault. Custom routers could still wrap/unwrap using buffers while the Vault is paused, unless buffers\n * are also paused (with `pauseVaultBuffers`).\n */\n function pauseVault() external;\n\n /**\n * @notice Reverse a `pause` operation, and restore Vault pool operations to normal functionality.\n * @dev This is a permissioned function that will only work on a paused Vault within the Buffer Period set during\n * deployment. Note that the Vault will automatically unpause after the Buffer Period expires. As noted above,\n * ERC4626 buffers and Vault operations on pools are independent. Unpausing the Vault does not reverse\n * `pauseVaultBuffers`. If buffers were also paused, they will remain in that state until explicitly unpaused.\n */\n function unpauseVault() external;\n\n /*******************************************************************************\n Pool Pausing\n *******************************************************************************/\n\n /**\n * @notice Pause the Pool: an emergency action which disables all pool functions.\n * @dev This is a permissioned function that will only work during the Pause Window set during pool factory\n * deployment.\n *\n * @param pool The pool being paused\n */\n function pausePool(address pool) external;\n\n /**\n * @notice Reverse a `pause` operation, and restore the Pool to normal functionality.\n * @dev This is a permissioned function that will only work on a paused Pool within the Buffer Period set during\n * deployment. Note that the Pool will automatically unpause after the Buffer Period expires.\n *\n * @param pool The pool being unpaused\n */\n function unpausePool(address pool) external;\n\n /*******************************************************************************\n Fees\n *******************************************************************************/\n\n /**\n * @notice Assigns a new static swap fee percentage to the specified pool.\n * @dev This is a permissioned function, disabled if the pool is paused. The swap fee percentage must be within\n * the bounds specified by the pool's implementation of `ISwapFeePercentageBounds`.\n * Emits the SwapFeePercentageChanged event.\n *\n * @param pool The address of the pool for which the static swap fee will be changed\n * @param swapFeePercentage The new swap fee percentage to apply to the pool\n */\n function setStaticSwapFeePercentage(address pool, uint256 swapFeePercentage) external;\n\n /**\n * @notice Collects accumulated aggregate swap and yield fees for the specified pool.\n * @dev Fees are sent to the ProtocolFeeController address.\n * @param pool The pool on which all aggregate fees should be collected\n * @return swapFeeAmounts An array with the total swap fees collected, sorted in token registration order\n * @return yieldFeeAmounts An array with the total yield fees collected, sorted in token registration order\n */\n function collectAggregateFees(\n address pool\n ) external returns (uint256[] memory swapFeeAmounts, uint256[] memory yieldFeeAmounts);\n\n /**\n * @notice Update an aggregate swap fee percentage.\n * @dev Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee\n * for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's\n * fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also\n * that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol).\n * Emits an `AggregateSwapFeePercentageChanged` event.\n *\n * @param pool The pool whose swap fee percentage will be updated\n * @param newAggregateSwapFeePercentage The new aggregate swap fee percentage\n */\n function updateAggregateSwapFeePercentage(address pool, uint256 newAggregateSwapFeePercentage) external;\n\n /**\n * @notice Update an aggregate yield fee percentage.\n * @dev Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee\n * for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's\n * fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also\n * that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol).\n * Emits an `AggregateYieldFeePercentageChanged` event.\n *\n * @param pool The pool whose yield fee percentage will be updated\n * @param newAggregateYieldFeePercentage The new aggregate yield fee percentage\n */\n function updateAggregateYieldFeePercentage(address pool, uint256 newAggregateYieldFeePercentage) external;\n\n /**\n * @notice Sets a new Protocol Fee Controller for the Vault.\n * @dev This is a permissioned call. Emits a `ProtocolFeeControllerChanged` event.\n * @param newProtocolFeeController The address of the new Protocol Fee Controller\n */\n function setProtocolFeeController(IProtocolFeeController newProtocolFeeController) external;\n\n /*******************************************************************************\n Recovery Mode\n *******************************************************************************/\n\n /**\n * @notice Enable recovery mode for a pool.\n * @dev This is a permissioned function. It enables a safe proportional withdrawal, with no external calls.\n * Since there are no external calls, ensuring that entering Recovery Mode cannot fail, we cannot compute and so\n * must forfeit any yield fees between the last operation and enabling Recovery Mode. For the same reason, live\n * balances cannot be updated while in Recovery Mode, as doing so might cause withdrawals to fail.\n *\n * @param pool The address of the pool\n */\n function enableRecoveryMode(address pool) external;\n\n /**\n * @notice Disable recovery mode for a pool.\n * @dev This is a permissioned function. It re-syncs live balances (which could not be updated during\n * Recovery Mode), forfeiting any yield fees that accrued while enabled. It makes external calls, and could\n * potentially fail if there is an issue with any associated Rate Providers.\n *\n * @param pool The address of the pool\n */\n function disableRecoveryMode(address pool) external;\n\n /*******************************************************************************\n Query Functionality\n *******************************************************************************/\n\n /**\n * @notice Disables query functionality on the Vault. Can only be called by governance.\n * @dev The query functions rely on a specific EVM feature to detect static calls. Query operations are exempt from\n * settlement constraints, so it's critical that no state changes can occur. We retain the ability to disable\n * queries in the unlikely event that EVM changes violate its assumptions (perhaps on an L2).\n * This function can be acted upon as an emergency measure in ambiguous contexts where it's not 100% clear whether\n * disabling queries is completely necessary; queries can still be re-enabled after this call.\n */\n function disableQuery() external;\n\n /**\n * @notice Disables query functionality permanently on the Vault. Can only be called by governance.\n * @dev Shall only be used when there is no doubt that queries pose a fundamental threat to the system.\n */\n function disableQueryPermanently() external;\n\n /**\n * @notice Enables query functionality on the Vault. Can only be called by governance.\n * @dev Only works if queries are not permanently disabled.\n */\n function enableQuery() external;\n\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /**\n * @notice Indicates whether the Vault buffers are paused.\n * @dev When buffers are paused, all buffer operations (i.e., calls on the Router with `isBuffer` true)\n * will revert. Pausing buffers is reversible. Note that ERC4626 buffers and the Vault have separate and\n * independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they\n * would likely be paused and unpaused together). Call `isVaultPaused` to check the pause state of the Vault.\n *\n * @return buffersPaused True if the Vault buffers are paused\n */\n function areBuffersPaused() external view returns (bool buffersPaused);\n\n /**\n * @notice Pauses native vault buffers globally.\n * @dev When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's\n * `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. Currently it's not\n * possible to pause vault buffers individually.\n *\n * This is a permissioned call, and is reversible (see `unpauseVaultBuffers`). Note that the Vault has a separate\n * and independent pausing mechanism. It is possible to pause the Vault (i.e. pool operations), without affecting\n * buffers, and vice versa.\n */\n function pauseVaultBuffers() external;\n\n /**\n * @notice Unpauses native vault buffers globally.\n * @dev When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's\n * `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. As noted above,\n * ERC4626 buffers and Vault operations on pools are independent. Unpausing buffers does not reverse `pauseVault`.\n * If the Vault was also paused, it will remain in that state until explicitly unpaused.\n *\n * This is a permissioned call.\n */\n function unpauseVaultBuffers() external;\n\n /**\n * @notice Initializes buffer for the given wrapped token.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param amountUnderlyingRaw Amount of underlying tokens that will be deposited into the buffer\n * @param amountWrappedRaw Amount of wrapped tokens that will be deposited into the buffer\n * @param minIssuedShares Minimum amount of shares to receive from the buffer, expressed in underlying token\n * native decimals\n * @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to remove\n * liquidity from the buffer\n * @return issuedShares the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts.\n * (it is the BPT of an internal ERC4626 buffer). It is expressed in underlying token native decimals.\n */\n function initializeBuffer(\n IERC4626 wrappedToken,\n uint256 amountUnderlyingRaw,\n uint256 amountWrappedRaw,\n uint256 minIssuedShares,\n address sharesOwner\n ) external returns (uint256 issuedShares);\n\n /**\n * @notice Adds liquidity to an internal ERC4626 buffer in the Vault, proportionally.\n * @dev The buffer needs to be initialized beforehand.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param maxAmountUnderlyingInRaw Maximum amount of underlying tokens to add to the buffer. It is expressed in\n * underlying token native decimals\n * @param maxAmountWrappedInRaw Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped\n * token native decimals\n * @param exactSharesToIssue The value in underlying tokens that `sharesOwner` wants to add to the buffer,\n * in underlying token decimals\n * @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to remove\n * liquidity from the buffer\n * @return amountUnderlyingRaw Amount of underlying tokens deposited into the buffer\n * @return amountWrappedRaw Amount of wrapped tokens deposited into the buffer\n */\n function addLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 maxAmountUnderlyingInRaw,\n uint256 maxAmountWrappedInRaw,\n uint256 exactSharesToIssue,\n address sharesOwner\n ) external returns (uint256 amountUnderlyingRaw, uint256 amountWrappedRaw);\n\n /**\n * @notice Removes liquidity from an internal ERC4626 buffer in the Vault.\n * @dev Only proportional exits are supported, and the sender has to be the owner of the shares.\n * This function unlocks the Vault just for this operation; it does not work with a Router as an entrypoint.\n *\n * Pre-conditions:\n * - The buffer needs to be initialized.\n * - sharesOwner is the original msg.sender, it needs to be checked in the Router. That's why\n * this call is authenticated; only routers approved by the DAO can remove the liquidity of a buffer.\n * - The buffer needs to have some liquidity and have its asset registered in `_bufferAssets` storage.\n *\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param sharesToRemove Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's\n * total shares. It is expressed in underlying token native decimals\n * @param minAmountUnderlyingOutRaw Minimum amount of underlying tokens to receive from the buffer. It is expressed\n * in underlying token native decimals\n * @param minAmountWrappedOutRaw Minimum amount of wrapped tokens to receive from the buffer. It is expressed in\n * wrapped token native decimals\n * @return removedUnderlyingBalanceRaw Amount of underlying tokens returned to the user\n * @return removedWrappedBalanceRaw Amount of wrapped tokens returned to the user\n */\n function removeLiquidityFromBuffer(\n IERC4626 wrappedToken,\n uint256 sharesToRemove,\n uint256 minAmountUnderlyingOutRaw,\n uint256 minAmountWrappedOutRaw\n ) external returns (uint256 removedUnderlyingBalanceRaw, uint256 removedWrappedBalanceRaw);\n\n /**\n * @notice Returns the asset registered for a given wrapped token.\n * @dev The asset can never change after buffer initialization.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @return underlyingToken Address of the underlying token registered for the wrapper; `address(0)` if the buffer\n * has not been initialized.\n */\n function getBufferAsset(IERC4626 wrappedToken) external view returns (address underlyingToken);\n\n /**\n * @notice Returns the shares (internal buffer BPT) of a liquidity owner: a user that deposited assets\n * in the buffer.\n *\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param liquidityOwner Address of the user that owns liquidity in the wrapped token's buffer\n * @return ownerShares Amount of shares allocated to the liquidity owner, in native underlying token decimals\n */\n function getBufferOwnerShares(\n IERC4626 wrappedToken,\n address liquidityOwner\n ) external view returns (uint256 ownerShares);\n\n /**\n * @notice Returns the supply shares (internal buffer BPT) of the ERC4626 buffer.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @return bufferShares Amount of supply shares of the buffer, in native underlying token decimals\n */\n function getBufferTotalShares(IERC4626 wrappedToken) external view returns (uint256 bufferShares);\n\n /**\n * @notice Returns the amount of underlying and wrapped tokens deposited in the internal buffer of the Vault.\n * @dev All values are in native token decimals of the wrapped or underlying tokens.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @return underlyingBalanceRaw Amount of underlying tokens deposited into the buffer, in native token decimals\n * @return wrappedBalanceRaw Amount of wrapped tokens deposited into the buffer, in native token decimals\n */\n function getBufferBalance(\n IERC4626 wrappedToken\n ) external view returns (uint256 underlyingBalanceRaw, uint256 wrappedBalanceRaw);\n\n /*******************************************************************************\n Authentication\n *******************************************************************************/\n\n /**\n * @notice Sets a new Authorizer for the Vault.\n * @dev This is a permissioned call. Emits an `AuthorizerChanged` event.\n * @param newAuthorizer The address of the new authorizer\n */\n function setAuthorizer(IAuthorizer newAuthorizer) external;\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/// @notice Errors are declared inside an interface (namespace) to improve DX with Typechain.\ninterface IVaultErrors {\n /*******************************************************************************\n Registration and Initialization\n *******************************************************************************/\n\n /**\n * @notice A pool has already been registered. `registerPool` may only be called once.\n * @param pool The already registered pool\n */\n error PoolAlreadyRegistered(address pool);\n\n /**\n * @notice A pool has already been initialized. `initialize` may only be called once.\n * @param pool The already initialized pool\n */\n error PoolAlreadyInitialized(address pool);\n\n /**\n * @notice A pool has not been registered.\n * @param pool The unregistered pool\n */\n error PoolNotRegistered(address pool);\n\n /**\n * @notice A referenced pool has not been initialized.\n * @param pool The uninitialized pool\n */\n error PoolNotInitialized(address pool);\n\n /**\n * @notice A hook contract rejected a pool on registration.\n * @param poolHooksContract Address of the hook contract that rejected the pool registration\n * @param pool Address of the rejected pool\n * @param poolFactory Address of the pool factory\n */\n error HookRegistrationFailed(address poolHooksContract, address pool, address poolFactory);\n\n /**\n * @notice A token was already registered (i.e., it is a duplicate in the pool).\n * @param token The duplicate token\n */\n error TokenAlreadyRegistered(IERC20 token);\n\n /// @notice The token count is below the minimum allowed.\n error MinTokens();\n\n /// @notice The token count is above the maximum allowed.\n error MaxTokens();\n\n /// @notice Invalid tokens (e.g., zero) cannot be registered.\n error InvalidToken();\n\n /// @notice The token type given in a TokenConfig during pool registration is invalid.\n error InvalidTokenType();\n\n /// @notice The data in a TokenConfig struct is inconsistent or unsupported.\n error InvalidTokenConfiguration();\n\n /// @notice Tokens with more than 18 decimals are not supported.\n error InvalidTokenDecimals();\n\n /**\n * @notice The token list passed into an operation does not match the pool tokens in the pool.\n * @param pool Address of the pool\n * @param expectedToken The correct token at a given index in the pool\n * @param actualToken The actual token found at that index\n */\n error TokensMismatch(address pool, address expectedToken, address actualToken);\n\n /*******************************************************************************\n Transient Accounting\n *******************************************************************************/\n\n /// @notice A transient accounting operation completed with outstanding token deltas.\n error BalanceNotSettled();\n\n /// @notice A user called a Vault function (swap, add/remove liquidity) outside the lock context.\n error VaultIsNotUnlocked();\n\n /// @notice The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\n error DynamicSwapFeeHookFailed();\n\n /// @notice The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\n error BeforeSwapHookFailed();\n\n /// @notice The pool has returned false to the afterSwap hook, indicating the transaction should revert.\n error AfterSwapHookFailed();\n\n /// @notice The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\n error BeforeInitializeHookFailed();\n\n /// @notice The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\n error AfterInitializeHookFailed();\n\n /// @notice The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\n error BeforeAddLiquidityHookFailed();\n\n /// @notice The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\n error AfterAddLiquidityHookFailed();\n\n /// @notice The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\n error BeforeRemoveLiquidityHookFailed();\n\n /// @notice The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\n error AfterRemoveLiquidityHookFailed();\n\n /// @notice An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\n error RouterNotTrusted();\n\n /*******************************************************************************\n Swaps\n *******************************************************************************/\n\n /// @notice The user tried to swap zero tokens.\n error AmountGivenZero();\n\n /// @notice The user attempted to swap a token for itself.\n error CannotSwapSameToken();\n\n /**\n * @notice The user attempted to operate with a token that is not in the pool.\n * @param token The unregistered token\n */\n error TokenNotRegistered(IERC20 token);\n\n /**\n * @notice An amount in or out has exceeded the limit specified in the swap request.\n * @param amount The total amount in or out\n * @param limit The amount of the limit that has been exceeded\n */\n error SwapLimit(uint256 amount, uint256 limit);\n\n /**\n * @notice A hook adjusted amount in or out has exceeded the limit specified in the swap request.\n * @param amount The total amount in or out\n * @param limit The amount of the limit that has been exceeded\n */\n error HookAdjustedSwapLimit(uint256 amount, uint256 limit);\n\n /// @notice The amount given or calculated for an operation is below the minimum limit.\n error TradeAmountTooSmall();\n\n /*******************************************************************************\n Add Liquidity\n *******************************************************************************/\n\n /// @notice Add liquidity kind not supported.\n error InvalidAddLiquidityKind();\n\n /**\n * @notice A required amountIn exceeds the maximum limit specified for the operation.\n * @param tokenIn The incoming token\n * @param amountIn The total token amount in\n * @param maxAmountIn The amount of the limit that has been exceeded\n */\n error AmountInAboveMax(IERC20 tokenIn, uint256 amountIn, uint256 maxAmountIn);\n\n /**\n * @notice A hook adjusted amountIn exceeds the maximum limit specified for the operation.\n * @param tokenIn The incoming token\n * @param amountIn The total token amount in\n * @param maxAmountIn The amount of the limit that has been exceeded\n */\n error HookAdjustedAmountInAboveMax(IERC20 tokenIn, uint256 amountIn, uint256 maxAmountIn);\n\n /**\n * @notice The BPT amount received from adding liquidity is below the minimum specified for the operation.\n * @param amountOut The total BPT amount out\n * @param minAmountOut The amount of the limit that has been exceeded\n */\n error BptAmountOutBelowMin(uint256 amountOut, uint256 minAmountOut);\n\n /// @notice Pool does not support adding liquidity with a customized input.\n error DoesNotSupportAddLiquidityCustom();\n\n /// @notice Pool does not support adding liquidity through donation.\n error DoesNotSupportDonation();\n\n /*******************************************************************************\n Remove Liquidity\n *******************************************************************************/\n\n /// @notice Remove liquidity kind not supported.\n error InvalidRemoveLiquidityKind();\n\n /**\n * @notice The actual amount out is below the minimum limit specified for the operation.\n * @param tokenOut The outgoing token\n * @param amountOut The total BPT amount out\n * @param minAmountOut The amount of the limit that has been exceeded\n */\n error AmountOutBelowMin(IERC20 tokenOut, uint256 amountOut, uint256 minAmountOut);\n\n /**\n * @notice The hook adjusted amount out is below the minimum limit specified for the operation.\n * @param tokenOut The outgoing token\n * @param amountOut The total BPT amount out\n * @param minAmountOut The amount of the limit that has been exceeded\n */\n error HookAdjustedAmountOutBelowMin(IERC20 tokenOut, uint256 amountOut, uint256 minAmountOut);\n\n /**\n * @notice The required BPT amount in exceeds the maximum limit specified for the operation.\n * @param amountIn The total BPT amount in\n * @param maxAmountIn The amount of the limit that has been exceeded\n */\n error BptAmountInAboveMax(uint256 amountIn, uint256 maxAmountIn);\n\n /// @notice Pool does not support removing liquidity with a customized input.\n error DoesNotSupportRemoveLiquidityCustom();\n\n /*******************************************************************************\n Fees\n *******************************************************************************/\n\n /**\n * @notice Error raised when there is an overflow in the fee calculation.\n * @dev This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole\n * (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee\n * percentages in the Vault.\n */\n error ProtocolFeesExceedTotalCollected();\n\n /**\n * @notice Error raised when the swap fee percentage is less than the minimum allowed value.\n * @dev The Vault itself does not impose a universal minimum. Rather, it validates against the\n * range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error\n * if it is below the minimum value returned by the pool.\n *\n * Pools with dynamic fees do not check these limits.\n */\n error SwapFeePercentageTooLow();\n\n /**\n * @notice Error raised when the swap fee percentage is greater than the maximum allowed value.\n * @dev The Vault itself does not impose a universal minimum. Rather, it validates against the\n * range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error\n * if it is above the maximum value returned by the pool.\n *\n * Pools with dynamic fees do not check these limits.\n */\n error SwapFeePercentageTooHigh();\n\n /**\n * @notice Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\n * @dev Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit\n * precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which\n * corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%).\n * Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between\n * the aggregate fee calculated here and that stored in the Vault.\n */\n error FeePrecisionTooHigh();\n\n /// @notice A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\n error PercentageAboveMax();\n\n /*******************************************************************************\n Queries\n *******************************************************************************/\n\n /// @notice A user tried to execute a query operation when they were disabled.\n error QueriesDisabled();\n\n /// @notice An admin tried to re-enable queries, but they were disabled permanently.\n error QueriesDisabledPermanently();\n\n /*******************************************************************************\n Recovery Mode\n *******************************************************************************/\n\n /**\n * @notice Cannot enable recovery mode when already enabled.\n * @param pool The pool\n */\n error PoolInRecoveryMode(address pool);\n\n /**\n * @notice Cannot disable recovery mode when not enabled.\n * @param pool The pool\n */\n error PoolNotInRecoveryMode(address pool);\n\n /*******************************************************************************\n Authentication\n *******************************************************************************/\n\n /**\n * @notice Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\n * @param sender The account attempting to call a permissioned function\n */\n error SenderIsNotVault(address sender);\n\n /*******************************************************************************\n Pausing\n *******************************************************************************/\n\n /// @notice The caller specified a pause window period longer than the maximum.\n error VaultPauseWindowDurationTooLarge();\n\n /// @notice The caller specified a buffer period longer than the maximum.\n error PauseBufferPeriodDurationTooLarge();\n\n /// @notice A user tried to perform an operation while the Vault was paused.\n error VaultPaused();\n\n /// @notice Governance tried to unpause the Vault when it was not paused.\n error VaultNotPaused();\n\n /// @notice Governance tried to pause the Vault after the pause period expired.\n error VaultPauseWindowExpired();\n\n /**\n * @notice A user tried to perform an operation involving a paused Pool.\n * @param pool The paused pool\n */\n error PoolPaused(address pool);\n\n /**\n * @notice Governance tried to unpause the Pool when it was not paused.\n * @param pool The unpaused pool\n */\n error PoolNotPaused(address pool);\n\n /**\n * @notice Governance tried to pause a Pool after the pause period expired.\n * @param pool The pool\n */\n error PoolPauseWindowExpired(address pool);\n\n /*******************************************************************************\n ERC4626 token buffers\n *******************************************************************************/\n\n /**\n * @notice The buffer for the given wrapped token was already initialized.\n * @param wrappedToken The wrapped token corresponding to the buffer\n */\n error BufferAlreadyInitialized(IERC4626 wrappedToken);\n\n /**\n * @notice The buffer for the given wrapped token was not initialized.\n * @param wrappedToken The wrapped token corresponding to the buffer\n */\n error BufferNotInitialized(IERC4626 wrappedToken);\n\n /// @notice The user is trying to remove more than their allocated shares from the buffer.\n error NotEnoughBufferShares();\n\n /**\n * @notice The wrapped token asset does not match the underlying token.\n * @dev This should never happen, but a malicious wrapper contract might not return the correct address.\n * Legitimate wrapper contracts should make the asset a constant or immutable value.\n *\n * @param wrappedToken The wrapped token corresponding to the buffer\n * @param underlyingToken The underlying token returned by `asset`\n */\n error WrongUnderlyingToken(IERC4626 wrappedToken, address underlyingToken);\n\n /**\n * @notice A wrapped token reported the zero address as its underlying token asset.\n * @dev This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to\n * re-initialize the buffer).\n *\n * @param wrappedToken The wrapped token corresponding to the buffer\n */\n error InvalidUnderlyingToken(IERC4626 wrappedToken);\n\n /**\n * @notice The amount given to wrap/unwrap was too small, which can introduce rounding issues.\n * @param wrappedToken The wrapped token corresponding to the buffer\n */\n error WrapAmountTooSmall(IERC4626 wrappedToken);\n\n /// @notice Buffer operation attempted while vault buffers are paused.\n error VaultBuffersArePaused();\n\n /// @notice Buffer shares were minted to the zero address.\n error BufferSharesInvalidReceiver();\n\n /// @notice Buffer shares were burned from the zero address.\n error BufferSharesInvalidOwner();\n\n /**\n * @notice The total supply of a buffer can't be lower than the absolute minimum.\n * @param totalSupply The total supply value that was below the minimum\n */\n error BufferTotalSupplyTooLow(uint256 totalSupply);\n\n /// @dev A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\n error NotEnoughUnderlying(IERC4626 wrappedToken, uint256 expectedUnderlyingAmount, uint256 actualUnderlyingAmount);\n\n /// @dev A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\n error NotEnoughWrapped(IERC4626 wrappedToken, uint256 expectedWrappedAmount, uint256 actualWrappedAmount);\n\n /// @dev Shares issued during initialization are below the requested amount.\n error IssuedSharesBelowMin(uint256 issuedShares, uint256 minIssuedShares);\n\n /*******************************************************************************\n Miscellaneous\n *******************************************************************************/\n\n /// @notice Pool does not support adding / removing liquidity with an unbalanced input.\n error DoesNotSupportUnbalancedLiquidity();\n\n /// @notice The contract should not receive ETH.\n error CannotReceiveEth();\n\n /**\n * @notice The `VaultExtension` contract was called by an account directly.\n * @dev It can only be called by the Vault via delegatecall.\n */\n error NotVaultDelegateCall();\n\n /// @notice The `VaultExtension` contract was configured with an incorrect Vault address.\n error WrongVaultExtensionDeployment();\n\n /// @notice The `ProtocolFeeController` contract was configured with an incorrect Vault address.\n error WrongProtocolFeeControllerDeployment();\n\n /// @notice The `VaultAdmin` contract was configured with an incorrect Vault address.\n error WrongVaultAdminDeployment();\n\n /// @notice Quote reverted with a reserved error code.\n error QuoteResultSpoofed();\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IProtocolFeeController } from \"./IProtocolFeeController.sol\";\nimport { IAuthorizer } from \"./IAuthorizer.sol\";\nimport { IHooks } from \"./IHooks.sol\";\nimport \"./VaultTypes.sol\";\n\n/// @dev Events are declared inside an interface (namespace) to improve DX with Typechain.\ninterface IVaultEvents {\n /**\n * @notice A Pool was registered by calling `registerPool`.\n * @param pool The pool being registered\n * @param factory The factory creating the pool\n * @param tokenConfig An array of descriptors for the tokens the pool will manage\n * @param swapFeePercentage The static swap fee of the pool\n * @param pauseWindowEndTime The pool's pause window end time\n * @param roleAccounts Addresses the Vault will allow to change certain pool settings\n * @param hooksConfig Flags indicating which hooks the pool supports and address of hooks contract\n * @param liquidityManagement Supported liquidity management hook flags\n */\n event PoolRegistered(\n address indexed pool,\n address indexed factory,\n TokenConfig[] tokenConfig,\n uint256 swapFeePercentage,\n uint32 pauseWindowEndTime,\n PoolRoleAccounts roleAccounts,\n HooksConfig hooksConfig,\n LiquidityManagement liquidityManagement\n );\n\n /**\n * @notice A Pool was initialized by calling `initialize`.\n * @param pool The pool being initialized\n */\n event PoolInitialized(address indexed pool);\n\n /**\n * @notice A swap has occurred.\n * @param pool The pool with the tokens being swapped\n * @param tokenIn The token entering the Vault (balance increases)\n * @param tokenOut The token leaving the Vault (balance decreases)\n * @param amountIn Number of tokenIn tokens\n * @param amountOut Number of tokenOut tokens\n * @param swapFeePercentage Swap fee percentage applied (can differ if dynamic)\n * @param swapFeeAmount Swap fee amount paid\n */\n event Swap(\n address indexed pool,\n IERC20 indexed tokenIn,\n IERC20 indexed tokenOut,\n uint256 amountIn,\n uint256 amountOut,\n uint256 swapFeePercentage,\n uint256 swapFeeAmount\n );\n\n /**\n * @notice A wrap operation has occurred.\n * @param wrappedToken The wrapped token address\n * @param depositedUnderlying Number of underlying tokens deposited\n * @param mintedShares Number of shares (wrapped tokens) minted\n * @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)\n */\n event Wrap(\n IERC4626 indexed wrappedToken,\n uint256 depositedUnderlying,\n uint256 mintedShares,\n bytes32 bufferBalances\n );\n\n /**\n * @notice An unwrap operation has occurred.\n * @param wrappedToken The wrapped token address\n * @param burnedShares Number of shares (wrapped tokens) burned\n * @param withdrawnUnderlying Number of underlying tokens withdrawn\n * @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)\n */\n event Unwrap(\n IERC4626 indexed wrappedToken,\n uint256 burnedShares,\n uint256 withdrawnUnderlying,\n bytes32 bufferBalances\n );\n\n /**\n * @notice Liquidity has been added to a pool (including initialization).\n * @param pool The pool with liquidity added\n * @param liquidityProvider The user performing the operation\n * @param kind The add liquidity operation type (e.g., proportional, custom)\n * @param totalSupply The total supply of the pool after the operation\n * @param amountsAddedRaw The amount of each token that was added, sorted in token registration order\n * @param swapFeeAmountsRaw The total swap fees charged, sorted in token registration order\n */\n event LiquidityAdded(\n address indexed pool,\n address indexed liquidityProvider,\n AddLiquidityKind indexed kind,\n uint256 totalSupply,\n uint256[] amountsAddedRaw,\n uint256[] swapFeeAmountsRaw\n );\n\n /**\n * @notice Liquidity has been removed from a pool.\n * @param pool The pool with liquidity removed\n * @param liquidityProvider The user performing the operation\n * @param kind The remove liquidity operation type (e.g., proportional, custom)\n * @param totalSupply The total supply of the pool after the operation\n * @param amountsRemovedRaw The amount of each token that was removed, sorted in token registration order\n * @param swapFeeAmountsRaw The total swap fees charged, sorted in token registration order\n */\n event LiquidityRemoved(\n address indexed pool,\n address indexed liquidityProvider,\n RemoveLiquidityKind indexed kind,\n uint256 totalSupply,\n uint256[] amountsRemovedRaw,\n uint256[] swapFeeAmountsRaw\n );\n\n /**\n * @notice The Vault's pause status has changed.\n * @param paused True if the Vault was paused\n */\n event VaultPausedStateChanged(bool paused);\n\n /// @notice `disableQuery` has been called on the Vault, disabling query functionality.\n event VaultQueriesDisabled();\n\n /// @notice `enableQuery` has been called on the Vault, enabling query functionality.\n event VaultQueriesEnabled();\n\n /**\n * @notice A Pool's pause status has changed.\n * @param pool The pool that was just paused or unpaused\n * @param paused True if the pool was paused\n */\n event PoolPausedStateChanged(address indexed pool, bool paused);\n\n /**\n * @notice Emitted when the swap fee percentage of a pool is updated.\n * @param swapFeePercentage The new swap fee percentage for the pool\n */\n event SwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage);\n\n /**\n * @notice Recovery mode has been enabled or disabled for a pool.\n * @param pool The pool\n * @param recoveryMode True if recovery mode was enabled\n */\n event PoolRecoveryModeStateChanged(address indexed pool, bool recoveryMode);\n\n /**\n * @notice A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\n * @dev The `ProtocolFeeController` will emit an event with the underlying change.\n * @param pool The pool whose aggregate swap fee percentage changed\n * @param aggregateSwapFeePercentage The new aggregate swap fee percentage\n */\n event AggregateSwapFeePercentageChanged(address indexed pool, uint256 aggregateSwapFeePercentage);\n\n /**\n * @notice A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\n * @dev The `ProtocolFeeController` will emit an event with the underlying change.\n * @param pool The pool whose aggregate yield fee percentage changed\n * @param aggregateYieldFeePercentage The new aggregate yield fee percentage\n */\n event AggregateYieldFeePercentageChanged(address indexed pool, uint256 aggregateYieldFeePercentage);\n\n /**\n * @notice A new authorizer is set by `setAuthorizer`.\n * @param newAuthorizer The address of the new authorizer\n */\n event AuthorizerChanged(IAuthorizer indexed newAuthorizer);\n\n /**\n * @notice A new protocol fee controller is set by `setProtocolFeeController`.\n * @param newProtocolFeeController The address of the new protocol fee controller\n */\n event ProtocolFeeControllerChanged(IProtocolFeeController indexed newProtocolFeeController);\n\n /**\n * @notice Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\n * @dev The underlying token can be derived from the wrapped token, so it's not included here.\n *\n * @param wrappedToken The wrapped token that identifies the buffer\n * @param amountUnderlying The amount of the underlying token that was deposited\n * @param amountWrapped The amount of the wrapped token that was deposited\n * @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)\n */\n event LiquidityAddedToBuffer(\n IERC4626 indexed wrappedToken,\n uint256 amountUnderlying,\n uint256 amountWrapped,\n bytes32 bufferBalances\n );\n\n /**\n * @notice Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\n * @dev The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares`\n * retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the\n * \"totalSupply\" of a buffer.\n *\n * @param wrappedToken The wrapped token that identifies the buffer\n * @param to The owner of the minted shares\n * @param issuedShares The amount of \"internal BPT\" shares created\n */\n event BufferSharesMinted(IERC4626 indexed wrappedToken, address indexed to, uint256 issuedShares);\n\n /**\n * @notice Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\n * @dev The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares`\n * retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the\n * \"totalSupply\" of a buffer.\n *\n * @param wrappedToken The wrapped token that identifies the buffer\n * @param from The owner of the burned shares\n * @param burnedShares The amount of \"internal BPT\" shares burned\n */\n event BufferSharesBurned(IERC4626 indexed wrappedToken, address indexed from, uint256 burnedShares);\n\n /**\n * @notice Liquidity was removed from an ERC4626 buffer.\n * @dev The underlying token can be derived from the wrapped token, so it's not included here.\n * @param wrappedToken The wrapped token that identifies the buffer\n * @param amountUnderlying The amount of the underlying token that was withdrawn\n * @param amountWrapped The amount of the wrapped token that was withdrawn\n * @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)\n */\n event LiquidityRemovedFromBuffer(\n IERC4626 indexed wrappedToken,\n uint256 amountUnderlying,\n uint256 amountWrapped,\n bytes32 bufferBalances\n );\n\n /**\n * @notice The Vault buffers pause status has changed.\n * @dev If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer`\n * set to true) will revert.\n *\n * @param paused True if the Vault buffers were paused\n */\n event VaultBuffersPausedStateChanged(bool paused);\n\n /**\n * @notice Pools can use this event to emit event data from the Vault.\n * @param pool Pool address\n * @param eventKey Event key\n * @param eventData Encoded event data\n */\n event VaultAuxiliary(address indexed pool, bytes32 indexed eventKey, bytes eventData);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IAuthorizer } from \"./IAuthorizer.sol\";\nimport { IProtocolFeeController } from \"./IProtocolFeeController.sol\";\nimport { IVault } from \"./IVault.sol\";\nimport { IHooks } from \"./IHooks.sol\";\nimport \"./VaultTypes.sol\";\n\n/**\n * @notice Interface for functions defined on the `VaultExtension` contract.\n * @dev `VaultExtension` handles less critical or frequently used functions, since delegate calls through\n * the Vault are more expensive than direct calls. The main Vault contains the core code for swaps and\n * liquidity operations.\n */\ninterface IVaultExtension {\n /*******************************************************************************\n Constants and immutables\n *******************************************************************************/\n\n /**\n * @notice Returns the main Vault address.\n * @dev The main Vault contains the entrypoint and main liquidity operation implementations.\n * @return vault The address of the main Vault\n */\n function vault() external view returns (IVault);\n\n /**\n * @notice Returns the VaultAdmin contract address.\n * @dev The VaultAdmin contract mostly implements permissioned functions.\n * @return vaultAdmin The address of the Vault admin\n */\n function getVaultAdmin() external view returns (address vaultAdmin);\n\n /*******************************************************************************\n Transient Accounting\n *******************************************************************************/\n\n /**\n * @notice Returns whether the Vault is unlocked (i.e., executing an operation).\n * @dev The Vault must be unlocked to perform state-changing liquidity operations.\n * @return unlocked True if the Vault is unlocked, false otherwise\n */\n function isUnlocked() external view returns (bool unlocked);\n\n /**\n * @notice Returns the count of non-zero deltas.\n * @return nonzeroDeltaCount The current value of `_nonzeroDeltaCount`\n */\n function getNonzeroDeltaCount() external view returns (uint256 nonzeroDeltaCount);\n\n /**\n * @notice Retrieves the token delta for a specific token.\n * @dev This function allows reading the value from the `_tokenDeltas` mapping.\n * @param token The token for which the delta is being fetched\n * @return tokenDelta The delta of the specified token\n */\n function getTokenDelta(IERC20 token) external view returns (int256 tokenDelta);\n\n /**\n * @notice Retrieves the reserve (i.e., total Vault balance) of a given token.\n * @param token The token for which to retrieve the reserve\n * @return reserveAmount The amount of reserves for the given token\n */\n function getReservesOf(IERC20 token) external view returns (uint256 reserveAmount);\n\n /**\n * @notice This flag is used to detect and tax \"round-trip\" interactions (adding and removing liquidity in the\n * same pool).\n * @dev Taxing remove liquidity proportional whenever liquidity was added in the same `unlock` call adds an extra\n * layer of security, discouraging operations that try to undo others for profit. Remove liquidity proportional\n * is the only standard way to exit a position without fees, and this flag is used to enable fees in that case.\n * It also discourages indirect swaps via unbalanced add and remove proportional, as they are expected to be worse\n * than a simple swap for every pool type.\n *\n * @param pool Address of the pool to check\n * @return liquidityAdded True if liquidity has been added to this pool in the current transaction\n \n * Note that there is no `sessionId` argument; it always returns the value for the current (i.e., latest) session.\n */\n function getAddLiquidityCalledFlag(address pool) external view returns (bool liquidityAdded);\n\n /*******************************************************************************\n Pool Registration\n *******************************************************************************/\n\n /**\n * @notice Registers a pool, associating it with its factory and the tokens it manages.\n * @dev A pool can opt-out of pausing by providing a zero value for the pause window, or allow pausing indefinitely\n * by providing a large value. (Pool pause windows are not limited by the Vault maximums.) The vault defines an\n * additional buffer period during which a paused pool will stay paused. After the buffer period passes, a paused\n * pool will automatically unpause. Balancer timestamps are 32 bits.\n *\n * A pool can opt out of Balancer governance pausing by providing a custom `pauseManager`. This might be a\n * multi-sig contract or an arbitrary smart contract with its own access controls, that forwards calls to\n * the Vault.\n *\n * If the zero address is provided for the `pauseManager`, permissions for pausing the pool will default to the\n * authorizer.\n *\n * @param pool The address of the pool being registered\n * @param tokenConfig An array of descriptors for the tokens the pool will manage\n * @param swapFeePercentage The initial static swap fee percentage of the pool\n * @param pauseWindowEndTime The timestamp after which it is no longer possible to pause the pool\n * @param protocolFeeExempt If true, the pool's initial aggregate fees will be set to 0\n * @param roleAccounts Addresses the Vault will allow to change certain pool settings\n * @param poolHooksContract Contract that implements the hooks for the pool\n * @param liquidityManagement Liquidity management flags with implemented methods\n */\n function registerPool(\n address pool,\n TokenConfig[] memory tokenConfig,\n uint256 swapFeePercentage,\n uint32 pauseWindowEndTime,\n bool protocolFeeExempt,\n PoolRoleAccounts calldata roleAccounts,\n address poolHooksContract,\n LiquidityManagement calldata liquidityManagement\n ) external;\n\n /**\n * @notice Checks whether a pool is registered.\n * @param pool Address of the pool to check\n * @return registered True if the pool is registered, false otherwise\n */\n function isPoolRegistered(address pool) external view returns (bool registered);\n\n /**\n * @notice Initializes a registered pool by adding liquidity; mints BPT tokens for the first time in exchange.\n * @param pool Address of the pool to initialize\n * @param to Address that will receive the output BPT\n * @param tokens Tokens used to seed the pool (must match the registered tokens)\n * @param exactAmountsIn Exact amounts of input tokens\n * @param minBptAmountOut Minimum amount of output pool tokens\n * @param userData Additional (optional) data required for adding initial liquidity\n * @return bptAmountOut Output pool token amount\n */\n function initialize(\n address pool,\n address to,\n IERC20[] memory tokens,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bytes memory userData\n ) external returns (uint256 bptAmountOut);\n\n /*******************************************************************************\n Pool Information\n *******************************************************************************/\n\n /**\n * @notice Checks whether a pool is initialized.\n * @dev An initialized pool can be considered registered as well.\n * @param pool Address of the pool to check\n * @return initialized True if the pool is initialized, false otherwise\n */\n function isPoolInitialized(address pool) external view returns (bool initialized);\n\n /**\n * @notice Gets the tokens registered to a pool.\n * @param pool Address of the pool\n * @return tokens List of tokens in the pool\n */\n function getPoolTokens(address pool) external view returns (IERC20[] memory tokens);\n\n /**\n * @notice Gets pool token rates.\n * @dev This function performs external calls if tokens are yield-bearing. All returned arrays are in token\n * registration order.\n *\n * @param pool Address of the pool\n * @return decimalScalingFactors Conversion factor used to adjust for token decimals for uniform precision in\n * calculations. FP(1) for 18-decimal tokens\n * @return tokenRates 18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\n */\n function getPoolTokenRates(\n address pool\n ) external view returns (uint256[] memory decimalScalingFactors, uint256[] memory tokenRates);\n\n /**\n * @notice Returns comprehensive pool data for the given pool.\n * @dev This contains the pool configuration (flags), tokens and token types, rates, scaling factors, and balances.\n * @param pool The address of the pool\n * @return poolData The `PoolData` result\n */\n function getPoolData(address pool) external view returns (PoolData memory poolData);\n\n /**\n * @notice Gets the raw data for a pool: tokens, raw balances, scaling factors.\n * @param pool Address of the pool\n * @return tokens The pool tokens, sorted in registration order\n * @return tokenInfo Token info structs (type, rate provider, yield flag), sorted in token registration order\n * @return balancesRaw Current native decimal balances of the pool tokens, sorted in token registration order\n * @return lastBalancesLiveScaled18 Last saved live balances, sorted in token registration order\n */\n function getPoolTokenInfo(\n address pool\n )\n external\n view\n returns (\n IERC20[] memory tokens,\n TokenInfo[] memory tokenInfo,\n uint256[] memory balancesRaw,\n uint256[] memory lastBalancesLiveScaled18\n );\n\n /**\n * @notice Gets current live balances of a given pool (fixed-point, 18 decimals), corresponding to its tokens in\n * registration order.\n *\n * @param pool Address of the pool\n * @return balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n */\n function getCurrentLiveBalances(address pool) external view returns (uint256[] memory balancesLiveScaled18);\n\n /**\n * @notice Gets the configuration parameters of a pool.\n * @dev The `PoolConfig` contains liquidity management and other state flags, fee percentages, the pause window.\n * @param pool Address of the pool\n * @return poolConfig The pool configuration as a `PoolConfig` struct\n */\n function getPoolConfig(address pool) external view returns (PoolConfig memory poolConfig);\n\n /**\n * @notice Gets the hooks configuration parameters of a pool.\n * @dev The `HooksConfig` contains flags indicating which pool hooks are implemented.\n * @param pool Address of the pool\n * @return hooksConfig The hooks configuration as a `HooksConfig` struct\n */\n function getHooksConfig(address pool) external view returns (HooksConfig memory hooksConfig);\n\n /**\n * @notice The current rate of a pool token (BPT) = invariant / totalSupply.\n * @param pool Address of the pool\n * @return rate BPT rate\n */\n function getBptRate(address pool) external view returns (uint256 rate);\n\n /*******************************************************************************\n Balancer Pool Tokens\n *******************************************************************************/\n\n /**\n * @notice Gets the total supply of a given ERC20 token.\n * @param token The token address\n * @return tokenTotalSupply Total supply of the token\n */\n function totalSupply(address token) external view returns (uint256 tokenTotalSupply);\n\n /**\n * @notice Gets the balance of an account for a given ERC20 token.\n * @param token Address of the token\n * @param account Address of the account\n * @return tokenBalance Token balance of the account\n */\n function balanceOf(address token, address account) external view returns (uint256 tokenBalance);\n\n /**\n * @notice Gets the allowance of a spender for a given ERC20 token and owner.\n * @param token Address of the token\n * @param owner Address of the owner\n * @param spender Address of the spender\n * @return tokenAllowance Amount of tokens the spender is allowed to spend\n */\n function allowance(address token, address owner, address spender) external view returns (uint256 tokenAllowance);\n\n /**\n * @notice Approves a spender to spend pool tokens on behalf of sender.\n * @dev Notice that the pool token address is not included in the params. This function is exclusively called by\n * the pool contract, so msg.sender is used as the token address.\n *\n * @param owner Address of the owner\n * @param spender Address of the spender\n * @param amount Amount of tokens to approve\n * @return success True if successful, false otherwise\n */\n function approve(address owner, address spender, uint256 amount) external returns (bool success);\n\n /*******************************************************************************\n Pool Pausing\n *******************************************************************************/\n\n /**\n * @notice Indicates whether a pool is paused.\n * @dev If a pool is paused, all non-Recovery Mode state-changing operations will revert.\n * @param pool The pool to be checked\n * @return poolPaused True if the pool is paused\n */\n function isPoolPaused(address pool) external view returns (bool poolPaused);\n\n /**\n * @notice Returns the paused status, and end times of the Pool's pause window and buffer period.\n * @dev Note that even when set to a paused state, the pool will automatically unpause at the end of\n * the buffer period. Balancer timestamps are 32 bits.\n *\n * @param pool The pool whose data is requested\n * @return poolPaused True if the Pool is paused\n * @return poolPauseWindowEndTime The timestamp of the end of the Pool's pause window\n * @return poolBufferPeriodEndTime The timestamp after which the Pool unpauses itself (if paused)\n * @return pauseManager The pause manager, or the zero address\n */\n function getPoolPausedState(\n address pool\n )\n external\n view\n returns (bool poolPaused, uint32 poolPauseWindowEndTime, uint32 poolBufferPeriodEndTime, address pauseManager);\n\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /**\n * @notice Checks if the wrapped token has an initialized buffer in the Vault.\n * @dev An initialized buffer should have an asset registered in the Vault.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @return isBufferInitialized True if the ERC4626 buffer is initialized\n */\n function isERC4626BufferInitialized(IERC4626 wrappedToken) external view returns (bool isBufferInitialized);\n\n /**\n * @notice Gets the registered asset for a given buffer.\n * @dev To avoid malicious wrappers (e.g., that might potentially change their asset after deployment), routers\n * should never call `wrapper.asset()` directly, at least without checking it against the asset registered with\n * the Vault on initialization.\n *\n * @param wrappedToken The wrapped token specifying the buffer\n * @return asset The underlying asset of the wrapped token\n */\n function getERC4626BufferAsset(IERC4626 wrappedToken) external view returns (address asset);\n\n /*******************************************************************************\n Fees\n *******************************************************************************/\n\n /**\n * @notice Returns the accumulated swap fees (including aggregate fees) in `token` collected by the pool.\n * @param pool The address of the pool for which aggregate fees have been collected\n * @param token The address of the token in which fees have been accumulated\n * @return swapFeeAmount The total amount of fees accumulated in the specified token\n */\n function getAggregateSwapFeeAmount(address pool, IERC20 token) external view returns (uint256 swapFeeAmount);\n\n /**\n * @notice Returns the accumulated yield fees (including aggregate fees) in `token` collected by the pool.\n * @param pool The address of the pool for which aggregate fees have been collected\n * @param token The address of the token in which fees have been accumulated\n * @return yieldFeeAmount The total amount of fees accumulated in the specified token\n */\n function getAggregateYieldFeeAmount(address pool, IERC20 token) external view returns (uint256 yieldFeeAmount);\n\n /**\n * @notice Fetches the static swap fee percentage for a given pool.\n * @param pool The address of the pool whose static swap fee percentage is being queried\n * @return swapFeePercentage The current static swap fee percentage for the specified pool\n */\n function getStaticSwapFeePercentage(address pool) external view returns (uint256 swapFeePercentage);\n\n /**\n * @notice Fetches the role accounts for a given pool (pause manager, swap manager, pool creator)\n * @param pool The address of the pool whose roles are being queried\n * @return roleAccounts A struct containing the role accounts for the pool (or 0 if unassigned)\n */\n function getPoolRoleAccounts(address pool) external view returns (PoolRoleAccounts memory roleAccounts);\n\n /**\n * @notice Query the current dynamic swap fee percentage of a pool, given a set of swap parameters.\n * @dev Reverts if the hook doesn't return the success flag set to `true`.\n * @param pool The pool\n * @param swapParams The swap parameters used to compute the fee\n * @return dynamicSwapFeePercentage The dynamic swap fee percentage\n */\n function computeDynamicSwapFeePercentage(\n address pool,\n PoolSwapParams memory swapParams\n ) external view returns (uint256 dynamicSwapFeePercentage);\n\n /**\n * @notice Returns the Protocol Fee Controller address.\n * @return protocolFeeController Address of the ProtocolFeeController\n */\n function getProtocolFeeController() external view returns (IProtocolFeeController protocolFeeController);\n\n /*******************************************************************************\n Recovery Mode\n *******************************************************************************/\n\n /**\n * @notice Checks whether a pool is in Recovery Mode.\n * @dev Recovery Mode enables a safe proportional withdrawal path, with no external calls.\n * @param pool Address of the pool to check\n * @return inRecoveryMode True if the pool is in Recovery Mode, false otherwise\n */\n function isPoolInRecoveryMode(address pool) external view returns (bool inRecoveryMode);\n\n /**\n * @notice Remove liquidity from a pool specifying exact pool tokens in, with proportional token amounts out.\n * The request is implemented by the Vault without any interaction with the pool, ensuring that\n * it works the same for all pools, and cannot be disabled by a new pool type.\n *\n * @param pool Address of the pool\n * @param from Address of user to burn pool tokens from\n * @param exactBptAmountIn Input pool token amount\n * @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n * @return amountsOut Actual calculated amounts of output tokens, sorted in token registration order\n */\n function removeLiquidityRecovery(\n address pool,\n address from,\n uint256 exactBptAmountIn,\n uint256[] memory minAmountsOut\n ) external returns (uint256[] memory amountsOut);\n\n /*******************************************************************************\n Queries\n *******************************************************************************/\n\n /**\n * @notice Performs a callback on msg.sender with arguments provided in `data`.\n * @dev Used to query a set of operations on the Vault. Only off-chain eth_call are allowed,\n * anything else will revert.\n *\n * Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier.\n *\n * Allows the external calling of a function via the Vault contract to\n * access Vault's functions guarded by `onlyWhenUnlocked`.\n * `transient` modifier ensuring balances changes within the Vault are settled.\n *\n * @param data Contains function signature and args to be passed to the msg.sender\n * @return result Resulting data from the call\n */\n function quote(bytes calldata data) external returns (bytes memory result);\n\n /**\n * @notice Performs a callback on msg.sender with arguments provided in `data`.\n * @dev Used to query a set of operations on the Vault. Only off-chain eth_call are allowed,\n * anything else will revert.\n *\n * Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier.\n *\n * Allows the external calling of a function via the Vault contract to\n * access Vault's functions guarded by `onlyWhenUnlocked`.\n * `transient` modifier ensuring balances changes within the Vault are settled.\n *\n * This call always reverts, returning the result in the revert reason.\n *\n * @param data Contains function signature and args to be passed to the msg.sender\n */\n function quoteAndRevert(bytes calldata data) external;\n\n /**\n * @notice Returns true if queries are disabled on the Vault.\n * @dev If true, queries might either be disabled temporarily or permanently.\n * @return queryDisabled True if query functionality is reversibly disabled\n */\n function isQueryDisabled() external view returns (bool queryDisabled);\n\n /**\n * @notice Returns true if queries are disabled permanently; false if they are enabled.\n * @dev This is a one-way switch. Once queries are disabled permanently, they can never be re-enabled.\n * @return queryDisabledPermanently True if query functionality is permanently disabled\n */\n function isQueryDisabledPermanently() external view returns (bool queryDisabledPermanently);\n\n /**\n * @notice Pools can use this event to emit event data from the Vault.\n * @param eventKey Event key\n * @param eventData Encoded event data\n */\n function emitAuxiliaryEvent(bytes32 eventKey, bytes calldata eventData) external;\n\n /*******************************************************************************\n Authentication\n *******************************************************************************/\n\n /**\n * @notice Returns the Authorizer address.\n * @dev The authorizer holds the permissions granted by governance. It is set on Vault deployment,\n * and can be changed through a permissioned call.\n *\n * @return authorizer Address of the authorizer contract\n */\n function getAuthorizer() external view returns (IAuthorizer authorizer);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./VaultTypes.sol\";\n\n/**\n * @notice Interface for functions defined on the main Vault contract.\n * @dev These are generally \"critical path\" functions (swap, add/remove liquidity) that are in the main contract\n * for technical or performance reasons.\n */\ninterface IVaultMain {\n /*******************************************************************************\n Transient Accounting\n *******************************************************************************/\n\n /**\n * @notice Creates a context for a sequence of operations (i.e., \"unlocks\" the Vault).\n * @dev Performs a callback on msg.sender with arguments provided in `data`. The Callback is `transient`,\n * meaning all balances for the caller have to be settled at the end.\n *\n * @param data Contains function signature and args to be passed to the msg.sender\n * @return result Resulting data from the call\n */\n function unlock(bytes calldata data) external returns (bytes memory result);\n\n /**\n * @notice Settles deltas for a token; must be successful for the current lock to be released.\n * @dev Protects the caller against leftover dust in the Vault for the token being settled. The caller\n * should know in advance how many tokens were paid to the Vault, so it can provide it as a hint to discard any\n * excess in the Vault balance.\n *\n * If the given hint is equal to or higher than the difference in reserves, the difference in reserves is given as\n * credit to the caller. If it's higher, the caller sent fewer tokens than expected, so settlement would fail.\n *\n * If the given hint is lower than the difference in reserves, the hint is given as credit to the caller.\n * In this case, the excess would be absorbed by the Vault (and reflected correctly in the reserves), but would\n * not affect settlement.\n *\n * The credit supplied by the Vault can be calculated as `min(reserveDifference, amountHint)`, where the reserve\n * difference equals current balance of the token minus existing reserves of the token when the function is called.\n *\n * @param token Address of the token\n * @param amountHint Amount paid as reported by the caller\n * @return credit Credit received in return of the payment\n */\n function settle(IERC20 token, uint256 amountHint) external returns (uint256 credit);\n\n /**\n * @notice Sends tokens to a recipient.\n * @dev There is no inverse operation for this function. Transfer funds to the Vault and call `settle` to cancel\n * debts.\n *\n * @param token Address of the token\n * @param to Recipient address\n * @param amount Amount of tokens to send\n */\n function sendTo(IERC20 token, address to, uint256 amount) external;\n\n /***************************************************************************\n Swaps\n ***************************************************************************/\n\n /**\n * @notice Swaps tokens based on provided parameters.\n * @dev All parameters are given in raw token decimal encoding.\n * @param vaultSwapParams Parameters for the swap (see above for struct definition)\n * @return amountCalculatedRaw Calculated swap amount\n * @return amountInRaw Amount of input tokens for the swap\n * @return amountOutRaw Amount of output tokens from the swap\n */\n function swap(\n VaultSwapParams memory vaultSwapParams\n ) external returns (uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw);\n\n /***************************************************************************\n Add Liquidity\n ***************************************************************************/\n\n /**\n * @notice Adds liquidity to a pool.\n * @dev Caution should be exercised when adding liquidity because the Vault has the capability\n * to transfer tokens from any user, given that it holds all allowances.\n *\n * @param params Parameters for the add liquidity (see above for struct definition)\n * @return amountsIn Actual amounts of input tokens\n * @return bptAmountOut Output pool token amount\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function addLiquidity(\n AddLiquidityParams memory params\n ) external returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData);\n\n /***************************************************************************\n Remove Liquidity\n ***************************************************************************/\n\n /**\n * @notice Removes liquidity from a pool.\n * @dev Trusted routers can burn pool tokens belonging to any user and require no prior approval from the user.\n * Untrusted routers require prior approval from the user. This is the only function allowed to call\n * _queryModeBalanceIncrease (and only in a query context).\n *\n * @param params Parameters for the remove liquidity (see above for struct definition)\n * @return bptAmountIn Actual amount of BPT burned\n * @return amountsOut Actual amounts of output tokens\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function removeLiquidity(\n RemoveLiquidityParams memory params\n ) external returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData);\n\n /*******************************************************************************\n Pool Information\n *******************************************************************************/\n\n /**\n * @notice Gets the index of a token in a given pool.\n * @dev Reverts if the pool is not registered, or if the token does not belong to the pool.\n * @param pool Address of the pool\n * @param token Address of the token\n * @return tokenCount Number of tokens in the pool\n * @return index Index corresponding to the given token in the pool's token list\n */\n function getPoolTokenCountAndIndexOfToken(\n address pool,\n IERC20 token\n ) external view returns (uint256 tokenCount, uint256 index);\n\n /*******************************************************************************\n Balancer Pool Tokens\n *******************************************************************************/\n\n /**\n * @notice Transfers pool token from owner to a recipient.\n * @dev Notice that the pool token address is not included in the params. This function is exclusively called by\n * the pool contract, so msg.sender is used as the token address.\n *\n * @param owner Address of the owner\n * @param to Address of the recipient\n * @param amount Amount of tokens to transfer\n * @return success True if successful, false otherwise\n */\n function transfer(address owner, address to, uint256 amount) external returns (bool);\n\n /**\n * @notice Transfers pool token from a sender to a recipient using an allowance.\n * @dev Notice that the pool token address is not included in the params. This function is exclusively called by\n * the pool contract, so msg.sender is used as the token address.\n *\n * @param spender Address allowed to perform the transfer\n * @param from Address of the sender\n * @param to Address of the recipient\n * @param amount Amount of tokens to transfer\n * @return success True if successful, false otherwise\n */\n function transferFrom(address spender, address from, address to, uint256 amount) external returns (bool success);\n\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /**\n * @notice Wraps/unwraps tokens based on the parameters provided.\n * @dev All parameters are given in raw token decimal encoding. It requires the buffer to be initialized,\n * and uses the internal wrapped token buffer when it has enough liquidity to avoid external calls.\n *\n * @param params Parameters for the wrap/unwrap operation (see struct definition)\n * @return amountCalculatedRaw Calculated swap amount\n * @return amountInRaw Amount of input tokens for the swap\n * @return amountOutRaw Amount of output tokens from the swap\n */\n function erc4626BufferWrapOrUnwrap(\n BufferWrapOrUnwrapParams memory params\n ) external returns (uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw);\n\n /*******************************************************************************\n Miscellaneous\n *******************************************************************************/\n\n /**\n * @notice Returns the VaultExtension contract address.\n * @dev Function is in the main Vault contract. The VaultExtension handles less critical or frequently used\n * functions, since delegate calls through the Vault are more expensive than direct calls.\n *\n * @return vaultExtension Address of the VaultExtension\n */\n function getVaultExtension() external view returns (address vaultExtension);\n}\n"},"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\n\nimport { IRateProvider } from \"../solidity-utils/helpers/IRateProvider.sol\";\n\n/**\n * @notice Represents a pool's liquidity management configuration.\n * @param disableUnbalancedLiquidity If set, liquidity can only be added or removed proportionally\n * @param enableAddLiquidityCustom If set, the pool has implemented `onAddLiquidityCustom`\n * @param enableRemoveLiquidityCustom If set, the pool has implemented `onRemoveLiquidityCustom`\n * @param enableDonation If set, the pool will not revert if liquidity is added with AddLiquidityKind.DONATION\n */\nstruct LiquidityManagement {\n bool disableUnbalancedLiquidity;\n bool enableAddLiquidityCustom;\n bool enableRemoveLiquidityCustom;\n bool enableDonation;\n}\n\n// @notice Custom type to store the entire configuration of the pool.\ntype PoolConfigBits is bytes32;\n\n/**\n * @notice Represents a pool's configuration (hooks configuration are separated in another struct).\n * @param liquidityManagement Flags related to adding/removing liquidity\n * @param staticSwapFeePercentage The pool's native swap fee\n * @param aggregateSwapFeePercentage The total swap fee charged, including protocol and pool creator components\n * @param aggregateYieldFeePercentage The total swap fee charged, including protocol and pool creator components\n * @param tokenDecimalDiffs Compressed storage of the token decimals of each pool token\n * @param pauseWindowEndTime Timestamp after which the pool cannot be paused\n * @param isPoolRegistered If true, the pool has been registered with the Vault\n * @param isPoolInitialized If true, the pool has been initialized with liquidity, and is available for trading\n * @param isPoolPaused If true, the pool has been paused (by governance or the pauseManager)\n * @param isPoolInRecoveryMode If true, the pool has been placed in recovery mode, enabling recovery mode withdrawals\n */\nstruct PoolConfig {\n LiquidityManagement liquidityManagement;\n uint256 staticSwapFeePercentage;\n uint256 aggregateSwapFeePercentage;\n uint256 aggregateYieldFeePercentage;\n uint40 tokenDecimalDiffs;\n uint32 pauseWindowEndTime;\n bool isPoolRegistered;\n bool isPoolInitialized;\n bool isPoolPaused;\n bool isPoolInRecoveryMode;\n}\n\n/**\n * @notice The flag portion of the `HooksConfig`.\n * @dev `enableHookAdjustedAmounts` must be true for all contracts that modify the `amountCalculated`\n * in after hooks. Otherwise, the Vault will ignore any \"hookAdjusted\" amounts. Setting any \"shouldCall\"\n * flags to true will cause the Vault to call the corresponding hook during operations.\n */\nstruct HookFlags {\n bool enableHookAdjustedAmounts;\n bool shouldCallBeforeInitialize;\n bool shouldCallAfterInitialize;\n bool shouldCallComputeDynamicSwapFee;\n bool shouldCallBeforeSwap;\n bool shouldCallAfterSwap;\n bool shouldCallBeforeAddLiquidity;\n bool shouldCallAfterAddLiquidity;\n bool shouldCallBeforeRemoveLiquidity;\n bool shouldCallAfterRemoveLiquidity;\n}\n\n/// @notice Represents a hook contract configuration for a pool (HookFlags + hooksContract address).\nstruct HooksConfig {\n bool enableHookAdjustedAmounts;\n bool shouldCallBeforeInitialize;\n bool shouldCallAfterInitialize;\n bool shouldCallComputeDynamicSwapFee;\n bool shouldCallBeforeSwap;\n bool shouldCallAfterSwap;\n bool shouldCallBeforeAddLiquidity;\n bool shouldCallAfterAddLiquidity;\n bool shouldCallBeforeRemoveLiquidity;\n bool shouldCallAfterRemoveLiquidity;\n address hooksContract;\n}\n\n/**\n * @notice Represents temporary state used during a swap operation.\n * @param indexIn The zero-based index of tokenIn\n * @param indexOut The zero-based index of tokenOut\n * @param amountGivenScaled18 The amountGiven (i.e., tokenIn for ExactIn), adjusted for token decimals\n * @param swapFeePercentage The swap fee to be applied (might be static or dynamic)\n */\nstruct SwapState {\n uint256 indexIn;\n uint256 indexOut;\n uint256 amountGivenScaled18;\n uint256 swapFeePercentage;\n}\n\n/**\n * @notice Represents the Vault's configuration.\n * @param isQueryDisabled If set to true, disables query functionality of the Vault. Can be modified by governance\n * @param isVaultPaused If set to true, swaps and add/remove liquidity operations are halted\n * @param areBuffersPaused If set to true, the Vault wrap/unwrap primitives associated with buffers will be disabled\n */\nstruct VaultState {\n bool isQueryDisabled;\n bool isVaultPaused;\n bool areBuffersPaused;\n}\n\n/**\n * @notice Represents the accounts holding certain roles for a given pool. This is passed in on pool registration.\n * @param pauseManager Account empowered to pause/unpause the pool (note that governance can always pause a pool)\n * @param swapFeeManager Account empowered to set static swap fees for a pool (or 0 to delegate to governance)\n * @param poolCreator Account empowered to set the pool creator fee (or 0 if all fees go to the protocol and LPs)\n */\nstruct PoolRoleAccounts {\n address pauseManager;\n address swapFeeManager;\n address poolCreator;\n}\n\n/*******************************************************************************\n Tokens\n*******************************************************************************/\n\n// Note that the following tokens are unsupported by the Vault. This list is not meant to be exhaustive, but covers\n// many common types of tokens that will not work with the Vault architecture. (See https://github.com/d-xo/weird-erc20\n// for examples of token features that are problematic for many protocols.)\n//\n// * Rebasing tokens (e.g., aDAI). The Vault keeps track of token balances in its internal accounting; any token whose\n// balance changes asynchronously (i.e., outside a swap or liquidity operation), would get out-of-sync with this\n// internal accounting. This category would also include \"airdrop\" tokens, whose balances can change unexpectedly.\n//\n// * Double entrypoint (e.g., old Synthetix tokens, now fixed). These could likewise bypass internal accounting by\n// registering the token under one address, then accessing it through another. This is especially troublesome\n// in v3, with the introduction of ERC4626 buffers.\n//\n// * Fee on transfer (e.g., PAXG). The Vault issues credits and debits according to given and calculated token amounts,\n// and settlement assumes that the send/receive transfer functions transfer exactly the given number of tokens.\n// If this is not the case, transactions will not settle. Unlike with the other types, which are fundamentally\n// incompatible, it would be possible to design a Router to handle this - but we didn't try it. In any case, it's\n// not supported in the current Routers.\n//\n// * Tokens with more than 18 decimals (e.g., YAM-V2). The Vault handles token scaling: i.e., handling I/O for\n// amounts in native token decimals, but doing calculations with full 18-decimal precision. This requires reading\n// and storing the decimals for each token. Since virtually all tokens are 18 or fewer decimals, and we have limited\n// storage space, 18 was a reasonable maximum. Unlike the other types, this is enforceable by the Vault. Attempting\n// to register such tokens will revert with `InvalidTokenDecimals`. Of course, we must also be able to read the token\n// decimals, so the Vault only supports tokens that implement `IERC20Metadata.decimals`, and return a value less than\n// or equal to 18.\n//\n// * Token decimals are checked and stored only once, on registration. Valid tokens store their decimals as immutable\n// variables or constants. Malicious tokens that don't respect this basic property would not work anywhere in DeFi.\n//\n// These types of tokens are supported but discouraged, as they don't tend to play well with AMMs generally.\n//\n// * Very low-decimal tokens (e.g., GUSD). The Vault has been extensively tested with 6-decimal tokens (e.g., USDC),\n// but going much below that may lead to unanticipated effects due to precision loss, especially with smaller trade\n// values.\n//\n// * Revert on zero value approval/transfer. The Vault has been tested against these, but peripheral contracts, such\n// as hooks, might not have been designed with this in mind.\n//\n// * Other types from \"weird-erc20,\" such as upgradeable, pausable, or tokens with blocklists. We have seen cases\n// where a token upgrade fails, \"bricking\" the token - and many operations on pools containing that token. Any\n// sort of \"permissioned\" token that can make transfers fail can cause operations on pools containing them to\n// revert. Even Recovery Mode cannot help then, as it does a proportional withdrawal of all tokens. If one of\n// them is bricked, the whole operation will revert. Since v3 does not have \"internal balances\" like v2, there\n// is no recourse.\n//\n// Of course, many tokens in common use have some of these \"features\" (especially centralized stable coins), so\n// we have to support them anyway. Working with common centralized tokens is a risk common to all of DeFi.\n\n/**\n * @notice Token types supported by the Vault.\n * @dev In general, pools may contain any combination of these tokens.\n *\n * STANDARD tokens (e.g., BAL, WETH) have no rate provider.\n * WITH_RATE tokens (e.g., wstETH) require a rate provider. These may be tokens like wstETH, which need to be wrapped\n * because the underlying stETH token is rebasing, and such tokens are unsupported by the Vault. They may also be\n * tokens like sEUR, which track an underlying asset, but are not yield-bearing. Finally, this encompasses\n * yield-bearing ERC4626 tokens, which can be used to facilitate swaps without requiring wrapping or unwrapping\n * in most cases. The `paysYieldFees` flag can be used to indicate whether a token is yield-bearing (e.g., waDAI),\n * not yield-bearing (e.g., sEUR), or yield-bearing but exempt from fees (e.g., in certain nested pools, where\n * yield fees are charged elsewhere).\n *\n * NB: STANDARD must always be the first enum element, so that newly initialized data structures default to Standard.\n */\nenum TokenType {\n STANDARD,\n WITH_RATE\n}\n\n/**\n * @notice Encapsulate the data required for the Vault to support a token of the given type.\n * @dev For STANDARD tokens, the rate provider address must be 0, and paysYieldFees must be false. All WITH_RATE tokens\n * need a rate provider, and may or may not be yield-bearing.\n *\n * At registration time, it is useful to include the token address along with the token parameters in the structure\n * passed to `registerPool`, as the alternative would be parallel arrays, which would be error prone and require\n * validation checks. `TokenConfig` is only used for registration, and is never put into storage (see `TokenInfo`).\n *\n * @param token The token address\n * @param tokenType The token type (see the enum for supported types)\n * @param rateProvider The rate provider for a token (see further documentation above)\n * @param paysYieldFees Flag indicating whether yield fees should be charged on this token\n */\nstruct TokenConfig {\n IERC20 token;\n TokenType tokenType;\n IRateProvider rateProvider;\n bool paysYieldFees;\n}\n\n/**\n * @notice This data structure is stored in `_poolTokenInfo`, a nested mapping from pool -> (token -> TokenInfo).\n * @dev Since the token is already the key of the nested mapping, it would be redundant (and an extra SLOAD) to store\n * it again in the struct. When we construct PoolData, the tokens are separated into their own array.\n *\n * @param tokenType The token type (see the enum for supported types)\n * @param rateProvider The rate provider for a token (see further documentation above)\n * @param paysYieldFees Flag indicating whether yield fees should be charged on this token\n */\nstruct TokenInfo {\n TokenType tokenType;\n IRateProvider rateProvider;\n bool paysYieldFees;\n}\n\n/**\n * @notice Data structure used to represent the current pool state in memory\n * @param poolConfigBits Custom type to store the entire configuration of the pool.\n * @param tokens Pool tokens, sorted in token registration order\n * @param tokenInfo Configuration data for each token, sorted in token registration order\n * @param balancesRaw Token balances in native decimals\n * @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n * @param tokenRates 18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\n * @param decimalScalingFactors Conversion factor used to adjust for token decimals for uniform precision in\n * calculations. It is 1e18 (FP 1) for 18-decimal tokens\n */\nstruct PoolData {\n PoolConfigBits poolConfigBits;\n IERC20[] tokens;\n TokenInfo[] tokenInfo;\n uint256[] balancesRaw;\n uint256[] balancesLiveScaled18;\n uint256[] tokenRates;\n uint256[] decimalScalingFactors;\n}\n\nenum Rounding {\n ROUND_UP,\n ROUND_DOWN\n}\n\n/*******************************************************************************\n Swaps\n*******************************************************************************/\n\nenum SwapKind {\n EXACT_IN,\n EXACT_OUT\n}\n\n// There are two \"SwapParams\" structs defined below. `VaultSwapParams` corresponds to the external swap API defined\n// in the Router contracts, which uses explicit token addresses, the amount given and limit on the calculated amount\n// expressed in native token decimals, and optional user data passed in from the caller.\n//\n// `PoolSwapParams` passes some of this information through (kind, userData), but \"translates\" the parameters to fit\n// the internal swap API used by `IBasePool`. It scales amounts to full 18-decimal precision, adds the token balances,\n// converts the raw token addresses to indices, and adds the address of the Router originating the request. It does\n// not need the limit, since this is checked at the Router level.\n\n/**\n * @notice Data passed into primary Vault `swap` operations.\n * @param kind Type of swap (Exact In or Exact Out)\n * @param pool The pool with the tokens being swapped\n * @param tokenIn The token entering the Vault (balance increases)\n * @param tokenOut The token leaving the Vault (balance decreases)\n * @param amountGivenRaw Amount specified for tokenIn or tokenOut (depending on the type of swap)\n * @param limitRaw Minimum or maximum value of the calculated amount (depending on the type of swap)\n * @param userData Additional (optional) user data\n */\nstruct VaultSwapParams {\n SwapKind kind;\n address pool;\n IERC20 tokenIn;\n IERC20 tokenOut;\n uint256 amountGivenRaw;\n uint256 limitRaw;\n bytes userData;\n}\n\n/**\n * @notice Data for a swap operation, used by contracts implementing `IBasePool`.\n * @param kind Type of swap (exact in or exact out)\n * @param amountGivenScaled18 Amount given based on kind of the swap (e.g., tokenIn for EXACT_IN)\n * @param balancesScaled18 Current pool balances\n * @param indexIn Index of tokenIn\n * @param indexOut Index of tokenOut\n * @param router The address (usually a router contract) that initiated a swap operation on the Vault\n * @param userData Additional (optional) data required for the swap\n */\nstruct PoolSwapParams {\n SwapKind kind;\n uint256 amountGivenScaled18;\n uint256[] balancesScaled18;\n uint256 indexIn;\n uint256 indexOut;\n address router;\n bytes userData;\n}\n\n/**\n * @notice Data for the hook after a swap operation.\n * @param kind Type of swap (exact in or exact out)\n * @param tokenIn Token to be swapped from\n * @param tokenOut Token to be swapped to\n * @param amountInScaled18 Amount of tokenIn (entering the Vault)\n * @param amountOutScaled18 Amount of tokenOut (leaving the Vault)\n * @param tokenInBalanceScaled18 Updated (after swap) balance of tokenIn\n * @param tokenOutBalanceScaled18 Updated (after swap) balance of tokenOut\n * @param amountCalculatedScaled18 Token amount calculated by the swap\n * @param amountCalculatedRaw Token amount calculated by the swap\n * @param router The address (usually a router contract) that initiated a swap operation on the Vault\n * @param pool Pool address\n * @param userData Additional (optional) data required for the swap\n */\nstruct AfterSwapParams {\n SwapKind kind;\n IERC20 tokenIn;\n IERC20 tokenOut;\n uint256 amountInScaled18;\n uint256 amountOutScaled18;\n uint256 tokenInBalanceScaled18;\n uint256 tokenOutBalanceScaled18;\n uint256 amountCalculatedScaled18;\n uint256 amountCalculatedRaw;\n address router;\n address pool;\n bytes userData;\n}\n\n/*******************************************************************************\n Add liquidity\n*******************************************************************************/\n\nenum AddLiquidityKind {\n PROPORTIONAL,\n UNBALANCED,\n SINGLE_TOKEN_EXACT_OUT,\n DONATION,\n CUSTOM\n}\n\n/**\n * @notice Data for an add liquidity operation.\n * @param pool Address of the pool\n * @param to Address of user to mint to\n * @param maxAmountsIn Maximum amounts of input tokens\n * @param minBptAmountOut Minimum amount of output pool tokens\n * @param kind Add liquidity kind\n * @param userData Optional user data\n */\nstruct AddLiquidityParams {\n address pool;\n address to;\n uint256[] maxAmountsIn;\n uint256 minBptAmountOut;\n AddLiquidityKind kind;\n bytes userData;\n}\n\n/*******************************************************************************\n Remove liquidity\n*******************************************************************************/\n\nenum RemoveLiquidityKind {\n PROPORTIONAL,\n SINGLE_TOKEN_EXACT_IN,\n SINGLE_TOKEN_EXACT_OUT,\n CUSTOM\n}\n\n/**\n * @notice Data for an remove liquidity operation.\n * @param pool Address of the pool\n * @param from Address of user to burn from\n * @param maxBptAmountIn Maximum amount of input pool tokens\n * @param minAmountsOut Minimum amounts of output tokens\n * @param kind Remove liquidity kind\n * @param userData Optional user data\n */\nstruct RemoveLiquidityParams {\n address pool;\n address from;\n uint256 maxBptAmountIn;\n uint256[] minAmountsOut;\n RemoveLiquidityKind kind;\n bytes userData;\n}\n\n/*******************************************************************************\n Remove liquidity\n*******************************************************************************/\n\nenum WrappingDirection {\n WRAP,\n UNWRAP\n}\n\n/**\n * @notice Data for a wrap/unwrap operation.\n * @param kind Type of swap (Exact In or Exact Out)\n * @param direction Direction of the wrapping operation (Wrap or Unwrap)\n * @param wrappedToken Wrapped token, compatible with interface ERC4626\n * @param amountGivenRaw Amount specified for tokenIn or tokenOut (depends on the type of swap and wrapping direction)\n * @param limitRaw Minimum or maximum amount specified for the other token (depends on the type of swap and wrapping\n * direction)\n */\nstruct BufferWrapOrUnwrapParams {\n SwapKind kind;\n WrappingDirection direction;\n IERC4626 wrappedToken;\n uint256 amountGivenRaw;\n uint256 limitRaw;\n}\n\n// Protocol Fees are 24-bit values. We transform them by multiplying by 1e11, so that they can be set to any value\n// between 0% and 100% (step 0.00001%). Protocol and pool creator fees are set in the `ProtocolFeeController`, and\n// ensure both constituent and aggregate fees do not exceed this precision.\nuint256 constant FEE_BITLENGTH = 24;\nuint256 constant FEE_SCALING_FACTOR = 1e11;\n// Used to ensure the safety of fee-related math (e.g., pools or hooks don't set it greater than 100%).\n// This value should work for practical purposes and is well within the max precision requirements.\nuint256 constant MAX_FEE_PERCENTAGE = 99.9999e16; // 99.9999%\n"},"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { Authentication } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\";\n\n/// @dev Base contract for performing access control on external functions within pools.\nabstract contract BasePoolAuthentication is Authentication {\n IVault private immutable _vault;\n\n /**\n * @dev Pools should use the pool factory as the disambiguator passed into the base Authentication contract.\n * Otherwise, permissions would conflict if different pools reused function names.\n */\n constructor(IVault vault, address factory) Authentication(bytes32(uint256(uint160(factory)))) {\n _vault = vault;\n }\n\n // Access control is delegated to the Authorizer in the `_canPerform` functions.\n\n function _canPerform(bytes32 actionId, address user) internal view override returns (bool) {\n return _vault.getAuthorizer().canPerform(actionId, user, address(this));\n }\n\n function _canPerform(bytes32 actionId, address account, address where) internal view returns (bool) {\n return _vault.getAuthorizer().canPerform(actionId, account, where);\n }\n}\n"},"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { Create2 } from \"@openzeppelin/contracts/utils/Create2.sol\";\n\nimport { IBasePoolFactory } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport {\n TokenConfig,\n PoolRoleAccounts,\n LiquidityManagement\n} from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { FactoryWidePauseWindow } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\";\nimport { SingletonAuthentication } from \"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\";\n\n/**\n * @notice Base contract for Pool factories.\n *\n * Pools are deployed from factories to allow third parties to more easily reason about them. Unknown Pools may have\n * arbitrary logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts\n * created by the factory) is very powerful.\n *\n * Note that in v3, the factory alone is not enough to ensure the safety of a pool. v3 pools can have arbitrary hook\n * contracts, rate providers, complex tokens, and configuration that significantly impacts pool behavior. Specialty\n * factories can be designed to limit their pools range of behavior (e.g., weighted 80/20 factories where the token\n * count and weights are fixed).\n *\n * Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will\n * become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently\n * prevent the creation of any future pools from the factory.\n *\n * Use of factories is also important for security. Calls to `registerPool` or `initialize` made directly on the Vault\n * could potentially be frontrun. In the case of registration, a DoS attack could register a pool with malicious\n * parameters, causing the legitimate registration transaction to fail. The standard Balancer factories avoid this by\n * deploying and registering in a single `create` function.\n *\n * It would also be possible to frontrun `initialize` (e.g., with unbalanced liquidity), and cause the intended\n * initialization to fail. Like registration, initialization only happens once. The Balancer standard factories do not\n * initialize on create, as this would be more complex (e.g., requiring token approvals), and it's very common for the\n * deployment and funding to be performed from different accounts. Also, frontrunning `initialize` doesn't have serious\n * consequences, beyond being a DoS.\n *\n * Nevertheless, this is a factor to consider when launching new pools. To avoid any possibility of frontrunning,\n * the best practice would be to create (i.e., deploy and register) and initialize in the same transaction.\n */\nabstract contract BasePoolFactory is IBasePoolFactory, SingletonAuthentication, FactoryWidePauseWindow {\n mapping(address pool => bool isFromFactory) private _isPoolFromFactory;\n address[] private _pools;\n\n bool private _disabled;\n\n // Store the creationCode of the contract to be deployed by create2.\n bytes private _creationCode;\n\n /// @notice A pool creator was specified for a pool from a Balancer core pool type.\n error StandardPoolWithCreator();\n\n constructor(\n IVault vault,\n uint32 pauseWindowDuration,\n bytes memory creationCode\n ) SingletonAuthentication(vault) FactoryWidePauseWindow(pauseWindowDuration) {\n _creationCode = creationCode;\n }\n\n /// @inheritdoc IBasePoolFactory\n function isPoolFromFactory(address pool) external view returns (bool) {\n return _isPoolFromFactory[pool];\n }\n\n /// @inheritdoc IBasePoolFactory\n function getPoolCount() external view returns (uint256) {\n return _pools.length;\n }\n\n /// @inheritdoc IBasePoolFactory\n function getPools() external view returns (address[] memory) {\n return _pools;\n }\n\n /// @inheritdoc IBasePoolFactory\n function getPoolsInRange(uint256 start, uint256 count) external view returns (address[] memory pools) {\n uint256 length = _pools.length;\n if (start >= length) {\n revert IndexOutOfBounds();\n }\n\n // If `count` requests more pools than we have available, stop at the end of the array.\n uint256 end = start + count;\n if (end > length) {\n count = length - start;\n }\n\n pools = new address[](count);\n for (uint256 i = 0; i < count; i++) {\n pools[i] = _pools[start + i];\n }\n }\n\n /// @inheritdoc IBasePoolFactory\n function isDisabled() public view returns (bool) {\n return _disabled;\n }\n\n /// @inheritdoc IBasePoolFactory\n function getDeploymentAddress(bytes memory constructorArgs, bytes32 salt) public view returns (address) {\n bytes memory creationCode = abi.encodePacked(_creationCode, constructorArgs);\n bytes32 creationCodeHash = keccak256(creationCode);\n bytes32 finalSalt = _computeFinalSalt(salt);\n\n return Create2.computeAddress(finalSalt, creationCodeHash);\n }\n\n /// @inheritdoc IBasePoolFactory\n function disable() external authenticate {\n _ensureEnabled();\n\n _disabled = true;\n\n emit FactoryDisabled();\n }\n\n function _ensureEnabled() internal view {\n if (isDisabled()) {\n revert Disabled();\n }\n }\n\n function _registerPoolWithFactory(address pool) internal virtual {\n _ensureEnabled();\n\n _isPoolFromFactory[pool] = true;\n _pools.push(pool);\n\n emit PoolCreated(pool);\n }\n\n /**\n * @dev Factories that require a custom-calculated salt can override to replace this default salt processing.\n * By default, the pool address determinants include the sender and chain id, as well as the user-provided salt,\n * so contracts will generally not have the same address on different L2s.\n */\n function _computeFinalSalt(bytes32 salt) internal view virtual returns (bytes32) {\n return keccak256(abi.encode(msg.sender, block.chainid, salt));\n }\n\n function _create(bytes memory constructorArgs, bytes32 salt) internal returns (address pool) {\n bytes memory creationCode = abi.encodePacked(_creationCode, constructorArgs);\n bytes32 finalSalt = _computeFinalSalt(salt);\n pool = Create2.deploy(0, finalSalt, creationCode);\n\n _registerPoolWithFactory(pool);\n }\n\n function _registerPoolWithVault(\n address pool,\n TokenConfig[] memory tokens,\n uint256 swapFeePercentage,\n bool protocolFeeExempt,\n PoolRoleAccounts memory roleAccounts,\n address poolHooksContract,\n LiquidityManagement memory liquidityManagement\n ) internal {\n getVault().registerPool(\n pool,\n tokens,\n swapFeePercentage,\n getNewPoolPauseWindowEndTime(),\n protocolFeeExempt,\n roleAccounts,\n poolHooksContract,\n liquidityManagement\n );\n }\n\n /// @notice A common place to retrieve a default hooks contract. Currently set to address(0) (i.e. no hooks).\n function getDefaultPoolHooksContract() public pure returns (address) {\n return address(0);\n }\n\n /**\n * @notice Convenience function for constructing a LiquidityManagement object.\n * @dev Users can call this to create a structure with all false arguments, then set the ones they need to true.\n * @return liquidityManagement Liquidity management flags, all initialized to false\n */\n function getDefaultLiquidityManagement() public pure returns (LiquidityManagement memory liquidityManagement) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { TokenInfo, PoolConfig } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IPoolInfo } from \"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\n/**\n * @notice Standard implementation of the `IPoolInfo` interface.\n * @dev Balancer standard pools inherit from this optional interface to provide a standard off-chain interface for\n * commonly requested data.\n */\ncontract PoolInfo is IPoolInfo {\n IVault private immutable _vault;\n\n constructor(IVault vault) {\n _vault = vault;\n }\n\n /// @inheritdoc IPoolInfo\n function getTokens() external view returns (IERC20[] memory tokens) {\n return _vault.getPoolTokens(address(this));\n }\n\n /// @inheritdoc IPoolInfo\n function getTokenInfo()\n external\n view\n returns (\n IERC20[] memory tokens,\n TokenInfo[] memory tokenInfo,\n uint256[] memory balancesRaw,\n uint256[] memory lastBalancesLiveScaled18\n )\n {\n return _vault.getPoolTokenInfo(address(this));\n }\n\n /// @inheritdoc IPoolInfo\n function getCurrentLiveBalances() external view returns (uint256[] memory balancesLiveScaled18) {\n return _vault.getCurrentLiveBalances(address(this));\n }\n\n /// @inheritdoc IPoolInfo\n function getStaticSwapFeePercentage() external view returns (uint256) {\n return _vault.getStaticSwapFeePercentage((address(this)));\n }\n\n /// @inheritdoc IPoolInfo\n function getAggregateFeePercentages()\n external\n view\n returns (uint256 aggregateSwapFeePercentage, uint256 aggregateYieldFeePercentage)\n {\n PoolConfig memory poolConfig = _vault.getPoolConfig(address(this));\n\n aggregateSwapFeePercentage = poolConfig.aggregateSwapFeePercentage;\n aggregateYieldFeePercentage = poolConfig.aggregateYieldFeePercentage;\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IAuthentication } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\n\n/**\n * @notice Building block for performing access control on external functions.\n * @dev This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be\n * applied to external functions to make them only callable by authorized accounts.\n *\n * Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\n */\nabstract contract Authentication is IAuthentication {\n bytes32 private immutable _actionIdDisambiguator;\n\n /**\n * @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n * multi-contract systems.\n *\n * There are two main uses for it:\n * - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n * unique. The contract's own address is a good option.\n * - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n * shared by the entire family (and no other contract) should be used instead.\n */\n constructor(bytes32 actionIdDisambiguator) {\n _actionIdDisambiguator = actionIdDisambiguator;\n }\n\n /// @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions.\n modifier authenticate() {\n _authenticateCaller();\n _;\n }\n\n /// @dev Reverts unless the caller is allowed to call the entry point function.\n function _authenticateCaller() internal view {\n bytes32 actionId = getActionId(msg.sig);\n\n if (!_canPerform(actionId, msg.sender)) {\n revert SenderNotAllowed();\n }\n }\n\n /// @inheritdoc IAuthentication\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n // Each external function is dynamically assigned an action identifier as the hash of the disambiguator and the\n // function selector. Disambiguation is necessary to avoid potential collisions in the function selectors of\n // multiple contracts.\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n /**\n * @dev Derived contracts must implement this function to perform the actual access control logic.\n * @param actionId The action identifier associated with an external function\n * @param user The account performing the action\n * @return success True if the action is permitted\n */\n function _canPerform(bytes32 actionId, address user) internal view virtual returns (bool);\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\n\nimport { PackedTokenBalance } from \"./PackedTokenBalance.sol\";\n\nlibrary BufferHelpers {\n using PackedTokenBalance for bytes32;\n using SafeCast for *;\n\n /**\n * @notice Returns the imbalance of a buffer in terms of the underlying asset.\n * @dev The imbalance refers to the difference between the buffer's underlying asset balance and its wrapped asset\n * balance, both expressed in terms of the underlying asset. A positive imbalance means the buffer holds more\n * underlying assets than wrapped assets, indicating that the excess underlying should be wrapped to restore\n * balance. Conversely, a negative imbalance means the buffer has more wrapped assets than underlying assets, so\n * during a wrap operation, fewer underlying tokens need to be wrapped, and the surplus wrapped tokens can be\n * returned to the caller.\n * For instance, consider the following scenario:\n * - buffer balances: 2 wrapped and 10 underlying\n * - wrapped rate: 2\n * - normalized buffer balances: 4 wrapped as underlying (2 wrapped * rate) and 10 underlying\n * - underlying token imbalance = (10 - 4) / 2 = 3 underlying\n * We need to wrap 3 underlying tokens to rebalance the buffer.\n * - 3 underlying = 1.5 wrapped\n * - final balances: 3.5 wrapped (2 existing + 1.5 new) and 7 underlying (10 existing - 3)\n * These balances are equal value, given the rate.\n */\n function getBufferUnderlyingImbalance(bytes32 bufferBalance, IERC4626 wrappedToken) internal view returns (int256) {\n int256 underlyingBalance = bufferBalance.getBalanceRaw().toInt256();\n\n int256 wrappedBalanceAsUnderlying = 0;\n if (bufferBalance.getBalanceDerived() > 0) {\n // The buffer underlying imbalance is used when wrapping (it means, deposit underlying and get wrapped\n // tokens), so we use `previewMint` to convert wrapped balance to underlying. The `mint` function is used\n // here, as it performs the inverse of a `deposit` operation.\n wrappedBalanceAsUnderlying = wrappedToken.previewMint(bufferBalance.getBalanceDerived()).toInt256();\n }\n\n // The return value may be positive (excess of underlying) or negative (excess of wrapped).\n return (underlyingBalance - wrappedBalanceAsUnderlying) / 2;\n }\n\n /**\n * @notice Returns the imbalance of a buffer in terms of the wrapped asset.\n * @dev The imbalance refers to the difference between the buffer's underlying asset balance and its wrapped asset\n * balance, both expressed in terms of the wrapped asset. A positive imbalance means the buffer holds more\n * wrapped assets than underlying assets, indicating that the excess wrapped should be unwrapped to restore\n * balance. Conversely, a negative imbalance means the buffer has more underlying assets than wrapped assets, so\n * during an unwrap operation, fewer wrapped tokens need to be unwrapped, and the surplus underlying tokens can be\n * returned to the caller.\n * For instance, consider the following scenario:\n * - buffer balances: 10 wrapped and 4 underlying\n * - wrapped rate: 2\n * - normalized buffer balances: 10 wrapped and 2 underlying as wrapped (2 underlying / rate)\n * - imbalance of wrapped = (10 - 2) / 2 = 4 wrapped\n * We need to unwrap 4 wrapped tokens to rebalance the buffer.\n * - 4 wrapped = 8 underlying\n * - final balances: 6 wrapped (10 existing - 4) and 12 underlying (4 existing + 8 new)\n * These balances are equal value, given the rate.\n */\n function getBufferWrappedImbalance(bytes32 bufferBalance, IERC4626 wrappedToken) internal view returns (int256) {\n int256 wrappedBalance = bufferBalance.getBalanceDerived().toInt256();\n\n int256 underlyingBalanceAsWrapped = 0;\n if (bufferBalance.getBalanceRaw() > 0) {\n // The buffer wrapped imbalance is used when unwrapping (it means, deposit wrapped and get underlying\n // tokens), so we use `previewWithdraw` to convert underlying balance to wrapped. The `withdraw` function\n // is used here, as it performs the inverse of a `redeem` operation.\n underlyingBalanceAsWrapped = wrappedToken.previewWithdraw(bufferBalance.getBalanceRaw()).toInt256();\n }\n\n // The return value may be positive (excess of wrapped) or negative (excess of underlying).\n return (wrappedBalance - underlyingBalanceAsWrapped) / 2;\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/// @notice Library of helper functions related to typecasting arrays.\nlibrary CastingHelpers {\n /// @dev Returns a native array of addresses as an IERC20[] array.\n function asIERC20(address[] memory addresses) internal pure returns (IERC20[] memory tokens) {\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n tokens := addresses\n }\n }\n\n /// @dev Returns an IERC20[] array as an address[] array.\n function asAddress(IERC20[] memory tokens) internal pure returns (address[] memory addresses) {\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n addresses := tokens\n }\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/// @notice Library used to check whether the current operation was initiated through a static call.\nlibrary EVMCallModeHelpers {\n /// @notice A state-changing transaction was initiated in a context that only allows static calls.\n error NotStaticCall();\n\n /**\n * @dev Detects whether the current transaction is a static call.\n * A static call is one where `tx.origin` equals 0x0 for most implementations.\n * See this tweet for a table on how transaction parameters are set on different platforms:\n * https://twitter.com/0xkarmacoma/status/1493380279309717505\n *\n * Solidity eth_call reference docs are here: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call\n */\n function isStaticCall() internal view returns (bool) {\n return tx.origin == address(0);\n // solhint-disable-previous-line avoid-tx-origin\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/**\n * @notice Base contract for v3 factories to support pause windows for pools based on the factory deployment time.\n * @dev Each pool deployment calls `getPauseWindowDuration` on the factory so that all Pools created by this factory\n * will share the same Pause Window end time, after which both old and new Pools will not be pausable.\n *\n * All pools are reversibly pausable until the pause window expires. Afterward, there is an additional buffer\n * period, set to the same duration as the Vault's buffer period. If a pool was paused, it will remain paused\n * through this buffer period, and cannot be unpaused.\n *\n * When the buffer period expires, it will unpause automatically, and remain permissionless forever after.\n */\ncontract FactoryWidePauseWindow {\n // This contract relies on timestamps - the usual caveats apply.\n // solhint-disable not-rely-on-time\n\n // The pause window end time is stored in 32 bits.\n uint32 private constant _MAX_TIMESTAMP = type(uint32).max;\n\n uint32 private immutable _pauseWindowDuration;\n\n // Time when the pause window for all created Pools expires.\n uint32 private immutable _poolsPauseWindowEndTime;\n\n /// @notice The factory deployer gave a duration that would overflow the Unix timestamp.\n error PoolPauseWindowDurationOverflow();\n\n constructor(uint32 pauseWindowDuration) {\n uint256 pauseWindowEndTime = block.timestamp + pauseWindowDuration;\n\n if (pauseWindowEndTime > _MAX_TIMESTAMP) {\n revert PoolPauseWindowDurationOverflow();\n }\n\n _pauseWindowDuration = pauseWindowDuration;\n\n // Direct cast is safe, as it was checked above.\n _poolsPauseWindowEndTime = uint32(pauseWindowEndTime);\n }\n\n /**\n * @notice Return the pause window duration. This is the time pools will be pausable after factory deployment.\n * @return pauseWindowDuration The duration in seconds\n */\n function getPauseWindowDuration() external view returns (uint32) {\n return _pauseWindowDuration;\n }\n\n /**\n * @notice Returns the original factory pauseWindowEndTime, regardless of the current time.\n * @return pauseWindowEndTime The end time as a timestamp\n */\n function getOriginalPauseWindowEndTime() external view returns (uint32) {\n return _poolsPauseWindowEndTime;\n }\n\n /**\n * @notice Returns the current pauseWindowEndTime that will be applied to Pools created by this factory.\n * @dev We intend for all pools deployed by this factory to have the same pause window end time (i.e., after\n * this date, all future pools will be unpausable). This function will return `_poolsPauseWindowEndTime`\n * until it passes, after which it will return 0.\n *\n * @return pauseWindowEndTime The resolved pause window end time (0 indicating it's no longer pausable)\n */\n function getNewPoolPauseWindowEndTime() public view returns (uint32) {\n // We know _poolsPauseWindowEndTime <= _MAX_TIMESTAMP (checked above).\n // Do not truncate timestamp; it should still return 0 after _MAX_TIMESTAMP.\n return (block.timestamp < _poolsPauseWindowEndTime) ? _poolsPauseWindowEndTime : 0;\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { CastingHelpers } from \"./CastingHelpers.sol\";\n\nlibrary InputHelpers {\n /// @notice Arrays passed to a function and intended to be parallel have different lengths.\n error InputLengthMismatch();\n\n /**\n * @notice More than one non-zero value was given for a single token operation.\n * @dev Input arrays for single token add/remove liquidity operations are expected to have only one non-zero value,\n * corresponding to the token being added or removed. This error results if there are multiple non-zero entries.\n */\n error MultipleNonZeroInputs();\n\n /**\n * @notice No valid input was given for a single token operation.\n * @dev Input arrays for single token add/remove liquidity operations are expected to have one non-zero value,\n * corresponding to the token being added or removed. This error results if all entries are zero.\n */\n error AllZeroInputs();\n\n /**\n * @notice The tokens supplied to an array argument were not sorted in numerical order.\n * @dev Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can\n * predict the token order without having to query the Vault. (It is also legacy v2 behavior.)\n */\n error TokensNotSorted();\n\n function ensureInputLengthMatch(uint256 a, uint256 b) internal pure {\n if (a != b) {\n revert InputLengthMismatch();\n }\n }\n\n function ensureInputLengthMatch(uint256 a, uint256 b, uint256 c) internal pure {\n if (a != b || b != c) {\n revert InputLengthMismatch();\n }\n }\n\n // Find the single non-zero input; revert if there is not exactly one such value.\n function getSingleInputIndex(uint256[] memory maxAmountsIn) internal pure returns (uint256 inputIndex) {\n uint256 length = maxAmountsIn.length;\n inputIndex = length;\n\n for (uint256 i = 0; i < length; ++i) {\n if (maxAmountsIn[i] != 0) {\n if (inputIndex != length) {\n revert MultipleNonZeroInputs();\n }\n inputIndex = i;\n }\n }\n\n if (inputIndex >= length) {\n revert AllZeroInputs();\n }\n\n return inputIndex;\n }\n\n /**\n * @dev Sort an array of tokens, mutating in place (and also returning them).\n * This assumes the tokens have been (or will be) validated elsewhere for length\n * and non-duplication. All this does is the sorting.\n *\n * A bubble sort should be gas- and bytecode-efficient enough for such small arrays.\n * Could have also done \"manual\" comparisons for each of the cases, but this is\n * about the same number of operations, and more concise.\n *\n * This is less efficient for larger token count (i.e., above 4), but such pools should\n * be rare. And in any case, sorting is only done on-chain in test code.\n */\n function sortTokens(IERC20[] memory tokens) internal pure returns (IERC20[] memory) {\n for (uint256 i = 0; i < tokens.length - 1; ++i) {\n for (uint256 j = 0; j < tokens.length - i - 1; ++j) {\n if (tokens[j] > tokens[j + 1]) {\n // Swap if they're out of order.\n (tokens[j], tokens[j + 1]) = (tokens[j + 1], tokens[j]);\n }\n }\n }\n\n return tokens;\n }\n\n /// @dev Ensure an array of tokens is sorted. As above, does not validate length or uniqueness.\n function ensureSortedTokens(IERC20[] memory tokens) internal pure {\n IERC20 previous = tokens[0];\n\n for (uint256 i = 1; i < tokens.length; ++i) {\n IERC20 current = tokens[i];\n\n if (previous > current) {\n revert TokensNotSorted();\n }\n\n previous = current;\n }\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n/**\n * @notice This library represents a data structure for packing a token's current raw and derived balances. A derived\n * balance can be the \"last\" live balance scaled18 of the raw token, or the balance of the wrapped version of the\n * token in a vault buffer, among others.\n *\n * @dev We could use a Solidity struct to pack balance values together in a single storage slot, but unfortunately\n * Solidity only allows for structs to live in either storage, calldata or memory. Because a memory struct still takes\n * up a slot in the stack (to store its memory location), and because the entire balance fits in a single stack slot\n * (two 128 bit values), using memory is strictly less gas performant. Therefore, we do manual packing and unpacking.\n *\n * We could also use custom types now, but given the simplicity here, and the existing EnumerableMap type, it seemed\n * easier to leave it as a bytes32.\n */\nlibrary PackedTokenBalance {\n // The 'rawBalance' portion of the balance is stored in the least significant 128 bits of a 256 bit word, while the\n // The 'derivedBalance' part uses the remaining 128 bits.\n uint256 private constant _MAX_BALANCE = 2 ** (128) - 1;\n\n /// @notice One of the balances is above the maximum value that can be stored.\n error BalanceOverflow();\n\n function getBalanceRaw(bytes32 balance) internal pure returns (uint256) {\n return uint256(balance) & _MAX_BALANCE;\n }\n\n function getBalanceDerived(bytes32 balance) internal pure returns (uint256) {\n return uint256(balance >> 128) & _MAX_BALANCE;\n }\n\n /// @dev Sets only the raw balance of balances and returns the new bytes32 balance.\n function setBalanceRaw(bytes32 balance, uint256 newBalanceRaw) internal pure returns (bytes32) {\n return toPackedBalance(newBalanceRaw, getBalanceDerived(balance));\n }\n\n /// @dev Sets only the derived balance of balances and returns the new bytes32 balance.\n function setBalanceDerived(bytes32 balance, uint256 newBalanceDerived) internal pure returns (bytes32) {\n return toPackedBalance(getBalanceRaw(balance), newBalanceDerived);\n }\n\n /// @dev Validates the size of `balanceRaw` and `balanceDerived`, then returns a packed balance bytes32.\n function toPackedBalance(uint256 balanceRaw, uint256 balanceDerived) internal pure returns (bytes32) {\n if (balanceRaw > _MAX_BALANCE || balanceDerived > _MAX_BALANCE) {\n revert BalanceOverflow();\n }\n\n return _pack(balanceRaw, balanceDerived);\n }\n\n /// @dev Decode and fetch both balances.\n function fromPackedBalance(bytes32 balance) internal pure returns (uint256 balanceRaw, uint256 balanceDerived) {\n return (getBalanceRaw(balance), getBalanceDerived(balance));\n }\n\n /// @dev Packs two uint128 values into a packed balance bytes32. It does not check balance sizes.\n function _pack(uint256 leastSignificant, uint256 mostSignificant) private pure returns (bytes32) {\n return bytes32((mostSignificant << 128) + leastSignificant);\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n// solhint-disable no-inline-assembly\n\n/// @notice Support `quoteAndRevert`: a v2-style query which always reverts, and returns the result in the return data.\nlibrary RevertCodec {\n /**\n * @notice On success of the primary operation in a `quoteAndRevert`, this error is thrown with the return data.\n * @param result The result of the query operation\n */\n error Result(bytes result);\n\n /// @notice Handle the \"reverted without a reason\" case (i.e., no return data).\n error ErrorSelectorNotFound();\n\n function catchEncodedResult(bytes memory resultRaw) internal pure returns (bytes memory) {\n bytes4 errorSelector = RevertCodec.parseSelector(resultRaw);\n if (errorSelector != Result.selector) {\n // Bubble up error message if the revert reason is not the expected one.\n RevertCodec.bubbleUpRevert(resultRaw);\n }\n\n uint256 resultRawLength = resultRaw.length;\n assembly (\"memory-safe\") {\n resultRaw := add(resultRaw, 0x04) // Slice the sighash\n mstore(resultRaw, sub(resultRawLength, 4)) // Set proper length\n }\n\n return abi.decode(resultRaw, (bytes));\n }\n\n /// @dev Returns the first 4 bytes in an array, reverting if the length is < 4.\n function parseSelector(bytes memory callResult) internal pure returns (bytes4 errorSelector) {\n if (callResult.length < 4) {\n revert ErrorSelectorNotFound();\n }\n assembly (\"memory-safe\") {\n errorSelector := mload(add(callResult, 0x20)) // Load the first 4 bytes from data (skip length offset)\n }\n }\n\n /// @dev Taken from Openzeppelin's Address.\n function bubbleUpRevert(bytes memory returnData) internal pure {\n // Look for revert reason and bubble it up if present.\n if (returnData.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly.\n\n assembly (\"memory-safe\") {\n let return_data_size := mload(returnData)\n revert(add(32, returnData), return_data_size)\n }\n } else {\n revert ErrorSelectorNotFound();\n }\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { FixedPoint } from \"../math/FixedPoint.sol\";\nimport { InputHelpers } from \"./InputHelpers.sol\";\n\n/**\n * @notice Helper functions to apply/undo token decimal and rate adjustments, rounding in the direction indicated.\n * @dev To simplify Pool logic, all token balances and amounts are normalized to behave as if the token had\n * 18 decimals. When comparing DAI (18 decimals) and USDC (6 decimals), 1 USDC and 1 DAI would both be\n * represented as 1e18. This allows us to not consider differences in token decimals in the internal Pool\n * math, simplifying it greatly.\n *\n * The Vault does not support tokens with more than 18 decimals (see `_MAX_TOKEN_DECIMALS` in `VaultStorage`),\n * or tokens that do not implement `IERC20Metadata.decimals`.\n *\n * These helpers can also be used to scale amounts by other 18-decimal floating point values, such as rates.\n */\nlibrary ScalingHelpers {\n using FixedPoint for *;\n using ScalingHelpers for uint256;\n\n /***************************************************************************\n Single Value Functions\n ***************************************************************************/\n\n /**\n * @notice Applies `scalingFactor` and `tokenRate` to `amount`.\n * @dev This may result in a larger or equal value, depending on whether it needed scaling/rate adjustment or not.\n * The result is rounded down.\n *\n * @param amount Amount to be scaled up to 18 decimals\n * @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n * @param tokenRate The token rate scaling factor\n * @return result The final 18-decimal precision result, rounded down\n */\n function toScaled18ApplyRateRoundDown(\n uint256 amount,\n uint256 scalingFactor,\n uint256 tokenRate\n ) internal pure returns (uint256) {\n return (amount * scalingFactor).mulDown(tokenRate);\n }\n\n /**\n * @notice Applies `scalingFactor` and `tokenRate` to `amount`.\n * @dev This may result in a larger or equal value, depending on whether it needed scaling/rate adjustment or not.\n * The result is rounded up.\n *\n * @param amount Amount to be scaled up to 18 decimals\n * @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n * @param tokenRate The token rate scaling factor\n * @return result The final 18-decimal precision result, rounded up\n */\n function toScaled18ApplyRateRoundUp(\n uint256 amount,\n uint256 scalingFactor,\n uint256 tokenRate\n ) internal pure returns (uint256) {\n return (amount * scalingFactor).mulUp(tokenRate);\n }\n\n /**\n * @notice Reverses the `scalingFactor` and `tokenRate` applied to `amount`.\n * @dev This may result in a smaller or equal value, depending on whether it needed scaling/rate adjustment or not.\n * The result is rounded down.\n *\n * @param amount Amount to be scaled down to native token decimals\n * @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n * @param tokenRate The token rate scaling factor\n * @return result The final native decimal result, rounded down\n */\n function toRawUndoRateRoundDown(\n uint256 amount,\n uint256 scalingFactor,\n uint256 tokenRate\n ) internal pure returns (uint256) {\n // Do division last. Scaling factor is not a FP18, but a FP18 normalized by FP(1).\n // `scalingFactor * tokenRate` is a precise FP18, so there is no rounding direction here.\n return FixedPoint.divDown(amount, scalingFactor * tokenRate);\n }\n\n /**\n * @notice Reverses the `scalingFactor` and `tokenRate` applied to `amount`.\n * @dev This may result in a smaller or equal value, depending on whether it needed scaling/rate adjustment or not.\n * The result is rounded up.\n *\n * @param amount Amount to be scaled down to native token decimals\n * @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n * @param tokenRate The token rate scaling factor\n * @return result The final native decimal result, rounded up\n */\n function toRawUndoRateRoundUp(\n uint256 amount,\n uint256 scalingFactor,\n uint256 tokenRate\n ) internal pure returns (uint256) {\n // Do division last. Scaling factor is not a FP18, but a FP18 normalized by FP(1).\n // `scalingFactor * tokenRate` is a precise FP18, so there is no rounding direction here.\n return FixedPoint.divUp(amount, scalingFactor * tokenRate);\n }\n\n /***************************************************************************\n Array Functions\n ***************************************************************************/\n\n function copyToArray(uint256[] memory from, uint256[] memory to) internal pure {\n uint256 length = from.length;\n InputHelpers.ensureInputLengthMatch(length, to.length);\n\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n mcopy(add(to, 0x20), add(from, 0x20), mul(length, 0x20))\n }\n }\n\n /**\n * @notice Same as `toScaled18ApplyRateRoundDown`, but for an entire array.\n * @dev This function does not return anything, but instead *mutates* the `amounts` array.\n * @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n * @param scalingFactors The token decimal scaling factors, sorted in token registration order\n * @param tokenRates The token rate scaling factors, sorted in token registration order\n */\n function toScaled18ApplyRateRoundDownArray(\n uint256[] memory amounts,\n uint256[] memory scalingFactors,\n uint256[] memory tokenRates\n ) internal pure {\n uint256 length = amounts.length;\n InputHelpers.ensureInputLengthMatch(length, scalingFactors.length, tokenRates.length);\n\n for (uint256 i = 0; i < length; ++i) {\n amounts[i] = amounts[i].toScaled18ApplyRateRoundDown(scalingFactors[i], tokenRates[i]);\n }\n }\n\n /**\n * @notice Same as `toScaled18ApplyRateRoundDown`, but returns a new array, leaving the original intact.\n * @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n * @param scalingFactors The token decimal scaling factors, sorted in token registration order\n * @param tokenRates The token rate scaling factors, sorted in token registration order\n * @return results The final 18 decimal results, sorted in token registration order, rounded down\n */\n function copyToScaled18ApplyRateRoundDownArray(\n uint256[] memory amounts,\n uint256[] memory scalingFactors,\n uint256[] memory tokenRates\n ) internal pure returns (uint256[] memory) {\n uint256 length = amounts.length;\n InputHelpers.ensureInputLengthMatch(length, scalingFactors.length, tokenRates.length);\n uint256[] memory amountsScaled18 = new uint256[](length);\n\n for (uint256 i = 0; i < length; ++i) {\n amountsScaled18[i] = amounts[i].toScaled18ApplyRateRoundDown(scalingFactors[i], tokenRates[i]);\n }\n\n return amountsScaled18;\n }\n\n /**\n * @notice Same as `toScaled18ApplyRateRoundUp`, but for an entire array.\n * @dev This function does not return anything, but instead *mutates* the `amounts` array.\n * @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n * @param scalingFactors The token decimal scaling factors, sorted in token registration order\n * @param tokenRates The token rate scaling factors, sorted in token registration order\n */\n function toScaled18ApplyRateRoundUpArray(\n uint256[] memory amounts,\n uint256[] memory scalingFactors,\n uint256[] memory tokenRates\n ) internal pure {\n uint256 length = amounts.length;\n InputHelpers.ensureInputLengthMatch(length, scalingFactors.length, tokenRates.length);\n\n for (uint256 i = 0; i < length; ++i) {\n amounts[i] = amounts[i].toScaled18ApplyRateRoundUp(scalingFactors[i], tokenRates[i]);\n }\n }\n\n /**\n * @notice Same as `toScaled18ApplyRateRoundUp`, but returns a new array, leaving the original intact.\n * @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n * @param scalingFactors The token decimal scaling factors, sorted in token registration order\n * @param tokenRates The token rate scaling factors, sorted in token registration order\n * @return results The final 18 decimal results, sorted in token registration order, rounded up\n */\n function copyToScaled18ApplyRateRoundUpArray(\n uint256[] memory amounts,\n uint256[] memory scalingFactors,\n uint256[] memory tokenRates\n ) internal pure returns (uint256[] memory) {\n uint256 length = amounts.length;\n InputHelpers.ensureInputLengthMatch(length, scalingFactors.length, tokenRates.length);\n uint256[] memory amountsScaled18 = new uint256[](length);\n\n for (uint256 i = 0; i < length; ++i) {\n amountsScaled18[i] = amounts[i].toScaled18ApplyRateRoundUp(scalingFactors[i], tokenRates[i]);\n }\n\n return amountsScaled18;\n }\n\n /**\n * @notice Rounds up a rate informed by a rate provider.\n * @dev Rates calculated by an external rate provider have rounding errors. Intuitively, a rate provider\n * rounds the rate down so the pool math is executed with conservative amounts. However, when upscaling or\n * downscaling the amount out, the rate should be rounded up to make sure the amounts scaled are conservative.\n * @param rate The original rate\n * @return roundedRate The final rate, with rounding applied\n */\n function computeRateRoundUp(uint256 rate) internal pure returns (uint256) {\n uint256 roundedRate;\n // If rate is divisible by FixedPoint.ONE, roundedRate and rate will be equal. It means that rate has 18 zeros,\n // so there's no rounding issue and the rate should not be rounded up.\n unchecked {\n roundedRate = (rate / FixedPoint.ONE) * FixedPoint.ONE;\n }\n return roundedRate == rate ? rate : rate + 1;\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { StorageSlotExtension } from \"../openzeppelin/StorageSlotExtension.sol\";\nimport { SlotDerivation } from \"../openzeppelin/SlotDerivation.sol\";\n\ntype TokenDeltaMappingSlotType is bytes32;\ntype AddressToUintMappingSlot is bytes32;\ntype UintToAddressToBooleanMappingSlot is bytes32;\ntype AddressArraySlotType is bytes32;\n\n/**\n * @notice Helper functions to read and write values from transient storage, including support for arrays and mappings.\n * @dev This is temporary, based on Open Zeppelin's partially released library. When the final version is published, we\n * should be able to remove our copies and import directly from OZ. When Solidity catches up and puts direct support\n * for transient storage in the language, we should be able to get rid of this altogether.\n *\n * This only works on networks where EIP-1153 is supported.\n */\nlibrary TransientStorageHelpers {\n using SlotDerivation for *;\n using StorageSlotExtension for *;\n\n /// @notice An index is out of bounds on an array operation (e.g., at).\n error TransientIndexOutOfBounds();\n\n // Calculate the slot for a transient storage variable.\n function calculateSlot(string memory domain, string memory varName) internal pure returns (bytes32) {\n return\n keccak256(\n abi.encode(uint256(keccak256(abi.encodePacked(\"balancer-labs.v3.storage.\", domain, \".\", varName))) - 1)\n ) & ~bytes32(uint256(0xff));\n }\n\n /***************************************************************************\n Mappings\n ***************************************************************************/\n\n function tGet(TokenDeltaMappingSlotType slot, IERC20 k1) internal view returns (int256) {\n return TokenDeltaMappingSlotType.unwrap(slot).deriveMapping(address(k1)).asInt256().tload();\n }\n\n function tSet(TokenDeltaMappingSlotType slot, IERC20 k1, int256 value) internal {\n TokenDeltaMappingSlotType.unwrap(slot).deriveMapping(address(k1)).asInt256().tstore(value);\n }\n\n function tGet(AddressToUintMappingSlot slot, address key) internal view returns (uint256) {\n return AddressToUintMappingSlot.unwrap(slot).deriveMapping(key).asUint256().tload();\n }\n\n function tSet(AddressToUintMappingSlot slot, address key, uint256 value) internal {\n AddressToUintMappingSlot.unwrap(slot).deriveMapping(key).asUint256().tstore(value);\n }\n\n function tGet(\n UintToAddressToBooleanMappingSlot slot,\n uint256 uintKey,\n address addressKey\n ) internal view returns (bool) {\n return\n UintToAddressToBooleanMappingSlot\n .unwrap(slot)\n .deriveMapping(uintKey)\n .deriveMapping(addressKey)\n .asBoolean()\n .tload();\n }\n\n function tSet(UintToAddressToBooleanMappingSlot slot, uint256 uintKey, address addressKey, bool value) internal {\n UintToAddressToBooleanMappingSlot\n .unwrap(slot)\n .deriveMapping(uintKey)\n .deriveMapping(addressKey)\n .asBoolean()\n .tstore(value);\n }\n\n // Implement the common \"+=\" operation: map[key] += value.\n function tAdd(AddressToUintMappingSlot slot, address key, uint256 value) internal {\n AddressToUintMappingSlot.unwrap(slot).deriveMapping(key).asUint256().tstore(tGet(slot, key) + value);\n }\n\n function tSub(AddressToUintMappingSlot slot, address key, uint256 value) internal {\n AddressToUintMappingSlot.unwrap(slot).deriveMapping(key).asUint256().tstore(tGet(slot, key) - value);\n }\n\n /***************************************************************************\n Arrays\n ***************************************************************************/\n\n function tLength(AddressArraySlotType slot) internal view returns (uint256) {\n return AddressArraySlotType.unwrap(slot).asUint256().tload();\n }\n\n function tAt(AddressArraySlotType slot, uint256 index) internal view returns (address) {\n _ensureIndexWithinBounds(slot, index);\n return AddressArraySlotType.unwrap(slot).deriveArray().offset(index).asAddress().tload();\n }\n\n function tSet(AddressArraySlotType slot, uint256 index, address value) internal {\n _ensureIndexWithinBounds(slot, index);\n AddressArraySlotType.unwrap(slot).deriveArray().offset(index).asAddress().tstore(value);\n }\n\n function _ensureIndexWithinBounds(AddressArraySlotType slot, uint256 index) private view {\n uint256 length = AddressArraySlotType.unwrap(slot).asUint256().tload();\n if (index >= length) {\n revert TransientIndexOutOfBounds();\n }\n }\n\n function tUncheckedAt(AddressArraySlotType slot, uint256 index) internal view returns (address) {\n return AddressArraySlotType.unwrap(slot).deriveArray().offset(index).asAddress().tload();\n }\n\n function tUncheckedSet(AddressArraySlotType slot, uint256 index, address value) internal {\n AddressArraySlotType.unwrap(slot).deriveArray().offset(index).asAddress().tstore(value);\n }\n\n function tPush(AddressArraySlotType slot, address value) internal {\n // Store the value at offset corresponding to the current length.\n uint256 length = AddressArraySlotType.unwrap(slot).asUint256().tload();\n AddressArraySlotType.unwrap(slot).deriveArray().offset(length).asAddress().tstore(value);\n // Update current length to consider the new value.\n AddressArraySlotType.unwrap(slot).asUint256().tstore(length + 1);\n }\n\n function tPop(AddressArraySlotType slot) internal returns (address value) {\n uint256 lastElementIndex = AddressArraySlotType.unwrap(slot).asUint256().tload() - 1;\n // Update length to last element. When the index is 0, the slot that holds the length is cleared out.\n AddressArraySlotType.unwrap(slot).asUint256().tstore(lastElementIndex);\n StorageSlotExtension.AddressSlotType lastElementSlot = AddressArraySlotType\n .unwrap(slot)\n .deriveArray()\n .offset(lastElementIndex)\n .asAddress();\n // Return last element.\n value = lastElementSlot.tload();\n // Clear value in temporary storage.\n lastElementSlot.tstore(address(0));\n }\n\n /***************************************************************************\n Uint256 Values\n ***************************************************************************/\n\n function tIncrement(StorageSlotExtension.Uint256SlotType slot) internal {\n slot.tstore(slot.tload() + 1);\n }\n\n function tDecrement(StorageSlotExtension.Uint256SlotType slot) internal {\n slot.tstore(slot.tload() - 1);\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IVersion } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\";\n\n/**\n * @notice Retrieves a contract's version from storage.\n * @dev The version is set at deployment time and cannot be changed. It would be immutable, but immutable strings\n * are not yet supported.\n *\n * Contracts like factories and pools should have versions. These typically take the form of JSON strings containing\n * detailed information about the deployment. For instance:\n *\n * `{name: 'ChildChainGaugeFactory', version: 2, deployment: '20230316-child-chain-gauge-factory-v2'}`\n */\ncontract Version is IVersion {\n string private _version;\n\n constructor(string memory version_) {\n _setVersion(version_);\n }\n\n /**\n * @notice Getter for the version.\n * @return version The stored contract version\n */\n function version() external view returns (string memory) {\n return _version;\n }\n\n /// @dev Internal setter that allows this contract to be used in proxies.\n function _setVersion(string memory newVersion) internal {\n _version = newVersion;\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { SignedMath } from \"@openzeppelin/contracts/utils/math/SignedMath.sol\";\nimport { Math } from \"@openzeppelin/contracts/utils/math/Math.sol\";\n\n/**\n * @notice Library for encoding and decoding values stored inside a 256 bit word.\n * @dev Typically used to pack multiple values in a single slot, saving gas by performing fewer storage accesses.\n *\n * Each value is defined by its size and the least significant bit in the word, also known as offset. For example, two\n * 128 bit values may be encoded in a word by assigning one an offset of 0, and the other an offset of 128.\n *\n * We could use Solidity structs to pack values together in a single storage slot instead of relying on a custom and\n * error-prone library, but unfortunately Solidity only allows for structs to live in either storage, calldata or\n * memory. Because a memory struct uses not just memory but also a slot in the stack (to store its memory location),\n * using memory for word-sized values (i.e. of 256 bits or less) is strictly less gas performant, and doesn't even\n * prevent stack-too-deep issues. This is compounded by the fact that Balancer contracts typically are memory-\n * intensive, and the cost of accessing memory increases quadratically with the number of allocated words. Manual\n * packing and unpacking is therefore the preferred approach.\n */\nlibrary WordCodec {\n using Math for uint256;\n using SignedMath for int256;\n\n // solhint-disable no-inline-assembly\n\n /// @notice Function called with an invalid value.\n error CodecOverflow();\n\n /// @notice Function called with an invalid bitLength or offset.\n error OutOfBounds();\n\n /***************************************************************************\n In-place Insertion\n ***************************************************************************/\n\n /**\n * @dev Inserts an unsigned integer of bitLength, shifted by an offset, into a 256 bit word,\n * replacing the old value. Returns the new word.\n */\n function insertUint(\n bytes32 word,\n uint256 value,\n uint256 offset,\n uint256 bitLength\n ) internal pure returns (bytes32 result) {\n _validateEncodingParams(value, offset, bitLength);\n // Equivalent to:\n // uint256 mask = (1 << bitLength) - 1;\n // bytes32 clearedWord = bytes32(uint256(word) & ~(mask << offset));\n // result = clearedWord | bytes32(value << offset);\n\n assembly (\"memory-safe\") {\n let mask := sub(shl(bitLength, 1), 1)\n let clearedWord := and(word, not(shl(offset, mask)))\n result := or(clearedWord, shl(offset, value))\n }\n }\n\n /**\n * @dev Inserts an address (160 bits), shifted by an offset, into a 256 bit word,\n * replacing the old value. Returns the new word.\n */\n function insertAddress(bytes32 word, address value, uint256 offset) internal pure returns (bytes32 result) {\n uint256 addressBitLength = 160;\n _validateEncodingParams(uint256(uint160(value)), offset, addressBitLength);\n // Equivalent to:\n // uint256 mask = (1 << bitLength) - 1;\n // bytes32 clearedWord = bytes32(uint256(word) & ~(mask << offset));\n // result = clearedWord | bytes32(value << offset);\n\n assembly (\"memory-safe\") {\n let mask := sub(shl(addressBitLength, 1), 1)\n let clearedWord := and(word, not(shl(offset, mask)))\n result := or(clearedWord, shl(offset, value))\n }\n }\n\n /**\n * @dev Inserts a signed integer shifted by an offset into a 256 bit word, replacing the old value. Returns\n * the new word.\n *\n * Assumes `value` can be represented using `bitLength` bits.\n */\n function insertInt(bytes32 word, int256 value, uint256 offset, uint256 bitLength) internal pure returns (bytes32) {\n _validateEncodingParams(value, offset, bitLength);\n\n uint256 mask = (1 << bitLength) - 1;\n bytes32 clearedWord = bytes32(uint256(word) & ~(mask << offset));\n // Integer values need masking to remove the upper bits of negative values.\n return clearedWord | bytes32((uint256(value) & mask) << offset);\n }\n\n /***************************************************************************\n Encoding\n ***************************************************************************/\n\n /**\n * @dev Encodes an unsigned integer shifted by an offset. Ensures value fits within\n * `bitLength` bits.\n *\n * The return value can be ORed bitwise with other encoded values to form a 256 bit word.\n */\n function encodeUint(uint256 value, uint256 offset, uint256 bitLength) internal pure returns (bytes32) {\n _validateEncodingParams(value, offset, bitLength);\n\n return bytes32(value << offset);\n }\n\n /**\n * @dev Encodes a signed integer shifted by an offset.\n *\n * The return value can be ORed bitwise with other encoded values to form a 256 bit word.\n */\n function encodeInt(int256 value, uint256 offset, uint256 bitLength) internal pure returns (bytes32) {\n _validateEncodingParams(value, offset, bitLength);\n\n uint256 mask = (1 << bitLength) - 1;\n // Integer values need masking to remove the upper bits of negative values.\n return bytes32((uint256(value) & mask) << offset);\n }\n\n /***************************************************************************\n Decoding\n ***************************************************************************/\n\n /// @dev Decodes and returns an unsigned integer with `bitLength` bits, shifted by an offset, from a 256 bit word.\n function decodeUint(bytes32 word, uint256 offset, uint256 bitLength) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = uint256(word >> offset) & ((1 << bitLength) - 1);\n\n assembly (\"memory-safe\") {\n result := and(shr(offset, word), sub(shl(bitLength, 1), 1))\n }\n }\n\n /// @dev Decodes and returns a signed integer with `bitLength` bits, shifted by an offset, from a 256 bit word.\n function decodeInt(bytes32 word, uint256 offset, uint256 bitLength) internal pure returns (int256 result) {\n int256 maxInt = int256((1 << (bitLength - 1)) - 1);\n uint256 mask = (1 << bitLength) - 1;\n\n int256 value = int256(uint256(word >> offset) & mask);\n // In case the decoded value is greater than the max positive integer that can be represented with bitLength\n // bits, we know it was originally a negative integer. Therefore, we mask it to restore the sign in the 256 bit\n // representation.\n //\n // Equivalent to:\n // result = value > maxInt ? (value | int256(~mask)) : value;\n\n assembly (\"memory-safe\") {\n result := or(mul(gt(value, maxInt), not(mask)), value)\n }\n }\n\n /// @dev Decodes and returns an address (160 bits), shifted by an offset, from a 256 bit word.\n function decodeAddress(bytes32 word, uint256 offset) internal pure returns (address result) {\n // Equivalent to:\n // result = address(word >> offset) & ((1 << bitLength) - 1);\n\n assembly (\"memory-safe\") {\n result := and(shr(offset, word), sub(shl(160, 1), 1))\n }\n }\n\n /***************************************************************************\n Special Cases\n ***************************************************************************/\n\n /// @dev Decodes and returns a boolean shifted by an offset from a 256 bit word.\n function decodeBool(bytes32 word, uint256 offset) internal pure returns (bool result) {\n // Equivalent to:\n // result = (uint256(word >> offset) & 1) == 1;\n\n assembly (\"memory-safe\") {\n result := and(shr(offset, word), 1)\n }\n }\n\n /**\n * @dev Inserts a boolean value shifted by an offset into a 256 bit word, replacing the old value.\n * Returns the new word.\n */\n function insertBool(bytes32 word, bool value, uint256 offset) internal pure returns (bytes32 result) {\n // Equivalent to:\n // bytes32 clearedWord = bytes32(uint256(word) & ~(1 << offset));\n // bytes32 referenceInsertBool = clearedWord | bytes32(uint256(value ? 1 : 0) << offset);\n\n assembly (\"memory-safe\") {\n let clearedWord := and(word, not(shl(offset, 1)))\n result := or(clearedWord, shl(offset, value))\n }\n }\n\n /***************************************************************************\n Helpers\n ***************************************************************************/\n\n function _validateEncodingParams(uint256 value, uint256 offset, uint256 bitLength) private pure {\n if (offset >= 256) {\n revert OutOfBounds();\n }\n // We never accept 256 bit values (which would make the codec pointless), and the larger the offset the smaller\n // the maximum bit length.\n if (!(bitLength >= 1 && bitLength <= Math.min(255, 256 - offset))) {\n revert OutOfBounds();\n }\n\n // Testing unsigned values for size is straightforward: their upper bits must be cleared.\n if (value >> bitLength != 0) {\n revert CodecOverflow();\n }\n }\n\n function _validateEncodingParams(int256 value, uint256 offset, uint256 bitLength) private pure {\n if (offset >= 256) {\n revert OutOfBounds();\n }\n // We never accept 256 bit values (which would make the codec pointless), and the larger the offset the smaller\n // the maximum bit length.\n if (!(bitLength >= 1 && bitLength <= Math.min(255, 256 - offset))) {\n revert OutOfBounds();\n }\n\n // Testing signed values for size is a bit more involved.\n if (value >= 0) {\n // For positive values, we can simply check that the upper bits are clear. Notice we remove one bit from the\n // length for the sign bit.\n if (value >> (bitLength - 1) != 0) {\n revert CodecOverflow();\n }\n } else {\n // Negative values can receive the same treatment by making them positive, with the caveat that the range\n // for negative values in two's complement supports one more value than for the positive case.\n if ((value + 1).abs() >> (bitLength - 1) != 0) {\n revert CodecOverflow();\n }\n }\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { LogExpMath } from \"./LogExpMath.sol\";\n\n/// @notice Support 18-decimal fixed point arithmetic. All Vault calculations use this for high and uniform precision.\nlibrary FixedPoint {\n /// @notice Attempted division by zero.\n error ZeroDivision();\n\n // solhint-disable no-inline-assembly\n // solhint-disable private-vars-leading-underscore\n\n uint256 internal constant ONE = 1e18; // 18 decimal places\n uint256 internal constant TWO = 2 * ONE;\n uint256 internal constant FOUR = 4 * ONE;\n uint256 internal constant MAX_POW_RELATIVE_ERROR = 10000; // 10^(-14)\n\n function mulDown(uint256 a, uint256 b) internal pure returns (uint256) {\n // Multiplication overflow protection is provided by Solidity 0.8.x.\n uint256 product = a * b;\n\n return product / ONE;\n }\n\n function mulUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Multiplication overflow protection is provided by Solidity 0.8.x.\n uint256 product = a * b;\n\n // Equivalent to:\n // result = product == 0 ? 0 : ((product - 1) / FixedPoint.ONE) + 1\n assembly (\"memory-safe\") {\n result := mul(iszero(iszero(product)), add(div(sub(product, 1), ONE), 1))\n }\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity 0.8 reverts with a Panic code (0x11) if the multiplication overflows.\n uint256 aInflated = a * ONE;\n\n // Solidity 0.8 reverts with a \"Division by Zero\" Panic code (0x12) if b is zero\n return aInflated / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n return mulDivUp(a, ONE, b);\n }\n\n /// @dev Return (a * b) / c, rounding up.\n function mulDivUp(uint256 a, uint256 b, uint256 c) internal pure returns (uint256 result) {\n // This check is required because Yul's `div` doesn't revert on c==0.\n if (c == 0) {\n revert ZeroDivision();\n }\n\n // Multiple overflow protection is done by Solidity 0.8.x.\n uint256 product = a * b;\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = a == 0 ? 0 : (a * b - 1) / c + 1\n assembly (\"memory-safe\") {\n result := mul(iszero(iszero(product)), add(div(sub(product, 1), c), 1))\n }\n }\n\n /**\n * @dev Version of divUp when the input is raw (i.e., already \"inflated\"). For instance,\n * invariant * invariant (36 decimals) vs. invariant.mulDown(invariant) (18 decimal FP).\n * This can occur in calculations with many successive multiplications and divisions, and\n * we want to minimize the number of operations by avoiding unnecessary scaling by ONE.\n */\n function divUpRaw(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // This check is required because Yul's `div` doesn't revert on b==0.\n if (b == 0) {\n revert ZeroDivision();\n }\n\n // Equivalent to:\n // result = a == 0 ? 0 : 1 + (a - 1) / b\n assembly (\"memory-safe\") {\n result := mul(iszero(iszero(a)), add(1, div(sub(a, 1), b)))\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n * the true value (that is, the error function expected - actual is always positive).\n */\n function powDown(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulDown(x, x);\n } else if (y == FOUR) {\n uint256 square = mulDown(x, x);\n return mulDown(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = mulUp(raw, MAX_POW_RELATIVE_ERROR) + 1;\n\n if (raw < maxError) {\n return 0;\n } else {\n unchecked {\n return raw - maxError;\n }\n }\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n * the true value (that is, the error function expected - actual is always negative).\n */\n function powUp(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulUp(x, x);\n } else if (y == FOUR) {\n uint256 square = mulUp(x, x);\n return mulUp(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = mulUp(raw, MAX_POW_RELATIVE_ERROR) + 1;\n\n return raw + maxError;\n }\n }\n\n /**\n * @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n *\n * Useful when computing the complement for values with some level of relative error, as it strips this error and\n * prevents intermediate negative values.\n */\n function complement(uint256 x) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (x < ONE) ? (ONE - x) : 0\n assembly (\"memory-safe\") {\n result := mul(lt(x, ONE), sub(ONE, x))\n }\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.24;\n\n// solhint-disable\n\n/**\n * @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n *\n * Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n * exponentiation and logarithm (where the base is Euler's number).\n *\n * All math operations are unchecked in order to save gas.\n *\n * @author Fernando Martinelli - @fernandomartinelli\n * @author Sergio Yuhjtman - @sergioyuhjtman\n * @author Daniel Fernandez - @dmf7z\n */\nlibrary LogExpMath {\n /// @notice This error is thrown when a base is not within an acceptable range.\n error BaseOutOfBounds();\n\n /// @notice This error is thrown when a exponent is not within an acceptable range.\n error ExponentOutOfBounds();\n\n /// @notice This error is thrown when the exponent * ln(base) is not within an acceptable range.\n error ProductOutOfBounds();\n\n /// @notice This error is thrown when an exponent used in the exp function is not within an acceptable range.\n error InvalidExponent();\n\n /// @notice This error is thrown when a variable or result is not within the acceptable bounds defined in the function.\n error OutOfBounds();\n\n // All fixed point multiplications and divisions are inlined. This means we need to divide by ONE when multiplying\n // two numbers, and multiply by ONE when dividing them.\n\n // All arguments and return values are 18 decimal fixed point numbers.\n int256 constant ONE_18 = 1e18;\n\n // Internally, intermediate values are computed with higher precision as 20 decimal fixed point numbers, and in the\n // case of ln36, 36 decimals.\n int256 constant ONE_20 = 1e20;\n int256 constant ONE_36 = 1e36;\n\n // The domain of natural exponentiation is bound by the word size and number of decimals used.\n //\n // Because internally the result will be stored using 20 decimals, the largest possible result is\n // (2^255 - 1) / 10^20, which makes the largest exponent ln((2^255 - 1) / 10^20) = 130.700829182905140221.\n // The smallest possible result is 10^(-18), which makes largest negative argument\n // ln(10^(-18)) = -41.446531673892822312.\n // We use 130.0 and -41.0 to have some safety margin.\n int256 constant MAX_NATURAL_EXPONENT = 130e18;\n int256 constant MIN_NATURAL_EXPONENT = -41e18;\n\n // Bounds for ln_36's argument. Both ln(0.9) and ln(1.1) can be represented with 36 decimal places in a fixed point\n // 256 bit integer.\n int256 constant LN_36_LOWER_BOUND = ONE_18 - 1e17;\n int256 constant LN_36_UPPER_BOUND = ONE_18 + 1e17;\n\n uint256 constant MILD_EXPONENT_BOUND = 2 ** 254 / uint256(ONE_20);\n\n // 18 decimal constants\n int256 constant x0 = 128000000000000000000; // 2ˆ7\n int256 constant a0 = 38877084059945950922200000000000000000000000000000000000; // eˆ(x0) (no decimals)\n int256 constant x1 = 64000000000000000000; // 2ˆ6\n int256 constant a1 = 6235149080811616882910000000; // eˆ(x1) (no decimals)\n\n // 20 decimal constants\n int256 constant x2 = 3200000000000000000000; // 2ˆ5\n int256 constant a2 = 7896296018268069516100000000000000; // eˆ(x2)\n int256 constant x3 = 1600000000000000000000; // 2ˆ4\n int256 constant a3 = 888611052050787263676000000; // eˆ(x3)\n int256 constant x4 = 800000000000000000000; // 2ˆ3\n int256 constant a4 = 298095798704172827474000; // eˆ(x4)\n int256 constant x5 = 400000000000000000000; // 2ˆ2\n int256 constant a5 = 5459815003314423907810; // eˆ(x5)\n int256 constant x6 = 200000000000000000000; // 2ˆ1\n int256 constant a6 = 738905609893065022723; // eˆ(x6)\n int256 constant x7 = 100000000000000000000; // 2ˆ0\n int256 constant a7 = 271828182845904523536; // eˆ(x7)\n int256 constant x8 = 50000000000000000000; // 2ˆ-1\n int256 constant a8 = 164872127070012814685; // eˆ(x8)\n int256 constant x9 = 25000000000000000000; // 2ˆ-2\n int256 constant a9 = 128402541668774148407; // eˆ(x9)\n int256 constant x10 = 12500000000000000000; // 2ˆ-3\n int256 constant a10 = 113314845306682631683; // eˆ(x10)\n int256 constant x11 = 6250000000000000000; // 2ˆ-4\n int256 constant a11 = 106449445891785942956; // eˆ(x11)\n\n /**\n * @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n *\n * Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function pow(uint256 x, uint256 y) internal pure returns (uint256) {\n if (y == 0) {\n // We solve the 0^0 indetermination by making it equal one.\n return uint256(ONE_18);\n }\n\n if (x == 0) {\n return 0;\n }\n\n // Instead of computing x^y directly, we instead rely on the properties of logarithms and exponentiation to\n // arrive at that result. In particular, exp(ln(x)) = x, and ln(x^y) = y * ln(x). This means\n // x^y = exp(y * ln(x)).\n\n // The ln function takes a signed value, so we need to make sure x fits in the signed 256 bit range.\n if (x >> 255 != 0) {\n revert BaseOutOfBounds();\n }\n int256 x_int256 = int256(x);\n\n // We will compute y * ln(x) in a single step. Depending on the value of x, we can either use ln or ln_36. In\n // both cases, we leave the division by ONE_18 (due to fixed point multiplication) to the end.\n\n // This prevents y * ln(x) from overflowing, and at the same time guarantees y fits in the signed 256 bit range.\n if (y >= MILD_EXPONENT_BOUND) {\n revert ExponentOutOfBounds();\n }\n int256 y_int256 = int256(y);\n\n int256 logx_times_y;\n unchecked {\n if (LN_36_LOWER_BOUND < x_int256 && x_int256 < LN_36_UPPER_BOUND) {\n int256 ln_36_x = _ln_36(x_int256);\n\n // ln_36_x has 36 decimal places, so multiplying by y_int256 isn't as straightforward, since we can't just\n // bring y_int256 to 36 decimal places, as it might overflow. Instead, we perform two 18 decimal\n // multiplications and add the results: one with the first 18 decimals of ln_36_x, and one with the\n // (downscaled) last 18 decimals.\n logx_times_y = ((ln_36_x / ONE_18) * y_int256 + ((ln_36_x % ONE_18) * y_int256) / ONE_18);\n } else {\n logx_times_y = _ln(x_int256) * y_int256;\n }\n logx_times_y /= ONE_18;\n }\n\n // Finally, we compute exp(y * ln(x)) to arrive at x^y\n if (!(MIN_NATURAL_EXPONENT <= logx_times_y && logx_times_y <= MAX_NATURAL_EXPONENT)) {\n revert ProductOutOfBounds();\n }\n\n return uint256(exp(logx_times_y));\n }\n\n /**\n * @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n *\n * Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function exp(int256 x) internal pure returns (int256) {\n if (!(x >= MIN_NATURAL_EXPONENT && x <= MAX_NATURAL_EXPONENT)) {\n revert InvalidExponent();\n }\n\n // We avoid using recursion here because zkSync doesn't support it.\n bool negativeExponent = false;\n\n if (x < 0) {\n // We only handle positive exponents: e^(-x) is computed as 1 / e^x. We can safely make x positive since it\n // fits in the signed 256 bit range (as it is larger than MIN_NATURAL_EXPONENT). In the negative\n // exponent case, compute e^x, then return 1 / result.\n unchecked {\n x = -x;\n }\n negativeExponent = true;\n }\n\n // First, we use the fact that e^(x+y) = e^x * e^y to decompose x into a sum of powers of two, which we call x_n,\n // where x_n == 2^(7 - n), and e^x_n = a_n has been precomputed. We choose the first x_n, x0, to equal 2^7\n // because all larger powers are larger than MAX_NATURAL_EXPONENT, and therefore not present in the\n // decomposition.\n // At the end of this process we will have the product of all e^x_n = a_n that apply, and the remainder of this\n // decomposition, which will be lower than the smallest x_n.\n // exp(x) = k_0 * a_0 * k_1 * a_1 * ... + k_n * a_n * exp(remainder), where each k_n equals either 0 or 1.\n // We mutate x by subtracting x_n, making it the remainder of the decomposition.\n\n // The first two a_n (e^(2^7) and e^(2^6)) are too large if stored as 18 decimal numbers, and could cause\n // intermediate overflows. Instead we store them as plain integers, with 0 decimals.\n // Additionally, x0 + x1 is larger than MAX_NATURAL_EXPONENT, which means they will not both be present in the\n // decomposition.\n\n // For each x_n, we test if that term is present in the decomposition (if x is larger than it), and if so deduct\n // it and compute the accumulated product.\n\n int256 firstAN;\n unchecked {\n if (x >= x0) {\n x -= x0;\n firstAN = a0;\n } else if (x >= x1) {\n x -= x1;\n firstAN = a1;\n } else {\n firstAN = 1; // One with no decimal places\n }\n\n // We now transform x into a 20 decimal fixed point number, to have enhanced precision when computing the\n // smaller terms.\n x *= 100;\n }\n\n // `product` is the accumulated product of all a_n (except a0 and a1), which starts at 20 decimal fixed point\n // one. Recall that fixed point multiplication requires dividing by ONE_20.\n int256 product = ONE_20;\n\n unchecked {\n if (x >= x2) {\n x -= x2;\n product = (product * a2) / ONE_20;\n }\n if (x >= x3) {\n x -= x3;\n product = (product * a3) / ONE_20;\n }\n if (x >= x4) {\n x -= x4;\n product = (product * a4) / ONE_20;\n }\n if (x >= x5) {\n x -= x5;\n product = (product * a5) / ONE_20;\n }\n if (x >= x6) {\n x -= x6;\n product = (product * a6) / ONE_20;\n }\n if (x >= x7) {\n x -= x7;\n product = (product * a7) / ONE_20;\n }\n if (x >= x8) {\n x -= x8;\n product = (product * a8) / ONE_20;\n }\n if (x >= x9) {\n x -= x9;\n product = (product * a9) / ONE_20;\n }\n }\n\n // x10 and x11 are unnecessary here since we have high enough precision already.\n\n // Now we need to compute e^x, where x is small (in particular, it is smaller than x9). We use the Taylor series\n // expansion for e^x: 1 + x + (x^2 / 2!) + (x^3 / 3!) + ... + (x^n / n!).\n\n int256 seriesSum = ONE_20; // The initial one in the sum, with 20 decimal places.\n int256 term; // Each term in the sum, where the nth term is (x^n / n!).\n\n // The first term is simply x.\n term = x;\n unchecked {\n seriesSum += term;\n\n // Each term (x^n / n!) equals the previous one times x, divided by n. Since x is a fixed point number,\n // multiplying by it requires dividing by ONE_20, but dividing by the non-fixed point n values does not.\n\n term = ((term * x) / ONE_20) / 2;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 3;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 4;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 5;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 6;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 7;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 8;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 9;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 10;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 11;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 12;\n seriesSum += term;\n\n // 12 Taylor terms are sufficient for 18 decimal precision.\n\n // We now have the first a_n (with no decimals), and the product of all other a_n present, and the Taylor\n // approximation of the exponentiation of the remainder (both with 20 decimals). All that remains is to multiply\n // all three (one 20 decimal fixed point multiplication, dividing by ONE_20, and one integer multiplication),\n // and then drop two digits to return an 18 decimal value.\n\n int256 result = (((product * seriesSum) / ONE_20) * firstAN) / 100;\n\n // We avoid using recursion here because zkSync doesn't support it.\n return negativeExponent ? (ONE_18 * ONE_18) / result : result;\n }\n }\n\n /// @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument.\n function log(int256 arg, int256 base) internal pure returns (int256) {\n // This performs a simple base change: log(arg, base) = ln(arg) / ln(base).\n\n // Both logBase and logArg are computed as 36 decimal fixed point numbers, either by using ln_36, or by\n // upscaling.\n\n int256 logBase;\n unchecked {\n if (LN_36_LOWER_BOUND < base && base < LN_36_UPPER_BOUND) {\n logBase = _ln_36(base);\n } else {\n logBase = _ln(base) * ONE_18;\n }\n }\n\n int256 logArg;\n unchecked {\n if (LN_36_LOWER_BOUND < arg && arg < LN_36_UPPER_BOUND) {\n logArg = _ln_36(arg);\n } else {\n logArg = _ln(arg) * ONE_18;\n }\n\n // When dividing, we multiply by ONE_18 to arrive at a result with 18 decimal places\n return (logArg * ONE_18) / logBase;\n }\n }\n\n /// @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n function ln(int256 a) internal pure returns (int256) {\n // The real natural logarithm is not defined for negative numbers or zero.\n if (a <= 0) {\n revert OutOfBounds();\n }\n if (LN_36_LOWER_BOUND < a && a < LN_36_UPPER_BOUND) {\n unchecked {\n return _ln_36(a) / ONE_18;\n }\n } else {\n return _ln(a);\n }\n }\n\n /// @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n function _ln(int256 a) private pure returns (int256) {\n // We avoid using recursion here because zkSync doesn't support it.\n bool negativeExponent = false;\n\n if (a < ONE_18) {\n // Since ln(a^k) = k * ln(a), we can compute ln(a) as ln(a) = ln((1/a)^(-1)) = - ln((1/a)). If a is less\n // than one, 1/a will be greater than one, so in this case we compute ln(1/a) and negate the final result.\n unchecked {\n a = (ONE_18 * ONE_18) / a;\n }\n negativeExponent = true;\n }\n\n // First, we use the fact that ln^(a * b) = ln(a) + ln(b) to decompose ln(a) into a sum of powers of two, which\n // we call x_n, where x_n == 2^(7 - n), which are the natural logarithm of precomputed quantities a_n (that is,\n // ln(a_n) = x_n). We choose the first x_n, x0, to equal 2^7 because the exponential of all larger powers cannot\n // be represented as 18 fixed point decimal numbers in 256 bits, and are therefore larger than a.\n // At the end of this process we will have the sum of all x_n = ln(a_n) that apply, and the remainder of this\n // decomposition, which will be lower than the smallest a_n.\n // ln(a) = k_0 * x_0 + k_1 * x_1 + ... + k_n * x_n + ln(remainder), where each k_n equals either 0 or 1.\n // We mutate a by subtracting a_n, making it the remainder of the decomposition.\n\n // For reasons related to how `exp` works, the first two a_n (e^(2^7) and e^(2^6)) are not stored as fixed point\n // numbers with 18 decimals, but instead as plain integers with 0 decimals, so we need to multiply them by\n // ONE_18 to convert them to fixed point.\n // For each a_n, we test if that term is present in the decomposition (if a is larger than it), and if so divide\n // by it and compute the accumulated sum.\n\n int256 sum = 0;\n unchecked {\n if (a >= a0 * ONE_18) {\n a /= a0; // Integer, not fixed point division\n sum += x0;\n }\n\n if (a >= a1 * ONE_18) {\n a /= a1; // Integer, not fixed point division\n sum += x1;\n }\n\n // All other a_n and x_n are stored as 20 digit fixed point numbers, so we convert the sum and a to this format.\n sum *= 100;\n a *= 100;\n\n // Because further a_n are 20 digit fixed point numbers, we multiply by ONE_20 when dividing by them.\n\n if (a >= a2) {\n a = (a * ONE_20) / a2;\n sum += x2;\n }\n\n if (a >= a3) {\n a = (a * ONE_20) / a3;\n sum += x3;\n }\n\n if (a >= a4) {\n a = (a * ONE_20) / a4;\n sum += x4;\n }\n\n if (a >= a5) {\n a = (a * ONE_20) / a5;\n sum += x5;\n }\n\n if (a >= a6) {\n a = (a * ONE_20) / a6;\n sum += x6;\n }\n\n if (a >= a7) {\n a = (a * ONE_20) / a7;\n sum += x7;\n }\n\n if (a >= a8) {\n a = (a * ONE_20) / a8;\n sum += x8;\n }\n\n if (a >= a9) {\n a = (a * ONE_20) / a9;\n sum += x9;\n }\n\n if (a >= a10) {\n a = (a * ONE_20) / a10;\n sum += x10;\n }\n\n if (a >= a11) {\n a = (a * ONE_20) / a11;\n sum += x11;\n }\n }\n\n // a is now a small number (smaller than a_11, which roughly equals 1.06). This means we can use a Taylor series\n // that converges rapidly for values of `a` close to one - the same one used in ln_36.\n // Let z = (a - 1) / (a + 1).\n // ln(a) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 20 digit fixed point division requires multiplying by ONE_20, and multiplication requires\n // division by ONE_20.\n unchecked {\n int256 z = ((a - ONE_20) * ONE_20) / (a + ONE_20);\n int256 z_squared = (z * z) / ONE_20;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 11;\n\n // 6 Taylor terms are sufficient for 36 decimal precision.\n\n // Finally, we multiply by 2 (non fixed point) to compute ln(remainder)\n seriesSum *= 2;\n\n // We now have the sum of all x_n present, and the Taylor approximation of the logarithm of the remainder (both\n // with 20 decimals). All that remains is to sum these two, and then drop two digits to return a 18 decimal\n // value.\n\n int256 result = (sum + seriesSum) / 100;\n\n // We avoid using recursion here because zkSync doesn't support it.\n return negativeExponent ? -result : result;\n }\n }\n\n /**\n * @dev Internal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n * for x close to one.\n *\n * Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND.\n */\n function _ln_36(int256 x) private pure returns (int256) {\n // Since ln(1) = 0, a value of x close to one will yield a very small result, which makes using 36 digits\n // worthwhile.\n\n // First, we transform x to a 36 digit fixed point value.\n unchecked {\n x *= ONE_18;\n\n // We will use the following Taylor expansion, which converges very rapidly. Let z = (x - 1) / (x + 1).\n // ln(x) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 36 digit fixed point division requires multiplying by ONE_36, and multiplication requires\n // division by ONE_36.\n int256 z = ((x - ONE_36) * ONE_36) / (x + ONE_36);\n int256 z_squared = (z * z) / ONE_36;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 11;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 13;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 15;\n\n // 8 Taylor terms are sufficient for 36 decimal precision.\n\n // All that remains is multiplying by 2 (non fixed point).\n return seriesSum * 2;\n }\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { FixedPoint } from \"./FixedPoint.sol\";\n\n/**\n * @notice Implementation of Balancer Weighted Math, essentially unchanged since v1.\n * @dev It is a generalization of the x * y = k constant product formula, accounting for cases with more than two\n * tokens, and weights that are not 50/50. See https://docs.qr68.com/tech-implementations/weighted-math.\n *\n * For security reasons, to help ensure that for all possible \"round trip\" paths the caller always receives the same\n * or fewer tokens than supplied, we have chosen the rounding direction to favor the protocol in all cases.\n */\nlibrary WeightedMath {\n using FixedPoint for uint256;\n\n /// @notice User attempted to extract a disproportionate amountOut of tokens from a pool.\n error MaxOutRatio();\n\n /// @notice User attempted to add a disproportionate amountIn of tokens to a pool.\n error MaxInRatio();\n\n /**\n * @notice Error thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.\n * @dev Most commonly, this happens when a token balance is zero.\n */\n error ZeroInvariant();\n\n // Pool limits that arise from limitations in the fixed point power function. When computing x^y, the valid range\n // of `x` is -41 (ExpMin) to 130 (ExpMax). See `LogExpMath.sol` for the derivation of these values.\n //\n // Invariant calculation:\n // In computing `balance^normalizedWeight`, `log(balance) * normalizedWeight` must fall within the `pow` function\n // bounds described above. Since 0.01 <= normalizedWeight <= 0.99, the balance is constrained to the range between\n // e^(ExpMin) and e^(ExpMax).\n //\n // This corresponds to 10^(-18) < balance < 2^(188.56). Since the maximum balance is 2^(128) - 1, the invariant\n // calculation is unconstrained by the `pow` function limits.\n //\n // It's a different story with `computeBalanceOutGivenInvariant` (inverse invariant):\n // This uses the power function to raise the invariant ratio to the power of 1/weight. Similar to the computation\n // for the invariant, this means the following expression must hold:\n // ExpMin < log(invariantRatio) * 1/weight < ExpMax\n //\n // Given the valid range of weights (i.e., 1 < 1/weight < 100), we have:\n // ExpMin/100 < log(invariantRatio) < ExpMax/100, or e^(-0.41) < invariantRatio < e^(1.3). Numerically, this\n // constrains the invariantRatio to between 0.661 and 3.695. For an added safety margin, we set the limits to\n // 0.7 < invariantRatio < 3.\n\n // Swap limits: amounts swapped may not be larger than this percentage of the total balance.\n uint256 internal constant _MAX_IN_RATIO = 30e16; // 30%\n uint256 internal constant _MAX_OUT_RATIO = 30e16; // 30%\n\n // Invariant growth limit: non-proportional add cannot cause the invariant to increase by more than this ratio.\n uint256 internal constant _MAX_INVARIANT_RATIO = 300e16; // 300%\n // Invariant shrink limit: non-proportional remove cannot cause the invariant to decrease by less than this ratio.\n uint256 internal constant _MIN_INVARIANT_RATIO = 70e16; // 70%\n\n /**\n * @notice Compute the invariant, rounding down.\n * @dev The invariant functions are called by the Vault during various liquidity operations, and require a specific\n * rounding direction in order to ensure safety (i.e., that the final result is always rounded in favor of the\n * protocol. The invariant (i.e., all token balances) must always be greater than 0, or it will revert.\n *\n * @param normalizedWeights The pool token weights, sorted in token registration order\n * @param balances The pool token balances, sorted in token registration order\n * @return invariant The invariant, rounded down\n */\n function computeInvariantDown(\n uint256[] memory normalizedWeights,\n uint256[] memory balances\n ) internal pure returns (uint256 invariant) {\n /**********************************************************************************************\n // invariant _____ //\n // wi = weight index i | | wi //\n // bi = balance index i | | bi ^ = i //\n // i = invariant //\n **********************************************************************************************/\n\n invariant = FixedPoint.ONE;\n for (uint256 i = 0; i < normalizedWeights.length; ++i) {\n invariant = invariant.mulDown(balances[i].powDown(normalizedWeights[i]));\n }\n\n if (invariant == 0) {\n revert ZeroInvariant();\n }\n }\n\n /**\n * @notice Compute the invariant, rounding up.\n * @dev The invariant functions are called by the Vault during various liquidity operations, and require a specific\n * rounding direction in order to ensure safety (i.e., that the final result is always rounded in favor of the\n * protocol. The invariant (i.e., all token balances) must always be greater than 0, or it will revert.\n *\n * @param normalizedWeights The pool token weights, sorted in token registration order\n * @param balances The pool token balances, sorted in token registration order\n * @return invariant The invariant, rounded up\n */\n function computeInvariantUp(\n uint256[] memory normalizedWeights,\n uint256[] memory balances\n ) internal pure returns (uint256 invariant) {\n /**********************************************************************************************\n // invariant _____ //\n // wi = weight index i | | wi //\n // bi = balance index i | | bi ^ = i //\n // i = invariant //\n **********************************************************************************************/\n\n invariant = FixedPoint.ONE;\n for (uint256 i = 0; i < normalizedWeights.length; ++i) {\n invariant = invariant.mulUp(balances[i].powUp(normalizedWeights[i]));\n }\n\n if (invariant == 0) {\n revert ZeroInvariant();\n }\n }\n\n /**\n * @notice Compute a token balance after a liquidity operation, given the current balance and invariant ratio.\n * @dev This is called as part of the \"inverse invariant\" `computeBalance` calculation.\n * @param currentBalance The current balance of the token\n * @param weight The weight of the token\n * @param invariantRatio The invariant ratio (i.e., new/old; will be > 1 for add; < 1 for remove)\n * @return newBalance The adjusted token balance after the operation\n */\n function computeBalanceOutGivenInvariant(\n uint256 currentBalance,\n uint256 weight,\n uint256 invariantRatio\n ) internal pure returns (uint256 newBalance) {\n /******************************************************************************************\n // calculateBalanceGivenInvariant //\n // o = balanceOut //\n // b = balanceIn (1 / w) //\n // w = weight o = b * i ^ //\n // i = invariantRatio //\n ******************************************************************************************/\n\n // Rounds result up overall, rounding up the two individual steps:\n // - balanceRatio = invariantRatio ^ (1 / weight)\n // - newBalance = balance * balanceRatio\n //\n // Regarding `balanceRatio`, the exponent is always > FP(1), but the invariant ratio can be either greater or\n // lower than FP(1) depending on whether this is solving an `add` or a `remove` operation.\n // - For i > 1, we need to round the exponent up, as i^x is monotonically increasing for i > 1.\n // - For i < 1, we need to round the exponent down, as as i^x is monotonically decreasing for i < 1.\n\n function(uint256, uint256) internal pure returns (uint256) divUpOrDown = invariantRatio > 1\n ? FixedPoint.divUp\n : FixedPoint.divDown;\n\n // Calculate by how much the token balance has to increase to match the invariantRatio.\n uint256 balanceRatio = invariantRatio.powUp(divUpOrDown(FixedPoint.ONE, weight));\n\n return currentBalance.mulUp(balanceRatio);\n }\n\n /**\n * @notice Compute the `amountOut` of tokenOut in a swap, given the current balances and weights.\n * @param balanceIn The current balance of `tokenIn`\n * @param weightIn The weight of `tokenIn`\n * @param balanceOut The current balance of `tokenOut`\n * @param weightOut The weight of `tokenOut`\n * @param amountIn The exact amount of `tokenIn` (i.e., the amount given in an ExactIn swap)\n * @return amountOut The calculated amount of `tokenOut` returned in an ExactIn swap\n */\n function computeOutGivenExactIn(\n uint256 balanceIn,\n uint256 weightIn,\n uint256 balanceOut,\n uint256 weightOut,\n uint256 amountIn\n ) internal pure returns (uint256 amountOut) {\n /**********************************************************************************************\n // outGivenExactIn //\n // aO = amountOut //\n // bO = balanceOut //\n // bI = balanceIn / / bI \\ (wI / wO) \\ //\n // aI = amountIn aO = bO * | 1 - | -------------------------- | ^ | //\n // wI = weightIn \\ \\ ( bI + aI ) / / //\n // wO = weightOut //\n **********************************************************************************************/\n\n // Amount out, so we round down overall.\n\n // The multiplication rounds down, and the subtrahend (power) rounds up (so the base rounds up too).\n // Because bI / (bI + aI) <= 1, the exponent rounds down.\n\n // Cannot exceed maximum in ratio.\n if (amountIn > balanceIn.mulDown(_MAX_IN_RATIO)) {\n revert MaxInRatio();\n }\n\n uint256 denominator = balanceIn + amountIn;\n uint256 base = balanceIn.divUp(denominator);\n uint256 exponent = weightIn.divDown(weightOut);\n uint256 power = base.powUp(exponent);\n\n // Because of rounding up, power can be greater than one. Using complement prevents reverts.\n return balanceOut.mulDown(power.complement());\n }\n\n /**\n * @notice Compute the `amountIn` of tokenIn in a swap, given the current balances and weights.\n * @param balanceIn The current balance of `tokenIn`\n * @param weightIn The weight of `tokenIn`\n * @param balanceOut The current balance of `tokenOut`\n * @param weightOut The weight of `tokenOut`\n * @param amountOut The exact amount of `tokenOut` (i.e., the amount given in an ExactOut swap)\n * @return amountIn The calculated amount of `tokenIn` returned in an ExactOut swap\n */\n function computeInGivenExactOut(\n uint256 balanceIn,\n uint256 weightIn,\n uint256 balanceOut,\n uint256 weightOut,\n uint256 amountOut\n ) internal pure returns (uint256 amountIn) {\n /**********************************************************************************************\n // inGivenExactOut //\n // aO = amountOut //\n // bO = balanceOut //\n // bI = balanceIn / / bO \\ (wO / wI) \\ //\n // aI = amountIn aI = bI * | | -------------------------- | ^ - 1 | //\n // wI = weightIn \\ \\ ( bO - aO ) / / //\n // wO = weightOut //\n **********************************************************************************************/\n\n // Amount in, so we round up overall.\n\n // The multiplication rounds up, and the power rounds up (so the base rounds up too).\n // Because b0 / (b0 - a0) >= 1, the exponent rounds up.\n\n // Cannot exceed maximum out ratio.\n if (amountOut > balanceOut.mulDown(_MAX_OUT_RATIO)) {\n revert MaxOutRatio();\n }\n\n uint256 base = balanceOut.divUp(balanceOut - amountOut);\n uint256 exponent = weightOut.divUp(weightIn);\n uint256 power = base.powUp(exponent);\n\n // Because the base is larger than one (and the power rounds up), the power should always be larger than one, so\n // the following subtraction should never revert.\n uint256 ratio = power - FixedPoint.ONE;\n\n return balanceIn.mulUp(ratio);\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.24;\n\nimport { StorageSlotExtension } from \"./StorageSlotExtension.sol\";\n\n/**\n * @notice Variant of {ReentrancyGuard} that uses transient storage.\n * @dev NOTE: This variant only works on networks where EIP-1153 is available.\n */\nabstract contract ReentrancyGuardTransient {\n using StorageSlotExtension for *;\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant _REENTRANCY_GUARD_STORAGE =\n 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n /// @notice Unauthorized reentrant call.\n error ReentrancyGuardReentrantCall();\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n // On the first call to nonReentrant, _status will be NOT_ENTERED.\n if (_reentrancyGuardEntered()) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail.\n _REENTRANCY_GUARD_STORAGE.asBoolean().tstore(true);\n }\n\n function _nonReentrantAfter() private {\n _REENTRANCY_GUARD_STORAGE.asBoolean().tstore(false);\n }\n\n /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n return _REENTRANCY_GUARD_STORAGE.asBoolean().tload();\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol":{"content":"// SPDX-License-Identifier: MIT\n// This file was procedurally generated from scripts/generate/templates/SlotDerivation.js.\n\n// Taken from https://raw.githubusercontent.com/Amxx/openzeppelin-contracts/ce497cb05ca05bb9aa2b86ec1d99e6454e7ab2e9/contracts/utils/SlotDerivation.sol\n\npragma solidity ^0.8.20;\n\n/**\n * @notice Library for computing storage (and transient storage) locations from namespaces and deriving slots\n * corresponding to standard patterns.\n * @dev The derivation method for array and mapping matches the storage layout used by the solidity language/compiler.\n *\n * See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.].\n *\n * Example usage:\n * ```solidity\n * contract Example {\n * // Add the library methods\n * using StorageSlot for bytes32;\n * using SlotDerivation for bytes32;\n *\n * // Declare a namespace\n * string private constant _NAMESPACE = \"\" // eg. OpenZeppelin.Slot\n *\n * function setValueInNamespace(uint256 key, address newValue) internal {\n * _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue;\n * }\n *\n * function getValueInNamespace(uint256 key) internal view returns (address) {\n * return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value;\n * }\n * }\n * ```\n *\n * TIP: Consider using this library along with {StorageSlot}.\n *\n * NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking\n * upgrade safety will ignore the slots accessed through this library.\n */\nlibrary SlotDerivation {\n /// @dev Derive an ERC-7201 slot from a string (namespace).\n function erc7201Slot(string memory namespace) internal pure returns (bytes32 slot) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, sub(keccak256(add(namespace, 0x20), mload(namespace)), 1))\n slot := and(keccak256(0x00, 0x20), not(0xff))\n }\n }\n\n /// @dev Add an offset to a slot to get the n-th element of a structure or an array.\n function offset(bytes32 slot, uint256 pos) internal pure returns (bytes32 result) {\n unchecked {\n return bytes32(uint256(slot) + pos);\n }\n }\n\n /// @dev Derive the location of the first element in an array from the slot where the length is stored.\n function deriveArray(bytes32 slot) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, slot)\n result := keccak256(0x00, 0x20)\n }\n }\n\n /// @dev Derive the location of a mapping element from the key.\n function deriveMapping(bytes32 slot, address key) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, key)\n mstore(0x20, slot)\n result := keccak256(0x00, 0x40)\n }\n }\n\n /// @dev Derive the location of a mapping element from the key.\n function deriveMapping(bytes32 slot, bool key) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, key)\n mstore(0x20, slot)\n result := keccak256(0x00, 0x40)\n }\n }\n\n /// @dev Derive the location of a mapping element from the key.\n function deriveMapping(bytes32 slot, bytes32 key) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, key)\n mstore(0x20, slot)\n result := keccak256(0x00, 0x40)\n }\n }\n\n /// @dev Derive the location of a mapping element from the key.\n function deriveMapping(bytes32 slot, uint256 key) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, key)\n mstore(0x20, slot)\n result := keccak256(0x00, 0x40)\n }\n }\n\n /// @dev Derive the location of a mapping element from the key.\n function deriveMapping(bytes32 slot, int256 key) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, key)\n mstore(0x20, slot)\n result := keccak256(0x00, 0x40)\n }\n }\n\n /// @dev Derive the location of a mapping element from the key.\n function deriveMapping(bytes32 slot, string memory key) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let length := mload(key)\n let begin := add(key, 0x20)\n let end := add(begin, length)\n let cache := mload(end)\n mstore(end, slot)\n result := keccak256(begin, add(length, 0x20))\n mstore(end, cache)\n }\n }\n\n /// @dev Derive the location of a mapping element from the key.\n function deriveMapping(bytes32 slot, bytes memory key) internal pure returns (bytes32 result) {\n /// @solidity memory-safe-assembly\n assembly {\n let length := mload(key)\n let begin := add(key, 0x20)\n let end := add(begin, length)\n let cache := mload(end)\n mstore(end, slot)\n result := keccak256(begin, add(length, 0x20))\n mstore(end, cache)\n }\n }\n}"},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.24;\n\n/**\n * @notice Library for reading and writing primitive types to specific storage slots. Based on OpenZeppelin; just adding support for int256.\n * @dev TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlotExtension {\n struct Int256Slot {\n int256 value;\n }\n\n /// @dev Returns an `Int256Slot` with member `value` located at `slot`.\n function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /// @dev Custom type that represents a slot holding an address.\n type AddressSlotType is bytes32;\n\n /// @dev Cast an arbitrary slot to a AddressSlotType.\n function asAddress(bytes32 slot) internal pure returns (AddressSlotType) {\n return AddressSlotType.wrap(slot);\n }\n\n /// @dev Custom type that represents a slot holding a boolean.\n type BooleanSlotType is bytes32;\n\n /// @dev Cast an arbitrary slot to a BooleanSlotType.\n function asBoolean(bytes32 slot) internal pure returns (BooleanSlotType) {\n return BooleanSlotType.wrap(slot);\n }\n\n /// @dev Custom type that represents a slot holding a bytes32.\n type Bytes32SlotType is bytes32;\n\n /// @dev Cast an arbitrary slot to a Bytes32SlotType.\n function asBytes32(bytes32 slot) internal pure returns (Bytes32SlotType) {\n return Bytes32SlotType.wrap(slot);\n }\n\n /// @dev Custom type that represents a slot holding a uint256.\n type Uint256SlotType is bytes32;\n\n /// @dev Cast an arbitrary slot to a Uint256SlotType.\n function asUint256(bytes32 slot) internal pure returns (Uint256SlotType) {\n return Uint256SlotType.wrap(slot);\n }\n\n /// @dev Custom type that represents a slot holding an int256.\n type Int256SlotType is bytes32;\n\n /// @dev Cast an arbitrary slot to an Int256SlotType.\n function asInt256(bytes32 slot) internal pure returns (Int256SlotType) {\n return Int256SlotType.wrap(slot);\n }\n\n /// @dev Load the value held at location `slot` in transient storage.\n function tload(AddressSlotType slot) internal view returns (address value) {\n /// @solidity memory-safe-assembly\n assembly {\n value := tload(slot)\n }\n }\n\n /// @dev Store `value` at location `slot` in transient storage.\n function tstore(AddressSlotType slot, address value) internal {\n /// @solidity memory-safe-assembly\n assembly {\n tstore(slot, value)\n }\n }\n\n /// @dev Load the value held at location `slot` in transient storage.\n function tload(BooleanSlotType slot) internal view returns (bool value) {\n /// @solidity memory-safe-assembly\n assembly {\n value := tload(slot)\n }\n }\n\n /// @dev Store `value` at location `slot` in transient storage.\n function tstore(BooleanSlotType slot, bool value) internal {\n /// @solidity memory-safe-assembly\n assembly {\n tstore(slot, value)\n }\n }\n\n /// @dev Load the value held at location `slot` in transient storage.\n function tload(Bytes32SlotType slot) internal view returns (bytes32 value) {\n /// @solidity memory-safe-assembly\n assembly {\n value := tload(slot)\n }\n }\n\n /// @dev Store `value` at location `slot` in transient storage.\n function tstore(Bytes32SlotType slot, bytes32 value) internal {\n /// @solidity memory-safe-assembly\n assembly {\n tstore(slot, value)\n }\n }\n\n /// @dev Load the value held at location `slot` in transient storage.\n function tload(Uint256SlotType slot) internal view returns (uint256 value) {\n /// @solidity memory-safe-assembly\n assembly {\n value := tload(slot)\n }\n }\n\n /// @dev Store `value` at location `slot` in transient storage.\n function tstore(Uint256SlotType slot, uint256 value) internal {\n /// @solidity memory-safe-assembly\n assembly {\n tstore(slot, value)\n }\n }\n\n /// @dev Load the value held at location `slot` in transient storage.\n function tload(Int256SlotType slot) internal view returns (int256 value) {\n /// @solidity memory-safe-assembly\n assembly {\n value := tload(slot)\n }\n }\n\n /// @dev Store `value` at location `slot` in transient storage.\n function tstore(Int256SlotType slot, int256 value) internal {\n /// @solidity memory-safe-assembly\n assembly {\n tstore(slot, value)\n }\n }\n}\n"},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.24;\n\nimport { StorageSlotExtension } from \"./StorageSlotExtension.sol\";\nimport {\n AddressArraySlotType,\n AddressToUintMappingSlot,\n TransientStorageHelpers\n} from \"../helpers/TransientStorageHelpers.sol\";\n\n/**\n * @notice Library for managing sets of primitive types.\n * @dev See https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types.\n *\n * Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that\n * work on bytes32, replacing them with a native implementation for address values, to reduce bytecode size and\n * runtime costs. It also uses transient storage.\n *\n * The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using TransientEnumerableSet for TransientEnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * TransientEnumerableSet.AddressSet private mySet;\n * }\n * ```\n */\nlibrary TransientEnumerableSet {\n using TransientStorageHelpers for *;\n using StorageSlotExtension for StorageSlotExtension.Uint256SlotType;\n\n // The original OpenZeppelin implementation uses a generic Set type with bytes32 values: this was replaced with\n // AddressSet, which uses address keys natively, resulting in more dense bytecode.\n\n // solhint-disable func-name-mixedcase\n\n struct AddressSet {\n // Storage of set values.\n address[] __values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(address addressKey => uint256 indexValue) __indexes;\n }\n\n /// @notice An index is beyond the current bounds of the set.\n error IndexOutOfBounds();\n\n /// @notice An element that is not present in the set.\n error ElementNotFound();\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, if it was not already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n if (!contains(set, value)) {\n _values(set).tPush(value);\n\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value.\n _indexes(set).tSet(value, _values(set).tLength());\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set; i.e., if it was present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot.\n uint256 valueIndex = _indexes(set).tGet(value);\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n uint256 toDeleteIndex;\n uint256 lastIndex;\n\n unchecked {\n toDeleteIndex = valueIndex - 1;\n lastIndex = _values(set).tLength() - 1;\n }\n\n // The swap is only necessary if we're not removing the last element.\n if (toDeleteIndex != lastIndex) {\n address lastValue = _values(set).tAt(lastIndex);\n\n // Move the last entry to the index of the entry to delete.\n _values(set).tSet(toDeleteIndex, lastValue);\n\n // Update the index for the moved value.\n _indexes(set).tSet(lastValue, valueIndex); // = toDeleteIndex + 1; all indices are 1-based\n }\n\n // Delete the slot where the moved value was stored.\n _values(set).tPop();\n\n // We need to delete the index for the deleted slot with transient storage because another operation in the\n // same transaction may want to add the same element to the array again.\n _indexes(set).tSet(value, 0);\n\n return true;\n } else {\n return false;\n }\n }\n\n /// @dev Returns true if the value is in the set. O(1).\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _indexes(set).tGet(value) != 0;\n }\n\n /// @dev Returns the number of values on the set. O(1).\n function length(AddressSet storage set) internal view returns (uint256) {\n return _values(set).tLength();\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n if (index >= _values(set).tLength()) {\n revert IndexOutOfBounds();\n }\n\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n function unchecked_at(AddressSet storage set, uint256 index) internal view returns (address) {\n return _values(set).tUncheckedAt(index);\n }\n\n /// @dev Return the index of an element in the set, or revert if not found.\n function indexOf(AddressSet storage set, address value) internal view returns (uint256) {\n uint256 rawIndex = _indexes(set).tGet(value);\n\n if (rawIndex == 0) {\n revert ElementNotFound();\n }\n\n unchecked {\n return rawIndex - 1;\n }\n }\n\n /**\n * @dev Same as {indexOf}, except this doesn't revert if the element isn't present in the set.\n * In this case, it returns 0.\n *\n * This function performs one less storage read than {indexOf}, but should only be used when `index` is known to be\n * within bounds.\n */\n function unchecked_indexOf(AddressSet storage set, address value) internal view returns (uint256) {\n uint256 rawIndex = _indexes(set).tGet(value);\n\n unchecked {\n return rawIndex == 0 ? 0 : rawIndex - 1;\n }\n }\n\n // Transient storage functions\n\n /// @dev Return the raw contents of the underlying address array.\n function values(AddressSet storage set) internal view returns (address[] memory memValues) {\n uint256 len = _values(set).tLength();\n memValues = new address[](len);\n\n for (uint256 i = 0; i < len; ++i) {\n memValues[i] = _values(set).tUncheckedAt(i);\n }\n }\n\n // solhint-disable no-inline-assembly\n\n function _values(AddressSet storage set) private view returns (AddressArraySlotType slot) {\n address[] storage structValues = set.__values;\n\n assembly (\"memory-safe\") {\n slot := structValues.slot\n }\n }\n\n function _indexes(AddressSet storage set) private view returns (AddressToUintMappingSlot slot) {\n mapping(address addressKey => uint256 indexValue) storage indexes = set.__indexes;\n\n assembly (\"memory-safe\") {\n slot := indexes.slot\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { IERC20Permit } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\";\nimport { ERC165 } from \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport { EIP712 } from \"@openzeppelin/contracts/utils/cryptography/EIP712.sol\";\nimport { ECDSA } from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Nonces } from \"@openzeppelin/contracts/utils/Nonces.sol\";\n\nimport { IRateProvider } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { VaultGuard } from \"./VaultGuard.sol\";\n\n/**\n * @notice `BalancerPoolToken` is a fully ERC20-compatible token to be used as the base contract for Balancer Pools,\n * with all the data and implementation delegated to the ERC20Multitoken contract.\n\n * @dev Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\n */\ncontract BalancerPoolToken is IERC20, IERC20Metadata, IERC20Permit, IRateProvider, EIP712, Nonces, ERC165, VaultGuard {\n bytes32 public constant PERMIT_TYPEHASH =\n keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n\n /**\n * @notice Operation failed due to an expired permit signature.\n * @param deadline The permit deadline that expired\n */\n error ERC2612ExpiredSignature(uint256 deadline);\n\n /**\n * @notice Operation failed due to a non-matching signature.\n * @param signer The address corresponding to the signature provider\n * @param owner The address of the owner (expected value of the signature provider)\n */\n error ERC2612InvalidSigner(address signer, address owner);\n\n // EIP712 also defines _name.\n string private _bptName;\n string private _bptSymbol;\n\n constructor(IVault vault_, string memory bptName, string memory bptSymbol) EIP712(bptName, \"1\") VaultGuard(vault_) {\n _bptName = bptName;\n _bptSymbol = bptSymbol;\n }\n\n /// @inheritdoc IERC20Metadata\n function name() external view returns (string memory) {\n return _bptName;\n }\n\n /// @inheritdoc IERC20Metadata\n function symbol() external view returns (string memory) {\n return _bptSymbol;\n }\n\n /// @inheritdoc IERC20Metadata\n function decimals() external pure returns (uint8) {\n // Always 18 decimals for BPT.\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view returns (uint256) {\n return _vault.totalSupply(address(this));\n }\n\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) external view returns (uint256) {\n return _vault.balanceOf(address(this), account);\n }\n\n /// @inheritdoc IERC20\n function transfer(address to, uint256 amount) external returns (bool) {\n // Vault will perform the transfer and call emitTransfer to emit the event from this contract.\n _vault.transfer(msg.sender, to, amount);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) external view returns (uint256) {\n return _vault.allowance(address(this), owner, spender);\n }\n\n /// @inheritdoc IERC20\n function approve(address spender, uint256 amount) external returns (bool) {\n // Vault will perform the approval and call emitApproval to emit the event from this contract.\n _vault.approve(msg.sender, spender, amount);\n return true;\n }\n\n /// @inheritdoc IERC20\n function transferFrom(address from, address to, uint256 amount) external returns (bool) {\n // Vault will perform the transfer and call emitTransfer to emit the event from this contract.\n _vault.transferFrom(msg.sender, from, to, amount);\n return true;\n }\n\n /**\n * Accounting is centralized in the MultiToken contract, and the actual transfers and approvals are done there.\n * Operations can be initiated from either the token contract or the MultiToken.\n *\n * To maintain compliance with the ERC-20 standard, and conform to the expectations of off-chain processes,\n * the MultiToken calls `emitTransfer` and `emitApproval` during those operations, so that the event is emitted\n * only from the token contract. These events are NOT defined in the MultiToken contract.\n */\n\n /// @dev Emit the Transfer event. This function can only be called by the MultiToken.\n function emitTransfer(address from, address to, uint256 amount) external onlyVault {\n emit Transfer(from, to, amount);\n }\n\n /// @dev Emit the Approval event. This function can only be called by the MultiToken.\n function emitApproval(address owner, address spender, uint256 amount) external onlyVault {\n emit Approval(owner, spender, amount);\n }\n\n // @inheritdoc IERC20Permit\n function permit(\n address owner,\n address spender,\n uint256 amount,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual {\n // solhint-disable-next-line not-rely-on-time\n if (block.timestamp > deadline) {\n revert ERC2612ExpiredSignature(deadline);\n }\n\n bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, _useNonce(owner), deadline));\n\n bytes32 hash = _hashTypedDataV4(structHash);\n\n address signer = ECDSA.recover(hash, v, r, s);\n if (signer != owner) {\n revert ERC2612InvalidSigner(signer, owner);\n }\n\n _vault.approve(owner, spender, amount);\n }\n\n // @inheritdoc IERC20Permit\n function nonces(address owner) public view virtual override(IERC20Permit, Nonces) returns (uint256) {\n return super.nonces(owner);\n }\n\n /// @notice Increment the sender's nonce to revoke any currently granted (but not yet executed) `permit`.\n function incrementNonce() external {\n _useNonce(msg.sender);\n }\n\n // @inheritdoc IERC20Permit\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view virtual returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n /**\n * @notice Get the BPT rate, which is defined as: pool invariant/total supply.\n * @dev The VaultExtension contract defines a default implementation (`getBptRate`) to calculate the rate\n * of any given pool, which should be sufficient in nearly all cases.\n *\n * @return rate Rate of the pool's BPT\n */\n function getRate() public view virtual returns (uint256) {\n return getVault().getBptRate(address(this));\n }\n}\n"},"@balancer-labs/v3-vault/contracts/BaseHooks.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IHooks } from \"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\";\nimport {\n AddLiquidityKind,\n HookFlags,\n LiquidityManagement,\n RemoveLiquidityKind,\n TokenConfig,\n PoolSwapParams,\n AfterSwapParams\n} from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\n/**\n * @notice Base for pool hooks contracts.\n * @dev Hook contracts that only implement a subset of callbacks can inherit from here instead of IHooks,\n * and only override what they need. `VaultGuard` allows use of the `onlyVault` modifier, which isn't used\n * in this abstract contract, but should be used in real derived hook contracts.\n */\nabstract contract BaseHooks is IHooks {\n /// @inheritdoc IHooks\n function onRegister(\n address,\n address,\n TokenConfig[] memory,\n LiquidityManagement calldata\n ) public virtual returns (bool) {\n // By default, deny all factories. This method must be overwritten by the hook contract.\n return false;\n }\n\n /// @inheritdoc IHooks\n function getHookFlags() public view virtual returns (HookFlags memory);\n\n /// @inheritdoc IHooks\n function onBeforeInitialize(uint256[] memory, bytes memory) public virtual returns (bool) {\n return false;\n }\n\n /// @inheritdoc IHooks\n function onAfterInitialize(uint256[] memory, uint256, bytes memory) public virtual returns (bool) {\n return false;\n }\n\n /// @inheritdoc IHooks\n function onBeforeAddLiquidity(\n address,\n address,\n AddLiquidityKind,\n uint256[] memory,\n uint256,\n uint256[] memory,\n bytes memory\n ) public virtual returns (bool) {\n return false;\n }\n\n /// @inheritdoc IHooks\n function onAfterAddLiquidity(\n address,\n address,\n AddLiquidityKind,\n uint256[] memory,\n uint256[] memory amountsInRaw,\n uint256,\n uint256[] memory,\n bytes memory\n ) public virtual returns (bool, uint256[] memory) {\n return (false, amountsInRaw);\n }\n\n /// @inheritdoc IHooks\n function onBeforeRemoveLiquidity(\n address,\n address,\n RemoveLiquidityKind,\n uint256,\n uint256[] memory,\n uint256[] memory,\n bytes memory\n ) public virtual returns (bool) {\n return false;\n }\n\n /// @inheritdoc IHooks\n function onAfterRemoveLiquidity(\n address,\n address,\n RemoveLiquidityKind,\n uint256,\n uint256[] memory,\n uint256[] memory amountsOutRaw,\n uint256[] memory,\n bytes memory\n ) public virtual returns (bool, uint256[] memory) {\n return (false, amountsOutRaw);\n }\n\n /// @inheritdoc IHooks\n function onBeforeSwap(PoolSwapParams calldata, address) public virtual returns (bool) {\n // return false to trigger an error if shouldCallBeforeSwap is true but this function is not overridden.\n return false;\n }\n\n /// @inheritdoc IHooks\n function onAfterSwap(AfterSwapParams calldata) public virtual returns (bool, uint256) {\n // return false to trigger an error if shouldCallAfterSwap is true but this function is not overridden.\n // The second argument is not used.\n return (false, 0);\n }\n\n /// @inheritdoc IHooks\n function onComputeDynamicSwapFeePercentage(\n PoolSwapParams calldata,\n address,\n uint256\n ) public view virtual returns (bool, uint256) {\n return (false, 0);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/BasePoolMath.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IBasePool } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\";\nimport { Rounding } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\n\nlibrary BasePoolMath {\n using FixedPoint for uint256;\n\n /**\n * @notice An add liquidity operation increased the invariant above the limit.\n * @dev This value is determined by each pool type, and depends on the specific math used to compute\n * the price curve.\n *\n * @param invariantRatio The ratio of the new invariant (after an operation) to the old\n * @param maxInvariantRatio The maximum allowed invariant ratio\n */\n error InvariantRatioAboveMax(uint256 invariantRatio, uint256 maxInvariantRatio);\n\n /**\n * @notice A remove liquidity operation decreased the invariant below the limit.\n * @dev This value is determined by each pool type, and depends on the specific math used to compute\n * the price curve.\n *\n * @param invariantRatio The ratio of the new invariant (after an operation) to the old\n * @param minInvariantRatio The minimum allowed invariant ratio\n */\n error InvariantRatioBelowMin(uint256 invariantRatio, uint256 minInvariantRatio);\n\n // For security reasons, to help ensure that for all possible \"round trip\" paths the caller always receives the\n // same or fewer tokens than supplied, we have chosen the rounding direction to favor the protocol in all cases.\n\n /**\n * @notice Computes the proportional amounts of tokens to be deposited into the pool.\n * @dev This function computes the amount of each token that needs to be deposited in order to mint a specific\n * amount of pool tokens (BPT). It ensures that the amounts of tokens deposited are proportional to the current\n * pool balances.\n *\n * Calculation: For each token, amountIn = balance * (bptAmountOut / bptTotalSupply).\n * Rounding up is used to ensure that the pool is not underfunded.\n *\n * @param balances Array of current token balances in the pool\n * @param bptTotalSupply Total supply of the pool tokens (BPT)\n * @param bptAmountOut The amount of pool tokens that need to be minted\n * @return amountsIn Array of amounts for each token to be deposited\n */\n function computeProportionalAmountsIn(\n uint256[] memory balances,\n uint256 bptTotalSupply,\n uint256 bptAmountOut\n ) internal pure returns (uint256[] memory amountsIn) {\n /************************************************************************************\n // computeProportionalAmountsIn //\n // (per token) //\n // aI = amountIn / bptOut \\ //\n // b = balance aI = b * | ----------------- | //\n // bptOut = bptAmountOut \\ bptTotalSupply / //\n // bpt = bptTotalSupply //\n ************************************************************************************/\n\n // Create a new array to hold the amounts of each token to be deposited.\n amountsIn = new uint256[](balances.length);\n for (uint256 i = 0; i < balances.length; ++i) {\n // Since we multiply and divide we don't need to use FP math.\n // We're calculating amounts in so we round up.\n amountsIn[i] = balances[i].mulDivUp(bptAmountOut, bptTotalSupply);\n }\n }\n\n /**\n * @notice Computes the proportional amounts of tokens to be withdrawn from the pool.\n * @dev This function computes the amount of each token that will be withdrawn in exchange for burning\n * a specific amount of pool tokens (BPT). It ensures that the amounts of tokens withdrawn are proportional\n * to the current pool balances.\n *\n * Calculation: For each token, amountOut = balance * (bptAmountIn / bptTotalSupply).\n * Rounding down is used to prevent withdrawing more than the pool can afford.\n *\n * @param balances Array of current token balances in the pool\n * @param bptTotalSupply Total supply of the pool tokens (BPT)\n * @param bptAmountIn The amount of pool tokens that will be burned\n * @return amountsOut Array of amounts for each token to be withdrawn\n */\n function computeProportionalAmountsOut(\n uint256[] memory balances,\n uint256 bptTotalSupply,\n uint256 bptAmountIn\n ) internal pure returns (uint256[] memory amountsOut) {\n /**********************************************************************************************\n // computeProportionalAmountsOut //\n // (per token) //\n // aO = tokenAmountOut / bptIn \\ //\n // b = tokenBalance a0 = b * | --------------------- | //\n // bptIn = bptAmountIn \\ bptTotalSupply / //\n // bpt = bptTotalSupply //\n **********************************************************************************************/\n\n // Create a new array to hold the amounts of each token to be withdrawn.\n amountsOut = new uint256[](balances.length);\n for (uint256 i = 0; i < balances.length; ++i) {\n // Since we multiply and divide we don't need to use FP math.\n // Round down since we're calculating amounts out.\n amountsOut[i] = (balances[i] * bptAmountIn) / bptTotalSupply;\n }\n }\n\n /**\n * @notice Computes the amount of pool tokens (BPT) to be minted for an unbalanced liquidity addition.\n * @dev This function handles liquidity addition where the proportion of tokens deposited does not match\n * the current pool composition. It considers the current balances, exact amounts of tokens to be added,\n * total supply, and swap fee percentage. The function calculates a new invariant with the added tokens,\n * applying swap fees if necessary, and then calculates the amount of BPT to mint based on the change\n * in the invariant.\n *\n * @param currentBalances Current pool balances, sorted in token registration order\n * @param exactAmounts Array of exact amounts for each token to be added to the pool\n * @param totalSupply The current total supply of the pool tokens (BPT)\n * @param swapFeePercentage The swap fee percentage applied to the transaction\n * @param pool The pool to which we're adding liquidity\n * @return bptAmountOut The amount of pool tokens (BPT) that will be minted as a result of the liquidity addition\n * @return swapFeeAmounts The amount of swap fees charged for each token\n */\n function computeAddLiquidityUnbalanced(\n uint256[] memory currentBalances,\n uint256[] memory exactAmounts,\n uint256 totalSupply,\n uint256 swapFeePercentage,\n IBasePool pool\n ) internal view returns (uint256 bptAmountOut, uint256[] memory swapFeeAmounts) {\n /***********************************************************************\n // //\n // s = totalSupply (iFees - iCur) //\n // b = tokenBalance bptOut = s * -------------- //\n // bptOut = bptAmountOut iCur //\n // iFees = invariantWithFeesApplied //\n // iCur = currentInvariant //\n // iNew = newInvariant //\n ***********************************************************************/\n\n // Determine the number of tokens in the pool.\n uint256 numTokens = currentBalances.length;\n\n // Create a new array to hold the updated balances after the addition.\n uint256[] memory newBalances = new uint256[](numTokens);\n // Create a new array to hold the swap fee amount for each token.\n swapFeeAmounts = new uint256[](numTokens);\n\n // Loop through each token, updating the balance with the added amount.\n for (uint256 i = 0; i < numTokens; ++i) {\n newBalances[i] = currentBalances[i] + exactAmounts[i] - 1; // Undo balance round up for new balances.\n }\n\n // Calculate the new invariant ratio by dividing the new invariant by the old invariant.\n // Rounding current invariant up reduces BPT amount out at the end (see comments below).\n uint256 currentInvariant = pool.computeInvariant(currentBalances, Rounding.ROUND_UP);\n // Round down to make `taxableAmount` larger below.\n uint256 invariantRatio = pool.computeInvariant(newBalances, Rounding.ROUND_DOWN).divDown(currentInvariant);\n\n ensureInvariantRatioBelowMaximumBound(pool, invariantRatio);\n\n // Loop through each token to apply fees if necessary.\n for (uint256 i = 0; i < numTokens; ++i) {\n // Check if the new balance is greater than the equivalent proportional balance.\n // If so, calculate the taxable amount, rounding in favor of the protocol.\n // We round the second term down to subtract less and get a higher `taxableAmount`,\n // which charges higher swap fees. This will lower `newBalances`, which in turn lowers\n // `invariantWithFeesApplied` below.\n uint256 proportionalTokenBalance = invariantRatio.mulDown(currentBalances[i]);\n if (newBalances[i] > proportionalTokenBalance) {\n uint256 taxableAmount;\n unchecked {\n taxableAmount = newBalances[i] - proportionalTokenBalance;\n }\n // Calculate the fee amount.\n swapFeeAmounts[i] = taxableAmount.mulUp(swapFeePercentage);\n\n // Subtract the fee from the new balance.\n // We are essentially imposing swap fees on non-proportional incoming amounts.\n // Note: `swapFeeAmounts` should always be <= `taxableAmount` since `swapFeePercentage` is <= FP(1),\n // but since that's not verifiable within this contract, a checked subtraction is preferred.\n newBalances[i] = newBalances[i] - swapFeeAmounts[i];\n }\n }\n\n // Calculate the new invariant with fees applied.\n // This invariant should be lower than the original one, so we don't need to check invariant ratio bounds again.\n // Rounding down makes bptAmountOut go down (see comment below).\n uint256 invariantWithFeesApplied = pool.computeInvariant(newBalances, Rounding.ROUND_DOWN);\n\n // Calculate the amount of BPT to mint. This is done by multiplying the\n // total supply with the ratio of the change in invariant.\n // Since we multiply and divide we don't need to use FP math.\n // Round down since we're calculating BPT amount out. This is the most important result of this function,\n // equivalent to:\n // `totalSupply * (invariantWithFeesApplied / currentInvariant - 1)`\n\n // Then, to round `bptAmountOut` down we use `invariantWithFeesApplied` rounded down and `currentInvariant`\n // rounded up.\n // If rounding makes `invariantWithFeesApplied` smaller or equal to `currentInvariant`, this would effectively\n // be a donation. In that case we just let checked math revert for simplicity; it's not a valid use-case to\n // support at this point.\n bptAmountOut = (totalSupply * (invariantWithFeesApplied - currentInvariant)) / currentInvariant;\n }\n\n /**\n * @notice Computes the amount of input token needed to receive an exact amount of pool tokens (BPT) in a\n * single-token liquidity addition.\n * @dev This function is used when a user wants to add liquidity to the pool by specifying the exact amount\n * of pool tokens they want to receive, and the function calculates the corresponding amount of the input token.\n * It considers the current pool balances, total supply, swap fee percentage, and the desired BPT amount.\n *\n * @param currentBalances Array of current token balances in the pool, sorted in token registration order\n * @param tokenInIndex Index of the input token for which the amount needs to be calculated\n * @param exactBptAmountOut Exact amount of pool tokens (BPT) the user wants to receive\n * @param totalSupply The current total supply of the pool tokens (BPT)\n * @param swapFeePercentage The swap fee percentage applied to the taxable amount\n * @param pool The pool to which we're adding liquidity\n * @return amountInWithFee The amount of input token needed, including the swap fee, to receive the exact BPT amount\n * @return swapFeeAmounts The amount of swap fees charged for each token\n */\n function computeAddLiquiditySingleTokenExactOut(\n uint256[] memory currentBalances,\n uint256 tokenInIndex,\n uint256 exactBptAmountOut,\n uint256 totalSupply,\n uint256 swapFeePercentage,\n IBasePool pool\n ) internal view returns (uint256 amountInWithFee, uint256[] memory swapFeeAmounts) {\n // Calculate new supply after minting exactBptAmountOut.\n uint256 newSupply = exactBptAmountOut + totalSupply;\n\n // Calculate the initial amount of the input token needed for the desired amount of BPT out\n // \"divUp\" leads to a higher \"newBalance\", which in turn results in a larger \"amountIn\".\n // This leads to receiving more tokens for the same amount of BPT minted.\n uint256 invariantRatio = newSupply.divUp(totalSupply);\n ensureInvariantRatioBelowMaximumBound(pool, invariantRatio);\n\n uint256 newBalance = pool.computeBalance(currentBalances, tokenInIndex, invariantRatio);\n\n // Compute the amount to be deposited into the pool.\n uint256 amountIn = newBalance - currentBalances[tokenInIndex];\n\n // Calculate the non-taxable amount, which is the new balance proportionate to the BPT minted.\n // Since we multiply and divide we don't need to use FP math.\n // Rounding down makes `taxableAmount` larger, which in turn makes `fee` larger below.\n uint256 nonTaxableBalance = (newSupply * currentBalances[tokenInIndex]) / totalSupply;\n\n // Calculate the taxable amount, which is the difference between the actual new balance and\n // the non-taxable balance.\n uint256 taxableAmount = newBalance - nonTaxableBalance;\n\n // Calculate the swap fee based on the taxable amount and the swap fee percentage.\n uint256 fee = taxableAmount.divUp(swapFeePercentage.complement()) - taxableAmount;\n\n // Create swap fees amount array and set the single fee we charge.\n swapFeeAmounts = new uint256[](currentBalances.length);\n swapFeeAmounts[tokenInIndex] = fee;\n\n // Return the total amount of input token needed, including the swap fee.\n amountInWithFee = amountIn + fee;\n }\n\n /**\n * @notice Computes the amount of pool tokens to burn to receive exact amount out.\n * @param currentBalances Current pool balances, sorted in token registration order\n * @param tokenOutIndex Index of the token to receive in exchange for pool tokens burned\n * @param exactAmountOut Exact amount of tokens to receive\n * @param totalSupply The current total supply of the pool tokens (BPT)\n * @param swapFeePercentage The swap fee percentage applied to the taxable amount\n * @param pool The pool from which we're removing liquidity\n * @return bptAmountIn Amount of pool tokens to burn\n * @return swapFeeAmounts The amount of swap fees charged for each token\n */\n function computeRemoveLiquiditySingleTokenExactOut(\n uint256[] memory currentBalances,\n uint256 tokenOutIndex,\n uint256 exactAmountOut,\n uint256 totalSupply,\n uint256 swapFeePercentage,\n IBasePool pool\n ) internal view returns (uint256 bptAmountIn, uint256[] memory swapFeeAmounts) {\n // Determine the number of tokens in the pool.\n uint256 numTokens = currentBalances.length;\n\n // Create a new array to hold the updated balances.\n uint256[] memory newBalances = new uint256[](numTokens);\n\n // Copy currentBalances to newBalances.\n for (uint256 i = 0; i < numTokens; ++i) {\n newBalances[i] = currentBalances[i] - 1;\n }\n\n // Update the balance of tokenOutIndex with exactAmountOut.\n newBalances[tokenOutIndex] = newBalances[tokenOutIndex] - exactAmountOut;\n\n // Calculate the new invariant using the new balances (after the removal).\n // Calculate the new invariant ratio by dividing the new invariant by the old invariant.\n // Calculate the new proportional balance by multiplying the new invariant ratio by the current balance.\n // Calculate the taxable amount by subtracting the new balance from the equivalent proportional balance.\n // We round `currentInvariant` up as it affects the calculated `bptAmountIn` directly (see below).\n uint256 currentInvariant = pool.computeInvariant(currentBalances, Rounding.ROUND_UP);\n\n // We round invariant ratio up (see reason below).\n // This invariant ratio could be rounded up even more by rounding `currentInvariant` down. But since it only\n // affects the taxable amount and the fee calculation, whereas `currentInvariant` affects BPT in more directly,\n // we use `currentInvariant` rounded up here as well.\n uint256 invariantRatio = pool.computeInvariant(newBalances, Rounding.ROUND_UP).divUp(currentInvariant);\n\n ensureInvariantRatioAboveMinimumBound(pool, invariantRatio);\n\n // Taxable amount is proportional to invariant ratio; a larger taxable amount rounds in the Vault's favor.\n uint256 taxableAmount = invariantRatio.mulUp(currentBalances[tokenOutIndex]) - newBalances[tokenOutIndex];\n\n // Calculate the swap fee based on the taxable amount and the swap fee percentage.\n // Fee is proportional to taxable amount; larger fee rounds in the Vault's favor.\n uint256 fee = taxableAmount.divUp(swapFeePercentage.complement()) - taxableAmount;\n\n // Update new balances array with a fee.\n newBalances[tokenOutIndex] = newBalances[tokenOutIndex] - fee;\n\n // Calculate the new invariant with fees applied.\n // Larger fee means `invariantWithFeesApplied` goes lower.\n uint256 invariantWithFeesApplied = pool.computeInvariant(newBalances, Rounding.ROUND_DOWN);\n\n // Create swap fees amount array and set the single fee we charge.\n swapFeeAmounts = new uint256[](numTokens);\n swapFeeAmounts[tokenOutIndex] = fee;\n\n // Calculate the amount of BPT to burn. This is done by multiplying the total supply by the ratio of the\n // invariant delta to the current invariant.\n //\n // Calculating BPT amount in, so we round up. This is the most important result of this function, equivalent to:\n // `totalSupply * (1 - invariantWithFeesApplied / currentInvariant)`.\n // Then, to round `bptAmountIn` up we use `invariantWithFeesApplied` rounded down and `currentInvariant`\n // rounded up.\n //\n // Since `currentInvariant` is rounded up and `invariantWithFeesApplied` is rounded down, the difference\n // should always be positive. The checked math will revert if that is not the case.\n bptAmountIn = totalSupply.mulDivUp(currentInvariant - invariantWithFeesApplied, currentInvariant);\n }\n\n /**\n * @notice Computes the amount of a single token to withdraw for a given amount of BPT to burn.\n * @dev It computes the output token amount for an exact input of BPT, considering current balances,\n * total supply, and swap fees.\n *\n * @param currentBalances The current token balances in the pool\n * @param tokenOutIndex The index of the token to be withdrawn\n * @param exactBptAmountIn The exact amount of BPT the user wants to burn\n * @param totalSupply The current total supply of the pool tokens (BPT)\n * @param swapFeePercentage The swap fee percentage applied to the taxable amount\n * @param pool The pool from which we're removing liquidity\n * @return amountOutWithFee The amount of the output token the user receives, accounting for swap fees\n * @return swapFeeAmounts The total amount of swap fees charged\n */\n function computeRemoveLiquiditySingleTokenExactIn(\n uint256[] memory currentBalances,\n uint256 tokenOutIndex,\n uint256 exactBptAmountIn,\n uint256 totalSupply,\n uint256 swapFeePercentage,\n IBasePool pool\n ) internal view returns (uint256 amountOutWithFee, uint256[] memory swapFeeAmounts) {\n // Calculate new supply accounting for burning exactBptAmountIn.\n uint256 newSupply = totalSupply - exactBptAmountIn;\n uint256 invariantRatio = newSupply.divUp(totalSupply);\n ensureInvariantRatioAboveMinimumBound(pool, invariantRatio);\n\n // Calculate the new balance of the output token after the BPT burn.\n // \"divUp\" leads to a higher \"newBalance\", which in turn results in a lower \"amountOut\", but also a lower\n // \"taxableAmount\". Although the former leads to giving less tokens for the same amount of BPT burned,\n // the latter leads to charging less swap fees. In consequence, a conflict of interests arises regarding\n // the rounding of \"newBalance\"; we prioritize getting a lower \"amountOut\".\n uint256 newBalance = pool.computeBalance(currentBalances, tokenOutIndex, invariantRatio);\n\n // Compute the amount to be withdrawn from the pool.\n uint256 amountOut = currentBalances[tokenOutIndex] - newBalance;\n\n // Calculate the new balance proportionate to the amount of BPT burned.\n // We round up: higher `newBalanceBeforeTax` makes `taxableAmount` go up, which rounds in the Vault's favor.\n uint256 newBalanceBeforeTax = newSupply.mulDivUp(currentBalances[tokenOutIndex], totalSupply);\n\n // Compute the taxable amount: the difference between the new proportional and disproportional balances.\n uint256 taxableAmount = newBalanceBeforeTax - newBalance;\n\n // Calculate the swap fee on the taxable amount.\n uint256 fee = taxableAmount.mulUp(swapFeePercentage);\n\n // Create swap fees amount array and set the single fee we charge.\n swapFeeAmounts = new uint256[](currentBalances.length);\n swapFeeAmounts[tokenOutIndex] = fee;\n\n // Return the net amount after subtracting the fee.\n amountOutWithFee = amountOut - fee;\n }\n\n /**\n * @notice Validate the invariant ratio against the maximum bound.\n * @dev This is checked when we're adding liquidity, so the `invariantRatio` > 1.\n * @param pool The pool to which we're adding liquidity\n * @param invariantRatio The ratio of the new invariant (after an operation) to the old\n */\n function ensureInvariantRatioBelowMaximumBound(IBasePool pool, uint256 invariantRatio) internal view {\n uint256 maxInvariantRatio = pool.getMaximumInvariantRatio();\n if (invariantRatio > maxInvariantRatio) {\n revert InvariantRatioAboveMax(invariantRatio, maxInvariantRatio);\n }\n }\n\n /**\n * @notice Validate the invariant ratio against the maximum bound.\n * @dev This is checked when we're removing liquidity, so the `invariantRatio` < 1.\n * @param pool The pool from which we're removing liquidity\n * @param invariantRatio The ratio of the new invariant (after an operation) to the old\n */\n function ensureInvariantRatioAboveMinimumBound(IBasePool pool, uint256 invariantRatio) internal view {\n uint256 minInvariantRatio = pool.getMinimumInvariantRatio();\n if (invariantRatio < minInvariantRatio) {\n revert InvariantRatioBelowMin(invariantRatio, minInvariantRatio);\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/BatchRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IBatchRouter } from \"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol\";\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { EVMCallModeHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\";\nimport { CastingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\";\nimport { InputHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport {\n TransientEnumerableSet\n} from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\";\nimport {\n TransientStorageHelpers\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\nimport { BatchRouterCommon } from \"./BatchRouterCommon.sol\";\n\nstruct SwapStepLocals {\n bool isFirstStep;\n bool isLastStep;\n}\n\n/**\n * @notice Entrypoint for batch swaps, and batch swap queries.\n * @dev The external API functions unlock the Vault, which calls back into the corresponding hook functions.\n * These interpret the steps and paths in the input data, perform token accounting (in transient storage, to save gas),\n * settle with the Vault, and handle wrapping and unwrapping ETH.\n */\ncontract BatchRouter is IBatchRouter, BatchRouterCommon {\n using CastingHelpers for *;\n using TransientEnumerableSet for TransientEnumerableSet.AddressSet;\n using TransientStorageHelpers for *;\n using SafeERC20 for IERC20;\n using SafeCast for *;\n\n constructor(\n IVault vault,\n IWETH weth,\n IPermit2 permit2,\n string memory routerVersion\n ) BatchRouterCommon(vault, weth, permit2, routerVersion) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /***************************************************************************\n Swaps\n ***************************************************************************/\n\n /// @inheritdoc IBatchRouter\n function swapExactIn(\n SwapPathExactAmountIn[] memory paths,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n )\n external\n payable\n saveSender(msg.sender)\n returns (uint256[] memory pathAmountsOut, address[] memory tokensOut, uint256[] memory amountsOut)\n {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n BatchRouter.swapExactInHook,\n SwapExactInHookParams({\n sender: msg.sender,\n paths: paths,\n deadline: deadline,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256[], address[], uint256[])\n );\n }\n\n /// @inheritdoc IBatchRouter\n function swapExactOut(\n SwapPathExactAmountOut[] memory paths,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n )\n external\n payable\n saveSender(msg.sender)\n returns (uint256[] memory pathAmountsIn, address[] memory tokensIn, uint256[] memory amountsIn)\n {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n BatchRouter.swapExactOutHook,\n SwapExactOutHookParams({\n sender: msg.sender,\n paths: paths,\n deadline: deadline,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256[], address[], uint256[])\n );\n }\n\n function swapExactInHook(\n SwapExactInHookParams calldata params\n )\n external\n nonReentrant\n onlyVault\n returns (uint256[] memory pathAmountsOut, address[] memory tokensOut, uint256[] memory amountsOut)\n {\n (pathAmountsOut, tokensOut, amountsOut) = _swapExactInHook(params);\n\n _settlePaths(params.sender, params.wethIsEth);\n }\n\n function _swapExactInHook(\n SwapExactInHookParams calldata params\n ) internal returns (uint256[] memory pathAmountsOut, address[] memory tokensOut, uint256[] memory amountsOut) {\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n if (block.timestamp > params.deadline) {\n revert SwapDeadline();\n }\n\n pathAmountsOut = _computePathAmountsOut(params);\n\n // The hook writes current swap token and token amounts out.\n // We copy that information to memory to return it before it is deleted during settlement.\n tokensOut = _currentSwapTokensOut().values();\n amountsOut = new uint256[](tokensOut.length);\n for (uint256 i = 0; i < tokensOut.length; ++i) {\n amountsOut[i] =\n _currentSwapTokenOutAmounts().tGet(tokensOut[i]) +\n _settledTokenAmounts().tGet(tokensOut[i]);\n _settledTokenAmounts().tSet(tokensOut[i], 0);\n }\n }\n\n function _computePathAmountsOut(\n SwapExactInHookParams calldata params\n ) internal returns (uint256[] memory pathAmountsOut) {\n pathAmountsOut = new uint256[](params.paths.length);\n\n for (uint256 i = 0; i < params.paths.length; ++i) {\n SwapPathExactAmountIn memory path = params.paths[i];\n\n // These two variables shall be updated at the end of each step to be used as inputs of the next one.\n // The initial values are the given token and amount in for the current path.\n uint256 stepExactAmountIn = path.exactAmountIn;\n IERC20 stepTokenIn = path.tokenIn;\n\n if (path.steps[0].isBuffer && EVMCallModeHelpers.isStaticCall() == false) {\n // If first step is a buffer, take the token in advance. We need this to wrap/unwrap.\n _takeTokenIn(params.sender, stepTokenIn, stepExactAmountIn, params.wethIsEth);\n } else {\n // Paths may (or may not) share the same token in. To minimize token transfers, we store the addresses\n // in a set with unique addresses that can be iterated later on.\n // For example, if all paths share the same token in, the set will end up with only one entry.\n _currentSwapTokensIn().add(address(stepTokenIn));\n _currentSwapTokenInAmounts().tAdd(address(stepTokenIn), stepExactAmountIn);\n }\n\n for (uint256 j = 0; j < path.steps.length; ++j) {\n SwapStepLocals memory stepLocals;\n stepLocals.isLastStep = (j == path.steps.length - 1);\n stepLocals.isFirstStep = (j == 0);\n uint256 minAmountOut;\n\n // minAmountOut only applies to the last step.\n if (stepLocals.isLastStep) {\n minAmountOut = path.minAmountOut;\n } else {\n minAmountOut = 0;\n }\n\n SwapPathStep memory step = path.steps[j];\n\n if (step.isBuffer) {\n (, , uint256 amountOut) = _vault.erc4626BufferWrapOrUnwrap(\n BufferWrapOrUnwrapParams({\n kind: SwapKind.EXACT_IN,\n direction: step.pool == address(stepTokenIn)\n ? WrappingDirection.UNWRAP\n : WrappingDirection.WRAP,\n wrappedToken: IERC4626(step.pool),\n amountGivenRaw: stepExactAmountIn,\n limitRaw: minAmountOut\n })\n );\n\n if (stepLocals.isLastStep) {\n // The amount out for the last step of the path should be recorded for the return value, and the\n // amount for the token should be sent back to the sender later on.\n pathAmountsOut[i] = amountOut;\n _currentSwapTokensOut().add(address(step.tokenOut));\n _currentSwapTokenOutAmounts().tAdd(address(step.tokenOut), amountOut);\n } else {\n // Input for the next step is output of current step.\n stepExactAmountIn = amountOut;\n // The token in for the next step is the token out of the current step.\n stepTokenIn = step.tokenOut;\n }\n } else if (address(stepTokenIn) == step.pool) {\n // Token in is BPT: remove liquidity - Single token exact in\n\n // Remove liquidity is not transient when it comes to BPT, meaning the caller needs to have the\n // required amount when performing the operation. These tokens might be the output of a previous\n // step, in which case the user will have a BPT credit.\n\n if (stepLocals.isFirstStep) {\n if (stepExactAmountIn > 0 && params.sender != address(this)) {\n // If this is the first step, the sender must have the tokens. Therefore, we can transfer\n // them to the Router, which acts as an intermediary. If the sender is the Router, we just\n // skip this step (useful for queries).\n //\n // This saves one permit(1) approval for the BPT to the Router; if we burned tokens\n // directly from the sender we would need their approval.\n _permit2.transferFrom(\n params.sender,\n address(this),\n stepExactAmountIn.toUint160(),\n address(stepTokenIn)\n );\n }\n\n // BPT is burned instantly, so we don't need to send it back later.\n if (_currentSwapTokenInAmounts().tGet(address(stepTokenIn)) > 0) {\n _currentSwapTokenInAmounts().tSub(address(stepTokenIn), stepExactAmountIn);\n }\n } else {\n // If this is an intermediate step, we don't expect the sender to have BPT to burn.\n // Then, we flashloan tokens here (which should in practice just use existing credit).\n _vault.sendTo(IERC20(step.pool), address(this), stepExactAmountIn);\n }\n\n // minAmountOut cannot be 0 in this case, as that would send an array of 0s to the Vault, which\n // wouldn't know which token to use.\n (uint256[] memory amountsOut, uint256 tokenIndex) = _getSingleInputArrayAndTokenIndex(\n step.pool,\n step.tokenOut,\n minAmountOut == 0 ? 1 : minAmountOut\n );\n\n // Router is always an intermediary in this case. The Vault will burn tokens from the Router, so\n // Router is both owner and spender (which doesn't need approval).\n // Reusing `amountsOut` as input argument and function output to prevent stack too deep error.\n (, amountsOut, ) = _vault.removeLiquidity(\n RemoveLiquidityParams({\n pool: step.pool,\n from: address(this),\n maxBptAmountIn: stepExactAmountIn,\n minAmountsOut: amountsOut,\n kind: RemoveLiquidityKind.SINGLE_TOKEN_EXACT_IN,\n userData: params.userData\n })\n );\n\n if (stepLocals.isLastStep) {\n // The amount out for the last step of the path should be recorded for the return value, and the\n // amount for the token should be sent back to the sender later on.\n pathAmountsOut[i] = amountsOut[tokenIndex];\n _currentSwapTokensOut().add(address(step.tokenOut));\n _currentSwapTokenOutAmounts().tAdd(address(step.tokenOut), amountsOut[tokenIndex]);\n } else {\n // Input for the next step is output of current step.\n stepExactAmountIn = amountsOut[tokenIndex];\n // The token in for the next step is the token out of the current step.\n stepTokenIn = step.tokenOut;\n }\n } else if (address(step.tokenOut) == step.pool) {\n // Token out is BPT: add liquidity - Single token exact in (unbalanced).\n (uint256[] memory exactAmountsIn, ) = _getSingleInputArrayAndTokenIndex(\n step.pool,\n stepTokenIn,\n stepExactAmountIn\n );\n\n (, uint256 bptAmountOut, ) = _vault.addLiquidity(\n AddLiquidityParams({\n pool: step.pool,\n to: stepLocals.isLastStep ? params.sender : address(_vault),\n maxAmountsIn: exactAmountsIn,\n minBptAmountOut: minAmountOut,\n kind: AddLiquidityKind.UNBALANCED,\n userData: params.userData\n })\n );\n\n if (stepLocals.isLastStep) {\n // The amount out for the last step of the path should be recorded for the return value.\n // We do not need to register the amount out in _currentSwapTokenOutAmounts since the BPT\n // is minted directly to the sender, so this step can be considered settled at this point.\n pathAmountsOut[i] = bptAmountOut;\n _currentSwapTokensOut().add(address(step.tokenOut));\n _settledTokenAmounts().tAdd(address(step.tokenOut), bptAmountOut);\n } else {\n // Input for the next step is output of current step.\n stepExactAmountIn = bptAmountOut;\n // The token in for the next step is the token out of the current step.\n stepTokenIn = step.tokenOut;\n // If this is an intermediate step, BPT is minted to the Vault so we just get the credit.\n _vault.settle(IERC20(step.pool), bptAmountOut);\n }\n } else {\n // No BPT involved in the operation: regular swap exact in.\n (, , uint256 amountOut) = _vault.swap(\n VaultSwapParams({\n kind: SwapKind.EXACT_IN,\n pool: step.pool,\n tokenIn: stepTokenIn,\n tokenOut: step.tokenOut,\n amountGivenRaw: stepExactAmountIn,\n limitRaw: minAmountOut,\n userData: params.userData\n })\n );\n\n if (stepLocals.isLastStep) {\n // The amount out for the last step of the path should be recorded for the return value, and the\n // amount for the token should be sent back to the sender later on.\n pathAmountsOut[i] = amountOut;\n _currentSwapTokensOut().add(address(step.tokenOut));\n _currentSwapTokenOutAmounts().tAdd(address(step.tokenOut), amountOut);\n } else {\n // Input for the next step is output of current step.\n stepExactAmountIn = amountOut;\n // The token in for the next step is the token out of the current step.\n stepTokenIn = step.tokenOut;\n }\n }\n }\n }\n }\n\n function swapExactOutHook(\n SwapExactOutHookParams calldata params\n )\n external\n nonReentrant\n onlyVault\n returns (uint256[] memory pathAmountsIn, address[] memory tokensIn, uint256[] memory amountsIn)\n {\n (pathAmountsIn, tokensIn, amountsIn) = _swapExactOutHook(params);\n\n _settlePaths(params.sender, params.wethIsEth);\n }\n\n function _swapExactOutHook(\n SwapExactOutHookParams calldata params\n ) internal returns (uint256[] memory pathAmountsIn, address[] memory tokensIn, uint256[] memory amountsIn) {\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n if (block.timestamp > params.deadline) {\n revert SwapDeadline();\n }\n\n pathAmountsIn = _computePathAmountsIn(params);\n\n // The hook writes current swap token and token amounts in.\n // We copy that information to memory to return it before it is deleted during settlement.\n tokensIn = _currentSwapTokensIn().values(); // Copy transient storage to memory\n amountsIn = new uint256[](tokensIn.length);\n for (uint256 i = 0; i < tokensIn.length; ++i) {\n amountsIn[i] = _currentSwapTokenInAmounts().tGet(tokensIn[i]) + _settledTokenAmounts().tGet(tokensIn[i]);\n _settledTokenAmounts().tSet(tokensIn[i], 0);\n }\n }\n\n /**\n * @dev Executes every swap path in the given input parameters.\n * Computes inputs for the path, and aggregates them by token and amounts as well in transient storage.\n */\n function _computePathAmountsIn(\n SwapExactOutHookParams calldata params\n ) internal returns (uint256[] memory pathAmountsIn) {\n pathAmountsIn = new uint256[](params.paths.length);\n\n for (uint256 i = 0; i < params.paths.length; ++i) {\n SwapPathExactAmountOut memory path = params.paths[i];\n // This variable shall be updated at the end of each step to be used as input of the next one.\n // The first value corresponds to the given amount out for the current path.\n uint256 stepExactAmountOut = path.exactAmountOut;\n\n // Paths may (or may not) share the same token in. To minimize token transfers, we store the addresses in\n // a set with unique addresses that can be iterated later on.\n //\n // For example, if all paths share the same token in, the set will end up with only one entry.\n // Since the path is 'given out', the output of the operation specified by the last step in each path will\n // be added to calculate the amounts in for each token.\n _currentSwapTokensIn().add(address(path.tokenIn));\n\n // Backwards iteration: the exact amount out applies to the last step, so we cannot iterate from first to\n // last. The calculated input of step (j) is the exact amount out for step (j - 1).\n for (int256 j = int256(path.steps.length - 1); j >= 0; --j) {\n SwapPathStep memory step = path.steps[uint256(j)];\n SwapStepLocals memory stepLocals;\n stepLocals.isLastStep = (j == 0);\n stepLocals.isFirstStep = (uint256(j) == path.steps.length - 1);\n\n // These two variables are set at the beginning of the iteration and are used as inputs for\n // the operation described by the step.\n uint256 stepMaxAmountIn;\n IERC20 stepTokenIn;\n\n if (stepLocals.isFirstStep) {\n // The first step in the iteration is the last one in the given array of steps, and it\n // specifies the output token for the step as well as the exact amount out for that token.\n // Output amounts are stored to send them later on.\n _currentSwapTokensOut().add(address(step.tokenOut));\n _currentSwapTokenOutAmounts().tAdd(address(step.tokenOut), stepExactAmountOut);\n }\n\n if (stepLocals.isLastStep) {\n // In backwards order, the last step is the first one in the given path.\n // The given token in and max amount in apply for this step.\n stepMaxAmountIn = path.maxAmountIn;\n stepTokenIn = path.tokenIn;\n } else {\n // For every other intermediate step, no maximum input applies.\n // The input token for this step is the output token of the previous given step.\n // We use uint128 to prevent Vault's internal scaling from overflowing.\n stepMaxAmountIn = _MAX_AMOUNT;\n stepTokenIn = path.steps[uint256(j - 1)].tokenOut;\n }\n\n if (step.isBuffer) {\n if (stepLocals.isLastStep && EVMCallModeHelpers.isStaticCall() == false) {\n // The buffer will need this token to wrap/unwrap, so take it from the user in advance.\n _takeTokenIn(params.sender, path.tokenIn, path.maxAmountIn, params.wethIsEth);\n }\n\n (, uint256 amountIn, ) = _vault.erc4626BufferWrapOrUnwrap(\n BufferWrapOrUnwrapParams({\n kind: SwapKind.EXACT_OUT,\n direction: step.pool == address(stepTokenIn)\n ? WrappingDirection.UNWRAP\n : WrappingDirection.WRAP,\n wrappedToken: IERC4626(step.pool),\n amountGivenRaw: stepExactAmountOut,\n limitRaw: stepMaxAmountIn\n })\n );\n\n if (stepLocals.isLastStep) {\n pathAmountsIn[i] = amountIn;\n // Since the token was taken in advance, returns to the user what is left from the\n // wrap/unwrap operation.\n _currentSwapTokensOut().add(address(stepTokenIn));\n _currentSwapTokenOutAmounts().tAdd(address(stepTokenIn), path.maxAmountIn - amountIn);\n // `settledTokenAmounts` is used to return the `amountsIn` at the end of the operation, which\n // is only amountIn. The difference between maxAmountIn and amountIn will be paid during\n // settle.\n _settledTokenAmounts().tAdd(address(path.tokenIn), amountIn);\n } else {\n stepExactAmountOut = amountIn;\n }\n } else if (address(stepTokenIn) == step.pool) {\n // Token in is BPT: remove liquidity - Single token exact out\n\n // Remove liquidity is not transient when it comes to BPT, meaning the caller needs to have the\n // required amount when performing the operation. In this case, the BPT amount needed for the\n // operation is not known in advance, so we take a flashloan for all the available reserves.\n //\n // The last step is the one that defines the inputs for this path. The caller should have enough\n // BPT to burn already if that's the case, so we just skip this step if so.\n if (stepLocals.isLastStep == false) {\n stepMaxAmountIn = _vault.getReservesOf(stepTokenIn);\n _vault.sendTo(IERC20(step.pool), address(this), stepMaxAmountIn);\n } else if (params.sender != address(this)) {\n // The last step being executed is the first step in the swap path, meaning that it's the one\n // that defines the inputs of the path.\n //\n // In that case, the sender must have the tokens. Therefore, we can transfer them\n // to the Router, which acts as an intermediary. If the sender is the Router, we just skip this\n // step (useful for queries).\n _permit2.transferFrom(\n params.sender,\n address(this),\n stepMaxAmountIn.toUint160(),\n address(stepTokenIn)\n );\n }\n\n (uint256[] memory exactAmountsOut, ) = _getSingleInputArrayAndTokenIndex(\n step.pool,\n step.tokenOut,\n stepExactAmountOut\n );\n\n // Router is always an intermediary in this case. The Vault will burn tokens from the Router, so\n // Router is both owner and spender (which doesn't need approval).\n (uint256 bptAmountIn, , ) = _vault.removeLiquidity(\n RemoveLiquidityParams({\n pool: step.pool,\n from: address(this),\n maxBptAmountIn: stepMaxAmountIn,\n minAmountsOut: exactAmountsOut,\n kind: RemoveLiquidityKind.SINGLE_TOKEN_EXACT_OUT,\n userData: params.userData\n })\n );\n\n if (stepLocals.isLastStep) {\n // BPT is burned instantly, so we don't need to send it to the Vault during settlement.\n pathAmountsIn[i] = bptAmountIn;\n _settledTokenAmounts().tAdd(address(stepTokenIn), bptAmountIn);\n\n // Refund unused portion of BPT to the user.alias\n if (bptAmountIn < stepMaxAmountIn && params.sender != address(this)) {\n stepTokenIn.safeTransfer(address(params.sender), stepMaxAmountIn - bptAmountIn);\n }\n } else {\n // Output for the step (j - 1) is the input of step (j).\n stepExactAmountOut = bptAmountIn;\n // Refund unused portion of BPT flashloan to the Vault.\n if (bptAmountIn < stepMaxAmountIn) {\n uint256 refundAmount = stepMaxAmountIn - bptAmountIn;\n stepTokenIn.safeTransfer(address(_vault), refundAmount);\n _vault.settle(stepTokenIn, refundAmount);\n }\n }\n } else if (address(step.tokenOut) == step.pool) {\n // Token out is BPT: add liquidity - Single token exact out.\n (uint256[] memory stepAmountsIn, uint256 tokenIndex) = _getSingleInputArrayAndTokenIndex(\n step.pool,\n stepTokenIn,\n stepMaxAmountIn\n );\n\n // Reusing `amountsIn` as input argument and function output to prevent stack too deep error.\n (stepAmountsIn, , ) = _vault.addLiquidity(\n AddLiquidityParams({\n pool: step.pool,\n to: stepLocals.isFirstStep ? params.sender : address(_vault),\n maxAmountsIn: stepAmountsIn,\n minBptAmountOut: stepExactAmountOut,\n kind: AddLiquidityKind.SINGLE_TOKEN_EXACT_OUT,\n userData: params.userData\n })\n );\n\n if (stepLocals.isLastStep) {\n // The amount out for the last step of the path should be recorded for the return value.\n pathAmountsIn[i] = stepAmountsIn[tokenIndex];\n _currentSwapTokenInAmounts().tAdd(address(stepTokenIn), stepAmountsIn[tokenIndex]);\n } else {\n stepExactAmountOut = stepAmountsIn[tokenIndex];\n }\n\n // The first step executed determines the outputs for the path, since this is given out.\n if (stepLocals.isFirstStep) {\n // Instead of sending tokens back to the Vault, we can just discount it from whatever\n // the Vault owes the sender to make one less transfer.\n _currentSwapTokenOutAmounts().tSub(address(step.tokenOut), stepExactAmountOut);\n } else {\n // If it's not the first step, BPT is minted to the Vault so we just get the credit.\n _vault.settle(IERC20(step.pool), stepExactAmountOut);\n }\n } else {\n // No BPT involved in the operation: regular swap exact out.\n (, uint256 amountIn, ) = _vault.swap(\n VaultSwapParams({\n kind: SwapKind.EXACT_OUT,\n pool: step.pool,\n tokenIn: stepTokenIn,\n tokenOut: step.tokenOut,\n amountGivenRaw: stepExactAmountOut,\n limitRaw: stepMaxAmountIn,\n userData: params.userData\n })\n );\n\n if (stepLocals.isLastStep) {\n pathAmountsIn[i] = amountIn;\n _currentSwapTokenInAmounts().tAdd(address(stepTokenIn), amountIn);\n } else {\n stepExactAmountOut = amountIn;\n }\n }\n }\n }\n }\n\n /***************************************************************************\n Queries\n ***************************************************************************/\n\n /// @inheritdoc IBatchRouter\n function querySwapExactIn(\n SwapPathExactAmountIn[] memory paths,\n address sender,\n bytes calldata userData\n )\n external\n saveSender(sender)\n returns (uint256[] memory pathAmountsOut, address[] memory tokensOut, uint256[] memory amountsOut)\n {\n for (uint256 i = 0; i < paths.length; ++i) {\n paths[i].minAmountOut = 0;\n }\n\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(\n BatchRouter.querySwapExactInHook,\n SwapExactInHookParams({\n sender: address(this),\n paths: paths,\n deadline: type(uint256).max,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256[], address[], uint256[])\n );\n }\n\n /// @inheritdoc IBatchRouter\n function querySwapExactOut(\n SwapPathExactAmountOut[] memory paths,\n address sender,\n bytes calldata userData\n )\n external\n saveSender(sender)\n returns (uint256[] memory pathAmountsIn, address[] memory tokensIn, uint256[] memory amountsIn)\n {\n for (uint256 i = 0; i < paths.length; ++i) {\n paths[i].maxAmountIn = _MAX_AMOUNT;\n }\n\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(\n BatchRouter.querySwapExactOutHook,\n SwapExactOutHookParams({\n sender: address(this),\n paths: paths,\n deadline: type(uint256).max,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256[], address[], uint256[])\n );\n }\n\n function querySwapExactInHook(\n SwapExactInHookParams calldata params\n )\n external\n nonReentrant\n onlyVault\n returns (uint256[] memory pathAmountsOut, address[] memory tokensOut, uint256[] memory amountsOut)\n {\n (pathAmountsOut, tokensOut, amountsOut) = _swapExactInHook(params);\n }\n\n function querySwapExactOutHook(\n SwapExactOutHookParams calldata params\n )\n external\n nonReentrant\n onlyVault\n returns (uint256[] memory pathAmountsIn, address[] memory tokensIn, uint256[] memory amountsIn)\n {\n (pathAmountsIn, tokensIn, amountsIn) = _swapExactOutHook(params);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport {\n TransientEnumerableSet\n} from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\";\nimport {\n TransientStorageHelpers,\n AddressToUintMappingSlot\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\nimport { RouterCommon } from \"./RouterCommon.sol\";\n\n/// @notice Transient storage for Batch and Composite Liquidity Router operations.\nabstract contract BatchRouterCommon is RouterCommon {\n using TransientEnumerableSet for TransientEnumerableSet.AddressSet;\n using TransientStorageHelpers for *;\n\n // solhint-disable var-name-mixedcase\n\n // NOTE: If you use a constant, then it is simply replaced everywhere when this constant is used\n // by what is written after =. If you use immutable, the value is first calculated and\n // then replaced everywhere. That means that if a constant has executable variables,\n // they will be executed every time the constant is used.\n bytes32 private immutable _CURRENT_SWAP_TOKEN_IN_SLOT = _calculateBatchRouterStorageSlot(\"currentSwapTokensIn\");\n bytes32 private immutable _CURRENT_SWAP_TOKEN_OUT_SLOT = _calculateBatchRouterStorageSlot(\"currentSwapTokensOut\");\n bytes32 private immutable _CURRENT_SWAP_TOKEN_IN_AMOUNTS_SLOT =\n _calculateBatchRouterStorageSlot(\"currentSwapTokenInAmounts\");\n bytes32 private immutable _CURRENT_SWAP_TOKEN_OUT_AMOUNTS_SLOT =\n _calculateBatchRouterStorageSlot(\"currentSwapTokenOutAmounts\");\n bytes32 private immutable _SETTLED_TOKEN_AMOUNTS_SLOT = _calculateBatchRouterStorageSlot(\"settledTokenAmounts\");\n\n // solhint-enable var-name-mixedcase\n // solhint-disable no-inline-assembly\n\n constructor(\n IVault vault,\n IWETH weth,\n IPermit2 permit2,\n string memory routerVersion\n ) RouterCommon(vault, weth, permit2, routerVersion) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // We use transient storage to track tokens and amounts flowing in and out of a batch swap.\n // Set of input tokens involved in a batch swap.\n function _currentSwapTokensIn() internal view returns (TransientEnumerableSet.AddressSet storage enumerableSet) {\n bytes32 slot = _CURRENT_SWAP_TOKEN_IN_SLOT;\n assembly (\"memory-safe\") {\n enumerableSet.slot := slot\n }\n }\n\n function _currentSwapTokensOut() internal view returns (TransientEnumerableSet.AddressSet storage enumerableSet) {\n bytes32 slot = _CURRENT_SWAP_TOKEN_OUT_SLOT;\n assembly (\"memory-safe\") {\n enumerableSet.slot := slot\n }\n }\n\n // token in -> amount: tracks token in amounts within a batch swap.\n function _currentSwapTokenInAmounts() internal view returns (AddressToUintMappingSlot slot) {\n return AddressToUintMappingSlot.wrap(_CURRENT_SWAP_TOKEN_IN_AMOUNTS_SLOT);\n }\n\n // token out -> amount: tracks token out amounts within a batch swap.\n function _currentSwapTokenOutAmounts() internal view returns (AddressToUintMappingSlot slot) {\n return AddressToUintMappingSlot.wrap(_CURRENT_SWAP_TOKEN_OUT_AMOUNTS_SLOT);\n }\n\n // token -> amount that is part of the current input / output amounts, but is settled preemptively.\n // This situation happens whenever there is BPT involved in the operation, which is minted and burned instantly.\n // Since those amounts are not tracked in the inputs / outputs to settle, we need to track them elsewhere\n // to return the correct total amounts in and out for each token involved in the operation.\n function _settledTokenAmounts() internal view returns (AddressToUintMappingSlot slot) {\n return AddressToUintMappingSlot.wrap(_SETTLED_TOKEN_AMOUNTS_SLOT);\n }\n\n function _calculateBatchRouterStorageSlot(string memory key) internal pure returns (bytes32) {\n return TransientStorageHelpers.calculateSlot(type(BatchRouterCommon).name, key);\n }\n\n /*******************************************************************************\n Settlement\n *******************************************************************************/\n\n /// @notice Settles batch and composite liquidity operations, after credits and debits are computed.\n function _settlePaths(address sender, bool wethIsEth) internal {\n // numTokensIn / Out may be 0 if the inputs and / or outputs are not transient.\n // For example, a swap starting with a 'remove liquidity' step will already have burned the input tokens,\n // in which case there is nothing to settle. Then, since we're iterating backwards below, we need to be able\n // to subtract 1 from these quantities without reverting, which is why we use signed integers.\n int256 numTokensIn = int256(_currentSwapTokensIn().length());\n int256 numTokensOut = int256(_currentSwapTokensOut().length());\n\n // Iterate backwards, from the last element to 0 (included).\n // Removing the last element from a set is cheaper than removing the first one.\n for (int256 i = int256(numTokensIn - 1); i >= 0; --i) {\n address tokenIn = _currentSwapTokensIn().unchecked_at(uint256(i));\n _takeTokenIn(sender, IERC20(tokenIn), _currentSwapTokenInAmounts().tGet(tokenIn), wethIsEth);\n // Erases delta, in case more than one batch router operation is called in the same transaction.\n _currentSwapTokenInAmounts().tSet(tokenIn, 0);\n _currentSwapTokensIn().remove(tokenIn);\n }\n\n for (int256 i = int256(numTokensOut - 1); i >= 0; --i) {\n address tokenOut = _currentSwapTokensOut().unchecked_at(uint256(i));\n _sendTokenOut(sender, IERC20(tokenOut), _currentSwapTokenOutAmounts().tGet(tokenOut), wethIsEth);\n // Erases delta, in case more than one batch router operation is called in the same transaction.\n _currentSwapTokenOutAmounts().tSet(tokenOut, 0);\n _currentSwapTokensOut().remove(tokenOut);\n }\n\n // Return the rest of ETH to sender.\n _returnEth(sender);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/BufferRouter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IBufferRouter } from \"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol\";\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport { IVaultAdmin } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { RouterCommon } from \"./RouterCommon.sol\";\n\n/**\n * @notice Entrypoint for swaps, liquidity operations, and corresponding queries.\n * @dev The external API functions unlock the Vault, which calls back into the corresponding hook functions.\n * These interact with the Vault, transfer tokens, settle accounting, and handle wrapping and unwrapping ETH.\n */\ncontract BufferRouter is IBufferRouter, RouterCommon {\n using Address for address;\n\n constructor(\n IVault vault,\n IWETH weth,\n IPermit2 permit2,\n string memory routerVersion\n ) RouterCommon(vault, weth, permit2, routerVersion) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /// @inheritdoc IBufferRouter\n function initializeBuffer(\n IERC4626 wrappedToken,\n uint256 exactAmountUnderlyingIn,\n uint256 exactAmountWrappedIn,\n uint256 minIssuedShares\n ) external returns (uint256 issuedShares) {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n BufferRouter.initializeBufferHook,\n (\n wrappedToken,\n exactAmountUnderlyingIn,\n exactAmountWrappedIn,\n minIssuedShares,\n msg.sender // sharesOwner\n )\n )\n ),\n (uint256)\n );\n }\n\n /**\n * @notice Hook for initializing a vault buffer.\n * @dev Can only be called by the Vault. Buffers must be initialized before use.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param exactAmountUnderlyingIn Amount of underlying tokens that will be deposited into the buffer\n * @param exactAmountWrappedIn Amount of wrapped tokens that will be deposited into the buffer\n * @param minIssuedShares Minimum amount of shares to receive, in underlying token native decimals\n * @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to\n * remove liquidity from the buffer\n * @return issuedShares the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts.\n * (This is the BPT of an internal ERC4626 buffer)\n */\n function initializeBufferHook(\n IERC4626 wrappedToken,\n uint256 exactAmountUnderlyingIn,\n uint256 exactAmountWrappedIn,\n uint256 minIssuedShares,\n address sharesOwner\n ) external nonReentrant onlyVault returns (uint256 issuedShares) {\n issuedShares = _vault.initializeBuffer(\n wrappedToken,\n exactAmountUnderlyingIn,\n exactAmountWrappedIn,\n minIssuedShares,\n sharesOwner\n );\n\n address asset = _vault.getERC4626BufferAsset(wrappedToken);\n _takeTokenIn(sharesOwner, IERC20(asset), exactAmountUnderlyingIn, false);\n _takeTokenIn(sharesOwner, IERC20(address(wrappedToken)), exactAmountWrappedIn, false);\n }\n\n /// @inheritdoc IBufferRouter\n function addLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 maxAmountUnderlyingIn,\n uint256 maxAmountWrappedIn,\n uint256 exactSharesToIssue\n ) external returns (uint256 amountUnderlyingIn, uint256 amountWrappedIn) {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n BufferRouter.addLiquidityToBufferHook,\n (\n wrappedToken,\n maxAmountUnderlyingIn,\n maxAmountWrappedIn,\n exactSharesToIssue,\n msg.sender // sharesOwner\n )\n )\n ),\n (uint256, uint256)\n );\n }\n\n /**\n * @notice Hook for adding liquidity to vault buffers. The Vault will enforce that the buffer is initialized.\n * @dev Can only be called by the Vault.\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param maxAmountUnderlyingIn Maximum amount of underlying tokens to add to the buffer. It is expressed in\n * underlying token native decimals\n * @param maxAmountWrappedIn Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped\n * token native decimals\n * @param exactSharesToIssue The value in underlying tokens that `sharesOwner` wants to add to the buffer,\n * in underlying token decimals\n * @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to\n * remove liquidity from the buffer\n * @return amountUnderlyingIn Amount of underlying tokens deposited into the buffer\n * @return amountWrappedIn Amount of wrapped tokens deposited into the buffer\n */\n function addLiquidityToBufferHook(\n IERC4626 wrappedToken,\n uint256 maxAmountUnderlyingIn,\n uint256 maxAmountWrappedIn,\n uint256 exactSharesToIssue,\n address sharesOwner\n ) external nonReentrant onlyVault returns (uint256 amountUnderlyingIn, uint256 amountWrappedIn) {\n (amountUnderlyingIn, amountWrappedIn) = _vault.addLiquidityToBuffer(\n wrappedToken,\n maxAmountUnderlyingIn,\n maxAmountWrappedIn,\n exactSharesToIssue,\n sharesOwner\n );\n\n address asset = _vault.getERC4626BufferAsset(wrappedToken);\n _takeTokenIn(sharesOwner, IERC20(asset), amountUnderlyingIn, false);\n _takeTokenIn(sharesOwner, IERC20(address(wrappedToken)), amountWrappedIn, false);\n }\n\n /// @inheritdoc IBufferRouter\n function queryInitializeBuffer(\n IERC4626 wrappedToken,\n uint256 exactAmountUnderlyingIn,\n uint256 exactAmountWrappedIn\n ) external returns (uint256 issuedShares) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(\n BufferRouter.queryInitializeBufferHook,\n (wrappedToken, exactAmountUnderlyingIn, exactAmountWrappedIn)\n )\n ),\n (uint256)\n );\n }\n\n function queryInitializeBufferHook(\n IERC4626 wrappedToken,\n uint256 exactAmountUnderlyingIn,\n uint256 exactAmountWrappedIn\n ) external nonReentrant onlyVault returns (uint256 issuedShares) {\n issuedShares = _vault.initializeBuffer(\n wrappedToken,\n exactAmountUnderlyingIn,\n exactAmountWrappedIn,\n 0,\n address(this)\n );\n }\n\n /// @inheritdoc IBufferRouter\n function queryAddLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 exactSharesToIssue\n ) external returns (uint256 amountUnderlyingIn, uint256 amountWrappedIn) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(BufferRouter.queryAddLiquidityToBufferHook, (wrappedToken, exactSharesToIssue))\n ),\n (uint256, uint256)\n );\n }\n\n function queryAddLiquidityToBufferHook(\n IERC4626 wrappedToken,\n uint256 exactSharesToIssue\n ) external nonReentrant onlyVault returns (uint256 amountUnderlyingIn, uint256 amountWrappedIn) {\n (amountUnderlyingIn, amountWrappedIn) = _vault.addLiquidityToBuffer(\n wrappedToken,\n type(uint128).max,\n type(uint128).max,\n exactSharesToIssue,\n address(this)\n );\n }\n\n /// @inheritdoc IBufferRouter\n function queryRemoveLiquidityFromBuffer(\n IERC4626 wrappedToken,\n uint256 exactSharesToRemove\n ) external returns (uint256 removedUnderlyingBalanceOut, uint256 removedWrappedBalanceOut) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(BufferRouter.queryRemoveLiquidityFromBufferHook, (wrappedToken, exactSharesToRemove))\n ),\n (uint256, uint256)\n );\n }\n\n function queryRemoveLiquidityFromBufferHook(\n IERC4626 wrappedToken,\n uint256 exactSharesToRemove\n ) external nonReentrant onlyVault returns (uint256 removedUnderlyingBalanceOut, uint256 removedWrappedBalanceOut) {\n return _vault.removeLiquidityFromBuffer(wrappedToken, exactSharesToRemove, 0, 0);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\nimport { IHooks } from \"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { WordCodec } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\";\n\nimport { PoolConfigConst } from \"./PoolConfigConst.sol\";\n\n/**\n * @notice Helper functions to read and write the packed hook configuration flags stored in `_poolConfigBits`.\n * @dev This library has two additional functions. `toHooksConfig` constructs a `HooksConfig` structure from the\n * PoolConfig and the hooks contract address. Also, there are `call` functions that forward the arguments\n * to the corresponding functions in the hook contract, then validate and return the results.\n *\n * Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool).\n * This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e.,\n * offsets for each data field) is specified in `PoolConfigConst`.\n *\n * There are two libraries for interpreting these data. This one parses fields related to hooks, and also\n * contains helpers for the struct building and hooks contract forwarding functions described above. `PoolConfigLib`\n * contains helpers related to the non-hook-related flags, along with aggregate fee percentages and other data\n * associated with pools.\n *\n * The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token\n * configuration, scaling factors, and dynamic information such as current balances and rates.\n *\n * The hooks contract addresses themselves are stored in a separate `_hooksContracts` mapping.\n */\nlibrary HooksConfigLib {\n using WordCodec for bytes32;\n using HooksConfigLib for PoolConfigBits;\n\n function enableHookAdjustedAmounts(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET);\n }\n\n function setHookAdjustedAmounts(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET)\n );\n }\n\n function shouldCallBeforeInitialize(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.BEFORE_INITIALIZE_OFFSET);\n }\n\n function setShouldCallBeforeInitialize(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.BEFORE_INITIALIZE_OFFSET)\n );\n }\n\n function shouldCallAfterInitialize(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.AFTER_INITIALIZE_OFFSET);\n }\n\n function setShouldCallAfterInitialize(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.AFTER_INITIALIZE_OFFSET)\n );\n }\n\n function shouldCallComputeDynamicSwapFee(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.DYNAMIC_SWAP_FEE_OFFSET);\n }\n\n function setShouldCallComputeDynamicSwapFee(\n PoolConfigBits config,\n bool value\n ) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.DYNAMIC_SWAP_FEE_OFFSET)\n );\n }\n\n function shouldCallBeforeSwap(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.BEFORE_SWAP_OFFSET);\n }\n\n function setShouldCallBeforeSwap(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return PoolConfigBits.wrap(PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.BEFORE_SWAP_OFFSET));\n }\n\n function shouldCallAfterSwap(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.AFTER_SWAP_OFFSET);\n }\n\n function setShouldCallAfterSwap(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return PoolConfigBits.wrap(PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.AFTER_SWAP_OFFSET));\n }\n\n function shouldCallBeforeAddLiquidity(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.BEFORE_ADD_LIQUIDITY_OFFSET);\n }\n\n function setShouldCallBeforeAddLiquidity(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.BEFORE_ADD_LIQUIDITY_OFFSET)\n );\n }\n\n function shouldCallAfterAddLiquidity(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.AFTER_ADD_LIQUIDITY_OFFSET);\n }\n\n function setShouldCallAfterAddLiquidity(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.AFTER_ADD_LIQUIDITY_OFFSET)\n );\n }\n\n function shouldCallBeforeRemoveLiquidity(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.BEFORE_REMOVE_LIQUIDITY_OFFSET);\n }\n\n function setShouldCallBeforeRemoveLiquidity(\n PoolConfigBits config,\n bool value\n ) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.BEFORE_REMOVE_LIQUIDITY_OFFSET)\n );\n }\n\n function shouldCallAfterRemoveLiquidity(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.AFTER_REMOVE_LIQUIDITY_OFFSET);\n }\n\n function setShouldCallAfterRemoveLiquidity(\n PoolConfigBits config,\n bool value\n ) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.AFTER_REMOVE_LIQUIDITY_OFFSET)\n );\n }\n\n function toHooksConfig(PoolConfigBits config, IHooks hooksContract) internal pure returns (HooksConfig memory) {\n return\n HooksConfig({\n enableHookAdjustedAmounts: config.enableHookAdjustedAmounts(),\n shouldCallBeforeInitialize: config.shouldCallBeforeInitialize(),\n shouldCallAfterInitialize: config.shouldCallAfterInitialize(),\n shouldCallBeforeAddLiquidity: config.shouldCallBeforeAddLiquidity(),\n shouldCallAfterAddLiquidity: config.shouldCallAfterAddLiquidity(),\n shouldCallBeforeRemoveLiquidity: config.shouldCallBeforeRemoveLiquidity(),\n shouldCallAfterRemoveLiquidity: config.shouldCallAfterRemoveLiquidity(),\n shouldCallComputeDynamicSwapFee: config.shouldCallComputeDynamicSwapFee(),\n shouldCallBeforeSwap: config.shouldCallBeforeSwap(),\n shouldCallAfterSwap: config.shouldCallAfterSwap(),\n hooksContract: address(hooksContract)\n });\n }\n\n /**\n * @dev Call the `onComputeDynamicSwapFeePercentage` hook and return the result. Reverts on failure.\n * @param swapParams The swap parameters used to calculate the fee\n * @param pool Pool address\n * @param staticSwapFeePercentage Value of the static swap fee, for reference\n * @param hooksContract Storage slot with the address of the hooks contract\n * @return swapFeePercentage The calculated swap fee percentage\n */\n function callComputeDynamicSwapFeeHook(\n PoolSwapParams memory swapParams,\n address pool,\n uint256 staticSwapFeePercentage,\n IHooks hooksContract\n ) internal view returns (uint256) {\n (bool success, uint256 swapFeePercentage) = hooksContract.onComputeDynamicSwapFeePercentage(\n swapParams,\n pool,\n staticSwapFeePercentage\n );\n\n if (success == false) {\n revert IVaultErrors.DynamicSwapFeeHookFailed();\n }\n\n // A 100% fee is not supported. In the ExactOut case, the Vault divides by the complement of the swap fee.\n // The minimum precision constraint provides an additional buffer.\n if (swapFeePercentage > MAX_FEE_PERCENTAGE) {\n revert IVaultErrors.PercentageAboveMax();\n }\n\n return swapFeePercentage;\n }\n\n /**\n * @dev Call the `onBeforeSwap` hook. Reverts on failure.\n * @param swapParams The swap parameters used in the hook\n * @param pool Pool address\n * @param hooksContract Storage slot with the address of the hooks contract\n */\n function callBeforeSwapHook(PoolSwapParams memory swapParams, address pool, IHooks hooksContract) internal {\n if (hooksContract.onBeforeSwap(swapParams, pool) == false) {\n // Hook contract implements onBeforeSwap, but it has failed, so reverts the transaction.\n revert IVaultErrors.BeforeSwapHookFailed();\n }\n }\n\n /**\n * @dev Call the `onAfterSwap` hook, then validate and return the result. Reverts on failure, or if the limits\n * are violated. If the hook contract did not enable hook-adjusted amounts, it will ignore the hook results and\n * return the original `amountCalculatedRaw`.\n *\n * @param config The encoded pool configuration\n * @param amountCalculatedScaled18 Token amount calculated by the swap\n * @param amountCalculatedRaw Token amount calculated by the swap\n * @param router Router address\n * @param vaultSwapParams The swap parameters\n * @param state Temporary state used in swap operations\n * @param poolData Struct containing balance and token information of the pool\n * @param hooksContract Storage slot with the address of the hooks contract\n * @return hookAdjustedAmountCalculatedRaw New amount calculated, potentially modified by the hook\n */\n function callAfterSwapHook(\n PoolConfigBits config,\n uint256 amountCalculatedScaled18,\n uint256 amountCalculatedRaw,\n address router,\n VaultSwapParams memory vaultSwapParams,\n SwapState memory state,\n PoolData memory poolData,\n IHooks hooksContract\n ) internal returns (uint256) {\n // Adjust balances for the AfterSwap hook.\n (uint256 amountInScaled18, uint256 amountOutScaled18) = vaultSwapParams.kind == SwapKind.EXACT_IN\n ? (state.amountGivenScaled18, amountCalculatedScaled18)\n : (amountCalculatedScaled18, state.amountGivenScaled18);\n\n (bool success, uint256 hookAdjustedAmountCalculatedRaw) = hooksContract.onAfterSwap(\n AfterSwapParams({\n kind: vaultSwapParams.kind,\n tokenIn: vaultSwapParams.tokenIn,\n tokenOut: vaultSwapParams.tokenOut,\n amountInScaled18: amountInScaled18,\n amountOutScaled18: amountOutScaled18,\n tokenInBalanceScaled18: poolData.balancesLiveScaled18[state.indexIn],\n tokenOutBalanceScaled18: poolData.balancesLiveScaled18[state.indexOut],\n amountCalculatedScaled18: amountCalculatedScaled18,\n amountCalculatedRaw: amountCalculatedRaw,\n router: router,\n pool: vaultSwapParams.pool,\n userData: vaultSwapParams.userData\n })\n );\n\n if (success == false) {\n // Hook contract implements onAfterSwap, but it has failed, so reverts the transaction.\n revert IVaultErrors.AfterSwapHookFailed();\n }\n\n // If hook adjusted amounts is not enabled, ignore amounts returned by the hook\n if (config.enableHookAdjustedAmounts() == false) {\n return amountCalculatedRaw;\n }\n\n if (\n (vaultSwapParams.kind == SwapKind.EXACT_IN && hookAdjustedAmountCalculatedRaw < vaultSwapParams.limitRaw) ||\n (vaultSwapParams.kind == SwapKind.EXACT_OUT && hookAdjustedAmountCalculatedRaw > vaultSwapParams.limitRaw)\n ) {\n revert IVaultErrors.HookAdjustedSwapLimit(hookAdjustedAmountCalculatedRaw, vaultSwapParams.limitRaw);\n }\n\n return hookAdjustedAmountCalculatedRaw;\n }\n\n /**\n * @dev Call the `onBeforeAddLiquidity` hook. Reverts on failure.\n * @param router Router address\n * @param maxAmountsInScaled18 An array with maximum amounts for each input token of the add liquidity operation\n * @param params The add liquidity parameters\n * @param poolData Struct containing balance and token information of the pool\n * @param hooksContract Storage slot with the address of the hooks contract\n */\n function callBeforeAddLiquidityHook(\n address router,\n uint256[] memory maxAmountsInScaled18,\n AddLiquidityParams memory params,\n PoolData memory poolData,\n IHooks hooksContract\n ) internal {\n if (\n hooksContract.onBeforeAddLiquidity(\n router,\n params.pool,\n params.kind,\n maxAmountsInScaled18,\n params.minBptAmountOut,\n poolData.balancesLiveScaled18,\n params.userData\n ) == false\n ) {\n revert IVaultErrors.BeforeAddLiquidityHookFailed();\n }\n }\n\n /**\n * @dev Call the `onAfterAddLiquidity` hook, then validate and return the result. Reverts on failure, or if\n * the limits are violated. If the contract did not enable hook-adjusted amounts, it will ignore the hook\n * results and return the original `amountsInRaw`.\n *\n * @param config The encoded pool configuration\n * @param router Router address\n * @param amountsInScaled18 An array with amounts for each input token of the add liquidity operation\n * @param amountsInRaw An array with amounts for each input token of the add liquidity operation\n * @param bptAmountOut The BPT amount a user will receive after add liquidity operation succeeds\n * @param params The add liquidity parameters\n * @param poolData Struct containing balance and token information of the pool\n * @param hooksContract Storage slot with the address of the hooks contract\n * @return hookAdjustedAmountsInRaw New amountsInRaw, potentially modified by the hook\n */\n function callAfterAddLiquidityHook(\n PoolConfigBits config,\n address router,\n uint256[] memory amountsInScaled18,\n uint256[] memory amountsInRaw,\n uint256 bptAmountOut,\n AddLiquidityParams memory params,\n PoolData memory poolData,\n IHooks hooksContract\n ) internal returns (uint256[] memory) {\n (bool success, uint256[] memory hookAdjustedAmountsInRaw) = hooksContract.onAfterAddLiquidity(\n router,\n params.pool,\n params.kind,\n amountsInScaled18,\n amountsInRaw,\n bptAmountOut,\n poolData.balancesLiveScaled18,\n params.userData\n );\n\n if (success == false || hookAdjustedAmountsInRaw.length != amountsInRaw.length) {\n revert IVaultErrors.AfterAddLiquidityHookFailed();\n }\n\n // If hook adjusted amounts is not enabled, ignore amounts returned by the hook\n if (config.enableHookAdjustedAmounts() == false) {\n return amountsInRaw;\n }\n\n for (uint256 i = 0; i < hookAdjustedAmountsInRaw.length; i++) {\n if (hookAdjustedAmountsInRaw[i] > params.maxAmountsIn[i]) {\n revert IVaultErrors.HookAdjustedAmountInAboveMax(\n poolData.tokens[i],\n hookAdjustedAmountsInRaw[i],\n params.maxAmountsIn[i]\n );\n }\n }\n\n return hookAdjustedAmountsInRaw;\n }\n\n /**\n * @dev Call the `onBeforeRemoveLiquidity` hook. Reverts on failure.\n * @param minAmountsOutScaled18 Minimum amounts for each output token of the remove liquidity operation\n * @param router Router address\n * @param params The remove liquidity parameters\n * @param poolData Struct containing balance and token information of the pool\n * @param hooksContract Storage slot with the address of the hooks contract\n */\n function callBeforeRemoveLiquidityHook(\n uint256[] memory minAmountsOutScaled18,\n address router,\n RemoveLiquidityParams memory params,\n PoolData memory poolData,\n IHooks hooksContract\n ) internal {\n if (\n hooksContract.onBeforeRemoveLiquidity(\n router,\n params.pool,\n params.kind,\n params.maxBptAmountIn,\n minAmountsOutScaled18,\n poolData.balancesLiveScaled18,\n params.userData\n ) == false\n ) {\n revert IVaultErrors.BeforeRemoveLiquidityHookFailed();\n }\n }\n\n /**\n * @dev Call the `onAfterRemoveLiquidity` hook, then validate and return the result. Reverts on failure, or if\n * the limits are violated. If the contract did not enable hook-adjusted amounts, it will ignore the hook\n * results and return the original `amountsOutRaw`.\n *\n * @param config The encoded pool configuration\n * @param router Router address\n * @param amountsOutScaled18 Scaled amount of tokens to receive, sorted in token registration order\n * @param amountsOutRaw Actual amount of tokens to receive, sorted in token registration order\n * @param bptAmountIn The BPT amount a user will need burn to remove the liquidity of the pool\n * @param params The remove liquidity parameters\n * @param poolData Struct containing balance and token information of the pool\n * @param hooksContract Storage slot with the address of the hooks contract\n * @return hookAdjustedAmountsOutRaw New amountsOutRaw, potentially modified by the hook\n */\n function callAfterRemoveLiquidityHook(\n PoolConfigBits config,\n address router,\n uint256[] memory amountsOutScaled18,\n uint256[] memory amountsOutRaw,\n uint256 bptAmountIn,\n RemoveLiquidityParams memory params,\n PoolData memory poolData,\n IHooks hooksContract\n ) internal returns (uint256[] memory) {\n (bool success, uint256[] memory hookAdjustedAmountsOutRaw) = hooksContract.onAfterRemoveLiquidity(\n router,\n params.pool,\n params.kind,\n bptAmountIn,\n amountsOutScaled18,\n amountsOutRaw,\n poolData.balancesLiveScaled18,\n params.userData\n );\n\n if (success == false || hookAdjustedAmountsOutRaw.length != amountsOutRaw.length) {\n revert IVaultErrors.AfterRemoveLiquidityHookFailed();\n }\n\n // If hook adjusted amounts is not enabled, ignore amounts returned by the hook\n if (config.enableHookAdjustedAmounts() == false) {\n return amountsOutRaw;\n }\n\n for (uint256 i = 0; i < hookAdjustedAmountsOutRaw.length; i++) {\n if (hookAdjustedAmountsOutRaw[i] < params.minAmountsOut[i]) {\n revert IVaultErrors.HookAdjustedAmountOutBelowMin(\n poolData.tokens[i],\n hookAdjustedAmountsOutRaw[i],\n params.minAmountsOut[i]\n );\n }\n }\n\n return hookAdjustedAmountsOutRaw;\n }\n\n /**\n * @dev Call the `onBeforeInitialize` hook. Reverts on failure.\n * @param exactAmountsInScaled18 An array with the initial liquidity of the pool\n * @param userData Additional (optional) data required for adding initial liquidity\n * @param hooksContract Storage slot with the address of the hooks contract\n */\n function callBeforeInitializeHook(\n uint256[] memory exactAmountsInScaled18,\n bytes memory userData,\n IHooks hooksContract\n ) internal {\n if (hooksContract.onBeforeInitialize(exactAmountsInScaled18, userData) == false) {\n revert IVaultErrors.BeforeInitializeHookFailed();\n }\n }\n\n /**\n * @dev Call the `onAfterInitialize` hook. Reverts on failure.\n * @param exactAmountsInScaled18 An array with the initial liquidity of the pool\n * @param bptAmountOut The BPT amount a user will receive after initialization operation succeeds\n * @param userData Additional (optional) data required for adding initial liquidity\n * @param hooksContract Storage slot with the address of the hooks contract\n */\n function callAfterInitializeHook(\n uint256[] memory exactAmountsInScaled18,\n uint256 bptAmountOut,\n bytes memory userData,\n IHooks hooksContract\n ) internal {\n if (hooksContract.onAfterInitialize(exactAmountsInScaled18, bptAmountOut, userData) == false) {\n revert IVaultErrors.AfterInitializeHookFailed();\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { FEE_BITLENGTH } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\n/**\n * @notice Helper functions to read and write the packed configuration flags stored in `_poolConfigBits`.\n * @dev Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool).\n * This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e.,\n * offsets for each data field) is specified here.\n *\n * There are two libraries for interpreting these data. `HooksConfigLib` parses fields related to hooks, while\n * `PoolConfigLib` contains helpers related to the non-hook-related flags, along with aggregate fee percentages\n * and other data associated with pools.\n */\nlibrary PoolConfigConst {\n // Bit offsets for main pool config settings.\n uint8 public constant POOL_REGISTERED_OFFSET = 0;\n uint8 public constant POOL_INITIALIZED_OFFSET = POOL_REGISTERED_OFFSET + 1;\n uint8 public constant POOL_PAUSED_OFFSET = POOL_INITIALIZED_OFFSET + 1;\n uint8 public constant POOL_RECOVERY_MODE_OFFSET = POOL_PAUSED_OFFSET + 1;\n\n // Bit offsets for liquidity operations.\n uint8 public constant UNBALANCED_LIQUIDITY_OFFSET = POOL_RECOVERY_MODE_OFFSET + 1;\n uint8 public constant ADD_LIQUIDITY_CUSTOM_OFFSET = UNBALANCED_LIQUIDITY_OFFSET + 1;\n uint8 public constant REMOVE_LIQUIDITY_CUSTOM_OFFSET = ADD_LIQUIDITY_CUSTOM_OFFSET + 1;\n uint8 public constant DONATION_OFFSET = REMOVE_LIQUIDITY_CUSTOM_OFFSET + 1;\n\n // Bit offsets for hooks config.\n uint8 public constant BEFORE_INITIALIZE_OFFSET = DONATION_OFFSET + 1;\n uint8 public constant ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET = BEFORE_INITIALIZE_OFFSET + 1;\n uint8 public constant AFTER_INITIALIZE_OFFSET = ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET + 1;\n uint8 public constant DYNAMIC_SWAP_FEE_OFFSET = AFTER_INITIALIZE_OFFSET + 1;\n uint8 public constant BEFORE_SWAP_OFFSET = DYNAMIC_SWAP_FEE_OFFSET + 1;\n uint8 public constant AFTER_SWAP_OFFSET = BEFORE_SWAP_OFFSET + 1;\n uint8 public constant BEFORE_ADD_LIQUIDITY_OFFSET = AFTER_SWAP_OFFSET + 1;\n uint8 public constant AFTER_ADD_LIQUIDITY_OFFSET = BEFORE_ADD_LIQUIDITY_OFFSET + 1;\n uint8 public constant BEFORE_REMOVE_LIQUIDITY_OFFSET = AFTER_ADD_LIQUIDITY_OFFSET + 1;\n uint8 public constant AFTER_REMOVE_LIQUIDITY_OFFSET = BEFORE_REMOVE_LIQUIDITY_OFFSET + 1;\n\n // Bit offsets for uint values.\n uint8 public constant STATIC_SWAP_FEE_OFFSET = AFTER_REMOVE_LIQUIDITY_OFFSET + 1;\n uint256 public constant AGGREGATE_SWAP_FEE_OFFSET = STATIC_SWAP_FEE_OFFSET + FEE_BITLENGTH;\n uint256 public constant AGGREGATE_YIELD_FEE_OFFSET = AGGREGATE_SWAP_FEE_OFFSET + FEE_BITLENGTH;\n uint256 public constant DECIMAL_SCALING_FACTORS_OFFSET = AGGREGATE_YIELD_FEE_OFFSET + FEE_BITLENGTH;\n uint256 public constant PAUSE_WINDOW_END_TIME_OFFSET =\n DECIMAL_SCALING_FACTORS_OFFSET + TOKEN_DECIMAL_DIFFS_BITLENGTH;\n\n // Uses a uint40 to pack the values: 8 tokens * 5 bits/token.\n // This maximum token count is also hard-coded in the Vault.\n uint8 public constant TOKEN_DECIMAL_DIFFS_BITLENGTH = 40;\n uint8 public constant DECIMAL_DIFF_BITLENGTH = 5;\n\n uint8 public constant TIMESTAMP_BITLENGTH = 32;\n}\n"},"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { WordCodec } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\";\n\nimport { PoolConfigConst } from \"./PoolConfigConst.sol\";\n\n/**\n * @notice Helper functions to read and write the packed hook configuration flags stored in `_poolConfigBits`.\n * @dev Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot\n * per pool). This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct.\n * The layout (i.e., offsets for each data field) is specified in `PoolConfigConst`.\n *\n * There are two libraries for interpreting these data. `HooksConfigLib` parses fields related to hooks, while\n * this one contains helpers related to the non-hook-related flags, along with aggregate fee percentages and\n * other data associated with pools.\n *\n * The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token\n * configuration, scaling factors, and dynamic information such as current balances and rates.\n */\nlibrary PoolConfigLib {\n using WordCodec for bytes32;\n using PoolConfigLib for PoolConfigBits;\n\n // Bit offsets for main pool config settings.\n function isPoolRegistered(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.POOL_REGISTERED_OFFSET);\n }\n\n function setPoolRegistered(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.POOL_REGISTERED_OFFSET)\n );\n }\n\n function isPoolInitialized(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.POOL_INITIALIZED_OFFSET);\n }\n\n function setPoolInitialized(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.POOL_INITIALIZED_OFFSET)\n );\n }\n\n function isPoolPaused(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.POOL_PAUSED_OFFSET);\n }\n\n function setPoolPaused(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return PoolConfigBits.wrap(PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.POOL_PAUSED_OFFSET));\n }\n\n function isPoolInRecoveryMode(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.POOL_RECOVERY_MODE_OFFSET);\n }\n\n function setPoolInRecoveryMode(PoolConfigBits config, bool value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(value, PoolConfigConst.POOL_RECOVERY_MODE_OFFSET)\n );\n }\n\n // Bit offsets for liquidity operations.\n function supportsUnbalancedLiquidity(PoolConfigBits config) internal pure returns (bool) {\n // NOTE: The unbalanced liquidity flag is default-on (false means it is supported).\n // This function returns the inverted value.\n return !PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.UNBALANCED_LIQUIDITY_OFFSET);\n }\n\n function requireUnbalancedLiquidityEnabled(PoolConfigBits config) internal pure {\n if (config.supportsUnbalancedLiquidity() == false) {\n revert IVaultErrors.DoesNotSupportUnbalancedLiquidity();\n }\n }\n\n function setDisableUnbalancedLiquidity(\n PoolConfigBits config,\n bool disableUnbalancedLiquidity\n ) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(\n disableUnbalancedLiquidity,\n PoolConfigConst.UNBALANCED_LIQUIDITY_OFFSET\n )\n );\n }\n\n function supportsAddLiquidityCustom(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.ADD_LIQUIDITY_CUSTOM_OFFSET);\n }\n\n function requireAddLiquidityCustomEnabled(PoolConfigBits config) internal pure {\n if (config.supportsAddLiquidityCustom() == false) {\n revert IVaultErrors.DoesNotSupportAddLiquidityCustom();\n }\n }\n\n function setAddLiquidityCustom(\n PoolConfigBits config,\n bool enableAddLiquidityCustom\n ) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(\n enableAddLiquidityCustom,\n PoolConfigConst.ADD_LIQUIDITY_CUSTOM_OFFSET\n )\n );\n }\n\n function supportsRemoveLiquidityCustom(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.REMOVE_LIQUIDITY_CUSTOM_OFFSET);\n }\n\n function requireRemoveLiquidityCustomEnabled(PoolConfigBits config) internal pure {\n if (config.supportsRemoveLiquidityCustom() == false) {\n revert IVaultErrors.DoesNotSupportRemoveLiquidityCustom();\n }\n }\n\n function setRemoveLiquidityCustom(\n PoolConfigBits config,\n bool enableRemoveLiquidityCustom\n ) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(\n enableRemoveLiquidityCustom,\n PoolConfigConst.REMOVE_LIQUIDITY_CUSTOM_OFFSET\n )\n );\n }\n\n function supportsDonation(PoolConfigBits config) internal pure returns (bool) {\n return PoolConfigBits.unwrap(config).decodeBool(PoolConfigConst.DONATION_OFFSET);\n }\n\n function setDonation(PoolConfigBits config, bool enableDonation) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertBool(enableDonation, PoolConfigConst.DONATION_OFFSET)\n );\n }\n\n function requireDonationEnabled(PoolConfigBits config) internal pure {\n if (config.supportsDonation() == false) {\n revert IVaultErrors.DoesNotSupportDonation();\n }\n }\n\n // Bit offsets for uint values.\n function getStaticSwapFeePercentage(PoolConfigBits config) internal pure returns (uint256) {\n return\n PoolConfigBits.unwrap(config).decodeUint(PoolConfigConst.STATIC_SWAP_FEE_OFFSET, FEE_BITLENGTH) *\n FEE_SCALING_FACTOR;\n }\n\n function setStaticSwapFeePercentage(PoolConfigBits config, uint256 value) internal pure returns (PoolConfigBits) {\n // A 100% fee is not supported. In the ExactOut case, the Vault divides by the complement of the swap fee.\n // The max fee percentage is slightly below 100%.\n if (value > MAX_FEE_PERCENTAGE) {\n revert IVaultErrors.PercentageAboveMax();\n }\n value /= FEE_SCALING_FACTOR;\n\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertUint(value, PoolConfigConst.STATIC_SWAP_FEE_OFFSET, FEE_BITLENGTH)\n );\n }\n\n function getAggregateSwapFeePercentage(PoolConfigBits config) internal pure returns (uint256) {\n return\n PoolConfigBits.unwrap(config).decodeUint(PoolConfigConst.AGGREGATE_SWAP_FEE_OFFSET, FEE_BITLENGTH) *\n FEE_SCALING_FACTOR;\n }\n\n function setAggregateSwapFeePercentage(\n PoolConfigBits config,\n uint256 value\n ) internal pure returns (PoolConfigBits) {\n if (value > MAX_FEE_PERCENTAGE) {\n revert IVaultErrors.PercentageAboveMax();\n }\n value /= FEE_SCALING_FACTOR;\n\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertUint(\n value,\n PoolConfigConst.AGGREGATE_SWAP_FEE_OFFSET,\n FEE_BITLENGTH\n )\n );\n }\n\n function getAggregateYieldFeePercentage(PoolConfigBits config) internal pure returns (uint256) {\n return\n PoolConfigBits.unwrap(config).decodeUint(PoolConfigConst.AGGREGATE_YIELD_FEE_OFFSET, FEE_BITLENGTH) *\n FEE_SCALING_FACTOR;\n }\n\n function setAggregateYieldFeePercentage(\n PoolConfigBits config,\n uint256 value\n ) internal pure returns (PoolConfigBits) {\n if (value > MAX_FEE_PERCENTAGE) {\n revert IVaultErrors.PercentageAboveMax();\n }\n value /= FEE_SCALING_FACTOR;\n\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertUint(\n value,\n PoolConfigConst.AGGREGATE_YIELD_FEE_OFFSET,\n FEE_BITLENGTH\n )\n );\n }\n\n function getTokenDecimalDiffs(PoolConfigBits config) internal pure returns (uint40) {\n return\n uint40(\n PoolConfigBits.unwrap(config).decodeUint(\n PoolConfigConst.DECIMAL_SCALING_FACTORS_OFFSET,\n PoolConfigConst.TOKEN_DECIMAL_DIFFS_BITLENGTH\n )\n );\n }\n\n function getDecimalScalingFactors(\n PoolConfigBits config,\n uint256 numTokens\n ) internal pure returns (uint256[] memory) {\n uint256[] memory scalingFactors = new uint256[](numTokens);\n\n bytes32 tokenDecimalDiffs = bytes32(uint256(config.getTokenDecimalDiffs()));\n\n for (uint256 i = 0; i < numTokens; ++i) {\n uint256 decimalDiff = tokenDecimalDiffs.decodeUint(\n i * PoolConfigConst.DECIMAL_DIFF_BITLENGTH,\n PoolConfigConst.DECIMAL_DIFF_BITLENGTH\n );\n\n // This is a \"raw\" factor, not a fixed point number. It should be applied using raw math to raw amounts\n // instead of using FP multiplication.\n scalingFactors[i] = 10 ** decimalDiff;\n }\n\n return scalingFactors;\n }\n\n function setTokenDecimalDiffs(PoolConfigBits config, uint40 value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertUint(\n value,\n PoolConfigConst.DECIMAL_SCALING_FACTORS_OFFSET,\n PoolConfigConst.TOKEN_DECIMAL_DIFFS_BITLENGTH\n )\n );\n }\n\n function getPauseWindowEndTime(PoolConfigBits config) internal pure returns (uint32) {\n return\n uint32(\n PoolConfigBits.unwrap(config).decodeUint(\n PoolConfigConst.PAUSE_WINDOW_END_TIME_OFFSET,\n PoolConfigConst.TIMESTAMP_BITLENGTH\n )\n );\n }\n\n function setPauseWindowEndTime(PoolConfigBits config, uint32 value) internal pure returns (PoolConfigBits) {\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertUint(\n value,\n PoolConfigConst.PAUSE_WINDOW_END_TIME_OFFSET,\n PoolConfigConst.TIMESTAMP_BITLENGTH\n )\n );\n }\n\n // Convert from an array of decimal differences, to the encoded 40-bit value (8 tokens * 5 bits/token).\n function toTokenDecimalDiffs(uint8[] memory tokenDecimalDiffs) internal pure returns (uint40) {\n bytes32 value;\n\n for (uint256 i = 0; i < tokenDecimalDiffs.length; ++i) {\n value = value.insertUint(\n tokenDecimalDiffs[i],\n i * PoolConfigConst.DECIMAL_DIFF_BITLENGTH,\n PoolConfigConst.DECIMAL_DIFF_BITLENGTH\n );\n }\n\n return uint40(uint256(value));\n }\n}\n"},"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { PoolData, TokenInfo, TokenType, Rounding } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\n\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\nimport { ScalingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\";\nimport { PackedTokenBalance } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\";\n\nimport { PoolConfigBits, PoolConfigLib } from \"./PoolConfigLib.sol\";\n\n/**\n * @notice Helper functions to read/write a `PoolData` struct.\n * @dev Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool).\n * This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e.,\n * offsets for each data field) is specified in `PoolConfigConst`.\n *\n * The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token\n * configuration, scaling factors, and dynamic information such as current balances and rates.\n */\nlibrary PoolDataLib {\n using PackedTokenBalance for bytes32;\n using FixedPoint for *;\n using ScalingHelpers for *;\n using PoolConfigLib for PoolConfigBits;\n\n function load(\n PoolData memory poolData,\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances,\n PoolConfigBits poolConfigBits,\n mapping(IERC20 poolToken => TokenInfo tokenInfo) storage poolTokenInfo,\n IERC20[] storage tokens,\n Rounding roundingDirection\n ) internal view {\n uint256 numTokens = tokens.length;\n\n poolData.poolConfigBits = poolConfigBits;\n poolData.tokens = tokens;\n poolData.tokenInfo = new TokenInfo[](numTokens);\n poolData.balancesRaw = new uint256[](numTokens);\n poolData.balancesLiveScaled18 = new uint256[](numTokens);\n poolData.decimalScalingFactors = PoolConfigLib.getDecimalScalingFactors(poolData.poolConfigBits, numTokens);\n poolData.tokenRates = new uint256[](numTokens);\n\n bool poolSubjectToYieldFees = poolData.poolConfigBits.isPoolInitialized() &&\n poolData.poolConfigBits.getAggregateYieldFeePercentage() > 0 &&\n poolData.poolConfigBits.isPoolInRecoveryMode() == false;\n\n for (uint256 i = 0; i < numTokens; ++i) {\n TokenInfo memory tokenInfo = poolTokenInfo[poolData.tokens[i]];\n bytes32 packedBalance = poolTokenBalances[i];\n\n poolData.tokenInfo[i] = tokenInfo;\n poolData.tokenRates[i] = getTokenRate(tokenInfo);\n updateRawAndLiveBalance(poolData, i, packedBalance.getBalanceRaw(), roundingDirection);\n\n // If there are no yield fees, we can save gas by skipping to the next token now.\n if (poolSubjectToYieldFees == false) {\n continue;\n }\n\n // `poolData` already has live balances computed from raw balances according to the token rates and the\n // given rounding direction. Charging a yield fee changes the raw balance, in which case the safest and\n // most numerically precise way to adjust the live balance is to simply repeat the scaling (hence the\n // second call below).\n\n // The Vault actually guarantees that a token with paysYieldFees set is a WITH_RATE token, so technically\n // we could just check the flag, but we don't want to introduce that dependency for a slight gas savings.\n bool tokenSubjectToYieldFees = tokenInfo.paysYieldFees && tokenInfo.tokenType == TokenType.WITH_RATE;\n\n // Do not charge yield fees before the pool is initialized, or in recovery mode.\n if (tokenSubjectToYieldFees) {\n uint256 aggregateYieldFeePercentage = poolData.poolConfigBits.getAggregateYieldFeePercentage();\n uint256 balanceRaw = poolData.balancesRaw[i];\n\n uint256 aggregateYieldFeeAmountRaw = _computeYieldFeesDue(\n poolData,\n packedBalance.getBalanceDerived(),\n i,\n aggregateYieldFeePercentage\n );\n\n if (aggregateYieldFeeAmountRaw > 0) {\n updateRawAndLiveBalance(poolData, i, balanceRaw - aggregateYieldFeeAmountRaw, roundingDirection);\n }\n }\n }\n }\n\n function syncPoolBalancesAndFees(\n PoolData memory poolData,\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances,\n mapping(IERC20 token => bytes32 packedFeeAmounts) storage poolAggregateProtocolFeeAmounts\n ) internal {\n uint256 numTokens = poolData.balancesRaw.length;\n\n for (uint256 i = 0; i < numTokens; ++i) {\n IERC20 token = poolData.tokens[i];\n bytes32 packedBalances = poolTokenBalances[i];\n uint256 storedBalanceRaw = packedBalances.getBalanceRaw();\n\n // `poolData` now has balances updated with yield fees.\n // If yield fees are not 0, then the stored balance is greater than the one in memory.\n if (storedBalanceRaw > poolData.balancesRaw[i]) {\n // Both Swap and Yield fees are stored together in a `PackedTokenBalance`.\n // We have designated \"Derived\" the derived half for Yield fee storage.\n bytes32 packedProtocolFeeAmounts = poolAggregateProtocolFeeAmounts[token];\n poolAggregateProtocolFeeAmounts[token] = packedProtocolFeeAmounts.setBalanceDerived(\n packedProtocolFeeAmounts.getBalanceDerived() + (storedBalanceRaw - poolData.balancesRaw[i])\n );\n }\n\n poolTokenBalances[i] = PackedTokenBalance.toPackedBalance(\n poolData.balancesRaw[i],\n poolData.balancesLiveScaled18[i]\n );\n }\n }\n\n /**\n * @dev This is typically called after a reentrant callback (e.g., a \"before\" liquidity operation callback),\n * to refresh the poolData struct with any balances (or rates) that might have changed.\n *\n * Preconditions: tokenConfig, balancesRaw, and decimalScalingFactors must be current in `poolData`.\n * Side effects: mutates tokenRates, balancesLiveScaled18 in `poolData`.\n */\n function reloadBalancesAndRates(\n PoolData memory poolData,\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances,\n Rounding roundingDirection\n ) internal view {\n uint256 numTokens = poolData.tokens.length;\n\n // It's possible a reentrant hook changed the raw balances in Vault storage.\n // Update them before computing the live balances.\n bytes32 packedBalance;\n\n for (uint256 i = 0; i < numTokens; ++i) {\n poolData.tokenRates[i] = getTokenRate(poolData.tokenInfo[i]);\n\n packedBalance = poolTokenBalances[i];\n\n // Note the order dependency. This requires up-to-date tokenRate for the token at index `i` in `poolData`.\n updateRawAndLiveBalance(poolData, i, packedBalance.getBalanceRaw(), roundingDirection);\n }\n }\n\n function getTokenRate(TokenInfo memory tokenInfo) internal view returns (uint256 rate) {\n TokenType tokenType = tokenInfo.tokenType;\n\n if (tokenType == TokenType.STANDARD) {\n rate = FixedPoint.ONE;\n } else if (tokenType == TokenType.WITH_RATE) {\n rate = tokenInfo.rateProvider.getRate();\n } else {\n revert IVaultErrors.InvalidTokenConfiguration();\n }\n }\n\n function updateRawAndLiveBalance(\n PoolData memory poolData,\n uint256 tokenIndex,\n uint256 newRawBalance,\n Rounding roundingDirection\n ) internal pure {\n poolData.balancesRaw[tokenIndex] = newRawBalance;\n\n function(uint256, uint256, uint256) internal pure returns (uint256) _upOrDown = roundingDirection ==\n Rounding.ROUND_UP\n ? ScalingHelpers.toScaled18ApplyRateRoundUp\n : ScalingHelpers.toScaled18ApplyRateRoundDown;\n\n poolData.balancesLiveScaled18[tokenIndex] = _upOrDown(\n newRawBalance,\n poolData.decimalScalingFactors[tokenIndex],\n poolData.tokenRates[tokenIndex]\n );\n }\n\n // solhint-disable-next-line private-vars-leading-underscore\n function _computeYieldFeesDue(\n PoolData memory poolData,\n uint256 lastLiveBalance,\n uint256 tokenIndex,\n uint256 aggregateYieldFeePercentage\n ) internal pure returns (uint256 aggregateYieldFeeAmountRaw) {\n uint256 currentLiveBalance = poolData.balancesLiveScaled18[tokenIndex];\n\n // Do not charge fees if rates go down. If the rate were to go up, down, and back up again, protocol fees\n // would be charged multiple times on the \"same\" yield. For tokens subject to yield fees, this should not\n // happen, or at least be very rare. It can be addressed for known volatile rates by setting the yield fee\n // exempt flag on registration, or compensated off-chain if there is an incident with a normally\n // well-behaved rate provider.\n if (currentLiveBalance > lastLiveBalance) {\n unchecked {\n // Magnitudes are checked above, so it's safe to do unchecked math here.\n uint256 aggregateYieldFeeAmountScaled18 = (currentLiveBalance - lastLiveBalance).mulUp(\n aggregateYieldFeePercentage\n );\n\n // A pool is subject to yield fees if poolSubjectToYieldFees is true, meaning that\n // `protocolYieldFeePercentage > 0`. So, we don't need to check this again in here, saving some gas.\n aggregateYieldFeeAmountRaw = aggregateYieldFeeAmountScaled18.toRawUndoRateRoundDown(\n poolData.decimalScalingFactors[tokenIndex],\n poolData.tokenRates[tokenIndex]\n );\n }\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\n\n/**\n * @notice Ensure functions in extension contracts can only be called through the main Vault.\n * @dev The Vault is composed of three contracts, using the Proxy pattern from OpenZeppelin. `ensureVaultDelegateCall`\n * can be called on the locally stored Vault address by modifiers in extension contracts to ensure that their functions\n * can only be called through the main Vault. Because the storage *layout* is shared (through inheritance of\n * `VaultStorage`), but each contract actually has its own storage, we need to make sure we are always calling in the\n * main Vault context, to avoid referencing storage in the extension contracts.\n */\nlibrary VaultExtensionsLib {\n function ensureVaultDelegateCall(IVault vault) internal view {\n // If this is a delegate call from the Vault, the address of the contract should be the Vault's,\n // not the extension.\n if (address(this) != address(vault)) {\n revert IVaultErrors.NotVaultDelegateCall();\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { WordCodec } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\";\n\n// @notice Custom type to store the Vault configuration.\ntype VaultStateBits is bytes32;\n\n/// @notice Helper functions for reading and writing the `VaultState` struct.\nlibrary VaultStateLib {\n using WordCodec for bytes32;\n\n // Bit offsets for the Vault state flags.\n uint256 public constant QUERY_DISABLED_OFFSET = 0;\n uint256 public constant VAULT_PAUSED_OFFSET = QUERY_DISABLED_OFFSET + 1;\n uint256 public constant BUFFER_PAUSED_OFFSET = VAULT_PAUSED_OFFSET + 1;\n\n function isQueryDisabled(VaultStateBits config) internal pure returns (bool) {\n return VaultStateBits.unwrap(config).decodeBool(QUERY_DISABLED_OFFSET);\n }\n\n function setQueryDisabled(VaultStateBits config, bool value) internal pure returns (VaultStateBits) {\n return VaultStateBits.wrap(VaultStateBits.unwrap(config).insertBool(value, QUERY_DISABLED_OFFSET));\n }\n\n function isVaultPaused(VaultStateBits config) internal pure returns (bool) {\n return VaultStateBits.unwrap(config).decodeBool(VAULT_PAUSED_OFFSET);\n }\n\n function setVaultPaused(VaultStateBits config, bool value) internal pure returns (VaultStateBits) {\n return VaultStateBits.wrap(VaultStateBits.unwrap(config).insertBool(value, VAULT_PAUSED_OFFSET));\n }\n\n function areBuffersPaused(VaultStateBits config) internal pure returns (bool) {\n return VaultStateBits.unwrap(config).decodeBool(BUFFER_PAUSED_OFFSET);\n }\n\n function setBuffersPaused(VaultStateBits config, bool value) internal pure returns (VaultStateBits) {\n return VaultStateBits.wrap(VaultStateBits.unwrap(config).insertBool(value, BUFFER_PAUSED_OFFSET));\n }\n}\n"},"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { FEE_SCALING_FACTOR, MAX_FEE_PERCENTAGE } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IProtocolFeeController } from \"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\";\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport {\n ReentrancyGuardTransient\n} from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\";\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport { SingletonAuthentication } from \"./SingletonAuthentication.sol\";\nimport { VaultGuard } from \"./VaultGuard.sol\";\n\n/**\n * @notice Helper contract to manage protocol and creator fees outside the Vault.\n * @dev This contract stores global default protocol swap and yield fees, and also tracks the values of those fees\n * for each pool (the `PoolFeeConfig` described below). Protocol fees can always be overwritten by governance, but\n * pool creator fees are controlled by the registered poolCreator (see `PoolRoleAccounts`).\n *\n * The Vault stores a single aggregate percentage for swap and yield fees; only this `ProtocolFeeController` knows\n * the component fee percentages, and how to compute the aggregate from the components. This is done for performance\n * reasons, to minimize gas on the critical path, as this way the Vault simply applies a single \"cut\", and stores the\n * fee amounts separately from the pool balances.\n *\n * The pool creator fees are \"net\" protocol fees, meaning the protocol fee is taken first, and the pool creator fee\n * percentage is applied to the remainder. Essentially, the protocol is paid first, then the remainder is divided\n * between the pool creator and the LPs.\n *\n * There is a permissionless function (`collectAggregateFees`) that transfers these tokens from the Vault to this\n * contract, and distributes them between the protocol and pool creator, after which they can be withdrawn at any\n * time by governance and the pool creator, respectively.\n *\n * Protocol fees can be zero in some cases (e.g., the token is registered as exempt), and pool creator fees are zero\n * if there is no creator role address defined. Protocol fees are capped at a maximum percentage (50%); pool creator\n * fees are computed \"net\" protocol fees, so they can be any value from 0 to 100%. Any combination is possible.\n * A protocol-fee-exempt pool with a 100% pool creator fee would send all fees to the creator. If there is no pool\n * creator, a pool with a 50% protocol fee would divide the fees evenly between the protocol and LPs.\n *\n * This contract is deployed with the Vault, but can be changed by governance.\n */\ncontract ProtocolFeeController is\n IProtocolFeeController,\n SingletonAuthentication,\n ReentrancyGuardTransient,\n VaultGuard\n{\n using FixedPoint for uint256;\n using SafeERC20 for IERC20;\n using SafeCast for *;\n\n enum ProtocolFeeType {\n SWAP,\n YIELD\n }\n\n /**\n * @notice Fee configuration stored in the swap and yield fee mappings.\n * @dev Instead of storing only the fee in the mapping, also store a flag to indicate whether the fee has been\n * set by governance through a permissioned call. (The fee is stored in 64-bits, so that the struct fits\n * within a single slot.)\n *\n * We know the percentage is an 18-decimal FP value, which only takes 60 bits, so it's guaranteed to fit,\n * and we can do simple casts to truncate the high bits without needed SafeCast.\n *\n * We want to enable permissionless updates for pools, so that it is less onerous to update potentially\n * hundreds of pools if the global protocol fees change. However, we don't want to overwrite pools that\n * have had their fee percentages manually set by the DAO (i.e., after off-chain negotiation and agreement).\n *\n * @param feePercentage The raw swap or yield fee percentage\n * @param isOverride When set, this fee is controlled by governance, and cannot be changed permissionlessly\n */\n struct PoolFeeConfig {\n uint64 feePercentage;\n bool isOverride;\n }\n\n // Maximum protocol swap fee percentage. FixedPoint.ONE corresponds to a 100% fee.\n uint256 public constant MAX_PROTOCOL_SWAP_FEE_PERCENTAGE = 50e16; // 50%\n\n // Maximum protocol yield fee percentage.\n uint256 public constant MAX_PROTOCOL_YIELD_FEE_PERCENTAGE = 50e16; // 50%\n\n // Maximum pool creator (swap, yield) fee percentage.\n uint256 public constant MAX_CREATOR_FEE_PERCENTAGE = 99.999e16; // 99.999%\n\n // Global protocol swap fee.\n uint256 private _globalProtocolSwapFeePercentage;\n\n // Global protocol yield fee.\n uint256 private _globalProtocolYieldFeePercentage;\n\n // Store the pool-specific swap fee percentages (the Vault's poolConfigBits stores the aggregate percentage).\n mapping(address pool => PoolFeeConfig swapFeeConfig) internal _poolProtocolSwapFeePercentages;\n\n // Store the pool-specific yield fee percentages (the Vault's poolConfigBits stores the aggregate percentage).\n mapping(address pool => PoolFeeConfig yieldFeeConfig) internal _poolProtocolYieldFeePercentages;\n\n // Pool creators for each pool (empowered to set pool creator fee percentages, and withdraw creator fees).\n mapping(address pool => address poolCreator) internal _poolCreators;\n\n // Pool creator swap fee percentages for each pool.\n mapping(address pool => uint256 poolCreatorSwapFee) internal _poolCreatorSwapFeePercentages;\n\n // Pool creator yield fee percentages for each pool.\n mapping(address pool => uint256 poolCreatorYieldFee) internal _poolCreatorYieldFeePercentages;\n\n // Disaggregated protocol fees (from swap and yield), available for withdrawal by governance.\n mapping(address pool => mapping(IERC20 poolToken => uint256 feeAmount)) internal _protocolFeeAmounts;\n\n // Disaggregated pool creator fees (from swap and yield), available for withdrawal by the pool creator.\n mapping(address pool => mapping(IERC20 poolToken => uint256 feeAmount)) internal _poolCreatorFeeAmounts;\n\n // Ensure that the caller is the pool creator.\n modifier onlyPoolCreator(address pool) {\n _ensureCallerIsPoolCreator(pool);\n _;\n }\n\n // Validate the swap fee percentage against the maximum.\n modifier withValidSwapFee(uint256 newSwapFeePercentage) {\n if (newSwapFeePercentage > MAX_PROTOCOL_SWAP_FEE_PERCENTAGE) {\n revert ProtocolSwapFeePercentageTooHigh();\n }\n _ensureValidPrecision(newSwapFeePercentage);\n _;\n }\n\n // Validate the yield fee percentage against the maximum.\n modifier withValidYieldFee(uint256 newYieldFeePercentage) {\n if (newYieldFeePercentage > MAX_PROTOCOL_YIELD_FEE_PERCENTAGE) {\n revert ProtocolYieldFeePercentageTooHigh();\n }\n _ensureValidPrecision(newYieldFeePercentage);\n _;\n }\n\n modifier withValidPoolCreatorFee(uint256 newPoolCreatorFeePercentage) {\n if (newPoolCreatorFeePercentage > MAX_CREATOR_FEE_PERCENTAGE) {\n revert PoolCreatorFeePercentageTooHigh();\n }\n _;\n }\n\n // Force collection and disaggregation (e.g., before changing protocol fee percentages).\n modifier withLatestFees(address pool) {\n collectAggregateFees(pool);\n _;\n }\n\n constructor(IVault vault_) SingletonAuthentication(vault_) VaultGuard(vault_) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /// @inheritdoc IProtocolFeeController\n function vault() external view returns (IVault) {\n return _vault;\n }\n\n /// @inheritdoc IProtocolFeeController\n function collectAggregateFees(address pool) public {\n _vault.unlock(abi.encodeCall(ProtocolFeeController.collectAggregateFeesHook, pool));\n }\n\n /**\n * @dev Copy and zero out the `aggregateFeeAmounts` collected in the Vault accounting, supplying credit\n * for each token. Then have the Vault transfer tokens to this contract, debiting each token for the amount\n * transferred so that the transaction settles when the hook returns.\n */\n function collectAggregateFeesHook(address pool) external onlyVault {\n (uint256[] memory totalSwapFees, uint256[] memory totalYieldFees) = _vault.collectAggregateFees(pool);\n _receiveAggregateFees(pool, totalSwapFees, totalYieldFees);\n }\n\n /**\n * @notice Settle fee credits from the Vault.\n * @dev This must be called after calling `collectAggregateFees` in the Vault. Note that since charging protocol\n * fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection\n * happens in the ProtocolFeeController, the swap fees reported here may encompass multiple operations. The Vault\n * differentiates between swap and yield fees (since they can have different percentage values); the Controller\n * combines swap and yield fees, then allocates the total between the protocol and pool creator.\n *\n * @param pool The address of the pool on which the swap fees were charged\n * @param swapFeeAmounts An array with the total swap fees collected, sorted in token registration order\n * @param yieldFeeAmounts An array with the total yield fees collected, sorted in token registration order\n */\n function _receiveAggregateFees(\n address pool,\n uint256[] memory swapFeeAmounts,\n uint256[] memory yieldFeeAmounts\n ) internal {\n _receiveAggregateFees(pool, ProtocolFeeType.SWAP, swapFeeAmounts);\n _receiveAggregateFees(pool, ProtocolFeeType.YIELD, yieldFeeAmounts);\n }\n\n function _receiveAggregateFees(address pool, ProtocolFeeType feeType, uint256[] memory feeAmounts) private {\n // There are two cases when we don't need to split fees (in which case we can save gas and avoid rounding\n // errors by skipping calculations) if either the protocol or pool creator fee percentage is zero.\n\n uint256 protocolFeePercentage = feeType == ProtocolFeeType.SWAP\n ? _poolProtocolSwapFeePercentages[pool].feePercentage\n : _poolProtocolYieldFeePercentages[pool].feePercentage;\n\n uint256 poolCreatorFeePercentage = feeType == ProtocolFeeType.SWAP\n ? _poolCreatorSwapFeePercentages[pool]\n : _poolCreatorYieldFeePercentages[pool];\n\n uint256 aggregateFeePercentage;\n\n bool needToSplitFees = poolCreatorFeePercentage > 0 && protocolFeePercentage > 0;\n if (needToSplitFees) {\n // Calculate once, outside the loop.\n aggregateFeePercentage = _computeAggregateFeePercentage(protocolFeePercentage, poolCreatorFeePercentage);\n }\n\n (IERC20[] memory poolTokens, uint256 numTokens) = _getPoolTokensAndCount(pool);\n for (uint256 i = 0; i < numTokens; ++i) {\n if (feeAmounts[i] > 0) {\n IERC20 token = poolTokens[i];\n\n _vault.sendTo(token, address(this), feeAmounts[i]);\n\n // It should be easier for off-chain processes to handle two events, rather than parsing the type\n // out of a single event.\n if (feeType == ProtocolFeeType.SWAP) {\n emit ProtocolSwapFeeCollected(pool, token, feeAmounts[i]);\n } else {\n emit ProtocolYieldFeeCollected(pool, token, feeAmounts[i]);\n }\n\n if (needToSplitFees) {\n // The Vault took a single \"cut\" for the aggregate total percentage (protocol + pool creator) for\n // this fee type (swap or yield). The first step is to reconstruct this total fee amount. Then we\n // need to \"disaggregate\" this total, dividing it between the protocol and pool creator according\n // to their individual percentages. We do this by computing the protocol portion first, then\n // assigning the remainder to the pool creator.\n uint256 totalFeeAmountRaw = feeAmounts[i].divUp(aggregateFeePercentage);\n uint256 protocolPortion = totalFeeAmountRaw.mulUp(protocolFeePercentage);\n\n _protocolFeeAmounts[pool][token] += protocolPortion;\n _poolCreatorFeeAmounts[pool][token] += feeAmounts[i] - protocolPortion;\n } else {\n // If we don't need to split, one of them must be zero.\n if (poolCreatorFeePercentage == 0) {\n _protocolFeeAmounts[pool][token] += feeAmounts[i];\n } else {\n _poolCreatorFeeAmounts[pool][token] += feeAmounts[i];\n }\n }\n }\n }\n }\n\n /// @inheritdoc IProtocolFeeController\n function getGlobalProtocolSwapFeePercentage() external view returns (uint256) {\n return _globalProtocolSwapFeePercentage;\n }\n\n /// @inheritdoc IProtocolFeeController\n function getGlobalProtocolYieldFeePercentage() external view returns (uint256) {\n return _globalProtocolYieldFeePercentage;\n }\n\n /// @inheritdoc IProtocolFeeController\n function getPoolProtocolSwapFeeInfo(address pool) external view returns (uint256, bool) {\n PoolFeeConfig memory config = _poolProtocolSwapFeePercentages[pool];\n\n return (config.feePercentage, config.isOverride);\n }\n\n /// @inheritdoc IProtocolFeeController\n function getPoolProtocolYieldFeeInfo(address pool) external view returns (uint256, bool) {\n PoolFeeConfig memory config = _poolProtocolYieldFeePercentages[pool];\n\n return (config.feePercentage, config.isOverride);\n }\n\n /// @inheritdoc IProtocolFeeController\n function getProtocolFeeAmounts(address pool) external view returns (uint256[] memory feeAmounts) {\n (IERC20[] memory poolTokens, uint256 numTokens) = _getPoolTokensAndCount(pool);\n\n feeAmounts = new uint256[](numTokens);\n for (uint256 i = 0; i < numTokens; ++i) {\n feeAmounts[i] = _protocolFeeAmounts[pool][poolTokens[i]];\n }\n }\n\n /// @inheritdoc IProtocolFeeController\n function getPoolCreatorFeeAmounts(address pool) external view returns (uint256[] memory feeAmounts) {\n (IERC20[] memory poolTokens, uint256 numTokens) = _getPoolTokensAndCount(pool);\n\n feeAmounts = new uint256[](numTokens);\n for (uint256 i = 0; i < numTokens; ++i) {\n feeAmounts[i] = _poolCreatorFeeAmounts[pool][poolTokens[i]];\n }\n }\n\n /// @inheritdoc IProtocolFeeController\n function computeAggregateFeePercentage(\n uint256 protocolFeePercentage,\n uint256 poolCreatorFeePercentage\n ) external pure returns (uint256) {\n return _computeAggregateFeePercentage(protocolFeePercentage, poolCreatorFeePercentage);\n }\n\n /// @inheritdoc IProtocolFeeController\n function updateProtocolSwapFeePercentage(address pool) external withLatestFees(pool) {\n PoolFeeConfig memory feeConfig = _poolProtocolSwapFeePercentages[pool];\n uint256 globalProtocolSwapFee = _globalProtocolSwapFeePercentage;\n\n if (feeConfig.isOverride == false && globalProtocolSwapFee != feeConfig.feePercentage) {\n _updatePoolSwapFeePercentage(pool, globalProtocolSwapFee, false);\n }\n }\n\n /// @inheritdoc IProtocolFeeController\n function updateProtocolYieldFeePercentage(address pool) external withLatestFees(pool) {\n PoolFeeConfig memory feeConfig = _poolProtocolYieldFeePercentages[pool];\n uint256 globalProtocolYieldFee = _globalProtocolYieldFeePercentage;\n\n if (feeConfig.isOverride == false && globalProtocolYieldFee != feeConfig.feePercentage) {\n _updatePoolYieldFeePercentage(pool, globalProtocolYieldFee, false);\n }\n }\n\n function _getAggregateFeePercentage(address pool, ProtocolFeeType feeType) internal view returns (uint256) {\n uint256 protocolFeePercentage;\n uint256 poolCreatorFeePercentage;\n\n if (feeType == ProtocolFeeType.SWAP) {\n protocolFeePercentage = _poolProtocolSwapFeePercentages[pool].feePercentage;\n poolCreatorFeePercentage = _poolCreatorSwapFeePercentages[pool];\n } else {\n protocolFeePercentage = _poolProtocolYieldFeePercentages[pool].feePercentage;\n poolCreatorFeePercentage = _poolCreatorYieldFeePercentages[pool];\n }\n\n return _computeAggregateFeePercentage(protocolFeePercentage, poolCreatorFeePercentage);\n }\n\n function _computeAggregateFeePercentage(\n uint256 protocolFeePercentage,\n uint256 poolCreatorFeePercentage\n ) internal pure returns (uint256 aggregateFeePercentage) {\n aggregateFeePercentage =\n protocolFeePercentage +\n protocolFeePercentage.complement().mulDown(poolCreatorFeePercentage);\n\n // Protocol fee percentages are limited to 24-bit precision for performance reasons (i.e., to fit all the fees\n // in a single slot), and because high precision is not needed. Generally we expect protocol fees set by\n // governance to be simple integers.\n //\n // However, the pool creator fee is entirely controlled by the pool creator, and it is possible to craft a\n // valid pool creator fee percentage that would cause the aggregate fee percentage to fail the precision check.\n // This case should be rare, so we ensure this can't happen by truncating the final value.\n aggregateFeePercentage = (aggregateFeePercentage / FEE_SCALING_FACTOR) * FEE_SCALING_FACTOR;\n }\n\n function _ensureCallerIsPoolCreator(address pool) internal view {\n address poolCreator = _poolCreators[pool];\n\n if (poolCreator == address(0)) {\n revert PoolCreatorNotRegistered(pool);\n }\n\n if (poolCreator != msg.sender) {\n revert CallerIsNotPoolCreator(msg.sender, pool);\n }\n }\n\n function _getPoolTokensAndCount(address pool) internal view returns (IERC20[] memory tokens, uint256 numTokens) {\n tokens = _vault.getPoolTokens(pool);\n numTokens = tokens.length;\n }\n\n /***************************************************************************\n Permissioned Functions\n ***************************************************************************/\n\n /// @inheritdoc IProtocolFeeController\n function registerPool(\n address pool,\n address poolCreator,\n bool protocolFeeExempt\n ) external onlyVault returns (uint256 aggregateSwapFeePercentage, uint256 aggregateYieldFeePercentage) {\n _poolCreators[pool] = poolCreator;\n\n // Set local storage of the actual percentages for the pool (default to global).\n aggregateSwapFeePercentage = protocolFeeExempt ? 0 : _globalProtocolSwapFeePercentage;\n aggregateYieldFeePercentage = protocolFeeExempt ? 0 : _globalProtocolYieldFeePercentage;\n\n // `isOverride` is true if the pool is protocol fee exempt; otherwise, default to false.\n // If exempt, this pool cannot be updated to the current global percentage permissionlessly.\n // The percentages are 18 decimal floating point numbers, bound between 0 and the max fee (<= FixedPoint.ONE).\n // Since this fits in 64 bits, the SafeCast shouldn't be necessary, and is done out of an abundance of caution.\n _poolProtocolSwapFeePercentages[pool] = PoolFeeConfig({\n feePercentage: aggregateSwapFeePercentage.toUint64(),\n isOverride: protocolFeeExempt\n });\n _poolProtocolYieldFeePercentages[pool] = PoolFeeConfig({\n feePercentage: aggregateYieldFeePercentage.toUint64(),\n isOverride: protocolFeeExempt\n });\n }\n\n /// @inheritdoc IProtocolFeeController\n function setGlobalProtocolSwapFeePercentage(\n uint256 newProtocolSwapFeePercentage\n ) external withValidSwapFee(newProtocolSwapFeePercentage) authenticate {\n _globalProtocolSwapFeePercentage = newProtocolSwapFeePercentage;\n\n emit GlobalProtocolSwapFeePercentageChanged(newProtocolSwapFeePercentage);\n }\n\n /// @inheritdoc IProtocolFeeController\n function setGlobalProtocolYieldFeePercentage(\n uint256 newProtocolYieldFeePercentage\n ) external withValidYieldFee(newProtocolYieldFeePercentage) authenticate {\n _globalProtocolYieldFeePercentage = newProtocolYieldFeePercentage;\n\n emit GlobalProtocolYieldFeePercentageChanged(newProtocolYieldFeePercentage);\n }\n\n /// @inheritdoc IProtocolFeeController\n function setProtocolSwapFeePercentage(\n address pool,\n uint256 newProtocolSwapFeePercentage\n ) external authenticate withValidSwapFee(newProtocolSwapFeePercentage) withLatestFees(pool) {\n _updatePoolSwapFeePercentage(pool, newProtocolSwapFeePercentage, true);\n }\n\n /// @inheritdoc IProtocolFeeController\n function setProtocolYieldFeePercentage(\n address pool,\n uint256 newProtocolYieldFeePercentage\n ) external authenticate withValidYieldFee(newProtocolYieldFeePercentage) withLatestFees(pool) {\n _updatePoolYieldFeePercentage(pool, newProtocolYieldFeePercentage, true);\n }\n\n /// @inheritdoc IProtocolFeeController\n function setPoolCreatorSwapFeePercentage(\n address pool,\n uint256 poolCreatorSwapFeePercentage\n ) external onlyPoolCreator(pool) withValidPoolCreatorFee(poolCreatorSwapFeePercentage) withLatestFees(pool) {\n _setPoolCreatorFeePercentage(pool, poolCreatorSwapFeePercentage, ProtocolFeeType.SWAP);\n }\n\n /// @inheritdoc IProtocolFeeController\n function setPoolCreatorYieldFeePercentage(\n address pool,\n uint256 poolCreatorYieldFeePercentage\n ) external onlyPoolCreator(pool) withValidPoolCreatorFee(poolCreatorYieldFeePercentage) withLatestFees(pool) {\n _setPoolCreatorFeePercentage(pool, poolCreatorYieldFeePercentage, ProtocolFeeType.YIELD);\n }\n\n function _setPoolCreatorFeePercentage(\n address pool,\n uint256 poolCreatorFeePercentage,\n ProtocolFeeType feeType\n ) internal {\n // Need to set locally, and update the aggregate percentage in the Vault.\n if (feeType == ProtocolFeeType.SWAP) {\n _poolCreatorSwapFeePercentages[pool] = poolCreatorFeePercentage;\n\n // The Vault will also emit an `AggregateSwapFeePercentageChanged` event.\n _vault.updateAggregateSwapFeePercentage(pool, _getAggregateFeePercentage(pool, ProtocolFeeType.SWAP));\n\n emit PoolCreatorSwapFeePercentageChanged(pool, poolCreatorFeePercentage);\n } else {\n _poolCreatorYieldFeePercentages[pool] = poolCreatorFeePercentage;\n\n // The Vault will also emit an `AggregateYieldFeePercentageChanged` event.\n _vault.updateAggregateYieldFeePercentage(pool, _getAggregateFeePercentage(pool, ProtocolFeeType.YIELD));\n\n emit PoolCreatorYieldFeePercentageChanged(pool, poolCreatorFeePercentage);\n }\n }\n\n /// @inheritdoc IProtocolFeeController\n function withdrawProtocolFees(address pool, address recipient) external authenticate {\n (IERC20[] memory poolTokens, uint256 numTokens) = _getPoolTokensAndCount(pool);\n\n for (uint256 i = 0; i < numTokens; ++i) {\n IERC20 token = poolTokens[i];\n\n _withdrawProtocolFees(pool, recipient, token);\n }\n }\n\n /// @inheritdoc IProtocolFeeController\n function withdrawProtocolFeesForToken(address pool, address recipient, IERC20 token) external authenticate {\n // Revert if the pool is not registered or if the token does not belong to the pool.\n _vault.getPoolTokenCountAndIndexOfToken(pool, token);\n _withdrawProtocolFees(pool, recipient, token);\n }\n\n function _withdrawProtocolFees(address pool, address recipient, IERC20 token) internal {\n uint256 amountToWithdraw = _protocolFeeAmounts[pool][token];\n if (amountToWithdraw > 0) {\n _protocolFeeAmounts[pool][token] = 0;\n token.safeTransfer(recipient, amountToWithdraw);\n\n emit ProtocolFeesWithdrawn(pool, token, recipient, amountToWithdraw);\n }\n }\n\n /// @inheritdoc IProtocolFeeController\n function withdrawPoolCreatorFees(address pool, address recipient) external onlyPoolCreator(pool) {\n _withdrawPoolCreatorFees(pool, recipient);\n }\n\n /// @inheritdoc IProtocolFeeController\n function withdrawPoolCreatorFees(address pool) external {\n _withdrawPoolCreatorFees(pool, _poolCreators[pool]);\n }\n\n function _withdrawPoolCreatorFees(address pool, address recipient) private {\n (IERC20[] memory poolTokens, uint256 numTokens) = _getPoolTokensAndCount(pool);\n\n for (uint256 i = 0; i < numTokens; ++i) {\n IERC20 token = poolTokens[i];\n\n uint256 amountToWithdraw = _poolCreatorFeeAmounts[pool][token];\n if (amountToWithdraw > 0) {\n _poolCreatorFeeAmounts[pool][token] = 0;\n token.safeTransfer(recipient, amountToWithdraw);\n\n emit PoolCreatorFeesWithdrawn(pool, token, recipient, amountToWithdraw);\n }\n }\n }\n\n /// @dev Common code shared between set/update. `isOverride` will be true if governance is setting the percentage.\n function _updatePoolSwapFeePercentage(address pool, uint256 newProtocolSwapFeePercentage, bool isOverride) private {\n // Update local storage of the raw percentage.\n //\n // The percentages are 18 decimal floating point numbers, bound between 0 and the max fee (<= FixedPoint.ONE).\n // Since this fits in 64 bits, the SafeCast shouldn't be necessary, and is done out of an abundance of caution.\n _poolProtocolSwapFeePercentages[pool] = PoolFeeConfig({\n feePercentage: newProtocolSwapFeePercentage.toUint64(),\n isOverride: isOverride\n });\n\n // Update the resulting aggregate swap fee value in the Vault (PoolConfig).\n _vault.updateAggregateSwapFeePercentage(pool, _getAggregateFeePercentage(pool, ProtocolFeeType.SWAP));\n\n emit ProtocolSwapFeePercentageChanged(pool, newProtocolSwapFeePercentage);\n }\n\n /// @dev Common code shared between set/update. `isOverride` will be true if governance is setting the percentage.\n function _updatePoolYieldFeePercentage(\n address pool,\n uint256 newProtocolYieldFeePercentage,\n bool isOverride\n ) private {\n // Update local storage of the raw percentage.\n // The percentages are 18 decimal floating point numbers, bound between 0 and the max fee (<= FixedPoint.ONE).\n // Since this fits in 64 bits, the SafeCast shouldn't be necessary, and is done out of an abundance of caution.\n _poolProtocolYieldFeePercentages[pool] = PoolFeeConfig({\n feePercentage: newProtocolYieldFeePercentage.toUint64(),\n isOverride: isOverride\n });\n\n // Update the resulting aggregate yield fee value in the Vault (PoolConfig).\n _vault.updateAggregateYieldFeePercentage(pool, _getAggregateFeePercentage(pool, ProtocolFeeType.YIELD));\n\n emit ProtocolYieldFeePercentageChanged(pool, newProtocolYieldFeePercentage);\n }\n\n function _ensureValidPrecision(uint256 feePercentage) private pure {\n // Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit\n // precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which\n // corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%).\n // Ensure there will be no precision loss in the Vault - which would lead to a discrepancy between the\n // aggregate fee calculated here and that stored in the Vault.\n if ((feePercentage / FEE_SCALING_FACTOR) * FEE_SCALING_FACTOR != feePercentage) {\n revert IVaultErrors.FeePrecisionTooHigh();\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/Router.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport { IRouter } from \"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { RouterCommon } from \"./RouterCommon.sol\";\n\n/**\n * @notice Entrypoint for swaps, liquidity operations, and corresponding queries.\n * @dev The external API functions unlock the Vault, which calls back into the corresponding hook functions.\n * These interact with the Vault, transfer tokens, settle accounting, and handle wrapping and unwrapping ETH.\n */\ncontract Router is IRouter, RouterCommon {\n using Address for address payable;\n using SafeCast for *;\n\n constructor(\n IVault vault,\n IWETH weth,\n IPermit2 permit2,\n string memory routerVersion\n ) RouterCommon(vault, weth, permit2, routerVersion) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /*******************************************************************************\n Pool Initialization\n *******************************************************************************/\n\n /// @inheritdoc IRouter\n function initialize(\n address pool,\n IERC20[] memory tokens,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable returns (uint256 bptAmountOut) {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.initializeHook,\n InitializeHookParams({\n sender: msg.sender,\n pool: pool,\n tokens: tokens,\n exactAmountsIn: exactAmountsIn,\n minBptAmountOut: minBptAmountOut,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256)\n );\n }\n\n /**\n * @notice Hook for initialization.\n * @dev Can only be called by the Vault.\n * @param params Initialization parameters (see IRouter for struct definition)\n * @return bptAmountOut BPT amount minted in exchange for the input tokens\n */\n function initializeHook(\n InitializeHookParams calldata params\n ) external nonReentrant onlyVault returns (uint256 bptAmountOut) {\n bptAmountOut = _vault.initialize(\n params.pool,\n params.sender,\n params.tokens,\n params.exactAmountsIn,\n params.minBptAmountOut,\n params.userData\n );\n\n for (uint256 i = 0; i < params.tokens.length; ++i) {\n IERC20 token = params.tokens[i];\n uint256 amountIn = params.exactAmountsIn[i];\n\n if (amountIn == 0) {\n continue;\n }\n\n // There can be only one WETH token in the pool.\n if (params.wethIsEth && address(token) == address(_weth)) {\n if (address(this).balance < amountIn) {\n revert InsufficientEth();\n }\n\n _weth.deposit{ value: amountIn }();\n // Transfer WETH from the Router to the Vault.\n _weth.transfer(address(_vault), amountIn);\n _vault.settle(_weth, amountIn);\n } else {\n // Transfer tokens from the user to the Vault.\n // Any value over MAX_UINT128 would revert above in `initialize`, so this SafeCast shouldn't be\n // necessary. Done out of an abundance of caution.\n _permit2.transferFrom(params.sender, address(_vault), amountIn.toUint160(), address(token));\n _vault.settle(token, amountIn);\n }\n }\n\n // Return ETH dust.\n _returnEth(params.sender);\n }\n\n /***************************************************************************\n Add Liquidity\n ***************************************************************************/\n\n /// @inheritdoc IRouter\n function addLiquidityProportional(\n address pool,\n uint256[] memory maxAmountsIn,\n uint256 exactBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable saveSender(msg.sender) returns (uint256[] memory amountsIn) {\n (amountsIn, , ) = abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.addLiquidityHook,\n AddLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n maxAmountsIn: maxAmountsIn,\n minBptAmountOut: exactBptAmountOut,\n kind: AddLiquidityKind.PROPORTIONAL,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function addLiquidityUnbalanced(\n address pool,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable saveSender(msg.sender) returns (uint256 bptAmountOut) {\n (, bptAmountOut, ) = abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.addLiquidityHook,\n AddLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n maxAmountsIn: exactAmountsIn,\n minBptAmountOut: minBptAmountOut,\n kind: AddLiquidityKind.UNBALANCED,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function addLiquiditySingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n uint256 maxAmountIn,\n uint256 exactBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable saveSender(msg.sender) returns (uint256 amountIn) {\n (uint256[] memory maxAmountsIn, uint256 tokenIndex) = _getSingleInputArrayAndTokenIndex(\n pool,\n tokenIn,\n maxAmountIn\n );\n\n (uint256[] memory amountsIn, , ) = abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.addLiquidityHook,\n AddLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n maxAmountsIn: maxAmountsIn,\n minBptAmountOut: exactBptAmountOut,\n kind: AddLiquidityKind.SINGLE_TOKEN_EXACT_OUT,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n\n return amountsIn[tokenIndex];\n }\n\n /// @inheritdoc IRouter\n function donate(\n address pool,\n uint256[] memory amountsIn,\n bool wethIsEth,\n bytes memory userData\n ) external payable saveSender(msg.sender) {\n _vault.unlock(\n abi.encodeCall(\n Router.addLiquidityHook,\n AddLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n maxAmountsIn: amountsIn,\n minBptAmountOut: 0,\n kind: AddLiquidityKind.DONATION,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n );\n }\n\n /// @inheritdoc IRouter\n function addLiquidityCustom(\n address pool,\n uint256[] memory maxAmountsIn,\n uint256 minBptAmountOut,\n bool wethIsEth,\n bytes memory userData\n )\n external\n payable\n saveSender(msg.sender)\n returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData)\n {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.addLiquidityHook,\n AddLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n maxAmountsIn: maxAmountsIn,\n minBptAmountOut: minBptAmountOut,\n kind: AddLiquidityKind.CUSTOM,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n }\n\n /**\n * @notice Hook for adding liquidity.\n * @dev Can only be called by the Vault.\n * @param params Add liquidity parameters (see IRouter for struct definition)\n * @return amountsIn Actual amounts in required for the join\n * @return bptAmountOut BPT amount minted in exchange for the input tokens\n * @return returnData Arbitrary data with encoded response from the pool\n */\n function addLiquidityHook(\n AddLiquidityHookParams calldata params\n )\n external\n nonReentrant\n onlyVault\n returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData)\n {\n (amountsIn, bptAmountOut, returnData) = _vault.addLiquidity(\n AddLiquidityParams({\n pool: params.pool,\n to: params.sender,\n maxAmountsIn: params.maxAmountsIn,\n minBptAmountOut: params.minBptAmountOut,\n kind: params.kind,\n userData: params.userData\n })\n );\n\n // maxAmountsIn length is checked against tokens length at the Vault.\n IERC20[] memory tokens = _vault.getPoolTokens(params.pool);\n\n for (uint256 i = 0; i < tokens.length; ++i) {\n IERC20 token = tokens[i];\n uint256 amountIn = amountsIn[i];\n\n if (amountIn == 0) {\n continue;\n }\n\n // There can be only one WETH token in the pool.\n if (params.wethIsEth && address(token) == address(_weth)) {\n if (address(this).balance < amountIn) {\n revert InsufficientEth();\n }\n\n _weth.deposit{ value: amountIn }();\n _weth.transfer(address(_vault), amountIn);\n _vault.settle(_weth, amountIn);\n } else {\n // Any value over MAX_UINT128 would revert above in `addLiquidity`, so this SafeCast shouldn't be\n // necessary. Done out of an abundance of caution.\n _permit2.transferFrom(params.sender, address(_vault), amountIn.toUint160(), address(token));\n _vault.settle(token, amountIn);\n }\n }\n\n // Send remaining ETH to the user.\n _returnEth(params.sender);\n }\n\n /***************************************************************************\n Remove Liquidity\n ***************************************************************************/\n\n /// @inheritdoc IRouter\n function removeLiquidityProportional(\n address pool,\n uint256 exactBptAmountIn,\n uint256[] memory minAmountsOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable saveSender(msg.sender) returns (uint256[] memory amountsOut) {\n (, amountsOut, ) = abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.removeLiquidityHook,\n RemoveLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: exactBptAmountIn,\n kind: RemoveLiquidityKind.PROPORTIONAL,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function removeLiquiditySingleTokenExactIn(\n address pool,\n uint256 exactBptAmountIn,\n IERC20 tokenOut,\n uint256 minAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable saveSender(msg.sender) returns (uint256 amountOut) {\n (uint256[] memory minAmountsOut, uint256 tokenIndex) = _getSingleInputArrayAndTokenIndex(\n pool,\n tokenOut,\n minAmountOut\n );\n\n (, uint256[] memory amountsOut, ) = abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.removeLiquidityHook,\n RemoveLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: exactBptAmountIn,\n kind: RemoveLiquidityKind.SINGLE_TOKEN_EXACT_IN,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n\n return amountsOut[tokenIndex];\n }\n\n /// @inheritdoc IRouter\n function removeLiquiditySingleTokenExactOut(\n address pool,\n uint256 maxBptAmountIn,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n bool wethIsEth,\n bytes memory userData\n ) external payable saveSender(msg.sender) returns (uint256 bptAmountIn) {\n (uint256[] memory minAmountsOut, ) = _getSingleInputArrayAndTokenIndex(pool, tokenOut, exactAmountOut);\n\n (bptAmountIn, , ) = abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.removeLiquidityHook,\n RemoveLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: maxBptAmountIn,\n kind: RemoveLiquidityKind.SINGLE_TOKEN_EXACT_OUT,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n\n return bptAmountIn;\n }\n\n /// @inheritdoc IRouter\n function removeLiquidityCustom(\n address pool,\n uint256 maxBptAmountIn,\n uint256[] memory minAmountsOut,\n bool wethIsEth,\n bytes memory userData\n )\n external\n payable\n saveSender(msg.sender)\n returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData)\n {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.removeLiquidityHook,\n RemoveLiquidityHookParams({\n sender: msg.sender,\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: maxBptAmountIn,\n kind: RemoveLiquidityKind.CUSTOM,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function removeLiquidityRecovery(\n address pool,\n uint256 exactBptAmountIn,\n uint256[] memory minAmountsOut\n ) external payable returns (uint256[] memory amountsOut) {\n amountsOut = abi.decode(\n _vault.unlock(\n abi.encodeCall(Router.removeLiquidityRecoveryHook, (pool, msg.sender, exactBptAmountIn, minAmountsOut))\n ),\n (uint256[])\n );\n }\n\n /**\n * @notice Hook for removing liquidity.\n * @dev Can only be called by the Vault.\n * @param params Remove liquidity parameters (see IRouter for struct definition)\n * @return bptAmountIn BPT amount burned for the output tokens\n * @return amountsOut Actual token amounts transferred in exchange for the BPT\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function removeLiquidityHook(\n RemoveLiquidityHookParams calldata params\n )\n external\n nonReentrant\n onlyVault\n returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData)\n {\n (bptAmountIn, amountsOut, returnData) = _vault.removeLiquidity(\n RemoveLiquidityParams({\n pool: params.pool,\n from: params.sender,\n maxBptAmountIn: params.maxBptAmountIn,\n minAmountsOut: params.minAmountsOut,\n kind: params.kind,\n userData: params.userData\n })\n );\n\n // minAmountsOut length is checked against tokens length at the Vault.\n IERC20[] memory tokens = _vault.getPoolTokens(params.pool);\n\n for (uint256 i = 0; i < tokens.length; ++i) {\n uint256 amountOut = amountsOut[i];\n if (amountOut == 0) {\n continue;\n }\n\n IERC20 token = tokens[i];\n\n // There can be only one WETH token in the pool.\n if (params.wethIsEth && address(token) == address(_weth)) {\n // Send WETH here and unwrap to native ETH.\n _vault.sendTo(_weth, address(this), amountOut);\n _weth.withdraw(amountOut);\n // Send ETH to sender.\n payable(params.sender).sendValue(amountOut);\n } else {\n // Transfer the token to the sender (amountOut).\n _vault.sendTo(token, params.sender, amountOut);\n }\n }\n\n _returnEth(params.sender);\n }\n\n /**\n * @notice Hook for removing liquidity in Recovery Mode.\n * @dev Can only be called by the Vault, when the pool is in Recovery Mode.\n * @param pool Address of the liquidity pool\n * @param sender Account originating the remove liquidity operation\n * @param exactBptAmountIn BPT amount burned for the output tokens\n * @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n * @return amountsOut Actual token amounts transferred in exchange for the BPT\n */\n function removeLiquidityRecoveryHook(\n address pool,\n address sender,\n uint256 exactBptAmountIn,\n uint256[] memory minAmountsOut\n ) external nonReentrant onlyVault returns (uint256[] memory amountsOut) {\n amountsOut = _vault.removeLiquidityRecovery(pool, sender, exactBptAmountIn, minAmountsOut);\n\n IERC20[] memory tokens = _vault.getPoolTokens(pool);\n\n for (uint256 i = 0; i < tokens.length; ++i) {\n uint256 amountOut = amountsOut[i];\n if (amountOut > 0) {\n // Transfer the token to the sender (amountOut).\n _vault.sendTo(tokens[i], sender, amountOut);\n }\n }\n\n _returnEth(sender);\n }\n\n /***************************************************************************\n Swaps\n ***************************************************************************/\n\n /// @inheritdoc IRouter\n function swapSingleTokenExactIn(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountIn,\n uint256 minAmountOut,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n ) external payable saveSender(msg.sender) returns (uint256) {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.swapSingleTokenHook,\n SwapSingleTokenHookParams({\n sender: msg.sender,\n kind: SwapKind.EXACT_IN,\n pool: pool,\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountGiven: exactAmountIn,\n limit: minAmountOut,\n deadline: deadline,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256)\n );\n }\n\n /// @inheritdoc IRouter\n function swapSingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n uint256 maxAmountIn,\n uint256 deadline,\n bool wethIsEth,\n bytes calldata userData\n ) external payable saveSender(msg.sender) returns (uint256) {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n Router.swapSingleTokenHook,\n SwapSingleTokenHookParams({\n sender: msg.sender,\n kind: SwapKind.EXACT_OUT,\n pool: pool,\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountGiven: exactAmountOut,\n limit: maxAmountIn,\n deadline: deadline,\n wethIsEth: wethIsEth,\n userData: userData\n })\n )\n ),\n (uint256)\n );\n }\n\n /**\n * @notice Hook for swaps.\n * @dev Can only be called by the Vault. Also handles native ETH.\n * @param params Swap parameters (see IRouter for struct definition)\n * @return amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)\n */\n function swapSingleTokenHook(\n SwapSingleTokenHookParams calldata params\n ) external nonReentrant onlyVault returns (uint256) {\n (uint256 amountCalculated, uint256 amountIn, uint256 amountOut) = _swapHook(params);\n\n IERC20 tokenIn = params.tokenIn;\n\n _takeTokenIn(params.sender, tokenIn, amountIn, params.wethIsEth);\n _sendTokenOut(params.sender, params.tokenOut, amountOut, params.wethIsEth);\n\n if (tokenIn == _weth) {\n // Return the rest of ETH to sender\n _returnEth(params.sender);\n }\n\n return amountCalculated;\n }\n\n function _swapHook(\n SwapSingleTokenHookParams calldata params\n ) internal returns (uint256 amountCalculated, uint256 amountIn, uint256 amountOut) {\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n if (block.timestamp > params.deadline) {\n revert SwapDeadline();\n }\n\n (amountCalculated, amountIn, amountOut) = _vault.swap(\n VaultSwapParams({\n kind: params.kind,\n pool: params.pool,\n tokenIn: params.tokenIn,\n tokenOut: params.tokenOut,\n amountGivenRaw: params.amountGiven,\n limitRaw: params.limit,\n userData: params.userData\n })\n );\n }\n\n /*******************************************************************************\n Queries\n *******************************************************************************/\n\n /// @inheritdoc IRouter\n function queryAddLiquidityProportional(\n address pool,\n uint256 exactBptAmountOut,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256[] memory amountsIn) {\n (amountsIn, , ) = abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryAddLiquidityHook,\n AddLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to add liquidity to any recipient.\n sender: address(this),\n pool: pool,\n maxAmountsIn: _maxTokenLimits(pool),\n minBptAmountOut: exactBptAmountOut,\n kind: AddLiquidityKind.PROPORTIONAL,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function queryAddLiquidityUnbalanced(\n address pool,\n uint256[] memory exactAmountsIn,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256 bptAmountOut) {\n (, bptAmountOut, ) = abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryAddLiquidityHook,\n AddLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to add liquidity to any recipient.\n sender: address(this),\n pool: pool,\n maxAmountsIn: exactAmountsIn,\n minBptAmountOut: 0,\n kind: AddLiquidityKind.UNBALANCED,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function queryAddLiquiditySingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n uint256 exactBptAmountOut,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256 amountIn) {\n (uint256[] memory maxAmountsIn, uint256 tokenIndex) = _getSingleInputArrayAndTokenIndex(\n pool,\n tokenIn,\n _MAX_AMOUNT\n );\n\n (uint256[] memory amountsIn, , ) = abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryAddLiquidityHook,\n AddLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to add liquidity to any recipient.\n sender: address(this),\n pool: pool,\n maxAmountsIn: maxAmountsIn,\n minBptAmountOut: exactBptAmountOut,\n kind: AddLiquidityKind.SINGLE_TOKEN_EXACT_OUT,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n\n return amountsIn[tokenIndex];\n }\n\n /// @inheritdoc IRouter\n function queryAddLiquidityCustom(\n address pool,\n uint256[] memory maxAmountsIn,\n uint256 minBptAmountOut,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryAddLiquidityHook,\n AddLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to add liquidity to any recipient.\n sender: address(this),\n pool: pool,\n maxAmountsIn: maxAmountsIn,\n minBptAmountOut: minBptAmountOut,\n kind: AddLiquidityKind.CUSTOM,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256[], uint256, bytes)\n );\n }\n\n /**\n * @notice Hook for add liquidity queries.\n * @dev Can only be called by the Vault.\n * @param params Add liquidity parameters (see IRouter for struct definition)\n * @return amountsIn Actual token amounts in required as inputs\n * @return bptAmountOut Expected pool tokens to be minted\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function queryAddLiquidityHook(\n AddLiquidityHookParams calldata params\n ) external onlyVault returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData) {\n (amountsIn, bptAmountOut, returnData) = _vault.addLiquidity(\n AddLiquidityParams({\n pool: params.pool,\n to: params.sender,\n maxAmountsIn: params.maxAmountsIn,\n minBptAmountOut: params.minBptAmountOut,\n kind: params.kind,\n userData: params.userData\n })\n );\n }\n\n /// @inheritdoc IRouter\n function queryRemoveLiquidityProportional(\n address pool,\n uint256 exactBptAmountIn,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256[] memory amountsOut) {\n uint256[] memory minAmountsOut = new uint256[](_vault.getPoolTokens(pool).length);\n (, amountsOut, ) = abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryRemoveLiquidityHook,\n RemoveLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to remove liquidity from any sender.\n sender: address(this),\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: exactBptAmountIn,\n kind: RemoveLiquidityKind.PROPORTIONAL,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function queryRemoveLiquiditySingleTokenExactIn(\n address pool,\n uint256 exactBptAmountIn,\n IERC20 tokenOut,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256 amountOut) {\n // We cannot use 0 as min amount out, as this value is used to figure out the token index.\n (uint256[] memory minAmountsOut, uint256 tokenIndex) = _getSingleInputArrayAndTokenIndex(pool, tokenOut, 1);\n\n (, uint256[] memory amountsOut, ) = abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryRemoveLiquidityHook,\n RemoveLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to remove liquidity from any sender.\n sender: address(this),\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: exactBptAmountIn,\n kind: RemoveLiquidityKind.SINGLE_TOKEN_EXACT_IN,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n\n return amountsOut[tokenIndex];\n }\n\n /// @inheritdoc IRouter\n function queryRemoveLiquiditySingleTokenExactOut(\n address pool,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256 bptAmountIn) {\n (uint256[] memory minAmountsOut, ) = _getSingleInputArrayAndTokenIndex(pool, tokenOut, exactAmountOut);\n\n (bptAmountIn, , ) = abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryRemoveLiquidityHook,\n RemoveLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to remove liquidity from any sender.\n sender: address(this),\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: _MAX_AMOUNT,\n kind: RemoveLiquidityKind.SINGLE_TOKEN_EXACT_OUT,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n\n return bptAmountIn;\n }\n\n /// @inheritdoc IRouter\n function queryRemoveLiquidityCustom(\n address pool,\n uint256 maxBptAmountIn,\n uint256[] memory minAmountsOut,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.queryRemoveLiquidityHook,\n RemoveLiquidityHookParams({\n // We use the Router as a sender to simplify basic query functions,\n // but it is possible to remove liquidity from any sender.\n sender: address(this),\n pool: pool,\n minAmountsOut: minAmountsOut,\n maxBptAmountIn: maxBptAmountIn,\n kind: RemoveLiquidityKind.CUSTOM,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256, uint256[], bytes)\n );\n }\n\n /// @inheritdoc IRouter\n function queryRemoveLiquidityRecovery(\n address pool,\n uint256 exactBptAmountIn\n ) external returns (uint256[] memory amountsOut) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(Router.queryRemoveLiquidityRecoveryHook, (pool, address(this), exactBptAmountIn))\n ),\n (uint256[])\n );\n }\n\n /**\n * @notice Hook for remove liquidity queries.\n * @dev Can only be called by the Vault.\n * @param params Remove liquidity parameters (see IRouter for struct definition)\n * @return bptAmountIn Pool token amount to be burned for the output tokens\n * @return amountsOut Expected token amounts to be transferred to the sender\n * @return returnData Arbitrary (optional) data with an encoded response from the pool\n */\n function queryRemoveLiquidityHook(\n RemoveLiquidityHookParams calldata params\n ) external onlyVault returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData) {\n return\n _vault.removeLiquidity(\n RemoveLiquidityParams({\n pool: params.pool,\n from: params.sender,\n maxBptAmountIn: params.maxBptAmountIn,\n minAmountsOut: params.minAmountsOut,\n kind: params.kind,\n userData: params.userData\n })\n );\n }\n\n /**\n * @notice Hook for remove liquidity queries.\n * @dev Can only be called by the Vault.\n * @param pool The liquidity pool\n * @param sender Account originating the remove liquidity operation\n * @param exactBptAmountIn Pool token amount to be burned for the output tokens\n * @return amountsOut Expected token amounts to be transferred to the sender\n */\n function queryRemoveLiquidityRecoveryHook(\n address pool,\n address sender,\n uint256 exactBptAmountIn\n ) external onlyVault returns (uint256[] memory amountsOut) {\n uint256[] memory minAmountsOut = new uint256[](_vault.getPoolTokens(pool).length);\n return _vault.removeLiquidityRecovery(pool, sender, exactBptAmountIn, minAmountsOut);\n }\n\n /// @inheritdoc IRouter\n function querySwapSingleTokenExactIn(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountIn,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256 amountCalculated) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.querySwapHook,\n SwapSingleTokenHookParams({\n sender: msg.sender,\n kind: SwapKind.EXACT_IN,\n pool: pool,\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountGiven: exactAmountIn,\n limit: 0,\n deadline: _MAX_AMOUNT,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256)\n );\n }\n\n /// @inheritdoc IRouter\n function querySwapSingleTokenExactOut(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountOut,\n address sender,\n bytes memory userData\n ) external saveSender(sender) returns (uint256 amountCalculated) {\n return\n abi.decode(\n _vault.quote(\n abi.encodeCall(\n Router.querySwapHook,\n SwapSingleTokenHookParams({\n sender: msg.sender,\n kind: SwapKind.EXACT_OUT,\n pool: pool,\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountGiven: exactAmountOut,\n limit: _MAX_AMOUNT,\n deadline: type(uint256).max,\n wethIsEth: false,\n userData: userData\n })\n )\n ),\n (uint256)\n );\n }\n\n /**\n * @notice Hook for swap queries.\n * @dev Can only be called by the Vault. Also handles native ETH.\n * @param params Swap parameters (see IRouter for struct definition)\n * @return amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)\n */\n function querySwapHook(\n SwapSingleTokenHookParams calldata params\n ) external nonReentrant onlyVault returns (uint256) {\n (uint256 amountCalculated, , ) = _swapHook(params);\n\n return amountCalculated;\n }\n}\n"},"@balancer-labs/v3-vault/contracts/RouterCommon.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20Permit } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\";\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IRouterCommon } from \"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\";\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport { IAllowanceTransfer } from \"permit2/src/interfaces/IAllowanceTransfer.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { StorageSlotExtension } from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\";\nimport { InputHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport { RevertCodec } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\";\nimport {\n ReentrancyGuardTransient\n} from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\";\nimport { Version } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\";\nimport {\n TransientStorageHelpers\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\nimport { VaultGuard } from \"./VaultGuard.sol\";\n\n/**\n * @notice Abstract base contract for functions shared among all Routers.\n * @dev Common functionality includes access to the sender (which would normally be obscured, since msg.sender in the\n * Vault is the Router contract itself, not the account that invoked the Router), versioning, and the external\n * invocation functions (`permitBatchAndCall` and `multicall`).\n */\nabstract contract RouterCommon is IRouterCommon, VaultGuard, ReentrancyGuardTransient, Version {\n using Address for address payable;\n using StorageSlotExtension for *;\n using SafeERC20 for IWETH;\n using SafeCast for *;\n\n // NOTE: If you use a constant, then it is simply replaced everywhere when this constant is used by what is written\n // after =. If you use immutable, the value is first calculated and then replaced everywhere. That means that if a\n // constant has executable variables, they will be executed every time the constant is used.\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private immutable _SENDER_SLOT = TransientStorageHelpers.calculateSlot(type(RouterCommon).name, \"sender\");\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private immutable _IS_RETURN_ETH_LOCKED_SLOT =\n TransientStorageHelpers.calculateSlot(type(RouterCommon).name, \"isReturnEthLocked\");\n\n /// @notice Incoming ETH transfer from an address that is not WETH.\n error EthTransfer();\n\n /// @notice The amount of ETH paid is insufficient to complete this operation.\n error InsufficientEth();\n\n /// @notice The swap transaction was not validated before the specified deadline timestamp.\n error SwapDeadline();\n\n // Raw token balances are stored in half a slot, so the max is uint128. Moreover, given that amounts are usually\n // scaled inside the Vault, sending type(uint256).max would result in an overflow and revert.\n uint256 internal constant _MAX_AMOUNT = type(uint128).max;\n\n // solhint-disable-next-line var-name-mixedcase\n IWETH internal immutable _weth;\n\n IPermit2 internal immutable _permit2;\n\n /**\n * @notice Saves the user or contract that initiated the current operation.\n * @dev It is possible to nest router calls (e.g., with reentrant hooks), but the sender returned by the Router's\n * `getSender` function will always be the \"outermost\" caller. Some transactions require the Router to identify\n * multiple senders. Consider the following example:\n *\n * - ContractA has a function that calls the Router, then calls ContractB with the output. ContractB in turn\n * calls back into the Router.\n * - Imagine further that ContractA is a pool with a \"before\" hook that also calls the Router.\n *\n * When the user calls the function on ContractA, there are three calls to the Router in the same transaction:\n * - 1st call: When ContractA calls the Router directly, to initiate an operation on the pool (say, a swap).\n * (Sender is contractA, initiator of the operation.)\n *\n * - 2nd call: When the pool operation invokes a hook (say onBeforeSwap), which calls back into the Router.\n * This is a \"nested\" call within the original pool operation. The nested call returns, then the\n * before hook returns, the Router completes the operation, and finally returns back to ContractA\n * with the result (e.g., a calculated amount of tokens).\n * (Nested call; sender is still ContractA through all of this.)\n *\n * - 3rd call: When the first operation is complete, ContractA calls ContractB, which in turn calls the Router.\n * (Not nested, as the original router call from contractA has returned. Sender is now ContractB.)\n */\n modifier saveSender(address sender) {\n bool isExternalSender = _saveSender(sender);\n _;\n _discardSenderIfRequired(isExternalSender);\n }\n\n /**\n * @notice Locks the return of excess ETH to the sender until the end of the function.\n * @dev This also encompasses the `saveSender` functionality.\n */\n modifier saveSenderAndManageEth() {\n bool isExternalSender = _saveSender(msg.sender);\n\n // Revert if a function with this modifier is called recursively (e.g., multicall).\n if (_isReturnEthLockedSlot().tload()) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Lock the return of ETH during execution\n _isReturnEthLockedSlot().tstore(true);\n _;\n _isReturnEthLockedSlot().tstore(false);\n\n address sender = _getSenderSlot().tload();\n _discardSenderIfRequired(isExternalSender);\n _returnEth(sender);\n }\n\n function _saveSender(address sender) internal returns (bool isExternalSender) {\n address savedSender = _getSenderSlot().tload();\n\n // NOTE: Only the most external sender will be saved by the Router.\n if (savedSender == address(0)) {\n _getSenderSlot().tstore(sender);\n isExternalSender = true;\n }\n }\n\n function _discardSenderIfRequired(bool isExternalSender) internal {\n // Only the external sender shall be cleaned up; if it's not an external sender it means that\n // the value was not saved in this modifier.\n if (isExternalSender) {\n _getSenderSlot().tstore(address(0));\n }\n }\n\n constructor(\n IVault vault,\n IWETH weth,\n IPermit2 permit2,\n string memory routerVersion\n ) VaultGuard(vault) Version(routerVersion) {\n _weth = weth;\n _permit2 = permit2;\n }\n\n /*******************************************************************************\n Utilities\n *******************************************************************************/\n\n struct SignatureParts {\n bytes32 r;\n bytes32 s;\n uint8 v;\n }\n\n /// @inheritdoc IRouterCommon\n function permitBatchAndCall(\n PermitApproval[] calldata permitBatch,\n bytes[] calldata permitSignatures,\n IAllowanceTransfer.PermitBatch calldata permit2Batch,\n bytes calldata permit2Signature,\n bytes[] calldata multicallData\n ) external payable virtual returns (bytes[] memory results) {\n _permitBatch(permitBatch, permitSignatures, permit2Batch, permit2Signature);\n\n // Execute all the required operations once permissions have been granted.\n return multicall(multicallData);\n }\n\n function _permitBatch(\n PermitApproval[] calldata permitBatch,\n bytes[] calldata permitSignatures,\n IAllowanceTransfer.PermitBatch calldata permit2Batch,\n bytes calldata permit2Signature\n ) internal nonReentrant {\n InputHelpers.ensureInputLengthMatch(permitBatch.length, permitSignatures.length);\n\n // Use Permit (ERC-2612) to grant allowances to Permit2 for tokens to swap,\n // and grant allowances to Vault for BPT tokens.\n for (uint256 i = 0; i < permitBatch.length; ++i) {\n bytes memory signature = permitSignatures[i];\n\n SignatureParts memory signatureParts = _getSignatureParts(signature);\n PermitApproval memory permitApproval = permitBatch[i];\n\n try\n IERC20Permit(permitApproval.token).permit(\n permitApproval.owner,\n address(this),\n permitApproval.amount,\n permitApproval.deadline,\n signatureParts.v,\n signatureParts.r,\n signatureParts.s\n )\n {\n // solhint-disable-previous-line no-empty-blocks\n // OK; carry on.\n } catch (bytes memory returnData) {\n // Did it fail because the permit was executed (possible DoS attack to make the transaction revert),\n // or was it something else (e.g., deadline, invalid signature)?\n if (\n IERC20(permitApproval.token).allowance(permitApproval.owner, address(this)) != permitApproval.amount\n ) {\n // It was something else, or allowance was used, so we should revert. Bubble up the revert reason.\n RevertCodec.bubbleUpRevert(returnData);\n }\n }\n }\n\n // Only call permit2 if there's something to do.\n if (permit2Batch.details.length > 0) {\n // Use Permit2 for tokens that are swapped and added into the Vault. Note that this call on Permit2 is\n // theoretically also vulnerable to the same DoS attack as above. This edge case was not mitigated\n // on-chain, mainly due to the increased complexity and cost of protecting the batch call.\n //\n // If this is a concern, we recommend submitting through a private node to avoid front-running the public\n // mempool. In any case, best practice is to always use expiring, limited approvals, and only with known\n // and trusted contracts.\n //\n // See https://www.immunebytes.com/blog/permit2-erc-20-token-approvals-and-associated-risks/.\n\n _permit2.permit(msg.sender, permit2Batch, permit2Signature);\n }\n }\n\n /// @inheritdoc IRouterCommon\n function multicall(\n bytes[] calldata data\n ) public payable virtual saveSenderAndManageEth returns (bytes[] memory results) {\n results = new bytes[](data.length);\n for (uint256 i = 0; i < data.length; ++i) {\n results[i] = Address.functionDelegateCall(address(this), data[i]);\n }\n return results;\n }\n\n function _getSignatureParts(bytes memory signature) private pure returns (SignatureParts memory signatureParts) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // solhint-disable-next-line no-inline-assembly\n assembly (\"memory-safe\") {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n signatureParts.r = r;\n signatureParts.s = s;\n signatureParts.v = v;\n }\n\n /**\n * @dev Returns excess ETH back to the contract caller. Checks for sufficient ETH balance are made right before\n * each deposit, ensuring it will revert with a friendly custom error. If there is any balance remaining when\n * `_returnEth` is called, return it to the sender.\n *\n * Because the caller might not know exactly how much ETH a Vault action will require, they may send extra.\n * Note that this excess value is returned *to the contract caller* (msg.sender). If caller and e.g. swap sender\n * are not the same (because the caller is a relayer for the sender), then it is up to the caller to manage this\n * returned ETH.\n */\n function _returnEth(address sender) internal {\n // It's cheaper to check the balance and return early than checking a transient variable.\n // Moreover, most operations will not have ETH to return.\n uint256 excess = address(this).balance;\n if (excess == 0) {\n return;\n }\n\n // If the return of ETH is locked, then don't return it,\n // because _returnEth will be called again at the end of the call.\n if (_isReturnEthLockedSlot().tload()) {\n return;\n }\n\n payable(sender).sendValue(excess);\n }\n\n /**\n * @dev Returns an array with `amountGiven` at `tokenIndex`, and 0 for every other index.\n * The returned array length matches the number of tokens in the pool.\n * Reverts if the given index is greater than or equal to the pool number of tokens.\n */\n function _getSingleInputArrayAndTokenIndex(\n address pool,\n IERC20 token,\n uint256 amountGiven\n ) internal view returns (uint256[] memory amountsGiven, uint256 tokenIndex) {\n uint256 numTokens;\n (numTokens, tokenIndex) = _vault.getPoolTokenCountAndIndexOfToken(pool, token);\n amountsGiven = new uint256[](numTokens);\n amountsGiven[tokenIndex] = amountGiven;\n }\n\n function _takeTokenIn(address sender, IERC20 tokenIn, uint256 amountIn, bool wethIsEth) internal {\n // If the tokenIn is ETH, then wrap `amountIn` into WETH.\n if (wethIsEth && tokenIn == _weth) {\n if (address(this).balance < amountIn) {\n revert InsufficientEth();\n }\n\n // wrap amountIn to WETH.\n _weth.deposit{ value: amountIn }();\n // send WETH to Vault.\n _weth.safeTransfer(address(_vault), amountIn);\n // update Vault accounting.\n _vault.settle(_weth, amountIn);\n } else {\n if (amountIn > 0) {\n // Send the tokenIn amount to the Vault.\n _permit2.transferFrom(sender, address(_vault), amountIn.toUint160(), address(tokenIn));\n _vault.settle(tokenIn, amountIn);\n }\n }\n }\n\n function _sendTokenOut(address sender, IERC20 tokenOut, uint256 amountOut, bool wethIsEth) internal {\n if (amountOut == 0) {\n return;\n }\n\n // If the tokenOut is ETH, then unwrap `amountOut` into ETH.\n if (wethIsEth && tokenOut == _weth) {\n // Receive the WETH amountOut.\n _vault.sendTo(tokenOut, address(this), amountOut);\n // Withdraw WETH to ETH.\n _weth.withdraw(amountOut);\n // Send ETH to sender.\n payable(sender).sendValue(amountOut);\n } else {\n // Receive the tokenOut amountOut.\n _vault.sendTo(tokenOut, sender, amountOut);\n }\n }\n\n function _maxTokenLimits(address pool) internal view returns (uint256[] memory maxLimits) {\n uint256 numTokens = _vault.getPoolTokens(pool).length;\n maxLimits = new uint256[](numTokens);\n for (uint256 i = 0; i < numTokens; ++i) {\n maxLimits[i] = _MAX_AMOUNT;\n }\n }\n\n /**\n * @dev Enables the Router to receive ETH. This is required for it to be able to unwrap WETH, which sends ETH to the\n * caller.\n *\n * Any ETH sent to the Router outside of the WETH unwrapping mechanism would be forever locked inside the Router, so\n * we prevent that from happening. Other mechanisms used to send ETH to the Router (such as being the recipient of\n * an ETH swap, Pool exit or withdrawal, contract self-destruction, or receiving the block mining reward) will\n * result in locked funds, but are not otherwise a security or soundness issue. This check only exists as an attempt\n * to prevent user error.\n */\n receive() external payable {\n if (msg.sender != address(_weth)) {\n revert EthTransfer();\n }\n }\n\n /// @inheritdoc IRouterCommon\n function getSender() external view returns (address) {\n return _getSenderSlot().tload();\n }\n\n function _getSenderSlot() internal view returns (StorageSlotExtension.AddressSlotType) {\n return _SENDER_SLOT.asAddress();\n }\n\n function _isReturnEthLockedSlot() internal view returns (StorageSlotExtension.BooleanSlotType) {\n return _IS_RETURN_ETH_LOCKED_SLOT.asBoolean();\n }\n}\n"},"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IAuthorizer } from \"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { Authentication } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\";\n\n/**\n * @notice Base contract suitable for Singleton contracts (e.g., pool factories) that have permissioned functions.\n * @dev The disambiguator is the contract's own address. This is used in the construction of actionIds for permissioned\n * functions, to avoid conflicts when multiple contracts (or multiple versions of the same contract) use the same\n * function name.\n */\nabstract contract SingletonAuthentication is Authentication {\n IVault private immutable _vault;\n\n // Use the contract's own address to disambiguate action identifiers.\n constructor(IVault vault) Authentication(bytes32(uint256(uint160(address(this))))) {\n _vault = vault;\n }\n\n /**\n * @notice Get the address of the Balancer Vault.\n * @return vault An interface pointer to the Vault\n */\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Get the address of the Authorizer.\n * @return authorizer An interface pointer to the Authorizer\n */\n function getAuthorizer() public view returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n return getAuthorizer().canPerform(actionId, account, address(this));\n }\n\n function _canPerform(bytes32 actionId, address account, address where) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { PoolSwapParams, Rounding } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IBasePool } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\";\n\nimport { BasePoolMath } from \"../BasePoolMath.sol\";\n\nabstract contract BasePoolMathMock is IBasePool {\n function computeInvariant(uint256[] memory balances, Rounding) public view virtual returns (uint256);\n\n function computeBalance(\n uint256[] memory balances,\n uint256 tokenInIndex,\n uint256 invariantRatio\n ) external view virtual returns (uint256 newBalance);\n\n function computeProportionalAmountsIn(\n uint256[] memory balances,\n uint256 bptTotalSupply,\n uint256 bptAmountOut\n ) external pure returns (uint256[] memory) {\n return BasePoolMath.computeProportionalAmountsIn(balances, bptTotalSupply, bptAmountOut);\n }\n\n function computeProportionalAmountsOut(\n uint256[] memory balances,\n uint256 bptTotalSupply,\n uint256 bptAmountIn\n ) external pure returns (uint256[] memory) {\n return BasePoolMath.computeProportionalAmountsOut(balances, bptTotalSupply, bptAmountIn);\n }\n\n function computeAddLiquidityUnbalanced(\n uint256[] memory currentBalances,\n uint256[] memory exactAmounts,\n uint256 totalSupply,\n uint256 swapFeePercentage\n ) external view returns (uint256 bptAmountOut, uint256[] memory swapFeeAmounts) {\n return\n BasePoolMath.computeAddLiquidityUnbalanced(\n currentBalances,\n exactAmounts,\n totalSupply,\n swapFeePercentage,\n IBasePool(address(this))\n );\n }\n\n function computeAddLiquiditySingleTokenExactOut(\n uint256[] memory currentBalances,\n uint256 tokenInIndex,\n uint256 exactBptAmountOut,\n uint256 totalSupply,\n uint256 swapFeePercentage\n ) external view returns (uint256 amountInWithFee, uint256[] memory swapFeeAmounts) {\n return\n BasePoolMath.computeAddLiquiditySingleTokenExactOut(\n currentBalances,\n tokenInIndex,\n exactBptAmountOut,\n totalSupply,\n swapFeePercentage,\n IBasePool(address(this))\n );\n }\n\n function computeRemoveLiquiditySingleTokenExactOut(\n uint256[] memory currentBalances,\n uint256 tokenOutIndex,\n uint256 exactAmountOut,\n uint256 totalSupply,\n uint256 swapFeePercentage\n ) external view returns (uint256 bptAmountIn, uint256[] memory swapFeeAmounts) {\n return\n BasePoolMath.computeRemoveLiquiditySingleTokenExactOut(\n currentBalances,\n tokenOutIndex,\n exactAmountOut,\n totalSupply,\n swapFeePercentage,\n IBasePool(address(this))\n );\n }\n\n function computeRemoveLiquiditySingleTokenExactIn(\n uint256[] memory currentBalances,\n uint256 tokenOutIndex,\n uint256 exactBptAmountIn,\n uint256 totalSupply,\n uint256 swapFeePercentage\n ) external view returns (uint256 amountOutWithFee, uint256[] memory swapFeeAmounts) {\n return\n BasePoolMath.computeRemoveLiquiditySingleTokenExactIn(\n currentBalances,\n tokenOutIndex,\n exactBptAmountIn,\n totalSupply,\n swapFeePercentage,\n IBasePool(address(this))\n );\n }\n\n function getMinimumInvariantRatio() external pure override returns (uint256) {\n return 0;\n }\n\n function getMaximumInvariantRatio() external pure override returns (uint256) {\n return 1_000_000 * 1e18;\n }\n\n function getMinimumSwapFeePercentage() external pure override returns (uint256) {\n return 0;\n }\n\n function getMaximumSwapFeePercentage() external pure override returns (uint256) {\n return 1e18;\n }\n\n function onSwap(PoolSwapParams calldata) external pure returns (uint256) {\n revert(\"Not implemented\");\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IAuthorizer } from \"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\";\n\ncontract BasicAuthorizerMock is IAuthorizer {\n // Simple, to avoid bringing in EnumerableSet, etc.\n mapping(bytes32 actionId => mapping(address account => bool hasRole)) private _roles;\n\n // Could generalize better, but wanted to make minimal changes.\n mapping(bytes32 actionId => mapping(address account => mapping(address whereAddress => bool hasRole)))\n private _specificRoles;\n\n /// @inheritdoc IAuthorizer\n function canPerform(bytes32 role, address account, address where) external view returns (bool) {\n return hasSpecificRole(role, account, where) || hasRole(role, account);\n }\n\n function grantRole(bytes32 role, address account) external {\n _roles[role][account] = true;\n }\n\n function revokeRole(bytes32 role, address account) external {\n _roles[role][account] = false;\n }\n\n function hasRole(bytes32 role, address account) public view returns (bool) {\n return _roles[role][account];\n }\n\n // Functions for targeted permissions\n\n function grantSpecificRole(bytes32 role, address account, address where) external {\n _specificRoles[role][account][where] = true;\n }\n\n function revokeSpecificRole(bytes32 role, address account, address where) external {\n _specificRoles[role][account][where] = false;\n }\n\n function hasSpecificRole(bytes32 role, address account, address where) public view returns (bool) {\n return _specificRoles[role][account][where];\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\n\nimport {\n AddressToUintMappingSlot\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\nimport {\n TransientEnumerableSet\n} from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\";\n\nimport { BatchRouter } from \"../BatchRouter.sol\";\n\nstring constant MOCK_BATCH_ROUTER_VERSION = \"Mock BatchRouter v1\";\n\ncontract BatchRouterMock is BatchRouter {\n constructor(\n IVault vault,\n IWETH weth,\n IPermit2 permit2\n ) BatchRouter(vault, weth, permit2, MOCK_BATCH_ROUTER_VERSION) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function manualGetCurrentSwapTokensInSlot() external view returns (bytes32) {\n TransientEnumerableSet.AddressSet storage enumerableSet = _currentSwapTokensIn();\n\n bytes32 slot;\n assembly {\n slot := enumerableSet.slot\n }\n\n return slot;\n }\n\n function manualGetCurrentSwapTokensOutSlot() external view returns (bytes32) {\n TransientEnumerableSet.AddressSet storage enumerableSet = _currentSwapTokensOut();\n\n bytes32 slot;\n assembly {\n slot := enumerableSet.slot\n }\n\n return slot;\n }\n\n function manualGetCurrentSwapTokenInAmounts() external view returns (AddressToUintMappingSlot) {\n return _currentSwapTokenInAmounts();\n }\n\n function manualGetCurrentSwapTokenOutAmounts() external view returns (AddressToUintMappingSlot) {\n return _currentSwapTokenOutAmounts();\n }\n\n function manualGetSettledTokenAmounts() external view returns (AddressToUintMappingSlot) {\n return _settledTokenAmounts();\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { BufferRouter } from \"../BufferRouter.sol\";\n\nstring constant MOCK_BUFFER_ROUTER_VERSION = \"Mock Router v1\";\n\ncontract BufferRouterMock is BufferRouter {\n error MockErrorCode();\n\n constructor(\n IVault vault,\n IWETH weth,\n IPermit2 permit2\n ) BufferRouter(vault, weth, permit2, MOCK_BUFFER_ROUTER_VERSION) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function manualReentrancyAddLiquidityToBufferHook() external nonReentrant {\n BufferRouter(payable(this)).addLiquidityToBufferHook(IERC4626(address(0)), 0, 0, 0, address(0));\n }\n\n function manualReentrancyInitializeBufferHook() external nonReentrant {\n BufferRouter(payable(this)).initializeBufferHook(IERC4626(address(0)), 0, 0, 0, address(0));\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { TokenConfig } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { InputHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\";\n\ncontract InputHelpersMock {\n function sortTokens(IERC20[] memory tokens) external pure returns (IERC20[] memory) {\n return InputHelpers.sortTokens(tokens);\n }\n\n function ensureSortedTokens(IERC20[] memory tokens) external pure {\n InputHelpers.ensureSortedTokens(tokens);\n }\n\n function sortTokenConfig(TokenConfig[] memory tokenConfig) public pure returns (TokenConfig[] memory) {\n for (uint256 i = 0; i < tokenConfig.length - 1; ++i) {\n for (uint256 j = 0; j < tokenConfig.length - i - 1; j++) {\n if (tokenConfig[j].token > tokenConfig[j + 1].token) {\n // Swap if they're out of order.\n (tokenConfig[j], tokenConfig[j + 1]) = (tokenConfig[j + 1], tokenConfig[j]);\n }\n }\n }\n\n return tokenConfig;\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { Create2 } from \"@openzeppelin/contracts/utils/Create2.sol\";\n\nimport { IBasePoolFactory } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { FactoryWidePauseWindow } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\";\n\nimport { SingletonAuthentication } from \"../SingletonAuthentication.sol\";\nimport { PoolMock } from \"./PoolMock.sol\";\n\ncontract PoolFactoryMock is IBasePoolFactory, SingletonAuthentication, FactoryWidePauseWindow {\n uint256 private constant DEFAULT_SWAP_FEE = 0;\n\n IVault private immutable _vault;\n\n // Avoid dependency on BasePoolFactory; copy storage here.\n mapping(address pool => bool isFromFactory) private _isPoolFromFactory;\n bool private _disabled;\n\n constructor(\n IVault vault,\n uint32 pauseWindowDuration\n ) SingletonAuthentication(vault) FactoryWidePauseWindow(pauseWindowDuration) {\n _vault = vault;\n }\n\n function createPool(string memory name, string memory symbol) external returns (address) {\n PoolMock newPool = new PoolMock(IVault(address(_vault)), name, symbol);\n _registerPoolWithFactory(address(newPool));\n return address(newPool);\n }\n\n function registerTestPool(address pool, TokenConfig[] memory tokenConfig) external {\n PoolRoleAccounts memory roleAccounts;\n\n _vault.registerPool(\n pool,\n tokenConfig,\n DEFAULT_SWAP_FEE,\n getNewPoolPauseWindowEndTime(),\n false,\n roleAccounts,\n address(0), // No hook contract\n _getDefaultLiquidityManagement()\n );\n }\n\n function registerTestPool(address pool, TokenConfig[] memory tokenConfig, address poolHooksContract) external {\n PoolRoleAccounts memory roleAccounts;\n\n _vault.registerPool(\n pool,\n tokenConfig,\n DEFAULT_SWAP_FEE,\n getNewPoolPauseWindowEndTime(),\n false,\n roleAccounts,\n poolHooksContract,\n _getDefaultLiquidityManagement()\n );\n }\n\n function registerTestPool(\n address pool,\n TokenConfig[] memory tokenConfig,\n address poolHooksContract,\n address poolCreator\n ) external {\n PoolRoleAccounts memory roleAccounts;\n roleAccounts.poolCreator = poolCreator;\n\n _vault.registerPool(\n pool,\n tokenConfig,\n DEFAULT_SWAP_FEE,\n getNewPoolPauseWindowEndTime(),\n false,\n roleAccounts,\n poolHooksContract,\n _getDefaultLiquidityManagement()\n );\n }\n\n function registerGeneralTestPool(\n address pool,\n TokenConfig[] memory tokenConfig,\n uint256 swapFee,\n uint32 pauseWindowDuration,\n bool protocolFeeExempt,\n PoolRoleAccounts memory roleAccounts,\n address poolHooksContract\n ) external {\n _vault.registerPool(\n pool,\n tokenConfig,\n swapFee,\n uint32(block.timestamp) + pauseWindowDuration,\n protocolFeeExempt,\n roleAccounts,\n poolHooksContract,\n _getDefaultLiquidityManagement()\n );\n }\n\n function registerPool(\n address pool,\n TokenConfig[] memory tokenConfig,\n PoolRoleAccounts memory roleAccounts,\n address poolHooksContract,\n LiquidityManagement calldata liquidityManagement\n ) external {\n _vault.registerPool(\n pool,\n tokenConfig,\n DEFAULT_SWAP_FEE,\n getNewPoolPauseWindowEndTime(),\n false,\n roleAccounts,\n poolHooksContract,\n liquidityManagement\n );\n }\n\n function registerPoolWithSwapFee(\n address pool,\n TokenConfig[] memory tokenConfig,\n uint256 swapFeePercentage,\n address poolHooksContract,\n LiquidityManagement calldata liquidityManagement\n ) external {\n PoolRoleAccounts memory roleAccounts;\n\n _vault.registerPool(\n pool,\n tokenConfig,\n swapFeePercentage,\n getNewPoolPauseWindowEndTime(),\n false,\n roleAccounts,\n poolHooksContract,\n liquidityManagement\n );\n }\n\n // For tests; otherwise can't get the exact event arguments.\n function registerPoolAtTimestamp(\n address pool,\n TokenConfig[] memory tokenConfig,\n uint32 timestamp,\n PoolRoleAccounts memory roleAccounts,\n address poolHooksContract,\n LiquidityManagement calldata liquidityManagement\n ) external {\n _vault.registerPool(\n pool,\n tokenConfig,\n DEFAULT_SWAP_FEE,\n timestamp,\n false,\n roleAccounts,\n poolHooksContract,\n liquidityManagement\n );\n }\n\n function _getDefaultLiquidityManagement() private pure returns (LiquidityManagement memory) {\n LiquidityManagement memory liquidityManagement;\n liquidityManagement.enableAddLiquidityCustom = true;\n liquidityManagement.enableRemoveLiquidityCustom = true;\n return liquidityManagement;\n }\n\n /// @inheritdoc IBasePoolFactory\n function isPoolFromFactory(address pool) external view returns (bool) {\n return _isPoolFromFactory[pool];\n }\n\n function getPoolCount() external pure returns (uint256) {\n revert(\"Not implemented\");\n }\n\n function getPools() external pure returns (address[] memory) {\n revert(\"Not implemented\");\n }\n\n function getPoolsInRange(uint256, uint256) external pure returns (address[] memory) {\n revert(\"Not implemented\");\n }\n\n /// @inheritdoc IBasePoolFactory\n function isDisabled() public view returns (bool) {\n return _disabled;\n }\n\n /// @inheritdoc IBasePoolFactory\n function getDeploymentAddress(\n bytes memory constructorArgs,\n bytes32 salt\n ) public view returns (address deployAddress) {\n bytes memory creationCode = abi.encodePacked(type(PoolMock).creationCode, constructorArgs);\n bytes32 creationCodeHash = keccak256(creationCode);\n bytes32 finalSalt = _computeFinalSalt(salt);\n\n return Create2.computeAddress(finalSalt, creationCodeHash, address(this));\n }\n\n /// @inheritdoc IBasePoolFactory\n function disable() external authenticate {\n _ensureEnabled();\n\n _disabled = true;\n\n emit FactoryDisabled();\n }\n\n function _registerPoolWithFactory(address pool) internal virtual {\n _ensureEnabled();\n\n _isPoolFromFactory[pool] = true;\n\n emit PoolCreated(pool);\n }\n\n // Functions from BasePoolFactory\n\n function _ensureEnabled() internal view {\n if (isDisabled()) {\n revert Disabled();\n }\n }\n\n function _computeFinalSalt(bytes32 salt) internal view virtual returns (bytes32) {\n return keccak256(abi.encode(msg.sender, block.chainid, salt));\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\n\nimport { IRouterCommon } from \"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport { IVaultMock } from \"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\nimport { ScalingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\";\n\nimport { RateProviderMock } from \"./RateProviderMock.sol\";\nimport { VaultGuard } from \"../VaultGuard.sol\";\nimport { BaseHooks } from \"../BaseHooks.sol\";\n\ncontract PoolHooksMock is BaseHooks, VaultGuard {\n using FixedPoint for uint256;\n using ScalingHelpers for uint256;\n\n bool public failOnAfterInitialize;\n bool public failOnBeforeInitialize;\n bool public failOnComputeDynamicSwapFeeHook;\n bool public failOnBeforeSwapHook;\n bool public failOnAfterSwapHook;\n bool public failOnBeforeAddLiquidity;\n bool public failOnAfterAddLiquidity;\n bool public failOnBeforeRemoveLiquidity;\n bool public failOnAfterRemoveLiquidity;\n\n bool public shouldForceHookAdjustedAmounts;\n uint256[] public forcedHookAdjustedAmountsLiquidity;\n\n bool public changeTokenRateOnBeforeSwapHook;\n bool public changeTokenRateOnBeforeInitialize;\n bool public changeTokenRateOnBeforeAddLiquidity;\n bool public changeTokenRateOnBeforeRemoveLiquidity;\n\n bool public changePoolBalancesOnBeforeSwapHook;\n bool public changePoolBalancesOnBeforeAddLiquidityHook;\n bool public changePoolBalancesOnBeforeRemoveLiquidityHook;\n\n bool public shouldSettleDiscount;\n uint256 public hookSwapFeePercentage;\n uint256 public hookSwapDiscountPercentage;\n uint256 public addLiquidityHookFeePercentage;\n uint256 public addLiquidityHookDiscountPercentage;\n uint256 public removeLiquidityHookFeePercentage;\n uint256 public removeLiquidityHookDiscountPercentage;\n\n bool public swapReentrancyHookActive;\n address private _swapHookContract;\n bytes private _swapHookCalldata;\n\n RateProviderMock private _rateProvider;\n uint256 private _newTokenRate;\n uint256 private _dynamicSwapFee;\n address private _pool;\n address private _specialSender;\n uint256[] private _newBalancesRaw;\n\n // Bool created because in some tests the test file is used as router and does not implement getSender.\n bool public shouldIgnoreSavedSender;\n address private _savedSender;\n\n mapping(address pool => bool isFromFactory) private _allowedFactories;\n\n HookFlags private _hookFlags;\n\n constructor(IVault vault) VaultGuard(vault) {\n shouldSettleDiscount = true;\n }\n\n function onRegister(\n address factory,\n address,\n TokenConfig[] memory,\n LiquidityManagement calldata\n ) public view override returns (bool) {\n return _allowedFactories[factory];\n }\n\n function getHookFlags() public view override returns (HookFlags memory) {\n return _hookFlags;\n }\n\n function setHookFlags(HookFlags memory hookFlags) external {\n _hookFlags = hookFlags;\n }\n\n function onBeforeInitialize(uint256[] memory, bytes memory) public override returns (bool) {\n if (changeTokenRateOnBeforeInitialize) {\n _updateTokenRate();\n }\n\n return !failOnBeforeInitialize;\n }\n\n function onAfterInitialize(uint256[] memory, uint256, bytes memory) public view override returns (bool) {\n return !failOnAfterInitialize;\n }\n\n function onComputeDynamicSwapFeePercentage(\n PoolSwapParams calldata params,\n address,\n uint256\n ) public view override returns (bool, uint256) {\n uint256 finalSwapFee = _dynamicSwapFee;\n\n if (_specialSender != address(0)) {\n // Check the sender.\n address swapper = IRouterCommon(params.router).getSender();\n if (swapper == _specialSender) {\n finalSwapFee = 0;\n }\n }\n\n return (!failOnComputeDynamicSwapFeeHook, finalSwapFee);\n }\n\n function onBeforeSwap(PoolSwapParams calldata params, address) public override returns (bool) {\n if (shouldIgnoreSavedSender == false) {\n _savedSender = IRouterCommon(params.router).getSender();\n }\n\n if (changeTokenRateOnBeforeSwapHook) {\n _updateTokenRate();\n }\n\n if (changePoolBalancesOnBeforeSwapHook) {\n _setBalancesInVault();\n }\n\n if (swapReentrancyHookActive) {\n require(_swapHookContract != address(0), \"Hook contract not set\");\n require(_swapHookCalldata.length != 0, \"Hook calldata is empty\");\n swapReentrancyHookActive = false;\n Address.functionCall(_swapHookContract, _swapHookCalldata);\n }\n\n return !failOnBeforeSwapHook;\n }\n\n function onAfterSwap(AfterSwapParams calldata params) public override returns (bool, uint256) {\n // Check that actual pool balances match.\n (IERC20[] memory tokens, , uint256[] memory balancesRaw, ) = _vault.getPoolTokenInfo(params.pool);\n\n uint256[] memory currentLiveBalances = IVaultMock(address(_vault)).getCurrentLiveBalances(params.pool);\n\n (uint256[] memory scalingFactors, uint256[] memory rates) = _vault.getPoolTokenRates(params.pool);\n\n for (uint256 i = 0; i < tokens.length; ++i) {\n if (tokens[i] == params.tokenIn) {\n if (params.tokenInBalanceScaled18 != currentLiveBalances[i]) {\n return (false, params.amountCalculatedRaw);\n }\n uint256 expectedTokenInBalanceRaw = params.tokenInBalanceScaled18.toRawUndoRateRoundDown(\n scalingFactors[i],\n rates[i]\n );\n if (expectedTokenInBalanceRaw != balancesRaw[i]) {\n return (false, params.amountCalculatedRaw);\n }\n } else if (tokens[i] == params.tokenOut) {\n if (params.tokenOutBalanceScaled18 != currentLiveBalances[i]) {\n return (false, params.amountCalculatedRaw);\n }\n uint256 expectedTokenOutBalanceRaw = params.tokenOutBalanceScaled18.toRawUndoRateRoundDown(\n scalingFactors[i],\n rates[i]\n );\n if (expectedTokenOutBalanceRaw != balancesRaw[i]) {\n return (false, params.amountCalculatedRaw);\n }\n }\n }\n\n uint256 hookAdjustedAmountCalculatedRaw = params.amountCalculatedRaw;\n if (hookSwapFeePercentage > 0) {\n uint256 hookFee = hookAdjustedAmountCalculatedRaw.mulDown(hookSwapFeePercentage);\n if (hookFee > 0) {\n if (params.kind == SwapKind.EXACT_IN) {\n hookAdjustedAmountCalculatedRaw -= hookFee;\n _vault.sendTo(params.tokenOut, address(this), hookFee);\n } else {\n hookAdjustedAmountCalculatedRaw += hookFee;\n _vault.sendTo(params.tokenIn, address(this), hookFee);\n }\n }\n } else if (hookSwapDiscountPercentage > 0) {\n uint256 hookDiscount = hookAdjustedAmountCalculatedRaw.mulDown(hookSwapDiscountPercentage);\n if (hookDiscount > 0) {\n if (params.kind == SwapKind.EXACT_IN) {\n hookAdjustedAmountCalculatedRaw += hookDiscount;\n\n if (shouldSettleDiscount) {\n params.tokenOut.transfer(address(_vault), hookDiscount);\n _vault.settle(params.tokenOut, hookDiscount);\n }\n } else {\n hookAdjustedAmountCalculatedRaw -= hookDiscount;\n\n if (shouldSettleDiscount) {\n params.tokenIn.transfer(address(_vault), hookDiscount);\n _vault.settle(params.tokenIn, hookDiscount);\n }\n }\n }\n }\n\n return (params.amountCalculatedScaled18 > 0 && !failOnAfterSwapHook, hookAdjustedAmountCalculatedRaw);\n }\n\n // Liquidity lifecycle hooks\n\n function onBeforeAddLiquidity(\n address router,\n address,\n AddLiquidityKind,\n uint256[] memory,\n uint256,\n uint256[] memory,\n bytes memory\n ) public override returns (bool) {\n if (shouldIgnoreSavedSender == false) {\n _savedSender = IRouterCommon(router).getSender();\n }\n\n if (changeTokenRateOnBeforeAddLiquidity) {\n _updateTokenRate();\n }\n\n if (changePoolBalancesOnBeforeAddLiquidityHook) {\n _setBalancesInVault();\n }\n\n return !failOnBeforeAddLiquidity;\n }\n\n function onBeforeRemoveLiquidity(\n address router,\n address,\n RemoveLiquidityKind,\n uint256,\n uint256[] memory,\n uint256[] memory,\n bytes memory\n ) public override returns (bool) {\n if (shouldIgnoreSavedSender == false) {\n _savedSender = IRouterCommon(router).getSender();\n }\n\n if (changeTokenRateOnBeforeRemoveLiquidity) {\n _updateTokenRate();\n }\n\n if (changePoolBalancesOnBeforeRemoveLiquidityHook) {\n _setBalancesInVault();\n }\n\n return !failOnBeforeRemoveLiquidity;\n }\n\n function onAfterAddLiquidity(\n address,\n address pool,\n AddLiquidityKind,\n uint256[] memory,\n uint256[] memory amountsInRaw,\n uint256,\n uint256[] memory,\n bytes memory\n ) public override returns (bool, uint256[] memory hookAdjustedAmountsInRaw) {\n // Forces the hook answer to test HooksConfigLib.\n if (shouldForceHookAdjustedAmounts) {\n return (true, forcedHookAdjustedAmountsLiquidity);\n }\n\n (IERC20[] memory tokens, , , ) = _vault.getPoolTokenInfo(pool);\n hookAdjustedAmountsInRaw = amountsInRaw;\n\n if (addLiquidityHookFeePercentage > 0) {\n for (uint256 i = 0; i < amountsInRaw.length; i++) {\n uint256 hookFee = amountsInRaw[i].mulDown(addLiquidityHookFeePercentage);\n if (hookFee > 0) {\n hookAdjustedAmountsInRaw[i] += hookFee;\n _vault.sendTo(tokens[i], address(this), hookFee);\n }\n }\n } else if (addLiquidityHookDiscountPercentage > 0) {\n for (uint256 i = 0; i < amountsInRaw.length; i++) {\n IERC20 token = tokens[i];\n\n uint256 hookDiscount = amountsInRaw[i].mulDown(addLiquidityHookDiscountPercentage);\n if (hookDiscount > 0) {\n token.transfer(address(_vault), hookDiscount);\n hookAdjustedAmountsInRaw[i] -= hookDiscount;\n _vault.settle(token, hookDiscount);\n }\n }\n }\n\n return (!failOnAfterAddLiquidity, hookAdjustedAmountsInRaw);\n }\n\n function onAfterRemoveLiquidity(\n address,\n address pool,\n RemoveLiquidityKind,\n uint256,\n uint256[] memory,\n uint256[] memory amountsOutRaw,\n uint256[] memory,\n bytes memory\n ) public override returns (bool, uint256[] memory hookAdjustedAmountsOutRaw) {\n // Forces the hook answer to test HooksConfigLib.\n if (shouldForceHookAdjustedAmounts) {\n return (true, forcedHookAdjustedAmountsLiquidity);\n }\n\n (IERC20[] memory tokens, , , ) = _vault.getPoolTokenInfo(pool);\n hookAdjustedAmountsOutRaw = amountsOutRaw;\n\n if (removeLiquidityHookFeePercentage > 0) {\n for (uint256 i = 0; i < amountsOutRaw.length; i++) {\n uint256 hookFee = amountsOutRaw[i].mulDown(removeLiquidityHookFeePercentage);\n if (hookFee > 0) {\n hookAdjustedAmountsOutRaw[i] -= hookFee;\n _vault.sendTo(tokens[i], address(this), hookFee);\n }\n }\n } else if (removeLiquidityHookDiscountPercentage > 0) {\n for (uint256 i = 0; i < amountsOutRaw.length; i++) {\n uint256 hookDiscount = amountsOutRaw[i].mulDown(removeLiquidityHookDiscountPercentage);\n IERC20 token = tokens[i];\n\n if (hookDiscount > 0) {\n token.transfer(address(_vault), hookDiscount);\n hookAdjustedAmountsOutRaw[i] += hookDiscount;\n _vault.settle(token, hookDiscount);\n }\n }\n }\n\n return (!failOnAfterRemoveLiquidity, hookAdjustedAmountsOutRaw);\n }\n\n /***********************************************************\n Set flags to fail\n ***********************************************************/\n\n function setFailOnAfterInitializeHook(bool fail) external {\n failOnAfterInitialize = fail;\n }\n\n function setFailOnBeforeInitializeHook(bool fail) external {\n failOnBeforeInitialize = fail;\n }\n\n function setFailOnComputeDynamicSwapFeeHook(bool fail) external {\n failOnComputeDynamicSwapFeeHook = fail;\n }\n\n function setFailOnBeforeSwapHook(bool fail) external {\n failOnBeforeSwapHook = fail;\n }\n\n function setFailOnAfterSwapHook(bool fail) external {\n failOnAfterSwapHook = fail;\n }\n\n function setFailOnBeforeAddLiquidityHook(bool fail) external {\n failOnBeforeAddLiquidity = fail;\n }\n\n function setFailOnAfterAddLiquidityHook(bool fail) external {\n failOnAfterAddLiquidity = fail;\n }\n\n function setFailOnBeforeRemoveLiquidityHook(bool fail) external {\n failOnBeforeRemoveLiquidity = fail;\n }\n\n function setFailOnAfterRemoveLiquidityHook(bool fail) external {\n failOnAfterRemoveLiquidity = fail;\n }\n\n /***********************************************************\n Set hooks behavior\n ***********************************************************/\n\n function setChangePoolBalancesOnBeforeSwapHook(bool changeBalances, uint256[] memory newBalancesRaw) external {\n changePoolBalancesOnBeforeSwapHook = changeBalances;\n _newBalancesRaw = newBalancesRaw;\n }\n\n function setChangePoolBalancesOnBeforeAddLiquidityHook(\n bool changeBalances,\n uint256[] memory newBalancesRaw\n ) external {\n changePoolBalancesOnBeforeAddLiquidityHook = changeBalances;\n _newBalancesRaw = newBalancesRaw;\n }\n\n function setChangePoolBalancesOnBeforeRemoveLiquidityHook(\n bool changeBalances,\n uint256[] memory newBalancesRaw\n ) external {\n changePoolBalancesOnBeforeRemoveLiquidityHook = changeBalances;\n _newBalancesRaw = newBalancesRaw;\n }\n\n function setChangeTokenRateOnBeforeInitializeHook(\n bool changeRate,\n RateProviderMock rateProvider,\n uint256 newTokenRate\n ) external {\n changeTokenRateOnBeforeInitialize = changeRate;\n _rateProvider = rateProvider;\n _newTokenRate = newTokenRate;\n }\n\n function setChangeTokenRateOnBeforeSwapHook(\n bool changeRate,\n RateProviderMock rateProvider,\n uint256 newTokenRate\n ) external {\n changeTokenRateOnBeforeSwapHook = changeRate;\n _rateProvider = rateProvider;\n _newTokenRate = newTokenRate;\n }\n\n function setChangeTokenRateOnBeforeAddLiquidityHook(\n bool changeRate,\n RateProviderMock rateProvider,\n uint256 newTokenRate\n ) external {\n changeTokenRateOnBeforeAddLiquidity = changeRate;\n _rateProvider = rateProvider;\n _newTokenRate = newTokenRate;\n }\n\n function setChangeTokenRateOnBeforeRemoveLiquidityHook(\n bool changeRate,\n RateProviderMock rateProvider,\n uint256 newTokenRate\n ) external {\n changeTokenRateOnBeforeRemoveLiquidity = changeRate;\n _rateProvider = rateProvider;\n _newTokenRate = newTokenRate;\n }\n\n function setSwapReentrancyHookActive(bool _swapReentrancyHookActive) external {\n swapReentrancyHookActive = _swapReentrancyHookActive;\n }\n\n function setSwapReentrancyHook(address hookContract, bytes calldata data) external {\n _swapHookContract = hookContract;\n _swapHookCalldata = data;\n }\n\n function setSpecialSender(address sender) external {\n _specialSender = sender;\n }\n\n function setDynamicSwapFeePercentage(uint256 dynamicSwapFee) external {\n _dynamicSwapFee = dynamicSwapFee;\n }\n\n function setPool(address pool) external {\n _pool = pool;\n }\n\n function setShouldSettleDiscount(bool shouldSettleDiscountFlag) external {\n shouldSettleDiscount = shouldSettleDiscountFlag;\n }\n\n function setHookSwapFeePercentage(uint256 feePercentage) external {\n hookSwapFeePercentage = feePercentage;\n }\n\n function setHookSwapDiscountPercentage(uint256 discountPercentage) external {\n hookSwapDiscountPercentage = discountPercentage;\n }\n\n function setAddLiquidityHookFeePercentage(uint256 hookFeePercentage) public {\n addLiquidityHookFeePercentage = hookFeePercentage;\n }\n\n function setAddLiquidityHookDiscountPercentage(uint256 hookDiscountPercentage) public {\n addLiquidityHookDiscountPercentage = hookDiscountPercentage;\n }\n\n function setRemoveLiquidityHookFeePercentage(uint256 hookFeePercentage) public {\n removeLiquidityHookFeePercentage = hookFeePercentage;\n }\n\n function setRemoveLiquidityHookDiscountPercentage(uint256 hookDiscountPercentage) public {\n removeLiquidityHookDiscountPercentage = hookDiscountPercentage;\n }\n\n function enableForcedHookAdjustedAmountsLiquidity(uint256[] memory hookAdjustedAmountsLiquidity) public {\n shouldForceHookAdjustedAmounts = true;\n forcedHookAdjustedAmountsLiquidity = hookAdjustedAmountsLiquidity;\n }\n\n function disableForcedHookAdjustedAmounts() public {\n shouldForceHookAdjustedAmounts = false;\n }\n\n function allowFactory(address factory) external {\n _allowedFactories[factory] = true;\n }\n\n function denyFactory(address factory) external {\n _allowedFactories[factory] = false;\n }\n\n function setShouldIgnoreSavedSender(bool value) external {\n shouldIgnoreSavedSender = value;\n }\n\n function getSavedSender() external view returns (address) {\n return _savedSender;\n }\n\n /****************************************************************\n Helpers\n ****************************************************************/\n function _updateTokenRate() private {\n _rateProvider.mockRate(_newTokenRate);\n }\n\n function _setBalancesInVault() private {\n IERC20[] memory poolTokens = _vault.getPoolTokens(_pool);\n // We don't care about last live balances here, so we just use the same raw balances.\n IVaultMock(address(_vault)).manualSetPoolTokensAndBalances(_pool, poolTokens, _newBalancesRaw, _newBalancesRaw);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/PoolMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IPoolLiquidity } from \"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\";\nimport { IBasePool } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { BasePoolAuthentication } from \"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol\";\nimport { PoolInfo } from \"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\";\n\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport { BalancerPoolToken } from \"../BalancerPoolToken.sol\";\n\ncontract PoolMock is IBasePool, IPoolLiquidity, BalancerPoolToken, BasePoolAuthentication, PoolInfo {\n using FixedPoint for uint256;\n\n // Amounts in are multiplied by the multiplier, amounts out are divided by it.\n uint256 private _multiplier = FixedPoint.ONE;\n\n // If non-zero, use this return value for `getRate` (otherwise, defer to BalancerPoolToken's base implementation).\n uint256 private _mockRate;\n\n constructor(\n IVault vault,\n string memory name,\n string memory symbol\n ) BalancerPoolToken(vault, name, symbol) BasePoolAuthentication(vault, msg.sender) PoolInfo(vault) {\n // solhint-previous-line no-empty-blocks\n }\n\n function computeInvariant(uint256[] memory balances, Rounding) public pure returns (uint256) {\n // inv = x + y\n uint256 invariant;\n for (uint256 i = 0; i < balances.length; ++i) {\n invariant += balances[i];\n }\n return invariant;\n }\n\n /// @inheritdoc IBasePool\n function computeBalance(\n uint256[] memory balances,\n uint256 tokenInIndex,\n uint256 invariantRatio\n ) external pure returns (uint256 newBalance) {\n // inv = x + y\n uint256 invariant = computeInvariant(balances, Rounding.ROUND_DOWN);\n return (balances[tokenInIndex] + invariant.mulDown(invariantRatio)) - invariant;\n }\n\n function setMultiplier(uint256 newMultiplier) external {\n _multiplier = newMultiplier;\n }\n\n function onSwap(PoolSwapParams calldata params) external view override returns (uint256 amountCalculated) {\n return\n params.kind == SwapKind.EXACT_IN\n ? params.amountGivenScaled18.mulDown(_multiplier)\n : params.amountGivenScaled18.divDown(_multiplier);\n }\n\n function onAddLiquidityCustom(\n address,\n uint256[] memory maxAmountsInScaled18,\n uint256 minBptAmountOut,\n uint256[] memory,\n bytes memory userData\n ) external pure override returns (uint256[] memory, uint256, uint256[] memory, bytes memory) {\n return (maxAmountsInScaled18, minBptAmountOut, new uint256[](maxAmountsInScaled18.length), userData);\n }\n\n function onRemoveLiquidityCustom(\n address,\n uint256 maxBptAmountIn,\n uint256[] memory minAmountsOut,\n uint256[] memory,\n bytes memory userData\n ) external pure override returns (uint256, uint256[] memory, uint256[] memory, bytes memory) {\n return (maxBptAmountIn, minAmountsOut, new uint256[](minAmountsOut.length), userData);\n }\n\n function mockEventFunction(uint256 testValue) external {\n _vault.emitAuxiliaryEvent(\"TestEvent\", abi.encode(testValue));\n }\n\n /// @dev Even though pools do not handle scaling, we still need this for the tests.\n function getDecimalScalingFactors() external view returns (uint256[] memory scalingFactors) {\n (scalingFactors, ) = _vault.getPoolTokenRates(address(this));\n }\n\n function getMinimumSwapFeePercentage() external pure override returns (uint256) {\n return 0;\n }\n\n function getMaximumSwapFeePercentage() external pure override returns (uint256) {\n return FixedPoint.ONE;\n }\n\n function getMinimumInvariantRatio() external view virtual override returns (uint256) {\n return 0;\n }\n\n function getMaximumInvariantRatio() external view virtual override returns (uint256) {\n return 1e40; // Something just really big; should always work\n }\n\n function setMockRate(uint256 mockRate) external {\n _mockRate = mockRate;\n }\n\n function getRate() public view override returns (uint256) {\n return _mockRate == 0 ? super.getRate() : _mockRate;\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IVaultMock } from \"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol\";\n\nimport { ProtocolFeeController } from \"../ProtocolFeeController.sol\";\n\ncontract ProtocolFeeControllerMock is ProtocolFeeController {\n constructor(IVaultMock vault_) ProtocolFeeController(vault_) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function getPoolTokensAndCount(address pool) external view returns (IERC20[] memory tokens, uint256 numTokens) {\n return _getPoolTokensAndCount(pool);\n }\n\n function getPoolCreatorInfo(\n address pool\n ) external view returns (address poolCreator, uint256 creatorSwapFeePercentage, uint256 creatorYieldFeePercentage) {\n return (_poolCreators[pool], _poolCreatorSwapFeePercentages[pool], _poolCreatorYieldFeePercentages[pool]);\n }\n\n /**\n * @notice Sets the pool creator address, allowing the address to change the pool creator fee percentage.\n * @dev Standard Balancer Pools specifically disallow pool creators to be passed in through PoolRoleAccounts;\n * otherwise, this wouldn't be necessary.\n */\n function manualSetPoolCreator(address pool, address poolCreator) external {\n _poolCreators[pool] = poolCreator;\n }\n\n /// @dev Set pool creator swap fee percentage without any constraints.\n function manualSetPoolCreatorSwapFeePercentage(address pool, uint256 poolCreatorSwapFeePercentage) external {\n _poolCreatorSwapFeePercentages[pool] = poolCreatorSwapFeePercentage;\n IVaultMock(address(_vault)).manualUpdateAggregateSwapFeePercentage(\n pool,\n _getAggregateFeePercentage(pool, ProtocolFeeType.SWAP)\n );\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IRateProvider } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\";\n\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\n\ncontract RateProviderMock is IRateProvider {\n uint256 internal _rate;\n\n constructor() {\n _rate = FixedPoint.ONE;\n }\n\n /// @inheritdoc IRateProvider\n function getRate() external view override returns (uint256) {\n return _rate;\n }\n\n function mockRate(uint256 newRate) external {\n _rate = newRate;\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/RouterMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { IPermit2 } from \"permit2/src/interfaces/IPermit2.sol\";\n\nimport { IWETH } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport { SwapKind } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IRouter } from \"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { RevertCodec } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\";\n\nimport { Router } from \"../Router.sol\";\n\nstring constant MOCK_ROUTER_VERSION = \"Mock Router v1\";\n\ncontract RouterMock is Router {\n using SafeCast for *;\n\n error MockErrorCode();\n\n constructor(IVault vault, IWETH weth, IPermit2 permit2) Router(vault, weth, permit2, MOCK_ROUTER_VERSION) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function manualReentrancyInitializeHook() external nonReentrant {\n IRouter.InitializeHookParams memory hookParams;\n Router(payable(this)).initializeHook(hookParams);\n }\n\n function manualReentrancyAddLiquidityHook() external nonReentrant {\n AddLiquidityHookParams memory params;\n Router(payable(this)).addLiquidityHook(params);\n }\n\n function manualReentrancyRemoveLiquidityHook() external nonReentrant {\n RemoveLiquidityHookParams memory params;\n Router(payable(this)).removeLiquidityHook(params);\n }\n\n function manualReentrancyRemoveLiquidityRecoveryHook() external nonReentrant {\n Router(payable(this)).removeLiquidityRecoveryHook(address(0), address(0), 0, new uint256[](2));\n }\n\n function manualReentrancySwapSingleTokenHook() external nonReentrant {\n IRouter.SwapSingleTokenHookParams memory params;\n Router(payable(this)).swapSingleTokenHook(params);\n }\n\n function manualReentrancyQuerySwapHook() external nonReentrant {\n IRouter.SwapSingleTokenHookParams memory params;\n Router(payable(this)).querySwapHook(params);\n }\n\n function getSingleInputArrayAndTokenIndex(\n address pool,\n IERC20 token,\n uint256 amountGiven\n ) external view returns (uint256[] memory amountsGiven, uint256 tokenIndex) {\n return _getSingleInputArrayAndTokenIndex(pool, token, amountGiven);\n }\n\n function querySwapSingleTokenExactInAndRevert(\n address pool,\n IERC20 tokenIn,\n IERC20 tokenOut,\n uint256 exactAmountIn,\n bytes calldata userData\n ) external returns (uint256 amountCalculated) {\n try\n _vault.quoteAndRevert(\n abi.encodeCall(\n Router.querySwapHook,\n SwapSingleTokenHookParams({\n sender: msg.sender,\n kind: SwapKind.EXACT_IN,\n pool: pool,\n tokenIn: tokenIn,\n tokenOut: tokenOut,\n amountGiven: exactAmountIn,\n limit: 0,\n deadline: _MAX_AMOUNT,\n wethIsEth: false,\n userData: userData\n })\n )\n )\n {\n revert(\"Unexpected success\");\n } catch (bytes memory result) {\n return abi.decode(RevertCodec.catchEncodedResult(result), (uint256));\n }\n }\n\n function querySpoof() external returns (uint256) {\n try _vault.quoteAndRevert(abi.encodeWithSelector(RouterMock.querySpoofHook.selector)) {\n revert(\"Unexpected success\");\n } catch (bytes memory result) {\n return abi.decode(RevertCodec.catchEncodedResult(result), (uint256));\n }\n }\n\n function querySpoofHook() external pure {\n revert RevertCodec.Result(abi.encode(uint256(1234)));\n }\n\n function queryRevertErrorCode() external returns (uint256) {\n try _vault.quoteAndRevert(abi.encodeWithSelector(RouterMock.queryRevertErrorCodeHook.selector)) {\n revert(\"Unexpected success\");\n } catch (bytes memory result) {\n return abi.decode(RevertCodec.catchEncodedResult(result), (uint256));\n }\n }\n\n function queryRevertErrorCodeHook() external pure {\n revert MockErrorCode();\n }\n\n function queryRevertLegacy() external returns (uint256) {\n try _vault.quoteAndRevert(abi.encodeWithSelector(RouterMock.queryRevertLegacyHook.selector)) {\n revert(\"Unexpected success\");\n } catch (bytes memory result) {\n return abi.decode(RevertCodec.catchEncodedResult(result), (uint256));\n }\n }\n\n function queryRevertLegacyHook() external pure {\n revert(\"Legacy revert reason\");\n }\n\n function queryRevertPanic() external returns (uint256) {\n try _vault.quoteAndRevert(abi.encodeWithSelector(RouterMock.queryRevertPanicHook.selector)) {\n revert(\"Unexpected success\");\n } catch (bytes memory result) {\n return abi.decode(RevertCodec.catchEncodedResult(result), (uint256));\n }\n }\n\n function queryRevertPanicHook() external pure returns (uint256) {\n uint256 a = 10;\n uint256 b = 0;\n return a / b;\n }\n\n function queryRevertNoReason() external returns (uint256) {\n try _vault.quoteAndRevert(abi.encodeWithSelector(RouterMock.queryRevertNoReasonHook.selector)) {\n revert(\"Unexpected success\");\n } catch (bytes memory result) {\n return abi.decode(RevertCodec.catchEncodedResult(result), (uint256));\n }\n }\n\n function queryRevertNoReasonHook() external pure returns (uint256) {\n revert();\n }\n\n struct ManualAddRemoveLiquidityParams {\n address pool;\n address sender;\n uint256[] maxAmountsIn;\n uint256 minBptAmountOut;\n }\n\n function manualAddAndRemoveLiquidity(\n ManualAddRemoveLiquidityParams calldata params\n )\n external\n saveSender(msg.sender)\n returns (uint256[] memory amountsIn, uint256 bptAmountOut, uint256 bptAmountIn, uint256[] memory amountsOut)\n {\n return\n abi.decode(\n _vault.unlock(abi.encodeCall(RouterMock.manualAddAndRemoveLiquidityHook, params)),\n (uint256[], uint256, uint256, uint256[])\n );\n }\n\n function manualAddAndRemoveLiquidityHook(\n ManualAddRemoveLiquidityParams calldata params\n )\n external\n returns (uint256[] memory amountsIn, uint256 bptAmountOut, uint256 bptAmountIn, uint256[] memory amountsOut)\n {\n (amountsIn, bptAmountOut, ) = _vault.addLiquidity(\n AddLiquidityParams({\n pool: params.pool,\n to: params.sender,\n maxAmountsIn: params.maxAmountsIn,\n minBptAmountOut: params.minBptAmountOut,\n kind: AddLiquidityKind.PROPORTIONAL,\n userData: bytes(\"\")\n })\n );\n\n // maxAmountsIn length is checked against tokens length at the Vault.\n IERC20[] memory tokens = _vault.getPoolTokens(params.pool);\n\n for (uint256 i = 0; i < tokens.length; ++i) {\n IERC20 token = tokens[i];\n uint256 amountIn = amountsIn[i];\n if (amountIn == 0) {\n continue;\n }\n\n // Any value over MAX_UINT128 would revert above in `addLiquidity`, so this SafeCast shouldn't be\n // necessary. Done out of an abundance of caution.\n _permit2.transferFrom(params.sender, address(_vault), amountIn.toUint160(), address(token));\n _vault.settle(token, amountIn);\n }\n\n (bptAmountIn, amountsOut, ) = _vault.removeLiquidity(\n RemoveLiquidityParams({\n pool: params.pool,\n from: params.sender,\n maxBptAmountIn: IERC20(params.pool).balanceOf(params.sender),\n minAmountsOut: new uint256[](tokens.length),\n kind: RemoveLiquidityKind.PROPORTIONAL,\n userData: bytes(\"\")\n })\n );\n\n for (uint256 i = 0; i < tokens.length; ++i) {\n IERC20 token = tokens[i];\n uint256 amountOut = amountsOut[i];\n if (amountOut == 0) {\n continue;\n }\n\n // Transfer the token to the sender (amountOut).\n _vault.sendTo(token, params.sender, amountOut);\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\n\nimport { IVaultAdminMock } from \"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { PackedTokenBalance } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\";\n\nimport { VaultAdmin } from \"../VaultAdmin.sol\";\n\ncontract VaultAdminMock is IVaultAdminMock, VaultAdmin {\n using PackedTokenBalance for bytes32;\n\n constructor(\n IVault mainVault,\n uint32 pauseWindowDuration,\n uint32 bufferPeriodDuration,\n uint256 minTradeAmount,\n uint256 minWrapAmount\n ) VaultAdmin(mainVault, pauseWindowDuration, bufferPeriodDuration, minTradeAmount, minWrapAmount) {}\n\n function manualPauseVault() external {\n _setVaultPaused(true);\n }\n\n function manualUnpauseVault() external {\n _setVaultPaused(false);\n }\n\n function manualPausePool(address pool) external {\n _poolRoleAccounts[pool].pauseManager = msg.sender;\n _setPoolPaused(pool, true);\n }\n\n function manualUnpausePool(address pool) external {\n _poolRoleAccounts[pool].pauseManager = msg.sender;\n _setPoolPaused(pool, false);\n }\n\n function manualEnableRecoveryMode(address pool) external {\n _ensurePoolNotInRecoveryMode(pool);\n _setPoolRecoveryMode(pool, true);\n }\n\n function manualDisableRecoveryMode(address pool) external {\n _ensurePoolInRecoveryMode(pool);\n _setPoolRecoveryMode(pool, false);\n }\n\n function manualReentrancyInitializeBuffer(\n IERC4626 wrappedToken,\n uint256 amountUnderlying,\n uint256 amountWrapped,\n uint256 minIssuedShares,\n address sharesOwner\n ) external nonReentrant {\n IVault(address(this)).initializeBuffer(\n wrappedToken,\n amountUnderlying,\n amountWrapped,\n minIssuedShares,\n sharesOwner\n );\n }\n\n /// @dev Adds liquidity to buffer unbalanced, so it can unbalance the buffer.\n function addLiquidityToBufferUnbalancedForTests(\n IERC4626 wrappedToken,\n uint256 underlyingAmount,\n uint256 wrappedAmount\n ) public {\n bytes32 bufferBalances = _bufferTokenBalances[wrappedToken];\n\n if (underlyingAmount > 0) {\n IERC20(wrappedToken.asset()).transferFrom(msg.sender, address(this), underlyingAmount);\n _reservesOf[IERC20(wrappedToken.asset())] += underlyingAmount;\n // Issued shares amount = underlying amount.\n _bufferTotalShares[wrappedToken] += underlyingAmount;\n _bufferLpShares[wrappedToken][msg.sender] += underlyingAmount;\n }\n if (wrappedAmount > 0) {\n IERC20(address(wrappedToken)).transferFrom(msg.sender, address(this), wrappedAmount);\n _reservesOf[IERC20(address(wrappedToken))] += wrappedAmount;\n uint256 issuedSharesAmount = wrappedToken.previewRedeem(wrappedAmount);\n _bufferTotalShares[wrappedToken] += issuedSharesAmount;\n _bufferLpShares[wrappedToken][msg.sender] += issuedSharesAmount;\n }\n\n bufferBalances = PackedTokenBalance.toPackedBalance(\n bufferBalances.getBalanceRaw() + underlyingAmount,\n bufferBalances.getBalanceDerived() + wrappedAmount\n );\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n }\n\n function manualReentrancyAddLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 maxAmountUnderlyingInRaw,\n uint256 maxAmountWrappedInRaw,\n uint256 exactSharesToIssue,\n address sharesOwner\n ) external nonReentrant {\n IVault(address(this)).addLiquidityToBuffer(\n wrappedToken,\n maxAmountUnderlyingInRaw,\n maxAmountWrappedInRaw,\n exactSharesToIssue,\n sharesOwner\n );\n }\n\n function manualReentrancyRemoveLiquidityFromBufferHook(\n IERC4626 wrappedToken,\n uint256 sharesToRemove,\n uint256 minAmountUnderlyingOut,\n uint256 minAmountWrappedOut,\n address sharesOwner\n ) external nonReentrant {\n this.removeLiquidityFromBufferHook(\n wrappedToken,\n sharesToRemove,\n minAmountUnderlyingOut,\n minAmountWrappedOut,\n sharesOwner\n );\n }\n\n function manualReentrancyDisableRecoveryMode(address pool) external nonReentrant {\n this.disableRecoveryMode(pool);\n }\n\n function mockWithValidPercentage(uint256 percentage) external pure withValidPercentage(percentage) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function mockEnsurePoolNotInRecoveryMode(address pool) external view {\n _ensurePoolNotInRecoveryMode(pool);\n }\n\n function manualMintBufferShares(IERC4626 wrappedToken, address to, uint256 amount) external {\n _mintBufferShares(wrappedToken, to, amount);\n }\n\n function manualBurnBufferShares(IERC4626 wrappedToken, address from, uint256 amount) external {\n _burnBufferShares(wrappedToken, from, amount);\n }\n\n function manualMintMinimumBufferSupplyReserve(IERC4626 wrappedToken) external {\n _mintMinimumBufferSupplyReserve(wrappedToken);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport {\n TokenConfig,\n PoolRoleAccounts,\n LiquidityManagement\n} from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IVaultExtensionMock } from \"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol\";\nimport { IVaultAdmin } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { PoolConfigLib, PoolConfigBits } from \"../lib/PoolConfigLib.sol\";\nimport { VaultExtension } from \"../VaultExtension.sol\";\n\ncontract VaultExtensionMock is IVaultExtensionMock, VaultExtension {\n using PoolConfigLib for PoolConfigBits;\n\n constructor(IVault vault, IVaultAdmin vaultAdmin) VaultExtension(vault, vaultAdmin) {}\n\n function mockExtensionHash(bytes calldata input) external payable returns (bytes32) {\n return keccak256(input);\n }\n\n function manuallySetSwapFee(address pool, uint256 newSwapFee) external {\n _poolConfigBits[pool] = _poolConfigBits[pool].setStaticSwapFeePercentage(newSwapFee);\n }\n\n function manualRegisterPoolReentrancy(\n address pool,\n TokenConfig[] memory tokenConfig,\n uint256 swapFeePercentage,\n uint32 pauseWindowEndTime,\n bool protocolFeeExempt,\n PoolRoleAccounts calldata roleAccounts,\n address poolHooksContract,\n LiquidityManagement calldata liquidityManagement\n ) external nonReentrant {\n IVault(address(this)).registerPool(\n pool,\n tokenConfig,\n swapFeePercentage,\n pauseWindowEndTime,\n protocolFeeExempt,\n roleAccounts,\n poolHooksContract,\n liquidityManagement\n );\n }\n\n function manualInitializePoolReentrancy(\n address pool,\n address to,\n IERC20[] memory tokens,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bytes memory userData\n ) external nonReentrant {\n IVault(address(this)).initialize(pool, to, tokens, exactAmountsIn, minBptAmountOut, userData);\n }\n}\n"},"@balancer-labs/v3-vault/contracts/test/VaultMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IProtocolFeeController } from \"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\";\nimport { IRateProvider } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\";\nimport { IVaultExtension } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\";\nimport { IVaultMainMock } from \"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol\";\nimport { IAuthorizer } from \"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\";\nimport { IVaultAdmin } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport { IHooks } from \"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { StorageSlotExtension } from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\";\nimport { PackedTokenBalance } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\";\nimport { BufferHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol\";\nimport {\n TransientStorageHelpers,\n TokenDeltaMappingSlotType\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\nimport { WordCodec } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\";\n\nimport { VaultStateLib, VaultStateBits } from \"../lib/VaultStateLib.sol\";\nimport { PoolConfigLib, PoolConfigBits } from \"../lib/PoolConfigLib.sol\";\nimport { HooksConfigLib } from \"../lib/HooksConfigLib.sol\";\nimport { InputHelpersMock } from \"./InputHelpersMock.sol\";\nimport { PoolFactoryMock } from \"./PoolFactoryMock.sol\";\nimport { VaultExtension } from \"../VaultExtension.sol\";\nimport { PoolConfigConst } from \"../lib/PoolConfigConst.sol\";\nimport { PoolDataLib } from \"../lib/PoolDataLib.sol\";\nimport { Vault } from \"../Vault.sol\";\n\nstruct SwapInternalStateLocals {\n VaultSwapParams vaultSwapParams;\n SwapState swapState;\n PoolData poolData;\n VaultState vaultState;\n}\n\ncontract VaultMock is IVaultMainMock, Vault {\n using PackedTokenBalance for bytes32;\n using PoolConfigLib for PoolConfigBits;\n using HooksConfigLib for PoolConfigBits;\n using VaultStateLib for VaultStateBits;\n using BufferHelpers for bytes32;\n using PoolDataLib for PoolData;\n using TransientStorageHelpers for *;\n using StorageSlotExtension for *;\n using WordCodec for bytes32;\n\n PoolFactoryMock private immutable _poolFactoryMock;\n InputHelpersMock private immutable _inputHelpersMock;\n\n constructor(\n IVaultExtension vaultExtension,\n IAuthorizer authorizer,\n IProtocolFeeController protocolFeeController\n ) Vault(vaultExtension, authorizer, protocolFeeController) {\n uint32 pauseWindowEndTime = IVaultAdmin(address(vaultExtension)).getPauseWindowEndTime();\n uint32 bufferPeriodDuration = IVaultAdmin(address(vaultExtension)).getBufferPeriodDuration();\n _poolFactoryMock = new PoolFactoryMock(IVault(address(this)), pauseWindowEndTime - bufferPeriodDuration);\n _inputHelpersMock = new InputHelpersMock();\n }\n\n function getPoolFactoryMock() external view returns (address) {\n return address(_poolFactoryMock);\n }\n\n function burnERC20(address token, address from, uint256 amount) external {\n _burn(token, from, amount);\n }\n\n function mintERC20(address token, address to, uint256 amount) external {\n _mint(token, to, amount);\n }\n\n // Used for testing pool registration, which is ordinarily done in the pool factory.\n // The Mock pool has an argument for whether or not to register on deployment. To call register pool\n // separately, deploy it with the registration flag false, then call this function.\n function manualRegisterPool(address pool, IERC20[] memory tokens) external whenVaultNotPaused {\n PoolRoleAccounts memory roleAccounts;\n\n _poolFactoryMock.registerPool(\n pool,\n buildTokenConfig(tokens),\n roleAccounts,\n address(0), // No hook contract\n _getDefaultLiquidityManagement()\n );\n }\n\n function manualRegisterPoolWithSwapFee(\n address pool,\n IERC20[] memory tokens,\n uint256 swapFeePercentage\n ) external whenVaultNotPaused {\n LiquidityManagement memory liquidityManagement = _getDefaultLiquidityManagement();\n liquidityManagement.disableUnbalancedLiquidity = true;\n\n _poolFactoryMock.registerPoolWithSwapFee(\n pool,\n buildTokenConfig(tokens),\n swapFeePercentage,\n address(0), // No hook contract\n liquidityManagement\n );\n }\n\n function manualRegisterPoolPassThruTokens(address pool, IERC20[] memory tokens) external {\n TokenConfig[] memory tokenConfig = new TokenConfig[](tokens.length);\n PoolRoleAccounts memory roleAccounts;\n\n for (uint256 i = 0; i < tokens.length; ++i) {\n tokenConfig[i].token = tokens[i];\n }\n\n _poolFactoryMock.registerPool(\n pool,\n tokenConfig,\n roleAccounts,\n address(0), // No hook contract\n _getDefaultLiquidityManagement()\n );\n }\n\n function manualRegisterPoolAtTimestamp(\n address pool,\n IERC20[] memory tokens,\n uint32 timestamp,\n PoolRoleAccounts memory roleAccounts\n ) external whenVaultNotPaused {\n _poolFactoryMock.registerPoolAtTimestamp(\n pool,\n buildTokenConfig(tokens),\n timestamp,\n roleAccounts,\n address(0), // No hook contract\n _getDefaultLiquidityManagement()\n );\n }\n\n function manualSetPoolRegistered(address pool, bool status) public {\n _poolConfigBits[pool] = _poolConfigBits[pool].setPoolRegistered(status);\n }\n\n function manualSetInitializedPool(address pool, bool isPoolInitialized) public {\n _poolConfigBits[pool] = _poolConfigBits[pool].setPoolInitialized(isPoolInitialized);\n }\n\n function manualSetPoolPauseWindowEndTime(address pool, uint32 pauseWindowEndTime) public {\n _poolConfigBits[pool] = _poolConfigBits[pool].setPauseWindowEndTime(pauseWindowEndTime);\n }\n\n function manualSetPoolPaused(address pool, bool isPoolPaused) public {\n _poolConfigBits[pool] = _poolConfigBits[pool].setPoolPaused(isPoolPaused);\n }\n\n function manualSetVaultPaused(bool isVaultPaused) public {\n _vaultStateBits = _vaultStateBits.setVaultPaused(isVaultPaused);\n }\n\n function manualSetVaultState(bool isVaultPaused, bool isQueryDisabled) public {\n _vaultStateBits = _vaultStateBits.setVaultPaused(isVaultPaused).setQueryDisabled(isQueryDisabled);\n }\n\n function manualSetPoolConfig(address pool, PoolConfig memory config) public {\n PoolConfigBits poolConfigBits = _poolConfigBits[pool];\n\n poolConfigBits = poolConfigBits.setPoolRegistered(config.isPoolRegistered);\n poolConfigBits = poolConfigBits.setPoolInitialized(config.isPoolInitialized);\n poolConfigBits = poolConfigBits.setPoolInRecoveryMode(config.isPoolInRecoveryMode);\n poolConfigBits = poolConfigBits.setPoolPaused(config.isPoolPaused);\n poolConfigBits = poolConfigBits.setStaticSwapFeePercentage(config.staticSwapFeePercentage);\n poolConfigBits = _manualSetAggregateSwapFeePercentage(poolConfigBits, config.aggregateSwapFeePercentage);\n poolConfigBits = poolConfigBits.setAggregateYieldFeePercentage(config.aggregateYieldFeePercentage);\n poolConfigBits = poolConfigBits.setTokenDecimalDiffs(config.tokenDecimalDiffs);\n poolConfigBits = poolConfigBits.setPauseWindowEndTime(config.pauseWindowEndTime);\n poolConfigBits = poolConfigBits.setDisableUnbalancedLiquidity(\n config.liquidityManagement.disableUnbalancedLiquidity\n );\n poolConfigBits = poolConfigBits.setAddLiquidityCustom(config.liquidityManagement.enableAddLiquidityCustom);\n poolConfigBits = poolConfigBits.setRemoveLiquidityCustom(\n config.liquidityManagement.enableRemoveLiquidityCustom\n );\n poolConfigBits = poolConfigBits.setDonation(config.liquidityManagement.enableDonation);\n\n _poolConfigBits[pool] = poolConfigBits;\n }\n\n function manualSetStaticSwapFeePercentage(address pool, uint256 value) public {\n _setStaticSwapFeePercentage(pool, value);\n }\n\n function manualUnsafeSetStaticSwapFeePercentage(address pool, uint256 value) public {\n _poolConfigBits[pool] = _poolConfigBits[pool].setStaticSwapFeePercentage(value);\n }\n\n function manualSetHooksConfig(address pool, HooksConfig memory hooksConfig) public {\n PoolConfigBits poolConfigBits = _poolConfigBits[pool];\n\n poolConfigBits = poolConfigBits.setHookAdjustedAmounts(hooksConfig.enableHookAdjustedAmounts);\n poolConfigBits = poolConfigBits.setShouldCallBeforeInitialize(hooksConfig.shouldCallBeforeInitialize);\n poolConfigBits = poolConfigBits.setShouldCallAfterInitialize(hooksConfig.shouldCallAfterInitialize);\n poolConfigBits = poolConfigBits.setShouldCallComputeDynamicSwapFee(hooksConfig.shouldCallComputeDynamicSwapFee);\n poolConfigBits = poolConfigBits.setShouldCallBeforeSwap(hooksConfig.shouldCallBeforeSwap);\n poolConfigBits = poolConfigBits.setShouldCallAfterSwap(hooksConfig.shouldCallAfterSwap);\n poolConfigBits = poolConfigBits.setShouldCallBeforeAddLiquidity(hooksConfig.shouldCallBeforeAddLiquidity);\n poolConfigBits = poolConfigBits.setShouldCallAfterAddLiquidity(hooksConfig.shouldCallAfterAddLiquidity);\n poolConfigBits = poolConfigBits.setShouldCallBeforeRemoveLiquidity(hooksConfig.shouldCallBeforeRemoveLiquidity);\n poolConfigBits = poolConfigBits.setShouldCallAfterRemoveLiquidity(hooksConfig.shouldCallAfterRemoveLiquidity);\n\n _poolConfigBits[pool] = poolConfigBits;\n _hooksContracts[pool] = IHooks(hooksConfig.hooksContract);\n }\n\n function manualSetPoolConfigBits(address pool, PoolConfigBits config) public {\n _poolConfigBits[pool] = config;\n }\n\n function manualSetPoolTokenInfo(address pool, TokenConfig[] memory tokenConfig) public {\n for (uint256 i = 0; i < tokenConfig.length; ++i) {\n _poolTokenInfo[pool][tokenConfig[i].token] = TokenInfo({\n tokenType: tokenConfig[i].tokenType,\n rateProvider: tokenConfig[i].rateProvider,\n paysYieldFees: tokenConfig[i].paysYieldFees\n });\n }\n }\n\n function manualSetPoolTokenInfo(address pool, IERC20[] memory tokens, TokenInfo[] memory tokenInfo) public {\n for (uint256 i = 0; i < tokens.length; ++i) {\n _poolTokenInfo[pool][tokens[i]] = tokenInfo[i];\n }\n }\n\n function manualSetPoolTokens(address pool, IERC20[] memory tokens) public {\n _poolTokens[pool] = tokens;\n }\n\n function manualSetPoolTokensAndBalances(\n address pool,\n IERC20[] memory tokens,\n uint256[] memory tokenBalanceRaw,\n uint256[] memory tokenBalanceLiveScaled18\n ) public {\n require(tokens.length == tokenBalanceRaw.length, \"VaultMock: TOKENS_LENGTH_MISMATCH\");\n require(tokens.length == tokenBalanceLiveScaled18.length, \"VaultMock: TOKENS_LENGTH_MISMATCH\");\n\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances = _poolTokenBalances[pool];\n for (uint256 i = 0; i < tokens.length; ++i) {\n poolTokenBalances[i] = PackedTokenBalance.toPackedBalance(tokenBalanceRaw[i], tokenBalanceLiveScaled18[i]);\n }\n\n _poolTokens[pool] = tokens;\n }\n\n function manualSetPoolBalances(\n address pool,\n uint256[] memory tokenBalanceRaw,\n uint256[] memory tokenBalanceLiveScaled18\n ) public {\n IERC20[] memory tokens = _poolTokens[pool];\n\n require(tokens.length == tokenBalanceRaw.length, \"VaultMock: TOKENS_LENGTH_MISMATCH\");\n require(tokens.length == tokenBalanceLiveScaled18.length, \"VaultMock: TOKENS_LENGTH_MISMATCH\");\n\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances = _poolTokenBalances[pool];\n for (uint256 i = 0; i < tokens.length; ++i) {\n poolTokenBalances[i] = PackedTokenBalance.toPackedBalance(tokenBalanceRaw[i], tokenBalanceLiveScaled18[i]);\n }\n }\n\n function mockIsUnlocked() public view onlyWhenUnlocked {}\n\n function mockWithInitializedPool(address pool) public view withInitializedPool(pool) {}\n\n function ensurePoolNotPaused(address pool) public view {\n _ensurePoolNotPaused(pool);\n }\n\n function ensureUnpausedAndGetVaultState(address pool) public view returns (VaultState memory vaultState) {\n _ensureUnpaused(pool);\n VaultStateBits state = _vaultStateBits;\n vaultState = VaultState({\n isQueryDisabled: state.isQueryDisabled(),\n isVaultPaused: state.isVaultPaused(),\n areBuffersPaused: state.areBuffersPaused()\n });\n }\n\n function buildTokenConfig(IERC20[] memory tokens) public view returns (TokenConfig[] memory tokenConfig) {\n tokenConfig = new TokenConfig[](tokens.length);\n for (uint256 i = 0; i < tokens.length; ++i) {\n tokenConfig[i].token = tokens[i];\n }\n\n tokenConfig = _inputHelpersMock.sortTokenConfig(tokenConfig);\n }\n\n function buildTokenConfig(\n IERC20[] memory tokens,\n IRateProvider[] memory rateProviders\n ) public view returns (TokenConfig[] memory tokenConfig) {\n tokenConfig = new TokenConfig[](tokens.length);\n for (uint256 i = 0; i < tokens.length; ++i) {\n tokenConfig[i].token = tokens[i];\n tokenConfig[i].rateProvider = rateProviders[i];\n tokenConfig[i].tokenType = rateProviders[i] == IRateProvider(address(0))\n ? TokenType.STANDARD\n : TokenType.WITH_RATE;\n }\n\n tokenConfig = _inputHelpersMock.sortTokenConfig(tokenConfig);\n }\n\n function buildTokenConfig(\n IERC20[] memory tokens,\n IRateProvider[] memory rateProviders,\n bool[] memory yieldFeeFlags\n ) public view returns (TokenConfig[] memory tokenConfig) {\n tokenConfig = new TokenConfig[](tokens.length);\n for (uint256 i = 0; i < tokens.length; ++i) {\n tokenConfig[i].token = tokens[i];\n tokenConfig[i].rateProvider = rateProviders[i];\n tokenConfig[i].tokenType = rateProviders[i] == IRateProvider(address(0))\n ? TokenType.STANDARD\n : TokenType.WITH_RATE;\n tokenConfig[i].paysYieldFees = yieldFeeFlags[i];\n }\n\n tokenConfig = _inputHelpersMock.sortTokenConfig(tokenConfig);\n }\n\n function buildTokenConfig(\n IERC20[] memory tokens,\n TokenType[] memory tokenTypes,\n IRateProvider[] memory rateProviders,\n bool[] memory yieldFeeFlags\n ) public view returns (TokenConfig[] memory tokenConfig) {\n tokenConfig = new TokenConfig[](tokens.length);\n for (uint256 i = 0; i < tokens.length; ++i) {\n tokenConfig[i].token = tokens[i];\n tokenConfig[i].tokenType = tokenTypes[i];\n tokenConfig[i].rateProvider = rateProviders[i];\n tokenConfig[i].paysYieldFees = yieldFeeFlags[i];\n }\n\n tokenConfig = _inputHelpersMock.sortTokenConfig(tokenConfig);\n }\n\n function recoveryModeExit(address pool) external view onlyInRecoveryMode(pool) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function loadPoolDataUpdatingBalancesAndYieldFees(\n address pool,\n Rounding roundingDirection\n ) external returns (PoolData memory) {\n return _loadPoolDataUpdatingBalancesAndYieldFees(pool, roundingDirection);\n }\n\n function loadPoolDataUpdatingBalancesAndYieldFeesReentrancy(\n address pool,\n Rounding roundingDirection\n ) external nonReentrant returns (PoolData memory) {\n return _loadPoolDataUpdatingBalancesAndYieldFees(pool, roundingDirection);\n }\n\n function updateLiveTokenBalanceInPoolData(\n PoolData memory poolData,\n uint256 newRawBalance,\n Rounding roundingDirection,\n uint256 tokenIndex\n ) external pure returns (PoolData memory) {\n _updateRawAndLiveTokenBalancesInPoolData(poolData, newRawBalance, roundingDirection, tokenIndex);\n return poolData;\n }\n\n function computeYieldFeesDue(\n PoolData memory poolData,\n uint256 lastLiveBalance,\n uint256 tokenIndex,\n uint256 aggregateYieldFeePercentage\n ) external pure returns (uint256) {\n return PoolDataLib._computeYieldFeesDue(poolData, lastLiveBalance, tokenIndex, aggregateYieldFeePercentage);\n }\n\n function manualWritePoolBalancesToStorage(address pool, PoolData memory poolData) external {\n _writePoolBalancesToStorage(pool, poolData);\n }\n\n function getRawBalances(address pool) external view returns (uint256[] memory balancesRaw) {\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances = _poolTokenBalances[pool];\n\n uint256 numTokens = _poolTokens[pool].length;\n balancesRaw = new uint256[](numTokens);\n\n for (uint256 i = 0; i < numTokens; ++i) {\n balancesRaw[i] = poolTokenBalances[i].getBalanceRaw();\n }\n }\n\n function getLastLiveBalances(address pool) external view returns (uint256[] memory lastBalancesLiveScaled18) {\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances = _poolTokenBalances[pool];\n\n uint256 numTokens = _poolTokens[pool].length;\n lastBalancesLiveScaled18 = new uint256[](numTokens);\n\n for (uint256 i = 0; i < numTokens; ++i) {\n lastBalancesLiveScaled18[i] = poolTokenBalances[i].getBalanceDerived();\n }\n }\n\n function guardedCheckEntered() external nonReentrant {\n require(reentrancyGuardEntered());\n }\n\n function unguardedCheckNotEntered() external view {\n require(!reentrancyGuardEntered());\n }\n\n function accountDelta(IERC20 token, int256 delta) external {\n _accountDelta(token, delta);\n }\n\n function supplyCredit(IERC20 token, uint256 credit) external {\n _supplyCredit(token, credit);\n }\n\n function takeDebt(IERC20 token, uint256 debt) external {\n _takeDebt(token, debt);\n }\n\n function manualSetAccountDelta(IERC20 token, int256 delta) external {\n _tokenDeltas().tSet(token, delta);\n }\n\n function manualSetNonZeroDeltaCount(uint256 deltaCount) external {\n _nonZeroDeltaCount().tstore(deltaCount);\n }\n\n function manualSetReservesOf(IERC20 token, uint256 reserves) external {\n _reservesOf[token] = reserves;\n }\n\n function manualInternalSwap(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory state,\n PoolData memory poolData\n )\n external\n returns (\n uint256 amountCalculatedRaw,\n uint256 amountCalculatedScaled18,\n uint256 amountIn,\n uint256 amountOut,\n VaultSwapParams memory,\n SwapState memory,\n PoolData memory\n )\n {\n PoolSwapParams memory poolSwapParams = _buildPoolSwapParams(vaultSwapParams, state, poolData);\n\n (amountCalculatedRaw, amountCalculatedScaled18, amountIn, amountOut) = _swap(\n vaultSwapParams,\n state,\n poolData,\n poolSwapParams\n );\n\n return (amountCalculatedRaw, amountCalculatedScaled18, amountIn, amountOut, vaultSwapParams, state, poolData);\n }\n\n function manualReentrancySwap(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory state,\n PoolData memory poolData\n ) external nonReentrant {\n PoolSwapParams memory poolSwapParams = _buildPoolSwapParams(vaultSwapParams, state, poolData);\n _swap(vaultSwapParams, state, poolData, poolSwapParams);\n }\n\n function manualGetAggregateSwapFeeAmount(address pool, IERC20 token) external view returns (uint256) {\n return _aggregateFeeAmounts[pool][token].getBalanceRaw();\n }\n\n function manualGetAggregateYieldFeeAmount(address pool, IERC20 token) external view returns (uint256) {\n return _aggregateFeeAmounts[pool][token].getBalanceDerived();\n }\n\n function manualSetAggregateSwapFeeAmount(address pool, IERC20 token, uint256 value) external {\n _aggregateFeeAmounts[pool][token] = _aggregateFeeAmounts[pool][token].setBalanceRaw(value);\n }\n\n function manualSetAggregateYieldFeeAmount(address pool, IERC20 token, uint256 value) external {\n _aggregateFeeAmounts[pool][token] = _aggregateFeeAmounts[pool][token].setBalanceDerived(value);\n }\n\n function manualSetAggregateSwapFeePercentage(address pool, uint256 value) external {\n _poolConfigBits[pool] = _poolConfigBits[pool].setAggregateSwapFeePercentage(value);\n }\n\n function manualSetAggregateYieldFeePercentage(address pool, uint256 value) external {\n _poolConfigBits[pool] = _poolConfigBits[pool].setAggregateYieldFeePercentage(value);\n }\n\n function manualBuildPoolSwapParams(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory state,\n PoolData memory poolData\n ) external view returns (PoolSwapParams memory) {\n return _buildPoolSwapParams(vaultSwapParams, state, poolData);\n }\n\n function manualComputeAndChargeAggregateSwapFees(\n PoolData memory poolData,\n uint256 totalSwapFeeAmountScaled18,\n address pool,\n IERC20 token,\n uint256 index\n ) external returns (uint256 totalSwapFeeAmountRaw, uint256 aggregateSwapFeeAmountRaw) {\n return _computeAndChargeAggregateSwapFees(poolData, totalSwapFeeAmountScaled18, pool, token, index);\n }\n\n function manualUpdatePoolDataLiveBalancesAndRates(\n address pool,\n PoolData memory poolData,\n Rounding roundingDirection\n ) external view returns (PoolData memory) {\n poolData.reloadBalancesAndRates(_poolTokenBalances[pool], roundingDirection);\n\n return poolData;\n }\n\n function manualAddLiquidity(\n PoolData memory poolData,\n AddLiquidityParams memory params,\n uint256[] memory maxAmountsInScaled18\n )\n external\n returns (\n PoolData memory updatedPoolData,\n uint256[] memory amountsInRaw,\n uint256[] memory amountsInScaled18,\n uint256 bptAmountOut,\n bytes memory returnData\n )\n {\n bytes32 paramsHashBefore = keccak256(abi.encode(params));\n\n (amountsInRaw, amountsInScaled18, bptAmountOut, returnData) = _addLiquidity(\n poolData,\n params,\n maxAmountsInScaled18\n );\n\n require(paramsHashBefore == keccak256(abi.encode(params)), \"Input parameters have changed\");\n\n updatedPoolData = poolData;\n }\n\n function manualReentrancyAddLiquidity(\n PoolData memory poolData,\n AddLiquidityParams memory params,\n uint256[] memory maxAmountsInScaled18\n ) external nonReentrant {\n _addLiquidity(poolData, params, maxAmountsInScaled18);\n }\n\n function manualRemoveLiquidity(\n PoolData memory poolData,\n RemoveLiquidityParams memory params,\n uint256[] memory minAmountsOutScaled18\n )\n external\n returns (\n PoolData memory updatedPoolData,\n uint256 bptAmountIn,\n uint256[] memory amountsOutRaw,\n uint256[] memory amountsOutScaled18,\n bytes memory returnData\n )\n {\n bytes32 paramsHashBefore = keccak256(abi.encode(params));\n\n (bptAmountIn, amountsOutRaw, amountsOutScaled18, returnData) = _removeLiquidity(\n poolData,\n params,\n minAmountsOutScaled18\n );\n\n require(paramsHashBefore == keccak256(abi.encode(params)), \"Input parameters have changed\");\n\n updatedPoolData = poolData;\n }\n\n function manualReentrancyRemoveLiquidity(\n PoolData memory poolData,\n RemoveLiquidityParams memory params,\n uint256[] memory minAmountsOutScaled18\n ) external nonReentrant {\n _removeLiquidity(poolData, params, minAmountsOutScaled18);\n }\n\n function internalGetBufferUnderlyingImbalance(IERC4626 wrappedToken) external view returns (int256) {\n bytes32 bufferBalance = _bufferTokenBalances[wrappedToken];\n return bufferBalance.getBufferUnderlyingImbalance(wrappedToken);\n }\n\n function internalGetBufferWrappedImbalance(IERC4626 wrappedToken) external view returns (int256) {\n bytes32 bufferBalance = _bufferTokenBalances[wrappedToken];\n return bufferBalance.getBufferWrappedImbalance(wrappedToken);\n }\n\n function getBufferTokenBalancesBytes(IERC4626 wrappedToken) external view returns (bytes32) {\n return _bufferTokenBalances[wrappedToken];\n }\n\n function manualSettleWrap(\n IERC20 underlyingToken,\n IERC20 wrappedToken,\n uint256 underlyingHint,\n uint256 wrappedHint\n ) external {\n _settleWrap(underlyingToken, wrappedToken, underlyingHint, wrappedHint);\n }\n\n function manualSettleUnwrap(\n IERC20 underlyingToken,\n IERC20 wrappedToken,\n uint256 underlyingHint,\n uint256 wrappedHint\n ) external {\n _settleUnwrap(underlyingToken, wrappedToken, underlyingHint, wrappedHint);\n }\n\n function manualTransfer(IERC20 token, address to, uint256 amount) external {\n token.transfer(to, amount);\n }\n\n function forceUnlock() public {\n _isUnlocked().tstore(true);\n }\n\n function forceLock() public {\n _isUnlocked().tstore(false);\n }\n\n function manualGetPoolConfigBits(address pool) external view returns (PoolConfigBits) {\n return _poolConfigBits[pool];\n }\n\n function manualGetIsUnlocked() external view returns (StorageSlotExtension.BooleanSlotType slot) {\n return _isUnlocked();\n }\n\n function manualGetNonzeroDeltaCount() external view returns (StorageSlotExtension.Uint256SlotType slot) {\n return _nonZeroDeltaCount();\n }\n\n function manualGetTokenDeltas() external view returns (TokenDeltaMappingSlotType slot) {\n return _tokenDeltas();\n }\n\n function manualSetBufferAsset(IERC4626 wrappedToken, address underlyingToken) external {\n _bufferAssets[wrappedToken] = underlyingToken;\n }\n\n function manualSetBufferOwnerShares(IERC4626 wrappedToken, address owner, uint256 shares) external {\n _bufferLpShares[wrappedToken][owner] = shares;\n }\n\n function manualSetBufferTotalShares(IERC4626 wrappedToken, uint256 shares) external {\n _bufferTotalShares[wrappedToken] = shares;\n }\n\n function manualSetBufferBalances(IERC4626 wrappedToken, uint256 underlyingAmount, uint256 wrappedAmount) external {\n _bufferTokenBalances[wrappedToken] = PackedTokenBalance.toPackedBalance(underlyingAmount, wrappedAmount);\n }\n\n function manualErc4626BufferWrapOrUnwrapReentrancy(\n BufferWrapOrUnwrapParams memory params\n ) external nonReentrant returns (uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw) {\n return IVault(address(this)).erc4626BufferWrapOrUnwrap(params);\n }\n\n function manualSettleReentrancy(IERC20 token) public nonReentrant returns (uint256 paid) {\n return IVault(address(this)).settle(token, 0);\n }\n\n function manualSendToReentrancy(IERC20 token, address to, uint256 amount) public nonReentrant {\n IVault(address(this)).sendTo(token, to, amount);\n }\n\n function manualFindTokenIndex(IERC20[] memory tokens, IERC20 token) public pure returns (uint256 index) {\n return _findTokenIndex(tokens, token);\n }\n\n function manualSetAddLiquidityCalledFlag(address pool, bool flag) public {\n _addLiquidityCalled().tSet(_sessionIdSlot().tload(), pool, flag);\n }\n\n function manualGetAddLiquidityCalledFlagBySession(address pool, uint256 sessionId) public view returns (bool) {\n return _addLiquidityCalled().tGet(sessionId, pool);\n }\n\n function manualGetCurrentUnlockSessionId() public view returns (uint256) {\n return _sessionIdSlot().tload();\n }\n\n function _getDefaultLiquidityManagement() private pure returns (LiquidityManagement memory) {\n LiquidityManagement memory liquidityManagement;\n liquidityManagement.enableAddLiquidityCustom = true;\n liquidityManagement.enableRemoveLiquidityCustom = true;\n return liquidityManagement;\n }\n\n function manualSetPoolCreator(address pool, address newPoolCreator) public {\n _poolRoleAccounts[pool].poolCreator = newPoolCreator;\n }\n\n function ensureValidTradeAmount(uint256 tradeAmount) external view {\n _ensureValidTradeAmount(tradeAmount);\n }\n\n function ensureValidSwapAmount(uint256 tradeAmount) external view {\n _ensureValidSwapAmount(tradeAmount);\n }\n\n function manualUpdateAggregateSwapFeePercentage(address pool, uint256 newAggregateSwapFeePercentage) external {\n _poolConfigBits[pool] = _manualSetAggregateSwapFeePercentage(\n _poolConfigBits[pool],\n newAggregateSwapFeePercentage\n );\n }\n\n function _manualSetAggregateSwapFeePercentage(\n PoolConfigBits config,\n uint256 value\n ) internal pure returns (PoolConfigBits) {\n value /= FEE_SCALING_FACTOR;\n\n return\n PoolConfigBits.wrap(\n PoolConfigBits.unwrap(config).insertUint(\n value,\n PoolConfigConst.AGGREGATE_SWAP_FEE_OFFSET,\n FEE_BITLENGTH\n )\n );\n }\n\n function previewDeposit(IERC4626 wrapper, uint256 amountInUnderlying) external returns (uint256 amountOutWrapped) {\n if (amountInUnderlying == 0 || wrapper.previewDeposit(amountInUnderlying - 1) == 0) {\n return 0;\n }\n\n (, amountOutWrapped, ) = _wrapWithBuffer(\n SwapKind.EXACT_IN,\n IERC20(wrapper.asset()),\n wrapper,\n amountInUnderlying\n );\n }\n\n function previewMint(IERC4626 wrapper, uint256 amountOutWrapped) external returns (uint256 amountInUnderlying) {\n if (amountOutWrapped == 0) {\n return 0;\n }\n\n (amountInUnderlying, , ) = _wrapWithBuffer(\n SwapKind.EXACT_OUT,\n IERC20(wrapper.asset()),\n wrapper,\n amountOutWrapped\n );\n }\n\n function previewRedeem(IERC4626 wrapper, uint256 amountInWrapped) external returns (uint256 amountOutUnderlying) {\n if (amountInWrapped == 0 || wrapper.previewRedeem(amountInWrapped - 1) == 0) {\n return 0;\n }\n\n (, amountOutUnderlying, ) = _unwrapWithBuffer(\n SwapKind.EXACT_IN,\n IERC20(wrapper.asset()),\n wrapper,\n amountInWrapped\n );\n }\n\n function previewWithdraw(IERC4626 wrapper, uint256 amountOutUnderlying) external returns (uint256 amountInWrapped) {\n if (amountOutUnderlying == 0) {\n return 0;\n }\n\n (amountInWrapped, , ) = _unwrapWithBuffer(\n SwapKind.EXACT_OUT,\n IERC20(wrapper.asset()),\n wrapper,\n amountOutUnderlying\n );\n }\n}\n"},"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20Errors } from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\n\nimport { IERC20MultiTokenErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\";\n\nimport { EVMCallModeHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\";\n\nimport { BalancerPoolToken } from \"../BalancerPoolToken.sol\";\n\n/**\n * @notice Store Token data and handle accounting for pool tokens in the Vault.\n * @dev The ERC20MultiToken is an ERC20-focused multi-token implementation that is fully compatible with the ERC20 API\n * on the token side. It also allows for the minting and burning of tokens on the multi-token side.\n */\nabstract contract ERC20MultiToken is IERC20Errors, IERC20MultiTokenErrors {\n // Minimum total supply amount.\n uint256 internal constant _POOL_MINIMUM_TOTAL_SUPPLY = 1e6;\n\n /**\n * @notice Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\n * @param pool The pool token being transferred\n * @param from The token source\n * @param to The token destination\n * @param value The number of tokens\n */\n event Transfer(address indexed pool, address indexed from, address indexed to, uint256 value);\n\n /**\n * @notice The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\n * @param pool The pool token receiving the allowance\n * @param owner The token holder\n * @param spender The account being authorized to spend a given amount of the token\n * @param value The number of tokens spender is authorized to transfer from owner\n */\n event Approval(address indexed pool, address indexed owner, address indexed spender, uint256 value);\n\n // Users' pool token (BPT) balances.\n mapping(address token => mapping(address owner => uint256 balance)) private _balances;\n\n // Users' pool token (BPT) allowances.\n mapping(address token => mapping(address owner => mapping(address spender => uint256 allowance)))\n private _allowances;\n\n // Total supply of all pool tokens (BPT). These are tokens minted and burned by the Vault.\n // The Vault balances of regular pool tokens are stored in `_reservesOf`.\n mapping(address token => uint256 totalSupply) private _totalSupplyOf;\n\n function _totalSupply(address pool) internal view returns (uint256) {\n return _totalSupplyOf[pool];\n }\n\n function _balanceOf(address pool, address account) internal view returns (uint256) {\n return _balances[pool][account];\n }\n\n function _allowance(address pool, address owner, address spender) internal view returns (uint256) {\n // Owner can spend anything without approval\n if (owner == spender) {\n return type(uint256).max;\n } else {\n return _allowances[pool][owner][spender];\n }\n }\n\n /**\n * @dev DO NOT CALL THIS METHOD!\n * Only `removeLiquidity` in the Vault may call this - in a query context - to allow burning tokens the caller\n * does not have.\n */\n function _queryModeBalanceIncrease(address pool, address to, uint256 amount) internal {\n // Enforce that this can only be called in a read-only, query context.\n if (EVMCallModeHelpers.isStaticCall() == false) {\n revert EVMCallModeHelpers.NotStaticCall();\n }\n\n // Increase `to` balance to ensure the burn function succeeds during query.\n _balances[address(pool)][to] += amount;\n }\n\n function _mint(address pool, address to, uint256 amount) internal {\n if (to == address(0)) {\n revert ERC20InvalidReceiver(to);\n }\n\n uint256 newTotalSupply = _totalSupplyOf[pool] + amount;\n unchecked {\n // Overflow is not possible. balance + amount is at most totalSupply + amount, which is checked above.\n _balances[pool][to] += amount;\n }\n\n _ensurePoolMinimumTotalSupply(newTotalSupply);\n\n _totalSupplyOf[pool] = newTotalSupply;\n\n emit Transfer(pool, address(0), to, amount);\n\n // We also emit the \"transfer\" event on the pool token to ensure full compliance with the ERC20 standard.\n BalancerPoolToken(pool).emitTransfer(address(0), to, amount);\n }\n\n function _ensurePoolMinimumTotalSupply(uint256 newTotalSupply) internal pure {\n if (newTotalSupply < _POOL_MINIMUM_TOTAL_SUPPLY) {\n revert PoolTotalSupplyTooLow(newTotalSupply);\n }\n }\n\n function _mintMinimumSupplyReserve(address pool) internal {\n _totalSupplyOf[pool] += _POOL_MINIMUM_TOTAL_SUPPLY;\n unchecked {\n // Overflow is not possible. balance + amount is at most totalSupply + amount, which is checked above.\n _balances[pool][address(0)] += _POOL_MINIMUM_TOTAL_SUPPLY;\n }\n emit Transfer(pool, address(0), address(0), _POOL_MINIMUM_TOTAL_SUPPLY);\n\n // We also emit the \"transfer\" event on the pool token to ensure full compliance with the ERC20 standard.\n BalancerPoolToken(pool).emitTransfer(address(0), address(0), _POOL_MINIMUM_TOTAL_SUPPLY);\n }\n\n function _burn(address pool, address from, uint256 amount) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(from);\n }\n\n uint256 accountBalance = _balances[pool][from];\n if (amount > accountBalance) {\n revert ERC20InsufficientBalance(from, accountBalance, amount);\n }\n\n unchecked {\n _balances[pool][from] = accountBalance - amount;\n }\n uint256 newTotalSupply = _totalSupplyOf[pool] - amount;\n\n _ensurePoolMinimumTotalSupply(newTotalSupply);\n\n _totalSupplyOf[pool] = newTotalSupply;\n\n // We also emit the \"transfer\" event on the pool token to ensure full compliance with the ERC20 standard.\n // If this function fails we keep going, as this is used in recovery mode.\n // Well-behaved pools will just emit an event here, so they should never fail.\n try BalancerPoolToken(pool).emitTransfer(from, address(0), amount) {} catch {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // Emit the internal event last to spend some gas after try / catch.\n emit Transfer(pool, from, address(0), amount);\n }\n\n function _transfer(address pool, address from, address to, uint256 amount) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(from);\n }\n\n if (to == address(0)) {\n revert ERC20InvalidReceiver(to);\n }\n\n uint256 fromBalance = _balances[pool][from];\n if (amount > fromBalance) {\n revert ERC20InsufficientBalance(from, fromBalance, amount);\n }\n\n unchecked {\n _balances[pool][from] = fromBalance - amount;\n // Overflow is not possible. The sum of all balances is capped by totalSupply, and that sum is preserved by\n // decrementing then incrementing.\n _balances[pool][to] += amount;\n }\n\n emit Transfer(pool, from, to, amount);\n\n // We also emit the \"transfer\" event on the pool token to ensure full compliance with the ERC20 standard.\n BalancerPoolToken(pool).emitTransfer(from, to, amount);\n }\n\n function _approve(address pool, address owner, address spender, uint256 amount) internal {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(owner);\n }\n\n if (spender == address(0)) {\n revert ERC20InvalidSpender(spender);\n }\n\n _allowances[pool][owner][spender] = amount;\n\n // We also emit the \"approve\" event on the pool token to ensure full compliance with the ERC20 standard.\n // If this function fails we keep going, as this is used in recovery mode.\n // Well-behaved pools will just emit an event here, so they should never fail.\n try BalancerPoolToken(pool).emitApproval(owner, spender, amount) {} catch {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n // Emit the internal event last to spend some gas after try / catch.\n emit Approval(pool, owner, spender, amount);\n }\n\n function _spendAllowance(address pool, address owner, address spender, uint256 amount) internal {\n uint256 currentAllowance = _allowance(pool, owner, spender);\n if (currentAllowance != type(uint256).max) {\n if (amount > currentAllowance) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, amount);\n }\n\n unchecked {\n _approve(pool, owner, spender, currentAllowance - amount);\n }\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/Vault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { Proxy } from \"@openzeppelin/contracts/proxy/Proxy.sol\";\n\nimport { IProtocolFeeController } from \"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\";\nimport { IVaultExtension } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\";\nimport { IPoolLiquidity } from \"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\";\nimport { IAuthorizer } from \"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\";\nimport { IVaultAdmin } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\";\nimport { IVaultMain } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\";\nimport { IBasePool } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\";\nimport { IHooks } from \"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { StorageSlotExtension } from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\";\nimport { PackedTokenBalance } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\";\nimport { ScalingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\";\nimport { CastingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\";\nimport { BufferHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol\";\nimport { InputHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\nimport {\n TransientStorageHelpers\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\nimport { VaultStateLib, VaultStateBits } from \"./lib/VaultStateLib.sol\";\nimport { HooksConfigLib } from \"./lib/HooksConfigLib.sol\";\nimport { PoolConfigLib } from \"./lib/PoolConfigLib.sol\";\nimport { PoolDataLib } from \"./lib/PoolDataLib.sol\";\nimport { BasePoolMath } from \"./BasePoolMath.sol\";\nimport { VaultCommon } from \"./VaultCommon.sol\";\n\ncontract Vault is IVaultMain, VaultCommon, Proxy {\n using PackedTokenBalance for bytes32;\n using BufferHelpers for bytes32;\n using InputHelpers for uint256;\n using FixedPoint for *;\n using Address for *;\n using CastingHelpers for uint256[];\n using SafeCast for *;\n using SafeERC20 for IERC20;\n using PoolConfigLib for PoolConfigBits;\n using HooksConfigLib for PoolConfigBits;\n using VaultStateLib for VaultStateBits;\n using ScalingHelpers for *;\n using TransientStorageHelpers for *;\n using StorageSlotExtension for *;\n using PoolDataLib for PoolData;\n\n // Local reference to the Proxy pattern Vault extension contract.\n IVaultExtension private immutable _vaultExtension;\n\n constructor(IVaultExtension vaultExtension, IAuthorizer authorizer, IProtocolFeeController protocolFeeController) {\n if (address(vaultExtension.vault()) != address(this)) {\n revert WrongVaultExtensionDeployment();\n }\n\n if (address(protocolFeeController.vault()) != address(this)) {\n revert WrongProtocolFeeControllerDeployment();\n }\n\n _vaultExtension = vaultExtension;\n _protocolFeeController = protocolFeeController;\n\n _vaultPauseWindowEndTime = IVaultAdmin(address(vaultExtension)).getPauseWindowEndTime();\n _vaultBufferPeriodDuration = IVaultAdmin(address(vaultExtension)).getBufferPeriodDuration();\n _vaultBufferPeriodEndTime = IVaultAdmin(address(vaultExtension)).getBufferPeriodEndTime();\n\n _MINIMUM_TRADE_AMOUNT = IVaultAdmin(address(vaultExtension)).getMinimumTradeAmount();\n _MINIMUM_WRAP_AMOUNT = IVaultAdmin(address(vaultExtension)).getMinimumWrapAmount();\n\n _authorizer = authorizer;\n }\n\n /*******************************************************************************\n Transient Accounting\n *******************************************************************************/\n\n /**\n * @dev This modifier is used for functions that temporarily modify the token deltas\n * of the Vault, but expect to revert or settle balances by the end of their execution.\n * It works by ensuring that the balances are properly settled by the time the last\n * operation is executed.\n *\n * This is useful for functions like `unlock`, which perform arbitrary external calls:\n * we can keep track of temporary deltas changes, and make sure they are settled by the\n * time the external call is complete.\n */\n modifier transient() {\n bool isUnlockedBefore = _isUnlocked().tload();\n\n if (isUnlockedBefore == false) {\n _isUnlocked().tstore(true);\n }\n\n // The caller does everything here and has to settle all outstanding balances.\n _;\n\n if (isUnlockedBefore == false) {\n if (_nonZeroDeltaCount().tload() != 0) {\n revert BalanceNotSettled();\n }\n\n _isUnlocked().tstore(false);\n\n // If a user adds liquidity to a pool, then does a proportional withdrawal from that pool during the same\n // interaction, the system charges a \"round-trip\" fee on the withdrawal. This fee makes it harder for an\n // user to add liquidity to a pool using a virtually infinite flash loan, swapping in the same pool in a way\n // that benefits him and removes liquidity in the same transaction, which is not a valid use case.\n //\n // Here we introduce the \"session\" concept, to prevent this fee from being charged accidentally. For\n // example, if an aggregator or account abstraction contract bundled several unrelated operations in the\n // same transaction that involved the same pool with different senders, the guardrail could be triggered\n // for a user doing a simple withdrawal. If proper limits were set, the whole transaction would revert,\n // and if they were not, the user would be unfairly \"taxed.\"\n //\n // Defining an \"interaction\" this way - as a single `unlock` call vs. an entire transaction - prevents the\n // guardrail from being triggered in the cases described above.\n\n // Increase session counter after locking the Vault.\n _sessionIdSlot().tIncrement();\n }\n }\n\n /// @inheritdoc IVaultMain\n function unlock(bytes calldata data) external transient returns (bytes memory result) {\n return (msg.sender).functionCall(data);\n }\n\n /// @inheritdoc IVaultMain\n function settle(IERC20 token, uint256 amountHint) external nonReentrant onlyWhenUnlocked returns (uint256 credit) {\n uint256 reservesBefore = _reservesOf[token];\n uint256 currentReserves = token.balanceOf(address(this));\n _reservesOf[token] = currentReserves;\n credit = currentReserves - reservesBefore;\n\n // If the given hint is equal or greater to the reserve difference, we just take the actual reserve difference\n // as the paid amount; the actual balance of the tokens in the Vault is what matters here.\n if (credit > amountHint) {\n // If the difference in reserves is higher than the amount claimed to be paid by the caller, there was some\n // leftover that had been sent to the Vault beforehand, which was not incorporated into the reserves.\n // In that case, we simply discard the leftover by considering the given hint as the amount paid.\n // In turn, this gives the caller credit for the given amount hint, which is what the caller is expecting.\n credit = amountHint;\n }\n\n _supplyCredit(token, credit);\n }\n\n /// @inheritdoc IVaultMain\n function sendTo(IERC20 token, address to, uint256 amount) external nonReentrant onlyWhenUnlocked {\n _takeDebt(token, amount);\n _reservesOf[token] -= amount;\n\n token.safeTransfer(to, amount);\n }\n\n /*******************************************************************************\n Pool Operations\n *******************************************************************************/\n\n // The Vault performs all upscaling and downscaling (due to token decimals, rates, etc.), so that the pools\n // don't have to. However, scaling inevitably leads to rounding errors, so we take great care to ensure that\n // any rounding errors favor the Vault. An important invariant of the system is that there is no repeatable\n // path where tokensOut > tokensIn.\n //\n // In general, this means rounding up any values entering the Vault, and rounding down any values leaving\n // the Vault, so that external users either pay a little extra or receive a little less in the case of a\n // rounding error.\n //\n // However, it's not always straightforward to determine the correct rounding direction, given the presence\n // and complexity of intermediate steps. An \"amountIn\" sounds like it should be rounded up: but only if that\n // is the amount actually being transferred. If instead it is an amount sent to the pool math, where rounding\n // up would result in a *higher* calculated amount out, that would favor the user instead of the Vault. So in\n // that case, amountIn should be rounded down.\n //\n // See comments justifying the rounding direction in each case.\n //\n // This reasoning applies to Weighted Pool math, and is likely to apply to others as well, but of course\n // it's possible a new pool type might not conform. Duplicate the tests for new pool types (e.g., Stable Math).\n // Also, the final code should ensure that we are not relying entirely on the rounding directions here,\n // but have enough additional layers (e.g., minimum amounts, buffer wei on all transfers) to guarantee safety,\n // even if it turns out these directions are incorrect for a new pool type.\n\n /*******************************************************************************\n Swaps\n *******************************************************************************/\n\n /// @inheritdoc IVaultMain\n function swap(\n VaultSwapParams memory vaultSwapParams\n )\n external\n onlyWhenUnlocked\n withInitializedPool(vaultSwapParams.pool)\n returns (uint256 amountCalculated, uint256 amountIn, uint256 amountOut)\n {\n _ensureUnpaused(vaultSwapParams.pool);\n\n if (vaultSwapParams.amountGivenRaw == 0) {\n revert AmountGivenZero();\n }\n\n if (vaultSwapParams.tokenIn == vaultSwapParams.tokenOut) {\n revert CannotSwapSameToken();\n }\n\n // `_loadPoolDataUpdatingBalancesAndYieldFees` is non-reentrant, as it updates storage as well\n // as filling in poolData in memory. Since the swap hooks are reentrant and could do anything, including\n // change these balances, we cannot defer settlement until `_swap`.\n //\n // Sets all fields in `poolData`. Side effects: updates `_poolTokenBalances`, `_aggregateFeeAmounts`\n // in storage.\n PoolData memory poolData = _loadPoolDataUpdatingBalancesAndYieldFees(vaultSwapParams.pool, Rounding.ROUND_DOWN);\n SwapState memory swapState = _loadSwapState(vaultSwapParams, poolData);\n PoolSwapParams memory poolSwapParams = _buildPoolSwapParams(vaultSwapParams, swapState, poolData);\n\n if (poolData.poolConfigBits.shouldCallBeforeSwap()) {\n HooksConfigLib.callBeforeSwapHook(\n poolSwapParams,\n vaultSwapParams.pool,\n _hooksContracts[vaultSwapParams.pool]\n );\n\n // The call to `onBeforeSwap` could potentially update token rates and balances.\n // We update `poolData.tokenRates`, `poolData.rawBalances` and `poolData.balancesLiveScaled18`\n // to ensure the `onSwap` and `onComputeDynamicSwapFeePercentage` are called with the current values.\n poolData.reloadBalancesAndRates(_poolTokenBalances[vaultSwapParams.pool], Rounding.ROUND_DOWN);\n\n // Also update amountGivenScaled18, as it will now be used in the swap, and the rates might have changed.\n swapState.amountGivenScaled18 = _computeAmountGivenScaled18(vaultSwapParams, poolData, swapState);\n\n poolSwapParams = _buildPoolSwapParams(vaultSwapParams, swapState, poolData);\n }\n\n // Note that this must be called *after* the before hook, to guarantee that the swap params are the same\n // as those passed to the main operation.\n //\n // At this point, the static swap fee percentage is loaded in the `swapState` as the default, to be used\n // unless the pool has a dynamic swap fee. It is also passed into the hook, to support common cases\n // where the dynamic fee computation logic uses it.\n if (poolData.poolConfigBits.shouldCallComputeDynamicSwapFee()) {\n swapState.swapFeePercentage = HooksConfigLib.callComputeDynamicSwapFeeHook(\n poolSwapParams,\n vaultSwapParams.pool,\n swapState.swapFeePercentage,\n _hooksContracts[vaultSwapParams.pool]\n );\n }\n\n // Non-reentrant call that updates accounting.\n // The following side-effects are important to note:\n // PoolData balancesRaw and balancesLiveScaled18 are adjusted for swap amounts and fees inside of _swap.\n uint256 amountCalculatedScaled18;\n (amountCalculated, amountCalculatedScaled18, amountIn, amountOut) = _swap(\n vaultSwapParams,\n swapState,\n poolData,\n poolSwapParams\n );\n\n // The new amount calculated is 'amountCalculated + delta'. If the underlying hook fails, or limits are\n // violated, `onAfterSwap` will revert. Uses msg.sender as the Router (the contract that called the Vault).\n if (poolData.poolConfigBits.shouldCallAfterSwap()) {\n // `hooksContract` needed to fix stack too deep.\n IHooks hooksContract = _hooksContracts[vaultSwapParams.pool];\n\n amountCalculated = poolData.poolConfigBits.callAfterSwapHook(\n amountCalculatedScaled18,\n amountCalculated,\n msg.sender,\n vaultSwapParams,\n swapState,\n poolData,\n hooksContract\n );\n }\n\n if (vaultSwapParams.kind == SwapKind.EXACT_IN) {\n amountOut = amountCalculated;\n } else {\n amountIn = amountCalculated;\n }\n }\n\n function _loadSwapState(\n VaultSwapParams memory vaultSwapParams,\n PoolData memory poolData\n ) private pure returns (SwapState memory swapState) {\n swapState.indexIn = _findTokenIndex(poolData.tokens, vaultSwapParams.tokenIn);\n swapState.indexOut = _findTokenIndex(poolData.tokens, vaultSwapParams.tokenOut);\n\n swapState.amountGivenScaled18 = _computeAmountGivenScaled18(vaultSwapParams, poolData, swapState);\n swapState.swapFeePercentage = poolData.poolConfigBits.getStaticSwapFeePercentage();\n }\n\n function _buildPoolSwapParams(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory swapState,\n PoolData memory poolData\n ) internal view returns (PoolSwapParams memory) {\n // Uses msg.sender as the Router (the contract that called the Vault).\n return\n PoolSwapParams({\n kind: vaultSwapParams.kind,\n amountGivenScaled18: swapState.amountGivenScaled18,\n balancesScaled18: poolData.balancesLiveScaled18,\n indexIn: swapState.indexIn,\n indexOut: swapState.indexOut,\n router: msg.sender,\n userData: vaultSwapParams.userData\n });\n }\n\n /**\n * @dev Preconditions: decimalScalingFactors and tokenRates in `poolData` must be current.\n * Uses amountGivenRaw and kind from `vaultSwapParams`.\n */\n function _computeAmountGivenScaled18(\n VaultSwapParams memory vaultSwapParams,\n PoolData memory poolData,\n SwapState memory swapState\n ) private pure returns (uint256) {\n // If the amountGiven is entering the pool math (ExactIn), round down, since a lower apparent amountIn leads\n // to a lower calculated amountOut, favoring the pool.\n return\n vaultSwapParams.kind == SwapKind.EXACT_IN\n ? vaultSwapParams.amountGivenRaw.toScaled18ApplyRateRoundDown(\n poolData.decimalScalingFactors[swapState.indexIn],\n poolData.tokenRates[swapState.indexIn]\n )\n : vaultSwapParams.amountGivenRaw.toScaled18ApplyRateRoundUp(\n poolData.decimalScalingFactors[swapState.indexOut],\n // If the swap is ExactOut, the amountGiven is the amount of tokenOut. So, we want to use the rate\n // rounded up to calculate the amountGivenScaled18, because if this value is bigger, the\n // amountCalculatedRaw will be bigger, implying that the user will pay for any rounding\n // inconsistency, and not the Vault.\n poolData.tokenRates[swapState.indexOut].computeRateRoundUp()\n );\n }\n\n /**\n * @dev Auxiliary struct to prevent stack-too-deep issues inside `_swap` function.\n * Total swap fees include LP (pool) fees and aggregate (protocol + pool creator) fees.\n */\n struct SwapInternalLocals {\n uint256 totalSwapFeeAmountScaled18;\n uint256 totalSwapFeeAmountRaw;\n uint256 aggregateFeeAmountRaw;\n }\n\n /**\n * @dev Main non-reentrant portion of the swap, which calls the pool hook and updates accounting. `vaultSwapParams`\n * are passed to the pool's `onSwap` hook.\n *\n * Preconditions: complete `SwapParams`, `SwapState`, and `PoolData`.\n * Side effects: mutates balancesRaw and balancesLiveScaled18 in `poolData`.\n * Updates `_aggregateFeeAmounts`, and `_poolTokenBalances` in storage.\n * Emits Swap event.\n */\n function _swap(\n VaultSwapParams memory vaultSwapParams,\n SwapState memory swapState,\n PoolData memory poolData,\n PoolSwapParams memory poolSwapParams\n )\n internal\n nonReentrant\n returns (\n uint256 amountCalculatedRaw,\n uint256 amountCalculatedScaled18,\n uint256 amountInRaw,\n uint256 amountOutRaw\n )\n {\n SwapInternalLocals memory locals;\n\n if (vaultSwapParams.kind == SwapKind.EXACT_IN) {\n // Round up to avoid losses during precision loss.\n locals.totalSwapFeeAmountScaled18 = poolSwapParams.amountGivenScaled18.mulUp(swapState.swapFeePercentage);\n poolSwapParams.amountGivenScaled18 -= locals.totalSwapFeeAmountScaled18;\n }\n\n _ensureValidSwapAmount(poolSwapParams.amountGivenScaled18);\n\n // Perform the swap request hook and compute the new balances for 'token in' and 'token out' after the swap.\n amountCalculatedScaled18 = IBasePool(vaultSwapParams.pool).onSwap(poolSwapParams);\n\n _ensureValidSwapAmount(amountCalculatedScaled18);\n\n // Note that balances are kept in memory, and are not fully computed until the `setPoolBalances` below.\n // Intervening code cannot read balances from storage, as they are temporarily out-of-sync here. This function\n // is nonReentrant, to guard against read-only reentrancy issues.\n\n // (1) and (2): get raw amounts and check limits.\n if (vaultSwapParams.kind == SwapKind.EXACT_IN) {\n // Restore the original input value; this function should not mutate memory inputs.\n // At this point swap fee amounts have already been computed for EXACT_IN.\n poolSwapParams.amountGivenScaled18 = swapState.amountGivenScaled18;\n\n // For `ExactIn` the amount calculated is leaving the Vault, so we round down.\n amountCalculatedRaw = amountCalculatedScaled18.toRawUndoRateRoundDown(\n poolData.decimalScalingFactors[swapState.indexOut],\n // If the swap is ExactIn, the amountCalculated is the amount of tokenOut. So, we want to use the rate\n // rounded up to calculate the amountCalculatedRaw, because scale down (undo rate) is a division, the\n // larger the rate, the smaller the amountCalculatedRaw. So, any rounding imprecision will stay in the\n // Vault and not be drained by the user.\n poolData.tokenRates[swapState.indexOut].computeRateRoundUp()\n );\n\n (amountInRaw, amountOutRaw) = (vaultSwapParams.amountGivenRaw, amountCalculatedRaw);\n\n if (amountOutRaw < vaultSwapParams.limitRaw) {\n revert SwapLimit(amountOutRaw, vaultSwapParams.limitRaw);\n }\n } else {\n // To ensure symmetry with EXACT_IN, the swap fee used by ExactOut is\n // `amountCalculated * fee% / (100% - fee%)`. Add it to the calculated amountIn. Round up to avoid losing\n // value due to precision loss. Note that if the `swapFeePercentage` were 100% here, this would revert with\n // division by zero. We protect against this by ensuring in PoolConfigLib and HooksConfigLib that all swap\n // fees (static, dynamic, pool creator, and aggregate) are less than 100%.\n locals.totalSwapFeeAmountScaled18 = amountCalculatedScaled18.mulDivUp(\n swapState.swapFeePercentage,\n swapState.swapFeePercentage.complement()\n );\n\n amountCalculatedScaled18 += locals.totalSwapFeeAmountScaled18;\n\n // For `ExactOut` the amount calculated is entering the Vault, so we round up.\n amountCalculatedRaw = amountCalculatedScaled18.toRawUndoRateRoundUp(\n poolData.decimalScalingFactors[swapState.indexIn],\n poolData.tokenRates[swapState.indexIn]\n );\n\n (amountInRaw, amountOutRaw) = (amountCalculatedRaw, vaultSwapParams.amountGivenRaw);\n\n if (amountInRaw > vaultSwapParams.limitRaw) {\n revert SwapLimit(amountInRaw, vaultSwapParams.limitRaw);\n }\n }\n\n // 3) Deltas: debit for token in, credit for token out.\n _takeDebt(vaultSwapParams.tokenIn, amountInRaw);\n _supplyCredit(vaultSwapParams.tokenOut, amountOutRaw);\n\n // 4) Compute and charge protocol and creator fees.\n // Note that protocol fee storage is updated before balance storage, as the final raw balances need to take\n // the fees into account.\n (locals.totalSwapFeeAmountRaw, locals.aggregateFeeAmountRaw) = _computeAndChargeAggregateSwapFees(\n poolData,\n locals.totalSwapFeeAmountScaled18,\n vaultSwapParams.pool,\n vaultSwapParams.tokenIn,\n swapState.indexIn\n );\n\n // 5) Pool balances: raw and live.\n\n poolData.updateRawAndLiveBalance(\n swapState.indexIn,\n poolData.balancesRaw[swapState.indexIn] + amountInRaw - locals.aggregateFeeAmountRaw,\n Rounding.ROUND_DOWN\n );\n poolData.updateRawAndLiveBalance(\n swapState.indexOut,\n poolData.balancesRaw[swapState.indexOut] - amountOutRaw,\n Rounding.ROUND_DOWN\n );\n\n // 6) Store pool balances, raw and live (only index in and out).\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolBalances = _poolTokenBalances[\n vaultSwapParams.pool\n ];\n poolBalances[swapState.indexIn] = PackedTokenBalance.toPackedBalance(\n poolData.balancesRaw[swapState.indexIn],\n poolData.balancesLiveScaled18[swapState.indexIn]\n );\n poolBalances[swapState.indexOut] = PackedTokenBalance.toPackedBalance(\n poolData.balancesRaw[swapState.indexOut],\n poolData.balancesLiveScaled18[swapState.indexOut]\n );\n\n // 7) Off-chain events.\n emit Swap(\n vaultSwapParams.pool,\n vaultSwapParams.tokenIn,\n vaultSwapParams.tokenOut,\n amountInRaw,\n amountOutRaw,\n swapState.swapFeePercentage,\n locals.totalSwapFeeAmountRaw\n );\n }\n\n /***************************************************************************\n Add Liquidity\n ***************************************************************************/\n\n /// @inheritdoc IVaultMain\n function addLiquidity(\n AddLiquidityParams memory params\n )\n external\n onlyWhenUnlocked\n withInitializedPool(params.pool)\n returns (uint256[] memory amountsIn, uint256 bptAmountOut, bytes memory returnData)\n {\n // Round balances up when adding liquidity:\n // If proportional, higher balances = higher proportional amountsIn, favoring the pool.\n // If unbalanced, higher balances = lower invariant ratio with fees.\n // bptOut = supply * (ratio - 1), so lower ratio = less bptOut, favoring the pool.\n\n _ensureUnpaused(params.pool);\n _addLiquidityCalled().tSet(_sessionIdSlot().tload(), params.pool, true);\n\n // `_loadPoolDataUpdatingBalancesAndYieldFees` is non-reentrant, as it updates storage as well\n // as filling in poolData in memory. Since the add liquidity hooks are reentrant and could do anything,\n // including change these balances, we cannot defer settlement until `_addLiquidity`.\n //\n // Sets all fields in `poolData`. Side effects: updates `_poolTokenBalances`, and\n // `_aggregateFeeAmounts` in storage.\n PoolData memory poolData = _loadPoolDataUpdatingBalancesAndYieldFees(params.pool, Rounding.ROUND_UP);\n InputHelpers.ensureInputLengthMatch(poolData.tokens.length, params.maxAmountsIn.length);\n\n // Amounts are entering pool math, so round down.\n // Introducing `maxAmountsInScaled18` here and passing it through to _addLiquidity is not ideal,\n // but it avoids the even worse options of mutating amountsIn inside AddLiquidityParams,\n // or cluttering the AddLiquidityParams interface by adding amountsInScaled18.\n uint256[] memory maxAmountsInScaled18 = params.maxAmountsIn.copyToScaled18ApplyRateRoundDownArray(\n poolData.decimalScalingFactors,\n poolData.tokenRates\n );\n\n if (poolData.poolConfigBits.shouldCallBeforeAddLiquidity()) {\n HooksConfigLib.callBeforeAddLiquidityHook(\n msg.sender,\n maxAmountsInScaled18,\n params,\n poolData,\n _hooksContracts[params.pool]\n );\n // The hook might have altered the balances, so we need to read them again to ensure that the data\n // are fresh moving forward. We also need to upscale (adding liquidity, so round up) again.\n poolData.reloadBalancesAndRates(_poolTokenBalances[params.pool], Rounding.ROUND_UP);\n\n // Also update maxAmountsInScaled18, as the rates might have changed.\n maxAmountsInScaled18 = params.maxAmountsIn.copyToScaled18ApplyRateRoundDownArray(\n poolData.decimalScalingFactors,\n poolData.tokenRates\n );\n }\n\n // The bulk of the work is done here: the corresponding Pool hook is called, and the final balances\n // are computed. This function is non-reentrant, as it performs the accounting updates.\n //\n // Note that poolData is mutated to update the Raw and Live balances, so they are accurate when passed\n // into the AfterAddLiquidity hook.\n //\n // `amountsInScaled18` will be overwritten in the custom case, so we need to pass it back and forth to\n // encapsulate that logic in `_addLiquidity`.\n uint256[] memory amountsInScaled18;\n (amountsIn, amountsInScaled18, bptAmountOut, returnData) = _addLiquidity(\n poolData,\n params,\n maxAmountsInScaled18\n );\n\n // AmountsIn can be changed by onAfterAddLiquidity if the hook charges fees or gives discounts.\n // Uses msg.sender as the Router (the contract that called the Vault).\n if (poolData.poolConfigBits.shouldCallAfterAddLiquidity()) {\n // `hooksContract` needed to fix stack too deep.\n IHooks hooksContract = _hooksContracts[params.pool];\n\n amountsIn = poolData.poolConfigBits.callAfterAddLiquidityHook(\n msg.sender,\n amountsInScaled18,\n amountsIn,\n bptAmountOut,\n params,\n poolData,\n hooksContract\n );\n }\n }\n\n // Avoid \"stack too deep\" - without polluting the Add/RemoveLiquidity params interface.\n struct LiquidityLocals {\n uint256 numTokens;\n uint256 aggregateSwapFeeAmountRaw;\n uint256 tokenIndex;\n }\n\n /**\n * @dev Calls the appropriate pool hook and calculates the required inputs and outputs for the operation\n * considering the given kind, and updates the Vault's internal accounting. This includes:\n * - Setting pool balances\n * - Taking debt from the liquidity provider\n * - Minting pool tokens\n * - Emitting events\n *\n * It is non-reentrant, as it performs external calls and updates the Vault's state accordingly.\n */\n function _addLiquidity(\n PoolData memory poolData,\n AddLiquidityParams memory params,\n uint256[] memory maxAmountsInScaled18\n )\n internal\n nonReentrant\n returns (\n uint256[] memory amountsInRaw,\n uint256[] memory amountsInScaled18,\n uint256 bptAmountOut,\n bytes memory returnData\n )\n {\n LiquidityLocals memory locals;\n locals.numTokens = poolData.tokens.length;\n amountsInRaw = new uint256[](locals.numTokens);\n // `swapFeeAmounts` stores scaled18 amounts first, and is then reused to store raw amounts.\n uint256[] memory swapFeeAmounts;\n\n if (params.kind == AddLiquidityKind.PROPORTIONAL) {\n bptAmountOut = params.minBptAmountOut;\n // Initializes the swapFeeAmounts empty array (no swap fees on proportional add liquidity).\n swapFeeAmounts = new uint256[](locals.numTokens);\n\n amountsInScaled18 = BasePoolMath.computeProportionalAmountsIn(\n poolData.balancesLiveScaled18,\n _totalSupply(params.pool),\n bptAmountOut\n );\n } else if (params.kind == AddLiquidityKind.DONATION) {\n poolData.poolConfigBits.requireDonationEnabled();\n\n swapFeeAmounts = new uint256[](maxAmountsInScaled18.length);\n bptAmountOut = 0;\n amountsInScaled18 = maxAmountsInScaled18;\n } else if (params.kind == AddLiquidityKind.UNBALANCED) {\n poolData.poolConfigBits.requireUnbalancedLiquidityEnabled();\n\n amountsInScaled18 = maxAmountsInScaled18;\n // Deep copy given max amounts in raw to calculated amounts in raw to avoid scaling later, ensuring that\n // `maxAmountsIn` is preserved.\n ScalingHelpers.copyToArray(params.maxAmountsIn, amountsInRaw);\n\n (bptAmountOut, swapFeeAmounts) = BasePoolMath.computeAddLiquidityUnbalanced(\n poolData.balancesLiveScaled18,\n maxAmountsInScaled18,\n _totalSupply(params.pool),\n poolData.poolConfigBits.getStaticSwapFeePercentage(),\n IBasePool(params.pool)\n );\n } else if (params.kind == AddLiquidityKind.SINGLE_TOKEN_EXACT_OUT) {\n poolData.poolConfigBits.requireUnbalancedLiquidityEnabled();\n\n bptAmountOut = params.minBptAmountOut;\n locals.tokenIndex = InputHelpers.getSingleInputIndex(maxAmountsInScaled18);\n\n amountsInScaled18 = maxAmountsInScaled18;\n (amountsInScaled18[locals.tokenIndex], swapFeeAmounts) = BasePoolMath\n .computeAddLiquiditySingleTokenExactOut(\n poolData.balancesLiveScaled18,\n locals.tokenIndex,\n bptAmountOut,\n _totalSupply(params.pool),\n poolData.poolConfigBits.getStaticSwapFeePercentage(),\n IBasePool(params.pool)\n );\n } else if (params.kind == AddLiquidityKind.CUSTOM) {\n poolData.poolConfigBits.requireAddLiquidityCustomEnabled();\n\n // Uses msg.sender as the Router (the contract that called the Vault).\n (amountsInScaled18, bptAmountOut, swapFeeAmounts, returnData) = IPoolLiquidity(params.pool)\n .onAddLiquidityCustom(\n msg.sender,\n maxAmountsInScaled18,\n params.minBptAmountOut,\n poolData.balancesLiveScaled18,\n params.userData\n );\n } else {\n revert InvalidAddLiquidityKind();\n }\n\n // At this point we have the calculated BPT amount.\n if (bptAmountOut < params.minBptAmountOut) {\n revert BptAmountOutBelowMin(bptAmountOut, params.minBptAmountOut);\n }\n\n _ensureValidTradeAmount(bptAmountOut);\n\n for (uint256 i = 0; i < locals.numTokens; ++i) {\n uint256 amountInRaw;\n\n // 1) Calculate raw amount in.\n {\n uint256 amountInScaled18 = amountsInScaled18[i];\n _ensureValidTradeAmount(amountInScaled18);\n\n // If the value in memory is not set, convert scaled amount to raw.\n if (amountsInRaw[i] == 0) {\n // amountsInRaw are amounts actually entering the Pool, so we round up.\n // Do not mutate in place yet, as we need them scaled for the `onAfterAddLiquidity` hook.\n amountInRaw = amountInScaled18.toRawUndoRateRoundUp(\n poolData.decimalScalingFactors[i],\n poolData.tokenRates[i]\n );\n\n amountsInRaw[i] = amountInRaw;\n } else {\n // Exact in requests will have the raw amount in memory already, so we use it moving forward and\n // skip downscaling.\n amountInRaw = amountsInRaw[i];\n }\n }\n\n IERC20 token = poolData.tokens[i];\n\n // 2) Check limits for raw amounts.\n if (amountInRaw > params.maxAmountsIn[i]) {\n revert AmountInAboveMax(token, amountInRaw, params.maxAmountsIn[i]);\n }\n\n // 3) Deltas: Debit of token[i] for amountInRaw.\n _takeDebt(token, amountInRaw);\n\n // 4) Compute and charge protocol and creator fees.\n // swapFeeAmounts[i] is now raw instead of scaled.\n (swapFeeAmounts[i], locals.aggregateSwapFeeAmountRaw) = _computeAndChargeAggregateSwapFees(\n poolData,\n swapFeeAmounts[i],\n params.pool,\n token,\n i\n );\n\n // 5) Pool balances: raw and live.\n // We need regular balances to complete the accounting, and the upscaled balances\n // to use in the `after` hook later on.\n\n // A pool's token balance increases by amounts in after adding liquidity, minus fees.\n poolData.updateRawAndLiveBalance(\n i,\n poolData.balancesRaw[i] + amountInRaw - locals.aggregateSwapFeeAmountRaw,\n Rounding.ROUND_DOWN\n );\n }\n\n // 6) Store pool balances, raw and live.\n _writePoolBalancesToStorage(params.pool, poolData);\n\n // 7) BPT supply adjustment.\n // When adding liquidity, we must mint tokens concurrently with updating pool balances,\n // as the pool's math relies on totalSupply.\n _mint(address(params.pool), params.to, bptAmountOut);\n\n // 8) Off-chain events.\n emit LiquidityAdded(\n params.pool,\n params.to,\n params.kind,\n _totalSupply(params.pool),\n amountsInRaw,\n swapFeeAmounts\n );\n }\n\n /***************************************************************************\n Remove Liquidity\n ***************************************************************************/\n\n /// @inheritdoc IVaultMain\n function removeLiquidity(\n RemoveLiquidityParams memory params\n )\n external\n onlyWhenUnlocked\n withInitializedPool(params.pool)\n returns (uint256 bptAmountIn, uint256[] memory amountsOut, bytes memory returnData)\n {\n // Round down when removing liquidity:\n // If proportional, lower balances = lower proportional amountsOut, favoring the pool.\n // If unbalanced, lower balances = lower invariant ratio without fees.\n // bptIn = supply * (1 - ratio), so lower ratio = more bptIn, favoring the pool.\n _ensureUnpaused(params.pool);\n\n // `_loadPoolDataUpdatingBalancesAndYieldFees` is non-reentrant, as it updates storage as well\n // as filling in poolData in memory. Since the swap hooks are reentrant and could do anything, including\n // change these balances, we cannot defer settlement until `_removeLiquidity`.\n //\n // Sets all fields in `poolData`. Side effects: updates `_poolTokenBalances` and\n // `_aggregateFeeAmounts in storage.\n PoolData memory poolData = _loadPoolDataUpdatingBalancesAndYieldFees(params.pool, Rounding.ROUND_DOWN);\n InputHelpers.ensureInputLengthMatch(poolData.tokens.length, params.minAmountsOut.length);\n\n // Amounts are entering pool math; higher amounts would burn more BPT, so round up to favor the pool.\n // Do not mutate minAmountsOut, so that we can directly compare the raw limits later, without potentially\n // losing precision by scaling up and then down.\n uint256[] memory minAmountsOutScaled18 = params.minAmountsOut.copyToScaled18ApplyRateRoundUpArray(\n poolData.decimalScalingFactors,\n poolData.tokenRates\n );\n\n // Uses msg.sender as the Router (the contract that called the Vault).\n if (poolData.poolConfigBits.shouldCallBeforeRemoveLiquidity()) {\n HooksConfigLib.callBeforeRemoveLiquidityHook(\n minAmountsOutScaled18,\n msg.sender,\n params,\n poolData,\n _hooksContracts[params.pool]\n );\n\n // The hook might alter the balances, so we need to read them again to ensure that the data is\n // fresh moving forward. We also need to upscale (removing liquidity, so round down) again.\n poolData.reloadBalancesAndRates(_poolTokenBalances[params.pool], Rounding.ROUND_DOWN);\n\n // Also update minAmountsOutScaled18, as the rates might have changed.\n minAmountsOutScaled18 = params.minAmountsOut.copyToScaled18ApplyRateRoundUpArray(\n poolData.decimalScalingFactors,\n poolData.tokenRates\n );\n }\n\n // The bulk of the work is done here: the corresponding Pool hook is called, and the final balances\n // are computed. This function is non-reentrant, as it performs the accounting updates.\n //\n // Note that poolData is mutated to update the Raw and Live balances, so they are accurate when passed\n // into the AfterRemoveLiquidity hook.\n uint256[] memory amountsOutScaled18;\n (bptAmountIn, amountsOut, amountsOutScaled18, returnData) = _removeLiquidity(\n poolData,\n params,\n minAmountsOutScaled18\n );\n\n // AmountsOut can be changed by onAfterRemoveLiquidity if the hook charges fees or gives discounts.\n // Uses msg.sender as the Router (the contract that called the Vault).\n if (poolData.poolConfigBits.shouldCallAfterRemoveLiquidity()) {\n // `hooksContract` needed to fix stack too deep.\n IHooks hooksContract = _hooksContracts[params.pool];\n\n amountsOut = poolData.poolConfigBits.callAfterRemoveLiquidityHook(\n msg.sender,\n amountsOutScaled18,\n amountsOut,\n bptAmountIn,\n params,\n poolData,\n hooksContract\n );\n }\n }\n\n /**\n * @dev Calls the appropriate pool hook and calculates the required inputs and outputs for the operation\n * considering the given kind, and updates the Vault's internal accounting. This includes:\n * - Setting pool balances\n * - Supplying credit to the liquidity provider\n * - Burning pool tokens\n * - Emitting events\n *\n * It is non-reentrant, as it performs external calls and updates the Vault's state accordingly.\n */\n function _removeLiquidity(\n PoolData memory poolData,\n RemoveLiquidityParams memory params,\n uint256[] memory minAmountsOutScaled18\n )\n internal\n nonReentrant\n returns (\n uint256 bptAmountIn,\n uint256[] memory amountsOutRaw,\n uint256[] memory amountsOutScaled18,\n bytes memory returnData\n )\n {\n LiquidityLocals memory locals;\n locals.numTokens = poolData.tokens.length;\n amountsOutRaw = new uint256[](locals.numTokens);\n // `swapFeeAmounts` stores scaled18 amounts first, and is then reused to store raw amounts.\n uint256[] memory swapFeeAmounts;\n\n if (params.kind == RemoveLiquidityKind.PROPORTIONAL) {\n bptAmountIn = params.maxBptAmountIn;\n swapFeeAmounts = new uint256[](locals.numTokens);\n amountsOutScaled18 = BasePoolMath.computeProportionalAmountsOut(\n poolData.balancesLiveScaled18,\n _totalSupply(params.pool),\n bptAmountIn\n );\n\n // Charge round-trip fee if liquidity was added to this pool in the same unlock call; this is not really a\n // valid use case, and may be an attack. Use caution when removing liquidity through a Safe or other\n // multisig / non-EOA address. Use \"sign and execute,\" ideally through a private node (or at least not\n // allowing public execution) to avoid front-running, and always set strict limits so that it will revert\n // if any unexpected fees are charged. (It is also possible to check whether the flag has been set before\n // withdrawing, by calling `getAddLiquidityCalledFlag`.)\n if (_addLiquidityCalled().tGet(_sessionIdSlot().tload(), params.pool)) {\n uint256 swapFeePercentage = poolData.poolConfigBits.getStaticSwapFeePercentage();\n for (uint256 i = 0; i < locals.numTokens; ++i) {\n swapFeeAmounts[i] = amountsOutScaled18[i].mulUp(swapFeePercentage);\n amountsOutScaled18[i] -= swapFeeAmounts[i];\n }\n }\n } else if (params.kind == RemoveLiquidityKind.SINGLE_TOKEN_EXACT_IN) {\n poolData.poolConfigBits.requireUnbalancedLiquidityEnabled();\n bptAmountIn = params.maxBptAmountIn;\n amountsOutScaled18 = minAmountsOutScaled18;\n locals.tokenIndex = InputHelpers.getSingleInputIndex(params.minAmountsOut);\n\n (amountsOutScaled18[locals.tokenIndex], swapFeeAmounts) = BasePoolMath\n .computeRemoveLiquiditySingleTokenExactIn(\n poolData.balancesLiveScaled18,\n locals.tokenIndex,\n bptAmountIn,\n _totalSupply(params.pool),\n poolData.poolConfigBits.getStaticSwapFeePercentage(),\n IBasePool(params.pool)\n );\n } else if (params.kind == RemoveLiquidityKind.SINGLE_TOKEN_EXACT_OUT) {\n poolData.poolConfigBits.requireUnbalancedLiquidityEnabled();\n amountsOutScaled18 = minAmountsOutScaled18;\n locals.tokenIndex = InputHelpers.getSingleInputIndex(params.minAmountsOut);\n amountsOutRaw[locals.tokenIndex] = params.minAmountsOut[locals.tokenIndex];\n\n (bptAmountIn, swapFeeAmounts) = BasePoolMath.computeRemoveLiquiditySingleTokenExactOut(\n poolData.balancesLiveScaled18,\n locals.tokenIndex,\n amountsOutScaled18[locals.tokenIndex],\n _totalSupply(params.pool),\n poolData.poolConfigBits.getStaticSwapFeePercentage(),\n IBasePool(params.pool)\n );\n } else if (params.kind == RemoveLiquidityKind.CUSTOM) {\n poolData.poolConfigBits.requireRemoveLiquidityCustomEnabled();\n // Uses msg.sender as the Router (the contract that called the Vault).\n (bptAmountIn, amountsOutScaled18, swapFeeAmounts, returnData) = IPoolLiquidity(params.pool)\n .onRemoveLiquidityCustom(\n msg.sender,\n params.maxBptAmountIn,\n minAmountsOutScaled18,\n poolData.balancesLiveScaled18,\n params.userData\n );\n } else {\n revert InvalidRemoveLiquidityKind();\n }\n\n if (bptAmountIn > params.maxBptAmountIn) {\n revert BptAmountInAboveMax(bptAmountIn, params.maxBptAmountIn);\n }\n\n _ensureValidTradeAmount(bptAmountIn);\n\n for (uint256 i = 0; i < locals.numTokens; ++i) {\n uint256 amountOutRaw;\n\n // 1) Calculate raw amount out.\n {\n uint256 amountOutScaled18 = amountsOutScaled18[i];\n _ensureValidTradeAmount(amountOutScaled18);\n\n // If the value in memory is not set, convert scaled amount to raw.\n if (amountsOutRaw[i] == 0) {\n // amountsOut are amounts exiting the Pool, so we round down.\n // Do not mutate in place yet, as we need them scaled for the `onAfterRemoveLiquidity` hook.\n amountOutRaw = amountOutScaled18.toRawUndoRateRoundDown(\n poolData.decimalScalingFactors[i],\n poolData.tokenRates[i]\n );\n amountsOutRaw[i] = amountOutRaw;\n } else {\n // Exact out requests will have the raw amount in memory already, so we use it moving forward and\n // skip downscaling.\n amountOutRaw = amountsOutRaw[i];\n }\n }\n\n IERC20 token = poolData.tokens[i];\n // 2) Check limits for raw amounts.\n if (amountOutRaw < params.minAmountsOut[i]) {\n revert AmountOutBelowMin(token, amountOutRaw, params.minAmountsOut[i]);\n }\n\n // 3) Deltas: Credit token[i] for amountOutRaw.\n _supplyCredit(token, amountOutRaw);\n\n // 4) Compute and charge protocol and creator fees.\n // swapFeeAmounts[i] is now raw instead of scaled.\n (swapFeeAmounts[i], locals.aggregateSwapFeeAmountRaw) = _computeAndChargeAggregateSwapFees(\n poolData,\n swapFeeAmounts[i],\n params.pool,\n token,\n i\n );\n\n // 5) Pool balances: raw and live.\n // We need regular balances to complete the accounting, and the upscaled balances\n // to use in the `after` hook later on.\n\n // A Pool's token balance always decreases after an exit (potentially by 0).\n // Also adjust by protocol and pool creator fees.\n poolData.updateRawAndLiveBalance(\n i,\n poolData.balancesRaw[i] - (amountOutRaw + locals.aggregateSwapFeeAmountRaw),\n Rounding.ROUND_DOWN\n );\n }\n\n // 6) Store pool balances, raw and live.\n _writePoolBalancesToStorage(params.pool, poolData);\n\n // 7) BPT supply adjustment.\n // Uses msg.sender as the Router (the contract that called the Vault).\n _spendAllowance(address(params.pool), params.from, msg.sender, bptAmountIn);\n\n if (_isQueryContext()) {\n // Increase `from` balance to ensure the burn function succeeds.\n _queryModeBalanceIncrease(params.pool, params.from, bptAmountIn);\n }\n // When removing liquidity, we must burn tokens concurrently with updating pool balances,\n // as the pool's math relies on totalSupply.\n // Burning will be reverted if it results in a total supply less than the _POOL_MINIMUM_TOTAL_SUPPLY.\n _burn(address(params.pool), params.from, bptAmountIn);\n\n // 8) Off-chain events.\n emit LiquidityRemoved(\n params.pool,\n params.from,\n params.kind,\n _totalSupply(params.pool),\n amountsOutRaw,\n swapFeeAmounts\n );\n }\n\n /**\n * @dev Preconditions: poolConfigBits, decimalScalingFactors, tokenRates in `poolData`.\n * Side effects: updates `_aggregateFeeAmounts` storage.\n * Note that this computes the aggregate total of the protocol fees and stores it, without emitting any events.\n * Splitting the fees and event emission occur during fee collection.\n * Should only be called in a non-reentrant context.\n *\n * @return totalSwapFeeAmountRaw Total swap fees raw (LP + aggregate protocol fees)\n * @return aggregateSwapFeeAmountRaw Sum of protocol and pool creator fees raw\n */\n function _computeAndChargeAggregateSwapFees(\n PoolData memory poolData,\n uint256 totalSwapFeeAmountScaled18,\n address pool,\n IERC20 token,\n uint256 index\n ) internal returns (uint256 totalSwapFeeAmountRaw, uint256 aggregateSwapFeeAmountRaw) {\n // If totalSwapFeeAmountScaled18 equals zero, no need to charge anything.\n if (totalSwapFeeAmountScaled18 > 0) {\n // The total swap fee does not go into the pool; amountIn does, and the raw fee at this point does not\n // modify it. Given that all of the fee may belong to the pool creator (i.e. outside pool balances),\n // we round down to protect the invariant.\n\n totalSwapFeeAmountRaw = totalSwapFeeAmountScaled18.toRawUndoRateRoundDown(\n poolData.decimalScalingFactors[index],\n poolData.tokenRates[index]\n );\n\n // Aggregate fees are not charged in Recovery Mode, but we still calculate and return the raw total swap\n // fee above for off-chain reporting purposes.\n if (poolData.poolConfigBits.isPoolInRecoveryMode() == false) {\n uint256 aggregateSwapFeePercentage = poolData.poolConfigBits.getAggregateSwapFeePercentage();\n\n // We have already calculated raw total fees rounding up.\n // Total fees = LP fees + aggregate fees, so by rounding aggregate fees down we round the fee split in\n // the LPs' favor, in turn increasing token balances and the pool invariant.\n aggregateSwapFeeAmountRaw = totalSwapFeeAmountRaw.mulDown(aggregateSwapFeePercentage);\n\n // Ensure we can never charge more than the total swap fee.\n if (aggregateSwapFeeAmountRaw > totalSwapFeeAmountRaw) {\n revert ProtocolFeesExceedTotalCollected();\n }\n\n // Both Swap and Yield fees are stored together in a PackedTokenBalance.\n // We have designated \"Raw\" the derived half for Swap fee storage.\n bytes32 currentPackedBalance = _aggregateFeeAmounts[pool][token];\n _aggregateFeeAmounts[pool][token] = currentPackedBalance.setBalanceRaw(\n currentPackedBalance.getBalanceRaw() + aggregateSwapFeeAmountRaw\n );\n }\n }\n }\n\n /*******************************************************************************\n Pool Information\n *******************************************************************************/\n\n /// @inheritdoc IVaultMain\n function getPoolTokenCountAndIndexOfToken(\n address pool,\n IERC20 token\n ) external view withRegisteredPool(pool) returns (uint256, uint256) {\n IERC20[] memory poolTokens = _poolTokens[pool];\n\n uint256 index = _findTokenIndex(poolTokens, token);\n\n return (poolTokens.length, index);\n }\n\n /*******************************************************************************\n Balancer Pool Tokens\n *******************************************************************************/\n\n /// @inheritdoc IVaultMain\n function transfer(address owner, address to, uint256 amount) external returns (bool) {\n _transfer(msg.sender, owner, to, amount);\n return true;\n }\n\n /// @inheritdoc IVaultMain\n function transferFrom(address spender, address from, address to, uint256 amount) external returns (bool) {\n _spendAllowance(msg.sender, from, spender, amount);\n _transfer(msg.sender, from, to, amount);\n return true;\n }\n\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /// @inheritdoc IVaultMain\n function erc4626BufferWrapOrUnwrap(\n BufferWrapOrUnwrapParams memory params\n )\n external\n onlyWhenUnlocked\n whenVaultBuffersAreNotPaused\n withInitializedBuffer(params.wrappedToken)\n nonReentrant\n returns (uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw)\n {\n IERC20 underlyingToken = IERC20(params.wrappedToken.asset());\n _ensureCorrectBufferAsset(params.wrappedToken, address(underlyingToken));\n\n _ensureValidWrapAmount(params.wrappedToken, params.amountGivenRaw);\n\n if (params.direction == WrappingDirection.UNWRAP) {\n bytes32 bufferBalances;\n (amountInRaw, amountOutRaw, bufferBalances) = _unwrapWithBuffer(\n params.kind,\n underlyingToken,\n params.wrappedToken,\n params.amountGivenRaw\n );\n emit Unwrap(params.wrappedToken, amountInRaw, amountOutRaw, bufferBalances);\n } else {\n bytes32 bufferBalances;\n (amountInRaw, amountOutRaw, bufferBalances) = _wrapWithBuffer(\n params.kind,\n underlyingToken,\n params.wrappedToken,\n params.amountGivenRaw\n );\n emit Wrap(params.wrappedToken, amountInRaw, amountOutRaw, bufferBalances);\n }\n\n if (params.kind == SwapKind.EXACT_IN) {\n if (amountOutRaw < params.limitRaw) {\n revert SwapLimit(amountOutRaw, params.limitRaw);\n }\n amountCalculatedRaw = amountOutRaw;\n } else {\n if (amountInRaw > params.limitRaw) {\n revert SwapLimit(amountInRaw, params.limitRaw);\n }\n amountCalculatedRaw = amountInRaw;\n }\n\n _ensureValidWrapAmount(params.wrappedToken, amountCalculatedRaw);\n }\n\n // If amount is too small, rounding issues can be introduced that favor the user and can leak value\n // from the buffer.\n // _MINIMUM_WRAP_AMOUNT prevents it. Most tokens have protections against it already; this is just an extra layer\n // of security.\n function _ensureValidWrapAmount(IERC4626 wrappedToken, uint256 amount) private view {\n if (amount < _MINIMUM_WRAP_AMOUNT) {\n revert WrapAmountTooSmall(wrappedToken);\n }\n }\n\n /**\n * @dev If the buffer has enough liquidity, it uses the internal ERC4626 buffer to perform the wrap\n * operation without any external calls. If not, it wraps the assets needed to fulfill the trade + the imbalance\n * of assets in the buffer, so that the buffer is rebalanced at the end of the operation.\n *\n * Updates `_reservesOf` and token deltas in storage.\n */\n function _wrapWithBuffer(\n SwapKind kind,\n IERC20 underlyingToken,\n IERC4626 wrappedToken,\n uint256 amountGiven\n ) internal returns (uint256 amountInUnderlying, uint256 amountOutWrapped, bytes32 bufferBalances) {\n if (kind == SwapKind.EXACT_IN) {\n // EXACT_IN wrap, so AmountGiven is an underlying amount. `deposit` is the ERC4626 operation that receives\n // an underlying amount in and calculates the wrapped amount out with the correct rounding. 1 wei is\n // removed from amountGiven to compensate for any rate manipulation. Also, 1 wei is removed from the\n // preview result to compensate for any rounding imprecision, so that the buffer does not leak value.\n (amountInUnderlying, amountOutWrapped) = (amountGiven, wrappedToken.previewDeposit(amountGiven - 1) - 1);\n } else {\n // EXACT_OUT wrap, so AmountGiven is a wrapped amount. `mint` is the ERC4626 operation that receives a\n // wrapped amount out and calculates the underlying amount in with the correct rounding. 1 wei is\n // added to amountGiven to compensate for any rate manipulation. Also, 1 wei is added to the\n // preview result to compensate for any rounding imprecision, so that the buffer does not leak value.\n (amountInUnderlying, amountOutWrapped) = (wrappedToken.previewMint(amountGiven + 1) + 1, amountGiven);\n }\n\n bufferBalances = _bufferTokenBalances[wrappedToken];\n\n // If it's a query, the Vault may not have enough underlying tokens to wrap. Since in a query we do not expect\n // the sender to pay for underlying tokens to wrap upfront, return the calculated amount without checking for\n // the imbalance.\n if (_isQueryContext()) {\n return (amountInUnderlying, amountOutWrapped, bufferBalances);\n }\n\n if (bufferBalances.getBalanceDerived() >= amountOutWrapped) {\n // The buffer has enough liquidity to facilitate the wrap without making an external call.\n uint256 newDerivedBalance;\n unchecked {\n // We have verified above that this is safe to do unchecked.\n newDerivedBalance = bufferBalances.getBalanceDerived() - amountOutWrapped;\n }\n\n bufferBalances = PackedTokenBalance.toPackedBalance(\n bufferBalances.getBalanceRaw() + amountInUnderlying,\n newDerivedBalance\n );\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n } else {\n // The buffer does not have enough liquidity to facilitate the wrap without making an external call.\n // We wrap the user's tokens via an external call and additionally rebalance the buffer if it has an\n // imbalance of underlying tokens.\n\n // Expected amount of underlying deposited into the wrapper protocol.\n uint256 vaultUnderlyingDeltaHint;\n // Expected amount of wrapped minted by the wrapper protocol.\n uint256 vaultWrappedDeltaHint;\n\n if (kind == SwapKind.EXACT_IN) {\n // EXACT_IN requires the exact amount of underlying tokens to be deposited, so we call deposit.\n // The amount of underlying tokens to deposit is the necessary amount to fulfill the trade\n // (amountInUnderlying), plus the amount needed to leave the buffer rebalanced 50/50 at the end\n // (bufferUnderlyingImbalance). `bufferUnderlyingImbalance` may be positive if the buffer has an excess\n // of underlying, or negative if the buffer has an excess of wrapped tokens. `vaultUnderlyingDeltaHint`\n // will always be a positive number, because if `abs(bufferUnderlyingImbalance) > amountInUnderlying`\n // and `bufferUnderlyingImbalance < 0`, it means the buffer has enough liquidity to fulfill the trade\n // (i.e. `bufferBalances.getBalanceDerived() >= amountOutWrapped`).\n int256 bufferUnderlyingImbalance = bufferBalances.getBufferUnderlyingImbalance(wrappedToken);\n vaultUnderlyingDeltaHint = (amountInUnderlying.toInt256() + bufferUnderlyingImbalance).toUint256();\n underlyingToken.forceApprove(address(wrappedToken), vaultUnderlyingDeltaHint);\n vaultWrappedDeltaHint = wrappedToken.deposit(vaultUnderlyingDeltaHint, address(this));\n } else {\n // EXACT_OUT requires the exact amount of wrapped tokens to be minted, so we call mint.\n // The amount of wrapped tokens to mint is the amount necessary to fulfill the trade\n // (amountOutWrapped), minus the excess amount of wrapped tokens in the buffer (bufferWrappedImbalance).\n // `bufferWrappedImbalance` may be positive if buffer has an excess of wrapped assets or negative if\n // the buffer has an excess of underlying assets. `vaultWrappedDeltaHint` will always be a positive\n // number, because if `abs(bufferWrappedImbalance) > amountOutWrapped` and `bufferWrappedImbalance > 0`,\n // it means the buffer has enough liquidity to fulfill the trade\n // (i.e. `bufferBalances.getBalanceDerived() >= amountOutWrapped`).\n int256 bufferWrappedImbalance = bufferBalances.getBufferWrappedImbalance(wrappedToken);\n vaultWrappedDeltaHint = (amountOutWrapped.toInt256() - bufferWrappedImbalance).toUint256();\n\n // For Wrap ExactOut, we also need to calculate `vaultUnderlyingDeltaHint` before the mint operation,\n // to approve the transfer of underlying tokens to the wrapper protocol.\n vaultUnderlyingDeltaHint = wrappedToken.previewMint(vaultWrappedDeltaHint);\n\n // The mint operation returns exactly `vaultWrappedDeltaHint` shares. To do so, it withdraws underlying\n // tokens from the Vault and returns the shares. So, the Vault needs to approve the transfer of\n // underlying tokens to the wrapper.\n underlyingToken.forceApprove(address(wrappedToken), vaultUnderlyingDeltaHint);\n\n vaultUnderlyingDeltaHint = wrappedToken.mint(vaultWrappedDeltaHint, address(this));\n }\n\n // Remove approval, in case deposit/mint consumed less tokens than we approved.\n // E.g., A malicious wrapper could not consume all of the underlying tokens and use the Vault approval to\n // drain the Vault.\n underlyingToken.forceApprove(address(wrappedToken), 0);\n\n // Check if the Vault's underlying balance decreased by `vaultUnderlyingDeltaHint` and the Vault's\n // wrapped balance increased by `vaultWrappedDeltaHint`. If not, it reverts.\n _settleWrap(underlyingToken, IERC20(wrappedToken), vaultUnderlyingDeltaHint, vaultWrappedDeltaHint);\n\n // In a wrap operation, the buffer underlying balance increases by `amountInUnderlying` (the amount that\n // the caller deposited into the buffer) and decreases by `vaultUnderlyingDeltaHint` (the amount of\n // underlying deposited by the buffer into the wrapper protocol). Conversely, the buffer wrapped balance\n // decreases by `amountOutWrapped` (the amount of wrapped tokens that the buffer returned to the caller)\n // and increases by `vaultWrappedDeltaHint` (the amount of wrapped tokens minted by the wrapper protocol).\n bufferBalances = PackedTokenBalance.toPackedBalance(\n bufferBalances.getBalanceRaw() + amountInUnderlying - vaultUnderlyingDeltaHint,\n bufferBalances.getBalanceDerived() + vaultWrappedDeltaHint - amountOutWrapped\n );\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n }\n\n _takeDebt(underlyingToken, amountInUnderlying);\n _supplyCredit(wrappedToken, amountOutWrapped);\n }\n\n /**\n * @dev If the buffer has enough liquidity, it uses the internal ERC4626 buffer to perform the unwrap\n * operation without any external calls. If not, it unwraps the assets needed to fulfill the trade + the imbalance\n * of assets in the buffer, so that the buffer is rebalanced at the end of the operation.\n *\n * Updates `_reservesOf` and token deltas in storage.\n */\n function _unwrapWithBuffer(\n SwapKind kind,\n IERC20 underlyingToken,\n IERC4626 wrappedToken,\n uint256 amountGiven\n ) internal returns (uint256 amountInWrapped, uint256 amountOutUnderlying, bytes32 bufferBalances) {\n if (kind == SwapKind.EXACT_IN) {\n // EXACT_IN unwrap, so AmountGiven is a wrapped amount. `redeem` is the ERC4626 operation that receives a\n // wrapped amount in and calculates the underlying amount out with the correct rounding. 1 wei is removed\n // from amountGiven to compensate for any rate manipulation. Also, 1 wei is removed from the preview result\n // to compensate for any rounding imprecision, so that the buffer does not leak value.\n (amountInWrapped, amountOutUnderlying) = (amountGiven, wrappedToken.previewRedeem(amountGiven - 1) - 1);\n } else {\n // EXACT_OUT unwrap, so AmountGiven is an underlying amount. `withdraw` is the ERC4626 operation that\n // receives an underlying amount out and calculates the wrapped amount in with the correct rounding. 1 wei\n // is added to amountGiven to compensate for any rate manipulation. Also, 1 wei is added to the preview\n // result to compensate for any rounding imprecision, so that the buffer does not leak value.\n (amountInWrapped, amountOutUnderlying) = (wrappedToken.previewWithdraw(amountGiven + 1) + 1, amountGiven);\n }\n\n bufferBalances = _bufferTokenBalances[wrappedToken];\n\n // If it's a query, the Vault may not have enough wrapped tokens to unwrap. Since in a query we do not expect\n // the sender to pay for wrapped tokens to unwrap upfront, return the calculated amount without checking for\n // the imbalance.\n if (_isQueryContext()) {\n return (amountInWrapped, amountOutUnderlying, bufferBalances);\n }\n\n if (bufferBalances.getBalanceRaw() >= amountOutUnderlying) {\n // The buffer has enough liquidity to facilitate the wrap without making an external call.\n uint256 newRawBalance;\n unchecked {\n // We have verified above that this is safe to do unchecked.\n newRawBalance = bufferBalances.getBalanceRaw() - amountOutUnderlying;\n }\n bufferBalances = PackedTokenBalance.toPackedBalance(\n newRawBalance,\n bufferBalances.getBalanceDerived() + amountInWrapped\n );\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n } else {\n // The buffer does not have enough liquidity to facilitate the unwrap without making an external call.\n // We unwrap the user's tokens via an external call and additionally rebalance the buffer if it has an\n // imbalance of wrapped tokens.\n\n // Expected amount of underlying withdrawn from the wrapper protocol.\n uint256 vaultUnderlyingDeltaHint;\n // Expected amount of wrapped burned by the wrapper protocol.\n uint256 vaultWrappedDeltaHint;\n\n if (kind == SwapKind.EXACT_IN) {\n // EXACT_IN requires the exact amount of wrapped tokens to be unwrapped, so we call redeem. The amount\n // of wrapped tokens to redeem is the amount necessary to fulfill the trade (amountInWrapped), plus the\n // amount needed to leave the buffer rebalanced 50/50 at the end (bufferWrappedImbalance).\n // `bufferWrappedImbalance` may be positive if the buffer has an excess of wrapped, or negative if the\n // buffer has an excess of underlying tokens. `vaultWrappedDeltaHint` will always be a positive number,\n // because if `abs(bufferWrappedImbalance) > amountInWrapped` and `bufferWrappedImbalance < 0`, it\n // means the buffer has enough liquidity to fulfill the trade\n // (i.e. `bufferBalances.getBalanceRaw() >= amountOutUnderlying`).\n int256 bufferWrappedImbalance = bufferBalances.getBufferWrappedImbalance(wrappedToken);\n vaultWrappedDeltaHint = (amountInWrapped.toInt256() + bufferWrappedImbalance).toUint256();\n vaultUnderlyingDeltaHint = wrappedToken.redeem(vaultWrappedDeltaHint, address(this), address(this));\n } else {\n // EXACT_OUT requires the exact amount of underlying tokens to be returned, so we call withdraw.\n // The amount of underlying tokens to withdraw is the amount necessary to fulfill the trade\n // (amountOutUnderlying), minus the excess amount of underlying assets in the buffer\n // (bufferUnderlyingImbalance). `bufferUnderlyingImbalance` may be positive if the buffer has an excess\n // of underlying, or negative if the buffer has an excess of wrapped tokens. `vaultUnderlyingDeltaHint`\n // will always be a positive number, because if `abs(bufferUnderlyingImbalance) > amountOutUnderlying`\n // and `bufferUnderlyingImbalance > 0`, it means the buffer has enough liquidity to fulfill the trade\n // (i.e. `bufferBalances.getBalanceRaw() >= amountOutUnderlying`).\n int256 bufferUnderlyingImbalance = bufferBalances.getBufferUnderlyingImbalance(wrappedToken);\n vaultUnderlyingDeltaHint = (amountOutUnderlying.toInt256() - bufferUnderlyingImbalance).toUint256();\n vaultWrappedDeltaHint = wrappedToken.withdraw(vaultUnderlyingDeltaHint, address(this), address(this));\n }\n\n // Check if the Vault's underlying balance increased by `vaultUnderlyingDeltaHint` and the Vault's\n // wrapped balance decreased by `vaultWrappedDeltaHint`. If not, it reverts.\n _settleUnwrap(underlyingToken, IERC20(wrappedToken), vaultUnderlyingDeltaHint, vaultWrappedDeltaHint);\n\n // In an unwrap operation, the buffer underlying balance increases by `vaultUnderlyingDeltaHint` (the\n // amount of underlying withdrawn by the buffer from the wrapper protocol) and decreases by\n // `amountOutUnderlying` (the amount of underlying assets that the caller withdrawn from the buffer).\n // Conversely, the buffer wrapped balance increases by `amountInWrapped` (the amount of wrapped tokens that\n // the caller sent to the buffer) and decreases by `vaultWrappedDeltaHint` (the amount of wrapped tokens\n // burned by the wrapper protocol).\n bufferBalances = PackedTokenBalance.toPackedBalance(\n bufferBalances.getBalanceRaw() + vaultUnderlyingDeltaHint - amountOutUnderlying,\n bufferBalances.getBalanceDerived() + amountInWrapped - vaultWrappedDeltaHint\n );\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n }\n\n _takeDebt(wrappedToken, amountInWrapped);\n _supplyCredit(underlyingToken, amountOutUnderlying);\n }\n\n /**\n * @notice Updates the reserves of the Vault after an ERC4626 wrap (deposit/mint) operation.\n * @dev If there are extra tokens in the Vault balances, these will be added to the reserves (which, in practice,\n * is equal to discarding such tokens). This approach avoids DoS attacks, when a frontrunner leaves vault balances\n * and reserves out of sync before a transaction starts.\n *\n * @param underlyingToken Underlying token of the ERC4626 wrapped token\n * @param wrappedToken ERC4626 wrapped token\n * @param underlyingDeltaHint Amount of underlying tokens the wrapper should have removed from the Vault\n * @param wrappedDeltaHint Amount of wrapped tokens the wrapper should have added to the Vault\n */\n function _settleWrap(\n IERC20 underlyingToken,\n IERC20 wrappedToken,\n uint256 underlyingDeltaHint,\n uint256 wrappedDeltaHint\n ) internal {\n // A wrap operation removes underlying tokens from the Vault, so the Vault's expected underlying balance after\n // the operation is `underlyingReservesBefore - underlyingDeltaHint`.\n uint256 expectedUnderlyingReservesAfter = _reservesOf[underlyingToken] - underlyingDeltaHint;\n\n // A wrap operation adds wrapped tokens to the Vault, so the Vault's expected wrapped balance after the\n // operation is `wrappedReservesBefore + wrappedDeltaHint`.\n uint256 expectedWrappedReservesAfter = _reservesOf[wrappedToken] + wrappedDeltaHint;\n\n _settleWrapUnwrap(underlyingToken, wrappedToken, expectedUnderlyingReservesAfter, expectedWrappedReservesAfter);\n }\n\n /**\n * @notice Updates the reserves of the Vault after an ERC4626 unwrap (withdraw/redeem) operation.\n * @dev If there are extra tokens in the Vault balances, these will be added to the reserves (which, in practice,\n * is equal to discarding such tokens). This approach avoids DoS attacks, when a frontrunner leaves vault balances\n * and state of reserves out of sync before a transaction starts.\n *\n * @param underlyingToken Underlying of ERC4626 wrapped token\n * @param wrappedToken ERC4626 wrapped token\n * @param underlyingDeltaHint Amount of underlying tokens supposedly added to the Vault\n * @param wrappedDeltaHint Amount of wrapped tokens supposedly removed from the Vault\n */\n function _settleUnwrap(\n IERC20 underlyingToken,\n IERC20 wrappedToken,\n uint256 underlyingDeltaHint,\n uint256 wrappedDeltaHint\n ) internal {\n // An unwrap operation adds underlying tokens to the Vault, so the Vault's expected underlying balance after\n // the operation is `underlyingReservesBefore + underlyingDeltaHint`.\n uint256 expectedUnderlyingReservesAfter = _reservesOf[underlyingToken] + underlyingDeltaHint;\n\n // An unwrap operation removes wrapped tokens from the Vault, so the Vault's expected wrapped balance after the\n // operation is `wrappedReservesBefore - wrappedDeltaHint`.\n uint256 expectedWrappedReservesAfter = _reservesOf[wrappedToken] - wrappedDeltaHint;\n\n _settleWrapUnwrap(underlyingToken, wrappedToken, expectedUnderlyingReservesAfter, expectedWrappedReservesAfter);\n }\n\n /**\n * @notice Updates the reserves of the Vault after an ERC4626 wrap/unwrap operation.\n * @dev If reserves of underlying or wrapped tokens are bigger than expected, the extra tokens will be discarded,\n * which avoids a possible DoS. However, if reserves are smaller than expected, it means that the wrapper didn't\n * respect the amount given and/or the amount calculated (informed by the wrapper operation and stored as a hint\n * variable), so the token is not ERC4626 compliant and the function should be reverted.\n *\n * @param underlyingToken Underlying of ERC4626 wrapped token\n * @param wrappedToken ERC4626 wrapped token\n * @param expectedUnderlyingReservesAfter Vault's expected reserves of underlying after the wrap/unwrap operation\n * @param expectedWrappedReservesAfter Vault's expected reserves of wrapped after the wrap/unwrap operation\n */\n function _settleWrapUnwrap(\n IERC20 underlyingToken,\n IERC20 wrappedToken,\n uint256 expectedUnderlyingReservesAfter,\n uint256 expectedWrappedReservesAfter\n ) internal {\n // Update the Vault's underlying reserves.\n uint256 underlyingBalancesAfter = underlyingToken.balanceOf(address(this));\n if (underlyingBalancesAfter < expectedUnderlyingReservesAfter) {\n // If Vault's underlying balance is smaller than expected, the Vault was drained and the operation should\n // revert. It may happen in different ways, depending on the wrap/unwrap operation:\n // * deposit: the wrapper didn't respect the exact amount in of underlying;\n // * mint: the underlying amount subtracted from the Vault is bigger than wrapper's calculated amount in;\n // * withdraw: the wrapper didn't respect the exact amount out of underlying;\n // * redeem: the underlying amount added to the Vault is smaller than wrapper's calculated amount out.\n revert NotEnoughUnderlying(\n IERC4626(address(wrappedToken)),\n expectedUnderlyingReservesAfter,\n underlyingBalancesAfter\n );\n }\n // Update the Vault's underlying reserves, discarding any unexpected imbalance of tokens (difference between\n // actual and expected vault balance).\n _reservesOf[underlyingToken] = underlyingBalancesAfter;\n\n // Update the Vault's wrapped reserves.\n uint256 wrappedBalancesAfter = wrappedToken.balanceOf(address(this));\n if (wrappedBalancesAfter < expectedWrappedReservesAfter) {\n // If the Vault's wrapped balance is smaller than expected, the Vault was drained and the operation should\n // revert. It may happen in different ways, depending on the wrap/unwrap operation:\n // * deposit: the wrapped amount added to the Vault is smaller than wrapper's calculated amount out;\n // * mint: the wrapper didn't respect the exact amount out of wrapped;\n // * withdraw: the wrapped amount subtracted from the Vault is bigger than wrapper's calculated amount in;\n // * redeem: the wrapper didn't respect the exact amount in of wrapped.\n revert NotEnoughWrapped(\n IERC4626(address(wrappedToken)),\n expectedWrappedReservesAfter,\n wrappedBalancesAfter\n );\n }\n // Update the Vault's wrapped reserves, discarding any unexpected surplus of tokens (difference between\n // the Vault's actual and expected balances).\n _reservesOf[wrappedToken] = wrappedBalancesAfter;\n }\n\n // Minimum token value in or out (applied to scaled18 values), enforced as a security measure to block potential\n // exploitation of rounding errors. This is called in the context of adding or removing liquidity, so zero is\n // allowed to support single-token operations.\n function _ensureValidTradeAmount(uint256 tradeAmount) internal view {\n if (tradeAmount != 0) {\n _ensureValidSwapAmount(tradeAmount);\n }\n }\n\n // Minimum token value in or out (applied to scaled18 values), enforced as a security measure to block potential\n // exploitation of rounding errors. This is called in the swap context, so zero is not a valid amount. Note that\n // since this is applied to the scaled amount, the corresponding minimum raw amount will vary according to token\n // decimals. The math functions are called with scaled amounts, and the magnitude of the minimum values is based\n // on the maximum error, so this is fine. Trying to adjust for decimals would add complexity and significant gas\n // to the critical path, so we don't do it. (Note that very low-decimal tokens don't work well in AMMs generally;\n // this is another reason to avoid them.)\n function _ensureValidSwapAmount(uint256 tradeAmount) internal view {\n if (tradeAmount < _MINIMUM_TRADE_AMOUNT) {\n revert TradeAmountTooSmall();\n }\n }\n\n /*******************************************************************************\n Miscellaneous\n *******************************************************************************/\n\n /// @inheritdoc IVaultMain\n function getVaultExtension() external view returns (address) {\n return _implementation();\n }\n\n /**\n * @inheritdoc Proxy\n * @dev Returns the VaultExtension contract, to which fallback requests are forwarded.\n */\n function _implementation() internal view override returns (address) {\n return address(_vaultExtension);\n }\n\n /*******************************************************************************\n Default handlers\n *******************************************************************************/\n\n receive() external payable {\n revert CannotReceiveEth();\n }\n\n // solhint-disable no-complex-fallback\n\n /**\n * @inheritdoc Proxy\n * @dev Override proxy implementation of `fallback` to disallow incoming ETH transfers.\n * This function actually returns whatever the VaultExtension does when handling the request.\n */\n fallback() external payable override {\n if (msg.value > 0) {\n revert CannotReceiveEth();\n }\n\n _fallback();\n }\n}\n"},"@balancer-labs/v3-vault/contracts/VaultAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IProtocolFeeController } from \"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\";\nimport { IAuthorizer } from \"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\";\nimport { IVaultAdmin } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\";\nimport { Rounding } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { PackedTokenBalance } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\";\nimport { EVMCallModeHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\";\nimport { Authentication } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\";\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport { VaultStateBits, VaultStateLib } from \"./lib/VaultStateLib.sol\";\nimport { PoolConfigLib, PoolConfigBits } from \"./lib/PoolConfigLib.sol\";\nimport { VaultExtensionsLib } from \"./lib/VaultExtensionsLib.sol\";\nimport { VaultCommon } from \"./VaultCommon.sol\";\nimport { VaultGuard } from \"./VaultGuard.sol\";\n\n/**\n * @dev Bytecode extension for the Vault containing permissioned functions. Complementary to `VaultExtension`,\n * it has access to the same storage layout as the main vault.\n *\n * The functions in this contract are not meant to be called directly. They must only be called by the Vault\n * via delegate calls, so that any state modifications produced by this contract's code will actually target\n * the main Vault's state.\n *\n * The storage of this contract is in practice unused.\n */\ncontract VaultAdmin is IVaultAdmin, VaultCommon, Authentication, VaultGuard {\n using PackedTokenBalance for bytes32;\n using PoolConfigLib for PoolConfigBits;\n using VaultStateLib for VaultStateBits;\n using VaultExtensionsLib for IVault;\n using FixedPoint for uint256;\n using SafeERC20 for IERC20;\n using SafeCast for *;\n\n // Minimum BPT amount minted upon initialization.\n uint256 internal constant _BUFFER_MINIMUM_TOTAL_SUPPLY = 1e4;\n\n /// @dev Functions with this modifier can only be delegate-called by the Vault.\n modifier onlyVaultDelegateCall() {\n _vault.ensureVaultDelegateCall();\n _;\n }\n\n /// @dev Functions with this modifier can only be called by the pool creator.\n modifier onlyProtocolFeeController() {\n if (msg.sender != address(_protocolFeeController)) {\n revert SenderNotAllowed();\n }\n _;\n }\n\n /// @dev Validate aggregate percentage values.\n modifier withValidPercentage(uint256 aggregatePercentage) {\n if (aggregatePercentage > FixedPoint.ONE) {\n revert ProtocolFeesExceedTotalCollected();\n }\n _;\n }\n\n constructor(\n IVault mainVault,\n uint32 pauseWindowDuration,\n uint32 bufferPeriodDuration,\n uint256 minTradeAmount,\n uint256 minWrapAmount\n ) Authentication(bytes32(uint256(uint160(address(mainVault))))) VaultGuard(mainVault) {\n if (pauseWindowDuration > _MAX_PAUSE_WINDOW_DURATION) {\n revert VaultPauseWindowDurationTooLarge();\n }\n if (bufferPeriodDuration > _MAX_BUFFER_PERIOD_DURATION) {\n revert PauseBufferPeriodDurationTooLarge();\n }\n\n // solhint-disable-next-line not-rely-on-time\n uint32 pauseWindowEndTime = (block.timestamp + pauseWindowDuration).toUint32();\n\n _vaultPauseWindowEndTime = pauseWindowEndTime;\n _vaultBufferPeriodDuration = bufferPeriodDuration;\n _vaultBufferPeriodEndTime = pauseWindowEndTime + bufferPeriodDuration;\n\n _MINIMUM_TRADE_AMOUNT = minTradeAmount;\n _MINIMUM_WRAP_AMOUNT = minWrapAmount;\n }\n\n /*******************************************************************************\n Constants and immutables\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function vault() external view returns (IVault) {\n return _vault;\n }\n\n /// @inheritdoc IVaultAdmin\n function getPauseWindowEndTime() external view returns (uint32) {\n return _vaultPauseWindowEndTime;\n }\n\n /// @inheritdoc IVaultAdmin\n function getBufferPeriodDuration() external view returns (uint32) {\n return _vaultBufferPeriodDuration;\n }\n\n /// @inheritdoc IVaultAdmin\n function getBufferPeriodEndTime() external view returns (uint32) {\n return _vaultBufferPeriodEndTime;\n }\n\n /// @inheritdoc IVaultAdmin\n function getMinimumPoolTokens() external pure returns (uint256) {\n return _MIN_TOKENS;\n }\n\n /// @inheritdoc IVaultAdmin\n function getMaximumPoolTokens() external pure returns (uint256) {\n return _MAX_TOKENS;\n }\n\n /// @inheritdoc IVaultAdmin\n function getPoolMinimumTotalSupply() external pure returns (uint256) {\n return _POOL_MINIMUM_TOTAL_SUPPLY;\n }\n\n /// @inheritdoc IVaultAdmin\n function getBufferMinimumTotalSupply() external pure returns (uint256) {\n return _BUFFER_MINIMUM_TOTAL_SUPPLY;\n }\n\n /// @inheritdoc IVaultAdmin\n function getMinimumTradeAmount() external view returns (uint256) {\n return _MINIMUM_TRADE_AMOUNT;\n }\n\n /// @inheritdoc IVaultAdmin\n function getMinimumWrapAmount() external view returns (uint256) {\n return _MINIMUM_WRAP_AMOUNT;\n }\n\n /*******************************************************************************\n Vault Pausing\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function isVaultPaused() external view onlyVaultDelegateCall returns (bool) {\n return _isVaultPaused();\n }\n\n /// @inheritdoc IVaultAdmin\n function getVaultPausedState() external view onlyVaultDelegateCall returns (bool, uint32, uint32) {\n return (_isVaultPaused(), _vaultPauseWindowEndTime, _vaultBufferPeriodEndTime);\n }\n\n /// @inheritdoc IVaultAdmin\n function pauseVault() external onlyVaultDelegateCall authenticate {\n _setVaultPaused(true);\n }\n\n /// @inheritdoc IVaultAdmin\n function unpauseVault() external onlyVaultDelegateCall authenticate {\n _setVaultPaused(false);\n }\n\n /**\n * @dev The contract can only be paused until the end of the Pause Window, and\n * unpaused until the end of the Buffer Period.\n */\n function _setVaultPaused(bool pausing) internal {\n if (_isVaultPaused()) {\n if (pausing) {\n // Already paused, and we're trying to pause it again.\n revert VaultPaused();\n }\n\n // The Vault can always be unpaused while it's paused.\n // When the buffer period expires, `_isVaultPaused` will return false, so we would be in the outside\n // else clause, where trying to unpause will revert unconditionally.\n } else {\n if (pausing) {\n // Not already paused; we can pause within the window.\n // solhint-disable-next-line not-rely-on-time\n if (block.timestamp >= _vaultPauseWindowEndTime) {\n revert VaultPauseWindowExpired();\n }\n } else {\n // Not paused, and we're trying to unpause it.\n revert VaultNotPaused();\n }\n }\n\n VaultStateBits vaultState = _vaultStateBits;\n vaultState = vaultState.setVaultPaused(pausing);\n _vaultStateBits = vaultState;\n\n emit VaultPausedStateChanged(pausing);\n }\n\n /*******************************************************************************\n Pool Pausing\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function pausePool(address pool) external onlyVaultDelegateCall withRegisteredPool(pool) {\n _setPoolPaused(pool, true);\n }\n\n /// @inheritdoc IVaultAdmin\n function unpausePool(address pool) external onlyVaultDelegateCall withRegisteredPool(pool) {\n _setPoolPaused(pool, false);\n }\n\n function _setPoolPaused(address pool, bool pausing) internal {\n _ensureAuthenticatedByRole(pool, _poolRoleAccounts[pool].pauseManager);\n\n PoolConfigBits config = _poolConfigBits[pool];\n\n if (_isPoolPaused(pool)) {\n if (pausing) {\n // Already paused, and we're trying to pause it again.\n revert PoolPaused(pool);\n }\n\n // The pool can always be unpaused while it's paused.\n // When the buffer period expires, `_isPoolPaused` will return false, so we would be in the outside\n // else clause, where trying to unpause will revert unconditionally.\n } else {\n if (pausing) {\n // Not already paused; we can pause within the window.\n // solhint-disable-next-line not-rely-on-time\n if (block.timestamp >= config.getPauseWindowEndTime()) {\n revert PoolPauseWindowExpired(pool);\n }\n } else {\n // Not paused, and we're trying to unpause it.\n revert PoolNotPaused(pool);\n }\n }\n\n // Update poolConfigBits.\n _poolConfigBits[pool] = config.setPoolPaused(pausing);\n\n emit PoolPausedStateChanged(pool, pausing);\n }\n\n /*******************************************************************************\n Fees\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function setStaticSwapFeePercentage(\n address pool,\n uint256 swapFeePercentage\n ) external onlyVaultDelegateCall withRegisteredPool(pool) {\n _ensureAuthenticatedByExclusiveRole(pool, _poolRoleAccounts[pool].swapFeeManager);\n _ensureUnpaused(pool);\n\n _setStaticSwapFeePercentage(pool, swapFeePercentage);\n }\n\n /// @inheritdoc IVaultAdmin\n function collectAggregateFees(\n address pool\n )\n public\n onlyVaultDelegateCall\n onlyWhenUnlocked\n onlyProtocolFeeController\n withRegisteredPool(pool)\n returns (uint256[] memory totalSwapFees, uint256[] memory totalYieldFees)\n {\n IERC20[] memory poolTokens = _vault.getPoolTokens(pool);\n uint256 numTokens = poolTokens.length;\n\n totalSwapFees = new uint256[](numTokens);\n totalYieldFees = new uint256[](numTokens);\n\n for (uint256 i = 0; i < poolTokens.length; ++i) {\n IERC20 token = poolTokens[i];\n\n (totalSwapFees[i], totalYieldFees[i]) = _aggregateFeeAmounts[pool][token].fromPackedBalance();\n\n if (totalSwapFees[i] > 0 || totalYieldFees[i] > 0) {\n // Supply credit for the total amount of fees.\n _aggregateFeeAmounts[pool][token] = 0;\n _supplyCredit(token, totalSwapFees[i] + totalYieldFees[i]);\n }\n }\n }\n\n /// @inheritdoc IVaultAdmin\n function updateAggregateSwapFeePercentage(\n address pool,\n uint256 newAggregateSwapFeePercentage\n )\n external\n onlyVaultDelegateCall\n withRegisteredPool(pool)\n withValidPercentage(newAggregateSwapFeePercentage)\n onlyProtocolFeeController\n {\n _poolConfigBits[pool] = _poolConfigBits[pool].setAggregateSwapFeePercentage(newAggregateSwapFeePercentage);\n\n emit AggregateSwapFeePercentageChanged(pool, newAggregateSwapFeePercentage);\n }\n\n /// @inheritdoc IVaultAdmin\n function updateAggregateYieldFeePercentage(\n address pool,\n uint256 newAggregateYieldFeePercentage\n )\n external\n onlyVaultDelegateCall\n withRegisteredPool(pool)\n withValidPercentage(newAggregateYieldFeePercentage)\n onlyProtocolFeeController\n {\n _poolConfigBits[pool] = _poolConfigBits[pool].setAggregateYieldFeePercentage(newAggregateYieldFeePercentage);\n\n emit AggregateYieldFeePercentageChanged(pool, newAggregateYieldFeePercentage);\n }\n\n /// @inheritdoc IVaultAdmin\n function setProtocolFeeController(\n IProtocolFeeController newProtocolFeeController\n ) external onlyVaultDelegateCall authenticate nonReentrant {\n _protocolFeeController = newProtocolFeeController;\n\n emit ProtocolFeeControllerChanged(newProtocolFeeController);\n }\n\n /*******************************************************************************\n Recovery Mode\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function enableRecoveryMode(address pool) external onlyVaultDelegateCall withRegisteredPool(pool) {\n _ensurePoolNotInRecoveryMode(pool);\n\n // If the Vault or pool is pausable (and currently paused), this call is permissionless.\n if (_isPoolPaused(pool) == false && _isVaultPaused() == false) {\n // If not permissionless, authenticate with governance.\n _authenticateCaller();\n }\n\n _setPoolRecoveryMode(pool, true);\n }\n\n /// @inheritdoc IVaultAdmin\n function disableRecoveryMode(address pool) external onlyVaultDelegateCall withRegisteredPool(pool) authenticate {\n _ensurePoolInRecoveryMode(pool);\n _setPoolRecoveryMode(pool, false);\n }\n\n /**\n * @dev Reverts if the pool is in recovery mode.\n * @param pool The pool\n */\n function _ensurePoolNotInRecoveryMode(address pool) internal view {\n if (_isPoolInRecoveryMode(pool)) {\n revert PoolInRecoveryMode(pool);\n }\n }\n\n /**\n * @dev Change the recovery mode state of a pool, and emit an event. Assumes any validation (e.g., whether\n * the proposed state change is consistent) has already been done.\n *\n * @param pool The pool\n * @param recoveryMode The desired recovery mode state\n */\n function _setPoolRecoveryMode(address pool, bool recoveryMode) internal {\n if (recoveryMode == false) {\n _syncPoolBalancesAfterRecoveryMode(pool);\n }\n\n // Update poolConfigBits. `_writePoolBalancesToStorage` updates *only* balances, not yield fees, which are\n // forfeited during Recovery Mode. To prevent yield fees from being charged, `_loadPoolData` must be called\n // while still in Recovery Mode, so updating the Recovery Mode bit must be done last, after the accounting.\n _poolConfigBits[pool] = _poolConfigBits[pool].setPoolInRecoveryMode(recoveryMode);\n\n emit PoolRecoveryModeStateChanged(pool, recoveryMode);\n }\n\n /**\n * @dev Raw and live balances will diverge as tokens are withdrawn during Recovery Mode. Live balances cannot\n * be updated in Recovery Mode, as this would require making external calls to update rates, which could fail.\n * When Recovery Mode is disabled, re-sync the balances.\n */\n function _syncPoolBalancesAfterRecoveryMode(address pool) private nonReentrant {\n _writePoolBalancesToStorage(pool, _loadPoolData(pool, Rounding.ROUND_DOWN));\n }\n\n /*******************************************************************************\n Query Functionality\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function disableQuery() external onlyVaultDelegateCall authenticate {\n _disableQuery();\n }\n\n /// @inheritdoc IVaultAdmin\n function disableQueryPermanently() external onlyVaultDelegateCall authenticate {\n _queriesDisabledPermanently = true;\n _disableQuery();\n }\n\n function _disableQuery() internal {\n VaultStateBits vaultState = _vaultStateBits;\n vaultState = vaultState.setQueryDisabled(true);\n _vaultStateBits = vaultState;\n\n emit VaultQueriesDisabled();\n }\n\n /// @inheritdoc IVaultAdmin\n function enableQuery() external onlyVaultDelegateCall authenticate {\n if (_queriesDisabledPermanently) {\n revert QueriesDisabledPermanently();\n }\n\n VaultStateBits vaultState = _vaultStateBits;\n vaultState = vaultState.setQueryDisabled(false);\n _vaultStateBits = vaultState;\n\n emit VaultQueriesEnabled();\n }\n\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function areBuffersPaused() external view onlyVaultDelegateCall returns (bool) {\n return _vaultStateBits.areBuffersPaused();\n }\n\n /// @inheritdoc IVaultAdmin\n function pauseVaultBuffers() external onlyVaultDelegateCall authenticate {\n _setVaultBufferPauseState(true);\n }\n\n /// @inheritdoc IVaultAdmin\n function unpauseVaultBuffers() external onlyVaultDelegateCall authenticate {\n _setVaultBufferPauseState(false);\n }\n\n function _setVaultBufferPauseState(bool paused) private {\n VaultStateBits vaultState = _vaultStateBits;\n vaultState = vaultState.setBuffersPaused(paused);\n _vaultStateBits = vaultState;\n\n emit VaultBuffersPausedStateChanged(paused);\n }\n\n /// @inheritdoc IVaultAdmin\n function initializeBuffer(\n IERC4626 wrappedToken,\n uint256 amountUnderlyingRaw,\n uint256 amountWrappedRaw,\n uint256 minIssuedShares,\n address sharesOwner\n )\n public\n onlyVaultDelegateCall\n onlyWhenUnlocked\n whenVaultBuffersAreNotPaused\n nonReentrant\n returns (uint256 issuedShares)\n {\n if (_bufferAssets[wrappedToken] != address(0)) {\n revert BufferAlreadyInitialized(wrappedToken);\n }\n\n address underlyingToken = wrappedToken.asset();\n\n if (underlyingToken == address(0)) {\n // Should never happen, but a malicious wrapper could return the zero address and cause the buffer\n // initialization code to run more than once.\n revert InvalidUnderlyingToken(wrappedToken);\n }\n\n // Register asset of wrapper, so it cannot change.\n _bufferAssets[wrappedToken] = underlyingToken;\n\n // Take debt for initialization assets.\n _takeDebt(IERC20(underlyingToken), amountUnderlyingRaw);\n _takeDebt(wrappedToken, amountWrappedRaw);\n\n // Update buffer balances.\n bytes32 bufferBalances = PackedTokenBalance.toPackedBalance(amountUnderlyingRaw, amountWrappedRaw);\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n\n // At initialization, the initial \"BPT rate\" is 1, so the `issuedShares` is simply the sum of the initial\n // buffer token balances, converted to underlying. We use `previewRedeem` to convert wrapped to underlying,\n // since `redeem` is an EXACT_IN operation that rounds down the result.\n issuedShares = wrappedToken.previewRedeem(amountWrappedRaw) + amountUnderlyingRaw;\n _ensureBufferMinimumTotalSupply(issuedShares);\n\n // Divide `issuedShares` between the zero address, which receives the minimum supply, and the account\n // depositing the tokens to initialize the buffer, which receives the balance.\n issuedShares -= _BUFFER_MINIMUM_TOTAL_SUPPLY;\n\n _mintMinimumBufferSupplyReserve(wrappedToken);\n _mintBufferShares(wrappedToken, sharesOwner, issuedShares);\n\n if (issuedShares < minIssuedShares) {\n revert IssuedSharesBelowMin(issuedShares, minIssuedShares);\n }\n\n emit LiquidityAddedToBuffer(wrappedToken, amountUnderlyingRaw, amountWrappedRaw, bufferBalances);\n }\n\n /// @inheritdoc IVaultAdmin\n function addLiquidityToBuffer(\n IERC4626 wrappedToken,\n uint256 maxAmountUnderlyingInRaw,\n uint256 maxAmountWrappedInRaw,\n uint256 exactSharesToIssue,\n address sharesOwner\n )\n public\n onlyVaultDelegateCall\n onlyWhenUnlocked\n whenVaultBuffersAreNotPaused\n withInitializedBuffer(wrappedToken)\n nonReentrant\n returns (uint256 amountUnderlyingRaw, uint256 amountWrappedRaw)\n {\n // Check wrapped token asset correctness.\n address underlyingToken = wrappedToken.asset();\n _ensureCorrectBufferAsset(wrappedToken, underlyingToken);\n\n bytes32 bufferBalances = _bufferTokenBalances[wrappedToken];\n\n // To proportionally add liquidity to buffer, we need to calculate the buffer invariant ratio. It's calculated\n // as the amount of buffer shares the sender wants to issue (which in practice is the value that the sender\n // will add to the buffer, expressed in underlying token amounts), divided by the total shares of\n // the buffer.\n // Multiply the current buffer balance by the invariant ratio to calculate the amount of underlying and wrapped\n // tokens to add, keeping the proportion of the buffer.\n uint256 totalShares = _bufferTotalShares[wrappedToken];\n amountUnderlyingRaw = bufferBalances.getBalanceRaw().mulDivUp(exactSharesToIssue, totalShares);\n amountWrappedRaw = bufferBalances.getBalanceDerived().mulDivUp(exactSharesToIssue, totalShares);\n\n if (amountUnderlyingRaw > maxAmountUnderlyingInRaw) {\n revert AmountInAboveMax(IERC20(underlyingToken), amountUnderlyingRaw, maxAmountUnderlyingInRaw);\n }\n\n if (amountWrappedRaw > maxAmountWrappedInRaw) {\n revert AmountInAboveMax(IERC20(wrappedToken), amountWrappedRaw, maxAmountWrappedInRaw);\n }\n\n // Take debt for assets going into the buffer (wrapped and underlying).\n _takeDebt(IERC20(underlyingToken), amountUnderlyingRaw);\n _takeDebt(wrappedToken, amountWrappedRaw);\n\n // Add the amountsIn to the current buffer balances.\n bufferBalances = PackedTokenBalance.toPackedBalance(\n bufferBalances.getBalanceRaw() + amountUnderlyingRaw,\n bufferBalances.getBalanceDerived() + amountWrappedRaw\n );\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n\n // Mint new shares to the owner.\n _mintBufferShares(wrappedToken, sharesOwner, exactSharesToIssue);\n\n emit LiquidityAddedToBuffer(wrappedToken, amountUnderlyingRaw, amountWrappedRaw, bufferBalances);\n }\n\n function _mintMinimumBufferSupplyReserve(IERC4626 wrappedToken) internal {\n _bufferTotalShares[wrappedToken] = _BUFFER_MINIMUM_TOTAL_SUPPLY;\n _bufferLpShares[wrappedToken][address(0)] = _BUFFER_MINIMUM_TOTAL_SUPPLY;\n\n emit BufferSharesMinted(wrappedToken, address(0), _BUFFER_MINIMUM_TOTAL_SUPPLY);\n }\n\n function _mintBufferShares(IERC4626 wrappedToken, address to, uint256 amount) internal {\n if (to == address(0)) {\n revert BufferSharesInvalidReceiver();\n }\n\n uint256 newTotalSupply = _bufferTotalShares[wrappedToken] + amount;\n\n // This is called on buffer initialization - after the minimum reserve amount has been minted - and during\n // subsequent adds, when we're increasing it, so we do not really need to check it against the minimum.\n // We do it anyway out of an abundance of caution, and to preserve symmetry with `_burnBufferShares`.\n _ensureBufferMinimumTotalSupply(newTotalSupply);\n\n _bufferTotalShares[wrappedToken] = newTotalSupply;\n _bufferLpShares[wrappedToken][to] += amount;\n\n emit BufferSharesMinted(wrappedToken, to, amount);\n }\n\n /// @inheritdoc IVaultAdmin\n function removeLiquidityFromBuffer(\n IERC4626 wrappedToken,\n uint256 sharesToRemove,\n uint256 minAmountUnderlyingOutRaw,\n uint256 minAmountWrappedOutRaw\n ) external onlyVaultDelegateCall returns (uint256 removedUnderlyingBalanceRaw, uint256 removedWrappedBalanceRaw) {\n return\n abi.decode(\n _vault.unlock(\n abi.encodeCall(\n VaultAdmin.removeLiquidityFromBufferHook,\n (wrappedToken, sharesToRemove, minAmountUnderlyingOutRaw, minAmountWrappedOutRaw, msg.sender)\n )\n ),\n (uint256, uint256)\n );\n }\n\n /**\n * @dev Internal hook for `removeLiquidityFromBuffer`. Can only be called by the Vault itself via\n * `removeLiquidityFromBuffer`, which correctly forwards the real sender as the `sharesOwner`.\n * This function must be reentrant because it calls the nonReentrant function `sendTo`. However,\n * since `sendTo` is the only function that makes external calls, `removeLiquidityFromBufferHook`\n * cannot reenter the Vault.\n *\n * @param wrappedToken Address of the wrapped token that implements IERC4626\n * @param sharesToRemove Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's\n * total shares\n * @param minAmountUnderlyingOutRaw Minimum amount of underlying tokens to receive from the buffer. It is expressed\n * in underlying token native decimals\n * @param minAmountWrappedOutRaw Minimum amount of wrapped tokens to receive from the buffer. It is expressed in\n * wrapped token native decimals\n * @param sharesOwner Owner of the shares (`msg.sender` for `removeLiquidityFromBuffer` entrypoint)\n * @return removedUnderlyingBalanceRaw Amount of underlying tokens returned to the user\n * @return removedWrappedBalanceRaw Amount of wrapped tokens returned to the user\n */\n function removeLiquidityFromBufferHook(\n IERC4626 wrappedToken,\n uint256 sharesToRemove,\n uint256 minAmountUnderlyingOutRaw,\n uint256 minAmountWrappedOutRaw,\n address sharesOwner\n )\n external\n onlyVaultDelegateCall\n onlyVault\n onlyWhenUnlocked\n withInitializedBuffer(wrappedToken)\n returns (uint256 removedUnderlyingBalanceRaw, uint256 removedWrappedBalanceRaw)\n {\n if (_isQueryContext()) {\n // Increase `sharesOwner` balance to ensure that both the share amount check and the burn function succeed.\n _queryModeBufferSharesIncrease(wrappedToken, sharesOwner, sharesToRemove);\n }\n\n if (sharesToRemove > _bufferLpShares[wrappedToken][sharesOwner]) {\n revert NotEnoughBufferShares();\n }\n\n bytes32 bufferBalances = _bufferTokenBalances[wrappedToken];\n uint256 totalShares = _bufferTotalShares[wrappedToken];\n\n removedUnderlyingBalanceRaw = (bufferBalances.getBalanceRaw() * sharesToRemove) / totalShares;\n removedWrappedBalanceRaw = (bufferBalances.getBalanceDerived() * sharesToRemove) / totalShares;\n\n // We get the underlying token stored internally as opposed to calling `asset()` in the wrapped token.\n // This is to avoid any kind of unnecessary external call; the underlying token is set during initialization\n // and can't change afterwards, so it is already validated at this point. There is no way to add liquidity\n // with an asset that differs from the one set during initialization.\n IERC20 underlyingToken = IERC20(_bufferAssets[wrappedToken]);\n\n if (removedUnderlyingBalanceRaw < minAmountUnderlyingOutRaw) {\n revert AmountInAboveMax(IERC20(underlyingToken), removedUnderlyingBalanceRaw, minAmountUnderlyingOutRaw);\n }\n\n if (removedWrappedBalanceRaw < minAmountWrappedOutRaw) {\n revert AmountInAboveMax(IERC20(wrappedToken), removedWrappedBalanceRaw, minAmountWrappedOutRaw);\n }\n\n _supplyCredit(underlyingToken, removedUnderlyingBalanceRaw);\n _supplyCredit(wrappedToken, removedWrappedBalanceRaw);\n\n bufferBalances = PackedTokenBalance.toPackedBalance(\n bufferBalances.getBalanceRaw() - removedUnderlyingBalanceRaw,\n bufferBalances.getBalanceDerived() - removedWrappedBalanceRaw\n );\n\n _bufferTokenBalances[wrappedToken] = bufferBalances;\n\n // Ensures we cannot drop the supply below the minimum.\n _burnBufferShares(wrappedToken, sharesOwner, sharesToRemove);\n\n // This triggers an external call to itself; the Vault is acting as a Router in this case.\n // `sendTo` makes external calls (`transfer`) but is non-reentrant.\n if (removedUnderlyingBalanceRaw > 0) {\n _vault.sendTo(underlyingToken, sharesOwner, removedUnderlyingBalanceRaw);\n }\n if (removedWrappedBalanceRaw > 0) {\n _vault.sendTo(wrappedToken, sharesOwner, removedWrappedBalanceRaw);\n }\n\n emit LiquidityRemovedFromBuffer(\n wrappedToken,\n removedUnderlyingBalanceRaw,\n removedWrappedBalanceRaw,\n bufferBalances\n );\n }\n\n function _burnBufferShares(IERC4626 wrappedToken, address from, uint256 amount) internal {\n if (from == address(0)) {\n revert BufferSharesInvalidOwner();\n }\n\n uint256 newTotalSupply = _bufferTotalShares[wrappedToken] - amount;\n\n // Ensure that the buffer can never be drained below the minimum total supply.\n _ensureBufferMinimumTotalSupply(newTotalSupply);\n\n _bufferTotalShares[wrappedToken] = newTotalSupply;\n _bufferLpShares[wrappedToken][from] -= amount;\n\n emit BufferSharesBurned(wrappedToken, from, amount);\n }\n\n /// @dev For query mode usage only, inside `removeLiquidityFromBuffer`.\n function _queryModeBufferSharesIncrease(IERC4626 wrappedToken, address to, uint256 amount) internal {\n // Enforce that this can only be called in a read-only, query context.\n if (EVMCallModeHelpers.isStaticCall() == false) {\n revert EVMCallModeHelpers.NotStaticCall();\n }\n\n // Increase `to` balance to ensure the burn function succeeds during query.\n _bufferLpShares[wrappedToken][to] += amount;\n }\n\n /// @inheritdoc IVaultAdmin\n function getBufferAsset(\n IERC4626 wrappedToken\n ) external view onlyVaultDelegateCall returns (address underlyingToken) {\n return _bufferAssets[wrappedToken];\n }\n\n /// @inheritdoc IVaultAdmin\n function getBufferOwnerShares(\n IERC4626 token,\n address user\n ) external view onlyVaultDelegateCall returns (uint256 shares) {\n return _bufferLpShares[token][user];\n }\n\n /// @inheritdoc IVaultAdmin\n function getBufferTotalShares(IERC4626 token) external view onlyVaultDelegateCall returns (uint256 shares) {\n return _bufferTotalShares[token];\n }\n\n /// @inheritdoc IVaultAdmin\n function getBufferBalance(IERC4626 token) external view onlyVaultDelegateCall returns (uint256, uint256) {\n // The first balance is underlying, and the last is wrapped balance.\n return (_bufferTokenBalances[token].getBalanceRaw(), _bufferTokenBalances[token].getBalanceDerived());\n }\n\n function _ensureBufferMinimumTotalSupply(uint256 newTotalSupply) private pure {\n if (newTotalSupply < _BUFFER_MINIMUM_TOTAL_SUPPLY) {\n revert BufferTotalSupplyTooLow(newTotalSupply);\n }\n }\n\n /*******************************************************************************\n Authentication\n *******************************************************************************/\n\n /// @inheritdoc IVaultAdmin\n function setAuthorizer(IAuthorizer newAuthorizer) external onlyVaultDelegateCall authenticate {\n _authorizer = newAuthorizer;\n\n emit AuthorizerChanged(newAuthorizer);\n }\n\n /// @dev Authenticate by role; otherwise fall through and check governance.\n function _ensureAuthenticatedByRole(address pool, address roleAddress) private view {\n if (msg.sender == roleAddress) {\n return;\n }\n\n _ensureAuthenticated(pool);\n }\n\n /// @dev Authenticate exclusively by role; caller must match the `roleAddress`, if assigned.\n function _ensureAuthenticatedByExclusiveRole(address pool, address roleAddress) private view {\n if (roleAddress == address(0)) {\n // Defer to governance if no role assigned.\n _ensureAuthenticated(pool);\n } else if (msg.sender != roleAddress) {\n revert SenderNotAllowed();\n }\n }\n\n /// @dev Delegate authentication to governance.\n function _ensureAuthenticated(address pool) private view {\n bytes32 actionId = getActionId(msg.sig);\n\n if (_canPerform(actionId, msg.sender, pool) == false) {\n revert SenderNotAllowed();\n }\n }\n\n /// @dev Access control is delegated to the Authorizer.\n function _canPerform(bytes32 actionId, address user) internal view override returns (bool) {\n return _authorizer.canPerform(actionId, user, address(this));\n }\n\n /// @dev Access control is delegated to the Authorizer. `where` refers to the target contract.\n function _canPerform(bytes32 actionId, address user, address where) internal view returns (bool) {\n return _authorizer.canPerform(actionId, user, where);\n }\n\n /*******************************************************************************\n Default handlers\n *******************************************************************************/\n\n receive() external payable {\n revert CannotReceiveEth();\n }\n\n // solhint-disable no-complex-fallback\n\n fallback() external payable {\n if (msg.value > 0) {\n revert CannotReceiveEth();\n }\n\n revert(\"Not implemented\");\n }\n}\n"},"@balancer-labs/v3-vault/contracts/VaultCommon.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { SafeCast } from \"@openzeppelin/contracts/utils/math/SafeCast.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { ISwapFeePercentageBounds } from \"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\";\nimport { PoolData, Rounding } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\nimport { IVaultEvents } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\";\n\nimport { StorageSlotExtension } from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\";\nimport { EVMCallModeHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\";\nimport { PackedTokenBalance } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\";\nimport { ScalingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\";\nimport {\n ReentrancyGuardTransient\n} from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\";\nimport {\n TransientStorageHelpers\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\nimport { VaultStateBits, VaultStateLib } from \"./lib/VaultStateLib.sol\";\nimport { PoolConfigBits, PoolConfigLib } from \"./lib/PoolConfigLib.sol\";\nimport { ERC20MultiToken } from \"./token/ERC20MultiToken.sol\";\nimport { PoolDataLib } from \"./lib/PoolDataLib.sol\";\nimport { VaultStorage } from \"./VaultStorage.sol\";\n\n/**\n * @notice Functions and modifiers shared between the main Vault and its extension contracts.\n * @dev This contract contains common utilities in the inheritance chain that require storage to work,\n * and will be required in both the main Vault and its extensions.\n */\nabstract contract VaultCommon is IVaultEvents, IVaultErrors, VaultStorage, ReentrancyGuardTransient, ERC20MultiToken {\n using PoolConfigLib for PoolConfigBits;\n using VaultStateLib for VaultStateBits;\n using SafeCast for *;\n using TransientStorageHelpers for *;\n using StorageSlotExtension for *;\n using PoolDataLib for PoolData;\n\n /*******************************************************************************\n Transient Accounting\n *******************************************************************************/\n\n /**\n * @dev This modifier ensures that the function it modifies can only be called\n * when a tab has been opened.\n */\n modifier onlyWhenUnlocked() {\n _ensureUnlocked();\n _;\n }\n\n function _ensureUnlocked() internal view {\n if (_isUnlocked().tload() == false) {\n revert VaultIsNotUnlocked();\n }\n }\n\n /**\n * @notice Expose the state of the Vault's reentrancy guard.\n * @return True if the Vault is currently executing a nonReentrant function\n */\n function reentrancyGuardEntered() public view returns (bool) {\n return _reentrancyGuardEntered();\n }\n\n /**\n * @notice Records the `credit` for a given token.\n * @param token The ERC20 token for which the 'credit' will be accounted\n * @param credit The amount of `token` supplied to the Vault in favor of the caller\n */\n function _supplyCredit(IERC20 token, uint256 credit) internal {\n _accountDelta(token, -credit.toInt256());\n }\n\n /**\n * @notice Records the `debt` for a given token.\n * @param token The ERC20 token for which the `debt` will be accounted\n * @param debt The amount of `token` taken from the Vault in favor of the caller\n */\n function _takeDebt(IERC20 token, uint256 debt) internal {\n _accountDelta(token, debt.toInt256());\n }\n\n /**\n * @dev Accounts the delta for the given token. A positive delta represents debt,\n * while a negative delta represents surplus.\n *\n * @param token The ERC20 token for which the delta is being accounted\n * @param delta The difference in the token balance\n * Positive indicates a debit or a decrease in Vault's tokens,\n * negative indicates a credit or an increase in Vault's tokens.\n */\n function _accountDelta(IERC20 token, int256 delta) internal {\n // If the delta is zero, there's nothing to account for.\n if (delta == 0) return;\n\n // Get the current recorded delta for this token.\n int256 current = _tokenDeltas().tGet(token);\n\n // Calculate the new delta after accounting for the change.\n int256 next = current + delta;\n\n if (next == 0) {\n // If the resultant delta becomes zero after this operation,\n // decrease the count of non-zero deltas.\n _nonZeroDeltaCount().tDecrement();\n } else if (current == 0) {\n // If there was no previous delta (i.e., it was zero) and now we have one,\n // increase the count of non-zero deltas.\n _nonZeroDeltaCount().tIncrement();\n }\n\n // Update the delta for this token.\n _tokenDeltas().tSet(token, next);\n }\n\n /*******************************************************************************\n Vault Pausing\n *******************************************************************************/\n\n /// @dev Modifier to make a function callable only when the Vault is not paused.\n modifier whenVaultNotPaused() {\n _ensureVaultNotPaused();\n _;\n }\n\n /// @dev Reverts if the Vault is paused.\n function _ensureVaultNotPaused() internal view {\n if (_isVaultPaused()) {\n revert VaultPaused();\n }\n }\n\n /// @dev Reverts if the Vault or the given pool are paused.\n function _ensureUnpaused(address pool) internal view {\n _ensureVaultNotPaused();\n _ensurePoolNotPaused(pool);\n }\n\n /**\n * @dev For gas efficiency, storage is only read before `_vaultBufferPeriodEndTime`. Once we're past that\n * timestamp, the expression short-circuits false, and the Vault is permanently unpaused.\n */\n function _isVaultPaused() internal view returns (bool) {\n // solhint-disable-next-line not-rely-on-time\n return block.timestamp <= _vaultBufferPeriodEndTime && _vaultStateBits.isVaultPaused();\n }\n\n /*******************************************************************************\n Pool Pausing\n *******************************************************************************/\n\n /// @dev Reverts if the pool is paused.\n function _ensurePoolNotPaused(address pool) internal view {\n if (_isPoolPaused(pool)) {\n revert PoolPaused(pool);\n }\n }\n\n /// @dev Check both the flag and timestamp to determine whether the pool is paused.\n function _isPoolPaused(address pool) internal view returns (bool) {\n (bool paused, ) = _getPoolPausedState(pool);\n\n return paused;\n }\n\n /// @dev Lowest level routine that plucks only the minimum necessary parts from storage.\n function _getPoolPausedState(address pool) internal view returns (bool, uint32) {\n PoolConfigBits config = _poolConfigBits[pool];\n\n bool isPoolPaused = config.isPoolPaused();\n uint32 pauseWindowEndTime = config.getPauseWindowEndTime();\n\n // Use the Vault's buffer period.\n // solhint-disable-next-line not-rely-on-time\n return (isPoolPaused && block.timestamp <= pauseWindowEndTime + _vaultBufferPeriodDuration, pauseWindowEndTime);\n }\n\n /*******************************************************************************\n Buffer Pausing\n *******************************************************************************/\n /// @dev Modifier to make a function callable only when vault buffers are not paused.\n modifier whenVaultBuffersAreNotPaused() {\n _ensureVaultBuffersAreNotPaused();\n _;\n }\n\n /// @dev Reverts if vault buffers are paused.\n function _ensureVaultBuffersAreNotPaused() internal view {\n if (_vaultStateBits.areBuffersPaused()) {\n revert VaultBuffersArePaused();\n }\n }\n\n /*******************************************************************************\n Pool Registration and Initialization\n *******************************************************************************/\n\n /// @dev Reverts unless `pool` is a registered Pool.\n modifier withRegisteredPool(address pool) {\n _ensureRegisteredPool(pool);\n _;\n }\n\n /// @dev Reverts unless `pool` is an initialized Pool.\n modifier withInitializedPool(address pool) {\n _ensureInitializedPool(pool);\n _;\n }\n\n function _ensureRegisteredPool(address pool) internal view {\n if (!_isPoolRegistered(pool)) {\n revert PoolNotRegistered(pool);\n }\n }\n\n /// @dev See `isPoolRegistered`\n function _isPoolRegistered(address pool) internal view returns (bool) {\n PoolConfigBits config = _poolConfigBits[pool];\n return config.isPoolRegistered();\n }\n\n function _ensureInitializedPool(address pool) internal view {\n if (!_isPoolInitialized(pool)) {\n revert PoolNotInitialized(pool);\n }\n }\n\n /// @dev See `isPoolInitialized`\n function _isPoolInitialized(address pool) internal view returns (bool) {\n PoolConfigBits config = _poolConfigBits[pool];\n return config.isPoolInitialized();\n }\n\n /*******************************************************************************\n Buffer Initialization & Validation\n *******************************************************************************/\n\n modifier withInitializedBuffer(IERC4626 wrappedToken) {\n _ensureBufferInitialized(wrappedToken);\n _;\n }\n\n function _ensureBufferInitialized(IERC4626 wrappedToken) internal view {\n if (_bufferAssets[wrappedToken] == address(0)) {\n revert BufferNotInitialized(wrappedToken);\n }\n }\n\n /**\n * @dev This assumes `underlyingToken` is non-zero; should be called by functions that have already ensured the\n * buffer has been initialized (e.g., those protected by `withInitializedBuffer`).\n */\n function _ensureCorrectBufferAsset(IERC4626 wrappedToken, address underlyingToken) internal view {\n if (_bufferAssets[wrappedToken] != underlyingToken) {\n // Asset was changed since the buffer was initialized.\n revert WrongUnderlyingToken(wrappedToken, underlyingToken);\n }\n }\n\n /*******************************************************************************\n Pool Information\n *******************************************************************************/\n\n /**\n * @dev Packs and sets the raw and live balances of a Pool's tokens to the current values in poolData.balancesRaw\n * and poolData.liveBalances in the same storage slot.\n */\n function _writePoolBalancesToStorage(address pool, PoolData memory poolData) internal {\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolBalances = _poolTokenBalances[pool];\n\n for (uint256 i = 0; i < poolData.balancesRaw.length; ++i) {\n // We assume all newBalances are properly ordered.\n poolBalances[i] = PackedTokenBalance.toPackedBalance(\n poolData.balancesRaw[i],\n poolData.balancesLiveScaled18[i]\n );\n }\n }\n\n /**\n * @dev Fill in PoolData, including paying protocol yield fees and computing final raw and live balances.\n * In normal operation, we update both balances and fees together. However, while Recovery Mode is enabled,\n * we cannot track yield fees, as that would involve making external calls that could fail and block withdrawals.\n *\n * Therefore, disabling Recovery Mode requires writing *only* the balances to storage, so we still need this\n * as a separate function. It is normally called by `_loadPoolDataUpdatingBalancesAndYieldFees`, but in the\n * Recovery Mode special case, it is called separately, with the result passed into `_writePoolBalancesToStorage`.\n */\n function _loadPoolData(address pool, Rounding roundingDirection) internal view returns (PoolData memory poolData) {\n poolData.load(\n _poolTokenBalances[pool],\n _poolConfigBits[pool],\n _poolTokenInfo[pool],\n _poolTokens[pool],\n roundingDirection\n );\n }\n\n /**\n * @dev Fill in PoolData, including paying protocol yield fees and computing final raw and live balances.\n * This function modifies protocol fees and balance storage. Out of an abundance of caution, since `_loadPoolData`\n * makes external calls, we are making anything that calls it and then modifies storage non-reentrant.\n * Side effects: updates `_aggregateFeeAmounts` and `_poolTokenBalances` in storage.\n */\n function _loadPoolDataUpdatingBalancesAndYieldFees(\n address pool,\n Rounding roundingDirection\n ) internal nonReentrant returns (PoolData memory poolData) {\n // Initialize poolData with base information for subsequent calculations.\n poolData.load(\n _poolTokenBalances[pool],\n _poolConfigBits[pool],\n _poolTokenInfo[pool],\n _poolTokens[pool],\n roundingDirection\n );\n\n PoolDataLib.syncPoolBalancesAndFees(poolData, _poolTokenBalances[pool], _aggregateFeeAmounts[pool]);\n }\n\n /**\n * @dev Updates the raw and live balance of a given token in poolData, scaling the given raw balance by both decimal\n * and token rates, and rounding the result in the given direction. Assumes scaling factors and rates are current\n * in PoolData.\n */\n function _updateRawAndLiveTokenBalancesInPoolData(\n PoolData memory poolData,\n uint256 newRawBalance,\n Rounding roundingDirection,\n uint256 tokenIndex\n ) internal pure returns (uint256) {\n poolData.balancesRaw[tokenIndex] = newRawBalance;\n\n function(uint256, uint256, uint256) internal pure returns (uint256) _upOrDown = roundingDirection ==\n Rounding.ROUND_UP\n ? ScalingHelpers.toScaled18ApplyRateRoundUp\n : ScalingHelpers.toScaled18ApplyRateRoundDown;\n\n poolData.balancesLiveScaled18[tokenIndex] = _upOrDown(\n newRawBalance,\n poolData.decimalScalingFactors[tokenIndex],\n poolData.tokenRates[tokenIndex]\n );\n\n return _upOrDown(newRawBalance, poolData.decimalScalingFactors[tokenIndex], poolData.tokenRates[tokenIndex]);\n }\n\n function _setStaticSwapFeePercentage(address pool, uint256 swapFeePercentage) internal {\n // These cannot be called during pool construction. Pools must be deployed first, then registered.\n if (swapFeePercentage < ISwapFeePercentageBounds(pool).getMinimumSwapFeePercentage()) {\n revert SwapFeePercentageTooLow();\n }\n\n if (swapFeePercentage > ISwapFeePercentageBounds(pool).getMaximumSwapFeePercentage()) {\n revert SwapFeePercentageTooHigh();\n }\n\n // The library also checks that the percentage is <= FP(1), regardless of what the pool defines.\n _poolConfigBits[pool] = _poolConfigBits[pool].setStaticSwapFeePercentage(swapFeePercentage);\n\n emit SwapFeePercentageChanged(pool, swapFeePercentage);\n }\n\n /// @dev Find the index of a token in a token array. Reverts if not found.\n function _findTokenIndex(IERC20[] memory tokens, IERC20 token) internal pure returns (uint256) {\n for (uint256 i = 0; i < tokens.length; i++) {\n if (tokens[i] == token) {\n return i;\n }\n }\n\n revert TokenNotRegistered(token);\n }\n\n /*******************************************************************************\n Recovery Mode\n *******************************************************************************/\n\n /// @dev Place on functions that may only be called when the associated pool is in recovery mode.\n modifier onlyInRecoveryMode(address pool) {\n _ensurePoolInRecoveryMode(pool);\n _;\n }\n\n /// @dev Reverts if the pool is not in recovery mode.\n function _ensurePoolInRecoveryMode(address pool) internal view {\n if (!_isPoolInRecoveryMode(pool)) {\n revert PoolNotInRecoveryMode(pool);\n }\n }\n\n /**\n * @notice Checks whether a pool is in recovery mode.\n * @param pool Address of the pool to check\n * @return inRecoveryMode True if the pool is in recovery mode, false otherwise\n */\n function _isPoolInRecoveryMode(address pool) internal view returns (bool) {\n return _poolConfigBits[pool].isPoolInRecoveryMode();\n }\n\n function _isQueryContext() internal view returns (bool) {\n return EVMCallModeHelpers.isStaticCall() && _vaultStateBits.isQueryDisabled() == false;\n }\n}\n"},"@balancer-labs/v3-vault/contracts/VaultExtension.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport { IERC4626 } from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { Proxy } from \"@openzeppelin/contracts/proxy/Proxy.sol\";\n\nimport { IAuthorizer } from \"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\";\nimport { IProtocolFeeController } from \"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\";\nimport { IRateProvider } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\";\nimport { IVaultExtension } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\";\nimport { IVaultAdmin } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\";\nimport { IBasePool } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\";\nimport { IHooks } from \"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { StorageSlotExtension } from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\";\nimport { EVMCallModeHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\";\nimport { PackedTokenBalance } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\";\nimport { ScalingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\";\nimport { CastingHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\";\nimport { InputHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport { RevertCodec } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\";\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\nimport {\n TransientStorageHelpers\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\nimport { VaultStateBits, VaultStateLib } from \"./lib/VaultStateLib.sol\";\nimport { PoolConfigLib, PoolConfigBits } from \"./lib/PoolConfigLib.sol\";\nimport { VaultExtensionsLib } from \"./lib/VaultExtensionsLib.sol\";\nimport { HooksConfigLib } from \"./lib/HooksConfigLib.sol\";\nimport { PoolDataLib } from \"./lib/PoolDataLib.sol\";\nimport { BasePoolMath } from \"./BasePoolMath.sol\";\nimport { VaultCommon } from \"./VaultCommon.sol\";\n\n/**\n * @notice Bytecode extension for the Vault containing permissionless functions outside the critical path.\n * It has access to the same storage layout as the main vault.\n *\n * The functions in this contract are not meant to be called directly. They must only be called by the Vault\n * via delegate calls, so that any state modifications produced by this contract's code will actually target\n * the main Vault's state.\n *\n * The storage of this contract is in practice unused.\n */\ncontract VaultExtension is IVaultExtension, VaultCommon, Proxy {\n using Address for *;\n using CastingHelpers for uint256[];\n using FixedPoint for uint256;\n using PackedTokenBalance for bytes32;\n using PoolConfigLib for PoolConfigBits;\n using HooksConfigLib for PoolConfigBits;\n using VaultStateLib for VaultStateBits;\n using InputHelpers for uint256;\n using ScalingHelpers for *;\n using VaultExtensionsLib for IVault;\n using TransientStorageHelpers for *;\n using StorageSlotExtension for *;\n using PoolDataLib for PoolData;\n\n IVault private immutable _vault;\n IVaultAdmin private immutable _vaultAdmin;\n\n /// @dev Functions with this modifier can only be delegate-called by the Vault.\n modifier onlyVaultDelegateCall() {\n _ensureVaultDelegateCall();\n _;\n }\n\n function _ensureVaultDelegateCall() internal view {\n _vault.ensureVaultDelegateCall();\n }\n\n constructor(IVault mainVault, IVaultAdmin vaultAdmin) {\n if (vaultAdmin.vault() != mainVault) {\n revert WrongVaultAdminDeployment();\n }\n\n _vaultPauseWindowEndTime = vaultAdmin.getPauseWindowEndTime();\n _vaultBufferPeriodDuration = vaultAdmin.getBufferPeriodDuration();\n _vaultBufferPeriodEndTime = vaultAdmin.getBufferPeriodEndTime();\n\n _vault = mainVault;\n _vaultAdmin = vaultAdmin;\n }\n\n /*******************************************************************************\n Constants and immutables\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function vault() external view returns (IVault) {\n return _vault;\n }\n\n /// @inheritdoc IVaultExtension\n function getVaultAdmin() external view returns (address) {\n return _implementation();\n }\n\n /*******************************************************************************\n Transient Accounting\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function isUnlocked() external view onlyVaultDelegateCall returns (bool) {\n return _isUnlocked().tload();\n }\n\n /// @inheritdoc IVaultExtension\n function getNonzeroDeltaCount() external view onlyVaultDelegateCall returns (uint256) {\n return _nonZeroDeltaCount().tload();\n }\n\n /// @inheritdoc IVaultExtension\n function getTokenDelta(IERC20 token) external view onlyVaultDelegateCall returns (int256) {\n return _tokenDeltas().tGet(token);\n }\n\n /// @inheritdoc IVaultExtension\n function getReservesOf(IERC20 token) external view onlyVaultDelegateCall returns (uint256) {\n return _reservesOf[token];\n }\n\n /// @inheritdoc IVaultExtension\n function getAddLiquidityCalledFlag(address pool) external view onlyVaultDelegateCall returns (bool) {\n return _addLiquidityCalled().tGet(_sessionIdSlot().tload(), pool);\n }\n\n /*******************************************************************************\n Pool Registration\n *******************************************************************************/\n\n struct PoolRegistrationParams {\n TokenConfig[] tokenConfig;\n uint256 swapFeePercentage;\n uint32 pauseWindowEndTime;\n bool protocolFeeExempt;\n PoolRoleAccounts roleAccounts;\n address poolHooksContract;\n LiquidityManagement liquidityManagement;\n }\n\n /// @inheritdoc IVaultExtension\n function registerPool(\n address pool,\n TokenConfig[] memory tokenConfig,\n uint256 swapFeePercentage,\n uint32 pauseWindowEndTime,\n bool protocolFeeExempt,\n PoolRoleAccounts calldata roleAccounts,\n address poolHooksContract,\n LiquidityManagement calldata liquidityManagement\n ) external onlyVaultDelegateCall nonReentrant whenVaultNotPaused {\n _registerPool(\n pool,\n PoolRegistrationParams({\n tokenConfig: tokenConfig,\n swapFeePercentage: swapFeePercentage,\n pauseWindowEndTime: pauseWindowEndTime,\n protocolFeeExempt: protocolFeeExempt,\n roleAccounts: roleAccounts,\n poolHooksContract: poolHooksContract,\n liquidityManagement: liquidityManagement\n })\n );\n }\n\n /**\n * @dev The function will register the pool, setting its tokens with an initial balance of zero.\n * The function also checks for valid token addresses and ensures that the pool and tokens aren't\n * already registered.\n *\n * Emits a `PoolRegistered` event upon successful registration.\n */\n function _registerPool(address pool, PoolRegistrationParams memory params) internal {\n // Ensure the pool isn't already registered.\n if (_isPoolRegistered(pool)) {\n revert PoolAlreadyRegistered(pool);\n }\n\n uint256 numTokens = params.tokenConfig.length;\n if (numTokens < _MIN_TOKENS) {\n revert MinTokens();\n }\n if (numTokens > _MAX_TOKENS) {\n revert MaxTokens();\n }\n\n uint8[] memory tokenDecimalDiffs = new uint8[](numTokens);\n IERC20 previousToken;\n\n for (uint256 i = 0; i < numTokens; ++i) {\n TokenConfig memory tokenData = params.tokenConfig[i];\n IERC20 token = tokenData.token;\n\n // Ensure that the token address is valid.\n if (address(token) == address(0) || address(token) == pool) {\n revert InvalidToken();\n }\n\n // Enforce token sorting. (`previousToken` will be the zero address on the first iteration.)\n if (token < previousToken) {\n revert InputHelpers.TokensNotSorted();\n }\n\n if (token == previousToken) {\n revert TokenAlreadyRegistered(token);\n }\n\n bool hasRateProvider = tokenData.rateProvider != IRateProvider(address(0));\n\n _poolTokenInfo[pool][token] = TokenInfo({\n tokenType: tokenData.tokenType,\n rateProvider: tokenData.rateProvider,\n paysYieldFees: tokenData.paysYieldFees\n });\n\n if (tokenData.tokenType == TokenType.STANDARD) {\n if (hasRateProvider || tokenData.paysYieldFees) {\n revert InvalidTokenConfiguration();\n }\n } else if (tokenData.tokenType == TokenType.WITH_RATE) {\n if (hasRateProvider == false) {\n revert InvalidTokenConfiguration();\n }\n } else {\n revert InvalidTokenType();\n }\n\n // Store the token decimal conversion factor as a delta from the maximum supported value.\n uint8 tokenDecimals = IERC20Metadata(address(token)).decimals();\n\n if (tokenDecimals > _MAX_TOKEN_DECIMALS) {\n revert InvalidTokenDecimals();\n } else {\n unchecked {\n tokenDecimalDiffs[i] = _MAX_TOKEN_DECIMALS - tokenDecimals;\n }\n }\n\n // Store token and seed the next iteration.\n _poolTokens[pool].push(token);\n previousToken = token;\n }\n\n // Store the role account addresses (for getters).\n _poolRoleAccounts[pool] = params.roleAccounts;\n\n PoolConfigBits poolConfigBits;\n\n // Store the configuration, and mark the pool as registered.\n {\n // Initialize the pool-specific protocol fee values to the current global defaults.\n (uint256 aggregateSwapFeePercentage, uint256 aggregateYieldFeePercentage) = _protocolFeeController\n .registerPool(pool, params.roleAccounts.poolCreator, params.protocolFeeExempt);\n\n poolConfigBits = poolConfigBits.setPoolRegistered(true);\n poolConfigBits = poolConfigBits.setDisableUnbalancedLiquidity(\n params.liquidityManagement.disableUnbalancedLiquidity\n );\n poolConfigBits = poolConfigBits.setAddLiquidityCustom(params.liquidityManagement.enableAddLiquidityCustom);\n poolConfigBits = poolConfigBits.setRemoveLiquidityCustom(\n params.liquidityManagement.enableRemoveLiquidityCustom\n );\n poolConfigBits = poolConfigBits.setDonation(params.liquidityManagement.enableDonation);\n poolConfigBits = poolConfigBits.setTokenDecimalDiffs(PoolConfigLib.toTokenDecimalDiffs(tokenDecimalDiffs));\n poolConfigBits = poolConfigBits.setPauseWindowEndTime(params.pauseWindowEndTime);\n poolConfigBits = poolConfigBits.setAggregateSwapFeePercentage(aggregateSwapFeePercentage);\n poolConfigBits = poolConfigBits.setAggregateYieldFeePercentage(aggregateYieldFeePercentage);\n\n if (params.poolHooksContract != address(0)) {\n // If a hook address was passed, make sure that hook trusts the pool factory.\n if (\n IHooks(params.poolHooksContract).onRegister(\n msg.sender,\n pool,\n params.tokenConfig,\n params.liquidityManagement\n ) == false\n ) {\n revert HookRegistrationFailed(params.poolHooksContract, pool, msg.sender);\n }\n\n // Gets the default HooksConfig from the hook contract and saves it in the Vault state.\n // Storing into hooksConfig first avoids stack-too-deep.\n HookFlags memory hookFlags = IHooks(params.poolHooksContract).getHookFlags();\n\n // When enableHookAdjustedAmounts == true, hooks are able to modify the result of a liquidity or swap\n // operation by implementing an after hook. For simplicity, the Vault only supports modifying the\n // calculated part of the operation. As such, when a hook supports adjusted amounts, it cannot support\n // unbalanced liquidity operations, as this would introduce instances where the amount calculated is the\n // input amount (EXACT_OUT).\n if (\n hookFlags.enableHookAdjustedAmounts &&\n params.liquidityManagement.disableUnbalancedLiquidity == false\n ) {\n revert HookRegistrationFailed(params.poolHooksContract, pool, msg.sender);\n }\n\n poolConfigBits = poolConfigBits.setHookAdjustedAmounts(hookFlags.enableHookAdjustedAmounts);\n poolConfigBits = poolConfigBits.setShouldCallBeforeInitialize(hookFlags.shouldCallBeforeInitialize);\n poolConfigBits = poolConfigBits.setShouldCallAfterInitialize(hookFlags.shouldCallAfterInitialize);\n poolConfigBits = poolConfigBits.setShouldCallComputeDynamicSwapFee(\n hookFlags.shouldCallComputeDynamicSwapFee\n );\n poolConfigBits = poolConfigBits.setShouldCallBeforeSwap(hookFlags.shouldCallBeforeSwap);\n poolConfigBits = poolConfigBits.setShouldCallAfterSwap(hookFlags.shouldCallAfterSwap);\n poolConfigBits = poolConfigBits.setShouldCallBeforeAddLiquidity(hookFlags.shouldCallBeforeAddLiquidity);\n poolConfigBits = poolConfigBits.setShouldCallAfterAddLiquidity(hookFlags.shouldCallAfterAddLiquidity);\n poolConfigBits = poolConfigBits.setShouldCallBeforeRemoveLiquidity(\n hookFlags.shouldCallBeforeRemoveLiquidity\n );\n poolConfigBits = poolConfigBits.setShouldCallAfterRemoveLiquidity(\n hookFlags.shouldCallAfterRemoveLiquidity\n );\n }\n\n _poolConfigBits[pool] = poolConfigBits;\n _hooksContracts[pool] = IHooks(params.poolHooksContract);\n }\n\n // Static swap fee percentage has special limits, so we don't use the library function directly.\n _setStaticSwapFeePercentage(pool, params.swapFeePercentage);\n\n // Emit an event to log the pool registration (pass msg.sender as the factory argument).\n emit PoolRegistered(\n pool,\n msg.sender,\n params.tokenConfig,\n params.swapFeePercentage,\n params.pauseWindowEndTime,\n params.roleAccounts,\n poolConfigBits.toHooksConfig(IHooks(params.poolHooksContract)),\n params.liquidityManagement\n );\n }\n\n /// @inheritdoc IVaultExtension\n function isPoolRegistered(address pool) external view onlyVaultDelegateCall returns (bool) {\n return _isPoolRegistered(pool);\n }\n\n /// @inheritdoc IVaultExtension\n function initialize(\n address pool,\n address to,\n IERC20[] memory tokens,\n uint256[] memory exactAmountsIn,\n uint256 minBptAmountOut,\n bytes memory userData\n )\n external\n onlyVaultDelegateCall\n onlyWhenUnlocked\n withRegisteredPool(pool)\n nonReentrant\n returns (uint256 bptAmountOut)\n {\n _ensureUnpaused(pool);\n\n // Balances are zero until after initialize is called, so there is no need to charge pending yield fee here.\n PoolData memory poolData = _loadPoolData(pool, Rounding.ROUND_DOWN);\n\n if (poolData.poolConfigBits.isPoolInitialized()) {\n revert PoolAlreadyInitialized(pool);\n }\n uint256 numTokens = poolData.tokens.length;\n\n InputHelpers.ensureInputLengthMatch(numTokens, exactAmountsIn.length);\n\n // Amounts are entering pool math, so round down. A lower invariant after the join means less bptOut,\n // favoring the pool.\n uint256[] memory exactAmountsInScaled18 = exactAmountsIn.copyToScaled18ApplyRateRoundDownArray(\n poolData.decimalScalingFactors,\n poolData.tokenRates\n );\n\n if (poolData.poolConfigBits.shouldCallBeforeInitialize()) {\n HooksConfigLib.callBeforeInitializeHook(exactAmountsInScaled18, userData, _hooksContracts[pool]);\n // The before hook is reentrant, and could have changed token rates.\n // Updating balances here is unnecessary since they're 0, but we do not special case before init\n // for the sake of bytecode size.\n poolData.reloadBalancesAndRates(_poolTokenBalances[pool], Rounding.ROUND_DOWN);\n\n // Also update `exactAmountsInScaled18`, in case the underlying rates changed.\n exactAmountsInScaled18 = exactAmountsIn.copyToScaled18ApplyRateRoundDownArray(\n poolData.decimalScalingFactors,\n poolData.tokenRates\n );\n }\n\n bptAmountOut = _initialize(pool, to, poolData, tokens, exactAmountsIn, exactAmountsInScaled18, minBptAmountOut);\n\n if (poolData.poolConfigBits.shouldCallAfterInitialize()) {\n // `hooksContract` needed to fix stack too deep.\n IHooks hooksContract = _hooksContracts[pool];\n\n HooksConfigLib.callAfterInitializeHook(exactAmountsInScaled18, bptAmountOut, userData, hooksContract);\n }\n }\n\n function _initialize(\n address pool,\n address to,\n PoolData memory poolData,\n IERC20[] memory tokens,\n uint256[] memory exactAmountsIn,\n uint256[] memory exactAmountsInScaled18,\n uint256 minBptAmountOut\n ) internal returns (uint256 bptAmountOut) {\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolBalances = _poolTokenBalances[pool];\n\n for (uint256 i = 0; i < poolData.tokens.length; ++i) {\n IERC20 actualToken = poolData.tokens[i];\n\n // Tokens passed into `initialize` are the \"expected\" tokens.\n if (actualToken != tokens[i]) {\n revert TokensMismatch(pool, address(tokens[i]), address(actualToken));\n }\n\n // Debit token[i] for amountIn.\n _takeDebt(actualToken, exactAmountsIn[i]);\n\n // Store the new Pool balances (and initial last live balances).\n poolBalances[i] = PackedTokenBalance.toPackedBalance(exactAmountsIn[i], exactAmountsInScaled18[i]);\n }\n\n poolData.poolConfigBits = poolData.poolConfigBits.setPoolInitialized(true);\n\n // Store config and mark the pool as initialized.\n _poolConfigBits[pool] = poolData.poolConfigBits;\n\n // Pass scaled balances to the pool.\n bptAmountOut = IBasePool(pool).computeInvariant(exactAmountsInScaled18, Rounding.ROUND_DOWN);\n\n _ensurePoolMinimumTotalSupply(bptAmountOut);\n\n // At this point we know that bptAmountOut >= _POOL_MINIMUM_TOTAL_SUPPLY, so this will not revert.\n bptAmountOut -= _POOL_MINIMUM_TOTAL_SUPPLY;\n // When adding liquidity, we must mint tokens concurrently with updating pool balances,\n // as the pool's math relies on totalSupply.\n // Minting will be reverted if it results in a total supply less than the _POOL_MINIMUM_TOTAL_SUPPLY.\n _mintMinimumSupplyReserve(address(pool));\n _mint(address(pool), to, bptAmountOut);\n\n // At this point we have the calculated BPT amount.\n if (bptAmountOut < minBptAmountOut) {\n revert BptAmountOutBelowMin(bptAmountOut, minBptAmountOut);\n }\n\n emit LiquidityAdded(\n pool,\n to,\n AddLiquidityKind.UNBALANCED,\n _totalSupply(pool),\n exactAmountsIn,\n new uint256[](poolData.tokens.length)\n );\n\n // Emit an event to log the pool initialization.\n emit PoolInitialized(pool);\n }\n\n /*******************************************************************************\n Pool Information\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function isPoolInitialized(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (bool) {\n return _isPoolInitialized(pool);\n }\n\n /// @inheritdoc IVaultExtension\n function getPoolTokens(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (IERC20[] memory tokens) {\n return _poolTokens[pool];\n }\n\n /// @inheritdoc IVaultExtension\n function getPoolTokenRates(\n address pool\n )\n external\n view\n onlyVaultDelegateCall\n withRegisteredPool(pool)\n returns (uint256[] memory decimalScalingFactors, uint256[] memory tokenRates)\n {\n // Retrieve the mapping of tokens and their balances for the specified pool.\n PoolConfigBits poolConfig = _poolConfigBits[pool];\n\n IERC20[] memory tokens = _poolTokens[pool];\n uint256 numTokens = tokens.length;\n decimalScalingFactors = PoolConfigLib.getDecimalScalingFactors(poolConfig, numTokens);\n tokenRates = new uint256[](numTokens);\n\n for (uint256 i = 0; i < numTokens; ++i) {\n TokenInfo memory tokenInfo = _poolTokenInfo[pool][tokens[i]];\n tokenRates[i] = PoolDataLib.getTokenRate(tokenInfo);\n }\n }\n\n /// @inheritdoc IVaultExtension\n function getPoolData(\n address pool\n ) external view onlyVaultDelegateCall withInitializedPool(pool) returns (PoolData memory) {\n return _loadPoolData(pool, Rounding.ROUND_DOWN);\n }\n\n /// @inheritdoc IVaultExtension\n function getPoolTokenInfo(\n address pool\n )\n external\n view\n onlyVaultDelegateCall\n withRegisteredPool(pool)\n returns (\n IERC20[] memory tokens,\n TokenInfo[] memory tokenInfo,\n uint256[] memory balancesRaw,\n uint256[] memory lastBalancesLiveScaled18\n )\n {\n // Retrieve the mapping of tokens and their balances for the specified pool.\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances = _poolTokenBalances[pool];\n tokens = _poolTokens[pool];\n uint256 numTokens = tokens.length;\n tokenInfo = new TokenInfo[](numTokens);\n balancesRaw = new uint256[](numTokens);\n lastBalancesLiveScaled18 = new uint256[](numTokens);\n\n for (uint256 i = 0; i < numTokens; ++i) {\n bytes32 packedBalance = poolTokenBalances[i];\n tokenInfo[i] = _poolTokenInfo[pool][tokens[i]];\n balancesRaw[i] = packedBalance.getBalanceRaw();\n lastBalancesLiveScaled18[i] = packedBalance.getBalanceDerived();\n }\n }\n\n /// @inheritdoc IVaultExtension\n function getCurrentLiveBalances(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (uint256[] memory balancesLiveScaled18) {\n return _loadPoolData(pool, Rounding.ROUND_DOWN).balancesLiveScaled18;\n }\n\n /// @inheritdoc IVaultExtension\n function getPoolConfig(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (PoolConfig memory) {\n PoolConfigBits config = _poolConfigBits[pool];\n\n return\n PoolConfig({\n isPoolRegistered: config.isPoolRegistered(),\n isPoolInitialized: config.isPoolInitialized(),\n isPoolPaused: config.isPoolPaused(),\n isPoolInRecoveryMode: config.isPoolInRecoveryMode(),\n staticSwapFeePercentage: config.getStaticSwapFeePercentage(),\n aggregateSwapFeePercentage: config.getAggregateSwapFeePercentage(),\n aggregateYieldFeePercentage: config.getAggregateYieldFeePercentage(),\n tokenDecimalDiffs: config.getTokenDecimalDiffs(),\n pauseWindowEndTime: config.getPauseWindowEndTime(),\n liquidityManagement: LiquidityManagement({\n // NOTE: In contrast to the other flags, supportsUnbalancedLiquidity is enabled by default.\n disableUnbalancedLiquidity: !config.supportsUnbalancedLiquidity(),\n enableAddLiquidityCustom: config.supportsAddLiquidityCustom(),\n enableRemoveLiquidityCustom: config.supportsRemoveLiquidityCustom(),\n enableDonation: config.supportsDonation()\n })\n });\n }\n\n /// @inheritdoc IVaultExtension\n function getHooksConfig(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (HooksConfig memory) {\n return _poolConfigBits[pool].toHooksConfig(_hooksContracts[pool]);\n }\n\n /// @inheritdoc IVaultExtension\n function getBptRate(\n address pool\n ) external view onlyVaultDelegateCall withInitializedPool(pool) returns (uint256 rate) {\n PoolData memory poolData = _loadPoolData(pool, Rounding.ROUND_DOWN);\n uint256 invariant = IBasePool(pool).computeInvariant(poolData.balancesLiveScaled18, Rounding.ROUND_DOWN);\n\n return invariant.divDown(_totalSupply(pool));\n }\n\n /*******************************************************************************\n Balancer Pool Tokens\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function totalSupply(address token) external view onlyVaultDelegateCall returns (uint256) {\n return _totalSupply(token);\n }\n\n /// @inheritdoc IVaultExtension\n function balanceOf(address token, address account) external view onlyVaultDelegateCall returns (uint256) {\n return _balanceOf(token, account);\n }\n\n /// @inheritdoc IVaultExtension\n function allowance(\n address token,\n address owner,\n address spender\n ) external view onlyVaultDelegateCall returns (uint256) {\n return _allowance(token, owner, spender);\n }\n\n /// @inheritdoc IVaultExtension\n function approve(address owner, address spender, uint256 amount) external onlyVaultDelegateCall returns (bool) {\n _approve(msg.sender, owner, spender, amount);\n return true;\n }\n\n /*******************************************************************************\n Pool Pausing\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function isPoolPaused(address pool) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (bool) {\n return _isPoolPaused(pool);\n }\n\n /// @inheritdoc IVaultExtension\n function getPoolPausedState(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (bool, uint32, uint32, address) {\n (bool paused, uint32 pauseWindowEndTime) = _getPoolPausedState(pool);\n\n return (\n paused,\n pauseWindowEndTime,\n pauseWindowEndTime + _vaultBufferPeriodDuration,\n _poolRoleAccounts[pool].pauseManager\n );\n }\n\n /*******************************************************************************\n ERC4626 Buffers\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function isERC4626BufferInitialized(IERC4626 wrappedToken) external view onlyVaultDelegateCall returns (bool) {\n return _bufferAssets[wrappedToken] != address(0);\n }\n\n /// @inheritdoc IVaultExtension\n function getERC4626BufferAsset(IERC4626 wrappedToken) external view onlyVaultDelegateCall returns (address asset) {\n return _bufferAssets[wrappedToken];\n }\n\n /*******************************************************************************\n Fees\n *******************************************************************************/\n\n // Swap and Yield fees are both stored using the PackedTokenBalance library, which is usually used for\n // balances that are related (e.g., raw and live). In this case, it holds two uncorrelated values: swap\n // and yield fee amounts, arbitrarily assigning \"Raw\" to Swap and \"Derived\" to Yield.\n\n /// @inheritdoc IVaultExtension\n function getAggregateSwapFeeAmount(\n address pool,\n IERC20 token\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (uint256) {\n return _aggregateFeeAmounts[pool][token].getBalanceRaw();\n }\n\n /// @inheritdoc IVaultExtension\n function getAggregateYieldFeeAmount(\n address pool,\n IERC20 token\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (uint256) {\n return _aggregateFeeAmounts[pool][token].getBalanceDerived();\n }\n\n /// @inheritdoc IVaultExtension\n function getStaticSwapFeePercentage(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (uint256) {\n PoolConfigBits config = _poolConfigBits[pool];\n return config.getStaticSwapFeePercentage();\n }\n\n /// @inheritdoc IVaultExtension\n function getPoolRoleAccounts(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (PoolRoleAccounts memory) {\n return _poolRoleAccounts[pool];\n }\n\n /// @inheritdoc IVaultExtension\n function computeDynamicSwapFeePercentage(\n address pool,\n PoolSwapParams memory swapParams\n ) external view onlyVaultDelegateCall withInitializedPool(pool) returns (uint256 dynamicSwapFeePercentage) {\n return\n HooksConfigLib.callComputeDynamicSwapFeeHook(\n swapParams,\n pool,\n _poolConfigBits[pool].getStaticSwapFeePercentage(),\n _hooksContracts[pool]\n );\n }\n\n /// @inheritdoc IVaultExtension\n function getProtocolFeeController() external view onlyVaultDelegateCall returns (IProtocolFeeController) {\n return _protocolFeeController;\n }\n\n /*******************************************************************************\n Recovery Mode\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function isPoolInRecoveryMode(\n address pool\n ) external view onlyVaultDelegateCall withRegisteredPool(pool) returns (bool) {\n return _isPoolInRecoveryMode(pool);\n }\n\n // Needed to avoid stack-too-deep.\n struct RecoveryLocals {\n IERC20[] tokens;\n uint256 swapFeePercentage;\n uint256 numTokens;\n uint256[] swapFeeAmountsRaw;\n uint256[] balancesRaw;\n bool chargeRoundtripFee;\n }\n\n /// @inheritdoc IVaultExtension\n function removeLiquidityRecovery(\n address pool,\n address from,\n uint256 exactBptAmountIn,\n uint256[] memory minAmountsOut\n )\n external\n onlyVaultDelegateCall\n onlyWhenUnlocked\n nonReentrant\n withInitializedPool(pool)\n onlyInRecoveryMode(pool)\n returns (uint256[] memory amountsOutRaw)\n {\n // Retrieve the mapping of tokens and their balances for the specified pool.\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolTokenBalances = _poolTokenBalances[pool];\n RecoveryLocals memory locals;\n\n // Initialize arrays to store tokens and balances based on the number of tokens in the pool.\n locals.tokens = _poolTokens[pool];\n locals.numTokens = locals.tokens.length;\n\n locals.balancesRaw = new uint256[](locals.numTokens);\n bytes32 packedBalances;\n\n for (uint256 i = 0; i < locals.numTokens; ++i) {\n locals.balancesRaw[i] = poolTokenBalances[i].getBalanceRaw();\n }\n\n amountsOutRaw = BasePoolMath.computeProportionalAmountsOut(\n locals.balancesRaw,\n _totalSupply(pool),\n exactBptAmountIn\n );\n\n // Normally we expect recovery mode withdrawals to be stand-alone operations. If there is a previous add\n // operation in this transaction, this might be an attack, so we apply the same guardrail used for regular\n // proportional withdrawals. To keep things simple, all we do is reduce the `amountsOut`, leaving the \"fee\"\n // tokens in the pool.\n locals.swapFeeAmountsRaw = new uint256[](locals.numTokens);\n locals.chargeRoundtripFee = _addLiquidityCalled().tGet(_sessionIdSlot().tload(), pool);\n\n // Don't make the call to retrieve the fee unless we have to.\n if (locals.chargeRoundtripFee) {\n locals.swapFeePercentage = _poolConfigBits[pool].getStaticSwapFeePercentage();\n }\n\n for (uint256 i = 0; i < locals.numTokens; ++i) {\n if (locals.chargeRoundtripFee) {\n locals.swapFeeAmountsRaw[i] = amountsOutRaw[i].mulUp(locals.swapFeePercentage);\n amountsOutRaw[i] -= locals.swapFeeAmountsRaw[i];\n }\n\n if (amountsOutRaw[i] < minAmountsOut[i]) {\n revert AmountOutBelowMin(locals.tokens[i], amountsOutRaw[i], minAmountsOut[i]);\n }\n\n // Credit token[i] for amountOut.\n _supplyCredit(locals.tokens[i], amountsOutRaw[i]);\n\n // Compute the new Pool balances. A Pool's token balance always decreases after an exit\n // (potentially by 0).\n locals.balancesRaw[i] -= amountsOutRaw[i];\n }\n\n // Store the new pool balances - raw only, since we don't have rates in Recovery Mode.\n // In Recovery Mode, raw and last live balances will get out of sync. This is corrected when the pool is taken\n // out of Recovery Mode.\n mapping(uint256 tokenIndex => bytes32 packedTokenBalance) storage poolBalances = _poolTokenBalances[pool];\n\n for (uint256 i = 0; i < locals.numTokens; ++i) {\n packedBalances = poolBalances[i];\n poolBalances[i] = packedBalances.setBalanceRaw(locals.balancesRaw[i]);\n }\n\n _spendAllowance(pool, from, msg.sender, exactBptAmountIn);\n\n if (_isQueryContext()) {\n // Increase `from` balance to ensure the burn function succeeds.\n _queryModeBalanceIncrease(pool, from, exactBptAmountIn);\n }\n // When removing liquidity, we must burn tokens concurrently with updating pool balances,\n // as the pool's math relies on totalSupply.\n //\n // Burning will be reverted if it results in a total supply less than the _MINIMUM_TOTAL_SUPPLY.\n _burn(pool, from, exactBptAmountIn);\n\n emit LiquidityRemoved(\n pool,\n from,\n RemoveLiquidityKind.PROPORTIONAL,\n _totalSupply(pool),\n amountsOutRaw,\n locals.swapFeeAmountsRaw\n );\n }\n\n /*******************************************************************************\n Queries\n *******************************************************************************/\n\n /// @dev Ensure that only static calls are made to the functions with this modifier.\n modifier query() {\n _setupQuery();\n _;\n }\n\n function _setupQuery() internal {\n if (EVMCallModeHelpers.isStaticCall() == false) {\n revert EVMCallModeHelpers.NotStaticCall();\n }\n\n bool _isQueryDisabled = _vaultStateBits.isQueryDisabled();\n if (_isQueryDisabled) {\n revert QueriesDisabled();\n }\n\n // Unlock so that `onlyWhenUnlocked` does not revert.\n _isUnlocked().tstore(true);\n }\n\n /// @inheritdoc IVaultExtension\n function quote(bytes calldata data) external query onlyVaultDelegateCall returns (bytes memory result) {\n // Forward the incoming call to the original sender of this transaction.\n return (msg.sender).functionCall(data);\n }\n\n /// @inheritdoc IVaultExtension\n function quoteAndRevert(bytes calldata data) external query onlyVaultDelegateCall {\n // Forward the incoming call to the original sender of this transaction.\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory result) = (msg.sender).call(data);\n if (success) {\n // This will only revert if result is empty and sender account has no code.\n Address.verifyCallResultFromTarget(msg.sender, success, result);\n // Send result in revert reason.\n revert RevertCodec.Result(result);\n } else {\n // If the call reverted with a spoofed `QuoteResult`, we catch it and bubble up a different reason.\n bytes4 errorSelector = RevertCodec.parseSelector(result);\n if (errorSelector == RevertCodec.Result.selector) {\n revert QuoteResultSpoofed();\n }\n\n // Otherwise we bubble up the original revert reason.\n RevertCodec.bubbleUpRevert(result);\n }\n }\n\n /// @inheritdoc IVaultExtension\n function isQueryDisabled() external view onlyVaultDelegateCall returns (bool) {\n return _vaultStateBits.isQueryDisabled();\n }\n\n /// @inheritdoc IVaultExtension\n function isQueryDisabledPermanently() external view onlyVaultDelegateCall returns (bool) {\n return _queriesDisabledPermanently;\n }\n\n /*******************************************************************************\n Authentication\n *******************************************************************************/\n\n /// @inheritdoc IVaultExtension\n function getAuthorizer() external view onlyVaultDelegateCall returns (IAuthorizer) {\n return _authorizer;\n }\n\n /*******************************************************************************\n Miscellaneous\n *******************************************************************************/\n\n /**\n * @inheritdoc Proxy\n * @dev Returns the VaultAdmin contract, to which fallback requests are forwarded.\n */\n function _implementation() internal view override returns (address) {\n return address(_vaultAdmin);\n }\n\n /// @inheritdoc IVaultExtension\n function emitAuxiliaryEvent(\n bytes32 eventKey,\n bytes calldata eventData\n ) external onlyVaultDelegateCall withRegisteredPool(msg.sender) {\n emit VaultAuxiliary(msg.sender, eventKey, eventData);\n }\n\n /*******************************************************************************\n Default handlers\n *******************************************************************************/\n\n receive() external payable {\n revert CannotReceiveEth();\n }\n\n // solhint-disable no-complex-fallback\n\n /**\n * @inheritdoc Proxy\n * @dev Override proxy implementation of `fallback` to disallow incoming ETH transfers.\n * This function actually returns whatever the VaultAdmin does when handling the request.\n */\n fallback() external payable override {\n if (msg.value > 0) {\n revert CannotReceiveEth();\n }\n\n _fallback();\n }\n}\n"},"@balancer-labs/v3-vault/contracts/VaultGuard.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\n/// @notice Contract that shares the modifier `onlyVault`.\ncontract VaultGuard {\n IVault internal immutable _vault;\n\n constructor(IVault vault) {\n _vault = vault;\n }\n\n modifier onlyVault() {\n _ensureOnlyVault();\n _;\n }\n\n function _ensureOnlyVault() private view {\n if (msg.sender != address(_vault)) {\n revert IVaultErrors.SenderIsNotVault(msg.sender);\n }\n }\n}\n"},"@balancer-labs/v3-vault/contracts/VaultStorage.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { IProtocolFeeController } from \"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\";\nimport { IVaultExtension } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\";\nimport { IAuthorizer } from \"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\";\nimport { IHooks } from \"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { StorageSlotExtension } from \"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\";\nimport {\n TransientStorageHelpers,\n TokenDeltaMappingSlotType,\n UintToAddressToBooleanMappingSlot\n} from \"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\";\n\nimport { VaultStateBits } from \"./lib/VaultStateLib.sol\";\nimport { PoolConfigBits } from \"./lib/PoolConfigLib.sol\";\n\n// solhint-disable max-states-count\n\n/**\n * @notice Storage layout for the Vault.\n * @dev This contract has no code, but is inherited by all three Vault contracts. In order to ensure that *only* the\n * Vault contract's storage is actually used, calls to the extension contracts must be delegate calls made through the\n * main Vault.\n */\ncontract VaultStorage {\n using StorageSlotExtension for *;\n\n /***************************************************************************\n Constants\n ***************************************************************************/\n\n // Pools can have between two and eight tokens.\n uint256 internal constant _MIN_TOKENS = 2;\n // This maximum token count is also implicitly hard-coded in `PoolConfigLib` (through packing `tokenDecimalDiffs`).\n uint256 internal constant _MAX_TOKENS = 8;\n // Tokens with more than 18 decimals are not supported. Tokens must also implement `IERC20Metadata.decimals`.\n uint8 internal constant _MAX_TOKEN_DECIMALS = 18;\n\n // Maximum pause and buffer period durations.\n uint256 internal constant _MAX_PAUSE_WINDOW_DURATION = 365 days * 4;\n uint256 internal constant _MAX_BUFFER_PERIOD_DURATION = 180 days;\n\n // Minimum swap amount (applied to scaled18 values), enforced as a security measure to block potential\n // exploitation of rounding errors.\n // solhint-disable-next-line var-name-mixedcase\n uint256 internal immutable _MINIMUM_TRADE_AMOUNT;\n\n // Minimum given amount to wrap/unwrap (applied to native decimal values), to avoid rounding issues.\n // solhint-disable-next-line var-name-mixedcase\n uint256 internal immutable _MINIMUM_WRAP_AMOUNT;\n\n /***************************************************************************\n Transient Storage Declarations\n ***************************************************************************/\n\n // NOTE: If you use a constant, then it is simply replaced everywhere when this constant is used\n // by what is written after =. If you use immutable, the value is first calculated and\n // then replaced everywhere. That means that if a constant has executable variables,\n // they will be executed every time the constant is used.\n\n // solhint-disable var-name-mixedcase\n bytes32 private immutable _IS_UNLOCKED_SLOT = _calculateVaultStorageSlot(\"isUnlocked\");\n bytes32 private immutable _NON_ZERO_DELTA_COUNT_SLOT = _calculateVaultStorageSlot(\"nonZeroDeltaCount\");\n bytes32 private immutable _TOKEN_DELTAS_SLOT = _calculateVaultStorageSlot(\"tokenDeltas\");\n bytes32 private immutable _ADD_LIQUIDITY_CALLED_SLOT = _calculateVaultStorageSlot(\"addLiquidityCalled\");\n bytes32 private immutable _SESSION_ID_SLOT = _calculateVaultStorageSlot(\"sessionId\");\n // solhint-enable var-name-mixedcase\n\n /***************************************************************************\n Pool State\n ***************************************************************************/\n\n // Pool-specific configuration data (e.g., fees, pause window, configuration flags).\n mapping(address pool => PoolConfigBits poolConfig) internal _poolConfigBits;\n\n // Accounts assigned to specific roles; e.g., pauseManager, swapManager.\n mapping(address pool => PoolRoleAccounts roleAccounts) internal _poolRoleAccounts;\n\n // The hooks contracts associated with each pool.\n mapping(address pool => IHooks hooksContract) internal _hooksContracts;\n\n // The set of tokens associated with each pool.\n mapping(address pool => IERC20[] poolTokens) internal _poolTokens;\n\n // The token configuration of each Pool's tokens.\n mapping(address pool => mapping(IERC20 token => TokenInfo tokenInfo)) internal _poolTokenInfo;\n\n // Structure containing the current raw and \"last live\" scaled balances. Last live balances are used for\n // yield fee computation, and since these have rates applied, they are stored as scaled 18-decimal FP values.\n // Each value takes up half the storage slot (i.e., 128 bits).\n mapping(address pool => mapping(uint256 tokenIndex => bytes32 packedTokenBalance)) internal _poolTokenBalances;\n\n // Aggregate protocol swap/yield fees accumulated in the Vault for harvest.\n // Reusing PackedTokenBalance for the bytes32 values to save bytecode (despite differing semantics).\n // It's arbitrary which is which: we define raw = swap; derived = yield.\n mapping(address pool => mapping(IERC20 token => bytes32 packedFeeAmounts)) internal _aggregateFeeAmounts;\n\n /***************************************************************************\n Vault State\n ***************************************************************************/\n\n // The Pause Window and Buffer Period are timestamp-based: they should not be relied upon for sub-minute accuracy.\n uint32 internal immutable _vaultPauseWindowEndTime;\n uint32 internal immutable _vaultBufferPeriodEndTime;\n\n // Stored as a convenience, to avoid calculating it on every operation.\n uint32 internal immutable _vaultBufferPeriodDuration;\n\n // Bytes32 with pause flags for the Vault, buffers, and queries.\n VaultStateBits internal _vaultStateBits;\n\n /**\n * @dev Represents the total reserve of each ERC20 token. It should be always equal to `token.balanceOf(vault)`,\n * except during `unlock`.\n */\n mapping(IERC20 token => uint256 vaultBalance) internal _reservesOf;\n\n /// @dev Flag that prevents re-enabling queries.\n bool internal _queriesDisabledPermanently;\n\n /***************************************************************************\n Contract References\n ***************************************************************************/\n\n // Upgradeable contract in charge of setting permissions.\n IAuthorizer internal _authorizer;\n\n // Contract that receives aggregate swap and yield fees.\n IProtocolFeeController internal _protocolFeeController;\n\n /***************************************************************************\n ERC4626 Buffers\n ***************************************************************************/\n\n // Any ERC4626 token can trade using a buffer, which is like a pool, but internal to the Vault.\n // The registry key is the wrapped token address, so there can only ever be one buffer per wrapped token.\n // This means they are permissionless, and have no registration function.\n //\n // Anyone can add liquidity to a buffer\n\n // A buffer will only ever have two tokens: wrapped and underlying. We pack the wrapped and underlying balances\n // into a single bytes32, interpreted with the `PackedTokenBalance` library.\n\n // ERC4626 token address -> PackedTokenBalance, which stores both the underlying and wrapped token balances.\n // Reusing PackedTokenBalance to save bytecode (despite differing semantics).\n // It's arbitrary which is which: we define raw = underlying token; derived = wrapped token.\n mapping(IERC4626 wrappedToken => bytes32 packedTokenBalance) internal _bufferTokenBalances;\n\n // The LP balances for buffers. LP balances are not tokenized (i.e., represented by ERC20 tokens like BPT), but\n // rather accounted for within the Vault.\n\n // Track the internal \"BPT\" shares of each buffer depositor.\n mapping(IERC4626 wrappedToken => mapping(address user => uint256 userShares)) internal _bufferLpShares;\n\n // Total LP shares.\n mapping(IERC4626 wrappedToken => uint256 totalShares) internal _bufferTotalShares;\n\n // Prevents a malicious ERC4626 from changing the asset after the buffer was initialized.\n mapping(IERC4626 wrappedToken => address underlyingToken) internal _bufferAssets;\n\n /***************************************************************************\n Transient Storage Access\n ***************************************************************************/\n\n function _isUnlocked() internal view returns (StorageSlotExtension.BooleanSlotType slot) {\n return _IS_UNLOCKED_SLOT.asBoolean();\n }\n\n function _nonZeroDeltaCount() internal view returns (StorageSlotExtension.Uint256SlotType slot) {\n return _NON_ZERO_DELTA_COUNT_SLOT.asUint256();\n }\n\n function _tokenDeltas() internal view returns (TokenDeltaMappingSlotType slot) {\n return TokenDeltaMappingSlotType.wrap(_TOKEN_DELTAS_SLOT);\n }\n\n function _addLiquidityCalled() internal view returns (UintToAddressToBooleanMappingSlot slot) {\n return UintToAddressToBooleanMappingSlot.wrap(_ADD_LIQUIDITY_CALLED_SLOT);\n }\n\n function _sessionIdSlot() internal view returns (StorageSlotExtension.Uint256SlotType slot) {\n return _SESSION_ID_SLOT.asUint256();\n }\n\n function _calculateVaultStorageSlot(string memory key) private pure returns (bytes32) {\n return TransientStorageHelpers.calculateSlot(type(VaultStorage).name, key);\n }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC4626.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"../token/ERC20/extensions/IERC20Metadata.sol\";\n\n/**\n * @dev Interface of the ERC4626 \"Tokenized Vault Standard\", as defined in\n * https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\n */\ninterface IERC4626 is IERC20, IERC20Metadata {\n event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);\n\n event Withdraw(\n address indexed sender,\n address indexed receiver,\n address indexed owner,\n uint256 assets,\n uint256 shares\n );\n\n /**\n * @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n *\n * - MUST be an ERC-20 token contract.\n * - MUST NOT revert.\n */\n function asset() external view returns (address assetTokenAddress);\n\n /**\n * @dev Returns the total amount of the underlying asset that is “managed” by Vault.\n *\n * - SHOULD include any compounding that occurs from yield.\n * - MUST be inclusive of any fees that are charged against assets in the Vault.\n * - MUST NOT revert.\n */\n function totalAssets() external view returns (uint256 totalManagedAssets);\n\n /**\n * @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n * scenario where all the conditions are met.\n *\n * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n * - MUST NOT show any variations depending on the caller.\n * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n * - MUST NOT revert.\n *\n * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n * from.\n */\n function convertToShares(uint256 assets) external view returns (uint256 shares);\n\n /**\n * @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n * scenario where all the conditions are met.\n *\n * - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n * - MUST NOT show any variations depending on the caller.\n * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n * - MUST NOT revert.\n *\n * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n * from.\n */\n function convertToAssets(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n * through a deposit call.\n *\n * - MUST return a limited value if receiver is subject to some deposit limit.\n * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n * - MUST NOT revert.\n */\n function maxDeposit(address receiver) external view returns (uint256 maxAssets);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n * current on-chain conditions.\n *\n * - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n * call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n * in the same transaction.\n * - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n * deposit would be accepted, regardless if the user has enough tokens approved, etc.\n * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n */\n function previewDeposit(uint256 assets) external view returns (uint256 shares);\n\n /**\n * @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.\n *\n * - MUST emit the Deposit event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n * deposit execution, and are accounted for during deposit.\n * - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n * approving enough underlying tokens to the Vault contract, etc).\n *\n * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.\n */\n function deposit(uint256 assets, address receiver) external returns (uint256 shares);\n\n /**\n * @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n * - MUST return a limited value if receiver is subject to some mint limit.\n * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n * - MUST NOT revert.\n */\n function maxMint(address receiver) external view returns (uint256 maxShares);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n * current on-chain conditions.\n *\n * - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n * in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n * same transaction.\n * - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n * would be accepted, regardless if the user has enough tokens approved, etc.\n * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by minting.\n */\n function previewMint(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.\n *\n * - MUST emit the Deposit event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n * execution, and are accounted for during mint.\n * - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n * approving enough underlying tokens to the Vault contract, etc).\n *\n * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.\n */\n function mint(uint256 shares, address receiver) external returns (uint256 assets);\n\n /**\n * @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n * Vault, through a withdraw call.\n *\n * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n * - MUST NOT revert.\n */\n function maxWithdraw(address owner) external view returns (uint256 maxAssets);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n * given current on-chain conditions.\n *\n * - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n * call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n * called\n * in the same transaction.\n * - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n * the withdrawal would be accepted, regardless if the user has enough shares, etc.\n * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by depositing.\n */\n function previewWithdraw(uint256 assets) external view returns (uint256 shares);\n\n /**\n * @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n *\n * - MUST emit the Withdraw event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n * withdraw execution, and are accounted for during withdraw.\n * - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n * not having enough shares, etc).\n *\n * Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n * Those methods should be performed separately.\n */\n function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);\n\n /**\n * @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n * through a redeem call.\n *\n * - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n * - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n * - MUST NOT revert.\n */\n function maxRedeem(address owner) external view returns (uint256 maxShares);\n\n /**\n * @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,\n * given current on-chain conditions.\n *\n * - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n * in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n * same transaction.\n * - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n * redemption would be accepted, regardless if the user has enough shares, etc.\n * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n * - MUST NOT revert.\n *\n * NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n * share price or some other type of condition, meaning the depositor will lose assets by redeeming.\n */\n function previewRedeem(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n *\n * - MUST emit the Withdraw event.\n * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n * redeem execution, and are accounted for during redeem.\n * - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n * not having enough shares, etc).\n *\n * NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n * Those methods should be performed separately.\n */\n function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);\n}\n"},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\n\npragma solidity ^0.8.20;\n\ninterface IERC5267 {\n /**\n * @dev MAY be emitted to signal that the domain could have changed.\n */\n event EIP712DomainChanged();\n\n /**\n * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n * signature.\n */\n function eip712Domain()\n external\n view\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n );\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * ==== Security Considerations\n *\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n * generally recommended is:\n *\n * ```solidity\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n * doThing(..., value);\n * }\n *\n * function doThing(..., uint256 value) public {\n * token.safeTransferFrom(msg.sender, address(this), value);\n * ...\n * }\n * ```\n *\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n * {SafeERC20-safeTransferFrom}).\n *\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n * contracts should have entry points that don't rely on permit.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n *\n * CAUTION: See Security Considerations above.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC20Permit} from \"../extensions/IERC20Permit.sol\";\nimport {Address} from \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using Address for address;\n\n /**\n * @dev An operation with an ERC20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data);\n if (returndata.length != 0 && !abi.decode(returndata, (bool))) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false\n // and not revert is the subcall reverts.\n\n (bool success, bytes memory returndata) = address(token).call(data);\n return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && address(token).code.length > 0;\n }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error AddressInsufficientBalance(address account);\n\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedInnerCall();\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert AddressInsufficientBalance(address(this));\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert FailedInnerCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {FailedInnerCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert AddressInsufficientBalance(address(this));\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n * unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {FailedInnerCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert FailedInnerCall();\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Create2.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Create2.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n * `CREATE2` can be used to compute in advance the address where a smart\n * contract will be deployed, which allows for interesting new mechanisms known\n * as 'counterfactual interactions'.\n *\n * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n * information.\n */\nlibrary Create2 {\n /**\n * @dev Not enough balance for performing a CREATE2 deploy.\n */\n error Create2InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev There's no code to deploy.\n */\n error Create2EmptyBytecode();\n\n /**\n * @dev The deployment failed.\n */\n error Create2FailedDeployment();\n\n /**\n * @dev Deploys a contract using `CREATE2`. The address where the contract\n * will be deployed can be known in advance via {computeAddress}.\n *\n * The bytecode for a contract can be obtained from Solidity with\n * `type(contractName).creationCode`.\n *\n * Requirements:\n *\n * - `bytecode` must not be empty.\n * - `salt` must have not been used for `bytecode` already.\n * - the factory must have a balance of at least `amount`.\n * - if `amount` is non-zero, `bytecode` must have a `payable` constructor.\n */\n function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address addr) {\n if (address(this).balance < amount) {\n revert Create2InsufficientBalance(address(this).balance, amount);\n }\n if (bytecode.length == 0) {\n revert Create2EmptyBytecode();\n }\n /// @solidity memory-safe-assembly\n assembly {\n addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)\n }\n if (addr == address(0)) {\n revert Create2FailedDeployment();\n }\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n * `bytecodeHash` or `salt` will result in a new destination address.\n */\n function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {\n return computeAddress(salt, bytecodeHash, address(this));\n }\n\n /**\n * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.\n */\n function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address addr) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40) // Get free memory pointer\n\n // | | ↓ ptr ... ↓ ptr + 0x0B (start) ... ↓ ptr + 0x20 ... ↓ ptr + 0x40 ... |\n // |-------------------|---------------------------------------------------------------------------|\n // | bytecodeHash | CCCCCCCCCCCCC...CC |\n // | salt | BBBBBBBBBBBBB...BB |\n // | deployer | 000000...0000AAAAAAAAAAAAAAAAAAA...AA |\n // | 0xFF | FF |\n // |-------------------|---------------------------------------------------------------------------|\n // | memory | 000000...00FFAAAAAAAAAAAAAAAAAAA...AABBBBBBBBBBBBB...BBCCCCCCCCCCCCC...CC |\n // | keccak(start, 85) | ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ |\n\n mstore(add(ptr, 0x40), bytecodeHash)\n mstore(add(ptr, 0x20), salt)\n mstore(ptr, deployer) // Right-aligned with 12 preceding garbage bytes\n let start := add(ptr, 0x0b) // The hashed data starts at the final garbage byte which we will set to 0xff\n mstore8(start, 0xff)\n addr := keccak256(start, 85)\n }\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS\n }\n\n /**\n * @dev The signature derives the `address(0)`.\n */\n error ECDSAInvalidSignature();\n\n /**\n * @dev The signature has an invalid length.\n */\n error ECDSAInvalidSignatureLength(uint256 length);\n\n /**\n * @dev The signature has an S value that is in the upper half order.\n */\n error ECDSAInvalidSignatureS(bytes32 s);\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n * and a bytes32 providing additional information about the error.\n *\n * If no error is returned, then the address can be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {\n unchecked {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n // We do not check for an overflow here since the shift operation results in 0 or 1.\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError, bytes32) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS, s);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\n }\n\n return (signer, RecoverError.NoError, bytes32(0));\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n */\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert ECDSAInvalidSignature();\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\n } else if (error == RecoverError.InvalidSignatureS) {\n revert ECDSAInvalidSignatureS(errorArg);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.20;\n\nimport {MessageHashUtils} from \"./MessageHashUtils.sol\";\nimport {ShortStrings, ShortString} from \"../ShortStrings.sol\";\nimport {IERC5267} from \"../../interfaces/IERC5267.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n *\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\n */\nabstract contract EIP712 is IERC5267 {\n using ShortStrings for *;\n\n bytes32 private constant TYPE_HASH =\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _cachedDomainSeparator;\n uint256 private immutable _cachedChainId;\n address private immutable _cachedThis;\n\n bytes32 private immutable _hashedName;\n bytes32 private immutable _hashedVersion;\n\n ShortString private immutable _name;\n ShortString private immutable _version;\n string private _nameFallback;\n string private _versionFallback;\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _name = name.toShortStringWithFallback(_nameFallback);\n _version = version.toShortStringWithFallback(_versionFallback);\n _hashedName = keccak256(bytes(name));\n _hashedVersion = keccak256(bytes(version));\n\n _cachedChainId = block.chainid;\n _cachedDomainSeparator = _buildDomainSeparator();\n _cachedThis = address(this);\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\n return _cachedDomainSeparator;\n } else {\n return _buildDomainSeparator();\n }\n }\n\n function _buildDomainSeparator() private view returns (bytes32) {\n return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n\n /**\n * @dev See {IERC-5267}.\n */\n function eip712Domain()\n public\n view\n virtual\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n )\n {\n return (\n hex\"0f\", // 01111\n _EIP712Name(),\n _EIP712Version(),\n block.chainid,\n address(this),\n bytes32(0),\n new uint256[](0)\n );\n }\n\n /**\n * @dev The name parameter for the EIP712 domain.\n *\n * NOTE: By default this function reads _name which is an immutable value.\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n */\n // solhint-disable-next-line func-name-mixedcase\n function _EIP712Name() internal view returns (string memory) {\n return _name.toStringWithFallback(_nameFallback);\n }\n\n /**\n * @dev The version parameter for the EIP712 domain.\n *\n * NOTE: By default this function reads _version which is an immutable value.\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n */\n // solhint-disable-next-line func-name-mixedcase\n function _EIP712Version() internal view returns (string memory) {\n return _version.toStringWithFallback(_versionFallback);\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol)\n\npragma solidity ^0.8.20;\n\nimport {Strings} from \"../Strings.sol\";\n\n/**\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n *\n * The library provides methods for generating a hash of a message that conforms to the\n * https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n * specifications.\n */\nlibrary MessageHashUtils {\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing a bytes32 `messageHash` with\n * `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n * keccak256, although any bytes32 value can be safely used because the final digest will\n * be re-hashed.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\") // 32 is the bytes-length of messageHash\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\n }\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing an arbitrary `message` with\n * `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\n return\n keccak256(bytes.concat(\"\\x19Ethereum Signed Message:\\n\", bytes(Strings.toString(message.length)), message));\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x00` (data with intended validator).\n *\n * The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n * `validator` address. Then hashing the result.\n *\n * See {ECDSA-recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(hex\"19_00\", validator, data));\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\n *\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n * `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n *\n * See {ECDSA-recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, hex\"19_01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n digest := keccak256(ptr, 0x42)\n }\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n /**\n * @dev Muldiv operation overflow.\n */\n error MathOverflowedMulDiv();\n\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n return a / b;\n }\n\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n * denominator == 0.\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n * Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0 = x * y; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n if (denominator <= prod1) {\n revert MathOverflowedMulDiv();\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n}\n"},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n /**\n * @dev Value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n /**\n * @dev An int value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedIntToUint(int256 value);\n\n /**\n * @dev Value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n /**\n * @dev An uint value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedUintToInt(uint256 value);\n\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n if (value > type(uint248).max) {\n revert SafeCastOverflowedUintDowncast(248, value);\n }\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n if (value > type(uint240).max) {\n revert SafeCastOverflowedUintDowncast(240, value);\n }\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n if (value > type(uint232).max) {\n revert SafeCastOverflowedUintDowncast(232, value);\n }\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n if (value > type(uint224).max) {\n revert SafeCastOverflowedUintDowncast(224, value);\n }\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n if (value > type(uint216).max) {\n revert SafeCastOverflowedUintDowncast(216, value);\n }\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n if (value > type(uint208).max) {\n revert SafeCastOverflowedUintDowncast(208, value);\n }\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n if (value > type(uint200).max) {\n revert SafeCastOverflowedUintDowncast(200, value);\n }\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n if (value > type(uint192).max) {\n revert SafeCastOverflowedUintDowncast(192, value);\n }\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n if (value > type(uint184).max) {\n revert SafeCastOverflowedUintDowncast(184, value);\n }\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n if (value > type(uint176).max) {\n revert SafeCastOverflowedUintDowncast(176, value);\n }\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n if (value > type(uint168).max) {\n revert SafeCastOverflowedUintDowncast(168, value);\n }\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n if (value > type(uint160).max) {\n revert SafeCastOverflowedUintDowncast(160, value);\n }\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n if (value > type(uint152).max) {\n revert SafeCastOverflowedUintDowncast(152, value);\n }\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n if (value > type(uint144).max) {\n revert SafeCastOverflowedUintDowncast(144, value);\n }\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n if (value > type(uint136).max) {\n revert SafeCastOverflowedUintDowncast(136, value);\n }\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n if (value > type(uint128).max) {\n revert SafeCastOverflowedUintDowncast(128, value);\n }\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n if (value > type(uint120).max) {\n revert SafeCastOverflowedUintDowncast(120, value);\n }\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n if (value > type(uint112).max) {\n revert SafeCastOverflowedUintDowncast(112, value);\n }\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n if (value > type(uint104).max) {\n revert SafeCastOverflowedUintDowncast(104, value);\n }\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n if (value > type(uint96).max) {\n revert SafeCastOverflowedUintDowncast(96, value);\n }\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n if (value > type(uint88).max) {\n revert SafeCastOverflowedUintDowncast(88, value);\n }\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n if (value > type(uint80).max) {\n revert SafeCastOverflowedUintDowncast(80, value);\n }\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n if (value > type(uint72).max) {\n revert SafeCastOverflowedUintDowncast(72, value);\n }\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n if (value > type(uint64).max) {\n revert SafeCastOverflowedUintDowncast(64, value);\n }\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n if (value > type(uint56).max) {\n revert SafeCastOverflowedUintDowncast(56, value);\n }\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n if (value > type(uint48).max) {\n revert SafeCastOverflowedUintDowncast(48, value);\n }\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n if (value > type(uint40).max) {\n revert SafeCastOverflowedUintDowncast(40, value);\n }\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n if (value > type(uint32).max) {\n revert SafeCastOverflowedUintDowncast(32, value);\n }\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n if (value > type(uint24).max) {\n revert SafeCastOverflowedUintDowncast(24, value);\n }\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n if (value > type(uint16).max) {\n revert SafeCastOverflowedUintDowncast(16, value);\n }\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n if (value > type(uint8).max) {\n revert SafeCastOverflowedUintDowncast(8, value);\n }\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n if (value < 0) {\n revert SafeCastOverflowedIntToUint(value);\n }\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(248, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(240, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(232, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(224, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(216, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(208, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(200, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(192, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(184, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(176, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(168, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(160, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(152, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(144, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(136, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(128, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(120, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(112, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(104, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(96, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(88, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(80, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(72, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(64, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(56, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(48, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(40, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(32, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(24, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(16, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(8, value);\n }\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n if (value > uint256(type(int256).max)) {\n revert SafeCastOverflowedUintToInt(value);\n }\n return int256(value);\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Nonces.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides tracking nonces for addresses. Nonces will only increment.\n */\nabstract contract Nonces {\n /**\n * @dev The nonce used for an `account` is not the expected current nonce.\n */\n error InvalidAccountNonce(address account, uint256 currentNonce);\n\n mapping(address account => uint256) private _nonces;\n\n /**\n * @dev Returns the next unused nonce for an address.\n */\n function nonces(address owner) public view virtual returns (uint256) {\n return _nonces[owner];\n }\n\n /**\n * @dev Consumes a nonce.\n *\n * Returns the current value and increments nonce.\n */\n function _useNonce(address owner) internal virtual returns (uint256) {\n // For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be\n // decremented or reset. This guarantees that the nonce never overflows.\n unchecked {\n // It is important to do x++ and not ++x here.\n return _nonces[owner]++;\n }\n }\n\n /**\n * @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`.\n */\n function _useCheckedNonce(address owner, uint256 nonce) internal virtual {\n uint256 current = _useNonce(owner);\n if (nonce != current) {\n revert InvalidAccountNonce(owner, current);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/ShortStrings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/ShortStrings.sol)\n\npragma solidity ^0.8.20;\n\nimport {StorageSlot} from \"./StorageSlot.sol\";\n\n// | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |\n// | length | 0x BB |\ntype ShortString is bytes32;\n\n/**\n * @dev This library provides functions to convert short memory strings\n * into a `ShortString` type that can be used as an immutable variable.\n *\n * Strings of arbitrary length can be optimized using this library if\n * they are short enough (up to 31 bytes) by packing them with their\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\n * fallback mechanism can be used for every other case.\n *\n * Usage example:\n *\n * ```solidity\n * contract Named {\n * using ShortStrings for *;\n *\n * ShortString private immutable _name;\n * string private _nameFallback;\n *\n * constructor(string memory contractName) {\n * _name = contractName.toShortStringWithFallback(_nameFallback);\n * }\n *\n * function name() external view returns (string memory) {\n * return _name.toStringWithFallback(_nameFallback);\n * }\n * }\n * ```\n */\nlibrary ShortStrings {\n // Used as an identifier for strings longer than 31 bytes.\n bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\n\n error StringTooLong(string str);\n error InvalidShortString();\n\n /**\n * @dev Encode a string of at most 31 chars into a `ShortString`.\n *\n * This will trigger a `StringTooLong` error is the input string is too long.\n */\n function toShortString(string memory str) internal pure returns (ShortString) {\n bytes memory bstr = bytes(str);\n if (bstr.length > 31) {\n revert StringTooLong(str);\n }\n return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\n }\n\n /**\n * @dev Decode a `ShortString` back to a \"normal\" string.\n */\n function toString(ShortString sstr) internal pure returns (string memory) {\n uint256 len = byteLength(sstr);\n // using `new string(len)` would work locally but is not memory safe.\n string memory str = new string(32);\n /// @solidity memory-safe-assembly\n assembly {\n mstore(str, len)\n mstore(add(str, 0x20), sstr)\n }\n return str;\n }\n\n /**\n * @dev Return the length of a `ShortString`.\n */\n function byteLength(ShortString sstr) internal pure returns (uint256) {\n uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\n if (result > 31) {\n revert InvalidShortString();\n }\n return result;\n }\n\n /**\n * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\n */\n function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\n if (bytes(value).length < 32) {\n return toShortString(value);\n } else {\n StorageSlot.getStringSlot(store).value = value;\n return ShortString.wrap(FALLBACK_SENTINEL);\n }\n }\n\n /**\n * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\n */\n function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n return toString(value);\n } else {\n return store;\n }\n }\n\n /**\n * @dev Return the length of a string that was encoded to `ShortString` or written to storage using\n * {setWithFallback}.\n *\n * WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\n */\n function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n return byteLength(value);\n } else {\n return bytes(store).length;\n }\n }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n uint8 private constant ADDRESS_LENGTH = 20;\n\n /**\n * @dev The `value` string doesn't fit in the specified `length`.\n */\n error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toStringSigned(int256 value) internal pure returns (string memory) {\n return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n uint256 localValue = value;\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = HEX_DIGITS[localValue & 0xf];\n localValue >>= 4;\n }\n if (localValue != 0) {\n revert StringsInsufficientHexLength(value, length);\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n * representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"contracts/test/HardhatImports.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\n// This file is needed to compile artifacts from another repository using Hardhat.\nimport { VaultMock } from \"@balancer-labs/v3-vault/contracts/test/VaultMock.sol\";\nimport { BasicAuthorizerMock } from \"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol\";\nimport { VaultAdminMock } from \"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol\";\nimport { VaultExtensionMock } from \"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol\";\nimport { ProtocolFeeControllerMock } from \"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol\";\nimport { RouterMock } from \"@balancer-labs/v3-vault/contracts/test/RouterMock.sol\";\nimport { BatchRouterMock } from \"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol\";\nimport { BufferRouterMock } from \"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol\";\nimport { PoolHooksMock } from \"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol\";\nimport { RateProviderMock } from \"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol\";\n"},"contracts/test/WeightedBasePoolMathMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { WeightedMath } from \"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\";\nimport { Rounding } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { BasePoolMathMock } from \"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol\";\n\n// Mock Weighted5050 to test rounding in BasePoolMath for consistency with other implementations.\ncontract WeightedBasePoolMathMock is BasePoolMathMock {\n uint256[] public weights;\n\n constructor(uint256[] memory _weights) {\n weights = _weights;\n }\n\n function computeInvariant(\n uint256[] memory balancesLiveScaled18,\n Rounding rounding\n ) public view override returns (uint256) {\n if (rounding == Rounding.ROUND_DOWN) {\n return WeightedMath.computeInvariantDown(weights, balancesLiveScaled18);\n } else {\n return WeightedMath.computeInvariantUp(weights, balancesLiveScaled18);\n }\n }\n\n function computeBalance(\n uint256[] memory balancesLiveScaled18,\n uint256 tokenInIndex,\n uint256 invariantRatio\n ) external view override returns (uint256 newBalance) {\n return\n WeightedMath.computeBalanceOutGivenInvariant(\n balancesLiveScaled18[tokenInIndex],\n weights[tokenInIndex],\n invariantRatio\n );\n }\n}\n"},"contracts/test/WeightedMathMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { Rounding } from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { WeightedMath } from \"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\";\n\ncontract WeightedMathMock {\n function computeInvariant(\n uint256[] memory normalizedWeights,\n uint256[] memory balances,\n Rounding rounding\n ) external pure returns (uint256) {\n if (rounding == Rounding.ROUND_DOWN) {\n return WeightedMath.computeInvariantDown(normalizedWeights, balances);\n } else {\n return WeightedMath.computeInvariantUp(normalizedWeights, balances);\n }\n }\n\n function computeOutGivenExactIn(\n uint256 balanceIn,\n uint256 weightIn,\n uint256 balanceOut,\n uint256 weightOut,\n uint256 amountIn\n ) external pure returns (uint256) {\n return WeightedMath.computeOutGivenExactIn(balanceIn, weightIn, balanceOut, weightOut, amountIn);\n }\n\n function computeInGivenExactOut(\n uint256 balanceIn,\n uint256 weightIn,\n uint256 balanceOut,\n uint256 weightOut,\n uint256 amountOut\n ) external pure returns (uint256) {\n return WeightedMath.computeInGivenExactOut(balanceIn, weightIn, balanceOut, weightOut, amountOut);\n }\n}\n"},"contracts/test/WeightedPoolMock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\n\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport { WeightedPool } from \"../WeightedPool.sol\";\n\ncontract WeightedPoolMock is WeightedPool {\n // Local storage of weights, so that they can be changed for tests.\n uint256[] private _normalizedWeights;\n\n constructor(NewPoolParams memory params, IVault vault) WeightedPool(params, vault) {\n _normalizedWeights = new uint256[](params.numTokens);\n\n for (uint256 i = 0; i < params.numTokens; ++i) {\n _normalizedWeights[i] = params.normalizedWeights[i];\n }\n }\n\n function setNormalizedWeight(uint256 tokenIndex, uint256 newWeight) external {\n if (tokenIndex < _normalizedWeights.length) {\n _normalizedWeights[tokenIndex] = newWeight;\n }\n }\n\n // Helper for most common case of setting weights - for two token pools.\n function setNormalizedWeights(uint256[2] memory newWeights) external {\n require(newWeights[0] + newWeights[1] == FixedPoint.ONE, \"Weights don't total 1\");\n\n _normalizedWeights[0] = newWeights[0];\n _normalizedWeights[1] = newWeights[1];\n }\n\n function _getNormalizedWeight(uint256 tokenIndex) internal view override returns (uint256) {\n if (tokenIndex < _normalizedWeights.length) {\n return _normalizedWeights[tokenIndex];\n } else {\n revert IVaultErrors.InvalidToken();\n }\n }\n\n function _getNormalizedWeights() internal view override returns (uint256[] memory) {\n return _normalizedWeights;\n }\n}\n"},"contracts/WeightedPool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { ISwapFeePercentageBounds } from \"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\";\nimport {\n IUnbalancedLiquidityInvariantRatioBounds\n} from \"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\";\nimport { IVaultErrors } from \"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\";\nimport { IBasePool } from \"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport {\n IWeightedPool,\n WeightedPoolDynamicData,\n WeightedPoolImmutableData\n} from \"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { InputHelpers } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport { WeightedMath } from \"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\";\nimport { BalancerPoolToken } from \"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\";\nimport { FixedPoint } from \"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\";\nimport { Version } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\";\nimport { PoolInfo } from \"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\";\n\n/**\n * @notice Standard Balancer Weighted Pool, with fixed weights.\n * @dev Weighted Pools are designed for uncorrelated assets, and use `WeightedMath` (from Balancer v1 and v2)\n * to compute the price curve.\n *\n * There can be up to 8 tokens in a weighted pool (same as v2), and the normalized weights (expressed as 18-decimal\n * floating point numbers), must sum to FixedPoint.ONE. Weights cannot be changed after deployment.\n *\n * The swap fee percentage is bounded by minimum and maximum values (same as were used in v2).\n */\ncontract WeightedPool is IWeightedPool, BalancerPoolToken, PoolInfo, Version {\n /// @dev Struct with data for deploying a new WeightedPool. `normalizedWeights` length must match `numTokens`.\n struct NewPoolParams {\n string name;\n string symbol;\n uint256 numTokens;\n uint256[] normalizedWeights;\n string version;\n }\n\n // Fees are 18-decimal, floating point values, which will be stored in the Vault using 24 bits.\n // This means they have 0.00001% resolution (i.e., any non-zero bits < 1e11 will cause precision loss).\n // Minimum values help make the math well-behaved (i.e., the swap fee should overwhelm any rounding error).\n // Maximum values protect users by preventing permissioned actors from setting excessively high swap fees.\n uint256 private constant _MIN_SWAP_FEE_PERCENTAGE = 0.001e16; // 0.001%\n uint256 private constant _MAX_SWAP_FEE_PERCENTAGE = 10e16; // 10%\n\n // A minimum normalized weight imposes a maximum weight ratio. We need this due to limitations in the\n // implementation of the fixed point power function, as these ratios are often exponents.\n uint256 private constant _MIN_WEIGHT = 1e16; // 1%\n\n uint256 private immutable _totalTokens;\n\n uint256 internal immutable _normalizedWeight0;\n uint256 internal immutable _normalizedWeight1;\n uint256 internal immutable _normalizedWeight2;\n uint256 internal immutable _normalizedWeight3;\n uint256 internal immutable _normalizedWeight4;\n uint256 internal immutable _normalizedWeight5;\n uint256 internal immutable _normalizedWeight6;\n uint256 internal immutable _normalizedWeight7;\n\n /// @notice Indicates that one of the pool tokens' weight is below the minimum allowed.\n error MinWeight();\n\n /// @notice Indicates that the sum of the pool tokens' weights is not FixedPoint.ONE.\n error NormalizedWeightInvariant();\n\n /**\n * @notice `getRate` from `IRateProvider` was called on a Weighted Pool.\n * @dev It is not safe to nest Weighted Pools as WITH_RATE tokens in other pools, where they function as their own\n * rate provider. The default `getRate` implementation from `BalancerPoolToken` computes the BPT rate using the\n * invariant, which has a non-trivial (and non-linear) error. Without the ability to specify a rounding direction,\n * the rate could be manipulable.\n *\n * It is fine to nest Weighted Pools as STANDARD tokens, or to use them with external rate providers that are\n * stable and have at most 1 wei of rounding error (e.g., oracle-based).\n */\n error WeightedPoolBptRateUnsupported();\n\n constructor(\n NewPoolParams memory params,\n IVault vault\n ) BalancerPoolToken(vault, params.name, params.symbol) PoolInfo(vault) Version(params.version) {\n _totalTokens = params.numTokens;\n InputHelpers.ensureInputLengthMatch(_totalTokens, params.normalizedWeights.length);\n\n // Ensure each normalized weight is above the minimum.\n uint256 normalizedSum = 0;\n for (uint8 i = 0; i < _totalTokens; ++i) {\n uint256 normalizedWeight = params.normalizedWeights[i];\n\n if (normalizedWeight < _MIN_WEIGHT) {\n revert MinWeight();\n }\n normalizedSum = normalizedSum + normalizedWeight;\n\n // prettier-ignore\n if (i == 0) { _normalizedWeight0 = normalizedWeight; }\n else if (i == 1) { _normalizedWeight1 = normalizedWeight; }\n else if (i == 2) { _normalizedWeight2 = normalizedWeight; }\n else if (i == 3) { _normalizedWeight3 = normalizedWeight; }\n else if (i == 4) { _normalizedWeight4 = normalizedWeight; }\n else if (i == 5) { _normalizedWeight5 = normalizedWeight; }\n else if (i == 6) { _normalizedWeight6 = normalizedWeight; }\n else if (i == 7) { _normalizedWeight7 = normalizedWeight; }\n }\n\n // Ensure that the normalized weights sum to ONE.\n if (normalizedSum != FixedPoint.ONE) {\n revert NormalizedWeightInvariant();\n }\n }\n\n /// @inheritdoc IBasePool\n function computeInvariant(uint256[] memory balancesLiveScaled18, Rounding rounding) public view returns (uint256) {\n function(uint256[] memory, uint256[] memory) internal pure returns (uint256) _upOrDown = rounding ==\n Rounding.ROUND_UP\n ? WeightedMath.computeInvariantUp\n : WeightedMath.computeInvariantDown;\n\n return _upOrDown(_getNormalizedWeights(), balancesLiveScaled18);\n }\n\n /// @inheritdoc IBasePool\n function computeBalance(\n uint256[] memory balancesLiveScaled18,\n uint256 tokenInIndex,\n uint256 invariantRatio\n ) external view returns (uint256 newBalance) {\n return\n WeightedMath.computeBalanceOutGivenInvariant(\n balancesLiveScaled18[tokenInIndex],\n _getNormalizedWeight(tokenInIndex),\n invariantRatio\n );\n }\n\n /// @inheritdoc IWeightedPool\n function getNormalizedWeights() external view returns (uint256[] memory) {\n return _getNormalizedWeights();\n }\n\n /// @inheritdoc IBasePool\n function onSwap(PoolSwapParams memory request) public view onlyVault returns (uint256) {\n uint256 balanceTokenInScaled18 = request.balancesScaled18[request.indexIn];\n uint256 balanceTokenOutScaled18 = request.balancesScaled18[request.indexOut];\n\n if (request.kind == SwapKind.EXACT_IN) {\n uint256 amountOutScaled18 = WeightedMath.computeOutGivenExactIn(\n balanceTokenInScaled18,\n _getNormalizedWeight(request.indexIn),\n balanceTokenOutScaled18,\n _getNormalizedWeight(request.indexOut),\n request.amountGivenScaled18\n );\n\n return amountOutScaled18;\n } else {\n uint256 amountInScaled18 = WeightedMath.computeInGivenExactOut(\n balanceTokenInScaled18,\n _getNormalizedWeight(request.indexIn),\n balanceTokenOutScaled18,\n _getNormalizedWeight(request.indexOut),\n request.amountGivenScaled18\n );\n\n // Fees are added after scaling happens, to reduce the complexity of the rounding direction analysis.\n return amountInScaled18;\n }\n }\n\n function _getNormalizedWeight(uint256 tokenIndex) internal view virtual returns (uint256) {\n // prettier-ignore\n if (tokenIndex == 0) { return _normalizedWeight0; }\n else if (tokenIndex == 1) { return _normalizedWeight1; }\n else if (tokenIndex == 2) { return _normalizedWeight2; }\n else if (tokenIndex == 3) { return _normalizedWeight3; }\n else if (tokenIndex == 4) { return _normalizedWeight4; }\n else if (tokenIndex == 5) { return _normalizedWeight5; }\n else if (tokenIndex == 6) { return _normalizedWeight6; }\n else if (tokenIndex == 7) { return _normalizedWeight7; }\n else {\n revert IVaultErrors.InvalidToken();\n }\n }\n\n function _getNormalizedWeights() internal view virtual returns (uint256[] memory) {\n uint256 totalTokens = _totalTokens;\n uint256[] memory normalizedWeights = new uint256[](totalTokens);\n\n // prettier-ignore\n {\n normalizedWeights[0] = _normalizedWeight0;\n normalizedWeights[1] = _normalizedWeight1;\n if (totalTokens > 2) { normalizedWeights[2] = _normalizedWeight2; } else { return normalizedWeights; }\n if (totalTokens > 3) { normalizedWeights[3] = _normalizedWeight3; } else { return normalizedWeights; }\n if (totalTokens > 4) { normalizedWeights[4] = _normalizedWeight4; } else { return normalizedWeights; }\n if (totalTokens > 5) { normalizedWeights[5] = _normalizedWeight5; } else { return normalizedWeights; }\n if (totalTokens > 6) { normalizedWeights[6] = _normalizedWeight6; } else { return normalizedWeights; }\n if (totalTokens > 7) { normalizedWeights[7] = _normalizedWeight7; }\n }\n\n return normalizedWeights;\n }\n\n /// @inheritdoc ISwapFeePercentageBounds\n function getMinimumSwapFeePercentage() external pure returns (uint256) {\n return _MIN_SWAP_FEE_PERCENTAGE;\n }\n\n /// @inheritdoc ISwapFeePercentageBounds\n function getMaximumSwapFeePercentage() external pure returns (uint256) {\n return _MAX_SWAP_FEE_PERCENTAGE;\n }\n\n /// @inheritdoc IUnbalancedLiquidityInvariantRatioBounds\n function getMinimumInvariantRatio() external pure returns (uint256) {\n return WeightedMath._MIN_INVARIANT_RATIO;\n }\n\n /// @inheritdoc IUnbalancedLiquidityInvariantRatioBounds\n function getMaximumInvariantRatio() external pure returns (uint256) {\n return WeightedMath._MAX_INVARIANT_RATIO;\n }\n\n /// @inheritdoc IWeightedPool\n function getWeightedPoolDynamicData() external view returns (WeightedPoolDynamicData memory data) {\n data.balancesLiveScaled18 = _vault.getCurrentLiveBalances(address(this));\n (, data.tokenRates) = _vault.getPoolTokenRates(address(this));\n data.staticSwapFeePercentage = _vault.getStaticSwapFeePercentage((address(this)));\n data.totalSupply = totalSupply();\n\n PoolConfig memory poolConfig = _vault.getPoolConfig(address(this));\n data.isPoolInitialized = poolConfig.isPoolInitialized;\n data.isPoolPaused = poolConfig.isPoolPaused;\n data.isPoolInRecoveryMode = poolConfig.isPoolInRecoveryMode;\n }\n\n /// @inheritdoc IWeightedPool\n function getWeightedPoolImmutableData() external view returns (WeightedPoolImmutableData memory data) {\n data.tokens = _vault.getPoolTokens(address(this));\n (data.decimalScalingFactors, ) = _vault.getPoolTokenRates(address(this));\n data.normalizedWeights = _getNormalizedWeights();\n }\n\n /// @inheritdoc IRateProvider\n function getRate() public pure override returns (uint256) {\n revert WeightedPoolBptRateUnsupported();\n }\n}\n"},"contracts/WeightedPool8020Factory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IERC20Metadata } from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\nimport { IPoolVersion } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { BasePoolFactory } from \"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol\";\nimport { Version } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\";\n\nimport { WeightedPool } from \"./WeightedPool.sol\";\n\n/**\n * @notice Weighted Pool factory for 80/20 pools.\n * @dev These are standard Weighted Pools, but constrained to two tokens and 80/20 weights, greatly simplifying their\n * configuration. This is an example of a customized factory, designed to deploy special-purpose pools.\n *\n * It does not allow hooks, and has a custom salt computation that does not consider the deployer address.\n *\n * See https://medium.com/balancer-protocol/the-8020-initiative-64a7a6cab976 for one use case, and\n * https://medium.com/balancer-protocol/80-20-balancer-pools-ad7fed816c8d for a general discussion of the benefits of\n * 80/20 pools.\n */\ncontract WeightedPool8020Factory is IPoolVersion, BasePoolFactory, Version {\n uint256 private constant _EIGHTY = 80e16; // 80%\n uint256 private constant _TWENTY = 20e16; // 20%\n\n string private _poolVersion;\n\n constructor(\n IVault vault,\n uint32 pauseWindowDuration,\n string memory factoryVersion,\n string memory poolVersion\n ) BasePoolFactory(vault, pauseWindowDuration, type(WeightedPool).creationCode) Version(factoryVersion) {\n _poolVersion = poolVersion;\n }\n\n /// @inheritdoc IPoolVersion\n function getPoolVersion() external view returns (string memory) {\n return _poolVersion;\n }\n\n /**\n * @notice Deploys a new `WeightedPool`.\n * @dev Since tokens must be sorted, pass in explicit 80/20 token config structs. This assumes both tokens support\n * the `IERC20Metadata` interface with `symbol` that returns a string. Otherwise, use the regular\n * `WeightedPoolFactory`.\n *\n * @param highWeightTokenConfig The token configuration of the high weight token\n * @param lowWeightTokenConfig The token configuration of the low weight token\n * @param roleAccounts Addresses the Vault will allow to change certain pool settings\n * @param swapFeePercentage Initial swap fee percentage\n * @return pool The pool address\n */\n function create(\n TokenConfig memory highWeightTokenConfig,\n TokenConfig memory lowWeightTokenConfig,\n PoolRoleAccounts memory roleAccounts,\n uint256 swapFeePercentage\n ) external returns (address pool) {\n if (roleAccounts.poolCreator != address(0)) {\n revert StandardPoolWithCreator();\n }\n\n IERC20 highWeightToken = highWeightTokenConfig.token;\n IERC20 lowWeightToken = lowWeightTokenConfig.token;\n\n TokenConfig[] memory tokenConfig = new TokenConfig[](2);\n uint256[] memory weights = new uint256[](2);\n\n // Tokens must be sorted.\n (uint256 highWeightTokenIdx, uint256 lowWeightTokenIdx) = highWeightToken > lowWeightToken ? (1, 0) : (0, 1);\n\n weights[highWeightTokenIdx] = _EIGHTY;\n weights[lowWeightTokenIdx] = _TWENTY;\n\n tokenConfig[highWeightTokenIdx] = highWeightTokenConfig;\n tokenConfig[lowWeightTokenIdx] = lowWeightTokenConfig;\n\n bytes memory constructorArgs = _calculateConstructorArgs(highWeightToken, lowWeightToken);\n bytes32 salt = _calculateSalt(highWeightToken, lowWeightToken);\n\n pool = _create(constructorArgs, salt);\n\n // Using empty pool hooks for standard 80/20 pool.\n _registerPoolWithVault(\n pool,\n tokenConfig,\n swapFeePercentage,\n false, // not exempt from protocol fees\n roleAccounts,\n getDefaultPoolHooksContract(),\n getDefaultLiquidityManagement()\n );\n }\n\n /**\n * @notice Gets the address of the pool with the respective tokens and weights.\n * @param highWeightToken The token with 80% weight in the pool.\n * @param lowWeightToken The token with 20% weight in the pool.\n * @return pool Address of the pool\n */\n function getPool(IERC20 highWeightToken, IERC20 lowWeightToken) external view returns (address pool) {\n bytes memory constructorArgs = _calculateConstructorArgs(highWeightToken, lowWeightToken);\n bytes32 salt = _calculateSalt(highWeightToken, lowWeightToken);\n\n pool = getDeploymentAddress(constructorArgs, salt);\n }\n\n function _calculateSalt(IERC20 highWeightToken, IERC20 lowWeightToken) internal view returns (bytes32 salt) {\n salt = keccak256(abi.encode(block.chainid, highWeightToken, lowWeightToken));\n }\n\n function _calculateConstructorArgs(\n IERC20 highWeightToken,\n IERC20 lowWeightToken\n ) private view returns (bytes memory constructorArgs) {\n // Tokens must be sorted.\n (uint256 highWeightTokenIdx, uint256 lowWeightTokenIdx) = highWeightToken > lowWeightToken ? (1, 0) : (0, 1);\n\n string memory highWeightTokenSymbol = IERC20Metadata(address(highWeightToken)).symbol();\n string memory lowWeightTokenSymbol = IERC20Metadata(address(lowWeightToken)).symbol();\n\n uint256[] memory weights = new uint256[](2);\n weights[highWeightTokenIdx] = _EIGHTY;\n weights[lowWeightTokenIdx] = _TWENTY;\n\n constructorArgs = abi.encode(\n WeightedPool.NewPoolParams({\n name: string.concat(\"Balancer 80 \", highWeightTokenSymbol, \" 20 \", lowWeightTokenSymbol),\n symbol: string.concat(\"B-80\", highWeightTokenSymbol, \"-20\", lowWeightTokenSymbol),\n numTokens: 2,\n normalizedWeights: weights,\n version: _poolVersion\n }),\n getVault()\n );\n }\n\n /**\n * @dev By default, the BasePoolFactory adds the sender and chainId to compute a final salt.\n * Override this to make it use the canonical address salt directly.\n */\n function _computeFinalSalt(bytes32 salt) internal pure override returns (bytes32) {\n return salt;\n }\n}\n"},"contracts/WeightedPoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.24;\n\nimport { IPoolVersion } from \"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol\";\nimport { IVault } from \"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\";\nimport {\n TokenConfig,\n PoolRoleAccounts,\n LiquidityManagement\n} from \"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\";\n\nimport { BasePoolFactory } from \"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol\";\nimport { Version } from \"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\";\n\nimport { WeightedPool } from \"./WeightedPool.sol\";\n\n/**\n * @notice General Weighted Pool factory\n * @dev This is the most general factory, which allows up to eight tokens and arbitrary weights.\n */\ncontract WeightedPoolFactory is IPoolVersion, BasePoolFactory, Version {\n // solhint-disable not-rely-on-time\n\n string private _poolVersion;\n\n constructor(\n IVault vault,\n uint32 pauseWindowDuration,\n string memory factoryVersion,\n string memory poolVersion\n ) BasePoolFactory(vault, pauseWindowDuration, type(WeightedPool).creationCode) Version(factoryVersion) {\n _poolVersion = poolVersion;\n }\n\n /// @inheritdoc IPoolVersion\n function getPoolVersion() external view returns (string memory) {\n return _poolVersion;\n }\n\n /**\n * @notice Deploys a new `WeightedPool`.\n * @dev Tokens must be sorted for pool registration.\n * @param name The name of the pool\n * @param symbol The symbol of the pool\n * @param tokens An array of descriptors for the tokens the pool will manage\n * @param normalizedWeights The pool weights (must add to FixedPoint.ONE)\n * @param roleAccounts Addresses the Vault will allow to change certain pool settings\n * @param swapFeePercentage Initial swap fee percentage\n * @param poolHooksContract Contract that implements the hooks for the pool\n * @param enableDonation If true, the pool will support the donation add liquidity mechanism\n * @param disableUnbalancedLiquidity If true, only proportional add and remove liquidity are accepted\n * @param salt The salt value that will be passed to create2 deployment\n */\n function create(\n string memory name,\n string memory symbol,\n TokenConfig[] memory tokens,\n uint256[] memory normalizedWeights,\n PoolRoleAccounts memory roleAccounts,\n uint256 swapFeePercentage,\n address poolHooksContract,\n bool enableDonation,\n bool disableUnbalancedLiquidity,\n bytes32 salt\n ) external returns (address pool) {\n if (roleAccounts.poolCreator != address(0)) {\n revert StandardPoolWithCreator();\n }\n\n LiquidityManagement memory liquidityManagement = getDefaultLiquidityManagement();\n liquidityManagement.enableDonation = enableDonation;\n // disableUnbalancedLiquidity must be set to true if a hook has the flag enableHookAdjustedAmounts = true.\n liquidityManagement.disableUnbalancedLiquidity = disableUnbalancedLiquidity;\n\n pool = _create(\n abi.encode(\n WeightedPool.NewPoolParams({\n name: name,\n symbol: symbol,\n numTokens: tokens.length,\n normalizedWeights: normalizedWeights,\n version: _poolVersion\n }),\n getVault()\n ),\n salt\n );\n\n _registerPoolWithVault(\n pool,\n tokens,\n swapFeePercentage,\n false, // not exempt from protocol fees\n roleAccounts,\n poolHooksContract,\n liquidityManagement\n );\n }\n}\n"},"permit2/src/interfaces/IAllowanceTransfer.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IEIP712} from \"./IEIP712.sol\";\n\n/// @title AllowanceTransfer\n/// @notice Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts\n/// @dev Requires user's token approval on the Permit2 contract\ninterface IAllowanceTransfer is IEIP712 {\n /// @notice Thrown when an allowance on a token has expired.\n /// @param deadline The timestamp at which the allowed amount is no longer valid\n error AllowanceExpired(uint256 deadline);\n\n /// @notice Thrown when an allowance on a token has been depleted.\n /// @param amount The maximum amount allowed\n error InsufficientAllowance(uint256 amount);\n\n /// @notice Thrown when too many nonces are invalidated.\n error ExcessiveInvalidation();\n\n /// @notice Emits an event when the owner successfully invalidates an ordered nonce.\n event NonceInvalidation(\n address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce\n );\n\n /// @notice Emits an event when the owner successfully sets permissions on a token for the spender.\n event Approval(\n address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration\n );\n\n /// @notice Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\n event Permit(\n address indexed owner,\n address indexed token,\n address indexed spender,\n uint160 amount,\n uint48 expiration,\n uint48 nonce\n );\n\n /// @notice Emits an event when the owner sets the allowance back to 0 with the lockdown function.\n event Lockdown(address indexed owner, address token, address spender);\n\n /// @notice The permit data for a token\n struct PermitDetails {\n // ERC20 token address\n address token;\n // the maximum amount allowed to spend\n uint160 amount;\n // timestamp at which a spender's token allowances become invalid\n uint48 expiration;\n // an incrementing value indexed per owner,token,and spender for each signature\n uint48 nonce;\n }\n\n /// @notice The permit message signed for a single token allowance\n struct PermitSingle {\n // the permit data for a single token alownce\n PermitDetails details;\n // address permissioned on the allowed tokens\n address spender;\n // deadline on the permit signature\n uint256 sigDeadline;\n }\n\n /// @notice The permit message signed for multiple token allowances\n struct PermitBatch {\n // the permit data for multiple token allowances\n PermitDetails[] details;\n // address permissioned on the allowed tokens\n address spender;\n // deadline on the permit signature\n uint256 sigDeadline;\n }\n\n /// @notice The saved permissions\n /// @dev This info is saved per owner, per token, per spender and all signed over in the permit message\n /// @dev Setting amount to type(uint160).max sets an unlimited approval\n struct PackedAllowance {\n // amount allowed\n uint160 amount;\n // permission expiry\n uint48 expiration;\n // an incrementing value indexed per owner,token,and spender for each signature\n uint48 nonce;\n }\n\n /// @notice A token spender pair.\n struct TokenSpenderPair {\n // the token the spender is approved\n address token;\n // the spender address\n address spender;\n }\n\n /// @notice Details for a token transfer.\n struct AllowanceTransferDetails {\n // the owner of the token\n address from;\n // the recipient of the token\n address to;\n // the amount of the token\n uint160 amount;\n // the token to be transferred\n address token;\n }\n\n /// @notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n /// @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n /// @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\n function allowance(address user, address token, address spender)\n external\n view\n returns (uint160 amount, uint48 expiration, uint48 nonce);\n\n /// @notice Approves the spender to use up to amount of the specified token up until the expiration\n /// @param token The token to approve\n /// @param spender The spender address to approve\n /// @param amount The approved amount of the token\n /// @param expiration The timestamp at which the approval is no longer valid\n /// @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n /// @dev Setting amount to type(uint160).max sets an unlimited approval\n function approve(address token, address spender, uint160 amount, uint48 expiration) external;\n\n /// @notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n /// @param owner The owner of the tokens being approved\n /// @param permitSingle Data signed over by the owner specifying the terms of approval\n /// @param signature The owner's signature over the permit data\n function permit(address owner, PermitSingle memory permitSingle, bytes calldata signature) external;\n\n /// @notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n /// @param owner The owner of the tokens being approved\n /// @param permitBatch Data signed over by the owner specifying the terms of approval\n /// @param signature The owner's signature over the permit data\n function permit(address owner, PermitBatch memory permitBatch, bytes calldata signature) external;\n\n /// @notice Transfer approved tokens from one address to another\n /// @param from The address to transfer from\n /// @param to The address of the recipient\n /// @param amount The amount of the token to transfer\n /// @param token The token address to transfer\n /// @dev Requires the from address to have approved at least the desired amount\n /// of tokens to msg.sender.\n function transferFrom(address from, address to, uint160 amount, address token) external;\n\n /// @notice Transfer approved tokens in a batch\n /// @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n /// @dev Requires the from addresses to have approved at least the desired amount\n /// of tokens to msg.sender.\n function transferFrom(AllowanceTransferDetails[] calldata transferDetails) external;\n\n /// @notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n /// by batch revoking approvals\n /// @param approvals Array of approvals to revoke.\n function lockdown(TokenSpenderPair[] calldata approvals) external;\n\n /// @notice Invalidate nonces for a given (token, spender) pair\n /// @param token The token to invalidate nonces for\n /// @param spender The spender to invalidate nonces for\n /// @param newNonce The new nonce to set. Invalidates all nonces less than it.\n /// @dev Can't invalidate more than 2**16 nonces per transaction.\n function invalidateNonces(address token, address spender, uint48 newNonce) external;\n}\n"},"permit2/src/interfaces/IEIP712.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IEIP712 {\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"permit2/src/interfaces/IPermit2.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {ISignatureTransfer} from \"./ISignatureTransfer.sol\";\nimport {IAllowanceTransfer} from \"./IAllowanceTransfer.sol\";\n\n/// @notice Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.\n/// @dev Users must approve Permit2 before calling any of the transfer functions.\ninterface IPermit2 is ISignatureTransfer, IAllowanceTransfer {\n// IPermit2 unifies the two interfaces so users have maximal flexibility with their approval.\n}\n"},"permit2/src/interfaces/ISignatureTransfer.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IEIP712} from \"./IEIP712.sol\";\n\n/// @title SignatureTransfer\n/// @notice Handles ERC20 token transfers through signature based actions\n/// @dev Requires user's token approval on the Permit2 contract\ninterface ISignatureTransfer is IEIP712 {\n /// @notice Thrown when the requested amount for a transfer is larger than the permissioned amount\n /// @param maxAmount The maximum amount a spender can request to transfer\n error InvalidAmount(uint256 maxAmount);\n\n /// @notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\n /// @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\n error LengthMismatch();\n\n /// @notice Emits an event when the owner successfully invalidates an unordered nonce.\n event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask);\n\n /// @notice The token and amount details for a transfer signed in the permit transfer signature\n struct TokenPermissions {\n // ERC20 token address\n address token;\n // the maximum amount that can be spent\n uint256 amount;\n }\n\n /// @notice The signed permit message for a single token transfer\n struct PermitTransferFrom {\n TokenPermissions permitted;\n // a unique value for every token owner's signature to prevent signature replays\n uint256 nonce;\n // deadline on the permit signature\n uint256 deadline;\n }\n\n /// @notice Specifies the recipient address and amount for batched transfers.\n /// @dev Recipients and amounts correspond to the index of the signed token permissions array.\n /// @dev Reverts if the requested amount is greater than the permitted signed amount.\n struct SignatureTransferDetails {\n // recipient address\n address to;\n // spender requested amount\n uint256 requestedAmount;\n }\n\n /// @notice Used to reconstruct the signed permit message for multiple token transfers\n /// @dev Do not need to pass in spender address as it is required that it is msg.sender\n /// @dev Note that a user still signs over a spender address\n struct PermitBatchTransferFrom {\n // the tokens and corresponding amounts permitted for a transfer\n TokenPermissions[] permitted;\n // a unique value for every token owner's signature to prevent signature replays\n uint256 nonce;\n // deadline on the permit signature\n uint256 deadline;\n }\n\n /// @notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\n /// @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order\n /// @dev The mapping is indexed first by the token owner, then by an index specified in the nonce\n /// @dev It returns a uint256 bitmap\n /// @dev The index, or wordPosition is capped at type(uint248).max\n function nonceBitmap(address, uint256) external view returns (uint256);\n\n /// @notice Transfers a token using a signed permit message\n /// @dev Reverts if the requested amount is greater than the permitted signed amount\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails The spender's requested transfer details for the permitted token\n /// @param signature The signature to verify\n function permitTransferFrom(\n PermitTransferFrom memory permit,\n SignatureTransferDetails calldata transferDetails,\n address owner,\n bytes calldata signature\n ) external;\n\n /// @notice Transfers a token using a signed permit message\n /// @notice Includes extra data provided by the caller to verify signature over\n /// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n /// @dev Reverts if the requested amount is greater than the permitted signed amount\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails The spender's requested transfer details for the permitted token\n /// @param witness Extra data to include when checking the user signature\n /// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n /// @param signature The signature to verify\n function permitWitnessTransferFrom(\n PermitTransferFrom memory permit,\n SignatureTransferDetails calldata transferDetails,\n address owner,\n bytes32 witness,\n string calldata witnessTypeString,\n bytes calldata signature\n ) external;\n\n /// @notice Transfers multiple tokens using a signed permit message\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails Specifies the recipient and requested amount for the token transfer\n /// @param signature The signature to verify\n function permitTransferFrom(\n PermitBatchTransferFrom memory permit,\n SignatureTransferDetails[] calldata transferDetails,\n address owner,\n bytes calldata signature\n ) external;\n\n /// @notice Transfers multiple tokens using a signed permit message\n /// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n /// @notice Includes extra data provided by the caller to verify signature over\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails Specifies the recipient and requested amount for the token transfer\n /// @param witness Extra data to include when checking the user signature\n /// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n /// @param signature The signature to verify\n function permitWitnessTransferFrom(\n PermitBatchTransferFrom memory permit,\n SignatureTransferDetails[] calldata transferDetails,\n address owner,\n bytes32 witness,\n string calldata witnessTypeString,\n bytes calldata signature\n ) external;\n\n /// @notice Invalidates the bits specified in mask for the bitmap at the word position\n /// @dev The wordPos is maxed at type(uint248).max\n /// @param wordPos A number to index the nonceBitmap at\n /// @param mask A bitmap masked against msg.sender's current bitmap at the word position\n function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external;\n}\n"}},"settings":{"viaIR":true,"evmVersion":"cancun","optimizer":{"enabled":true,"runs":9999,"details":{"yulDetails":{"optimizerSteps":"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu"}}},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"2394","formattedMessage":"Warning: Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.\n --> @balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol:74:13:\n |\n74 | tstore(slot, value)\n | ^^^^^^\n\n","message":"Transient storage as defined by EIP-1153 can break the composability of smart contracts: Since transient storage is cleared only at the end of the transaction and not at the end of the outermost call frame to the contract within a transaction, your contract may unintentionally misbehave when invoked multiple times in a complex transaction. To avoid this, be sure to clear all transient storage at the end of any call to your contract. The use of transient storage for reentrancy guards that are cleared at the end of the call is safe.","severity":"warning","sourceLocation":{"end":2572,"file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","start":2566},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 27394 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n --> @balancer-labs/v3-vault/contracts/Vault.sol:40:1:\n |\n40 | contract Vault is IVaultMain, VaultCommon, Proxy {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 27394 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":82096,"file":"@balancer-labs/v3-vault/contracts/Vault.sol","start":2550},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 28186 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n --> @balancer-labs/v3-vault/contracts/test/RouterMock.sol:22:1:\n |\n22 | contract RouterMock is Router {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 28186 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":8785,"file":"@balancer-labs/v3-vault/contracts/test/RouterMock.sol","start":978},"type":"Warning"},{"component":"general","errorCode":"5574","formattedMessage":"Warning: Contract code size is 50628 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n --> @balancer-labs/v3-vault/contracts/test/VaultMock.sol:44:1:\n |\n44 | contract VaultMock is IVaultMainMock, Vault {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract code size is 50628 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":31777,"file":"@balancer-labs/v3-vault/contracts/test/VaultMock.sol","start":2335},"type":"Warning"},{"component":"general","errorCode":"3860","formattedMessage":"Warning: Contract initcode size is 73078 bytes and exceeds 49152 bytes (a limit introduced in Shanghai). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.\n --> @balancer-labs/v3-vault/contracts/test/VaultMock.sol:44:1:\n |\n44 | contract VaultMock is IVaultMainMock, Vault {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n","message":"Contract initcode size is 73078 bytes and exceeds 49152 bytes (a limit introduced in Shanghai). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low \"runs\" value!), turning off revert strings, or using libraries.","severity":"warning","sourceLocation":{"end":31777,"file":"@balancer-labs/v3-vault/contracts/test/VaultMock.sol","start":2335},"type":"Warning"}],"sources":{"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol","exportedSymbols":{"IERC20":[39274],"IPoolInfo":[54],"TokenInfo":[4486]},"id":55,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:0"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":55,"sourceUnit":39275,"src":"72:72:0","symbolAliases":[{"foreign":{"id":2,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"../vault/VaultTypes.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":55,"sourceUnit":4654,"src":"146:52:0","symbolAliases":[{"foreign":{"id":4,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"155:9:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPoolInfo","contractDependencies":[],"contractKind":"interface","documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"200:203:0","text":" @notice Convenience interface for pools, to get easy access to information stored in the Vault.\n Intended mostly for off-chain requests; pools do not need to implement this to work properly."},"fullyImplemented":false,"id":54,"linearizedBaseContracts":[54],"name":"IPoolInfo","nameLocation":"414:9:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7,"nodeType":"StructuredDocumentation","src":"430:145:0","text":" @notice Gets the tokens registered in the pool.\n @return tokens List of tokens in the pool, sorted in registration order"},"functionSelector":"aa6ca808","id":14,"implemented":false,"kind":"function","modifiers":[],"name":"getTokens","nameLocation":"589:9:0","nodeType":"FunctionDefinition","parameters":{"id":8,"nodeType":"ParameterList","parameters":[],"src":"598:2:0"},"returnParameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"mutability":"mutable","name":"tokens","nameLocation":"640:6:0","nodeType":"VariableDeclaration","scope":14,"src":"624:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":10,"nodeType":"UserDefinedTypeName","pathNode":{"id":9,"name":"IERC20","nameLocations":["624:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"624:6:0"},"referencedDeclaration":39274,"src":"624:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":11,"nodeType":"ArrayTypeName","src":"624:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"623:24:0"},"scope":54,"src":"580:68:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"654:515:0","text":" @notice Gets the raw data for the pool: tokens, token info, raw balances, and last live balances.\n @return tokens Pool tokens, sorted in token registration order\n @return tokenInfo Token info structs (type, rate provider, yield flag), sorted in token registration order\n @return balancesRaw Current native decimal balances of the pool tokens, sorted in token registration order\n @return lastBalancesLiveScaled18 Last saved live balances, sorted in token registration order"},"functionSelector":"abb1dc44","id":32,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenInfo","nameLocation":"1183:12:0","nodeType":"FunctionDefinition","parameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"1195:2:0"},"returnParameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"mutability":"mutable","name":"tokens","nameLocation":"1274:6:0","nodeType":"VariableDeclaration","scope":32,"src":"1258:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":18,"nodeType":"UserDefinedTypeName","pathNode":{"id":17,"name":"IERC20","nameLocations":["1258:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1258:6:0"},"referencedDeclaration":39274,"src":"1258:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":19,"nodeType":"ArrayTypeName","src":"1258:8:0","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"tokenInfo","nameLocation":"1313:9:0","nodeType":"VariableDeclaration","scope":32,"src":"1294:28:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo[]"},"typeName":{"baseType":{"id":22,"nodeType":"UserDefinedTypeName","pathNode":{"id":21,"name":"TokenInfo","nameLocations":["1294:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"1294:9:0"},"referencedDeclaration":4486,"src":"1294:9:0","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":23,"nodeType":"ArrayTypeName","src":"1294:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}},"visibility":"internal"},{"constant":false,"id":27,"mutability":"mutable","name":"balancesRaw","nameLocation":"1353:11:0","nodeType":"VariableDeclaration","scope":32,"src":"1336:28:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26,"nodeType":"ArrayTypeName","src":"1336:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30,"mutability":"mutable","name":"lastBalancesLiveScaled18","nameLocation":"1395:24:0","nodeType":"VariableDeclaration","scope":32,"src":"1378:41:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28,"name":"uint256","nodeType":"ElementaryTypeName","src":"1378:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29,"nodeType":"ArrayTypeName","src":"1378:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1244:185:0"},"scope":54,"src":"1174:256:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":33,"nodeType":"StructuredDocumentation","src":"1436:555:0","text":" @notice Gets the current live balances of the pool as fixed point, 18-decimal numbers.\n @dev Note that live balances will not necessarily be accurate if the pool is in Recovery Mode.\n Withdrawals in Recovery Mode do not make external calls (including those necessary for updating live balances),\n so if there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\n @return balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates"},"functionSelector":"b156aa0a","id":39,"implemented":false,"kind":"function","modifiers":[],"name":"getCurrentLiveBalances","nameLocation":"2005:22:0","nodeType":"FunctionDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"2027:2:0"},"returnParameters":{"id":38,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"2070:20:0","nodeType":"VariableDeclaration","scope":39,"src":"2053:37:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":35,"name":"uint256","nodeType":"ElementaryTypeName","src":"2053:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36,"nodeType":"ArrayTypeName","src":"2053:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2052:39:0"},"scope":54,"src":"1996:96:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":40,"nodeType":"StructuredDocumentation","src":"2098:172:0","text":" @notice Fetches the static swap fee percentage for the pool.\n @return staticSwapFeePercentage 18-decimal FP value of the static swap fee percentage"},"functionSelector":"d335b0cf","id":45,"implemented":false,"kind":"function","modifiers":[],"name":"getStaticSwapFeePercentage","nameLocation":"2284:26:0","nodeType":"FunctionDefinition","parameters":{"id":41,"nodeType":"ParameterList","parameters":[],"src":"2310:2:0"},"returnParameters":{"id":44,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43,"mutability":"mutable","name":"staticSwapFeePercentage","nameLocation":"2344:23:0","nodeType":"VariableDeclaration","scope":45,"src":"2336:31:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42,"name":"uint256","nodeType":"ElementaryTypeName","src":"2336:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2335:33:0"},"scope":54,"src":"2275:94:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":46,"nodeType":"StructuredDocumentation","src":"2375:381:0","text":" @notice Gets the aggregate swap and yield fee percentages for a pool.\n @dev These are determined by the current protocol and pool creator fees, set in the `ProtocolFeeController`.\n @return aggregateSwapFeePercentage The aggregate percentage fee applied to swaps\n @return aggregateYieldFeePercentage The aggregate percentage fee applied to yield"},"functionSelector":"81fa807c","id":53,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregateFeePercentages","nameLocation":"2770:26:0","nodeType":"FunctionDefinition","parameters":{"id":47,"nodeType":"ParameterList","parameters":[],"src":"2796:2:0"},"returnParameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"2854:26:0","nodeType":"VariableDeclaration","scope":53,"src":"2846:34:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":48,"name":"uint256","nodeType":"ElementaryTypeName","src":"2846:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"2890:27:0","nodeType":"VariableDeclaration","scope":53,"src":"2882:35:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2845:73:0"},"scope":54,"src":"2761:158:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":55,"src":"404:2517:0","usedErrors":[],"usedEvents":[]}],"src":"46:2876:0"},"id":0},"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol","exportedSymbols":{"IBasePool":[1366],"IERC20":[39274],"IWeightedPool":[115],"WeightedPoolDynamicData":[90],"WeightedPoolImmutableData":[72]},"id":116,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":56,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:1"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":58,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":116,"sourceUnit":39275,"src":"72:72:1","symbolAliases":[{"foreign":{"id":57,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","file":"../vault/IBasePool.sol","id":60,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":116,"sourceUnit":1367,"src":"146:51:1","symbolAliases":[{"foreign":{"id":59,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"155:9:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"WeightedPoolImmutableData","documentation":{"id":61,"nodeType":"StructuredDocumentation","src":"199:375:1","text":" @notice Weighted Pool data that cannot change after deployment.\n @param tokens Pool tokens, sorted in token registration order\n @param decimalScalingFactors Conversion factor used to adjust for token decimals for uniform precision in\n calculations. FP(1) for 18-decimal tokens\n @param normalizedWeights The token weights, sorted in token registration order"},"id":72,"members":[{"constant":false,"id":65,"mutability":"mutable","name":"tokens","nameLocation":"623:6:1","nodeType":"VariableDeclaration","scope":72,"src":"614:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":63,"nodeType":"UserDefinedTypeName","pathNode":{"id":62,"name":"IERC20","nameLocations":["614:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"614:6:1"},"referencedDeclaration":39274,"src":"614:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":64,"nodeType":"ArrayTypeName","src":"614:8:1","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":68,"mutability":"mutable","name":"decimalScalingFactors","nameLocation":"645:21:1","nodeType":"VariableDeclaration","scope":72,"src":"635:31:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":66,"name":"uint256","nodeType":"ElementaryTypeName","src":"635:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":67,"nodeType":"ArrayTypeName","src":"635:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":71,"mutability":"mutable","name":"normalizedWeights","nameLocation":"682:17:1","nodeType":"VariableDeclaration","scope":72,"src":"672:27:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":69,"name":"uint256","nodeType":"ElementaryTypeName","src":"672:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":70,"nodeType":"ArrayTypeName","src":"672:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"WeightedPoolImmutableData","nameLocation":"582:25:1","nodeType":"StructDefinition","scope":116,"src":"575:127:1","visibility":"public"},{"canonicalName":"WeightedPoolDynamicData","documentation":{"id":73,"nodeType":"StructuredDocumentation","src":"704:1121:1","text":" @notice Snapshot of current Weighted Pool data that can change.\n @dev Note that live balances will not necessarily be accurate if the pool is in Recovery Mode. Withdrawals\n in Recovery Mode do not make external calls (including those necessary for updating live balances), so if\n there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\n @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n @param tokenRates 18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\n @param staticSwapFeePercentage 18-decimal FP value of the static swap fee percentage\n @param totalSupply The current total supply of the pool tokens (BPT)\n @param isPoolInitialized If false, the pool has not been seeded with initial liquidity, so operations will revert\n @param isPoolPaused If true, the pool is paused, and all non-recovery-mode state-changing operations will revert\n @param isPoolInRecoveryMode If true, Recovery Mode withdrawals are enabled, and live balances may be inaccurate"},"id":90,"members":[{"constant":false,"id":76,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"1873:20:1","nodeType":"VariableDeclaration","scope":90,"src":"1863:30:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":74,"name":"uint256","nodeType":"ElementaryTypeName","src":"1863:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75,"nodeType":"ArrayTypeName","src":"1863:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":79,"mutability":"mutable","name":"tokenRates","nameLocation":"1909:10:1","nodeType":"VariableDeclaration","scope":90,"src":"1899:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":77,"name":"uint256","nodeType":"ElementaryTypeName","src":"1899:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78,"nodeType":"ArrayTypeName","src":"1899:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":81,"mutability":"mutable","name":"staticSwapFeePercentage","nameLocation":"1933:23:1","nodeType":"VariableDeclaration","scope":90,"src":"1925:31:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80,"name":"uint256","nodeType":"ElementaryTypeName","src":"1925:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83,"mutability":"mutable","name":"totalSupply","nameLocation":"1970:11:1","nodeType":"VariableDeclaration","scope":90,"src":"1962:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82,"name":"uint256","nodeType":"ElementaryTypeName","src":"1962:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85,"mutability":"mutable","name":"isPoolInitialized","nameLocation":"1992:17:1","nodeType":"VariableDeclaration","scope":90,"src":"1987:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":84,"name":"bool","nodeType":"ElementaryTypeName","src":"1987:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":87,"mutability":"mutable","name":"isPoolPaused","nameLocation":"2020:12:1","nodeType":"VariableDeclaration","scope":90,"src":"2015:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":86,"name":"bool","nodeType":"ElementaryTypeName","src":"2015:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":89,"mutability":"mutable","name":"isPoolInRecoveryMode","nameLocation":"2043:20:1","nodeType":"VariableDeclaration","scope":90,"src":"2038:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":88,"name":"bool","nodeType":"ElementaryTypeName","src":"2038:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"WeightedPoolDynamicData","nameLocation":"1833:23:1","nodeType":"StructDefinition","scope":116,"src":"1826:240:1","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":92,"name":"IBasePool","nameLocations":["2137:9:1"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"2137:9:1"},"id":93,"nodeType":"InheritanceSpecifier","src":"2137:9:1"}],"canonicalName":"IWeightedPool","contractDependencies":[],"contractKind":"interface","documentation":{"id":91,"nodeType":"StructuredDocumentation","src":"2068:42:1","text":"@notice Full Weighted pool interface."},"fullyImplemented":false,"id":115,"linearizedBaseContracts":[115,1366,2855,2839],"name":"IWeightedPool","nameLocation":"2120:13:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":94,"nodeType":"StructuredDocumentation","src":"2153:146:1","text":" @notice Get the normalized weights.\n @return normalizedWeights The normalized weights, sorted in token registration order"},"functionSelector":"f89f27ed","id":100,"implemented":false,"kind":"function","modifiers":[],"name":"getNormalizedWeights","nameLocation":"2313:20:1","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[],"src":"2333:2:1"},"returnParameters":{"id":99,"nodeType":"ParameterList","parameters":[{"constant":false,"id":98,"mutability":"mutable","name":"normalizedWeights","nameLocation":"2376:17:1","nodeType":"VariableDeclaration","scope":100,"src":"2359:34:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"2359:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":97,"nodeType":"ArrayTypeName","src":"2359:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2358:36:1"},"scope":115,"src":"2304:91:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":101,"nodeType":"StructuredDocumentation","src":"2401:167:1","text":" @notice Get dynamic pool data relevant to swap/add/remove calculations.\n @return data A struct containing all dynamic weighted pool parameters"},"functionSelector":"c0bc6f33","id":107,"implemented":false,"kind":"function","modifiers":[],"name":"getWeightedPoolDynamicData","nameLocation":"2582:26:1","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[],"src":"2608:2:1"},"returnParameters":{"id":106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":105,"mutability":"mutable","name":"data","nameLocation":"2665:4:1","nodeType":"VariableDeclaration","scope":107,"src":"2634:35:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData"},"typeName":{"id":104,"nodeType":"UserDefinedTypeName","pathNode":{"id":103,"name":"WeightedPoolDynamicData","nameLocations":["2634:23:1"],"nodeType":"IdentifierPath","referencedDeclaration":90,"src":"2634:23:1"},"referencedDeclaration":90,"src":"2634:23:1","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_storage_ptr","typeString":"struct WeightedPoolDynamicData"}},"visibility":"internal"}],"src":"2633:37:1"},"scope":115,"src":"2573:98:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":108,"nodeType":"StructuredDocumentation","src":"2677:171:1","text":" @notice Get immutable pool data relevant to swap/add/remove calculations.\n @return data A struct containing all immutable weighted pool parameters"},"functionSelector":"53b79bd7","id":114,"implemented":false,"kind":"function","modifiers":[],"name":"getWeightedPoolImmutableData","nameLocation":"2862:28:1","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[],"src":"2890:2:1"},"returnParameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"data","nameLocation":"2949:4:1","nodeType":"VariableDeclaration","scope":114,"src":"2916:37:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolImmutableData_$72_memory_ptr","typeString":"struct WeightedPoolImmutableData"},"typeName":{"id":111,"nodeType":"UserDefinedTypeName","pathNode":{"id":110,"name":"WeightedPoolImmutableData","nameLocations":["2916:25:1"],"nodeType":"IdentifierPath","referencedDeclaration":72,"src":"2916:25:1"},"referencedDeclaration":72,"src":"2916:25:1","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolImmutableData_$72_storage_ptr","typeString":"struct WeightedPoolImmutableData"}},"visibility":"internal"}],"src":"2915:39:1"},"scope":115,"src":"2853:102:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":116,"src":"2110:847:1","usedErrors":[],"usedEvents":[]}],"src":"46:2912:1"},"id":1},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","exportedSymbols":{"IAuthentication":[130]},"id":131,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":117,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IAuthentication","contractDependencies":[],"contractKind":"interface","documentation":{"id":118,"nodeType":"StructuredDocumentation","src":"72:77:2","text":"@notice Simple interface for permissioned calling of external functions."},"fullyImplemented":false,"id":130,"linearizedBaseContracts":[130],"name":"IAuthentication","nameLocation":"159:15:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"181:67:2","text":"@notice The sender does not have permission to call a function."},"errorSelector":"23dada53","id":121,"name":"SenderNotAllowed","nameLocation":"259:16:2","nodeType":"ErrorDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[],"src":"275:2:2"},"src":"253:25:2"},{"documentation":{"id":122,"nodeType":"StructuredDocumentation","src":"284:237:2","text":" @notice Returns the action identifier associated with the external function described by `selector`.\n @param selector The 4-byte selector of the permissioned function\n @return actionId The computed actionId"},"functionSelector":"851c1bb3","id":129,"implemented":false,"kind":"function","modifiers":[],"name":"getActionId","nameLocation":"535:11:2","nodeType":"FunctionDefinition","parameters":{"id":125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":124,"mutability":"mutable","name":"selector","nameLocation":"554:8:2","nodeType":"VariableDeclaration","scope":129,"src":"547:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":123,"name":"bytes4","nodeType":"ElementaryTypeName","src":"547:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"546:17:2"},"returnParameters":{"id":128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"mutability":"mutable","name":"actionId","nameLocation":"595:8:2","nodeType":"VariableDeclaration","scope":129,"src":"587:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":126,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"586:18:2"},"scope":130,"src":"526:79:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":131,"src":"149:458:2","usedErrors":[121],"usedEvents":[]}],"src":"46:562:2"},"id":2},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol","exportedSymbols":{"IPoolVersion":[140]},"id":141,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":132,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IPoolVersion","contractDependencies":[],"contractKind":"interface","documentation":{"id":133,"nodeType":"StructuredDocumentation","src":"72:90:3","text":"@notice Simple interface to retrieve the version of pools deployed by a pool factory."},"fullyImplemented":false,"id":140,"linearizedBaseContracts":[140],"name":"IPoolVersion","nameLocation":"172:12:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":134,"nodeType":"StructuredDocumentation","src":"191:414:3","text":" @notice Returns a JSON representation of the deployed pool version containing name, version number and task ID.\n @dev This is typically only useful in complex Pool deployment schemes, where multiple subsystems need to know\n about each other. Note that this value will only be set at factory creation time.\n @return poolVersion A string representation of the pool version"},"functionSelector":"3f819b6f","id":139,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolVersion","nameLocation":"619:14:3","nodeType":"FunctionDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[],"src":"633:2:3"},"returnParameters":{"id":138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":137,"mutability":"mutable","name":"poolVersion","nameLocation":"673:11:3","nodeType":"VariableDeclaration","scope":139,"src":"659:25:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":136,"name":"string","nodeType":"ElementaryTypeName","src":"659:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"658:27:3"},"scope":140,"src":"610:76:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":141,"src":"162:526:3","usedErrors":[],"usedEvents":[]}],"src":"46:643:3"},"id":3},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","exportedSymbols":{"IRateProvider":[150]},"id":151,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":142,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IRateProvider","contractDependencies":[],"contractKind":"interface","documentation":{"id":143,"nodeType":"StructuredDocumentation","src":"72:56:4","text":"@notice General interface for token exchange rates."},"fullyImplemented":false,"id":150,"linearizedBaseContracts":[150],"name":"IRateProvider","nameLocation":"138:13:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":144,"nodeType":"StructuredDocumentation","src":"158:573:4","text":" @notice An 18 decimal fixed point number representing the exchange rate of one token to another related token.\n @dev The meaning of this rate depends on the context. Note that there may be an error associated with a token\n rate, and the caller might require a certain rounding direction to ensure correctness. This (legacy) interface\n does not take a rounding direction or return an error, so great care must be taken when interpreting and using\n rates in downstream computations.\n @return rate The current token rate"},"functionSelector":"679aefce","id":149,"implemented":false,"kind":"function","modifiers":[],"name":"getRate","nameLocation":"745:7:4","nodeType":"FunctionDefinition","parameters":{"id":145,"nodeType":"ParameterList","parameters":[],"src":"752:2:4"},"returnParameters":{"id":148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":147,"mutability":"mutable","name":"rate","nameLocation":"786:4:4","nodeType":"VariableDeclaration","scope":149,"src":"778:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":146,"name":"uint256","nodeType":"ElementaryTypeName","src":"778:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"777:14:4"},"scope":150,"src":"736:56:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":151,"src":"128:666:4","usedErrors":[],"usedEvents":[]}],"src":"46:749:4"},"id":4},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol","exportedSymbols":{"IVersion":[160]},"id":161,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":152,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IVersion","contractDependencies":[],"contractKind":"interface","documentation":{"id":153,"nodeType":"StructuredDocumentation","src":"72:77:5","text":"@notice Simple interface to retrieve the version of a deployed contract."},"fullyImplemented":false,"id":160,"linearizedBaseContracts":[160],"name":"IVersion","nameLocation":"159:8:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"174:418:5","text":" @notice Return arbitrary text representing the version of a contract.\n @dev For standard Balancer contracts, returns a JSON representation of the contract version containing name,\n version number and task ID. See real examples in the deployment repo; local tests just use plain text strings.\n @return version The version string corresponding to the current deployed contract"},"functionSelector":"54fd4d50","id":159,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"606:7:5","nodeType":"FunctionDefinition","parameters":{"id":155,"nodeType":"ParameterList","parameters":[],"src":"613:2:5"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":159,"src":"639:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":156,"name":"string","nodeType":"ElementaryTypeName","src":"639:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"638:15:5"},"scope":160,"src":"597:57:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":161,"src":"149:507:5","usedErrors":[],"usedEvents":[]}],"src":"46:611:5"},"id":5},"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","exportedSymbols":{"IERC20":[39274],"IWETH":[178]},"id":179,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":162,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"33:24:6"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":164,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":179,"sourceUnit":39275,"src":"59:72:6","symbolAliases":[{"foreign":{"id":163,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"68:6:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":166,"name":"IERC20","nameLocations":["306:6:6"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"306:6:6"},"id":167,"nodeType":"InheritanceSpecifier","src":"306:6:6"}],"canonicalName":"IWETH","contractDependencies":[],"contractKind":"interface","documentation":{"id":165,"nodeType":"StructuredDocumentation","src":"133:153:6","text":" @notice Interface for WETH9.\n See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol"},"fullyImplemented":false,"id":178,"linearizedBaseContracts":[178,39274],"name":"IWETH","nameLocation":"297:5:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":168,"nodeType":"StructuredDocumentation","src":"319:90:6","text":" @notice \"wrap\" native ETH to WETH.\n @dev The amount is msg.value."},"functionSelector":"d0e30db0","id":171,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"423:7:6","nodeType":"FunctionDefinition","parameters":{"id":169,"nodeType":"ParameterList","parameters":[],"src":"430:2:6"},"returnParameters":{"id":170,"nodeType":"ParameterList","parameters":[],"src":"449:0:6"},"scope":178,"src":"414:36:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"456:99:6","text":" @notice \"unwrap\" WETH to native ETH.\n @param amount The amount to withdraw"},"functionSelector":"2e1a7d4d","id":177,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"569:8:6","nodeType":"FunctionDefinition","parameters":{"id":175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"amount","nameLocation":"586:6:6","nodeType":"VariableDeclaration","scope":177,"src":"578:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":173,"name":"uint256","nodeType":"ElementaryTypeName","src":"578:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"577:16:6"},"returnParameters":{"id":176,"nodeType":"ParameterList","parameters":[],"src":"602:0:6"},"scope":178,"src":"560:43:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":179,"src":"287:318:6","usedErrors":[],"usedEvents":[39208,39217]}],"src":"33:573:6"},"id":6},"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol","exportedSymbols":{"IERC4626":[38998],"IVaultAdminMock":[303]},"id":304,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":180,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:7"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":182,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":304,"sourceUnit":38999,"src":"72:75:7","symbolAliases":[{"foreign":{"id":181,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultAdminMock","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":303,"linearizedBaseContracts":[303],"name":"IVaultAdminMock","nameLocation":"159:15:7","nodeType":"ContractDefinition","nodes":[{"functionSelector":"071d8a02","id":185,"implemented":false,"kind":"function","modifiers":[],"name":"manualPauseVault","nameLocation":"190:16:7","nodeType":"FunctionDefinition","parameters":{"id":183,"nodeType":"ParameterList","parameters":[],"src":"206:2:7"},"returnParameters":{"id":184,"nodeType":"ParameterList","parameters":[],"src":"217:0:7"},"scope":303,"src":"181:37:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cc671ff7","id":188,"implemented":false,"kind":"function","modifiers":[],"name":"manualUnpauseVault","nameLocation":"233:18:7","nodeType":"FunctionDefinition","parameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"251:2:7"},"returnParameters":{"id":187,"nodeType":"ParameterList","parameters":[],"src":"262:0:7"},"scope":303,"src":"224:39:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1558356e","id":193,"implemented":false,"kind":"function","modifiers":[],"name":"manualPausePool","nameLocation":"278:15:7","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":190,"mutability":"mutable","name":"pool","nameLocation":"302:4:7","nodeType":"VariableDeclaration","scope":193,"src":"294:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":189,"name":"address","nodeType":"ElementaryTypeName","src":"294:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"293:14:7"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"316:0:7"},"scope":303,"src":"269:48:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"52b9e33d","id":198,"implemented":false,"kind":"function","modifiers":[],"name":"manualUnpausePool","nameLocation":"332:17:7","nodeType":"FunctionDefinition","parameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":195,"mutability":"mutable","name":"pool","nameLocation":"358:4:7","nodeType":"VariableDeclaration","scope":198,"src":"350:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"350:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"349:14:7"},"returnParameters":{"id":197,"nodeType":"ParameterList","parameters":[],"src":"372:0:7"},"scope":303,"src":"323:50:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"27521d0c","id":203,"implemented":false,"kind":"function","modifiers":[],"name":"manualEnableRecoveryMode","nameLocation":"388:24:7","nodeType":"FunctionDefinition","parameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"pool","nameLocation":"421:4:7","nodeType":"VariableDeclaration","scope":203,"src":"413:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":199,"name":"address","nodeType":"ElementaryTypeName","src":"413:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"412:14:7"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"435:0:7"},"scope":303,"src":"379:57:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7578abb9","id":208,"implemented":false,"kind":"function","modifiers":[],"name":"manualDisableRecoveryMode","nameLocation":"451:25:7","nodeType":"FunctionDefinition","parameters":{"id":206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"pool","nameLocation":"485:4:7","nodeType":"VariableDeclaration","scope":208,"src":"477:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":204,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:14:7"},"returnParameters":{"id":207,"nodeType":"ParameterList","parameters":[],"src":"499:0:7"},"scope":303,"src":"442:58:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b61398cd","id":222,"implemented":false,"kind":"function","modifiers":[],"name":"manualReentrancyInitializeBuffer","nameLocation":"515:32:7","nodeType":"FunctionDefinition","parameters":{"id":220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":211,"mutability":"mutable","name":"wrappedToken","nameLocation":"566:12:7","nodeType":"VariableDeclaration","scope":222,"src":"557:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":210,"nodeType":"UserDefinedTypeName","pathNode":{"id":209,"name":"IERC4626","nameLocations":["557:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"557:8:7"},"referencedDeclaration":38998,"src":"557:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":213,"mutability":"mutable","name":"amountUnderlying","nameLocation":"596:16:7","nodeType":"VariableDeclaration","scope":222,"src":"588:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"588:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":215,"mutability":"mutable","name":"amountWrapped","nameLocation":"630:13:7","nodeType":"VariableDeclaration","scope":222,"src":"622:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":214,"name":"uint256","nodeType":"ElementaryTypeName","src":"622:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":217,"mutability":"mutable","name":"minIssuedShares","nameLocation":"661:15:7","nodeType":"VariableDeclaration","scope":222,"src":"653:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":216,"name":"uint256","nodeType":"ElementaryTypeName","src":"653:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":219,"mutability":"mutable","name":"sharesOwner","nameLocation":"694:11:7","nodeType":"VariableDeclaration","scope":222,"src":"686:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":218,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"547:164:7"},"returnParameters":{"id":221,"nodeType":"ParameterList","parameters":[],"src":"720:0:7"},"scope":303,"src":"506:215:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":223,"nodeType":"StructuredDocumentation","src":"727:77:7","text":"@dev Adds liquidity to buffer unbalanced, so it can unbalance the buffer."},"functionSelector":"1f568ea3","id":233,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityToBufferUnbalancedForTests","nameLocation":"818:38:7","nodeType":"FunctionDefinition","parameters":{"id":231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"wrappedToken","nameLocation":"875:12:7","nodeType":"VariableDeclaration","scope":233,"src":"866:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":225,"nodeType":"UserDefinedTypeName","pathNode":{"id":224,"name":"IERC4626","nameLocations":["866:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"866:8:7"},"referencedDeclaration":38998,"src":"866:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":228,"mutability":"mutable","name":"underlyingAmount","nameLocation":"905:16:7","nodeType":"VariableDeclaration","scope":233,"src":"897:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":227,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":230,"mutability":"mutable","name":"wrappedAmount","nameLocation":"939:13:7","nodeType":"VariableDeclaration","scope":233,"src":"931:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":229,"name":"uint256","nodeType":"ElementaryTypeName","src":"931:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"856:102:7"},"returnParameters":{"id":232,"nodeType":"ParameterList","parameters":[],"src":"967:0:7"},"scope":303,"src":"809:159:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9260d920","id":247,"implemented":false,"kind":"function","modifiers":[],"name":"manualReentrancyAddLiquidityToBuffer","nameLocation":"983:36:7","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"wrappedToken","nameLocation":"1038:12:7","nodeType":"VariableDeclaration","scope":247,"src":"1029:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":235,"nodeType":"UserDefinedTypeName","pathNode":{"id":234,"name":"IERC4626","nameLocations":["1029:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1029:8:7"},"referencedDeclaration":38998,"src":"1029:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":238,"mutability":"mutable","name":"maxAmountUnderlyingInRaw","nameLocation":"1068:24:7","nodeType":"VariableDeclaration","scope":247,"src":"1060:32:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":237,"name":"uint256","nodeType":"ElementaryTypeName","src":"1060:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":240,"mutability":"mutable","name":"maxAmountWrappedInRaw","nameLocation":"1110:21:7","nodeType":"VariableDeclaration","scope":247,"src":"1102:29:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":239,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":242,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"1149:18:7","nodeType":"VariableDeclaration","scope":247,"src":"1141:26:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":241,"name":"uint256","nodeType":"ElementaryTypeName","src":"1141:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":244,"mutability":"mutable","name":"sharesOwner","nameLocation":"1185:11:7","nodeType":"VariableDeclaration","scope":247,"src":"1177:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"1177:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1019:183:7"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[],"src":"1211:0:7"},"scope":303,"src":"974:238:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c7b3b3a9","id":261,"implemented":false,"kind":"function","modifiers":[],"name":"manualReentrancyRemoveLiquidityFromBufferHook","nameLocation":"1227:45:7","nodeType":"FunctionDefinition","parameters":{"id":259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":250,"mutability":"mutable","name":"wrappedToken","nameLocation":"1291:12:7","nodeType":"VariableDeclaration","scope":261,"src":"1282:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":249,"nodeType":"UserDefinedTypeName","pathNode":{"id":248,"name":"IERC4626","nameLocations":["1282:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1282:8:7"},"referencedDeclaration":38998,"src":"1282:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":252,"mutability":"mutable","name":"sharesToRemove","nameLocation":"1321:14:7","nodeType":"VariableDeclaration","scope":261,"src":"1313:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":251,"name":"uint256","nodeType":"ElementaryTypeName","src":"1313:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":254,"mutability":"mutable","name":"minAmountUnderlyingOut","nameLocation":"1353:22:7","nodeType":"VariableDeclaration","scope":261,"src":"1345:30:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":253,"name":"uint256","nodeType":"ElementaryTypeName","src":"1345:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":256,"mutability":"mutable","name":"minAmountWrappedOut","nameLocation":"1393:19:7","nodeType":"VariableDeclaration","scope":261,"src":"1385:27:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":255,"name":"uint256","nodeType":"ElementaryTypeName","src":"1385:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":258,"mutability":"mutable","name":"sharesOwner","nameLocation":"1430:11:7","nodeType":"VariableDeclaration","scope":261,"src":"1422:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":257,"name":"address","nodeType":"ElementaryTypeName","src":"1422:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1272:175:7"},"returnParameters":{"id":260,"nodeType":"ParameterList","parameters":[],"src":"1456:0:7"},"scope":303,"src":"1218:239:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"16df26cb","id":266,"implemented":false,"kind":"function","modifiers":[],"name":"manualReentrancyDisableRecoveryMode","nameLocation":"1472:35:7","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"pool","nameLocation":"1516:4:7","nodeType":"VariableDeclaration","scope":266,"src":"1508:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":262,"name":"address","nodeType":"ElementaryTypeName","src":"1508:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1507:14:7"},"returnParameters":{"id":265,"nodeType":"ParameterList","parameters":[],"src":"1530:0:7"},"scope":303,"src":"1463:68:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"88e5101a","id":271,"implemented":false,"kind":"function","modifiers":[],"name":"mockWithValidPercentage","nameLocation":"1546:23:7","nodeType":"FunctionDefinition","parameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"percentage","nameLocation":"1578:10:7","nodeType":"VariableDeclaration","scope":271,"src":"1570:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":267,"name":"uint256","nodeType":"ElementaryTypeName","src":"1570:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1569:20:7"},"returnParameters":{"id":270,"nodeType":"ParameterList","parameters":[],"src":"1603:0:7"},"scope":303,"src":"1537:67:7","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0b9df1f6","id":276,"implemented":false,"kind":"function","modifiers":[],"name":"mockEnsurePoolNotInRecoveryMode","nameLocation":"1619:31:7","nodeType":"FunctionDefinition","parameters":{"id":274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":273,"mutability":"mutable","name":"pool","nameLocation":"1659:4:7","nodeType":"VariableDeclaration","scope":276,"src":"1651:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":272,"name":"address","nodeType":"ElementaryTypeName","src":"1651:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1650:14:7"},"returnParameters":{"id":275,"nodeType":"ParameterList","parameters":[],"src":"1678:0:7"},"scope":303,"src":"1610:69:7","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6b230291","id":286,"implemented":false,"kind":"function","modifiers":[],"name":"manualMintBufferShares","nameLocation":"1694:22:7","nodeType":"FunctionDefinition","parameters":{"id":284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":279,"mutability":"mutable","name":"wrappedToken","nameLocation":"1726:12:7","nodeType":"VariableDeclaration","scope":286,"src":"1717:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":278,"nodeType":"UserDefinedTypeName","pathNode":{"id":277,"name":"IERC4626","nameLocations":["1717:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1717:8:7"},"referencedDeclaration":38998,"src":"1717:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":281,"mutability":"mutable","name":"to","nameLocation":"1748:2:7","nodeType":"VariableDeclaration","scope":286,"src":"1740:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":280,"name":"address","nodeType":"ElementaryTypeName","src":"1740:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":283,"mutability":"mutable","name":"amount","nameLocation":"1760:6:7","nodeType":"VariableDeclaration","scope":286,"src":"1752:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":282,"name":"uint256","nodeType":"ElementaryTypeName","src":"1752:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1716:51:7"},"returnParameters":{"id":285,"nodeType":"ParameterList","parameters":[],"src":"1776:0:7"},"scope":303,"src":"1685:92:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e8338894","id":296,"implemented":false,"kind":"function","modifiers":[],"name":"manualBurnBufferShares","nameLocation":"1792:22:7","nodeType":"FunctionDefinition","parameters":{"id":294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":289,"mutability":"mutable","name":"wrappedToken","nameLocation":"1824:12:7","nodeType":"VariableDeclaration","scope":296,"src":"1815:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":288,"nodeType":"UserDefinedTypeName","pathNode":{"id":287,"name":"IERC4626","nameLocations":["1815:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1815:8:7"},"referencedDeclaration":38998,"src":"1815:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":291,"mutability":"mutable","name":"from","nameLocation":"1846:4:7","nodeType":"VariableDeclaration","scope":296,"src":"1838:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":290,"name":"address","nodeType":"ElementaryTypeName","src":"1838:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":293,"mutability":"mutable","name":"amount","nameLocation":"1860:6:7","nodeType":"VariableDeclaration","scope":296,"src":"1852:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1814:53:7"},"returnParameters":{"id":295,"nodeType":"ParameterList","parameters":[],"src":"1876:0:7"},"scope":303,"src":"1783:94:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e99ac9a3","id":302,"implemented":false,"kind":"function","modifiers":[],"name":"manualMintMinimumBufferSupplyReserve","nameLocation":"1892:36:7","nodeType":"FunctionDefinition","parameters":{"id":300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":299,"mutability":"mutable","name":"wrappedToken","nameLocation":"1938:12:7","nodeType":"VariableDeclaration","scope":302,"src":"1929:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":298,"nodeType":"UserDefinedTypeName","pathNode":{"id":297,"name":"IERC4626","nameLocations":["1929:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1929:8:7"},"referencedDeclaration":38998,"src":"1929:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"1928:23:7"},"returnParameters":{"id":301,"nodeType":"ParameterList","parameters":[],"src":"1960:0:7"},"scope":303,"src":"1883:78:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":304,"src":"149:1814:7","usedErrors":[],"usedEvents":[]}],"src":"46:1918:7"},"id":7},"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol","exportedSymbols":{"IERC20":[39274],"IVaultExtensionMock":[360],"LiquidityManagement":[4362],"PoolRoleAccounts":[4459],"TokenConfig":[4476]},"id":361,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":305,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:8"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":307,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":361,"sourceUnit":39275,"src":"72:72:8","symbolAliases":[{"foreign":{"id":306,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"../../contracts/vault/VaultTypes.sol","id":311,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":361,"sourceUnit":4654,"src":"146:106:8","symbolAliases":[{"foreign":{"id":308,"name":"TokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4476,"src":"155:11:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":309,"name":"PoolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"168:16:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":310,"name":"LiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"186:19:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultExtensionMock","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":360,"linearizedBaseContracts":[360],"name":"IVaultExtensionMock","nameLocation":"264:19:8","nodeType":"ContractDefinition","nodes":[{"functionSelector":"70600089","id":318,"implemented":false,"kind":"function","modifiers":[],"name":"manuallySetSwapFee","nameLocation":"353:18:8","nodeType":"FunctionDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"pool","nameLocation":"380:4:8","nodeType":"VariableDeclaration","scope":318,"src":"372:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":312,"name":"address","nodeType":"ElementaryTypeName","src":"372:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"394:17:8","nodeType":"VariableDeclaration","scope":318,"src":"386:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":314,"name":"uint256","nodeType":"ElementaryTypeName","src":"386:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"371:41:8"},"returnParameters":{"id":317,"nodeType":"ParameterList","parameters":[],"src":"421:0:8"},"scope":360,"src":"344:78:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e68010c6","id":341,"implemented":false,"kind":"function","modifiers":[],"name":"manualRegisterPoolReentrancy","nameLocation":"437:28:8","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"mutability":"mutable","name":"pool","nameLocation":"483:4:8","nodeType":"VariableDeclaration","scope":341,"src":"475:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":319,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":324,"mutability":"mutable","name":"tokenConfig","nameLocation":"518:11:8","nodeType":"VariableDeclaration","scope":341,"src":"497:32:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":322,"nodeType":"UserDefinedTypeName","pathNode":{"id":321,"name":"TokenConfig","nameLocations":["497:11:8"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"497:11:8"},"referencedDeclaration":4476,"src":"497:11:8","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":323,"nodeType":"ArrayTypeName","src":"497:13:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":326,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"547:17:8","nodeType":"VariableDeclaration","scope":341,"src":"539:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":325,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":328,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"581:18:8","nodeType":"VariableDeclaration","scope":341,"src":"574:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":327,"name":"uint32","nodeType":"ElementaryTypeName","src":"574:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":330,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"614:17:8","nodeType":"VariableDeclaration","scope":341,"src":"609:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":329,"name":"bool","nodeType":"ElementaryTypeName","src":"609:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":333,"mutability":"mutable","name":"roleAccounts","nameLocation":"667:12:8","nodeType":"VariableDeclaration","scope":341,"src":"641:38:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":332,"nodeType":"UserDefinedTypeName","pathNode":{"id":331,"name":"PoolRoleAccounts","nameLocations":["641:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"641:16:8"},"referencedDeclaration":4459,"src":"641:16:8","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":335,"mutability":"mutable","name":"poolHooksContract","nameLocation":"697:17:8","nodeType":"VariableDeclaration","scope":341,"src":"689:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":334,"name":"address","nodeType":"ElementaryTypeName","src":"689:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"liquidityManagement","nameLocation":"753:19:8","nodeType":"VariableDeclaration","scope":341,"src":"724:48:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":337,"nodeType":"UserDefinedTypeName","pathNode":{"id":336,"name":"LiquidityManagement","nameLocations":["724:19:8"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"724:19:8"},"referencedDeclaration":4362,"src":"724:19:8","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"465:313:8"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"787:0:8"},"scope":360,"src":"428:360:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"809846d1","id":359,"implemented":false,"kind":"function","modifiers":[],"name":"manualInitializePoolReentrancy","nameLocation":"803:30:8","nodeType":"FunctionDefinition","parameters":{"id":357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"pool","nameLocation":"851:4:8","nodeType":"VariableDeclaration","scope":359,"src":"843:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":342,"name":"address","nodeType":"ElementaryTypeName","src":"843:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":345,"mutability":"mutable","name":"to","nameLocation":"873:2:8","nodeType":"VariableDeclaration","scope":359,"src":"865:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":344,"name":"address","nodeType":"ElementaryTypeName","src":"865:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":349,"mutability":"mutable","name":"tokens","nameLocation":"901:6:8","nodeType":"VariableDeclaration","scope":359,"src":"885:22:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":347,"nodeType":"UserDefinedTypeName","pathNode":{"id":346,"name":"IERC20","nameLocations":["885:6:8"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"885:6:8"},"referencedDeclaration":39274,"src":"885:6:8","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":348,"nodeType":"ArrayTypeName","src":"885:8:8","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":352,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"934:14:8","nodeType":"VariableDeclaration","scope":359,"src":"917:31:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":350,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":351,"nodeType":"ArrayTypeName","src":"917:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":354,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"966:15:8","nodeType":"VariableDeclaration","scope":359,"src":"958:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":353,"name":"uint256","nodeType":"ElementaryTypeName","src":"958:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":356,"mutability":"mutable","name":"userData","nameLocation":"1004:8:8","nodeType":"VariableDeclaration","scope":359,"src":"991:21:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":355,"name":"bytes","nodeType":"ElementaryTypeName","src":"991:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"833:185:8"},"returnParameters":{"id":358,"nodeType":"ParameterList","parameters":[],"src":"1027:0:8"},"scope":360,"src":"794:234:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":361,"src":"254:776:8","usedErrors":[],"usedEvents":[]}],"src":"46:985:8"},"id":8},"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC4626":[38998],"IRateProvider":[150],"IVaultMainMock":[1247],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":1248,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":362,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:9"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":38999,"src":"72:75:9","symbolAliases":[{"foreign":{"id":363,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":366,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":39275,"src":"148:72:9","symbolAliases":[{"foreign":{"id":365,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"157:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","file":"../solidity-utils/helpers/IRateProvider.sol","id":368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":151,"src":"222:76:9","symbolAliases":[{"foreign":{"id":367,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"231:13:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"../vault/VaultTypes.sol","id":369,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1248,"sourceUnit":4654,"src":"299:33:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultMainMock","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1247,"linearizedBaseContracts":[1247],"name":"IVaultMainMock","nameLocation":"344:14:9","nodeType":"ContractDefinition","nodes":[{"functionSelector":"87a76c59","id":374,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolFactoryMock","nameLocation":"374:18:9","nodeType":"FunctionDefinition","parameters":{"id":370,"nodeType":"ParameterList","parameters":[],"src":"392:2:9"},"returnParameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":372,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":374,"src":"418:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":371,"name":"address","nodeType":"ElementaryTypeName","src":"418:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"417:9:9"},"scope":1247,"src":"365:62:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1d27af68","id":383,"implemented":false,"kind":"function","modifiers":[],"name":"burnERC20","nameLocation":"442:9:9","nodeType":"FunctionDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"mutability":"mutable","name":"token","nameLocation":"460:5:9","nodeType":"VariableDeclaration","scope":383,"src":"452:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":375,"name":"address","nodeType":"ElementaryTypeName","src":"452:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":378,"mutability":"mutable","name":"from","nameLocation":"475:4:9","nodeType":"VariableDeclaration","scope":383,"src":"467:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":377,"name":"address","nodeType":"ElementaryTypeName","src":"467:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":380,"mutability":"mutable","name":"amount","nameLocation":"489:6:9","nodeType":"VariableDeclaration","scope":383,"src":"481:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":379,"name":"uint256","nodeType":"ElementaryTypeName","src":"481:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"451:45:9"},"returnParameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"505:0:9"},"scope":1247,"src":"433:73:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"47c07e88","id":392,"implemented":false,"kind":"function","modifiers":[],"name":"mintERC20","nameLocation":"521:9:9","nodeType":"FunctionDefinition","parameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"mutability":"mutable","name":"token","nameLocation":"539:5:9","nodeType":"VariableDeclaration","scope":392,"src":"531:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":384,"name":"address","nodeType":"ElementaryTypeName","src":"531:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":387,"mutability":"mutable","name":"to","nameLocation":"554:2:9","nodeType":"VariableDeclaration","scope":392,"src":"546:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"546:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":389,"mutability":"mutable","name":"amount","nameLocation":"566:6:9","nodeType":"VariableDeclaration","scope":392,"src":"558:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":388,"name":"uint256","nodeType":"ElementaryTypeName","src":"558:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"530:43:9"},"returnParameters":{"id":391,"nodeType":"ParameterList","parameters":[],"src":"582:0:9"},"scope":1247,"src":"512:71:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"851c65a3","id":401,"implemented":false,"kind":"function","modifiers":[],"name":"manualRegisterPool","nameLocation":"598:18:9","nodeType":"FunctionDefinition","parameters":{"id":399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":394,"mutability":"mutable","name":"pool","nameLocation":"625:4:9","nodeType":"VariableDeclaration","scope":401,"src":"617:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":393,"name":"address","nodeType":"ElementaryTypeName","src":"617:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":398,"mutability":"mutable","name":"tokens","nameLocation":"647:6:9","nodeType":"VariableDeclaration","scope":401,"src":"631:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":396,"nodeType":"UserDefinedTypeName","pathNode":{"id":395,"name":"IERC20","nameLocations":["631:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"631:6:9"},"referencedDeclaration":39274,"src":"631:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":397,"nodeType":"ArrayTypeName","src":"631:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"616:38:9"},"returnParameters":{"id":400,"nodeType":"ParameterList","parameters":[],"src":"663:0:9"},"scope":1247,"src":"589:75:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1f495f79","id":412,"implemented":false,"kind":"function","modifiers":[],"name":"manualRegisterPoolWithSwapFee","nameLocation":"679:29:9","nodeType":"FunctionDefinition","parameters":{"id":410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":403,"mutability":"mutable","name":"pool","nameLocation":"717:4:9","nodeType":"VariableDeclaration","scope":412,"src":"709:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":402,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":407,"mutability":"mutable","name":"tokens","nameLocation":"739:6:9","nodeType":"VariableDeclaration","scope":412,"src":"723:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":405,"nodeType":"UserDefinedTypeName","pathNode":{"id":404,"name":"IERC20","nameLocations":["723:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"723:6:9"},"referencedDeclaration":39274,"src":"723:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":406,"nodeType":"ArrayTypeName","src":"723:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":409,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"755:17:9","nodeType":"VariableDeclaration","scope":412,"src":"747:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":408,"name":"uint256","nodeType":"ElementaryTypeName","src":"747:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"708:65:9"},"returnParameters":{"id":411,"nodeType":"ParameterList","parameters":[],"src":"782:0:9"},"scope":1247,"src":"670:113:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"32333ce6","id":421,"implemented":false,"kind":"function","modifiers":[],"name":"manualRegisterPoolPassThruTokens","nameLocation":"798:32:9","nodeType":"FunctionDefinition","parameters":{"id":419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":414,"mutability":"mutable","name":"pool","nameLocation":"839:4:9","nodeType":"VariableDeclaration","scope":421,"src":"831:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":413,"name":"address","nodeType":"ElementaryTypeName","src":"831:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":418,"mutability":"mutable","name":"tokens","nameLocation":"861:6:9","nodeType":"VariableDeclaration","scope":421,"src":"845:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":416,"nodeType":"UserDefinedTypeName","pathNode":{"id":415,"name":"IERC20","nameLocations":["845:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"845:6:9"},"referencedDeclaration":39274,"src":"845:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":417,"nodeType":"ArrayTypeName","src":"845:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"830:38:9"},"returnParameters":{"id":420,"nodeType":"ParameterList","parameters":[],"src":"877:0:9"},"scope":1247,"src":"789:89:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0362a513","id":435,"implemented":false,"kind":"function","modifiers":[],"name":"manualRegisterPoolAtTimestamp","nameLocation":"893:29:9","nodeType":"FunctionDefinition","parameters":{"id":433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":423,"mutability":"mutable","name":"pool","nameLocation":"940:4:9","nodeType":"VariableDeclaration","scope":435,"src":"932:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":422,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":427,"mutability":"mutable","name":"tokens","nameLocation":"970:6:9","nodeType":"VariableDeclaration","scope":435,"src":"954:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":425,"nodeType":"UserDefinedTypeName","pathNode":{"id":424,"name":"IERC20","nameLocations":["954:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"954:6:9"},"referencedDeclaration":39274,"src":"954:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":426,"nodeType":"ArrayTypeName","src":"954:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"timestamp","nameLocation":"993:9:9","nodeType":"VariableDeclaration","scope":435,"src":"986:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":428,"name":"uint32","nodeType":"ElementaryTypeName","src":"986:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":432,"mutability":"mutable","name":"roleAccounts","nameLocation":"1036:12:9","nodeType":"VariableDeclaration","scope":435,"src":"1012:36:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":431,"nodeType":"UserDefinedTypeName","pathNode":{"id":430,"name":"PoolRoleAccounts","nameLocations":["1012:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"1012:16:9"},"referencedDeclaration":4459,"src":"1012:16:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"src":"922:132:9"},"returnParameters":{"id":434,"nodeType":"ParameterList","parameters":[],"src":"1063:0:9"},"scope":1247,"src":"884:180:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"352339ee","id":442,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolRegistered","nameLocation":"1079:23:9","nodeType":"FunctionDefinition","parameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":437,"mutability":"mutable","name":"pool","nameLocation":"1111:4:9","nodeType":"VariableDeclaration","scope":442,"src":"1103:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":436,"name":"address","nodeType":"ElementaryTypeName","src":"1103:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":439,"mutability":"mutable","name":"status","nameLocation":"1122:6:9","nodeType":"VariableDeclaration","scope":442,"src":"1117:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":438,"name":"bool","nodeType":"ElementaryTypeName","src":"1117:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1102:27:9"},"returnParameters":{"id":441,"nodeType":"ParameterList","parameters":[],"src":"1138:0:9"},"scope":1247,"src":"1070:69:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5e3e00fa","id":449,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetInitializedPool","nameLocation":"1154:24:9","nodeType":"FunctionDefinition","parameters":{"id":447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":444,"mutability":"mutable","name":"pool","nameLocation":"1187:4:9","nodeType":"VariableDeclaration","scope":449,"src":"1179:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":443,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":446,"mutability":"mutable","name":"isPoolInitialized","nameLocation":"1198:17:9","nodeType":"VariableDeclaration","scope":449,"src":"1193:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":445,"name":"bool","nodeType":"ElementaryTypeName","src":"1193:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1178:38:9"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[],"src":"1225:0:9"},"scope":1247,"src":"1145:81:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cbde2b68","id":456,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolPaused","nameLocation":"1241:19:9","nodeType":"FunctionDefinition","parameters":{"id":454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":456,"src":"1261:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":450,"name":"address","nodeType":"ElementaryTypeName","src":"1261:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":456,"src":"1270:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":452,"name":"bool","nodeType":"ElementaryTypeName","src":"1270:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1260:15:9"},"returnParameters":{"id":455,"nodeType":"ParameterList","parameters":[],"src":"1284:0:9"},"scope":1247,"src":"1232:53:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0c87409b","id":463,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolPauseWindowEndTime","nameLocation":"1300:31:9","nodeType":"FunctionDefinition","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":463,"src":"1332:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":457,"name":"address","nodeType":"ElementaryTypeName","src":"1332:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":463,"src":"1341:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":459,"name":"uint32","nodeType":"ElementaryTypeName","src":"1341:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1331:17:9"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[],"src":"1357:0:9"},"scope":1247,"src":"1291:67:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"692407ae","id":468,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetVaultPaused","nameLocation":"1373:20:9","nodeType":"FunctionDefinition","parameters":{"id":466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":465,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":468,"src":"1394:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":464,"name":"bool","nodeType":"ElementaryTypeName","src":"1394:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1393:6:9"},"returnParameters":{"id":467,"nodeType":"ParameterList","parameters":[],"src":"1408:0:9"},"scope":1247,"src":"1364:45:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"10c1dc41","id":475,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetVaultState","nameLocation":"1424:19:9","nodeType":"FunctionDefinition","parameters":{"id":473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":475,"src":"1444:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":469,"name":"bool","nodeType":"ElementaryTypeName","src":"1444:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":475,"src":"1450:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":471,"name":"bool","nodeType":"ElementaryTypeName","src":"1450:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1443:12:9"},"returnParameters":{"id":474,"nodeType":"ParameterList","parameters":[],"src":"1464:0:9"},"scope":1247,"src":"1415:50:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"dab50579","id":484,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolTokenInfo","nameLocation":"1480:22:9","nodeType":"FunctionDefinition","parameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":484,"src":"1503:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":476,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":484,"src":"1512:20:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":479,"nodeType":"UserDefinedTypeName","pathNode":{"id":478,"name":"TokenConfig","nameLocations":["1512:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"1512:11:9"},"referencedDeclaration":4476,"src":"1512:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":480,"nodeType":"ArrayTypeName","src":"1512:13:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"1502:31:9"},"returnParameters":{"id":483,"nodeType":"ParameterList","parameters":[],"src":"1542:0:9"},"scope":1247,"src":"1471:72:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bb14e466","id":497,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolTokenInfo","nameLocation":"1558:22:9","nodeType":"FunctionDefinition","parameters":{"id":495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":497,"src":"1581:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":485,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":490,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":497,"src":"1590:15:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":488,"nodeType":"UserDefinedTypeName","pathNode":{"id":487,"name":"IERC20","nameLocations":["1590:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1590:6:9"},"referencedDeclaration":39274,"src":"1590:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":489,"nodeType":"ArrayTypeName","src":"1590:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":494,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":497,"src":"1607:18:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo[]"},"typeName":{"baseType":{"id":492,"nodeType":"UserDefinedTypeName","pathNode":{"id":491,"name":"TokenInfo","nameLocations":["1607:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"1607:9:9"},"referencedDeclaration":4486,"src":"1607:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":493,"nodeType":"ArrayTypeName","src":"1607:11:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}},"visibility":"internal"}],"src":"1580:46:9"},"returnParameters":{"id":496,"nodeType":"ParameterList","parameters":[],"src":"1635:0:9"},"scope":1247,"src":"1549:87:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5c1c1c81","id":505,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolConfig","nameLocation":"1651:19:9","nodeType":"FunctionDefinition","parameters":{"id":503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":499,"mutability":"mutable","name":"pool","nameLocation":"1679:4:9","nodeType":"VariableDeclaration","scope":505,"src":"1671:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":498,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":502,"mutability":"mutable","name":"config","nameLocation":"1703:6:9","nodeType":"VariableDeclaration","scope":505,"src":"1685:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig"},"typeName":{"id":501,"nodeType":"UserDefinedTypeName","pathNode":{"id":500,"name":"PoolConfig","nameLocations":["1685:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"1685:10:9"},"referencedDeclaration":4387,"src":"1685:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_storage_ptr","typeString":"struct PoolConfig"}},"visibility":"internal"}],"src":"1670:40:9"},"returnParameters":{"id":504,"nodeType":"ParameterList","parameters":[],"src":"1719:0:9"},"scope":1247,"src":"1642:78:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c1fdcd62","id":513,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetHooksConfig","nameLocation":"1735:20:9","nodeType":"FunctionDefinition","parameters":{"id":511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"mutability":"mutable","name":"pool","nameLocation":"1764:4:9","nodeType":"VariableDeclaration","scope":513,"src":"1756:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"1756:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":510,"mutability":"mutable","name":"config","nameLocation":"1789:6:9","nodeType":"VariableDeclaration","scope":513,"src":"1770:25:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig"},"typeName":{"id":509,"nodeType":"UserDefinedTypeName","pathNode":{"id":508,"name":"HooksConfig","nameLocations":["1770:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4433,"src":"1770:11:9"},"referencedDeclaration":4433,"src":"1770:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_storage_ptr","typeString":"struct HooksConfig"}},"visibility":"internal"}],"src":"1755:41:9"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[],"src":"1805:0:9"},"scope":1247,"src":"1726:80:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"195aaef9","id":520,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetStaticSwapFeePercentage","nameLocation":"1821:32:9","nodeType":"FunctionDefinition","parameters":{"id":518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":515,"mutability":"mutable","name":"pool","nameLocation":"1862:4:9","nodeType":"VariableDeclaration","scope":520,"src":"1854:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":514,"name":"address","nodeType":"ElementaryTypeName","src":"1854:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":517,"mutability":"mutable","name":"value","nameLocation":"1876:5:9","nodeType":"VariableDeclaration","scope":520,"src":"1868:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1868:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1853:29:9"},"returnParameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"1891:0:9"},"scope":1247,"src":"1812:80:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":521,"nodeType":"StructuredDocumentation","src":"1898:91:9","text":"@dev Does not check the value against any min/max limits normally enforced by the pool."},"functionSelector":"2b766278","id":528,"implemented":false,"kind":"function","modifiers":[],"name":"manualUnsafeSetStaticSwapFeePercentage","nameLocation":"2003:38:9","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":523,"mutability":"mutable","name":"pool","nameLocation":"2050:4:9","nodeType":"VariableDeclaration","scope":528,"src":"2042:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"2042:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"value","nameLocation":"2064:5:9","nodeType":"VariableDeclaration","scope":528,"src":"2056:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":524,"name":"uint256","nodeType":"ElementaryTypeName","src":"2056:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2041:29:9"},"returnParameters":{"id":527,"nodeType":"ParameterList","parameters":[],"src":"2079:0:9"},"scope":1247,"src":"1994:86:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82ea1749","id":537,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolTokens","nameLocation":"2095:19:9","nodeType":"FunctionDefinition","parameters":{"id":535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":530,"mutability":"mutable","name":"pool","nameLocation":"2123:4:9","nodeType":"VariableDeclaration","scope":537,"src":"2115:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":529,"name":"address","nodeType":"ElementaryTypeName","src":"2115:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":534,"mutability":"mutable","name":"tokens","nameLocation":"2145:6:9","nodeType":"VariableDeclaration","scope":537,"src":"2129:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":532,"nodeType":"UserDefinedTypeName","pathNode":{"id":531,"name":"IERC20","nameLocations":["2129:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2129:6:9"},"referencedDeclaration":39274,"src":"2129:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":533,"nodeType":"ArrayTypeName","src":"2129:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"2114:38:9"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"2161:0:9"},"scope":1247,"src":"2086:76:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d8f4cf3c","id":552,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolTokensAndBalances","nameLocation":"2177:30:9","nodeType":"FunctionDefinition","parameters":{"id":550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":552,"src":"2208:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":538,"name":"address","nodeType":"ElementaryTypeName","src":"2208:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":552,"src":"2217:15:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":541,"nodeType":"UserDefinedTypeName","pathNode":{"id":540,"name":"IERC20","nameLocations":["2217:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2217:6:9"},"referencedDeclaration":39274,"src":"2217:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":542,"nodeType":"ArrayTypeName","src":"2217:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":552,"src":"2234:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":544,"name":"uint256","nodeType":"ElementaryTypeName","src":"2234:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":545,"nodeType":"ArrayTypeName","src":"2234:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":552,"src":"2252:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":547,"name":"uint256","nodeType":"ElementaryTypeName","src":"2252:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":548,"nodeType":"ArrayTypeName","src":"2252:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2207:62:9"},"returnParameters":{"id":551,"nodeType":"ParameterList","parameters":[],"src":"2278:0:9"},"scope":1247,"src":"2168:111:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1c4e1e23","id":563,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolBalances","nameLocation":"2294:21:9","nodeType":"FunctionDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":554,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":563,"src":"2316:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":553,"name":"address","nodeType":"ElementaryTypeName","src":"2316:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":563,"src":"2325:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":555,"name":"uint256","nodeType":"ElementaryTypeName","src":"2325:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":556,"nodeType":"ArrayTypeName","src":"2325:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":563,"src":"2343:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":558,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":559,"nodeType":"ArrayTypeName","src":"2343:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2315:45:9"},"returnParameters":{"id":562,"nodeType":"ParameterList","parameters":[],"src":"2369:0:9"},"scope":1247,"src":"2285:85:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"df138458","id":571,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolConfigBits","nameLocation":"2385:23:9","nodeType":"FunctionDefinition","parameters":{"id":569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":565,"mutability":"mutable","name":"pool","nameLocation":"2417:4:9","nodeType":"VariableDeclaration","scope":571,"src":"2409:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":564,"name":"address","nodeType":"ElementaryTypeName","src":"2409:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":568,"mutability":"mutable","name":"config","nameLocation":"2438:6:9","nodeType":"VariableDeclaration","scope":571,"src":"2423:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":567,"nodeType":"UserDefinedTypeName","pathNode":{"id":566,"name":"PoolConfigBits","nameLocations":["2423:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2423:14:9"},"referencedDeclaration":4364,"src":"2423:14:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2408:37:9"},"returnParameters":{"id":570,"nodeType":"ParameterList","parameters":[],"src":"2454:0:9"},"scope":1247,"src":"2376:79:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b8caceee","id":574,"implemented":false,"kind":"function","modifiers":[],"name":"mockIsUnlocked","nameLocation":"2470:14:9","nodeType":"FunctionDefinition","parameters":{"id":572,"nodeType":"ParameterList","parameters":[],"src":"2484:2:9"},"returnParameters":{"id":573,"nodeType":"ParameterList","parameters":[],"src":"2500:0:9"},"scope":1247,"src":"2461:40:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"62691e5f","id":579,"implemented":false,"kind":"function","modifiers":[],"name":"mockWithInitializedPool","nameLocation":"2516:23:9","nodeType":"FunctionDefinition","parameters":{"id":577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":576,"mutability":"mutable","name":"pool","nameLocation":"2548:4:9","nodeType":"VariableDeclaration","scope":579,"src":"2540:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":575,"name":"address","nodeType":"ElementaryTypeName","src":"2540:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2539:14:9"},"returnParameters":{"id":578,"nodeType":"ParameterList","parameters":[],"src":"2567:0:9"},"scope":1247,"src":"2507:61:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"02e1a4aa","id":584,"implemented":false,"kind":"function","modifiers":[],"name":"ensurePoolNotPaused","nameLocation":"2583:19:9","nodeType":"FunctionDefinition","parameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":584,"src":"2603:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"2603:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2602:9:9"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[],"src":"2625:0:9"},"scope":1247,"src":"2574:52:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e460a8a9","id":592,"implemented":false,"kind":"function","modifiers":[],"name":"ensureUnpausedAndGetVaultState","nameLocation":"2641:30:9","nodeType":"FunctionDefinition","parameters":{"id":587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":592,"src":"2672:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":585,"name":"address","nodeType":"ElementaryTypeName","src":"2672:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2671:9:9"},"returnParameters":{"id":591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":592,"src":"2704:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_memory_ptr","typeString":"struct VaultState"},"typeName":{"id":589,"nodeType":"UserDefinedTypeName","pathNode":{"id":588,"name":"VaultState","nameLocations":["2704:10:9"],"nodeType":"IdentifierPath","referencedDeclaration":4451,"src":"2704:10:9"},"referencedDeclaration":4451,"src":"2704:10:9","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_storage_ptr","typeString":"struct VaultState"}},"visibility":"internal"}],"src":"2703:19:9"},"scope":1247,"src":"2632:91:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2606a4de","id":600,"implemented":false,"kind":"function","modifiers":[],"name":"internalGetBufferUnderlyingImbalance","nameLocation":"2738:36:9","nodeType":"FunctionDefinition","parameters":{"id":596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":595,"mutability":"mutable","name":"wrappedToken","nameLocation":"2784:12:9","nodeType":"VariableDeclaration","scope":600,"src":"2775:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":594,"nodeType":"UserDefinedTypeName","pathNode":{"id":593,"name":"IERC4626","nameLocations":["2775:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"2775:8:9"},"referencedDeclaration":38998,"src":"2775:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"2774:23:9"},"returnParameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":600,"src":"2821:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":597,"name":"int256","nodeType":"ElementaryTypeName","src":"2821:6:9","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2820:8:9"},"scope":1247,"src":"2729:100:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a40f9592","id":608,"implemented":false,"kind":"function","modifiers":[],"name":"internalGetBufferWrappedImbalance","nameLocation":"2844:33:9","nodeType":"FunctionDefinition","parameters":{"id":604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":603,"mutability":"mutable","name":"wrappedToken","nameLocation":"2887:12:9","nodeType":"VariableDeclaration","scope":608,"src":"2878:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":602,"nodeType":"UserDefinedTypeName","pathNode":{"id":601,"name":"IERC4626","nameLocations":["2878:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"2878:8:9"},"referencedDeclaration":38998,"src":"2878:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"2877:23:9"},"returnParameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":608,"src":"2924:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":605,"name":"int256","nodeType":"ElementaryTypeName","src":"2924:6:9","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2923:8:9"},"scope":1247,"src":"2835:97:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e5b08ffb","id":616,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferTokenBalancesBytes","nameLocation":"2947:27:9","nodeType":"FunctionDefinition","parameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"wrappedToken","nameLocation":"2984:12:9","nodeType":"VariableDeclaration","scope":616,"src":"2975:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":610,"nodeType":"UserDefinedTypeName","pathNode":{"id":609,"name":"IERC4626","nameLocations":["2975:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"2975:8:9"},"referencedDeclaration":38998,"src":"2975:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"2974:23:9"},"returnParameters":{"id":615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":616,"src":"3021:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3021:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3020:9:9"},"scope":1247,"src":"2938:92:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"87a530f8","id":621,"implemented":false,"kind":"function","modifiers":[],"name":"recoveryModeExit","nameLocation":"3045:16:9","nodeType":"FunctionDefinition","parameters":{"id":619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"pool","nameLocation":"3070:4:9","nodeType":"VariableDeclaration","scope":621,"src":"3062:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":617,"name":"address","nodeType":"ElementaryTypeName","src":"3062:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3061:14:9"},"returnParameters":{"id":620,"nodeType":"ParameterList","parameters":[],"src":"3089:0:9"},"scope":1247,"src":"3036:54:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f682ba0","id":632,"implemented":false,"kind":"function","modifiers":[],"name":"loadPoolDataUpdatingBalancesAndYieldFees","nameLocation":"3105:40:9","nodeType":"FunctionDefinition","parameters":{"id":627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":623,"mutability":"mutable","name":"pool","nameLocation":"3163:4:9","nodeType":"VariableDeclaration","scope":632,"src":"3155:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":622,"name":"address","nodeType":"ElementaryTypeName","src":"3155:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":626,"mutability":"mutable","name":"roundingDirection","nameLocation":"3186:17:9","nodeType":"VariableDeclaration","scope":632,"src":"3177:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":625,"nodeType":"UserDefinedTypeName","pathNode":{"id":624,"name":"Rounding","nameLocations":["3177:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"3177:8:9"},"referencedDeclaration":4514,"src":"3177:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"3145:64:9"},"returnParameters":{"id":631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":632,"src":"3228:15:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":629,"nodeType":"UserDefinedTypeName","pathNode":{"id":628,"name":"PoolData","nameLocations":["3228:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3228:8:9"},"referencedDeclaration":4511,"src":"3228:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"3227:17:9"},"scope":1247,"src":"3096:149:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"dc4402ed","id":643,"implemented":false,"kind":"function","modifiers":[],"name":"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy","nameLocation":"3260:50:9","nodeType":"FunctionDefinition","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":634,"mutability":"mutable","name":"pool","nameLocation":"3328:4:9","nodeType":"VariableDeclaration","scope":643,"src":"3320:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":633,"name":"address","nodeType":"ElementaryTypeName","src":"3320:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"roundingDirection","nameLocation":"3351:17:9","nodeType":"VariableDeclaration","scope":643,"src":"3342:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":636,"nodeType":"UserDefinedTypeName","pathNode":{"id":635,"name":"Rounding","nameLocations":["3342:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"3342:8:9"},"referencedDeclaration":4514,"src":"3342:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"3310:64:9"},"returnParameters":{"id":642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":643,"src":"3393:15:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":640,"nodeType":"UserDefinedTypeName","pathNode":{"id":639,"name":"PoolData","nameLocations":["3393:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3393:8:9"},"referencedDeclaration":4511,"src":"3393:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"3392:17:9"},"scope":1247,"src":"3251:159:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0f619655","id":651,"implemented":false,"kind":"function","modifiers":[],"name":"manualWritePoolBalancesToStorage","nameLocation":"3425:32:9","nodeType":"FunctionDefinition","parameters":{"id":649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":645,"mutability":"mutable","name":"pool","nameLocation":"3466:4:9","nodeType":"VariableDeclaration","scope":651,"src":"3458:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":644,"name":"address","nodeType":"ElementaryTypeName","src":"3458:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":648,"mutability":"mutable","name":"poolData","nameLocation":"3488:8:9","nodeType":"VariableDeclaration","scope":651,"src":"3472:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":647,"nodeType":"UserDefinedTypeName","pathNode":{"id":646,"name":"PoolData","nameLocations":["3472:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3472:8:9"},"referencedDeclaration":4511,"src":"3472:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"3457:40:9"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[],"src":"3506:0:9"},"scope":1247,"src":"3416:91:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"19a24bcb","id":659,"implemented":false,"kind":"function","modifiers":[],"name":"getRawBalances","nameLocation":"3522:14:9","nodeType":"FunctionDefinition","parameters":{"id":654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":653,"mutability":"mutable","name":"pool","nameLocation":"3545:4:9","nodeType":"VariableDeclaration","scope":659,"src":"3537:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"3537:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3536:14:9"},"returnParameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":657,"mutability":"mutable","name":"balancesRaw","nameLocation":"3591:11:9","nodeType":"VariableDeclaration","scope":659,"src":"3574:28:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":655,"name":"uint256","nodeType":"ElementaryTypeName","src":"3574:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":656,"nodeType":"ArrayTypeName","src":"3574:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3573:30:9"},"scope":1247,"src":"3513:91:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3cce2585","id":667,"implemented":false,"kind":"function","modifiers":[],"name":"getLastLiveBalances","nameLocation":"3619:19:9","nodeType":"FunctionDefinition","parameters":{"id":662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":661,"mutability":"mutable","name":"pool","nameLocation":"3647:4:9","nodeType":"VariableDeclaration","scope":667,"src":"3639:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":660,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3638:14:9"},"returnParameters":{"id":666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":665,"mutability":"mutable","name":"lastBalancesLiveScaled18","nameLocation":"3693:24:9","nodeType":"VariableDeclaration","scope":667,"src":"3676:41:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":663,"name":"uint256","nodeType":"ElementaryTypeName","src":"3676:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":664,"nodeType":"ArrayTypeName","src":"3676:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3675:43:9"},"scope":1247,"src":"3610:109:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aa01edb3","id":683,"implemented":false,"kind":"function","modifiers":[],"name":"updateLiveTokenBalanceInPoolData","nameLocation":"3734:32:9","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"poolData","nameLocation":"3792:8:9","nodeType":"VariableDeclaration","scope":683,"src":"3776:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":669,"nodeType":"UserDefinedTypeName","pathNode":{"id":668,"name":"PoolData","nameLocations":["3776:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3776:8:9"},"referencedDeclaration":4511,"src":"3776:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":672,"mutability":"mutable","name":"newRawBalance","nameLocation":"3818:13:9","nodeType":"VariableDeclaration","scope":683,"src":"3810:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":671,"name":"uint256","nodeType":"ElementaryTypeName","src":"3810:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":675,"mutability":"mutable","name":"roundingDirection","nameLocation":"3850:17:9","nodeType":"VariableDeclaration","scope":683,"src":"3841:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":674,"nodeType":"UserDefinedTypeName","pathNode":{"id":673,"name":"Rounding","nameLocations":["3841:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"3841:8:9"},"referencedDeclaration":4514,"src":"3841:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"},{"constant":false,"id":677,"mutability":"mutable","name":"tokenIndex","nameLocation":"3885:10:9","nodeType":"VariableDeclaration","scope":683,"src":"3877:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":676,"name":"uint256","nodeType":"ElementaryTypeName","src":"3877:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3766:135:9"},"returnParameters":{"id":682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":683,"src":"3925:15:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":680,"nodeType":"UserDefinedTypeName","pathNode":{"id":679,"name":"PoolData","nameLocations":["3925:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3925:8:9"},"referencedDeclaration":4511,"src":"3925:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"3924:17:9"},"scope":1247,"src":"3725:217:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"08bade29","id":697,"implemented":false,"kind":"function","modifiers":[],"name":"computeYieldFeesDue","nameLocation":"3957:19:9","nodeType":"FunctionDefinition","parameters":{"id":693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":686,"mutability":"mutable","name":"poolData","nameLocation":"4002:8:9","nodeType":"VariableDeclaration","scope":697,"src":"3986:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":685,"nodeType":"UserDefinedTypeName","pathNode":{"id":684,"name":"PoolData","nameLocations":["3986:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3986:8:9"},"referencedDeclaration":4511,"src":"3986:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":688,"mutability":"mutable","name":"lastLiveBalance","nameLocation":"4028:15:9","nodeType":"VariableDeclaration","scope":697,"src":"4020:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"4020:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":690,"mutability":"mutable","name":"tokenIndex","nameLocation":"4061:10:9","nodeType":"VariableDeclaration","scope":697,"src":"4053:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":689,"name":"uint256","nodeType":"ElementaryTypeName","src":"4053:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":692,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"4089:27:9","nodeType":"VariableDeclaration","scope":697,"src":"4081:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":691,"name":"uint256","nodeType":"ElementaryTypeName","src":"4081:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3976:146:9"},"returnParameters":{"id":696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":695,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":697,"src":"4146:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":694,"name":"uint256","nodeType":"ElementaryTypeName","src":"4146:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4145:9:9"},"scope":1247,"src":"3948:207:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"a408f312","id":700,"implemented":false,"kind":"function","modifiers":[],"name":"guardedCheckEntered","nameLocation":"4170:19:9","nodeType":"FunctionDefinition","parameters":{"id":698,"nodeType":"ParameterList","parameters":[],"src":"4189:2:9"},"returnParameters":{"id":699,"nodeType":"ParameterList","parameters":[],"src":"4200:0:9"},"scope":1247,"src":"4161:40:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cecc95a7","id":703,"implemented":false,"kind":"function","modifiers":[],"name":"unguardedCheckNotEntered","nameLocation":"4216:24:9","nodeType":"FunctionDefinition","parameters":{"id":701,"nodeType":"ParameterList","parameters":[],"src":"4240:2:9"},"returnParameters":{"id":702,"nodeType":"ParameterList","parameters":[],"src":"4256:0:9"},"scope":1247,"src":"4207:50:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"24e7176b","id":714,"implemented":false,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"4338:16:9","nodeType":"FunctionDefinition","parameters":{"id":708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":707,"mutability":"mutable","name":"tokens","nameLocation":"4371:6:9","nodeType":"VariableDeclaration","scope":714,"src":"4355:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":705,"nodeType":"UserDefinedTypeName","pathNode":{"id":704,"name":"IERC20","nameLocations":["4355:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4355:6:9"},"referencedDeclaration":39274,"src":"4355:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":706,"nodeType":"ArrayTypeName","src":"4355:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"4354:24:9"},"returnParameters":{"id":713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":712,"mutability":"mutable","name":"tokenConfig","nameLocation":"4423:11:9","nodeType":"VariableDeclaration","scope":714,"src":"4402:32:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":710,"nodeType":"UserDefinedTypeName","pathNode":{"id":709,"name":"TokenConfig","nameLocations":["4402:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"4402:11:9"},"referencedDeclaration":4476,"src":"4402:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":711,"nodeType":"ArrayTypeName","src":"4402:13:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"4401:34:9"},"scope":1247,"src":"4329:107:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":715,"nodeType":"StructuredDocumentation","src":"4442:100:9","text":"@dev Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider."},"functionSelector":"5f70f542","id":730,"implemented":false,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"4556:16:9","nodeType":"FunctionDefinition","parameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"tokens","nameLocation":"4598:6:9","nodeType":"VariableDeclaration","scope":730,"src":"4582:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":717,"nodeType":"UserDefinedTypeName","pathNode":{"id":716,"name":"IERC20","nameLocations":["4582:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4582:6:9"},"referencedDeclaration":39274,"src":"4582:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":718,"nodeType":"ArrayTypeName","src":"4582:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":723,"mutability":"mutable","name":"rateProviders","nameLocation":"4637:13:9","nodeType":"VariableDeclaration","scope":730,"src":"4614:36:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":721,"nodeType":"UserDefinedTypeName","pathNode":{"id":720,"name":"IRateProvider","nameLocations":["4614:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"4614:13:9"},"referencedDeclaration":150,"src":"4614:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":722,"nodeType":"ArrayTypeName","src":"4614:15:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"4572:84:9"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":728,"mutability":"mutable","name":"tokenConfig","nameLocation":"4701:11:9","nodeType":"VariableDeclaration","scope":730,"src":"4680:32:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":726,"nodeType":"UserDefinedTypeName","pathNode":{"id":725,"name":"TokenConfig","nameLocations":["4680:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"4680:11:9"},"referencedDeclaration":4476,"src":"4680:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":727,"nodeType":"ArrayTypeName","src":"4680:13:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"4679:34:9"},"scope":1247,"src":"4547:167:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":731,"nodeType":"StructuredDocumentation","src":"4720:100:9","text":"@dev Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider."},"functionSelector":"e5948689","id":749,"implemented":false,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"4834:16:9","nodeType":"FunctionDefinition","parameters":{"id":743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":735,"mutability":"mutable","name":"tokens","nameLocation":"4876:6:9","nodeType":"VariableDeclaration","scope":749,"src":"4860:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":733,"nodeType":"UserDefinedTypeName","pathNode":{"id":732,"name":"IERC20","nameLocations":["4860:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4860:6:9"},"referencedDeclaration":39274,"src":"4860:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":734,"nodeType":"ArrayTypeName","src":"4860:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":739,"mutability":"mutable","name":"rateProviders","nameLocation":"4915:13:9","nodeType":"VariableDeclaration","scope":749,"src":"4892:36:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":737,"nodeType":"UserDefinedTypeName","pathNode":{"id":736,"name":"IRateProvider","nameLocations":["4892:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"4892:13:9"},"referencedDeclaration":150,"src":"4892:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":738,"nodeType":"ArrayTypeName","src":"4892:15:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"},{"constant":false,"id":742,"mutability":"mutable","name":"yieldFeeFlags","nameLocation":"4952:13:9","nodeType":"VariableDeclaration","scope":749,"src":"4938:27:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":740,"name":"bool","nodeType":"ElementaryTypeName","src":"4938:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":741,"nodeType":"ArrayTypeName","src":"4938:6:9","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"4850:121:9"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":747,"mutability":"mutable","name":"tokenConfig","nameLocation":"5016:11:9","nodeType":"VariableDeclaration","scope":749,"src":"4995:32:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":745,"nodeType":"UserDefinedTypeName","pathNode":{"id":744,"name":"TokenConfig","nameLocations":["4995:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"4995:11:9"},"referencedDeclaration":4476,"src":"4995:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":746,"nodeType":"ArrayTypeName","src":"4995:13:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"4994:34:9"},"scope":1247,"src":"4825:204:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"608256f7","id":771,"implemented":false,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"5044:16:9","nodeType":"FunctionDefinition","parameters":{"id":765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":753,"mutability":"mutable","name":"tokens","nameLocation":"5086:6:9","nodeType":"VariableDeclaration","scope":771,"src":"5070:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":751,"nodeType":"UserDefinedTypeName","pathNode":{"id":750,"name":"IERC20","nameLocations":["5070:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5070:6:9"},"referencedDeclaration":39274,"src":"5070:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":752,"nodeType":"ArrayTypeName","src":"5070:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"tokenTypes","nameLocation":"5121:10:9","nodeType":"VariableDeclaration","scope":771,"src":"5102:29:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TokenType_$4463_$dyn_memory_ptr","typeString":"enum TokenType[]"},"typeName":{"baseType":{"id":755,"nodeType":"UserDefinedTypeName","pathNode":{"id":754,"name":"TokenType","nameLocations":["5102:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":4463,"src":"5102:9:9"},"referencedDeclaration":4463,"src":"5102:9:9","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"id":756,"nodeType":"ArrayTypeName","src":"5102:11:9","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TokenType_$4463_$dyn_storage_ptr","typeString":"enum TokenType[]"}},"visibility":"internal"},{"constant":false,"id":761,"mutability":"mutable","name":"rateProviders","nameLocation":"5164:13:9","nodeType":"VariableDeclaration","scope":771,"src":"5141:36:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":759,"nodeType":"UserDefinedTypeName","pathNode":{"id":758,"name":"IRateProvider","nameLocations":["5141:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"5141:13:9"},"referencedDeclaration":150,"src":"5141:13:9","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":760,"nodeType":"ArrayTypeName","src":"5141:15:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"},{"constant":false,"id":764,"mutability":"mutable","name":"yieldFeeFlags","nameLocation":"5201:13:9","nodeType":"VariableDeclaration","scope":771,"src":"5187:27:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":762,"name":"bool","nodeType":"ElementaryTypeName","src":"5187:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":763,"nodeType":"ArrayTypeName","src":"5187:6:9","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"5060:160:9"},"returnParameters":{"id":770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":769,"mutability":"mutable","name":"tokenConfig","nameLocation":"5265:11:9","nodeType":"VariableDeclaration","scope":771,"src":"5244:32:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":767,"nodeType":"UserDefinedTypeName","pathNode":{"id":766,"name":"TokenConfig","nameLocations":["5244:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"5244:11:9"},"referencedDeclaration":4476,"src":"5244:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":768,"nodeType":"ArrayTypeName","src":"5244:13:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"5243:34:9"},"scope":1247,"src":"5035:243:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"80047e26","id":779,"implemented":false,"kind":"function","modifiers":[],"name":"accountDelta","nameLocation":"5293:12:9","nodeType":"FunctionDefinition","parameters":{"id":777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":774,"mutability":"mutable","name":"token","nameLocation":"5313:5:9","nodeType":"VariableDeclaration","scope":779,"src":"5306:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":773,"nodeType":"UserDefinedTypeName","pathNode":{"id":772,"name":"IERC20","nameLocations":["5306:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5306:6:9"},"referencedDeclaration":39274,"src":"5306:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":776,"mutability":"mutable","name":"delta","nameLocation":"5327:5:9","nodeType":"VariableDeclaration","scope":779,"src":"5320:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":775,"name":"int256","nodeType":"ElementaryTypeName","src":"5320:6:9","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5305:28:9"},"returnParameters":{"id":778,"nodeType":"ParameterList","parameters":[],"src":"5342:0:9"},"scope":1247,"src":"5284:59:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b1740c2d","id":787,"implemented":false,"kind":"function","modifiers":[],"name":"supplyCredit","nameLocation":"5358:12:9","nodeType":"FunctionDefinition","parameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":782,"mutability":"mutable","name":"token","nameLocation":"5378:5:9","nodeType":"VariableDeclaration","scope":787,"src":"5371:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":781,"nodeType":"UserDefinedTypeName","pathNode":{"id":780,"name":"IERC20","nameLocations":["5371:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5371:6:9"},"referencedDeclaration":39274,"src":"5371:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":784,"mutability":"mutable","name":"credit","nameLocation":"5393:6:9","nodeType":"VariableDeclaration","scope":787,"src":"5385:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":783,"name":"uint256","nodeType":"ElementaryTypeName","src":"5385:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5370:30:9"},"returnParameters":{"id":786,"nodeType":"ParameterList","parameters":[],"src":"5409:0:9"},"scope":1247,"src":"5349:61:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3e262ba3","id":795,"implemented":false,"kind":"function","modifiers":[],"name":"takeDebt","nameLocation":"5425:8:9","nodeType":"FunctionDefinition","parameters":{"id":793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":790,"mutability":"mutable","name":"token","nameLocation":"5441:5:9","nodeType":"VariableDeclaration","scope":795,"src":"5434:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":789,"nodeType":"UserDefinedTypeName","pathNode":{"id":788,"name":"IERC20","nameLocations":["5434:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5434:6:9"},"referencedDeclaration":39274,"src":"5434:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":792,"mutability":"mutable","name":"debt","nameLocation":"5456:4:9","nodeType":"VariableDeclaration","scope":795,"src":"5448:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":791,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5433:28:9"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[],"src":"5470:0:9"},"scope":1247,"src":"5416:55:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d0643b8c","id":803,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetAccountDelta","nameLocation":"5486:21:9","nodeType":"FunctionDefinition","parameters":{"id":801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":798,"mutability":"mutable","name":"token","nameLocation":"5515:5:9","nodeType":"VariableDeclaration","scope":803,"src":"5508:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":797,"nodeType":"UserDefinedTypeName","pathNode":{"id":796,"name":"IERC20","nameLocations":["5508:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5508:6:9"},"referencedDeclaration":39274,"src":"5508:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":800,"mutability":"mutable","name":"delta","nameLocation":"5529:5:9","nodeType":"VariableDeclaration","scope":803,"src":"5522:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":799,"name":"int256","nodeType":"ElementaryTypeName","src":"5522:6:9","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5507:28:9"},"returnParameters":{"id":802,"nodeType":"ParameterList","parameters":[],"src":"5544:0:9"},"scope":1247,"src":"5477:68:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5eeae6eb","id":808,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetNonZeroDeltaCount","nameLocation":"5560:26:9","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":805,"mutability":"mutable","name":"deltaCount","nameLocation":"5595:10:9","nodeType":"VariableDeclaration","scope":808,"src":"5587:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":804,"name":"uint256","nodeType":"ElementaryTypeName","src":"5587:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5586:20:9"},"returnParameters":{"id":807,"nodeType":"ParameterList","parameters":[],"src":"5615:0:9"},"scope":1247,"src":"5551:65:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d64bc25d","id":816,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetReservesOf","nameLocation":"5631:19:9","nodeType":"FunctionDefinition","parameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"token","nameLocation":"5658:5:9","nodeType":"VariableDeclaration","scope":816,"src":"5651:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":810,"nodeType":"UserDefinedTypeName","pathNode":{"id":809,"name":"IERC20","nameLocations":["5651:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5651:6:9"},"referencedDeclaration":39274,"src":"5651:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":813,"mutability":"mutable","name":"reserves","nameLocation":"5673:8:9","nodeType":"VariableDeclaration","scope":816,"src":"5665:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":812,"name":"uint256","nodeType":"ElementaryTypeName","src":"5665:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5650:32:9"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"5691:0:9"},"scope":1247,"src":"5622:70:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"25b6a844","id":845,"implemented":false,"kind":"function","modifiers":[],"name":"manualInternalSwap","nameLocation":"5707:18:9","nodeType":"FunctionDefinition","parameters":{"id":826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":819,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"5758:15:9","nodeType":"VariableDeclaration","scope":845,"src":"5735:38:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":818,"nodeType":"UserDefinedTypeName","pathNode":{"id":817,"name":"VaultSwapParams","nameLocations":["5735:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"5735:15:9"},"referencedDeclaration":4536,"src":"5735:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":822,"mutability":"mutable","name":"state","nameLocation":"5800:5:9","nodeType":"VariableDeclaration","scope":845,"src":"5783:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":821,"nodeType":"UserDefinedTypeName","pathNode":{"id":820,"name":"SwapState","nameLocations":["5783:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"5783:9:9"},"referencedDeclaration":4443,"src":"5783:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":825,"mutability":"mutable","name":"poolData","nameLocation":"5831:8:9","nodeType":"VariableDeclaration","scope":845,"src":"5815:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":824,"nodeType":"UserDefinedTypeName","pathNode":{"id":823,"name":"PoolData","nameLocations":["5815:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"5815:8:9"},"referencedDeclaration":4511,"src":"5815:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"5725:120:9"},"returnParameters":{"id":844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"5901:19:9","nodeType":"VariableDeclaration","scope":845,"src":"5893:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":827,"name":"uint256","nodeType":"ElementaryTypeName","src":"5893:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"amountCalculatedScaled18","nameLocation":"5942:24:9","nodeType":"VariableDeclaration","scope":845,"src":"5934:32:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":829,"name":"uint256","nodeType":"ElementaryTypeName","src":"5934:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":832,"mutability":"mutable","name":"amountIn","nameLocation":"5988:8:9","nodeType":"VariableDeclaration","scope":845,"src":"5980:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":831,"name":"uint256","nodeType":"ElementaryTypeName","src":"5980:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":834,"mutability":"mutable","name":"amountOut","nameLocation":"6018:9:9","nodeType":"VariableDeclaration","scope":845,"src":"6010:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":833,"name":"uint256","nodeType":"ElementaryTypeName","src":"6010:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":845,"src":"6041:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":836,"nodeType":"UserDefinedTypeName","pathNode":{"id":835,"name":"VaultSwapParams","nameLocations":["6041:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"6041:15:9"},"referencedDeclaration":4536,"src":"6041:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":845,"src":"6077:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":839,"nodeType":"UserDefinedTypeName","pathNode":{"id":838,"name":"SwapState","nameLocations":["6077:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"6077:9:9"},"referencedDeclaration":4443,"src":"6077:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":845,"src":"6107:15:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":842,"nodeType":"UserDefinedTypeName","pathNode":{"id":841,"name":"PoolData","nameLocations":["6107:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"6107:8:9"},"referencedDeclaration":4511,"src":"6107:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"5879:253:9"},"scope":1247,"src":"5698:435:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"96e74a27","id":857,"implemented":false,"kind":"function","modifiers":[],"name":"manualReentrancySwap","nameLocation":"6148:20:9","nodeType":"FunctionDefinition","parameters":{"id":855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":848,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"6201:15:9","nodeType":"VariableDeclaration","scope":857,"src":"6178:38:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":847,"nodeType":"UserDefinedTypeName","pathNode":{"id":846,"name":"VaultSwapParams","nameLocations":["6178:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"6178:15:9"},"referencedDeclaration":4536,"src":"6178:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":851,"mutability":"mutable","name":"state","nameLocation":"6243:5:9","nodeType":"VariableDeclaration","scope":857,"src":"6226:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":850,"nodeType":"UserDefinedTypeName","pathNode":{"id":849,"name":"SwapState","nameLocations":["6226:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"6226:9:9"},"referencedDeclaration":4443,"src":"6226:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":854,"mutability":"mutable","name":"poolData","nameLocation":"6274:8:9","nodeType":"VariableDeclaration","scope":857,"src":"6258:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":853,"nodeType":"UserDefinedTypeName","pathNode":{"id":852,"name":"PoolData","nameLocations":["6258:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"6258:8:9"},"referencedDeclaration":4511,"src":"6258:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"6168:120:9"},"returnParameters":{"id":856,"nodeType":"ParameterList","parameters":[],"src":"6297:0:9"},"scope":1247,"src":"6139:159:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"36918d6e","id":867,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetAggregateSwapFeeAmount","nameLocation":"6313:31:9","nodeType":"FunctionDefinition","parameters":{"id":863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":859,"mutability":"mutable","name":"pool","nameLocation":"6353:4:9","nodeType":"VariableDeclaration","scope":867,"src":"6345:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":858,"name":"address","nodeType":"ElementaryTypeName","src":"6345:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":862,"mutability":"mutable","name":"token","nameLocation":"6366:5:9","nodeType":"VariableDeclaration","scope":867,"src":"6359:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":861,"nodeType":"UserDefinedTypeName","pathNode":{"id":860,"name":"IERC20","nameLocations":["6359:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6359:6:9"},"referencedDeclaration":39274,"src":"6359:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6344:28:9"},"returnParameters":{"id":866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":867,"src":"6396:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":864,"name":"uint256","nodeType":"ElementaryTypeName","src":"6396:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6395:9:9"},"scope":1247,"src":"6304:101:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8f5aeb4b","id":877,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetAggregateYieldFeeAmount","nameLocation":"6420:32:9","nodeType":"FunctionDefinition","parameters":{"id":873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":869,"mutability":"mutable","name":"pool","nameLocation":"6461:4:9","nodeType":"VariableDeclaration","scope":877,"src":"6453:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":868,"name":"address","nodeType":"ElementaryTypeName","src":"6453:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":872,"mutability":"mutable","name":"token","nameLocation":"6474:5:9","nodeType":"VariableDeclaration","scope":877,"src":"6467:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":871,"nodeType":"UserDefinedTypeName","pathNode":{"id":870,"name":"IERC20","nameLocations":["6467:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6467:6:9"},"referencedDeclaration":39274,"src":"6467:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6452:28:9"},"returnParameters":{"id":876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":877,"src":"6504:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":874,"name":"uint256","nodeType":"ElementaryTypeName","src":"6504:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6503:9:9"},"scope":1247,"src":"6411:102:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"44ea8763","id":887,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetAggregateSwapFeeAmount","nameLocation":"6528:31:9","nodeType":"FunctionDefinition","parameters":{"id":885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"pool","nameLocation":"6568:4:9","nodeType":"VariableDeclaration","scope":887,"src":"6560:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":878,"name":"address","nodeType":"ElementaryTypeName","src":"6560:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":882,"mutability":"mutable","name":"token","nameLocation":"6581:5:9","nodeType":"VariableDeclaration","scope":887,"src":"6574:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":881,"nodeType":"UserDefinedTypeName","pathNode":{"id":880,"name":"IERC20","nameLocations":["6574:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6574:6:9"},"referencedDeclaration":39274,"src":"6574:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":884,"mutability":"mutable","name":"value","nameLocation":"6596:5:9","nodeType":"VariableDeclaration","scope":887,"src":"6588:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":883,"name":"uint256","nodeType":"ElementaryTypeName","src":"6588:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6559:43:9"},"returnParameters":{"id":886,"nodeType":"ParameterList","parameters":[],"src":"6611:0:9"},"scope":1247,"src":"6519:93:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7004b0f1","id":897,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetAggregateYieldFeeAmount","nameLocation":"6627:32:9","nodeType":"FunctionDefinition","parameters":{"id":895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":889,"mutability":"mutable","name":"pool","nameLocation":"6668:4:9","nodeType":"VariableDeclaration","scope":897,"src":"6660:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":888,"name":"address","nodeType":"ElementaryTypeName","src":"6660:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":892,"mutability":"mutable","name":"token","nameLocation":"6681:5:9","nodeType":"VariableDeclaration","scope":897,"src":"6674:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":891,"nodeType":"UserDefinedTypeName","pathNode":{"id":890,"name":"IERC20","nameLocations":["6674:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6674:6:9"},"referencedDeclaration":39274,"src":"6674:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":894,"mutability":"mutable","name":"value","nameLocation":"6696:5:9","nodeType":"VariableDeclaration","scope":897,"src":"6688:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":893,"name":"uint256","nodeType":"ElementaryTypeName","src":"6688:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6659:43:9"},"returnParameters":{"id":896,"nodeType":"ParameterList","parameters":[],"src":"6711:0:9"},"scope":1247,"src":"6618:94:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cfcc2209","id":904,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetAggregateSwapFeePercentage","nameLocation":"6727:35:9","nodeType":"FunctionDefinition","parameters":{"id":902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":899,"mutability":"mutable","name":"pool","nameLocation":"6771:4:9","nodeType":"VariableDeclaration","scope":904,"src":"6763:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":898,"name":"address","nodeType":"ElementaryTypeName","src":"6763:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":901,"mutability":"mutable","name":"value","nameLocation":"6785:5:9","nodeType":"VariableDeclaration","scope":904,"src":"6777:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":900,"name":"uint256","nodeType":"ElementaryTypeName","src":"6777:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6762:29:9"},"returnParameters":{"id":903,"nodeType":"ParameterList","parameters":[],"src":"6800:0:9"},"scope":1247,"src":"6718:83:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"920af066","id":911,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetAggregateYieldFeePercentage","nameLocation":"6816:36:9","nodeType":"FunctionDefinition","parameters":{"id":909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":906,"mutability":"mutable","name":"pool","nameLocation":"6861:4:9","nodeType":"VariableDeclaration","scope":911,"src":"6853:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":905,"name":"address","nodeType":"ElementaryTypeName","src":"6853:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":908,"mutability":"mutable","name":"value","nameLocation":"6875:5:9","nodeType":"VariableDeclaration","scope":911,"src":"6867:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":907,"name":"uint256","nodeType":"ElementaryTypeName","src":"6867:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6852:29:9"},"returnParameters":{"id":910,"nodeType":"ParameterList","parameters":[],"src":"6890:0:9"},"scope":1247,"src":"6807:84:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"16a573c2","id":926,"implemented":false,"kind":"function","modifiers":[],"name":"manualBuildPoolSwapParams","nameLocation":"6906:25:9","nodeType":"FunctionDefinition","parameters":{"id":921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":914,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"6964:15:9","nodeType":"VariableDeclaration","scope":926,"src":"6941:38:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":913,"nodeType":"UserDefinedTypeName","pathNode":{"id":912,"name":"VaultSwapParams","nameLocations":["6941:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"6941:15:9"},"referencedDeclaration":4536,"src":"6941:15:9","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":917,"mutability":"mutable","name":"state","nameLocation":"7006:5:9","nodeType":"VariableDeclaration","scope":926,"src":"6989:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":916,"nodeType":"UserDefinedTypeName","pathNode":{"id":915,"name":"SwapState","nameLocations":["6989:9:9"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"6989:9:9"},"referencedDeclaration":4443,"src":"6989:9:9","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":920,"mutability":"mutable","name":"poolData","nameLocation":"7037:8:9","nodeType":"VariableDeclaration","scope":926,"src":"7021:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":919,"nodeType":"UserDefinedTypeName","pathNode":{"id":918,"name":"PoolData","nameLocations":["7021:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"7021:8:9"},"referencedDeclaration":4511,"src":"7021:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"6931:120:9"},"returnParameters":{"id":925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":926,"src":"7075:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":923,"nodeType":"UserDefinedTypeName","pathNode":{"id":922,"name":"PoolSwapParams","nameLocations":["7075:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"7075:14:9"},"referencedDeclaration":4554,"src":"7075:14:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"7074:23:9"},"scope":1247,"src":"6897:201:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"be6b4d2a","id":945,"implemented":false,"kind":"function","modifiers":[],"name":"manualComputeAndChargeAggregateSwapFees","nameLocation":"7113:39:9","nodeType":"FunctionDefinition","parameters":{"id":939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":929,"mutability":"mutable","name":"poolData","nameLocation":"7178:8:9","nodeType":"VariableDeclaration","scope":945,"src":"7162:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":928,"nodeType":"UserDefinedTypeName","pathNode":{"id":927,"name":"PoolData","nameLocations":["7162:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"7162:8:9"},"referencedDeclaration":4511,"src":"7162:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":931,"mutability":"mutable","name":"totalSwapFeeAmountScaled18","nameLocation":"7204:26:9","nodeType":"VariableDeclaration","scope":945,"src":"7196:34:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":930,"name":"uint256","nodeType":"ElementaryTypeName","src":"7196:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":933,"mutability":"mutable","name":"pool","nameLocation":"7248:4:9","nodeType":"VariableDeclaration","scope":945,"src":"7240:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":932,"name":"address","nodeType":"ElementaryTypeName","src":"7240:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":936,"mutability":"mutable","name":"token","nameLocation":"7269:5:9","nodeType":"VariableDeclaration","scope":945,"src":"7262:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":935,"nodeType":"UserDefinedTypeName","pathNode":{"id":934,"name":"IERC20","nameLocations":["7262:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"7262:6:9"},"referencedDeclaration":39274,"src":"7262:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":938,"mutability":"mutable","name":"index","nameLocation":"7292:5:9","nodeType":"VariableDeclaration","scope":945,"src":"7284:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":937,"name":"uint256","nodeType":"ElementaryTypeName","src":"7284:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7152:151:9"},"returnParameters":{"id":944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":941,"mutability":"mutable","name":"totalSwapFeeAmountRaw","nameLocation":"7330:21:9","nodeType":"VariableDeclaration","scope":945,"src":"7322:29:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":940,"name":"uint256","nodeType":"ElementaryTypeName","src":"7322:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":943,"mutability":"mutable","name":"aggregateSwapFeeAmountRaw","nameLocation":"7361:25:9","nodeType":"VariableDeclaration","scope":945,"src":"7353:33:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint256","nodeType":"ElementaryTypeName","src":"7353:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7321:66:9"},"scope":1247,"src":"7104:284:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d86c3fef","id":959,"implemented":false,"kind":"function","modifiers":[],"name":"manualUpdatePoolDataLiveBalancesAndRates","nameLocation":"7403:40:9","nodeType":"FunctionDefinition","parameters":{"id":954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":947,"mutability":"mutable","name":"pool","nameLocation":"7461:4:9","nodeType":"VariableDeclaration","scope":959,"src":"7453:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":946,"name":"address","nodeType":"ElementaryTypeName","src":"7453:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":950,"mutability":"mutable","name":"poolData","nameLocation":"7491:8:9","nodeType":"VariableDeclaration","scope":959,"src":"7475:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":949,"nodeType":"UserDefinedTypeName","pathNode":{"id":948,"name":"PoolData","nameLocations":["7475:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"7475:8:9"},"referencedDeclaration":4511,"src":"7475:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":953,"mutability":"mutable","name":"roundingDirection","nameLocation":"7518:17:9","nodeType":"VariableDeclaration","scope":959,"src":"7509:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":952,"nodeType":"UserDefinedTypeName","pathNode":{"id":951,"name":"Rounding","nameLocations":["7509:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"7509:8:9"},"referencedDeclaration":4514,"src":"7509:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"7443:98:9"},"returnParameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":959,"src":"7565:15:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":956,"nodeType":"UserDefinedTypeName","pathNode":{"id":955,"name":"PoolData","nameLocations":["7565:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"7565:8:9"},"referencedDeclaration":4511,"src":"7565:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"7564:17:9"},"scope":1247,"src":"7394:188:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0790de46","id":984,"implemented":false,"kind":"function","modifiers":[],"name":"manualAddLiquidity","nameLocation":"7597:18:9","nodeType":"FunctionDefinition","parameters":{"id":969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":962,"mutability":"mutable","name":"poolData","nameLocation":"7641:8:9","nodeType":"VariableDeclaration","scope":984,"src":"7625:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":961,"nodeType":"UserDefinedTypeName","pathNode":{"id":960,"name":"PoolData","nameLocations":["7625:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"7625:8:9"},"referencedDeclaration":4511,"src":"7625:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":965,"mutability":"mutable","name":"params","nameLocation":"7685:6:9","nodeType":"VariableDeclaration","scope":984,"src":"7659:32:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":964,"nodeType":"UserDefinedTypeName","pathNode":{"id":963,"name":"AddLiquidityParams","nameLocations":["7659:18:9"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"7659:18:9"},"referencedDeclaration":4605,"src":"7659:18:9","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":968,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"7718:20:9","nodeType":"VariableDeclaration","scope":984,"src":"7701:37:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":966,"name":"uint256","nodeType":"ElementaryTypeName","src":"7701:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":967,"nodeType":"ArrayTypeName","src":"7701:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7615:129:9"},"returnParameters":{"id":983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":972,"mutability":"mutable","name":"updatedPoolData","nameLocation":"7808:15:9","nodeType":"VariableDeclaration","scope":984,"src":"7792:31:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":971,"nodeType":"UserDefinedTypeName","pathNode":{"id":970,"name":"PoolData","nameLocations":["7792:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"7792:8:9"},"referencedDeclaration":4511,"src":"7792:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":975,"mutability":"mutable","name":"amountsInRaw","nameLocation":"7854:12:9","nodeType":"VariableDeclaration","scope":984,"src":"7837:29:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":973,"name":"uint256","nodeType":"ElementaryTypeName","src":"7837:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":974,"nodeType":"ArrayTypeName","src":"7837:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":978,"mutability":"mutable","name":"amountsInScaled18","nameLocation":"7897:17:9","nodeType":"VariableDeclaration","scope":984,"src":"7880:34:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":976,"name":"uint256","nodeType":"ElementaryTypeName","src":"7880:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":977,"nodeType":"ArrayTypeName","src":"7880:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":980,"mutability":"mutable","name":"bptAmountOut","nameLocation":"7936:12:9","nodeType":"VariableDeclaration","scope":984,"src":"7928:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":979,"name":"uint256","nodeType":"ElementaryTypeName","src":"7928:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":982,"mutability":"mutable","name":"returnData","nameLocation":"7975:10:9","nodeType":"VariableDeclaration","scope":984,"src":"7962:23:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":981,"name":"bytes","nodeType":"ElementaryTypeName","src":"7962:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7778:217:9"},"scope":1247,"src":"7588:408:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"eeda9991","id":996,"implemented":false,"kind":"function","modifiers":[],"name":"manualReentrancyAddLiquidity","nameLocation":"8011:28:9","nodeType":"FunctionDefinition","parameters":{"id":994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":987,"mutability":"mutable","name":"poolData","nameLocation":"8065:8:9","nodeType":"VariableDeclaration","scope":996,"src":"8049:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":986,"nodeType":"UserDefinedTypeName","pathNode":{"id":985,"name":"PoolData","nameLocations":["8049:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"8049:8:9"},"referencedDeclaration":4511,"src":"8049:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":990,"mutability":"mutable","name":"params","nameLocation":"8109:6:9","nodeType":"VariableDeclaration","scope":996,"src":"8083:32:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":989,"nodeType":"UserDefinedTypeName","pathNode":{"id":988,"name":"AddLiquidityParams","nameLocations":["8083:18:9"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"8083:18:9"},"referencedDeclaration":4605,"src":"8083:18:9","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":993,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"8142:20:9","nodeType":"VariableDeclaration","scope":996,"src":"8125:37:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":991,"name":"uint256","nodeType":"ElementaryTypeName","src":"8125:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":992,"nodeType":"ArrayTypeName","src":"8125:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8039:129:9"},"returnParameters":{"id":995,"nodeType":"ParameterList","parameters":[],"src":"8177:0:9"},"scope":1247,"src":"8002:176:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7965c967","id":999,"implemented":false,"kind":"function","modifiers":[],"name":"forceUnlock","nameLocation":"8193:11:9","nodeType":"FunctionDefinition","parameters":{"id":997,"nodeType":"ParameterList","parameters":[],"src":"8204:2:9"},"returnParameters":{"id":998,"nodeType":"ParameterList","parameters":[],"src":"8215:0:9"},"scope":1247,"src":"8184:32:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6d4908c4","id":1002,"implemented":false,"kind":"function","modifiers":[],"name":"forceLock","nameLocation":"8231:9:9","nodeType":"FunctionDefinition","parameters":{"id":1000,"nodeType":"ParameterList","parameters":[],"src":"8240:2:9"},"returnParameters":{"id":1001,"nodeType":"ParameterList","parameters":[],"src":"8251:0:9"},"scope":1247,"src":"8222:30:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f1320097","id":1027,"implemented":false,"kind":"function","modifiers":[],"name":"manualRemoveLiquidity","nameLocation":"8267:21:9","nodeType":"FunctionDefinition","parameters":{"id":1012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1005,"mutability":"mutable","name":"poolData","nameLocation":"8314:8:9","nodeType":"VariableDeclaration","scope":1027,"src":"8298:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":1004,"nodeType":"UserDefinedTypeName","pathNode":{"id":1003,"name":"PoolData","nameLocations":["8298:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"8298:8:9"},"referencedDeclaration":4511,"src":"8298:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":1008,"mutability":"mutable","name":"params","nameLocation":"8361:6:9","nodeType":"VariableDeclaration","scope":1027,"src":"8332:35:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":1007,"nodeType":"UserDefinedTypeName","pathNode":{"id":1006,"name":"RemoveLiquidityParams","nameLocations":["8332:21:9"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"8332:21:9"},"referencedDeclaration":4626,"src":"8332:21:9","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":1011,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"8394:21:9","nodeType":"VariableDeclaration","scope":1027,"src":"8377:38:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1009,"name":"uint256","nodeType":"ElementaryTypeName","src":"8377:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ArrayTypeName","src":"8377:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8288:133:9"},"returnParameters":{"id":1026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1015,"mutability":"mutable","name":"updatedPoolData","nameLocation":"8485:15:9","nodeType":"VariableDeclaration","scope":1027,"src":"8469:31:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":1014,"nodeType":"UserDefinedTypeName","pathNode":{"id":1013,"name":"PoolData","nameLocations":["8469:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"8469:8:9"},"referencedDeclaration":4511,"src":"8469:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":1017,"mutability":"mutable","name":"bptAmountIn","nameLocation":"8522:11:9","nodeType":"VariableDeclaration","scope":1027,"src":"8514:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1016,"name":"uint256","nodeType":"ElementaryTypeName","src":"8514:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1020,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"8564:13:9","nodeType":"VariableDeclaration","scope":1027,"src":"8547:30:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1018,"name":"uint256","nodeType":"ElementaryTypeName","src":"8547:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1019,"nodeType":"ArrayTypeName","src":"8547:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1023,"mutability":"mutable","name":"amountsOutScaled18","nameLocation":"8608:18:9","nodeType":"VariableDeclaration","scope":1027,"src":"8591:35:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"8591:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1022,"nodeType":"ArrayTypeName","src":"8591:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1025,"mutability":"mutable","name":"returnData","nameLocation":"8653:10:9","nodeType":"VariableDeclaration","scope":1027,"src":"8640:23:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1024,"name":"bytes","nodeType":"ElementaryTypeName","src":"8640:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8455:218:9"},"scope":1247,"src":"8258:416:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"28121e27","id":1039,"implemented":false,"kind":"function","modifiers":[],"name":"manualReentrancyRemoveLiquidity","nameLocation":"8689:31:9","nodeType":"FunctionDefinition","parameters":{"id":1037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1030,"mutability":"mutable","name":"poolData","nameLocation":"8746:8:9","nodeType":"VariableDeclaration","scope":1039,"src":"8730:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":1029,"nodeType":"UserDefinedTypeName","pathNode":{"id":1028,"name":"PoolData","nameLocations":["8730:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"8730:8:9"},"referencedDeclaration":4511,"src":"8730:8:9","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":1033,"mutability":"mutable","name":"params","nameLocation":"8793:6:9","nodeType":"VariableDeclaration","scope":1039,"src":"8764:35:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":1032,"nodeType":"UserDefinedTypeName","pathNode":{"id":1031,"name":"RemoveLiquidityParams","nameLocations":["8764:21:9"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"8764:21:9"},"referencedDeclaration":4626,"src":"8764:21:9","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":1036,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"8826:21:9","nodeType":"VariableDeclaration","scope":1039,"src":"8809:38:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1034,"name":"uint256","nodeType":"ElementaryTypeName","src":"8809:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1035,"nodeType":"ArrayTypeName","src":"8809:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8720:133:9"},"returnParameters":{"id":1038,"nodeType":"ParameterList","parameters":[],"src":"8862:0:9"},"scope":1247,"src":"8680:183:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ac004855","id":1052,"implemented":false,"kind":"function","modifiers":[],"name":"manualSettleWrap","nameLocation":"8878:16:9","nodeType":"FunctionDefinition","parameters":{"id":1050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1042,"mutability":"mutable","name":"underlyingToken","nameLocation":"8911:15:9","nodeType":"VariableDeclaration","scope":1052,"src":"8904:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1041,"nodeType":"UserDefinedTypeName","pathNode":{"id":1040,"name":"IERC20","nameLocations":["8904:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8904:6:9"},"referencedDeclaration":39274,"src":"8904:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1045,"mutability":"mutable","name":"wrappedToken","nameLocation":"8943:12:9","nodeType":"VariableDeclaration","scope":1052,"src":"8936:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1044,"nodeType":"UserDefinedTypeName","pathNode":{"id":1043,"name":"IERC20","nameLocations":["8936:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8936:6:9"},"referencedDeclaration":39274,"src":"8936:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1047,"mutability":"mutable","name":"underlyingHint","nameLocation":"8973:14:9","nodeType":"VariableDeclaration","scope":1052,"src":"8965:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1046,"name":"uint256","nodeType":"ElementaryTypeName","src":"8965:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1049,"mutability":"mutable","name":"wrappedHint","nameLocation":"9005:11:9","nodeType":"VariableDeclaration","scope":1052,"src":"8997:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1048,"name":"uint256","nodeType":"ElementaryTypeName","src":"8997:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8894:128:9"},"returnParameters":{"id":1051,"nodeType":"ParameterList","parameters":[],"src":"9031:0:9"},"scope":1247,"src":"8869:163:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b6f680f4","id":1065,"implemented":false,"kind":"function","modifiers":[],"name":"manualSettleUnwrap","nameLocation":"9047:18:9","nodeType":"FunctionDefinition","parameters":{"id":1063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1055,"mutability":"mutable","name":"underlyingToken","nameLocation":"9082:15:9","nodeType":"VariableDeclaration","scope":1065,"src":"9075:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1054,"nodeType":"UserDefinedTypeName","pathNode":{"id":1053,"name":"IERC20","nameLocations":["9075:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"9075:6:9"},"referencedDeclaration":39274,"src":"9075:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1058,"mutability":"mutable","name":"wrappedToken","nameLocation":"9114:12:9","nodeType":"VariableDeclaration","scope":1065,"src":"9107:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1057,"nodeType":"UserDefinedTypeName","pathNode":{"id":1056,"name":"IERC20","nameLocations":["9107:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"9107:6:9"},"referencedDeclaration":39274,"src":"9107:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1060,"mutability":"mutable","name":"underlyingHint","nameLocation":"9144:14:9","nodeType":"VariableDeclaration","scope":1065,"src":"9136:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1059,"name":"uint256","nodeType":"ElementaryTypeName","src":"9136:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1062,"mutability":"mutable","name":"wrappedHint","nameLocation":"9176:11:9","nodeType":"VariableDeclaration","scope":1065,"src":"9168:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1061,"name":"uint256","nodeType":"ElementaryTypeName","src":"9168:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9065:128:9"},"returnParameters":{"id":1064,"nodeType":"ParameterList","parameters":[],"src":"9202:0:9"},"scope":1247,"src":"9038:165:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"00d7aadb","id":1075,"implemented":false,"kind":"function","modifiers":[],"name":"manualTransfer","nameLocation":"9218:14:9","nodeType":"FunctionDefinition","parameters":{"id":1073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1068,"mutability":"mutable","name":"token","nameLocation":"9240:5:9","nodeType":"VariableDeclaration","scope":1075,"src":"9233:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1067,"nodeType":"UserDefinedTypeName","pathNode":{"id":1066,"name":"IERC20","nameLocations":["9233:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"9233:6:9"},"referencedDeclaration":39274,"src":"9233:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1070,"mutability":"mutable","name":"to","nameLocation":"9255:2:9","nodeType":"VariableDeclaration","scope":1075,"src":"9247:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1069,"name":"address","nodeType":"ElementaryTypeName","src":"9247:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1072,"mutability":"mutable","name":"amount","nameLocation":"9267:6:9","nodeType":"VariableDeclaration","scope":1075,"src":"9259:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1071,"name":"uint256","nodeType":"ElementaryTypeName","src":"9259:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9232:42:9"},"returnParameters":{"id":1074,"nodeType":"ParameterList","parameters":[],"src":"9283:0:9"},"scope":1247,"src":"9209:75:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"557dba68","id":1083,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetPoolConfigBits","nameLocation":"9299:23:9","nodeType":"FunctionDefinition","parameters":{"id":1078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1077,"mutability":"mutable","name":"pool","nameLocation":"9331:4:9","nodeType":"VariableDeclaration","scope":1083,"src":"9323:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1076,"name":"address","nodeType":"ElementaryTypeName","src":"9323:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9322:14:9"},"returnParameters":{"id":1082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1083,"src":"9360:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":1080,"nodeType":"UserDefinedTypeName","pathNode":{"id":1079,"name":"PoolConfigBits","nameLocations":["9360:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"9360:14:9"},"referencedDeclaration":4364,"src":"9360:14:9","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"9359:16:9"},"scope":1247,"src":"9290:86:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"370bc8da","id":1095,"implemented":false,"kind":"function","modifiers":[],"name":"manualErc4626BufferWrapOrUnwrapReentrancy","nameLocation":"9391:41:9","nodeType":"FunctionDefinition","parameters":{"id":1087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1086,"mutability":"mutable","name":"params","nameLocation":"9474:6:9","nodeType":"VariableDeclaration","scope":1095,"src":"9442:38:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams"},"typeName":{"id":1085,"nodeType":"UserDefinedTypeName","pathNode":{"id":1084,"name":"BufferWrapOrUnwrapParams","nameLocations":["9442:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":4644,"src":"9442:24:9"},"referencedDeclaration":4644,"src":"9442:24:9","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_storage_ptr","typeString":"struct BufferWrapOrUnwrapParams"}},"visibility":"internal"}],"src":"9432:54:9"},"returnParameters":{"id":1094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1089,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"9513:19:9","nodeType":"VariableDeclaration","scope":1095,"src":"9505:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1088,"name":"uint256","nodeType":"ElementaryTypeName","src":"9505:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1091,"mutability":"mutable","name":"amountInRaw","nameLocation":"9542:11:9","nodeType":"VariableDeclaration","scope":1095,"src":"9534:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"9534:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1093,"mutability":"mutable","name":"amountOutRaw","nameLocation":"9563:12:9","nodeType":"VariableDeclaration","scope":1095,"src":"9555:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1092,"name":"uint256","nodeType":"ElementaryTypeName","src":"9555:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9504:72:9"},"scope":1247,"src":"9382:195:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ab62c2b6","id":1103,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetBufferAsset","nameLocation":"9592:20:9","nodeType":"FunctionDefinition","parameters":{"id":1101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1098,"mutability":"mutable","name":"wrappedToken","nameLocation":"9622:12:9","nodeType":"VariableDeclaration","scope":1103,"src":"9613:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1097,"nodeType":"UserDefinedTypeName","pathNode":{"id":1096,"name":"IERC4626","nameLocations":["9613:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"9613:8:9"},"referencedDeclaration":38998,"src":"9613:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1100,"mutability":"mutable","name":"underlyingToken","nameLocation":"9644:15:9","nodeType":"VariableDeclaration","scope":1103,"src":"9636:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1099,"name":"address","nodeType":"ElementaryTypeName","src":"9636:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9612:48:9"},"returnParameters":{"id":1102,"nodeType":"ParameterList","parameters":[],"src":"9669:0:9"},"scope":1247,"src":"9583:87:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ff44deab","id":1113,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetBufferOwnerShares","nameLocation":"9685:26:9","nodeType":"FunctionDefinition","parameters":{"id":1111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1106,"mutability":"mutable","name":"wrappedToken","nameLocation":"9721:12:9","nodeType":"VariableDeclaration","scope":1113,"src":"9712:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1105,"nodeType":"UserDefinedTypeName","pathNode":{"id":1104,"name":"IERC4626","nameLocations":["9712:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"9712:8:9"},"referencedDeclaration":38998,"src":"9712:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1108,"mutability":"mutable","name":"owner","nameLocation":"9743:5:9","nodeType":"VariableDeclaration","scope":1113,"src":"9735:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1107,"name":"address","nodeType":"ElementaryTypeName","src":"9735:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1110,"mutability":"mutable","name":"shares","nameLocation":"9758:6:9","nodeType":"VariableDeclaration","scope":1113,"src":"9750:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1109,"name":"uint256","nodeType":"ElementaryTypeName","src":"9750:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9711:54:9"},"returnParameters":{"id":1112,"nodeType":"ParameterList","parameters":[],"src":"9774:0:9"},"scope":1247,"src":"9676:99:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3cb5b2af","id":1121,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetBufferTotalShares","nameLocation":"9790:26:9","nodeType":"FunctionDefinition","parameters":{"id":1119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1116,"mutability":"mutable","name":"wrappedToken","nameLocation":"9826:12:9","nodeType":"VariableDeclaration","scope":1121,"src":"9817:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1115,"nodeType":"UserDefinedTypeName","pathNode":{"id":1114,"name":"IERC4626","nameLocations":["9817:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"9817:8:9"},"referencedDeclaration":38998,"src":"9817:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1118,"mutability":"mutable","name":"shares","nameLocation":"9848:6:9","nodeType":"VariableDeclaration","scope":1121,"src":"9840:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1117,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9816:39:9"},"returnParameters":{"id":1120,"nodeType":"ParameterList","parameters":[],"src":"9864:0:9"},"scope":1247,"src":"9781:84:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0ee4cdd8","id":1131,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetBufferBalances","nameLocation":"9880:23:9","nodeType":"FunctionDefinition","parameters":{"id":1129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1124,"mutability":"mutable","name":"wrappedToken","nameLocation":"9913:12:9","nodeType":"VariableDeclaration","scope":1131,"src":"9904:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1123,"nodeType":"UserDefinedTypeName","pathNode":{"id":1122,"name":"IERC4626","nameLocations":["9904:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"9904:8:9"},"referencedDeclaration":38998,"src":"9904:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1126,"mutability":"mutable","name":"underlyingAmount","nameLocation":"9935:16:9","nodeType":"VariableDeclaration","scope":1131,"src":"9927:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1125,"name":"uint256","nodeType":"ElementaryTypeName","src":"9927:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1128,"mutability":"mutable","name":"wrappedAmount","nameLocation":"9961:13:9","nodeType":"VariableDeclaration","scope":1131,"src":"9953:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1127,"name":"uint256","nodeType":"ElementaryTypeName","src":"9953:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9903:72:9"},"returnParameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"9984:0:9"},"scope":1247,"src":"9871:114:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2d1c3beb","id":1139,"implemented":false,"kind":"function","modifiers":[],"name":"manualSettleReentrancy","nameLocation":"10000:22:9","nodeType":"FunctionDefinition","parameters":{"id":1135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1134,"mutability":"mutable","name":"token","nameLocation":"10030:5:9","nodeType":"VariableDeclaration","scope":1139,"src":"10023:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1133,"nodeType":"UserDefinedTypeName","pathNode":{"id":1132,"name":"IERC20","nameLocations":["10023:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10023:6:9"},"referencedDeclaration":39274,"src":"10023:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10022:14:9"},"returnParameters":{"id":1138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1137,"mutability":"mutable","name":"paid","nameLocation":"10063:4:9","nodeType":"VariableDeclaration","scope":1139,"src":"10055:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1136,"name":"uint256","nodeType":"ElementaryTypeName","src":"10055:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10054:14:9"},"scope":1247,"src":"9991:78:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d01a3269","id":1149,"implemented":false,"kind":"function","modifiers":[],"name":"manualSendToReentrancy","nameLocation":"10084:22:9","nodeType":"FunctionDefinition","parameters":{"id":1147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1142,"mutability":"mutable","name":"token","nameLocation":"10114:5:9","nodeType":"VariableDeclaration","scope":1149,"src":"10107:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1141,"nodeType":"UserDefinedTypeName","pathNode":{"id":1140,"name":"IERC20","nameLocations":["10107:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10107:6:9"},"referencedDeclaration":39274,"src":"10107:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1144,"mutability":"mutable","name":"to","nameLocation":"10129:2:9","nodeType":"VariableDeclaration","scope":1149,"src":"10121:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1143,"name":"address","nodeType":"ElementaryTypeName","src":"10121:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1146,"mutability":"mutable","name":"amount","nameLocation":"10141:6:9","nodeType":"VariableDeclaration","scope":1149,"src":"10133:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1145,"name":"uint256","nodeType":"ElementaryTypeName","src":"10133:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10106:42:9"},"returnParameters":{"id":1148,"nodeType":"ParameterList","parameters":[],"src":"10157:0:9"},"scope":1247,"src":"10075:83:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ebfeb0a1","id":1161,"implemented":false,"kind":"function","modifiers":[],"name":"manualFindTokenIndex","nameLocation":"10173:20:9","nodeType":"FunctionDefinition","parameters":{"id":1157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1153,"mutability":"mutable","name":"tokens","nameLocation":"10210:6:9","nodeType":"VariableDeclaration","scope":1161,"src":"10194:22:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":1151,"nodeType":"UserDefinedTypeName","pathNode":{"id":1150,"name":"IERC20","nameLocations":["10194:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10194:6:9"},"referencedDeclaration":39274,"src":"10194:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":1152,"nodeType":"ArrayTypeName","src":"10194:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":1156,"mutability":"mutable","name":"token","nameLocation":"10225:5:9","nodeType":"VariableDeclaration","scope":1161,"src":"10218:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1155,"nodeType":"UserDefinedTypeName","pathNode":{"id":1154,"name":"IERC20","nameLocations":["10218:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10218:6:9"},"referencedDeclaration":39274,"src":"10218:6:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10193:38:9"},"returnParameters":{"id":1160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1159,"mutability":"mutable","name":"index","nameLocation":"10263:5:9","nodeType":"VariableDeclaration","scope":1161,"src":"10255:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1158,"name":"uint256","nodeType":"ElementaryTypeName","src":"10255:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10254:15:9"},"scope":1247,"src":"10164:106:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"e2ddce11","id":1168,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetAddLiquidityCalledFlag","nameLocation":"10285:31:9","nodeType":"FunctionDefinition","parameters":{"id":1166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1163,"mutability":"mutable","name":"pool","nameLocation":"10325:4:9","nodeType":"VariableDeclaration","scope":1168,"src":"10317:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1162,"name":"address","nodeType":"ElementaryTypeName","src":"10317:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1165,"mutability":"mutable","name":"flag","nameLocation":"10336:4:9","nodeType":"VariableDeclaration","scope":1168,"src":"10331:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1164,"name":"bool","nodeType":"ElementaryTypeName","src":"10331:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10316:25:9"},"returnParameters":{"id":1167,"nodeType":"ParameterList","parameters":[],"src":"10350:0:9"},"scope":1247,"src":"10276:75:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"79a2c0ac","id":1175,"implemented":false,"kind":"function","modifiers":[],"name":"manualSetPoolCreator","nameLocation":"10366:20:9","nodeType":"FunctionDefinition","parameters":{"id":1173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1170,"mutability":"mutable","name":"pool","nameLocation":"10395:4:9","nodeType":"VariableDeclaration","scope":1175,"src":"10387:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1169,"name":"address","nodeType":"ElementaryTypeName","src":"10387:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1172,"mutability":"mutable","name":"newPoolCreator","nameLocation":"10409:14:9","nodeType":"VariableDeclaration","scope":1175,"src":"10401:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1171,"name":"address","nodeType":"ElementaryTypeName","src":"10401:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10386:38:9"},"returnParameters":{"id":1174,"nodeType":"ParameterList","parameters":[],"src":"10433:0:9"},"scope":1247,"src":"10357:77:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2cbbf198","id":1180,"implemented":false,"kind":"function","modifiers":[],"name":"ensureValidTradeAmount","nameLocation":"10449:22:9","nodeType":"FunctionDefinition","parameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"tradeAmount","nameLocation":"10480:11:9","nodeType":"VariableDeclaration","scope":1180,"src":"10472:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1176,"name":"uint256","nodeType":"ElementaryTypeName","src":"10472:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10471:21:9"},"returnParameters":{"id":1179,"nodeType":"ParameterList","parameters":[],"src":"10506:0:9"},"scope":1247,"src":"10440:67:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b4eb0bf9","id":1185,"implemented":false,"kind":"function","modifiers":[],"name":"ensureValidSwapAmount","nameLocation":"10522:21:9","nodeType":"FunctionDefinition","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"tradeAmount","nameLocation":"10552:11:9","nodeType":"VariableDeclaration","scope":1185,"src":"10544:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"10544:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10543:21:9"},"returnParameters":{"id":1184,"nodeType":"ParameterList","parameters":[],"src":"10578:0:9"},"scope":1247,"src":"10513:66:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a03b23ef","id":1192,"implemented":false,"kind":"function","modifiers":[],"name":"manualUpdateAggregateSwapFeePercentage","nameLocation":"10594:38:9","nodeType":"FunctionDefinition","parameters":{"id":1190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"pool","nameLocation":"10641:4:9","nodeType":"VariableDeclaration","scope":1192,"src":"10633:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1186,"name":"address","nodeType":"ElementaryTypeName","src":"10633:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1189,"mutability":"mutable","name":"newAggregateSwapFeePercentage","nameLocation":"10655:29:9","nodeType":"VariableDeclaration","scope":1192,"src":"10647:37:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1188,"name":"uint256","nodeType":"ElementaryTypeName","src":"10647:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10632:53:9"},"returnParameters":{"id":1191,"nodeType":"ParameterList","parameters":[],"src":"10694:0:9"},"scope":1247,"src":"10585:110:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"420f4a45","id":1201,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetAddLiquidityCalledFlagBySession","nameLocation":"10710:40:9","nodeType":"FunctionDefinition","parameters":{"id":1197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1194,"mutability":"mutable","name":"pool","nameLocation":"10759:4:9","nodeType":"VariableDeclaration","scope":1201,"src":"10751:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1193,"name":"address","nodeType":"ElementaryTypeName","src":"10751:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1196,"mutability":"mutable","name":"sessionId","nameLocation":"10773:9:9","nodeType":"VariableDeclaration","scope":1201,"src":"10765:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1195,"name":"uint256","nodeType":"ElementaryTypeName","src":"10765:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:33:9"},"returnParameters":{"id":1200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1199,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1201,"src":"10807:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1198,"name":"bool","nodeType":"ElementaryTypeName","src":"10807:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10806:6:9"},"scope":1247,"src":"10701:112:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"81e4b7e9","id":1206,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetCurrentUnlockSessionId","nameLocation":"10828:31:9","nodeType":"FunctionDefinition","parameters":{"id":1202,"nodeType":"ParameterList","parameters":[],"src":"10859:2:9"},"returnParameters":{"id":1205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1206,"src":"10885:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1203,"name":"uint256","nodeType":"ElementaryTypeName","src":"10885:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10884:9:9"},"scope":1247,"src":"10819:75:9","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b8f82b26","id":1216,"implemented":false,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"10909:14:9","nodeType":"FunctionDefinition","parameters":{"id":1212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1209,"mutability":"mutable","name":"wrapper","nameLocation":"10933:7:9","nodeType":"VariableDeclaration","scope":1216,"src":"10924:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1208,"nodeType":"UserDefinedTypeName","pathNode":{"id":1207,"name":"IERC4626","nameLocations":["10924:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"10924:8:9"},"referencedDeclaration":38998,"src":"10924:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1211,"mutability":"mutable","name":"amountInUnderlying","nameLocation":"10950:18:9","nodeType":"VariableDeclaration","scope":1216,"src":"10942:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1210,"name":"uint256","nodeType":"ElementaryTypeName","src":"10942:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10923:46:9"},"returnParameters":{"id":1215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1214,"mutability":"mutable","name":"amountOutWrapped","nameLocation":"10996:16:9","nodeType":"VariableDeclaration","scope":1216,"src":"10988:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1213,"name":"uint256","nodeType":"ElementaryTypeName","src":"10988:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10987:26:9"},"scope":1247,"src":"10900:114:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d1f810a5","id":1226,"implemented":false,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"11029:11:9","nodeType":"FunctionDefinition","parameters":{"id":1222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1219,"mutability":"mutable","name":"wrapper","nameLocation":"11050:7:9","nodeType":"VariableDeclaration","scope":1226,"src":"11041:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1218,"nodeType":"UserDefinedTypeName","pathNode":{"id":1217,"name":"IERC4626","nameLocations":["11041:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"11041:8:9"},"referencedDeclaration":38998,"src":"11041:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1221,"mutability":"mutable","name":"amountOutWrapped","nameLocation":"11067:16:9","nodeType":"VariableDeclaration","scope":1226,"src":"11059:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1220,"name":"uint256","nodeType":"ElementaryTypeName","src":"11059:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11040:44:9"},"returnParameters":{"id":1225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"amountInUnderlying","nameLocation":"11111:18:9","nodeType":"VariableDeclaration","scope":1226,"src":"11103:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1223,"name":"uint256","nodeType":"ElementaryTypeName","src":"11103:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11102:28:9"},"scope":1247,"src":"11020:111:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cbe52ae3","id":1236,"implemented":false,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"11146:13:9","nodeType":"FunctionDefinition","parameters":{"id":1232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1229,"mutability":"mutable","name":"wrapper","nameLocation":"11169:7:9","nodeType":"VariableDeclaration","scope":1236,"src":"11160:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1228,"nodeType":"UserDefinedTypeName","pathNode":{"id":1227,"name":"IERC4626","nameLocations":["11160:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"11160:8:9"},"referencedDeclaration":38998,"src":"11160:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1231,"mutability":"mutable","name":"amountInWrapped","nameLocation":"11186:15:9","nodeType":"VariableDeclaration","scope":1236,"src":"11178:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1230,"name":"uint256","nodeType":"ElementaryTypeName","src":"11178:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11159:43:9"},"returnParameters":{"id":1235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1234,"mutability":"mutable","name":"amountOutUnderlying","nameLocation":"11229:19:9","nodeType":"VariableDeclaration","scope":1236,"src":"11221:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1233,"name":"uint256","nodeType":"ElementaryTypeName","src":"11221:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11220:29:9"},"scope":1247,"src":"11137:113:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bbc6f1dc","id":1246,"implemented":false,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"11265:15:9","nodeType":"FunctionDefinition","parameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"wrapper","nameLocation":"11290:7:9","nodeType":"VariableDeclaration","scope":1246,"src":"11281:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1238,"nodeType":"UserDefinedTypeName","pathNode":{"id":1237,"name":"IERC4626","nameLocations":["11281:8:9"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"11281:8:9"},"referencedDeclaration":38998,"src":"11281:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"amountOutUnderlying","nameLocation":"11307:19:9","nodeType":"VariableDeclaration","scope":1246,"src":"11299:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1240,"name":"uint256","nodeType":"ElementaryTypeName","src":"11299:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:47:9"},"returnParameters":{"id":1245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"amountInWrapped","nameLocation":"11354:15:9","nodeType":"VariableDeclaration","scope":1246,"src":"11346:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"11346:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11345:25:9"},"scope":1247,"src":"11256:115:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1248,"src":"334:11039:9","usedErrors":[],"usedEvents":[]}],"src":"46:11328:9"},"id":9},"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol","exportedSymbols":{"IERC20Errors":[39065],"IVault":[2893],"IVaultAdminMock":[303],"IVaultExtensionMock":[360],"IVaultMainMock":[1247],"IVaultMock":[1275],"IVaultStorageMock":[1300]},"id":1276,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1249,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:10"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","id":1251,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1276,"sourceUnit":39161,"src":"72:85:10","symbolAliases":[{"foreign":{"id":1250,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39065,"src":"81:12:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol","file":"./IVaultExtensionMock.sol","id":1253,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1276,"sourceUnit":361,"src":"159:64:10","symbolAliases":[{"foreign":{"id":1252,"name":"IVaultExtensionMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"168:19:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol","file":"./IVaultStorageMock.sol","id":1255,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1276,"sourceUnit":1301,"src":"224:60:10","symbolAliases":[{"foreign":{"id":1254,"name":"IVaultStorageMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"233:17:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol","file":"./IVaultAdminMock.sol","id":1257,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1276,"sourceUnit":304,"src":"285:56:10","symbolAliases":[{"foreign":{"id":1256,"name":"IVaultAdminMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":303,"src":"294:15:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol","file":"./IVaultMainMock.sol","id":1259,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1276,"sourceUnit":1248,"src":"342:54:10","symbolAliases":[{"foreign":{"id":1258,"name":"IVaultMainMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"351:14:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":1261,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1276,"sourceUnit":2894,"src":"397:45:10","symbolAliases":[{"foreign":{"id":1260,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"406:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1263,"name":"IVault","nameLocations":["575:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"575:6:10"},"id":1264,"nodeType":"InheritanceSpecifier","src":"575:6:10"},{"baseName":{"id":1265,"name":"IVaultMainMock","nameLocations":["583:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":1247,"src":"583:14:10"},"id":1266,"nodeType":"InheritanceSpecifier","src":"583:14:10"},{"baseName":{"id":1267,"name":"IVaultExtensionMock","nameLocations":["599:19:10"],"nodeType":"IdentifierPath","referencedDeclaration":360,"src":"599:19:10"},"id":1268,"nodeType":"InheritanceSpecifier","src":"599:19:10"},{"baseName":{"id":1269,"name":"IVaultAdminMock","nameLocations":["620:15:10"],"nodeType":"IdentifierPath","referencedDeclaration":303,"src":"620:15:10"},"id":1270,"nodeType":"InheritanceSpecifier","src":"620:15:10"},{"baseName":{"id":1271,"name":"IVaultStorageMock","nameLocations":["637:17:10"],"nodeType":"IdentifierPath","referencedDeclaration":1300,"src":"637:17:10"},"id":1272,"nodeType":"InheritanceSpecifier","src":"637:17:10"},{"baseName":{"id":1273,"name":"IERC20Errors","nameLocations":["656:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":39065,"src":"656:12:10"},"id":1274,"nodeType":"InheritanceSpecifier","src":"656:12:10"}],"canonicalName":"IVaultMock","contractDependencies":[],"contractKind":"interface","documentation":{"id":1262,"nodeType":"StructuredDocumentation","src":"444:107:10","text":"@dev One-fits-all solution for hardhat tests. Use the typechain type for errors, events and functions."},"fullyImplemented":false,"id":1275,"linearizedBaseContracts":[1275,39065,1300,303,360,1247,2893,130,3789,3550,3183,4208,4344],"name":"IVaultMock","nameLocation":"561:10:10","nodeType":"ContractDefinition","nodes":[],"scope":1276,"src":"551:174:10","usedErrors":[121,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,39035,39040,39045,39054,39059,39064],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788]}],"src":"46:680:10"},"id":10},"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol","exportedSymbols":{"IVaultStorageMock":[1300],"StorageSlotExtension":[9911],"TokenDeltaMappingSlotType":[6484]},"id":1301,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1277,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:11"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","id":1279,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1301,"sourceUnit":9912,"src":"72:120:11","symbolAliases":[{"foreign":{"id":1278,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"81:20:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":1281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1301,"sourceUnit":7069,"src":"194:127:11","symbolAliases":[{"foreign":{"id":1280,"name":"TokenDeltaMappingSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"207:25:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultStorageMock","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1300,"linearizedBaseContracts":[1300],"name":"IVaultStorageMock","nameLocation":"333:17:11","nodeType":"ContractDefinition","nodes":[{"functionSelector":"b2469499","id":1287,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetIsUnlocked","nameLocation":"366:19:11","nodeType":"FunctionDefinition","parameters":{"id":1282,"nodeType":"ParameterList","parameters":[],"src":"385:2:11"},"returnParameters":{"id":1286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1285,"mutability":"mutable","name":"slot","nameLocation":"448:4:11","nodeType":"VariableDeclaration","scope":1287,"src":"411:41:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"},"typeName":{"id":1284,"nodeType":"UserDefinedTypeName","pathNode":{"id":1283,"name":"StorageSlotExtension.BooleanSlotType","nameLocations":["411:20:11","432:15:11"],"nodeType":"IdentifierPath","referencedDeclaration":9734,"src":"411:36:11"},"referencedDeclaration":9734,"src":"411:36:11","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"visibility":"internal"}],"src":"410:43:11"},"scope":1300,"src":"357:97:11","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"155075e6","id":1293,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetNonzeroDeltaCount","nameLocation":"469:26:11","nodeType":"FunctionDefinition","parameters":{"id":1288,"nodeType":"ParameterList","parameters":[],"src":"495:2:11"},"returnParameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1291,"mutability":"mutable","name":"slot","nameLocation":"558:4:11","nodeType":"VariableDeclaration","scope":1293,"src":"521:41:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":1290,"nodeType":"UserDefinedTypeName","pathNode":{"id":1289,"name":"StorageSlotExtension.Uint256SlotType","nameLocations":["521:20:11","542:15:11"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"521:36:11"},"referencedDeclaration":9768,"src":"521:36:11","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"520:43:11"},"scope":1300,"src":"460:104:11","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"1f4475c5","id":1299,"implemented":false,"kind":"function","modifiers":[],"name":"manualGetTokenDeltas","nameLocation":"579:20:11","nodeType":"FunctionDefinition","parameters":{"id":1294,"nodeType":"ParameterList","parameters":[],"src":"599:2:11"},"returnParameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"slot","nameLocation":"651:4:11","nodeType":"VariableDeclaration","scope":1299,"src":"625:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"},"typeName":{"id":1296,"nodeType":"UserDefinedTypeName","pathNode":{"id":1295,"name":"TokenDeltaMappingSlotType","nameLocations":["625:25:11"],"nodeType":"IdentifierPath","referencedDeclaration":6484,"src":"625:25:11"},"referencedDeclaration":6484,"src":"625:25:11","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"visibility":"internal"}],"src":"624:32:11"},"scope":1300,"src":"570:87:11","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":1301,"src":"323:336:11","usedErrors":[],"usedEvents":[]}],"src":"46:614:11"},"id":11},"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","exportedSymbols":{"IAuthorizer":[1316]},"id":1317,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1302,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IAuthorizer","contractDependencies":[],"contractKind":"interface","documentation":{"id":1303,"nodeType":"StructuredDocumentation","src":"72:56:12","text":"@notice Interface to the Vault's permission system."},"fullyImplemented":false,"id":1316,"linearizedBaseContracts":[1316],"name":"IAuthorizer","nameLocation":"138:11:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1304,"nodeType":"StructuredDocumentation","src":"156:354:12","text":" @notice Returns true if `account` can perform the action described by `actionId` in the contract `where`.\n @param actionId Identifier for the action to be performed\n @param account Account trying to perform the action\n @param where Target contract for the action\n @return success True if the action is permitted"},"functionSelector":"9be2a884","id":1315,"implemented":false,"kind":"function","modifiers":[],"name":"canPerform","nameLocation":"524:10:12","nodeType":"FunctionDefinition","parameters":{"id":1311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1306,"mutability":"mutable","name":"actionId","nameLocation":"543:8:12","nodeType":"VariableDeclaration","scope":1315,"src":"535:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"535:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1308,"mutability":"mutable","name":"account","nameLocation":"561:7:12","nodeType":"VariableDeclaration","scope":1315,"src":"553:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1307,"name":"address","nodeType":"ElementaryTypeName","src":"553:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1310,"mutability":"mutable","name":"where","nameLocation":"578:5:12","nodeType":"VariableDeclaration","scope":1315,"src":"570:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1309,"name":"address","nodeType":"ElementaryTypeName","src":"570:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"534:50:12"},"returnParameters":{"id":1314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1313,"mutability":"mutable","name":"success","nameLocation":"613:7:12","nodeType":"VariableDeclaration","scope":1315,"src":"608:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1312,"name":"bool","nodeType":"ElementaryTypeName","src":"608:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"607:14:12"},"scope":1316,"src":"515:107:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1317,"src":"128:496:12","usedErrors":[],"usedEvents":[]}],"src":"46:579:12"},"id":12},"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","exportedSymbols":{"IBasePool":[1366],"ISwapFeePercentageBounds":[2839],"IUnbalancedLiquidityInvariantRatioBounds":[2855],"PoolSwapParams":[4554],"Rounding":[4514],"SwapKind":[4517]},"id":1367,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1318,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:13"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol","file":"./IUnbalancedLiquidityInvariantRatioBounds.sol","id":1320,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1367,"sourceUnit":2856,"src":"72:106:13","symbolAliases":[{"foreign":{"id":1319,"name":"IUnbalancedLiquidityInvariantRatioBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"81:40:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol","file":"./ISwapFeePercentageBounds.sol","id":1322,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1367,"sourceUnit":2840,"src":"179:74:13","symbolAliases":[{"foreign":{"id":1321,"name":"ISwapFeePercentageBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"188:24:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":1326,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1367,"sourceUnit":4654,"src":"254:70:13","symbolAliases":[{"foreign":{"id":1323,"name":"PoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"263:14:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1324,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"279:8:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1325,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"289:8:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1328,"name":"ISwapFeePercentageBounds","nameLocations":["733:24:13"],"nodeType":"IdentifierPath","referencedDeclaration":2839,"src":"733:24:13"},"id":1329,"nodeType":"InheritanceSpecifier","src":"733:24:13"},{"baseName":{"id":1330,"name":"IUnbalancedLiquidityInvariantRatioBounds","nameLocations":["759:40:13"],"nodeType":"IdentifierPath","referencedDeclaration":2855,"src":"759:40:13"},"id":1331,"nodeType":"InheritanceSpecifier","src":"759:40:13"}],"canonicalName":"IBasePool","contractDependencies":[],"contractKind":"interface","documentation":{"id":1327,"nodeType":"StructuredDocumentation","src":"326:383:13","text":" @notice Base interface for a Balancer Pool.\n @dev All pool types should implement this interface. Note that it also requires implementation of:\n - `ISwapFeePercentageBounds` to specify the minimum and maximum swap fee percentages.\n - `IUnbalancedLiquidityInvariantRatioBounds` to specify how much the invariant can change during an unbalanced\n liquidity operation."},"fullyImplemented":false,"id":1366,"linearizedBaseContracts":[1366,2855,2839],"name":"IBasePool","nameLocation":"720:9:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1332,"nodeType":"StructuredDocumentation","src":"1014:1934:13","text":" @notice Computes the pool's invariant.\n @dev This function computes the invariant based on current balances (and potentially other pool state).\n The rounding direction must be respected for the Vault to round in the pool's favor when calling this function.\n If the invariant computation involves no precision loss (e.g. simple sum of balances), the same result can be\n returned for both rounding directions.\n You can think of the invariant as a measure of the \"value\" of the pool, which is related to the total liquidity\n (i.e., the \"BPT rate\" is `invariant` / `totalSupply`). Two critical properties must hold:\n 1) The invariant should not change due to a swap. In practice, it can *increase* due to swap fees, which\n effectively add liquidity after the swap - but it should never decrease.\n 2) The invariant must be \"linear\"; i.e., increasing the balances proportionally must increase the invariant in\n the same proportion: inv(a * n, b * n, c * n) = inv(a, b, c) * n\n Property #1 is required to prevent \"round trip\" paths that drain value from the pool (and all LP shareholders).\n Intuitively, an accurate pricing algorithm ensures the user gets an equal value of token out given token in, so\n the total value should not change.\n Property #2 is essential for the \"fungibility\" of LP shares. If it did not hold, then different users depositing\n the same total value would get a different number of LP shares. In that case, LP shares would not be\n interchangeable, as they must be in a fair DEX.\n @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n @param rounding Rounding direction to consider when computing the invariant\n @return invariant The calculated invariant of the pool, represented as a uint256"},"functionSelector":"984de9e8","id":1343,"implemented":false,"kind":"function","modifiers":[],"name":"computeInvariant","nameLocation":"2962:16:13","nodeType":"FunctionDefinition","parameters":{"id":1339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1335,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"3005:20:13","nodeType":"VariableDeclaration","scope":1343,"src":"2988:37:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1333,"name":"uint256","nodeType":"ElementaryTypeName","src":"2988:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1334,"nodeType":"ArrayTypeName","src":"2988:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1338,"mutability":"mutable","name":"rounding","nameLocation":"3044:8:13","nodeType":"VariableDeclaration","scope":1343,"src":"3035:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":1337,"nodeType":"UserDefinedTypeName","pathNode":{"id":1336,"name":"Rounding","nameLocations":["3035:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"3035:8:13"},"referencedDeclaration":4514,"src":"3035:8:13","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"2978:80:13"},"returnParameters":{"id":1342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1341,"mutability":"mutable","name":"invariant","nameLocation":"3090:9:13","nodeType":"VariableDeclaration","scope":1343,"src":"3082:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1340,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3081:19:13"},"scope":1366,"src":"2953:148:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1344,"nodeType":"StructuredDocumentation","src":"3107:725:13","text":" @notice Computes a new token balance, given the invariant growth ratio and all other balances.\n @dev Similar to V2's `_getTokenBalanceGivenInvariantAndAllOtherBalances` in StableMath.\n The pool must round up for the Vault to round in the protocol's favor when calling this function.\n @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n @param tokenInIndex The index of the token we're computing the balance for, sorted in token registration order\n @param invariantRatio The ratio of the new invariant (after an operation) to the old\n @return newBalance The new balance of the selected token, after the operation"},"functionSelector":"16a0b3e0","id":1356,"implemented":false,"kind":"function","modifiers":[],"name":"computeBalance","nameLocation":"3846:14:13","nodeType":"FunctionDefinition","parameters":{"id":1352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1347,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"3887:20:13","nodeType":"VariableDeclaration","scope":1356,"src":"3870:37:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1345,"name":"uint256","nodeType":"ElementaryTypeName","src":"3870:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1346,"nodeType":"ArrayTypeName","src":"3870:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1349,"mutability":"mutable","name":"tokenInIndex","nameLocation":"3925:12:13","nodeType":"VariableDeclaration","scope":1356,"src":"3917:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1348,"name":"uint256","nodeType":"ElementaryTypeName","src":"3917:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1351,"mutability":"mutable","name":"invariantRatio","nameLocation":"3955:14:13","nodeType":"VariableDeclaration","scope":1356,"src":"3947:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1350,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3860:115:13"},"returnParameters":{"id":1355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1354,"mutability":"mutable","name":"newBalance","nameLocation":"4007:10:13","nodeType":"VariableDeclaration","scope":1356,"src":"3999:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"3999:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3998:20:13"},"scope":1366,"src":"3837:182:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1357,"nodeType":"StructuredDocumentation","src":"4233:206:13","text":" @notice Execute a swap in the pool.\n @param params Swap parameters (see above for struct definition)\n @return amountCalculatedScaled18 Calculated amount for the swap operation"},"functionSelector":"72c98186","id":1365,"implemented":false,"kind":"function","modifiers":[],"name":"onSwap","nameLocation":"4453:6:13","nodeType":"FunctionDefinition","parameters":{"id":1361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1360,"mutability":"mutable","name":"params","nameLocation":"4484:6:13","nodeType":"VariableDeclaration","scope":1365,"src":"4460:30:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":1359,"nodeType":"UserDefinedTypeName","pathNode":{"id":1358,"name":"PoolSwapParams","nameLocations":["4460:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"4460:14:13"},"referencedDeclaration":4554,"src":"4460:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"4459:32:13"},"returnParameters":{"id":1364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1363,"mutability":"mutable","name":"amountCalculatedScaled18","nameLocation":"4518:24:13","nodeType":"VariableDeclaration","scope":1365,"src":"4510:32:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1362,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:34:13"},"scope":1366,"src":"4444:100:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1367,"src":"710:3836:13","usedErrors":[],"usedEvents":[]}],"src":"46:4501:13"},"id":13},"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol","exportedSymbols":{"IAuthentication":[130],"IBasePoolFactory":[1440]},"id":1441,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1368,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:14"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":1370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1441,"sourceUnit":131,"src":"72:80:14","symbolAliases":[{"foreign":{"id":1369,"name":"IAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"81:15:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1372,"name":"IAuthentication","nameLocations":["454:15:14"],"nodeType":"IdentifierPath","referencedDeclaration":130,"src":"454:15:14"},"id":1373,"nodeType":"InheritanceSpecifier","src":"454:15:14"}],"canonicalName":"IBasePoolFactory","contractDependencies":[],"contractKind":"interface","documentation":{"id":1371,"nodeType":"StructuredDocumentation","src":"154:269:14","text":" @notice Base interface for a Balancer Pool Factory.\n @dev All pool factories should be derived from `BasePoolFactory` to enable common behavior for all pool types\n (e.g., address prediction, tracking deployed pools, and governance-facilitated migration)."},"fullyImplemented":false,"id":1440,"linearizedBaseContracts":[1440,130],"name":"IBasePoolFactory","nameLocation":"434:16:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1374,"nodeType":"StructuredDocumentation","src":"476:94:14","text":" @notice A pool was deployed.\n @param pool The address of the new pool"},"eventSelector":"83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc","id":1378,"name":"PoolCreated","nameLocation":"581:11:14","nodeType":"EventDefinition","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1376,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"609:4:14","nodeType":"VariableDeclaration","scope":1378,"src":"593:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1375,"name":"address","nodeType":"ElementaryTypeName","src":"593:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"592:22:14"},"src":"575:40:14"},{"anonymous":false,"documentation":{"id":1379,"nodeType":"StructuredDocumentation","src":"621:51:14","text":"@notice The factory was disabled by governance."},"eventSelector":"432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d50","id":1381,"name":"FactoryDisabled","nameLocation":"683:15:14","nodeType":"EventDefinition","parameters":{"id":1380,"nodeType":"ParameterList","parameters":[],"src":"698:2:14"},"src":"677:24:14"},{"documentation":{"id":1382,"nodeType":"StructuredDocumentation","src":"707:67:14","text":"@notice Attempted pool creation after the factory was disabled."},"errorSelector":"75884cda","id":1384,"name":"Disabled","nameLocation":"785:8:14","nodeType":"ErrorDefinition","parameters":{"id":1383,"nodeType":"ParameterList","parameters":[],"src":"793:2:14"},"src":"779:17:14"},{"documentation":{"id":1385,"nodeType":"StructuredDocumentation","src":"802:67:14","text":"@notice A pool index is beyond the current bounds of the array."},"errorSelector":"4e23d035","id":1387,"name":"IndexOutOfBounds","nameLocation":"880:16:14","nodeType":"ErrorDefinition","parameters":{"id":1386,"nodeType":"ParameterList","parameters":[],"src":"896:2:14"},"src":"874:25:14"},{"documentation":{"id":1388,"nodeType":"StructuredDocumentation","src":"905:180:14","text":" @notice Check whether a pool was deployed by this factory.\n @param pool The pool to check\n @return success True if `pool` was created by this factory"},"functionSelector":"6634b753","id":1395,"implemented":false,"kind":"function","modifiers":[],"name":"isPoolFromFactory","nameLocation":"1099:17:14","nodeType":"FunctionDefinition","parameters":{"id":1391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1390,"mutability":"mutable","name":"pool","nameLocation":"1125:4:14","nodeType":"VariableDeclaration","scope":1395,"src":"1117:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1389,"name":"address","nodeType":"ElementaryTypeName","src":"1117:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1116:14:14"},"returnParameters":{"id":1394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1393,"mutability":"mutable","name":"success","nameLocation":"1159:7:14","nodeType":"VariableDeclaration","scope":1395,"src":"1154:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1392,"name":"bool","nodeType":"ElementaryTypeName","src":"1154:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1153:14:14"},"scope":1440,"src":"1090:78:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1396,"nodeType":"StructuredDocumentation","src":"1174:245:14","text":" @notice Return the total number of pools deployed by this factory.\n @dev This can then be used to \"paginate\" calls to `getPools` to control gas costs.\n @return poolCount The number of pools deployed by this factory"},"functionSelector":"8eec5d70","id":1401,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolCount","nameLocation":"1433:12:14","nodeType":"FunctionDefinition","parameters":{"id":1397,"nodeType":"ParameterList","parameters":[],"src":"1445:2:14"},"returnParameters":{"id":1400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1399,"mutability":"mutable","name":"poolCount","nameLocation":"1479:9:14","nodeType":"VariableDeclaration","scope":1401,"src":"1471:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1471:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1470:19:14"},"scope":1440,"src":"1424:66:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1402,"nodeType":"StructuredDocumentation","src":"1496:510:14","text":" @notice Return a subset of the list of pools deployed by this factory.\n @dev `start` must be a valid index, but if `count` exceeds the total length, it will not revert, but simply\n stop at the end and return fewer results than requested.\n @param start The index of the first pool to return\n @param count The maximum number of pools to return\n @return pools The list of pools deployed by this factory, starting at `start` and returning up to `count` pools"},"functionSelector":"53a72f7e","id":1412,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolsInRange","nameLocation":"2020:15:14","nodeType":"FunctionDefinition","parameters":{"id":1407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1404,"mutability":"mutable","name":"start","nameLocation":"2044:5:14","nodeType":"VariableDeclaration","scope":1412,"src":"2036:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1403,"name":"uint256","nodeType":"ElementaryTypeName","src":"2036:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1406,"mutability":"mutable","name":"count","nameLocation":"2059:5:14","nodeType":"VariableDeclaration","scope":1412,"src":"2051:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1405,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2035:30:14"},"returnParameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"pools","nameLocation":"2106:5:14","nodeType":"VariableDeclaration","scope":1412,"src":"2089:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1408,"name":"address","nodeType":"ElementaryTypeName","src":"2089:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1409,"nodeType":"ArrayTypeName","src":"2089:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2088:24:14"},"scope":1440,"src":"2011:102:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1413,"nodeType":"StructuredDocumentation","src":"2119:150:14","text":" @notice Return the complete list of pools deployed by this factory.\n @return pools The list of pools deployed by this factory"},"functionSelector":"673a2a1f","id":1419,"implemented":false,"kind":"function","modifiers":[],"name":"getPools","nameLocation":"2283:8:14","nodeType":"FunctionDefinition","parameters":{"id":1414,"nodeType":"ParameterList","parameters":[],"src":"2291:2:14"},"returnParameters":{"id":1418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1417,"mutability":"mutable","name":"pools","nameLocation":"2334:5:14","nodeType":"VariableDeclaration","scope":1419,"src":"2317:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1415,"name":"address","nodeType":"ElementaryTypeName","src":"2317:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1416,"nodeType":"ArrayTypeName","src":"2317:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2316:24:14"},"scope":1440,"src":"2274:67:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1420,"nodeType":"StructuredDocumentation","src":"2347:322:14","text":" @notice Return the address where a new pool will be deployed, based on the factory address and salt.\n @param constructorArgs The arguments used to create the pool\n @param salt The salt used to deploy the pool\n @return deploymentAddress The predicted address of the pool, given the salt"},"functionSelector":"44f6fec7","id":1429,"implemented":false,"kind":"function","modifiers":[],"name":"getDeploymentAddress","nameLocation":"2683:20:14","nodeType":"FunctionDefinition","parameters":{"id":1425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1422,"mutability":"mutable","name":"constructorArgs","nameLocation":"2726:15:14","nodeType":"VariableDeclaration","scope":1429,"src":"2713:28:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1421,"name":"bytes","nodeType":"ElementaryTypeName","src":"2713:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1424,"mutability":"mutable","name":"salt","nameLocation":"2759:4:14","nodeType":"VariableDeclaration","scope":1429,"src":"2751:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1423,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2751:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2703:66:14"},"returnParameters":{"id":1428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1427,"mutability":"mutable","name":"deploymentAddress","nameLocation":"2801:17:14","nodeType":"VariableDeclaration","scope":1429,"src":"2793:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1426,"name":"address","nodeType":"ElementaryTypeName","src":"2793:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2792:27:14"},"scope":1440,"src":"2674:146:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1430,"nodeType":"StructuredDocumentation","src":"2826:143:14","text":" @notice Check whether this factory has been disabled by governance.\n @return success True if this factory was disabled"},"functionSelector":"6c57f5a9","id":1435,"implemented":false,"kind":"function","modifiers":[],"name":"isDisabled","nameLocation":"2983:10:14","nodeType":"FunctionDefinition","parameters":{"id":1431,"nodeType":"ParameterList","parameters":[],"src":"2993:2:14"},"returnParameters":{"id":1434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1433,"mutability":"mutable","name":"success","nameLocation":"3024:7:14","nodeType":"VariableDeclaration","scope":1435,"src":"3019:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1432,"name":"bool","nodeType":"ElementaryTypeName","src":"3019:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3018:14:14"},"scope":1440,"src":"2974:59:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1436,"nodeType":"StructuredDocumentation","src":"3039:182:14","text":" @notice Disable the factory, preventing the creation of more pools.\n @dev Existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled."},"functionSelector":"2f2770db","id":1439,"implemented":false,"kind":"function","modifiers":[],"name":"disable","nameLocation":"3235:7:14","nodeType":"FunctionDefinition","parameters":{"id":1437,"nodeType":"ParameterList","parameters":[],"src":"3242:2:14"},"returnParameters":{"id":1438,"nodeType":"ParameterList","parameters":[],"src":"3253:0:14"},"scope":1440,"src":"3226:28:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1441,"src":"424:2832:14","usedErrors":[121,1384,1387],"usedEvents":[1378,1381]}],"src":"46:3211:14"},"id":14},"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol","exportedSymbols":{"AddLiquidityKind":[4589],"IBatchRouter":[1596],"IERC20":[39274],"RemoveLiquidityKind":[4610],"SwapKind":[4517]},"id":1597,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1442,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:15"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":1444,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1597,"sourceUnit":39275,"src":"72:72:15","symbolAliases":[{"foreign":{"id":1443,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":1448,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1597,"sourceUnit":4654,"src":"146:83:15","symbolAliases":[{"foreign":{"id":1445,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"155:16:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1446,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"173:19:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1447,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"194:8:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IBatchRouter","contractDependencies":[],"contractKind":"interface","documentation":{"id":1449,"nodeType":"StructuredDocumentation","src":"231:73:15","text":"@notice Interface for the `BatchRouter`, supporting multi-hop swaps."},"fullyImplemented":false,"id":1596,"linearizedBaseContracts":[1596],"name":"IBatchRouter","nameLocation":"314:12:15","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IBatchRouter.SwapPathStep","id":1457,"members":[{"constant":false,"id":1451,"mutability":"mutable","name":"pool","nameLocation":"579:4:15","nodeType":"VariableDeclaration","scope":1457,"src":"571:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1450,"name":"address","nodeType":"ElementaryTypeName","src":"571:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1454,"mutability":"mutable","name":"tokenOut","nameLocation":"600:8:15","nodeType":"VariableDeclaration","scope":1457,"src":"593:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1453,"nodeType":"UserDefinedTypeName","pathNode":{"id":1452,"name":"IERC20","nameLocations":["593:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"593:6:15"},"referencedDeclaration":39274,"src":"593:6:15","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"isBuffer","nameLocation":"742:8:15","nodeType":"VariableDeclaration","scope":1457,"src":"737:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1455,"name":"bool","nodeType":"ElementaryTypeName","src":"737:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"SwapPathStep","nameLocation":"548:12:15","nodeType":"StructDefinition","scope":1596,"src":"541:216:15","visibility":"public"},{"canonicalName":"IBatchRouter.SwapPathExactAmountIn","id":1469,"members":[{"constant":false,"id":1460,"mutability":"mutable","name":"tokenIn","nameLocation":"809:7:15","nodeType":"VariableDeclaration","scope":1469,"src":"802:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1459,"nodeType":"UserDefinedTypeName","pathNode":{"id":1458,"name":"IERC20","nameLocations":["802:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"802:6:15"},"referencedDeclaration":39274,"src":"802:6:15","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1464,"mutability":"mutable","name":"steps","nameLocation":"1002:5:15","nodeType":"VariableDeclaration","scope":1469,"src":"987:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep[]"},"typeName":{"baseType":{"id":1462,"nodeType":"UserDefinedTypeName","pathNode":{"id":1461,"name":"SwapPathStep","nameLocations":["987:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":1457,"src":"987:12:15"},"referencedDeclaration":1457,"src":"987:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep"}},"id":1463,"nodeType":"ArrayTypeName","src":"987:14:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep[]"}},"visibility":"internal"},{"constant":false,"id":1466,"mutability":"mutable","name":"exactAmountIn","nameLocation":"1025:13:15","nodeType":"VariableDeclaration","scope":1469,"src":"1017:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1465,"name":"uint256","nodeType":"ElementaryTypeName","src":"1017:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1468,"mutability":"mutable","name":"minAmountOut","nameLocation":"1056:12:15","nodeType":"VariableDeclaration","scope":1469,"src":"1048:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"1048:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SwapPathExactAmountIn","nameLocation":"770:21:15","nodeType":"StructDefinition","scope":1596,"src":"763:312:15","visibility":"public"},{"canonicalName":"IBatchRouter.SwapPathExactAmountOut","id":1481,"members":[{"constant":false,"id":1472,"mutability":"mutable","name":"tokenIn","nameLocation":"1128:7:15","nodeType":"VariableDeclaration","scope":1481,"src":"1121:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1471,"nodeType":"UserDefinedTypeName","pathNode":{"id":1470,"name":"IERC20","nameLocations":["1121:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1121:6:15"},"referencedDeclaration":39274,"src":"1121:6:15","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1476,"mutability":"mutable","name":"steps","nameLocation":"1334:5:15","nodeType":"VariableDeclaration","scope":1481,"src":"1319:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep[]"},"typeName":{"baseType":{"id":1474,"nodeType":"UserDefinedTypeName","pathNode":{"id":1473,"name":"SwapPathStep","nameLocations":["1319:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":1457,"src":"1319:12:15"},"referencedDeclaration":1457,"src":"1319:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep"}},"id":1475,"nodeType":"ArrayTypeName","src":"1319:14:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep[]"}},"visibility":"internal"},{"constant":false,"id":1478,"mutability":"mutable","name":"maxAmountIn","nameLocation":"1357:11:15","nodeType":"VariableDeclaration","scope":1481,"src":"1349:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1477,"name":"uint256","nodeType":"ElementaryTypeName","src":"1349:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1480,"mutability":"mutable","name":"exactAmountOut","nameLocation":"1386:14:15","nodeType":"VariableDeclaration","scope":1481,"src":"1378:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1479,"name":"uint256","nodeType":"ElementaryTypeName","src":"1378:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SwapPathExactAmountOut","nameLocation":"1088:22:15","nodeType":"StructDefinition","scope":1596,"src":"1081:326:15","visibility":"public"},{"canonicalName":"IBatchRouter.SwapExactInHookParams","id":1494,"members":[{"constant":false,"id":1483,"mutability":"mutable","name":"sender","nameLocation":"1460:6:15","nodeType":"VariableDeclaration","scope":1494,"src":"1452:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1482,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1487,"mutability":"mutable","name":"paths","nameLocation":"1500:5:15","nodeType":"VariableDeclaration","scope":1494,"src":"1476:29:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"},"typeName":{"baseType":{"id":1485,"nodeType":"UserDefinedTypeName","pathNode":{"id":1484,"name":"SwapPathExactAmountIn","nameLocations":["1476:21:15"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"1476:21:15"},"referencedDeclaration":1469,"src":"1476:21:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn"}},"id":1486,"nodeType":"ArrayTypeName","src":"1476:23:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"}},"visibility":"internal"},{"constant":false,"id":1489,"mutability":"mutable","name":"deadline","nameLocation":"1523:8:15","nodeType":"VariableDeclaration","scope":1494,"src":"1515:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1515:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1491,"mutability":"mutable","name":"wethIsEth","nameLocation":"1546:9:15","nodeType":"VariableDeclaration","scope":1494,"src":"1541:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1490,"name":"bool","nodeType":"ElementaryTypeName","src":"1541:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1493,"mutability":"mutable","name":"userData","nameLocation":"1571:8:15","nodeType":"VariableDeclaration","scope":1494,"src":"1565:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1492,"name":"bytes","nodeType":"ElementaryTypeName","src":"1565:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapExactInHookParams","nameLocation":"1420:21:15","nodeType":"StructDefinition","scope":1596,"src":"1413:173:15","visibility":"public"},{"canonicalName":"IBatchRouter.SwapExactOutHookParams","id":1507,"members":[{"constant":false,"id":1496,"mutability":"mutable","name":"sender","nameLocation":"1640:6:15","nodeType":"VariableDeclaration","scope":1507,"src":"1632:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1495,"name":"address","nodeType":"ElementaryTypeName","src":"1632:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1500,"mutability":"mutable","name":"paths","nameLocation":"1681:5:15","nodeType":"VariableDeclaration","scope":1507,"src":"1656:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"},"typeName":{"baseType":{"id":1498,"nodeType":"UserDefinedTypeName","pathNode":{"id":1497,"name":"SwapPathExactAmountOut","nameLocations":["1656:22:15"],"nodeType":"IdentifierPath","referencedDeclaration":1481,"src":"1656:22:15"},"referencedDeclaration":1481,"src":"1656:22:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut"}},"id":1499,"nodeType":"ArrayTypeName","src":"1656:24:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"}},"visibility":"internal"},{"constant":false,"id":1502,"mutability":"mutable","name":"deadline","nameLocation":"1704:8:15","nodeType":"VariableDeclaration","scope":1507,"src":"1696:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1696:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1504,"mutability":"mutable","name":"wethIsEth","nameLocation":"1727:9:15","nodeType":"VariableDeclaration","scope":1507,"src":"1722:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1503,"name":"bool","nodeType":"ElementaryTypeName","src":"1722:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1506,"mutability":"mutable","name":"userData","nameLocation":"1752:8:15","nodeType":"VariableDeclaration","scope":1507,"src":"1746:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1505,"name":"bytes","nodeType":"ElementaryTypeName","src":"1746:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapExactOutHookParams","nameLocation":"1599:22:15","nodeType":"StructDefinition","scope":1596,"src":"1592:175:15","visibility":"public"},{"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"1773:728:15","text":" @notice Executes a swap operation involving multiple paths (steps), specifying exact input token amounts.\n @param paths Swap paths from token in to token out, specifying exact amounts in\n @param deadline Deadline for the swap, after which it will revert\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data required for the swap\n @return pathAmountsOut Calculated amounts of output tokens corresponding to the last step of each given path\n @return tokensOut Output token addresses\n @return amountsOut Calculated amounts of output tokens, ordered by output token address"},"functionSelector":"286f580d","id":1530,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactIn","nameLocation":"2515:11:15","nodeType":"FunctionDefinition","parameters":{"id":1519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1512,"mutability":"mutable","name":"paths","nameLocation":"2567:5:15","nodeType":"VariableDeclaration","scope":1530,"src":"2536:36:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"},"typeName":{"baseType":{"id":1510,"nodeType":"UserDefinedTypeName","pathNode":{"id":1509,"name":"SwapPathExactAmountIn","nameLocations":["2536:21:15"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"2536:21:15"},"referencedDeclaration":1469,"src":"2536:21:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn"}},"id":1511,"nodeType":"ArrayTypeName","src":"2536:23:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"deadline","nameLocation":"2590:8:15","nodeType":"VariableDeclaration","scope":1530,"src":"2582:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1513,"name":"uint256","nodeType":"ElementaryTypeName","src":"2582:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1516,"mutability":"mutable","name":"wethIsEth","nameLocation":"2613:9:15","nodeType":"VariableDeclaration","scope":1530,"src":"2608:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1515,"name":"bool","nodeType":"ElementaryTypeName","src":"2608:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"userData","nameLocation":"2647:8:15","nodeType":"VariableDeclaration","scope":1530,"src":"2632:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1517,"name":"bytes","nodeType":"ElementaryTypeName","src":"2632:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2526:135:15"},"returnParameters":{"id":1529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1522,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"2729:14:15","nodeType":"VariableDeclaration","scope":1530,"src":"2712:31:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1520,"name":"uint256","nodeType":"ElementaryTypeName","src":"2712:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1521,"nodeType":"ArrayTypeName","src":"2712:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"tokensOut","nameLocation":"2762:9:15","nodeType":"VariableDeclaration","scope":1530,"src":"2745:26:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1523,"name":"address","nodeType":"ElementaryTypeName","src":"2745:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1524,"nodeType":"ArrayTypeName","src":"2745:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1528,"mutability":"mutable","name":"amountsOut","nameLocation":"2790:10:15","nodeType":"VariableDeclaration","scope":1530,"src":"2773:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2773:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1527,"nodeType":"ArrayTypeName","src":"2773:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2711:90:15"},"scope":1596,"src":"2506:296:15","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1531,"nodeType":"StructuredDocumentation","src":"2808:696:15","text":" @notice Executes a swap operation involving multiple paths (steps), specifying exact output token amounts.\n @param paths Swap paths from token in to token out, specifying exact amounts out\n @param deadline Deadline for the swap\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data required for the swap\n @return pathAmountsIn Calculated amounts of input tokens corresponding to the first step of each given path\n @return tokensIn Input token addresses\n @return amountsIn Calculated amounts of input tokens, ordered by input token address"},"functionSelector":"8eb1b65e","id":1553,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactOut","nameLocation":"3518:12:15","nodeType":"FunctionDefinition","parameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1535,"mutability":"mutable","name":"paths","nameLocation":"3572:5:15","nodeType":"VariableDeclaration","scope":1553,"src":"3540:37:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"},"typeName":{"baseType":{"id":1533,"nodeType":"UserDefinedTypeName","pathNode":{"id":1532,"name":"SwapPathExactAmountOut","nameLocations":["3540:22:15"],"nodeType":"IdentifierPath","referencedDeclaration":1481,"src":"3540:22:15"},"referencedDeclaration":1481,"src":"3540:22:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut"}},"id":1534,"nodeType":"ArrayTypeName","src":"3540:24:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"}},"visibility":"internal"},{"constant":false,"id":1537,"mutability":"mutable","name":"deadline","nameLocation":"3595:8:15","nodeType":"VariableDeclaration","scope":1553,"src":"3587:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3587:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1539,"mutability":"mutable","name":"wethIsEth","nameLocation":"3618:9:15","nodeType":"VariableDeclaration","scope":1553,"src":"3613:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1538,"name":"bool","nodeType":"ElementaryTypeName","src":"3613:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1541,"mutability":"mutable","name":"userData","nameLocation":"3652:8:15","nodeType":"VariableDeclaration","scope":1553,"src":"3637:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1540,"name":"bytes","nodeType":"ElementaryTypeName","src":"3637:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3530:136:15"},"returnParameters":{"id":1552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1545,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"3710:13:15","nodeType":"VariableDeclaration","scope":1553,"src":"3693:30:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1543,"name":"uint256","nodeType":"ElementaryTypeName","src":"3693:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1544,"nodeType":"ArrayTypeName","src":"3693:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1548,"mutability":"mutable","name":"tokensIn","nameLocation":"3742:8:15","nodeType":"VariableDeclaration","scope":1553,"src":"3725:25:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1546,"name":"address","nodeType":"ElementaryTypeName","src":"3725:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1547,"nodeType":"ArrayTypeName","src":"3725:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1551,"mutability":"mutable","name":"amountsIn","nameLocation":"3769:9:15","nodeType":"VariableDeclaration","scope":1553,"src":"3752:26:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1549,"name":"uint256","nodeType":"ElementaryTypeName","src":"3752:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1550,"nodeType":"ArrayTypeName","src":"3752:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3692:87:15"},"scope":1596,"src":"3509:271:15","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1554,"nodeType":"StructuredDocumentation","src":"3994:737:15","text":" @notice Queries a swap operation involving multiple paths (steps), specifying exact input token amounts.\n @dev Min amounts out specified in the paths are ignored.\n @param paths Swap paths from token in to token out, specifying exact amounts in\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data required for the query\n @return pathAmountsOut Calculated amounts of output tokens corresponding to the last step of each given path\n @return tokensOut Output token addresses\n @return amountsOut Calculated amounts of output tokens to be received, ordered by output token address"},"functionSelector":"e3b5dff4","id":1574,"implemented":false,"kind":"function","modifiers":[],"name":"querySwapExactIn","nameLocation":"4745:16:15","nodeType":"FunctionDefinition","parameters":{"id":1563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"paths","nameLocation":"4802:5:15","nodeType":"VariableDeclaration","scope":1574,"src":"4771:36:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"},"typeName":{"baseType":{"id":1556,"nodeType":"UserDefinedTypeName","pathNode":{"id":1555,"name":"SwapPathExactAmountIn","nameLocations":["4771:21:15"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"4771:21:15"},"referencedDeclaration":1469,"src":"4771:21:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn"}},"id":1557,"nodeType":"ArrayTypeName","src":"4771:23:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"sender","nameLocation":"4825:6:15","nodeType":"VariableDeclaration","scope":1574,"src":"4817:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1559,"name":"address","nodeType":"ElementaryTypeName","src":"4817:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1562,"mutability":"mutable","name":"userData","nameLocation":"4856:8:15","nodeType":"VariableDeclaration","scope":1574,"src":"4841:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1561,"name":"bytes","nodeType":"ElementaryTypeName","src":"4841:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4761:109:15"},"returnParameters":{"id":1573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"4906:14:15","nodeType":"VariableDeclaration","scope":1574,"src":"4889:31:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1564,"name":"uint256","nodeType":"ElementaryTypeName","src":"4889:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1565,"nodeType":"ArrayTypeName","src":"4889:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1569,"mutability":"mutable","name":"tokensOut","nameLocation":"4939:9:15","nodeType":"VariableDeclaration","scope":1574,"src":"4922:26:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1567,"name":"address","nodeType":"ElementaryTypeName","src":"4922:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1568,"nodeType":"ArrayTypeName","src":"4922:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1572,"mutability":"mutable","name":"amountsOut","nameLocation":"4967:10:15","nodeType":"VariableDeclaration","scope":1574,"src":"4950:27:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1570,"name":"uint256","nodeType":"ElementaryTypeName","src":"4950:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1571,"nodeType":"ArrayTypeName","src":"4950:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4888:90:15"},"scope":1596,"src":"4736:243:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1575,"nodeType":"StructuredDocumentation","src":"4985:731:15","text":" @notice Queries a swap operation involving multiple paths (steps), specifying exact output token amounts.\n @dev Max amounts in specified in the paths are ignored.\n @param paths Swap paths from token in to token out, specifying exact amounts out\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data required for the query\n @return pathAmountsIn Calculated amounts of input tokens corresponding to the last step of each given path\n @return tokensIn Input token addresses\n @return amountsIn Calculated amounts of input tokens to be received, ordered by input token address"},"functionSelector":"2950286e","id":1595,"implemented":false,"kind":"function","modifiers":[],"name":"querySwapExactOut","nameLocation":"5730:17:15","nodeType":"FunctionDefinition","parameters":{"id":1584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1579,"mutability":"mutable","name":"paths","nameLocation":"5789:5:15","nodeType":"VariableDeclaration","scope":1595,"src":"5757:37:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"},"typeName":{"baseType":{"id":1577,"nodeType":"UserDefinedTypeName","pathNode":{"id":1576,"name":"SwapPathExactAmountOut","nameLocations":["5757:22:15"],"nodeType":"IdentifierPath","referencedDeclaration":1481,"src":"5757:22:15"},"referencedDeclaration":1481,"src":"5757:22:15","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut"}},"id":1578,"nodeType":"ArrayTypeName","src":"5757:24:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"sender","nameLocation":"5812:6:15","nodeType":"VariableDeclaration","scope":1595,"src":"5804:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1580,"name":"address","nodeType":"ElementaryTypeName","src":"5804:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1583,"mutability":"mutable","name":"userData","nameLocation":"5843:8:15","nodeType":"VariableDeclaration","scope":1595,"src":"5828:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1582,"name":"bytes","nodeType":"ElementaryTypeName","src":"5828:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5747:110:15"},"returnParameters":{"id":1594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1587,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"5893:13:15","nodeType":"VariableDeclaration","scope":1595,"src":"5876:30:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1585,"name":"uint256","nodeType":"ElementaryTypeName","src":"5876:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1586,"nodeType":"ArrayTypeName","src":"5876:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1590,"mutability":"mutable","name":"tokensIn","nameLocation":"5925:8:15","nodeType":"VariableDeclaration","scope":1595,"src":"5908:25:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1588,"name":"address","nodeType":"ElementaryTypeName","src":"5908:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1589,"nodeType":"ArrayTypeName","src":"5908:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1593,"mutability":"mutable","name":"amountsIn","nameLocation":"5952:9:15","nodeType":"VariableDeclaration","scope":1595,"src":"5935:26:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1591,"name":"uint256","nodeType":"ElementaryTypeName","src":"5935:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1592,"nodeType":"ArrayTypeName","src":"5935:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5875:87:15"},"scope":1596,"src":"5721:242:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1597,"src":"304:5661:15","usedErrors":[],"usedEvents":[]}],"src":"46:5920:15"},"id":15},"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol","exportedSymbols":{"AddLiquidityKind":[4589],"IBufferRouter":[1677],"IERC4626":[38998],"RemoveLiquidityKind":[4610],"SwapKind":[4517]},"id":1678,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1598,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:16"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":1600,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1678,"sourceUnit":38999,"src":"72:75:16","symbolAliases":[{"foreign":{"id":1599,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":1604,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1678,"sourceUnit":4654,"src":"149:83:16","symbolAliases":[{"foreign":{"id":1601,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"158:16:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1602,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"176:19:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1603,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"197:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IBufferRouter","contractDependencies":[],"contractKind":"interface","documentation":{"id":1605,"nodeType":"StructuredDocumentation","src":"234:84:16","text":"@notice User-friendly interface for Buffer liquidity operations with the Vault."},"fullyImplemented":false,"id":1677,"linearizedBaseContracts":[1677],"name":"IBufferRouter","nameLocation":"328:13:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1606,"nodeType":"StructuredDocumentation","src":"569:1109:16","text":" @notice Adds liquidity for the first time to an internal ERC4626 buffer in the Vault.\n @dev Calling this method binds the wrapped token to its underlying asset internally; the asset in the wrapper\n cannot change afterwards, or every other operation on that wrapper (add / remove / wrap / unwrap) will fail.\n To avoid unexpected behavior, always initialize buffers before creating or initializing any pools that contain\n the wrapped tokens to be used with them.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param exactAmountUnderlyingIn Amount of underlying tokens that will be deposited into the buffer\n @param exactAmountWrappedIn Amount of wrapped tokens that will be deposited into the buffer\n @param minIssuedShares Minimum amount of shares to receive from the buffer, expressed in underlying token\n native decimals\n @return issuedShares the amount of tokens sharesOwner has in the buffer, denominated in underlying tokens\n (This is the BPT of the Vault's internal ERC4626 buffer.)"},"functionSelector":"b365a3c2","id":1620,"implemented":false,"kind":"function","modifiers":[],"name":"initializeBuffer","nameLocation":"1692:16:16","nodeType":"FunctionDefinition","parameters":{"id":1616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1609,"mutability":"mutable","name":"wrappedToken","nameLocation":"1727:12:16","nodeType":"VariableDeclaration","scope":1620,"src":"1718:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1608,"nodeType":"UserDefinedTypeName","pathNode":{"id":1607,"name":"IERC4626","nameLocations":["1718:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1718:8:16"},"referencedDeclaration":38998,"src":"1718:8:16","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1611,"mutability":"mutable","name":"exactAmountUnderlyingIn","nameLocation":"1757:23:16","nodeType":"VariableDeclaration","scope":1620,"src":"1749:31:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1610,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1613,"mutability":"mutable","name":"exactAmountWrappedIn","nameLocation":"1798:20:16","nodeType":"VariableDeclaration","scope":1620,"src":"1790:28:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1612,"name":"uint256","nodeType":"ElementaryTypeName","src":"1790:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1615,"mutability":"mutable","name":"minIssuedShares","nameLocation":"1836:15:16","nodeType":"VariableDeclaration","scope":1620,"src":"1828:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1614,"name":"uint256","nodeType":"ElementaryTypeName","src":"1828:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:149:16"},"returnParameters":{"id":1619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1618,"mutability":"mutable","name":"issuedShares","nameLocation":"1884:12:16","nodeType":"VariableDeclaration","scope":1620,"src":"1876:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1875:22:16"},"scope":1677,"src":"1683:215:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1621,"nodeType":"StructuredDocumentation","src":"1904:1064:16","text":" @notice Adds liquidity proportionally to an internal ERC4626 buffer in the Vault.\n @dev Requires the buffer to be initialized beforehand. Restricting adds to proportional simplifies the Vault\n code, avoiding rounding issues and minimum amount checks. It is possible to add unbalanced by interacting\n with the wrapper contract directly.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param maxAmountUnderlyingIn Maximum amount of underlying tokens to add to the buffer. It is expressed in\n underlying token native decimals\n @param maxAmountWrappedIn Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped\n token native decimals\n @param exactSharesToIssue The amount of shares that `sharesOwner` wants to add to the buffer, in underlying\n token decimals\n @return amountUnderlyingIn Amount of underlying tokens deposited into the buffer\n @return amountWrappedIn Amount of wrapped tokens deposited into the buffer"},"functionSelector":"502383f4","id":1637,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityToBuffer","nameLocation":"2982:20:16","nodeType":"FunctionDefinition","parameters":{"id":1631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1624,"mutability":"mutable","name":"wrappedToken","nameLocation":"3021:12:16","nodeType":"VariableDeclaration","scope":1637,"src":"3012:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1623,"nodeType":"UserDefinedTypeName","pathNode":{"id":1622,"name":"IERC4626","nameLocations":["3012:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"3012:8:16"},"referencedDeclaration":38998,"src":"3012:8:16","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1626,"mutability":"mutable","name":"maxAmountUnderlyingIn","nameLocation":"3051:21:16","nodeType":"VariableDeclaration","scope":1637,"src":"3043:29:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1625,"name":"uint256","nodeType":"ElementaryTypeName","src":"3043:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1628,"mutability":"mutable","name":"maxAmountWrappedIn","nameLocation":"3090:18:16","nodeType":"VariableDeclaration","scope":1637,"src":"3082:26:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1630,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"3126:18:16","nodeType":"VariableDeclaration","scope":1637,"src":"3118:26:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1629,"name":"uint256","nodeType":"ElementaryTypeName","src":"3118:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3002:148:16"},"returnParameters":{"id":1636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1633,"mutability":"mutable","name":"amountUnderlyingIn","nameLocation":"3177:18:16","nodeType":"VariableDeclaration","scope":1637,"src":"3169:26:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1632,"name":"uint256","nodeType":"ElementaryTypeName","src":"3169:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1635,"mutability":"mutable","name":"amountWrappedIn","nameLocation":"3205:15:16","nodeType":"VariableDeclaration","scope":1637,"src":"3197:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1634,"name":"uint256","nodeType":"ElementaryTypeName","src":"3197:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3168:53:16"},"scope":1677,"src":"2973:249:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1638,"nodeType":"StructuredDocumentation","src":"3228:504:16","text":" @notice Queries an `initializeBuffer` operation without actually executing it.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param exactAmountUnderlyingIn Amount of underlying tokens that the sender wishes to deposit into the buffer\n @param exactAmountWrappedIn Amount of wrapped tokens that the sender wishes to deposit into the buffer\n @return issuedShares The amount of shares that would be minted, in underlying token decimals"},"functionSelector":"e0fefe35","id":1650,"implemented":false,"kind":"function","modifiers":[],"name":"queryInitializeBuffer","nameLocation":"3746:21:16","nodeType":"FunctionDefinition","parameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1641,"mutability":"mutable","name":"wrappedToken","nameLocation":"3786:12:16","nodeType":"VariableDeclaration","scope":1650,"src":"3777:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1640,"nodeType":"UserDefinedTypeName","pathNode":{"id":1639,"name":"IERC4626","nameLocations":["3777:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"3777:8:16"},"referencedDeclaration":38998,"src":"3777:8:16","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1643,"mutability":"mutable","name":"exactAmountUnderlyingIn","nameLocation":"3816:23:16","nodeType":"VariableDeclaration","scope":1650,"src":"3808:31:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1642,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"exactAmountWrappedIn","nameLocation":"3857:20:16","nodeType":"VariableDeclaration","scope":1650,"src":"3849:28:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1644,"name":"uint256","nodeType":"ElementaryTypeName","src":"3849:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3767:116:16"},"returnParameters":{"id":1649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1648,"mutability":"mutable","name":"issuedShares","nameLocation":"3910:12:16","nodeType":"VariableDeclaration","scope":1650,"src":"3902:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1647,"name":"uint256","nodeType":"ElementaryTypeName","src":"3902:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3901:22:16"},"scope":1677,"src":"3737:187:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1651,"nodeType":"StructuredDocumentation","src":"3930:485:16","text":" @notice Queries an `addLiquidityToBuffer` operation without actually executing it.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param exactSharesToIssue The amount of shares that would be minted, in underlying token decimals\n @return amountUnderlyingIn Amount of underlying tokens that would be deposited into the buffer\n @return amountWrappedIn Amount of wrapped tokens that would be deposited into the buffer"},"functionSelector":"662727cc","id":1663,"implemented":false,"kind":"function","modifiers":[],"name":"queryAddLiquidityToBuffer","nameLocation":"4429:25:16","nodeType":"FunctionDefinition","parameters":{"id":1657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1654,"mutability":"mutable","name":"wrappedToken","nameLocation":"4473:12:16","nodeType":"VariableDeclaration","scope":1663,"src":"4464:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1653,"nodeType":"UserDefinedTypeName","pathNode":{"id":1652,"name":"IERC4626","nameLocations":["4464:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"4464:8:16"},"referencedDeclaration":38998,"src":"4464:8:16","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1656,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"4503:18:16","nodeType":"VariableDeclaration","scope":1663,"src":"4495:26:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1655,"name":"uint256","nodeType":"ElementaryTypeName","src":"4495:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4454:73:16"},"returnParameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"amountUnderlyingIn","nameLocation":"4554:18:16","nodeType":"VariableDeclaration","scope":1663,"src":"4546:26:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1658,"name":"uint256","nodeType":"ElementaryTypeName","src":"4546:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1661,"mutability":"mutable","name":"amountWrappedIn","nameLocation":"4582:15:16","nodeType":"VariableDeclaration","scope":1663,"src":"4574:23:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1660,"name":"uint256","nodeType":"ElementaryTypeName","src":"4574:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4545:53:16"},"scope":1677,"src":"4420:179:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1664,"nodeType":"StructuredDocumentation","src":"4605:505:16","text":" @notice Queries an `removeLiquidityFromBuffer` operation without actually executing it.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param exactSharesToRemove The amount of shares that would be burned, in underlying token decimals\n @return removedUnderlyingBalanceOut Amount of underlying tokens that would be removed from the buffer\n @return removedWrappedBalanceOut Amount of wrapped tokens that would be removed from the buffer"},"functionSelector":"13f7bb4d","id":1676,"implemented":false,"kind":"function","modifiers":[],"name":"queryRemoveLiquidityFromBuffer","nameLocation":"5124:30:16","nodeType":"FunctionDefinition","parameters":{"id":1670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1667,"mutability":"mutable","name":"wrappedToken","nameLocation":"5173:12:16","nodeType":"VariableDeclaration","scope":1676,"src":"5164:21:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":1666,"nodeType":"UserDefinedTypeName","pathNode":{"id":1665,"name":"IERC4626","nameLocations":["5164:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"5164:8:16"},"referencedDeclaration":38998,"src":"5164:8:16","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":1669,"mutability":"mutable","name":"exactSharesToRemove","nameLocation":"5203:19:16","nodeType":"VariableDeclaration","scope":1676,"src":"5195:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1668,"name":"uint256","nodeType":"ElementaryTypeName","src":"5195:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5154:74:16"},"returnParameters":{"id":1675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1672,"mutability":"mutable","name":"removedUnderlyingBalanceOut","nameLocation":"5255:27:16","nodeType":"VariableDeclaration","scope":1676,"src":"5247:35:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1671,"name":"uint256","nodeType":"ElementaryTypeName","src":"5247:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1674,"mutability":"mutable","name":"removedWrappedBalanceOut","nameLocation":"5292:24:16","nodeType":"VariableDeclaration","scope":1676,"src":"5284:32:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1673,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5246:71:16"},"scope":1677,"src":"5115:203:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1678,"src":"318:5002:16","usedErrors":[],"usedEvents":[]}],"src":"46:5275:16"},"id":16},"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol","exportedSymbols":{"IERC20MultiTokenErrors":[1685]},"id":1686,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1679,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20MultiTokenErrors","contractDependencies":[],"contractKind":"interface","fullyImplemented":true,"id":1685,"linearizedBaseContracts":[1685],"name":"IERC20MultiTokenErrors","nameLocation":"82:22:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1680,"nodeType":"StructuredDocumentation","src":"111:177:17","text":" @notice The total supply of a pool token can't be lower than the absolute minimum.\n @param totalSupply The total supply value that was below the minimum"},"errorSelector":"d38d20fc","id":1684,"name":"PoolTotalSupplyTooLow","nameLocation":"299:21:17","nodeType":"ErrorDefinition","parameters":{"id":1683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1682,"mutability":"mutable","name":"totalSupply","nameLocation":"329:11:17","nodeType":"VariableDeclaration","scope":1684,"src":"321:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1681,"name":"uint256","nodeType":"ElementaryTypeName","src":"321:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"320:21:17"},"src":"293:49:17"}],"scope":1686,"src":"72:272:17","usedErrors":[1684],"usedEvents":[]}],"src":"46:299:17"},"id":17},"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AfterSwapParams":[4583],"HookFlags":[4409],"IHooks":[1887],"LiquidityManagement":[4362],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"SwapKind":[4517],"TokenConfig":[4476]},"id":1888,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1687,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:18"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":1696,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1888,"sourceUnit":4654,"src":"289:193:18","symbolAliases":[{"foreign":{"id":1688,"name":"TokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4476,"src":"302:11:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1689,"name":"LiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"319:19:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1690,"name":"PoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"344:14:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1691,"name":"AfterSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"364:15:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1692,"name":"HookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"385:9:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1693,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"400:16:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1694,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"422:19:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1695,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"447:8:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IHooks","contractDependencies":[],"contractKind":"interface","documentation":{"id":1697,"nodeType":"StructuredDocumentation","src":"484:490:18","text":" @notice Interface for pool hooks.\n @dev Hooks are functions invoked by the Vault at specific points in the flow of each operation. This guarantees that\n they are called in the correct order, and with the correct arguments. To maintain this security, these functions\n should only be called by the Vault. The recommended way to do this is to derive the hook contract from `BaseHooks`,\n then use the `onlyVault` modifier from `VaultGuard`. (See the examples in /pool-hooks.)"},"fullyImplemented":false,"id":1887,"linearizedBaseContracts":[1887],"name":"IHooks","nameLocation":"985:6:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1698,"nodeType":"StructuredDocumentation","src":"1205:769:18","text":" @notice Hook executed when a pool is registered with a non-zero hooks contract.\n @dev Returns true if registration was successful, and false to revert the pool registration.\n Make sure this function is properly implemented (e.g. check the factory, and check that the\n given pool is from the factory). The Vault address will be msg.sender.\n @param factory Address of the pool factory (contract deploying the pool)\n @param pool Address of the pool\n @param tokenConfig An array of descriptors for the tokens the pool will manage\n @param liquidityManagement Liquidity management flags indicating which functions are enabled\n @return success True if the hook allowed the registration, false otherwise"},"functionSelector":"0b89f182","id":1714,"implemented":false,"kind":"function","modifiers":[],"name":"onRegister","nameLocation":"1988:10:18","nodeType":"FunctionDefinition","parameters":{"id":1710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1700,"mutability":"mutable","name":"factory","nameLocation":"2016:7:18","nodeType":"VariableDeclaration","scope":1714,"src":"2008:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1699,"name":"address","nodeType":"ElementaryTypeName","src":"2008:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1702,"mutability":"mutable","name":"pool","nameLocation":"2041:4:18","nodeType":"VariableDeclaration","scope":1714,"src":"2033:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1701,"name":"address","nodeType":"ElementaryTypeName","src":"2033:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1706,"mutability":"mutable","name":"tokenConfig","nameLocation":"2076:11:18","nodeType":"VariableDeclaration","scope":1714,"src":"2055:32:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":1704,"nodeType":"UserDefinedTypeName","pathNode":{"id":1703,"name":"TokenConfig","nameLocations":["2055:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"2055:11:18"},"referencedDeclaration":4476,"src":"2055:11:18","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":1705,"nodeType":"ArrayTypeName","src":"2055:13:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"liquidityManagement","nameLocation":"2126:19:18","nodeType":"VariableDeclaration","scope":1714,"src":"2097:48:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":1708,"nodeType":"UserDefinedTypeName","pathNode":{"id":1707,"name":"LiquidityManagement","nameLocations":["2097:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"2097:19:18"},"referencedDeclaration":4362,"src":"2097:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"1998:153:18"},"returnParameters":{"id":1713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1712,"mutability":"mutable","name":"success","nameLocation":"2175:7:18","nodeType":"VariableDeclaration","scope":1714,"src":"2170:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1711,"name":"bool","nodeType":"ElementaryTypeName","src":"2170:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2169:14:18"},"scope":1887,"src":"1979:205:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1715,"nodeType":"StructuredDocumentation","src":"2190:412:18","text":" @notice Return the set of hooks implemented by the contract.\n @dev The Vault will only call hooks the pool says it supports, and of course only if a hooks contract is defined\n (i.e., the `poolHooksContract` in `PoolRegistrationParams` is non-zero).\n `onRegister` is the only \"mandatory\" hook.\n @return hookFlags Flags indicating which hooks the contract supports"},"functionSelector":"d77153a7","id":1721,"implemented":false,"kind":"function","modifiers":[],"name":"getHookFlags","nameLocation":"2616:12:18","nodeType":"FunctionDefinition","parameters":{"id":1716,"nodeType":"ParameterList","parameters":[],"src":"2628:2:18"},"returnParameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"hookFlags","nameLocation":"2671:9:18","nodeType":"VariableDeclaration","scope":1721,"src":"2654:26:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags"},"typeName":{"id":1718,"nodeType":"UserDefinedTypeName","pathNode":{"id":1717,"name":"HookFlags","nameLocations":["2654:9:18"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"2654:9:18"},"referencedDeclaration":4409,"src":"2654:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage_ptr","typeString":"struct HookFlags"}},"visibility":"internal"}],"src":"2653:28:18"},"scope":1887,"src":"2607:75:18","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1722,"nodeType":"StructuredDocumentation","src":"2897:484:18","text":" @notice Hook executed before pool initialization.\n @dev Called if the `shouldCallBeforeInitialize` flag is set in the configuration. Hook contracts should use\n the `onlyVault` modifier to guarantee this is only called by the Vault.\n @param exactAmountsIn Exact amounts of input tokens\n @param userData Optional, arbitrary data sent with the encoded request\n @return success True if the pool wishes to proceed with initialization"},"functionSelector":"1c149e28","id":1732,"implemented":false,"kind":"function","modifiers":[],"name":"onBeforeInitialize","nameLocation":"3395:18:18","nodeType":"FunctionDefinition","parameters":{"id":1728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1725,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"3431:14:18","nodeType":"VariableDeclaration","scope":1732,"src":"3414:31:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1723,"name":"uint256","nodeType":"ElementaryTypeName","src":"3414:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1724,"nodeType":"ArrayTypeName","src":"3414:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1727,"mutability":"mutable","name":"userData","nameLocation":"3460:8:18","nodeType":"VariableDeclaration","scope":1732,"src":"3447:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1726,"name":"bytes","nodeType":"ElementaryTypeName","src":"3447:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3413:56:18"},"returnParameters":{"id":1731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1730,"mutability":"mutable","name":"success","nameLocation":"3493:7:18","nodeType":"VariableDeclaration","scope":1732,"src":"3488:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1729,"name":"bool","nodeType":"ElementaryTypeName","src":"3488:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3487:14:18"},"scope":1887,"src":"3386:116:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1733,"nodeType":"StructuredDocumentation","src":"3508:563:18","text":" @notice Hook to be executed after pool initialization.\n @dev Called if the `shouldCallAfterInitialize` flag is set in the configuration. Hook contracts should use\n the `onlyVault` modifier to guarantee this is only called by the Vault.\n @param exactAmountsIn Exact amounts of input tokens\n @param bptAmountOut Amount of pool tokens minted during initialization\n @param userData Optional, arbitrary data sent with the encoded request\n @return success True if the pool accepts the initialization results"},"functionSelector":"38be241d","id":1745,"implemented":false,"kind":"function","modifiers":[],"name":"onAfterInitialize","nameLocation":"4085:17:18","nodeType":"FunctionDefinition","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1736,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"4129:14:18","nodeType":"VariableDeclaration","scope":1745,"src":"4112:31:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1734,"name":"uint256","nodeType":"ElementaryTypeName","src":"4112:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1735,"nodeType":"ArrayTypeName","src":"4112:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1738,"mutability":"mutable","name":"bptAmountOut","nameLocation":"4161:12:18","nodeType":"VariableDeclaration","scope":1745,"src":"4153:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1737,"name":"uint256","nodeType":"ElementaryTypeName","src":"4153:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1740,"mutability":"mutable","name":"userData","nameLocation":"4196:8:18","nodeType":"VariableDeclaration","scope":1745,"src":"4183:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1739,"name":"bytes","nodeType":"ElementaryTypeName","src":"4183:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4102:108:18"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"success","nameLocation":"4234:7:18","nodeType":"VariableDeclaration","scope":1745,"src":"4229:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1742,"name":"bool","nodeType":"ElementaryTypeName","src":"4229:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4228:14:18"},"scope":1887,"src":"4076:167:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"4461:953:18","text":" @notice Hook to be executed before adding liquidity.\n @dev Called if the `shouldCallBeforeAddLiquidity` flag is set in the configuration. Hook contracts should use\n the `onlyVault` modifier to guarantee this is only called by the Vault.\n @param router The address (usually a router contract) that initiated an add liquidity operation on the Vault\n @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n @param kind The add liquidity operation type (e.g., proportional, custom)\n @param maxAmountsInScaled18 Maximum amounts of input tokens\n @param minBptAmountOut Minimum amount of output pool tokens\n @param balancesScaled18 Current pool balances, sorted in token registration order\n @param userData Optional, arbitrary data sent with the encoded request\n @return success True if the pool wishes to proceed with settlement"},"functionSelector":"45421ec7","id":1768,"implemented":false,"kind":"function","modifiers":[],"name":"onBeforeAddLiquidity","nameLocation":"5428:20:18","nodeType":"FunctionDefinition","parameters":{"id":1764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1748,"mutability":"mutable","name":"router","nameLocation":"5466:6:18","nodeType":"VariableDeclaration","scope":1768,"src":"5458:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1747,"name":"address","nodeType":"ElementaryTypeName","src":"5458:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1750,"mutability":"mutable","name":"pool","nameLocation":"5490:4:18","nodeType":"VariableDeclaration","scope":1768,"src":"5482:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1749,"name":"address","nodeType":"ElementaryTypeName","src":"5482:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1753,"mutability":"mutable","name":"kind","nameLocation":"5521:4:18","nodeType":"VariableDeclaration","scope":1768,"src":"5504:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":1752,"nodeType":"UserDefinedTypeName","pathNode":{"id":1751,"name":"AddLiquidityKind","nameLocations":["5504:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"5504:16:18"},"referencedDeclaration":4589,"src":"5504:16:18","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":1756,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"5552:20:18","nodeType":"VariableDeclaration","scope":1768,"src":"5535:37:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1754,"name":"uint256","nodeType":"ElementaryTypeName","src":"5535:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1755,"nodeType":"ArrayTypeName","src":"5535:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1758,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"5590:15:18","nodeType":"VariableDeclaration","scope":1768,"src":"5582:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1757,"name":"uint256","nodeType":"ElementaryTypeName","src":"5582:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1761,"mutability":"mutable","name":"balancesScaled18","nameLocation":"5632:16:18","nodeType":"VariableDeclaration","scope":1768,"src":"5615:33:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1759,"name":"uint256","nodeType":"ElementaryTypeName","src":"5615:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1760,"nodeType":"ArrayTypeName","src":"5615:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1763,"mutability":"mutable","name":"userData","nameLocation":"5671:8:18","nodeType":"VariableDeclaration","scope":1768,"src":"5658:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1762,"name":"bytes","nodeType":"ElementaryTypeName","src":"5658:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5448:237:18"},"returnParameters":{"id":1767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1766,"mutability":"mutable","name":"success","nameLocation":"5709:7:18","nodeType":"VariableDeclaration","scope":1768,"src":"5704:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1765,"name":"bool","nodeType":"ElementaryTypeName","src":"5704:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5703:14:18"},"scope":1887,"src":"5419:299:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1769,"nodeType":"StructuredDocumentation","src":"5724:1250:18","text":" @notice Hook to be executed after adding liquidity.\n @dev Called if the `shouldCallAfterAddLiquidity` flag is set in the configuration. The Vault will ignore\n `hookAdjustedAmountsInRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the\n `onlyVault` modifier to guarantee this is only called by the Vault.\n @param router The address (usually a router contract) that initiated an add liquidity operation on the Vault\n @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n @param kind The add liquidity operation type (e.g., proportional, custom)\n @param amountsInScaled18 Actual amounts of tokens added, sorted in token registration order\n @param amountsInRaw Actual amounts of tokens added, sorted in token registration order\n @param bptAmountOut Amount of pool tokens minted\n @param balancesScaled18 Current pool balances, sorted in token registration order\n @param userData Additional (optional) data provided by the user\n @return success True if the pool wishes to proceed with settlement\n @return hookAdjustedAmountsInRaw New amountsInRaw, potentially modified by the hook"},"functionSelector":"976907cc","id":1797,"implemented":false,"kind":"function","modifiers":[],"name":"onAfterAddLiquidity","nameLocation":"6988:19:18","nodeType":"FunctionDefinition","parameters":{"id":1790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1771,"mutability":"mutable","name":"router","nameLocation":"7025:6:18","nodeType":"VariableDeclaration","scope":1797,"src":"7017:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1770,"name":"address","nodeType":"ElementaryTypeName","src":"7017:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1773,"mutability":"mutable","name":"pool","nameLocation":"7049:4:18","nodeType":"VariableDeclaration","scope":1797,"src":"7041:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1772,"name":"address","nodeType":"ElementaryTypeName","src":"7041:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1776,"mutability":"mutable","name":"kind","nameLocation":"7080:4:18","nodeType":"VariableDeclaration","scope":1797,"src":"7063:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":1775,"nodeType":"UserDefinedTypeName","pathNode":{"id":1774,"name":"AddLiquidityKind","nameLocations":["7063:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"7063:16:18"},"referencedDeclaration":4589,"src":"7063:16:18","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":1779,"mutability":"mutable","name":"amountsInScaled18","nameLocation":"7111:17:18","nodeType":"VariableDeclaration","scope":1797,"src":"7094:34:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1777,"name":"uint256","nodeType":"ElementaryTypeName","src":"7094:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1778,"nodeType":"ArrayTypeName","src":"7094:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1782,"mutability":"mutable","name":"amountsInRaw","nameLocation":"7155:12:18","nodeType":"VariableDeclaration","scope":1797,"src":"7138:29:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1780,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1781,"nodeType":"ArrayTypeName","src":"7138:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1784,"mutability":"mutable","name":"bptAmountOut","nameLocation":"7185:12:18","nodeType":"VariableDeclaration","scope":1797,"src":"7177:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1783,"name":"uint256","nodeType":"ElementaryTypeName","src":"7177:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1787,"mutability":"mutable","name":"balancesScaled18","nameLocation":"7224:16:18","nodeType":"VariableDeclaration","scope":1797,"src":"7207:33:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"7207:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1786,"nodeType":"ArrayTypeName","src":"7207:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1789,"mutability":"mutable","name":"userData","nameLocation":"7263:8:18","nodeType":"VariableDeclaration","scope":1797,"src":"7250:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1788,"name":"bytes","nodeType":"ElementaryTypeName","src":"7250:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7007:270:18"},"returnParameters":{"id":1796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1792,"mutability":"mutable","name":"success","nameLocation":"7301:7:18","nodeType":"VariableDeclaration","scope":1797,"src":"7296:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1791,"name":"bool","nodeType":"ElementaryTypeName","src":"7296:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1795,"mutability":"mutable","name":"hookAdjustedAmountsInRaw","nameLocation":"7327:24:18","nodeType":"VariableDeclaration","scope":1797,"src":"7310:41:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1793,"name":"uint256","nodeType":"ElementaryTypeName","src":"7310:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1794,"nodeType":"ArrayTypeName","src":"7310:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7295:57:18"},"scope":1887,"src":"6979:374:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"7572:992:18","text":" @notice Hook to be executed before removing liquidity.\n @dev Called if the `shouldCallBeforeRemoveLiquidity` flag is set in the configuration. Hook contracts should use\n the `onlyVault` modifier to guarantee this is only called by the Vault.\n @param router The address (usually a router contract) that initiated a remove liquidity operation on the Vault\n @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n @param kind The type of remove liquidity operation (e.g., proportional, custom)\n @param maxBptAmountIn Maximum amount of input pool tokens\n @param minAmountsOutScaled18 Minimum output amounts, sorted in token registration order\n @param balancesScaled18 Current pool balances, sorted in token registration order\n @param userData Optional, arbitrary data sent with the encoded request\n @return success True if the pool wishes to proceed with settlement"},"functionSelector":"ba5f9f40","id":1820,"implemented":false,"kind":"function","modifiers":[],"name":"onBeforeRemoveLiquidity","nameLocation":"8578:23:18","nodeType":"FunctionDefinition","parameters":{"id":1816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"router","nameLocation":"8619:6:18","nodeType":"VariableDeclaration","scope":1820,"src":"8611:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1799,"name":"address","nodeType":"ElementaryTypeName","src":"8611:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1802,"mutability":"mutable","name":"pool","nameLocation":"8643:4:18","nodeType":"VariableDeclaration","scope":1820,"src":"8635:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1801,"name":"address","nodeType":"ElementaryTypeName","src":"8635:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1805,"mutability":"mutable","name":"kind","nameLocation":"8677:4:18","nodeType":"VariableDeclaration","scope":1820,"src":"8657:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":1804,"nodeType":"UserDefinedTypeName","pathNode":{"id":1803,"name":"RemoveLiquidityKind","nameLocations":["8657:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"8657:19:18"},"referencedDeclaration":4610,"src":"8657:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":1807,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"8699:14:18","nodeType":"VariableDeclaration","scope":1820,"src":"8691:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1806,"name":"uint256","nodeType":"ElementaryTypeName","src":"8691:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1810,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"8740:21:18","nodeType":"VariableDeclaration","scope":1820,"src":"8723:38:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1808,"name":"uint256","nodeType":"ElementaryTypeName","src":"8723:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1809,"nodeType":"ArrayTypeName","src":"8723:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1813,"mutability":"mutable","name":"balancesScaled18","nameLocation":"8788:16:18","nodeType":"VariableDeclaration","scope":1820,"src":"8771:33:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1811,"name":"uint256","nodeType":"ElementaryTypeName","src":"8771:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1812,"nodeType":"ArrayTypeName","src":"8771:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1815,"mutability":"mutable","name":"userData","nameLocation":"8827:8:18","nodeType":"VariableDeclaration","scope":1820,"src":"8814:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1814,"name":"bytes","nodeType":"ElementaryTypeName","src":"8814:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8601:240:18"},"returnParameters":{"id":1819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1818,"mutability":"mutable","name":"success","nameLocation":"8865:7:18","nodeType":"VariableDeclaration","scope":1820,"src":"8860:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1817,"name":"bool","nodeType":"ElementaryTypeName","src":"8860:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8859:14:18"},"scope":1887,"src":"8569:305:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1821,"nodeType":"StructuredDocumentation","src":"8880:1276:18","text":" @notice Hook to be executed after removing liquidity.\n @dev Called if the `shouldCallAfterRemoveLiquidity` flag is set in the configuration. The Vault will ignore\n `hookAdjustedAmountsOutRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the\n `onlyVault` modifier to guarantee this is only called by the Vault.\n @param router The address (usually a router contract) that initiated a remove liquidity operation on the Vault\n @param pool Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\n @param kind The type of remove liquidity operation (e.g., proportional, custom)\n @param bptAmountIn Amount of pool tokens to burn\n @param amountsOutScaled18 Scaled amount of tokens to receive, sorted in token registration order\n @param amountsOutRaw Actual amount of tokens to receive, sorted in token registration order\n @param balancesScaled18 Current pool balances, sorted in token registration order\n @param userData Additional (optional) data provided by the user\n @return success True if the pool wishes to proceed with settlement\n @return hookAdjustedAmountsOutRaw New amountsOutRaw, potentially modified by the hook"},"functionSelector":"2754888d","id":1849,"implemented":false,"kind":"function","modifiers":[],"name":"onAfterRemoveLiquidity","nameLocation":"10170:22:18","nodeType":"FunctionDefinition","parameters":{"id":1842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"router","nameLocation":"10210:6:18","nodeType":"VariableDeclaration","scope":1849,"src":"10202:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1822,"name":"address","nodeType":"ElementaryTypeName","src":"10202:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1825,"mutability":"mutable","name":"pool","nameLocation":"10234:4:18","nodeType":"VariableDeclaration","scope":1849,"src":"10226:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1824,"name":"address","nodeType":"ElementaryTypeName","src":"10226:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1828,"mutability":"mutable","name":"kind","nameLocation":"10268:4:18","nodeType":"VariableDeclaration","scope":1849,"src":"10248:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":1827,"nodeType":"UserDefinedTypeName","pathNode":{"id":1826,"name":"RemoveLiquidityKind","nameLocations":["10248:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"10248:19:18"},"referencedDeclaration":4610,"src":"10248:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":1830,"mutability":"mutable","name":"bptAmountIn","nameLocation":"10290:11:18","nodeType":"VariableDeclaration","scope":1849,"src":"10282:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1829,"name":"uint256","nodeType":"ElementaryTypeName","src":"10282:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1833,"mutability":"mutable","name":"amountsOutScaled18","nameLocation":"10328:18:18","nodeType":"VariableDeclaration","scope":1849,"src":"10311:35:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1831,"name":"uint256","nodeType":"ElementaryTypeName","src":"10311:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1832,"nodeType":"ArrayTypeName","src":"10311:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1836,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"10373:13:18","nodeType":"VariableDeclaration","scope":1849,"src":"10356:30:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1834,"name":"uint256","nodeType":"ElementaryTypeName","src":"10356:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1835,"nodeType":"ArrayTypeName","src":"10356:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"balancesScaled18","nameLocation":"10413:16:18","nodeType":"VariableDeclaration","scope":1849,"src":"10396:33:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1837,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1838,"nodeType":"ArrayTypeName","src":"10396:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1841,"mutability":"mutable","name":"userData","nameLocation":"10452:8:18","nodeType":"VariableDeclaration","scope":1849,"src":"10439:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1840,"name":"bytes","nodeType":"ElementaryTypeName","src":"10439:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10192:274:18"},"returnParameters":{"id":1848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1844,"mutability":"mutable","name":"success","nameLocation":"10490:7:18","nodeType":"VariableDeclaration","scope":1849,"src":"10485:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1843,"name":"bool","nodeType":"ElementaryTypeName","src":"10485:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1847,"mutability":"mutable","name":"hookAdjustedAmountsOutRaw","nameLocation":"10516:25:18","nodeType":"VariableDeclaration","scope":1849,"src":"10499:42:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1845,"name":"uint256","nodeType":"ElementaryTypeName","src":"10499:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1846,"nodeType":"ArrayTypeName","src":"10499:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"10484:58:18"},"scope":1887,"src":"10161:382:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1850,"nodeType":"StructuredDocumentation","src":"10753:556:18","text":" @notice Called before a swap to give the Pool an opportunity to perform actions.\n @dev Called if the `shouldCallBeforeSwap` flag is set in the configuration. Hook contracts should use the\n `onlyVault` modifier to guarantee this is only called by the Vault.\n @param params Swap parameters (see PoolSwapParams for struct definition)\n @param pool Pool address, used to get pool information from the Vault (poolData, token config, etc.)\n @return success True if the pool wishes to proceed with settlement"},"functionSelector":"5211fa77","id":1860,"implemented":false,"kind":"function","modifiers":[],"name":"onBeforeSwap","nameLocation":"11323:12:18","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1853,"mutability":"mutable","name":"params","nameLocation":"11360:6:18","nodeType":"VariableDeclaration","scope":1860,"src":"11336:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":1852,"nodeType":"UserDefinedTypeName","pathNode":{"id":1851,"name":"PoolSwapParams","nameLocations":["11336:14:18"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"11336:14:18"},"referencedDeclaration":4554,"src":"11336:14:18","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":1855,"mutability":"mutable","name":"pool","nameLocation":"11376:4:18","nodeType":"VariableDeclaration","scope":1860,"src":"11368:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"11368:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11335:46:18"},"returnParameters":{"id":1859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"success","nameLocation":"11405:7:18","nodeType":"VariableDeclaration","scope":1860,"src":"11400:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1857,"name":"bool","nodeType":"ElementaryTypeName","src":"11400:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11399:14:18"},"scope":1887,"src":"11314:100:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1861,"nodeType":"StructuredDocumentation","src":"11420:671:18","text":" @notice Called after a swap to perform further actions once the balances have been updated by the swap.\n @dev Called if the `shouldCallAfterSwap` flag is set in the configuration. The Vault will ignore\n `hookAdjustedAmountCalculatedRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should\n use the `onlyVault` modifier to guarantee this is only called by the Vault.\n @param params Swap parameters (see above for struct definition)\n @return success True if the pool wishes to proceed with settlement\n @return hookAdjustedAmountCalculatedRaw New amount calculated, potentially modified by the hook"},"functionSelector":"18b6eb55","id":1871,"implemented":false,"kind":"function","modifiers":[],"name":"onAfterSwap","nameLocation":"12105:11:18","nodeType":"FunctionDefinition","parameters":{"id":1865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1864,"mutability":"mutable","name":"params","nameLocation":"12151:6:18","nodeType":"VariableDeclaration","scope":1871,"src":"12126:31:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams"},"typeName":{"id":1863,"nodeType":"UserDefinedTypeName","pathNode":{"id":1862,"name":"AfterSwapParams","nameLocations":["12126:15:18"],"nodeType":"IdentifierPath","referencedDeclaration":4583,"src":"12126:15:18"},"referencedDeclaration":4583,"src":"12126:15:18","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_storage_ptr","typeString":"struct AfterSwapParams"}},"visibility":"internal"}],"src":"12116:47:18"},"returnParameters":{"id":1870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"success","nameLocation":"12187:7:18","nodeType":"VariableDeclaration","scope":1871,"src":"12182:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1866,"name":"bool","nodeType":"ElementaryTypeName","src":"12182:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1869,"mutability":"mutable","name":"hookAdjustedAmountCalculatedRaw","nameLocation":"12204:31:18","nodeType":"VariableDeclaration","scope":1871,"src":"12196:39:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1868,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12181:55:18"},"scope":1887,"src":"12096:141:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1872,"nodeType":"StructuredDocumentation","src":"12243:795:18","text":" @notice Called after `onBeforeSwap` and before the main swap operation, if the pool has dynamic fees.\n @dev Called if the `shouldCallComputeDynamicSwapFee` flag is set in the configuration. Hook contracts should use\n the `onlyVault` modifier to guarantee this is only called by the Vault.\n @param params Swap parameters (see PoolSwapParams for struct definition)\n @param pool Pool address, used to get pool information from the Vault (poolData, token config, etc.)\n @param staticSwapFeePercentage 18-decimal FP value of the static swap fee percentage, for reference\n @return success True if the pool wishes to proceed with settlement\n @return dynamicSwapFeePercentage Value of the swap fee percentage, as an 18-decimal FP value"},"functionSelector":"a0e8f5ac","id":1886,"implemented":false,"kind":"function","modifiers":[],"name":"onComputeDynamicSwapFeePercentage","nameLocation":"13052:33:18","nodeType":"FunctionDefinition","parameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1875,"mutability":"mutable","name":"params","nameLocation":"13119:6:18","nodeType":"VariableDeclaration","scope":1886,"src":"13095:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":1874,"nodeType":"UserDefinedTypeName","pathNode":{"id":1873,"name":"PoolSwapParams","nameLocations":["13095:14:18"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"13095:14:18"},"referencedDeclaration":4554,"src":"13095:14:18","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":1877,"mutability":"mutable","name":"pool","nameLocation":"13143:4:18","nodeType":"VariableDeclaration","scope":1886,"src":"13135:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1876,"name":"address","nodeType":"ElementaryTypeName","src":"13135:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1879,"mutability":"mutable","name":"staticSwapFeePercentage","nameLocation":"13165:23:18","nodeType":"VariableDeclaration","scope":1886,"src":"13157:31:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1878,"name":"uint256","nodeType":"ElementaryTypeName","src":"13157:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13085:109:18"},"returnParameters":{"id":1885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1882,"mutability":"mutable","name":"success","nameLocation":"13223:7:18","nodeType":"VariableDeclaration","scope":1886,"src":"13218:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1881,"name":"bool","nodeType":"ElementaryTypeName","src":"13218:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1884,"mutability":"mutable","name":"dynamicSwapFeePercentage","nameLocation":"13240:24:18","nodeType":"VariableDeclaration","scope":1886,"src":"13232:32:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"13232:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13217:48:18"},"scope":1887,"src":"13043:223:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1888,"src":"975:12293:18","usedErrors":[],"usedEvents":[]}],"src":"46:13223:18"},"id":18},"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol","exportedSymbols":{"IPoolLiquidity":[1943]},"id":1944,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1889,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:19"},{"abstract":false,"baseContracts":[],"canonicalName":"IPoolLiquidity","contractDependencies":[],"contractKind":"interface","documentation":{"id":1890,"nodeType":"StructuredDocumentation","src":"72:55:19","text":"@notice Interface for custom liquidity operations."},"fullyImplemented":false,"id":1943,"linearizedBaseContracts":[1943],"name":"IPoolLiquidity","nameLocation":"137:14:19","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1891,"nodeType":"StructuredDocumentation","src":"158:817:19","text":" @notice Add liquidity to the pool with a custom hook.\n @param router The address (usually a router contract) that initiated a swap operation on the Vault\n @param maxAmountsInScaled18 Maximum input amounts, sorted in token registration order\n @param minBptAmountOut Minimum amount of output pool tokens\n @param balancesScaled18 Current pool balances, sorted in token registration order\n @param userData Arbitrary data sent with the encoded request\n @return amountsInScaled18 Input token amounts, sorted in token registration order\n @return bptAmountOut Calculated pool token amount to receive\n @return swapFeeAmountsScaled18 The amount of swap fees charged for each token\n @return returnData Arbitrary data with an encoded response from the pool"},"functionSelector":"e4c43663","id":1916,"implemented":false,"kind":"function","modifiers":[],"name":"onAddLiquidityCustom","nameLocation":"989:20:19","nodeType":"FunctionDefinition","parameters":{"id":1904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1893,"mutability":"mutable","name":"router","nameLocation":"1027:6:19","nodeType":"VariableDeclaration","scope":1916,"src":"1019:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1892,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1896,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"1060:20:19","nodeType":"VariableDeclaration","scope":1916,"src":"1043:37:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1895,"nodeType":"ArrayTypeName","src":"1043:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1898,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"1098:15:19","nodeType":"VariableDeclaration","scope":1916,"src":"1090:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1897,"name":"uint256","nodeType":"ElementaryTypeName","src":"1090:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1901,"mutability":"mutable","name":"balancesScaled18","nameLocation":"1140:16:19","nodeType":"VariableDeclaration","scope":1916,"src":"1123:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1899,"name":"uint256","nodeType":"ElementaryTypeName","src":"1123:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1900,"nodeType":"ArrayTypeName","src":"1123:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1903,"mutability":"mutable","name":"userData","nameLocation":"1179:8:19","nodeType":"VariableDeclaration","scope":1916,"src":"1166:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1902,"name":"bytes","nodeType":"ElementaryTypeName","src":"1166:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1009:184:19"},"returnParameters":{"id":1915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"amountsInScaled18","nameLocation":"1258:17:19","nodeType":"VariableDeclaration","scope":1916,"src":"1241:34:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1241:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1906,"nodeType":"ArrayTypeName","src":"1241:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1909,"mutability":"mutable","name":"bptAmountOut","nameLocation":"1297:12:19","nodeType":"VariableDeclaration","scope":1916,"src":"1289:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1908,"name":"uint256","nodeType":"ElementaryTypeName","src":"1289:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1912,"mutability":"mutable","name":"swapFeeAmountsScaled18","nameLocation":"1340:22:19","nodeType":"VariableDeclaration","scope":1916,"src":"1323:39:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1910,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1911,"nodeType":"ArrayTypeName","src":"1323:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1914,"mutability":"mutable","name":"returnData","nameLocation":"1389:10:19","nodeType":"VariableDeclaration","scope":1916,"src":"1376:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1913,"name":"bytes","nodeType":"ElementaryTypeName","src":"1376:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1227:182:19"},"scope":1943,"src":"980:430:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1917,"nodeType":"StructuredDocumentation","src":"1416:827:19","text":" @notice Remove liquidity from the pool with a custom hook.\n @param router The address (usually a router contract) that initiated a swap operation on the Vault\n @param maxBptAmountIn Maximum amount of input pool tokens\n @param minAmountsOutScaled18 Minimum output amounts, sorted in token registration order\n @param balancesScaled18 Current pool balances, sorted in token registration order\n @param userData Arbitrary data sent with the encoded request\n @return bptAmountIn Calculated pool token amount to burn\n @return amountsOutScaled18 Amount of tokens to receive, sorted in token registration order\n @return swapFeeAmountsScaled18 The amount of swap fees charged for each token\n @return returnData Arbitrary data with an encoded response from the pool"},"functionSelector":"ab68e28c","id":1942,"implemented":false,"kind":"function","modifiers":[],"name":"onRemoveLiquidityCustom","nameLocation":"2257:23:19","nodeType":"FunctionDefinition","parameters":{"id":1930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1919,"mutability":"mutable","name":"router","nameLocation":"2298:6:19","nodeType":"VariableDeclaration","scope":1942,"src":"2290:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1918,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1921,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"2322:14:19","nodeType":"VariableDeclaration","scope":1942,"src":"2314:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1920,"name":"uint256","nodeType":"ElementaryTypeName","src":"2314:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1924,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"2363:21:19","nodeType":"VariableDeclaration","scope":1942,"src":"2346:38:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1922,"name":"uint256","nodeType":"ElementaryTypeName","src":"2346:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1923,"nodeType":"ArrayTypeName","src":"2346:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1927,"mutability":"mutable","name":"balancesScaled18","nameLocation":"2411:16:19","nodeType":"VariableDeclaration","scope":1942,"src":"2394:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"2394:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1926,"nodeType":"ArrayTypeName","src":"2394:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1929,"mutability":"mutable","name":"userData","nameLocation":"2450:8:19","nodeType":"VariableDeclaration","scope":1942,"src":"2437:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1928,"name":"bytes","nodeType":"ElementaryTypeName","src":"2437:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2280:184:19"},"returnParameters":{"id":1941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1932,"mutability":"mutable","name":"bptAmountIn","nameLocation":"2520:11:19","nodeType":"VariableDeclaration","scope":1942,"src":"2512:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1931,"name":"uint256","nodeType":"ElementaryTypeName","src":"2512:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1935,"mutability":"mutable","name":"amountsOutScaled18","nameLocation":"2562:18:19","nodeType":"VariableDeclaration","scope":1942,"src":"2545:35:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1933,"name":"uint256","nodeType":"ElementaryTypeName","src":"2545:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1934,"nodeType":"ArrayTypeName","src":"2545:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1938,"mutability":"mutable","name":"swapFeeAmountsScaled18","nameLocation":"2611:22:19","nodeType":"VariableDeclaration","scope":1942,"src":"2594:39:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1936,"name":"uint256","nodeType":"ElementaryTypeName","src":"2594:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1937,"nodeType":"ArrayTypeName","src":"2594:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1940,"mutability":"mutable","name":"returnData","nameLocation":"2660:10:19","nodeType":"VariableDeclaration","scope":1942,"src":"2647:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1939,"name":"bytes","nodeType":"ElementaryTypeName","src":"2647:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2498:182:19"},"scope":1943,"src":"2248:433:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1944,"src":"127:2556:19","usedErrors":[],"usedEvents":[]}],"src":"46:2638:19"},"id":19},"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","exportedSymbols":{"IERC20":[39274],"IProtocolFeeController":[2230],"IVault":[2893]},"id":2231,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1945,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:20"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":1947,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2231,"sourceUnit":39275,"src":"72:72:20","symbolAliases":[{"foreign":{"id":1946,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":1949,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2231,"sourceUnit":2894,"src":"146:38:20","symbolAliases":[{"foreign":{"id":1948,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"155:6:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IProtocolFeeController","contractDependencies":[],"contractKind":"interface","documentation":{"id":1950,"nodeType":"StructuredDocumentation","src":"186:80:20","text":"@notice Contract that handles protocol and pool creator fees for the Vault."},"fullyImplemented":false,"id":2230,"linearizedBaseContracts":[2230],"name":"IProtocolFeeController","nameLocation":"276:22:20","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1951,"nodeType":"StructuredDocumentation","src":"305:157:20","text":" @notice Emitted when the protocol swap fee percentage is updated.\n @param swapFeePercentage The updated protocol swap fee percentage"},"eventSelector":"bf5ac0fc89bbf8819be79f280146b65ea2af2a9705cd9cfe0c9d93f6e87f307d","id":1955,"name":"GlobalProtocolSwapFeePercentageChanged","nameLocation":"473:38:20","nodeType":"EventDefinition","parameters":{"id":1954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1953,"indexed":false,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"520:17:20","nodeType":"VariableDeclaration","scope":1955,"src":"512:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1952,"name":"uint256","nodeType":"ElementaryTypeName","src":"512:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"511:27:20"},"src":"467:72:20"},{"anonymous":false,"documentation":{"id":1956,"nodeType":"StructuredDocumentation","src":"545:160:20","text":" @notice Emitted when the protocol yield fee percentage is updated.\n @param yieldFeePercentage The updated protocol yield fee percentage"},"eventSelector":"48c5c3ccec54c4e0ea08d83d838fa9bb725eb0b52c591cb00bd6e63bca8c44f6","id":1960,"name":"GlobalProtocolYieldFeePercentageChanged","nameLocation":"716:39:20","nodeType":"EventDefinition","parameters":{"id":1959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1958,"indexed":false,"mutability":"mutable","name":"yieldFeePercentage","nameLocation":"764:18:20","nodeType":"VariableDeclaration","scope":1960,"src":"756:26:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1957,"name":"uint256","nodeType":"ElementaryTypeName","src":"756:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"755:28:20"},"src":"710:74:20"},{"anonymous":false,"documentation":{"id":1961,"nodeType":"StructuredDocumentation","src":"790:245:20","text":" @notice Emitted when the protocol swap fee percentage is updated for a specific pool.\n @param pool The pool whose protocol swap fee will be changed\n @param swapFeePercentage The updated protocol swap fee percentage"},"eventSelector":"97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e","id":1967,"name":"ProtocolSwapFeePercentageChanged","nameLocation":"1046:32:20","nodeType":"EventDefinition","parameters":{"id":1966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1963,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"1095:4:20","nodeType":"VariableDeclaration","scope":1967,"src":"1079:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1962,"name":"address","nodeType":"ElementaryTypeName","src":"1079:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1965,"indexed":false,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"1109:17:20","nodeType":"VariableDeclaration","scope":1967,"src":"1101:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1964,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1078:49:20"},"src":"1040:88:20"},{"anonymous":false,"documentation":{"id":1968,"nodeType":"StructuredDocumentation","src":"1134:249:20","text":" @notice Emitted when the protocol yield fee percentage is updated for a specific pool.\n @param pool The pool whose protocol yield fee will be changed\n @param yieldFeePercentage The updated protocol yield fee percentage"},"eventSelector":"af47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd","id":1974,"name":"ProtocolYieldFeePercentageChanged","nameLocation":"1394:33:20","nodeType":"EventDefinition","parameters":{"id":1973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1970,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"1444:4:20","nodeType":"VariableDeclaration","scope":1974,"src":"1428:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1969,"name":"address","nodeType":"ElementaryTypeName","src":"1428:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1972,"indexed":false,"mutability":"mutable","name":"yieldFeePercentage","nameLocation":"1458:18:20","nodeType":"VariableDeclaration","scope":1974,"src":"1450:26:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1971,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:50:20"},"src":"1388:90:20"},{"anonymous":false,"documentation":{"id":1975,"nodeType":"StructuredDocumentation","src":"1484:267:20","text":" @notice Emitted when the pool creator swap fee percentage of a pool is updated.\n @param pool The pool whose pool creator swap fee will be changed\n @param poolCreatorSwapFeePercentage The new pool creator swap fee percentage for the pool"},"eventSelector":"b7cf36369623c01ed7b2eafc4025224e924a2836d5fb49428a0f65417586bf5c","id":1981,"name":"PoolCreatorSwapFeePercentageChanged","nameLocation":"1762:35:20","nodeType":"EventDefinition","parameters":{"id":1980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1977,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"1814:4:20","nodeType":"VariableDeclaration","scope":1981,"src":"1798:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1976,"name":"address","nodeType":"ElementaryTypeName","src":"1798:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1979,"indexed":false,"mutability":"mutable","name":"poolCreatorSwapFeePercentage","nameLocation":"1828:28:20","nodeType":"VariableDeclaration","scope":1981,"src":"1820:36:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1978,"name":"uint256","nodeType":"ElementaryTypeName","src":"1820:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1797:60:20"},"src":"1756:102:20"},{"anonymous":false,"documentation":{"id":1982,"nodeType":"StructuredDocumentation","src":"1864:271:20","text":" @notice Emitted when the pool creator yield fee percentage of a pool is updated.\n @param pool The pool whose pool creator yield fee will be changed\n @param poolCreatorYieldFeePercentage The new pool creator yield fee percentage for the pool"},"eventSelector":"47f70ddbc624c299cef7841aaea0a86b677c800203e953104e958c9ec9bdab34","id":1988,"name":"PoolCreatorYieldFeePercentageChanged","nameLocation":"2146:36:20","nodeType":"EventDefinition","parameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"2199:4:20","nodeType":"VariableDeclaration","scope":1988,"src":"2183:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1983,"name":"address","nodeType":"ElementaryTypeName","src":"2183:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1986,"indexed":false,"mutability":"mutable","name":"poolCreatorYieldFeePercentage","nameLocation":"2213:29:20","nodeType":"VariableDeclaration","scope":1988,"src":"2205:37:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1985,"name":"uint256","nodeType":"ElementaryTypeName","src":"2205:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:61:20"},"src":"2140:104:20"},{"anonymous":false,"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"2250:560:20","text":" @notice Logs the collection of protocol swap fees in a specific token and amount.\n @dev Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs\n in the Vault, but fee collection happens in the ProtocolFeeController, the swap fees reported here may encompass\n multiple operations.\n @param pool The pool on which the swap fee was charged\n @param token The token in which the swap fee was charged\n @param amount The amount of the token collected in fees"},"eventSelector":"ae7ebad9fc3d1d17965f063fa520d393595e2ef6c8e22ae8413b60900444e19f","id":1998,"name":"ProtocolSwapFeeCollected","nameLocation":"2821:24:20","nodeType":"EventDefinition","parameters":{"id":1997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"2862:4:20","nodeType":"VariableDeclaration","scope":1998,"src":"2846:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1990,"name":"address","nodeType":"ElementaryTypeName","src":"2846:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1994,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"2883:5:20","nodeType":"VariableDeclaration","scope":1998,"src":"2868:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":1993,"nodeType":"UserDefinedTypeName","pathNode":{"id":1992,"name":"IERC20","nameLocations":["2868:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2868:6:20"},"referencedDeclaration":39274,"src":"2868:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1996,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2898:6:20","nodeType":"VariableDeclaration","scope":1998,"src":"2890:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1995,"name":"uint256","nodeType":"ElementaryTypeName","src":"2890:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2845:60:20"},"src":"2815:91:20"},{"anonymous":false,"documentation":{"id":1999,"nodeType":"StructuredDocumentation","src":"2912:564:20","text":" @notice Logs the collection of protocol yield fees in a specific token and amount.\n @dev Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs\n in the Vault, but fee collection happens in the ProtocolFeeController, the yield fees reported here may encompass\n multiple operations.\n @param pool The pool on which the yield fee was charged\n @param token The token in which the yield fee was charged\n @param amount The amount of the token collected in fees"},"eventSelector":"e505e41b0d437b47350a9990142ccf38acb11ffa0e5af8f973b9e172f3d5d5e2","id":2008,"name":"ProtocolYieldFeeCollected","nameLocation":"3487:25:20","nodeType":"EventDefinition","parameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"3529:4:20","nodeType":"VariableDeclaration","scope":2008,"src":"3513:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2000,"name":"address","nodeType":"ElementaryTypeName","src":"3513:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2004,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"3550:5:20","nodeType":"VariableDeclaration","scope":2008,"src":"3535:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2003,"nodeType":"UserDefinedTypeName","pathNode":{"id":2002,"name":"IERC20","nameLocations":["3535:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3535:6:20"},"referencedDeclaration":39274,"src":"3535:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2006,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3565:6:20","nodeType":"VariableDeclaration","scope":2008,"src":"3557:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2005,"name":"uint256","nodeType":"ElementaryTypeName","src":"3557:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3512:60:20"},"src":"3481:92:20"},{"anonymous":false,"documentation":{"id":2009,"nodeType":"StructuredDocumentation","src":"3579:333:20","text":" @notice Logs the withdrawal of protocol fees in a specific token and amount.\n @param pool The pool from which protocol fees are being withdrawn\n @param token The token being withdrawn\n @param recipient The recipient of the funds\n @param amount The amount of the fee token that was withdrawn"},"eventSelector":"1c2887fcb98f75e66bb9a36311f2d3d22fb204e6362106f30e9df7eaf63131b5","id":2020,"name":"ProtocolFeesWithdrawn","nameLocation":"3923:21:20","nodeType":"EventDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2011,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"3961:4:20","nodeType":"VariableDeclaration","scope":2020,"src":"3945:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2010,"name":"address","nodeType":"ElementaryTypeName","src":"3945:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2014,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"3982:5:20","nodeType":"VariableDeclaration","scope":2020,"src":"3967:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2013,"nodeType":"UserDefinedTypeName","pathNode":{"id":2012,"name":"IERC20","nameLocations":["3967:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3967:6:20"},"referencedDeclaration":39274,"src":"3967:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2016,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4005:9:20","nodeType":"VariableDeclaration","scope":2020,"src":"3989:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2015,"name":"address","nodeType":"ElementaryTypeName","src":"3989:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2018,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4024:6:20","nodeType":"VariableDeclaration","scope":2020,"src":"4016:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"4016:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3944:87:20"},"src":"3917:115:20"},{"anonymous":false,"documentation":{"id":2021,"nodeType":"StructuredDocumentation","src":"4038:398:20","text":" @notice Logs the withdrawal of pool creator fees in a specific token and amount.\n @param pool The pool from which pool creator fees are being withdrawn\n @param token The token being withdrawn\n @param recipient The recipient of the funds (the pool creator if permissionless, or another account)\n @param amount The amount of the fee token that was withdrawn"},"eventSelector":"938f3a3a03ee425ccc0f8010b0468938cbafd3750fa43bbdf09c6f75e97e51f9","id":2032,"name":"PoolCreatorFeesWithdrawn","nameLocation":"4447:24:20","nodeType":"EventDefinition","parameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2023,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"4497:4:20","nodeType":"VariableDeclaration","scope":2032,"src":"4481:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2022,"name":"address","nodeType":"ElementaryTypeName","src":"4481:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2026,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"4526:5:20","nodeType":"VariableDeclaration","scope":2032,"src":"4511:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2025,"nodeType":"UserDefinedTypeName","pathNode":{"id":2024,"name":"IERC20","nameLocations":["4511:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4511:6:20"},"referencedDeclaration":39274,"src":"4511:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2028,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"4557:9:20","nodeType":"VariableDeclaration","scope":2032,"src":"4541:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2027,"name":"address","nodeType":"ElementaryTypeName","src":"4541:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2030,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4584:6:20","nodeType":"VariableDeclaration","scope":2032,"src":"4576:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"4576:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4471:125:20"},"src":"4441:156:20"},{"documentation":{"id":2033,"nodeType":"StructuredDocumentation","src":"4603:219:20","text":" @notice Error raised when the protocol swap fee percentage exceeds the maximum allowed value.\n @dev Note that this is checked for both the global and pool-specific protocol swap fee percentages."},"errorSelector":"7e6eb7fb","id":2035,"name":"ProtocolSwapFeePercentageTooHigh","nameLocation":"4833:32:20","nodeType":"ErrorDefinition","parameters":{"id":2034,"nodeType":"ParameterList","parameters":[],"src":"4865:2:20"},"src":"4827:41:20"},{"documentation":{"id":2036,"nodeType":"StructuredDocumentation","src":"4874:221:20","text":" @notice Error raised when the protocol yield fee percentage exceeds the maximum allowed value.\n @dev Note that this is checked for both the global and pool-specific protocol yield fee percentages."},"errorSelector":"a7849e8e","id":2038,"name":"ProtocolYieldFeePercentageTooHigh","nameLocation":"5106:33:20","nodeType":"ErrorDefinition","parameters":{"id":2037,"nodeType":"ParameterList","parameters":[],"src":"5139:2:20"},"src":"5100:42:20"},{"documentation":{"id":2039,"nodeType":"StructuredDocumentation","src":"5148:156:20","text":" @notice Error raised if there is no pool creator on a withdrawal attempt from the given pool.\n @param pool The pool with no creator"},"errorSelector":"8bcbf353","id":2043,"name":"PoolCreatorNotRegistered","nameLocation":"5315:24:20","nodeType":"ErrorDefinition","parameters":{"id":2042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2041,"mutability":"mutable","name":"pool","nameLocation":"5348:4:20","nodeType":"VariableDeclaration","scope":2043,"src":"5340:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2040,"name":"address","nodeType":"ElementaryTypeName","src":"5340:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5339:14:20"},"src":"5309:45:20"},{"documentation":{"id":2044,"nodeType":"StructuredDocumentation","src":"5360:236:20","text":" @notice Error raised if the wrong account attempts to withdraw pool creator fees.\n @param caller The account attempting to withdraw pool creator fees\n @param pool The pool the caller tried to withdraw from"},"errorSelector":"fbecdbf4","id":2050,"name":"CallerIsNotPoolCreator","nameLocation":"5607:22:20","nodeType":"ErrorDefinition","parameters":{"id":2049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2046,"mutability":"mutable","name":"caller","nameLocation":"5638:6:20","nodeType":"VariableDeclaration","scope":2050,"src":"5630:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2045,"name":"address","nodeType":"ElementaryTypeName","src":"5630:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2048,"mutability":"mutable","name":"pool","nameLocation":"5654:4:20","nodeType":"VariableDeclaration","scope":2050,"src":"5646:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2047,"name":"address","nodeType":"ElementaryTypeName","src":"5646:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5629:30:20"},"src":"5601:59:20"},{"documentation":{"id":2051,"nodeType":"StructuredDocumentation","src":"5666:110:20","text":"@notice Error raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value."},"errorSelector":"0370da74","id":2053,"name":"PoolCreatorFeePercentageTooHigh","nameLocation":"5787:31:20","nodeType":"ErrorDefinition","parameters":{"id":2052,"nodeType":"ParameterList","parameters":[],"src":"5818:2:20"},"src":"5781:40:20"},{"documentation":{"id":2054,"nodeType":"StructuredDocumentation","src":"5827:109:20","text":" @notice Get the address of the main Vault contract.\n @return vault The Vault address"},"functionSelector":"fbfa77cf","id":2060,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nameLocation":"5950:5:20","nodeType":"FunctionDefinition","parameters":{"id":2055,"nodeType":"ParameterList","parameters":[],"src":"5955:2:20"},"returnParameters":{"id":2059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2058,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2060,"src":"5981:6:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":2057,"nodeType":"UserDefinedTypeName","pathNode":{"id":2056,"name":"IVault","nameLocations":["5981:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"5981:6:20"},"referencedDeclaration":2893,"src":"5981:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"5980:8:20"},"scope":2230,"src":"5941:48:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2061,"nodeType":"StructuredDocumentation","src":"5995:131:20","text":" @notice Collects aggregate fees from the Vault for a given pool.\n @param pool The pool with aggregate fees"},"functionSelector":"8f4ab9ca","id":2066,"implemented":false,"kind":"function","modifiers":[],"name":"collectAggregateFees","nameLocation":"6140:20:20","nodeType":"FunctionDefinition","parameters":{"id":2064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"pool","nameLocation":"6169:4:20","nodeType":"VariableDeclaration","scope":2066,"src":"6161:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2062,"name":"address","nodeType":"ElementaryTypeName","src":"6161:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6160:14:20"},"returnParameters":{"id":2065,"nodeType":"ParameterList","parameters":[],"src":"6183:0:20"},"scope":2230,"src":"6131:53:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2067,"nodeType":"StructuredDocumentation","src":"6190:156:20","text":" @notice Getter for the current global protocol swap fee.\n @return protocolSwapFeePercentage The global protocol swap fee percentage"},"functionSelector":"7869ee18","id":2072,"implemented":false,"kind":"function","modifiers":[],"name":"getGlobalProtocolSwapFeePercentage","nameLocation":"6360:34:20","nodeType":"FunctionDefinition","parameters":{"id":2068,"nodeType":"ParameterList","parameters":[],"src":"6394:2:20"},"returnParameters":{"id":2071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2070,"mutability":"mutable","name":"protocolSwapFeePercentage","nameLocation":"6428:25:20","nodeType":"VariableDeclaration","scope":2072,"src":"6420:33:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2069,"name":"uint256","nodeType":"ElementaryTypeName","src":"6420:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6419:35:20"},"scope":2230,"src":"6351:104:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2073,"nodeType":"StructuredDocumentation","src":"6461:159:20","text":" @notice Getter for the current global protocol yield fee.\n @return protocolYieldFeePercentage The global protocol yield fee percentage"},"functionSelector":"55fb76af","id":2078,"implemented":false,"kind":"function","modifiers":[],"name":"getGlobalProtocolYieldFeePercentage","nameLocation":"6634:35:20","nodeType":"FunctionDefinition","parameters":{"id":2074,"nodeType":"ParameterList","parameters":[],"src":"6669:2:20"},"returnParameters":{"id":2077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2076,"mutability":"mutable","name":"protocolYieldFeePercentage","nameLocation":"6703:26:20","nodeType":"VariableDeclaration","scope":2078,"src":"6695:34:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2075,"name":"uint256","nodeType":"ElementaryTypeName","src":"6695:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6694:36:20"},"scope":2230,"src":"6625:106:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2079,"nodeType":"StructuredDocumentation","src":"6737:280:20","text":" @notice Getter for the current protocol swap fee for a given pool.\n @param pool The address of the pool\n @return protocolSwapFeePercentage The global protocol swap fee percentage\n @return isOverride True if the protocol fee has been overridden"},"functionSelector":"5c15a0b4","id":2088,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolProtocolSwapFeeInfo","nameLocation":"7031:26:20","nodeType":"FunctionDefinition","parameters":{"id":2082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"pool","nameLocation":"7075:4:20","nodeType":"VariableDeclaration","scope":2088,"src":"7067:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2080,"name":"address","nodeType":"ElementaryTypeName","src":"7067:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7057:28:20"},"returnParameters":{"id":2087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2084,"mutability":"mutable","name":"protocolSwapFeePercentage","nameLocation":"7117:25:20","nodeType":"VariableDeclaration","scope":2088,"src":"7109:33:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2083,"name":"uint256","nodeType":"ElementaryTypeName","src":"7109:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2086,"mutability":"mutable","name":"isOverride","nameLocation":"7149:10:20","nodeType":"VariableDeclaration","scope":2088,"src":"7144:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2085,"name":"bool","nodeType":"ElementaryTypeName","src":"7144:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7108:52:20"},"scope":2230,"src":"7022:139:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2089,"nodeType":"StructuredDocumentation","src":"7167:283:20","text":" @notice Getter for the current protocol yield fee for a given pool.\n @param pool The address of the pool\n @return protocolYieldFeePercentage The global protocol yield fee percentage\n @return isOverride True if the protocol fee has been overridden"},"functionSelector":"7a2b97dc","id":2098,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolProtocolYieldFeeInfo","nameLocation":"7464:27:20","nodeType":"FunctionDefinition","parameters":{"id":2092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2091,"mutability":"mutable","name":"pool","nameLocation":"7509:4:20","nodeType":"VariableDeclaration","scope":2098,"src":"7501:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2090,"name":"address","nodeType":"ElementaryTypeName","src":"7501:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7491:28:20"},"returnParameters":{"id":2097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2094,"mutability":"mutable","name":"protocolYieldFeePercentage","nameLocation":"7551:26:20","nodeType":"VariableDeclaration","scope":2098,"src":"7543:34:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2093,"name":"uint256","nodeType":"ElementaryTypeName","src":"7543:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2096,"mutability":"mutable","name":"isOverride","nameLocation":"7584:10:20","nodeType":"VariableDeclaration","scope":2098,"src":"7579:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2095,"name":"bool","nodeType":"ElementaryTypeName","src":"7579:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7542:53:20"},"scope":2230,"src":"7455:141:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2099,"nodeType":"StructuredDocumentation","src":"7602:344:20","text":" @notice Returns the amount of each pool token allocated to the protocol for withdrawal.\n @dev Includes both swap and yield fees.\n @param pool The address of the pool on which fees were collected\n @return feeAmounts The total amounts of each token available for withdrawal, sorted in token registration order"},"functionSelector":"8df44c54","id":2107,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeeAmounts","nameLocation":"7960:21:20","nodeType":"FunctionDefinition","parameters":{"id":2102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2101,"mutability":"mutable","name":"pool","nameLocation":"7990:4:20","nodeType":"VariableDeclaration","scope":2107,"src":"7982:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2100,"name":"address","nodeType":"ElementaryTypeName","src":"7982:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7981:14:20"},"returnParameters":{"id":2106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2105,"mutability":"mutable","name":"feeAmounts","nameLocation":"8036:10:20","nodeType":"VariableDeclaration","scope":2107,"src":"8019:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2103,"name":"uint256","nodeType":"ElementaryTypeName","src":"8019:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2104,"nodeType":"ArrayTypeName","src":"8019:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8018:29:20"},"scope":2230,"src":"7951:97:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2108,"nodeType":"StructuredDocumentation","src":"8054:348:20","text":" @notice Returns the amount of each pool token allocated to the pool creator for withdrawal.\n @dev Includes both swap and yield fees.\n @param pool The address of the pool on which fees were collected\n @return feeAmounts The total amounts of each token available for withdrawal, sorted in token registration order"},"functionSelector":"9e95f3fd","id":2116,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolCreatorFeeAmounts","nameLocation":"8416:24:20","nodeType":"FunctionDefinition","parameters":{"id":2111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2110,"mutability":"mutable","name":"pool","nameLocation":"8449:4:20","nodeType":"VariableDeclaration","scope":2116,"src":"8441:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2109,"name":"address","nodeType":"ElementaryTypeName","src":"8441:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8440:14:20"},"returnParameters":{"id":2115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"feeAmounts","nameLocation":"8495:10:20","nodeType":"VariableDeclaration","scope":2116,"src":"8478:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2112,"name":"uint256","nodeType":"ElementaryTypeName","src":"8478:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2113,"nodeType":"ArrayTypeName","src":"8478:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8477:29:20"},"scope":2230,"src":"8407:100:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2117,"nodeType":"StructuredDocumentation","src":"8513:1445:20","text":" @notice Returns a calculated aggregate percentage from protocol and pool creator fee percentages.\n @dev Not tied to any particular pool; this just performs the low-level \"additive fee\" calculation. Note that\n pool creator fees are calculated based on creatorAndLpFees, and not in totalFees. Since aggregate fees are\n stored in the Vault with 24-bit precision, this will truncate any values that require greater precision.\n It is expected that pool creators will negotiate with the DAO and agree on reasonable values for these fee\n components, but the truncation ensures it will not revert for any valid set of fee percentages.\n See example below:\n tokenOutAmount = 10000; poolSwapFeePct = 10%; protocolFeePct = 40%; creatorFeePct = 60%\n totalFees = tokenOutAmount * poolSwapFeePct = 10000 * 10% = 1000\n protocolFees = totalFees * protocolFeePct = 1000 * 40% = 400\n creatorAndLpFees = totalFees - protocolFees = 1000 - 400 = 600\n creatorFees = creatorAndLpFees * creatorFeePct = 600 * 60% = 360\n lpFees (will stay in the pool) = creatorAndLpFees - creatorFees = 600 - 360 = 240\n @param protocolFeePercentage The protocol portion of the aggregate fee percentage\n @param poolCreatorFeePercentage The pool creator portion of the aggregate fee percentage\n @return aggregateFeePercentage The computed aggregate percentage"},"functionSelector":"0ddd60c6","id":2126,"implemented":false,"kind":"function","modifiers":[],"name":"computeAggregateFeePercentage","nameLocation":"9972:29:20","nodeType":"FunctionDefinition","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"protocolFeePercentage","nameLocation":"10019:21:20","nodeType":"VariableDeclaration","scope":2126,"src":"10011:29:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2118,"name":"uint256","nodeType":"ElementaryTypeName","src":"10011:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2121,"mutability":"mutable","name":"poolCreatorFeePercentage","nameLocation":"10058:24:20","nodeType":"VariableDeclaration","scope":2126,"src":"10050:32:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"10050:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10001:87:20"},"returnParameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2124,"mutability":"mutable","name":"aggregateFeePercentage","nameLocation":"10120:22:20","nodeType":"VariableDeclaration","scope":2126,"src":"10112:30:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2123,"name":"uint256","nodeType":"ElementaryTypeName","src":"10112:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10111:32:20"},"scope":2230,"src":"9963:181:20","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":2127,"nodeType":"StructuredDocumentation","src":"10150:398:20","text":" @notice Override the protocol swap fee percentage for a specific pool.\n @dev This is a permissionless call, and will set the pool's fee to the current global fee, if it is different\n from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\n @param pool The pool for which we are setting the protocol swap fee"},"functionSelector":"71ecc8fb","id":2132,"implemented":false,"kind":"function","modifiers":[],"name":"updateProtocolSwapFeePercentage","nameLocation":"10562:31:20","nodeType":"FunctionDefinition","parameters":{"id":2130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2129,"mutability":"mutable","name":"pool","nameLocation":"10602:4:20","nodeType":"VariableDeclaration","scope":2132,"src":"10594:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2128,"name":"address","nodeType":"ElementaryTypeName","src":"10594:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10593:14:20"},"returnParameters":{"id":2131,"nodeType":"ParameterList","parameters":[],"src":"10616:0:20"},"scope":2230,"src":"10553:64:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2133,"nodeType":"StructuredDocumentation","src":"10623:400:20","text":" @notice Override the protocol yield fee percentage for a specific pool.\n @dev This is a permissionless call, and will set the pool's fee to the current global fee, if it is different\n from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\n @param pool The pool for which we are setting the protocol yield fee"},"functionSelector":"71447ea8","id":2138,"implemented":false,"kind":"function","modifiers":[],"name":"updateProtocolYieldFeePercentage","nameLocation":"11037:32:20","nodeType":"FunctionDefinition","parameters":{"id":2136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2135,"mutability":"mutable","name":"pool","nameLocation":"11078:4:20","nodeType":"VariableDeclaration","scope":2138,"src":"11070:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2134,"name":"address","nodeType":"ElementaryTypeName","src":"11070:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11069:14:20"},"returnParameters":{"id":2137,"nodeType":"ParameterList","parameters":[],"src":"11092:0:20"},"scope":2230,"src":"11028:65:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2139,"nodeType":"StructuredDocumentation","src":"11317:826:20","text":" @notice Add pool-specific entries to the protocol swap and yield percentages.\n @dev This must be called from the Vault during pool registration. It will initialize the pool to the global\n protocol fee percentage values (or 0, if the `protocolFeeExempt` flags is set), and return the initial aggregate\n fee percentages, based on an initial pool creator fee of 0.\n @param pool The address of the pool being registered\n @param poolCreator The address of the pool creator (or 0 if there won't be a pool creator fee)\n @param protocolFeeExempt If true, the pool is initially exempt from protocol fees\n @return aggregateSwapFeePercentage The initial aggregate swap fee percentage\n @return aggregateYieldFeePercentage The initial aggregate yield fee percentage"},"functionSelector":"77ff76e7","id":2152,"implemented":false,"kind":"function","modifiers":[],"name":"registerPool","nameLocation":"12157:12:20","nodeType":"FunctionDefinition","parameters":{"id":2146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2141,"mutability":"mutable","name":"pool","nameLocation":"12187:4:20","nodeType":"VariableDeclaration","scope":2152,"src":"12179:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2140,"name":"address","nodeType":"ElementaryTypeName","src":"12179:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2143,"mutability":"mutable","name":"poolCreator","nameLocation":"12209:11:20","nodeType":"VariableDeclaration","scope":2152,"src":"12201:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2142,"name":"address","nodeType":"ElementaryTypeName","src":"12201:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2145,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"12235:17:20","nodeType":"VariableDeclaration","scope":2152,"src":"12230:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2144,"name":"bool","nodeType":"ElementaryTypeName","src":"12230:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12169:89:20"},"returnParameters":{"id":2151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2148,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"12285:26:20","nodeType":"VariableDeclaration","scope":2152,"src":"12277:34:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2147,"name":"uint256","nodeType":"ElementaryTypeName","src":"12277:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2150,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"12321:27:20","nodeType":"VariableDeclaration","scope":2152,"src":"12313:35:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2149,"name":"uint256","nodeType":"ElementaryTypeName","src":"12313:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12276:73:20"},"scope":2230,"src":"12148:202:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2153,"nodeType":"StructuredDocumentation","src":"12356:175:20","text":" @notice Set the global protocol swap fee percentage, used by standard pools.\n @param newProtocolSwapFeePercentage The new protocol swap fee percentage"},"functionSelector":"8a3c5c69","id":2158,"implemented":false,"kind":"function","modifiers":[],"name":"setGlobalProtocolSwapFeePercentage","nameLocation":"12545:34:20","nodeType":"FunctionDefinition","parameters":{"id":2156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2155,"mutability":"mutable","name":"newProtocolSwapFeePercentage","nameLocation":"12588:28:20","nodeType":"VariableDeclaration","scope":2158,"src":"12580:36:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2154,"name":"uint256","nodeType":"ElementaryTypeName","src":"12580:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12579:38:20"},"returnParameters":{"id":2157,"nodeType":"ParameterList","parameters":[],"src":"12626:0:20"},"scope":2230,"src":"12536:91:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2159,"nodeType":"StructuredDocumentation","src":"12633:178:20","text":" @notice Set the global protocol yield fee percentage, used by standard pools.\n @param newProtocolYieldFeePercentage The new protocol yield fee percentage"},"functionSelector":"a93df2a4","id":2164,"implemented":false,"kind":"function","modifiers":[],"name":"setGlobalProtocolYieldFeePercentage","nameLocation":"12825:35:20","nodeType":"FunctionDefinition","parameters":{"id":2162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"newProtocolYieldFeePercentage","nameLocation":"12869:29:20","nodeType":"VariableDeclaration","scope":2164,"src":"12861:37:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2160,"name":"uint256","nodeType":"ElementaryTypeName","src":"12861:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12860:39:20"},"returnParameters":{"id":2163,"nodeType":"ParameterList","parameters":[],"src":"12908:0:20"},"scope":2230,"src":"12816:93:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2165,"nodeType":"StructuredDocumentation","src":"12915:272:20","text":" @notice Override the protocol swap fee percentage for a specific pool.\n @param pool The address of the pool for which we are setting the protocol swap fee\n @param newProtocolSwapFeePercentage The new protocol swap fee percentage for the pool"},"functionSelector":"fd267f39","id":2172,"implemented":false,"kind":"function","modifiers":[],"name":"setProtocolSwapFeePercentage","nameLocation":"13201:28:20","nodeType":"FunctionDefinition","parameters":{"id":2170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2167,"mutability":"mutable","name":"pool","nameLocation":"13238:4:20","nodeType":"VariableDeclaration","scope":2172,"src":"13230:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2166,"name":"address","nodeType":"ElementaryTypeName","src":"13230:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2169,"mutability":"mutable","name":"newProtocolSwapFeePercentage","nameLocation":"13252:28:20","nodeType":"VariableDeclaration","scope":2172,"src":"13244:36:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2168,"name":"uint256","nodeType":"ElementaryTypeName","src":"13244:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13229:52:20"},"returnParameters":{"id":2171,"nodeType":"ParameterList","parameters":[],"src":"13290:0:20"},"scope":2230,"src":"13192:99:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"13297:276:20","text":" @notice Override the protocol yield fee percentage for a specific pool.\n @param pool The address of the pool for which we are setting the protocol yield fee\n @param newProtocolYieldFeePercentage The new protocol yield fee percentage for the pool"},"functionSelector":"abaa3356","id":2180,"implemented":false,"kind":"function","modifiers":[],"name":"setProtocolYieldFeePercentage","nameLocation":"13587:29:20","nodeType":"FunctionDefinition","parameters":{"id":2178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"mutability":"mutable","name":"pool","nameLocation":"13625:4:20","nodeType":"VariableDeclaration","scope":2180,"src":"13617:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2174,"name":"address","nodeType":"ElementaryTypeName","src":"13617:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2177,"mutability":"mutable","name":"newProtocolYieldFeePercentage","nameLocation":"13639:29:20","nodeType":"VariableDeclaration","scope":2180,"src":"13631:37:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2176,"name":"uint256","nodeType":"ElementaryTypeName","src":"13631:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13616:53:20"},"returnParameters":{"id":2179,"nodeType":"ParameterList","parameters":[],"src":"13678:0:20"},"scope":2230,"src":"13578:101:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2181,"nodeType":"StructuredDocumentation","src":"13685:623:20","text":" @notice Assigns a new pool creator swap fee percentage to the specified pool.\n @dev Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to\n the \"net\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the\n pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\n @param pool The address of the pool for which the pool creator fee will be changed\n @param poolCreatorSwapFeePercentage The new pool creator swap fee percentage to apply to the pool"},"functionSelector":"1377c16c","id":2188,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolCreatorSwapFeePercentage","nameLocation":"14322:31:20","nodeType":"FunctionDefinition","parameters":{"id":2186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2183,"mutability":"mutable","name":"pool","nameLocation":"14362:4:20","nodeType":"VariableDeclaration","scope":2188,"src":"14354:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2182,"name":"address","nodeType":"ElementaryTypeName","src":"14354:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2185,"mutability":"mutable","name":"poolCreatorSwapFeePercentage","nameLocation":"14376:28:20","nodeType":"VariableDeclaration","scope":2188,"src":"14368:36:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2184,"name":"uint256","nodeType":"ElementaryTypeName","src":"14368:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14353:52:20"},"returnParameters":{"id":2187,"nodeType":"ParameterList","parameters":[],"src":"14414:0:20"},"scope":2230,"src":"14313:102:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2189,"nodeType":"StructuredDocumentation","src":"14421:626:20","text":" @notice Assigns a new pool creator yield fee percentage to the specified pool.\n @dev Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to\n the \"net\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the\n pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\n @param pool The address of the pool for which the pool creator fee will be changed\n @param poolCreatorYieldFeePercentage The new pool creator yield fee percentage to apply to the pool"},"functionSelector":"3af52712","id":2196,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolCreatorYieldFeePercentage","nameLocation":"15061:32:20","nodeType":"FunctionDefinition","parameters":{"id":2194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2191,"mutability":"mutable","name":"pool","nameLocation":"15102:4:20","nodeType":"VariableDeclaration","scope":2196,"src":"15094:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2190,"name":"address","nodeType":"ElementaryTypeName","src":"15094:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2193,"mutability":"mutable","name":"poolCreatorYieldFeePercentage","nameLocation":"15116:29:20","nodeType":"VariableDeclaration","scope":2196,"src":"15108:37:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2192,"name":"uint256","nodeType":"ElementaryTypeName","src":"15108:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15093:53:20"},"returnParameters":{"id":2195,"nodeType":"ParameterList","parameters":[],"src":"15155:0:20"},"scope":2230,"src":"15052:104:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2197,"nodeType":"StructuredDocumentation","src":"15162:296:20","text":" @notice Withdraw collected protocol fees for a given pool (all tokens). This is a permissioned function.\n @dev Sends swap and yield protocol fees to the recipient.\n @param pool The pool on which fees were collected\n @param recipient Address to send the tokens"},"functionSelector":"cf7b287f","id":2204,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawProtocolFees","nameLocation":"15472:20:20","nodeType":"FunctionDefinition","parameters":{"id":2202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2199,"mutability":"mutable","name":"pool","nameLocation":"15501:4:20","nodeType":"VariableDeclaration","scope":2204,"src":"15493:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2198,"name":"address","nodeType":"ElementaryTypeName","src":"15493:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2201,"mutability":"mutable","name":"recipient","nameLocation":"15515:9:20","nodeType":"VariableDeclaration","scope":2204,"src":"15507:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2200,"name":"address","nodeType":"ElementaryTypeName","src":"15507:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15492:33:20"},"returnParameters":{"id":2203,"nodeType":"ParameterList","parameters":[],"src":"15534:0:20"},"scope":2230,"src":"15463:72:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2205,"nodeType":"StructuredDocumentation","src":"15541:339:20","text":" @notice Withdraw collected protocol fees for a given pool and a given token. This is a permissioned function.\n @dev Sends swap and yield protocol fees to the recipient.\n @param pool The pool on which fees were collected\n @param recipient Address to send the tokens\n @param token Token to withdraw"},"functionSelector":"b53a70b2","id":2215,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawProtocolFeesForToken","nameLocation":"15894:28:20","nodeType":"FunctionDefinition","parameters":{"id":2213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2207,"mutability":"mutable","name":"pool","nameLocation":"15931:4:20","nodeType":"VariableDeclaration","scope":2215,"src":"15923:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"15923:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2209,"mutability":"mutable","name":"recipient","nameLocation":"15945:9:20","nodeType":"VariableDeclaration","scope":2215,"src":"15937:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2208,"name":"address","nodeType":"ElementaryTypeName","src":"15937:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2212,"mutability":"mutable","name":"token","nameLocation":"15963:5:20","nodeType":"VariableDeclaration","scope":2215,"src":"15956:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2211,"nodeType":"UserDefinedTypeName","pathNode":{"id":2210,"name":"IERC20","nameLocations":["15956:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"15956:6:20"},"referencedDeclaration":39274,"src":"15956:6:20","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"15922:47:20"},"returnParameters":{"id":2214,"nodeType":"ParameterList","parameters":[],"src":"15978:0:20"},"scope":2230,"src":"15885:94:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2216,"nodeType":"StructuredDocumentation","src":"15985:291:20","text":" @notice Withdraw collected pool creator fees for a given pool. This is a permissioned function.\n @dev Sends swap and yield pool creator fees to the recipient.\n @param pool The pool on which fees were collected\n @param recipient Address to send the tokens"},"functionSelector":"f7061445","id":2223,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawPoolCreatorFees","nameLocation":"16290:23:20","nodeType":"FunctionDefinition","parameters":{"id":2221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2218,"mutability":"mutable","name":"pool","nameLocation":"16322:4:20","nodeType":"VariableDeclaration","scope":2223,"src":"16314:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2217,"name":"address","nodeType":"ElementaryTypeName","src":"16314:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2220,"mutability":"mutable","name":"recipient","nameLocation":"16336:9:20","nodeType":"VariableDeclaration","scope":2223,"src":"16328:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2219,"name":"address","nodeType":"ElementaryTypeName","src":"16328:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16313:33:20"},"returnParameters":{"id":2222,"nodeType":"ParameterList","parameters":[],"src":"16355:0:20"},"scope":2230,"src":"16281:75:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2224,"nodeType":"StructuredDocumentation","src":"16362:310:20","text":" @notice Withdraw collected pool creator fees for a given pool.\n @dev Sends swap and yield pool creator fees to the registered poolCreator. Since this is a known and immutable\n value, this function is permissionless.\n @param pool The pool on which fees were collected"},"functionSelector":"52f125f0","id":2229,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawPoolCreatorFees","nameLocation":"16686:23:20","nodeType":"FunctionDefinition","parameters":{"id":2227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2226,"mutability":"mutable","name":"pool","nameLocation":"16718:4:20","nodeType":"VariableDeclaration","scope":2229,"src":"16710:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2225,"name":"address","nodeType":"ElementaryTypeName","src":"16710:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16709:14:20"},"returnParameters":{"id":2228,"nodeType":"ParameterList","parameters":[],"src":"16732:0:20"},"scope":2230,"src":"16677:56:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2231,"src":"266:16469:20","usedErrors":[2035,2038,2043,2050,2053],"usedEvents":[1955,1960,1967,1974,1981,1988,1998,2008,2020,2032]}],"src":"46:16690:20"},"id":20},"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol","exportedSymbols":{"AddLiquidityKind":[4589],"IERC20":[39274],"IERC4626":[38998],"IRouter":[2727],"RemoveLiquidityKind":[4610],"SwapKind":[4517]},"id":2728,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2232,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:21"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":2234,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2728,"sourceUnit":38999,"src":"72:75:21","symbolAliases":[{"foreign":{"id":2233,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":2236,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2728,"sourceUnit":39275,"src":"148:72:21","symbolAliases":[{"foreign":{"id":2235,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"157:6:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":2240,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2728,"sourceUnit":4654,"src":"222:83:21","symbolAliases":[{"foreign":{"id":2237,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"231:16:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2238,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"249:19:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2239,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"270:8:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IRouter","contractDependencies":[],"contractKind":"interface","documentation":{"id":2241,"nodeType":"StructuredDocumentation","src":"307:115:21","text":"@notice User-friendly interface to basic Vault operations: swap, add/remove liquidity, and associated queries."},"fullyImplemented":false,"id":2727,"linearizedBaseContracts":[2727],"name":"IRouter","nameLocation":"432:7:21","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRouter.InitializeHookParams","documentation":{"id":2242,"nodeType":"StructuredDocumentation","src":"661:637:21","text":" @notice Data for the pool initialization hook.\n @param sender Account originating the pool initialization operation\n @param pool Address of the liquidity pool\n @param tokens Pool tokens, in token registration order\n @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n @param minBptAmountOut Minimum amount of pool tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to add initial liquidity"},"id":2260,"members":[{"constant":false,"id":2244,"mutability":"mutable","name":"sender","nameLocation":"1349:6:21","nodeType":"VariableDeclaration","scope":2260,"src":"1341:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2243,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2246,"mutability":"mutable","name":"pool","nameLocation":"1373:4:21","nodeType":"VariableDeclaration","scope":2260,"src":"1365:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2245,"name":"address","nodeType":"ElementaryTypeName","src":"1365:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2250,"mutability":"mutable","name":"tokens","nameLocation":"1396:6:21","nodeType":"VariableDeclaration","scope":2260,"src":"1387:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2248,"nodeType":"UserDefinedTypeName","pathNode":{"id":2247,"name":"IERC20","nameLocations":["1387:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1387:6:21"},"referencedDeclaration":39274,"src":"1387:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":2249,"nodeType":"ArrayTypeName","src":"1387:8:21","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2253,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"1422:14:21","nodeType":"VariableDeclaration","scope":2260,"src":"1412:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2251,"name":"uint256","nodeType":"ElementaryTypeName","src":"1412:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2252,"nodeType":"ArrayTypeName","src":"1412:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2255,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"1454:15:21","nodeType":"VariableDeclaration","scope":2260,"src":"1446:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2254,"name":"uint256","nodeType":"ElementaryTypeName","src":"1446:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2257,"mutability":"mutable","name":"wethIsEth","nameLocation":"1484:9:21","nodeType":"VariableDeclaration","scope":2260,"src":"1479:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2256,"name":"bool","nodeType":"ElementaryTypeName","src":"1479:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2259,"mutability":"mutable","name":"userData","nameLocation":"1509:8:21","nodeType":"VariableDeclaration","scope":2260,"src":"1503:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2258,"name":"bytes","nodeType":"ElementaryTypeName","src":"1503:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"InitializeHookParams","nameLocation":"1310:20:21","nodeType":"StructDefinition","scope":2727,"src":"1303:221:21","visibility":"public"},{"documentation":{"id":2261,"nodeType":"StructuredDocumentation","src":"1530:650:21","text":" @notice Initialize a liquidity pool.\n @param pool Address of the liquidity pool\n @param tokens Pool tokens, in token registration order\n @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n @param minBptAmountOut Minimum amount of pool tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to add initial liquidity\n @return bptAmountOut Actual amount of pool tokens minted in exchange for initial liquidity"},"functionSelector":"026b3d95","id":2281,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"2194:10:21","nodeType":"FunctionDefinition","parameters":{"id":2277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2263,"mutability":"mutable","name":"pool","nameLocation":"2222:4:21","nodeType":"VariableDeclaration","scope":2281,"src":"2214:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2262,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2267,"mutability":"mutable","name":"tokens","nameLocation":"2252:6:21","nodeType":"VariableDeclaration","scope":2281,"src":"2236:22:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2265,"nodeType":"UserDefinedTypeName","pathNode":{"id":2264,"name":"IERC20","nameLocations":["2236:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2236:6:21"},"referencedDeclaration":39274,"src":"2236:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":2266,"nodeType":"ArrayTypeName","src":"2236:8:21","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2270,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"2285:14:21","nodeType":"VariableDeclaration","scope":2281,"src":"2268:31:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2268,"name":"uint256","nodeType":"ElementaryTypeName","src":"2268:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2269,"nodeType":"ArrayTypeName","src":"2268:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2272,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"2317:15:21","nodeType":"VariableDeclaration","scope":2281,"src":"2309:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2271,"name":"uint256","nodeType":"ElementaryTypeName","src":"2309:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2274,"mutability":"mutable","name":"wethIsEth","nameLocation":"2347:9:21","nodeType":"VariableDeclaration","scope":2281,"src":"2342:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2273,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2276,"mutability":"mutable","name":"userData","nameLocation":"2379:8:21","nodeType":"VariableDeclaration","scope":2281,"src":"2366:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2275,"name":"bytes","nodeType":"ElementaryTypeName","src":"2366:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2204:189:21"},"returnParameters":{"id":2280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2279,"mutability":"mutable","name":"bptAmountOut","nameLocation":"2428:12:21","nodeType":"VariableDeclaration","scope":2281,"src":"2420:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2278,"name":"uint256","nodeType":"ElementaryTypeName","src":"2420:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2419:22:21"},"scope":2727,"src":"2185:257:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2282,"nodeType":"StructuredDocumentation","src":"2660:645:21","text":" @notice Adds liquidity to a pool with proportional token amounts, receiving an exact amount of pool tokens.\n @param pool Address of the liquidity pool\n @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n @param exactBptAmountOut Exact amount of pool tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to add liquidity\n @return amountsIn Actual amounts of tokens added, sorted in token registration order"},"functionSelector":"724dba33","id":2299,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityProportional","nameLocation":"3319:24:21","nodeType":"FunctionDefinition","parameters":{"id":2294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2284,"mutability":"mutable","name":"pool","nameLocation":"3361:4:21","nodeType":"VariableDeclaration","scope":2299,"src":"3353:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2283,"name":"address","nodeType":"ElementaryTypeName","src":"3353:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2287,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"3392:12:21","nodeType":"VariableDeclaration","scope":2299,"src":"3375:29:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2285,"name":"uint256","nodeType":"ElementaryTypeName","src":"3375:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2286,"nodeType":"ArrayTypeName","src":"3375:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2289,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"3422:17:21","nodeType":"VariableDeclaration","scope":2299,"src":"3414:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2288,"name":"uint256","nodeType":"ElementaryTypeName","src":"3414:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2291,"mutability":"mutable","name":"wethIsEth","nameLocation":"3454:9:21","nodeType":"VariableDeclaration","scope":2299,"src":"3449:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2290,"name":"bool","nodeType":"ElementaryTypeName","src":"3449:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2293,"mutability":"mutable","name":"userData","nameLocation":"3486:8:21","nodeType":"VariableDeclaration","scope":2299,"src":"3473:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2292,"name":"bytes","nodeType":"ElementaryTypeName","src":"3473:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3343:157:21"},"returnParameters":{"id":2298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2297,"mutability":"mutable","name":"amountsIn","nameLocation":"3544:9:21","nodeType":"VariableDeclaration","scope":2299,"src":"3527:26:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2295,"name":"uint256","nodeType":"ElementaryTypeName","src":"3527:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2296,"nodeType":"ArrayTypeName","src":"3527:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3526:28:21"},"scope":2727,"src":"3310:245:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2300,"nodeType":"StructuredDocumentation","src":"3561:574:21","text":" @notice Adds liquidity to a pool with arbitrary token amounts.\n @param pool Address of the liquidity pool\n @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n @param minBptAmountOut Minimum amount of pool tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to add liquidity\n @return bptAmountOut Actual amount of pool tokens received"},"functionSelector":"c08bc851","id":2316,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityUnbalanced","nameLocation":"4149:22:21","nodeType":"FunctionDefinition","parameters":{"id":2312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2302,"mutability":"mutable","name":"pool","nameLocation":"4189:4:21","nodeType":"VariableDeclaration","scope":2316,"src":"4181:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2301,"name":"address","nodeType":"ElementaryTypeName","src":"4181:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2305,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"4220:14:21","nodeType":"VariableDeclaration","scope":2316,"src":"4203:31:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2303,"name":"uint256","nodeType":"ElementaryTypeName","src":"4203:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2304,"nodeType":"ArrayTypeName","src":"4203:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2307,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"4252:15:21","nodeType":"VariableDeclaration","scope":2316,"src":"4244:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"4244:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"wethIsEth","nameLocation":"4282:9:21","nodeType":"VariableDeclaration","scope":2316,"src":"4277:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2308,"name":"bool","nodeType":"ElementaryTypeName","src":"4277:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2311,"mutability":"mutable","name":"userData","nameLocation":"4314:8:21","nodeType":"VariableDeclaration","scope":2316,"src":"4301:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2310,"name":"bytes","nodeType":"ElementaryTypeName","src":"4301:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4171:157:21"},"returnParameters":{"id":2315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2314,"mutability":"mutable","name":"bptAmountOut","nameLocation":"4363:12:21","nodeType":"VariableDeclaration","scope":2316,"src":"4355:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2313,"name":"uint256","nodeType":"ElementaryTypeName","src":"4355:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4354:22:21"},"scope":2727,"src":"4140:237:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2317,"nodeType":"StructuredDocumentation","src":"4383:605:21","text":" @notice Adds liquidity to a pool in a single token, receiving an exact amount of pool tokens.\n @param pool Address of the liquidity pool\n @param tokenIn Token used to add liquidity\n @param maxAmountIn Maximum amount of tokens to be added\n @param exactBptAmountOut Exact amount of pool tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to add liquidity\n @return amountIn Actual amount of tokens added"},"functionSelector":"72657d17","id":2335,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquiditySingleTokenExactOut","nameLocation":"5002:31:21","nodeType":"FunctionDefinition","parameters":{"id":2331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2319,"mutability":"mutable","name":"pool","nameLocation":"5051:4:21","nodeType":"VariableDeclaration","scope":2335,"src":"5043:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2318,"name":"address","nodeType":"ElementaryTypeName","src":"5043:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2322,"mutability":"mutable","name":"tokenIn","nameLocation":"5072:7:21","nodeType":"VariableDeclaration","scope":2335,"src":"5065:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2321,"nodeType":"UserDefinedTypeName","pathNode":{"id":2320,"name":"IERC20","nameLocations":["5065:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5065:6:21"},"referencedDeclaration":39274,"src":"5065:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2324,"mutability":"mutable","name":"maxAmountIn","nameLocation":"5097:11:21","nodeType":"VariableDeclaration","scope":2335,"src":"5089:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2323,"name":"uint256","nodeType":"ElementaryTypeName","src":"5089:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2326,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"5126:17:21","nodeType":"VariableDeclaration","scope":2335,"src":"5118:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2325,"name":"uint256","nodeType":"ElementaryTypeName","src":"5118:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2328,"mutability":"mutable","name":"wethIsEth","nameLocation":"5158:9:21","nodeType":"VariableDeclaration","scope":2335,"src":"5153:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2327,"name":"bool","nodeType":"ElementaryTypeName","src":"5153:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2330,"mutability":"mutable","name":"userData","nameLocation":"5190:8:21","nodeType":"VariableDeclaration","scope":2335,"src":"5177:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2329,"name":"bytes","nodeType":"ElementaryTypeName","src":"5177:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5033:171:21"},"returnParameters":{"id":2334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2333,"mutability":"mutable","name":"amountIn","nameLocation":"5239:8:21","nodeType":"VariableDeclaration","scope":2335,"src":"5231:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2332,"name":"uint256","nodeType":"ElementaryTypeName","src":"5231:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5230:18:21"},"scope":2727,"src":"4993:256:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2336,"nodeType":"StructuredDocumentation","src":"5255:530:21","text":" @notice Adds liquidity to a pool by donating the amounts in (no BPT out).\n @dev To support donation, the pool config `enableDonation` flag must be set to true.\n @param pool Address of the liquidity pool\n @param amountsIn Amounts of tokens to be donated, sorted in token registration order\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to donate liquidity"},"functionSelector":"bf6ee3fd","id":2348,"implemented":false,"kind":"function","modifiers":[],"name":"donate","nameLocation":"5799:6:21","nodeType":"FunctionDefinition","parameters":{"id":2346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2338,"mutability":"mutable","name":"pool","nameLocation":"5814:4:21","nodeType":"VariableDeclaration","scope":2348,"src":"5806:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2337,"name":"address","nodeType":"ElementaryTypeName","src":"5806:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2341,"mutability":"mutable","name":"amountsIn","nameLocation":"5837:9:21","nodeType":"VariableDeclaration","scope":2348,"src":"5820:26:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2339,"name":"uint256","nodeType":"ElementaryTypeName","src":"5820:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2340,"nodeType":"ArrayTypeName","src":"5820:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2343,"mutability":"mutable","name":"wethIsEth","nameLocation":"5853:9:21","nodeType":"VariableDeclaration","scope":2348,"src":"5848:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2342,"name":"bool","nodeType":"ElementaryTypeName","src":"5848:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2345,"mutability":"mutable","name":"userData","nameLocation":"5877:8:21","nodeType":"VariableDeclaration","scope":2348,"src":"5864:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2344,"name":"bytes","nodeType":"ElementaryTypeName","src":"5864:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5805:81:21"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[],"src":"5903:0:21"},"scope":2727,"src":"5790:114:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2349,"nodeType":"StructuredDocumentation","src":"5910:954:21","text":" @notice Adds liquidity to a pool with a custom request.\n @dev The given maximum and minimum amounts given may be interpreted as exact depending on the pool type.\n In any case the caller can expect them to be hard boundaries for the request.\n @param pool Address of the liquidity pool\n @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n @param minBptAmountOut Minimum amount of pool tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to add liquidity\n @return amountsIn Actual amounts of tokens added, sorted in token registration order\n @return bptAmountOut Actual amount of pool tokens received\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"0ca078ec","id":2370,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityCustom","nameLocation":"6878:18:21","nodeType":"FunctionDefinition","parameters":{"id":2361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2351,"mutability":"mutable","name":"pool","nameLocation":"6914:4:21","nodeType":"VariableDeclaration","scope":2370,"src":"6906:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2350,"name":"address","nodeType":"ElementaryTypeName","src":"6906:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2354,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"6945:12:21","nodeType":"VariableDeclaration","scope":2370,"src":"6928:29:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2352,"name":"uint256","nodeType":"ElementaryTypeName","src":"6928:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2353,"nodeType":"ArrayTypeName","src":"6928:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2356,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"6975:15:21","nodeType":"VariableDeclaration","scope":2370,"src":"6967:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2355,"name":"uint256","nodeType":"ElementaryTypeName","src":"6967:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2358,"mutability":"mutable","name":"wethIsEth","nameLocation":"7005:9:21","nodeType":"VariableDeclaration","scope":2370,"src":"7000:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2357,"name":"bool","nodeType":"ElementaryTypeName","src":"7000:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2360,"mutability":"mutable","name":"userData","nameLocation":"7037:8:21","nodeType":"VariableDeclaration","scope":2370,"src":"7024:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2359,"name":"bytes","nodeType":"ElementaryTypeName","src":"7024:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6896:155:21"},"returnParameters":{"id":2369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2364,"mutability":"mutable","name":"amountsIn","nameLocation":"7095:9:21","nodeType":"VariableDeclaration","scope":2370,"src":"7078:26:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2362,"name":"uint256","nodeType":"ElementaryTypeName","src":"7078:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2363,"nodeType":"ArrayTypeName","src":"7078:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2366,"mutability":"mutable","name":"bptAmountOut","nameLocation":"7114:12:21","nodeType":"VariableDeclaration","scope":2370,"src":"7106:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2365,"name":"uint256","nodeType":"ElementaryTypeName","src":"7106:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2368,"mutability":"mutable","name":"returnData","nameLocation":"7141:10:21","nodeType":"VariableDeclaration","scope":2370,"src":"7128:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2367,"name":"bytes","nodeType":"ElementaryTypeName","src":"7128:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7077:75:21"},"scope":2727,"src":"6869:284:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2371,"nodeType":"StructuredDocumentation","src":"7372:648:21","text":" @notice Removes liquidity with proportional token amounts from a pool, burning an exact pool token amount.\n @param pool Address of the liquidity pool\n @param exactBptAmountIn Exact amount of pool tokens provided\n @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to remove liquidity\n @return amountsOut Actual amounts of tokens received, sorted in token registration order"},"functionSelector":"51682750","id":2388,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityProportional","nameLocation":"8034:27:21","nodeType":"FunctionDefinition","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2373,"mutability":"mutable","name":"pool","nameLocation":"8079:4:21","nodeType":"VariableDeclaration","scope":2388,"src":"8071:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2372,"name":"address","nodeType":"ElementaryTypeName","src":"8071:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2375,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"8101:16:21","nodeType":"VariableDeclaration","scope":2388,"src":"8093:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2374,"name":"uint256","nodeType":"ElementaryTypeName","src":"8093:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2378,"mutability":"mutable","name":"minAmountsOut","nameLocation":"8144:13:21","nodeType":"VariableDeclaration","scope":2388,"src":"8127:30:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2376,"name":"uint256","nodeType":"ElementaryTypeName","src":"8127:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2377,"nodeType":"ArrayTypeName","src":"8127:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2380,"mutability":"mutable","name":"wethIsEth","nameLocation":"8172:9:21","nodeType":"VariableDeclaration","scope":2388,"src":"8167:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2379,"name":"bool","nodeType":"ElementaryTypeName","src":"8167:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"userData","nameLocation":"8204:8:21","nodeType":"VariableDeclaration","scope":2388,"src":"8191:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2381,"name":"bytes","nodeType":"ElementaryTypeName","src":"8191:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8061:157:21"},"returnParameters":{"id":2387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2386,"mutability":"mutable","name":"amountsOut","nameLocation":"8262:10:21","nodeType":"VariableDeclaration","scope":2388,"src":"8245:27:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2384,"name":"uint256","nodeType":"ElementaryTypeName","src":"8245:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2385,"nodeType":"ArrayTypeName","src":"8245:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8244:29:21"},"scope":2727,"src":"8025:249:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2389,"nodeType":"StructuredDocumentation","src":"8280:613:21","text":" @notice Removes liquidity from a pool via a single token, burning an exact pool token amount.\n @param pool Address of the liquidity pool\n @param exactBptAmountIn Exact amount of pool tokens provided\n @param tokenOut Token used to remove liquidity\n @param minAmountOut Minimum amount of tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to remove liquidity\n @return amountOut Actual amount of tokens received"},"functionSelector":"ecb2182c","id":2407,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquiditySingleTokenExactIn","nameLocation":"8907:33:21","nodeType":"FunctionDefinition","parameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2391,"mutability":"mutable","name":"pool","nameLocation":"8958:4:21","nodeType":"VariableDeclaration","scope":2407,"src":"8950:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2390,"name":"address","nodeType":"ElementaryTypeName","src":"8950:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2393,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"8980:16:21","nodeType":"VariableDeclaration","scope":2407,"src":"8972:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2392,"name":"uint256","nodeType":"ElementaryTypeName","src":"8972:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2396,"mutability":"mutable","name":"tokenOut","nameLocation":"9013:8:21","nodeType":"VariableDeclaration","scope":2407,"src":"9006:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2395,"nodeType":"UserDefinedTypeName","pathNode":{"id":2394,"name":"IERC20","nameLocations":["9006:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"9006:6:21"},"referencedDeclaration":39274,"src":"9006:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2398,"mutability":"mutable","name":"minAmountOut","nameLocation":"9039:12:21","nodeType":"VariableDeclaration","scope":2407,"src":"9031:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2397,"name":"uint256","nodeType":"ElementaryTypeName","src":"9031:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2400,"mutability":"mutable","name":"wethIsEth","nameLocation":"9066:9:21","nodeType":"VariableDeclaration","scope":2407,"src":"9061:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2399,"name":"bool","nodeType":"ElementaryTypeName","src":"9061:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2402,"mutability":"mutable","name":"userData","nameLocation":"9098:8:21","nodeType":"VariableDeclaration","scope":2407,"src":"9085:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2401,"name":"bytes","nodeType":"ElementaryTypeName","src":"9085:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8940:172:21"},"returnParameters":{"id":2406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2405,"mutability":"mutable","name":"amountOut","nameLocation":"9147:9:21","nodeType":"VariableDeclaration","scope":2407,"src":"9139:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2404,"name":"uint256","nodeType":"ElementaryTypeName","src":"9139:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9138:19:21"},"scope":2727,"src":"8898:260:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2408,"nodeType":"StructuredDocumentation","src":"9164:632:21","text":" @notice Removes liquidity from a pool via a single token, specifying the exact amount of tokens to receive.\n @param pool Address of the liquidity pool\n @param maxBptAmountIn Maximum amount of pool tokens provided\n @param tokenOut Token used to remove liquidity\n @param exactAmountOut Exact amount of tokens to be received\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to remove liquidity\n @return bptAmountIn Actual amount of pool tokens burned"},"functionSelector":"e7326def","id":2426,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquiditySingleTokenExactOut","nameLocation":"9810:34:21","nodeType":"FunctionDefinition","parameters":{"id":2422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2410,"mutability":"mutable","name":"pool","nameLocation":"9862:4:21","nodeType":"VariableDeclaration","scope":2426,"src":"9854:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2409,"name":"address","nodeType":"ElementaryTypeName","src":"9854:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2412,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"9884:14:21","nodeType":"VariableDeclaration","scope":2426,"src":"9876:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2411,"name":"uint256","nodeType":"ElementaryTypeName","src":"9876:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2415,"mutability":"mutable","name":"tokenOut","nameLocation":"9915:8:21","nodeType":"VariableDeclaration","scope":2426,"src":"9908:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2414,"nodeType":"UserDefinedTypeName","pathNode":{"id":2413,"name":"IERC20","nameLocations":["9908:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"9908:6:21"},"referencedDeclaration":39274,"src":"9908:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2417,"mutability":"mutable","name":"exactAmountOut","nameLocation":"9941:14:21","nodeType":"VariableDeclaration","scope":2426,"src":"9933:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2416,"name":"uint256","nodeType":"ElementaryTypeName","src":"9933:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2419,"mutability":"mutable","name":"wethIsEth","nameLocation":"9970:9:21","nodeType":"VariableDeclaration","scope":2426,"src":"9965:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2418,"name":"bool","nodeType":"ElementaryTypeName","src":"9965:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2421,"mutability":"mutable","name":"userData","nameLocation":"10002:8:21","nodeType":"VariableDeclaration","scope":2426,"src":"9989:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2420,"name":"bytes","nodeType":"ElementaryTypeName","src":"9989:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9844:172:21"},"returnParameters":{"id":2425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2424,"mutability":"mutable","name":"bptAmountIn","nameLocation":"10051:11:21","nodeType":"VariableDeclaration","scope":2426,"src":"10043:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2423,"name":"uint256","nodeType":"ElementaryTypeName","src":"10043:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10042:21:21"},"scope":2727,"src":"9801:263:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2427,"nodeType":"StructuredDocumentation","src":"10070:960:21","text":" @notice Removes liquidity from a pool with a custom request.\n @dev The given maximum and minimum amounts given may be interpreted as exact depending on the pool type.\n In any case the caller can expect them to be hard boundaries for the request.\n @param pool Address of the liquidity pool\n @param maxBptAmountIn Maximum amount of pool tokens provided\n @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to remove liquidity\n @return bptAmountIn Actual amount of pool tokens burned\n @return amountsOut Actual amounts of tokens received, sorted in token registration order\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"82bf2b24","id":2448,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityCustom","nameLocation":"11044:21:21","nodeType":"FunctionDefinition","parameters":{"id":2439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2429,"mutability":"mutable","name":"pool","nameLocation":"11083:4:21","nodeType":"VariableDeclaration","scope":2448,"src":"11075:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2428,"name":"address","nodeType":"ElementaryTypeName","src":"11075:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"11105:14:21","nodeType":"VariableDeclaration","scope":2448,"src":"11097:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"11097:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2434,"mutability":"mutable","name":"minAmountsOut","nameLocation":"11146:13:21","nodeType":"VariableDeclaration","scope":2448,"src":"11129:30:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2432,"name":"uint256","nodeType":"ElementaryTypeName","src":"11129:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2433,"nodeType":"ArrayTypeName","src":"11129:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2436,"mutability":"mutable","name":"wethIsEth","nameLocation":"11174:9:21","nodeType":"VariableDeclaration","scope":2448,"src":"11169:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2435,"name":"bool","nodeType":"ElementaryTypeName","src":"11169:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2438,"mutability":"mutable","name":"userData","nameLocation":"11206:8:21","nodeType":"VariableDeclaration","scope":2448,"src":"11193:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2437,"name":"bytes","nodeType":"ElementaryTypeName","src":"11193:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11065:155:21"},"returnParameters":{"id":2447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2441,"mutability":"mutable","name":"bptAmountIn","nameLocation":"11255:11:21","nodeType":"VariableDeclaration","scope":2448,"src":"11247:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2440,"name":"uint256","nodeType":"ElementaryTypeName","src":"11247:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2444,"mutability":"mutable","name":"amountsOut","nameLocation":"11285:10:21","nodeType":"VariableDeclaration","scope":2448,"src":"11268:27:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2442,"name":"uint256","nodeType":"ElementaryTypeName","src":"11268:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2443,"nodeType":"ArrayTypeName","src":"11268:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2446,"mutability":"mutable","name":"returnData","nameLocation":"11310:10:21","nodeType":"VariableDeclaration","scope":2448,"src":"11297:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2445,"name":"bytes","nodeType":"ElementaryTypeName","src":"11297:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11246:75:21"},"scope":2727,"src":"11035:287:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2449,"nodeType":"StructuredDocumentation","src":"11328:447:21","text":" @notice Removes liquidity proportionally, burning an exact pool token amount. Only available in Recovery Mode.\n @param pool Address of the liquidity pool\n @param exactBptAmountIn Exact amount of pool tokens provided\n @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n @return amountsOut Actual amounts of tokens received, sorted in token registration order"},"functionSelector":"08c04793","id":2462,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityRecovery","nameLocation":"11789:23:21","nodeType":"FunctionDefinition","parameters":{"id":2457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2451,"mutability":"mutable","name":"pool","nameLocation":"11830:4:21","nodeType":"VariableDeclaration","scope":2462,"src":"11822:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2450,"name":"address","nodeType":"ElementaryTypeName","src":"11822:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2453,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"11852:16:21","nodeType":"VariableDeclaration","scope":2462,"src":"11844:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2452,"name":"uint256","nodeType":"ElementaryTypeName","src":"11844:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2456,"mutability":"mutable","name":"minAmountsOut","nameLocation":"11895:13:21","nodeType":"VariableDeclaration","scope":2462,"src":"11878:30:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2454,"name":"uint256","nodeType":"ElementaryTypeName","src":"11878:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2455,"nodeType":"ArrayTypeName","src":"11878:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11812:102:21"},"returnParameters":{"id":2461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2460,"mutability":"mutable","name":"amountsOut","nameLocation":"11958:10:21","nodeType":"VariableDeclaration","scope":2462,"src":"11941:27:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2458,"name":"uint256","nodeType":"ElementaryTypeName","src":"11941:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2459,"nodeType":"ArrayTypeName","src":"11941:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11940:29:21"},"scope":2727,"src":"11780:190:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IRouter.SwapSingleTokenHookParams","documentation":{"id":2463,"nodeType":"StructuredDocumentation","src":"12184:770:21","text":" @notice Data for the swap hook.\n @param sender Account initiating the swap operation\n @param kind Type of swap (exact in or exact out)\n @param pool Address of the liquidity pool\n @param tokenIn Token to be swapped from\n @param tokenOut Token to be swapped to\n @param amountGiven Amount given based on kind of the swap (e.g., tokenIn for exact in)\n @param limit Maximum or minimum amount based on the kind of swap (e.g., maxAmountIn for exact out)\n @param deadline Deadline for the swap, after which it will revert\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the swap request"},"id":2487,"members":[{"constant":false,"id":2465,"mutability":"mutable","name":"sender","nameLocation":"13010:6:21","nodeType":"VariableDeclaration","scope":2487,"src":"13002:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"13002:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2468,"mutability":"mutable","name":"kind","nameLocation":"13035:4:21","nodeType":"VariableDeclaration","scope":2487,"src":"13026:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"typeName":{"id":2467,"nodeType":"UserDefinedTypeName","pathNode":{"id":2466,"name":"SwapKind","nameLocations":["13026:8:21"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"13026:8:21"},"referencedDeclaration":4517,"src":"13026:8:21","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"visibility":"internal"},{"constant":false,"id":2470,"mutability":"mutable","name":"pool","nameLocation":"13057:4:21","nodeType":"VariableDeclaration","scope":2487,"src":"13049:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2469,"name":"address","nodeType":"ElementaryTypeName","src":"13049:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"tokenIn","nameLocation":"13078:7:21","nodeType":"VariableDeclaration","scope":2487,"src":"13071:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2472,"nodeType":"UserDefinedTypeName","pathNode":{"id":2471,"name":"IERC20","nameLocations":["13071:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"13071:6:21"},"referencedDeclaration":39274,"src":"13071:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2476,"mutability":"mutable","name":"tokenOut","nameLocation":"13102:8:21","nodeType":"VariableDeclaration","scope":2487,"src":"13095:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2475,"nodeType":"UserDefinedTypeName","pathNode":{"id":2474,"name":"IERC20","nameLocations":["13095:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"13095:6:21"},"referencedDeclaration":39274,"src":"13095:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2478,"mutability":"mutable","name":"amountGiven","nameLocation":"13128:11:21","nodeType":"VariableDeclaration","scope":2487,"src":"13120:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2477,"name":"uint256","nodeType":"ElementaryTypeName","src":"13120:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2480,"mutability":"mutable","name":"limit","nameLocation":"13157:5:21","nodeType":"VariableDeclaration","scope":2487,"src":"13149:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2479,"name":"uint256","nodeType":"ElementaryTypeName","src":"13149:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2482,"mutability":"mutable","name":"deadline","nameLocation":"13180:8:21","nodeType":"VariableDeclaration","scope":2487,"src":"13172:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2481,"name":"uint256","nodeType":"ElementaryTypeName","src":"13172:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2484,"mutability":"mutable","name":"wethIsEth","nameLocation":"13203:9:21","nodeType":"VariableDeclaration","scope":2487,"src":"13198:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2483,"name":"bool","nodeType":"ElementaryTypeName","src":"13198:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2486,"mutability":"mutable","name":"userData","nameLocation":"13228:8:21","nodeType":"VariableDeclaration","scope":2487,"src":"13222:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2485,"name":"bytes","nodeType":"ElementaryTypeName","src":"13222:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapSingleTokenHookParams","nameLocation":"12966:25:21","nodeType":"StructDefinition","scope":2727,"src":"12959:284:21","visibility":"public"},{"documentation":{"id":2488,"nodeType":"StructuredDocumentation","src":"13249:744:21","text":" @notice Executes a swap operation specifying an exact input token amount.\n @param pool Address of the liquidity pool\n @param tokenIn Token to be swapped from\n @param tokenOut Token to be swapped to\n @param exactAmountIn Exact amounts of input tokens to send\n @param minAmountOut Minimum amount of tokens to be received\n @param deadline Deadline for the swap, after which it will revert\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the swap request\n @return amountOut Calculated amount of output tokens to be received in exchange for the given input tokens"},"functionSelector":"750283bc","id":2511,"implemented":false,"kind":"function","modifiers":[],"name":"swapSingleTokenExactIn","nameLocation":"14007:22:21","nodeType":"FunctionDefinition","parameters":{"id":2507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"mutability":"mutable","name":"pool","nameLocation":"14047:4:21","nodeType":"VariableDeclaration","scope":2511,"src":"14039:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2489,"name":"address","nodeType":"ElementaryTypeName","src":"14039:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2493,"mutability":"mutable","name":"tokenIn","nameLocation":"14068:7:21","nodeType":"VariableDeclaration","scope":2511,"src":"14061:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2492,"nodeType":"UserDefinedTypeName","pathNode":{"id":2491,"name":"IERC20","nameLocations":["14061:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14061:6:21"},"referencedDeclaration":39274,"src":"14061:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2496,"mutability":"mutable","name":"tokenOut","nameLocation":"14092:8:21","nodeType":"VariableDeclaration","scope":2511,"src":"14085:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2495,"nodeType":"UserDefinedTypeName","pathNode":{"id":2494,"name":"IERC20","nameLocations":["14085:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14085:6:21"},"referencedDeclaration":39274,"src":"14085:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2498,"mutability":"mutable","name":"exactAmountIn","nameLocation":"14118:13:21","nodeType":"VariableDeclaration","scope":2511,"src":"14110:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2497,"name":"uint256","nodeType":"ElementaryTypeName","src":"14110:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2500,"mutability":"mutable","name":"minAmountOut","nameLocation":"14149:12:21","nodeType":"VariableDeclaration","scope":2511,"src":"14141:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2499,"name":"uint256","nodeType":"ElementaryTypeName","src":"14141:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2502,"mutability":"mutable","name":"deadline","nameLocation":"14179:8:21","nodeType":"VariableDeclaration","scope":2511,"src":"14171:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2501,"name":"uint256","nodeType":"ElementaryTypeName","src":"14171:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2504,"mutability":"mutable","name":"wethIsEth","nameLocation":"14202:9:21","nodeType":"VariableDeclaration","scope":2511,"src":"14197:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2503,"name":"bool","nodeType":"ElementaryTypeName","src":"14197:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2506,"mutability":"mutable","name":"userData","nameLocation":"14236:8:21","nodeType":"VariableDeclaration","scope":2511,"src":"14221:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2505,"name":"bytes","nodeType":"ElementaryTypeName","src":"14221:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14029:221:21"},"returnParameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2509,"mutability":"mutable","name":"amountOut","nameLocation":"14285:9:21","nodeType":"VariableDeclaration","scope":2511,"src":"14277:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2508,"name":"uint256","nodeType":"ElementaryTypeName","src":"14277:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14276:19:21"},"scope":2727,"src":"13998:298:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2512,"nodeType":"StructuredDocumentation","src":"14302:743:21","text":" @notice Executes a swap operation specifying an exact output token amount.\n @param pool Address of the liquidity pool\n @param tokenIn Token to be swapped from\n @param tokenOut Token to be swapped to\n @param exactAmountOut Exact amounts of input tokens to receive\n @param maxAmountIn Maximum amount of tokens to be sent\n @param deadline Deadline for the swap, after which it will revert\n @param userData Additional (optional) data sent with the swap request\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @return amountIn Calculated amount of input tokens to be sent in exchange for the requested output tokens"},"functionSelector":"94e86ef8","id":2535,"implemented":false,"kind":"function","modifiers":[],"name":"swapSingleTokenExactOut","nameLocation":"15059:23:21","nodeType":"FunctionDefinition","parameters":{"id":2531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2514,"mutability":"mutable","name":"pool","nameLocation":"15100:4:21","nodeType":"VariableDeclaration","scope":2535,"src":"15092:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2513,"name":"address","nodeType":"ElementaryTypeName","src":"15092:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"tokenIn","nameLocation":"15121:7:21","nodeType":"VariableDeclaration","scope":2535,"src":"15114:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2516,"nodeType":"UserDefinedTypeName","pathNode":{"id":2515,"name":"IERC20","nameLocations":["15114:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"15114:6:21"},"referencedDeclaration":39274,"src":"15114:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2520,"mutability":"mutable","name":"tokenOut","nameLocation":"15145:8:21","nodeType":"VariableDeclaration","scope":2535,"src":"15138:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2519,"nodeType":"UserDefinedTypeName","pathNode":{"id":2518,"name":"IERC20","nameLocations":["15138:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"15138:6:21"},"referencedDeclaration":39274,"src":"15138:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2522,"mutability":"mutable","name":"exactAmountOut","nameLocation":"15171:14:21","nodeType":"VariableDeclaration","scope":2535,"src":"15163:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2521,"name":"uint256","nodeType":"ElementaryTypeName","src":"15163:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2524,"mutability":"mutable","name":"maxAmountIn","nameLocation":"15203:11:21","nodeType":"VariableDeclaration","scope":2535,"src":"15195:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2523,"name":"uint256","nodeType":"ElementaryTypeName","src":"15195:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2526,"mutability":"mutable","name":"deadline","nameLocation":"15232:8:21","nodeType":"VariableDeclaration","scope":2535,"src":"15224:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2525,"name":"uint256","nodeType":"ElementaryTypeName","src":"15224:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2528,"mutability":"mutable","name":"wethIsEth","nameLocation":"15255:9:21","nodeType":"VariableDeclaration","scope":2535,"src":"15250:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2527,"name":"bool","nodeType":"ElementaryTypeName","src":"15250:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2530,"mutability":"mutable","name":"userData","nameLocation":"15289:8:21","nodeType":"VariableDeclaration","scope":2535,"src":"15274:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2529,"name":"bytes","nodeType":"ElementaryTypeName","src":"15274:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15082:221:21"},"returnParameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"mutability":"mutable","name":"amountIn","nameLocation":"15338:8:21","nodeType":"VariableDeclaration","scope":2535,"src":"15330:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2532,"name":"uint256","nodeType":"ElementaryTypeName","src":"15330:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15329:18:21"},"scope":2727,"src":"15050:298:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2536,"nodeType":"StructuredDocumentation","src":"15563:518:21","text":" @notice Queries an `addLiquidityProportional` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param exactBptAmountOut Exact amount of pool tokens to be received\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return amountsIn Expected amounts of tokens to add, sorted in token registration order"},"functionSelector":"9de90518","id":2550,"implemented":false,"kind":"function","modifiers":[],"name":"queryAddLiquidityProportional","nameLocation":"16095:29:21","nodeType":"FunctionDefinition","parameters":{"id":2545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2538,"mutability":"mutable","name":"pool","nameLocation":"16142:4:21","nodeType":"VariableDeclaration","scope":2550,"src":"16134:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2537,"name":"address","nodeType":"ElementaryTypeName","src":"16134:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2540,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"16164:17:21","nodeType":"VariableDeclaration","scope":2550,"src":"16156:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2539,"name":"uint256","nodeType":"ElementaryTypeName","src":"16156:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2542,"mutability":"mutable","name":"sender","nameLocation":"16199:6:21","nodeType":"VariableDeclaration","scope":2550,"src":"16191:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2541,"name":"address","nodeType":"ElementaryTypeName","src":"16191:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2544,"mutability":"mutable","name":"userData","nameLocation":"16228:8:21","nodeType":"VariableDeclaration","scope":2550,"src":"16215:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2543,"name":"bytes","nodeType":"ElementaryTypeName","src":"16215:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16124:118:21"},"returnParameters":{"id":2549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2548,"mutability":"mutable","name":"amountsIn","nameLocation":"16278:9:21","nodeType":"VariableDeclaration","scope":2550,"src":"16261:26:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"16261:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2547,"nodeType":"ArrayTypeName","src":"16261:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16260:28:21"},"scope":2727,"src":"16086:203:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2551,"nodeType":"StructuredDocumentation","src":"16295:517:21","text":" @notice Queries an `addLiquidityUnbalanced` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param exactAmountsIn Exact amounts of tokens to be added, sorted in token registration order\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return bptAmountOut Expected amount of pool tokens to receive"},"functionSelector":"da001f7d","id":2565,"implemented":false,"kind":"function","modifiers":[],"name":"queryAddLiquidityUnbalanced","nameLocation":"16826:27:21","nodeType":"FunctionDefinition","parameters":{"id":2561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2553,"mutability":"mutable","name":"pool","nameLocation":"16871:4:21","nodeType":"VariableDeclaration","scope":2565,"src":"16863:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2552,"name":"address","nodeType":"ElementaryTypeName","src":"16863:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2556,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"16902:14:21","nodeType":"VariableDeclaration","scope":2565,"src":"16885:31:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2554,"name":"uint256","nodeType":"ElementaryTypeName","src":"16885:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2555,"nodeType":"ArrayTypeName","src":"16885:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2558,"mutability":"mutable","name":"sender","nameLocation":"16934:6:21","nodeType":"VariableDeclaration","scope":2565,"src":"16926:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2557,"name":"address","nodeType":"ElementaryTypeName","src":"16926:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2560,"mutability":"mutable","name":"userData","nameLocation":"16963:8:21","nodeType":"VariableDeclaration","scope":2565,"src":"16950:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2559,"name":"bytes","nodeType":"ElementaryTypeName","src":"16950:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16853:124:21"},"returnParameters":{"id":2564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2563,"mutability":"mutable","name":"bptAmountOut","nameLocation":"17004:12:21","nodeType":"VariableDeclaration","scope":2565,"src":"16996:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2562,"name":"uint256","nodeType":"ElementaryTypeName","src":"16996:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16995:22:21"},"scope":2727,"src":"16817:201:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2566,"nodeType":"StructuredDocumentation","src":"17024:542:21","text":" @notice Queries an `addLiquiditySingleTokenExactOut` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param tokenIn Token used to add liquidity\n @param exactBptAmountOut Expected exact amount of pool tokens to receive\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return amountIn Expected amount of tokens to add"},"functionSelector":"1d56798d","id":2582,"implemented":false,"kind":"function","modifiers":[],"name":"queryAddLiquiditySingleTokenExactOut","nameLocation":"17580:36:21","nodeType":"FunctionDefinition","parameters":{"id":2578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2568,"mutability":"mutable","name":"pool","nameLocation":"17634:4:21","nodeType":"VariableDeclaration","scope":2582,"src":"17626:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2567,"name":"address","nodeType":"ElementaryTypeName","src":"17626:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2571,"mutability":"mutable","name":"tokenIn","nameLocation":"17655:7:21","nodeType":"VariableDeclaration","scope":2582,"src":"17648:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2570,"nodeType":"UserDefinedTypeName","pathNode":{"id":2569,"name":"IERC20","nameLocations":["17648:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"17648:6:21"},"referencedDeclaration":39274,"src":"17648:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2573,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"17680:17:21","nodeType":"VariableDeclaration","scope":2582,"src":"17672:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2572,"name":"uint256","nodeType":"ElementaryTypeName","src":"17672:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2575,"mutability":"mutable","name":"sender","nameLocation":"17715:6:21","nodeType":"VariableDeclaration","scope":2582,"src":"17707:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2574,"name":"address","nodeType":"ElementaryTypeName","src":"17707:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2577,"mutability":"mutable","name":"userData","nameLocation":"17744:8:21","nodeType":"VariableDeclaration","scope":2582,"src":"17731:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2576,"name":"bytes","nodeType":"ElementaryTypeName","src":"17731:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17616:142:21"},"returnParameters":{"id":2581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2580,"mutability":"mutable","name":"amountIn","nameLocation":"17785:8:21","nodeType":"VariableDeclaration","scope":2582,"src":"17777:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2579,"name":"uint256","nodeType":"ElementaryTypeName","src":"17777:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17776:18:21"},"scope":2727,"src":"17571:224:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2583,"nodeType":"StructuredDocumentation","src":"17801:779:21","text":" @notice Queries an `addLiquidityCustom` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n @param minBptAmountOut Expected minimum amount of pool tokens to receive\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return amountsIn Expected amounts of tokens to add, sorted in token registration order\n @return bptAmountOut Expected amount of pool tokens to receive\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"452db952","id":2604,"implemented":false,"kind":"function","modifiers":[],"name":"queryAddLiquidityCustom","nameLocation":"18594:23:21","nodeType":"FunctionDefinition","parameters":{"id":2595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2585,"mutability":"mutable","name":"pool","nameLocation":"18635:4:21","nodeType":"VariableDeclaration","scope":2604,"src":"18627:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2584,"name":"address","nodeType":"ElementaryTypeName","src":"18627:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2588,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"18666:12:21","nodeType":"VariableDeclaration","scope":2604,"src":"18649:29:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2586,"name":"uint256","nodeType":"ElementaryTypeName","src":"18649:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2587,"nodeType":"ArrayTypeName","src":"18649:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2590,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"18696:15:21","nodeType":"VariableDeclaration","scope":2604,"src":"18688:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2589,"name":"uint256","nodeType":"ElementaryTypeName","src":"18688:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2592,"mutability":"mutable","name":"sender","nameLocation":"18729:6:21","nodeType":"VariableDeclaration","scope":2604,"src":"18721:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2591,"name":"address","nodeType":"ElementaryTypeName","src":"18721:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2594,"mutability":"mutable","name":"userData","nameLocation":"18758:8:21","nodeType":"VariableDeclaration","scope":2604,"src":"18745:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2593,"name":"bytes","nodeType":"ElementaryTypeName","src":"18745:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18617:155:21"},"returnParameters":{"id":2603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2598,"mutability":"mutable","name":"amountsIn","nameLocation":"18808:9:21","nodeType":"VariableDeclaration","scope":2604,"src":"18791:26:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2596,"name":"uint256","nodeType":"ElementaryTypeName","src":"18791:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2597,"nodeType":"ArrayTypeName","src":"18791:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2600,"mutability":"mutable","name":"bptAmountOut","nameLocation":"18827:12:21","nodeType":"VariableDeclaration","scope":2604,"src":"18819:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2599,"name":"uint256","nodeType":"ElementaryTypeName","src":"18819:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2602,"mutability":"mutable","name":"returnData","nameLocation":"18854:10:21","nodeType":"VariableDeclaration","scope":2604,"src":"18841:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2601,"name":"bytes","nodeType":"ElementaryTypeName","src":"18841:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18790:75:21"},"scope":2727,"src":"18585:281:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2605,"nodeType":"StructuredDocumentation","src":"18872:532:21","text":" @notice Queries a `removeLiquidityProportional` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param exactBptAmountIn Exact amount of pool tokens provided for the query\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return amountsOut Expected amounts of tokens to receive, sorted in token registration order"},"functionSelector":"0f710888","id":2619,"implemented":false,"kind":"function","modifiers":[],"name":"queryRemoveLiquidityProportional","nameLocation":"19418:32:21","nodeType":"FunctionDefinition","parameters":{"id":2614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2607,"mutability":"mutable","name":"pool","nameLocation":"19468:4:21","nodeType":"VariableDeclaration","scope":2619,"src":"19460:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2606,"name":"address","nodeType":"ElementaryTypeName","src":"19460:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2609,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"19490:16:21","nodeType":"VariableDeclaration","scope":2619,"src":"19482:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2608,"name":"uint256","nodeType":"ElementaryTypeName","src":"19482:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2611,"mutability":"mutable","name":"sender","nameLocation":"19524:6:21","nodeType":"VariableDeclaration","scope":2619,"src":"19516:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2610,"name":"address","nodeType":"ElementaryTypeName","src":"19516:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2613,"mutability":"mutable","name":"userData","nameLocation":"19553:8:21","nodeType":"VariableDeclaration","scope":2619,"src":"19540:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2612,"name":"bytes","nodeType":"ElementaryTypeName","src":"19540:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19450:117:21"},"returnParameters":{"id":2618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2617,"mutability":"mutable","name":"amountsOut","nameLocation":"19603:10:21","nodeType":"VariableDeclaration","scope":2619,"src":"19586:27:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2615,"name":"uint256","nodeType":"ElementaryTypeName","src":"19586:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2616,"nodeType":"ArrayTypeName","src":"19586:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"19585:29:21"},"scope":2727,"src":"19409:206:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2620,"nodeType":"StructuredDocumentation","src":"19621:554:21","text":" @notice Queries a `removeLiquiditySingleTokenExactIn` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param exactBptAmountIn Exact amount of pool tokens provided for the query\n @param tokenOut Token used to remove liquidity\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return amountOut Expected amount of tokens to receive"},"functionSelector":"23b39241","id":2636,"implemented":false,"kind":"function","modifiers":[],"name":"queryRemoveLiquiditySingleTokenExactIn","nameLocation":"20189:38:21","nodeType":"FunctionDefinition","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2622,"mutability":"mutable","name":"pool","nameLocation":"20245:4:21","nodeType":"VariableDeclaration","scope":2636,"src":"20237:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2621,"name":"address","nodeType":"ElementaryTypeName","src":"20237:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2624,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"20267:16:21","nodeType":"VariableDeclaration","scope":2636,"src":"20259:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2623,"name":"uint256","nodeType":"ElementaryTypeName","src":"20259:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"tokenOut","nameLocation":"20300:8:21","nodeType":"VariableDeclaration","scope":2636,"src":"20293:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2626,"nodeType":"UserDefinedTypeName","pathNode":{"id":2625,"name":"IERC20","nameLocations":["20293:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"20293:6:21"},"referencedDeclaration":39274,"src":"20293:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"sender","nameLocation":"20326:6:21","nodeType":"VariableDeclaration","scope":2636,"src":"20318:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2628,"name":"address","nodeType":"ElementaryTypeName","src":"20318:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"userData","nameLocation":"20355:8:21","nodeType":"VariableDeclaration","scope":2636,"src":"20342:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2630,"name":"bytes","nodeType":"ElementaryTypeName","src":"20342:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20227:142:21"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"amountOut","nameLocation":"20396:9:21","nodeType":"VariableDeclaration","scope":2636,"src":"20388:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2633,"name":"uint256","nodeType":"ElementaryTypeName","src":"20388:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20387:19:21"},"scope":2727,"src":"20180:227:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2637,"nodeType":"StructuredDocumentation","src":"20413:549:21","text":" @notice Queries a `removeLiquiditySingleTokenExactOut` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param tokenOut Token used to remove liquidity\n @param exactAmountOut Expected exact amount of tokens to receive\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return bptAmountIn Expected amount of pool tokens to burn"},"functionSelector":"53d0bb98","id":2653,"implemented":false,"kind":"function","modifiers":[],"name":"queryRemoveLiquiditySingleTokenExactOut","nameLocation":"20976:39:21","nodeType":"FunctionDefinition","parameters":{"id":2649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2639,"mutability":"mutable","name":"pool","nameLocation":"21033:4:21","nodeType":"VariableDeclaration","scope":2653,"src":"21025:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2638,"name":"address","nodeType":"ElementaryTypeName","src":"21025:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2642,"mutability":"mutable","name":"tokenOut","nameLocation":"21054:8:21","nodeType":"VariableDeclaration","scope":2653,"src":"21047:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2641,"nodeType":"UserDefinedTypeName","pathNode":{"id":2640,"name":"IERC20","nameLocations":["21047:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"21047:6:21"},"referencedDeclaration":39274,"src":"21047:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2644,"mutability":"mutable","name":"exactAmountOut","nameLocation":"21080:14:21","nodeType":"VariableDeclaration","scope":2653,"src":"21072:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2643,"name":"uint256","nodeType":"ElementaryTypeName","src":"21072:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"sender","nameLocation":"21112:6:21","nodeType":"VariableDeclaration","scope":2653,"src":"21104:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2645,"name":"address","nodeType":"ElementaryTypeName","src":"21104:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2648,"mutability":"mutable","name":"userData","nameLocation":"21141:8:21","nodeType":"VariableDeclaration","scope":2653,"src":"21128:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2647,"name":"bytes","nodeType":"ElementaryTypeName","src":"21128:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21015:140:21"},"returnParameters":{"id":2652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2651,"mutability":"mutable","name":"bptAmountIn","nameLocation":"21182:11:21","nodeType":"VariableDeclaration","scope":2653,"src":"21174:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2650,"name":"uint256","nodeType":"ElementaryTypeName","src":"21174:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21173:21:21"},"scope":2727,"src":"20967:228:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2654,"nodeType":"StructuredDocumentation","src":"21201:779:21","text":" @notice Queries a `removeLiquidityCustom` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param maxBptAmountIn Maximum amount of pool tokens provided\n @param minAmountsOut Expected minimum amounts of tokens to receive, sorted in token registration order\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return bptAmountIn Expected amount of pool tokens to burn\n @return amountsOut Expected amounts of tokens to receive, sorted in token registration order\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"c330c7be","id":2675,"implemented":false,"kind":"function","modifiers":[],"name":"queryRemoveLiquidityCustom","nameLocation":"21994:26:21","nodeType":"FunctionDefinition","parameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2656,"mutability":"mutable","name":"pool","nameLocation":"22038:4:21","nodeType":"VariableDeclaration","scope":2675,"src":"22030:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2655,"name":"address","nodeType":"ElementaryTypeName","src":"22030:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2658,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"22060:14:21","nodeType":"VariableDeclaration","scope":2675,"src":"22052:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2657,"name":"uint256","nodeType":"ElementaryTypeName","src":"22052:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2661,"mutability":"mutable","name":"minAmountsOut","nameLocation":"22101:13:21","nodeType":"VariableDeclaration","scope":2675,"src":"22084:30:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2659,"name":"uint256","nodeType":"ElementaryTypeName","src":"22084:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2660,"nodeType":"ArrayTypeName","src":"22084:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2663,"mutability":"mutable","name":"sender","nameLocation":"22132:6:21","nodeType":"VariableDeclaration","scope":2675,"src":"22124:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2662,"name":"address","nodeType":"ElementaryTypeName","src":"22124:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2665,"mutability":"mutable","name":"userData","nameLocation":"22161:8:21","nodeType":"VariableDeclaration","scope":2675,"src":"22148:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2664,"name":"bytes","nodeType":"ElementaryTypeName","src":"22148:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22020:155:21"},"returnParameters":{"id":2674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2668,"mutability":"mutable","name":"bptAmountIn","nameLocation":"22202:11:21","nodeType":"VariableDeclaration","scope":2675,"src":"22194:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2667,"name":"uint256","nodeType":"ElementaryTypeName","src":"22194:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2671,"mutability":"mutable","name":"amountsOut","nameLocation":"22232:10:21","nodeType":"VariableDeclaration","scope":2675,"src":"22215:27:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2669,"name":"uint256","nodeType":"ElementaryTypeName","src":"22215:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2670,"nodeType":"ArrayTypeName","src":"22215:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2673,"mutability":"mutable","name":"returnData","nameLocation":"22257:10:21","nodeType":"VariableDeclaration","scope":2675,"src":"22244:23:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2672,"name":"bytes","nodeType":"ElementaryTypeName","src":"22244:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22193:75:21"},"scope":2727,"src":"21985:284:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2676,"nodeType":"StructuredDocumentation","src":"22275:334:21","text":" @notice Queries a `removeLiquidityRecovery` operation without actually executing it.\n @param pool Address of the liquidity pool\n @param exactBptAmountIn Exact amount of pool tokens provided for the query\n @return amountsOut Expected amounts of tokens to receive, sorted in token registration order"},"functionSelector":"b037ed36","id":2686,"implemented":false,"kind":"function","modifiers":[],"name":"queryRemoveLiquidityRecovery","nameLocation":"22623:28:21","nodeType":"FunctionDefinition","parameters":{"id":2681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2678,"mutability":"mutable","name":"pool","nameLocation":"22669:4:21","nodeType":"VariableDeclaration","scope":2686,"src":"22661:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"22661:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2680,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"22691:16:21","nodeType":"VariableDeclaration","scope":2686,"src":"22683:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2679,"name":"uint256","nodeType":"ElementaryTypeName","src":"22683:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22651:62:21"},"returnParameters":{"id":2685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2684,"mutability":"mutable","name":"amountsOut","nameLocation":"22749:10:21","nodeType":"VariableDeclaration","scope":2686,"src":"22732:27:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2682,"name":"uint256","nodeType":"ElementaryTypeName","src":"22732:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2683,"nodeType":"ArrayTypeName","src":"22732:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22731:29:21"},"scope":2727,"src":"22614:147:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"22767:637:21","text":" @notice Queries a swap operation specifying an exact input token amount without actually executing it.\n @param pool Address of the liquidity pool\n @param tokenIn Token to be swapped from\n @param tokenOut Token to be swapped to\n @param exactAmountIn Exact amounts of input tokens to send\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return amountOut Calculated amount of output tokens to be received in exchange for the given input tokens"},"functionSelector":"3ebc54e5","id":2706,"implemented":false,"kind":"function","modifiers":[],"name":"querySwapSingleTokenExactIn","nameLocation":"23418:27:21","nodeType":"FunctionDefinition","parameters":{"id":2702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"mutability":"mutable","name":"pool","nameLocation":"23463:4:21","nodeType":"VariableDeclaration","scope":2706,"src":"23455:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2688,"name":"address","nodeType":"ElementaryTypeName","src":"23455:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2692,"mutability":"mutable","name":"tokenIn","nameLocation":"23484:7:21","nodeType":"VariableDeclaration","scope":2706,"src":"23477:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2691,"nodeType":"UserDefinedTypeName","pathNode":{"id":2690,"name":"IERC20","nameLocations":["23477:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"23477:6:21"},"referencedDeclaration":39274,"src":"23477:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"tokenOut","nameLocation":"23508:8:21","nodeType":"VariableDeclaration","scope":2706,"src":"23501:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2694,"nodeType":"UserDefinedTypeName","pathNode":{"id":2693,"name":"IERC20","nameLocations":["23501:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"23501:6:21"},"referencedDeclaration":39274,"src":"23501:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2697,"mutability":"mutable","name":"exactAmountIn","nameLocation":"23534:13:21","nodeType":"VariableDeclaration","scope":2706,"src":"23526:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2696,"name":"uint256","nodeType":"ElementaryTypeName","src":"23526:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2699,"mutability":"mutable","name":"sender","nameLocation":"23565:6:21","nodeType":"VariableDeclaration","scope":2706,"src":"23557:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2698,"name":"address","nodeType":"ElementaryTypeName","src":"23557:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2701,"mutability":"mutable","name":"userData","nameLocation":"23596:8:21","nodeType":"VariableDeclaration","scope":2706,"src":"23581:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2700,"name":"bytes","nodeType":"ElementaryTypeName","src":"23581:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"23445:165:21"},"returnParameters":{"id":2705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2704,"mutability":"mutable","name":"amountOut","nameLocation":"23637:9:21","nodeType":"VariableDeclaration","scope":2706,"src":"23629:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2703,"name":"uint256","nodeType":"ElementaryTypeName","src":"23629:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23628:19:21"},"scope":2727,"src":"23409:239:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2707,"nodeType":"StructuredDocumentation","src":"23654:641:21","text":" @notice Queries a swap operation specifying an exact output token amount without actually executing it.\n @param pool Address of the liquidity pool\n @param tokenIn Token to be swapped from\n @param tokenOut Token to be swapped to\n @param exactAmountOut Exact amounts of input tokens to receive\n @param sender The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\n @param userData Additional (optional) data sent with the query request\n @return amountIn Calculated amount of input tokens to be sent in exchange for the requested output tokens"},"functionSelector":"175d4408","id":2726,"implemented":false,"kind":"function","modifiers":[],"name":"querySwapSingleTokenExactOut","nameLocation":"24309:28:21","nodeType":"FunctionDefinition","parameters":{"id":2722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"mutability":"mutable","name":"pool","nameLocation":"24355:4:21","nodeType":"VariableDeclaration","scope":2726,"src":"24347:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2708,"name":"address","nodeType":"ElementaryTypeName","src":"24347:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2712,"mutability":"mutable","name":"tokenIn","nameLocation":"24376:7:21","nodeType":"VariableDeclaration","scope":2726,"src":"24369:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2711,"nodeType":"UserDefinedTypeName","pathNode":{"id":2710,"name":"IERC20","nameLocations":["24369:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"24369:6:21"},"referencedDeclaration":39274,"src":"24369:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2715,"mutability":"mutable","name":"tokenOut","nameLocation":"24400:8:21","nodeType":"VariableDeclaration","scope":2726,"src":"24393:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":2714,"nodeType":"UserDefinedTypeName","pathNode":{"id":2713,"name":"IERC20","nameLocations":["24393:6:21"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"24393:6:21"},"referencedDeclaration":39274,"src":"24393:6:21","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2717,"mutability":"mutable","name":"exactAmountOut","nameLocation":"24426:14:21","nodeType":"VariableDeclaration","scope":2726,"src":"24418:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2716,"name":"uint256","nodeType":"ElementaryTypeName","src":"24418:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2719,"mutability":"mutable","name":"sender","nameLocation":"24458:6:21","nodeType":"VariableDeclaration","scope":2726,"src":"24450:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2718,"name":"address","nodeType":"ElementaryTypeName","src":"24450:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2721,"mutability":"mutable","name":"userData","nameLocation":"24489:8:21","nodeType":"VariableDeclaration","scope":2726,"src":"24474:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2720,"name":"bytes","nodeType":"ElementaryTypeName","src":"24474:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"24337:166:21"},"returnParameters":{"id":2725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2724,"mutability":"mutable","name":"amountIn","nameLocation":"24530:8:21","nodeType":"VariableDeclaration","scope":2726,"src":"24522:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2723,"name":"uint256","nodeType":"ElementaryTypeName","src":"24522:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24521:18:21"},"scope":2727,"src":"24300:240:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2728,"src":"422:24120:21","usedErrors":[],"usedEvents":[]}],"src":"46:24497:21"},"id":21},"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol","exportedSymbols":{"AddLiquidityKind":[4589],"IAllowanceTransfer":[46082],"IRouterCommon":[2823],"RemoveLiquidityKind":[4610]},"id":2824,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2729,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:22"},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"permit2/src/interfaces/IAllowanceTransfer.sol","id":2731,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2824,"sourceUnit":46083,"src":"72:83:22","symbolAliases":[{"foreign":{"id":2730,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46082,"src":"81:18:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":2734,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2824,"sourceUnit":4654,"src":"156:73:22","symbolAliases":[{"foreign":{"id":2732,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"165:16:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2733,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"183:19:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IRouterCommon","contractDependencies":[],"contractKind":"interface","documentation":{"id":2735,"nodeType":"StructuredDocumentation","src":"231:83:22","text":"@notice Interface for functions shared between the `Router` and `BatchRouter`."},"fullyImplemented":false,"id":2823,"linearizedBaseContracts":[2823],"name":"IRouterCommon","nameLocation":"324:13:22","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRouterCommon.AddLiquidityHookParams","documentation":{"id":2736,"nodeType":"StructuredDocumentation","src":"344:617:22","text":" @notice Data for the add liquidity hook.\n @param sender Account originating the add liquidity operation\n @param pool Address of the liquidity pool\n @param maxAmountsIn Maximum amounts of tokens to be added, sorted in token registration order\n @param minBptAmountOut Minimum amount of pool tokens to be received\n @param kind Type of join (e.g., single or multi-token)\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to add liquidity"},"id":2753,"members":[{"constant":false,"id":2738,"mutability":"mutable","name":"sender","nameLocation":"1014:6:22","nodeType":"VariableDeclaration","scope":2753,"src":"1006:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2737,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2740,"mutability":"mutable","name":"pool","nameLocation":"1038:4:22","nodeType":"VariableDeclaration","scope":2753,"src":"1030:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2739,"name":"address","nodeType":"ElementaryTypeName","src":"1030:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2743,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"1062:12:22","nodeType":"VariableDeclaration","scope":2753,"src":"1052:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2741,"name":"uint256","nodeType":"ElementaryTypeName","src":"1052:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2742,"nodeType":"ArrayTypeName","src":"1052:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2745,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"1092:15:22","nodeType":"VariableDeclaration","scope":2753,"src":"1084:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2744,"name":"uint256","nodeType":"ElementaryTypeName","src":"1084:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2748,"mutability":"mutable","name":"kind","nameLocation":"1134:4:22","nodeType":"VariableDeclaration","scope":2753,"src":"1117:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":2747,"nodeType":"UserDefinedTypeName","pathNode":{"id":2746,"name":"AddLiquidityKind","nameLocations":["1117:16:22"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"1117:16:22"},"referencedDeclaration":4589,"src":"1117:16:22","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":2750,"mutability":"mutable","name":"wethIsEth","nameLocation":"1153:9:22","nodeType":"VariableDeclaration","scope":2753,"src":"1148:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2749,"name":"bool","nodeType":"ElementaryTypeName","src":"1148:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2752,"mutability":"mutable","name":"userData","nameLocation":"1178:8:22","nodeType":"VariableDeclaration","scope":2753,"src":"1172:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2751,"name":"bytes","nodeType":"ElementaryTypeName","src":"1172:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"AddLiquidityHookParams","nameLocation":"973:22:22","nodeType":"StructDefinition","scope":2823,"src":"966:227:22","visibility":"public"},{"canonicalName":"IRouterCommon.RemoveLiquidityHookParams","documentation":{"id":2754,"nodeType":"StructuredDocumentation","src":"1199:623:22","text":" @notice Data for the remove liquidity hook.\n @param sender Account originating the remove liquidity operation\n @param pool Address of the liquidity pool\n @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n @param maxBptAmountIn Maximum amount of pool tokens provided\n @param kind Type of exit (e.g., single or multi-token)\n @param wethIsEth If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\n @param userData Additional (optional) data sent with the request to remove liquidity"},"id":2771,"members":[{"constant":false,"id":2756,"mutability":"mutable","name":"sender","nameLocation":"1878:6:22","nodeType":"VariableDeclaration","scope":2771,"src":"1870:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2755,"name":"address","nodeType":"ElementaryTypeName","src":"1870:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2758,"mutability":"mutable","name":"pool","nameLocation":"1902:4:22","nodeType":"VariableDeclaration","scope":2771,"src":"1894:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2757,"name":"address","nodeType":"ElementaryTypeName","src":"1894:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2761,"mutability":"mutable","name":"minAmountsOut","nameLocation":"1926:13:22","nodeType":"VariableDeclaration","scope":2771,"src":"1916:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2759,"name":"uint256","nodeType":"ElementaryTypeName","src":"1916:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2760,"nodeType":"ArrayTypeName","src":"1916:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2763,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"1957:14:22","nodeType":"VariableDeclaration","scope":2771,"src":"1949:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2762,"name":"uint256","nodeType":"ElementaryTypeName","src":"1949:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2766,"mutability":"mutable","name":"kind","nameLocation":"2001:4:22","nodeType":"VariableDeclaration","scope":2771,"src":"1981:24:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":2765,"nodeType":"UserDefinedTypeName","pathNode":{"id":2764,"name":"RemoveLiquidityKind","nameLocations":["1981:19:22"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"1981:19:22"},"referencedDeclaration":4610,"src":"1981:19:22","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"wethIsEth","nameLocation":"2020:9:22","nodeType":"VariableDeclaration","scope":2771,"src":"2015:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2767,"name":"bool","nodeType":"ElementaryTypeName","src":"2015:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2770,"mutability":"mutable","name":"userData","nameLocation":"2045:8:22","nodeType":"VariableDeclaration","scope":2771,"src":"2039:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2769,"name":"bytes","nodeType":"ElementaryTypeName","src":"2039:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"RemoveLiquidityHookParams","nameLocation":"1834:25:22","nodeType":"StructDefinition","scope":2823,"src":"1827:233:22","visibility":"public"},{"documentation":{"id":2772,"nodeType":"StructuredDocumentation","src":"2066:133:22","text":" @notice Get the first sender which initialized the call to Router.\n @return sender The address of the sender"},"functionSelector":"5e01eb5a","id":2777,"implemented":false,"kind":"function","modifiers":[],"name":"getSender","nameLocation":"2213:9:22","nodeType":"FunctionDefinition","parameters":{"id":2773,"nodeType":"ParameterList","parameters":[],"src":"2222:2:22"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2775,"mutability":"mutable","name":"sender","nameLocation":"2256:6:22","nodeType":"VariableDeclaration","scope":2777,"src":"2248:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2774,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2247:16:22"},"scope":2823,"src":"2204:60:22","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"IRouterCommon.PermitApproval","id":2790,"members":[{"constant":false,"id":2779,"mutability":"mutable","name":"token","nameLocation":"2528:5:22","nodeType":"VariableDeclaration","scope":2790,"src":"2520:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2778,"name":"address","nodeType":"ElementaryTypeName","src":"2520:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2781,"mutability":"mutable","name":"owner","nameLocation":"2551:5:22","nodeType":"VariableDeclaration","scope":2790,"src":"2543:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2780,"name":"address","nodeType":"ElementaryTypeName","src":"2543:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2783,"mutability":"mutable","name":"spender","nameLocation":"2574:7:22","nodeType":"VariableDeclaration","scope":2790,"src":"2566:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2782,"name":"address","nodeType":"ElementaryTypeName","src":"2566:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2785,"mutability":"mutable","name":"amount","nameLocation":"2599:6:22","nodeType":"VariableDeclaration","scope":2790,"src":"2591:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2784,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2787,"mutability":"mutable","name":"nonce","nameLocation":"2623:5:22","nodeType":"VariableDeclaration","scope":2790,"src":"2615:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2786,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2789,"mutability":"mutable","name":"deadline","nameLocation":"2646:8:22","nodeType":"VariableDeclaration","scope":2790,"src":"2638:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2788,"name":"uint256","nodeType":"ElementaryTypeName","src":"2638:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitApproval","nameLocation":"2495:14:22","nodeType":"StructDefinition","scope":2823,"src":"2488:173:22","visibility":"public"},{"documentation":{"id":2791,"nodeType":"StructuredDocumentation","src":"2667:687:22","text":" @notice Permits multiple allowances and executes a batch of function calls on this contract.\n @param permitBatch An array of `PermitApproval` structs, each representing an ERC20 permit request\n @param permitSignatures An array of bytes, corresponding to the permit request signature in `permitBatch`\n @param permit2Batch A batch of permit2 approvals\n @param permit2Signature A permit2 signature for the batch approval\n @param multicallData An array of bytes arrays, each representing an encoded function call on this contract\n @return results Array of bytes arrays, each representing the return data from each function call executed"},"functionSelector":"19c6989f","id":2812,"implemented":false,"kind":"function","modifiers":[],"name":"permitBatchAndCall","nameLocation":"3368:18:22","nodeType":"FunctionDefinition","parameters":{"id":2807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2795,"mutability":"mutable","name":"permitBatch","nameLocation":"3422:11:22","nodeType":"VariableDeclaration","scope":2812,"src":"3396:37:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval[]"},"typeName":{"baseType":{"id":2793,"nodeType":"UserDefinedTypeName","pathNode":{"id":2792,"name":"PermitApproval","nameLocations":["3396:14:22"],"nodeType":"IdentifierPath","referencedDeclaration":2790,"src":"3396:14:22"},"referencedDeclaration":2790,"src":"3396:14:22","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_storage_ptr","typeString":"struct IRouterCommon.PermitApproval"}},"id":2794,"nodeType":"ArrayTypeName","src":"3396:16:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_storage_$dyn_storage_ptr","typeString":"struct IRouterCommon.PermitApproval[]"}},"visibility":"internal"},{"constant":false,"id":2798,"mutability":"mutable","name":"permitSignatures","nameLocation":"3460:16:22","nodeType":"VariableDeclaration","scope":2812,"src":"3443:33:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2796,"name":"bytes","nodeType":"ElementaryTypeName","src":"3443:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2797,"nodeType":"ArrayTypeName","src":"3443:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2801,"mutability":"mutable","name":"permit2Batch","nameLocation":"3526:12:22","nodeType":"VariableDeclaration","scope":2812,"src":"3486:52:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":2800,"nodeType":"UserDefinedTypeName","pathNode":{"id":2799,"name":"IAllowanceTransfer.PermitBatch","nameLocations":["3486:18:22","3505:11:22"],"nodeType":"IdentifierPath","referencedDeclaration":45969,"src":"3486:30:22"},"referencedDeclaration":45969,"src":"3486:30:22","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"},{"constant":false,"id":2803,"mutability":"mutable","name":"permit2Signature","nameLocation":"3563:16:22","nodeType":"VariableDeclaration","scope":2812,"src":"3548:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2802,"name":"bytes","nodeType":"ElementaryTypeName","src":"3548:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2806,"mutability":"mutable","name":"multicallData","nameLocation":"3606:13:22","nodeType":"VariableDeclaration","scope":2812,"src":"3589:30:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2804,"name":"bytes","nodeType":"ElementaryTypeName","src":"3589:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2805,"nodeType":"ArrayTypeName","src":"3589:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3386:239:22"},"returnParameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"results","nameLocation":"3667:7:22","nodeType":"VariableDeclaration","scope":2812,"src":"3652:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2808,"name":"bytes","nodeType":"ElementaryTypeName","src":"3652:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2809,"nodeType":"ArrayTypeName","src":"3652:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3651:24:22"},"scope":2823,"src":"3359:317:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2813,"nodeType":"StructuredDocumentation","src":"3682:264:22","text":" @notice Executes a batch of function calls on this contract.\n @param data Encoded function calls to be executed in the batch.\n @return results Array of bytes arrays, each representing the return data from each function call executed."},"functionSelector":"ac9650d8","id":2822,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nameLocation":"3960:9:22","nodeType":"FunctionDefinition","parameters":{"id":2817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2816,"mutability":"mutable","name":"data","nameLocation":"3987:4:22","nodeType":"VariableDeclaration","scope":2822,"src":"3970:21:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2814,"name":"bytes","nodeType":"ElementaryTypeName","src":"3970:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2815,"nodeType":"ArrayTypeName","src":"3970:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3969:23:22"},"returnParameters":{"id":2821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2820,"mutability":"mutable","name":"results","nameLocation":"4034:7:22","nodeType":"VariableDeclaration","scope":2822,"src":"4019:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2818,"name":"bytes","nodeType":"ElementaryTypeName","src":"4019:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2819,"nodeType":"ArrayTypeName","src":"4019:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"4018:24:22"},"scope":2823,"src":"3951:92:22","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2824,"src":"314:3731:22","usedErrors":[],"usedEvents":[]}],"src":"46:4000:22"},"id":22},"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol","exportedSymbols":{"ISwapFeePercentageBounds":[2839]},"id":2840,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2825,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:23"},{"abstract":false,"baseContracts":[],"canonicalName":"ISwapFeePercentageBounds","contractDependencies":[],"contractKind":"interface","documentation":{"id":2826,"nodeType":"StructuredDocumentation","src":"72:1023:23","text":" @notice Return the minimum/maximum swap fee percentages for a pool.\n @dev The Vault does not enforce bounds on swap fee percentages; `IBasePool` implements this interface to ensure\n that new pool developers think about and set these bounds according to their specific pool type.\n A minimum swap fee might be necessary to ensure mathematical soundness (e.g., Weighted Pools, which use the power\n function in the invariant). A maximum swap fee is general protection for users. With no limits at the Vault level,\n a pool could specify a near 100% swap fee, effectively disabling trading. Though there are some use cases, such as\n LVR/MEV strategies, where a very high fee makes sense.\n Note that the Vault does ensure that dynamic and aggregate fees are less than 100% to prevent attempting to allocate\n more fees than were collected by the operation. The true `MAX_FEE_PERCENTAGE` is defined in VaultTypes.sol, and is\n the highest value below 100% that satisfies the precision requirements."},"fullyImplemented":false,"id":2839,"linearizedBaseContracts":[2839],"name":"ISwapFeePercentageBounds","nameLocation":"1106:24:23","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2827,"nodeType":"StructuredDocumentation","src":"1137:79:23","text":"@return minimumSwapFeePercentage The minimum swap fee percentage for a pool"},"functionSelector":"ce20ece7","id":2832,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumSwapFeePercentage","nameLocation":"1230:27:23","nodeType":"FunctionDefinition","parameters":{"id":2828,"nodeType":"ParameterList","parameters":[],"src":"1257:2:23"},"returnParameters":{"id":2831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2830,"mutability":"mutable","name":"minimumSwapFeePercentage","nameLocation":"1291:24:23","nodeType":"VariableDeclaration","scope":2832,"src":"1283:32:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2829,"name":"uint256","nodeType":"ElementaryTypeName","src":"1283:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1282:34:23"},"scope":2839,"src":"1221:96:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2833,"nodeType":"StructuredDocumentation","src":"1323:79:23","text":"@return maximumSwapFeePercentage The maximum swap fee percentage for a pool"},"functionSelector":"654cf15d","id":2838,"implemented":false,"kind":"function","modifiers":[],"name":"getMaximumSwapFeePercentage","nameLocation":"1416:27:23","nodeType":"FunctionDefinition","parameters":{"id":2834,"nodeType":"ParameterList","parameters":[],"src":"1443:2:23"},"returnParameters":{"id":2837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2836,"mutability":"mutable","name":"maximumSwapFeePercentage","nameLocation":"1477:24:23","nodeType":"VariableDeclaration","scope":2838,"src":"1469:32:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2835,"name":"uint256","nodeType":"ElementaryTypeName","src":"1469:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1468:34:23"},"scope":2839,"src":"1407:96:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2840,"src":"1096:409:23","usedErrors":[],"usedEvents":[]}],"src":"46:1460:23"},"id":23},"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol","exportedSymbols":{"IUnbalancedLiquidityInvariantRatioBounds":[2855]},"id":2856,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2841,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:24"},{"abstract":false,"baseContracts":[],"canonicalName":"IUnbalancedLiquidityInvariantRatioBounds","contractDependencies":[],"contractKind":"interface","documentation":{"id":2842,"nodeType":"StructuredDocumentation","src":"72:838:24","text":" @notice Return the minimum/maximum invariant ratios allowed during an unbalanced liquidity operation.\n @dev The Vault does not enforce any \"baseline\" bounds on invariant ratios, since such bounds are highly specific\n and dependent on the math of each pool type. Instead, the Vault reads invariant ratio bounds from the pools.\n `IBasePool` implements this interface to ensure that new pool developers think about and set these bounds according\n to their pool type's math.\n For instance, Balancer Weighted Pool math involves exponentiation (the `pow` function), which uses natural\n logarithms and a discrete Taylor series expansion to compute x^y values for the 18-decimal floating point numbers\n used in all Vault computations. See `LogExpMath` and `WeightedMath` for a derivation of the bounds for these pools."},"fullyImplemented":false,"id":2855,"linearizedBaseContracts":[2855],"name":"IUnbalancedLiquidityInvariantRatioBounds","nameLocation":"921:40:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2843,"nodeType":"StructuredDocumentation","src":"968:107:24","text":"@return minimumInvariantRatio The minimum invariant ratio for a pool during unbalanced remove liquidity"},"functionSelector":"b677fa56","id":2848,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumInvariantRatio","nameLocation":"1089:24:24","nodeType":"FunctionDefinition","parameters":{"id":2844,"nodeType":"ParameterList","parameters":[],"src":"1113:2:24"},"returnParameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2846,"mutability":"mutable","name":"minimumInvariantRatio","nameLocation":"1147:21:24","nodeType":"VariableDeclaration","scope":2848,"src":"1139:29:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1139:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1138:31:24"},"scope":2855,"src":"1080:90:24","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2849,"nodeType":"StructuredDocumentation","src":"1176:104:24","text":"@return maximumInvariantRatio The maximum invariant ratio for a pool during unbalanced add liquidity"},"functionSelector":"273c1adf","id":2854,"implemented":false,"kind":"function","modifiers":[],"name":"getMaximumInvariantRatio","nameLocation":"1294:24:24","nodeType":"FunctionDefinition","parameters":{"id":2850,"nodeType":"ParameterList","parameters":[],"src":"1318:2:24"},"returnParameters":{"id":2853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2852,"mutability":"mutable","name":"maximumInvariantRatio","nameLocation":"1352:21:24","nodeType":"VariableDeclaration","scope":2854,"src":"1344:29:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2851,"name":"uint256","nodeType":"ElementaryTypeName","src":"1344:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1343:31:24"},"scope":2855,"src":"1285:90:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2856,"src":"911:466:24","usedErrors":[],"usedEvents":[]}],"src":"46:1332:24"},"id":24},"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","exportedSymbols":{"IAuthentication":[130],"IVault":[2893],"IVaultAdmin":[3183],"IVaultErrors":[3550],"IVaultEvents":[3789],"IVaultExtension":[4208],"IVaultMain":[4344]},"id":2894,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2857,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:25"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2859,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2894,"sourceUnit":131,"src":"72:80:25","symbolAliases":[{"foreign":{"id":2858,"name":"IAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"81:15:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","file":"./IVaultExtension.sol","id":2861,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2894,"sourceUnit":4209,"src":"153:56:25","symbolAliases":[{"foreign":{"id":2860,"name":"IVaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"162:15:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"./IVaultErrors.sol","id":2863,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2894,"sourceUnit":3551,"src":"210:50:25","symbolAliases":[{"foreign":{"id":2862,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"219:12:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol","file":"./IVaultEvents.sol","id":2865,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2894,"sourceUnit":3790,"src":"261:50:25","symbolAliases":[{"foreign":{"id":2864,"name":"IVaultEvents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"270:12:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","file":"./IVaultAdmin.sol","id":2867,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2894,"sourceUnit":3184,"src":"312:48:25","symbolAliases":[{"foreign":{"id":2866,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"321:11:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol","file":"./IVaultMain.sol","id":2869,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2894,"sourceUnit":4345,"src":"361:46:25","symbolAliases":[{"foreign":{"id":2868,"name":"IVaultMain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4344,"src":"370:10:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2871,"name":"IVaultMain","nameLocations":["539:10:25"],"nodeType":"IdentifierPath","referencedDeclaration":4344,"src":"539:10:25"},"id":2872,"nodeType":"InheritanceSpecifier","src":"539:10:25"},{"baseName":{"id":2873,"name":"IVaultExtension","nameLocations":["551:15:25"],"nodeType":"IdentifierPath","referencedDeclaration":4208,"src":"551:15:25"},"id":2874,"nodeType":"InheritanceSpecifier","src":"551:15:25"},{"baseName":{"id":2875,"name":"IVaultAdmin","nameLocations":["568:11:25"],"nodeType":"IdentifierPath","referencedDeclaration":3183,"src":"568:11:25"},"id":2876,"nodeType":"InheritanceSpecifier","src":"568:11:25"},{"baseName":{"id":2877,"name":"IVaultErrors","nameLocations":["581:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":3550,"src":"581:12:25"},"id":2878,"nodeType":"InheritanceSpecifier","src":"581:12:25"},{"baseName":{"id":2879,"name":"IVaultEvents","nameLocations":["595:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":3789,"src":"595:12:25"},"id":2880,"nodeType":"InheritanceSpecifier","src":"595:12:25"},{"baseName":{"id":2881,"name":"IAuthentication","nameLocations":["609:15:25"],"nodeType":"IdentifierPath","referencedDeclaration":130,"src":"609:15:25"},"id":2882,"nodeType":"InheritanceSpecifier","src":"609:15:25"}],"canonicalName":"IVault","contractDependencies":[],"contractKind":"interface","documentation":{"id":2870,"nodeType":"StructuredDocumentation","src":"409:110:25","text":"@notice Composite interface for all Vault operations: swap, add/remove liquidity, and associated queries."},"fullyImplemented":false,"id":2893,"linearizedBaseContracts":[2893,130,3789,3550,3183,4208,4344],"name":"IVault","nameLocation":"529:6:25","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2911,3812],"documentation":{"id":2883,"nodeType":"StructuredDocumentation","src":"631:41:25","text":"@return vault The main Vault address."},"functionSelector":"fbfa77cf","id":2892,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nameLocation":"686:5:25","nodeType":"FunctionDefinition","overrides":{"id":2887,"nodeType":"OverrideSpecifier","overrides":[{"id":2885,"name":"IVaultAdmin","nameLocations":["717:11:25"],"nodeType":"IdentifierPath","referencedDeclaration":3183,"src":"717:11:25"},{"id":2886,"name":"IVaultExtension","nameLocations":["730:15:25"],"nodeType":"IdentifierPath","referencedDeclaration":4208,"src":"730:15:25"}],"src":"708:38:25"},"parameters":{"id":2884,"nodeType":"ParameterList","parameters":[],"src":"691:2:25"},"returnParameters":{"id":2891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2892,"src":"756:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":2889,"nodeType":"UserDefinedTypeName","pathNode":{"id":2888,"name":"IVault","nameLocations":["756:6:25"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"756:6:25"},"referencedDeclaration":2893,"src":"756:6:25","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"755:8:25"},"scope":2893,"src":"677:87:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2894,"src":"519:247:25","usedErrors":[121,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788]}],"src":"46:721:25"},"id":25},"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","exportedSymbols":{"IAuthorizer":[1316],"IERC4626":[38998],"IProtocolFeeController":[2230],"IVault":[2893],"IVaultAdmin":[3183]},"id":3184,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2895,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:26"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":2897,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3184,"sourceUnit":38999,"src":"72:75:26","symbolAliases":[{"foreign":{"id":2896,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"./IProtocolFeeController.sol","id":2899,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3184,"sourceUnit":2231,"src":"149:70:26","symbolAliases":[{"foreign":{"id":2898,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"158:22:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":2901,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3184,"sourceUnit":1317,"src":"220:48:26","symbolAliases":[{"foreign":{"id":2900,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"229:11:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":2903,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3184,"sourceUnit":2894,"src":"269:38:26","symbolAliases":[{"foreign":{"id":2902,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"278:6:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultAdmin","contractDependencies":[],"contractKind":"interface","documentation":{"id":2904,"nodeType":"StructuredDocumentation","src":"309:276:26","text":" @notice Interface for functions defined on the `VaultAdmin` contract.\n @dev `VaultAdmin` is the Proxy extension of `VaultExtension`, and handles the least critical operations,\n as two delegate calls add gas to each call. Most of the permissioned calls are here."},"fullyImplemented":false,"id":3183,"linearizedBaseContracts":[3183],"name":"IVaultAdmin","nameLocation":"596:11:26","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2905,"nodeType":"StructuredDocumentation","src":"841:206:26","text":" @notice Returns the main Vault address.\n @dev The main Vault contains the entrypoint and main liquidity operation implementations.\n @return vault The address of the main Vault"},"functionSelector":"fbfa77cf","id":2911,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nameLocation":"1061:5:26","nodeType":"FunctionDefinition","parameters":{"id":2906,"nodeType":"ParameterList","parameters":[],"src":"1066:2:26"},"returnParameters":{"id":2910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2911,"src":"1092:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":2908,"nodeType":"UserDefinedTypeName","pathNode":{"id":2907,"name":"IVault","nameLocations":["1092:6:26"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1092:6:26"},"referencedDeclaration":2893,"src":"1092:6:26","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1091:8:26"},"scope":3183,"src":"1052:48:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2912,"nodeType":"StructuredDocumentation","src":"1106:326:26","text":" @notice Returns the Vault's pause window end time.\n @dev This value is immutable, and represents the timestamp after which the Vault can no longer be paused\n by governance. Balancer timestamps are 32 bits.\n @return pauseWindowEndTime The timestamp when the Vault's pause window ends"},"functionSelector":"8a8d123a","id":2917,"implemented":false,"kind":"function","modifiers":[],"name":"getPauseWindowEndTime","nameLocation":"1446:21:26","nodeType":"FunctionDefinition","parameters":{"id":2913,"nodeType":"ParameterList","parameters":[],"src":"1467:2:26"},"returnParameters":{"id":2916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2915,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"1500:18:26","nodeType":"VariableDeclaration","scope":2917,"src":"1493:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2914,"name":"uint32","nodeType":"ElementaryTypeName","src":"1493:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1492:27:26"},"scope":3183,"src":"1437:83:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2918,"nodeType":"StructuredDocumentation","src":"1526:414:26","text":" @notice Returns the Vault's buffer period duration.\n @dev This value is immutable. It represents the period during which, if paused, the Vault will remain paused.\n This ensures there is time available to address whatever issue caused the Vault to be paused. Balancer\n timestamps are 32 bits.\n @return bufferPeriodDuration The length of the buffer period in seconds"},"functionSelector":"20c1fb7a","id":2923,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferPeriodDuration","nameLocation":"1954:23:26","nodeType":"FunctionDefinition","parameters":{"id":2919,"nodeType":"ParameterList","parameters":[],"src":"1977:2:26"},"returnParameters":{"id":2922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2921,"mutability":"mutable","name":"bufferPeriodDuration","nameLocation":"2010:20:26","nodeType":"VariableDeclaration","scope":2923,"src":"2003:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2920,"name":"uint32","nodeType":"ElementaryTypeName","src":"2003:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2002:29:26"},"scope":3183,"src":"1945:87:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2924,"nodeType":"StructuredDocumentation","src":"2038:321:26","text":" @notice Returns the Vault's buffer period end time.\n @dev This value is immutable. If already paused, the Vault can be unpaused until this timestamp. Balancer\n timestamps are 32 bits.\n @return bufferPeriodEndTime The timestamp after which the Vault remains permanently unpaused"},"functionSelector":"cd51c12f","id":2929,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferPeriodEndTime","nameLocation":"2373:22:26","nodeType":"FunctionDefinition","parameters":{"id":2925,"nodeType":"ParameterList","parameters":[],"src":"2395:2:26"},"returnParameters":{"id":2928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2927,"mutability":"mutable","name":"bufferPeriodEndTime","nameLocation":"2428:19:26","nodeType":"VariableDeclaration","scope":2929,"src":"2421:26:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2926,"name":"uint32","nodeType":"ElementaryTypeName","src":"2421:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2420:28:26"},"scope":3183,"src":"2364:85:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2930,"nodeType":"StructuredDocumentation","src":"2455:193:26","text":" @notice Get the minimum number of tokens in a pool.\n @dev We expect the vast majority of pools to be 2-token.\n @return minTokens The minimum token count of a pool"},"functionSelector":"a8175b27","id":2935,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumPoolTokens","nameLocation":"2662:20:26","nodeType":"FunctionDefinition","parameters":{"id":2931,"nodeType":"ParameterList","parameters":[],"src":"2682:2:26"},"returnParameters":{"id":2934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2933,"mutability":"mutable","name":"minTokens","nameLocation":"2716:9:26","nodeType":"VariableDeclaration","scope":2935,"src":"2708:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2932,"name":"uint256","nodeType":"ElementaryTypeName","src":"2708:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2707:19:26"},"scope":3183,"src":"2653:74:26","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":2936,"nodeType":"StructuredDocumentation","src":"2733:129:26","text":" @notice Get the maximum number of tokens in a pool.\n @return maxTokens The maximum token count of a pool"},"functionSelector":"2e42f4d5","id":2941,"implemented":false,"kind":"function","modifiers":[],"name":"getMaximumPoolTokens","nameLocation":"2876:20:26","nodeType":"FunctionDefinition","parameters":{"id":2937,"nodeType":"ParameterList","parameters":[],"src":"2896:2:26"},"returnParameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"maxTokens","nameLocation":"2930:9:26","nodeType":"VariableDeclaration","scope":2941,"src":"2922:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2938,"name":"uint256","nodeType":"ElementaryTypeName","src":"2922:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2921:19:26"},"scope":3183,"src":"2867:74:26","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":2942,"nodeType":"StructuredDocumentation","src":"2947:439:26","text":" @notice Get the minimum total supply of pool tokens (BPT) for an initialized pool.\n @dev This prevents pools from being completely drained. When the pool is initialized, this minimum amount of BPT\n is minted to the zero address. This is an 18-decimal floating point number; BPT are always 18 decimals.\n @return poolMinimumTotalSupply The minimum total supply a pool can have after initialization"},"functionSelector":"d0965a6b","id":2947,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolMinimumTotalSupply","nameLocation":"3400:25:26","nodeType":"FunctionDefinition","parameters":{"id":2943,"nodeType":"ParameterList","parameters":[],"src":"3425:2:26"},"returnParameters":{"id":2946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2945,"mutability":"mutable","name":"poolMinimumTotalSupply","nameLocation":"3459:22:26","nodeType":"VariableDeclaration","scope":2947,"src":"3451:30:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2944,"name":"uint256","nodeType":"ElementaryTypeName","src":"3451:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3450:32:26"},"scope":3183,"src":"3391:92:26","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":2948,"nodeType":"StructuredDocumentation","src":"3489:502:26","text":" @notice Get the minimum total supply of an ERC4626 wrapped token buffer in the Vault.\n @dev This prevents buffers from being completely drained. When the buffer is initialized, this minimum number\n of shares is added to the shares resulting from the initial deposit. Buffer total supply accounting is internal\n to the Vault, as buffers are not tokenized.\n @return bufferMinimumTotalSupply The minimum total supply a buffer can have after initialization"},"functionSelector":"26a8a991","id":2953,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferMinimumTotalSupply","nameLocation":"4005:27:26","nodeType":"FunctionDefinition","parameters":{"id":2949,"nodeType":"ParameterList","parameters":[],"src":"4032:2:26"},"returnParameters":{"id":2952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2951,"mutability":"mutable","name":"bufferMinimumTotalSupply","nameLocation":"4066:24:26","nodeType":"VariableDeclaration","scope":2953,"src":"4058:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2950,"name":"uint256","nodeType":"ElementaryTypeName","src":"4058:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4057:34:26"},"scope":3183,"src":"3996:96:26","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":2954,"nodeType":"StructuredDocumentation","src":"4098:291:26","text":" @notice Get the minimum trade amount in a pool operation.\n @dev This limit is applied to the 18-decimal \"upscaled\" amount in any operation (swap, add/remove liquidity).\n @return minimumTradeAmount The minimum trade amount as an 18-decimal floating point number"},"functionSelector":"e2cb0ba0","id":2959,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumTradeAmount","nameLocation":"4403:21:26","nodeType":"FunctionDefinition","parameters":{"id":2955,"nodeType":"ParameterList","parameters":[],"src":"4424:2:26"},"returnParameters":{"id":2958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2957,"mutability":"mutable","name":"minimumTradeAmount","nameLocation":"4458:18:26","nodeType":"VariableDeclaration","scope":2959,"src":"4450:26:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2956,"name":"uint256","nodeType":"ElementaryTypeName","src":"4450:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4449:28:26"},"scope":3183,"src":"4394:84:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2960,"nodeType":"StructuredDocumentation","src":"4484:271:26","text":" @notice Get the minimum wrap amount in a buffer operation.\n @dev This limit is applied to the wrap operation amount, in native underlying token decimals.\n @return minimumWrapAmount The minimum wrap amount in native underlying token decimals"},"functionSelector":"53956aa2","id":2965,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumWrapAmount","nameLocation":"4769:20:26","nodeType":"FunctionDefinition","parameters":{"id":2961,"nodeType":"ParameterList","parameters":[],"src":"4789:2:26"},"returnParameters":{"id":2964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2963,"mutability":"mutable","name":"minimumWrapAmount","nameLocation":"4823:17:26","nodeType":"VariableDeclaration","scope":2965,"src":"4815:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2962,"name":"uint256","nodeType":"ElementaryTypeName","src":"4815:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4814:27:26"},"scope":3183,"src":"4760:82:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2966,"nodeType":"StructuredDocumentation","src":"5069:529:26","text":" @notice Indicates whether the Vault is paused.\n @dev If the Vault is paused, all non-Recovery Mode state-changing operations on pools will revert. Note that\n ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not\n also pause buffers (though we anticipate they would likely be paused and unpaused together). Call\n `areBuffersPaused` to check the pause state of the buffers.\n @return vaultPaused True if the Vault is paused"},"functionSelector":"098401f5","id":2971,"implemented":false,"kind":"function","modifiers":[],"name":"isVaultPaused","nameLocation":"5612:13:26","nodeType":"FunctionDefinition","parameters":{"id":2967,"nodeType":"ParameterList","parameters":[],"src":"5625:2:26"},"returnParameters":{"id":2970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2969,"mutability":"mutable","name":"vaultPaused","nameLocation":"5656:11:26","nodeType":"VariableDeclaration","scope":2971,"src":"5651:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2968,"name":"bool","nodeType":"ElementaryTypeName","src":"5651:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5650:18:26"},"scope":3183,"src":"5603:66:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2972,"nodeType":"StructuredDocumentation","src":"5675:400:26","text":" @notice Returns the paused status, and end times of the Vault's pause window and buffer period.\n @dev Balancer timestamps are 32 bits.\n @return vaultPaused True if the Vault is paused\n @return vaultPauseWindowEndTime The timestamp of the end of the Vault's pause window\n @return vaultBufferPeriodEndTime The timestamp of the end of the Vault's buffer period"},"functionSelector":"85c8c015","id":2981,"implemented":false,"kind":"function","modifiers":[],"name":"getVaultPausedState","nameLocation":"6089:19:26","nodeType":"FunctionDefinition","parameters":{"id":2973,"nodeType":"ParameterList","parameters":[],"src":"6108:2:26"},"returnParameters":{"id":2980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2975,"mutability":"mutable","name":"vaultPaused","nameLocation":"6163:11:26","nodeType":"VariableDeclaration","scope":2981,"src":"6158:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2974,"name":"bool","nodeType":"ElementaryTypeName","src":"6158:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2977,"mutability":"mutable","name":"vaultPauseWindowEndTime","nameLocation":"6183:23:26","nodeType":"VariableDeclaration","scope":2981,"src":"6176:30:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2976,"name":"uint32","nodeType":"ElementaryTypeName","src":"6176:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2979,"mutability":"mutable","name":"vaultBufferPeriodEndTime","nameLocation":"6215:24:26","nodeType":"VariableDeclaration","scope":2981,"src":"6208:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2978,"name":"uint32","nodeType":"ElementaryTypeName","src":"6208:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6157:83:26"},"scope":3183,"src":"6080:161:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2982,"nodeType":"StructuredDocumentation","src":"6247:517:26","text":" @notice Pause the Vault: an emergency action which disables all operational state-changing functions on pools.\n @dev This is a permissioned function that will only work during the Pause Window set during deployment.\n Note that ERC4626 buffer operations have an independent pause mechanism, which is not affected by pausing\n the Vault. Custom routers could still wrap/unwrap using buffers while the Vault is paused, unless buffers\n are also paused (with `pauseVaultBuffers`)."},"functionSelector":"9e0879c2","id":2985,"implemented":false,"kind":"function","modifiers":[],"name":"pauseVault","nameLocation":"6778:10:26","nodeType":"FunctionDefinition","parameters":{"id":2983,"nodeType":"ParameterList","parameters":[],"src":"6788:2:26"},"returnParameters":{"id":2984,"nodeType":"ParameterList","parameters":[],"src":"6799:0:26"},"scope":3183,"src":"6769:31:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2986,"nodeType":"StructuredDocumentation","src":"6806:569:26","text":" @notice Reverse a `pause` operation, and restore Vault pool operations to normal functionality.\n @dev This is a permissioned function that will only work on a paused Vault within the Buffer Period set during\n deployment. Note that the Vault will automatically unpause after the Buffer Period expires. As noted above,\n ERC4626 buffers and Vault operations on pools are independent. Unpausing the Vault does not reverse\n `pauseVaultBuffers`. If buffers were also paused, they will remain in that state until explicitly unpaused."},"functionSelector":"0b7562be","id":2989,"implemented":false,"kind":"function","modifiers":[],"name":"unpauseVault","nameLocation":"7389:12:26","nodeType":"FunctionDefinition","parameters":{"id":2987,"nodeType":"ParameterList","parameters":[],"src":"7401:2:26"},"returnParameters":{"id":2988,"nodeType":"ParameterList","parameters":[],"src":"7412:0:26"},"scope":3183,"src":"7380:33:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2990,"nodeType":"StructuredDocumentation","src":"7639:276:26","text":" @notice Pause the Pool: an emergency action which disables all pool functions.\n @dev This is a permissioned function that will only work during the Pause Window set during pool factory\n deployment.\n @param pool The pool being paused"},"functionSelector":"55aca1ec","id":2995,"implemented":false,"kind":"function","modifiers":[],"name":"pausePool","nameLocation":"7929:9:26","nodeType":"FunctionDefinition","parameters":{"id":2993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2992,"mutability":"mutable","name":"pool","nameLocation":"7947:4:26","nodeType":"VariableDeclaration","scope":2995,"src":"7939:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2991,"name":"address","nodeType":"ElementaryTypeName","src":"7939:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7938:14:26"},"returnParameters":{"id":2994,"nodeType":"ParameterList","parameters":[],"src":"7961:0:26"},"scope":3183,"src":"7920:42:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2996,"nodeType":"StructuredDocumentation","src":"7968:366:26","text":" @notice Reverse a `pause` operation, and restore the Pool to normal functionality.\n @dev This is a permissioned function that will only work on a paused Pool within the Buffer Period set during\n deployment. Note that the Pool will automatically unpause after the Buffer Period expires.\n @param pool The pool being unpaused"},"functionSelector":"f21c38cd","id":3001,"implemented":false,"kind":"function","modifiers":[],"name":"unpausePool","nameLocation":"8348:11:26","nodeType":"FunctionDefinition","parameters":{"id":2999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2998,"mutability":"mutable","name":"pool","nameLocation":"8368:4:26","nodeType":"VariableDeclaration","scope":3001,"src":"8360:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2997,"name":"address","nodeType":"ElementaryTypeName","src":"8360:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8359:14:26"},"returnParameters":{"id":3000,"nodeType":"ParameterList","parameters":[],"src":"8382:0:26"},"scope":3183,"src":"8339:44:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3002,"nodeType":"StructuredDocumentation","src":"8606:520:26","text":" @notice Assigns a new static swap fee percentage to the specified pool.\n @dev This is a permissioned function, disabled if the pool is paused. The swap fee percentage must be within\n the bounds specified by the pool's implementation of `ISwapFeePercentageBounds`.\n Emits the SwapFeePercentageChanged event.\n @param pool The address of the pool for which the static swap fee will be changed\n @param swapFeePercentage The new swap fee percentage to apply to the pool"},"functionSelector":"d15126ba","id":3009,"implemented":false,"kind":"function","modifiers":[],"name":"setStaticSwapFeePercentage","nameLocation":"9140:26:26","nodeType":"FunctionDefinition","parameters":{"id":3007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3004,"mutability":"mutable","name":"pool","nameLocation":"9175:4:26","nodeType":"VariableDeclaration","scope":3009,"src":"9167:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3003,"name":"address","nodeType":"ElementaryTypeName","src":"9167:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3006,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"9189:17:26","nodeType":"VariableDeclaration","scope":3009,"src":"9181:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3005,"name":"uint256","nodeType":"ElementaryTypeName","src":"9181:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9166:41:26"},"returnParameters":{"id":3008,"nodeType":"ParameterList","parameters":[],"src":"9216:0:26"},"scope":3183,"src":"9131:86:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3010,"nodeType":"StructuredDocumentation","src":"9223:463:26","text":" @notice Collects accumulated aggregate swap and yield fees for the specified pool.\n @dev Fees are sent to the ProtocolFeeController address.\n @param pool The pool on which all aggregate fees should be collected\n @return swapFeeAmounts An array with the total swap fees collected, sorted in token registration order\n @return yieldFeeAmounts An array with the total yield fees collected, sorted in token registration order"},"functionSelector":"8f4ab9ca","id":3021,"implemented":false,"kind":"function","modifiers":[],"name":"collectAggregateFees","nameLocation":"9700:20:26","nodeType":"FunctionDefinition","parameters":{"id":3013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3012,"mutability":"mutable","name":"pool","nameLocation":"9738:4:26","nodeType":"VariableDeclaration","scope":3021,"src":"9730:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3011,"name":"address","nodeType":"ElementaryTypeName","src":"9730:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9720:28:26"},"returnParameters":{"id":3020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3016,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"9784:14:26","nodeType":"VariableDeclaration","scope":3021,"src":"9767:31:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3014,"name":"uint256","nodeType":"ElementaryTypeName","src":"9767:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3015,"nodeType":"ArrayTypeName","src":"9767:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3019,"mutability":"mutable","name":"yieldFeeAmounts","nameLocation":"9817:15:26","nodeType":"VariableDeclaration","scope":3021,"src":"9800:32:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3017,"name":"uint256","nodeType":"ElementaryTypeName","src":"9800:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3018,"nodeType":"ArrayTypeName","src":"9800:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9766:67:26"},"scope":3183,"src":"9691:143:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3022,"nodeType":"StructuredDocumentation","src":"9840:755:26","text":" @notice Update an aggregate swap fee percentage.\n @dev Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee\n for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's\n fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also\n that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol).\n Emits an `AggregateSwapFeePercentageChanged` event.\n @param pool The pool whose swap fee percentage will be updated\n @param newAggregateSwapFeePercentage The new aggregate swap fee percentage"},"functionSelector":"5e0b06f4","id":3029,"implemented":false,"kind":"function","modifiers":[],"name":"updateAggregateSwapFeePercentage","nameLocation":"10609:32:26","nodeType":"FunctionDefinition","parameters":{"id":3027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3024,"mutability":"mutable","name":"pool","nameLocation":"10650:4:26","nodeType":"VariableDeclaration","scope":3029,"src":"10642:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3023,"name":"address","nodeType":"ElementaryTypeName","src":"10642:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3026,"mutability":"mutable","name":"newAggregateSwapFeePercentage","nameLocation":"10664:29:26","nodeType":"VariableDeclaration","scope":3029,"src":"10656:37:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3025,"name":"uint256","nodeType":"ElementaryTypeName","src":"10656:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10641:53:26"},"returnParameters":{"id":3028,"nodeType":"ParameterList","parameters":[],"src":"10703:0:26"},"scope":3183,"src":"10600:104:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3030,"nodeType":"StructuredDocumentation","src":"10710:760:26","text":" @notice Update an aggregate yield fee percentage.\n @dev Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee\n for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's\n fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also\n that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol).\n Emits an `AggregateYieldFeePercentageChanged` event.\n @param pool The pool whose yield fee percentage will be updated\n @param newAggregateYieldFeePercentage The new aggregate yield fee percentage"},"functionSelector":"e253670a","id":3037,"implemented":false,"kind":"function","modifiers":[],"name":"updateAggregateYieldFeePercentage","nameLocation":"11484:33:26","nodeType":"FunctionDefinition","parameters":{"id":3035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3032,"mutability":"mutable","name":"pool","nameLocation":"11526:4:26","nodeType":"VariableDeclaration","scope":3037,"src":"11518:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3031,"name":"address","nodeType":"ElementaryTypeName","src":"11518:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3034,"mutability":"mutable","name":"newAggregateYieldFeePercentage","nameLocation":"11540:30:26","nodeType":"VariableDeclaration","scope":3037,"src":"11532:38:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3033,"name":"uint256","nodeType":"ElementaryTypeName","src":"11532:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11517:54:26"},"returnParameters":{"id":3036,"nodeType":"ParameterList","parameters":[],"src":"11580:0:26"},"scope":3183,"src":"11475:106:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3038,"nodeType":"StructuredDocumentation","src":"11587:249:26","text":" @notice Sets a new Protocol Fee Controller for the Vault.\n @dev This is a permissioned call. Emits a `ProtocolFeeControllerChanged` event.\n @param newProtocolFeeController The address of the new Protocol Fee Controller"},"functionSelector":"2d771389","id":3044,"implemented":false,"kind":"function","modifiers":[],"name":"setProtocolFeeController","nameLocation":"11850:24:26","nodeType":"FunctionDefinition","parameters":{"id":3042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3041,"mutability":"mutable","name":"newProtocolFeeController","nameLocation":"11898:24:26","nodeType":"VariableDeclaration","scope":3044,"src":"11875:47:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":3040,"nodeType":"UserDefinedTypeName","pathNode":{"id":3039,"name":"IProtocolFeeController","nameLocations":["11875:22:26"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"11875:22:26"},"referencedDeclaration":2230,"src":"11875:22:26","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"}],"src":"11874:49:26"},"returnParameters":{"id":3043,"nodeType":"ParameterList","parameters":[],"src":"11932:0:26"},"scope":3183,"src":"11841:92:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3045,"nodeType":"StructuredDocumentation","src":"12160:557:26","text":" @notice Enable recovery mode for a pool.\n @dev This is a permissioned function. It enables a safe proportional withdrawal, with no external calls.\n Since there are no external calls, ensuring that entering Recovery Mode cannot fail, we cannot compute and so\n must forfeit any yield fees between the last operation and enabling Recovery Mode. For the same reason, live\n balances cannot be updated while in Recovery Mode, as doing so might cause withdrawals to fail.\n @param pool The address of the pool"},"functionSelector":"dc3f574e","id":3050,"implemented":false,"kind":"function","modifiers":[],"name":"enableRecoveryMode","nameLocation":"12731:18:26","nodeType":"FunctionDefinition","parameters":{"id":3048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3047,"mutability":"mutable","name":"pool","nameLocation":"12758:4:26","nodeType":"VariableDeclaration","scope":3050,"src":"12750:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3046,"name":"address","nodeType":"ElementaryTypeName","src":"12750:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12749:14:26"},"returnParameters":{"id":3049,"nodeType":"ParameterList","parameters":[],"src":"12772:0:26"},"scope":3183,"src":"12722:51:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3051,"nodeType":"StructuredDocumentation","src":"12779:409:26","text":" @notice Disable recovery mode for a pool.\n @dev This is a permissioned function. It re-syncs live balances (which could not be updated during\n Recovery Mode), forfeiting any yield fees that accrued while enabled. It makes external calls, and could\n potentially fail if there is an issue with any associated Rate Providers.\n @param pool The address of the pool"},"functionSelector":"bffb78b2","id":3056,"implemented":false,"kind":"function","modifiers":[],"name":"disableRecoveryMode","nameLocation":"13202:19:26","nodeType":"FunctionDefinition","parameters":{"id":3054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3053,"mutability":"mutable","name":"pool","nameLocation":"13230:4:26","nodeType":"VariableDeclaration","scope":3056,"src":"13222:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3052,"name":"address","nodeType":"ElementaryTypeName","src":"13222:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13221:14:26"},"returnParameters":{"id":3055,"nodeType":"ParameterList","parameters":[],"src":"13244:0:26"},"scope":3183,"src":"13193:52:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3057,"nodeType":"StructuredDocumentation","src":"13476:653:26","text":" @notice Disables query functionality on the Vault. Can only be called by governance.\n @dev The query functions rely on a specific EVM feature to detect static calls. Query operations are exempt from\n settlement constraints, so it's critical that no state changes can occur. We retain the ability to disable\n queries in the unlikely event that EVM changes violate its assumptions (perhaps on an L2).\n This function can be acted upon as an emergency measure in ambiguous contexts where it's not 100% clear whether\n disabling queries is completely necessary; queries can still be re-enabled after this call."},"functionSelector":"de1a36a6","id":3060,"implemented":false,"kind":"function","modifiers":[],"name":"disableQuery","nameLocation":"14143:12:26","nodeType":"FunctionDefinition","parameters":{"id":3058,"nodeType":"ParameterList","parameters":[],"src":"14155:2:26"},"returnParameters":{"id":3059,"nodeType":"ParameterList","parameters":[],"src":"14166:0:26"},"scope":3183,"src":"14134:33:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3061,"nodeType":"StructuredDocumentation","src":"14173:223:26","text":" @notice Disables query functionality permanently on the Vault. Can only be called by governance.\n @dev Shall only be used when there is no doubt that queries pose a fundamental threat to the system."},"functionSelector":"821440f2","id":3064,"implemented":false,"kind":"function","modifiers":[],"name":"disableQueryPermanently","nameLocation":"14410:23:26","nodeType":"FunctionDefinition","parameters":{"id":3062,"nodeType":"ParameterList","parameters":[],"src":"14433:2:26"},"returnParameters":{"id":3063,"nodeType":"ParameterList","parameters":[],"src":"14444:0:26"},"scope":3183,"src":"14401:44:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3065,"nodeType":"StructuredDocumentation","src":"14451:166:26","text":" @notice Enables query functionality on the Vault. Can only be called by governance.\n @dev Only works if queries are not permanently disabled."},"functionSelector":"e0d55605","id":3068,"implemented":false,"kind":"function","modifiers":[],"name":"enableQuery","nameLocation":"14631:11:26","nodeType":"FunctionDefinition","parameters":{"id":3066,"nodeType":"ParameterList","parameters":[],"src":"14642:2:26"},"returnParameters":{"id":3067,"nodeType":"ParameterList","parameters":[],"src":"14653:0:26"},"scope":3183,"src":"14622:32:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3069,"nodeType":"StructuredDocumentation","src":"14881:590:26","text":" @notice Indicates whether the Vault buffers are paused.\n @dev When buffers are paused, all buffer operations (i.e., calls on the Router with `isBuffer` true)\n will revert. Pausing buffers is reversible. Note that ERC4626 buffers and the Vault have separate and\n independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they\n would likely be paused and unpaused together). Call `isVaultPaused` to check the pause state of the Vault.\n @return buffersPaused True if the Vault buffers are paused"},"functionSelector":"55cba7fe","id":3074,"implemented":false,"kind":"function","modifiers":[],"name":"areBuffersPaused","nameLocation":"15485:16:26","nodeType":"FunctionDefinition","parameters":{"id":3070,"nodeType":"ParameterList","parameters":[],"src":"15501:2:26"},"returnParameters":{"id":3073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3072,"mutability":"mutable","name":"buffersPaused","nameLocation":"15532:13:26","nodeType":"VariableDeclaration","scope":3074,"src":"15527:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3071,"name":"bool","nodeType":"ElementaryTypeName","src":"15527:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15526:20:26"},"scope":3183,"src":"15476:71:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3075,"nodeType":"StructuredDocumentation","src":"15553:619:26","text":" @notice Pauses native vault buffers globally.\n @dev When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's\n `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. Currently it's not\n possible to pause vault buffers individually.\n This is a permissioned call, and is reversible (see `unpauseVaultBuffers`). Note that the Vault has a separate\n and independent pausing mechanism. It is possible to pause the Vault (i.e. pool operations), without affecting\n buffers, and vice versa."},"functionSelector":"e085c5a8","id":3078,"implemented":false,"kind":"function","modifiers":[],"name":"pauseVaultBuffers","nameLocation":"16186:17:26","nodeType":"FunctionDefinition","parameters":{"id":3076,"nodeType":"ParameterList","parameters":[],"src":"16203:2:26"},"returnParameters":{"id":3077,"nodeType":"ParameterList","parameters":[],"src":"16214:0:26"},"scope":3183,"src":"16177:38:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3079,"nodeType":"StructuredDocumentation","src":"16221:545:26","text":" @notice Unpauses native vault buffers globally.\n @dev When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's\n `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. As noted above,\n ERC4626 buffers and Vault operations on pools are independent. Unpausing buffers does not reverse `pauseVault`.\n If the Vault was also paused, it will remain in that state until explicitly unpaused.\n This is a permissioned call."},"functionSelector":"b9212b49","id":3082,"implemented":false,"kind":"function","modifiers":[],"name":"unpauseVaultBuffers","nameLocation":"16780:19:26","nodeType":"FunctionDefinition","parameters":{"id":3080,"nodeType":"ParameterList","parameters":[],"src":"16799:2:26"},"returnParameters":{"id":3081,"nodeType":"ParameterList","parameters":[],"src":"16810:0:26"},"scope":3183,"src":"16771:40:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3083,"nodeType":"StructuredDocumentation","src":"16817:860:26","text":" @notice Initializes buffer for the given wrapped token.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param amountUnderlyingRaw Amount of underlying tokens that will be deposited into the buffer\n @param amountWrappedRaw Amount of wrapped tokens that will be deposited into the buffer\n @param minIssuedShares Minimum amount of shares to receive from the buffer, expressed in underlying token\n native decimals\n @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to remove\n liquidity from the buffer\n @return issuedShares the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts.\n (it is the BPT of an internal ERC4626 buffer). It is expressed in underlying token native decimals."},"functionSelector":"653eb3b0","id":3099,"implemented":false,"kind":"function","modifiers":[],"name":"initializeBuffer","nameLocation":"17691:16:26","nodeType":"FunctionDefinition","parameters":{"id":3095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3086,"mutability":"mutable","name":"wrappedToken","nameLocation":"17726:12:26","nodeType":"VariableDeclaration","scope":3099,"src":"17717:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3085,"nodeType":"UserDefinedTypeName","pathNode":{"id":3084,"name":"IERC4626","nameLocations":["17717:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"17717:8:26"},"referencedDeclaration":38998,"src":"17717:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3088,"mutability":"mutable","name":"amountUnderlyingRaw","nameLocation":"17756:19:26","nodeType":"VariableDeclaration","scope":3099,"src":"17748:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3087,"name":"uint256","nodeType":"ElementaryTypeName","src":"17748:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3090,"mutability":"mutable","name":"amountWrappedRaw","nameLocation":"17793:16:26","nodeType":"VariableDeclaration","scope":3099,"src":"17785:24:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3089,"name":"uint256","nodeType":"ElementaryTypeName","src":"17785:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3092,"mutability":"mutable","name":"minIssuedShares","nameLocation":"17827:15:26","nodeType":"VariableDeclaration","scope":3099,"src":"17819:23:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3091,"name":"uint256","nodeType":"ElementaryTypeName","src":"17819:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3094,"mutability":"mutable","name":"sharesOwner","nameLocation":"17860:11:26","nodeType":"VariableDeclaration","scope":3099,"src":"17852:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3093,"name":"address","nodeType":"ElementaryTypeName","src":"17852:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17707:170:26"},"returnParameters":{"id":3098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3097,"mutability":"mutable","name":"issuedShares","nameLocation":"17904:12:26","nodeType":"VariableDeclaration","scope":3099,"src":"17896:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3096,"name":"uint256","nodeType":"ElementaryTypeName","src":"17896:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17895:22:26"},"scope":3183,"src":"17682:236:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3100,"nodeType":"StructuredDocumentation","src":"17924:1010:26","text":" @notice Adds liquidity to an internal ERC4626 buffer in the Vault, proportionally.\n @dev The buffer needs to be initialized beforehand.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param maxAmountUnderlyingInRaw Maximum amount of underlying tokens to add to the buffer. It is expressed in\n underlying token native decimals\n @param maxAmountWrappedInRaw Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped\n token native decimals\n @param exactSharesToIssue The value in underlying tokens that `sharesOwner` wants to add to the buffer,\n in underlying token decimals\n @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to remove\n liquidity from the buffer\n @return amountUnderlyingRaw Amount of underlying tokens deposited into the buffer\n @return amountWrappedRaw Amount of wrapped tokens deposited into the buffer"},"functionSelector":"e2a92b1a","id":3118,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityToBuffer","nameLocation":"18948:20:26","nodeType":"FunctionDefinition","parameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3103,"mutability":"mutable","name":"wrappedToken","nameLocation":"18987:12:26","nodeType":"VariableDeclaration","scope":3118,"src":"18978:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3102,"nodeType":"UserDefinedTypeName","pathNode":{"id":3101,"name":"IERC4626","nameLocations":["18978:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"18978:8:26"},"referencedDeclaration":38998,"src":"18978:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3105,"mutability":"mutable","name":"maxAmountUnderlyingInRaw","nameLocation":"19017:24:26","nodeType":"VariableDeclaration","scope":3118,"src":"19009:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3104,"name":"uint256","nodeType":"ElementaryTypeName","src":"19009:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3107,"mutability":"mutable","name":"maxAmountWrappedInRaw","nameLocation":"19059:21:26","nodeType":"VariableDeclaration","scope":3118,"src":"19051:29:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3106,"name":"uint256","nodeType":"ElementaryTypeName","src":"19051:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"19098:18:26","nodeType":"VariableDeclaration","scope":3118,"src":"19090:26:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3108,"name":"uint256","nodeType":"ElementaryTypeName","src":"19090:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3111,"mutability":"mutable","name":"sharesOwner","nameLocation":"19134:11:26","nodeType":"VariableDeclaration","scope":3118,"src":"19126:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3110,"name":"address","nodeType":"ElementaryTypeName","src":"19126:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18968:183:26"},"returnParameters":{"id":3117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3114,"mutability":"mutable","name":"amountUnderlyingRaw","nameLocation":"19178:19:26","nodeType":"VariableDeclaration","scope":3118,"src":"19170:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3113,"name":"uint256","nodeType":"ElementaryTypeName","src":"19170:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3116,"mutability":"mutable","name":"amountWrappedRaw","nameLocation":"19207:16:26","nodeType":"VariableDeclaration","scope":3118,"src":"19199:24:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3115,"name":"uint256","nodeType":"ElementaryTypeName","src":"19199:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19169:55:26"},"scope":3183,"src":"18939:286:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3119,"nodeType":"StructuredDocumentation","src":"19231:1458:26","text":" @notice Removes liquidity from an internal ERC4626 buffer in the Vault.\n @dev Only proportional exits are supported, and the sender has to be the owner of the shares.\n This function unlocks the Vault just for this operation; it does not work with a Router as an entrypoint.\n Pre-conditions:\n - The buffer needs to be initialized.\n - sharesOwner is the original msg.sender, it needs to be checked in the Router. That's why\n this call is authenticated; only routers approved by the DAO can remove the liquidity of a buffer.\n - The buffer needs to have some liquidity and have its asset registered in `_bufferAssets` storage.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param sharesToRemove Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's\n total shares. It is expressed in underlying token native decimals\n @param minAmountUnderlyingOutRaw Minimum amount of underlying tokens to receive from the buffer. It is expressed\n in underlying token native decimals\n @param minAmountWrappedOutRaw Minimum amount of wrapped tokens to receive from the buffer. It is expressed in\n wrapped token native decimals\n @return removedUnderlyingBalanceRaw Amount of underlying tokens returned to the user\n @return removedWrappedBalanceRaw Amount of wrapped tokens returned to the user"},"functionSelector":"ebc7955c","id":3135,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityFromBuffer","nameLocation":"20703:25:26","nodeType":"FunctionDefinition","parameters":{"id":3129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3122,"mutability":"mutable","name":"wrappedToken","nameLocation":"20747:12:26","nodeType":"VariableDeclaration","scope":3135,"src":"20738:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3121,"nodeType":"UserDefinedTypeName","pathNode":{"id":3120,"name":"IERC4626","nameLocations":["20738:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"20738:8:26"},"referencedDeclaration":38998,"src":"20738:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3124,"mutability":"mutable","name":"sharesToRemove","nameLocation":"20777:14:26","nodeType":"VariableDeclaration","scope":3135,"src":"20769:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3123,"name":"uint256","nodeType":"ElementaryTypeName","src":"20769:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3126,"mutability":"mutable","name":"minAmountUnderlyingOutRaw","nameLocation":"20809:25:26","nodeType":"VariableDeclaration","scope":3135,"src":"20801:33:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3125,"name":"uint256","nodeType":"ElementaryTypeName","src":"20801:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3128,"mutability":"mutable","name":"minAmountWrappedOutRaw","nameLocation":"20852:22:26","nodeType":"VariableDeclaration","scope":3135,"src":"20844:30:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3127,"name":"uint256","nodeType":"ElementaryTypeName","src":"20844:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20728:152:26"},"returnParameters":{"id":3134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3131,"mutability":"mutable","name":"removedUnderlyingBalanceRaw","nameLocation":"20907:27:26","nodeType":"VariableDeclaration","scope":3135,"src":"20899:35:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3130,"name":"uint256","nodeType":"ElementaryTypeName","src":"20899:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3133,"mutability":"mutable","name":"removedWrappedBalanceRaw","nameLocation":"20944:24:26","nodeType":"VariableDeclaration","scope":3135,"src":"20936:32:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3132,"name":"uint256","nodeType":"ElementaryTypeName","src":"20936:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20898:71:26"},"scope":3183,"src":"20694:276:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3136,"nodeType":"StructuredDocumentation","src":"20976:382:26","text":" @notice Returns the asset registered for a given wrapped token.\n @dev The asset can never change after buffer initialization.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @return underlyingToken Address of the underlying token registered for the wrapper; `address(0)` if the buffer\n has not been initialized."},"functionSelector":"0387587d","id":3144,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferAsset","nameLocation":"21372:14:26","nodeType":"FunctionDefinition","parameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3139,"mutability":"mutable","name":"wrappedToken","nameLocation":"21396:12:26","nodeType":"VariableDeclaration","scope":3144,"src":"21387:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3138,"nodeType":"UserDefinedTypeName","pathNode":{"id":3137,"name":"IERC4626","nameLocations":["21387:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"21387:8:26"},"referencedDeclaration":38998,"src":"21387:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"21386:23:26"},"returnParameters":{"id":3143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3142,"mutability":"mutable","name":"underlyingToken","nameLocation":"21441:15:26","nodeType":"VariableDeclaration","scope":3144,"src":"21433:23:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3141,"name":"address","nodeType":"ElementaryTypeName","src":"21433:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21432:25:26"},"scope":3183,"src":"21363:95:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3145,"nodeType":"StructuredDocumentation","src":"21464:441:26","text":" @notice Returns the shares (internal buffer BPT) of a liquidity owner: a user that deposited assets\n in the buffer.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param liquidityOwner Address of the user that owns liquidity in the wrapped token's buffer\n @return ownerShares Amount of shares allocated to the liquidity owner, in native underlying token decimals"},"functionSelector":"9385e39a","id":3155,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferOwnerShares","nameLocation":"21919:20:26","nodeType":"FunctionDefinition","parameters":{"id":3151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3148,"mutability":"mutable","name":"wrappedToken","nameLocation":"21958:12:26","nodeType":"VariableDeclaration","scope":3155,"src":"21949:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3147,"nodeType":"UserDefinedTypeName","pathNode":{"id":3146,"name":"IERC4626","nameLocations":["21949:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"21949:8:26"},"referencedDeclaration":38998,"src":"21949:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3150,"mutability":"mutable","name":"liquidityOwner","nameLocation":"21988:14:26","nodeType":"VariableDeclaration","scope":3155,"src":"21980:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3149,"name":"address","nodeType":"ElementaryTypeName","src":"21980:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21939:69:26"},"returnParameters":{"id":3154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3153,"mutability":"mutable","name":"ownerShares","nameLocation":"22040:11:26","nodeType":"VariableDeclaration","scope":3155,"src":"22032:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3152,"name":"uint256","nodeType":"ElementaryTypeName","src":"22032:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22031:21:26"},"scope":3183,"src":"21910:143:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3156,"nodeType":"StructuredDocumentation","src":"22059:281:26","text":" @notice Returns the supply shares (internal buffer BPT) of the ERC4626 buffer.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @return bufferShares Amount of supply shares of the buffer, in native underlying token decimals"},"functionSelector":"f2784e07","id":3164,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferTotalShares","nameLocation":"22354:20:26","nodeType":"FunctionDefinition","parameters":{"id":3160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3159,"mutability":"mutable","name":"wrappedToken","nameLocation":"22384:12:26","nodeType":"VariableDeclaration","scope":3164,"src":"22375:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3158,"nodeType":"UserDefinedTypeName","pathNode":{"id":3157,"name":"IERC4626","nameLocations":["22375:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"22375:8:26"},"referencedDeclaration":38998,"src":"22375:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"22374:23:26"},"returnParameters":{"id":3163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3162,"mutability":"mutable","name":"bufferShares","nameLocation":"22429:12:26","nodeType":"VariableDeclaration","scope":3164,"src":"22421:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3161,"name":"uint256","nodeType":"ElementaryTypeName","src":"22421:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22420:22:26"},"scope":3183,"src":"22345:98:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3165,"nodeType":"StructuredDocumentation","src":"22449:521:26","text":" @notice Returns the amount of underlying and wrapped tokens deposited in the internal buffer of the Vault.\n @dev All values are in native token decimals of the wrapped or underlying tokens.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @return underlyingBalanceRaw Amount of underlying tokens deposited into the buffer, in native token decimals\n @return wrappedBalanceRaw Amount of wrapped tokens deposited into the buffer, in native token decimals"},"functionSelector":"4021fe0f","id":3175,"implemented":false,"kind":"function","modifiers":[],"name":"getBufferBalance","nameLocation":"22984:16:26","nodeType":"FunctionDefinition","parameters":{"id":3169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3168,"mutability":"mutable","name":"wrappedToken","nameLocation":"23019:12:26","nodeType":"VariableDeclaration","scope":3175,"src":"23010:21:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3167,"nodeType":"UserDefinedTypeName","pathNode":{"id":3166,"name":"IERC4626","nameLocations":["23010:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"23010:8:26"},"referencedDeclaration":38998,"src":"23010:8:26","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"23000:37:26"},"returnParameters":{"id":3174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3171,"mutability":"mutable","name":"underlyingBalanceRaw","nameLocation":"23069:20:26","nodeType":"VariableDeclaration","scope":3175,"src":"23061:28:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3170,"name":"uint256","nodeType":"ElementaryTypeName","src":"23061:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3173,"mutability":"mutable","name":"wrappedBalanceRaw","nameLocation":"23099:17:26","nodeType":"VariableDeclaration","scope":3175,"src":"23091:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3172,"name":"uint256","nodeType":"ElementaryTypeName","src":"23091:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23060:57:26"},"scope":3183,"src":"22975:143:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3176,"nodeType":"StructuredDocumentation","src":"23342:202:26","text":" @notice Sets a new Authorizer for the Vault.\n @dev This is a permissioned call. Emits an `AuthorizerChanged` event.\n @param newAuthorizer The address of the new authorizer"},"functionSelector":"058a628f","id":3182,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthorizer","nameLocation":"23558:13:26","nodeType":"FunctionDefinition","parameters":{"id":3180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3179,"mutability":"mutable","name":"newAuthorizer","nameLocation":"23584:13:26","nodeType":"VariableDeclaration","scope":3182,"src":"23572:25:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":3178,"nodeType":"UserDefinedTypeName","pathNode":{"id":3177,"name":"IAuthorizer","nameLocations":["23572:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"23572:11:26"},"referencedDeclaration":1316,"src":"23572:11:26","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"23571:27:26"},"returnParameters":{"id":3181,"nodeType":"ParameterList","parameters":[],"src":"23607:0:26"},"scope":3183,"src":"23549:59:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3184,"src":"586:23024:26","usedErrors":[],"usedEvents":[]}],"src":"46:23565:26"},"id":26},"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","exportedSymbols":{"IERC20":[39274],"IERC4626":[38998],"IVaultErrors":[3550]},"id":3551,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3185,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:27"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":3187,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3551,"sourceUnit":38999,"src":"72:75:27","symbolAliases":[{"foreign":{"id":3186,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3189,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3551,"sourceUnit":39275,"src":"148:72:27","symbolAliases":[{"foreign":{"id":3188,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"157:6:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":3190,"nodeType":"StructuredDocumentation","src":"222:94:27","text":"@notice Errors are declared inside an interface (namespace) to improve DX with Typechain."},"fullyImplemented":true,"id":3550,"linearizedBaseContracts":[3550],"name":"IVaultErrors","nameLocation":"326:12:27","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3191,"nodeType":"StructuredDocumentation","src":"576:149:27","text":" @notice A pool has already been registered. `registerPool` may only be called once.\n @param pool The already registered pool"},"errorSelector":"db771c80","id":3195,"name":"PoolAlreadyRegistered","nameLocation":"736:21:27","nodeType":"ErrorDefinition","parameters":{"id":3194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3193,"mutability":"mutable","name":"pool","nameLocation":"766:4:27","nodeType":"VariableDeclaration","scope":3195,"src":"758:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3192,"name":"address","nodeType":"ElementaryTypeName","src":"758:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"757:14:27"},"src":"730:42:27"},{"documentation":{"id":3196,"nodeType":"StructuredDocumentation","src":"778:149:27","text":" @notice A pool has already been initialized. `initialize` may only be called once.\n @param pool The already initialized pool"},"errorSelector":"218e3747","id":3200,"name":"PoolAlreadyInitialized","nameLocation":"938:22:27","nodeType":"ErrorDefinition","parameters":{"id":3199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3198,"mutability":"mutable","name":"pool","nameLocation":"969:4:27","nodeType":"VariableDeclaration","scope":3200,"src":"961:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3197,"name":"address","nodeType":"ElementaryTypeName","src":"961:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"960:14:27"},"src":"932:43:27"},{"documentation":{"id":3201,"nodeType":"StructuredDocumentation","src":"981:99:27","text":" @notice A pool has not been registered.\n @param pool The unregistered pool"},"errorSelector":"9e51bd5c","id":3205,"name":"PoolNotRegistered","nameLocation":"1091:17:27","nodeType":"ErrorDefinition","parameters":{"id":3204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3203,"mutability":"mutable","name":"pool","nameLocation":"1117:4:27","nodeType":"VariableDeclaration","scope":3205,"src":"1109:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3202,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1108:14:27"},"src":"1085:38:27"},{"documentation":{"id":3206,"nodeType":"StructuredDocumentation","src":"1129:112:27","text":" @notice A referenced pool has not been initialized.\n @param pool The uninitialized pool"},"errorSelector":"4bdace13","id":3210,"name":"PoolNotInitialized","nameLocation":"1252:18:27","nodeType":"ErrorDefinition","parameters":{"id":3209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3208,"mutability":"mutable","name":"pool","nameLocation":"1279:4:27","nodeType":"VariableDeclaration","scope":3210,"src":"1271:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3207,"name":"address","nodeType":"ElementaryTypeName","src":"1271:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1270:14:27"},"src":"1246:39:27"},{"documentation":{"id":3211,"nodeType":"StructuredDocumentation","src":"1291:274:27","text":" @notice A hook contract rejected a pool on registration.\n @param poolHooksContract Address of the hook contract that rejected the pool registration\n @param pool Address of the rejected pool\n @param poolFactory Address of the pool factory"},"errorSelector":"fa93d814","id":3219,"name":"HookRegistrationFailed","nameLocation":"1576:22:27","nodeType":"ErrorDefinition","parameters":{"id":3218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3213,"mutability":"mutable","name":"poolHooksContract","nameLocation":"1607:17:27","nodeType":"VariableDeclaration","scope":3219,"src":"1599:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3212,"name":"address","nodeType":"ElementaryTypeName","src":"1599:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3215,"mutability":"mutable","name":"pool","nameLocation":"1634:4:27","nodeType":"VariableDeclaration","scope":3219,"src":"1626:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3214,"name":"address","nodeType":"ElementaryTypeName","src":"1626:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3217,"mutability":"mutable","name":"poolFactory","nameLocation":"1648:11:27","nodeType":"VariableDeclaration","scope":3219,"src":"1640:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3216,"name":"address","nodeType":"ElementaryTypeName","src":"1640:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1598:62:27"},"src":"1570:91:27"},{"documentation":{"id":3220,"nodeType":"StructuredDocumentation","src":"1667:136:27","text":" @notice A token was already registered (i.e., it is a duplicate in the pool).\n @param token The duplicate token"},"errorSelector":"4f4b634e","id":3225,"name":"TokenAlreadyRegistered","nameLocation":"1814:22:27","nodeType":"ErrorDefinition","parameters":{"id":3224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3223,"mutability":"mutable","name":"token","nameLocation":"1844:5:27","nodeType":"VariableDeclaration","scope":3225,"src":"1837:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3222,"nodeType":"UserDefinedTypeName","pathNode":{"id":3221,"name":"IERC20","nameLocations":["1837:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1837:6:27"},"referencedDeclaration":39274,"src":"1837:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1836:14:27"},"src":"1808:43:27"},{"documentation":{"id":3226,"nodeType":"StructuredDocumentation","src":"1857:57:27","text":"@notice The token count is below the minimum allowed."},"errorSelector":"5ed4ba8f","id":3228,"name":"MinTokens","nameLocation":"1925:9:27","nodeType":"ErrorDefinition","parameters":{"id":3227,"nodeType":"ParameterList","parameters":[],"src":"1934:2:27"},"src":"1919:18:27"},{"documentation":{"id":3229,"nodeType":"StructuredDocumentation","src":"1943:57:27","text":"@notice The token count is above the maximum allowed."},"errorSelector":"707bdf58","id":3231,"name":"MaxTokens","nameLocation":"2011:9:27","nodeType":"ErrorDefinition","parameters":{"id":3230,"nodeType":"ParameterList","parameters":[],"src":"2020:2:27"},"src":"2005:18:27"},{"documentation":{"id":3232,"nodeType":"StructuredDocumentation","src":"2029:61:27","text":"@notice Invalid tokens (e.g., zero) cannot be registered."},"errorSelector":"c1ab6dc1","id":3234,"name":"InvalidToken","nameLocation":"2101:12:27","nodeType":"ErrorDefinition","parameters":{"id":3233,"nodeType":"ParameterList","parameters":[],"src":"2113:2:27"},"src":"2095:21:27"},{"documentation":{"id":3235,"nodeType":"StructuredDocumentation","src":"2122:86:27","text":"@notice The token type given in a TokenConfig during pool registration is invalid."},"errorSelector":"a1e9dd9d","id":3237,"name":"InvalidTokenType","nameLocation":"2219:16:27","nodeType":"ErrorDefinition","parameters":{"id":3236,"nodeType":"ParameterList","parameters":[],"src":"2235:2:27"},"src":"2213:25:27"},{"documentation":{"id":3238,"nodeType":"StructuredDocumentation","src":"2244:76:27","text":"@notice The data in a TokenConfig struct is inconsistent or unsupported."},"errorSelector":"df450632","id":3240,"name":"InvalidTokenConfiguration","nameLocation":"2331:25:27","nodeType":"ErrorDefinition","parameters":{"id":3239,"nodeType":"ParameterList","parameters":[],"src":"2356:2:27"},"src":"2325:34:27"},{"documentation":{"id":3241,"nodeType":"StructuredDocumentation","src":"2365:64:27","text":"@notice Tokens with more than 18 decimals are not supported."},"errorSelector":"686d3607","id":3243,"name":"InvalidTokenDecimals","nameLocation":"2440:20:27","nodeType":"ErrorDefinition","parameters":{"id":3242,"nodeType":"ParameterList","parameters":[],"src":"2460:2:27"},"src":"2434:29:27"},{"documentation":{"id":3244,"nodeType":"StructuredDocumentation","src":"2469:287:27","text":" @notice The token list passed into an operation does not match the pool tokens in the pool.\n @param pool Address of the pool\n @param expectedToken The correct token at a given index in the pool\n @param actualToken The actual token found at that index"},"errorSelector":"ffe261a1","id":3252,"name":"TokensMismatch","nameLocation":"2767:14:27","nodeType":"ErrorDefinition","parameters":{"id":3251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3246,"mutability":"mutable","name":"pool","nameLocation":"2790:4:27","nodeType":"VariableDeclaration","scope":3252,"src":"2782:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3245,"name":"address","nodeType":"ElementaryTypeName","src":"2782:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3248,"mutability":"mutable","name":"expectedToken","nameLocation":"2804:13:27","nodeType":"VariableDeclaration","scope":3252,"src":"2796:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3247,"name":"address","nodeType":"ElementaryTypeName","src":"2796:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3250,"mutability":"mutable","name":"actualToken","nameLocation":"2827:11:27","nodeType":"VariableDeclaration","scope":3252,"src":"2819:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3249,"name":"address","nodeType":"ElementaryTypeName","src":"2819:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2781:58:27"},"src":"2761:79:27"},{"documentation":{"id":3253,"nodeType":"StructuredDocumentation","src":"3071:85:27","text":"@notice A transient accounting operation completed with outstanding token deltas."},"errorSelector":"20f1d86d","id":3255,"name":"BalanceNotSettled","nameLocation":"3167:17:27","nodeType":"ErrorDefinition","parameters":{"id":3254,"nodeType":"ParameterList","parameters":[],"src":"3184:2:27"},"src":"3161:26:27"},{"documentation":{"id":3256,"nodeType":"StructuredDocumentation","src":"3193:97:27","text":"@notice A user called a Vault function (swap, add/remove liquidity) outside the lock context."},"errorSelector":"c09ba736","id":3258,"name":"VaultIsNotUnlocked","nameLocation":"3301:18:27","nodeType":"ErrorDefinition","parameters":{"id":3257,"nodeType":"ParameterList","parameters":[],"src":"3319:2:27"},"src":"3295:27:27"},{"documentation":{"id":3259,"nodeType":"StructuredDocumentation","src":"3328:105:27","text":"@notice The pool has returned false to the beforeSwap hook, indicating the transaction should revert."},"errorSelector":"53f976d4","id":3261,"name":"DynamicSwapFeeHookFailed","nameLocation":"3444:24:27","nodeType":"ErrorDefinition","parameters":{"id":3260,"nodeType":"ParameterList","parameters":[],"src":"3468:2:27"},"src":"3438:33:27"},{"documentation":{"id":3262,"nodeType":"StructuredDocumentation","src":"3477:105:27","text":"@notice The pool has returned false to the beforeSwap hook, indicating the transaction should revert."},"errorSelector":"e91e17e7","id":3264,"name":"BeforeSwapHookFailed","nameLocation":"3593:20:27","nodeType":"ErrorDefinition","parameters":{"id":3263,"nodeType":"ParameterList","parameters":[],"src":"3613:2:27"},"src":"3587:29:27"},{"documentation":{"id":3265,"nodeType":"StructuredDocumentation","src":"3622:104:27","text":"@notice The pool has returned false to the afterSwap hook, indicating the transaction should revert."},"errorSelector":"15a29dec","id":3267,"name":"AfterSwapHookFailed","nameLocation":"3737:19:27","nodeType":"ErrorDefinition","parameters":{"id":3266,"nodeType":"ParameterList","parameters":[],"src":"3756:2:27"},"src":"3731:28:27"},{"documentation":{"id":3268,"nodeType":"StructuredDocumentation","src":"3765:111:27","text":"@notice The pool has returned false to the beforeInitialize hook, indicating the transaction should revert."},"errorSelector":"60612925","id":3270,"name":"BeforeInitializeHookFailed","nameLocation":"3887:26:27","nodeType":"ErrorDefinition","parameters":{"id":3269,"nodeType":"ParameterList","parameters":[],"src":"3913:2:27"},"src":"3881:35:27"},{"documentation":{"id":3271,"nodeType":"StructuredDocumentation","src":"3922:110:27","text":"@notice The pool has returned false to the afterInitialize hook, indicating the transaction should revert."},"errorSelector":"0f23dbc6","id":3273,"name":"AfterInitializeHookFailed","nameLocation":"4043:25:27","nodeType":"ErrorDefinition","parameters":{"id":3272,"nodeType":"ParameterList","parameters":[],"src":"4068:2:27"},"src":"4037:34:27"},{"documentation":{"id":3274,"nodeType":"StructuredDocumentation","src":"4077:113:27","text":"@notice The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert."},"errorSelector":"0b2eb652","id":3276,"name":"BeforeAddLiquidityHookFailed","nameLocation":"4201:28:27","nodeType":"ErrorDefinition","parameters":{"id":3275,"nodeType":"ParameterList","parameters":[],"src":"4229:2:27"},"src":"4195:37:27"},{"documentation":{"id":3277,"nodeType":"StructuredDocumentation","src":"4238:112:27","text":"@notice The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert."},"errorSelector":"e1249165","id":3279,"name":"AfterAddLiquidityHookFailed","nameLocation":"4361:27:27","nodeType":"ErrorDefinition","parameters":{"id":3278,"nodeType":"ParameterList","parameters":[],"src":"4388:2:27"},"src":"4355:36:27"},{"documentation":{"id":3280,"nodeType":"StructuredDocumentation","src":"4397:116:27","text":"@notice The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert."},"errorSelector":"2aaf8866","id":3282,"name":"BeforeRemoveLiquidityHookFailed","nameLocation":"4524:31:27","nodeType":"ErrorDefinition","parameters":{"id":3281,"nodeType":"ParameterList","parameters":[],"src":"4555:2:27"},"src":"4518:40:27"},{"documentation":{"id":3283,"nodeType":"StructuredDocumentation","src":"4564:115:27","text":"@notice The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert."},"errorSelector":"1d3391d8","id":3285,"name":"AfterRemoveLiquidityHookFailed","nameLocation":"4690:30:27","nodeType":"ErrorDefinition","parameters":{"id":3284,"nodeType":"ParameterList","parameters":[],"src":"4720:2:27"},"src":"4684:39:27"},{"documentation":{"id":3286,"nodeType":"StructuredDocumentation","src":"4729:115:27","text":"@notice An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance)."},"errorSelector":"e5d185cf","id":3288,"name":"RouterNotTrusted","nameLocation":"4855:16:27","nodeType":"ErrorDefinition","parameters":{"id":3287,"nodeType":"ParameterList","parameters":[],"src":"4871:2:27"},"src":"4849:25:27"},{"documentation":{"id":3289,"nodeType":"StructuredDocumentation","src":"5097:47:27","text":"@notice The user tried to swap zero tokens."},"errorSelector":"57a456b7","id":3291,"name":"AmountGivenZero","nameLocation":"5155:15:27","nodeType":"ErrorDefinition","parameters":{"id":3290,"nodeType":"ParameterList","parameters":[],"src":"5170:2:27"},"src":"5149:24:27"},{"documentation":{"id":3292,"nodeType":"StructuredDocumentation","src":"5179:58:27","text":"@notice The user attempted to swap a token for itself."},"errorSelector":"a54b181d","id":3294,"name":"CannotSwapSameToken","nameLocation":"5248:19:27","nodeType":"ErrorDefinition","parameters":{"id":3293,"nodeType":"ParameterList","parameters":[],"src":"5267:2:27"},"src":"5242:28:27"},{"documentation":{"id":3295,"nodeType":"StructuredDocumentation","src":"5276:137:27","text":" @notice The user attempted to operate with a token that is not in the pool.\n @param token The unregistered token"},"errorSelector":"ddef98d7","id":3300,"name":"TokenNotRegistered","nameLocation":"5424:18:27","nodeType":"ErrorDefinition","parameters":{"id":3299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3298,"mutability":"mutable","name":"token","nameLocation":"5450:5:27","nodeType":"VariableDeclaration","scope":3300,"src":"5443:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3297,"nodeType":"UserDefinedTypeName","pathNode":{"id":3296,"name":"IERC20","nameLocations":["5443:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5443:6:27"},"referencedDeclaration":39274,"src":"5443:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5442:14:27"},"src":"5418:39:27"},{"documentation":{"id":3301,"nodeType":"StructuredDocumentation","src":"5463:215:27","text":" @notice An amount in or out has exceeded the limit specified in the swap request.\n @param amount The total amount in or out\n @param limit The amount of the limit that has been exceeded"},"errorSelector":"e2ea151b","id":3307,"name":"SwapLimit","nameLocation":"5689:9:27","nodeType":"ErrorDefinition","parameters":{"id":3306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3303,"mutability":"mutable","name":"amount","nameLocation":"5707:6:27","nodeType":"VariableDeclaration","scope":3307,"src":"5699:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3302,"name":"uint256","nodeType":"ElementaryTypeName","src":"5699:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3305,"mutability":"mutable","name":"limit","nameLocation":"5723:5:27","nodeType":"VariableDeclaration","scope":3307,"src":"5715:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3304,"name":"uint256","nodeType":"ElementaryTypeName","src":"5715:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5698:31:27"},"src":"5683:47:27"},{"documentation":{"id":3308,"nodeType":"StructuredDocumentation","src":"5736:228:27","text":" @notice A hook adjusted amount in or out has exceeded the limit specified in the swap request.\n @param amount The total amount in or out\n @param limit The amount of the limit that has been exceeded"},"errorSelector":"cc0e4a99","id":3314,"name":"HookAdjustedSwapLimit","nameLocation":"5975:21:27","nodeType":"ErrorDefinition","parameters":{"id":3313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3310,"mutability":"mutable","name":"amount","nameLocation":"6005:6:27","nodeType":"VariableDeclaration","scope":3314,"src":"5997:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3309,"name":"uint256","nodeType":"ElementaryTypeName","src":"5997:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3312,"mutability":"mutable","name":"limit","nameLocation":"6021:5:27","nodeType":"VariableDeclaration","scope":3314,"src":"6013:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3311,"name":"uint256","nodeType":"ElementaryTypeName","src":"6013:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5996:31:27"},"src":"5969:59:27"},{"documentation":{"id":3315,"nodeType":"StructuredDocumentation","src":"6034:87:27","text":"@notice The amount given or calculated for an operation is below the minimum limit."},"errorSelector":"1ed4d118","id":3317,"name":"TradeAmountTooSmall","nameLocation":"6132:19:27","nodeType":"ErrorDefinition","parameters":{"id":3316,"nodeType":"ParameterList","parameters":[],"src":"6151:2:27"},"src":"6126:28:27"},{"documentation":{"id":3318,"nodeType":"StructuredDocumentation","src":"6381:45:27","text":"@notice Add liquidity kind not supported."},"errorSelector":"6c02b395","id":3320,"name":"InvalidAddLiquidityKind","nameLocation":"6437:23:27","nodeType":"ErrorDefinition","parameters":{"id":3319,"nodeType":"ParameterList","parameters":[],"src":"6460:2:27"},"src":"6431:32:27"},{"documentation":{"id":3321,"nodeType":"StructuredDocumentation","src":"6469:264:27","text":" @notice A required amountIn exceeds the maximum limit specified for the operation.\n @param tokenIn The incoming token\n @param amountIn The total token amount in\n @param maxAmountIn The amount of the limit that has been exceeded"},"errorSelector":"8eda85e4","id":3330,"name":"AmountInAboveMax","nameLocation":"6744:16:27","nodeType":"ErrorDefinition","parameters":{"id":3329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3324,"mutability":"mutable","name":"tokenIn","nameLocation":"6768:7:27","nodeType":"VariableDeclaration","scope":3330,"src":"6761:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3323,"nodeType":"UserDefinedTypeName","pathNode":{"id":3322,"name":"IERC20","nameLocations":["6761:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6761:6:27"},"referencedDeclaration":39274,"src":"6761:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3326,"mutability":"mutable","name":"amountIn","nameLocation":"6785:8:27","nodeType":"VariableDeclaration","scope":3330,"src":"6777:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3325,"name":"uint256","nodeType":"ElementaryTypeName","src":"6777:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3328,"mutability":"mutable","name":"maxAmountIn","nameLocation":"6803:11:27","nodeType":"VariableDeclaration","scope":3330,"src":"6795:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3327,"name":"uint256","nodeType":"ElementaryTypeName","src":"6795:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6760:55:27"},"src":"6738:78:27"},{"documentation":{"id":3331,"nodeType":"StructuredDocumentation","src":"6822:269:27","text":" @notice A hook adjusted amountIn exceeds the maximum limit specified for the operation.\n @param tokenIn The incoming token\n @param amountIn The total token amount in\n @param maxAmountIn The amount of the limit that has been exceeded"},"errorSelector":"cefa3afa","id":3340,"name":"HookAdjustedAmountInAboveMax","nameLocation":"7102:28:27","nodeType":"ErrorDefinition","parameters":{"id":3339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3334,"mutability":"mutable","name":"tokenIn","nameLocation":"7138:7:27","nodeType":"VariableDeclaration","scope":3340,"src":"7131:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3333,"nodeType":"UserDefinedTypeName","pathNode":{"id":3332,"name":"IERC20","nameLocations":["7131:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"7131:6:27"},"referencedDeclaration":39274,"src":"7131:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3336,"mutability":"mutable","name":"amountIn","nameLocation":"7155:8:27","nodeType":"VariableDeclaration","scope":3340,"src":"7147:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3335,"name":"uint256","nodeType":"ElementaryTypeName","src":"7147:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3338,"mutability":"mutable","name":"maxAmountIn","nameLocation":"7173:11:27","nodeType":"VariableDeclaration","scope":3340,"src":"7165:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3337,"name":"uint256","nodeType":"ElementaryTypeName","src":"7165:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7130:55:27"},"src":"7096:90:27"},{"documentation":{"id":3341,"nodeType":"StructuredDocumentation","src":"7192:245:27","text":" @notice The BPT amount received from adding liquidity is below the minimum specified for the operation.\n @param amountOut The total BPT amount out\n @param minAmountOut The amount of the limit that has been exceeded"},"errorSelector":"8d261d5d","id":3347,"name":"BptAmountOutBelowMin","nameLocation":"7448:20:27","nodeType":"ErrorDefinition","parameters":{"id":3346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3343,"mutability":"mutable","name":"amountOut","nameLocation":"7477:9:27","nodeType":"VariableDeclaration","scope":3347,"src":"7469:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3342,"name":"uint256","nodeType":"ElementaryTypeName","src":"7469:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3345,"mutability":"mutable","name":"minAmountOut","nameLocation":"7496:12:27","nodeType":"VariableDeclaration","scope":3347,"src":"7488:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3344,"name":"uint256","nodeType":"ElementaryTypeName","src":"7488:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7468:41:27"},"src":"7442:68:27"},{"documentation":{"id":3348,"nodeType":"StructuredDocumentation","src":"7516:75:27","text":"@notice Pool does not support adding liquidity with a customized input."},"errorSelector":"4876c0bc","id":3350,"name":"DoesNotSupportAddLiquidityCustom","nameLocation":"7602:32:27","nodeType":"ErrorDefinition","parameters":{"id":3349,"nodeType":"ParameterList","parameters":[],"src":"7634:2:27"},"src":"7596:41:27"},{"documentation":{"id":3351,"nodeType":"StructuredDocumentation","src":"7643:68:27","text":"@notice Pool does not support adding liquidity through donation."},"errorSelector":"efe0265d","id":3353,"name":"DoesNotSupportDonation","nameLocation":"7722:22:27","nodeType":"ErrorDefinition","parameters":{"id":3352,"nodeType":"ParameterList","parameters":[],"src":"7744:2:27"},"src":"7716:31:27"},{"documentation":{"id":3354,"nodeType":"StructuredDocumentation","src":"7977:48:27","text":"@notice Remove liquidity kind not supported."},"errorSelector":"137a9a39","id":3356,"name":"InvalidRemoveLiquidityKind","nameLocation":"8036:26:27","nodeType":"ErrorDefinition","parameters":{"id":3355,"nodeType":"ParameterList","parameters":[],"src":"8062:2:27"},"src":"8030:35:27"},{"documentation":{"id":3357,"nodeType":"StructuredDocumentation","src":"8071:269:27","text":" @notice The actual amount out is below the minimum limit specified for the operation.\n @param tokenOut The outgoing token\n @param amountOut The total BPT amount out\n @param minAmountOut The amount of the limit that has been exceeded"},"errorSelector":"2f785e46","id":3366,"name":"AmountOutBelowMin","nameLocation":"8351:17:27","nodeType":"ErrorDefinition","parameters":{"id":3365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3360,"mutability":"mutable","name":"tokenOut","nameLocation":"8376:8:27","nodeType":"VariableDeclaration","scope":3366,"src":"8369:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3359,"nodeType":"UserDefinedTypeName","pathNode":{"id":3358,"name":"IERC20","nameLocations":["8369:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8369:6:27"},"referencedDeclaration":39274,"src":"8369:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3362,"mutability":"mutable","name":"amountOut","nameLocation":"8394:9:27","nodeType":"VariableDeclaration","scope":3366,"src":"8386:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3361,"name":"uint256","nodeType":"ElementaryTypeName","src":"8386:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3364,"mutability":"mutable","name":"minAmountOut","nameLocation":"8413:12:27","nodeType":"VariableDeclaration","scope":3366,"src":"8405:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3363,"name":"uint256","nodeType":"ElementaryTypeName","src":"8405:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8368:58:27"},"src":"8345:82:27"},{"documentation":{"id":3367,"nodeType":"StructuredDocumentation","src":"8433:276:27","text":" @notice The hook adjusted amount out is below the minimum limit specified for the operation.\n @param tokenOut The outgoing token\n @param amountOut The total BPT amount out\n @param minAmountOut The amount of the limit that has been exceeded"},"errorSelector":"fbd8a724","id":3376,"name":"HookAdjustedAmountOutBelowMin","nameLocation":"8720:29:27","nodeType":"ErrorDefinition","parameters":{"id":3375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3370,"mutability":"mutable","name":"tokenOut","nameLocation":"8757:8:27","nodeType":"VariableDeclaration","scope":3376,"src":"8750:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3369,"nodeType":"UserDefinedTypeName","pathNode":{"id":3368,"name":"IERC20","nameLocations":["8750:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8750:6:27"},"referencedDeclaration":39274,"src":"8750:6:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3372,"mutability":"mutable","name":"amountOut","nameLocation":"8775:9:27","nodeType":"VariableDeclaration","scope":3376,"src":"8767:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3371,"name":"uint256","nodeType":"ElementaryTypeName","src":"8767:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3374,"mutability":"mutable","name":"minAmountOut","nameLocation":"8794:12:27","nodeType":"VariableDeclaration","scope":3376,"src":"8786:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3373,"name":"uint256","nodeType":"ElementaryTypeName","src":"8786:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8749:58:27"},"src":"8714:94:27"},{"documentation":{"id":3377,"nodeType":"StructuredDocumentation","src":"8814:228:27","text":" @notice The required BPT amount in exceeds the maximum limit specified for the operation.\n @param amountIn The total BPT amount in\n @param maxAmountIn The amount of the limit that has been exceeded"},"errorSelector":"31d38e0b","id":3383,"name":"BptAmountInAboveMax","nameLocation":"9053:19:27","nodeType":"ErrorDefinition","parameters":{"id":3382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3379,"mutability":"mutable","name":"amountIn","nameLocation":"9081:8:27","nodeType":"VariableDeclaration","scope":3383,"src":"9073:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3378,"name":"uint256","nodeType":"ElementaryTypeName","src":"9073:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3381,"mutability":"mutable","name":"maxAmountIn","nameLocation":"9099:11:27","nodeType":"VariableDeclaration","scope":3383,"src":"9091:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3380,"name":"uint256","nodeType":"ElementaryTypeName","src":"9091:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9072:39:27"},"src":"9047:65:27"},{"documentation":{"id":3384,"nodeType":"StructuredDocumentation","src":"9118:77:27","text":"@notice Pool does not support removing liquidity with a customized input."},"errorSelector":"cf0a95c0","id":3386,"name":"DoesNotSupportRemoveLiquidityCustom","nameLocation":"9206:35:27","nodeType":"ErrorDefinition","parameters":{"id":3385,"nodeType":"ParameterList","parameters":[],"src":"9241:2:27"},"src":"9200:44:27"},{"documentation":{"id":3387,"nodeType":"StructuredDocumentation","src":"9463:332:27","text":" @notice Error raised when there is an overflow in the fee calculation.\n @dev This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole\n (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee\n percentages in the Vault."},"errorSelector":"4c69ac5d","id":3389,"name":"ProtocolFeesExceedTotalCollected","nameLocation":"9806:32:27","nodeType":"ErrorDefinition","parameters":{"id":3388,"nodeType":"ParameterList","parameters":[],"src":"9838:2:27"},"src":"9800:41:27"},{"documentation":{"id":3390,"nodeType":"StructuredDocumentation","src":"9847:430:27","text":" @notice Error raised when the swap fee percentage is less than the minimum allowed value.\n @dev The Vault itself does not impose a universal minimum. Rather, it validates against the\n range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error\n if it is below the minimum value returned by the pool.\n Pools with dynamic fees do not check these limits."},"errorSelector":"bfb20688","id":3392,"name":"SwapFeePercentageTooLow","nameLocation":"10288:23:27","nodeType":"ErrorDefinition","parameters":{"id":3391,"nodeType":"ParameterList","parameters":[],"src":"10311:2:27"},"src":"10282:32:27"},{"documentation":{"id":3393,"nodeType":"StructuredDocumentation","src":"10320:433:27","text":" @notice Error raised when the swap fee percentage is greater than the maximum allowed value.\n @dev The Vault itself does not impose a universal minimum. Rather, it validates against the\n range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error\n if it is above the maximum value returned by the pool.\n Pools with dynamic fees do not check these limits."},"errorSelector":"7f47834b","id":3395,"name":"SwapFeePercentageTooHigh","nameLocation":"10764:24:27","nodeType":"ErrorDefinition","parameters":{"id":3394,"nodeType":"ParameterList","parameters":[],"src":"10788:2:27"},"src":"10758:33:27"},{"documentation":{"id":3396,"nodeType":"StructuredDocumentation","src":"10797:646:27","text":" @notice Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\n @dev Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit\n precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which\n corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%).\n Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between\n the aggregate fee calculated here and that stored in the Vault."},"errorSelector":"833fb3ce","id":3398,"name":"FeePrecisionTooHigh","nameLocation":"11454:19:27","nodeType":"ErrorDefinition","parameters":{"id":3397,"nodeType":"ParameterList","parameters":[],"src":"11473:2:27"},"src":"11448:28:27"},{"documentation":{"id":3399,"nodeType":"StructuredDocumentation","src":"11482:107:27","text":"@notice A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei)."},"errorSelector":"746e5940","id":3401,"name":"PercentageAboveMax","nameLocation":"11600:18:27","nodeType":"ErrorDefinition","parameters":{"id":3400,"nodeType":"ParameterList","parameters":[],"src":"11618:2:27"},"src":"11594:27:27"},{"documentation":{"id":3402,"nodeType":"StructuredDocumentation","src":"11842:78:27","text":"@notice A user tried to execute a query operation when they were disabled."},"errorSelector":"7a198886","id":3404,"name":"QueriesDisabled","nameLocation":"11931:15:27","nodeType":"ErrorDefinition","parameters":{"id":3403,"nodeType":"ParameterList","parameters":[],"src":"11946:2:27"},"src":"11925:24:27"},{"documentation":{"id":3405,"nodeType":"StructuredDocumentation","src":"11955:84:27","text":"@notice An admin tried to re-enable queries, but they were disabled permanently."},"errorSelector":"069f8cbc","id":3407,"name":"QueriesDisabledPermanently","nameLocation":"12050:26:27","nodeType":"ErrorDefinition","parameters":{"id":3406,"nodeType":"ParameterList","parameters":[],"src":"12076:2:27"},"src":"12044:35:27"},{"documentation":{"id":3408,"nodeType":"StructuredDocumentation","src":"12302:104:27","text":" @notice Cannot enable recovery mode when already enabled.\n @param pool The pool"},"errorSelector":"346d7607","id":3412,"name":"PoolInRecoveryMode","nameLocation":"12417:18:27","nodeType":"ErrorDefinition","parameters":{"id":3411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3410,"mutability":"mutable","name":"pool","nameLocation":"12444:4:27","nodeType":"VariableDeclaration","scope":3412,"src":"12436:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3409,"name":"address","nodeType":"ElementaryTypeName","src":"12436:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12435:14:27"},"src":"12411:39:27"},{"documentation":{"id":3413,"nodeType":"StructuredDocumentation","src":"12456:101:27","text":" @notice Cannot disable recovery mode when not enabled.\n @param pool The pool"},"errorSelector":"ef029adf","id":3417,"name":"PoolNotInRecoveryMode","nameLocation":"12568:21:27","nodeType":"ErrorDefinition","parameters":{"id":3416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3415,"mutability":"mutable","name":"pool","nameLocation":"12598:4:27","nodeType":"VariableDeclaration","scope":3417,"src":"12590:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3414,"name":"address","nodeType":"ElementaryTypeName","src":"12590:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12589:14:27"},"src":"12562:42:27"},{"documentation":{"id":3418,"nodeType":"StructuredDocumentation","src":"12828:206:27","text":" @notice Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\n @param sender The account attempting to call a permissioned function"},"errorSelector":"089676d5","id":3422,"name":"SenderIsNotVault","nameLocation":"13045:16:27","nodeType":"ErrorDefinition","parameters":{"id":3421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3420,"mutability":"mutable","name":"sender","nameLocation":"13070:6:27","nodeType":"VariableDeclaration","scope":3422,"src":"13062:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3419,"name":"address","nodeType":"ElementaryTypeName","src":"13062:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13061:16:27"},"src":"13039:39:27"},{"documentation":{"id":3423,"nodeType":"StructuredDocumentation","src":"13303:79:27","text":"@notice The caller specified a pause window period longer than the maximum."},"errorSelector":"cc0e8fe5","id":3425,"name":"VaultPauseWindowDurationTooLarge","nameLocation":"13393:32:27","nodeType":"ErrorDefinition","parameters":{"id":3424,"nodeType":"ParameterList","parameters":[],"src":"13425:2:27"},"src":"13387:41:27"},{"documentation":{"id":3426,"nodeType":"StructuredDocumentation","src":"13434:73:27","text":"@notice The caller specified a buffer period longer than the maximum."},"errorSelector":"9ea4efee","id":3428,"name":"PauseBufferPeriodDurationTooLarge","nameLocation":"13518:33:27","nodeType":"ErrorDefinition","parameters":{"id":3427,"nodeType":"ParameterList","parameters":[],"src":"13551:2:27"},"src":"13512:42:27"},{"documentation":{"id":3429,"nodeType":"StructuredDocumentation","src":"13560:76:27","text":"@notice A user tried to perform an operation while the Vault was paused."},"errorSelector":"da9f8b34","id":3431,"name":"VaultPaused","nameLocation":"13647:11:27","nodeType":"ErrorDefinition","parameters":{"id":3430,"nodeType":"ParameterList","parameters":[],"src":"13658:2:27"},"src":"13641:20:27"},{"documentation":{"id":3432,"nodeType":"StructuredDocumentation","src":"13667:73:27","text":"@notice Governance tried to unpause the Vault when it was not paused."},"errorSelector":"f7ff4dca","id":3434,"name":"VaultNotPaused","nameLocation":"13751:14:27","nodeType":"ErrorDefinition","parameters":{"id":3433,"nodeType":"ParameterList","parameters":[],"src":"13765:2:27"},"src":"13745:23:27"},{"documentation":{"id":3435,"nodeType":"StructuredDocumentation","src":"13774:79:27","text":"@notice Governance tried to pause the Vault after the pause period expired."},"errorSelector":"0e4460b7","id":3437,"name":"VaultPauseWindowExpired","nameLocation":"13864:23:27","nodeType":"ErrorDefinition","parameters":{"id":3436,"nodeType":"ParameterList","parameters":[],"src":"13887:2:27"},"src":"13858:32:27"},{"documentation":{"id":3438,"nodeType":"StructuredDocumentation","src":"13896:123:27","text":" @notice A user tried to perform an operation involving a paused Pool.\n @param pool The paused pool"},"errorSelector":"d971f597","id":3442,"name":"PoolPaused","nameLocation":"14030:10:27","nodeType":"ErrorDefinition","parameters":{"id":3441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3440,"mutability":"mutable","name":"pool","nameLocation":"14049:4:27","nodeType":"VariableDeclaration","scope":3442,"src":"14041:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3439,"name":"address","nodeType":"ElementaryTypeName","src":"14041:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14040:14:27"},"src":"14024:31:27"},{"documentation":{"id":3443,"nodeType":"StructuredDocumentation","src":"14061:124:27","text":" @notice Governance tried to unpause the Pool when it was not paused.\n @param pool The unpaused pool"},"errorSelector":"fdcd6894","id":3447,"name":"PoolNotPaused","nameLocation":"14196:13:27","nodeType":"ErrorDefinition","parameters":{"id":3446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3445,"mutability":"mutable","name":"pool","nameLocation":"14218:4:27","nodeType":"VariableDeclaration","scope":3447,"src":"14210:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3444,"name":"address","nodeType":"ElementaryTypeName","src":"14210:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14209:14:27"},"src":"14190:34:27"},{"documentation":{"id":3448,"nodeType":"StructuredDocumentation","src":"14230:119:27","text":" @notice Governance tried to pause a Pool after the pause period expired.\n @param pool The pool"},"errorSelector":"eb5a1217","id":3452,"name":"PoolPauseWindowExpired","nameLocation":"14360:22:27","nodeType":"ErrorDefinition","parameters":{"id":3451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3450,"mutability":"mutable","name":"pool","nameLocation":"14391:4:27","nodeType":"VariableDeclaration","scope":3452,"src":"14383:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3449,"name":"address","nodeType":"ElementaryTypeName","src":"14383:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14382:14:27"},"src":"14354:43:27"},{"documentation":{"id":3453,"nodeType":"StructuredDocumentation","src":"14628:163:27","text":" @notice The buffer for the given wrapped token was already initialized.\n @param wrappedToken The wrapped token corresponding to the buffer"},"errorSelector":"1690fa40","id":3458,"name":"BufferAlreadyInitialized","nameLocation":"14802:24:27","nodeType":"ErrorDefinition","parameters":{"id":3457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3456,"mutability":"mutable","name":"wrappedToken","nameLocation":"14836:12:27","nodeType":"VariableDeclaration","scope":3458,"src":"14827:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3455,"nodeType":"UserDefinedTypeName","pathNode":{"id":3454,"name":"IERC4626","nameLocations":["14827:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"14827:8:27"},"referencedDeclaration":38998,"src":"14827:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"14826:23:27"},"src":"14796:54:27"},{"documentation":{"id":3459,"nodeType":"StructuredDocumentation","src":"14856:159:27","text":" @notice The buffer for the given wrapped token was not initialized.\n @param wrappedToken The wrapped token corresponding to the buffer"},"errorSelector":"85f41299","id":3464,"name":"BufferNotInitialized","nameLocation":"15026:20:27","nodeType":"ErrorDefinition","parameters":{"id":3463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3462,"mutability":"mutable","name":"wrappedToken","nameLocation":"15056:12:27","nodeType":"VariableDeclaration","scope":3464,"src":"15047:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3461,"nodeType":"UserDefinedTypeName","pathNode":{"id":3460,"name":"IERC4626","nameLocations":["15047:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"15047:8:27"},"referencedDeclaration":38998,"src":"15047:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"15046:23:27"},"src":"15020:50:27"},{"documentation":{"id":3465,"nodeType":"StructuredDocumentation","src":"15076:90:27","text":"@notice The user is trying to remove more than their allocated shares from the buffer."},"errorSelector":"98c5dbd6","id":3467,"name":"NotEnoughBufferShares","nameLocation":"15177:21:27","nodeType":"ErrorDefinition","parameters":{"id":3466,"nodeType":"ParameterList","parameters":[],"src":"15198:2:27"},"src":"15171:30:27"},{"documentation":{"id":3468,"nodeType":"StructuredDocumentation","src":"15207:436:27","text":" @notice The wrapped token asset does not match the underlying token.\n @dev This should never happen, but a malicious wrapper contract might not return the correct address.\n Legitimate wrapper contracts should make the asset a constant or immutable value.\n @param wrappedToken The wrapped token corresponding to the buffer\n @param underlyingToken The underlying token returned by `asset`"},"errorSelector":"36b18d09","id":3475,"name":"WrongUnderlyingToken","nameLocation":"15654:20:27","nodeType":"ErrorDefinition","parameters":{"id":3474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3471,"mutability":"mutable","name":"wrappedToken","nameLocation":"15684:12:27","nodeType":"VariableDeclaration","scope":3475,"src":"15675:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3470,"nodeType":"UserDefinedTypeName","pathNode":{"id":3469,"name":"IERC4626","nameLocations":["15675:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"15675:8:27"},"referencedDeclaration":38998,"src":"15675:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3473,"mutability":"mutable","name":"underlyingToken","nameLocation":"15706:15:27","nodeType":"VariableDeclaration","scope":3475,"src":"15698:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3472,"name":"address","nodeType":"ElementaryTypeName","src":"15698:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15674:48:27"},"src":"15648:75:27"},{"documentation":{"id":3476,"nodeType":"StructuredDocumentation","src":"15729:322:27","text":" @notice A wrapped token reported the zero address as its underlying token asset.\n @dev This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to\n re-initialize the buffer).\n @param wrappedToken The wrapped token corresponding to the buffer"},"errorSelector":"d407f9c5","id":3481,"name":"InvalidUnderlyingToken","nameLocation":"16062:22:27","nodeType":"ErrorDefinition","parameters":{"id":3480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3479,"mutability":"mutable","name":"wrappedToken","nameLocation":"16094:12:27","nodeType":"VariableDeclaration","scope":3481,"src":"16085:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3478,"nodeType":"UserDefinedTypeName","pathNode":{"id":3477,"name":"IERC4626","nameLocations":["16085:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"16085:8:27"},"referencedDeclaration":38998,"src":"16085:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"16084:23:27"},"src":"16056:52:27"},{"documentation":{"id":3482,"nodeType":"StructuredDocumentation","src":"16114:183:27","text":" @notice The amount given to wrap/unwrap was too small, which can introduce rounding issues.\n @param wrappedToken The wrapped token corresponding to the buffer"},"errorSelector":"18fe7385","id":3487,"name":"WrapAmountTooSmall","nameLocation":"16308:18:27","nodeType":"ErrorDefinition","parameters":{"id":3486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3485,"mutability":"mutable","name":"wrappedToken","nameLocation":"16336:12:27","nodeType":"VariableDeclaration","scope":3487,"src":"16327:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3484,"nodeType":"UserDefinedTypeName","pathNode":{"id":3483,"name":"IERC4626","nameLocations":["16327:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"16327:8:27"},"referencedDeclaration":38998,"src":"16327:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"16326:23:27"},"src":"16302:48:27"},{"documentation":{"id":3488,"nodeType":"StructuredDocumentation","src":"16356:70:27","text":"@notice Buffer operation attempted while vault buffers are paused."},"errorSelector":"0f27df09","id":3490,"name":"VaultBuffersArePaused","nameLocation":"16437:21:27","nodeType":"ErrorDefinition","parameters":{"id":3489,"nodeType":"ParameterList","parameters":[],"src":"16458:2:27"},"src":"16431:30:27"},{"documentation":{"id":3491,"nodeType":"StructuredDocumentation","src":"16467:58:27","text":"@notice Buffer shares were minted to the zero address."},"errorSelector":"dbe6b10e","id":3493,"name":"BufferSharesInvalidReceiver","nameLocation":"16536:27:27","nodeType":"ErrorDefinition","parameters":{"id":3492,"nodeType":"ParameterList","parameters":[],"src":"16563:2:27"},"src":"16530:36:27"},{"documentation":{"id":3494,"nodeType":"StructuredDocumentation","src":"16572:60:27","text":"@notice Buffer shares were burned from the zero address."},"errorSelector":"586d06df","id":3496,"name":"BufferSharesInvalidOwner","nameLocation":"16643:24:27","nodeType":"ErrorDefinition","parameters":{"id":3495,"nodeType":"ParameterList","parameters":[],"src":"16667:2:27"},"src":"16637:33:27"},{"documentation":{"id":3497,"nodeType":"StructuredDocumentation","src":"16676:173:27","text":" @notice The total supply of a buffer can't be lower than the absolute minimum.\n @param totalSupply The total supply value that was below the minimum"},"errorSelector":"34bdbfaa","id":3501,"name":"BufferTotalSupplyTooLow","nameLocation":"16860:23:27","nodeType":"ErrorDefinition","parameters":{"id":3500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3499,"mutability":"mutable","name":"totalSupply","nameLocation":"16892:11:27","nodeType":"VariableDeclaration","scope":3501,"src":"16884:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3498,"name":"uint256","nodeType":"ElementaryTypeName","src":"16884:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16883:21:27"},"src":"16854:51:27"},{"documentation":{"id":3502,"nodeType":"StructuredDocumentation","src":"16911:97:27","text":"@dev A wrap/unwrap operation consumed more or returned less underlying tokens than it should."},"errorSelector":"1c6a5375","id":3511,"name":"NotEnoughUnderlying","nameLocation":"17019:19:27","nodeType":"ErrorDefinition","parameters":{"id":3510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3505,"mutability":"mutable","name":"wrappedToken","nameLocation":"17048:12:27","nodeType":"VariableDeclaration","scope":3511,"src":"17039:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3504,"nodeType":"UserDefinedTypeName","pathNode":{"id":3503,"name":"IERC4626","nameLocations":["17039:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"17039:8:27"},"referencedDeclaration":38998,"src":"17039:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3507,"mutability":"mutable","name":"expectedUnderlyingAmount","nameLocation":"17070:24:27","nodeType":"VariableDeclaration","scope":3511,"src":"17062:32:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3506,"name":"uint256","nodeType":"ElementaryTypeName","src":"17062:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3509,"mutability":"mutable","name":"actualUnderlyingAmount","nameLocation":"17104:22:27","nodeType":"VariableDeclaration","scope":3511,"src":"17096:30:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3508,"name":"uint256","nodeType":"ElementaryTypeName","src":"17096:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17038:89:27"},"src":"17013:115:27"},{"documentation":{"id":3512,"nodeType":"StructuredDocumentation","src":"17134:94:27","text":"@dev A wrap/unwrap operation consumed more or returned less wrapped tokens than it should."},"errorSelector":"1149424d","id":3521,"name":"NotEnoughWrapped","nameLocation":"17239:16:27","nodeType":"ErrorDefinition","parameters":{"id":3520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3515,"mutability":"mutable","name":"wrappedToken","nameLocation":"17265:12:27","nodeType":"VariableDeclaration","scope":3521,"src":"17256:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3514,"nodeType":"UserDefinedTypeName","pathNode":{"id":3513,"name":"IERC4626","nameLocations":["17256:8:27"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"17256:8:27"},"referencedDeclaration":38998,"src":"17256:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3517,"mutability":"mutable","name":"expectedWrappedAmount","nameLocation":"17287:21:27","nodeType":"VariableDeclaration","scope":3521,"src":"17279:29:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3516,"name":"uint256","nodeType":"ElementaryTypeName","src":"17279:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3519,"mutability":"mutable","name":"actualWrappedAmount","nameLocation":"17318:19:27","nodeType":"VariableDeclaration","scope":3521,"src":"17310:27:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3518,"name":"uint256","nodeType":"ElementaryTypeName","src":"17310:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17255:83:27"},"src":"17233:106:27"},{"documentation":{"id":3522,"nodeType":"StructuredDocumentation","src":"17345:76:27","text":"@dev Shares issued during initialization are below the requested amount."},"errorSelector":"da0cb07e","id":3528,"name":"IssuedSharesBelowMin","nameLocation":"17432:20:27","nodeType":"ErrorDefinition","parameters":{"id":3527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3524,"mutability":"mutable","name":"issuedShares","nameLocation":"17461:12:27","nodeType":"VariableDeclaration","scope":3528,"src":"17453:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3523,"name":"uint256","nodeType":"ElementaryTypeName","src":"17453:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3526,"mutability":"mutable","name":"minIssuedShares","nameLocation":"17483:15:27","nodeType":"VariableDeclaration","scope":3528,"src":"17475:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3525,"name":"uint256","nodeType":"ElementaryTypeName","src":"17475:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17452:47:27"},"src":"17426:74:27"},{"documentation":{"id":3529,"nodeType":"StructuredDocumentation","src":"17727:87:27","text":"@notice Pool does not support adding / removing liquidity with an unbalanced input."},"errorSelector":"d4f5779c","id":3531,"name":"DoesNotSupportUnbalancedLiquidity","nameLocation":"17825:33:27","nodeType":"ErrorDefinition","parameters":{"id":3530,"nodeType":"ParameterList","parameters":[],"src":"17858:2:27"},"src":"17819:42:27"},{"documentation":{"id":3532,"nodeType":"StructuredDocumentation","src":"17867:48:27","text":"@notice The contract should not receive ETH."},"errorSelector":"f2238896","id":3534,"name":"CannotReceiveEth","nameLocation":"17926:16:27","nodeType":"ErrorDefinition","parameters":{"id":3533,"nodeType":"ParameterList","parameters":[],"src":"17942:2:27"},"src":"17920:25:27"},{"documentation":{"id":3535,"nodeType":"StructuredDocumentation","src":"17951:156:27","text":" @notice The `VaultExtension` contract was called by an account directly.\n @dev It can only be called by the Vault via delegatecall."},"errorSelector":"9fd25b36","id":3537,"name":"NotVaultDelegateCall","nameLocation":"18118:20:27","nodeType":"ErrorDefinition","parameters":{"id":3536,"nodeType":"ParameterList","parameters":[],"src":"18138:2:27"},"src":"18112:29:27"},{"documentation":{"id":3538,"nodeType":"StructuredDocumentation","src":"18147:89:27","text":"@notice The `VaultExtension` contract was configured with an incorrect Vault address."},"errorSelector":"1ab9d9d0","id":3540,"name":"WrongVaultExtensionDeployment","nameLocation":"18247:29:27","nodeType":"ErrorDefinition","parameters":{"id":3539,"nodeType":"ParameterList","parameters":[],"src":"18276:2:27"},"src":"18241:38:27"},{"documentation":{"id":3541,"nodeType":"StructuredDocumentation","src":"18285:96:27","text":"@notice The `ProtocolFeeController` contract was configured with an incorrect Vault address."},"errorSelector":"1bbe95c7","id":3543,"name":"WrongProtocolFeeControllerDeployment","nameLocation":"18392:36:27","nodeType":"ErrorDefinition","parameters":{"id":3542,"nodeType":"ParameterList","parameters":[],"src":"18428:2:27"},"src":"18386:45:27"},{"documentation":{"id":3544,"nodeType":"StructuredDocumentation","src":"18437:85:27","text":"@notice The `VaultAdmin` contract was configured with an incorrect Vault address."},"errorSelector":"82cc28b6","id":3546,"name":"WrongVaultAdminDeployment","nameLocation":"18533:25:27","nodeType":"ErrorDefinition","parameters":{"id":3545,"nodeType":"ParameterList","parameters":[],"src":"18558:2:27"},"src":"18527:34:27"},{"documentation":{"id":3547,"nodeType":"StructuredDocumentation","src":"18567:54:27","text":"@notice Quote reverted with a reserved error code."},"errorSelector":"28f95541","id":3549,"name":"QuoteResultSpoofed","nameLocation":"18632:18:27","nodeType":"ErrorDefinition","parameters":{"id":3548,"nodeType":"ParameterList","parameters":[],"src":"18650:2:27"},"src":"18626:27:27"}],"scope":3551,"src":"316:18339:27","usedErrors":[3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549],"usedEvents":[]}],"src":"46:18610:27"},"id":27},"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IAuthorizer":[1316],"IERC20":[39274],"IERC4626":[38998],"IHooks":[1887],"IProtocolFeeController":[2230],"IRateProvider":[150],"IVaultEvents":[3789],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":3790,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3552,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:28"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":3554,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3790,"sourceUnit":38999,"src":"72:75:28","symbolAliases":[{"foreign":{"id":3553,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3556,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3790,"sourceUnit":39275,"src":"148:72:28","symbolAliases":[{"foreign":{"id":3555,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"157:6:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"./IProtocolFeeController.sol","id":3558,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3790,"sourceUnit":2231,"src":"222:70:28","symbolAliases":[{"foreign":{"id":3557,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"231:22:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":3560,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3790,"sourceUnit":1317,"src":"293:48:28","symbolAliases":[{"foreign":{"id":3559,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"302:11:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"./IHooks.sol","id":3562,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3790,"sourceUnit":1888,"src":"342:38:28","symbolAliases":[{"foreign":{"id":3561,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"351:6:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":3563,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3790,"sourceUnit":4654,"src":"381:26:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultEvents","contractDependencies":[],"contractKind":"interface","documentation":{"id":3564,"nodeType":"StructuredDocumentation","src":"409:91:28","text":"@dev Events are declared inside an interface (namespace) to improve DX with Typechain."},"fullyImplemented":true,"id":3789,"linearizedBaseContracts":[3789],"name":"IVaultEvents","nameLocation":"510:12:28","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3565,"nodeType":"StructuredDocumentation","src":"529:657:28","text":" @notice A Pool was registered by calling `registerPool`.\n @param pool The pool being registered\n @param factory The factory creating the pool\n @param tokenConfig An array of descriptors for the tokens the pool will manage\n @param swapFeePercentage The static swap fee of the pool\n @param pauseWindowEndTime The pool's pause window end time\n @param roleAccounts Addresses the Vault will allow to change certain pool settings\n @param hooksConfig Flags indicating which hooks the pool supports and address of hooks contract\n @param liquidityManagement Supported liquidity management hook flags"},"eventSelector":"bc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad","id":3588,"name":"PoolRegistered","nameLocation":"1197:14:28","nodeType":"EventDefinition","parameters":{"id":3587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3567,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"1237:4:28","nodeType":"VariableDeclaration","scope":3588,"src":"1221:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3566,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3569,"indexed":true,"mutability":"mutable","name":"factory","nameLocation":"1267:7:28","nodeType":"VariableDeclaration","scope":3588,"src":"1251:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3568,"name":"address","nodeType":"ElementaryTypeName","src":"1251:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3573,"indexed":false,"mutability":"mutable","name":"tokenConfig","nameLocation":"1298:11:28","nodeType":"VariableDeclaration","scope":3588,"src":"1284:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":3571,"nodeType":"UserDefinedTypeName","pathNode":{"id":3570,"name":"TokenConfig","nameLocations":["1284:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"1284:11:28"},"referencedDeclaration":4476,"src":"1284:11:28","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":3572,"nodeType":"ArrayTypeName","src":"1284:13:28","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":3575,"indexed":false,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"1327:17:28","nodeType":"VariableDeclaration","scope":3588,"src":"1319:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3574,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3577,"indexed":false,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"1361:18:28","nodeType":"VariableDeclaration","scope":3588,"src":"1354:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3576,"name":"uint32","nodeType":"ElementaryTypeName","src":"1354:6:28","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3580,"indexed":false,"mutability":"mutable","name":"roleAccounts","nameLocation":"1406:12:28","nodeType":"VariableDeclaration","scope":3588,"src":"1389:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":3579,"nodeType":"UserDefinedTypeName","pathNode":{"id":3578,"name":"PoolRoleAccounts","nameLocations":["1389:16:28"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"1389:16:28"},"referencedDeclaration":4459,"src":"1389:16:28","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":3583,"indexed":false,"mutability":"mutable","name":"hooksConfig","nameLocation":"1440:11:28","nodeType":"VariableDeclaration","scope":3588,"src":"1428:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig"},"typeName":{"id":3582,"nodeType":"UserDefinedTypeName","pathNode":{"id":3581,"name":"HooksConfig","nameLocations":["1428:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":4433,"src":"1428:11:28"},"referencedDeclaration":4433,"src":"1428:11:28","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_storage_ptr","typeString":"struct HooksConfig"}},"visibility":"internal"},{"constant":false,"id":3586,"indexed":false,"mutability":"mutable","name":"liquidityManagement","nameLocation":"1481:19:28","nodeType":"VariableDeclaration","scope":3588,"src":"1461:39:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":3585,"nodeType":"UserDefinedTypeName","pathNode":{"id":3584,"name":"LiquidityManagement","nameLocations":["1461:19:28"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"1461:19:28"},"referencedDeclaration":4362,"src":"1461:19:28","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"1211:295:28"},"src":"1191:316:28"},{"anonymous":false,"documentation":{"id":3589,"nodeType":"StructuredDocumentation","src":"1513:120:28","text":" @notice A Pool was initialized by calling `initialize`.\n @param pool The pool being initialized"},"eventSelector":"cad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3","id":3593,"name":"PoolInitialized","nameLocation":"1644:15:28","nodeType":"EventDefinition","parameters":{"id":3592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3591,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"1676:4:28","nodeType":"VariableDeclaration","scope":3593,"src":"1660:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3590,"name":"address","nodeType":"ElementaryTypeName","src":"1660:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1659:22:28"},"src":"1638:44:28"},{"anonymous":false,"documentation":{"id":3594,"nodeType":"StructuredDocumentation","src":"1688:478:28","text":" @notice A swap has occurred.\n @param pool The pool with the tokens being swapped\n @param tokenIn The token entering the Vault (balance increases)\n @param tokenOut The token leaving the Vault (balance decreases)\n @param amountIn Number of tokenIn tokens\n @param amountOut Number of tokenOut tokens\n @param swapFeePercentage Swap fee percentage applied (can differ if dynamic)\n @param swapFeeAmount Swap fee amount paid"},"eventSelector":"0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db","id":3612,"name":"Swap","nameLocation":"2177:4:28","nodeType":"EventDefinition","parameters":{"id":3611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3596,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"2207:4:28","nodeType":"VariableDeclaration","scope":3612,"src":"2191:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3595,"name":"address","nodeType":"ElementaryTypeName","src":"2191:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3599,"indexed":true,"mutability":"mutable","name":"tokenIn","nameLocation":"2236:7:28","nodeType":"VariableDeclaration","scope":3612,"src":"2221:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3598,"nodeType":"UserDefinedTypeName","pathNode":{"id":3597,"name":"IERC20","nameLocations":["2221:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2221:6:28"},"referencedDeclaration":39274,"src":"2221:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3602,"indexed":true,"mutability":"mutable","name":"tokenOut","nameLocation":"2268:8:28","nodeType":"VariableDeclaration","scope":3612,"src":"2253:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3601,"nodeType":"UserDefinedTypeName","pathNode":{"id":3600,"name":"IERC20","nameLocations":["2253:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2253:6:28"},"referencedDeclaration":39274,"src":"2253:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3604,"indexed":false,"mutability":"mutable","name":"amountIn","nameLocation":"2294:8:28","nodeType":"VariableDeclaration","scope":3612,"src":"2286:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3603,"name":"uint256","nodeType":"ElementaryTypeName","src":"2286:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3606,"indexed":false,"mutability":"mutable","name":"amountOut","nameLocation":"2320:9:28","nodeType":"VariableDeclaration","scope":3612,"src":"2312:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3605,"name":"uint256","nodeType":"ElementaryTypeName","src":"2312:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3608,"indexed":false,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"2347:17:28","nodeType":"VariableDeclaration","scope":3612,"src":"2339:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3607,"name":"uint256","nodeType":"ElementaryTypeName","src":"2339:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3610,"indexed":false,"mutability":"mutable","name":"swapFeeAmount","nameLocation":"2382:13:28","nodeType":"VariableDeclaration","scope":3612,"src":"2374:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3609,"name":"uint256","nodeType":"ElementaryTypeName","src":"2374:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2181:220:28"},"src":"2171:231:28"},{"anonymous":false,"documentation":{"id":3613,"nodeType":"StructuredDocumentation","src":"2408:352:28","text":" @notice A wrap operation has occurred.\n @param wrappedToken The wrapped token address\n @param depositedUnderlying Number of underlying tokens deposited\n @param mintedShares Number of shares (wrapped tokens) minted\n @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)"},"eventSelector":"3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b","id":3624,"name":"Wrap","nameLocation":"2771:4:28","nodeType":"EventDefinition","parameters":{"id":3623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3616,"indexed":true,"mutability":"mutable","name":"wrappedToken","nameLocation":"2802:12:28","nodeType":"VariableDeclaration","scope":3624,"src":"2785:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3615,"nodeType":"UserDefinedTypeName","pathNode":{"id":3614,"name":"IERC4626","nameLocations":["2785:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"2785:8:28"},"referencedDeclaration":38998,"src":"2785:8:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3618,"indexed":false,"mutability":"mutable","name":"depositedUnderlying","nameLocation":"2832:19:28","nodeType":"VariableDeclaration","scope":3624,"src":"2824:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3617,"name":"uint256","nodeType":"ElementaryTypeName","src":"2824:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3620,"indexed":false,"mutability":"mutable","name":"mintedShares","nameLocation":"2869:12:28","nodeType":"VariableDeclaration","scope":3624,"src":"2861:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3619,"name":"uint256","nodeType":"ElementaryTypeName","src":"2861:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3622,"indexed":false,"mutability":"mutable","name":"bufferBalances","nameLocation":"2899:14:28","nodeType":"VariableDeclaration","scope":3624,"src":"2891:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2891:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2775:144:28"},"src":"2765:155:28"},{"anonymous":false,"documentation":{"id":3625,"nodeType":"StructuredDocumentation","src":"2926:355:28","text":" @notice An unwrap operation has occurred.\n @param wrappedToken The wrapped token address\n @param burnedShares Number of shares (wrapped tokens) burned\n @param withdrawnUnderlying Number of underlying tokens withdrawn\n @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)"},"eventSelector":"eeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0","id":3636,"name":"Unwrap","nameLocation":"3292:6:28","nodeType":"EventDefinition","parameters":{"id":3635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3628,"indexed":true,"mutability":"mutable","name":"wrappedToken","nameLocation":"3325:12:28","nodeType":"VariableDeclaration","scope":3636,"src":"3308:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3627,"nodeType":"UserDefinedTypeName","pathNode":{"id":3626,"name":"IERC4626","nameLocations":["3308:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"3308:8:28"},"referencedDeclaration":38998,"src":"3308:8:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3630,"indexed":false,"mutability":"mutable","name":"burnedShares","nameLocation":"3355:12:28","nodeType":"VariableDeclaration","scope":3636,"src":"3347:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3629,"name":"uint256","nodeType":"ElementaryTypeName","src":"3347:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3632,"indexed":false,"mutability":"mutable","name":"withdrawnUnderlying","nameLocation":"3385:19:28","nodeType":"VariableDeclaration","scope":3636,"src":"3377:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3631,"name":"uint256","nodeType":"ElementaryTypeName","src":"3377:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3634,"indexed":false,"mutability":"mutable","name":"bufferBalances","nameLocation":"3422:14:28","nodeType":"VariableDeclaration","scope":3636,"src":"3414:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3633,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3414:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3298:144:28"},"src":"3286:157:28"},{"anonymous":false,"documentation":{"id":3637,"nodeType":"StructuredDocumentation","src":"3449:562:28","text":" @notice Liquidity has been added to a pool (including initialization).\n @param pool The pool with liquidity added\n @param liquidityProvider The user performing the operation\n @param kind The add liquidity operation type (e.g., proportional, custom)\n @param totalSupply The total supply of the pool after the operation\n @param amountsAddedRaw The amount of each token that was added, sorted in token registration order\n @param swapFeeAmountsRaw The total swap fees charged, sorted in token registration order"},"eventSelector":"a26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871","id":3654,"name":"LiquidityAdded","nameLocation":"4022:14:28","nodeType":"EventDefinition","parameters":{"id":3653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3639,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"4062:4:28","nodeType":"VariableDeclaration","scope":3654,"src":"4046:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3638,"name":"address","nodeType":"ElementaryTypeName","src":"4046:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3641,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nameLocation":"4092:17:28","nodeType":"VariableDeclaration","scope":3654,"src":"4076:33:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3640,"name":"address","nodeType":"ElementaryTypeName","src":"4076:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3644,"indexed":true,"mutability":"mutable","name":"kind","nameLocation":"4144:4:28","nodeType":"VariableDeclaration","scope":3654,"src":"4119:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":3643,"nodeType":"UserDefinedTypeName","pathNode":{"id":3642,"name":"AddLiquidityKind","nameLocations":["4119:16:28"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"4119:16:28"},"referencedDeclaration":4589,"src":"4119:16:28","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":3646,"indexed":false,"mutability":"mutable","name":"totalSupply","nameLocation":"4166:11:28","nodeType":"VariableDeclaration","scope":3654,"src":"4158:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3645,"name":"uint256","nodeType":"ElementaryTypeName","src":"4158:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3649,"indexed":false,"mutability":"mutable","name":"amountsAddedRaw","nameLocation":"4197:15:28","nodeType":"VariableDeclaration","scope":3654,"src":"4187:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3647,"name":"uint256","nodeType":"ElementaryTypeName","src":"4187:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3648,"nodeType":"ArrayTypeName","src":"4187:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3652,"indexed":false,"mutability":"mutable","name":"swapFeeAmountsRaw","nameLocation":"4232:17:28","nodeType":"VariableDeclaration","scope":3654,"src":"4222:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3650,"name":"uint256","nodeType":"ElementaryTypeName","src":"4222:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3651,"nodeType":"ArrayTypeName","src":"4222:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4036:219:28"},"src":"4016:240:28"},{"anonymous":false,"documentation":{"id":3655,"nodeType":"StructuredDocumentation","src":"4262:548:28","text":" @notice Liquidity has been removed from a pool.\n @param pool The pool with liquidity removed\n @param liquidityProvider The user performing the operation\n @param kind The remove liquidity operation type (e.g., proportional, custom)\n @param totalSupply The total supply of the pool after the operation\n @param amountsRemovedRaw The amount of each token that was removed, sorted in token registration order\n @param swapFeeAmountsRaw The total swap fees charged, sorted in token registration order"},"eventSelector":"fbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a5","id":3672,"name":"LiquidityRemoved","nameLocation":"4821:16:28","nodeType":"EventDefinition","parameters":{"id":3671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3657,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"4863:4:28","nodeType":"VariableDeclaration","scope":3672,"src":"4847:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3656,"name":"address","nodeType":"ElementaryTypeName","src":"4847:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3659,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nameLocation":"4893:17:28","nodeType":"VariableDeclaration","scope":3672,"src":"4877:33:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3658,"name":"address","nodeType":"ElementaryTypeName","src":"4877:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3662,"indexed":true,"mutability":"mutable","name":"kind","nameLocation":"4948:4:28","nodeType":"VariableDeclaration","scope":3672,"src":"4920:32:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":3661,"nodeType":"UserDefinedTypeName","pathNode":{"id":3660,"name":"RemoveLiquidityKind","nameLocations":["4920:19:28"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"4920:19:28"},"referencedDeclaration":4610,"src":"4920:19:28","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":3664,"indexed":false,"mutability":"mutable","name":"totalSupply","nameLocation":"4970:11:28","nodeType":"VariableDeclaration","scope":3672,"src":"4962:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3663,"name":"uint256","nodeType":"ElementaryTypeName","src":"4962:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3667,"indexed":false,"mutability":"mutable","name":"amountsRemovedRaw","nameLocation":"5001:17:28","nodeType":"VariableDeclaration","scope":3672,"src":"4991:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3665,"name":"uint256","nodeType":"ElementaryTypeName","src":"4991:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3666,"nodeType":"ArrayTypeName","src":"4991:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3670,"indexed":false,"mutability":"mutable","name":"swapFeeAmountsRaw","nameLocation":"5038:17:28","nodeType":"VariableDeclaration","scope":3672,"src":"5028:27:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3668,"name":"uint256","nodeType":"ElementaryTypeName","src":"5028:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3669,"nodeType":"ArrayTypeName","src":"5028:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4837:224:28"},"src":"4815:247:28"},{"anonymous":false,"documentation":{"id":3673,"nodeType":"StructuredDocumentation","src":"5068:114:28","text":" @notice The Vault's pause status has changed.\n @param paused True if the Vault was paused"},"eventSelector":"e0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02","id":3677,"name":"VaultPausedStateChanged","nameLocation":"5193:23:28","nodeType":"EventDefinition","parameters":{"id":3676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3675,"indexed":false,"mutability":"mutable","name":"paused","nameLocation":"5222:6:28","nodeType":"VariableDeclaration","scope":3677,"src":"5217:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3674,"name":"bool","nodeType":"ElementaryTypeName","src":"5217:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5216:13:28"},"src":"5187:43:28"},{"anonymous":false,"documentation":{"id":3678,"nodeType":"StructuredDocumentation","src":"5236:87:28","text":"@notice `disableQuery` has been called on the Vault, disabling query functionality."},"eventSelector":"bd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc625","id":3680,"name":"VaultQueriesDisabled","nameLocation":"5334:20:28","nodeType":"EventDefinition","parameters":{"id":3679,"nodeType":"ParameterList","parameters":[],"src":"5354:2:28"},"src":"5328:29:28"},{"anonymous":false,"documentation":{"id":3681,"nodeType":"StructuredDocumentation","src":"5363:85:28","text":"@notice `enableQuery` has been called on the Vault, enabling query functionality."},"eventSelector":"91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f5","id":3683,"name":"VaultQueriesEnabled","nameLocation":"5459:19:28","nodeType":"EventDefinition","parameters":{"id":3682,"nodeType":"ParameterList","parameters":[],"src":"5478:2:28"},"src":"5453:28:28"},{"anonymous":false,"documentation":{"id":3684,"nodeType":"StructuredDocumentation","src":"5487:171:28","text":" @notice A Pool's pause status has changed.\n @param pool The pool that was just paused or unpaused\n @param paused True if the pool was paused"},"eventSelector":"57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7","id":3690,"name":"PoolPausedStateChanged","nameLocation":"5669:22:28","nodeType":"EventDefinition","parameters":{"id":3689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3686,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"5708:4:28","nodeType":"VariableDeclaration","scope":3690,"src":"5692:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3685,"name":"address","nodeType":"ElementaryTypeName","src":"5692:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3688,"indexed":false,"mutability":"mutable","name":"paused","nameLocation":"5719:6:28","nodeType":"VariableDeclaration","scope":3690,"src":"5714:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3687,"name":"bool","nodeType":"ElementaryTypeName","src":"5714:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5691:35:28"},"src":"5663:64:28"},{"anonymous":false,"documentation":{"id":3691,"nodeType":"StructuredDocumentation","src":"5733:158:28","text":" @notice Emitted when the swap fee percentage of a pool is updated.\n @param swapFeePercentage The new swap fee percentage for the pool"},"eventSelector":"89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1","id":3697,"name":"SwapFeePercentageChanged","nameLocation":"5902:24:28","nodeType":"EventDefinition","parameters":{"id":3696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3693,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"5943:4:28","nodeType":"VariableDeclaration","scope":3697,"src":"5927:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3692,"name":"address","nodeType":"ElementaryTypeName","src":"5927:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3695,"indexed":false,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"5957:17:28","nodeType":"VariableDeclaration","scope":3697,"src":"5949:25:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3694,"name":"uint256","nodeType":"ElementaryTypeName","src":"5949:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5926:49:28"},"src":"5896:80:28"},{"anonymous":false,"documentation":{"id":3698,"nodeType":"StructuredDocumentation","src":"5982:170:28","text":" @notice Recovery mode has been enabled or disabled for a pool.\n @param pool The pool\n @param recoveryMode True if recovery mode was enabled"},"eventSelector":"c2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9","id":3704,"name":"PoolRecoveryModeStateChanged","nameLocation":"6163:28:28","nodeType":"EventDefinition","parameters":{"id":3703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3700,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"6208:4:28","nodeType":"VariableDeclaration","scope":3704,"src":"6192:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3699,"name":"address","nodeType":"ElementaryTypeName","src":"6192:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3702,"indexed":false,"mutability":"mutable","name":"recoveryMode","nameLocation":"6219:12:28","nodeType":"VariableDeclaration","scope":3704,"src":"6214:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3701,"name":"bool","nodeType":"ElementaryTypeName","src":"6214:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6191:41:28"},"src":"6157:76:28"},{"anonymous":false,"documentation":{"id":3705,"nodeType":"StructuredDocumentation","src":"6239:353:28","text":" @notice A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\n @dev The `ProtocolFeeController` will emit an event with the underlying change.\n @param pool The pool whose aggregate swap fee percentage changed\n @param aggregateSwapFeePercentage The new aggregate swap fee percentage"},"eventSelector":"e4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354","id":3711,"name":"AggregateSwapFeePercentageChanged","nameLocation":"6603:33:28","nodeType":"EventDefinition","parameters":{"id":3710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3707,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"6653:4:28","nodeType":"VariableDeclaration","scope":3711,"src":"6637:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3706,"name":"address","nodeType":"ElementaryTypeName","src":"6637:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3709,"indexed":false,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"6667:26:28","nodeType":"VariableDeclaration","scope":3711,"src":"6659:34:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3708,"name":"uint256","nodeType":"ElementaryTypeName","src":"6659:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6636:58:28"},"src":"6597:98:28"},{"anonymous":false,"documentation":{"id":3712,"nodeType":"StructuredDocumentation","src":"6701:357:28","text":" @notice A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\n @dev The `ProtocolFeeController` will emit an event with the underlying change.\n @param pool The pool whose aggregate yield fee percentage changed\n @param aggregateYieldFeePercentage The new aggregate yield fee percentage"},"eventSelector":"606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca5","id":3718,"name":"AggregateYieldFeePercentageChanged","nameLocation":"7069:34:28","nodeType":"EventDefinition","parameters":{"id":3717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3714,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"7120:4:28","nodeType":"VariableDeclaration","scope":3718,"src":"7104:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3713,"name":"address","nodeType":"ElementaryTypeName","src":"7104:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3716,"indexed":false,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"7134:27:28","nodeType":"VariableDeclaration","scope":3718,"src":"7126:35:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3715,"name":"uint256","nodeType":"ElementaryTypeName","src":"7126:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7103:59:28"},"src":"7063:100:28"},{"anonymous":false,"documentation":{"id":3719,"nodeType":"StructuredDocumentation","src":"7169:132:28","text":" @notice A new authorizer is set by `setAuthorizer`.\n @param newAuthorizer The address of the new authorizer"},"eventSelector":"94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef","id":3724,"name":"AuthorizerChanged","nameLocation":"7312:17:28","nodeType":"EventDefinition","parameters":{"id":3723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3722,"indexed":true,"mutability":"mutable","name":"newAuthorizer","nameLocation":"7350:13:28","nodeType":"VariableDeclaration","scope":3724,"src":"7330:33:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":3721,"nodeType":"UserDefinedTypeName","pathNode":{"id":3720,"name":"IAuthorizer","nameLocations":["7330:11:28"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"7330:11:28"},"referencedDeclaration":1316,"src":"7330:11:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"7329:35:28"},"src":"7306:59:28"},{"anonymous":false,"documentation":{"id":3725,"nodeType":"StructuredDocumentation","src":"7371:180:28","text":" @notice A new protocol fee controller is set by `setProtocolFeeController`.\n @param newProtocolFeeController The address of the new protocol fee controller"},"eventSelector":"280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df0","id":3730,"name":"ProtocolFeeControllerChanged","nameLocation":"7562:28:28","nodeType":"EventDefinition","parameters":{"id":3729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3728,"indexed":true,"mutability":"mutable","name":"newProtocolFeeController","nameLocation":"7622:24:28","nodeType":"VariableDeclaration","scope":3730,"src":"7591:55:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":3727,"nodeType":"UserDefinedTypeName","pathNode":{"id":3726,"name":"IProtocolFeeController","nameLocations":["7591:22:28"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"7591:22:28"},"referencedDeclaration":2230,"src":"7591:22:28","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"}],"src":"7590:57:28"},"src":"7556:92:28"},{"anonymous":false,"documentation":{"id":3731,"nodeType":"StructuredDocumentation","src":"7654:553:28","text":" @notice Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\n @dev The underlying token can be derived from the wrapped token, so it's not included here.\n @param wrappedToken The wrapped token that identifies the buffer\n @param amountUnderlying The amount of the underlying token that was deposited\n @param amountWrapped The amount of the wrapped token that was deposited\n @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)"},"eventSelector":"75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a9","id":3742,"name":"LiquidityAddedToBuffer","nameLocation":"8218:22:28","nodeType":"EventDefinition","parameters":{"id":3741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3734,"indexed":true,"mutability":"mutable","name":"wrappedToken","nameLocation":"8267:12:28","nodeType":"VariableDeclaration","scope":3742,"src":"8250:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3733,"nodeType":"UserDefinedTypeName","pathNode":{"id":3732,"name":"IERC4626","nameLocations":["8250:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8250:8:28"},"referencedDeclaration":38998,"src":"8250:8:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3736,"indexed":false,"mutability":"mutable","name":"amountUnderlying","nameLocation":"8297:16:28","nodeType":"VariableDeclaration","scope":3742,"src":"8289:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3735,"name":"uint256","nodeType":"ElementaryTypeName","src":"8289:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3738,"indexed":false,"mutability":"mutable","name":"amountWrapped","nameLocation":"8331:13:28","nodeType":"VariableDeclaration","scope":3742,"src":"8323:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3737,"name":"uint256","nodeType":"ElementaryTypeName","src":"8323:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3740,"indexed":false,"mutability":"mutable","name":"bufferBalances","nameLocation":"8362:14:28","nodeType":"VariableDeclaration","scope":3742,"src":"8354:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8354:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8240:142:28"},"src":"8212:171:28"},{"anonymous":false,"documentation":{"id":3743,"nodeType":"StructuredDocumentation","src":"8389:570:28","text":" @notice Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\n @dev The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares`\n retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the\n \"totalSupply\" of a buffer.\n @param wrappedToken The wrapped token that identifies the buffer\n @param to The owner of the minted shares\n @param issuedShares The amount of \"internal BPT\" shares created"},"eventSelector":"d66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34","id":3752,"name":"BufferSharesMinted","nameLocation":"8970:18:28","nodeType":"EventDefinition","parameters":{"id":3751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3746,"indexed":true,"mutability":"mutable","name":"wrappedToken","nameLocation":"9006:12:28","nodeType":"VariableDeclaration","scope":3752,"src":"8989:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3745,"nodeType":"UserDefinedTypeName","pathNode":{"id":3744,"name":"IERC4626","nameLocations":["8989:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8989:8:28"},"referencedDeclaration":38998,"src":"8989:8:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3748,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"9036:2:28","nodeType":"VariableDeclaration","scope":3752,"src":"9020:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3747,"name":"address","nodeType":"ElementaryTypeName","src":"9020:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3750,"indexed":false,"mutability":"mutable","name":"issuedShares","nameLocation":"9048:12:28","nodeType":"VariableDeclaration","scope":3752,"src":"9040:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3749,"name":"uint256","nodeType":"ElementaryTypeName","src":"9040:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8988:73:28"},"src":"8964:98:28"},{"anonymous":false,"documentation":{"id":3753,"nodeType":"StructuredDocumentation","src":"9068:571:28","text":" @notice Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\n @dev The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares`\n retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the\n \"totalSupply\" of a buffer.\n @param wrappedToken The wrapped token that identifies the buffer\n @param from The owner of the burned shares\n @param burnedShares The amount of \"internal BPT\" shares burned"},"eventSelector":"4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b","id":3762,"name":"BufferSharesBurned","nameLocation":"9650:18:28","nodeType":"EventDefinition","parameters":{"id":3761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3756,"indexed":true,"mutability":"mutable","name":"wrappedToken","nameLocation":"9686:12:28","nodeType":"VariableDeclaration","scope":3762,"src":"9669:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3755,"nodeType":"UserDefinedTypeName","pathNode":{"id":3754,"name":"IERC4626","nameLocations":["9669:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"9669:8:28"},"referencedDeclaration":38998,"src":"9669:8:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3758,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"9716:4:28","nodeType":"VariableDeclaration","scope":3762,"src":"9700:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3757,"name":"address","nodeType":"ElementaryTypeName","src":"9700:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3760,"indexed":false,"mutability":"mutable","name":"burnedShares","nameLocation":"9730:12:28","nodeType":"VariableDeclaration","scope":3762,"src":"9722:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3759,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9668:75:28"},"src":"9644:100:28"},{"anonymous":false,"documentation":{"id":3763,"nodeType":"StructuredDocumentation","src":"9750:509:28","text":" @notice Liquidity was removed from an ERC4626 buffer.\n @dev The underlying token can be derived from the wrapped token, so it's not included here.\n @param wrappedToken The wrapped token that identifies the buffer\n @param amountUnderlying The amount of the underlying token that was withdrawn\n @param amountWrapped The amount of the wrapped token that was withdrawn\n @param bufferBalances The final buffer balances, packed in 128-bit words (underlying, wrapped)"},"eventSelector":"44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee5113","id":3774,"name":"LiquidityRemovedFromBuffer","nameLocation":"10270:26:28","nodeType":"EventDefinition","parameters":{"id":3773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3766,"indexed":true,"mutability":"mutable","name":"wrappedToken","nameLocation":"10323:12:28","nodeType":"VariableDeclaration","scope":3774,"src":"10306:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":3765,"nodeType":"UserDefinedTypeName","pathNode":{"id":3764,"name":"IERC4626","nameLocations":["10306:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"10306:8:28"},"referencedDeclaration":38998,"src":"10306:8:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":3768,"indexed":false,"mutability":"mutable","name":"amountUnderlying","nameLocation":"10353:16:28","nodeType":"VariableDeclaration","scope":3774,"src":"10345:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3767,"name":"uint256","nodeType":"ElementaryTypeName","src":"10345:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3770,"indexed":false,"mutability":"mutable","name":"amountWrapped","nameLocation":"10387:13:28","nodeType":"VariableDeclaration","scope":3774,"src":"10379:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3769,"name":"uint256","nodeType":"ElementaryTypeName","src":"10379:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3772,"indexed":false,"mutability":"mutable","name":"bufferBalances","nameLocation":"10418:14:28","nodeType":"VariableDeclaration","scope":3774,"src":"10410:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3771,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10410:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10296:142:28"},"src":"10264:175:28"},{"anonymous":false,"documentation":{"id":3775,"nodeType":"StructuredDocumentation","src":"10445:278:28","text":" @notice The Vault buffers pause status has changed.\n @dev If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer`\n set to true) will revert.\n @param paused True if the Vault buffers were paused"},"eventSelector":"300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5","id":3779,"name":"VaultBuffersPausedStateChanged","nameLocation":"10734:30:28","nodeType":"EventDefinition","parameters":{"id":3778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3777,"indexed":false,"mutability":"mutable","name":"paused","nameLocation":"10770:6:28","nodeType":"VariableDeclaration","scope":3779,"src":"10765:11:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3776,"name":"bool","nodeType":"ElementaryTypeName","src":"10765:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10764:13:28"},"src":"10728:50:28"},{"anonymous":false,"documentation":{"id":3780,"nodeType":"StructuredDocumentation","src":"10784:194:28","text":" @notice Pools can use this event to emit event data from the Vault.\n @param pool Pool address\n @param eventKey Event key\n @param eventData Encoded event data"},"eventSelector":"4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d85856428","id":3788,"name":"VaultAuxiliary","nameLocation":"10989:14:28","nodeType":"EventDefinition","parameters":{"id":3787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3782,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"11020:4:28","nodeType":"VariableDeclaration","scope":3788,"src":"11004:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3781,"name":"address","nodeType":"ElementaryTypeName","src":"11004:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3784,"indexed":true,"mutability":"mutable","name":"eventKey","nameLocation":"11042:8:28","nodeType":"VariableDeclaration","scope":3788,"src":"11026:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3783,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11026:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3786,"indexed":false,"mutability":"mutable","name":"eventData","nameLocation":"11058:9:28","nodeType":"VariableDeclaration","scope":3788,"src":"11052:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3785,"name":"bytes","nodeType":"ElementaryTypeName","src":"11052:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11003:65:28"},"src":"10983:86:28"}],"scope":3790,"src":"500:10571:28","usedErrors":[],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788]}],"src":"46:11026:28"},"id":28},"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IAuthorizer":[1316],"IERC20":[39274],"IERC4626":[38998],"IHooks":[1887],"IProtocolFeeController":[2230],"IRateProvider":[150],"IVault":[2893],"IVaultExtension":[4208],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":4209,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3791,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:29"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":3793,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4209,"sourceUnit":38999,"src":"72:75:29","symbolAliases":[{"foreign":{"id":3792,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3795,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4209,"sourceUnit":39275,"src":"148:72:29","symbolAliases":[{"foreign":{"id":3794,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"157:6:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":3797,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4209,"sourceUnit":1317,"src":"222:48:29","symbolAliases":[{"foreign":{"id":3796,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"231:11:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"./IProtocolFeeController.sol","id":3799,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4209,"sourceUnit":2231,"src":"271:70:29","symbolAliases":[{"foreign":{"id":3798,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"280:22:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":3801,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4209,"sourceUnit":2894,"src":"342:38:29","symbolAliases":[{"foreign":{"id":3800,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"351:6:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"./IHooks.sol","id":3803,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4209,"sourceUnit":1888,"src":"381:38:29","symbolAliases":[{"foreign":{"id":3802,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"390:6:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":3804,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4209,"sourceUnit":4654,"src":"420:26:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultExtension","contractDependencies":[],"contractKind":"interface","documentation":{"id":3805,"nodeType":"StructuredDocumentation","src":"448:318:29","text":" @notice Interface for functions defined on the `VaultExtension` contract.\n @dev `VaultExtension` handles less critical or frequently used functions, since delegate calls through\n the Vault are more expensive than direct calls. The main Vault contains the core code for swaps and\n liquidity operations."},"fullyImplemented":false,"id":4208,"linearizedBaseContracts":[4208],"name":"IVaultExtension","nameLocation":"777:15:29","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3806,"nodeType":"StructuredDocumentation","src":"1025:206:29","text":" @notice Returns the main Vault address.\n @dev The main Vault contains the entrypoint and main liquidity operation implementations.\n @return vault The address of the main Vault"},"functionSelector":"fbfa77cf","id":3812,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nameLocation":"1245:5:29","nodeType":"FunctionDefinition","parameters":{"id":3807,"nodeType":"ParameterList","parameters":[],"src":"1250:2:29"},"returnParameters":{"id":3811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3812,"src":"1276:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":3809,"nodeType":"UserDefinedTypeName","pathNode":{"id":3808,"name":"IVault","nameLocations":["1276:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1276:6:29"},"referencedDeclaration":2893,"src":"1276:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1275:8:29"},"scope":4208,"src":"1236:48:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3813,"nodeType":"StructuredDocumentation","src":"1290:202:29","text":" @notice Returns the VaultAdmin contract address.\n @dev The VaultAdmin contract mostly implements permissioned functions.\n @return vaultAdmin The address of the Vault admin"},"functionSelector":"1ba0ae45","id":3818,"implemented":false,"kind":"function","modifiers":[],"name":"getVaultAdmin","nameLocation":"1506:13:29","nodeType":"FunctionDefinition","parameters":{"id":3814,"nodeType":"ParameterList","parameters":[],"src":"1519:2:29"},"returnParameters":{"id":3817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3816,"mutability":"mutable","name":"vaultAdmin","nameLocation":"1553:10:29","nodeType":"VariableDeclaration","scope":3818,"src":"1545:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3815,"name":"address","nodeType":"ElementaryTypeName","src":"1545:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1544:20:29"},"scope":4208,"src":"1497:68:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3819,"nodeType":"StructuredDocumentation","src":"1793:254:29","text":" @notice Returns whether the Vault is unlocked (i.e., executing an operation).\n @dev The Vault must be unlocked to perform state-changing liquidity operations.\n @return unlocked True if the Vault is unlocked, false otherwise"},"functionSelector":"8380edb7","id":3824,"implemented":false,"kind":"function","modifiers":[],"name":"isUnlocked","nameLocation":"2061:10:29","nodeType":"FunctionDefinition","parameters":{"id":3820,"nodeType":"ParameterList","parameters":[],"src":"2071:2:29"},"returnParameters":{"id":3823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3822,"mutability":"mutable","name":"unlocked","nameLocation":"2102:8:29","nodeType":"VariableDeclaration","scope":3824,"src":"2097:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3821,"name":"bool","nodeType":"ElementaryTypeName","src":"2097:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2096:15:29"},"scope":4208,"src":"2052:60:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3825,"nodeType":"StructuredDocumentation","src":"2118:141:29","text":" @notice Returns the count of non-zero deltas.\n @return nonzeroDeltaCount The current value of `_nonzeroDeltaCount`"},"functionSelector":"db817187","id":3830,"implemented":false,"kind":"function","modifiers":[],"name":"getNonzeroDeltaCount","nameLocation":"2273:20:29","nodeType":"FunctionDefinition","parameters":{"id":3826,"nodeType":"ParameterList","parameters":[],"src":"2293:2:29"},"returnParameters":{"id":3829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3828,"mutability":"mutable","name":"nonzeroDeltaCount","nameLocation":"2327:17:29","nodeType":"VariableDeclaration","scope":3830,"src":"2319:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3827,"name":"uint256","nodeType":"ElementaryTypeName","src":"2319:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2318:27:29"},"scope":4208,"src":"2264:82:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3831,"nodeType":"StructuredDocumentation","src":"2352:284:29","text":" @notice Retrieves the token delta for a specific token.\n @dev This function allows reading the value from the `_tokenDeltas` mapping.\n @param token The token for which the delta is being fetched\n @return tokenDelta The delta of the specified token"},"functionSelector":"9e825ff5","id":3839,"implemented":false,"kind":"function","modifiers":[],"name":"getTokenDelta","nameLocation":"2650:13:29","nodeType":"FunctionDefinition","parameters":{"id":3835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3834,"mutability":"mutable","name":"token","nameLocation":"2671:5:29","nodeType":"VariableDeclaration","scope":3839,"src":"2664:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3833,"nodeType":"UserDefinedTypeName","pathNode":{"id":3832,"name":"IERC20","nameLocations":["2664:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2664:6:29"},"referencedDeclaration":39274,"src":"2664:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2663:14:29"},"returnParameters":{"id":3838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3837,"mutability":"mutable","name":"tokenDelta","nameLocation":"2708:10:29","nodeType":"VariableDeclaration","scope":3839,"src":"2701:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3836,"name":"int256","nodeType":"ElementaryTypeName","src":"2701:6:29","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2700:19:29"},"scope":4208,"src":"2641:79:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3840,"nodeType":"StructuredDocumentation","src":"2726:230:29","text":" @notice Retrieves the reserve (i.e., total Vault balance) of a given token.\n @param token The token for which to retrieve the reserve\n @return reserveAmount The amount of reserves for the given token"},"functionSelector":"96787092","id":3848,"implemented":false,"kind":"function","modifiers":[],"name":"getReservesOf","nameLocation":"2970:13:29","nodeType":"FunctionDefinition","parameters":{"id":3844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3843,"mutability":"mutable","name":"token","nameLocation":"2991:5:29","nodeType":"VariableDeclaration","scope":3848,"src":"2984:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":3842,"nodeType":"UserDefinedTypeName","pathNode":{"id":3841,"name":"IERC20","nameLocations":["2984:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2984:6:29"},"referencedDeclaration":39274,"src":"2984:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2983:14:29"},"returnParameters":{"id":3847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3846,"mutability":"mutable","name":"reserveAmount","nameLocation":"3029:13:29","nodeType":"VariableDeclaration","scope":3848,"src":"3021:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3845,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3020:23:29"},"scope":4208,"src":"2961:83:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3849,"nodeType":"StructuredDocumentation","src":"3050:944:29","text":" @notice This flag is used to detect and tax \"round-trip\" interactions (adding and removing liquidity in the\n same pool).\n @dev Taxing remove liquidity proportional whenever liquidity was added in the same `unlock` call adds an extra\n layer of security, discouraging operations that try to undo others for profit. Remove liquidity proportional\n is the only standard way to exit a position without fees, and this flag is used to enable fees in that case.\n It also discourages indirect swaps via unbalanced add and remove proportional, as they are expected to be worse\n than a simple swap for every pool type.\n @param pool Address of the pool to check\n @return liquidityAdded True if liquidity has been added to this pool in the current transaction\n Note that there is no `sessionId` argument; it always returns the value for the current (i.e., latest) session."},"functionSelector":"ace9b89b","id":3856,"implemented":false,"kind":"function","modifiers":[],"name":"getAddLiquidityCalledFlag","nameLocation":"4008:25:29","nodeType":"FunctionDefinition","parameters":{"id":3852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3851,"mutability":"mutable","name":"pool","nameLocation":"4042:4:29","nodeType":"VariableDeclaration","scope":3856,"src":"4034:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3850,"name":"address","nodeType":"ElementaryTypeName","src":"4034:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4033:14:29"},"returnParameters":{"id":3855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"liquidityAdded","nameLocation":"4076:14:29","nodeType":"VariableDeclaration","scope":3856,"src":"4071:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3853,"name":"bool","nodeType":"ElementaryTypeName","src":"4071:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4070:21:29"},"scope":4208,"src":"3999:93:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3857,"nodeType":"StructuredDocumentation","src":"4323:1604:29","text":" @notice Registers a pool, associating it with its factory and the tokens it manages.\n @dev A pool can opt-out of pausing by providing a zero value for the pause window, or allow pausing indefinitely\n by providing a large value. (Pool pause windows are not limited by the Vault maximums.) The vault defines an\n additional buffer period during which a paused pool will stay paused. After the buffer period passes, a paused\n pool will automatically unpause. Balancer timestamps are 32 bits.\n A pool can opt out of Balancer governance pausing by providing a custom `pauseManager`. This might be a\n multi-sig contract or an arbitrary smart contract with its own access controls, that forwards calls to\n the Vault.\n If the zero address is provided for the `pauseManager`, permissions for pausing the pool will default to the\n authorizer.\n @param pool The address of the pool being registered\n @param tokenConfig An array of descriptors for the tokens the pool will manage\n @param swapFeePercentage The initial static swap fee percentage of the pool\n @param pauseWindowEndTime The timestamp after which it is no longer possible to pause the pool\n @param protocolFeeExempt If true, the pool's initial aggregate fees will be set to 0\n @param roleAccounts Addresses the Vault will allow to change certain pool settings\n @param poolHooksContract Contract that implements the hooks for the pool\n @param liquidityManagement Liquidity management flags with implemented methods"},"functionSelector":"eeec802f","id":3880,"implemented":false,"kind":"function","modifiers":[],"name":"registerPool","nameLocation":"5941:12:29","nodeType":"FunctionDefinition","parameters":{"id":3878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3859,"mutability":"mutable","name":"pool","nameLocation":"5971:4:29","nodeType":"VariableDeclaration","scope":3880,"src":"5963:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3858,"name":"address","nodeType":"ElementaryTypeName","src":"5963:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3863,"mutability":"mutable","name":"tokenConfig","nameLocation":"6006:11:29","nodeType":"VariableDeclaration","scope":3880,"src":"5985:32:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":3861,"nodeType":"UserDefinedTypeName","pathNode":{"id":3860,"name":"TokenConfig","nameLocations":["5985:11:29"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"5985:11:29"},"referencedDeclaration":4476,"src":"5985:11:29","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":3862,"nodeType":"ArrayTypeName","src":"5985:13:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":3865,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"6035:17:29","nodeType":"VariableDeclaration","scope":3880,"src":"6027:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3864,"name":"uint256","nodeType":"ElementaryTypeName","src":"6027:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3867,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"6069:18:29","nodeType":"VariableDeclaration","scope":3880,"src":"6062:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3866,"name":"uint32","nodeType":"ElementaryTypeName","src":"6062:6:29","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3869,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"6102:17:29","nodeType":"VariableDeclaration","scope":3880,"src":"6097:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3868,"name":"bool","nodeType":"ElementaryTypeName","src":"6097:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3872,"mutability":"mutable","name":"roleAccounts","nameLocation":"6155:12:29","nodeType":"VariableDeclaration","scope":3880,"src":"6129:38:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":3871,"nodeType":"UserDefinedTypeName","pathNode":{"id":3870,"name":"PoolRoleAccounts","nameLocations":["6129:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"6129:16:29"},"referencedDeclaration":4459,"src":"6129:16:29","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":3874,"mutability":"mutable","name":"poolHooksContract","nameLocation":"6185:17:29","nodeType":"VariableDeclaration","scope":3880,"src":"6177:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3873,"name":"address","nodeType":"ElementaryTypeName","src":"6177:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3877,"mutability":"mutable","name":"liquidityManagement","nameLocation":"6241:19:29","nodeType":"VariableDeclaration","scope":3880,"src":"6212:48:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":3876,"nodeType":"UserDefinedTypeName","pathNode":{"id":3875,"name":"LiquidityManagement","nameLocations":["6212:19:29"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"6212:19:29"},"referencedDeclaration":4362,"src":"6212:19:29","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"5953:313:29"},"returnParameters":{"id":3879,"nodeType":"ParameterList","parameters":[],"src":"6275:0:29"},"scope":4208,"src":"5932:344:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3881,"nodeType":"StructuredDocumentation","src":"6282:185:29","text":" @notice Checks whether a pool is registered.\n @param pool Address of the pool to check\n @return registered True if the pool is registered, false otherwise"},"functionSelector":"c673bdaf","id":3888,"implemented":false,"kind":"function","modifiers":[],"name":"isPoolRegistered","nameLocation":"6481:16:29","nodeType":"FunctionDefinition","parameters":{"id":3884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3883,"mutability":"mutable","name":"pool","nameLocation":"6506:4:29","nodeType":"VariableDeclaration","scope":3888,"src":"6498:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3882,"name":"address","nodeType":"ElementaryTypeName","src":"6498:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6497:14:29"},"returnParameters":{"id":3887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3886,"mutability":"mutable","name":"registered","nameLocation":"6540:10:29","nodeType":"VariableDeclaration","scope":3888,"src":"6535:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3885,"name":"bool","nodeType":"ElementaryTypeName","src":"6535:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6534:17:29"},"scope":4208,"src":"6472:80:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3889,"nodeType":"StructuredDocumentation","src":"6558:589:29","text":" @notice Initializes a registered pool by adding liquidity; mints BPT tokens for the first time in exchange.\n @param pool Address of the pool to initialize\n @param to Address that will receive the output BPT\n @param tokens Tokens used to seed the pool (must match the registered tokens)\n @param exactAmountsIn Exact amounts of input tokens\n @param minBptAmountOut Minimum amount of output pool tokens\n @param userData Additional (optional) data required for adding initial liquidity\n @return bptAmountOut Output pool token amount"},"functionSelector":"ba8a2be0","id":3909,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"7161:10:29","nodeType":"FunctionDefinition","parameters":{"id":3905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3891,"mutability":"mutable","name":"pool","nameLocation":"7189:4:29","nodeType":"VariableDeclaration","scope":3909,"src":"7181:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3890,"name":"address","nodeType":"ElementaryTypeName","src":"7181:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3893,"mutability":"mutable","name":"to","nameLocation":"7211:2:29","nodeType":"VariableDeclaration","scope":3909,"src":"7203:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3892,"name":"address","nodeType":"ElementaryTypeName","src":"7203:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3897,"mutability":"mutable","name":"tokens","nameLocation":"7239:6:29","nodeType":"VariableDeclaration","scope":3909,"src":"7223:22:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3895,"nodeType":"UserDefinedTypeName","pathNode":{"id":3894,"name":"IERC20","nameLocations":["7223:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"7223:6:29"},"referencedDeclaration":39274,"src":"7223:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":3896,"nodeType":"ArrayTypeName","src":"7223:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3900,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"7272:14:29","nodeType":"VariableDeclaration","scope":3909,"src":"7255:31:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3898,"name":"uint256","nodeType":"ElementaryTypeName","src":"7255:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3899,"nodeType":"ArrayTypeName","src":"7255:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3902,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"7304:15:29","nodeType":"VariableDeclaration","scope":3909,"src":"7296:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3901,"name":"uint256","nodeType":"ElementaryTypeName","src":"7296:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3904,"mutability":"mutable","name":"userData","nameLocation":"7342:8:29","nodeType":"VariableDeclaration","scope":3909,"src":"7329:21:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3903,"name":"bytes","nodeType":"ElementaryTypeName","src":"7329:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7171:185:29"},"returnParameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3907,"mutability":"mutable","name":"bptAmountOut","nameLocation":"7383:12:29","nodeType":"VariableDeclaration","scope":3909,"src":"7375:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3906,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7374:22:29"},"scope":4208,"src":"7152:245:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3910,"nodeType":"StructuredDocumentation","src":"7627:258:29","text":" @notice Checks whether a pool is initialized.\n @dev An initialized pool can be considered registered as well.\n @param pool Address of the pool to check\n @return initialized True if the pool is initialized, false otherwise"},"functionSelector":"532cec7c","id":3917,"implemented":false,"kind":"function","modifiers":[],"name":"isPoolInitialized","nameLocation":"7899:17:29","nodeType":"FunctionDefinition","parameters":{"id":3913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3912,"mutability":"mutable","name":"pool","nameLocation":"7925:4:29","nodeType":"VariableDeclaration","scope":3917,"src":"7917:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3911,"name":"address","nodeType":"ElementaryTypeName","src":"7917:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7916:14:29"},"returnParameters":{"id":3916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3915,"mutability":"mutable","name":"initialized","nameLocation":"7959:11:29","nodeType":"VariableDeclaration","scope":3917,"src":"7954:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3914,"name":"bool","nodeType":"ElementaryTypeName","src":"7954:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7953:18:29"},"scope":4208,"src":"7890:82:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3918,"nodeType":"StructuredDocumentation","src":"7978:152:29","text":" @notice Gets the tokens registered to a pool.\n @param pool Address of the pool\n @return tokens List of tokens in the pool"},"functionSelector":"ca4f2803","id":3927,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokens","nameLocation":"8144:13:29","nodeType":"FunctionDefinition","parameters":{"id":3921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3920,"mutability":"mutable","name":"pool","nameLocation":"8166:4:29","nodeType":"VariableDeclaration","scope":3927,"src":"8158:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3919,"name":"address","nodeType":"ElementaryTypeName","src":"8158:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8157:14:29"},"returnParameters":{"id":3926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3925,"mutability":"mutable","name":"tokens","nameLocation":"8211:6:29","nodeType":"VariableDeclaration","scope":3927,"src":"8195:22:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3923,"nodeType":"UserDefinedTypeName","pathNode":{"id":3922,"name":"IERC20","nameLocations":["8195:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8195:6:29"},"referencedDeclaration":39274,"src":"8195:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":3924,"nodeType":"ArrayTypeName","src":"8195:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"8194:24:29"},"scope":4208,"src":"8135:84:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3928,"nodeType":"StructuredDocumentation","src":"8225:512:29","text":" @notice Gets pool token rates.\n @dev This function performs external calls if tokens are yield-bearing. All returned arrays are in token\n registration order.\n @param pool Address of the pool\n @return decimalScalingFactors Conversion factor used to adjust for token decimals for uniform precision in\n calculations. FP(1) for 18-decimal tokens\n @return tokenRates 18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens"},"functionSelector":"7e361bde","id":3939,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenRates","nameLocation":"8751:17:29","nodeType":"FunctionDefinition","parameters":{"id":3931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"mutability":"mutable","name":"pool","nameLocation":"8786:4:29","nodeType":"VariableDeclaration","scope":3939,"src":"8778:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3929,"name":"address","nodeType":"ElementaryTypeName","src":"8778:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8768:28:29"},"returnParameters":{"id":3938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"decimalScalingFactors","nameLocation":"8837:21:29","nodeType":"VariableDeclaration","scope":3939,"src":"8820:38:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3932,"name":"uint256","nodeType":"ElementaryTypeName","src":"8820:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3933,"nodeType":"ArrayTypeName","src":"8820:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3937,"mutability":"mutable","name":"tokenRates","nameLocation":"8877:10:29","nodeType":"VariableDeclaration","scope":3939,"src":"8860:27:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3935,"name":"uint256","nodeType":"ElementaryTypeName","src":"8860:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3936,"nodeType":"ArrayTypeName","src":"8860:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8819:69:29"},"scope":4208,"src":"8742:147:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3940,"nodeType":"StructuredDocumentation","src":"8895:287:29","text":" @notice Returns comprehensive pool data for the given pool.\n @dev This contains the pool configuration (flags), tokens and token types, rates, scaling factors, and balances.\n @param pool The address of the pool\n @return poolData The `PoolData` result"},"functionSelector":"13d21cdf","id":3948,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolData","nameLocation":"9196:11:29","nodeType":"FunctionDefinition","parameters":{"id":3943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3942,"mutability":"mutable","name":"pool","nameLocation":"9216:4:29","nodeType":"VariableDeclaration","scope":3948,"src":"9208:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3941,"name":"address","nodeType":"ElementaryTypeName","src":"9208:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9207:14:29"},"returnParameters":{"id":3947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3946,"mutability":"mutable","name":"poolData","nameLocation":"9261:8:29","nodeType":"VariableDeclaration","scope":3948,"src":"9245:24:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":3945,"nodeType":"UserDefinedTypeName","pathNode":{"id":3944,"name":"PoolData","nameLocations":["9245:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"9245:8:29"},"referencedDeclaration":4511,"src":"9245:8:29","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"9244:26:29"},"scope":4208,"src":"9187:84:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3949,"nodeType":"StructuredDocumentation","src":"9277:531:29","text":" @notice Gets the raw data for a pool: tokens, raw balances, scaling factors.\n @param pool Address of the pool\n @return tokens The pool tokens, sorted in registration order\n @return tokenInfo Token info structs (type, rate provider, yield flag), sorted in token registration order\n @return balancesRaw Current native decimal balances of the pool tokens, sorted in token registration order\n @return lastBalancesLiveScaled18 Last saved live balances, sorted in token registration order"},"functionSelector":"67e0e076","id":3968,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenInfo","nameLocation":"9822:16:29","nodeType":"FunctionDefinition","parameters":{"id":3952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3951,"mutability":"mutable","name":"pool","nameLocation":"9856:4:29","nodeType":"VariableDeclaration","scope":3968,"src":"9848:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3950,"name":"address","nodeType":"ElementaryTypeName","src":"9848:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9838:28:29"},"returnParameters":{"id":3967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3956,"mutability":"mutable","name":"tokens","nameLocation":"9943:6:29","nodeType":"VariableDeclaration","scope":3968,"src":"9927:22:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3954,"nodeType":"UserDefinedTypeName","pathNode":{"id":3953,"name":"IERC20","nameLocations":["9927:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"9927:6:29"},"referencedDeclaration":39274,"src":"9927:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":3955,"nodeType":"ArrayTypeName","src":"9927:8:29","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3960,"mutability":"mutable","name":"tokenInfo","nameLocation":"9982:9:29","nodeType":"VariableDeclaration","scope":3968,"src":"9963:28:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo[]"},"typeName":{"baseType":{"id":3958,"nodeType":"UserDefinedTypeName","pathNode":{"id":3957,"name":"TokenInfo","nameLocations":["9963:9:29"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"9963:9:29"},"referencedDeclaration":4486,"src":"9963:9:29","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":3959,"nodeType":"ArrayTypeName","src":"9963:11:29","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}},"visibility":"internal"},{"constant":false,"id":3963,"mutability":"mutable","name":"balancesRaw","nameLocation":"10022:11:29","nodeType":"VariableDeclaration","scope":3968,"src":"10005:28:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3961,"name":"uint256","nodeType":"ElementaryTypeName","src":"10005:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3962,"nodeType":"ArrayTypeName","src":"10005:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3966,"mutability":"mutable","name":"lastBalancesLiveScaled18","nameLocation":"10064:24:29","nodeType":"VariableDeclaration","scope":3968,"src":"10047:41:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3964,"name":"uint256","nodeType":"ElementaryTypeName","src":"10047:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3965,"nodeType":"ArrayTypeName","src":"10047:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9913:185:29"},"scope":4208,"src":"9813:286:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3969,"nodeType":"StructuredDocumentation","src":"10105:312:29","text":" @notice Gets current live balances of a given pool (fixed-point, 18 decimals), corresponding to its tokens in\n registration order.\n @param pool Address of the pool\n @return balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates"},"functionSelector":"535cfd8a","id":3977,"implemented":false,"kind":"function","modifiers":[],"name":"getCurrentLiveBalances","nameLocation":"10431:22:29","nodeType":"FunctionDefinition","parameters":{"id":3972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3971,"mutability":"mutable","name":"pool","nameLocation":"10462:4:29","nodeType":"VariableDeclaration","scope":3977,"src":"10454:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3970,"name":"address","nodeType":"ElementaryTypeName","src":"10454:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10453:14:29"},"returnParameters":{"id":3976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3975,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"10508:20:29","nodeType":"VariableDeclaration","scope":3977,"src":"10491:37:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3973,"name":"uint256","nodeType":"ElementaryTypeName","src":"10491:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3974,"nodeType":"ArrayTypeName","src":"10491:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"10490:39:29"},"scope":4208,"src":"10422:108:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3978,"nodeType":"StructuredDocumentation","src":"10536:301:29","text":" @notice Gets the configuration parameters of a pool.\n @dev The `PoolConfig` contains liquidity management and other state flags, fee percentages, the pause window.\n @param pool Address of the pool\n @return poolConfig The pool configuration as a `PoolConfig` struct"},"functionSelector":"f29486a1","id":3986,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolConfig","nameLocation":"10851:13:29","nodeType":"FunctionDefinition","parameters":{"id":3981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3980,"mutability":"mutable","name":"pool","nameLocation":"10873:4:29","nodeType":"VariableDeclaration","scope":3986,"src":"10865:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3979,"name":"address","nodeType":"ElementaryTypeName","src":"10865:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10864:14:29"},"returnParameters":{"id":3985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3984,"mutability":"mutable","name":"poolConfig","nameLocation":"10920:10:29","nodeType":"VariableDeclaration","scope":3986,"src":"10902:28:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig"},"typeName":{"id":3983,"nodeType":"UserDefinedTypeName","pathNode":{"id":3982,"name":"PoolConfig","nameLocations":["10902:10:29"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"10902:10:29"},"referencedDeclaration":4387,"src":"10902:10:29","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_storage_ptr","typeString":"struct PoolConfig"}},"visibility":"internal"}],"src":"10901:30:29"},"scope":4208,"src":"10842:90:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3987,"nodeType":"StructuredDocumentation","src":"10938:283:29","text":" @notice Gets the hooks configuration parameters of a pool.\n @dev The `HooksConfig` contains flags indicating which pool hooks are implemented.\n @param pool Address of the pool\n @return hooksConfig The hooks configuration as a `HooksConfig` struct"},"functionSelector":"ce8630d4","id":3995,"implemented":false,"kind":"function","modifiers":[],"name":"getHooksConfig","nameLocation":"11235:14:29","nodeType":"FunctionDefinition","parameters":{"id":3990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3989,"mutability":"mutable","name":"pool","nameLocation":"11258:4:29","nodeType":"VariableDeclaration","scope":3995,"src":"11250:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3988,"name":"address","nodeType":"ElementaryTypeName","src":"11250:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11249:14:29"},"returnParameters":{"id":3994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3993,"mutability":"mutable","name":"hooksConfig","nameLocation":"11306:11:29","nodeType":"VariableDeclaration","scope":3995,"src":"11287:30:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig"},"typeName":{"id":3992,"nodeType":"UserDefinedTypeName","pathNode":{"id":3991,"name":"HooksConfig","nameLocations":["11287:11:29"],"nodeType":"IdentifierPath","referencedDeclaration":4433,"src":"11287:11:29"},"referencedDeclaration":4433,"src":"11287:11:29","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_storage_ptr","typeString":"struct HooksConfig"}},"visibility":"internal"}],"src":"11286:32:29"},"scope":4208,"src":"11226:93:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3996,"nodeType":"StructuredDocumentation","src":"11325:160:29","text":" @notice The current rate of a pool token (BPT) = invariant / totalSupply.\n @param pool Address of the pool\n @return rate BPT rate"},"functionSelector":"4f037ee7","id":4003,"implemented":false,"kind":"function","modifiers":[],"name":"getBptRate","nameLocation":"11499:10:29","nodeType":"FunctionDefinition","parameters":{"id":3999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3998,"mutability":"mutable","name":"pool","nameLocation":"11518:4:29","nodeType":"VariableDeclaration","scope":4003,"src":"11510:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3997,"name":"address","nodeType":"ElementaryTypeName","src":"11510:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11509:14:29"},"returnParameters":{"id":4002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4001,"mutability":"mutable","name":"rate","nameLocation":"11555:4:29","nodeType":"VariableDeclaration","scope":4003,"src":"11547:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4000,"name":"uint256","nodeType":"ElementaryTypeName","src":"11547:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11546:14:29"},"scope":4208,"src":"11490:71:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4004,"nodeType":"StructuredDocumentation","src":"11792:168:29","text":" @notice Gets the total supply of a given ERC20 token.\n @param token The token address\n @return tokenTotalSupply Total supply of the token"},"functionSelector":"e4dc2aa4","id":4011,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"11974:11:29","nodeType":"FunctionDefinition","parameters":{"id":4007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4006,"mutability":"mutable","name":"token","nameLocation":"11994:5:29","nodeType":"VariableDeclaration","scope":4011,"src":"11986:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4005,"name":"address","nodeType":"ElementaryTypeName","src":"11986:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11985:15:29"},"returnParameters":{"id":4010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4009,"mutability":"mutable","name":"tokenTotalSupply","nameLocation":"12032:16:29","nodeType":"VariableDeclaration","scope":4011,"src":"12024:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4008,"name":"uint256","nodeType":"ElementaryTypeName","src":"12024:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12023:26:29"},"scope":4208,"src":"11965:85:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4012,"nodeType":"StructuredDocumentation","src":"12056:225:29","text":" @notice Gets the balance of an account for a given ERC20 token.\n @param token Address of the token\n @param account Address of the account\n @return tokenBalance Token balance of the account"},"functionSelector":"f7888aec","id":4021,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"12295:9:29","nodeType":"FunctionDefinition","parameters":{"id":4017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4014,"mutability":"mutable","name":"token","nameLocation":"12313:5:29","nodeType":"VariableDeclaration","scope":4021,"src":"12305:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4013,"name":"address","nodeType":"ElementaryTypeName","src":"12305:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4016,"mutability":"mutable","name":"account","nameLocation":"12328:7:29","nodeType":"VariableDeclaration","scope":4021,"src":"12320:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4015,"name":"address","nodeType":"ElementaryTypeName","src":"12320:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12304:32:29"},"returnParameters":{"id":4020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4019,"mutability":"mutable","name":"tokenBalance","nameLocation":"12368:12:29","nodeType":"VariableDeclaration","scope":4021,"src":"12360:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4018,"name":"uint256","nodeType":"ElementaryTypeName","src":"12360:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12359:22:29"},"scope":4208,"src":"12286:96:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4022,"nodeType":"StructuredDocumentation","src":"12388:299:29","text":" @notice Gets the allowance of a spender for a given ERC20 token and owner.\n @param token Address of the token\n @param owner Address of the owner\n @param spender Address of the spender\n @return tokenAllowance Amount of tokens the spender is allowed to spend"},"functionSelector":"927da105","id":4033,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"12701:9:29","nodeType":"FunctionDefinition","parameters":{"id":4029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4024,"mutability":"mutable","name":"token","nameLocation":"12719:5:29","nodeType":"VariableDeclaration","scope":4033,"src":"12711:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4023,"name":"address","nodeType":"ElementaryTypeName","src":"12711:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4026,"mutability":"mutable","name":"owner","nameLocation":"12734:5:29","nodeType":"VariableDeclaration","scope":4033,"src":"12726:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4025,"name":"address","nodeType":"ElementaryTypeName","src":"12726:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4028,"mutability":"mutable","name":"spender","nameLocation":"12749:7:29","nodeType":"VariableDeclaration","scope":4033,"src":"12741:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4027,"name":"address","nodeType":"ElementaryTypeName","src":"12741:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12710:47:29"},"returnParameters":{"id":4032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4031,"mutability":"mutable","name":"tokenAllowance","nameLocation":"12789:14:29","nodeType":"VariableDeclaration","scope":4033,"src":"12781:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4030,"name":"uint256","nodeType":"ElementaryTypeName","src":"12781:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12780:24:29"},"scope":4208,"src":"12692:113:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4034,"nodeType":"StructuredDocumentation","src":"12811:475:29","text":" @notice Approves a spender to spend pool tokens on behalf of sender.\n @dev Notice that the pool token address is not included in the params. This function is exclusively called by\n the pool contract, so msg.sender is used as the token address.\n @param owner Address of the owner\n @param spender Address of the spender\n @param amount Amount of tokens to approve\n @return success True if successful, false otherwise"},"functionSelector":"e1f21c67","id":4045,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"13300:7:29","nodeType":"FunctionDefinition","parameters":{"id":4041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4036,"mutability":"mutable","name":"owner","nameLocation":"13316:5:29","nodeType":"VariableDeclaration","scope":4045,"src":"13308:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4035,"name":"address","nodeType":"ElementaryTypeName","src":"13308:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4038,"mutability":"mutable","name":"spender","nameLocation":"13331:7:29","nodeType":"VariableDeclaration","scope":4045,"src":"13323:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4037,"name":"address","nodeType":"ElementaryTypeName","src":"13323:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4040,"mutability":"mutable","name":"amount","nameLocation":"13348:6:29","nodeType":"VariableDeclaration","scope":4045,"src":"13340:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4039,"name":"uint256","nodeType":"ElementaryTypeName","src":"13340:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13307:48:29"},"returnParameters":{"id":4044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4043,"mutability":"mutable","name":"success","nameLocation":"13379:7:29","nodeType":"VariableDeclaration","scope":4045,"src":"13374:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4042,"name":"bool","nodeType":"ElementaryTypeName","src":"13374:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13373:14:29"},"scope":4208,"src":"13291:97:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4046,"nodeType":"StructuredDocumentation","src":"13615:251:29","text":" @notice Indicates whether a pool is paused.\n @dev If a pool is paused, all non-Recovery Mode state-changing operations will revert.\n @param pool The pool to be checked\n @return poolPaused True if the pool is paused"},"functionSelector":"6c9bc732","id":4053,"implemented":false,"kind":"function","modifiers":[],"name":"isPoolPaused","nameLocation":"13880:12:29","nodeType":"FunctionDefinition","parameters":{"id":4049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4048,"mutability":"mutable","name":"pool","nameLocation":"13901:4:29","nodeType":"VariableDeclaration","scope":4053,"src":"13893:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4047,"name":"address","nodeType":"ElementaryTypeName","src":"13893:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13892:14:29"},"returnParameters":{"id":4052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4051,"mutability":"mutable","name":"poolPaused","nameLocation":"13935:10:29","nodeType":"VariableDeclaration","scope":4053,"src":"13930:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4050,"name":"bool","nodeType":"ElementaryTypeName","src":"13930:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13929:17:29"},"scope":4208,"src":"13871:76:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4054,"nodeType":"StructuredDocumentation","src":"13953:648:29","text":" @notice Returns the paused status, and end times of the Pool's pause window and buffer period.\n @dev Note that even when set to a paused state, the pool will automatically unpause at the end of\n the buffer period. Balancer timestamps are 32 bits.\n @param pool The pool whose data is requested\n @return poolPaused True if the Pool is paused\n @return poolPauseWindowEndTime The timestamp of the end of the Pool's pause window\n @return poolBufferPeriodEndTime The timestamp after which the Pool unpauses itself (if paused)\n @return pauseManager The pause manager, or the zero address"},"functionSelector":"15e32046","id":4067,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolPausedState","nameLocation":"14615:18:29","nodeType":"FunctionDefinition","parameters":{"id":4057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4056,"mutability":"mutable","name":"pool","nameLocation":"14651:4:29","nodeType":"VariableDeclaration","scope":4067,"src":"14643:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4055,"name":"address","nodeType":"ElementaryTypeName","src":"14643:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14633:28:29"},"returnParameters":{"id":4066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4059,"mutability":"mutable","name":"poolPaused","nameLocation":"14714:10:29","nodeType":"VariableDeclaration","scope":4067,"src":"14709:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4058,"name":"bool","nodeType":"ElementaryTypeName","src":"14709:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4061,"mutability":"mutable","name":"poolPauseWindowEndTime","nameLocation":"14733:22:29","nodeType":"VariableDeclaration","scope":4067,"src":"14726:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4060,"name":"uint32","nodeType":"ElementaryTypeName","src":"14726:6:29","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4063,"mutability":"mutable","name":"poolBufferPeriodEndTime","nameLocation":"14764:23:29","nodeType":"VariableDeclaration","scope":4067,"src":"14757:30:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4062,"name":"uint32","nodeType":"ElementaryTypeName","src":"14757:6:29","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4065,"mutability":"mutable","name":"pauseManager","nameLocation":"14797:12:29","nodeType":"VariableDeclaration","scope":4067,"src":"14789:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4064,"name":"address","nodeType":"ElementaryTypeName","src":"14789:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14708:102:29"},"scope":4208,"src":"14606:205:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4068,"nodeType":"StructuredDocumentation","src":"15039:332:29","text":" @notice Checks if the wrapped token has an initialized buffer in the Vault.\n @dev An initialized buffer should have an asset registered in the Vault.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @return isBufferInitialized True if the ERC4626 buffer is initialized"},"functionSelector":"6844846b","id":4076,"implemented":false,"kind":"function","modifiers":[],"name":"isERC4626BufferInitialized","nameLocation":"15385:26:29","nodeType":"FunctionDefinition","parameters":{"id":4072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4071,"mutability":"mutable","name":"wrappedToken","nameLocation":"15421:12:29","nodeType":"VariableDeclaration","scope":4076,"src":"15412:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":4070,"nodeType":"UserDefinedTypeName","pathNode":{"id":4069,"name":"IERC4626","nameLocations":["15412:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"15412:8:29"},"referencedDeclaration":38998,"src":"15412:8:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"15411:23:29"},"returnParameters":{"id":4075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4074,"mutability":"mutable","name":"isBufferInitialized","nameLocation":"15463:19:29","nodeType":"VariableDeclaration","scope":4076,"src":"15458:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4073,"name":"bool","nodeType":"ElementaryTypeName","src":"15458:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15457:26:29"},"scope":4208,"src":"15376:108:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4077,"nodeType":"StructuredDocumentation","src":"15490:477:29","text":" @notice Gets the registered asset for a given buffer.\n @dev To avoid malicious wrappers (e.g., that might potentially change their asset after deployment), routers\n should never call `wrapper.asset()` directly, at least without checking it against the asset registered with\n the Vault on initialization.\n @param wrappedToken The wrapped token specifying the buffer\n @return asset The underlying asset of the wrapped token"},"functionSelector":"4afbaf5a","id":4085,"implemented":false,"kind":"function","modifiers":[],"name":"getERC4626BufferAsset","nameLocation":"15981:21:29","nodeType":"FunctionDefinition","parameters":{"id":4081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4080,"mutability":"mutable","name":"wrappedToken","nameLocation":"16012:12:29","nodeType":"VariableDeclaration","scope":4085,"src":"16003:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":4079,"nodeType":"UserDefinedTypeName","pathNode":{"id":4078,"name":"IERC4626","nameLocations":["16003:8:29"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"16003:8:29"},"referencedDeclaration":38998,"src":"16003:8:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"16002:23:29"},"returnParameters":{"id":4084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4083,"mutability":"mutable","name":"asset","nameLocation":"16057:5:29","nodeType":"VariableDeclaration","scope":4085,"src":"16049:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4082,"name":"address","nodeType":"ElementaryTypeName","src":"16049:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16048:15:29"},"scope":4208,"src":"15972:92:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4086,"nodeType":"StructuredDocumentation","src":"16288:379:29","text":" @notice Returns the accumulated swap fees (including aggregate fees) in `token` collected by the pool.\n @param pool The address of the pool for which aggregate fees have been collected\n @param token The address of the token in which fees have been accumulated\n @return swapFeeAmount The total amount of fees accumulated in the specified token"},"functionSelector":"85e0b999","id":4096,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregateSwapFeeAmount","nameLocation":"16681:25:29","nodeType":"FunctionDefinition","parameters":{"id":4092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4088,"mutability":"mutable","name":"pool","nameLocation":"16715:4:29","nodeType":"VariableDeclaration","scope":4096,"src":"16707:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4087,"name":"address","nodeType":"ElementaryTypeName","src":"16707:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4091,"mutability":"mutable","name":"token","nameLocation":"16728:5:29","nodeType":"VariableDeclaration","scope":4096,"src":"16721:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4090,"nodeType":"UserDefinedTypeName","pathNode":{"id":4089,"name":"IERC20","nameLocations":["16721:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"16721:6:29"},"referencedDeclaration":39274,"src":"16721:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"16706:28:29"},"returnParameters":{"id":4095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4094,"mutability":"mutable","name":"swapFeeAmount","nameLocation":"16766:13:29","nodeType":"VariableDeclaration","scope":4096,"src":"16758:21:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4093,"name":"uint256","nodeType":"ElementaryTypeName","src":"16758:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16757:23:29"},"scope":4208,"src":"16672:109:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4097,"nodeType":"StructuredDocumentation","src":"16787:381:29","text":" @notice Returns the accumulated yield fees (including aggregate fees) in `token` collected by the pool.\n @param pool The address of the pool for which aggregate fees have been collected\n @param token The address of the token in which fees have been accumulated\n @return yieldFeeAmount The total amount of fees accumulated in the specified token"},"functionSelector":"00fdfa13","id":4107,"implemented":false,"kind":"function","modifiers":[],"name":"getAggregateYieldFeeAmount","nameLocation":"17182:26:29","nodeType":"FunctionDefinition","parameters":{"id":4103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4099,"mutability":"mutable","name":"pool","nameLocation":"17217:4:29","nodeType":"VariableDeclaration","scope":4107,"src":"17209:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4098,"name":"address","nodeType":"ElementaryTypeName","src":"17209:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4102,"mutability":"mutable","name":"token","nameLocation":"17230:5:29","nodeType":"VariableDeclaration","scope":4107,"src":"17223:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4101,"nodeType":"UserDefinedTypeName","pathNode":{"id":4100,"name":"IERC20","nameLocations":["17223:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"17223:6:29"},"referencedDeclaration":39274,"src":"17223:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"17208:28:29"},"returnParameters":{"id":4106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4105,"mutability":"mutable","name":"yieldFeeAmount","nameLocation":"17268:14:29","nodeType":"VariableDeclaration","scope":4107,"src":"17260:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4104,"name":"uint256","nodeType":"ElementaryTypeName","src":"17260:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17259:24:29"},"scope":4208,"src":"17173:111:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4108,"nodeType":"StructuredDocumentation","src":"17290:271:29","text":" @notice Fetches the static swap fee percentage for a given pool.\n @param pool The address of the pool whose static swap fee percentage is being queried\n @return swapFeePercentage The current static swap fee percentage for the specified pool"},"functionSelector":"b45090f9","id":4115,"implemented":false,"kind":"function","modifiers":[],"name":"getStaticSwapFeePercentage","nameLocation":"17575:26:29","nodeType":"FunctionDefinition","parameters":{"id":4111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4110,"mutability":"mutable","name":"pool","nameLocation":"17610:4:29","nodeType":"VariableDeclaration","scope":4115,"src":"17602:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4109,"name":"address","nodeType":"ElementaryTypeName","src":"17602:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17601:14:29"},"returnParameters":{"id":4114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4113,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"17647:17:29","nodeType":"VariableDeclaration","scope":4115,"src":"17639:25:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4112,"name":"uint256","nodeType":"ElementaryTypeName","src":"17639:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17638:27:29"},"scope":4208,"src":"17566:100:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4116,"nodeType":"StructuredDocumentation","src":"17672:286:29","text":" @notice Fetches the role accounts for a given pool (pause manager, swap manager, pool creator)\n @param pool The address of the pool whose roles are being queried\n @return roleAccounts A struct containing the role accounts for the pool (or 0 if unassigned)"},"functionSelector":"e9ddeb26","id":4124,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolRoleAccounts","nameLocation":"17972:19:29","nodeType":"FunctionDefinition","parameters":{"id":4119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4118,"mutability":"mutable","name":"pool","nameLocation":"18000:4:29","nodeType":"VariableDeclaration","scope":4124,"src":"17992:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4117,"name":"address","nodeType":"ElementaryTypeName","src":"17992:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17991:14:29"},"returnParameters":{"id":4123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4122,"mutability":"mutable","name":"roleAccounts","nameLocation":"18053:12:29","nodeType":"VariableDeclaration","scope":4124,"src":"18029:36:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":4121,"nodeType":"UserDefinedTypeName","pathNode":{"id":4120,"name":"PoolRoleAccounts","nameLocations":["18029:16:29"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"18029:16:29"},"referencedDeclaration":4459,"src":"18029:16:29","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"src":"18028:38:29"},"scope":4208,"src":"17963:104:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4125,"nodeType":"StructuredDocumentation","src":"18073:363:29","text":" @notice Query the current dynamic swap fee percentage of a pool, given a set of swap parameters.\n @dev Reverts if the hook doesn't return the success flag set to `true`.\n @param pool The pool\n @param swapParams The swap parameters used to compute the fee\n @return dynamicSwapFeePercentage The dynamic swap fee percentage"},"functionSelector":"4d472bdd","id":4135,"implemented":false,"kind":"function","modifiers":[],"name":"computeDynamicSwapFeePercentage","nameLocation":"18450:31:29","nodeType":"FunctionDefinition","parameters":{"id":4131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4127,"mutability":"mutable","name":"pool","nameLocation":"18499:4:29","nodeType":"VariableDeclaration","scope":4135,"src":"18491:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4126,"name":"address","nodeType":"ElementaryTypeName","src":"18491:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4130,"mutability":"mutable","name":"swapParams","nameLocation":"18535:10:29","nodeType":"VariableDeclaration","scope":4135,"src":"18513:32:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":4129,"nodeType":"UserDefinedTypeName","pathNode":{"id":4128,"name":"PoolSwapParams","nameLocations":["18513:14:29"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"18513:14:29"},"referencedDeclaration":4554,"src":"18513:14:29","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"18481:70:29"},"returnParameters":{"id":4134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4133,"mutability":"mutable","name":"dynamicSwapFeePercentage","nameLocation":"18583:24:29","nodeType":"VariableDeclaration","scope":4135,"src":"18575:32:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4132,"name":"uint256","nodeType":"ElementaryTypeName","src":"18575:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18574:34:29"},"scope":4208,"src":"18441:168:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4136,"nodeType":"StructuredDocumentation","src":"18615:145:29","text":" @notice Returns the Protocol Fee Controller address.\n @return protocolFeeController Address of the ProtocolFeeController"},"functionSelector":"85f2dbd4","id":4142,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeeController","nameLocation":"18774:24:29","nodeType":"FunctionDefinition","parameters":{"id":4137,"nodeType":"ParameterList","parameters":[],"src":"18798:2:29"},"returnParameters":{"id":4141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4140,"mutability":"mutable","name":"protocolFeeController","nameLocation":"18847:21:29","nodeType":"VariableDeclaration","scope":4142,"src":"18824:44:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":4139,"nodeType":"UserDefinedTypeName","pathNode":{"id":4138,"name":"IProtocolFeeController","nameLocations":["18824:22:29"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"18824:22:29"},"referencedDeclaration":2230,"src":"18824:22:29","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"}],"src":"18823:46:29"},"scope":4208,"src":"18765:105:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4143,"nodeType":"StructuredDocumentation","src":"19098:296:29","text":" @notice Checks whether a pool is in Recovery Mode.\n @dev Recovery Mode enables a safe proportional withdrawal path, with no external calls.\n @param pool Address of the pool to check\n @return inRecoveryMode True if the pool is in Recovery Mode, false otherwise"},"functionSelector":"be7d628a","id":4150,"implemented":false,"kind":"function","modifiers":[],"name":"isPoolInRecoveryMode","nameLocation":"19408:20:29","nodeType":"FunctionDefinition","parameters":{"id":4146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4145,"mutability":"mutable","name":"pool","nameLocation":"19437:4:29","nodeType":"VariableDeclaration","scope":4150,"src":"19429:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4144,"name":"address","nodeType":"ElementaryTypeName","src":"19429:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19428:14:29"},"returnParameters":{"id":4149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4148,"mutability":"mutable","name":"inRecoveryMode","nameLocation":"19471:14:29","nodeType":"VariableDeclaration","scope":4150,"src":"19466:19:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4147,"name":"bool","nodeType":"ElementaryTypeName","src":"19466:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19465:21:29"},"scope":4208,"src":"19399:88:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4151,"nodeType":"StructuredDocumentation","src":"19493:679:29","text":" @notice Remove liquidity from a pool specifying exact pool tokens in, with proportional token amounts out.\n The request is implemented by the Vault without any interaction with the pool, ensuring that\n it works the same for all pools, and cannot be disabled by a new pool type.\n @param pool Address of the pool\n @param from Address of user to burn pool tokens from\n @param exactBptAmountIn Input pool token amount\n @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n @return amountsOut Actual calculated amounts of output tokens, sorted in token registration order"},"functionSelector":"a07d6040","id":4166,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityRecovery","nameLocation":"20186:23:29","nodeType":"FunctionDefinition","parameters":{"id":4161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4153,"mutability":"mutable","name":"pool","nameLocation":"20227:4:29","nodeType":"VariableDeclaration","scope":4166,"src":"20219:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4152,"name":"address","nodeType":"ElementaryTypeName","src":"20219:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4155,"mutability":"mutable","name":"from","nameLocation":"20249:4:29","nodeType":"VariableDeclaration","scope":4166,"src":"20241:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4154,"name":"address","nodeType":"ElementaryTypeName","src":"20241:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4157,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"20271:16:29","nodeType":"VariableDeclaration","scope":4166,"src":"20263:24:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4156,"name":"uint256","nodeType":"ElementaryTypeName","src":"20263:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4160,"mutability":"mutable","name":"minAmountsOut","nameLocation":"20314:13:29","nodeType":"VariableDeclaration","scope":4166,"src":"20297:30:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4158,"name":"uint256","nodeType":"ElementaryTypeName","src":"20297:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4159,"nodeType":"ArrayTypeName","src":"20297:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"20209:124:29"},"returnParameters":{"id":4165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4164,"mutability":"mutable","name":"amountsOut","nameLocation":"20369:10:29","nodeType":"VariableDeclaration","scope":4166,"src":"20352:27:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4162,"name":"uint256","nodeType":"ElementaryTypeName","src":"20352:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4163,"nodeType":"ArrayTypeName","src":"20352:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"20351:29:29"},"scope":4208,"src":"20177:204:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4167,"nodeType":"StructuredDocumentation","src":"20602:699:29","text":" @notice Performs a callback on msg.sender with arguments provided in `data`.\n @dev Used to query a set of operations on the Vault. Only off-chain eth_call are allowed,\n anything else will revert.\n Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier.\n Allows the external calling of a function via the Vault contract to\n access Vault's functions guarded by `onlyWhenUnlocked`.\n `transient` modifier ensuring balances changes within the Vault are settled.\n @param data Contains function signature and args to be passed to the msg.sender\n @return result Resulting data from the call"},"functionSelector":"edfa3568","id":4174,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nameLocation":"21315:5:29","nodeType":"FunctionDefinition","parameters":{"id":4170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4169,"mutability":"mutable","name":"data","nameLocation":"21336:4:29","nodeType":"VariableDeclaration","scope":4174,"src":"21321:19:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4168,"name":"bytes","nodeType":"ElementaryTypeName","src":"21321:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21320:21:29"},"returnParameters":{"id":4173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4172,"mutability":"mutable","name":"result","nameLocation":"21373:6:29","nodeType":"VariableDeclaration","scope":4174,"src":"21360:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4171,"name":"bytes","nodeType":"ElementaryTypeName","src":"21360:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21359:21:29"},"scope":4208,"src":"21306:75:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4175,"nodeType":"StructuredDocumentation","src":"21387:731:29","text":" @notice Performs a callback on msg.sender with arguments provided in `data`.\n @dev Used to query a set of operations on the Vault. Only off-chain eth_call are allowed,\n anything else will revert.\n Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier.\n Allows the external calling of a function via the Vault contract to\n access Vault's functions guarded by `onlyWhenUnlocked`.\n `transient` modifier ensuring balances changes within the Vault are settled.\n This call always reverts, returning the result in the revert reason.\n @param data Contains function signature and args to be passed to the msg.sender"},"functionSelector":"757d64b3","id":4180,"implemented":false,"kind":"function","modifiers":[],"name":"quoteAndRevert","nameLocation":"22132:14:29","nodeType":"FunctionDefinition","parameters":{"id":4178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4177,"mutability":"mutable","name":"data","nameLocation":"22162:4:29","nodeType":"VariableDeclaration","scope":4180,"src":"22147:19:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4176,"name":"bytes","nodeType":"ElementaryTypeName","src":"22147:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22146:21:29"},"returnParameters":{"id":4179,"nodeType":"ParameterList","parameters":[],"src":"22176:0:29"},"scope":4208,"src":"22123:54:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4181,"nodeType":"StructuredDocumentation","src":"22183:239:29","text":" @notice Returns true if queries are disabled on the Vault.\n @dev If true, queries might either be disabled temporarily or permanently.\n @return queryDisabled True if query functionality is reversibly disabled"},"functionSelector":"b4aef0ab","id":4186,"implemented":false,"kind":"function","modifiers":[],"name":"isQueryDisabled","nameLocation":"22436:15:29","nodeType":"FunctionDefinition","parameters":{"id":4182,"nodeType":"ParameterList","parameters":[],"src":"22451:2:29"},"returnParameters":{"id":4185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4184,"mutability":"mutable","name":"queryDisabled","nameLocation":"22482:13:29","nodeType":"VariableDeclaration","scope":4186,"src":"22477:18:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4183,"name":"bool","nodeType":"ElementaryTypeName","src":"22477:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22476:20:29"},"scope":4208,"src":"22427:70:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4187,"nodeType":"StructuredDocumentation","src":"22503:302:29","text":" @notice Returns true if queries are disabled permanently; false if they are enabled.\n @dev This is a one-way switch. Once queries are disabled permanently, they can never be re-enabled.\n @return queryDisabledPermanently True if query functionality is permanently disabled"},"functionSelector":"13ef8a5d","id":4192,"implemented":false,"kind":"function","modifiers":[],"name":"isQueryDisabledPermanently","nameLocation":"22819:26:29","nodeType":"FunctionDefinition","parameters":{"id":4188,"nodeType":"ParameterList","parameters":[],"src":"22845:2:29"},"returnParameters":{"id":4191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4190,"mutability":"mutable","name":"queryDisabledPermanently","nameLocation":"22876:24:29","nodeType":"VariableDeclaration","scope":4192,"src":"22871:29:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4189,"name":"bool","nodeType":"ElementaryTypeName","src":"22871:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22870:31:29"},"scope":4208,"src":"22810:92:29","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4193,"nodeType":"StructuredDocumentation","src":"22908:162:29","text":" @notice Pools can use this event to emit event data from the Vault.\n @param eventKey Event key\n @param eventData Encoded event data"},"functionSelector":"c8088247","id":4200,"implemented":false,"kind":"function","modifiers":[],"name":"emitAuxiliaryEvent","nameLocation":"23084:18:29","nodeType":"FunctionDefinition","parameters":{"id":4198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4195,"mutability":"mutable","name":"eventKey","nameLocation":"23111:8:29","nodeType":"VariableDeclaration","scope":4200,"src":"23103:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23103:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4197,"mutability":"mutable","name":"eventData","nameLocation":"23136:9:29","nodeType":"VariableDeclaration","scope":4200,"src":"23121:24:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4196,"name":"bytes","nodeType":"ElementaryTypeName","src":"23121:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"23102:44:29"},"returnParameters":{"id":4199,"nodeType":"ParameterList","parameters":[],"src":"23155:0:29"},"scope":4208,"src":"23075:81:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4201,"nodeType":"StructuredDocumentation","src":"23380:284:29","text":" @notice Returns the Authorizer address.\n @dev The authorizer holds the permissions granted by governance. It is set on Vault deployment,\n and can be changed through a permissioned call.\n @return authorizer Address of the authorizer contract"},"functionSelector":"aaabadc5","id":4207,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nameLocation":"23678:13:29","nodeType":"FunctionDefinition","parameters":{"id":4202,"nodeType":"ParameterList","parameters":[],"src":"23691:2:29"},"returnParameters":{"id":4206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4205,"mutability":"mutable","name":"authorizer","nameLocation":"23729:10:29","nodeType":"VariableDeclaration","scope":4207,"src":"23717:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":4204,"nodeType":"UserDefinedTypeName","pathNode":{"id":4203,"name":"IAuthorizer","nameLocations":["23717:11:29"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"23717:11:29"},"referencedDeclaration":1316,"src":"23717:11:29","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"23716:24:29"},"scope":4208,"src":"23669:72:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4209,"src":"767:22976:29","usedErrors":[],"usedEvents":[]}],"src":"46:23698:29"},"id":29},"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC4626":[38998],"IRateProvider":[150],"IVaultMain":[4344],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":4345,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4210,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:30"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":4212,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4345,"sourceUnit":39275,"src":"72:72:30","symbolAliases":[{"foreign":{"id":4211,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"./VaultTypes.sol","id":4213,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4345,"sourceUnit":4654,"src":"146:26:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVaultMain","contractDependencies":[],"contractKind":"interface","documentation":{"id":4214,"nodeType":"StructuredDocumentation","src":"174:232:30","text":" @notice Interface for functions defined on the main Vault contract.\n @dev These are generally \"critical path\" functions (swap, add/remove liquidity) that are in the main contract\n for technical or performance reasons."},"fullyImplemented":false,"id":4344,"linearizedBaseContracts":[4344],"name":"IVaultMain","nameLocation":"417:10:30","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4215,"nodeType":"StructuredDocumentation","src":"656:431:30","text":" @notice Creates a context for a sequence of operations (i.e., \"unlocks\" the Vault).\n @dev Performs a callback on msg.sender with arguments provided in `data`. The Callback is `transient`,\n meaning all balances for the caller have to be settled at the end.\n @param data Contains function signature and args to be passed to the msg.sender\n @return result Resulting data from the call"},"functionSelector":"48c89491","id":4222,"implemented":false,"kind":"function","modifiers":[],"name":"unlock","nameLocation":"1101:6:30","nodeType":"FunctionDefinition","parameters":{"id":4218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4217,"mutability":"mutable","name":"data","nameLocation":"1123:4:30","nodeType":"VariableDeclaration","scope":4222,"src":"1108:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4216,"name":"bytes","nodeType":"ElementaryTypeName","src":"1108:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1107:21:30"},"returnParameters":{"id":4221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4220,"mutability":"mutable","name":"result","nameLocation":"1160:6:30","nodeType":"VariableDeclaration","scope":4222,"src":"1147:19:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4219,"name":"bytes","nodeType":"ElementaryTypeName","src":"1147:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1146:21:30"},"scope":4344,"src":"1092:76:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4223,"nodeType":"StructuredDocumentation","src":"1174:1291:30","text":" @notice Settles deltas for a token; must be successful for the current lock to be released.\n @dev Protects the caller against leftover dust in the Vault for the token being settled. The caller\n should know in advance how many tokens were paid to the Vault, so it can provide it as a hint to discard any\n excess in the Vault balance.\n If the given hint is equal to or higher than the difference in reserves, the difference in reserves is given as\n credit to the caller. If it's higher, the caller sent fewer tokens than expected, so settlement would fail.\n If the given hint is lower than the difference in reserves, the hint is given as credit to the caller.\n In this case, the excess would be absorbed by the Vault (and reflected correctly in the reserves), but would\n not affect settlement.\n The credit supplied by the Vault can be calculated as `min(reserveDifference, amountHint)`, where the reserve\n difference equals current balance of the token minus existing reserves of the token when the function is called.\n @param token Address of the token\n @param amountHint Amount paid as reported by the caller\n @return credit Credit received in return of the payment"},"functionSelector":"15afd409","id":4233,"implemented":false,"kind":"function","modifiers":[],"name":"settle","nameLocation":"2479:6:30","nodeType":"FunctionDefinition","parameters":{"id":4229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4226,"mutability":"mutable","name":"token","nameLocation":"2493:5:30","nodeType":"VariableDeclaration","scope":4233,"src":"2486:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4225,"nodeType":"UserDefinedTypeName","pathNode":{"id":4224,"name":"IERC20","nameLocations":["2486:6:30"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2486:6:30"},"referencedDeclaration":39274,"src":"2486:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4228,"mutability":"mutable","name":"amountHint","nameLocation":"2508:10:30","nodeType":"VariableDeclaration","scope":4233,"src":"2500:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4227,"name":"uint256","nodeType":"ElementaryTypeName","src":"2500:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2485:34:30"},"returnParameters":{"id":4232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4231,"mutability":"mutable","name":"credit","nameLocation":"2546:6:30","nodeType":"VariableDeclaration","scope":4233,"src":"2538:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4230,"name":"uint256","nodeType":"ElementaryTypeName","src":"2538:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2537:16:30"},"scope":4344,"src":"2470:84:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4234,"nodeType":"StructuredDocumentation","src":"2560:315:30","text":" @notice Sends tokens to a recipient.\n @dev There is no inverse operation for this function. Transfer funds to the Vault and call `settle` to cancel\n debts.\n @param token Address of the token\n @param to Recipient address\n @param amount Amount of tokens to send"},"functionSelector":"ae639329","id":4244,"implemented":false,"kind":"function","modifiers":[],"name":"sendTo","nameLocation":"2889:6:30","nodeType":"FunctionDefinition","parameters":{"id":4242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4237,"mutability":"mutable","name":"token","nameLocation":"2903:5:30","nodeType":"VariableDeclaration","scope":4244,"src":"2896:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4236,"nodeType":"UserDefinedTypeName","pathNode":{"id":4235,"name":"IERC20","nameLocations":["2896:6:30"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2896:6:30"},"referencedDeclaration":39274,"src":"2896:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4239,"mutability":"mutable","name":"to","nameLocation":"2918:2:30","nodeType":"VariableDeclaration","scope":4244,"src":"2910:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4238,"name":"address","nodeType":"ElementaryTypeName","src":"2910:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4241,"mutability":"mutable","name":"amount","nameLocation":"2930:6:30","nodeType":"VariableDeclaration","scope":4244,"src":"2922:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4240,"name":"uint256","nodeType":"ElementaryTypeName","src":"2922:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2895:42:30"},"returnParameters":{"id":4243,"nodeType":"ParameterList","parameters":[],"src":"2946:0:30"},"scope":4344,"src":"2880:67:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4245,"nodeType":"StructuredDocumentation","src":"3161:412:30","text":" @notice Swaps tokens based on provided parameters.\n @dev All parameters are given in raw token decimal encoding.\n @param vaultSwapParams Parameters for the swap (see above for struct definition)\n @return amountCalculatedRaw Calculated swap amount\n @return amountInRaw Amount of input tokens for the swap\n @return amountOutRaw Amount of output tokens from the swap"},"functionSelector":"2bfb780c","id":4257,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"3587:4:30","nodeType":"FunctionDefinition","parameters":{"id":4249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4248,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"3624:15:30","nodeType":"VariableDeclaration","scope":4257,"src":"3601:38:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":4247,"nodeType":"UserDefinedTypeName","pathNode":{"id":4246,"name":"VaultSwapParams","nameLocations":["3601:15:30"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"3601:15:30"},"referencedDeclaration":4536,"src":"3601:15:30","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"}],"src":"3591:54:30"},"returnParameters":{"id":4256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4251,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"3672:19:30","nodeType":"VariableDeclaration","scope":4257,"src":"3664:27:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4250,"name":"uint256","nodeType":"ElementaryTypeName","src":"3664:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4253,"mutability":"mutable","name":"amountInRaw","nameLocation":"3701:11:30","nodeType":"VariableDeclaration","scope":4257,"src":"3693:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4252,"name":"uint256","nodeType":"ElementaryTypeName","src":"3693:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4255,"mutability":"mutable","name":"amountOutRaw","nameLocation":"3722:12:30","nodeType":"VariableDeclaration","scope":4257,"src":"3714:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4254,"name":"uint256","nodeType":"ElementaryTypeName","src":"3714:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3663:72:30"},"scope":4344,"src":"3578:158:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4258,"nodeType":"StructuredDocumentation","src":"3954:523:30","text":" @notice Adds liquidity to a pool.\n @dev Caution should be exercised when adding liquidity because the Vault has the capability\n to transfer tokens from any user, given that it holds all allowances.\n @param params Parameters for the add liquidity (see above for struct definition)\n @return amountsIn Actual amounts of input tokens\n @return bptAmountOut Output pool token amount\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"4af29ec4","id":4271,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidity","nameLocation":"4491:12:30","nodeType":"FunctionDefinition","parameters":{"id":4262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4261,"mutability":"mutable","name":"params","nameLocation":"4539:6:30","nodeType":"VariableDeclaration","scope":4271,"src":"4513:32:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":4260,"nodeType":"UserDefinedTypeName","pathNode":{"id":4259,"name":"AddLiquidityParams","nameLocations":["4513:18:30"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"4513:18:30"},"referencedDeclaration":4605,"src":"4513:18:30","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"}],"src":"4503:48:30"},"returnParameters":{"id":4270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4265,"mutability":"mutable","name":"amountsIn","nameLocation":"4587:9:30","nodeType":"VariableDeclaration","scope":4271,"src":"4570:26:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4263,"name":"uint256","nodeType":"ElementaryTypeName","src":"4570:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4264,"nodeType":"ArrayTypeName","src":"4570:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4267,"mutability":"mutable","name":"bptAmountOut","nameLocation":"4606:12:30","nodeType":"VariableDeclaration","scope":4271,"src":"4598:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4266,"name":"uint256","nodeType":"ElementaryTypeName","src":"4598:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4269,"mutability":"mutable","name":"returnData","nameLocation":"4633:10:30","nodeType":"VariableDeclaration","scope":4271,"src":"4620:23:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4268,"name":"bytes","nodeType":"ElementaryTypeName","src":"4620:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4569:75:30"},"scope":4344,"src":"4482:163:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4272,"nodeType":"StructuredDocumentation","src":"4864:644:30","text":" @notice Removes liquidity from a pool.\n @dev Trusted routers can burn pool tokens belonging to any user and require no prior approval from the user.\n Untrusted routers require prior approval from the user. This is the only function allowed to call\n _queryModeBalanceIncrease (and only in a query context).\n @param params Parameters for the remove liquidity (see above for struct definition)\n @return bptAmountIn Actual amount of BPT burned\n @return amountsOut Actual amounts of output tokens\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"21457897","id":4285,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidity","nameLocation":"5522:15:30","nodeType":"FunctionDefinition","parameters":{"id":4276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4275,"mutability":"mutable","name":"params","nameLocation":"5576:6:30","nodeType":"VariableDeclaration","scope":4285,"src":"5547:35:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":4274,"nodeType":"UserDefinedTypeName","pathNode":{"id":4273,"name":"RemoveLiquidityParams","nameLocations":["5547:21:30"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"5547:21:30"},"referencedDeclaration":4626,"src":"5547:21:30","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"}],"src":"5537:51:30"},"returnParameters":{"id":4284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4278,"mutability":"mutable","name":"bptAmountIn","nameLocation":"5615:11:30","nodeType":"VariableDeclaration","scope":4285,"src":"5607:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4277,"name":"uint256","nodeType":"ElementaryTypeName","src":"5607:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4281,"mutability":"mutable","name":"amountsOut","nameLocation":"5645:10:30","nodeType":"VariableDeclaration","scope":4285,"src":"5628:27:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4279,"name":"uint256","nodeType":"ElementaryTypeName","src":"5628:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4280,"nodeType":"ArrayTypeName","src":"5628:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4283,"mutability":"mutable","name":"returnData","nameLocation":"5670:10:30","nodeType":"VariableDeclaration","scope":4285,"src":"5657:23:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4282,"name":"bytes","nodeType":"ElementaryTypeName","src":"5657:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5606:75:30"},"scope":4344,"src":"5513:169:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4286,"nodeType":"StructuredDocumentation","src":"5912:385:30","text":" @notice Gets the index of a token in a given pool.\n @dev Reverts if the pool is not registered, or if the token does not belong to the pool.\n @param pool Address of the pool\n @param token Address of the token\n @return tokenCount Number of tokens in the pool\n @return index Index corresponding to the given token in the pool's token list"},"functionSelector":"c9c1661b","id":4298,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenCountAndIndexOfToken","nameLocation":"6311:32:30","nodeType":"FunctionDefinition","parameters":{"id":4292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4288,"mutability":"mutable","name":"pool","nameLocation":"6361:4:30","nodeType":"VariableDeclaration","scope":4298,"src":"6353:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4287,"name":"address","nodeType":"ElementaryTypeName","src":"6353:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4291,"mutability":"mutable","name":"token","nameLocation":"6382:5:30","nodeType":"VariableDeclaration","scope":4298,"src":"6375:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4290,"nodeType":"UserDefinedTypeName","pathNode":{"id":4289,"name":"IERC20","nameLocations":["6375:6:30"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6375:6:30"},"referencedDeclaration":39274,"src":"6375:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"6343:50:30"},"returnParameters":{"id":4297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4294,"mutability":"mutable","name":"tokenCount","nameLocation":"6425:10:30","nodeType":"VariableDeclaration","scope":4298,"src":"6417:18:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4293,"name":"uint256","nodeType":"ElementaryTypeName","src":"6417:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4296,"mutability":"mutable","name":"index","nameLocation":"6445:5:30","nodeType":"VariableDeclaration","scope":4298,"src":"6437:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4295,"name":"uint256","nodeType":"ElementaryTypeName","src":"6437:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6416:35:30"},"scope":4344,"src":"6302:150:30","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4299,"nodeType":"StructuredDocumentation","src":"6683:460:30","text":" @notice Transfers pool token from owner to a recipient.\n @dev Notice that the pool token address is not included in the params. This function is exclusively called by\n the pool contract, so msg.sender is used as the token address.\n @param owner Address of the owner\n @param to Address of the recipient\n @param amount Amount of tokens to transfer\n @return success True if successful, false otherwise"},"functionSelector":"beabacc8","id":4310,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"7157:8:30","nodeType":"FunctionDefinition","parameters":{"id":4306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4301,"mutability":"mutable","name":"owner","nameLocation":"7174:5:30","nodeType":"VariableDeclaration","scope":4310,"src":"7166:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4300,"name":"address","nodeType":"ElementaryTypeName","src":"7166:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4303,"mutability":"mutable","name":"to","nameLocation":"7189:2:30","nodeType":"VariableDeclaration","scope":4310,"src":"7181:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4302,"name":"address","nodeType":"ElementaryTypeName","src":"7181:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4305,"mutability":"mutable","name":"amount","nameLocation":"7201:6:30","nodeType":"VariableDeclaration","scope":4310,"src":"7193:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4304,"name":"uint256","nodeType":"ElementaryTypeName","src":"7193:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7165:43:30"},"returnParameters":{"id":4309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4308,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4310,"src":"7227:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4307,"name":"bool","nodeType":"ElementaryTypeName","src":"7227:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7226:6:30"},"scope":4344,"src":"7148:85:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4311,"nodeType":"StructuredDocumentation","src":"7239:544:30","text":" @notice Transfers pool token from a sender to a recipient using an allowance.\n @dev Notice that the pool token address is not included in the params. This function is exclusively called by\n the pool contract, so msg.sender is used as the token address.\n @param spender Address allowed to perform the transfer\n @param from Address of the sender\n @param to Address of the recipient\n @param amount Amount of tokens to transfer\n @return success True if successful, false otherwise"},"functionSelector":"15dacbea","id":4324,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"7797:12:30","nodeType":"FunctionDefinition","parameters":{"id":4320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4313,"mutability":"mutable","name":"spender","nameLocation":"7818:7:30","nodeType":"VariableDeclaration","scope":4324,"src":"7810:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4312,"name":"address","nodeType":"ElementaryTypeName","src":"7810:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4315,"mutability":"mutable","name":"from","nameLocation":"7835:4:30","nodeType":"VariableDeclaration","scope":4324,"src":"7827:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4314,"name":"address","nodeType":"ElementaryTypeName","src":"7827:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4317,"mutability":"mutable","name":"to","nameLocation":"7849:2:30","nodeType":"VariableDeclaration","scope":4324,"src":"7841:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4316,"name":"address","nodeType":"ElementaryTypeName","src":"7841:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4319,"mutability":"mutable","name":"amount","nameLocation":"7861:6:30","nodeType":"VariableDeclaration","scope":4324,"src":"7853:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4318,"name":"uint256","nodeType":"ElementaryTypeName","src":"7853:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7809:59:30"},"returnParameters":{"id":4323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4322,"mutability":"mutable","name":"success","nameLocation":"7892:7:30","nodeType":"VariableDeclaration","scope":4324,"src":"7887:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4321,"name":"bool","nodeType":"ElementaryTypeName","src":"7887:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7886:14:30"},"scope":4344,"src":"7788:113:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4325,"nodeType":"StructuredDocumentation","src":"8128:575:30","text":" @notice Wraps/unwraps tokens based on the parameters provided.\n @dev All parameters are given in raw token decimal encoding. It requires the buffer to be initialized,\n and uses the internal wrapped token buffer when it has enough liquidity to avoid external calls.\n @param params Parameters for the wrap/unwrap operation (see struct definition)\n @return amountCalculatedRaw Calculated swap amount\n @return amountInRaw Amount of input tokens for the swap\n @return amountOutRaw Amount of output tokens from the swap"},"functionSelector":"43583be5","id":4337,"implemented":false,"kind":"function","modifiers":[],"name":"erc4626BufferWrapOrUnwrap","nameLocation":"8717:25:30","nodeType":"FunctionDefinition","parameters":{"id":4329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4328,"mutability":"mutable","name":"params","nameLocation":"8784:6:30","nodeType":"VariableDeclaration","scope":4337,"src":"8752:38:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams"},"typeName":{"id":4327,"nodeType":"UserDefinedTypeName","pathNode":{"id":4326,"name":"BufferWrapOrUnwrapParams","nameLocations":["8752:24:30"],"nodeType":"IdentifierPath","referencedDeclaration":4644,"src":"8752:24:30"},"referencedDeclaration":4644,"src":"8752:24:30","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_storage_ptr","typeString":"struct BufferWrapOrUnwrapParams"}},"visibility":"internal"}],"src":"8742:54:30"},"returnParameters":{"id":4336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4331,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"8823:19:30","nodeType":"VariableDeclaration","scope":4337,"src":"8815:27:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4330,"name":"uint256","nodeType":"ElementaryTypeName","src":"8815:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4333,"mutability":"mutable","name":"amountInRaw","nameLocation":"8852:11:30","nodeType":"VariableDeclaration","scope":4337,"src":"8844:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4332,"name":"uint256","nodeType":"ElementaryTypeName","src":"8844:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4335,"mutability":"mutable","name":"amountOutRaw","nameLocation":"8873:12:30","nodeType":"VariableDeclaration","scope":4337,"src":"8865:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4334,"name":"uint256","nodeType":"ElementaryTypeName","src":"8865:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8814:72:30"},"scope":4344,"src":"8708:179:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4338,"nodeType":"StructuredDocumentation","src":"9115:345:30","text":" @notice Returns the VaultExtension contract address.\n @dev Function is in the main Vault contract. The VaultExtension handles less critical or frequently used\n functions, since delegate calls through the Vault are more expensive than direct calls.\n @return vaultExtension Address of the VaultExtension"},"functionSelector":"b9a8effa","id":4343,"implemented":false,"kind":"function","modifiers":[],"name":"getVaultExtension","nameLocation":"9474:17:30","nodeType":"FunctionDefinition","parameters":{"id":4339,"nodeType":"ParameterList","parameters":[],"src":"9491:2:30"},"returnParameters":{"id":4342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4341,"mutability":"mutable","name":"vaultExtension","nameLocation":"9525:14:30","nodeType":"VariableDeclaration","scope":4343,"src":"9517:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4340,"name":"address","nodeType":"ElementaryTypeName","src":"9517:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9516:24:30"},"scope":4344,"src":"9465:76:30","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4345,"src":"407:9136:30","usedErrors":[],"usedEvents":[]}],"src":"46:9498:30"},"id":30},"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol":{"ast":{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC4626":[38998],"IRateProvider":[150],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":4654,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4346,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:31"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":4348,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4654,"sourceUnit":39275,"src":"72:72:31","symbolAliases":[{"foreign":{"id":4347,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":4350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4654,"sourceUnit":38999,"src":"145:75:31","symbolAliases":[{"foreign":{"id":4349,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"154:8:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","file":"../solidity-utils/helpers/IRateProvider.sol","id":4352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4654,"sourceUnit":151,"src":"222:76:31","symbolAliases":[{"foreign":{"id":4351,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"231:13:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"LiquidityManagement","documentation":{"id":4353,"nodeType":"StructuredDocumentation","src":"300:472:31","text":" @notice Represents a pool's liquidity management configuration.\n @param disableUnbalancedLiquidity If set, liquidity can only be added or removed proportionally\n @param enableAddLiquidityCustom If set, the pool has implemented `onAddLiquidityCustom`\n @param enableRemoveLiquidityCustom If set, the pool has implemented `onRemoveLiquidityCustom`\n @param enableDonation If set, the pool will not revert if liquidity is added with AddLiquidityKind.DONATION"},"id":4362,"members":[{"constant":false,"id":4355,"mutability":"mutable","name":"disableUnbalancedLiquidity","nameLocation":"811:26:31","nodeType":"VariableDeclaration","scope":4362,"src":"806:31:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4354,"name":"bool","nodeType":"ElementaryTypeName","src":"806:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4357,"mutability":"mutable","name":"enableAddLiquidityCustom","nameLocation":"848:24:31","nodeType":"VariableDeclaration","scope":4362,"src":"843:29:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4356,"name":"bool","nodeType":"ElementaryTypeName","src":"843:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4359,"mutability":"mutable","name":"enableRemoveLiquidityCustom","nameLocation":"883:27:31","nodeType":"VariableDeclaration","scope":4362,"src":"878:32:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4358,"name":"bool","nodeType":"ElementaryTypeName","src":"878:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4361,"mutability":"mutable","name":"enableDonation","nameLocation":"921:14:31","nodeType":"VariableDeclaration","scope":4362,"src":"916:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4360,"name":"bool","nodeType":"ElementaryTypeName","src":"916:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"LiquidityManagement","nameLocation":"780:19:31","nodeType":"StructDefinition","scope":4654,"src":"773:165:31","visibility":"public"},{"canonicalName":"PoolConfigBits","id":4364,"name":"PoolConfigBits","nameLocation":"1015:14:31","nodeType":"UserDefinedValueTypeDefinition","src":"1010:31:31","underlyingType":{"id":4363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1033:7:31","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"PoolConfig","documentation":{"id":4365,"nodeType":"StructuredDocumentation","src":"1043:1034:31","text":" @notice Represents a pool's configuration (hooks configuration are separated in another struct).\n @param liquidityManagement Flags related to adding/removing liquidity\n @param staticSwapFeePercentage The pool's native swap fee\n @param aggregateSwapFeePercentage The total swap fee charged, including protocol and pool creator components\n @param aggregateYieldFeePercentage The total swap fee charged, including protocol and pool creator components\n @param tokenDecimalDiffs Compressed storage of the token decimals of each pool token\n @param pauseWindowEndTime Timestamp after which the pool cannot be paused\n @param isPoolRegistered If true, the pool has been registered with the Vault\n @param isPoolInitialized If true, the pool has been initialized with liquidity, and is available for trading\n @param isPoolPaused If true, the pool has been paused (by governance or the pauseManager)\n @param isPoolInRecoveryMode If true, the pool has been placed in recovery mode, enabling recovery mode withdrawals"},"id":4387,"members":[{"constant":false,"id":4368,"mutability":"mutable","name":"liquidityManagement","nameLocation":"2122:19:31","nodeType":"VariableDeclaration","scope":4387,"src":"2102:39:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":4367,"nodeType":"UserDefinedTypeName","pathNode":{"id":4366,"name":"LiquidityManagement","nameLocations":["2102:19:31"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"2102:19:31"},"referencedDeclaration":4362,"src":"2102:19:31","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"},{"constant":false,"id":4370,"mutability":"mutable","name":"staticSwapFeePercentage","nameLocation":"2155:23:31","nodeType":"VariableDeclaration","scope":4387,"src":"2147:31:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4369,"name":"uint256","nodeType":"ElementaryTypeName","src":"2147:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4372,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"2192:26:31","nodeType":"VariableDeclaration","scope":4387,"src":"2184:34:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2184:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4374,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"2232:27:31","nodeType":"VariableDeclaration","scope":4387,"src":"2224:35:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4373,"name":"uint256","nodeType":"ElementaryTypeName","src":"2224:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4376,"mutability":"mutable","name":"tokenDecimalDiffs","nameLocation":"2272:17:31","nodeType":"VariableDeclaration","scope":4387,"src":"2265:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":4375,"name":"uint40","nodeType":"ElementaryTypeName","src":"2265:6:31","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"},{"constant":false,"id":4378,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"2302:18:31","nodeType":"VariableDeclaration","scope":4387,"src":"2295:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4377,"name":"uint32","nodeType":"ElementaryTypeName","src":"2295:6:31","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4380,"mutability":"mutable","name":"isPoolRegistered","nameLocation":"2331:16:31","nodeType":"VariableDeclaration","scope":4387,"src":"2326:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4379,"name":"bool","nodeType":"ElementaryTypeName","src":"2326:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4382,"mutability":"mutable","name":"isPoolInitialized","nameLocation":"2358:17:31","nodeType":"VariableDeclaration","scope":4387,"src":"2353:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4381,"name":"bool","nodeType":"ElementaryTypeName","src":"2353:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4384,"mutability":"mutable","name":"isPoolPaused","nameLocation":"2386:12:31","nodeType":"VariableDeclaration","scope":4387,"src":"2381:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4383,"name":"bool","nodeType":"ElementaryTypeName","src":"2381:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4386,"mutability":"mutable","name":"isPoolInRecoveryMode","nameLocation":"2409:20:31","nodeType":"VariableDeclaration","scope":4387,"src":"2404:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4385,"name":"bool","nodeType":"ElementaryTypeName","src":"2404:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PoolConfig","nameLocation":"2085:10:31","nodeType":"StructDefinition","scope":4654,"src":"2078:354:31","visibility":"public"},{"canonicalName":"HookFlags","documentation":{"id":4388,"nodeType":"StructuredDocumentation","src":"2434:352:31","text":" @notice The flag portion of the `HooksConfig`.\n @dev `enableHookAdjustedAmounts` must be true for all contracts that modify the `amountCalculated`\n in after hooks. Otherwise, the Vault will ignore any \"hookAdjusted\" amounts. Setting any \"shouldCall\"\n flags to true will cause the Vault to call the corresponding hook during operations."},"id":4409,"members":[{"constant":false,"id":4390,"mutability":"mutable","name":"enableHookAdjustedAmounts","nameLocation":"2815:25:31","nodeType":"VariableDeclaration","scope":4409,"src":"2810:30:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4389,"name":"bool","nodeType":"ElementaryTypeName","src":"2810:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4392,"mutability":"mutable","name":"shouldCallBeforeInitialize","nameLocation":"2851:26:31","nodeType":"VariableDeclaration","scope":4409,"src":"2846:31:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4391,"name":"bool","nodeType":"ElementaryTypeName","src":"2846:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4394,"mutability":"mutable","name":"shouldCallAfterInitialize","nameLocation":"2888:25:31","nodeType":"VariableDeclaration","scope":4409,"src":"2883:30:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4393,"name":"bool","nodeType":"ElementaryTypeName","src":"2883:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4396,"mutability":"mutable","name":"shouldCallComputeDynamicSwapFee","nameLocation":"2924:31:31","nodeType":"VariableDeclaration","scope":4409,"src":"2919:36:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4395,"name":"bool","nodeType":"ElementaryTypeName","src":"2919:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4398,"mutability":"mutable","name":"shouldCallBeforeSwap","nameLocation":"2966:20:31","nodeType":"VariableDeclaration","scope":4409,"src":"2961:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4397,"name":"bool","nodeType":"ElementaryTypeName","src":"2961:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4400,"mutability":"mutable","name":"shouldCallAfterSwap","nameLocation":"2997:19:31","nodeType":"VariableDeclaration","scope":4409,"src":"2992:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4399,"name":"bool","nodeType":"ElementaryTypeName","src":"2992:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4402,"mutability":"mutable","name":"shouldCallBeforeAddLiquidity","nameLocation":"3027:28:31","nodeType":"VariableDeclaration","scope":4409,"src":"3022:33:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4401,"name":"bool","nodeType":"ElementaryTypeName","src":"3022:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4404,"mutability":"mutable","name":"shouldCallAfterAddLiquidity","nameLocation":"3066:27:31","nodeType":"VariableDeclaration","scope":4409,"src":"3061:32:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4403,"name":"bool","nodeType":"ElementaryTypeName","src":"3061:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4406,"mutability":"mutable","name":"shouldCallBeforeRemoveLiquidity","nameLocation":"3104:31:31","nodeType":"VariableDeclaration","scope":4409,"src":"3099:36:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4405,"name":"bool","nodeType":"ElementaryTypeName","src":"3099:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4408,"mutability":"mutable","name":"shouldCallAfterRemoveLiquidity","nameLocation":"3146:30:31","nodeType":"VariableDeclaration","scope":4409,"src":"3141:35:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4407,"name":"bool","nodeType":"ElementaryTypeName","src":"3141:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"HookFlags","nameLocation":"2794:9:31","nodeType":"StructDefinition","scope":4654,"src":"2787:392:31","visibility":"public"},{"canonicalName":"HooksConfig","documentation":{"id":4410,"nodeType":"StructuredDocumentation","src":"3181:101:31","text":"@notice Represents a hook contract configuration for a pool (HookFlags + hooksContract address)."},"id":4433,"members":[{"constant":false,"id":4412,"mutability":"mutable","name":"enableHookAdjustedAmounts","nameLocation":"3312:25:31","nodeType":"VariableDeclaration","scope":4433,"src":"3307:30:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4411,"name":"bool","nodeType":"ElementaryTypeName","src":"3307:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4414,"mutability":"mutable","name":"shouldCallBeforeInitialize","nameLocation":"3348:26:31","nodeType":"VariableDeclaration","scope":4433,"src":"3343:31:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4413,"name":"bool","nodeType":"ElementaryTypeName","src":"3343:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4416,"mutability":"mutable","name":"shouldCallAfterInitialize","nameLocation":"3385:25:31","nodeType":"VariableDeclaration","scope":4433,"src":"3380:30:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4415,"name":"bool","nodeType":"ElementaryTypeName","src":"3380:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4418,"mutability":"mutable","name":"shouldCallComputeDynamicSwapFee","nameLocation":"3421:31:31","nodeType":"VariableDeclaration","scope":4433,"src":"3416:36:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4417,"name":"bool","nodeType":"ElementaryTypeName","src":"3416:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4420,"mutability":"mutable","name":"shouldCallBeforeSwap","nameLocation":"3463:20:31","nodeType":"VariableDeclaration","scope":4433,"src":"3458:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4419,"name":"bool","nodeType":"ElementaryTypeName","src":"3458:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4422,"mutability":"mutable","name":"shouldCallAfterSwap","nameLocation":"3494:19:31","nodeType":"VariableDeclaration","scope":4433,"src":"3489:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4421,"name":"bool","nodeType":"ElementaryTypeName","src":"3489:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4424,"mutability":"mutable","name":"shouldCallBeforeAddLiquidity","nameLocation":"3524:28:31","nodeType":"VariableDeclaration","scope":4433,"src":"3519:33:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4423,"name":"bool","nodeType":"ElementaryTypeName","src":"3519:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4426,"mutability":"mutable","name":"shouldCallAfterAddLiquidity","nameLocation":"3563:27:31","nodeType":"VariableDeclaration","scope":4433,"src":"3558:32:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4425,"name":"bool","nodeType":"ElementaryTypeName","src":"3558:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4428,"mutability":"mutable","name":"shouldCallBeforeRemoveLiquidity","nameLocation":"3601:31:31","nodeType":"VariableDeclaration","scope":4433,"src":"3596:36:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4427,"name":"bool","nodeType":"ElementaryTypeName","src":"3596:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4430,"mutability":"mutable","name":"shouldCallAfterRemoveLiquidity","nameLocation":"3643:30:31","nodeType":"VariableDeclaration","scope":4433,"src":"3638:35:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4429,"name":"bool","nodeType":"ElementaryTypeName","src":"3638:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4432,"mutability":"mutable","name":"hooksContract","nameLocation":"3687:13:31","nodeType":"VariableDeclaration","scope":4433,"src":"3679:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4431,"name":"address","nodeType":"ElementaryTypeName","src":"3679:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"HooksConfig","nameLocation":"3289:11:31","nodeType":"StructDefinition","scope":4654,"src":"3282:421:31","visibility":"public"},{"canonicalName":"SwapState","documentation":{"id":4434,"nodeType":"StructuredDocumentation","src":"3705:364:31","text":" @notice Represents temporary state used during a swap operation.\n @param indexIn The zero-based index of tokenIn\n @param indexOut The zero-based index of tokenOut\n @param amountGivenScaled18 The amountGiven (i.e., tokenIn for ExactIn), adjusted for token decimals\n @param swapFeePercentage The swap fee to be applied (might be static or dynamic)"},"id":4443,"members":[{"constant":false,"id":4436,"mutability":"mutable","name":"indexIn","nameLocation":"4101:7:31","nodeType":"VariableDeclaration","scope":4443,"src":"4093:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4435,"name":"uint256","nodeType":"ElementaryTypeName","src":"4093:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4438,"mutability":"mutable","name":"indexOut","nameLocation":"4122:8:31","nodeType":"VariableDeclaration","scope":4443,"src":"4114:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4437,"name":"uint256","nodeType":"ElementaryTypeName","src":"4114:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4440,"mutability":"mutable","name":"amountGivenScaled18","nameLocation":"4144:19:31","nodeType":"VariableDeclaration","scope":4443,"src":"4136:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4439,"name":"uint256","nodeType":"ElementaryTypeName","src":"4136:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4442,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"4177:17:31","nodeType":"VariableDeclaration","scope":4443,"src":"4169:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4441,"name":"uint256","nodeType":"ElementaryTypeName","src":"4169:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SwapState","nameLocation":"4077:9:31","nodeType":"StructDefinition","scope":4654,"src":"4070:127:31","visibility":"public"},{"canonicalName":"VaultState","documentation":{"id":4444,"nodeType":"StructuredDocumentation","src":"4199:381:31","text":" @notice Represents the Vault's configuration.\n @param isQueryDisabled If set to true, disables query functionality of the Vault. Can be modified by governance\n @param isVaultPaused If set to true, swaps and add/remove liquidity operations are halted\n @param areBuffersPaused If set to true, the Vault wrap/unwrap primitives associated with buffers will be disabled"},"id":4451,"members":[{"constant":false,"id":4446,"mutability":"mutable","name":"isQueryDisabled","nameLocation":"4610:15:31","nodeType":"VariableDeclaration","scope":4451,"src":"4605:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4445,"name":"bool","nodeType":"ElementaryTypeName","src":"4605:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4448,"mutability":"mutable","name":"isVaultPaused","nameLocation":"4636:13:31","nodeType":"VariableDeclaration","scope":4451,"src":"4631:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4447,"name":"bool","nodeType":"ElementaryTypeName","src":"4631:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4450,"mutability":"mutable","name":"areBuffersPaused","nameLocation":"4660:16:31","nodeType":"VariableDeclaration","scope":4451,"src":"4655:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4449,"name":"bool","nodeType":"ElementaryTypeName","src":"4655:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"VaultState","nameLocation":"4588:10:31","nodeType":"StructDefinition","scope":4654,"src":"4581:98:31","visibility":"public"},{"canonicalName":"PoolRoleAccounts","documentation":{"id":4452,"nodeType":"StructuredDocumentation","src":"4681:461:31","text":" @notice Represents the accounts holding certain roles for a given pool. This is passed in on pool registration.\n @param pauseManager Account empowered to pause/unpause the pool (note that governance can always pause a pool)\n @param swapFeeManager Account empowered to set static swap fees for a pool (or 0 to delegate to governance)\n @param poolCreator Account empowered to set the pool creator fee (or 0 if all fees go to the protocol and LPs)"},"id":4459,"members":[{"constant":false,"id":4454,"mutability":"mutable","name":"pauseManager","nameLocation":"5181:12:31","nodeType":"VariableDeclaration","scope":4459,"src":"5173:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4453,"name":"address","nodeType":"ElementaryTypeName","src":"5173:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4456,"mutability":"mutable","name":"swapFeeManager","nameLocation":"5207:14:31","nodeType":"VariableDeclaration","scope":4459,"src":"5199:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4455,"name":"address","nodeType":"ElementaryTypeName","src":"5199:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4458,"mutability":"mutable","name":"poolCreator","nameLocation":"5235:11:31","nodeType":"VariableDeclaration","scope":4459,"src":"5227:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4457,"name":"address","nodeType":"ElementaryTypeName","src":"5227:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"PoolRoleAccounts","nameLocation":"5150:16:31","nodeType":"StructDefinition","scope":4654,"src":"5143:106:31","visibility":"public"},{"canonicalName":"TokenType","documentation":{"id":4460,"nodeType":"StructuredDocumentation","src":"9245:1024:31","text":" @notice Token types supported by the Vault.\n @dev In general, pools may contain any combination of these tokens.\n STANDARD tokens (e.g., BAL, WETH) have no rate provider.\n WITH_RATE tokens (e.g., wstETH) require a rate provider. These may be tokens like wstETH, which need to be wrapped\n because the underlying stETH token is rebasing, and such tokens are unsupported by the Vault. They may also be\n tokens like sEUR, which track an underlying asset, but are not yield-bearing. Finally, this encompasses\n yield-bearing ERC4626 tokens, which can be used to facilitate swaps without requiring wrapping or unwrapping\n in most cases. The `paysYieldFees` flag can be used to indicate whether a token is yield-bearing (e.g., waDAI),\n not yield-bearing (e.g., sEUR), or yield-bearing but exempt from fees (e.g., in certain nested pools, where\n yield fees are charged elsewhere).\n NB: STANDARD must always be the first enum element, so that newly initialized data structures default to Standard."},"id":4463,"members":[{"id":4461,"name":"STANDARD","nameLocation":"10291:8:31","nodeType":"EnumValue","src":"10291:8:31"},{"id":4462,"name":"WITH_RATE","nameLocation":"10305:9:31","nodeType":"EnumValue","src":"10305:9:31"}],"name":"TokenType","nameLocation":"10275:9:31","nodeType":"EnumDefinition","src":"10270:46:31"},{"canonicalName":"TokenConfig","documentation":{"id":4464,"nodeType":"StructuredDocumentation","src":"10318:915:31","text":" @notice Encapsulate the data required for the Vault to support a token of the given type.\n @dev For STANDARD tokens, the rate provider address must be 0, and paysYieldFees must be false. All WITH_RATE tokens\n need a rate provider, and may or may not be yield-bearing.\n At registration time, it is useful to include the token address along with the token parameters in the structure\n passed to `registerPool`, as the alternative would be parallel arrays, which would be error prone and require\n validation checks. `TokenConfig` is only used for registration, and is never put into storage (see `TokenInfo`).\n @param token The token address\n @param tokenType The token type (see the enum for supported types)\n @param rateProvider The rate provider for a token (see further documentation above)\n @param paysYieldFees Flag indicating whether yield fees should be charged on this token"},"id":4476,"members":[{"constant":false,"id":4467,"mutability":"mutable","name":"token","nameLocation":"11266:5:31","nodeType":"VariableDeclaration","scope":4476,"src":"11259:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4466,"nodeType":"UserDefinedTypeName","pathNode":{"id":4465,"name":"IERC20","nameLocations":["11259:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"11259:6:31"},"referencedDeclaration":39274,"src":"11259:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4470,"mutability":"mutable","name":"tokenType","nameLocation":"11287:9:31","nodeType":"VariableDeclaration","scope":4476,"src":"11277:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"typeName":{"id":4469,"nodeType":"UserDefinedTypeName","pathNode":{"id":4468,"name":"TokenType","nameLocations":["11277:9:31"],"nodeType":"IdentifierPath","referencedDeclaration":4463,"src":"11277:9:31"},"referencedDeclaration":4463,"src":"11277:9:31","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"visibility":"internal"},{"constant":false,"id":4473,"mutability":"mutable","name":"rateProvider","nameLocation":"11316:12:31","nodeType":"VariableDeclaration","scope":4476,"src":"11302:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"},"typeName":{"id":4472,"nodeType":"UserDefinedTypeName","pathNode":{"id":4471,"name":"IRateProvider","nameLocations":["11302:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"11302:13:31"},"referencedDeclaration":150,"src":"11302:13:31","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"visibility":"internal"},{"constant":false,"id":4475,"mutability":"mutable","name":"paysYieldFees","nameLocation":"11339:13:31","nodeType":"VariableDeclaration","scope":4476,"src":"11334:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4474,"name":"bool","nodeType":"ElementaryTypeName","src":"11334:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"TokenConfig","nameLocation":"11241:11:31","nodeType":"StructDefinition","scope":4654,"src":"11234:121:31","visibility":"public"},{"canonicalName":"TokenInfo","documentation":{"id":4477,"nodeType":"StructuredDocumentation","src":"11357:592:31","text":" @notice This data structure is stored in `_poolTokenInfo`, a nested mapping from pool -> (token -> TokenInfo).\n @dev Since the token is already the key of the nested mapping, it would be redundant (and an extra SLOAD) to store\n it again in the struct. When we construct PoolData, the tokens are separated into their own array.\n @param tokenType The token type (see the enum for supported types)\n @param rateProvider The rate provider for a token (see further documentation above)\n @param paysYieldFees Flag indicating whether yield fees should be charged on this token"},"id":4486,"members":[{"constant":false,"id":4480,"mutability":"mutable","name":"tokenType","nameLocation":"11983:9:31","nodeType":"VariableDeclaration","scope":4486,"src":"11973:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"typeName":{"id":4479,"nodeType":"UserDefinedTypeName","pathNode":{"id":4478,"name":"TokenType","nameLocations":["11973:9:31"],"nodeType":"IdentifierPath","referencedDeclaration":4463,"src":"11973:9:31"},"referencedDeclaration":4463,"src":"11973:9:31","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"visibility":"internal"},{"constant":false,"id":4483,"mutability":"mutable","name":"rateProvider","nameLocation":"12012:12:31","nodeType":"VariableDeclaration","scope":4486,"src":"11998:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"},"typeName":{"id":4482,"nodeType":"UserDefinedTypeName","pathNode":{"id":4481,"name":"IRateProvider","nameLocations":["11998:13:31"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"11998:13:31"},"referencedDeclaration":150,"src":"11998:13:31","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"visibility":"internal"},{"constant":false,"id":4485,"mutability":"mutable","name":"paysYieldFees","nameLocation":"12035:13:31","nodeType":"VariableDeclaration","scope":4486,"src":"12030:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4484,"name":"bool","nodeType":"ElementaryTypeName","src":"12030:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"TokenInfo","nameLocation":"11957:9:31","nodeType":"StructDefinition","scope":4654,"src":"11950:101:31","visibility":"public"},{"canonicalName":"PoolData","documentation":{"id":4487,"nodeType":"StructuredDocumentation","src":"12053:761:31","text":" @notice Data structure used to represent the current pool state in memory\n @param poolConfigBits Custom type to store the entire configuration of the pool.\n @param tokens Pool tokens, sorted in token registration order\n @param tokenInfo Configuration data for each token, sorted in token registration order\n @param balancesRaw Token balances in native decimals\n @param balancesLiveScaled18 Token balances after paying yield fees, applying decimal scaling and rates\n @param tokenRates 18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\n @param decimalScalingFactors Conversion factor used to adjust for token decimals for uniform precision in\n calculations. It is 1e18 (FP 1) for 18-decimal tokens"},"id":4511,"members":[{"constant":false,"id":4490,"mutability":"mutable","name":"poolConfigBits","nameLocation":"12852:14:31","nodeType":"VariableDeclaration","scope":4511,"src":"12837:29:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":4489,"nodeType":"UserDefinedTypeName","pathNode":{"id":4488,"name":"PoolConfigBits","nameLocations":["12837:14:31"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"12837:14:31"},"referencedDeclaration":4364,"src":"12837:14:31","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":4494,"mutability":"mutable","name":"tokens","nameLocation":"12881:6:31","nodeType":"VariableDeclaration","scope":4511,"src":"12872:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4492,"nodeType":"UserDefinedTypeName","pathNode":{"id":4491,"name":"IERC20","nameLocations":["12872:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"12872:6:31"},"referencedDeclaration":39274,"src":"12872:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":4493,"nodeType":"ArrayTypeName","src":"12872:8:31","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":4498,"mutability":"mutable","name":"tokenInfo","nameLocation":"12905:9:31","nodeType":"VariableDeclaration","scope":4511,"src":"12893:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"},"typeName":{"baseType":{"id":4496,"nodeType":"UserDefinedTypeName","pathNode":{"id":4495,"name":"TokenInfo","nameLocations":["12893:9:31"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"12893:9:31"},"referencedDeclaration":4486,"src":"12893:9:31","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":4497,"nodeType":"ArrayTypeName","src":"12893:11:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}},"visibility":"internal"},{"constant":false,"id":4501,"mutability":"mutable","name":"balancesRaw","nameLocation":"12930:11:31","nodeType":"VariableDeclaration","scope":4511,"src":"12920:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4499,"name":"uint256","nodeType":"ElementaryTypeName","src":"12920:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4500,"nodeType":"ArrayTypeName","src":"12920:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4504,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"12957:20:31","nodeType":"VariableDeclaration","scope":4511,"src":"12947:30:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4502,"name":"uint256","nodeType":"ElementaryTypeName","src":"12947:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4503,"nodeType":"ArrayTypeName","src":"12947:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4507,"mutability":"mutable","name":"tokenRates","nameLocation":"12993:10:31","nodeType":"VariableDeclaration","scope":4511,"src":"12983:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4505,"name":"uint256","nodeType":"ElementaryTypeName","src":"12983:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4506,"nodeType":"ArrayTypeName","src":"12983:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4510,"mutability":"mutable","name":"decimalScalingFactors","nameLocation":"13019:21:31","nodeType":"VariableDeclaration","scope":4511,"src":"13009:31:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4508,"name":"uint256","nodeType":"ElementaryTypeName","src":"13009:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4509,"nodeType":"ArrayTypeName","src":"13009:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"name":"PoolData","nameLocation":"12822:8:31","nodeType":"StructDefinition","scope":4654,"src":"12815:228:31","visibility":"public"},{"canonicalName":"Rounding","id":4514,"members":[{"id":4512,"name":"ROUND_UP","nameLocation":"13065:8:31","nodeType":"EnumValue","src":"13065:8:31"},{"id":4513,"name":"ROUND_DOWN","nameLocation":"13079:10:31","nodeType":"EnumValue","src":"13079:10:31"}],"name":"Rounding","nameLocation":"13050:8:31","nodeType":"EnumDefinition","src":"13045:46:31"},{"canonicalName":"SwapKind","id":4517,"members":[{"id":4515,"name":"EXACT_IN","nameLocation":"13318:8:31","nodeType":"EnumValue","src":"13318:8:31"},{"id":4516,"name":"EXACT_OUT","nameLocation":"13332:9:31","nodeType":"EnumValue","src":"13332:9:31"}],"name":"SwapKind","nameLocation":"13303:8:31","nodeType":"EnumDefinition","src":"13298:45:31"},{"canonicalName":"VaultSwapParams","documentation":{"id":4518,"nodeType":"StructuredDocumentation","src":"14089:558:31","text":" @notice Data passed into primary Vault `swap` operations.\n @param kind Type of swap (Exact In or Exact Out)\n @param pool The pool with the tokens being swapped\n @param tokenIn The token entering the Vault (balance increases)\n @param tokenOut The token leaving the Vault (balance decreases)\n @param amountGivenRaw Amount specified for tokenIn or tokenOut (depending on the type of swap)\n @param limitRaw Minimum or maximum value of the calculated amount (depending on the type of swap)\n @param userData Additional (optional) user data"},"id":4536,"members":[{"constant":false,"id":4521,"mutability":"mutable","name":"kind","nameLocation":"14686:4:31","nodeType":"VariableDeclaration","scope":4536,"src":"14677:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"typeName":{"id":4520,"nodeType":"UserDefinedTypeName","pathNode":{"id":4519,"name":"SwapKind","nameLocations":["14677:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"14677:8:31"},"referencedDeclaration":4517,"src":"14677:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"visibility":"internal"},{"constant":false,"id":4523,"mutability":"mutable","name":"pool","nameLocation":"14704:4:31","nodeType":"VariableDeclaration","scope":4536,"src":"14696:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4522,"name":"address","nodeType":"ElementaryTypeName","src":"14696:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4526,"mutability":"mutable","name":"tokenIn","nameLocation":"14721:7:31","nodeType":"VariableDeclaration","scope":4536,"src":"14714:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4525,"nodeType":"UserDefinedTypeName","pathNode":{"id":4524,"name":"IERC20","nameLocations":["14714:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14714:6:31"},"referencedDeclaration":39274,"src":"14714:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4529,"mutability":"mutable","name":"tokenOut","nameLocation":"14741:8:31","nodeType":"VariableDeclaration","scope":4536,"src":"14734:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4528,"nodeType":"UserDefinedTypeName","pathNode":{"id":4527,"name":"IERC20","nameLocations":["14734:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14734:6:31"},"referencedDeclaration":39274,"src":"14734:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4531,"mutability":"mutable","name":"amountGivenRaw","nameLocation":"14763:14:31","nodeType":"VariableDeclaration","scope":4536,"src":"14755:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4530,"name":"uint256","nodeType":"ElementaryTypeName","src":"14755:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4533,"mutability":"mutable","name":"limitRaw","nameLocation":"14791:8:31","nodeType":"VariableDeclaration","scope":4536,"src":"14783:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4532,"name":"uint256","nodeType":"ElementaryTypeName","src":"14783:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4535,"mutability":"mutable","name":"userData","nameLocation":"14811:8:31","nodeType":"VariableDeclaration","scope":4536,"src":"14805:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4534,"name":"bytes","nodeType":"ElementaryTypeName","src":"14805:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"VaultSwapParams","nameLocation":"14655:15:31","nodeType":"StructDefinition","scope":4654,"src":"14648:174:31","visibility":"public"},{"canonicalName":"PoolSwapParams","documentation":{"id":4537,"nodeType":"StructuredDocumentation","src":"14824:530:31","text":" @notice Data for a swap operation, used by contracts implementing `IBasePool`.\n @param kind Type of swap (exact in or exact out)\n @param amountGivenScaled18 Amount given based on kind of the swap (e.g., tokenIn for EXACT_IN)\n @param balancesScaled18 Current pool balances\n @param indexIn Index of tokenIn\n @param indexOut Index of tokenOut\n @param router The address (usually a router contract) that initiated a swap operation on the Vault\n @param userData Additional (optional) data required for the swap"},"id":4554,"members":[{"constant":false,"id":4540,"mutability":"mutable","name":"kind","nameLocation":"15392:4:31","nodeType":"VariableDeclaration","scope":4554,"src":"15383:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"typeName":{"id":4539,"nodeType":"UserDefinedTypeName","pathNode":{"id":4538,"name":"SwapKind","nameLocations":["15383:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"15383:8:31"},"referencedDeclaration":4517,"src":"15383:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"visibility":"internal"},{"constant":false,"id":4542,"mutability":"mutable","name":"amountGivenScaled18","nameLocation":"15410:19:31","nodeType":"VariableDeclaration","scope":4554,"src":"15402:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4541,"name":"uint256","nodeType":"ElementaryTypeName","src":"15402:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4545,"mutability":"mutable","name":"balancesScaled18","nameLocation":"15445:16:31","nodeType":"VariableDeclaration","scope":4554,"src":"15435:26:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4543,"name":"uint256","nodeType":"ElementaryTypeName","src":"15435:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4544,"nodeType":"ArrayTypeName","src":"15435:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4547,"mutability":"mutable","name":"indexIn","nameLocation":"15475:7:31","nodeType":"VariableDeclaration","scope":4554,"src":"15467:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4546,"name":"uint256","nodeType":"ElementaryTypeName","src":"15467:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4549,"mutability":"mutable","name":"indexOut","nameLocation":"15496:8:31","nodeType":"VariableDeclaration","scope":4554,"src":"15488:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4548,"name":"uint256","nodeType":"ElementaryTypeName","src":"15488:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4551,"mutability":"mutable","name":"router","nameLocation":"15518:6:31","nodeType":"VariableDeclaration","scope":4554,"src":"15510:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4550,"name":"address","nodeType":"ElementaryTypeName","src":"15510:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4553,"mutability":"mutable","name":"userData","nameLocation":"15536:8:31","nodeType":"VariableDeclaration","scope":4554,"src":"15530:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4552,"name":"bytes","nodeType":"ElementaryTypeName","src":"15530:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"PoolSwapParams","nameLocation":"15362:14:31","nodeType":"StructDefinition","scope":4654,"src":"15355:192:31","visibility":"public"},{"canonicalName":"AfterSwapParams","documentation":{"id":4555,"nodeType":"StructuredDocumentation","src":"15549:813:31","text":" @notice Data for the hook after a swap operation.\n @param kind Type of swap (exact in or exact out)\n @param tokenIn Token to be swapped from\n @param tokenOut Token to be swapped to\n @param amountInScaled18 Amount of tokenIn (entering the Vault)\n @param amountOutScaled18 Amount of tokenOut (leaving the Vault)\n @param tokenInBalanceScaled18 Updated (after swap) balance of tokenIn\n @param tokenOutBalanceScaled18 Updated (after swap) balance of tokenOut\n @param amountCalculatedScaled18 Token amount calculated by the swap\n @param amountCalculatedRaw Token amount calculated by the swap\n @param router The address (usually a router contract) that initiated a swap operation on the Vault\n @param pool Pool address\n @param userData Additional (optional) data required for the swap"},"id":4583,"members":[{"constant":false,"id":4558,"mutability":"mutable","name":"kind","nameLocation":"16401:4:31","nodeType":"VariableDeclaration","scope":4583,"src":"16392:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"typeName":{"id":4557,"nodeType":"UserDefinedTypeName","pathNode":{"id":4556,"name":"SwapKind","nameLocations":["16392:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"16392:8:31"},"referencedDeclaration":4517,"src":"16392:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"visibility":"internal"},{"constant":false,"id":4561,"mutability":"mutable","name":"tokenIn","nameLocation":"16418:7:31","nodeType":"VariableDeclaration","scope":4583,"src":"16411:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4560,"nodeType":"UserDefinedTypeName","pathNode":{"id":4559,"name":"IERC20","nameLocations":["16411:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"16411:6:31"},"referencedDeclaration":39274,"src":"16411:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4564,"mutability":"mutable","name":"tokenOut","nameLocation":"16438:8:31","nodeType":"VariableDeclaration","scope":4583,"src":"16431:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":4563,"nodeType":"UserDefinedTypeName","pathNode":{"id":4562,"name":"IERC20","nameLocations":["16431:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"16431:6:31"},"referencedDeclaration":39274,"src":"16431:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4566,"mutability":"mutable","name":"amountInScaled18","nameLocation":"16460:16:31","nodeType":"VariableDeclaration","scope":4583,"src":"16452:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4565,"name":"uint256","nodeType":"ElementaryTypeName","src":"16452:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4568,"mutability":"mutable","name":"amountOutScaled18","nameLocation":"16490:17:31","nodeType":"VariableDeclaration","scope":4583,"src":"16482:25:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4567,"name":"uint256","nodeType":"ElementaryTypeName","src":"16482:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4570,"mutability":"mutable","name":"tokenInBalanceScaled18","nameLocation":"16521:22:31","nodeType":"VariableDeclaration","scope":4583,"src":"16513:30:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4569,"name":"uint256","nodeType":"ElementaryTypeName","src":"16513:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4572,"mutability":"mutable","name":"tokenOutBalanceScaled18","nameLocation":"16557:23:31","nodeType":"VariableDeclaration","scope":4583,"src":"16549:31:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4571,"name":"uint256","nodeType":"ElementaryTypeName","src":"16549:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4574,"mutability":"mutable","name":"amountCalculatedScaled18","nameLocation":"16594:24:31","nodeType":"VariableDeclaration","scope":4583,"src":"16586:32:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4573,"name":"uint256","nodeType":"ElementaryTypeName","src":"16586:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4576,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"16632:19:31","nodeType":"VariableDeclaration","scope":4583,"src":"16624:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4575,"name":"uint256","nodeType":"ElementaryTypeName","src":"16624:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4578,"mutability":"mutable","name":"router","nameLocation":"16665:6:31","nodeType":"VariableDeclaration","scope":4583,"src":"16657:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4577,"name":"address","nodeType":"ElementaryTypeName","src":"16657:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4580,"mutability":"mutable","name":"pool","nameLocation":"16685:4:31","nodeType":"VariableDeclaration","scope":4583,"src":"16677:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4579,"name":"address","nodeType":"ElementaryTypeName","src":"16677:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4582,"mutability":"mutable","name":"userData","nameLocation":"16701:8:31","nodeType":"VariableDeclaration","scope":4583,"src":"16695:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4581,"name":"bytes","nodeType":"ElementaryTypeName","src":"16695:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"AfterSwapParams","nameLocation":"16370:15:31","nodeType":"StructDefinition","scope":4654,"src":"16363:349:31","visibility":"public"},{"canonicalName":"AddLiquidityKind","id":4589,"members":[{"id":4584,"name":"PROPORTIONAL","nameLocation":"16951:12:31","nodeType":"EnumValue","src":"16951:12:31"},{"id":4585,"name":"UNBALANCED","nameLocation":"16969:10:31","nodeType":"EnumValue","src":"16969:10:31"},{"id":4586,"name":"SINGLE_TOKEN_EXACT_OUT","nameLocation":"16985:22:31","nodeType":"EnumValue","src":"16985:22:31"},{"id":4587,"name":"DONATION","nameLocation":"17013:8:31","nodeType":"EnumValue","src":"17013:8:31"},{"id":4588,"name":"CUSTOM","nameLocation":"17027:6:31","nodeType":"EnumValue","src":"17027:6:31"}],"name":"AddLiquidityKind","nameLocation":"16928:16:31","nodeType":"EnumDefinition","src":"16923:112:31"},{"canonicalName":"AddLiquidityParams","documentation":{"id":4590,"nodeType":"StructuredDocumentation","src":"17037:320:31","text":" @notice Data for an add liquidity operation.\n @param pool Address of the pool\n @param to Address of user to mint to\n @param maxAmountsIn Maximum amounts of input tokens\n @param minBptAmountOut Minimum amount of output pool tokens\n @param kind Add liquidity kind\n @param userData Optional user data"},"id":4605,"members":[{"constant":false,"id":4592,"mutability":"mutable","name":"pool","nameLocation":"17398:4:31","nodeType":"VariableDeclaration","scope":4605,"src":"17390:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4591,"name":"address","nodeType":"ElementaryTypeName","src":"17390:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4594,"mutability":"mutable","name":"to","nameLocation":"17416:2:31","nodeType":"VariableDeclaration","scope":4605,"src":"17408:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4593,"name":"address","nodeType":"ElementaryTypeName","src":"17408:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4597,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"17434:12:31","nodeType":"VariableDeclaration","scope":4605,"src":"17424:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4595,"name":"uint256","nodeType":"ElementaryTypeName","src":"17424:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4596,"nodeType":"ArrayTypeName","src":"17424:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4599,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"17460:15:31","nodeType":"VariableDeclaration","scope":4605,"src":"17452:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4598,"name":"uint256","nodeType":"ElementaryTypeName","src":"17452:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4602,"mutability":"mutable","name":"kind","nameLocation":"17498:4:31","nodeType":"VariableDeclaration","scope":4605,"src":"17481:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":4601,"nodeType":"UserDefinedTypeName","pathNode":{"id":4600,"name":"AddLiquidityKind","nameLocations":["17481:16:31"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"17481:16:31"},"referencedDeclaration":4589,"src":"17481:16:31","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":4604,"mutability":"mutable","name":"userData","nameLocation":"17514:8:31","nodeType":"VariableDeclaration","scope":4605,"src":"17508:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4603,"name":"bytes","nodeType":"ElementaryTypeName","src":"17508:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"AddLiquidityParams","nameLocation":"17365:18:31","nodeType":"StructDefinition","scope":4654,"src":"17358:167:31","visibility":"public"},{"canonicalName":"RemoveLiquidityKind","id":4610,"members":[{"id":4606,"name":"PROPORTIONAL","nameLocation":"17770:12:31","nodeType":"EnumValue","src":"17770:12:31"},{"id":4607,"name":"SINGLE_TOKEN_EXACT_IN","nameLocation":"17788:21:31","nodeType":"EnumValue","src":"17788:21:31"},{"id":4608,"name":"SINGLE_TOKEN_EXACT_OUT","nameLocation":"17815:22:31","nodeType":"EnumValue","src":"17815:22:31"},{"id":4609,"name":"CUSTOM","nameLocation":"17843:6:31","nodeType":"EnumValue","src":"17843:6:31"}],"name":"RemoveLiquidityKind","nameLocation":"17744:19:31","nodeType":"EnumDefinition","src":"17739:112:31"},{"canonicalName":"RemoveLiquidityParams","documentation":{"id":4611,"nodeType":"StructuredDocumentation","src":"17853:330:31","text":" @notice Data for an remove liquidity operation.\n @param pool Address of the pool\n @param from Address of user to burn from\n @param maxBptAmountIn Maximum amount of input pool tokens\n @param minAmountsOut Minimum amounts of output tokens\n @param kind Remove liquidity kind\n @param userData Optional user data"},"id":4626,"members":[{"constant":false,"id":4613,"mutability":"mutable","name":"pool","nameLocation":"18227:4:31","nodeType":"VariableDeclaration","scope":4626,"src":"18219:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4612,"name":"address","nodeType":"ElementaryTypeName","src":"18219:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4615,"mutability":"mutable","name":"from","nameLocation":"18245:4:31","nodeType":"VariableDeclaration","scope":4626,"src":"18237:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4614,"name":"address","nodeType":"ElementaryTypeName","src":"18237:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4617,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"18263:14:31","nodeType":"VariableDeclaration","scope":4626,"src":"18255:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4616,"name":"uint256","nodeType":"ElementaryTypeName","src":"18255:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4620,"mutability":"mutable","name":"minAmountsOut","nameLocation":"18293:13:31","nodeType":"VariableDeclaration","scope":4626,"src":"18283:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4618,"name":"uint256","nodeType":"ElementaryTypeName","src":"18283:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4619,"nodeType":"ArrayTypeName","src":"18283:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4623,"mutability":"mutable","name":"kind","nameLocation":"18332:4:31","nodeType":"VariableDeclaration","scope":4626,"src":"18312:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":4622,"nodeType":"UserDefinedTypeName","pathNode":{"id":4621,"name":"RemoveLiquidityKind","nameLocations":["18312:19:31"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"18312:19:31"},"referencedDeclaration":4610,"src":"18312:19:31","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":4625,"mutability":"mutable","name":"userData","nameLocation":"18348:8:31","nodeType":"VariableDeclaration","scope":4626,"src":"18342:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4624,"name":"bytes","nodeType":"ElementaryTypeName","src":"18342:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"RemoveLiquidityParams","nameLocation":"18191:21:31","nodeType":"StructDefinition","scope":4654,"src":"18184:175:31","visibility":"public"},{"canonicalName":"WrappingDirection","id":4629,"members":[{"id":4627,"name":"WRAP","nameLocation":"18602:4:31","nodeType":"EnumValue","src":"18602:4:31"},{"id":4628,"name":"UNWRAP","nameLocation":"18612:6:31","nodeType":"EnumValue","src":"18612:6:31"}],"name":"WrappingDirection","nameLocation":"18578:17:31","nodeType":"EnumDefinition","src":"18573:47:31"},{"canonicalName":"BufferWrapOrUnwrapParams","documentation":{"id":4630,"nodeType":"StructuredDocumentation","src":"18622:499:31","text":" @notice Data for a wrap/unwrap operation.\n @param kind Type of swap (Exact In or Exact Out)\n @param direction Direction of the wrapping operation (Wrap or Unwrap)\n @param wrappedToken Wrapped token, compatible with interface ERC4626\n @param amountGivenRaw Amount specified for tokenIn or tokenOut (depends on the type of swap and wrapping direction)\n @param limitRaw Minimum or maximum amount specified for the other token (depends on the type of swap and wrapping\n direction)"},"id":4644,"members":[{"constant":false,"id":4633,"mutability":"mutable","name":"kind","nameLocation":"19169:4:31","nodeType":"VariableDeclaration","scope":4644,"src":"19160:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"typeName":{"id":4632,"nodeType":"UserDefinedTypeName","pathNode":{"id":4631,"name":"SwapKind","nameLocations":["19160:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"19160:8:31"},"referencedDeclaration":4517,"src":"19160:8:31","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"visibility":"internal"},{"constant":false,"id":4636,"mutability":"mutable","name":"direction","nameLocation":"19197:9:31","nodeType":"VariableDeclaration","scope":4644,"src":"19179:27:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"},"typeName":{"id":4635,"nodeType":"UserDefinedTypeName","pathNode":{"id":4634,"name":"WrappingDirection","nameLocations":["19179:17:31"],"nodeType":"IdentifierPath","referencedDeclaration":4629,"src":"19179:17:31"},"referencedDeclaration":4629,"src":"19179:17:31","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},"visibility":"internal"},{"constant":false,"id":4639,"mutability":"mutable","name":"wrappedToken","nameLocation":"19221:12:31","nodeType":"VariableDeclaration","scope":4644,"src":"19212:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":4638,"nodeType":"UserDefinedTypeName","pathNode":{"id":4637,"name":"IERC4626","nameLocations":["19212:8:31"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"19212:8:31"},"referencedDeclaration":38998,"src":"19212:8:31","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":4641,"mutability":"mutable","name":"amountGivenRaw","nameLocation":"19247:14:31","nodeType":"VariableDeclaration","scope":4644,"src":"19239:22:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4640,"name":"uint256","nodeType":"ElementaryTypeName","src":"19239:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4643,"mutability":"mutable","name":"limitRaw","nameLocation":"19275:8:31","nodeType":"VariableDeclaration","scope":4644,"src":"19267:16:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4642,"name":"uint256","nodeType":"ElementaryTypeName","src":"19267:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"BufferWrapOrUnwrapParams","nameLocation":"19129:24:31","nodeType":"StructDefinition","scope":4654,"src":"19122:164:31","visibility":"public"},{"constant":true,"id":4647,"mutability":"constant","name":"FEE_BITLENGTH","nameLocation":"19611:13:31","nodeType":"VariableDeclaration","scope":4654,"src":"19594:35:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4645,"name":"uint256","nodeType":"ElementaryTypeName","src":"19594:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3234","id":4646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19627:2:31","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},"visibility":"internal"},{"constant":true,"id":4650,"mutability":"constant","name":"FEE_SCALING_FACTOR","nameLocation":"19648:18:31","nodeType":"VariableDeclaration","scope":4654,"src":"19631:42:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4648,"name":"uint256","nodeType":"ElementaryTypeName","src":"19631:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653131","id":4649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19669:4:31","typeDescriptions":{"typeIdentifier":"t_rational_100000000000_by_1","typeString":"int_const 100000000000"},"value":"1e11"},"visibility":"internal"},{"constant":true,"id":4653,"mutability":"constant","name":"MAX_FEE_PERCENTAGE","nameLocation":"19896:18:31","nodeType":"VariableDeclaration","scope":4654,"src":"19879:48:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4651,"name":"uint256","nodeType":"ElementaryTypeName","src":"19879:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39392e39393939653136","id":4652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19917:10:31","typeDescriptions":{"typeIdentifier":"t_rational_999999000000000000_by_1","typeString":"int_const 999999000000000000"},"value":"99.9999e16"},"visibility":"internal"}],"src":"46:19895:31"},"id":31},"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol","exportedSymbols":{"Authentication":[5327],"BasePoolAuthentication":[4736],"IVault":[2893]},"id":4737,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4655,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:32"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":4657,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4737,"sourceUnit":2894,"src":"72:81:32","symbolAliases":[{"foreign":{"id":4656,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"81:6:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol","id":4659,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4737,"sourceUnit":5328,"src":"155:103:32","symbolAliases":[{"foreign":{"id":4658,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5327,"src":"164:14:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4661,"name":"Authentication","nameLocations":["393:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":5327,"src":"393:14:32"},"id":4662,"nodeType":"InheritanceSpecifier","src":"393:14:32"}],"canonicalName":"BasePoolAuthentication","contractDependencies":[],"contractKind":"contract","documentation":{"id":4660,"nodeType":"StructuredDocumentation","src":"260:89:32","text":"@dev Base contract for performing access control on external functions within pools."},"fullyImplemented":true,"id":4736,"linearizedBaseContracts":[4736,5327,130],"name":"BasePoolAuthentication","nameLocation":"367:22:32","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4665,"mutability":"immutable","name":"_vault","nameLocation":"439:6:32","nodeType":"VariableDeclaration","scope":4736,"src":"414:31:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":4664,"nodeType":"UserDefinedTypeName","pathNode":{"id":4663,"name":"IVault","nameLocations":["414:6:32"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"414:6:32"},"referencedDeclaration":2893,"src":"414:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":4690,"nodeType":"Block","src":"762:31:32","statements":[{"expression":{"id":4688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4686,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"772:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4687,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4669,"src":"781:5:32","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"src":"772:14:32","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":4689,"nodeType":"ExpressionStatement","src":"772:14:32"}]},"documentation":{"id":4666,"nodeType":"StructuredDocumentation","src":"452:211:32","text":" @dev Pools should use the pool factory as the disambiguator passed into the base Authentication contract.\n Otherwise, permissions would conflict if different pools reused function names."},"id":4691,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":4680,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4671,"src":"750:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"742:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4678,"name":"uint160","nodeType":"ElementaryTypeName","src":"742:7:32","typeDescriptions":{}}},"id":4681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"742:16:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"734:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4676,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:32","typeDescriptions":{}}},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:25:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"726:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4674,"name":"bytes32","nodeType":"ElementaryTypeName","src":"726:7:32","typeDescriptions":{}}},"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"726:34:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4684,"kind":"baseConstructorSpecifier","modifierName":{"id":4673,"name":"Authentication","nameLocations":["711:14:32"],"nodeType":"IdentifierPath","referencedDeclaration":5327,"src":"711:14:32"},"nodeType":"ModifierInvocation","src":"711:50:32"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4669,"mutability":"mutable","name":"vault","nameLocation":"687:5:32","nodeType":"VariableDeclaration","scope":4691,"src":"680:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":4668,"nodeType":"UserDefinedTypeName","pathNode":{"id":4667,"name":"IVault","nameLocations":["680:6:32"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"680:6:32"},"referencedDeclaration":2893,"src":"680:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":4671,"mutability":"mutable","name":"factory","nameLocation":"702:7:32","nodeType":"VariableDeclaration","scope":4691,"src":"694:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4670,"name":"address","nodeType":"ElementaryTypeName","src":"694:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"679:31:32"},"returnParameters":{"id":4685,"nodeType":"ParameterList","parameters":[],"src":"762:0:32"},"scope":4736,"src":"668:125:32","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[5326],"body":{"id":4713,"nodeType":"Block","src":"976:88:32","statements":[{"expression":{"arguments":[{"id":4705,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4693,"src":"1027:8:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4706,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"1037:4:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4709,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1051:4:32","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolAuthentication_$4736","typeString":"contract BasePoolAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePoolAuthentication_$4736","typeString":"contract BasePoolAuthentication"}],"id":4708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1043:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4707,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:32","typeDescriptions":{}}},"id":4710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1043:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4701,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"993:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":4702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1000:13:32","memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":4207,"src":"993:20:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$1316_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"993:22:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1016:10:32","memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":1315,"src":"993:33:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"993:64:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4700,"id":4712,"nodeType":"Return","src":"986:71:32"}]},"id":4714,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nameLocation":"894:11:32","nodeType":"FunctionDefinition","overrides":{"id":4697,"nodeType":"OverrideSpecifier","overrides":[],"src":"952:8:32"},"parameters":{"id":4696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4693,"mutability":"mutable","name":"actionId","nameLocation":"914:8:32","nodeType":"VariableDeclaration","scope":4714,"src":"906:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4692,"name":"bytes32","nodeType":"ElementaryTypeName","src":"906:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4695,"mutability":"mutable","name":"user","nameLocation":"932:4:32","nodeType":"VariableDeclaration","scope":4714,"src":"924:12:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4694,"name":"address","nodeType":"ElementaryTypeName","src":"924:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"905:32:32"},"returnParameters":{"id":4700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4699,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4714,"src":"970:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4698,"name":"bool","nodeType":"ElementaryTypeName","src":"970:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"969:6:32"},"scope":4736,"src":"885:179:32","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4734,"nodeType":"Block","src":"1170:83:32","statements":[{"expression":{"arguments":[{"id":4729,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4716,"src":"1221:8:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4730,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4718,"src":"1231:7:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4731,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"1240:5:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4725,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4665,"src":"1187:6:32","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":4726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1194:13:32","memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":4207,"src":"1187:20:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$1316_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":4727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1187:22:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1210:10:32","memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":1315,"src":"1187:33:32","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":4732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1187:59:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4724,"id":4733,"nodeType":"Return","src":"1180:66:32"}]},"id":4735,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nameLocation":"1079:11:32","nodeType":"FunctionDefinition","parameters":{"id":4721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4716,"mutability":"mutable","name":"actionId","nameLocation":"1099:8:32","nodeType":"VariableDeclaration","scope":4735,"src":"1091:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1091:7:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4718,"mutability":"mutable","name":"account","nameLocation":"1117:7:32","nodeType":"VariableDeclaration","scope":4735,"src":"1109:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4717,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4720,"mutability":"mutable","name":"where","nameLocation":"1134:5:32","nodeType":"VariableDeclaration","scope":4735,"src":"1126:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4719,"name":"address","nodeType":"ElementaryTypeName","src":"1126:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1090:50:32"},"returnParameters":{"id":4724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4735,"src":"1164:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4722,"name":"bool","nodeType":"ElementaryTypeName","src":"1164:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1163:6:32"},"scope":4736,"src":"1070:183:32","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4737,"src":"349:906:32","usedErrors":[121],"usedEvents":[]}],"src":"46:1210:32"},"id":32},"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol","exportedSymbols":{"BasePoolFactory":[5112],"Create2":[39982],"FactoryWidePauseWindow":[5577],"IBasePoolFactory":[1440],"IVault":[2893],"LiquidityManagement":[4362],"PoolRoleAccounts":[4459],"SingletonAuthentication":[18926],"TokenConfig":[4476]},"id":5113,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4738,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:33"},{"absolutePath":"@openzeppelin/contracts/utils/Create2.sol","file":"@openzeppelin/contracts/utils/Create2.sol","id":4740,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5113,"sourceUnit":39983,"src":"72:68:33","symbolAliases":[{"foreign":{"id":4739,"name":"Create2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39982,"src":"81:7:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol","id":4742,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5113,"sourceUnit":1441,"src":"142:101:33","symbolAliases":[{"foreign":{"id":4741,"name":"IBasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"151:16:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":4744,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5113,"sourceUnit":2894,"src":"244:81:33","symbolAliases":[{"foreign":{"id":4743,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"253:6:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":4748,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5113,"sourceUnit":4654,"src":"326:141:33","symbolAliases":[{"foreign":{"id":4745,"name":"TokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4476,"src":"339:11:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":4746,"name":"PoolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"356:16:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":4747,"name":"LiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"378:19:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol","id":4750,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5113,"sourceUnit":5578,"src":"469:119:33","symbolAliases":[{"foreign":{"id":4749,"name":"FactoryWidePauseWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"478:22:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol","file":"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol","id":4752,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5113,"sourceUnit":18927,"src":"589:104:33","symbolAliases":[{"foreign":{"id":4751,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18926,"src":"598:23:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4754,"name":"IBasePoolFactory","nameLocations":["2897:16:33"],"nodeType":"IdentifierPath","referencedDeclaration":1440,"src":"2897:16:33"},"id":4755,"nodeType":"InheritanceSpecifier","src":"2897:16:33"},{"baseName":{"id":4756,"name":"SingletonAuthentication","nameLocations":["2915:23:33"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"2915:23:33"},"id":4757,"nodeType":"InheritanceSpecifier","src":"2915:23:33"},{"baseName":{"id":4758,"name":"FactoryWidePauseWindow","nameLocations":["2940:22:33"],"nodeType":"IdentifierPath","referencedDeclaration":5577,"src":"2940:22:33"},"id":4759,"nodeType":"InheritanceSpecifier","src":"2940:22:33"}],"canonicalName":"BasePoolFactory","contractDependencies":[],"contractKind":"contract","documentation":{"id":4753,"nodeType":"StructuredDocumentation","src":"695:2164:33","text":" @notice Base contract for Pool factories.\n Pools are deployed from factories to allow third parties to more easily reason about them. Unknown Pools may have\n arbitrary logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts\n created by the factory) is very powerful.\n Note that in v3, the factory alone is not enough to ensure the safety of a pool. v3 pools can have arbitrary hook\n contracts, rate providers, complex tokens, and configuration that significantly impacts pool behavior. Specialty\n factories can be designed to limit their pools range of behavior (e.g., weighted 80/20 factories where the token\n count and weights are fixed).\n Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will\n become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently\n prevent the creation of any future pools from the factory.\n Use of factories is also important for security. Calls to `registerPool` or `initialize` made directly on the Vault\n could potentially be frontrun. In the case of registration, a DoS attack could register a pool with malicious\n parameters, causing the legitimate registration transaction to fail. The standard Balancer factories avoid this by\n deploying and registering in a single `create` function.\n It would also be possible to frontrun `initialize` (e.g., with unbalanced liquidity), and cause the intended\n initialization to fail. Like registration, initialization only happens once. The Balancer standard factories do not\n initialize on create, as this would be more complex (e.g., requiring token approvals), and it's very common for the\n deployment and funding to be performed from different accounts. Also, frontrunning `initialize` doesn't have serious\n consequences, beyond being a DoS.\n Nevertheless, this is a factor to consider when launching new pools. To avoid any possibility of frontrunning,\n the best practice would be to create (i.e., deploy and register) and initialize in the same transaction."},"fullyImplemented":true,"id":5112,"linearizedBaseContracts":[5112,5577,18926,5327,1440,130],"name":"BasePoolFactory","nameLocation":"2878:15:33","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4763,"mutability":"mutable","name":"_isPoolFromFactory","nameLocation":"3021:18:33","nodeType":"VariableDeclaration","scope":5112,"src":"2969:70:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4762,"keyName":"pool","keyNameLocation":"2985:4:33","keyType":{"id":4760,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2969:43:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"isFromFactory","valueNameLocation":"2998:13:33","valueType":{"id":4761,"name":"bool","nodeType":"ElementaryTypeName","src":"2993:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":4766,"mutability":"mutable","name":"_pools","nameLocation":"3063:6:33","nodeType":"VariableDeclaration","scope":5112,"src":"3045:24:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":4764,"name":"address","nodeType":"ElementaryTypeName","src":"3045:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4765,"nodeType":"ArrayTypeName","src":"3045:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"private"},{"constant":false,"id":4768,"mutability":"mutable","name":"_disabled","nameLocation":"3089:9:33","nodeType":"VariableDeclaration","scope":5112,"src":"3076:22:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4767,"name":"bool","nodeType":"ElementaryTypeName","src":"3076:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":4770,"mutability":"mutable","name":"_creationCode","nameLocation":"3192:13:33","nodeType":"VariableDeclaration","scope":5112,"src":"3178:27:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":4769,"name":"bytes","nodeType":"ElementaryTypeName","src":"3178:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"private"},{"documentation":{"id":4771,"nodeType":"StructuredDocumentation","src":"3212:83:33","text":"@notice A pool creator was specified for a pool from a Balancer core pool type."},"errorSelector":"61ee1764","id":4773,"name":"StandardPoolWithCreator","nameLocation":"3306:23:33","nodeType":"ErrorDefinition","parameters":{"id":4772,"nodeType":"ParameterList","parameters":[],"src":"3329:2:33"},"src":"3300:32:33"},{"body":{"id":4793,"nodeType":"Block","src":"3524:45:33","statements":[{"expression":{"id":4791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4789,"name":"_creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"3534:13:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4790,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4780,"src":"3550:12:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3534:28:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":4792,"nodeType":"ExpressionStatement","src":"3534:28:33"}]},"id":4794,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":4783,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4776,"src":"3473:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":4784,"kind":"baseConstructorSpecifier","modifierName":{"id":4782,"name":"SingletonAuthentication","nameLocations":["3449:23:33"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"3449:23:33"},"nodeType":"ModifierInvocation","src":"3449:30:33"},{"arguments":[{"id":4786,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4778,"src":"3503:19:33","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":4787,"kind":"baseConstructorSpecifier","modifierName":{"id":4785,"name":"FactoryWidePauseWindow","nameLocations":["3480:22:33"],"nodeType":"IdentifierPath","referencedDeclaration":5577,"src":"3480:22:33"},"nodeType":"ModifierInvocation","src":"3480:43:33"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4776,"mutability":"mutable","name":"vault","nameLocation":"3366:5:33","nodeType":"VariableDeclaration","scope":4794,"src":"3359:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":4775,"nodeType":"UserDefinedTypeName","pathNode":{"id":4774,"name":"IVault","nameLocations":["3359:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"3359:6:33"},"referencedDeclaration":2893,"src":"3359:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":4778,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"3388:19:33","nodeType":"VariableDeclaration","scope":4794,"src":"3381:26:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4777,"name":"uint32","nodeType":"ElementaryTypeName","src":"3381:6:33","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4780,"mutability":"mutable","name":"creationCode","nameLocation":"3430:12:33","nodeType":"VariableDeclaration","scope":4794,"src":"3417:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4779,"name":"bytes","nodeType":"ElementaryTypeName","src":"3417:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3349:99:33"},"returnParameters":{"id":4788,"nodeType":"ParameterList","parameters":[],"src":"3524:0:33"},"scope":5112,"src":"3338:231:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1395],"body":{"id":4806,"nodeType":"Block","src":"3682:48:33","statements":[{"expression":{"baseExpression":{"id":4802,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"3699:18:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4804,"indexExpression":{"id":4803,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4797,"src":"3718:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3699:24:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4801,"id":4805,"nodeType":"Return","src":"3692:31:33"}]},"documentation":{"id":4795,"nodeType":"StructuredDocumentation","src":"3575:32:33","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"6634b753","id":4807,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolFromFactory","nameLocation":"3621:17:33","nodeType":"FunctionDefinition","parameters":{"id":4798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4797,"mutability":"mutable","name":"pool","nameLocation":"3647:4:33","nodeType":"VariableDeclaration","scope":4807,"src":"3639:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4796,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3638:14:33"},"returnParameters":{"id":4801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4800,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4807,"src":"3676:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4799,"name":"bool","nodeType":"ElementaryTypeName","src":"3676:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3675:6:33"},"scope":5112,"src":"3612:118:33","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1401],"body":{"id":4816,"nodeType":"Block","src":"3829:37:33","statements":[{"expression":{"expression":{"id":4813,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"3846:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3853:6:33","memberName":"length","nodeType":"MemberAccess","src":"3846:13:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4812,"id":4815,"nodeType":"Return","src":"3839:20:33"}]},"documentation":{"id":4808,"nodeType":"StructuredDocumentation","src":"3736:32:33","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"8eec5d70","id":4817,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolCount","nameLocation":"3782:12:33","nodeType":"FunctionDefinition","parameters":{"id":4809,"nodeType":"ParameterList","parameters":[],"src":"3794:2:33"},"returnParameters":{"id":4812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4817,"src":"3820:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4810,"name":"uint256","nodeType":"ElementaryTypeName","src":"3820:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3819:9:33"},"scope":5112,"src":"3773:93:33","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1419],"body":{"id":4826,"nodeType":"Block","src":"3970:30:33","statements":[{"expression":{"id":4824,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"3987:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":4823,"id":4825,"nodeType":"Return","src":"3980:13:33"}]},"documentation":{"id":4818,"nodeType":"StructuredDocumentation","src":"3872:32:33","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"673a2a1f","id":4827,"implemented":true,"kind":"function","modifiers":[],"name":"getPools","nameLocation":"3918:8:33","nodeType":"FunctionDefinition","parameters":{"id":4819,"nodeType":"ParameterList","parameters":[],"src":"3926:2:33"},"returnParameters":{"id":4823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4827,"src":"3952:16:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4820,"name":"address","nodeType":"ElementaryTypeName","src":"3952:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4821,"nodeType":"ArrayTypeName","src":"3952:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3951:18:33"},"scope":5112,"src":"3909:91:33","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1412],"body":{"id":4898,"nodeType":"Block","src":"4145:472:33","statements":[{"assignments":[4839],"declarations":[{"constant":false,"id":4839,"mutability":"mutable","name":"length","nameLocation":"4163:6:33","nodeType":"VariableDeclaration","scope":4898,"src":"4155:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4838,"name":"uint256","nodeType":"ElementaryTypeName","src":"4155:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4842,"initialValue":{"expression":{"id":4840,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"4172:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4179:6:33","memberName":"length","nodeType":"MemberAccess","src":"4172:13:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4155:30:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4843,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4830,"src":"4199:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4844,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"4208:6:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4199:15:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4850,"nodeType":"IfStatement","src":"4195:71:33","trueBody":{"id":4849,"nodeType":"Block","src":"4216:50:33","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4846,"name":"IndexOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"4237:16:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4237:18:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4848,"nodeType":"RevertStatement","src":"4230:25:33"}]}},{"assignments":[4852],"declarations":[{"constant":false,"id":4852,"mutability":"mutable","name":"end","nameLocation":"4380:3:33","nodeType":"VariableDeclaration","scope":4898,"src":"4372:11:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4851,"name":"uint256","nodeType":"ElementaryTypeName","src":"4372:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4856,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4853,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4830,"src":"4386:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4854,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"4394:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4386:13:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4372:27:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4857,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4852,"src":"4413:3:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4858,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"4419:6:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4413:12:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4867,"nodeType":"IfStatement","src":"4409:65:33","trueBody":{"id":4866,"nodeType":"Block","src":"4427:47:33","statements":[{"expression":{"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4860,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"4441:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4861,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"4449:6:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4862,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4830,"src":"4458:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4449:14:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4441:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4865,"nodeType":"ExpressionStatement","src":"4441:22:33"}]}},{"expression":{"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4868,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4836,"src":"4484:5:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4872,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"4506:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4492:13:33","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":4869,"name":"address","nodeType":"ElementaryTypeName","src":"4496:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4870,"nodeType":"ArrayTypeName","src":"4496:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":4873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4492:20:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"4484:28:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4875,"nodeType":"ExpressionStatement","src":"4484:28:33"},{"body":{"id":4896,"nodeType":"Block","src":"4558:53:33","statements":[{"expression":{"id":4894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4886,"name":"pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4836,"src":"4572:5:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4888,"indexExpression":{"id":4887,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"4578:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4572:8:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4889,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"4583:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4893,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4890,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4830,"src":"4590:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4891,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"4598:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4590:9:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4583:17:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4572:28:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4895,"nodeType":"ExpressionStatement","src":"4572:28:33"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4880,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"4542:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4881,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4832,"src":"4546:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4542:9:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4897,"initializationExpression":{"assignments":[4877],"declarations":[{"constant":false,"id":4877,"mutability":"mutable","name":"i","nameLocation":"4535:1:33","nodeType":"VariableDeclaration","scope":4897,"src":"4527:9:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4876,"name":"uint256","nodeType":"ElementaryTypeName","src":"4527:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4879,"initialValue":{"hexValue":"30","id":4878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4539:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4527:13:33"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4553:3:33","subExpression":{"id":4883,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"4553:1:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4885,"nodeType":"ExpressionStatement","src":"4553:3:33"},"nodeType":"ForStatement","src":"4522:89:33"}]},"documentation":{"id":4828,"nodeType":"StructuredDocumentation","src":"4006:32:33","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"53a72f7e","id":4899,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolsInRange","nameLocation":"4052:15:33","nodeType":"FunctionDefinition","parameters":{"id":4833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4830,"mutability":"mutable","name":"start","nameLocation":"4076:5:33","nodeType":"VariableDeclaration","scope":4899,"src":"4068:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4829,"name":"uint256","nodeType":"ElementaryTypeName","src":"4068:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4832,"mutability":"mutable","name":"count","nameLocation":"4091:5:33","nodeType":"VariableDeclaration","scope":4899,"src":"4083:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4831,"name":"uint256","nodeType":"ElementaryTypeName","src":"4083:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4067:30:33"},"returnParameters":{"id":4837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4836,"mutability":"mutable","name":"pools","nameLocation":"4138:5:33","nodeType":"VariableDeclaration","scope":4899,"src":"4121:22:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4834,"name":"address","nodeType":"ElementaryTypeName","src":"4121:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4835,"nodeType":"ArrayTypeName","src":"4121:9:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4120:24:33"},"scope":5112,"src":"4043:574:33","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1435],"body":{"id":4907,"nodeType":"Block","src":"4709:33:33","statements":[{"expression":{"id":4905,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4768,"src":"4726:9:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4904,"id":4906,"nodeType":"Return","src":"4719:16:33"}]},"documentation":{"id":4900,"nodeType":"StructuredDocumentation","src":"4623:32:33","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"6c57f5a9","id":4908,"implemented":true,"kind":"function","modifiers":[],"name":"isDisabled","nameLocation":"4669:10:33","nodeType":"FunctionDefinition","parameters":{"id":4901,"nodeType":"ParameterList","parameters":[],"src":"4679:2:33"},"returnParameters":{"id":4904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4908,"src":"4703:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4902,"name":"bool","nodeType":"ElementaryTypeName","src":"4703:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4702:6:33"},"scope":5112,"src":"4660:82:33","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1429],"body":{"id":4944,"nodeType":"Block","src":"4889:275:33","statements":[{"assignments":[4919],"declarations":[{"constant":false,"id":4919,"mutability":"mutable","name":"creationCode","nameLocation":"4912:12:33","nodeType":"VariableDeclaration","scope":4944,"src":"4899:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4918,"name":"bytes","nodeType":"ElementaryTypeName","src":"4899:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4925,"initialValue":{"arguments":[{"id":4922,"name":"_creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"4944:13:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"id":4923,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4911,"src":"4959:15:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4920,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4927:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4931:12:33","memberName":"encodePacked","nodeType":"MemberAccess","src":"4927:16:33","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4927:48:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4899:76:33"},{"assignments":[4927],"declarations":[{"constant":false,"id":4927,"mutability":"mutable","name":"creationCodeHash","nameLocation":"4993:16:33","nodeType":"VariableDeclaration","scope":4944,"src":"4985:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4985:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4931,"initialValue":{"arguments":[{"id":4929,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"5022:12:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4928,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5012:9:33","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5012:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4985:50:33"},{"assignments":[4933],"declarations":[{"constant":false,"id":4933,"mutability":"mutable","name":"finalSalt","nameLocation":"5053:9:33","nodeType":"VariableDeclaration","scope":4944,"src":"5045:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4932,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5045:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4937,"initialValue":{"arguments":[{"id":4935,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4913,"src":"5083:4:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4934,"name":"_computeFinalSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5018,"src":"5065:17:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5065:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5045:43:33"},{"expression":{"arguments":[{"id":4940,"name":"finalSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"5129:9:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4941,"name":"creationCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"5140:16:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4938,"name":"Create2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39982,"src":"5106:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Create2_$39982_$","typeString":"type(library Create2)"}},"id":4939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5114:14:33","memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":39967,"src":"5106:22:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,bytes32) view returns (address)"}},"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5106:51:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4917,"id":4943,"nodeType":"Return","src":"5099:58:33"}]},"documentation":{"id":4909,"nodeType":"StructuredDocumentation","src":"4748:32:33","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"44f6fec7","id":4945,"implemented":true,"kind":"function","modifiers":[],"name":"getDeploymentAddress","nameLocation":"4794:20:33","nodeType":"FunctionDefinition","parameters":{"id":4914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4911,"mutability":"mutable","name":"constructorArgs","nameLocation":"4828:15:33","nodeType":"VariableDeclaration","scope":4945,"src":"4815:28:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4910,"name":"bytes","nodeType":"ElementaryTypeName","src":"4815:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4913,"mutability":"mutable","name":"salt","nameLocation":"4853:4:33","nodeType":"VariableDeclaration","scope":4945,"src":"4845:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4912,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4845:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4814:44:33"},"returnParameters":{"id":4917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4945,"src":"4880:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4915,"name":"address","nodeType":"ElementaryTypeName","src":"4880:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4879:9:33"},"scope":5112,"src":"4785:379:33","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1439],"body":{"id":4961,"nodeType":"Block","src":"5248:93:33","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4951,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"5258:14:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5258:16:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4953,"nodeType":"ExpressionStatement","src":"5258:16:33"},{"expression":{"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4954,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4768,"src":"5285:9:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5297:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5285:16:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4957,"nodeType":"ExpressionStatement","src":"5285:16:33"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4958,"name":"FactoryDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"5317:15:33","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5317:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4960,"nodeType":"EmitStatement","src":"5312:22:33"}]},"documentation":{"id":4946,"nodeType":"StructuredDocumentation","src":"5170:32:33","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"2f2770db","id":4962,"implemented":true,"kind":"function","modifiers":[{"id":4949,"kind":"modifierInvocation","modifierName":{"id":4948,"name":"authenticate","nameLocations":["5235:12:33"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"5235:12:33"},"nodeType":"ModifierInvocation","src":"5235:12:33"}],"name":"disable","nameLocation":"5216:7:33","nodeType":"FunctionDefinition","parameters":{"id":4947,"nodeType":"ParameterList","parameters":[],"src":"5223:2:33"},"returnParameters":{"id":4950,"nodeType":"ParameterList","parameters":[],"src":"5248:0:33"},"scope":5112,"src":"5207:134:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4972,"nodeType":"Block","src":"5387:76:33","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":4965,"name":"isDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4908,"src":"5401:10:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":4966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5401:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4971,"nodeType":"IfStatement","src":"5397:60:33","trueBody":{"id":4970,"nodeType":"Block","src":"5415:42:33","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4967,"name":"Disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"5436:8:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5436:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4969,"nodeType":"RevertStatement","src":"5429:17:33"}]}}]},"id":4973,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureEnabled","nameLocation":"5356:14:33","nodeType":"FunctionDefinition","parameters":{"id":4963,"nodeType":"ParameterList","parameters":[],"src":"5370:2:33"},"returnParameters":{"id":4964,"nodeType":"ParameterList","parameters":[],"src":"5387:0:33"},"scope":5112,"src":"5347:116:33","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4997,"nodeType":"Block","src":"5534:135:33","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4978,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"5544:14:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5544:16:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4980,"nodeType":"ExpressionStatement","src":"5544:16:33"},{"expression":{"id":4985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4981,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"5571:18:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4983,"indexExpression":{"id":4982,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4975,"src":"5590:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5571:24:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5598:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5571:31:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4986,"nodeType":"ExpressionStatement","src":"5571:31:33"},{"expression":{"arguments":[{"id":4990,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4975,"src":"5624:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4987,"name":"_pools","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"5612:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":4989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5619:4:33","memberName":"push","nodeType":"MemberAccess","src":"5612:11:33","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5612:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4992,"nodeType":"ExpressionStatement","src":"5612:17:33"},{"eventCall":{"arguments":[{"id":4994,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4975,"src":"5657:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4993,"name":"PoolCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"5645:11:33","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5645:17:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4996,"nodeType":"EmitStatement","src":"5640:22:33"}]},"id":4998,"implemented":true,"kind":"function","modifiers":[],"name":"_registerPoolWithFactory","nameLocation":"5478:24:33","nodeType":"FunctionDefinition","parameters":{"id":4976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4975,"mutability":"mutable","name":"pool","nameLocation":"5511:4:33","nodeType":"VariableDeclaration","scope":4998,"src":"5503:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4974,"name":"address","nodeType":"ElementaryTypeName","src":"5503:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5502:14:33"},"returnParameters":{"id":4977,"nodeType":"ParameterList","parameters":[],"src":"5534:0:33"},"scope":5112,"src":"5469:200:33","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5017,"nodeType":"Block","src":"6082:78:33","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":5009,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6120:3:33","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6124:6:33","memberName":"sender","nodeType":"MemberAccess","src":"6120:10:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5011,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6132:5:33","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6138:7:33","memberName":"chainid","nodeType":"MemberAccess","src":"6132:13:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5013,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"6147:4:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":5007,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6109:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6113:6:33","memberName":"encode","nodeType":"MemberAccess","src":"6109:10:33","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6109:43:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5006,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6099:9:33","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6099:54:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5005,"id":5016,"nodeType":"Return","src":"6092:61:33"}]},"documentation":{"id":4999,"nodeType":"StructuredDocumentation","src":"5675:321:33","text":" @dev Factories that require a custom-calculated salt can override to replace this default salt processing.\n By default, the pool address determinants include the sender and chain id, as well as the user-provided salt,\n so contracts will generally not have the same address on different L2s."},"id":5018,"implemented":true,"kind":"function","modifiers":[],"name":"_computeFinalSalt","nameLocation":"6010:17:33","nodeType":"FunctionDefinition","parameters":{"id":5002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5001,"mutability":"mutable","name":"salt","nameLocation":"6036:4:33","nodeType":"VariableDeclaration","scope":5018,"src":"6028:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5000,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6028:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6027:14:33"},"returnParameters":{"id":5005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5018,"src":"6073:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5003,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6073:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6072:9:33"},"scope":5112,"src":"6001:159:33","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5054,"nodeType":"Block","src":"6259:246:33","statements":[{"assignments":[5028],"declarations":[{"constant":false,"id":5028,"mutability":"mutable","name":"creationCode","nameLocation":"6282:12:33","nodeType":"VariableDeclaration","scope":5054,"src":"6269:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5027,"name":"bytes","nodeType":"ElementaryTypeName","src":"6269:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5034,"initialValue":{"arguments":[{"id":5031,"name":"_creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"6314:13:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"id":5032,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5020,"src":"6329:15:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5029,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6297:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6301:12:33","memberName":"encodePacked","nodeType":"MemberAccess","src":"6297:16:33","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6297:48:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6269:76:33"},{"assignments":[5036],"declarations":[{"constant":false,"id":5036,"mutability":"mutable","name":"finalSalt","nameLocation":"6363:9:33","nodeType":"VariableDeclaration","scope":5054,"src":"6355:17:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6355:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5040,"initialValue":{"arguments":[{"id":5038,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5022,"src":"6393:4:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5037,"name":"_computeFinalSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5018,"src":"6375:17:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6375:23:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6355:43:33"},{"expression":{"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5041,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"6408:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":5044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6430:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":5045,"name":"finalSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"6433:9:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5046,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"6444:12:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5042,"name":"Create2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39982,"src":"6415:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Create2_$39982_$","typeString":"type(library Create2)"}},"id":5043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6423:6:33","memberName":"deploy","nodeType":"MemberAccess","referencedDeclaration":39947,"src":"6415:14:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (uint256,bytes32,bytes memory) returns (address)"}},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6415:42:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6408:49:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5049,"nodeType":"ExpressionStatement","src":"6408:49:33"},{"expression":{"arguments":[{"id":5051,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"6493:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5050,"name":"_registerPoolWithFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"6468:24:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":5052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6468:30:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5053,"nodeType":"ExpressionStatement","src":"6468:30:33"}]},"id":5055,"implemented":true,"kind":"function","modifiers":[],"name":"_create","nameLocation":"6175:7:33","nodeType":"FunctionDefinition","parameters":{"id":5023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5020,"mutability":"mutable","name":"constructorArgs","nameLocation":"6196:15:33","nodeType":"VariableDeclaration","scope":5055,"src":"6183:28:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5019,"name":"bytes","nodeType":"ElementaryTypeName","src":"6183:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5022,"mutability":"mutable","name":"salt","nameLocation":"6221:4:33","nodeType":"VariableDeclaration","scope":5055,"src":"6213:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6213:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6182:44:33"},"returnParameters":{"id":5026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5025,"mutability":"mutable","name":"pool","nameLocation":"6253:4:33","nodeType":"VariableDeclaration","scope":5055,"src":"6245:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5024,"name":"address","nodeType":"ElementaryTypeName","src":"6245:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6244:14:33"},"scope":5112,"src":"6166:339:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5090,"nodeType":"Block","src":"6821:284:33","statements":[{"expression":{"arguments":[{"id":5079,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"6868:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5080,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5061,"src":"6886:6:33","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":5081,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5063,"src":"6906:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5082,"name":"getNewPoolPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"6937:28:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":5083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6937:30:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5084,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5065,"src":"6981:17:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5085,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5068,"src":"7012:12:33","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":5086,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5070,"src":"7038:17:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5087,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"7069:19:33","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5076,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18870,"src":"6831:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view returns (contract IVault)"}},"id":5077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6831:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":5078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6842:12:33","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"6831:23:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":5088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6831:267:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5089,"nodeType":"ExpressionStatement","src":"6831:267:33"}]},"id":5091,"implemented":true,"kind":"function","modifiers":[],"name":"_registerPoolWithVault","nameLocation":"6520:22:33","nodeType":"FunctionDefinition","parameters":{"id":5074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"pool","nameLocation":"6560:4:33","nodeType":"VariableDeclaration","scope":5091,"src":"6552:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5056,"name":"address","nodeType":"ElementaryTypeName","src":"6552:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5061,"mutability":"mutable","name":"tokens","nameLocation":"6595:6:33","nodeType":"VariableDeclaration","scope":5091,"src":"6574:27:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":5059,"nodeType":"UserDefinedTypeName","pathNode":{"id":5058,"name":"TokenConfig","nameLocations":["6574:11:33"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"6574:11:33"},"referencedDeclaration":4476,"src":"6574:11:33","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":5060,"nodeType":"ArrayTypeName","src":"6574:13:33","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":5063,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"6619:17:33","nodeType":"VariableDeclaration","scope":5091,"src":"6611:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5062,"name":"uint256","nodeType":"ElementaryTypeName","src":"6611:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5065,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"6651:17:33","nodeType":"VariableDeclaration","scope":5091,"src":"6646:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5064,"name":"bool","nodeType":"ElementaryTypeName","src":"6646:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5068,"mutability":"mutable","name":"roleAccounts","nameLocation":"6702:12:33","nodeType":"VariableDeclaration","scope":5091,"src":"6678:36:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":5067,"nodeType":"UserDefinedTypeName","pathNode":{"id":5066,"name":"PoolRoleAccounts","nameLocations":["6678:16:33"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"6678:16:33"},"referencedDeclaration":4459,"src":"6678:16:33","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":5070,"mutability":"mutable","name":"poolHooksContract","nameLocation":"6732:17:33","nodeType":"VariableDeclaration","scope":5091,"src":"6724:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5069,"name":"address","nodeType":"ElementaryTypeName","src":"6724:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5073,"mutability":"mutable","name":"liquidityManagement","nameLocation":"6786:19:33","nodeType":"VariableDeclaration","scope":5091,"src":"6759:46:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":5072,"nodeType":"UserDefinedTypeName","pathNode":{"id":5071,"name":"LiquidityManagement","nameLocations":["6759:19:33"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"6759:19:33"},"referencedDeclaration":4362,"src":"6759:19:33","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"6542:269:33"},"returnParameters":{"id":5075,"nodeType":"ParameterList","parameters":[],"src":"6821:0:33"},"scope":5112,"src":"6511:594:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5102,"nodeType":"Block","src":"7294:34:33","statements":[{"expression":{"arguments":[{"hexValue":"30","id":5099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7319:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7311:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5097,"name":"address","nodeType":"ElementaryTypeName","src":"7311:7:33","typeDescriptions":{}}},"id":5100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7311:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5096,"id":5101,"nodeType":"Return","src":"7304:17:33"}]},"documentation":{"id":5092,"nodeType":"StructuredDocumentation","src":"7111:109:33","text":"@notice A common place to retrieve a default hooks contract. Currently set to address(0) (i.e. no hooks)."},"functionSelector":"ec888061","id":5103,"implemented":true,"kind":"function","modifiers":[],"name":"getDefaultPoolHooksContract","nameLocation":"7234:27:33","nodeType":"FunctionDefinition","parameters":{"id":5093,"nodeType":"ParameterList","parameters":[],"src":"7261:2:33"},"returnParameters":{"id":5096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5103,"src":"7285:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5094,"name":"address","nodeType":"ElementaryTypeName","src":"7285:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7284:9:33"},"scope":5112,"src":"7225:103:33","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":5110,"nodeType":"Block","src":"7748:64:33","statements":[]},"documentation":{"id":5104,"nodeType":"StructuredDocumentation","src":"7334:299:33","text":" @notice Convenience function for constructing a LiquidityManagement object.\n @dev Users can call this to create a structure with all false arguments, then set the ones they need to true.\n @return liquidityManagement Liquidity management flags, all initialized to false"},"functionSelector":"193ad50f","id":5111,"implemented":true,"kind":"function","modifiers":[],"name":"getDefaultLiquidityManagement","nameLocation":"7647:29:33","nodeType":"FunctionDefinition","parameters":{"id":5105,"nodeType":"ParameterList","parameters":[],"src":"7676:2:33"},"returnParameters":{"id":5109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5108,"mutability":"mutable","name":"liquidityManagement","nameLocation":"7727:19:33","nodeType":"VariableDeclaration","scope":5111,"src":"7700:46:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":5107,"nodeType":"UserDefinedTypeName","pathNode":{"id":5106,"name":"LiquidityManagement","nameLocations":["7700:19:33"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"7700:19:33"},"referencedDeclaration":4362,"src":"7700:19:33","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"7699:48:33"},"scope":5112,"src":"7638:174:33","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":5113,"src":"2860:4954:33","usedErrors":[121,1384,1387,4773,5510],"usedEvents":[1378,1381]}],"src":"46:7769:33"},"id":33},"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol":{"ast":{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol","exportedSymbols":{"IERC20":[39274],"IPoolInfo":[54],"IVault":[2893],"PoolConfig":[4387],"PoolInfo":[5247],"TokenInfo":[4486]},"id":5248,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5114,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:34"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":5116,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5248,"sourceUnit":39275,"src":"72:72:34","symbolAliases":[{"foreign":{"id":5115,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":5119,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5248,"sourceUnit":4654,"src":"146:100:34","symbolAliases":[{"foreign":{"id":5117,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"155:9:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5118,"name":"PoolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4387,"src":"166:10:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol","file":"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol","id":5121,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5248,"sourceUnit":55,"src":"247:92:34","symbolAliases":[{"foreign":{"id":5120,"name":"IPoolInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"256:9:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":5123,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5248,"sourceUnit":2894,"src":"340:81:34","symbolAliases":[{"foreign":{"id":5122,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"349:6:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5125,"name":"IPoolInfo","nameLocations":["660:9:34"],"nodeType":"IdentifierPath","referencedDeclaration":54,"src":"660:9:34"},"id":5126,"nodeType":"InheritanceSpecifier","src":"660:9:34"}],"canonicalName":"PoolInfo","contractDependencies":[],"contractKind":"contract","documentation":{"id":5124,"nodeType":"StructuredDocumentation","src":"423:215:34","text":" @notice Standard implementation of the `IPoolInfo` interface.\n @dev Balancer standard pools inherit from this optional interface to provide a standard off-chain interface for\n commonly requested data."},"fullyImplemented":true,"id":5247,"linearizedBaseContracts":[5247,54],"name":"PoolInfo","nameLocation":"648:8:34","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5129,"mutability":"immutable","name":"_vault","nameLocation":"701:6:34","nodeType":"VariableDeclaration","scope":5247,"src":"676:31:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":5128,"nodeType":"UserDefinedTypeName","pathNode":{"id":5127,"name":"IVault","nameLocations":["676:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"676:6:34"},"referencedDeclaration":2893,"src":"676:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":5139,"nodeType":"Block","src":"740:31:34","statements":[{"expression":{"id":5137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5135,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"750:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5136,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5132,"src":"759:5:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"src":"750:14:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":5138,"nodeType":"ExpressionStatement","src":"750:14:34"}]},"id":5140,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5132,"mutability":"mutable","name":"vault","nameLocation":"733:5:34","nodeType":"VariableDeclaration","scope":5140,"src":"726:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":5131,"nodeType":"UserDefinedTypeName","pathNode":{"id":5130,"name":"IVault","nameLocations":["726:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"726:6:34"},"referencedDeclaration":2893,"src":"726:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"725:14:34"},"returnParameters":{"id":5134,"nodeType":"ParameterList","parameters":[],"src":"740:0:34"},"scope":5247,"src":"714:57:34","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[14],"body":{"id":5156,"nodeType":"Block","src":"875:59:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":5152,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"921:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}],"id":5151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"913:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5150,"name":"address","nodeType":"ElementaryTypeName","src":"913:7:34","typeDescriptions":{}}},"id":5153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"913:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5148,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"892:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"899:13:34","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"892:20:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":5154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"892:35:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":5147,"id":5155,"nodeType":"Return","src":"885:42:34"}]},"documentation":{"id":5141,"nodeType":"StructuredDocumentation","src":"777:25:34","text":"@inheritdoc IPoolInfo"},"functionSelector":"aa6ca808","id":5157,"implemented":true,"kind":"function","modifiers":[],"name":"getTokens","nameLocation":"816:9:34","nodeType":"FunctionDefinition","parameters":{"id":5142,"nodeType":"ParameterList","parameters":[],"src":"825:2:34"},"returnParameters":{"id":5147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5146,"mutability":"mutable","name":"tokens","nameLocation":"867:6:34","nodeType":"VariableDeclaration","scope":5157,"src":"851:22:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5144,"nodeType":"UserDefinedTypeName","pathNode":{"id":5143,"name":"IERC20","nameLocations":["851:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"851:6:34"},"referencedDeclaration":39274,"src":"851:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5145,"nodeType":"ArrayTypeName","src":"851:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"850:24:34"},"scope":5247,"src":"807:127:34","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[32],"body":{"id":5183,"nodeType":"Block","src":"1230:62:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":5179,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1279:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}],"id":5178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1271:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5177,"name":"address","nodeType":"ElementaryTypeName","src":"1271:7:34","typeDescriptions":{}}},"id":5180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1271:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5175,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"1247:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1254:16:34","memberName":"getPoolTokenInfo","nodeType":"MemberAccess","referencedDeclaration":3968,"src":"1247:23:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"id":5181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1247:38:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"functionReturnParameters":5174,"id":5182,"nodeType":"Return","src":"1240:45:34"}]},"documentation":{"id":5158,"nodeType":"StructuredDocumentation","src":"940:25:34","text":"@inheritdoc IPoolInfo"},"functionSelector":"abb1dc44","id":5184,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenInfo","nameLocation":"979:12:34","nodeType":"FunctionDefinition","parameters":{"id":5159,"nodeType":"ParameterList","parameters":[],"src":"991:2:34"},"returnParameters":{"id":5174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5163,"mutability":"mutable","name":"tokens","nameLocation":"1070:6:34","nodeType":"VariableDeclaration","scope":5184,"src":"1054:22:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5161,"nodeType":"UserDefinedTypeName","pathNode":{"id":5160,"name":"IERC20","nameLocations":["1054:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1054:6:34"},"referencedDeclaration":39274,"src":"1054:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5162,"nodeType":"ArrayTypeName","src":"1054:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":5167,"mutability":"mutable","name":"tokenInfo","nameLocation":"1109:9:34","nodeType":"VariableDeclaration","scope":5184,"src":"1090:28:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo[]"},"typeName":{"baseType":{"id":5165,"nodeType":"UserDefinedTypeName","pathNode":{"id":5164,"name":"TokenInfo","nameLocations":["1090:9:34"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"1090:9:34"},"referencedDeclaration":4486,"src":"1090:9:34","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":5166,"nodeType":"ArrayTypeName","src":"1090:11:34","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}},"visibility":"internal"},{"constant":false,"id":5170,"mutability":"mutable","name":"balancesRaw","nameLocation":"1149:11:34","nodeType":"VariableDeclaration","scope":5184,"src":"1132:28:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5168,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5169,"nodeType":"ArrayTypeName","src":"1132:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":5173,"mutability":"mutable","name":"lastBalancesLiveScaled18","nameLocation":"1191:24:34","nodeType":"VariableDeclaration","scope":5184,"src":"1174:41:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5171,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5172,"nodeType":"ArrayTypeName","src":"1174:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1040:185:34"},"scope":5247,"src":"970:322:34","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[39],"body":{"id":5199,"nodeType":"Block","src":"1424:68:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":5195,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1479:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}],"id":5194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1471:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5193,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:34","typeDescriptions":{}}},"id":5196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1471:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5191,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"1441:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":5192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1448:22:34","memberName":"getCurrentLiveBalances","nodeType":"MemberAccess","referencedDeclaration":3977,"src":"1441:29:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (uint256[] memory)"}},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1441:44:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":5190,"id":5198,"nodeType":"Return","src":"1434:51:34"}]},"documentation":{"id":5185,"nodeType":"StructuredDocumentation","src":"1298:25:34","text":"@inheritdoc IPoolInfo"},"functionSelector":"b156aa0a","id":5200,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentLiveBalances","nameLocation":"1337:22:34","nodeType":"FunctionDefinition","parameters":{"id":5186,"nodeType":"ParameterList","parameters":[],"src":"1359:2:34"},"returnParameters":{"id":5190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5189,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"1402:20:34","nodeType":"VariableDeclaration","scope":5200,"src":"1385:37:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5187,"name":"uint256","nodeType":"ElementaryTypeName","src":"1385:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5188,"nodeType":"ArrayTypeName","src":"1385:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1384:39:34"},"scope":5247,"src":"1328:164:34","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[45],"body":{"id":5215,"nodeType":"Block","src":"1598:74:34","statements":[{"expression":{"arguments":[{"components":[{"arguments":[{"id":5210,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1658:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}],"id":5209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1650:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5208,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:34","typeDescriptions":{}}},"id":5211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1650:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1649:15:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5206,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"1615:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1622:26:34","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4115,"src":"1615:33:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":5213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1615:50:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5205,"id":5214,"nodeType":"Return","src":"1608:57:34"}]},"documentation":{"id":5201,"nodeType":"StructuredDocumentation","src":"1498:25:34","text":"@inheritdoc IPoolInfo"},"functionSelector":"d335b0cf","id":5216,"implemented":true,"kind":"function","modifiers":[],"name":"getStaticSwapFeePercentage","nameLocation":"1537:26:34","nodeType":"FunctionDefinition","parameters":{"id":5202,"nodeType":"ParameterList","parameters":[],"src":"1563:2:34"},"returnParameters":{"id":5205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5216,"src":"1589:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1588:9:34"},"scope":5247,"src":"1528:144:34","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[53],"body":{"id":5245,"nodeType":"Block","src":"1870:238:34","statements":[{"assignments":[5226],"declarations":[{"constant":false,"id":5226,"mutability":"mutable","name":"poolConfig","nameLocation":"1898:10:34","nodeType":"VariableDeclaration","scope":5245,"src":"1880:28:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig"},"typeName":{"id":5225,"nodeType":"UserDefinedTypeName","pathNode":{"id":5224,"name":"PoolConfig","nameLocations":["1880:10:34"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"1880:10:34"},"referencedDeclaration":4387,"src":"1880:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_storage_ptr","typeString":"struct PoolConfig"}},"visibility":"internal"}],"id":5234,"initialValue":{"arguments":[{"arguments":[{"id":5231,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1940:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolInfo_$5247","typeString":"contract PoolInfo"}],"id":5230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1932:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5229,"name":"address","nodeType":"ElementaryTypeName","src":"1932:7:34","typeDescriptions":{}}},"id":5232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1932:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5227,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"1911:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":5228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1918:13:34","memberName":"getPoolConfig","nodeType":"MemberAccess","referencedDeclaration":3986,"src":"1911:20:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_PoolConfig_$4387_memory_ptr_$","typeString":"function (address) view external returns (struct PoolConfig memory)"}},"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1911:35:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"1880:66:34"},{"expression":{"id":5238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5235,"name":"aggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5220,"src":"1957:26:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5236,"name":"poolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"1986:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":5237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1997:26:34","memberName":"aggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4372,"src":"1986:37:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1957:66:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5239,"nodeType":"ExpressionStatement","src":"1957:66:34"},{"expression":{"id":5243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5240,"name":"aggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5222,"src":"2033:27:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5241,"name":"poolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5226,"src":"2063:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":5242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2074:27:34","memberName":"aggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4374,"src":"2063:38:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2033:68:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5244,"nodeType":"ExpressionStatement","src":"2033:68:34"}]},"documentation":{"id":5217,"nodeType":"StructuredDocumentation","src":"1678:25:34","text":"@inheritdoc IPoolInfo"},"functionSelector":"81fa807c","id":5246,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregateFeePercentages","nameLocation":"1717:26:34","nodeType":"FunctionDefinition","parameters":{"id":5218,"nodeType":"ParameterList","parameters":[],"src":"1743:2:34"},"returnParameters":{"id":5223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5220,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"1801:26:34","nodeType":"VariableDeclaration","scope":5246,"src":"1793:34:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5219,"name":"uint256","nodeType":"ElementaryTypeName","src":"1793:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5222,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"1837:27:34","nodeType":"VariableDeclaration","scope":5246,"src":"1829:35:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5221,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1792:73:34"},"scope":5247,"src":"1708:400:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5248,"src":"639:1471:34","usedErrors":[],"usedEvents":[]}],"src":"46:2065:34"},"id":34},"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol","exportedSymbols":{"Authentication":[5327],"IAuthentication":[130]},"id":5328,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5249,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:35"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":5251,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5328,"sourceUnit":131,"src":"72:116:35","symbolAliases":[{"foreign":{"id":5250,"name":"IAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"81:15:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5253,"name":"IAuthentication","nameLocations":["625:15:35"],"nodeType":"IdentifierPath","referencedDeclaration":130,"src":"625:15:35"},"id":5254,"nodeType":"InheritanceSpecifier","src":"625:15:35"}],"canonicalName":"Authentication","contractDependencies":[],"contractKind":"contract","documentation":{"id":5252,"nodeType":"StructuredDocumentation","src":"190:398:35","text":" @notice Building block for performing access control on external functions.\n @dev This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be\n applied to external functions to make them only callable by authorized accounts.\n Derived contracts must implement the `_canPerform` function, which holds the actual access control logic."},"fullyImplemented":false,"id":5327,"linearizedBaseContracts":[5327,130],"name":"Authentication","nameLocation":"607:14:35","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":5256,"mutability":"immutable","name":"_actionIdDisambiguator","nameLocation":"673:22:35","nodeType":"VariableDeclaration","scope":5327,"src":"647:48:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":5266,"nodeType":"Block","src":"1337:63:35","statements":[{"expression":{"id":5264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5262,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5256,"src":"1347:22:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5263,"name":"actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5259,"src":"1372:21:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1347:46:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5265,"nodeType":"ExpressionStatement","src":"1347:46:35"}]},"documentation":{"id":5257,"nodeType":"StructuredDocumentation","src":"702:587:35","text":" @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n multi-contract systems.\n There are two main uses for it:\n - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n unique. The contract's own address is a good option.\n - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n shared by the entire family (and no other contract) should be used instead."},"id":5267,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5259,"mutability":"mutable","name":"actionIdDisambiguator","nameLocation":"1314:21:35","nodeType":"VariableDeclaration","scope":5267,"src":"1306:29:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5258,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1306:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1305:31:35"},"returnParameters":{"id":5261,"nodeType":"ParameterList","parameters":[],"src":"1337:0:35"},"scope":5327,"src":"1294:106:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5274,"nodeType":"Block","src":"1549:49:35","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":5270,"name":"_authenticateCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"1559:19:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":5271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:21:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5272,"nodeType":"ExpressionStatement","src":"1559:21:35"},{"id":5273,"nodeType":"PlaceholderStatement","src":"1590:1:35"}]},"documentation":{"id":5268,"nodeType":"StructuredDocumentation","src":"1406:114:35","text":"@dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions."},"id":5275,"name":"authenticate","nameLocation":"1534:12:35","nodeType":"ModifierDefinition","parameters":{"id":5269,"nodeType":"ParameterList","parameters":[],"src":"1546:2:35"},"src":"1525:73:35","virtual":false,"visibility":"internal"},{"body":{"id":5297,"nodeType":"Block","src":"1733:156:35","statements":[{"assignments":[5280],"declarations":[{"constant":false,"id":5280,"mutability":"mutable","name":"actionId","nameLocation":"1751:8:35","nodeType":"VariableDeclaration","scope":5297,"src":"1743:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5279,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1743:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5285,"initialValue":{"arguments":[{"expression":{"id":5282,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1774:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1778:3:35","memberName":"sig","nodeType":"MemberAccess","src":"1774:7:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5281,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5316,"src":"1762:11:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":5284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1762:20:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1743:39:35"},{"condition":{"id":5291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1797:34:35","subExpression":{"arguments":[{"id":5287,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5280,"src":"1810:8:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":5288,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1820:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1824:6:35","memberName":"sender","nodeType":"MemberAccess","src":"1820:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5286,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5326,"src":"1798:11:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":5290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1798:33:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5296,"nodeType":"IfStatement","src":"1793:90:35","trueBody":{"id":5295,"nodeType":"Block","src":"1833:50:35","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5292,"name":"SenderNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121,"src":"1854:16:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1854:18:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5294,"nodeType":"RevertStatement","src":"1847:25:35"}]}}]},"documentation":{"id":5276,"nodeType":"StructuredDocumentation","src":"1604:79:35","text":"@dev Reverts unless the caller is allowed to call the entry point function."},"id":5298,"implemented":true,"kind":"function","modifiers":[],"name":"_authenticateCaller","nameLocation":"1697:19:35","nodeType":"FunctionDefinition","parameters":{"id":5277,"nodeType":"ParameterList","parameters":[],"src":"1716:2:35"},"returnParameters":{"id":5278,"nodeType":"ParameterList","parameters":[],"src":"1733:0:35"},"scope":5327,"src":"1688:201:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[129],"body":{"id":5315,"nodeType":"Block","src":"2008:353:35","statements":[{"expression":{"arguments":[{"arguments":[{"id":5310,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5256,"src":"2320:22:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5311,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"2344:8:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":5308,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2303:3:35","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2307:12:35","memberName":"encodePacked","nodeType":"MemberAccess","src":"2303:16:35","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2303:50:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5307,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2293:9:35","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2293:61:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5306,"id":5314,"nodeType":"Return","src":"2286:68:35"}]},"documentation":{"id":5299,"nodeType":"StructuredDocumentation","src":"1895:31:35","text":"@inheritdoc IAuthentication"},"functionSelector":"851c1bb3","id":5316,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nameLocation":"1940:11:35","nodeType":"FunctionDefinition","overrides":{"id":5303,"nodeType":"OverrideSpecifier","overrides":[],"src":"1981:8:35"},"parameters":{"id":5302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5301,"mutability":"mutable","name":"selector","nameLocation":"1959:8:35","nodeType":"VariableDeclaration","scope":5316,"src":"1952:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5300,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1952:6:35","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1951:17:35"},"returnParameters":{"id":5306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5316,"src":"1999:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1999:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1998:9:35"},"scope":5327,"src":"1931:430:35","stateMutability":"view","virtual":false,"visibility":"public"},{"documentation":{"id":5317,"nodeType":"StructuredDocumentation","src":"2367:304:35","text":" @dev Derived contracts must implement this function to perform the actual access control logic.\n @param actionId The action identifier associated with an external function\n @param user The account performing the action\n @return success True if the action is permitted"},"id":5326,"implemented":false,"kind":"function","modifiers":[],"name":"_canPerform","nameLocation":"2685:11:35","nodeType":"FunctionDefinition","parameters":{"id":5322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5319,"mutability":"mutable","name":"actionId","nameLocation":"2705:8:35","nodeType":"VariableDeclaration","scope":5326,"src":"2697:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5318,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2697:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5321,"mutability":"mutable","name":"user","nameLocation":"2723:4:35","nodeType":"VariableDeclaration","scope":5326,"src":"2715:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5320,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2696:32:35"},"returnParameters":{"id":5325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5326,"src":"2760:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5323,"name":"bool","nodeType":"ElementaryTypeName","src":"2760:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2759:6:35"},"scope":5327,"src":"2676:90:35","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":5328,"src":"589:2179:35","usedErrors":[121],"usedEvents":[]}],"src":"46:2723:35"},"id":35},"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol","exportedSymbols":{"BufferHelpers":[5439],"IERC4626":[38998],"PackedTokenBalance":[5970],"SafeCast":[44126]},"id":5440,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5329,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:36"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":5331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5440,"sourceUnit":38999,"src":"72:75:36","symbolAliases":[{"foreign":{"id":5330,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":5333,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5440,"sourceUnit":44127,"src":"148:75:36","symbolAliases":[{"foreign":{"id":5332,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"157:8:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"./PackedTokenBalance.sol","id":5335,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5440,"sourceUnit":5971,"src":"225:62:36","symbolAliases":[{"foreign":{"id":5334,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"234:18:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BufferHelpers","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5439,"linearizedBaseContracts":[5439],"name":"BufferHelpers","nameLocation":"297:13:36","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5338,"libraryName":{"id":5336,"name":"PackedTokenBalance","nameLocations":["323:18:36"],"nodeType":"IdentifierPath","referencedDeclaration":5970,"src":"323:18:36"},"nodeType":"UsingForDirective","src":"317:37:36","typeName":{"id":5337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"346:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":5340,"libraryName":{"id":5339,"name":"SafeCast","nameLocations":["365:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"365:8:36"},"nodeType":"UsingForDirective","src":"359:21:36"},{"body":{"id":5388,"nodeType":"Block","src":"1759:785:36","statements":[{"assignments":[5352],"declarations":[{"constant":false,"id":5352,"mutability":"mutable","name":"underlyingBalance","nameLocation":"1776:17:36","nodeType":"VariableDeclaration","scope":5388,"src":"1769:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5351,"name":"int256","nodeType":"ElementaryTypeName","src":"1769:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5358,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5353,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"1796:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1810:13:36","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"1796:27:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1796:29:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1826:8:36","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"1796:38:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":5357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1796:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1769:67:36"},{"assignments":[5360],"declarations":[{"constant":false,"id":5360,"mutability":"mutable","name":"wrappedBalanceAsUnderlying","nameLocation":"1854:26:36","nodeType":"VariableDeclaration","scope":5388,"src":"1847:33:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5359,"name":"int256","nodeType":"ElementaryTypeName","src":"1847:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5362,"initialValue":{"hexValue":"30","id":5361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1883:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1847:37:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5363,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"1898:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1912:17:36","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"1898:31:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1898:33:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1934:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1898:37:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5380,"nodeType":"IfStatement","src":"1894:474:36","trueBody":{"id":5379,"nodeType":"Block","src":"1937:431:36","statements":[{"expression":{"id":5377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5368,"name":"wrappedBalanceAsUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5360,"src":"2258:26:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5371,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"2312:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2326:17:36","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"2312:31:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2312:33:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5369,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5346,"src":"2287:12:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":5370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2300:11:36","memberName":"previewMint","nodeType":"MemberAccess","referencedDeclaration":38931,"src":"2287:24:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":5374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2287:59:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2347:8:36","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"2287:68:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":5376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2287:70:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2258:99:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5378,"nodeType":"ExpressionStatement","src":"2258:99:36"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5381,"name":"underlyingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5352,"src":"2486:17:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5382,"name":"wrappedBalanceAsUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5360,"src":"2506:26:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2486:46:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2485:48:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":5385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2536:1:36","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2485:52:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5350,"id":5387,"nodeType":"Return","src":"2478:59:36"}]},"documentation":{"id":5341,"nodeType":"StructuredDocumentation","src":"386:1253:36","text":" @notice Returns the imbalance of a buffer in terms of the underlying asset.\n @dev The imbalance refers to the difference between the buffer's underlying asset balance and its wrapped asset\n balance, both expressed in terms of the underlying asset. A positive imbalance means the buffer holds more\n underlying assets than wrapped assets, indicating that the excess underlying should be wrapped to restore\n balance. Conversely, a negative imbalance means the buffer has more wrapped assets than underlying assets, so\n during a wrap operation, fewer underlying tokens need to be wrapped, and the surplus wrapped tokens can be\n returned to the caller.\n For instance, consider the following scenario:\n - buffer balances: 2 wrapped and 10 underlying\n - wrapped rate: 2\n - normalized buffer balances: 4 wrapped as underlying (2 wrapped * rate) and 10 underlying\n - underlying token imbalance = (10 - 4) / 2 = 3 underlying\n We need to wrap 3 underlying tokens to rebalance the buffer.\n - 3 underlying = 1.5 wrapped\n - final balances: 3.5 wrapped (2 existing + 1.5 new) and 7 underlying (10 existing - 3)\n These balances are equal value, given the rate."},"id":5389,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferUnderlyingImbalance","nameLocation":"1653:28:36","nodeType":"FunctionDefinition","parameters":{"id":5347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5343,"mutability":"mutable","name":"bufferBalance","nameLocation":"1690:13:36","nodeType":"VariableDeclaration","scope":5389,"src":"1682:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1682:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5346,"mutability":"mutable","name":"wrappedToken","nameLocation":"1714:12:36","nodeType":"VariableDeclaration","scope":5389,"src":"1705:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":5345,"nodeType":"UserDefinedTypeName","pathNode":{"id":5344,"name":"IERC4626","nameLocations":["1705:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1705:8:36"},"referencedDeclaration":38998,"src":"1705:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"1681:46:36"},"returnParameters":{"id":5350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5389,"src":"1751:6:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5348,"name":"int256","nodeType":"ElementaryTypeName","src":"1751:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1750:8:36"},"scope":5439,"src":"1644:900:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5437,"nodeType":"Block","src":"3903:785:36","statements":[{"assignments":[5401],"declarations":[{"constant":false,"id":5401,"mutability":"mutable","name":"wrappedBalance","nameLocation":"3920:14:36","nodeType":"VariableDeclaration","scope":5437,"src":"3913:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5400,"name":"int256","nodeType":"ElementaryTypeName","src":"3913:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5407,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5402,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"3937:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3951:17:36","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"3937:31:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3937:33:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3971:8:36","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"3937:42:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":5406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3937:44:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"3913:68:36"},{"assignments":[5409],"declarations":[{"constant":false,"id":5409,"mutability":"mutable","name":"underlyingBalanceAsWrapped","nameLocation":"3999:26:36","nodeType":"VariableDeclaration","scope":5437,"src":"3992:33:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5408,"name":"int256","nodeType":"ElementaryTypeName","src":"3992:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5411,"initialValue":{"hexValue":"30","id":5410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4028:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3992:37:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5412,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"4043:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4057:13:36","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"4043:27:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4043:29:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4075:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4043:33:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5429,"nodeType":"IfStatement","src":"4039:476:36","trueBody":{"id":5428,"nodeType":"Block","src":"4078:437:36","statements":[{"expression":{"id":5426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5417,"name":"underlyingBalanceAsWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"4405:26:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5420,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5392,"src":"4463:13:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4477:13:36","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"4463:27:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4463:29:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5418,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5395,"src":"4434:12:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":5419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4447:15:36","memberName":"previewWithdraw","nodeType":"MemberAccess","referencedDeclaration":38957,"src":"4434:28:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":5423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:59:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4494:8:36","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"4434:68:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":5425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4434:70:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"4405:99:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5427,"nodeType":"ExpressionStatement","src":"4405:99:36"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5430,"name":"wrappedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5401,"src":"4633:14:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5431,"name":"underlyingBalanceAsWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5409,"src":"4650:26:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"4633:43:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5433,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4632:45:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":5434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4680:1:36","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4632:49:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5399,"id":5436,"nodeType":"Return","src":"4625:56:36"}]},"documentation":{"id":5390,"nodeType":"StructuredDocumentation","src":"2550:1236:36","text":" @notice Returns the imbalance of a buffer in terms of the wrapped asset.\n @dev The imbalance refers to the difference between the buffer's underlying asset balance and its wrapped asset\n balance, both expressed in terms of the wrapped asset. A positive imbalance means the buffer holds more\n wrapped assets than underlying assets, indicating that the excess wrapped should be unwrapped to restore\n balance. Conversely, a negative imbalance means the buffer has more underlying assets than wrapped assets, so\n during an unwrap operation, fewer wrapped tokens need to be unwrapped, and the surplus underlying tokens can be\n returned to the caller.\n For instance, consider the following scenario:\n - buffer balances: 10 wrapped and 4 underlying\n - wrapped rate: 2\n - normalized buffer balances: 10 wrapped and 2 underlying as wrapped (2 underlying / rate)\n - imbalance of wrapped = (10 - 2) / 2 = 4 wrapped\n We need to unwrap 4 wrapped tokens to rebalance the buffer.\n - 4 wrapped = 8 underlying\n - final balances: 6 wrapped (10 existing - 4) and 12 underlying (4 existing + 8 new)\n These balances are equal value, given the rate."},"id":5438,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferWrappedImbalance","nameLocation":"3800:25:36","nodeType":"FunctionDefinition","parameters":{"id":5396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5392,"mutability":"mutable","name":"bufferBalance","nameLocation":"3834:13:36","nodeType":"VariableDeclaration","scope":5438,"src":"3826:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5391,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3826:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5395,"mutability":"mutable","name":"wrappedToken","nameLocation":"3858:12:36","nodeType":"VariableDeclaration","scope":5438,"src":"3849:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":5394,"nodeType":"UserDefinedTypeName","pathNode":{"id":5393,"name":"IERC4626","nameLocations":["3849:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"3849:8:36"},"referencedDeclaration":38998,"src":"3849:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"3825:46:36"},"returnParameters":{"id":5399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5438,"src":"3895:6:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5397,"name":"int256","nodeType":"ElementaryTypeName","src":"3895:6:36","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"3894:8:36"},"scope":5439,"src":"3791:897:36","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5440,"src":"289:4401:36","usedErrors":[],"usedEvents":[]}],"src":"46:4645:36"},"id":36},"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","exportedSymbols":{"CastingHelpers":[5471],"IERC20":[39274]},"id":5472,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5441,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:37"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":5443,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5472,"sourceUnit":39275,"src":"72:72:37","symbolAliases":[{"foreign":{"id":5442,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CastingHelpers","contractDependencies":[],"contractKind":"library","documentation":{"id":5444,"nodeType":"StructuredDocumentation","src":"146:71:37","text":"@notice Library of helper functions related to typecasting arrays."},"fullyImplemented":true,"id":5471,"linearizedBaseContracts":[5471],"name":"CastingHelpers","nameLocation":"225:14:37","nodeType":"ContractDefinition","nodes":[{"body":{"id":5456,"nodeType":"Block","src":"410:140:37","statements":[{"AST":{"nativeSrc":"501:43:37","nodeType":"YulBlock","src":"501:43:37","statements":[{"nativeSrc":"515:19:37","nodeType":"YulAssignment","src":"515:19:37","value":{"name":"addresses","nativeSrc":"525:9:37","nodeType":"YulIdentifier","src":"525:9:37"},"variableNames":[{"name":"tokens","nativeSrc":"515:6:37","nodeType":"YulIdentifier","src":"515:6:37"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5448,"isOffset":false,"isSlot":false,"src":"525:9:37","valueSize":1},{"declaration":5453,"isOffset":false,"isSlot":false,"src":"515:6:37","valueSize":1}],"flags":["memory-safe"],"id":5455,"nodeType":"InlineAssembly","src":"476:68:37"}]},"documentation":{"id":5445,"nodeType":"StructuredDocumentation","src":"246:66:37","text":"@dev Returns a native array of addresses as an IERC20[] array."},"id":5457,"implemented":true,"kind":"function","modifiers":[],"name":"asIERC20","nameLocation":"326:8:37","nodeType":"FunctionDefinition","parameters":{"id":5449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5448,"mutability":"mutable","name":"addresses","nameLocation":"352:9:37","nodeType":"VariableDeclaration","scope":5457,"src":"335:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5446,"name":"address","nodeType":"ElementaryTypeName","src":"335:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5447,"nodeType":"ArrayTypeName","src":"335:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"334:28:37"},"returnParameters":{"id":5454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5453,"mutability":"mutable","name":"tokens","nameLocation":"402:6:37","nodeType":"VariableDeclaration","scope":5457,"src":"386:22:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5451,"nodeType":"UserDefinedTypeName","pathNode":{"id":5450,"name":"IERC20","nameLocations":["386:6:37"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"386:6:37"},"referencedDeclaration":39274,"src":"386:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5452,"nodeType":"ArrayTypeName","src":"386:8:37","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"385:24:37"},"scope":5471,"src":"317:233:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5469,"nodeType":"Block","src":"712:140:37","statements":[{"AST":{"nativeSrc":"803:43:37","nodeType":"YulBlock","src":"803:43:37","statements":[{"nativeSrc":"817:19:37","nodeType":"YulAssignment","src":"817:19:37","value":{"name":"tokens","nativeSrc":"830:6:37","nodeType":"YulIdentifier","src":"830:6:37"},"variableNames":[{"name":"addresses","nativeSrc":"817:9:37","nodeType":"YulIdentifier","src":"817:9:37"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":5466,"isOffset":false,"isSlot":false,"src":"817:9:37","valueSize":1},{"declaration":5462,"isOffset":false,"isSlot":false,"src":"830:6:37","valueSize":1}],"flags":["memory-safe"],"id":5468,"nodeType":"InlineAssembly","src":"778:68:37"}]},"documentation":{"id":5458,"nodeType":"StructuredDocumentation","src":"556:57:37","text":"@dev Returns an IERC20[] array as an address[] array."},"id":5470,"implemented":true,"kind":"function","modifiers":[],"name":"asAddress","nameLocation":"627:9:37","nodeType":"FunctionDefinition","parameters":{"id":5463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5462,"mutability":"mutable","name":"tokens","nameLocation":"653:6:37","nodeType":"VariableDeclaration","scope":5470,"src":"637:22:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5460,"nodeType":"UserDefinedTypeName","pathNode":{"id":5459,"name":"IERC20","nameLocations":["637:6:37"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"637:6:37"},"referencedDeclaration":39274,"src":"637:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5461,"nodeType":"ArrayTypeName","src":"637:8:37","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"636:24:37"},"returnParameters":{"id":5467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5466,"mutability":"mutable","name":"addresses","nameLocation":"701:9:37","nodeType":"VariableDeclaration","scope":5470,"src":"684:26:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5464,"name":"address","nodeType":"ElementaryTypeName","src":"684:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5465,"nodeType":"ArrayTypeName","src":"684:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"683:28:37"},"scope":5471,"src":"618:234:37","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5472,"src":"217:637:37","usedErrors":[],"usedEvents":[]}],"src":"46:809:37"},"id":37},"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","exportedSymbols":{"EVMCallModeHelpers":[5493]},"id":5494,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5473,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:38"},{"abstract":false,"baseContracts":[],"canonicalName":"EVMCallModeHelpers","contractDependencies":[],"contractKind":"library","documentation":{"id":5474,"nodeType":"StructuredDocumentation","src":"72:101:38","text":"@notice Library used to check whether the current operation was initiated through a static call."},"fullyImplemented":true,"id":5493,"linearizedBaseContracts":[5493],"name":"EVMCallModeHelpers","nameLocation":"181:18:38","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5475,"nodeType":"StructuredDocumentation","src":"206:98:38","text":"@notice A state-changing transaction was initiated in a context that only allows static calls."},"errorSelector":"67f84ab2","id":5477,"name":"NotStaticCall","nameLocation":"315:13:38","nodeType":"ErrorDefinition","parameters":{"id":5476,"nodeType":"ParameterList","parameters":[],"src":"328:2:38"},"src":"309:22:38"},{"body":{"id":5491,"nodeType":"Block","src":"842:104:38","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5483,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"859:2:38","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"862:6:38","memberName":"origin","nodeType":"MemberAccess","src":"859:9:38","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"880:1:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"872:7:38","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5485,"name":"address","nodeType":"ElementaryTypeName","src":"872:7:38","typeDescriptions":{}}},"id":5488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"872:10:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"859:23:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5482,"id":5490,"nodeType":"Return","src":"852:30:38"}]},"documentation":{"id":5478,"nodeType":"StructuredDocumentation","src":"337:447:38","text":" @dev Detects whether the current transaction is a static call.\n A static call is one where `tx.origin` equals 0x0 for most implementations.\n See this tweet for a table on how transaction parameters are set on different platforms:\n https://twitter.com/0xkarmacoma/status/1493380279309717505\n Solidity eth_call reference docs are here: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call"},"id":5492,"implemented":true,"kind":"function","modifiers":[],"name":"isStaticCall","nameLocation":"798:12:38","nodeType":"FunctionDefinition","parameters":{"id":5479,"nodeType":"ParameterList","parameters":[],"src":"810:2:38"},"returnParameters":{"id":5482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5492,"src":"836:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5480,"name":"bool","nodeType":"ElementaryTypeName","src":"836:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"835:6:38"},"scope":5493,"src":"789:157:38","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5494,"src":"173:775:38","usedErrors":[5477],"usedEvents":[]}],"src":"46:903:38"},"id":38},"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol","exportedSymbols":{"FactoryWidePauseWindow":[5577]},"id":5578,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5495,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:39"},{"abstract":false,"baseContracts":[],"canonicalName":"FactoryWidePauseWindow","contractDependencies":[],"contractKind":"contract","documentation":{"id":5496,"nodeType":"StructuredDocumentation","src":"72:730:39","text":" @notice Base contract for v3 factories to support pause windows for pools based on the factory deployment time.\n @dev Each pool deployment calls `getPauseWindowDuration` on the factory so that all Pools created by this factory\n will share the same Pause Window end time, after which both old and new Pools will not be pausable.\n All pools are reversibly pausable until the pause window expires. Afterward, there is an additional buffer\n period, set to the same duration as the Vault's buffer period. If a pool was paused, it will remain paused\n through this buffer period, and cannot be unpaused.\n When the buffer period expires, it will unpause automatically, and remain permissionless forever after."},"fullyImplemented":true,"id":5577,"linearizedBaseContracts":[5577],"name":"FactoryWidePauseWindow","nameLocation":"812:22:39","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5503,"mutability":"constant","name":"_MAX_TIMESTAMP","nameLocation":"1030:14:39","nodeType":"VariableDeclaration","scope":5577,"src":"1006:57:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5497,"name":"uint32","nodeType":"ElementaryTypeName","src":"1006:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"expression":{"arguments":[{"id":5500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1052:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5499,"name":"uint32","nodeType":"ElementaryTypeName","src":"1052:6:39","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":5498,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1047:4:39","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1047:12:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":5502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1060:3:39","memberName":"max","nodeType":"MemberAccess","src":"1047:16:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"private"},{"constant":false,"id":5505,"mutability":"immutable","name":"_pauseWindowDuration","nameLocation":"1095:20:39","nodeType":"VariableDeclaration","scope":5577,"src":"1070:45:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5504,"name":"uint32","nodeType":"ElementaryTypeName","src":"1070:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"private"},{"constant":false,"id":5507,"mutability":"immutable","name":"_poolsPauseWindowEndTime","nameLocation":"1212:24:39","nodeType":"VariableDeclaration","scope":5577,"src":"1187:49:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5506,"name":"uint32","nodeType":"ElementaryTypeName","src":"1187:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"private"},{"documentation":{"id":5508,"nodeType":"StructuredDocumentation","src":"1243:88:39","text":"@notice The factory deployer gave a duration that would overflow the Unix timestamp."},"errorSelector":"68755a11","id":5510,"name":"PoolPauseWindowDurationOverflow","nameLocation":"1342:31:39","nodeType":"ErrorDefinition","parameters":{"id":5509,"nodeType":"ParameterList","parameters":[],"src":"1373:2:39"},"src":"1336:40:39"},{"body":{"id":5541,"nodeType":"Block","src":"1422:373:39","statements":[{"assignments":[5516],"declarations":[{"constant":false,"id":5516,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"1440:18:39","nodeType":"VariableDeclaration","scope":5541,"src":"1432:26:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5515,"name":"uint256","nodeType":"ElementaryTypeName","src":"1432:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5521,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5517,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1461:5:39","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1467:9:39","memberName":"timestamp","nodeType":"MemberAccess","src":"1461:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5519,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5512,"src":"1479:19:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1461:37:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1432:66:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5522,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5516,"src":"1513:18:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5523,"name":"_MAX_TIMESTAMP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5503,"src":"1534:14:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1513:35:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5529,"nodeType":"IfStatement","src":"1509:106:39","trueBody":{"id":5528,"nodeType":"Block","src":"1550:65:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5525,"name":"PoolPauseWindowDurationOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5510,"src":"1571:31:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1571:33:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5527,"nodeType":"RevertStatement","src":"1564:40:39"}]}},{"expression":{"id":5532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5530,"name":"_pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"1625:20:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5531,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5512,"src":"1648:19:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1625:42:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5533,"nodeType":"ExpressionStatement","src":"1625:42:39"},{"expression":{"id":5539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5534,"name":"_poolsPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5507,"src":"1735:24:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5537,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5516,"src":"1769:18:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1762:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5535,"name":"uint32","nodeType":"ElementaryTypeName","src":"1762:6:39","typeDescriptions":{}}},"id":5538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1762:26:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1735:53:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5540,"nodeType":"ExpressionStatement","src":"1735:53:39"}]},"id":5542,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5512,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"1401:19:39","nodeType":"VariableDeclaration","scope":5542,"src":"1394:26:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5511,"name":"uint32","nodeType":"ElementaryTypeName","src":"1394:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1393:28:39"},"returnParameters":{"id":5514,"nodeType":"ParameterList","parameters":[],"src":"1422:0:39"},"scope":5577,"src":"1382:413:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5550,"nodeType":"Block","src":"2056:44:39","statements":[{"expression":{"id":5548,"name":"_pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"2073:20:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5547,"id":5549,"nodeType":"Return","src":"2066:27:39"}]},"documentation":{"id":5543,"nodeType":"StructuredDocumentation","src":"1801:185:39","text":" @notice Return the pause window duration. This is the time pools will be pausable after factory deployment.\n @return pauseWindowDuration The duration in seconds"},"functionSelector":"78da80cb","id":5551,"implemented":true,"kind":"function","modifiers":[],"name":"getPauseWindowDuration","nameLocation":"2000:22:39","nodeType":"FunctionDefinition","parameters":{"id":5544,"nodeType":"ParameterList","parameters":[],"src":"2022:2:39"},"returnParameters":{"id":5547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5551,"src":"2048:6:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5545,"name":"uint32","nodeType":"ElementaryTypeName","src":"2048:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2047:8:39"},"scope":5577,"src":"1991:109:39","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":5559,"nodeType":"Block","src":"2352:48:39","statements":[{"expression":{"id":5557,"name":"_poolsPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5507,"src":"2369:24:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5556,"id":5558,"nodeType":"Return","src":"2362:31:39"}]},"documentation":{"id":5552,"nodeType":"StructuredDocumentation","src":"2106:169:39","text":" @notice Returns the original factory pauseWindowEndTime, regardless of the current time.\n @return pauseWindowEndTime The end time as a timestamp"},"functionSelector":"e9d56e19","id":5560,"implemented":true,"kind":"function","modifiers":[],"name":"getOriginalPauseWindowEndTime","nameLocation":"2289:29:39","nodeType":"FunctionDefinition","parameters":{"id":5553,"nodeType":"ParameterList","parameters":[],"src":"2318:2:39"},"returnParameters":{"id":5556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5555,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5560,"src":"2344:6:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5554,"name":"uint32","nodeType":"ElementaryTypeName","src":"2344:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2343:8:39"},"scope":5577,"src":"2280:120:39","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":5575,"nodeType":"Block","src":"2991:263:39","statements":[{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5566,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3173:5:39","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3179:9:39","memberName":"timestamp","nodeType":"MemberAccess","src":"3173:15:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5568,"name":"_poolsPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5507,"src":"3191:24:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3173:42:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5570,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3172:44:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":5572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3246:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":5573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3172:75:39","trueExpression":{"id":5571,"name":"_poolsPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5507,"src":"3219:24:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5565,"id":5574,"nodeType":"Return","src":"3165:82:39"}]},"documentation":{"id":5561,"nodeType":"StructuredDocumentation","src":"2406:511:39","text":" @notice Returns the current pauseWindowEndTime that will be applied to Pools created by this factory.\n @dev We intend for all pools deployed by this factory to have the same pause window end time (i.e., after\n this date, all future pools will be unpausable). This function will return `_poolsPauseWindowEndTime`\n until it passes, after which it will return 0.\n @return pauseWindowEndTime The resolved pause window end time (0 indicating it's no longer pausable)"},"functionSelector":"db035ebc","id":5576,"implemented":true,"kind":"function","modifiers":[],"name":"getNewPoolPauseWindowEndTime","nameLocation":"2931:28:39","nodeType":"FunctionDefinition","parameters":{"id":5562,"nodeType":"ParameterList","parameters":[],"src":"2959:2:39"},"returnParameters":{"id":5565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5576,"src":"2983:6:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5563,"name":"uint32","nodeType":"ElementaryTypeName","src":"2983:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2982:8:39"},"scope":5577,"src":"2922:332:39","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":5578,"src":"803:2453:39","usedErrors":[5510],"usedEvents":[]}],"src":"46:3211:39"},"id":39},"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","exportedSymbols":{"CastingHelpers":[5471],"IERC20":[39274],"InputHelpers":[5819]},"id":5820,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5579,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:40"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":5581,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5820,"sourceUnit":39275,"src":"72:72:40","symbolAliases":[{"foreign":{"id":5580,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","file":"./CastingHelpers.sol","id":5583,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5820,"sourceUnit":5472,"src":"146:54:40","symbolAliases":[{"foreign":{"id":5582,"name":"CastingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5471,"src":"155:14:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"InputHelpers","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5819,"linearizedBaseContracts":[5819],"name":"InputHelpers","nameLocation":"210:12:40","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5584,"nodeType":"StructuredDocumentation","src":"229:91:40","text":"@notice Arrays passed to a function and intended to be parallel have different lengths."},"errorSelector":"aaad13f7","id":5586,"name":"InputLengthMismatch","nameLocation":"331:19:40","nodeType":"ErrorDefinition","parameters":{"id":5585,"nodeType":"ParameterList","parameters":[],"src":"350:2:40"},"src":"325:28:40"},{"documentation":{"id":5587,"nodeType":"StructuredDocumentation","src":"359:332:40","text":" @notice More than one non-zero value was given for a single token operation.\n @dev Input arrays for single token add/remove liquidity operations are expected to have only one non-zero value,\n corresponding to the token being added or removed. This error results if there are multiple non-zero entries."},"errorSelector":"6b8c3be5","id":5589,"name":"MultipleNonZeroInputs","nameLocation":"702:21:40","nodeType":"ErrorDefinition","parameters":{"id":5588,"nodeType":"ParameterList","parameters":[],"src":"723:2:40"},"src":"696:30:40"},{"documentation":{"id":5590,"nodeType":"StructuredDocumentation","src":"732:298:40","text":" @notice No valid input was given for a single token operation.\n @dev Input arrays for single token add/remove liquidity operations are expected to have one non-zero value,\n corresponding to the token being added or removed. This error results if all entries are zero."},"errorSelector":"7e46bddc","id":5592,"name":"AllZeroInputs","nameLocation":"1041:13:40","nodeType":"ErrorDefinition","parameters":{"id":5591,"nodeType":"ParameterList","parameters":[],"src":"1054:2:40"},"src":"1035:22:40"},{"documentation":{"id":5593,"nodeType":"StructuredDocumentation","src":"1063:320:40","text":" @notice The tokens supplied to an array argument were not sorted in numerical order.\n @dev Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can\n predict the token order without having to query the Vault. (It is also legacy v2 behavior.)"},"errorSelector":"6e8f1947","id":5595,"name":"TokensNotSorted","nameLocation":"1394:15:40","nodeType":"ErrorDefinition","parameters":{"id":5594,"nodeType":"ParameterList","parameters":[],"src":"1409:2:40"},"src":"1388:24:40"},{"body":{"id":5610,"nodeType":"Block","src":"1486:81:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5602,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5597,"src":"1500:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5603,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5599,"src":"1505:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1500:6:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5609,"nodeType":"IfStatement","src":"1496:65:40","trueBody":{"id":5608,"nodeType":"Block","src":"1508:53:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5605,"name":"InputLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5586,"src":"1529:19:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1529:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5607,"nodeType":"RevertStatement","src":"1522:28:40"}]}}]},"id":5611,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nameLocation":"1427:22:40","nodeType":"FunctionDefinition","parameters":{"id":5600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5597,"mutability":"mutable","name":"a","nameLocation":"1458:1:40","nodeType":"VariableDeclaration","scope":5611,"src":"1450:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5596,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5599,"mutability":"mutable","name":"b","nameLocation":"1469:1:40","nodeType":"VariableDeclaration","scope":5611,"src":"1461:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5598,"name":"uint256","nodeType":"ElementaryTypeName","src":"1461:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1449:22:40"},"returnParameters":{"id":5601,"nodeType":"ParameterList","parameters":[],"src":"1486:0:40"},"scope":5819,"src":"1418:149:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5632,"nodeType":"Block","src":"1652:91:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5620,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5613,"src":"1666:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5621,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"1671:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1666:6:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5623,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5615,"src":"1676:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5624,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5617,"src":"1681:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1676:6:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1666:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5631,"nodeType":"IfStatement","src":"1662:75:40","trueBody":{"id":5630,"nodeType":"Block","src":"1684:53:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5627,"name":"InputLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5586,"src":"1705:19:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1705:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5629,"nodeType":"RevertStatement","src":"1698:28:40"}]}}]},"id":5633,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nameLocation":"1582:22:40","nodeType":"FunctionDefinition","parameters":{"id":5618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5613,"mutability":"mutable","name":"a","nameLocation":"1613:1:40","nodeType":"VariableDeclaration","scope":5633,"src":"1605:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5612,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5615,"mutability":"mutable","name":"b","nameLocation":"1624:1:40","nodeType":"VariableDeclaration","scope":5633,"src":"1616:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5614,"name":"uint256","nodeType":"ElementaryTypeName","src":"1616:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5617,"mutability":"mutable","name":"c","nameLocation":"1635:1:40","nodeType":"VariableDeclaration","scope":5633,"src":"1627:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5616,"name":"uint256","nodeType":"ElementaryTypeName","src":"1627:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1604:33:40"},"returnParameters":{"id":5619,"nodeType":"ParameterList","parameters":[],"src":"1652:0:40"},"scope":5819,"src":"1573:170:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5691,"nodeType":"Block","src":"1938:451:40","statements":[{"assignments":[5642],"declarations":[{"constant":false,"id":5642,"mutability":"mutable","name":"length","nameLocation":"1956:6:40","nodeType":"VariableDeclaration","scope":5691,"src":"1948:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5645,"initialValue":{"expression":{"id":5643,"name":"maxAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"1965:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1978:6:40","memberName":"length","nodeType":"MemberAccess","src":"1965:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1948:36:40"},{"expression":{"id":5648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5646,"name":"inputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5639,"src":"1994:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5647,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5642,"src":"2007:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1994:19:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5649,"nodeType":"ExpressionStatement","src":"1994:19:40"},{"body":{"id":5679,"nodeType":"Block","src":"2061:211:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":5660,"name":"maxAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5636,"src":"2079:12:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5662,"indexExpression":{"id":5661,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"2092:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2079:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2098:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2079:20:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5678,"nodeType":"IfStatement","src":"2075:187:40","trueBody":{"id":5677,"nodeType":"Block","src":"2101:161:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5665,"name":"inputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5639,"src":"2123:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5666,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5642,"src":"2137:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2123:20:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5672,"nodeType":"IfStatement","src":"2119:97:40","trueBody":{"id":5671,"nodeType":"Block","src":"2145:71:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5668,"name":"MultipleNonZeroInputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5589,"src":"2174:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:23:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5670,"nodeType":"RevertStatement","src":"2167:30:40"}]}},{"expression":{"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5673,"name":"inputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5639,"src":"2233:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"2246:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2233:14:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5676,"nodeType":"ExpressionStatement","src":"2233:14:40"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5654,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"2044:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5655,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5642,"src":"2048:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2044:10:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5680,"initializationExpression":{"assignments":[5651],"declarations":[{"constant":false,"id":5651,"mutability":"mutable","name":"i","nameLocation":"2037:1:40","nodeType":"VariableDeclaration","scope":5680,"src":"2029:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5650,"name":"uint256","nodeType":"ElementaryTypeName","src":"2029:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5653,"initialValue":{"hexValue":"30","id":5652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2041:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2029:13:40"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2056:3:40","subExpression":{"id":5657,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"2058:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5659,"nodeType":"ExpressionStatement","src":"2056:3:40"},"nodeType":"ForStatement","src":"2024:248:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5681,"name":"inputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5639,"src":"2286:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5682,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5642,"src":"2300:6:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2286:20:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5688,"nodeType":"IfStatement","src":"2282:73:40","trueBody":{"id":5687,"nodeType":"Block","src":"2308:47:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5684,"name":"AllZeroInputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5592,"src":"2329:13:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2329:15:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5686,"nodeType":"RevertStatement","src":"2322:22:40"}]}},{"expression":{"id":5689,"name":"inputIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5639,"src":"2372:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5640,"id":5690,"nodeType":"Return","src":"2365:17:40"}]},"id":5692,"implemented":true,"kind":"function","modifiers":[],"name":"getSingleInputIndex","nameLocation":"1844:19:40","nodeType":"FunctionDefinition","parameters":{"id":5637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5636,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"1881:12:40","nodeType":"VariableDeclaration","scope":5692,"src":"1864:29:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5635,"nodeType":"ArrayTypeName","src":"1864:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1863:31:40"},"returnParameters":{"id":5640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5639,"mutability":"mutable","name":"inputIndex","nameLocation":"1926:10:40","nodeType":"VariableDeclaration","scope":5692,"src":"1918:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5638,"name":"uint256","nodeType":"ElementaryTypeName","src":"1918:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1917:20:40"},"scope":5819,"src":"1835:554:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5769,"nodeType":"Block","src":"3138:376:40","statements":[{"body":{"id":5765,"nodeType":"Block","src":"3196:288:40","statements":[{"body":{"id":5763,"nodeType":"Block","src":"3262:212:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":5740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":5732,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3284:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5734,"indexExpression":{"id":5733,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3291:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3284:9:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"id":5735,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3296:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5739,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5736,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3303:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3307:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3303:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3296:13:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"3284:25:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5762,"nodeType":"IfStatement","src":"3280:180:40","trueBody":{"id":5761,"nodeType":"Block","src":"3311:149:40","statements":[{"expression":{"id":5759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":5741,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3387:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5743,"indexExpression":{"id":5742,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3394:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3387:9:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":5744,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3398:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5748,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5745,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3405:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3409:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3405:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3398:13:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"id":5749,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3386:26:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$","typeString":"tuple(contract IERC20,contract IERC20)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"baseExpression":{"id":5750,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3416:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5754,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5751,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3423:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3427:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3423:5:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3416:13:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":5755,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3431:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5757,"indexExpression":{"id":5756,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3438:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3431:9:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"id":5758,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3415:26:40","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$","typeString":"tuple(contract IERC20,contract IERC20)"}},"src":"3386:55:40","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5760,"nodeType":"ExpressionStatement","src":"3386:55:40"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5721,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3230:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5722,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3234:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3241:6:40","memberName":"length","nodeType":"MemberAccess","src":"3234:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5724,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5705,"src":"3250:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3234:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3254:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3234:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3230:25:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5764,"initializationExpression":{"assignments":[5718],"declarations":[{"constant":false,"id":5718,"mutability":"mutable","name":"j","nameLocation":"3223:1:40","nodeType":"VariableDeclaration","scope":5764,"src":"3215:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5717,"name":"uint256","nodeType":"ElementaryTypeName","src":"3215:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5720,"initialValue":{"hexValue":"30","id":5719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3227:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3215:13:40"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3257:3:40","subExpression":{"id":5729,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5718,"src":"3259:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5731,"nodeType":"ExpressionStatement","src":"3257:3:40"},"nodeType":"ForStatement","src":"3210:264:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5708,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5705,"src":"3168:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5709,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3172:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3179:6:40","memberName":"length","nodeType":"MemberAccess","src":"3172:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3188:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3172:17:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3168:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5766,"initializationExpression":{"assignments":[5705],"declarations":[{"constant":false,"id":5705,"mutability":"mutable","name":"i","nameLocation":"3161:1:40","nodeType":"VariableDeclaration","scope":5766,"src":"3153:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5704,"name":"uint256","nodeType":"ElementaryTypeName","src":"3153:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5707,"initialValue":{"hexValue":"30","id":5706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3165:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3153:13:40"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3191:3:40","subExpression":{"id":5714,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5705,"src":"3193:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5716,"nodeType":"ExpressionStatement","src":"3191:3:40"},"nodeType":"ForStatement","src":"3148:336:40"},{"expression":{"id":5767,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5697,"src":"3501:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":5703,"id":5768,"nodeType":"Return","src":"3494:13:40"}]},"documentation":{"id":5693,"nodeType":"StructuredDocumentation","src":"2395:654:40","text":" @dev Sort an array of tokens, mutating in place (and also returning them).\n This assumes the tokens have been (or will be) validated elsewhere for length\n and non-duplication. All this does is the sorting.\n A bubble sort should be gas- and bytecode-efficient enough for such small arrays.\n Could have also done \"manual\" comparisons for each of the cases, but this is\n about the same number of operations, and more concise.\n This is less efficient for larger token count (i.e., above 4), but such pools should\n be rare. And in any case, sorting is only done on-chain in test code."},"id":5770,"implemented":true,"kind":"function","modifiers":[],"name":"sortTokens","nameLocation":"3063:10:40","nodeType":"FunctionDefinition","parameters":{"id":5698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5697,"mutability":"mutable","name":"tokens","nameLocation":"3090:6:40","nodeType":"VariableDeclaration","scope":5770,"src":"3074:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5695,"nodeType":"UserDefinedTypeName","pathNode":{"id":5694,"name":"IERC20","nameLocations":["3074:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3074:6:40"},"referencedDeclaration":39274,"src":"3074:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5696,"nodeType":"ArrayTypeName","src":"3074:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"3073:24:40"},"returnParameters":{"id":5703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5770,"src":"3121:15:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5700,"nodeType":"UserDefinedTypeName","pathNode":{"id":5699,"name":"IERC20","nameLocations":["3121:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3121:6:40"},"referencedDeclaration":39274,"src":"3121:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5701,"nodeType":"ArrayTypeName","src":"3121:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"3120:17:40"},"scope":5819,"src":"3054:460:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5817,"nodeType":"Block","src":"3686:277:40","statements":[{"assignments":[5780],"declarations":[{"constant":false,"id":5780,"mutability":"mutable","name":"previous","nameLocation":"3703:8:40","nodeType":"VariableDeclaration","scope":5817,"src":"3696:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":5779,"nodeType":"UserDefinedTypeName","pathNode":{"id":5778,"name":"IERC20","nameLocations":["3696:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3696:6:40"},"referencedDeclaration":39274,"src":"3696:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":5784,"initialValue":{"baseExpression":{"id":5781,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5775,"src":"3714:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5783,"indexExpression":{"hexValue":"30","id":5782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3721:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3714:9:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"3696:27:40"},{"body":{"id":5815,"nodeType":"Block","src":"3778:179:40","statements":[{"assignments":[5798],"declarations":[{"constant":false,"id":5798,"mutability":"mutable","name":"current","nameLocation":"3799:7:40","nodeType":"VariableDeclaration","scope":5815,"src":"3792:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":5797,"nodeType":"UserDefinedTypeName","pathNode":{"id":5796,"name":"IERC20","nameLocations":["3792:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3792:6:40"},"referencedDeclaration":39274,"src":"3792:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":5802,"initialValue":{"baseExpression":{"id":5799,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5775,"src":"3809:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5801,"indexExpression":{"id":5800,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"3816:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3809:9:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"3792:26:40"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5803,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5780,"src":"3837:8:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5804,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"3848:7:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"3837:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5810,"nodeType":"IfStatement","src":"3833:81:40","trueBody":{"id":5809,"nodeType":"Block","src":"3857:57:40","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5806,"name":"TokensNotSorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5595,"src":"3882:15:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3882:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5808,"nodeType":"RevertStatement","src":"3875:24:40"}]}},{"expression":{"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5811,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5780,"src":"3928:8:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5812,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5798,"src":"3939:7:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"3928:18:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5814,"nodeType":"ExpressionStatement","src":"3928:18:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"3754:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5790,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5775,"src":"3758:6:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":5791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3765:6:40","memberName":"length","nodeType":"MemberAccess","src":"3758:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3754:17:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5816,"initializationExpression":{"assignments":[5786],"declarations":[{"constant":false,"id":5786,"mutability":"mutable","name":"i","nameLocation":"3747:1:40","nodeType":"VariableDeclaration","scope":5816,"src":"3739:9:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5785,"name":"uint256","nodeType":"ElementaryTypeName","src":"3739:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5788,"initialValue":{"hexValue":"31","id":5787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3751:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"3739:13:40"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3773:3:40","subExpression":{"id":5793,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"3775:1:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5795,"nodeType":"ExpressionStatement","src":"3773:3:40"},"nodeType":"ForStatement","src":"3734:223:40"}]},"documentation":{"id":5771,"nodeType":"StructuredDocumentation","src":"3520:95:40","text":"@dev Ensure an array of tokens is sorted. As above, does not validate length or uniqueness."},"id":5818,"implemented":true,"kind":"function","modifiers":[],"name":"ensureSortedTokens","nameLocation":"3629:18:40","nodeType":"FunctionDefinition","parameters":{"id":5776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5775,"mutability":"mutable","name":"tokens","nameLocation":"3664:6:40","nodeType":"VariableDeclaration","scope":5818,"src":"3648:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":5773,"nodeType":"UserDefinedTypeName","pathNode":{"id":5772,"name":"IERC20","nameLocations":["3648:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3648:6:40"},"referencedDeclaration":39274,"src":"3648:6:40","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":5774,"nodeType":"ArrayTypeName","src":"3648:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"3647:24:40"},"returnParameters":{"id":5777,"nodeType":"ParameterList","parameters":[],"src":"3686:0:40"},"scope":5819,"src":"3620:343:40","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5820,"src":"202:3763:40","usedErrors":[5586,5589,5592,5595],"usedEvents":[]}],"src":"46:3920:40"},"id":40},"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","exportedSymbols":{"PackedTokenBalance":[5970]},"id":5971,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5821,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:41"},{"abstract":false,"baseContracts":[],"canonicalName":"PackedTokenBalance","contractDependencies":[],"contractKind":"library","documentation":{"id":5822,"nodeType":"StructuredDocumentation","src":"72:909:41","text":" @notice This library represents a data structure for packing a token's current raw and derived balances. A derived\n balance can be the \"last\" live balance scaled18 of the raw token, or the balance of the wrapped version of the\n token in a vault buffer, among others.\n @dev We could use a Solidity struct to pack balance values together in a single storage slot, but unfortunately\n Solidity only allows for structs to live in either storage, calldata or memory. Because a memory struct still takes\n up a slot in the stack (to store its memory location), and because the entire balance fits in a single stack slot\n (two 128 bit values), using memory is strictly less gas performant. Therefore, we do manual packing and unpacking.\n We could also use custom types now, but given the simplicity here, and the existing EnumerableMap type, it seemed\n easier to leave it as a bytes32."},"fullyImplemented":true,"id":5970,"linearizedBaseContracts":[5970],"name":"PackedTokenBalance","nameLocation":"990:18:41","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5830,"mutability":"constant","name":"_MAX_BALANCE","nameLocation":"1222:12:41","nodeType":"VariableDeclaration","scope":5970,"src":"1197:54:41","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5823,"name":"uint256","nodeType":"ElementaryTypeName","src":"1197:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"id":5829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":5827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1237:1:41","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"hexValue":"313238","id":5825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1243:3:41","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"}],"id":5826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1242:5:41","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"}},"src":"1237:10:41","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":5828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1250:1:41","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1237:14:41","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"}},"visibility":"private"},{"documentation":{"id":5831,"nodeType":"StructuredDocumentation","src":"1258:78:41","text":"@notice One of the balances is above the maximum value that can be stored."},"errorSelector":"89560ca1","id":5833,"name":"BalanceOverflow","nameLocation":"1347:15:41","nodeType":"ErrorDefinition","parameters":{"id":5832,"nodeType":"ParameterList","parameters":[],"src":"1362:2:41"},"src":"1341:24:41"},{"body":{"id":5847,"nodeType":"Block","src":"1443:55:41","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5842,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5835,"src":"1468:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1460:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:41","typeDescriptions":{}}},"id":5843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1460:16:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":5844,"name":"_MAX_BALANCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"1479:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1460:31:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5839,"id":5846,"nodeType":"Return","src":"1453:38:41"}]},"id":5848,"implemented":true,"kind":"function","modifiers":[],"name":"getBalanceRaw","nameLocation":"1380:13:41","nodeType":"FunctionDefinition","parameters":{"id":5836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5835,"mutability":"mutable","name":"balance","nameLocation":"1402:7:41","nodeType":"VariableDeclaration","scope":5848,"src":"1394:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1394:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1393:17:41"},"returnParameters":{"id":5839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5848,"src":"1434:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5837,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1433:9:41"},"scope":5970,"src":"1371:127:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5864,"nodeType":"Block","src":"1580:62:41","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":5859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5857,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5850,"src":"1605:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1616:3:41","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1605:14:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1597:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5855,"name":"uint256","nodeType":"ElementaryTypeName","src":"1597:7:41","typeDescriptions":{}}},"id":5860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1597:23:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":5861,"name":"_MAX_BALANCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"1623:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1597:38:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5854,"id":5863,"nodeType":"Return","src":"1590:45:41"}]},"id":5865,"implemented":true,"kind":"function","modifiers":[],"name":"getBalanceDerived","nameLocation":"1513:17:41","nodeType":"FunctionDefinition","parameters":{"id":5851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5850,"mutability":"mutable","name":"balance","nameLocation":"1539:7:41","nodeType":"VariableDeclaration","scope":5865,"src":"1531:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5849,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1531:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1530:17:41"},"returnParameters":{"id":5854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5865,"src":"1571:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1571:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1570:9:41"},"scope":5970,"src":"1504:138:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5882,"nodeType":"Block","src":"1831:82:41","statements":[{"expression":{"arguments":[{"id":5876,"name":"newBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5870,"src":"1864:13:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5878,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5868,"src":"1897:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5877,"name":"getBalanceDerived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"1879:17:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1879:26:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5875,"name":"toPackedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"1848:15:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":5880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1848:58:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5874,"id":5881,"nodeType":"Return","src":"1841:65:41"}]},"documentation":{"id":5866,"nodeType":"StructuredDocumentation","src":"1648:83:41","text":"@dev Sets only the raw balance of balances and returns the new bytes32 balance."},"id":5883,"implemented":true,"kind":"function","modifiers":[],"name":"setBalanceRaw","nameLocation":"1745:13:41","nodeType":"FunctionDefinition","parameters":{"id":5871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5868,"mutability":"mutable","name":"balance","nameLocation":"1767:7:41","nodeType":"VariableDeclaration","scope":5883,"src":"1759:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1759:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5870,"mutability":"mutable","name":"newBalanceRaw","nameLocation":"1784:13:41","nodeType":"VariableDeclaration","scope":5883,"src":"1776:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5869,"name":"uint256","nodeType":"ElementaryTypeName","src":"1776:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1758:40:41"},"returnParameters":{"id":5874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5883,"src":"1822:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5872,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1822:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1821:9:41"},"scope":5970,"src":"1736:177:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5900,"nodeType":"Block","src":"2114:82:41","statements":[{"expression":{"arguments":[{"arguments":[{"id":5895,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5886,"src":"2161:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5894,"name":"getBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"2147:13:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2147:22:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5897,"name":"newBalanceDerived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5888,"src":"2171:17:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5893,"name":"toPackedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"2131:15:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2131:58:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5892,"id":5899,"nodeType":"Return","src":"2124:65:41"}]},"documentation":{"id":5884,"nodeType":"StructuredDocumentation","src":"1919:87:41","text":"@dev Sets only the derived balance of balances and returns the new bytes32 balance."},"id":5901,"implemented":true,"kind":"function","modifiers":[],"name":"setBalanceDerived","nameLocation":"2020:17:41","nodeType":"FunctionDefinition","parameters":{"id":5889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5886,"mutability":"mutable","name":"balance","nameLocation":"2046:7:41","nodeType":"VariableDeclaration","scope":5901,"src":"2038:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5885,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2038:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5888,"mutability":"mutable","name":"newBalanceDerived","nameLocation":"2063:17:41","nodeType":"VariableDeclaration","scope":5901,"src":"2055:25:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5887,"name":"uint256","nodeType":"ElementaryTypeName","src":"2055:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2037:44:41"},"returnParameters":{"id":5892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5901,"src":"2105:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2105:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2104:9:41"},"scope":5970,"src":"2011:185:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5928,"nodeType":"Block","src":"2412:180:41","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5911,"name":"balanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5904,"src":"2426:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5912,"name":"_MAX_BALANCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"2439:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2426:25:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5914,"name":"balanceDerived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5906,"src":"2455:14:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5915,"name":"_MAX_BALANCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5830,"src":"2472:12:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2455:29:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2426:58:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5922,"nodeType":"IfStatement","src":"2422:113:41","trueBody":{"id":5921,"nodeType":"Block","src":"2486:49:41","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5918,"name":"BalanceOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5833,"src":"2507:15:41","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2507:17:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5920,"nodeType":"RevertStatement","src":"2500:24:41"}]}},{"expression":{"arguments":[{"id":5924,"name":"balanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5904,"src":"2558:10:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5925,"name":"balanceDerived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5906,"src":"2570:14:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5923,"name":"_pack","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"2552:5:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":5926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2552:33:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5910,"id":5927,"nodeType":"Return","src":"2545:40:41"}]},"documentation":{"id":5902,"nodeType":"StructuredDocumentation","src":"2202:104:41","text":"@dev Validates the size of `balanceRaw` and `balanceDerived`, then returns a packed balance bytes32."},"id":5929,"implemented":true,"kind":"function","modifiers":[],"name":"toPackedBalance","nameLocation":"2320:15:41","nodeType":"FunctionDefinition","parameters":{"id":5907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5904,"mutability":"mutable","name":"balanceRaw","nameLocation":"2344:10:41","nodeType":"VariableDeclaration","scope":5929,"src":"2336:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5903,"name":"uint256","nodeType":"ElementaryTypeName","src":"2336:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5906,"mutability":"mutable","name":"balanceDerived","nameLocation":"2364:14:41","nodeType":"VariableDeclaration","scope":5929,"src":"2356:22:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5905,"name":"uint256","nodeType":"ElementaryTypeName","src":"2356:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2335:44:41"},"returnParameters":{"id":5910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5929,"src":"2403:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5908,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2403:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2402:9:41"},"scope":5970,"src":"2311:281:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5947,"nodeType":"Block","src":"2754:76:41","statements":[{"expression":{"components":[{"arguments":[{"id":5940,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5932,"src":"2786:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5939,"name":"getBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5848,"src":"2772:13:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:22:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":5943,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5932,"src":"2814:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5942,"name":"getBalanceDerived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5865,"src":"2796:17:41","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2796:26:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2771:52:41","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":5938,"id":5946,"nodeType":"Return","src":"2764:59:41"}]},"documentation":{"id":5930,"nodeType":"StructuredDocumentation","src":"2598:40:41","text":"@dev Decode and fetch both balances."},"id":5948,"implemented":true,"kind":"function","modifiers":[],"name":"fromPackedBalance","nameLocation":"2652:17:41","nodeType":"FunctionDefinition","parameters":{"id":5933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5932,"mutability":"mutable","name":"balance","nameLocation":"2678:7:41","nodeType":"VariableDeclaration","scope":5948,"src":"2670:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5931,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2670:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2669:17:41"},"returnParameters":{"id":5938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5935,"mutability":"mutable","name":"balanceRaw","nameLocation":"2718:10:41","nodeType":"VariableDeclaration","scope":5948,"src":"2710:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5934,"name":"uint256","nodeType":"ElementaryTypeName","src":"2710:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5937,"mutability":"mutable","name":"balanceDerived","nameLocation":"2738:14:41","nodeType":"VariableDeclaration","scope":5948,"src":"2730:22:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5936,"name":"uint256","nodeType":"ElementaryTypeName","src":"2730:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2709:44:41"},"scope":5970,"src":"2643:187:41","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5968,"nodeType":"Block","src":"3035:76:41","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5960,"name":"mostSignificant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5953,"src":"3061:15:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":5961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3080:3:41","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"3061:22:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5963,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3060:24:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5964,"name":"leastSignificant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5951,"src":"3087:16:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3060:43:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3052:7:41","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":5958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3052:7:41","typeDescriptions":{}}},"id":5966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:52:41","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5957,"id":5967,"nodeType":"Return","src":"3045:59:41"}]},"documentation":{"id":5949,"nodeType":"StructuredDocumentation","src":"2836:97:41","text":"@dev Packs two uint128 values into a packed balance bytes32. It does not check balance sizes."},"id":5969,"implemented":true,"kind":"function","modifiers":[],"name":"_pack","nameLocation":"2947:5:41","nodeType":"FunctionDefinition","parameters":{"id":5954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5951,"mutability":"mutable","name":"leastSignificant","nameLocation":"2961:16:41","nodeType":"VariableDeclaration","scope":5969,"src":"2953:24:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5950,"name":"uint256","nodeType":"ElementaryTypeName","src":"2953:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5953,"mutability":"mutable","name":"mostSignificant","nameLocation":"2987:15:41","nodeType":"VariableDeclaration","scope":5969,"src":"2979:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5952,"name":"uint256","nodeType":"ElementaryTypeName","src":"2979:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2952:51:41"},"returnParameters":{"id":5957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5956,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5969,"src":"3026:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5955,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3026:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3025:9:41"},"scope":5970,"src":"2938:173:41","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":5971,"src":"982:2131:41","usedErrors":[5833],"usedEvents":[]}],"src":"46:3068:41"},"id":41},"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol","exportedSymbols":{"RevertCodec":[6060]},"id":6061,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":5972,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:42"},{"abstract":false,"baseContracts":[],"canonicalName":"RevertCodec","contractDependencies":[],"contractKind":"library","documentation":{"id":5973,"nodeType":"StructuredDocumentation","src":"111:120:42","text":"@notice Support `quoteAndRevert`: a v2-style query which always reverts, and returns the result in the return data."},"fullyImplemented":true,"id":6060,"linearizedBaseContracts":[6060],"name":"RevertCodec","nameLocation":"239:11:42","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5974,"nodeType":"StructuredDocumentation","src":"257:183:42","text":" @notice On success of the primary operation in a `quoteAndRevert`, this error is thrown with the return data.\n @param result The result of the query operation"},"errorSelector":"5ab64fb8","id":5978,"name":"Result","nameLocation":"451:6:42","nodeType":"ErrorDefinition","parameters":{"id":5977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5976,"mutability":"mutable","name":"result","nameLocation":"464:6:42","nodeType":"VariableDeclaration","scope":5978,"src":"458:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5975,"name":"bytes","nodeType":"ElementaryTypeName","src":"458:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"457:14:42"},"src":"445:27:42"},{"documentation":{"id":5979,"nodeType":"StructuredDocumentation","src":"478:79:42","text":"@notice Handle the \"reverted without a reason\" case (i.e., no return data)."},"errorSelector":"a7285689","id":5981,"name":"ErrorSelectorNotFound","nameLocation":"568:21:42","nodeType":"ErrorDefinition","parameters":{"id":5980,"nodeType":"ParameterList","parameters":[],"src":"589:2:42"},"src":"562:30:42"},{"body":{"id":6021,"nodeType":"Block","src":"687:559:42","statements":[{"assignments":[5989],"declarations":[{"constant":false,"id":5989,"mutability":"mutable","name":"errorSelector","nameLocation":"704:13:42","nodeType":"VariableDeclaration","scope":6021,"src":"697:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5988,"name":"bytes4","nodeType":"ElementaryTypeName","src":"697:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":5994,"initialValue":{"arguments":[{"id":5992,"name":"resultRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5983,"src":"746:9:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5990,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"720:11:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":5991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"732:13:42","memberName":"parseSelector","nodeType":"MemberAccess","referencedDeclaration":6041,"src":"720:25:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes memory) pure returns (bytes4)"}},"id":5993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"720:36:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"697:59:42"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5995,"name":"errorSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5989,"src":"770:13:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":5996,"name":"Result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5978,"src":"787:6:42","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":5997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"794:8:42","memberName":"selector","nodeType":"MemberAccess","src":"787:15:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"770:32:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6006,"nodeType":"IfStatement","src":"766:185:42","trueBody":{"id":6005,"nodeType":"Block","src":"804:147:42","statements":[{"expression":{"arguments":[{"id":6002,"name":"resultRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5983,"src":"930:9:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5999,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"903:11:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":6001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"915:14:42","memberName":"bubbleUpRevert","nodeType":"MemberAccess","referencedDeclaration":6059,"src":"903:26:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":6003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"903:37:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6004,"nodeType":"ExpressionStatement","src":"903:37:42"}]}},{"assignments":[6008],"declarations":[{"constant":false,"id":6008,"mutability":"mutable","name":"resultRawLength","nameLocation":"969:15:42","nodeType":"VariableDeclaration","scope":6021,"src":"961:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6007,"name":"uint256","nodeType":"ElementaryTypeName","src":"961:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6011,"initialValue":{"expression":{"id":6009,"name":"resultRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5983,"src":"987:9:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"997:6:42","memberName":"length","nodeType":"MemberAccess","src":"987:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"961:42:42"},{"AST":{"nativeSrc":"1038:154:42","nodeType":"YulBlock","src":"1038:154:42","statements":[{"nativeSrc":"1052:33:42","nodeType":"YulAssignment","src":"1052:33:42","value":{"arguments":[{"name":"resultRaw","nativeSrc":"1069:9:42","nodeType":"YulIdentifier","src":"1069:9:42"},{"kind":"number","nativeSrc":"1080:4:42","nodeType":"YulLiteral","src":"1080:4:42","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"1065:3:42","nodeType":"YulIdentifier","src":"1065:3:42"},"nativeSrc":"1065:20:42","nodeType":"YulFunctionCall","src":"1065:20:42"},"variableNames":[{"name":"resultRaw","nativeSrc":"1052:9:42","nodeType":"YulIdentifier","src":"1052:9:42"}]},{"expression":{"arguments":[{"name":"resultRaw","nativeSrc":"1126:9:42","nodeType":"YulIdentifier","src":"1126:9:42"},{"arguments":[{"name":"resultRawLength","nativeSrc":"1141:15:42","nodeType":"YulIdentifier","src":"1141:15:42"},{"kind":"number","nativeSrc":"1158:1:42","nodeType":"YulLiteral","src":"1158:1:42","type":"","value":"4"}],"functionName":{"name":"sub","nativeSrc":"1137:3:42","nodeType":"YulIdentifier","src":"1137:3:42"},"nativeSrc":"1137:23:42","nodeType":"YulFunctionCall","src":"1137:23:42"}],"functionName":{"name":"mstore","nativeSrc":"1119:6:42","nodeType":"YulIdentifier","src":"1119:6:42"},"nativeSrc":"1119:42:42","nodeType":"YulFunctionCall","src":"1119:42:42"},"nativeSrc":"1119:42:42","nodeType":"YulExpressionStatement","src":"1119:42:42"}]},"evmVersion":"cancun","externalReferences":[{"declaration":5983,"isOffset":false,"isSlot":false,"src":"1052:9:42","valueSize":1},{"declaration":5983,"isOffset":false,"isSlot":false,"src":"1069:9:42","valueSize":1},{"declaration":5983,"isOffset":false,"isSlot":false,"src":"1126:9:42","valueSize":1},{"declaration":6008,"isOffset":false,"isSlot":false,"src":"1141:15:42","valueSize":1}],"flags":["memory-safe"],"id":6012,"nodeType":"InlineAssembly","src":"1013:179:42"},{"expression":{"arguments":[{"id":6015,"name":"resultRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5983,"src":"1220:9:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":6017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1232:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":6016,"name":"bytes","nodeType":"ElementaryTypeName","src":"1232:5:42","typeDescriptions":{}}}],"id":6018,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1231:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"}],"expression":{"id":6013,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1209:3:42","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1213:6:42","memberName":"decode","nodeType":"MemberAccess","src":"1209:10:42","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1209:30:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":5987,"id":6020,"nodeType":"Return","src":"1202:37:42"}]},"id":6022,"implemented":true,"kind":"function","modifiers":[],"name":"catchEncodedResult","nameLocation":"607:18:42","nodeType":"FunctionDefinition","parameters":{"id":5984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5983,"mutability":"mutable","name":"resultRaw","nameLocation":"639:9:42","nodeType":"VariableDeclaration","scope":6022,"src":"626:22:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5982,"name":"bytes","nodeType":"ElementaryTypeName","src":"626:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"625:24:42"},"returnParameters":{"id":5987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6022,"src":"673:12:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5985,"name":"bytes","nodeType":"ElementaryTypeName","src":"673:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"672:14:42"},"scope":6060,"src":"598:648:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6040,"nodeType":"Block","src":"1429:258:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6030,"name":"callResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6025,"src":"1443:10:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1454:6:42","memberName":"length","nodeType":"MemberAccess","src":"1443:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":6032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1463:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1443:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6038,"nodeType":"IfStatement","src":"1439:82:42","trueBody":{"id":6037,"nodeType":"Block","src":"1466:55:42","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6034,"name":"ErrorSelectorNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"1487:21:42","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1487:23:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6036,"nodeType":"RevertStatement","src":"1480:30:42"}]}},{"AST":{"nativeSrc":"1555:126:42","nodeType":"YulBlock","src":"1555:126:42","statements":[{"nativeSrc":"1569:45:42","nodeType":"YulAssignment","src":"1569:45:42","value":{"arguments":[{"arguments":[{"name":"callResult","nativeSrc":"1596:10:42","nodeType":"YulIdentifier","src":"1596:10:42"},{"kind":"number","nativeSrc":"1608:4:42","nodeType":"YulLiteral","src":"1608:4:42","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1592:3:42","nodeType":"YulIdentifier","src":"1592:3:42"},"nativeSrc":"1592:21:42","nodeType":"YulFunctionCall","src":"1592:21:42"}],"functionName":{"name":"mload","nativeSrc":"1586:5:42","nodeType":"YulIdentifier","src":"1586:5:42"},"nativeSrc":"1586:28:42","nodeType":"YulFunctionCall","src":"1586:28:42"},"variableNames":[{"name":"errorSelector","nativeSrc":"1569:13:42","nodeType":"YulIdentifier","src":"1569:13:42"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":6025,"isOffset":false,"isSlot":false,"src":"1596:10:42","valueSize":1},{"declaration":6028,"isOffset":false,"isSlot":false,"src":"1569:13:42","valueSize":1}],"flags":["memory-safe"],"id":6039,"nodeType":"InlineAssembly","src":"1530:151:42"}]},"documentation":{"id":6023,"nodeType":"StructuredDocumentation","src":"1252:79:42","text":"@dev Returns the first 4 bytes in an array, reverting if the length is < 4."},"id":6041,"implemented":true,"kind":"function","modifiers":[],"name":"parseSelector","nameLocation":"1345:13:42","nodeType":"FunctionDefinition","parameters":{"id":6026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6025,"mutability":"mutable","name":"callResult","nameLocation":"1372:10:42","nodeType":"VariableDeclaration","scope":6041,"src":"1359:23:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6024,"name":"bytes","nodeType":"ElementaryTypeName","src":"1359:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1358:25:42"},"returnParameters":{"id":6029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6028,"mutability":"mutable","name":"errorSelector","nameLocation":"1414:13:42","nodeType":"VariableDeclaration","scope":6041,"src":"1407:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6027,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1407:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1406:22:42"},"scope":6060,"src":"1336:351:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6058,"nodeType":"Block","src":"1804:441:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6047,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6044,"src":"1881:10:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1892:6:42","memberName":"length","nodeType":"MemberAccess","src":"1881:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1901:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1881:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6056,"nodeType":"Block","src":"2184:55:42","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6053,"name":"ErrorSelectorNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5981,"src":"2205:21:42","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2205:23:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6055,"nodeType":"RevertStatement","src":"2198:30:42"}]},"id":6057,"nodeType":"IfStatement","src":"1877:362:42","trueBody":{"id":6052,"nodeType":"Block","src":"1904:274:42","statements":[{"AST":{"nativeSrc":"2033:135:42","nodeType":"YulBlock","src":"2033:135:42","statements":[{"nativeSrc":"2051:41:42","nodeType":"YulVariableDeclaration","src":"2051:41:42","value":{"arguments":[{"name":"returnData","nativeSrc":"2081:10:42","nodeType":"YulIdentifier","src":"2081:10:42"}],"functionName":{"name":"mload","nativeSrc":"2075:5:42","nodeType":"YulIdentifier","src":"2075:5:42"},"nativeSrc":"2075:17:42","nodeType":"YulFunctionCall","src":"2075:17:42"},"variables":[{"name":"return_data_size","nativeSrc":"2055:16:42","nodeType":"YulTypedName","src":"2055:16:42","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2120:2:42","nodeType":"YulLiteral","src":"2120:2:42","type":"","value":"32"},{"name":"returnData","nativeSrc":"2124:10:42","nodeType":"YulIdentifier","src":"2124:10:42"}],"functionName":{"name":"add","nativeSrc":"2116:3:42","nodeType":"YulIdentifier","src":"2116:3:42"},"nativeSrc":"2116:19:42","nodeType":"YulFunctionCall","src":"2116:19:42"},{"name":"return_data_size","nativeSrc":"2137:16:42","nodeType":"YulIdentifier","src":"2137:16:42"}],"functionName":{"name":"revert","nativeSrc":"2109:6:42","nodeType":"YulIdentifier","src":"2109:6:42"},"nativeSrc":"2109:45:42","nodeType":"YulFunctionCall","src":"2109:45:42"},"nativeSrc":"2109:45:42","nodeType":"YulExpressionStatement","src":"2109:45:42"}]},"evmVersion":"cancun","externalReferences":[{"declaration":6044,"isOffset":false,"isSlot":false,"src":"2081:10:42","valueSize":1},{"declaration":6044,"isOffset":false,"isSlot":false,"src":"2124:10:42","valueSize":1}],"flags":["memory-safe"],"id":6051,"nodeType":"InlineAssembly","src":"2008:160:42"}]}}]},"documentation":{"id":6042,"nodeType":"StructuredDocumentation","src":"1693:43:42","text":"@dev Taken from Openzeppelin's Address."},"id":6059,"implemented":true,"kind":"function","modifiers":[],"name":"bubbleUpRevert","nameLocation":"1750:14:42","nodeType":"FunctionDefinition","parameters":{"id":6045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6044,"mutability":"mutable","name":"returnData","nameLocation":"1778:10:42","nodeType":"VariableDeclaration","scope":6059,"src":"1765:23:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6043,"name":"bytes","nodeType":"ElementaryTypeName","src":"1765:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1764:25:42"},"returnParameters":{"id":6046,"nodeType":"ParameterList","parameters":[],"src":"1804:0:42"},"scope":6060,"src":"1741:504:42","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6061,"src":"231:2016:42","usedErrors":[5978,5981],"usedEvents":[]}],"src":"46:2202:42"},"id":42},"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","exportedSymbols":{"FixedPoint":[7834],"InputHelpers":[5819],"ScalingHelpers":[6474]},"id":6475,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6062,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:43"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"../math/FixedPoint.sol","id":6064,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6475,"sourceUnit":7835,"src":"72:52:43","symbolAliases":[{"foreign":{"id":6063,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"81:10:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","file":"./InputHelpers.sol","id":6066,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6475,"sourceUnit":5820,"src":"125:50:43","symbolAliases":[{"foreign":{"id":6065,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"134:12:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ScalingHelpers","contractDependencies":[],"contractKind":"library","documentation":{"id":6067,"nodeType":"StructuredDocumentation","src":"177:760:43","text":" @notice Helper functions to apply/undo token decimal and rate adjustments, rounding in the direction indicated.\n @dev To simplify Pool logic, all token balances and amounts are normalized to behave as if the token had\n 18 decimals. When comparing DAI (18 decimals) and USDC (6 decimals), 1 USDC and 1 DAI would both be\n represented as 1e18. This allows us to not consider differences in token decimals in the internal Pool\n math, simplifying it greatly.\n The Vault does not support tokens with more than 18 decimals (see `_MAX_TOKEN_DECIMALS` in `VaultStorage`),\n or tokens that do not implement `IERC20Metadata.decimals`.\n These helpers can also be used to scale amounts by other 18-decimal floating point values, such as rates."},"fullyImplemented":true,"id":6474,"linearizedBaseContracts":[6474],"name":"ScalingHelpers","nameLocation":"946:14:43","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6069,"libraryName":{"id":6068,"name":"FixedPoint","nameLocations":["973:10:43"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"973:10:43"},"nodeType":"UsingForDirective","src":"967:23:43"},{"global":false,"id":6072,"libraryName":{"id":6070,"name":"ScalingHelpers","nameLocations":["1001:14:43"],"nodeType":"IdentifierPath","referencedDeclaration":6474,"src":"1001:14:43"},"nodeType":"UsingForDirective","src":"995:33:43","typeName":{"id":6071,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":6092,"nodeType":"Block","src":"1928:67:43","statements":[{"expression":{"arguments":[{"id":6089,"name":"tokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6079,"src":"1978:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6084,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6075,"src":"1946:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6085,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6077,"src":"1955:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1946:22:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6087,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1945:24:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1970:7:43","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"1945:32:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1945:43:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6083,"id":6091,"nodeType":"Return","src":"1938:50:43"}]},"documentation":{"id":6073,"nodeType":"StructuredDocumentation","src":"1252:513:43","text":" @notice Applies `scalingFactor` and `tokenRate` to `amount`.\n @dev This may result in a larger or equal value, depending on whether it needed scaling/rate adjustment or not.\n The result is rounded down.\n @param amount Amount to be scaled up to 18 decimals\n @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n @param tokenRate The token rate scaling factor\n @return result The final 18-decimal precision result, rounded down"},"id":6093,"implemented":true,"kind":"function","modifiers":[],"name":"toScaled18ApplyRateRoundDown","nameLocation":"1779:28:43","nodeType":"FunctionDefinition","parameters":{"id":6080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6075,"mutability":"mutable","name":"amount","nameLocation":"1825:6:43","nodeType":"VariableDeclaration","scope":6093,"src":"1817:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6074,"name":"uint256","nodeType":"ElementaryTypeName","src":"1817:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6077,"mutability":"mutable","name":"scalingFactor","nameLocation":"1849:13:43","nodeType":"VariableDeclaration","scope":6093,"src":"1841:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6076,"name":"uint256","nodeType":"ElementaryTypeName","src":"1841:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6079,"mutability":"mutable","name":"tokenRate","nameLocation":"1880:9:43","nodeType":"VariableDeclaration","scope":6093,"src":"1872:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6078,"name":"uint256","nodeType":"ElementaryTypeName","src":"1872:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1807:88:43"},"returnParameters":{"id":6083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6093,"src":"1919:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1918:9:43"},"scope":6474,"src":"1770:225:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6113,"nodeType":"Block","src":"2671:65:43","statements":[{"expression":{"arguments":[{"id":6110,"name":"tokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6100,"src":"2719:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6105,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"2689:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6106,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6098,"src":"2698:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2689:22:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6108,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2688:24:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2713:5:43","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"2688:30:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2688:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6104,"id":6112,"nodeType":"Return","src":"2681:48:43"}]},"documentation":{"id":6094,"nodeType":"StructuredDocumentation","src":"2001:509:43","text":" @notice Applies `scalingFactor` and `tokenRate` to `amount`.\n @dev This may result in a larger or equal value, depending on whether it needed scaling/rate adjustment or not.\n The result is rounded up.\n @param amount Amount to be scaled up to 18 decimals\n @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n @param tokenRate The token rate scaling factor\n @return result The final 18-decimal precision result, rounded up"},"id":6114,"implemented":true,"kind":"function","modifiers":[],"name":"toScaled18ApplyRateRoundUp","nameLocation":"2524:26:43","nodeType":"FunctionDefinition","parameters":{"id":6101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6096,"mutability":"mutable","name":"amount","nameLocation":"2568:6:43","nodeType":"VariableDeclaration","scope":6114,"src":"2560:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6095,"name":"uint256","nodeType":"ElementaryTypeName","src":"2560:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6098,"mutability":"mutable","name":"scalingFactor","nameLocation":"2592:13:43","nodeType":"VariableDeclaration","scope":6114,"src":"2584:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6097,"name":"uint256","nodeType":"ElementaryTypeName","src":"2584:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6100,"mutability":"mutable","name":"tokenRate","nameLocation":"2623:9:43","nodeType":"VariableDeclaration","scope":6114,"src":"2615:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6099,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2550:88:43"},"returnParameters":{"id":6104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6103,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6114,"src":"2662:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6102,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2661:9:43"},"scope":6474,"src":"2515:221:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6134,"nodeType":"Block","src":"3432:266:43","statements":[{"expression":{"arguments":[{"id":6128,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3657:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6129,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6119,"src":"3665:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6130,"name":"tokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6121,"src":"3681:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3665:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6126,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"3638:10:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3649:7:43","memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"3638:18:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3638:53:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6125,"id":6133,"nodeType":"Return","src":"3631:60:43"}]},"documentation":{"id":6115,"nodeType":"StructuredDocumentation","src":"2742:533:43","text":" @notice Reverses the `scalingFactor` and `tokenRate` applied to `amount`.\n @dev This may result in a smaller or equal value, depending on whether it needed scaling/rate adjustment or not.\n The result is rounded down.\n @param amount Amount to be scaled down to native token decimals\n @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n @param tokenRate The token rate scaling factor\n @return result The final native decimal result, rounded down"},"id":6135,"implemented":true,"kind":"function","modifiers":[],"name":"toRawUndoRateRoundDown","nameLocation":"3289:22:43","nodeType":"FunctionDefinition","parameters":{"id":6122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6117,"mutability":"mutable","name":"amount","nameLocation":"3329:6:43","nodeType":"VariableDeclaration","scope":6135,"src":"3321:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6116,"name":"uint256","nodeType":"ElementaryTypeName","src":"3321:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6119,"mutability":"mutable","name":"scalingFactor","nameLocation":"3353:13:43","nodeType":"VariableDeclaration","scope":6135,"src":"3345:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6118,"name":"uint256","nodeType":"ElementaryTypeName","src":"3345:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6121,"mutability":"mutable","name":"tokenRate","nameLocation":"3384:9:43","nodeType":"VariableDeclaration","scope":6135,"src":"3376:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6120,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3311:88:43"},"returnParameters":{"id":6125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6135,"src":"3423:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6123,"name":"uint256","nodeType":"ElementaryTypeName","src":"3423:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3422:9:43"},"scope":6474,"src":"3280:418:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6155,"nodeType":"Block","src":"4388:264:43","statements":[{"expression":{"arguments":[{"id":6149,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6138,"src":"4611:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6150,"name":"scalingFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6140,"src":"4619:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6151,"name":"tokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6142,"src":"4635:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4619:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6147,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"4594:10:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":6148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4605:5:43","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"4594:16:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4594:51:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6146,"id":6154,"nodeType":"Return","src":"4587:58:43"}]},"documentation":{"id":6136,"nodeType":"StructuredDocumentation","src":"3704:529:43","text":" @notice Reverses the `scalingFactor` and `tokenRate` applied to `amount`.\n @dev This may result in a smaller or equal value, depending on whether it needed scaling/rate adjustment or not.\n The result is rounded up.\n @param amount Amount to be scaled down to native token decimals\n @param scalingFactor The token decimal scaling factor, `10^(18-tokenDecimals)`\n @param tokenRate The token rate scaling factor\n @return result The final native decimal result, rounded up"},"id":6156,"implemented":true,"kind":"function","modifiers":[],"name":"toRawUndoRateRoundUp","nameLocation":"4247:20:43","nodeType":"FunctionDefinition","parameters":{"id":6143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6138,"mutability":"mutable","name":"amount","nameLocation":"4285:6:43","nodeType":"VariableDeclaration","scope":6156,"src":"4277:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6137,"name":"uint256","nodeType":"ElementaryTypeName","src":"4277:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6140,"mutability":"mutable","name":"scalingFactor","nameLocation":"4309:13:43","nodeType":"VariableDeclaration","scope":6156,"src":"4301:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6139,"name":"uint256","nodeType":"ElementaryTypeName","src":"4301:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6142,"mutability":"mutable","name":"tokenRate","nameLocation":"4340:9:43","nodeType":"VariableDeclaration","scope":6156,"src":"4332:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6141,"name":"uint256","nodeType":"ElementaryTypeName","src":"4332:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4267:88:43"},"returnParameters":{"id":6146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6156,"src":"4379:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6144,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4378:9:43"},"scope":6474,"src":"4238:414:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6179,"nodeType":"Block","src":"4952:280:43","statements":[{"assignments":[6166],"declarations":[{"constant":false,"id":6166,"mutability":"mutable","name":"length","nameLocation":"4970:6:43","nodeType":"VariableDeclaration","scope":6179,"src":"4962:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6165,"name":"uint256","nodeType":"ElementaryTypeName","src":"4962:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6169,"initialValue":{"expression":{"id":6167,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"4979:4:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4984:6:43","memberName":"length","nodeType":"MemberAccess","src":"4979:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4962:28:43"},{"expression":{"arguments":[{"id":6173,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6166,"src":"5036:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6174,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6162,"src":"5044:2:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5047:6:43","memberName":"length","nodeType":"MemberAccess","src":"5044:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6170,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"5000:12:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":6172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5013:22:43","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5611,"src":"5000:35:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":6176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5000:54:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6177,"nodeType":"ExpressionStatement","src":"5000:54:43"},{"AST":{"nativeSrc":"5146:80:43","nodeType":"YulBlock","src":"5146:80:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"to","nativeSrc":"5170:2:43","nodeType":"YulIdentifier","src":"5170:2:43"},{"kind":"number","nativeSrc":"5174:4:43","nodeType":"YulLiteral","src":"5174:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5166:3:43","nodeType":"YulIdentifier","src":"5166:3:43"},"nativeSrc":"5166:13:43","nodeType":"YulFunctionCall","src":"5166:13:43"},{"arguments":[{"name":"from","nativeSrc":"5185:4:43","nodeType":"YulIdentifier","src":"5185:4:43"},{"kind":"number","nativeSrc":"5191:4:43","nodeType":"YulLiteral","src":"5191:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5181:3:43","nodeType":"YulIdentifier","src":"5181:3:43"},"nativeSrc":"5181:15:43","nodeType":"YulFunctionCall","src":"5181:15:43"},{"arguments":[{"name":"length","nativeSrc":"5202:6:43","nodeType":"YulIdentifier","src":"5202:6:43"},{"kind":"number","nativeSrc":"5210:4:43","nodeType":"YulLiteral","src":"5210:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nativeSrc":"5198:3:43","nodeType":"YulIdentifier","src":"5198:3:43"},"nativeSrc":"5198:17:43","nodeType":"YulFunctionCall","src":"5198:17:43"}],"functionName":{"name":"mcopy","nativeSrc":"5160:5:43","nodeType":"YulIdentifier","src":"5160:5:43"},"nativeSrc":"5160:56:43","nodeType":"YulFunctionCall","src":"5160:56:43"},"nativeSrc":"5160:56:43","nodeType":"YulExpressionStatement","src":"5160:56:43"}]},"evmVersion":"cancun","externalReferences":[{"declaration":6159,"isOffset":false,"isSlot":false,"src":"5185:4:43","valueSize":1},{"declaration":6166,"isOffset":false,"isSlot":false,"src":"5202:6:43","valueSize":1},{"declaration":6162,"isOffset":false,"isSlot":false,"src":"5170:2:43","valueSize":1}],"flags":["memory-safe"],"id":6178,"nodeType":"InlineAssembly","src":"5121:105:43"}]},"id":6180,"implemented":true,"kind":"function","modifiers":[],"name":"copyToArray","nameLocation":"4882:11:43","nodeType":"FunctionDefinition","parameters":{"id":6163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6159,"mutability":"mutable","name":"from","nameLocation":"4911:4:43","nodeType":"VariableDeclaration","scope":6180,"src":"4894:21:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6157,"name":"uint256","nodeType":"ElementaryTypeName","src":"4894:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6158,"nodeType":"ArrayTypeName","src":"4894:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6162,"mutability":"mutable","name":"to","nameLocation":"4934:2:43","nodeType":"VariableDeclaration","scope":6180,"src":"4917:19:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6160,"name":"uint256","nodeType":"ElementaryTypeName","src":"4917:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6161,"nodeType":"ArrayTypeName","src":"4917:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4893:44:43"},"returnParameters":{"id":6164,"nodeType":"ParameterList","parameters":[],"src":"4952:0:43"},"scope":6474,"src":"4873:359:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6236,"nodeType":"Block","src":"5892:301:43","statements":[{"assignments":[6194],"declarations":[{"constant":false,"id":6194,"mutability":"mutable","name":"length","nameLocation":"5910:6:43","nodeType":"VariableDeclaration","scope":6236,"src":"5902:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6193,"name":"uint256","nodeType":"ElementaryTypeName","src":"5902:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6197,"initialValue":{"expression":{"id":6195,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6184,"src":"5919:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5927:6:43","memberName":"length","nodeType":"MemberAccess","src":"5919:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5902:31:43"},{"expression":{"arguments":[{"id":6201,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"5979:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6202,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6187,"src":"5987:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6002:6:43","memberName":"length","nodeType":"MemberAccess","src":"5987:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6204,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6190,"src":"6010:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:6:43","memberName":"length","nodeType":"MemberAccess","src":"6010:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6198,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"5943:12:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5956:22:43","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5633,"src":"5943:35:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":6206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:85:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6207,"nodeType":"ExpressionStatement","src":"5943:85:43"},{"body":{"id":6234,"nodeType":"Block","src":"6076:111:43","statements":[{"expression":{"id":6232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6218,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6184,"src":"6090:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6220,"indexExpression":{"id":6219,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"6098:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6090:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":6225,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6187,"src":"6143:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6227,"indexExpression":{"id":6226,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"6158:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6143:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6228,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6190,"src":"6162:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6230,"indexExpression":{"id":6229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"6173:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6162:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6221,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6184,"src":"6103:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6223,"indexExpression":{"id":6222,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"6111:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6103:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6114:28:43","memberName":"toScaled18ApplyRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"6103:39:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6103:73:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6090:86:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6233,"nodeType":"ExpressionStatement","src":"6090:86:43"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6212,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"6059:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6213,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"6063:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6059:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6235,"initializationExpression":{"assignments":[6209],"declarations":[{"constant":false,"id":6209,"mutability":"mutable","name":"i","nameLocation":"6052:1:43","nodeType":"VariableDeclaration","scope":6235,"src":"6044:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6208,"name":"uint256","nodeType":"ElementaryTypeName","src":"6044:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6211,"initialValue":{"hexValue":"30","id":6210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6056:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6044:13:43"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6071:3:43","subExpression":{"id":6215,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"6073:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6217,"nodeType":"ExpressionStatement","src":"6071:3:43"},"nodeType":"ForStatement","src":"6039:148:43"}]},"documentation":{"id":6181,"nodeType":"StructuredDocumentation","src":"5238:474:43","text":" @notice Same as `toScaled18ApplyRateRoundDown`, but for an entire array.\n @dev This function does not return anything, but instead *mutates* the `amounts` array.\n @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n @param scalingFactors The token decimal scaling factors, sorted in token registration order\n @param tokenRates The token rate scaling factors, sorted in token registration order"},"id":6237,"implemented":true,"kind":"function","modifiers":[],"name":"toScaled18ApplyRateRoundDownArray","nameLocation":"5726:33:43","nodeType":"FunctionDefinition","parameters":{"id":6191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6184,"mutability":"mutable","name":"amounts","nameLocation":"5786:7:43","nodeType":"VariableDeclaration","scope":6237,"src":"5769:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6182,"name":"uint256","nodeType":"ElementaryTypeName","src":"5769:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6183,"nodeType":"ArrayTypeName","src":"5769:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6187,"mutability":"mutable","name":"scalingFactors","nameLocation":"5820:14:43","nodeType":"VariableDeclaration","scope":6237,"src":"5803:31:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6185,"name":"uint256","nodeType":"ElementaryTypeName","src":"5803:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6186,"nodeType":"ArrayTypeName","src":"5803:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6190,"mutability":"mutable","name":"tokenRates","nameLocation":"5861:10:43","nodeType":"VariableDeclaration","scope":6237,"src":"5844:27:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6188,"name":"uint256","nodeType":"ElementaryTypeName","src":"5844:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6189,"nodeType":"ArrayTypeName","src":"5844:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5759:118:43"},"returnParameters":{"id":6192,"nodeType":"ParameterList","parameters":[],"src":"5892:0:43"},"scope":6474,"src":"5717:476:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6309,"nodeType":"Block","src":"6920:408:43","statements":[{"assignments":[6254],"declarations":[{"constant":false,"id":6254,"mutability":"mutable","name":"length","nameLocation":"6938:6:43","nodeType":"VariableDeclaration","scope":6309,"src":"6930:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6253,"name":"uint256","nodeType":"ElementaryTypeName","src":"6930:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6257,"initialValue":{"expression":{"id":6255,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6241,"src":"6947:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6955:6:43","memberName":"length","nodeType":"MemberAccess","src":"6947:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6930:31:43"},{"expression":{"arguments":[{"id":6261,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"7007:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6262,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"7015:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7030:6:43","memberName":"length","nodeType":"MemberAccess","src":"7015:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6264,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"7038:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7049:6:43","memberName":"length","nodeType":"MemberAccess","src":"7038:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6258,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"6971:12:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":6260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6984:22:43","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5633,"src":"6971:35:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":6266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6971:85:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6267,"nodeType":"ExpressionStatement","src":"6971:85:43"},{"assignments":[6272],"declarations":[{"constant":false,"id":6272,"mutability":"mutable","name":"amountsScaled18","nameLocation":"7083:15:43","nodeType":"VariableDeclaration","scope":6309,"src":"7066:32:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6270,"name":"uint256","nodeType":"ElementaryTypeName","src":"7066:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6271,"nodeType":"ArrayTypeName","src":"7066:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6278,"initialValue":{"arguments":[{"id":6276,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"7115:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7101:13:43","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6273,"name":"uint256","nodeType":"ElementaryTypeName","src":"7105:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6274,"nodeType":"ArrayTypeName","src":"7105:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7101:21:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7066:56:43"},{"body":{"id":6305,"nodeType":"Block","src":"7170:119:43","statements":[{"expression":{"id":6303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6289,"name":"amountsScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6272,"src":"7184:15:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6291,"indexExpression":{"id":6290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6280,"src":"7200:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7184:18:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":6296,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6244,"src":"7245:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6298,"indexExpression":{"id":6297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6280,"src":"7260:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7245:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6299,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"7264:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6301,"indexExpression":{"id":6300,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6280,"src":"7275:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7264:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6292,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6241,"src":"7205:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6294,"indexExpression":{"id":6293,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6280,"src":"7213:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7205:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7216:28:43","memberName":"toScaled18ApplyRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"7205:39:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7205:73:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7184:94:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6304,"nodeType":"ExpressionStatement","src":"7184:94:43"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6283,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6280,"src":"7153:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6284,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6254,"src":"7157:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7153:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6306,"initializationExpression":{"assignments":[6280],"declarations":[{"constant":false,"id":6280,"mutability":"mutable","name":"i","nameLocation":"7146:1:43","nodeType":"VariableDeclaration","scope":6306,"src":"7138:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6279,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6282,"initialValue":{"hexValue":"30","id":6281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7150:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7138:13:43"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7165:3:43","subExpression":{"id":6286,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6280,"src":"7167:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6288,"nodeType":"ExpressionStatement","src":"7165:3:43"},"nodeType":"ForStatement","src":"7133:156:43"},{"expression":{"id":6307,"name":"amountsScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6272,"src":"7306:15:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":6252,"id":6308,"nodeType":"Return","src":"7299:22:43"}]},"documentation":{"id":6238,"nodeType":"StructuredDocumentation","src":"6199:510:43","text":" @notice Same as `toScaled18ApplyRateRoundDown`, but returns a new array, leaving the original intact.\n @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n @param scalingFactors The token decimal scaling factors, sorted in token registration order\n @param tokenRates The token rate scaling factors, sorted in token registration order\n @return results The final 18 decimal results, sorted in token registration order, rounded down"},"id":6310,"implemented":true,"kind":"function","modifiers":[],"name":"copyToScaled18ApplyRateRoundDownArray","nameLocation":"6723:37:43","nodeType":"FunctionDefinition","parameters":{"id":6248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6241,"mutability":"mutable","name":"amounts","nameLocation":"6787:7:43","nodeType":"VariableDeclaration","scope":6310,"src":"6770:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6239,"name":"uint256","nodeType":"ElementaryTypeName","src":"6770:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6240,"nodeType":"ArrayTypeName","src":"6770:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6244,"mutability":"mutable","name":"scalingFactors","nameLocation":"6821:14:43","nodeType":"VariableDeclaration","scope":6310,"src":"6804:31:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6242,"name":"uint256","nodeType":"ElementaryTypeName","src":"6804:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6243,"nodeType":"ArrayTypeName","src":"6804:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6247,"mutability":"mutable","name":"tokenRates","nameLocation":"6862:10:43","nodeType":"VariableDeclaration","scope":6310,"src":"6845:27:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6245,"name":"uint256","nodeType":"ElementaryTypeName","src":"6845:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6246,"nodeType":"ArrayTypeName","src":"6845:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6760:118:43"},"returnParameters":{"id":6252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6310,"src":"6902:16:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6249,"name":"uint256","nodeType":"ElementaryTypeName","src":"6902:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6250,"nodeType":"ArrayTypeName","src":"6902:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6901:18:43"},"scope":6474,"src":"6714:614:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6366,"nodeType":"Block","src":"7984:299:43","statements":[{"assignments":[6324],"declarations":[{"constant":false,"id":6324,"mutability":"mutable","name":"length","nameLocation":"8002:6:43","nodeType":"VariableDeclaration","scope":6366,"src":"7994:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6323,"name":"uint256","nodeType":"ElementaryTypeName","src":"7994:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6327,"initialValue":{"expression":{"id":6325,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"8011:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8019:6:43","memberName":"length","nodeType":"MemberAccess","src":"8011:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7994:31:43"},{"expression":{"arguments":[{"id":6331,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"8071:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6332,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6317,"src":"8079:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8094:6:43","memberName":"length","nodeType":"MemberAccess","src":"8079:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6334,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"8102:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8113:6:43","memberName":"length","nodeType":"MemberAccess","src":"8102:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6328,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"8035:12:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":6330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8048:22:43","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5633,"src":"8035:35:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":6336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8035:85:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6337,"nodeType":"ExpressionStatement","src":"8035:85:43"},{"body":{"id":6364,"nodeType":"Block","src":"8168:109:43","statements":[{"expression":{"id":6362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6348,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"8182:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6350,"indexExpression":{"id":6349,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"8190:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8182:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":6355,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6317,"src":"8233:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6357,"indexExpression":{"id":6356,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"8248:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8233:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6358,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6320,"src":"8252:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6360,"indexExpression":{"id":6359,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"8263:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8252:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6351,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"8195:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6353,"indexExpression":{"id":6352,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"8203:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8195:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8206:26:43","memberName":"toScaled18ApplyRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6114,"src":"8195:37:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8195:71:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8182:84:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6363,"nodeType":"ExpressionStatement","src":"8182:84:43"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6342,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"8151:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6343,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"8155:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8151:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6365,"initializationExpression":{"assignments":[6339],"declarations":[{"constant":false,"id":6339,"mutability":"mutable","name":"i","nameLocation":"8144:1:43","nodeType":"VariableDeclaration","scope":6365,"src":"8136:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6338,"name":"uint256","nodeType":"ElementaryTypeName","src":"8136:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6341,"initialValue":{"hexValue":"30","id":6340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8148:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8136:13:43"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8163:3:43","subExpression":{"id":6345,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"8165:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6347,"nodeType":"ExpressionStatement","src":"8163:3:43"},"nodeType":"ForStatement","src":"8131:146:43"}]},"documentation":{"id":6311,"nodeType":"StructuredDocumentation","src":"7334:472:43","text":" @notice Same as `toScaled18ApplyRateRoundUp`, but for an entire array.\n @dev This function does not return anything, but instead *mutates* the `amounts` array.\n @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n @param scalingFactors The token decimal scaling factors, sorted in token registration order\n @param tokenRates The token rate scaling factors, sorted in token registration order"},"id":6367,"implemented":true,"kind":"function","modifiers":[],"name":"toScaled18ApplyRateRoundUpArray","nameLocation":"7820:31:43","nodeType":"FunctionDefinition","parameters":{"id":6321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6314,"mutability":"mutable","name":"amounts","nameLocation":"7878:7:43","nodeType":"VariableDeclaration","scope":6367,"src":"7861:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6312,"name":"uint256","nodeType":"ElementaryTypeName","src":"7861:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6313,"nodeType":"ArrayTypeName","src":"7861:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6317,"mutability":"mutable","name":"scalingFactors","nameLocation":"7912:14:43","nodeType":"VariableDeclaration","scope":6367,"src":"7895:31:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6315,"name":"uint256","nodeType":"ElementaryTypeName","src":"7895:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6316,"nodeType":"ArrayTypeName","src":"7895:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6320,"mutability":"mutable","name":"tokenRates","nameLocation":"7953:10:43","nodeType":"VariableDeclaration","scope":6367,"src":"7936:27:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6318,"name":"uint256","nodeType":"ElementaryTypeName","src":"7936:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6319,"nodeType":"ArrayTypeName","src":"7936:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7851:118:43"},"returnParameters":{"id":6322,"nodeType":"ParameterList","parameters":[],"src":"7984:0:43"},"scope":6474,"src":"7811:472:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6439,"nodeType":"Block","src":"9004:406:43","statements":[{"assignments":[6384],"declarations":[{"constant":false,"id":6384,"mutability":"mutable","name":"length","nameLocation":"9022:6:43","nodeType":"VariableDeclaration","scope":6439,"src":"9014:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6383,"name":"uint256","nodeType":"ElementaryTypeName","src":"9014:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6387,"initialValue":{"expression":{"id":6385,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"9031:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9039:6:43","memberName":"length","nodeType":"MemberAccess","src":"9031:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9014:31:43"},{"expression":{"arguments":[{"id":6391,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"9091:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6392,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"9099:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9114:6:43","memberName":"length","nodeType":"MemberAccess","src":"9099:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6394,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"9122:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9133:6:43","memberName":"length","nodeType":"MemberAccess","src":"9122:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6388,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"9055:12:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9068:22:43","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5633,"src":"9055:35:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9055:85:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6397,"nodeType":"ExpressionStatement","src":"9055:85:43"},{"assignments":[6402],"declarations":[{"constant":false,"id":6402,"mutability":"mutable","name":"amountsScaled18","nameLocation":"9167:15:43","nodeType":"VariableDeclaration","scope":6439,"src":"9150:32:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6400,"name":"uint256","nodeType":"ElementaryTypeName","src":"9150:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6401,"nodeType":"ArrayTypeName","src":"9150:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":6408,"initialValue":{"arguments":[{"id":6406,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"9199:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9185:13:43","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6403,"name":"uint256","nodeType":"ElementaryTypeName","src":"9189:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6404,"nodeType":"ArrayTypeName","src":"9189:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9185:21:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9150:56:43"},{"body":{"id":6435,"nodeType":"Block","src":"9254:117:43","statements":[{"expression":{"id":6433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6419,"name":"amountsScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6402,"src":"9268:15:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6421,"indexExpression":{"id":6420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9284:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9268:18:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":6426,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6374,"src":"9327:14:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6428,"indexExpression":{"id":6427,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9342:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9327:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":6429,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6377,"src":"9346:10:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6431,"indexExpression":{"id":6430,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9357:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9346:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":6422,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6371,"src":"9289:7:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6424,"indexExpression":{"id":6423,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9297:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9289:10:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9300:26:43","memberName":"toScaled18ApplyRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6114,"src":"9289:37:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9289:71:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9268:92:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6434,"nodeType":"ExpressionStatement","src":"9268:92:43"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6413,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9237:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6414,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6384,"src":"9241:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9237:10:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6436,"initializationExpression":{"assignments":[6410],"declarations":[{"constant":false,"id":6410,"mutability":"mutable","name":"i","nameLocation":"9230:1:43","nodeType":"VariableDeclaration","scope":6436,"src":"9222:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6409,"name":"uint256","nodeType":"ElementaryTypeName","src":"9222:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6412,"initialValue":{"hexValue":"30","id":6411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9234:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9222:13:43"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":6417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9249:3:43","subExpression":{"id":6416,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6410,"src":"9251:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6418,"nodeType":"ExpressionStatement","src":"9249:3:43"},"nodeType":"ForStatement","src":"9217:154:43"},{"expression":{"id":6437,"name":"amountsScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6402,"src":"9388:15:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":6382,"id":6438,"nodeType":"Return","src":"9381:22:43"}]},"documentation":{"id":6368,"nodeType":"StructuredDocumentation","src":"8289:506:43","text":" @notice Same as `toScaled18ApplyRateRoundUp`, but returns a new array, leaving the original intact.\n @param amounts Amounts to be scaled up to 18 decimals, sorted in token registration order\n @param scalingFactors The token decimal scaling factors, sorted in token registration order\n @param tokenRates The token rate scaling factors, sorted in token registration order\n @return results The final 18 decimal results, sorted in token registration order, rounded up"},"id":6440,"implemented":true,"kind":"function","modifiers":[],"name":"copyToScaled18ApplyRateRoundUpArray","nameLocation":"8809:35:43","nodeType":"FunctionDefinition","parameters":{"id":6378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6371,"mutability":"mutable","name":"amounts","nameLocation":"8871:7:43","nodeType":"VariableDeclaration","scope":6440,"src":"8854:24:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6369,"name":"uint256","nodeType":"ElementaryTypeName","src":"8854:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6370,"nodeType":"ArrayTypeName","src":"8854:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6374,"mutability":"mutable","name":"scalingFactors","nameLocation":"8905:14:43","nodeType":"VariableDeclaration","scope":6440,"src":"8888:31:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6372,"name":"uint256","nodeType":"ElementaryTypeName","src":"8888:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6373,"nodeType":"ArrayTypeName","src":"8888:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":6377,"mutability":"mutable","name":"tokenRates","nameLocation":"8946:10:43","nodeType":"VariableDeclaration","scope":6440,"src":"8929:27:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6375,"name":"uint256","nodeType":"ElementaryTypeName","src":"8929:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6376,"nodeType":"ArrayTypeName","src":"8929:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8844:118:43"},"returnParameters":{"id":6382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6440,"src":"8986:16:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6379,"name":"uint256","nodeType":"ElementaryTypeName","src":"8986:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6380,"nodeType":"ArrayTypeName","src":"8986:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8985:18:43"},"scope":6474,"src":"8800:610:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6472,"nodeType":"Block","src":"10004:387:43","statements":[{"assignments":[6449],"declarations":[{"constant":false,"id":6449,"mutability":"mutable","name":"roundedRate","nameLocation":"10022:11:43","nodeType":"VariableDeclaration","scope":6472,"src":"10014:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10014:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6450,"nodeType":"VariableDeclarationStatement","src":"10014:19:43"},{"id":6462,"nodeType":"UncheckedBlock","src":"10242:89:43","statements":[{"expression":{"id":6460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6451,"name":"roundedRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"10266:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6452,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"10281:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":6453,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"10288:10:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":6454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10299:3:43","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"10288:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10281:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10280:23:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":6457,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"10306:10:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":6458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10317:3:43","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"10306:14:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10280:40:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10266:54:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6461,"nodeType":"ExpressionStatement","src":"10266:54:43"}]},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6463,"name":"roundedRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"10347:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6464,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"10362:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10347:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6467,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"10376:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10383:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10376:8:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10347:37:43","trueExpression":{"id":6466,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6443,"src":"10369:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6447,"id":6471,"nodeType":"Return","src":"10340:44:43"}]},"documentation":{"id":6441,"nodeType":"StructuredDocumentation","src":"9416:509:43","text":" @notice Rounds up a rate informed by a rate provider.\n @dev Rates calculated by an external rate provider have rounding errors. Intuitively, a rate provider\n rounds the rate down so the pool math is executed with conservative amounts. However, when upscaling or\n downscaling the amount out, the rate should be rounded up to make sure the amounts scaled are conservative.\n @param rate The original rate\n @return roundedRate The final rate, with rounding applied"},"id":6473,"implemented":true,"kind":"function","modifiers":[],"name":"computeRateRoundUp","nameLocation":"9939:18:43","nodeType":"FunctionDefinition","parameters":{"id":6444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6443,"mutability":"mutable","name":"rate","nameLocation":"9966:4:43","nodeType":"VariableDeclaration","scope":6473,"src":"9958:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6442,"name":"uint256","nodeType":"ElementaryTypeName","src":"9958:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9957:14:43"},"returnParameters":{"id":6447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6473,"src":"9995:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6445,"name":"uint256","nodeType":"ElementaryTypeName","src":"9995:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9994:9:43"},"scope":6474,"src":"9930:461:43","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6475,"src":"938:9455:43","usedErrors":[],"usedEvents":[]}],"src":"46:10348:43"},"id":43},"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","exportedSymbols":{"AddressArraySlotType":[6490],"AddressToUintMappingSlot":[6486],"IERC20":[39274],"SlotDerivation":[9698],"StorageSlotExtension":[9911],"TokenDeltaMappingSlotType":[6484],"TransientStorageHelpers":[7068],"UintToAddressToBooleanMappingSlot":[6488]},"id":7069,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":6476,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:44"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":6478,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7069,"sourceUnit":39275,"src":"72:72:44","symbolAliases":[{"foreign":{"id":6477,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"../openzeppelin/StorageSlotExtension.sol","id":6480,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7069,"sourceUnit":9912,"src":"146:80:44","symbolAliases":[{"foreign":{"id":6479,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"155:20:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol","file":"../openzeppelin/SlotDerivation.sol","id":6482,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7069,"sourceUnit":9699,"src":"227:68:44","symbolAliases":[{"foreign":{"id":6481,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9698,"src":"236:14:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"TokenDeltaMappingSlotType","id":6484,"name":"TokenDeltaMappingSlotType","nameLocation":"302:25:44","nodeType":"UserDefinedValueTypeDefinition","src":"297:42:44","underlyingType":{"id":6483,"name":"bytes32","nodeType":"ElementaryTypeName","src":"331:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"AddressToUintMappingSlot","id":6486,"name":"AddressToUintMappingSlot","nameLocation":"345:24:44","nodeType":"UserDefinedValueTypeDefinition","src":"340:41:44","underlyingType":{"id":6485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"373:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"UintToAddressToBooleanMappingSlot","id":6488,"name":"UintToAddressToBooleanMappingSlot","nameLocation":"387:33:44","nodeType":"UserDefinedValueTypeDefinition","src":"382:50:44","underlyingType":{"id":6487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"424:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"canonicalName":"AddressArraySlotType","id":6490,"name":"AddressArraySlotType","nameLocation":"438:20:44","nodeType":"UserDefinedValueTypeDefinition","src":"433:37:44","underlyingType":{"id":6489,"name":"bytes32","nodeType":"ElementaryTypeName","src":"462:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"abstract":false,"baseContracts":[],"canonicalName":"TransientStorageHelpers","contractDependencies":[],"contractKind":"library","documentation":{"id":6491,"nodeType":"StructuredDocumentation","src":"472:518:44","text":" @notice Helper functions to read and write values from transient storage, including support for arrays and mappings.\n @dev This is temporary, based on Open Zeppelin's partially released library. When the final version is published, we\n should be able to remove our copies and import directly from OZ. When Solidity catches up and puts direct support\n for transient storage in the language, we should be able to get rid of this altogether.\n This only works on networks where EIP-1153 is supported."},"fullyImplemented":true,"id":7068,"linearizedBaseContracts":[7068],"name":"TransientStorageHelpers","nameLocation":"999:23:44","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6493,"libraryName":{"id":6492,"name":"SlotDerivation","nameLocations":["1035:14:44"],"nodeType":"IdentifierPath","referencedDeclaration":9698,"src":"1035:14:44"},"nodeType":"UsingForDirective","src":"1029:27:44"},{"global":false,"id":6495,"libraryName":{"id":6494,"name":"StorageSlotExtension","nameLocations":["1067:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"1067:20:44"},"nodeType":"UsingForDirective","src":"1061:33:44"},{"documentation":{"id":6496,"nodeType":"StructuredDocumentation","src":"1100:71:44","text":"@notice An index is out of bounds on an array operation (e.g., at)."},"errorSelector":"0f4ae0e4","id":6498,"name":"TransientIndexOutOfBounds","nameLocation":"1182:25:44","nodeType":"ErrorDefinition","parameters":{"id":6497,"nodeType":"ParameterList","parameters":[],"src":"1207:2:44"},"src":"1176:34:44"},{"body":{"id":6536,"nodeType":"Block","src":"1376:206:44","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":6534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"62616c616e6365722d6c6162732e76332e73746f726167652e","id":6515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1478:27:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_8857a2dfd119cac85e8d882459e5ce77774c99d694ba0ba60adafcc29f806768","typeString":"literal_string \"balancer-labs.v3.storage.\""},"value":"balancer-labs.v3.storage."},{"id":6516,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6500,"src":"1507:6:44","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2e","id":6517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1515:3:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf","typeString":"literal_string \".\""},"value":"."},{"id":6518,"name":"varName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6502,"src":"1520:7:44","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8857a2dfd119cac85e8d882459e5ce77774c99d694ba0ba60adafcc29f806768","typeString":"literal_string \"balancer-labs.v3.storage.\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf","typeString":"literal_string \".\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":6513,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1461:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1465:12:44","memberName":"encodePacked","nodeType":"MemberAccess","src":"1461:16:44","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1461:67:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6512,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1451:9:44","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:78:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1443:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1443:7:44","typeDescriptions":{}}},"id":6521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1443:87:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1533:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1443:91:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6508,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1432:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1436:6:44","memberName":"encode","nodeType":"MemberAccess","src":"1432:10:44","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1432:103:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6507,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1405:9:44","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1405:144:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"1552:23:44","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":6530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1569:4:44","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":6529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1561:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1561:7:44","typeDescriptions":{}}},"id":6531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1561:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1553:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":6526,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1553:7:44","typeDescriptions":{}}},"id":6532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1553:22:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1405:170:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6506,"id":6535,"nodeType":"Return","src":"1386:189:44"}]},"id":6537,"implemented":true,"kind":"function","modifiers":[],"name":"calculateSlot","nameLocation":"1285:13:44","nodeType":"FunctionDefinition","parameters":{"id":6503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6500,"mutability":"mutable","name":"domain","nameLocation":"1313:6:44","nodeType":"VariableDeclaration","scope":6537,"src":"1299:20:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6499,"name":"string","nodeType":"ElementaryTypeName","src":"1299:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6502,"mutability":"mutable","name":"varName","nameLocation":"1335:7:44","nodeType":"VariableDeclaration","scope":6537,"src":"1321:21:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6501,"name":"string","nodeType":"ElementaryTypeName","src":"1321:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1298:45:44"},"returnParameters":{"id":6506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6505,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6537,"src":"1367:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6504,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1367:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1366:9:44"},"scope":7068,"src":"1276:306:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6563,"nodeType":"Block","src":"1884:108:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":6555,"name":"k1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6543,"src":"1962:2:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":6554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1954:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6553,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:44","typeDescriptions":{}}},"id":6556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1954:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6550,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6540,"src":"1934:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}],"expression":{"id":6548,"name":"TokenDeltaMappingSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"1901:25:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"type(TokenDeltaMappingSlotType)"}},"id":6549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1927:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"1901:32:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$returns$_t_bytes32_$","typeString":"function (TokenDeltaMappingSlotType) pure returns (bytes32)"}},"id":6551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1940:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"1901:52:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:65:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1967:8:44","memberName":"asInt256","nodeType":"MemberAccess","referencedDeclaration":9800,"src":"1901:74:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Int256SlotType_$9785_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Int256SlotType)"}},"id":6559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:76:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"}},"id":6560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1978:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9899,"src":"1901:82:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Int256SlotType_$9785_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_Int256SlotType_$9785_$","typeString":"function (StorageSlotExtension.Int256SlotType) view returns (int256)"}},"id":6561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:84:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6547,"id":6562,"nodeType":"Return","src":"1894:91:44"}]},"id":6564,"implemented":true,"kind":"function","modifiers":[],"name":"tGet","nameLocation":"1805:4:44","nodeType":"FunctionDefinition","parameters":{"id":6544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6540,"mutability":"mutable","name":"slot","nameLocation":"1836:4:44","nodeType":"VariableDeclaration","scope":6564,"src":"1810:30:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"},"typeName":{"id":6539,"nodeType":"UserDefinedTypeName","pathNode":{"id":6538,"name":"TokenDeltaMappingSlotType","nameLocations":["1810:25:44"],"nodeType":"IdentifierPath","referencedDeclaration":6484,"src":"1810:25:44"},"referencedDeclaration":6484,"src":"1810:25:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"visibility":"internal"},{"constant":false,"id":6543,"mutability":"mutable","name":"k1","nameLocation":"1849:2:44","nodeType":"VariableDeclaration","scope":6564,"src":"1842:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":6542,"nodeType":"UserDefinedTypeName","pathNode":{"id":6541,"name":"IERC20","nameLocations":["1842:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1842:6:44"},"referencedDeclaration":39274,"src":"1842:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1809:43:44"},"returnParameters":{"id":6547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6564,"src":"1876:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6545,"name":"int256","nodeType":"ElementaryTypeName","src":"1876:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1875:8:44"},"scope":7068,"src":"1796:196:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6592,"nodeType":"Block","src":"2078:107:44","statements":[{"expression":{"arguments":[{"id":6589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6572,"src":"2172:5:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":6583,"name":"k1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6570,"src":"2149:2:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":6582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2141:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6581,"name":"address","nodeType":"ElementaryTypeName","src":"2141:7:44","typeDescriptions":{}}},"id":6584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6578,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6567,"src":"2121:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}],"expression":{"id":6575,"name":"TokenDeltaMappingSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"2088:25:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"type(TokenDeltaMappingSlotType)"}},"id":6577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2114:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"2088:32:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$returns$_t_bytes32_$","typeString":"function (TokenDeltaMappingSlotType) pure returns (bytes32)"}},"id":6579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2088:38:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2127:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"2088:52:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2088:65:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2154:8:44","memberName":"asInt256","nodeType":"MemberAccess","referencedDeclaration":9800,"src":"2088:74:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Int256SlotType_$9785_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Int256SlotType)"}},"id":6587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2088:76:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"}},"id":6588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2165:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9910,"src":"2088:83:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Int256SlotType_$9785_$_t_int256_$returns$__$attached_to$_t_userDefinedValueType$_Int256SlotType_$9785_$","typeString":"function (StorageSlotExtension.Int256SlotType,int256)"}},"id":6590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2088:90:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6591,"nodeType":"ExpressionStatement","src":"2088:90:44"}]},"id":6593,"implemented":true,"kind":"function","modifiers":[],"name":"tSet","nameLocation":"2007:4:44","nodeType":"FunctionDefinition","parameters":{"id":6573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6567,"mutability":"mutable","name":"slot","nameLocation":"2038:4:44","nodeType":"VariableDeclaration","scope":6593,"src":"2012:30:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"},"typeName":{"id":6566,"nodeType":"UserDefinedTypeName","pathNode":{"id":6565,"name":"TokenDeltaMappingSlotType","nameLocations":["2012:25:44"],"nodeType":"IdentifierPath","referencedDeclaration":6484,"src":"2012:25:44"},"referencedDeclaration":6484,"src":"2012:25:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"visibility":"internal"},{"constant":false,"id":6570,"mutability":"mutable","name":"k1","nameLocation":"2051:2:44","nodeType":"VariableDeclaration","scope":6593,"src":"2044:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":6569,"nodeType":"UserDefinedTypeName","pathNode":{"id":6568,"name":"IERC20","nameLocations":["2044:6:44"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2044:6:44"},"referencedDeclaration":39274,"src":"2044:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":6572,"mutability":"mutable","name":"value","nameLocation":"2062:5:44","nodeType":"VariableDeclaration","scope":6593,"src":"2055:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6571,"name":"int256","nodeType":"ElementaryTypeName","src":"2055:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2011:57:44"},"returnParameters":{"id":6574,"nodeType":"ParameterList","parameters":[],"src":"2078:0:44"},"scope":7068,"src":"1998:187:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6615,"nodeType":"Block","src":"2281:100:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6608,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6598,"src":"2350:3:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6605,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6596,"src":"2330:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}],"expression":{"id":6603,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"2298:24:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"type(AddressToUintMappingSlot)"}},"id":6604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2323:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"2298:31:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$returns$_t_bytes32_$","typeString":"function (AddressToUintMappingSlot) pure returns (bytes32)"}},"id":6606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2298:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2336:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"2298:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2298:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2355:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"2298:66:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2298:68:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2367:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"2298:74:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2298:76:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6602,"id":6614,"nodeType":"Return","src":"2291:83:44"}]},"id":6616,"implemented":true,"kind":"function","modifiers":[],"name":"tGet","nameLocation":"2200:4:44","nodeType":"FunctionDefinition","parameters":{"id":6599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6596,"mutability":"mutable","name":"slot","nameLocation":"2230:4:44","nodeType":"VariableDeclaration","scope":6616,"src":"2205:29:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":6595,"nodeType":"UserDefinedTypeName","pathNode":{"id":6594,"name":"AddressToUintMappingSlot","nameLocations":["2205:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"2205:24:44"},"referencedDeclaration":6486,"src":"2205:24:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"},{"constant":false,"id":6598,"mutability":"mutable","name":"key","nameLocation":"2244:3:44","nodeType":"VariableDeclaration","scope":6616,"src":"2236:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6597,"name":"address","nodeType":"ElementaryTypeName","src":"2236:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2204:44:44"},"returnParameters":{"id":6602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6616,"src":"2272:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6600,"name":"uint256","nodeType":"ElementaryTypeName","src":"2272:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2271:9:44"},"scope":7068,"src":"2191:190:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6640,"nodeType":"Block","src":"2469:99:44","statements":[{"expression":{"arguments":[{"id":6637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6623,"src":"2555:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6632,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6621,"src":"2531:3:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6629,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6619,"src":"2511:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}],"expression":{"id":6626,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"2479:24:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"type(AddressToUintMappingSlot)"}},"id":6628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2504:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"2479:31:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$returns$_t_bytes32_$","typeString":"function (AddressToUintMappingSlot) pure returns (bytes32)"}},"id":6630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2479:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2517:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"2479:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2479:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2536:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"2479:66:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2479:68:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2548:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"2479:75:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":6638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2479:82:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6639,"nodeType":"ExpressionStatement","src":"2479:82:44"}]},"id":6641,"implemented":true,"kind":"function","modifiers":[],"name":"tSet","nameLocation":"2396:4:44","nodeType":"FunctionDefinition","parameters":{"id":6624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6619,"mutability":"mutable","name":"slot","nameLocation":"2426:4:44","nodeType":"VariableDeclaration","scope":6641,"src":"2401:29:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":6618,"nodeType":"UserDefinedTypeName","pathNode":{"id":6617,"name":"AddressToUintMappingSlot","nameLocations":["2401:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"2401:24:44"},"referencedDeclaration":6486,"src":"2401:24:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"},{"constant":false,"id":6621,"mutability":"mutable","name":"key","nameLocation":"2440:3:44","nodeType":"VariableDeclaration","scope":6641,"src":"2432:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6620,"name":"address","nodeType":"ElementaryTypeName","src":"2432:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6623,"mutability":"mutable","name":"value","nameLocation":"2453:5:44","nodeType":"VariableDeclaration","scope":6641,"src":"2445:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6622,"name":"uint256","nodeType":"ElementaryTypeName","src":"2445:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2400:59:44"},"returnParameters":{"id":6625,"nodeType":"ParameterList","parameters":[],"src":"2469:0:44"},"scope":7068,"src":"2387:181:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6668,"nodeType":"Block","src":"2724:236:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6661,"name":"addressKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6648,"src":"2888:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6658,"name":"uintKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6646,"src":"2848:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6655,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6644,"src":"2811:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}],"expression":{"id":6653,"name":"UintToAddressToBooleanMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6488,"src":"2753:33:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"type(UintToAddressToBooleanMappingSlot)"}},"id":6654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2804:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"2753:57:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$returns$_t_bytes32_$","typeString":"function (UintToAddressToBooleanMappingSlot) pure returns (bytes32)"}},"id":6656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:63:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2834:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9661,"src":"2753:94:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:103:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2874:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"2753:134:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:146:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2917:9:44","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":9749,"src":"2753:173:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:175:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":6665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2946:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"2753:198:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlotType_$9734_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType) view returns (bool)"}},"id":6666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:200:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6652,"id":6667,"nodeType":"Return","src":"2734:219:44"}]},"id":6669,"implemented":true,"kind":"function","modifiers":[],"name":"tGet","nameLocation":"2583:4:44","nodeType":"FunctionDefinition","parameters":{"id":6649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6644,"mutability":"mutable","name":"slot","nameLocation":"2631:4:44","nodeType":"VariableDeclaration","scope":6669,"src":"2597:38:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"},"typeName":{"id":6643,"nodeType":"UserDefinedTypeName","pathNode":{"id":6642,"name":"UintToAddressToBooleanMappingSlot","nameLocations":["2597:33:44"],"nodeType":"IdentifierPath","referencedDeclaration":6488,"src":"2597:33:44"},"referencedDeclaration":6488,"src":"2597:33:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"visibility":"internal"},{"constant":false,"id":6646,"mutability":"mutable","name":"uintKey","nameLocation":"2653:7:44","nodeType":"VariableDeclaration","scope":6669,"src":"2645:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2645:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6648,"mutability":"mutable","name":"addressKey","nameLocation":"2678:10:44","nodeType":"VariableDeclaration","scope":6669,"src":"2670:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6647,"name":"address","nodeType":"ElementaryTypeName","src":"2670:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2587:107:44"},"returnParameters":{"id":6652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6651,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6669,"src":"2718:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6650,"name":"bool","nodeType":"ElementaryTypeName","src":"2718:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2717:6:44"},"scope":7068,"src":"2574:386:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6698,"nodeType":"Block","src":"3078:203:44","statements":[{"expression":{"arguments":[{"id":6695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6678,"src":"3268:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6690,"name":"addressKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6676,"src":"3211:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6687,"name":"uintKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6674,"src":"3175:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6684,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6672,"src":"3142:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}],"expression":{"id":6681,"name":"UintToAddressToBooleanMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6488,"src":"3088:33:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"type(UintToAddressToBooleanMappingSlot)"}},"id":6683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3135:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"3088:53:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$returns$_t_bytes32_$","typeString":"function (UintToAddressToBooleanMappingSlot) pure returns (bytes32)"}},"id":6685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:59:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3161:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9661,"src":"3088:86:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":6688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:95:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3197:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"3088:122:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:134:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3236:9:44","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":9749,"src":"3088:157:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":6693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:159:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":6694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"3088:179:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":6696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:186:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6697,"nodeType":"ExpressionStatement","src":"3088:186:44"}]},"id":6699,"implemented":true,"kind":"function","modifiers":[],"name":"tSet","nameLocation":"2975:4:44","nodeType":"FunctionDefinition","parameters":{"id":6679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6672,"mutability":"mutable","name":"slot","nameLocation":"3014:4:44","nodeType":"VariableDeclaration","scope":6699,"src":"2980:38:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"},"typeName":{"id":6671,"nodeType":"UserDefinedTypeName","pathNode":{"id":6670,"name":"UintToAddressToBooleanMappingSlot","nameLocations":["2980:33:44"],"nodeType":"IdentifierPath","referencedDeclaration":6488,"src":"2980:33:44"},"referencedDeclaration":6488,"src":"2980:33:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"visibility":"internal"},{"constant":false,"id":6674,"mutability":"mutable","name":"uintKey","nameLocation":"3028:7:44","nodeType":"VariableDeclaration","scope":6699,"src":"3020:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6673,"name":"uint256","nodeType":"ElementaryTypeName","src":"3020:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6676,"mutability":"mutable","name":"addressKey","nameLocation":"3045:10:44","nodeType":"VariableDeclaration","scope":6699,"src":"3037:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6675,"name":"address","nodeType":"ElementaryTypeName","src":"3037:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6678,"mutability":"mutable","name":"value","nameLocation":"3062:5:44","nodeType":"VariableDeclaration","scope":6699,"src":"3057:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6677,"name":"bool","nodeType":"ElementaryTypeName","src":"3057:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2979:89:44"},"returnParameters":{"id":6680,"nodeType":"ParameterList","parameters":[],"src":"3078:0:44"},"scope":7068,"src":"2966:315:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6728,"nodeType":"Block","src":"3432:117:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6721,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"3523:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},{"id":6722,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"3529:3:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6720,"name":"tGet","nodeType":"Identifier","overloadedDeclarations":[6564,6616,6669],"referencedDeclaration":6616,"src":"3518:4:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":6723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3518:15:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6706,"src":"3536:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3518:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6715,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"3494:3:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6712,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"3474:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}],"expression":{"id":6709,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"3442:24:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"type(AddressToUintMappingSlot)"}},"id":6711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3467:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"3442:31:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$returns$_t_bytes32_$","typeString":"function (AddressToUintMappingSlot) pure returns (bytes32)"}},"id":6713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3442:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3480:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"3442:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3442:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3499:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"3442:66:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3442:68:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3511:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"3442:75:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3442:100:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6727,"nodeType":"ExpressionStatement","src":"3442:100:44"}]},"id":6729,"implemented":true,"kind":"function","modifiers":[],"name":"tAdd","nameLocation":"3359:4:44","nodeType":"FunctionDefinition","parameters":{"id":6707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6702,"mutability":"mutable","name":"slot","nameLocation":"3389:4:44","nodeType":"VariableDeclaration","scope":6729,"src":"3364:29:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":6701,"nodeType":"UserDefinedTypeName","pathNode":{"id":6700,"name":"AddressToUintMappingSlot","nameLocations":["3364:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"3364:24:44"},"referencedDeclaration":6486,"src":"3364:24:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"},{"constant":false,"id":6704,"mutability":"mutable","name":"key","nameLocation":"3403:3:44","nodeType":"VariableDeclaration","scope":6729,"src":"3395:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6703,"name":"address","nodeType":"ElementaryTypeName","src":"3395:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6706,"mutability":"mutable","name":"value","nameLocation":"3416:5:44","nodeType":"VariableDeclaration","scope":6729,"src":"3408:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6705,"name":"uint256","nodeType":"ElementaryTypeName","src":"3408:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3363:59:44"},"returnParameters":{"id":6708,"nodeType":"ParameterList","parameters":[],"src":"3432:0:44"},"scope":7068,"src":"3350:199:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6758,"nodeType":"Block","src":"3637:117:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6751,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6732,"src":"3728:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},{"id":6752,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3734:3:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6750,"name":"tGet","nodeType":"Identifier","overloadedDeclarations":[6564,6616,6669],"referencedDeclaration":6616,"src":"3723:4:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":6753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:15:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6736,"src":"3741:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3723:23:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6745,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6734,"src":"3699:3:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6742,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6732,"src":"3679:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}],"expression":{"id":6739,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"3647:24:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"type(AddressToUintMappingSlot)"}},"id":6741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3672:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"3647:31:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$returns$_t_bytes32_$","typeString":"function (AddressToUintMappingSlot) pure returns (bytes32)"}},"id":6743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3647:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3685:13:44","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":9625,"src":"3647:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":6746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3647:56:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3704:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"3647:66:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3647:68:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3716:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"3647:75:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":6756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3647:100:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6757,"nodeType":"ExpressionStatement","src":"3647:100:44"}]},"id":6759,"implemented":true,"kind":"function","modifiers":[],"name":"tSub","nameLocation":"3564:4:44","nodeType":"FunctionDefinition","parameters":{"id":6737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6732,"mutability":"mutable","name":"slot","nameLocation":"3594:4:44","nodeType":"VariableDeclaration","scope":6759,"src":"3569:29:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":6731,"nodeType":"UserDefinedTypeName","pathNode":{"id":6730,"name":"AddressToUintMappingSlot","nameLocations":["3569:24:44"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"3569:24:44"},"referencedDeclaration":6486,"src":"3569:24:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"},{"constant":false,"id":6734,"mutability":"mutable","name":"key","nameLocation":"3608:3:44","nodeType":"VariableDeclaration","scope":6759,"src":"3600:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6733,"name":"address","nodeType":"ElementaryTypeName","src":"3600:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6736,"mutability":"mutable","name":"value","nameLocation":"3621:5:44","nodeType":"VariableDeclaration","scope":6759,"src":"3613:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6735,"name":"uint256","nodeType":"ElementaryTypeName","src":"3613:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3568:59:44"},"returnParameters":{"id":6738,"nodeType":"ParameterList","parameters":[],"src":"3637:0:44"},"scope":7068,"src":"3555:199:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6776,"nodeType":"Block","src":"4044:77:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6769,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6762,"src":"4089:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6767,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"4061:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4082:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"4061:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4095:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"4061:43:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4107:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"4061:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":6774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6766,"id":6775,"nodeType":"Return","src":"4054:60:44"}]},"id":6777,"implemented":true,"kind":"function","modifiers":[],"name":"tLength","nameLocation":"3977:7:44","nodeType":"FunctionDefinition","parameters":{"id":6763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6762,"mutability":"mutable","name":"slot","nameLocation":"4006:4:44","nodeType":"VariableDeclaration","scope":6777,"src":"3985:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6761,"nodeType":"UserDefinedTypeName","pathNode":{"id":6760,"name":"AddressArraySlotType","nameLocations":["3985:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"3985:20:44"},"referencedDeclaration":6490,"src":"3985:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"}],"src":"3984:27:44"},"returnParameters":{"id":6766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6777,"src":"4035:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6764,"name":"uint256","nodeType":"ElementaryTypeName","src":"4035:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4034:9:44"},"scope":7068,"src":"3968:153:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6806,"nodeType":"Block","src":"4214:152:44","statements":[{"expression":{"arguments":[{"id":6788,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6780,"src":"4249:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},{"id":6789,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6782,"src":"4255:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6787,"name":"_ensureIndexWithinBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6867,"src":"4224:24:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$_t_uint256_$returns$__$","typeString":"function (AddressArraySlotType,uint256) view"}},"id":6790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4224:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6791,"nodeType":"ExpressionStatement","src":"4224:37:44"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6799,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6782,"src":"4333:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6794,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6780,"src":"4306:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6792,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"4278:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4299:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"4278:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4278:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4312:11:44","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":9613,"src":"4278:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":6797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4278:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4326:6:44","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":9603,"src":"4278:54:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":6800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4278:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4340:9:44","memberName":"asAddress","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"4278:71:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":6802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4278:73:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":6803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4352:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9811,"src":"4278:79:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressSlotType_$9717_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType) view returns (address)"}},"id":6804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4278:81:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6786,"id":6805,"nodeType":"Return","src":"4271:88:44"}]},"id":6807,"implemented":true,"kind":"function","modifiers":[],"name":"tAt","nameLocation":"4136:3:44","nodeType":"FunctionDefinition","parameters":{"id":6783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6780,"mutability":"mutable","name":"slot","nameLocation":"4161:4:44","nodeType":"VariableDeclaration","scope":6807,"src":"4140:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6779,"nodeType":"UserDefinedTypeName","pathNode":{"id":6778,"name":"AddressArraySlotType","nameLocations":["4140:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"4140:20:44"},"referencedDeclaration":6490,"src":"4140:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"},{"constant":false,"id":6782,"mutability":"mutable","name":"index","nameLocation":"4175:5:44","nodeType":"VariableDeclaration","scope":6807,"src":"4167:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6781,"name":"uint256","nodeType":"ElementaryTypeName","src":"4167:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4139:42:44"},"returnParameters":{"id":6786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6807,"src":"4205:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6784,"name":"address","nodeType":"ElementaryTypeName","src":"4205:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4204:9:44"},"scope":7068,"src":"4127:239:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6838,"nodeType":"Block","src":"4452:151:44","statements":[{"expression":{"arguments":[{"id":6818,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"4487:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},{"id":6819,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"4493:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6817,"name":"_ensureIndexWithinBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6867,"src":"4462:24:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$_t_uint256_$returns$__$","typeString":"function (AddressArraySlotType,uint256) view"}},"id":6820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4462:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6821,"nodeType":"ExpressionStatement","src":"4462:37:44"},{"expression":{"arguments":[{"id":6835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"4590:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6830,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"4564:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6825,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6810,"src":"4537:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6822,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"4509:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4530:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"4509:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4509:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4543:11:44","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":9613,"src":"4509:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":6828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4509:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4557:6:44","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":9603,"src":"4509:54:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":6831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4509:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4571:9:44","memberName":"asAddress","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"4509:71:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":6833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4509:73:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":6834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4583:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9822,"src":"4509:80:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressSlotType_$9717_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType,address)"}},"id":6836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4509:87:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6837,"nodeType":"ExpressionStatement","src":"4509:87:44"}]},"id":6839,"implemented":true,"kind":"function","modifiers":[],"name":"tSet","nameLocation":"4381:4:44","nodeType":"FunctionDefinition","parameters":{"id":6815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6810,"mutability":"mutable","name":"slot","nameLocation":"4407:4:44","nodeType":"VariableDeclaration","scope":6839,"src":"4386:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6809,"nodeType":"UserDefinedTypeName","pathNode":{"id":6808,"name":"AddressArraySlotType","nameLocations":["4386:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"4386:20:44"},"referencedDeclaration":6490,"src":"4386:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"},{"constant":false,"id":6812,"mutability":"mutable","name":"index","nameLocation":"4421:5:44","nodeType":"VariableDeclaration","scope":6839,"src":"4413:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6811,"name":"uint256","nodeType":"ElementaryTypeName","src":"4413:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6814,"mutability":"mutable","name":"value","nameLocation":"4436:5:44","nodeType":"VariableDeclaration","scope":6839,"src":"4428:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6813,"name":"address","nodeType":"ElementaryTypeName","src":"4428:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4385:57:44"},"returnParameters":{"id":6816,"nodeType":"ParameterList","parameters":[],"src":"4452:0:44"},"scope":7068,"src":"4372:231:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6866,"nodeType":"Block","src":"4698:176:44","statements":[{"assignments":[6848],"declarations":[{"constant":false,"id":6848,"mutability":"mutable","name":"length","nameLocation":"4716:6:44","nodeType":"VariableDeclaration","scope":6866,"src":"4708:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6847,"name":"uint256","nodeType":"ElementaryTypeName","src":"4708:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6857,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6851,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"4753:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6849,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"4725:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4746:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"4725:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4725:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4759:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"4725:43:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4725:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4771:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"4725:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4725:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4708:70:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6858,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6844,"src":"4792:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6859,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6848,"src":"4801:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4792:15:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6865,"nodeType":"IfStatement","src":"4788:80:44","trueBody":{"id":6864,"nodeType":"Block","src":"4809:59:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6861,"name":"TransientIndexOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6498,"src":"4830:25:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4830:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6863,"nodeType":"RevertStatement","src":"4823:34:44"}]}}]},"id":6867,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureIndexWithinBounds","nameLocation":"4618:24:44","nodeType":"FunctionDefinition","parameters":{"id":6845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6842,"mutability":"mutable","name":"slot","nameLocation":"4664:4:44","nodeType":"VariableDeclaration","scope":6867,"src":"4643:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6841,"nodeType":"UserDefinedTypeName","pathNode":{"id":6840,"name":"AddressArraySlotType","nameLocations":["4643:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"4643:20:44"},"referencedDeclaration":6490,"src":"4643:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"},{"constant":false,"id":6844,"mutability":"mutable","name":"index","nameLocation":"4678:5:44","nodeType":"VariableDeclaration","scope":6867,"src":"4670:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6843,"name":"uint256","nodeType":"ElementaryTypeName","src":"4670:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4642:42:44"},"returnParameters":{"id":6846,"nodeType":"ParameterList","parameters":[],"src":"4698:0:44"},"scope":7068,"src":"4609:265:44","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6891,"nodeType":"Block","src":"4976:105:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6884,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6872,"src":"5048:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6879,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6870,"src":"5021:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6877,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"4993:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5014:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"4993:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5027:11:44","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":9613,"src":"4993:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":6882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5041:6:44","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":9603,"src":"4993:54:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":6885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5055:9:44","memberName":"asAddress","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"4993:71:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":6887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:73:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":6888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5067:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9811,"src":"4993:79:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressSlotType_$9717_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType) view returns (address)"}},"id":6889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:81:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6876,"id":6890,"nodeType":"Return","src":"4986:88:44"}]},"id":6892,"implemented":true,"kind":"function","modifiers":[],"name":"tUncheckedAt","nameLocation":"4889:12:44","nodeType":"FunctionDefinition","parameters":{"id":6873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6870,"mutability":"mutable","name":"slot","nameLocation":"4923:4:44","nodeType":"VariableDeclaration","scope":6892,"src":"4902:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6869,"nodeType":"UserDefinedTypeName","pathNode":{"id":6868,"name":"AddressArraySlotType","nameLocations":["4902:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"4902:20:44"},"referencedDeclaration":6490,"src":"4902:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"},{"constant":false,"id":6872,"mutability":"mutable","name":"index","nameLocation":"4937:5:44","nodeType":"VariableDeclaration","scope":6892,"src":"4929:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6871,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4901:42:44"},"returnParameters":{"id":6876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6892,"src":"4967:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6874,"name":"address","nodeType":"ElementaryTypeName","src":"4967:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4966:9:44"},"scope":7068,"src":"4880:201:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6918,"nodeType":"Block","src":"5176:104:44","statements":[{"expression":{"arguments":[{"id":6915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6899,"src":"5267:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6910,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6897,"src":"5241:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6905,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6895,"src":"5214:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6902,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"5186:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5207:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"5186:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5186:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5220:11:44","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":9613,"src":"5186:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":6908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5186:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5234:6:44","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":9603,"src":"5186:54:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":6911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5186:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5248:9:44","memberName":"asAddress","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"5186:71:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":6913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5186:73:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":6914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5260:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9822,"src":"5186:80:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressSlotType_$9717_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType,address)"}},"id":6916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5186:87:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6917,"nodeType":"ExpressionStatement","src":"5186:87:44"}]},"id":6919,"implemented":true,"kind":"function","modifiers":[],"name":"tUncheckedSet","nameLocation":"5096:13:44","nodeType":"FunctionDefinition","parameters":{"id":6900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6895,"mutability":"mutable","name":"slot","nameLocation":"5131:4:44","nodeType":"VariableDeclaration","scope":6919,"src":"5110:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6894,"nodeType":"UserDefinedTypeName","pathNode":{"id":6893,"name":"AddressArraySlotType","nameLocations":["5110:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"5110:20:44"},"referencedDeclaration":6490,"src":"5110:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"},{"constant":false,"id":6897,"mutability":"mutable","name":"index","nameLocation":"5145:5:44","nodeType":"VariableDeclaration","scope":6919,"src":"5137:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6896,"name":"uint256","nodeType":"ElementaryTypeName","src":"5137:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6899,"mutability":"mutable","name":"value","nameLocation":"5160:5:44","nodeType":"VariableDeclaration","scope":6919,"src":"5152:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6898,"name":"address","nodeType":"ElementaryTypeName","src":"5152:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:57:44"},"returnParameters":{"id":6901,"nodeType":"ParameterList","parameters":[],"src":"5176:0:44"},"scope":7068,"src":"5087:193:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6967,"nodeType":"Block","src":"5352:393:44","statements":[{"assignments":[6928],"declarations":[{"constant":false,"id":6928,"mutability":"mutable","name":"length","nameLocation":"5444:6:44","nodeType":"VariableDeclaration","scope":6967,"src":"5436:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6927,"name":"uint256","nodeType":"ElementaryTypeName","src":"5436:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6937,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6931,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"5481:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6929,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"5453:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5474:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"5453:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5453:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5487:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"5453:43:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5453:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5499:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"5453:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":6936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5453:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5436:70:44"},{"expression":{"arguments":[{"id":6951,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6924,"src":"5598:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6946,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6928,"src":"5571:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6941,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"5544:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6938,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"5516:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5537:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"5516:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5516:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5550:11:44","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":9613,"src":"5516:45:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":6944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5516:47:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5564:6:44","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":9603,"src":"5516:54:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":6947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5516:62:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5579:9:44","memberName":"asAddress","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"5516:72:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":6949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5516:74:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":6950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5591:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9822,"src":"5516:81:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressSlotType_$9717_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType,address)"}},"id":6952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5516:88:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6953,"nodeType":"ExpressionStatement","src":"5516:88:44"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6962,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6928,"src":"5727:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5736:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5727:10:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6957,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"5702:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6954,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"5674:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5695:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"5674:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5674:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5708:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"5674:43:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5674:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5720:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"5674:52:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":6965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5674:64:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6966,"nodeType":"ExpressionStatement","src":"5674:64:44"}]},"id":6968,"implemented":true,"kind":"function","modifiers":[],"name":"tPush","nameLocation":"5295:5:44","nodeType":"FunctionDefinition","parameters":{"id":6925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6922,"mutability":"mutable","name":"slot","nameLocation":"5322:4:44","nodeType":"VariableDeclaration","scope":6968,"src":"5301:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6921,"nodeType":"UserDefinedTypeName","pathNode":{"id":6920,"name":"AddressArraySlotType","nameLocations":["5301:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"5301:20:44"},"referencedDeclaration":6490,"src":"5301:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"},{"constant":false,"id":6924,"mutability":"mutable","name":"value","nameLocation":"5336:5:44","nodeType":"VariableDeclaration","scope":6968,"src":"5328:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6923,"name":"address","nodeType":"ElementaryTypeName","src":"5328:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5300:42:44"},"returnParameters":{"id":6926,"nodeType":"ParameterList","parameters":[],"src":"5352:0:44"},"scope":7068,"src":"5286:459:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7032,"nodeType":"Block","src":"5825:654:44","statements":[{"assignments":[6977],"declarations":[{"constant":false,"id":6977,"mutability":"mutable","name":"lastElementIndex","nameLocation":"5843:16:44","nodeType":"VariableDeclaration","scope":7032,"src":"5835:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6976,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6988,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6980,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"5890:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6978,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"5862:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5883:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"5862:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5896:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"5862:43:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5908:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"5862:51:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":6985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:53:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":6986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5918:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5862:57:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5835:84:44"},{"expression":{"arguments":[{"id":6997,"name":"lastElementIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"6092:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6992,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"6067:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":6989,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"6039:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":6991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6060:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"6039:27:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":6993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6039:33:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6073:9:44","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"6039:43:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":6995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6039:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":6996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6085:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"6039:52:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":6998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6039:70:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6999,"nodeType":"ExpressionStatement","src":"6039:70:44"},{"assignments":[7004],"declarations":[{"constant":false,"id":7004,"mutability":"mutable","name":"lastElementSlot","nameLocation":"6156:15:44","nodeType":"VariableDeclaration","scope":7032,"src":"6119:52:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"},"typeName":{"id":7003,"nodeType":"UserDefinedTypeName","pathNode":{"id":7002,"name":"StorageSlotExtension.AddressSlotType","nameLocations":["6119:20:44","6140:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":9717,"src":"6119:36:44"},"referencedDeclaration":9717,"src":"6119:36:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"visibility":"internal"}],"id":7016,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7012,"name":"lastElementIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6977,"src":"6268:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7007,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6971,"src":"6215:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}],"expression":{"id":7005,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"6174:20:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"type(AddressArraySlotType)"}},"id":7006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6208:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"6174:40:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_bytes32_$","typeString":"function (AddressArraySlotType) pure returns (bytes32)"}},"id":7008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6234:11:44","memberName":"deriveArray","nodeType":"MemberAccess","referencedDeclaration":9613,"src":"6174:71:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":7010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:73:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6261:6:44","memberName":"offset","nodeType":"MemberAccess","referencedDeclaration":9603,"src":"6174:93:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":7013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:111:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6299:9:44","memberName":"asAddress","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"6174:134:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:136:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"nodeType":"VariableDeclarationStatement","src":"6119:191:44"},{"expression":{"id":7021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7017,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6974,"src":"6352:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7018,"name":"lastElementSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7004,"src":"6360:15:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":7019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6376:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9811,"src":"6360:21:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressSlotType_$9717_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType) view returns (address)"}},"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6360:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6352:31:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7022,"nodeType":"ExpressionStatement","src":"6352:31:44"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":7028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6469:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6461:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7026,"name":"address","nodeType":"ElementaryTypeName","src":"6461:7:44","typeDescriptions":{}}},"id":7029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6461:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7023,"name":"lastElementSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7004,"src":"6438:15:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":7025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6454:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9822,"src":"6438:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressSlotType_$9717_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType,address)"}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6438:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7031,"nodeType":"ExpressionStatement","src":"6438:34:44"}]},"id":7033,"implemented":true,"kind":"function","modifiers":[],"name":"tPop","nameLocation":"5760:4:44","nodeType":"FunctionDefinition","parameters":{"id":6972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6971,"mutability":"mutable","name":"slot","nameLocation":"5786:4:44","nodeType":"VariableDeclaration","scope":7033,"src":"5765:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":6970,"nodeType":"UserDefinedTypeName","pathNode":{"id":6969,"name":"AddressArraySlotType","nameLocations":["5765:20:44"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"5765:20:44"},"referencedDeclaration":6490,"src":"5765:20:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"}],"src":"5764:27:44"},"returnParameters":{"id":6975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6974,"mutability":"mutable","name":"value","nameLocation":"5818:5:44","nodeType":"VariableDeclaration","scope":7033,"src":"5810:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6973,"name":"address","nodeType":"ElementaryTypeName","src":"5810:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5809:15:44"},"scope":7068,"src":"5751:728:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7049,"nodeType":"Block","src":"6769:46:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7042,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"6791:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":7043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6796:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"6791:10:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":7044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6791:12:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6806:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6791:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7039,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"6779:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":7041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6784:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"6779:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":7047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6779:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7048,"nodeType":"ExpressionStatement","src":"6779:29:44"}]},"id":7050,"implemented":true,"kind":"function","modifiers":[],"name":"tIncrement","nameLocation":"6706:10:44","nodeType":"FunctionDefinition","parameters":{"id":7037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7036,"mutability":"mutable","name":"slot","nameLocation":"6754:4:44","nodeType":"VariableDeclaration","scope":7050,"src":"6717:41:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":7035,"nodeType":"UserDefinedTypeName","pathNode":{"id":7034,"name":"StorageSlotExtension.Uint256SlotType","nameLocations":["6717:20:44","6738:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"6717:36:44"},"referencedDeclaration":9768,"src":"6717:36:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"6716:43:44"},"returnParameters":{"id":7038,"nodeType":"ParameterList","parameters":[],"src":"6769:0:44"},"scope":7068,"src":"6697:118:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7066,"nodeType":"Block","src":"6893:46:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7059,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"6915:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":7060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6920:5:44","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"6915:10:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":7061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6915:12:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6930:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6915:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7056,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"6903:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":7058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6908:6:44","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"6903:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":7064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7065,"nodeType":"ExpressionStatement","src":"6903:29:44"}]},"id":7067,"implemented":true,"kind":"function","modifiers":[],"name":"tDecrement","nameLocation":"6830:10:44","nodeType":"FunctionDefinition","parameters":{"id":7054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7053,"mutability":"mutable","name":"slot","nameLocation":"6878:4:44","nodeType":"VariableDeclaration","scope":7067,"src":"6841:41:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":7052,"nodeType":"UserDefinedTypeName","pathNode":{"id":7051,"name":"StorageSlotExtension.Uint256SlotType","nameLocations":["6841:20:44","6862:15:44"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"6841:36:44"},"referencedDeclaration":9768,"src":"6841:36:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"6840:43:44"},"returnParameters":{"id":7055,"nodeType":"ParameterList","parameters":[],"src":"6893:0:44"},"scope":7068,"src":"6821:118:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7069,"src":"991:5950:44","usedErrors":[6498],"usedEvents":[]}],"src":"46:6896:44"},"id":44},"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","exportedSymbols":{"IVersion":[160],"Version":[7108]},"id":7109,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7070,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:45"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol","id":7072,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7109,"sourceUnit":161,"src":"72:102:45","symbolAliases":[{"foreign":{"id":7071,"name":"IVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"81:8:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7074,"name":"IVersion","nameLocations":["686:8:45"],"nodeType":"IdentifierPath","referencedDeclaration":160,"src":"686:8:45"},"id":7075,"nodeType":"InheritanceSpecifier","src":"686:8:45"}],"canonicalName":"Version","contractDependencies":[],"contractKind":"contract","documentation":{"id":7073,"nodeType":"StructuredDocumentation","src":"176:489:45","text":" @notice Retrieves a contract's version from storage.\n @dev The version is set at deployment time and cannot be changed. It would be immutable, but immutable strings\n are not yet supported.\n Contracts like factories and pools should have versions. These typically take the form of JSON strings containing\n detailed information about the deployment. For instance:\n `{name: 'ChildChainGaugeFactory', version: 2, deployment: '20230316-child-chain-gauge-factory-v2'}`"},"fullyImplemented":true,"id":7108,"linearizedBaseContracts":[7108,160],"name":"Version","nameLocation":"675:7:45","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7077,"mutability":"mutable","name":"_version","nameLocation":"716:8:45","nodeType":"VariableDeclaration","scope":7108,"src":"701:23:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7076,"name":"string","nodeType":"ElementaryTypeName","src":"701:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":7086,"nodeType":"Block","src":"767:38:45","statements":[{"expression":{"arguments":[{"id":7083,"name":"version_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7079,"src":"789:8:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7082,"name":"_setVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"777:11:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":7084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"777:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7085,"nodeType":"ExpressionStatement","src":"777:21:45"}]},"id":7087,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7079,"mutability":"mutable","name":"version_","nameLocation":"757:8:45","nodeType":"VariableDeclaration","scope":7087,"src":"743:22:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7078,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:24:45"},"returnParameters":{"id":7081,"nodeType":"ParameterList","parameters":[],"src":"767:0:45"},"scope":7108,"src":"731:74:45","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[159],"body":{"id":7095,"nodeType":"Block","src":"974:32:45","statements":[{"expression":{"id":7093,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7077,"src":"991:8:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7092,"id":7094,"nodeType":"Return","src":"984:15:45"}]},"documentation":{"id":7088,"nodeType":"StructuredDocumentation","src":"811:101:45","text":" @notice Getter for the version.\n @return version The stored contract version"},"functionSelector":"54fd4d50","id":7096,"implemented":true,"kind":"function","modifiers":[],"name":"version","nameLocation":"926:7:45","nodeType":"FunctionDefinition","parameters":{"id":7089,"nodeType":"ParameterList","parameters":[],"src":"933:2:45"},"returnParameters":{"id":7092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7096,"src":"959:13:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7090,"name":"string","nodeType":"ElementaryTypeName","src":"959:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"958:15:45"},"scope":7108,"src":"917:89:45","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":7106,"nodeType":"Block","src":"1146:38:45","statements":[{"expression":{"id":7104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7102,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7077,"src":"1156:8:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7103,"name":"newVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7099,"src":"1167:10:45","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1156:21:45","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7105,"nodeType":"ExpressionStatement","src":"1156:21:45"}]},"documentation":{"id":7097,"nodeType":"StructuredDocumentation","src":"1012:73:45","text":"@dev Internal setter that allows this contract to be used in proxies."},"id":7107,"implemented":true,"kind":"function","modifiers":[],"name":"_setVersion","nameLocation":"1099:11:45","nodeType":"FunctionDefinition","parameters":{"id":7100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7099,"mutability":"mutable","name":"newVersion","nameLocation":"1125:10:45","nodeType":"VariableDeclaration","scope":7107,"src":"1111:24:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7098,"name":"string","nodeType":"ElementaryTypeName","src":"1111:6:45","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1110:26:45"},"returnParameters":{"id":7101,"nodeType":"ParameterList","parameters":[],"src":"1146:0:45"},"scope":7108,"src":"1090:94:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7109,"src":"666:520:45","usedErrors":[],"usedEvents":[]}],"src":"46:1141:45"},"id":45},"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","exportedSymbols":{"Math":[42371],"SignedMath":[44231],"WordCodec":[7535]},"id":7536,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7110,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:46"},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"@openzeppelin/contracts/utils/math/SignedMath.sol","id":7112,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7536,"sourceUnit":44232,"src":"72:79:46","symbolAliases":[{"foreign":{"id":7111,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44231,"src":"81:10:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":7114,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7536,"sourceUnit":42372,"src":"152:67:46","symbolAliases":[{"foreign":{"id":7113,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42371,"src":"161:4:46","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"WordCodec","contractDependencies":[],"contractKind":"library","documentation":{"id":7115,"nodeType":"StructuredDocumentation","src":"221:1186:46","text":" @notice Library for encoding and decoding values stored inside a 256 bit word.\n @dev Typically used to pack multiple values in a single slot, saving gas by performing fewer storage accesses.\n Each value is defined by its size and the least significant bit in the word, also known as offset. For example, two\n 128 bit values may be encoded in a word by assigning one an offset of 0, and the other an offset of 128.\n We could use Solidity structs to pack values together in a single storage slot instead of relying on a custom and\n error-prone library, but unfortunately Solidity only allows for structs to live in either storage, calldata or\n memory. Because a memory struct uses not just memory but also a slot in the stack (to store its memory location),\n using memory for word-sized values (i.e. of 256 bits or less) is strictly less gas performant, and doesn't even\n prevent stack-too-deep issues. This is compounded by the fact that Balancer contracts typically are memory-\n intensive, and the cost of accessing memory increases quadratically with the number of allocated words. Manual\n packing and unpacking is therefore the preferred approach."},"fullyImplemented":true,"id":7535,"linearizedBaseContracts":[7535],"name":"WordCodec","nameLocation":"1416:9:46","nodeType":"ContractDefinition","nodes":[{"global":false,"id":7118,"libraryName":{"id":7116,"name":"Math","nameLocations":["1438:4:46"],"nodeType":"IdentifierPath","referencedDeclaration":42371,"src":"1438:4:46"},"nodeType":"UsingForDirective","src":"1432:23:46","typeName":{"id":7117,"name":"uint256","nodeType":"ElementaryTypeName","src":"1447:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":7121,"libraryName":{"id":7119,"name":"SignedMath","nameLocations":["1466:10:46"],"nodeType":"IdentifierPath","referencedDeclaration":44231,"src":"1466:10:46"},"nodeType":"UsingForDirective","src":"1460:28:46","typeName":{"id":7120,"name":"int256","nodeType":"ElementaryTypeName","src":"1481:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}},{"documentation":{"id":7122,"nodeType":"StructuredDocumentation","src":"1537:50:46","text":"@notice Function called with an invalid value."},"errorSelector":"e4337c05","id":7124,"name":"CodecOverflow","nameLocation":"1598:13:46","nodeType":"ErrorDefinition","parameters":{"id":7123,"nodeType":"ParameterList","parameters":[],"src":"1611:2:46"},"src":"1592:22:46"},{"documentation":{"id":7125,"nodeType":"StructuredDocumentation","src":"1620:64:46","text":"@notice Function called with an invalid bitLength or offset."},"errorSelector":"b4120f14","id":7127,"name":"OutOfBounds","nameLocation":"1695:11:46","nodeType":"ErrorDefinition","parameters":{"id":7126,"nodeType":"ParameterList","parameters":[],"src":"1706:2:46"},"src":"1689:20:46"},{"body":{"id":7148,"nodeType":"Block","src":"2258:496:46","statements":[{"expression":{"arguments":[{"id":7142,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7132,"src":"2292:5:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7143,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7134,"src":"2299:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7144,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7136,"src":"2307:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7141,"name":"_validateEncodingParams","nodeType":"Identifier","overloadedDeclarations":[7459,7534],"referencedDeclaration":7459,"src":"2268:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":7145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2268:49:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7146,"nodeType":"ExpressionStatement","src":"2268:49:46"},{"AST":{"nativeSrc":"2564:184:46","nodeType":"YulBlock","src":"2564:184:46","statements":[{"nativeSrc":"2578:37:46","nodeType":"YulVariableDeclaration","src":"2578:37:46","value":{"arguments":[{"arguments":[{"name":"bitLength","nativeSrc":"2598:9:46","nodeType":"YulIdentifier","src":"2598:9:46"},{"kind":"number","nativeSrc":"2609:1:46","nodeType":"YulLiteral","src":"2609:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2594:3:46","nodeType":"YulIdentifier","src":"2594:3:46"},"nativeSrc":"2594:17:46","nodeType":"YulFunctionCall","src":"2594:17:46"},{"kind":"number","nativeSrc":"2613:1:46","nodeType":"YulLiteral","src":"2613:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2590:3:46","nodeType":"YulIdentifier","src":"2590:3:46"},"nativeSrc":"2590:25:46","nodeType":"YulFunctionCall","src":"2590:25:46"},"variables":[{"name":"mask","nativeSrc":"2582:4:46","nodeType":"YulTypedName","src":"2582:4:46","type":""}]},{"nativeSrc":"2628:52:46","nodeType":"YulVariableDeclaration","src":"2628:52:46","value":{"arguments":[{"name":"word","nativeSrc":"2651:4:46","nodeType":"YulIdentifier","src":"2651:4:46"},{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2665:6:46","nodeType":"YulIdentifier","src":"2665:6:46"},{"name":"mask","nativeSrc":"2673:4:46","nodeType":"YulIdentifier","src":"2673:4:46"}],"functionName":{"name":"shl","nativeSrc":"2661:3:46","nodeType":"YulIdentifier","src":"2661:3:46"},"nativeSrc":"2661:17:46","nodeType":"YulFunctionCall","src":"2661:17:46"}],"functionName":{"name":"not","nativeSrc":"2657:3:46","nodeType":"YulIdentifier","src":"2657:3:46"},"nativeSrc":"2657:22:46","nodeType":"YulFunctionCall","src":"2657:22:46"}],"functionName":{"name":"and","nativeSrc":"2647:3:46","nodeType":"YulIdentifier","src":"2647:3:46"},"nativeSrc":"2647:33:46","nodeType":"YulFunctionCall","src":"2647:33:46"},"variables":[{"name":"clearedWord","nativeSrc":"2632:11:46","nodeType":"YulTypedName","src":"2632:11:46","type":""}]},{"nativeSrc":"2693:45:46","nodeType":"YulAssignment","src":"2693:45:46","value":{"arguments":[{"name":"clearedWord","nativeSrc":"2706:11:46","nodeType":"YulIdentifier","src":"2706:11:46"},{"arguments":[{"name":"offset","nativeSrc":"2723:6:46","nodeType":"YulIdentifier","src":"2723:6:46"},{"name":"value","nativeSrc":"2731:5:46","nodeType":"YulIdentifier","src":"2731:5:46"}],"functionName":{"name":"shl","nativeSrc":"2719:3:46","nodeType":"YulIdentifier","src":"2719:3:46"},"nativeSrc":"2719:18:46","nodeType":"YulFunctionCall","src":"2719:18:46"}],"functionName":{"name":"or","nativeSrc":"2703:2:46","nodeType":"YulIdentifier","src":"2703:2:46"},"nativeSrc":"2703:35:46","nodeType":"YulFunctionCall","src":"2703:35:46"},"variableNames":[{"name":"result","nativeSrc":"2693:6:46","nodeType":"YulIdentifier","src":"2693:6:46"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7136,"isOffset":false,"isSlot":false,"src":"2598:9:46","valueSize":1},{"declaration":7134,"isOffset":false,"isSlot":false,"src":"2665:6:46","valueSize":1},{"declaration":7134,"isOffset":false,"isSlot":false,"src":"2723:6:46","valueSize":1},{"declaration":7139,"isOffset":false,"isSlot":false,"src":"2693:6:46","valueSize":1},{"declaration":7132,"isOffset":false,"isSlot":false,"src":"2731:5:46","valueSize":1},{"declaration":7130,"isOffset":false,"isSlot":false,"src":"2651:4:46","valueSize":1}],"flags":["memory-safe"],"id":7147,"nodeType":"InlineAssembly","src":"2539:209:46"}]},"documentation":{"id":7128,"nodeType":"StructuredDocumentation","src":"1930:162:46","text":" @dev Inserts an unsigned integer of bitLength, shifted by an offset, into a 256 bit word,\n replacing the old value. Returns the new word."},"id":7149,"implemented":true,"kind":"function","modifiers":[],"name":"insertUint","nameLocation":"2106:10:46","nodeType":"FunctionDefinition","parameters":{"id":7137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7130,"mutability":"mutable","name":"word","nameLocation":"2134:4:46","nodeType":"VariableDeclaration","scope":7149,"src":"2126:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7129,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2126:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7132,"mutability":"mutable","name":"value","nameLocation":"2156:5:46","nodeType":"VariableDeclaration","scope":7149,"src":"2148:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7131,"name":"uint256","nodeType":"ElementaryTypeName","src":"2148:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7134,"mutability":"mutable","name":"offset","nameLocation":"2179:6:46","nodeType":"VariableDeclaration","scope":7149,"src":"2171:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7133,"name":"uint256","nodeType":"ElementaryTypeName","src":"2171:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7136,"mutability":"mutable","name":"bitLength","nameLocation":"2203:9:46","nodeType":"VariableDeclaration","scope":7149,"src":"2195:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7135,"name":"uint256","nodeType":"ElementaryTypeName","src":"2195:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2116:102:46"},"returnParameters":{"id":7140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7139,"mutability":"mutable","name":"result","nameLocation":"2250:6:46","nodeType":"VariableDeclaration","scope":7149,"src":"2242:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2242:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2241:16:46"},"scope":7535,"src":"2097:657:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7178,"nodeType":"Block","src":"3023:568:46","statements":[{"assignments":[7162],"declarations":[{"constant":false,"id":7162,"mutability":"mutable","name":"addressBitLength","nameLocation":"3041:16:46","nodeType":"VariableDeclaration","scope":7178,"src":"3033:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3033:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7164,"initialValue":{"hexValue":"313630","id":7163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3060:3:46","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},"nodeType":"VariableDeclarationStatement","src":"3033:30:46"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":7170,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7154,"src":"3113:5:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3105:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7168,"name":"uint160","nodeType":"ElementaryTypeName","src":"3105:7:46","typeDescriptions":{}}},"id":7171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3105:14:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3097:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7166,"name":"uint256","nodeType":"ElementaryTypeName","src":"3097:7:46","typeDescriptions":{}}},"id":7172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3097:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7173,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7156,"src":"3122:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7174,"name":"addressBitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7162,"src":"3130:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7165,"name":"_validateEncodingParams","nodeType":"Identifier","overloadedDeclarations":[7459,7534],"referencedDeclaration":7459,"src":"3073:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":7175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3073:74:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7176,"nodeType":"ExpressionStatement","src":"3073:74:46"},{"AST":{"nativeSrc":"3394:191:46","nodeType":"YulBlock","src":"3394:191:46","statements":[{"nativeSrc":"3408:44:46","nodeType":"YulVariableDeclaration","src":"3408:44:46","value":{"arguments":[{"arguments":[{"name":"addressBitLength","nativeSrc":"3428:16:46","nodeType":"YulIdentifier","src":"3428:16:46"},{"kind":"number","nativeSrc":"3446:1:46","nodeType":"YulLiteral","src":"3446:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3424:3:46","nodeType":"YulIdentifier","src":"3424:3:46"},"nativeSrc":"3424:24:46","nodeType":"YulFunctionCall","src":"3424:24:46"},{"kind":"number","nativeSrc":"3450:1:46","nodeType":"YulLiteral","src":"3450:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3420:3:46","nodeType":"YulIdentifier","src":"3420:3:46"},"nativeSrc":"3420:32:46","nodeType":"YulFunctionCall","src":"3420:32:46"},"variables":[{"name":"mask","nativeSrc":"3412:4:46","nodeType":"YulTypedName","src":"3412:4:46","type":""}]},{"nativeSrc":"3465:52:46","nodeType":"YulVariableDeclaration","src":"3465:52:46","value":{"arguments":[{"name":"word","nativeSrc":"3488:4:46","nodeType":"YulIdentifier","src":"3488:4:46"},{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3502:6:46","nodeType":"YulIdentifier","src":"3502:6:46"},{"name":"mask","nativeSrc":"3510:4:46","nodeType":"YulIdentifier","src":"3510:4:46"}],"functionName":{"name":"shl","nativeSrc":"3498:3:46","nodeType":"YulIdentifier","src":"3498:3:46"},"nativeSrc":"3498:17:46","nodeType":"YulFunctionCall","src":"3498:17:46"}],"functionName":{"name":"not","nativeSrc":"3494:3:46","nodeType":"YulIdentifier","src":"3494:3:46"},"nativeSrc":"3494:22:46","nodeType":"YulFunctionCall","src":"3494:22:46"}],"functionName":{"name":"and","nativeSrc":"3484:3:46","nodeType":"YulIdentifier","src":"3484:3:46"},"nativeSrc":"3484:33:46","nodeType":"YulFunctionCall","src":"3484:33:46"},"variables":[{"name":"clearedWord","nativeSrc":"3469:11:46","nodeType":"YulTypedName","src":"3469:11:46","type":""}]},{"nativeSrc":"3530:45:46","nodeType":"YulAssignment","src":"3530:45:46","value":{"arguments":[{"name":"clearedWord","nativeSrc":"3543:11:46","nodeType":"YulIdentifier","src":"3543:11:46"},{"arguments":[{"name":"offset","nativeSrc":"3560:6:46","nodeType":"YulIdentifier","src":"3560:6:46"},{"name":"value","nativeSrc":"3568:5:46","nodeType":"YulIdentifier","src":"3568:5:46"}],"functionName":{"name":"shl","nativeSrc":"3556:3:46","nodeType":"YulIdentifier","src":"3556:3:46"},"nativeSrc":"3556:18:46","nodeType":"YulFunctionCall","src":"3556:18:46"}],"functionName":{"name":"or","nativeSrc":"3540:2:46","nodeType":"YulIdentifier","src":"3540:2:46"},"nativeSrc":"3540:35:46","nodeType":"YulFunctionCall","src":"3540:35:46"},"variableNames":[{"name":"result","nativeSrc":"3530:6:46","nodeType":"YulIdentifier","src":"3530:6:46"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7162,"isOffset":false,"isSlot":false,"src":"3428:16:46","valueSize":1},{"declaration":7156,"isOffset":false,"isSlot":false,"src":"3502:6:46","valueSize":1},{"declaration":7156,"isOffset":false,"isSlot":false,"src":"3560:6:46","valueSize":1},{"declaration":7159,"isOffset":false,"isSlot":false,"src":"3530:6:46","valueSize":1},{"declaration":7154,"isOffset":false,"isSlot":false,"src":"3568:5:46","valueSize":1},{"declaration":7152,"isOffset":false,"isSlot":false,"src":"3488:4:46","valueSize":1}],"flags":["memory-safe"],"id":7177,"nodeType":"InlineAssembly","src":"3369:216:46"}]},"documentation":{"id":7150,"nodeType":"StructuredDocumentation","src":"2760:151:46","text":" @dev Inserts an address (160 bits), shifted by an offset, into a 256 bit word,\n replacing the old value. Returns the new word."},"id":7179,"implemented":true,"kind":"function","modifiers":[],"name":"insertAddress","nameLocation":"2925:13:46","nodeType":"FunctionDefinition","parameters":{"id":7157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7152,"mutability":"mutable","name":"word","nameLocation":"2947:4:46","nodeType":"VariableDeclaration","scope":7179,"src":"2939:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7151,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2939:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7154,"mutability":"mutable","name":"value","nameLocation":"2961:5:46","nodeType":"VariableDeclaration","scope":7179,"src":"2953:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7153,"name":"address","nodeType":"ElementaryTypeName","src":"2953:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7156,"mutability":"mutable","name":"offset","nameLocation":"2976:6:46","nodeType":"VariableDeclaration","scope":7179,"src":"2968:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7155,"name":"uint256","nodeType":"ElementaryTypeName","src":"2968:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2938:45:46"},"returnParameters":{"id":7160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7159,"mutability":"mutable","name":"result","nameLocation":"3015:6:46","nodeType":"VariableDeclaration","scope":7179,"src":"3007:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3007:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3006:16:46"},"scope":7535,"src":"2916:675:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7239,"nodeType":"Block","src":"3933:343:46","statements":[{"expression":{"arguments":[{"id":7194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"3967:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":7195,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"3974:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7196,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7188,"src":"3982:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7193,"name":"_validateEncodingParams","nodeType":"Identifier","overloadedDeclarations":[7459,7534],"referencedDeclaration":7534,"src":"3943:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (int256,uint256,uint256) pure"}},"id":7197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:49:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7198,"nodeType":"ExpressionStatement","src":"3943:49:46"},{"assignments":[7200],"declarations":[{"constant":false,"id":7200,"mutability":"mutable","name":"mask","nameLocation":"4011:4:46","nodeType":"VariableDeclaration","scope":7239,"src":"4003:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7199,"name":"uint256","nodeType":"ElementaryTypeName","src":"4003:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7207,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4019:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7202,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7188,"src":"4024:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4019:14:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4018:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4037:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4018:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4003:35:46"},{"assignments":[7209],"declarations":[{"constant":false,"id":7209,"mutability":"mutable","name":"clearedWord","nameLocation":"4056:11:46","nodeType":"VariableDeclaration","scope":7239,"src":"4048:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4048:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7223,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7214,"name":"word","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7182,"src":"4086:4:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4078:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7212,"name":"uint256","nodeType":"ElementaryTypeName","src":"4078:7:46","typeDescriptions":{}}},"id":7215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4078:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":7220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"4094:17:46","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7216,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7200,"src":"4096:4:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7217,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"4104:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4096:14:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7219,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4095:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4078:33:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4070:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7210,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4070:7:46","typeDescriptions":{}}},"id":7222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4070:42:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4048:64:46"},{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":7237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7224,"name":"clearedWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7209,"src":"4213:11:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7229,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7184,"src":"4244:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4236:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7227,"name":"uint256","nodeType":"ElementaryTypeName","src":"4236:7:46","typeDescriptions":{}}},"id":7230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4236:14:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":7231,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7200,"src":"4253:4:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4236:21:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4235:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7234,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7186,"src":"4262:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4235:33:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4227:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4227:7:46","typeDescriptions":{}}},"id":7236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4227:42:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4213:56:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7192,"id":7238,"nodeType":"Return","src":"4206:63:46"}]},"documentation":{"id":7180,"nodeType":"StructuredDocumentation","src":"3597:217:46","text":" @dev Inserts a signed integer shifted by an offset into a 256 bit word, replacing the old value. Returns\n the new word.\n Assumes `value` can be represented using `bitLength` bits."},"id":7240,"implemented":true,"kind":"function","modifiers":[],"name":"insertInt","nameLocation":"3828:9:46","nodeType":"FunctionDefinition","parameters":{"id":7189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7182,"mutability":"mutable","name":"word","nameLocation":"3846:4:46","nodeType":"VariableDeclaration","scope":7240,"src":"3838:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7181,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3838:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7184,"mutability":"mutable","name":"value","nameLocation":"3859:5:46","nodeType":"VariableDeclaration","scope":7240,"src":"3852:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7183,"name":"int256","nodeType":"ElementaryTypeName","src":"3852:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7186,"mutability":"mutable","name":"offset","nameLocation":"3874:6:46","nodeType":"VariableDeclaration","scope":7240,"src":"3866:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7185,"name":"uint256","nodeType":"ElementaryTypeName","src":"3866:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7188,"mutability":"mutable","name":"bitLength","nameLocation":"3890:9:46","nodeType":"VariableDeclaration","scope":7240,"src":"3882:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7187,"name":"uint256","nodeType":"ElementaryTypeName","src":"3882:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3837:63:46"},"returnParameters":{"id":7192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7240,"src":"3924:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3924:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3923:9:46"},"scope":7535,"src":"3819:457:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7265,"nodeType":"Block","src":"4824:108:46","statements":[{"expression":{"arguments":[{"id":7253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7243,"src":"4858:5:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7254,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"4865:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7255,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7247,"src":"4873:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7252,"name":"_validateEncodingParams","nodeType":"Identifier","overloadedDeclarations":[7459,7534],"referencedDeclaration":7459,"src":"4834:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":7256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:49:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7257,"nodeType":"ExpressionStatement","src":"4834:49:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7260,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7243,"src":"4909:5:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7261,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7245,"src":"4918:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4909:15:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4901:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7258,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4901:7:46","typeDescriptions":{}}},"id":7263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4901:24:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7251,"id":7264,"nodeType":"Return","src":"4894:31:46"}]},"documentation":{"id":7241,"nodeType":"StructuredDocumentation","src":"4492:225:46","text":" @dev Encodes an unsigned integer shifted by an offset. Ensures value fits within\n `bitLength` bits.\n The return value can be ORed bitwise with other encoded values to form a 256 bit word."},"id":7266,"implemented":true,"kind":"function","modifiers":[],"name":"encodeUint","nameLocation":"4731:10:46","nodeType":"FunctionDefinition","parameters":{"id":7248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7243,"mutability":"mutable","name":"value","nameLocation":"4750:5:46","nodeType":"VariableDeclaration","scope":7266,"src":"4742:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7242,"name":"uint256","nodeType":"ElementaryTypeName","src":"4742:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7245,"mutability":"mutable","name":"offset","nameLocation":"4765:6:46","nodeType":"VariableDeclaration","scope":7266,"src":"4757:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7244,"name":"uint256","nodeType":"ElementaryTypeName","src":"4757:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7247,"mutability":"mutable","name":"bitLength","nameLocation":"4781:9:46","nodeType":"VariableDeclaration","scope":7266,"src":"4773:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7246,"name":"uint256","nodeType":"ElementaryTypeName","src":"4773:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4741:50:46"},"returnParameters":{"id":7251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7266,"src":"4815:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7249,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4815:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4814:9:46"},"scope":7535,"src":"4722:210:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7306,"nodeType":"Block","src":"5214:255:46","statements":[{"expression":{"arguments":[{"id":7279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"5248:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":7280,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7271,"src":"5255:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7281,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7273,"src":"5263:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7278,"name":"_validateEncodingParams","nodeType":"Identifier","overloadedDeclarations":[7459,7534],"referencedDeclaration":7534,"src":"5224:23:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (int256,uint256,uint256) pure"}},"id":7282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5224:49:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7283,"nodeType":"ExpressionStatement","src":"5224:49:46"},{"assignments":[7285],"declarations":[{"constant":false,"id":7285,"mutability":"mutable","name":"mask","nameLocation":"5292:4:46","nodeType":"VariableDeclaration","scope":7306,"src":"5284:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7284,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7292,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5300:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7287,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7273,"src":"5305:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5300:14:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5299:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5318:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5299:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5284:35:46"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7297,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7269,"src":"5437:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5429:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7295,"name":"uint256","nodeType":"ElementaryTypeName","src":"5429:7:46","typeDescriptions":{}}},"id":7298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5429:14:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":7299,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7285,"src":"5446:4:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5429:21:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7301,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5428:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7302,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7271,"src":"5455:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5428:33:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5420:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":7293,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5420:7:46","typeDescriptions":{}}},"id":7304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:42:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7277,"id":7305,"nodeType":"Return","src":"5413:49:46"}]},"documentation":{"id":7267,"nodeType":"StructuredDocumentation","src":"4938:171:46","text":" @dev Encodes a signed integer shifted by an offset.\n The return value can be ORed bitwise with other encoded values to form a 256 bit word."},"id":7307,"implemented":true,"kind":"function","modifiers":[],"name":"encodeInt","nameLocation":"5123:9:46","nodeType":"FunctionDefinition","parameters":{"id":7274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7269,"mutability":"mutable","name":"value","nameLocation":"5140:5:46","nodeType":"VariableDeclaration","scope":7307,"src":"5133:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7268,"name":"int256","nodeType":"ElementaryTypeName","src":"5133:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7271,"mutability":"mutable","name":"offset","nameLocation":"5155:6:46","nodeType":"VariableDeclaration","scope":7307,"src":"5147:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7270,"name":"uint256","nodeType":"ElementaryTypeName","src":"5147:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7273,"mutability":"mutable","name":"bitLength","nameLocation":"5171:9:46","nodeType":"VariableDeclaration","scope":7307,"src":"5163:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7272,"name":"uint256","nodeType":"ElementaryTypeName","src":"5163:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5132:49:46"},"returnParameters":{"id":7277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7307,"src":"5205:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5205:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5204:9:46"},"scope":7535,"src":"5114:355:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7320,"nodeType":"Block","src":"5912:221:46","statements":[{"AST":{"nativeSrc":"6044:83:46","nodeType":"YulBlock","src":"6044:83:46","statements":[{"nativeSrc":"6058:59:46","nodeType":"YulAssignment","src":"6058:59:46","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6076:6:46","nodeType":"YulIdentifier","src":"6076:6:46"},{"name":"word","nativeSrc":"6084:4:46","nodeType":"YulIdentifier","src":"6084:4:46"}],"functionName":{"name":"shr","nativeSrc":"6072:3:46","nodeType":"YulIdentifier","src":"6072:3:46"},"nativeSrc":"6072:17:46","nodeType":"YulFunctionCall","src":"6072:17:46"},{"arguments":[{"arguments":[{"name":"bitLength","nativeSrc":"6099:9:46","nodeType":"YulIdentifier","src":"6099:9:46"},{"kind":"number","nativeSrc":"6110:1:46","nodeType":"YulLiteral","src":"6110:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6095:3:46","nodeType":"YulIdentifier","src":"6095:3:46"},"nativeSrc":"6095:17:46","nodeType":"YulFunctionCall","src":"6095:17:46"},{"kind":"number","nativeSrc":"6114:1:46","nodeType":"YulLiteral","src":"6114:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6091:3:46","nodeType":"YulIdentifier","src":"6091:3:46"},"nativeSrc":"6091:25:46","nodeType":"YulFunctionCall","src":"6091:25:46"}],"functionName":{"name":"and","nativeSrc":"6068:3:46","nodeType":"YulIdentifier","src":"6068:3:46"},"nativeSrc":"6068:49:46","nodeType":"YulFunctionCall","src":"6068:49:46"},"variableNames":[{"name":"result","nativeSrc":"6058:6:46","nodeType":"YulIdentifier","src":"6058:6:46"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7314,"isOffset":false,"isSlot":false,"src":"6099:9:46","valueSize":1},{"declaration":7312,"isOffset":false,"isSlot":false,"src":"6076:6:46","valueSize":1},{"declaration":7317,"isOffset":false,"isSlot":false,"src":"6058:6:46","valueSize":1},{"declaration":7310,"isOffset":false,"isSlot":false,"src":"6084:4:46","valueSize":1}],"flags":["memory-safe"],"id":7319,"nodeType":"InlineAssembly","src":"6019:108:46"}]},"documentation":{"id":7308,"nodeType":"StructuredDocumentation","src":"5685:114:46","text":"@dev Decodes and returns an unsigned integer with `bitLength` bits, shifted by an offset, from a 256 bit word."},"id":7321,"implemented":true,"kind":"function","modifiers":[],"name":"decodeUint","nameLocation":"5813:10:46","nodeType":"FunctionDefinition","parameters":{"id":7315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7310,"mutability":"mutable","name":"word","nameLocation":"5832:4:46","nodeType":"VariableDeclaration","scope":7321,"src":"5824:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7309,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5824:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7312,"mutability":"mutable","name":"offset","nameLocation":"5846:6:46","nodeType":"VariableDeclaration","scope":7321,"src":"5838:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7311,"name":"uint256","nodeType":"ElementaryTypeName","src":"5838:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7314,"mutability":"mutable","name":"bitLength","nameLocation":"5862:9:46","nodeType":"VariableDeclaration","scope":7321,"src":"5854:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7313,"name":"uint256","nodeType":"ElementaryTypeName","src":"5854:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5823:49:46"},"returnParameters":{"id":7318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7317,"mutability":"mutable","name":"result","nameLocation":"5904:6:46","nodeType":"VariableDeclaration","scope":7321,"src":"5896:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7316,"name":"uint256","nodeType":"ElementaryTypeName","src":"5896:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5895:16:46"},"scope":7535,"src":"5804:329:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7372,"nodeType":"Block","src":"6361:660:46","statements":[{"assignments":[7334],"declarations":[{"constant":false,"id":7334,"mutability":"mutable","name":"maxInt","nameLocation":"6378:6:46","nodeType":"VariableDeclaration","scope":7372,"src":"6371:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7333,"name":"int256","nodeType":"ElementaryTypeName","src":"6371:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7347,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6395:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7338,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"6401:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6413:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6401:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7341,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6400:15:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6395:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6394:22:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6419:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6394:26:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6387:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7335,"name":"int256","nodeType":"ElementaryTypeName","src":"6387:6:46","typeDescriptions":{}}},"id":7346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6387:34:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6371:50:46"},{"assignments":[7349],"declarations":[{"constant":false,"id":7349,"mutability":"mutable","name":"mask","nameLocation":"6439:4:46","nodeType":"VariableDeclaration","scope":7372,"src":"6431:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7348,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7356,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":7350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6447:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":7351,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7328,"src":"6452:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6447:14:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6446:16:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6465:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6446:20:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6431:35:46"},{"assignments":[7358],"declarations":[{"constant":false,"id":7358,"mutability":"mutable","name":"value","nameLocation":"6484:5:46","nodeType":"VariableDeclaration","scope":7372,"src":"6477:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7357,"name":"int256","nodeType":"ElementaryTypeName","src":"6477:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7370,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":7365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7363,"name":"word","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7324,"src":"6507:4:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7364,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7326,"src":"6515:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6507:14:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6499:7:46","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7361,"name":"uint256","nodeType":"ElementaryTypeName","src":"6499:7:46","typeDescriptions":{}}},"id":7366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6499:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":7367,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7349,"src":"6525:4:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6499:30:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6492:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7359,"name":"int256","nodeType":"ElementaryTypeName","src":"6492:6:46","typeDescriptions":{}}},"id":7369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6492:38:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6477:53:46"},{"AST":{"nativeSrc":"6937:78:46","nodeType":"YulBlock","src":"6937:78:46","statements":[{"nativeSrc":"6951:54:46","nodeType":"YulAssignment","src":"6951:54:46","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6971:5:46","nodeType":"YulIdentifier","src":"6971:5:46"},{"name":"maxInt","nativeSrc":"6978:6:46","nodeType":"YulIdentifier","src":"6978:6:46"}],"functionName":{"name":"gt","nativeSrc":"6968:2:46","nodeType":"YulIdentifier","src":"6968:2:46"},"nativeSrc":"6968:17:46","nodeType":"YulFunctionCall","src":"6968:17:46"},{"arguments":[{"name":"mask","nativeSrc":"6991:4:46","nodeType":"YulIdentifier","src":"6991:4:46"}],"functionName":{"name":"not","nativeSrc":"6987:3:46","nodeType":"YulIdentifier","src":"6987:3:46"},"nativeSrc":"6987:9:46","nodeType":"YulFunctionCall","src":"6987:9:46"}],"functionName":{"name":"mul","nativeSrc":"6964:3:46","nodeType":"YulIdentifier","src":"6964:3:46"},"nativeSrc":"6964:33:46","nodeType":"YulFunctionCall","src":"6964:33:46"},{"name":"value","nativeSrc":"6999:5:46","nodeType":"YulIdentifier","src":"6999:5:46"}],"functionName":{"name":"or","nativeSrc":"6961:2:46","nodeType":"YulIdentifier","src":"6961:2:46"},"nativeSrc":"6961:44:46","nodeType":"YulFunctionCall","src":"6961:44:46"},"variableNames":[{"name":"result","nativeSrc":"6951:6:46","nodeType":"YulIdentifier","src":"6951:6:46"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7349,"isOffset":false,"isSlot":false,"src":"6991:4:46","valueSize":1},{"declaration":7334,"isOffset":false,"isSlot":false,"src":"6978:6:46","valueSize":1},{"declaration":7331,"isOffset":false,"isSlot":false,"src":"6951:6:46","valueSize":1},{"declaration":7358,"isOffset":false,"isSlot":false,"src":"6971:5:46","valueSize":1},{"declaration":7358,"isOffset":false,"isSlot":false,"src":"6999:5:46","valueSize":1}],"flags":["memory-safe"],"id":7371,"nodeType":"InlineAssembly","src":"6912:103:46"}]},"documentation":{"id":7322,"nodeType":"StructuredDocumentation","src":"6139:111:46","text":"@dev Decodes and returns a signed integer with `bitLength` bits, shifted by an offset, from a 256 bit word."},"id":7373,"implemented":true,"kind":"function","modifiers":[],"name":"decodeInt","nameLocation":"6264:9:46","nodeType":"FunctionDefinition","parameters":{"id":7329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7324,"mutability":"mutable","name":"word","nameLocation":"6282:4:46","nodeType":"VariableDeclaration","scope":7373,"src":"6274:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6274:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7326,"mutability":"mutable","name":"offset","nameLocation":"6296:6:46","nodeType":"VariableDeclaration","scope":7373,"src":"6288:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7325,"name":"uint256","nodeType":"ElementaryTypeName","src":"6288:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7328,"mutability":"mutable","name":"bitLength","nameLocation":"6312:9:46","nodeType":"VariableDeclaration","scope":7373,"src":"6304:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7327,"name":"uint256","nodeType":"ElementaryTypeName","src":"6304:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6273:49:46"},"returnParameters":{"id":7332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7331,"mutability":"mutable","name":"result","nameLocation":"6353:6:46","nodeType":"VariableDeclaration","scope":7373,"src":"6346:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7330,"name":"int256","nodeType":"ElementaryTypeName","src":"6346:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"6345:15:46"},"scope":7535,"src":"6255:766:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7384,"nodeType":"Block","src":"7218:215:46","statements":[{"AST":{"nativeSrc":"7350:77:46","nodeType":"YulBlock","src":"7350:77:46","statements":[{"nativeSrc":"7364:53:46","nodeType":"YulAssignment","src":"7364:53:46","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"7382:6:46","nodeType":"YulIdentifier","src":"7382:6:46"},{"name":"word","nativeSrc":"7390:4:46","nodeType":"YulIdentifier","src":"7390:4:46"}],"functionName":{"name":"shr","nativeSrc":"7378:3:46","nodeType":"YulIdentifier","src":"7378:3:46"},"nativeSrc":"7378:17:46","nodeType":"YulFunctionCall","src":"7378:17:46"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7405:3:46","nodeType":"YulLiteral","src":"7405:3:46","type":"","value":"160"},{"kind":"number","nativeSrc":"7410:1:46","nodeType":"YulLiteral","src":"7410:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7401:3:46","nodeType":"YulIdentifier","src":"7401:3:46"},"nativeSrc":"7401:11:46","nodeType":"YulFunctionCall","src":"7401:11:46"},{"kind":"number","nativeSrc":"7414:1:46","nodeType":"YulLiteral","src":"7414:1:46","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7397:3:46","nodeType":"YulIdentifier","src":"7397:3:46"},"nativeSrc":"7397:19:46","nodeType":"YulFunctionCall","src":"7397:19:46"}],"functionName":{"name":"and","nativeSrc":"7374:3:46","nodeType":"YulIdentifier","src":"7374:3:46"},"nativeSrc":"7374:43:46","nodeType":"YulFunctionCall","src":"7374:43:46"},"variableNames":[{"name":"result","nativeSrc":"7364:6:46","nodeType":"YulIdentifier","src":"7364:6:46"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7378,"isOffset":false,"isSlot":false,"src":"7382:6:46","valueSize":1},{"declaration":7381,"isOffset":false,"isSlot":false,"src":"7364:6:46","valueSize":1},{"declaration":7376,"isOffset":false,"isSlot":false,"src":"7390:4:46","valueSize":1}],"flags":["memory-safe"],"id":7383,"nodeType":"InlineAssembly","src":"7325:102:46"}]},"documentation":{"id":7374,"nodeType":"StructuredDocumentation","src":"7027:94:46","text":"@dev Decodes and returns an address (160 bits), shifted by an offset, from a 256 bit word."},"id":7385,"implemented":true,"kind":"function","modifiers":[],"name":"decodeAddress","nameLocation":"7135:13:46","nodeType":"FunctionDefinition","parameters":{"id":7379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7376,"mutability":"mutable","name":"word","nameLocation":"7157:4:46","nodeType":"VariableDeclaration","scope":7385,"src":"7149:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7375,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7149:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7378,"mutability":"mutable","name":"offset","nameLocation":"7171:6:46","nodeType":"VariableDeclaration","scope":7385,"src":"7163:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7377,"name":"uint256","nodeType":"ElementaryTypeName","src":"7163:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7148:30:46"},"returnParameters":{"id":7382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7381,"mutability":"mutable","name":"result","nameLocation":"7210:6:46","nodeType":"VariableDeclaration","scope":7385,"src":"7202:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7380,"name":"address","nodeType":"ElementaryTypeName","src":"7202:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7201:16:46"},"scope":7535,"src":"7126:307:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7396,"nodeType":"Block","src":"7823:183:46","statements":[{"AST":{"nativeSrc":"7941:59:46","nodeType":"YulBlock","src":"7941:59:46","statements":[{"nativeSrc":"7955:35:46","nodeType":"YulAssignment","src":"7955:35:46","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"7973:6:46","nodeType":"YulIdentifier","src":"7973:6:46"},{"name":"word","nativeSrc":"7981:4:46","nodeType":"YulIdentifier","src":"7981:4:46"}],"functionName":{"name":"shr","nativeSrc":"7969:3:46","nodeType":"YulIdentifier","src":"7969:3:46"},"nativeSrc":"7969:17:46","nodeType":"YulFunctionCall","src":"7969:17:46"},{"kind":"number","nativeSrc":"7988:1:46","nodeType":"YulLiteral","src":"7988:1:46","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"7965:3:46","nodeType":"YulIdentifier","src":"7965:3:46"},"nativeSrc":"7965:25:46","nodeType":"YulFunctionCall","src":"7965:25:46"},"variableNames":[{"name":"result","nativeSrc":"7955:6:46","nodeType":"YulIdentifier","src":"7955:6:46"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7390,"isOffset":false,"isSlot":false,"src":"7973:6:46","valueSize":1},{"declaration":7393,"isOffset":false,"isSlot":false,"src":"7955:6:46","valueSize":1},{"declaration":7388,"isOffset":false,"isSlot":false,"src":"7981:4:46","valueSize":1}],"flags":["memory-safe"],"id":7395,"nodeType":"InlineAssembly","src":"7916:84:46"}]},"documentation":{"id":7386,"nodeType":"StructuredDocumentation","src":"7652:80:46","text":"@dev Decodes and returns a boolean shifted by an offset from a 256 bit word."},"id":7397,"implemented":true,"kind":"function","modifiers":[],"name":"decodeBool","nameLocation":"7746:10:46","nodeType":"FunctionDefinition","parameters":{"id":7391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7388,"mutability":"mutable","name":"word","nameLocation":"7765:4:46","nodeType":"VariableDeclaration","scope":7397,"src":"7757:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7757:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7390,"mutability":"mutable","name":"offset","nameLocation":"7779:6:46","nodeType":"VariableDeclaration","scope":7397,"src":"7771:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7389,"name":"uint256","nodeType":"ElementaryTypeName","src":"7771:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7756:30:46"},"returnParameters":{"id":7394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7393,"mutability":"mutable","name":"result","nameLocation":"7815:6:46","nodeType":"VariableDeclaration","scope":7397,"src":"7810:11:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7392,"name":"bool","nodeType":"ElementaryTypeName","src":"7810:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7809:13:46"},"scope":7535,"src":"7737:269:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7410,"nodeType":"Block","src":"8261:371:46","statements":[{"AST":{"nativeSrc":"8495:131:46","nodeType":"YulBlock","src":"8495:131:46","statements":[{"nativeSrc":"8509:49:46","nodeType":"YulVariableDeclaration","src":"8509:49:46","value":{"arguments":[{"name":"word","nativeSrc":"8532:4:46","nodeType":"YulIdentifier","src":"8532:4:46"},{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8546:6:46","nodeType":"YulIdentifier","src":"8546:6:46"},{"kind":"number","nativeSrc":"8554:1:46","nodeType":"YulLiteral","src":"8554:1:46","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8542:3:46","nodeType":"YulIdentifier","src":"8542:3:46"},"nativeSrc":"8542:14:46","nodeType":"YulFunctionCall","src":"8542:14:46"}],"functionName":{"name":"not","nativeSrc":"8538:3:46","nodeType":"YulIdentifier","src":"8538:3:46"},"nativeSrc":"8538:19:46","nodeType":"YulFunctionCall","src":"8538:19:46"}],"functionName":{"name":"and","nativeSrc":"8528:3:46","nodeType":"YulIdentifier","src":"8528:3:46"},"nativeSrc":"8528:30:46","nodeType":"YulFunctionCall","src":"8528:30:46"},"variables":[{"name":"clearedWord","nativeSrc":"8513:11:46","nodeType":"YulTypedName","src":"8513:11:46","type":""}]},{"nativeSrc":"8571:45:46","nodeType":"YulAssignment","src":"8571:45:46","value":{"arguments":[{"name":"clearedWord","nativeSrc":"8584:11:46","nodeType":"YulIdentifier","src":"8584:11:46"},{"arguments":[{"name":"offset","nativeSrc":"8601:6:46","nodeType":"YulIdentifier","src":"8601:6:46"},{"name":"value","nativeSrc":"8609:5:46","nodeType":"YulIdentifier","src":"8609:5:46"}],"functionName":{"name":"shl","nativeSrc":"8597:3:46","nodeType":"YulIdentifier","src":"8597:3:46"},"nativeSrc":"8597:18:46","nodeType":"YulFunctionCall","src":"8597:18:46"}],"functionName":{"name":"or","nativeSrc":"8581:2:46","nodeType":"YulIdentifier","src":"8581:2:46"},"nativeSrc":"8581:35:46","nodeType":"YulFunctionCall","src":"8581:35:46"},"variableNames":[{"name":"result","nativeSrc":"8571:6:46","nodeType":"YulIdentifier","src":"8571:6:46"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7404,"isOffset":false,"isSlot":false,"src":"8546:6:46","valueSize":1},{"declaration":7404,"isOffset":false,"isSlot":false,"src":"8601:6:46","valueSize":1},{"declaration":7407,"isOffset":false,"isSlot":false,"src":"8571:6:46","valueSize":1},{"declaration":7402,"isOffset":false,"isSlot":false,"src":"8609:5:46","valueSize":1},{"declaration":7400,"isOffset":false,"isSlot":false,"src":"8532:4:46","valueSize":1}],"flags":["memory-safe"],"id":7409,"nodeType":"InlineAssembly","src":"8470:156:46"}]},"documentation":{"id":7398,"nodeType":"StructuredDocumentation","src":"8012:143:46","text":" @dev Inserts a boolean value shifted by an offset into a 256 bit word, replacing the old value.\n Returns the new word."},"id":7411,"implemented":true,"kind":"function","modifiers":[],"name":"insertBool","nameLocation":"8169:10:46","nodeType":"FunctionDefinition","parameters":{"id":7405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7400,"mutability":"mutable","name":"word","nameLocation":"8188:4:46","nodeType":"VariableDeclaration","scope":7411,"src":"8180:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7399,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8180:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7402,"mutability":"mutable","name":"value","nameLocation":"8199:5:46","nodeType":"VariableDeclaration","scope":7411,"src":"8194:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7401,"name":"bool","nodeType":"ElementaryTypeName","src":"8194:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7404,"mutability":"mutable","name":"offset","nameLocation":"8214:6:46","nodeType":"VariableDeclaration","scope":7411,"src":"8206:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7403,"name":"uint256","nodeType":"ElementaryTypeName","src":"8206:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8179:42:46"},"returnParameters":{"id":7408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7407,"mutability":"mutable","name":"result","nameLocation":"8253:6:46","nodeType":"VariableDeclaration","scope":7411,"src":"8245:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7406,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8245:7:46","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8244:16:46"},"scope":7535,"src":"8160:472:46","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7458,"nodeType":"Block","src":"8942:540:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7420,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"8956:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"323536","id":7421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8966:3:46","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"8956:13:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7427,"nodeType":"IfStatement","src":"8952:64:46","trueBody":{"id":7426,"nodeType":"Block","src":"8971:45:46","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7423,"name":"OutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"8992:11:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8992:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7425,"nodeType":"RevertStatement","src":"8985:20:46"}]}},{"condition":{"id":7442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9184:61:46","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7428,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"9186:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":7429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9199:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9186:14:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7431,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"9204:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"hexValue":"323535","id":7434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9226:3:46","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":7435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9231:3:46","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7436,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"9237:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9231:12:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7432,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42371,"src":"9217:4:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$42371_$","typeString":"type(library Math)"}},"id":7433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9222:3:46","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":41522,"src":"9217:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9217:27:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9204:40:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9186:58:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7441,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9185:60:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7447,"nodeType":"IfStatement","src":"9180:112:46","trueBody":{"id":7446,"nodeType":"Block","src":"9247:45:46","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7443,"name":"OutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"9268:11:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9268:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7445,"nodeType":"RevertStatement","src":"9261:20:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7448,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7413,"src":"9404:5:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":7449,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7417,"src":"9413:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9404:18:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9426:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9404:23:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7457,"nodeType":"IfStatement","src":"9400:76:46","trueBody":{"id":7456,"nodeType":"Block","src":"9429:47:46","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7453,"name":"CodecOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"9450:13:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9450:15:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7455,"nodeType":"RevertStatement","src":"9443:22:46"}]}}]},"id":7459,"implemented":true,"kind":"function","modifiers":[],"name":"_validateEncodingParams","nameLocation":"8855:23:46","nodeType":"FunctionDefinition","parameters":{"id":7418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7413,"mutability":"mutable","name":"value","nameLocation":"8887:5:46","nodeType":"VariableDeclaration","scope":7459,"src":"8879:13:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7412,"name":"uint256","nodeType":"ElementaryTypeName","src":"8879:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7415,"mutability":"mutable","name":"offset","nameLocation":"8902:6:46","nodeType":"VariableDeclaration","scope":7459,"src":"8894:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7414,"name":"uint256","nodeType":"ElementaryTypeName","src":"8894:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7417,"mutability":"mutable","name":"bitLength","nameLocation":"8918:9:46","nodeType":"VariableDeclaration","scope":7459,"src":"8910:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7416,"name":"uint256","nodeType":"ElementaryTypeName","src":"8910:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8878:50:46"},"returnParameters":{"id":7419,"nodeType":"ParameterList","parameters":[],"src":"8942:0:46"},"scope":7535,"src":"8846:636:46","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7533,"nodeType":"Block","src":"9583:1080:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7468,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"9597:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"323536","id":7469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9607:3:46","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"9597:13:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7475,"nodeType":"IfStatement","src":"9593:64:46","trueBody":{"id":7474,"nodeType":"Block","src":"9612:45:46","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7471,"name":"OutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"9633:11:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9633:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7473,"nodeType":"RevertStatement","src":"9626:20:46"}]}},{"condition":{"id":7490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9825:61:46","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7476,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7465,"src":"9827:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":7477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9840:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9827:14:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7479,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7465,"src":"9845:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"hexValue":"323535","id":7482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9867:3:46","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":7483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9872:3:46","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7484,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"9878:6:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9872:12:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7480,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42371,"src":"9858:4:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$42371_$","typeString":"type(library Math)"}},"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9863:3:46","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":41522,"src":"9858:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9858:27:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9845:40:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9827:58:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9826:60:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7495,"nodeType":"IfStatement","src":"9821:112:46","trueBody":{"id":7494,"nodeType":"Block","src":"9888:45:46","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7491,"name":"OutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7127,"src":"9909:11:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9909:13:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7493,"nodeType":"RevertStatement","src":"9902:20:46"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7496,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7461,"src":"10013:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":7497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10022:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10013:10:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7531,"nodeType":"Block","src":"10306:351:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7461,"src":"10550:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10558:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10550:9:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7516,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10549:11:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10561:3:46","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":44230,"src":"10549:15:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (uint256)"}},"id":7518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10549:17:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7519,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7465,"src":"10571:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10583:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10571:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7522,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10570:15:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10549:36:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10589:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10549:41:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7530,"nodeType":"IfStatement","src":"10545:102:46","trueBody":{"id":7529,"nodeType":"Block","src":"10592:55:46","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7526,"name":"CodecOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"10617:13:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10617:15:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7528,"nodeType":"RevertStatement","src":"10610:22:46"}]}}]},"id":7532,"nodeType":"IfStatement","src":"10009:648:46","trueBody":{"id":7512,"nodeType":"Block","src":"10025:275:46","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7461,"src":"10204:5:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7500,"name":"bitLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7465,"src":"10214:9:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10226:1:46","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10214:13:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7503,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10213:15:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10204:24:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10232:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10204:29:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7511,"nodeType":"IfStatement","src":"10200:90:46","trueBody":{"id":7510,"nodeType":"Block","src":"10235:55:46","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7507,"name":"CodecOverflow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"10260:13:46","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10260:15:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7509,"nodeType":"RevertStatement","src":"10253:22:46"}]}}]}}]},"id":7534,"implemented":true,"kind":"function","modifiers":[],"name":"_validateEncodingParams","nameLocation":"9497:23:46","nodeType":"FunctionDefinition","parameters":{"id":7466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7461,"mutability":"mutable","name":"value","nameLocation":"9528:5:46","nodeType":"VariableDeclaration","scope":7534,"src":"9521:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7460,"name":"int256","nodeType":"ElementaryTypeName","src":"9521:6:46","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7463,"mutability":"mutable","name":"offset","nameLocation":"9543:6:46","nodeType":"VariableDeclaration","scope":7534,"src":"9535:14:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7462,"name":"uint256","nodeType":"ElementaryTypeName","src":"9535:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7465,"mutability":"mutable","name":"bitLength","nameLocation":"9559:9:46","nodeType":"VariableDeclaration","scope":7534,"src":"9551:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7464,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9520:49:46"},"returnParameters":{"id":7467,"nodeType":"ParameterList","parameters":[],"src":"9583:0:46"},"scope":7535,"src":"9488:1175:46","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":7536,"src":"1408:9257:46","usedErrors":[7124,7127],"usedEvents":[]}],"src":"46:10620:46"},"id":46},"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","exportedSymbols":{"FixedPoint":[7834],"LogExpMath":[9190]},"id":7835,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":7537,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:47"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol","file":"./LogExpMath.sol","id":7539,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7835,"sourceUnit":9191,"src":"72:46:47","symbolAliases":[{"foreign":{"id":7538,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9190,"src":"81:10:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"FixedPoint","contractDependencies":[],"contractKind":"library","documentation":{"id":7540,"nodeType":"StructuredDocumentation","src":"120:119:47","text":"@notice Support 18-decimal fixed point arithmetic. All Vault calculations use this for high and uniform precision."},"fullyImplemented":true,"id":7834,"linearizedBaseContracts":[7834],"name":"FixedPoint","nameLocation":"247:10:47","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7541,"nodeType":"StructuredDocumentation","src":"264:39:47","text":"@notice Attempted division by zero."},"errorSelector":"0a0c22c7","id":7543,"name":"ZeroDivision","nameLocation":"314:12:47","nodeType":"ErrorDefinition","parameters":{"id":7542,"nodeType":"ParameterList","parameters":[],"src":"326:2:47"},"src":"308:21:47"},{"constant":true,"id":7546,"mutability":"constant","name":"ONE","nameLocation":"459:3:47","nodeType":"VariableDeclaration","scope":7834,"src":"433:36:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7544,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":7545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"465:4:47","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":7551,"mutability":"constant","name":"TWO","nameLocation":"522:3:47","nodeType":"VariableDeclaration","scope":7834,"src":"496:39:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7547,"name":"uint256","nodeType":"ElementaryTypeName","src":"496:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"528:1:47","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7549,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"532:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"528:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":7556,"mutability":"constant","name":"FOUR","nameLocation":"567:4:47","nodeType":"VariableDeclaration","scope":7834,"src":"541:40:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7552,"name":"uint256","nodeType":"ElementaryTypeName","src":"541:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":7553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"574:1:47","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7554,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"578:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"574:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":7559,"mutability":"constant","name":"MAX_POW_RELATIVE_ERROR","nameLocation":"613:22:47","nodeType":"VariableDeclaration","scope":7834,"src":"587:56:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7557,"name":"uint256","nodeType":"ElementaryTypeName","src":"587:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":7558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"638:5:47","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"body":{"id":7578,"nodeType":"Block","src":"733:148:47","statements":[{"assignments":[7569],"declarations":[{"constant":false,"id":7569,"mutability":"mutable","name":"product","nameLocation":"828:7:47","nodeType":"VariableDeclaration","scope":7578,"src":"820:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7568,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7573,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7570,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7561,"src":"838:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7571,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"842:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"838:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"820:23:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7574,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7569,"src":"861:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7575,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"871:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"861:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7567,"id":7577,"nodeType":"Return","src":"854:20:47"}]},"id":7579,"implemented":true,"kind":"function","modifiers":[],"name":"mulDown","nameLocation":"671:7:47","nodeType":"FunctionDefinition","parameters":{"id":7564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7561,"mutability":"mutable","name":"a","nameLocation":"687:1:47","nodeType":"VariableDeclaration","scope":7579,"src":"679:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7560,"name":"uint256","nodeType":"ElementaryTypeName","src":"679:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7563,"mutability":"mutable","name":"b","nameLocation":"698:1:47","nodeType":"VariableDeclaration","scope":7579,"src":"690:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7562,"name":"uint256","nodeType":"ElementaryTypeName","src":"690:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"678:22:47"},"returnParameters":{"id":7567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7579,"src":"724:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7565,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"723:9:47"},"scope":7834,"src":"662:219:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7595,"nodeType":"Block","src":"963:351:47","statements":[{"assignments":[7589],"declarations":[{"constant":false,"id":7589,"mutability":"mutable","name":"product","nameLocation":"1058:7:47","nodeType":"VariableDeclaration","scope":7595,"src":"1050:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7588,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7593,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7590,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7581,"src":"1068:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7591,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7583,"src":"1072:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1068:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1050:23:47"},{"AST":{"nativeSrc":"1211:97:47","nodeType":"YulBlock","src":"1211:97:47","statements":[{"nativeSrc":"1225:73:47","nodeType":"YulAssignment","src":"1225:73:47","value":{"arguments":[{"arguments":[{"arguments":[{"name":"product","nativeSrc":"1253:7:47","nodeType":"YulIdentifier","src":"1253:7:47"}],"functionName":{"name":"iszero","nativeSrc":"1246:6:47","nodeType":"YulIdentifier","src":"1246:6:47"},"nativeSrc":"1246:15:47","nodeType":"YulFunctionCall","src":"1246:15:47"}],"functionName":{"name":"iszero","nativeSrc":"1239:6:47","nodeType":"YulIdentifier","src":"1239:6:47"},"nativeSrc":"1239:23:47","nodeType":"YulFunctionCall","src":"1239:23:47"},{"arguments":[{"arguments":[{"arguments":[{"name":"product","nativeSrc":"1276:7:47","nodeType":"YulIdentifier","src":"1276:7:47"},{"kind":"number","nativeSrc":"1285:1:47","nodeType":"YulLiteral","src":"1285:1:47","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1272:3:47","nodeType":"YulIdentifier","src":"1272:3:47"},"nativeSrc":"1272:15:47","nodeType":"YulFunctionCall","src":"1272:15:47"},{"name":"ONE","nativeSrc":"1289:3:47","nodeType":"YulIdentifier","src":"1289:3:47"}],"functionName":{"name":"div","nativeSrc":"1268:3:47","nodeType":"YulIdentifier","src":"1268:3:47"},"nativeSrc":"1268:25:47","nodeType":"YulFunctionCall","src":"1268:25:47"},{"kind":"number","nativeSrc":"1295:1:47","nodeType":"YulLiteral","src":"1295:1:47","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"1264:3:47","nodeType":"YulIdentifier","src":"1264:3:47"},"nativeSrc":"1264:33:47","nodeType":"YulFunctionCall","src":"1264:33:47"}],"functionName":{"name":"mul","nativeSrc":"1235:3:47","nodeType":"YulIdentifier","src":"1235:3:47"},"nativeSrc":"1235:63:47","nodeType":"YulFunctionCall","src":"1235:63:47"},"variableNames":[{"name":"result","nativeSrc":"1225:6:47","nodeType":"YulIdentifier","src":"1225:6:47"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7546,"isOffset":false,"isSlot":false,"src":"1289:3:47","valueSize":1},{"declaration":7589,"isOffset":false,"isSlot":false,"src":"1253:7:47","valueSize":1},{"declaration":7589,"isOffset":false,"isSlot":false,"src":"1276:7:47","valueSize":1},{"declaration":7586,"isOffset":false,"isSlot":false,"src":"1225:6:47","valueSize":1}],"flags":["memory-safe"],"id":7594,"nodeType":"InlineAssembly","src":"1186:122:47"}]},"id":7596,"implemented":true,"kind":"function","modifiers":[],"name":"mulUp","nameLocation":"896:5:47","nodeType":"FunctionDefinition","parameters":{"id":7584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7581,"mutability":"mutable","name":"a","nameLocation":"910:1:47","nodeType":"VariableDeclaration","scope":7596,"src":"902:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7580,"name":"uint256","nodeType":"ElementaryTypeName","src":"902:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7583,"mutability":"mutable","name":"b","nameLocation":"921:1:47","nodeType":"VariableDeclaration","scope":7596,"src":"913:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7582,"name":"uint256","nodeType":"ElementaryTypeName","src":"913:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:22:47"},"returnParameters":{"id":7587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7586,"mutability":"mutable","name":"result","nameLocation":"955:6:47","nodeType":"VariableDeclaration","scope":7596,"src":"947:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7585,"name":"uint256","nodeType":"ElementaryTypeName","src":"947:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"946:16:47"},"scope":7834,"src":"887:427:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7615,"nodeType":"Block","src":"1391:254:47","statements":[{"assignments":[7606],"declarations":[{"constant":false,"id":7606,"mutability":"mutable","name":"aInflated","nameLocation":"1499:9:47","nodeType":"VariableDeclaration","scope":7615,"src":"1491:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7610,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7607,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7598,"src":"1511:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7608,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"1515:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1511:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1491:27:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7611,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7606,"src":"1625:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":7612,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7600,"src":"1637:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1625:13:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7604,"id":7614,"nodeType":"Return","src":"1618:20:47"}]},"id":7616,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nameLocation":"1329:7:47","nodeType":"FunctionDefinition","parameters":{"id":7601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7598,"mutability":"mutable","name":"a","nameLocation":"1345:1:47","nodeType":"VariableDeclaration","scope":7616,"src":"1337:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1337:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7600,"mutability":"mutable","name":"b","nameLocation":"1356:1:47","nodeType":"VariableDeclaration","scope":7616,"src":"1348:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7599,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1336:22:47"},"returnParameters":{"id":7604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7616,"src":"1382:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7602,"name":"uint256","nodeType":"ElementaryTypeName","src":"1382:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1381:9:47"},"scope":7834,"src":"1320:325:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7631,"nodeType":"Block","src":"1727:43:47","statements":[{"expression":{"arguments":[{"id":7626,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7618,"src":"1753:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7627,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"1756:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7628,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"1761:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7625,"name":"mulDivUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7660,"src":"1744:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1744:19:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7624,"id":7630,"nodeType":"Return","src":"1737:26:47"}]},"id":7632,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nameLocation":"1660:5:47","nodeType":"FunctionDefinition","parameters":{"id":7621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7618,"mutability":"mutable","name":"a","nameLocation":"1674:1:47","nodeType":"VariableDeclaration","scope":7632,"src":"1666:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1666:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7620,"mutability":"mutable","name":"b","nameLocation":"1685:1:47","nodeType":"VariableDeclaration","scope":7632,"src":"1677:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7619,"name":"uint256","nodeType":"ElementaryTypeName","src":"1677:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1665:22:47"},"returnParameters":{"id":7624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7623,"mutability":"mutable","name":"result","nameLocation":"1719:6:47","nodeType":"VariableDeclaration","scope":7632,"src":"1711:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7622,"name":"uint256","nodeType":"ElementaryTypeName","src":"1711:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1710:16:47"},"scope":7834,"src":"1651:119:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7659,"nodeType":"Block","src":"1912:774:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7644,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7639,"src":"2004:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2009:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2004:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7651,"nodeType":"IfStatement","src":"2000:58:47","trueBody":{"id":7650,"nodeType":"Block","src":"2012:46:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7647,"name":"ZeroDivision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7543,"src":"2033:12:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2033:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7649,"nodeType":"RevertStatement","src":"2026:21:47"}]}},{"assignments":[7653],"declarations":[{"constant":false,"id":7653,"mutability":"mutable","name":"product","nameLocation":"2143:7:47","nodeType":"VariableDeclaration","scope":7659,"src":"2135:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7652,"name":"uint256","nodeType":"ElementaryTypeName","src":"2135:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7657,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7654,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7635,"src":"2153:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":7655,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"2157:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2153:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2135:23:47"},{"AST":{"nativeSrc":"2585:95:47","nodeType":"YulBlock","src":"2585:95:47","statements":[{"nativeSrc":"2599:71:47","nodeType":"YulAssignment","src":"2599:71:47","value":{"arguments":[{"arguments":[{"arguments":[{"name":"product","nativeSrc":"2627:7:47","nodeType":"YulIdentifier","src":"2627:7:47"}],"functionName":{"name":"iszero","nativeSrc":"2620:6:47","nodeType":"YulIdentifier","src":"2620:6:47"},"nativeSrc":"2620:15:47","nodeType":"YulFunctionCall","src":"2620:15:47"}],"functionName":{"name":"iszero","nativeSrc":"2613:6:47","nodeType":"YulIdentifier","src":"2613:6:47"},"nativeSrc":"2613:23:47","nodeType":"YulFunctionCall","src":"2613:23:47"},{"arguments":[{"arguments":[{"arguments":[{"name":"product","nativeSrc":"2650:7:47","nodeType":"YulIdentifier","src":"2650:7:47"},{"kind":"number","nativeSrc":"2659:1:47","nodeType":"YulLiteral","src":"2659:1:47","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2646:3:47","nodeType":"YulIdentifier","src":"2646:3:47"},"nativeSrc":"2646:15:47","nodeType":"YulFunctionCall","src":"2646:15:47"},{"name":"c","nativeSrc":"2663:1:47","nodeType":"YulIdentifier","src":"2663:1:47"}],"functionName":{"name":"div","nativeSrc":"2642:3:47","nodeType":"YulIdentifier","src":"2642:3:47"},"nativeSrc":"2642:23:47","nodeType":"YulFunctionCall","src":"2642:23:47"},{"kind":"number","nativeSrc":"2667:1:47","nodeType":"YulLiteral","src":"2667:1:47","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2638:3:47","nodeType":"YulIdentifier","src":"2638:3:47"},"nativeSrc":"2638:31:47","nodeType":"YulFunctionCall","src":"2638:31:47"}],"functionName":{"name":"mul","nativeSrc":"2609:3:47","nodeType":"YulIdentifier","src":"2609:3:47"},"nativeSrc":"2609:61:47","nodeType":"YulFunctionCall","src":"2609:61:47"},"variableNames":[{"name":"result","nativeSrc":"2599:6:47","nodeType":"YulIdentifier","src":"2599:6:47"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7639,"isOffset":false,"isSlot":false,"src":"2663:1:47","valueSize":1},{"declaration":7653,"isOffset":false,"isSlot":false,"src":"2627:7:47","valueSize":1},{"declaration":7653,"isOffset":false,"isSlot":false,"src":"2650:7:47","valueSize":1},{"declaration":7642,"isOffset":false,"isSlot":false,"src":"2599:6:47","valueSize":1}],"flags":["memory-safe"],"id":7658,"nodeType":"InlineAssembly","src":"2560:120:47"}]},"documentation":{"id":7633,"nodeType":"StructuredDocumentation","src":"1776:41:47","text":"@dev Return (a * b) / c, rounding up."},"id":7660,"implemented":true,"kind":"function","modifiers":[],"name":"mulDivUp","nameLocation":"1831:8:47","nodeType":"FunctionDefinition","parameters":{"id":7640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7635,"mutability":"mutable","name":"a","nameLocation":"1848:1:47","nodeType":"VariableDeclaration","scope":7660,"src":"1840:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1840:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7637,"mutability":"mutable","name":"b","nameLocation":"1859:1:47","nodeType":"VariableDeclaration","scope":7660,"src":"1851:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7639,"mutability":"mutable","name":"c","nameLocation":"1870:1:47","nodeType":"VariableDeclaration","scope":7660,"src":"1862:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7638,"name":"uint256","nodeType":"ElementaryTypeName","src":"1862:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1839:33:47"},"returnParameters":{"id":7643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7642,"mutability":"mutable","name":"result","nameLocation":"1904:6:47","nodeType":"VariableDeclaration","scope":7660,"src":"1896:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1896:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1895:16:47"},"scope":7834,"src":"1822:864:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7679,"nodeType":"Block","src":"3159:345:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7670,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7665,"src":"3251:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3256:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3251:6:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7677,"nodeType":"IfStatement","src":"3247:58:47","trueBody":{"id":7676,"nodeType":"Block","src":"3259:46:47","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7673,"name":"ZeroDivision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7543,"src":"3280:12:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3280:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7675,"nodeType":"RevertStatement","src":"3273:21:47"}]}},{"AST":{"nativeSrc":"3415:83:47","nodeType":"YulBlock","src":"3415:83:47","statements":[{"nativeSrc":"3429:59:47","nodeType":"YulAssignment","src":"3429:59:47","value":{"arguments":[{"arguments":[{"arguments":[{"name":"a","nativeSrc":"3457:1:47","nodeType":"YulIdentifier","src":"3457:1:47"}],"functionName":{"name":"iszero","nativeSrc":"3450:6:47","nodeType":"YulIdentifier","src":"3450:6:47"},"nativeSrc":"3450:9:47","nodeType":"YulFunctionCall","src":"3450:9:47"}],"functionName":{"name":"iszero","nativeSrc":"3443:6:47","nodeType":"YulIdentifier","src":"3443:6:47"},"nativeSrc":"3443:17:47","nodeType":"YulFunctionCall","src":"3443:17:47"},{"arguments":[{"kind":"number","nativeSrc":"3466:1:47","nodeType":"YulLiteral","src":"3466:1:47","type":"","value":"1"},{"arguments":[{"arguments":[{"name":"a","nativeSrc":"3477:1:47","nodeType":"YulIdentifier","src":"3477:1:47"},{"kind":"number","nativeSrc":"3480:1:47","nodeType":"YulLiteral","src":"3480:1:47","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3473:3:47","nodeType":"YulIdentifier","src":"3473:3:47"},"nativeSrc":"3473:9:47","nodeType":"YulFunctionCall","src":"3473:9:47"},{"name":"b","nativeSrc":"3484:1:47","nodeType":"YulIdentifier","src":"3484:1:47"}],"functionName":{"name":"div","nativeSrc":"3469:3:47","nodeType":"YulIdentifier","src":"3469:3:47"},"nativeSrc":"3469:17:47","nodeType":"YulFunctionCall","src":"3469:17:47"}],"functionName":{"name":"add","nativeSrc":"3462:3:47","nodeType":"YulIdentifier","src":"3462:3:47"},"nativeSrc":"3462:25:47","nodeType":"YulFunctionCall","src":"3462:25:47"}],"functionName":{"name":"mul","nativeSrc":"3439:3:47","nodeType":"YulIdentifier","src":"3439:3:47"},"nativeSrc":"3439:49:47","nodeType":"YulFunctionCall","src":"3439:49:47"},"variableNames":[{"name":"result","nativeSrc":"3429:6:47","nodeType":"YulIdentifier","src":"3429:6:47"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7663,"isOffset":false,"isSlot":false,"src":"3457:1:47","valueSize":1},{"declaration":7663,"isOffset":false,"isSlot":false,"src":"3477:1:47","valueSize":1},{"declaration":7665,"isOffset":false,"isSlot":false,"src":"3484:1:47","valueSize":1},{"declaration":7668,"isOffset":false,"isSlot":false,"src":"3429:6:47","valueSize":1}],"flags":["memory-safe"],"id":7678,"nodeType":"InlineAssembly","src":"3390:108:47"}]},"documentation":{"id":7661,"nodeType":"StructuredDocumentation","src":"2692:383:47","text":" @dev Version of divUp when the input is raw (i.e., already \"inflated\"). For instance,\n invariant * invariant (36 decimals) vs. invariant.mulDown(invariant) (18 decimal FP).\n This can occur in calculations with many successive multiplications and divisions, and\n we want to minimize the number of operations by avoiding unnecessary scaling by ONE."},"id":7680,"implemented":true,"kind":"function","modifiers":[],"name":"divUpRaw","nameLocation":"3089:8:47","nodeType":"FunctionDefinition","parameters":{"id":7666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7663,"mutability":"mutable","name":"a","nameLocation":"3106:1:47","nodeType":"VariableDeclaration","scope":7680,"src":"3098:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7662,"name":"uint256","nodeType":"ElementaryTypeName","src":"3098:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7665,"mutability":"mutable","name":"b","nameLocation":"3117:1:47","nodeType":"VariableDeclaration","scope":7680,"src":"3109:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7664,"name":"uint256","nodeType":"ElementaryTypeName","src":"3109:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3097:22:47"},"returnParameters":{"id":7669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7668,"mutability":"mutable","name":"result","nameLocation":"3151:6:47","nodeType":"VariableDeclaration","scope":7680,"src":"3143:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7667,"name":"uint256","nodeType":"ElementaryTypeName","src":"3143:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3142:16:47"},"scope":7834,"src":"3080:424:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7755,"nodeType":"Block","src":"3807:723:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7690,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"3975:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7691,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"3980:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3975:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7696,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"4028:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7697,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7551,"src":"4033:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4028:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7705,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"4093:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7706,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"4098:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4093:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7751,"nodeType":"Block","src":"4209:315:47","statements":[{"assignments":[7722],"declarations":[{"constant":false,"id":7722,"mutability":"mutable","name":"raw","nameLocation":"4231:3:47","nodeType":"VariableDeclaration","scope":7751,"src":"4223:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7721,"name":"uint256","nodeType":"ElementaryTypeName","src":"4223:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7728,"initialValue":{"arguments":[{"id":7725,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7683,"src":"4252:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7726,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"4255:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7723,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9190,"src":"4237:10:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$9190_$","typeString":"type(library LogExpMath)"}},"id":7724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4248:3:47","memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":8093,"src":"4237:14:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4237:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4223:34:47"},{"assignments":[7730],"declarations":[{"constant":false,"id":7730,"mutability":"mutable","name":"maxError","nameLocation":"4279:8:47","nodeType":"VariableDeclaration","scope":7751,"src":"4271:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7729,"name":"uint256","nodeType":"ElementaryTypeName","src":"4271:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7737,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7732,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7722,"src":"4296:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7733,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7559,"src":"4301:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7731,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7596,"src":"4290:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4290:34:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4327:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4290:38:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4271:57:47"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7738,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7722,"src":"4347:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7739,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7730,"src":"4353:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4347:14:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7749,"nodeType":"Block","src":"4410:104:47","statements":[{"id":7748,"nodeType":"UncheckedBlock","src":"4428:72:47","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7744,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7722,"src":"4467:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7745,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7730,"src":"4473:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4467:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7689,"id":7747,"nodeType":"Return","src":"4460:21:47"}]}]},"id":7750,"nodeType":"IfStatement","src":"4343:171:47","trueBody":{"id":7743,"nodeType":"Block","src":"4363:41:47","statements":[{"expression":{"hexValue":"30","id":7741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4388:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":7689,"id":7742,"nodeType":"Return","src":"4381:8:47"}]}}]},"id":7752,"nodeType":"IfStatement","src":"4089:435:47","trueBody":{"id":7720,"nodeType":"Block","src":"4104:99:47","statements":[{"assignments":[7709],"declarations":[{"constant":false,"id":7709,"mutability":"mutable","name":"square","nameLocation":"4126:6:47","nodeType":"VariableDeclaration","scope":7720,"src":"4118:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7708,"name":"uint256","nodeType":"ElementaryTypeName","src":"4118:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7714,"initialValue":{"arguments":[{"id":7711,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7683,"src":"4143:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7712,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7683,"src":"4146:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7710,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7579,"src":"4135:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4135:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4118:30:47"},{"expression":{"arguments":[{"id":7716,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"4177:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7717,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"4185:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7715,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7579,"src":"4169:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4169:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7689,"id":7719,"nodeType":"Return","src":"4162:30:47"}]}},"id":7753,"nodeType":"IfStatement","src":"4024:500:47","trueBody":{"id":7704,"nodeType":"Block","src":"4038:45:47","statements":[{"expression":{"arguments":[{"id":7700,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7683,"src":"4067:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7701,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7683,"src":"4070:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7699,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7579,"src":"4059:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4059:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7689,"id":7703,"nodeType":"Return","src":"4052:20:47"}]}},"id":7754,"nodeType":"IfStatement","src":"3971:553:47","trueBody":{"id":7695,"nodeType":"Block","src":"3985:33:47","statements":[{"expression":{"id":7693,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7683,"src":"4006:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7689,"id":7694,"nodeType":"Return","src":"3999:8:47"}]}}]},"documentation":{"id":7681,"nodeType":"StructuredDocumentation","src":"3510:221:47","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n the true value (that is, the error function expected - actual is always positive)."},"id":7756,"implemented":true,"kind":"function","modifiers":[],"name":"powDown","nameLocation":"3745:7:47","nodeType":"FunctionDefinition","parameters":{"id":7686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7683,"mutability":"mutable","name":"x","nameLocation":"3761:1:47","nodeType":"VariableDeclaration","scope":7756,"src":"3753:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7682,"name":"uint256","nodeType":"ElementaryTypeName","src":"3753:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7685,"mutability":"mutable","name":"y","nameLocation":"3772:1:47","nodeType":"VariableDeclaration","scope":7756,"src":"3764:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7684,"name":"uint256","nodeType":"ElementaryTypeName","src":"3764:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3752:22:47"},"returnParameters":{"id":7689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7688,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7756,"src":"3798:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7687,"name":"uint256","nodeType":"ElementaryTypeName","src":"3798:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3797:9:47"},"scope":7834,"src":"3736:794:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7822,"nodeType":"Block","src":"4829:568:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7766,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"4997:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7767,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"5002:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4997:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7772,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"5050:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7773,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7551,"src":"5055:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5050:8:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7781,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"5113:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7782,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"5118:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5113:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7818,"nodeType":"Block","src":"5225:166:47","statements":[{"assignments":[7798],"declarations":[{"constant":false,"id":7798,"mutability":"mutable","name":"raw","nameLocation":"5247:3:47","nodeType":"VariableDeclaration","scope":7818,"src":"5239:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7797,"name":"uint256","nodeType":"ElementaryTypeName","src":"5239:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7804,"initialValue":{"arguments":[{"id":7801,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5268:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7802,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7761,"src":"5271:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7799,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9190,"src":"5253:10:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$9190_$","typeString":"type(library LogExpMath)"}},"id":7800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5264:3:47","memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":8093,"src":"5253:14:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5239:34:47"},{"assignments":[7806],"declarations":[{"constant":false,"id":7806,"mutability":"mutable","name":"maxError","nameLocation":"5295:8:47","nodeType":"VariableDeclaration","scope":7818,"src":"5287:16:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7805,"name":"uint256","nodeType":"ElementaryTypeName","src":"5287:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7813,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7808,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7798,"src":"5312:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7809,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7559,"src":"5317:22:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7807,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7596,"src":"5306:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5306:34:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5343:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5306:38:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5287:57:47"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7814,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7798,"src":"5366:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7815,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7806,"src":"5372:8:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5366:14:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7765,"id":7817,"nodeType":"Return","src":"5359:21:47"}]},"id":7819,"nodeType":"IfStatement","src":"5109:282:47","trueBody":{"id":7796,"nodeType":"Block","src":"5124:95:47","statements":[{"assignments":[7785],"declarations":[{"constant":false,"id":7785,"mutability":"mutable","name":"square","nameLocation":"5146:6:47","nodeType":"VariableDeclaration","scope":7796,"src":"5138:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7784,"name":"uint256","nodeType":"ElementaryTypeName","src":"5138:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7790,"initialValue":{"arguments":[{"id":7787,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5161:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7788,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5164:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7786,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7596,"src":"5155:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5155:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5138:28:47"},{"expression":{"arguments":[{"id":7792,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7785,"src":"5193:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7793,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7785,"src":"5201:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7791,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7596,"src":"5187:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5187:21:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7765,"id":7795,"nodeType":"Return","src":"5180:28:47"}]}},"id":7820,"nodeType":"IfStatement","src":"5046:345:47","trueBody":{"id":7780,"nodeType":"Block","src":"5060:43:47","statements":[{"expression":{"arguments":[{"id":7776,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5087:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7777,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5090:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7775,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7596,"src":"5081:5:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5081:11:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7765,"id":7779,"nodeType":"Return","src":"5074:18:47"}]}},"id":7821,"nodeType":"IfStatement","src":"4993:398:47","trueBody":{"id":7771,"nodeType":"Block","src":"5007:33:47","statements":[{"expression":{"id":7769,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"5028:1:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7765,"id":7770,"nodeType":"Return","src":"5021:8:47"}]}}]},"documentation":{"id":7757,"nodeType":"StructuredDocumentation","src":"4536:219:47","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n the true value (that is, the error function expected - actual is always negative)."},"id":7823,"implemented":true,"kind":"function","modifiers":[],"name":"powUp","nameLocation":"4769:5:47","nodeType":"FunctionDefinition","parameters":{"id":7762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7759,"mutability":"mutable","name":"x","nameLocation":"4783:1:47","nodeType":"VariableDeclaration","scope":7823,"src":"4775:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7758,"name":"uint256","nodeType":"ElementaryTypeName","src":"4775:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7761,"mutability":"mutable","name":"y","nameLocation":"4794:1:47","nodeType":"VariableDeclaration","scope":7823,"src":"4786:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7760,"name":"uint256","nodeType":"ElementaryTypeName","src":"4786:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4774:22:47"},"returnParameters":{"id":7765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7823,"src":"4820:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7763,"name":"uint256","nodeType":"ElementaryTypeName","src":"4820:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4819:9:47"},"scope":7834,"src":"4760:637:47","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7832,"nodeType":"Block","src":"5750:175:47","statements":[{"AST":{"nativeSrc":"5857:62:47","nodeType":"YulBlock","src":"5857:62:47","statements":[{"nativeSrc":"5871:38:47","nodeType":"YulAssignment","src":"5871:38:47","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"5888:1:47","nodeType":"YulIdentifier","src":"5888:1:47"},{"name":"ONE","nativeSrc":"5891:3:47","nodeType":"YulIdentifier","src":"5891:3:47"}],"functionName":{"name":"lt","nativeSrc":"5885:2:47","nodeType":"YulIdentifier","src":"5885:2:47"},"nativeSrc":"5885:10:47","nodeType":"YulFunctionCall","src":"5885:10:47"},{"arguments":[{"name":"ONE","nativeSrc":"5901:3:47","nodeType":"YulIdentifier","src":"5901:3:47"},{"name":"x","nativeSrc":"5906:1:47","nodeType":"YulIdentifier","src":"5906:1:47"}],"functionName":{"name":"sub","nativeSrc":"5897:3:47","nodeType":"YulIdentifier","src":"5897:3:47"},"nativeSrc":"5897:11:47","nodeType":"YulFunctionCall","src":"5897:11:47"}],"functionName":{"name":"mul","nativeSrc":"5881:3:47","nodeType":"YulIdentifier","src":"5881:3:47"},"nativeSrc":"5881:28:47","nodeType":"YulFunctionCall","src":"5881:28:47"},"variableNames":[{"name":"result","nativeSrc":"5871:6:47","nodeType":"YulIdentifier","src":"5871:6:47"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":7546,"isOffset":false,"isSlot":false,"src":"5891:3:47","valueSize":1},{"declaration":7546,"isOffset":false,"isSlot":false,"src":"5901:3:47","valueSize":1},{"declaration":7829,"isOffset":false,"isSlot":false,"src":"5871:6:47","valueSize":1},{"declaration":7826,"isOffset":false,"isSlot":false,"src":"5888:1:47","valueSize":1},{"declaration":7826,"isOffset":false,"isSlot":false,"src":"5906:1:47","valueSize":1}],"flags":["memory-safe"],"id":7831,"nodeType":"InlineAssembly","src":"5832:87:47"}]},"documentation":{"id":7824,"nodeType":"StructuredDocumentation","src":"5403:272:47","text":" @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n Useful when computing the complement for values with some level of relative error, as it strips this error and\n prevents intermediate negative values."},"id":7833,"implemented":true,"kind":"function","modifiers":[],"name":"complement","nameLocation":"5689:10:47","nodeType":"FunctionDefinition","parameters":{"id":7827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7826,"mutability":"mutable","name":"x","nameLocation":"5708:1:47","nodeType":"VariableDeclaration","scope":7833,"src":"5700:9:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7825,"name":"uint256","nodeType":"ElementaryTypeName","src":"5700:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5699:11:47"},"returnParameters":{"id":7830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7829,"mutability":"mutable","name":"result","nameLocation":"5742:6:47","nodeType":"VariableDeclaration","scope":7833,"src":"5734:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7828,"name":"uint256","nodeType":"ElementaryTypeName","src":"5734:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5733:16:47"},"scope":7834,"src":"5680:245:47","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7835,"src":"239:5688:47","usedErrors":[7543],"usedEvents":[]}],"src":"46:5882:47"},"id":47},"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol","exportedSymbols":{"LogExpMath":[9190]},"id":9191,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7836,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"33:24:48"},{"abstract":false,"baseContracts":[],"canonicalName":"LogExpMath","contractDependencies":[],"contractKind":"library","documentation":{"id":7837,"nodeType":"StructuredDocumentation","src":"79:515:48","text":" @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n exponentiation and logarithm (where the base is Euler's number).\n All math operations are unchecked in order to save gas.\n @author Fernando Martinelli - @fernandomartinelli\n @author Sergio Yuhjtman - @sergioyuhjtman\n @author Daniel Fernandez - @dmf7z"},"fullyImplemented":true,"id":9190,"linearizedBaseContracts":[9190],"name":"LogExpMath","nameLocation":"603:10:48","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7838,"nodeType":"StructuredDocumentation","src":"620:79:48","text":"@notice This error is thrown when a base is not within an acceptable range."},"errorSelector":"022701e0","id":7840,"name":"BaseOutOfBounds","nameLocation":"710:15:48","nodeType":"ErrorDefinition","parameters":{"id":7839,"nodeType":"ParameterList","parameters":[],"src":"725:2:48"},"src":"704:24:48"},{"documentation":{"id":7841,"nodeType":"StructuredDocumentation","src":"734:83:48","text":"@notice This error is thrown when a exponent is not within an acceptable range."},"errorSelector":"d8317311","id":7843,"name":"ExponentOutOfBounds","nameLocation":"828:19:48","nodeType":"ErrorDefinition","parameters":{"id":7842,"nodeType":"ParameterList","parameters":[],"src":"847:2:48"},"src":"822:28:48"},{"documentation":{"id":7844,"nodeType":"StructuredDocumentation","src":"856:96:48","text":"@notice This error is thrown when the exponent * ln(base) is not within an acceptable range."},"errorSelector":"a2f9f7e3","id":7846,"name":"ProductOutOfBounds","nameLocation":"963:18:48","nodeType":"ErrorDefinition","parameters":{"id":7845,"nodeType":"ParameterList","parameters":[],"src":"981:2:48"},"src":"957:27:48"},{"documentation":{"id":7847,"nodeType":"StructuredDocumentation","src":"990:109:48","text":"@notice This error is thrown when an exponent used in the exp function is not within an acceptable range."},"errorSelector":"d4794efd","id":7849,"name":"InvalidExponent","nameLocation":"1110:15:48","nodeType":"ErrorDefinition","parameters":{"id":7848,"nodeType":"ParameterList","parameters":[],"src":"1125:2:48"},"src":"1104:24:48"},{"documentation":{"id":7850,"nodeType":"StructuredDocumentation","src":"1134:119:48","text":"@notice This error is thrown when a variable or result is not within the acceptable bounds defined in the function."},"errorSelector":"b4120f14","id":7852,"name":"OutOfBounds","nameLocation":"1264:11:48","nodeType":"ErrorDefinition","parameters":{"id":7851,"nodeType":"ParameterList","parameters":[],"src":"1275:2:48"},"src":"1258:20:48"},{"constant":true,"id":7855,"mutability":"constant","name":"ONE_18","nameLocation":"1555:6:48","nodeType":"VariableDeclaration","scope":9190,"src":"1539:29:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7853,"name":"int256","nodeType":"ElementaryTypeName","src":"1539:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653138","id":7854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1564:4:48","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":7858,"mutability":"constant","name":"ONE_20","nameLocation":"1745:6:48","nodeType":"VariableDeclaration","scope":9190,"src":"1729:29:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7856,"name":"int256","nodeType":"ElementaryTypeName","src":"1729:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653230","id":7857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1754:4:48","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"1e20"},"visibility":"internal"},{"constant":true,"id":7861,"mutability":"constant","name":"ONE_36","nameLocation":"1780:6:48","nodeType":"VariableDeclaration","scope":9190,"src":"1764:29:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7859,"name":"int256","nodeType":"ElementaryTypeName","src":"1764:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653336","id":7860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1789:4:48","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"internal"},{"constant":true,"id":7864,"mutability":"constant","name":"MAX_NATURAL_EXPONENT","nameLocation":"2326:20:48","nodeType":"VariableDeclaration","scope":9190,"src":"2310:45:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7862,"name":"int256","nodeType":"ElementaryTypeName","src":"2310:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313330653138","id":7863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:6:48","typeDescriptions":{"typeIdentifier":"t_rational_130000000000000000000_by_1","typeString":"int_const 130000000000000000000"},"value":"130e18"},"visibility":"internal"},{"constant":true,"id":7868,"mutability":"constant","name":"MIN_NATURAL_EXPONENT","nameLocation":"2377:20:48","nodeType":"VariableDeclaration","scope":9190,"src":"2361:45:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7865,"name":"int256","nodeType":"ElementaryTypeName","src":"2361:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":7867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2400:6:48","subExpression":{"hexValue":"3431653138","id":7866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2401:5:48","typeDescriptions":{"typeIdentifier":"t_rational_41000000000000000000_by_1","typeString":"int_const 41000000000000000000"},"value":"41e18"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_41000000000000000000_by_1","typeString":"int_const -41000000000000000000"}},"visibility":"internal"},{"constant":true,"id":7873,"mutability":"constant","name":"LN_36_LOWER_BOUND","nameLocation":"2573:17:48","nodeType":"VariableDeclaration","scope":9190,"src":"2557:49:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7869,"name":"int256","nodeType":"ElementaryTypeName","src":"2557:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":7870,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"2593:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31653137","id":7871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2602:4:48","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"2593:13:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":7878,"mutability":"constant","name":"LN_36_UPPER_BOUND","nameLocation":"2628:17:48","nodeType":"VariableDeclaration","scope":9190,"src":"2612:49:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7874,"name":"int256","nodeType":"ElementaryTypeName","src":"2612:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":7875,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"2648:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31653137","id":7876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2657:4:48","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"2648:13:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":7888,"mutability":"constant","name":"MILD_EXPONENT_BOUND","nameLocation":"2685:19:48","nodeType":"VariableDeclaration","scope":9190,"src":"2668:65:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7879,"name":"uint256","nodeType":"ElementaryTypeName","src":"2668:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"},"id":7882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2707:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323534","id":7881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2712:3:48","typeDescriptions":{"typeIdentifier":"t_rational_254_by_1","typeString":"int_const 254"},"value":"254"},"src":"2707:8:48","typeDescriptions":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":7885,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"2726:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2718:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7883,"name":"uint256","nodeType":"ElementaryTypeName","src":"2718:7:48","typeDescriptions":{}}},"id":7886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2718:15:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2707:26:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":7891,"mutability":"constant","name":"x0","nameLocation":"2784:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"2768:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7889,"name":"int256","nodeType":"ElementaryTypeName","src":"2768:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238303030303030303030303030303030303030","id":7890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2789:21:48","typeDescriptions":{"typeIdentifier":"t_rational_128000000000000000000_by_1","typeString":"int_const 128000000000000000000"},"value":"128000000000000000000"},"visibility":"internal"},{"constant":true,"id":7894,"mutability":"constant","name":"a0","nameLocation":"2840:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"2824:77:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7892,"name":"int256","nodeType":"ElementaryTypeName","src":"2824:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3338383737303834303539393435393530393232323030303030303030303030303030303030303030303030303030303030303030303030","id":7893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2845:56:48","typeDescriptions":{"typeIdentifier":"t_rational_38877084059945950922200000000000000000000000000000000000_by_1","typeString":"int_const 3887...(48 digits omitted)...0000"},"value":"38877084059945950922200000000000000000000000000000000000"},"visibility":"internal"},{"constant":true,"id":7897,"mutability":"constant","name":"x1","nameLocation":"2948:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"2932:41:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7895,"name":"int256","nodeType":"ElementaryTypeName","src":"2932:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3634303030303030303030303030303030303030","id":7896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2953:20:48","typeDescriptions":{"typeIdentifier":"t_rational_64000000000000000000_by_1","typeString":"int_const 64000000000000000000"},"value":"64000000000000000000"},"visibility":"internal"},{"constant":true,"id":7900,"mutability":"constant","name":"a1","nameLocation":"3003:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"2987:49:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7898,"name":"int256","nodeType":"ElementaryTypeName","src":"2987:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323335313439303830383131363136383832393130303030303030","id":7899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3008:28:48","typeDescriptions":{"typeIdentifier":"t_rational_6235149080811616882910000000_by_1","typeString":"int_const 6235149080811616882910000000"},"value":"6235149080811616882910000000"},"visibility":"internal"},{"constant":true,"id":7903,"mutability":"constant","name":"x2","nameLocation":"3112:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3096:43:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7901,"name":"int256","nodeType":"ElementaryTypeName","src":"3096:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"33323030303030303030303030303030303030303030","id":7902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3117:22:48","typeDescriptions":{"typeIdentifier":"t_rational_3200000000000000000000_by_1","typeString":"int_const 3200000000000000000000"},"value":"3200000000000000000000"},"visibility":"internal"},{"constant":true,"id":7906,"mutability":"constant","name":"a2","nameLocation":"3169:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3153:55:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7904,"name":"int256","nodeType":"ElementaryTypeName","src":"3153:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"37383936323936303138323638303639353136313030303030303030303030303030","id":7905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3174:34:48","typeDescriptions":{"typeIdentifier":"t_rational_7896296018268069516100000000000000_by_1","typeString":"int_const 7896...(26 digits omitted)...0000"},"value":"7896296018268069516100000000000000"},"visibility":"internal"},{"constant":true,"id":7909,"mutability":"constant","name":"x3","nameLocation":"3241:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3225:43:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7907,"name":"int256","nodeType":"ElementaryTypeName","src":"3225:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31363030303030303030303030303030303030303030","id":7908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3246:22:48","typeDescriptions":{"typeIdentifier":"t_rational_1600000000000000000000_by_1","typeString":"int_const 1600000000000000000000"},"value":"1600000000000000000000"},"visibility":"internal"},{"constant":true,"id":7912,"mutability":"constant","name":"a3","nameLocation":"3298:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3282:48:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7910,"name":"int256","nodeType":"ElementaryTypeName","src":"3282:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383838363131303532303530373837323633363736303030303030","id":7911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3303:27:48","typeDescriptions":{"typeIdentifier":"t_rational_888611052050787263676000000_by_1","typeString":"int_const 888611052050787263676000000"},"value":"888611052050787263676000000"},"visibility":"internal"},{"constant":true,"id":7915,"mutability":"constant","name":"x4","nameLocation":"3363:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3347:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7913,"name":"int256","nodeType":"ElementaryTypeName","src":"3347:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383030303030303030303030303030303030303030","id":7914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3368:21:48","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000000_by_1","typeString":"int_const 800000000000000000000"},"value":"800000000000000000000"},"visibility":"internal"},{"constant":true,"id":7918,"mutability":"constant","name":"a4","nameLocation":"3419:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3403:45:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7916,"name":"int256","nodeType":"ElementaryTypeName","src":"3403:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323938303935373938373034313732383237343734303030","id":7917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3424:24:48","typeDescriptions":{"typeIdentifier":"t_rational_298095798704172827474000_by_1","typeString":"int_const 298095798704172827474000"},"value":"298095798704172827474000"},"visibility":"internal"},{"constant":true,"id":7921,"mutability":"constant","name":"x5","nameLocation":"3481:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3465:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7919,"name":"int256","nodeType":"ElementaryTypeName","src":"3465:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"343030303030303030303030303030303030303030","id":7920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3486:21:48","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000000_by_1","typeString":"int_const 400000000000000000000"},"value":"400000000000000000000"},"visibility":"internal"},{"constant":true,"id":7924,"mutability":"constant","name":"a5","nameLocation":"3537:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3521:43:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7922,"name":"int256","nodeType":"ElementaryTypeName","src":"3521:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"35343539383135303033333134343233393037383130","id":7923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3542:22:48","typeDescriptions":{"typeIdentifier":"t_rational_5459815003314423907810_by_1","typeString":"int_const 5459815003314423907810"},"value":"5459815003314423907810"},"visibility":"internal"},{"constant":true,"id":7927,"mutability":"constant","name":"x6","nameLocation":"3597:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3581:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7925,"name":"int256","nodeType":"ElementaryTypeName","src":"3581:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030303030303030303030303030303030303030","id":7926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3602:21:48","typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000000_by_1","typeString":"int_const 200000000000000000000"},"value":"200000000000000000000"},"visibility":"internal"},{"constant":true,"id":7930,"mutability":"constant","name":"a6","nameLocation":"3653:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3637:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7928,"name":"int256","nodeType":"ElementaryTypeName","src":"3637:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"373338393035363039383933303635303232373233","id":7929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3658:21:48","typeDescriptions":{"typeIdentifier":"t_rational_738905609893065022723_by_1","typeString":"int_const 738905609893065022723"},"value":"738905609893065022723"},"visibility":"internal"},{"constant":true,"id":7933,"mutability":"constant","name":"x7","nameLocation":"3712:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3696:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7931,"name":"int256","nodeType":"ElementaryTypeName","src":"3696:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030303030303030303030303030303030303030","id":7932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3717:21:48","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"100000000000000000000"},"visibility":"internal"},{"constant":true,"id":7936,"mutability":"constant","name":"a7","nameLocation":"3768:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3752:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7934,"name":"int256","nodeType":"ElementaryTypeName","src":"3752:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323731383238313832383435393034353233353336","id":7935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3773:21:48","typeDescriptions":{"typeIdentifier":"t_rational_271828182845904523536_by_1","typeString":"int_const 271828182845904523536"},"value":"271828182845904523536"},"visibility":"internal"},{"constant":true,"id":7939,"mutability":"constant","name":"x8","nameLocation":"3827:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3811:41:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7937,"name":"int256","nodeType":"ElementaryTypeName","src":"3811:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3530303030303030303030303030303030303030","id":7938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3832:20:48","typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000000_by_1","typeString":"int_const 50000000000000000000"},"value":"50000000000000000000"},"visibility":"internal"},{"constant":true,"id":7942,"mutability":"constant","name":"a8","nameLocation":"3883:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3867:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7940,"name":"int256","nodeType":"ElementaryTypeName","src":"3867:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313634383732313237303730303132383134363835","id":7941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3888:21:48","typeDescriptions":{"typeIdentifier":"t_rational_164872127070012814685_by_1","typeString":"int_const 164872127070012814685"},"value":"164872127070012814685"},"visibility":"internal"},{"constant":true,"id":7945,"mutability":"constant","name":"x9","nameLocation":"3942:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3926:41:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7943,"name":"int256","nodeType":"ElementaryTypeName","src":"3926:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3235303030303030303030303030303030303030","id":7944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3947:20:48","typeDescriptions":{"typeIdentifier":"t_rational_25000000000000000000_by_1","typeString":"int_const 25000000000000000000"},"value":"25000000000000000000"},"visibility":"internal"},{"constant":true,"id":7948,"mutability":"constant","name":"a9","nameLocation":"3998:2:48","nodeType":"VariableDeclaration","scope":9190,"src":"3982:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7946,"name":"int256","nodeType":"ElementaryTypeName","src":"3982:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238343032353431363638373734313438343037","id":7947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4003:21:48","typeDescriptions":{"typeIdentifier":"t_rational_128402541668774148407_by_1","typeString":"int_const 128402541668774148407"},"value":"128402541668774148407"},"visibility":"internal"},{"constant":true,"id":7951,"mutability":"constant","name":"x10","nameLocation":"4057:3:48","nodeType":"VariableDeclaration","scope":9190,"src":"4041:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7949,"name":"int256","nodeType":"ElementaryTypeName","src":"4041:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3132353030303030303030303030303030303030","id":7950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4063:20:48","typeDescriptions":{"typeIdentifier":"t_rational_12500000000000000000_by_1","typeString":"int_const 12500000000000000000"},"value":"12500000000000000000"},"visibility":"internal"},{"constant":true,"id":7954,"mutability":"constant","name":"a10","nameLocation":"4114:3:48","nodeType":"VariableDeclaration","scope":9190,"src":"4098:43:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7952,"name":"int256","nodeType":"ElementaryTypeName","src":"4098:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313133333134383435333036363832363331363833","id":7953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4120:21:48","typeDescriptions":{"typeIdentifier":"t_rational_113314845306682631683_by_1","typeString":"int_const 113314845306682631683"},"value":"113314845306682631683"},"visibility":"internal"},{"constant":true,"id":7957,"mutability":"constant","name":"x11","nameLocation":"4175:3:48","nodeType":"VariableDeclaration","scope":9190,"src":"4159:41:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7955,"name":"int256","nodeType":"ElementaryTypeName","src":"4159:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323530303030303030303030303030303030","id":7956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4181:19:48","typeDescriptions":{"typeIdentifier":"t_rational_6250000000000000000_by_1","typeString":"int_const 6250000000000000000"},"value":"6250000000000000000"},"visibility":"internal"},{"constant":true,"id":7960,"mutability":"constant","name":"a11","nameLocation":"4231:3:48","nodeType":"VariableDeclaration","scope":9190,"src":"4215:43:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7958,"name":"int256","nodeType":"ElementaryTypeName","src":"4215:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313036343439343435383931373835393432393536","id":7959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4237:21:48","typeDescriptions":{"typeIdentifier":"t_rational_106449445891785942956_by_1","typeString":"int_const 106449445891785942956"},"value":"106449445891785942956"},"visibility":"internal"},{"body":{"id":8092,"nodeType":"Block","src":"4563:2233:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7970,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"4577:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4582:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4577:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7979,"nodeType":"IfStatement","src":"4573:131:48","trueBody":{"id":7978,"nodeType":"Block","src":"4585:119:48","statements":[{"expression":{"arguments":[{"id":7975,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"4686:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4678:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7973,"name":"uint256","nodeType":"ElementaryTypeName","src":"4678:7:48","typeDescriptions":{}}},"id":7976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4678:15:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7969,"id":7977,"nodeType":"Return","src":"4671:22:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7980,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"4718:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":7981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4723:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4718:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7986,"nodeType":"IfStatement","src":"4714:45:48","trueBody":{"id":7985,"nodeType":"Block","src":"4726:33:48","statements":[{"expression":{"hexValue":"30","id":7983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4747:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":7969,"id":7984,"nodeType":"Return","src":"4740:8:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7987,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"5133:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":7988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5138:3:48","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"5133:8:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5145:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5133:13:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7996,"nodeType":"IfStatement","src":"5129:68:48","trueBody":{"id":7995,"nodeType":"Block","src":"5148:49:48","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7992,"name":"BaseOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7840,"src":"5169:15:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5169:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7994,"nodeType":"RevertStatement","src":"5162:24:48"}]}},{"assignments":[7998],"declarations":[{"constant":false,"id":7998,"mutability":"mutable","name":"x_int256","nameLocation":"5213:8:48","nodeType":"VariableDeclaration","scope":8092,"src":"5206:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7997,"name":"int256","nodeType":"ElementaryTypeName","src":"5206:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8003,"initialValue":{"arguments":[{"id":8001,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"5231:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5224:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7999,"name":"int256","nodeType":"ElementaryTypeName","src":"5224:6:48","typeDescriptions":{}}},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5224:9:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5206:27:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8004,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"5591:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8005,"name":"MILD_EXPONENT_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7888,"src":"5596:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5591:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8011,"nodeType":"IfStatement","src":"5587:83:48","trueBody":{"id":8010,"nodeType":"Block","src":"5617:53:48","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8007,"name":"ExponentOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7843,"src":"5638:19:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5638:21:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8009,"nodeType":"RevertStatement","src":"5631:28:48"}]}},{"assignments":[8013],"declarations":[{"constant":false,"id":8013,"mutability":"mutable","name":"y_int256","nameLocation":"5686:8:48","nodeType":"VariableDeclaration","scope":8092,"src":"5679:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8012,"name":"int256","nodeType":"ElementaryTypeName","src":"5679:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8018,"initialValue":{"arguments":[{"id":8016,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"5704:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5697:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":8014,"name":"int256","nodeType":"ElementaryTypeName","src":"5697:6:48","typeDescriptions":{}}},"id":8017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5697:9:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5679:27:48"},{"assignments":[8020],"declarations":[{"constant":false,"id":8020,"mutability":"mutable","name":"logx_times_y","nameLocation":"5724:12:48","nodeType":"VariableDeclaration","scope":8092,"src":"5717:19:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8019,"name":"int256","nodeType":"ElementaryTypeName","src":"5717:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8021,"nodeType":"VariableDeclarationStatement","src":"5717:19:48"},{"id":8070,"nodeType":"UncheckedBlock","src":"5746:790:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8022,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"5774:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8023,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"5794:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5774:28:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8025,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"5806:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8026,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"5817:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5806:28:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5774:60:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8064,"nodeType":"Block","src":"6418:72:48","statements":[{"expression":{"id":8062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8056,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"6436:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8058,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"6455:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8057,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"6451:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6451:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8060,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"6467:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6451:24:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6436:39:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8063,"nodeType":"ExpressionStatement","src":"6436:39:48"}]},"id":8065,"nodeType":"IfStatement","src":"5770:720:48","trueBody":{"id":8055,"nodeType":"Block","src":"5836:576:48","statements":[{"assignments":[8030],"declarations":[{"constant":false,"id":8030,"mutability":"mutable","name":"ln_36_x","nameLocation":"5861:7:48","nodeType":"VariableDeclaration","scope":8055,"src":"5854:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8029,"name":"int256","nodeType":"ElementaryTypeName","src":"5854:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8034,"initialValue":{"arguments":[{"id":8032,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"5878:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8031,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9189,"src":"5871:6:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5871:16:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5854:33:48"},{"expression":{"id":8053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8035,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"6308:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8036,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"6325:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8037,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"6335:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6325:16:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8039,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6324:18:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8040,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"6345:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6324:29:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8042,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8030,"src":"6358:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":8043,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"6368:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6358:16:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8045,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6357:18:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8046,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"6378:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6357:29:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8048,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6356:31:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8049,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"6390:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6356:40:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6324:72:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8052,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6323:74:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6308:89:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8054,"nodeType":"ExpressionStatement","src":"6308:89:48"}]}},{"expression":{"id":8068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8066,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"6503:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":8067,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"6519:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6503:22:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8069,"nodeType":"ExpressionStatement","src":"6503:22:48"}]},{"condition":{"id":8079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6613:79:48","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8071,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7868,"src":"6615:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8072,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"6639:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6615:36:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8074,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"6655:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8075,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7864,"src":"6671:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6655:36:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6615:76:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8078,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6614:78:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8084,"nodeType":"IfStatement","src":"6609:137:48","trueBody":{"id":8083,"nodeType":"Block","src":"6694:52:48","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8080,"name":"ProductOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7846,"src":"6715:18:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6715:20:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8082,"nodeType":"RevertStatement","src":"6708:27:48"}]}},{"expression":{"arguments":[{"arguments":[{"id":8088,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8020,"src":"6775:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8087,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8540,"src":"6771:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6771:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6763:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8085,"name":"uint256","nodeType":"ElementaryTypeName","src":"6763:7:48","typeDescriptions":{}}},"id":8090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6763:26:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7969,"id":8091,"nodeType":"Return","src":"6756:33:48"}]},"documentation":{"id":7961,"nodeType":"StructuredDocumentation","src":"4277:214:48","text":" @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`."},"id":8093,"implemented":true,"kind":"function","modifiers":[],"name":"pow","nameLocation":"4505:3:48","nodeType":"FunctionDefinition","parameters":{"id":7966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7963,"mutability":"mutable","name":"x","nameLocation":"4517:1:48","nodeType":"VariableDeclaration","scope":8093,"src":"4509:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7962,"name":"uint256","nodeType":"ElementaryTypeName","src":"4509:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7965,"mutability":"mutable","name":"y","nameLocation":"4528:1:48","nodeType":"VariableDeclaration","scope":8093,"src":"4520:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7964,"name":"uint256","nodeType":"ElementaryTypeName","src":"4520:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4508:22:48"},"returnParameters":{"id":7969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7968,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8093,"src":"4554:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7967,"name":"uint256","nodeType":"ElementaryTypeName","src":"4554:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4553:9:48"},"scope":9190,"src":"4496:2300:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8539,"nodeType":"Block","src":"7064:6082:48","statements":[{"condition":{"id":8109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7078:57:48","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8101,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"7080:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8102,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7868,"src":"7085:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7080:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8104,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"7109:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8105,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7864,"src":"7114:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7109:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7080:54:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8108,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7079:56:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8114,"nodeType":"IfStatement","src":"7074:112:48","trueBody":{"id":8113,"nodeType":"Block","src":"7137:49:48","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8110,"name":"InvalidExponent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"7158:15:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7158:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8112,"nodeType":"RevertStatement","src":"7151:24:48"}]}},{"assignments":[8116],"declarations":[{"constant":false,"id":8116,"mutability":"mutable","name":"negativeExponent","nameLocation":"7277:16:48","nodeType":"VariableDeclaration","scope":8539,"src":"7272:21:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8115,"name":"bool","nodeType":"ElementaryTypeName","src":"7272:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":8118,"initialValue":{"hexValue":"66616c7365","id":8117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7296:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"7272:29:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8119,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"7316:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7320:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7316:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8133,"nodeType":"IfStatement","src":"7312:417:48","trueBody":{"id":8132,"nodeType":"Block","src":"7323:406:48","statements":[{"id":8127,"nodeType":"UncheckedBlock","src":"7633:49:48","statements":[{"expression":{"id":8125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8122,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"7661:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7665:2:48","subExpression":{"id":8123,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"7666:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7661:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8126,"nodeType":"ExpressionStatement","src":"7661:6:48"}]},{"expression":{"id":8130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8128,"name":"negativeExponent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"7695:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7714:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7695:23:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8131,"nodeType":"ExpressionStatement","src":"7695:23:48"}]}},{"assignments":[8135],"declarations":[{"constant":false,"id":8135,"mutability":"mutable","name":"firstAN","nameLocation":"9037:7:48","nodeType":"VariableDeclaration","scope":8539,"src":"9030:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8134,"name":"int256","nodeType":"ElementaryTypeName","src":"9030:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8136,"nodeType":"VariableDeclarationStatement","src":"9030:14:48"},{"id":8172,"nodeType":"UncheckedBlock","src":"9054:457:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8137,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9082:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8138,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7891,"src":"9087:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9082:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8149,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9171:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8150,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"9176:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9171:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8165,"nodeType":"Block","src":"9256:74:48","statements":[{"expression":{"id":8163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8161,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8135,"src":"9274:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":8162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9284:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9274:11:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8164,"nodeType":"ExpressionStatement","src":"9274:11:48"}]},"id":8166,"nodeType":"IfStatement","src":"9167:163:48","trueBody":{"id":8160,"nodeType":"Block","src":"9180:70:48","statements":[{"expression":{"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8152,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9198:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8153,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"9203:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9198:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8155,"nodeType":"ExpressionStatement","src":"9198:7:48"},{"expression":{"id":8158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8156,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8135,"src":"9223:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8157,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7900,"src":"9233:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9223:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8159,"nodeType":"ExpressionStatement","src":"9223:12:48"}]}},"id":8167,"nodeType":"IfStatement","src":"9078:252:48","trueBody":{"id":8148,"nodeType":"Block","src":"9091:70:48","statements":[{"expression":{"id":8142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8140,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9109:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8141,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7891,"src":"9114:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9109:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8143,"nodeType":"ExpressionStatement","src":"9109:7:48"},{"expression":{"id":8146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8144,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8135,"src":"9134:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8145,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7894,"src":"9144:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9134:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8147,"nodeType":"ExpressionStatement","src":"9134:12:48"}]}},{"expression":{"id":8170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8168,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9492:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":8169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9497:3:48","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"9492:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8171,"nodeType":"ExpressionStatement","src":"9492:8:48"}]},{"assignments":[8174],"declarations":[{"constant":false,"id":8174,"mutability":"mutable","name":"product","nameLocation":"9730:7:48","nodeType":"VariableDeclaration","scope":8539,"src":"9723:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8173,"name":"int256","nodeType":"ElementaryTypeName","src":"9723:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8176,"initialValue":{"id":8175,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"9740:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"9723:23:48"},{"id":8321,"nodeType":"UncheckedBlock","src":"9757:957:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8177,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9785:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8178,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"9790:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9785:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8194,"nodeType":"IfStatement","src":"9781:104:48","trueBody":{"id":8193,"nodeType":"Block","src":"9794:91:48","statements":[{"expression":{"id":8182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8180,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9812:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8181,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"9817:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9812:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8183,"nodeType":"ExpressionStatement","src":"9812:7:48"},{"expression":{"id":8191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8184,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"9837:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8185,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"9848:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8186,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7906,"src":"9858:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9848:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8188,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9847:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8189,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"9864:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9847:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9837:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8192,"nodeType":"ExpressionStatement","src":"9837:33:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8195,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9902:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8196,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"9907:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9902:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8212,"nodeType":"IfStatement","src":"9898:104:48","trueBody":{"id":8211,"nodeType":"Block","src":"9911:91:48","statements":[{"expression":{"id":8200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8198,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"9929:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8199,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"9934:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9929:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8201,"nodeType":"ExpressionStatement","src":"9929:7:48"},{"expression":{"id":8209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8202,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"9954:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8203,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"9965:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8204,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"9975:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9965:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8206,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9964:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8207,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"9981:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9964:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9954:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8210,"nodeType":"ExpressionStatement","src":"9954:33:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8213,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10019:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8214,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7915,"src":"10024:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10019:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8230,"nodeType":"IfStatement","src":"10015:104:48","trueBody":{"id":8229,"nodeType":"Block","src":"10028:91:48","statements":[{"expression":{"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8216,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10046:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8217,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7915,"src":"10051:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10046:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8219,"nodeType":"ExpressionStatement","src":"10046:7:48"},{"expression":{"id":8227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8220,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10071:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8221,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10082:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8222,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7918,"src":"10092:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10082:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8224,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10081:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8225,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"10098:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10081:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10071:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8228,"nodeType":"ExpressionStatement","src":"10071:33:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8231,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10136:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8232,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7921,"src":"10141:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10136:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8248,"nodeType":"IfStatement","src":"10132:104:48","trueBody":{"id":8247,"nodeType":"Block","src":"10145:91:48","statements":[{"expression":{"id":8236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8234,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10163:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8235,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7921,"src":"10168:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10163:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8237,"nodeType":"ExpressionStatement","src":"10163:7:48"},{"expression":{"id":8245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8238,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10188:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8239,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10199:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8240,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"10209:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10199:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8242,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10198:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8243,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"10215:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10198:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10188:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8246,"nodeType":"ExpressionStatement","src":"10188:33:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8249,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10253:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8250,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7927,"src":"10258:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10253:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8266,"nodeType":"IfStatement","src":"10249:104:48","trueBody":{"id":8265,"nodeType":"Block","src":"10262:91:48","statements":[{"expression":{"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8252,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10280:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8253,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7927,"src":"10285:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10280:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8255,"nodeType":"ExpressionStatement","src":"10280:7:48"},{"expression":{"id":8263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8256,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10305:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8257,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10316:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8258,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7930,"src":"10326:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10316:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10315:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8261,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"10332:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10315:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10305:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8264,"nodeType":"ExpressionStatement","src":"10305:33:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8267,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10370:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8268,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7933,"src":"10375:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10370:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8284,"nodeType":"IfStatement","src":"10366:104:48","trueBody":{"id":8283,"nodeType":"Block","src":"10379:91:48","statements":[{"expression":{"id":8272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8270,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10397:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8271,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7933,"src":"10402:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10397:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8273,"nodeType":"ExpressionStatement","src":"10397:7:48"},{"expression":{"id":8281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8274,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10422:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8275,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10433:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8276,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"10443:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10433:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10432:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8279,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"10449:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10432:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10422:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8282,"nodeType":"ExpressionStatement","src":"10422:33:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8285,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10487:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8286,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"10492:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10487:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8302,"nodeType":"IfStatement","src":"10483:104:48","trueBody":{"id":8301,"nodeType":"Block","src":"10496:91:48","statements":[{"expression":{"id":8290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8288,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10514:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8289,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"10519:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10514:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8291,"nodeType":"ExpressionStatement","src":"10514:7:48"},{"expression":{"id":8299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8292,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10539:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8293,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10550:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8294,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7942,"src":"10560:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10550:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8296,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10549:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8297,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"10566:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10549:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10539:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8300,"nodeType":"ExpressionStatement","src":"10539:33:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8303,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10604:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8304,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"10609:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10604:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8320,"nodeType":"IfStatement","src":"10600:104:48","trueBody":{"id":8319,"nodeType":"Block","src":"10613:91:48","statements":[{"expression":{"id":8308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8306,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"10631:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8307,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"10636:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10631:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8309,"nodeType":"ExpressionStatement","src":"10631:7:48"},{"expression":{"id":8317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8310,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10656:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8311,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"10667:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8312,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7948,"src":"10677:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10667:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8314,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10666:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8315,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"10683:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10666:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10656:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8318,"nodeType":"ExpressionStatement","src":"10656:33:48"}]}}]},{"assignments":[8323],"declarations":[{"constant":false,"id":8323,"mutability":"mutable","name":"seriesSum","nameLocation":"11025:9:48","nodeType":"VariableDeclaration","scope":8539,"src":"11018:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8322,"name":"int256","nodeType":"ElementaryTypeName","src":"11018:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8325,"initialValue":{"id":8324,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"11037:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"11018:25:48"},{"assignments":[8327],"declarations":[{"constant":false,"id":8327,"mutability":"mutable","name":"term","nameLocation":"11115:4:48","nodeType":"VariableDeclaration","scope":8539,"src":"11108:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8326,"name":"int256","nodeType":"ElementaryTypeName","src":"11108:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8328,"nodeType":"VariableDeclarationStatement","src":"11108:11:48"},{"expression":{"id":8331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8329,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11228:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8330,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"11235:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11228:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8332,"nodeType":"ExpressionStatement","src":"11228:8:48"},{"id":8538,"nodeType":"UncheckedBlock","src":"11246:1894:48","statements":[{"expression":{"id":8335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8333,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"11270:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8334,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11283:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11270:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8336,"nodeType":"ExpressionStatement","src":"11270:17:48"},{"expression":{"id":8347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8337,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11536:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8338,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11545:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8339,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"11552:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11545:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8341,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11544:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8342,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"11557:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11544:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8344,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11543:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":8345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11567:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11543:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11536:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8348,"nodeType":"ExpressionStatement","src":"11536:32:48"},{"expression":{"id":8351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8349,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"11582:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8350,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11595:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11582:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8352,"nodeType":"ExpressionStatement","src":"11582:17:48"},{"expression":{"id":8363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8353,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11614:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8354,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11623:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8355,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"11630:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11623:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8357,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11622:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8358,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"11635:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11622:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8360,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11621:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":8361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11645:1:48","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"11621:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11614:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8364,"nodeType":"ExpressionStatement","src":"11614:32:48"},{"expression":{"id":8367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8365,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"11660:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8366,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11673:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11660:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8368,"nodeType":"ExpressionStatement","src":"11660:17:48"},{"expression":{"id":8379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8369,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11692:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8370,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11701:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8371,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"11708:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11701:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8373,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11700:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8374,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"11713:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11700:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8376,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11699:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":8377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11723:1:48","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11699:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11692:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8380,"nodeType":"ExpressionStatement","src":"11692:32:48"},{"expression":{"id":8383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8381,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"11738:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8382,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11751:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11738:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8384,"nodeType":"ExpressionStatement","src":"11738:17:48"},{"expression":{"id":8395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8385,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11770:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8386,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11779:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8387,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"11786:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11779:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8389,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11778:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8390,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"11791:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11778:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8392,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11777:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":8393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11801:1:48","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"11777:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11770:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8396,"nodeType":"ExpressionStatement","src":"11770:32:48"},{"expression":{"id":8399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8397,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"11816:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8398,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11829:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11816:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8400,"nodeType":"ExpressionStatement","src":"11816:17:48"},{"expression":{"id":8411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8401,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11848:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8402,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11857:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8403,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"11864:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11857:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8405,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11856:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8406,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"11869:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11856:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11855:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"36","id":8409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11879:1:48","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"11855:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11848:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8412,"nodeType":"ExpressionStatement","src":"11848:32:48"},{"expression":{"id":8415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8413,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"11894:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8414,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11907:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11894:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8416,"nodeType":"ExpressionStatement","src":"11894:17:48"},{"expression":{"id":8427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8417,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11926:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8418,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11935:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8419,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"11942:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11935:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8421,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11934:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8422,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"11947:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11934:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11933:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":8425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:1:48","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"11933:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11926:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8428,"nodeType":"ExpressionStatement","src":"11926:32:48"},{"expression":{"id":8431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8429,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"11972:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8430,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"11985:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11972:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8432,"nodeType":"ExpressionStatement","src":"11972:17:48"},{"expression":{"id":8443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8433,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12004:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8434,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12013:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8435,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"12020:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12013:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8437,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12012:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8438,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"12025:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12012:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8440,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12011:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"38","id":8441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12035:1:48","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12011:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12004:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8444,"nodeType":"ExpressionStatement","src":"12004:32:48"},{"expression":{"id":8447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8445,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"12050:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8446,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12063:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12050:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8448,"nodeType":"ExpressionStatement","src":"12050:17:48"},{"expression":{"id":8459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8449,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12082:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8450,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12091:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8451,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"12098:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12091:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8453,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12090:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8454,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"12103:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12090:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12089:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":8457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12113:1:48","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"12089:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12082:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8460,"nodeType":"ExpressionStatement","src":"12082:32:48"},{"expression":{"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8461,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"12128:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8462,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12141:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12128:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8464,"nodeType":"ExpressionStatement","src":"12128:17:48"},{"expression":{"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8465,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12160:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8466,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12169:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8467,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"12176:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12169:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8469,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12168:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8470,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"12181:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12168:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8472,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12167:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":8473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12191:2:48","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"12167:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12160:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8476,"nodeType":"ExpressionStatement","src":"12160:33:48"},{"expression":{"id":8479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8477,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"12207:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8478,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12220:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12207:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8480,"nodeType":"ExpressionStatement","src":"12207:17:48"},{"expression":{"id":8491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8481,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12239:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8482,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12248:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8483,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"12255:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12248:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8485,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12247:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8486,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"12260:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12247:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8488,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12246:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":8489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12270:2:48","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"12246:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12239:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8492,"nodeType":"ExpressionStatement","src":"12239:33:48"},{"expression":{"id":8495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8493,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"12286:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8494,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12299:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12286:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8496,"nodeType":"ExpressionStatement","src":"12286:17:48"},{"expression":{"id":8507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8497,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12318:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8498,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12327:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8499,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"12334:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12327:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12326:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8502,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"12339:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12326:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8504,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12325:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3132","id":8505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12349:2:48","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"12325:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12318:33:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8508,"nodeType":"ExpressionStatement","src":"12318:33:48"},{"expression":{"id":8511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8509,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"12365:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8510,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8327,"src":"12378:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12365:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8512,"nodeType":"ExpressionStatement","src":"12365:17:48"},{"assignments":[8514],"declarations":[{"constant":false,"id":8514,"mutability":"mutable","name":"result","nameLocation":"12914:6:48","nodeType":"VariableDeclaration","scope":8538,"src":"12907:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8513,"name":"int256","nodeType":"ElementaryTypeName","src":"12907:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8527,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8515,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8174,"src":"12926:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8516,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8323,"src":"12936:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12926:19:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8518,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12925:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8519,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"12949:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12925:30:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8521,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12924:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8522,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8135,"src":"12959:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12924:42:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8524,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12923:44:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":8525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12970:3:48","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"12923:50:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"12907:66:48"},{"expression":{"condition":{"id":8528,"name":"negativeExponent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"13075:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":8535,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8514,"src":"13123:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13075:54:48","trueExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":8529,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"13095:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8530,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"13104:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13095:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8532,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13094:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8533,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8514,"src":"13114:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13094:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8100,"id":8537,"nodeType":"Return","src":"13068:61:48"}]}]},"documentation":{"id":8094,"nodeType":"StructuredDocumentation","src":"6802:203:48","text":" @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`."},"id":8540,"implemented":true,"kind":"function","modifiers":[],"name":"exp","nameLocation":"7019:3:48","nodeType":"FunctionDefinition","parameters":{"id":8097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8096,"mutability":"mutable","name":"x","nameLocation":"7030:1:48","nodeType":"VariableDeclaration","scope":8540,"src":"7023:8:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8095,"name":"int256","nodeType":"ElementaryTypeName","src":"7023:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7022:10:48"},"returnParameters":{"id":8100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8540,"src":"7056:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8098,"name":"int256","nodeType":"ElementaryTypeName","src":"7056:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7055:8:48"},"scope":9190,"src":"7010:6136:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8613,"nodeType":"Block","src":"13315:861:48","statements":[{"assignments":[8551],"declarations":[{"constant":false,"id":8551,"mutability":"mutable","name":"logBase","nameLocation":"13552:7:48","nodeType":"VariableDeclaration","scope":8613,"src":"13545:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8550,"name":"int256","nodeType":"ElementaryTypeName","src":"13545:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8552,"nodeType":"VariableDeclarationStatement","src":"13545:14:48"},{"id":8577,"nodeType":"UncheckedBlock","src":"13569:214:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8553,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"13597:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8554,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8545,"src":"13617:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13597:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8556,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8545,"src":"13625:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8557,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"13632:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13625:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13597:52:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8575,"nodeType":"Block","src":"13712:61:48","statements":[{"expression":{"id":8573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8567,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"13730:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8569,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8545,"src":"13744:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8568,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"13740:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13740:9:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8571,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"13752:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13740:18:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13730:28:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8574,"nodeType":"ExpressionStatement","src":"13730:28:48"}]},"id":8576,"nodeType":"IfStatement","src":"13593:180:48","trueBody":{"id":8566,"nodeType":"Block","src":"13651:55:48","statements":[{"expression":{"id":8564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8560,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"13669:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8562,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8545,"src":"13686:4:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8561,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9189,"src":"13679:6:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13679:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13669:22:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8565,"nodeType":"ExpressionStatement","src":"13669:22:48"}]}}]},{"assignments":[8579],"declarations":[{"constant":false,"id":8579,"mutability":"mutable","name":"logArg","nameLocation":"13800:6:48","nodeType":"VariableDeclaration","scope":8613,"src":"13793:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8578,"name":"int256","nodeType":"ElementaryTypeName","src":"13793:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8580,"nodeType":"VariableDeclarationStatement","src":"13793:13:48"},{"id":8612,"nodeType":"UncheckedBlock","src":"13816:354:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8581,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"13844:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8582,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"13864:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13844:23:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8584,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"13871:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8585,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"13877:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13871:23:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13844:50:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8603,"nodeType":"Block","src":"13955:59:48","statements":[{"expression":{"id":8601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8595,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8579,"src":"13973:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8597,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"13986:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8596,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"13982:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13982:8:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8599,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"13993:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13982:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13973:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8602,"nodeType":"ExpressionStatement","src":"13973:26:48"}]},"id":8604,"nodeType":"IfStatement","src":"13840:174:48","trueBody":{"id":8594,"nodeType":"Block","src":"13896:53:48","statements":[{"expression":{"id":8592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8588,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8579,"src":"13914:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8590,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8543,"src":"13930:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8589,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9189,"src":"13923:6:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13923:11:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13914:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8593,"nodeType":"ExpressionStatement","src":"13914:20:48"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8605,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8579,"src":"14133:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8606,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"14142:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14133:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8608,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14132:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8609,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"14152:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14132:27:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8549,"id":8611,"nodeType":"Return","src":"14125:34:48"}]}]},"documentation":{"id":8541,"nodeType":"StructuredDocumentation","src":"13152:89:48","text":"@dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument."},"id":8614,"implemented":true,"kind":"function","modifiers":[],"name":"log","nameLocation":"13255:3:48","nodeType":"FunctionDefinition","parameters":{"id":8546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8543,"mutability":"mutable","name":"arg","nameLocation":"13266:3:48","nodeType":"VariableDeclaration","scope":8614,"src":"13259:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8542,"name":"int256","nodeType":"ElementaryTypeName","src":"13259:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":8545,"mutability":"mutable","name":"base","nameLocation":"13278:4:48","nodeType":"VariableDeclaration","scope":8614,"src":"13271:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8544,"name":"int256","nodeType":"ElementaryTypeName","src":"13271:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13258:25:48"},"returnParameters":{"id":8549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8614,"src":"13307:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8547,"name":"int256","nodeType":"ElementaryTypeName","src":"13307:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13306:8:48"},"scope":9190,"src":"13246:930:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8651,"nodeType":"Block","src":"14319:353:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8622,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8617,"src":"14416:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":8623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14421:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14416:6:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8629,"nodeType":"IfStatement","src":"14412:57:48","trueBody":{"id":8628,"nodeType":"Block","src":"14424:45:48","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8625,"name":"OutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7852,"src":"14445:11:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14445:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8627,"nodeType":"RevertStatement","src":"14438:20:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8630,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7873,"src":"14482:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8631,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8617,"src":"14502:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14482:21:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8633,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8617,"src":"14507:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8634,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7878,"src":"14511:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14507:21:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14482:46:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8649,"nodeType":"Block","src":"14628:38:48","statements":[{"expression":{"arguments":[{"id":8646,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8617,"src":"14653:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8645,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"14649:3:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14649:6:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8621,"id":8648,"nodeType":"Return","src":"14642:13:48"}]},"id":8650,"nodeType":"IfStatement","src":"14478:188:48","trueBody":{"id":8644,"nodeType":"Block","src":"14530:92:48","statements":[{"id":8643,"nodeType":"UncheckedBlock","src":"14544:68:48","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8638,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8617,"src":"14586:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":8637,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9189,"src":"14579:6:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":8639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14579:9:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8640,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"14591:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14579:18:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8621,"id":8642,"nodeType":"Return","src":"14572:25:48"}]}]}}]},"documentation":{"id":8615,"nodeType":"StructuredDocumentation","src":"14182:79:48","text":"@dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":8652,"implemented":true,"kind":"function","modifiers":[],"name":"ln","nameLocation":"14275:2:48","nodeType":"FunctionDefinition","parameters":{"id":8618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8617,"mutability":"mutable","name":"a","nameLocation":"14285:1:48","nodeType":"VariableDeclaration","scope":8652,"src":"14278:8:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8616,"name":"int256","nodeType":"ElementaryTypeName","src":"14278:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14277:10:48"},"returnParameters":{"id":8621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8652,"src":"14311:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8619,"name":"int256","nodeType":"ElementaryTypeName","src":"14311:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14310:8:48"},"scope":9190,"src":"14266:406:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9033,"nodeType":"Block","src":"14824:5531:48","statements":[{"assignments":[8661],"declarations":[{"constant":false,"id":8661,"mutability":"mutable","name":"negativeExponent","nameLocation":"14915:16:48","nodeType":"VariableDeclaration","scope":9033,"src":"14910:21:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8660,"name":"bool","nodeType":"ElementaryTypeName","src":"14910:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":8663,"initialValue":{"hexValue":"66616c7365","id":8662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14934:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"14910:29:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8664,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"14954:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8665,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"14958:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14954:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8682,"nodeType":"IfStatement","src":"14950:381:48","trueBody":{"id":8681,"nodeType":"Block","src":"14966:365:48","statements":[{"id":8676,"nodeType":"UncheckedBlock","src":"15216:68:48","statements":[{"expression":{"id":8674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8667,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"15244:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":8668,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"15249:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8669,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"15258:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15249:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8671,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15248:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8672,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"15268:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15248:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15244:25:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8675,"nodeType":"ExpressionStatement","src":"15244:25:48"}]},{"expression":{"id":8679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8677,"name":"negativeExponent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"15297:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15316:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"15297:23:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8680,"nodeType":"ExpressionStatement","src":"15297:23:48"}]}},{"assignments":[8684],"declarations":[{"constant":false,"id":8684,"mutability":"mutable","name":"sum","nameLocation":"16663:3:48","nodeType":"VariableDeclaration","scope":9033,"src":"16656:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8683,"name":"int256","nodeType":"ElementaryTypeName","src":"16656:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8686,"initialValue":{"hexValue":"30","id":8685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16669:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16656:14:48"},{"id":8905,"nodeType":"UncheckedBlock","src":"16680:1674:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8687,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"16708:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":8688,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7894,"src":"16713:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8689,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"16718:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16713:11:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16708:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8701,"nodeType":"IfStatement","src":"16704:126:48","trueBody":{"id":8700,"nodeType":"Block","src":"16726:104:48","statements":[{"expression":{"id":8694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8692,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"16744:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":8693,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7894,"src":"16749:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16744:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8695,"nodeType":"ExpressionStatement","src":"16744:7:48"},{"expression":{"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8696,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"16806:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8697,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7891,"src":"16813:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16806:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8699,"nodeType":"ExpressionStatement","src":"16806:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8702,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"16848:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":8703,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7900,"src":"16853:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8704,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"16858:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16853:11:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16848:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8716,"nodeType":"IfStatement","src":"16844:126:48","trueBody":{"id":8715,"nodeType":"Block","src":"16866:104:48","statements":[{"expression":{"id":8709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8707,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"16884:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":8708,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7900,"src":"16889:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16884:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8710,"nodeType":"ExpressionStatement","src":"16884:7:48"},{"expression":{"id":8713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8711,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"16946:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8712,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7897,"src":"16953:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16946:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8714,"nodeType":"ExpressionStatement","src":"16946:9:48"}]}},{"expression":{"id":8719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8717,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17109:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":8718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17116:3:48","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"17109:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8720,"nodeType":"ExpressionStatement","src":"17109:10:48"},{"expression":{"id":8723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8721,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17133:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":8722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17138:3:48","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"17133:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8724,"nodeType":"ExpressionStatement","src":"17133:8:48"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8725,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17276:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8726,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7906,"src":"17281:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17276:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8742,"nodeType":"IfStatement","src":"17272:94:48","trueBody":{"id":8741,"nodeType":"Block","src":"17285:81:48","statements":[{"expression":{"id":8735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8728,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17303:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8729,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17308:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8730,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"17312:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17308:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17307:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8733,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7906,"src":"17322:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17307:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17303:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8736,"nodeType":"ExpressionStatement","src":"17303:21:48"},{"expression":{"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8737,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17342:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8738,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"17349:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17342:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8740,"nodeType":"ExpressionStatement","src":"17342:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8743,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17384:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8744,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"17389:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17384:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8760,"nodeType":"IfStatement","src":"17380:94:48","trueBody":{"id":8759,"nodeType":"Block","src":"17393:81:48","statements":[{"expression":{"id":8753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8746,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17411:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8747,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17416:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8748,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"17420:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17416:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8750,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17415:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8751,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7912,"src":"17430:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17415:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17411:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8754,"nodeType":"ExpressionStatement","src":"17411:21:48"},{"expression":{"id":8757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8755,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17450:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8756,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7909,"src":"17457:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17450:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8758,"nodeType":"ExpressionStatement","src":"17450:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8761,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17492:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8762,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7918,"src":"17497:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17492:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8778,"nodeType":"IfStatement","src":"17488:94:48","trueBody":{"id":8777,"nodeType":"Block","src":"17501:81:48","statements":[{"expression":{"id":8771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8764,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17519:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8765,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17524:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8766,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"17528:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17524:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17523:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8769,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7918,"src":"17538:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17523:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17519:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8772,"nodeType":"ExpressionStatement","src":"17519:21:48"},{"expression":{"id":8775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8773,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17558:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8774,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7915,"src":"17565:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17558:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8776,"nodeType":"ExpressionStatement","src":"17558:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8779,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17600:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8780,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"17605:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17600:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8796,"nodeType":"IfStatement","src":"17596:94:48","trueBody":{"id":8795,"nodeType":"Block","src":"17609:81:48","statements":[{"expression":{"id":8789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8782,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17627:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8783,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17632:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8784,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"17636:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17632:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8786,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17631:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8787,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7924,"src":"17646:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17631:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17627:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8790,"nodeType":"ExpressionStatement","src":"17627:21:48"},{"expression":{"id":8793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8791,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17666:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8792,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7921,"src":"17673:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17666:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8794,"nodeType":"ExpressionStatement","src":"17666:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8797,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17708:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8798,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7930,"src":"17713:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17708:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8814,"nodeType":"IfStatement","src":"17704:94:48","trueBody":{"id":8813,"nodeType":"Block","src":"17717:81:48","statements":[{"expression":{"id":8807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8800,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17735:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8801,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17740:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8802,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"17744:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17740:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8804,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17739:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8805,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7930,"src":"17754:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17739:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17735:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8808,"nodeType":"ExpressionStatement","src":"17735:21:48"},{"expression":{"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8809,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17774:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8810,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7927,"src":"17781:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17774:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8812,"nodeType":"ExpressionStatement","src":"17774:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8815,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17816:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8816,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"17821:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17816:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8832,"nodeType":"IfStatement","src":"17812:94:48","trueBody":{"id":8831,"nodeType":"Block","src":"17825:81:48","statements":[{"expression":{"id":8825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8818,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17843:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8819,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17848:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8820,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"17852:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17848:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8822,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17847:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8823,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"17862:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17847:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17843:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8826,"nodeType":"ExpressionStatement","src":"17843:21:48"},{"expression":{"id":8829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8827,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17882:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8828,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7933,"src":"17889:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17882:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8830,"nodeType":"ExpressionStatement","src":"17882:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8833,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17924:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8834,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7942,"src":"17929:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17924:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8850,"nodeType":"IfStatement","src":"17920:94:48","trueBody":{"id":8849,"nodeType":"Block","src":"17933:81:48","statements":[{"expression":{"id":8843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8836,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17951:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8837,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"17956:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8838,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"17960:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17956:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17955:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8841,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7942,"src":"17970:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17955:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17951:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8844,"nodeType":"ExpressionStatement","src":"17951:21:48"},{"expression":{"id":8847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8845,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"17990:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8846,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7939,"src":"17997:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17990:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8848,"nodeType":"ExpressionStatement","src":"17990:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8851,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18032:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8852,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7948,"src":"18037:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18032:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8868,"nodeType":"IfStatement","src":"18028:94:48","trueBody":{"id":8867,"nodeType":"Block","src":"18041:81:48","statements":[{"expression":{"id":8861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8854,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18059:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8855,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18064:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8856,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"18068:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18064:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8858,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18063:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8859,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7948,"src":"18078:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18063:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18059:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8862,"nodeType":"ExpressionStatement","src":"18059:21:48"},{"expression":{"id":8865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8863,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"18098:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8864,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7945,"src":"18105:2:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18098:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8866,"nodeType":"ExpressionStatement","src":"18098:9:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8869,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18140:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8870,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7954,"src":"18145:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18140:8:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8886,"nodeType":"IfStatement","src":"18136:97:48","trueBody":{"id":8885,"nodeType":"Block","src":"18150:83:48","statements":[{"expression":{"id":8879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18168:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8873,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18173:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8874,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"18177:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18173:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8876,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18172:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8877,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7954,"src":"18187:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18172:18:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18168:22:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8880,"nodeType":"ExpressionStatement","src":"18168:22:48"},{"expression":{"id":8883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8881,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"18208:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8882,"name":"x10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7951,"src":"18215:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18208:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8884,"nodeType":"ExpressionStatement","src":"18208:10:48"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8887,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18251:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8888,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7960,"src":"18256:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18251:8:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8904,"nodeType":"IfStatement","src":"18247:97:48","trueBody":{"id":8903,"nodeType":"Block","src":"18261:83:48","statements":[{"expression":{"id":8897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8890,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18279:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8891,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18284:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8892,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"18288:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18284:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18283:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8895,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7960,"src":"18298:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18283:18:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18279:22:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8898,"nodeType":"ExpressionStatement","src":"18279:22:48"},{"expression":{"id":8901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8899,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"18319:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8900,"name":"x11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7957,"src":"18326:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18319:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8902,"nodeType":"ExpressionStatement","src":"18319:10:48"}]}}]},{"id":9032,"nodeType":"UncheckedBlock","src":"18856:1493:48","statements":[{"assignments":[8907],"declarations":[{"constant":false,"id":8907,"mutability":"mutable","name":"z","nameLocation":"18887:1:48","nodeType":"VariableDeclaration","scope":9032,"src":"18880:8:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8906,"name":"int256","nodeType":"ElementaryTypeName","src":"18880:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8920,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8908,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18893:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8909,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"18897:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18893:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8911,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18892:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8912,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"18907:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18892:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8914,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18891:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8915,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"18918:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8916,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"18922:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18918:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8918,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18917:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18891:38:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18880:49:48"},{"assignments":[8922],"declarations":[{"constant":false,"id":8922,"mutability":"mutable","name":"z_squared","nameLocation":"18950:9:48","nodeType":"VariableDeclaration","scope":9032,"src":"18943:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8921,"name":"int256","nodeType":"ElementaryTypeName","src":"18943:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8929,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8923,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"18963:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8924,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"18967:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18963:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8926,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18962:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8927,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"18972:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18962:16:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18943:35:48"},{"assignments":[8931],"declarations":[{"constant":false,"id":8931,"mutability":"mutable","name":"num","nameLocation":"19074:3:48","nodeType":"VariableDeclaration","scope":9032,"src":"19067:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8930,"name":"int256","nodeType":"ElementaryTypeName","src":"19067:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8933,"initialValue":{"id":8932,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"19080:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"19067:14:48"},{"assignments":[8935],"declarations":[{"constant":false,"id":8935,"mutability":"mutable","name":"seriesSum","nameLocation":"19210:9:48","nodeType":"VariableDeclaration","scope":9032,"src":"19203:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8934,"name":"int256","nodeType":"ElementaryTypeName","src":"19203:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":8937,"initialValue":{"id":8936,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19222:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"19203:22:48"},{"expression":{"id":8945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8938,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19304:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8939,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19311:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8940,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"19317:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19311:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8942,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19310:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8943,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"19330:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19310:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19304:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8946,"nodeType":"ExpressionStatement","src":"19304:32:48"},{"expression":{"id":8951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8947,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"19350:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8948,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19363:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":8949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19369:1:48","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"19363:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19350:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8952,"nodeType":"ExpressionStatement","src":"19350:20:48"},{"expression":{"id":8960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8953,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19385:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8954,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19392:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8955,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"19398:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19392:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19391:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8958,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"19411:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19391:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19385:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8961,"nodeType":"ExpressionStatement","src":"19385:32:48"},{"expression":{"id":8966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8962,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"19431:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8963,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19444:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":8964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19450:1:48","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"19444:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19431:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8967,"nodeType":"ExpressionStatement","src":"19431:20:48"},{"expression":{"id":8975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8968,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19466:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8969,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19473:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8970,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"19479:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19473:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8972,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19472:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8973,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"19492:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19472:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19466:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8976,"nodeType":"ExpressionStatement","src":"19466:32:48"},{"expression":{"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8977,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"19512:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8978,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19525:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":8979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19531:1:48","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"19525:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19512:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8982,"nodeType":"ExpressionStatement","src":"19512:20:48"},{"expression":{"id":8990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8983,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19547:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8984,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19554:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8985,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"19560:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19554:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":8987,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19553:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":8988,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"19573:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19553:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19547:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8991,"nodeType":"ExpressionStatement","src":"19547:32:48"},{"expression":{"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8992,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"19593:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":8995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8993,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19606:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":8994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19612:1:48","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"19606:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19593:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":8997,"nodeType":"ExpressionStatement","src":"19593:20:48"},{"expression":{"id":9005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8998,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19628:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8999,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19635:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9000,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"19641:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19635:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19634:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9003,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"19654:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19634:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19628:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9006,"nodeType":"ExpressionStatement","src":"19628:32:48"},{"expression":{"id":9011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9007,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"19674:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9008,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"19687:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":9009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19693:2:48","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"19687:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19674:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9012,"nodeType":"ExpressionStatement","src":"19674:21:48"},{"expression":{"id":9015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9013,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"19866:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"32","id":9014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19879:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19866:14:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9016,"nodeType":"ExpressionStatement","src":"19866:14:48"},{"assignments":[9018],"declarations":[{"constant":false,"id":9018,"mutability":"mutable","name":"result","nameLocation":"20169:6:48","nodeType":"VariableDeclaration","scope":9032,"src":"20162:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9017,"name":"int256","nodeType":"ElementaryTypeName","src":"20162:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9025,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9019,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"20179:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9020,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8935,"src":"20185:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20179:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9022,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20178:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":9023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20198:3:48","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"20178:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20162:39:48"},{"expression":{"condition":{"id":9026,"name":"negativeExponent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8661,"src":"20303:16:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":9029,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"20332:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"20303:35:48","trueExpression":{"id":9028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"20322:7:48","subExpression":{"id":9027,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9018,"src":"20323:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8659,"id":9031,"nodeType":"Return","src":"20296:42:48"}]}]},"documentation":{"id":8653,"nodeType":"StructuredDocumentation","src":"14678:88:48","text":"@dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":9034,"implemented":true,"kind":"function","modifiers":[],"name":"_ln","nameLocation":"14780:3:48","nodeType":"FunctionDefinition","parameters":{"id":8656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8655,"mutability":"mutable","name":"a","nameLocation":"14791:1:48","nodeType":"VariableDeclaration","scope":9034,"src":"14784:8:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8654,"name":"int256","nodeType":"ElementaryTypeName","src":"14784:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14783:10:48"},"returnParameters":{"id":8659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8658,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9034,"src":"14816:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8657,"name":"int256","nodeType":"ElementaryTypeName","src":"14816:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14815:8:48"},"scope":9190,"src":"14771:5584:48","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":9188,"nodeType":"Block","src":"20678:1804:48","statements":[{"id":9187,"nodeType":"UncheckedBlock","src":"20892:1584:48","statements":[{"expression":{"id":9044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9042,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9037,"src":"20916:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"id":9043,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"20921:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20916:11:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9045,"nodeType":"ExpressionStatement","src":"20916:11:48"},{"assignments":[9047],"declarations":[{"constant":false,"id":9047,"mutability":"mutable","name":"z","nameLocation":"21315:1:48","nodeType":"VariableDeclaration","scope":9187,"src":"21308:8:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9046,"name":"int256","nodeType":"ElementaryTypeName","src":"21308:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9060,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9048,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9037,"src":"21321:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9049,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"21325:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21321:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9051,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21320:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9052,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"21335:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21320:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9054,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21319:23:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9055,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9037,"src":"21346:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9056,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"21350:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21346:10:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21345:12:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21319:38:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"21308:49:48"},{"assignments":[9062],"declarations":[{"constant":false,"id":9062,"mutability":"mutable","name":"z_squared","nameLocation":"21378:9:48","nodeType":"VariableDeclaration","scope":9187,"src":"21371:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9061,"name":"int256","nodeType":"ElementaryTypeName","src":"21371:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9069,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9063,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"21391:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9064,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"21395:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21391:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21390:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9067,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"21400:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21390:16:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"21371:35:48"},{"assignments":[9071],"declarations":[{"constant":false,"id":9071,"mutability":"mutable","name":"num","nameLocation":"21502:3:48","nodeType":"VariableDeclaration","scope":9187,"src":"21495:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9070,"name":"int256","nodeType":"ElementaryTypeName","src":"21495:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9073,"initialValue":{"id":9072,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"21508:1:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"21495:14:48"},{"assignments":[9075],"declarations":[{"constant":false,"id":9075,"mutability":"mutable","name":"seriesSum","nameLocation":"21638:9:48","nodeType":"VariableDeclaration","scope":9187,"src":"21631:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9074,"name":"int256","nodeType":"ElementaryTypeName","src":"21631:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9077,"initialValue":{"id":9076,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21650:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"21631:22:48"},{"expression":{"id":9085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9078,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21732:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9079,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21739:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9080,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9062,"src":"21745:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21739:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21738:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9083,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"21758:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21738:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21732:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9086,"nodeType":"ExpressionStatement","src":"21732:32:48"},{"expression":{"id":9091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9087,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"21778:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9088,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21791:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":9089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21797:1:48","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"21791:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21778:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9092,"nodeType":"ExpressionStatement","src":"21778:20:48"},{"expression":{"id":9100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9093,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21813:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9094,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21820:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9095,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9062,"src":"21826:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21820:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9097,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21819:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9098,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"21839:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21819:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21813:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9101,"nodeType":"ExpressionStatement","src":"21813:32:48"},{"expression":{"id":9106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9102,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"21859:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9103,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21872:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":9104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21878:1:48","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"21872:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21859:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9107,"nodeType":"ExpressionStatement","src":"21859:20:48"},{"expression":{"id":9115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9108,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21894:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9109,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21901:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9110,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9062,"src":"21907:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21901:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21900:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9113,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"21920:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21900:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21894:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9116,"nodeType":"ExpressionStatement","src":"21894:32:48"},{"expression":{"id":9121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9117,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"21940:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9118,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21953:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":9119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21959:1:48","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"21953:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21940:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9122,"nodeType":"ExpressionStatement","src":"21940:20:48"},{"expression":{"id":9130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9123,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21975:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9124,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"21982:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9125,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9062,"src":"21988:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21982:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21981:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9128,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"22001:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21981:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21975:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9131,"nodeType":"ExpressionStatement","src":"21975:32:48"},{"expression":{"id":9136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9132,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"22021:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9133,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22034:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":9134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22040:1:48","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"22034:7:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22021:20:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9137,"nodeType":"ExpressionStatement","src":"22021:20:48"},{"expression":{"id":9145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9138,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22056:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9139,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22063:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9140,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9062,"src":"22069:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22063:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9142,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22062:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9143,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"22082:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22062:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22056:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9146,"nodeType":"ExpressionStatement","src":"22056:32:48"},{"expression":{"id":9151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9147,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"22102:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9148,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22115:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":9149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22121:2:48","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"22115:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22102:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9152,"nodeType":"ExpressionStatement","src":"22102:21:48"},{"expression":{"id":9160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9153,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22138:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9154,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22145:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9155,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9062,"src":"22151:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22145:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22144:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9158,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"22164:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22144:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22138:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9161,"nodeType":"ExpressionStatement","src":"22138:32:48"},{"expression":{"id":9166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9162,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"22184:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9163,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22197:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3133","id":9164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22203:2:48","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"src":"22197:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22184:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9167,"nodeType":"ExpressionStatement","src":"22184:21:48"},{"expression":{"id":9175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9168,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22220:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9169,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22227:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9170,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9062,"src":"22233:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22227:15:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9172,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22226:17:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9173,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7861,"src":"22246:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22226:26:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22220:32:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9176,"nodeType":"ExpressionStatement","src":"22220:32:48"},{"expression":{"id":9181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9177,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"22266:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9178,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"22279:3:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3135","id":9179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22285:2:48","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"22279:8:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22266:21:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9182,"nodeType":"ExpressionStatement","src":"22266:21:48"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9183,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"22452:9:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":9184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22464:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22452:13:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":9041,"id":9186,"nodeType":"Return","src":"22445:20:48"}]}]},"documentation":{"id":9035,"nodeType":"StructuredDocumentation","src":"20361:256:48","text":" @dev Internal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n for x close to one.\n Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND."},"id":9189,"implemented":true,"kind":"function","modifiers":[],"name":"_ln_36","nameLocation":"20631:6:48","nodeType":"FunctionDefinition","parameters":{"id":9038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9037,"mutability":"mutable","name":"x","nameLocation":"20645:1:48","nodeType":"VariableDeclaration","scope":9189,"src":"20638:8:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9036,"name":"int256","nodeType":"ElementaryTypeName","src":"20638:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20637:10:48"},"returnParameters":{"id":9041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9189,"src":"20670:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9039,"name":"int256","nodeType":"ElementaryTypeName","src":"20670:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20669:8:48"},"scope":9190,"src":"20622:1860:48","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":9191,"src":"595:21889:48","usedErrors":[7840,7843,7846,7849,7852],"usedEvents":[]}],"src":"33:22452:48"},"id":48},"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol","exportedSymbols":{"FixedPoint":[7834],"WeightedMath":[9499]},"id":9500,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9192,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:49"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"./FixedPoint.sol","id":9194,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9500,"sourceUnit":7835,"src":"72:46:49","symbolAliases":[{"foreign":{"id":9193,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"81:10:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"WeightedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":9195,"nodeType":"StructuredDocumentation","src":"120:539:49","text":" @notice Implementation of Balancer Weighted Math, essentially unchanged since v1.\n @dev It is a generalization of the x * y = k constant product formula, accounting for cases with more than two\n tokens, and weights that are not 50/50. See https://docs.qr68.com/tech-implementations/weighted-math.\n For security reasons, to help ensure that for all possible \"round trip\" paths the caller always receives the same\n or fewer tokens than supplied, we have chosen the rounding direction to favor the protocol in all cases."},"fullyImplemented":true,"id":9499,"linearizedBaseContracts":[9499],"name":"WeightedMath","nameLocation":"668:12:49","nodeType":"ContractDefinition","nodes":[{"global":false,"id":9198,"libraryName":{"id":9196,"name":"FixedPoint","nameLocations":["693:10:49"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"693:10:49"},"nodeType":"UsingForDirective","src":"687:29:49","typeName":{"id":9197,"name":"uint256","nodeType":"ElementaryTypeName","src":"708:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"documentation":{"id":9199,"nodeType":"StructuredDocumentation","src":"722:89:49","text":"@notice User attempted to extract a disproportionate amountOut of tokens from a pool."},"errorSelector":"64590b9f","id":9201,"name":"MaxOutRatio","nameLocation":"822:11:49","nodeType":"ErrorDefinition","parameters":{"id":9200,"nodeType":"ParameterList","parameters":[],"src":"833:2:49"},"src":"816:20:49"},{"documentation":{"id":9202,"nodeType":"StructuredDocumentation","src":"842:82:49","text":"@notice User attempted to add a disproportionate amountIn of tokens to a pool."},"errorSelector":"340a4533","id":9204,"name":"MaxInRatio","nameLocation":"935:10:49","nodeType":"ErrorDefinition","parameters":{"id":9203,"nodeType":"ParameterList","parameters":[],"src":"945:2:49"},"src":"929:19:49"},{"documentation":{"id":9205,"nodeType":"StructuredDocumentation","src":"954:200:49","text":" @notice Error thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.\n @dev Most commonly, this happens when a token balance is zero."},"errorSelector":"26543689","id":9207,"name":"ZeroInvariant","nameLocation":"1165:13:49","nodeType":"ErrorDefinition","parameters":{"id":9206,"nodeType":"ParameterList","parameters":[],"src":"1178:2:49"},"src":"1159:22:49"},{"constant":true,"id":9210,"mutability":"constant","name":"_MAX_IN_RATIO","nameLocation":"2718:13:49","nodeType":"VariableDeclaration","scope":9499,"src":"2692:47:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9208,"name":"uint256","nodeType":"ElementaryTypeName","src":"2692:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3330653136","id":9209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2734:5:49","typeDescriptions":{"typeIdentifier":"t_rational_300000000000000000_by_1","typeString":"int_const 300000000000000000"},"value":"30e16"},"visibility":"internal"},{"constant":true,"id":9213,"mutability":"constant","name":"_MAX_OUT_RATIO","nameLocation":"2778:14:49","nodeType":"VariableDeclaration","scope":9499,"src":"2752:48:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9211,"name":"uint256","nodeType":"ElementaryTypeName","src":"2752:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3330653136","id":9212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2795:5:49","typeDescriptions":{"typeIdentifier":"t_rational_300000000000000000_by_1","typeString":"int_const 300000000000000000"},"value":"30e16"},"visibility":"internal"},{"constant":true,"id":9216,"mutability":"constant","name":"_MAX_INVARIANT_RATIO","nameLocation":"2956:20:49","nodeType":"VariableDeclaration","scope":9499,"src":"2930:55:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9214,"name":"uint256","nodeType":"ElementaryTypeName","src":"2930:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333030653136","id":9215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2979:6:49","typeDescriptions":{"typeIdentifier":"t_rational_3000000000000000000_by_1","typeString":"int_const 3000000000000000000"},"value":"300e16"},"visibility":"internal"},{"constant":true,"id":9219,"mutability":"constant","name":"_MIN_INVARIANT_RATIO","nameLocation":"3144:20:49","nodeType":"VariableDeclaration","scope":9499,"src":"3118:54:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9217,"name":"uint256","nodeType":"ElementaryTypeName","src":"3118:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3730653136","id":9218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3167:5:49","typeDescriptions":{"typeIdentifier":"t_rational_700000000000000000_by_1","typeString":"int_const 700000000000000000"},"value":"70e16"},"visibility":"internal"},{"body":{"id":9271,"nodeType":"Block","src":"3989:906:49","statements":[{"expression":{"id":9234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9231,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"4624:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9232,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"4636:10:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":9233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4647:3:49","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"4636:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4624:26:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9235,"nodeType":"ExpressionStatement","src":"4624:26:49"},{"body":{"id":9261,"nodeType":"Block","src":"4715:97:49","statements":[{"expression":{"id":9259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9247,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"4729:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"id":9254,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9223,"src":"4779:17:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9256,"indexExpression":{"id":9255,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9237,"src":"4797:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4779:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":9250,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9226,"src":"4759:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9252,"indexExpression":{"id":9251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9237,"src":"4768:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4759:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4771:7:49","memberName":"powDown","nodeType":"MemberAccess","referencedDeclaration":7756,"src":"4759:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4759:41:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9248,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"4741:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4751:7:49","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"4741:17:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4741:60:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4729:72:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9260,"nodeType":"ExpressionStatement","src":"4729:72:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9240,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9237,"src":"4680:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9241,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9223,"src":"4684:17:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4702:6:49","memberName":"length","nodeType":"MemberAccess","src":"4684:24:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4680:28:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9262,"initializationExpression":{"assignments":[9237],"declarations":[{"constant":false,"id":9237,"mutability":"mutable","name":"i","nameLocation":"4673:1:49","nodeType":"VariableDeclaration","scope":9262,"src":"4665:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9236,"name":"uint256","nodeType":"ElementaryTypeName","src":"4665:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9239,"initialValue":{"hexValue":"30","id":9238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4677:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4665:13:49"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4710:3:49","subExpression":{"id":9244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9237,"src":"4712:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9246,"nodeType":"ExpressionStatement","src":"4710:3:49"},"nodeType":"ForStatement","src":"4660:152:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9263,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9229,"src":"4826:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4826:14:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9270,"nodeType":"IfStatement","src":"4822:67:49","trueBody":{"id":9269,"nodeType":"Block","src":"4842:47:49","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9266,"name":"ZeroInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"4863:13:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4863:15:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9268,"nodeType":"RevertStatement","src":"4856:22:49"}]}}]},"documentation":{"id":9220,"nodeType":"StructuredDocumentation","src":"3186:641:49","text":" @notice Compute the invariant, rounding down.\n @dev The invariant functions are called by the Vault during various liquidity operations, and require a specific\n rounding direction in order to ensure safety (i.e., that the final result is always rounded in favor of the\n protocol. The invariant (i.e., all token balances) must always be greater than 0, or it will revert.\n @param normalizedWeights The pool token weights, sorted in token registration order\n @param balances The pool token balances, sorted in token registration order\n @return invariant The invariant, rounded down"},"id":9272,"implemented":true,"kind":"function","modifiers":[],"name":"computeInvariantDown","nameLocation":"3841:20:49","nodeType":"FunctionDefinition","parameters":{"id":9227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9223,"mutability":"mutable","name":"normalizedWeights","nameLocation":"3888:17:49","nodeType":"VariableDeclaration","scope":9272,"src":"3871:34:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9221,"name":"uint256","nodeType":"ElementaryTypeName","src":"3871:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9222,"nodeType":"ArrayTypeName","src":"3871:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9226,"mutability":"mutable","name":"balances","nameLocation":"3932:8:49","nodeType":"VariableDeclaration","scope":9272,"src":"3915:25:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9224,"name":"uint256","nodeType":"ElementaryTypeName","src":"3915:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9225,"nodeType":"ArrayTypeName","src":"3915:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3861:85:49"},"returnParameters":{"id":9230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9229,"mutability":"mutable","name":"invariant","nameLocation":"3978:9:49","nodeType":"VariableDeclaration","scope":9272,"src":"3970:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9228,"name":"uint256","nodeType":"ElementaryTypeName","src":"3970:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3969:19:49"},"scope":9499,"src":"3832:1063:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9324,"nodeType":"Block","src":"5698:902:49","statements":[{"expression":{"id":9287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9284,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"6333:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9285,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"6345:10:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":9286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6356:3:49","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"6345:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6333:26:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9288,"nodeType":"ExpressionStatement","src":"6333:26:49"},{"body":{"id":9314,"nodeType":"Block","src":"6424:93:49","statements":[{"expression":{"id":9312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9300,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"6438:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"id":9307,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"6484:17:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9309,"indexExpression":{"id":9308,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9290,"src":"6502:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6484:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":9303,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9279,"src":"6466:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9305,"indexExpression":{"id":9304,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9290,"src":"6475:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6466:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6478:5:49","memberName":"powUp","nodeType":"MemberAccess","referencedDeclaration":7823,"src":"6466:17:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6466:39:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9301,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"6450:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6460:5:49","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"6450:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6450:56:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6438:68:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9313,"nodeType":"ExpressionStatement","src":"6438:68:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9293,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9290,"src":"6389:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9294,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"6393:17:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6411:6:49","memberName":"length","nodeType":"MemberAccess","src":"6393:24:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6389:28:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9315,"initializationExpression":{"assignments":[9290],"declarations":[{"constant":false,"id":9290,"mutability":"mutable","name":"i","nameLocation":"6382:1:49","nodeType":"VariableDeclaration","scope":9315,"src":"6374:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9289,"name":"uint256","nodeType":"ElementaryTypeName","src":"6374:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9292,"initialValue":{"hexValue":"30","id":9291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6386:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6374:13:49"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6419:3:49","subExpression":{"id":9297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9290,"src":"6421:1:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9299,"nodeType":"ExpressionStatement","src":"6419:3:49"},"nodeType":"ForStatement","src":"6369:148:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9316,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9282,"src":"6531:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6544:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6531:14:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9323,"nodeType":"IfStatement","src":"6527:67:49","trueBody":{"id":9322,"nodeType":"Block","src":"6547:47:49","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9319,"name":"ZeroInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"6568:13:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6568:15:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9321,"nodeType":"RevertStatement","src":"6561:22:49"}]}}]},"documentation":{"id":9273,"nodeType":"StructuredDocumentation","src":"4901:637:49","text":" @notice Compute the invariant, rounding up.\n @dev The invariant functions are called by the Vault during various liquidity operations, and require a specific\n rounding direction in order to ensure safety (i.e., that the final result is always rounded in favor of the\n protocol. The invariant (i.e., all token balances) must always be greater than 0, or it will revert.\n @param normalizedWeights The pool token weights, sorted in token registration order\n @param balances The pool token balances, sorted in token registration order\n @return invariant The invariant, rounded up"},"id":9325,"implemented":true,"kind":"function","modifiers":[],"name":"computeInvariantUp","nameLocation":"5552:18:49","nodeType":"FunctionDefinition","parameters":{"id":9280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9276,"mutability":"mutable","name":"normalizedWeights","nameLocation":"5597:17:49","nodeType":"VariableDeclaration","scope":9325,"src":"5580:34:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9274,"name":"uint256","nodeType":"ElementaryTypeName","src":"5580:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9275,"nodeType":"ArrayTypeName","src":"5580:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9279,"mutability":"mutable","name":"balances","nameLocation":"5641:8:49","nodeType":"VariableDeclaration","scope":9325,"src":"5624:25:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9277,"name":"uint256","nodeType":"ElementaryTypeName","src":"5624:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9278,"nodeType":"ArrayTypeName","src":"5624:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5570:85:49"},"returnParameters":{"id":9283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9282,"mutability":"mutable","name":"invariant","nameLocation":"5687:9:49","nodeType":"VariableDeclaration","scope":9325,"src":"5679:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9281,"name":"uint256","nodeType":"ElementaryTypeName","src":"5679:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5678:19:49"},"scope":9499,"src":"5543:1057:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9372,"nodeType":"Block","src":"7289:1736:49","statements":[{"assignments":[9346],"declarations":[{"constant":false,"id":9346,"mutability":"mutable","name":"divUpOrDown","nameLocation":"8683:11:49","nodeType":"VariableDeclaration","scope":9372,"src":"8624:70:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},"typeName":{"id":9345,"nodeType":"FunctionTypeName","parameterTypes":{"id":9341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9345,"src":"8633:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9337,"name":"uint256","nodeType":"ElementaryTypeName","src":"8633:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9345,"src":"8642:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9339,"name":"uint256","nodeType":"ElementaryTypeName","src":"8642:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8632:18:49"},"returnParameterTypes":{"id":9344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9345,"src":"8674:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9342,"name":"uint256","nodeType":"ElementaryTypeName","src":"8674:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8673:9:49"},"src":"8624:70:49","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"},"visibility":"internal"},"visibility":"internal"}],"id":9355,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9347,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9332,"src":"8697:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":9348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8714:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8697:18:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":9352,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"8761:10:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":9353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8772:7:49","memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"8761:18:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8697:82:49","trueExpression":{"expression":{"id":9350,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"8730:10:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":9351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8741:5:49","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"8730:16:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8624:155:49"},{"assignments":[9357],"declarations":[{"constant":false,"id":9357,"mutability":"mutable","name":"balanceRatio","nameLocation":"8894:12:49","nodeType":"VariableDeclaration","scope":9372,"src":"8886:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9356,"name":"uint256","nodeType":"ElementaryTypeName","src":"8886:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9366,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":9361,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"8942:10:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":9362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8953:3:49","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"8942:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9363,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9330,"src":"8958:6:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9360,"name":"divUpOrDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"8930:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8930:35:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9358,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9332,"src":"8909:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8924:5:49","memberName":"powUp","nodeType":"MemberAccess","referencedDeclaration":7823,"src":"8909:20:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8909:57:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8886:80:49"},{"expression":{"arguments":[{"id":9369,"name":"balanceRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9357,"src":"9005:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9367,"name":"currentBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9328,"src":"8984:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8999:5:49","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"8984:20:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8984:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9336,"id":9371,"nodeType":"Return","src":"8977:41:49"}]},"documentation":{"id":9326,"nodeType":"StructuredDocumentation","src":"6606:500:49","text":" @notice Compute a token balance after a liquidity operation, given the current balance and invariant ratio.\n @dev This is called as part of the \"inverse invariant\" `computeBalance` calculation.\n @param currentBalance The current balance of the token\n @param weight The weight of the token\n @param invariantRatio The invariant ratio (i.e., new/old; will be > 1 for add; < 1 for remove)\n @return newBalance The adjusted token balance after the operation"},"id":9373,"implemented":true,"kind":"function","modifiers":[],"name":"computeBalanceOutGivenInvariant","nameLocation":"7120:31:49","nodeType":"FunctionDefinition","parameters":{"id":9333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9328,"mutability":"mutable","name":"currentBalance","nameLocation":"7169:14:49","nodeType":"VariableDeclaration","scope":9373,"src":"7161:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9327,"name":"uint256","nodeType":"ElementaryTypeName","src":"7161:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9330,"mutability":"mutable","name":"weight","nameLocation":"7201:6:49","nodeType":"VariableDeclaration","scope":9373,"src":"7193:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9329,"name":"uint256","nodeType":"ElementaryTypeName","src":"7193:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9332,"mutability":"mutable","name":"invariantRatio","nameLocation":"7225:14:49","nodeType":"VariableDeclaration","scope":9373,"src":"7217:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9331,"name":"uint256","nodeType":"ElementaryTypeName","src":"7217:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7151:94:49"},"returnParameters":{"id":9336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9335,"mutability":"mutable","name":"newBalance","nameLocation":"7277:10:49","nodeType":"VariableDeclaration","scope":9373,"src":"7269:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9334,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7268:20:49"},"scope":9499,"src":"7111:1914:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9434,"nodeType":"Block","src":"9762:1680:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9389,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9384,"src":"10982:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":9392,"name":"_MAX_IN_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9210,"src":"11011:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9390,"name":"balanceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"10993:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11003:7:49","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"10993:17:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10993:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10982:43:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9399,"nodeType":"IfStatement","src":"10978:93:49","trueBody":{"id":9398,"nodeType":"Block","src":"11027:44:49","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9395,"name":"MaxInRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9204,"src":"11048:10:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11048:12:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9397,"nodeType":"RevertStatement","src":"11041:19:49"}]}},{"assignments":[9401],"declarations":[{"constant":false,"id":9401,"mutability":"mutable","name":"denominator","nameLocation":"11089:11:49","nodeType":"VariableDeclaration","scope":9434,"src":"11081:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9400,"name":"uint256","nodeType":"ElementaryTypeName","src":"11081:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9405,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9402,"name":"balanceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"11103:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9403,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9384,"src":"11115:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11103:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11081:42:49"},{"assignments":[9407],"declarations":[{"constant":false,"id":9407,"mutability":"mutable","name":"base","nameLocation":"11141:4:49","nodeType":"VariableDeclaration","scope":9434,"src":"11133:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9406,"name":"uint256","nodeType":"ElementaryTypeName","src":"11133:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9412,"initialValue":{"arguments":[{"id":9410,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9401,"src":"11164:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9408,"name":"balanceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"11148:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11158:5:49","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"11148:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11148:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11133:43:49"},{"assignments":[9414],"declarations":[{"constant":false,"id":9414,"mutability":"mutable","name":"exponent","nameLocation":"11194:8:49","nodeType":"VariableDeclaration","scope":9434,"src":"11186:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9413,"name":"uint256","nodeType":"ElementaryTypeName","src":"11186:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9419,"initialValue":{"arguments":[{"id":9417,"name":"weightOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"11222:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9415,"name":"weightIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9378,"src":"11205:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11214:7:49","memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"11205:16:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11205:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11186:46:49"},{"assignments":[9421],"declarations":[{"constant":false,"id":9421,"mutability":"mutable","name":"power","nameLocation":"11250:5:49","nodeType":"VariableDeclaration","scope":9434,"src":"11242:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9420,"name":"uint256","nodeType":"ElementaryTypeName","src":"11242:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9426,"initialValue":{"arguments":[{"id":9424,"name":"exponent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9414,"src":"11269:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9422,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9407,"src":"11258:4:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11263:5:49","memberName":"powUp","nodeType":"MemberAccess","referencedDeclaration":7823,"src":"11258:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11258:20:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11242:36:49"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9429,"name":"power","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"11416:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11422:10:49","memberName":"complement","nodeType":"MemberAccess","referencedDeclaration":7833,"src":"11416:16:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11416:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9427,"name":"balanceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9380,"src":"11397:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11408:7:49","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"11397:18:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11397:38:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9388,"id":9433,"nodeType":"Return","src":"11390:45:49"}]},"documentation":{"id":9374,"nodeType":"StructuredDocumentation","src":"9031:512:49","text":" @notice Compute the `amountOut` of tokenOut in a swap, given the current balances and weights.\n @param balanceIn The current balance of `tokenIn`\n @param weightIn The weight of `tokenIn`\n @param balanceOut The current balance of `tokenOut`\n @param weightOut The weight of `tokenOut`\n @param amountIn The exact amount of `tokenIn` (i.e., the amount given in an ExactIn swap)\n @return amountOut The calculated amount of `tokenOut` returned in an ExactIn swap"},"id":9435,"implemented":true,"kind":"function","modifiers":[],"name":"computeOutGivenExactIn","nameLocation":"9557:22:49","nodeType":"FunctionDefinition","parameters":{"id":9385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9376,"mutability":"mutable","name":"balanceIn","nameLocation":"9597:9:49","nodeType":"VariableDeclaration","scope":9435,"src":"9589:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9375,"name":"uint256","nodeType":"ElementaryTypeName","src":"9589:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9378,"mutability":"mutable","name":"weightIn","nameLocation":"9624:8:49","nodeType":"VariableDeclaration","scope":9435,"src":"9616:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9377,"name":"uint256","nodeType":"ElementaryTypeName","src":"9616:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9380,"mutability":"mutable","name":"balanceOut","nameLocation":"9650:10:49","nodeType":"VariableDeclaration","scope":9435,"src":"9642:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9379,"name":"uint256","nodeType":"ElementaryTypeName","src":"9642:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9382,"mutability":"mutable","name":"weightOut","nameLocation":"9678:9:49","nodeType":"VariableDeclaration","scope":9435,"src":"9670:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9381,"name":"uint256","nodeType":"ElementaryTypeName","src":"9670:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9384,"mutability":"mutable","name":"amountIn","nameLocation":"9705:8:49","nodeType":"VariableDeclaration","scope":9435,"src":"9697:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9383,"name":"uint256","nodeType":"ElementaryTypeName","src":"9697:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9579:140:49"},"returnParameters":{"id":9388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9387,"mutability":"mutable","name":"amountOut","nameLocation":"9751:9:49","nodeType":"VariableDeclaration","scope":9435,"src":"9743:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9386,"name":"uint256","nodeType":"ElementaryTypeName","src":"9743:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9742:19:49"},"scope":9499,"src":"9548:1894:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9497,"nodeType":"Block","src":"12179:1734:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9451,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9446,"src":"13380:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":9454,"name":"_MAX_OUT_RATIO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9213,"src":"13411:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9452,"name":"balanceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9442,"src":"13392:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13403:7:49","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"13392:18:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13392:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13380:46:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9461,"nodeType":"IfStatement","src":"13376:97:49","trueBody":{"id":9460,"nodeType":"Block","src":"13428:45:49","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9457,"name":"MaxOutRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9201,"src":"13449:11:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13449:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9459,"nodeType":"RevertStatement","src":"13442:20:49"}]}},{"assignments":[9463],"declarations":[{"constant":false,"id":9463,"mutability":"mutable","name":"base","nameLocation":"13491:4:49","nodeType":"VariableDeclaration","scope":9497,"src":"13483:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9462,"name":"uint256","nodeType":"ElementaryTypeName","src":"13483:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9470,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9466,"name":"balanceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9442,"src":"13515:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9467,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9446,"src":"13528:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13515:22:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9464,"name":"balanceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9442,"src":"13498:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13509:5:49","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"13498:16:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13498:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13483:55:49"},{"assignments":[9472],"declarations":[{"constant":false,"id":9472,"mutability":"mutable","name":"exponent","nameLocation":"13556:8:49","nodeType":"VariableDeclaration","scope":9497,"src":"13548:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9471,"name":"uint256","nodeType":"ElementaryTypeName","src":"13548:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9477,"initialValue":{"arguments":[{"id":9475,"name":"weightIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9440,"src":"13583:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9473,"name":"weightOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"13567:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13577:5:49","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"13567:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13567:25:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13548:44:49"},{"assignments":[9479],"declarations":[{"constant":false,"id":9479,"mutability":"mutable","name":"power","nameLocation":"13610:5:49","nodeType":"VariableDeclaration","scope":9497,"src":"13602:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9478,"name":"uint256","nodeType":"ElementaryTypeName","src":"13602:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9484,"initialValue":{"arguments":[{"id":9482,"name":"exponent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9472,"src":"13629:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9480,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9463,"src":"13618:4:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13623:5:49","memberName":"powUp","nodeType":"MemberAccess","referencedDeclaration":7823,"src":"13618:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13618:20:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13602:36:49"},{"assignments":[9486],"declarations":[{"constant":false,"id":9486,"mutability":"mutable","name":"ratio","nameLocation":"13836:5:49","nodeType":"VariableDeclaration","scope":9497,"src":"13828:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9485,"name":"uint256","nodeType":"ElementaryTypeName","src":"13828:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9491,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9487,"name":"power","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9479,"src":"13844:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":9488,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"13852:10:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":9489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13863:3:49","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"13852:14:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13844:22:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13828:38:49"},{"expression":{"arguments":[{"id":9494,"name":"ratio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"13900:5:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9492,"name":"balanceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9438,"src":"13884:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13894:5:49","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"13884:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13884:22:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9450,"id":9496,"nodeType":"Return","src":"13877:29:49"}]},"documentation":{"id":9436,"nodeType":"StructuredDocumentation","src":"11448:512:49","text":" @notice Compute the `amountIn` of tokenIn in a swap, given the current balances and weights.\n @param balanceIn The current balance of `tokenIn`\n @param weightIn The weight of `tokenIn`\n @param balanceOut The current balance of `tokenOut`\n @param weightOut The weight of `tokenOut`\n @param amountOut The exact amount of `tokenOut` (i.e., the amount given in an ExactOut swap)\n @return amountIn The calculated amount of `tokenIn` returned in an ExactOut swap"},"id":9498,"implemented":true,"kind":"function","modifiers":[],"name":"computeInGivenExactOut","nameLocation":"11974:22:49","nodeType":"FunctionDefinition","parameters":{"id":9447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9438,"mutability":"mutable","name":"balanceIn","nameLocation":"12014:9:49","nodeType":"VariableDeclaration","scope":9498,"src":"12006:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9437,"name":"uint256","nodeType":"ElementaryTypeName","src":"12006:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9440,"mutability":"mutable","name":"weightIn","nameLocation":"12041:8:49","nodeType":"VariableDeclaration","scope":9498,"src":"12033:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9439,"name":"uint256","nodeType":"ElementaryTypeName","src":"12033:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9442,"mutability":"mutable","name":"balanceOut","nameLocation":"12067:10:49","nodeType":"VariableDeclaration","scope":9498,"src":"12059:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9441,"name":"uint256","nodeType":"ElementaryTypeName","src":"12059:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9444,"mutability":"mutable","name":"weightOut","nameLocation":"12095:9:49","nodeType":"VariableDeclaration","scope":9498,"src":"12087:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9443,"name":"uint256","nodeType":"ElementaryTypeName","src":"12087:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9446,"mutability":"mutable","name":"amountOut","nameLocation":"12122:9:49","nodeType":"VariableDeclaration","scope":9498,"src":"12114:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9445,"name":"uint256","nodeType":"ElementaryTypeName","src":"12114:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11996:141:49"},"returnParameters":{"id":9450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9449,"mutability":"mutable","name":"amountIn","nameLocation":"12169:8:49","nodeType":"VariableDeclaration","scope":9498,"src":"12161:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9448,"name":"uint256","nodeType":"ElementaryTypeName","src":"12161:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12160:18:49"},"scope":9499,"src":"11965:1948:49","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9500,"src":"660:13255:49","usedErrors":[9201,9204,9207],"usedEvents":[]}],"src":"46:13870:49"},"id":49},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol","exportedSymbols":{"ReentrancyGuardTransient":[9568],"StorageSlotExtension":[9911]},"id":9569,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9501,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"33:24:50"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"./StorageSlotExtension.sol","id":9503,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9569,"sourceUnit":9912,"src":"59:66:50","symbolAliases":[{"foreign":{"id":9502,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"68:20:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuardTransient","contractDependencies":[],"contractKind":"contract","documentation":{"id":9504,"nodeType":"StructuredDocumentation","src":"127:155:50","text":" @notice Variant of {ReentrancyGuard} that uses transient storage.\n @dev NOTE: This variant only works on networks where EIP-1153 is available."},"fullyImplemented":true,"id":9568,"linearizedBaseContracts":[9568],"name":"ReentrancyGuardTransient","nameLocation":"301:24:50","nodeType":"ContractDefinition","nodes":[{"global":false,"id":9506,"libraryName":{"id":9505,"name":"StorageSlotExtension","nameLocations":["338:20:50"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"338:20:50"},"nodeType":"UsingForDirective","src":"332:33:50"},{"constant":true,"id":9509,"mutability":"constant","name":"_REENTRANCY_GUARD_STORAGE","nameLocation":"515:25:50","nodeType":"VariableDeclaration","scope":9568,"src":"490:127:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9507,"name":"bytes32","nodeType":"ElementaryTypeName","src":"490:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":9508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"551:66:50","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"documentation":{"id":9510,"nodeType":"StructuredDocumentation","src":"624:40:50","text":"@notice Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":9512,"name":"ReentrancyGuardReentrantCall","nameLocation":"675:28:50","nodeType":"ErrorDefinition","parameters":{"id":9511,"nodeType":"ParameterList","parameters":[],"src":"703:2:50"},"src":"669:37:50"},{"body":{"id":9522,"nodeType":"Block","src":"1107:79:50","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9515,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9542,"src":"1117:19:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1117:21:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9517,"nodeType":"ExpressionStatement","src":"1117:21:50"},{"id":9518,"nodeType":"PlaceholderStatement","src":"1148:1:50"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9519,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9554,"src":"1159:18:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1159:20:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9521,"nodeType":"ExpressionStatement","src":"1159:20:50"}]},"documentation":{"id":9513,"nodeType":"StructuredDocumentation","src":"712:366:50","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":9523,"name":"nonReentrant","nameLocation":"1092:12:50","nodeType":"ModifierDefinition","parameters":{"id":9514,"nodeType":"ParameterList","parameters":[],"src":"1104:2:50"},"src":"1083:103:50","virtual":false,"visibility":"internal"},{"body":{"id":9541,"nodeType":"Block","src":"1231:310:50","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":9526,"name":"_reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9567,"src":"1320:23:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1320:25:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9532,"nodeType":"IfStatement","src":"1316:93:50","trueBody":{"id":9531,"nodeType":"Block","src":"1347:62:50","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9528,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9512,"src":"1368:28:50","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1368:30:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9530,"nodeType":"RevertStatement","src":"1361:37:50"}]}},{"expression":{"arguments":[{"hexValue":"74727565","id":9538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1529:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9533,"name":"_REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9509,"src":"1484:25:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":9535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1510:9:50","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":9749,"src":"1484:35:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":9536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1484:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":9537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1522:6:50","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"1484:44:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":9539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1484:50:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9540,"nodeType":"ExpressionStatement","src":"1484:50:50"}]},"id":9542,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"1201:19:50","nodeType":"FunctionDefinition","parameters":{"id":9524,"nodeType":"ParameterList","parameters":[],"src":"1220:2:50"},"returnParameters":{"id":9525,"nodeType":"ParameterList","parameters":[],"src":"1231:0:50"},"scope":9568,"src":"1192:349:50","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9553,"nodeType":"Block","src":"1585:68:50","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":9550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1640:5:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9545,"name":"_REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9509,"src":"1595:25:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":9547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1621:9:50","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":9749,"src":"1595:35:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":9548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1595:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":9549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1633:6:50","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"1595:44:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":9551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1595:51:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9552,"nodeType":"ExpressionStatement","src":"1595:51:50"}]},"id":9554,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"1556:18:50","nodeType":"FunctionDefinition","parameters":{"id":9543,"nodeType":"ParameterList","parameters":[],"src":"1574:2:50"},"returnParameters":{"id":9544,"nodeType":"ParameterList","parameters":[],"src":"1585:0:50"},"scope":9568,"src":"1547:106:50","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9566,"nodeType":"Block","src":"1896:69:50","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9560,"name":"_REENTRANCY_GUARD_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9509,"src":"1913:25:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":9561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1939:9:50","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":9749,"src":"1913:35:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":9562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1913:37:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":9563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1951:5:50","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"1913:43:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlotType_$9734_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType) view returns (bool)"}},"id":9564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1913:45:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9559,"id":9565,"nodeType":"Return","src":"1906:52:50"}]},"documentation":{"id":9555,"nodeType":"StructuredDocumentation","src":"1659:168:50","text":" @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack."},"id":9567,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"1841:23:50","nodeType":"FunctionDefinition","parameters":{"id":9556,"nodeType":"ParameterList","parameters":[],"src":"1864:2:50"},"returnParameters":{"id":9559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9567,"src":"1890:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9557,"name":"bool","nodeType":"ElementaryTypeName","src":"1890:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1889:6:50"},"scope":9568,"src":"1832:133:50","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":9569,"src":"283:1684:50","usedErrors":[9512],"usedEvents":[]}],"src":"33:1935:50"},"id":50},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol","exportedSymbols":{"SlotDerivation":[9698]},"id":9699,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9570,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"277:24:51"},{"abstract":false,"baseContracts":[],"canonicalName":"SlotDerivation","contractDependencies":[],"contractKind":"library","documentation":{"id":9571,"nodeType":"StructuredDocumentation","src":"303:1348:51","text":" @notice Library for computing storage (and transient storage) locations from namespaces and deriving slots\n corresponding to standard patterns.\n @dev The derivation method for array and mapping matches the storage layout used by the solidity language/compiler.\n See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.].\n Example usage:\n ```solidity\n contract Example {\n // Add the library methods\n using StorageSlot for bytes32;\n using SlotDerivation for bytes32;\n // Declare a namespace\n string private constant _NAMESPACE = \"\" // eg. OpenZeppelin.Slot\n function setValueInNamespace(uint256 key, address newValue) internal {\n _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue;\n }\n function getValueInNamespace(uint256 key) internal view returns (address) {\n return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value;\n }\n }\n ```\n TIP: Consider using this library along with {StorageSlot}.\n NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking\n upgrade safety will ignore the slots accessed through this library."},"fullyImplemented":true,"id":9698,"linearizedBaseContracts":[9698],"name":"SlotDerivation","nameLocation":"1660:14:51","nodeType":"ContractDefinition","nodes":[{"body":{"id":9580,"nodeType":"Block","src":"1828:221:51","statements":[{"AST":{"nativeSrc":"1890:153:51","nodeType":"YulBlock","src":"1890:153:51","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1911:4:51","nodeType":"YulLiteral","src":"1911:4:51","type":"","value":"0x00"},{"arguments":[{"arguments":[{"arguments":[{"name":"namespace","nativeSrc":"1935:9:51","nodeType":"YulIdentifier","src":"1935:9:51"},{"kind":"number","nativeSrc":"1946:4:51","nodeType":"YulLiteral","src":"1946:4:51","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1931:3:51","nodeType":"YulIdentifier","src":"1931:3:51"},"nativeSrc":"1931:20:51","nodeType":"YulFunctionCall","src":"1931:20:51"},{"arguments":[{"name":"namespace","nativeSrc":"1959:9:51","nodeType":"YulIdentifier","src":"1959:9:51"}],"functionName":{"name":"mload","nativeSrc":"1953:5:51","nodeType":"YulIdentifier","src":"1953:5:51"},"nativeSrc":"1953:16:51","nodeType":"YulFunctionCall","src":"1953:16:51"}],"functionName":{"name":"keccak256","nativeSrc":"1921:9:51","nodeType":"YulIdentifier","src":"1921:9:51"},"nativeSrc":"1921:49:51","nodeType":"YulFunctionCall","src":"1921:49:51"},{"kind":"number","nativeSrc":"1972:1:51","nodeType":"YulLiteral","src":"1972:1:51","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1917:3:51","nodeType":"YulIdentifier","src":"1917:3:51"},"nativeSrc":"1917:57:51","nodeType":"YulFunctionCall","src":"1917:57:51"}],"functionName":{"name":"mstore","nativeSrc":"1904:6:51","nodeType":"YulIdentifier","src":"1904:6:51"},"nativeSrc":"1904:71:51","nodeType":"YulFunctionCall","src":"1904:71:51"},"nativeSrc":"1904:71:51","nodeType":"YulExpressionStatement","src":"1904:71:51"},{"nativeSrc":"1988:45:51","nodeType":"YulAssignment","src":"1988:45:51","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2010:4:51","nodeType":"YulLiteral","src":"2010:4:51","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2016:4:51","nodeType":"YulLiteral","src":"2016:4:51","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2000:9:51","nodeType":"YulIdentifier","src":"2000:9:51"},"nativeSrc":"2000:21:51","nodeType":"YulFunctionCall","src":"2000:21:51"},{"arguments":[{"kind":"number","nativeSrc":"2027:4:51","nodeType":"YulLiteral","src":"2027:4:51","type":"","value":"0xff"}],"functionName":{"name":"not","nativeSrc":"2023:3:51","nodeType":"YulIdentifier","src":"2023:3:51"},"nativeSrc":"2023:9:51","nodeType":"YulFunctionCall","src":"2023:9:51"}],"functionName":{"name":"and","nativeSrc":"1996:3:51","nodeType":"YulIdentifier","src":"1996:3:51"},"nativeSrc":"1996:37:51","nodeType":"YulFunctionCall","src":"1996:37:51"},"variableNames":[{"name":"slot","nativeSrc":"1988:4:51","nodeType":"YulIdentifier","src":"1988:4:51"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9574,"isOffset":false,"isSlot":false,"src":"1935:9:51","valueSize":1},{"declaration":9574,"isOffset":false,"isSlot":false,"src":"1959:9:51","valueSize":1},{"declaration":9577,"isOffset":false,"isSlot":false,"src":"1988:4:51","valueSize":1}],"id":9579,"nodeType":"InlineAssembly","src":"1881:162:51"}]},"documentation":{"id":9572,"nodeType":"StructuredDocumentation","src":"1681:59:51","text":"@dev Derive an ERC-7201 slot from a string (namespace)."},"id":9581,"implemented":true,"kind":"function","modifiers":[],"name":"erc7201Slot","nameLocation":"1754:11:51","nodeType":"FunctionDefinition","parameters":{"id":9575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9574,"mutability":"mutable","name":"namespace","nameLocation":"1780:9:51","nodeType":"VariableDeclaration","scope":9581,"src":"1766:23:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9573,"name":"string","nodeType":"ElementaryTypeName","src":"1766:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1765:25:51"},"returnParameters":{"id":9578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9577,"mutability":"mutable","name":"slot","nameLocation":"1822:4:51","nodeType":"VariableDeclaration","scope":9581,"src":"1814:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1814:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1813:14:51"},"scope":9698,"src":"1745:304:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9602,"nodeType":"Block","src":"2226:86:51","statements":[{"id":9601,"nodeType":"UncheckedBlock","src":"2236:70:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9595,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9584,"src":"2283:4:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":9594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2275:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9593,"name":"uint256","nodeType":"ElementaryTypeName","src":"2275:7:51","typeDescriptions":{}}},"id":9596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2275:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9597,"name":"pos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9586,"src":"2291:3:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2275:19:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2267:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":9591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2267:7:51","typeDescriptions":{}}},"id":9599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2267:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":9590,"id":9600,"nodeType":"Return","src":"2260:35:51"}]}]},"documentation":{"id":9582,"nodeType":"StructuredDocumentation","src":"2055:84:51","text":"@dev Add an offset to a slot to get the n-th element of a structure or an array."},"id":9603,"implemented":true,"kind":"function","modifiers":[],"name":"offset","nameLocation":"2153:6:51","nodeType":"FunctionDefinition","parameters":{"id":9587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9584,"mutability":"mutable","name":"slot","nameLocation":"2168:4:51","nodeType":"VariableDeclaration","scope":9603,"src":"2160:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2160:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9586,"mutability":"mutable","name":"pos","nameLocation":"2182:3:51","nodeType":"VariableDeclaration","scope":9603,"src":"2174:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9585,"name":"uint256","nodeType":"ElementaryTypeName","src":"2174:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2159:27:51"},"returnParameters":{"id":9590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9589,"mutability":"mutable","name":"result","nameLocation":"2218:6:51","nodeType":"VariableDeclaration","scope":9603,"src":"2210:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9588,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2210:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2209:16:51"},"scope":9698,"src":"2144:168:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9612,"nodeType":"Block","src":"2500:154:51","statements":[{"AST":{"nativeSrc":"2562:86:51","nodeType":"YulBlock","src":"2562:86:51","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2583:4:51","nodeType":"YulLiteral","src":"2583:4:51","type":"","value":"0x00"},{"name":"slot","nativeSrc":"2589:4:51","nodeType":"YulIdentifier","src":"2589:4:51"}],"functionName":{"name":"mstore","nativeSrc":"2576:6:51","nodeType":"YulIdentifier","src":"2576:6:51"},"nativeSrc":"2576:18:51","nodeType":"YulFunctionCall","src":"2576:18:51"},"nativeSrc":"2576:18:51","nodeType":"YulExpressionStatement","src":"2576:18:51"},{"nativeSrc":"2607:31:51","nodeType":"YulAssignment","src":"2607:31:51","value":{"arguments":[{"kind":"number","nativeSrc":"2627:4:51","nodeType":"YulLiteral","src":"2627:4:51","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2633:4:51","nodeType":"YulLiteral","src":"2633:4:51","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2617:9:51","nodeType":"YulIdentifier","src":"2617:9:51"},"nativeSrc":"2617:21:51","nodeType":"YulFunctionCall","src":"2617:21:51"},"variableNames":[{"name":"result","nativeSrc":"2607:6:51","nodeType":"YulIdentifier","src":"2607:6:51"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9609,"isOffset":false,"isSlot":false,"src":"2607:6:51","valueSize":1},{"declaration":9606,"isOffset":false,"isSlot":false,"src":"2589:4:51","valueSize":1}],"id":9611,"nodeType":"InlineAssembly","src":"2553:95:51"}]},"documentation":{"id":9604,"nodeType":"StructuredDocumentation","src":"2318:103:51","text":"@dev Derive the location of the first element in an array from the slot where the length is stored."},"id":9613,"implemented":true,"kind":"function","modifiers":[],"name":"deriveArray","nameLocation":"2435:11:51","nodeType":"FunctionDefinition","parameters":{"id":9607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9606,"mutability":"mutable","name":"slot","nameLocation":"2455:4:51","nodeType":"VariableDeclaration","scope":9613,"src":"2447:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:14:51"},"returnParameters":{"id":9610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9609,"mutability":"mutable","name":"result","nameLocation":"2492:6:51","nodeType":"VariableDeclaration","scope":9613,"src":"2484:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2484:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2483:16:51"},"scope":9698,"src":"2426:228:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9624,"nodeType":"Block","src":"2817:184:51","statements":[{"AST":{"nativeSrc":"2879:116:51","nodeType":"YulBlock","src":"2879:116:51","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2900:4:51","nodeType":"YulLiteral","src":"2900:4:51","type":"","value":"0x00"},{"name":"key","nativeSrc":"2906:3:51","nodeType":"YulIdentifier","src":"2906:3:51"}],"functionName":{"name":"mstore","nativeSrc":"2893:6:51","nodeType":"YulIdentifier","src":"2893:6:51"},"nativeSrc":"2893:17:51","nodeType":"YulFunctionCall","src":"2893:17:51"},"nativeSrc":"2893:17:51","nodeType":"YulExpressionStatement","src":"2893:17:51"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2930:4:51","nodeType":"YulLiteral","src":"2930:4:51","type":"","value":"0x20"},{"name":"slot","nativeSrc":"2936:4:51","nodeType":"YulIdentifier","src":"2936:4:51"}],"functionName":{"name":"mstore","nativeSrc":"2923:6:51","nodeType":"YulIdentifier","src":"2923:6:51"},"nativeSrc":"2923:18:51","nodeType":"YulFunctionCall","src":"2923:18:51"},"nativeSrc":"2923:18:51","nodeType":"YulExpressionStatement","src":"2923:18:51"},{"nativeSrc":"2954:31:51","nodeType":"YulAssignment","src":"2954:31:51","value":{"arguments":[{"kind":"number","nativeSrc":"2974:4:51","nodeType":"YulLiteral","src":"2974:4:51","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2980:4:51","nodeType":"YulLiteral","src":"2980:4:51","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"2964:9:51","nodeType":"YulIdentifier","src":"2964:9:51"},"nativeSrc":"2964:21:51","nodeType":"YulFunctionCall","src":"2964:21:51"},"variableNames":[{"name":"result","nativeSrc":"2954:6:51","nodeType":"YulIdentifier","src":"2954:6:51"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9618,"isOffset":false,"isSlot":false,"src":"2906:3:51","valueSize":1},{"declaration":9621,"isOffset":false,"isSlot":false,"src":"2954:6:51","valueSize":1},{"declaration":9616,"isOffset":false,"isSlot":false,"src":"2936:4:51","valueSize":1}],"id":9623,"nodeType":"InlineAssembly","src":"2870:125:51"}]},"documentation":{"id":9614,"nodeType":"StructuredDocumentation","src":"2660:63:51","text":"@dev Derive the location of a mapping element from the key."},"id":9625,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"2737:13:51","nodeType":"FunctionDefinition","parameters":{"id":9619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9616,"mutability":"mutable","name":"slot","nameLocation":"2759:4:51","nodeType":"VariableDeclaration","scope":9625,"src":"2751:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2751:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9618,"mutability":"mutable","name":"key","nameLocation":"2773:3:51","nodeType":"VariableDeclaration","scope":9625,"src":"2765:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9617,"name":"address","nodeType":"ElementaryTypeName","src":"2765:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2750:27:51"},"returnParameters":{"id":9622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9621,"mutability":"mutable","name":"result","nameLocation":"2809:6:51","nodeType":"VariableDeclaration","scope":9625,"src":"2801:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2801:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2800:16:51"},"scope":9698,"src":"2728:273:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9636,"nodeType":"Block","src":"3161:184:51","statements":[{"AST":{"nativeSrc":"3223:116:51","nodeType":"YulBlock","src":"3223:116:51","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3244:4:51","nodeType":"YulLiteral","src":"3244:4:51","type":"","value":"0x00"},{"name":"key","nativeSrc":"3250:3:51","nodeType":"YulIdentifier","src":"3250:3:51"}],"functionName":{"name":"mstore","nativeSrc":"3237:6:51","nodeType":"YulIdentifier","src":"3237:6:51"},"nativeSrc":"3237:17:51","nodeType":"YulFunctionCall","src":"3237:17:51"},"nativeSrc":"3237:17:51","nodeType":"YulExpressionStatement","src":"3237:17:51"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3274:4:51","nodeType":"YulLiteral","src":"3274:4:51","type":"","value":"0x20"},{"name":"slot","nativeSrc":"3280:4:51","nodeType":"YulIdentifier","src":"3280:4:51"}],"functionName":{"name":"mstore","nativeSrc":"3267:6:51","nodeType":"YulIdentifier","src":"3267:6:51"},"nativeSrc":"3267:18:51","nodeType":"YulFunctionCall","src":"3267:18:51"},"nativeSrc":"3267:18:51","nodeType":"YulExpressionStatement","src":"3267:18:51"},{"nativeSrc":"3298:31:51","nodeType":"YulAssignment","src":"3298:31:51","value":{"arguments":[{"kind":"number","nativeSrc":"3318:4:51","nodeType":"YulLiteral","src":"3318:4:51","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3324:4:51","nodeType":"YulLiteral","src":"3324:4:51","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"3308:9:51","nodeType":"YulIdentifier","src":"3308:9:51"},"nativeSrc":"3308:21:51","nodeType":"YulFunctionCall","src":"3308:21:51"},"variableNames":[{"name":"result","nativeSrc":"3298:6:51","nodeType":"YulIdentifier","src":"3298:6:51"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9630,"isOffset":false,"isSlot":false,"src":"3250:3:51","valueSize":1},{"declaration":9633,"isOffset":false,"isSlot":false,"src":"3298:6:51","valueSize":1},{"declaration":9628,"isOffset":false,"isSlot":false,"src":"3280:4:51","valueSize":1}],"id":9635,"nodeType":"InlineAssembly","src":"3214:125:51"}]},"documentation":{"id":9626,"nodeType":"StructuredDocumentation","src":"3007:63:51","text":"@dev Derive the location of a mapping element from the key."},"id":9637,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"3084:13:51","nodeType":"FunctionDefinition","parameters":{"id":9631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9628,"mutability":"mutable","name":"slot","nameLocation":"3106:4:51","nodeType":"VariableDeclaration","scope":9637,"src":"3098:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9627,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9630,"mutability":"mutable","name":"key","nameLocation":"3117:3:51","nodeType":"VariableDeclaration","scope":9637,"src":"3112:8:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9629,"name":"bool","nodeType":"ElementaryTypeName","src":"3112:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3097:24:51"},"returnParameters":{"id":9634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9633,"mutability":"mutable","name":"result","nameLocation":"3153:6:51","nodeType":"VariableDeclaration","scope":9637,"src":"3145:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3145:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3144:16:51"},"scope":9698,"src":"3075:270:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9648,"nodeType":"Block","src":"3508:184:51","statements":[{"AST":{"nativeSrc":"3570:116:51","nodeType":"YulBlock","src":"3570:116:51","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3591:4:51","nodeType":"YulLiteral","src":"3591:4:51","type":"","value":"0x00"},{"name":"key","nativeSrc":"3597:3:51","nodeType":"YulIdentifier","src":"3597:3:51"}],"functionName":{"name":"mstore","nativeSrc":"3584:6:51","nodeType":"YulIdentifier","src":"3584:6:51"},"nativeSrc":"3584:17:51","nodeType":"YulFunctionCall","src":"3584:17:51"},"nativeSrc":"3584:17:51","nodeType":"YulExpressionStatement","src":"3584:17:51"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3621:4:51","nodeType":"YulLiteral","src":"3621:4:51","type":"","value":"0x20"},{"name":"slot","nativeSrc":"3627:4:51","nodeType":"YulIdentifier","src":"3627:4:51"}],"functionName":{"name":"mstore","nativeSrc":"3614:6:51","nodeType":"YulIdentifier","src":"3614:6:51"},"nativeSrc":"3614:18:51","nodeType":"YulFunctionCall","src":"3614:18:51"},"nativeSrc":"3614:18:51","nodeType":"YulExpressionStatement","src":"3614:18:51"},{"nativeSrc":"3645:31:51","nodeType":"YulAssignment","src":"3645:31:51","value":{"arguments":[{"kind":"number","nativeSrc":"3665:4:51","nodeType":"YulLiteral","src":"3665:4:51","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3671:4:51","nodeType":"YulLiteral","src":"3671:4:51","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"3655:9:51","nodeType":"YulIdentifier","src":"3655:9:51"},"nativeSrc":"3655:21:51","nodeType":"YulFunctionCall","src":"3655:21:51"},"variableNames":[{"name":"result","nativeSrc":"3645:6:51","nodeType":"YulIdentifier","src":"3645:6:51"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9642,"isOffset":false,"isSlot":false,"src":"3597:3:51","valueSize":1},{"declaration":9645,"isOffset":false,"isSlot":false,"src":"3645:6:51","valueSize":1},{"declaration":9640,"isOffset":false,"isSlot":false,"src":"3627:4:51","valueSize":1}],"id":9647,"nodeType":"InlineAssembly","src":"3561:125:51"}]},"documentation":{"id":9638,"nodeType":"StructuredDocumentation","src":"3351:63:51","text":"@dev Derive the location of a mapping element from the key."},"id":9649,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"3428:13:51","nodeType":"FunctionDefinition","parameters":{"id":9643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9640,"mutability":"mutable","name":"slot","nameLocation":"3450:4:51","nodeType":"VariableDeclaration","scope":9649,"src":"3442:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9639,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3442:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9642,"mutability":"mutable","name":"key","nameLocation":"3464:3:51","nodeType":"VariableDeclaration","scope":9649,"src":"3456:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9641,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3456:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3441:27:51"},"returnParameters":{"id":9646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9645,"mutability":"mutable","name":"result","nameLocation":"3500:6:51","nodeType":"VariableDeclaration","scope":9649,"src":"3492:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3492:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3491:16:51"},"scope":9698,"src":"3419:273:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9660,"nodeType":"Block","src":"3855:184:51","statements":[{"AST":{"nativeSrc":"3917:116:51","nodeType":"YulBlock","src":"3917:116:51","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3938:4:51","nodeType":"YulLiteral","src":"3938:4:51","type":"","value":"0x00"},{"name":"key","nativeSrc":"3944:3:51","nodeType":"YulIdentifier","src":"3944:3:51"}],"functionName":{"name":"mstore","nativeSrc":"3931:6:51","nodeType":"YulIdentifier","src":"3931:6:51"},"nativeSrc":"3931:17:51","nodeType":"YulFunctionCall","src":"3931:17:51"},"nativeSrc":"3931:17:51","nodeType":"YulExpressionStatement","src":"3931:17:51"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3968:4:51","nodeType":"YulLiteral","src":"3968:4:51","type":"","value":"0x20"},{"name":"slot","nativeSrc":"3974:4:51","nodeType":"YulIdentifier","src":"3974:4:51"}],"functionName":{"name":"mstore","nativeSrc":"3961:6:51","nodeType":"YulIdentifier","src":"3961:6:51"},"nativeSrc":"3961:18:51","nodeType":"YulFunctionCall","src":"3961:18:51"},"nativeSrc":"3961:18:51","nodeType":"YulExpressionStatement","src":"3961:18:51"},{"nativeSrc":"3992:31:51","nodeType":"YulAssignment","src":"3992:31:51","value":{"arguments":[{"kind":"number","nativeSrc":"4012:4:51","nodeType":"YulLiteral","src":"4012:4:51","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4018:4:51","nodeType":"YulLiteral","src":"4018:4:51","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"4002:9:51","nodeType":"YulIdentifier","src":"4002:9:51"},"nativeSrc":"4002:21:51","nodeType":"YulFunctionCall","src":"4002:21:51"},"variableNames":[{"name":"result","nativeSrc":"3992:6:51","nodeType":"YulIdentifier","src":"3992:6:51"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9654,"isOffset":false,"isSlot":false,"src":"3944:3:51","valueSize":1},{"declaration":9657,"isOffset":false,"isSlot":false,"src":"3992:6:51","valueSize":1},{"declaration":9652,"isOffset":false,"isSlot":false,"src":"3974:4:51","valueSize":1}],"id":9659,"nodeType":"InlineAssembly","src":"3908:125:51"}]},"documentation":{"id":9650,"nodeType":"StructuredDocumentation","src":"3698:63:51","text":"@dev Derive the location of a mapping element from the key."},"id":9661,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"3775:13:51","nodeType":"FunctionDefinition","parameters":{"id":9655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9652,"mutability":"mutable","name":"slot","nameLocation":"3797:4:51","nodeType":"VariableDeclaration","scope":9661,"src":"3789:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9651,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3789:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9654,"mutability":"mutable","name":"key","nameLocation":"3811:3:51","nodeType":"VariableDeclaration","scope":9661,"src":"3803:11:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9653,"name":"uint256","nodeType":"ElementaryTypeName","src":"3803:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3788:27:51"},"returnParameters":{"id":9658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9657,"mutability":"mutable","name":"result","nameLocation":"3847:6:51","nodeType":"VariableDeclaration","scope":9661,"src":"3839:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9656,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3839:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3838:16:51"},"scope":9698,"src":"3766:273:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9672,"nodeType":"Block","src":"4201:184:51","statements":[{"AST":{"nativeSrc":"4263:116:51","nodeType":"YulBlock","src":"4263:116:51","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4284:4:51","nodeType":"YulLiteral","src":"4284:4:51","type":"","value":"0x00"},{"name":"key","nativeSrc":"4290:3:51","nodeType":"YulIdentifier","src":"4290:3:51"}],"functionName":{"name":"mstore","nativeSrc":"4277:6:51","nodeType":"YulIdentifier","src":"4277:6:51"},"nativeSrc":"4277:17:51","nodeType":"YulFunctionCall","src":"4277:17:51"},"nativeSrc":"4277:17:51","nodeType":"YulExpressionStatement","src":"4277:17:51"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4314:4:51","nodeType":"YulLiteral","src":"4314:4:51","type":"","value":"0x20"},{"name":"slot","nativeSrc":"4320:4:51","nodeType":"YulIdentifier","src":"4320:4:51"}],"functionName":{"name":"mstore","nativeSrc":"4307:6:51","nodeType":"YulIdentifier","src":"4307:6:51"},"nativeSrc":"4307:18:51","nodeType":"YulFunctionCall","src":"4307:18:51"},"nativeSrc":"4307:18:51","nodeType":"YulExpressionStatement","src":"4307:18:51"},{"nativeSrc":"4338:31:51","nodeType":"YulAssignment","src":"4338:31:51","value":{"arguments":[{"kind":"number","nativeSrc":"4358:4:51","nodeType":"YulLiteral","src":"4358:4:51","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4364:4:51","nodeType":"YulLiteral","src":"4364:4:51","type":"","value":"0x40"}],"functionName":{"name":"keccak256","nativeSrc":"4348:9:51","nodeType":"YulIdentifier","src":"4348:9:51"},"nativeSrc":"4348:21:51","nodeType":"YulFunctionCall","src":"4348:21:51"},"variableNames":[{"name":"result","nativeSrc":"4338:6:51","nodeType":"YulIdentifier","src":"4338:6:51"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9666,"isOffset":false,"isSlot":false,"src":"4290:3:51","valueSize":1},{"declaration":9669,"isOffset":false,"isSlot":false,"src":"4338:6:51","valueSize":1},{"declaration":9664,"isOffset":false,"isSlot":false,"src":"4320:4:51","valueSize":1}],"id":9671,"nodeType":"InlineAssembly","src":"4254:125:51"}]},"documentation":{"id":9662,"nodeType":"StructuredDocumentation","src":"4045:63:51","text":"@dev Derive the location of a mapping element from the key."},"id":9673,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"4122:13:51","nodeType":"FunctionDefinition","parameters":{"id":9667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9664,"mutability":"mutable","name":"slot","nameLocation":"4144:4:51","nodeType":"VariableDeclaration","scope":9673,"src":"4136:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9663,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4136:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9666,"mutability":"mutable","name":"key","nameLocation":"4157:3:51","nodeType":"VariableDeclaration","scope":9673,"src":"4150:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9665,"name":"int256","nodeType":"ElementaryTypeName","src":"4150:6:51","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4135:26:51"},"returnParameters":{"id":9670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9669,"mutability":"mutable","name":"result","nameLocation":"4193:6:51","nodeType":"VariableDeclaration","scope":9673,"src":"4185:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9668,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4185:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4184:16:51"},"scope":9698,"src":"4113:272:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9684,"nodeType":"Block","src":"4554:353:51","statements":[{"AST":{"nativeSrc":"4616:285:51","nodeType":"YulBlock","src":"4616:285:51","statements":[{"nativeSrc":"4630:24:51","nodeType":"YulVariableDeclaration","src":"4630:24:51","value":{"arguments":[{"name":"key","nativeSrc":"4650:3:51","nodeType":"YulIdentifier","src":"4650:3:51"}],"functionName":{"name":"mload","nativeSrc":"4644:5:51","nodeType":"YulIdentifier","src":"4644:5:51"},"nativeSrc":"4644:10:51","nodeType":"YulFunctionCall","src":"4644:10:51"},"variables":[{"name":"length","nativeSrc":"4634:6:51","nodeType":"YulTypedName","src":"4634:6:51","type":""}]},{"nativeSrc":"4667:27:51","nodeType":"YulVariableDeclaration","src":"4667:27:51","value":{"arguments":[{"name":"key","nativeSrc":"4684:3:51","nodeType":"YulIdentifier","src":"4684:3:51"},{"kind":"number","nativeSrc":"4689:4:51","nodeType":"YulLiteral","src":"4689:4:51","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4680:3:51","nodeType":"YulIdentifier","src":"4680:3:51"},"nativeSrc":"4680:14:51","nodeType":"YulFunctionCall","src":"4680:14:51"},"variables":[{"name":"begin","nativeSrc":"4671:5:51","nodeType":"YulTypedName","src":"4671:5:51","type":""}]},{"nativeSrc":"4707:29:51","nodeType":"YulVariableDeclaration","src":"4707:29:51","value":{"arguments":[{"name":"begin","nativeSrc":"4722:5:51","nodeType":"YulIdentifier","src":"4722:5:51"},{"name":"length","nativeSrc":"4729:6:51","nodeType":"YulIdentifier","src":"4729:6:51"}],"functionName":{"name":"add","nativeSrc":"4718:3:51","nodeType":"YulIdentifier","src":"4718:3:51"},"nativeSrc":"4718:18:51","nodeType":"YulFunctionCall","src":"4718:18:51"},"variables":[{"name":"end","nativeSrc":"4711:3:51","nodeType":"YulTypedName","src":"4711:3:51","type":""}]},{"nativeSrc":"4749:23:51","nodeType":"YulVariableDeclaration","src":"4749:23:51","value":{"arguments":[{"name":"end","nativeSrc":"4768:3:51","nodeType":"YulIdentifier","src":"4768:3:51"}],"functionName":{"name":"mload","nativeSrc":"4762:5:51","nodeType":"YulIdentifier","src":"4762:5:51"},"nativeSrc":"4762:10:51","nodeType":"YulFunctionCall","src":"4762:10:51"},"variables":[{"name":"cache","nativeSrc":"4753:5:51","nodeType":"YulTypedName","src":"4753:5:51","type":""}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"4792:3:51","nodeType":"YulIdentifier","src":"4792:3:51"},{"name":"slot","nativeSrc":"4797:4:51","nodeType":"YulIdentifier","src":"4797:4:51"}],"functionName":{"name":"mstore","nativeSrc":"4785:6:51","nodeType":"YulIdentifier","src":"4785:6:51"},"nativeSrc":"4785:17:51","nodeType":"YulFunctionCall","src":"4785:17:51"},"nativeSrc":"4785:17:51","nodeType":"YulExpressionStatement","src":"4785:17:51"},{"nativeSrc":"4815:45:51","nodeType":"YulAssignment","src":"4815:45:51","value":{"arguments":[{"name":"begin","nativeSrc":"4835:5:51","nodeType":"YulIdentifier","src":"4835:5:51"},{"arguments":[{"name":"length","nativeSrc":"4846:6:51","nodeType":"YulIdentifier","src":"4846:6:51"},{"kind":"number","nativeSrc":"4854:4:51","nodeType":"YulLiteral","src":"4854:4:51","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4842:3:51","nodeType":"YulIdentifier","src":"4842:3:51"},"nativeSrc":"4842:17:51","nodeType":"YulFunctionCall","src":"4842:17:51"}],"functionName":{"name":"keccak256","nativeSrc":"4825:9:51","nodeType":"YulIdentifier","src":"4825:9:51"},"nativeSrc":"4825:35:51","nodeType":"YulFunctionCall","src":"4825:35:51"},"variableNames":[{"name":"result","nativeSrc":"4815:6:51","nodeType":"YulIdentifier","src":"4815:6:51"}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"4880:3:51","nodeType":"YulIdentifier","src":"4880:3:51"},{"name":"cache","nativeSrc":"4885:5:51","nodeType":"YulIdentifier","src":"4885:5:51"}],"functionName":{"name":"mstore","nativeSrc":"4873:6:51","nodeType":"YulIdentifier","src":"4873:6:51"},"nativeSrc":"4873:18:51","nodeType":"YulFunctionCall","src":"4873:18:51"},"nativeSrc":"4873:18:51","nodeType":"YulExpressionStatement","src":"4873:18:51"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9678,"isOffset":false,"isSlot":false,"src":"4650:3:51","valueSize":1},{"declaration":9678,"isOffset":false,"isSlot":false,"src":"4684:3:51","valueSize":1},{"declaration":9681,"isOffset":false,"isSlot":false,"src":"4815:6:51","valueSize":1},{"declaration":9676,"isOffset":false,"isSlot":false,"src":"4797:4:51","valueSize":1}],"id":9683,"nodeType":"InlineAssembly","src":"4607:294:51"}]},"documentation":{"id":9674,"nodeType":"StructuredDocumentation","src":"4391:63:51","text":"@dev Derive the location of a mapping element from the key."},"id":9685,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"4468:13:51","nodeType":"FunctionDefinition","parameters":{"id":9679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9676,"mutability":"mutable","name":"slot","nameLocation":"4490:4:51","nodeType":"VariableDeclaration","scope":9685,"src":"4482:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9675,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4482:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9678,"mutability":"mutable","name":"key","nameLocation":"4510:3:51","nodeType":"VariableDeclaration","scope":9685,"src":"4496:17:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9677,"name":"string","nodeType":"ElementaryTypeName","src":"4496:6:51","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4481:33:51"},"returnParameters":{"id":9682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9681,"mutability":"mutable","name":"result","nameLocation":"4546:6:51","nodeType":"VariableDeclaration","scope":9685,"src":"4538:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9680,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4538:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4537:16:51"},"scope":9698,"src":"4459:448:51","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9696,"nodeType":"Block","src":"5075:353:51","statements":[{"AST":{"nativeSrc":"5137:285:51","nodeType":"YulBlock","src":"5137:285:51","statements":[{"nativeSrc":"5151:24:51","nodeType":"YulVariableDeclaration","src":"5151:24:51","value":{"arguments":[{"name":"key","nativeSrc":"5171:3:51","nodeType":"YulIdentifier","src":"5171:3:51"}],"functionName":{"name":"mload","nativeSrc":"5165:5:51","nodeType":"YulIdentifier","src":"5165:5:51"},"nativeSrc":"5165:10:51","nodeType":"YulFunctionCall","src":"5165:10:51"},"variables":[{"name":"length","nativeSrc":"5155:6:51","nodeType":"YulTypedName","src":"5155:6:51","type":""}]},{"nativeSrc":"5188:27:51","nodeType":"YulVariableDeclaration","src":"5188:27:51","value":{"arguments":[{"name":"key","nativeSrc":"5205:3:51","nodeType":"YulIdentifier","src":"5205:3:51"},{"kind":"number","nativeSrc":"5210:4:51","nodeType":"YulLiteral","src":"5210:4:51","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5201:3:51","nodeType":"YulIdentifier","src":"5201:3:51"},"nativeSrc":"5201:14:51","nodeType":"YulFunctionCall","src":"5201:14:51"},"variables":[{"name":"begin","nativeSrc":"5192:5:51","nodeType":"YulTypedName","src":"5192:5:51","type":""}]},{"nativeSrc":"5228:29:51","nodeType":"YulVariableDeclaration","src":"5228:29:51","value":{"arguments":[{"name":"begin","nativeSrc":"5243:5:51","nodeType":"YulIdentifier","src":"5243:5:51"},{"name":"length","nativeSrc":"5250:6:51","nodeType":"YulIdentifier","src":"5250:6:51"}],"functionName":{"name":"add","nativeSrc":"5239:3:51","nodeType":"YulIdentifier","src":"5239:3:51"},"nativeSrc":"5239:18:51","nodeType":"YulFunctionCall","src":"5239:18:51"},"variables":[{"name":"end","nativeSrc":"5232:3:51","nodeType":"YulTypedName","src":"5232:3:51","type":""}]},{"nativeSrc":"5270:23:51","nodeType":"YulVariableDeclaration","src":"5270:23:51","value":{"arguments":[{"name":"end","nativeSrc":"5289:3:51","nodeType":"YulIdentifier","src":"5289:3:51"}],"functionName":{"name":"mload","nativeSrc":"5283:5:51","nodeType":"YulIdentifier","src":"5283:5:51"},"nativeSrc":"5283:10:51","nodeType":"YulFunctionCall","src":"5283:10:51"},"variables":[{"name":"cache","nativeSrc":"5274:5:51","nodeType":"YulTypedName","src":"5274:5:51","type":""}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"5313:3:51","nodeType":"YulIdentifier","src":"5313:3:51"},{"name":"slot","nativeSrc":"5318:4:51","nodeType":"YulIdentifier","src":"5318:4:51"}],"functionName":{"name":"mstore","nativeSrc":"5306:6:51","nodeType":"YulIdentifier","src":"5306:6:51"},"nativeSrc":"5306:17:51","nodeType":"YulFunctionCall","src":"5306:17:51"},"nativeSrc":"5306:17:51","nodeType":"YulExpressionStatement","src":"5306:17:51"},{"nativeSrc":"5336:45:51","nodeType":"YulAssignment","src":"5336:45:51","value":{"arguments":[{"name":"begin","nativeSrc":"5356:5:51","nodeType":"YulIdentifier","src":"5356:5:51"},{"arguments":[{"name":"length","nativeSrc":"5367:6:51","nodeType":"YulIdentifier","src":"5367:6:51"},{"kind":"number","nativeSrc":"5375:4:51","nodeType":"YulLiteral","src":"5375:4:51","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5363:3:51","nodeType":"YulIdentifier","src":"5363:3:51"},"nativeSrc":"5363:17:51","nodeType":"YulFunctionCall","src":"5363:17:51"}],"functionName":{"name":"keccak256","nativeSrc":"5346:9:51","nodeType":"YulIdentifier","src":"5346:9:51"},"nativeSrc":"5346:35:51","nodeType":"YulFunctionCall","src":"5346:35:51"},"variableNames":[{"name":"result","nativeSrc":"5336:6:51","nodeType":"YulIdentifier","src":"5336:6:51"}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"5401:3:51","nodeType":"YulIdentifier","src":"5401:3:51"},{"name":"cache","nativeSrc":"5406:5:51","nodeType":"YulIdentifier","src":"5406:5:51"}],"functionName":{"name":"mstore","nativeSrc":"5394:6:51","nodeType":"YulIdentifier","src":"5394:6:51"},"nativeSrc":"5394:18:51","nodeType":"YulFunctionCall","src":"5394:18:51"},"nativeSrc":"5394:18:51","nodeType":"YulExpressionStatement","src":"5394:18:51"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9690,"isOffset":false,"isSlot":false,"src":"5171:3:51","valueSize":1},{"declaration":9690,"isOffset":false,"isSlot":false,"src":"5205:3:51","valueSize":1},{"declaration":9693,"isOffset":false,"isSlot":false,"src":"5336:6:51","valueSize":1},{"declaration":9688,"isOffset":false,"isSlot":false,"src":"5318:4:51","valueSize":1}],"id":9695,"nodeType":"InlineAssembly","src":"5128:294:51"}]},"documentation":{"id":9686,"nodeType":"StructuredDocumentation","src":"4913:63:51","text":"@dev Derive the location of a mapping element from the key."},"id":9697,"implemented":true,"kind":"function","modifiers":[],"name":"deriveMapping","nameLocation":"4990:13:51","nodeType":"FunctionDefinition","parameters":{"id":9691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9688,"mutability":"mutable","name":"slot","nameLocation":"5012:4:51","nodeType":"VariableDeclaration","scope":9697,"src":"5004:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9687,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5004:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9690,"mutability":"mutable","name":"key","nameLocation":"5031:3:51","nodeType":"VariableDeclaration","scope":9697,"src":"5018:16:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9689,"name":"bytes","nodeType":"ElementaryTypeName","src":"5018:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5003:32:51"},"returnParameters":{"id":9694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9693,"mutability":"mutable","name":"result","nameLocation":"5067:6:51","nodeType":"VariableDeclaration","scope":9697,"src":"5059:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9692,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5059:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5058:16:51"},"scope":9698,"src":"4981:447:51","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9699,"src":"1652:3778:51","usedErrors":[],"usedEvents":[]}],"src":"277:5153:51"},"id":51},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","exportedSymbols":{"StorageSlotExtension":[9911]},"id":9912,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9700,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"33:24:52"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlotExtension","contractDependencies":[],"contractKind":"library","documentation":{"id":9701,"nodeType":"StructuredDocumentation","src":"59:218:52","text":" @notice Library for reading and writing primitive types to specific storage slots. Based on OpenZeppelin; just adding support for int256.\n @dev TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":9911,"linearizedBaseContracts":[9911],"name":"StorageSlotExtension","nameLocation":"286:20:52","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlotExtension.Int256Slot","id":9704,"members":[{"constant":false,"id":9703,"mutability":"mutable","name":"value","nameLocation":"348:5:52","nodeType":"VariableDeclaration","scope":9704,"src":"341:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9702,"name":"int256","nodeType":"ElementaryTypeName","src":"341:6:52","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"320:10:52","nodeType":"StructDefinition","scope":9911,"src":"313:47:52","visibility":"public"},{"body":{"id":9714,"nodeType":"Block","src":"524:106:52","statements":[{"AST":{"nativeSrc":"586:38:52","nodeType":"YulBlock","src":"586:38:52","statements":[{"nativeSrc":"600:14:52","nodeType":"YulAssignment","src":"600:14:52","value":{"name":"slot","nativeSrc":"610:4:52","nodeType":"YulIdentifier","src":"610:4:52"},"variableNames":[{"name":"r.slot","nativeSrc":"600:6:52","nodeType":"YulIdentifier","src":"600:6:52"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9711,"isOffset":false,"isSlot":true,"src":"600:6:52","suffix":"slot","valueSize":1},{"declaration":9707,"isOffset":false,"isSlot":false,"src":"610:4:52","valueSize":1}],"id":9713,"nodeType":"InlineAssembly","src":"577:47:52"}]},"documentation":{"id":9705,"nodeType":"StructuredDocumentation","src":"366:71:52","text":"@dev Returns an `Int256Slot` with member `value` located at `slot`."},"id":9715,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"451:13:52","nodeType":"FunctionDefinition","parameters":{"id":9708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9707,"mutability":"mutable","name":"slot","nameLocation":"473:4:52","nodeType":"VariableDeclaration","scope":9715,"src":"465:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9706,"name":"bytes32","nodeType":"ElementaryTypeName","src":"465:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"464:14:52"},"returnParameters":{"id":9712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9711,"mutability":"mutable","name":"r","nameLocation":"521:1:52","nodeType":"VariableDeclaration","scope":9715,"src":"502:20:52","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$9704_storage_ptr","typeString":"struct StorageSlotExtension.Int256Slot"},"typeName":{"id":9710,"nodeType":"UserDefinedTypeName","pathNode":{"id":9709,"name":"Int256Slot","nameLocations":["502:10:52"],"nodeType":"IdentifierPath","referencedDeclaration":9704,"src":"502:10:52"},"referencedDeclaration":9704,"src":"502:10:52","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$9704_storage_ptr","typeString":"struct StorageSlotExtension.Int256Slot"}},"visibility":"internal"}],"src":"501:22:52"},"scope":9911,"src":"442:188:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"StorageSlotExtension.AddressSlotType","id":9717,"name":"AddressSlotType","nameLocation":"709:15:52","nodeType":"UserDefinedValueTypeDefinition","src":"704:32:52","underlyingType":{"id":9716,"name":"bytes32","nodeType":"ElementaryTypeName","src":"728:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":9731,"nodeType":"Block","src":"873:50:52","statements":[{"expression":{"arguments":[{"id":9728,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9720,"src":"911:4:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9726,"name":"AddressSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9717,"src":"890:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"type(StorageSlotExtension.AddressSlotType)"}},"id":9727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"906:4:52","memberName":"wrap","nodeType":"MemberAccess","src":"890:20:52","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":9729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"890:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"functionReturnParameters":9725,"id":9730,"nodeType":"Return","src":"883:33:52"}]},"documentation":{"id":9718,"nodeType":"StructuredDocumentation","src":"742:53:52","text":"@dev Cast an arbitrary slot to a AddressSlotType."},"id":9732,"implemented":true,"kind":"function","modifiers":[],"name":"asAddress","nameLocation":"809:9:52","nodeType":"FunctionDefinition","parameters":{"id":9721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9720,"mutability":"mutable","name":"slot","nameLocation":"827:4:52","nodeType":"VariableDeclaration","scope":9732,"src":"819:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9719,"name":"bytes32","nodeType":"ElementaryTypeName","src":"819:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"818:14:52"},"returnParameters":{"id":9725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9732,"src":"856:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"},"typeName":{"id":9723,"nodeType":"UserDefinedTypeName","pathNode":{"id":9722,"name":"AddressSlotType","nameLocations":["856:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9717,"src":"856:15:52"},"referencedDeclaration":9717,"src":"856:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"visibility":"internal"}],"src":"855:17:52"},"scope":9911,"src":"800:123:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"StorageSlotExtension.BooleanSlotType","id":9734,"name":"BooleanSlotType","nameLocation":"1001:15:52","nodeType":"UserDefinedValueTypeDefinition","src":"996:32:52","underlyingType":{"id":9733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1020:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":9748,"nodeType":"Block","src":"1165:50:52","statements":[{"expression":{"arguments":[{"id":9745,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9737,"src":"1203:4:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9743,"name":"BooleanSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9734,"src":"1182:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"type(StorageSlotExtension.BooleanSlotType)"}},"id":9744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1198:4:52","memberName":"wrap","nodeType":"MemberAccess","src":"1182:20:52","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":9746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1182:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"functionReturnParameters":9742,"id":9747,"nodeType":"Return","src":"1175:33:52"}]},"documentation":{"id":9735,"nodeType":"StructuredDocumentation","src":"1034:53:52","text":"@dev Cast an arbitrary slot to a BooleanSlotType."},"id":9749,"implemented":true,"kind":"function","modifiers":[],"name":"asBoolean","nameLocation":"1101:9:52","nodeType":"FunctionDefinition","parameters":{"id":9738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9737,"mutability":"mutable","name":"slot","nameLocation":"1119:4:52","nodeType":"VariableDeclaration","scope":9749,"src":"1111:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1111:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1110:14:52"},"returnParameters":{"id":9742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9741,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9749,"src":"1148:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"},"typeName":{"id":9740,"nodeType":"UserDefinedTypeName","pathNode":{"id":9739,"name":"BooleanSlotType","nameLocations":["1148:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9734,"src":"1148:15:52"},"referencedDeclaration":9734,"src":"1148:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"visibility":"internal"}],"src":"1147:17:52"},"scope":9911,"src":"1092:123:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"StorageSlotExtension.Bytes32SlotType","id":9751,"name":"Bytes32SlotType","nameLocation":"1293:15:52","nodeType":"UserDefinedValueTypeDefinition","src":"1288:32:52","underlyingType":{"id":9750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1312:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":9765,"nodeType":"Block","src":"1457:50:52","statements":[{"expression":{"arguments":[{"id":9762,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9754,"src":"1495:4:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9760,"name":"Bytes32SlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9751,"src":"1474:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Bytes32SlotType_$9751_$","typeString":"type(StorageSlotExtension.Bytes32SlotType)"}},"id":9761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1490:4:52","memberName":"wrap","nodeType":"MemberAccess","src":"1474:20:52","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Bytes32SlotType_$9751_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Bytes32SlotType)"}},"id":9763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1474:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32SlotType_$9751","typeString":"StorageSlotExtension.Bytes32SlotType"}},"functionReturnParameters":9759,"id":9764,"nodeType":"Return","src":"1467:33:52"}]},"documentation":{"id":9752,"nodeType":"StructuredDocumentation","src":"1326:53:52","text":"@dev Cast an arbitrary slot to a Bytes32SlotType."},"id":9766,"implemented":true,"kind":"function","modifiers":[],"name":"asBytes32","nameLocation":"1393:9:52","nodeType":"FunctionDefinition","parameters":{"id":9755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9754,"mutability":"mutable","name":"slot","nameLocation":"1411:4:52","nodeType":"VariableDeclaration","scope":9766,"src":"1403:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9753,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1403:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1402:14:52"},"returnParameters":{"id":9759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9766,"src":"1440:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32SlotType_$9751","typeString":"StorageSlotExtension.Bytes32SlotType"},"typeName":{"id":9757,"nodeType":"UserDefinedTypeName","pathNode":{"id":9756,"name":"Bytes32SlotType","nameLocations":["1440:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9751,"src":"1440:15:52"},"referencedDeclaration":9751,"src":"1440:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32SlotType_$9751","typeString":"StorageSlotExtension.Bytes32SlotType"}},"visibility":"internal"}],"src":"1439:17:52"},"scope":9911,"src":"1384:123:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"StorageSlotExtension.Uint256SlotType","id":9768,"name":"Uint256SlotType","nameLocation":"1585:15:52","nodeType":"UserDefinedValueTypeDefinition","src":"1580:32:52","underlyingType":{"id":9767,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1604:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":9782,"nodeType":"Block","src":"1749:50:52","statements":[{"expression":{"arguments":[{"id":9779,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9771,"src":"1787:4:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9777,"name":"Uint256SlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9768,"src":"1766:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"type(StorageSlotExtension.Uint256SlotType)"}},"id":9778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1782:4:52","memberName":"wrap","nodeType":"MemberAccess","src":"1766:20:52","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":9780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1766:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"functionReturnParameters":9776,"id":9781,"nodeType":"Return","src":"1759:33:52"}]},"documentation":{"id":9769,"nodeType":"StructuredDocumentation","src":"1618:53:52","text":"@dev Cast an arbitrary slot to a Uint256SlotType."},"id":9783,"implemented":true,"kind":"function","modifiers":[],"name":"asUint256","nameLocation":"1685:9:52","nodeType":"FunctionDefinition","parameters":{"id":9772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9771,"mutability":"mutable","name":"slot","nameLocation":"1703:4:52","nodeType":"VariableDeclaration","scope":9783,"src":"1695:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9770,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1695:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1694:14:52"},"returnParameters":{"id":9776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9783,"src":"1732:15:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":9774,"nodeType":"UserDefinedTypeName","pathNode":{"id":9773,"name":"Uint256SlotType","nameLocations":["1732:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"1732:15:52"},"referencedDeclaration":9768,"src":"1732:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"1731:17:52"},"scope":9911,"src":"1676:123:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"canonicalName":"StorageSlotExtension.Int256SlotType","id":9785,"name":"Int256SlotType","nameLocation":"1877:14:52","nodeType":"UserDefinedValueTypeDefinition","src":"1872:31:52","underlyingType":{"id":9784,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1895:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":9799,"nodeType":"Block","src":"2038:49:52","statements":[{"expression":{"arguments":[{"id":9796,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9788,"src":"2075:4:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9794,"name":"Int256SlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9785,"src":"2055:14:52","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Int256SlotType_$9785_$","typeString":"type(StorageSlotExtension.Int256SlotType)"}},"id":9795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2070:4:52","memberName":"wrap","nodeType":"MemberAccess","src":"2055:19:52","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Int256SlotType_$9785_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Int256SlotType)"}},"id":9797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2055:25:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"}},"functionReturnParameters":9793,"id":9798,"nodeType":"Return","src":"2048:32:52"}]},"documentation":{"id":9786,"nodeType":"StructuredDocumentation","src":"1909:53:52","text":"@dev Cast an arbitrary slot to an Int256SlotType."},"id":9800,"implemented":true,"kind":"function","modifiers":[],"name":"asInt256","nameLocation":"1976:8:52","nodeType":"FunctionDefinition","parameters":{"id":9789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9788,"mutability":"mutable","name":"slot","nameLocation":"1993:4:52","nodeType":"VariableDeclaration","scope":9800,"src":"1985:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9787,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1985:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1984:14:52"},"returnParameters":{"id":9793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9800,"src":"2022:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"},"typeName":{"id":9791,"nodeType":"UserDefinedTypeName","pathNode":{"id":9790,"name":"Int256SlotType","nameLocations":["2022:14:52"],"nodeType":"IdentifierPath","referencedDeclaration":9785,"src":"2022:14:52"},"referencedDeclaration":9785,"src":"2022:14:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"}},"visibility":"internal"}],"src":"2021:16:52"},"scope":9911,"src":"1967:120:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9810,"nodeType":"Block","src":"2242:112:52","statements":[{"AST":{"nativeSrc":"2304:44:52","nodeType":"YulBlock","src":"2304:44:52","statements":[{"nativeSrc":"2318:20:52","nodeType":"YulAssignment","src":"2318:20:52","value":{"arguments":[{"name":"slot","nativeSrc":"2333:4:52","nodeType":"YulIdentifier","src":"2333:4:52"}],"functionName":{"name":"tload","nativeSrc":"2327:5:52","nodeType":"YulIdentifier","src":"2327:5:52"},"nativeSrc":"2327:11:52","nodeType":"YulFunctionCall","src":"2327:11:52"},"variableNames":[{"name":"value","nativeSrc":"2318:5:52","nodeType":"YulIdentifier","src":"2318:5:52"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9804,"isOffset":false,"isSlot":false,"src":"2333:4:52","valueSize":1},{"declaration":9807,"isOffset":false,"isSlot":false,"src":"2318:5:52","valueSize":1}],"id":9809,"nodeType":"InlineAssembly","src":"2295:53:52"}]},"documentation":{"id":9801,"nodeType":"StructuredDocumentation","src":"2093:69:52","text":"@dev Load the value held at location `slot` in transient storage."},"id":9811,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"2176:5:52","nodeType":"FunctionDefinition","parameters":{"id":9805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9804,"mutability":"mutable","name":"slot","nameLocation":"2198:4:52","nodeType":"VariableDeclaration","scope":9811,"src":"2182:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"},"typeName":{"id":9803,"nodeType":"UserDefinedTypeName","pathNode":{"id":9802,"name":"AddressSlotType","nameLocations":["2182:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9717,"src":"2182:15:52"},"referencedDeclaration":9717,"src":"2182:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"visibility":"internal"}],"src":"2181:22:52"},"returnParameters":{"id":9808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9807,"mutability":"mutable","name":"value","nameLocation":"2235:5:52","nodeType":"VariableDeclaration","scope":9811,"src":"2227:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9806,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2226:15:52"},"scope":9911,"src":"2167:187:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9821,"nodeType":"Block","src":"2490:111:52","statements":[{"AST":{"nativeSrc":"2552:43:52","nodeType":"YulBlock","src":"2552:43:52","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"2573:4:52","nodeType":"YulIdentifier","src":"2573:4:52"},{"name":"value","nativeSrc":"2579:5:52","nodeType":"YulIdentifier","src":"2579:5:52"}],"functionName":{"name":"tstore","nativeSrc":"2566:6:52","nodeType":"YulIdentifier","src":"2566:6:52"},"nativeSrc":"2566:19:52","nodeType":"YulFunctionCall","src":"2566:19:52"},"nativeSrc":"2566:19:52","nodeType":"YulExpressionStatement","src":"2566:19:52"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9815,"isOffset":false,"isSlot":false,"src":"2573:4:52","valueSize":1},{"declaration":9817,"isOffset":false,"isSlot":false,"src":"2579:5:52","valueSize":1}],"id":9820,"nodeType":"InlineAssembly","src":"2543:52:52"}]},"documentation":{"id":9812,"nodeType":"StructuredDocumentation","src":"2360:63:52","text":"@dev Store `value` at location `slot` in transient storage."},"id":9822,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"2437:6:52","nodeType":"FunctionDefinition","parameters":{"id":9818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9815,"mutability":"mutable","name":"slot","nameLocation":"2460:4:52","nodeType":"VariableDeclaration","scope":9822,"src":"2444:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"},"typeName":{"id":9814,"nodeType":"UserDefinedTypeName","pathNode":{"id":9813,"name":"AddressSlotType","nameLocations":["2444:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9717,"src":"2444:15:52"},"referencedDeclaration":9717,"src":"2444:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"visibility":"internal"},{"constant":false,"id":9817,"mutability":"mutable","name":"value","nameLocation":"2474:5:52","nodeType":"VariableDeclaration","scope":9822,"src":"2466:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9816,"name":"address","nodeType":"ElementaryTypeName","src":"2466:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2443:37:52"},"returnParameters":{"id":9819,"nodeType":"ParameterList","parameters":[],"src":"2490:0:52"},"scope":9911,"src":"2428:173:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9832,"nodeType":"Block","src":"2753:112:52","statements":[{"AST":{"nativeSrc":"2815:44:52","nodeType":"YulBlock","src":"2815:44:52","statements":[{"nativeSrc":"2829:20:52","nodeType":"YulAssignment","src":"2829:20:52","value":{"arguments":[{"name":"slot","nativeSrc":"2844:4:52","nodeType":"YulIdentifier","src":"2844:4:52"}],"functionName":{"name":"tload","nativeSrc":"2838:5:52","nodeType":"YulIdentifier","src":"2838:5:52"},"nativeSrc":"2838:11:52","nodeType":"YulFunctionCall","src":"2838:11:52"},"variableNames":[{"name":"value","nativeSrc":"2829:5:52","nodeType":"YulIdentifier","src":"2829:5:52"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9826,"isOffset":false,"isSlot":false,"src":"2844:4:52","valueSize":1},{"declaration":9829,"isOffset":false,"isSlot":false,"src":"2829:5:52","valueSize":1}],"id":9831,"nodeType":"InlineAssembly","src":"2806:53:52"}]},"documentation":{"id":9823,"nodeType":"StructuredDocumentation","src":"2607:69:52","text":"@dev Load the value held at location `slot` in transient storage."},"id":9833,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"2690:5:52","nodeType":"FunctionDefinition","parameters":{"id":9827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9826,"mutability":"mutable","name":"slot","nameLocation":"2712:4:52","nodeType":"VariableDeclaration","scope":9833,"src":"2696:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"},"typeName":{"id":9825,"nodeType":"UserDefinedTypeName","pathNode":{"id":9824,"name":"BooleanSlotType","nameLocations":["2696:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9734,"src":"2696:15:52"},"referencedDeclaration":9734,"src":"2696:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"visibility":"internal"}],"src":"2695:22:52"},"returnParameters":{"id":9830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9829,"mutability":"mutable","name":"value","nameLocation":"2746:5:52","nodeType":"VariableDeclaration","scope":9833,"src":"2741:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9828,"name":"bool","nodeType":"ElementaryTypeName","src":"2741:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2740:12:52"},"scope":9911,"src":"2681:184:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9843,"nodeType":"Block","src":"2998:111:52","statements":[{"AST":{"nativeSrc":"3060:43:52","nodeType":"YulBlock","src":"3060:43:52","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"3081:4:52","nodeType":"YulIdentifier","src":"3081:4:52"},{"name":"value","nativeSrc":"3087:5:52","nodeType":"YulIdentifier","src":"3087:5:52"}],"functionName":{"name":"tstore","nativeSrc":"3074:6:52","nodeType":"YulIdentifier","src":"3074:6:52"},"nativeSrc":"3074:19:52","nodeType":"YulFunctionCall","src":"3074:19:52"},"nativeSrc":"3074:19:52","nodeType":"YulExpressionStatement","src":"3074:19:52"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9837,"isOffset":false,"isSlot":false,"src":"3081:4:52","valueSize":1},{"declaration":9839,"isOffset":false,"isSlot":false,"src":"3087:5:52","valueSize":1}],"id":9842,"nodeType":"InlineAssembly","src":"3051:52:52"}]},"documentation":{"id":9834,"nodeType":"StructuredDocumentation","src":"2871:63:52","text":"@dev Store `value` at location `slot` in transient storage."},"id":9844,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"2948:6:52","nodeType":"FunctionDefinition","parameters":{"id":9840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9837,"mutability":"mutable","name":"slot","nameLocation":"2971:4:52","nodeType":"VariableDeclaration","scope":9844,"src":"2955:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"},"typeName":{"id":9836,"nodeType":"UserDefinedTypeName","pathNode":{"id":9835,"name":"BooleanSlotType","nameLocations":["2955:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9734,"src":"2955:15:52"},"referencedDeclaration":9734,"src":"2955:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"visibility":"internal"},{"constant":false,"id":9839,"mutability":"mutable","name":"value","nameLocation":"2982:5:52","nodeType":"VariableDeclaration","scope":9844,"src":"2977:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9838,"name":"bool","nodeType":"ElementaryTypeName","src":"2977:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2954:34:52"},"returnParameters":{"id":9841,"nodeType":"ParameterList","parameters":[],"src":"2998:0:52"},"scope":9911,"src":"2939:170:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9854,"nodeType":"Block","src":"3264:112:52","statements":[{"AST":{"nativeSrc":"3326:44:52","nodeType":"YulBlock","src":"3326:44:52","statements":[{"nativeSrc":"3340:20:52","nodeType":"YulAssignment","src":"3340:20:52","value":{"arguments":[{"name":"slot","nativeSrc":"3355:4:52","nodeType":"YulIdentifier","src":"3355:4:52"}],"functionName":{"name":"tload","nativeSrc":"3349:5:52","nodeType":"YulIdentifier","src":"3349:5:52"},"nativeSrc":"3349:11:52","nodeType":"YulFunctionCall","src":"3349:11:52"},"variableNames":[{"name":"value","nativeSrc":"3340:5:52","nodeType":"YulIdentifier","src":"3340:5:52"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9848,"isOffset":false,"isSlot":false,"src":"3355:4:52","valueSize":1},{"declaration":9851,"isOffset":false,"isSlot":false,"src":"3340:5:52","valueSize":1}],"id":9853,"nodeType":"InlineAssembly","src":"3317:53:52"}]},"documentation":{"id":9845,"nodeType":"StructuredDocumentation","src":"3115:69:52","text":"@dev Load the value held at location `slot` in transient storage."},"id":9855,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"3198:5:52","nodeType":"FunctionDefinition","parameters":{"id":9849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9848,"mutability":"mutable","name":"slot","nameLocation":"3220:4:52","nodeType":"VariableDeclaration","scope":9855,"src":"3204:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32SlotType_$9751","typeString":"StorageSlotExtension.Bytes32SlotType"},"typeName":{"id":9847,"nodeType":"UserDefinedTypeName","pathNode":{"id":9846,"name":"Bytes32SlotType","nameLocations":["3204:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9751,"src":"3204:15:52"},"referencedDeclaration":9751,"src":"3204:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32SlotType_$9751","typeString":"StorageSlotExtension.Bytes32SlotType"}},"visibility":"internal"}],"src":"3203:22:52"},"returnParameters":{"id":9852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9851,"mutability":"mutable","name":"value","nameLocation":"3257:5:52","nodeType":"VariableDeclaration","scope":9855,"src":"3249:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9850,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3249:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3248:15:52"},"scope":9911,"src":"3189:187:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9865,"nodeType":"Block","src":"3512:111:52","statements":[{"AST":{"nativeSrc":"3574:43:52","nodeType":"YulBlock","src":"3574:43:52","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"3595:4:52","nodeType":"YulIdentifier","src":"3595:4:52"},{"name":"value","nativeSrc":"3601:5:52","nodeType":"YulIdentifier","src":"3601:5:52"}],"functionName":{"name":"tstore","nativeSrc":"3588:6:52","nodeType":"YulIdentifier","src":"3588:6:52"},"nativeSrc":"3588:19:52","nodeType":"YulFunctionCall","src":"3588:19:52"},"nativeSrc":"3588:19:52","nodeType":"YulExpressionStatement","src":"3588:19:52"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9859,"isOffset":false,"isSlot":false,"src":"3595:4:52","valueSize":1},{"declaration":9861,"isOffset":false,"isSlot":false,"src":"3601:5:52","valueSize":1}],"id":9864,"nodeType":"InlineAssembly","src":"3565:52:52"}]},"documentation":{"id":9856,"nodeType":"StructuredDocumentation","src":"3382:63:52","text":"@dev Store `value` at location `slot` in transient storage."},"id":9866,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"3459:6:52","nodeType":"FunctionDefinition","parameters":{"id":9862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9859,"mutability":"mutable","name":"slot","nameLocation":"3482:4:52","nodeType":"VariableDeclaration","scope":9866,"src":"3466:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32SlotType_$9751","typeString":"StorageSlotExtension.Bytes32SlotType"},"typeName":{"id":9858,"nodeType":"UserDefinedTypeName","pathNode":{"id":9857,"name":"Bytes32SlotType","nameLocations":["3466:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9751,"src":"3466:15:52"},"referencedDeclaration":9751,"src":"3466:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Bytes32SlotType_$9751","typeString":"StorageSlotExtension.Bytes32SlotType"}},"visibility":"internal"},{"constant":false,"id":9861,"mutability":"mutable","name":"value","nameLocation":"3496:5:52","nodeType":"VariableDeclaration","scope":9866,"src":"3488:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9860,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3488:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3465:37:52"},"returnParameters":{"id":9863,"nodeType":"ParameterList","parameters":[],"src":"3512:0:52"},"scope":9911,"src":"3450:173:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9876,"nodeType":"Block","src":"3778:112:52","statements":[{"AST":{"nativeSrc":"3840:44:52","nodeType":"YulBlock","src":"3840:44:52","statements":[{"nativeSrc":"3854:20:52","nodeType":"YulAssignment","src":"3854:20:52","value":{"arguments":[{"name":"slot","nativeSrc":"3869:4:52","nodeType":"YulIdentifier","src":"3869:4:52"}],"functionName":{"name":"tload","nativeSrc":"3863:5:52","nodeType":"YulIdentifier","src":"3863:5:52"},"nativeSrc":"3863:11:52","nodeType":"YulFunctionCall","src":"3863:11:52"},"variableNames":[{"name":"value","nativeSrc":"3854:5:52","nodeType":"YulIdentifier","src":"3854:5:52"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9870,"isOffset":false,"isSlot":false,"src":"3869:4:52","valueSize":1},{"declaration":9873,"isOffset":false,"isSlot":false,"src":"3854:5:52","valueSize":1}],"id":9875,"nodeType":"InlineAssembly","src":"3831:53:52"}]},"documentation":{"id":9867,"nodeType":"StructuredDocumentation","src":"3629:69:52","text":"@dev Load the value held at location `slot` in transient storage."},"id":9877,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"3712:5:52","nodeType":"FunctionDefinition","parameters":{"id":9871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9870,"mutability":"mutable","name":"slot","nameLocation":"3734:4:52","nodeType":"VariableDeclaration","scope":9877,"src":"3718:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":9869,"nodeType":"UserDefinedTypeName","pathNode":{"id":9868,"name":"Uint256SlotType","nameLocations":["3718:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"3718:15:52"},"referencedDeclaration":9768,"src":"3718:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"3717:22:52"},"returnParameters":{"id":9874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9873,"mutability":"mutable","name":"value","nameLocation":"3771:5:52","nodeType":"VariableDeclaration","scope":9877,"src":"3763:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9872,"name":"uint256","nodeType":"ElementaryTypeName","src":"3763:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3762:15:52"},"scope":9911,"src":"3703:187:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9887,"nodeType":"Block","src":"4026:111:52","statements":[{"AST":{"nativeSrc":"4088:43:52","nodeType":"YulBlock","src":"4088:43:52","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"4109:4:52","nodeType":"YulIdentifier","src":"4109:4:52"},{"name":"value","nativeSrc":"4115:5:52","nodeType":"YulIdentifier","src":"4115:5:52"}],"functionName":{"name":"tstore","nativeSrc":"4102:6:52","nodeType":"YulIdentifier","src":"4102:6:52"},"nativeSrc":"4102:19:52","nodeType":"YulFunctionCall","src":"4102:19:52"},"nativeSrc":"4102:19:52","nodeType":"YulExpressionStatement","src":"4102:19:52"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9881,"isOffset":false,"isSlot":false,"src":"4109:4:52","valueSize":1},{"declaration":9883,"isOffset":false,"isSlot":false,"src":"4115:5:52","valueSize":1}],"id":9886,"nodeType":"InlineAssembly","src":"4079:52:52"}]},"documentation":{"id":9878,"nodeType":"StructuredDocumentation","src":"3896:63:52","text":"@dev Store `value` at location `slot` in transient storage."},"id":9888,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"3973:6:52","nodeType":"FunctionDefinition","parameters":{"id":9884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9881,"mutability":"mutable","name":"slot","nameLocation":"3996:4:52","nodeType":"VariableDeclaration","scope":9888,"src":"3980:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":9880,"nodeType":"UserDefinedTypeName","pathNode":{"id":9879,"name":"Uint256SlotType","nameLocations":["3980:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"3980:15:52"},"referencedDeclaration":9768,"src":"3980:15:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"},{"constant":false,"id":9883,"mutability":"mutable","name":"value","nameLocation":"4010:5:52","nodeType":"VariableDeclaration","scope":9888,"src":"4002:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9882,"name":"uint256","nodeType":"ElementaryTypeName","src":"4002:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:37:52"},"returnParameters":{"id":9885,"nodeType":"ParameterList","parameters":[],"src":"4026:0:52"},"scope":9911,"src":"3964:173:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9898,"nodeType":"Block","src":"4290:112:52","statements":[{"AST":{"nativeSrc":"4352:44:52","nodeType":"YulBlock","src":"4352:44:52","statements":[{"nativeSrc":"4366:20:52","nodeType":"YulAssignment","src":"4366:20:52","value":{"arguments":[{"name":"slot","nativeSrc":"4381:4:52","nodeType":"YulIdentifier","src":"4381:4:52"}],"functionName":{"name":"tload","nativeSrc":"4375:5:52","nodeType":"YulIdentifier","src":"4375:5:52"},"nativeSrc":"4375:11:52","nodeType":"YulFunctionCall","src":"4375:11:52"},"variableNames":[{"name":"value","nativeSrc":"4366:5:52","nodeType":"YulIdentifier","src":"4366:5:52"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9892,"isOffset":false,"isSlot":false,"src":"4381:4:52","valueSize":1},{"declaration":9895,"isOffset":false,"isSlot":false,"src":"4366:5:52","valueSize":1}],"id":9897,"nodeType":"InlineAssembly","src":"4343:53:52"}]},"documentation":{"id":9889,"nodeType":"StructuredDocumentation","src":"4143:69:52","text":"@dev Load the value held at location `slot` in transient storage."},"id":9899,"implemented":true,"kind":"function","modifiers":[],"name":"tload","nameLocation":"4226:5:52","nodeType":"FunctionDefinition","parameters":{"id":9893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9892,"mutability":"mutable","name":"slot","nameLocation":"4247:4:52","nodeType":"VariableDeclaration","scope":9899,"src":"4232:19:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"},"typeName":{"id":9891,"nodeType":"UserDefinedTypeName","pathNode":{"id":9890,"name":"Int256SlotType","nameLocations":["4232:14:52"],"nodeType":"IdentifierPath","referencedDeclaration":9785,"src":"4232:14:52"},"referencedDeclaration":9785,"src":"4232:14:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"}},"visibility":"internal"}],"src":"4231:21:52"},"returnParameters":{"id":9896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9895,"mutability":"mutable","name":"value","nameLocation":"4283:5:52","nodeType":"VariableDeclaration","scope":9899,"src":"4276:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9894,"name":"int256","nodeType":"ElementaryTypeName","src":"4276:6:52","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4275:14:52"},"scope":9911,"src":"4217:185:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9909,"nodeType":"Block","src":"4536:111:52","statements":[{"AST":{"nativeSrc":"4598:43:52","nodeType":"YulBlock","src":"4598:43:52","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"4619:4:52","nodeType":"YulIdentifier","src":"4619:4:52"},{"name":"value","nativeSrc":"4625:5:52","nodeType":"YulIdentifier","src":"4625:5:52"}],"functionName":{"name":"tstore","nativeSrc":"4612:6:52","nodeType":"YulIdentifier","src":"4612:6:52"},"nativeSrc":"4612:19:52","nodeType":"YulFunctionCall","src":"4612:19:52"},"nativeSrc":"4612:19:52","nodeType":"YulExpressionStatement","src":"4612:19:52"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":9903,"isOffset":false,"isSlot":false,"src":"4619:4:52","valueSize":1},{"declaration":9905,"isOffset":false,"isSlot":false,"src":"4625:5:52","valueSize":1}],"id":9908,"nodeType":"InlineAssembly","src":"4589:52:52"}]},"documentation":{"id":9900,"nodeType":"StructuredDocumentation","src":"4408:63:52","text":"@dev Store `value` at location `slot` in transient storage."},"id":9910,"implemented":true,"kind":"function","modifiers":[],"name":"tstore","nameLocation":"4485:6:52","nodeType":"FunctionDefinition","parameters":{"id":9906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9903,"mutability":"mutable","name":"slot","nameLocation":"4507:4:52","nodeType":"VariableDeclaration","scope":9910,"src":"4492:19:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"},"typeName":{"id":9902,"nodeType":"UserDefinedTypeName","pathNode":{"id":9901,"name":"Int256SlotType","nameLocations":["4492:14:52"],"nodeType":"IdentifierPath","referencedDeclaration":9785,"src":"4492:14:52"},"referencedDeclaration":9785,"src":"4492:14:52","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Int256SlotType_$9785","typeString":"StorageSlotExtension.Int256SlotType"}},"visibility":"internal"},{"constant":false,"id":9905,"mutability":"mutable","name":"value","nameLocation":"4520:5:52","nodeType":"VariableDeclaration","scope":9910,"src":"4513:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9904,"name":"int256","nodeType":"ElementaryTypeName","src":"4513:6:52","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4491:35:52"},"returnParameters":{"id":9907,"nodeType":"ParameterList","parameters":[],"src":"4536:0:52"},"scope":9911,"src":"4476:171:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9912,"src":"278:4371:52","usedErrors":[],"usedEvents":[]}],"src":"33:4617:52"},"id":52},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol":{"ast":{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol","exportedSymbols":{"AddressArraySlotType":[6490],"AddressToUintMappingSlot":[6486],"StorageSlotExtension":[9911],"TransientEnumerableSet":[10319],"TransientStorageHelpers":[7068]},"id":10320,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9913,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"33:24:53"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"./StorageSlotExtension.sol","id":9915,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10320,"sourceUnit":9912,"src":"59:66:53","symbolAliases":[{"foreign":{"id":9914,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"68:20:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"../helpers/TransientStorageHelpers.sol","id":9919,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10320,"sourceUnit":7069,"src":"126:141:53","symbolAliases":[{"foreign":{"id":9916,"name":"AddressArraySlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6490,"src":"139:20:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9917,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"165:24:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9918,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"195:23:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"TransientEnumerableSet","contractDependencies":[],"contractKind":"library","documentation":{"id":9920,"nodeType":"StructuredDocumentation","src":"269:1014:53","text":" @notice Library for managing sets of primitive types.\n @dev See https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types.\n Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that\n work on bytes32, replacing them with a native implementation for address values, to reduce bytecode size and\n runtime costs. It also uses transient storage.\n The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using TransientEnumerableSet for TransientEnumerableSet.AddressSet;\n // Declare a set state variable\n TransientEnumerableSet.AddressSet private mySet;\n }\n ```"},"fullyImplemented":true,"id":10319,"linearizedBaseContracts":[10319],"name":"TransientEnumerableSet","nameLocation":"1292:22:53","nodeType":"ContractDefinition","nodes":[{"global":false,"id":9922,"libraryName":{"id":9921,"name":"TransientStorageHelpers","nameLocations":["1327:23:53"],"nodeType":"IdentifierPath","referencedDeclaration":7068,"src":"1327:23:53"},"nodeType":"UsingForDirective","src":"1321:36:53"},{"global":false,"id":9926,"libraryName":{"id":9923,"name":"StorageSlotExtension","nameLocations":["1368:20:53"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"1368:20:53"},"nodeType":"UsingForDirective","src":"1362:68:53","typeName":{"id":9925,"nodeType":"UserDefinedTypeName","pathNode":{"id":9924,"name":"StorageSlotExtension.Uint256SlotType","nameLocations":["1393:20:53","1414:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"1393:36:53"},"referencedDeclaration":9768,"src":"1393:36:53","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}}},{"canonicalName":"TransientEnumerableSet.AddressSet","id":9934,"members":[{"constant":false,"id":9929,"mutability":"mutable","name":"__values","nameLocation":"1756:8:53","nodeType":"VariableDeclaration","scope":9934,"src":"1746:18:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9927,"name":"address","nodeType":"ElementaryTypeName","src":"1746:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9928,"nodeType":"ArrayTypeName","src":"1746:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":9933,"mutability":"mutable","name":"__indexes","nameLocation":"1947:9:53","nodeType":"VariableDeclaration","scope":9934,"src":"1897:59:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":9932,"keyName":"addressKey","keyNameLocation":"1913:10:53","keyType":{"id":9930,"name":"address","nodeType":"ElementaryTypeName","src":"1905:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1897:49:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"indexValue","valueNameLocation":"1935:10:53","valueType":{"id":9931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1927:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"AddressSet","nameLocation":"1691:10:53","nodeType":"StructDefinition","scope":10319,"src":"1684:279:53","visibility":"public"},{"documentation":{"id":9935,"nodeType":"StructuredDocumentation","src":"1969:61:53","text":"@notice An index is beyond the current bounds of the set."},"errorSelector":"4e23d035","id":9937,"name":"IndexOutOfBounds","nameLocation":"2041:16:53","nodeType":"ErrorDefinition","parameters":{"id":9936,"nodeType":"ParameterList","parameters":[],"src":"2057:2:53"},"src":"2035:25:53"},{"documentation":{"id":9938,"nodeType":"StructuredDocumentation","src":"2066:54:53","text":"@notice An element that is not present in the set."},"errorSelector":"66af5392","id":9940,"name":"ElementNotFound","nameLocation":"2131:15:53","nodeType":"ErrorDefinition","parameters":{"id":9939,"nodeType":"ParameterList","parameters":[],"src":"2146:2:53"},"src":"2125:24:53"},{"body":{"id":9982,"nodeType":"Block","src":"2380:348:53","statements":[{"condition":{"id":9955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2394:21:53","subExpression":{"arguments":[{"id":9952,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9944,"src":"2404:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},{"id":9953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9946,"src":"2409:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":9951,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10102,"src":"2395:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":9954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2395:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9980,"nodeType":"Block","src":"2685:37:53","statements":[{"expression":{"hexValue":"66616c7365","id":9978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2706:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":9950,"id":9979,"nodeType":"Return","src":"2699:12:53"}]},"id":9981,"nodeType":"IfStatement","src":"2390:332:53","trueBody":{"id":9977,"nodeType":"Block","src":"2417:262:53","statements":[{"expression":{"arguments":[{"id":9960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9946,"src":"2450:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9957,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9944,"src":"2439:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":9956,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"2431:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":9958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2431:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":9959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2444:5:53","memberName":"tPush","nodeType":"MemberAccess","referencedDeclaration":6968,"src":"2431:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressArraySlotType_$6490_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType,address)"}},"id":9961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2431:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9962,"nodeType":"ExpressionStatement","src":"2431:25:53"},{"expression":{"arguments":[{"id":9967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9946,"src":"2612:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9969,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9944,"src":"2627:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":9968,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"2619:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":9970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2619:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":9971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2632:7:53","memberName":"tLength","nodeType":"MemberAccess","referencedDeclaration":6777,"src":"2619:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType) view returns (uint256)"}},"id":9972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2619:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":9964,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9944,"src":"2602:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":9963,"name":"_indexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10318,"src":"2593:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressToUintMappingSlot)"}},"id":9965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2593:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":9966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:4:53","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"2593:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":9973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2593:49:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9974,"nodeType":"ExpressionStatement","src":"2593:49:53"},{"expression":{"hexValue":"74727565","id":9975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2664:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9950,"id":9976,"nodeType":"Return","src":"2657:11:53"}]}}]},"documentation":{"id":9941,"nodeType":"StructuredDocumentation","src":"2155:144:53","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, if it was not already present."},"id":9983,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"2313:3:53","nodeType":"FunctionDefinition","parameters":{"id":9947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9944,"mutability":"mutable","name":"set","nameLocation":"2336:3:53","nodeType":"VariableDeclaration","scope":9983,"src":"2317:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":9943,"nodeType":"UserDefinedTypeName","pathNode":{"id":9942,"name":"AddressSet","nameLocations":["2317:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"2317:10:53"},"referencedDeclaration":9934,"src":"2317:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":9946,"mutability":"mutable","name":"value","nameLocation":"2349:5:53","nodeType":"VariableDeclaration","scope":9983,"src":"2341:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9945,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2316:39:53"},"returnParameters":{"id":9950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9949,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9983,"src":"2374:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9948,"name":"bool","nodeType":"ElementaryTypeName","src":"2374:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2373:6:53"},"scope":10319,"src":"2304:424:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10080,"nodeType":"Block","src":"2966:1679:53","statements":[{"assignments":[9995],"declarations":[{"constant":false,"id":9995,"mutability":"mutable","name":"valueIndex","nameLocation":"3085:10:53","nodeType":"VariableDeclaration","scope":10080,"src":"3077:18:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9994,"name":"uint256","nodeType":"ElementaryTypeName","src":"3077:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10002,"initialValue":{"arguments":[{"id":10000,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9989,"src":"3117:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":9997,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"3107:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":9996,"name":"_indexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10318,"src":"3098:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressToUintMappingSlot)"}},"id":9998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3098:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":9999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3112:4:53","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"3098:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":10001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3098:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3077:46:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10003,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"3138:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3152:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3138:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10078,"nodeType":"Block","src":"4602:37:53","statements":[{"expression":{"hexValue":"66616c7365","id":10076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4623:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":9993,"id":10077,"nodeType":"Return","src":"4616:12:53"}]},"id":10079,"nodeType":"IfStatement","src":"3134:1505:53","trueBody":{"id":10075,"nodeType":"Block","src":"3155:1441:53","statements":[{"assignments":[10007],"declarations":[{"constant":false,"id":10007,"mutability":"mutable","name":"toDeleteIndex","nameLocation":"3514:13:53","nodeType":"VariableDeclaration","scope":10075,"src":"3506:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10006,"name":"uint256","nodeType":"ElementaryTypeName","src":"3506:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10008,"nodeType":"VariableDeclarationStatement","src":"3506:21:53"},{"assignments":[10010],"declarations":[{"constant":false,"id":10010,"mutability":"mutable","name":"lastIndex","nameLocation":"3549:9:53","nodeType":"VariableDeclaration","scope":10075,"src":"3541:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10009,"name":"uint256","nodeType":"ElementaryTypeName","src":"3541:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10011,"nodeType":"VariableDeclarationStatement","src":"3541:17:53"},{"id":10028,"nodeType":"UncheckedBlock","src":"3573:129:53","statements":[{"expression":{"id":10016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10012,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10007,"src":"3601:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10013,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"3617:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3630:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3617:14:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3601:30:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10017,"nodeType":"ExpressionStatement","src":"3601:30:53"},{"expression":{"id":10026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10018,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"3649:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10020,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"3669:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10019,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"3661:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3674:7:53","memberName":"tLength","nodeType":"MemberAccess","referencedDeclaration":6777,"src":"3661:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType) view returns (uint256)"}},"id":10023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3686:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3661:26:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3649:38:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10027,"nodeType":"ExpressionStatement","src":"3649:38:53"}]},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10029,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10007,"src":"3802:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10030,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"3819:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3802:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10058,"nodeType":"IfStatement","src":"3798:415:53","trueBody":{"id":10057,"nodeType":"Block","src":"3830:383:53","statements":[{"assignments":[10033],"declarations":[{"constant":false,"id":10033,"mutability":"mutable","name":"lastValue","nameLocation":"3856:9:53","nodeType":"VariableDeclaration","scope":10057,"src":"3848:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10032,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10040,"initialValue":{"arguments":[{"id":10038,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10010,"src":"3885:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10035,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"3876:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10034,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"3868:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3868:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3881:3:53","memberName":"tAt","nodeType":"MemberAccess","referencedDeclaration":6807,"src":"3868:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$_t_uint256_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType,uint256) view returns (address)"}},"id":10039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3868:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3848:47:53"},{"expression":{"arguments":[{"id":10045,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10007,"src":"4008:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10046,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"4023:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":10042,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"3998:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10041,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"3990:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3990:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4003:4:53","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6839,"src":"3990:17:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressArraySlotType_$6490_$_t_uint256_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType,uint256,address)"}},"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3990:43:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10048,"nodeType":"ExpressionStatement","src":"3990:43:53"},{"expression":{"arguments":[{"id":10053,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"4128:9:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10054,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"4139:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10050,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"4118:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10049,"name":"_indexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10318,"src":"4109:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressToUintMappingSlot)"}},"id":10051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4109:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":10052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4123:4:53","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"4109:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":10055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4109:41:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10056,"nodeType":"ExpressionStatement","src":"4109:41:53"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10060,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"4300:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10059,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"4292:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4305:4:53","memberName":"tPop","nodeType":"MemberAccess","referencedDeclaration":7033,"src":"4292:17:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType) returns (address)"}},"id":10063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:19:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10064,"nodeType":"ExpressionStatement","src":"4292:19:53"},{"expression":{"arguments":[{"id":10069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9989,"src":"4550:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":10070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4557:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":10066,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9987,"src":"4540:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10065,"name":"_indexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10318,"src":"4531:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressToUintMappingSlot)"}},"id":10067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":10068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4545:4:53","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"4531:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":10071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10072,"nodeType":"ExpressionStatement","src":"4531:28:53"},{"expression":{"hexValue":"74727565","id":10073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4581:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9993,"id":10074,"nodeType":"Return","src":"4574:11:53"}]}}]},"documentation":{"id":9984,"nodeType":"StructuredDocumentation","src":"2734:148:53","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set; i.e., if it was present."},"id":10081,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"2896:6:53","nodeType":"FunctionDefinition","parameters":{"id":9990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9987,"mutability":"mutable","name":"set","nameLocation":"2922:3:53","nodeType":"VariableDeclaration","scope":10081,"src":"2903:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":9986,"nodeType":"UserDefinedTypeName","pathNode":{"id":9985,"name":"AddressSet","nameLocations":["2903:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"2903:10:53"},"referencedDeclaration":9934,"src":"2903:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":9989,"mutability":"mutable","name":"value","nameLocation":"2935:5:53","nodeType":"VariableDeclaration","scope":10081,"src":"2927:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9988,"name":"address","nodeType":"ElementaryTypeName","src":"2927:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2902:39:53"},"returnParameters":{"id":9993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10081,"src":"2960:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9991,"name":"bool","nodeType":"ElementaryTypeName","src":"2960:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2959:6:53"},"scope":10319,"src":"2887:1758:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":10101,"nodeType":"Block","src":"4797:54:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10096,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"4833:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":10093,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10085,"src":"4823:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10092,"name":"_indexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10318,"src":"4814:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressToUintMappingSlot)"}},"id":10094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4814:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":10095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4828:4:53","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"4814:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":10097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4814:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4843:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4814:30:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10091,"id":10100,"nodeType":"Return","src":"4807:37:53"}]},"documentation":{"id":10082,"nodeType":"StructuredDocumentation","src":"4651:55:53","text":"@dev Returns true if the value is in the set. O(1)."},"id":10102,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nameLocation":"4720:8:53","nodeType":"FunctionDefinition","parameters":{"id":10088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10085,"mutability":"mutable","name":"set","nameLocation":"4748:3:53","nodeType":"VariableDeclaration","scope":10102,"src":"4729:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10084,"nodeType":"UserDefinedTypeName","pathNode":{"id":10083,"name":"AddressSet","nameLocations":["4729:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"4729:10:53"},"referencedDeclaration":9934,"src":"4729:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":10087,"mutability":"mutable","name":"value","nameLocation":"4761:5:53","nodeType":"VariableDeclaration","scope":10102,"src":"4753:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10086,"name":"address","nodeType":"ElementaryTypeName","src":"4753:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4728:39:53"},"returnParameters":{"id":10091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10102,"src":"4791:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10089,"name":"bool","nodeType":"ElementaryTypeName","src":"4791:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4790:6:53"},"scope":10319,"src":"4711:140:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10117,"nodeType":"Block","src":"4989:46:53","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10112,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10106,"src":"5014:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10111,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"5006:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5019:7:53","memberName":"tLength","nodeType":"MemberAccess","referencedDeclaration":6777,"src":"5006:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType) view returns (uint256)"}},"id":10115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10110,"id":10116,"nodeType":"Return","src":"4999:29:53"}]},"documentation":{"id":10103,"nodeType":"StructuredDocumentation","src":"4857:55:53","text":"@dev Returns the number of values on the set. O(1)."},"id":10118,"implemented":true,"kind":"function","modifiers":[],"name":"length","nameLocation":"4926:6:53","nodeType":"FunctionDefinition","parameters":{"id":10107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10106,"mutability":"mutable","name":"set","nameLocation":"4952:3:53","nodeType":"VariableDeclaration","scope":10118,"src":"4933:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10105,"nodeType":"UserDefinedTypeName","pathNode":{"id":10104,"name":"AddressSet","nameLocations":["4933:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"4933:10:53"},"referencedDeclaration":9934,"src":"4933:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"4932:24:53"},"returnParameters":{"id":10110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10118,"src":"4980:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10108,"name":"uint256","nodeType":"ElementaryTypeName","src":"4980:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4979:9:53"},"scope":10319,"src":"4917:118:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10146,"nodeType":"Block","src":"5460:145:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10129,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"5474:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10131,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"5491:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10130,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"5483:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5483:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5496:7:53","memberName":"tLength","nodeType":"MemberAccess","referencedDeclaration":6777,"src":"5483:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType) view returns (uint256)"}},"id":10134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5483:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5474:31:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10140,"nodeType":"IfStatement","src":"5470:87:53","trueBody":{"id":10139,"nodeType":"Block","src":"5507:50:53","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10136,"name":"IndexOutOfBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9937,"src":"5528:16:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5528:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10138,"nodeType":"RevertStatement","src":"5521:25:53"}]}},{"expression":{"arguments":[{"id":10142,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10122,"src":"5587:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},{"id":10143,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"5592:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10141,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10166,"src":"5574:12:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$_t_uint256_$returns$_t_address_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":10144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5574:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10128,"id":10145,"nodeType":"Return","src":"5567:31:53"}]},"documentation":{"id":10119,"nodeType":"StructuredDocumentation","src":"5041:331:53","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":10147,"implemented":true,"kind":"function","modifiers":[],"name":"at","nameLocation":"5386:2:53","nodeType":"FunctionDefinition","parameters":{"id":10125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10122,"mutability":"mutable","name":"set","nameLocation":"5408:3:53","nodeType":"VariableDeclaration","scope":10147,"src":"5389:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10121,"nodeType":"UserDefinedTypeName","pathNode":{"id":10120,"name":"AddressSet","nameLocations":["5389:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"5389:10:53"},"referencedDeclaration":9934,"src":"5389:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":10124,"mutability":"mutable","name":"index","nameLocation":"5421:5:53","nodeType":"VariableDeclaration","scope":10147,"src":"5413:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10123,"name":"uint256","nodeType":"ElementaryTypeName","src":"5413:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5388:39:53"},"returnParameters":{"id":10128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10147,"src":"5451:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10126,"name":"address","nodeType":"ElementaryTypeName","src":"5451:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5450:9:53"},"scope":10319,"src":"5377:228:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10165,"nodeType":"Block","src":"6010:56:53","statements":[{"expression":{"arguments":[{"id":10162,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10153,"src":"6053:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10159,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10151,"src":"6035:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10158,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"6027:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6027:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6040:12:53","memberName":"tUncheckedAt","nodeType":"MemberAccess","referencedDeclaration":6892,"src":"6027:25:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$_t_uint256_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType,uint256) view returns (address)"}},"id":10163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6027:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10157,"id":10164,"nodeType":"Return","src":"6020:39:53"}]},"documentation":{"id":10148,"nodeType":"StructuredDocumentation","src":"5611:301:53","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":10166,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nameLocation":"5926:12:53","nodeType":"FunctionDefinition","parameters":{"id":10154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10151,"mutability":"mutable","name":"set","nameLocation":"5958:3:53","nodeType":"VariableDeclaration","scope":10166,"src":"5939:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10150,"nodeType":"UserDefinedTypeName","pathNode":{"id":10149,"name":"AddressSet","nameLocations":["5939:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"5939:10:53"},"referencedDeclaration":9934,"src":"5939:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":10153,"mutability":"mutable","name":"index","nameLocation":"5971:5:53","nodeType":"VariableDeclaration","scope":10166,"src":"5963:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10152,"name":"uint256","nodeType":"ElementaryTypeName","src":"5963:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5938:39:53"},"returnParameters":{"id":10157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10166,"src":"6001:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10155,"name":"address","nodeType":"ElementaryTypeName","src":"6001:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6000:9:53"},"scope":10319,"src":"5917:149:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10199,"nodeType":"Block","src":"6240:203:53","statements":[{"assignments":[10178],"declarations":[{"constant":false,"id":10178,"mutability":"mutable","name":"rawIndex","nameLocation":"6258:8:53","nodeType":"VariableDeclaration","scope":10199,"src":"6250:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10177,"name":"uint256","nodeType":"ElementaryTypeName","src":"6250:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10185,"initialValue":{"arguments":[{"id":10183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10172,"src":"6288:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":10180,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10170,"src":"6278:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10179,"name":"_indexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10318,"src":"6269:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressToUintMappingSlot)"}},"id":10181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6269:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":10182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6283:4:53","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"6269:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":10184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6269:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6250:44:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10186,"name":"rawIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"6309:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6321:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6309:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10193,"nodeType":"IfStatement","src":"6305:68:53","trueBody":{"id":10192,"nodeType":"Block","src":"6324:49:53","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10189,"name":"ElementNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9940,"src":"6345:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":10190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6345:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10191,"nodeType":"RevertStatement","src":"6338:24:53"}]}},{"id":10198,"nodeType":"UncheckedBlock","src":"6383:54:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10194,"name":"rawIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10178,"src":"6414:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6425:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6414:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10176,"id":10197,"nodeType":"Return","src":"6407:19:53"}]}]},"documentation":{"id":10167,"nodeType":"StructuredDocumentation","src":"6072:75:53","text":"@dev Return the index of an element in the set, or revert if not found."},"id":10200,"implemented":true,"kind":"function","modifiers":[],"name":"indexOf","nameLocation":"6161:7:53","nodeType":"FunctionDefinition","parameters":{"id":10173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10170,"mutability":"mutable","name":"set","nameLocation":"6188:3:53","nodeType":"VariableDeclaration","scope":10200,"src":"6169:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10169,"nodeType":"UserDefinedTypeName","pathNode":{"id":10168,"name":"AddressSet","nameLocations":["6169:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"6169:10:53"},"referencedDeclaration":9934,"src":"6169:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":10172,"mutability":"mutable","name":"value","nameLocation":"6201:5:53","nodeType":"VariableDeclaration","scope":10200,"src":"6193:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10171,"name":"address","nodeType":"ElementaryTypeName","src":"6193:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6168:39:53"},"returnParameters":{"id":10176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10200,"src":"6231:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10174,"name":"uint256","nodeType":"ElementaryTypeName","src":"6231:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6230:9:53"},"scope":10319,"src":"6152:291:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10230,"nodeType":"Block","src":"6846:145:53","statements":[{"assignments":[10212],"declarations":[{"constant":false,"id":10212,"mutability":"mutable","name":"rawIndex","nameLocation":"6864:8:53","nodeType":"VariableDeclaration","scope":10230,"src":"6856:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10211,"name":"uint256","nodeType":"ElementaryTypeName","src":"6856:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10219,"initialValue":{"arguments":[{"id":10217,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10206,"src":"6894:5:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":10214,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10204,"src":"6884:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10213,"name":"_indexes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10318,"src":"6875:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressToUintMappingSlot)"}},"id":10215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6875:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":10216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6889:4:53","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"6875:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":10218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6875:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6856:44:53"},{"id":10229,"nodeType":"UncheckedBlock","src":"6911:74:53","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10220,"name":"rawIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10212,"src":"6942:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6954:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6942:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10224,"name":"rawIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10212,"src":"6962:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6973:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6962:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6942:32:53","trueExpression":{"hexValue":"30","id":10223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6958:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10210,"id":10228,"nodeType":"Return","src":"6935:39:53"}]}]},"documentation":{"id":10201,"nodeType":"StructuredDocumentation","src":"6449:294:53","text":" @dev Same as {indexOf}, except this doesn't revert if the element isn't present in the set.\n In this case, it returns 0.\n This function performs one less storage read than {indexOf}, but should only be used when `index` is known to be\n within bounds."},"id":10231,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_indexOf","nameLocation":"6757:17:53","nodeType":"FunctionDefinition","parameters":{"id":10207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10204,"mutability":"mutable","name":"set","nameLocation":"6794:3:53","nodeType":"VariableDeclaration","scope":10231,"src":"6775:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10203,"nodeType":"UserDefinedTypeName","pathNode":{"id":10202,"name":"AddressSet","nameLocations":["6775:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"6775:10:53"},"referencedDeclaration":9934,"src":"6775:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":10206,"mutability":"mutable","name":"value","nameLocation":"6807:5:53","nodeType":"VariableDeclaration","scope":10231,"src":"6799:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10205,"name":"address","nodeType":"ElementaryTypeName","src":"6799:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6774:39:53"},"returnParameters":{"id":10210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10231,"src":"6837:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10208,"name":"uint256","nodeType":"ElementaryTypeName","src":"6837:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6836:9:53"},"scope":10319,"src":"6748:243:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10280,"nodeType":"Block","src":"7194:205:53","statements":[{"assignments":[10242],"declarations":[{"constant":false,"id":10242,"mutability":"mutable","name":"len","nameLocation":"7212:3:53","nodeType":"VariableDeclaration","scope":10280,"src":"7204:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10241,"name":"uint256","nodeType":"ElementaryTypeName","src":"7204:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10248,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10244,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10235,"src":"7226:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10243,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"7218:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7218:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7231:7:53","memberName":"tLength","nodeType":"MemberAccess","referencedDeclaration":6777,"src":"7218:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType) view returns (uint256)"}},"id":10247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7218:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7204:36:53"},{"expression":{"id":10255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10249,"name":"memValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10239,"src":"7250:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10253,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10242,"src":"7276:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7262:13:53","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":10250,"name":"address","nodeType":"ElementaryTypeName","src":"7266:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10251,"nodeType":"ArrayTypeName","src":"7266:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":10254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7262:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"7250:30:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10256,"nodeType":"ExpressionStatement","src":"7250:30:53"},{"body":{"id":10278,"nodeType":"Block","src":"7325:68:53","statements":[{"expression":{"id":10276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10267,"name":"memValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10239,"src":"7339:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10269,"indexExpression":{"id":10268,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"7349:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7339:12:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10274,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"7380:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":10271,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10235,"src":"7362:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}],"id":10270,"name":"_values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10300,"src":"7354:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (AddressArraySlotType)"}},"id":10272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7354:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"id":10273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7367:12:53","memberName":"tUncheckedAt","nodeType":"MemberAccess","referencedDeclaration":6892,"src":"7354:25:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressArraySlotType_$6490_$_t_uint256_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressArraySlotType_$6490_$","typeString":"function (AddressArraySlotType,uint256) view returns (address)"}},"id":10275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7354:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7339:43:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10277,"nodeType":"ExpressionStatement","src":"7339:43:53"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10261,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"7311:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10262,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10242,"src":"7315:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7311:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10279,"initializationExpression":{"assignments":[10258],"declarations":[{"constant":false,"id":10258,"mutability":"mutable","name":"i","nameLocation":"7304:1:53","nodeType":"VariableDeclaration","scope":10279,"src":"7296:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10257,"name":"uint256","nodeType":"ElementaryTypeName","src":"7296:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10260,"initialValue":{"hexValue":"30","id":10259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7308:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7296:13:53"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":10265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7320:3:53","subExpression":{"id":10264,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10258,"src":"7322:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10266,"nodeType":"ExpressionStatement","src":"7320:3:53"},"nodeType":"ForStatement","src":"7291:102:53"}]},"documentation":{"id":10232,"nodeType":"StructuredDocumentation","src":"7033:65:53","text":"@dev Return the raw contents of the underlying address array."},"id":10281,"implemented":true,"kind":"function","modifiers":[],"name":"values","nameLocation":"7112:6:53","nodeType":"FunctionDefinition","parameters":{"id":10236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10235,"mutability":"mutable","name":"set","nameLocation":"7138:3:53","nodeType":"VariableDeclaration","scope":10281,"src":"7119:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10234,"nodeType":"UserDefinedTypeName","pathNode":{"id":10233,"name":"AddressSet","nameLocations":["7119:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"7119:10:53"},"referencedDeclaration":9934,"src":"7119:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"7118:24:53"},"returnParameters":{"id":10240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10239,"mutability":"mutable","name":"memValues","nameLocation":"7183:9:53","nodeType":"VariableDeclaration","scope":10281,"src":"7166:26:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10237,"name":"address","nodeType":"ElementaryTypeName","src":"7166:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10238,"nodeType":"ArrayTypeName","src":"7166:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"7165:28:53"},"scope":10319,"src":"7103:296:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10299,"nodeType":"Block","src":"7538:146:53","statements":[{"assignments":[10294],"declarations":[{"constant":false,"id":10294,"mutability":"mutable","name":"structValues","nameLocation":"7566:12:53","nodeType":"VariableDeclaration","scope":10299,"src":"7548:30:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10292,"name":"address","nodeType":"ElementaryTypeName","src":"7548:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10293,"nodeType":"ArrayTypeName","src":"7548:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":10297,"initialValue":{"expression":{"id":10295,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10284,"src":"7581:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":10296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7585:8:53","memberName":"__values","nodeType":"MemberAccess","referencedDeclaration":9929,"src":"7581:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7548:45:53"},{"AST":{"nativeSrc":"7629:49:53","nodeType":"YulBlock","src":"7629:49:53","statements":[{"nativeSrc":"7643:25:53","nodeType":"YulAssignment","src":"7643:25:53","value":{"name":"structValues.slot","nativeSrc":"7651:17:53","nodeType":"YulIdentifier","src":"7651:17:53"},"variableNames":[{"name":"slot","nativeSrc":"7643:4:53","nodeType":"YulIdentifier","src":"7643:4:53"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":10288,"isOffset":false,"isSlot":false,"src":"7643:4:53","valueSize":1},{"declaration":10294,"isOffset":false,"isSlot":true,"src":"7651:17:53","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":10298,"nodeType":"InlineAssembly","src":"7604:74:53"}]},"id":10300,"implemented":true,"kind":"function","modifiers":[],"name":"_values","nameLocation":"7457:7:53","nodeType":"FunctionDefinition","parameters":{"id":10285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10284,"mutability":"mutable","name":"set","nameLocation":"7484:3:53","nodeType":"VariableDeclaration","scope":10300,"src":"7465:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10283,"nodeType":"UserDefinedTypeName","pathNode":{"id":10282,"name":"AddressSet","nameLocations":["7465:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"7465:10:53"},"referencedDeclaration":9934,"src":"7465:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"7464:24:53"},"returnParameters":{"id":10289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10288,"mutability":"mutable","name":"slot","nameLocation":"7532:4:53","nodeType":"VariableDeclaration","scope":10300,"src":"7511:25:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"},"typeName":{"id":10287,"nodeType":"UserDefinedTypeName","pathNode":{"id":10286,"name":"AddressArraySlotType","nameLocations":["7511:20:53"],"nodeType":"IdentifierPath","referencedDeclaration":6490,"src":"7511:20:53"},"referencedDeclaration":6490,"src":"7511:20:53","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressArraySlotType_$6490","typeString":"AddressArraySlotType"}},"visibility":"internal"}],"src":"7510:27:53"},"scope":10319,"src":"7448:236:53","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10317,"nodeType":"Block","src":"7785:177:53","statements":[{"assignments":[10312],"declarations":[{"constant":false,"id":10312,"mutability":"mutable","name":"indexes","nameLocation":"7853:7:53","nodeType":"VariableDeclaration","scope":10317,"src":"7795:65:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10311,"keyName":"addressKey","keyNameLocation":"7811:10:53","keyType":{"id":10309,"name":"address","nodeType":"ElementaryTypeName","src":"7803:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"7795:49:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"indexValue","valueNameLocation":"7833:10:53","valueType":{"id":10310,"name":"uint256","nodeType":"ElementaryTypeName","src":"7825:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"id":10315,"initialValue":{"expression":{"id":10313,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10303,"src":"7863:3:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":10314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7867:9:53","memberName":"__indexes","nodeType":"MemberAccess","referencedDeclaration":9933,"src":"7863:13:53","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7795:81:53"},{"AST":{"nativeSrc":"7912:44:53","nodeType":"YulBlock","src":"7912:44:53","statements":[{"nativeSrc":"7926:20:53","nodeType":"YulAssignment","src":"7926:20:53","value":{"name":"indexes.slot","nativeSrc":"7934:12:53","nodeType":"YulIdentifier","src":"7934:12:53"},"variableNames":[{"name":"slot","nativeSrc":"7926:4:53","nodeType":"YulIdentifier","src":"7926:4:53"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":10312,"isOffset":false,"isSlot":true,"src":"7934:12:53","suffix":"slot","valueSize":1},{"declaration":10307,"isOffset":false,"isSlot":false,"src":"7926:4:53","valueSize":1}],"flags":["memory-safe"],"id":10316,"nodeType":"InlineAssembly","src":"7887:69:53"}]},"id":10318,"implemented":true,"kind":"function","modifiers":[],"name":"_indexes","nameLocation":"7699:8:53","nodeType":"FunctionDefinition","parameters":{"id":10304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10303,"mutability":"mutable","name":"set","nameLocation":"7727:3:53","nodeType":"VariableDeclaration","scope":10318,"src":"7708:22:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":10302,"nodeType":"UserDefinedTypeName","pathNode":{"id":10301,"name":"AddressSet","nameLocations":["7708:10:53"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"7708:10:53"},"referencedDeclaration":9934,"src":"7708:10:53","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"7707:24:53"},"returnParameters":{"id":10308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10307,"mutability":"mutable","name":"slot","nameLocation":"7779:4:53","nodeType":"VariableDeclaration","scope":10318,"src":"7754:29:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":10306,"nodeType":"UserDefinedTypeName","pathNode":{"id":10305,"name":"AddressToUintMappingSlot","nameLocations":["7754:24:53"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"7754:24:53"},"referencedDeclaration":6486,"src":"7754:24:53","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"}],"src":"7753:31:53"},"scope":10319,"src":"7690:272:53","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":10320,"src":"1284:6680:53","usedErrors":[9937,9940],"usedEvents":[]}],"src":"33:7932:53"},"id":53},"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol","exportedSymbols":{"BalancerPoolToken":[10732],"ECDSA":[40980],"EIP712":[41207],"ERC165":[41305],"IERC20":[39274],"IERC20Metadata":[39300],"IERC20Permit":[39336],"IRateProvider":[150],"IVault":[2893],"Nonces":[40050],"VaultGuard":[27688]},"id":10733,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10321,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:54"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":10323,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":39301,"src":"72:99:54","symbolAliases":[{"foreign":{"id":10322,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39300,"src":"81:14:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","id":10325,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":39337,"src":"172:95:54","symbolAliases":[{"foreign":{"id":10324,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39336,"src":"181:12:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":10327,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":41306,"src":"268:80:54","symbolAliases":[{"foreign":{"id":10326,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41305,"src":"277:6:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","file":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","id":10329,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":41208,"src":"349:79:54","symbolAliases":[{"foreign":{"id":10328,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41207,"src":"358:6:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","id":10331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":40981,"src":"429:77:54","symbolAliases":[{"foreign":{"id":10330,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40980,"src":"438:5:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":10333,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":39275,"src":"507:72:54","symbolAliases":[{"foreign":{"id":10332,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"516:6:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Nonces.sol","file":"@openzeppelin/contracts/utils/Nonces.sol","id":10335,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":40051,"src":"580:66:54","symbolAliases":[{"foreign":{"id":10334,"name":"Nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40050,"src":"589:6:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","id":10337,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":151,"src":"648:112:54","symbolAliases":[{"foreign":{"id":10336,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"657:13:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":10339,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":2894,"src":"761:81:54","symbolAliases":[{"foreign":{"id":10338,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"770:6:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultGuard.sol","file":"./VaultGuard.sol","id":10341,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10733,"sourceUnit":27689,"src":"844:46:54","symbolAliases":[{"foreign":{"id":10340,"name":"VaultGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27688,"src":"853:10:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10343,"name":"IERC20","nameLocations":["1299:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1299:6:54"},"id":10344,"nodeType":"InheritanceSpecifier","src":"1299:6:54"},{"baseName":{"id":10345,"name":"IERC20Metadata","nameLocations":["1307:14:54"],"nodeType":"IdentifierPath","referencedDeclaration":39300,"src":"1307:14:54"},"id":10346,"nodeType":"InheritanceSpecifier","src":"1307:14:54"},{"baseName":{"id":10347,"name":"IERC20Permit","nameLocations":["1323:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":39336,"src":"1323:12:54"},"id":10348,"nodeType":"InheritanceSpecifier","src":"1323:12:54"},{"baseName":{"id":10349,"name":"IRateProvider","nameLocations":["1337:13:54"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"1337:13:54"},"id":10350,"nodeType":"InheritanceSpecifier","src":"1337:13:54"},{"baseName":{"id":10351,"name":"EIP712","nameLocations":["1352:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":41207,"src":"1352:6:54"},"id":10352,"nodeType":"InheritanceSpecifier","src":"1352:6:54"},{"baseName":{"id":10353,"name":"Nonces","nameLocations":["1360:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":40050,"src":"1360:6:54"},"id":10354,"nodeType":"InheritanceSpecifier","src":"1360:6:54"},{"baseName":{"id":10355,"name":"ERC165","nameLocations":["1368:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":41305,"src":"1368:6:54"},"id":10356,"nodeType":"InheritanceSpecifier","src":"1368:6:54"},{"baseName":{"id":10357,"name":"VaultGuard","nameLocations":["1376:10:54"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"1376:10:54"},"id":10358,"nodeType":"InheritanceSpecifier","src":"1376:10:54"}],"canonicalName":"BalancerPoolToken","contractDependencies":[],"contractKind":"contract","documentation":{"id":10342,"nodeType":"StructuredDocumentation","src":"892:376:54","text":" @notice `BalancerPoolToken` is a fully ERC20-compatible token to be used as the base contract for Balancer Pools,\n with all the data and implementation delegated to the ERC20Multitoken contract.\n @dev Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[ERC-2612]."},"fullyImplemented":true,"id":10732,"linearizedBaseContracts":[10732,27688,41305,41317,40050,41207,39023,150,39336,39300,39274],"name":"BalancerPoolToken","nameLocation":"1278:17:54","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"30adf81f","id":10363,"mutability":"constant","name":"PERMIT_TYPEHASH","nameLocation":"1417:15:54","nodeType":"VariableDeclaration","scope":10732,"src":"1393:145:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10359,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1393:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":10361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1453:84:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":10360,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1443:9:54","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1443:95:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"documentation":{"id":10364,"nodeType":"StructuredDocumentation","src":"1545:135:54","text":" @notice Operation failed due to an expired permit signature.\n @param deadline The permit deadline that expired"},"errorSelector":"62791302","id":10368,"name":"ERC2612ExpiredSignature","nameLocation":"1691:23:54","nodeType":"ErrorDefinition","parameters":{"id":10367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10366,"mutability":"mutable","name":"deadline","nameLocation":"1723:8:54","nodeType":"VariableDeclaration","scope":10368,"src":"1715:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1715:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1714:18:54"},"src":"1685:48:54"},{"documentation":{"id":10369,"nodeType":"StructuredDocumentation","src":"1739:237:54","text":" @notice Operation failed due to a non-matching signature.\n @param signer The address corresponding to the signature provider\n @param owner The address of the owner (expected value of the signature provider)"},"errorSelector":"4b800e46","id":10375,"name":"ERC2612InvalidSigner","nameLocation":"1987:20:54","nodeType":"ErrorDefinition","parameters":{"id":10374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10371,"mutability":"mutable","name":"signer","nameLocation":"2016:6:54","nodeType":"VariableDeclaration","scope":10375,"src":"2008:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10370,"name":"address","nodeType":"ElementaryTypeName","src":"2008:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10373,"mutability":"mutable","name":"owner","nameLocation":"2032:5:54","nodeType":"VariableDeclaration","scope":10375,"src":"2024:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10372,"name":"address","nodeType":"ElementaryTypeName","src":"2024:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2007:31:54"},"src":"1981:58:54"},{"constant":false,"id":10377,"mutability":"mutable","name":"_bptName","nameLocation":"2094:8:54","nodeType":"VariableDeclaration","scope":10732,"src":"2079:23:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":10376,"name":"string","nodeType":"ElementaryTypeName","src":"2079:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":10379,"mutability":"mutable","name":"_bptSymbol","nameLocation":"2123:10:54","nodeType":"VariableDeclaration","scope":10732,"src":"2108:25:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":10378,"name":"string","nodeType":"ElementaryTypeName","src":"2108:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":10404,"nodeType":"Block","src":"2255:67:54","statements":[{"expression":{"id":10398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10396,"name":"_bptName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10377,"src":"2265:8:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10397,"name":"bptName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10384,"src":"2276:7:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2265:18:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10399,"nodeType":"ExpressionStatement","src":"2265:18:54"},{"expression":{"id":10402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10400,"name":"_bptSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10379,"src":"2293:10:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10401,"name":"bptSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10386,"src":"2306:9:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2293:22:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10403,"nodeType":"ExpressionStatement","src":"2293:22:54"}]},"id":10405,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10389,"name":"bptName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10384,"src":"2222:7:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":10390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2231:3:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":10391,"kind":"baseConstructorSpecifier","modifierName":{"id":10388,"name":"EIP712","nameLocations":["2215:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":41207,"src":"2215:6:54"},"nodeType":"ModifierInvocation","src":"2215:20:54"},{"arguments":[{"id":10393,"name":"vault_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"2247:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":10394,"kind":"baseConstructorSpecifier","modifierName":{"id":10392,"name":"VaultGuard","nameLocations":["2236:10:54"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"2236:10:54"},"nodeType":"ModifierInvocation","src":"2236:18:54"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":10387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10382,"mutability":"mutable","name":"vault_","nameLocation":"2159:6:54","nodeType":"VariableDeclaration","scope":10405,"src":"2152:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":10381,"nodeType":"UserDefinedTypeName","pathNode":{"id":10380,"name":"IVault","nameLocations":["2152:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"2152:6:54"},"referencedDeclaration":2893,"src":"2152:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":10384,"mutability":"mutable","name":"bptName","nameLocation":"2181:7:54","nodeType":"VariableDeclaration","scope":10405,"src":"2167:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10383,"name":"string","nodeType":"ElementaryTypeName","src":"2167:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10386,"mutability":"mutable","name":"bptSymbol","nameLocation":"2204:9:54","nodeType":"VariableDeclaration","scope":10405,"src":"2190:23:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10385,"name":"string","nodeType":"ElementaryTypeName","src":"2190:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2151:63:54"},"returnParameters":{"id":10395,"nodeType":"ParameterList","parameters":[],"src":"2255:0:54"},"scope":10732,"src":"2140:182:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[39287],"body":{"id":10413,"nodeType":"Block","src":"2417:32:54","statements":[{"expression":{"id":10411,"name":"_bptName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10377,"src":"2434:8:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10410,"id":10412,"nodeType":"Return","src":"2427:15:54"}]},"documentation":{"id":10406,"nodeType":"StructuredDocumentation","src":"2328:30:54","text":"@inheritdoc IERC20Metadata"},"functionSelector":"06fdde03","id":10414,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2372:4:54","nodeType":"FunctionDefinition","parameters":{"id":10407,"nodeType":"ParameterList","parameters":[],"src":"2376:2:54"},"returnParameters":{"id":10410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10414,"src":"2402:13:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10408,"name":"string","nodeType":"ElementaryTypeName","src":"2402:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2401:15:54"},"scope":10732,"src":"2363:86:54","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[39293],"body":{"id":10422,"nodeType":"Block","src":"2546:34:54","statements":[{"expression":{"id":10420,"name":"_bptSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10379,"src":"2563:10:54","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10419,"id":10421,"nodeType":"Return","src":"2556:17:54"}]},"documentation":{"id":10415,"nodeType":"StructuredDocumentation","src":"2455:30:54","text":"@inheritdoc IERC20Metadata"},"functionSelector":"95d89b41","id":10423,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2499:6:54","nodeType":"FunctionDefinition","parameters":{"id":10416,"nodeType":"ParameterList","parameters":[],"src":"2505:2:54"},"returnParameters":{"id":10419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10418,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10423,"src":"2531:13:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10417,"name":"string","nodeType":"ElementaryTypeName","src":"2531:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2530:15:54"},"scope":10732,"src":"2490:90:54","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[39299],"body":{"id":10431,"nodeType":"Block","src":"2671:65:54","statements":[{"expression":{"hexValue":"3138","id":10429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2727:2:54","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":10428,"id":10430,"nodeType":"Return","src":"2720:9:54"}]},"documentation":{"id":10424,"nodeType":"StructuredDocumentation","src":"2586:30:54","text":"@inheritdoc IERC20Metadata"},"functionSelector":"313ce567","id":10432,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2630:8:54","nodeType":"FunctionDefinition","parameters":{"id":10425,"nodeType":"ParameterList","parameters":[],"src":"2638:2:54"},"returnParameters":{"id":10428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10432,"src":"2664:5:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10426,"name":"uint8","nodeType":"ElementaryTypeName","src":"2664:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2663:7:54"},"scope":10732,"src":"2621:115:54","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[39223],"body":{"id":10446,"nodeType":"Block","src":"2822:57:54","statements":[{"expression":{"arguments":[{"arguments":[{"id":10442,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2866:4:54","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}],"id":10441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2858:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10440,"name":"address","nodeType":"ElementaryTypeName","src":"2858:7:54","typeDescriptions":{}}},"id":10443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10438,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"2839:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2846:11:54","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":4011,"src":"2839:18:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:33:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10437,"id":10445,"nodeType":"Return","src":"2832:40:54"}]},"documentation":{"id":10433,"nodeType":"StructuredDocumentation","src":"2742:22:54","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","id":10447,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2778:11:54","nodeType":"FunctionDefinition","parameters":{"id":10434,"nodeType":"ParameterList","parameters":[],"src":"2789:2:54"},"returnParameters":{"id":10437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10447,"src":"2813:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10435,"name":"uint256","nodeType":"ElementaryTypeName","src":"2813:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2812:9:54"},"scope":10732,"src":"2769:110:54","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":10455,"nodeType":"Block","src":"2934:30:54","statements":[{"expression":{"id":10453,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"2951:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"functionReturnParameters":10452,"id":10454,"nodeType":"Return","src":"2944:13:54"}]},"functionSelector":"8d928af8","id":10456,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nameLocation":"2894:8:54","nodeType":"FunctionDefinition","parameters":{"id":10448,"nodeType":"ParameterList","parameters":[],"src":"2902:2:54"},"returnParameters":{"id":10452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10456,"src":"2926:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":10450,"nodeType":"UserDefinedTypeName","pathNode":{"id":10449,"name":"IVault","nameLocations":["2926:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"2926:6:54"},"referencedDeclaration":2893,"src":"2926:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2925:8:54"},"scope":10732,"src":"2885:79:54","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[39231],"body":{"id":10473,"nodeType":"Block","src":"3065:64:54","statements":[{"expression":{"arguments":[{"arguments":[{"id":10468,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3107:4:54","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}],"id":10467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3099:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10466,"name":"address","nodeType":"ElementaryTypeName","src":"3099:7:54","typeDescriptions":{}}},"id":10469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3099:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10470,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10459,"src":"3114:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10464,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3082:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3089:9:54","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":4021,"src":"3082:16:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":10471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3082:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10463,"id":10472,"nodeType":"Return","src":"3075:47:54"}]},"documentation":{"id":10457,"nodeType":"StructuredDocumentation","src":"2970:22:54","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","id":10474,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3006:9:54","nodeType":"FunctionDefinition","parameters":{"id":10460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10459,"mutability":"mutable","name":"account","nameLocation":"3024:7:54","nodeType":"VariableDeclaration","scope":10474,"src":"3016:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10458,"name":"address","nodeType":"ElementaryTypeName","src":"3016:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3015:17:54"},"returnParameters":{"id":10463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10462,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10474,"src":"3056:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10461,"name":"uint256","nodeType":"ElementaryTypeName","src":"3056:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3055:9:54"},"scope":10732,"src":"2997:132:54","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[39241],"body":{"id":10495,"nodeType":"Block","src":"3232:180:54","statements":[{"expression":{"arguments":[{"expression":{"id":10487,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3361:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3365:6:54","memberName":"sender","nodeType":"MemberAccess","src":"3361:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10489,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10477,"src":"3373:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10490,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10479,"src":"3377:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10484,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3345:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3352:8:54","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":4310,"src":"3345:15:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":10491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:39:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10492,"nodeType":"ExpressionStatement","src":"3345:39:54"},{"expression":{"hexValue":"74727565","id":10493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3401:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10483,"id":10494,"nodeType":"Return","src":"3394:11:54"}]},"documentation":{"id":10475,"nodeType":"StructuredDocumentation","src":"3135:22:54","text":"@inheritdoc IERC20"},"functionSelector":"a9059cbb","id":10496,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3171:8:54","nodeType":"FunctionDefinition","parameters":{"id":10480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10477,"mutability":"mutable","name":"to","nameLocation":"3188:2:54","nodeType":"VariableDeclaration","scope":10496,"src":"3180:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10476,"name":"address","nodeType":"ElementaryTypeName","src":"3180:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10479,"mutability":"mutable","name":"amount","nameLocation":"3200:6:54","nodeType":"VariableDeclaration","scope":10496,"src":"3192:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10478,"name":"uint256","nodeType":"ElementaryTypeName","src":"3192:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3179:28:54"},"returnParameters":{"id":10483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10496,"src":"3226:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10481,"name":"bool","nodeType":"ElementaryTypeName","src":"3226:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3225:6:54"},"scope":10732,"src":"3162:250:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[39251],"body":{"id":10516,"nodeType":"Block","src":"3528:71:54","statements":[{"expression":{"arguments":[{"arguments":[{"id":10510,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3570:4:54","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}],"id":10509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3562:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10508,"name":"address","nodeType":"ElementaryTypeName","src":"3562:7:54","typeDescriptions":{}}},"id":10511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3562:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10512,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10499,"src":"3577:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10513,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10501,"src":"3584:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10506,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3545:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3552:9:54","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":4033,"src":"3545:16:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address) view external returns (uint256)"}},"id":10514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3545:47:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10505,"id":10515,"nodeType":"Return","src":"3538:54:54"}]},"documentation":{"id":10497,"nodeType":"StructuredDocumentation","src":"3418:22:54","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","id":10517,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3454:9:54","nodeType":"FunctionDefinition","parameters":{"id":10502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10499,"mutability":"mutable","name":"owner","nameLocation":"3472:5:54","nodeType":"VariableDeclaration","scope":10517,"src":"3464:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10498,"name":"address","nodeType":"ElementaryTypeName","src":"3464:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10501,"mutability":"mutable","name":"spender","nameLocation":"3487:7:54","nodeType":"VariableDeclaration","scope":10517,"src":"3479:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10500,"name":"address","nodeType":"ElementaryTypeName","src":"3479:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3463:32:54"},"returnParameters":{"id":10505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10517,"src":"3519:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10503,"name":"uint256","nodeType":"ElementaryTypeName","src":"3519:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3518:9:54"},"scope":10732,"src":"3445:154:54","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[39261],"body":{"id":10538,"nodeType":"Block","src":"3706:184:54","statements":[{"expression":{"arguments":[{"expression":{"id":10530,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3834:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3838:6:54","memberName":"sender","nodeType":"MemberAccess","src":"3834:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10532,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10520,"src":"3846:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10533,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10522,"src":"3855:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10527,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3819:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3826:7:54","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"3819:14:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":10534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3819:43:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10535,"nodeType":"ExpressionStatement","src":"3819:43:54"},{"expression":{"hexValue":"74727565","id":10536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3879:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10526,"id":10537,"nodeType":"Return","src":"3872:11:54"}]},"documentation":{"id":10518,"nodeType":"StructuredDocumentation","src":"3605:22:54","text":"@inheritdoc IERC20"},"functionSelector":"095ea7b3","id":10539,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3641:7:54","nodeType":"FunctionDefinition","parameters":{"id":10523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10520,"mutability":"mutable","name":"spender","nameLocation":"3657:7:54","nodeType":"VariableDeclaration","scope":10539,"src":"3649:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10519,"name":"address","nodeType":"ElementaryTypeName","src":"3649:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10522,"mutability":"mutable","name":"amount","nameLocation":"3674:6:54","nodeType":"VariableDeclaration","scope":10539,"src":"3666:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10521,"name":"uint256","nodeType":"ElementaryTypeName","src":"3666:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3648:33:54"},"returnParameters":{"id":10526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10539,"src":"3700:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10524,"name":"bool","nodeType":"ElementaryTypeName","src":"3700:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3699:6:54"},"scope":10732,"src":"3632:258:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[39273],"body":{"id":10563,"nodeType":"Block","src":"4011:190:54","statements":[{"expression":{"arguments":[{"expression":{"id":10554,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4144:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4148:6:54","memberName":"sender","nodeType":"MemberAccess","src":"4144:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10556,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10542,"src":"4156:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10557,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10544,"src":"4162:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10558,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10546,"src":"4166:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10551,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"4124:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4131:12:54","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4324,"src":"4124:19:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,address,uint256) external returns (bool)"}},"id":10559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4124:49:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10560,"nodeType":"ExpressionStatement","src":"4124:49:54"},{"expression":{"hexValue":"74727565","id":10561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4190:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10550,"id":10562,"nodeType":"Return","src":"4183:11:54"}]},"documentation":{"id":10540,"nodeType":"StructuredDocumentation","src":"3896:22:54","text":"@inheritdoc IERC20"},"functionSelector":"23b872dd","id":10564,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3932:12:54","nodeType":"FunctionDefinition","parameters":{"id":10547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10542,"mutability":"mutable","name":"from","nameLocation":"3953:4:54","nodeType":"VariableDeclaration","scope":10564,"src":"3945:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10541,"name":"address","nodeType":"ElementaryTypeName","src":"3945:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10544,"mutability":"mutable","name":"to","nameLocation":"3967:2:54","nodeType":"VariableDeclaration","scope":10564,"src":"3959:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10543,"name":"address","nodeType":"ElementaryTypeName","src":"3959:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10546,"mutability":"mutable","name":"amount","nameLocation":"3979:6:54","nodeType":"VariableDeclaration","scope":10564,"src":"3971:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10545,"name":"uint256","nodeType":"ElementaryTypeName","src":"3971:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3944:42:54"},"returnParameters":{"id":10550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10564,"src":"4005:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10548,"name":"bool","nodeType":"ElementaryTypeName","src":"4005:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4004:6:54"},"scope":10732,"src":"3923:278:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10582,"nodeType":"Block","src":"4927:48:54","statements":[{"eventCall":{"arguments":[{"id":10577,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10567,"src":"4951:4:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10578,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10569,"src":"4957:2:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10579,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10571,"src":"4961:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10576,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39208,"src":"4942:8:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":10580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4942:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10581,"nodeType":"EmitStatement","src":"4937:31:54"}]},"documentation":{"id":10565,"nodeType":"StructuredDocumentation","src":"4754:85:54","text":"@dev Emit the Transfer event. This function can only be called by the MultiToken."},"functionSelector":"23de6651","id":10583,"implemented":true,"kind":"function","modifiers":[{"id":10574,"kind":"modifierInvocation","modifierName":{"id":10573,"name":"onlyVault","nameLocations":["4917:9:54"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"4917:9:54"},"nodeType":"ModifierInvocation","src":"4917:9:54"}],"name":"emitTransfer","nameLocation":"4853:12:54","nodeType":"FunctionDefinition","parameters":{"id":10572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10567,"mutability":"mutable","name":"from","nameLocation":"4874:4:54","nodeType":"VariableDeclaration","scope":10583,"src":"4866:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10566,"name":"address","nodeType":"ElementaryTypeName","src":"4866:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10569,"mutability":"mutable","name":"to","nameLocation":"4888:2:54","nodeType":"VariableDeclaration","scope":10583,"src":"4880:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10568,"name":"address","nodeType":"ElementaryTypeName","src":"4880:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10571,"mutability":"mutable","name":"amount","nameLocation":"4900:6:54","nodeType":"VariableDeclaration","scope":10583,"src":"4892:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10570,"name":"uint256","nodeType":"ElementaryTypeName","src":"4892:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4865:42:54"},"returnParameters":{"id":10575,"nodeType":"ParameterList","parameters":[],"src":"4927:0:54"},"scope":10732,"src":"4844:131:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10601,"nodeType":"Block","src":"5160:54:54","statements":[{"eventCall":{"arguments":[{"id":10596,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10586,"src":"5184:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10597,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10588,"src":"5191:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10598,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10590,"src":"5200:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10595,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39217,"src":"5175:8:54","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":10599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5175:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10600,"nodeType":"EmitStatement","src":"5170:37:54"}]},"documentation":{"id":10584,"nodeType":"StructuredDocumentation","src":"4981:85:54","text":"@dev Emit the Approval event. This function can only be called by the MultiToken."},"functionSelector":"5687f2b8","id":10602,"implemented":true,"kind":"function","modifiers":[{"id":10593,"kind":"modifierInvocation","modifierName":{"id":10592,"name":"onlyVault","nameLocations":["5150:9:54"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"5150:9:54"},"nodeType":"ModifierInvocation","src":"5150:9:54"}],"name":"emitApproval","nameLocation":"5080:12:54","nodeType":"FunctionDefinition","parameters":{"id":10591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10586,"mutability":"mutable","name":"owner","nameLocation":"5101:5:54","nodeType":"VariableDeclaration","scope":10602,"src":"5093:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10585,"name":"address","nodeType":"ElementaryTypeName","src":"5093:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10588,"mutability":"mutable","name":"spender","nameLocation":"5116:7:54","nodeType":"VariableDeclaration","scope":10602,"src":"5108:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10587,"name":"address","nodeType":"ElementaryTypeName","src":"5108:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10590,"mutability":"mutable","name":"amount","nameLocation":"5133:6:54","nodeType":"VariableDeclaration","scope":10602,"src":"5125:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10589,"name":"uint256","nodeType":"ElementaryTypeName","src":"5125:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5092:48:54"},"returnParameters":{"id":10594,"nodeType":"ParameterList","parameters":[],"src":"5160:0:54"},"scope":10732,"src":"5071:143:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[39321],"body":{"id":10679,"nodeType":"Block","src":"5442:545:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10619,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5510:5:54","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5516:9:54","memberName":"timestamp","nodeType":"MemberAccess","src":"5510:15:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":10621,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10610,"src":"5528:8:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5510:26:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10628,"nodeType":"IfStatement","src":"5506:97:54","trueBody":{"id":10627,"nodeType":"Block","src":"5538:65:54","statements":[{"errorCall":{"arguments":[{"id":10624,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10610,"src":"5583:8:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10623,"name":"ERC2612ExpiredSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10368,"src":"5559:23:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":10625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5559:33:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10626,"nodeType":"RevertStatement","src":"5552:40:54"}]}},{"assignments":[10630],"declarations":[{"constant":false,"id":10630,"mutability":"mutable","name":"structHash","nameLocation":"5621:10:54","nodeType":"VariableDeclaration","scope":10679,"src":"5613:18:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10629,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5613:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":10644,"initialValue":{"arguments":[{"arguments":[{"id":10634,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10363,"src":"5655:15:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10635,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"5672:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10636,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10606,"src":"5679:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10637,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10608,"src":"5688:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10639,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"5706:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10638,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40024,"src":"5696:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":10640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5696:16:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10641,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10610,"src":"5714:8:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10632,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5644:3:54","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5648:6:54","memberName":"encode","nodeType":"MemberAccess","src":"5644:10:54","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5644:79:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10631,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5634:9:54","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5634:90:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5613:111:54"},{"assignments":[10646],"declarations":[{"constant":false,"id":10646,"mutability":"mutable","name":"hash","nameLocation":"5743:4:54","nodeType":"VariableDeclaration","scope":10679,"src":"5735:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5735:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":10650,"initialValue":{"arguments":[{"id":10648,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10630,"src":"5767:10:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10647,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41140,"src":"5750:16:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":10649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5750:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5735:43:54"},{"assignments":[10652],"declarations":[{"constant":false,"id":10652,"mutability":"mutable","name":"signer","nameLocation":"5797:6:54","nodeType":"VariableDeclaration","scope":10679,"src":"5789:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10651,"name":"address","nodeType":"ElementaryTypeName","src":"5789:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10660,"initialValue":{"arguments":[{"id":10655,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"5820:4:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10656,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10612,"src":"5826:1:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":10657,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10614,"src":"5829:1:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10658,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10616,"src":"5832:1:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10653,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40980,"src":"5806:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$40980_$","typeString":"type(library ECDSA)"}},"id":10654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5812:7:54","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":40930,"src":"5806:13:54","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":10659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5806:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5789:45:54"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10661,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"5848:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":10662,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"5858:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5848:15:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10670,"nodeType":"IfStatement","src":"5844:88:54","trueBody":{"id":10669,"nodeType":"Block","src":"5865:67:54","statements":[{"errorCall":{"arguments":[{"id":10665,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"5907:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10666,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"5915:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10664,"name":"ERC2612InvalidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10375,"src":"5886:20:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":10667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5886:35:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10668,"nodeType":"RevertStatement","src":"5879:42:54"}]}},{"expression":{"arguments":[{"id":10674,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"5957:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10675,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10606,"src":"5964:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10676,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10608,"src":"5973:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10671,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"5942:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5949:7:54","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":4045,"src":"5942:14:54","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":10677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5942:38:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10678,"nodeType":"ExpressionStatement","src":"5942:38:54"}]},"functionSelector":"d505accf","id":10680,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nameLocation":"5261:6:54","nodeType":"FunctionDefinition","parameters":{"id":10617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10604,"mutability":"mutable","name":"owner","nameLocation":"5285:5:54","nodeType":"VariableDeclaration","scope":10680,"src":"5277:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10603,"name":"address","nodeType":"ElementaryTypeName","src":"5277:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10606,"mutability":"mutable","name":"spender","nameLocation":"5308:7:54","nodeType":"VariableDeclaration","scope":10680,"src":"5300:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10605,"name":"address","nodeType":"ElementaryTypeName","src":"5300:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10608,"mutability":"mutable","name":"amount","nameLocation":"5333:6:54","nodeType":"VariableDeclaration","scope":10680,"src":"5325:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10607,"name":"uint256","nodeType":"ElementaryTypeName","src":"5325:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10610,"mutability":"mutable","name":"deadline","nameLocation":"5357:8:54","nodeType":"VariableDeclaration","scope":10680,"src":"5349:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10609,"name":"uint256","nodeType":"ElementaryTypeName","src":"5349:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10612,"mutability":"mutable","name":"v","nameLocation":"5381:1:54","nodeType":"VariableDeclaration","scope":10680,"src":"5375:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10611,"name":"uint8","nodeType":"ElementaryTypeName","src":"5375:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10614,"mutability":"mutable","name":"r","nameLocation":"5400:1:54","nodeType":"VariableDeclaration","scope":10680,"src":"5392:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5392:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10616,"mutability":"mutable","name":"s","nameLocation":"5419:1:54","nodeType":"VariableDeclaration","scope":10680,"src":"5411:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5411:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5267:159:54"},"returnParameters":{"id":10618,"nodeType":"ParameterList","parameters":[],"src":"5442:0:54"},"scope":10732,"src":"5252:735:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[39329,40009],"body":{"id":10695,"nodeType":"Block","src":"6125:43:54","statements":[{"expression":{"arguments":[{"id":10692,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10682,"src":"6155:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10690,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6142:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_BalancerPoolToken_$10732_$","typeString":"type(contract super BalancerPoolToken)"}},"id":10691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6148:6:54","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":40009,"src":"6142:12:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6142:19:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10689,"id":10694,"nodeType":"Return","src":"6135:26:54"}]},"functionSelector":"7ecebe00","id":10696,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"6034:6:54","nodeType":"FunctionDefinition","overrides":{"id":10686,"nodeType":"OverrideSpecifier","overrides":[{"id":10684,"name":"IERC20Permit","nameLocations":["6085:12:54"],"nodeType":"IdentifierPath","referencedDeclaration":39336,"src":"6085:12:54"},{"id":10685,"name":"Nonces","nameLocations":["6099:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":40050,"src":"6099:6:54"}],"src":"6076:30:54"},"parameters":{"id":10683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10682,"mutability":"mutable","name":"owner","nameLocation":"6049:5:54","nodeType":"VariableDeclaration","scope":10696,"src":"6041:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10681,"name":"address","nodeType":"ElementaryTypeName","src":"6041:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6040:15:54"},"returnParameters":{"id":10689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10688,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10696,"src":"6116:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10687,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6115:9:54"},"scope":10732,"src":"6025:143:54","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":10705,"nodeType":"Block","src":"6319:38:54","statements":[{"expression":{"arguments":[{"expression":{"id":10701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6339:3:54","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6343:6:54","memberName":"sender","nodeType":"MemberAccess","src":"6339:10:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10700,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40024,"src":"6329:9:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":10703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6329:21:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10704,"nodeType":"ExpressionStatement","src":"6329:21:54"}]},"documentation":{"id":10697,"nodeType":"StructuredDocumentation","src":"6174:105:54","text":"@notice Increment the sender's nonce to revoke any currently granted (but not yet executed) `permit`."},"functionSelector":"627cdcb9","id":10706,"implemented":true,"kind":"function","modifiers":[],"name":"incrementNonce","nameLocation":"6293:14:54","nodeType":"FunctionDefinition","parameters":{"id":10698,"nodeType":"ParameterList","parameters":[],"src":"6307:2:54"},"returnParameters":{"id":10699,"nodeType":"ParameterList","parameters":[],"src":"6319:0:54"},"scope":10732,"src":"6284:73:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[39335],"body":{"id":10714,"nodeType":"Block","src":"6516:44:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10711,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41103,"src":"6533:18:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":10712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6533:20:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10710,"id":10713,"nodeType":"Return","src":"6526:27:54"}]},"functionSelector":"3644e515","id":10715,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"6457:16:54","nodeType":"FunctionDefinition","parameters":{"id":10707,"nodeType":"ParameterList","parameters":[],"src":"6473:2:54"},"returnParameters":{"id":10710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10715,"src":"6507:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6507:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6506:9:54"},"scope":10732,"src":"6448:112:54","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[149],"body":{"id":10730,"nodeType":"Block","src":"6956:60:54","statements":[{"expression":{"arguments":[{"arguments":[{"id":10726,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7003:4:54","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}],"id":10725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6995:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10724,"name":"address","nodeType":"ElementaryTypeName","src":"6995:7:54","typeDescriptions":{}}},"id":10727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6995:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10721,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10456,"src":"6973:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view returns (contract IVault)"}},"id":10722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6973:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":10723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6984:10:54","memberName":"getBptRate","nodeType":"MemberAccess","referencedDeclaration":4003,"src":"6973:21:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6973:36:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10720,"id":10729,"nodeType":"Return","src":"6966:43:54"}]},"documentation":{"id":10716,"nodeType":"StructuredDocumentation","src":"6566:328:54","text":" @notice Get the BPT rate, which is defined as: pool invariant/total supply.\n @dev The VaultExtension contract defines a default implementation (`getBptRate`) to calculate the rate\n of any given pool, which should be sufficient in nearly all cases.\n @return rate Rate of the pool's BPT"},"functionSelector":"679aefce","id":10731,"implemented":true,"kind":"function","modifiers":[],"name":"getRate","nameLocation":"6908:7:54","nodeType":"FunctionDefinition","parameters":{"id":10717,"nodeType":"ParameterList","parameters":[],"src":"6915:2:54"},"returnParameters":{"id":10720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10731,"src":"6947:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10718,"name":"uint256","nodeType":"ElementaryTypeName","src":"6947:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6946:9:54"},"scope":10732,"src":"6899:117:54","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":10733,"src":"1269:5749:54","usedErrors":[3422,10368,10375,39992,40064,40066,40643,40648,40653],"usedEvents":[39003,39208,39217]}],"src":"46:6973:54"},"id":54},"@balancer-labs/v3-vault/contracts/BaseHooks.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/BaseHooks.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AfterSwapParams":[4583],"BaseHooks":[10975],"HookFlags":[4409],"IHooks":[1887],"LiquidityManagement":[4362],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"TokenConfig":[4476]},"id":10976,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10734,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:55"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","id":10736,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10976,"sourceUnit":1888,"src":"72:81:55","symbolAliases":[{"foreign":{"id":10735,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"81:6:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":10744,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10976,"sourceUnit":4654,"src":"154:222:55","symbolAliases":[{"foreign":{"id":10737,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"167:16:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10738,"name":"HookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"189:9:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10739,"name":"LiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"204:19:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10740,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"229:19:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10741,"name":"TokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4476,"src":"254:11:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10742,"name":"PoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"271:14:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10743,"name":"AfterSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"291:15:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10746,"name":"IHooks","nameLocations":["753:6:55"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"753:6:55"},"id":10747,"nodeType":"InheritanceSpecifier","src":"753:6:55"}],"canonicalName":"BaseHooks","contractDependencies":[],"contractKind":"contract","documentation":{"id":10745,"nodeType":"StructuredDocumentation","src":"378:343:55","text":" @notice Base for pool hooks contracts.\n @dev Hook contracts that only implement a subset of callbacks can inherit from here instead of IHooks,\n and only override what they need. `VaultGuard` allows use of the `onlyVault` modifier, which isn't used\n in this abstract contract, but should be used in real derived hook contracts."},"fullyImplemented":false,"id":10975,"linearizedBaseContracts":[10975,1887],"name":"BaseHooks","nameLocation":"740:9:55","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[1714],"body":{"id":10766,"nodeType":"Block","src":"951:126:55","statements":[{"expression":{"hexValue":"66616c7365","id":10764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1065:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10763,"id":10765,"nodeType":"Return","src":"1058:12:55"}]},"documentation":{"id":10748,"nodeType":"StructuredDocumentation","src":"766:22:55","text":"@inheritdoc IHooks"},"functionSelector":"0b89f182","id":10767,"implemented":true,"kind":"function","modifiers":[],"name":"onRegister","nameLocation":"802:10:55","nodeType":"FunctionDefinition","parameters":{"id":10760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10767,"src":"822:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10749,"name":"address","nodeType":"ElementaryTypeName","src":"822:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10767,"src":"839:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10751,"name":"address","nodeType":"ElementaryTypeName","src":"839:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10767,"src":"856:20:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":10754,"nodeType":"UserDefinedTypeName","pathNode":{"id":10753,"name":"TokenConfig","nameLocations":["856:11:55"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"856:11:55"},"referencedDeclaration":4476,"src":"856:11:55","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":10755,"nodeType":"ArrayTypeName","src":"856:13:55","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":10759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10767,"src":"886:28:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":10758,"nodeType":"UserDefinedTypeName","pathNode":{"id":10757,"name":"LiquidityManagement","nameLocations":["886:19:55"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"886:19:55"},"referencedDeclaration":4362,"src":"886:19:55","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"812:108:55"},"returnParameters":{"id":10763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10762,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10767,"src":"945:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10761,"name":"bool","nodeType":"ElementaryTypeName","src":"945:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"944:6:55"},"scope":10975,"src":"793:284:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1721],"documentation":{"id":10768,"nodeType":"StructuredDocumentation","src":"1083:22:55","text":"@inheritdoc IHooks"},"functionSelector":"d77153a7","id":10774,"implemented":false,"kind":"function","modifiers":[],"name":"getHookFlags","nameLocation":"1119:12:55","nodeType":"FunctionDefinition","parameters":{"id":10769,"nodeType":"ParameterList","parameters":[],"src":"1131:2:55"},"returnParameters":{"id":10773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10774,"src":"1163:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags"},"typeName":{"id":10771,"nodeType":"UserDefinedTypeName","pathNode":{"id":10770,"name":"HookFlags","nameLocations":["1163:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"1163:9:55"},"referencedDeclaration":4409,"src":"1163:9:55","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage_ptr","typeString":"struct HookFlags"}},"visibility":"internal"}],"src":"1162:18:55"},"scope":10975,"src":"1110:71:55","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1732],"body":{"id":10787,"nodeType":"Block","src":"1304:29:55","statements":[{"expression":{"hexValue":"66616c7365","id":10785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1321:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10784,"id":10786,"nodeType":"Return","src":"1314:12:55"}]},"documentation":{"id":10775,"nodeType":"StructuredDocumentation","src":"1187:22:55","text":"@inheritdoc IHooks"},"functionSelector":"1c149e28","id":10788,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeInitialize","nameLocation":"1223:18:55","nodeType":"FunctionDefinition","parameters":{"id":10781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10788,"src":"1242:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10776,"name":"uint256","nodeType":"ElementaryTypeName","src":"1242:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10777,"nodeType":"ArrayTypeName","src":"1242:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10788,"src":"1260:12:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10779,"name":"bytes","nodeType":"ElementaryTypeName","src":"1260:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1241:32:55"},"returnParameters":{"id":10784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10783,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10788,"src":"1298:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10782,"name":"bool","nodeType":"ElementaryTypeName","src":"1298:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1297:6:55"},"scope":10975,"src":"1214:119:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1745],"body":{"id":10803,"nodeType":"Block","src":"1464:29:55","statements":[{"expression":{"hexValue":"66616c7365","id":10801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1481:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10800,"id":10802,"nodeType":"Return","src":"1474:12:55"}]},"documentation":{"id":10789,"nodeType":"StructuredDocumentation","src":"1339:22:55","text":"@inheritdoc IHooks"},"functionSelector":"38be241d","id":10804,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterInitialize","nameLocation":"1375:17:55","nodeType":"FunctionDefinition","parameters":{"id":10797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10804,"src":"1393:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10790,"name":"uint256","nodeType":"ElementaryTypeName","src":"1393:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10791,"nodeType":"ArrayTypeName","src":"1393:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10804,"src":"1411:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10793,"name":"uint256","nodeType":"ElementaryTypeName","src":"1411:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10804,"src":"1420:12:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10795,"name":"bytes","nodeType":"ElementaryTypeName","src":"1420:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1392:41:55"},"returnParameters":{"id":10800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10799,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10804,"src":"1458:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10798,"name":"bool","nodeType":"ElementaryTypeName","src":"1458:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1457:6:55"},"scope":10975,"src":"1366:127:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1768],"body":{"id":10829,"nodeType":"Block","src":"1743:29:55","statements":[{"expression":{"hexValue":"66616c7365","id":10827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1760:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10826,"id":10828,"nodeType":"Return","src":"1753:12:55"}]},"documentation":{"id":10805,"nodeType":"StructuredDocumentation","src":"1499:22:55","text":"@inheritdoc IHooks"},"functionSelector":"45421ec7","id":10830,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeAddLiquidity","nameLocation":"1535:20:55","nodeType":"FunctionDefinition","parameters":{"id":10823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10807,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1565:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10806,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1582:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10808,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1599:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":10811,"nodeType":"UserDefinedTypeName","pathNode":{"id":10810,"name":"AddLiquidityKind","nameLocations":["1599:16:55"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"1599:16:55"},"referencedDeclaration":4589,"src":"1599:16:55","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":10815,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1625:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10813,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10814,"nodeType":"ArrayTypeName","src":"1625:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1651:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1651:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1668:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1668:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10819,"nodeType":"ArrayTypeName","src":"1668:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1694:12:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10821,"name":"bytes","nodeType":"ElementaryTypeName","src":"1694:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1555:157:55"},"returnParameters":{"id":10826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10825,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10830,"src":"1737:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10824,"name":"bool","nodeType":"ElementaryTypeName","src":"1737:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1736:6:55"},"scope":10975,"src":"1526:246:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1797],"body":{"id":10863,"nodeType":"Block","src":"2078:45:55","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":10859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2096:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":10860,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10844,"src":"2103:12:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":10861,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2095:21:55","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool,uint256[] memory)"}},"functionReturnParameters":10858,"id":10862,"nodeType":"Return","src":"2088:28:55"}]},"documentation":{"id":10831,"nodeType":"StructuredDocumentation","src":"1778:22:55","text":"@inheritdoc IHooks"},"functionSelector":"976907cc","id":10864,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterAddLiquidity","nameLocation":"1814:19:55","nodeType":"FunctionDefinition","parameters":{"id":10852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"1843:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10832,"name":"address","nodeType":"ElementaryTypeName","src":"1843:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"1860:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10834,"name":"address","nodeType":"ElementaryTypeName","src":"1860:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"1877:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":10837,"nodeType":"UserDefinedTypeName","pathNode":{"id":10836,"name":"AddLiquidityKind","nameLocations":["1877:16:55"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"1877:16:55"},"referencedDeclaration":4589,"src":"1877:16:55","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":10841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"1903:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1903:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10840,"nodeType":"ArrayTypeName","src":"1903:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10844,"mutability":"mutable","name":"amountsInRaw","nameLocation":"1946:12:55","nodeType":"VariableDeclaration","scope":10864,"src":"1929:29:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10842,"name":"uint256","nodeType":"ElementaryTypeName","src":"1929:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10843,"nodeType":"ArrayTypeName","src":"1929:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"1968:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10845,"name":"uint256","nodeType":"ElementaryTypeName","src":"1968:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"1985:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10847,"name":"uint256","nodeType":"ElementaryTypeName","src":"1985:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10848,"nodeType":"ArrayTypeName","src":"1985:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"2011:12:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10850,"name":"bytes","nodeType":"ElementaryTypeName","src":"2011:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1833:196:55"},"returnParameters":{"id":10858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"2054:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10853,"name":"bool","nodeType":"ElementaryTypeName","src":"2054:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10864,"src":"2060:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10855,"name":"uint256","nodeType":"ElementaryTypeName","src":"2060:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10856,"nodeType":"ArrayTypeName","src":"2060:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2053:24:55"},"scope":10975,"src":"1805:318:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1820],"body":{"id":10889,"nodeType":"Block","src":"2379:29:55","statements":[{"expression":{"hexValue":"66616c7365","id":10887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2396:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10886,"id":10888,"nodeType":"Return","src":"2389:12:55"}]},"documentation":{"id":10865,"nodeType":"StructuredDocumentation","src":"2129:22:55","text":"@inheritdoc IHooks"},"functionSelector":"ba5f9f40","id":10890,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeRemoveLiquidity","nameLocation":"2165:23:55","nodeType":"FunctionDefinition","parameters":{"id":10883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2198:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10866,"name":"address","nodeType":"ElementaryTypeName","src":"2198:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2215:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10868,"name":"address","nodeType":"ElementaryTypeName","src":"2215:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10872,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2232:19:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":10871,"nodeType":"UserDefinedTypeName","pathNode":{"id":10870,"name":"RemoveLiquidityKind","nameLocations":["2232:19:55"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"2232:19:55"},"referencedDeclaration":4610,"src":"2232:19:55","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":10874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2261:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10873,"name":"uint256","nodeType":"ElementaryTypeName","src":"2261:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2278:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2278:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10876,"nodeType":"ArrayTypeName","src":"2278:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2304:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10878,"name":"uint256","nodeType":"ElementaryTypeName","src":"2304:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10879,"nodeType":"ArrayTypeName","src":"2304:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2330:12:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10881,"name":"bytes","nodeType":"ElementaryTypeName","src":"2330:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2188:160:55"},"returnParameters":{"id":10886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10890,"src":"2373:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10884,"name":"bool","nodeType":"ElementaryTypeName","src":"2373:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2372:6:55"},"scope":10975,"src":"2156:252:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1849],"body":{"id":10923,"nodeType":"Block","src":"2721:46:55","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":10919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2739:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":10920,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10906,"src":"2746:13:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":10921,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2738:22:55","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool,uint256[] memory)"}},"functionReturnParameters":10918,"id":10922,"nodeType":"Return","src":"2731:29:55"}]},"documentation":{"id":10891,"nodeType":"StructuredDocumentation","src":"2414:22:55","text":"@inheritdoc IHooks"},"functionSelector":"2754888d","id":10924,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterRemoveLiquidity","nameLocation":"2450:22:55","nodeType":"FunctionDefinition","parameters":{"id":10912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10893,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2482:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10892,"name":"address","nodeType":"ElementaryTypeName","src":"2482:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10895,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2499:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10894,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2516:19:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":10897,"nodeType":"UserDefinedTypeName","pathNode":{"id":10896,"name":"RemoveLiquidityKind","nameLocations":["2516:19:55"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"2516:19:55"},"referencedDeclaration":4610,"src":"2516:19:55","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":10900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2545:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2545:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2562:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10901,"name":"uint256","nodeType":"ElementaryTypeName","src":"2562:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10902,"nodeType":"ArrayTypeName","src":"2562:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10906,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"2605:13:55","nodeType":"VariableDeclaration","scope":10924,"src":"2588:30:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10904,"name":"uint256","nodeType":"ElementaryTypeName","src":"2588:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10905,"nodeType":"ArrayTypeName","src":"2588:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2628:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10907,"name":"uint256","nodeType":"ElementaryTypeName","src":"2628:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10908,"nodeType":"ArrayTypeName","src":"2628:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2654:12:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10910,"name":"bytes","nodeType":"ElementaryTypeName","src":"2654:5:55","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2472:200:55"},"returnParameters":{"id":10918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2697:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10913,"name":"bool","nodeType":"ElementaryTypeName","src":"2697:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10917,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10924,"src":"2703:16:55","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10915,"name":"uint256","nodeType":"ElementaryTypeName","src":"2703:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10916,"nodeType":"ArrayTypeName","src":"2703:9:55","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2696:24:55"},"scope":10975,"src":"2441:326:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1860],"body":{"id":10937,"nodeType":"Block","src":"2886:142:55","statements":[{"expression":{"hexValue":"66616c7365","id":10935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3016:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10934,"id":10936,"nodeType":"Return","src":"3009:12:55"}]},"documentation":{"id":10925,"nodeType":"StructuredDocumentation","src":"2773:22:55","text":"@inheritdoc IHooks"},"functionSelector":"5211fa77","id":10938,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeSwap","nameLocation":"2809:12:55","nodeType":"FunctionDefinition","parameters":{"id":10931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10938,"src":"2822:23:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":10927,"nodeType":"UserDefinedTypeName","pathNode":{"id":10926,"name":"PoolSwapParams","nameLocations":["2822:14:55"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"2822:14:55"},"referencedDeclaration":4554,"src":"2822:14:55","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":10930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10938,"src":"2847:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10929,"name":"address","nodeType":"ElementaryTypeName","src":"2847:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2821:34:55"},"returnParameters":{"id":10934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10933,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10938,"src":"2880:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10932,"name":"bool","nodeType":"ElementaryTypeName","src":"2880:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2879:6:55"},"scope":10975,"src":"2800:228:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1871],"body":{"id":10953,"nodeType":"Block","src":"3147:190:55","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":10949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3321:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":10950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3328:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":10951,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3320:10:55","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":10948,"id":10952,"nodeType":"Return","src":"3313:17:55"}]},"documentation":{"id":10939,"nodeType":"StructuredDocumentation","src":"3034:22:55","text":"@inheritdoc IHooks"},"functionSelector":"18b6eb55","id":10954,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterSwap","nameLocation":"3070:11:55","nodeType":"FunctionDefinition","parameters":{"id":10943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10942,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10954,"src":"3082:24:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams"},"typeName":{"id":10941,"nodeType":"UserDefinedTypeName","pathNode":{"id":10940,"name":"AfterSwapParams","nameLocations":["3082:15:55"],"nodeType":"IdentifierPath","referencedDeclaration":4583,"src":"3082:15:55"},"referencedDeclaration":4583,"src":"3082:15:55","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_storage_ptr","typeString":"struct AfterSwapParams"}},"visibility":"internal"}],"src":"3081:26:55"},"returnParameters":{"id":10948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10954,"src":"3132:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10944,"name":"bool","nodeType":"ElementaryTypeName","src":"3132:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10954,"src":"3138:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10946,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3131:15:55"},"scope":10975,"src":"3061:276:55","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1886],"body":{"id":10973,"nodeType":"Block","src":"3530:34:55","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":10969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3548:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":10970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3555:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":10971,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3547:10:55","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":10968,"id":10972,"nodeType":"Return","src":"3540:17:55"}]},"documentation":{"id":10955,"nodeType":"StructuredDocumentation","src":"3343:22:55","text":"@inheritdoc IHooks"},"functionSelector":"a0e8f5ac","id":10974,"implemented":true,"kind":"function","modifiers":[],"name":"onComputeDynamicSwapFeePercentage","nameLocation":"3379:33:55","nodeType":"FunctionDefinition","parameters":{"id":10963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10974,"src":"3422:23:55","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":10957,"nodeType":"UserDefinedTypeName","pathNode":{"id":10956,"name":"PoolSwapParams","nameLocations":["3422:14:55"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"3422:14:55"},"referencedDeclaration":4554,"src":"3422:14:55","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":10960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10974,"src":"3455:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10959,"name":"address","nodeType":"ElementaryTypeName","src":"3455:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10974,"src":"3472:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10961,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3412:73:55"},"returnParameters":{"id":10968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10974,"src":"3515:4:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10964,"name":"bool","nodeType":"ElementaryTypeName","src":"3515:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10974,"src":"3521:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10966,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3514:15:55"},"scope":10975,"src":"3370:194:55","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":10976,"src":"722:2844:55","usedErrors":[],"usedEvents":[]}],"src":"46:3521:55"},"id":55},"@balancer-labs/v3-vault/contracts/BasePoolMath.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/BasePoolMath.sol","exportedSymbols":{"BasePoolMath":[11709],"FixedPoint":[7834],"IBasePool":[1366],"Rounding":[4514]},"id":11710,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10977,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:56"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","id":10979,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11710,"sourceUnit":1367,"src":"72:87:56","symbolAliases":[{"foreign":{"id":10978,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"81:9:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":10981,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11710,"sourceUnit":4654,"src":"160:87:56","symbolAliases":[{"foreign":{"id":10980,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"169:8:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":10983,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11710,"sourceUnit":7835,"src":"249:92:56","symbolAliases":[{"foreign":{"id":10982,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"258:10:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BasePoolMath","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":11709,"linearizedBaseContracts":[11709],"name":"BasePoolMath","nameLocation":"351:12:56","nodeType":"ContractDefinition","nodes":[{"global":false,"id":10986,"libraryName":{"id":10984,"name":"FixedPoint","nameLocations":["376:10:56"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"376:10:56"},"nodeType":"UsingForDirective","src":"370:29:56","typeName":{"id":10985,"name":"uint256","nodeType":"ElementaryTypeName","src":"391:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"documentation":{"id":10987,"nodeType":"StructuredDocumentation","src":"405:390:56","text":" @notice An add liquidity operation increased the invariant above the limit.\n @dev This value is determined by each pool type, and depends on the specific math used to compute\n the price curve.\n @param invariantRatio The ratio of the new invariant (after an operation) to the old\n @param maxInvariantRatio The maximum allowed invariant ratio"},"errorSelector":"3e8960dc","id":10993,"name":"InvariantRatioAboveMax","nameLocation":"806:22:56","nodeType":"ErrorDefinition","parameters":{"id":10992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10989,"mutability":"mutable","name":"invariantRatio","nameLocation":"837:14:56","nodeType":"VariableDeclaration","scope":10993,"src":"829:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10988,"name":"uint256","nodeType":"ElementaryTypeName","src":"829:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10991,"mutability":"mutable","name":"maxInvariantRatio","nameLocation":"861:17:56","nodeType":"VariableDeclaration","scope":10993,"src":"853:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10990,"name":"uint256","nodeType":"ElementaryTypeName","src":"853:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"828:51:56"},"src":"800:80:56"},{"documentation":{"id":10994,"nodeType":"StructuredDocumentation","src":"886:392:56","text":" @notice A remove liquidity operation decreased the invariant below the limit.\n @dev This value is determined by each pool type, and depends on the specific math used to compute\n the price curve.\n @param invariantRatio The ratio of the new invariant (after an operation) to the old\n @param minInvariantRatio The minimum allowed invariant ratio"},"errorSelector":"e31c95be","id":11000,"name":"InvariantRatioBelowMin","nameLocation":"1289:22:56","nodeType":"ErrorDefinition","parameters":{"id":10999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10996,"mutability":"mutable","name":"invariantRatio","nameLocation":"1320:14:56","nodeType":"VariableDeclaration","scope":11000,"src":"1312:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10995,"name":"uint256","nodeType":"ElementaryTypeName","src":"1312:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10998,"mutability":"mutable","name":"minInvariantRatio","nameLocation":"1344:17:56","nodeType":"VariableDeclaration","scope":11000,"src":"1336:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10997,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1311:51:56"},"src":"1283:80:56"},{"body":{"id":11048,"nodeType":"Block","src":"2612:1172:56","statements":[{"expression":{"id":11021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11014,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11012,"src":"3456:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11018,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11004,"src":"3482:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3491:6:56","memberName":"length","nodeType":"MemberAccess","src":"3482:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3468:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11015,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11016,"nodeType":"ArrayTypeName","src":"3472:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3468:30:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"3456:42:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11022,"nodeType":"ExpressionStatement","src":"3456:42:56"},{"body":{"id":11046,"nodeType":"Block","src":"3554:224:56","statements":[{"expression":{"id":11044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11034,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11012,"src":"3702:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11036,"indexExpression":{"id":11035,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"3712:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3702:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11041,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11008,"src":"3738:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11042,"name":"bptTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11006,"src":"3752:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":11037,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11004,"src":"3717:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11039,"indexExpression":{"id":11038,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"3726:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3717:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3729:8:56","memberName":"mulDivUp","nodeType":"MemberAccess","referencedDeclaration":7660,"src":"3717:20:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":11043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3717:50:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3702:65:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11045,"nodeType":"ExpressionStatement","src":"3702:65:56"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11027,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"3528:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11028,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11004,"src":"3532:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3541:6:56","memberName":"length","nodeType":"MemberAccess","src":"3532:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3528:19:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11047,"initializationExpression":{"assignments":[11024],"declarations":[{"constant":false,"id":11024,"mutability":"mutable","name":"i","nameLocation":"3521:1:56","nodeType":"VariableDeclaration","scope":11047,"src":"3513:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11023,"name":"uint256","nodeType":"ElementaryTypeName","src":"3513:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11026,"initialValue":{"hexValue":"30","id":11025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3525:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3513:13:56"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3549:3:56","subExpression":{"id":11031,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11024,"src":"3551:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11033,"nodeType":"ExpressionStatement","src":"3549:3:56"},"nodeType":"ForStatement","src":"3508:270:56"}]},"documentation":{"id":11001,"nodeType":"StructuredDocumentation","src":"1603:812:56","text":" @notice Computes the proportional amounts of tokens to be deposited into the pool.\n @dev This function computes the amount of each token that needs to be deposited in order to mint a specific\n amount of pool tokens (BPT). It ensures that the amounts of tokens deposited are proportional to the current\n pool balances.\n Calculation: For each token, amountIn = balance * (bptAmountOut / bptTotalSupply).\n Rounding up is used to ensure that the pool is not underfunded.\n @param balances Array of current token balances in the pool\n @param bptTotalSupply Total supply of the pool tokens (BPT)\n @param bptAmountOut The amount of pool tokens that need to be minted\n @return amountsIn Array of amounts for each token to be deposited"},"id":11049,"implemented":true,"kind":"function","modifiers":[],"name":"computeProportionalAmountsIn","nameLocation":"2429:28:56","nodeType":"FunctionDefinition","parameters":{"id":11009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11004,"mutability":"mutable","name":"balances","nameLocation":"2484:8:56","nodeType":"VariableDeclaration","scope":11049,"src":"2467:25:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11002,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11003,"nodeType":"ArrayTypeName","src":"2467:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11006,"mutability":"mutable","name":"bptTotalSupply","nameLocation":"2510:14:56","nodeType":"VariableDeclaration","scope":11049,"src":"2502:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11005,"name":"uint256","nodeType":"ElementaryTypeName","src":"2502:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11008,"mutability":"mutable","name":"bptAmountOut","nameLocation":"2542:12:56","nodeType":"VariableDeclaration","scope":11049,"src":"2534:20:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11007,"name":"uint256","nodeType":"ElementaryTypeName","src":"2534:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2457:103:56"},"returnParameters":{"id":11013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11012,"mutability":"mutable","name":"amountsIn","nameLocation":"2601:9:56","nodeType":"VariableDeclaration","scope":11049,"src":"2584:26:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11010,"name":"uint256","nodeType":"ElementaryTypeName","src":"2584:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11011,"nodeType":"ArrayTypeName","src":"2584:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2583:28:56"},"scope":11709,"src":"2420:1364:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11098,"nodeType":"Block","src":"4812:1251:56","statements":[{"expression":{"id":11070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11063,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11061,"src":"5736:10:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11067,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11053,"src":"5763:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5772:6:56","memberName":"length","nodeType":"MemberAccess","src":"5763:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5749:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11064,"name":"uint256","nodeType":"ElementaryTypeName","src":"5753:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11065,"nodeType":"ArrayTypeName","src":"5753:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5749:30:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"5736:43:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11071,"nodeType":"ExpressionStatement","src":"5736:43:56"},{"body":{"id":11096,"nodeType":"Block","src":"5835:222:56","statements":[{"expression":{"id":11094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11083,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11061,"src":"5986:10:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11085,"indexExpression":{"id":11084,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11073,"src":"5997:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5986:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11086,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11053,"src":"6003:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11088,"indexExpression":{"id":11087,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11073,"src":"6012:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6003:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":11089,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11057,"src":"6017:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6003:25:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6002:27:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11092,"name":"bptTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11055,"src":"6032:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6002:44:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5986:60:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11095,"nodeType":"ExpressionStatement","src":"5986:60:56"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11076,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11073,"src":"5809:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11077,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11053,"src":"5813:8:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5822:6:56","memberName":"length","nodeType":"MemberAccess","src":"5813:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5809:19:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11097,"initializationExpression":{"assignments":[11073],"declarations":[{"constant":false,"id":11073,"mutability":"mutable","name":"i","nameLocation":"5802:1:56","nodeType":"VariableDeclaration","scope":11097,"src":"5794:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11072,"name":"uint256","nodeType":"ElementaryTypeName","src":"5794:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11075,"initialValue":{"hexValue":"30","id":11074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5806:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5794:13:56"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5830:3:56","subExpression":{"id":11080,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11073,"src":"5832:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11082,"nodeType":"ExpressionStatement","src":"5830:3:56"},"nodeType":"ForStatement","src":"5789:268:56"}]},"documentation":{"id":11050,"nodeType":"StructuredDocumentation","src":"3790:824:56","text":" @notice Computes the proportional amounts of tokens to be withdrawn from the pool.\n @dev This function computes the amount of each token that will be withdrawn in exchange for burning\n a specific amount of pool tokens (BPT). It ensures that the amounts of tokens withdrawn are proportional\n to the current pool balances.\n Calculation: For each token, amountOut = balance * (bptAmountIn / bptTotalSupply).\n Rounding down is used to prevent withdrawing more than the pool can afford.\n @param balances Array of current token balances in the pool\n @param bptTotalSupply Total supply of the pool tokens (BPT)\n @param bptAmountIn The amount of pool tokens that will be burned\n @return amountsOut Array of amounts for each token to be withdrawn"},"id":11099,"implemented":true,"kind":"function","modifiers":[],"name":"computeProportionalAmountsOut","nameLocation":"4628:29:56","nodeType":"FunctionDefinition","parameters":{"id":11058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11053,"mutability":"mutable","name":"balances","nameLocation":"4684:8:56","nodeType":"VariableDeclaration","scope":11099,"src":"4667:25:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11051,"name":"uint256","nodeType":"ElementaryTypeName","src":"4667:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11052,"nodeType":"ArrayTypeName","src":"4667:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11055,"mutability":"mutable","name":"bptTotalSupply","nameLocation":"4710:14:56","nodeType":"VariableDeclaration","scope":11099,"src":"4702:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11054,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11057,"mutability":"mutable","name":"bptAmountIn","nameLocation":"4742:11:56","nodeType":"VariableDeclaration","scope":11099,"src":"4734:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11056,"name":"uint256","nodeType":"ElementaryTypeName","src":"4734:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4657:102:56"},"returnParameters":{"id":11062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11061,"mutability":"mutable","name":"amountsOut","nameLocation":"4800:10:56","nodeType":"VariableDeclaration","scope":11099,"src":"4783:27:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11059,"name":"uint256","nodeType":"ElementaryTypeName","src":"4783:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11060,"nodeType":"ArrayTypeName","src":"4783:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4782:29:56"},"scope":11709,"src":"4619:1444:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11279,"nodeType":"Block","src":"7540:4654:56","statements":[{"assignments":[11122],"declarations":[{"constant":false,"id":11122,"mutability":"mutable","name":"numTokens","nameLocation":"8343:9:56","nodeType":"VariableDeclaration","scope":11279,"src":"8335:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11121,"name":"uint256","nodeType":"ElementaryTypeName","src":"8335:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11125,"initialValue":{"expression":{"id":11123,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"8355:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8371:6:56","memberName":"length","nodeType":"MemberAccess","src":"8355:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8335:42:56"},{"assignments":[11130],"declarations":[{"constant":false,"id":11130,"mutability":"mutable","name":"newBalances","nameLocation":"8484:11:56","nodeType":"VariableDeclaration","scope":11279,"src":"8467:28:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11128,"name":"uint256","nodeType":"ElementaryTypeName","src":"8467:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11129,"nodeType":"ArrayTypeName","src":"8467:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11136,"initialValue":{"arguments":[{"id":11134,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11122,"src":"8512:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8498:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11131,"name":"uint256","nodeType":"ElementaryTypeName","src":"8502:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11132,"nodeType":"ArrayTypeName","src":"8502:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8498:24:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8467:55:56"},{"expression":{"id":11143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11137,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"8606:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11141,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11122,"src":"8637:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8623:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11138,"name":"uint256","nodeType":"ElementaryTypeName","src":"8627:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11139,"nodeType":"ArrayTypeName","src":"8627:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8623:24:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"8606:41:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11144,"nodeType":"ExpressionStatement","src":"8606:41:56"},{"body":{"id":11169,"nodeType":"Block","src":"8778:125:56","statements":[{"expression":{"id":11167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11155,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"8792:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11157,"indexExpression":{"id":11156,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11146,"src":"8804:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8792:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11158,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"8809:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11160,"indexExpression":{"id":11159,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11146,"src":"8825:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8809:18:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"id":11161,"name":"exactAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11106,"src":"8830:12:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11163,"indexExpression":{"id":11162,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11146,"src":"8843:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8830:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8809:36:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8848:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8809:40:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8792:57:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11168,"nodeType":"ExpressionStatement","src":"8792:57:56"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11149,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11146,"src":"8758:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11150,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11122,"src":"8762:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8758:13:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11170,"initializationExpression":{"assignments":[11146],"declarations":[{"constant":false,"id":11146,"mutability":"mutable","name":"i","nameLocation":"8751:1:56","nodeType":"VariableDeclaration","scope":11170,"src":"8743:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11145,"name":"uint256","nodeType":"ElementaryTypeName","src":"8743:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11148,"initialValue":{"hexValue":"30","id":11147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8755:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8743:13:56"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8773:3:56","subExpression":{"id":11152,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11146,"src":"8775:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11154,"nodeType":"ExpressionStatement","src":"8773:3:56"},"nodeType":"ForStatement","src":"8738:165:56"},{"assignments":[11172],"declarations":[{"constant":false,"id":11172,"mutability":"mutable","name":"currentInvariant","nameLocation":"9115:16:56","nodeType":"VariableDeclaration","scope":11279,"src":"9107:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11171,"name":"uint256","nodeType":"ElementaryTypeName","src":"9107:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11179,"initialValue":{"arguments":[{"id":11175,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"9156:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":11176,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"9173:8:56","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":11177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9182:8:56","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"9173:17:56","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":11173,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11113,"src":"9134:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9139:16:56","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"9134:21:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":11178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9134:57:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9107:84:56"},{"assignments":[11181],"declarations":[{"constant":false,"id":11181,"mutability":"mutable","name":"invariantRatio","nameLocation":"9269:14:56","nodeType":"VariableDeclaration","scope":11279,"src":"9261:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11180,"name":"uint256","nodeType":"ElementaryTypeName","src":"9261:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11191,"initialValue":{"arguments":[{"id":11189,"name":"currentInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"9350:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11184,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"9308:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":11185,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"9321:8:56","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":11186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9330:10:56","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"9321:19:56","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":11182,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11113,"src":"9286:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9291:16:56","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"9286:21:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":11187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9286:55:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9342:7:56","memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"9286:63:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9286:81:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9261:106:56"},{"expression":{"arguments":[{"id":11193,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11113,"src":"9416:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},{"id":11194,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11181,"src":"9422:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11192,"name":"ensureInvariantRatioBelowMaximumBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"9378:37:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IBasePool_$1366_$_t_uint256_$returns$__$","typeString":"function (contract IBasePool,uint256) view"}},"id":11195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9378:59:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11196,"nodeType":"ExpressionStatement","src":"9378:59:56"},{"body":{"id":11256,"nodeType":"Block","src":"9551:1335:56","statements":[{"assignments":[11208],"declarations":[{"constant":false,"id":11208,"mutability":"mutable","name":"proportionalTokenBalance","nameLocation":"9997:24:56","nodeType":"VariableDeclaration","scope":11256,"src":"9989:32:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11207,"name":"uint256","nodeType":"ElementaryTypeName","src":"9989:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11215,"initialValue":{"arguments":[{"baseExpression":{"id":11211,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11103,"src":"10047:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11213,"indexExpression":{"id":11212,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"10063:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10047:18:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11209,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11181,"src":"10024:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10039:7:56","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"10024:22:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10024:42:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9989:77:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11216,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"10084:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11218,"indexExpression":{"id":11217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"10096:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10084:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11219,"name":"proportionalTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11208,"src":"10101:24:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:41:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11255,"nodeType":"IfStatement","src":"10080:796:56","trueBody":{"id":11254,"nodeType":"Block","src":"10127:749:56","statements":[{"assignments":[11222],"declarations":[{"constant":false,"id":11222,"mutability":"mutable","name":"taxableAmount","nameLocation":"10153:13:56","nodeType":"VariableDeclaration","scope":11254,"src":"10145:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11221,"name":"uint256","nodeType":"ElementaryTypeName","src":"10145:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11223,"nodeType":"VariableDeclarationStatement","src":"10145:21:56"},{"id":11232,"nodeType":"UncheckedBlock","src":"10184:108:56","statements":[{"expression":{"id":11230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11224,"name":"taxableAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"10216:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11225,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"10232:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11227,"indexExpression":{"id":11226,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"10244:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10232:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11228,"name":"proportionalTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11208,"src":"10249:24:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10232:41:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10216:57:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11231,"nodeType":"ExpressionStatement","src":"10216:57:56"}]},{"expression":{"id":11240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11233,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"10354:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11235,"indexExpression":{"id":11234,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"10369:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10354:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11238,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11110,"src":"10394:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11236,"name":"taxableAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"10374:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10388:5:56","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"10374:19:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10374:38:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10354:58:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11241,"nodeType":"ExpressionStatement","src":"10354:58:56"},{"expression":{"id":11252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11242,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"10810:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11244,"indexExpression":{"id":11243,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"10822:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10810:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11245,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"10827:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11247,"indexExpression":{"id":11246,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"10839:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10827:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":11248,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"10844:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11250,"indexExpression":{"id":11249,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"10859:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10844:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10827:34:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10810:51:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11253,"nodeType":"ExpressionStatement","src":"10810:51:56"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11201,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"9531:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11202,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11122,"src":"9535:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9531:13:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11257,"initializationExpression":{"assignments":[11198],"declarations":[{"constant":false,"id":11198,"mutability":"mutable","name":"i","nameLocation":"9524:1:56","nodeType":"VariableDeclaration","scope":11257,"src":"9516:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11197,"name":"uint256","nodeType":"ElementaryTypeName","src":"9516:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11200,"initialValue":{"hexValue":"30","id":11199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9528:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9516:13:56"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9546:3:56","subExpression":{"id":11204,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11198,"src":"9548:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11206,"nodeType":"ExpressionStatement","src":"9546:3:56"},"nodeType":"ForStatement","src":"9511:1375:56"},{"assignments":[11259],"declarations":[{"constant":false,"id":11259,"mutability":"mutable","name":"invariantWithFeesApplied","nameLocation":"11156:24:56","nodeType":"VariableDeclaration","scope":11279,"src":"11148:32:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11258,"name":"uint256","nodeType":"ElementaryTypeName","src":"11148:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11266,"initialValue":{"arguments":[{"id":11262,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11130,"src":"11205:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":11263,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"11218:8:56","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":11264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11227:10:56","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"11218:19:56","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":11260,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11113,"src":"11183:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11188:16:56","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"11183:21:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11183:55:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11148:90:56"},{"expression":{"id":11277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11267,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"12092:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11268,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11108,"src":"12108:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11269,"name":"invariantWithFeesApplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11259,"src":"12123:24:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11270,"name":"currentInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"12150:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12123:43:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11272,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12122:45:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12108:59:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11274,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12107:61:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11275,"name":"currentInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"12171:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12107:80:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12092:95:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11278,"nodeType":"ExpressionStatement","src":"12092:95:56"}]},"documentation":{"id":11100,"nodeType":"StructuredDocumentation","src":"6069:1174:56","text":" @notice Computes the amount of pool tokens (BPT) to be minted for an unbalanced liquidity addition.\n @dev This function handles liquidity addition where the proportion of tokens deposited does not match\n the current pool composition. It considers the current balances, exact amounts of tokens to be added,\n total supply, and swap fee percentage. The function calculates a new invariant with the added tokens,\n applying swap fees if necessary, and then calculates the amount of BPT to mint based on the change\n in the invariant.\n @param currentBalances Current pool balances, sorted in token registration order\n @param exactAmounts Array of exact amounts for each token to be added to the pool\n @param totalSupply The current total supply of the pool tokens (BPT)\n @param swapFeePercentage The swap fee percentage applied to the transaction\n @param pool The pool to which we're adding liquidity\n @return bptAmountOut The amount of pool tokens (BPT) that will be minted as a result of the liquidity addition\n @return swapFeeAmounts The amount of swap fees charged for each token"},"id":11280,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddLiquidityUnbalanced","nameLocation":"7257:29:56","nodeType":"FunctionDefinition","parameters":{"id":11114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11103,"mutability":"mutable","name":"currentBalances","nameLocation":"7313:15:56","nodeType":"VariableDeclaration","scope":11280,"src":"7296:32:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11101,"name":"uint256","nodeType":"ElementaryTypeName","src":"7296:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11102,"nodeType":"ArrayTypeName","src":"7296:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11106,"mutability":"mutable","name":"exactAmounts","nameLocation":"7355:12:56","nodeType":"VariableDeclaration","scope":11280,"src":"7338:29:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11104,"name":"uint256","nodeType":"ElementaryTypeName","src":"7338:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11105,"nodeType":"ArrayTypeName","src":"7338:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11108,"mutability":"mutable","name":"totalSupply","nameLocation":"7385:11:56","nodeType":"VariableDeclaration","scope":11280,"src":"7377:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11107,"name":"uint256","nodeType":"ElementaryTypeName","src":"7377:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11110,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"7414:17:56","nodeType":"VariableDeclaration","scope":11280,"src":"7406:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11109,"name":"uint256","nodeType":"ElementaryTypeName","src":"7406:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11113,"mutability":"mutable","name":"pool","nameLocation":"7451:4:56","nodeType":"VariableDeclaration","scope":11280,"src":"7441:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},"typeName":{"id":11112,"nodeType":"UserDefinedTypeName","pathNode":{"id":11111,"name":"IBasePool","nameLocations":["7441:9:56"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"7441:9:56"},"referencedDeclaration":1366,"src":"7441:9:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"visibility":"internal"}],"src":"7286:175:56"},"returnParameters":{"id":11120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11116,"mutability":"mutable","name":"bptAmountOut","nameLocation":"7493:12:56","nodeType":"VariableDeclaration","scope":11280,"src":"7485:20:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11115,"name":"uint256","nodeType":"ElementaryTypeName","src":"7485:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11119,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"7524:14:56","nodeType":"VariableDeclaration","scope":11280,"src":"7507:31:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11117,"name":"uint256","nodeType":"ElementaryTypeName","src":"7507:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11118,"nodeType":"ArrayTypeName","src":"7507:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7484:55:56"},"scope":11709,"src":"7248:4946:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11387,"nodeType":"Block","src":"13760:1833:56","statements":[{"assignments":[11304],"declarations":[{"constant":false,"id":11304,"mutability":"mutable","name":"newSupply","nameLocation":"13843:9:56","nodeType":"VariableDeclaration","scope":11387,"src":"13835:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11303,"name":"uint256","nodeType":"ElementaryTypeName","src":"13835:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11308,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11305,"name":"exactBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11288,"src":"13855:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11306,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"13875:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13855:31:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13835:51:56"},{"assignments":[11310],"declarations":[{"constant":false,"id":11310,"mutability":"mutable","name":"invariantRatio","nameLocation":"14184:14:56","nodeType":"VariableDeclaration","scope":11387,"src":"14176:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11309,"name":"uint256","nodeType":"ElementaryTypeName","src":"14176:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11315,"initialValue":{"arguments":[{"id":11313,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"14217:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11311,"name":"newSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11304,"src":"14201:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14211:5:56","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"14201:15:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14201:28:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14176:53:56"},{"expression":{"arguments":[{"id":11317,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11295,"src":"14277:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},{"id":11318,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11310,"src":"14283:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11316,"name":"ensureInvariantRatioBelowMaximumBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"14239:37:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IBasePool_$1366_$_t_uint256_$returns$__$","typeString":"function (contract IBasePool,uint256) view"}},"id":11319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14239:59:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11320,"nodeType":"ExpressionStatement","src":"14239:59:56"},{"assignments":[11322],"declarations":[{"constant":false,"id":11322,"mutability":"mutable","name":"newBalance","nameLocation":"14317:10:56","nodeType":"VariableDeclaration","scope":11387,"src":"14309:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11321,"name":"uint256","nodeType":"ElementaryTypeName","src":"14309:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11329,"initialValue":{"arguments":[{"id":11325,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11284,"src":"14350:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11326,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"14367:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11327,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11310,"src":"14381:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11323,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11295,"src":"14330:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14335:14:56","memberName":"computeBalance","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"14330:19:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256,uint256) view external returns (uint256)"}},"id":11328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14330:66:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14309:87:56"},{"assignments":[11331],"declarations":[{"constant":false,"id":11331,"mutability":"mutable","name":"amountIn","nameLocation":"14476:8:56","nodeType":"VariableDeclaration","scope":11387,"src":"14468:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11330,"name":"uint256","nodeType":"ElementaryTypeName","src":"14468:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11337,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11332,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11322,"src":"14487:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":11333,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11284,"src":"14500:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11335,"indexExpression":{"id":11334,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"14516:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14500:29:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14487:42:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14468:61:56"},{"assignments":[11339],"declarations":[{"constant":false,"id":11339,"mutability":"mutable","name":"nonTaxableBalance","nameLocation":"14816:17:56","nodeType":"VariableDeclaration","scope":11387,"src":"14808:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11338,"name":"uint256","nodeType":"ElementaryTypeName","src":"14808:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11348,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11340,"name":"newSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11304,"src":"14837:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"baseExpression":{"id":11341,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11284,"src":"14849:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11343,"indexExpression":{"id":11342,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"14865:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14849:29:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14837:41:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11345,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14836:43:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":11346,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"14882:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14836:57:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14808:85:56"},{"assignments":[11350],"declarations":[{"constant":false,"id":11350,"mutability":"mutable","name":"taxableAmount","nameLocation":"15048:13:56","nodeType":"VariableDeclaration","scope":11387,"src":"15040:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11349,"name":"uint256","nodeType":"ElementaryTypeName","src":"15040:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11354,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11351,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11322,"src":"15064:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11352,"name":"nonTaxableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"15077:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15064:30:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15040:54:56"},{"assignments":[11356],"declarations":[{"constant":false,"id":11356,"mutability":"mutable","name":"fee","nameLocation":"15204:3:56","nodeType":"VariableDeclaration","scope":11387,"src":"15196:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11355,"name":"uint256","nodeType":"ElementaryTypeName","src":"15196:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11365,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11359,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11292,"src":"15230:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15248:10:56","memberName":"complement","nodeType":"MemberAccess","referencedDeclaration":7833,"src":"15230:28:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":11361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15230:30:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11357,"name":"taxableAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"15210:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15224:5:56","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"15210:19:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15210:51:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11363,"name":"taxableAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11350,"src":"15264:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15210:67:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15196:81:56"},{"expression":{"id":11373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11366,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11301,"src":"15363:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11370,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11284,"src":"15394:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15410:6:56","memberName":"length","nodeType":"MemberAccess","src":"15394:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15380:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11367,"name":"uint256","nodeType":"ElementaryTypeName","src":"15384:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11368,"nodeType":"ArrayTypeName","src":"15384:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15380:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"15363:54:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11374,"nodeType":"ExpressionStatement","src":"15363:54:56"},{"expression":{"id":11379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11375,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11301,"src":"15427:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11377,"indexExpression":{"id":11376,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"15442:12:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15427:28:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11378,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11356,"src":"15458:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15427:34:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11380,"nodeType":"ExpressionStatement","src":"15427:34:56"},{"expression":{"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11381,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11298,"src":"15554:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11382,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"15572:8:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11383,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11356,"src":"15583:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15572:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15554:32:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11386,"nodeType":"ExpressionStatement","src":"15554:32:56"}]},"documentation":{"id":11281,"nodeType":"StructuredDocumentation","src":"12200:1225:56","text":" @notice Computes the amount of input token needed to receive an exact amount of pool tokens (BPT) in a\n single-token liquidity addition.\n @dev This function is used when a user wants to add liquidity to the pool by specifying the exact amount\n of pool tokens they want to receive, and the function calculates the corresponding amount of the input token.\n It considers the current pool balances, total supply, swap fee percentage, and the desired BPT amount.\n @param currentBalances Array of current token balances in the pool, sorted in token registration order\n @param tokenInIndex Index of the input token for which the amount needs to be calculated\n @param exactBptAmountOut Exact amount of pool tokens (BPT) the user wants to receive\n @param totalSupply The current total supply of the pool tokens (BPT)\n @param swapFeePercentage The swap fee percentage applied to the taxable amount\n @param pool The pool to which we're adding liquidity\n @return amountInWithFee The amount of input token needed, including the swap fee, to receive the exact BPT amount\n @return swapFeeAmounts The amount of swap fees charged for each token"},"id":11388,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddLiquiditySingleTokenExactOut","nameLocation":"13439:38:56","nodeType":"FunctionDefinition","parameters":{"id":11296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11284,"mutability":"mutable","name":"currentBalances","nameLocation":"13504:15:56","nodeType":"VariableDeclaration","scope":11388,"src":"13487:32:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11282,"name":"uint256","nodeType":"ElementaryTypeName","src":"13487:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11283,"nodeType":"ArrayTypeName","src":"13487:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11286,"mutability":"mutable","name":"tokenInIndex","nameLocation":"13537:12:56","nodeType":"VariableDeclaration","scope":11388,"src":"13529:20:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11285,"name":"uint256","nodeType":"ElementaryTypeName","src":"13529:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11288,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"13567:17:56","nodeType":"VariableDeclaration","scope":11388,"src":"13559:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11287,"name":"uint256","nodeType":"ElementaryTypeName","src":"13559:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11290,"mutability":"mutable","name":"totalSupply","nameLocation":"13602:11:56","nodeType":"VariableDeclaration","scope":11388,"src":"13594:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11289,"name":"uint256","nodeType":"ElementaryTypeName","src":"13594:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11292,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"13631:17:56","nodeType":"VariableDeclaration","scope":11388,"src":"13623:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11291,"name":"uint256","nodeType":"ElementaryTypeName","src":"13623:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11295,"mutability":"mutable","name":"pool","nameLocation":"13668:4:56","nodeType":"VariableDeclaration","scope":11388,"src":"13658:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},"typeName":{"id":11294,"nodeType":"UserDefinedTypeName","pathNode":{"id":11293,"name":"IBasePool","nameLocations":["13658:9:56"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"13658:9:56"},"referencedDeclaration":1366,"src":"13658:9:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"visibility":"internal"}],"src":"13477:201:56"},"returnParameters":{"id":11302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11298,"mutability":"mutable","name":"amountInWithFee","nameLocation":"13710:15:56","nodeType":"VariableDeclaration","scope":11388,"src":"13702:23:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11297,"name":"uint256","nodeType":"ElementaryTypeName","src":"13702:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11301,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"13744:14:56","nodeType":"VariableDeclaration","scope":11388,"src":"13727:31:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11299,"name":"uint256","nodeType":"ElementaryTypeName","src":"13727:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11300,"nodeType":"ArrayTypeName","src":"13727:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"13701:58:56"},"scope":11709,"src":"13430:2163:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11552,"nodeType":"Block","src":"16633:3561:56","statements":[{"assignments":[11412],"declarations":[{"constant":false,"id":11412,"mutability":"mutable","name":"numTokens","nameLocation":"16706:9:56","nodeType":"VariableDeclaration","scope":11552,"src":"16698:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11411,"name":"uint256","nodeType":"ElementaryTypeName","src":"16698:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11415,"initialValue":{"expression":{"id":11413,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11392,"src":"16718:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16734:6:56","memberName":"length","nodeType":"MemberAccess","src":"16718:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16698:42:56"},{"assignments":[11420],"declarations":[{"constant":false,"id":11420,"mutability":"mutable","name":"newBalances","nameLocation":"16828:11:56","nodeType":"VariableDeclaration","scope":11552,"src":"16811:28:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11418,"name":"uint256","nodeType":"ElementaryTypeName","src":"16811:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11419,"nodeType":"ArrayTypeName","src":"16811:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11426,"initialValue":{"arguments":[{"id":11424,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"16856:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16842:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11421,"name":"uint256","nodeType":"ElementaryTypeName","src":"16846:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11422,"nodeType":"ArrayTypeName","src":"16846:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16842:24:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16811:55:56"},{"body":{"id":11447,"nodeType":"Block","src":"16965:64:56","statements":[{"expression":{"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11437,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"16979:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11439,"indexExpression":{"id":11438,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11428,"src":"16991:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16979:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11440,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11392,"src":"16996:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11442,"indexExpression":{"id":11441,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11428,"src":"17012:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16996:18:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17017:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16996:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16979:39:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11446,"nodeType":"ExpressionStatement","src":"16979:39:56"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11428,"src":"16945:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11432,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"16949:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16945:13:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11448,"initializationExpression":{"assignments":[11428],"declarations":[{"constant":false,"id":11428,"mutability":"mutable","name":"i","nameLocation":"16938:1:56","nodeType":"VariableDeclaration","scope":11448,"src":"16930:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11427,"name":"uint256","nodeType":"ElementaryTypeName","src":"16930:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11430,"initialValue":{"hexValue":"30","id":11429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16942:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16930:13:56"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16960:3:56","subExpression":{"id":11434,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11428,"src":"16962:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11436,"nodeType":"ExpressionStatement","src":"16960:3:56"},"nodeType":"ForStatement","src":"16925:104:56"},{"expression":{"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11449,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"17107:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11451,"indexExpression":{"id":11450,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"17119:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17107:26:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11452,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"17136:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11454,"indexExpression":{"id":11453,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"17148:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17136:26:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11455,"name":"exactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11396,"src":"17165:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17136:43:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17107:72:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11458,"nodeType":"ExpressionStatement","src":"17107:72:56"},{"assignments":[11460],"declarations":[{"constant":false,"id":11460,"mutability":"mutable","name":"currentInvariant","nameLocation":"17711:16:56","nodeType":"VariableDeclaration","scope":11552,"src":"17703:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11459,"name":"uint256","nodeType":"ElementaryTypeName","src":"17703:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11467,"initialValue":{"arguments":[{"id":11463,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11392,"src":"17752:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":11464,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"17769:8:56","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":11465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17778:8:56","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"17769:17:56","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":11461,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"17730:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17735:16:56","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"17730:21:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":11466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17730:57:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17703:84:56"},{"assignments":[11469],"declarations":[{"constant":false,"id":11469,"mutability":"mutable","name":"invariantRatio","nameLocation":"18164:14:56","nodeType":"VariableDeclaration","scope":11552,"src":"18156:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11468,"name":"uint256","nodeType":"ElementaryTypeName","src":"18156:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11479,"initialValue":{"arguments":[{"id":11477,"name":"currentInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"18241:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11472,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"18203:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":11473,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"18216:8:56","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":11474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18225:8:56","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"18216:17:56","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":11470,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"18181:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18186:16:56","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"18181:21:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":11475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18181:53:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18235:5:56","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"18181:59:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18181:77:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18156:102:56"},{"expression":{"arguments":[{"id":11481,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"18307:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},{"id":11482,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11469,"src":"18313:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11480,"name":"ensureInvariantRatioAboveMinimumBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11708,"src":"18269:37:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IBasePool_$1366_$_t_uint256_$returns$__$","typeString":"function (contract IBasePool,uint256) view"}},"id":11483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18269:59:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11484,"nodeType":"ExpressionStatement","src":"18269:59:56"},{"assignments":[11486],"declarations":[{"constant":false,"id":11486,"mutability":"mutable","name":"taxableAmount","nameLocation":"18462:13:56","nodeType":"VariableDeclaration","scope":11552,"src":"18454:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11485,"name":"uint256","nodeType":"ElementaryTypeName","src":"18454:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11497,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11489,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11392,"src":"18499:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11491,"indexExpression":{"id":11490,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"18515:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18499:30:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11487,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11469,"src":"18478:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18493:5:56","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"18478:20:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18478:52:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"id":11493,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"18533:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11495,"indexExpression":{"id":11494,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"18545:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18533:26:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18478:81:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18454:105:56"},{"assignments":[11499],"declarations":[{"constant":false,"id":11499,"mutability":"mutable","name":"fee","nameLocation":"18759:3:56","nodeType":"VariableDeclaration","scope":11552,"src":"18751:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11498,"name":"uint256","nodeType":"ElementaryTypeName","src":"18751:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11508,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11502,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11400,"src":"18785:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18803:10:56","memberName":"complement","nodeType":"MemberAccess","referencedDeclaration":7833,"src":"18785:28:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":11504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18785:30:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11500,"name":"taxableAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"18765:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18779:5:56","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"18765:19:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18765:51:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11506,"name":"taxableAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11486,"src":"18819:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18765:67:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18751:81:56"},{"expression":{"id":11517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11509,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"18892:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11511,"indexExpression":{"id":11510,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"18904:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18892:26:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11512,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"18921:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11514,"indexExpression":{"id":11513,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"18933:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18921:26:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11515,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"18950:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18921:32:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18892:61:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11518,"nodeType":"ExpressionStatement","src":"18892:61:56"},{"assignments":[11520],"declarations":[{"constant":false,"id":11520,"mutability":"mutable","name":"invariantWithFeesApplied","nameLocation":"19097:24:56","nodeType":"VariableDeclaration","scope":11552,"src":"19089:32:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11519,"name":"uint256","nodeType":"ElementaryTypeName","src":"19089:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11527,"initialValue":{"arguments":[{"id":11523,"name":"newBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11420,"src":"19146:11:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":11524,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"19159:8:56","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":11525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19168:10:56","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"19159:19:56","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":11521,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11403,"src":"19124:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19129:16:56","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"19124:21:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":11526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19124:55:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19089:90:56"},{"expression":{"id":11534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11528,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"19265:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11532,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11412,"src":"19296:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19282:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11529,"name":"uint256","nodeType":"ElementaryTypeName","src":"19286:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11530,"nodeType":"ArrayTypeName","src":"19286:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19282:24:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"19265:41:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11535,"nodeType":"ExpressionStatement","src":"19265:41:56"},{"expression":{"id":11540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11536,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"19316:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11538,"indexExpression":{"id":11537,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"19331:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19316:29:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11539,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"19348:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19316:35:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11541,"nodeType":"ExpressionStatement","src":"19316:35:56"},{"expression":{"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11542,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11406,"src":"20090:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11545,"name":"currentInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"20125:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11546,"name":"invariantWithFeesApplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11520,"src":"20144:24:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20125:43:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11548,"name":"currentInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11460,"src":"20170:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11543,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11398,"src":"20104:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20116:8:56","memberName":"mulDivUp","nodeType":"MemberAccess","referencedDeclaration":7660,"src":"20104:20:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":11549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20104:83:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20090:97:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11551,"nodeType":"ExpressionStatement","src":"20090:97:56"}]},"documentation":{"id":11389,"nodeType":"StructuredDocumentation","src":"15599:702:56","text":" @notice Computes the amount of pool tokens to burn to receive exact amount out.\n @param currentBalances Current pool balances, sorted in token registration order\n @param tokenOutIndex Index of the token to receive in exchange for pool tokens burned\n @param exactAmountOut Exact amount of tokens to receive\n @param totalSupply The current total supply of the pool tokens (BPT)\n @param swapFeePercentage The swap fee percentage applied to the taxable amount\n @param pool The pool from which we're removing liquidity\n @return bptAmountIn Amount of pool tokens to burn\n @return swapFeeAmounts The amount of swap fees charged for each token"},"id":11553,"implemented":true,"kind":"function","modifiers":[],"name":"computeRemoveLiquiditySingleTokenExactOut","nameLocation":"16315:41:56","nodeType":"FunctionDefinition","parameters":{"id":11404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11392,"mutability":"mutable","name":"currentBalances","nameLocation":"16383:15:56","nodeType":"VariableDeclaration","scope":11553,"src":"16366:32:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11390,"name":"uint256","nodeType":"ElementaryTypeName","src":"16366:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11391,"nodeType":"ArrayTypeName","src":"16366:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11394,"mutability":"mutable","name":"tokenOutIndex","nameLocation":"16416:13:56","nodeType":"VariableDeclaration","scope":11553,"src":"16408:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11393,"name":"uint256","nodeType":"ElementaryTypeName","src":"16408:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11396,"mutability":"mutable","name":"exactAmountOut","nameLocation":"16447:14:56","nodeType":"VariableDeclaration","scope":11553,"src":"16439:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11395,"name":"uint256","nodeType":"ElementaryTypeName","src":"16439:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11398,"mutability":"mutable","name":"totalSupply","nameLocation":"16479:11:56","nodeType":"VariableDeclaration","scope":11553,"src":"16471:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11397,"name":"uint256","nodeType":"ElementaryTypeName","src":"16471:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11400,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"16508:17:56","nodeType":"VariableDeclaration","scope":11553,"src":"16500:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11399,"name":"uint256","nodeType":"ElementaryTypeName","src":"16500:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11403,"mutability":"mutable","name":"pool","nameLocation":"16545:4:56","nodeType":"VariableDeclaration","scope":11553,"src":"16535:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},"typeName":{"id":11402,"nodeType":"UserDefinedTypeName","pathNode":{"id":11401,"name":"IBasePool","nameLocations":["16535:9:56"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"16535:9:56"},"referencedDeclaration":1366,"src":"16535:9:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"visibility":"internal"}],"src":"16356:199:56"},"returnParameters":{"id":11410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11406,"mutability":"mutable","name":"bptAmountIn","nameLocation":"16587:11:56","nodeType":"VariableDeclaration","scope":11553,"src":"16579:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11405,"name":"uint256","nodeType":"ElementaryTypeName","src":"16579:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11409,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"16617:14:56","nodeType":"VariableDeclaration","scope":11553,"src":"16600:31:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11407,"name":"uint256","nodeType":"ElementaryTypeName","src":"16600:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11408,"nodeType":"ArrayTypeName","src":"16600:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16578:54:56"},"scope":11709,"src":"16306:3888:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11655,"nodeType":"Block","src":"21412:1896:56","statements":[{"assignments":[11577],"declarations":[{"constant":false,"id":11577,"mutability":"mutable","name":"newSupply","nameLocation":"21503:9:56","nodeType":"VariableDeclaration","scope":11655,"src":"21495:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11576,"name":"uint256","nodeType":"ElementaryTypeName","src":"21495:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11581,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11578,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"21515:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11579,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11561,"src":"21529:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21515:30:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21495:50:56"},{"assignments":[11583],"declarations":[{"constant":false,"id":11583,"mutability":"mutable","name":"invariantRatio","nameLocation":"21563:14:56","nodeType":"VariableDeclaration","scope":11655,"src":"21555:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11582,"name":"uint256","nodeType":"ElementaryTypeName","src":"21555:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11588,"initialValue":{"arguments":[{"id":11586,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"21596:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11584,"name":"newSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11577,"src":"21580:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21590:5:56","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"21580:15:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21580:28:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21555:53:56"},{"expression":{"arguments":[{"id":11590,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11568,"src":"21656:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},{"id":11591,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"21662:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11589,"name":"ensureInvariantRatioAboveMinimumBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11708,"src":"21618:37:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IBasePool_$1366_$_t_uint256_$returns$__$","typeString":"function (contract IBasePool,uint256) view"}},"id":11592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21618:59:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11593,"nodeType":"ExpressionStatement","src":"21618:59:56"},{"assignments":[11595],"declarations":[{"constant":false,"id":11595,"mutability":"mutable","name":"newBalance","nameLocation":"22195:10:56","nodeType":"VariableDeclaration","scope":11655,"src":"22187:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11594,"name":"uint256","nodeType":"ElementaryTypeName","src":"22187:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11602,"initialValue":{"arguments":[{"id":11598,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11557,"src":"22228:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11599,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11559,"src":"22245:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11600,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"22260:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11596,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11568,"src":"22208:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22213:14:56","memberName":"computeBalance","nodeType":"MemberAccess","referencedDeclaration":1356,"src":"22208:19:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256,uint256) view external returns (uint256)"}},"id":11601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22208:67:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22187:88:56"},{"assignments":[11604],"declarations":[{"constant":false,"id":11604,"mutability":"mutable","name":"amountOut","nameLocation":"22355:9:56","nodeType":"VariableDeclaration","scope":11655,"src":"22347:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11603,"name":"uint256","nodeType":"ElementaryTypeName","src":"22347:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11610,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":11605,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11557,"src":"22367:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11607,"indexExpression":{"id":11606,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11559,"src":"22383:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22367:30:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11608,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11595,"src":"22400:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22367:43:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22347:63:56"},{"assignments":[11612],"declarations":[{"constant":false,"id":11612,"mutability":"mutable","name":"newBalanceBeforeTax","nameLocation":"22626:19:56","nodeType":"VariableDeclaration","scope":11655,"src":"22618:27:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11611,"name":"uint256","nodeType":"ElementaryTypeName","src":"22618:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11620,"initialValue":{"arguments":[{"baseExpression":{"id":11615,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11557,"src":"22667:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11617,"indexExpression":{"id":11616,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11559,"src":"22683:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22667:30:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11618,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"22699:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11613,"name":"newSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11577,"src":"22648:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22658:8:56","memberName":"mulDivUp","nodeType":"MemberAccess","referencedDeclaration":7660,"src":"22648:18:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":11619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22648:63:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22618:93:56"},{"assignments":[11622],"declarations":[{"constant":false,"id":11622,"mutability":"mutable","name":"taxableAmount","nameLocation":"22843:13:56","nodeType":"VariableDeclaration","scope":11655,"src":"22835:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11621,"name":"uint256","nodeType":"ElementaryTypeName","src":"22835:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11626,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11623,"name":"newBalanceBeforeTax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11612,"src":"22859:19:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11624,"name":"newBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11595,"src":"22881:10:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22859:32:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22835:56:56"},{"assignments":[11628],"declarations":[{"constant":false,"id":11628,"mutability":"mutable","name":"fee","nameLocation":"22967:3:56","nodeType":"VariableDeclaration","scope":11655,"src":"22959:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11627,"name":"uint256","nodeType":"ElementaryTypeName","src":"22959:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11633,"initialValue":{"arguments":[{"id":11631,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11565,"src":"22993:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11629,"name":"taxableAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11622,"src":"22973:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22987:5:56","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"22973:19:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":11632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22973:38:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22959:52:56"},{"expression":{"id":11641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11634,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11574,"src":"23097:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11638,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11557,"src":"23128:15:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23144:6:56","memberName":"length","nodeType":"MemberAccess","src":"23128:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23114:13:56","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11635,"name":"uint256","nodeType":"ElementaryTypeName","src":"23118:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11636,"nodeType":"ArrayTypeName","src":"23118:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23114:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"23097:54:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11642,"nodeType":"ExpressionStatement","src":"23097:54:56"},{"expression":{"id":11647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11643,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11574,"src":"23161:14:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11645,"indexExpression":{"id":11644,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11559,"src":"23176:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23161:29:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11646,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11628,"src":"23193:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23161:35:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11648,"nodeType":"ExpressionStatement","src":"23161:35:56"},{"expression":{"id":11653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11649,"name":"amountOutWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11571,"src":"23267:16:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11650,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11604,"src":"23286:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11651,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11628,"src":"23298:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23286:15:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23267:34:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11654,"nodeType":"ExpressionStatement","src":"23267:34:56"}]},"documentation":{"id":11554,"nodeType":"StructuredDocumentation","src":"20200:874:56","text":" @notice Computes the amount of a single token to withdraw for a given amount of BPT to burn.\n @dev It computes the output token amount for an exact input of BPT, considering current balances,\n total supply, and swap fees.\n @param currentBalances The current token balances in the pool\n @param tokenOutIndex The index of the token to be withdrawn\n @param exactBptAmountIn The exact amount of BPT the user wants to burn\n @param totalSupply The current total supply of the pool tokens (BPT)\n @param swapFeePercentage The swap fee percentage applied to the taxable amount\n @param pool The pool from which we're removing liquidity\n @return amountOutWithFee The amount of the output token the user receives, accounting for swap fees\n @return swapFeeAmounts The total amount of swap fees charged"},"id":11656,"implemented":true,"kind":"function","modifiers":[],"name":"computeRemoveLiquiditySingleTokenExactIn","nameLocation":"21088:40:56","nodeType":"FunctionDefinition","parameters":{"id":11569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11557,"mutability":"mutable","name":"currentBalances","nameLocation":"21155:15:56","nodeType":"VariableDeclaration","scope":11656,"src":"21138:32:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11555,"name":"uint256","nodeType":"ElementaryTypeName","src":"21138:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11556,"nodeType":"ArrayTypeName","src":"21138:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11559,"mutability":"mutable","name":"tokenOutIndex","nameLocation":"21188:13:56","nodeType":"VariableDeclaration","scope":11656,"src":"21180:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11558,"name":"uint256","nodeType":"ElementaryTypeName","src":"21180:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11561,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"21219:16:56","nodeType":"VariableDeclaration","scope":11656,"src":"21211:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11560,"name":"uint256","nodeType":"ElementaryTypeName","src":"21211:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11563,"mutability":"mutable","name":"totalSupply","nameLocation":"21253:11:56","nodeType":"VariableDeclaration","scope":11656,"src":"21245:19:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11562,"name":"uint256","nodeType":"ElementaryTypeName","src":"21245:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11565,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"21282:17:56","nodeType":"VariableDeclaration","scope":11656,"src":"21274:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11564,"name":"uint256","nodeType":"ElementaryTypeName","src":"21274:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11568,"mutability":"mutable","name":"pool","nameLocation":"21319:4:56","nodeType":"VariableDeclaration","scope":11656,"src":"21309:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},"typeName":{"id":11567,"nodeType":"UserDefinedTypeName","pathNode":{"id":11566,"name":"IBasePool","nameLocations":["21309:9:56"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"21309:9:56"},"referencedDeclaration":1366,"src":"21309:9:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"visibility":"internal"}],"src":"21128:201:56"},"returnParameters":{"id":11575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11571,"mutability":"mutable","name":"amountOutWithFee","nameLocation":"21361:16:56","nodeType":"VariableDeclaration","scope":11656,"src":"21353:24:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11570,"name":"uint256","nodeType":"ElementaryTypeName","src":"21353:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11574,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"21396:14:56","nodeType":"VariableDeclaration","scope":11656,"src":"21379:31:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11572,"name":"uint256","nodeType":"ElementaryTypeName","src":"21379:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11573,"nodeType":"ArrayTypeName","src":"21379:9:56","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"21352:59:56"},"scope":11709,"src":"21079:2229:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11681,"nodeType":"Block","src":"23740:214:56","statements":[{"assignments":[11666],"declarations":[{"constant":false,"id":11666,"mutability":"mutable","name":"maxInvariantRatio","nameLocation":"23758:17:56","nodeType":"VariableDeclaration","scope":11681,"src":"23750:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11665,"name":"uint256","nodeType":"ElementaryTypeName","src":"23750:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11670,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11667,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11660,"src":"23778:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23783:24:56","memberName":"getMaximumInvariantRatio","nodeType":"MemberAccess","referencedDeclaration":2854,"src":"23778:29:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23778:31:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23750:59:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11671,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11662,"src":"23823:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":11672,"name":"maxInvariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11666,"src":"23840:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23823:34:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11680,"nodeType":"IfStatement","src":"23819:129:56","trueBody":{"id":11679,"nodeType":"Block","src":"23859:89:56","statements":[{"errorCall":{"arguments":[{"id":11675,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11662,"src":"23903:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11676,"name":"maxInvariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11666,"src":"23919:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11674,"name":"InvariantRatioAboveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10993,"src":"23880:22:56","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":11677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23880:57:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11678,"nodeType":"RevertStatement","src":"23873:64:56"}]}}]},"documentation":{"id":11657,"nodeType":"StructuredDocumentation","src":"23314:320:56","text":" @notice Validate the invariant ratio against the maximum bound.\n @dev This is checked when we're adding liquidity, so the `invariantRatio` > 1.\n @param pool The pool to which we're adding liquidity\n @param invariantRatio The ratio of the new invariant (after an operation) to the old"},"id":11682,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInvariantRatioBelowMaximumBound","nameLocation":"23648:37:56","nodeType":"FunctionDefinition","parameters":{"id":11663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11660,"mutability":"mutable","name":"pool","nameLocation":"23696:4:56","nodeType":"VariableDeclaration","scope":11682,"src":"23686:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},"typeName":{"id":11659,"nodeType":"UserDefinedTypeName","pathNode":{"id":11658,"name":"IBasePool","nameLocations":["23686:9:56"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"23686:9:56"},"referencedDeclaration":1366,"src":"23686:9:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"visibility":"internal"},{"constant":false,"id":11662,"mutability":"mutable","name":"invariantRatio","nameLocation":"23710:14:56","nodeType":"VariableDeclaration","scope":11682,"src":"23702:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11661,"name":"uint256","nodeType":"ElementaryTypeName","src":"23702:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23685:40:56"},"returnParameters":{"id":11664,"nodeType":"ParameterList","parameters":[],"src":"23740:0:56"},"scope":11709,"src":"23639:315:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11707,"nodeType":"Block","src":"24392:214:56","statements":[{"assignments":[11692],"declarations":[{"constant":false,"id":11692,"mutability":"mutable","name":"minInvariantRatio","nameLocation":"24410:17:56","nodeType":"VariableDeclaration","scope":11707,"src":"24402:25:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11691,"name":"uint256","nodeType":"ElementaryTypeName","src":"24402:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11696,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11693,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11686,"src":"24430:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":11694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24435:24:56","memberName":"getMinimumInvariantRatio","nodeType":"MemberAccess","referencedDeclaration":2848,"src":"24430:29:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":11695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24430:31:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24402:59:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11697,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11688,"src":"24475:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11698,"name":"minInvariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11692,"src":"24492:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24475:34:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11706,"nodeType":"IfStatement","src":"24471:129:56","trueBody":{"id":11705,"nodeType":"Block","src":"24511:89:56","statements":[{"errorCall":{"arguments":[{"id":11701,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11688,"src":"24555:14:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11702,"name":"minInvariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11692,"src":"24571:17:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11700,"name":"InvariantRatioBelowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11000,"src":"24532:22:56","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":11703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24532:57:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11704,"nodeType":"RevertStatement","src":"24525:64:56"}]}}]},"documentation":{"id":11683,"nodeType":"StructuredDocumentation","src":"23960:326:56","text":" @notice Validate the invariant ratio against the maximum bound.\n @dev This is checked when we're removing liquidity, so the `invariantRatio` < 1.\n @param pool The pool from which we're removing liquidity\n @param invariantRatio The ratio of the new invariant (after an operation) to the old"},"id":11708,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInvariantRatioAboveMinimumBound","nameLocation":"24300:37:56","nodeType":"FunctionDefinition","parameters":{"id":11689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11686,"mutability":"mutable","name":"pool","nameLocation":"24348:4:56","nodeType":"VariableDeclaration","scope":11708,"src":"24338:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"},"typeName":{"id":11685,"nodeType":"UserDefinedTypeName","pathNode":{"id":11684,"name":"IBasePool","nameLocations":["24338:9:56"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"24338:9:56"},"referencedDeclaration":1366,"src":"24338:9:56","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"visibility":"internal"},{"constant":false,"id":11688,"mutability":"mutable","name":"invariantRatio","nameLocation":"24362:14:56","nodeType":"VariableDeclaration","scope":11708,"src":"24354:22:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11687,"name":"uint256","nodeType":"ElementaryTypeName","src":"24354:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24337:40:56"},"returnParameters":{"id":11690,"nodeType":"ParameterList","parameters":[],"src":"24392:0:56"},"scope":11709,"src":"24291:315:56","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":11710,"src":"343:24265:56","usedErrors":[10993,11000],"usedEvents":[]}],"src":"46:24563:56"},"id":56},"@balancer-labs/v3-vault/contracts/BatchRouter.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/BatchRouter.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BatchRouter":[13542],"BatchRouterCommon":[13833],"BufferWrapOrUnwrapParams":[4644],"CastingHelpers":[5471],"EVMCallModeHelpers":[5493],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IBatchRouter":[1596],"IERC20":[39274],"IERC4626":[38998],"IPermit2":[46102],"IRateProvider":[150],"IVault":[2893],"IWETH":[178],"InputHelpers":[5819],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SafeCast":[44126],"SafeERC20":[39626],"SwapKind":[4517],"SwapState":[4443],"SwapStepLocals":[11743],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"TransientEnumerableSet":[10319],"TransientStorageHelpers":[7068],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":13543,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11711,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:57"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":11713,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":39627,"src":"72:84:57","symbolAliases":[{"foreign":{"id":11712,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39626,"src":"81:9:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":11715,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":44127,"src":"157:75:57","symbolAliases":[{"foreign":{"id":11714,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"166:8:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":11717,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":39275,"src":"233:72:57","symbolAliases":[{"foreign":{"id":11716,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"242:6:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":11719,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":46103,"src":"306:63:57","symbolAliases":[{"foreign":{"id":11718,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"315:8:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol","id":11721,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":1597,"src":"371:93:57","symbolAliases":[{"foreign":{"id":11720,"name":"IBatchRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1596,"src":"380:12:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":11723,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":179,"src":"465:93:57","symbolAliases":[{"foreign":{"id":11722,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"474:5:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":11725,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":2894,"src":"559:81:57","symbolAliases":[{"foreign":{"id":11724,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"568:6:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":11726,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":4654,"src":"641:69:57","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","id":11728,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":5494,"src":"712:111:57","symbolAliases":[{"foreign":{"id":11727,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"721:18:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","id":11730,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":5472,"src":"824:103:57","symbolAliases":[{"foreign":{"id":11729,"name":"CastingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5471,"src":"833:14:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","id":11732,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":5820,"src":"928:99:57","symbolAliases":[{"foreign":{"id":11731,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"937:12:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol","id":11734,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":10320,"src":"1028:128:57","symbolAliases":[{"foreign":{"id":11733,"name":"TransientEnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"1041:22:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":11736,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":7069,"src":"1157:125:57","symbolAliases":[{"foreign":{"id":11735,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"1170:23:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol","file":"./BatchRouterCommon.sol","id":11738,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13543,"sourceUnit":13834,"src":"1284:60:57","symbolAliases":[{"foreign":{"id":11737,"name":"BatchRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13833,"src":"1293:17:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"SwapStepLocals","id":11743,"members":[{"constant":false,"id":11740,"mutability":"mutable","name":"isFirstStep","nameLocation":"1379:11:57","nodeType":"VariableDeclaration","scope":11743,"src":"1374:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11739,"name":"bool","nodeType":"ElementaryTypeName","src":"1374:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11742,"mutability":"mutable","name":"isLastStep","nameLocation":"1401:10:57","nodeType":"VariableDeclaration","scope":11743,"src":"1396:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11741,"name":"bool","nodeType":"ElementaryTypeName","src":"1396:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"SwapStepLocals","nameLocation":"1353:14:57","nodeType":"StructDefinition","scope":13543,"src":"1346:68:57","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":11745,"name":"IBatchRouter","nameLocations":["1806:12:57"],"nodeType":"IdentifierPath","referencedDeclaration":1596,"src":"1806:12:57"},"id":11746,"nodeType":"InheritanceSpecifier","src":"1806:12:57"},{"baseName":{"id":11747,"name":"BatchRouterCommon","nameLocations":["1820:17:57"],"nodeType":"IdentifierPath","referencedDeclaration":13833,"src":"1820:17:57"},"id":11748,"nodeType":"InheritanceSpecifier","src":"1820:17:57"}],"canonicalName":"BatchRouter","contractDependencies":[],"contractKind":"contract","documentation":{"id":11744,"nodeType":"StructuredDocumentation","src":"1416:365:57","text":" @notice Entrypoint for batch swaps, and batch swap queries.\n @dev The external API functions unlock the Vault, which calls back into the corresponding hook functions.\n These interpret the steps and paths in the input data, perform token accounting (in transient storage, to save gas),\n settle with the Vault, and handle wrapping and unwrapping ETH."},"fullyImplemented":true,"id":13542,"linearizedBaseContracts":[13542,13833,18820,7108,160,9568,27688,2823,1596],"name":"BatchRouter","nameLocation":"1791:11:57","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11750,"libraryName":{"id":11749,"name":"CastingHelpers","nameLocations":["1850:14:57"],"nodeType":"IdentifierPath","referencedDeclaration":5471,"src":"1850:14:57"},"nodeType":"UsingForDirective","src":"1844:27:57"},{"global":false,"id":11754,"libraryName":{"id":11751,"name":"TransientEnumerableSet","nameLocations":["1882:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":10319,"src":"1882:22:57"},"nodeType":"UsingForDirective","src":"1876:67:57","typeName":{"id":11753,"nodeType":"UserDefinedTypeName","pathNode":{"id":11752,"name":"TransientEnumerableSet.AddressSet","nameLocations":["1909:22:57","1932:10:57"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"1909:33:57"},"referencedDeclaration":9934,"src":"1909:33:57","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}}},{"global":false,"id":11756,"libraryName":{"id":11755,"name":"TransientStorageHelpers","nameLocations":["1954:23:57"],"nodeType":"IdentifierPath","referencedDeclaration":7068,"src":"1954:23:57"},"nodeType":"UsingForDirective","src":"1948:36:57"},{"global":false,"id":11760,"libraryName":{"id":11757,"name":"SafeERC20","nameLocations":["1995:9:57"],"nodeType":"IdentifierPath","referencedDeclaration":39626,"src":"1995:9:57"},"nodeType":"UsingForDirective","src":"1989:27:57","typeName":{"id":11759,"nodeType":"UserDefinedTypeName","pathNode":{"id":11758,"name":"IERC20","nameLocations":["2009:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2009:6:57"},"referencedDeclaration":39274,"src":"2009:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}},{"global":false,"id":11762,"libraryName":{"id":11761,"name":"SafeCast","nameLocations":["2027:8:57"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"2027:8:57"},"nodeType":"UsingForDirective","src":"2021:21:57"},{"body":{"id":11782,"nodeType":"Block","src":"2226:64:57","statements":[]},"id":11783,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":11776,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11765,"src":"2189:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":11777,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11768,"src":"2196:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":11778,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11771,"src":"2202:7:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},{"id":11779,"name":"routerVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11773,"src":"2211:13:57","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":11780,"kind":"baseConstructorSpecifier","modifierName":{"id":11775,"name":"BatchRouterCommon","nameLocations":["2171:17:57"],"nodeType":"IdentifierPath","referencedDeclaration":13833,"src":"2171:17:57"},"nodeType":"ModifierInvocation","src":"2171:54:57"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":11774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11765,"mutability":"mutable","name":"vault","nameLocation":"2076:5:57","nodeType":"VariableDeclaration","scope":11783,"src":"2069:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":11764,"nodeType":"UserDefinedTypeName","pathNode":{"id":11763,"name":"IVault","nameLocations":["2069:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"2069:6:57"},"referencedDeclaration":2893,"src":"2069:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":11768,"mutability":"mutable","name":"weth","nameLocation":"2097:4:57","nodeType":"VariableDeclaration","scope":11783,"src":"2091:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":11767,"nodeType":"UserDefinedTypeName","pathNode":{"id":11766,"name":"IWETH","nameLocations":["2091:5:57"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"2091:5:57"},"referencedDeclaration":178,"src":"2091:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":11771,"mutability":"mutable","name":"permit2","nameLocation":"2120:7:57","nodeType":"VariableDeclaration","scope":11783,"src":"2111:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":11770,"nodeType":"UserDefinedTypeName","pathNode":{"id":11769,"name":"IPermit2","nameLocations":["2111:8:57"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"2111:8:57"},"referencedDeclaration":46102,"src":"2111:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"},{"constant":false,"id":11773,"mutability":"mutable","name":"routerVersion","nameLocation":"2151:13:57","nodeType":"VariableDeclaration","scope":11783,"src":"2137:27:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11772,"name":"string","nodeType":"ElementaryTypeName","src":"2137:6:57","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2059:111:57"},"returnParameters":{"id":11781,"nodeType":"ParameterList","parameters":[],"src":"2226:0:57"},"scope":13542,"src":"2048:242:57","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1530],"body":{"id":11840,"nodeType":"Block","src":"2868:582:57","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":11816,"name":"BatchRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13542,"src":"3000:11:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRouter_$13542_$","typeString":"type(contract BatchRouter)"}},"id":11817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3012:15:57","memberName":"swapExactInHook","nodeType":"MemberAccess","referencedDeclaration":11935,"src":"3000:27:57","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactInHookParams_$1494_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.swapExactInHook(struct IBatchRouter.SwapExactInHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},{"arguments":[{"expression":{"id":11819,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3113:3:57","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3117:6:57","memberName":"sender","nodeType":"MemberAccess","src":"3113:10:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11821,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11788,"src":"3160:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory[] memory"}},{"id":11822,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11790,"src":"3205:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11823,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11792,"src":"3254:9:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11824,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11794,"src":"3303:8:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":11818,"name":"SwapExactInHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1494,"src":"3053:21:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapExactInHookParams_$1494_storage_ptr_$","typeString":"type(struct IBatchRouter.SwapExactInHookParams storage pointer)"}},"id":11825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["3105:6:57","3153:5:57","3195:8:57","3243:9:57","3293:8:57"],"names":["sender","paths","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"3053:285:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_memory_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactInHookParams_$1494_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.swapExactInHook(struct IBatchRouter.SwapExactInHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"},{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_memory_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams memory"}],"expression":{"id":11814,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2960:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2964:10:57","memberName":"encodeCall","nodeType":"MemberAccess","src":"2960:14:57","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:400:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11812,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"2925:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":11813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2932:6:57","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"2925:13:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":11827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2925:453:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":11829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3397:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11828,"name":"uint256","nodeType":"ElementaryTypeName","src":"3397:7:57","typeDescriptions":{}}},"id":11830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"3397:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"baseExpression":{"id":11832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3408:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11831,"name":"address","nodeType":"ElementaryTypeName","src":"3408:7:57","typeDescriptions":{}}},"id":11833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"3408:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"baseExpression":{"id":11835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3419:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11834,"name":"uint256","nodeType":"ElementaryTypeName","src":"3419:7:57","typeDescriptions":{}}},"id":11836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"3419:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":11837,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3396:33:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}],"expression":{"id":11810,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2897:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2901:6:57","memberName":"decode","nodeType":"MemberAccess","src":"2897:10:57","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":11838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2897:546:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"functionReturnParameters":11809,"id":11839,"nodeType":"Return","src":"2878:565:57"}]},"documentation":{"id":11784,"nodeType":"StructuredDocumentation","src":"2504:28:57","text":"@inheritdoc IBatchRouter"},"functionSelector":"286f580d","id":11841,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":11797,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2745:3:57","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2749:6:57","memberName":"sender","nodeType":"MemberAccess","src":"2745:10:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11799,"kind":"modifierInvocation","modifierName":{"id":11796,"name":"saveSender","nameLocations":["2734:10:57"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"2734:10:57"},"nodeType":"ModifierInvocation","src":"2734:22:57"}],"name":"swapExactIn","nameLocation":"2546:11:57","nodeType":"FunctionDefinition","parameters":{"id":11795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11788,"mutability":"mutable","name":"paths","nameLocation":"2598:5:57","nodeType":"VariableDeclaration","scope":11841,"src":"2567:36:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"},"typeName":{"baseType":{"id":11786,"nodeType":"UserDefinedTypeName","pathNode":{"id":11785,"name":"SwapPathExactAmountIn","nameLocations":["2567:21:57"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"2567:21:57"},"referencedDeclaration":1469,"src":"2567:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn"}},"id":11787,"nodeType":"ArrayTypeName","src":"2567:23:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"}},"visibility":"internal"},{"constant":false,"id":11790,"mutability":"mutable","name":"deadline","nameLocation":"2621:8:57","nodeType":"VariableDeclaration","scope":11841,"src":"2613:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11789,"name":"uint256","nodeType":"ElementaryTypeName","src":"2613:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11792,"mutability":"mutable","name":"wethIsEth","nameLocation":"2644:9:57","nodeType":"VariableDeclaration","scope":11841,"src":"2639:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11791,"name":"bool","nodeType":"ElementaryTypeName","src":"2639:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11794,"mutability":"mutable","name":"userData","nameLocation":"2678:8:57","nodeType":"VariableDeclaration","scope":11841,"src":"2663:23:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11793,"name":"bytes","nodeType":"ElementaryTypeName","src":"2663:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2557:135:57"},"returnParameters":{"id":11809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11802,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"2791:14:57","nodeType":"VariableDeclaration","scope":11841,"src":"2774:31:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2774:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11801,"nodeType":"ArrayTypeName","src":"2774:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11805,"mutability":"mutable","name":"tokensOut","nameLocation":"2824:9:57","nodeType":"VariableDeclaration","scope":11841,"src":"2807:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11803,"name":"address","nodeType":"ElementaryTypeName","src":"2807:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11804,"nodeType":"ArrayTypeName","src":"2807:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11808,"mutability":"mutable","name":"amountsOut","nameLocation":"2852:10:57","nodeType":"VariableDeclaration","scope":11841,"src":"2835:27:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11806,"name":"uint256","nodeType":"ElementaryTypeName","src":"2835:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11807,"nodeType":"ArrayTypeName","src":"2835:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2773:90:57"},"scope":13542,"src":"2537:913:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1553],"body":{"id":11898,"nodeType":"Block","src":"3819:584:57","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":11874,"name":"BatchRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13542,"src":"3951:11:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRouter_$13542_$","typeString":"type(contract BatchRouter)"}},"id":11875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3963:16:57","memberName":"swapExactOutHook","nodeType":"MemberAccess","referencedDeclaration":12622,"src":"3951:28:57","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactOutHookParams_$1507_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.swapExactOutHook(struct IBatchRouter.SwapExactOutHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},{"arguments":[{"expression":{"id":11877,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4066:3:57","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4070:6:57","memberName":"sender","nodeType":"MemberAccess","src":"4066:10:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11879,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11846,"src":"4113:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory[] memory"}},{"id":11880,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11848,"src":"4158:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11881,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11850,"src":"4207:9:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11882,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11852,"src":"4256:8:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":11876,"name":"SwapExactOutHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1507,"src":"4005:22:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapExactOutHookParams_$1507_storage_ptr_$","typeString":"type(struct IBatchRouter.SwapExactOutHookParams storage pointer)"}},"id":11883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["4058:6:57","4106:5:57","4148:8:57","4196:9:57","4246:8:57"],"names":["sender","paths","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"4005:286:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_memory_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactOutHookParams_$1507_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.swapExactOutHook(struct IBatchRouter.SwapExactOutHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"},{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_memory_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams memory"}],"expression":{"id":11872,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3911:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3915:10:57","memberName":"encodeCall","nodeType":"MemberAccess","src":"3911:14:57","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3911:402:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11870,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3876:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":11871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3883:6:57","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"3876:13:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":11885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3876:455:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":11887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4350:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11886,"name":"uint256","nodeType":"ElementaryTypeName","src":"4350:7:57","typeDescriptions":{}}},"id":11888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"4350:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"baseExpression":{"id":11890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4361:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11889,"name":"address","nodeType":"ElementaryTypeName","src":"4361:7:57","typeDescriptions":{}}},"id":11891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"4361:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"baseExpression":{"id":11893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4372:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11892,"name":"uint256","nodeType":"ElementaryTypeName","src":"4372:7:57","typeDescriptions":{}}},"id":11894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"4372:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":11895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4349:33:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}],"expression":{"id":11868,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3848:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3852:6:57","memberName":"decode","nodeType":"MemberAccess","src":"3848:10:57","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":11896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3848:548:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"functionReturnParameters":11867,"id":11897,"nodeType":"Return","src":"3829:567:57"}]},"documentation":{"id":11842,"nodeType":"StructuredDocumentation","src":"3456:28:57","text":"@inheritdoc IBatchRouter"},"functionSelector":"8eb1b65e","id":11899,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":11855,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3699:3:57","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3703:6:57","memberName":"sender","nodeType":"MemberAccess","src":"3699:10:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11857,"kind":"modifierInvocation","modifierName":{"id":11854,"name":"saveSender","nameLocations":["3688:10:57"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"3688:10:57"},"nodeType":"ModifierInvocation","src":"3688:22:57"}],"name":"swapExactOut","nameLocation":"3498:12:57","nodeType":"FunctionDefinition","parameters":{"id":11853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11846,"mutability":"mutable","name":"paths","nameLocation":"3552:5:57","nodeType":"VariableDeclaration","scope":11899,"src":"3520:37:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"},"typeName":{"baseType":{"id":11844,"nodeType":"UserDefinedTypeName","pathNode":{"id":11843,"name":"SwapPathExactAmountOut","nameLocations":["3520:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":1481,"src":"3520:22:57"},"referencedDeclaration":1481,"src":"3520:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut"}},"id":11845,"nodeType":"ArrayTypeName","src":"3520:24:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"}},"visibility":"internal"},{"constant":false,"id":11848,"mutability":"mutable","name":"deadline","nameLocation":"3575:8:57","nodeType":"VariableDeclaration","scope":11899,"src":"3567:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11847,"name":"uint256","nodeType":"ElementaryTypeName","src":"3567:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11850,"mutability":"mutable","name":"wethIsEth","nameLocation":"3598:9:57","nodeType":"VariableDeclaration","scope":11899,"src":"3593:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11849,"name":"bool","nodeType":"ElementaryTypeName","src":"3593:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11852,"mutability":"mutable","name":"userData","nameLocation":"3632:8:57","nodeType":"VariableDeclaration","scope":11899,"src":"3617:23:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11851,"name":"bytes","nodeType":"ElementaryTypeName","src":"3617:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3510:136:57"},"returnParameters":{"id":11867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11860,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"3745:13:57","nodeType":"VariableDeclaration","scope":11899,"src":"3728:30:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11858,"name":"uint256","nodeType":"ElementaryTypeName","src":"3728:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11859,"nodeType":"ArrayTypeName","src":"3728:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11863,"mutability":"mutable","name":"tokensIn","nameLocation":"3777:8:57","nodeType":"VariableDeclaration","scope":11899,"src":"3760:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11861,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11862,"nodeType":"ArrayTypeName","src":"3760:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11866,"mutability":"mutable","name":"amountsIn","nameLocation":"3804:9:57","nodeType":"VariableDeclaration","scope":11899,"src":"3787:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11864,"name":"uint256","nodeType":"ElementaryTypeName","src":"3787:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11865,"nodeType":"ArrayTypeName","src":"3787:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3727:87:57"},"scope":13542,"src":"3489:914:57","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11934,"nodeType":"Block","src":"4654:139:57","statements":[{"expression":{"id":11925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11918,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11910,"src":"4665:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":11919,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11913,"src":"4681:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":11920,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11916,"src":"4692:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":11921,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4664:39:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11923,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11902,"src":"4723:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}],"id":11922,"name":"_swapExactInHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12025,"src":"4706:16:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapExactInHookParams_$1494_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (struct IBatchRouter.SwapExactInHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},"id":11924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4706:24:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"src":"4664:66:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11926,"nodeType":"ExpressionStatement","src":"4664:66:57"},{"expression":{"arguments":[{"expression":{"id":11928,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11902,"src":"4754:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":11929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4761:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"4754:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11930,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11902,"src":"4769:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":11931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4776:9:57","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":1491,"src":"4769:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11927,"name":"_settlePaths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"4741:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":11932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4741:45:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11933,"nodeType":"ExpressionStatement","src":"4741:45:57"}]},"functionSelector":"08a465f6","id":11935,"implemented":true,"kind":"function","modifiers":[{"id":11905,"kind":"modifierInvocation","modifierName":{"id":11904,"name":"nonReentrant","nameLocations":["4512:12:57"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"4512:12:57"},"nodeType":"ModifierInvocation","src":"4512:12:57"},{"id":11907,"kind":"modifierInvocation","modifierName":{"id":11906,"name":"onlyVault","nameLocations":["4533:9:57"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"4533:9:57"},"nodeType":"ModifierInvocation","src":"4533:9:57"}],"name":"swapExactInHook","nameLocation":"4418:15:57","nodeType":"FunctionDefinition","parameters":{"id":11903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11902,"mutability":"mutable","name":"params","nameLocation":"4474:6:57","nodeType":"VariableDeclaration","scope":11935,"src":"4443:37:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"},"typeName":{"id":11901,"nodeType":"UserDefinedTypeName","pathNode":{"id":11900,"name":"SwapExactInHookParams","nameLocations":["4443:21:57"],"nodeType":"IdentifierPath","referencedDeclaration":1494,"src":"4443:21:57"},"referencedDeclaration":1494,"src":"4443:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_storage_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"}},"visibility":"internal"}],"src":"4433:53:57"},"returnParameters":{"id":11917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11910,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"4577:14:57","nodeType":"VariableDeclaration","scope":11935,"src":"4560:31:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11908,"name":"uint256","nodeType":"ElementaryTypeName","src":"4560:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11909,"nodeType":"ArrayTypeName","src":"4560:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11913,"mutability":"mutable","name":"tokensOut","nameLocation":"4610:9:57","nodeType":"VariableDeclaration","scope":11935,"src":"4593:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11911,"name":"address","nodeType":"ElementaryTypeName","src":"4593:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11912,"nodeType":"ArrayTypeName","src":"4593:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11916,"mutability":"mutable","name":"amountsOut","nameLocation":"4638:10:57","nodeType":"VariableDeclaration","scope":11935,"src":"4621:27:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11914,"name":"uint256","nodeType":"ElementaryTypeName","src":"4621:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11915,"nodeType":"ArrayTypeName","src":"4621:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4559:90:57"},"scope":13542,"src":"4409:384:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12024,"nodeType":"Block","src":"4986:867:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11950,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5152:5:57","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5158:9:57","memberName":"timestamp","nodeType":"MemberAccess","src":"5152:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":11952,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11938,"src":"5170:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":11953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5177:8:57","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":1489,"src":"5170:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5152:33:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11959,"nodeType":"IfStatement","src":"5148:85:57","trueBody":{"id":11958,"nodeType":"Block","src":"5187:46:57","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11955,"name":"SwapDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18082,"src":"5208:12:57","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":11956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5208:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11957,"nodeType":"RevertStatement","src":"5201:21:57"}]}},{"expression":{"id":11964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11960,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11942,"src":"5243:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11962,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11938,"src":"5283:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}],"id":11961,"name":"_computePathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12586,"src":"5260:22:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapExactInHookParams_$1494_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (struct IBatchRouter.SwapExactInHookParams calldata) returns (uint256[] memory)"}},"id":11963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5260:30:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"5243:47:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11965,"nodeType":"ExpressionStatement","src":"5243:47:57"},{"expression":{"id":11971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11966,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11945,"src":"5469:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11967,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"5481:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":11968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":11969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5505:6:57","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":10281,"src":"5481:30:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (address[] memory)"}},"id":11970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:32:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5469:44:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11972,"nodeType":"ExpressionStatement","src":"5469:44:57"},{"expression":{"id":11980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11973,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11948,"src":"5523:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11977,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11945,"src":"5550:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5560:6:57","memberName":"length","nodeType":"MemberAccess","src":"5550:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5536:13:57","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11974,"name":"uint256","nodeType":"ElementaryTypeName","src":"5540:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11975,"nodeType":"ArrayTypeName","src":"5540:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5536:31:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"5523:44:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11981,"nodeType":"ExpressionStatement","src":"5523:44:57"},{"body":{"id":12022,"nodeType":"Block","src":"5624:223:57","statements":[{"expression":{"id":12011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11993,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11948,"src":"5638:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11995,"indexExpression":{"id":11994,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"5649:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5638:13:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":11999,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11945,"src":"5705:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12001,"indexExpression":{"id":12000,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"5715:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5705:12:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11996,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"5670:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":11997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5670:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":11998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5700:4:57","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"5670:34:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":12002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5670:48:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"baseExpression":{"id":12006,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11945,"src":"5765:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12008,"indexExpression":{"id":12007,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"5775:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5765:12:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12003,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"5737:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5737:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5760:4:57","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"5737:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":12009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5737:41:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5670:108:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5638:140:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12012,"nodeType":"ExpressionStatement","src":"5638:140:57"},{"expression":{"arguments":[{"baseExpression":{"id":12016,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11945,"src":"5820:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12018,"indexExpression":{"id":12017,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"5830:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5820:12:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":12019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5834:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12013,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"5792:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5792:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5815:4:57","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"5792:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5792:44:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12021,"nodeType":"ExpressionStatement","src":"5792:44:57"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11986,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"5597:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11987,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11945,"src":"5601:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5611:6:57","memberName":"length","nodeType":"MemberAccess","src":"5601:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5597:20:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12023,"initializationExpression":{"assignments":[11983],"declarations":[{"constant":false,"id":11983,"mutability":"mutable","name":"i","nameLocation":"5590:1:57","nodeType":"VariableDeclaration","scope":12023,"src":"5582:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11982,"name":"uint256","nodeType":"ElementaryTypeName","src":"5582:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11985,"initialValue":{"hexValue":"30","id":11984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5594:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5582:13:57"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":11991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5619:3:57","subExpression":{"id":11990,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"5621:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11992,"nodeType":"ExpressionStatement","src":"5619:3:57"},"nodeType":"ForStatement","src":"5577:270:57"}]},"id":12025,"implemented":true,"kind":"function","modifiers":[],"name":"_swapExactInHook","nameLocation":"4808:16:57","nodeType":"FunctionDefinition","parameters":{"id":11939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11938,"mutability":"mutable","name":"params","nameLocation":"4865:6:57","nodeType":"VariableDeclaration","scope":12025,"src":"4834:37:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"},"typeName":{"id":11937,"nodeType":"UserDefinedTypeName","pathNode":{"id":11936,"name":"SwapExactInHookParams","nameLocations":["4834:21:57"],"nodeType":"IdentifierPath","referencedDeclaration":1494,"src":"4834:21:57"},"referencedDeclaration":1494,"src":"4834:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_storage_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"}},"visibility":"internal"}],"src":"4824:53:57"},"returnParameters":{"id":11949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11942,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"4913:14:57","nodeType":"VariableDeclaration","scope":12025,"src":"4896:31:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11940,"name":"uint256","nodeType":"ElementaryTypeName","src":"4896:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11941,"nodeType":"ArrayTypeName","src":"4896:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":11945,"mutability":"mutable","name":"tokensOut","nameLocation":"4946:9:57","nodeType":"VariableDeclaration","scope":12025,"src":"4929:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11943,"name":"address","nodeType":"ElementaryTypeName","src":"4929:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11944,"nodeType":"ArrayTypeName","src":"4929:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11948,"mutability":"mutable","name":"amountsOut","nameLocation":"4974:10:57","nodeType":"VariableDeclaration","scope":12025,"src":"4957:27:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11946,"name":"uint256","nodeType":"ElementaryTypeName","src":"4957:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11947,"nodeType":"ArrayTypeName","src":"4957:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4895:90:57"},"scope":13542,"src":"4799:1054:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12585,"nodeType":"Block","src":"5995:11133:57","statements":[{"expression":{"id":12042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12034,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12032,"src":"6005:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":12038,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"6036:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6043:5:57","memberName":"paths","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"6036:12:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn calldata[] calldata"}},"id":12040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6049:6:57","memberName":"length","nodeType":"MemberAccess","src":"6036:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6022:13:57","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12035,"name":"uint256","nodeType":"ElementaryTypeName","src":"6026:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12036,"nodeType":"ArrayTypeName","src":"6026:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6022:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"6005:51:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12043,"nodeType":"ExpressionStatement","src":"6005:51:57"},{"body":{"id":12583,"nodeType":"Block","src":"6117:11005:57","statements":[{"assignments":[12058],"declarations":[{"constant":false,"id":12058,"mutability":"mutable","name":"path","nameLocation":"6160:4:57","nodeType":"VariableDeclaration","scope":12583,"src":"6131:33:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn"},"typeName":{"id":12057,"nodeType":"UserDefinedTypeName","pathNode":{"id":12056,"name":"SwapPathExactAmountIn","nameLocations":["6131:21:57"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"6131:21:57"},"referencedDeclaration":1469,"src":"6131:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn"}},"visibility":"internal"}],"id":12063,"initialValue":{"baseExpression":{"expression":{"id":12059,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"6167:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6174:5:57","memberName":"paths","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"6167:12:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn calldata[] calldata"}},"id":12062,"indexExpression":{"id":12061,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12045,"src":"6180:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6167:15:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn calldata"}},"nodeType":"VariableDeclarationStatement","src":"6131:51:57"},{"assignments":[12065],"declarations":[{"constant":false,"id":12065,"mutability":"mutable","name":"stepExactAmountIn","nameLocation":"6409:17:57","nodeType":"VariableDeclaration","scope":12583,"src":"6401:25:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12064,"name":"uint256","nodeType":"ElementaryTypeName","src":"6401:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12068,"initialValue":{"expression":{"id":12066,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"6429:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":12067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6434:13:57","memberName":"exactAmountIn","nodeType":"MemberAccess","referencedDeclaration":1466,"src":"6429:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6401:46:57"},{"assignments":[12071],"declarations":[{"constant":false,"id":12071,"mutability":"mutable","name":"stepTokenIn","nameLocation":"6468:11:57","nodeType":"VariableDeclaration","scope":12583,"src":"6461:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":12070,"nodeType":"UserDefinedTypeName","pathNode":{"id":12069,"name":"IERC20","nameLocations":["6461:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6461:6:57"},"referencedDeclaration":39274,"src":"6461:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12074,"initialValue":{"expression":{"id":12072,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"6482:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":12073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6487:7:57","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":1460,"src":"6482:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6461:33:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"id":12075,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"6513:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":12076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6518:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"6513:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12078,"indexExpression":{"hexValue":"30","id":12077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6524:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6513:13:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6527:8:57","memberName":"isBuffer","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"6513:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12080,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"6539:18:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":12081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6558:12:57","memberName":"isStaticCall","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"6539:31:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6539:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":12083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6576:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6539:42:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6513:68:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12115,"nodeType":"Block","src":"6801:484:57","statements":[{"expression":{"arguments":[{"arguments":[{"id":12101,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"7165:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7157:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12099,"name":"address","nodeType":"ElementaryTypeName","src":"7157:7:57","typeDescriptions":{}}},"id":12102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7157:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12096,"name":"_currentSwapTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13626,"src":"7130:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7130:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7153:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"7130:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7130:48:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12104,"nodeType":"ExpressionStatement","src":"7130:48:57"},{"expression":{"arguments":[{"arguments":[{"id":12110,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"7238:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7230:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12108,"name":"address","nodeType":"ElementaryTypeName","src":"7230:7:57","typeDescriptions":{}}},"id":12111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7230:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12112,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"7252:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12105,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"7196:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7196:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7225:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"7196:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7196:74:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12114,"nodeType":"ExpressionStatement","src":"7196:74:57"}]},"id":12116,"nodeType":"IfStatement","src":"6509:776:57","trueBody":{"id":12095,"nodeType":"Block","src":"6583:212:57","statements":[{"expression":{"arguments":[{"expression":{"id":12087,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"6716:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6723:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"6716:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12089,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"6731:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":12090,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"6744:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12091,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"6763:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6770:9:57","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":1491,"src":"6763:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12086,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"6703:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":12093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6703:77:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12094,"nodeType":"ExpressionStatement","src":"6703:77:57"}]}},{"body":{"id":12581,"nodeType":"Block","src":"7347:9765:57","statements":[{"assignments":[12131],"declarations":[{"constant":false,"id":12131,"mutability":"mutable","name":"stepLocals","nameLocation":"7387:10:57","nodeType":"VariableDeclaration","scope":12581,"src":"7365:32:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals"},"typeName":{"id":12130,"nodeType":"UserDefinedTypeName","pathNode":{"id":12129,"name":"SwapStepLocals","nameLocations":["7365:14:57"],"nodeType":"IdentifierPath","referencedDeclaration":11743,"src":"7365:14:57"},"referencedDeclaration":11743,"src":"7365:14:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_storage_ptr","typeString":"struct SwapStepLocals"}},"visibility":"internal"}],"id":12132,"nodeType":"VariableDeclarationStatement","src":"7365:32:57"},{"expression":{"id":12144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12133,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"7415:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7426:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"7415:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12136,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12118,"src":"7440:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12137,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"7445:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":12138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7450:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"7445:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7456:6:57","memberName":"length","nodeType":"MemberAccess","src":"7445:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7465:1:57","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7445:21:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7440:26:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7439:28:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7415:52:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12145,"nodeType":"ExpressionStatement","src":"7415:52:57"},{"expression":{"id":12153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12146,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"7485:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7496:11:57","memberName":"isFirstStep","nodeType":"MemberAccess","referencedDeclaration":11740,"src":"7485:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12149,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12118,"src":"7511:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7516:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7511:6:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12152,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7510:8:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7485:33:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12154,"nodeType":"ExpressionStatement","src":"7485:33:57"},{"assignments":[12156],"declarations":[{"constant":false,"id":12156,"mutability":"mutable","name":"minAmountOut","nameLocation":"7544:12:57","nodeType":"VariableDeclaration","scope":12581,"src":"7536:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12155,"name":"uint256","nodeType":"ElementaryTypeName","src":"7536:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12157,"nodeType":"VariableDeclarationStatement","src":"7536:20:57"},{"condition":{"expression":{"id":12158,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"7642:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7653:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"7642:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12170,"nodeType":"Block","src":"7744:57:57","statements":[{"expression":{"id":12168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12166,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"7766:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":12167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7781:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7766:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12169,"nodeType":"ExpressionStatement","src":"7766:16:57"}]},"id":12171,"nodeType":"IfStatement","src":"7638:163:57","trueBody":{"id":12165,"nodeType":"Block","src":"7665:73:57","statements":[{"expression":{"id":12163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12160,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"7687:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12161,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"7702:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":12162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7707:12:57","memberName":"minAmountOut","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"7702:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7687:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12164,"nodeType":"ExpressionStatement","src":"7687:32:57"}]}},{"assignments":[12174],"declarations":[{"constant":false,"id":12174,"mutability":"mutable","name":"step","nameLocation":"7839:4:57","nodeType":"VariableDeclaration","scope":12581,"src":"7819:24:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep"},"typeName":{"id":12173,"nodeType":"UserDefinedTypeName","pathNode":{"id":12172,"name":"SwapPathStep","nameLocations":["7819:12:57"],"nodeType":"IdentifierPath","referencedDeclaration":1457,"src":"7819:12:57"},"referencedDeclaration":1457,"src":"7819:12:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep"}},"visibility":"internal"}],"id":12179,"initialValue":{"baseExpression":{"expression":{"id":12175,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"7846:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":12176,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7851:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"7846:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12178,"indexExpression":{"id":12177,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12118,"src":"7857:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7846:13:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"nodeType":"VariableDeclarationStatement","src":"7819:40:57"},{"condition":{"expression":{"id":12180,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"7882:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12181,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7887:8:57","memberName":"isBuffer","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"7882:13:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12254,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"9358:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9350:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12252,"name":"address","nodeType":"ElementaryTypeName","src":"9350:7:57","typeDescriptions":{}}},"id":12255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9350:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12256,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"9374:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9379:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"9374:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9350:33:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":12422,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"13604:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13609:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"13604:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13596:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12420,"name":"address","nodeType":"ElementaryTypeName","src":"13596:7:57","typeDescriptions":{}}},"id":12424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13596:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12425,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"13622:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13627:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"13622:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13596:35:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12577,"nodeType":"Block","src":"15655:1443:57","statements":[{"assignments":[null,null,12518],"declarations":[null,null,{"constant":false,"id":12518,"mutability":"mutable","name":"amountOut","nameLocation":"15770:9:57","nodeType":"VariableDeclaration","scope":12577,"src":"15762:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12517,"name":"uint256","nodeType":"ElementaryTypeName","src":"15762:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12535,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":12522,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"15872:8:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":12523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15881:8:57","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"15872:17:57","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"expression":{"id":12524,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"15925:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12525,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15930:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"15925:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12526,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"15973:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":12527,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"16024:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16029:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"16024:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":12529,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"16083:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12530,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"16140:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12531,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"16192:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16199:8:57","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":1493,"src":"16192:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":12521,"name":"VaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4536,"src":"15820:15:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_VaultSwapParams_$4536_storage_ptr_$","typeString":"type(struct VaultSwapParams storage pointer)"}},"id":12533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["15866:4:57","15919:4:57","15964:7:57","16014:8:57","16067:14:57","16130:8:57","16182:8:57"],"names":["kind","pool","tokenIn","tokenOut","amountGivenRaw","limitRaw","userData"],"nodeType":"FunctionCall","src":"15820:414:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}],"expression":{"id":12519,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"15783:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":12520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15790:4:57","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":4257,"src":"15783:11:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_VaultSwapParams_$4536_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct VaultSwapParams memory) external returns (uint256,uint256,uint256)"}},"id":12534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15783:473:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15757:499:57"},{"condition":{"expression":{"id":12536,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"16283:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16294:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"16283:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12575,"nodeType":"Block","src":"16775:305:57","statements":[{"expression":{"id":12568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12566,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"16879:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12567,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12518,"src":"16899:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16879:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12569,"nodeType":"ExpressionStatement","src":"16879:29:57"},{"expression":{"id":12573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12570,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"17030:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12571,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"17044:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17049:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"17044:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"17030:27:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":12574,"nodeType":"ExpressionStatement","src":"17030:27:57"}]},"id":12576,"nodeType":"IfStatement","src":"16279:801:57","trueBody":{"id":12565,"nodeType":"Block","src":"16306:463:57","statements":[{"expression":{"id":12542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12538,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12032,"src":"16545:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12540,"indexExpression":{"id":12539,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12045,"src":"16560:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16545:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12541,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12518,"src":"16565:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16545:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12543,"nodeType":"ExpressionStatement","src":"16545:29:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12549,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"16636:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16641:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"16636:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16628:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12547,"name":"address","nodeType":"ElementaryTypeName","src":"16628:7:57","typeDescriptions":{}}},"id":12551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16628:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12544,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"16600:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16600:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16624:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"16600:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16600:51:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12553,"nodeType":"ExpressionStatement","src":"16600:51:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12559,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"16720:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16725:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"16720:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16712:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12557,"name":"address","nodeType":"ElementaryTypeName","src":"16712:7:57","typeDescriptions":{}}},"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16712:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12562,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12518,"src":"16736:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12554,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"16677:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16677:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16707:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"16677:34:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16677:69:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12564,"nodeType":"ExpressionStatement","src":"16677:69:57"}]}}]},"id":12578,"nodeType":"IfStatement","src":"13592:3506:57","trueBody":{"id":12516,"nodeType":"Block","src":"13633:2016:57","statements":[{"assignments":[12432,null],"declarations":[{"constant":false,"id":12432,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"13766:14:57","nodeType":"VariableDeclaration","scope":12516,"src":"13749:31:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12430,"name":"uint256","nodeType":"ElementaryTypeName","src":"13749:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12431,"nodeType":"ArrayTypeName","src":"13749:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null],"id":12439,"initialValue":{"arguments":[{"expression":{"id":12434,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"13845:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13850:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"13845:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12436,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"13880:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":12437,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"13917:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12433,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"13786:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":12438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13786:170:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"13748:208:57"},{"assignments":[null,12441,null],"declarations":[null,{"constant":false,"id":12441,"mutability":"mutable","name":"bptAmountOut","nameLocation":"13990:12:57","nodeType":"VariableDeclaration","scope":12516,"src":"13982:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12440,"name":"uint256","nodeType":"ElementaryTypeName","src":"13982:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":12464,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":12445,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"14108:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14113:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"14108:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"condition":{"expression":{"id":12447,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"14151:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14162:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"14151:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":12453,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14199:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":12452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14191:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12451,"name":"address","nodeType":"ElementaryTypeName","src":"14191:7:57","typeDescriptions":{}}},"id":12454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14191:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14151:55:57","trueExpression":{"expression":{"id":12449,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"14175:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14182:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"14175:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12456,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"14250:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":12457,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"14311:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12458,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"14359:16:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":12459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14376:10:57","memberName":"UNBALANCED","nodeType":"MemberAccess","referencedDeclaration":4585,"src":"14359:27:57","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"expression":{"id":12460,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"14426:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14433:8:57","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":1493,"src":"14426:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":12444,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4605,"src":"14053:18:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$4605_storage_ptr_$","typeString":"type(struct AddLiquidityParams storage pointer)"}},"id":12462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["14102:4:57","14147:2:57","14236:12:57","14294:15:57","14353:4:57","14416:8:57"],"names":["pool","to","maxAmountsIn","minBptAmountOut","kind","userData"],"nodeType":"FunctionCall","src":"14053:415:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}],"expression":{"id":12442,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14008:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":12443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14015:12:57","memberName":"addLiquidity","nodeType":"MemberAccess","referencedDeclaration":4271,"src":"14008:19:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct AddLiquidityParams memory) external returns (uint256[] memory,uint256,bytes memory)"}},"id":12463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14008:482:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"13979:511:57"},{"condition":{"expression":{"id":12465,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"14517:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14528:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"14517:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12514,"nodeType":"Block","src":"15137:494:57","statements":[{"expression":{"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12495,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"15241:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12496,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"15261:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15241:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12498,"nodeType":"ExpressionStatement","src":"15241:32:57"},{"expression":{"id":12502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12499,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"15395:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12500,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"15409:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15414:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"15409:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"15395:27:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":12503,"nodeType":"ExpressionStatement","src":"15395:27:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12508,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"15583:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15588:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"15583:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12507,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"15576:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":12510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15576:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":12511,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"15595:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12504,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"15562:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":12506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15569:6:57","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"15562:13:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":12512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15562:46:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12513,"nodeType":"ExpressionStatement","src":"15562:46:57"}]},"id":12515,"nodeType":"IfStatement","src":"14513:1118:57","trueBody":{"id":12494,"nodeType":"Block","src":"14540:591:57","statements":[{"expression":{"id":12471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12467,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12032,"src":"14908:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12469,"indexExpression":{"id":12468,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12045,"src":"14923:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14908:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12470,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"14928:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14908:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12472,"nodeType":"ExpressionStatement","src":"14908:32:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12478,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"15002:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15007:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"15002:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14994:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12476,"name":"address","nodeType":"ElementaryTypeName","src":"14994:7:57","typeDescriptions":{}}},"id":12480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14994:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12473,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"14966:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14966:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14990:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"14966:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14966:51:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12482,"nodeType":"ExpressionStatement","src":"14966:51:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12488,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"15079:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15084:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"15079:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15071:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12486,"name":"address","nodeType":"ElementaryTypeName","src":"15071:7:57","typeDescriptions":{}}},"id":12490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15071:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12491,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"15095:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12483,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"15043:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15043:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15066:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"15043:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15043:65:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12493,"nodeType":"ExpressionStatement","src":"15043:65:57"}]}}]}},"id":12579,"nodeType":"IfStatement","src":"9346:7752:57","trueBody":{"id":12419,"nodeType":"Block","src":"9385:4201:57","statements":[{"condition":{"expression":{"id":12259,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"9803:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9814:11:57","memberName":"isFirstStep","nodeType":"MemberAccess","referencedDeclaration":11740,"src":"9803:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12329,"nodeType":"Block","src":"11109:334:57","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":12319,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"11375:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11380:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"11375:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12318,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"11368:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":12321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11368:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":12324,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11395:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":12323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12322,"name":"address","nodeType":"ElementaryTypeName","src":"11387:7:57","typeDescriptions":{}}},"id":12325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11387:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12326,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"11402:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12315,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11354:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":12317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11361:6:57","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"11354:13:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":12327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11354:66:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12328,"nodeType":"ExpressionStatement","src":"11354:66:57"}]},"id":12330,"nodeType":"IfStatement","src":"9799:1644:57","trueBody":{"id":12314,"nodeType":"Block","src":"9827:1276:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12261,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"9857:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9877:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9857:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12264,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"9882:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9889:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"9882:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12268,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9907:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":12267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9899:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12266,"name":"address","nodeType":"ElementaryTypeName","src":"9899:7:57","typeDescriptions":{}}},"id":12269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9899:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9882:30:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9857:55:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12291,"nodeType":"IfStatement","src":"9853:914:57","trueBody":{"id":12290,"nodeType":"Block","src":"9914:853:57","statements":[{"expression":{"arguments":[{"expression":{"id":12275,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"10533:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10540:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"10533:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12279,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10588:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":12278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10580:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12277,"name":"address","nodeType":"ElementaryTypeName","src":"10580:7:57","typeDescriptions":{}}},"id":12280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10580:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12281,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"10627:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10645:9:57","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":42734,"src":"10627:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":12283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10627:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":12286,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"10698:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10690:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12284,"name":"address","nodeType":"ElementaryTypeName","src":"10690:7:57","typeDescriptions":{}}},"id":12287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10690:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12272,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"10478:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":12274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10487:12:57","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46055,"src":"10478:21:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address) external"}},"id":12288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10478:262:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12289,"nodeType":"ExpressionStatement","src":"10478:262:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":12297,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"10931:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10923:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12295,"name":"address","nodeType":"ElementaryTypeName","src":"10923:7:57","typeDescriptions":{}}},"id":12298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10923:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12292,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"10889:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10889:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10918:4:57","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"10889:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":12299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10889:55:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10889:59:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12313,"nodeType":"IfStatement","src":"10885:196:57","trueBody":{"id":12312,"nodeType":"Block","src":"10950:131:57","statements":[{"expression":{"arguments":[{"arguments":[{"id":12307,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"11022:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11014:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12305,"name":"address","nodeType":"ElementaryTypeName","src":"11014:7:57","typeDescriptions":{}}},"id":12308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11014:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12309,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"11036:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12302,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"10980:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10980:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11009:4:57","memberName":"tSub","nodeType":"MemberAccess","referencedDeclaration":6759,"src":"10980:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10980:74:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12311,"nodeType":"ExpressionStatement","src":"10980:74:57"}]}}]}},{"assignments":[12335,12337],"declarations":[{"constant":false,"id":12335,"mutability":"mutable","name":"amountsOut","nameLocation":"11656:10:57","nodeType":"VariableDeclaration","scope":12419,"src":"11639:27:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12333,"name":"uint256","nodeType":"ElementaryTypeName","src":"11639:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12334,"nodeType":"ArrayTypeName","src":"11639:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12337,"mutability":"mutable","name":"tokenIndex","nameLocation":"11676:10:57","nodeType":"VariableDeclaration","scope":12419,"src":"11668:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12336,"name":"uint256","nodeType":"ElementaryTypeName","src":"11668:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12350,"initialValue":{"arguments":[{"expression":{"id":12339,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"11749:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11754:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"11749:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12341,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"11784:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11789:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"11784:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12343,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"11823:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11839:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11823:17:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":12347,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"11847:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11823:36:57","trueExpression":{"hexValue":"31","id":12346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11843:1:57","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12338,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"11690:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":12349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11690:191:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11638:243:57"},{"expression":{"id":12370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":12351,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"12226:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":12352,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12223:16:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(,uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":12356,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"12348:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12353:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"12348:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12360,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12401:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":12359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12393:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12358,"name":"address","nodeType":"ElementaryTypeName","src":"12393:7:57","typeDescriptions":{}}},"id":12361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12393:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12362,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"12452:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12363,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"12514:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":12364,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"12560:19:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":12365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12580:21:57","memberName":"SINGLE_TOKEN_EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4607,"src":"12560:41:57","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"expression":{"id":12366,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"12641:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12648:8:57","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":1493,"src":"12641:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":12355,"name":"RemoveLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4626,"src":"12290:21:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityParams_$4626_storage_ptr_$","typeString":"type(struct RemoveLiquidityParams storage pointer)"}},"id":12368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12342:4:57","12387:4:57","12436:14:57","12499:13:57","12554:4:57","12631:8:57"],"names":["pool","from","maxBptAmountIn","minAmountsOut","kind","userData"],"nodeType":"FunctionCall","src":"12290:393:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}],"expression":{"id":12353,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"12242:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":12354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12249:15:57","memberName":"removeLiquidity","nodeType":"MemberAccess","referencedDeclaration":4285,"src":"12242:22:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct RemoveLiquidityParams memory) external returns (uint256,uint256[] memory,bytes memory)"}},"id":12369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12242:463:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"src":"12223:482:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12371,"nodeType":"ExpressionStatement","src":"12223:482:57"},{"condition":{"expression":{"id":12372,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"12732:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12743:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"12732:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12417,"nodeType":"Block","src":"13250:318:57","statements":[{"expression":{"id":12410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12406,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"13354:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":12407,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"13374:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12409,"indexExpression":{"id":12408,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12337,"src":"13385:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13374:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13354:42:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12411,"nodeType":"ExpressionStatement","src":"13354:42:57"},{"expression":{"id":12415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12412,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"13518:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12413,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"13532:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13537:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"13532:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"13518:27:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":12416,"nodeType":"ExpressionStatement","src":"13518:27:57"}]},"id":12418,"nodeType":"IfStatement","src":"12728:840:57","trueBody":{"id":12405,"nodeType":"Block","src":"12755:489:57","statements":[{"expression":{"id":12380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12374,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12032,"src":"12994:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12376,"indexExpression":{"id":12375,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12045,"src":"13009:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12994:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":12377,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"13014:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12379,"indexExpression":{"id":12378,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12337,"src":"13025:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13014:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12994:42:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12381,"nodeType":"ExpressionStatement","src":"12994:42:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12387,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"13098:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13103:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"13098:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13090:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12385,"name":"address","nodeType":"ElementaryTypeName","src":"13090:7:57","typeDescriptions":{}}},"id":12389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13090:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12382,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"13062:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13062:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13086:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"13062:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13062:51:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12391,"nodeType":"ExpressionStatement","src":"13062:51:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12397,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"13182:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13187:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"13182:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13174:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12395,"name":"address","nodeType":"ElementaryTypeName","src":"13174:7:57","typeDescriptions":{}}},"id":12399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13174:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":12400,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"13198:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12402,"indexExpression":{"id":12401,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12337,"src":"13209:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13198:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12392,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"13139:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13139:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13169:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"13139:34:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13139:82:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12404,"nodeType":"ExpressionStatement","src":"13139:82:57"}]}}]}},"id":12580,"nodeType":"IfStatement","src":"7878:9220:57","trueBody":{"id":12251,"nodeType":"Block","src":"7897:1443:57","statements":[{"assignments":[null,null,12183],"declarations":[null,null,{"constant":false,"id":12183,"mutability":"mutable","name":"amountOut","nameLocation":"7932:9:57","nodeType":"VariableDeclaration","scope":12251,"src":"7924:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12182,"name":"uint256","nodeType":"ElementaryTypeName","src":"7924:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12209,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":12187,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"8064:8:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":12188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8073:8:57","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"8064:17:57","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12189,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"8122:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8127:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"8122:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":12193,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"8143:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8135:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12191,"name":"address","nodeType":"ElementaryTypeName","src":"8135:7:57","typeDescriptions":{}}},"id":12194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8135:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8122:33:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":12198,"name":"WrappingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"8249:17:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_WrappingDirection_$4629_$","typeString":"type(enum WrappingDirection)"}},"id":12199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8267:4:57","memberName":"WRAP","nodeType":"MemberAccess","referencedDeclaration":4627,"src":"8249:22:57","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},"id":12200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8122:149:57","trueExpression":{"expression":{"id":12196,"name":"WrappingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"8190:17:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_WrappingDirection_$4629_$","typeString":"type(enum WrappingDirection)"}},"id":12197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8208:6:57","memberName":"UNWRAP","nodeType":"MemberAccess","referencedDeclaration":4628,"src":"8190:24:57","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},"typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},{"arguments":[{"expression":{"id":12202,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"8324:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8329:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"8324:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12201,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"8315:8:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$38998_$","typeString":"type(contract IERC4626)"}},"id":12204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8315:19:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":12205,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"8380:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12206,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12156,"src":"8437:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12186,"name":"BufferWrapOrUnwrapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"8003:24:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_BufferWrapOrUnwrapParams_$4644_storage_ptr_$","typeString":"type(struct BufferWrapOrUnwrapParams storage pointer)"}},"id":12207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8058:4:57","8111:9:57","8301:12:57","8364:14:57","8427:8:57"],"names":["kind","direction","wrappedToken","amountGivenRaw","limitRaw"],"nodeType":"FunctionCall","src":"8003:473:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}],"expression":{"id":12184,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7945:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":12185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7952:25:57","memberName":"erc4626BufferWrapOrUnwrap","nodeType":"MemberAccess","referencedDeclaration":4337,"src":"7945:32:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct BufferWrapOrUnwrapParams memory) external returns (uint256,uint256,uint256)"}},"id":12208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7945:553:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7919:579:57"},{"condition":{"expression":{"id":12210,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12131,"src":"8525:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8536:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"8525:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12249,"nodeType":"Block","src":"9017:305:57","statements":[{"expression":{"id":12242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12240,"name":"stepExactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12065,"src":"9121:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12241,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12183,"src":"9141:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9121:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12243,"nodeType":"ExpressionStatement","src":"9121:29:57"},{"expression":{"id":12247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12244,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12071,"src":"9272:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12245,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"9286:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9291:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"9286:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"9272:27:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":12248,"nodeType":"ExpressionStatement","src":"9272:27:57"}]},"id":12250,"nodeType":"IfStatement","src":"8521:801:57","trueBody":{"id":12239,"nodeType":"Block","src":"8548:463:57","statements":[{"expression":{"id":12216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12212,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12032,"src":"8787:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12214,"indexExpression":{"id":12213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12045,"src":"8802:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8787:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12215,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12183,"src":"8807:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8787:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12217,"nodeType":"ExpressionStatement","src":"8787:29:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12223,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"8878:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8883:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"8878:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8870:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12221,"name":"address","nodeType":"ElementaryTypeName","src":"8870:7:57","typeDescriptions":{}}},"id":12225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8870:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12218,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"8842:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8842:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8866:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"8842:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8842:51:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12227,"nodeType":"ExpressionStatement","src":"8842:51:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12233,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"8962:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8967:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"8962:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8954:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12231,"name":"address","nodeType":"ElementaryTypeName","src":"8954:7:57","typeDescriptions":{}}},"id":12235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8954:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12236,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12183,"src":"8978:9:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12228,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"8919:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8919:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8949:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"8919:34:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8919:69:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12238,"nodeType":"ExpressionStatement","src":"8919:69:57"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12121,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12118,"src":"7319:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":12122,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"7323:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":12123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7328:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"7323:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7334:6:57","memberName":"length","nodeType":"MemberAccess","src":"7323:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7319:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12582,"initializationExpression":{"assignments":[12118],"declarations":[{"constant":false,"id":12118,"mutability":"mutable","name":"j","nameLocation":"7312:1:57","nodeType":"VariableDeclaration","scope":12582,"src":"7304:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12117,"name":"uint256","nodeType":"ElementaryTypeName","src":"7304:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12120,"initialValue":{"hexValue":"30","id":12119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7316:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7304:13:57"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7342:3:57","subExpression":{"id":12126,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12118,"src":"7344:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12128,"nodeType":"ExpressionStatement","src":"7342:3:57"},"nodeType":"ForStatement","src":"7299:9813:57"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12048,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12045,"src":"6087:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":12049,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12028,"src":"6091:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}},"id":12050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6098:5:57","memberName":"paths","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"6091:12:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn calldata[] calldata"}},"id":12051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6104:6:57","memberName":"length","nodeType":"MemberAccess","src":"6091:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6087:23:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12584,"initializationExpression":{"assignments":[12045],"declarations":[{"constant":false,"id":12045,"mutability":"mutable","name":"i","nameLocation":"6080:1:57","nodeType":"VariableDeclaration","scope":12584,"src":"6072:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12044,"name":"uint256","nodeType":"ElementaryTypeName","src":"6072:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12047,"initialValue":{"hexValue":"30","id":12046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6084:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6072:13:57"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6112:3:57","subExpression":{"id":12053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12045,"src":"6114:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12055,"nodeType":"ExpressionStatement","src":"6112:3:57"},"nodeType":"ForStatement","src":"6067:11055:57"}]},"id":12586,"implemented":true,"kind":"function","modifiers":[],"name":"_computePathAmountsOut","nameLocation":"5868:22:57","nodeType":"FunctionDefinition","parameters":{"id":12029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12028,"mutability":"mutable","name":"params","nameLocation":"5931:6:57","nodeType":"VariableDeclaration","scope":12586,"src":"5900:37:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"},"typeName":{"id":12027,"nodeType":"UserDefinedTypeName","pathNode":{"id":12026,"name":"SwapExactInHookParams","nameLocations":["5900:21:57"],"nodeType":"IdentifierPath","referencedDeclaration":1494,"src":"5900:21:57"},"referencedDeclaration":1494,"src":"5900:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_storage_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"}},"visibility":"internal"}],"src":"5890:53:57"},"returnParameters":{"id":12033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12032,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"5979:14:57","nodeType":"VariableDeclaration","scope":12586,"src":"5962:31:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12030,"name":"uint256","nodeType":"ElementaryTypeName","src":"5962:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12031,"nodeType":"ArrayTypeName","src":"5962:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5961:33:57"},"scope":13542,"src":"5859:11269:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12621,"nodeType":"Block","src":"17378:137:57","statements":[{"expression":{"id":12612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12605,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12597,"src":"17389:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":12606,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12600,"src":"17404:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":12607,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12603,"src":"17414:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":12608,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17388:36:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12610,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12589,"src":"17445:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}],"id":12609,"name":"_swapExactOutHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12712,"src":"17427:17:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapExactOutHookParams_$1507_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (struct IBatchRouter.SwapExactOutHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},"id":12611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17427:25:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"src":"17388:64:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12613,"nodeType":"ExpressionStatement","src":"17388:64:57"},{"expression":{"arguments":[{"expression":{"id":12615,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12589,"src":"17476:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17483:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1496,"src":"17476:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12617,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12589,"src":"17491:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17498:9:57","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":1504,"src":"17491:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12614,"name":"_settlePaths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13832,"src":"17463:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":12619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17463:45:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12620,"nodeType":"ExpressionStatement","src":"17463:45:57"}]},"functionSelector":"945ed33f","id":12622,"implemented":true,"kind":"function","modifiers":[{"id":12592,"kind":"modifierInvocation","modifierName":{"id":12591,"name":"nonReentrant","nameLocations":["17239:12:57"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"17239:12:57"},"nodeType":"ModifierInvocation","src":"17239:12:57"},{"id":12594,"kind":"modifierInvocation","modifierName":{"id":12593,"name":"onlyVault","nameLocations":["17260:9:57"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"17260:9:57"},"nodeType":"ModifierInvocation","src":"17260:9:57"}],"name":"swapExactOutHook","nameLocation":"17143:16:57","nodeType":"FunctionDefinition","parameters":{"id":12590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12589,"mutability":"mutable","name":"params","nameLocation":"17201:6:57","nodeType":"VariableDeclaration","scope":12622,"src":"17169:38:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"},"typeName":{"id":12588,"nodeType":"UserDefinedTypeName","pathNode":{"id":12587,"name":"SwapExactOutHookParams","nameLocations":["17169:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":1507,"src":"17169:22:57"},"referencedDeclaration":1507,"src":"17169:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_storage_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"}},"visibility":"internal"}],"src":"17159:54:57"},"returnParameters":{"id":12604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12597,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"17304:13:57","nodeType":"VariableDeclaration","scope":12622,"src":"17287:30:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12595,"name":"uint256","nodeType":"ElementaryTypeName","src":"17287:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12596,"nodeType":"ArrayTypeName","src":"17287:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12600,"mutability":"mutable","name":"tokensIn","nameLocation":"17336:8:57","nodeType":"VariableDeclaration","scope":12622,"src":"17319:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12598,"name":"address","nodeType":"ElementaryTypeName","src":"17319:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12599,"nodeType":"ArrayTypeName","src":"17319:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12603,"mutability":"mutable","name":"amountsIn","nameLocation":"17363:9:57","nodeType":"VariableDeclaration","scope":12622,"src":"17346:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12601,"name":"uint256","nodeType":"ElementaryTypeName","src":"17346:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12602,"nodeType":"ArrayTypeName","src":"17346:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"17286:87:57"},"scope":13542,"src":"17134:381:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":12711,"nodeType":"Block","src":"17707:858:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12637,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17873:5:57","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17879:9:57","memberName":"timestamp","nodeType":"MemberAccess","src":"17873:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":12639,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12625,"src":"17891:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17898:8:57","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":1502,"src":"17891:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17873:33:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12646,"nodeType":"IfStatement","src":"17869:85:57","trueBody":{"id":12645,"nodeType":"Block","src":"17908:46:57","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12642,"name":"SwapDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18082,"src":"17929:12:57","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":12643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17929:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12644,"nodeType":"RevertStatement","src":"17922:21:57"}]}},{"expression":{"id":12651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12647,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12629,"src":"17964:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12649,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12625,"src":"18002:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}],"id":12648,"name":"_computePathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13321,"src":"17980:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapExactOutHookParams_$1507_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (struct IBatchRouter.SwapExactOutHookParams calldata) returns (uint256[] memory)"}},"id":12650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17980:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"17964:45:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12652,"nodeType":"ExpressionStatement","src":"17964:45:57"},{"expression":{"id":12658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12653,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"18187:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12654,"name":"_currentSwapTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13626,"src":"18198:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18198:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18221:6:57","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":10281,"src":"18198:29:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (address[] memory)"}},"id":12657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18198:31:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"18187:42:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12659,"nodeType":"ExpressionStatement","src":"18187:42:57"},{"expression":{"id":12667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12660,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12635,"src":"18275:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12664,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"18301:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18310:6:57","memberName":"length","nodeType":"MemberAccess","src":"18301:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18287:13:57","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12661,"name":"uint256","nodeType":"ElementaryTypeName","src":"18291:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12662,"nodeType":"ArrayTypeName","src":"18291:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18287:30:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"18275:42:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12668,"nodeType":"ExpressionStatement","src":"18275:42:57"},{"body":{"id":12709,"nodeType":"Block","src":"18373:186:57","statements":[{"expression":{"id":12698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12680,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12635,"src":"18387:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12682,"indexExpression":{"id":12681,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"18397:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18387:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":12686,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"18436:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12688,"indexExpression":{"id":12687,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"18445:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18436:11:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12683,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"18402:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18402:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18431:4:57","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"18402:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":12689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18402:46:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"baseExpression":{"id":12693,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"18479:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12695,"indexExpression":{"id":12694,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"18488:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18479:11:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12690,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"18451:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18451:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18474:4:57","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"18451:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":12696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18451:40:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18402:89:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18387:104:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12699,"nodeType":"ExpressionStatement","src":"18387:104:57"},{"expression":{"arguments":[{"baseExpression":{"id":12703,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"18533:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12705,"indexExpression":{"id":12704,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"18542:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18533:11:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":12706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18546:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12700,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"18505:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18505:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18528:4:57","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"18505:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18505:43:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12708,"nodeType":"ExpressionStatement","src":"18505:43:57"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12673,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"18347:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12674,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12632,"src":"18351:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":12675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18360:6:57","memberName":"length","nodeType":"MemberAccess","src":"18351:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18347:19:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12710,"initializationExpression":{"assignments":[12670],"declarations":[{"constant":false,"id":12670,"mutability":"mutable","name":"i","nameLocation":"18340:1:57","nodeType":"VariableDeclaration","scope":12710,"src":"18332:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12669,"name":"uint256","nodeType":"ElementaryTypeName","src":"18332:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12672,"initialValue":{"hexValue":"30","id":12671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18344:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18332:13:57"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18368:3:57","subExpression":{"id":12677,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12670,"src":"18370:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12679,"nodeType":"ExpressionStatement","src":"18368:3:57"},"nodeType":"ForStatement","src":"18327:232:57"}]},"id":12712,"implemented":true,"kind":"function","modifiers":[],"name":"_swapExactOutHook","nameLocation":"17530:17:57","nodeType":"FunctionDefinition","parameters":{"id":12626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12625,"mutability":"mutable","name":"params","nameLocation":"17589:6:57","nodeType":"VariableDeclaration","scope":12712,"src":"17557:38:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"},"typeName":{"id":12624,"nodeType":"UserDefinedTypeName","pathNode":{"id":12623,"name":"SwapExactOutHookParams","nameLocations":["17557:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":1507,"src":"17557:22:57"},"referencedDeclaration":1507,"src":"17557:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_storage_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"}},"visibility":"internal"}],"src":"17547:54:57"},"returnParameters":{"id":12636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12629,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"17637:13:57","nodeType":"VariableDeclaration","scope":12712,"src":"17620:30:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12627,"name":"uint256","nodeType":"ElementaryTypeName","src":"17620:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12628,"nodeType":"ArrayTypeName","src":"17620:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":12632,"mutability":"mutable","name":"tokensIn","nameLocation":"17669:8:57","nodeType":"VariableDeclaration","scope":12712,"src":"17652:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":12630,"name":"address","nodeType":"ElementaryTypeName","src":"17652:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12631,"nodeType":"ArrayTypeName","src":"17652:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":12635,"mutability":"mutable","name":"amountsIn","nameLocation":"17696:9:57","nodeType":"VariableDeclaration","scope":12712,"src":"17679:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12633,"name":"uint256","nodeType":"ElementaryTypeName","src":"17679:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12634,"nodeType":"ArrayTypeName","src":"17679:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"17619:87:57"},"scope":13542,"src":"17521:1044:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13320,"nodeType":"Block","src":"18898:12104:57","statements":[{"expression":{"id":12730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12722,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12720,"src":"18908:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":12726,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"18938:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18945:5:57","memberName":"paths","nodeType":"MemberAccess","referencedDeclaration":1500,"src":"18938:12:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut calldata[] calldata"}},"id":12728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18951:6:57","memberName":"length","nodeType":"MemberAccess","src":"18938:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18924:13:57","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12723,"name":"uint256","nodeType":"ElementaryTypeName","src":"18928:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12724,"nodeType":"ArrayTypeName","src":"18928:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18924:34:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"18908:50:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12731,"nodeType":"ExpressionStatement","src":"18908:50:57"},{"body":{"id":13318,"nodeType":"Block","src":"19019:11977:57","statements":[{"assignments":[12746],"declarations":[{"constant":false,"id":12746,"mutability":"mutable","name":"path","nameLocation":"19063:4:57","nodeType":"VariableDeclaration","scope":13318,"src":"19033:34:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut"},"typeName":{"id":12745,"nodeType":"UserDefinedTypeName","pathNode":{"id":12744,"name":"SwapPathExactAmountOut","nameLocations":["19033:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":1481,"src":"19033:22:57"},"referencedDeclaration":1481,"src":"19033:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut"}},"visibility":"internal"}],"id":12751,"initialValue":{"baseExpression":{"expression":{"id":12747,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"19070:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19077:5:57","memberName":"paths","nodeType":"MemberAccess","referencedDeclaration":1500,"src":"19070:12:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut calldata[] calldata"}},"id":12750,"indexExpression":{"id":12749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12733,"src":"19083:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19070:15:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut calldata"}},"nodeType":"VariableDeclarationStatement","src":"19033:52:57"},{"assignments":[12753],"declarations":[{"constant":false,"id":12753,"mutability":"mutable","name":"stepExactAmountOut","nameLocation":"19303:18:57","nodeType":"VariableDeclaration","scope":13318,"src":"19295:26:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12752,"name":"uint256","nodeType":"ElementaryTypeName","src":"19295:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12756,"initialValue":{"expression":{"id":12754,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"19324:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19329:14:57","memberName":"exactAmountOut","nodeType":"MemberAccess","referencedDeclaration":1480,"src":"19324:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19295:48:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12762,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"19894:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19899:7:57","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":1472,"src":"19894:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19886:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12760,"name":"address","nodeType":"ElementaryTypeName","src":"19886:7:57","typeDescriptions":{}}},"id":12764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19886:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12757,"name":"_currentSwapTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13626,"src":"19859:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19859:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19882:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"19859:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19859:49:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12766,"nodeType":"ExpressionStatement","src":"19859:49:57"},{"body":{"id":13316,"nodeType":"Block","src":"20197:10789:57","statements":[{"assignments":[12786],"declarations":[{"constant":false,"id":12786,"mutability":"mutable","name":"step","nameLocation":"20235:4:57","nodeType":"VariableDeclaration","scope":13316,"src":"20215:24:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep"},"typeName":{"id":12785,"nodeType":"UserDefinedTypeName","pathNode":{"id":12784,"name":"SwapPathStep","nameLocations":["20215:12:57"],"nodeType":"IdentifierPath","referencedDeclaration":1457,"src":"20215:12:57"},"referencedDeclaration":1457,"src":"20215:12:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_storage_ptr","typeString":"struct IBatchRouter.SwapPathStep"}},"visibility":"internal"}],"id":12794,"initialValue":{"baseExpression":{"expression":{"id":12787,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"20242:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20247:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1476,"src":"20242:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12793,"indexExpression":{"arguments":[{"id":12791,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12768,"src":"20261:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20253:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12789,"name":"uint256","nodeType":"ElementaryTypeName","src":"20253:7:57","typeDescriptions":{}}},"id":12792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20253:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20242:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"nodeType":"VariableDeclarationStatement","src":"20215:49:57"},{"assignments":[12797],"declarations":[{"constant":false,"id":12797,"mutability":"mutable","name":"stepLocals","nameLocation":"20304:10:57","nodeType":"VariableDeclaration","scope":13316,"src":"20282:32:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals"},"typeName":{"id":12796,"nodeType":"UserDefinedTypeName","pathNode":{"id":12795,"name":"SwapStepLocals","nameLocations":["20282:14:57"],"nodeType":"IdentifierPath","referencedDeclaration":11743,"src":"20282:14:57"},"referencedDeclaration":11743,"src":"20282:14:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_storage_ptr","typeString":"struct SwapStepLocals"}},"visibility":"internal"}],"id":12798,"nodeType":"VariableDeclarationStatement","src":"20282:32:57"},{"expression":{"id":12806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12799,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"20332:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20343:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"20332:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12802,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12768,"src":"20357:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20362:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20357:6:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12805,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20356:8:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20332:32:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12807,"nodeType":"ExpressionStatement","src":"20332:32:57"},{"expression":{"id":12822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12808,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"20382:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20393:11:57","memberName":"isFirstStep","nodeType":"MemberAccess","referencedDeclaration":11740,"src":"20382:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12813,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12768,"src":"20416:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20408:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12811,"name":"uint256","nodeType":"ElementaryTypeName","src":"20408:7:57","typeDescriptions":{}}},"id":12814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20408:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12815,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"20422:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20427:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1476,"src":"20422:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20433:6:57","memberName":"length","nodeType":"MemberAccess","src":"20422:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20442:1:57","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20422:21:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20408:35:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12821,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20407:37:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20382:62:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12823,"nodeType":"ExpressionStatement","src":"20382:62:57"},{"assignments":[12825],"declarations":[{"constant":false,"id":12825,"mutability":"mutable","name":"stepMaxAmountIn","nameLocation":"20635:15:57","nodeType":"VariableDeclaration","scope":13316,"src":"20627:23:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12824,"name":"uint256","nodeType":"ElementaryTypeName","src":"20627:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12826,"nodeType":"VariableDeclarationStatement","src":"20627:23:57"},{"assignments":[12829],"declarations":[{"constant":false,"id":12829,"mutability":"mutable","name":"stepTokenIn","nameLocation":"20675:11:57","nodeType":"VariableDeclaration","scope":13316,"src":"20668:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":12828,"nodeType":"UserDefinedTypeName","pathNode":{"id":12827,"name":"IERC20","nameLocations":["20668:6:57"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"20668:6:57"},"referencedDeclaration":39274,"src":"20668:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12830,"nodeType":"VariableDeclarationStatement","src":"20668:18:57"},{"condition":{"expression":{"id":12831,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"20709:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12832,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20720:11:57","memberName":"isFirstStep","nodeType":"MemberAccess","referencedDeclaration":11740,"src":"20709:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12855,"nodeType":"IfStatement","src":"20705:510:57","trueBody":{"id":12854,"nodeType":"Block","src":"20733:482:57","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":12838,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"21081:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21086:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"21081:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21073:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12836,"name":"address","nodeType":"ElementaryTypeName","src":"21073:7:57","typeDescriptions":{}}},"id":12840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21073:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12833,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"21045:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21045:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21069:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"21045:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21045:51:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12842,"nodeType":"ExpressionStatement","src":"21045:51:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12848,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"21161:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12849,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21166:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"21161:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21153:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12846,"name":"address","nodeType":"ElementaryTypeName","src":"21153:7:57","typeDescriptions":{}}},"id":12850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21153:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12851,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"21177:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12843,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"21118:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21118:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21148:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"21118:34:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21118:78:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12853,"nodeType":"ExpressionStatement","src":"21118:78:57"}]}},{"condition":{"expression":{"id":12856,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"21237:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21248:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"21237:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12886,"nodeType":"Block","src":"21563:418:57","statements":[{"expression":{"id":12871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12869,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"21862:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12870,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"21880:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21862:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12872,"nodeType":"ExpressionStatement","src":"21862:29:57"},{"expression":{"id":12884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12873,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"21913:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":12874,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"21927:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21932:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1476,"src":"21927:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12882,"indexExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12878,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12768,"src":"21946:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21950:1:57","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21946:5:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21938:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12876,"name":"uint256","nodeType":"ElementaryTypeName","src":"21938:7:57","typeDescriptions":{}}},"id":12881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21938:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21927:26:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21954:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"21927:35:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"21913:49:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":12885,"nodeType":"ExpressionStatement","src":"21913:49:57"}]},"id":12887,"nodeType":"IfStatement","src":"21233:748:57","trueBody":{"id":12868,"nodeType":"Block","src":"21260:297:57","statements":[{"expression":{"id":12861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12858,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"21456:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12859,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"21474:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21479:11:57","memberName":"maxAmountIn","nodeType":"MemberAccess","referencedDeclaration":1478,"src":"21474:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21456:34:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12862,"nodeType":"ExpressionStatement","src":"21456:34:57"},{"expression":{"id":12866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12863,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"21512:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12864,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"21526:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21531:7:57","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":1472,"src":"21526:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"21512:26:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":12867,"nodeType":"ExpressionStatement","src":"21512:26:57"}]}},{"condition":{"expression":{"id":12888,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"22003:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22008:8:57","memberName":"isBuffer","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"22003:13:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12990,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"23897:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23889:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12988,"name":"address","nodeType":"ElementaryTypeName","src":"23889:7:57","typeDescriptions":{}}},"id":12991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23889:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12992,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"23913:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23918:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"23913:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23889:33:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":13164,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"27852:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27857:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"27852:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":13163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27844:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13162,"name":"address","nodeType":"ElementaryTypeName","src":"27844:7:57","typeDescriptions":{}}},"id":13166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27844:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13167,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"27870:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27875:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"27870:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27844:35:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13312,"nodeType":"Block","src":"30047:925:57","statements":[{"assignments":[null,13269,null],"declarations":[null,{"constant":false,"id":13269,"mutability":"mutable","name":"amountIn","nameLocation":"30161:8:57","nodeType":"VariableDeclaration","scope":13312,"src":"30153:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13268,"name":"uint256","nodeType":"ElementaryTypeName","src":"30153:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":13286,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":13273,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"30264:8:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":13274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30273:9:57","memberName":"EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"30264:18:57","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"expression":{"id":13275,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"30318:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30323:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"30318:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13277,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"30366:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":13278,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"30417:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30422:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"30417:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":13280,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"30476:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13281,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"30534:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13282,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"30589:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30596:8:57","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":1506,"src":"30589:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13272,"name":"VaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4536,"src":"30212:15:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_VaultSwapParams_$4536_storage_ptr_$","typeString":"type(struct VaultSwapParams storage pointer)"}},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["30258:4:57","30312:4:57","30357:7:57","30407:8:57","30460:14:57","30524:8:57","30579:8:57"],"names":["kind","pool","tokenIn","tokenOut","amountGivenRaw","limitRaw","userData"],"nodeType":"FunctionCall","src":"30212:419:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}],"expression":{"id":13270,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"30175:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30182:4:57","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":4257,"src":"30175:11:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_VaultSwapParams_$4536_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct VaultSwapParams memory) external returns (uint256,uint256,uint256)"}},"id":13285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30175:478:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"30150:503:57"},{"condition":{"expression":{"id":13287,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"30680:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":13288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30691:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"30680:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13310,"nodeType":"Block","src":"30876:78:57","statements":[{"expression":{"id":13308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13306,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"30902:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13307,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"30923:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30902:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13309,"nodeType":"ExpressionStatement","src":"30902:29:57"}]},"id":13311,"nodeType":"IfStatement","src":"30676:278:57","trueBody":{"id":13305,"nodeType":"Block","src":"30703:167:57","statements":[{"expression":{"id":13293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13289,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12720,"src":"30729:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13291,"indexExpression":{"id":13290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12733,"src":"30743:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"30729:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13292,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"30748:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30729:27:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13294,"nodeType":"ExpressionStatement","src":"30729:27:57"},{"expression":{"arguments":[{"arguments":[{"id":13300,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"30824:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":13299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30816:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13298,"name":"address","nodeType":"ElementaryTypeName","src":"30816:7:57","typeDescriptions":{}}},"id":13301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30816:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13302,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"30838:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13295,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"30782:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30782:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30811:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"30782:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":13303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30782:65:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13304,"nodeType":"ExpressionStatement","src":"30782:65:57"}]}}]},"id":13313,"nodeType":"IfStatement","src":"27840:3132:57","trueBody":{"id":13267,"nodeType":"Block","src":"27881:2160:57","statements":[{"assignments":[13174,13176],"declarations":[{"constant":false,"id":13174,"mutability":"mutable","name":"stepAmountsIn","nameLocation":"28002:13:57","nodeType":"VariableDeclaration","scope":13267,"src":"27985:30:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13172,"name":"uint256","nodeType":"ElementaryTypeName","src":"27985:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13173,"nodeType":"ArrayTypeName","src":"27985:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13176,"mutability":"mutable","name":"tokenIndex","nameLocation":"28025:10:57","nodeType":"VariableDeclaration","scope":13267,"src":"28017:18:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13175,"name":"uint256","nodeType":"ElementaryTypeName","src":"28017:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13183,"initialValue":{"arguments":[{"expression":{"id":13178,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"28098:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13179,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28103:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"28098:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13180,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"28133:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":13181,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"28170:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13177,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"28039:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":13182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28039:168:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"27984:223:57"},{"expression":{"id":13208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":13184,"name":"stepAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"28345:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null,null],"id":13185,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"28344:19:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$__$__$","typeString":"tuple(uint256[] memory,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":13189,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"28466:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28471:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"28466:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"condition":{"expression":{"id":13191,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"28509:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":13192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28520:11:57","memberName":"isFirstStep","nodeType":"MemberAccess","referencedDeclaration":11740,"src":"28509:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":13197,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"28558:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":13196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28550:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13195,"name":"address","nodeType":"ElementaryTypeName","src":"28550:7:57","typeDescriptions":{}}},"id":13198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28550:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"28509:56:57","trueExpression":{"expression":{"id":13193,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"28534:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28541:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1496,"src":"28534:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13200,"name":"stepAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"28609:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13201,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"28669:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13202,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"28723:16:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":13203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28740:22:57","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4586,"src":"28723:39:57","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"expression":{"id":13204,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"28802:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28809:8:57","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":1506,"src":"28802:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13188,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4605,"src":"28411:18:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$4605_storage_ptr_$","typeString":"type(struct AddLiquidityParams storage pointer)"}},"id":13206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["28460:4:57","28505:2:57","28595:12:57","28652:15:57","28717:4:57","28792:8:57"],"names":["pool","to","maxAmountsIn","minBptAmountOut","kind","userData"],"nodeType":"FunctionCall","src":"28411:433:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}],"expression":{"id":13186,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"28366:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28373:12:57","memberName":"addLiquidity","nodeType":"MemberAccess","referencedDeclaration":4271,"src":"28366:19:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct AddLiquidityParams memory) external returns (uint256[] memory,uint256,bytes memory)"}},"id":13207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28366:500:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"28344:522:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13209,"nodeType":"ExpressionStatement","src":"28344:522:57"},{"condition":{"expression":{"id":13210,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"28893:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":13211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28904:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"28893:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13239,"nodeType":"Block","src":"29236:95:57","statements":[{"expression":{"id":13237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13233,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"29262:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":13234,"name":"stepAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"29283:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13236,"indexExpression":{"id":13235,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"29297:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29283:25:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29262:46:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13238,"nodeType":"ExpressionStatement","src":"29262:46:57"}]},"id":13240,"nodeType":"IfStatement","src":"28889:442:57","trueBody":{"id":13232,"nodeType":"Block","src":"28916:314:57","statements":[{"expression":{"id":13218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13212,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12720,"src":"29055:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13214,"indexExpression":{"id":13213,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12733,"src":"29069:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29055:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":13215,"name":"stepAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"29074:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13217,"indexExpression":{"id":13216,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"29088:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29074:25:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29055:44:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13219,"nodeType":"ExpressionStatement","src":"29055:44:57"},{"expression":{"arguments":[{"arguments":[{"id":13225,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"29167:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":13224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29159:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13223,"name":"address","nodeType":"ElementaryTypeName","src":"29159:7:57","typeDescriptions":{}}},"id":13226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29159:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13227,"name":"stepAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"29181:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13229,"indexExpression":{"id":13228,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"29195:10:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29181:25:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13220,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"29125:26:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29125:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29154:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"29125:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":13230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29125:82:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13231,"nodeType":"ExpressionStatement","src":"29125:82:57"}]}},{"condition":{"expression":{"id":13241,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"29466:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":13242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29477:11:57","memberName":"isFirstStep","nodeType":"MemberAccess","referencedDeclaration":11740,"src":"29466:22:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13265,"nodeType":"Block","src":"29813:210:57","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":13259,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"29969:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29974:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"29969:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13258,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"29962:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":13261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29962:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":13262,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"29981:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13255,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"29948:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29955:6:57","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"29948:13:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":13263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29948:52:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13264,"nodeType":"ExpressionStatement","src":"29948:52:57"}]},"id":13266,"nodeType":"IfStatement","src":"29462:561:57","trueBody":{"id":13254,"nodeType":"Block","src":"29490:317:57","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":13248,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"29749:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29754:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"29749:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":13247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29741:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13246,"name":"address","nodeType":"ElementaryTypeName","src":"29741:7:57","typeDescriptions":{}}},"id":13250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29741:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13251,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"29765:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13243,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"29706:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29706:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29736:4:57","memberName":"tSub","nodeType":"MemberAccess","referencedDeclaration":6759,"src":"29706:34:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":13252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29706:78:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13253,"nodeType":"ExpressionStatement","src":"29706:78:57"}]}}]}},"id":13314,"nodeType":"IfStatement","src":"23885:7087:57","trueBody":{"id":13161,"nodeType":"Block","src":"23924:3910:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12995,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"24612:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24623:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"24612:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":12997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24637:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"24612:30:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13021,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"24844:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24851:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1496,"src":"24844:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":13025,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24869:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":13024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24861:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13023,"name":"address","nodeType":"ElementaryTypeName","src":"24861:7:57","typeDescriptions":{}}},"id":13026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24861:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"24844:30:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13047,"nodeType":"IfStatement","src":"24840:814:57","trueBody":{"id":13046,"nodeType":"Block","src":"24876:778:57","statements":[{"expression":{"arguments":[{"expression":{"id":13031,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"25442:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25449:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1496,"src":"25442:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13035,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25493:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":13034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25485:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13033,"name":"address","nodeType":"ElementaryTypeName","src":"25485:7:57","typeDescriptions":{}}},"id":13036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25485:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13037,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"25528:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25544:9:57","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":42734,"src":"25528:25:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":13039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25528:27:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":13042,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"25593:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":13041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25585:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13040,"name":"address","nodeType":"ElementaryTypeName","src":"25585:7:57","typeDescriptions":{}}},"id":13043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25585:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13028,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"25391:8:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":13030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25400:12:57","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46055,"src":"25391:21:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address) external"}},"id":13044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25391:240:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13045,"nodeType":"ExpressionStatement","src":"25391:240:57"}]}},"id":13048,"nodeType":"IfStatement","src":"24608:1046:57","trueBody":{"id":13020,"nodeType":"Block","src":"24644:190:57","statements":[{"expression":{"id":13004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12999,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"24670:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13002,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"24709:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"expression":{"id":13000,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"24688:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24695:13:57","memberName":"getReservesOf","nodeType":"MemberAccess","referencedDeclaration":3848,"src":"24688:20:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$39274_$returns$_t_uint256_$","typeString":"function (contract IERC20) view external returns (uint256)"}},"id":13003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24688:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24670:51:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13005,"nodeType":"ExpressionStatement","src":"24670:51:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":13010,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"24768:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24773:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"24768:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13009,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"24761:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":13012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24761:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":13015,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24788:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":13014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24780:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13013,"name":"address","nodeType":"ElementaryTypeName","src":"24780:7:57","typeDescriptions":{}}},"id":13016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24780:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13017,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"24795:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13006,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"24747:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24754:6:57","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"24747:13:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":13018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24747:64:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13019,"nodeType":"ExpressionStatement","src":"24747:64:57"}]}},{"assignments":[13053,null],"declarations":[{"constant":false,"id":13053,"mutability":"mutable","name":"exactAmountsOut","nameLocation":"25694:15:57","nodeType":"VariableDeclaration","scope":13161,"src":"25677:32:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13051,"name":"uint256","nodeType":"ElementaryTypeName","src":"25677:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13052,"nodeType":"ArrayTypeName","src":"25677:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null],"id":13061,"initialValue":{"arguments":[{"expression":{"id":13055,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"25774:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25779:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"25774:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13057,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"25809:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13058,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25814:8:57","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"25809:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":13059,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"25848:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13054,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"25715:33:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":13060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25715:173:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"25676:212:57"},{"assignments":[13063,null,null],"declarations":[{"constant":false,"id":13063,"mutability":"mutable","name":"bptAmountIn","nameLocation":"26124:11:57","nodeType":"VariableDeclaration","scope":13161,"src":"26116:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13062,"name":"uint256","nodeType":"ElementaryTypeName","src":"26116:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":13081,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":13067,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"26249:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":13068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26254:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"26249:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13071,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26302:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":13070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26294:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13069,"name":"address","nodeType":"ElementaryTypeName","src":"26294:7:57","typeDescriptions":{}}},"id":13072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26294:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13073,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"26353:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13074,"name":"exactAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13053,"src":"26413:15:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":13075,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"26464:19:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":13076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26484:22:57","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4608,"src":"26464:42:57","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"expression":{"id":13077,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"26546:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26553:8:57","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":1506,"src":"26546:15:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13066,"name":"RemoveLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4626,"src":"26191:21:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityParams_$4626_storage_ptr_$","typeString":"type(struct RemoveLiquidityParams storage pointer)"}},"id":13079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["26243:4:57","26288:4:57","26337:14:57","26398:13:57","26458:4:57","26536:8:57"],"names":["pool","from","maxBptAmountIn","minAmountsOut","kind","userData"],"nodeType":"FunctionCall","src":"26191:397:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}],"expression":{"id":13064,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"26143:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26150:15:57","memberName":"removeLiquidity","nodeType":"MemberAccess","referencedDeclaration":4285,"src":"26143:22:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct RemoveLiquidityParams memory) external returns (uint256,uint256[] memory,bytes memory)"}},"id":13080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26143:467:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"26115:495:57"},{"condition":{"expression":{"id":13082,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"26637:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":13083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26648:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"26637:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13159,"nodeType":"Block","src":"27250:566:57","statements":[{"expression":{"id":13129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13127,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"27357:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13128,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"27378:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27357:32:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13130,"nodeType":"ExpressionStatement","src":"27357:32:57"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13131,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"27499:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13132,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"27513:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27499:29:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13158,"nodeType":"IfStatement","src":"27495:299:57","trueBody":{"id":13157,"nodeType":"Block","src":"27530:264:57","statements":[{"assignments":[13135],"declarations":[{"constant":false,"id":13135,"mutability":"mutable","name":"refundAmount","nameLocation":"27568:12:57","nodeType":"VariableDeclaration","scope":13157,"src":"27560:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13134,"name":"uint256","nodeType":"ElementaryTypeName","src":"27560:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13139,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13136,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"27583:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13137,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"27601:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27583:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27560:52:57"},{"expression":{"arguments":[{"arguments":[{"id":13145,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"27675:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":13144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27667:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13143,"name":"address","nodeType":"ElementaryTypeName","src":"27667:7:57","typeDescriptions":{}}},"id":13146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27667:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13147,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"27684:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13140,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"27642:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":13142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27654:12:57","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":39386,"src":"27642:24:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":13148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27642:55:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13149,"nodeType":"ExpressionStatement","src":"27642:55:57"},{"expression":{"arguments":[{"id":13153,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"27741:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":13154,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"27754:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13150,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"27727:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27734:6:57","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"27727:13:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":13155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27727:40:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13156,"nodeType":"ExpressionStatement","src":"27727:40:57"}]}}]},"id":13160,"nodeType":"IfStatement","src":"26633:1183:57","trueBody":{"id":13126,"nodeType":"Block","src":"26660:584:57","statements":[{"expression":{"id":13088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13084,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12720,"src":"26798:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13086,"indexExpression":{"id":13085,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12733,"src":"26812:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26798:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13087,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"26817:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26798:30:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13089,"nodeType":"ExpressionStatement","src":"26798:30:57"},{"expression":{"arguments":[{"arguments":[{"id":13095,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"26890:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":13094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26882:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13093,"name":"address","nodeType":"ElementaryTypeName","src":"26882:7:57","typeDescriptions":{}}},"id":13096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26882:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13097,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"26904:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13090,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"26854:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26854:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26877:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"26854:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":13098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26854:62:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13099,"nodeType":"ExpressionStatement","src":"26854:62:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13100,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"27021:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13101,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"27035:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27021:29:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13103,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"27054:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27061:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1496,"src":"27054:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":13107,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27079:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":13106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27071:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13105,"name":"address","nodeType":"ElementaryTypeName","src":"27071:7:57","typeDescriptions":{}}},"id":13108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27071:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27054:30:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27021:63:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13125,"nodeType":"IfStatement","src":"27017:205:57","trueBody":{"id":13124,"nodeType":"Block","src":"27086:136:57","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":13116,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"27149:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":13117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27156:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1496,"src":"27149:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27141:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13114,"name":"address","nodeType":"ElementaryTypeName","src":"27141:7:57","typeDescriptions":{}}},"id":13118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27141:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13119,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"27165:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13120,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13063,"src":"27183:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27165:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13111,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"27116:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":13113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27128:12:57","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":39386,"src":"27116:24:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":13122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27116:79:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13123,"nodeType":"ExpressionStatement","src":"27116:79:57"}]}}]}}]}},"id":13315,"nodeType":"IfStatement","src":"21999:8973:57","trueBody":{"id":12987,"nodeType":"Block","src":"22018:1861:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12890,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"22044:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22055:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"22044:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12892,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"22069:18:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":12893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22088:12:57","memberName":"isStaticCall","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"22069:31:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":12894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22069:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":12895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22106:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"22069:42:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"22044:67:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12910,"nodeType":"IfStatement","src":"22040:311:57","trueBody":{"id":12909,"nodeType":"Block","src":"22113:238:57","statements":[{"expression":{"arguments":[{"expression":{"id":12899,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"22264:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22271:6:57","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1496,"src":"22264:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12901,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"22279:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22284:7:57","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":1472,"src":"22279:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":12903,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"22293:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22298:11:57","memberName":"maxAmountIn","nodeType":"MemberAccess","referencedDeclaration":1478,"src":"22293:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":12905,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"22311:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22318:9:57","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":1504,"src":"22311:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12898,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"22251:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":12907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22251:77:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12908,"nodeType":"ExpressionStatement","src":"22251:77:57"}]}},{"assignments":[null,12912,null],"declarations":[null,{"constant":false,"id":12912,"mutability":"mutable","name":"amountIn","nameLocation":"22384:8:57","nodeType":"VariableDeclaration","scope":12987,"src":"22376:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12911,"name":"uint256","nodeType":"ElementaryTypeName","src":"22376:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":12938,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":12916,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"22517:8:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":12917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22526:9:57","memberName":"EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"22517:18:57","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12918,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"22576:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22581:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"22576:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":12922,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"22597:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22589:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12920,"name":"address","nodeType":"ElementaryTypeName","src":"22589:7:57","typeDescriptions":{}}},"id":12923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22589:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22576:33:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":12927,"name":"WrappingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"22703:17:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_WrappingDirection_$4629_$","typeString":"type(enum WrappingDirection)"}},"id":12928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22721:4:57","memberName":"WRAP","nodeType":"MemberAccess","referencedDeclaration":4627,"src":"22703:22:57","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},"id":12929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22576:149:57","trueExpression":{"expression":{"id":12925,"name":"WrappingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"22644:17:57","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_WrappingDirection_$4629_$","typeString":"type(enum WrappingDirection)"}},"id":12926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22662:6:57","memberName":"UNWRAP","nodeType":"MemberAccess","referencedDeclaration":4628,"src":"22644:24:57","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},"typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},{"arguments":[{"expression":{"id":12931,"name":"step","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12786,"src":"22778:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathStep_$1457_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory"}},"id":12932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22783:4:57","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"22778:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12930,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"22769:8:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$38998_$","typeString":"type(contract IERC4626)"}},"id":12933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22769:19:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":12934,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"22834:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12935,"name":"stepMaxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12825,"src":"22892:15:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12915,"name":"BufferWrapOrUnwrapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"22456:24:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_BufferWrapOrUnwrapParams_$4644_storage_ptr_$","typeString":"type(struct BufferWrapOrUnwrapParams storage pointer)"}},"id":12936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["22511:4:57","22565:9:57","22755:12:57","22818:14:57","22882:8:57"],"names":["kind","direction","wrappedToken","amountGivenRaw","limitRaw"],"nodeType":"FunctionCall","src":"22456:478:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}],"expression":{"id":12913,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"22398:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":12914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22405:25:57","memberName":"erc4626BufferWrapOrUnwrap","nodeType":"MemberAccess","referencedDeclaration":4337,"src":"22398:32:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct BufferWrapOrUnwrapParams memory) external returns (uint256,uint256,uint256)"}},"id":12937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22398:558:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"22373:583:57"},{"condition":{"expression":{"id":12939,"name":"stepLocals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12797,"src":"22983:10:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapStepLocals_$11743_memory_ptr","typeString":"struct SwapStepLocals memory"}},"id":12940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22994:10:57","memberName":"isLastStep","nodeType":"MemberAccess","referencedDeclaration":11742,"src":"22983:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12985,"nodeType":"Block","src":"23783:78:57","statements":[{"expression":{"id":12983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12981,"name":"stepExactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"23809:18:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12982,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12912,"src":"23830:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23809:29:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12984,"nodeType":"ExpressionStatement","src":"23809:29:57"}]},"id":12986,"nodeType":"IfStatement","src":"22979:882:57","trueBody":{"id":12980,"nodeType":"Block","src":"23006:771:57","statements":[{"expression":{"id":12945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12941,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12720,"src":"23032:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12943,"indexExpression":{"id":12942,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12733,"src":"23046:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23032:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12944,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12912,"src":"23051:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23032:27:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12946,"nodeType":"ExpressionStatement","src":"23032:27:57"},{"expression":{"arguments":[{"arguments":[{"id":12952,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"23278:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23270:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12950,"name":"address","nodeType":"ElementaryTypeName","src":"23270:7:57","typeDescriptions":{}}},"id":12953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23270:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12947,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"23242:21:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":12948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23242:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":12949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23266:3:57","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":9983,"src":"23242:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":12954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23242:49:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12955,"nodeType":"ExpressionStatement","src":"23242:49:57"},{"expression":{"arguments":[{"arguments":[{"id":12961,"name":"stepTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12829,"src":"23360:11:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23352:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12959,"name":"address","nodeType":"ElementaryTypeName","src":"23352:7:57","typeDescriptions":{}}},"id":12962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23352:20:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12963,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"23374:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23379:11:57","memberName":"maxAmountIn","nodeType":"MemberAccess","referencedDeclaration":1478,"src":"23374:16:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12965,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12912,"src":"23393:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23374:27:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12956,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"23317:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23317:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23347:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"23317:34:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23317:85:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12968,"nodeType":"ExpressionStatement","src":"23317:85:57"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":12974,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"23730:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23735:7:57","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":1472,"src":"23730:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":12973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23722:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12972,"name":"address","nodeType":"ElementaryTypeName","src":"23722:7:57","typeDescriptions":{}}},"id":12976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23722:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12977,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12912,"src":"23745:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12969,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"23694:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":12970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23694:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":12971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23717:4:57","memberName":"tAdd","nodeType":"MemberAccess","referencedDeclaration":6729,"src":"23694:27:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":12978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23694:60:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12979,"nodeType":"ExpressionStatement","src":"23694:60:57"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12778,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12768,"src":"20184:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":12779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20189:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20184:6:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13317,"initializationExpression":{"assignments":[12768],"declarations":[{"constant":false,"id":12768,"mutability":"mutable","name":"j","nameLocation":"20149:1:57","nodeType":"VariableDeclaration","scope":13317,"src":"20142:8:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12767,"name":"int256","nodeType":"ElementaryTypeName","src":"20142:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":12777,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":12771,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12746,"src":"20160:4:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":12772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20165:5:57","memberName":"steps","nodeType":"MemberAccess","referencedDeclaration":1476,"src":"20160:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathStep_$1457_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathStep memory[] memory"}},"id":12773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20171:6:57","memberName":"length","nodeType":"MemberAccess","src":"20160:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20180:1:57","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20160:21:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20153:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":12769,"name":"int256","nodeType":"ElementaryTypeName","src":"20153:6:57","typeDescriptions":{}}},"id":12776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20153:29:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20142:40:57"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":12782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"20192:3:57","subExpression":{"id":12781,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12768,"src":"20194:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":12783,"nodeType":"ExpressionStatement","src":"20192:3:57"},"nodeType":"ForStatement","src":"20137:10849:57"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12736,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12733,"src":"18989:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":12737,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12716,"src":"18993:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}},"id":12738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19000:5:57","memberName":"paths","nodeType":"MemberAccess","referencedDeclaration":1500,"src":"18993:12:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut calldata[] calldata"}},"id":12739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19006:6:57","memberName":"length","nodeType":"MemberAccess","src":"18993:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18989:23:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13319,"initializationExpression":{"assignments":[12733],"declarations":[{"constant":false,"id":12733,"mutability":"mutable","name":"i","nameLocation":"18982:1:57","nodeType":"VariableDeclaration","scope":13319,"src":"18974:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12732,"name":"uint256","nodeType":"ElementaryTypeName","src":"18974:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12735,"initialValue":{"hexValue":"30","id":12734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18986:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18974:13:57"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"19014:3:57","subExpression":{"id":12741,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12733,"src":"19016:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12743,"nodeType":"ExpressionStatement","src":"19014:3:57"},"nodeType":"ForStatement","src":"18969:12027:57"}]},"documentation":{"id":12713,"nodeType":"StructuredDocumentation","src":"18571:187:57","text":" @dev Executes every swap path in the given input parameters.\n Computes inputs for the path, and aggregates them by token and amounts as well in transient storage."},"id":13321,"implemented":true,"kind":"function","modifiers":[],"name":"_computePathAmountsIn","nameLocation":"18772:21:57","nodeType":"FunctionDefinition","parameters":{"id":12717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12716,"mutability":"mutable","name":"params","nameLocation":"18835:6:57","nodeType":"VariableDeclaration","scope":13321,"src":"18803:38:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"},"typeName":{"id":12715,"nodeType":"UserDefinedTypeName","pathNode":{"id":12714,"name":"SwapExactOutHookParams","nameLocations":["18803:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":1507,"src":"18803:22:57"},"referencedDeclaration":1507,"src":"18803:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_storage_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"}},"visibility":"internal"}],"src":"18793:54:57"},"returnParameters":{"id":12721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12720,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"18883:13:57","nodeType":"VariableDeclaration","scope":13321,"src":"18866:30:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12718,"name":"uint256","nodeType":"ElementaryTypeName","src":"18866:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12719,"nodeType":"ArrayTypeName","src":"18866:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"18865:32:57"},"scope":13542,"src":"18763:12239:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1574],"body":{"id":13401,"nodeType":"Block","src":"31539:697:57","statements":[{"body":{"id":13363,"nodeType":"Block","src":"31592:50:57","statements":[{"expression":{"id":13361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":13356,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13326,"src":"31606:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory[] memory"}},"id":13358,"indexExpression":{"id":13357,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"31612:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31606:8:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory"}},"id":13359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"31615:12:57","memberName":"minAmountOut","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"31606:21:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31630:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31606:25:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13362,"nodeType":"ExpressionStatement","src":"31606:25:57"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13349,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"31569:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13350,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13326,"src":"31573:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory[] memory"}},"id":13351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31579:6:57","memberName":"length","nodeType":"MemberAccess","src":"31573:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31569:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13364,"initializationExpression":{"assignments":[13346],"declarations":[{"constant":false,"id":13346,"mutability":"mutable","name":"i","nameLocation":"31562:1:57","nodeType":"VariableDeclaration","scope":13364,"src":"31554:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13345,"name":"uint256","nodeType":"ElementaryTypeName","src":"31554:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13348,"initialValue":{"hexValue":"30","id":13347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31566:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"31554:13:57"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":13354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"31587:3:57","subExpression":{"id":13353,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"31589:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13355,"nodeType":"ExpressionStatement","src":"31587:3:57"},"nodeType":"ForStatement","src":"31549:93:57"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":13371,"name":"BatchRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13542,"src":"31773:11:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRouter_$13542_$","typeString":"type(contract BatchRouter)"}},"id":13372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31785:20:57","memberName":"querySwapExactInHook","nodeType":"MemberAccess","referencedDeclaration":13512,"src":"31773:32:57","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactInHookParams_$1494_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.querySwapExactInHook(struct IBatchRouter.SwapExactInHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},{"arguments":[{"arguments":[{"id":13376,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31899:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":13375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31891:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13374,"name":"address","nodeType":"ElementaryTypeName","src":"31891:7:57","typeDescriptions":{}}},"id":13377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31891:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13378,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13326,"src":"31941:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory[] memory"}},{"expression":{"arguments":[{"id":13381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31991:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13380,"name":"uint256","nodeType":"ElementaryTypeName","src":"31991:7:57","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":13379,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"31986:4:57","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31986:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":13383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32000:3:57","memberName":"max","nodeType":"MemberAccess","src":"31986:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":13384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32044:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":13385,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"32089:8:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13373,"name":"SwapExactInHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1494,"src":"31831:21:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapExactInHookParams_$1494_storage_ptr_$","typeString":"type(struct IBatchRouter.SwapExactInHookParams storage pointer)"}},"id":13386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["31883:6:57","31934:5:57","31976:8:57","32033:9:57","32079:8:57"],"names":["sender","paths","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"31831:293:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_memory_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactInHookParams_$1494_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.querySwapExactInHook(struct IBatchRouter.SwapExactInHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"},{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_memory_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams memory"}],"expression":{"id":13369,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"31733:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31737:10:57","memberName":"encodeCall","nodeType":"MemberAccess","src":"31733:14:57","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31733:413:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13367,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"31699:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31706:5:57","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"31699:12:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":13388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31699:465:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":13390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32183:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13389,"name":"uint256","nodeType":"ElementaryTypeName","src":"32183:7:57","typeDescriptions":{}}},"id":13391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"32183:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"baseExpression":{"id":13393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32194:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13392,"name":"address","nodeType":"ElementaryTypeName","src":"32194:7:57","typeDescriptions":{}}},"id":13394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"32194:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"baseExpression":{"id":13396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32205:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13395,"name":"uint256","nodeType":"ElementaryTypeName","src":"32205:7:57","typeDescriptions":{}}},"id":13397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"32205:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":13398,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"32182:33:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}],"expression":{"id":13365,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"31671:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31675:6:57","memberName":"decode","nodeType":"MemberAccess","src":"31671:10:57","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":13399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31671:558:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"functionReturnParameters":13344,"id":13400,"nodeType":"Return","src":"31652:577:57"}]},"documentation":{"id":13322,"nodeType":"StructuredDocumentation","src":"31216:28:57","text":"@inheritdoc IBatchRouter"},"functionSelector":"e3b5dff4","id":13402,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":13333,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13328,"src":"31420:6:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13334,"kind":"modifierInvocation","modifierName":{"id":13332,"name":"saveSender","nameLocations":["31409:10:57"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"31409:10:57"},"nodeType":"ModifierInvocation","src":"31409:18:57"}],"name":"querySwapExactIn","nameLocation":"31258:16:57","nodeType":"FunctionDefinition","parameters":{"id":13331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13326,"mutability":"mutable","name":"paths","nameLocation":"31315:5:57","nodeType":"VariableDeclaration","scope":13402,"src":"31284:36:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"},"typeName":{"baseType":{"id":13324,"nodeType":"UserDefinedTypeName","pathNode":{"id":13323,"name":"SwapPathExactAmountIn","nameLocations":["31284:21:57"],"nodeType":"IdentifierPath","referencedDeclaration":1469,"src":"31284:21:57"},"referencedDeclaration":1469,"src":"31284:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountIn_$1469_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn"}},"id":13325,"nodeType":"ArrayTypeName","src":"31284:23:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountIn_$1469_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountIn[]"}},"visibility":"internal"},{"constant":false,"id":13328,"mutability":"mutable","name":"sender","nameLocation":"31338:6:57","nodeType":"VariableDeclaration","scope":13402,"src":"31330:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13327,"name":"address","nodeType":"ElementaryTypeName","src":"31330:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13330,"mutability":"mutable","name":"userData","nameLocation":"31369:8:57","nodeType":"VariableDeclaration","scope":13402,"src":"31354:23:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13329,"name":"bytes","nodeType":"ElementaryTypeName","src":"31354:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31274:109:57"},"returnParameters":{"id":13344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13337,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"31462:14:57","nodeType":"VariableDeclaration","scope":13402,"src":"31445:31:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13335,"name":"uint256","nodeType":"ElementaryTypeName","src":"31445:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13336,"nodeType":"ArrayTypeName","src":"31445:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13340,"mutability":"mutable","name":"tokensOut","nameLocation":"31495:9:57","nodeType":"VariableDeclaration","scope":13402,"src":"31478:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13338,"name":"address","nodeType":"ElementaryTypeName","src":"31478:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13339,"nodeType":"ArrayTypeName","src":"31478:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":13343,"mutability":"mutable","name":"amountsOut","nameLocation":"31523:10:57","nodeType":"VariableDeclaration","scope":13402,"src":"31506:27:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13341,"name":"uint256","nodeType":"ElementaryTypeName","src":"31506:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13342,"nodeType":"ArrayTypeName","src":"31506:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"31444:90:57"},"scope":13542,"src":"31249:987:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1595],"body":{"id":13482,"nodeType":"Block","src":"32564:708:57","statements":[{"body":{"id":13444,"nodeType":"Block","src":"32617:59:57","statements":[{"expression":{"id":13442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":13437,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13407,"src":"32631:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory[] memory"}},"id":13439,"indexExpression":{"id":13438,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13427,"src":"32637:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32631:8:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory"}},"id":13440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"32640:11:57","memberName":"maxAmountIn","nodeType":"MemberAccess","referencedDeclaration":1478,"src":"32631:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13441,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"32654:11:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32631:34:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13443,"nodeType":"ExpressionStatement","src":"32631:34:57"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13430,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13427,"src":"32594:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13431,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13407,"src":"32598:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory[] memory"}},"id":13432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32604:6:57","memberName":"length","nodeType":"MemberAccess","src":"32598:12:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32594:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13445,"initializationExpression":{"assignments":[13427],"declarations":[{"constant":false,"id":13427,"mutability":"mutable","name":"i","nameLocation":"32587:1:57","nodeType":"VariableDeclaration","scope":13445,"src":"32579:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13426,"name":"uint256","nodeType":"ElementaryTypeName","src":"32579:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13429,"initialValue":{"hexValue":"30","id":13428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32591:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"32579:13:57"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":13435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"32612:3:57","subExpression":{"id":13434,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13427,"src":"32614:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13436,"nodeType":"ExpressionStatement","src":"32612:3:57"},"nodeType":"ForStatement","src":"32574:102:57"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":13452,"name":"BatchRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13542,"src":"32807:11:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRouter_$13542_$","typeString":"type(contract BatchRouter)"}},"id":13453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32819:21:57","memberName":"querySwapExactOutHook","nodeType":"MemberAccess","referencedDeclaration":13541,"src":"32807:33:57","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactOutHookParams_$1507_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.querySwapExactOutHook(struct IBatchRouter.SwapExactOutHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},{"arguments":[{"arguments":[{"id":13457,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"32935:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchRouter_$13542","typeString":"contract BatchRouter"}],"id":13456,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32927:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13455,"name":"address","nodeType":"ElementaryTypeName","src":"32927:7:57","typeDescriptions":{}}},"id":13458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32927:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13459,"name":"paths","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13407,"src":"32977:5:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory[] memory"}},{"expression":{"arguments":[{"id":13462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33027:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13461,"name":"uint256","nodeType":"ElementaryTypeName","src":"33027:7:57","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":13460,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"33022:4:57","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33022:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":13464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33036:3:57","memberName":"max","nodeType":"MemberAccess","src":"33022:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":13465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33080:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":13466,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13411,"src":"33125:8:57","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":13454,"name":"SwapExactOutHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1507,"src":"32866:22:57","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapExactOutHookParams_$1507_storage_ptr_$","typeString":"type(struct IBatchRouter.SwapExactOutHookParams storage pointer)"}},"id":13467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["32919:6:57","32970:5:57","33012:8:57","33069:9:57","33115:8:57"],"names":["sender","paths","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"32866:294:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_memory_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapExactOutHookParams_$1507_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function BatchRouter.querySwapExactOutHook(struct IBatchRouter.SwapExactOutHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"},{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_memory_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams memory"}],"expression":{"id":13450,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"32767:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32771:10:57","memberName":"encodeCall","nodeType":"MemberAccess","src":"32767:14:57","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32767:415:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13448,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"32733:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32740:5:57","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"32733:12:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":13469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32733:467:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":13471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33219:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13470,"name":"uint256","nodeType":"ElementaryTypeName","src":"33219:7:57","typeDescriptions":{}}},"id":13472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"33219:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"baseExpression":{"id":13474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33230:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13473,"name":"address","nodeType":"ElementaryTypeName","src":"33230:7:57","typeDescriptions":{}}},"id":13475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"33230:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"baseExpression":{"id":13477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33241:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13476,"name":"uint256","nodeType":"ElementaryTypeName","src":"33241:7:57","typeDescriptions":{}}},"id":13478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"33241:9:57","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":13479,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"33218:33:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(address[] memory),type(uint256[] memory))"}],"expression":{"id":13446,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"32705:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32709:6:57","memberName":"decode","nodeType":"MemberAccess","src":"32705:10:57","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":13480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32705:560:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"functionReturnParameters":13425,"id":13481,"nodeType":"Return","src":"32686:579:57"}]},"documentation":{"id":13403,"nodeType":"StructuredDocumentation","src":"32242:28:57","text":"@inheritdoc IBatchRouter"},"functionSelector":"2950286e","id":13483,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":13414,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13409,"src":"32448:6:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13415,"kind":"modifierInvocation","modifierName":{"id":13413,"name":"saveSender","nameLocations":["32437:10:57"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"32437:10:57"},"nodeType":"ModifierInvocation","src":"32437:18:57"}],"name":"querySwapExactOut","nameLocation":"32284:17:57","nodeType":"FunctionDefinition","parameters":{"id":13412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13407,"mutability":"mutable","name":"paths","nameLocation":"32343:5:57","nodeType":"VariableDeclaration","scope":13483,"src":"32311:37:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_memory_ptr_$dyn_memory_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"},"typeName":{"baseType":{"id":13405,"nodeType":"UserDefinedTypeName","pathNode":{"id":13404,"name":"SwapPathExactAmountOut","nameLocations":["32311:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":1481,"src":"32311:22:57"},"referencedDeclaration":1481,"src":"32311:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapPathExactAmountOut_$1481_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut"}},"id":13406,"nodeType":"ArrayTypeName","src":"32311:24:57","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SwapPathExactAmountOut_$1481_storage_$dyn_storage_ptr","typeString":"struct IBatchRouter.SwapPathExactAmountOut[]"}},"visibility":"internal"},{"constant":false,"id":13409,"mutability":"mutable","name":"sender","nameLocation":"32366:6:57","nodeType":"VariableDeclaration","scope":13483,"src":"32358:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13408,"name":"address","nodeType":"ElementaryTypeName","src":"32358:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13411,"mutability":"mutable","name":"userData","nameLocation":"32397:8:57","nodeType":"VariableDeclaration","scope":13483,"src":"32382:23:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13410,"name":"bytes","nodeType":"ElementaryTypeName","src":"32382:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"32301:110:57"},"returnParameters":{"id":13425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13418,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"32490:13:57","nodeType":"VariableDeclaration","scope":13483,"src":"32473:30:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13416,"name":"uint256","nodeType":"ElementaryTypeName","src":"32473:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13417,"nodeType":"ArrayTypeName","src":"32473:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13421,"mutability":"mutable","name":"tokensIn","nameLocation":"32522:8:57","nodeType":"VariableDeclaration","scope":13483,"src":"32505:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13419,"name":"address","nodeType":"ElementaryTypeName","src":"32505:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13420,"nodeType":"ArrayTypeName","src":"32505:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":13424,"mutability":"mutable","name":"amountsIn","nameLocation":"32549:9:57","nodeType":"VariableDeclaration","scope":13483,"src":"32532:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13422,"name":"uint256","nodeType":"ElementaryTypeName","src":"32532:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13423,"nodeType":"ArrayTypeName","src":"32532:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"32472:87:57"},"scope":13542,"src":"32275:997:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13511,"nodeType":"Block","src":"33528:83:57","statements":[{"expression":{"id":13509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":13502,"name":"pathAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13494,"src":"33539:14:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13503,"name":"tokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13497,"src":"33555:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":13504,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13500,"src":"33566:10:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":13505,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"33538:39:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13507,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13486,"src":"33597:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams calldata"}],"id":13506,"name":"_swapExactInHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12025,"src":"33580:16:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapExactInHookParams_$1494_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (struct IBatchRouter.SwapExactInHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},"id":13508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33580:24:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"src":"33538:66:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13510,"nodeType":"ExpressionStatement","src":"33538:66:57"}]},"functionSelector":"8a12a08c","id":13512,"implemented":true,"kind":"function","modifiers":[{"id":13489,"kind":"modifierInvocation","modifierName":{"id":13488,"name":"nonReentrant","nameLocations":["33386:12:57"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"33386:12:57"},"nodeType":"ModifierInvocation","src":"33386:12:57"},{"id":13491,"kind":"modifierInvocation","modifierName":{"id":13490,"name":"onlyVault","nameLocations":["33407:9:57"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"33407:9:57"},"nodeType":"ModifierInvocation","src":"33407:9:57"}],"name":"querySwapExactInHook","nameLocation":"33287:20:57","nodeType":"FunctionDefinition","parameters":{"id":13487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13486,"mutability":"mutable","name":"params","nameLocation":"33348:6:57","nodeType":"VariableDeclaration","scope":13512,"src":"33317:37:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_calldata_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"},"typeName":{"id":13485,"nodeType":"UserDefinedTypeName","pathNode":{"id":13484,"name":"SwapExactInHookParams","nameLocations":["33317:21:57"],"nodeType":"IdentifierPath","referencedDeclaration":1494,"src":"33317:21:57"},"referencedDeclaration":1494,"src":"33317:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactInHookParams_$1494_storage_ptr","typeString":"struct IBatchRouter.SwapExactInHookParams"}},"visibility":"internal"}],"src":"33307:53:57"},"returnParameters":{"id":13501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13494,"mutability":"mutable","name":"pathAmountsOut","nameLocation":"33451:14:57","nodeType":"VariableDeclaration","scope":13512,"src":"33434:31:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13492,"name":"uint256","nodeType":"ElementaryTypeName","src":"33434:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13493,"nodeType":"ArrayTypeName","src":"33434:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13497,"mutability":"mutable","name":"tokensOut","nameLocation":"33484:9:57","nodeType":"VariableDeclaration","scope":13512,"src":"33467:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13495,"name":"address","nodeType":"ElementaryTypeName","src":"33467:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13496,"nodeType":"ArrayTypeName","src":"33467:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":13500,"mutability":"mutable","name":"amountsOut","nameLocation":"33512:10:57","nodeType":"VariableDeclaration","scope":13512,"src":"33495:27:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13498,"name":"uint256","nodeType":"ElementaryTypeName","src":"33495:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13499,"nodeType":"ArrayTypeName","src":"33495:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"33433:90:57"},"scope":13542,"src":"33278:333:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13540,"nodeType":"Block","src":"33866:81:57","statements":[{"expression":{"id":13538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":13531,"name":"pathAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13523,"src":"33877:13:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13532,"name":"tokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13526,"src":"33892:8:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":13533,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13529,"src":"33902:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":13534,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"33876:36:57","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13536,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13515,"src":"33933:6:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams calldata"}],"id":13535,"name":"_swapExactOutHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12712,"src":"33915:17:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapExactOutHookParams_$1507_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (struct IBatchRouter.SwapExactOutHookParams calldata) returns (uint256[] memory,address[] memory,uint256[] memory)"}},"id":13537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33915:25:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,address[] memory,uint256[] memory)"}},"src":"33876:64:57","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13539,"nodeType":"ExpressionStatement","src":"33876:64:57"}]},"functionSelector":"5a3c3987","id":13541,"implemented":true,"kind":"function","modifiers":[{"id":13518,"kind":"modifierInvocation","modifierName":{"id":13517,"name":"nonReentrant","nameLocations":["33727:12:57"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"33727:12:57"},"nodeType":"ModifierInvocation","src":"33727:12:57"},{"id":13520,"kind":"modifierInvocation","modifierName":{"id":13519,"name":"onlyVault","nameLocations":["33748:9:57"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"33748:9:57"},"nodeType":"ModifierInvocation","src":"33748:9:57"}],"name":"querySwapExactOutHook","nameLocation":"33626:21:57","nodeType":"FunctionDefinition","parameters":{"id":13516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13515,"mutability":"mutable","name":"params","nameLocation":"33689:6:57","nodeType":"VariableDeclaration","scope":13541,"src":"33657:38:57","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_calldata_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"},"typeName":{"id":13514,"nodeType":"UserDefinedTypeName","pathNode":{"id":13513,"name":"SwapExactOutHookParams","nameLocations":["33657:22:57"],"nodeType":"IdentifierPath","referencedDeclaration":1507,"src":"33657:22:57"},"referencedDeclaration":1507,"src":"33657:22:57","typeDescriptions":{"typeIdentifier":"t_struct$_SwapExactOutHookParams_$1507_storage_ptr","typeString":"struct IBatchRouter.SwapExactOutHookParams"}},"visibility":"internal"}],"src":"33647:54:57"},"returnParameters":{"id":13530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13523,"mutability":"mutable","name":"pathAmountsIn","nameLocation":"33792:13:57","nodeType":"VariableDeclaration","scope":13541,"src":"33775:30:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13521,"name":"uint256","nodeType":"ElementaryTypeName","src":"33775:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13522,"nodeType":"ArrayTypeName","src":"33775:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13526,"mutability":"mutable","name":"tokensIn","nameLocation":"33824:8:57","nodeType":"VariableDeclaration","scope":13541,"src":"33807:25:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13524,"name":"address","nodeType":"ElementaryTypeName","src":"33807:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13525,"nodeType":"ArrayTypeName","src":"33807:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":13529,"mutability":"mutable","name":"amountsIn","nameLocation":"33851:9:57","nodeType":"VariableDeclaration","scope":13541,"src":"33834:26:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13527,"name":"uint256","nodeType":"ElementaryTypeName","src":"33834:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13528,"nodeType":"ArrayTypeName","src":"33834:9:57","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"33774:87:57"},"scope":13542,"src":"33617:330:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13543,"src":"1782:32167:57","usedErrors":[3422,5586,5981,6498,9512,18076,18079,18082,39353,39634,39639,39642,42381],"usedEvents":[]}],"src":"46:33904:57"},"id":57},"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol","exportedSymbols":{"AddressToUintMappingSlot":[6486],"BatchRouterCommon":[13833],"IERC20":[39274],"IPermit2":[46102],"IVault":[2893],"IWETH":[178],"RouterCommon":[18820],"TransientEnumerableSet":[10319],"TransientStorageHelpers":[7068]},"id":13834,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13544,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:58"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":13546,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13834,"sourceUnit":39275,"src":"72:72:58","symbolAliases":[{"foreign":{"id":13545,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":13548,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13834,"sourceUnit":46103,"src":"145:63:58","symbolAliases":[{"foreign":{"id":13547,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"154:8:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":13550,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13834,"sourceUnit":179,"src":"210:93:58","symbolAliases":[{"foreign":{"id":13549,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"219:5:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":13552,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13834,"sourceUnit":2894,"src":"304:81:58","symbolAliases":[{"foreign":{"id":13551,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"313:6:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol","id":13554,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13834,"sourceUnit":10320,"src":"387:128:58","symbolAliases":[{"foreign":{"id":13553,"name":"TransientEnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"400:22:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":13557,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13834,"sourceUnit":7069,"src":"516:155:58","symbolAliases":[{"foreign":{"id":13555,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"529:23:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":13556,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"558:24:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/RouterCommon.sol","file":"./RouterCommon.sol","id":13559,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13834,"sourceUnit":18821,"src":"673:50:58","symbolAliases":[{"foreign":{"id":13558,"name":"RouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18820,"src":"682:12:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13561,"name":"RouterCommon","nameLocations":["847:12:58"],"nodeType":"IdentifierPath","referencedDeclaration":18820,"src":"847:12:58"},"id":13562,"nodeType":"InheritanceSpecifier","src":"847:12:58"}],"canonicalName":"BatchRouterCommon","contractDependencies":[],"contractKind":"contract","documentation":{"id":13560,"nodeType":"StructuredDocumentation","src":"725:83:58","text":"@notice Transient storage for Batch and Composite Liquidity Router operations."},"fullyImplemented":true,"id":13833,"linearizedBaseContracts":[13833,18820,7108,160,9568,27688,2823],"name":"BatchRouterCommon","nameLocation":"826:17:58","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13566,"libraryName":{"id":13563,"name":"TransientEnumerableSet","nameLocations":["872:22:58"],"nodeType":"IdentifierPath","referencedDeclaration":10319,"src":"872:22:58"},"nodeType":"UsingForDirective","src":"866:67:58","typeName":{"id":13565,"nodeType":"UserDefinedTypeName","pathNode":{"id":13564,"name":"TransientEnumerableSet.AddressSet","nameLocations":["899:22:58","922:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"899:33:58"},"referencedDeclaration":9934,"src":"899:33:58","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}}},{"global":false,"id":13568,"libraryName":{"id":13567,"name":"TransientStorageHelpers","nameLocations":["944:23:58"],"nodeType":"IdentifierPath","referencedDeclaration":7068,"src":"944:23:58"},"nodeType":"UsingForDirective","src":"938:36:58"},{"constant":false,"id":13573,"mutability":"immutable","name":"_CURRENT_SWAP_TOKEN_IN_SLOT","nameLocation":"1392:27:58","nodeType":"VariableDeclaration","scope":13833,"src":"1366:111:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1366:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"63757272656e7453776170546f6b656e73496e","id":13571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1455:21:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_db38d8b603bf19585ea3ee5b8f4955c49de3e11adf1637055e66a2ff3908e5e7","typeString":"literal_string \"currentSwapTokensIn\""},"value":"currentSwapTokensIn"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db38d8b603bf19585ea3ee5b8f4955c49de3e11adf1637055e66a2ff3908e5e7","typeString":"literal_string \"currentSwapTokensIn\""}],"id":13570,"name":"_calculateBatchRouterStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"1422:32:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":13572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:55:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":13578,"mutability":"immutable","name":"_CURRENT_SWAP_TOKEN_OUT_SLOT","nameLocation":"1509:28:58","nodeType":"VariableDeclaration","scope":13833,"src":"1483:113:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13574,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1483:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"63757272656e7453776170546f6b656e734f7574","id":13576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1573:22:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_af9549dbf4ea4f1c4c5af3f17082e23f90c1c98c82cdb5df79140b27d0a1a69d","typeString":"literal_string \"currentSwapTokensOut\""},"value":"currentSwapTokensOut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_af9549dbf4ea4f1c4c5af3f17082e23f90c1c98c82cdb5df79140b27d0a1a69d","typeString":"literal_string \"currentSwapTokensOut\""}],"id":13575,"name":"_calculateBatchRouterStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"1540:32:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":13577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1540:56:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":13583,"mutability":"immutable","name":"_CURRENT_SWAP_TOKEN_IN_AMOUNTS_SLOT","nameLocation":"1628:35:58","nodeType":"VariableDeclaration","scope":13833,"src":"1602:133:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13579,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1602:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"63757272656e7453776170546f6b656e496e416d6f756e7473","id":13581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1707:27:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_68fd21cec55d1a574719beab8a054fde59037dd6b23de9157da2a19bf190439e","typeString":"literal_string \"currentSwapTokenInAmounts\""},"value":"currentSwapTokenInAmounts"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_68fd21cec55d1a574719beab8a054fde59037dd6b23de9157da2a19bf190439e","typeString":"literal_string \"currentSwapTokenInAmounts\""}],"id":13580,"name":"_calculateBatchRouterStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"1674:32:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":13582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1674:61:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":13588,"mutability":"immutable","name":"_CURRENT_SWAP_TOKEN_OUT_AMOUNTS_SLOT","nameLocation":"1767:36:58","nodeType":"VariableDeclaration","scope":13833,"src":"1741:135:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1741:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"63757272656e7453776170546f6b656e4f7574416d6f756e7473","id":13586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1847:28:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_bba6ec86b6f674d3fff51c606a400982d54ca0dc850f3d0363f2ab3b76ae4fd3","typeString":"literal_string \"currentSwapTokenOutAmounts\""},"value":"currentSwapTokenOutAmounts"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bba6ec86b6f674d3fff51c606a400982d54ca0dc850f3d0363f2ab3b76ae4fd3","typeString":"literal_string \"currentSwapTokenOutAmounts\""}],"id":13585,"name":"_calculateBatchRouterStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"1814:32:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":13587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1814:62:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":13593,"mutability":"immutable","name":"_SETTLED_TOKEN_AMOUNTS_SLOT","nameLocation":"1908:27:58","nodeType":"VariableDeclaration","scope":13833,"src":"1882:111:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1882:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"736574746c6564546f6b656e416d6f756e7473","id":13591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1971:21:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_42893b4d5de9e94b21f0f9267cc9c1c0a2eefce3d3ebe62cb9fda0033fe6a721","typeString":"literal_string \"settledTokenAmounts\""},"value":"settledTokenAmounts"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_42893b4d5de9e94b21f0f9267cc9c1c0a2eefce3d3ebe62cb9fda0033fe6a721","typeString":"literal_string \"settledTokenAmounts\""}],"id":13590,"name":"_calculateBatchRouterStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13691,"src":"1938:32:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":13592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1938:55:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":13613,"nodeType":"Block","src":"2257:64:58","statements":[]},"id":13614,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13607,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"2220:5:58","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":13608,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13599,"src":"2227:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":13609,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13602,"src":"2233:7:58","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},{"id":13610,"name":"routerVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13604,"src":"2242:13:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":13611,"kind":"baseConstructorSpecifier","modifierName":{"id":13606,"name":"RouterCommon","nameLocations":["2207:12:58"],"nodeType":"IdentifierPath","referencedDeclaration":18820,"src":"2207:12:58"},"nodeType":"ModifierInvocation","src":"2207:49:58"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13596,"mutability":"mutable","name":"vault","nameLocation":"2112:5:58","nodeType":"VariableDeclaration","scope":13614,"src":"2105:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":13595,"nodeType":"UserDefinedTypeName","pathNode":{"id":13594,"name":"IVault","nameLocations":["2105:6:58"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"2105:6:58"},"referencedDeclaration":2893,"src":"2105:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":13599,"mutability":"mutable","name":"weth","nameLocation":"2133:4:58","nodeType":"VariableDeclaration","scope":13614,"src":"2127:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":13598,"nodeType":"UserDefinedTypeName","pathNode":{"id":13597,"name":"IWETH","nameLocations":["2127:5:58"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"2127:5:58"},"referencedDeclaration":178,"src":"2127:5:58","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":13602,"mutability":"mutable","name":"permit2","nameLocation":"2156:7:58","nodeType":"VariableDeclaration","scope":13614,"src":"2147:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":13601,"nodeType":"UserDefinedTypeName","pathNode":{"id":13600,"name":"IPermit2","nameLocations":["2147:8:58"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"2147:8:58"},"referencedDeclaration":46102,"src":"2147:8:58","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"},{"constant":false,"id":13604,"mutability":"mutable","name":"routerVersion","nameLocation":"2187:13:58","nodeType":"VariableDeclaration","scope":13614,"src":"2173:27:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13603,"name":"string","nodeType":"ElementaryTypeName","src":"2173:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2095:111:58"},"returnParameters":{"id":13612,"nodeType":"ParameterList","parameters":[],"src":"2257:0:58"},"scope":13833,"src":"2084:237:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13625,"nodeType":"Block","src":"2588:143:58","statements":[{"assignments":[13621],"declarations":[{"constant":false,"id":13621,"mutability":"mutable","name":"slot","nameLocation":"2606:4:58","nodeType":"VariableDeclaration","scope":13625,"src":"2598:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2598:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":13623,"initialValue":{"id":13622,"name":"_CURRENT_SWAP_TOKEN_IN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2613:27:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2598:42:58"},{"AST":{"nativeSrc":"2675:50:58","nodeType":"YulBlock","src":"2675:50:58","statements":[{"nativeSrc":"2689:26:58","nodeType":"YulAssignment","src":"2689:26:58","value":{"name":"slot","nativeSrc":"2711:4:58","nodeType":"YulIdentifier","src":"2711:4:58"},"variableNames":[{"name":"enumerableSet.slot","nativeSrc":"2689:18:58","nodeType":"YulIdentifier","src":"2689:18:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":13618,"isOffset":false,"isSlot":true,"src":"2689:18:58","suffix":"slot","valueSize":1},{"declaration":13621,"isOffset":false,"isSlot":false,"src":"2711:4:58","valueSize":1}],"flags":["memory-safe"],"id":13624,"nodeType":"InlineAssembly","src":"2650:75:58"}]},"id":13626,"implemented":true,"kind":"function","modifiers":[],"name":"_currentSwapTokensIn","nameLocation":"2485:20:58","nodeType":"FunctionDefinition","parameters":{"id":13615,"nodeType":"ParameterList","parameters":[],"src":"2505:2:58"},"returnParameters":{"id":13619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13618,"mutability":"mutable","name":"enumerableSet","nameLocation":"2573:13:58","nodeType":"VariableDeclaration","scope":13626,"src":"2531:55:58","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":13617,"nodeType":"UserDefinedTypeName","pathNode":{"id":13616,"name":"TransientEnumerableSet.AddressSet","nameLocations":["2531:22:58","2554:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"2531:33:58"},"referencedDeclaration":9934,"src":"2531:33:58","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"2530:57:58"},"scope":13833,"src":"2476:255:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13637,"nodeType":"Block","src":"2850:144:58","statements":[{"assignments":[13633],"declarations":[{"constant":false,"id":13633,"mutability":"mutable","name":"slot","nameLocation":"2868:4:58","nodeType":"VariableDeclaration","scope":13637,"src":"2860:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2860:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":13635,"initialValue":{"id":13634,"name":"_CURRENT_SWAP_TOKEN_OUT_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13578,"src":"2875:28:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2860:43:58"},{"AST":{"nativeSrc":"2938:50:58","nodeType":"YulBlock","src":"2938:50:58","statements":[{"nativeSrc":"2952:26:58","nodeType":"YulAssignment","src":"2952:26:58","value":{"name":"slot","nativeSrc":"2974:4:58","nodeType":"YulIdentifier","src":"2974:4:58"},"variableNames":[{"name":"enumerableSet.slot","nativeSrc":"2952:18:58","nodeType":"YulIdentifier","src":"2952:18:58"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":13630,"isOffset":false,"isSlot":true,"src":"2952:18:58","suffix":"slot","valueSize":1},{"declaration":13633,"isOffset":false,"isSlot":false,"src":"2974:4:58","valueSize":1}],"flags":["memory-safe"],"id":13636,"nodeType":"InlineAssembly","src":"2913:75:58"}]},"id":13638,"implemented":true,"kind":"function","modifiers":[],"name":"_currentSwapTokensOut","nameLocation":"2746:21:58","nodeType":"FunctionDefinition","parameters":{"id":13627,"nodeType":"ParameterList","parameters":[],"src":"2767:2:58"},"returnParameters":{"id":13631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13630,"mutability":"mutable","name":"enumerableSet","nameLocation":"2835:13:58","nodeType":"VariableDeclaration","scope":13638,"src":"2793:55:58","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":13629,"nodeType":"UserDefinedTypeName","pathNode":{"id":13628,"name":"TransientEnumerableSet.AddressSet","nameLocations":["2793:22:58","2816:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"2793:33:58"},"referencedDeclaration":9934,"src":"2793:33:58","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"2792:57:58"},"scope":13833,"src":"2737:257:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13649,"nodeType":"Block","src":"3164:90:58","statements":[{"expression":{"arguments":[{"id":13646,"name":"_CURRENT_SWAP_TOKEN_IN_AMOUNTS_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13583,"src":"3211:35:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":13644,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"3181:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"type(AddressToUintMappingSlot)"}},"id":13645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3206:4:58","memberName":"wrap","nodeType":"MemberAccess","src":"3181:29:58","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (bytes32) pure returns (AddressToUintMappingSlot)"}},"id":13647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:66:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"functionReturnParameters":13643,"id":13648,"nodeType":"Return","src":"3174:73:58"}]},"id":13650,"implemented":true,"kind":"function","modifiers":[],"name":"_currentSwapTokenInAmounts","nameLocation":"3081:26:58","nodeType":"FunctionDefinition","parameters":{"id":13639,"nodeType":"ParameterList","parameters":[],"src":"3107:2:58"},"returnParameters":{"id":13643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13642,"mutability":"mutable","name":"slot","nameLocation":"3158:4:58","nodeType":"VariableDeclaration","scope":13650,"src":"3133:29:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":13641,"nodeType":"UserDefinedTypeName","pathNode":{"id":13640,"name":"AddressToUintMappingSlot","nameLocations":["3133:24:58"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"3133:24:58"},"referencedDeclaration":6486,"src":"3133:24:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"}],"src":"3132:31:58"},"scope":13833,"src":"3072:182:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13661,"nodeType":"Block","src":"3427:91:58","statements":[{"expression":{"arguments":[{"id":13658,"name":"_CURRENT_SWAP_TOKEN_OUT_AMOUNTS_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13588,"src":"3474:36:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":13656,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"3444:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"type(AddressToUintMappingSlot)"}},"id":13657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3469:4:58","memberName":"wrap","nodeType":"MemberAccess","src":"3444:29:58","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (bytes32) pure returns (AddressToUintMappingSlot)"}},"id":13659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:67:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"functionReturnParameters":13655,"id":13660,"nodeType":"Return","src":"3437:74:58"}]},"id":13662,"implemented":true,"kind":"function","modifiers":[],"name":"_currentSwapTokenOutAmounts","nameLocation":"3343:27:58","nodeType":"FunctionDefinition","parameters":{"id":13651,"nodeType":"ParameterList","parameters":[],"src":"3370:2:58"},"returnParameters":{"id":13655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13654,"mutability":"mutable","name":"slot","nameLocation":"3421:4:58","nodeType":"VariableDeclaration","scope":13662,"src":"3396:29:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":13653,"nodeType":"UserDefinedTypeName","pathNode":{"id":13652,"name":"AddressToUintMappingSlot","nameLocations":["3396:24:58"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"3396:24:58"},"referencedDeclaration":6486,"src":"3396:24:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"}],"src":"3395:31:58"},"scope":13833,"src":"3334:184:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13673,"nodeType":"Block","src":"4037:82:58","statements":[{"expression":{"arguments":[{"id":13670,"name":"_SETTLED_TOKEN_AMOUNTS_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13593,"src":"4084:27:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":13668,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"4054:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"type(AddressToUintMappingSlot)"}},"id":13669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4079:4:58","memberName":"wrap","nodeType":"MemberAccess","src":"4054:29:58","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (bytes32) pure returns (AddressToUintMappingSlot)"}},"id":13671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4054:58:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"functionReturnParameters":13667,"id":13672,"nodeType":"Return","src":"4047:65:58"}]},"id":13674,"implemented":true,"kind":"function","modifiers":[],"name":"_settledTokenAmounts","nameLocation":"3960:20:58","nodeType":"FunctionDefinition","parameters":{"id":13663,"nodeType":"ParameterList","parameters":[],"src":"3980:2:58"},"returnParameters":{"id":13667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13666,"mutability":"mutable","name":"slot","nameLocation":"4031:4:58","nodeType":"VariableDeclaration","scope":13674,"src":"4006:29:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":13665,"nodeType":"UserDefinedTypeName","pathNode":{"id":13664,"name":"AddressToUintMappingSlot","nameLocations":["4006:24:58"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"4006:24:58"},"referencedDeclaration":6486,"src":"4006:24:58","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"}],"src":"4005:31:58"},"scope":13833,"src":"3951:168:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13690,"nodeType":"Block","src":"4218:96:58","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":13684,"name":"BatchRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13833,"src":"4278:17:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRouterCommon_$13833_$","typeString":"type(contract BatchRouterCommon)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_BatchRouterCommon_$13833_$","typeString":"type(contract BatchRouterCommon)"}],"id":13683,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4273:4:58","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4273:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_BatchRouterCommon_$13833","typeString":"type(contract BatchRouterCommon)"}},"id":13686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4297:4:58","memberName":"name","nodeType":"MemberAccess","src":"4273:28:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13687,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13676,"src":"4303:3:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":13681,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"4235:23:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransientStorageHelpers_$7068_$","typeString":"type(library TransientStorageHelpers)"}},"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4259:13:58","memberName":"calculateSlot","nodeType":"MemberAccess","referencedDeclaration":6537,"src":"4235:37:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory,string memory) pure returns (bytes32)"}},"id":13688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4235:72:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":13680,"id":13689,"nodeType":"Return","src":"4228:79:58"}]},"id":13691,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateBatchRouterStorageSlot","nameLocation":"4134:32:58","nodeType":"FunctionDefinition","parameters":{"id":13677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13676,"mutability":"mutable","name":"key","nameLocation":"4181:3:58","nodeType":"VariableDeclaration","scope":13691,"src":"4167:17:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13675,"name":"string","nodeType":"ElementaryTypeName","src":"4167:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4166:19:58"},"returnParameters":{"id":13680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13691,"src":"4209:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4209:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4208:9:58"},"scope":13833,"src":"4125:189:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13831,"nodeType":"Block","src":"4706:1773:58","statements":[{"assignments":[13700],"declarations":[{"constant":false,"id":13700,"mutability":"mutable","name":"numTokensIn","nameLocation":"5145:11:58","nodeType":"VariableDeclaration","scope":13831,"src":"5138:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13699,"name":"int256","nodeType":"ElementaryTypeName","src":"5138:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":13708,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13703,"name":"_currentSwapTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13626,"src":"5166:20:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":13704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5166:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":13705,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5189:6:58","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":10118,"src":"5166:29:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":13706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5166:31:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5159:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":13701,"name":"int256","nodeType":"ElementaryTypeName","src":"5159:6:58","typeDescriptions":{}}},"id":13707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5159:39:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5138:60:58"},{"assignments":[13710],"declarations":[{"constant":false,"id":13710,"mutability":"mutable","name":"numTokensOut","nameLocation":"5215:12:58","nodeType":"VariableDeclaration","scope":13831,"src":"5208:19:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13709,"name":"int256","nodeType":"ElementaryTypeName","src":"5208:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":13718,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13713,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"5237:21:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":13714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5237:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":13715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5261:6:58","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":10118,"src":"5237:30:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":13716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5237:32:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5230:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":13711,"name":"int256","nodeType":"ElementaryTypeName","src":"5230:6:58","typeDescriptions":{}}},"id":13717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:40:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5208:62:58"},{"body":{"id":13771,"nodeType":"Block","src":"5492:416:58","statements":[{"assignments":[13735],"declarations":[{"constant":false,"id":13735,"mutability":"mutable","name":"tokenIn","nameLocation":"5514:7:58","nodeType":"VariableDeclaration","scope":13771,"src":"5506:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13734,"name":"address","nodeType":"ElementaryTypeName","src":"5506:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13744,"initialValue":{"arguments":[{"arguments":[{"id":13741,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"5568:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5560:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13739,"name":"uint256","nodeType":"ElementaryTypeName","src":"5560:7:58","typeDescriptions":{}}},"id":13742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5560:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13736,"name":"_currentSwapTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13626,"src":"5524:20:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":13737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5524:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":13738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5547:12:58","memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"5524:35:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":13743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5524:47:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5506:65:58"},{"expression":{"arguments":[{"id":13746,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13694,"src":"5598:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13748,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"5613:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13747,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"5606:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":13749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5606:15:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":13753,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"5657:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13750,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"5623:26:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:28:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5652:4:58","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"5623:33:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":13754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:42:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13755,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13696,"src":"5667:9:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13745,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"5585:12:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":13756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5585:92:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13757,"nodeType":"ExpressionStatement","src":"5585:92:58"},{"expression":{"arguments":[{"id":13761,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"5834:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":13762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5843:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13758,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"5800:26:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5800:28:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5829:4:58","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"5800:33:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":13763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5800:45:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13764,"nodeType":"ExpressionStatement","src":"5800:45:58"},{"expression":{"arguments":[{"id":13768,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13735,"src":"5889:7:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13765,"name":"_currentSwapTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13626,"src":"5859:20:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":13766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5859:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":13767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5882:6:58","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":10081,"src":"5859:29:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":13769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5859:38:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13770,"nodeType":"ExpressionStatement","src":"5859:38:58"}]},"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13728,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"5479:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":13729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5484:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5479:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13772,"initializationExpression":{"assignments":[13720],"declarations":[{"constant":false,"id":13720,"mutability":"mutable","name":"i","nameLocation":"5450:1:58","nodeType":"VariableDeclaration","scope":13772,"src":"5443:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13719,"name":"int256","nodeType":"ElementaryTypeName","src":"5443:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":13727,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13723,"name":"numTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13700,"src":"5461:11:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5475:1:58","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5461:15:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5454:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":13721,"name":"int256","nodeType":"ElementaryTypeName","src":"5454:6:58","typeDescriptions":{}}},"id":13726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5454:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5443:34:58"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":13732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"5487:3:58","subExpression":{"id":13731,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"5489:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":13733,"nodeType":"ExpressionStatement","src":"5487:3:58"},"nodeType":"ForStatement","src":"5438:470:58"},{"body":{"id":13825,"nodeType":"Block","src":"5973:426:58","statements":[{"assignments":[13789],"declarations":[{"constant":false,"id":13789,"mutability":"mutable","name":"tokenOut","nameLocation":"5995:8:58","nodeType":"VariableDeclaration","scope":13825,"src":"5987:16:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13788,"name":"address","nodeType":"ElementaryTypeName","src":"5987:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13798,"initialValue":{"arguments":[{"arguments":[{"id":13795,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13774,"src":"6051:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6043:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13793,"name":"uint256","nodeType":"ElementaryTypeName","src":"6043:7:58","typeDescriptions":{}}},"id":13796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6043:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13790,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"6006:21:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":13791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6006:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":13792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6030:12:58","memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":10166,"src":"6006:36:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$9934_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":13797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6006:48:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5987:67:58"},{"expression":{"arguments":[{"id":13800,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13694,"src":"6082:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13802,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"6097:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13801,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"6090:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":13803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6090:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":13807,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"6143:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13804,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"6108:27:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:29:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6138:4:58","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6616,"src":"6108:34:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address) view returns (uint256)"}},"id":13808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:44:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13809,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13696,"src":"6154:9:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13799,"name":"_sendTokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18725,"src":"6068:13:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":13810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6068:96:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13811,"nodeType":"ExpressionStatement","src":"6068:96:58"},{"expression":{"arguments":[{"id":13815,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"6322:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":13816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6332:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13812,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"6287:27:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":13813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6287:29:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"id":13814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6317:4:58","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6641,"src":"6287:34:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function (AddressToUintMappingSlot,address,uint256)"}},"id":13817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6287:47:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13818,"nodeType":"ExpressionStatement","src":"6287:47:58"},{"expression":{"arguments":[{"id":13822,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"6379:8:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13819,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"6348:21:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":13820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6348:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"id":13821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6372:6:58","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":10081,"src":"6348:30:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$9934_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function (struct TransientEnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":13823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6348:40:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13824,"nodeType":"ExpressionStatement","src":"6348:40:58"}]},"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13782,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13774,"src":"5960:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":13783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5965:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5960:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13826,"initializationExpression":{"assignments":[13774],"declarations":[{"constant":false,"id":13774,"mutability":"mutable","name":"i","nameLocation":"5930:1:58","nodeType":"VariableDeclaration","scope":13826,"src":"5923:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13773,"name":"int256","nodeType":"ElementaryTypeName","src":"5923:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":13781,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13777,"name":"numTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13710,"src":"5941:12:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5956:1:58","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5941:16:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5934:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":13775,"name":"int256","nodeType":"ElementaryTypeName","src":"5934:6:58","typeDescriptions":{}}},"id":13780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5934:24:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5923:35:58"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":13786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"5968:3:58","subExpression":{"id":13785,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13774,"src":"5970:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":13787,"nodeType":"ExpressionStatement","src":"5968:3:58"},"nodeType":"ForStatement","src":"5918:481:58"},{"expression":{"arguments":[{"id":13828,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13694,"src":"6465:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13827,"name":"_returnEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"6454:10:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":13829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6454:18:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13830,"nodeType":"ExpressionStatement","src":"6454:18:58"}]},"documentation":{"id":13692,"nodeType":"StructuredDocumentation","src":"4538:100:58","text":"@notice Settles batch and composite liquidity operations, after credits and debits are computed."},"id":13832,"implemented":true,"kind":"function","modifiers":[],"name":"_settlePaths","nameLocation":"4652:12:58","nodeType":"FunctionDefinition","parameters":{"id":13697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13694,"mutability":"mutable","name":"sender","nameLocation":"4673:6:58","nodeType":"VariableDeclaration","scope":13832,"src":"4665:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13693,"name":"address","nodeType":"ElementaryTypeName","src":"4665:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13696,"mutability":"mutable","name":"wethIsEth","nameLocation":"4686:9:58","nodeType":"VariableDeclaration","scope":13832,"src":"4681:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13695,"name":"bool","nodeType":"ElementaryTypeName","src":"4681:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4664:32:58"},"returnParameters":{"id":13698,"nodeType":"ParameterList","parameters":[],"src":"4706:0:58"},"scope":13833,"src":"4643:1836:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":13834,"src":"808:5673:58","usedErrors":[5586,5981,9512,18076,18079,18082,39634,39639,39642],"usedEvents":[]}],"src":"46:6436:58"},"id":58},"@balancer-labs/v3-vault/contracts/BufferRouter.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/BufferRouter.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"Address":[39879],"AfterSwapParams":[4583],"BufferRouter":[14288],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IBufferRouter":[1677],"IERC20":[39274],"IERC4626":[38998],"IPermit2":[46102],"IRateProvider":[150],"IVault":[2893],"IVaultAdmin":[3183],"IWETH":[178],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"RouterCommon":[18820],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":14289,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13835,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:59"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":13837,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":38999,"src":"72:75:59","symbolAliases":[{"foreign":{"id":13836,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":13839,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":39275,"src":"148:72:59","symbolAliases":[{"foreign":{"id":13838,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"157:6:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":13841,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":39880,"src":"221:68:59","symbolAliases":[{"foreign":{"id":13840,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"230:7:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":13843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":46103,"src":"290:63:59","symbolAliases":[{"foreign":{"id":13842,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"299:8:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol","id":13845,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":1678,"src":"355:95:59","symbolAliases":[{"foreign":{"id":13844,"name":"IBufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"364:13:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":13847,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":179,"src":"451:93:59","symbolAliases":[{"foreign":{"id":13846,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"460:5:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","id":13849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":3184,"src":"545:91:59","symbolAliases":[{"foreign":{"id":13848,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"554:11:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":13851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":2894,"src":"637:81:59","symbolAliases":[{"foreign":{"id":13850,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"646:6:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":13852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":4654,"src":"719:69:59","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/RouterCommon.sol","file":"./RouterCommon.sol","id":13854,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14289,"sourceUnit":18821,"src":"790:50:59","symbolAliases":[{"foreign":{"id":13853,"name":"RouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18820,"src":"799:12:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13856,"name":"IBufferRouter","nameLocations":["1176:13:59"],"nodeType":"IdentifierPath","referencedDeclaration":1677,"src":"1176:13:59"},"id":13857,"nodeType":"InheritanceSpecifier","src":"1176:13:59"},{"baseName":{"id":13858,"name":"RouterCommon","nameLocations":["1191:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":18820,"src":"1191:12:59"},"id":13859,"nodeType":"InheritanceSpecifier","src":"1191:12:59"}],"canonicalName":"BufferRouter","contractDependencies":[],"contractKind":"contract","documentation":{"id":13855,"nodeType":"StructuredDocumentation","src":"842:308:59","text":" @notice Entrypoint for swaps, liquidity operations, and corresponding queries.\n @dev The external API functions unlock the Vault, which calls back into the corresponding hook functions.\n These interact with the Vault, transfer tokens, settle accounting, and handle wrapping and unwrapping ETH."},"fullyImplemented":true,"id":14288,"linearizedBaseContracts":[14288,18820,7108,160,9568,27688,2823,1677],"name":"BufferRouter","nameLocation":"1160:12:59","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13862,"libraryName":{"id":13860,"name":"Address","nameLocations":["1216:7:59"],"nodeType":"IdentifierPath","referencedDeclaration":39879,"src":"1216:7:59"},"nodeType":"UsingForDirective","src":"1210:26:59","typeName":{"id":13861,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":13882,"nodeType":"Block","src":"1415:64:59","statements":[]},"id":13883,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13876,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13865,"src":"1378:5:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":13877,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13868,"src":"1385:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":13878,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"1391:7:59","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},{"id":13879,"name":"routerVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"1400:13:59","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":13880,"kind":"baseConstructorSpecifier","modifierName":{"id":13875,"name":"RouterCommon","nameLocations":["1365:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":18820,"src":"1365:12:59"},"nodeType":"ModifierInvocation","src":"1365:49:59"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13865,"mutability":"mutable","name":"vault","nameLocation":"1270:5:59","nodeType":"VariableDeclaration","scope":13883,"src":"1263:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":13864,"nodeType":"UserDefinedTypeName","pathNode":{"id":13863,"name":"IVault","nameLocations":["1263:6:59"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1263:6:59"},"referencedDeclaration":2893,"src":"1263:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":13868,"mutability":"mutable","name":"weth","nameLocation":"1291:4:59","nodeType":"VariableDeclaration","scope":13883,"src":"1285:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":13867,"nodeType":"UserDefinedTypeName","pathNode":{"id":13866,"name":"IWETH","nameLocations":["1285:5:59"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"1285:5:59"},"referencedDeclaration":178,"src":"1285:5:59","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":13871,"mutability":"mutable","name":"permit2","nameLocation":"1314:7:59","nodeType":"VariableDeclaration","scope":13883,"src":"1305:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":13870,"nodeType":"UserDefinedTypeName","pathNode":{"id":13869,"name":"IPermit2","nameLocations":["1305:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"1305:8:59"},"referencedDeclaration":46102,"src":"1305:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"},{"constant":false,"id":13873,"mutability":"mutable","name":"routerVersion","nameLocation":"1345:13:59","nodeType":"VariableDeclaration","scope":13883,"src":"1331:27:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13872,"name":"string","nodeType":"ElementaryTypeName","src":"1331:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1253:111:59"},"returnParameters":{"id":13881,"nodeType":"ParameterList","parameters":[],"src":"1415:0:59"},"scope":14288,"src":"1242:237:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1620],"body":{"id":13920,"nodeType":"Block","src":"1955:550:59","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":13904,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"2087:12:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BufferRouter_$14288_$","typeString":"type(contract BufferRouter)"}},"id":13905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2100:20:59","memberName":"initializeBufferHook","nodeType":"MemberAccess","referencedDeclaration":13982,"src":"2087:33:59","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function BufferRouter.initializeBufferHook(contract IERC4626,uint256,uint256,uint256,address) returns (uint256)"}},{"components":[{"id":13906,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13887,"src":"2176:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":13907,"name":"exactAmountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13889,"src":"2218:23:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13908,"name":"exactAmountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"2271:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13909,"name":"minIssuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13893,"src":"2321:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2366:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2370:6:59","memberName":"sender","nodeType":"MemberAccess","src":"2366:10:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2146:271:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$","typeString":"tuple(contract IERC4626,uint256,uint256,uint256,address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function BufferRouter.initializeBufferHook(contract IERC4626,uint256,uint256,uint256,address) returns (uint256)"},{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$","typeString":"tuple(contract IERC4626,uint256,uint256,uint256,address)"}],"expression":{"id":13902,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2047:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2051:10:59","memberName":"encodeCall","nodeType":"MemberAccess","src":"2047:14:59","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2047:392:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13900,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"2012:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2019:6:59","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"2012:13:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":13914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2012:445:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":13916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2476:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13915,"name":"uint256","nodeType":"ElementaryTypeName","src":"2476:7:59","typeDescriptions":{}}}],"id":13917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2475:9:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":13898,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1984:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1988:6:59","memberName":"decode","nodeType":"MemberAccess","src":"1984:10:59","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":13918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1984:514:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13897,"id":13919,"nodeType":"Return","src":"1965:533:59"}]},"documentation":{"id":13884,"nodeType":"StructuredDocumentation","src":"1706:29:59","text":"@inheritdoc IBufferRouter"},"functionSelector":"b365a3c2","id":13921,"implemented":true,"kind":"function","modifiers":[],"name":"initializeBuffer","nameLocation":"1749:16:59","nodeType":"FunctionDefinition","parameters":{"id":13894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13887,"mutability":"mutable","name":"wrappedToken","nameLocation":"1784:12:59","nodeType":"VariableDeclaration","scope":13921,"src":"1775:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":13886,"nodeType":"UserDefinedTypeName","pathNode":{"id":13885,"name":"IERC4626","nameLocations":["1775:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1775:8:59"},"referencedDeclaration":38998,"src":"1775:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":13889,"mutability":"mutable","name":"exactAmountUnderlyingIn","nameLocation":"1814:23:59","nodeType":"VariableDeclaration","scope":13921,"src":"1806:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13888,"name":"uint256","nodeType":"ElementaryTypeName","src":"1806:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13891,"mutability":"mutable","name":"exactAmountWrappedIn","nameLocation":"1855:20:59","nodeType":"VariableDeclaration","scope":13921,"src":"1847:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13890,"name":"uint256","nodeType":"ElementaryTypeName","src":"1847:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13893,"mutability":"mutable","name":"minIssuedShares","nameLocation":"1893:15:59","nodeType":"VariableDeclaration","scope":13921,"src":"1885:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13892,"name":"uint256","nodeType":"ElementaryTypeName","src":"1885:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1765:149:59"},"returnParameters":{"id":13897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13896,"mutability":"mutable","name":"issuedShares","nameLocation":"1941:12:59","nodeType":"VariableDeclaration","scope":13921,"src":"1933:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13895,"name":"uint256","nodeType":"ElementaryTypeName","src":"1933:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1932:22:59"},"scope":14288,"src":"1740:765:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":13981,"nodeType":"Block","src":"3645:462:59","statements":[{"expression":{"id":13951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13942,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13940,"src":"3655:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13945,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13925,"src":"3707:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":13946,"name":"exactAmountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13927,"src":"3733:23:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13947,"name":"exactAmountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13929,"src":"3770:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13948,"name":"minIssuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13931,"src":"3804:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13949,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13933,"src":"3833:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13943,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3670:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3677:16:59","memberName":"initializeBuffer","nodeType":"MemberAccess","referencedDeclaration":3099,"src":"3670:23:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256)"}},"id":13950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3670:184:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3655:199:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13952,"nodeType":"ExpressionStatement","src":"3655:199:59"},{"assignments":[13954],"declarations":[{"constant":false,"id":13954,"mutability":"mutable","name":"asset","nameLocation":"3873:5:59","nodeType":"VariableDeclaration","scope":13981,"src":"3865:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13953,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13959,"initialValue":{"arguments":[{"id":13957,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13925,"src":"3910:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":13955,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3881:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":13956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3888:21:59","memberName":"getERC4626BufferAsset","nodeType":"MemberAccess","referencedDeclaration":4085,"src":"3881:28:59","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC4626_$38998_$returns$_t_address_$","typeString":"function (contract IERC4626) view external returns (address)"}},"id":13958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3881:42:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3865:58:59"},{"expression":{"arguments":[{"id":13961,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13933,"src":"3946:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13963,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13954,"src":"3966:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13962,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"3959:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":13964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3959:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":13965,"name":"exactAmountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13927,"src":"3974:23:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":13966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3999:5:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13960,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"3933:12:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":13967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3933:72:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13968,"nodeType":"ExpressionStatement","src":"3933:72:59"},{"expression":{"arguments":[{"id":13970,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13933,"src":"4028:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":13974,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13925,"src":"4056:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":13973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4048:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13972,"name":"address","nodeType":"ElementaryTypeName","src":"4048:7:59","typeDescriptions":{}}},"id":13975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4048:21:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13971,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"4041:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":13976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4041:29:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":13977,"name":"exactAmountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13929,"src":"4072:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":13978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4094:5:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":13969,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"4015:12:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":13979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4015:85:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13980,"nodeType":"ExpressionStatement","src":"4015:85:59"}]},"documentation":{"id":13922,"nodeType":"StructuredDocumentation","src":"2511:858:59","text":" @notice Hook for initializing a vault buffer.\n @dev Can only be called by the Vault. Buffers must be initialized before use.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param exactAmountUnderlyingIn Amount of underlying tokens that will be deposited into the buffer\n @param exactAmountWrappedIn Amount of wrapped tokens that will be deposited into the buffer\n @param minIssuedShares Minimum amount of shares to receive, in underlying token native decimals\n @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to\n remove liquidity from the buffer\n @return issuedShares the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts.\n (This is the BPT of an internal ERC4626 buffer)"},"functionSelector":"d9f70869","id":13982,"implemented":true,"kind":"function","modifiers":[{"id":13936,"kind":"modifierInvocation","modifierName":{"id":13935,"name":"nonReentrant","nameLocations":["3591:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"3591:12:59"},"nodeType":"ModifierInvocation","src":"3591:12:59"},{"id":13938,"kind":"modifierInvocation","modifierName":{"id":13937,"name":"onlyVault","nameLocations":["3604:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"3604:9:59"},"nodeType":"ModifierInvocation","src":"3604:9:59"}],"name":"initializeBufferHook","nameLocation":"3383:20:59","nodeType":"FunctionDefinition","parameters":{"id":13934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13925,"mutability":"mutable","name":"wrappedToken","nameLocation":"3422:12:59","nodeType":"VariableDeclaration","scope":13982,"src":"3413:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":13924,"nodeType":"UserDefinedTypeName","pathNode":{"id":13923,"name":"IERC4626","nameLocations":["3413:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"3413:8:59"},"referencedDeclaration":38998,"src":"3413:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":13927,"mutability":"mutable","name":"exactAmountUnderlyingIn","nameLocation":"3452:23:59","nodeType":"VariableDeclaration","scope":13982,"src":"3444:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13926,"name":"uint256","nodeType":"ElementaryTypeName","src":"3444:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13929,"mutability":"mutable","name":"exactAmountWrappedIn","nameLocation":"3493:20:59","nodeType":"VariableDeclaration","scope":13982,"src":"3485:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13928,"name":"uint256","nodeType":"ElementaryTypeName","src":"3485:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13931,"mutability":"mutable","name":"minIssuedShares","nameLocation":"3531:15:59","nodeType":"VariableDeclaration","scope":13982,"src":"3523:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13930,"name":"uint256","nodeType":"ElementaryTypeName","src":"3523:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13933,"mutability":"mutable","name":"sharesOwner","nameLocation":"3564:11:59","nodeType":"VariableDeclaration","scope":13982,"src":"3556:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13932,"name":"address","nodeType":"ElementaryTypeName","src":"3556:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3403:178:59"},"returnParameters":{"id":13941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13940,"mutability":"mutable","name":"issuedShares","nameLocation":"3631:12:59","nodeType":"VariableDeclaration","scope":13982,"src":"3623:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13939,"name":"uint256","nodeType":"ElementaryTypeName","src":"3623:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3622:22:59"},"scope":14288,"src":"3374:733:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1637],"body":{"id":14023,"nodeType":"Block","src":"4396:562:59","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":14005,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"4528:12:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BufferRouter_$14288_$","typeString":"type(contract BufferRouter)"}},"id":14006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4541:24:59","memberName":"addLiquidityToBufferHook","nodeType":"MemberAccess","referencedDeclaration":14089,"src":"4528:37:59","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function BufferRouter.addLiquidityToBufferHook(contract IERC4626,uint256,uint256,uint256,address) returns (uint256,uint256)"}},{"components":[{"id":14007,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13986,"src":"4621:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":14008,"name":"maxAmountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13988,"src":"4663:21:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14009,"name":"maxAmountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13990,"src":"4714:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14010,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13992,"src":"4762:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":14011,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4810:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4814:6:59","memberName":"sender","nodeType":"MemberAccess","src":"4810:10:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":14013,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4591:270:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$","typeString":"tuple(contract IERC4626,uint256,uint256,uint256,address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function BufferRouter.addLiquidityToBufferHook(contract IERC4626,uint256,uint256,uint256,address) returns (uint256,uint256)"},{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$","typeString":"tuple(contract IERC4626,uint256,uint256,uint256,address)"}],"expression":{"id":14003,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4488:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4492:10:59","memberName":"encodeCall","nodeType":"MemberAccess","src":"4488:14:59","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4488:395:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14001,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"4453:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4460:6:59","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"4453:13:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":14015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4453:448:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":14017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4920:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14016,"name":"uint256","nodeType":"ElementaryTypeName","src":"4920:7:59","typeDescriptions":{}}},{"id":14019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4929:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14018,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:59","typeDescriptions":{}}}],"id":14020,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4919:18:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}],"expression":{"id":13999,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4425:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4429:6:59","memberName":"decode","nodeType":"MemberAccess","src":"4425:10:59","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":14021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4425:526:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":13998,"id":14022,"nodeType":"Return","src":"4406:545:59"}]},"documentation":{"id":13983,"nodeType":"StructuredDocumentation","src":"4113:29:59","text":"@inheritdoc IBufferRouter"},"functionSelector":"502383f4","id":14024,"implemented":true,"kind":"function","modifiers":[],"name":"addLiquidityToBuffer","nameLocation":"4156:20:59","nodeType":"FunctionDefinition","parameters":{"id":13993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13986,"mutability":"mutable","name":"wrappedToken","nameLocation":"4195:12:59","nodeType":"VariableDeclaration","scope":14024,"src":"4186:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":13985,"nodeType":"UserDefinedTypeName","pathNode":{"id":13984,"name":"IERC4626","nameLocations":["4186:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"4186:8:59"},"referencedDeclaration":38998,"src":"4186:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":13988,"mutability":"mutable","name":"maxAmountUnderlyingIn","nameLocation":"4225:21:59","nodeType":"VariableDeclaration","scope":14024,"src":"4217:29:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13987,"name":"uint256","nodeType":"ElementaryTypeName","src":"4217:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13990,"mutability":"mutable","name":"maxAmountWrappedIn","nameLocation":"4264:18:59","nodeType":"VariableDeclaration","scope":14024,"src":"4256:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13989,"name":"uint256","nodeType":"ElementaryTypeName","src":"4256:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13992,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"4300:18:59","nodeType":"VariableDeclaration","scope":14024,"src":"4292:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13991,"name":"uint256","nodeType":"ElementaryTypeName","src":"4292:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4176:148:59"},"returnParameters":{"id":13998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13995,"mutability":"mutable","name":"amountUnderlyingIn","nameLocation":"4351:18:59","nodeType":"VariableDeclaration","scope":14024,"src":"4343:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13994,"name":"uint256","nodeType":"ElementaryTypeName","src":"4343:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13997,"mutability":"mutable","name":"amountWrappedIn","nameLocation":"4379:15:59","nodeType":"VariableDeclaration","scope":14024,"src":"4371:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13996,"name":"uint256","nodeType":"ElementaryTypeName","src":"4371:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4342:53:59"},"scope":14288,"src":"4147:811:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14088,"nodeType":"Block","src":"6286:480:59","statements":[{"expression":{"id":14058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14047,"name":"amountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"6297:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14048,"name":"amountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14045,"src":"6317:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14049,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6296:37:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14052,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14028,"src":"6377:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":14053,"name":"maxAmountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14030,"src":"6403:21:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14054,"name":"maxAmountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14032,"src":"6438:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14055,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14034,"src":"6470:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14056,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14036,"src":"6502:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14050,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"6336:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6343:20:59","memberName":"addLiquidityToBuffer","nodeType":"MemberAccess","referencedDeclaration":3118,"src":"6336:27:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256,uint256)"}},"id":14057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6336:187:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6296:227:59","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14059,"nodeType":"ExpressionStatement","src":"6296:227:59"},{"assignments":[14061],"declarations":[{"constant":false,"id":14061,"mutability":"mutable","name":"asset","nameLocation":"6542:5:59","nodeType":"VariableDeclaration","scope":14088,"src":"6534:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14060,"name":"address","nodeType":"ElementaryTypeName","src":"6534:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14066,"initialValue":{"arguments":[{"id":14064,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14028,"src":"6579:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":14062,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"6550:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6557:21:59","memberName":"getERC4626BufferAsset","nodeType":"MemberAccess","referencedDeclaration":4085,"src":"6550:28:59","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC4626_$38998_$returns$_t_address_$","typeString":"function (contract IERC4626) view external returns (address)"}},"id":14065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:42:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6534:58:59"},{"expression":{"arguments":[{"id":14068,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14036,"src":"6615:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14070,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14061,"src":"6635:5:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14069,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"6628:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":14071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6628:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":14072,"name":"amountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"6643:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":14073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6663:5:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14067,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"6602:12:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":14074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6602:67:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14075,"nodeType":"ExpressionStatement","src":"6602:67:59"},{"expression":{"arguments":[{"id":14077,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14036,"src":"6692:11:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":14081,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14028,"src":"6720:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":14080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6712:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14079,"name":"address","nodeType":"ElementaryTypeName","src":"6712:7:59","typeDescriptions":{}}},"id":14082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6712:21:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14078,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"6705:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":14083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6705:29:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":14084,"name":"amountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14045,"src":"6736:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":14085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6753:5:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14076,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"6679:12:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":14086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6679:80:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14087,"nodeType":"ExpressionStatement","src":"6679:80:59"}]},"documentation":{"id":14025,"nodeType":"StructuredDocumentation","src":"4964:1012:59","text":" @notice Hook for adding liquidity to vault buffers. The Vault will enforce that the buffer is initialized.\n @dev Can only be called by the Vault.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param maxAmountUnderlyingIn Maximum amount of underlying tokens to add to the buffer. It is expressed in\n underlying token native decimals\n @param maxAmountWrappedIn Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped\n token native decimals\n @param exactSharesToIssue The value in underlying tokens that `sharesOwner` wants to add to the buffer,\n in underlying token decimals\n @param sharesOwner Address that will own the deposited liquidity. Only this address will be able to\n remove liquidity from the buffer\n @return amountUnderlyingIn Amount of underlying tokens deposited into the buffer\n @return amountWrappedIn Amount of wrapped tokens deposited into the buffer"},"functionSelector":"4fe56ed6","id":14089,"implemented":true,"kind":"function","modifiers":[{"id":14039,"kind":"modifierInvocation","modifierName":{"id":14038,"name":"nonReentrant","nameLocations":["6201:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"6201:12:59"},"nodeType":"ModifierInvocation","src":"6201:12:59"},{"id":14041,"kind":"modifierInvocation","modifierName":{"id":14040,"name":"onlyVault","nameLocations":["6214:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"6214:9:59"},"nodeType":"ModifierInvocation","src":"6214:9:59"}],"name":"addLiquidityToBufferHook","nameLocation":"5990:24:59","nodeType":"FunctionDefinition","parameters":{"id":14037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14028,"mutability":"mutable","name":"wrappedToken","nameLocation":"6033:12:59","nodeType":"VariableDeclaration","scope":14089,"src":"6024:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":14027,"nodeType":"UserDefinedTypeName","pathNode":{"id":14026,"name":"IERC4626","nameLocations":["6024:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"6024:8:59"},"referencedDeclaration":38998,"src":"6024:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14030,"mutability":"mutable","name":"maxAmountUnderlyingIn","nameLocation":"6063:21:59","nodeType":"VariableDeclaration","scope":14089,"src":"6055:29:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14029,"name":"uint256","nodeType":"ElementaryTypeName","src":"6055:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14032,"mutability":"mutable","name":"maxAmountWrappedIn","nameLocation":"6102:18:59","nodeType":"VariableDeclaration","scope":14089,"src":"6094:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14031,"name":"uint256","nodeType":"ElementaryTypeName","src":"6094:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14034,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"6138:18:59","nodeType":"VariableDeclaration","scope":14089,"src":"6130:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14033,"name":"uint256","nodeType":"ElementaryTypeName","src":"6130:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14036,"mutability":"mutable","name":"sharesOwner","nameLocation":"6174:11:59","nodeType":"VariableDeclaration","scope":14089,"src":"6166:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14035,"name":"address","nodeType":"ElementaryTypeName","src":"6166:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6014:177:59"},"returnParameters":{"id":14046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14043,"mutability":"mutable","name":"amountUnderlyingIn","nameLocation":"6241:18:59","nodeType":"VariableDeclaration","scope":14089,"src":"6233:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14042,"name":"uint256","nodeType":"ElementaryTypeName","src":"6233:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14045,"mutability":"mutable","name":"amountWrappedIn","nameLocation":"6269:15:59","nodeType":"VariableDeclaration","scope":14089,"src":"6261:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14044,"name":"uint256","nodeType":"ElementaryTypeName","src":"6261:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6232:53:59"},"scope":14288,"src":"5981:785:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1650],"body":{"id":14121,"nodeType":"Block","src":"6993:344:59","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":14108,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"7124:12:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BufferRouter_$14288_$","typeString":"type(contract BufferRouter)"}},"id":14109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7137:25:59","memberName":"queryInitializeBufferHook","nodeType":"MemberAccess","referencedDeclaration":14153,"src":"7124:38:59","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function BufferRouter.queryInitializeBufferHook(contract IERC4626,uint256,uint256) returns (uint256)"}},{"components":[{"id":14110,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14093,"src":"7189:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":14111,"name":"exactAmountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14095,"src":"7203:23:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14112,"name":"exactAmountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14097,"src":"7228:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7188:61:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$","typeString":"tuple(contract IERC4626,uint256,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function BufferRouter.queryInitializeBufferHook(contract IERC4626,uint256,uint256) returns (uint256)"},{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$","typeString":"tuple(contract IERC4626,uint256,uint256)"}],"expression":{"id":14106,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7084:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7088:10:59","memberName":"encodeCall","nodeType":"MemberAccess","src":"7084:14:59","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7084:187:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14104,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7050:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7057:5:59","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"7050:12:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":14115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7050:239:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":14117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7308:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14116,"name":"uint256","nodeType":"ElementaryTypeName","src":"7308:7:59","typeDescriptions":{}}}],"id":14118,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7307:9:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":14102,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7022:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7026:6:59","memberName":"decode","nodeType":"MemberAccess","src":"7022:10:59","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":14119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7022:308:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14101,"id":14120,"nodeType":"Return","src":"7003:327:59"}]},"documentation":{"id":14090,"nodeType":"StructuredDocumentation","src":"6772:29:59","text":"@inheritdoc IBufferRouter"},"functionSelector":"e0fefe35","id":14122,"implemented":true,"kind":"function","modifiers":[],"name":"queryInitializeBuffer","nameLocation":"6815:21:59","nodeType":"FunctionDefinition","parameters":{"id":14098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14093,"mutability":"mutable","name":"wrappedToken","nameLocation":"6855:12:59","nodeType":"VariableDeclaration","scope":14122,"src":"6846:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":14092,"nodeType":"UserDefinedTypeName","pathNode":{"id":14091,"name":"IERC4626","nameLocations":["6846:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"6846:8:59"},"referencedDeclaration":38998,"src":"6846:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14095,"mutability":"mutable","name":"exactAmountUnderlyingIn","nameLocation":"6885:23:59","nodeType":"VariableDeclaration","scope":14122,"src":"6877:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14094,"name":"uint256","nodeType":"ElementaryTypeName","src":"6877:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14097,"mutability":"mutable","name":"exactAmountWrappedIn","nameLocation":"6926:20:59","nodeType":"VariableDeclaration","scope":14122,"src":"6918:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14096,"name":"uint256","nodeType":"ElementaryTypeName","src":"6918:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6836:116:59"},"returnParameters":{"id":14101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14100,"mutability":"mutable","name":"issuedShares","nameLocation":"6979:12:59","nodeType":"VariableDeclaration","scope":14122,"src":"6971:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14099,"name":"uint256","nodeType":"ElementaryTypeName","src":"6971:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6970:22:59"},"scope":14288,"src":"6806:531:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14152,"nodeType":"Block","src":"7557:204:59","statements":[{"expression":{"id":14150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14138,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14136,"src":"7567:12:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14141,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14125,"src":"7619:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":14142,"name":"exactAmountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14127,"src":"7645:23:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14143,"name":"exactAmountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14129,"src":"7682:20:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":14144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7716:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"id":14147,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7739:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_BufferRouter_$14288","typeString":"contract BufferRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BufferRouter_$14288","typeString":"contract BufferRouter"}],"id":14146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7731:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14145,"name":"address","nodeType":"ElementaryTypeName","src":"7731:7:59","typeDescriptions":{}}},"id":14148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7731:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14139,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7582:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7589:16:59","memberName":"initializeBuffer","nodeType":"MemberAccess","referencedDeclaration":3099,"src":"7582:23:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256)"}},"id":14149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7582:172:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7567:187:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14151,"nodeType":"ExpressionStatement","src":"7567:187:59"}]},"functionSelector":"a3902604","id":14153,"implemented":true,"kind":"function","modifiers":[{"id":14132,"kind":"modifierInvocation","modifierName":{"id":14131,"name":"nonReentrant","nameLocations":["7503:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"7503:12:59"},"nodeType":"ModifierInvocation","src":"7503:12:59"},{"id":14134,"kind":"modifierInvocation","modifierName":{"id":14133,"name":"onlyVault","nameLocations":["7516:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"7516:9:59"},"nodeType":"ModifierInvocation","src":"7516:9:59"}],"name":"queryInitializeBufferHook","nameLocation":"7352:25:59","nodeType":"FunctionDefinition","parameters":{"id":14130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14125,"mutability":"mutable","name":"wrappedToken","nameLocation":"7396:12:59","nodeType":"VariableDeclaration","scope":14153,"src":"7387:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":14124,"nodeType":"UserDefinedTypeName","pathNode":{"id":14123,"name":"IERC4626","nameLocations":["7387:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"7387:8:59"},"referencedDeclaration":38998,"src":"7387:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14127,"mutability":"mutable","name":"exactAmountUnderlyingIn","nameLocation":"7426:23:59","nodeType":"VariableDeclaration","scope":14153,"src":"7418:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14126,"name":"uint256","nodeType":"ElementaryTypeName","src":"7418:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14129,"mutability":"mutable","name":"exactAmountWrappedIn","nameLocation":"7467:20:59","nodeType":"VariableDeclaration","scope":14153,"src":"7459:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14128,"name":"uint256","nodeType":"ElementaryTypeName","src":"7459:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7377:116:59"},"returnParameters":{"id":14137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14136,"mutability":"mutable","name":"issuedShares","nameLocation":"7543:12:59","nodeType":"VariableDeclaration","scope":14153,"src":"7535:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14135,"name":"uint256","nodeType":"ElementaryTypeName","src":"7535:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7534:22:59"},"scope":14288,"src":"7343:418:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1663],"body":{"id":14186,"nodeType":"Block","src":"7980:260:59","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":14172,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"8086:12:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BufferRouter_$14288_$","typeString":"type(contract BufferRouter)"}},"id":14173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8099:29:59","memberName":"queryAddLiquidityToBufferHook","nodeType":"MemberAccess","referencedDeclaration":14228,"src":"8086:42:59","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function BufferRouter.queryAddLiquidityToBufferHook(contract IERC4626,uint256) returns (uint256,uint256)"}},{"components":[{"id":14174,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14157,"src":"8131:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":14175,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14159,"src":"8145:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14176,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8130:34:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"tuple(contract IERC4626,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function BufferRouter.queryAddLiquidityToBufferHook(contract IERC4626,uint256) returns (uint256,uint256)"},{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"tuple(contract IERC4626,uint256)"}],"expression":{"id":14170,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8071:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8075:10:59","memberName":"encodeCall","nodeType":"MemberAccess","src":"8071:14:59","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8071:94:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14168,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8037:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8044:5:59","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"8037:12:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":14178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8037:146:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":14180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8202:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14179,"name":"uint256","nodeType":"ElementaryTypeName","src":"8202:7:59","typeDescriptions":{}}},{"id":14182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8211:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14181,"name":"uint256","nodeType":"ElementaryTypeName","src":"8211:7:59","typeDescriptions":{}}}],"id":14183,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"8201:18:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}],"expression":{"id":14166,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8009:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8013:6:59","memberName":"decode","nodeType":"MemberAccess","src":"8009:10:59","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":14184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8009:224:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14165,"id":14185,"nodeType":"Return","src":"7990:243:59"}]},"documentation":{"id":14154,"nodeType":"StructuredDocumentation","src":"7767:29:59","text":"@inheritdoc IBufferRouter"},"functionSelector":"662727cc","id":14187,"implemented":true,"kind":"function","modifiers":[],"name":"queryAddLiquidityToBuffer","nameLocation":"7810:25:59","nodeType":"FunctionDefinition","parameters":{"id":14160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14157,"mutability":"mutable","name":"wrappedToken","nameLocation":"7854:12:59","nodeType":"VariableDeclaration","scope":14187,"src":"7845:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":14156,"nodeType":"UserDefinedTypeName","pathNode":{"id":14155,"name":"IERC4626","nameLocations":["7845:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"7845:8:59"},"referencedDeclaration":38998,"src":"7845:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14159,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"7884:18:59","nodeType":"VariableDeclaration","scope":14187,"src":"7876:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14158,"name":"uint256","nodeType":"ElementaryTypeName","src":"7876:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7835:73:59"},"returnParameters":{"id":14165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14162,"mutability":"mutable","name":"amountUnderlyingIn","nameLocation":"7935:18:59","nodeType":"VariableDeclaration","scope":14187,"src":"7927:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14161,"name":"uint256","nodeType":"ElementaryTypeName","src":"7927:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14164,"mutability":"mutable","name":"amountWrappedIn","nameLocation":"7963:15:59","nodeType":"VariableDeclaration","scope":14187,"src":"7955:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14163,"name":"uint256","nodeType":"ElementaryTypeName","src":"7955:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7926:53:59"},"scope":14288,"src":"7801:439:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14227,"nodeType":"Block","src":"8452:241:59","statements":[{"expression":{"id":14225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":14203,"name":"amountUnderlyingIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14199,"src":"8463:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14204,"name":"amountWrappedIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14201,"src":"8483:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14205,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8462:37:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14208,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14190,"src":"8543:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"expression":{"arguments":[{"id":14211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8574:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":14210,"name":"uint128","nodeType":"ElementaryTypeName","src":"8574:7:59","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":14209,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8569:4:59","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8569:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":14213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8583:3:59","memberName":"max","nodeType":"MemberAccess","src":"8569:17:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"arguments":[{"id":14216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8605:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":14215,"name":"uint128","nodeType":"ElementaryTypeName","src":"8605:7:59","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":14214,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8600:4:59","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8600:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":14218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8614:3:59","memberName":"max","nodeType":"MemberAccess","src":"8600:17:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":14219,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14192,"src":"8631:18:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":14222,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8671:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_BufferRouter_$14288","typeString":"contract BufferRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BufferRouter_$14288","typeString":"contract BufferRouter"}],"id":14221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8663:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14220,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:59","typeDescriptions":{}}},"id":14223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8663:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14206,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8502:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8509:20:59","memberName":"addLiquidityToBuffer","nodeType":"MemberAccess","referencedDeclaration":3118,"src":"8502:27:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256,uint256)"}},"id":14224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8502:184:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"8462:224:59","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14226,"nodeType":"ExpressionStatement","src":"8462:224:59"}]},"functionSelector":"400f230d","id":14228,"implemented":true,"kind":"function","modifiers":[{"id":14195,"kind":"modifierInvocation","modifierName":{"id":14194,"name":"nonReentrant","nameLocations":["8367:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"8367:12:59"},"nodeType":"ModifierInvocation","src":"8367:12:59"},{"id":14197,"kind":"modifierInvocation","modifierName":{"id":14196,"name":"onlyVault","nameLocations":["8380:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"8380:9:59"},"nodeType":"ModifierInvocation","src":"8380:9:59"}],"name":"queryAddLiquidityToBufferHook","nameLocation":"8255:29:59","nodeType":"FunctionDefinition","parameters":{"id":14193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14190,"mutability":"mutable","name":"wrappedToken","nameLocation":"8303:12:59","nodeType":"VariableDeclaration","scope":14228,"src":"8294:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":14189,"nodeType":"UserDefinedTypeName","pathNode":{"id":14188,"name":"IERC4626","nameLocations":["8294:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8294:8:59"},"referencedDeclaration":38998,"src":"8294:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14192,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"8333:18:59","nodeType":"VariableDeclaration","scope":14228,"src":"8325:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14191,"name":"uint256","nodeType":"ElementaryTypeName","src":"8325:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8284:73:59"},"returnParameters":{"id":14202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14199,"mutability":"mutable","name":"amountUnderlyingIn","nameLocation":"8407:18:59","nodeType":"VariableDeclaration","scope":14228,"src":"8399:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14198,"name":"uint256","nodeType":"ElementaryTypeName","src":"8399:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14201,"mutability":"mutable","name":"amountWrappedIn","nameLocation":"8435:15:59","nodeType":"VariableDeclaration","scope":14228,"src":"8427:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14200,"name":"uint256","nodeType":"ElementaryTypeName","src":"8427:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8398:53:59"},"scope":14288,"src":"8246:447:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1676],"body":{"id":14261,"nodeType":"Block","src":"8936:266:59","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":14247,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"9042:12:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BufferRouter_$14288_$","typeString":"type(contract BufferRouter)"}},"id":14248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9055:34:59","memberName":"queryRemoveLiquidityFromBufferHook","nodeType":"MemberAccess","referencedDeclaration":14287,"src":"9042:47:59","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function BufferRouter.queryRemoveLiquidityFromBufferHook(contract IERC4626,uint256) returns (uint256,uint256)"}},{"components":[{"id":14249,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14232,"src":"9092:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":14250,"name":"exactSharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14234,"src":"9106:19:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14251,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9091:35:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"tuple(contract IERC4626,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function BufferRouter.queryRemoveLiquidityFromBufferHook(contract IERC4626,uint256) returns (uint256,uint256)"},{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"tuple(contract IERC4626,uint256)"}],"expression":{"id":14245,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9027:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9031:10:59","memberName":"encodeCall","nodeType":"MemberAccess","src":"9027:14:59","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9027:100:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14243,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8993:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9000:5:59","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"8993:12:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":14253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8993:152:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":14255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9164:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14254,"name":"uint256","nodeType":"ElementaryTypeName","src":"9164:7:59","typeDescriptions":{}}},{"id":14257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9173:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14256,"name":"uint256","nodeType":"ElementaryTypeName","src":"9173:7:59","typeDescriptions":{}}}],"id":14258,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9163:18:59","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}],"expression":{"id":14241,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8965:3:59","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8969:6:59","memberName":"decode","nodeType":"MemberAccess","src":"8965:10:59","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":14259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8965:230:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14240,"id":14260,"nodeType":"Return","src":"8946:249:59"}]},"documentation":{"id":14229,"nodeType":"StructuredDocumentation","src":"8699:29:59","text":"@inheritdoc IBufferRouter"},"functionSelector":"13f7bb4d","id":14262,"implemented":true,"kind":"function","modifiers":[],"name":"queryRemoveLiquidityFromBuffer","nameLocation":"8742:30:59","nodeType":"FunctionDefinition","parameters":{"id":14235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14232,"mutability":"mutable","name":"wrappedToken","nameLocation":"8791:12:59","nodeType":"VariableDeclaration","scope":14262,"src":"8782:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":14231,"nodeType":"UserDefinedTypeName","pathNode":{"id":14230,"name":"IERC4626","nameLocations":["8782:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8782:8:59"},"referencedDeclaration":38998,"src":"8782:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14234,"mutability":"mutable","name":"exactSharesToRemove","nameLocation":"8821:19:59","nodeType":"VariableDeclaration","scope":14262,"src":"8813:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14233,"name":"uint256","nodeType":"ElementaryTypeName","src":"8813:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8772:74:59"},"returnParameters":{"id":14240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14237,"mutability":"mutable","name":"removedUnderlyingBalanceOut","nameLocation":"8873:27:59","nodeType":"VariableDeclaration","scope":14262,"src":"8865:35:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14236,"name":"uint256","nodeType":"ElementaryTypeName","src":"8865:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14239,"mutability":"mutable","name":"removedWrappedBalanceOut","nameLocation":"8910:24:59","nodeType":"VariableDeclaration","scope":14262,"src":"8902:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14238,"name":"uint256","nodeType":"ElementaryTypeName","src":"8902:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8864:71:59"},"scope":14288,"src":"8733:469:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14286,"nodeType":"Block","src":"9438:97:59","statements":[{"expression":{"arguments":[{"id":14280,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14265,"src":"9488:12:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":14281,"name":"exactSharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14267,"src":"9502:19:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":14282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9523:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":14283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":14278,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"9455:6:59","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9462:25:59","memberName":"removeLiquidityFromBuffer","nodeType":"MemberAccess","referencedDeclaration":3135,"src":"9455:32:59","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256) external returns (uint256,uint256)"}},"id":14284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9455:73:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14277,"id":14285,"nodeType":"Return","src":"9448:80:59"}]},"functionSelector":"d96af070","id":14287,"implemented":true,"kind":"function","modifiers":[{"id":14270,"kind":"modifierInvocation","modifierName":{"id":14269,"name":"nonReentrant","nameLocations":["9335:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"9335:12:59"},"nodeType":"ModifierInvocation","src":"9335:12:59"},{"id":14272,"kind":"modifierInvocation","modifierName":{"id":14271,"name":"onlyVault","nameLocations":["9348:9:59"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"9348:9:59"},"nodeType":"ModifierInvocation","src":"9348:9:59"}],"name":"queryRemoveLiquidityFromBufferHook","nameLocation":"9217:34:59","nodeType":"FunctionDefinition","parameters":{"id":14268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14265,"mutability":"mutable","name":"wrappedToken","nameLocation":"9270:12:59","nodeType":"VariableDeclaration","scope":14287,"src":"9261:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":14264,"nodeType":"UserDefinedTypeName","pathNode":{"id":14263,"name":"IERC4626","nameLocations":["9261:8:59"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"9261:8:59"},"referencedDeclaration":38998,"src":"9261:8:59","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":14267,"mutability":"mutable","name":"exactSharesToRemove","nameLocation":"9300:19:59","nodeType":"VariableDeclaration","scope":14287,"src":"9292:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14266,"name":"uint256","nodeType":"ElementaryTypeName","src":"9292:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9251:74:59"},"returnParameters":{"id":14277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14274,"mutability":"mutable","name":"removedUnderlyingBalanceOut","nameLocation":"9375:27:59","nodeType":"VariableDeclaration","scope":14287,"src":"9367:35:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14273,"name":"uint256","nodeType":"ElementaryTypeName","src":"9367:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14276,"mutability":"mutable","name":"removedWrappedBalanceOut","nameLocation":"9412:24:59","nodeType":"VariableDeclaration","scope":14287,"src":"9404:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14275,"name":"uint256","nodeType":"ElementaryTypeName","src":"9404:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9366:71:59"},"scope":14288,"src":"9208:327:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14289,"src":"1151:8386:59","usedErrors":[3422,5586,5981,9512,18076,18079,18082,39353,39634,39639,39642,42381],"usedEvents":[]}],"src":"46:9492:59"},"id":59},"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol","exportedSymbols":{"FEE_SCALING_FACTOR":[4650],"FixedPoint":[7834],"IERC20":[39274],"IProtocolFeeController":[2230],"IVault":[2893],"IVaultErrors":[3550],"MAX_FEE_PERCENTAGE":[4653],"ProtocolFeeController":[15747],"ReentrancyGuardTransient":[9568],"SafeCast":[44126],"SafeERC20":[39626],"SingletonAuthentication":[18926],"VaultGuard":[27688]},"id":15748,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14290,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:60"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":14292,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":39627,"src":"72:84:60","symbolAliases":[{"foreign":{"id":14291,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39626,"src":"81:9:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":14294,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":44127,"src":"157:75:60","symbolAliases":[{"foreign":{"id":14293,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"166:8:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":14296,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":39275,"src":"233:72:60","symbolAliases":[{"foreign":{"id":14295,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"242:6:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":14299,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":4654,"src":"307:117:60","symbolAliases":[{"foreign":{"id":14297,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"316:18:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":14298,"name":"MAX_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"336:18:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","id":14301,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":2231,"src":"425:113:60","symbolAliases":[{"foreign":{"id":14300,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"434:22:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":14303,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":3551,"src":"539:93:60","symbolAliases":[{"foreign":{"id":14302,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"548:12:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":14305,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":2894,"src":"633:81:60","symbolAliases":[{"foreign":{"id":14304,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"642:6:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol","id":14307,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":9569,"src":"716:132:60","symbolAliases":[{"foreign":{"id":14306,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"729:24:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":14309,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":7835,"src":"849:92:60","symbolAliases":[{"foreign":{"id":14308,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"858:10:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol","file":"./SingletonAuthentication.sol","id":14311,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":18927,"src":"943:72:60","symbolAliases":[{"foreign":{"id":14310,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18926,"src":"952:23:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultGuard.sol","file":"./VaultGuard.sol","id":14313,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15748,"sourceUnit":27689,"src":"1016:46:60","symbolAliases":[{"foreign":{"id":14312,"name":"VaultGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27688,"src":"1025:10:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14315,"name":"IProtocolFeeController","nameLocations":["3128:22:60"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"3128:22:60"},"id":14316,"nodeType":"InheritanceSpecifier","src":"3128:22:60"},{"baseName":{"id":14317,"name":"SingletonAuthentication","nameLocations":["3156:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"3156:23:60"},"id":14318,"nodeType":"InheritanceSpecifier","src":"3156:23:60"},{"baseName":{"id":14319,"name":"ReentrancyGuardTransient","nameLocations":["3185:24:60"],"nodeType":"IdentifierPath","referencedDeclaration":9568,"src":"3185:24:60"},"id":14320,"nodeType":"InheritanceSpecifier","src":"3185:24:60"},{"baseName":{"id":14321,"name":"VaultGuard","nameLocations":["3215:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"3215:10:60"},"id":14322,"nodeType":"InheritanceSpecifier","src":"3215:10:60"}],"canonicalName":"ProtocolFeeController","contractDependencies":[],"contractKind":"contract","documentation":{"id":14314,"nodeType":"StructuredDocumentation","src":"1064:2025:60","text":" @notice Helper contract to manage protocol and creator fees outside the Vault.\n @dev This contract stores global default protocol swap and yield fees, and also tracks the values of those fees\n for each pool (the `PoolFeeConfig` described below). Protocol fees can always be overwritten by governance, but\n pool creator fees are controlled by the registered poolCreator (see `PoolRoleAccounts`).\n The Vault stores a single aggregate percentage for swap and yield fees; only this `ProtocolFeeController` knows\n the component fee percentages, and how to compute the aggregate from the components. This is done for performance\n reasons, to minimize gas on the critical path, as this way the Vault simply applies a single \"cut\", and stores the\n fee amounts separately from the pool balances.\n The pool creator fees are \"net\" protocol fees, meaning the protocol fee is taken first, and the pool creator fee\n percentage is applied to the remainder. Essentially, the protocol is paid first, then the remainder is divided\n between the pool creator and the LPs.\n There is a permissionless function (`collectAggregateFees`) that transfers these tokens from the Vault to this\n contract, and distributes them between the protocol and pool creator, after which they can be withdrawn at any\n time by governance and the pool creator, respectively.\n Protocol fees can be zero in some cases (e.g., the token is registered as exempt), and pool creator fees are zero\n if there is no creator role address defined. Protocol fees are capped at a maximum percentage (50%); pool creator\n fees are computed \"net\" protocol fees, so they can be any value from 0 to 100%. Any combination is possible.\n A protocol-fee-exempt pool with a 100% pool creator fee would send all fees to the creator. If there is no pool\n creator, a pool with a 50% protocol fee would divide the fees evenly between the protocol and LPs.\n This contract is deployed with the Vault, but can be changed by governance."},"fullyImplemented":true,"id":15747,"linearizedBaseContracts":[15747,27688,9568,18926,5327,130,2230],"name":"ProtocolFeeController","nameLocation":"3099:21:60","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14325,"libraryName":{"id":14323,"name":"FixedPoint","nameLocations":["3238:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"3238:10:60"},"nodeType":"UsingForDirective","src":"3232:29:60","typeName":{"id":14324,"name":"uint256","nodeType":"ElementaryTypeName","src":"3253:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":14329,"libraryName":{"id":14326,"name":"SafeERC20","nameLocations":["3272:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":39626,"src":"3272:9:60"},"nodeType":"UsingForDirective","src":"3266:27:60","typeName":{"id":14328,"nodeType":"UserDefinedTypeName","pathNode":{"id":14327,"name":"IERC20","nameLocations":["3286:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3286:6:60"},"referencedDeclaration":39274,"src":"3286:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}},{"global":false,"id":14331,"libraryName":{"id":14330,"name":"SafeCast","nameLocations":["3304:8:60"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"3304:8:60"},"nodeType":"UsingForDirective","src":"3298:21:60"},{"canonicalName":"ProtocolFeeController.ProtocolFeeType","id":14334,"members":[{"id":14332,"name":"SWAP","nameLocation":"3356:4:60","nodeType":"EnumValue","src":"3356:4:60"},{"id":14333,"name":"YIELD","nameLocation":"3370:5:60","nodeType":"EnumValue","src":"3370:5:60"}],"name":"ProtocolFeeType","nameLocation":"3330:15:60","nodeType":"EnumDefinition","src":"3325:56:60"},{"canonicalName":"ProtocolFeeController.PoolFeeConfig","documentation":{"id":14335,"nodeType":"StructuredDocumentation","src":"3387:1063:60","text":" @notice Fee configuration stored in the swap and yield fee mappings.\n @dev Instead of storing only the fee in the mapping, also store a flag to indicate whether the fee has been\n set by governance through a permissioned call. (The fee is stored in 64-bits, so that the struct fits\n within a single slot.)\n We know the percentage is an 18-decimal FP value, which only takes 60 bits, so it's guaranteed to fit,\n and we can do simple casts to truncate the high bits without needed SafeCast.\n We want to enable permissionless updates for pools, so that it is less onerous to update potentially\n hundreds of pools if the global protocol fees change. However, we don't want to overwrite pools that\n have had their fee percentages manually set by the DAO (i.e., after off-chain negotiation and agreement).\n @param feePercentage The raw swap or yield fee percentage\n @param isOverride When set, this fee is controlled by governance, and cannot be changed permissionlessly"},"id":14340,"members":[{"constant":false,"id":14337,"mutability":"mutable","name":"feePercentage","nameLocation":"4493:13:60","nodeType":"VariableDeclaration","scope":14340,"src":"4486:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":14336,"name":"uint64","nodeType":"ElementaryTypeName","src":"4486:6:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":14339,"mutability":"mutable","name":"isOverride","nameLocation":"4521:10:60","nodeType":"VariableDeclaration","scope":14340,"src":"4516:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14338,"name":"bool","nodeType":"ElementaryTypeName","src":"4516:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PoolFeeConfig","nameLocation":"4462:13:60","nodeType":"StructDefinition","scope":15747,"src":"4455:83:60","visibility":"public"},{"constant":true,"functionSelector":"2772d156","id":14343,"mutability":"constant","name":"MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nameLocation":"4655:32:60","nodeType":"VariableDeclaration","scope":15747,"src":"4631:64:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14341,"name":"uint256","nodeType":"ElementaryTypeName","src":"4631:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530653136","id":14342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4690:5:60","typeDescriptions":{"typeIdentifier":"t_rational_500000000000000000_by_1","typeString":"int_const 500000000000000000"},"value":"50e16"},"visibility":"public"},{"constant":true,"functionSelector":"5e32e4e8","id":14346,"mutability":"constant","name":"MAX_PROTOCOL_YIELD_FEE_PERCENTAGE","nameLocation":"4779:33:60","nodeType":"VariableDeclaration","scope":15747,"src":"4755:65:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14344,"name":"uint256","nodeType":"ElementaryTypeName","src":"4755:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530653136","id":14345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4815:5:60","typeDescriptions":{"typeIdentifier":"t_rational_500000000000000000_by_1","typeString":"int_const 500000000000000000"},"value":"50e16"},"visibility":"public"},{"constant":true,"functionSelector":"2e1d388d","id":14349,"mutability":"constant","name":"MAX_CREATOR_FEE_PERCENTAGE","nameLocation":"4916:26:60","nodeType":"VariableDeclaration","scope":15747,"src":"4892:62:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14347,"name":"uint256","nodeType":"ElementaryTypeName","src":"4892:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39392e393939653136","id":14348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4945:9:60","typeDescriptions":{"typeIdentifier":"t_rational_999990000000000000_by_1","typeString":"int_const 999990000000000000"},"value":"99.999e16"},"visibility":"public"},{"constant":false,"id":14351,"mutability":"mutable","name":"_globalProtocolSwapFeePercentage","nameLocation":"5021:32:60","nodeType":"VariableDeclaration","scope":15747,"src":"5005:48:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14350,"name":"uint256","nodeType":"ElementaryTypeName","src":"5005:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14353,"mutability":"mutable","name":"_globalProtocolYieldFeePercentage","nameLocation":"5110:33:60","nodeType":"VariableDeclaration","scope":15747,"src":"5094:49:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14352,"name":"uint256","nodeType":"ElementaryTypeName","src":"5094:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14358,"mutability":"mutable","name":"_poolProtocolSwapFeePercentages","nameLocation":"5326:31:60","nodeType":"VariableDeclaration","scope":15747,"src":"5264:93:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig)"},"typeName":{"id":14357,"keyName":"pool","keyNameLocation":"5280:4:60","keyType":{"id":14354,"name":"address","nodeType":"ElementaryTypeName","src":"5272:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5264:52:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig)"},"valueName":"swapFeeConfig","valueNameLocation":"5302:13:60","valueType":{"id":14356,"nodeType":"UserDefinedTypeName","pathNode":{"id":14355,"name":"PoolFeeConfig","nameLocations":["5288:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":14340,"src":"5288:13:60"},"referencedDeclaration":14340,"src":"5288:13:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"}}},"visibility":"internal"},{"constant":false,"id":14363,"mutability":"mutable","name":"_poolProtocolYieldFeePercentages","nameLocation":"5542:32:60","nodeType":"VariableDeclaration","scope":15747,"src":"5479:95:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig)"},"typeName":{"id":14362,"keyName":"pool","keyNameLocation":"5495:4:60","keyType":{"id":14359,"name":"address","nodeType":"ElementaryTypeName","src":"5487:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5479:53:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig)"},"valueName":"yieldFeeConfig","valueNameLocation":"5517:14:60","valueType":{"id":14361,"nodeType":"UserDefinedTypeName","pathNode":{"id":14360,"name":"PoolFeeConfig","nameLocations":["5503:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":14340,"src":"5503:13:60"},"referencedDeclaration":14340,"src":"5503:13:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"}}},"visibility":"internal"},{"constant":false,"id":14367,"mutability":"mutable","name":"_poolCreators","nameLocation":"5746:13:60","nodeType":"VariableDeclaration","scope":15747,"src":"5692:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":14366,"keyName":"pool","keyNameLocation":"5708:4:60","keyType":{"id":14364,"name":"address","nodeType":"ElementaryTypeName","src":"5700:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5692:44:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"poolCreator","valueNameLocation":"5724:11:60","valueType":{"id":14365,"name":"address","nodeType":"ElementaryTypeName","src":"5716:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":14371,"mutability":"mutable","name":"_poolCreatorSwapFeePercentages","nameLocation":"5883:30:60","nodeType":"VariableDeclaration","scope":15747,"src":"5822:91:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":14370,"keyName":"pool","keyNameLocation":"5838:4:60","keyType":{"id":14368,"name":"address","nodeType":"ElementaryTypeName","src":"5830:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5822:51:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"poolCreatorSwapFee","valueNameLocation":"5854:18:60","valueType":{"id":14369,"name":"uint256","nodeType":"ElementaryTypeName","src":"5846:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":14375,"mutability":"mutable","name":"_poolCreatorYieldFeePercentages","nameLocation":"6039:31:60","nodeType":"VariableDeclaration","scope":15747,"src":"5977:93:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":14374,"keyName":"pool","keyNameLocation":"5993:4:60","keyType":{"id":14372,"name":"address","nodeType":"ElementaryTypeName","src":"5985:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5977:52:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"poolCreatorYieldFee","valueNameLocation":"6009:19:60","valueType":{"id":14373,"name":"uint256","nodeType":"ElementaryTypeName","src":"6001:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":14382,"mutability":"mutable","name":"_protocolFeeAmounts","nameLocation":"6256:19:60","nodeType":"VariableDeclaration","scope":15747,"src":"6175:100:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"typeName":{"id":14381,"keyName":"pool","keyNameLocation":"6191:4:60","keyType":{"id":14376,"name":"address","nodeType":"ElementaryTypeName","src":"6183:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"6175:71:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14380,"keyName":"poolToken","keyNameLocation":"6214:9:60","keyType":{"id":14378,"nodeType":"UserDefinedTypeName","pathNode":{"id":14377,"name":"IERC20","nameLocations":["6207:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6207:6:60"},"referencedDeclaration":39274,"src":"6207:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"6199:46:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"},"valueName":"feeAmount","valueNameLocation":"6235:9:60","valueType":{"id":14379,"name":"uint256","nodeType":"ElementaryTypeName","src":"6227:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":14389,"mutability":"mutable","name":"_poolCreatorFeeAmounts","nameLocation":"6471:22:60","nodeType":"VariableDeclaration","scope":15747,"src":"6390:103:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"typeName":{"id":14388,"keyName":"pool","keyNameLocation":"6406:4:60","keyType":{"id":14383,"name":"address","nodeType":"ElementaryTypeName","src":"6398:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"6390:71:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14387,"keyName":"poolToken","keyNameLocation":"6429:9:60","keyType":{"id":14385,"nodeType":"UserDefinedTypeName","pathNode":{"id":14384,"name":"IERC20","nameLocations":["6422:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6422:6:60"},"referencedDeclaration":39274,"src":"6422:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"6414:46:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"},"valueName":"feeAmount","valueNameLocation":"6450:9:60","valueType":{"id":14386,"name":"uint256","nodeType":"ElementaryTypeName","src":"6442:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"body":{"id":14398,"nodeType":"Block","src":"6590:60:60","statements":[{"expression":{"arguments":[{"id":14394,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14391,"src":"6627:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14393,"name":"_ensureCallerIsPoolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15144,"src":"6600:26:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":14395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6600:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14396,"nodeType":"ExpressionStatement","src":"6600:32:60"},{"id":14397,"nodeType":"PlaceholderStatement","src":"6642:1:60"}]},"id":14399,"name":"onlyPoolCreator","nameLocation":"6560:15:60","nodeType":"ModifierDefinition","parameters":{"id":14392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14391,"mutability":"mutable","name":"pool","nameLocation":"6584:4:60","nodeType":"VariableDeclaration","scope":14399,"src":"6576:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14390,"name":"address","nodeType":"ElementaryTypeName","src":"6576:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6575:14:60"},"src":"6551:99:60","virtual":false,"visibility":"internal"},{"body":{"id":14416,"nodeType":"Block","src":"6773:207:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14403,"name":"newSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"6787:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14404,"name":"MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14343,"src":"6810:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6787:55:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14410,"nodeType":"IfStatement","src":"6783:127:60","trueBody":{"id":14409,"nodeType":"Block","src":"6844:66:60","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14406,"name":"ProtocolSwapFeePercentageTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"6865:32:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":14407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6865:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14408,"nodeType":"RevertStatement","src":"6858:41:60"}]}},{"expression":{"arguments":[{"id":14412,"name":"newSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"6941:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14411,"name":"_ensureValidPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15746,"src":"6919:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":14413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:43:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14414,"nodeType":"ExpressionStatement","src":"6919:43:60"},{"id":14415,"nodeType":"PlaceholderStatement","src":"6972:1:60"}]},"id":14417,"name":"withValidSwapFee","nameLocation":"6726:16:60","nodeType":"ModifierDefinition","parameters":{"id":14402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14401,"mutability":"mutable","name":"newSwapFeePercentage","nameLocation":"6751:20:60","nodeType":"VariableDeclaration","scope":14417,"src":"6743:28:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14400,"name":"uint256","nodeType":"ElementaryTypeName","src":"6743:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6742:30:60"},"src":"6717:263:60","virtual":false,"visibility":"internal"},{"body":{"id":14434,"nodeType":"Block","src":"7106:211:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14421,"name":"newYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14419,"src":"7120:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14422,"name":"MAX_PROTOCOL_YIELD_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14346,"src":"7144:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7120:57:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14428,"nodeType":"IfStatement","src":"7116:130:60","trueBody":{"id":14427,"nodeType":"Block","src":"7179:67:60","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14424,"name":"ProtocolYieldFeePercentageTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"7200:33:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":14425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7200:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14426,"nodeType":"RevertStatement","src":"7193:42:60"}]}},{"expression":{"arguments":[{"id":14430,"name":"newYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14419,"src":"7277:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14429,"name":"_ensureValidPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15746,"src":"7255:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":14431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7255:44:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14432,"nodeType":"ExpressionStatement","src":"7255:44:60"},{"id":14433,"nodeType":"PlaceholderStatement","src":"7309:1:60"}]},"id":14435,"name":"withValidYieldFee","nameLocation":"7057:17:60","nodeType":"ModifierDefinition","parameters":{"id":14420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14419,"mutability":"mutable","name":"newYieldFeePercentage","nameLocation":"7083:21:60","nodeType":"VariableDeclaration","scope":14435,"src":"7075:29:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14418,"name":"uint256","nodeType":"ElementaryTypeName","src":"7075:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7074:31:60"},"src":"7048:269:60","virtual":false,"visibility":"internal"},{"body":{"id":14448,"nodeType":"Block","src":"7393:154:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14439,"name":"newPoolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14437,"src":"7407:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":14440,"name":"MAX_CREATOR_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14349,"src":"7437:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7407:56:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14446,"nodeType":"IfStatement","src":"7403:127:60","trueBody":{"id":14445,"nodeType":"Block","src":"7465:65:60","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14442,"name":"PoolCreatorFeePercentageTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2053,"src":"7486:31:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":14443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7486:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14444,"nodeType":"RevertStatement","src":"7479:40:60"}]}},{"id":14447,"nodeType":"PlaceholderStatement","src":"7539:1:60"}]},"id":14449,"name":"withValidPoolCreatorFee","nameLocation":"7332:23:60","nodeType":"ModifierDefinition","parameters":{"id":14438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14437,"mutability":"mutable","name":"newPoolCreatorFeePercentage","nameLocation":"7364:27:60","nodeType":"VariableDeclaration","scope":14449,"src":"7356:35:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14436,"name":"uint256","nodeType":"ElementaryTypeName","src":"7356:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7355:37:60"},"src":"7323:224:60","virtual":false,"visibility":"internal"},{"body":{"id":14458,"nodeType":"Block","src":"7684:54:60","statements":[{"expression":{"arguments":[{"id":14454,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14451,"src":"7715:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14453,"name":"collectAggregateFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14500,"src":"7694:20:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7694:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14456,"nodeType":"ExpressionStatement","src":"7694:26:60"},{"id":14457,"nodeType":"PlaceholderStatement","src":"7730:1:60"}]},"id":14459,"name":"withLatestFees","nameLocation":"7655:14:60","nodeType":"ModifierDefinition","parameters":{"id":14452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14451,"mutability":"mutable","name":"pool","nameLocation":"7678:4:60","nodeType":"VariableDeclaration","scope":14459,"src":"7670:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14450,"name":"address","nodeType":"ElementaryTypeName","src":"7670:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7669:14:60"},"src":"7646:92:60","virtual":false,"visibility":"internal"},{"body":{"id":14471,"nodeType":"Block","src":"7822:64:60","statements":[]},"id":14472,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14465,"name":"vault_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14462,"src":"7795:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":14466,"kind":"baseConstructorSpecifier","modifierName":{"id":14464,"name":"SingletonAuthentication","nameLocations":["7771:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"7771:23:60"},"nodeType":"ModifierInvocation","src":"7771:31:60"},{"arguments":[{"id":14468,"name":"vault_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14462,"src":"7814:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":14469,"kind":"baseConstructorSpecifier","modifierName":{"id":14467,"name":"VaultGuard","nameLocations":["7803:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"7803:10:60"},"nodeType":"ModifierInvocation","src":"7803:18:60"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14462,"mutability":"mutable","name":"vault_","nameLocation":"7763:6:60","nodeType":"VariableDeclaration","scope":14472,"src":"7756:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":14461,"nodeType":"UserDefinedTypeName","pathNode":{"id":14460,"name":"IVault","nameLocations":["7756:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"7756:6:60"},"referencedDeclaration":2893,"src":"7756:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"7755:15:60"},"returnParameters":{"id":14470,"nodeType":"ParameterList","parameters":[],"src":"7822:0:60"},"scope":15747,"src":"7744:142:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2060],"body":{"id":14481,"nodeType":"Block","src":"7983:30:60","statements":[{"expression":{"id":14479,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8000:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"functionReturnParameters":14478,"id":14480,"nodeType":"Return","src":"7993:13:60"}]},"documentation":{"id":14473,"nodeType":"StructuredDocumentation","src":"7892:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"fbfa77cf","id":14482,"implemented":true,"kind":"function","modifiers":[],"name":"vault","nameLocation":"7944:5:60","nodeType":"FunctionDefinition","parameters":{"id":14474,"nodeType":"ParameterList","parameters":[],"src":"7949:2:60"},"returnParameters":{"id":14478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14482,"src":"7975:6:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":14476,"nodeType":"UserDefinedTypeName","pathNode":{"id":14475,"name":"IVault","nameLocations":["7975:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"7975:6:60"},"referencedDeclaration":2893,"src":"7975:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"7974:8:60"},"scope":15747,"src":"7935:78:60","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2066],"body":{"id":14499,"nodeType":"Block","src":"8113:100:60","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":14493,"name":"ProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15747,"src":"8152:21:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeController_$15747_$","typeString":"type(contract ProtocolFeeController)"}},"id":14494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8174:24:60","memberName":"collectAggregateFeesHook","nodeType":"MemberAccess","referencedDeclaration":14528,"src":"8152:46:60","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$returns$__$","typeString":"function ProtocolFeeController.collectAggregateFeesHook(address)"}},{"id":14495,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14485,"src":"8200:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$returns$__$","typeString":"function ProtocolFeeController.collectAggregateFeesHook(address)"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14491,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8137:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8141:10:60","memberName":"encodeCall","nodeType":"MemberAccess","src":"8137:14:60","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8137:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14488,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8123:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8130:6:60","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"8123:13:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":14497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8123:83:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":14498,"nodeType":"ExpressionStatement","src":"8123:83:60"}]},"documentation":{"id":14483,"nodeType":"StructuredDocumentation","src":"8019:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"8f4ab9ca","id":14500,"implemented":true,"kind":"function","modifiers":[],"name":"collectAggregateFees","nameLocation":"8071:20:60","nodeType":"FunctionDefinition","parameters":{"id":14486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14485,"mutability":"mutable","name":"pool","nameLocation":"8100:4:60","nodeType":"VariableDeclaration","scope":14500,"src":"8092:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14484,"name":"address","nodeType":"ElementaryTypeName","src":"8092:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8091:14:60"},"returnParameters":{"id":14487,"nodeType":"ParameterList","parameters":[],"src":"8113:0:60"},"scope":15747,"src":"8062:151:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14527,"nodeType":"Block","src":"8596:186:60","statements":[{"assignments":[14512,14515],"declarations":[{"constant":false,"id":14512,"mutability":"mutable","name":"totalSwapFees","nameLocation":"8624:13:60","nodeType":"VariableDeclaration","scope":14527,"src":"8607:30:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14510,"name":"uint256","nodeType":"ElementaryTypeName","src":"8607:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14511,"nodeType":"ArrayTypeName","src":"8607:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14515,"mutability":"mutable","name":"totalYieldFees","nameLocation":"8656:14:60","nodeType":"VariableDeclaration","scope":14527,"src":"8639:31:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14513,"name":"uint256","nodeType":"ElementaryTypeName","src":"8639:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14514,"nodeType":"ArrayTypeName","src":"8639:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":14520,"initialValue":{"arguments":[{"id":14518,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14503,"src":"8702:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14516,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8674:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8681:20:60","memberName":"collectAggregateFees","nodeType":"MemberAccess","referencedDeclaration":3021,"src":"8674:27:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) external returns (uint256[] memory,uint256[] memory)"}},"id":14519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8674:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"8606:101:60"},{"expression":{"arguments":[{"id":14522,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14503,"src":"8739:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14523,"name":"totalSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14512,"src":"8745:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":14524,"name":"totalYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14515,"src":"8760:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14521,"name":"_receiveAggregateFees","nodeType":"Identifier","overloadedDeclarations":[14555,14759],"referencedDeclaration":14555,"src":"8717:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,uint256[] memory,uint256[] memory)"}},"id":14525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8717:58:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14526,"nodeType":"ExpressionStatement","src":"8717:58:60"}]},"documentation":{"id":14501,"nodeType":"StructuredDocumentation","src":"8219:305:60","text":" @dev Copy and zero out the `aggregateFeeAmounts` collected in the Vault accounting, supplying credit\n for each token. Then have the Vault transfer tokens to this contract, debiting each token for the amount\n transferred so that the transaction settles when the hook returns."},"functionSelector":"fa399f2a","id":14528,"implemented":true,"kind":"function","modifiers":[{"id":14506,"kind":"modifierInvocation","modifierName":{"id":14505,"name":"onlyVault","nameLocations":["8586:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"8586:9:60"},"nodeType":"ModifierInvocation","src":"8586:9:60"}],"name":"collectAggregateFeesHook","nameLocation":"8538:24:60","nodeType":"FunctionDefinition","parameters":{"id":14504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14503,"mutability":"mutable","name":"pool","nameLocation":"8571:4:60","nodeType":"VariableDeclaration","scope":14528,"src":"8563:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14502,"name":"address","nodeType":"ElementaryTypeName","src":"8563:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8562:14:60"},"returnParameters":{"id":14507,"nodeType":"ParameterList","parameters":[],"src":"8596:0:60"},"scope":15747,"src":"8529:253:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14554,"nodeType":"Block","src":"9873:159:60","statements":[{"expression":{"arguments":[{"id":14541,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14531,"src":"9905:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14542,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"9911:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":14543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9927:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"9911:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},{"id":14544,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14534,"src":"9933:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14540,"name":"_receiveAggregateFees","nodeType":"Identifier","overloadedDeclarations":[14555,14759],"referencedDeclaration":14759,"src":"9883:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_enum$_ProtocolFeeType_$14334_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,enum ProtocolFeeController.ProtocolFeeType,uint256[] memory)"}},"id":14545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9883:65:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14546,"nodeType":"ExpressionStatement","src":"9883:65:60"},{"expression":{"arguments":[{"id":14548,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14531,"src":"9980:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14549,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"9986:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":14550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10002:5:60","memberName":"YIELD","nodeType":"MemberAccess","referencedDeclaration":14333,"src":"9986:21:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},{"id":14551,"name":"yieldFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14537,"src":"10009:15:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":14547,"name":"_receiveAggregateFees","nodeType":"Identifier","overloadedDeclarations":[14555,14759],"referencedDeclaration":14759,"src":"9958:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_enum$_ProtocolFeeType_$14334_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,enum ProtocolFeeController.ProtocolFeeType,uint256[] memory)"}},"id":14552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9958:67:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14553,"nodeType":"ExpressionStatement","src":"9958:67:60"}]},"documentation":{"id":14529,"nodeType":"StructuredDocumentation","src":"8788:929:60","text":" @notice Settle fee credits from the Vault.\n @dev This must be called after calling `collectAggregateFees` in the Vault. Note that since charging protocol\n fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection\n happens in the ProtocolFeeController, the swap fees reported here may encompass multiple operations. The Vault\n differentiates between swap and yield fees (since they can have different percentage values); the Controller\n combines swap and yield fees, then allocates the total between the protocol and pool creator.\n @param pool The address of the pool on which the swap fees were charged\n @param swapFeeAmounts An array with the total swap fees collected, sorted in token registration order\n @param yieldFeeAmounts An array with the total yield fees collected, sorted in token registration order"},"id":14555,"implemented":true,"kind":"function","modifiers":[],"name":"_receiveAggregateFees","nameLocation":"9731:21:60","nodeType":"FunctionDefinition","parameters":{"id":14538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14531,"mutability":"mutable","name":"pool","nameLocation":"9770:4:60","nodeType":"VariableDeclaration","scope":14555,"src":"9762:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14530,"name":"address","nodeType":"ElementaryTypeName","src":"9762:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14534,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"9801:14:60","nodeType":"VariableDeclaration","scope":14555,"src":"9784:31:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14532,"name":"uint256","nodeType":"ElementaryTypeName","src":"9784:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14533,"nodeType":"ArrayTypeName","src":"9784:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14537,"mutability":"mutable","name":"yieldFeeAmounts","nameLocation":"9842:15:60","nodeType":"VariableDeclaration","scope":14555,"src":"9825:32:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14535,"name":"uint256","nodeType":"ElementaryTypeName","src":"9825:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14536,"nodeType":"ArrayTypeName","src":"9825:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9752:111:60"},"returnParameters":{"id":14539,"nodeType":"ParameterList","parameters":[],"src":"9873:0:60"},"scope":15747,"src":"9722:310:60","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14758,"nodeType":"Block","src":"10145:2992:60","statements":[{"assignments":[14567],"declarations":[{"constant":false,"id":14567,"mutability":"mutable","name":"protocolFeePercentage","nameLocation":"10385:21:60","nodeType":"VariableDeclaration","scope":14758,"src":"10377:29:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14566,"name":"uint256","nodeType":"ElementaryTypeName","src":"10377:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14581,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"id":14571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14568,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"10409:7:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14569,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"10420:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":14570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10436:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"10420:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"src":"10409:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"baseExpression":{"id":14576,"name":"_poolProtocolYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"10521:32:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":14578,"indexExpression":{"id":14577,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"10554:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10521:38:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":14579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10560:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"10521:52:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10409:164:60","trueExpression":{"expression":{"baseExpression":{"id":14572,"name":"_poolProtocolSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"10455:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":14574,"indexExpression":{"id":14573,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"10487:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10455:37:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":14575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10493:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"10455:51:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"10377:196:60"},{"assignments":[14583],"declarations":[{"constant":false,"id":14583,"mutability":"mutable","name":"poolCreatorFeePercentage","nameLocation":"10592:24:60","nodeType":"VariableDeclaration","scope":14758,"src":"10584:32:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14582,"name":"uint256","nodeType":"ElementaryTypeName","src":"10584:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14595,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"id":14587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14584,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"10619:7:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14585,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"10630:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":14586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10646:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"10630:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"src":"10619:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"baseExpression":{"id":14591,"name":"_poolCreatorYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14375,"src":"10716:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14593,"indexExpression":{"id":14592,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"10748:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10716:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10619:134:60","trueExpression":{"baseExpression":{"id":14588,"name":"_poolCreatorSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"10665:30:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14590,"indexExpression":{"id":14589,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"10696:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10665:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10584:169:60"},{"assignments":[14597],"declarations":[{"constant":false,"id":14597,"mutability":"mutable","name":"aggregateFeePercentage","nameLocation":"10772:22:60","nodeType":"VariableDeclaration","scope":14758,"src":"10764:30:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14596,"name":"uint256","nodeType":"ElementaryTypeName","src":"10764:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14598,"nodeType":"VariableDeclarationStatement","src":"10764:30:60"},{"assignments":[14600],"declarations":[{"constant":false,"id":14600,"mutability":"mutable","name":"needToSplitFees","nameLocation":"10810:15:60","nodeType":"VariableDeclaration","scope":14758,"src":"10805:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14599,"name":"bool","nodeType":"ElementaryTypeName","src":"10805:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":14608,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14601,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14583,"src":"10828:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10855:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10828:28:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14604,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14567,"src":"10860:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10884:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10860:25:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10828:57:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10805:80:60"},{"condition":{"id":14609,"name":"needToSplitFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14600,"src":"10899:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14618,"nodeType":"IfStatement","src":"10895:199:60","trueBody":{"id":14617,"nodeType":"Block","src":"10916:178:60","statements":[{"expression":{"id":14615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14610,"name":"aggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14597,"src":"10979:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14612,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14567,"src":"11035:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14613,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14583,"src":"11058:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14611,"name":"_computeAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15108,"src":"11004:30:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11004:79:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10979:104:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14616,"nodeType":"ExpressionStatement","src":"10979:104:60"}]}},{"assignments":[14623,14625],"declarations":[{"constant":false,"id":14623,"mutability":"mutable","name":"poolTokens","nameLocation":"11121:10:60","nodeType":"VariableDeclaration","scope":14758,"src":"11105:26:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14621,"nodeType":"UserDefinedTypeName","pathNode":{"id":14620,"name":"IERC20","nameLocations":["11105:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"11105:6:60"},"referencedDeclaration":39274,"src":"11105:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":14622,"nodeType":"ArrayTypeName","src":"11105:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":14625,"mutability":"mutable","name":"numTokens","nameLocation":"11141:9:60","nodeType":"VariableDeclaration","scope":14758,"src":"11133:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14624,"name":"uint256","nodeType":"ElementaryTypeName","src":"11133:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14629,"initialValue":{"arguments":[{"id":14627,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"11177:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14626,"name":"_getPoolTokensAndCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15168,"src":"11154:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address) view returns (contract IERC20[] memory,uint256)"}},"id":14628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11154:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11104:78:60"},{"body":{"id":14756,"nodeType":"Block","src":"11232:1899:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14640,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"11250:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14642,"indexExpression":{"id":14641,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"11261:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11250:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11266:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11250:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14755,"nodeType":"IfStatement","src":"11246:1875:60","trueBody":{"id":14754,"nodeType":"Block","src":"11269:1852:60","statements":[{"assignments":[14647],"declarations":[{"constant":false,"id":14647,"mutability":"mutable","name":"token","nameLocation":"11294:5:60","nodeType":"VariableDeclaration","scope":14754,"src":"11287:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":14646,"nodeType":"UserDefinedTypeName","pathNode":{"id":14645,"name":"IERC20","nameLocations":["11287:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"11287:6:60"},"referencedDeclaration":39274,"src":"11287:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":14651,"initialValue":{"baseExpression":{"id":14648,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14623,"src":"11302:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14650,"indexExpression":{"id":14649,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"11313:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11302:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"11287:28:60"},{"expression":{"arguments":[{"id":14655,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"11348:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":14658,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11363:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_ProtocolFeeController_$15747","typeString":"contract ProtocolFeeController"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProtocolFeeController_$15747","typeString":"contract ProtocolFeeController"}],"id":14657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11355:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14656,"name":"address","nodeType":"ElementaryTypeName","src":"11355:7:60","typeDescriptions":{}}},"id":14659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11355:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":14660,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"11370:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14662,"indexExpression":{"id":14661,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"11381:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11370:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14652,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11334:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":14654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11341:6:60","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"11334:13:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":14663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11334:50:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14664,"nodeType":"ExpressionStatement","src":"11334:50:60"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"id":14668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14665,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14560,"src":"11563:7:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":14666,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"11574:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":14667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11590:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"11574:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"src":"11563:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14686,"nodeType":"Block","src":"11700:99:60","statements":[{"eventCall":{"arguments":[{"id":14679,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"11753:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14680,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"11759:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":14681,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"11766:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14683,"indexExpression":{"id":14682,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"11777:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11766:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14678,"name":"ProtocolYieldFeeCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2008,"src":"11727:25:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":14684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11727:53:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14685,"nodeType":"EmitStatement","src":"11722:58:60"}]},"id":14687,"nodeType":"IfStatement","src":"11559:240:60","trueBody":{"id":14677,"nodeType":"Block","src":"11596:98:60","statements":[{"eventCall":{"arguments":[{"id":14670,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"11648:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14671,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"11654:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":14672,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"11661:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14674,"indexExpression":{"id":14673,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"11672:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11661:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14669,"name":"ProtocolSwapFeeCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1998,"src":"11623:24:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":14675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11623:52:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14676,"nodeType":"EmitStatement","src":"11618:57:60"}]}},{"condition":{"id":14688,"name":"needToSplitFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14600,"src":"11821:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14752,"nodeType":"Block","src":"12751:356:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14726,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14583,"src":"12853:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12881:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12853:29:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14750,"nodeType":"Block","src":"12988:101:60","statements":[{"expression":{"id":14748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":14740,"name":"_poolCreatorFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"13014:22:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":14743,"indexExpression":{"id":14741,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"13037:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13014:28:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":14744,"indexExpression":{"id":14742,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"13043:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13014:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":14745,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"13053:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14747,"indexExpression":{"id":14746,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"13064:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13053:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13014:52:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14749,"nodeType":"ExpressionStatement","src":"13014:52:60"}]},"id":14751,"nodeType":"IfStatement","src":"12849:240:60","trueBody":{"id":14739,"nodeType":"Block","src":"12884:98:60","statements":[{"expression":{"id":14737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":14729,"name":"_protocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14382,"src":"12910:19:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":14732,"indexExpression":{"id":14730,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"12930:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12910:25:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":14733,"indexExpression":{"id":14731,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"12936:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12910:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":14734,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"12946:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14736,"indexExpression":{"id":14735,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"12957:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12946:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12910:49:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14738,"nodeType":"ExpressionStatement","src":"12910:49:60"}]}}]},"id":14753,"nodeType":"IfStatement","src":"11817:1290:60","trueBody":{"id":14725,"nodeType":"Block","src":"11838:907:60","statements":[{"assignments":[14690],"declarations":[{"constant":false,"id":14690,"mutability":"mutable","name":"totalFeeAmountRaw","nameLocation":"12403:17:60","nodeType":"VariableDeclaration","scope":14725,"src":"12395:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14689,"name":"uint256","nodeType":"ElementaryTypeName","src":"12395:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14697,"initialValue":{"arguments":[{"id":14695,"name":"aggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14597,"src":"12443:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":14691,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"12423:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14693,"indexExpression":{"id":14692,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"12434:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12423:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12437:5:60","memberName":"divUp","nodeType":"MemberAccess","referencedDeclaration":7632,"src":"12423:19:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12423:43:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12395:71:60"},{"assignments":[14699],"declarations":[{"constant":false,"id":14699,"mutability":"mutable","name":"protocolPortion","nameLocation":"12496:15:60","nodeType":"VariableDeclaration","scope":14725,"src":"12488:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14698,"name":"uint256","nodeType":"ElementaryTypeName","src":"12488:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14704,"initialValue":{"arguments":[{"id":14702,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14567,"src":"12538:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14700,"name":"totalFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14690,"src":"12514:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12532:5:60","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"12514:23:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12514:46:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12488:72:60"},{"expression":{"id":14711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":14705,"name":"_protocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14382,"src":"12583:19:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":14708,"indexExpression":{"id":14706,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"12603:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12583:25:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":14709,"indexExpression":{"id":14707,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"12609:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12583:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":14710,"name":"protocolPortion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14699,"src":"12619:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12583:51:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14712,"nodeType":"ExpressionStatement","src":"12583:51:60"},{"expression":{"id":14723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":14713,"name":"_poolCreatorFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"12656:22:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":14716,"indexExpression":{"id":14714,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14557,"src":"12679:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12656:28:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":14717,"indexExpression":{"id":14715,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"12685:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12656:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":14718,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14563,"src":"12695:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14720,"indexExpression":{"id":14719,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"12706:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12695:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14721,"name":"protocolPortion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14699,"src":"12711:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12695:31:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12656:70:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14724,"nodeType":"ExpressionStatement","src":"12656:70:60"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14634,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"11212:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14635,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14625,"src":"11216:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11212:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14757,"initializationExpression":{"assignments":[14631],"declarations":[{"constant":false,"id":14631,"mutability":"mutable","name":"i","nameLocation":"11205:1:60","nodeType":"VariableDeclaration","scope":14757,"src":"11197:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14630,"name":"uint256","nodeType":"ElementaryTypeName","src":"11197:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14633,"initialValue":{"hexValue":"30","id":14632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11209:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11197:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11227:3:60","subExpression":{"id":14637,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"11229:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14639,"nodeType":"ExpressionStatement","src":"11227:3:60"},"nodeType":"ForStatement","src":"11192:1939:60"}]},"id":14759,"implemented":true,"kind":"function","modifiers":[],"name":"_receiveAggregateFees","nameLocation":"10047:21:60","nodeType":"FunctionDefinition","parameters":{"id":14564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14557,"mutability":"mutable","name":"pool","nameLocation":"10077:4:60","nodeType":"VariableDeclaration","scope":14759,"src":"10069:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14556,"name":"address","nodeType":"ElementaryTypeName","src":"10069:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14560,"mutability":"mutable","name":"feeType","nameLocation":"10099:7:60","nodeType":"VariableDeclaration","scope":14759,"src":"10083:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"typeName":{"id":14559,"nodeType":"UserDefinedTypeName","pathNode":{"id":14558,"name":"ProtocolFeeType","nameLocations":["10083:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":14334,"src":"10083:15:60"},"referencedDeclaration":14334,"src":"10083:15:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"visibility":"internal"},{"constant":false,"id":14563,"mutability":"mutable","name":"feeAmounts","nameLocation":"10125:10:60","nodeType":"VariableDeclaration","scope":14759,"src":"10108:27:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14561,"name":"uint256","nodeType":"ElementaryTypeName","src":"10108:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14562,"nodeType":"ArrayTypeName","src":"10108:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"10068:68:60"},"returnParameters":{"id":14565,"nodeType":"ParameterList","parameters":[],"src":"10145:0:60"},"scope":15747,"src":"10038:3099:60","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2072],"body":{"id":14767,"nodeType":"Block","src":"13264:56:60","statements":[{"expression":{"id":14765,"name":"_globalProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14351,"src":"13281:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14764,"id":14766,"nodeType":"Return","src":"13274:39:60"}]},"documentation":{"id":14760,"nodeType":"StructuredDocumentation","src":"13143:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"7869ee18","id":14768,"implemented":true,"kind":"function","modifiers":[],"name":"getGlobalProtocolSwapFeePercentage","nameLocation":"13195:34:60","nodeType":"FunctionDefinition","parameters":{"id":14761,"nodeType":"ParameterList","parameters":[],"src":"13229:2:60"},"returnParameters":{"id":14764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14768,"src":"13255:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14762,"name":"uint256","nodeType":"ElementaryTypeName","src":"13255:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13254:9:60"},"scope":15747,"src":"13186:134:60","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2078],"body":{"id":14776,"nodeType":"Block","src":"13448:57:60","statements":[{"expression":{"id":14774,"name":"_globalProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14353,"src":"13465:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14773,"id":14775,"nodeType":"Return","src":"13458:40:60"}]},"documentation":{"id":14769,"nodeType":"StructuredDocumentation","src":"13326:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"55fb76af","id":14777,"implemented":true,"kind":"function","modifiers":[],"name":"getGlobalProtocolYieldFeePercentage","nameLocation":"13378:35:60","nodeType":"FunctionDefinition","parameters":{"id":14770,"nodeType":"ParameterList","parameters":[],"src":"13413:2:60"},"returnParameters":{"id":14773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14772,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14777,"src":"13439:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14771,"name":"uint256","nodeType":"ElementaryTypeName","src":"13439:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13438:9:60"},"scope":15747,"src":"13369:136:60","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2088],"body":{"id":14800,"nodeType":"Block","src":"13642:143:60","statements":[{"assignments":[14789],"declarations":[{"constant":false,"id":14789,"mutability":"mutable","name":"config","nameLocation":"13673:6:60","nodeType":"VariableDeclaration","scope":14800,"src":"13652:27:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"},"typeName":{"id":14788,"nodeType":"UserDefinedTypeName","pathNode":{"id":14787,"name":"PoolFeeConfig","nameLocations":["13652:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":14340,"src":"13652:13:60"},"referencedDeclaration":14340,"src":"13652:13:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"}},"visibility":"internal"}],"id":14793,"initialValue":{"baseExpression":{"id":14790,"name":"_poolProtocolSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"13682:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":14792,"indexExpression":{"id":14791,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14780,"src":"13714:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13682:37:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13652:67:60"},{"expression":{"components":[{"expression":{"id":14794,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14789,"src":"13738:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":14795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13745:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"13738:20:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":14796,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14789,"src":"13760:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":14797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13767:10:60","memberName":"isOverride","nodeType":"MemberAccess","referencedDeclaration":14339,"src":"13760:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14798,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13737:41:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_bool_$","typeString":"tuple(uint64,bool)"}},"functionReturnParameters":14786,"id":14799,"nodeType":"Return","src":"13730:48:60"}]},"documentation":{"id":14778,"nodeType":"StructuredDocumentation","src":"13511:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"5c15a0b4","id":14801,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolProtocolSwapFeeInfo","nameLocation":"13563:26:60","nodeType":"FunctionDefinition","parameters":{"id":14781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14780,"mutability":"mutable","name":"pool","nameLocation":"13598:4:60","nodeType":"VariableDeclaration","scope":14801,"src":"13590:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14779,"name":"address","nodeType":"ElementaryTypeName","src":"13590:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13589:14:60"},"returnParameters":{"id":14786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14783,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14801,"src":"13627:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14782,"name":"uint256","nodeType":"ElementaryTypeName","src":"13627:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14801,"src":"13636:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14784,"name":"bool","nodeType":"ElementaryTypeName","src":"13636:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13626:15:60"},"scope":15747,"src":"13554:231:60","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2098],"body":{"id":14824,"nodeType":"Block","src":"13923:144:60","statements":[{"assignments":[14813],"declarations":[{"constant":false,"id":14813,"mutability":"mutable","name":"config","nameLocation":"13954:6:60","nodeType":"VariableDeclaration","scope":14824,"src":"13933:27:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"},"typeName":{"id":14812,"nodeType":"UserDefinedTypeName","pathNode":{"id":14811,"name":"PoolFeeConfig","nameLocations":["13933:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":14340,"src":"13933:13:60"},"referencedDeclaration":14340,"src":"13933:13:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"}},"visibility":"internal"}],"id":14817,"initialValue":{"baseExpression":{"id":14814,"name":"_poolProtocolYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"13963:32:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":14816,"indexExpression":{"id":14815,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14804,"src":"13996:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13963:38:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"13933:68:60"},{"expression":{"components":[{"expression":{"id":14818,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14813,"src":"14020:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":14819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14027:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"14020:20:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":14820,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14813,"src":"14042:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":14821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14049:10:60","memberName":"isOverride","nodeType":"MemberAccess","referencedDeclaration":14339,"src":"14042:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14822,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14019:41:60","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_bool_$","typeString":"tuple(uint64,bool)"}},"functionReturnParameters":14810,"id":14823,"nodeType":"Return","src":"14012:48:60"}]},"documentation":{"id":14802,"nodeType":"StructuredDocumentation","src":"13791:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"7a2b97dc","id":14825,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolProtocolYieldFeeInfo","nameLocation":"13843:27:60","nodeType":"FunctionDefinition","parameters":{"id":14805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14804,"mutability":"mutable","name":"pool","nameLocation":"13879:4:60","nodeType":"VariableDeclaration","scope":14825,"src":"13871:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14803,"name":"address","nodeType":"ElementaryTypeName","src":"13871:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13870:14:60"},"returnParameters":{"id":14810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14807,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14825,"src":"13908:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14806,"name":"uint256","nodeType":"ElementaryTypeName","src":"13908:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14825,"src":"13917:4:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14808,"name":"bool","nodeType":"ElementaryTypeName","src":"13917:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13907:15:60"},"scope":15747,"src":"13834:233:60","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2107],"body":{"id":14877,"nodeType":"Block","src":"14213:273:60","statements":[{"assignments":[14838,14840],"declarations":[{"constant":false,"id":14838,"mutability":"mutable","name":"poolTokens","nameLocation":"14240:10:60","nodeType":"VariableDeclaration","scope":14877,"src":"14224:26:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14836,"nodeType":"UserDefinedTypeName","pathNode":{"id":14835,"name":"IERC20","nameLocations":["14224:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14224:6:60"},"referencedDeclaration":39274,"src":"14224:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":14837,"nodeType":"ArrayTypeName","src":"14224:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":14840,"mutability":"mutable","name":"numTokens","nameLocation":"14260:9:60","nodeType":"VariableDeclaration","scope":14877,"src":"14252:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14839,"name":"uint256","nodeType":"ElementaryTypeName","src":"14252:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14844,"initialValue":{"arguments":[{"id":14842,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14828,"src":"14296:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14841,"name":"_getPoolTokensAndCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15168,"src":"14273:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address) view returns (contract IERC20[] memory,uint256)"}},"id":14843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14273:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14223:78:60"},{"expression":{"id":14851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14845,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"14312:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14849,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14840,"src":"14339:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14325:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":14846,"name":"uint256","nodeType":"ElementaryTypeName","src":"14329:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14847,"nodeType":"ArrayTypeName","src":"14329:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":14850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14325:24:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14312:37:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14852,"nodeType":"ExpressionStatement","src":"14312:37:60"},{"body":{"id":14875,"nodeType":"Block","src":"14399:81:60","statements":[{"expression":{"id":14873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14863,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14832,"src":"14413:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14865,"indexExpression":{"id":14864,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14854,"src":"14424:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14413:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":14866,"name":"_protocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14382,"src":"14429:19:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":14868,"indexExpression":{"id":14867,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14828,"src":"14449:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14429:25:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":14872,"indexExpression":{"baseExpression":{"id":14869,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14838,"src":"14455:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14871,"indexExpression":{"id":14870,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14854,"src":"14466:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14455:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14429:40:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14413:56:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14874,"nodeType":"ExpressionStatement","src":"14413:56:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14857,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14854,"src":"14379:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14858,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14840,"src":"14383:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14379:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14876,"initializationExpression":{"assignments":[14854],"declarations":[{"constant":false,"id":14854,"mutability":"mutable","name":"i","nameLocation":"14372:1:60","nodeType":"VariableDeclaration","scope":14876,"src":"14364:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14853,"name":"uint256","nodeType":"ElementaryTypeName","src":"14364:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14856,"initialValue":{"hexValue":"30","id":14855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14376:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14364:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14394:3:60","subExpression":{"id":14860,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14854,"src":"14396:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14862,"nodeType":"ExpressionStatement","src":"14394:3:60"},"nodeType":"ForStatement","src":"14359:121:60"}]},"documentation":{"id":14826,"nodeType":"StructuredDocumentation","src":"14073:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"8df44c54","id":14878,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeeAmounts","nameLocation":"14125:21:60","nodeType":"FunctionDefinition","parameters":{"id":14829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14828,"mutability":"mutable","name":"pool","nameLocation":"14155:4:60","nodeType":"VariableDeclaration","scope":14878,"src":"14147:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14827,"name":"address","nodeType":"ElementaryTypeName","src":"14147:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14146:14:60"},"returnParameters":{"id":14833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14832,"mutability":"mutable","name":"feeAmounts","nameLocation":"14201:10:60","nodeType":"VariableDeclaration","scope":14878,"src":"14184:27:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14830,"name":"uint256","nodeType":"ElementaryTypeName","src":"14184:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14831,"nodeType":"ArrayTypeName","src":"14184:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14183:29:60"},"scope":15747,"src":"14116:370:60","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2116],"body":{"id":14930,"nodeType":"Block","src":"14635:276:60","statements":[{"assignments":[14891,14893],"declarations":[{"constant":false,"id":14891,"mutability":"mutable","name":"poolTokens","nameLocation":"14662:10:60","nodeType":"VariableDeclaration","scope":14930,"src":"14646:26:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14889,"nodeType":"UserDefinedTypeName","pathNode":{"id":14888,"name":"IERC20","nameLocations":["14646:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14646:6:60"},"referencedDeclaration":39274,"src":"14646:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":14890,"nodeType":"ArrayTypeName","src":"14646:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":14893,"mutability":"mutable","name":"numTokens","nameLocation":"14682:9:60","nodeType":"VariableDeclaration","scope":14930,"src":"14674:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14892,"name":"uint256","nodeType":"ElementaryTypeName","src":"14674:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14897,"initialValue":{"arguments":[{"id":14895,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14881,"src":"14718:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14894,"name":"_getPoolTokensAndCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15168,"src":"14695:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address) view returns (contract IERC20[] memory,uint256)"}},"id":14896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14695:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14645:78:60"},{"expression":{"id":14904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14898,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14885,"src":"14734:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14902,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14893,"src":"14761:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14747:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":14899,"name":"uint256","nodeType":"ElementaryTypeName","src":"14751:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14900,"nodeType":"ArrayTypeName","src":"14751:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":14903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14747:24:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14734:37:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14905,"nodeType":"ExpressionStatement","src":"14734:37:60"},{"body":{"id":14928,"nodeType":"Block","src":"14821:84:60","statements":[{"expression":{"id":14926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14916,"name":"feeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14885,"src":"14835:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14918,"indexExpression":{"id":14917,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"14846:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14835:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":14919,"name":"_poolCreatorFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"14851:22:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":14921,"indexExpression":{"id":14920,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14881,"src":"14874:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14851:28:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":14925,"indexExpression":{"baseExpression":{"id":14922,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14891,"src":"14880:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14924,"indexExpression":{"id":14923,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"14891:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14880:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14851:43:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14835:59:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14927,"nodeType":"ExpressionStatement","src":"14835:59:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14910,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"14801:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":14911,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14893,"src":"14805:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14801:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14929,"initializationExpression":{"assignments":[14907],"declarations":[{"constant":false,"id":14907,"mutability":"mutable","name":"i","nameLocation":"14794:1:60","nodeType":"VariableDeclaration","scope":14929,"src":"14786:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14906,"name":"uint256","nodeType":"ElementaryTypeName","src":"14786:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14909,"initialValue":{"hexValue":"30","id":14908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14798:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14786:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":14914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14816:3:60","subExpression":{"id":14913,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"14818:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14915,"nodeType":"ExpressionStatement","src":"14816:3:60"},"nodeType":"ForStatement","src":"14781:124:60"}]},"documentation":{"id":14879,"nodeType":"StructuredDocumentation","src":"14492:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"9e95f3fd","id":14931,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolCreatorFeeAmounts","nameLocation":"14544:24:60","nodeType":"FunctionDefinition","parameters":{"id":14882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14881,"mutability":"mutable","name":"pool","nameLocation":"14577:4:60","nodeType":"VariableDeclaration","scope":14931,"src":"14569:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14880,"name":"address","nodeType":"ElementaryTypeName","src":"14569:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14568:14:60"},"returnParameters":{"id":14886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14885,"mutability":"mutable","name":"feeAmounts","nameLocation":"14623:10:60","nodeType":"VariableDeclaration","scope":14931,"src":"14606:27:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14883,"name":"uint256","nodeType":"ElementaryTypeName","src":"14606:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14884,"nodeType":"ArrayTypeName","src":"14606:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14605:29:60"},"scope":15747,"src":"14535:376:60","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2126],"body":{"id":14946,"nodeType":"Block","src":"15118:103:60","statements":[{"expression":{"arguments":[{"id":14942,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14934,"src":"15166:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14943,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14936,"src":"15189:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14941,"name":"_computeAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15108,"src":"15135:30:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":14944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15135:79:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14940,"id":14945,"nodeType":"Return","src":"15128:86:60"}]},"documentation":{"id":14932,"nodeType":"StructuredDocumentation","src":"14917:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"0ddd60c6","id":14947,"implemented":true,"kind":"function","modifiers":[],"name":"computeAggregateFeePercentage","nameLocation":"14969:29:60","nodeType":"FunctionDefinition","parameters":{"id":14937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14934,"mutability":"mutable","name":"protocolFeePercentage","nameLocation":"15016:21:60","nodeType":"VariableDeclaration","scope":14947,"src":"15008:29:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14933,"name":"uint256","nodeType":"ElementaryTypeName","src":"15008:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14936,"mutability":"mutable","name":"poolCreatorFeePercentage","nameLocation":"15055:24:60","nodeType":"VariableDeclaration","scope":14947,"src":"15047:32:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14935,"name":"uint256","nodeType":"ElementaryTypeName","src":"15047:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14998:87:60"},"returnParameters":{"id":14940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14947,"src":"15109:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14938,"name":"uint256","nodeType":"ElementaryTypeName","src":"15109:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15108:9:60"},"scope":15747,"src":"14960:261:60","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2132],"body":{"id":14984,"nodeType":"Block","src":"15355:347:60","statements":[{"assignments":[14958],"declarations":[{"constant":false,"id":14958,"mutability":"mutable","name":"feeConfig","nameLocation":"15386:9:60","nodeType":"VariableDeclaration","scope":14984,"src":"15365:30:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"},"typeName":{"id":14957,"nodeType":"UserDefinedTypeName","pathNode":{"id":14956,"name":"PoolFeeConfig","nameLocations":["15365:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":14340,"src":"15365:13:60"},"referencedDeclaration":14340,"src":"15365:13:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"}},"visibility":"internal"}],"id":14962,"initialValue":{"baseExpression":{"id":14959,"name":"_poolProtocolSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"15398:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":14961,"indexExpression":{"id":14960,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14950,"src":"15430:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15398:37:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15365:70:60"},{"assignments":[14964],"declarations":[{"constant":false,"id":14964,"mutability":"mutable","name":"globalProtocolSwapFee","nameLocation":"15453:21:60","nodeType":"VariableDeclaration","scope":14984,"src":"15445:29:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14963,"name":"uint256","nodeType":"ElementaryTypeName","src":"15445:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14966,"initialValue":{"id":14965,"name":"_globalProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14351,"src":"15477:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15445:64:60"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14967,"name":"feeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14958,"src":"15524:9:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":14968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15534:10:60","memberName":"isOverride","nodeType":"MemberAccess","referencedDeclaration":14339,"src":"15524:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":14969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15548:5:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"15524:29:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14971,"name":"globalProtocolSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14964,"src":"15557:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":14972,"name":"feeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14958,"src":"15582:9:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":14973,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15592:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"15582:23:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"15557:48:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15524:81:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14983,"nodeType":"IfStatement","src":"15520:176:60","trueBody":{"id":14982,"nodeType":"Block","src":"15607:89:60","statements":[{"expression":{"arguments":[{"id":14977,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14950,"src":"15650:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14978,"name":"globalProtocolSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14964,"src":"15656:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":14979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15679:5:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14976,"name":"_updatePoolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15687,"src":"15621:28:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":14980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15621:64:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14981,"nodeType":"ExpressionStatement","src":"15621:64:60"}]}}]},"documentation":{"id":14948,"nodeType":"StructuredDocumentation","src":"15227:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"71ecc8fb","id":14985,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":14953,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14950,"src":"15349:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":14954,"kind":"modifierInvocation","modifierName":{"id":14952,"name":"withLatestFees","nameLocations":["15334:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":14459,"src":"15334:14:60"},"nodeType":"ModifierInvocation","src":"15334:20:60"}],"name":"updateProtocolSwapFeePercentage","nameLocation":"15279:31:60","nodeType":"FunctionDefinition","parameters":{"id":14951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14950,"mutability":"mutable","name":"pool","nameLocation":"15319:4:60","nodeType":"VariableDeclaration","scope":14985,"src":"15311:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14949,"name":"address","nodeType":"ElementaryTypeName","src":"15311:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15310:14:60"},"returnParameters":{"id":14955,"nodeType":"ParameterList","parameters":[],"src":"15355:0:60"},"scope":15747,"src":"15270:432:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2138],"body":{"id":15022,"nodeType":"Block","src":"15837:353:60","statements":[{"assignments":[14996],"declarations":[{"constant":false,"id":14996,"mutability":"mutable","name":"feeConfig","nameLocation":"15868:9:60","nodeType":"VariableDeclaration","scope":15022,"src":"15847:30:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"},"typeName":{"id":14995,"nodeType":"UserDefinedTypeName","pathNode":{"id":14994,"name":"PoolFeeConfig","nameLocations":["15847:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":14340,"src":"15847:13:60"},"referencedDeclaration":14340,"src":"15847:13:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig"}},"visibility":"internal"}],"id":15000,"initialValue":{"baseExpression":{"id":14997,"name":"_poolProtocolYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"15880:32:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":14999,"indexExpression":{"id":14998,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"15913:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15880:38:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15847:71:60"},{"assignments":[15002],"declarations":[{"constant":false,"id":15002,"mutability":"mutable","name":"globalProtocolYieldFee","nameLocation":"15936:22:60","nodeType":"VariableDeclaration","scope":15022,"src":"15928:30:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15001,"name":"uint256","nodeType":"ElementaryTypeName","src":"15928:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15004,"initialValue":{"id":15003,"name":"_globalProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14353,"src":"15961:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15928:66:60"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15005,"name":"feeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14996,"src":"16009:9:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":15006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16019:10:60","memberName":"isOverride","nodeType":"MemberAccess","referencedDeclaration":14339,"src":"16009:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":15007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16033:5:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"16009:29:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15009,"name":"globalProtocolYieldFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"16042:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15010,"name":"feeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14996,"src":"16068:9:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"id":15011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16078:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"16068:23:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"16042:49:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16009:82:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15021,"nodeType":"IfStatement","src":"16005:179:60","trueBody":{"id":15020,"nodeType":"Block","src":"16093:91:60","statements":[{"expression":{"arguments":[{"id":15015,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"16137:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15016,"name":"globalProtocolYieldFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15002,"src":"16143:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":15017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16167:5:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15014,"name":"_updatePoolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"16107:29:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":15018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16107:66:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15019,"nodeType":"ExpressionStatement","src":"16107:66:60"}]}}]},"documentation":{"id":14986,"nodeType":"StructuredDocumentation","src":"15708:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"71447ea8","id":15023,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":14991,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"15831:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":14992,"kind":"modifierInvocation","modifierName":{"id":14990,"name":"withLatestFees","nameLocations":["15816:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":14459,"src":"15816:14:60"},"nodeType":"ModifierInvocation","src":"15816:20:60"}],"name":"updateProtocolYieldFeePercentage","nameLocation":"15760:32:60","nodeType":"FunctionDefinition","parameters":{"id":14989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14988,"mutability":"mutable","name":"pool","nameLocation":"15801:4:60","nodeType":"VariableDeclaration","scope":15023,"src":"15793:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14987,"name":"address","nodeType":"ElementaryTypeName","src":"15793:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15792:14:60"},"returnParameters":{"id":14993,"nodeType":"ParameterList","parameters":[],"src":"15837:0:60"},"scope":15747,"src":"15751:439:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15077,"nodeType":"Block","src":"16303:594:60","statements":[{"assignments":[15034],"declarations":[{"constant":false,"id":15034,"mutability":"mutable","name":"protocolFeePercentage","nameLocation":"16321:21:60","nodeType":"VariableDeclaration","scope":15077,"src":"16313:29:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15033,"name":"uint256","nodeType":"ElementaryTypeName","src":"16313:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15035,"nodeType":"VariableDeclarationStatement","src":"16313:29:60"},{"assignments":[15037],"declarations":[{"constant":false,"id":15037,"mutability":"mutable","name":"poolCreatorFeePercentage","nameLocation":"16360:24:60","nodeType":"VariableDeclaration","scope":15077,"src":"16352:32:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15036,"name":"uint256","nodeType":"ElementaryTypeName","src":"16352:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15038,"nodeType":"VariableDeclarationStatement","src":"16352:32:60"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"id":15042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15039,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15028,"src":"16399:7:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15040,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"16410:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16426:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"16410:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"src":"16399:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15070,"nodeType":"Block","src":"16615:179:60","statements":[{"expression":{"id":15062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15057,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15034,"src":"16629:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":15058,"name":"_poolProtocolYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"16653:32:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":15060,"indexExpression":{"id":15059,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15025,"src":"16686:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16653:38:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":15061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16692:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"16653:52:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"16629:76:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15063,"nodeType":"ExpressionStatement","src":"16629:76:60"},{"expression":{"id":15068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15064,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15037,"src":"16719:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":15065,"name":"_poolCreatorYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14375,"src":"16746:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15067,"indexExpression":{"id":15066,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15025,"src":"16778:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16746:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16719:64:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15069,"nodeType":"ExpressionStatement","src":"16719:64:60"}]},"id":15071,"nodeType":"IfStatement","src":"16395:399:60","trueBody":{"id":15056,"nodeType":"Block","src":"16432:177:60","statements":[{"expression":{"id":15048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15043,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15034,"src":"16446:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":15044,"name":"_poolProtocolSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"16470:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":15046,"indexExpression":{"id":15045,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15025,"src":"16502:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16470:37:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":15047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16508:13:60","memberName":"feePercentage","nodeType":"MemberAccess","referencedDeclaration":14337,"src":"16470:51:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"16446:75:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15049,"nodeType":"ExpressionStatement","src":"16446:75:60"},{"expression":{"id":15054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15050,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15037,"src":"16535:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":15051,"name":"_poolCreatorSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"16562:30:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15053,"indexExpression":{"id":15052,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15025,"src":"16593:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16562:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16535:63:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15055,"nodeType":"ExpressionStatement","src":"16535:63:60"}]}},{"expression":{"arguments":[{"id":15073,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15034,"src":"16842:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15074,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15037,"src":"16865:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15072,"name":"_computeAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15108,"src":"16811:30:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16811:79:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15032,"id":15076,"nodeType":"Return","src":"16804:86:60"}]},"id":15078,"implemented":true,"kind":"function","modifiers":[],"name":"_getAggregateFeePercentage","nameLocation":"16205:26:60","nodeType":"FunctionDefinition","parameters":{"id":15029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15025,"mutability":"mutable","name":"pool","nameLocation":"16240:4:60","nodeType":"VariableDeclaration","scope":15078,"src":"16232:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15024,"name":"address","nodeType":"ElementaryTypeName","src":"16232:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15028,"mutability":"mutable","name":"feeType","nameLocation":"16262:7:60","nodeType":"VariableDeclaration","scope":15078,"src":"16246:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"typeName":{"id":15027,"nodeType":"UserDefinedTypeName","pathNode":{"id":15026,"name":"ProtocolFeeType","nameLocations":["16246:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":14334,"src":"16246:15:60"},"referencedDeclaration":14334,"src":"16246:15:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"visibility":"internal"}],"src":"16231:39:60"},"returnParameters":{"id":15032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15031,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15078,"src":"16294:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15030,"name":"uint256","nodeType":"ElementaryTypeName","src":"16294:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16293:9:60"},"scope":15747,"src":"16196:701:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15107,"nodeType":"Block","src":"17085:882:60","statements":[{"expression":{"id":15096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15087,"name":"aggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15085,"src":"17095:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15088,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15080,"src":"17132:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":15093,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15082,"src":"17211:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15089,"name":"protocolFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15080,"src":"17168:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17190:10:60","memberName":"complement","nodeType":"MemberAccess","referencedDeclaration":7833,"src":"17168:32:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":15091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17168:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17203:7:60","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"17168:42:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17168:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17132:104:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17095:141:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15097,"nodeType":"ExpressionStatement","src":"17095:141:60"},{"expression":{"id":15105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15098,"name":"aggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15085,"src":"17869:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15099,"name":"aggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15085,"src":"17895:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15100,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"17920:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17895:43:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17894:45:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15103,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"17942:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17894:66:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17869:91:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15106,"nodeType":"ExpressionStatement","src":"17869:91:60"}]},"id":15108,"implemented":true,"kind":"function","modifiers":[],"name":"_computeAggregateFeePercentage","nameLocation":"16912:30:60","nodeType":"FunctionDefinition","parameters":{"id":15083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15080,"mutability":"mutable","name":"protocolFeePercentage","nameLocation":"16960:21:60","nodeType":"VariableDeclaration","scope":15108,"src":"16952:29:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15079,"name":"uint256","nodeType":"ElementaryTypeName","src":"16952:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15082,"mutability":"mutable","name":"poolCreatorFeePercentage","nameLocation":"16999:24:60","nodeType":"VariableDeclaration","scope":15108,"src":"16991:32:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15081,"name":"uint256","nodeType":"ElementaryTypeName","src":"16991:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16942:87:60"},"returnParameters":{"id":15086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15085,"mutability":"mutable","name":"aggregateFeePercentage","nameLocation":"17061:22:60","nodeType":"VariableDeclaration","scope":15108,"src":"17053:30:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15084,"name":"uint256","nodeType":"ElementaryTypeName","src":"17053:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17052:32:60"},"scope":15747,"src":"16903:1064:60","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15143,"nodeType":"Block","src":"18037:274:60","statements":[{"assignments":[15114],"declarations":[{"constant":false,"id":15114,"mutability":"mutable","name":"poolCreator","nameLocation":"18055:11:60","nodeType":"VariableDeclaration","scope":15143,"src":"18047:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15113,"name":"address","nodeType":"ElementaryTypeName","src":"18047:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15118,"initialValue":{"baseExpression":{"id":15115,"name":"_poolCreators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14367,"src":"18069:13:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":15117,"indexExpression":{"id":15116,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"18083:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18069:19:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"18047:41:60"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15119,"name":"poolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15114,"src":"18103:11:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18126:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18118:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15120,"name":"address","nodeType":"ElementaryTypeName","src":"18118:7:60","typeDescriptions":{}}},"id":15123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18118:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18103:25:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15130,"nodeType":"IfStatement","src":"18099:93:60","trueBody":{"id":15129,"nodeType":"Block","src":"18130:62:60","statements":[{"errorCall":{"arguments":[{"id":15126,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"18176:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15125,"name":"PoolCreatorNotRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2043,"src":"18151:24:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":15127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18151:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15128,"nodeType":"RevertStatement","src":"18144:37:60"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15131,"name":"poolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15114,"src":"18206:11:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15132,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18221:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18225:6:60","memberName":"sender","nodeType":"MemberAccess","src":"18221:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18206:25:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15142,"nodeType":"IfStatement","src":"18202:103:60","trueBody":{"id":15141,"nodeType":"Block","src":"18233:72:60","statements":[{"errorCall":{"arguments":[{"expression":{"id":15136,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18277:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18281:6:60","memberName":"sender","nodeType":"MemberAccess","src":"18277:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15138,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15110,"src":"18289:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15135,"name":"CallerIsNotPoolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2050,"src":"18254:22:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":15139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18254:40:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15140,"nodeType":"RevertStatement","src":"18247:47:60"}]}}]},"id":15144,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureCallerIsPoolCreator","nameLocation":"17982:26:60","nodeType":"FunctionDefinition","parameters":{"id":15111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15110,"mutability":"mutable","name":"pool","nameLocation":"18017:4:60","nodeType":"VariableDeclaration","scope":15144,"src":"18009:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15109,"name":"address","nodeType":"ElementaryTypeName","src":"18009:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18008:14:60"},"returnParameters":{"id":15112,"nodeType":"ParameterList","parameters":[],"src":"18037:0:60"},"scope":15747,"src":"17973:338:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15167,"nodeType":"Block","src":"18429:87:60","statements":[{"expression":{"id":15160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15155,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15151,"src":"18439:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15158,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15146,"src":"18469:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15156,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"18448:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18455:13:60","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"18448:20:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":15159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18448:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"18439:35:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":15161,"nodeType":"ExpressionStatement","src":"18439:35:60"},{"expression":{"id":15165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15162,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15153,"src":"18484:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":15163,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15151,"src":"18496:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":15164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18503:6:60","memberName":"length","nodeType":"MemberAccess","src":"18496:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18484:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15166,"nodeType":"ExpressionStatement","src":"18484:25:60"}]},"id":15168,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolTokensAndCount","nameLocation":"18326:22:60","nodeType":"FunctionDefinition","parameters":{"id":15147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15146,"mutability":"mutable","name":"pool","nameLocation":"18357:4:60","nodeType":"VariableDeclaration","scope":15168,"src":"18349:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15145,"name":"address","nodeType":"ElementaryTypeName","src":"18349:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18348:14:60"},"returnParameters":{"id":15154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15151,"mutability":"mutable","name":"tokens","nameLocation":"18402:6:60","nodeType":"VariableDeclaration","scope":15168,"src":"18386:22:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":15149,"nodeType":"UserDefinedTypeName","pathNode":{"id":15148,"name":"IERC20","nameLocations":["18386:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18386:6:60"},"referencedDeclaration":39274,"src":"18386:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":15150,"nodeType":"ArrayTypeName","src":"18386:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":15153,"mutability":"mutable","name":"numTokens","nameLocation":"18418:9:60","nodeType":"VariableDeclaration","scope":15168,"src":"18410:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15152,"name":"uint256","nodeType":"ElementaryTypeName","src":"18410:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18385:43:60"},"scope":15747,"src":"18317:199:60","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[2152],"body":{"id":15226,"nodeType":"Block","src":"18995:1140:60","statements":[{"expression":{"id":15188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15184,"name":"_poolCreators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14367,"src":"19005:13:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":15186,"indexExpression":{"id":15185,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"19019:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19005:19:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15187,"name":"poolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15173,"src":"19027:11:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19005:33:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15189,"nodeType":"ExpressionStatement","src":"19005:33:60"},{"expression":{"id":15195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15190,"name":"aggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15180,"src":"19138:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":15191,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"19167:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":15193,"name":"_globalProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14351,"src":"19191:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19167:56:60","trueExpression":{"hexValue":"30","id":15192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19187:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19138:85:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15196,"nodeType":"ExpressionStatement","src":"19138:85:60"},{"expression":{"id":15202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15197,"name":"aggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15182,"src":"19233:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":15198,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"19263:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":15200,"name":"_globalProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14353,"src":"19287:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19263:57:60","trueExpression":{"hexValue":"30","id":15199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19283:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19233:87:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15203,"nodeType":"ExpressionStatement","src":"19233:87:60"},{"expression":{"id":15213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15204,"name":"_poolProtocolSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"19768:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":15206,"indexExpression":{"id":15205,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"19800:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19768:37:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15208,"name":"aggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15180,"src":"19851:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19878:8:60","memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":43070,"src":"19851:35:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":15210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19851:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":15211,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"19914:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15207,"name":"PoolFeeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14340,"src":"19808:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolFeeConfig_$14340_storage_ptr_$","typeString":"type(struct ProtocolFeeController.PoolFeeConfig storage pointer)"}},"id":15212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["19836:13:60","19902:10:60"],"names":["feePercentage","isOverride"],"nodeType":"FunctionCall","src":"19808:134:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"src":"19768:174:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":15214,"nodeType":"ExpressionStatement","src":"19768:174:60"},{"expression":{"id":15224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15215,"name":"_poolProtocolYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"19952:32:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":15217,"indexExpression":{"id":15216,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15171,"src":"19985:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19952:38:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15219,"name":"aggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15182,"src":"20036:27:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20064:8:60","memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":43070,"src":"20036:36:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":15221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20036:38:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":15222,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"20100:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15218,"name":"PoolFeeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14340,"src":"19993:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolFeeConfig_$14340_storage_ptr_$","typeString":"type(struct ProtocolFeeController.PoolFeeConfig storage pointer)"}},"id":15223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["20021:13:60","20088:10:60"],"names":["feePercentage","isOverride"],"nodeType":"FunctionCall","src":"19993:135:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"src":"19952:176:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":15225,"nodeType":"ExpressionStatement","src":"19952:176:60"}]},"documentation":{"id":15169,"nodeType":"StructuredDocumentation","src":"18740:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"77ff76e7","id":15227,"implemented":true,"kind":"function","modifiers":[{"id":15178,"kind":"modifierInvocation","modifierName":{"id":15177,"name":"onlyVault","nameLocations":["18903:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"18903:9:60"},"nodeType":"ModifierInvocation","src":"18903:9:60"}],"name":"registerPool","nameLocation":"18792:12:60","nodeType":"FunctionDefinition","parameters":{"id":15176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15171,"mutability":"mutable","name":"pool","nameLocation":"18822:4:60","nodeType":"VariableDeclaration","scope":15227,"src":"18814:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15170,"name":"address","nodeType":"ElementaryTypeName","src":"18814:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15173,"mutability":"mutable","name":"poolCreator","nameLocation":"18844:11:60","nodeType":"VariableDeclaration","scope":15227,"src":"18836:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15172,"name":"address","nodeType":"ElementaryTypeName","src":"18836:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15175,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"18870:17:60","nodeType":"VariableDeclaration","scope":15227,"src":"18865:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15174,"name":"bool","nodeType":"ElementaryTypeName","src":"18865:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18804:89:60"},"returnParameters":{"id":15183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15180,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"18930:26:60","nodeType":"VariableDeclaration","scope":15227,"src":"18922:34:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15179,"name":"uint256","nodeType":"ElementaryTypeName","src":"18922:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15182,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"18966:27:60","nodeType":"VariableDeclaration","scope":15227,"src":"18958:35:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15181,"name":"uint256","nodeType":"ElementaryTypeName","src":"18958:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18921:73:60"},"scope":15747,"src":"18783:1352:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2158],"body":{"id":15246,"nodeType":"Block","src":"20349:164:60","statements":[{"expression":{"id":15240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15238,"name":"_globalProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14351,"src":"20359:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15239,"name":"newProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15230,"src":"20394:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20359:63:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15241,"nodeType":"ExpressionStatement","src":"20359:63:60"},{"eventCall":{"arguments":[{"id":15243,"name":"newProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15230,"src":"20477:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15242,"name":"GlobalProtocolSwapFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1955,"src":"20438:38:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20438:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15245,"nodeType":"EmitStatement","src":"20433:73:60"}]},"documentation":{"id":15228,"nodeType":"StructuredDocumentation","src":"20141:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"8a3c5c69","id":15247,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15233,"name":"newProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15230,"src":"20306:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15234,"kind":"modifierInvocation","modifierName":{"id":15232,"name":"withValidSwapFee","nameLocations":["20289:16:60"],"nodeType":"IdentifierPath","referencedDeclaration":14417,"src":"20289:16:60"},"nodeType":"ModifierInvocation","src":"20289:46:60"},{"id":15236,"kind":"modifierInvocation","modifierName":{"id":15235,"name":"authenticate","nameLocations":["20336:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"20336:12:60"},"nodeType":"ModifierInvocation","src":"20336:12:60"}],"name":"setGlobalProtocolSwapFeePercentage","nameLocation":"20193:34:60","nodeType":"FunctionDefinition","parameters":{"id":15231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15230,"mutability":"mutable","name":"newProtocolSwapFeePercentage","nameLocation":"20245:28:60","nodeType":"VariableDeclaration","scope":15247,"src":"20237:36:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15229,"name":"uint256","nodeType":"ElementaryTypeName","src":"20237:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20227:52:60"},"returnParameters":{"id":15237,"nodeType":"ParameterList","parameters":[],"src":"20349:0:60"},"scope":15747,"src":"20184:329:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2164],"body":{"id":15266,"nodeType":"Block","src":"20731:168:60","statements":[{"expression":{"id":15260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15258,"name":"_globalProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14353,"src":"20741:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15259,"name":"newProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15250,"src":"20777:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20741:65:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15261,"nodeType":"ExpressionStatement","src":"20741:65:60"},{"eventCall":{"arguments":[{"id":15263,"name":"newProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15250,"src":"20862:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15262,"name":"GlobalProtocolYieldFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"20822:39:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20822:70:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15265,"nodeType":"EmitStatement","src":"20817:75:60"}]},"documentation":{"id":15248,"nodeType":"StructuredDocumentation","src":"20519:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"a93df2a4","id":15267,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15253,"name":"newProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15250,"src":"20687:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15254,"kind":"modifierInvocation","modifierName":{"id":15252,"name":"withValidYieldFee","nameLocations":["20669:17:60"],"nodeType":"IdentifierPath","referencedDeclaration":14435,"src":"20669:17:60"},"nodeType":"ModifierInvocation","src":"20669:48:60"},{"id":15256,"kind":"modifierInvocation","modifierName":{"id":15255,"name":"authenticate","nameLocations":["20718:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"20718:12:60"},"nodeType":"ModifierInvocation","src":"20718:12:60"}],"name":"setGlobalProtocolYieldFeePercentage","nameLocation":"20571:35:60","nodeType":"FunctionDefinition","parameters":{"id":15251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15250,"mutability":"mutable","name":"newProtocolYieldFeePercentage","nameLocation":"20624:29:60","nodeType":"VariableDeclaration","scope":15267,"src":"20616:37:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15249,"name":"uint256","nodeType":"ElementaryTypeName","src":"20616:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20606:53:60"},"returnParameters":{"id":15257,"nodeType":"ParameterList","parameters":[],"src":"20731:0:60"},"scope":15747,"src":"20562:337:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2172],"body":{"id":15289,"nodeType":"Block","src":"21150:87:60","statements":[{"expression":{"arguments":[{"id":15284,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"21189:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15285,"name":"newProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15272,"src":"21195:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":15286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21225:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15283,"name":"_updatePoolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15687,"src":"21160:28:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":15287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21160:70:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15288,"nodeType":"ExpressionStatement","src":"21160:70:60"}]},"documentation":{"id":15268,"nodeType":"StructuredDocumentation","src":"20905:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"fd267f39","id":15290,"implemented":true,"kind":"function","modifiers":[{"id":15275,"kind":"modifierInvocation","modifierName":{"id":15274,"name":"authenticate","nameLocations":["21069:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"21069:12:60"},"nodeType":"ModifierInvocation","src":"21069:12:60"},{"arguments":[{"id":15277,"name":"newProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15272,"src":"21099:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15278,"kind":"modifierInvocation","modifierName":{"id":15276,"name":"withValidSwapFee","nameLocations":["21082:16:60"],"nodeType":"IdentifierPath","referencedDeclaration":14417,"src":"21082:16:60"},"nodeType":"ModifierInvocation","src":"21082:46:60"},{"arguments":[{"id":15280,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15270,"src":"21144:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":15281,"kind":"modifierInvocation","modifierName":{"id":15279,"name":"withLatestFees","nameLocations":["21129:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":14459,"src":"21129:14:60"},"nodeType":"ModifierInvocation","src":"21129:20:60"}],"name":"setProtocolSwapFeePercentage","nameLocation":"20957:28:60","nodeType":"FunctionDefinition","parameters":{"id":15273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15270,"mutability":"mutable","name":"pool","nameLocation":"21003:4:60","nodeType":"VariableDeclaration","scope":15290,"src":"20995:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15269,"name":"address","nodeType":"ElementaryTypeName","src":"20995:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15272,"mutability":"mutable","name":"newProtocolSwapFeePercentage","nameLocation":"21025:28:60","nodeType":"VariableDeclaration","scope":15290,"src":"21017:36:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15271,"name":"uint256","nodeType":"ElementaryTypeName","src":"21017:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20985:74:60"},"returnParameters":{"id":15282,"nodeType":"ParameterList","parameters":[],"src":"21150:0:60"},"scope":15747,"src":"20948:289:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2180],"body":{"id":15312,"nodeType":"Block","src":"21492:89:60","statements":[{"expression":{"arguments":[{"id":15307,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15293,"src":"21532:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15308,"name":"newProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15295,"src":"21538:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":15309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21569:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15306,"name":"_updatePoolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15725,"src":"21502:29:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,bool)"}},"id":15310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21502:72:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15311,"nodeType":"ExpressionStatement","src":"21502:72:60"}]},"documentation":{"id":15291,"nodeType":"StructuredDocumentation","src":"21243:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"abaa3356","id":15313,"implemented":true,"kind":"function","modifiers":[{"id":15298,"kind":"modifierInvocation","modifierName":{"id":15297,"name":"authenticate","nameLocations":["21409:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"21409:12:60"},"nodeType":"ModifierInvocation","src":"21409:12:60"},{"arguments":[{"id":15300,"name":"newProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15295,"src":"21440:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15301,"kind":"modifierInvocation","modifierName":{"id":15299,"name":"withValidYieldFee","nameLocations":["21422:17:60"],"nodeType":"IdentifierPath","referencedDeclaration":14435,"src":"21422:17:60"},"nodeType":"ModifierInvocation","src":"21422:48:60"},{"arguments":[{"id":15303,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15293,"src":"21486:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":15304,"kind":"modifierInvocation","modifierName":{"id":15302,"name":"withLatestFees","nameLocations":["21471:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":14459,"src":"21471:14:60"},"nodeType":"ModifierInvocation","src":"21471:20:60"}],"name":"setProtocolYieldFeePercentage","nameLocation":"21295:29:60","nodeType":"FunctionDefinition","parameters":{"id":15296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15293,"mutability":"mutable","name":"pool","nameLocation":"21342:4:60","nodeType":"VariableDeclaration","scope":15313,"src":"21334:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15292,"name":"address","nodeType":"ElementaryTypeName","src":"21334:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15295,"mutability":"mutable","name":"newProtocolYieldFeePercentage","nameLocation":"21364:29:60","nodeType":"VariableDeclaration","scope":15313,"src":"21356:37:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15294,"name":"uint256","nodeType":"ElementaryTypeName","src":"21356:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21324:75:60"},"returnParameters":{"id":15305,"nodeType":"ParameterList","parameters":[],"src":"21492:0:60"},"scope":15747,"src":"21286:295:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2188],"body":{"id":15337,"nodeType":"Block","src":"21851:103:60","statements":[{"expression":{"arguments":[{"id":15331,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15316,"src":"21890:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15332,"name":"poolCreatorSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15318,"src":"21896:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":15333,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"21926:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21942:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"21926:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}],"id":15330,"name":"_setPoolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15425,"src":"21861:28:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_enum$_ProtocolFeeType_$14334_$returns$__$","typeString":"function (address,uint256,enum ProtocolFeeController.ProtocolFeeType)"}},"id":15335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21861:86:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15336,"nodeType":"ExpressionStatement","src":"21861:86:60"}]},"documentation":{"id":15314,"nodeType":"StructuredDocumentation","src":"21587:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"1377c16c","id":15338,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15321,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15316,"src":"21770:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":15322,"kind":"modifierInvocation","modifierName":{"id":15320,"name":"onlyPoolCreator","nameLocations":["21754:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":14399,"src":"21754:15:60"},"nodeType":"ModifierInvocation","src":"21754:21:60"},{"arguments":[{"id":15324,"name":"poolCreatorSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15318,"src":"21800:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15325,"kind":"modifierInvocation","modifierName":{"id":15323,"name":"withValidPoolCreatorFee","nameLocations":["21776:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":14449,"src":"21776:23:60"},"nodeType":"ModifierInvocation","src":"21776:53:60"},{"arguments":[{"id":15327,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15316,"src":"21845:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":15328,"kind":"modifierInvocation","modifierName":{"id":15326,"name":"withLatestFees","nameLocations":["21830:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":14459,"src":"21830:14:60"},"nodeType":"ModifierInvocation","src":"21830:20:60"}],"name":"setPoolCreatorSwapFeePercentage","nameLocation":"21639:31:60","nodeType":"FunctionDefinition","parameters":{"id":15319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15316,"mutability":"mutable","name":"pool","nameLocation":"21688:4:60","nodeType":"VariableDeclaration","scope":15338,"src":"21680:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15315,"name":"address","nodeType":"ElementaryTypeName","src":"21680:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15318,"mutability":"mutable","name":"poolCreatorSwapFeePercentage","nameLocation":"21710:28:60","nodeType":"VariableDeclaration","scope":15338,"src":"21702:36:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15317,"name":"uint256","nodeType":"ElementaryTypeName","src":"21702:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21670:74:60"},"returnParameters":{"id":15329,"nodeType":"ParameterList","parameters":[],"src":"21851:0:60"},"scope":15747,"src":"21630:324:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2196],"body":{"id":15362,"nodeType":"Block","src":"22227:105:60","statements":[{"expression":{"arguments":[{"id":15356,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15341,"src":"22266:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15357,"name":"poolCreatorYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15343,"src":"22272:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":15358,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"22303:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22319:5:60","memberName":"YIELD","nodeType":"MemberAccess","referencedDeclaration":14333,"src":"22303:21:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}],"id":15355,"name":"_setPoolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15425,"src":"22237:28:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_enum$_ProtocolFeeType_$14334_$returns$__$","typeString":"function (address,uint256,enum ProtocolFeeController.ProtocolFeeType)"}},"id":15360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22237:88:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15361,"nodeType":"ExpressionStatement","src":"22237:88:60"}]},"documentation":{"id":15339,"nodeType":"StructuredDocumentation","src":"21960:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"3af52712","id":15363,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15346,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15341,"src":"22145:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":15347,"kind":"modifierInvocation","modifierName":{"id":15345,"name":"onlyPoolCreator","nameLocations":["22129:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":14399,"src":"22129:15:60"},"nodeType":"ModifierInvocation","src":"22129:21:60"},{"arguments":[{"id":15349,"name":"poolCreatorYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15343,"src":"22175:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15350,"kind":"modifierInvocation","modifierName":{"id":15348,"name":"withValidPoolCreatorFee","nameLocations":["22151:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":14449,"src":"22151:23:60"},"nodeType":"ModifierInvocation","src":"22151:54:60"},{"arguments":[{"id":15352,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15341,"src":"22221:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":15353,"kind":"modifierInvocation","modifierName":{"id":15351,"name":"withLatestFees","nameLocations":["22206:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":14459,"src":"22206:14:60"},"nodeType":"ModifierInvocation","src":"22206:20:60"}],"name":"setPoolCreatorYieldFeePercentage","nameLocation":"22012:32:60","nodeType":"FunctionDefinition","parameters":{"id":15344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15341,"mutability":"mutable","name":"pool","nameLocation":"22062:4:60","nodeType":"VariableDeclaration","scope":15363,"src":"22054:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15340,"name":"address","nodeType":"ElementaryTypeName","src":"22054:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15343,"mutability":"mutable","name":"poolCreatorYieldFeePercentage","nameLocation":"22084:29:60","nodeType":"VariableDeclaration","scope":15363,"src":"22076:37:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15342,"name":"uint256","nodeType":"ElementaryTypeName","src":"22076:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22044:75:60"},"returnParameters":{"id":15354,"nodeType":"ParameterList","parameters":[],"src":"22227:0:60"},"scope":15747,"src":"22003:329:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15424,"nodeType":"Block","src":"22488:900:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"id":15376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15373,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15370,"src":"22584:7:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15374,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"22595:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22611:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"22595:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"src":"22584:31:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15422,"nodeType":"Block","src":"23000:382:60","statements":[{"expression":{"id":15404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15400,"name":"_poolCreatorYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14375,"src":"23014:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15402,"indexExpression":{"id":15401,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"23046:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23014:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15403,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"23054:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23014:64:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15405,"nodeType":"ExpressionStatement","src":"23014:64:60"},{"expression":{"arguments":[{"id":15409,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"23221:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15411,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"23254:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15412,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"23260:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23276:5:60","memberName":"YIELD","nodeType":"MemberAccess","referencedDeclaration":14333,"src":"23260:21:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}],"id":15410,"name":"_getAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15078,"src":"23227:26:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_ProtocolFeeType_$14334_$returns$_t_uint256_$","typeString":"function (address,enum ProtocolFeeController.ProtocolFeeType) view returns (uint256)"}},"id":15414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23227:55:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15406,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"23180:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23187:33:60","memberName":"updateAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3037,"src":"23180:40:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":15415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23180:103:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15416,"nodeType":"ExpressionStatement","src":"23180:103:60"},{"eventCall":{"arguments":[{"id":15418,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"23340:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15419,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"23346:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15417,"name":"PoolCreatorYieldFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"23303:36:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23303:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15421,"nodeType":"EmitStatement","src":"23298:73:60"}]},"id":15423,"nodeType":"IfStatement","src":"22580:802:60","trueBody":{"id":15399,"nodeType":"Block","src":"22617:377:60","statements":[{"expression":{"id":15381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15377,"name":"_poolCreatorSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"22631:30:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15379,"indexExpression":{"id":15378,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"22662:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22631:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15380,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"22670:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22631:63:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15382,"nodeType":"ExpressionStatement","src":"22631:63:60"},{"expression":{"arguments":[{"id":15386,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"22835:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15388,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"22868:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15389,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"22874:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22890:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"22874:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}],"id":15387,"name":"_getAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15078,"src":"22841:26:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_ProtocolFeeType_$14334_$returns$_t_uint256_$","typeString":"function (address,enum ProtocolFeeController.ProtocolFeeType) view returns (uint256)"}},"id":15391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22841:54:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15383,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"22795:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22802:32:60","memberName":"updateAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3029,"src":"22795:39:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":15392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22795:101:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15393,"nodeType":"ExpressionStatement","src":"22795:101:60"},{"eventCall":{"arguments":[{"id":15395,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15365,"src":"22952:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15396,"name":"poolCreatorFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15367,"src":"22958:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15394,"name":"PoolCreatorSwapFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1981,"src":"22916:35:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22916:67:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15398,"nodeType":"EmitStatement","src":"22911:72:60"}]}}]},"id":15425,"implemented":true,"kind":"function","modifiers":[],"name":"_setPoolCreatorFeePercentage","nameLocation":"22347:28:60","nodeType":"FunctionDefinition","parameters":{"id":15371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15365,"mutability":"mutable","name":"pool","nameLocation":"22393:4:60","nodeType":"VariableDeclaration","scope":15425,"src":"22385:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15364,"name":"address","nodeType":"ElementaryTypeName","src":"22385:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15367,"mutability":"mutable","name":"poolCreatorFeePercentage","nameLocation":"22415:24:60","nodeType":"VariableDeclaration","scope":15425,"src":"22407:32:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15366,"name":"uint256","nodeType":"ElementaryTypeName","src":"22407:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15370,"mutability":"mutable","name":"feeType","nameLocation":"22465:7:60","nodeType":"VariableDeclaration","scope":15425,"src":"22449:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"},"typeName":{"id":15369,"nodeType":"UserDefinedTypeName","pathNode":{"id":15368,"name":"ProtocolFeeType","nameLocations":["22449:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":14334,"src":"22449:15:60"},"referencedDeclaration":14334,"src":"22449:15:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}},"visibility":"internal"}],"src":"22375:103:60"},"returnParameters":{"id":15372,"nodeType":"ParameterList","parameters":[],"src":"22488:0:60"},"scope":15747,"src":"22338:1050:60","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2204],"body":{"id":15471,"nodeType":"Block","src":"23522:258:60","statements":[{"assignments":[15439,15441],"declarations":[{"constant":false,"id":15439,"mutability":"mutable","name":"poolTokens","nameLocation":"23549:10:60","nodeType":"VariableDeclaration","scope":15471,"src":"23533:26:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":15437,"nodeType":"UserDefinedTypeName","pathNode":{"id":15436,"name":"IERC20","nameLocations":["23533:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"23533:6:60"},"referencedDeclaration":39274,"src":"23533:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":15438,"nodeType":"ArrayTypeName","src":"23533:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":15441,"mutability":"mutable","name":"numTokens","nameLocation":"23569:9:60","nodeType":"VariableDeclaration","scope":15471,"src":"23561:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15440,"name":"uint256","nodeType":"ElementaryTypeName","src":"23561:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15445,"initialValue":{"arguments":[{"id":15443,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15428,"src":"23605:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15442,"name":"_getPoolTokensAndCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15168,"src":"23582:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address) view returns (contract IERC20[] memory,uint256)"}},"id":15444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23582:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"23532:78:60"},{"body":{"id":15469,"nodeType":"Block","src":"23661:113:60","statements":[{"assignments":[15458],"declarations":[{"constant":false,"id":15458,"mutability":"mutable","name":"token","nameLocation":"23682:5:60","nodeType":"VariableDeclaration","scope":15469,"src":"23675:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":15457,"nodeType":"UserDefinedTypeName","pathNode":{"id":15456,"name":"IERC20","nameLocations":["23675:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"23675:6:60"},"referencedDeclaration":39274,"src":"23675:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15462,"initialValue":{"baseExpression":{"id":15459,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15439,"src":"23690:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":15461,"indexExpression":{"id":15460,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15447,"src":"23701:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23690:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"23675:28:60"},{"expression":{"arguments":[{"id":15464,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15428,"src":"23740:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15465,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15430,"src":"23746:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15466,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15458,"src":"23757:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":15463,"name":"_withdrawProtocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15545,"src":"23718:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_contract$_IERC20_$39274_$returns$__$","typeString":"function (address,address,contract IERC20)"}},"id":15467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23718:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15468,"nodeType":"ExpressionStatement","src":"23718:45:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15450,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15447,"src":"23641:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15451,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15441,"src":"23645:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23641:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15470,"initializationExpression":{"assignments":[15447],"declarations":[{"constant":false,"id":15447,"mutability":"mutable","name":"i","nameLocation":"23634:1:60","nodeType":"VariableDeclaration","scope":15470,"src":"23626:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15446,"name":"uint256","nodeType":"ElementaryTypeName","src":"23626:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15449,"initialValue":{"hexValue":"30","id":15448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23638:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23626:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"23656:3:60","subExpression":{"id":15453,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15447,"src":"23658:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15455,"nodeType":"ExpressionStatement","src":"23656:3:60"},"nodeType":"ForStatement","src":"23621:153:60"}]},"documentation":{"id":15426,"nodeType":"StructuredDocumentation","src":"23394:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"cf7b287f","id":15472,"implemented":true,"kind":"function","modifiers":[{"id":15433,"kind":"modifierInvocation","modifierName":{"id":15432,"name":"authenticate","nameLocations":["23509:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"23509:12:60"},"nodeType":"ModifierInvocation","src":"23509:12:60"}],"name":"withdrawProtocolFees","nameLocation":"23446:20:60","nodeType":"FunctionDefinition","parameters":{"id":15431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15428,"mutability":"mutable","name":"pool","nameLocation":"23475:4:60","nodeType":"VariableDeclaration","scope":15472,"src":"23467:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15427,"name":"address","nodeType":"ElementaryTypeName","src":"23467:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15430,"mutability":"mutable","name":"recipient","nameLocation":"23489:9:60","nodeType":"VariableDeclaration","scope":15472,"src":"23481:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15429,"name":"address","nodeType":"ElementaryTypeName","src":"23481:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23466:33:60"},"returnParameters":{"id":15434,"nodeType":"ParameterList","parameters":[],"src":"23522:0:60"},"scope":15747,"src":"23437:343:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2215],"body":{"id":15498,"nodeType":"Block","src":"23936:217:60","statements":[{"expression":{"arguments":[{"id":15488,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15475,"src":"24079:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15489,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"24085:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"expression":{"id":15485,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"24039:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24046:32:60","memberName":"getPoolTokenCountAndIndexOfToken","nodeType":"MemberAccess","referencedDeclaration":4298,"src":"24039:39:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_contract$_IERC20_$39274_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,contract IERC20) view external returns (uint256,uint256)"}},"id":15490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24039:52:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":15491,"nodeType":"ExpressionStatement","src":"24039:52:60"},{"expression":{"arguments":[{"id":15493,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15475,"src":"24123:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15494,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15477,"src":"24129:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15495,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"24140:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":15492,"name":"_withdrawProtocolFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15545,"src":"24101:21:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_contract$_IERC20_$39274_$returns$__$","typeString":"function (address,address,contract IERC20)"}},"id":15496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24101:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15497,"nodeType":"ExpressionStatement","src":"24101:45:60"}]},"documentation":{"id":15473,"nodeType":"StructuredDocumentation","src":"23786:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"b53a70b2","id":15499,"implemented":true,"kind":"function","modifiers":[{"id":15483,"kind":"modifierInvocation","modifierName":{"id":15482,"name":"authenticate","nameLocations":["23923:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"23923:12:60"},"nodeType":"ModifierInvocation","src":"23923:12:60"}],"name":"withdrawProtocolFeesForToken","nameLocation":"23838:28:60","nodeType":"FunctionDefinition","parameters":{"id":15481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15475,"mutability":"mutable","name":"pool","nameLocation":"23875:4:60","nodeType":"VariableDeclaration","scope":15499,"src":"23867:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15474,"name":"address","nodeType":"ElementaryTypeName","src":"23867:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15477,"mutability":"mutable","name":"recipient","nameLocation":"23889:9:60","nodeType":"VariableDeclaration","scope":15499,"src":"23881:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15476,"name":"address","nodeType":"ElementaryTypeName","src":"23881:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15480,"mutability":"mutable","name":"token","nameLocation":"23907:5:60","nodeType":"VariableDeclaration","scope":15499,"src":"23900:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":15479,"nodeType":"UserDefinedTypeName","pathNode":{"id":15478,"name":"IERC20","nameLocations":["23900:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"23900:6:60"},"referencedDeclaration":39274,"src":"23900:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"23866:47:60"},"returnParameters":{"id":15484,"nodeType":"ParameterList","parameters":[],"src":"23936:0:60"},"scope":15747,"src":"23829:324:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15544,"nodeType":"Block","src":"24246:316:60","statements":[{"assignments":[15510],"declarations":[{"constant":false,"id":15510,"mutability":"mutable","name":"amountToWithdraw","nameLocation":"24264:16:60","nodeType":"VariableDeclaration","scope":15544,"src":"24256:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15509,"name":"uint256","nodeType":"ElementaryTypeName","src":"24256:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15516,"initialValue":{"baseExpression":{"baseExpression":{"id":15511,"name":"_protocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14382,"src":"24283:19:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":15513,"indexExpression":{"id":15512,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15501,"src":"24303:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24283:25:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":15515,"indexExpression":{"id":15514,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15506,"src":"24309:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24283:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24256:59:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15517,"name":"amountToWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15510,"src":"24329:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24348:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24329:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15543,"nodeType":"IfStatement","src":"24325:231:60","trueBody":{"id":15542,"nodeType":"Block","src":"24351:205:60","statements":[{"expression":{"id":15526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":15520,"name":"_protocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14382,"src":"24365:19:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":15523,"indexExpression":{"id":15521,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15501,"src":"24385:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24365:25:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":15524,"indexExpression":{"id":15522,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15506,"src":"24391:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24365:32:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":15525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24400:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24365:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15527,"nodeType":"ExpressionStatement","src":"24365:36:60"},{"expression":{"arguments":[{"id":15531,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"24434:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15532,"name":"amountToWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15510,"src":"24445:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15528,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15506,"src":"24415:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":15530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24421:12:60","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":39386,"src":"24415:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":15533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24415:47:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15534,"nodeType":"ExpressionStatement","src":"24415:47:60"},{"eventCall":{"arguments":[{"id":15536,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15501,"src":"24504:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15537,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15506,"src":"24510:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":15538,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15503,"src":"24517:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15539,"name":"amountToWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15510,"src":"24528:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15535,"name":"ProtocolFeesWithdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"24482:21:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,address,uint256)"}},"id":15540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24482:63:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15541,"nodeType":"EmitStatement","src":"24477:68:60"}]}}]},"id":15545,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawProtocolFees","nameLocation":"24168:21:60","nodeType":"FunctionDefinition","parameters":{"id":15507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15501,"mutability":"mutable","name":"pool","nameLocation":"24198:4:60","nodeType":"VariableDeclaration","scope":15545,"src":"24190:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15500,"name":"address","nodeType":"ElementaryTypeName","src":"24190:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15503,"mutability":"mutable","name":"recipient","nameLocation":"24212:9:60","nodeType":"VariableDeclaration","scope":15545,"src":"24204:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15502,"name":"address","nodeType":"ElementaryTypeName","src":"24204:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15506,"mutability":"mutable","name":"token","nameLocation":"24230:5:60","nodeType":"VariableDeclaration","scope":15545,"src":"24223:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":15505,"nodeType":"UserDefinedTypeName","pathNode":{"id":15504,"name":"IERC20","nameLocations":["24223:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"24223:6:60"},"referencedDeclaration":39274,"src":"24223:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"24189:47:60"},"returnParameters":{"id":15508,"nodeType":"ParameterList","parameters":[],"src":"24246:0:60"},"scope":15747,"src":"24159:403:60","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2223],"body":{"id":15561,"nodeType":"Block","src":"24708:58:60","statements":[{"expression":{"arguments":[{"id":15557,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15548,"src":"24743:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15558,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15550,"src":"24749:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15556,"name":"_withdrawPoolCreatorFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15649,"src":"24718:24:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":15559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24718:41:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15560,"nodeType":"ExpressionStatement","src":"24718:41:60"}]},"documentation":{"id":15546,"nodeType":"StructuredDocumentation","src":"24568:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"f7061445","id":15562,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":15553,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15548,"src":"24702:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":15554,"kind":"modifierInvocation","modifierName":{"id":15552,"name":"onlyPoolCreator","nameLocations":["24686:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":14399,"src":"24686:15:60"},"nodeType":"ModifierInvocation","src":"24686:21:60"}],"name":"withdrawPoolCreatorFees","nameLocation":"24620:23:60","nodeType":"FunctionDefinition","parameters":{"id":15551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15548,"mutability":"mutable","name":"pool","nameLocation":"24652:4:60","nodeType":"VariableDeclaration","scope":15562,"src":"24644:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15547,"name":"address","nodeType":"ElementaryTypeName","src":"24644:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15550,"mutability":"mutable","name":"recipient","nameLocation":"24666:9:60","nodeType":"VariableDeclaration","scope":15562,"src":"24658:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15549,"name":"address","nodeType":"ElementaryTypeName","src":"24658:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24643:33:60"},"returnParameters":{"id":15555,"nodeType":"ParameterList","parameters":[],"src":"24708:0:60"},"scope":15747,"src":"24611:155:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2229],"body":{"id":15575,"nodeType":"Block","src":"24871:68:60","statements":[{"expression":{"arguments":[{"id":15569,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15565,"src":"24906:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":15570,"name":"_poolCreators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14367,"src":"24912:13:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":15572,"indexExpression":{"id":15571,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15565,"src":"24926:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24912:19:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15568,"name":"_withdrawPoolCreatorFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15649,"src":"24881:24:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":15573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24881:51:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15574,"nodeType":"ExpressionStatement","src":"24881:51:60"}]},"documentation":{"id":15563,"nodeType":"StructuredDocumentation","src":"24772:38:60","text":"@inheritdoc IProtocolFeeController"},"functionSelector":"52f125f0","id":15576,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawPoolCreatorFees","nameLocation":"24824:23:60","nodeType":"FunctionDefinition","parameters":{"id":15566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15565,"mutability":"mutable","name":"pool","nameLocation":"24856:4:60","nodeType":"VariableDeclaration","scope":15576,"src":"24848:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15564,"name":"address","nodeType":"ElementaryTypeName","src":"24848:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24847:14:60"},"returnParameters":{"id":15567,"nodeType":"ParameterList","parameters":[],"src":"24871:0:60"},"scope":15747,"src":"24815:124:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15648,"nodeType":"Block","src":"25020:541:60","statements":[{"assignments":[15587,15589],"declarations":[{"constant":false,"id":15587,"mutability":"mutable","name":"poolTokens","nameLocation":"25047:10:60","nodeType":"VariableDeclaration","scope":15648,"src":"25031:26:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":15585,"nodeType":"UserDefinedTypeName","pathNode":{"id":15584,"name":"IERC20","nameLocations":["25031:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"25031:6:60"},"referencedDeclaration":39274,"src":"25031:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":15586,"nodeType":"ArrayTypeName","src":"25031:8:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":15589,"mutability":"mutable","name":"numTokens","nameLocation":"25067:9:60","nodeType":"VariableDeclaration","scope":15648,"src":"25059:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15588,"name":"uint256","nodeType":"ElementaryTypeName","src":"25059:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15593,"initialValue":{"arguments":[{"id":15591,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15578,"src":"25103:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15590,"name":"_getPoolTokensAndCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15168,"src":"25080:22:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address) view returns (contract IERC20[] memory,uint256)"}},"id":15592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25080:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"25030:78:60"},{"body":{"id":15646,"nodeType":"Block","src":"25159:396:60","statements":[{"assignments":[15606],"declarations":[{"constant":false,"id":15606,"mutability":"mutable","name":"token","nameLocation":"25180:5:60","nodeType":"VariableDeclaration","scope":15646,"src":"25173:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":15605,"nodeType":"UserDefinedTypeName","pathNode":{"id":15604,"name":"IERC20","nameLocations":["25173:6:60"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"25173:6:60"},"referencedDeclaration":39274,"src":"25173:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15610,"initialValue":{"baseExpression":{"id":15607,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15587,"src":"25188:10:60","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":15609,"indexExpression":{"id":15608,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15595,"src":"25199:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25188:13:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"25173:28:60"},{"assignments":[15612],"declarations":[{"constant":false,"id":15612,"mutability":"mutable","name":"amountToWithdraw","nameLocation":"25224:16:60","nodeType":"VariableDeclaration","scope":15646,"src":"25216:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15611,"name":"uint256","nodeType":"ElementaryTypeName","src":"25216:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15618,"initialValue":{"baseExpression":{"baseExpression":{"id":15613,"name":"_poolCreatorFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"25243:22:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":15615,"indexExpression":{"id":15614,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15578,"src":"25266:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25243:28:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":15617,"indexExpression":{"id":15616,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15606,"src":"25272:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25243:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25216:62:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15619,"name":"amountToWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15612,"src":"25296:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25315:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25296:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15645,"nodeType":"IfStatement","src":"25292:253:60","trueBody":{"id":15644,"nodeType":"Block","src":"25318:227:60","statements":[{"expression":{"id":15628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":15622,"name":"_poolCreatorFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"25336:22:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$_$","typeString":"mapping(address => mapping(contract IERC20 => uint256))"}},"id":15625,"indexExpression":{"id":15623,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15578,"src":"25359:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25336:28:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":15626,"indexExpression":{"id":15624,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15606,"src":"25365:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"25336:35:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":15627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25374:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25336:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15629,"nodeType":"ExpressionStatement","src":"25336:39:60"},{"expression":{"arguments":[{"id":15633,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15580,"src":"25412:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15634,"name":"amountToWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15612,"src":"25423:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15630,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15606,"src":"25393:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":15632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25399:12:60","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":39386,"src":"25393:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":15635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25393:47:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15636,"nodeType":"ExpressionStatement","src":"25393:47:60"},{"eventCall":{"arguments":[{"id":15638,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15578,"src":"25489:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15639,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15606,"src":"25495:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":15640,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15580,"src":"25502:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15641,"name":"amountToWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15612,"src":"25513:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15637,"name":"PoolCreatorFeesWithdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"25464:24:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,address,uint256)"}},"id":15642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25464:66:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15643,"nodeType":"EmitStatement","src":"25459:71:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15598,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15595,"src":"25139:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15599,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15589,"src":"25143:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25139:13:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15647,"initializationExpression":{"assignments":[15595],"declarations":[{"constant":false,"id":15595,"mutability":"mutable","name":"i","nameLocation":"25132:1:60","nodeType":"VariableDeclaration","scope":15647,"src":"25124:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15594,"name":"uint256","nodeType":"ElementaryTypeName","src":"25124:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15597,"initialValue":{"hexValue":"30","id":15596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25136:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"25124:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"25154:3:60","subExpression":{"id":15601,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15595,"src":"25156:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15603,"nodeType":"ExpressionStatement","src":"25154:3:60"},"nodeType":"ForStatement","src":"25119:436:60"}]},"id":15649,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawPoolCreatorFees","nameLocation":"24954:24:60","nodeType":"FunctionDefinition","parameters":{"id":15581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15578,"mutability":"mutable","name":"pool","nameLocation":"24987:4:60","nodeType":"VariableDeclaration","scope":15649,"src":"24979:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15577,"name":"address","nodeType":"ElementaryTypeName","src":"24979:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15580,"mutability":"mutable","name":"recipient","nameLocation":"25001:9:60","nodeType":"VariableDeclaration","scope":15649,"src":"24993:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15579,"name":"address","nodeType":"ElementaryTypeName","src":"24993:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24978:33:60"},"returnParameters":{"id":15582,"nodeType":"ParameterList","parameters":[],"src":"25020:0:60"},"scope":15747,"src":"24945:616:60","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":15686,"nodeType":"Block","src":"25801:771:60","statements":[{"expression":{"id":15668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15659,"name":"_poolProtocolSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"26116:31:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":15661,"indexExpression":{"id":15660,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15652,"src":"26148:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26116:37:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15663,"name":"newProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15654,"src":"26199:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26228:8:60","memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":43070,"src":"26199:37:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":15665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26199:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":15666,"name":"isOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15656,"src":"26264:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15662,"name":"PoolFeeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14340,"src":"26156:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolFeeConfig_$14340_storage_ptr_$","typeString":"type(struct ProtocolFeeController.PoolFeeConfig storage pointer)"}},"id":15667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["26184:13:60","26252:10:60"],"names":["feePercentage","isOverride"],"nodeType":"FunctionCall","src":"26156:129:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"src":"26116:169:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":15669,"nodeType":"ExpressionStatement","src":"26116:169:60"},{"expression":{"arguments":[{"id":15673,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15652,"src":"26420:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15675,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15652,"src":"26453:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15676,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"26459:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26475:4:60","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"26459:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}],"id":15674,"name":"_getAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15078,"src":"26426:26:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_ProtocolFeeType_$14334_$returns$_t_uint256_$","typeString":"function (address,enum ProtocolFeeController.ProtocolFeeType) view returns (uint256)"}},"id":15678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26426:54:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15670,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"26380:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26387:32:60","memberName":"updateAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3029,"src":"26380:39:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":15679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26380:101:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15680,"nodeType":"ExpressionStatement","src":"26380:101:60"},{"eventCall":{"arguments":[{"id":15682,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15652,"src":"26530:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15683,"name":"newProtocolSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15654,"src":"26536:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15681,"name":"ProtocolSwapFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1967,"src":"26497:32:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26497:68:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15685,"nodeType":"EmitStatement","src":"26492:73:60"}]},"documentation":{"id":15650,"nodeType":"StructuredDocumentation","src":"25567:114:60","text":"@dev Common code shared between set/update. `isOverride` will be true if governance is setting the percentage."},"id":15687,"implemented":true,"kind":"function","modifiers":[],"name":"_updatePoolSwapFeePercentage","nameLocation":"25695:28:60","nodeType":"FunctionDefinition","parameters":{"id":15657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15652,"mutability":"mutable","name":"pool","nameLocation":"25732:4:60","nodeType":"VariableDeclaration","scope":15687,"src":"25724:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15651,"name":"address","nodeType":"ElementaryTypeName","src":"25724:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15654,"mutability":"mutable","name":"newProtocolSwapFeePercentage","nameLocation":"25746:28:60","nodeType":"VariableDeclaration","scope":15687,"src":"25738:36:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15653,"name":"uint256","nodeType":"ElementaryTypeName","src":"25738:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15656,"mutability":"mutable","name":"isOverride","nameLocation":"25781:10:60","nodeType":"VariableDeclaration","scope":15687,"src":"25776:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15655,"name":"bool","nodeType":"ElementaryTypeName","src":"25776:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25723:69:60"},"returnParameters":{"id":15658,"nodeType":"ParameterList","parameters":[],"src":"25801:0:60"},"scope":15747,"src":"25686:886:60","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":15724,"nodeType":"Block","src":"26844:767:60","statements":[{"expression":{"id":15706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15697,"name":"_poolProtocolYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"27148:32:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolFeeConfig_$14340_storage_$","typeString":"mapping(address => struct ProtocolFeeController.PoolFeeConfig storage ref)"}},"id":15699,"indexExpression":{"id":15698,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15690,"src":"27181:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27148:38:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15701,"name":"newProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15692,"src":"27232:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27262:8:60","memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":43070,"src":"27232:38:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":15703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27232:40:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":15704,"name":"isOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15694,"src":"27298:10:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15700,"name":"PoolFeeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14340,"src":"27189:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolFeeConfig_$14340_storage_ptr_$","typeString":"type(struct ProtocolFeeController.PoolFeeConfig storage pointer)"}},"id":15705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["27217:13:60","27286:10:60"],"names":["feePercentage","isOverride"],"nodeType":"FunctionCall","src":"27189:130:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_memory_ptr","typeString":"struct ProtocolFeeController.PoolFeeConfig memory"}},"src":"27148:171:60","typeDescriptions":{"typeIdentifier":"t_struct$_PoolFeeConfig_$14340_storage","typeString":"struct ProtocolFeeController.PoolFeeConfig storage ref"}},"id":15707,"nodeType":"ExpressionStatement","src":"27148:171:60"},{"expression":{"arguments":[{"id":15711,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15690,"src":"27456:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15713,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15690,"src":"27489:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15714,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"27495:15:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":15715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27511:5:60","memberName":"YIELD","nodeType":"MemberAccess","referencedDeclaration":14333,"src":"27495:21:60","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}],"id":15712,"name":"_getAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15078,"src":"27462:26:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_ProtocolFeeType_$14334_$returns$_t_uint256_$","typeString":"function (address,enum ProtocolFeeController.ProtocolFeeType) view returns (uint256)"}},"id":15716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27462:55:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15708,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"27415:6:60","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27422:33:60","memberName":"updateAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3037,"src":"27415:40:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":15717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27415:103:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15718,"nodeType":"ExpressionStatement","src":"27415:103:60"},{"eventCall":{"arguments":[{"id":15720,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15690,"src":"27568:4:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15721,"name":"newProtocolYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15692,"src":"27574:29:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15719,"name":"ProtocolYieldFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1974,"src":"27534:33:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27534:70:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15723,"nodeType":"EmitStatement","src":"27529:75:60"}]},"documentation":{"id":15688,"nodeType":"StructuredDocumentation","src":"26578:114:60","text":"@dev Common code shared between set/update. `isOverride` will be true if governance is setting the percentage."},"id":15725,"implemented":true,"kind":"function","modifiers":[],"name":"_updatePoolYieldFeePercentage","nameLocation":"26706:29:60","nodeType":"FunctionDefinition","parameters":{"id":15695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15690,"mutability":"mutable","name":"pool","nameLocation":"26753:4:60","nodeType":"VariableDeclaration","scope":15725,"src":"26745:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15689,"name":"address","nodeType":"ElementaryTypeName","src":"26745:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15692,"mutability":"mutable","name":"newProtocolYieldFeePercentage","nameLocation":"26775:29:60","nodeType":"VariableDeclaration","scope":15725,"src":"26767:37:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15691,"name":"uint256","nodeType":"ElementaryTypeName","src":"26767:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15694,"mutability":"mutable","name":"isOverride","nameLocation":"26819:10:60","nodeType":"VariableDeclaration","scope":15725,"src":"26814:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15693,"name":"bool","nodeType":"ElementaryTypeName","src":"26814:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"26735:100:60"},"returnParameters":{"id":15696,"nodeType":"ParameterList","parameters":[],"src":"26844:0:60"},"scope":15747,"src":"26697:914:60","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":15745,"nodeType":"Block","src":"27684:682:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15730,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15727,"src":"28219:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":15731,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"28235:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28219:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":15733,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28218:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":15734,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"28257:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28218:57:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":15736,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15727,"src":"28279:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28218:74:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15744,"nodeType":"IfStatement","src":"28214:146:60","trueBody":{"id":15743,"nodeType":"Block","src":"28294:66:60","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15738,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"28315:12:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":15740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28328:19:60","memberName":"FeePrecisionTooHigh","nodeType":"MemberAccess","referencedDeclaration":3398,"src":"28315:32:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28315:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15742,"nodeType":"RevertStatement","src":"28308:41:60"}]}}]},"id":15746,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidPrecision","nameLocation":"27626:21:60","nodeType":"FunctionDefinition","parameters":{"id":15728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15727,"mutability":"mutable","name":"feePercentage","nameLocation":"27656:13:60","nodeType":"VariableDeclaration","scope":15746,"src":"27648:21:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15726,"name":"uint256","nodeType":"ElementaryTypeName","src":"27648:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27647:23:60"},"returnParameters":{"id":15729,"nodeType":"ParameterList","parameters":[],"src":"27684:0:60"},"scope":15747,"src":"27617:749:60","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":15748,"src":"3090:25278:60","usedErrors":[121,2035,2038,2043,2050,2053,3398,3422,7543,9512,39353,39634,39639,39642,42381],"usedEvents":[1955,1960,1967,1974,1981,1988,1998,2008,2020,2032]}],"src":"46:28323:60"},"id":60},"@balancer-labs/v3-vault/contracts/Router.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/Router.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"Address":[39879],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC4626":[38998],"IPermit2":[46102],"IRateProvider":[150],"IRouter":[2727],"IVault":[2893],"IWETH":[178],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"Router":[17997],"RouterCommon":[18820],"SafeCast":[44126],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":17998,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15749,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:61"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":15751,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":38999,"src":"72:75:61","symbolAliases":[{"foreign":{"id":15750,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":15753,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":44127,"src":"148:75:61","symbolAliases":[{"foreign":{"id":15752,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"157:8:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":15755,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":39275,"src":"224:72:61","symbolAliases":[{"foreign":{"id":15754,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"233:6:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":15757,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":39880,"src":"297:68:61","symbolAliases":[{"foreign":{"id":15756,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"306:7:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":15759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":46103,"src":"366:63:61","symbolAliases":[{"foreign":{"id":15758,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"375:8:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":15761,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":179,"src":"431:93:61","symbolAliases":[{"foreign":{"id":15760,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"440:5:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol","id":15763,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":2728,"src":"525:83:61","symbolAliases":[{"foreign":{"id":15762,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"534:7:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":15765,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":2894,"src":"609:81:61","symbolAliases":[{"foreign":{"id":15764,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"618:6:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":15766,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":4654,"src":"691:69:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/RouterCommon.sol","file":"./RouterCommon.sol","id":15768,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17998,"sourceUnit":18821,"src":"762:50:61","symbolAliases":[{"foreign":{"id":15767,"name":"RouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18820,"src":"771:12:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15770,"name":"IRouter","nameLocations":["1142:7:61"],"nodeType":"IdentifierPath","referencedDeclaration":2727,"src":"1142:7:61"},"id":15771,"nodeType":"InheritanceSpecifier","src":"1142:7:61"},{"baseName":{"id":15772,"name":"RouterCommon","nameLocations":["1151:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":18820,"src":"1151:12:61"},"id":15773,"nodeType":"InheritanceSpecifier","src":"1151:12:61"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","documentation":{"id":15769,"nodeType":"StructuredDocumentation","src":"814:308:61","text":" @notice Entrypoint for swaps, liquidity operations, and corresponding queries.\n @dev The external API functions unlock the Vault, which calls back into the corresponding hook functions.\n These interact with the Vault, transfer tokens, settle accounting, and handle wrapping and unwrapping ETH."},"fullyImplemented":true,"id":17997,"linearizedBaseContracts":[17997,18820,7108,160,9568,27688,2823,2727],"name":"Router","nameLocation":"1132:6:61","nodeType":"ContractDefinition","nodes":[{"global":false,"id":15776,"libraryName":{"id":15774,"name":"Address","nameLocations":["1176:7:61"],"nodeType":"IdentifierPath","referencedDeclaration":39879,"src":"1176:7:61"},"nodeType":"UsingForDirective","src":"1170:34:61","typeName":{"id":15775,"name":"address","nodeType":"ElementaryTypeName","src":"1188:15:61","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"global":false,"id":15778,"libraryName":{"id":15777,"name":"SafeCast","nameLocations":["1215:8:61"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"1215:8:61"},"nodeType":"UsingForDirective","src":"1209:21:61"},{"body":{"id":15798,"nodeType":"Block","src":"1409:64:61","statements":[]},"id":15799,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":15792,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15781,"src":"1372:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":15793,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15784,"src":"1379:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":15794,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15787,"src":"1385:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},{"id":15795,"name":"routerVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15789,"src":"1394:13:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":15796,"kind":"baseConstructorSpecifier","modifierName":{"id":15791,"name":"RouterCommon","nameLocations":["1359:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":18820,"src":"1359:12:61"},"nodeType":"ModifierInvocation","src":"1359:49:61"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":15790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15781,"mutability":"mutable","name":"vault","nameLocation":"1264:5:61","nodeType":"VariableDeclaration","scope":15799,"src":"1257:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":15780,"nodeType":"UserDefinedTypeName","pathNode":{"id":15779,"name":"IVault","nameLocations":["1257:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1257:6:61"},"referencedDeclaration":2893,"src":"1257:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":15784,"mutability":"mutable","name":"weth","nameLocation":"1285:4:61","nodeType":"VariableDeclaration","scope":15799,"src":"1279:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":15783,"nodeType":"UserDefinedTypeName","pathNode":{"id":15782,"name":"IWETH","nameLocations":["1279:5:61"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"1279:5:61"},"referencedDeclaration":178,"src":"1279:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":15787,"mutability":"mutable","name":"permit2","nameLocation":"1308:7:61","nodeType":"VariableDeclaration","scope":15799,"src":"1299:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":15786,"nodeType":"UserDefinedTypeName","pathNode":{"id":15785,"name":"IPermit2","nameLocations":["1299:8:61"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"1299:8:61"},"referencedDeclaration":46102,"src":"1299:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"},{"constant":false,"id":15789,"mutability":"mutable","name":"routerVersion","nameLocation":"1339:13:61","nodeType":"VariableDeclaration","scope":15799,"src":"1325:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15788,"name":"string","nodeType":"ElementaryTypeName","src":"1325:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1247:111:61"},"returnParameters":{"id":15797,"nodeType":"ParameterList","parameters":[],"src":"1409:0:61"},"scope":17997,"src":"1236:237:61","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2281],"body":{"id":15845,"nodeType":"Block","src":"1987:667:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":15826,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"2119:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":15827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2126:14:61","memberName":"initializeHook","nodeType":"MemberAccess","referencedDeclaration":15994,"src":"2119:21:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_InitializeHookParams_$2260_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.initializeHook(struct IRouter.InitializeHookParams calldata) returns (uint256)"}},{"arguments":[{"expression":{"id":15829,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2225:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2229:6:61","memberName":"sender","nodeType":"MemberAccess","src":"2225:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15831,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15802,"src":"2271:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15832,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15806,"src":"2313:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":15833,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15809,"src":"2365:14:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":15834,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15811,"src":"2426:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15835,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15813,"src":"2482:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":15836,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15815,"src":"2531:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15828,"name":"InitializeHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"2166:20:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_InitializeHookParams_$2260_storage_ptr_$","typeString":"type(struct IRouter.InitializeHookParams storage pointer)"}},"id":15837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["2217:6:61","2265:4:61","2305:6:61","2349:14:61","2409:15:61","2471:9:61","2521:8:61"],"names":["sender","pool","tokens","exactAmountsIn","minBptAmountOut","wethIsEth","userData"],"nodeType":"FunctionCall","src":"2166:400:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_memory_ptr","typeString":"struct IRouter.InitializeHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_InitializeHookParams_$2260_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.initializeHook(struct IRouter.InitializeHookParams calldata) returns (uint256)"},{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_memory_ptr","typeString":"struct IRouter.InitializeHookParams memory"}],"expression":{"id":15824,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2079:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2083:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"2079:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2079:509:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15822,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"2044:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2051:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"2044:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":15839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2044:562:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":15841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2625:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15840,"name":"uint256","nodeType":"ElementaryTypeName","src":"2625:7:61","typeDescriptions":{}}}],"id":15842,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2624:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":15820,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2016:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2020:6:61","memberName":"decode","nodeType":"MemberAccess","src":"2016:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2016:631:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15819,"id":15844,"nodeType":"Return","src":"1997:650:61"}]},"documentation":{"id":15800,"nodeType":"StructuredDocumentation","src":"1702:23:61","text":"@inheritdoc IRouter"},"functionSelector":"026b3d95","id":15846,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1739:10:61","nodeType":"FunctionDefinition","parameters":{"id":15816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15802,"mutability":"mutable","name":"pool","nameLocation":"1767:4:61","nodeType":"VariableDeclaration","scope":15846,"src":"1759:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15801,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15806,"mutability":"mutable","name":"tokens","nameLocation":"1797:6:61","nodeType":"VariableDeclaration","scope":15846,"src":"1781:22:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":15804,"nodeType":"UserDefinedTypeName","pathNode":{"id":15803,"name":"IERC20","nameLocations":["1781:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1781:6:61"},"referencedDeclaration":39274,"src":"1781:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":15805,"nodeType":"ArrayTypeName","src":"1781:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":15809,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"1830:14:61","nodeType":"VariableDeclaration","scope":15846,"src":"1813:31:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15807,"name":"uint256","nodeType":"ElementaryTypeName","src":"1813:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15808,"nodeType":"ArrayTypeName","src":"1813:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":15811,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"1862:15:61","nodeType":"VariableDeclaration","scope":15846,"src":"1854:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15810,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15813,"mutability":"mutable","name":"wethIsEth","nameLocation":"1892:9:61","nodeType":"VariableDeclaration","scope":15846,"src":"1887:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15812,"name":"bool","nodeType":"ElementaryTypeName","src":"1887:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15815,"mutability":"mutable","name":"userData","nameLocation":"1924:8:61","nodeType":"VariableDeclaration","scope":15846,"src":"1911:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15814,"name":"bytes","nodeType":"ElementaryTypeName","src":"1911:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1749:189:61"},"returnParameters":{"id":15819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15818,"mutability":"mutable","name":"bptAmountOut","nameLocation":"1973:12:61","nodeType":"VariableDeclaration","scope":15846,"src":"1965:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1964:22:61"},"scope":17997,"src":"1730:924:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":15993,"nodeType":"Block","src":"3062:1461:61","statements":[{"expression":{"id":15875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15859,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15857,"src":"3072:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":15862,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3118:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3125:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2246,"src":"3118:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15864,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3143:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3150:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"3143:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15866,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3170:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3177:6:61","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":2250,"src":"3170:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},{"expression":{"id":15868,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3197:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3204:14:61","memberName":"exactAmountsIn","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"3197:21:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"expression":{"id":15870,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3232:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3239:15:61","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":2255,"src":"3232:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":15872,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3268:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3275:8:61","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":2259,"src":"3268:15:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":15860,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3087:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3094:10:61","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3909,"src":"3087:17:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (address,address,contract IERC20[] memory,uint256[] memory,uint256,bytes memory) external returns (uint256)"}},"id":15874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3087:206:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3072:221:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15876,"nodeType":"ExpressionStatement","src":"3072:221:61"},{"body":{"id":15986,"nodeType":"Block","src":"3355:1098:61","statements":[{"assignments":[15891],"declarations":[{"constant":false,"id":15891,"mutability":"mutable","name":"token","nameLocation":"3376:5:61","nodeType":"VariableDeclaration","scope":15986,"src":"3369:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":15890,"nodeType":"UserDefinedTypeName","pathNode":{"id":15889,"name":"IERC20","nameLocations":["3369:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3369:6:61"},"referencedDeclaration":39274,"src":"3369:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":15896,"initialValue":{"baseExpression":{"expression":{"id":15892,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3384:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3391:6:61","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":2250,"src":"3384:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":15895,"indexExpression":{"id":15894,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15878,"src":"3398:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3384:16:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"3369:31:61"},{"assignments":[15898],"declarations":[{"constant":false,"id":15898,"mutability":"mutable","name":"amountIn","nameLocation":"3422:8:61","nodeType":"VariableDeclaration","scope":15986,"src":"3414:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15897,"name":"uint256","nodeType":"ElementaryTypeName","src":"3414:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15903,"initialValue":{"baseExpression":{"expression":{"id":15899,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3433:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3440:14:61","memberName":"exactAmountsIn","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"3433:21:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":15902,"indexExpression":{"id":15901,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15878,"src":"3455:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3433:24:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3414:43:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15904,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"3476:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3488:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3476:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15909,"nodeType":"IfStatement","src":"3472:60:61","trueBody":{"id":15908,"nodeType":"Block","src":"3491:41:61","statements":[{"id":15907,"nodeType":"Continue","src":"3509:8:61"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15910,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3611:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3618:9:61","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":2257,"src":"3611:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":15914,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15891,"src":"3639:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":15913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3631:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15912,"name":"address","nodeType":"ElementaryTypeName","src":"3631:7:61","typeDescriptions":{}}},"id":15915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3631:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":15918,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"3657:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}],"id":15917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3649:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15916,"name":"address","nodeType":"ElementaryTypeName","src":"3649:7:61","typeDescriptions":{}}},"id":15919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3649:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3631:32:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3611:52:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15984,"nodeType":"Block","src":"4029:414:61","statements":[{"expression":{"arguments":[{"expression":{"id":15962,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"4311:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4318:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"4311:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15966,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"4334:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":15965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4326:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15964,"name":"address","nodeType":"ElementaryTypeName","src":"4326:7:61","typeDescriptions":{}}},"id":15967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4326:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15968,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"4343:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4352:9:61","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":42734,"src":"4343:18:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":15970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4343:20:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":15973,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15891,"src":"4373:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":15972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4365:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15971,"name":"address","nodeType":"ElementaryTypeName","src":"4365:7:61","typeDescriptions":{}}},"id":15974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4365:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15959,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"4289:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":15961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4298:12:61","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46055,"src":"4289:21:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address) external"}},"id":15975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4289:91:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15976,"nodeType":"ExpressionStatement","src":"4289:91:61"},{"expression":{"arguments":[{"id":15980,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15891,"src":"4412:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":15981,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"4419:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15977,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"4398:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4405:6:61","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"4398:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":15982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4398:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15983,"nodeType":"ExpressionStatement","src":"4398:30:61"}]},"id":15985,"nodeType":"IfStatement","src":"3607:836:61","trueBody":{"id":15958,"nodeType":"Block","src":"3665:358:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":15924,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3695:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":15923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3687:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15922,"name":"address","nodeType":"ElementaryTypeName","src":"3687:7:61","typeDescriptions":{}}},"id":15925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3687:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3701:7:61","memberName":"balance","nodeType":"MemberAccess","src":"3687:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":15927,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"3711:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3687:32:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15933,"nodeType":"IfStatement","src":"3683:103:61","trueBody":{"id":15932,"nodeType":"Block","src":"3721:65:61","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15929,"name":"InsufficientEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18079,"src":"3750:15:61","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3750:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15931,"nodeType":"RevertStatement","src":"3743:24:61"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"id":15934,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"3804:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":15936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3810:7:61","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":171,"src":"3804:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":15938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":15937,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"3826:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3804:32:61","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":15939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3804:34:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15940,"nodeType":"ExpressionStatement","src":"3804:34:61"},{"expression":{"arguments":[{"arguments":[{"id":15946,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3942:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":15945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3934:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15944,"name":"address","nodeType":"ElementaryTypeName","src":"3934:7:61","typeDescriptions":{}}},"id":15947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3934:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15948,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"3951:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15941,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"3919:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":15943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3925:8:61","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"3919:14:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":15949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3919:41:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15950,"nodeType":"ExpressionStatement","src":"3919:41:61"},{"expression":{"arguments":[{"id":15954,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"3992:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":15955,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15898,"src":"3999:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15951,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3978:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":15953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3985:6:61","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"3978:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":15956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3978:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15957,"nodeType":"ExpressionStatement","src":"3978:30:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15881,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15878,"src":"3324:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":15882,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"3328:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3335:6:61","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":2250,"src":"3328:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":15884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3342:6:61","memberName":"length","nodeType":"MemberAccess","src":"3328:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3324:24:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15987,"initializationExpression":{"assignments":[15878],"declarations":[{"constant":false,"id":15878,"mutability":"mutable","name":"i","nameLocation":"3317:1:61","nodeType":"VariableDeclaration","scope":15987,"src":"3309:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15877,"name":"uint256","nodeType":"ElementaryTypeName","src":"3309:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15880,"initialValue":{"hexValue":"30","id":15879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3321:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3309:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3350:3:61","subExpression":{"id":15886,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15878,"src":"3352:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15888,"nodeType":"ExpressionStatement","src":"3350:3:61"},"nodeType":"ForStatement","src":"3304:1149:61"},{"expression":{"arguments":[{"expression":{"id":15989,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15850,"src":"4502:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams calldata"}},"id":15990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4509:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"4502:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15988,"name":"_returnEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"4491:10:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":15991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4491:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15992,"nodeType":"ExpressionStatement","src":"4491:25:61"}]},"documentation":{"id":15847,"nodeType":"StructuredDocumentation","src":"2660:258:61","text":" @notice Hook for initialization.\n @dev Can only be called by the Vault.\n @param params Initialization parameters (see IRouter for struct definition)\n @return bptAmountOut BPT amount minted in exchange for the input tokens"},"functionSelector":"086fad66","id":15994,"implemented":true,"kind":"function","modifiers":[{"id":15853,"kind":"modifierInvocation","modifierName":{"id":15852,"name":"nonReentrant","nameLocations":["3008:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"3008:12:61"},"nodeType":"ModifierInvocation","src":"3008:12:61"},{"id":15855,"kind":"modifierInvocation","modifierName":{"id":15854,"name":"onlyVault","nameLocations":["3021:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"3021:9:61"},"nodeType":"ModifierInvocation","src":"3021:9:61"}],"name":"initializeHook","nameLocation":"2932:14:61","nodeType":"FunctionDefinition","parameters":{"id":15851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15850,"mutability":"mutable","name":"params","nameLocation":"2986:6:61","nodeType":"VariableDeclaration","scope":15994,"src":"2956:36:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_calldata_ptr","typeString":"struct IRouter.InitializeHookParams"},"typeName":{"id":15849,"nodeType":"UserDefinedTypeName","pathNode":{"id":15848,"name":"InitializeHookParams","nameLocations":["2956:20:61"],"nodeType":"IdentifierPath","referencedDeclaration":2260,"src":"2956:20:61"},"referencedDeclaration":2260,"src":"2956:20:61","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_storage_ptr","typeString":"struct IRouter.InitializeHookParams"}},"visibility":"internal"}],"src":"2946:52:61"},"returnParameters":{"id":15858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15857,"mutability":"mutable","name":"bptAmountOut","nameLocation":"3048:12:61","nodeType":"VariableDeclaration","scope":15994,"src":"3040:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15856,"name":"uint256","nodeType":"ElementaryTypeName","src":"3040:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3039:22:61"},"scope":17997,"src":"2923:1600:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2299],"body":{"id":16050,"nodeType":"Block","src":"5037:643:61","statements":[{"expression":{"id":16048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16016,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16014,"src":"5048:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null,null],"id":16017,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5047:15:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$__$__$","typeString":"tuple(uint256[] memory,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16024,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"5156:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5163:16:61","memberName":"addLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16447,"src":"5156:23:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"expression":{"id":16027,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5258:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5262:6:61","memberName":"sender","nodeType":"MemberAccess","src":"5258:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16029,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15997,"src":"5300:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16030,"name":"maxAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16000,"src":"5344:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16031,"name":"exactBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16002,"src":"5399:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16032,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"5448:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":16033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5465:12:61","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4584,"src":"5448:29:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"id":16034,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16004,"src":"5514:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16035,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16006,"src":"5559:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16026,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"5201:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":16036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5250:6:61","5294:4:61","5330:12:61","5382:15:61","5442:4:61","5503:9:61","5549:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"5201:389:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":16022,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5120:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5124:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"5120:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5120:488:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16020,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"5089:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5096:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"5089:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5089:533:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":16040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5637:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16039,"name":"uint256","nodeType":"ElementaryTypeName","src":"5637:7:61","typeDescriptions":{}}},"id":16041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"5637:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5648:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16042,"name":"uint256","nodeType":"ElementaryTypeName","src":"5648:7:61","typeDescriptions":{}}},{"id":16045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5657:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16044,"name":"bytes","nodeType":"ElementaryTypeName","src":"5657:5:61","typeDescriptions":{}}}],"id":16046,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5636:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":16018,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5065:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5069:6:61","memberName":"decode","nodeType":"MemberAccess","src":"5065:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5065:608:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"5047:626:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16049,"nodeType":"ExpressionStatement","src":"5047:626:61"}]},"documentation":{"id":15995,"nodeType":"StructuredDocumentation","src":"4741:23:61","text":"@inheritdoc IRouter"},"functionSelector":"724dba33","id":16051,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16009,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4988:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4992:6:61","memberName":"sender","nodeType":"MemberAccess","src":"4988:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16011,"kind":"modifierInvocation","modifierName":{"id":16008,"name":"saveSender","nameLocations":["4977:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"4977:10:61"},"nodeType":"ModifierInvocation","src":"4977:22:61"}],"name":"addLiquidityProportional","nameLocation":"4778:24:61","nodeType":"FunctionDefinition","parameters":{"id":16007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15997,"mutability":"mutable","name":"pool","nameLocation":"4820:4:61","nodeType":"VariableDeclaration","scope":16051,"src":"4812:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15996,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16000,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"4851:12:61","nodeType":"VariableDeclaration","scope":16051,"src":"4834:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":15998,"name":"uint256","nodeType":"ElementaryTypeName","src":"4834:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15999,"nodeType":"ArrayTypeName","src":"4834:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16002,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"4881:17:61","nodeType":"VariableDeclaration","scope":16051,"src":"4873:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16001,"name":"uint256","nodeType":"ElementaryTypeName","src":"4873:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16004,"mutability":"mutable","name":"wethIsEth","nameLocation":"4913:9:61","nodeType":"VariableDeclaration","scope":16051,"src":"4908:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16003,"name":"bool","nodeType":"ElementaryTypeName","src":"4908:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16006,"mutability":"mutable","name":"userData","nameLocation":"4945:8:61","nodeType":"VariableDeclaration","scope":16051,"src":"4932:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16005,"name":"bytes","nodeType":"ElementaryTypeName","src":"4932:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:157:61"},"returnParameters":{"id":16015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16014,"mutability":"mutable","name":"amountsIn","nameLocation":"5026:9:61","nodeType":"VariableDeclaration","scope":16051,"src":"5009:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16012,"name":"uint256","nodeType":"ElementaryTypeName","src":"5009:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16013,"nodeType":"ArrayTypeName","src":"5009:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5008:28:61"},"scope":17997,"src":"4769:911:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2316],"body":{"id":16106,"nodeType":"Block","src":"5974:644:61","statements":[{"expression":{"id":16104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":16072,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16070,"src":"5987:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":16073,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5984:18:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$__$","typeString":"tuple(,uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16080,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"6096:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6103:16:61","memberName":"addLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16447,"src":"6096:23:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"expression":{"id":16083,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6198:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6202:6:61","memberName":"sender","nodeType":"MemberAccess","src":"6198:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16085,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16054,"src":"6240:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16086,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16057,"src":"6284:14:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16087,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16059,"src":"6341:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16088,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"6388:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":16089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6405:10:61","memberName":"UNBALANCED","nodeType":"MemberAccess","referencedDeclaration":4585,"src":"6388:27:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"id":16090,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16061,"src":"6452:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16091,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16063,"src":"6497:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16082,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"6141:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":16092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["6190:6:61","6234:4:61","6270:12:61","6324:15:61","6382:4:61","6441:9:61","6487:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"6141:387:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":16078,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6060:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6064:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"6060:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6060:486:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16076,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"6029:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6036:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"6029:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6029:531:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":16096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6575:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16095,"name":"uint256","nodeType":"ElementaryTypeName","src":"6575:7:61","typeDescriptions":{}}},"id":16097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6575:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6586:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16098,"name":"uint256","nodeType":"ElementaryTypeName","src":"6586:7:61","typeDescriptions":{}}},{"id":16101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6595:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16100,"name":"bytes","nodeType":"ElementaryTypeName","src":"6595:5:61","typeDescriptions":{}}}],"id":16102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6574:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":16074,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6005:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6009:6:61","memberName":"decode","nodeType":"MemberAccess","src":"6005:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6005:606:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"5984:627:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16105,"nodeType":"ExpressionStatement","src":"5984:627:61"}]},"documentation":{"id":16052,"nodeType":"StructuredDocumentation","src":"5686:23:61","text":"@inheritdoc IRouter"},"functionSelector":"c08bc851","id":16107,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16066,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5931:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5935:6:61","memberName":"sender","nodeType":"MemberAccess","src":"5931:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16068,"kind":"modifierInvocation","modifierName":{"id":16065,"name":"saveSender","nameLocations":["5920:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"5920:10:61"},"nodeType":"ModifierInvocation","src":"5920:22:61"}],"name":"addLiquidityUnbalanced","nameLocation":"5723:22:61","nodeType":"FunctionDefinition","parameters":{"id":16064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16054,"mutability":"mutable","name":"pool","nameLocation":"5763:4:61","nodeType":"VariableDeclaration","scope":16107,"src":"5755:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16053,"name":"address","nodeType":"ElementaryTypeName","src":"5755:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16057,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"5794:14:61","nodeType":"VariableDeclaration","scope":16107,"src":"5777:31:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16055,"name":"uint256","nodeType":"ElementaryTypeName","src":"5777:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16056,"nodeType":"ArrayTypeName","src":"5777:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16059,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"5826:15:61","nodeType":"VariableDeclaration","scope":16107,"src":"5818:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16058,"name":"uint256","nodeType":"ElementaryTypeName","src":"5818:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16061,"mutability":"mutable","name":"wethIsEth","nameLocation":"5856:9:61","nodeType":"VariableDeclaration","scope":16107,"src":"5851:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16060,"name":"bool","nodeType":"ElementaryTypeName","src":"5851:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16063,"mutability":"mutable","name":"userData","nameLocation":"5888:8:61","nodeType":"VariableDeclaration","scope":16107,"src":"5875:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16062,"name":"bytes","nodeType":"ElementaryTypeName","src":"5875:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5745:157:61"},"returnParameters":{"id":16071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16070,"mutability":"mutable","name":"bptAmountOut","nameLocation":"5960:12:61","nodeType":"VariableDeclaration","scope":16107,"src":"5952:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16069,"name":"uint256","nodeType":"ElementaryTypeName","src":"5952:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5951:22:61"},"scope":17997,"src":"5714:904:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2335],"body":{"id":16183,"nodeType":"Block","src":"6931:881:61","statements":[{"assignments":[16134,16136],"declarations":[{"constant":false,"id":16134,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"6959:12:61","nodeType":"VariableDeclaration","scope":16183,"src":"6942:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16132,"name":"uint256","nodeType":"ElementaryTypeName","src":"6942:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16133,"nodeType":"ArrayTypeName","src":"6942:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16136,"mutability":"mutable","name":"tokenIndex","nameLocation":"6981:10:61","nodeType":"VariableDeclaration","scope":16183,"src":"6973:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16135,"name":"uint256","nodeType":"ElementaryTypeName","src":"6973:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16142,"initialValue":{"arguments":[{"id":16138,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16110,"src":"7042:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16139,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16113,"src":"7060:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":16140,"name":"maxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16115,"src":"7081:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16137,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"6995:33:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":16141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6995:107:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6941:161:61"},{"assignments":[16147,null,null],"declarations":[{"constant":false,"id":16147,"mutability":"mutable","name":"amountsIn","nameLocation":"7131:9:61","nodeType":"VariableDeclaration","scope":16183,"src":"7114:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16145,"name":"uint256","nodeType":"ElementaryTypeName","src":"7114:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16146,"nodeType":"ArrayTypeName","src":"7114:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null,null],"id":16178,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16154,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"7239:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7246:16:61","memberName":"addLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16447,"src":"7239:23:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"expression":{"id":16157,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7341:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7345:6:61","memberName":"sender","nodeType":"MemberAccess","src":"7341:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16159,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16110,"src":"7383:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16160,"name":"maxAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16134,"src":"7427:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16161,"name":"exactBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16117,"src":"7482:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16162,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"7531:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":16163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7548:22:61","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4586,"src":"7531:39:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"id":16164,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16119,"src":"7607:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16165,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16121,"src":"7652:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16156,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"7284:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":16166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7333:6:61","7377:4:61","7413:12:61","7465:15:61","7525:4:61","7596:9:61","7642:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"7284:399:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":16152,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7203:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7207:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"7203:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7203:498:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16150,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7172:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7179:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"7172:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7172:543:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":16170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7730:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16169,"name":"uint256","nodeType":"ElementaryTypeName","src":"7730:7:61","typeDescriptions":{}}},"id":16171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"7730:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7741:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16172,"name":"uint256","nodeType":"ElementaryTypeName","src":"7741:7:61","typeDescriptions":{}}},{"id":16175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7750:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16174,"name":"bytes","nodeType":"ElementaryTypeName","src":"7750:5:61","typeDescriptions":{}}}],"id":16176,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7729:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":16148,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7148:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7152:6:61","memberName":"decode","nodeType":"MemberAccess","src":"7148:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7148:618:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7113:653:61"},{"expression":{"baseExpression":{"id":16179,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16147,"src":"7784:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16181,"indexExpression":{"id":16180,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16136,"src":"7794:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7784:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16129,"id":16182,"nodeType":"Return","src":"7777:28:61"}]},"documentation":{"id":16108,"nodeType":"StructuredDocumentation","src":"6624:23:61","text":"@inheritdoc IRouter"},"functionSelector":"72657d17","id":16184,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16124,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6892:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6896:6:61","memberName":"sender","nodeType":"MemberAccess","src":"6892:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16126,"kind":"modifierInvocation","modifierName":{"id":16123,"name":"saveSender","nameLocations":["6881:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"6881:10:61"},"nodeType":"ModifierInvocation","src":"6881:22:61"}],"name":"addLiquiditySingleTokenExactOut","nameLocation":"6661:31:61","nodeType":"FunctionDefinition","parameters":{"id":16122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16110,"mutability":"mutable","name":"pool","nameLocation":"6710:4:61","nodeType":"VariableDeclaration","scope":16184,"src":"6702:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16109,"name":"address","nodeType":"ElementaryTypeName","src":"6702:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16113,"mutability":"mutable","name":"tokenIn","nameLocation":"6731:7:61","nodeType":"VariableDeclaration","scope":16184,"src":"6724:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":16112,"nodeType":"UserDefinedTypeName","pathNode":{"id":16111,"name":"IERC20","nameLocations":["6724:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6724:6:61"},"referencedDeclaration":39274,"src":"6724:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":16115,"mutability":"mutable","name":"maxAmountIn","nameLocation":"6756:11:61","nodeType":"VariableDeclaration","scope":16184,"src":"6748:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16114,"name":"uint256","nodeType":"ElementaryTypeName","src":"6748:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16117,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"6785:17:61","nodeType":"VariableDeclaration","scope":16184,"src":"6777:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16116,"name":"uint256","nodeType":"ElementaryTypeName","src":"6777:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16119,"mutability":"mutable","name":"wethIsEth","nameLocation":"6817:9:61","nodeType":"VariableDeclaration","scope":16184,"src":"6812:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16118,"name":"bool","nodeType":"ElementaryTypeName","src":"6812:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16121,"mutability":"mutable","name":"userData","nameLocation":"6849:8:61","nodeType":"VariableDeclaration","scope":16184,"src":"6836:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16120,"name":"bytes","nodeType":"ElementaryTypeName","src":"6836:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6692:171:61"},"returnParameters":{"id":16129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16128,"mutability":"mutable","name":"amountIn","nameLocation":"6921:8:61","nodeType":"VariableDeclaration","scope":16184,"src":"6913:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16127,"name":"uint256","nodeType":"ElementaryTypeName","src":"6913:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6912:18:61"},"scope":17997,"src":"6652:1160:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2348],"body":{"id":16222,"nodeType":"Block","src":"8021:475:61","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":16206,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"8090:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8097:16:61","memberName":"addLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16447,"src":"8090:23:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"expression":{"id":16209,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8184:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8188:6:61","memberName":"sender","nodeType":"MemberAccess","src":"8184:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16211,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16187,"src":"8222:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16212,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16190,"src":"8262:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"30","id":16213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8310:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":16214,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"8339:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":16215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8356:8:61","memberName":"DONATION","nodeType":"MemberAccess","referencedDeclaration":4587,"src":"8339:25:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"id":16216,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16192,"src":"8397:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16217,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16194,"src":"8438:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16208,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"8131:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":16218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8176:6:61","8216:4:61","8248:12:61","8293:15:61","8333:4:61","8386:9:61","8428:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"8131:334:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":16204,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8058:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8062:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"8058:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8058:421:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16201,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8031:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8038:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"8031:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8031:458:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16221,"nodeType":"ExpressionStatement","src":"8031:458:61"}]},"documentation":{"id":16185,"nodeType":"StructuredDocumentation","src":"7818:23:61","text":"@inheritdoc IRouter"},"functionSelector":"bf6ee3fd","id":16223,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16197,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8009:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8013:6:61","memberName":"sender","nodeType":"MemberAccess","src":"8009:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16199,"kind":"modifierInvocation","modifierName":{"id":16196,"name":"saveSender","nameLocations":["7998:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"7998:10:61"},"nodeType":"ModifierInvocation","src":"7998:22:61"}],"name":"donate","nameLocation":"7855:6:61","nodeType":"FunctionDefinition","parameters":{"id":16195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16187,"mutability":"mutable","name":"pool","nameLocation":"7879:4:61","nodeType":"VariableDeclaration","scope":16223,"src":"7871:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16186,"name":"address","nodeType":"ElementaryTypeName","src":"7871:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16190,"mutability":"mutable","name":"amountsIn","nameLocation":"7910:9:61","nodeType":"VariableDeclaration","scope":16223,"src":"7893:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16188,"name":"uint256","nodeType":"ElementaryTypeName","src":"7893:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16189,"nodeType":"ArrayTypeName","src":"7893:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16192,"mutability":"mutable","name":"wethIsEth","nameLocation":"7934:9:61","nodeType":"VariableDeclaration","scope":16223,"src":"7929:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16191,"name":"bool","nodeType":"ElementaryTypeName","src":"7929:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16194,"mutability":"mutable","name":"userData","nameLocation":"7966:8:61","nodeType":"VariableDeclaration","scope":16223,"src":"7953:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16193,"name":"bytes","nodeType":"ElementaryTypeName","src":"7953:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:119:61"},"returnParameters":{"id":16200,"nodeType":"ParameterList","parameters":[],"src":"8021:0:61"},"scope":17997,"src":"7846:650:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2370],"body":{"id":16280,"nodeType":"Block","src":"8873:700:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16255,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"9005:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9012:16:61","memberName":"addLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16447,"src":"9005:23:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"expression":{"id":16258,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9115:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9119:6:61","memberName":"sender","nodeType":"MemberAccess","src":"9115:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16260,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16226,"src":"9161:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16261,"name":"maxAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16229,"src":"9209:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16262,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16231,"src":"9268:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16263,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"9319:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":16264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9336:6:61","memberName":"CUSTOM","nodeType":"MemberAccess","referencedDeclaration":4588,"src":"9319:23:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"id":16265,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16233,"src":"9383:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16266,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16235,"src":"9432:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16257,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"9054:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":16267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9107:6:61","9155:4:61","9195:12:61","9251:15:61","9313:4:61","9372:9:61","9422:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"9054:413:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.addLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":16253,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8965:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8969:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"8965:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8965:524:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16251,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8930:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8937:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"8930:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8930:577:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":16271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9526:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16270,"name":"uint256","nodeType":"ElementaryTypeName","src":"9526:7:61","typeDescriptions":{}}},"id":16272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"9526:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9537:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16273,"name":"uint256","nodeType":"ElementaryTypeName","src":"9537:7:61","typeDescriptions":{}}},{"id":16276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9546:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16275,"name":"bytes","nodeType":"ElementaryTypeName","src":"9546:5:61","typeDescriptions":{}}}],"id":16277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9525:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":16249,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8902:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8906:6:61","memberName":"decode","nodeType":"MemberAccess","src":"8902:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8902:664:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"functionReturnParameters":16248,"id":16279,"nodeType":"Return","src":"8883:683:61"}]},"documentation":{"id":16224,"nodeType":"StructuredDocumentation","src":"8502:23:61","text":"@inheritdoc IRouter"},"functionSelector":"0ca078ec","id":16281,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16238,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8765:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8769:6:61","memberName":"sender","nodeType":"MemberAccess","src":"8765:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16240,"kind":"modifierInvocation","modifierName":{"id":16237,"name":"saveSender","nameLocations":["8754:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"8754:10:61"},"nodeType":"ModifierInvocation","src":"8754:22:61"}],"name":"addLiquidityCustom","nameLocation":"8539:18:61","nodeType":"FunctionDefinition","parameters":{"id":16236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16226,"mutability":"mutable","name":"pool","nameLocation":"8575:4:61","nodeType":"VariableDeclaration","scope":16281,"src":"8567:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16225,"name":"address","nodeType":"ElementaryTypeName","src":"8567:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16229,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"8606:12:61","nodeType":"VariableDeclaration","scope":16281,"src":"8589:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16227,"name":"uint256","nodeType":"ElementaryTypeName","src":"8589:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16228,"nodeType":"ArrayTypeName","src":"8589:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16231,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"8636:15:61","nodeType":"VariableDeclaration","scope":16281,"src":"8628:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16230,"name":"uint256","nodeType":"ElementaryTypeName","src":"8628:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16233,"mutability":"mutable","name":"wethIsEth","nameLocation":"8666:9:61","nodeType":"VariableDeclaration","scope":16281,"src":"8661:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16232,"name":"bool","nodeType":"ElementaryTypeName","src":"8661:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16235,"mutability":"mutable","name":"userData","nameLocation":"8698:8:61","nodeType":"VariableDeclaration","scope":16281,"src":"8685:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16234,"name":"bytes","nodeType":"ElementaryTypeName","src":"8685:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8557:155:61"},"returnParameters":{"id":16248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16243,"mutability":"mutable","name":"amountsIn","nameLocation":"8811:9:61","nodeType":"VariableDeclaration","scope":16281,"src":"8794:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16241,"name":"uint256","nodeType":"ElementaryTypeName","src":"8794:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16242,"nodeType":"ArrayTypeName","src":"8794:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16245,"mutability":"mutable","name":"bptAmountOut","nameLocation":"8830:12:61","nodeType":"VariableDeclaration","scope":16281,"src":"8822:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16244,"name":"uint256","nodeType":"ElementaryTypeName","src":"8822:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16247,"mutability":"mutable","name":"returnData","nameLocation":"8857:10:61","nodeType":"VariableDeclaration","scope":16281,"src":"8844:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16246,"name":"bytes","nodeType":"ElementaryTypeName","src":"8844:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8793:75:61"},"scope":17997,"src":"8530:1043:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16446,"nodeType":"Block","src":"10217:1625:61","statements":[{"expression":{"id":16320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16299,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16293,"src":"10228:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16300,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16295,"src":"10239:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16301,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16297,"src":"10253:10:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":16302,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10227:37:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":16306,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"10343:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10350:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2740,"src":"10343:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16308,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"10376:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10383:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2738,"src":"10376:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16310,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"10421:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10428:12:61","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":2743,"src":"10421:19:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"expression":{"id":16312,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"10475:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10482:15:61","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":2745,"src":"10475:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16314,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"10521:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10528:4:61","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":2748,"src":"10521:11:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"expression":{"id":16316,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"10560:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10567:8:61","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":2752,"src":"10560:15:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":16305,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4605,"src":"10300:18:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$4605_storage_ptr_$","typeString":"type(struct AddLiquidityParams storage pointer)"}},"id":16318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10337:4:61","10372:2:61","10407:12:61","10458:15:61","10515:4:61","10550:8:61"],"names":["pool","to","maxAmountsIn","minBptAmountOut","kind","userData"],"nodeType":"FunctionCall","src":"10300:290:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}],"expression":{"id":16303,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"10267:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10274:12:61","memberName":"addLiquidity","nodeType":"MemberAccess","referencedDeclaration":4271,"src":"10267:19:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct AddLiquidityParams memory) external returns (uint256[] memory,uint256,bytes memory)"}},"id":16319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10267:333:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"10227:373:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16321,"nodeType":"ExpressionStatement","src":"10227:373:61"},{"assignments":[16326],"declarations":[{"constant":false,"id":16326,"mutability":"mutable","name":"tokens","nameLocation":"10705:6:61","nodeType":"VariableDeclaration","scope":16446,"src":"10689:22:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":16324,"nodeType":"UserDefinedTypeName","pathNode":{"id":16323,"name":"IERC20","nameLocations":["10689:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10689:6:61"},"referencedDeclaration":39274,"src":"10689:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":16325,"nodeType":"ArrayTypeName","src":"10689:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":16332,"initialValue":{"arguments":[{"expression":{"id":16329,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"10735:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10742:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2740,"src":"10735:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16327,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"10714:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10721:13:61","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"10714:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":16331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10714:33:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10689:58:61"},{"body":{"id":16439,"nodeType":"Block","src":"10802:955:61","statements":[{"assignments":[16346],"declarations":[{"constant":false,"id":16346,"mutability":"mutable","name":"token","nameLocation":"10823:5:61","nodeType":"VariableDeclaration","scope":16439,"src":"10816:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":16345,"nodeType":"UserDefinedTypeName","pathNode":{"id":16344,"name":"IERC20","nameLocations":["10816:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10816:6:61"},"referencedDeclaration":39274,"src":"10816:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":16350,"initialValue":{"baseExpression":{"id":16347,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16326,"src":"10831:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":16349,"indexExpression":{"id":16348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16334,"src":"10838:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10831:9:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"10816:24:61"},{"assignments":[16352],"declarations":[{"constant":false,"id":16352,"mutability":"mutable","name":"amountIn","nameLocation":"10862:8:61","nodeType":"VariableDeclaration","scope":16439,"src":"10854:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16351,"name":"uint256","nodeType":"ElementaryTypeName","src":"10854:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16356,"initialValue":{"baseExpression":{"id":16353,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16293,"src":"10873:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16355,"indexExpression":{"id":16354,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16334,"src":"10883:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10873:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10854:31:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16357,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16352,"src":"10904:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10916:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10904:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16362,"nodeType":"IfStatement","src":"10900:60:61","trueBody":{"id":16361,"nodeType":"Block","src":"10919:41:61","statements":[{"id":16360,"nodeType":"Continue","src":"10937:8:61"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16363,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"11039:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11046:9:61","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":2750,"src":"11039:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16367,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16346,"src":"11067:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":16366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11059:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16365,"name":"address","nodeType":"ElementaryTypeName","src":"11059:7:61","typeDescriptions":{}}},"id":16368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11059:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16371,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"11085:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}],"id":16370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11077:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16369,"name":"address","nodeType":"ElementaryTypeName","src":"11077:7:61","typeDescriptions":{}}},"id":16372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11077:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11059:32:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11039:52:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16437,"nodeType":"Block","src":"11394:353:61","statements":[{"expression":{"arguments":[{"expression":{"id":16415,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"11615:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11622:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2738,"src":"11615:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":16419,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11638:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":16418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11630:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16417,"name":"address","nodeType":"ElementaryTypeName","src":"11630:7:61","typeDescriptions":{}}},"id":16420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11630:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16421,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16352,"src":"11647:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11656:9:61","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":42734,"src":"11647:18:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":16423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11647:20:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":16426,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16346,"src":"11677:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":16425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11669:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16424,"name":"address","nodeType":"ElementaryTypeName","src":"11669:7:61","typeDescriptions":{}}},"id":16427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11669:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16412,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"11593:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":16414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11602:12:61","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46055,"src":"11593:21:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address) external"}},"id":16428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11593:91:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16429,"nodeType":"ExpressionStatement","src":"11593:91:61"},{"expression":{"arguments":[{"id":16433,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16346,"src":"11716:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":16434,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16352,"src":"11723:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16430,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11702:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11709:6:61","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"11702:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":16435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11702:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16436,"nodeType":"ExpressionStatement","src":"11702:30:61"}]},"id":16438,"nodeType":"IfStatement","src":"11035:712:61","trueBody":{"id":16411,"nodeType":"Block","src":"11093:295:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":16377,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11123:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":16376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11115:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16375,"name":"address","nodeType":"ElementaryTypeName","src":"11115:7:61","typeDescriptions":{}}},"id":16378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11115:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11129:7:61","memberName":"balance","nodeType":"MemberAccess","src":"11115:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16380,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16352,"src":"11139:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11115:32:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16386,"nodeType":"IfStatement","src":"11111:103:61","trueBody":{"id":16385,"nodeType":"Block","src":"11149:65:61","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16382,"name":"InsufficientEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18079,"src":"11178:15:61","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11178:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16384,"nodeType":"RevertStatement","src":"11171:24:61"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"id":16387,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"11232:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":16389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11238:7:61","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":171,"src":"11232:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":16391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":16390,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16352,"src":"11254:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"11232:32:61","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":16392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11232:34:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16393,"nodeType":"ExpressionStatement","src":"11232:34:61"},{"expression":{"arguments":[{"arguments":[{"id":16399,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11307:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":16398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11299:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16397,"name":"address","nodeType":"ElementaryTypeName","src":"11299:7:61","typeDescriptions":{}}},"id":16400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11299:15:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16401,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16352,"src":"11316:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16394,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"11284:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":16396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11290:8:61","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"11284:14:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":16402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11284:41:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16403,"nodeType":"ExpressionStatement","src":"11284:41:61"},{"expression":{"arguments":[{"id":16407,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"11357:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":16408,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16352,"src":"11364:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16404,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11343:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11350:6:61","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"11343:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":16409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11343:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16410,"nodeType":"ExpressionStatement","src":"11343:30:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16337,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16334,"src":"10778:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16338,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16326,"src":"10782:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":16339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10789:6:61","memberName":"length","nodeType":"MemberAccess","src":"10782:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10778:17:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16440,"initializationExpression":{"assignments":[16334],"declarations":[{"constant":false,"id":16334,"mutability":"mutable","name":"i","nameLocation":"10771:1:61","nodeType":"VariableDeclaration","scope":16440,"src":"10763:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16333,"name":"uint256","nodeType":"ElementaryTypeName","src":"10763:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16336,"initialValue":{"hexValue":"30","id":16335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10775:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10763:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10797:3:61","subExpression":{"id":16341,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16334,"src":"10799:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16343,"nodeType":"ExpressionStatement","src":"10797:3:61"},"nodeType":"ForStatement","src":"10758:999:61"},{"expression":{"arguments":[{"expression":{"id":16442,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16285,"src":"11821:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":16443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11828:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2738,"src":"11821:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16441,"name":"_returnEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"11810:10:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":16444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11810:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16445,"nodeType":"ExpressionStatement","src":"11810:25:61"}]},"documentation":{"id":16282,"nodeType":"StructuredDocumentation","src":"9579:401:61","text":" @notice Hook for adding liquidity.\n @dev Can only be called by the Vault.\n @param params Add liquidity parameters (see IRouter for struct definition)\n @return amountsIn Actual amounts in required for the join\n @return bptAmountOut BPT amount minted in exchange for the input tokens\n @return returnData Arbitrary data with encoded response from the pool"},"functionSelector":"5b343791","id":16447,"implemented":true,"kind":"function","modifiers":[{"id":16288,"kind":"modifierInvocation","modifierName":{"id":16287,"name":"nonReentrant","nameLocations":["10090:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"10090:12:61"},"nodeType":"ModifierInvocation","src":"10090:12:61"},{"id":16290,"kind":"modifierInvocation","modifierName":{"id":16289,"name":"onlyVault","nameLocations":["10111:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"10111:9:61"},"nodeType":"ModifierInvocation","src":"10111:9:61"}],"name":"addLiquidityHook","nameLocation":"9994:16:61","nodeType":"FunctionDefinition","parameters":{"id":16286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16285,"mutability":"mutable","name":"params","nameLocation":"10052:6:61","nodeType":"VariableDeclaration","scope":16447,"src":"10020:38:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams"},"typeName":{"id":16284,"nodeType":"UserDefinedTypeName","pathNode":{"id":16283,"name":"AddLiquidityHookParams","nameLocations":["10020:22:61"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"10020:22:61"},"referencedDeclaration":2753,"src":"10020:22:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_storage_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams"}},"visibility":"internal"}],"src":"10010:54:61"},"returnParameters":{"id":16298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16293,"mutability":"mutable","name":"amountsIn","nameLocation":"10155:9:61","nodeType":"VariableDeclaration","scope":16447,"src":"10138:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16291,"name":"uint256","nodeType":"ElementaryTypeName","src":"10138:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16292,"nodeType":"ArrayTypeName","src":"10138:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16295,"mutability":"mutable","name":"bptAmountOut","nameLocation":"10174:12:61","nodeType":"VariableDeclaration","scope":16447,"src":"10166:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16294,"name":"uint256","nodeType":"ElementaryTypeName","src":"10166:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16297,"mutability":"mutable","name":"returnData","nameLocation":"10201:10:61","nodeType":"VariableDeclaration","scope":16447,"src":"10188:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16296,"name":"bytes","nodeType":"ElementaryTypeName","src":"10188:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10137:75:61"},"scope":17997,"src":"9985:1857:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2388],"body":{"id":16503,"nodeType":"Block","src":"12361:653:61","statements":[{"expression":{"id":16501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":16469,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16467,"src":"12374:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":16470,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12371:16:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(,uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16477,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"12481:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12488:19:61","memberName":"removeLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16889,"src":"12481:26:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"expression":{"id":16480,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12589:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12593:6:61","memberName":"sender","nodeType":"MemberAccess","src":"12589:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16482,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16450,"src":"12631:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16483,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16455,"src":"12676:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16484,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16452,"src":"12731:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16485,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"12779:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":16486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12799:12:61","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4606,"src":"12779:32:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"id":16487,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16457,"src":"12848:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16488,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16459,"src":"12893:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16479,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"12529:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":16489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12581:6:61","12625:4:61","12661:13:61","12715:14:61","12773:4:61","12837:9:61","12883:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"12529:395:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":16475,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12445:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12449:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"12445:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12445:497:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16473,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"12414:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12421:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"12414:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12414:542:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":16493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12971:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16492,"name":"uint256","nodeType":"ElementaryTypeName","src":"12971:7:61","typeDescriptions":{}}},{"baseExpression":{"id":16495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12980:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16494,"name":"uint256","nodeType":"ElementaryTypeName","src":"12980:7:61","typeDescriptions":{}}},"id":16496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"12980:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12991:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16497,"name":"bytes","nodeType":"ElementaryTypeName","src":"12991:5:61","typeDescriptions":{}}}],"id":16499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12970:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":16471,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12390:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12394:6:61","memberName":"decode","nodeType":"MemberAccess","src":"12390:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12390:617:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"src":"12371:636:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16502,"nodeType":"ExpressionStatement","src":"12371:636:61"}]},"documentation":{"id":16448,"nodeType":"StructuredDocumentation","src":"12061:23:61","text":"@inheritdoc IRouter"},"functionSelector":"51682750","id":16504,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16462,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12311:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12315:6:61","memberName":"sender","nodeType":"MemberAccess","src":"12311:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16464,"kind":"modifierInvocation","modifierName":{"id":16461,"name":"saveSender","nameLocations":["12300:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"12300:10:61"},"nodeType":"ModifierInvocation","src":"12300:22:61"}],"name":"removeLiquidityProportional","nameLocation":"12098:27:61","nodeType":"FunctionDefinition","parameters":{"id":16460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16450,"mutability":"mutable","name":"pool","nameLocation":"12143:4:61","nodeType":"VariableDeclaration","scope":16504,"src":"12135:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16449,"name":"address","nodeType":"ElementaryTypeName","src":"12135:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16452,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"12165:16:61","nodeType":"VariableDeclaration","scope":16504,"src":"12157:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16451,"name":"uint256","nodeType":"ElementaryTypeName","src":"12157:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16455,"mutability":"mutable","name":"minAmountsOut","nameLocation":"12208:13:61","nodeType":"VariableDeclaration","scope":16504,"src":"12191:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16453,"name":"uint256","nodeType":"ElementaryTypeName","src":"12191:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16454,"nodeType":"ArrayTypeName","src":"12191:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16457,"mutability":"mutable","name":"wethIsEth","nameLocation":"12236:9:61","nodeType":"VariableDeclaration","scope":16504,"src":"12231:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16456,"name":"bool","nodeType":"ElementaryTypeName","src":"12231:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16459,"mutability":"mutable","name":"userData","nameLocation":"12268:8:61","nodeType":"VariableDeclaration","scope":16504,"src":"12255:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16458,"name":"bytes","nodeType":"ElementaryTypeName","src":"12255:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12125:157:61"},"returnParameters":{"id":16468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16467,"mutability":"mutable","name":"amountsOut","nameLocation":"12349:10:61","nodeType":"VariableDeclaration","scope":16504,"src":"12332:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16465,"name":"uint256","nodeType":"ElementaryTypeName","src":"12332:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16466,"nodeType":"ArrayTypeName","src":"12332:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12331:29:61"},"scope":17997,"src":"12089:925:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2407],"body":{"id":16580,"nodeType":"Block","src":"13331:894:61","statements":[{"assignments":[16531,16533],"declarations":[{"constant":false,"id":16531,"mutability":"mutable","name":"minAmountsOut","nameLocation":"13359:13:61","nodeType":"VariableDeclaration","scope":16580,"src":"13342:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16529,"name":"uint256","nodeType":"ElementaryTypeName","src":"13342:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16530,"nodeType":"ArrayTypeName","src":"13342:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16533,"mutability":"mutable","name":"tokenIndex","nameLocation":"13382:10:61","nodeType":"VariableDeclaration","scope":16580,"src":"13374:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16532,"name":"uint256","nodeType":"ElementaryTypeName","src":"13374:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16539,"initialValue":{"arguments":[{"id":16535,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16507,"src":"13443:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16536,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16512,"src":"13461:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":16537,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16514,"src":"13483:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16534,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"13396:33:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":16538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13396:109:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"13341:164:61"},{"assignments":[null,16544,null],"declarations":[null,{"constant":false,"id":16544,"mutability":"mutable","name":"amountsOut","nameLocation":"13536:10:61","nodeType":"VariableDeclaration","scope":16580,"src":"13519:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16542,"name":"uint256","nodeType":"ElementaryTypeName","src":"13519:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16543,"nodeType":"ArrayTypeName","src":"13519:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null],"id":16575,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16551,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"13643:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13650:19:61","memberName":"removeLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16889,"src":"13643:26:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"expression":{"id":16554,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13751:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13755:6:61","memberName":"sender","nodeType":"MemberAccess","src":"13751:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16556,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16507,"src":"13793:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16557,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16531,"src":"13838:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16558,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16509,"src":"13893:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16559,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"13941:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":16560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13961:21:61","memberName":"SINGLE_TOKEN_EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4607,"src":"13941:41:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"id":16561,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16516,"src":"14019:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16562,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16518,"src":"14064:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16553,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"13691:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":16563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["13743:6:61","13787:4:61","13823:13:61","13877:14:61","13935:4:61","14008:9:61","14054:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"13691:404:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":16549,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13607:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13611:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"13607:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13607:506:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16547,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"13576:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13583:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"13576:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13576:551:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":16567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14142:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16566,"name":"uint256","nodeType":"ElementaryTypeName","src":"14142:7:61","typeDescriptions":{}}},{"baseExpression":{"id":16569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14151:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16568,"name":"uint256","nodeType":"ElementaryTypeName","src":"14151:7:61","typeDescriptions":{}}},"id":16570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"14151:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14162:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16571,"name":"bytes","nodeType":"ElementaryTypeName","src":"14162:5:61","typeDescriptions":{}}}],"id":16573,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14141:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":16545,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13552:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13556:6:61","memberName":"decode","nodeType":"MemberAccess","src":"13552:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13552:626:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"13516:662:61"},{"expression":{"baseExpression":{"id":16576,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16544,"src":"14196:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16578,"indexExpression":{"id":16577,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16533,"src":"14207:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14196:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16526,"id":16579,"nodeType":"Return","src":"14189:29:61"}]},"documentation":{"id":16505,"nodeType":"StructuredDocumentation","src":"13020:23:61","text":"@inheritdoc IRouter"},"functionSelector":"ecb2182c","id":16581,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16521,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13291:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13295:6:61","memberName":"sender","nodeType":"MemberAccess","src":"13291:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16523,"kind":"modifierInvocation","modifierName":{"id":16520,"name":"saveSender","nameLocations":["13280:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"13280:10:61"},"nodeType":"ModifierInvocation","src":"13280:22:61"}],"name":"removeLiquiditySingleTokenExactIn","nameLocation":"13057:33:61","nodeType":"FunctionDefinition","parameters":{"id":16519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16507,"mutability":"mutable","name":"pool","nameLocation":"13108:4:61","nodeType":"VariableDeclaration","scope":16581,"src":"13100:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16506,"name":"address","nodeType":"ElementaryTypeName","src":"13100:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16509,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"13130:16:61","nodeType":"VariableDeclaration","scope":16581,"src":"13122:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16508,"name":"uint256","nodeType":"ElementaryTypeName","src":"13122:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16512,"mutability":"mutable","name":"tokenOut","nameLocation":"13163:8:61","nodeType":"VariableDeclaration","scope":16581,"src":"13156:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":16511,"nodeType":"UserDefinedTypeName","pathNode":{"id":16510,"name":"IERC20","nameLocations":["13156:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"13156:6:61"},"referencedDeclaration":39274,"src":"13156:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":16514,"mutability":"mutable","name":"minAmountOut","nameLocation":"13189:12:61","nodeType":"VariableDeclaration","scope":16581,"src":"13181:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16513,"name":"uint256","nodeType":"ElementaryTypeName","src":"13181:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16516,"mutability":"mutable","name":"wethIsEth","nameLocation":"13216:9:61","nodeType":"VariableDeclaration","scope":16581,"src":"13211:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16515,"name":"bool","nodeType":"ElementaryTypeName","src":"13211:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16518,"mutability":"mutable","name":"userData","nameLocation":"13248:8:61","nodeType":"VariableDeclaration","scope":16581,"src":"13235:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16517,"name":"bytes","nodeType":"ElementaryTypeName","src":"13235:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13090:172:61"},"returnParameters":{"id":16526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16525,"mutability":"mutable","name":"amountOut","nameLocation":"13320:9:61","nodeType":"VariableDeclaration","scope":16581,"src":"13312:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16524,"name":"uint256","nodeType":"ElementaryTypeName","src":"13312:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13311:19:61"},"scope":17997,"src":"13048:1177:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2426],"body":{"id":16651,"nodeType":"Block","src":"14545:804:61","statements":[{"assignments":[16608,null],"declarations":[{"constant":false,"id":16608,"mutability":"mutable","name":"minAmountsOut","nameLocation":"14573:13:61","nodeType":"VariableDeclaration","scope":16651,"src":"14556:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16606,"name":"uint256","nodeType":"ElementaryTypeName","src":"14556:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16607,"nodeType":"ArrayTypeName","src":"14556:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null],"id":16614,"initialValue":{"arguments":[{"id":16610,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16584,"src":"14626:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16611,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16589,"src":"14632:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":16612,"name":"exactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16591,"src":"14642:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16609,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"14592:33:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":16613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14592:65:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14555:102:61"},{"expression":{"id":16647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16615,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"14669:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null,null],"id":16616,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14668:17:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$__$__$","typeString":"tuple(uint256,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16623,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"14779:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14786:19:61","memberName":"removeLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16889,"src":"14779:26:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"expression":{"id":16626,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14887:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14891:6:61","memberName":"sender","nodeType":"MemberAccess","src":"14887:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16628,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16584,"src":"14929:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16629,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16608,"src":"14974:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16630,"name":"maxBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16586,"src":"15029:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16631,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"15075:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":16632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15095:22:61","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4608,"src":"15075:42:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"id":16633,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16593,"src":"15154:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16634,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16595,"src":"15199:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16625,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"14827:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":16635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["14879:6:61","14923:4:61","14959:13:61","15013:14:61","15069:4:61","15143:9:61","15189:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"14827:403:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":16621,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14743:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14747:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"14743:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:505:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16619,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14712:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14719:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"14712:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14712:550:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":16639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15277:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16638,"name":"uint256","nodeType":"ElementaryTypeName","src":"15277:7:61","typeDescriptions":{}}},{"baseExpression":{"id":16641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15286:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16640,"name":"uint256","nodeType":"ElementaryTypeName","src":"15286:7:61","typeDescriptions":{}}},"id":16642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"15286:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15297:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16643,"name":"bytes","nodeType":"ElementaryTypeName","src":"15297:5:61","typeDescriptions":{}}}],"id":16645,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15276:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":16617,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14688:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14692:6:61","memberName":"decode","nodeType":"MemberAccess","src":"14688:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14688:625:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"src":"14668:645:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16648,"nodeType":"ExpressionStatement","src":"14668:645:61"},{"expression":{"id":16649,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16602,"src":"15331:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16603,"id":16650,"nodeType":"Return","src":"15324:18:61"}]},"documentation":{"id":16582,"nodeType":"StructuredDocumentation","src":"14231:23:61","text":"@inheritdoc IRouter"},"functionSelector":"e7326def","id":16652,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16598,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14503:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14507:6:61","memberName":"sender","nodeType":"MemberAccess","src":"14503:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16600,"kind":"modifierInvocation","modifierName":{"id":16597,"name":"saveSender","nameLocations":["14492:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"14492:10:61"},"nodeType":"ModifierInvocation","src":"14492:22:61"}],"name":"removeLiquiditySingleTokenExactOut","nameLocation":"14268:34:61","nodeType":"FunctionDefinition","parameters":{"id":16596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16584,"mutability":"mutable","name":"pool","nameLocation":"14320:4:61","nodeType":"VariableDeclaration","scope":16652,"src":"14312:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16583,"name":"address","nodeType":"ElementaryTypeName","src":"14312:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16586,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"14342:14:61","nodeType":"VariableDeclaration","scope":16652,"src":"14334:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16585,"name":"uint256","nodeType":"ElementaryTypeName","src":"14334:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16589,"mutability":"mutable","name":"tokenOut","nameLocation":"14373:8:61","nodeType":"VariableDeclaration","scope":16652,"src":"14366:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":16588,"nodeType":"UserDefinedTypeName","pathNode":{"id":16587,"name":"IERC20","nameLocations":["14366:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14366:6:61"},"referencedDeclaration":39274,"src":"14366:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":16591,"mutability":"mutable","name":"exactAmountOut","nameLocation":"14399:14:61","nodeType":"VariableDeclaration","scope":16652,"src":"14391:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16590,"name":"uint256","nodeType":"ElementaryTypeName","src":"14391:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16593,"mutability":"mutable","name":"wethIsEth","nameLocation":"14428:9:61","nodeType":"VariableDeclaration","scope":16652,"src":"14423:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16592,"name":"bool","nodeType":"ElementaryTypeName","src":"14423:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16595,"mutability":"mutable","name":"userData","nameLocation":"14460:8:61","nodeType":"VariableDeclaration","scope":16652,"src":"14447:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16594,"name":"bytes","nodeType":"ElementaryTypeName","src":"14447:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14302:172:61"},"returnParameters":{"id":16603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16602,"mutability":"mutable","name":"bptAmountIn","nameLocation":"14532:11:61","nodeType":"VariableDeclaration","scope":16652,"src":"14524:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16601,"name":"uint256","nodeType":"ElementaryTypeName","src":"14524:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14523:21:61"},"scope":17997,"src":"14259:1090:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2448],"body":{"id":16709,"nodeType":"Block","src":"15729:709:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16684,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"15861:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15868:19:61","memberName":"removeLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16889,"src":"15861:26:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"expression":{"id":16687,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15977:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15981:6:61","memberName":"sender","nodeType":"MemberAccess","src":"15977:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16689,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16655,"src":"16023:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16690,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16660,"src":"16072:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16691,"name":"maxBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"16131:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16692,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"16181:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":16693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16201:6:61","memberName":"CUSTOM","nodeType":"MemberAccess","referencedDeclaration":4609,"src":"16181:26:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"id":16694,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16662,"src":"16248:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16695,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16664,"src":"16297:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16686,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"15913:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":16696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["15969:6:61","16017:4:61","16057:13:61","16115:14:61","16175:4:61","16237:9:61","16287:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"15913:419:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.removeLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":16682,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15821:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15825:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"15821:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15821:533:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16680,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"15786:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15793:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"15786:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15786:586:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":16700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16391:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16699,"name":"uint256","nodeType":"ElementaryTypeName","src":"16391:7:61","typeDescriptions":{}}},{"baseExpression":{"id":16702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16400:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16701,"name":"uint256","nodeType":"ElementaryTypeName","src":"16400:7:61","typeDescriptions":{}}},"id":16703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"16400:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":16705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16411:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":16704,"name":"bytes","nodeType":"ElementaryTypeName","src":"16411:5:61","typeDescriptions":{}}}],"id":16706,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16390:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":16678,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15758:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15762:6:61","memberName":"decode","nodeType":"MemberAccess","src":"15758:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15758:673:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"functionReturnParameters":16677,"id":16708,"nodeType":"Return","src":"15739:692:61"}]},"documentation":{"id":16653,"nodeType":"StructuredDocumentation","src":"15355:23:61","text":"@inheritdoc IRouter"},"functionSelector":"82bf2b24","id":16710,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16667,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15621:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15625:6:61","memberName":"sender","nodeType":"MemberAccess","src":"15621:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16669,"kind":"modifierInvocation","modifierName":{"id":16666,"name":"saveSender","nameLocations":["15610:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"15610:10:61"},"nodeType":"ModifierInvocation","src":"15610:22:61"}],"name":"removeLiquidityCustom","nameLocation":"15392:21:61","nodeType":"FunctionDefinition","parameters":{"id":16665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16655,"mutability":"mutable","name":"pool","nameLocation":"15431:4:61","nodeType":"VariableDeclaration","scope":16710,"src":"15423:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16654,"name":"address","nodeType":"ElementaryTypeName","src":"15423:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16657,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"15453:14:61","nodeType":"VariableDeclaration","scope":16710,"src":"15445:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16656,"name":"uint256","nodeType":"ElementaryTypeName","src":"15445:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16660,"mutability":"mutable","name":"minAmountsOut","nameLocation":"15494:13:61","nodeType":"VariableDeclaration","scope":16710,"src":"15477:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16658,"name":"uint256","nodeType":"ElementaryTypeName","src":"15477:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16659,"nodeType":"ArrayTypeName","src":"15477:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16662,"mutability":"mutable","name":"wethIsEth","nameLocation":"15522:9:61","nodeType":"VariableDeclaration","scope":16710,"src":"15517:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16661,"name":"bool","nodeType":"ElementaryTypeName","src":"15517:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16664,"mutability":"mutable","name":"userData","nameLocation":"15554:8:61","nodeType":"VariableDeclaration","scope":16710,"src":"15541:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16663,"name":"bytes","nodeType":"ElementaryTypeName","src":"15541:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15413:155:61"},"returnParameters":{"id":16677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16671,"mutability":"mutable","name":"bptAmountIn","nameLocation":"15658:11:61","nodeType":"VariableDeclaration","scope":16710,"src":"15650:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16670,"name":"uint256","nodeType":"ElementaryTypeName","src":"15650:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16674,"mutability":"mutable","name":"amountsOut","nameLocation":"15688:10:61","nodeType":"VariableDeclaration","scope":16710,"src":"15671:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16672,"name":"uint256","nodeType":"ElementaryTypeName","src":"15671:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16673,"nodeType":"ArrayTypeName","src":"15671:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16676,"mutability":"mutable","name":"returnData","nameLocation":"15713:10:61","nodeType":"VariableDeclaration","scope":16710,"src":"15700:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16675,"name":"bytes","nodeType":"ElementaryTypeName","src":"15700:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15649:75:61"},"scope":17997,"src":"15383:1055:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2462],"body":{"id":16748,"nodeType":"Block","src":"16662:237:61","statements":[{"expression":{"id":16746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16724,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16722,"src":"16672:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":16731,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"16755:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":16732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16762:27:61","memberName":"removeLiquidityRecoveryHook","nodeType":"MemberAccess","referencedDeclaration":16968,"src":"16755:34:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function Router.removeLiquidityRecoveryHook(address,address,uint256,uint256[] memory) returns (uint256[] memory)"}},{"components":[{"id":16733,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16713,"src":"16792:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16734,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16798:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16802:6:61","memberName":"sender","nodeType":"MemberAccess","src":"16798:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16736,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16715,"src":"16810:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16737,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16718,"src":"16828:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":16738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16791:51:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(address,address,uint256,uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function Router.removeLiquidityRecoveryHook(address,address,uint256,uint256[] memory) returns (uint256[] memory)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(address,address,uint256,uint256[] memory)"}],"expression":{"id":16729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16740:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16744:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"16740:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":16739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16740:103:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16727,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"16709:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16716:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"16709:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":16740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16709:148:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":16742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16872:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16741,"name":"uint256","nodeType":"ElementaryTypeName","src":"16872:7:61","typeDescriptions":{}}},"id":16743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"16872:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":16744,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16871:11:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"id":16725,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16685:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16689:6:61","memberName":"decode","nodeType":"MemberAccess","src":"16685:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":16745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16685:207:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"16672:220:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16747,"nodeType":"ExpressionStatement","src":"16672:220:61"}]},"documentation":{"id":16711,"nodeType":"StructuredDocumentation","src":"16444:23:61","text":"@inheritdoc IRouter"},"functionSelector":"08c04793","id":16749,"implemented":true,"kind":"function","modifiers":[],"name":"removeLiquidityRecovery","nameLocation":"16481:23:61","nodeType":"FunctionDefinition","parameters":{"id":16719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16713,"mutability":"mutable","name":"pool","nameLocation":"16522:4:61","nodeType":"VariableDeclaration","scope":16749,"src":"16514:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16712,"name":"address","nodeType":"ElementaryTypeName","src":"16514:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16715,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"16544:16:61","nodeType":"VariableDeclaration","scope":16749,"src":"16536:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16714,"name":"uint256","nodeType":"ElementaryTypeName","src":"16536:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16718,"mutability":"mutable","name":"minAmountsOut","nameLocation":"16587:13:61","nodeType":"VariableDeclaration","scope":16749,"src":"16570:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16716,"name":"uint256","nodeType":"ElementaryTypeName","src":"16570:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16717,"nodeType":"ArrayTypeName","src":"16570:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16504:102:61"},"returnParameters":{"id":16723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16722,"mutability":"mutable","name":"amountsOut","nameLocation":"16650:10:61","nodeType":"VariableDeclaration","scope":16749,"src":"16633:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16720,"name":"uint256","nodeType":"ElementaryTypeName","src":"16633:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16721,"nodeType":"ArrayTypeName","src":"16633:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16632:29:61"},"scope":17997,"src":"16472:427:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":16888,"nodeType":"Block","src":"17574:1372:61","statements":[{"expression":{"id":16788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16767,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16760,"src":"17585:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16768,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16763,"src":"17598:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":16769,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16765,"src":"17610:10:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":16770,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17584:37:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":16774,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"17706:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17713:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2758,"src":"17706:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16776,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"17741:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17748:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2756,"src":"17741:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":16778,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"17788:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17795:14:61","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":2763,"src":"17788:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":16780,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"17842:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17849:13:61","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":2761,"src":"17842:20:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"expression":{"id":16782,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"17886:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17893:4:61","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":2766,"src":"17886:11:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"expression":{"id":16784,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"17925:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17932:8:61","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":2770,"src":"17925:15:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":16773,"name":"RemoveLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4626,"src":"17660:21:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityParams_$4626_storage_ptr_$","typeString":"type(struct RemoveLiquidityParams storage pointer)"}},"id":16786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["17700:4:61","17735:4:61","17772:14:61","17827:13:61","17880:4:61","17915:8:61"],"names":["pool","from","maxBptAmountIn","minAmountsOut","kind","userData"],"nodeType":"FunctionCall","src":"17660:295:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}],"expression":{"id":16771,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"17624:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17631:15:61","memberName":"removeLiquidity","nodeType":"MemberAccess","referencedDeclaration":4285,"src":"17624:22:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct RemoveLiquidityParams memory) external returns (uint256,uint256[] memory,bytes memory)"}},"id":16787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17624:341:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"src":"17584:381:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16789,"nodeType":"ExpressionStatement","src":"17584:381:61"},{"assignments":[16794],"declarations":[{"constant":false,"id":16794,"mutability":"mutable","name":"tokens","nameLocation":"18071:6:61","nodeType":"VariableDeclaration","scope":16888,"src":"18055:22:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":16792,"nodeType":"UserDefinedTypeName","pathNode":{"id":16791,"name":"IERC20","nameLocations":["18055:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18055:6:61"},"referencedDeclaration":39274,"src":"18055:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":16793,"nodeType":"ArrayTypeName","src":"18055:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":16800,"initialValue":{"arguments":[{"expression":{"id":16797,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"18101:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18108:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2758,"src":"18101:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16795,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"18080:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18087:13:61","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"18080:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":16799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18080:33:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"18055:58:61"},{"body":{"id":16881,"nodeType":"Block","src":"18168:736:61","statements":[{"assignments":[16813],"declarations":[{"constant":false,"id":16813,"mutability":"mutable","name":"amountOut","nameLocation":"18190:9:61","nodeType":"VariableDeclaration","scope":16881,"src":"18182:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16812,"name":"uint256","nodeType":"ElementaryTypeName","src":"18182:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16817,"initialValue":{"baseExpression":{"id":16814,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16763,"src":"18202:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16816,"indexExpression":{"id":16815,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16802,"src":"18213:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18202:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18182:33:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16818,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16813,"src":"18233:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18246:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18233:14:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16823,"nodeType":"IfStatement","src":"18229:61:61","trueBody":{"id":16822,"nodeType":"Block","src":"18249:41:61","statements":[{"id":16821,"nodeType":"Continue","src":"18267:8:61"}]}},{"assignments":[16826],"declarations":[{"constant":false,"id":16826,"mutability":"mutable","name":"token","nameLocation":"18311:5:61","nodeType":"VariableDeclaration","scope":16881,"src":"18304:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":16825,"nodeType":"UserDefinedTypeName","pathNode":{"id":16824,"name":"IERC20","nameLocations":["18304:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18304:6:61"},"referencedDeclaration":39274,"src":"18304:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":16830,"initialValue":{"baseExpression":{"id":16827,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16794,"src":"18319:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":16829,"indexExpression":{"id":16828,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16802,"src":"18326:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18319:9:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"18304:24:61"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16831,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"18408:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18415:9:61","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":2768,"src":"18408:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16835,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16826,"src":"18436:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":16834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18428:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16833,"name":"address","nodeType":"ElementaryTypeName","src":"18428:7:61","typeDescriptions":{}}},"id":16836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18428:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":16839,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"18454:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}],"id":16838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18446:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16837,"name":"address","nodeType":"ElementaryTypeName","src":"18446:7:61","typeDescriptions":{}}},"id":16840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18446:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18428:32:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18408:52:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16879,"nodeType":"Block","src":"18750:144:61","statements":[{"expression":{"arguments":[{"id":16873,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16826,"src":"18847:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":16874,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"18854:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18861:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2756,"src":"18854:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16876,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16813,"src":"18869:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16870,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"18833:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18840:6:61","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"18833:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":16877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:46:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16878,"nodeType":"ExpressionStatement","src":"18833:46:61"}]},"id":16880,"nodeType":"IfStatement","src":"18404:490:61","trueBody":{"id":16869,"nodeType":"Block","src":"18462:282:61","statements":[{"expression":{"arguments":[{"id":16846,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"18554:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"arguments":[{"id":16849,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18569:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":16848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18561:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16847,"name":"address","nodeType":"ElementaryTypeName","src":"18561:7:61","typeDescriptions":{}}},"id":16850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18561:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16851,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16813,"src":"18576:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16843,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"18540:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18547:6:61","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"18540:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":16852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18540:46:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16853,"nodeType":"ExpressionStatement","src":"18540:46:61"},{"expression":{"arguments":[{"id":16857,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16813,"src":"18619:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16854,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"18604:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":16856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18610:8:61","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":177,"src":"18604:14:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":16858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18604:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16859,"nodeType":"ExpressionStatement","src":"18604:25:61"},{"expression":{"arguments":[{"id":16866,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16813,"src":"18719:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":16862,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"18694:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18701:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2756,"src":"18694:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18686:8:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":16860,"name":"address","nodeType":"ElementaryTypeName","src":"18686:8:61","stateMutability":"payable","typeDescriptions":{}}},"id":16864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18686:22:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":16865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18709:9:61","memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":39683,"src":"18686:32:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":16867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18686:43:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16868,"nodeType":"ExpressionStatement","src":"18686:43:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16805,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16802,"src":"18144:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16806,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16794,"src":"18148:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":16807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18155:6:61","memberName":"length","nodeType":"MemberAccess","src":"18148:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18144:17:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16882,"initializationExpression":{"assignments":[16802],"declarations":[{"constant":false,"id":16802,"mutability":"mutable","name":"i","nameLocation":"18137:1:61","nodeType":"VariableDeclaration","scope":16882,"src":"18129:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16801,"name":"uint256","nodeType":"ElementaryTypeName","src":"18129:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16804,"initialValue":{"hexValue":"30","id":16803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18141:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18129:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18163:3:61","subExpression":{"id":16809,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16802,"src":"18165:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16811,"nodeType":"ExpressionStatement","src":"18163:3:61"},"nodeType":"ForStatement","src":"18124:780:61"},{"expression":{"arguments":[{"expression":{"id":16884,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16753,"src":"18925:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":16885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18932:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2756,"src":"18925:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16883,"name":"_returnEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"18914:10:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":16886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18914:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16887,"nodeType":"ExpressionStatement","src":"18914:25:61"}]},"documentation":{"id":16750,"nodeType":"StructuredDocumentation","src":"16905:426:61","text":" @notice Hook for removing liquidity.\n @dev Can only be called by the Vault.\n @param params Remove liquidity parameters (see IRouter for struct definition)\n @return bptAmountIn BPT amount burned for the output tokens\n @return amountsOut Actual token amounts transferred in exchange for the BPT\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"7b03c7ba","id":16889,"implemented":true,"kind":"function","modifiers":[{"id":16756,"kind":"modifierInvocation","modifierName":{"id":16755,"name":"nonReentrant","nameLocations":["17447:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"17447:12:61"},"nodeType":"ModifierInvocation","src":"17447:12:61"},{"id":16758,"kind":"modifierInvocation","modifierName":{"id":16757,"name":"onlyVault","nameLocations":["17468:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"17468:9:61"},"nodeType":"ModifierInvocation","src":"17468:9:61"}],"name":"removeLiquidityHook","nameLocation":"17345:19:61","nodeType":"FunctionDefinition","parameters":{"id":16754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16753,"mutability":"mutable","name":"params","nameLocation":"17409:6:61","nodeType":"VariableDeclaration","scope":16889,"src":"17374:41:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams"},"typeName":{"id":16752,"nodeType":"UserDefinedTypeName","pathNode":{"id":16751,"name":"RemoveLiquidityHookParams","nameLocations":["17374:25:61"],"nodeType":"IdentifierPath","referencedDeclaration":2771,"src":"17374:25:61"},"referencedDeclaration":2771,"src":"17374:25:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams"}},"visibility":"internal"}],"src":"17364:57:61"},"returnParameters":{"id":16766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16760,"mutability":"mutable","name":"bptAmountIn","nameLocation":"17503:11:61","nodeType":"VariableDeclaration","scope":16889,"src":"17495:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16759,"name":"uint256","nodeType":"ElementaryTypeName","src":"17495:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16763,"mutability":"mutable","name":"amountsOut","nameLocation":"17533:10:61","nodeType":"VariableDeclaration","scope":16889,"src":"17516:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16761,"name":"uint256","nodeType":"ElementaryTypeName","src":"17516:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16762,"nodeType":"ArrayTypeName","src":"17516:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":16765,"mutability":"mutable","name":"returnData","nameLocation":"17558:10:61","nodeType":"VariableDeclaration","scope":16889,"src":"17545:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16764,"name":"bytes","nodeType":"ElementaryTypeName","src":"17545:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17494:75:61"},"scope":17997,"src":"17336:1610:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16967,"nodeType":"Block","src":"19722:483:61","statements":[{"expression":{"id":16917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16909,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16907,"src":"19732:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16912,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16892,"src":"19776:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16913,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16894,"src":"19782:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16914,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16896,"src":"19790:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":16915,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16899,"src":"19808:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":16910,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"19745:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19752:23:61","memberName":"removeLiquidityRecovery","nodeType":"MemberAccess","referencedDeclaration":4166,"src":"19745:30:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,address,uint256,uint256[] memory) external returns (uint256[] memory)"}},"id":16916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19745:77:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"19732:90:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16918,"nodeType":"ExpressionStatement","src":"19732:90:61"},{"assignments":[16923],"declarations":[{"constant":false,"id":16923,"mutability":"mutable","name":"tokens","nameLocation":"19849:6:61","nodeType":"VariableDeclaration","scope":16967,"src":"19833:22:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":16921,"nodeType":"UserDefinedTypeName","pathNode":{"id":16920,"name":"IERC20","nameLocations":["19833:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"19833:6:61"},"referencedDeclaration":39274,"src":"19833:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":16922,"nodeType":"ArrayTypeName","src":"19833:8:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":16928,"initialValue":{"arguments":[{"id":16926,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16892,"src":"19879:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16924,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"19858:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19865:13:61","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"19858:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":16927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19858:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"19833:51:61"},{"body":{"id":16961,"nodeType":"Block","src":"19939:231:61","statements":[{"assignments":[16941],"declarations":[{"constant":false,"id":16941,"mutability":"mutable","name":"amountOut","nameLocation":"19961:9:61","nodeType":"VariableDeclaration","scope":16961,"src":"19953:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16940,"name":"uint256","nodeType":"ElementaryTypeName","src":"19953:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16945,"initialValue":{"baseExpression":{"id":16942,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16907,"src":"19973:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":16944,"indexExpression":{"id":16943,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16930,"src":"19984:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19973:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19953:33:61"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16946,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16941,"src":"20004:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20016:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20004:13:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16960,"nodeType":"IfStatement","src":"20000:160:61","trueBody":{"id":16959,"nodeType":"Block","src":"20019:141:61","statements":[{"expression":{"arguments":[{"baseExpression":{"id":16952,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16923,"src":"20116:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":16954,"indexExpression":{"id":16953,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16930,"src":"20123:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20116:9:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":16955,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16894,"src":"20127:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16956,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16941,"src":"20135:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16949,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"20102:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20109:6:61","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"20102:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":16957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20102:43:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16958,"nodeType":"ExpressionStatement","src":"20102:43:61"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16933,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16930,"src":"19915:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16934,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16923,"src":"19919:6:61","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":16935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19926:6:61","memberName":"length","nodeType":"MemberAccess","src":"19919:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19915:17:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16962,"initializationExpression":{"assignments":[16930],"declarations":[{"constant":false,"id":16930,"mutability":"mutable","name":"i","nameLocation":"19908:1:61","nodeType":"VariableDeclaration","scope":16962,"src":"19900:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16929,"name":"uint256","nodeType":"ElementaryTypeName","src":"19900:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16932,"initialValue":{"hexValue":"30","id":16931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19912:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19900:13:61"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"19934:3:61","subExpression":{"id":16937,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16930,"src":"19936:1:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16939,"nodeType":"ExpressionStatement","src":"19934:3:61"},"nodeType":"ForStatement","src":"19895:275:61"},{"expression":{"arguments":[{"id":16964,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16894,"src":"20191:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16963,"name":"_returnEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"20180:10:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":16965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20180:18:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16966,"nodeType":"ExpressionStatement","src":"20180:18:61"}]},"documentation":{"id":16890,"nodeType":"StructuredDocumentation","src":"18952:532:61","text":" @notice Hook for removing liquidity in Recovery Mode.\n @dev Can only be called by the Vault, when the pool is in Recovery Mode.\n @param pool Address of the liquidity pool\n @param sender Account originating the remove liquidity operation\n @param exactBptAmountIn BPT amount burned for the output tokens\n @param minAmountsOut Minimum amounts of tokens to be received, sorted in token registration order\n @return amountsOut Actual token amounts transferred in exchange for the BPT"},"functionSelector":"82cd54fb","id":16968,"implemented":true,"kind":"function","modifiers":[{"id":16902,"kind":"modifierInvocation","modifierName":{"id":16901,"name":"nonReentrant","nameLocations":["19661:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"19661:12:61"},"nodeType":"ModifierInvocation","src":"19661:12:61"},{"id":16904,"kind":"modifierInvocation","modifierName":{"id":16903,"name":"onlyVault","nameLocations":["19674:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"19674:9:61"},"nodeType":"ModifierInvocation","src":"19674:9:61"}],"name":"removeLiquidityRecoveryHook","nameLocation":"19498:27:61","nodeType":"FunctionDefinition","parameters":{"id":16900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16892,"mutability":"mutable","name":"pool","nameLocation":"19543:4:61","nodeType":"VariableDeclaration","scope":16968,"src":"19535:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16891,"name":"address","nodeType":"ElementaryTypeName","src":"19535:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16894,"mutability":"mutable","name":"sender","nameLocation":"19565:6:61","nodeType":"VariableDeclaration","scope":16968,"src":"19557:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16893,"name":"address","nodeType":"ElementaryTypeName","src":"19557:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16896,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"19589:16:61","nodeType":"VariableDeclaration","scope":16968,"src":"19581:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16895,"name":"uint256","nodeType":"ElementaryTypeName","src":"19581:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16899,"mutability":"mutable","name":"minAmountsOut","nameLocation":"19632:13:61","nodeType":"VariableDeclaration","scope":16968,"src":"19615:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16897,"name":"uint256","nodeType":"ElementaryTypeName","src":"19615:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16898,"nodeType":"ArrayTypeName","src":"19615:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"19525:126:61"},"returnParameters":{"id":16908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16907,"mutability":"mutable","name":"amountsOut","nameLocation":"19710:10:61","nodeType":"VariableDeclaration","scope":16968,"src":"19693:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":16905,"name":"uint256","nodeType":"ElementaryTypeName","src":"19693:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16906,"nodeType":"ArrayTypeName","src":"19693:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"19692:29:61"},"scope":17997,"src":"19489:716:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2511],"body":{"id":17025,"nodeType":"Block","src":"20758:811:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17002,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"20890:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20897:19:61","memberName":"swapSingleTokenHook","nodeType":"MemberAccess","referencedDeclaration":17145,"src":"20890:26:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.swapSingleTokenHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"}},{"arguments":[{"expression":{"id":17005,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21006:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21010:6:61","memberName":"sender","nodeType":"MemberAccess","src":"21006:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17007,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"21052:8:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":17008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21061:8:61","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"21052:17:61","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"id":17009,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16971,"src":"21105:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17010,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16974,"src":"21148:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17011,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16977,"src":"21195:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17012,"name":"exactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16979,"src":"21246:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17013,"name":"minAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16981,"src":"21296:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17014,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16983,"src":"21348:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17015,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16985,"src":"21397:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":17016,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16987,"src":"21446:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":17004,"name":"SwapSingleTokenHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"20942:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr_$","typeString":"type(struct IRouter.SwapSingleTokenHookParams storage pointer)"}},"id":17017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["20998:6:61","21046:4:61","21099:4:61","21139:7:61","21185:8:61","21233:11:61","21289:5:61","21338:8:61","21386:9:61","21436:8:61"],"names":["sender","kind","pool","tokenIn","tokenOut","amountGiven","limit","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"20942:539:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.swapSingleTokenHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"},{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}],"expression":{"id":17000,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20850:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20854:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"20850:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20850:653:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16998,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"20815:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":16999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20822:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"20815:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20815:706:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21540:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17020,"name":"uint256","nodeType":"ElementaryTypeName","src":"21540:7:61","typeDescriptions":{}}}],"id":17022,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21539:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":16996,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20787:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":16997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20791:6:61","memberName":"decode","nodeType":"MemberAccess","src":"20787:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20787:775:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16995,"id":17024,"nodeType":"Return","src":"20768:794:61"}]},"documentation":{"id":16969,"nodeType":"StructuredDocumentation","src":"20419:23:61","text":"@inheritdoc IRouter"},"functionSelector":"750283bc","id":17026,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":16990,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20728:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":16991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20732:6:61","memberName":"sender","nodeType":"MemberAccess","src":"20728:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":16992,"kind":"modifierInvocation","modifierName":{"id":16989,"name":"saveSender","nameLocations":["20717:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"20717:10:61"},"nodeType":"ModifierInvocation","src":"20717:22:61"}],"name":"swapSingleTokenExactIn","nameLocation":"20456:22:61","nodeType":"FunctionDefinition","parameters":{"id":16988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16971,"mutability":"mutable","name":"pool","nameLocation":"20496:4:61","nodeType":"VariableDeclaration","scope":17026,"src":"20488:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16970,"name":"address","nodeType":"ElementaryTypeName","src":"20488:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16974,"mutability":"mutable","name":"tokenIn","nameLocation":"20517:7:61","nodeType":"VariableDeclaration","scope":17026,"src":"20510:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":16973,"nodeType":"UserDefinedTypeName","pathNode":{"id":16972,"name":"IERC20","nameLocations":["20510:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"20510:6:61"},"referencedDeclaration":39274,"src":"20510:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":16977,"mutability":"mutable","name":"tokenOut","nameLocation":"20541:8:61","nodeType":"VariableDeclaration","scope":17026,"src":"20534:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":16976,"nodeType":"UserDefinedTypeName","pathNode":{"id":16975,"name":"IERC20","nameLocations":["20534:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"20534:6:61"},"referencedDeclaration":39274,"src":"20534:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":16979,"mutability":"mutable","name":"exactAmountIn","nameLocation":"20567:13:61","nodeType":"VariableDeclaration","scope":17026,"src":"20559:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16978,"name":"uint256","nodeType":"ElementaryTypeName","src":"20559:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16981,"mutability":"mutable","name":"minAmountOut","nameLocation":"20598:12:61","nodeType":"VariableDeclaration","scope":17026,"src":"20590:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16980,"name":"uint256","nodeType":"ElementaryTypeName","src":"20590:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16983,"mutability":"mutable","name":"deadline","nameLocation":"20628:8:61","nodeType":"VariableDeclaration","scope":17026,"src":"20620:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16982,"name":"uint256","nodeType":"ElementaryTypeName","src":"20620:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16985,"mutability":"mutable","name":"wethIsEth","nameLocation":"20651:9:61","nodeType":"VariableDeclaration","scope":17026,"src":"20646:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16984,"name":"bool","nodeType":"ElementaryTypeName","src":"20646:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16987,"mutability":"mutable","name":"userData","nameLocation":"20685:8:61","nodeType":"VariableDeclaration","scope":17026,"src":"20670:23:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":16986,"name":"bytes","nodeType":"ElementaryTypeName","src":"20670:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20478:221:61"},"returnParameters":{"id":16995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17026,"src":"20749:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16993,"name":"uint256","nodeType":"ElementaryTypeName","src":"20749:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20748:9:61"},"scope":17997,"src":"20447:1122:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2535],"body":{"id":17083,"nodeType":"Block","src":"21915:812:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17060,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"22047:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22054:19:61","memberName":"swapSingleTokenHook","nodeType":"MemberAccess","referencedDeclaration":17145,"src":"22047:26:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.swapSingleTokenHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"}},{"arguments":[{"expression":{"id":17063,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22163:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22167:6:61","memberName":"sender","nodeType":"MemberAccess","src":"22163:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17065,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"22209:8:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":17066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22218:9:61","memberName":"EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"22209:18:61","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"id":17067,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17029,"src":"22263:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17068,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17032,"src":"22306:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17069,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17035,"src":"22353:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17070,"name":"exactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17037,"src":"22404:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17071,"name":"maxAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17039,"src":"22455:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17072,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17041,"src":"22506:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17073,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17043,"src":"22555:9:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":17074,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17045,"src":"22604:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":17062,"name":"SwapSingleTokenHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"22099:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr_$","typeString":"type(struct IRouter.SwapSingleTokenHookParams storage pointer)"}},"id":17075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["22155:6:61","22203:4:61","22257:4:61","22297:7:61","22343:8:61","22391:11:61","22448:5:61","22496:8:61","22544:9:61","22594:8:61"],"names":["sender","kind","pool","tokenIn","tokenOut","amountGiven","limit","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"22099:540:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.swapSingleTokenHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"},{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}],"expression":{"id":17058,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"22007:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22011:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"22007:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22007:654:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17056,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"21972:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21979:6:61","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"21972:13:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21972:707:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22698:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17078,"name":"uint256","nodeType":"ElementaryTypeName","src":"22698:7:61","typeDescriptions":{}}}],"id":17080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22697:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":17054,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21944:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21948:6:61","memberName":"decode","nodeType":"MemberAccess","src":"21944:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21944:776:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17053,"id":17082,"nodeType":"Return","src":"21925:795:61"}]},"documentation":{"id":17027,"nodeType":"StructuredDocumentation","src":"21575:23:61","text":"@inheritdoc IRouter"},"functionSelector":"94e86ef8","id":17084,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":17048,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21885:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21889:6:61","memberName":"sender","nodeType":"MemberAccess","src":"21885:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17050,"kind":"modifierInvocation","modifierName":{"id":17047,"name":"saveSender","nameLocations":["21874:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"21874:10:61"},"nodeType":"ModifierInvocation","src":"21874:22:61"}],"name":"swapSingleTokenExactOut","nameLocation":"21612:23:61","nodeType":"FunctionDefinition","parameters":{"id":17046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17029,"mutability":"mutable","name":"pool","nameLocation":"21653:4:61","nodeType":"VariableDeclaration","scope":17084,"src":"21645:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17028,"name":"address","nodeType":"ElementaryTypeName","src":"21645:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17032,"mutability":"mutable","name":"tokenIn","nameLocation":"21674:7:61","nodeType":"VariableDeclaration","scope":17084,"src":"21667:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17031,"nodeType":"UserDefinedTypeName","pathNode":{"id":17030,"name":"IERC20","nameLocations":["21667:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"21667:6:61"},"referencedDeclaration":39274,"src":"21667:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17035,"mutability":"mutable","name":"tokenOut","nameLocation":"21698:8:61","nodeType":"VariableDeclaration","scope":17084,"src":"21691:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17034,"nodeType":"UserDefinedTypeName","pathNode":{"id":17033,"name":"IERC20","nameLocations":["21691:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"21691:6:61"},"referencedDeclaration":39274,"src":"21691:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17037,"mutability":"mutable","name":"exactAmountOut","nameLocation":"21724:14:61","nodeType":"VariableDeclaration","scope":17084,"src":"21716:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17036,"name":"uint256","nodeType":"ElementaryTypeName","src":"21716:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17039,"mutability":"mutable","name":"maxAmountIn","nameLocation":"21756:11:61","nodeType":"VariableDeclaration","scope":17084,"src":"21748:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17038,"name":"uint256","nodeType":"ElementaryTypeName","src":"21748:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17041,"mutability":"mutable","name":"deadline","nameLocation":"21785:8:61","nodeType":"VariableDeclaration","scope":17084,"src":"21777:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17040,"name":"uint256","nodeType":"ElementaryTypeName","src":"21777:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17043,"mutability":"mutable","name":"wethIsEth","nameLocation":"21808:9:61","nodeType":"VariableDeclaration","scope":17084,"src":"21803:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17042,"name":"bool","nodeType":"ElementaryTypeName","src":"21803:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":17045,"mutability":"mutable","name":"userData","nameLocation":"21842:8:61","nodeType":"VariableDeclaration","scope":17084,"src":"21827:23:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":17044,"name":"bytes","nodeType":"ElementaryTypeName","src":"21827:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21635:221:61"},"returnParameters":{"id":17053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17084,"src":"21906:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17051,"name":"uint256","nodeType":"ElementaryTypeName","src":"21906:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21905:9:61"},"scope":17997,"src":"21603:1124:61","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":17144,"nodeType":"Block","src":"23170:465:61","statements":[{"assignments":[17098,17100,17102],"declarations":[{"constant":false,"id":17098,"mutability":"mutable","name":"amountCalculated","nameLocation":"23189:16:61","nodeType":"VariableDeclaration","scope":17144,"src":"23181:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17097,"name":"uint256","nodeType":"ElementaryTypeName","src":"23181:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17100,"mutability":"mutable","name":"amountIn","nameLocation":"23215:8:61","nodeType":"VariableDeclaration","scope":17144,"src":"23207:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17099,"name":"uint256","nodeType":"ElementaryTypeName","src":"23207:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17102,"mutability":"mutable","name":"amountOut","nameLocation":"23233:9:61","nodeType":"VariableDeclaration","scope":17144,"src":"23225:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17101,"name":"uint256","nodeType":"ElementaryTypeName","src":"23225:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17106,"initialValue":{"arguments":[{"id":17104,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23256:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}],"id":17103,"name":"_swapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17193,"src":"23246:9:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256,uint256,uint256)"}},"id":17105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23246:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"23180:83:61"},{"assignments":[17109],"declarations":[{"constant":false,"id":17109,"mutability":"mutable","name":"tokenIn","nameLocation":"23281:7:61","nodeType":"VariableDeclaration","scope":17144,"src":"23274:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17108,"nodeType":"UserDefinedTypeName","pathNode":{"id":17107,"name":"IERC20","nameLocations":["23274:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"23274:6:61"},"referencedDeclaration":39274,"src":"23274:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":17112,"initialValue":{"expression":{"id":17110,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23291:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23298:7:61","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":2473,"src":"23291:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"23274:31:61"},{"expression":{"arguments":[{"expression":{"id":17114,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23329:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23336:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2465,"src":"23329:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17116,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17109,"src":"23344:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17117,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17100,"src":"23353:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17118,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23363:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23370:9:61","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":2484,"src":"23363:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":17113,"name":"_takeTokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18665,"src":"23316:12:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":17120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23316:64:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17121,"nodeType":"ExpressionStatement","src":"23316:64:61"},{"expression":{"arguments":[{"expression":{"id":17123,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23404:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23411:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2465,"src":"23404:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17125,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23419:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23426:8:61","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":2476,"src":"23419:15:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17127,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17102,"src":"23436:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17128,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23447:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23454:9:61","memberName":"wethIsEth","nodeType":"MemberAccess","referencedDeclaration":2484,"src":"23447:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":17122,"name":"_sendTokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18725,"src":"23390:13:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,contract IERC20,uint256,bool)"}},"id":17130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23390:74:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17131,"nodeType":"ExpressionStatement","src":"23390:74:61"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":17134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17132,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17109,"src":"23479:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":17133,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"23490:5:61","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"src":"23479:16:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17141,"nodeType":"IfStatement","src":"23475:120:61","trueBody":{"id":17140,"nodeType":"Block","src":"23497:98:61","statements":[{"expression":{"arguments":[{"expression":{"id":17136,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17088,"src":"23570:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23577:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2465,"src":"23570:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17135,"name":"_returnEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"23559:10:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":17138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23559:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17139,"nodeType":"ExpressionStatement","src":"23559:25:61"}]}},{"expression":{"id":17142,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17098,"src":"23612:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17096,"id":17143,"nodeType":"Return","src":"23605:23:61"}]},"documentation":{"id":17085,"nodeType":"StructuredDocumentation","src":"22733:296:61","text":" @notice Hook for swaps.\n @dev Can only be called by the Vault. Also handles native ETH.\n @param params Swap parameters (see IRouter for struct definition)\n @return amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)"},"functionSelector":"68a24fe0","id":17145,"implemented":true,"kind":"function","modifiers":[{"id":17091,"kind":"modifierInvocation","modifierName":{"id":17090,"name":"nonReentrant","nameLocations":["23129:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"23129:12:61"},"nodeType":"ModifierInvocation","src":"23129:12:61"},{"id":17093,"kind":"modifierInvocation","modifierName":{"id":17092,"name":"onlyVault","nameLocations":["23142:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"23142:9:61"},"nodeType":"ModifierInvocation","src":"23142:9:61"}],"name":"swapSingleTokenHook","nameLocation":"23043:19:61","nodeType":"FunctionDefinition","parameters":{"id":17089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17088,"mutability":"mutable","name":"params","nameLocation":"23107:6:61","nodeType":"VariableDeclaration","scope":17145,"src":"23072:41:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"},"typeName":{"id":17087,"nodeType":"UserDefinedTypeName","pathNode":{"id":17086,"name":"SwapSingleTokenHookParams","nameLocations":["23072:25:61"],"nodeType":"IdentifierPath","referencedDeclaration":2487,"src":"23072:25:61"},"referencedDeclaration":2487,"src":"23072:25:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"}},"visibility":"internal"}],"src":"23062:57:61"},"returnParameters":{"id":17096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17145,"src":"23161:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17094,"name":"uint256","nodeType":"ElementaryTypeName","src":"23161:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23160:9:61"},"scope":17997,"src":"23034:601:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17192,"nodeType":"Block","src":"23798:661:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17157,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23964:5:61","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":17158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23970:9:61","memberName":"timestamp","nodeType":"MemberAccess","src":"23964:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":17159,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"23982:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23989:8:61","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":2482,"src":"23982:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23964:33:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17166,"nodeType":"IfStatement","src":"23960:85:61","trueBody":{"id":17165,"nodeType":"Block","src":"23999:46:61","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17162,"name":"SwapDeadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18082,"src":"24020:12:61","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24020:14:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17164,"nodeType":"RevertStatement","src":"24013:21:61"}]}},{"expression":{"id":17190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17167,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17151,"src":"24056:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17168,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17153,"src":"24074:8:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17169,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17155,"src":"24084:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17170,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24055:39:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":17174,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"24162:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24169:4:61","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":2468,"src":"24162:11:61","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"expression":{"id":17176,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"24197:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24204:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2470,"src":"24197:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17178,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"24235:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24242:7:61","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":2473,"src":"24235:14:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":17180,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"24277:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24284:8:61","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":2476,"src":"24277:15:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":17182,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"24326:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24333:11:61","memberName":"amountGiven","nodeType":"MemberAccess","referencedDeclaration":2478,"src":"24326:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17184,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"24372:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24379:5:61","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":2480,"src":"24372:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17186,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17148,"src":"24412:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}},"id":17187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24419:8:61","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":2486,"src":"24412:15:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":17173,"name":"VaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4536,"src":"24122:15:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_VaultSwapParams_$4536_storage_ptr_$","typeString":"type(struct VaultSwapParams storage pointer)"}},"id":17188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["24156:4:61","24191:4:61","24226:7:61","24267:8:61","24310:14:61","24362:8:61","24402:8:61"],"names":["kind","pool","tokenIn","tokenOut","amountGivenRaw","limitRaw","userData"],"nodeType":"FunctionCall","src":"24122:320:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}],"expression":{"id":17171,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"24097:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24104:4:61","memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":4257,"src":"24097:11:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_VaultSwapParams_$4536_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct VaultSwapParams memory) external returns (uint256,uint256,uint256)"}},"id":17189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24097:355:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"src":"24055:397:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17191,"nodeType":"ExpressionStatement","src":"24055:397:61"}]},"id":17193,"implemented":true,"kind":"function","modifiers":[],"name":"_swapHook","nameLocation":"23650:9:61","nodeType":"FunctionDefinition","parameters":{"id":17149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17148,"mutability":"mutable","name":"params","nameLocation":"23704:6:61","nodeType":"VariableDeclaration","scope":17193,"src":"23669:41:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"},"typeName":{"id":17147,"nodeType":"UserDefinedTypeName","pathNode":{"id":17146,"name":"SwapSingleTokenHookParams","nameLocations":["23669:25:61"],"nodeType":"IdentifierPath","referencedDeclaration":2487,"src":"23669:25:61"},"referencedDeclaration":2487,"src":"23669:25:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"}},"visibility":"internal"}],"src":"23659:57:61"},"returnParameters":{"id":17156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17151,"mutability":"mutable","name":"amountCalculated","nameLocation":"23743:16:61","nodeType":"VariableDeclaration","scope":17193,"src":"23735:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17150,"name":"uint256","nodeType":"ElementaryTypeName","src":"23735:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17153,"mutability":"mutable","name":"amountIn","nameLocation":"23769:8:61","nodeType":"VariableDeclaration","scope":17193,"src":"23761:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17152,"name":"uint256","nodeType":"ElementaryTypeName","src":"23761:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17155,"mutability":"mutable","name":"amountOut","nameLocation":"23787:9:61","nodeType":"VariableDeclaration","scope":17193,"src":"23779:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17154,"name":"uint256","nodeType":"ElementaryTypeName","src":"23779:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23734:63:61"},"scope":17997,"src":"23641:818:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2550],"body":{"id":17249,"nodeType":"Block","src":"24932:828:61","statements":[{"expression":{"id":17247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17211,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17209,"src":"24943:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null,null],"id":17212,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24942:15:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$__$__$","typeString":"tuple(uint256[] memory,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17219,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"25050:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25057:21:61","memberName":"queryAddLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17480,"src":"25050:28:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"arguments":[{"id":17224,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25338:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25330:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17222,"name":"address","nodeType":"ElementaryTypeName","src":"25330:7:61","typeDescriptions":{}}},"id":17225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25330:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17226,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17196,"src":"25375:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":17228,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17196,"src":"25435:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17227,"name":"_maxTokenLimits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18768,"src":"25419:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256[] memory)"}},"id":17229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25419:21:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17230,"name":"exactBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17198,"src":"25483:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17231,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"25532:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":17232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25549:12:61","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4584,"src":"25532:29:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"hexValue":"66616c7365","id":17233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25598:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17234,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17202,"src":"25639:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17221,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"25100:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":17235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["25322:6:61","25369:4:61","25405:12:61","25466:15:61","25526:4:61","25587:9:61","25629:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"25100:570:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":17217,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"25014:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25018:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"25014:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25014:674:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17215,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"24984:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24991:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"24984:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24984:718:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":17239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25717:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17238,"name":"uint256","nodeType":"ElementaryTypeName","src":"25717:7:61","typeDescriptions":{}}},"id":17240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"25717:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25728:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17241,"name":"uint256","nodeType":"ElementaryTypeName","src":"25728:7:61","typeDescriptions":{}}},{"id":17244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25737:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17243,"name":"bytes","nodeType":"ElementaryTypeName","src":"25737:5:61","typeDescriptions":{}}}],"id":17245,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"25716:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":17213,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"24960:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24964:6:61","memberName":"decode","nodeType":"MemberAccess","src":"24960:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24960:793:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"24942:811:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17248,"nodeType":"ExpressionStatement","src":"24942:811:61"}]},"documentation":{"id":17194,"nodeType":"StructuredDocumentation","src":"24682:23:61","text":"@inheritdoc IRouter"},"functionSelector":"9de90518","id":17250,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17205,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17200,"src":"24887:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17206,"kind":"modifierInvocation","modifierName":{"id":17204,"name":"saveSender","nameLocations":["24876:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"24876:10:61"},"nodeType":"ModifierInvocation","src":"24876:18:61"}],"name":"queryAddLiquidityProportional","nameLocation":"24719:29:61","nodeType":"FunctionDefinition","parameters":{"id":17203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17196,"mutability":"mutable","name":"pool","nameLocation":"24766:4:61","nodeType":"VariableDeclaration","scope":17250,"src":"24758:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17195,"name":"address","nodeType":"ElementaryTypeName","src":"24758:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17198,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"24788:17:61","nodeType":"VariableDeclaration","scope":17250,"src":"24780:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17197,"name":"uint256","nodeType":"ElementaryTypeName","src":"24780:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17200,"mutability":"mutable","name":"sender","nameLocation":"24823:6:61","nodeType":"VariableDeclaration","scope":17250,"src":"24815:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17199,"name":"address","nodeType":"ElementaryTypeName","src":"24815:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17202,"mutability":"mutable","name":"userData","nameLocation":"24852:8:61","nodeType":"VariableDeclaration","scope":17250,"src":"24839:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17201,"name":"bytes","nodeType":"ElementaryTypeName","src":"24839:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"24748:118:61"},"returnParameters":{"id":17210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17209,"mutability":"mutable","name":"amountsIn","nameLocation":"24921:9:61","nodeType":"VariableDeclaration","scope":17250,"src":"24904:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17207,"name":"uint256","nodeType":"ElementaryTypeName","src":"24904:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17208,"nodeType":"ArrayTypeName","src":"24904:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"24903:28:61"},"scope":17997,"src":"24710:1050:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2565],"body":{"id":17304,"nodeType":"Block","src":"26014:806:61","statements":[{"expression":{"id":17302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":17268,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17266,"src":"26027:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":17269,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"26024:18:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$__$","typeString":"tuple(,uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17276,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"26135:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26142:21:61","memberName":"queryAddLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17480,"src":"26135:28:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"arguments":[{"id":17281,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26423:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26415:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17279,"name":"address","nodeType":"ElementaryTypeName","src":"26415:7:61","typeDescriptions":{}}},"id":17282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26415:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17283,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17253,"src":"26460:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17284,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17256,"src":"26504:14:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"30","id":17285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26561:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":17286,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"26594:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":17287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26611:10:61","memberName":"UNBALANCED","nodeType":"MemberAccess","referencedDeclaration":4585,"src":"26594:27:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"hexValue":"66616c7365","id":17288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26658:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17289,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17260,"src":"26699:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17278,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"26185:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":17290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["26407:6:61","26454:4:61","26490:12:61","26544:15:61","26588:4:61","26647:9:61","26689:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"26185:545:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":17274,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"26099:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26103:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"26099:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26099:649:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17272,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"26069:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26076:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"26069:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26069:693:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":17294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26777:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17293,"name":"uint256","nodeType":"ElementaryTypeName","src":"26777:7:61","typeDescriptions":{}}},"id":17295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"26777:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26788:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17296,"name":"uint256","nodeType":"ElementaryTypeName","src":"26788:7:61","typeDescriptions":{}}},{"id":17299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26797:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17298,"name":"bytes","nodeType":"ElementaryTypeName","src":"26797:5:61","typeDescriptions":{}}}],"id":17300,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26776:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":17270,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"26045:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26049:6:61","memberName":"decode","nodeType":"MemberAccess","src":"26045:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26045:768:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"26024:789:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17303,"nodeType":"ExpressionStatement","src":"26024:789:61"}]},"documentation":{"id":17251,"nodeType":"StructuredDocumentation","src":"25766:23:61","text":"@inheritdoc IRouter"},"functionSelector":"da001f7d","id":17305,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17263,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17258,"src":"25975:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17264,"kind":"modifierInvocation","modifierName":{"id":17262,"name":"saveSender","nameLocations":["25964:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"25964:10:61"},"nodeType":"ModifierInvocation","src":"25964:18:61"}],"name":"queryAddLiquidityUnbalanced","nameLocation":"25803:27:61","nodeType":"FunctionDefinition","parameters":{"id":17261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17253,"mutability":"mutable","name":"pool","nameLocation":"25848:4:61","nodeType":"VariableDeclaration","scope":17305,"src":"25840:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17252,"name":"address","nodeType":"ElementaryTypeName","src":"25840:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17256,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"25879:14:61","nodeType":"VariableDeclaration","scope":17305,"src":"25862:31:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17254,"name":"uint256","nodeType":"ElementaryTypeName","src":"25862:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17255,"nodeType":"ArrayTypeName","src":"25862:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17258,"mutability":"mutable","name":"sender","nameLocation":"25911:6:61","nodeType":"VariableDeclaration","scope":17305,"src":"25903:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17257,"name":"address","nodeType":"ElementaryTypeName","src":"25903:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17260,"mutability":"mutable","name":"userData","nameLocation":"25940:8:61","nodeType":"VariableDeclaration","scope":17305,"src":"25927:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17259,"name":"bytes","nodeType":"ElementaryTypeName","src":"25927:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25830:124:61"},"returnParameters":{"id":17267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17266,"mutability":"mutable","name":"bptAmountOut","nameLocation":"26000:12:61","nodeType":"VariableDeclaration","scope":17305,"src":"25992:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17265,"name":"uint256","nodeType":"ElementaryTypeName","src":"25992:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25991:22:61"},"scope":17997,"src":"25794:1026:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2582],"body":{"id":17380,"nodeType":"Block","src":"27097:1057:61","statements":[{"assignments":[17329,17331],"declarations":[{"constant":false,"id":17329,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"27125:12:61","nodeType":"VariableDeclaration","scope":17380,"src":"27108:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17327,"name":"uint256","nodeType":"ElementaryTypeName","src":"27108:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17328,"nodeType":"ArrayTypeName","src":"27108:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17331,"mutability":"mutable","name":"tokenIndex","nameLocation":"27147:10:61","nodeType":"VariableDeclaration","scope":17380,"src":"27139:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17330,"name":"uint256","nodeType":"ElementaryTypeName","src":"27139:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17337,"initialValue":{"arguments":[{"id":17333,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17308,"src":"27208:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17334,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17311,"src":"27226:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17335,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"27247:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17332,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"27161:33:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":17336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27161:107:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"27107:161:61"},{"assignments":[17342,null,null],"declarations":[{"constant":false,"id":17342,"mutability":"mutable","name":"amountsIn","nameLocation":"27297:9:61","nodeType":"VariableDeclaration","scope":17380,"src":"27280:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17340,"name":"uint256","nodeType":"ElementaryTypeName","src":"27280:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17341,"nodeType":"ArrayTypeName","src":"27280:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null,null],"id":17375,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17349,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"27404:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27411:21:61","memberName":"queryAddLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17480,"src":"27404:28:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"arguments":[{"id":17354,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27692:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27684:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17352,"name":"address","nodeType":"ElementaryTypeName","src":"27684:7:61","typeDescriptions":{}}},"id":17355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27684:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17356,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17308,"src":"27729:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17357,"name":"maxAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17329,"src":"27773:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17358,"name":"exactBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17313,"src":"27828:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17359,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"27877:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":17360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27894:22:61","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4586,"src":"27877:39:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"hexValue":"66616c7365","id":17361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27953:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17362,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17317,"src":"27994:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17351,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"27454:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":17363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["27676:6:61","27723:4:61","27759:12:61","27811:15:61","27871:4:61","27942:9:61","27984:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"27454:571:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":17347,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"27368:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27372:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"27368:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27368:675:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17345,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"27338:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27345:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"27338:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27338:719:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":17367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28072:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17366,"name":"uint256","nodeType":"ElementaryTypeName","src":"28072:7:61","typeDescriptions":{}}},"id":17368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"28072:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28083:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17369,"name":"uint256","nodeType":"ElementaryTypeName","src":"28083:7:61","typeDescriptions":{}}},{"id":17372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28092:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17371,"name":"bytes","nodeType":"ElementaryTypeName","src":"28092:5:61","typeDescriptions":{}}}],"id":17373,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28071:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":17343,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"27314:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27318:6:61","memberName":"decode","nodeType":"MemberAccess","src":"27314:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27314:794:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"27279:829:61"},{"expression":{"baseExpression":{"id":17376,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17342,"src":"28126:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":17378,"indexExpression":{"id":17377,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17331,"src":"28136:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28126:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17324,"id":17379,"nodeType":"Return","src":"28119:28:61"}]},"documentation":{"id":17306,"nodeType":"StructuredDocumentation","src":"26826:23:61","text":"@inheritdoc IRouter"},"functionSelector":"1d56798d","id":17381,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17320,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17315,"src":"27062:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17321,"kind":"modifierInvocation","modifierName":{"id":17319,"name":"saveSender","nameLocations":["27051:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"27051:10:61"},"nodeType":"ModifierInvocation","src":"27051:18:61"}],"name":"queryAddLiquiditySingleTokenExactOut","nameLocation":"26863:36:61","nodeType":"FunctionDefinition","parameters":{"id":17318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17308,"mutability":"mutable","name":"pool","nameLocation":"26917:4:61","nodeType":"VariableDeclaration","scope":17381,"src":"26909:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17307,"name":"address","nodeType":"ElementaryTypeName","src":"26909:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17311,"mutability":"mutable","name":"tokenIn","nameLocation":"26938:7:61","nodeType":"VariableDeclaration","scope":17381,"src":"26931:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17310,"nodeType":"UserDefinedTypeName","pathNode":{"id":17309,"name":"IERC20","nameLocations":["26931:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"26931:6:61"},"referencedDeclaration":39274,"src":"26931:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17313,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"26963:17:61","nodeType":"VariableDeclaration","scope":17381,"src":"26955:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17312,"name":"uint256","nodeType":"ElementaryTypeName","src":"26955:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17315,"mutability":"mutable","name":"sender","nameLocation":"26998:6:61","nodeType":"VariableDeclaration","scope":17381,"src":"26990:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17314,"name":"address","nodeType":"ElementaryTypeName","src":"26990:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17317,"mutability":"mutable","name":"userData","nameLocation":"27027:8:61","nodeType":"VariableDeclaration","scope":17381,"src":"27014:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17316,"name":"bytes","nodeType":"ElementaryTypeName","src":"27014:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26899:142:61"},"returnParameters":{"id":17324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17323,"mutability":"mutable","name":"amountIn","nameLocation":"27087:8:61","nodeType":"VariableDeclaration","scope":17381,"src":"27079:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17322,"name":"uint256","nodeType":"ElementaryTypeName","src":"27079:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27078:18:61"},"scope":17997,"src":"26854:1300:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2604],"body":{"id":17439,"nodeType":"Block","src":"28488:884:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17412,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"28619:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28626:21:61","memberName":"queryAddLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17480,"src":"28619:28:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"}},{"arguments":[{"arguments":[{"id":17417,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28923:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28915:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17415,"name":"address","nodeType":"ElementaryTypeName","src":"28915:7:61","typeDescriptions":{}}},"id":17418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28915:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17419,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17384,"src":"28964:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17420,"name":"maxAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17387,"src":"29012:12:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17421,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17389,"src":"29071:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17422,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"29122:16:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":17423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29139:6:61","memberName":"CUSTOM","nodeType":"MemberAccess","referencedDeclaration":4588,"src":"29122:23:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"hexValue":"66616c7365","id":17424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29186:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17425,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17393,"src":"29231:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17414,"name":"AddLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"28673:22:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityHookParams_$2753_storage_ptr_$","typeString":"type(struct IRouterCommon.AddLiquidityHookParams storage pointer)"}},"id":17426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["28907:6:61","28958:4:61","28998:12:61","29054:15:61","29116:4:61","29175:9:61","29221:8:61"],"names":["sender","pool","maxAmountsIn","minBptAmountOut","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"28673:593:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function Router.queryAddLiquidityHook(struct IRouterCommon.AddLiquidityHookParams calldata) returns (uint256[] memory,uint256,bytes memory)"},{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"id":17410,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"28579:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28583:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"28579:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28579:709:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17408,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"28545:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28552:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"28545:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28545:761:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":17430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29325:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17429,"name":"uint256","nodeType":"ElementaryTypeName","src":"29325:7:61","typeDescriptions":{}}},"id":17431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"29325:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29336:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17432,"name":"uint256","nodeType":"ElementaryTypeName","src":"29336:7:61","typeDescriptions":{}}},{"id":17435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29345:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17434,"name":"bytes","nodeType":"ElementaryTypeName","src":"29345:5:61","typeDescriptions":{}}}],"id":17436,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"29324:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(bytes storage pointer))"}],"expression":{"id":17406,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"28517:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28521:6:61","memberName":"decode","nodeType":"MemberAccess","src":"28517:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28517:848:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"functionReturnParameters":17405,"id":17438,"nodeType":"Return","src":"28498:867:61"}]},"documentation":{"id":17382,"nodeType":"StructuredDocumentation","src":"28160:23:61","text":"@inheritdoc IRouter"},"functionSelector":"452db952","id":17440,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17396,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17391,"src":"28396:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17397,"kind":"modifierInvocation","modifierName":{"id":17395,"name":"saveSender","nameLocations":["28385:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"28385:10:61"},"nodeType":"ModifierInvocation","src":"28385:18:61"}],"name":"queryAddLiquidityCustom","nameLocation":"28197:23:61","nodeType":"FunctionDefinition","parameters":{"id":17394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17384,"mutability":"mutable","name":"pool","nameLocation":"28238:4:61","nodeType":"VariableDeclaration","scope":17440,"src":"28230:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17383,"name":"address","nodeType":"ElementaryTypeName","src":"28230:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17387,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"28269:12:61","nodeType":"VariableDeclaration","scope":17440,"src":"28252:29:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17385,"name":"uint256","nodeType":"ElementaryTypeName","src":"28252:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17386,"nodeType":"ArrayTypeName","src":"28252:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17389,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"28299:15:61","nodeType":"VariableDeclaration","scope":17440,"src":"28291:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17388,"name":"uint256","nodeType":"ElementaryTypeName","src":"28291:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17391,"mutability":"mutable","name":"sender","nameLocation":"28332:6:61","nodeType":"VariableDeclaration","scope":17440,"src":"28324:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17390,"name":"address","nodeType":"ElementaryTypeName","src":"28324:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17393,"mutability":"mutable","name":"userData","nameLocation":"28361:8:61","nodeType":"VariableDeclaration","scope":17440,"src":"28348:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17392,"name":"bytes","nodeType":"ElementaryTypeName","src":"28348:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"28220:155:61"},"returnParameters":{"id":17405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17400,"mutability":"mutable","name":"amountsIn","nameLocation":"28430:9:61","nodeType":"VariableDeclaration","scope":17440,"src":"28413:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17398,"name":"uint256","nodeType":"ElementaryTypeName","src":"28413:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17399,"nodeType":"ArrayTypeName","src":"28413:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17402,"mutability":"mutable","name":"bptAmountOut","nameLocation":"28449:12:61","nodeType":"VariableDeclaration","scope":17440,"src":"28441:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17401,"name":"uint256","nodeType":"ElementaryTypeName","src":"28441:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17404,"mutability":"mutable","name":"returnData","nameLocation":"28476:10:61","nodeType":"VariableDeclaration","scope":17440,"src":"28463:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17403,"name":"bytes","nodeType":"ElementaryTypeName","src":"28463:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"28412:75:61"},"scope":17997,"src":"28188:1184:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17479,"nodeType":"Block","src":"29977:390:61","statements":[{"expression":{"id":17477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17456,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17450,"src":"29988:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17457,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17452,"src":"29999:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17458,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17454,"src":"30013:10:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":17459,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"29987:37:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":17463,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17444,"src":"30103:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":17464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30110:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2740,"src":"30103:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17465,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17444,"src":"30136:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":17466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30143:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2738,"src":"30136:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17467,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17444,"src":"30181:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":17468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30188:12:61","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":2743,"src":"30181:19:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"expression":{"id":17469,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17444,"src":"30235:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":17470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30242:15:61","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":2745,"src":"30235:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17471,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17444,"src":"30281:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":17472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30288:4:61","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":2748,"src":"30281:11:61","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"expression":{"id":17473,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17444,"src":"30320:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams calldata"}},"id":17474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30327:8:61","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":2752,"src":"30320:15:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":17462,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4605,"src":"30060:18:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$4605_storage_ptr_$","typeString":"type(struct AddLiquidityParams storage pointer)"}},"id":17475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["30097:4:61","30132:2:61","30167:12:61","30218:15:61","30275:4:61","30310:8:61"],"names":["pool","to","maxAmountsIn","minBptAmountOut","kind","userData"],"nodeType":"FunctionCall","src":"30060:290:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}],"expression":{"id":17460,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"30027:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30034:12:61","memberName":"addLiquidity","nodeType":"MemberAccess","referencedDeclaration":4271,"src":"30027:19:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct AddLiquidityParams memory) external returns (uint256[] memory,uint256,bytes memory)"}},"id":17476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30027:333:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"29987:373:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17478,"nodeType":"ExpressionStatement","src":"29987:373:61"}]},"documentation":{"id":17441,"nodeType":"StructuredDocumentation","src":"29378:406:61","text":" @notice Hook for add liquidity queries.\n @dev Can only be called by the Vault.\n @param params Add liquidity parameters (see IRouter for struct definition)\n @return amountsIn Actual token amounts in required as inputs\n @return bptAmountOut Expected pool tokens to be minted\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"efd85f14","id":17480,"implemented":true,"kind":"function","modifiers":[{"id":17447,"kind":"modifierInvocation","modifierName":{"id":17446,"name":"onlyVault","nameLocations":["29883:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"29883:9:61"},"nodeType":"ModifierInvocation","src":"29883:9:61"}],"name":"queryAddLiquidityHook","nameLocation":"29798:21:61","nodeType":"FunctionDefinition","parameters":{"id":17445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17444,"mutability":"mutable","name":"params","nameLocation":"29861:6:61","nodeType":"VariableDeclaration","scope":17480,"src":"29829:38:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_calldata_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams"},"typeName":{"id":17443,"nodeType":"UserDefinedTypeName","pathNode":{"id":17442,"name":"AddLiquidityHookParams","nameLocations":["29829:22:61"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"29829:22:61"},"referencedDeclaration":2753,"src":"29829:22:61","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_storage_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams"}},"visibility":"internal"}],"src":"29819:54:61"},"returnParameters":{"id":17455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17450,"mutability":"mutable","name":"amountsIn","nameLocation":"29919:9:61","nodeType":"VariableDeclaration","scope":17480,"src":"29902:26:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17448,"name":"uint256","nodeType":"ElementaryTypeName","src":"29902:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17449,"nodeType":"ArrayTypeName","src":"29902:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17452,"mutability":"mutable","name":"bptAmountOut","nameLocation":"29938:12:61","nodeType":"VariableDeclaration","scope":17480,"src":"29930:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17451,"name":"uint256","nodeType":"ElementaryTypeName","src":"29930:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17454,"mutability":"mutable","name":"returnData","nameLocation":"29965:10:61","nodeType":"VariableDeclaration","scope":17480,"src":"29952:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17453,"name":"bytes","nodeType":"ElementaryTypeName","src":"29952:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"29901:75:61"},"scope":17997,"src":"29789:578:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2619],"body":{"id":17549,"nodeType":"Block","src":"30626:922:61","statements":[{"assignments":[17502],"declarations":[{"constant":false,"id":17502,"mutability":"mutable","name":"minAmountsOut","nameLocation":"30653:13:61","nodeType":"VariableDeclaration","scope":17549,"src":"30636:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17500,"name":"uint256","nodeType":"ElementaryTypeName","src":"30636:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17501,"nodeType":"ArrayTypeName","src":"30636:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":17512,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":17508,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17483,"src":"30704:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17506,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"30683:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30690:13:61","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"30683:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":17509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30683:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30710:6:61","memberName":"length","nodeType":"MemberAccess","src":"30683:33:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"30669:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":17503,"name":"uint256","nodeType":"ElementaryTypeName","src":"30673:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17504,"nodeType":"ArrayTypeName","src":"30673:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":17511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30669:48:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"30636:81:61"},{"expression":{"id":17547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":17513,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17496,"src":"30730:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":17514,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30727:16:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(,uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17521,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"30836:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30843:24:61","memberName":"queryRemoveLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17825,"src":"30836:31:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"arguments":[{"id":17526,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31132:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31124:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17524,"name":"address","nodeType":"ElementaryTypeName","src":"31124:7:61","typeDescriptions":{}}},"id":17527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31124:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17528,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17483,"src":"31169:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17529,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17502,"src":"31214:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17530,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17485,"src":"31269:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17531,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"31317:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":17532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31337:12:61","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4606,"src":"31317:32:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"hexValue":"66616c7365","id":17533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31386:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17534,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17489,"src":"31427:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17523,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"30889:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":17535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["31116:6:61","31163:4:61","31199:13:61","31253:14:61","31311:4:61","31375:9:61","31417:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"30889:569:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":17519,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"30800:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30804:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"30800:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30800:676:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17517,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"30770:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30777:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"30770:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30770:720:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31505:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17538,"name":"uint256","nodeType":"ElementaryTypeName","src":"31505:7:61","typeDescriptions":{}}},{"baseExpression":{"id":17541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31514:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17540,"name":"uint256","nodeType":"ElementaryTypeName","src":"31514:7:61","typeDescriptions":{}}},"id":17542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"31514:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31525:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17543,"name":"bytes","nodeType":"ElementaryTypeName","src":"31525:5:61","typeDescriptions":{}}}],"id":17545,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"31504:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":17515,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"30746:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30750:6:61","memberName":"decode","nodeType":"MemberAccess","src":"30746:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30746:795:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"src":"30727:814:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17548,"nodeType":"ExpressionStatement","src":"30727:814:61"}]},"documentation":{"id":17481,"nodeType":"StructuredDocumentation","src":"30373:23:61","text":"@inheritdoc IRouter"},"functionSelector":"0f710888","id":17550,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17492,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17487,"src":"30580:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17493,"kind":"modifierInvocation","modifierName":{"id":17491,"name":"saveSender","nameLocations":["30569:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"30569:10:61"},"nodeType":"ModifierInvocation","src":"30569:18:61"}],"name":"queryRemoveLiquidityProportional","nameLocation":"30410:32:61","nodeType":"FunctionDefinition","parameters":{"id":17490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17483,"mutability":"mutable","name":"pool","nameLocation":"30460:4:61","nodeType":"VariableDeclaration","scope":17550,"src":"30452:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17482,"name":"address","nodeType":"ElementaryTypeName","src":"30452:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17485,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"30482:16:61","nodeType":"VariableDeclaration","scope":17550,"src":"30474:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17484,"name":"uint256","nodeType":"ElementaryTypeName","src":"30474:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17487,"mutability":"mutable","name":"sender","nameLocation":"30516:6:61","nodeType":"VariableDeclaration","scope":17550,"src":"30508:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17486,"name":"address","nodeType":"ElementaryTypeName","src":"30508:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17489,"mutability":"mutable","name":"userData","nameLocation":"30545:8:61","nodeType":"VariableDeclaration","scope":17550,"src":"30532:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17488,"name":"bytes","nodeType":"ElementaryTypeName","src":"30532:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"30442:117:61"},"returnParameters":{"id":17497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17496,"mutability":"mutable","name":"amountsOut","nameLocation":"30614:10:61","nodeType":"VariableDeclaration","scope":17550,"src":"30597:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17494,"name":"uint256","nodeType":"ElementaryTypeName","src":"30597:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17495,"nodeType":"ArrayTypeName","src":"30597:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"30596:29:61"},"scope":17997,"src":"30401:1147:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2636],"body":{"id":17625,"nodeType":"Block","src":"31828:1114:61","statements":[{"assignments":[17574,17576],"declarations":[{"constant":false,"id":17574,"mutability":"mutable","name":"minAmountsOut","nameLocation":"31955:13:61","nodeType":"VariableDeclaration","scope":17625,"src":"31938:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17572,"name":"uint256","nodeType":"ElementaryTypeName","src":"31938:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17573,"nodeType":"ArrayTypeName","src":"31938:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17576,"mutability":"mutable","name":"tokenIndex","nameLocation":"31978:10:61","nodeType":"VariableDeclaration","scope":17625,"src":"31970:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17575,"name":"uint256","nodeType":"ElementaryTypeName","src":"31970:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17582,"initialValue":{"arguments":[{"id":17578,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17553,"src":"32026:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17579,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17558,"src":"32032:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"hexValue":"31","id":17580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32042:1:61","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":17577,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"31992:33:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":17581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31992:52:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"31937:107:61"},{"assignments":[null,17587,null],"declarations":[null,{"constant":false,"id":17587,"mutability":"mutable","name":"amountsOut","nameLocation":"32075:10:61","nodeType":"VariableDeclaration","scope":17625,"src":"32058:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17585,"name":"uint256","nodeType":"ElementaryTypeName","src":"32058:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17586,"nodeType":"ArrayTypeName","src":"32058:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null],"id":17620,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17594,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"32181:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32188:24:61","memberName":"queryRemoveLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17825,"src":"32181:31:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"arguments":[{"id":17599,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"32477:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32469:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17597,"name":"address","nodeType":"ElementaryTypeName","src":"32469:7:61","typeDescriptions":{}}},"id":17600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32469:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17601,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17553,"src":"32514:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17602,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17574,"src":"32559:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17603,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17555,"src":"32614:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17604,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"32662:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":17605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32682:21:61","memberName":"SINGLE_TOKEN_EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4607,"src":"32662:41:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"hexValue":"66616c7365","id":17606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32740:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17607,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17562,"src":"32781:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17596,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"32234:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":17608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["32461:6:61","32508:4:61","32544:13:61","32598:14:61","32656:4:61","32729:9:61","32771:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"32234:578:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":17592,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"32145:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32149:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"32145:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32145:685:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17590,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"32115:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32122:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"32115:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32115:729:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32859:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17611,"name":"uint256","nodeType":"ElementaryTypeName","src":"32859:7:61","typeDescriptions":{}}},{"baseExpression":{"id":17614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32868:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17613,"name":"uint256","nodeType":"ElementaryTypeName","src":"32868:7:61","typeDescriptions":{}}},"id":17615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"32868:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32879:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17616,"name":"bytes","nodeType":"ElementaryTypeName","src":"32879:5:61","typeDescriptions":{}}}],"id":17618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"32858:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":17588,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"32091:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32095:6:61","memberName":"decode","nodeType":"MemberAccess","src":"32091:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32091:804:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"32055:840:61"},{"expression":{"baseExpression":{"id":17621,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17587,"src":"32913:10:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":17623,"indexExpression":{"id":17622,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17576,"src":"32924:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32913:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17569,"id":17624,"nodeType":"Return","src":"32906:29:61"}]},"documentation":{"id":17551,"nodeType":"StructuredDocumentation","src":"31554:23:61","text":"@inheritdoc IRouter"},"functionSelector":"23b39241","id":17626,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17565,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17560,"src":"31792:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17566,"kind":"modifierInvocation","modifierName":{"id":17564,"name":"saveSender","nameLocations":["31781:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"31781:10:61"},"nodeType":"ModifierInvocation","src":"31781:18:61"}],"name":"queryRemoveLiquiditySingleTokenExactIn","nameLocation":"31591:38:61","nodeType":"FunctionDefinition","parameters":{"id":17563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17553,"mutability":"mutable","name":"pool","nameLocation":"31647:4:61","nodeType":"VariableDeclaration","scope":17626,"src":"31639:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17552,"name":"address","nodeType":"ElementaryTypeName","src":"31639:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17555,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"31669:16:61","nodeType":"VariableDeclaration","scope":17626,"src":"31661:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17554,"name":"uint256","nodeType":"ElementaryTypeName","src":"31661:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17558,"mutability":"mutable","name":"tokenOut","nameLocation":"31702:8:61","nodeType":"VariableDeclaration","scope":17626,"src":"31695:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17557,"nodeType":"UserDefinedTypeName","pathNode":{"id":17556,"name":"IERC20","nameLocations":["31695:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"31695:6:61"},"referencedDeclaration":39274,"src":"31695:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17560,"mutability":"mutable","name":"sender","nameLocation":"31728:6:61","nodeType":"VariableDeclaration","scope":17626,"src":"31720:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17559,"name":"address","nodeType":"ElementaryTypeName","src":"31720:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17562,"mutability":"mutable","name":"userData","nameLocation":"31757:8:61","nodeType":"VariableDeclaration","scope":17626,"src":"31744:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17561,"name":"bytes","nodeType":"ElementaryTypeName","src":"31744:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"31629:142:61"},"returnParameters":{"id":17569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17568,"mutability":"mutable","name":"amountOut","nameLocation":"31817:9:61","nodeType":"VariableDeclaration","scope":17626,"src":"31809:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17567,"name":"uint256","nodeType":"ElementaryTypeName","src":"31809:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31808:19:61"},"scope":17997,"src":"31582:1360:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2653],"body":{"id":17695,"nodeType":"Block","src":"33223:979:61","statements":[{"assignments":[17650,null],"declarations":[{"constant":false,"id":17650,"mutability":"mutable","name":"minAmountsOut","nameLocation":"33251:13:61","nodeType":"VariableDeclaration","scope":17695,"src":"33234:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17648,"name":"uint256","nodeType":"ElementaryTypeName","src":"33234:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17649,"nodeType":"ArrayTypeName","src":"33234:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null],"id":17656,"initialValue":{"arguments":[{"id":17652,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17629,"src":"33304:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17653,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17632,"src":"33310:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17654,"name":"exactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17634,"src":"33320:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17651,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"33270:33:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":17655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33270:65:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"33233:102:61"},{"expression":{"id":17691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":17657,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17644,"src":"33347:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null,null],"id":17658,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"33346:17:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$__$__$","typeString":"tuple(uint256,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17665,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"33456:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33463:24:61","memberName":"queryRemoveLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17825,"src":"33456:31:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"arguments":[{"id":17670,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"33752:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33744:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17668,"name":"address","nodeType":"ElementaryTypeName","src":"33744:7:61","typeDescriptions":{}}},"id":17671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33744:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17672,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17629,"src":"33789:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17673,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17650,"src":"33834:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17674,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"33889:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17675,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"33932:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":17676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33952:22:61","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4608,"src":"33932:42:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"hexValue":"66616c7365","id":17677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"34011:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17678,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17638,"src":"34052:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17667,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"33509:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":17679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["33736:6:61","33783:4:61","33819:13:61","33873:14:61","33926:4:61","34000:9:61","34042:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"33509:574:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":17663,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"33420:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33424:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"33420:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33420:681:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17661,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"33390:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33397:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"33390:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33390:725:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34130:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17682,"name":"uint256","nodeType":"ElementaryTypeName","src":"34130:7:61","typeDescriptions":{}}},{"baseExpression":{"id":17685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34139:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17684,"name":"uint256","nodeType":"ElementaryTypeName","src":"34139:7:61","typeDescriptions":{}}},"id":17686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"34139:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34150:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17687,"name":"bytes","nodeType":"ElementaryTypeName","src":"34150:5:61","typeDescriptions":{}}}],"id":17689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"34129:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":17659,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"33366:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33370:6:61","memberName":"decode","nodeType":"MemberAccess","src":"33366:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33366:800:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"src":"33346:820:61","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17692,"nodeType":"ExpressionStatement","src":"33346:820:61"},{"expression":{"id":17693,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17644,"src":"34184:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17645,"id":17694,"nodeType":"Return","src":"34177:18:61"}]},"documentation":{"id":17627,"nodeType":"StructuredDocumentation","src":"32948:23:61","text":"@inheritdoc IRouter"},"functionSelector":"53d0bb98","id":17696,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17641,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17636,"src":"33185:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17642,"kind":"modifierInvocation","modifierName":{"id":17640,"name":"saveSender","nameLocations":["33174:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"33174:10:61"},"nodeType":"ModifierInvocation","src":"33174:18:61"}],"name":"queryRemoveLiquiditySingleTokenExactOut","nameLocation":"32985:39:61","nodeType":"FunctionDefinition","parameters":{"id":17639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17629,"mutability":"mutable","name":"pool","nameLocation":"33042:4:61","nodeType":"VariableDeclaration","scope":17696,"src":"33034:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17628,"name":"address","nodeType":"ElementaryTypeName","src":"33034:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17632,"mutability":"mutable","name":"tokenOut","nameLocation":"33063:8:61","nodeType":"VariableDeclaration","scope":17696,"src":"33056:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17631,"nodeType":"UserDefinedTypeName","pathNode":{"id":17630,"name":"IERC20","nameLocations":["33056:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"33056:6:61"},"referencedDeclaration":39274,"src":"33056:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17634,"mutability":"mutable","name":"exactAmountOut","nameLocation":"33089:14:61","nodeType":"VariableDeclaration","scope":17696,"src":"33081:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17633,"name":"uint256","nodeType":"ElementaryTypeName","src":"33081:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17636,"mutability":"mutable","name":"sender","nameLocation":"33121:6:61","nodeType":"VariableDeclaration","scope":17696,"src":"33113:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17635,"name":"address","nodeType":"ElementaryTypeName","src":"33113:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17638,"mutability":"mutable","name":"userData","nameLocation":"33150:8:61","nodeType":"VariableDeclaration","scope":17696,"src":"33137:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17637,"name":"bytes","nodeType":"ElementaryTypeName","src":"33137:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33024:140:61"},"returnParameters":{"id":17645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17644,"mutability":"mutable","name":"bptAmountIn","nameLocation":"33210:11:61","nodeType":"VariableDeclaration","scope":17696,"src":"33202:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17643,"name":"uint256","nodeType":"ElementaryTypeName","src":"33202:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33201:21:61"},"scope":17997,"src":"32976:1226:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2675],"body":{"id":17754,"nodeType":"Block","src":"34539:895:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17727,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"34670:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34677:24:61","memberName":"queryRemoveLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":17825,"src":"34670:31:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"}},{"arguments":[{"arguments":[{"id":17732,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"34982:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34974:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17730,"name":"address","nodeType":"ElementaryTypeName","src":"34974:7:61","typeDescriptions":{}}},"id":17733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34974:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17734,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17699,"src":"35023:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17735,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17704,"src":"35072:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":17736,"name":"maxBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17701,"src":"35131:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17737,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"35181:19:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":17738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35201:6:61","memberName":"CUSTOM","nodeType":"MemberAccess","referencedDeclaration":4609,"src":"35181:26:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"hexValue":"66616c7365","id":17739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"35248:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17740,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17708,"src":"35293:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17729,"name":"RemoveLiquidityHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"34727:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr_$","typeString":"type(struct IRouterCommon.RemoveLiquidityHookParams storage pointer)"}},"id":17741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["34966:6:61","35017:4:61","35057:13:61","35115:14:61","35175:4:61","35237:9:61","35283:8:61"],"names":["sender","pool","minAmountsOut","maxBptAmountIn","kind","wethIsEth","userData"],"nodeType":"FunctionCall","src":"34727:601:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityHook(struct IRouterCommon.RemoveLiquidityHookParams calldata) returns (uint256,uint256[] memory,bytes memory)"},{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"id":17725,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"34630:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34634:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"34630:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34630:720:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17723,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"34596:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34603:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"34596:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34596:772:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35387:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17744,"name":"uint256","nodeType":"ElementaryTypeName","src":"35387:7:61","typeDescriptions":{}}},{"baseExpression":{"id":17747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35396:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17746,"name":"uint256","nodeType":"ElementaryTypeName","src":"35396:7:61","typeDescriptions":{}}},"id":17748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"35396:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":17750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35407:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":17749,"name":"bytes","nodeType":"ElementaryTypeName","src":"35407:5:61","typeDescriptions":{}}}],"id":17751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"35386:27:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(uint256),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"id":17721,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"34568:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34572:6:61","memberName":"decode","nodeType":"MemberAccess","src":"34568:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34568:859:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"functionReturnParameters":17720,"id":17753,"nodeType":"Return","src":"34549:878:61"}]},"documentation":{"id":17697,"nodeType":"StructuredDocumentation","src":"34208:23:61","text":"@inheritdoc IRouter"},"functionSelector":"c330c7be","id":17755,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17711,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17706,"src":"34447:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17712,"kind":"modifierInvocation","modifierName":{"id":17710,"name":"saveSender","nameLocations":["34436:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"34436:10:61"},"nodeType":"ModifierInvocation","src":"34436:18:61"}],"name":"queryRemoveLiquidityCustom","nameLocation":"34245:26:61","nodeType":"FunctionDefinition","parameters":{"id":17709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17699,"mutability":"mutable","name":"pool","nameLocation":"34289:4:61","nodeType":"VariableDeclaration","scope":17755,"src":"34281:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17698,"name":"address","nodeType":"ElementaryTypeName","src":"34281:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17701,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"34311:14:61","nodeType":"VariableDeclaration","scope":17755,"src":"34303:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17700,"name":"uint256","nodeType":"ElementaryTypeName","src":"34303:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17704,"mutability":"mutable","name":"minAmountsOut","nameLocation":"34352:13:61","nodeType":"VariableDeclaration","scope":17755,"src":"34335:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17702,"name":"uint256","nodeType":"ElementaryTypeName","src":"34335:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17703,"nodeType":"ArrayTypeName","src":"34335:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17706,"mutability":"mutable","name":"sender","nameLocation":"34383:6:61","nodeType":"VariableDeclaration","scope":17755,"src":"34375:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17705,"name":"address","nodeType":"ElementaryTypeName","src":"34375:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17708,"mutability":"mutable","name":"userData","nameLocation":"34412:8:61","nodeType":"VariableDeclaration","scope":17755,"src":"34399:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17707,"name":"bytes","nodeType":"ElementaryTypeName","src":"34399:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"34271:155:61"},"returnParameters":{"id":17720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17714,"mutability":"mutable","name":"bptAmountIn","nameLocation":"34472:11:61","nodeType":"VariableDeclaration","scope":17755,"src":"34464:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17713,"name":"uint256","nodeType":"ElementaryTypeName","src":"34464:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17717,"mutability":"mutable","name":"amountsOut","nameLocation":"34502:10:61","nodeType":"VariableDeclaration","scope":17755,"src":"34485:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17715,"name":"uint256","nodeType":"ElementaryTypeName","src":"34485:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17716,"nodeType":"ArrayTypeName","src":"34485:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17719,"mutability":"mutable","name":"returnData","nameLocation":"34527:10:61","nodeType":"VariableDeclaration","scope":17755,"src":"34514:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17718,"name":"bytes","nodeType":"ElementaryTypeName","src":"34514:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"34463:75:61"},"scope":17997,"src":"34236:1198:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2686],"body":{"id":17789,"nodeType":"Block","src":"35615:255:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17772,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"35721:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35728:32:61","memberName":"queryRemoveLiquidityRecoveryHook","nodeType":"MemberAccess","referencedDeclaration":17864,"src":"35721:39:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityRecoveryHook(address,address,uint256) returns (uint256[] memory)"}},{"components":[{"id":17774,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"35763:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":17777,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"35777:4:61","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}],"id":17776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35769:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17775,"name":"address","nodeType":"ElementaryTypeName","src":"35769:7:61","typeDescriptions":{}}},"id":17778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35769:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17779,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17760,"src":"35784:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":17780,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"35762:39:61","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function Router.queryRemoveLiquidityRecoveryHook(address,address,uint256) returns (uint256[] memory)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":17770,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"35706:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35710:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"35706:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35706:96:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17768,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"35672:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35679:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"35672:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35672:148:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":17784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35839:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17783,"name":"uint256","nodeType":"ElementaryTypeName","src":"35839:7:61","typeDescriptions":{}}},"id":17785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"35839:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":17786,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"35838:11:61","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"id":17766,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"35644:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35648:6:61","memberName":"decode","nodeType":"MemberAccess","src":"35644:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35644:219:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":17765,"id":17788,"nodeType":"Return","src":"35625:238:61"}]},"documentation":{"id":17756,"nodeType":"StructuredDocumentation","src":"35440:23:61","text":"@inheritdoc IRouter"},"functionSelector":"b037ed36","id":17790,"implemented":true,"kind":"function","modifiers":[],"name":"queryRemoveLiquidityRecovery","nameLocation":"35477:28:61","nodeType":"FunctionDefinition","parameters":{"id":17761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17758,"mutability":"mutable","name":"pool","nameLocation":"35523:4:61","nodeType":"VariableDeclaration","scope":17790,"src":"35515:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17757,"name":"address","nodeType":"ElementaryTypeName","src":"35515:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17760,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"35545:16:61","nodeType":"VariableDeclaration","scope":17790,"src":"35537:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17759,"name":"uint256","nodeType":"ElementaryTypeName","src":"35537:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"35505:62:61"},"returnParameters":{"id":17765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17764,"mutability":"mutable","name":"amountsOut","nameLocation":"35603:10:61","nodeType":"VariableDeclaration","scope":17790,"src":"35586:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17762,"name":"uint256","nodeType":"ElementaryTypeName","src":"35586:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17763,"nodeType":"ArrayTypeName","src":"35586:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"35585:29:61"},"scope":17997,"src":"35468:402:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17824,"nodeType":"Block","src":"36518:413:61","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":17809,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17794,"src":"36637:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":17810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36644:4:61","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":2758,"src":"36637:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17811,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17794,"src":"36676:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":17812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36683:6:61","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":2756,"src":"36676:13:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17813,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17794,"src":"36727:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":17814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36734:14:61","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":2763,"src":"36727:21:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":17815,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17794,"src":"36785:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":17816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36792:13:61","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":2761,"src":"36785:20:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"expression":{"id":17817,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17794,"src":"36833:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":17818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36840:4:61","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":2766,"src":"36833:11:61","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"expression":{"id":17819,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17794,"src":"36876:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams calldata"}},"id":17820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36883:8:61","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":2770,"src":"36876:15:61","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":17808,"name":"RemoveLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4626,"src":"36587:21:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityParams_$4626_storage_ptr_$","typeString":"type(struct RemoveLiquidityParams storage pointer)"}},"id":17821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["36631:4:61","36670:4:61","36711:14:61","36770:13:61","36827:4:61","36866:8:61"],"names":["pool","from","maxBptAmountIn","minAmountsOut","kind","userData"],"nodeType":"FunctionCall","src":"36587:323:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}],"expression":{"id":17806,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"36547:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36554:15:61","memberName":"removeLiquidity","nodeType":"MemberAccess","referencedDeclaration":4285,"src":"36547:22:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct RemoveLiquidityParams memory) external returns (uint256,uint256[] memory,bytes memory)"}},"id":17822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36547:377:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"functionReturnParameters":17805,"id":17823,"nodeType":"Return","src":"36528:396:61"}]},"documentation":{"id":17791,"nodeType":"StructuredDocumentation","src":"35876:443:61","text":" @notice Hook for remove liquidity queries.\n @dev Can only be called by the Vault.\n @param params Remove liquidity parameters (see IRouter for struct definition)\n @return bptAmountIn Pool token amount to be burned for the output tokens\n @return amountsOut Expected token amounts to be transferred to the sender\n @return returnData Arbitrary (optional) data with an encoded response from the pool"},"functionSelector":"b24bd571","id":17825,"implemented":true,"kind":"function","modifiers":[{"id":17797,"kind":"modifierInvocation","modifierName":{"id":17796,"name":"onlyVault","nameLocations":["36424:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"36424:9:61"},"nodeType":"ModifierInvocation","src":"36424:9:61"}],"name":"queryRemoveLiquidityHook","nameLocation":"36333:24:61","nodeType":"FunctionDefinition","parameters":{"id":17795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17794,"mutability":"mutable","name":"params","nameLocation":"36402:6:61","nodeType":"VariableDeclaration","scope":17825,"src":"36367:41:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_calldata_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams"},"typeName":{"id":17793,"nodeType":"UserDefinedTypeName","pathNode":{"id":17792,"name":"RemoveLiquidityHookParams","nameLocations":["36367:25:61"],"nodeType":"IdentifierPath","referencedDeclaration":2771,"src":"36367:25:61"},"referencedDeclaration":2771,"src":"36367:25:61","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams"}},"visibility":"internal"}],"src":"36357:57:61"},"returnParameters":{"id":17805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17799,"mutability":"mutable","name":"bptAmountIn","nameLocation":"36451:11:61","nodeType":"VariableDeclaration","scope":17825,"src":"36443:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17798,"name":"uint256","nodeType":"ElementaryTypeName","src":"36443:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17802,"mutability":"mutable","name":"amountsOut","nameLocation":"36481:10:61","nodeType":"VariableDeclaration","scope":17825,"src":"36464:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17800,"name":"uint256","nodeType":"ElementaryTypeName","src":"36464:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17801,"nodeType":"ArrayTypeName","src":"36464:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":17804,"mutability":"mutable","name":"returnData","nameLocation":"36506:10:61","nodeType":"VariableDeclaration","scope":17825,"src":"36493:23:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17803,"name":"bytes","nodeType":"ElementaryTypeName","src":"36493:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"36442:75:61"},"scope":17997,"src":"36324:607:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17863,"nodeType":"Block","src":"37508:192:61","statements":[{"assignments":[17844],"declarations":[{"constant":false,"id":17844,"mutability":"mutable","name":"minAmountsOut","nameLocation":"37535:13:61","nodeType":"VariableDeclaration","scope":17863,"src":"37518:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17842,"name":"uint256","nodeType":"ElementaryTypeName","src":"37518:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17843,"nodeType":"ArrayTypeName","src":"37518:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":17854,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":17850,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17828,"src":"37586:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17848,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"37565:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37572:13:61","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"37565:20:61","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":17851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37565:26:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":17852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37592:6:61","memberName":"length","nodeType":"MemberAccess","src":"37565:33:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"37551:13:61","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":17845,"name":"uint256","nodeType":"ElementaryTypeName","src":"37555:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17846,"nodeType":"ArrayTypeName","src":"37555:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":17853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37551:48:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"37518:81:61"},{"expression":{"arguments":[{"id":17857,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17828,"src":"37647:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17858,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17830,"src":"37653:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17859,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17832,"src":"37661:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17860,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17844,"src":"37679:13:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":17855,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"37616:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37623:23:61","memberName":"removeLiquidityRecovery","nodeType":"MemberAccess","referencedDeclaration":4166,"src":"37616:30:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,address,uint256,uint256[] memory) external returns (uint256[] memory)"}},"id":17861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37616:77:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":17839,"id":17862,"nodeType":"Return","src":"37609:84:61"}]},"documentation":{"id":17826,"nodeType":"StructuredDocumentation","src":"36937:381:61","text":" @notice Hook for remove liquidity queries.\n @dev Can only be called by the Vault.\n @param pool The liquidity pool\n @param sender Account originating the remove liquidity operation\n @param exactBptAmountIn Pool token amount to be burned for the output tokens\n @return amountsOut Expected token amounts to be transferred to the sender"},"functionSelector":"5f9815ff","id":17864,"implemented":true,"kind":"function","modifiers":[{"id":17835,"kind":"modifierInvocation","modifierName":{"id":17834,"name":"onlyVault","nameLocations":["37460:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"37460:9:61"},"nodeType":"ModifierInvocation","src":"37460:9:61"}],"name":"queryRemoveLiquidityRecoveryHook","nameLocation":"37332:32:61","nodeType":"FunctionDefinition","parameters":{"id":17833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17828,"mutability":"mutable","name":"pool","nameLocation":"37382:4:61","nodeType":"VariableDeclaration","scope":17864,"src":"37374:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17827,"name":"address","nodeType":"ElementaryTypeName","src":"37374:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17830,"mutability":"mutable","name":"sender","nameLocation":"37404:6:61","nodeType":"VariableDeclaration","scope":17864,"src":"37396:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17829,"name":"address","nodeType":"ElementaryTypeName","src":"37396:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17832,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"37428:16:61","nodeType":"VariableDeclaration","scope":17864,"src":"37420:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17831,"name":"uint256","nodeType":"ElementaryTypeName","src":"37420:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37364:86:61"},"returnParameters":{"id":17839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17838,"mutability":"mutable","name":"amountsOut","nameLocation":"37496:10:61","nodeType":"VariableDeclaration","scope":17864,"src":"37479:27:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":17836,"name":"uint256","nodeType":"ElementaryTypeName","src":"37479:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17837,"nodeType":"ArrayTypeName","src":"37479:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"37478:29:61"},"scope":17997,"src":"37323:377:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2706],"body":{"id":17916,"nodeType":"Block","src":"37997:792:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17893,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"38128:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"38135:13:61","memberName":"querySwapHook","nodeType":"MemberAccess","referencedDeclaration":17996,"src":"38128:20:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.querySwapHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"}},{"arguments":[{"expression":{"id":17896,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"38238:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38242:6:61","memberName":"sender","nodeType":"MemberAccess","src":"38238:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17898,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"38284:8:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":17899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"38293:8:61","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"38284:17:61","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"id":17900,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17867,"src":"38337:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17901,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17870,"src":"38380:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17902,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17873,"src":"38427:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17903,"name":"exactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17875,"src":"38478:13:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":17904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38528:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":17905,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"38569:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":17906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"38621:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17907,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17879,"src":"38666:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17895,"name":"SwapSingleTokenHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"38174:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr_$","typeString":"type(struct IRouter.SwapSingleTokenHookParams storage pointer)"}},"id":17908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["38230:6:61","38278:4:61","38331:4:61","38371:7:61","38417:8:61","38465:11:61","38521:5:61","38559:8:61","38610:9:61","38656:8:61"],"names":["sender","kind","pool","tokenIn","tokenOut","amountGiven","limit","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"38174:527:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.querySwapHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"},{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}],"expression":{"id":17891,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"38088:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"38092:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"38088:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38088:635:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17889,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"38054:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38061:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"38054:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38054:687:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"38760:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17911,"name":"uint256","nodeType":"ElementaryTypeName","src":"38760:7:61","typeDescriptions":{}}}],"id":17913,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"38759:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":17887,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"38026:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"38030:6:61","memberName":"decode","nodeType":"MemberAccess","src":"38026:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38026:756:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17886,"id":17915,"nodeType":"Return","src":"38007:775:61"}]},"documentation":{"id":17865,"nodeType":"StructuredDocumentation","src":"37706:23:61","text":"@inheritdoc IRouter"},"functionSelector":"3ebc54e5","id":17917,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17882,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17877,"src":"37954:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17883,"kind":"modifierInvocation","modifierName":{"id":17881,"name":"saveSender","nameLocations":["37943:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"37943:10:61"},"nodeType":"ModifierInvocation","src":"37943:18:61"}],"name":"querySwapSingleTokenExactIn","nameLocation":"37743:27:61","nodeType":"FunctionDefinition","parameters":{"id":17880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17867,"mutability":"mutable","name":"pool","nameLocation":"37788:4:61","nodeType":"VariableDeclaration","scope":17917,"src":"37780:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17866,"name":"address","nodeType":"ElementaryTypeName","src":"37780:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17870,"mutability":"mutable","name":"tokenIn","nameLocation":"37809:7:61","nodeType":"VariableDeclaration","scope":17917,"src":"37802:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17869,"nodeType":"UserDefinedTypeName","pathNode":{"id":17868,"name":"IERC20","nameLocations":["37802:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"37802:6:61"},"referencedDeclaration":39274,"src":"37802:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17873,"mutability":"mutable","name":"tokenOut","nameLocation":"37833:8:61","nodeType":"VariableDeclaration","scope":17917,"src":"37826:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17872,"nodeType":"UserDefinedTypeName","pathNode":{"id":17871,"name":"IERC20","nameLocations":["37826:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"37826:6:61"},"referencedDeclaration":39274,"src":"37826:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17875,"mutability":"mutable","name":"exactAmountIn","nameLocation":"37859:13:61","nodeType":"VariableDeclaration","scope":17917,"src":"37851:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17874,"name":"uint256","nodeType":"ElementaryTypeName","src":"37851:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17877,"mutability":"mutable","name":"sender","nameLocation":"37890:6:61","nodeType":"VariableDeclaration","scope":17917,"src":"37882:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17876,"name":"address","nodeType":"ElementaryTypeName","src":"37882:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17879,"mutability":"mutable","name":"userData","nameLocation":"37919:8:61","nodeType":"VariableDeclaration","scope":17917,"src":"37906:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17878,"name":"bytes","nodeType":"ElementaryTypeName","src":"37906:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"37770:163:61"},"returnParameters":{"id":17886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17885,"mutability":"mutable","name":"amountCalculated","nameLocation":"37979:16:61","nodeType":"VariableDeclaration","scope":17917,"src":"37971:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17884,"name":"uint256","nodeType":"ElementaryTypeName","src":"37971:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"37970:26:61"},"scope":17997,"src":"37734:1055:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2726],"body":{"id":17973,"nodeType":"Block","src":"39088:810:61","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":17946,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"39219:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":17947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39226:13:61","memberName":"querySwapHook","nodeType":"MemberAccess","referencedDeclaration":17996,"src":"39219:20:61","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.querySwapHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"}},{"arguments":[{"expression":{"id":17949,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"39329:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":17950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39333:6:61","memberName":"sender","nodeType":"MemberAccess","src":"39329:10:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":17951,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"39375:8:61","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":17952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39384:9:61","memberName":"EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"39375:18:61","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"id":17953,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17920,"src":"39429:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17954,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17923,"src":"39472:7:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17955,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17926,"src":"39519:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":17956,"name":"exactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17928,"src":"39570:14:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17957,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"39621:11:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":17960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39677:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17959,"name":"uint256","nodeType":"ElementaryTypeName","src":"39677:7:61","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":17958,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"39672:4:61","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":17961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39672:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":17962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39686:3:61","memberName":"max","nodeType":"MemberAccess","src":"39672:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":17963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"39730:5:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":17964,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17932,"src":"39775:8:61","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":17948,"name":"SwapSingleTokenHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"39265:25:61","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr_$","typeString":"type(struct IRouter.SwapSingleTokenHookParams storage pointer)"}},"id":17965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["39321:6:61","39369:4:61","39423:4:61","39463:7:61","39509:8:61","39557:11:61","39614:5:61","39662:8:61","39719:9:61","39765:8:61"],"names":["sender","kind","pool","tokenIn","tokenOut","amountGiven","limit","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"39265:545:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.querySwapHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"},{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}],"expression":{"id":17944,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"39179:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39183:10:61","memberName":"encodeCall","nodeType":"MemberAccess","src":"39179:14:61","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":17966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39179:653:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17942,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"39145:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":17943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39152:5:61","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":4174,"src":"39145:12:61","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":17967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39145:705:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":17969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39869:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17968,"name":"uint256","nodeType":"ElementaryTypeName","src":"39869:7:61","typeDescriptions":{}}}],"id":17970,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"39868:9:61","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":17940,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"39117:3:61","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":17941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39121:6:61","memberName":"decode","nodeType":"MemberAccess","src":"39117:10:61","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":17971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39117:774:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17939,"id":17972,"nodeType":"Return","src":"39098:793:61"}]},"documentation":{"id":17918,"nodeType":"StructuredDocumentation","src":"38795:23:61","text":"@inheritdoc IRouter"},"functionSelector":"175d4408","id":17974,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17935,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17930,"src":"39045:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":17936,"kind":"modifierInvocation","modifierName":{"id":17934,"name":"saveSender","nameLocations":["39034:10:61"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"39034:10:61"},"nodeType":"ModifierInvocation","src":"39034:18:61"}],"name":"querySwapSingleTokenExactOut","nameLocation":"38832:28:61","nodeType":"FunctionDefinition","parameters":{"id":17933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17920,"mutability":"mutable","name":"pool","nameLocation":"38878:4:61","nodeType":"VariableDeclaration","scope":17974,"src":"38870:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17919,"name":"address","nodeType":"ElementaryTypeName","src":"38870:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17923,"mutability":"mutable","name":"tokenIn","nameLocation":"38899:7:61","nodeType":"VariableDeclaration","scope":17974,"src":"38892:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17922,"nodeType":"UserDefinedTypeName","pathNode":{"id":17921,"name":"IERC20","nameLocations":["38892:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"38892:6:61"},"referencedDeclaration":39274,"src":"38892:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17926,"mutability":"mutable","name":"tokenOut","nameLocation":"38923:8:61","nodeType":"VariableDeclaration","scope":17974,"src":"38916:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":17925,"nodeType":"UserDefinedTypeName","pathNode":{"id":17924,"name":"IERC20","nameLocations":["38916:6:61"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"38916:6:61"},"referencedDeclaration":39274,"src":"38916:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17928,"mutability":"mutable","name":"exactAmountOut","nameLocation":"38949:14:61","nodeType":"VariableDeclaration","scope":17974,"src":"38941:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17927,"name":"uint256","nodeType":"ElementaryTypeName","src":"38941:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17930,"mutability":"mutable","name":"sender","nameLocation":"38981:6:61","nodeType":"VariableDeclaration","scope":17974,"src":"38973:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17929,"name":"address","nodeType":"ElementaryTypeName","src":"38973:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17932,"mutability":"mutable","name":"userData","nameLocation":"39010:8:61","nodeType":"VariableDeclaration","scope":17974,"src":"38997:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17931,"name":"bytes","nodeType":"ElementaryTypeName","src":"38997:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"38860:164:61"},"returnParameters":{"id":17939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17938,"mutability":"mutable","name":"amountCalculated","nameLocation":"39070:16:61","nodeType":"VariableDeclaration","scope":17974,"src":"39062:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17937,"name":"uint256","nodeType":"ElementaryTypeName","src":"39062:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"39061:26:61"},"scope":17997,"src":"38823:1075:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":17995,"nodeType":"Block","src":"40342:101:61","statements":[{"assignments":[17988,null,null],"declarations":[{"constant":false,"id":17988,"mutability":"mutable","name":"amountCalculated","nameLocation":"40361:16:61","nodeType":"VariableDeclaration","scope":17995,"src":"40353:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17987,"name":"uint256","nodeType":"ElementaryTypeName","src":"40353:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":17992,"initialValue":{"arguments":[{"id":17990,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17978,"src":"40395:6:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams calldata"}],"id":17989,"name":"_swapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17193,"src":"40385:9:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256,uint256,uint256)"}},"id":17991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40385:17:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"40352:50:61"},{"expression":{"id":17993,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17988,"src":"40420:16:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17986,"id":17994,"nodeType":"Return","src":"40413:23:61"}]},"documentation":{"id":17975,"nodeType":"StructuredDocumentation","src":"39904:303:61","text":" @notice Hook for swap queries.\n @dev Can only be called by the Vault. Also handles native ETH.\n @param params Swap parameters (see IRouter for struct definition)\n @return amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)"},"functionSelector":"be5ae841","id":17996,"implemented":true,"kind":"function","modifiers":[{"id":17981,"kind":"modifierInvocation","modifierName":{"id":17980,"name":"nonReentrant","nameLocations":["40301:12:61"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"40301:12:61"},"nodeType":"ModifierInvocation","src":"40301:12:61"},{"id":17983,"kind":"modifierInvocation","modifierName":{"id":17982,"name":"onlyVault","nameLocations":["40314:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"40314:9:61"},"nodeType":"ModifierInvocation","src":"40314:9:61"}],"name":"querySwapHook","nameLocation":"40221:13:61","nodeType":"FunctionDefinition","parameters":{"id":17979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17978,"mutability":"mutable","name":"params","nameLocation":"40279:6:61","nodeType":"VariableDeclaration","scope":17996,"src":"40244:41:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"},"typeName":{"id":17977,"nodeType":"UserDefinedTypeName","pathNode":{"id":17976,"name":"SwapSingleTokenHookParams","nameLocations":["40244:25:61"],"nodeType":"IdentifierPath","referencedDeclaration":2487,"src":"40244:25:61"},"referencedDeclaration":2487,"src":"40244:25:61","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"}},"visibility":"internal"}],"src":"40234:57:61"},"returnParameters":{"id":17986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17996,"src":"40333:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17984,"name":"uint256","nodeType":"ElementaryTypeName","src":"40333:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"40332:9:61"},"scope":17997,"src":"40212:231:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":17998,"src":"1123:39322:61","usedErrors":[3422,5586,5981,9512,18076,18079,18082,39353,39634,39639,39642,42381],"usedEvents":[]}],"src":"46:40400:61"},"id":61},"@balancer-labs/v3-vault/contracts/RouterCommon.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/RouterCommon.sol","exportedSymbols":{"Address":[39879],"IAllowanceTransfer":[46082],"IERC20":[39274],"IERC20Permit":[39336],"IPermit2":[46102],"IRouterCommon":[2823],"IVault":[2893],"IWETH":[178],"InputHelpers":[5819],"ReentrancyGuardTransient":[9568],"RevertCodec":[6060],"RouterCommon":[18820],"SafeCast":[44126],"SafeERC20":[39626],"StorageSlotExtension":[9911],"TransientStorageHelpers":[7068],"VaultGuard":[27688],"Version":[7108]},"id":18821,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":17999,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:62"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","id":18001,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":39337,"src":"72:95:62","symbolAliases":[{"foreign":{"id":18000,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39336,"src":"81:12:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":18003,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":39627,"src":"168:84:62","symbolAliases":[{"foreign":{"id":18002,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39626,"src":"177:9:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":18005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":44127,"src":"253:75:62","symbolAliases":[{"foreign":{"id":18004,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"262:8:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":18007,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":39275,"src":"329:72:62","symbolAliases":[{"foreign":{"id":18006,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"338:6:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":18009,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":39880,"src":"402:68:62","symbolAliases":[{"foreign":{"id":18008,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"411:7:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":18011,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":46103,"src":"471:63:62","symbolAliases":[{"foreign":{"id":18010,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"480:8:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol","id":18013,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":2824,"src":"536:95:62","symbolAliases":[{"foreign":{"id":18012,"name":"IRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"545:13:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":18015,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":179,"src":"632:93:62","symbolAliases":[{"foreign":{"id":18014,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"641:5:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"permit2/src/interfaces/IAllowanceTransfer.sol","id":18017,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":46083,"src":"726:83:62","symbolAliases":[{"foreign":{"id":18016,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46082,"src":"735:18:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":18019,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":2894,"src":"810:81:62","symbolAliases":[{"foreign":{"id":18018,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"819:6:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","id":18021,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":9912,"src":"893:120:62","symbolAliases":[{"foreign":{"id":18020,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"902:20:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","id":18023,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":5820,"src":"1014:99:62","symbolAliases":[{"foreign":{"id":18022,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"1023:12:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol","id":18025,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":6061,"src":"1114:97:62","symbolAliases":[{"foreign":{"id":18024,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"1123:11:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol","id":18027,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":9569,"src":"1212:132:62","symbolAliases":[{"foreign":{"id":18026,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"1225:24:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","id":18029,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":7109,"src":"1345:89:62","symbolAliases":[{"foreign":{"id":18028,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"1354:7:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":18031,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":7069,"src":"1435:125:62","symbolAliases":[{"foreign":{"id":18030,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"1448:23:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultGuard.sol","file":"./VaultGuard.sol","id":18033,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18821,"sourceUnit":27689,"src":"1562:46:62","symbolAliases":[{"foreign":{"id":18032,"name":"VaultGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27688,"src":"1571:10:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":18035,"name":"IRouterCommon","nameLocations":["2019:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":2823,"src":"2019:13:62"},"id":18036,"nodeType":"InheritanceSpecifier","src":"2019:13:62"},{"baseName":{"id":18037,"name":"VaultGuard","nameLocations":["2034:10:62"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"2034:10:62"},"id":18038,"nodeType":"InheritanceSpecifier","src":"2034:10:62"},{"baseName":{"id":18039,"name":"ReentrancyGuardTransient","nameLocations":["2046:24:62"],"nodeType":"IdentifierPath","referencedDeclaration":9568,"src":"2046:24:62"},"id":18040,"nodeType":"InheritanceSpecifier","src":"2046:24:62"},{"baseName":{"id":18041,"name":"Version","nameLocations":["2072:7:62"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"2072:7:62"},"id":18042,"nodeType":"InheritanceSpecifier","src":"2072:7:62"}],"canonicalName":"RouterCommon","contractDependencies":[],"contractKind":"contract","documentation":{"id":18034,"nodeType":"StructuredDocumentation","src":"1610:374:62","text":" @notice Abstract base contract for functions shared among all Routers.\n @dev Common functionality includes access to the sender (which would normally be obscured, since msg.sender in the\n Vault is the Router contract itself, not the account that invoked the Router), versioning, and the external\n invocation functions (`permitBatchAndCall` and `multicall`)."},"fullyImplemented":true,"id":18820,"linearizedBaseContracts":[18820,7108,160,9568,27688,2823],"name":"RouterCommon","nameLocation":"2003:12:62","nodeType":"ContractDefinition","nodes":[{"global":false,"id":18045,"libraryName":{"id":18043,"name":"Address","nameLocations":["2092:7:62"],"nodeType":"IdentifierPath","referencedDeclaration":39879,"src":"2092:7:62"},"nodeType":"UsingForDirective","src":"2086:34:62","typeName":{"id":18044,"name":"address","nodeType":"ElementaryTypeName","src":"2104:15:62","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"global":false,"id":18047,"libraryName":{"id":18046,"name":"StorageSlotExtension","nameLocations":["2131:20:62"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"2131:20:62"},"nodeType":"UsingForDirective","src":"2125:33:62"},{"global":false,"id":18051,"libraryName":{"id":18048,"name":"SafeERC20","nameLocations":["2169:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":39626,"src":"2169:9:62"},"nodeType":"UsingForDirective","src":"2163:26:62","typeName":{"id":18050,"nodeType":"UserDefinedTypeName","pathNode":{"id":18049,"name":"IWETH","nameLocations":["2183:5:62"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"2183:5:62"},"referencedDeclaration":178,"src":"2183:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}}},{"global":false,"id":18053,"libraryName":{"id":18052,"name":"SafeCast","nameLocations":["2200:8:62"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"2200:8:62"},"nodeType":"UsingForDirective","src":"2194:21:62"},{"constant":false,"id":18063,"mutability":"immutable","name":"_SENDER_SLOT","nameLocation":"2636:12:62","nodeType":"VariableDeclaration","scope":18820,"src":"2610:113:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2610:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"expression":{"arguments":[{"id":18058,"name":"RouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18820,"src":"2694:12:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterCommon_$18820_$","typeString":"type(contract RouterCommon)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_RouterCommon_$18820_$","typeString":"type(contract RouterCommon)"}],"id":18057,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2689:4:62","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":18059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2689:18:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_RouterCommon_$18820","typeString":"type(contract RouterCommon)"}},"id":18060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2708:4:62","memberName":"name","nodeType":"MemberAccess","src":"2689:23:62","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"73656e646572","id":18061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2714:8:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_168e92ce035ba45e59a0314b0ed9a9e619b284aed8f6e5ab0a596efd5c9f5cf9","typeString":"literal_string \"sender\""},"value":"sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_168e92ce035ba45e59a0314b0ed9a9e619b284aed8f6e5ab0a596efd5c9f5cf9","typeString":"literal_string \"sender\""}],"expression":{"id":18055,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"2651:23:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransientStorageHelpers_$7068_$","typeString":"type(library TransientStorageHelpers)"}},"id":18056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2675:13:62","memberName":"calculateSlot","nodeType":"MemberAccess","referencedDeclaration":6537,"src":"2651:37:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory,string memory) pure returns (bytes32)"}},"id":18062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2651:72:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":18073,"mutability":"immutable","name":"_IS_RETURN_ETH_LOCKED_SLOT","nameLocation":"2808:26:62","nodeType":"VariableDeclaration","scope":18820,"src":"2782:146:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2782:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"expression":{"arguments":[{"id":18068,"name":"RouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18820,"src":"2888:12:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterCommon_$18820_$","typeString":"type(contract RouterCommon)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_RouterCommon_$18820_$","typeString":"type(contract RouterCommon)"}],"id":18067,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2883:4:62","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":18069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2883:18:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_RouterCommon_$18820","typeString":"type(contract RouterCommon)"}},"id":18070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2902:4:62","memberName":"name","nodeType":"MemberAccess","src":"2883:23:62","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"697352657475726e4574684c6f636b6564","id":18071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2908:19:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_d19a96da6e3f3f787797bbfe15fd8b17146f21fdc2ef9455ab3d06a368e101f1","typeString":"literal_string \"isReturnEthLocked\""},"value":"isReturnEthLocked"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_d19a96da6e3f3f787797bbfe15fd8b17146f21fdc2ef9455ab3d06a368e101f1","typeString":"literal_string \"isReturnEthLocked\""}],"expression":{"id":18065,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"2845:23:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransientStorageHelpers_$7068_$","typeString":"type(library TransientStorageHelpers)"}},"id":18066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2869:13:62","memberName":"calculateSlot","nodeType":"MemberAccess","referencedDeclaration":6537,"src":"2845:37:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory,string memory) pure returns (bytes32)"}},"id":18072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2845:83:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"documentation":{"id":18074,"nodeType":"StructuredDocumentation","src":"2935:67:62","text":"@notice Incoming ETH transfer from an address that is not WETH."},"errorSelector":"0540ddf6","id":18076,"name":"EthTransfer","nameLocation":"3013:11:62","nodeType":"ErrorDefinition","parameters":{"id":18075,"nodeType":"ParameterList","parameters":[],"src":"3024:2:62"},"src":"3007:20:62"},{"documentation":{"id":18077,"nodeType":"StructuredDocumentation","src":"3033:78:62","text":"@notice The amount of ETH paid is insufficient to complete this operation."},"errorSelector":"a01a9df6","id":18079,"name":"InsufficientEth","nameLocation":"3122:15:62","nodeType":"ErrorDefinition","parameters":{"id":18078,"nodeType":"ParameterList","parameters":[],"src":"3137:2:62"},"src":"3116:24:62"},{"documentation":{"id":18080,"nodeType":"StructuredDocumentation","src":"3146:91:62","text":"@notice The swap transaction was not validated before the specified deadline timestamp."},"errorSelector":"e08b8af0","id":18082,"name":"SwapDeadline","nameLocation":"3248:12:62","nodeType":"ErrorDefinition","parameters":{"id":18081,"nodeType":"ParameterList","parameters":[],"src":"3260:2:62"},"src":"3242:21:62"},{"constant":true,"id":18089,"mutability":"constant","name":"_MAX_AMOUNT","nameLocation":"3510:11:62","nodeType":"VariableDeclaration","scope":18820,"src":"3484:57:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18083,"name":"uint256","nodeType":"ElementaryTypeName","src":"3484:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"arguments":[{"id":18086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3529:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":18085,"name":"uint128","nodeType":"ElementaryTypeName","src":"3529:7:62","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":18084,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3524:4:62","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":18087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3524:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":18088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3538:3:62","memberName":"max","nodeType":"MemberAccess","src":"3524:17:62","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":18092,"mutability":"immutable","name":"_weth","nameLocation":"3625:5:62","nodeType":"VariableDeclaration","scope":18820,"src":"3600:30:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":18091,"nodeType":"UserDefinedTypeName","pathNode":{"id":18090,"name":"IWETH","nameLocations":["3600:5:62"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"3600:5:62"},"referencedDeclaration":178,"src":"3600:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":18095,"mutability":"immutable","name":"_permit2","nameLocation":"3665:8:62","nodeType":"VariableDeclaration","scope":18820,"src":"3637:36:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":18094,"nodeType":"UserDefinedTypeName","pathNode":{"id":18093,"name":"IPermit2","nameLocations":["3637:8:62"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"3637:8:62"},"referencedDeclaration":46102,"src":"3637:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"},{"body":{"id":18111,"nodeType":"Block","src":"5401:123:62","statements":[{"assignments":[18101],"declarations":[{"constant":false,"id":18101,"mutability":"mutable","name":"isExternalSender","nameLocation":"5416:16:62","nodeType":"VariableDeclaration","scope":18111,"src":"5411:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18100,"name":"bool","nodeType":"ElementaryTypeName","src":"5411:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":18105,"initialValue":{"arguments":[{"id":18103,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18098,"src":"5447:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18102,"name":"_saveSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18193,"src":"5435:11:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":18104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5435:19:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5411:43:62"},{"id":18106,"nodeType":"PlaceholderStatement","src":"5464:1:62"},{"expression":{"arguments":[{"id":18108,"name":"isExternalSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18101,"src":"5500:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":18107,"name":"_discardSenderIfRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18211,"src":"5475:24:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":18109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5475:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18110,"nodeType":"ExpressionStatement","src":"5475:42:62"}]},"documentation":{"id":18096,"nodeType":"StructuredDocumentation","src":"3680:1680:62","text":" @notice Saves the user or contract that initiated the current operation.\n @dev It is possible to nest router calls (e.g., with reentrant hooks), but the sender returned by the Router's\n `getSender` function will always be the \"outermost\" caller. Some transactions require the Router to identify\n multiple senders. Consider the following example:\n - ContractA has a function that calls the Router, then calls ContractB with the output. ContractB in turn\n calls back into the Router.\n - Imagine further that ContractA is a pool with a \"before\" hook that also calls the Router.\n When the user calls the function on ContractA, there are three calls to the Router in the same transaction:\n - 1st call: When ContractA calls the Router directly, to initiate an operation on the pool (say, a swap).\n (Sender is contractA, initiator of the operation.)\n - 2nd call: When the pool operation invokes a hook (say onBeforeSwap), which calls back into the Router.\n This is a \"nested\" call within the original pool operation. The nested call returns, then the\n before hook returns, the Router completes the operation, and finally returns back to ContractA\n with the result (e.g., a calculated amount of tokens).\n (Nested call; sender is still ContractA through all of this.)\n - 3rd call: When the first operation is complete, ContractA calls ContractB, which in turn calls the Router.\n (Not nested, as the original router call from contractA has returned. Sender is now ContractB.)"},"id":18112,"name":"saveSender","nameLocation":"5374:10:62","nodeType":"ModifierDefinition","parameters":{"id":18099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18098,"mutability":"mutable","name":"sender","nameLocation":"5393:6:62","nodeType":"VariableDeclaration","scope":18112,"src":"5385:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18097,"name":"address","nodeType":"ElementaryTypeName","src":"5385:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5384:16:62"},"src":"5365:159:62","virtual":false,"visibility":"internal"},{"body":{"id":18159,"nodeType":"Block","src":"5737:556:62","statements":[{"assignments":[18116],"declarations":[{"constant":false,"id":18116,"mutability":"mutable","name":"isExternalSender","nameLocation":"5752:16:62","nodeType":"VariableDeclaration","scope":18159,"src":"5747:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18115,"name":"bool","nodeType":"ElementaryTypeName","src":"5747:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":18121,"initialValue":{"arguments":[{"expression":{"id":18118,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5783:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5787:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5783:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18117,"name":"_saveSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18193,"src":"5771:11:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_bool_$","typeString":"function (address) returns (bool)"}},"id":18120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5771:23:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5747:47:62"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18122,"name":"_isReturnEthLockedSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18819,"src":"5901:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":18123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5901:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":18124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5926:5:62","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"5901:30:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlotType_$9734_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType) view returns (bool)"}},"id":18125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5901:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18130,"nodeType":"IfStatement","src":"5897:100:62","trueBody":{"id":18129,"nodeType":"Block","src":"5935:62:62","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":18126,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9512,"src":"5956:28:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5956:30:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":18128,"nodeType":"RevertStatement","src":"5949:37:62"}]}},{"expression":{"arguments":[{"hexValue":"74727565","id":18134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6090:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18131,"name":"_isReturnEthLockedSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18819,"src":"6058:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":18132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6058:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":18133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6083:6:62","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"6058:31:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":18135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6058:37:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18136,"nodeType":"ExpressionStatement","src":"6058:37:62"},{"id":18137,"nodeType":"PlaceholderStatement","src":"6105:1:62"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":18141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6148:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18138,"name":"_isReturnEthLockedSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18819,"src":"6116:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":18139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6116:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":18140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6141:6:62","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"6116:31:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":18142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6116:38:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18143,"nodeType":"ExpressionStatement","src":"6116:38:62"},{"assignments":[18145],"declarations":[{"constant":false,"id":18145,"mutability":"mutable","name":"sender","nameLocation":"6173:6:62","nodeType":"VariableDeclaration","scope":18159,"src":"6165:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18144,"name":"address","nodeType":"ElementaryTypeName","src":"6165:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":18150,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18146,"name":"_getSenderSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18808,"src":"6182:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function () view returns (StorageSlotExtension.AddressSlotType)"}},"id":18147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6182:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":18148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6199:5:62","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9811,"src":"6182:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressSlotType_$9717_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType) view returns (address)"}},"id":18149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6182:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6165:41:62"},{"expression":{"arguments":[{"id":18152,"name":"isExternalSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18116,"src":"6241:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":18151,"name":"_discardSenderIfRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18211,"src":"6216:24:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":18153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6216:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18154,"nodeType":"ExpressionStatement","src":"6216:42:62"},{"expression":{"arguments":[{"id":18156,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18145,"src":"6279:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18155,"name":"_returnEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"6268:10:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6268:18:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18158,"nodeType":"ExpressionStatement","src":"6268:18:62"}]},"documentation":{"id":18113,"nodeType":"StructuredDocumentation","src":"5530:168:62","text":" @notice Locks the return of excess ETH to the sender until the end of the function.\n @dev This also encompasses the `saveSender` functionality."},"id":18160,"name":"saveSenderAndManageEth","nameLocation":"5712:22:62","nodeType":"ModifierDefinition","parameters":{"id":18114,"nodeType":"ParameterList","parameters":[],"src":"5734:2:62"},"src":"5703:590:62","virtual":false,"visibility":"internal"},{"body":{"id":18192,"nodeType":"Block","src":"6377:273:62","statements":[{"assignments":[18168],"declarations":[{"constant":false,"id":18168,"mutability":"mutable","name":"savedSender","nameLocation":"6395:11:62","nodeType":"VariableDeclaration","scope":18192,"src":"6387:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18167,"name":"address","nodeType":"ElementaryTypeName","src":"6387:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":18173,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18169,"name":"_getSenderSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18808,"src":"6409:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function () view returns (StorageSlotExtension.AddressSlotType)"}},"id":18170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":18171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6426:5:62","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9811,"src":"6409:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressSlotType_$9717_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType) view returns (address)"}},"id":18172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6387:46:62"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18174,"name":"savedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18168,"src":"6524:11:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":18177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6547:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6539:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18175,"name":"address","nodeType":"ElementaryTypeName","src":"6539:7:62","typeDescriptions":{}}},"id":18178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6539:10:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6524:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18191,"nodeType":"IfStatement","src":"6520:124:62","trueBody":{"id":18190,"nodeType":"Block","src":"6551:93:62","statements":[{"expression":{"arguments":[{"id":18183,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18162,"src":"6589:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18180,"name":"_getSenderSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18808,"src":"6565:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function () view returns (StorageSlotExtension.AddressSlotType)"}},"id":18181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6565:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":18182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6582:6:62","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9822,"src":"6565:23:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressSlotType_$9717_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType,address)"}},"id":18184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6565:31:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18185,"nodeType":"ExpressionStatement","src":"6565:31:62"},{"expression":{"id":18188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18186,"name":"isExternalSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18165,"src":"6610:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":18187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6629:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6610:23:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18189,"nodeType":"ExpressionStatement","src":"6610:23:62"}]}}]},"id":18193,"implemented":true,"kind":"function","modifiers":[],"name":"_saveSender","nameLocation":"6308:11:62","nodeType":"FunctionDefinition","parameters":{"id":18163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18162,"mutability":"mutable","name":"sender","nameLocation":"6328:6:62","nodeType":"VariableDeclaration","scope":18193,"src":"6320:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18161,"name":"address","nodeType":"ElementaryTypeName","src":"6320:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6319:16:62"},"returnParameters":{"id":18166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18165,"mutability":"mutable","name":"isExternalSender","nameLocation":"6359:16:62","nodeType":"VariableDeclaration","scope":18193,"src":"6354:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18164,"name":"bool","nodeType":"ElementaryTypeName","src":"6354:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6353:23:62"},"scope":18820,"src":"6299:351:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18210,"nodeType":"Block","src":"6722:253:62","statements":[{"condition":{"id":18198,"name":"isExternalSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18195,"src":"6891:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18209,"nodeType":"IfStatement","src":"6887:82:62","trueBody":{"id":18208,"nodeType":"Block","src":"6909:60:62","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":18204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6955:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6947:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18202,"name":"address","nodeType":"ElementaryTypeName","src":"6947:7:62","typeDescriptions":{}}},"id":18205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6947:10:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18199,"name":"_getSenderSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18808,"src":"6923:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function () view returns (StorageSlotExtension.AddressSlotType)"}},"id":18200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6923:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":18201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6940:6:62","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9822,"src":"6923:23:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_AddressSlotType_$9717_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType,address)"}},"id":18206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6923:35:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18207,"nodeType":"ExpressionStatement","src":"6923:35:62"}]}}]},"id":18211,"implemented":true,"kind":"function","modifiers":[],"name":"_discardSenderIfRequired","nameLocation":"6665:24:62","nodeType":"FunctionDefinition","parameters":{"id":18196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18195,"mutability":"mutable","name":"isExternalSender","nameLocation":"6695:16:62","nodeType":"VariableDeclaration","scope":18211,"src":"6690:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18194,"name":"bool","nodeType":"ElementaryTypeName","src":"6690:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6689:23:62"},"returnParameters":{"id":18197,"nodeType":"ParameterList","parameters":[],"src":"6722:0:62"},"scope":18820,"src":"6656:319:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18239,"nodeType":"Block","src":"7145:57:62","statements":[{"expression":{"id":18233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18231,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"7155:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18232,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18217,"src":"7163:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"src":"7155:12:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":18234,"nodeType":"ExpressionStatement","src":"7155:12:62"},{"expression":{"id":18237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18235,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"7177:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18236,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18220,"src":"7188:7:62","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"src":"7177:18:62","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":18238,"nodeType":"ExpressionStatement","src":"7177:18:62"}]},"id":18240,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18225,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18214,"src":"7115:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":18226,"kind":"baseConstructorSpecifier","modifierName":{"id":18224,"name":"VaultGuard","nameLocations":["7104:10:62"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"7104:10:62"},"nodeType":"ModifierInvocation","src":"7104:17:62"},{"arguments":[{"id":18228,"name":"routerVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18222,"src":"7130:13:62","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":18229,"kind":"baseConstructorSpecifier","modifierName":{"id":18227,"name":"Version","nameLocations":["7122:7:62"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"7122:7:62"},"nodeType":"ModifierInvocation","src":"7122:22:62"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":18223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18214,"mutability":"mutable","name":"vault","nameLocation":"7009:5:62","nodeType":"VariableDeclaration","scope":18240,"src":"7002:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":18213,"nodeType":"UserDefinedTypeName","pathNode":{"id":18212,"name":"IVault","nameLocations":["7002:6:62"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"7002:6:62"},"referencedDeclaration":2893,"src":"7002:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":18217,"mutability":"mutable","name":"weth","nameLocation":"7030:4:62","nodeType":"VariableDeclaration","scope":18240,"src":"7024:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":18216,"nodeType":"UserDefinedTypeName","pathNode":{"id":18215,"name":"IWETH","nameLocations":["7024:5:62"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"7024:5:62"},"referencedDeclaration":178,"src":"7024:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":18220,"mutability":"mutable","name":"permit2","nameLocation":"7053:7:62","nodeType":"VariableDeclaration","scope":18240,"src":"7044:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":18219,"nodeType":"UserDefinedTypeName","pathNode":{"id":18218,"name":"IPermit2","nameLocations":["7044:8:62"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"7044:8:62"},"referencedDeclaration":46102,"src":"7044:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"},{"constant":false,"id":18222,"mutability":"mutable","name":"routerVersion","nameLocation":"7084:13:62","nodeType":"VariableDeclaration","scope":18240,"src":"7070:27:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18221,"name":"string","nodeType":"ElementaryTypeName","src":"7070:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6992:111:62"},"returnParameters":{"id":18230,"nodeType":"ParameterList","parameters":[],"src":"7145:0:62"},"scope":18820,"src":"6981:221:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"canonicalName":"RouterCommon.SignatureParts","id":18247,"members":[{"constant":false,"id":18242,"mutability":"mutable","name":"r","nameLocation":"7467:1:62","nodeType":"VariableDeclaration","scope":18247,"src":"7459:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18241,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7459:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":18244,"mutability":"mutable","name":"s","nameLocation":"7486:1:62","nodeType":"VariableDeclaration","scope":18247,"src":"7478:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7478:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":18246,"mutability":"mutable","name":"v","nameLocation":"7503:1:62","nodeType":"VariableDeclaration","scope":18247,"src":"7497:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18245,"name":"uint8","nodeType":"ElementaryTypeName","src":"7497:5:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"SignatureParts","nameLocation":"7434:14:62","nodeType":"StructDefinition","scope":18820,"src":"7427:84:62","visibility":"public"},{"baseFunctions":[2812],"body":{"id":18280,"nodeType":"Block","src":"7876:217:62","statements":[{"expression":{"arguments":[{"id":18270,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18252,"src":"7899:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval calldata[] calldata"}},{"id":18271,"name":"permitSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18255,"src":"7912:16:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},{"id":18272,"name":"permit2Batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18258,"src":"7930:12:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch calldata"}},{"id":18273,"name":"permit2Signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18260,"src":"7944:16:62","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval calldata[] calldata"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"},{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":18269,"name":"_permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18410,"src":"7886:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_struct$_PermitBatch_$45969_calldata_ptr_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct IRouterCommon.PermitApproval calldata[] calldata,bytes calldata[] calldata,struct IAllowanceTransfer.PermitBatch calldata,bytes calldata)"}},"id":18274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7886:75:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18275,"nodeType":"ExpressionStatement","src":"7886:75:62"},{"expression":{"arguments":[{"id":18277,"name":"multicallData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18263,"src":"8072:13:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":18276,"name":"multicall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18462,"src":"8062:9:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes calldata[] calldata) returns (bytes memory[] memory)"}},"id":18278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8062:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"functionReturnParameters":18268,"id":18279,"nodeType":"Return","src":"8055:31:62"}]},"documentation":{"id":18248,"nodeType":"StructuredDocumentation","src":"7517:29:62","text":"@inheritdoc IRouterCommon"},"functionSelector":"19c6989f","id":18281,"implemented":true,"kind":"function","modifiers":[],"name":"permitBatchAndCall","nameLocation":"7560:18:62","nodeType":"FunctionDefinition","parameters":{"id":18264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18252,"mutability":"mutable","name":"permitBatch","nameLocation":"7614:11:62","nodeType":"VariableDeclaration","scope":18281,"src":"7588:37:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval[]"},"typeName":{"baseType":{"id":18250,"nodeType":"UserDefinedTypeName","pathNode":{"id":18249,"name":"PermitApproval","nameLocations":["7588:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":2790,"src":"7588:14:62"},"referencedDeclaration":2790,"src":"7588:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_storage_ptr","typeString":"struct IRouterCommon.PermitApproval"}},"id":18251,"nodeType":"ArrayTypeName","src":"7588:16:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_storage_$dyn_storage_ptr","typeString":"struct IRouterCommon.PermitApproval[]"}},"visibility":"internal"},{"constant":false,"id":18255,"mutability":"mutable","name":"permitSignatures","nameLocation":"7652:16:62","nodeType":"VariableDeclaration","scope":18281,"src":"7635:33:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18253,"name":"bytes","nodeType":"ElementaryTypeName","src":"7635:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18254,"nodeType":"ArrayTypeName","src":"7635:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":18258,"mutability":"mutable","name":"permit2Batch","nameLocation":"7718:12:62","nodeType":"VariableDeclaration","scope":18281,"src":"7678:52:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":18257,"nodeType":"UserDefinedTypeName","pathNode":{"id":18256,"name":"IAllowanceTransfer.PermitBatch","nameLocations":["7678:18:62","7697:11:62"],"nodeType":"IdentifierPath","referencedDeclaration":45969,"src":"7678:30:62"},"referencedDeclaration":45969,"src":"7678:30:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"},{"constant":false,"id":18260,"mutability":"mutable","name":"permit2Signature","nameLocation":"7755:16:62","nodeType":"VariableDeclaration","scope":18281,"src":"7740:31:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":18259,"name":"bytes","nodeType":"ElementaryTypeName","src":"7740:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":18263,"mutability":"mutable","name":"multicallData","nameLocation":"7798:13:62","nodeType":"VariableDeclaration","scope":18281,"src":"7781:30:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18261,"name":"bytes","nodeType":"ElementaryTypeName","src":"7781:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18262,"nodeType":"ArrayTypeName","src":"7781:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"7578:239:62"},"returnParameters":{"id":18268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18267,"mutability":"mutable","name":"results","nameLocation":"7867:7:62","nodeType":"VariableDeclaration","scope":18281,"src":"7852:22:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18265,"name":"bytes","nodeType":"ElementaryTypeName","src":"7852:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18266,"nodeType":"ArrayTypeName","src":"7852:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"7851:24:62"},"scope":18820,"src":"7551:542:62","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":18409,"nodeType":"Block","src":"8342:2546:62","statements":[{"expression":{"arguments":[{"expression":{"id":18301,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"8388:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval calldata[] calldata"}},"id":18302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8400:6:62","memberName":"length","nodeType":"MemberAccess","src":"8388:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":18303,"name":"permitSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18288,"src":"8408:16:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":18304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8425:6:62","memberName":"length","nodeType":"MemberAccess","src":"8408:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18298,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"8352:12:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":18300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8365:22:62","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5611,"src":"8352:35:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":18305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8352:80:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18306,"nodeType":"ExpressionStatement","src":"8352:80:62"},{"body":{"id":18391,"nodeType":"Block","src":"8633:1322:62","statements":[{"assignments":[18319],"declarations":[{"constant":false,"id":18319,"mutability":"mutable","name":"signature","nameLocation":"8660:9:62","nodeType":"VariableDeclaration","scope":18391,"src":"8647:22:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":18318,"name":"bytes","nodeType":"ElementaryTypeName","src":"8647:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":18323,"initialValue":{"baseExpression":{"id":18320,"name":"permitSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18288,"src":"8672:16:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":18322,"indexExpression":{"id":18321,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18308,"src":"8689:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8672:19:62","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"8647:44:62"},{"assignments":[18326],"declarations":[{"constant":false,"id":18326,"mutability":"mutable","name":"signatureParts","nameLocation":"8728:14:62","nodeType":"VariableDeclaration","scope":18391,"src":"8706:36:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts"},"typeName":{"id":18325,"nodeType":"UserDefinedTypeName","pathNode":{"id":18324,"name":"SignatureParts","nameLocations":["8706:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":18247,"src":"8706:14:62"},"referencedDeclaration":18247,"src":"8706:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_storage_ptr","typeString":"struct RouterCommon.SignatureParts"}},"visibility":"internal"}],"id":18330,"initialValue":{"arguments":[{"id":18328,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18319,"src":"8764:9:62","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":18327,"name":"_getSignatureParts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18499,"src":"8745:18:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_SignatureParts_$18247_memory_ptr_$","typeString":"function (bytes memory) pure returns (struct RouterCommon.SignatureParts memory)"}},"id":18329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8745:29:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts memory"}},"nodeType":"VariableDeclarationStatement","src":"8706:68:62"},{"assignments":[18333],"declarations":[{"constant":false,"id":18333,"mutability":"mutable","name":"permitApproval","nameLocation":"8810:14:62","nodeType":"VariableDeclaration","scope":18391,"src":"8788:36:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval"},"typeName":{"id":18332,"nodeType":"UserDefinedTypeName","pathNode":{"id":18331,"name":"PermitApproval","nameLocations":["8788:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":2790,"src":"8788:14:62"},"referencedDeclaration":2790,"src":"8788:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_storage_ptr","typeString":"struct IRouterCommon.PermitApproval"}},"visibility":"internal"}],"id":18337,"initialValue":{"baseExpression":{"id":18334,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"8827:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval calldata[] calldata"}},"id":18336,"indexExpression":{"id":18335,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18308,"src":"8839:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8827:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval calldata"}},"nodeType":"VariableDeclarationStatement","src":"8788:53:62"},{"clauses":[{"block":{"id":18360,"nodeType":"Block","src":"9227:113:62","statements":[]},"errorName":"","id":18361,"nodeType":"TryCatchClause","src":"9227:113:62"},{"block":{"id":18388,"nodeType":"Block","src":"9373:572:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":18370,"name":"permitApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18333,"src":"9653:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval memory"}},"id":18371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9668:5:62","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":2781,"src":"9653:20:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":18374,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9683:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}],"id":18373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9675:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18372,"name":"address","nodeType":"ElementaryTypeName","src":"9675:7:62","typeDescriptions":{}}},"id":18375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9675:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":18366,"name":"permitApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18333,"src":"9621:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval memory"}},"id":18367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9636:5:62","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":2779,"src":"9621:20:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18365,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"9614:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":18368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9614:28:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":18369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9643:9:62","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":39251,"src":"9614:38:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":18376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9614:75:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":18377,"name":"permitApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18333,"src":"9693:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval memory"}},"id":18378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9708:6:62","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":2785,"src":"9693:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9614:100:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18387,"nodeType":"IfStatement","src":"9589:342:62","trueBody":{"id":18386,"nodeType":"Block","src":"9733:198:62","statements":[{"expression":{"arguments":[{"id":18383,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18363,"src":"9901:10:62","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":18380,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"9874:11:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":18382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9886:14:62","memberName":"bubbleUpRevert","nodeType":"MemberAccess","referencedDeclaration":6059,"src":"9874:26:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":18384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9874:38:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18385,"nodeType":"ExpressionStatement","src":"9874:38:62"}]}}]},"errorName":"","id":18389,"nodeType":"TryCatchClause","parameters":{"id":18364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18363,"mutability":"mutable","name":"returnData","nameLocation":"9361:10:62","nodeType":"VariableDeclaration","scope":18389,"src":"9348:23:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":18362,"name":"bytes","nodeType":"ElementaryTypeName","src":"9348:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9347:25:62"},"src":"9341:604:62"}],"externalCall":{"arguments":[{"expression":{"id":18343,"name":"permitApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18333,"src":"8939:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval memory"}},"id":18344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8954:5:62","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":2781,"src":"8939:20:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":18347,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8989:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}],"id":18346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8981:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18345,"name":"address","nodeType":"ElementaryTypeName","src":"8981:7:62","typeDescriptions":{}}},"id":18348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8981:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":18349,"name":"permitApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18333,"src":"9016:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval memory"}},"id":18350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9031:6:62","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":2785,"src":"9016:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":18351,"name":"permitApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18333,"src":"9059:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval memory"}},"id":18352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9074:8:62","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":2789,"src":"9059:23:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":18353,"name":"signatureParts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18326,"src":"9104:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts memory"}},"id":18354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9119:1:62","memberName":"v","nodeType":"MemberAccess","referencedDeclaration":18246,"src":"9104:16:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"id":18355,"name":"signatureParts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18326,"src":"9142:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts memory"}},"id":18356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9157:1:62","memberName":"r","nodeType":"MemberAccess","referencedDeclaration":18242,"src":"9142:16:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":18357,"name":"signatureParts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18326,"src":"9180:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts memory"}},"id":18358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9195:1:62","memberName":"s","nodeType":"MemberAccess","referencedDeclaration":18244,"src":"9180:16:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"expression":{"id":18339,"name":"permitApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18333,"src":"8889:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_memory_ptr","typeString":"struct IRouterCommon.PermitApproval memory"}},"id":18340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8904:5:62","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":2779,"src":"8889:20:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18338,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39336,"src":"8876:12:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Permit_$39336_$","typeString":"type(contract IERC20Permit)"}},"id":18341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8876:34:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$39336","typeString":"contract IERC20Permit"}},"id":18342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8911:6:62","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":39321,"src":"8876:41:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":18359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8876:338:62","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18390,"nodeType":"TryStatement","src":"8856:1089:62"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18311,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18308,"src":"8604:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18312,"name":"permitBatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18285,"src":"8608:11:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval calldata[] calldata"}},"id":18313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8620:6:62","memberName":"length","nodeType":"MemberAccess","src":"8608:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8604:22:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18392,"initializationExpression":{"assignments":[18308],"declarations":[{"constant":false,"id":18308,"mutability":"mutable","name":"i","nameLocation":"8597:1:62","nodeType":"VariableDeclaration","scope":18392,"src":"8589:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18307,"name":"uint256","nodeType":"ElementaryTypeName","src":"8589:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18310,"initialValue":{"hexValue":"30","id":18309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8601:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8589:13:62"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8628:3:62","subExpression":{"id":18315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18308,"src":"8630:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18317,"nodeType":"ExpressionStatement","src":"8628:3:62"},"nodeType":"ForStatement","src":"8584:1371:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":18393,"name":"permit2Batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"10026:12:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch calldata"}},"id":18394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10039:7:62","memberName":"details","nodeType":"MemberAccess","referencedDeclaration":45964,"src":"10026:20:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$45950_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitDetails calldata[] calldata"}},"id":18395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10047:6:62","memberName":"length","nodeType":"MemberAccess","src":"10026:27:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":18396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10056:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10026:31:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18408,"nodeType":"IfStatement","src":"10022:860:62","trueBody":{"id":18407,"nodeType":"Block","src":"10059:823:62","statements":[{"expression":{"arguments":[{"expression":{"id":18401,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10828:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10832:6:62","memberName":"sender","nodeType":"MemberAccess","src":"10828:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18403,"name":"permit2Batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18291,"src":"10840:12:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch calldata"}},{"id":18404,"name":"permit2Signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18293,"src":"10854:16:62","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":18398,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"10812:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":18400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10821:6:62","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46043,"src":"10812:15:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_struct$_PermitBatch_$45969_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,struct IAllowanceTransfer.PermitBatch memory,bytes memory) external"}},"id":18405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10812:59:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18406,"nodeType":"ExpressionStatement","src":"10812:59:62"}]}}]},"id":18410,"implemented":true,"kind":"function","modifiers":[{"id":18296,"kind":"modifierInvocation","modifierName":{"id":18295,"name":"nonReentrant","nameLocations":["8329:12:62"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"8329:12:62"},"nodeType":"ModifierInvocation","src":"8329:12:62"}],"name":"_permitBatch","nameLocation":"8108:12:62","nodeType":"FunctionDefinition","parameters":{"id":18294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18285,"mutability":"mutable","name":"permitBatch","nameLocation":"8156:11:62","nodeType":"VariableDeclaration","scope":18410,"src":"8130:37:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouterCommon.PermitApproval[]"},"typeName":{"baseType":{"id":18283,"nodeType":"UserDefinedTypeName","pathNode":{"id":18282,"name":"PermitApproval","nameLocations":["8130:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":2790,"src":"8130:14:62"},"referencedDeclaration":2790,"src":"8130:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitApproval_$2790_storage_ptr","typeString":"struct IRouterCommon.PermitApproval"}},"id":18284,"nodeType":"ArrayTypeName","src":"8130:16:62","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitApproval_$2790_storage_$dyn_storage_ptr","typeString":"struct IRouterCommon.PermitApproval[]"}},"visibility":"internal"},{"constant":false,"id":18288,"mutability":"mutable","name":"permitSignatures","nameLocation":"8194:16:62","nodeType":"VariableDeclaration","scope":18410,"src":"8177:33:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18286,"name":"bytes","nodeType":"ElementaryTypeName","src":"8177:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18287,"nodeType":"ArrayTypeName","src":"8177:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":18291,"mutability":"mutable","name":"permit2Batch","nameLocation":"8260:12:62","nodeType":"VariableDeclaration","scope":18410,"src":"8220:52:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_calldata_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":18290,"nodeType":"UserDefinedTypeName","pathNode":{"id":18289,"name":"IAllowanceTransfer.PermitBatch","nameLocations":["8220:18:62","8239:11:62"],"nodeType":"IdentifierPath","referencedDeclaration":45969,"src":"8220:30:62"},"referencedDeclaration":45969,"src":"8220:30:62","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"},{"constant":false,"id":18293,"mutability":"mutable","name":"permit2Signature","nameLocation":"8297:16:62","nodeType":"VariableDeclaration","scope":18410,"src":"8282:31:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":18292,"name":"bytes","nodeType":"ElementaryTypeName","src":"8282:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8120:199:62"},"returnParameters":{"id":18297,"nodeType":"ParameterList","parameters":[],"src":"8342:0:62"},"scope":18820,"src":"8099:2789:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2822],"body":{"id":18461,"nodeType":"Block","src":"11063:216:62","statements":[{"expression":{"id":18429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18422,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"11073:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":18426,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18414,"src":"11095:4:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":18427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11100:6:62","memberName":"length","nodeType":"MemberAccess","src":"11095:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11083:11:62","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":18423,"name":"bytes","nodeType":"ElementaryTypeName","src":"11087:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18424,"nodeType":"ArrayTypeName","src":"11087:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":18428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11083:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"11073:34:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":18430,"nodeType":"ExpressionStatement","src":"11073:34:62"},{"body":{"id":18457,"nodeType":"Block","src":"11159:90:62","statements":[{"expression":{"id":18455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18442,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"11173:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":18444,"indexExpression":{"id":18443,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18432,"src":"11181:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11173:10:62","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":18449,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11223:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}],"id":18448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11215:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18447,"name":"address","nodeType":"ElementaryTypeName","src":"11215:7:62","typeDescriptions":{}}},"id":18450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11215:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":18451,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18414,"src":"11230:4:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":18453,"indexExpression":{"id":18452,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18432,"src":"11235:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11230:7:62","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":18445,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"11186:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$39879_$","typeString":"type(library Address)"}},"id":18446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11194:20:62","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":39798,"src":"11186:28:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":18454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11186:52:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11173:65:62","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":18456,"nodeType":"ExpressionStatement","src":"11173:65:62"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18435,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18432,"src":"11137:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":18436,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18414,"src":"11141:4:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":18437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11146:6:62","memberName":"length","nodeType":"MemberAccess","src":"11141:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11137:15:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18458,"initializationExpression":{"assignments":[18432],"declarations":[{"constant":false,"id":18432,"mutability":"mutable","name":"i","nameLocation":"11130:1:62","nodeType":"VariableDeclaration","scope":18458,"src":"11122:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18431,"name":"uint256","nodeType":"ElementaryTypeName","src":"11122:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18434,"initialValue":{"hexValue":"30","id":18433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11134:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11122:13:62"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11154:3:62","subExpression":{"id":18439,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18432,"src":"11156:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18441,"nodeType":"ExpressionStatement","src":"11154:3:62"},"nodeType":"ForStatement","src":"11117:132:62"},{"expression":{"id":18459,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18420,"src":"11265:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"functionReturnParameters":18421,"id":18460,"nodeType":"Return","src":"11258:14:62"}]},"documentation":{"id":18411,"nodeType":"StructuredDocumentation","src":"10894:29:62","text":"@inheritdoc IRouterCommon"},"functionSelector":"ac9650d8","id":18462,"implemented":true,"kind":"function","modifiers":[{"id":18417,"kind":"modifierInvocation","modifierName":{"id":18416,"name":"saveSenderAndManageEth","nameLocations":["11007:22:62"],"nodeType":"IdentifierPath","referencedDeclaration":18160,"src":"11007:22:62"},"nodeType":"ModifierInvocation","src":"11007:22:62"}],"name":"multicall","nameLocation":"10937:9:62","nodeType":"FunctionDefinition","parameters":{"id":18415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18414,"mutability":"mutable","name":"data","nameLocation":"10973:4:62","nodeType":"VariableDeclaration","scope":18462,"src":"10956:21:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18412,"name":"bytes","nodeType":"ElementaryTypeName","src":"10956:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18413,"nodeType":"ArrayTypeName","src":"10956:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"10946:37:62"},"returnParameters":{"id":18421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18420,"mutability":"mutable","name":"results","nameLocation":"11054:7:62","nodeType":"VariableDeclaration","scope":18462,"src":"11039:22:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":18418,"name":"bytes","nodeType":"ElementaryTypeName","src":"11039:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":18419,"nodeType":"ArrayTypeName","src":"11039:7:62","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"11038:24:62"},"scope":18820,"src":"10928:351:62","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":18498,"nodeType":"Block","src":"11397:399:62","statements":[{"assignments":[18471],"declarations":[{"constant":false,"id":18471,"mutability":"mutable","name":"r","nameLocation":"11415:1:62","nodeType":"VariableDeclaration","scope":18498,"src":"11407:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18470,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11407:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":18472,"nodeType":"VariableDeclarationStatement","src":"11407:9:62"},{"assignments":[18474],"declarations":[{"constant":false,"id":18474,"mutability":"mutable","name":"s","nameLocation":"11434:1:62","nodeType":"VariableDeclaration","scope":18498,"src":"11426:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18473,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11426:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":18475,"nodeType":"VariableDeclarationStatement","src":"11426:9:62"},{"assignments":[18477],"declarations":[{"constant":false,"id":18477,"mutability":"mutable","name":"v","nameLocation":"11451:1:62","nodeType":"VariableDeclaration","scope":18498,"src":"11445:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":18476,"name":"uint8","nodeType":"ElementaryTypeName","src":"11445:5:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":18478,"nodeType":"VariableDeclarationStatement","src":"11445:7:62"},{"AST":{"nativeSrc":"11544:155:62","nodeType":"YulBlock","src":"11544:155:62","statements":[{"nativeSrc":"11558:32:62","nodeType":"YulAssignment","src":"11558:32:62","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"11573:9:62","nodeType":"YulIdentifier","src":"11573:9:62"},{"kind":"number","nativeSrc":"11584:4:62","nodeType":"YulLiteral","src":"11584:4:62","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11569:3:62","nodeType":"YulIdentifier","src":"11569:3:62"},"nativeSrc":"11569:20:62","nodeType":"YulFunctionCall","src":"11569:20:62"}],"functionName":{"name":"mload","nativeSrc":"11563:5:62","nodeType":"YulIdentifier","src":"11563:5:62"},"nativeSrc":"11563:27:62","nodeType":"YulFunctionCall","src":"11563:27:62"},"variableNames":[{"name":"r","nativeSrc":"11558:1:62","nodeType":"YulIdentifier","src":"11558:1:62"}]},{"nativeSrc":"11603:32:62","nodeType":"YulAssignment","src":"11603:32:62","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"11618:9:62","nodeType":"YulIdentifier","src":"11618:9:62"},{"kind":"number","nativeSrc":"11629:4:62","nodeType":"YulLiteral","src":"11629:4:62","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"11614:3:62","nodeType":"YulIdentifier","src":"11614:3:62"},"nativeSrc":"11614:20:62","nodeType":"YulFunctionCall","src":"11614:20:62"}],"functionName":{"name":"mload","nativeSrc":"11608:5:62","nodeType":"YulIdentifier","src":"11608:5:62"},"nativeSrc":"11608:27:62","nodeType":"YulFunctionCall","src":"11608:27:62"},"variableNames":[{"name":"s","nativeSrc":"11603:1:62","nodeType":"YulIdentifier","src":"11603:1:62"}]},{"nativeSrc":"11648:41:62","nodeType":"YulAssignment","src":"11648:41:62","value":{"arguments":[{"kind":"number","nativeSrc":"11658:1:62","nodeType":"YulLiteral","src":"11658:1:62","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"11671:9:62","nodeType":"YulIdentifier","src":"11671:9:62"},{"kind":"number","nativeSrc":"11682:4:62","nodeType":"YulLiteral","src":"11682:4:62","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"11667:3:62","nodeType":"YulIdentifier","src":"11667:3:62"},"nativeSrc":"11667:20:62","nodeType":"YulFunctionCall","src":"11667:20:62"}],"functionName":{"name":"mload","nativeSrc":"11661:5:62","nodeType":"YulIdentifier","src":"11661:5:62"},"nativeSrc":"11661:27:62","nodeType":"YulFunctionCall","src":"11661:27:62"}],"functionName":{"name":"byte","nativeSrc":"11653:4:62","nodeType":"YulIdentifier","src":"11653:4:62"},"nativeSrc":"11653:36:62","nodeType":"YulFunctionCall","src":"11653:36:62"},"variableNames":[{"name":"v","nativeSrc":"11648:1:62","nodeType":"YulIdentifier","src":"11648:1:62"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":18471,"isOffset":false,"isSlot":false,"src":"11558:1:62","valueSize":1},{"declaration":18474,"isOffset":false,"isSlot":false,"src":"11603:1:62","valueSize":1},{"declaration":18464,"isOffset":false,"isSlot":false,"src":"11573:9:62","valueSize":1},{"declaration":18464,"isOffset":false,"isSlot":false,"src":"11618:9:62","valueSize":1},{"declaration":18464,"isOffset":false,"isSlot":false,"src":"11671:9:62","valueSize":1},{"declaration":18477,"isOffset":false,"isSlot":false,"src":"11648:1:62","valueSize":1}],"flags":["memory-safe"],"id":18479,"nodeType":"InlineAssembly","src":"11519:180:62"},{"expression":{"id":18484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":18480,"name":"signatureParts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18468,"src":"11709:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts memory"}},"id":18482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11724:1:62","memberName":"r","nodeType":"MemberAccess","referencedDeclaration":18242,"src":"11709:16:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18483,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18471,"src":"11728:1:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11709:20:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":18485,"nodeType":"ExpressionStatement","src":"11709:20:62"},{"expression":{"id":18490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":18486,"name":"signatureParts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18468,"src":"11739:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts memory"}},"id":18488,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11754:1:62","memberName":"s","nodeType":"MemberAccess","referencedDeclaration":18244,"src":"11739:16:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18489,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18474,"src":"11758:1:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11739:20:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":18491,"nodeType":"ExpressionStatement","src":"11739:20:62"},{"expression":{"id":18496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":18492,"name":"signatureParts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18468,"src":"11769:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts memory"}},"id":18494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11784:1:62","memberName":"v","nodeType":"MemberAccess","referencedDeclaration":18246,"src":"11769:16:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18495,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18477,"src":"11788:1:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11769:20:62","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":18497,"nodeType":"ExpressionStatement","src":"11769:20:62"}]},"id":18499,"implemented":true,"kind":"function","modifiers":[],"name":"_getSignatureParts","nameLocation":"11294:18:62","nodeType":"FunctionDefinition","parameters":{"id":18465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18464,"mutability":"mutable","name":"signature","nameLocation":"11326:9:62","nodeType":"VariableDeclaration","scope":18499,"src":"11313:22:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":18463,"name":"bytes","nodeType":"ElementaryTypeName","src":"11313:5:62","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11312:24:62"},"returnParameters":{"id":18469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18468,"mutability":"mutable","name":"signatureParts","nameLocation":"11381:14:62","nodeType":"VariableDeclaration","scope":18499,"src":"11359:36:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_memory_ptr","typeString":"struct RouterCommon.SignatureParts"},"typeName":{"id":18467,"nodeType":"UserDefinedTypeName","pathNode":{"id":18466,"name":"SignatureParts","nameLocations":["11359:14:62"],"nodeType":"IdentifierPath","referencedDeclaration":18247,"src":"11359:14:62"},"referencedDeclaration":18247,"src":"11359:14:62","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParts_$18247_storage_ptr","typeString":"struct RouterCommon.SignatureParts"}},"visibility":"internal"}],"src":"11358:38:62"},"scope":18820,"src":"11285:511:62","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18534,"nodeType":"Block","src":"12523:539:62","statements":[{"assignments":[18506],"declarations":[{"constant":false,"id":18506,"mutability":"mutable","name":"excess","nameLocation":"12705:6:62","nodeType":"VariableDeclaration","scope":18534,"src":"12697:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18505,"name":"uint256","nodeType":"ElementaryTypeName","src":"12697:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18512,"initialValue":{"expression":{"arguments":[{"id":18509,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12722:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}],"id":18508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12714:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18507,"name":"address","nodeType":"ElementaryTypeName","src":"12714:7:62","typeDescriptions":{}}},"id":18510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12714:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12728:7:62","memberName":"balance","nodeType":"MemberAccess","src":"12714:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12697:38:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18513,"name":"excess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"12749:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":18514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12749:11:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18518,"nodeType":"IfStatement","src":"12745:48:62","trueBody":{"id":18517,"nodeType":"Block","src":"12762:31:62","statements":[{"functionReturnParameters":18504,"id":18516,"nodeType":"Return","src":"12776:7:62"}]}},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18519,"name":"_isReturnEthLockedSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18819,"src":"12947:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":18520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12947:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":18521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12972:5:62","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"12947:30:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlotType_$9734_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType) view returns (bool)"}},"id":18522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12947:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18525,"nodeType":"IfStatement","src":"12943:69:62","trueBody":{"id":18524,"nodeType":"Block","src":"12981:31:62","statements":[{"functionReturnParameters":18504,"id":18523,"nodeType":"Return","src":"12995:7:62"}]}},{"expression":{"arguments":[{"id":18531,"name":"excess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18506,"src":"13048:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18528,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18502,"src":"13030:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13022:8:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":18526,"name":"address","nodeType":"ElementaryTypeName","src":"13022:8:62","stateMutability":"payable","typeDescriptions":{}}},"id":18529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13022:15:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":18530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13038:9:62","memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":39683,"src":"13022:25:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":18532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13022:33:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18533,"nodeType":"ExpressionStatement","src":"13022:33:62"}]},"documentation":{"id":18500,"nodeType":"StructuredDocumentation","src":"11802:671:62","text":" @dev Returns excess ETH back to the contract caller. Checks for sufficient ETH balance are made right before\n each deposit, ensuring it will revert with a friendly custom error. If there is any balance remaining when\n `_returnEth` is called, return it to the sender.\n Because the caller might not know exactly how much ETH a Vault action will require, they may send extra.\n Note that this excess value is returned *to the contract caller* (msg.sender). If caller and e.g. swap sender\n are not the same (because the caller is a relayer for the sender), then it is up to the caller to manage this\n returned ETH."},"id":18535,"implemented":true,"kind":"function","modifiers":[],"name":"_returnEth","nameLocation":"12487:10:62","nodeType":"FunctionDefinition","parameters":{"id":18503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18502,"mutability":"mutable","name":"sender","nameLocation":"12506:6:62","nodeType":"VariableDeclaration","scope":18535,"src":"12498:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18501,"name":"address","nodeType":"ElementaryTypeName","src":"12498:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12497:16:62"},"returnParameters":{"id":18504,"nodeType":"ParameterList","parameters":[],"src":"12523:0:62"},"scope":18820,"src":"12478:584:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18578,"nodeType":"Block","src":"13538:219:62","statements":[{"assignments":[18552],"declarations":[{"constant":false,"id":18552,"mutability":"mutable","name":"numTokens","nameLocation":"13556:9:62","nodeType":"VariableDeclaration","scope":18578,"src":"13548:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18551,"name":"uint256","nodeType":"ElementaryTypeName","src":"13548:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18553,"nodeType":"VariableDeclarationStatement","src":"13548:17:62"},{"expression":{"id":18562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":18554,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18552,"src":"13576:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18555,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18549,"src":"13587:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18556,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13575:23:62","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18559,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18538,"src":"13641:4:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18560,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18541,"src":"13647:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"expression":{"id":18557,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"13601:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13608:32:62","memberName":"getPoolTokenCountAndIndexOfToken","nodeType":"MemberAccess","referencedDeclaration":4298,"src":"13601:39:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_contract$_IERC20_$39274_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,contract IERC20) view external returns (uint256,uint256)"}},"id":18561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13601:52:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13575:78:62","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18563,"nodeType":"ExpressionStatement","src":"13575:78:62"},{"expression":{"id":18570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18564,"name":"amountsGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18547,"src":"13663:12:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18568,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18552,"src":"13692:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13678:13:62","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":18565,"name":"uint256","nodeType":"ElementaryTypeName","src":"13682:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18566,"nodeType":"ArrayTypeName","src":"13682:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":18569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13678:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13663:39:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18571,"nodeType":"ExpressionStatement","src":"13663:39:62"},{"expression":{"id":18576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18572,"name":"amountsGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18547,"src":"13712:12:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18574,"indexExpression":{"id":18573,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18549,"src":"13725:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13712:24:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18575,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18543,"src":"13739:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13712:38:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18577,"nodeType":"ExpressionStatement","src":"13712:38:62"}]},"documentation":{"id":18536,"nodeType":"StructuredDocumentation","src":"13068:269:62","text":" @dev Returns an array with `amountGiven` at `tokenIndex`, and 0 for every other index.\n The returned array length matches the number of tokens in the pool.\n Reverts if the given index is greater than or equal to the pool number of tokens."},"id":18579,"implemented":true,"kind":"function","modifiers":[],"name":"_getSingleInputArrayAndTokenIndex","nameLocation":"13351:33:62","nodeType":"FunctionDefinition","parameters":{"id":18544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18538,"mutability":"mutable","name":"pool","nameLocation":"13402:4:62","nodeType":"VariableDeclaration","scope":18579,"src":"13394:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18537,"name":"address","nodeType":"ElementaryTypeName","src":"13394:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18541,"mutability":"mutable","name":"token","nameLocation":"13423:5:62","nodeType":"VariableDeclaration","scope":18579,"src":"13416:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":18540,"nodeType":"UserDefinedTypeName","pathNode":{"id":18539,"name":"IERC20","nameLocations":["13416:6:62"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"13416:6:62"},"referencedDeclaration":39274,"src":"13416:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":18543,"mutability":"mutable","name":"amountGiven","nameLocation":"13446:11:62","nodeType":"VariableDeclaration","scope":18579,"src":"13438:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18542,"name":"uint256","nodeType":"ElementaryTypeName","src":"13438:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13384:79:62"},"returnParameters":{"id":18550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18547,"mutability":"mutable","name":"amountsGiven","nameLocation":"13504:12:62","nodeType":"VariableDeclaration","scope":18579,"src":"13487:29:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18545,"name":"uint256","nodeType":"ElementaryTypeName","src":"13487:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18546,"nodeType":"ArrayTypeName","src":"13487:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":18549,"mutability":"mutable","name":"tokenIndex","nameLocation":"13526:10:62","nodeType":"VariableDeclaration","scope":18579,"src":"13518:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18548,"name":"uint256","nodeType":"ElementaryTypeName","src":"13518:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13486:51:62"},"scope":18820,"src":"13342:415:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":18664,"nodeType":"Block","src":"13860:775:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18591,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18588,"src":"13940:9:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":18594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18592,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18584,"src":"13953:7:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18593,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"13964:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"src":"13953:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13940:29:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18662,"nodeType":"Block","src":"14361:268:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18633,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"14379:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":18634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14390:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14379:12:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18661,"nodeType":"IfStatement","src":"14375:244:62","trueBody":{"id":18660,"nodeType":"Block","src":"14393:226:62","statements":[{"expression":{"arguments":[{"id":18639,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18581,"src":"14490:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":18642,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14506:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":18641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14498:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18640,"name":"address","nodeType":"ElementaryTypeName","src":"14498:7:62","typeDescriptions":{}}},"id":18643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14498:15:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18644,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"14515:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14524:9:62","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":42734,"src":"14515:18:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":18646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14515:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":18649,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18584,"src":"14545:7:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":18648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14537:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18647,"name":"address","nodeType":"ElementaryTypeName","src":"14537:7:62","typeDescriptions":{}}},"id":18650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14537:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18636,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"14468:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":18638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14477:12:62","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46055,"src":"14468:21:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address) external"}},"id":18651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14468:86:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18652,"nodeType":"ExpressionStatement","src":"14468:86:62"},{"expression":{"arguments":[{"id":18656,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18584,"src":"14586:7:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":18657,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"14595:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18653,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14572:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14579:6:62","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"14572:13:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":18658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14572:32:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18659,"nodeType":"ExpressionStatement","src":"14572:32:62"}]}}]},"id":18663,"nodeType":"IfStatement","src":"13936:693:62","trueBody":{"id":18632,"nodeType":"Block","src":"13971:384:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":18598,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13997:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}],"id":18597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18596,"name":"address","nodeType":"ElementaryTypeName","src":"13989:7:62","typeDescriptions":{}}},"id":18599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":18600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14003:7:62","memberName":"balance","nodeType":"MemberAccess","src":"13989:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18601,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"14013:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13989:32:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18607,"nodeType":"IfStatement","src":"13985:95:62","trueBody":{"id":18606,"nodeType":"Block","src":"14023:57:62","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":18603,"name":"InsufficientEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18079,"src":"14048:15:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14048:17:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":18605,"nodeType":"RevertStatement","src":"14041:24:62"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":[],"expression":{"id":18608,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"14132:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":18610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14138:7:62","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":171,"src":"14132:13:62","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":18612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":18611,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"14154:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"14132:32:62","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":18613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14132:34:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18614,"nodeType":"ExpressionStatement","src":"14132:34:62"},{"expression":{"arguments":[{"arguments":[{"id":18620,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14242:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":18619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14234:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18618,"name":"address","nodeType":"ElementaryTypeName","src":"14234:7:62","typeDescriptions":{}}},"id":18621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14234:15:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18622,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"14251:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18615,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"14215:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":18617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14221:12:62","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":39386,"src":"14215:18:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":18623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14215:45:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18624,"nodeType":"ExpressionStatement","src":"14215:45:62"},{"expression":{"arguments":[{"id":18628,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"14328:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":18629,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18586,"src":"14335:8:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18625,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14314:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14321:6:62","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"14314:13:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":18630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14314:30:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18631,"nodeType":"ExpressionStatement","src":"14314:30:62"}]}}]},"id":18665,"implemented":true,"kind":"function","modifiers":[],"name":"_takeTokenIn","nameLocation":"13772:12:62","nodeType":"FunctionDefinition","parameters":{"id":18589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18581,"mutability":"mutable","name":"sender","nameLocation":"13793:6:62","nodeType":"VariableDeclaration","scope":18665,"src":"13785:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18580,"name":"address","nodeType":"ElementaryTypeName","src":"13785:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18584,"mutability":"mutable","name":"tokenIn","nameLocation":"13808:7:62","nodeType":"VariableDeclaration","scope":18665,"src":"13801:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":18583,"nodeType":"UserDefinedTypeName","pathNode":{"id":18582,"name":"IERC20","nameLocations":["13801:6:62"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"13801:6:62"},"referencedDeclaration":39274,"src":"13801:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":18586,"mutability":"mutable","name":"amountIn","nameLocation":"13825:8:62","nodeType":"VariableDeclaration","scope":18665,"src":"13817:16:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18585,"name":"uint256","nodeType":"ElementaryTypeName","src":"13817:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18588,"mutability":"mutable","name":"wethIsEth","nameLocation":"13840:9:62","nodeType":"VariableDeclaration","scope":18665,"src":"13835:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18587,"name":"bool","nodeType":"ElementaryTypeName","src":"13835:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13784:66:62"},"returnParameters":{"id":18590,"nodeType":"ParameterList","parameters":[],"src":"13860:0:62"},"scope":18820,"src":"13763:872:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18724,"nodeType":"Block","src":"14741:580:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18677,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18672,"src":"14755:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":18678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14768:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14755:14:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18682,"nodeType":"IfStatement","src":"14751:51:62","trueBody":{"id":18681,"nodeType":"Block","src":"14771:31:62","statements":[{"functionReturnParameters":18676,"id":18680,"nodeType":"Return","src":"14785:7:62"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18683,"name":"wethIsEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18674,"src":"14885:9:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":18686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18684,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18670,"src":"14898:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18685,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"14910:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"src":"14898:17:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14885:30:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":18722,"nodeType":"Block","src":"15201:114:62","statements":[{"expression":{"arguments":[{"id":18717,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18670,"src":"15276:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":18718,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18667,"src":"15286:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18719,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18672,"src":"15294:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18714,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"15262:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15269:6:62","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"15262:13:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":18720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15262:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18721,"nodeType":"ExpressionStatement","src":"15262:42:62"}]},"id":18723,"nodeType":"IfStatement","src":"14881:434:62","trueBody":{"id":18713,"nodeType":"Block","src":"14917:278:62","statements":[{"expression":{"arguments":[{"id":18691,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18670,"src":"14988:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":18694,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15006:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterCommon_$18820","typeString":"contract RouterCommon"}],"id":18693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14998:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18692,"name":"address","nodeType":"ElementaryTypeName","src":"14998:7:62","typeDescriptions":{}}},"id":18695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14998:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18696,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18672,"src":"15013:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18688,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"14974:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14981:6:62","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"14974:13:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":18697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14974:49:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18698,"nodeType":"ExpressionStatement","src":"14974:49:62"},{"expression":{"arguments":[{"id":18702,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18672,"src":"15089:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18699,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"15074:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"id":18701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15080:8:62","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":177,"src":"15074:14:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":18703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15074:25:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18704,"nodeType":"ExpressionStatement","src":"15074:25:62"},{"expression":{"arguments":[{"id":18710,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18672,"src":"15174:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":18707,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18667,"src":"15156:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15148:8:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":18705,"name":"address","nodeType":"ElementaryTypeName","src":"15148:8:62","stateMutability":"payable","typeDescriptions":{}}},"id":18708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15148:15:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":18709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15164:9:62","memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":39683,"src":"15148:25:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":18711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15148:36:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18712,"nodeType":"ExpressionStatement","src":"15148:36:62"}]}}]},"id":18725,"implemented":true,"kind":"function","modifiers":[],"name":"_sendTokenOut","nameLocation":"14650:13:62","nodeType":"FunctionDefinition","parameters":{"id":18675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18667,"mutability":"mutable","name":"sender","nameLocation":"14672:6:62","nodeType":"VariableDeclaration","scope":18725,"src":"14664:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18666,"name":"address","nodeType":"ElementaryTypeName","src":"14664:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18670,"mutability":"mutable","name":"tokenOut","nameLocation":"14687:8:62","nodeType":"VariableDeclaration","scope":18725,"src":"14680:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":18669,"nodeType":"UserDefinedTypeName","pathNode":{"id":18668,"name":"IERC20","nameLocations":["14680:6:62"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14680:6:62"},"referencedDeclaration":39274,"src":"14680:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":18672,"mutability":"mutable","name":"amountOut","nameLocation":"14705:9:62","nodeType":"VariableDeclaration","scope":18725,"src":"14697:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18671,"name":"uint256","nodeType":"ElementaryTypeName","src":"14697:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18674,"mutability":"mutable","name":"wethIsEth","nameLocation":"14721:9:62","nodeType":"VariableDeclaration","scope":18725,"src":"14716:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18673,"name":"bool","nodeType":"ElementaryTypeName","src":"14716:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14663:68:62"},"returnParameters":{"id":18676,"nodeType":"ParameterList","parameters":[],"src":"14741:0:62"},"scope":18820,"src":"14641:680:62","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18767,"nodeType":"Block","src":"15417:216:62","statements":[{"assignments":[18734],"declarations":[{"constant":false,"id":18734,"mutability":"mutable","name":"numTokens","nameLocation":"15435:9:62","nodeType":"VariableDeclaration","scope":18767,"src":"15427:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18733,"name":"uint256","nodeType":"ElementaryTypeName","src":"15427:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18740,"initialValue":{"expression":{"arguments":[{"id":18737,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18727,"src":"15468:4:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18735,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"15447:6:62","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15454:13:62","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"15447:20:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":18738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15447:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":18739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15474:6:62","memberName":"length","nodeType":"MemberAccess","src":"15447:33:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15427:53:62"},{"expression":{"id":18747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18741,"name":"maxLimits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18731,"src":"15490:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":18745,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18734,"src":"15516:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15502:13:62","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":18742,"name":"uint256","nodeType":"ElementaryTypeName","src":"15506:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18743,"nodeType":"ArrayTypeName","src":"15506:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":18746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15502:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"15490:36:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18748,"nodeType":"ExpressionStatement","src":"15490:36:62"},{"body":{"id":18765,"nodeType":"Block","src":"15576:51:62","statements":[{"expression":{"id":18763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":18759,"name":"maxLimits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18731,"src":"15590:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":18761,"indexExpression":{"id":18760,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18750,"src":"15600:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15590:12:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18762,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"15605:11:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15590:26:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18764,"nodeType":"ExpressionStatement","src":"15590:26:62"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18750,"src":"15556:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":18754,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18734,"src":"15560:9:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15556:13:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18766,"initializationExpression":{"assignments":[18750],"declarations":[{"constant":false,"id":18750,"mutability":"mutable","name":"i","nameLocation":"15549:1:62","nodeType":"VariableDeclaration","scope":18766,"src":"15541:9:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18749,"name":"uint256","nodeType":"ElementaryTypeName","src":"15541:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18752,"initialValue":{"hexValue":"30","id":18751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15553:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15541:13:62"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":18757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15571:3:62","subExpression":{"id":18756,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18750,"src":"15573:1:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18758,"nodeType":"ExpressionStatement","src":"15571:3:62"},"nodeType":"ForStatement","src":"15536:91:62"}]},"id":18768,"implemented":true,"kind":"function","modifiers":[],"name":"_maxTokenLimits","nameLocation":"15336:15:62","nodeType":"FunctionDefinition","parameters":{"id":18728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18727,"mutability":"mutable","name":"pool","nameLocation":"15360:4:62","nodeType":"VariableDeclaration","scope":18768,"src":"15352:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18726,"name":"address","nodeType":"ElementaryTypeName","src":"15352:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15351:14:62"},"returnParameters":{"id":18732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18731,"mutability":"mutable","name":"maxLimits","nameLocation":"15406:9:62","nodeType":"VariableDeclaration","scope":18768,"src":"15389:26:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":18729,"name":"uint256","nodeType":"ElementaryTypeName","src":"15389:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18730,"nodeType":"ArrayTypeName","src":"15389:9:62","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"15388:28:62"},"scope":18820,"src":"15327:306:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":18784,"nodeType":"Block","src":"16331:95:62","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":18772,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16345:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":18773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16349:6:62","memberName":"sender","nodeType":"MemberAccess","src":"16345:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":18776,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18092,"src":"16367:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}],"id":18775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16359:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18774,"name":"address","nodeType":"ElementaryTypeName","src":"16359:7:62","typeDescriptions":{}}},"id":18777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16359:14:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16345:28:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18783,"nodeType":"IfStatement","src":"16341:79:62","trueBody":{"id":18782,"nodeType":"Block","src":"16375:45:62","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":18779,"name":"EthTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18076,"src":"16396:11:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16396:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":18781,"nodeType":"RevertStatement","src":"16389:20:62"}]}}]},"documentation":{"id":18769,"nodeType":"StructuredDocumentation","src":"15639:660:62","text":" @dev Enables the Router to receive ETH. This is required for it to be able to unwrap WETH, which sends ETH to the\n caller.\n Any ETH sent to the Router outside of the WETH unwrapping mechanism would be forever locked inside the Router, so\n we prevent that from happening. Other mechanisms used to send ETH to the Router (such as being the recipient of\n an ETH swap, Pool exit or withdrawal, contract self-destruction, or receiving the block mining reward) will\n result in locked funds, but are not otherwise a security or soundness issue. This check only exists as an attempt\n to prevent user error."},"id":18785,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":18770,"nodeType":"ParameterList","parameters":[],"src":"16311:2:62"},"returnParameters":{"id":18771,"nodeType":"ParameterList","parameters":[],"src":"16331:0:62"},"scope":18820,"src":"16304:122:62","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2777],"body":{"id":18796,"nodeType":"Block","src":"16519:48:62","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18791,"name":"_getSenderSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18808,"src":"16536:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function () view returns (StorageSlotExtension.AddressSlotType)"}},"id":18792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16536:16:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"id":18793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16553:5:62","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9811,"src":"16536:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_AddressSlotType_$9717_$returns$_t_address_$attached_to$_t_userDefinedValueType$_AddressSlotType_$9717_$","typeString":"function (StorageSlotExtension.AddressSlotType) view returns (address)"}},"id":18794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16536:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":18790,"id":18795,"nodeType":"Return","src":"16529:31:62"}]},"documentation":{"id":18786,"nodeType":"StructuredDocumentation","src":"16432:29:62","text":"@inheritdoc IRouterCommon"},"functionSelector":"5e01eb5a","id":18797,"implemented":true,"kind":"function","modifiers":[],"name":"getSender","nameLocation":"16475:9:62","nodeType":"FunctionDefinition","parameters":{"id":18787,"nodeType":"ParameterList","parameters":[],"src":"16484:2:62"},"returnParameters":{"id":18790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18797,"src":"16510:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18788,"name":"address","nodeType":"ElementaryTypeName","src":"16510:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16509:9:62"},"scope":18820,"src":"16466:101:62","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18807,"nodeType":"Block","src":"16660:48:62","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18803,"name":"_SENDER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18063,"src":"16677:12:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":18804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16690:9:62","memberName":"asAddress","nodeType":"MemberAccess","referencedDeclaration":9732,"src":"16677:22:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_AddressSlotType_$9717_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.AddressSlotType)"}},"id":18805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16677:24:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"functionReturnParameters":18802,"id":18806,"nodeType":"Return","src":"16670:31:62"}]},"id":18808,"implemented":true,"kind":"function","modifiers":[],"name":"_getSenderSlot","nameLocation":"16582:14:62","nodeType":"FunctionDefinition","parameters":{"id":18798,"nodeType":"ParameterList","parameters":[],"src":"16596:2:62"},"returnParameters":{"id":18802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18801,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18808,"src":"16622:36:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"},"typeName":{"id":18800,"nodeType":"UserDefinedTypeName","pathNode":{"id":18799,"name":"StorageSlotExtension.AddressSlotType","nameLocations":["16622:20:62","16643:15:62"],"nodeType":"IdentifierPath","referencedDeclaration":9717,"src":"16622:36:62"},"referencedDeclaration":9717,"src":"16622:36:62","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressSlotType_$9717","typeString":"StorageSlotExtension.AddressSlotType"}},"visibility":"internal"}],"src":"16621:38:62"},"scope":18820,"src":"16573:135:62","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":18818,"nodeType":"Block","src":"16809:62:62","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18814,"name":"_IS_RETURN_ETH_LOCKED_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18073,"src":"16826:26:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":18815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16853:9:62","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":9749,"src":"16826:36:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":18816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16826:38:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"functionReturnParameters":18813,"id":18817,"nodeType":"Return","src":"16819:45:62"}]},"id":18819,"implemented":true,"kind":"function","modifiers":[],"name":"_isReturnEthLockedSlot","nameLocation":"16723:22:62","nodeType":"FunctionDefinition","parameters":{"id":18809,"nodeType":"ParameterList","parameters":[],"src":"16745:2:62"},"returnParameters":{"id":18813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18819,"src":"16771:36:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"},"typeName":{"id":18811,"nodeType":"UserDefinedTypeName","pathNode":{"id":18810,"name":"StorageSlotExtension.BooleanSlotType","nameLocations":["16771:20:62","16792:15:62"],"nodeType":"IdentifierPath","referencedDeclaration":9734,"src":"16771:36:62"},"referencedDeclaration":9734,"src":"16771:36:62","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"visibility":"internal"}],"src":"16770:38:62"},"scope":18820,"src":"16714:157:62","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":18821,"src":"1985:14888:62","usedErrors":[5586,5981,9512,18076,18079,18082,39634,39639,39642],"usedEvents":[]}],"src":"46:16828:62"},"id":62},"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol","exportedSymbols":{"Authentication":[5327],"IAuthorizer":[1316],"IVault":[2893],"SingletonAuthentication":[18926]},"id":18927,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18822,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:63"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","id":18824,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18927,"sourceUnit":1317,"src":"72:91:63","symbolAliases":[{"foreign":{"id":18823,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"81:11:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":18826,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18927,"sourceUnit":2894,"src":"164:81:63","symbolAliases":[{"foreign":{"id":18825,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"173:6:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol","id":18828,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18927,"sourceUnit":5328,"src":"247:103:63","symbolAliases":[{"foreign":{"id":18827,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5327,"src":"256:14:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":18830,"name":"Authentication","nameLocations":["772:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":5327,"src":"772:14:63"},"id":18831,"nodeType":"InheritanceSpecifier","src":"772:14:63"}],"canonicalName":"SingletonAuthentication","contractDependencies":[],"contractKind":"contract","documentation":{"id":18829,"nodeType":"StructuredDocumentation","src":"352:374:63","text":" @notice Base contract suitable for Singleton contracts (e.g., pool factories) that have permissioned functions.\n @dev The disambiguator is the contract's own address. This is used in the construction of actionIds for permissioned\n functions, to avoid conflicts when multiple contracts (or multiple versions of the same contract) use the same\n function name."},"fullyImplemented":true,"id":18926,"linearizedBaseContracts":[18926,5327,130],"name":"SingletonAuthentication","nameLocation":"745:23:63","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":18834,"mutability":"immutable","name":"_vault","nameLocation":"818:6:63","nodeType":"VariableDeclaration","scope":18926,"src":"793:31:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":18833,"nodeType":"UserDefinedTypeName","pathNode":{"id":18832,"name":"IVault","nameLocations":["793:6:63"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"793:6:63"},"referencedDeclaration":2893,"src":"793:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":18859,"nodeType":"Block","src":"988:31:63","statements":[{"expression":{"id":18857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18855,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18834,"src":"998:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18856,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18837,"src":"1007:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"src":"998:14:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18858,"nodeType":"ExpressionStatement","src":"998:14:63"}]},"id":18860,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":18848,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"978:4:63","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$18926","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$18926","typeString":"contract SingletonAuthentication"}],"id":18847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"970:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18846,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:63","typeDescriptions":{}}},"id":18849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"970:13:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"962:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":18844,"name":"uint160","nodeType":"ElementaryTypeName","src":"962:7:63","typeDescriptions":{}}},"id":18850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"962:22:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":18843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"954:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18842,"name":"uint256","nodeType":"ElementaryTypeName","src":"954:7:63","typeDescriptions":{}}},"id":18851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"954:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"946:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":18840,"name":"bytes32","nodeType":"ElementaryTypeName","src":"946:7:63","typeDescriptions":{}}},"id":18852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"946:40:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":18853,"kind":"baseConstructorSpecifier","modifierName":{"id":18839,"name":"Authentication","nameLocations":["931:14:63"],"nodeType":"IdentifierPath","referencedDeclaration":5327,"src":"931:14:63"},"nodeType":"ModifierInvocation","src":"931:56:63"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":18838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18837,"mutability":"mutable","name":"vault","nameLocation":"924:5:63","nodeType":"VariableDeclaration","scope":18860,"src":"917:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":18836,"nodeType":"UserDefinedTypeName","pathNode":{"id":18835,"name":"IVault","nameLocations":["917:6:63"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"917:6:63"},"referencedDeclaration":2893,"src":"917:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"916:14:63"},"returnParameters":{"id":18854,"nodeType":"ParameterList","parameters":[],"src":"988:0:63"},"scope":18926,"src":"905:114:63","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18869,"nodeType":"Block","src":"1199:30:63","statements":[{"expression":{"id":18867,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18834,"src":"1216:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"functionReturnParameters":18866,"id":18868,"nodeType":"Return","src":"1209:13:63"}]},"documentation":{"id":18861,"nodeType":"StructuredDocumentation","src":"1025:120:63","text":" @notice Get the address of the Balancer Vault.\n @return vault An interface pointer to the Vault"},"functionSelector":"8d928af8","id":18870,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nameLocation":"1159:8:63","nodeType":"FunctionDefinition","parameters":{"id":18862,"nodeType":"ParameterList","parameters":[],"src":"1167:2:63"},"returnParameters":{"id":18866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18870,"src":"1191:6:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":18864,"nodeType":"UserDefinedTypeName","pathNode":{"id":18863,"name":"IVault","nameLocations":["1191:6:63"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1191:6:63"},"referencedDeclaration":2893,"src":"1191:6:63","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1190:8:63"},"scope":18926,"src":"1150:79:63","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":18882,"nodeType":"Block","src":"1425:50:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18877,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18870,"src":"1442:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view returns (contract IVault)"}},"id":18878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1442:10:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":18879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1453:13:63","memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":4207,"src":"1442:24:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$1316_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":18880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1442:26:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"functionReturnParameters":18876,"id":18881,"nodeType":"Return","src":"1435:33:63"}]},"documentation":{"id":18871,"nodeType":"StructuredDocumentation","src":"1235:126:63","text":" @notice Get the address of the Authorizer.\n @return authorizer An interface pointer to the Authorizer"},"functionSelector":"aaabadc5","id":18883,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nameLocation":"1375:13:63","nodeType":"FunctionDefinition","parameters":{"id":18872,"nodeType":"ParameterList","parameters":[],"src":"1388:2:63"},"returnParameters":{"id":18876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18883,"src":"1412:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":18874,"nodeType":"UserDefinedTypeName","pathNode":{"id":18873,"name":"IAuthorizer","nameLocations":["1412:11:63"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"1412:11:63"},"referencedDeclaration":1316,"src":"1412:11:63","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1411:13:63"},"scope":18926,"src":"1366:109:63","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[5326],"body":{"id":18904,"nodeType":"Block","src":"1575:84:63","statements":[{"expression":{"arguments":[{"id":18896,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18885,"src":"1619:8:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":18897,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18887,"src":"1629:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":18900,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1646:4:63","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$18926","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$18926","typeString":"contract SingletonAuthentication"}],"id":18899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1638:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18898,"name":"address","nodeType":"ElementaryTypeName","src":"1638:7:63","typeDescriptions":{}}},"id":18901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1638:13:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18893,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18883,"src":"1592:13:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$1316_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":18894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1592:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":18895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1608:10:63","memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":1315,"src":"1592:26:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":18902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1592:60:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18892,"id":18903,"nodeType":"Return","src":"1585:67:63"}]},"id":18905,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nameLocation":"1490:11:63","nodeType":"FunctionDefinition","overrides":{"id":18889,"nodeType":"OverrideSpecifier","overrides":[],"src":"1551:8:63"},"parameters":{"id":18888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18885,"mutability":"mutable","name":"actionId","nameLocation":"1510:8:63","nodeType":"VariableDeclaration","scope":18905,"src":"1502:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18884,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1502:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":18887,"mutability":"mutable","name":"account","nameLocation":"1528:7:63","nodeType":"VariableDeclaration","scope":18905,"src":"1520:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18886,"name":"address","nodeType":"ElementaryTypeName","src":"1520:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1501:35:63"},"returnParameters":{"id":18892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18905,"src":"1569:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18890,"name":"bool","nodeType":"ElementaryTypeName","src":"1569:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1568:6:63"},"scope":18926,"src":"1481:178:63","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":18924,"nodeType":"Block","src":"1765:76:63","statements":[{"expression":{"arguments":[{"id":18919,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18907,"src":"1809:8:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":18920,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18909,"src":"1819:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18921,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18911,"src":"1828:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18916,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18883,"src":"1782:13:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$1316_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":18917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1782:15:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":18918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1798:10:63","memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":1315,"src":"1782:26:63","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":18922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1782:52:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":18915,"id":18923,"nodeType":"Return","src":"1775:59:63"}]},"id":18925,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nameLocation":"1674:11:63","nodeType":"FunctionDefinition","parameters":{"id":18912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18907,"mutability":"mutable","name":"actionId","nameLocation":"1694:8:63","nodeType":"VariableDeclaration","scope":18925,"src":"1686:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18906,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1686:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":18909,"mutability":"mutable","name":"account","nameLocation":"1712:7:63","nodeType":"VariableDeclaration","scope":18925,"src":"1704:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18908,"name":"address","nodeType":"ElementaryTypeName","src":"1704:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18911,"mutability":"mutable","name":"where","nameLocation":"1729:5:63","nodeType":"VariableDeclaration","scope":18925,"src":"1721:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18910,"name":"address","nodeType":"ElementaryTypeName","src":"1721:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1685:50:63"},"returnParameters":{"id":18915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18925,"src":"1759:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18913,"name":"bool","nodeType":"ElementaryTypeName","src":"1759:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1758:6:63"},"scope":18926,"src":"1665:176:63","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":18927,"src":"727:1116:63","usedErrors":[121],"usedEvents":[]}],"src":"46:1798:63"},"id":63},"@balancer-labs/v3-vault/contracts/Vault.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/Vault.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"Address":[39879],"AfterSwapParams":[4583],"BasePoolMath":[11709],"BufferHelpers":[5439],"BufferWrapOrUnwrapParams":[4644],"CastingHelpers":[5471],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"FixedPoint":[7834],"HookFlags":[4409],"HooksConfig":[4433],"HooksConfigLib":[29013],"IAuthorizer":[1316],"IBasePool":[1366],"IERC20":[39274],"IERC4626":[38998],"IHooks":[1887],"IPoolLiquidity":[1943],"IProtocolFeeController":[2230],"IRateProvider":[150],"IVaultAdmin":[3183],"IVaultExtension":[4208],"IVaultMain":[4344],"InputHelpers":[5819],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PackedTokenBalance":[5970],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolConfigLib":[29980],"PoolData":[4511],"PoolDataLib":[30570],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"Proxy":[39196],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SafeCast":[44126],"SafeERC20":[39626],"ScalingHelpers":[6474],"StorageSlotExtension":[9911],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"TransientStorageHelpers":[7068],"Vault":[22336],"VaultCommon":[25145],"VaultState":[4451],"VaultStateBits":[30607],"VaultStateLib":[30748],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":22337,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":18928,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:64"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":18930,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":39627,"src":"72:84:64","symbolAliases":[{"foreign":{"id":18929,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39626,"src":"81:9:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":18932,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":44127,"src":"157:75:64","symbolAliases":[{"foreign":{"id":18931,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"166:8:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":18934,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":38999,"src":"233:75:64","symbolAliases":[{"foreign":{"id":18933,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"242:8:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":18936,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":39275,"src":"309:72:64","symbolAliases":[{"foreign":{"id":18935,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"318:6:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":18938,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":39880,"src":"382:68:64","symbolAliases":[{"foreign":{"id":18937,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"391:7:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","id":18940,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":39197,"src":"451:64:64","symbolAliases":[{"foreign":{"id":18939,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39196,"src":"460:5:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","id":18942,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":2231,"src":"517:113:64","symbolAliases":[{"foreign":{"id":18941,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"526:22:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","id":18944,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":4209,"src":"631:99:64","symbolAliases":[{"foreign":{"id":18943,"name":"IVaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"640:15:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol","id":18946,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":1944,"src":"731:97:64","symbolAliases":[{"foreign":{"id":18945,"name":"IPoolLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"740:14:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","id":18948,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":1317,"src":"829:91:64","symbolAliases":[{"foreign":{"id":18947,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"838:11:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","id":18950,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":3184,"src":"921:91:64","symbolAliases":[{"foreign":{"id":18949,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"930:11:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol","id":18952,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":4345,"src":"1013:89:64","symbolAliases":[{"foreign":{"id":18951,"name":"IVaultMain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4344,"src":"1022:10:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","id":18954,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":1367,"src":"1103:87:64","symbolAliases":[{"foreign":{"id":18953,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"1112:9:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","id":18956,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":1888,"src":"1191:81:64","symbolAliases":[{"foreign":{"id":18955,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"1200:6:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":18957,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":4654,"src":"1273:69:64","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","id":18959,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":9912,"src":"1344:120:64","symbolAliases":[{"foreign":{"id":18958,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"1353:20:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","id":18961,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":5971,"src":"1465:111:64","symbolAliases":[{"foreign":{"id":18960,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"1474:18:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","id":18963,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":6475,"src":"1577:103:64","symbolAliases":[{"foreign":{"id":18962,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"1586:14:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","id":18965,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":5472,"src":"1681:103:64","symbolAliases":[{"foreign":{"id":18964,"name":"CastingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5471,"src":"1690:14:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol","id":18967,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":5440,"src":"1785:101:64","symbolAliases":[{"foreign":{"id":18966,"name":"BufferHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"1794:13:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","id":18969,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":5820,"src":"1887:99:64","symbolAliases":[{"foreign":{"id":18968,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"1896:12:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":18971,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":7835,"src":"1987:92:64","symbolAliases":[{"foreign":{"id":18970,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"1996:10:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":18973,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":7069,"src":"2080:125:64","symbolAliases":[{"foreign":{"id":18972,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"2093:23:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol","file":"./lib/VaultStateLib.sol","id":18976,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":30749,"src":"2207:72:64","symbolAliases":[{"foreign":{"id":18974,"name":"VaultStateLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30748,"src":"2216:13:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":18975,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"2231:14:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol","file":"./lib/HooksConfigLib.sol","id":18978,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":29014,"src":"2280:58:64","symbolAliases":[{"foreign":{"id":18977,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"2289:14:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"./lib/PoolConfigLib.sol","id":18980,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":29981,"src":"2339:56:64","symbolAliases":[{"foreign":{"id":18979,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"2348:13:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol","file":"./lib/PoolDataLib.sol","id":18982,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":30571,"src":"2396:52:64","symbolAliases":[{"foreign":{"id":18981,"name":"PoolDataLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30570,"src":"2405:11:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BasePoolMath.sol","file":"./BasePoolMath.sol","id":18984,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":11710,"src":"2449:50:64","symbolAliases":[{"foreign":{"id":18983,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"2458:12:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultCommon.sol","file":"./VaultCommon.sol","id":18986,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22337,"sourceUnit":25146,"src":"2500:48:64","symbolAliases":[{"foreign":{"id":18985,"name":"VaultCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25145,"src":"2509:11:64","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18987,"name":"IVaultMain","nameLocations":["2568:10:64"],"nodeType":"IdentifierPath","referencedDeclaration":4344,"src":"2568:10:64"},"id":18988,"nodeType":"InheritanceSpecifier","src":"2568:10:64"},{"baseName":{"id":18989,"name":"VaultCommon","nameLocations":["2580:11:64"],"nodeType":"IdentifierPath","referencedDeclaration":25145,"src":"2580:11:64"},"id":18990,"nodeType":"InheritanceSpecifier","src":"2580:11:64"},{"baseName":{"id":18991,"name":"Proxy","nameLocations":["2593:5:64"],"nodeType":"IdentifierPath","referencedDeclaration":39196,"src":"2593:5:64"},"id":18992,"nodeType":"InheritanceSpecifier","src":"2593:5:64"}],"canonicalName":"Vault","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":22336,"internalFunctionIDs":{"6093":1,"6114":2},"linearizedBaseContracts":[22336,39196,25145,38828,1685,39065,9568,27923,3550,3789,4344],"name":"Vault","nameLocation":"2559:5:64","nodeType":"ContractDefinition","nodes":[{"global":false,"id":18995,"libraryName":{"id":18993,"name":"PackedTokenBalance","nameLocations":["2611:18:64"],"nodeType":"IdentifierPath","referencedDeclaration":5970,"src":"2611:18:64"},"nodeType":"UsingForDirective","src":"2605:37:64","typeName":{"id":18994,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2634:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":18998,"libraryName":{"id":18996,"name":"BufferHelpers","nameLocations":["2653:13:64"],"nodeType":"IdentifierPath","referencedDeclaration":5439,"src":"2653:13:64"},"nodeType":"UsingForDirective","src":"2647:32:64","typeName":{"id":18997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2671:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":19001,"libraryName":{"id":18999,"name":"InputHelpers","nameLocations":["2690:12:64"],"nodeType":"IdentifierPath","referencedDeclaration":5819,"src":"2690:12:64"},"nodeType":"UsingForDirective","src":"2684:31:64","typeName":{"id":19000,"name":"uint256","nodeType":"ElementaryTypeName","src":"2707:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":19003,"libraryName":{"id":19002,"name":"FixedPoint","nameLocations":["2726:10:64"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"2726:10:64"},"nodeType":"UsingForDirective","src":"2720:23:64"},{"global":false,"id":19005,"libraryName":{"id":19004,"name":"Address","nameLocations":["2754:7:64"],"nodeType":"IdentifierPath","referencedDeclaration":39879,"src":"2754:7:64"},"nodeType":"UsingForDirective","src":"2748:20:64"},{"global":false,"id":19009,"libraryName":{"id":19006,"name":"CastingHelpers","nameLocations":["2779:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":5471,"src":"2779:14:64"},"nodeType":"UsingForDirective","src":"2773:35:64","typeName":{"baseType":{"id":19007,"name":"uint256","nodeType":"ElementaryTypeName","src":"2798:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19008,"nodeType":"ArrayTypeName","src":"2798:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},{"global":false,"id":19011,"libraryName":{"id":19010,"name":"SafeCast","nameLocations":["2819:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"2819:8:64"},"nodeType":"UsingForDirective","src":"2813:21:64"},{"global":false,"id":19015,"libraryName":{"id":19012,"name":"SafeERC20","nameLocations":["2845:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":39626,"src":"2845:9:64"},"nodeType":"UsingForDirective","src":"2839:27:64","typeName":{"id":19014,"nodeType":"UserDefinedTypeName","pathNode":{"id":19013,"name":"IERC20","nameLocations":["2859:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2859:6:64"},"referencedDeclaration":39274,"src":"2859:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}},{"global":false,"id":19019,"libraryName":{"id":19016,"name":"PoolConfigLib","nameLocations":["2877:13:64"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"2877:13:64"},"nodeType":"UsingForDirective","src":"2871:39:64","typeName":{"id":19018,"nodeType":"UserDefinedTypeName","pathNode":{"id":19017,"name":"PoolConfigBits","nameLocations":["2895:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2895:14:64"},"referencedDeclaration":4364,"src":"2895:14:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":19023,"libraryName":{"id":19020,"name":"HooksConfigLib","nameLocations":["2921:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":29013,"src":"2921:14:64"},"nodeType":"UsingForDirective","src":"2915:40:64","typeName":{"id":19022,"nodeType":"UserDefinedTypeName","pathNode":{"id":19021,"name":"PoolConfigBits","nameLocations":["2940:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2940:14:64"},"referencedDeclaration":4364,"src":"2940:14:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":19027,"libraryName":{"id":19024,"name":"VaultStateLib","nameLocations":["2966:13:64"],"nodeType":"IdentifierPath","referencedDeclaration":30748,"src":"2966:13:64"},"nodeType":"UsingForDirective","src":"2960:39:64","typeName":{"id":19026,"nodeType":"UserDefinedTypeName","pathNode":{"id":19025,"name":"VaultStateBits","nameLocations":["2984:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"2984:14:64"},"referencedDeclaration":30607,"src":"2984:14:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}},{"global":false,"id":19029,"libraryName":{"id":19028,"name":"ScalingHelpers","nameLocations":["3010:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":6474,"src":"3010:14:64"},"nodeType":"UsingForDirective","src":"3004:27:64"},{"global":false,"id":19031,"libraryName":{"id":19030,"name":"TransientStorageHelpers","nameLocations":["3042:23:64"],"nodeType":"IdentifierPath","referencedDeclaration":7068,"src":"3042:23:64"},"nodeType":"UsingForDirective","src":"3036:36:64"},{"global":false,"id":19033,"libraryName":{"id":19032,"name":"StorageSlotExtension","nameLocations":["3083:20:64"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"3083:20:64"},"nodeType":"UsingForDirective","src":"3077:33:64"},{"global":false,"id":19037,"libraryName":{"id":19034,"name":"PoolDataLib","nameLocations":["3121:11:64"],"nodeType":"IdentifierPath","referencedDeclaration":30570,"src":"3121:11:64"},"nodeType":"UsingForDirective","src":"3115:31:64","typeName":{"id":19036,"nodeType":"UserDefinedTypeName","pathNode":{"id":19035,"name":"PoolData","nameLocations":["3137:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3137:8:64"},"referencedDeclaration":4511,"src":"3137:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}}},{"constant":false,"id":19040,"mutability":"immutable","name":"_vaultExtension","nameLocation":"3256:15:64","nodeType":"VariableDeclaration","scope":22336,"src":"3222:49:64","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"},"typeName":{"id":19039,"nodeType":"UserDefinedTypeName","pathNode":{"id":19038,"name":"IVaultExtension","nameLocations":["3222:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":4208,"src":"3222:15:64"},"referencedDeclaration":4208,"src":"3222:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},"visibility":"private"},{"body":{"id":19151,"nodeType":"Block","src":"3392:893:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19054,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19043,"src":"3414:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},"id":19055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3429:5:64","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":3812,"src":"3414:20:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view external returns (contract IVault)"}},"id":19056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3414:22:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":19053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3406:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19052,"name":"address","nodeType":"ElementaryTypeName","src":"3406:7:64","typeDescriptions":{}}},"id":19057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3406:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":19060,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3449:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":19059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3441:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19058,"name":"address","nodeType":"ElementaryTypeName","src":"3441:7:64","typeDescriptions":{}}},"id":19061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3441:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3406:48:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19067,"nodeType":"IfStatement","src":"3402:117:64","trueBody":{"id":19066,"nodeType":"Block","src":"3456:63:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":19063,"name":"WrongVaultExtensionDeployment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3540,"src":"3477:29:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":19064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3477:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19065,"nodeType":"RevertStatement","src":"3470:38:64"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":19078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19070,"name":"protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19049,"src":"3541:21:64","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"id":19071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3563:5:64","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":2060,"src":"3541:27:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view external returns (contract IVault)"}},"id":19072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3541:29:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":19069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3533:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19068,"name":"address","nodeType":"ElementaryTypeName","src":"3533:7:64","typeDescriptions":{}}},"id":19073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3533:38:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":19076,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3583:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":19075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3575:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19074,"name":"address","nodeType":"ElementaryTypeName","src":"3575:7:64","typeDescriptions":{}}},"id":19077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3575:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3533:55:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19083,"nodeType":"IfStatement","src":"3529:131:64","trueBody":{"id":19082,"nodeType":"Block","src":"3590:70:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":19079,"name":"WrongProtocolFeeControllerDeployment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3543,"src":"3611:36:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":19080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3611:38:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19081,"nodeType":"RevertStatement","src":"3604:45:64"}]}},{"expression":{"id":19086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19084,"name":"_vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19040,"src":"3670:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19085,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19043,"src":"3688:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},"src":"3670:32:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},"id":19087,"nodeType":"ExpressionStatement","src":"3670:32:64"},{"expression":{"id":19090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19088,"name":"_protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27826,"src":"3712:22:64","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19089,"name":"protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19049,"src":"3737:21:64","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"src":"3712:46:64","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"id":19091,"nodeType":"ExpressionStatement","src":"3712:46:64"},{"expression":{"id":19101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19092,"name":"_vaultPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27804,"src":"3769:24:64","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":19096,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19043,"src":"3816:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":19095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3808:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19094,"name":"address","nodeType":"ElementaryTypeName","src":"3808:7:64","typeDescriptions":{}}},"id":19097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3808:23:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19093,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"3796:11:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultAdmin_$3183_$","typeString":"type(contract IVaultAdmin)"}},"id":19098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3796:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":19099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3833:21:64","memberName":"getPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":2917,"src":"3796:58:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":19100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3796:60:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3769:87:64","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19102,"nodeType":"ExpressionStatement","src":"3769:87:64"},{"expression":{"id":19112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19103,"name":"_vaultBufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27808,"src":"3866:26:64","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":19107,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19043,"src":"3915:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":19106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3907:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19105,"name":"address","nodeType":"ElementaryTypeName","src":"3907:7:64","typeDescriptions":{}}},"id":19108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3907:23:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19104,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"3895:11:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultAdmin_$3183_$","typeString":"type(contract IVaultAdmin)"}},"id":19109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3895:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":19110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3932:23:64","memberName":"getBufferPeriodDuration","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"3895:60:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":19111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3895:62:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3866:91:64","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19113,"nodeType":"ExpressionStatement","src":"3866:91:64"},{"expression":{"id":19123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19114,"name":"_vaultBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27806,"src":"3967:25:64","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":19118,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19043,"src":"4015:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":19117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4007:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19116,"name":"address","nodeType":"ElementaryTypeName","src":"4007:7:64","typeDescriptions":{}}},"id":19119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:23:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19115,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"3995:11:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultAdmin_$3183_$","typeString":"type(contract IVaultAdmin)"}},"id":19120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3995:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":19121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4032:22:64","memberName":"getBufferPeriodEndTime","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"3995:59:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":19122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3995:61:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3967:89:64","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":19124,"nodeType":"ExpressionStatement","src":"3967:89:64"},{"expression":{"id":19134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19125,"name":"_MINIMUM_TRADE_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27733,"src":"4067:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":19129,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19043,"src":"4111:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":19128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4103:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19127,"name":"address","nodeType":"ElementaryTypeName","src":"4103:7:64","typeDescriptions":{}}},"id":19130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:23:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19126,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"4091:11:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultAdmin_$3183_$","typeString":"type(contract IVaultAdmin)"}},"id":19131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4091:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":19132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4128:21:64","memberName":"getMinimumTradeAmount","nodeType":"MemberAccess","referencedDeclaration":2959,"src":"4091:58:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":19133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4091:60:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4067:84:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19135,"nodeType":"ExpressionStatement","src":"4067:84:64"},{"expression":{"id":19145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19136,"name":"_MINIMUM_WRAP_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27735,"src":"4161:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":19140,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19043,"src":"4204:14:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":19139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4196:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19138,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:64","typeDescriptions":{}}},"id":19141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4196:23:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19137,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"4184:11:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultAdmin_$3183_$","typeString":"type(contract IVaultAdmin)"}},"id":19142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4184:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":19143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4221:20:64","memberName":"getMinimumWrapAmount","nodeType":"MemberAccess","referencedDeclaration":2965,"src":"4184:57:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":19144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4184:59:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4161:82:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19146,"nodeType":"ExpressionStatement","src":"4161:82:64"},{"expression":{"id":19149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19147,"name":"_authorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27823,"src":"4254:11:64","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19148,"name":"authorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19046,"src":"4268:10:64","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"src":"4254:24:64","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":19150,"nodeType":"ExpressionStatement","src":"4254:24:64"}]},"id":19152,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":19050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19043,"mutability":"mutable","name":"vaultExtension","nameLocation":"3306:14:64","nodeType":"VariableDeclaration","scope":19152,"src":"3290:30:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"},"typeName":{"id":19042,"nodeType":"UserDefinedTypeName","pathNode":{"id":19041,"name":"IVaultExtension","nameLocations":["3290:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":4208,"src":"3290:15:64"},"referencedDeclaration":4208,"src":"3290:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},"visibility":"internal"},{"constant":false,"id":19046,"mutability":"mutable","name":"authorizer","nameLocation":"3334:10:64","nodeType":"VariableDeclaration","scope":19152,"src":"3322:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":19045,"nodeType":"UserDefinedTypeName","pathNode":{"id":19044,"name":"IAuthorizer","nameLocations":["3322:11:64"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"3322:11:64"},"referencedDeclaration":1316,"src":"3322:11:64","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"},{"constant":false,"id":19049,"mutability":"mutable","name":"protocolFeeController","nameLocation":"3369:21:64","nodeType":"VariableDeclaration","scope":19152,"src":"3346:44:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":19048,"nodeType":"UserDefinedTypeName","pathNode":{"id":19047,"name":"IProtocolFeeController","nameLocations":["3346:22:64"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"3346:22:64"},"referencedDeclaration":2230,"src":"3346:22:64","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"}],"src":"3289:102:64"},"returnParameters":{"id":19051,"nodeType":"ParameterList","parameters":[],"src":"3392:0:64"},"scope":22336,"src":"3278:1007:64","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":19201,"nodeType":"Block","src":"5082:1796:64","statements":[{"assignments":[19156],"declarations":[{"constant":false,"id":19156,"mutability":"mutable","name":"isUnlockedBefore","nameLocation":"5097:16:64","nodeType":"VariableDeclaration","scope":19201,"src":"5092:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19155,"name":"bool","nodeType":"ElementaryTypeName","src":"5092:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":19161,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19157,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"5116:11:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":19158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5116:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":19159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5130:5:64","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"5116:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlotType_$9734_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType) view returns (bool)"}},"id":19160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5116:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5092:45:64"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19162,"name":"isUnlockedBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19156,"src":"5152:16:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":19163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5172:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5152:25:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19172,"nodeType":"IfStatement","src":"5148:82:64","trueBody":{"id":19171,"nodeType":"Block","src":"5179:51:64","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":19168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5214:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19165,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"5193:11:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":19166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5193:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":19167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5207:6:64","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"5193:20:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":19169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5193:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19170,"nodeType":"ExpressionStatement","src":"5193:26:64"}]}},{"id":19173,"nodeType":"PlaceholderStatement","src":"5327:1:64"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19174,"name":"isUnlockedBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19156,"src":"5343:16:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":19175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5363:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5343:25:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19200,"nodeType":"IfStatement","src":"5339:1533:64","trueBody":{"id":19199,"nodeType":"Block","src":"5370:1502:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19177,"name":"_nonZeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27870,"src":"5388:18:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":19178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":19179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5409:5:64","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"5388:26:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":19180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:28:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5420:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5388:33:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19187,"nodeType":"IfStatement","src":"5384:98:64","trueBody":{"id":19186,"nodeType":"Block","src":"5423:59:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":19183,"name":"BalanceNotSettled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"5448:17:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":19184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5448:19:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19185,"nodeType":"RevertStatement","src":"5441:26:64"}]}},{"expression":{"arguments":[{"hexValue":"66616c7365","id":19191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5517:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19188,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"5496:11:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":19189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5496:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":19190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5510:6:64","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"5496:20:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":19192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5496:27:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19193,"nodeType":"ExpressionStatement","src":"5496:27:64"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19194,"name":"_sessionIdSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27905,"src":"6832:14:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":19195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6832:16:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":19196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6849:10:64","memberName":"tIncrement","nodeType":"MemberAccess","referencedDeclaration":7050,"src":"6832:27:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType)"}},"id":19197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6832:29:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19198,"nodeType":"ExpressionStatement","src":"6832:29:64"}]}}]},"documentation":{"id":19153,"nodeType":"StructuredDocumentation","src":"4513:543:64","text":" @dev This modifier is used for functions that temporarily modify the token deltas\n of the Vault, but expect to revert or settle balances by the end of their execution.\n It works by ensuring that the balances are properly settled by the time the last\n operation is executed.\n This is useful for functions like `unlock`, which perform arbitrary external calls:\n we can keep track of temporary deltas changes, and make sure they are settled by the\n time the external call is complete."},"id":19202,"name":"transient","nameLocation":"5070:9:64","nodeType":"ModifierDefinition","parameters":{"id":19154,"nodeType":"ParameterList","parameters":[],"src":"5079:2:64"},"src":"5061:1817:64","virtual":false,"visibility":"internal"},{"baseFunctions":[4222],"body":{"id":19219,"nodeType":"Block","src":"7001:55:64","statements":[{"expression":{"arguments":[{"id":19216,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19205,"src":"7044:4:64","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"components":[{"expression":{"id":19212,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7019:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7023:6:64","memberName":"sender","nodeType":"MemberAccess","src":"7019:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7018:12:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7031:12:64","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":39700,"src":"7018:25:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":19217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7018:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":19211,"id":19218,"nodeType":"Return","src":"7011:38:64"}]},"documentation":{"id":19203,"nodeType":"StructuredDocumentation","src":"6884:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"48c89491","id":19220,"implemented":true,"kind":"function","modifiers":[{"id":19208,"kind":"modifierInvocation","modifierName":{"id":19207,"name":"transient","nameLocations":["6961:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":19202,"src":"6961:9:64"},"nodeType":"ModifierInvocation","src":"6961:9:64"}],"name":"unlock","nameLocation":"6924:6:64","nodeType":"FunctionDefinition","parameters":{"id":19206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19205,"mutability":"mutable","name":"data","nameLocation":"6946:4:64","nodeType":"VariableDeclaration","scope":19220,"src":"6931:19:64","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":19204,"name":"bytes","nodeType":"ElementaryTypeName","src":"6931:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6930:21:64"},"returnParameters":{"id":19211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19210,"mutability":"mutable","name":"result","nameLocation":"6993:6:64","nodeType":"VariableDeclaration","scope":19220,"src":"6980:19:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19209,"name":"bytes","nodeType":"ElementaryTypeName","src":"6980:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6979:21:64"},"scope":22336,"src":"6915:141:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4233],"body":{"id":19277,"nodeType":"Block","src":"7207:1022:64","statements":[{"assignments":[19236],"declarations":[{"constant":false,"id":19236,"mutability":"mutable","name":"reservesBefore","nameLocation":"7225:14:64","nodeType":"VariableDeclaration","scope":19277,"src":"7217:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19235,"name":"uint256","nodeType":"ElementaryTypeName","src":"7217:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19240,"initialValue":{"baseExpression":{"id":19237,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"7242:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":19239,"indexExpression":{"id":19238,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19224,"src":"7254:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7242:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7217:43:64"},{"assignments":[19242],"declarations":[{"constant":false,"id":19242,"mutability":"mutable","name":"currentReserves","nameLocation":"7278:15:64","nodeType":"VariableDeclaration","scope":19277,"src":"7270:23:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19241,"name":"uint256","nodeType":"ElementaryTypeName","src":"7270:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19250,"initialValue":{"arguments":[{"arguments":[{"id":19247,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7320:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":19246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7312:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19245,"name":"address","nodeType":"ElementaryTypeName","src":"7312:7:64","typeDescriptions":{}}},"id":19248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7312:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":19243,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19224,"src":"7296:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":19244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7302:9:64","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":39231,"src":"7296:15:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":19249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7296:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7270:56:64"},{"expression":{"id":19255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19251,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"7336:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":19253,"indexExpression":{"id":19252,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19224,"src":"7348:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7336:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19254,"name":"currentReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19242,"src":"7357:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7336:36:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19256,"nodeType":"ExpressionStatement","src":"7336:36:64"},{"expression":{"id":19261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19257,"name":"credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19233,"src":"7382:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19258,"name":"currentReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19242,"src":"7391:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19259,"name":"reservesBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19236,"src":"7409:14:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7391:32:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7382:41:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19262,"nodeType":"ExpressionStatement","src":"7382:41:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19263,"name":"credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19233,"src":"7656:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":19264,"name":"amountHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19226,"src":"7665:10:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7656:19:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19271,"nodeType":"IfStatement","src":"7652:532:64","trueBody":{"id":19270,"nodeType":"Block","src":"7677:507:64","statements":[{"expression":{"id":19268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19266,"name":"credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19233,"src":"8154:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19267,"name":"amountHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19226,"src":"8163:10:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8154:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19269,"nodeType":"ExpressionStatement","src":"8154:19:64"}]}},{"expression":{"arguments":[{"id":19273,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19224,"src":"8208:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":19274,"name":"credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19233,"src":"8215:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19272,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"8194:13:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":19275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8194:28:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19276,"nodeType":"ExpressionStatement","src":"8194:28:64"}]},"documentation":{"id":19221,"nodeType":"StructuredDocumentation","src":"7062:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"15afd409","id":19278,"implemented":true,"kind":"function","modifiers":[{"id":19229,"kind":"modifierInvocation","modifierName":{"id":19228,"name":"nonReentrant","nameLocations":["7152:12:64"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"7152:12:64"},"nodeType":"ModifierInvocation","src":"7152:12:64"},{"id":19231,"kind":"modifierInvocation","modifierName":{"id":19230,"name":"onlyWhenUnlocked","nameLocations":["7165:16:64"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"7165:16:64"},"nodeType":"ModifierInvocation","src":"7165:16:64"}],"name":"settle","nameLocation":"7102:6:64","nodeType":"FunctionDefinition","parameters":{"id":19227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19224,"mutability":"mutable","name":"token","nameLocation":"7116:5:64","nodeType":"VariableDeclaration","scope":19278,"src":"7109:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":19223,"nodeType":"UserDefinedTypeName","pathNode":{"id":19222,"name":"IERC20","nameLocations":["7109:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"7109:6:64"},"referencedDeclaration":39274,"src":"7109:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19226,"mutability":"mutable","name":"amountHint","nameLocation":"7131:10:64","nodeType":"VariableDeclaration","scope":19278,"src":"7123:18:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19225,"name":"uint256","nodeType":"ElementaryTypeName","src":"7123:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7108:34:64"},"returnParameters":{"id":19234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19233,"mutability":"mutable","name":"credit","nameLocation":"7199:6:64","nodeType":"VariableDeclaration","scope":19278,"src":"7191:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19232,"name":"uint256","nodeType":"ElementaryTypeName","src":"7191:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7190:16:64"},"scope":22336,"src":"7093:1136:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4244],"body":{"id":19311,"nodeType":"Block","src":"8363:120:64","statements":[{"expression":{"arguments":[{"id":19294,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19282,"src":"8383:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":19295,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"8390:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19293,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"8373:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":19296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8373:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19297,"nodeType":"ExpressionStatement","src":"8373:24:64"},{"expression":{"id":19302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19298,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"8407:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":19300,"indexExpression":{"id":19299,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19282,"src":"8419:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8407:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":19301,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"8429:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8407:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19303,"nodeType":"ExpressionStatement","src":"8407:28:64"},{"expression":{"arguments":[{"id":19307,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19284,"src":"8465:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19308,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19286,"src":"8469:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19304,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19282,"src":"8446:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":19306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8452:12:64","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":39386,"src":"8446:18:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":19309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8446:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19310,"nodeType":"ExpressionStatement","src":"8446:30:64"}]},"documentation":{"id":19279,"nodeType":"StructuredDocumentation","src":"8235:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"ae639329","id":19312,"implemented":true,"kind":"function","modifiers":[{"id":19289,"kind":"modifierInvocation","modifierName":{"id":19288,"name":"nonReentrant","nameLocations":["8333:12:64"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"8333:12:64"},"nodeType":"ModifierInvocation","src":"8333:12:64"},{"id":19291,"kind":"modifierInvocation","modifierName":{"id":19290,"name":"onlyWhenUnlocked","nameLocations":["8346:16:64"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"8346:16:64"},"nodeType":"ModifierInvocation","src":"8346:16:64"}],"name":"sendTo","nameLocation":"8275:6:64","nodeType":"FunctionDefinition","parameters":{"id":19287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19282,"mutability":"mutable","name":"token","nameLocation":"8289:5:64","nodeType":"VariableDeclaration","scope":19312,"src":"8282:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":19281,"nodeType":"UserDefinedTypeName","pathNode":{"id":19280,"name":"IERC20","nameLocations":["8282:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8282:6:64"},"referencedDeclaration":39274,"src":"8282:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":19284,"mutability":"mutable","name":"to","nameLocation":"8304:2:64","nodeType":"VariableDeclaration","scope":19312,"src":"8296:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19283,"name":"address","nodeType":"ElementaryTypeName","src":"8296:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19286,"mutability":"mutable","name":"amount","nameLocation":"8316:6:64","nodeType":"VariableDeclaration","scope":19312,"src":"8308:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19285,"name":"uint256","nodeType":"ElementaryTypeName","src":"8308:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8281:42:64"},"returnParameters":{"id":19292,"nodeType":"ParameterList","parameters":[],"src":"8363:0:64"},"scope":22336,"src":"8266:217:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4257],"body":{"id":19513,"nodeType":"Block","src":"10954:4211:64","statements":[{"expression":{"arguments":[{"expression":{"id":19332,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"10980:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10996:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"10980:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19331,"name":"_ensureUnpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24537,"src":"10964:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":19334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10964:37:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19335,"nodeType":"ExpressionStatement","src":"10964:37:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19336,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"11016:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11032:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4531,"src":"11016:30:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":19338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11050:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11016:35:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19344,"nodeType":"IfStatement","src":"11012:90:64","trueBody":{"id":19343,"nodeType":"Block","src":"11053:49:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":19340,"name":"AmountGivenZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3291,"src":"11074:15:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":19341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11074:17:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19342,"nodeType":"RevertStatement","src":"11067:24:64"}]}},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":19349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19345,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"11116:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11132:7:64","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"11116:23:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19347,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"11143:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11159:8:64","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"11143:24:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"11116:51:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19354,"nodeType":"IfStatement","src":"11112:110:64","trueBody":{"id":19353,"nodeType":"Block","src":"11169:53:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":19350,"name":"CannotSwapSameToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3294,"src":"11190:19:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":19351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11190:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19352,"nodeType":"RevertStatement","src":"11183:28:64"}]}},{"assignments":[19357],"declarations":[{"constant":false,"id":19357,"mutability":"mutable","name":"poolData","nameLocation":"11683:8:64","nodeType":"VariableDeclaration","scope":19513,"src":"11667:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":19356,"nodeType":"UserDefinedTypeName","pathNode":{"id":19355,"name":"PoolData","nameLocations":["11667:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"11667:8:64"},"referencedDeclaration":4511,"src":"11667:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"id":19364,"initialValue":{"arguments":[{"expression":{"id":19359,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"11736:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11752:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"11736:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19361,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"11758:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":19362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11767:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"11758:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":19358,"name":"_loadPoolDataUpdatingBalancesAndYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"11694:41:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) returns (struct PoolData memory)"}},"id":19363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11694:84:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"nodeType":"VariableDeclarationStatement","src":"11667:111:64"},{"assignments":[19367],"declarations":[{"constant":false,"id":19367,"mutability":"mutable","name":"swapState","nameLocation":"11805:9:64","nodeType":"VariableDeclaration","scope":19513,"src":"11788:26:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":19366,"nodeType":"UserDefinedTypeName","pathNode":{"id":19365,"name":"SwapState","nameLocations":["11788:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"11788:9:64"},"referencedDeclaration":4443,"src":"11788:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"}],"id":19372,"initialValue":{"arguments":[{"id":19369,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"11832:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":19370,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"11849:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":19368,"name":"_loadSwapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19568,"src":"11817:14:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$returns$_t_struct$_SwapState_$4443_memory_ptr_$","typeString":"function (struct VaultSwapParams memory,struct PoolData memory) pure returns (struct SwapState memory)"}},"id":19371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11817:41:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"nodeType":"VariableDeclarationStatement","src":"11788:70:64"},{"assignments":[19375],"declarations":[{"constant":false,"id":19375,"mutability":"mutable","name":"poolSwapParams","nameLocation":"11890:14:64","nodeType":"VariableDeclaration","scope":19513,"src":"11868:36:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":19374,"nodeType":"UserDefinedTypeName","pathNode":{"id":19373,"name":"PoolSwapParams","nameLocations":["11868:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"11868:14:64"},"referencedDeclaration":4554,"src":"11868:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"id":19381,"initialValue":{"arguments":[{"id":19377,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"11928:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":19378,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"11945:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":19379,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"11956:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":19376,"name":"_buildPoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19601,"src":"11907:20:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$returns$_t_struct$_PoolSwapParams_$4554_memory_ptr_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory) view returns (struct PoolSwapParams memory)"}},"id":19380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11907:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"nodeType":"VariableDeclarationStatement","src":"11868:97:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":19382,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"11980:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11989:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"11980:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":19384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12004:20:64","memberName":"shouldCallBeforeSwap","nodeType":"MemberAccess","referencedDeclaration":28132,"src":"11980:44:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":19385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11980:46:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19428,"nodeType":"IfStatement","src":"11976:992:64","trueBody":{"id":19427,"nodeType":"Block","src":"12028:940:64","statements":[{"expression":{"arguments":[{"id":19389,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19375,"src":"12093:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},{"expression":{"id":19390,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"12125:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12141:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"12125:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":19392,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"12163:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":19395,"indexExpression":{"expression":{"id":19393,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"12179:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12195:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"12179:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12163:37:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":19386,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"12042:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_HooksConfigLib_$29013_$","typeString":"type(library HooksConfigLib)"}},"id":19388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12057:18:64","memberName":"callBeforeSwapHook","nodeType":"MemberAccess","referencedDeclaration":28499,"src":"12042:33:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolSwapParams_$4554_memory_ptr_$_t_address_$_t_contract$_IHooks_$1887_$returns$__$","typeString":"function (struct PoolSwapParams memory,address,contract IHooks)"}},"id":19396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12042:172:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19397,"nodeType":"ExpressionStatement","src":"12042:172:64"},{"expression":{"arguments":[{"baseExpression":{"id":19401,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"12575:18:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":19404,"indexExpression":{"expression":{"id":19402,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"12594:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12610:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"12594:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12575:40:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"expression":{"id":19405,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"12617:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":19406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12626:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"12617:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":19398,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"12543:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12552:22:64","memberName":"reloadBalancesAndRates","nodeType":"MemberAccess","referencedDeclaration":30410,"src":"12543:31:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),enum Rounding) view"}},"id":19407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12543:94:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19408,"nodeType":"ExpressionStatement","src":"12543:94:64"},{"expression":{"id":19417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19409,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"12770:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12780:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4440,"src":"12770:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19413,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"12830:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":19414,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"12847:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":19415,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"12857:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}],"id":19412,"name":"_computeAmountGivenScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19654,"src":"12802:27:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct VaultSwapParams memory,struct PoolData memory,struct SwapState memory) pure returns (uint256)"}},"id":19416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12802:65:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12770:97:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19418,"nodeType":"ExpressionStatement","src":"12770:97:64"},{"expression":{"id":19425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19419,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19375,"src":"12882:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19421,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"12920:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":19422,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"12937:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":19423,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"12948:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":19420,"name":"_buildPoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19601,"src":"12899:20:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$returns$_t_struct$_PoolSwapParams_$4554_memory_ptr_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory) view returns (struct PoolSwapParams memory)"}},"id":19424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12899:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"src":"12882:75:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":19426,"nodeType":"ExpressionStatement","src":"12882:75:64"}]}},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":19429,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"13437:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13446:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"13437:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":19431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13461:31:64","memberName":"shouldCallComputeDynamicSwapFee","nodeType":"MemberAccess","referencedDeclaration":28089,"src":"13437:55:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":19432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13437:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19451,"nodeType":"IfStatement","src":"13433:346:64","trueBody":{"id":19450,"nodeType":"Block","src":"13496:283:64","statements":[{"expression":{"id":19448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19433,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"13510:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13520:17:64","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4442,"src":"13510:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19438,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19375,"src":"13602:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},{"expression":{"id":19439,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"13634:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13650:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"13634:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19441,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"13672:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13682:17:64","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4442,"src":"13672:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":19443,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"13717:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":19446,"indexExpression":{"expression":{"id":19444,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"13733:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19445,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13749:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"13733:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13717:37:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":19436,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"13540:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_HooksConfigLib_$29013_$","typeString":"type(library HooksConfigLib)"}},"id":19437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13555:29:64","memberName":"callComputeDynamicSwapFeeHook","nodeType":"MemberAccess","referencedDeclaration":28472,"src":"13540:44:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolSwapParams_$4554_memory_ptr_$_t_address_$_t_uint256_$_t_contract$_IHooks_$1887_$returns$_t_uint256_$","typeString":"function (struct PoolSwapParams memory,address,uint256,contract IHooks) view returns (uint256)"}},"id":19447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13540:228:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13510:258:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19449,"nodeType":"ExpressionStatement","src":"13510:258:64"}]}},{"assignments":[19453],"declarations":[{"constant":false,"id":19453,"mutability":"mutable","name":"amountCalculatedScaled18","nameLocation":"14026:24:64","nodeType":"VariableDeclaration","scope":19513,"src":"14018:32:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19452,"name":"uint256","nodeType":"ElementaryTypeName","src":"14018:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19454,"nodeType":"VariableDeclarationStatement","src":"14018:32:64"},{"expression":{"id":19466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":19455,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"14061:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19456,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19453,"src":"14079:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19457,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19327,"src":"14105:8:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19458,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19329,"src":"14115:9:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19459,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14060:65:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19461,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"14147:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":19462,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"14176:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":19463,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"14199:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":19464,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19375,"src":"14221:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}],"id":19460,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19975,"src":"14128:5:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_PoolSwapParams_$4554_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory,struct PoolSwapParams memory) returns (uint256,uint256,uint256,uint256)"}},"id":19465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14128:117:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"src":"14060:185:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19467,"nodeType":"ExpressionStatement","src":"14060:185:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":19468,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"14488:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19469,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14497:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"14488:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":19470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14512:19:64","memberName":"shouldCallAfterSwap","nodeType":"MemberAccess","referencedDeclaration":28175,"src":"14488:43:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":19471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14488:45:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19496,"nodeType":"IfStatement","src":"14484:507:64","trueBody":{"id":19495,"nodeType":"Block","src":"14535:456:64","statements":[{"assignments":[19474],"declarations":[{"constant":false,"id":19474,"mutability":"mutable","name":"hooksContract","nameLocation":"14617:13:64","nodeType":"VariableDeclaration","scope":19495,"src":"14610:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":19473,"nodeType":"UserDefinedTypeName","pathNode":{"id":19472,"name":"IHooks","nameLocations":["14610:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"14610:6:64"},"referencedDeclaration":1887,"src":"14610:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"id":19479,"initialValue":{"baseExpression":{"id":19475,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"14633:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":19478,"indexExpression":{"expression":{"id":19476,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"14649:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14665:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"14649:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14633:37:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"nodeType":"VariableDeclarationStatement","src":"14610:60:64"},{"expression":{"id":19493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19480,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"14685:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19484,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19453,"src":"14763:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19485,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"14805:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19486,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14839:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14843:6:64","memberName":"sender","nodeType":"MemberAccess","src":"14839:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19488,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"14867:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":19489,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19367,"src":"14900:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":19490,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"14927:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":19491,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19474,"src":"14953:13:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"expression":{"id":19481,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19357,"src":"14704:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14713:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"14704:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":19483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14728:17:64","memberName":"callAfterSwapHook","nodeType":"MemberAccess","referencedDeclaration":28635,"src":"14704:41:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$_t_uint256_$_t_address_$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_contract$_IHooks_$1887_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256,uint256,address,struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory,contract IHooks) returns (uint256)"}},"id":19492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14704:276:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14685:295:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19494,"nodeType":"ExpressionStatement","src":"14685:295:64"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":19501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19497,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"15005:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19498,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15021:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"15005:20:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19499,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"15029:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":19500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15038:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"15029:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"15005:41:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19511,"nodeType":"Block","src":"15107:52:64","statements":[{"expression":{"id":19509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19507,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19327,"src":"15121:8:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19508,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"15132:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15121:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19510,"nodeType":"ExpressionStatement","src":"15121:27:64"}]},"id":19512,"nodeType":"IfStatement","src":"15001:158:64","trueBody":{"id":19506,"nodeType":"Block","src":"15048:53:64","statements":[{"expression":{"id":19504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19502,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19329,"src":"15062:9:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19503,"name":"amountCalculated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19325,"src":"15074:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15062:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19505,"nodeType":"ExpressionStatement","src":"15062:28:64"}]}}]},"documentation":{"id":19313,"nodeType":"StructuredDocumentation","src":"10679:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"2bfb780c","id":19514,"implemented":true,"kind":"function","modifiers":[{"id":19319,"kind":"modifierInvocation","modifierName":{"id":19318,"name":"onlyWhenUnlocked","nameLocations":["10803:16:64"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"10803:16:64"},"nodeType":"ModifierInvocation","src":"10803:16:64"},{"arguments":[{"expression":{"id":19321,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19316,"src":"10848:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10864:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"10848:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19323,"kind":"modifierInvocation","modifierName":{"id":19320,"name":"withInitializedPool","nameLocations":["10828:19:64"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"10828:19:64"},"nodeType":"ModifierInvocation","src":"10828:41:64"}],"name":"swap","nameLocation":"10719:4:64","nodeType":"FunctionDefinition","parameters":{"id":19317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19316,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"10756:15:64","nodeType":"VariableDeclaration","scope":19514,"src":"10733:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":19315,"nodeType":"UserDefinedTypeName","pathNode":{"id":19314,"name":"VaultSwapParams","nameLocations":["10733:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"10733:15:64"},"referencedDeclaration":4536,"src":"10733:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"}],"src":"10723:54:64"},"returnParameters":{"id":19330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19325,"mutability":"mutable","name":"amountCalculated","nameLocation":"10895:16:64","nodeType":"VariableDeclaration","scope":19514,"src":"10887:24:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19324,"name":"uint256","nodeType":"ElementaryTypeName","src":"10887:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19327,"mutability":"mutable","name":"amountIn","nameLocation":"10921:8:64","nodeType":"VariableDeclaration","scope":19514,"src":"10913:16:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19326,"name":"uint256","nodeType":"ElementaryTypeName","src":"10913:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19329,"mutability":"mutable","name":"amountOut","nameLocation":"10939:9:64","nodeType":"VariableDeclaration","scope":19514,"src":"10931:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19328,"name":"uint256","nodeType":"ElementaryTypeName","src":"10931:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10886:63:64"},"scope":22336,"src":"10710:4455:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19567,"nodeType":"Block","src":"15333:383:64","statements":[{"expression":{"id":19535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19526,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"15343:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15353:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"15343:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":19530,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"15379:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15388:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"15379:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"expression":{"id":19532,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19517,"src":"15396:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15412:7:64","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"15396:23:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":19529,"name":"_findTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25085,"src":"15363:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_contract$_IERC20_$39274_$returns$_t_uint256_$","typeString":"function (contract IERC20[] memory,contract IERC20) pure returns (uint256)"}},"id":19534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15363:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15343:77:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19536,"nodeType":"ExpressionStatement","src":"15343:77:64"},{"expression":{"id":19546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19537,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"15430:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15440:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"15430:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":19541,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"15467:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19542,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15476:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"15467:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"expression":{"id":19543,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19517,"src":"15484:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15500:8:64","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"15484:24:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":19540,"name":"_findTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25085,"src":"15451:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_contract$_IERC20_$39274_$returns$_t_uint256_$","typeString":"function (contract IERC20[] memory,contract IERC20) pure returns (uint256)"}},"id":19545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15451:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15430:79:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19547,"nodeType":"ExpressionStatement","src":"15430:79:64"},{"expression":{"id":19556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19548,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"15520:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19550,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15530:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4440,"src":"15520:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19552,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19517,"src":"15580:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":19553,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"15597:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":19554,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"15607:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}],"id":19551,"name":"_computeAmountGivenScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19654,"src":"15552:27:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct VaultSwapParams memory,struct PoolData memory,struct SwapState memory) pure returns (uint256)"}},"id":19555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15552:65:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15520:97:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19557,"nodeType":"ExpressionStatement","src":"15520:97:64"},{"expression":{"id":19565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19558,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19524,"src":"15627:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15637:17:64","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4442,"src":"15627:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":19561,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19520,"src":"15657:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19562,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15666:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"15657:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":19563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15681:26:64","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"15657:50:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":19564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15657:52:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15627:82:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19566,"nodeType":"ExpressionStatement","src":"15627:82:64"}]},"id":19568,"implemented":true,"kind":"function","modifiers":[],"name":"_loadSwapState","nameLocation":"15180:14:64","nodeType":"FunctionDefinition","parameters":{"id":19521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19517,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"15227:15:64","nodeType":"VariableDeclaration","scope":19568,"src":"15204:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":19516,"nodeType":"UserDefinedTypeName","pathNode":{"id":19515,"name":"VaultSwapParams","nameLocations":["15204:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"15204:15:64"},"referencedDeclaration":4536,"src":"15204:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":19520,"mutability":"mutable","name":"poolData","nameLocation":"15268:8:64","nodeType":"VariableDeclaration","scope":19568,"src":"15252:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":19519,"nodeType":"UserDefinedTypeName","pathNode":{"id":19518,"name":"PoolData","nameLocations":["15252:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"15252:8:64"},"referencedDeclaration":4511,"src":"15252:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"15194:88:64"},"returnParameters":{"id":19525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19524,"mutability":"mutable","name":"swapState","nameLocation":"15322:9:64","nodeType":"VariableDeclaration","scope":19568,"src":"15305:26:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":19523,"nodeType":"UserDefinedTypeName","pathNode":{"id":19522,"name":"SwapState","nameLocations":["15305:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"15305:9:64"},"referencedDeclaration":4443,"src":"15305:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"}],"src":"15304:28:64"},"scope":22336,"src":"15171:545:64","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":19600,"nodeType":"Block","src":"15922:500:64","statements":[{"expression":{"arguments":[{"expression":{"id":19584,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19571,"src":"16069:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16085:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"16069:20:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"expression":{"id":19586,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19574,"src":"16128:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16138:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4440,"src":"16128:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19588,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19577,"src":"16193:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16202:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"16193:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":19590,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19574,"src":"16249:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16259:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"16249:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19592,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19574,"src":"16294:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19593,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16304:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"16294:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19594,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16338:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":19595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16342:6:64","memberName":"sender","nodeType":"MemberAccess","src":"16338:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19596,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19571,"src":"16376:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16392:8:64","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4535,"src":"16376:24:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":19583,"name":"PoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"16030:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolSwapParams_$4554_storage_ptr_$","typeString":"type(struct PoolSwapParams storage pointer)"}},"id":19598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["16063:4:64","16107:19:64","16175:16:64","16240:7:64","16284:8:64","16330:6:64","16366:8:64"],"names":["kind","amountGivenScaled18","balancesScaled18","indexIn","indexOut","router","userData"],"nodeType":"FunctionCall","src":"16030:385:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"functionReturnParameters":19582,"id":19599,"nodeType":"Return","src":"16011:404:64"}]},"id":19601,"implemented":true,"kind":"function","modifiers":[],"name":"_buildPoolSwapParams","nameLocation":"15731:20:64","nodeType":"FunctionDefinition","parameters":{"id":19578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19571,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"15784:15:64","nodeType":"VariableDeclaration","scope":19601,"src":"15761:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":19570,"nodeType":"UserDefinedTypeName","pathNode":{"id":19569,"name":"VaultSwapParams","nameLocations":["15761:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"15761:15:64"},"referencedDeclaration":4536,"src":"15761:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":19574,"mutability":"mutable","name":"swapState","nameLocation":"15826:9:64","nodeType":"VariableDeclaration","scope":19601,"src":"15809:26:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":19573,"nodeType":"UserDefinedTypeName","pathNode":{"id":19572,"name":"SwapState","nameLocations":["15809:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"15809:9:64"},"referencedDeclaration":4443,"src":"15809:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":19577,"mutability":"mutable","name":"poolData","nameLocation":"15861:8:64","nodeType":"VariableDeclaration","scope":19601,"src":"15845:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":19576,"nodeType":"UserDefinedTypeName","pathNode":{"id":19575,"name":"PoolData","nameLocations":["15845:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"15845:8:64"},"referencedDeclaration":4511,"src":"15845:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"15751:124:64"},"returnParameters":{"id":19582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19601,"src":"15899:21:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":19580,"nodeType":"UserDefinedTypeName","pathNode":{"id":19579,"name":"PoolSwapParams","nameLocations":["15899:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"15899:14:64"},"referencedDeclaration":4554,"src":"15899:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"15898:23:64"},"scope":22336,"src":"15722:700:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":19653,"nodeType":"Block","src":"16791:1125:64","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":19620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19616,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19605,"src":"17000:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19617,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17016:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"17000:20:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19618,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"17024:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":19619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17033:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"17024:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"17000:41:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"baseExpression":{"expression":{"id":19638,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19608,"src":"17366:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17375:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"17366:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19642,"indexExpression":{"expression":{"id":19640,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19611,"src":"17397:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17407:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"17397:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17366:50:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"expression":{"id":19643,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19608,"src":"17831:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17840:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"17831:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19647,"indexExpression":{"expression":{"id":19645,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19611,"src":"17851:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17861:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"17851:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17831:39:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17871:18:64","memberName":"computeRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6473,"src":"17831:58:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":19649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17831:60:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":19635,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19605,"src":"17287:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17303:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4531,"src":"17287:30:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17318:26:64","memberName":"toScaled18ApplyRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6114,"src":"17287:57:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17287:622:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17000:909:64","trueExpression":{"arguments":[{"baseExpression":{"expression":{"id":19624,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19608,"src":"17141:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17150:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"17141:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19628,"indexExpression":{"expression":{"id":19626,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19611,"src":"17172:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17182:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"17172:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17141:49:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":19629,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19608,"src":"17212:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19630,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17221:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"17212:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19633,"indexExpression":{"expression":{"id":19631,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19611,"src":"17232:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17242:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"17232:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17212:38:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":19621,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19605,"src":"17060:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19622,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17076:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4531,"src":"17060:30:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17091:28:64","memberName":"toScaled18ApplyRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"17060:59:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17060:208:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19615,"id":19652,"nodeType":"Return","src":"16981:928:64"}]},"documentation":{"id":19602,"nodeType":"StructuredDocumentation","src":"16428:166:64","text":" @dev Preconditions: decimalScalingFactors and tokenRates in `poolData` must be current.\n Uses amountGivenRaw and kind from `vaultSwapParams`."},"id":19654,"implemented":true,"kind":"function","modifiers":[],"name":"_computeAmountGivenScaled18","nameLocation":"16608:27:64","nodeType":"FunctionDefinition","parameters":{"id":19612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19605,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"16668:15:64","nodeType":"VariableDeclaration","scope":19654,"src":"16645:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":19604,"nodeType":"UserDefinedTypeName","pathNode":{"id":19603,"name":"VaultSwapParams","nameLocations":["16645:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"16645:15:64"},"referencedDeclaration":4536,"src":"16645:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":19608,"mutability":"mutable","name":"poolData","nameLocation":"16709:8:64","nodeType":"VariableDeclaration","scope":19654,"src":"16693:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":19607,"nodeType":"UserDefinedTypeName","pathNode":{"id":19606,"name":"PoolData","nameLocations":["16693:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"16693:8:64"},"referencedDeclaration":4511,"src":"16693:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":19611,"mutability":"mutable","name":"swapState","nameLocation":"16744:9:64","nodeType":"VariableDeclaration","scope":19654,"src":"16727:26:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":19610,"nodeType":"UserDefinedTypeName","pathNode":{"id":19609,"name":"SwapState","nameLocations":["16727:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"16727:9:64"},"referencedDeclaration":4443,"src":"16727:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"}],"src":"16635:124:64"},"returnParameters":{"id":19615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19654,"src":"16782:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19613,"name":"uint256","nodeType":"ElementaryTypeName","src":"16782:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16781:9:64"},"scope":22336,"src":"16599:1317:64","stateMutability":"pure","virtual":false,"visibility":"private"},{"canonicalName":"Vault.SwapInternalLocals","documentation":{"id":19655,"nodeType":"StructuredDocumentation","src":"17922:190:64","text":" @dev Auxiliary struct to prevent stack-too-deep issues inside `_swap` function.\n Total swap fees include LP (pool) fees and aggregate (protocol + pool creator) fees."},"id":19662,"members":[{"constant":false,"id":19657,"mutability":"mutable","name":"totalSwapFeeAmountScaled18","nameLocation":"18161:26:64","nodeType":"VariableDeclaration","scope":19662,"src":"18153:34:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19656,"name":"uint256","nodeType":"ElementaryTypeName","src":"18153:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19659,"mutability":"mutable","name":"totalSwapFeeAmountRaw","nameLocation":"18205:21:64","nodeType":"VariableDeclaration","scope":19662,"src":"18197:29:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19658,"name":"uint256","nodeType":"ElementaryTypeName","src":"18197:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19661,"mutability":"mutable","name":"aggregateFeeAmountRaw","nameLocation":"18244:21:64","nodeType":"VariableDeclaration","scope":19662,"src":"18236:29:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19660,"name":"uint256","nodeType":"ElementaryTypeName","src":"18236:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SwapInternalLocals","nameLocation":"18124:18:64","nodeType":"StructDefinition","scope":22336,"src":"18117:155:64","visibility":"public"},{"body":{"id":19974,"nodeType":"Block","src":"19132:5853:64","statements":[{"assignments":[19690],"declarations":[{"constant":false,"id":19690,"mutability":"mutable","name":"locals","nameLocation":"19168:6:64","nodeType":"VariableDeclaration","scope":19974,"src":"19142:32:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals"},"typeName":{"id":19689,"nodeType":"UserDefinedTypeName","pathNode":{"id":19688,"name":"SwapInternalLocals","nameLocations":["19142:18:64"],"nodeType":"IdentifierPath","referencedDeclaration":19662,"src":"19142:18:64"},"referencedDeclaration":19662,"src":"19142:18:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_storage_ptr","typeString":"struct Vault.SwapInternalLocals"}},"visibility":"internal"}],"id":19691,"nodeType":"VariableDeclarationStatement","src":"19142:32:64"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":19696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19692,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"19189:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19205:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"19189:20:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19694,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"19213:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":19695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19222:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"19213:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"19189:41:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19716,"nodeType":"IfStatement","src":"19185:325:64","trueBody":{"id":19715,"nodeType":"Block","src":"19232:278:64","statements":[{"expression":{"id":19706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19697,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"19309:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19316:26:64","memberName":"totalSwapFeeAmountScaled18","nodeType":"MemberAccess","referencedDeclaration":19657,"src":"19309:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":19703,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"19386:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19396:17:64","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4442,"src":"19386:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":19700,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19675,"src":"19345:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":19701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19360:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"19345:34:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19380:5:64","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"19345:40:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":19705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19345:69:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19309:105:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19707,"nodeType":"ExpressionStatement","src":"19309:105:64"},{"expression":{"id":19713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19708,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19675,"src":"19428:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":19710,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19443:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"19428:34:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"expression":{"id":19711,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"19466:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19473:26:64","memberName":"totalSwapFeeAmountScaled18","nodeType":"MemberAccess","referencedDeclaration":19657,"src":"19466:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19428:71:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19714,"nodeType":"ExpressionStatement","src":"19428:71:64"}]}},{"expression":{"arguments":[{"expression":{"id":19718,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19675,"src":"19543:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":19719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19558:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"19543:34:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19717,"name":"_ensureValidSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22287,"src":"19520:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":19720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19520:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19721,"nodeType":"ExpressionStatement","src":"19520:58:64"},{"expression":{"id":19730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19722,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19682,"src":"19706:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19728,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19675,"src":"19772:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}],"expression":{"arguments":[{"expression":{"id":19724,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"19743:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19759:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"19743:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19723,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"19733:9:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":19726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19733:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":19727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19765:6:64","memberName":"onSwap","nodeType":"MemberAccess","referencedDeclaration":1365,"src":"19733:38:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_PoolSwapParams_$4554_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct PoolSwapParams memory) external returns (uint256)"}},"id":19729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19733:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19706:81:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19731,"nodeType":"ExpressionStatement","src":"19706:81:64"},{"expression":{"arguments":[{"id":19733,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19682,"src":"19821:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19732,"name":"_ensureValidSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22287,"src":"19798:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":19734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19798:48:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19735,"nodeType":"ExpressionStatement","src":"19798:48:64"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":19740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":19736,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"20225:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20241:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"20225:20:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19738,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"20249:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":19739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20258:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"20249:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"20225:41:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19844,"nodeType":"Block","src":"21542:1367:64","statements":[{"expression":{"id":19800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19788,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"22082:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22089:26:64","memberName":"totalSwapFeeAmountScaled18","nodeType":"MemberAccess","referencedDeclaration":19657,"src":"22082:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":19793,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"22169:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22179:17:64","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4442,"src":"22169:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":19795,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"22214:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22224:17:64","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4442,"src":"22214:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22242:10:64","memberName":"complement","nodeType":"MemberAccess","referencedDeclaration":7833,"src":"22214:38:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":19798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22214:40:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19791,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19682,"src":"22118:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22143:8:64","memberName":"mulDivUp","nodeType":"MemberAccess","referencedDeclaration":7660,"src":"22118:33:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22118:150:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22082:186:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19801,"nodeType":"ExpressionStatement","src":"22082:186:64"},{"expression":{"id":19805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19802,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19682,"src":"22283:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":19803,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"22311:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22318:26:64","memberName":"totalSwapFeeAmountScaled18","nodeType":"MemberAccess","referencedDeclaration":19657,"src":"22311:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22283:61:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19806,"nodeType":"ExpressionStatement","src":"22283:61:64"},{"expression":{"id":19821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19807,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19680,"src":"22450:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":19810,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"22535:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22544:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"22535:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19814,"indexExpression":{"expression":{"id":19812,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"22566:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22576:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"22566:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22535:49:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":19815,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"22602:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22611:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"22602:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19819,"indexExpression":{"expression":{"id":19817,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"22622:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22632:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"22622:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22602:38:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19808,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19682,"src":"22472:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22497:20:64","memberName":"toRawUndoRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6156,"src":"22472:45:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22472:182:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22450:204:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19822,"nodeType":"ExpressionStatement","src":"22450:204:64"},{"expression":{"id":19830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":19823,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19684,"src":"22670:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19824,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19686,"src":"22683:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19825,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"22669:27:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":19826,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19680,"src":"22700:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19827,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"22721:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19828,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22737:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4531,"src":"22721:30:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19829,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22699:53:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"22669:83:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19831,"nodeType":"ExpressionStatement","src":"22669:83:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19832,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19684,"src":"22771:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":19833,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"22785:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22801:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4533,"src":"22785:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22771:38:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19843,"nodeType":"IfStatement","src":"22767:132:64","trueBody":{"id":19842,"nodeType":"Block","src":"22811:88:64","statements":[{"errorCall":{"arguments":[{"id":19837,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19684,"src":"22846:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19838,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"22859:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22875:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4533,"src":"22859:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19836,"name":"SwapLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"22836:9:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":19840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22836:48:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19841,"nodeType":"RevertStatement","src":"22829:55:64"}]}}]},"id":19845,"nodeType":"IfStatement","src":"20221:2688:64","trueBody":{"id":19787,"nodeType":"Block","src":"20268:1268:64","statements":[{"expression":{"id":19746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":19741,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19675,"src":"20465:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":19743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20480:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"20465:34:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":19744,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"20502:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20512:19:64","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4440,"src":"20502:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20465:66:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19747,"nodeType":"ExpressionStatement","src":"20465:66:64"},{"expression":{"id":19764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":19748,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19680,"src":"20637:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":19751,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"20724:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20733:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"20724:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19755,"indexExpression":{"expression":{"id":19753,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"20755:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20765:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"20755:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20724:50:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"expression":{"id":19756,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"21205:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21214:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"21205:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19760,"indexExpression":{"expression":{"id":19758,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"21225:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21235:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"21225:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21205:39:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21245:18:64","memberName":"computeRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6473,"src":"21205:58:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":19762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21205:60:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19749,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19682,"src":"20659:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20684:22:64","memberName":"toRawUndoRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6135,"src":"20659:47:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20659:620:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20637:642:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19765,"nodeType":"ExpressionStatement","src":"20637:642:64"},{"expression":{"id":19773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":19766,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19684,"src":"21295:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19767,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19686,"src":"21308:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19768,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"21294:27:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"expression":{"id":19769,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"21325:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21341:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4531,"src":"21325:30:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19771,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19680,"src":"21357:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19772,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21324:53:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"21294:83:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19774,"nodeType":"ExpressionStatement","src":"21294:83:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19775,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19686,"src":"21396:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":19776,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"21411:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19777,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21427:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4533,"src":"21411:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21396:39:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19786,"nodeType":"IfStatement","src":"21392:134:64","trueBody":{"id":19785,"nodeType":"Block","src":"21437:89:64","statements":[{"errorCall":{"arguments":[{"id":19780,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19686,"src":"21472:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19781,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"21486:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21502:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4533,"src":"21486:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19779,"name":"SwapLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"21462:9:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":19783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21462:49:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19784,"nodeType":"RevertStatement","src":"21455:56:64"}]}}]}},{"expression":{"arguments":[{"expression":{"id":19847,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"22993:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23009:7:64","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"22993:23:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":19849,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19684,"src":"23018:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19846,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"22983:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":19850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22983:47:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19851,"nodeType":"ExpressionStatement","src":"22983:47:64"},{"expression":{"arguments":[{"expression":{"id":19853,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"23054:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23070:8:64","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"23054:24:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":19855,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19686,"src":"23080:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19852,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"23040:13:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":19856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23040:53:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19857,"nodeType":"ExpressionStatement","src":"23040:53:64"},{"expression":{"id":19875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":19858,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"23315:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"23322:21:64","memberName":"totalSwapFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":19659,"src":"23315:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19861,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"23345:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"23352:21:64","memberName":"aggregateFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":19661,"src":"23345:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":19863,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"23314:60:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":19865,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"23425:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"expression":{"id":19866,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"23447:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23454:26:64","memberName":"totalSwapFeeAmountScaled18","nodeType":"MemberAccess","referencedDeclaration":19657,"src":"23447:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19868,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"23494:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23510:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"23494:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19870,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"23528:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23544:7:64","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"23528:23:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":19872,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"23565:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23575:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"23565:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19864,"name":"_computeAndChargeAggregateSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21334,"src":"23377:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct PoolData memory,uint256,address,contract IERC20,uint256) returns (uint256,uint256)"}},"id":19874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23377:215:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"23314:278:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19876,"nodeType":"ExpressionStatement","src":"23314:278:64"},{"expression":{"arguments":[{"expression":{"id":19880,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"23693:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19881,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23703:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"23693:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":19882,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"23724:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23733:11:64","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"23724:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19886,"indexExpression":{"expression":{"id":19884,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"23745:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23755:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"23745:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23724:39:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":19887,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19684,"src":"23766:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23724:53:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":19889,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"23780:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23787:21:64","memberName":"aggregateFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":19661,"src":"23780:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23724:84:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19892,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"23822:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":19893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23831:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"23822:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":19877,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"23647:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23656:23:64","memberName":"updateRawAndLiveBalance","nodeType":"MemberAccess","referencedDeclaration":30517,"src":"23647:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,uint256,uint256,enum Rounding) pure"}},"id":19894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23647:204:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19895,"nodeType":"ExpressionStatement","src":"23647:204:64"},{"expression":{"arguments":[{"expression":{"id":19899,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"23907:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23917:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"23907:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":19901,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"23939:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23948:11:64","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"23939:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19905,"indexExpression":{"expression":{"id":19903,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"23960:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23970:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"23960:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23939:40:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":19906,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19686,"src":"23982:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23939:55:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19908,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"24008:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":19909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24017:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"24008:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":19896,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"23861:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23870:23:64","memberName":"updateRawAndLiveBalance","nodeType":"MemberAccess","referencedDeclaration":30517,"src":"23861:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,uint256,uint256,enum Rounding) pure"}},"id":19910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23861:176:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19911,"nodeType":"ExpressionStatement","src":"23861:176:64"},{"assignments":[19915],"declarations":[{"constant":false,"id":19915,"mutability":"mutable","name":"poolBalances","nameLocation":"24187:12:64","nodeType":"VariableDeclaration","scope":19974,"src":"24121:78:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":19914,"keyName":"tokenIndex","keyNameLocation":"24137:10:64","keyType":{"id":19912,"name":"uint256","nodeType":"ElementaryTypeName","src":"24129:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"24121:57:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"24159:18:64","valueType":{"id":19913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24151:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":19920,"initialValue":{"baseExpression":{"id":19916,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"24202:18:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":19919,"indexExpression":{"expression":{"id":19917,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"24234:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24250:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"24234:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24202:62:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"24121:143:64"},{"expression":{"id":19938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19921,"name":"poolBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19915,"src":"24274:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":19924,"indexExpression":{"expression":{"id":19922,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"24287:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24297:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"24287:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24274:31:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":19927,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"24356:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24365:11:64","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"24356:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19931,"indexExpression":{"expression":{"id":19929,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"24377:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24387:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"24377:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24356:39:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":19932,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"24409:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24418:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"24409:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19936,"indexExpression":{"expression":{"id":19934,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"24439:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24449:7:64","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"24439:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24409:48:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19925,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"24308:18:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":19926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24327:15:64","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"24308:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":19937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24308:159:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"24274:193:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":19939,"nodeType":"ExpressionStatement","src":"24274:193:64"},{"expression":{"id":19957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":19940,"name":"poolBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19915,"src":"24477:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":19943,"indexExpression":{"expression":{"id":19941,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"24490:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24500:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"24490:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24477:32:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":19946,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"24560:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24569:11:64","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"24560:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19950,"indexExpression":{"expression":{"id":19948,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"24581:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24591:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"24581:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24560:40:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":19951,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19672,"src":"24614:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":19952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24623:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"24614:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":19955,"indexExpression":{"expression":{"id":19953,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"24644:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24654:8:64","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"24644:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24614:49:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":19944,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"24512:18:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":19945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24531:15:64","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"24512:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":19956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24512:161:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"24477:196:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":19958,"nodeType":"ExpressionStatement","src":"24477:196:64"},{"eventCall":{"arguments":[{"expression":{"id":19960,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"24739:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24755:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"24739:20:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":19962,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"24773:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24789:7:64","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"24773:23:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":19964,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19666,"src":"24810:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":19965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24826:8:64","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"24810:24:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":19966,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19684,"src":"24848:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19967,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19686,"src":"24873:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19968,"name":"swapState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19669,"src":"24899:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":19969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24909:17:64","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4442,"src":"24899:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":19970,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19690,"src":"24940:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapInternalLocals_$19662_memory_ptr","typeString":"struct Vault.SwapInternalLocals memory"}},"id":19971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24947:21:64","memberName":"totalSwapFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":19659,"src":"24940:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":19959,"name":"Swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"24721:4:64","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,contract IERC20,uint256,uint256,uint256,uint256)"}},"id":19972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24721:257:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19973,"nodeType":"EmitStatement","src":"24716:262:64"}]},"documentation":{"id":19663,"nodeType":"StructuredDocumentation","src":"18278:441:64","text":" @dev Main non-reentrant portion of the swap, which calls the pool hook and updates accounting. `vaultSwapParams`\n are passed to the pool's `onSwap` hook.\n Preconditions: complete `SwapParams`, `SwapState`, and `PoolData`.\n Side effects: mutates balancesRaw and balancesLiveScaled18 in `poolData`.\n Updates `_aggregateFeeAmounts`, and `_poolTokenBalances` in storage.\n Emits Swap event."},"id":19975,"implemented":true,"kind":"function","modifiers":[{"id":19678,"kind":"modifierInvocation","modifierName":{"id":19677,"name":"nonReentrant","nameLocations":["18934:12:64"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"18934:12:64"},"nodeType":"ModifierInvocation","src":"18934:12:64"}],"name":"_swap","nameLocation":"18733:5:64","nodeType":"FunctionDefinition","parameters":{"id":19676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19666,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"18771:15:64","nodeType":"VariableDeclaration","scope":19975,"src":"18748:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":19665,"nodeType":"UserDefinedTypeName","pathNode":{"id":19664,"name":"VaultSwapParams","nameLocations":["18748:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"18748:15:64"},"referencedDeclaration":4536,"src":"18748:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":19669,"mutability":"mutable","name":"swapState","nameLocation":"18813:9:64","nodeType":"VariableDeclaration","scope":19975,"src":"18796:26:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":19668,"nodeType":"UserDefinedTypeName","pathNode":{"id":19667,"name":"SwapState","nameLocations":["18796:9:64"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"18796:9:64"},"referencedDeclaration":4443,"src":"18796:9:64","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":19672,"mutability":"mutable","name":"poolData","nameLocation":"18848:8:64","nodeType":"VariableDeclaration","scope":19975,"src":"18832:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":19671,"nodeType":"UserDefinedTypeName","pathNode":{"id":19670,"name":"PoolData","nameLocations":["18832:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"18832:8:64"},"referencedDeclaration":4511,"src":"18832:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":19675,"mutability":"mutable","name":"poolSwapParams","nameLocation":"18888:14:64","nodeType":"VariableDeclaration","scope":19975,"src":"18866:36:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":19674,"nodeType":"UserDefinedTypeName","pathNode":{"id":19673,"name":"PoolSwapParams","nameLocations":["18866:14:64"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"18866:14:64"},"referencedDeclaration":4554,"src":"18866:14:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"18738:170:64"},"returnParameters":{"id":19687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19680,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"18985:19:64","nodeType":"VariableDeclaration","scope":19975,"src":"18977:27:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19679,"name":"uint256","nodeType":"ElementaryTypeName","src":"18977:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19682,"mutability":"mutable","name":"amountCalculatedScaled18","nameLocation":"19026:24:64","nodeType":"VariableDeclaration","scope":19975,"src":"19018:32:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19681,"name":"uint256","nodeType":"ElementaryTypeName","src":"19018:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19684,"mutability":"mutable","name":"amountInRaw","nameLocation":"19072:11:64","nodeType":"VariableDeclaration","scope":19975,"src":"19064:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19683,"name":"uint256","nodeType":"ElementaryTypeName","src":"19064:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19686,"mutability":"mutable","name":"amountOutRaw","nameLocation":"19105:12:64","nodeType":"VariableDeclaration","scope":19975,"src":"19097:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19685,"name":"uint256","nodeType":"ElementaryTypeName","src":"19097:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18963:164:64"},"scope":22336,"src":"18724:6261:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4271],"body":{"id":20136,"nodeType":"Block","src":"25483:3988:64","statements":[{"expression":{"arguments":[{"expression":{"id":19996,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"25826:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":19997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25833:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"25826:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19995,"name":"_ensureUnpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24537,"src":"25810:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":19998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25810:28:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19999,"nodeType":"ExpressionStatement","src":"25810:28:64"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20003,"name":"_sessionIdSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27905,"src":"25875:14:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":20004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25875:16:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":20005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25892:5:64","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"25875:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":20006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25875:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20007,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"25901:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25908:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"25901:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":20009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25914:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20000,"name":"_addLiquidityCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27894,"src":"25848:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function () view returns (UintToAddressToBooleanMappingSlot)"}},"id":20001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25848:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"id":20002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25870:4:64","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6699,"src":"25848:26:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$_t_uint256_$_t_address_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function (UintToAddressToBooleanMappingSlot,uint256,address,bool)"}},"id":20010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25848:71:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20011,"nodeType":"ExpressionStatement","src":"25848:71:64"},{"assignments":[20014],"declarations":[{"constant":false,"id":20014,"mutability":"mutable","name":"poolData","nameLocation":"26402:8:64","nodeType":"VariableDeclaration","scope":20136,"src":"26386:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":20013,"nodeType":"UserDefinedTypeName","pathNode":{"id":20012,"name":"PoolData","nameLocations":["26386:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"26386:8:64"},"referencedDeclaration":4511,"src":"26386:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"id":20021,"initialValue":{"arguments":[{"expression":{"id":20016,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"26455:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26462:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"26455:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":20018,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"26468:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":20019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26477:8:64","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"26468:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":20015,"name":"_loadPoolDataUpdatingBalancesAndYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"26413:41:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) returns (struct PoolData memory)"}},"id":20020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26413:73:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"nodeType":"VariableDeclarationStatement","src":"26386:100:64"},{"expression":{"arguments":[{"expression":{"expression":{"id":20025,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"26532:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26541:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"26532:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":20027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26548:6:64","memberName":"length","nodeType":"MemberAccess","src":"26532:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":20028,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"26556:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26563:12:64","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"26556:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26576:6:64","memberName":"length","nodeType":"MemberAccess","src":"26556:26:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20022,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"26496:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":20024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26509:22:64","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5611,"src":"26496:35:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":20031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26496:87:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20032,"nodeType":"ExpressionStatement","src":"26496:87:64"},{"assignments":[20037],"declarations":[{"constant":false,"id":20037,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"26958:20:64","nodeType":"VariableDeclaration","scope":20136,"src":"26941:37:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20035,"name":"uint256","nodeType":"ElementaryTypeName","src":"26941:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20036,"nodeType":"ArrayTypeName","src":"26941:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":20046,"initialValue":{"arguments":[{"expression":{"id":20041,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"27052:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27061:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"27052:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20043,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"27096:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27105:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"27096:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"expression":{"id":20038,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"26981:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26988:12:64","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"26981:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27001:37:64","memberName":"copyToScaled18ApplyRateRoundDownArray","nodeType":"MemberAccess","referencedDeclaration":6310,"src":"26981:57:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256[] memory) pure returns (uint256[] memory)"}},"id":20045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26981:144:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"26941:184:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20047,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"27140:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27149:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"27140:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27164:28:64","memberName":"shouldCallBeforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28218,"src":"27140:52:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":20050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27140:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20088,"nodeType":"IfStatement","src":"27136:890:64","trueBody":{"id":20087,"nodeType":"Block","src":"27196:830:64","statements":[{"expression":{"arguments":[{"expression":{"id":20054,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"27269:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27273:6:64","memberName":"sender","nodeType":"MemberAccess","src":"27269:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20056,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20037,"src":"27297:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20057,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"27335:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},{"id":20058,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"27359:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"baseExpression":{"id":20059,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"27385:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":20062,"indexExpression":{"expression":{"id":20060,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"27401:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27408:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"27401:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27385:28:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":20051,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"27210:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_HooksConfigLib_$29013_$","typeString":"type(library HooksConfigLib)"}},"id":20053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27225:26:64","memberName":"callBeforeAddLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":28678,"src":"27210:41:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_contract$_IHooks_$1887_$returns$__$","typeString":"function (address,uint256[] memory,struct AddLiquidityParams memory,struct PoolData memory,contract IHooks)"}},"id":20063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27210:217:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20064,"nodeType":"ExpressionStatement","src":"27210:217:64"},{"expression":{"arguments":[{"baseExpression":{"id":20068,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"27688:18:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":20071,"indexExpression":{"expression":{"id":20069,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"27707:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20070,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27714:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"27707:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27688:31:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"expression":{"id":20072,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"27721:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":20073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27730:8:64","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"27721:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":20065,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"27656:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27665:22:64","memberName":"reloadBalancesAndRates","nodeType":"MemberAccess","referencedDeclaration":30410,"src":"27656:31:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),enum Rounding) view"}},"id":20074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27656:83:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20075,"nodeType":"ExpressionStatement","src":"27656:83:64"},{"expression":{"id":20085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20076,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20037,"src":"27836:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20080,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"27934:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27943:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"27934:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20082,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"27982:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27991:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"27982:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"expression":{"id":20077,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"27859:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27866:12:64","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"27859:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27879:37:64","memberName":"copyToScaled18ApplyRateRoundDownArray","nodeType":"MemberAccess","referencedDeclaration":6310,"src":"27859:57:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256[] memory) pure returns (uint256[] memory)"}},"id":20084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27859:156:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"27836:179:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20086,"nodeType":"ExpressionStatement","src":"27836:179:64"}]}},{"assignments":[20093],"declarations":[{"constant":false,"id":20093,"mutability":"mutable","name":"amountsInScaled18","nameLocation":"28599:17:64","nodeType":"VariableDeclaration","scope":20136,"src":"28582:34:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20091,"name":"uint256","nodeType":"ElementaryTypeName","src":"28582:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20092,"nodeType":"ArrayTypeName","src":"28582:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":20094,"nodeType":"VariableDeclarationStatement","src":"28582:34:64"},{"expression":{"id":20105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":20095,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19989,"src":"28627:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20096,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20093,"src":"28638:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20097,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19991,"src":"28657:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20098,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19993,"src":"28671:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":20099,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"28626:56:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20101,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"28712:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":20102,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"28734:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},{"id":20103,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20037,"src":"28754:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":20100,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20585,"src":"28685:13:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct PoolData memory,struct AddLiquidityParams memory,uint256[] memory) returns (uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"id":20104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28685:99:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"src":"28626:158:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20106,"nodeType":"ExpressionStatement","src":"28626:158:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20107,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"28982:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28991:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"28982:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29006:27:64","memberName":"shouldCallAfterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28261,"src":"28982:51:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":20110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28982:53:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20135,"nodeType":"IfStatement","src":"28978:487:64","trueBody":{"id":20134,"nodeType":"Block","src":"29037:428:64","statements":[{"assignments":[20113],"declarations":[{"constant":false,"id":20113,"mutability":"mutable","name":"hooksContract","nameLocation":"29119:13:64","nodeType":"VariableDeclaration","scope":20134,"src":"29112:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":20112,"nodeType":"UserDefinedTypeName","pathNode":{"id":20111,"name":"IHooks","nameLocations":["29112:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"29112:6:64"},"referencedDeclaration":1887,"src":"29112:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"id":20118,"initialValue":{"baseExpression":{"id":20114,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"29135:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":20117,"indexExpression":{"expression":{"id":20115,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"29151:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29158:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"29151:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29135:28:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"nodeType":"VariableDeclarationStatement","src":"29112:51:64"},{"expression":{"id":20132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20119,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19989,"src":"29178:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20123,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"29257:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29261:6:64","memberName":"sender","nodeType":"MemberAccess","src":"29257:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20125,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20093,"src":"29285:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20126,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19989,"src":"29320:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20127,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19991,"src":"29347:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20128,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"29377:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},{"id":20129,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"29401:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":20130,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20113,"src":"29427:13:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"expression":{"id":20120,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20014,"src":"29190:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29199:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"29190:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29214:25:64","memberName":"callAfterAddLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":28795,"src":"29190:49:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_contract$_IHooks_$1887_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,address,uint256[] memory,uint256[] memory,uint256,struct AddLiquidityParams memory,struct PoolData memory,contract IHooks) returns (uint256[] memory)"}},"id":20131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29190:264:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"29178:276:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20133,"nodeType":"ExpressionStatement","src":"29178:276:64"}]}}]},"documentation":{"id":19976,"nodeType":"StructuredDocumentation","src":"25203:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"4af29ec4","id":20137,"implemented":true,"kind":"function","modifiers":[{"id":19982,"kind":"modifierInvocation","modifierName":{"id":19981,"name":"onlyWhenUnlocked","nameLocations":["25329:16:64"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"25329:16:64"},"nodeType":"ModifierInvocation","src":"25329:16:64"},{"arguments":[{"expression":{"id":19984,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19979,"src":"25374:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":19985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25381:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"25374:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":19986,"kind":"modifierInvocation","modifierName":{"id":19983,"name":"withInitializedPool","nameLocations":["25354:19:64"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"25354:19:64"},"nodeType":"ModifierInvocation","src":"25354:32:64"}],"name":"addLiquidity","nameLocation":"25243:12:64","nodeType":"FunctionDefinition","parameters":{"id":19980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19979,"mutability":"mutable","name":"params","nameLocation":"25291:6:64","nodeType":"VariableDeclaration","scope":20137,"src":"25265:32:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":19978,"nodeType":"UserDefinedTypeName","pathNode":{"id":19977,"name":"AddLiquidityParams","nameLocations":["25265:18:64"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"25265:18:64"},"referencedDeclaration":4605,"src":"25265:18:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"}],"src":"25255:48:64"},"returnParameters":{"id":19994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19989,"mutability":"mutable","name":"amountsIn","nameLocation":"25421:9:64","nodeType":"VariableDeclaration","scope":20137,"src":"25404:26:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19987,"name":"uint256","nodeType":"ElementaryTypeName","src":"25404:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19988,"nodeType":"ArrayTypeName","src":"25404:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":19991,"mutability":"mutable","name":"bptAmountOut","nameLocation":"25440:12:64","nodeType":"VariableDeclaration","scope":20137,"src":"25432:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19990,"name":"uint256","nodeType":"ElementaryTypeName","src":"25432:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19993,"mutability":"mutable","name":"returnData","nameLocation":"25467:10:64","nodeType":"VariableDeclaration","scope":20137,"src":"25454:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19992,"name":"bytes","nodeType":"ElementaryTypeName","src":"25454:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25403:75:64"},"scope":22336,"src":"25234:4237:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"Vault.LiquidityLocals","id":20144,"members":[{"constant":false,"id":20139,"mutability":"mutable","name":"numTokens","nameLocation":"29610:9:64","nodeType":"VariableDeclaration","scope":20144,"src":"29602:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20138,"name":"uint256","nodeType":"ElementaryTypeName","src":"29602:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20141,"mutability":"mutable","name":"aggregateSwapFeeAmountRaw","nameLocation":"29637:25:64","nodeType":"VariableDeclaration","scope":20144,"src":"29629:33:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20140,"name":"uint256","nodeType":"ElementaryTypeName","src":"29629:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20143,"mutability":"mutable","name":"tokenIndex","nameLocation":"29680:10:64","nodeType":"VariableDeclaration","scope":20144,"src":"29672:18:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20142,"name":"uint256","nodeType":"ElementaryTypeName","src":"29672:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"LiquidityLocals","nameLocation":"29576:15:64","nodeType":"StructDefinition","scope":22336,"src":"29569:128:64","visibility":"public"},{"body":{"id":20584,"nodeType":"Block","src":"30548:6500:64","statements":[{"assignments":[20171],"declarations":[{"constant":false,"id":20171,"mutability":"mutable","name":"locals","nameLocation":"30581:6:64","nodeType":"VariableDeclaration","scope":20584,"src":"30558:29:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals"},"typeName":{"id":20170,"nodeType":"UserDefinedTypeName","pathNode":{"id":20169,"name":"LiquidityLocals","nameLocations":["30558:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":20144,"src":"30558:15:64"},"referencedDeclaration":20144,"src":"30558:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_storage_ptr","typeString":"struct Vault.LiquidityLocals"}},"visibility":"internal"}],"id":20172,"nodeType":"VariableDeclarationStatement","src":"30558:29:64"},{"expression":{"id":20179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20173,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"30597:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"30604:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"30597:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":20176,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"30616:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30625:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"30616:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":20178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30632:6:64","memberName":"length","nodeType":"MemberAccess","src":"30616:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30597:41:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20180,"nodeType":"ExpressionStatement","src":"30597:41:64"},{"expression":{"id":20188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20181,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"30648:12:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20185,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"30677:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30684:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"30677:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"30663:13:64","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":20182,"name":"uint256","nodeType":"ElementaryTypeName","src":"30667:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20183,"nodeType":"ArrayTypeName","src":"30667:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":20187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30663:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"30648:46:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20189,"nodeType":"ExpressionStatement","src":"30648:46:64"},{"assignments":[20194],"declarations":[{"constant":false,"id":20194,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"30821:14:64","nodeType":"VariableDeclaration","scope":20584,"src":"30804:31:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20192,"name":"uint256","nodeType":"ElementaryTypeName","src":"30804:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20193,"nodeType":"ArrayTypeName","src":"30804:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":20195,"nodeType":"VariableDeclarationStatement","src":"30804:31:64"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"id":20200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20196,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"30850:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20197,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30857:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"30850:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20198,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"30865:16:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":20199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30882:12:64","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4584,"src":"30865:29:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"src":"30850:44:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"id":20233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20229,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"31344:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31351:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"31344:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20231,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"31359:16:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":20232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31376:8:64","memberName":"DONATION","nodeType":"MemberAccess","referencedDeclaration":4587,"src":"31359:25:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"src":"31344:40:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"id":20263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20259,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"31627:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31634:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"31627:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20261,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"31642:16:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":20262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31659:10:64","memberName":"UNBALANCED","nodeType":"MemberAccess","referencedDeclaration":4585,"src":"31642:27:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"src":"31627:42:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"id":20311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20307,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"32398:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32405:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"32398:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20309,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"32413:16:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":20310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32430:22:64","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4586,"src":"32413:39:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"src":"32398:54:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"id":20370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20366,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33189:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33196:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"33189:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20368,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"33204:16:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":20369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33221:6:64","memberName":"CUSTOM","nodeType":"MemberAccess","referencedDeclaration":4588,"src":"33204:23:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"src":"33189:38:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20404,"nodeType":"Block","src":"33769:57:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":20401,"name":"InvalidAddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3320,"src":"33790:23:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":20402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33790:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":20403,"nodeType":"RevertStatement","src":"33783:32:64"}]},"id":20405,"nodeType":"IfStatement","src":"33185:641:64","trueBody":{"id":20400,"nodeType":"Block","src":"33229:534:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20371,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"33243:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33252:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"33243:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33267:32:64","memberName":"requireAddLiquidityCustomEnabled","nodeType":"MemberAccess","referencedDeclaration":29430,"src":"33243:56:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$__$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure"}},"id":20376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33243:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20377,"nodeType":"ExpressionStatement","src":"33243:58:64"},{"expression":{"id":20398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":20378,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"33400:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20379,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"33419:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20380,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"33433:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20381,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20167,"src":"33449:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":20382,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"33399:61:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,uint256[] memory,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20388,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"33550:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33554:6:64","memberName":"sender","nodeType":"MemberAccess","src":"33550:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20390,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"33582:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20391,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33624:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33631:15:64","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":4599,"src":"33624:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20393,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"33668:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33677:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"33668:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20395,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33719:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33726:8:64","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4604,"src":"33719:15:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"expression":{"id":20384,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33478:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33485:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"33478:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20383,"name":"IPoolLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"33463:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolLiquidity_$1943_$","typeString":"type(contract IPoolLiquidity)"}},"id":20386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33463:27:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolLiquidity_$1943","typeString":"contract IPoolLiquidity"}},"id":20387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33508:20:64","memberName":"onAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":1916,"src":"33463:65:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (address,uint256[] memory,uint256,uint256[] memory,bytes memory) external returns (uint256[] memory,uint256,uint256[] memory,bytes memory)"}},"id":20397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33463:289:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,uint256[] memory,bytes memory)"}},"src":"33399:353:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20399,"nodeType":"ExpressionStatement","src":"33399:353:64"}]}},"id":20406,"nodeType":"IfStatement","src":"32394:1432:64","trueBody":{"id":20365,"nodeType":"Block","src":"32454:725:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20312,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"32468:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32477:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"32468:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32492:33:64","memberName":"requireUnbalancedLiquidityEnabled","nodeType":"MemberAccess","referencedDeclaration":29368,"src":"32468:57:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$__$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure"}},"id":20317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32468:59:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20318,"nodeType":"ExpressionStatement","src":"32468:59:64"},{"expression":{"id":20322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20319,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"32542:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20320,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"32557:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32564:15:64","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":4599,"src":"32557:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32542:37:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20323,"nodeType":"ExpressionStatement","src":"32542:37:64"},{"expression":{"id":20331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20324,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"32593:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"32600:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"32593:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20329,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"32646:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":20327,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"32613:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":20328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32626:19:64","memberName":"getSingleInputIndex","nodeType":"MemberAccess","referencedDeclaration":5692,"src":"32613:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256)"}},"id":20330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32613:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32593:74:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20332,"nodeType":"ExpressionStatement","src":"32593:74:64"},{"expression":{"id":20335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20333,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"32682:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20334,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"32702:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"32682:40:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20336,"nodeType":"ExpressionStatement","src":"32682:40:64"},{"expression":{"id":20363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":20337,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"32737:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20340,"indexExpression":{"expression":{"id":20338,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"32755:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32762:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"32755:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"32737:36:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20341,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"32775:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":20342,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"32736:54:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20345,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"32883:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20346,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32892:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"32883:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20347,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"32934:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32941:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"32934:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20349,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"32973:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":20351,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33020:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33027:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"33020:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20350,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"33007:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33007:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20354,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"33054:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33063:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"33054:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33078:26:64","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"33054:50:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":20357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33054:52:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":20359,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33138:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33145:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"33138:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20358,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"33128:9:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":20361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33128:22:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":20343,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"32793:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":20344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32823:38:64","memberName":"computeAddLiquiditySingleTokenExactOut","nodeType":"MemberAccess","referencedDeclaration":11388,"src":"32793:68:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":20362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32793:375:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"32736:432:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20364,"nodeType":"ExpressionStatement","src":"32736:432:64"}]}},"id":20407,"nodeType":"IfStatement","src":"31623:2203:64","trueBody":{"id":20306,"nodeType":"Block","src":"31671:717:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20264,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"31685:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31694:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"31685:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31709:33:64","memberName":"requireUnbalancedLiquidityEnabled","nodeType":"MemberAccess","referencedDeclaration":29368,"src":"31685:57:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$__$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure"}},"id":20269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31685:59:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20270,"nodeType":"ExpressionStatement","src":"31685:59:64"},{"expression":{"id":20273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20271,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"31759:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20272,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"31779:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"31759:40:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20274,"nodeType":"ExpressionStatement","src":"31759:40:64"},{"expression":{"arguments":[{"expression":{"id":20278,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"32001:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32008:12:64","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"32001:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20280,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"32022:12:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":20275,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"31974:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ScalingHelpers_$6474_$","typeString":"type(library ScalingHelpers)"}},"id":20277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31989:11:64","memberName":"copyToArray","nodeType":"MemberAccess","referencedDeclaration":6180,"src":"31974:26:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory,uint256[] memory) pure"}},"id":20281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31974:61:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20282,"nodeType":"ExpressionStatement","src":"31974:61:64"},{"expression":{"id":20304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":20283,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"32051:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20284,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"32065:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":20285,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"32050:30:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20288,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"32143:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32152:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"32143:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20290,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"32190:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"expression":{"id":20292,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"32241:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20293,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32248:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"32241:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20291,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"32228:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32228:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20295,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"32271:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32280:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"32271:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32295:26:64","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"32271:50:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":20298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32271:52:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":20300,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"32351:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32358:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"32351:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20299,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"32341:9:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":20302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32341:22:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":20286,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"32083:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":20287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32096:29:64","memberName":"computeAddLiquidityUnbalanced","nodeType":"MemberAccess","referencedDeclaration":11280,"src":"32083:42:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":20303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32083:294:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"32050:327:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20305,"nodeType":"ExpressionStatement","src":"32050:327:64"}]}},"id":20408,"nodeType":"IfStatement","src":"31340:2486:64","trueBody":{"id":20258,"nodeType":"Block","src":"31386:231:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20234,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"31400:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31409:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"31400:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31424:22:64","memberName":"requireDonationEnabled","nodeType":"MemberAccess","referencedDeclaration":29579,"src":"31400:46:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$__$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure"}},"id":20239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31400:48:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20240,"nodeType":"ExpressionStatement","src":"31400:48:64"},{"expression":{"id":20248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20241,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"31463:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20245,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"31494:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31515:6:64","memberName":"length","nodeType":"MemberAccess","src":"31494:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"31480:13:64","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":20242,"name":"uint256","nodeType":"ElementaryTypeName","src":"31484:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20243,"nodeType":"ArrayTypeName","src":"31484:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":20247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31480:42:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"31463:59:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20249,"nodeType":"ExpressionStatement","src":"31463:59:64"},{"expression":{"id":20252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20250,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"31536:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":20251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31551:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31536:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20253,"nodeType":"ExpressionStatement","src":"31536:16:64"},{"expression":{"id":20256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20254,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"31566:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20255,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20154,"src":"31586:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"31566:40:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20257,"nodeType":"ExpressionStatement","src":"31566:40:64"}]}},"id":20409,"nodeType":"IfStatement","src":"30846:2980:64","trueBody":{"id":20228,"nodeType":"Block","src":"30896:438:64","statements":[{"expression":{"id":20204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20201,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"30910:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20202,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"30925:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"30932:15:64","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":4599,"src":"30925:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30910:37:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20205,"nodeType":"ExpressionStatement","src":"30910:37:64"},{"expression":{"id":20213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20206,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"31065:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20210,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"31096:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31103:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"31096:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"31082:13:64","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":20207,"name":"uint256","nodeType":"ElementaryTypeName","src":"31086:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20208,"nodeType":"ArrayTypeName","src":"31086:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":20212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31082:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"31065:48:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20214,"nodeType":"ExpressionStatement","src":"31065:48:64"},{"expression":{"id":20226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20215,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"31128:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20218,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"31207:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31216:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"31207:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"expression":{"id":20221,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"31267:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31274:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"31267:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20220,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"31254:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31254:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20224,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"31297:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20216,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"31148:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":20217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31161:28:64","memberName":"computeProportionalAmountsIn","nodeType":"MemberAccess","referencedDeclaration":11049,"src":"31148:41:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256) pure returns (uint256[] memory)"}},"id":20225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31148:175:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"31128:195:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20227,"nodeType":"ExpressionStatement","src":"31128:195:64"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20410,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"33900:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":20411,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33915:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20412,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33922:15:64","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":4599,"src":"33915:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33900:37:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20421,"nodeType":"IfStatement","src":"33896:133:64","trueBody":{"id":20420,"nodeType":"Block","src":"33939:90:64","statements":[{"errorCall":{"arguments":[{"id":20415,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"33981:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20416,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"33995:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20417,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34002:15:64","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":4599,"src":"33995:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20414,"name":"BptAmountOutBelowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3347,"src":"33960:20:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":20418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33960:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":20419,"nodeType":"RevertStatement","src":"33953:65:64"}]}},{"expression":{"arguments":[{"id":20423,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"34063:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20422,"name":"_ensureValidTradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22273,"src":"34039:23:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":20424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34039:37:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20425,"nodeType":"ExpressionStatement","src":"34039:37:64"},{"body":{"id":20550,"nodeType":"Block","src":"34134:2311:64","statements":[{"assignments":[20438],"declarations":[{"constant":false,"id":20438,"mutability":"mutable","name":"amountInRaw","nameLocation":"34156:11:64","nodeType":"VariableDeclaration","scope":20550,"src":"34148:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20437,"name":"uint256","nodeType":"ElementaryTypeName","src":"34148:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20439,"nodeType":"VariableDeclarationStatement","src":"34148:19:64"},{"id":20484,"nodeType":"Block","src":"34225:976:64","statements":[{"assignments":[20441],"declarations":[{"constant":false,"id":20441,"mutability":"mutable","name":"amountInScaled18","nameLocation":"34251:16:64","nodeType":"VariableDeclaration","scope":20484,"src":"34243:24:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20440,"name":"uint256","nodeType":"ElementaryTypeName","src":"34243:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20445,"initialValue":{"baseExpression":{"id":20442,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20163,"src":"34270:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20444,"indexExpression":{"id":20443,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"34288:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34270:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"34243:47:64"},{"expression":{"arguments":[{"id":20447,"name":"amountInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20441,"src":"34332:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20446,"name":"_ensureValidTradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22273,"src":"34308:23:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":20448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34308:41:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20449,"nodeType":"ExpressionStatement","src":"34308:41:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":20450,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"34456:12:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20452,"indexExpression":{"id":20451,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"34469:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34456:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":20453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34475:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34456:20:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":20482,"nodeType":"Block","src":"34959:228:64","statements":[{"expression":{"id":20480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20476,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20438,"src":"35139:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":20477,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"35153:12:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20479,"indexExpression":{"id":20478,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"35166:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35153:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35139:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20481,"nodeType":"ExpressionStatement","src":"35139:29:64"}]},"id":20483,"nodeType":"IfStatement","src":"34452:735:64","trueBody":{"id":20475,"nodeType":"Block","src":"34478:475:64","statements":[{"expression":{"id":20467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20455,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20438,"src":"34702:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":20458,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"34779:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34788:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"34779:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20461,"indexExpression":{"id":20460,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"34810:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34779:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":20462,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"34838:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34847:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"34838:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20465,"indexExpression":{"id":20464,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"34858:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34838:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20456,"name":"amountInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20441,"src":"34716:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34733:20:64","memberName":"toRawUndoRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6156,"src":"34716:37:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":20466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34716:166:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34702:180:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20468,"nodeType":"ExpressionStatement","src":"34702:180:64"},{"expression":{"id":20473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":20469,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"34905:12:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20471,"indexExpression":{"id":20470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"34918:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"34905:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20472,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20438,"src":"34923:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34905:29:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20474,"nodeType":"ExpressionStatement","src":"34905:29:64"}]}}]},{"assignments":[20487],"declarations":[{"constant":false,"id":20487,"mutability":"mutable","name":"token","nameLocation":"35222:5:64","nodeType":"VariableDeclaration","scope":20550,"src":"35215:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":20486,"nodeType":"UserDefinedTypeName","pathNode":{"id":20485,"name":"IERC20","nameLocations":["35215:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"35215:6:64"},"referencedDeclaration":39274,"src":"35215:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":20492,"initialValue":{"baseExpression":{"expression":{"id":20488,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"35230:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35239:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"35230:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":20491,"indexExpression":{"id":20490,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"35246:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35230:18:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"35215:33:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20493,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20438,"src":"35315:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"expression":{"id":20494,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"35329:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35336:12:64","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"35329:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20497,"indexExpression":{"id":20496,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"35349:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35329:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35315:36:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20509,"nodeType":"IfStatement","src":"35311:142:64","trueBody":{"id":20508,"nodeType":"Block","src":"35353:100:64","statements":[{"errorCall":{"arguments":[{"id":20500,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20487,"src":"35395:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":20501,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20438,"src":"35402:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":20502,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"35415:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35422:12:64","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"35415:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20505,"indexExpression":{"id":20504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"35435:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35415:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20499,"name":"AmountInAboveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"35378:16:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":20506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35378:60:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":20507,"nodeType":"RevertStatement","src":"35371:67:64"}]}},{"expression":{"arguments":[{"id":20511,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20487,"src":"35538:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":20512,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20438,"src":"35545:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20510,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"35528:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":20513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35528:29:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20514,"nodeType":"ExpressionStatement","src":"35528:29:64"},{"expression":{"id":20531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":20515,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"35700:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20517,"indexExpression":{"id":20516,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"35715:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"35700:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20518,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"35719:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"35726:25:64","memberName":"aggregateSwapFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":20141,"src":"35719:32:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":20520,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"35699:53:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20522,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"35807:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"baseExpression":{"id":20523,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"35833:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20525,"indexExpression":{"id":20524,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"35848:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35833:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20526,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"35868:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35875:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"35868:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20528,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20487,"src":"35897:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":20529,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"35920:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20521,"name":"_computeAndChargeAggregateSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21334,"src":"35755:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct PoolData memory,uint256,address,contract IERC20,uint256) returns (uint256,uint256)"}},"id":20530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35755:180:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"35699:236:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20532,"nodeType":"ExpressionStatement","src":"35699:236:64"},{"expression":{"arguments":[{"id":20536,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"36292:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":20537,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"36311:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36320:11:64","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"36311:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20540,"indexExpression":{"id":20539,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"36332:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"36311:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":20541,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20438,"src":"36337:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36311:37:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":20543,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"36351:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36358:25:64","memberName":"aggregateSwapFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":20141,"src":"36351:32:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"36311:72:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20546,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"36401:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":20547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36410:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"36401:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":20533,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"36242:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36251:23:64","memberName":"updateRawAndLiveBalance","nodeType":"MemberAccess","referencedDeclaration":30517,"src":"36242:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,uint256,uint256,enum Rounding) pure"}},"id":20548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36242:192:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20549,"nodeType":"ExpressionStatement","src":"36242:192:64"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20430,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"34107:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":20431,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20171,"src":"34111:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34118:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"34111:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34107:20:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20551,"initializationExpression":{"assignments":[20427],"declarations":[{"constant":false,"id":20427,"mutability":"mutable","name":"i","nameLocation":"34100:1:64","nodeType":"VariableDeclaration","scope":20551,"src":"34092:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20426,"name":"uint256","nodeType":"ElementaryTypeName","src":"34092:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20429,"initialValue":{"hexValue":"30","id":20428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34104:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"34092:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":20435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"34129:3:64","subExpression":{"id":20434,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20427,"src":"34131:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20436,"nodeType":"ExpressionStatement","src":"34129:3:64"},"nodeType":"ForStatement","src":"34087:2358:64"},{"expression":{"arguments":[{"expression":{"id":20553,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"36532:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36539:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"36532:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20555,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20148,"src":"36545:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":20552,"name":"_writePoolBalancesToStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24844,"src":"36504:27:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_PoolData_$4511_memory_ptr_$returns$__$","typeString":"function (address,struct PoolData memory)"}},"id":20556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36504:50:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20557,"nodeType":"ExpressionStatement","src":"36504:50:64"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":20561,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"36765:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20562,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36772:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"36765:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36757:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":20559,"name":"address","nodeType":"ElementaryTypeName","src":"36757:7:64","typeDescriptions":{}}},"id":20563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36757:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":20564,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"36779:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36786:2:64","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4594,"src":"36779:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20566,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20165,"src":"36790:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20558,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38458,"src":"36751:5:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":20567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36751:52:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20568,"nodeType":"ExpressionStatement","src":"36751:52:64"},{"eventCall":{"arguments":[{"expression":{"id":20570,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"36879:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36886:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"36879:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":20572,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"36904:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36911:2:64","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":4594,"src":"36904:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":20574,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"36927:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36934:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"36927:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"arguments":[{"expression":{"id":20577,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20151,"src":"36965:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":20578,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36972:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"36965:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20576,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"36952:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36952:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20580,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20160,"src":"36991:12:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20581,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20194,"src":"37017:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":20569,"name":"LiquidityAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"36851:14:64","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_enum$_AddLiquidityKind_$4589_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,enum AddLiquidityKind,uint256,uint256[] memory,uint256[] memory)"}},"id":20582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36851:190:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20583,"nodeType":"EmitStatement","src":"36846:195:64"}]},"documentation":{"id":20145,"nodeType":"StructuredDocumentation","src":"29703:457:64","text":" @dev Calls the appropriate pool hook and calculates the required inputs and outputs for the operation\n considering the given kind, and updates the Vault's internal accounting. This includes:\n - Setting pool balances\n - Taking debt from the liquidity provider\n - Minting pool tokens\n - Emitting events\n It is non-reentrant, as it performs external calls and updates the Vault's state accordingly."},"id":20585,"implemented":true,"kind":"function","modifiers":[{"id":20157,"kind":"modifierInvocation","modifierName":{"id":20156,"name":"nonReentrant","nameLocations":["30342:12:64"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"30342:12:64"},"nodeType":"ModifierInvocation","src":"30342:12:64"}],"name":"_addLiquidity","nameLocation":"30174:13:64","nodeType":"FunctionDefinition","parameters":{"id":20155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20148,"mutability":"mutable","name":"poolData","nameLocation":"30213:8:64","nodeType":"VariableDeclaration","scope":20585,"src":"30197:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":20147,"nodeType":"UserDefinedTypeName","pathNode":{"id":20146,"name":"PoolData","nameLocations":["30197:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"30197:8:64"},"referencedDeclaration":4511,"src":"30197:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":20151,"mutability":"mutable","name":"params","nameLocation":"30257:6:64","nodeType":"VariableDeclaration","scope":20585,"src":"30231:32:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":20150,"nodeType":"UserDefinedTypeName","pathNode":{"id":20149,"name":"AddLiquidityParams","nameLocations":["30231:18:64"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"30231:18:64"},"referencedDeclaration":4605,"src":"30231:18:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":20154,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"30290:20:64","nodeType":"VariableDeclaration","scope":20585,"src":"30273:37:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20152,"name":"uint256","nodeType":"ElementaryTypeName","src":"30273:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20153,"nodeType":"ArrayTypeName","src":"30273:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"30187:129:64"},"returnParameters":{"id":20168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20160,"mutability":"mutable","name":"amountsInRaw","nameLocation":"30402:12:64","nodeType":"VariableDeclaration","scope":20585,"src":"30385:29:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20158,"name":"uint256","nodeType":"ElementaryTypeName","src":"30385:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20159,"nodeType":"ArrayTypeName","src":"30385:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":20163,"mutability":"mutable","name":"amountsInScaled18","nameLocation":"30445:17:64","nodeType":"VariableDeclaration","scope":20585,"src":"30428:34:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20161,"name":"uint256","nodeType":"ElementaryTypeName","src":"30428:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20162,"nodeType":"ArrayTypeName","src":"30428:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":20165,"mutability":"mutable","name":"bptAmountOut","nameLocation":"30484:12:64","nodeType":"VariableDeclaration","scope":20585,"src":"30476:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20164,"name":"uint256","nodeType":"ElementaryTypeName","src":"30476:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20167,"mutability":"mutable","name":"returnData","nameLocation":"30523:10:64","nodeType":"VariableDeclaration","scope":20585,"src":"30510:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20166,"name":"bytes","nodeType":"ElementaryTypeName","src":"30510:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"30371:172:64"},"scope":22336,"src":"30165:6883:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4285],"body":{"id":20734,"nodeType":"Block","src":"37553:3760:64","statements":[{"expression":{"arguments":[{"expression":{"id":20606,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"37889:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37896:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"37889:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20605,"name":"_ensureUnpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24537,"src":"37873:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":20608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37873:28:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20609,"nodeType":"ExpressionStatement","src":"37873:28:64"},{"assignments":[20612],"declarations":[{"constant":false,"id":20612,"mutability":"mutable","name":"poolData","nameLocation":"38376:8:64","nodeType":"VariableDeclaration","scope":20734,"src":"38360:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":20611,"nodeType":"UserDefinedTypeName","pathNode":{"id":20610,"name":"PoolData","nameLocations":["38360:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"38360:8:64"},"referencedDeclaration":4511,"src":"38360:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"id":20619,"initialValue":{"arguments":[{"expression":{"id":20614,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"38429:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38436:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"38429:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":20616,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"38442:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":20617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"38451:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"38442:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":20613,"name":"_loadPoolDataUpdatingBalancesAndYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"38387:41:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) returns (struct PoolData memory)"}},"id":20618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38387:75:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"nodeType":"VariableDeclarationStatement","src":"38360:102:64"},{"expression":{"arguments":[{"expression":{"expression":{"id":20623,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"38508:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38517:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"38508:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":20625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38524:6:64","memberName":"length","nodeType":"MemberAccess","src":"38508:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":20626,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"38532:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38539:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"38532:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38553:6:64","memberName":"length","nodeType":"MemberAccess","src":"38532:27:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20620,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"38472:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":20622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38485:22:64","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5611,"src":"38472:35:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":20629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38472:88:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20630,"nodeType":"ExpressionStatement","src":"38472:88:64"},{"assignments":[20635],"declarations":[{"constant":false,"id":20635,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"38869:21:64","nodeType":"VariableDeclaration","scope":20734,"src":"38852:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20633,"name":"uint256","nodeType":"ElementaryTypeName","src":"38852:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20634,"nodeType":"ArrayTypeName","src":"38852:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":20644,"initialValue":{"arguments":[{"expression":{"id":20639,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"38963:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38972:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"38963:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20641,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"39007:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39016:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"39007:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"expression":{"id":20636,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"38893:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38900:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"38893:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38914:35:64","memberName":"copyToScaled18ApplyRateRoundUpArray","nodeType":"MemberAccess","referencedDeclaration":6440,"src":"38893:56:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256[] memory) pure returns (uint256[] memory)"}},"id":20643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38893:143:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"38852:184:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20645,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"39130:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39139:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"39130:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39154:31:64","memberName":"shouldCallBeforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28304,"src":"39130:55:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":20648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39130:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20686,"nodeType":"IfStatement","src":"39126:897:64","trueBody":{"id":20685,"nodeType":"Block","src":"39189:834:64","statements":[{"expression":{"arguments":[{"id":20652,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20635,"src":"39265:21:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20653,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"39304:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39308:6:64","memberName":"sender","nodeType":"MemberAccess","src":"39304:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20655,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"39332:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},{"id":20656,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"39356:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"baseExpression":{"id":20657,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"39382:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":20660,"indexExpression":{"expression":{"id":20658,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"39398:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39405:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"39398:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39382:28:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":20649,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"39203:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_HooksConfigLib_$29013_$","typeString":"type(library HooksConfigLib)"}},"id":20651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39218:29:64","memberName":"callBeforeRemoveLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":28838,"src":"39203:44:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_contract$_IHooks_$1887_$returns$__$","typeString":"function (uint256[] memory,address,struct RemoveLiquidityParams memory,struct PoolData memory,contract IHooks)"}},"id":20661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39203:221:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20662,"nodeType":"ExpressionStatement","src":"39203:221:64"},{"expression":{"arguments":[{"baseExpression":{"id":20666,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"39682:18:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":20669,"indexExpression":{"expression":{"id":20667,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"39701:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20668,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39708:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"39701:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39682:31:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"expression":{"id":20670,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"39715:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":20671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39724:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"39715:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":20663,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"39650:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39659:22:64","memberName":"reloadBalancesAndRates","nodeType":"MemberAccess","referencedDeclaration":30410,"src":"39650:31:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),enum Rounding) view"}},"id":20672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39650:85:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20673,"nodeType":"ExpressionStatement","src":"39650:85:64"},{"expression":{"id":20683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20674,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20635,"src":"39833:21:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20678,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"39931:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39940:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"39931:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20680,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"39979:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39988:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"39979:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"expression":{"id":20675,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"39857:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39864:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"39857:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39878:35:64","memberName":"copyToScaled18ApplyRateRoundUpArray","nodeType":"MemberAccess","referencedDeclaration":6440,"src":"39857:56:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256[] memory) pure returns (uint256[] memory)"}},"id":20682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39857:155:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"39833:179:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20684,"nodeType":"ExpressionStatement","src":"39833:179:64"}]}},{"assignments":[20691],"declarations":[{"constant":false,"id":20691,"mutability":"mutable","name":"amountsOutScaled18","nameLocation":"40423:18:64","nodeType":"VariableDeclaration","scope":20734,"src":"40406:35:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20689,"name":"uint256","nodeType":"ElementaryTypeName","src":"40406:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20690,"nodeType":"ArrayTypeName","src":"40406:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":20692,"nodeType":"VariableDeclarationStatement","src":"40406:35:64"},{"expression":{"id":20703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":20693,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20598,"src":"40452:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20694,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20601,"src":"40465:10:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20695,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20691,"src":"40477:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20696,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20603,"src":"40497:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":20697,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"40451:57:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20699,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"40541:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":20700,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"40563:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},{"id":20701,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20635,"src":"40583:21:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":20698,"name":"_removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21241,"src":"40511:16:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct PoolData memory,struct RemoveLiquidityParams memory,uint256[] memory) returns (uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"id":20702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40511:103:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"src":"40451:163:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20704,"nodeType":"ExpressionStatement","src":"40451:163:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20705,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"40816:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40825:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"40816:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40840:30:64","memberName":"shouldCallAfterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28347,"src":"40816:54:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":20708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40816:56:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20733,"nodeType":"IfStatement","src":"40812:495:64","trueBody":{"id":20732,"nodeType":"Block","src":"40874:433:64","statements":[{"assignments":[20711],"declarations":[{"constant":false,"id":20711,"mutability":"mutable","name":"hooksContract","nameLocation":"40956:13:64","nodeType":"VariableDeclaration","scope":20732,"src":"40949:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":20710,"nodeType":"UserDefinedTypeName","pathNode":{"id":20709,"name":"IHooks","nameLocations":["40949:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"40949:6:64"},"referencedDeclaration":1887,"src":"40949:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"id":20716,"initialValue":{"baseExpression":{"id":20712,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"40972:15:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":20715,"indexExpression":{"expression":{"id":20713,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"40988:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"40995:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"40988:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40972:28:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"nodeType":"VariableDeclarationStatement","src":"40949:51:64"},{"expression":{"id":20730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20717,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20601,"src":"41015:10:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20721,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"41098:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":20722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41102:6:64","memberName":"sender","nodeType":"MemberAccess","src":"41098:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":20723,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20691,"src":"41126:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20724,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20601,"src":"41162:10:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":20725,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20598,"src":"41190:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20726,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"41219:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},{"id":20727,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"41243:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":20728,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20711,"src":"41269:13:64","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"expression":{"id":20718,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20612,"src":"41028:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41037:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"41028:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41052:28:64","memberName":"callAfterRemoveLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":28955,"src":"41028:52:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_contract$_IHooks_$1887_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,address,uint256[] memory,uint256[] memory,uint256,struct RemoveLiquidityParams memory,struct PoolData memory,contract IHooks) returns (uint256[] memory)"}},"id":20729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41028:268:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"41015:281:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20731,"nodeType":"ExpressionStatement","src":"41015:281:64"}]}}]},"documentation":{"id":20586,"nodeType":"StructuredDocumentation","src":"37267:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"21457897","id":20735,"implemented":true,"kind":"function","modifiers":[{"id":20592,"kind":"modifierInvocation","modifierName":{"id":20591,"name":"onlyWhenUnlocked","nameLocations":["37399:16:64"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"37399:16:64"},"nodeType":"ModifierInvocation","src":"37399:16:64"},{"arguments":[{"expression":{"id":20594,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20589,"src":"37444:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37451:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"37444:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":20596,"kind":"modifierInvocation","modifierName":{"id":20593,"name":"withInitializedPool","nameLocations":["37424:19:64"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"37424:19:64"},"nodeType":"ModifierInvocation","src":"37424:32:64"}],"name":"removeLiquidity","nameLocation":"37307:15:64","nodeType":"FunctionDefinition","parameters":{"id":20590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20589,"mutability":"mutable","name":"params","nameLocation":"37361:6:64","nodeType":"VariableDeclaration","scope":20735,"src":"37332:35:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":20588,"nodeType":"UserDefinedTypeName","pathNode":{"id":20587,"name":"RemoveLiquidityParams","nameLocations":["37332:21:64"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"37332:21:64"},"referencedDeclaration":4626,"src":"37332:21:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"}],"src":"37322:51:64"},"returnParameters":{"id":20604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20598,"mutability":"mutable","name":"bptAmountIn","nameLocation":"37482:11:64","nodeType":"VariableDeclaration","scope":20735,"src":"37474:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20597,"name":"uint256","nodeType":"ElementaryTypeName","src":"37474:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20601,"mutability":"mutable","name":"amountsOut","nameLocation":"37512:10:64","nodeType":"VariableDeclaration","scope":20735,"src":"37495:27:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20599,"name":"uint256","nodeType":"ElementaryTypeName","src":"37495:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20600,"nodeType":"ArrayTypeName","src":"37495:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":20603,"mutability":"mutable","name":"returnData","nameLocation":"37537:10:64","nodeType":"VariableDeclaration","scope":20735,"src":"37524:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20602,"name":"bytes","nodeType":"ElementaryTypeName","src":"37524:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"37473:75:64"},"scope":22336,"src":"37298:4015:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21240,"nodeType":"Block","src":"42175:7719:64","statements":[{"assignments":[20762],"declarations":[{"constant":false,"id":20762,"mutability":"mutable","name":"locals","nameLocation":"42208:6:64","nodeType":"VariableDeclaration","scope":21240,"src":"42185:29:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals"},"typeName":{"id":20761,"nodeType":"UserDefinedTypeName","pathNode":{"id":20760,"name":"LiquidityLocals","nameLocations":["42185:15:64"],"nodeType":"IdentifierPath","referencedDeclaration":20144,"src":"42185:15:64"},"referencedDeclaration":20144,"src":"42185:15:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_storage_ptr","typeString":"struct Vault.LiquidityLocals"}},"visibility":"internal"}],"id":20763,"nodeType":"VariableDeclarationStatement","src":"42185:29:64"},{"expression":{"id":20770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20764,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"42224:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"42231:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"42224:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":20767,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"42243:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42252:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"42243:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":20769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42259:6:64","memberName":"length","nodeType":"MemberAccess","src":"42243:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42224:41:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20771,"nodeType":"ExpressionStatement","src":"42224:41:64"},{"expression":{"id":20779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20772,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"42275:13:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20776,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"42305:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20777,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42312:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"42305:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"42291:13:64","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":20773,"name":"uint256","nodeType":"ElementaryTypeName","src":"42295:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20774,"nodeType":"ArrayTypeName","src":"42295:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":20778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42291:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"42275:47:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20780,"nodeType":"ExpressionStatement","src":"42275:47:64"},{"assignments":[20785],"declarations":[{"constant":false,"id":20785,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"42449:14:64","nodeType":"VariableDeclaration","scope":21240,"src":"42432:31:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20783,"name":"uint256","nodeType":"ElementaryTypeName","src":"42432:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20784,"nodeType":"ArrayTypeName","src":"42432:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":20786,"nodeType":"VariableDeclarationStatement","src":"42432:31:64"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"id":20791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20787,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"42478:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42485:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4623,"src":"42478:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20789,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"42493:19:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":20790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"42513:12:64","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4606,"src":"42493:32:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"src":"42478:47:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"id":20875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20871,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"43954:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43961:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4623,"src":"43954:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20873,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"43969:19:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":20874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"43989:21:64","memberName":"SINGLE_TOKEN_EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4607,"src":"43969:41:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"src":"43954:56:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"id":20935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20931,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"44748:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44755:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4623,"src":"44748:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20933,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"44763:19:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":20934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"44783:22:64","memberName":"SINGLE_TOKEN_EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4608,"src":"44763:42:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"src":"44748:57:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"id":21001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":20997,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"45538:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45545:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4623,"src":"45538:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":20999,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"45553:19:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":21000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"45573:6:64","memberName":"CUSTOM","nodeType":"MemberAccess","referencedDeclaration":4609,"src":"45553:26:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"src":"45538:41:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21035,"nodeType":"Block","src":"46126:60:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21032,"name":"InvalidRemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3356,"src":"46147:26:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46147:28:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21034,"nodeType":"RevertStatement","src":"46140:35:64"}]},"id":21036,"nodeType":"IfStatement","src":"45534:652:64","trueBody":{"id":21031,"nodeType":"Block","src":"45581:539:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":21002,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"45595:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45604:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"45595:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":21006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45619:35:64","memberName":"requireRemoveLiquidityCustomEnabled","nodeType":"MemberAccess","referencedDeclaration":29492,"src":"45595:59:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$__$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure"}},"id":21007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45595:61:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21008,"nodeType":"ExpressionStatement","src":"45595:61:64"},{"expression":{"id":21029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":21009,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"45754:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21010,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"45767:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":21011,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"45787:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":21012,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20758,"src":"45803:10:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":21013,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"45753:61:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":21019,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45907:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45911:6:64","memberName":"sender","nodeType":"MemberAccess","src":"45907:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":21021,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"45939:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45946:14:64","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":4617,"src":"45939:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21023,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20745,"src":"45982:21:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":21024,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"46025:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21025,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46034:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"46025:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":21026,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"46076:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46083:8:64","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4625,"src":"46076:15:64","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"expression":{"id":21015,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"45832:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45839:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"45832:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21014,"name":"IPoolLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"45817:14:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPoolLiquidity_$1943_$","typeString":"type(contract IPoolLiquidity)"}},"id":21017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45817:27:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPoolLiquidity_$1943","typeString":"contract IPoolLiquidity"}},"id":21018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45862:23:64","memberName":"onRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":1942,"src":"45817:68:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (address,uint256,uint256[] memory,uint256[] memory,bytes memory) external returns (uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"id":21028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45817:292:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"src":"45753:356:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21030,"nodeType":"ExpressionStatement","src":"45753:356:64"}]}},"id":21037,"nodeType":"IfStatement","src":"44744:1442:64","trueBody":{"id":20996,"nodeType":"Block","src":"44807:721:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20936,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"44821:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44830:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"44821:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44845:33:64","memberName":"requireUnbalancedLiquidityEnabled","nodeType":"MemberAccess","referencedDeclaration":29368,"src":"44821:57:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$__$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure"}},"id":20941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44821:59:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20942,"nodeType":"ExpressionStatement","src":"44821:59:64"},{"expression":{"id":20945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20943,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"44894:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20944,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20745,"src":"44915:21:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"44894:42:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20946,"nodeType":"ExpressionStatement","src":"44894:42:64"},{"expression":{"id":20955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20947,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"44950:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"44957:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"44950:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20952,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"45003:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45010:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"45003:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":20950,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"44970:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":20951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44983:19:64","memberName":"getSingleInputIndex","nodeType":"MemberAccess","referencedDeclaration":5692,"src":"44970:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256)"}},"id":20954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44970:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44950:74:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20956,"nodeType":"ExpressionStatement","src":"44950:74:64"},{"expression":{"id":20966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":20957,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"45038:13:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20960,"indexExpression":{"expression":{"id":20958,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"45052:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45059:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"45052:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"45038:32:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":20961,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"45073:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45080:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"45073:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20965,"indexExpression":{"expression":{"id":20963,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"45094:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45101:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"45094:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"45073:39:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45038:74:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20967,"nodeType":"ExpressionStatement","src":"45038:74:64"},{"expression":{"id":20994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":20968,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"45128:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20969,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"45141:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":20970,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"45127:29:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20973,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"45231:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45240:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"45231:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20975,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"45278:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45285:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"45278:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":20977,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"45313:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20980,"indexExpression":{"expression":{"id":20978,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"45332:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45339:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"45332:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"45313:37:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":20982,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"45381:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20983,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45388:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"45381:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20981,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"45368:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45368:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20985,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"45411:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45420:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"45411:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45435:26:64","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"45411:50:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":20988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45411:52:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":20990,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"45491:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45498:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"45491:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20989,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"45481:9:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":20992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45481:22:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":20971,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"45159:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":20972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45172:41:64","memberName":"computeRemoveLiquiditySingleTokenExactOut","nodeType":"MemberAccess","referencedDeclaration":11553,"src":"45159:54:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":20993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45159:358:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"45127:390:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20995,"nodeType":"ExpressionStatement","src":"45127:390:64"}]}},"id":21038,"nodeType":"IfStatement","src":"43950:2236:64","trueBody":{"id":20930,"nodeType":"Block","src":"44012:726:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20876,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"44026:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44035:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"44026:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44050:33:64","memberName":"requireUnbalancedLiquidityEnabled","nodeType":"MemberAccess","referencedDeclaration":29368,"src":"44026:57:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$__$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure"}},"id":20881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44026:59:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20882,"nodeType":"ExpressionStatement","src":"44026:59:64"},{"expression":{"id":20886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20883,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"44099:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20884,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"44113:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44120:14:64","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":4617,"src":"44113:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44099:35:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20887,"nodeType":"ExpressionStatement","src":"44099:35:64"},{"expression":{"id":20890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20888,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"44148:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":20889,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20745,"src":"44169:21:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"44148:42:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20891,"nodeType":"ExpressionStatement","src":"44148:42:64"},{"expression":{"id":20900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":20892,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"44204:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"44211:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"44204:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20897,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"44257:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44264:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"44257:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":20895,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"44224:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":20896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44237:19:64","memberName":"getSingleInputIndex","nodeType":"MemberAccess","referencedDeclaration":5692,"src":"44224:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256)"}},"id":20899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44224:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44204:74:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20901,"nodeType":"ExpressionStatement","src":"44204:74:64"},{"expression":{"id":20928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":20902,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"44294:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20905,"indexExpression":{"expression":{"id":20903,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"44313:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44320:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"44313:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"44294:37:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20906,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"44333:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":20907,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"44293:55:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20910,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"44443:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44452:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"44443:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":20912,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"44494:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44501:10:64","memberName":"tokenIndex","nodeType":"MemberAccess","referencedDeclaration":20143,"src":"44494:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20914,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"44533:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":20916,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"44579:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44586:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"44579:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20915,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"44566:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44566:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20919,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"44613:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44622:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"44613:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44637:26:64","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"44613:50:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":20922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44613:52:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":20924,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"44697:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44704:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"44697:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20923,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"44687:9:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":20926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44687:22:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":20908,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"44351:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":20909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44381:40:64","memberName":"computeRemoveLiquiditySingleTokenExactIn","nodeType":"MemberAccess","referencedDeclaration":11656,"src":"44351:70:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":20927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44351:376:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"44293:434:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":20929,"nodeType":"ExpressionStatement","src":"44293:434:64"}]}},"id":21039,"nodeType":"IfStatement","src":"42474:3712:64","trueBody":{"id":20870,"nodeType":"Block","src":"42527:1417:64","statements":[{"expression":{"id":20795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20792,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"42541:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":20793,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"42555:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42562:14:64","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":4617,"src":"42555:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42541:35:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20796,"nodeType":"ExpressionStatement","src":"42541:35:64"},{"expression":{"id":20804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20797,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"42590:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20801,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"42621:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42628:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"42621:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":20800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"42607:13:64","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":20798,"name":"uint256","nodeType":"ElementaryTypeName","src":"42611:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20799,"nodeType":"ArrayTypeName","src":"42611:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":20803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42607:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"42590:48:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20805,"nodeType":"ExpressionStatement","src":"42590:48:64"},{"expression":{"id":20817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":20806,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"42652:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":20809,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"42733:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42742:20:64","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"42733:29:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"expression":{"id":20812,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"42793:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42800:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"42793:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":20811,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"42780:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":20814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42780:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":20815,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"42823:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":20807,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"42673:12:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":20808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42686:29:64","memberName":"computeProportionalAmountsOut","nodeType":"MemberAccess","referencedDeclaration":11099,"src":"42673:42:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256) pure returns (uint256[] memory)"}},"id":20816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42673:175:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"42652:196:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20818,"nodeType":"ExpressionStatement","src":"42652:196:64"},{"condition":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20822,"name":"_sessionIdSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27905,"src":"43546:14:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":20823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43546:16:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":20824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43563:5:64","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"43546:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":20825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43546:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":20826,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"43572:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":20827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43579:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"43572:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":20819,"name":"_addLiquidityCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27894,"src":"43519:19:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function () view returns (UintToAddressToBooleanMappingSlot)"}},"id":20820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43519:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"id":20821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43541:4:64","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6669,"src":"43519:26:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$_t_uint256_$_t_address_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function (UintToAddressToBooleanMappingSlot,uint256,address) view returns (bool)"}},"id":20828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43519:65:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20869,"nodeType":"IfStatement","src":"43515:419:64","trueBody":{"id":20868,"nodeType":"Block","src":"43586:348:64","statements":[{"assignments":[20830],"declarations":[{"constant":false,"id":20830,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"43612:17:64","nodeType":"VariableDeclaration","scope":20868,"src":"43604:25:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20829,"name":"uint256","nodeType":"ElementaryTypeName","src":"43604:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20835,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":20831,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"43632:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":20832,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43641:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"43632:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":20833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43656:26:64","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"43632:50:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":20834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43632:52:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"43604:80:64"},{"body":{"id":20866,"nodeType":"Block","src":"43749:171:64","statements":[{"expression":{"id":20856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":20847,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"43771:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20849,"indexExpression":{"id":20848,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20837,"src":"43786:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43771:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":20854,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20830,"src":"43819:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":20850,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"43791:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20852,"indexExpression":{"id":20851,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20837,"src":"43810:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"43791:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43813:5:64","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"43791:27:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":20855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43791:46:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43771:66:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20857,"nodeType":"ExpressionStatement","src":"43771:66:64"},{"expression":{"id":20864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":20858,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"43859:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20860,"indexExpression":{"id":20859,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20837,"src":"43878:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"43859:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"baseExpression":{"id":20861,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"43884:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":20863,"indexExpression":{"id":20862,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20837,"src":"43899:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"43884:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43859:42:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20865,"nodeType":"ExpressionStatement","src":"43859:42:64"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":20843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":20840,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20837,"src":"43722:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":20841,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"43726:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":20842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43733:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"43726:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43722:20:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":20867,"initializationExpression":{"assignments":[20837],"declarations":[{"constant":false,"id":20837,"mutability":"mutable","name":"i","nameLocation":"43715:1:64","nodeType":"VariableDeclaration","scope":20867,"src":"43707:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20836,"name":"uint256","nodeType":"ElementaryTypeName","src":"43707:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":20839,"initialValue":{"hexValue":"30","id":20838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43719:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"43707:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":20845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"43744:3:64","subExpression":{"id":20844,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20837,"src":"43746:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20846,"nodeType":"ExpressionStatement","src":"43744:3:64"},"nodeType":"ForStatement","src":"43702:218:64"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21040,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"46200:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":21041,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"46214:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46221:14:64","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":4617,"src":"46214:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"46200:35:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21051,"nodeType":"IfStatement","src":"46196:128:64","trueBody":{"id":21050,"nodeType":"Block","src":"46237:87:64","statements":[{"errorCall":{"arguments":[{"id":21045,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"46278:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":21046,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"46291:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46298:14:64","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":4617,"src":"46291:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21044,"name":"BptAmountInAboveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"46258:19:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":21048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46258:55:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21049,"nodeType":"RevertStatement","src":"46251:62:64"}]}},{"expression":{"arguments":[{"id":21053,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"46358:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21052,"name":"_ensureValidTradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22273,"src":"46334:23:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":21054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46334:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21055,"nodeType":"ExpressionStatement","src":"46334:36:64"},{"body":{"id":21181,"nodeType":"Block","src":"46428:2382:64","statements":[{"assignments":[21068],"declarations":[{"constant":false,"id":21068,"mutability":"mutable","name":"amountOutRaw","nameLocation":"46450:12:64","nodeType":"VariableDeclaration","scope":21181,"src":"46442:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21067,"name":"uint256","nodeType":"ElementaryTypeName","src":"46442:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21069,"nodeType":"VariableDeclarationStatement","src":"46442:20:64"},{"id":21114,"nodeType":"Block","src":"46521:981:64","statements":[{"assignments":[21071],"declarations":[{"constant":false,"id":21071,"mutability":"mutable","name":"amountOutScaled18","nameLocation":"46547:17:64","nodeType":"VariableDeclaration","scope":21114,"src":"46539:25:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21070,"name":"uint256","nodeType":"ElementaryTypeName","src":"46539:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21075,"initialValue":{"baseExpression":{"id":21072,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20756,"src":"46567:18:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21074,"indexExpression":{"id":21073,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"46586:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"46567:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"46539:49:64"},{"expression":{"arguments":[{"id":21077,"name":"amountOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21071,"src":"46630:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21076,"name":"_ensureValidTradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22273,"src":"46606:23:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":21078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46606:42:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21079,"nodeType":"ExpressionStatement","src":"46606:42:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":21080,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"46755:13:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21082,"indexExpression":{"id":21081,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"46769:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"46755:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":21083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46775:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"46755:21:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21112,"nodeType":"Block","src":"47257:231:64","statements":[{"expression":{"id":21110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21106,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21068,"src":"47438:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":21107,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"47453:13:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21109,"indexExpression":{"id":21108,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"47467:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47453:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47438:31:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21111,"nodeType":"ExpressionStatement","src":"47438:31:64"}]},"id":21113,"nodeType":"IfStatement","src":"46751:737:64","trueBody":{"id":21105,"nodeType":"Block","src":"46778:473:64","statements":[{"expression":{"id":21097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21085,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21068,"src":"46995:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":21088,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"47076:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47085:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"47076:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21091,"indexExpression":{"id":21090,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"47107:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47076:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":21092,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"47135:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47144:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"47135:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21095,"indexExpression":{"id":21094,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"47155:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47135:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21086,"name":"amountOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21071,"src":"47010:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47028:22:64","memberName":"toRawUndoRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6135,"src":"47010:40:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47010:169:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"46995:184:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21098,"nodeType":"ExpressionStatement","src":"46995:184:64"},{"expression":{"id":21103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21099,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"47201:13:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21101,"indexExpression":{"id":21100,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"47215:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"47201:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21102,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21068,"src":"47220:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47201:31:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21104,"nodeType":"ExpressionStatement","src":"47201:31:64"}]}}]},{"assignments":[21117],"declarations":[{"constant":false,"id":21117,"mutability":"mutable","name":"token","nameLocation":"47523:5:64","nodeType":"VariableDeclaration","scope":21181,"src":"47516:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":21116,"nodeType":"UserDefinedTypeName","pathNode":{"id":21115,"name":"IERC20","nameLocations":["47516:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"47516:6:64"},"referencedDeclaration":39274,"src":"47516:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":21122,"initialValue":{"baseExpression":{"expression":{"id":21118,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"47531:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47540:6:64","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"47531:15:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":21121,"indexExpression":{"id":21120,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"47547:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47531:18:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"47516:33:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21123,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21068,"src":"47615:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"expression":{"id":21124,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"47630:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47637:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"47630:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21127,"indexExpression":{"id":21126,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"47651:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47630:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47615:38:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21139,"nodeType":"IfStatement","src":"47611:147:64","trueBody":{"id":21138,"nodeType":"Block","src":"47655:103:64","statements":[{"errorCall":{"arguments":[{"id":21130,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21117,"src":"47698:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":21131,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21068,"src":"47705:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":21132,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"47719:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47726:13:64","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"47719:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21135,"indexExpression":{"id":21134,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"47740:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47719:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21129,"name":"AmountOutBelowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"47680:17:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":21136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47680:63:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21137,"nodeType":"RevertStatement","src":"47673:70:64"}]}},{"expression":{"arguments":[{"id":21141,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21117,"src":"47846:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":21142,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21068,"src":"47853:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21140,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"47832:13:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":21143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47832:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21144,"nodeType":"ExpressionStatement","src":"47832:34:64"},{"expression":{"id":21161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":21145,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"48009:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21147,"indexExpression":{"id":21146,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"48024:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"48009:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":21148,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"48028:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":21149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48035:25:64","memberName":"aggregateSwapFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":20141,"src":"48028:32:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21150,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"48008:53:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21152,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"48116:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"baseExpression":{"id":21153,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"48142:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21155,"indexExpression":{"id":21154,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"48157:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"48142:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":21156,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"48177:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48184:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"48177:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21158,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21117,"src":"48206:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":21159,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"48229:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21151,"name":"_computeAndChargeAggregateSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21334,"src":"48064:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct PoolData memory,uint256,address,contract IERC20,uint256) returns (uint256,uint256)"}},"id":21160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48064:180:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"48008:236:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21162,"nodeType":"ExpressionStatement","src":"48008:236:64"},{"expression":{"arguments":[{"id":21166,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"48654:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":21167,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"48673:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48682:11:64","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"48673:20:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21170,"indexExpression":{"id":21169,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"48694:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"48673:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21171,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21068,"src":"48700:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":21172,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"48715:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":21173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48722:25:64","memberName":"aggregateSwapFeeAmountRaw","nodeType":"MemberAccess","referencedDeclaration":20141,"src":"48715:32:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"48700:47:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21175,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"48699:49:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"48673:75:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":21177,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"48766:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":21178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"48775:10:64","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"48766:19:64","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":21163,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"48604:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48613:23:64","memberName":"updateRawAndLiveBalance","nodeType":"MemberAccess","referencedDeclaration":30517,"src":"48604:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,uint256,uint256,enum Rounding) pure"}},"id":21179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48604:195:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21180,"nodeType":"ExpressionStatement","src":"48604:195:64"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21060,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"46401:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":21061,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20762,"src":"46405:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityLocals_$20144_memory_ptr","typeString":"struct Vault.LiquidityLocals memory"}},"id":21062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46412:9:64","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":20139,"src":"46405:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"46401:20:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21182,"initializationExpression":{"assignments":[21057],"declarations":[{"constant":false,"id":21057,"mutability":"mutable","name":"i","nameLocation":"46394:1:64","nodeType":"VariableDeclaration","scope":21182,"src":"46386:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21056,"name":"uint256","nodeType":"ElementaryTypeName","src":"46386:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21059,"initialValue":{"hexValue":"30","id":21058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46398:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"46386:13:64"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":21065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"46423:3:64","subExpression":{"id":21064,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21057,"src":"46425:1:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21066,"nodeType":"ExpressionStatement","src":"46423:3:64"},"nodeType":"ForStatement","src":"46381:2429:64"},{"expression":{"arguments":[{"expression":{"id":21184,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"48897:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21185,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48904:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"48897:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21186,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20739,"src":"48910:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":21183,"name":"_writePoolBalancesToStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24844,"src":"48869:27:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_PoolData_$4511_memory_ptr_$returns$__$","typeString":"function (address,struct PoolData memory)"}},"id":21187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48869:50:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21188,"nodeType":"ExpressionStatement","src":"48869:50:64"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":21192,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49070:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49077:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"49070:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"49062:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21190,"name":"address","nodeType":"ElementaryTypeName","src":"49062:7:64","typeDescriptions":{}}},"id":21194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49062:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":21195,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49084:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49091:4:64","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4615,"src":"49084:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":21197,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"49097:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49101:6:64","memberName":"sender","nodeType":"MemberAccess","src":"49097:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21199,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"49109:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21189,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38827,"src":"49046:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":21200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49046:75:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21201,"nodeType":"ExpressionStatement","src":"49046:75:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":21202,"name":"_isQueryContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25144,"src":"49136:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":21203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49136:17:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21213,"nodeType":"IfStatement","src":"49132:189:64","trueBody":{"id":21212,"nodeType":"Block","src":"49155:166:64","statements":[{"expression":{"arguments":[{"expression":{"id":21205,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49272:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49279:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"49272:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":21207,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49285:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49292:4:64","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4615,"src":"49285:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21209,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"49298:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21204,"name":"_queryModeBalanceIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38387,"src":"49246:25:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":21210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49246:64:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21211,"nodeType":"ExpressionStatement","src":"49246:64:64"}]}},{"expression":{"arguments":[{"arguments":[{"expression":{"id":21217,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49605:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49612:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"49605:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"49597:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21215,"name":"address","nodeType":"ElementaryTypeName","src":"49597:7:64","typeDescriptions":{}}},"id":21219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49597:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":21220,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49619:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49626:4:64","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4615,"src":"49619:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21222,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20750,"src":"49632:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21214,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38621,"src":"49591:5:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":21223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49591:53:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21224,"nodeType":"ExpressionStatement","src":"49591:53:64"},{"eventCall":{"arguments":[{"expression":{"id":21226,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49722:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49729:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"49722:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":21228,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49747:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49754:4:64","memberName":"from","nodeType":"MemberAccess","referencedDeclaration":4615,"src":"49747:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":21230,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49772:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49779:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4623,"src":"49772:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"arguments":[{"expression":{"id":21233,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20742,"src":"49810:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":21234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49817:4:64","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"49810:11:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21232,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"49797:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":21235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49797:25:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21236,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20753,"src":"49836:13:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":21237,"name":"swapFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20785,"src":"49863:14:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":21225,"name":"LiquidityRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"49692:16:64","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_enum$_RemoveLiquidityKind_$4610_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,enum RemoveLiquidityKind,uint256,uint256[] memory,uint256[] memory)"}},"id":21238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49692:195:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21239,"nodeType":"EmitStatement","src":"49687:200:64"}]},"documentation":{"id":20736,"nodeType":"StructuredDocumentation","src":"41319:460:64","text":" @dev Calls the appropriate pool hook and calculates the required inputs and outputs for the operation\n considering the given kind, and updates the Vault's internal accounting. This includes:\n - Setting pool balances\n - Supplying credit to the liquidity provider\n - Burning pool tokens\n - Emitting events\n It is non-reentrant, as it performs external calls and updates the Vault's state accordingly."},"id":21241,"implemented":true,"kind":"function","modifiers":[{"id":20748,"kind":"modifierInvocation","modifierName":{"id":20747,"name":"nonReentrant","nameLocations":["41968:12:64"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"41968:12:64"},"nodeType":"ModifierInvocation","src":"41968:12:64"}],"name":"_removeLiquidity","nameLocation":"41793:16:64","nodeType":"FunctionDefinition","parameters":{"id":20746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20739,"mutability":"mutable","name":"poolData","nameLocation":"41835:8:64","nodeType":"VariableDeclaration","scope":21241,"src":"41819:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":20738,"nodeType":"UserDefinedTypeName","pathNode":{"id":20737,"name":"PoolData","nameLocations":["41819:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"41819:8:64"},"referencedDeclaration":4511,"src":"41819:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":20742,"mutability":"mutable","name":"params","nameLocation":"41882:6:64","nodeType":"VariableDeclaration","scope":21241,"src":"41853:35:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":20741,"nodeType":"UserDefinedTypeName","pathNode":{"id":20740,"name":"RemoveLiquidityParams","nameLocations":["41853:21:64"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"41853:21:64"},"referencedDeclaration":4626,"src":"41853:21:64","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":20745,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"41915:21:64","nodeType":"VariableDeclaration","scope":21241,"src":"41898:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20743,"name":"uint256","nodeType":"ElementaryTypeName","src":"41898:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20744,"nodeType":"ArrayTypeName","src":"41898:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"41809:133:64"},"returnParameters":{"id":20759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20750,"mutability":"mutable","name":"bptAmountIn","nameLocation":"42019:11:64","nodeType":"VariableDeclaration","scope":21241,"src":"42011:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20749,"name":"uint256","nodeType":"ElementaryTypeName","src":"42011:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20753,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"42061:13:64","nodeType":"VariableDeclaration","scope":21241,"src":"42044:30:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20751,"name":"uint256","nodeType":"ElementaryTypeName","src":"42044:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20752,"nodeType":"ArrayTypeName","src":"42044:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":20756,"mutability":"mutable","name":"amountsOutScaled18","nameLocation":"42105:18:64","nodeType":"VariableDeclaration","scope":21241,"src":"42088:35:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20754,"name":"uint256","nodeType":"ElementaryTypeName","src":"42088:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20755,"nodeType":"ArrayTypeName","src":"42088:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":20758,"mutability":"mutable","name":"returnData","nameLocation":"42150:10:64","nodeType":"VariableDeclaration","scope":21241,"src":"42137:23:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":20757,"name":"bytes","nodeType":"ElementaryTypeName","src":"42137:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"41997:173:64"},"scope":22336,"src":"41784:8110:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":21333,"nodeType":"Block","src":"50773:2073:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21261,"name":"totalSwapFeeAmountScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21247,"src":"50869:26:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":21262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"50898:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"50869:30:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21332,"nodeType":"IfStatement","src":"50865:1975:64","trueBody":{"id":21331,"nodeType":"Block","src":"50901:1939:64","statements":[{"expression":{"id":21276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21264,"name":"totalSwapFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21257,"src":"51199:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":21267,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21245,"src":"51290:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"51299:21:64","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"51290:30:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21270,"indexExpression":{"id":21269,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21254,"src":"51321:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"51290:37:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":21271,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21245,"src":"51345:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"51354:10:64","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"51345:19:64","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":21274,"indexExpression":{"id":21273,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21254,"src":"51365:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"51345:26:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21265,"name":"totalSwapFeeAmountScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21247,"src":"51223:26:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51250:22:64","memberName":"toRawUndoRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6135,"src":"51223:49:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":21275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51223:162:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"51199:186:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21277,"nodeType":"ExpressionStatement","src":"51199:186:64"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":21283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":21278,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21245,"src":"51580:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"51589:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"51580:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":21280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51604:20:64","memberName":"isPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":29305,"src":"51580:44:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":21281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51580:46:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":21282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"51630:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"51580:55:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21330,"nodeType":"IfStatement","src":"51576:1254:64","trueBody":{"id":21329,"nodeType":"Block","src":"51637:1193:64","statements":[{"assignments":[21285],"declarations":[{"constant":false,"id":21285,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"51663:26:64","nodeType":"VariableDeclaration","scope":21329,"src":"51655:34:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21284,"name":"uint256","nodeType":"ElementaryTypeName","src":"51655:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21290,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":21286,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21245,"src":"51692:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":21287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"51701:14:64","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"51692:23:64","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":21288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51716:29:64","memberName":"getAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29661,"src":"51692:53:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":21289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51692:55:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"51655:92:64"},{"expression":{"id":21296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21291,"name":"aggregateSwapFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21259,"src":"52052:25:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21294,"name":"aggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21285,"src":"52110:26:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21292,"name":"totalSwapFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21257,"src":"52080:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52102:7:64","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"52080:29:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":21295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52080:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52052:85:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21297,"nodeType":"ExpressionStatement","src":"52052:85:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21298,"name":"aggregateSwapFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21259,"src":"52236:25:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":21299,"name":"totalSwapFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21257,"src":"52264:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52236:49:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21305,"nodeType":"IfStatement","src":"52232:137:64","trueBody":{"id":21304,"nodeType":"Block","src":"52287:82:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":21301,"name":"ProtocolFeesExceedTotalCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3389,"src":"52316:32:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":21302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52316:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21303,"nodeType":"RevertStatement","src":"52309:41:64"}]}},{"assignments":[21307],"declarations":[{"constant":false,"id":21307,"mutability":"mutable","name":"currentPackedBalance","nameLocation":"52567:20:64","nodeType":"VariableDeclaration","scope":21329,"src":"52559:28:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21306,"name":"bytes32","nodeType":"ElementaryTypeName","src":"52559:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":21313,"initialValue":{"baseExpression":{"baseExpression":{"id":21308,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"52590:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":21310,"indexExpression":{"id":21309,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21249,"src":"52611:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"52590:26:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":21312,"indexExpression":{"id":21311,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21252,"src":"52617:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"52590:33:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"52559:64:64"},{"expression":{"id":21327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":21314,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"52641:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":21317,"indexExpression":{"id":21315,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21249,"src":"52662:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"52641:26:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":21318,"indexExpression":{"id":21316,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21252,"src":"52668:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"52641:33:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21321,"name":"currentPackedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21307,"src":"52733:20:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52754:13:64","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"52733:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52733:36:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21324,"name":"aggregateSwapFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21259,"src":"52772:25:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"52733:64:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21319,"name":"currentPackedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21307,"src":"52677:20:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52698:13:64","memberName":"setBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5883,"src":"52677:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":21326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52677:138:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"52641:174:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21328,"nodeType":"ExpressionStatement","src":"52641:174:64"}]}}]}}]},"documentation":{"id":21242,"nodeType":"StructuredDocumentation","src":"49900:589:64","text":" @dev Preconditions: poolConfigBits, decimalScalingFactors, tokenRates in `poolData`.\n Side effects: updates `_aggregateFeeAmounts` storage.\n Note that this computes the aggregate total of the protocol fees and stores it, without emitting any events.\n Splitting the fees and event emission occur during fee collection.\n Should only be called in a non-reentrant context.\n @return totalSwapFeeAmountRaw Total swap fees raw (LP + aggregate protocol fees)\n @return aggregateSwapFeeAmountRaw Sum of protocol and pool creator fees raw"},"id":21334,"implemented":true,"kind":"function","modifiers":[],"name":"_computeAndChargeAggregateSwapFees","nameLocation":"50503:34:64","nodeType":"FunctionDefinition","parameters":{"id":21255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21245,"mutability":"mutable","name":"poolData","nameLocation":"50563:8:64","nodeType":"VariableDeclaration","scope":21334,"src":"50547:24:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":21244,"nodeType":"UserDefinedTypeName","pathNode":{"id":21243,"name":"PoolData","nameLocations":["50547:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"50547:8:64"},"referencedDeclaration":4511,"src":"50547:8:64","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":21247,"mutability":"mutable","name":"totalSwapFeeAmountScaled18","nameLocation":"50589:26:64","nodeType":"VariableDeclaration","scope":21334,"src":"50581:34:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21246,"name":"uint256","nodeType":"ElementaryTypeName","src":"50581:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21249,"mutability":"mutable","name":"pool","nameLocation":"50633:4:64","nodeType":"VariableDeclaration","scope":21334,"src":"50625:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21248,"name":"address","nodeType":"ElementaryTypeName","src":"50625:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21252,"mutability":"mutable","name":"token","nameLocation":"50654:5:64","nodeType":"VariableDeclaration","scope":21334,"src":"50647:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":21251,"nodeType":"UserDefinedTypeName","pathNode":{"id":21250,"name":"IERC20","nameLocations":["50647:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"50647:6:64"},"referencedDeclaration":39274,"src":"50647:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":21254,"mutability":"mutable","name":"index","nameLocation":"50677:5:64","nodeType":"VariableDeclaration","scope":21334,"src":"50669:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21253,"name":"uint256","nodeType":"ElementaryTypeName","src":"50669:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"50537:151:64"},"returnParameters":{"id":21260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21257,"mutability":"mutable","name":"totalSwapFeeAmountRaw","nameLocation":"50715:21:64","nodeType":"VariableDeclaration","scope":21334,"src":"50707:29:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21256,"name":"uint256","nodeType":"ElementaryTypeName","src":"50707:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21259,"mutability":"mutable","name":"aggregateSwapFeeAmountRaw","nameLocation":"50746:25:64","nodeType":"VariableDeclaration","scope":21334,"src":"50738:33:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21258,"name":"uint256","nodeType":"ElementaryTypeName","src":"50738:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"50706:66:64"},"scope":22336,"src":"50494:2352:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4298],"body":{"id":21371,"nodeType":"Block","src":"53265:168:64","statements":[{"assignments":[21354],"declarations":[{"constant":false,"id":21354,"mutability":"mutable","name":"poolTokens","nameLocation":"53291:10:64","nodeType":"VariableDeclaration","scope":21371,"src":"53275:26:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":21352,"nodeType":"UserDefinedTypeName","pathNode":{"id":21351,"name":"IERC20","nameLocations":["53275:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"53275:6:64"},"referencedDeclaration":39274,"src":"53275:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":21353,"nodeType":"ArrayTypeName","src":"53275:8:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":21358,"initialValue":{"baseExpression":{"id":21355,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"53304:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":21357,"indexExpression":{"id":21356,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21337,"src":"53316:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"53304:17:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"53275:46:64"},{"assignments":[21360],"declarations":[{"constant":false,"id":21360,"mutability":"mutable","name":"index","nameLocation":"53340:5:64","nodeType":"VariableDeclaration","scope":21371,"src":"53332:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21359,"name":"uint256","nodeType":"ElementaryTypeName","src":"53332:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21365,"initialValue":{"arguments":[{"id":21362,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21354,"src":"53364:10:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":21363,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21340,"src":"53376:5:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":21361,"name":"_findTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25085,"src":"53348:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_contract$_IERC20_$39274_$returns$_t_uint256_$","typeString":"function (contract IERC20[] memory,contract IERC20) pure returns (uint256)"}},"id":21364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53348:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"53332:50:64"},{"expression":{"components":[{"expression":{"id":21366,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21354,"src":"53401:10:64","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":21367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53412:6:64","memberName":"length","nodeType":"MemberAccess","src":"53401:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21368,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21360,"src":"53420:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21369,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"53400:26:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":21349,"id":21370,"nodeType":"Return","src":"53393:33:64"}]},"documentation":{"id":21335,"nodeType":"StructuredDocumentation","src":"53076:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"c9c1661b","id":21372,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":21343,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21337,"src":"53232:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":21344,"kind":"modifierInvocation","modifierName":{"id":21342,"name":"withRegisteredPool","nameLocations":["53213:18:64"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"53213:18:64"},"nodeType":"ModifierInvocation","src":"53213:24:64"}],"name":"getPoolTokenCountAndIndexOfToken","nameLocation":"53116:32:64","nodeType":"FunctionDefinition","parameters":{"id":21341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21337,"mutability":"mutable","name":"pool","nameLocation":"53166:4:64","nodeType":"VariableDeclaration","scope":21372,"src":"53158:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21336,"name":"address","nodeType":"ElementaryTypeName","src":"53158:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21340,"mutability":"mutable","name":"token","nameLocation":"53187:5:64","nodeType":"VariableDeclaration","scope":21372,"src":"53180:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":21339,"nodeType":"UserDefinedTypeName","pathNode":{"id":21338,"name":"IERC20","nameLocations":["53180:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"53180:6:64"},"referencedDeclaration":39274,"src":"53180:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"53148:50:64"},"returnParameters":{"id":21349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21372,"src":"53247:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21345,"name":"uint256","nodeType":"ElementaryTypeName","src":"53247:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21372,"src":"53256:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21347,"name":"uint256","nodeType":"ElementaryTypeName","src":"53256:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53246:18:64"},"scope":22336,"src":"53107:326:64","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4310],"body":{"id":21394,"nodeType":"Block","src":"53780:78:64","statements":[{"expression":{"arguments":[{"expression":{"id":21385,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"53800:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53804:6:64","memberName":"sender","nodeType":"MemberAccess","src":"53800:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21387,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21375,"src":"53812:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21388,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21377,"src":"53819:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21389,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21379,"src":"53823:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21384,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38711,"src":"53790:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":21390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53790:40:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21391,"nodeType":"ExpressionStatement","src":"53790:40:64"},{"expression":{"hexValue":"74727565","id":21392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"53847:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":21383,"id":21393,"nodeType":"Return","src":"53840:11:64"}]},"documentation":{"id":21373,"nodeType":"StructuredDocumentation","src":"53664:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"beabacc8","id":21395,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"53704:8:64","nodeType":"FunctionDefinition","parameters":{"id":21380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21375,"mutability":"mutable","name":"owner","nameLocation":"53721:5:64","nodeType":"VariableDeclaration","scope":21395,"src":"53713:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21374,"name":"address","nodeType":"ElementaryTypeName","src":"53713:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21377,"mutability":"mutable","name":"to","nameLocation":"53736:2:64","nodeType":"VariableDeclaration","scope":21395,"src":"53728:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21376,"name":"address","nodeType":"ElementaryTypeName","src":"53728:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21379,"mutability":"mutable","name":"amount","nameLocation":"53748:6:64","nodeType":"VariableDeclaration","scope":21395,"src":"53740:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21378,"name":"uint256","nodeType":"ElementaryTypeName","src":"53740:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53712:43:64"},"returnParameters":{"id":21383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21395,"src":"53774:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21381,"name":"bool","nodeType":"ElementaryTypeName","src":"53774:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"53773:6:64"},"scope":22336,"src":"53695:163:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4324],"body":{"id":21427,"nodeType":"Block","src":"54000:137:64","statements":[{"expression":{"arguments":[{"expression":{"id":21410,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"54026:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54030:6:64","memberName":"sender","nodeType":"MemberAccess","src":"54026:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21412,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21400,"src":"54038:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21413,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21398,"src":"54044:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21414,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21404,"src":"54053:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21409,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38827,"src":"54010:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":21415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54010:50:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21416,"nodeType":"ExpressionStatement","src":"54010:50:64"},{"expression":{"arguments":[{"expression":{"id":21418,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"54080:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":21419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54084:6:64","memberName":"sender","nodeType":"MemberAccess","src":"54080:10:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21420,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21400,"src":"54092:4:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21421,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21402,"src":"54098:2:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21422,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21404,"src":"54102:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21417,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38711,"src":"54070:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":21423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54070:39:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21424,"nodeType":"ExpressionStatement","src":"54070:39:64"},{"expression":{"hexValue":"74727565","id":21425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"54126:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":21408,"id":21426,"nodeType":"Return","src":"54119:11:64"}]},"documentation":{"id":21396,"nodeType":"StructuredDocumentation","src":"53864:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"15dacbea","id":21428,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"53904:12:64","nodeType":"FunctionDefinition","parameters":{"id":21405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21398,"mutability":"mutable","name":"spender","nameLocation":"53925:7:64","nodeType":"VariableDeclaration","scope":21428,"src":"53917:15:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21397,"name":"address","nodeType":"ElementaryTypeName","src":"53917:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21400,"mutability":"mutable","name":"from","nameLocation":"53942:4:64","nodeType":"VariableDeclaration","scope":21428,"src":"53934:12:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21399,"name":"address","nodeType":"ElementaryTypeName","src":"53934:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21402,"mutability":"mutable","name":"to","nameLocation":"53956:2:64","nodeType":"VariableDeclaration","scope":21428,"src":"53948:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21401,"name":"address","nodeType":"ElementaryTypeName","src":"53948:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":21404,"mutability":"mutable","name":"amount","nameLocation":"53968:6:64","nodeType":"VariableDeclaration","scope":21428,"src":"53960:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21403,"name":"uint256","nodeType":"ElementaryTypeName","src":"53960:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"53916:59:64"},"returnParameters":{"id":21408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21428,"src":"53994:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21406,"name":"bool","nodeType":"ElementaryTypeName","src":"53994:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"53993:6:64"},"scope":22336,"src":"53895:242:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4337],"body":{"id":21583,"nodeType":"Block","src":"54728:1530:64","statements":[{"assignments":[21453],"declarations":[{"constant":false,"id":21453,"mutability":"mutable","name":"underlyingToken","nameLocation":"54745:15:64","nodeType":"VariableDeclaration","scope":21583,"src":"54738:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":21452,"nodeType":"UserDefinedTypeName","pathNode":{"id":21451,"name":"IERC20","nameLocations":["54738:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"54738:6:64"},"referencedDeclaration":39274,"src":"54738:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":21460,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":21455,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"54770:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"54777:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"54770:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54790:5:64","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"54770:25:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":21458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54770:27:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":21454,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"54763:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":21459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54763:35:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"54738:60:64"},{"expression":{"arguments":[{"expression":{"id":21462,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"54834:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"54841:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"54834:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"arguments":[{"id":21466,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21453,"src":"54863:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":21465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54855:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21464,"name":"address","nodeType":"ElementaryTypeName","src":"54855:7:64","typeDescriptions":{}}},"id":21467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54855:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"}],"id":21461,"name":"_ensureCorrectBufferAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24796,"src":"54808:25:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC4626_$38998_$_t_address_$returns$__$","typeString":"function (contract IERC4626,address) view"}},"id":21468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54808:72:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21469,"nodeType":"ExpressionStatement","src":"54808:72:64"},{"expression":{"arguments":[{"expression":{"id":21471,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"54914:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"54921:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"54914:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"expression":{"id":21473,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"54935:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"54942:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4641,"src":"54935:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21470,"name":"_ensureValidWrapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21602,"src":"54891:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,uint256) view"}},"id":21475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54891:66:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21476,"nodeType":"ExpressionStatement","src":"54891:66:64"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"},"id":21481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21477,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"54972:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"54979:9:64","memberName":"direction","nodeType":"MemberAccess","referencedDeclaration":4636,"src":"54972:16:64","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":21479,"name":"WrappingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4629,"src":"54992:17:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_WrappingDirection_$4629_$","typeString":"type(enum WrappingDirection)"}},"id":21480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55010:6:64","memberName":"UNWRAP","nodeType":"MemberAccess","referencedDeclaration":4628,"src":"54992:24:64","typeDescriptions":{"typeIdentifier":"t_enum$_WrappingDirection_$4629","typeString":"enum WrappingDirection"}},"src":"54972:44:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21535,"nodeType":"Block","src":"55389:361:64","statements":[{"assignments":[21510],"declarations":[{"constant":false,"id":21510,"mutability":"mutable","name":"bufferBalances","nameLocation":"55411:14:64","nodeType":"VariableDeclaration","scope":21535,"src":"55403:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21509,"name":"bytes32","nodeType":"ElementaryTypeName","src":"55403:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":21511,"nodeType":"VariableDeclarationStatement","src":"55403:22:64"},{"expression":{"id":21525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":21512,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21447,"src":"55440:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21513,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"55453:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21514,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21510,"src":"55467:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":21515,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"55439:43:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":21517,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55518:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55525:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4633,"src":"55518:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"id":21519,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21453,"src":"55547:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":21520,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55580:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55587:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"55580:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"expression":{"id":21522,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55617:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55624:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4641,"src":"55617:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21516,"name":"_wrapWithBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21867,"src":"55485:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_SwapKind_$4517_$_t_contract$_IERC20_$39274_$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (enum SwapKind,contract IERC20,contract IERC4626,uint256) returns (uint256,uint256,bytes32)"}},"id":21524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55485:167:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"src":"55439:213:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21526,"nodeType":"ExpressionStatement","src":"55439:213:64"},{"eventCall":{"arguments":[{"expression":{"id":21528,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55676:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55683:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"55676:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":21530,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21447,"src":"55697:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21531,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"55710:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21532,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21510,"src":"55724:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21527,"name":"Wrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"55671:4:64","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (contract IERC4626,uint256,uint256,bytes32)"}},"id":21533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55671:68:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21534,"nodeType":"EmitStatement","src":"55666:73:64"}]},"id":21536,"nodeType":"IfStatement","src":"54968:782:64","trueBody":{"id":21508,"nodeType":"Block","src":"55018:365:64","statements":[{"assignments":[21483],"declarations":[{"constant":false,"id":21483,"mutability":"mutable","name":"bufferBalances","nameLocation":"55040:14:64","nodeType":"VariableDeclaration","scope":21508,"src":"55032:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"55032:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":21484,"nodeType":"VariableDeclarationStatement","src":"55032:22:64"},{"expression":{"id":21498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":21485,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21447,"src":"55069:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21486,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"55082:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21487,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21483,"src":"55096:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":21488,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"55068:43:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":21490,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55149:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21491,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55156:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4633,"src":"55149:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"id":21492,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21453,"src":"55178:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":21493,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55211:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55218:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"55211:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"expression":{"id":21495,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55248:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55255:14:64","memberName":"amountGivenRaw","nodeType":"MemberAccess","referencedDeclaration":4641,"src":"55248:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21489,"name":"_unwrapWithBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22103,"src":"55114:17:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_SwapKind_$4517_$_t_contract$_IERC20_$39274_$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (enum SwapKind,contract IERC20,contract IERC4626,uint256) returns (uint256,uint256,bytes32)"}},"id":21497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55114:169:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"src":"55068:215:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21499,"nodeType":"ExpressionStatement","src":"55068:215:64"},{"eventCall":{"arguments":[{"expression":{"id":21501,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55309:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55316:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"55309:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":21503,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21447,"src":"55330:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21504,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"55343:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21505,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21483,"src":"55357:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":21500,"name":"Unwrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"55302:6:64","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (contract IERC4626,uint256,uint256,bytes32)"}},"id":21506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55302:70:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21507,"nodeType":"EmitStatement","src":"55297:75:64"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":21541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21537,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55764:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55771:4:64","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4633,"src":"55764:11:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":21539,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"55779:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":21540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"55788:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"55779:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"55764:32:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21575,"nodeType":"Block","src":"55992:185:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21559,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21447,"src":"56010:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":21560,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"56024:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"56031:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4643,"src":"56024:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56010:29:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21570,"nodeType":"IfStatement","src":"56006:114:64","trueBody":{"id":21569,"nodeType":"Block","src":"56041:79:64","statements":[{"errorCall":{"arguments":[{"id":21564,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21447,"src":"56076:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":21565,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"56089:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"56096:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4643,"src":"56089:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21563,"name":"SwapLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"56066:9:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":21567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56066:39:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21568,"nodeType":"RevertStatement","src":"56059:46:64"}]}},{"expression":{"id":21573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21571,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21445,"src":"56133:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21572,"name":"amountInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21447,"src":"56155:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56133:33:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21574,"nodeType":"ExpressionStatement","src":"56133:33:64"}]},"id":21576,"nodeType":"IfStatement","src":"55760:417:64","trueBody":{"id":21558,"nodeType":"Block","src":"55798:188:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21542,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"55816:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":21543,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55831:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55838:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4643,"src":"55831:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55816:30:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21553,"nodeType":"IfStatement","src":"55812:116:64","trueBody":{"id":21552,"nodeType":"Block","src":"55848:80:64","statements":[{"errorCall":{"arguments":[{"id":21547,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"55883:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":21548,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"55897:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"55904:8:64","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4643,"src":"55897:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21546,"name":"SwapLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3307,"src":"55873:9:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":21550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55873:40:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21551,"nodeType":"RevertStatement","src":"55866:47:64"}]}},{"expression":{"id":21556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21554,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21445,"src":"55941:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21555,"name":"amountOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21449,"src":"55963:12:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"55941:34:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21557,"nodeType":"ExpressionStatement","src":"55941:34:64"}]}},{"expression":{"arguments":[{"expression":{"id":21578,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"56210:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"56217:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"56210:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":21580,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21445,"src":"56231:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21577,"name":"_ensureValidWrapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21602,"src":"56187:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,uint256) view"}},"id":21581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56187:64:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21582,"nodeType":"ExpressionStatement","src":"56187:64:64"}]},"documentation":{"id":21429,"nodeType":"StructuredDocumentation","src":"54364:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"43583be5","id":21584,"implemented":true,"kind":"function","modifiers":[{"id":21435,"kind":"modifierInvocation","modifierName":{"id":21434,"name":"onlyWhenUnlocked","nameLocations":["54509:16:64"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"54509:16:64"},"nodeType":"ModifierInvocation","src":"54509:16:64"},{"id":21437,"kind":"modifierInvocation","modifierName":{"id":21436,"name":"whenVaultBuffersAreNotPaused","nameLocations":["54534:28:64"],"nodeType":"IdentifierPath","referencedDeclaration":24635,"src":"54534:28:64"},"nodeType":"ModifierInvocation","src":"54534:28:64"},{"arguments":[{"expression":{"id":21439,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21432,"src":"54593:6:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}},"id":21440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"54600:12:64","memberName":"wrappedToken","nodeType":"MemberAccess","referencedDeclaration":4639,"src":"54593:19:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"id":21441,"kind":"modifierInvocation","modifierName":{"id":21438,"name":"withInitializedBuffer","nameLocations":["54571:21:64"],"nodeType":"IdentifierPath","referencedDeclaration":24753,"src":"54571:21:64"},"nodeType":"ModifierInvocation","src":"54571:42:64"},{"id":21443,"kind":"modifierInvocation","modifierName":{"id":21442,"name":"nonReentrant","nameLocations":["54622:12:64"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"54622:12:64"},"nodeType":"ModifierInvocation","src":"54622:12:64"}],"name":"erc4626BufferWrapOrUnwrap","nameLocation":"54404:25:64","nodeType":"FunctionDefinition","parameters":{"id":21433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21432,"mutability":"mutable","name":"params","nameLocation":"54471:6:64","nodeType":"VariableDeclaration","scope":21584,"src":"54439:38:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams"},"typeName":{"id":21431,"nodeType":"UserDefinedTypeName","pathNode":{"id":21430,"name":"BufferWrapOrUnwrapParams","nameLocations":["54439:24:64"],"nodeType":"IdentifierPath","referencedDeclaration":4644,"src":"54439:24:64"},"referencedDeclaration":4644,"src":"54439:24:64","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_storage_ptr","typeString":"struct BufferWrapOrUnwrapParams"}},"visibility":"internal"}],"src":"54429:54:64"},"returnParameters":{"id":21450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21445,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"54660:19:64","nodeType":"VariableDeclaration","scope":21584,"src":"54652:27:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21444,"name":"uint256","nodeType":"ElementaryTypeName","src":"54652:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21447,"mutability":"mutable","name":"amountInRaw","nameLocation":"54689:11:64","nodeType":"VariableDeclaration","scope":21584,"src":"54681:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21446,"name":"uint256","nodeType":"ElementaryTypeName","src":"54681:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21449,"mutability":"mutable","name":"amountOutRaw","nameLocation":"54710:12:64","nodeType":"VariableDeclaration","scope":21584,"src":"54702:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21448,"name":"uint256","nodeType":"ElementaryTypeName","src":"54702:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"54651:72:64"},"scope":22336,"src":"54395:1863:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":21601,"nodeType":"Block","src":"56614:115:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21592,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21589,"src":"56628:6:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":21593,"name":"_MINIMUM_WRAP_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27735,"src":"56637:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"56628:29:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21600,"nodeType":"IfStatement","src":"56624:99:64","trueBody":{"id":21599,"nodeType":"Block","src":"56659:64:64","statements":[{"errorCall":{"arguments":[{"id":21596,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21587,"src":"56699:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":21595,"name":"WrapAmountTooSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3487,"src":"56680:18:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC4626_$38998_$returns$_t_error_$","typeString":"function (contract IERC4626) pure returns (error)"}},"id":21597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56680:32:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":21598,"nodeType":"RevertStatement","src":"56673:39:64"}]}}]},"id":21602,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidWrapAmount","nameLocation":"56539:22:64","nodeType":"FunctionDefinition","parameters":{"id":21590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21587,"mutability":"mutable","name":"wrappedToken","nameLocation":"56571:12:64","nodeType":"VariableDeclaration","scope":21602,"src":"56562:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":21586,"nodeType":"UserDefinedTypeName","pathNode":{"id":21585,"name":"IERC4626","nameLocations":["56562:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"56562:8:64"},"referencedDeclaration":38998,"src":"56562:8:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":21589,"mutability":"mutable","name":"amount","nameLocation":"56593:6:64","nodeType":"VariableDeclaration","scope":21602,"src":"56585:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21588,"name":"uint256","nodeType":"ElementaryTypeName","src":"56585:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"56561:39:64"},"returnParameters":{"id":21591,"nodeType":"ParameterList","parameters":[],"src":"56614:0:64"},"scope":22336,"src":"56530:199:64","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":21866,"nodeType":"Block","src":"57373:7759:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":21626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21623,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21606,"src":"57387:4:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":21624,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"57395:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":21625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"57404:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"57395:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"57387:25:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21658,"nodeType":"Block","src":"58008:570:64","statements":[{"expression":{"id":21656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":21643,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21617,"src":"58467:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21644,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"58487:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21645,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"58466:38:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21648,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21614,"src":"58533:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":21649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58547:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"58533:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21646,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"58508:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58521:11:64","memberName":"previewMint","nodeType":"MemberAccess","referencedDeclaration":38931,"src":"58508:24:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58508:41:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":21652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58552:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"58508:45:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21654,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21614,"src":"58555:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21655,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"58507:60:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"58466:101:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21657,"nodeType":"ExpressionStatement","src":"58466:101:64"}]},"id":21659,"nodeType":"IfStatement","src":"57383:1195:64","trueBody":{"id":21642,"nodeType":"Block","src":"57414:588:64","statements":[{"expression":{"id":21640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":21627,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21617,"src":"57888:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21628,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"57908:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21629,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"57887:38:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":21630,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21614,"src":"57929:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21633,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21614,"src":"57970:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57984:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"57970:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21631,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"57942:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57955:14:64","memberName":"previewDeposit","nodeType":"MemberAccess","referencedDeclaration":38905,"src":"57942:27:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57942:44:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57989:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"57942:48:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21639,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"57928:63:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"57887:104:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21641,"nodeType":"ExpressionStatement","src":"57887:104:64"}]}},{"expression":{"id":21664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21660,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"58588:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":21661,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"58605:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":21663,"indexExpression":{"id":21662,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"58626:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"58605:34:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"58588:51:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21665,"nodeType":"ExpressionStatement","src":"58588:51:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":21666,"name":"_isQueryContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25144,"src":"58917:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":21667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58917:17:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21674,"nodeType":"IfStatement","src":"58913:109:64","trueBody":{"id":21673,"nodeType":"Block","src":"58936:86:64","statements":[{"expression":{"components":[{"id":21668,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21617,"src":"58958:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21669,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"58978:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21670,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"58996:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":21671,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"58957:54:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"functionReturnParameters":21622,"id":21672,"nodeType":"Return","src":"58950:61:64"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21675,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"59036:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59051:17:64","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"59036:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"59036:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":21678,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"59074:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"59036:54:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21854,"nodeType":"Block","src":"59706:5308:64","statements":[{"assignments":[21712],"declarations":[{"constant":false,"id":21712,"mutability":"mutable","name":"vaultUnderlyingDeltaHint","nameLocation":"60084:24:64","nodeType":"VariableDeclaration","scope":21854,"src":"60076:32:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21711,"name":"uint256","nodeType":"ElementaryTypeName","src":"60076:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21713,"nodeType":"VariableDeclarationStatement","src":"60076:32:64"},{"assignments":[21715],"declarations":[{"constant":false,"id":21715,"mutability":"mutable","name":"vaultWrappedDeltaHint","nameLocation":"60204:21:64","nodeType":"VariableDeclaration","scope":21854,"src":"60196:29:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21714,"name":"uint256","nodeType":"ElementaryTypeName","src":"60196:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21716,"nodeType":"VariableDeclarationStatement","src":"60196:29:64"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":21720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21717,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21606,"src":"60244:4:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":21718,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"60252:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":21719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"60261:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"60252:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"60244:25:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21807,"nodeType":"Block","src":"61607:1854:64","statements":[{"assignments":[21762],"declarations":[{"constant":false,"id":21762,"mutability":"mutable","name":"bufferWrappedImbalance","nameLocation":"62477:22:64","nodeType":"VariableDeclaration","scope":21807,"src":"62470:29:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":21761,"name":"int256","nodeType":"ElementaryTypeName","src":"62470:6:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":21767,"initialValue":{"arguments":[{"id":21765,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"62543:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":21763,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"62502:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"62517:25:64","memberName":"getBufferWrappedImbalance","nodeType":"MemberAccess","referencedDeclaration":5438,"src":"62502:40:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_contract$_IERC4626_$38998_$returns$_t_int256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,contract IERC4626) view returns (int256)"}},"id":21766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"62502:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"62470:86:64"},{"expression":{"id":21777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21768,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21715,"src":"62574:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":21773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21769,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"62599:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"62616:8:64","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"62599:25:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":21771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"62599:27:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21772,"name":"bufferWrappedImbalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21762,"src":"62629:22:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"62599:52:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":21774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"62598:54:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":21775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"62653:9:64","memberName":"toUint256","nodeType":"MemberAccess","referencedDeclaration":43289,"src":"62598:64:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (uint256)"}},"id":21776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"62598:66:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"62574:90:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21778,"nodeType":"ExpressionStatement","src":"62574:90:64"},{"expression":{"id":21784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21779,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"62890:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21782,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21715,"src":"62942:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21780,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"62917:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"62930:11:64","memberName":"previewMint","nodeType":"MemberAccess","referencedDeclaration":38931,"src":"62917:24:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"62917:47:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"62890:74:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21785,"nodeType":"ExpressionStatement","src":"62890:74:64"},{"expression":{"arguments":[{"arguments":[{"id":21791,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"63305:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":21790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"63297:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21789,"name":"address","nodeType":"ElementaryTypeName","src":"63297:7:64","typeDescriptions":{}}},"id":21792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63297:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21793,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"63320:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21786,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"63268:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":21788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"63284:12:64","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":39534,"src":"63268:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":21794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63268:77:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21795,"nodeType":"ExpressionStatement","src":"63268:77:64"},{"expression":{"id":21805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21796,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"63364:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21799,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21715,"src":"63409:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21802,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"63440:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":21801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"63432:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21800,"name":"address","nodeType":"ElementaryTypeName","src":"63432:7:64","typeDescriptions":{}}},"id":21803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63432:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21797,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"63391:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"63404:4:64","memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":38941,"src":"63391:17:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":21804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63391:55:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"63364:82:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21806,"nodeType":"ExpressionStatement","src":"63364:82:64"}]},"id":21808,"nodeType":"IfStatement","src":"60240:3221:64","trueBody":{"id":21760,"nodeType":"Block","src":"60271:1330:64","statements":[{"assignments":[21722],"declarations":[{"constant":false,"id":21722,"mutability":"mutable","name":"bufferUnderlyingImbalance","nameLocation":"61187:25:64","nodeType":"VariableDeclaration","scope":21760,"src":"61180:32:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":21721,"name":"int256","nodeType":"ElementaryTypeName","src":"61180:6:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":21727,"initialValue":{"arguments":[{"id":21725,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"61259:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":21723,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"61215:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"61230:28:64","memberName":"getBufferUnderlyingImbalance","nodeType":"MemberAccess","referencedDeclaration":5389,"src":"61215:43:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_contract$_IERC4626_$38998_$returns$_t_int256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,contract IERC4626) view returns (int256)"}},"id":21726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61215:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"61180:92:64"},{"expression":{"id":21737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21728,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"61290:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":21733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21729,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21617,"src":"61318:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"61337:8:64","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"61318:27:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":21731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61318:29:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21732,"name":"bufferUnderlyingImbalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21722,"src":"61350:25:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"61318:57:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":21734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"61317:59:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":21735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"61377:9:64","memberName":"toUint256","nodeType":"MemberAccess","referencedDeclaration":43289,"src":"61317:69:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (uint256)"}},"id":21736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61317:71:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"61290:98:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21738,"nodeType":"ExpressionStatement","src":"61290:98:64"},{"expression":{"arguments":[{"arguments":[{"id":21744,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"61443:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":21743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"61435:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21742,"name":"address","nodeType":"ElementaryTypeName","src":"61435:7:64","typeDescriptions":{}}},"id":21745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61435:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":21746,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"61458:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21739,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"61406:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":21741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"61422:12:64","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":39534,"src":"61406:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":21747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61406:77:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21748,"nodeType":"ExpressionStatement","src":"61406:77:64"},{"expression":{"id":21758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21749,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21715,"src":"61501:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21752,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"61546:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":21755,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"61580:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":21754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"61572:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21753,"name":"address","nodeType":"ElementaryTypeName","src":"61572:7:64","typeDescriptions":{}}},"id":21756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61572:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":21750,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"61525:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"61538:7:64","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":38915,"src":"61525:20:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":21757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"61525:61:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"61501:85:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21759,"nodeType":"ExpressionStatement","src":"61501:85:64"}]}},{"expression":{"arguments":[{"arguments":[{"id":21814,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"63754:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":21813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"63746:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":21812,"name":"address","nodeType":"ElementaryTypeName","src":"63746:7:64","typeDescriptions":{}}},"id":21815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63746:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":21816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"63769:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":21809,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"63717:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":21811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"63733:12:64","memberName":"forceApprove","nodeType":"MemberAccess","referencedDeclaration":39534,"src":"63717:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$39274_$","typeString":"function (contract IERC20,address,uint256)"}},"id":21817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63717:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21818,"nodeType":"ExpressionStatement","src":"63717:54:64"},{"expression":{"arguments":[{"id":21820,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"63998:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":21822,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"64022:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":21821,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"64015:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":21823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"64015:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":21824,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"64037:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21825,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21715,"src":"64063:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21819,"name":"_settleWrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22141,"src":"63986:11:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,contract IERC20,uint256,uint256)"}},"id":21826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"63986:99:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21827,"nodeType":"ExpressionStatement","src":"63986:99:64"},{"expression":{"id":21846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21828,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"64682:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21831,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"64751:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"64766:13:64","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"64751:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"64751:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21834,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21617,"src":"64784:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"64751:51:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21836,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"64805:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"64751:78:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21838,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"64847:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"64862:17:64","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"64847:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"64847:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21841,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21715,"src":"64884:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"64847:58:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21843,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"64908:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"64847:77:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21829,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"64699:18:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":21830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"64718:15:64","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"64699:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":21845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"64699:239:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"64682:256:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21847,"nodeType":"ExpressionStatement","src":"64682:256:64"},{"expression":{"id":21852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21848,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"64952:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":21850,"indexExpression":{"id":21849,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"64973:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"64952:34:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21851,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"64989:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"64952:51:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21853,"nodeType":"ExpressionStatement","src":"64952:51:64"}]},"id":21855,"nodeType":"IfStatement","src":"59032:5982:64","trueBody":{"id":21710,"nodeType":"Block","src":"59092:608:64","statements":[{"assignments":[21681],"declarations":[{"constant":false,"id":21681,"mutability":"mutable","name":"newDerivedBalance","nameLocation":"59217:17:64","nodeType":"VariableDeclaration","scope":21710,"src":"59209:25:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21680,"name":"uint256","nodeType":"ElementaryTypeName","src":"59209:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21682,"nodeType":"VariableDeclarationStatement","src":"59209:25:64"},{"id":21691,"nodeType":"UncheckedBlock","src":"59248:193:64","statements":[{"expression":{"id":21689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21683,"name":"newDerivedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21681,"src":"59353:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21684,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"59373:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59388:17:64","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"59373:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"59373:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21687,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"59410:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"59373:53:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"59353:73:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21690,"nodeType":"ExpressionStatement","src":"59353:73:64"}]},{"expression":{"id":21702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21692,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"59455:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21695,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"59524:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59539:13:64","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"59524:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"59524:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21698,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21617,"src":"59557:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"59524:51:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21700,"name":"newDerivedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21681,"src":"59593:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21693,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"59472:18:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":21694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"59491:15:64","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"59472:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":21701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"59472:152:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"59455:169:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21703,"nodeType":"ExpressionStatement","src":"59455:169:64"},{"expression":{"id":21708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21704,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"59638:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":21706,"indexExpression":{"id":21705,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"59659:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"59638:34:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21707,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21621,"src":"59675:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"59638:51:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21709,"nodeType":"ExpressionStatement","src":"59638:51:64"}]}},{"expression":{"arguments":[{"id":21857,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21609,"src":"65034:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":21858,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21617,"src":"65051:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21856,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"65024:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":21859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"65024:46:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21860,"nodeType":"ExpressionStatement","src":"65024:46:64"},{"expression":{"arguments":[{"id":21862,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21612,"src":"65094:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":21863,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21619,"src":"65108:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":21861,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"65080:13:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":21864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"65080:45:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21865,"nodeType":"ExpressionStatement","src":"65080:45:64"}]},"documentation":{"id":21603,"nodeType":"StructuredDocumentation","src":"56735:391:64","text":" @dev If the buffer has enough liquidity, it uses the internal ERC4626 buffer to perform the wrap\n operation without any external calls. If not, it wraps the assets needed to fulfill the trade + the imbalance\n of assets in the buffer, so that the buffer is rebalanced at the end of the operation.\n Updates `_reservesOf` and token deltas in storage."},"id":21867,"implemented":true,"kind":"function","modifiers":[],"name":"_wrapWithBuffer","nameLocation":"57140:15:64","nodeType":"FunctionDefinition","parameters":{"id":21615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21606,"mutability":"mutable","name":"kind","nameLocation":"57174:4:64","nodeType":"VariableDeclaration","scope":21867,"src":"57165:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"typeName":{"id":21605,"nodeType":"UserDefinedTypeName","pathNode":{"id":21604,"name":"SwapKind","nameLocations":["57165:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"57165:8:64"},"referencedDeclaration":4517,"src":"57165:8:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"visibility":"internal"},{"constant":false,"id":21609,"mutability":"mutable","name":"underlyingToken","nameLocation":"57195:15:64","nodeType":"VariableDeclaration","scope":21867,"src":"57188:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":21608,"nodeType":"UserDefinedTypeName","pathNode":{"id":21607,"name":"IERC20","nameLocations":["57188:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"57188:6:64"},"referencedDeclaration":39274,"src":"57188:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":21612,"mutability":"mutable","name":"wrappedToken","nameLocation":"57229:12:64","nodeType":"VariableDeclaration","scope":21867,"src":"57220:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":21611,"nodeType":"UserDefinedTypeName","pathNode":{"id":21610,"name":"IERC4626","nameLocations":["57220:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"57220:8:64"},"referencedDeclaration":38998,"src":"57220:8:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":21614,"mutability":"mutable","name":"amountGiven","nameLocation":"57259:11:64","nodeType":"VariableDeclaration","scope":21867,"src":"57251:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21613,"name":"uint256","nodeType":"ElementaryTypeName","src":"57251:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"57155:121:64"},"returnParameters":{"id":21622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21617,"mutability":"mutable","name":"amountInUnderlying","nameLocation":"57303:18:64","nodeType":"VariableDeclaration","scope":21867,"src":"57295:26:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21616,"name":"uint256","nodeType":"ElementaryTypeName","src":"57295:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21619,"mutability":"mutable","name":"amountOutWrapped","nameLocation":"57331:16:64","nodeType":"VariableDeclaration","scope":21867,"src":"57323:24:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21618,"name":"uint256","nodeType":"ElementaryTypeName","src":"57323:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21621,"mutability":"mutable","name":"bufferBalances","nameLocation":"57357:14:64","nodeType":"VariableDeclaration","scope":21867,"src":"57349:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"57349:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"57294:78:64"},"scope":22336,"src":"57131:8001:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22102,"nodeType":"Block","src":"65782:6743:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":21891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21888,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"65796:4:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":21889,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"65804:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":21890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"65813:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"65804:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"65796:25:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":21923,"nodeType":"Block","src":"66412:585:64","statements":[{"expression":{"id":21921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":21908,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21882,"src":"66882:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21909,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"66899:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21910,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"66881:38:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21913,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21879,"src":"66952:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":21914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"66966:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"66952:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21911,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"66923:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"66936:15:64","memberName":"previewWithdraw","nodeType":"MemberAccess","referencedDeclaration":38957,"src":"66923:28:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"66923:45:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":21917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"66971:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"66923:49:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21919,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21879,"src":"66974:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21920,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"66922:64:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"66881:105:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21922,"nodeType":"ExpressionStatement","src":"66881:105:64"}]},"id":21924,"nodeType":"IfStatement","src":"65792:1205:64","trueBody":{"id":21907,"nodeType":"Block","src":"65823:583:64","statements":[{"expression":{"id":21905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":21892,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21882,"src":"66293:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21893,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"66310:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21894,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"66292:38:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":21895,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21879,"src":"66334:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21898,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21879,"src":"66374:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"66388:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"66374:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21896,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"66347:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":21897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"66360:13:64","memberName":"previewRedeem","nodeType":"MemberAccess","referencedDeclaration":38985,"src":"66347:26:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":21901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"66347:43:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":21902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"66393:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"66347:47:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"66333:62:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"66292:103:64","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21906,"nodeType":"ExpressionStatement","src":"66292:103:64"}]}},{"expression":{"id":21929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21925,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"67007:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":21926,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"67024:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":21928,"indexExpression":{"id":21927,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"67045:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"67024:34:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"67007:51:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21930,"nodeType":"ExpressionStatement","src":"67007:51:64"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":21931,"name":"_isQueryContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25144,"src":"67334:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":21932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"67334:17:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":21939,"nodeType":"IfStatement","src":"67330:109:64","trueBody":{"id":21938,"nodeType":"Block","src":"67353:86:64","statements":[{"expression":{"components":[{"id":21933,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21882,"src":"67375:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21934,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"67392:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":21935,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"67413:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":21936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"67374:54:64","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"functionReturnParameters":21887,"id":21937,"nodeType":"Return","src":"67367:61:64"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21940,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"67453:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"67468:13:64","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"67453:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"67453:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":21943,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"67487:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"67453:53:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22090,"nodeType":"Block","src":"68109:4298:64","statements":[{"assignments":[21977],"declarations":[{"constant":false,"id":21977,"mutability":"mutable","name":"vaultUnderlyingDeltaHint","nameLocation":"68488:24:64","nodeType":"VariableDeclaration","scope":22090,"src":"68480:32:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21976,"name":"uint256","nodeType":"ElementaryTypeName","src":"68480:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21978,"nodeType":"VariableDeclarationStatement","src":"68480:32:64"},{"assignments":[21980],"declarations":[{"constant":false,"id":21980,"mutability":"mutable","name":"vaultWrappedDeltaHint","nameLocation":"68608:21:64","nodeType":"VariableDeclaration","scope":22090,"src":"68600:29:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21979,"name":"uint256","nodeType":"ElementaryTypeName","src":"68600:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21981,"nodeType":"VariableDeclarationStatement","src":"68600:29:64"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":21985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21982,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21871,"src":"68648:4:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":21983,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"68656:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":21984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"68665:8:64","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"68656:17:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"68648:25:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22053,"nodeType":"Block","src":"69885:1243:64","statements":[{"assignments":[22021],"declarations":[{"constant":false,"id":22021,"mutability":"mutable","name":"bufferUnderlyingImbalance","nameLocation":"70792:25:64","nodeType":"VariableDeclaration","scope":22053,"src":"70785:32:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":22020,"name":"int256","nodeType":"ElementaryTypeName","src":"70785:6:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":22026,"initialValue":{"arguments":[{"id":22024,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"70864:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":22022,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"70820:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"70835:28:64","memberName":"getBufferUnderlyingImbalance","nodeType":"MemberAccess","referencedDeclaration":5389,"src":"70820:43:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_contract$_IERC4626_$38998_$returns$_t_int256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,contract IERC4626) view returns (int256)"}},"id":22025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"70820:57:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"70785:92:64"},{"expression":{"id":22036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22027,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21977,"src":"70895:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":22032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22028,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"70923:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"70943:8:64","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"70923:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":22030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"70923:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22031,"name":"bufferUnderlyingImbalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22021,"src":"70956:25:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"70923:58:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":22033,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"70922:60:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":22034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"70983:9:64","memberName":"toUint256","nodeType":"MemberAccess","referencedDeclaration":43289,"src":"70922:70:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (uint256)"}},"id":22035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"70922:72:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"70895:99:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22037,"nodeType":"ExpressionStatement","src":"70895:99:64"},{"expression":{"id":22051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22038,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21980,"src":"71012:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22041,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21977,"src":"71058:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":22044,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"71092:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":22043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"71084:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22042,"name":"address","nodeType":"ElementaryTypeName","src":"71084:7:64","typeDescriptions":{}}},"id":22045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"71084:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":22048,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"71107:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":22047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"71099:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22046,"name":"address","nodeType":"ElementaryTypeName","src":"71099:7:64","typeDescriptions":{}}},"id":22049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"71099:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22039,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"71036:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":22040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"71049:8:64","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":38969,"src":"71036:21:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":22050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"71036:77:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"71012:101:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22052,"nodeType":"ExpressionStatement","src":"71012:101:64"}]},"id":22054,"nodeType":"IfStatement","src":"68644:2484:64","trueBody":{"id":22019,"nodeType":"Block","src":"68675:1204:64","statements":[{"assignments":[21987],"declarations":[{"constant":false,"id":21987,"mutability":"mutable","name":"bufferWrappedImbalance","nameLocation":"69561:22:64","nodeType":"VariableDeclaration","scope":22019,"src":"69554:29:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":21986,"name":"int256","nodeType":"ElementaryTypeName","src":"69554:6:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":21992,"initialValue":{"arguments":[{"id":21990,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"69627:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":21988,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"69586:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"69601:25:64","memberName":"getBufferWrappedImbalance","nodeType":"MemberAccess","referencedDeclaration":5438,"src":"69586:40:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_contract$_IERC4626_$38998_$returns$_t_int256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,contract IERC4626) view returns (int256)"}},"id":21991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"69586:54:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"69554:86:64"},{"expression":{"id":22002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21993,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21980,"src":"69658:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":21998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21994,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21882,"src":"69683:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"69699:8:64","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"69683:24:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":21996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"69683:26:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21997,"name":"bufferWrappedImbalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21987,"src":"69712:22:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"69683:51:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":21999,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"69682:53:64","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":22000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"69736:9:64","memberName":"toUint256","nodeType":"MemberAccess","referencedDeclaration":43289,"src":"69682:63:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$attached_to$_t_int256_$","typeString":"function (int256) pure returns (uint256)"}},"id":22001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"69682:65:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"69658:89:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22003,"nodeType":"ExpressionStatement","src":"69658:89:64"},{"expression":{"id":22017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22004,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21977,"src":"69765:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22007,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21980,"src":"69812:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":22010,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"69843:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":22009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"69835:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22008,"name":"address","nodeType":"ElementaryTypeName","src":"69835:7:64","typeDescriptions":{}}},"id":22011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"69835:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":22014,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"69858:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":22013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"69850:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22012,"name":"address","nodeType":"ElementaryTypeName","src":"69850:7:64","typeDescriptions":{}}},"id":22015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"69850:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22005,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"69792:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":22006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"69805:6:64","memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":38997,"src":"69792:19:64","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":22016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"69792:72:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"69765:99:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22018,"nodeType":"ExpressionStatement","src":"69765:99:64"}]}},{"expression":{"arguments":[{"id":22056,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21874,"src":"71356:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":22058,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"71380:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":22057,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"71373:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":22059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"71373:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":22060,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21977,"src":"71395:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22061,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21980,"src":"71421:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22055,"name":"_settleUnwrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22179,"src":"71342:13:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,contract IERC20,uint256,uint256)"}},"id":22062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"71342:101:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22063,"nodeType":"ExpressionStatement","src":"71342:101:64"},{"expression":{"id":22082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22064,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"72075:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22067,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"72144:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"72159:13:64","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"72144:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":22069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"72144:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22070,"name":"vaultUnderlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21977,"src":"72177:24:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"72144:57:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22072,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"72204:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"72144:79:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22074,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"72241:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"72256:17:64","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"72241:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":22076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"72241:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22077,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21882,"src":"72278:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"72241:52:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22079,"name":"vaultWrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21980,"src":"72296:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"72241:76:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22065,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"72092:18:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":22066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"72111:15:64","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"72092:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":22081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"72092:239:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"72075:256:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22083,"nodeType":"ExpressionStatement","src":"72075:256:64"},{"expression":{"id":22088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22084,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"72345:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":22086,"indexExpression":{"id":22085,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"72366:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"72345:34:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22087,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"72382:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"72345:51:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22089,"nodeType":"ExpressionStatement","src":"72345:51:64"}]},"id":22091,"nodeType":"IfStatement","src":"67449:4958:64","trueBody":{"id":21975,"nodeType":"Block","src":"67508:595:64","statements":[{"assignments":[21946],"declarations":[{"constant":false,"id":21946,"mutability":"mutable","name":"newRawBalance","nameLocation":"67633:13:64","nodeType":"VariableDeclaration","scope":21975,"src":"67625:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21945,"name":"uint256","nodeType":"ElementaryTypeName","src":"67625:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":21947,"nodeType":"VariableDeclarationStatement","src":"67625:21:64"},{"id":21956,"nodeType":"UncheckedBlock","src":"67660:188:64","statements":[{"expression":{"id":21954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21948,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21946,"src":"67765:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21949,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"67781:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"67796:13:64","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"67781:28:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"67781:30:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":21952,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"67814:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"67781:52:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"67765:68:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21955,"nodeType":"ExpressionStatement","src":"67765:68:64"}]},{"expression":{"id":21967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":21957,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"67861:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":21960,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21946,"src":"67930:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":21961,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"67961:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"67976:17:64","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"67961:32:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":21963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"67961:34:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":21964,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21882,"src":"67998:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"67961:52:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":21958,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"67878:18:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":21959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"67897:15:64","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"67878:34:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":21966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"67878:149:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"67861:166:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21968,"nodeType":"ExpressionStatement","src":"67861:166:64"},{"expression":{"id":21973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":21969,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"68041:20:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":21971,"indexExpression":{"id":21970,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"68062:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"68041:34:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":21972,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21886,"src":"68078:14:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"68041:51:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":21974,"nodeType":"ExpressionStatement","src":"68041:51:64"}]}},{"expression":{"arguments":[{"id":22093,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21877,"src":"72427:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":22094,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21882,"src":"72441:15:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22092,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"72417:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":22095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"72417:40:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22096,"nodeType":"ExpressionStatement","src":"72417:40:64"},{"expression":{"arguments":[{"id":22098,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21874,"src":"72481:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":22099,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21884,"src":"72498:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22097,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"72467:13:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":22100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"72467:51:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22101,"nodeType":"ExpressionStatement","src":"72467:51:64"}]},"documentation":{"id":21868,"nodeType":"StructuredDocumentation","src":"65138:395:64","text":" @dev If the buffer has enough liquidity, it uses the internal ERC4626 buffer to perform the unwrap\n operation without any external calls. If not, it unwraps the assets needed to fulfill the trade + the imbalance\n of assets in the buffer, so that the buffer is rebalanced at the end of the operation.\n Updates `_reservesOf` and token deltas in storage."},"id":22103,"implemented":true,"kind":"function","modifiers":[],"name":"_unwrapWithBuffer","nameLocation":"65547:17:64","nodeType":"FunctionDefinition","parameters":{"id":21880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21871,"mutability":"mutable","name":"kind","nameLocation":"65583:4:64","nodeType":"VariableDeclaration","scope":22103,"src":"65574:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"typeName":{"id":21870,"nodeType":"UserDefinedTypeName","pathNode":{"id":21869,"name":"SwapKind","nameLocations":["65574:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":4517,"src":"65574:8:64"},"referencedDeclaration":4517,"src":"65574:8:64","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"visibility":"internal"},{"constant":false,"id":21874,"mutability":"mutable","name":"underlyingToken","nameLocation":"65604:15:64","nodeType":"VariableDeclaration","scope":22103,"src":"65597:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":21873,"nodeType":"UserDefinedTypeName","pathNode":{"id":21872,"name":"IERC20","nameLocations":["65597:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"65597:6:64"},"referencedDeclaration":39274,"src":"65597:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":21877,"mutability":"mutable","name":"wrappedToken","nameLocation":"65638:12:64","nodeType":"VariableDeclaration","scope":22103,"src":"65629:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":21876,"nodeType":"UserDefinedTypeName","pathNode":{"id":21875,"name":"IERC4626","nameLocations":["65629:8:64"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"65629:8:64"},"referencedDeclaration":38998,"src":"65629:8:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":21879,"mutability":"mutable","name":"amountGiven","nameLocation":"65668:11:64","nodeType":"VariableDeclaration","scope":22103,"src":"65660:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21878,"name":"uint256","nodeType":"ElementaryTypeName","src":"65660:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"65564:121:64"},"returnParameters":{"id":21887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21882,"mutability":"mutable","name":"amountInWrapped","nameLocation":"65712:15:64","nodeType":"VariableDeclaration","scope":22103,"src":"65704:23:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21881,"name":"uint256","nodeType":"ElementaryTypeName","src":"65704:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21884,"mutability":"mutable","name":"amountOutUnderlying","nameLocation":"65737:19:64","nodeType":"VariableDeclaration","scope":22103,"src":"65729:27:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21883,"name":"uint256","nodeType":"ElementaryTypeName","src":"65729:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":21886,"mutability":"mutable","name":"bufferBalances","nameLocation":"65766:14:64","nodeType":"VariableDeclaration","scope":22103,"src":"65758:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21885,"name":"bytes32","nodeType":"ElementaryTypeName","src":"65758:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"65703:78:64"},"scope":22336,"src":"65538:6987:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22140,"nodeType":"Block","src":"73450:702:64","statements":[{"assignments":[22118],"declarations":[{"constant":false,"id":22118,"mutability":"mutable","name":"expectedUnderlyingReservesAfter","nameLocation":"73665:31:64","nodeType":"VariableDeclaration","scope":22140,"src":"73657:39:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22117,"name":"uint256","nodeType":"ElementaryTypeName","src":"73657:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22124,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22119,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"73699:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":22121,"indexExpression":{"id":22120,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22107,"src":"73711:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"73699:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22122,"name":"underlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22112,"src":"73730:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"73699:50:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"73657:92:64"},{"assignments":[22126],"declarations":[{"constant":false,"id":22126,"mutability":"mutable","name":"expectedWrappedReservesAfter","nameLocation":"73948:28:64","nodeType":"VariableDeclaration","scope":22140,"src":"73940:36:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22125,"name":"uint256","nodeType":"ElementaryTypeName","src":"73940:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22132,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22127,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"73979:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":22129,"indexExpression":{"id":22128,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22110,"src":"73991:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"73979:25:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22130,"name":"wrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22114,"src":"74007:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"73979:44:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"73940:83:64"},{"expression":{"arguments":[{"id":22134,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22107,"src":"74052:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":22135,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22110,"src":"74069:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":22136,"name":"expectedUnderlyingReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22118,"src":"74083:31:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22137,"name":"expectedWrappedReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22126,"src":"74116:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22133,"name":"_settleWrapUnwrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22258,"src":"74034:17:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,contract IERC20,uint256,uint256)"}},"id":22138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"74034:111:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22139,"nodeType":"ExpressionStatement","src":"74034:111:64"}]},"documentation":{"id":22104,"nodeType":"StructuredDocumentation","src":"72531:746:64","text":" @notice Updates the reserves of the Vault after an ERC4626 wrap (deposit/mint) operation.\n @dev If there are extra tokens in the Vault balances, these will be added to the reserves (which, in practice,\n is equal to discarding such tokens). This approach avoids DoS attacks, when a frontrunner leaves vault balances\n and reserves out of sync before a transaction starts.\n @param underlyingToken Underlying token of the ERC4626 wrapped token\n @param wrappedToken ERC4626 wrapped token\n @param underlyingDeltaHint Amount of underlying tokens the wrapper should have removed from the Vault\n @param wrappedDeltaHint Amount of wrapped tokens the wrapper should have added to the Vault"},"id":22141,"implemented":true,"kind":"function","modifiers":[],"name":"_settleWrap","nameLocation":"73291:11:64","nodeType":"FunctionDefinition","parameters":{"id":22115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22107,"mutability":"mutable","name":"underlyingToken","nameLocation":"73319:15:64","nodeType":"VariableDeclaration","scope":22141,"src":"73312:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":22106,"nodeType":"UserDefinedTypeName","pathNode":{"id":22105,"name":"IERC20","nameLocations":["73312:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"73312:6:64"},"referencedDeclaration":39274,"src":"73312:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22110,"mutability":"mutable","name":"wrappedToken","nameLocation":"73351:12:64","nodeType":"VariableDeclaration","scope":22141,"src":"73344:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":22109,"nodeType":"UserDefinedTypeName","pathNode":{"id":22108,"name":"IERC20","nameLocations":["73344:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"73344:6:64"},"referencedDeclaration":39274,"src":"73344:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22112,"mutability":"mutable","name":"underlyingDeltaHint","nameLocation":"73381:19:64","nodeType":"VariableDeclaration","scope":22141,"src":"73373:27:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22111,"name":"uint256","nodeType":"ElementaryTypeName","src":"73373:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22114,"mutability":"mutable","name":"wrappedDeltaHint","nameLocation":"73418:16:64","nodeType":"VariableDeclaration","scope":22141,"src":"73410:24:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22113,"name":"uint256","nodeType":"ElementaryTypeName","src":"73410:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"73302:138:64"},"returnParameters":{"id":22116,"nodeType":"ParameterList","parameters":[],"src":"73450:0:64"},"scope":22336,"src":"73282:870:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22178,"nodeType":"Block","src":"75057:708:64","statements":[{"assignments":[22156],"declarations":[{"constant":false,"id":22156,"mutability":"mutable","name":"expectedUnderlyingReservesAfter","nameLocation":"75270:31:64","nodeType":"VariableDeclaration","scope":22178,"src":"75262:39:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22155,"name":"uint256","nodeType":"ElementaryTypeName","src":"75262:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22162,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22157,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"75304:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":22159,"indexExpression":{"id":22158,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22145,"src":"75316:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"75304:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22160,"name":"underlyingDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22150,"src":"75335:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"75304:50:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"75262:92:64"},{"assignments":[22164],"declarations":[{"constant":false,"id":22164,"mutability":"mutable","name":"expectedWrappedReservesAfter","nameLocation":"75561:28:64","nodeType":"VariableDeclaration","scope":22178,"src":"75553:36:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22163,"name":"uint256","nodeType":"ElementaryTypeName","src":"75553:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22170,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22165,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"75592:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":22167,"indexExpression":{"id":22166,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22148,"src":"75604:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"75592:25:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":22168,"name":"wrappedDeltaHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22152,"src":"75620:16:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"75592:44:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"75553:83:64"},{"expression":{"arguments":[{"id":22172,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22145,"src":"75665:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":22173,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22148,"src":"75682:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":22174,"name":"expectedUnderlyingReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22156,"src":"75696:31:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22175,"name":"expectedWrappedReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22164,"src":"75729:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22171,"name":"_settleWrapUnwrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22258,"src":"75647:17:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,contract IERC20,uint256,uint256)"}},"id":22176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"75647:111:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22177,"nodeType":"ExpressionStatement","src":"75647:111:64"}]},"documentation":{"id":22142,"nodeType":"StructuredDocumentation","src":"74158:724:64","text":" @notice Updates the reserves of the Vault after an ERC4626 unwrap (withdraw/redeem) operation.\n @dev If there are extra tokens in the Vault balances, these will be added to the reserves (which, in practice,\n is equal to discarding such tokens). This approach avoids DoS attacks, when a frontrunner leaves vault balances\n and state of reserves out of sync before a transaction starts.\n @param underlyingToken Underlying of ERC4626 wrapped token\n @param wrappedToken ERC4626 wrapped token\n @param underlyingDeltaHint Amount of underlying tokens supposedly added to the Vault\n @param wrappedDeltaHint Amount of wrapped tokens supposedly removed from the Vault"},"id":22179,"implemented":true,"kind":"function","modifiers":[],"name":"_settleUnwrap","nameLocation":"74896:13:64","nodeType":"FunctionDefinition","parameters":{"id":22153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22145,"mutability":"mutable","name":"underlyingToken","nameLocation":"74926:15:64","nodeType":"VariableDeclaration","scope":22179,"src":"74919:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":22144,"nodeType":"UserDefinedTypeName","pathNode":{"id":22143,"name":"IERC20","nameLocations":["74919:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"74919:6:64"},"referencedDeclaration":39274,"src":"74919:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22148,"mutability":"mutable","name":"wrappedToken","nameLocation":"74958:12:64","nodeType":"VariableDeclaration","scope":22179,"src":"74951:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":22147,"nodeType":"UserDefinedTypeName","pathNode":{"id":22146,"name":"IERC20","nameLocations":["74951:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"74951:6:64"},"referencedDeclaration":39274,"src":"74951:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22150,"mutability":"mutable","name":"underlyingDeltaHint","nameLocation":"74988:19:64","nodeType":"VariableDeclaration","scope":22179,"src":"74980:27:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22149,"name":"uint256","nodeType":"ElementaryTypeName","src":"74980:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22152,"mutability":"mutable","name":"wrappedDeltaHint","nameLocation":"75025:16:64","nodeType":"VariableDeclaration","scope":22179,"src":"75017:24:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22151,"name":"uint256","nodeType":"ElementaryTypeName","src":"75017:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"74909:138:64"},"returnParameters":{"id":22154,"nodeType":"ParameterList","parameters":[],"src":"75057:0:64"},"scope":22336,"src":"74887:878:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22257,"nodeType":"Block","src":"76871:2497:64","statements":[{"assignments":[22194],"declarations":[{"constant":false,"id":22194,"mutability":"mutable","name":"underlyingBalancesAfter","nameLocation":"76940:23:64","nodeType":"VariableDeclaration","scope":22257,"src":"76932:31:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22193,"name":"uint256","nodeType":"ElementaryTypeName","src":"76932:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22202,"initialValue":{"arguments":[{"arguments":[{"id":22199,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"77000:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":22198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"76992:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22197,"name":"address","nodeType":"ElementaryTypeName","src":"76992:7:64","typeDescriptions":{}}},"id":22200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"76992:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22195,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22183,"src":"76966:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":22196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"76982:9:64","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":39231,"src":"76966:25:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"76966:40:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"76932:74:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22203,"name":"underlyingBalancesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22194,"src":"77020:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":22204,"name":"expectedUnderlyingReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22188,"src":"77046:31:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"77020:57:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22218,"nodeType":"IfStatement","src":"77016:892:64","trueBody":{"id":22217,"nodeType":"Block","src":"77079:829:64","statements":[{"errorCall":{"arguments":[{"arguments":[{"arguments":[{"id":22210,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22186,"src":"77779:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":22209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"77771:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22208,"name":"address","nodeType":"ElementaryTypeName","src":"77771:7:64","typeDescriptions":{}}},"id":22211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"77771:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22207,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"77762:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$38998_$","typeString":"type(contract IERC4626)"}},"id":22212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"77762:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":22213,"name":"expectedUnderlyingReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22188,"src":"77811:31:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22214,"name":"underlyingBalancesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22194,"src":"77860:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22206,"name":"NotEnoughUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"77725:19:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC4626,uint256,uint256) pure returns (error)"}},"id":22215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"77725:172:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22216,"nodeType":"RevertStatement","src":"77718:179:64"}]}},{"expression":{"id":22223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22219,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"78081:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":22221,"indexExpression":{"id":22220,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22183,"src":"78093:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"78081:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22222,"name":"underlyingBalancesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22194,"src":"78112:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"78081:54:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22224,"nodeType":"ExpressionStatement","src":"78081:54:64"},{"assignments":[22226],"declarations":[{"constant":false,"id":22226,"mutability":"mutable","name":"wrappedBalancesAfter","nameLocation":"78202:20:64","nodeType":"VariableDeclaration","scope":22257,"src":"78194:28:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22225,"name":"uint256","nodeType":"ElementaryTypeName","src":"78194:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22234,"initialValue":{"arguments":[{"arguments":[{"id":22231,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"78256:4:64","typeDescriptions":{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Vault_$22336","typeString":"contract Vault"}],"id":22230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"78248:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22229,"name":"address","nodeType":"ElementaryTypeName","src":"78248:7:64","typeDescriptions":{}}},"id":22232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"78248:13:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22227,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22186,"src":"78225:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":22228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"78238:9:64","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":39231,"src":"78225:22:64","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"78225:37:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"78194:68:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22235,"name":"wrappedBalancesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22226,"src":"78276:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":22236,"name":"expectedWrappedReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22190,"src":"78299:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"78276:51:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22250,"nodeType":"IfStatement","src":"78272:866:64","trueBody":{"id":22249,"nodeType":"Block","src":"78329:809:64","statements":[{"errorCall":{"arguments":[{"arguments":[{"arguments":[{"id":22242,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22186,"src":"79015:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":22241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"79007:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22240,"name":"address","nodeType":"ElementaryTypeName","src":"79007:7:64","typeDescriptions":{}}},"id":22243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"79007:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22239,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"78998:8:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$38998_$","typeString":"type(contract IERC4626)"}},"id":22244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"78998:31:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":22245,"name":"expectedWrappedReservesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22190,"src":"79047:28:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":22246,"name":"wrappedBalancesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22226,"src":"79093:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22238,"name":"NotEnoughWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"78964:16:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC4626,uint256,uint256) pure returns (error)"}},"id":22247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"78964:163:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22248,"nodeType":"RevertStatement","src":"78957:170:64"}]}},{"expression":{"id":22255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22251,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"79313:11:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":22253,"indexExpression":{"id":22252,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22186,"src":"79325:12:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"79313:25:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22254,"name":"wrappedBalancesAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22226,"src":"79341:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"79313:48:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22256,"nodeType":"ExpressionStatement","src":"79313:48:64"}]},"documentation":{"id":22180,"nodeType":"StructuredDocumentation","src":"75771:897:64","text":" @notice Updates the reserves of the Vault after an ERC4626 wrap/unwrap operation.\n @dev If reserves of underlying or wrapped tokens are bigger than expected, the extra tokens will be discarded,\n which avoids a possible DoS. However, if reserves are smaller than expected, it means that the wrapper didn't\n respect the amount given and/or the amount calculated (informed by the wrapper operation and stored as a hint\n variable), so the token is not ERC4626 compliant and the function should be reverted.\n @param underlyingToken Underlying of ERC4626 wrapped token\n @param wrappedToken ERC4626 wrapped token\n @param expectedUnderlyingReservesAfter Vault's expected reserves of underlying after the wrap/unwrap operation\n @param expectedWrappedReservesAfter Vault's expected reserves of wrapped after the wrap/unwrap operation"},"id":22258,"implemented":true,"kind":"function","modifiers":[],"name":"_settleWrapUnwrap","nameLocation":"76682:17:64","nodeType":"FunctionDefinition","parameters":{"id":22191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22183,"mutability":"mutable","name":"underlyingToken","nameLocation":"76716:15:64","nodeType":"VariableDeclaration","scope":22258,"src":"76709:22:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":22182,"nodeType":"UserDefinedTypeName","pathNode":{"id":22181,"name":"IERC20","nameLocations":["76709:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"76709:6:64"},"referencedDeclaration":39274,"src":"76709:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22186,"mutability":"mutable","name":"wrappedToken","nameLocation":"76748:12:64","nodeType":"VariableDeclaration","scope":22258,"src":"76741:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":22185,"nodeType":"UserDefinedTypeName","pathNode":{"id":22184,"name":"IERC20","nameLocations":["76741:6:64"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"76741:6:64"},"referencedDeclaration":39274,"src":"76741:6:64","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22188,"mutability":"mutable","name":"expectedUnderlyingReservesAfter","nameLocation":"76778:31:64","nodeType":"VariableDeclaration","scope":22258,"src":"76770:39:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22187,"name":"uint256","nodeType":"ElementaryTypeName","src":"76770:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22190,"mutability":"mutable","name":"expectedWrappedReservesAfter","nameLocation":"76827:28:64","nodeType":"VariableDeclaration","scope":22258,"src":"76819:36:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22189,"name":"uint256","nodeType":"ElementaryTypeName","src":"76819:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"76699:162:64"},"returnParameters":{"id":22192,"nodeType":"ParameterList","parameters":[],"src":"76871:0:64"},"scope":22336,"src":"76673:2695:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22272,"nodeType":"Block","src":"79724:98:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22263,"name":"tradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22260,"src":"79738:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"79753:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"79738:16:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22271,"nodeType":"IfStatement","src":"79734:82:64","trueBody":{"id":22270,"nodeType":"Block","src":"79756:60:64","statements":[{"expression":{"arguments":[{"id":22267,"name":"tradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22260,"src":"79793:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22266,"name":"_ensureValidSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22287,"src":"79770:22:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":22268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"79770:35:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22269,"nodeType":"ExpressionStatement","src":"79770:35:64"}]}}]},"id":22273,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidTradeAmount","nameLocation":"79665:23:64","nodeType":"FunctionDefinition","parameters":{"id":22261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22260,"mutability":"mutable","name":"tradeAmount","nameLocation":"79697:11:64","nodeType":"VariableDeclaration","scope":22273,"src":"79689:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22259,"name":"uint256","nodeType":"ElementaryTypeName","src":"79689:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"79688:21:64"},"returnParameters":{"id":22262,"nodeType":"ParameterList","parameters":[],"src":"79724:0:64"},"scope":22336,"src":"79656:166:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":22286,"nodeType":"Block","src":"80644:110:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22278,"name":"tradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22275,"src":"80658:11:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":22279,"name":"_MINIMUM_TRADE_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27733,"src":"80672:21:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"80658:35:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22285,"nodeType":"IfStatement","src":"80654:94:64","trueBody":{"id":22284,"nodeType":"Block","src":"80695:53:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22281,"name":"TradeAmountTooSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3317,"src":"80716:19:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"80716:21:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22283,"nodeType":"RevertStatement","src":"80709:28:64"}]}}]},"id":22287,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSwapAmount","nameLocation":"80586:22:64","nodeType":"FunctionDefinition","parameters":{"id":22276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22275,"mutability":"mutable","name":"tradeAmount","nameLocation":"80617:11:64","nodeType":"VariableDeclaration","scope":22287,"src":"80609:19:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22274,"name":"uint256","nodeType":"ElementaryTypeName","src":"80609:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"80608:21:64"},"returnParameters":{"id":22277,"nodeType":"ParameterList","parameters":[],"src":"80644:0:64"},"scope":22336,"src":"80577:177:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4343],"body":{"id":22296,"nodeType":"Block","src":"81074:41:64","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22293,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[22310],"referencedDeclaration":22310,"src":"81091:15:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":22294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"81091:17:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":22292,"id":22295,"nodeType":"Return","src":"81084:24:64"}]},"documentation":{"id":22288,"nodeType":"StructuredDocumentation","src":"80982:26:64","text":"@inheritdoc IVaultMain"},"functionSelector":"b9a8effa","id":22297,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultExtension","nameLocation":"81022:17:64","nodeType":"FunctionDefinition","parameters":{"id":22289,"nodeType":"ParameterList","parameters":[],"src":"81039:2:64"},"returnParameters":{"id":22292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22297,"src":"81065:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22290,"name":"address","nodeType":"ElementaryTypeName","src":"81065:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"81064:9:64"},"scope":22336,"src":"81013:102:64","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[39177],"body":{"id":22309,"nodeType":"Block","src":"81321:48:64","statements":[{"expression":{"arguments":[{"id":22306,"name":"_vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19040,"src":"81346:15:64","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":22305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"81338:7:64","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22304,"name":"address","nodeType":"ElementaryTypeName","src":"81338:7:64","typeDescriptions":{}}},"id":22307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"81338:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":22303,"id":22308,"nodeType":"Return","src":"81331:31:64"}]},"documentation":{"id":22298,"nodeType":"StructuredDocumentation","src":"81121:127:64","text":" @inheritdoc Proxy\n @dev Returns the VaultExtension contract, to which fallback requests are forwarded."},"id":22310,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"81262:15:64","nodeType":"FunctionDefinition","overrides":{"id":22300,"nodeType":"OverrideSpecifier","overrides":[],"src":"81294:8:64"},"parameters":{"id":22299,"nodeType":"ParameterList","parameters":[],"src":"81277:2:64"},"returnParameters":{"id":22303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22310,"src":"81312:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22301,"name":"address","nodeType":"ElementaryTypeName","src":"81312:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"81311:9:64"},"scope":22336,"src":"81253:116:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":22316,"nodeType":"Block","src":"81627:42:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22313,"name":"CannotReceiveEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"81644:16:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"81644:18:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22315,"nodeType":"RevertStatement","src":"81637:25:64"}]},"id":22317,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":22311,"nodeType":"ParameterList","parameters":[],"src":"81607:2:64"},"returnParameters":{"id":22312,"nodeType":"ParameterList","parameters":[],"src":"81627:0:64"},"scope":22336,"src":"81600:69:64","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[39195],"body":{"id":22334,"nodeType":"Block","src":"81987:107:64","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22322,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"82001:3:64","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"82005:5:64","memberName":"value","nodeType":"MemberAccess","src":"82001:9:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"82013:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"82001:13:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22330,"nodeType":"IfStatement","src":"81997:69:64","trueBody":{"id":22329,"nodeType":"Block","src":"82016:50:64","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22326,"name":"CannotReceiveEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"82037:16:64","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"82037:18:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22328,"nodeType":"RevertStatement","src":"82030:25:64"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22331,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39187,"src":"82076:9:64","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":22332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"82076:11:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22333,"nodeType":"ExpressionStatement","src":"82076:11:64"}]},"documentation":{"id":22318,"nodeType":"StructuredDocumentation","src":"81719:226:64","text":" @inheritdoc Proxy\n @dev Override proxy implementation of `fallback` to disallow incoming ETH transfers.\n This function actually returns whatever the VaultExtension does when handling the request."},"id":22335,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","overrides":{"id":22320,"nodeType":"OverrideSpecifier","overrides":[],"src":"81978:8:64"},"parameters":{"id":22319,"nodeType":"ParameterList","parameters":[],"src":"81958:2:64"},"returnParameters":{"id":22321,"nodeType":"ParameterList","parameters":[],"src":"81987:0:64"},"scope":22336,"src":"81950:144:64","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":22337,"src":"2550:79546:64","usedErrors":[1684,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,5477,5586,5589,5592,5833,7543,9512,10993,11000,39035,39040,39045,39054,39059,39064,39353,39634,39639,39642,42386,42398],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788,38264,38275]}],"src":"46:82051:64"},"id":64},"@balancer-labs/v3-vault/contracts/VaultAdmin.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultAdmin.sol","exportedSymbols":{"Authentication":[5327],"EVMCallModeHelpers":[5493],"FixedPoint":[7834],"IAuthorizer":[1316],"IERC20":[39274],"IERC4626":[38998],"IProtocolFeeController":[2230],"IVault":[2893],"IVaultAdmin":[3183],"PackedTokenBalance":[5970],"PoolConfigBits":[4364],"PoolConfigLib":[29980],"Rounding":[4514],"SafeCast":[44126],"SafeERC20":[39626],"VaultAdmin":[24309],"VaultCommon":[25145],"VaultExtensionsLib":[30601],"VaultGuard":[27688],"VaultStateBits":[30607],"VaultStateLib":[30748]},"id":24310,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":22338,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:65"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":22340,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":39627,"src":"72:84:65","symbolAliases":[{"foreign":{"id":22339,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39626,"src":"81:9:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":22342,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":44127,"src":"157:75:65","symbolAliases":[{"foreign":{"id":22341,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"166:8:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":22344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":38999,"src":"233:75:65","symbolAliases":[{"foreign":{"id":22343,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"242:8:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":22346,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":39275,"src":"309:72:65","symbolAliases":[{"foreign":{"id":22345,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"318:6:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","id":22348,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":2231,"src":"383:113:65","symbolAliases":[{"foreign":{"id":22347,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"392:22:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","id":22350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":1317,"src":"497:91:65","symbolAliases":[{"foreign":{"id":22349,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"506:11:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","id":22352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":3184,"src":"589:91:65","symbolAliases":[{"foreign":{"id":22351,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"598:11:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":22354,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":4654,"src":"681:87:65","symbolAliases":[{"foreign":{"id":22353,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"690:8:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":22356,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":2894,"src":"769:81:65","symbolAliases":[{"foreign":{"id":22355,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"778:6:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","id":22358,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":5971,"src":"852:111:65","symbolAliases":[{"foreign":{"id":22357,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"861:18:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","id":22360,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":5494,"src":"964:111:65","symbolAliases":[{"foreign":{"id":22359,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"973:18:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol","id":22362,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":5328,"src":"1076:103:65","symbolAliases":[{"foreign":{"id":22361,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5327,"src":"1085:14:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":22364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":7835,"src":"1180:92:65","symbolAliases":[{"foreign":{"id":22363,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"1189:10:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol","file":"./lib/VaultStateLib.sol","id":22367,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":30749,"src":"1274:72:65","symbolAliases":[{"foreign":{"id":22365,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1283:14:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":22366,"name":"VaultStateLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30748,"src":"1299:13:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"./lib/PoolConfigLib.sol","id":22370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":29981,"src":"1347:72:65","symbolAliases":[{"foreign":{"id":22368,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"1356:13:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":22369,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"1371:14:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol","file":"./lib/VaultExtensionsLib.sol","id":22372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":30602,"src":"1420:66:65","symbolAliases":[{"foreign":{"id":22371,"name":"VaultExtensionsLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30601,"src":"1429:18:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultCommon.sol","file":"./VaultCommon.sol","id":22374,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":25146,"src":"1487:48:65","symbolAliases":[{"foreign":{"id":22373,"name":"VaultCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25145,"src":"1496:11:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultGuard.sol","file":"./VaultGuard.sol","id":22376,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":24310,"sourceUnit":27689,"src":"1536:46:65","symbolAliases":[{"foreign":{"id":22375,"name":"VaultGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27688,"src":"1545:10:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22378,"name":"IVaultAdmin","nameLocations":["2095:11:65"],"nodeType":"IdentifierPath","referencedDeclaration":3183,"src":"2095:11:65"},"id":22379,"nodeType":"InheritanceSpecifier","src":"2095:11:65"},{"baseName":{"id":22380,"name":"VaultCommon","nameLocations":["2108:11:65"],"nodeType":"IdentifierPath","referencedDeclaration":25145,"src":"2108:11:65"},"id":22381,"nodeType":"InheritanceSpecifier","src":"2108:11:65"},{"baseName":{"id":22382,"name":"Authentication","nameLocations":["2121:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":5327,"src":"2121:14:65"},"id":22383,"nodeType":"InheritanceSpecifier","src":"2121:14:65"},{"baseName":{"id":22384,"name":"VaultGuard","nameLocations":["2137:10:65"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"2137:10:65"},"id":22385,"nodeType":"InheritanceSpecifier","src":"2137:10:65"}],"canonicalName":"VaultAdmin","contractDependencies":[],"contractKind":"contract","documentation":{"id":22377,"nodeType":"StructuredDocumentation","src":"1584:487:65","text":" @dev Bytecode extension for the Vault containing permissioned functions. Complementary to `VaultExtension`,\n it has access to the same storage layout as the main vault.\n The functions in this contract are not meant to be called directly. They must only be called by the Vault\n via delegate calls, so that any state modifications produced by this contract's code will actually target\n the main Vault's state.\n The storage of this contract is in practice unused."},"fullyImplemented":true,"id":24309,"internalFunctionIDs":{"6093":1,"6114":2},"linearizedBaseContracts":[24309,27688,5327,130,25145,38828,1685,39065,9568,27923,3550,3789,3183],"name":"VaultAdmin","nameLocation":"2081:10:65","nodeType":"ContractDefinition","nodes":[{"global":false,"id":22388,"libraryName":{"id":22386,"name":"PackedTokenBalance","nameLocations":["2160:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":5970,"src":"2160:18:65"},"nodeType":"UsingForDirective","src":"2154:37:65","typeName":{"id":22387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":22392,"libraryName":{"id":22389,"name":"PoolConfigLib","nameLocations":["2202:13:65"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"2202:13:65"},"nodeType":"UsingForDirective","src":"2196:39:65","typeName":{"id":22391,"nodeType":"UserDefinedTypeName","pathNode":{"id":22390,"name":"PoolConfigBits","nameLocations":["2220:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2220:14:65"},"referencedDeclaration":4364,"src":"2220:14:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":22396,"libraryName":{"id":22393,"name":"VaultStateLib","nameLocations":["2246:13:65"],"nodeType":"IdentifierPath","referencedDeclaration":30748,"src":"2246:13:65"},"nodeType":"UsingForDirective","src":"2240:39:65","typeName":{"id":22395,"nodeType":"UserDefinedTypeName","pathNode":{"id":22394,"name":"VaultStateBits","nameLocations":["2264:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"2264:14:65"},"referencedDeclaration":30607,"src":"2264:14:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}},{"global":false,"id":22400,"libraryName":{"id":22397,"name":"VaultExtensionsLib","nameLocations":["2290:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":30601,"src":"2290:18:65"},"nodeType":"UsingForDirective","src":"2284:36:65","typeName":{"id":22399,"nodeType":"UserDefinedTypeName","pathNode":{"id":22398,"name":"IVault","nameLocations":["2313:6:65"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"2313:6:65"},"referencedDeclaration":2893,"src":"2313:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}},{"global":false,"id":22403,"libraryName":{"id":22401,"name":"FixedPoint","nameLocations":["2331:10:65"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"2331:10:65"},"nodeType":"UsingForDirective","src":"2325:29:65","typeName":{"id":22402,"name":"uint256","nodeType":"ElementaryTypeName","src":"2346:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":22407,"libraryName":{"id":22404,"name":"SafeERC20","nameLocations":["2365:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":39626,"src":"2365:9:65"},"nodeType":"UsingForDirective","src":"2359:27:65","typeName":{"id":22406,"nodeType":"UserDefinedTypeName","pathNode":{"id":22405,"name":"IERC20","nameLocations":["2379:6:65"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2379:6:65"},"referencedDeclaration":39274,"src":"2379:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}},{"global":false,"id":22409,"libraryName":{"id":22408,"name":"SafeCast","nameLocations":["2397:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"2397:8:65"},"nodeType":"UsingForDirective","src":"2391:21:65"},{"constant":true,"id":22412,"mutability":"constant","name":"_BUFFER_MINIMUM_TOTAL_SUPPLY","nameLocation":"2498:28:65","nodeType":"VariableDeclaration","scope":24309,"src":"2472:60:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22410,"name":"uint256","nodeType":"ElementaryTypeName","src":"2472:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"316534","id":22411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2529:3:65","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"1e4"},"visibility":"internal"},{"body":{"id":22421,"nodeType":"Block","src":"2656:60:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22415,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"2666:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":22417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2673:23:65","memberName":"ensureVaultDelegateCall","nodeType":"MemberAccess","referencedDeclaration":30600,"src":"2666:30:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVault_$2893_$returns$__$attached_to$_t_contract$_IVault_$2893_$","typeString":"function (contract IVault) view"}},"id":22418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2666:32:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22419,"nodeType":"ExpressionStatement","src":"2666:32:65"},{"id":22420,"nodeType":"PlaceholderStatement","src":"2708:1:65"}]},"documentation":{"id":22413,"nodeType":"StructuredDocumentation","src":"2539:79:65","text":"@dev Functions with this modifier can only be delegate-called by the Vault."},"id":22422,"name":"onlyVaultDelegateCall","nameLocation":"2632:21:65","nodeType":"ModifierDefinition","parameters":{"id":22414,"nodeType":"ParameterList","parameters":[],"src":"2653:2:65"},"src":"2623:93:65","virtual":false,"visibility":"internal"},{"body":{"id":22438,"nodeType":"Block","src":"2841:128:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":22431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22425,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2855:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":22426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2859:6:65","memberName":"sender","nodeType":"MemberAccess","src":"2855:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":22429,"name":"_protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27826,"src":"2877:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}],"id":22428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2869:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22427,"name":"address","nodeType":"ElementaryTypeName","src":"2869:7:65","typeDescriptions":{}}},"id":22430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2869:31:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2855:45:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22436,"nodeType":"IfStatement","src":"2851:101:65","trueBody":{"id":22435,"nodeType":"Block","src":"2902:50:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22432,"name":"SenderNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121,"src":"2923:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2923:18:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22434,"nodeType":"RevertStatement","src":"2916:25:65"}]}},{"id":22437,"nodeType":"PlaceholderStatement","src":"2961:1:65"}]},"documentation":{"id":22423,"nodeType":"StructuredDocumentation","src":"2722:77:65","text":"@dev Functions with this modifier can only be called by the pool creator."},"id":22439,"name":"onlyProtocolFeeController","nameLocation":"2813:25:65","nodeType":"ModifierDefinition","parameters":{"id":22424,"nodeType":"ParameterList","parameters":[],"src":"2838:2:65"},"src":"2804:165:65","virtual":false,"visibility":"internal"},{"body":{"id":22454,"nodeType":"Block","src":"3084:135:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22444,"name":"aggregatePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22442,"src":"3098:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":22445,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"3120:10:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":22446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3131:3:65","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"3120:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3098:36:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22452,"nodeType":"IfStatement","src":"3094:108:65","trueBody":{"id":22451,"nodeType":"Block","src":"3136:66:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22448,"name":"ProtocolFeesExceedTotalCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3389,"src":"3157:32:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3157:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22450,"nodeType":"RevertStatement","src":"3150:41:65"}]}},{"id":22453,"nodeType":"PlaceholderStatement","src":"3211:1:65"}]},"documentation":{"id":22440,"nodeType":"StructuredDocumentation","src":"2975:46:65","text":"@dev Validate aggregate percentage values."},"id":22455,"name":"withValidPercentage","nameLocation":"3035:19:65","nodeType":"ModifierDefinition","parameters":{"id":22443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22442,"mutability":"mutable","name":"aggregatePercentage","nameLocation":"3063:19:65","nodeType":"VariableDeclaration","scope":22455,"src":"3055:27:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22441,"name":"uint256","nodeType":"ElementaryTypeName","src":"3055:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3054:29:65"},"src":"3026:193:65","virtual":false,"visibility":"internal"},{"body":{"id":22535,"nodeType":"Block","src":"3489:700:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22487,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22460,"src":"3503:19:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":22488,"name":"_MAX_PAUSE_WINDOW_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27728,"src":"3525:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3503:48:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22494,"nodeType":"IfStatement","src":"3499:120:65","trueBody":{"id":22493,"nodeType":"Block","src":"3553:66:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22490,"name":"VaultPauseWindowDurationTooLarge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"3574:32:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3574:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22492,"nodeType":"RevertStatement","src":"3567:41:65"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22495,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22462,"src":"3632:20:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":22496,"name":"_MAX_BUFFER_PERIOD_DURATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27731,"src":"3655:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3632:50:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22502,"nodeType":"IfStatement","src":"3628:123:65","trueBody":{"id":22501,"nodeType":"Block","src":"3684:67:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22498,"name":"PauseBufferPeriodDurationTooLarge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"3705:33:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3705:35:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22500,"nodeType":"RevertStatement","src":"3698:42:65"}]}},{"assignments":[22504],"declarations":[{"constant":false,"id":22504,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"3822:18:65","nodeType":"VariableDeclaration","scope":22535,"src":"3815:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22503,"name":"uint32","nodeType":"ElementaryTypeName","src":"3815:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":22512,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22505,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3844:5:65","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":22506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3850:9:65","memberName":"timestamp","nodeType":"MemberAccess","src":"3844:15:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22507,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22460,"src":"3862:19:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3844:37:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22509,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3843:39:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3883:8:65","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":43182,"src":"3843:48:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint32)"}},"id":22511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3843:50:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"3815:78:65"},{"expression":{"id":22515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22513,"name":"_vaultPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27804,"src":"3904:24:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22514,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22504,"src":"3931:18:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3904:45:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":22516,"nodeType":"ExpressionStatement","src":"3904:45:65"},{"expression":{"id":22519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22517,"name":"_vaultBufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27808,"src":"3959:26:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22518,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22462,"src":"3988:20:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3959:49:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":22520,"nodeType":"ExpressionStatement","src":"3959:49:65"},{"expression":{"id":22525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22521,"name":"_vaultBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27806,"src":"4018:25:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":22524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22522,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22504,"src":"4046:18:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":22523,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22462,"src":"4067:20:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4046:41:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4018:69:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":22526,"nodeType":"ExpressionStatement","src":"4018:69:65"},{"expression":{"id":22529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22527,"name":"_MINIMUM_TRADE_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27733,"src":"4098:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22528,"name":"minTradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22464,"src":"4122:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4098:38:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22530,"nodeType":"ExpressionStatement","src":"4098:38:65"},{"expression":{"id":22533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22531,"name":"_MINIMUM_WRAP_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27735,"src":"4146:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22532,"name":"minWrapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22466,"src":"4169:13:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4146:36:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22534,"nodeType":"ExpressionStatement","src":"4146:36:65"}]},"id":22536,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":22477,"name":"mainVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22458,"src":"3452:9:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":22476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3444:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22475,"name":"address","nodeType":"ElementaryTypeName","src":"3444:7:65","typeDescriptions":{}}},"id":22478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:18:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3436:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":22473,"name":"uint160","nodeType":"ElementaryTypeName","src":"3436:7:65","typeDescriptions":{}}},"id":22479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3436:27:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":22472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3428:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22471,"name":"uint256","nodeType":"ElementaryTypeName","src":"3428:7:65","typeDescriptions":{}}},"id":22480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3428:36:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3420:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":22469,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3420:7:65","typeDescriptions":{}}},"id":22481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3420:45:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":22482,"kind":"baseConstructorSpecifier","modifierName":{"id":22468,"name":"Authentication","nameLocations":["3405:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":5327,"src":"3405:14:65"},"nodeType":"ModifierInvocation","src":"3405:61:65"},{"arguments":[{"id":22484,"name":"mainVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22458,"src":"3478:9:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":22485,"kind":"baseConstructorSpecifier","modifierName":{"id":22483,"name":"VaultGuard","nameLocations":["3467:10:65"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"3467:10:65"},"nodeType":"ModifierInvocation","src":"3467:21:65"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":22467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22458,"mutability":"mutable","name":"mainVault","nameLocation":"3253:9:65","nodeType":"VariableDeclaration","scope":22536,"src":"3246:16:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":22457,"nodeType":"UserDefinedTypeName","pathNode":{"id":22456,"name":"IVault","nameLocations":["3246:6:65"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"3246:6:65"},"referencedDeclaration":2893,"src":"3246:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":22460,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"3279:19:65","nodeType":"VariableDeclaration","scope":22536,"src":"3272:26:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22459,"name":"uint32","nodeType":"ElementaryTypeName","src":"3272:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":22462,"mutability":"mutable","name":"bufferPeriodDuration","nameLocation":"3315:20:65","nodeType":"VariableDeclaration","scope":22536,"src":"3308:27:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22461,"name":"uint32","nodeType":"ElementaryTypeName","src":"3308:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":22464,"mutability":"mutable","name":"minTradeAmount","nameLocation":"3353:14:65","nodeType":"VariableDeclaration","scope":22536,"src":"3345:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22463,"name":"uint256","nodeType":"ElementaryTypeName","src":"3345:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22466,"mutability":"mutable","name":"minWrapAmount","nameLocation":"3385:13:65","nodeType":"VariableDeclaration","scope":22536,"src":"3377:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22465,"name":"uint256","nodeType":"ElementaryTypeName","src":"3377:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3236:168:65"},"returnParameters":{"id":22486,"nodeType":"ParameterList","parameters":[],"src":"3489:0:65"},"scope":24309,"src":"3225:964:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2911],"body":{"id":22545,"nodeType":"Block","src":"4502:30:65","statements":[{"expression":{"id":22543,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"4519:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"functionReturnParameters":22542,"id":22544,"nodeType":"Return","src":"4512:13:65"}]},"documentation":{"id":22537,"nodeType":"StructuredDocumentation","src":"4422:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"fbfa77cf","id":22546,"implemented":true,"kind":"function","modifiers":[],"name":"vault","nameLocation":"4463:5:65","nodeType":"FunctionDefinition","parameters":{"id":22538,"nodeType":"ParameterList","parameters":[],"src":"4468:2:65"},"returnParameters":{"id":22542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22546,"src":"4494:6:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":22540,"nodeType":"UserDefinedTypeName","pathNode":{"id":22539,"name":"IVault","nameLocations":["4494:6:65"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"4494:6:65"},"referencedDeclaration":2893,"src":"4494:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"4493:8:65"},"scope":24309,"src":"4454:78:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2917],"body":{"id":22554,"nodeType":"Block","src":"4634:48:65","statements":[{"expression":{"id":22552,"name":"_vaultPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27804,"src":"4651:24:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":22551,"id":22553,"nodeType":"Return","src":"4644:31:65"}]},"documentation":{"id":22547,"nodeType":"StructuredDocumentation","src":"4538:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"8a8d123a","id":22555,"implemented":true,"kind":"function","modifiers":[],"name":"getPauseWindowEndTime","nameLocation":"4579:21:65","nodeType":"FunctionDefinition","parameters":{"id":22548,"nodeType":"ParameterList","parameters":[],"src":"4600:2:65"},"returnParameters":{"id":22551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22550,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22555,"src":"4626:6:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22549,"name":"uint32","nodeType":"ElementaryTypeName","src":"4626:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4625:8:65"},"scope":24309,"src":"4570:112:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2923],"body":{"id":22563,"nodeType":"Block","src":"4786:50:65","statements":[{"expression":{"id":22561,"name":"_vaultBufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27808,"src":"4803:26:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":22560,"id":22562,"nodeType":"Return","src":"4796:33:65"}]},"documentation":{"id":22556,"nodeType":"StructuredDocumentation","src":"4688:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"20c1fb7a","id":22564,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferPeriodDuration","nameLocation":"4729:23:65","nodeType":"FunctionDefinition","parameters":{"id":22557,"nodeType":"ParameterList","parameters":[],"src":"4752:2:65"},"returnParameters":{"id":22560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22564,"src":"4778:6:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22558,"name":"uint32","nodeType":"ElementaryTypeName","src":"4778:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4777:8:65"},"scope":24309,"src":"4720:116:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2929],"body":{"id":22572,"nodeType":"Block","src":"4939:49:65","statements":[{"expression":{"id":22570,"name":"_vaultBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27806,"src":"4956:25:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":22569,"id":22571,"nodeType":"Return","src":"4949:32:65"}]},"documentation":{"id":22565,"nodeType":"StructuredDocumentation","src":"4842:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"cd51c12f","id":22573,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferPeriodEndTime","nameLocation":"4883:22:65","nodeType":"FunctionDefinition","parameters":{"id":22566,"nodeType":"ParameterList","parameters":[],"src":"4905:2:65"},"returnParameters":{"id":22569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22573,"src":"4931:6:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22567,"name":"uint32","nodeType":"ElementaryTypeName","src":"4931:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4930:8:65"},"scope":24309,"src":"4874:114:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2935],"body":{"id":22581,"nodeType":"Block","src":"5090:35:65","statements":[{"expression":{"id":22579,"name":"_MIN_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27717,"src":"5107:11:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22578,"id":22580,"nodeType":"Return","src":"5100:18:65"}]},"documentation":{"id":22574,"nodeType":"StructuredDocumentation","src":"4994:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"a8175b27","id":22582,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumPoolTokens","nameLocation":"5035:20:65","nodeType":"FunctionDefinition","parameters":{"id":22575,"nodeType":"ParameterList","parameters":[],"src":"5055:2:65"},"returnParameters":{"id":22578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22582,"src":"5081:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22576,"name":"uint256","nodeType":"ElementaryTypeName","src":"5081:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5080:9:65"},"scope":24309,"src":"5026:99:65","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2941],"body":{"id":22590,"nodeType":"Block","src":"5227:35:65","statements":[{"expression":{"id":22588,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27720,"src":"5244:11:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22587,"id":22589,"nodeType":"Return","src":"5237:18:65"}]},"documentation":{"id":22583,"nodeType":"StructuredDocumentation","src":"5131:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"2e42f4d5","id":22591,"implemented":true,"kind":"function","modifiers":[],"name":"getMaximumPoolTokens","nameLocation":"5172:20:65","nodeType":"FunctionDefinition","parameters":{"id":22584,"nodeType":"ParameterList","parameters":[],"src":"5192:2:65"},"returnParameters":{"id":22587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22591,"src":"5218:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22585,"name":"uint256","nodeType":"ElementaryTypeName","src":"5218:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5217:9:65"},"scope":24309,"src":"5163:99:65","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2947],"body":{"id":22599,"nodeType":"Block","src":"5369:50:65","statements":[{"expression":{"id":22597,"name":"_POOL_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"5386:26:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22596,"id":22598,"nodeType":"Return","src":"5379:33:65"}]},"documentation":{"id":22592,"nodeType":"StructuredDocumentation","src":"5268:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"d0965a6b","id":22600,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolMinimumTotalSupply","nameLocation":"5309:25:65","nodeType":"FunctionDefinition","parameters":{"id":22593,"nodeType":"ParameterList","parameters":[],"src":"5334:2:65"},"returnParameters":{"id":22596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22595,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22600,"src":"5360:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22594,"name":"uint256","nodeType":"ElementaryTypeName","src":"5360:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5359:9:65"},"scope":24309,"src":"5300:119:65","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2953],"body":{"id":22608,"nodeType":"Block","src":"5528:52:65","statements":[{"expression":{"id":22606,"name":"_BUFFER_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"5545:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22605,"id":22607,"nodeType":"Return","src":"5538:35:65"}]},"documentation":{"id":22601,"nodeType":"StructuredDocumentation","src":"5425:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"26a8a991","id":22609,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferMinimumTotalSupply","nameLocation":"5466:27:65","nodeType":"FunctionDefinition","parameters":{"id":22602,"nodeType":"ParameterList","parameters":[],"src":"5493:2:65"},"returnParameters":{"id":22605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22609,"src":"5519:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22603,"name":"uint256","nodeType":"ElementaryTypeName","src":"5519:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5518:9:65"},"scope":24309,"src":"5457:123:65","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2959],"body":{"id":22617,"nodeType":"Block","src":"5683:45:65","statements":[{"expression":{"id":22615,"name":"_MINIMUM_TRADE_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27733,"src":"5700:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22614,"id":22616,"nodeType":"Return","src":"5693:28:65"}]},"documentation":{"id":22610,"nodeType":"StructuredDocumentation","src":"5586:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"e2cb0ba0","id":22618,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumTradeAmount","nameLocation":"5627:21:65","nodeType":"FunctionDefinition","parameters":{"id":22611,"nodeType":"ParameterList","parameters":[],"src":"5648:2:65"},"returnParameters":{"id":22614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22618,"src":"5674:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22612,"name":"uint256","nodeType":"ElementaryTypeName","src":"5674:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5673:9:65"},"scope":24309,"src":"5618:110:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2965],"body":{"id":22626,"nodeType":"Block","src":"5830:44:65","statements":[{"expression":{"id":22624,"name":"_MINIMUM_WRAP_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27735,"src":"5847:20:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22623,"id":22625,"nodeType":"Return","src":"5840:27:65"}]},"documentation":{"id":22619,"nodeType":"StructuredDocumentation","src":"5734:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"53956aa2","id":22627,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumWrapAmount","nameLocation":"5775:20:65","nodeType":"FunctionDefinition","parameters":{"id":22620,"nodeType":"ParameterList","parameters":[],"src":"5795:2:65"},"returnParameters":{"id":22623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22627,"src":"5821:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22621,"name":"uint256","nodeType":"ElementaryTypeName","src":"5821:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5820:9:65"},"scope":24309,"src":"5766:108:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2971],"body":{"id":22638,"nodeType":"Block","src":"6209:40:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22635,"name":"_isVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24553,"src":"6226:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":22636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6226:16:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":22634,"id":22637,"nodeType":"Return","src":"6219:23:65"}]},"documentation":{"id":22628,"nodeType":"StructuredDocumentation","src":"6101:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"098401f5","id":22639,"implemented":true,"kind":"function","modifiers":[{"id":22631,"kind":"modifierInvocation","modifierName":{"id":22630,"name":"onlyVaultDelegateCall","nameLocations":["6172:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"6172:21:65"},"nodeType":"ModifierInvocation","src":"6172:21:65"}],"name":"isVaultPaused","nameLocation":"6142:13:65","nodeType":"FunctionDefinition","parameters":{"id":22629,"nodeType":"ParameterList","parameters":[],"src":"6155:2:65"},"returnParameters":{"id":22634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22639,"src":"6203:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22632,"name":"bool","nodeType":"ElementaryTypeName","src":"6203:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6202:6:65"},"scope":24309,"src":"6133:116:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2981],"body":{"id":22657,"nodeType":"Block","src":"6385:95:65","statements":[{"expression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"id":22651,"name":"_isVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24553,"src":"6403:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":22652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6403:16:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":22653,"name":"_vaultPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27804,"src":"6421:24:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":22654,"name":"_vaultBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27806,"src":"6447:25:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":22655,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6402:71:65","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint32_$","typeString":"tuple(bool,uint32,uint32)"}},"functionReturnParameters":22650,"id":22656,"nodeType":"Return","src":"6395:78:65"}]},"documentation":{"id":22640,"nodeType":"StructuredDocumentation","src":"6255:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"85c8c015","id":22658,"implemented":true,"kind":"function","modifiers":[{"id":22643,"kind":"modifierInvocation","modifierName":{"id":22642,"name":"onlyVaultDelegateCall","nameLocations":["6332:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"6332:21:65"},"nodeType":"ModifierInvocation","src":"6332:21:65"}],"name":"getVaultPausedState","nameLocation":"6296:19:65","nodeType":"FunctionDefinition","parameters":{"id":22641,"nodeType":"ParameterList","parameters":[],"src":"6315:2:65"},"returnParameters":{"id":22650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22645,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22658,"src":"6363:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22644,"name":"bool","nodeType":"ElementaryTypeName","src":"6363:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22647,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22658,"src":"6369:6:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22646,"name":"uint32","nodeType":"ElementaryTypeName","src":"6369:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":22649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22658,"src":"6377:6:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":22648,"name":"uint32","nodeType":"ElementaryTypeName","src":"6377:6:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6362:22:65"},"scope":24309,"src":"6287:193:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2985],"body":{"id":22670,"nodeType":"Block","src":"6584:38:65","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":22667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6610:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22666,"name":"_setVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22738,"src":"6594:15:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":22668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:21:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22669,"nodeType":"ExpressionStatement","src":"6594:21:65"}]},"documentation":{"id":22659,"nodeType":"StructuredDocumentation","src":"6486:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"9e0879c2","id":22671,"implemented":true,"kind":"function","modifiers":[{"id":22662,"kind":"modifierInvocation","modifierName":{"id":22661,"name":"onlyVaultDelegateCall","nameLocations":["6549:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"6549:21:65"},"nodeType":"ModifierInvocation","src":"6549:21:65"},{"id":22664,"kind":"modifierInvocation","modifierName":{"id":22663,"name":"authenticate","nameLocations":["6571:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"6571:12:65"},"nodeType":"ModifierInvocation","src":"6571:12:65"}],"name":"pauseVault","nameLocation":"6527:10:65","nodeType":"FunctionDefinition","parameters":{"id":22660,"nodeType":"ParameterList","parameters":[],"src":"6537:2:65"},"returnParameters":{"id":22665,"nodeType":"ParameterList","parameters":[],"src":"6584:0:65"},"scope":24309,"src":"6518:104:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2989],"body":{"id":22683,"nodeType":"Block","src":"6728:39:65","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":22680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6754:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22679,"name":"_setVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22738,"src":"6738:15:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":22681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6738:22:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22682,"nodeType":"ExpressionStatement","src":"6738:22:65"}]},"documentation":{"id":22672,"nodeType":"StructuredDocumentation","src":"6628:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"0b7562be","id":22684,"implemented":true,"kind":"function","modifiers":[{"id":22675,"kind":"modifierInvocation","modifierName":{"id":22674,"name":"onlyVaultDelegateCall","nameLocations":["6693:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"6693:21:65"},"nodeType":"ModifierInvocation","src":"6693:21:65"},{"id":22677,"kind":"modifierInvocation","modifierName":{"id":22676,"name":"authenticate","nameLocations":["6715:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"6715:12:65"},"nodeType":"ModifierInvocation","src":"6715:12:65"}],"name":"unpauseVault","nameLocation":"6669:12:65","nodeType":"FunctionDefinition","parameters":{"id":22673,"nodeType":"ParameterList","parameters":[],"src":"6681:2:65"},"returnParameters":{"id":22678,"nodeType":"ParameterList","parameters":[],"src":"6728:0:65"},"scope":24309,"src":"6660:107:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22737,"nodeType":"Block","src":"6972:1113:65","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":22690,"name":"_isVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24553,"src":"6986:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":22691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6986:16:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22715,"nodeType":"Block","src":"7433:449:65","statements":[{"condition":{"id":22699,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22687,"src":"7451:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22713,"nodeType":"Block","src":"7753:119:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22710,"name":"VaultNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"7841:14:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7841:16:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22712,"nodeType":"RevertStatement","src":"7834:23:65"}]},"id":22714,"nodeType":"IfStatement","src":"7447:425:65","trueBody":{"id":22709,"nodeType":"Block","src":"7460:287:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22700,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7615:5:65","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":22701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7621:9:65","memberName":"timestamp","nodeType":"MemberAccess","src":"7615:15:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":22702,"name":"_vaultPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27804,"src":"7634:24:65","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7615:43:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22708,"nodeType":"IfStatement","src":"7611:122:65","trueBody":{"id":22707,"nodeType":"Block","src":"7660:73:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22704,"name":"VaultPauseWindowExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"7689:23:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7689:25:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22706,"nodeType":"RevertStatement","src":"7682:32:65"}]}}]}}]},"id":22716,"nodeType":"IfStatement","src":"6982:900:65","trueBody":{"id":22698,"nodeType":"Block","src":"7004:423:65","statements":[{"condition":{"id":22692,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22687,"src":"7022:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22697,"nodeType":"IfStatement","src":"7018:137:65","trueBody":{"id":22696,"nodeType":"Block","src":"7031:124:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22693,"name":"VaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"7127:11:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7127:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22695,"nodeType":"RevertStatement","src":"7120:20:65"}]}}]}},{"assignments":[22719],"declarations":[{"constant":false,"id":22719,"mutability":"mutable","name":"vaultState","nameLocation":"7907:10:65","nodeType":"VariableDeclaration","scope":22737,"src":"7892:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":22718,"nodeType":"UserDefinedTypeName","pathNode":{"id":22717,"name":"VaultStateBits","nameLocations":["7892:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"7892:14:65"},"referencedDeclaration":30607,"src":"7892:14:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"id":22721,"initialValue":{"id":22720,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"7920:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"VariableDeclarationStatement","src":"7892:43:65"},{"expression":{"id":22727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22722,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22719,"src":"7945:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22725,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22687,"src":"7984:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":22723,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22719,"src":"7958:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":22724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7969:14:65","memberName":"setVaultPaused","nodeType":"MemberAccess","referencedDeclaration":30706,"src":"7958:25:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$_t_bool_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits,bool) pure returns (VaultStateBits)"}},"id":22726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7958:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"7945:47:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":22728,"nodeType":"ExpressionStatement","src":"7945:47:65"},{"expression":{"id":22731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22729,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"8002:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22730,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22719,"src":"8020:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"8002:28:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":22732,"nodeType":"ExpressionStatement","src":"8002:28:65"},{"eventCall":{"arguments":[{"id":22734,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22687,"src":"8070:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22733,"name":"VaultPausedStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"8046:23:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":22735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8046:32:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22736,"nodeType":"EmitStatement","src":"8041:37:65"}]},"documentation":{"id":22685,"nodeType":"StructuredDocumentation","src":"6773:146:65","text":" @dev The contract can only be paused until the end of the Pause Window, and\n unpaused until the end of the Buffer Period."},"id":22738,"implemented":true,"kind":"function","modifiers":[],"name":"_setVaultPaused","nameLocation":"6933:15:65","nodeType":"FunctionDefinition","parameters":{"id":22688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22687,"mutability":"mutable","name":"pausing","nameLocation":"6954:7:65","nodeType":"VariableDeclaration","scope":22738,"src":"6949:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22686,"name":"bool","nodeType":"ElementaryTypeName","src":"6949:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6948:14:65"},"returnParameters":{"id":22689,"nodeType":"ParameterList","parameters":[],"src":"6972:0:65"},"scope":24309,"src":"6924:1161:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2995],"body":{"id":22754,"nodeType":"Block","src":"8433:43:65","statements":[{"expression":{"arguments":[{"id":22750,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22741,"src":"8458:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":22751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8464:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22749,"name":"_setPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22842,"src":"8443:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":22752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:26:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22753,"nodeType":"ExpressionStatement","src":"8443:26:65"}]},"documentation":{"id":22739,"nodeType":"StructuredDocumentation","src":"8312:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"55aca1ec","id":22755,"implemented":true,"kind":"function","modifiers":[{"id":22744,"kind":"modifierInvocation","modifierName":{"id":22743,"name":"onlyVaultDelegateCall","nameLocations":["8386:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"8386:21:65"},"nodeType":"ModifierInvocation","src":"8386:21:65"},{"arguments":[{"id":22746,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22741,"src":"8427:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":22747,"kind":"modifierInvocation","modifierName":{"id":22745,"name":"withRegisteredPool","nameLocations":["8408:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"8408:18:65"},"nodeType":"ModifierInvocation","src":"8408:24:65"}],"name":"pausePool","nameLocation":"8353:9:65","nodeType":"FunctionDefinition","parameters":{"id":22742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22741,"mutability":"mutable","name":"pool","nameLocation":"8371:4:65","nodeType":"VariableDeclaration","scope":22755,"src":"8363:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22740,"name":"address","nodeType":"ElementaryTypeName","src":"8363:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8362:14:65"},"returnParameters":{"id":22748,"nodeType":"ParameterList","parameters":[],"src":"8433:0:65"},"scope":24309,"src":"8344:132:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3001],"body":{"id":22771,"nodeType":"Block","src":"8605:44:65","statements":[{"expression":{"arguments":[{"id":22767,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22758,"src":"8630:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":22768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8636:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22766,"name":"_setPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22842,"src":"8615:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":22769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8615:27:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22770,"nodeType":"ExpressionStatement","src":"8615:27:65"}]},"documentation":{"id":22756,"nodeType":"StructuredDocumentation","src":"8482:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"f21c38cd","id":22772,"implemented":true,"kind":"function","modifiers":[{"id":22761,"kind":"modifierInvocation","modifierName":{"id":22760,"name":"onlyVaultDelegateCall","nameLocations":["8558:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"8558:21:65"},"nodeType":"ModifierInvocation","src":"8558:21:65"},{"arguments":[{"id":22763,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22758,"src":"8599:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":22764,"kind":"modifierInvocation","modifierName":{"id":22762,"name":"withRegisteredPool","nameLocations":["8580:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"8580:18:65"},"nodeType":"ModifierInvocation","src":"8580:24:65"}],"name":"unpausePool","nameLocation":"8523:11:65","nodeType":"FunctionDefinition","parameters":{"id":22759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22758,"mutability":"mutable","name":"pool","nameLocation":"8543:4:65","nodeType":"VariableDeclaration","scope":22772,"src":"8535:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22757,"name":"address","nodeType":"ElementaryTypeName","src":"8535:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8534:14:65"},"returnParameters":{"id":22765,"nodeType":"ParameterList","parameters":[],"src":"8605:0:65"},"scope":24309,"src":"8514:135:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22841,"nodeType":"Block","src":"8716:1220:65","statements":[{"expression":{"arguments":[{"id":22780,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"8753:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":22781,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"8759:17:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":22783,"indexExpression":{"id":22782,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"8777:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8759:23:65","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"id":22784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8783:12:65","memberName":"pauseManager","nodeType":"MemberAccess","referencedDeclaration":4454,"src":"8759:36:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22779,"name":"_ensureAuthenticatedByRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24185,"src":"8726:26:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) view"}},"id":22785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8726:70:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22786,"nodeType":"ExpressionStatement","src":"8726:70:65"},{"assignments":[22789],"declarations":[{"constant":false,"id":22789,"mutability":"mutable","name":"config","nameLocation":"8822:6:65","nodeType":"VariableDeclaration","scope":22841,"src":"8807:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":22788,"nodeType":"UserDefinedTypeName","pathNode":{"id":22787,"name":"PoolConfigBits","nameLocations":["8807:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"8807:14:65"},"referencedDeclaration":4364,"src":"8807:14:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":22793,"initialValue":{"baseExpression":{"id":22790,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"8831:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":22792,"indexExpression":{"id":22791,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"8847:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8831:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"8807:45:65"},{"condition":{"arguments":[{"id":22795,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"8881:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22794,"name":"_isPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24586,"src":"8867:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":22796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8867:19:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22825,"nodeType":"Block","src":"9318:461:65","statements":[{"condition":{"id":22805,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"9336:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":22823,"nodeType":"Block","src":"9647:122:65","statements":[{"errorCall":{"arguments":[{"id":22820,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"9749:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22819,"name":"PoolNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3447,"src":"9735:13:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":22821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9735:19:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22822,"nodeType":"RevertStatement","src":"9728:26:65"}]},"id":22824,"nodeType":"IfStatement","src":"9332:437:65","trueBody":{"id":22818,"nodeType":"Block","src":"9345:296:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22806,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9500:5:65","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":22807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9506:9:65","memberName":"timestamp","nodeType":"MemberAccess","src":"9500:15:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22808,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22789,"src":"9519:6:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":22809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9526:21:65","memberName":"getPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":29904,"src":"9519:28:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint32)"}},"id":22810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9519:30:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9500:49:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22817,"nodeType":"IfStatement","src":"9496:131:65","trueBody":{"id":22816,"nodeType":"Block","src":"9551:76:65","statements":[{"errorCall":{"arguments":[{"id":22813,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"9603:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22812,"name":"PoolPauseWindowExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3452,"src":"9580:22:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":22814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9580:28:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22815,"nodeType":"RevertStatement","src":"9573:35:65"}]}}]}}]},"id":22826,"nodeType":"IfStatement","src":"8863:916:65","trueBody":{"id":22804,"nodeType":"Block","src":"8888:424:65","statements":[{"condition":{"id":22797,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"8906:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22803,"nodeType":"IfStatement","src":"8902:140:65","trueBody":{"id":22802,"nodeType":"Block","src":"8915:127:65","statements":[{"errorCall":{"arguments":[{"id":22799,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"9022:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22798,"name":"PoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3442,"src":"9011:10:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":22800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9011:16:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22801,"nodeType":"RevertStatement","src":"9004:23:65"}]}}]}},{"expression":{"id":22834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":22827,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"9823:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":22829,"indexExpression":{"id":22828,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"9839:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9823:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22832,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"9868:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":22830,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22789,"src":"9847:6:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":22831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9854:13:65","memberName":"setPoolPaused","nodeType":"MemberAccess","referencedDeclaration":29287,"src":"9847:20:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":22833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9847:29:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9823:53:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":22835,"nodeType":"ExpressionStatement","src":"9823:53:65"},{"eventCall":{"arguments":[{"id":22837,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22774,"src":"9915:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22838,"name":"pausing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22776,"src":"9921:7:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22836,"name":"PoolPausedStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"9892:22:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":22839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9892:37:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22840,"nodeType":"EmitStatement","src":"9887:42:65"}]},"id":22842,"implemented":true,"kind":"function","modifiers":[],"name":"_setPoolPaused","nameLocation":"8664:14:65","nodeType":"FunctionDefinition","parameters":{"id":22777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22774,"mutability":"mutable","name":"pool","nameLocation":"8687:4:65","nodeType":"VariableDeclaration","scope":22842,"src":"8679:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22773,"name":"address","nodeType":"ElementaryTypeName","src":"8679:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22776,"mutability":"mutable","name":"pausing","nameLocation":"8698:7:65","nodeType":"VariableDeclaration","scope":22842,"src":"8693:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22775,"name":"bool","nodeType":"ElementaryTypeName","src":"8693:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8678:28:65"},"returnParameters":{"id":22778,"nodeType":"ParameterList","parameters":[],"src":"8716:0:65"},"scope":24309,"src":"8655:1281:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3009],"body":{"id":22872,"nodeType":"Block","src":"10346:192:65","statements":[{"expression":{"arguments":[{"id":22856,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22845,"src":"10392:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":22857,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"10398:17:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":22859,"indexExpression":{"id":22858,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22845,"src":"10416:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10398:23:65","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"id":22860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10422:14:65","memberName":"swapFeeManager","nodeType":"MemberAccess","referencedDeclaration":4456,"src":"10398:38:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":22855,"name":"_ensureAuthenticatedByExclusiveRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24215,"src":"10356:35:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) view"}},"id":22861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10356:81:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22862,"nodeType":"ExpressionStatement","src":"10356:81:65"},{"expression":{"arguments":[{"id":22864,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22845,"src":"10463:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22863,"name":"_ensureUnpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24537,"src":"10447:15:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":22865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:21:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22866,"nodeType":"ExpressionStatement","src":"10447:21:65"},{"expression":{"arguments":[{"id":22868,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22845,"src":"10507:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22869,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22847,"src":"10513:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22867,"name":"_setStaticSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25045,"src":"10479:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":22870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:52:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22871,"nodeType":"ExpressionStatement","src":"10479:52:65"}]},"documentation":{"id":22843,"nodeType":"StructuredDocumentation","src":"10159:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"d15126ba","id":22873,"implemented":true,"kind":"function","modifiers":[{"id":22850,"kind":"modifierInvocation","modifierName":{"id":22849,"name":"onlyVaultDelegateCall","nameLocations":["10299:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"10299:21:65"},"nodeType":"ModifierInvocation","src":"10299:21:65"},{"arguments":[{"id":22852,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22845,"src":"10340:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":22853,"kind":"modifierInvocation","modifierName":{"id":22851,"name":"withRegisteredPool","nameLocations":["10321:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"10321:18:65"},"nodeType":"ModifierInvocation","src":"10321:24:65"}],"name":"setStaticSwapFeePercentage","nameLocation":"10200:26:65","nodeType":"FunctionDefinition","parameters":{"id":22848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22845,"mutability":"mutable","name":"pool","nameLocation":"10244:4:65","nodeType":"VariableDeclaration","scope":22873,"src":"10236:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22844,"name":"address","nodeType":"ElementaryTypeName","src":"10236:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22847,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"10266:17:65","nodeType":"VariableDeclaration","scope":22873,"src":"10258:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22846,"name":"uint256","nodeType":"ElementaryTypeName","src":"10258:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10226:63:65"},"returnParameters":{"id":22854,"nodeType":"ParameterList","parameters":[],"src":"10346:0:65"},"scope":24309,"src":"10191:347:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3021],"body":{"id":22993,"nodeType":"Block","src":"10857:714:65","statements":[{"assignments":[22898],"declarations":[{"constant":false,"id":22898,"mutability":"mutable","name":"poolTokens","nameLocation":"10883:10:65","nodeType":"VariableDeclaration","scope":22993,"src":"10867:26:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":22896,"nodeType":"UserDefinedTypeName","pathNode":{"id":22895,"name":"IERC20","nameLocations":["10867:6:65"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10867:6:65"},"referencedDeclaration":39274,"src":"10867:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":22897,"nodeType":"ArrayTypeName","src":"10867:8:65","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":22903,"initialValue":{"arguments":[{"id":22901,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22876,"src":"10917:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22899,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"10896:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":22900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10903:13:65","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"10896:20:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":22902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10896:26:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10867:55:65"},{"assignments":[22905],"declarations":[{"constant":false,"id":22905,"mutability":"mutable","name":"numTokens","nameLocation":"10940:9:65","nodeType":"VariableDeclaration","scope":22993,"src":"10932:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22904,"name":"uint256","nodeType":"ElementaryTypeName","src":"10932:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22908,"initialValue":{"expression":{"id":22906,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22898,"src":"10952:10:65","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":22907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10963:6:65","memberName":"length","nodeType":"MemberAccess","src":"10952:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10932:37:65"},{"expression":{"id":22915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22909,"name":"totalSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22889,"src":"10980:13:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22913,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22905,"src":"11010:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"10996:13:65","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":22910,"name":"uint256","nodeType":"ElementaryTypeName","src":"11000:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22911,"nodeType":"ArrayTypeName","src":"11000:9:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":22914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10996:24:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"10980:40:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22916,"nodeType":"ExpressionStatement","src":"10980:40:65"},{"expression":{"id":22923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22917,"name":"totalYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22892,"src":"11030:14:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":22921,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22905,"src":"11061:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11047:13:65","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":22918,"name":"uint256","nodeType":"ElementaryTypeName","src":"11051:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22919,"nodeType":"ArrayTypeName","src":"11051:9:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":22922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11047:24:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"11030:41:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22924,"nodeType":"ExpressionStatement","src":"11030:41:65"},{"body":{"id":22991,"nodeType":"Block","src":"11130:435:65","statements":[{"assignments":[22938],"declarations":[{"constant":false,"id":22938,"mutability":"mutable","name":"token","nameLocation":"11151:5:65","nodeType":"VariableDeclaration","scope":22991,"src":"11144:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":22937,"nodeType":"UserDefinedTypeName","pathNode":{"id":22936,"name":"IERC20","nameLocations":["11144:6:65"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"11144:6:65"},"referencedDeclaration":39274,"src":"11144:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":22942,"initialValue":{"baseExpression":{"id":22939,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22898,"src":"11159:10:65","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":22941,"indexExpression":{"id":22940,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11170:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11159:13:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"11144:28:65"},{"expression":{"id":22957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":22943,"name":"totalSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22889,"src":"11188:13:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22945,"indexExpression":{"id":22944,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11202:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11188:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":22946,"name":"totalYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22892,"src":"11206:14:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22948,"indexExpression":{"id":22947,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11221:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11206:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22949,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11187:37:65","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"baseExpression":{"id":22950,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"11227:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":22952,"indexExpression":{"id":22951,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22876,"src":"11248:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11227:26:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":22954,"indexExpression":{"id":22953,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22938,"src":"11254:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11227:33:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11261:17:65","memberName":"fromPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"11227:51:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256,uint256)"}},"id":22956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11227:53:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"11187:93:65","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22958,"nodeType":"ExpressionStatement","src":"11187:93:65"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":22969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22959,"name":"totalSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22889,"src":"11299:13:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22961,"indexExpression":{"id":22960,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11313:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11299:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11318:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11299:20:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22964,"name":"totalYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22892,"src":"11323:14:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22966,"indexExpression":{"id":22965,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11338:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11323:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":22967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11343:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11323:21:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11299:45:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22990,"nodeType":"IfStatement","src":"11295:260:65","trueBody":{"id":22989,"nodeType":"Block","src":"11346:209:65","statements":[{"expression":{"id":22976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":22970,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"11427:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":22973,"indexExpression":{"id":22971,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22876,"src":"11448:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11427:26:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":22974,"indexExpression":{"id":22972,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22938,"src":"11454:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11427:33:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":22975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11463:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11427:37:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":22977,"nodeType":"ExpressionStatement","src":"11427:37:65"},{"expression":{"arguments":[{"id":22979,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22938,"src":"11496:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":22980,"name":"totalSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22889,"src":"11503:13:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22982,"indexExpression":{"id":22981,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11517:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11503:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"id":22983,"name":"totalYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22892,"src":"11522:14:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":22985,"indexExpression":{"id":22984,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11537:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11522:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11503:36:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22978,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"11482:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":22987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11482:58:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22988,"nodeType":"ExpressionStatement","src":"11482:58:65"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22929,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11102:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":22930,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22898,"src":"11106:10:65","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":22931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11117:6:65","memberName":"length","nodeType":"MemberAccess","src":"11106:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11102:21:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22992,"initializationExpression":{"assignments":[22926],"declarations":[{"constant":false,"id":22926,"mutability":"mutable","name":"i","nameLocation":"11095:1:65","nodeType":"VariableDeclaration","scope":22992,"src":"11087:9:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22925,"name":"uint256","nodeType":"ElementaryTypeName","src":"11087:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22928,"initialValue":{"hexValue":"30","id":22927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11099:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11087:13:65"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":22934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11125:3:65","subExpression":{"id":22933,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"11127:1:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22935,"nodeType":"ExpressionStatement","src":"11125:3:65"},"nodeType":"ForStatement","src":"11082:483:65"}]},"documentation":{"id":22874,"nodeType":"StructuredDocumentation","src":"10544:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"8f4ab9ca","id":22994,"implemented":true,"kind":"function","modifiers":[{"id":22879,"kind":"modifierInvocation","modifierName":{"id":22878,"name":"onlyVaultDelegateCall","nameLocations":["10657:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"10657:21:65"},"nodeType":"ModifierInvocation","src":"10657:21:65"},{"id":22881,"kind":"modifierInvocation","modifierName":{"id":22880,"name":"onlyWhenUnlocked","nameLocations":["10687:16:65"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"10687:16:65"},"nodeType":"ModifierInvocation","src":"10687:16:65"},{"id":22883,"kind":"modifierInvocation","modifierName":{"id":22882,"name":"onlyProtocolFeeController","nameLocations":["10712:25:65"],"nodeType":"IdentifierPath","referencedDeclaration":22439,"src":"10712:25:65"},"nodeType":"ModifierInvocation","src":"10712:25:65"},{"arguments":[{"id":22885,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22876,"src":"10765:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":22886,"kind":"modifierInvocation","modifierName":{"id":22884,"name":"withRegisteredPool","nameLocations":["10746:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"10746:18:65"},"nodeType":"ModifierInvocation","src":"10746:24:65"}],"name":"collectAggregateFees","nameLocation":"10585:20:65","nodeType":"FunctionDefinition","parameters":{"id":22877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22876,"mutability":"mutable","name":"pool","nameLocation":"10623:4:65","nodeType":"VariableDeclaration","scope":22994,"src":"10615:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22875,"name":"address","nodeType":"ElementaryTypeName","src":"10615:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10605:28:65"},"returnParameters":{"id":22893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22889,"mutability":"mutable","name":"totalSwapFees","nameLocation":"10805:13:65","nodeType":"VariableDeclaration","scope":22994,"src":"10788:30:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":22887,"name":"uint256","nodeType":"ElementaryTypeName","src":"10788:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22888,"nodeType":"ArrayTypeName","src":"10788:9:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":22892,"mutability":"mutable","name":"totalYieldFees","nameLocation":"10837:14:65","nodeType":"VariableDeclaration","scope":22994,"src":"10820:31:65","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":22890,"name":"uint256","nodeType":"ElementaryTypeName","src":"10820:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22891,"nodeType":"ArrayTypeName","src":"10820:9:65","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"10787:65:65"},"scope":24309,"src":"10576:995:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3029],"body":{"id":23028,"nodeType":"Block","src":"11903:209:65","statements":[{"expression":{"id":23021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23012,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"11913:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":23014,"indexExpression":{"id":23013,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22997,"src":"11929:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11913:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23019,"name":"newAggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22999,"src":"11989:29:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":23015,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"11937:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":23017,"indexExpression":{"id":23016,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22997,"src":"11953:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11937:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":23018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11959:29:65","memberName":"setAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29701,"src":"11937:51:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":23020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11937:82:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11913:106:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":23022,"nodeType":"ExpressionStatement","src":"11913:106:65"},{"eventCall":{"arguments":[{"id":23024,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22997,"src":"12069:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23025,"name":"newAggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22999,"src":"12075:29:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23023,"name":"AggregateSwapFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"12035:33:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":23026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12035:70:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23027,"nodeType":"EmitStatement","src":"12030:75:65"}]},"documentation":{"id":22995,"nodeType":"StructuredDocumentation","src":"11577:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"5e0b06f4","id":23029,"implemented":true,"kind":"function","modifiers":[{"id":23002,"kind":"modifierInvocation","modifierName":{"id":23001,"name":"onlyVaultDelegateCall","nameLocations":["11751:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"11751:21:65"},"nodeType":"ModifierInvocation","src":"11751:21:65"},{"arguments":[{"id":23004,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22997,"src":"11800:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":23005,"kind":"modifierInvocation","modifierName":{"id":23003,"name":"withRegisteredPool","nameLocations":["11781:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"11781:18:65"},"nodeType":"ModifierInvocation","src":"11781:24:65"},{"arguments":[{"id":23007,"name":"newAggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22999,"src":"11834:29:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23008,"kind":"modifierInvocation","modifierName":{"id":23006,"name":"withValidPercentage","nameLocations":["11814:19:65"],"nodeType":"IdentifierPath","referencedDeclaration":22455,"src":"11814:19:65"},"nodeType":"ModifierInvocation","src":"11814:50:65"},{"id":23010,"kind":"modifierInvocation","modifierName":{"id":23009,"name":"onlyProtocolFeeController","nameLocations":["11873:25:65"],"nodeType":"IdentifierPath","referencedDeclaration":22439,"src":"11873:25:65"},"nodeType":"ModifierInvocation","src":"11873:25:65"}],"name":"updateAggregateSwapFeePercentage","nameLocation":"11618:32:65","nodeType":"FunctionDefinition","parameters":{"id":23000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22997,"mutability":"mutable","name":"pool","nameLocation":"11668:4:65","nodeType":"VariableDeclaration","scope":23029,"src":"11660:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22996,"name":"address","nodeType":"ElementaryTypeName","src":"11660:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22999,"mutability":"mutable","name":"newAggregateSwapFeePercentage","nameLocation":"11690:29:65","nodeType":"VariableDeclaration","scope":23029,"src":"11682:37:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22998,"name":"uint256","nodeType":"ElementaryTypeName","src":"11682:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11650:75:65"},"returnParameters":{"id":23011,"nodeType":"ParameterList","parameters":[],"src":"11903:0:65"},"scope":24309,"src":"11609:503:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3037],"body":{"id":23063,"nodeType":"Block","src":"12447:213:65","statements":[{"expression":{"id":23056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23047,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"12457:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":23049,"indexExpression":{"id":23048,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23032,"src":"12473:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12457:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23054,"name":"newAggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23034,"src":"12534:30:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":23050,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"12481:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":23052,"indexExpression":{"id":23051,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23032,"src":"12497:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12481:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":23053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12503:30:65","memberName":"setAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29762,"src":"12481:52:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":23055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12481:84:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"12457:108:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":23057,"nodeType":"ExpressionStatement","src":"12457:108:65"},{"eventCall":{"arguments":[{"id":23059,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23032,"src":"12616:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23060,"name":"newAggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23034,"src":"12622:30:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23058,"name":"AggregateYieldFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3718,"src":"12581:34:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":23061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12581:72:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23062,"nodeType":"EmitStatement","src":"12576:77:65"}]},"documentation":{"id":23030,"nodeType":"StructuredDocumentation","src":"12118:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"e253670a","id":23064,"implemented":true,"kind":"function","modifiers":[{"id":23037,"kind":"modifierInvocation","modifierName":{"id":23036,"name":"onlyVaultDelegateCall","nameLocations":["12294:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"12294:21:65"},"nodeType":"ModifierInvocation","src":"12294:21:65"},{"arguments":[{"id":23039,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23032,"src":"12343:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":23040,"kind":"modifierInvocation","modifierName":{"id":23038,"name":"withRegisteredPool","nameLocations":["12324:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"12324:18:65"},"nodeType":"ModifierInvocation","src":"12324:24:65"},{"arguments":[{"id":23042,"name":"newAggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23034,"src":"12377:30:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23043,"kind":"modifierInvocation","modifierName":{"id":23041,"name":"withValidPercentage","nameLocations":["12357:19:65"],"nodeType":"IdentifierPath","referencedDeclaration":22455,"src":"12357:19:65"},"nodeType":"ModifierInvocation","src":"12357:51:65"},{"id":23045,"kind":"modifierInvocation","modifierName":{"id":23044,"name":"onlyProtocolFeeController","nameLocations":["12417:25:65"],"nodeType":"IdentifierPath","referencedDeclaration":22439,"src":"12417:25:65"},"nodeType":"ModifierInvocation","src":"12417:25:65"}],"name":"updateAggregateYieldFeePercentage","nameLocation":"12159:33:65","nodeType":"FunctionDefinition","parameters":{"id":23035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23032,"mutability":"mutable","name":"pool","nameLocation":"12210:4:65","nodeType":"VariableDeclaration","scope":23064,"src":"12202:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23031,"name":"address","nodeType":"ElementaryTypeName","src":"12202:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23034,"mutability":"mutable","name":"newAggregateYieldFeePercentage","nameLocation":"12232:30:65","nodeType":"VariableDeclaration","scope":23064,"src":"12224:38:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23033,"name":"uint256","nodeType":"ElementaryTypeName","src":"12224:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12192:76:65"},"returnParameters":{"id":23046,"nodeType":"ParameterList","parameters":[],"src":"12447:0:65"},"scope":24309,"src":"12150:510:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3044],"body":{"id":23085,"nodeType":"Block","src":"12852:136:65","statements":[{"expression":{"id":23079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23077,"name":"_protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27826,"src":"12862:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23078,"name":"newProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23068,"src":"12887:24:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"src":"12862:49:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"id":23080,"nodeType":"ExpressionStatement","src":"12862:49:65"},{"eventCall":{"arguments":[{"id":23082,"name":"newProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23068,"src":"12956:24:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}],"id":23081,"name":"ProtocolFeeControllerChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3730,"src":"12927:28:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IProtocolFeeController_$2230_$returns$__$","typeString":"function (contract IProtocolFeeController)"}},"id":23083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12927:54:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23084,"nodeType":"EmitStatement","src":"12922:59:65"}]},"documentation":{"id":23065,"nodeType":"StructuredDocumentation","src":"12666:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"2d771389","id":23086,"implemented":true,"kind":"function","modifiers":[{"id":23071,"kind":"modifierInvocation","modifierName":{"id":23070,"name":"onlyVaultDelegateCall","nameLocations":["12804:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"12804:21:65"},"nodeType":"ModifierInvocation","src":"12804:21:65"},{"id":23073,"kind":"modifierInvocation","modifierName":{"id":23072,"name":"authenticate","nameLocations":["12826:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"12826:12:65"},"nodeType":"ModifierInvocation","src":"12826:12:65"},{"id":23075,"kind":"modifierInvocation","modifierName":{"id":23074,"name":"nonReentrant","nameLocations":["12839:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"12839:12:65"},"nodeType":"ModifierInvocation","src":"12839:12:65"}],"name":"setProtocolFeeController","nameLocation":"12707:24:65","nodeType":"FunctionDefinition","parameters":{"id":23069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23068,"mutability":"mutable","name":"newProtocolFeeController","nameLocation":"12764:24:65","nodeType":"VariableDeclaration","scope":23086,"src":"12741:47:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":23067,"nodeType":"UserDefinedTypeName","pathNode":{"id":23066,"name":"IProtocolFeeController","nameLocations":["12741:22:65"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"12741:22:65"},"referencedDeclaration":2230,"src":"12741:22:65","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"}],"src":"12731:63:65"},"returnParameters":{"id":23076,"nodeType":"ParameterList","parameters":[],"src":"12852:0:65"},"scope":24309,"src":"12698:290:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3050],"body":{"id":23121,"nodeType":"Block","src":"13345:378:65","statements":[{"expression":{"arguments":[{"id":23098,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23089,"src":"13384:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23097,"name":"_ensurePoolNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23161,"src":"13355:28:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":23099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13355:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23100,"nodeType":"ExpressionStatement","src":"13355:34:65"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23102,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23089,"src":"13515:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23101,"name":"_isPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24586,"src":"13501:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":23103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13501:19:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":23104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13524:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"13501:28:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":23106,"name":"_isVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24553,"src":"13533:14:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":23107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13533:16:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":23108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13553:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"13533:25:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13501:57:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23115,"nodeType":"IfStatement","src":"13497:177:65","trueBody":{"id":23114,"nodeType":"Block","src":"13560:114:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":23111,"name":"_authenticateCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5298,"src":"13642:19:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":23112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13642:21:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23113,"nodeType":"ExpressionStatement","src":"13642:21:65"}]}},{"expression":{"arguments":[{"id":23117,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23089,"src":"13705:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":23118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13711:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":23116,"name":"_setPoolRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23195,"src":"13684:20:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":23119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13684:32:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23120,"nodeType":"ExpressionStatement","src":"13684:32:65"}]},"documentation":{"id":23087,"nodeType":"StructuredDocumentation","src":"13215:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"dc3f574e","id":23122,"implemented":true,"kind":"function","modifiers":[{"id":23092,"kind":"modifierInvocation","modifierName":{"id":23091,"name":"onlyVaultDelegateCall","nameLocations":["13298:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"13298:21:65"},"nodeType":"ModifierInvocation","src":"13298:21:65"},{"arguments":[{"id":23094,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23089,"src":"13339:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":23095,"kind":"modifierInvocation","modifierName":{"id":23093,"name":"withRegisteredPool","nameLocations":["13320:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"13320:18:65"},"nodeType":"ModifierInvocation","src":"13320:24:65"}],"name":"enableRecoveryMode","nameLocation":"13256:18:65","nodeType":"FunctionDefinition","parameters":{"id":23090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23089,"mutability":"mutable","name":"pool","nameLocation":"13283:4:65","nodeType":"VariableDeclaration","scope":23122,"src":"13275:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23088,"name":"address","nodeType":"ElementaryTypeName","src":"13275:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13274:14:65"},"returnParameters":{"id":23096,"nodeType":"ParameterList","parameters":[],"src":"13345:0:65"},"scope":24309,"src":"13247:476:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3056],"body":{"id":23144,"nodeType":"Block","src":"13873:91:65","statements":[{"expression":{"arguments":[{"id":23136,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23125,"src":"13909:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23135,"name":"_ensurePoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25113,"src":"13883:25:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":23137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13883:31:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23138,"nodeType":"ExpressionStatement","src":"13883:31:65"},{"expression":{"arguments":[{"id":23140,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23125,"src":"13945:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":23141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13951:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":23139,"name":"_setPoolRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23195,"src":"13924:20:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":23142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13924:33:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23143,"nodeType":"ExpressionStatement","src":"13924:33:65"}]},"documentation":{"id":23123,"nodeType":"StructuredDocumentation","src":"13729:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"bffb78b2","id":23145,"implemented":true,"kind":"function","modifiers":[{"id":23128,"kind":"modifierInvocation","modifierName":{"id":23127,"name":"onlyVaultDelegateCall","nameLocations":["13813:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"13813:21:65"},"nodeType":"ModifierInvocation","src":"13813:21:65"},{"arguments":[{"id":23130,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23125,"src":"13854:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":23131,"kind":"modifierInvocation","modifierName":{"id":23129,"name":"withRegisteredPool","nameLocations":["13835:18:65"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"13835:18:65"},"nodeType":"ModifierInvocation","src":"13835:24:65"},{"id":23133,"kind":"modifierInvocation","modifierName":{"id":23132,"name":"authenticate","nameLocations":["13860:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"13860:12:65"},"nodeType":"ModifierInvocation","src":"13860:12:65"}],"name":"disableRecoveryMode","nameLocation":"13770:19:65","nodeType":"FunctionDefinition","parameters":{"id":23126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23125,"mutability":"mutable","name":"pool","nameLocation":"13798:4:65","nodeType":"VariableDeclaration","scope":23145,"src":"13790:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23124,"name":"address","nodeType":"ElementaryTypeName","src":"13790:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13789:14:65"},"returnParameters":{"id":23134,"nodeType":"ParameterList","parameters":[],"src":"13873:0:65"},"scope":24309,"src":"13761:203:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":23160,"nodeType":"Block","src":"14133:105:65","statements":[{"condition":{"arguments":[{"id":23152,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23148,"src":"14169:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23151,"name":"_isPoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25128,"src":"14147:21:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":23153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14147:27:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23159,"nodeType":"IfStatement","src":"14143:89:65","trueBody":{"id":23158,"nodeType":"Block","src":"14176:56:65","statements":[{"errorCall":{"arguments":[{"id":23155,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23148,"src":"14216:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23154,"name":"PoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3412,"src":"14197:18:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":23156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14197:24:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23157,"nodeType":"RevertStatement","src":"14190:31:65"}]}}]},"documentation":{"id":23146,"nodeType":"StructuredDocumentation","src":"13970:92:65","text":" @dev Reverts if the pool is in recovery mode.\n @param pool The pool"},"id":23161,"implemented":true,"kind":"function","modifiers":[],"name":"_ensurePoolNotInRecoveryMode","nameLocation":"14076:28:65","nodeType":"FunctionDefinition","parameters":{"id":23149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23148,"mutability":"mutable","name":"pool","nameLocation":"14113:4:65","nodeType":"VariableDeclaration","scope":23161,"src":"14105:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23147,"name":"address","nodeType":"ElementaryTypeName","src":"14105:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14104:14:65"},"returnParameters":{"id":23150,"nodeType":"ParameterList","parameters":[],"src":"14133:0:65"},"scope":24309,"src":"14067:171:65","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":23194,"nodeType":"Block","src":"14608:611:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":23171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23169,"name":"recoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23166,"src":"14622:12:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":23170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14638:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"14622:21:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23177,"nodeType":"IfStatement","src":"14618:92:65","trueBody":{"id":23176,"nodeType":"Block","src":"14645:65:65","statements":[{"expression":{"arguments":[{"id":23173,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23164,"src":"14694:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23172,"name":"_syncPoolBalancesAfterRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23213,"src":"14659:34:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":23174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14659:40:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23175,"nodeType":"ExpressionStatement","src":"14659:40:65"}]}},{"expression":{"id":23187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23178,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"15067:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":23180,"indexExpression":{"id":23179,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23164,"src":"15083:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15067:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23185,"name":"recoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23166,"src":"15135:12:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"baseExpression":{"id":23181,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"15091:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":23183,"indexExpression":{"id":23182,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23164,"src":"15107:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15091:21:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":23184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15113:21:65","memberName":"setPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":29330,"src":"15091:43:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":23186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15091:57:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"15067:81:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":23188,"nodeType":"ExpressionStatement","src":"15067:81:65"},{"eventCall":{"arguments":[{"id":23190,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23164,"src":"15193:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23191,"name":"recoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23166,"src":"15199:12:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":23189,"name":"PoolRecoveryModeStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"15164:28:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":23192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15164:48:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23193,"nodeType":"EmitStatement","src":"15159:53:65"}]},"documentation":{"id":23162,"nodeType":"StructuredDocumentation","src":"14244:287:65","text":" @dev Change the recovery mode state of a pool, and emit an event. Assumes any validation (e.g., whether\n the proposed state change is consistent) has already been done.\n @param pool The pool\n @param recoveryMode The desired recovery mode state"},"id":23195,"implemented":true,"kind":"function","modifiers":[],"name":"_setPoolRecoveryMode","nameLocation":"14545:20:65","nodeType":"FunctionDefinition","parameters":{"id":23167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23164,"mutability":"mutable","name":"pool","nameLocation":"14574:4:65","nodeType":"VariableDeclaration","scope":23195,"src":"14566:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23163,"name":"address","nodeType":"ElementaryTypeName","src":"14566:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23166,"mutability":"mutable","name":"recoveryMode","nameLocation":"14585:12:65","nodeType":"VariableDeclaration","scope":23195,"src":"14580:17:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23165,"name":"bool","nodeType":"ElementaryTypeName","src":"14580:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14565:33:65"},"returnParameters":{"id":23168,"nodeType":"ParameterList","parameters":[],"src":"14608:0:65"},"scope":24309,"src":"14536:683:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":23212,"nodeType":"Block","src":"15610:92:65","statements":[{"expression":{"arguments":[{"id":23204,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23198,"src":"15648:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":23206,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23198,"src":"15668:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":23207,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"15674:8:65","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":23208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15683:10:65","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"15674:19:65","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":23205,"name":"_loadPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24875,"src":"15654:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) view returns (struct PoolData memory)"}},"id":23209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15654:40:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":23203,"name":"_writePoolBalancesToStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24844,"src":"15620:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_PoolData_$4511_memory_ptr_$returns$__$","typeString":"function (address,struct PoolData memory)"}},"id":23210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15620:75:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23211,"nodeType":"ExpressionStatement","src":"15620:75:65"}]},"documentation":{"id":23196,"nodeType":"StructuredDocumentation","src":"15225:301:65","text":" @dev Raw and live balances will diverge as tokens are withdrawn during Recovery Mode. Live balances cannot\n be updated in Recovery Mode, as this would require making external calls to update rates, which could fail.\n When Recovery Mode is disabled, re-sync the balances."},"id":23213,"implemented":true,"kind":"function","modifiers":[{"id":23201,"kind":"modifierInvocation","modifierName":{"id":23200,"name":"nonReentrant","nameLocations":["15597:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"15597:12:65"},"nodeType":"ModifierInvocation","src":"15597:12:65"}],"name":"_syncPoolBalancesAfterRecoveryMode","nameLocation":"15540:34:65","nodeType":"FunctionDefinition","parameters":{"id":23199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23198,"mutability":"mutable","name":"pool","nameLocation":"15583:4:65","nodeType":"VariableDeclaration","scope":23213,"src":"15575:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23197,"name":"address","nodeType":"ElementaryTypeName","src":"15575:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15574:14:65"},"returnParameters":{"id":23202,"nodeType":"ParameterList","parameters":[],"src":"15610:0:65"},"scope":24309,"src":"15531:171:65","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[3060],"body":{"id":23224,"nodeType":"Block","src":"16033:32:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":23221,"name":"_disableQuery","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23264,"src":"16043:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16043:15:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23223,"nodeType":"ExpressionStatement","src":"16043:15:65"}]},"documentation":{"id":23214,"nodeType":"StructuredDocumentation","src":"15933:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"de1a36a6","id":23225,"implemented":true,"kind":"function","modifiers":[{"id":23217,"kind":"modifierInvocation","modifierName":{"id":23216,"name":"onlyVaultDelegateCall","nameLocations":["15998:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"15998:21:65"},"nodeType":"ModifierInvocation","src":"15998:21:65"},{"id":23219,"kind":"modifierInvocation","modifierName":{"id":23218,"name":"authenticate","nameLocations":["16020:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"16020:12:65"},"nodeType":"ModifierInvocation","src":"16020:12:65"}],"name":"disableQuery","nameLocation":"15974:12:65","nodeType":"FunctionDefinition","parameters":{"id":23215,"nodeType":"ParameterList","parameters":[],"src":"15986:2:65"},"returnParameters":{"id":23220,"nodeType":"ParameterList","parameters":[],"src":"16033:0:65"},"scope":24309,"src":"15965:100:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3064],"body":{"id":23240,"nodeType":"Block","src":"16182:76:65","statements":[{"expression":{"id":23235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23233,"name":"_queriesDisabledPermanently","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27820,"src":"16192:27:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":23234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16222:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16192:34:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23236,"nodeType":"ExpressionStatement","src":"16192:34:65"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":23237,"name":"_disableQuery","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23264,"src":"16236:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16236:15:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23239,"nodeType":"ExpressionStatement","src":"16236:15:65"}]},"documentation":{"id":23226,"nodeType":"StructuredDocumentation","src":"16071:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"821440f2","id":23241,"implemented":true,"kind":"function","modifiers":[{"id":23229,"kind":"modifierInvocation","modifierName":{"id":23228,"name":"onlyVaultDelegateCall","nameLocations":["16147:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"16147:21:65"},"nodeType":"ModifierInvocation","src":"16147:21:65"},{"id":23231,"kind":"modifierInvocation","modifierName":{"id":23230,"name":"authenticate","nameLocations":["16169:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"16169:12:65"},"nodeType":"ModifierInvocation","src":"16169:12:65"}],"name":"disableQueryPermanently","nameLocation":"16112:23:65","nodeType":"FunctionDefinition","parameters":{"id":23227,"nodeType":"ParameterList","parameters":[],"src":"16135:2:65"},"returnParameters":{"id":23232,"nodeType":"ParameterList","parameters":[],"src":"16182:0:65"},"scope":24309,"src":"16103:155:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":23263,"nodeType":"Block","src":"16298:192:65","statements":[{"assignments":[23246],"declarations":[{"constant":false,"id":23246,"mutability":"mutable","name":"vaultState","nameLocation":"16323:10:65","nodeType":"VariableDeclaration","scope":23263,"src":"16308:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":23245,"nodeType":"UserDefinedTypeName","pathNode":{"id":23244,"name":"VaultStateBits","nameLocations":["16308:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"16308:14:65"},"referencedDeclaration":30607,"src":"16308:14:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"id":23248,"initialValue":{"id":23247,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"16336:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"VariableDeclarationStatement","src":"16308:43:65"},{"expression":{"id":23254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23249,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23246,"src":"16361:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"74727565","id":23252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16402:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":23250,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23246,"src":"16374:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16385:16:65","memberName":"setQueryDisabled","nodeType":"MemberAccess","referencedDeclaration":30665,"src":"16374:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$_t_bool_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits,bool) pure returns (VaultStateBits)"}},"id":23253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16374:33:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"16361:46:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23255,"nodeType":"ExpressionStatement","src":"16361:46:65"},{"expression":{"id":23258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23256,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"16417:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23257,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23246,"src":"16435:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"16417:28:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23259,"nodeType":"ExpressionStatement","src":"16417:28:65"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23260,"name":"VaultQueriesDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"16461:20:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16461:22:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23262,"nodeType":"EmitStatement","src":"16456:27:65"}]},"id":23264,"implemented":true,"kind":"function","modifiers":[],"name":"_disableQuery","nameLocation":"16273:13:65","nodeType":"FunctionDefinition","parameters":{"id":23242,"nodeType":"ParameterList","parameters":[],"src":"16286:2:65"},"returnParameters":{"id":23243,"nodeType":"ParameterList","parameters":[],"src":"16298:0:65"},"scope":24309,"src":"16264:226:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3068],"body":{"id":23297,"nodeType":"Block","src":"16595:295:65","statements":[{"condition":{"id":23272,"name":"_queriesDisabledPermanently","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27820,"src":"16609:27:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23277,"nodeType":"IfStatement","src":"16605:93:65","trueBody":{"id":23276,"nodeType":"Block","src":"16638:60:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23273,"name":"QueriesDisabledPermanently","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3407,"src":"16659:26:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16659:28:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23275,"nodeType":"RevertStatement","src":"16652:35:65"}]}},{"assignments":[23280],"declarations":[{"constant":false,"id":23280,"mutability":"mutable","name":"vaultState","nameLocation":"16723:10:65","nodeType":"VariableDeclaration","scope":23297,"src":"16708:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":23279,"nodeType":"UserDefinedTypeName","pathNode":{"id":23278,"name":"VaultStateBits","nameLocations":["16708:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"16708:14:65"},"referencedDeclaration":30607,"src":"16708:14:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"id":23282,"initialValue":{"id":23281,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"16736:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"VariableDeclarationStatement","src":"16708:43:65"},{"expression":{"id":23288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23283,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23280,"src":"16761:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"66616c7365","id":23286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16802:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":23284,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23280,"src":"16774:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16785:16:65","memberName":"setQueryDisabled","nodeType":"MemberAccess","referencedDeclaration":30665,"src":"16774:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$_t_bool_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits,bool) pure returns (VaultStateBits)"}},"id":23287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16774:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"16761:47:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23289,"nodeType":"ExpressionStatement","src":"16761:47:65"},{"expression":{"id":23292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23290,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"16818:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23291,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23280,"src":"16836:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"16818:28:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23293,"nodeType":"ExpressionStatement","src":"16818:28:65"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23294,"name":"VaultQueriesEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3683,"src":"16862:19:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":23295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16862:21:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23296,"nodeType":"EmitStatement","src":"16857:26:65"}]},"documentation":{"id":23265,"nodeType":"StructuredDocumentation","src":"16496:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"e0d55605","id":23298,"implemented":true,"kind":"function","modifiers":[{"id":23268,"kind":"modifierInvocation","modifierName":{"id":23267,"name":"onlyVaultDelegateCall","nameLocations":["16560:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"16560:21:65"},"nodeType":"ModifierInvocation","src":"16560:21:65"},{"id":23270,"kind":"modifierInvocation","modifierName":{"id":23269,"name":"authenticate","nameLocations":["16582:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"16582:12:65"},"nodeType":"ModifierInvocation","src":"16582:12:65"}],"name":"enableQuery","nameLocation":"16537:11:65","nodeType":"FunctionDefinition","parameters":{"id":23266,"nodeType":"ParameterList","parameters":[],"src":"16548:2:65"},"returnParameters":{"id":23271,"nodeType":"ParameterList","parameters":[],"src":"16595:0:65"},"scope":24309,"src":"16528:362:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3074],"body":{"id":23310,"nodeType":"Block","src":"17228:58:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23306,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"17245:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17261:16:65","memberName":"areBuffersPaused","nodeType":"MemberAccess","referencedDeclaration":30723,"src":"17245:32:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":23308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17245:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":23305,"id":23309,"nodeType":"Return","src":"17238:41:65"}]},"documentation":{"id":23299,"nodeType":"StructuredDocumentation","src":"17117:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"55cba7fe","id":23311,"implemented":true,"kind":"function","modifiers":[{"id":23302,"kind":"modifierInvocation","modifierName":{"id":23301,"name":"onlyVaultDelegateCall","nameLocations":["17191:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"17191:21:65"},"nodeType":"ModifierInvocation","src":"17191:21:65"}],"name":"areBuffersPaused","nameLocation":"17158:16:65","nodeType":"FunctionDefinition","parameters":{"id":23300,"nodeType":"ParameterList","parameters":[],"src":"17174:2:65"},"returnParameters":{"id":23305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23311,"src":"17222:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23303,"name":"bool","nodeType":"ElementaryTypeName","src":"17222:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17221:6:65"},"scope":24309,"src":"17149:137:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3078],"body":{"id":23323,"nodeType":"Block","src":"17397:48:65","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":23320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17433:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":23319,"name":"_setVaultBufferPauseState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23363,"src":"17407:25:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":23321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17407:31:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23322,"nodeType":"ExpressionStatement","src":"17407:31:65"}]},"documentation":{"id":23312,"nodeType":"StructuredDocumentation","src":"17292:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"e085c5a8","id":23324,"implemented":true,"kind":"function","modifiers":[{"id":23315,"kind":"modifierInvocation","modifierName":{"id":23314,"name":"onlyVaultDelegateCall","nameLocations":["17362:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"17362:21:65"},"nodeType":"ModifierInvocation","src":"17362:21:65"},{"id":23317,"kind":"modifierInvocation","modifierName":{"id":23316,"name":"authenticate","nameLocations":["17384:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"17384:12:65"},"nodeType":"ModifierInvocation","src":"17384:12:65"}],"name":"pauseVaultBuffers","nameLocation":"17333:17:65","nodeType":"FunctionDefinition","parameters":{"id":23313,"nodeType":"ParameterList","parameters":[],"src":"17350:2:65"},"returnParameters":{"id":23318,"nodeType":"ParameterList","parameters":[],"src":"17397:0:65"},"scope":24309,"src":"17324:121:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3082],"body":{"id":23336,"nodeType":"Block","src":"17558:49:65","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":23333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17594:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":23332,"name":"_setVaultBufferPauseState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23363,"src":"17568:25:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":23334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17568:32:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23335,"nodeType":"ExpressionStatement","src":"17568:32:65"}]},"documentation":{"id":23325,"nodeType":"StructuredDocumentation","src":"17451:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"b9212b49","id":23337,"implemented":true,"kind":"function","modifiers":[{"id":23328,"kind":"modifierInvocation","modifierName":{"id":23327,"name":"onlyVaultDelegateCall","nameLocations":["17523:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"17523:21:65"},"nodeType":"ModifierInvocation","src":"17523:21:65"},{"id":23330,"kind":"modifierInvocation","modifierName":{"id":23329,"name":"authenticate","nameLocations":["17545:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"17545:12:65"},"nodeType":"ModifierInvocation","src":"17545:12:65"}],"name":"unpauseVaultBuffers","nameLocation":"17492:19:65","nodeType":"FunctionDefinition","parameters":{"id":23326,"nodeType":"ParameterList","parameters":[],"src":"17511:2:65"},"returnParameters":{"id":23331,"nodeType":"ParameterList","parameters":[],"src":"17558:0:65"},"scope":24309,"src":"17483:124:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":23362,"nodeType":"Block","src":"17669:210:65","statements":[{"assignments":[23344],"declarations":[{"constant":false,"id":23344,"mutability":"mutable","name":"vaultState","nameLocation":"17694:10:65","nodeType":"VariableDeclaration","scope":23362,"src":"17679:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":23343,"nodeType":"UserDefinedTypeName","pathNode":{"id":23342,"name":"VaultStateBits","nameLocations":["17679:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"17679:14:65"},"referencedDeclaration":30607,"src":"17679:14:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"id":23346,"initialValue":{"id":23345,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"17707:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"VariableDeclarationStatement","src":"17679:43:65"},{"expression":{"id":23352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23347,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23344,"src":"17732:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23350,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23339,"src":"17773:6:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":23348,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23344,"src":"17745:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17756:16:65","memberName":"setBuffersPaused","nodeType":"MemberAccess","referencedDeclaration":30747,"src":"17745:27:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$_t_bool_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits,bool) pure returns (VaultStateBits)"}},"id":23351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17745:35:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"17732:48:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23353,"nodeType":"ExpressionStatement","src":"17732:48:65"},{"expression":{"id":23356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23354,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"17790:15:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23355,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23344,"src":"17808:10:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"17790:28:65","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":23357,"nodeType":"ExpressionStatement","src":"17790:28:65"},{"eventCall":{"arguments":[{"id":23359,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23339,"src":"17865:6:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":23358,"name":"VaultBuffersPausedStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"17834:30:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":23360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17834:38:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23361,"nodeType":"EmitStatement","src":"17829:43:65"}]},"id":23363,"implemented":true,"kind":"function","modifiers":[],"name":"_setVaultBufferPauseState","nameLocation":"17622:25:65","nodeType":"FunctionDefinition","parameters":{"id":23340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23339,"mutability":"mutable","name":"paused","nameLocation":"17653:6:65","nodeType":"VariableDeclaration","scope":23363,"src":"17648:11:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23338,"name":"bool","nodeType":"ElementaryTypeName","src":"17648:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17647:13:65"},"returnParameters":{"id":23341,"nodeType":"ParameterList","parameters":[],"src":"17669:0:65"},"scope":24309,"src":"17613:266:65","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[3099],"body":{"id":23496,"nodeType":"Block","src":"18284:2026:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":23395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":23388,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"18298:13:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":23390,"indexExpression":{"id":23389,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"18312:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18298:27:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":23393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18337:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":23392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18329:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23391,"name":"address","nodeType":"ElementaryTypeName","src":"18329:7:65","typeDescriptions":{}}},"id":23394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18329:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18298:41:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23401,"nodeType":"IfStatement","src":"18294:117:65","trueBody":{"id":23400,"nodeType":"Block","src":"18341:70:65","statements":[{"errorCall":{"arguments":[{"id":23397,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"18387:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":23396,"name":"BufferAlreadyInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3458,"src":"18362:24:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC4626_$38998_$returns$_t_error_$","typeString":"function (contract IERC4626) pure returns (error)"}},"id":23398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18362:38:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23399,"nodeType":"RevertStatement","src":"18355:45:65"}]}},{"assignments":[23403],"declarations":[{"constant":false,"id":23403,"mutability":"mutable","name":"underlyingToken","nameLocation":"18429:15:65","nodeType":"VariableDeclaration","scope":23496,"src":"18421:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23402,"name":"address","nodeType":"ElementaryTypeName","src":"18421:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":23407,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23404,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"18447:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":23405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18460:5:65","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"18447:18:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":23406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18447:20:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"18421:46:65"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":23413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23408,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23403,"src":"18482:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":23411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18509:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":23410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18501:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23409,"name":"address","nodeType":"ElementaryTypeName","src":"18501:7:65","typeDescriptions":{}}},"id":23412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18501:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18482:29:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23419,"nodeType":"IfStatement","src":"18478:272:65","trueBody":{"id":23418,"nodeType":"Block","src":"18513:237:65","statements":[{"errorCall":{"arguments":[{"id":23415,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"18726:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":23414,"name":"InvalidUnderlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3481,"src":"18703:22:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC4626_$38998_$returns$_t_error_$","typeString":"function (contract IERC4626) pure returns (error)"}},"id":23416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18703:36:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23417,"nodeType":"RevertStatement","src":"18696:43:65"}]}},{"expression":{"id":23424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23420,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"18819:13:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":23422,"indexExpression":{"id":23421,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"18833:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18819:27:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23423,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23403,"src":"18849:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18819:45:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":23425,"nodeType":"ExpressionStatement","src":"18819:45:65"},{"expression":{"arguments":[{"arguments":[{"id":23428,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23403,"src":"18940:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23427,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"18933:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":23429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18933:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23430,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23369,"src":"18958:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23426,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"18923:9:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":23431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18923:55:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23432,"nodeType":"ExpressionStatement","src":"18923:55:65"},{"expression":{"arguments":[{"id":23434,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"18998:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23435,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23371,"src":"19012:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23433,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"18988:9:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":23436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18988:41:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23437,"nodeType":"ExpressionStatement","src":"18988:41:65"},{"assignments":[23439],"declarations":[{"constant":false,"id":23439,"mutability":"mutable","name":"bufferBalances","nameLocation":"19083:14:65","nodeType":"VariableDeclaration","scope":23496,"src":"19075:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23438,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19075:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":23445,"initialValue":{"arguments":[{"id":23442,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23369,"src":"19135:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23443,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23371,"src":"19156:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23440,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"19100:18:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":23441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19119:15:65","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"19100:34:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":23444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19100:73:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19075:98:65"},{"expression":{"id":23450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23446,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"19183:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":23448,"indexExpression":{"id":23447,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"19204:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19183:34:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23449,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23439,"src":"19220:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19183:51:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23451,"nodeType":"ExpressionStatement","src":"19183:51:65"},{"expression":{"id":23459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23452,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"19555:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":23455,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23371,"src":"19597:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23453,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"19570:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":23454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19583:13:65","memberName":"previewRedeem","nodeType":"MemberAccess","referencedDeclaration":38985,"src":"19570:26:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":23456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19570:44:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23457,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23369,"src":"19617:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19570:66:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19555:81:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23460,"nodeType":"ExpressionStatement","src":"19555:81:65"},{"expression":{"arguments":[{"id":23462,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"19678:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23461,"name":"_ensureBufferMinimumTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"19646:31:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":23463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19646:45:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23464,"nodeType":"ExpressionStatement","src":"19646:45:65"},{"expression":{"id":23467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23465,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"19899:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":23466,"name":"_BUFFER_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"19915:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19899:44:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23468,"nodeType":"ExpressionStatement","src":"19899:44:65"},{"expression":{"arguments":[{"id":23470,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"19986:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":23469,"name":"_mintMinimumBufferSupplyReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23677,"src":"19954:31:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$returns$__$","typeString":"function (contract IERC4626)"}},"id":23471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19954:45:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23472,"nodeType":"ExpressionStatement","src":"19954:45:65"},{"expression":{"arguments":[{"id":23474,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"20027:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23475,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23375,"src":"20041:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23476,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"20054:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23473,"name":"_mintBufferShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23731,"src":"20009:17:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":23477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20009:58:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23478,"nodeType":"ExpressionStatement","src":"20009:58:65"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23479,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"20082:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":23480,"name":"minIssuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23373,"src":"20097:15:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20082:30:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23488,"nodeType":"IfStatement","src":"20078:119:65","trueBody":{"id":23487,"nodeType":"Block","src":"20114:83:65","statements":[{"errorCall":{"arguments":[{"id":23483,"name":"issuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23386,"src":"20156:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23484,"name":"minIssuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23373,"src":"20170:15:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23482,"name":"IssuedSharesBelowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"20135:20:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":23485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20135:51:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23486,"nodeType":"RevertStatement","src":"20128:58:65"}]}},{"eventCall":{"arguments":[{"id":23490,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"20235:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23491,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23369,"src":"20249:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23492,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23371,"src":"20270:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23493,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23439,"src":"20288:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":23489,"name":"LiquidityAddedToBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3742,"src":"20212:22:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (contract IERC4626,uint256,uint256,bytes32)"}},"id":23494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20212:91:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23495,"nodeType":"EmitStatement","src":"20207:96:65"}]},"documentation":{"id":23364,"nodeType":"StructuredDocumentation","src":"17885:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"653eb3b0","id":23497,"implemented":true,"kind":"function","modifiers":[{"id":23378,"kind":"modifierInvocation","modifierName":{"id":23377,"name":"onlyVaultDelegateCall","nameLocations":["18136:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"18136:21:65"},"nodeType":"ModifierInvocation","src":"18136:21:65"},{"id":23380,"kind":"modifierInvocation","modifierName":{"id":23379,"name":"onlyWhenUnlocked","nameLocations":["18166:16:65"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"18166:16:65"},"nodeType":"ModifierInvocation","src":"18166:16:65"},{"id":23382,"kind":"modifierInvocation","modifierName":{"id":23381,"name":"whenVaultBuffersAreNotPaused","nameLocations":["18191:28:65"],"nodeType":"IdentifierPath","referencedDeclaration":24635,"src":"18191:28:65"},"nodeType":"ModifierInvocation","src":"18191:28:65"},{"id":23384,"kind":"modifierInvocation","modifierName":{"id":23383,"name":"nonReentrant","nameLocations":["18228:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"18228:12:65"},"nodeType":"ModifierInvocation","src":"18228:12:65"}],"name":"initializeBuffer","nameLocation":"17926:16:65","nodeType":"FunctionDefinition","parameters":{"id":23376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23367,"mutability":"mutable","name":"wrappedToken","nameLocation":"17961:12:65","nodeType":"VariableDeclaration","scope":23497,"src":"17952:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":23366,"nodeType":"UserDefinedTypeName","pathNode":{"id":23365,"name":"IERC4626","nameLocations":["17952:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"17952:8:65"},"referencedDeclaration":38998,"src":"17952:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":23369,"mutability":"mutable","name":"amountUnderlyingRaw","nameLocation":"17991:19:65","nodeType":"VariableDeclaration","scope":23497,"src":"17983:27:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23368,"name":"uint256","nodeType":"ElementaryTypeName","src":"17983:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23371,"mutability":"mutable","name":"amountWrappedRaw","nameLocation":"18028:16:65","nodeType":"VariableDeclaration","scope":23497,"src":"18020:24:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23370,"name":"uint256","nodeType":"ElementaryTypeName","src":"18020:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23373,"mutability":"mutable","name":"minIssuedShares","nameLocation":"18062:15:65","nodeType":"VariableDeclaration","scope":23497,"src":"18054:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23372,"name":"uint256","nodeType":"ElementaryTypeName","src":"18054:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23375,"mutability":"mutable","name":"sharesOwner","nameLocation":"18095:11:65","nodeType":"VariableDeclaration","scope":23497,"src":"18087:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23374,"name":"address","nodeType":"ElementaryTypeName","src":"18087:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17942:170:65"},"returnParameters":{"id":23387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23386,"mutability":"mutable","name":"issuedShares","nameLocation":"18266:12:65","nodeType":"VariableDeclaration","scope":23497,"src":"18258:20:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23385,"name":"uint256","nodeType":"ElementaryTypeName","src":"18258:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18257:22:65"},"scope":24309,"src":"17917:2393:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3118],"body":{"id":23643,"nodeType":"Block","src":"20809:2167:65","statements":[{"assignments":[23528],"declarations":[{"constant":false,"id":23528,"mutability":"mutable","name":"underlyingToken","nameLocation":"20877:15:65","nodeType":"VariableDeclaration","scope":23643,"src":"20869:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23527,"name":"address","nodeType":"ElementaryTypeName","src":"20869:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":23532,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23529,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"20895:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":23530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20908:5:65","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"20895:18:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":23531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20895:20:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"20869:46:65"},{"expression":{"arguments":[{"id":23534,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"20951:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23535,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23528,"src":"20965:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"}],"id":23533,"name":"_ensureCorrectBufferAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24796,"src":"20925:25:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC4626_$38998_$_t_address_$returns$__$","typeString":"function (contract IERC4626,address) view"}},"id":23536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20925:56:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23537,"nodeType":"ExpressionStatement","src":"20925:56:65"},{"assignments":[23539],"declarations":[{"constant":false,"id":23539,"mutability":"mutable","name":"bufferBalances","nameLocation":"21000:14:65","nodeType":"VariableDeclaration","scope":23643,"src":"20992:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20992:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":23543,"initialValue":{"baseExpression":{"id":23540,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"21017:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":23542,"indexExpression":{"id":23541,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"21038:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21017:34:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20992:59:65"},{"assignments":[23545],"declarations":[{"constant":false,"id":23545,"mutability":"mutable","name":"totalShares","nameLocation":"21618:11:65","nodeType":"VariableDeclaration","scope":23643,"src":"21610:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23544,"name":"uint256","nodeType":"ElementaryTypeName","src":"21610:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23549,"initialValue":{"baseExpression":{"id":23546,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"21632:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":23548,"indexExpression":{"id":23547,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"21651:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21632:32:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21610:54:65"},{"expression":{"id":23558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23550,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23523,"src":"21674:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23555,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23507,"src":"21736:18:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23556,"name":"totalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23545,"src":"21756:11:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23551,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"21696:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21711:13:65","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"21696:28:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21696:30:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21727:8:65","memberName":"mulDivUp","nodeType":"MemberAccess","referencedDeclaration":7660,"src":"21696:39:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":23557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21696:72:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21674:94:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23559,"nodeType":"ExpressionStatement","src":"21674:94:65"},{"expression":{"id":23568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23560,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23525,"src":"21778:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":23565,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23507,"src":"21841:18:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23566,"name":"totalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23545,"src":"21861:11:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23561,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"21797:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21812:17:65","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"21797:32:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21797:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21832:8:65","memberName":"mulDivUp","nodeType":"MemberAccess","referencedDeclaration":7660,"src":"21797:43:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":23567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21797:76:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21778:95:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23569,"nodeType":"ExpressionStatement","src":"21778:95:65"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23570,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23523,"src":"21888:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":23571,"name":"maxAmountUnderlyingInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23503,"src":"21910:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21888:46:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23582,"nodeType":"IfStatement","src":"21884:172:65","trueBody":{"id":23581,"nodeType":"Block","src":"21936:120:65","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":23575,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23528,"src":"21981:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23574,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"21974:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":23576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21974:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23577,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23523,"src":"21999:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23578,"name":"maxAmountUnderlyingInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23503,"src":"22020:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23573,"name":"AmountInAboveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"21957:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":23579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21957:88:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23580,"nodeType":"RevertStatement","src":"21950:95:65"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23583,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23525,"src":"22070:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":23584,"name":"maxAmountWrappedInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23505,"src":"22089:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22070:40:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23595,"nodeType":"IfStatement","src":"22066:157:65","trueBody":{"id":23594,"nodeType":"Block","src":"22112:111:65","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":23588,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"22157:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":23587,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"22150:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":23589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22150:20:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23590,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23525,"src":"22172:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23591,"name":"maxAmountWrappedInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23505,"src":"22190:21:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23586,"name":"AmountInAboveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"22133:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":23592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22133:79:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23593,"nodeType":"RevertStatement","src":"22126:86:65"}]}},{"expression":{"arguments":[{"arguments":[{"id":23598,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23528,"src":"22330:15:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23597,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"22323:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":23599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22323:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23600,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23523,"src":"22348:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23596,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"22313:9:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":23601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22313:55:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23602,"nodeType":"ExpressionStatement","src":"22313:55:65"},{"expression":{"arguments":[{"id":23604,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"22388:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23605,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23525,"src":"22402:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23603,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"22378:9:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":23606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22378:41:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23607,"nodeType":"ExpressionStatement","src":"22378:41:65"},{"expression":{"id":23622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23608,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"22491:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23611,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"22556:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22571:13:65","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"22556:28:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22556:30:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23614,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23523,"src":"22589:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22556:52:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23616,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"22622:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22637:17:65","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"22622:32:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22622:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23619,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23525,"src":"22659:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22622:53:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23609,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"22508:18:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":23610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22527:15:65","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"22508:34:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":23621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22508:177:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22491:194:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23623,"nodeType":"ExpressionStatement","src":"22491:194:65"},{"expression":{"id":23628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23624,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"22695:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":23626,"indexExpression":{"id":23625,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"22716:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22695:34:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23627,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"22732:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22695:51:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23629,"nodeType":"ExpressionStatement","src":"22695:51:65"},{"expression":{"arguments":[{"id":23631,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"22816:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23632,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23509,"src":"22830:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23633,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23507,"src":"22843:18:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23630,"name":"_mintBufferShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23731,"src":"22798:17:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":23634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22798:64:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23635,"nodeType":"ExpressionStatement","src":"22798:64:65"},{"eventCall":{"arguments":[{"id":23637,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"22901:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23638,"name":"amountUnderlyingRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23523,"src":"22915:19:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23639,"name":"amountWrappedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23525,"src":"22936:16:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23640,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23539,"src":"22954:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":23636,"name":"LiquidityAddedToBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3742,"src":"22878:22:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (contract IERC4626,uint256,uint256,bytes32)"}},"id":23641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22878:91:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23642,"nodeType":"EmitStatement","src":"22873:96:65"}]},"documentation":{"id":23498,"nodeType":"StructuredDocumentation","src":"20316:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"e2a92b1a","id":23644,"implemented":true,"kind":"function","modifiers":[{"id":23512,"kind":"modifierInvocation","modifierName":{"id":23511,"name":"onlyVaultDelegateCall","nameLocations":["20584:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"20584:21:65"},"nodeType":"ModifierInvocation","src":"20584:21:65"},{"id":23514,"kind":"modifierInvocation","modifierName":{"id":23513,"name":"onlyWhenUnlocked","nameLocations":["20614:16:65"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"20614:16:65"},"nodeType":"ModifierInvocation","src":"20614:16:65"},{"id":23516,"kind":"modifierInvocation","modifierName":{"id":23515,"name":"whenVaultBuffersAreNotPaused","nameLocations":["20639:28:65"],"nodeType":"IdentifierPath","referencedDeclaration":24635,"src":"20639:28:65"},"nodeType":"ModifierInvocation","src":"20639:28:65"},{"arguments":[{"id":23518,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23501,"src":"20698:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"id":23519,"kind":"modifierInvocation","modifierName":{"id":23517,"name":"withInitializedBuffer","nameLocations":["20676:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":24753,"src":"20676:21:65"},"nodeType":"ModifierInvocation","src":"20676:35:65"},{"id":23521,"kind":"modifierInvocation","modifierName":{"id":23520,"name":"nonReentrant","nameLocations":["20720:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"20720:12:65"},"nodeType":"ModifierInvocation","src":"20720:12:65"}],"name":"addLiquidityToBuffer","nameLocation":"20357:20:65","nodeType":"FunctionDefinition","parameters":{"id":23510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23501,"mutability":"mutable","name":"wrappedToken","nameLocation":"20396:12:65","nodeType":"VariableDeclaration","scope":23644,"src":"20387:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":23500,"nodeType":"UserDefinedTypeName","pathNode":{"id":23499,"name":"IERC4626","nameLocations":["20387:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"20387:8:65"},"referencedDeclaration":38998,"src":"20387:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":23503,"mutability":"mutable","name":"maxAmountUnderlyingInRaw","nameLocation":"20426:24:65","nodeType":"VariableDeclaration","scope":23644,"src":"20418:32:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23502,"name":"uint256","nodeType":"ElementaryTypeName","src":"20418:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23505,"mutability":"mutable","name":"maxAmountWrappedInRaw","nameLocation":"20468:21:65","nodeType":"VariableDeclaration","scope":23644,"src":"20460:29:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23504,"name":"uint256","nodeType":"ElementaryTypeName","src":"20460:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23507,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"20507:18:65","nodeType":"VariableDeclaration","scope":23644,"src":"20499:26:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23506,"name":"uint256","nodeType":"ElementaryTypeName","src":"20499:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23509,"mutability":"mutable","name":"sharesOwner","nameLocation":"20543:11:65","nodeType":"VariableDeclaration","scope":23644,"src":"20535:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23508,"name":"address","nodeType":"ElementaryTypeName","src":"20535:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20377:183:65"},"returnParameters":{"id":23526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23523,"mutability":"mutable","name":"amountUnderlyingRaw","nameLocation":"20758:19:65","nodeType":"VariableDeclaration","scope":23644,"src":"20750:27:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23522,"name":"uint256","nodeType":"ElementaryTypeName","src":"20750:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23525,"mutability":"mutable","name":"amountWrappedRaw","nameLocation":"20787:16:65","nodeType":"VariableDeclaration","scope":23644,"src":"20779:24:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23524,"name":"uint256","nodeType":"ElementaryTypeName","src":"20779:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20749:55:65"},"scope":24309,"src":"20348:2628:65","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":23676,"nodeType":"Block","src":"23055:252:65","statements":[{"expression":{"id":23654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23650,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"23065:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":23652,"indexExpression":{"id":23651,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23647,"src":"23084:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23065:32:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23653,"name":"_BUFFER_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"23100:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23065:63:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23655,"nodeType":"ExpressionStatement","src":"23065:63:65"},{"expression":{"id":23665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":23656,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"23138:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":23662,"indexExpression":{"id":23657,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23647,"src":"23154:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23138:29:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":23663,"indexExpression":{"arguments":[{"hexValue":"30","id":23660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23176:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":23659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23168:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23658,"name":"address","nodeType":"ElementaryTypeName","src":"23168:7:65","typeDescriptions":{}}},"id":23661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23168:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23138:41:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23664,"name":"_BUFFER_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"23182:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23138:72:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23666,"nodeType":"ExpressionStatement","src":"23138:72:65"},{"eventCall":{"arguments":[{"id":23668,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23647,"src":"23245:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"arguments":[{"hexValue":"30","id":23671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23267:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":23670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23259:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23669,"name":"address","nodeType":"ElementaryTypeName","src":"23259:7:65","typeDescriptions":{}}},"id":23672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23259:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23673,"name":"_BUFFER_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"23271:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23667,"name":"BufferSharesMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3752,"src":"23226:18:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":23674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23226:74:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23675,"nodeType":"EmitStatement","src":"23221:79:65"}]},"id":23677,"implemented":true,"kind":"function","modifiers":[],"name":"_mintMinimumBufferSupplyReserve","nameLocation":"22991:31:65","nodeType":"FunctionDefinition","parameters":{"id":23648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23647,"mutability":"mutable","name":"wrappedToken","nameLocation":"23032:12:65","nodeType":"VariableDeclaration","scope":23677,"src":"23023:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":23646,"nodeType":"UserDefinedTypeName","pathNode":{"id":23645,"name":"IERC4626","nameLocations":["23023:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"23023:8:65"},"referencedDeclaration":38998,"src":"23023:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"23022:23:65"},"returnParameters":{"id":23649,"nodeType":"ParameterList","parameters":[],"src":"23055:0:65"},"scope":24309,"src":"22982:325:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":23730,"nodeType":"Block","src":"23400:744:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":23692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23687,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23682,"src":"23414:2:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":23690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23428:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":23689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23420:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23688,"name":"address","nodeType":"ElementaryTypeName","src":"23420:7:65","typeDescriptions":{}}},"id":23691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23420:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23414:16:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23697,"nodeType":"IfStatement","src":"23410:83:65","trueBody":{"id":23696,"nodeType":"Block","src":"23432:61:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23693,"name":"BufferSharesInvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"23453:27:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23453:29:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23695,"nodeType":"RevertStatement","src":"23446:36:65"}]}},{"assignments":[23699],"declarations":[{"constant":false,"id":23699,"mutability":"mutable","name":"newTotalSupply","nameLocation":"23511:14:65","nodeType":"VariableDeclaration","scope":23730,"src":"23503:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23698,"name":"uint256","nodeType":"ElementaryTypeName","src":"23503:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23705,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":23700,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"23528:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":23702,"indexExpression":{"id":23701,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23680,"src":"23547:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23528:32:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23684,"src":"23563:6:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23528:41:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23503:66:65"},{"expression":{"arguments":[{"id":23707,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23699,"src":"23949:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23706,"name":"_ensureBufferMinimumTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"23917:31:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":23708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23917:47:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23709,"nodeType":"ExpressionStatement","src":"23917:47:65"},{"expression":{"id":23714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23710,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"23975:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":23712,"indexExpression":{"id":23711,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23680,"src":"23994:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23975:32:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23713,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23699,"src":"24010:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23975:49:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23715,"nodeType":"ExpressionStatement","src":"23975:49:65"},{"expression":{"id":23722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":23716,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"24034:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":23719,"indexExpression":{"id":23717,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23680,"src":"24050:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24034:29:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":23720,"indexExpression":{"id":23718,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23682,"src":"24064:2:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24034:33:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":23721,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23684,"src":"24071:6:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24034:43:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23723,"nodeType":"ExpressionStatement","src":"24034:43:65"},{"eventCall":{"arguments":[{"id":23725,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23680,"src":"24112:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23726,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23682,"src":"24126:2:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23727,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23684,"src":"24130:6:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23724,"name":"BufferSharesMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3752,"src":"24093:18:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":23728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24093:44:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23729,"nodeType":"EmitStatement","src":"24088:49:65"}]},"id":23731,"implemented":true,"kind":"function","modifiers":[],"name":"_mintBufferShares","nameLocation":"23322:17:65","nodeType":"FunctionDefinition","parameters":{"id":23685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23680,"mutability":"mutable","name":"wrappedToken","nameLocation":"23349:12:65","nodeType":"VariableDeclaration","scope":23731,"src":"23340:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":23679,"nodeType":"UserDefinedTypeName","pathNode":{"id":23678,"name":"IERC4626","nameLocations":["23340:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"23340:8:65"},"referencedDeclaration":38998,"src":"23340:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":23682,"mutability":"mutable","name":"to","nameLocation":"23371:2:65","nodeType":"VariableDeclaration","scope":23731,"src":"23363:10:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23681,"name":"address","nodeType":"ElementaryTypeName","src":"23363:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23684,"mutability":"mutable","name":"amount","nameLocation":"23383:6:65","nodeType":"VariableDeclaration","scope":23731,"src":"23375:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23683,"name":"uint256","nodeType":"ElementaryTypeName","src":"23375:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23339:51:65"},"returnParameters":{"id":23686,"nodeType":"ParameterList","parameters":[],"src":"23400:0:65"},"scope":24309,"src":"23313:831:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3135],"body":{"id":23774,"nodeType":"Block","src":"24480:388:65","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":23756,"name":"VaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24309,"src":"24612:10:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VaultAdmin_$24309_$","typeString":"type(contract VaultAdmin)"}},"id":23757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24623:29:65","memberName":"removeLiquidityFromBufferHook","nodeType":"MemberAccess","referencedDeclaration":23966,"src":"24612:40:65","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function VaultAdmin.removeLiquidityFromBufferHook(contract IERC4626,uint256,uint256,uint256,address) returns (uint256,uint256)"}},{"components":[{"id":23758,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23735,"src":"24679:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23759,"name":"sharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23737,"src":"24693:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23760,"name":"minAmountUnderlyingOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23739,"src":"24709:25:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23761,"name":"minAmountWrappedOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23741,"src":"24736:22:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":23762,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24760:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":23763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24764:6:65","memberName":"sender","nodeType":"MemberAccess","src":"24760:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":23764,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24678:93:65","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$","typeString":"tuple(contract IERC4626,uint256,uint256,uint256,address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function VaultAdmin.removeLiquidityFromBufferHook(contract IERC4626,uint256,uint256,uint256,address) returns (uint256,uint256)"},{"typeIdentifier":"t_tuple$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$","typeString":"tuple(contract IERC4626,uint256,uint256,uint256,address)"}],"expression":{"id":23754,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"24572:3:65","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24576:10:65","memberName":"encodeCall","nodeType":"MemberAccess","src":"24572:14:65","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":23765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24572:221:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":23752,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"24537:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":23753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24544:6:65","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"24537:13:65","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":23766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24537:274:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":23768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24830:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23767,"name":"uint256","nodeType":"ElementaryTypeName","src":"24830:7:65","typeDescriptions":{}}},{"id":23770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24839:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":23769,"name":"uint256","nodeType":"ElementaryTypeName","src":"24839:7:65","typeDescriptions":{}}}],"id":23771,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"24829:18:65","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(uint256))"}],"expression":{"id":23750,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"24509:3:65","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":23751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24513:6:65","memberName":"decode","nodeType":"MemberAccess","src":"24509:10:65","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":23772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24509:352:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":23749,"id":23773,"nodeType":"Return","src":"24490:371:65"}]},"documentation":{"id":23732,"nodeType":"StructuredDocumentation","src":"24150:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"ebc7955c","id":23775,"implemented":true,"kind":"function","modifiers":[{"id":23744,"kind":"modifierInvocation","modifierName":{"id":23743,"name":"onlyVaultDelegateCall","nameLocations":["24378:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"24378:21:65"},"nodeType":"ModifierInvocation","src":"24378:21:65"}],"name":"removeLiquidityFromBuffer","nameLocation":"24191:25:65","nodeType":"FunctionDefinition","parameters":{"id":23742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23735,"mutability":"mutable","name":"wrappedToken","nameLocation":"24235:12:65","nodeType":"VariableDeclaration","scope":23775,"src":"24226:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":23734,"nodeType":"UserDefinedTypeName","pathNode":{"id":23733,"name":"IERC4626","nameLocations":["24226:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"24226:8:65"},"referencedDeclaration":38998,"src":"24226:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":23737,"mutability":"mutable","name":"sharesToRemove","nameLocation":"24265:14:65","nodeType":"VariableDeclaration","scope":23775,"src":"24257:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23736,"name":"uint256","nodeType":"ElementaryTypeName","src":"24257:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23739,"mutability":"mutable","name":"minAmountUnderlyingOutRaw","nameLocation":"24297:25:65","nodeType":"VariableDeclaration","scope":23775,"src":"24289:33:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23738,"name":"uint256","nodeType":"ElementaryTypeName","src":"24289:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23741,"mutability":"mutable","name":"minAmountWrappedOutRaw","nameLocation":"24340:22:65","nodeType":"VariableDeclaration","scope":23775,"src":"24332:30:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23740,"name":"uint256","nodeType":"ElementaryTypeName","src":"24332:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24216:152:65"},"returnParameters":{"id":23749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23746,"mutability":"mutable","name":"removedUnderlyingBalanceRaw","nameLocation":"24417:27:65","nodeType":"VariableDeclaration","scope":23775,"src":"24409:35:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23745,"name":"uint256","nodeType":"ElementaryTypeName","src":"24409:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23748,"mutability":"mutable","name":"removedWrappedBalanceRaw","nameLocation":"24454:24:65","nodeType":"VariableDeclaration","scope":23775,"src":"24446:32:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23747,"name":"uint256","nodeType":"ElementaryTypeName","src":"24446:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24408:71:65"},"scope":24309,"src":"24182:686:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":23965,"nodeType":"Block","src":"26590:2795:65","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":23803,"name":"_isQueryContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25144,"src":"26604:15:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":23804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26604:17:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23812,"nodeType":"IfStatement","src":"26600:241:65","trueBody":{"id":23811,"nodeType":"Block","src":"26623:218:65","statements":[{"expression":{"arguments":[{"id":23806,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"26788:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23807,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23787,"src":"26802:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23808,"name":"sharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23781,"src":"26815:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23805,"name":"_queryModeBufferSharesIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24052,"src":"26757:30:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":23809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26757:73:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23810,"nodeType":"ExpressionStatement","src":"26757:73:65"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23813,"name":"sharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23781,"src":"26855:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"baseExpression":{"id":23814,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"26872:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":23816,"indexExpression":{"id":23815,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"26888:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26872:29:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":23818,"indexExpression":{"id":23817,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23787,"src":"26902:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26872:42:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26855:59:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23824,"nodeType":"IfStatement","src":"26851:120:65","trueBody":{"id":23823,"nodeType":"Block","src":"26916:55:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23820,"name":"NotEnoughBufferShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"26937:21:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26937:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23822,"nodeType":"RevertStatement","src":"26930:30:65"}]}},{"assignments":[23826],"declarations":[{"constant":false,"id":23826,"mutability":"mutable","name":"bufferBalances","nameLocation":"26989:14:65","nodeType":"VariableDeclaration","scope":23965,"src":"26981:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26981:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":23830,"initialValue":{"baseExpression":{"id":23827,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"27006:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":23829,"indexExpression":{"id":23828,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"27027:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27006:34:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"26981:59:65"},{"assignments":[23832],"declarations":[{"constant":false,"id":23832,"mutability":"mutable","name":"totalShares","nameLocation":"27058:11:65","nodeType":"VariableDeclaration","scope":23965,"src":"27050:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23831,"name":"uint256","nodeType":"ElementaryTypeName","src":"27050:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23836,"initialValue":{"baseExpression":{"id":23833,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"27072:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":23835,"indexExpression":{"id":23834,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"27091:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27072:32:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27050:54:65"},{"expression":{"id":23846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23837,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"27115:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23838,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23826,"src":"27146:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27161:13:65","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"27146:28:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27146:30:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23841,"name":"sharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23781,"src":"27179:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27146:47:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23843,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27145:49:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":23844,"name":"totalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23832,"src":"27197:11:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27145:63:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27115:93:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23847,"nodeType":"ExpressionStatement","src":"27115:93:65"},{"expression":{"id":23857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23848,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"27218:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23849,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23826,"src":"27246:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27261:17:65","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"27246:32:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27246:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":23852,"name":"sharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23781,"src":"27283:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27246:51:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":23854,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27245:53:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":23855,"name":"totalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23832,"src":"27301:11:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27245:67:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27218:94:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23858,"nodeType":"ExpressionStatement","src":"27218:94:65"},{"assignments":[23861],"declarations":[{"constant":false,"id":23861,"mutability":"mutable","name":"underlyingToken","nameLocation":"27751:15:65","nodeType":"VariableDeclaration","scope":23965,"src":"27744:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":23860,"nodeType":"UserDefinedTypeName","pathNode":{"id":23859,"name":"IERC20","nameLocations":["27744:6:65"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"27744:6:65"},"referencedDeclaration":39274,"src":"27744:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":23867,"initialValue":{"arguments":[{"baseExpression":{"id":23863,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"27776:13:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":23865,"indexExpression":{"id":23864,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"27790:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27776:27:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23862,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"27769:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":23866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27769:35:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"27744:60:65"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23868,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"27819:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":23869,"name":"minAmountUnderlyingOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23783,"src":"27849:25:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27819:55:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23880,"nodeType":"IfStatement","src":"27815:190:65","trueBody":{"id":23879,"nodeType":"Block","src":"27876:129:65","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":23873,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23861,"src":"27921:15:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":23872,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"27914:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":23874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27914:23:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23875,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"27939:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23876,"name":"minAmountUnderlyingOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23783,"src":"27968:25:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23871,"name":"AmountInAboveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"27897:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":23877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27897:97:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23878,"nodeType":"RevertStatement","src":"27890:104:65"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23881,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"28019:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":23882,"name":"minAmountWrappedOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23785,"src":"28046:22:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28019:49:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23893,"nodeType":"IfStatement","src":"28015:175:65","trueBody":{"id":23892,"nodeType":"Block","src":"28070:120:65","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":23886,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"28115:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":23885,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"28108:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":23887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28108:20:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23888,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"28130:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23889,"name":"minAmountWrappedOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23785,"src":"28156:22:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23884,"name":"AmountInAboveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"28091:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":23890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28091:88:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23891,"nodeType":"RevertStatement","src":"28084:95:65"}]}},{"expression":{"arguments":[{"id":23895,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23861,"src":"28214:15:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23896,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"28231:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23894,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"28200:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":23897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28200:59:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23898,"nodeType":"ExpressionStatement","src":"28200:59:65"},{"expression":{"arguments":[{"id":23900,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"28283:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23901,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"28297:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23899,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"28269:13:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":23902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28269:53:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23903,"nodeType":"ExpressionStatement","src":"28269:53:65"},{"expression":{"id":23918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23904,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23826,"src":"28333:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23907,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23826,"src":"28398:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28413:13:65","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"28398:28:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28398:30:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":23910,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"28431:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28398:60:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23912,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23826,"src":"28472:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28487:17:65","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"28472:32:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":23914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28472:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":23915,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"28509:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28472:61:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23905,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"28350:18:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":23906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28369:15:65","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"28350:34:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":23917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28350:193:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"28333:210:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23919,"nodeType":"ExpressionStatement","src":"28333:210:65"},{"expression":{"id":23924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23920,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"28554:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":23922,"indexExpression":{"id":23921,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"28575:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"28554:34:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23923,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23826,"src":"28591:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"28554:51:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":23925,"nodeType":"ExpressionStatement","src":"28554:51:65"},{"expression":{"arguments":[{"id":23927,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"28698:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23928,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23787,"src":"28712:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23929,"name":"sharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23781,"src":"28725:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23926,"name":"_burnBufferShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24020,"src":"28680:17:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":23930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28680:60:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23931,"nodeType":"ExpressionStatement","src":"28680:60:65"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23932,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"28930:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":23933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28960:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28930:31:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23944,"nodeType":"IfStatement","src":"28926:134:65","trueBody":{"id":23943,"nodeType":"Block","src":"28963:97:65","statements":[{"expression":{"arguments":[{"id":23938,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23861,"src":"28991:15:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":23939,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23787,"src":"29008:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23940,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"29021:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23935,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"28977:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":23937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28984:6:65","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"28977:13:65","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":23941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28977:72:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23942,"nodeType":"ExpressionStatement","src":"28977:72:65"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23945,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"29073:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":23946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29100:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29073:28:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23957,"nodeType":"IfStatement","src":"29069:125:65","trueBody":{"id":23956,"nodeType":"Block","src":"29103:91:65","statements":[{"expression":{"arguments":[{"id":23951,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"29131:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23952,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23787,"src":"29145:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23953,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"29158:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23948,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"29117:6:65","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":23950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29124:6:65","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"29117:13:65","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":23954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29117:66:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23955,"nodeType":"ExpressionStatement","src":"29117:66:65"}]}},{"eventCall":{"arguments":[{"id":23959,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"29249:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":23960,"name":"removedUnderlyingBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23799,"src":"29275:27:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23961,"name":"removedWrappedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23801,"src":"29316:24:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23962,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23826,"src":"29354:14:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":23958,"name":"LiquidityRemovedFromBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"29209:26:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (contract IERC4626,uint256,uint256,bytes32)"}},"id":23963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29209:169:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23964,"nodeType":"EmitStatement","src":"29204:174:65"}]},"documentation":{"id":23776,"nodeType":"StructuredDocumentation","src":"24874:1265:65","text":" @dev Internal hook for `removeLiquidityFromBuffer`. Can only be called by the Vault itself via\n `removeLiquidityFromBuffer`, which correctly forwards the real sender as the `sharesOwner`.\n This function must be reentrant because it calls the nonReentrant function `sendTo`. However,\n since `sendTo` is the only function that makes external calls, `removeLiquidityFromBufferHook`\n cannot reenter the Vault.\n @param wrappedToken Address of the wrapped token that implements IERC4626\n @param sharesToRemove Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's\n total shares\n @param minAmountUnderlyingOutRaw Minimum amount of underlying tokens to receive from the buffer. It is expressed\n in underlying token native decimals\n @param minAmountWrappedOutRaw Minimum amount of wrapped tokens to receive from the buffer. It is expressed in\n wrapped token native decimals\n @param sharesOwner Owner of the shares (`msg.sender` for `removeLiquidityFromBuffer` entrypoint)\n @return removedUnderlyingBalanceRaw Amount of underlying tokens returned to the user\n @return removedWrappedBalanceRaw Amount of wrapped tokens returned to the user"},"functionSelector":"5dcacd64","id":23966,"implemented":true,"kind":"function","modifiers":[{"id":23790,"kind":"modifierInvocation","modifierName":{"id":23789,"name":"onlyVaultDelegateCall","nameLocations":["26389:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"26389:21:65"},"nodeType":"ModifierInvocation","src":"26389:21:65"},{"id":23792,"kind":"modifierInvocation","modifierName":{"id":23791,"name":"onlyVault","nameLocations":["26419:9:65"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"26419:9:65"},"nodeType":"ModifierInvocation","src":"26419:9:65"},{"id":23794,"kind":"modifierInvocation","modifierName":{"id":23793,"name":"onlyWhenUnlocked","nameLocations":["26437:16:65"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"26437:16:65"},"nodeType":"ModifierInvocation","src":"26437:16:65"},{"arguments":[{"id":23796,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23779,"src":"26484:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"id":23797,"kind":"modifierInvocation","modifierName":{"id":23795,"name":"withInitializedBuffer","nameLocations":["26462:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":24753,"src":"26462:21:65"},"nodeType":"ModifierInvocation","src":"26462:35:65"}],"name":"removeLiquidityFromBufferHook","nameLocation":"26153:29:65","nodeType":"FunctionDefinition","parameters":{"id":23788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23779,"mutability":"mutable","name":"wrappedToken","nameLocation":"26201:12:65","nodeType":"VariableDeclaration","scope":23966,"src":"26192:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":23778,"nodeType":"UserDefinedTypeName","pathNode":{"id":23777,"name":"IERC4626","nameLocations":["26192:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"26192:8:65"},"referencedDeclaration":38998,"src":"26192:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":23781,"mutability":"mutable","name":"sharesToRemove","nameLocation":"26231:14:65","nodeType":"VariableDeclaration","scope":23966,"src":"26223:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23780,"name":"uint256","nodeType":"ElementaryTypeName","src":"26223:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23783,"mutability":"mutable","name":"minAmountUnderlyingOutRaw","nameLocation":"26263:25:65","nodeType":"VariableDeclaration","scope":23966,"src":"26255:33:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23782,"name":"uint256","nodeType":"ElementaryTypeName","src":"26255:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23785,"mutability":"mutable","name":"minAmountWrappedOutRaw","nameLocation":"26306:22:65","nodeType":"VariableDeclaration","scope":23966,"src":"26298:30:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23784,"name":"uint256","nodeType":"ElementaryTypeName","src":"26298:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23787,"mutability":"mutable","name":"sharesOwner","nameLocation":"26346:11:65","nodeType":"VariableDeclaration","scope":23966,"src":"26338:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23786,"name":"address","nodeType":"ElementaryTypeName","src":"26338:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26182:181:65"},"returnParameters":{"id":23802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23799,"mutability":"mutable","name":"removedUnderlyingBalanceRaw","nameLocation":"26523:27:65","nodeType":"VariableDeclaration","scope":23966,"src":"26515:35:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23798,"name":"uint256","nodeType":"ElementaryTypeName","src":"26515:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23801,"mutability":"mutable","name":"removedWrappedBalanceRaw","nameLocation":"26560:24:65","nodeType":"VariableDeclaration","scope":23966,"src":"26552:32:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23800,"name":"uint256","nodeType":"ElementaryTypeName","src":"26552:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26514:71:65"},"scope":24309,"src":"26144:3241:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24019,"nodeType":"Block","src":"29480:497:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":23981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23976,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23971,"src":"29494:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":23979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29510:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":23978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29502:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":23977,"name":"address","nodeType":"ElementaryTypeName","src":"29502:7:65","typeDescriptions":{}}},"id":23980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29502:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29494:18:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23986,"nodeType":"IfStatement","src":"29490:82:65","trueBody":{"id":23985,"nodeType":"Block","src":"29514:58:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23982,"name":"BufferSharesInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3496,"src":"29535:24:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29535:26:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23984,"nodeType":"RevertStatement","src":"29528:33:65"}]}},{"assignments":[23988],"declarations":[{"constant":false,"id":23988,"mutability":"mutable","name":"newTotalSupply","nameLocation":"29590:14:65","nodeType":"VariableDeclaration","scope":24019,"src":"29582:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23987,"name":"uint256","nodeType":"ElementaryTypeName","src":"29582:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23994,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":23989,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"29607:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":23991,"indexExpression":{"id":23990,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23969,"src":"29626:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29607:32:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":23992,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23973,"src":"29642:6:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29607:41:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29582:66:65"},{"expression":{"arguments":[{"id":23996,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23988,"src":"29778:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":23995,"name":"_ensureBufferMinimumTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"29746:31:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":23997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29746:47:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23998,"nodeType":"ExpressionStatement","src":"29746:47:65"},{"expression":{"id":24003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":23999,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"29804:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":24001,"indexExpression":{"id":24000,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23969,"src":"29823:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29804:32:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24002,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23988,"src":"29839:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29804:49:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24004,"nodeType":"ExpressionStatement","src":"29804:49:65"},{"expression":{"id":24011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":24005,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"29863:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":24008,"indexExpression":{"id":24006,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23969,"src":"29879:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29863:29:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":24009,"indexExpression":{"id":24007,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23971,"src":"29893:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29863:35:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":24010,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23973,"src":"29902:6:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29863:45:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24012,"nodeType":"ExpressionStatement","src":"29863:45:65"},{"eventCall":{"arguments":[{"id":24014,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23969,"src":"29943:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":24015,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23971,"src":"29957:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24016,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23973,"src":"29963:6:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":24013,"name":"BufferSharesBurned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3762,"src":"29924:18:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":24017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29924:46:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24018,"nodeType":"EmitStatement","src":"29919:51:65"}]},"id":24020,"implemented":true,"kind":"function","modifiers":[],"name":"_burnBufferShares","nameLocation":"29400:17:65","nodeType":"FunctionDefinition","parameters":{"id":23974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23969,"mutability":"mutable","name":"wrappedToken","nameLocation":"29427:12:65","nodeType":"VariableDeclaration","scope":24020,"src":"29418:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":23968,"nodeType":"UserDefinedTypeName","pathNode":{"id":23967,"name":"IERC4626","nameLocations":["29418:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"29418:8:65"},"referencedDeclaration":38998,"src":"29418:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":23971,"mutability":"mutable","name":"from","nameLocation":"29449:4:65","nodeType":"VariableDeclaration","scope":24020,"src":"29441:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23970,"name":"address","nodeType":"ElementaryTypeName","src":"29441:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23973,"mutability":"mutable","name":"amount","nameLocation":"29463:6:65","nodeType":"VariableDeclaration","scope":24020,"src":"29455:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23972,"name":"uint256","nodeType":"ElementaryTypeName","src":"29455:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29417:53:65"},"returnParameters":{"id":23975,"nodeType":"ParameterList","parameters":[],"src":"29480:0:65"},"scope":24309,"src":"29391:586:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24051,"nodeType":"Block","src":"30159:347:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24031,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"30252:18:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":24032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30271:12:65","memberName":"isStaticCall","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"30252:31:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":24033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30252:33:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":24034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30289:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"30252:42:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24042,"nodeType":"IfStatement","src":"30248:114:65","trueBody":{"id":24041,"nodeType":"Block","src":"30296:66:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24036,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"30317:18:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":24038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30336:13:65","memberName":"NotStaticCall","nodeType":"MemberAccess","referencedDeclaration":5477,"src":"30317:32:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30317:34:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24040,"nodeType":"RevertStatement","src":"30310:41:65"}]}},{"expression":{"id":24049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":24043,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"30456:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":24046,"indexExpression":{"id":24044,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24024,"src":"30472:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30456:29:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":24047,"indexExpression":{"id":24045,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24026,"src":"30486:2:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"30456:33:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":24048,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24028,"src":"30493:6:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30456:43:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24050,"nodeType":"ExpressionStatement","src":"30456:43:65"}]},"documentation":{"id":24021,"nodeType":"StructuredDocumentation","src":"29983:71:65","text":"@dev For query mode usage only, inside `removeLiquidityFromBuffer`."},"id":24052,"implemented":true,"kind":"function","modifiers":[],"name":"_queryModeBufferSharesIncrease","nameLocation":"30068:30:65","nodeType":"FunctionDefinition","parameters":{"id":24029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24024,"mutability":"mutable","name":"wrappedToken","nameLocation":"30108:12:65","nodeType":"VariableDeclaration","scope":24052,"src":"30099:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24023,"nodeType":"UserDefinedTypeName","pathNode":{"id":24022,"name":"IERC4626","nameLocations":["30099:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"30099:8:65"},"referencedDeclaration":38998,"src":"30099:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":24026,"mutability":"mutable","name":"to","nameLocation":"30130:2:65","nodeType":"VariableDeclaration","scope":24052,"src":"30122:10:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24025,"name":"address","nodeType":"ElementaryTypeName","src":"30122:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24028,"mutability":"mutable","name":"amount","nameLocation":"30142:6:65","nodeType":"VariableDeclaration","scope":24052,"src":"30134:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24027,"name":"uint256","nodeType":"ElementaryTypeName","src":"30134:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30098:51:65"},"returnParameters":{"id":24030,"nodeType":"ParameterList","parameters":[],"src":"30159:0:65"},"scope":24309,"src":"30059:447:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3144],"body":{"id":24067,"nodeType":"Block","src":"30675:51:65","statements":[{"expression":{"baseExpression":{"id":24063,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"30692:13:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":24065,"indexExpression":{"id":24064,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24056,"src":"30706:12:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30692:27:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":24062,"id":24066,"nodeType":"Return","src":"30685:34:65"}]},"documentation":{"id":24053,"nodeType":"StructuredDocumentation","src":"30512:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"0387587d","id":24068,"implemented":true,"kind":"function","modifiers":[{"id":24059,"kind":"modifierInvocation","modifierName":{"id":24058,"name":"onlyVaultDelegateCall","nameLocations":["30619:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"30619:21:65"},"nodeType":"ModifierInvocation","src":"30619:21:65"}],"name":"getBufferAsset","nameLocation":"30553:14:65","nodeType":"FunctionDefinition","parameters":{"id":24057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24056,"mutability":"mutable","name":"wrappedToken","nameLocation":"30586:12:65","nodeType":"VariableDeclaration","scope":24068,"src":"30577:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24055,"nodeType":"UserDefinedTypeName","pathNode":{"id":24054,"name":"IERC4626","nameLocations":["30577:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"30577:8:65"},"referencedDeclaration":38998,"src":"30577:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"30567:37:65"},"returnParameters":{"id":24062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24061,"mutability":"mutable","name":"underlyingToken","nameLocation":"30658:15:65","nodeType":"VariableDeclaration","scope":24068,"src":"30650:23:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24060,"name":"address","nodeType":"ElementaryTypeName","src":"30650:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30649:25:65"},"scope":24309,"src":"30544:182:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3155],"body":{"id":24087,"nodeType":"Block","src":"30907:52:65","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":24081,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"30924:15:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":24083,"indexExpression":{"id":24082,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24072,"src":"30940:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30924:22:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":24085,"indexExpression":{"id":24084,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24074,"src":"30947:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30924:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24080,"id":24086,"nodeType":"Return","src":"30917:35:65"}]},"documentation":{"id":24069,"nodeType":"StructuredDocumentation","src":"30732:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"9385e39a","id":24088,"implemented":true,"kind":"function","modifiers":[{"id":24077,"kind":"modifierInvocation","modifierName":{"id":24076,"name":"onlyVaultDelegateCall","nameLocations":["30860:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"30860:21:65"},"nodeType":"ModifierInvocation","src":"30860:21:65"}],"name":"getBufferOwnerShares","nameLocation":"30773:20:65","nodeType":"FunctionDefinition","parameters":{"id":24075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24072,"mutability":"mutable","name":"token","nameLocation":"30812:5:65","nodeType":"VariableDeclaration","scope":24088,"src":"30803:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24071,"nodeType":"UserDefinedTypeName","pathNode":{"id":24070,"name":"IERC4626","nameLocations":["30803:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"30803:8:65"},"referencedDeclaration":38998,"src":"30803:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":24074,"mutability":"mutable","name":"user","nameLocation":"30835:4:65","nodeType":"VariableDeclaration","scope":24088,"src":"30827:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24073,"name":"address","nodeType":"ElementaryTypeName","src":"30827:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30793:52:65"},"returnParameters":{"id":24080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24079,"mutability":"mutable","name":"shares","nameLocation":"30899:6:65","nodeType":"VariableDeclaration","scope":24088,"src":"30891:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24078,"name":"uint256","nodeType":"ElementaryTypeName","src":"30891:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30890:16:65"},"scope":24309,"src":"30764:195:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3164],"body":{"id":24103,"nodeType":"Block","src":"31104:49:65","statements":[{"expression":{"baseExpression":{"id":24099,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"31121:18:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":24101,"indexExpression":{"id":24100,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24092,"src":"31140:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31121:25:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24098,"id":24102,"nodeType":"Return","src":"31114:32:65"}]},"documentation":{"id":24089,"nodeType":"StructuredDocumentation","src":"30965:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"f2784e07","id":24104,"implemented":true,"kind":"function","modifiers":[{"id":24095,"kind":"modifierInvocation","modifierName":{"id":24094,"name":"onlyVaultDelegateCall","nameLocations":["31057:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"31057:21:65"},"nodeType":"ModifierInvocation","src":"31057:21:65"}],"name":"getBufferTotalShares","nameLocation":"31006:20:65","nodeType":"FunctionDefinition","parameters":{"id":24093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24092,"mutability":"mutable","name":"token","nameLocation":"31036:5:65","nodeType":"VariableDeclaration","scope":24104,"src":"31027:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24091,"nodeType":"UserDefinedTypeName","pathNode":{"id":24090,"name":"IERC4626","nameLocations":["31027:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"31027:8:65"},"referencedDeclaration":38998,"src":"31027:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"31026:16:65"},"returnParameters":{"id":24098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24097,"mutability":"mutable","name":"shares","nameLocation":"31096:6:65","nodeType":"VariableDeclaration","scope":24104,"src":"31088:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24096,"name":"uint256","nodeType":"ElementaryTypeName","src":"31088:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31087:16:65"},"scope":24309,"src":"30997:156:65","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3175],"body":{"id":24129,"nodeType":"Block","src":"31296:195:65","statements":[{"expression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":24117,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"31391:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":24119,"indexExpression":{"id":24118,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24108,"src":"31412:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31391:27:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":24120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31419:13:65","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"31391:41:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":24121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31391:43:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":24122,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"31436:20:65","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":24124,"indexExpression":{"id":24123,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24108,"src":"31457:5:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31436:27:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":24125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31464:17:65","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"31436:45:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":24126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31436:47:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":24127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31390:94:65","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":24116,"id":24128,"nodeType":"Return","src":"31383:101:65"}]},"documentation":{"id":24105,"nodeType":"StructuredDocumentation","src":"31159:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"4021fe0f","id":24130,"implemented":true,"kind":"function","modifiers":[{"id":24111,"kind":"modifierInvocation","modifierName":{"id":24110,"name":"onlyVaultDelegateCall","nameLocations":["31247:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"31247:21:65"},"nodeType":"ModifierInvocation","src":"31247:21:65"}],"name":"getBufferBalance","nameLocation":"31200:16:65","nodeType":"FunctionDefinition","parameters":{"id":24109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24108,"mutability":"mutable","name":"token","nameLocation":"31226:5:65","nodeType":"VariableDeclaration","scope":24130,"src":"31217:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24107,"nodeType":"UserDefinedTypeName","pathNode":{"id":24106,"name":"IERC4626","nameLocations":["31217:8:65"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"31217:8:65"},"referencedDeclaration":38998,"src":"31217:8:65","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"31216:16:65"},"returnParameters":{"id":24116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24113,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24130,"src":"31278:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24112,"name":"uint256","nodeType":"ElementaryTypeName","src":"31278:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24130,"src":"31287:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24114,"name":"uint256","nodeType":"ElementaryTypeName","src":"31287:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31277:18:65"},"scope":24309,"src":"31191:300:65","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":24144,"nodeType":"Block","src":"31575:138:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24135,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24132,"src":"31589:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":24136,"name":"_BUFFER_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"31606:28:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31589:45:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24143,"nodeType":"IfStatement","src":"31585:122:65","trueBody":{"id":24142,"nodeType":"Block","src":"31636:71:65","statements":[{"errorCall":{"arguments":[{"id":24139,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24132,"src":"31681:14:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":24138,"name":"BufferTotalSupplyTooLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"31657:23:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":24140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31657:39:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24141,"nodeType":"RevertStatement","src":"31650:46:65"}]}}]},"id":24145,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureBufferMinimumTotalSupply","nameLocation":"31506:31:65","nodeType":"FunctionDefinition","parameters":{"id":24133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24132,"mutability":"mutable","name":"newTotalSupply","nameLocation":"31546:14:65","nodeType":"VariableDeclaration","scope":24145,"src":"31538:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24131,"name":"uint256","nodeType":"ElementaryTypeName","src":"31538:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31537:24:65"},"returnParameters":{"id":24134,"nodeType":"ParameterList","parameters":[],"src":"31575:0:65"},"scope":24309,"src":"31497:216:65","stateMutability":"pure","virtual":false,"visibility":"private"},{"baseFunctions":[3182],"body":{"id":24164,"nodeType":"Block","src":"32063:92:65","statements":[{"expression":{"id":24158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":24156,"name":"_authorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27823,"src":"32073:11:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24157,"name":"newAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24149,"src":"32087:13:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"src":"32073:27:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":24159,"nodeType":"ExpressionStatement","src":"32073:27:65"},{"eventCall":{"arguments":[{"id":24161,"name":"newAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24149,"src":"32134:13:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}],"id":24160,"name":"AuthorizerChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3724,"src":"32116:17:65","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IAuthorizer_$1316_$returns$__$","typeString":"function (contract IAuthorizer)"}},"id":24162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32116:32:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24163,"nodeType":"EmitStatement","src":"32111:37:65"}]},"documentation":{"id":24146,"nodeType":"StructuredDocumentation","src":"31937:27:65","text":"@inheritdoc IVaultAdmin"},"functionSelector":"058a628f","id":24165,"implemented":true,"kind":"function","modifiers":[{"id":24152,"kind":"modifierInvocation","modifierName":{"id":24151,"name":"onlyVaultDelegateCall","nameLocations":["32028:21:65"],"nodeType":"IdentifierPath","referencedDeclaration":22422,"src":"32028:21:65"},"nodeType":"ModifierInvocation","src":"32028:21:65"},{"id":24154,"kind":"modifierInvocation","modifierName":{"id":24153,"name":"authenticate","nameLocations":["32050:12:65"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"32050:12:65"},"nodeType":"ModifierInvocation","src":"32050:12:65"}],"name":"setAuthorizer","nameLocation":"31978:13:65","nodeType":"FunctionDefinition","parameters":{"id":24150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24149,"mutability":"mutable","name":"newAuthorizer","nameLocation":"32004:13:65","nodeType":"VariableDeclaration","scope":24165,"src":"31992:25:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":24148,"nodeType":"UserDefinedTypeName","pathNode":{"id":24147,"name":"IAuthorizer","nameLocations":["31992:11:65"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"31992:11:65"},"referencedDeclaration":1316,"src":"31992:11:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"31991:27:65"},"returnParameters":{"id":24155,"nodeType":"ParameterList","parameters":[],"src":"32063:0:65"},"scope":24309,"src":"31969:186:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":24184,"nodeType":"Block","src":"32325:115:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24173,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"32339:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32343:6:65","memberName":"sender","nodeType":"MemberAccess","src":"32339:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":24175,"name":"roleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24170,"src":"32353:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32339:25:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24179,"nodeType":"IfStatement","src":"32335:62:65","trueBody":{"id":24178,"nodeType":"Block","src":"32366:31:65","statements":[{"functionReturnParameters":24172,"id":24177,"nodeType":"Return","src":"32380:7:65"}]}},{"expression":{"arguments":[{"id":24181,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24168,"src":"32428:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24180,"name":"_ensureAuthenticated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24242,"src":"32407:20:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":24182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32407:26:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24183,"nodeType":"ExpressionStatement","src":"32407:26:65"}]},"documentation":{"id":24166,"nodeType":"StructuredDocumentation","src":"32161:75:65","text":"@dev Authenticate by role; otherwise fall through and check governance."},"id":24185,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureAuthenticatedByRole","nameLocation":"32250:26:65","nodeType":"FunctionDefinition","parameters":{"id":24171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24168,"mutability":"mutable","name":"pool","nameLocation":"32285:4:65","nodeType":"VariableDeclaration","scope":24185,"src":"32277:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24167,"name":"address","nodeType":"ElementaryTypeName","src":"32277:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24170,"mutability":"mutable","name":"roleAddress","nameLocation":"32299:11:65","nodeType":"VariableDeclaration","scope":24185,"src":"32291:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24169,"name":"address","nodeType":"ElementaryTypeName","src":"32291:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"32276:35:65"},"returnParameters":{"id":24172,"nodeType":"ParameterList","parameters":[],"src":"32325:0:65"},"scope":24309,"src":"32241:199:65","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":24214,"nodeType":"Block","src":"32636:241:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24193,"name":"roleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24190,"src":"32650:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":24196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32673:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":24195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32665:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24194,"name":"address","nodeType":"ElementaryTypeName","src":"32665:7:65","typeDescriptions":{}}},"id":24197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32665:10:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32650:25:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24204,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"32794:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32798:6:65","memberName":"sender","nodeType":"MemberAccess","src":"32794:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":24206,"name":"roleAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24190,"src":"32808:11:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"32794:25:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24212,"nodeType":"IfStatement","src":"32790:81:65","trueBody":{"id":24211,"nodeType":"Block","src":"32821:50:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24208,"name":"SenderNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121,"src":"32842:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32842:18:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24210,"nodeType":"RevertStatement","src":"32835:25:65"}]}},"id":24213,"nodeType":"IfStatement","src":"32646:225:65","trueBody":{"id":24203,"nodeType":"Block","src":"32677:107:65","statements":[{"expression":{"arguments":[{"id":24200,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24188,"src":"32768:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24199,"name":"_ensureAuthenticated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24242,"src":"32747:20:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":24201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32747:26:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24202,"nodeType":"ExpressionStatement","src":"32747:26:65"}]}}]},"documentation":{"id":24186,"nodeType":"StructuredDocumentation","src":"32446:92:65","text":"@dev Authenticate exclusively by role; caller must match the `roleAddress`, if assigned."},"id":24215,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureAuthenticatedByExclusiveRole","nameLocation":"32552:35:65","nodeType":"FunctionDefinition","parameters":{"id":24191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24188,"mutability":"mutable","name":"pool","nameLocation":"32596:4:65","nodeType":"VariableDeclaration","scope":24215,"src":"32588:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24187,"name":"address","nodeType":"ElementaryTypeName","src":"32588:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24190,"mutability":"mutable","name":"roleAddress","nameLocation":"32610:11:65","nodeType":"VariableDeclaration","scope":24215,"src":"32602:19:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24189,"name":"address","nodeType":"ElementaryTypeName","src":"32602:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"32587:35:65"},"returnParameters":{"id":24192,"nodeType":"ParameterList","parameters":[],"src":"32636:0:65"},"scope":24309,"src":"32543:334:65","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":24241,"nodeType":"Block","src":"32992:170:65","statements":[{"assignments":[24222],"declarations":[{"constant":false,"id":24222,"mutability":"mutable","name":"actionId","nameLocation":"33010:8:65","nodeType":"VariableDeclaration","scope":24241,"src":"33002:16:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24221,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33002:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":24227,"initialValue":{"arguments":[{"expression":{"id":24224,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"33033:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33037:3:65","memberName":"sig","nodeType":"MemberAccess","src":"33033:7:65","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":24223,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5316,"src":"33021:11:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":24226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33021:20:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"33002:39:65"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":24229,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24222,"src":"33068:8:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":24230,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"33078:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33082:6:65","memberName":"sender","nodeType":"MemberAccess","src":"33078:10:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24232,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24218,"src":"33090:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":24228,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[24264,24284],"referencedDeclaration":24284,"src":"33056:11:65","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view returns (bool)"}},"id":24233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33056:39:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":24234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33099:5:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"33056:48:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24240,"nodeType":"IfStatement","src":"33052:104:65","trueBody":{"id":24239,"nodeType":"Block","src":"33106:50:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24236,"name":"SenderNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121,"src":"33127:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33127:18:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24238,"nodeType":"RevertStatement","src":"33120:25:65"}]}}]},"documentation":{"id":24216,"nodeType":"StructuredDocumentation","src":"32883:47:65","text":"@dev Delegate authentication to governance."},"id":24242,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureAuthenticated","nameLocation":"32944:20:65","nodeType":"FunctionDefinition","parameters":{"id":24219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24218,"mutability":"mutable","name":"pool","nameLocation":"32973:4:65","nodeType":"VariableDeclaration","scope":24242,"src":"32965:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24217,"name":"address","nodeType":"ElementaryTypeName","src":"32965:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"32964:14:65"},"returnParameters":{"id":24220,"nodeType":"ParameterList","parameters":[],"src":"32992:0:65"},"scope":24309,"src":"32935:227:65","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[5326],"body":{"id":24263,"nodeType":"Block","src":"33319:77:65","statements":[{"expression":{"arguments":[{"id":24255,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24245,"src":"33359:8:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":24256,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24247,"src":"33369:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":24259,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"33383:4:65","typeDescriptions":{"typeIdentifier":"t_contract$_VaultAdmin_$24309","typeString":"contract VaultAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultAdmin_$24309","typeString":"contract VaultAdmin"}],"id":24258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33375:7:65","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24257,"name":"address","nodeType":"ElementaryTypeName","src":"33375:7:65","typeDescriptions":{}}},"id":24260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33375:13:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24253,"name":"_authorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27823,"src":"33336:11:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":24254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33348:10:65","memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":1315,"src":"33336:22:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":24261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33336:53:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24252,"id":24262,"nodeType":"Return","src":"33329:60:65"}]},"documentation":{"id":24243,"nodeType":"StructuredDocumentation","src":"33168:55:65","text":"@dev Access control is delegated to the Authorizer."},"id":24264,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nameLocation":"33237:11:65","nodeType":"FunctionDefinition","overrides":{"id":24249,"nodeType":"OverrideSpecifier","overrides":[],"src":"33295:8:65"},"parameters":{"id":24248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24245,"mutability":"mutable","name":"actionId","nameLocation":"33257:8:65","nodeType":"VariableDeclaration","scope":24264,"src":"33249:16:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24244,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33249:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":24247,"mutability":"mutable","name":"user","nameLocation":"33275:4:65","nodeType":"VariableDeclaration","scope":24264,"src":"33267:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24246,"name":"address","nodeType":"ElementaryTypeName","src":"33267:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33248:32:65"},"returnParameters":{"id":24252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24264,"src":"33313:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24250,"name":"bool","nodeType":"ElementaryTypeName","src":"33313:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"33312:6:65"},"scope":24309,"src":"33228:168:65","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24283,"nodeType":"Block","src":"33598:69:65","statements":[{"expression":{"arguments":[{"id":24278,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24267,"src":"33638:8:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":24279,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24269,"src":"33648:4:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":24280,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24271,"src":"33654:5:65","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":24276,"name":"_authorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27823,"src":"33615:11:65","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"id":24277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33627:10:65","memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":1315,"src":"33615:22:65","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":24281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33615:45:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24275,"id":24282,"nodeType":"Return","src":"33608:52:65"}]},"documentation":{"id":24265,"nodeType":"StructuredDocumentation","src":"33402:94:65","text":"@dev Access control is delegated to the Authorizer. `where` refers to the target contract."},"id":24284,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nameLocation":"33510:11:65","nodeType":"FunctionDefinition","parameters":{"id":24272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24267,"mutability":"mutable","name":"actionId","nameLocation":"33530:8:65","nodeType":"VariableDeclaration","scope":24284,"src":"33522:16:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24266,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33522:7:65","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":24269,"mutability":"mutable","name":"user","nameLocation":"33548:4:65","nodeType":"VariableDeclaration","scope":24284,"src":"33540:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24268,"name":"address","nodeType":"ElementaryTypeName","src":"33540:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24271,"mutability":"mutable","name":"where","nameLocation":"33562:5:65","nodeType":"VariableDeclaration","scope":24284,"src":"33554:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24270,"name":"address","nodeType":"ElementaryTypeName","src":"33554:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33521:47:65"},"returnParameters":{"id":24275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24284,"src":"33592:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24273,"name":"bool","nodeType":"ElementaryTypeName","src":"33592:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"33591:6:65"},"scope":24309,"src":"33501:166:65","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24290,"nodeType":"Block","src":"33925:42:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24287,"name":"CannotReceiveEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"33942:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33942:18:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24289,"nodeType":"RevertStatement","src":"33935:25:65"}]},"id":24291,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":24285,"nodeType":"ParameterList","parameters":[],"src":"33905:2:65"},"returnParameters":{"id":24286,"nodeType":"ParameterList","parameters":[],"src":"33925:0:65"},"scope":24309,"src":"33898:69:65","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":24307,"nodeType":"Block","src":"34045:121:65","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24294,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"34059:3:65","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":24295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34063:5:65","memberName":"value","nodeType":"MemberAccess","src":"34059:9:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":24296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34071:1:65","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34059:13:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24302,"nodeType":"IfStatement","src":"34055:69:65","trueBody":{"id":24301,"nodeType":"Block","src":"34074:50:65","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24298,"name":"CannotReceiveEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"34095:16:65","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34095:18:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24300,"nodeType":"RevertStatement","src":"34088:25:65"}]}},{"expression":{"arguments":[{"hexValue":"4e6f7420696d706c656d656e746564","id":24304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"34141:17:65","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""},"value":"Not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""}],"id":24303,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"34134:6:65","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":24305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34134:25:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24306,"nodeType":"ExpressionStatement","src":"34134:25:65"}]},"id":24308,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":24292,"nodeType":"ParameterList","parameters":[],"src":"34025:2:65"},"returnParameters":{"id":24293,"nodeType":"ParameterList","parameters":[],"src":"34045:0:65"},"scope":24309,"src":"34017:149:65","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":24310,"src":"2072:32096:65","usedErrors":[121,1684,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,5477,5833,7124,7127,7543,9512,39035,39040,39045,39054,39059,39064,42381,42398],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788,38264,38275]}],"src":"46:34123:65"},"id":65},"@balancer-labs/v3-vault/contracts/VaultCommon.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultCommon.sol","exportedSymbols":{"ERC20MultiToken":[38828],"EVMCallModeHelpers":[5493],"IERC20":[39274],"IERC4626":[38998],"ISwapFeePercentageBounds":[2839],"IVaultErrors":[3550],"IVaultEvents":[3789],"PackedTokenBalance":[5970],"PoolConfigBits":[4364],"PoolConfigLib":[29980],"PoolData":[4511],"PoolDataLib":[30570],"ReentrancyGuardTransient":[9568],"Rounding":[4514],"SafeCast":[44126],"ScalingHelpers":[6474],"StorageSlotExtension":[9911],"TransientStorageHelpers":[7068],"VaultCommon":[25145],"VaultStateBits":[30607],"VaultStateLib":[30748],"VaultStorage":[27923]},"id":25146,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":24311,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:66"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":24313,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":38999,"src":"72:75:66","symbolAliases":[{"foreign":{"id":24312,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":24315,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":44127,"src":"148:75:66","symbolAliases":[{"foreign":{"id":24314,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"157:8:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":24317,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":39275,"src":"224:72:66","symbolAliases":[{"foreign":{"id":24316,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"233:6:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol","id":24319,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":2840,"src":"298:117:66","symbolAliases":[{"foreign":{"id":24318,"name":"ISwapFeePercentageBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"307:24:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":24322,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":4654,"src":"416:97:66","symbolAliases":[{"foreign":{"id":24320,"name":"PoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"425:8:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":24321,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"435:8:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":24324,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":3551,"src":"514:93:66","symbolAliases":[{"foreign":{"id":24323,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"523:12:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol","id":24326,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":3790,"src":"608:93:66","symbolAliases":[{"foreign":{"id":24325,"name":"IVaultEvents","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"617:12:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","id":24328,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":9912,"src":"703:120:66","symbolAliases":[{"foreign":{"id":24327,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"712:20:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","id":24330,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":5494,"src":"824:111:66","symbolAliases":[{"foreign":{"id":24329,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"833:18:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","id":24332,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":5971,"src":"936:111:66","symbolAliases":[{"foreign":{"id":24331,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"945:18:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","id":24334,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":6475,"src":"1048:103:66","symbolAliases":[{"foreign":{"id":24333,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"1057:14:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol","id":24336,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":9569,"src":"1152:132:66","symbolAliases":[{"foreign":{"id":24335,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9568,"src":"1165:24:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":24338,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":7069,"src":"1285:125:66","symbolAliases":[{"foreign":{"id":24337,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"1298:23:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol","file":"./lib/VaultStateLib.sol","id":24341,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":30749,"src":"1412:72:66","symbolAliases":[{"foreign":{"id":24339,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1421:14:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":24340,"name":"VaultStateLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30748,"src":"1437:13:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"./lib/PoolConfigLib.sol","id":24344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":29981,"src":"1485:72:66","symbolAliases":[{"foreign":{"id":24342,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"1494:14:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":24343,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"1510:13:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol","file":"./token/ERC20MultiToken.sol","id":24346,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":38829,"src":"1558:62:66","symbolAliases":[{"foreign":{"id":24345,"name":"ERC20MultiToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38828,"src":"1567:15:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol","file":"./lib/PoolDataLib.sol","id":24348,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":30571,"src":"1621:52:66","symbolAliases":[{"foreign":{"id":24347,"name":"PoolDataLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30570,"src":"1630:11:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultStorage.sol","file":"./VaultStorage.sol","id":24350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":25146,"sourceUnit":27924,"src":"1674:50:66","symbolAliases":[{"foreign":{"id":24349,"name":"VaultStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27923,"src":"1683:12:66","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":24352,"name":"IVaultEvents","nameLocations":["2031:12:66"],"nodeType":"IdentifierPath","referencedDeclaration":3789,"src":"2031:12:66"},"id":24353,"nodeType":"InheritanceSpecifier","src":"2031:12:66"},{"baseName":{"id":24354,"name":"IVaultErrors","nameLocations":["2045:12:66"],"nodeType":"IdentifierPath","referencedDeclaration":3550,"src":"2045:12:66"},"id":24355,"nodeType":"InheritanceSpecifier","src":"2045:12:66"},{"baseName":{"id":24356,"name":"VaultStorage","nameLocations":["2059:12:66"],"nodeType":"IdentifierPath","referencedDeclaration":27923,"src":"2059:12:66"},"id":24357,"nodeType":"InheritanceSpecifier","src":"2059:12:66"},{"baseName":{"id":24358,"name":"ReentrancyGuardTransient","nameLocations":["2073:24:66"],"nodeType":"IdentifierPath","referencedDeclaration":9568,"src":"2073:24:66"},"id":24359,"nodeType":"InheritanceSpecifier","src":"2073:24:66"},{"baseName":{"id":24360,"name":"ERC20MultiToken","nameLocations":["2099:15:66"],"nodeType":"IdentifierPath","referencedDeclaration":38828,"src":"2099:15:66"},"id":24361,"nodeType":"InheritanceSpecifier","src":"2099:15:66"}],"canonicalName":"VaultCommon","contractDependencies":[],"contractKind":"contract","documentation":{"id":24351,"nodeType":"StructuredDocumentation","src":"1726:271:66","text":" @notice Functions and modifiers shared between the main Vault and its extension contracts.\n @dev This contract contains common utilities in the inheritance chain that require storage to work,\n and will be required in both the main Vault and its extensions."},"fullyImplemented":true,"id":25145,"linearizedBaseContracts":[25145,38828,1685,39065,9568,27923,3550,3789],"name":"VaultCommon","nameLocation":"2016:11:66","nodeType":"ContractDefinition","nodes":[{"global":false,"id":24365,"libraryName":{"id":24362,"name":"PoolConfigLib","nameLocations":["2127:13:66"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"2127:13:66"},"nodeType":"UsingForDirective","src":"2121:39:66","typeName":{"id":24364,"nodeType":"UserDefinedTypeName","pathNode":{"id":24363,"name":"PoolConfigBits","nameLocations":["2145:14:66"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2145:14:66"},"referencedDeclaration":4364,"src":"2145:14:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":24369,"libraryName":{"id":24366,"name":"VaultStateLib","nameLocations":["2171:13:66"],"nodeType":"IdentifierPath","referencedDeclaration":30748,"src":"2171:13:66"},"nodeType":"UsingForDirective","src":"2165:39:66","typeName":{"id":24368,"nodeType":"UserDefinedTypeName","pathNode":{"id":24367,"name":"VaultStateBits","nameLocations":["2189:14:66"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"2189:14:66"},"referencedDeclaration":30607,"src":"2189:14:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}},{"global":false,"id":24371,"libraryName":{"id":24370,"name":"SafeCast","nameLocations":["2215:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"2215:8:66"},"nodeType":"UsingForDirective","src":"2209:21:66"},{"global":false,"id":24373,"libraryName":{"id":24372,"name":"TransientStorageHelpers","nameLocations":["2241:23:66"],"nodeType":"IdentifierPath","referencedDeclaration":7068,"src":"2241:23:66"},"nodeType":"UsingForDirective","src":"2235:36:66"},{"global":false,"id":24375,"libraryName":{"id":24374,"name":"StorageSlotExtension","nameLocations":["2282:20:66"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"2282:20:66"},"nodeType":"UsingForDirective","src":"2276:33:66"},{"global":false,"id":24379,"libraryName":{"id":24376,"name":"PoolDataLib","nameLocations":["2320:11:66"],"nodeType":"IdentifierPath","referencedDeclaration":30570,"src":"2320:11:66"},"nodeType":"UsingForDirective","src":"2314:31:66","typeName":{"id":24378,"nodeType":"UserDefinedTypeName","pathNode":{"id":24377,"name":"PoolData","nameLocations":["2336:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"2336:8:66"},"referencedDeclaration":4511,"src":"2336:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}}},{"body":{"id":24386,"nodeType":"Block","src":"2735:45:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24382,"name":"_ensureUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24402,"src":"2745:15:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":24383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2745:17:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24384,"nodeType":"ExpressionStatement","src":"2745:17:66"},{"id":24385,"nodeType":"PlaceholderStatement","src":"2772:1:66"}]},"documentation":{"id":24380,"nodeType":"StructuredDocumentation","src":"2573:129:66","text":" @dev This modifier ensures that the function it modifies can only be called\n when a tab has been opened."},"id":24387,"name":"onlyWhenUnlocked","nameLocation":"2716:16:66","nodeType":"ModifierDefinition","parameters":{"id":24381,"nodeType":"ParameterList","parameters":[],"src":"2732:2:66"},"src":"2707:73:66","virtual":false,"visibility":"internal"},{"body":{"id":24401,"nodeType":"Block","src":"2827:104:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24390,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"2841:11:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":24391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2841:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":24392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2855:5:66","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"2841:19:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlotType_$9734_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType) view returns (bool)"}},"id":24393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2841:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":24394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2866:5:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2841:30:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24400,"nodeType":"IfStatement","src":"2837:88:66","trueBody":{"id":24399,"nodeType":"Block","src":"2873:52:66","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24396,"name":"VaultIsNotUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3258,"src":"2894:18:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2894:20:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24398,"nodeType":"RevertStatement","src":"2887:27:66"}]}}]},"id":24402,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureUnlocked","nameLocation":"2795:15:66","nodeType":"FunctionDefinition","parameters":{"id":24388,"nodeType":"ParameterList","parameters":[],"src":"2810:2:66"},"returnParameters":{"id":24389,"nodeType":"ParameterList","parameters":[],"src":"2827:0:66"},"scope":25145,"src":"2786:145:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24411,"nodeType":"Block","src":"3159:49:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24408,"name":"_reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9567,"src":"3176:23:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":24409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3176:25:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24407,"id":24410,"nodeType":"Return","src":"3169:32:66"}]},"documentation":{"id":24403,"nodeType":"StructuredDocumentation","src":"2937:156:66","text":" @notice Expose the state of the Vault's reentrancy guard.\n @return True if the Vault is currently executing a nonReentrant function"},"functionSelector":"d2c725e0","id":24412,"implemented":true,"kind":"function","modifiers":[],"name":"reentrancyGuardEntered","nameLocation":"3107:22:66","nodeType":"FunctionDefinition","parameters":{"id":24404,"nodeType":"ParameterList","parameters":[],"src":"3129:2:66"},"returnParameters":{"id":24407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24412,"src":"3153:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24405,"name":"bool","nodeType":"ElementaryTypeName","src":"3153:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3152:6:66"},"scope":25145,"src":"3098:110:66","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":24429,"nodeType":"Block","src":"3512:57:66","statements":[{"expression":{"arguments":[{"id":24422,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24416,"src":"3536:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":24426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3543:18:66","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24423,"name":"credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24418,"src":"3544:6:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3551:8:66","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"3544:15:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":24425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3544:17:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":24421,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24503,"src":"3522:13:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_int256_$returns$__$","typeString":"function (contract IERC20,int256)"}},"id":24427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3522:40:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24428,"nodeType":"ExpressionStatement","src":"3522:40:66"}]},"documentation":{"id":24413,"nodeType":"StructuredDocumentation","src":"3214:231:66","text":" @notice Records the `credit` for a given token.\n @param token The ERC20 token for which the 'credit' will be accounted\n @param credit The amount of `token` supplied to the Vault in favor of the caller"},"id":24430,"implemented":true,"kind":"function","modifiers":[],"name":"_supplyCredit","nameLocation":"3459:13:66","nodeType":"FunctionDefinition","parameters":{"id":24419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24416,"mutability":"mutable","name":"token","nameLocation":"3480:5:66","nodeType":"VariableDeclaration","scope":24430,"src":"3473:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":24415,"nodeType":"UserDefinedTypeName","pathNode":{"id":24414,"name":"IERC20","nameLocations":["3473:6:66"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3473:6:66"},"referencedDeclaration":39274,"src":"3473:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":24418,"mutability":"mutable","name":"credit","nameLocation":"3495:6:66","nodeType":"VariableDeclaration","scope":24430,"src":"3487:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24417,"name":"uint256","nodeType":"ElementaryTypeName","src":"3487:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3472:30:66"},"returnParameters":{"id":24420,"nodeType":"ParameterList","parameters":[],"src":"3512:0:66"},"scope":25145,"src":"3450:119:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24446,"nodeType":"Block","src":"3860:54:66","statements":[{"expression":{"arguments":[{"id":24440,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24434,"src":"3884:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24441,"name":"debt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24436,"src":"3891:4:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3896:8:66","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":44125,"src":"3891:13:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":24443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3891:15:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":24439,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24503,"src":"3870:13:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_int256_$returns$__$","typeString":"function (contract IERC20,int256)"}},"id":24444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3870:37:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24445,"nodeType":"ExpressionStatement","src":"3870:37:66"}]},"documentation":{"id":24431,"nodeType":"StructuredDocumentation","src":"3575:224:66","text":" @notice Records the `debt` for a given token.\n @param token The ERC20 token for which the `debt` will be accounted\n @param debt The amount of `token` taken from the Vault in favor of the caller"},"id":24447,"implemented":true,"kind":"function","modifiers":[],"name":"_takeDebt","nameLocation":"3813:9:66","nodeType":"FunctionDefinition","parameters":{"id":24437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24434,"mutability":"mutable","name":"token","nameLocation":"3830:5:66","nodeType":"VariableDeclaration","scope":24447,"src":"3823:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":24433,"nodeType":"UserDefinedTypeName","pathNode":{"id":24432,"name":"IERC20","nameLocations":["3823:6:66"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3823:6:66"},"referencedDeclaration":39274,"src":"3823:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":24436,"mutability":"mutable","name":"debt","nameLocation":"3845:4:66","nodeType":"VariableDeclaration","scope":24447,"src":"3837:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24435,"name":"uint256","nodeType":"ElementaryTypeName","src":"3837:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3822:28:66"},"returnParameters":{"id":24438,"nodeType":"ParameterList","parameters":[],"src":"3860:0:66"},"scope":25145,"src":"3804:110:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24502,"nodeType":"Block","src":"4406:844:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":24458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24456,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24453,"src":"4485:5:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4494:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4485:10:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24460,"nodeType":"IfStatement","src":"4481:23:66","trueBody":{"functionReturnParameters":24455,"id":24459,"nodeType":"Return","src":"4497:7:66"}},{"assignments":[24462],"declarations":[{"constant":false,"id":24462,"mutability":"mutable","name":"current","nameLocation":"4579:7:66","nodeType":"VariableDeclaration","scope":24502,"src":"4572:14:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":24461,"name":"int256","nodeType":"ElementaryTypeName","src":"4572:6:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":24468,"initialValue":{"arguments":[{"id":24466,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24451,"src":"4609:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24463,"name":"_tokenDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27882,"src":"4589:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function () view returns (TokenDeltaMappingSlotType)"}},"id":24464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4589:14:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"id":24465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4604:4:66","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6564,"src":"4589:19:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$_t_contract$_IERC20_$39274_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function (TokenDeltaMappingSlotType,contract IERC20) view returns (int256)"}},"id":24467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4589:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"4572:43:66"},{"assignments":[24470],"declarations":[{"constant":false,"id":24470,"mutability":"mutable","name":"next","nameLocation":"4701:4:66","nodeType":"VariableDeclaration","scope":24502,"src":"4694:11:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":24469,"name":"int256","nodeType":"ElementaryTypeName","src":"4694:6:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":24474,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":24473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24471,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24462,"src":"4708:7:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":24472,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24453,"src":"4718:5:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"4708:15:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"4694:29:66"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":24477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24475,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24470,"src":"4738:4:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4746:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4738:9:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":24486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24484,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24462,"src":"4944:7:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":24485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4955:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4944:12:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24493,"nodeType":"IfStatement","src":"4940:217:66","trueBody":{"id":24492,"nodeType":"Block","src":"4958:199:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24487,"name":"_nonZeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27870,"src":"5113:18:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":24488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5113:20:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":24489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5134:10:66","memberName":"tIncrement","nodeType":"MemberAccess","referencedDeclaration":7050,"src":"5113:31:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType)"}},"id":24490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5113:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24491,"nodeType":"ExpressionStatement","src":"5113:33:66"}]}},"id":24494,"nodeType":"IfStatement","src":"4734:423:66","trueBody":{"id":24483,"nodeType":"Block","src":"4749:185:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24478,"name":"_nonZeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27870,"src":"4890:18:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":24479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4890:20:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":24480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4911:10:66","memberName":"tDecrement","nodeType":"MemberAccess","referencedDeclaration":7067,"src":"4890:31:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType)"}},"id":24481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4890:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24482,"nodeType":"ExpressionStatement","src":"4890:33:66"}]}},{"expression":{"arguments":[{"id":24498,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24451,"src":"5231:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":24499,"name":"next","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24470,"src":"5238:4:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24495,"name":"_tokenDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27882,"src":"5211:12:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function () view returns (TokenDeltaMappingSlotType)"}},"id":24496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5211:14:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"id":24497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5226:4:66","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6593,"src":"5211:19:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$_t_contract$_IERC20_$39274_$_t_int256_$returns$__$attached_to$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function (TokenDeltaMappingSlotType,contract IERC20,int256)"}},"id":24500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5211:32:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24501,"nodeType":"ExpressionStatement","src":"5211:32:66"}]},"documentation":{"id":24448,"nodeType":"StructuredDocumentation","src":"3920:421:66","text":" @dev Accounts the delta for the given token. A positive delta represents debt,\n while a negative delta represents surplus.\n @param token The ERC20 token for which the delta is being accounted\n @param delta The difference in the token balance\n Positive indicates a debit or a decrease in Vault's tokens,\n negative indicates a credit or an increase in Vault's tokens."},"id":24503,"implemented":true,"kind":"function","modifiers":[],"name":"_accountDelta","nameLocation":"4355:13:66","nodeType":"FunctionDefinition","parameters":{"id":24454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24451,"mutability":"mutable","name":"token","nameLocation":"4376:5:66","nodeType":"VariableDeclaration","scope":24503,"src":"4369:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":24450,"nodeType":"UserDefinedTypeName","pathNode":{"id":24449,"name":"IERC20","nameLocations":["4369:6:66"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4369:6:66"},"referencedDeclaration":39274,"src":"4369:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":24453,"mutability":"mutable","name":"delta","nameLocation":"4390:5:66","nodeType":"VariableDeclaration","scope":24503,"src":"4383:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":24452,"name":"int256","nodeType":"ElementaryTypeName","src":"4383:6:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"4368:28:66"},"returnParameters":{"id":24455,"nodeType":"ParameterList","parameters":[],"src":"4406:0:66"},"scope":25145,"src":"4346:904:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24510,"nodeType":"Block","src":"5592:51:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24506,"name":"_ensureVaultNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24523,"src":"5602:21:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":24507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5602:23:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24508,"nodeType":"ExpressionStatement","src":"5602:23:66"},{"id":24509,"nodeType":"PlaceholderStatement","src":"5635:1:66"}]},"documentation":{"id":24504,"nodeType":"StructuredDocumentation","src":"5477:80:66","text":"@dev Modifier to make a function callable only when the Vault is not paused."},"id":24511,"name":"whenVaultNotPaused","nameLocation":"5571:18:66","nodeType":"ModifierDefinition","parameters":{"id":24505,"nodeType":"ParameterList","parameters":[],"src":"5589:2:66"},"src":"5562:81:66","virtual":false,"visibility":"internal"},{"body":{"id":24522,"nodeType":"Block","src":"5741:83:66","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":24515,"name":"_isVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24553,"src":"5755:14:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":24516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:16:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24521,"nodeType":"IfStatement","src":"5751:67:66","trueBody":{"id":24520,"nodeType":"Block","src":"5773:45:66","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24517,"name":"VaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"5794:11:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5794:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24519,"nodeType":"RevertStatement","src":"5787:20:66"}]}}]},"documentation":{"id":24512,"nodeType":"StructuredDocumentation","src":"5649:40:66","text":"@dev Reverts if the Vault is paused."},"id":24523,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureVaultNotPaused","nameLocation":"5703:21:66","nodeType":"FunctionDefinition","parameters":{"id":24513,"nodeType":"ParameterList","parameters":[],"src":"5724:2:66"},"returnParameters":{"id":24514,"nodeType":"ParameterList","parameters":[],"src":"5741:0:66"},"scope":25145,"src":"5694:130:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24536,"nodeType":"Block","src":"5947:76:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24529,"name":"_ensureVaultNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24523,"src":"5957:21:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":24530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5957:23:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24531,"nodeType":"ExpressionStatement","src":"5957:23:66"},{"expression":{"arguments":[{"id":24533,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24526,"src":"6011:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24532,"name":"_ensurePoolNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24569,"src":"5990:20:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":24534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5990:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24535,"nodeType":"ExpressionStatement","src":"5990:26:66"}]},"documentation":{"id":24524,"nodeType":"StructuredDocumentation","src":"5830:59:66","text":"@dev Reverts if the Vault or the given pool are paused."},"id":24537,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureUnpaused","nameLocation":"5903:15:66","nodeType":"FunctionDefinition","parameters":{"id":24527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24526,"mutability":"mutable","name":"pool","nameLocation":"5927:4:66","nodeType":"VariableDeclaration","scope":24537,"src":"5919:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24525,"name":"address","nodeType":"ElementaryTypeName","src":"5919:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5918:14:66"},"returnParameters":{"id":24528,"nodeType":"ParameterList","parameters":[],"src":"5947:0:66"},"scope":25145,"src":"5894:129:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24552,"nodeType":"Block","src":"6304:157:66","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24543,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6375:5:66","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":24544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6381:9:66","memberName":"timestamp","nodeType":"MemberAccess","src":"6375:15:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":24545,"name":"_vaultBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27806,"src":"6394:25:66","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"6375:44:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24547,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"6423:15:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":24548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6439:13:66","memberName":"isVaultPaused","nodeType":"MemberAccess","referencedDeclaration":30682,"src":"6423:29:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":24549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6423:31:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6375:79:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24542,"id":24551,"nodeType":"Return","src":"6368:86:66"}]},"documentation":{"id":24538,"nodeType":"StructuredDocumentation","src":"6029:215:66","text":" @dev For gas efficiency, storage is only read before `_vaultBufferPeriodEndTime`. Once we're past that\n timestamp, the expression short-circuits false, and the Vault is permanently unpaused."},"id":24553,"implemented":true,"kind":"function","modifiers":[],"name":"_isVaultPaused","nameLocation":"6258:14:66","nodeType":"FunctionDefinition","parameters":{"id":24539,"nodeType":"ParameterList","parameters":[],"src":"6272:2:66"},"returnParameters":{"id":24542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24553,"src":"6298:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24540,"name":"bool","nodeType":"ElementaryTypeName","src":"6298:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6297:6:66"},"scope":25145,"src":"6249:212:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24568,"nodeType":"Block","src":"6790:89:66","statements":[{"condition":{"arguments":[{"id":24560,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24556,"src":"6818:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24559,"name":"_isPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24586,"src":"6804:13:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":24561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6804:19:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24567,"nodeType":"IfStatement","src":"6800:73:66","trueBody":{"id":24566,"nodeType":"Block","src":"6825:48:66","statements":[{"errorCall":{"arguments":[{"id":24563,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24556,"src":"6857:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24562,"name":"PoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3442,"src":"6846:10:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":24564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6846:16:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24565,"nodeType":"RevertStatement","src":"6839:23:66"}]}}]},"documentation":{"id":24554,"nodeType":"StructuredDocumentation","src":"6688:39:66","text":"@dev Reverts if the pool is paused."},"id":24569,"implemented":true,"kind":"function","modifiers":[],"name":"_ensurePoolNotPaused","nameLocation":"6741:20:66","nodeType":"FunctionDefinition","parameters":{"id":24557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24556,"mutability":"mutable","name":"pool","nameLocation":"6770:4:66","nodeType":"VariableDeclaration","scope":24569,"src":"6762:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24555,"name":"address","nodeType":"ElementaryTypeName","src":"6762:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6761:14:66"},"returnParameters":{"id":24558,"nodeType":"ParameterList","parameters":[],"src":"6790:0:66"},"scope":25145,"src":"6732:147:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24585,"nodeType":"Block","src":"7039:84:66","statements":[{"assignments":[24578,null],"declarations":[{"constant":false,"id":24578,"mutability":"mutable","name":"paused","nameLocation":"7055:6:66","nodeType":"VariableDeclaration","scope":24585,"src":"7050:11:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24577,"name":"bool","nodeType":"ElementaryTypeName","src":"7050:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":24582,"initialValue":{"arguments":[{"id":24580,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24572,"src":"7087:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24579,"name":"_getPoolPausedState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24627,"src":"7067:19:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$_t_uint32_$","typeString":"function (address) view returns (bool,uint32)"}},"id":24581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7067:25:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"7049:43:66"},{"expression":{"id":24583,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24578,"src":"7110:6:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24576,"id":24584,"nodeType":"Return","src":"7103:13:66"}]},"documentation":{"id":24570,"nodeType":"StructuredDocumentation","src":"6885:83:66","text":"@dev Check both the flag and timestamp to determine whether the pool is paused."},"id":24586,"implemented":true,"kind":"function","modifiers":[],"name":"_isPoolPaused","nameLocation":"6982:13:66","nodeType":"FunctionDefinition","parameters":{"id":24573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24572,"mutability":"mutable","name":"pool","nameLocation":"7004:4:66","nodeType":"VariableDeclaration","scope":24586,"src":"6996:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24571,"name":"address","nodeType":"ElementaryTypeName","src":"6996:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6995:14:66"},"returnParameters":{"id":24576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24586,"src":"7033:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24574,"name":"bool","nodeType":"ElementaryTypeName","src":"7033:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7032:6:66"},"scope":25145,"src":"6973:150:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24626,"nodeType":"Block","src":"7302:400:66","statements":[{"assignments":[24598],"declarations":[{"constant":false,"id":24598,"mutability":"mutable","name":"config","nameLocation":"7327:6:66","nodeType":"VariableDeclaration","scope":24626,"src":"7312:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":24597,"nodeType":"UserDefinedTypeName","pathNode":{"id":24596,"name":"PoolConfigBits","nameLocations":["7312:14:66"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"7312:14:66"},"referencedDeclaration":4364,"src":"7312:14:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":24602,"initialValue":{"baseExpression":{"id":24599,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"7336:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":24601,"indexExpression":{"id":24600,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24589,"src":"7352:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7336:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"7312:45:66"},{"assignments":[24604],"declarations":[{"constant":false,"id":24604,"mutability":"mutable","name":"isPoolPaused","nameLocation":"7373:12:66","nodeType":"VariableDeclaration","scope":24626,"src":"7368:17:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24603,"name":"bool","nodeType":"ElementaryTypeName","src":"7368:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":24608,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24605,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24598,"src":"7388:6:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":24606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7395:12:66","memberName":"isPoolPaused","nodeType":"MemberAccess","referencedDeclaration":29262,"src":"7388:19:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":24607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7388:21:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"7368:41:66"},{"assignments":[24610],"declarations":[{"constant":false,"id":24610,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"7426:18:66","nodeType":"VariableDeclaration","scope":24626,"src":"7419:25:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":24609,"name":"uint32","nodeType":"ElementaryTypeName","src":"7419:6:66","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":24614,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24611,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24598,"src":"7447:6:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":24612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7454:21:66","memberName":"getPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":29904,"src":"7447:28:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint32)"}},"id":24613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7447:30:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"7419:58:66"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":24622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24615,"name":"isPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24604,"src":"7592:12:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":24616,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7608:5:66","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":24617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7614:9:66","memberName":"timestamp","nodeType":"MemberAccess","src":"7608:15:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":24620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24618,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24610,"src":"7627:18:66","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":24619,"name":"_vaultBufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27808,"src":"7648:26:66","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7627:47:66","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"7608:66:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7592:82:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":24623,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24610,"src":"7676:18:66","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":24624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7591:104:66","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":24595,"id":24625,"nodeType":"Return","src":"7584:111:66"}]},"documentation":{"id":24587,"nodeType":"StructuredDocumentation","src":"7129:88:66","text":"@dev Lowest level routine that plucks only the minimum necessary parts from storage."},"id":24627,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolPausedState","nameLocation":"7231:19:66","nodeType":"FunctionDefinition","parameters":{"id":24590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24589,"mutability":"mutable","name":"pool","nameLocation":"7259:4:66","nodeType":"VariableDeclaration","scope":24627,"src":"7251:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24588,"name":"address","nodeType":"ElementaryTypeName","src":"7251:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7250:14:66"},"returnParameters":{"id":24595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24627,"src":"7288:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24591,"name":"bool","nodeType":"ElementaryTypeName","src":"7288:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":24594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24627,"src":"7294:6:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":24593,"name":"uint32","nodeType":"ElementaryTypeName","src":"7294:6:66","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"7287:14:66"},"scope":25145,"src":"7222:480:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24634,"nodeType":"Block","src":"8060:61:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":24630,"name":"_ensureVaultBuffersAreNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24648,"src":"8070:31:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":24631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8070:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24632,"nodeType":"ExpressionStatement","src":"8070:33:66"},{"id":24633,"nodeType":"PlaceholderStatement","src":"8113:1:66"}]},"documentation":{"id":24628,"nodeType":"StructuredDocumentation","src":"7930:85:66","text":"@dev Modifier to make a function callable only when vault buffers are not paused."},"id":24635,"name":"whenVaultBuffersAreNotPaused","nameLocation":"8029:28:66","nodeType":"ModifierDefinition","parameters":{"id":24629,"nodeType":"ParameterList","parameters":[],"src":"8057:2:66"},"src":"8020:101:66","virtual":false,"visibility":"internal"},{"body":{"id":24647,"nodeType":"Block","src":"8234:111:66","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24639,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"8248:15:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":24640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8264:16:66","memberName":"areBuffersPaused","nodeType":"MemberAccess","referencedDeclaration":30723,"src":"8248:32:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":24641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8248:34:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24646,"nodeType":"IfStatement","src":"8244:95:66","trueBody":{"id":24645,"nodeType":"Block","src":"8284:55:66","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":24642,"name":"VaultBuffersArePaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3490,"src":"8305:21:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":24643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8305:23:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24644,"nodeType":"RevertStatement","src":"8298:30:66"}]}}]},"documentation":{"id":24636,"nodeType":"StructuredDocumentation","src":"8127:45:66","text":"@dev Reverts if vault buffers are paused."},"id":24648,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureVaultBuffersAreNotPaused","nameLocation":"8186:31:66","nodeType":"FunctionDefinition","parameters":{"id":24637,"nodeType":"ParameterList","parameters":[],"src":"8217:2:66"},"returnParameters":{"id":24638,"nodeType":"ParameterList","parameters":[],"src":"8234:0:66"},"scope":25145,"src":"8177:168:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24658,"nodeType":"Block","src":"8686:55:66","statements":[{"expression":{"arguments":[{"id":24654,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24651,"src":"8718:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24653,"name":"_ensureRegisteredPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24686,"src":"8696:21:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":24655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8696:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24656,"nodeType":"ExpressionStatement","src":"8696:27:66"},{"id":24657,"nodeType":"PlaceholderStatement","src":"8733:1:66"}]},"documentation":{"id":24649,"nodeType":"StructuredDocumentation","src":"8587:52:66","text":"@dev Reverts unless `pool` is a registered Pool."},"id":24659,"name":"withRegisteredPool","nameLocation":"8653:18:66","nodeType":"ModifierDefinition","parameters":{"id":24652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24651,"mutability":"mutable","name":"pool","nameLocation":"8680:4:66","nodeType":"VariableDeclaration","scope":24659,"src":"8672:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24650,"name":"address","nodeType":"ElementaryTypeName","src":"8672:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8671:14:66"},"src":"8644:97:66","virtual":false,"visibility":"internal"},{"body":{"id":24669,"nodeType":"Block","src":"8849:56:66","statements":[{"expression":{"arguments":[{"id":24665,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24662,"src":"8882:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24664,"name":"_ensureInitializedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24722,"src":"8859:22:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":24666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8859:28:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24667,"nodeType":"ExpressionStatement","src":"8859:28:66"},{"id":24668,"nodeType":"PlaceholderStatement","src":"8897:1:66"}]},"documentation":{"id":24660,"nodeType":"StructuredDocumentation","src":"8747:54:66","text":"@dev Reverts unless `pool` is an initialized Pool."},"id":24670,"name":"withInitializedPool","nameLocation":"8815:19:66","nodeType":"ModifierDefinition","parameters":{"id":24663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24662,"mutability":"mutable","name":"pool","nameLocation":"8843:4:66","nodeType":"VariableDeclaration","scope":24670,"src":"8835:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24661,"name":"address","nodeType":"ElementaryTypeName","src":"8835:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8834:14:66"},"src":"8806:99:66","virtual":false,"visibility":"internal"},{"body":{"id":24685,"nodeType":"Block","src":"8970:101:66","statements":[{"condition":{"id":24678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8984:24:66","subExpression":{"arguments":[{"id":24676,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24672,"src":"9003:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24675,"name":"_isPoolRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24706,"src":"8985:17:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":24677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8985:23:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24684,"nodeType":"IfStatement","src":"8980:85:66","trueBody":{"id":24683,"nodeType":"Block","src":"9010:55:66","statements":[{"errorCall":{"arguments":[{"id":24680,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24672,"src":"9049:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24679,"name":"PoolNotRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3205,"src":"9031:17:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":24681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9031:23:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24682,"nodeType":"RevertStatement","src":"9024:30:66"}]}}]},"id":24686,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureRegisteredPool","nameLocation":"8920:21:66","nodeType":"FunctionDefinition","parameters":{"id":24673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24672,"mutability":"mutable","name":"pool","nameLocation":"8950:4:66","nodeType":"VariableDeclaration","scope":24686,"src":"8942:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24671,"name":"address","nodeType":"ElementaryTypeName","src":"8942:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8941:14:66"},"returnParameters":{"id":24674,"nodeType":"ParameterList","parameters":[],"src":"8970:0:66"},"scope":25145,"src":"8911:160:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24705,"nodeType":"Block","src":"9183:104:66","statements":[{"assignments":[24696],"declarations":[{"constant":false,"id":24696,"mutability":"mutable","name":"config","nameLocation":"9208:6:66","nodeType":"VariableDeclaration","scope":24705,"src":"9193:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":24695,"nodeType":"UserDefinedTypeName","pathNode":{"id":24694,"name":"PoolConfigBits","nameLocations":["9193:14:66"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"9193:14:66"},"referencedDeclaration":4364,"src":"9193:14:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":24700,"initialValue":{"baseExpression":{"id":24697,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"9217:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":24699,"indexExpression":{"id":24698,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24689,"src":"9233:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9217:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"9193:45:66"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24701,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24696,"src":"9255:6:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":24702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9262:16:66","memberName":"isPoolRegistered","nodeType":"MemberAccess","referencedDeclaration":29176,"src":"9255:23:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":24703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9255:25:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24693,"id":24704,"nodeType":"Return","src":"9248:32:66"}]},"documentation":{"id":24687,"nodeType":"StructuredDocumentation","src":"9077:31:66","text":"@dev See `isPoolRegistered`"},"id":24706,"implemented":true,"kind":"function","modifiers":[],"name":"_isPoolRegistered","nameLocation":"9122:17:66","nodeType":"FunctionDefinition","parameters":{"id":24690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24689,"mutability":"mutable","name":"pool","nameLocation":"9148:4:66","nodeType":"VariableDeclaration","scope":24706,"src":"9140:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24688,"name":"address","nodeType":"ElementaryTypeName","src":"9140:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9139:14:66"},"returnParameters":{"id":24693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24706,"src":"9177:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24691,"name":"bool","nodeType":"ElementaryTypeName","src":"9177:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9176:6:66"},"scope":25145,"src":"9113:174:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24721,"nodeType":"Block","src":"9353:103:66","statements":[{"condition":{"id":24714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9367:25:66","subExpression":{"arguments":[{"id":24712,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24708,"src":"9387:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24711,"name":"_isPoolInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24742,"src":"9368:18:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":24713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9368:24:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24720,"nodeType":"IfStatement","src":"9363:87:66","trueBody":{"id":24719,"nodeType":"Block","src":"9394:56:66","statements":[{"errorCall":{"arguments":[{"id":24716,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24708,"src":"9434:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":24715,"name":"PoolNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"9415:18:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":24717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9415:24:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24718,"nodeType":"RevertStatement","src":"9408:31:66"}]}}]},"id":24722,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureInitializedPool","nameLocation":"9302:22:66","nodeType":"FunctionDefinition","parameters":{"id":24709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24708,"mutability":"mutable","name":"pool","nameLocation":"9333:4:66","nodeType":"VariableDeclaration","scope":24722,"src":"9325:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24707,"name":"address","nodeType":"ElementaryTypeName","src":"9325:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9324:14:66"},"returnParameters":{"id":24710,"nodeType":"ParameterList","parameters":[],"src":"9353:0:66"},"scope":25145,"src":"9293:163:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24741,"nodeType":"Block","src":"9570:105:66","statements":[{"assignments":[24732],"declarations":[{"constant":false,"id":24732,"mutability":"mutable","name":"config","nameLocation":"9595:6:66","nodeType":"VariableDeclaration","scope":24741,"src":"9580:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":24731,"nodeType":"UserDefinedTypeName","pathNode":{"id":24730,"name":"PoolConfigBits","nameLocations":["9580:14:66"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"9580:14:66"},"referencedDeclaration":4364,"src":"9580:14:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":24736,"initialValue":{"baseExpression":{"id":24733,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"9604:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":24735,"indexExpression":{"id":24734,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24725,"src":"9620:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9604:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"9580:45:66"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":24737,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24732,"src":"9642:6:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":24738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9649:17:66","memberName":"isPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":29219,"src":"9642:24:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":24739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9642:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":24729,"id":24740,"nodeType":"Return","src":"9635:33:66"}]},"documentation":{"id":24723,"nodeType":"StructuredDocumentation","src":"9462:32:66","text":"@dev See `isPoolInitialized`"},"id":24742,"implemented":true,"kind":"function","modifiers":[],"name":"_isPoolInitialized","nameLocation":"9508:18:66","nodeType":"FunctionDefinition","parameters":{"id":24726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24725,"mutability":"mutable","name":"pool","nameLocation":"9535:4:66","nodeType":"VariableDeclaration","scope":24742,"src":"9527:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24724,"name":"address","nodeType":"ElementaryTypeName","src":"9527:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9526:14:66"},"returnParameters":{"id":24729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24742,"src":"9564:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":24727,"name":"bool","nodeType":"ElementaryTypeName","src":"9564:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9563:6:66"},"scope":25145,"src":"9499:176:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24752,"nodeType":"Block","src":"9967:66:66","statements":[{"expression":{"arguments":[{"id":24748,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24745,"src":"10002:12:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":24747,"name":"_ensureBufferInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24774,"src":"9977:24:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC4626_$38998_$returns$__$","typeString":"function (contract IERC4626) view"}},"id":24749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9977:38:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24750,"nodeType":"ExpressionStatement","src":"9977:38:66"},{"id":24751,"nodeType":"PlaceholderStatement","src":"10025:1:66"}]},"id":24753,"name":"withInitializedBuffer","nameLocation":"9922:21:66","nodeType":"ModifierDefinition","parameters":{"id":24746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24745,"mutability":"mutable","name":"wrappedToken","nameLocation":"9953:12:66","nodeType":"VariableDeclaration","scope":24753,"src":"9944:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24744,"nodeType":"UserDefinedTypeName","pathNode":{"id":24743,"name":"IERC4626","nameLocations":["9944:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"9944:8:66"},"referencedDeclaration":38998,"src":"9944:8:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"9943:23:66"},"src":"9913:120:66","virtual":false,"visibility":"internal"},{"body":{"id":24773,"nodeType":"Block","src":"10110:129:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":24759,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"10124:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":24761,"indexExpression":{"id":24760,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24756,"src":"10138:12:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10124:27:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":24764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10163:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":24763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10155:7:66","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24762,"name":"address","nodeType":"ElementaryTypeName","src":"10155:7:66","typeDescriptions":{}}},"id":24765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10155:10:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10124:41:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24772,"nodeType":"IfStatement","src":"10120:113:66","trueBody":{"id":24771,"nodeType":"Block","src":"10167:66:66","statements":[{"errorCall":{"arguments":[{"id":24768,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24756,"src":"10209:12:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":24767,"name":"BufferNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"10188:20:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC4626_$38998_$returns$_t_error_$","typeString":"function (contract IERC4626) pure returns (error)"}},"id":24769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10188:34:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24770,"nodeType":"RevertStatement","src":"10181:41:66"}]}}]},"id":24774,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureBufferInitialized","nameLocation":"10048:24:66","nodeType":"FunctionDefinition","parameters":{"id":24757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24756,"mutability":"mutable","name":"wrappedToken","nameLocation":"10082:12:66","nodeType":"VariableDeclaration","scope":24774,"src":"10073:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24755,"nodeType":"UserDefinedTypeName","pathNode":{"id":24754,"name":"IERC4626","nameLocations":["10073:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"10073:8:66"},"referencedDeclaration":38998,"src":"10073:8:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"10072:23:66"},"returnParameters":{"id":24758,"nodeType":"ParameterList","parameters":[],"src":"10110:0:66"},"scope":25145,"src":"10039:200:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24795,"nodeType":"Block","src":"10561:218:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":24787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":24783,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"10575:13:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":24785,"indexExpression":{"id":24784,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24778,"src":"10589:12:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10575:27:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":24786,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24780,"src":"10606:15:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10575:46:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24794,"nodeType":"IfStatement","src":"10571:202:66","trueBody":{"id":24793,"nodeType":"Block","src":"10623:150:66","statements":[{"errorCall":{"arguments":[{"id":24789,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24778,"src":"10732:12:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":24790,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24780,"src":"10746:15:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"}],"id":24788,"name":"WrongUnderlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3475,"src":"10711:20:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC4626_$38998_$_t_address_$returns$_t_error_$","typeString":"function (contract IERC4626,address) pure returns (error)"}},"id":24791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10711:51:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":24792,"nodeType":"RevertStatement","src":"10704:58:66"}]}}]},"documentation":{"id":24775,"nodeType":"StructuredDocumentation","src":"10245:214:66","text":" @dev This assumes `underlyingToken` is non-zero; should be called by functions that have already ensured the\n buffer has been initialized (e.g., those protected by `withInitializedBuffer`)."},"id":24796,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureCorrectBufferAsset","nameLocation":"10473:25:66","nodeType":"FunctionDefinition","parameters":{"id":24781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24778,"mutability":"mutable","name":"wrappedToken","nameLocation":"10508:12:66","nodeType":"VariableDeclaration","scope":24796,"src":"10499:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":24777,"nodeType":"UserDefinedTypeName","pathNode":{"id":24776,"name":"IERC4626","nameLocations":["10499:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"10499:8:66"},"referencedDeclaration":38998,"src":"10499:8:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":24780,"mutability":"mutable","name":"underlyingToken","nameLocation":"10530:15:66","nodeType":"VariableDeclaration","scope":24796,"src":"10522:23:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24779,"name":"address","nodeType":"ElementaryTypeName","src":"10522:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10498:48:66"},"returnParameters":{"id":24782,"nodeType":"ParameterList","parameters":[],"src":"10561:0:66"},"scope":25145,"src":"10464:315:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24843,"nodeType":"Block","src":"11288:435:66","statements":[{"assignments":[24808],"declarations":[{"constant":false,"id":24808,"mutability":"mutable","name":"poolBalances","nameLocation":"11364:12:66","nodeType":"VariableDeclaration","scope":24843,"src":"11298:78:66","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":24807,"keyName":"tokenIndex","keyNameLocation":"11314:10:66","keyType":{"id":24805,"name":"uint256","nodeType":"ElementaryTypeName","src":"11306:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"11298:57:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"11336:18:66","valueType":{"id":24806,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11328:7:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":24812,"initialValue":{"baseExpression":{"id":24809,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"11379:18:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":24811,"indexExpression":{"id":24810,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24799,"src":"11398:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11379:24:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"11298:105:66"},{"body":{"id":24841,"nodeType":"Block","src":"11472:245:66","statements":[{"expression":{"id":24839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":24825,"name":"poolBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24808,"src":"11549:12:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":24827,"indexExpression":{"id":24826,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24814,"src":"11562:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11549:15:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":24830,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24802,"src":"11619:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11628:11:66","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"11619:20:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24833,"indexExpression":{"id":24832,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24814,"src":"11640:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11619:23:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":24834,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24802,"src":"11660:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11669:20:66","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"11660:29:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24837,"indexExpression":{"id":24836,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24814,"src":"11690:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11660:32:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":24828,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"11567:18:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":24829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11586:15:66","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"11567:34:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":24838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11567:139:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11549:157:66","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":24840,"nodeType":"ExpressionStatement","src":"11549:157:66"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":24821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24817,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24814,"src":"11434:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":24818,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24802,"src":"11438:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11447:11:66","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"11438:20:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11459:6:66","memberName":"length","nodeType":"MemberAccess","src":"11438:27:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11434:31:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":24842,"initializationExpression":{"assignments":[24814],"declarations":[{"constant":false,"id":24814,"mutability":"mutable","name":"i","nameLocation":"11427:1:66","nodeType":"VariableDeclaration","scope":24842,"src":"11419:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24813,"name":"uint256","nodeType":"ElementaryTypeName","src":"11419:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":24816,"initialValue":{"hexValue":"30","id":24815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11431:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11419:13:66"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":24823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11467:3:66","subExpression":{"id":24822,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24814,"src":"11469:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24824,"nodeType":"ExpressionStatement","src":"11467:3:66"},"nodeType":"ForStatement","src":"11414:303:66"}]},"documentation":{"id":24797,"nodeType":"StructuredDocumentation","src":"11009:188:66","text":" @dev Packs and sets the raw and live balances of a Pool's tokens to the current values in poolData.balancesRaw\n and poolData.liveBalances in the same storage slot."},"id":24844,"implemented":true,"kind":"function","modifiers":[],"name":"_writePoolBalancesToStorage","nameLocation":"11211:27:66","nodeType":"FunctionDefinition","parameters":{"id":24803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24799,"mutability":"mutable","name":"pool","nameLocation":"11247:4:66","nodeType":"VariableDeclaration","scope":24844,"src":"11239:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24798,"name":"address","nodeType":"ElementaryTypeName","src":"11239:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24802,"mutability":"mutable","name":"poolData","nameLocation":"11269:8:66","nodeType":"VariableDeclaration","scope":24844,"src":"11253:24:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":24801,"nodeType":"UserDefinedTypeName","pathNode":{"id":24800,"name":"PoolData","nameLocations":["11253:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"11253:8:66"},"referencedDeclaration":4511,"src":"11253:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"11238:40:66"},"returnParameters":{"id":24804,"nodeType":"ParameterList","parameters":[],"src":"11288:0:66"},"scope":25145,"src":"11202:521:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24874,"nodeType":"Block","src":"12550:209:66","statements":[{"expression":{"arguments":[{"baseExpression":{"id":24859,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"12587:18:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":24861,"indexExpression":{"id":24860,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24847,"src":"12606:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12587:24:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"baseExpression":{"id":24862,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"12625:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":24864,"indexExpression":{"id":24863,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24847,"src":"12641:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12625:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},{"baseExpression":{"id":24865,"name":"_poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27789,"src":"12660:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo storage ref))"}},"id":24867,"indexExpression":{"id":24866,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24847,"src":"12675:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12660:20:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},{"baseExpression":{"id":24868,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"12694:11:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":24870,"indexExpression":{"id":24869,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24847,"src":"12706:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12694:17:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},{"id":24871,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24850,"src":"12725:17:66","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":24856,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24854,"src":"12560:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12569:4:66","memberName":"load","nodeType":"MemberAccess","referencedDeclaration":30243,"src":"12560:13:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),PoolConfigBits,mapping(contract IERC20 => struct TokenInfo storage ref),contract IERC20[] storage pointer,enum Rounding) view"}},"id":24872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12560:192:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24873,"nodeType":"ExpressionStatement","src":"12560:192:66"}]},"documentation":{"id":24845,"nodeType":"StructuredDocumentation","src":"11729:702:66","text":" @dev Fill in PoolData, including paying protocol yield fees and computing final raw and live balances.\n In normal operation, we update both balances and fees together. However, while Recovery Mode is enabled,\n we cannot track yield fees, as that would involve making external calls that could fail and block withdrawals.\n Therefore, disabling Recovery Mode requires writing *only* the balances to storage, so we still need this\n as a separate function. It is normally called by `_loadPoolDataUpdatingBalancesAndYieldFees`, but in the\n Recovery Mode special case, it is called separately, with the result passed into `_writePoolBalancesToStorage`."},"id":24875,"implemented":true,"kind":"function","modifiers":[],"name":"_loadPoolData","nameLocation":"12445:13:66","nodeType":"FunctionDefinition","parameters":{"id":24851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24847,"mutability":"mutable","name":"pool","nameLocation":"12467:4:66","nodeType":"VariableDeclaration","scope":24875,"src":"12459:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24846,"name":"address","nodeType":"ElementaryTypeName","src":"12459:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24850,"mutability":"mutable","name":"roundingDirection","nameLocation":"12482:17:66","nodeType":"VariableDeclaration","scope":24875,"src":"12473:26:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":24849,"nodeType":"UserDefinedTypeName","pathNode":{"id":24848,"name":"Rounding","nameLocations":["12473:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"12473:8:66"},"referencedDeclaration":4514,"src":"12473:8:66","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"12458:42:66"},"returnParameters":{"id":24855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24854,"mutability":"mutable","name":"poolData","nameLocation":"12540:8:66","nodeType":"VariableDeclaration","scope":24875,"src":"12524:24:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":24853,"nodeType":"UserDefinedTypeName","pathNode":{"id":24852,"name":"PoolData","nameLocations":["12524:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"12524:8:66"},"referencedDeclaration":4511,"src":"12524:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"12523:26:66"},"scope":25145,"src":"12436:323:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":24919,"nodeType":"Block","src":"13378:401:66","statements":[{"expression":{"arguments":[{"baseExpression":{"id":24892,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"13497:18:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":24894,"indexExpression":{"id":24893,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24878,"src":"13516:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13497:24:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"baseExpression":{"id":24895,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"13535:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":24897,"indexExpression":{"id":24896,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24878,"src":"13551:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13535:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},{"baseExpression":{"id":24898,"name":"_poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27789,"src":"13570:14:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo storage ref))"}},"id":24900,"indexExpression":{"id":24899,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24878,"src":"13585:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13570:20:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},{"baseExpression":{"id":24901,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"13604:11:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":24903,"indexExpression":{"id":24902,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24878,"src":"13616:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13604:17:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},{"id":24904,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24881,"src":"13635:17:66","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":24889,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24887,"src":"13470:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13479:4:66","memberName":"load","nodeType":"MemberAccess","referencedDeclaration":30243,"src":"13470:13:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),PoolConfigBits,mapping(contract IERC20 => struct TokenInfo storage ref),contract IERC20[] storage pointer,enum Rounding) view"}},"id":24905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13470:192:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24906,"nodeType":"ExpressionStatement","src":"13470:192:66"},{"expression":{"arguments":[{"id":24910,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24887,"src":"13709:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"baseExpression":{"id":24911,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"13719:18:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":24913,"indexExpression":{"id":24912,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24878,"src":"13738:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13719:24:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"baseExpression":{"id":24914,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"13745:20:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":24916,"indexExpression":{"id":24915,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24878,"src":"13766:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13745:26:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}],"expression":{"id":24907,"name":"PoolDataLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30570,"src":"13673:11:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolDataLib_$30570_$","typeString":"type(library PoolDataLib)"}},"id":24909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13685:23:66","memberName":"syncPoolBalancesAndFees","nodeType":"MemberAccess","referencedDeclaration":30346,"src":"13673:35:66","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$returns$__$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),mapping(contract IERC20 => bytes32))"}},"id":24917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13673:99:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":24918,"nodeType":"ExpressionStatement","src":"13673:99:66"}]},"documentation":{"id":24876,"nodeType":"StructuredDocumentation","src":"12765:436:66","text":" @dev Fill in PoolData, including paying protocol yield fees and computing final raw and live balances.\n This function modifies protocol fees and balance storage. Out of an abundance of caution, since `_loadPoolData`\n makes external calls, we are making anything that calls it and then modifies storage non-reentrant.\n Side effects: updates `_aggregateFeeAmounts` and `_poolTokenBalances` in storage."},"id":24920,"implemented":true,"kind":"function","modifiers":[{"id":24884,"kind":"modifierInvocation","modifierName":{"id":24883,"name":"nonReentrant","nameLocations":["13330:12:66"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"13330:12:66"},"nodeType":"ModifierInvocation","src":"13330:12:66"}],"name":"_loadPoolDataUpdatingBalancesAndYieldFees","nameLocation":"13215:41:66","nodeType":"FunctionDefinition","parameters":{"id":24882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24878,"mutability":"mutable","name":"pool","nameLocation":"13274:4:66","nodeType":"VariableDeclaration","scope":24920,"src":"13266:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24877,"name":"address","nodeType":"ElementaryTypeName","src":"13266:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24881,"mutability":"mutable","name":"roundingDirection","nameLocation":"13297:17:66","nodeType":"VariableDeclaration","scope":24920,"src":"13288:26:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":24880,"nodeType":"UserDefinedTypeName","pathNode":{"id":24879,"name":"Rounding","nameLocations":["13288:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"13288:8:66"},"referencedDeclaration":4514,"src":"13288:8:66","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"13256:64:66"},"returnParameters":{"id":24888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24887,"mutability":"mutable","name":"poolData","nameLocation":"13368:8:66","nodeType":"VariableDeclaration","scope":24920,"src":"13352:24:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":24886,"nodeType":"UserDefinedTypeName","pathNode":{"id":24885,"name":"PoolData","nameLocations":["13352:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"13352:8:66"},"referencedDeclaration":4511,"src":"13352:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"13351:26:66"},"scope":25145,"src":"13206:573:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":24996,"nodeType":"Block","src":"14277:641:66","statements":[{"expression":{"id":24942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":24936,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24924,"src":"14287:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14296:11:66","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"14287:20:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24940,"indexExpression":{"id":24938,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24931,"src":"14308:10:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14287:32:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":24941,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24926,"src":"14322:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14287:48:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24943,"nodeType":"ExpressionStatement","src":"14287:48:66"},{"assignments":[24955],"declarations":[{"constant":false,"id":24955,"mutability":"mutable","name":"_upOrDown","nameLocation":"14414:9:66","nodeType":"VariableDeclaration","scope":24996,"src":"14346:77:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"},"typeName":{"id":24954,"nodeType":"FunctionTypeName","parameterTypes":{"id":24950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24954,"src":"14355:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24944,"name":"uint256","nodeType":"ElementaryTypeName","src":"14355:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24954,"src":"14364:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24946,"name":"uint256","nodeType":"ElementaryTypeName","src":"14364:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24949,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24954,"src":"14373:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24948,"name":"uint256","nodeType":"ElementaryTypeName","src":"14373:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14354:27:66"},"returnParameterTypes":{"id":24953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24952,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24954,"src":"14405:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24951,"name":"uint256","nodeType":"ElementaryTypeName","src":"14405:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14404:9:66"},"src":"14346:77:66","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"},"visibility":"internal"},"visibility":"internal"}],"id":24965,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"id":24959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24956,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24929,"src":"14426:17:66","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":24957,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"14459:8:66","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":24958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14468:8:66","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"14459:17:66","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"src":"14426:50:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":24962,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"14547:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ScalingHelpers_$6474_$","typeString":"type(library ScalingHelpers)"}},"id":24963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14562:28:66","memberName":"toScaled18ApplyRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"14547:43:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14426:164:66","trueExpression":{"expression":{"id":24960,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"14491:14:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ScalingHelpers_$6474_$","typeString":"type(library ScalingHelpers)"}},"id":24961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14506:26:66","memberName":"toScaled18ApplyRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6114,"src":"14491:41:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"nodeType":"VariableDeclarationStatement","src":"14346:244:66"},{"expression":{"id":24982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":24966,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24924,"src":"14601:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14610:20:66","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"14601:29:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24970,"indexExpression":{"id":24968,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24931,"src":"14631:10:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14601:41:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":24972,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24926,"src":"14668:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":24973,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24924,"src":"14695:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14704:21:66","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"14695:30:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24976,"indexExpression":{"id":24975,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24931,"src":"14726:10:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14695:42:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":24977,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24924,"src":"14751:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14760:10:66","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"14751:19:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24980,"indexExpression":{"id":24979,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24931,"src":"14771:10:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14751:31:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":24971,"name":"_upOrDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24955,"src":"14645:9:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14645:147:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14601:191:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":24983,"nodeType":"ExpressionStatement","src":"14601:191:66"},{"expression":{"arguments":[{"id":24985,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24926,"src":"14820:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":24986,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24924,"src":"14835:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14844:21:66","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"14835:30:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24989,"indexExpression":{"id":24988,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24931,"src":"14866:10:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14835:42:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":24990,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24924,"src":"14879:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":24991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14888:10:66","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"14879:19:66","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":24993,"indexExpression":{"id":24992,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24931,"src":"14899:10:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14879:31:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":24984,"name":"_upOrDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24955,"src":"14810:9:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":24994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14810:101:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":24935,"id":24995,"nodeType":"Return","src":"14803:108:66"}]},"documentation":{"id":24921,"nodeType":"StructuredDocumentation","src":"13785:270:66","text":" @dev Updates the raw and live balance of a given token in poolData, scaling the given raw balance by both decimal\n and token rates, and rounding the result in the given direction. Assumes scaling factors and rates are current\n in PoolData."},"id":24997,"implemented":true,"kind":"function","modifiers":[],"name":"_updateRawAndLiveTokenBalancesInPoolData","nameLocation":"14069:40:66","nodeType":"FunctionDefinition","parameters":{"id":24932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24924,"mutability":"mutable","name":"poolData","nameLocation":"14135:8:66","nodeType":"VariableDeclaration","scope":24997,"src":"14119:24:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":24923,"nodeType":"UserDefinedTypeName","pathNode":{"id":24922,"name":"PoolData","nameLocations":["14119:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"14119:8:66"},"referencedDeclaration":4511,"src":"14119:8:66","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":24926,"mutability":"mutable","name":"newRawBalance","nameLocation":"14161:13:66","nodeType":"VariableDeclaration","scope":24997,"src":"14153:21:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24925,"name":"uint256","nodeType":"ElementaryTypeName","src":"14153:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":24929,"mutability":"mutable","name":"roundingDirection","nameLocation":"14193:17:66","nodeType":"VariableDeclaration","scope":24997,"src":"14184:26:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":24928,"nodeType":"UserDefinedTypeName","pathNode":{"id":24927,"name":"Rounding","nameLocations":["14184:8:66"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"14184:8:66"},"referencedDeclaration":4514,"src":"14184:8:66","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"},{"constant":false,"id":24931,"mutability":"mutable","name":"tokenIndex","nameLocation":"14228:10:66","nodeType":"VariableDeclaration","scope":24997,"src":"14220:18:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24930,"name":"uint256","nodeType":"ElementaryTypeName","src":"14220:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14109:135:66"},"returnParameters":{"id":24935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":24997,"src":"14268:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24933,"name":"uint256","nodeType":"ElementaryTypeName","src":"14268:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14267:9:66"},"scope":25145,"src":"14060:858:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25044,"nodeType":"Block","src":"15011:692:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25004,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25001,"src":"15132:17:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25006,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24999,"src":"15177:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25005,"name":"ISwapFeePercentageBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"15152:24:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapFeePercentageBounds_$2839_$","typeString":"type(contract ISwapFeePercentageBounds)"}},"id":25007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15152:30:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISwapFeePercentageBounds_$2839","typeString":"contract ISwapFeePercentageBounds"}},"id":25008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15183:27:66","memberName":"getMinimumSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2832,"src":"15152:58:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":25009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15152:60:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15132:80:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25015,"nodeType":"IfStatement","src":"15128:143:66","trueBody":{"id":25014,"nodeType":"Block","src":"15214:57:66","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25011,"name":"SwapFeePercentageTooLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"15235:23:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15235:25:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25013,"nodeType":"RevertStatement","src":"15228:32:66"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25016,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25001,"src":"15285:17:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":25018,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24999,"src":"15330:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25017,"name":"ISwapFeePercentageBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"15305:24:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapFeePercentageBounds_$2839_$","typeString":"type(contract ISwapFeePercentageBounds)"}},"id":25019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15305:30:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISwapFeePercentageBounds_$2839","typeString":"contract ISwapFeePercentageBounds"}},"id":25020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15336:27:66","memberName":"getMaximumSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":2838,"src":"15305:58:66","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":25021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15305:60:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15285:80:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25027,"nodeType":"IfStatement","src":"15281:144:66","trueBody":{"id":25026,"nodeType":"Block","src":"15367:58:66","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25023,"name":"SwapFeePercentageTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3395,"src":"15388:24:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15388:26:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25025,"nodeType":"RevertStatement","src":"15381:33:66"}]}},{"expression":{"id":25037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":25028,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"15540:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":25030,"indexExpression":{"id":25029,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24999,"src":"15556:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15540:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":25035,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25001,"src":"15613:17:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":25031,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"15564:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":25033,"indexExpression":{"id":25032,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24999,"src":"15580:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15564:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15586:26:66","memberName":"setStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29640,"src":"15564:48:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":25036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15564:67:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"15540:91:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25038,"nodeType":"ExpressionStatement","src":"15540:91:66"},{"eventCall":{"arguments":[{"id":25040,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24999,"src":"15672:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25041,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25001,"src":"15678:17:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25039,"name":"SwapFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3697,"src":"15647:24:66","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":25042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15647:49:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25043,"nodeType":"EmitStatement","src":"15642:54:66"}]},"id":25045,"implemented":true,"kind":"function","modifiers":[],"name":"_setStaticSwapFeePercentage","nameLocation":"14933:27:66","nodeType":"FunctionDefinition","parameters":{"id":25002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24999,"mutability":"mutable","name":"pool","nameLocation":"14969:4:66","nodeType":"VariableDeclaration","scope":25045,"src":"14961:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":24998,"name":"address","nodeType":"ElementaryTypeName","src":"14961:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25001,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"14983:17:66","nodeType":"VariableDeclaration","scope":25045,"src":"14975:25:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25000,"name":"uint256","nodeType":"ElementaryTypeName","src":"14975:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14960:41:66"},"returnParameters":{"id":25003,"nodeType":"ParameterList","parameters":[],"src":"15011:0:66"},"scope":25145,"src":"14924:779:66","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":25084,"nodeType":"Block","src":"15883:192:66","statements":[{"body":{"id":25078,"nodeType":"Block","src":"15937:89:66","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":25073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":25069,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25050,"src":"15955:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":25071,"indexExpression":{"id":25070,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25059,"src":"15962:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15955:9:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":25072,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25053,"src":"15968:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"15955:18:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25077,"nodeType":"IfStatement","src":"15951:65:66","trueBody":{"id":25076,"nodeType":"Block","src":"15975:41:66","statements":[{"expression":{"id":25074,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25059,"src":"16000:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":25057,"id":25075,"nodeType":"Return","src":"15993:8:66"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25062,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25059,"src":"15913:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":25063,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25050,"src":"15917:6:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":25064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15924:6:66","memberName":"length","nodeType":"MemberAccess","src":"15917:13:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15913:17:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25079,"initializationExpression":{"assignments":[25059],"declarations":[{"constant":false,"id":25059,"mutability":"mutable","name":"i","nameLocation":"15906:1:66","nodeType":"VariableDeclaration","scope":25079,"src":"15898:9:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25058,"name":"uint256","nodeType":"ElementaryTypeName","src":"15898:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25061,"initialValue":{"hexValue":"30","id":25060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15910:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15898:13:66"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":25067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15932:3:66","subExpression":{"id":25066,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25059,"src":"15932:1:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25068,"nodeType":"ExpressionStatement","src":"15932:3:66"},"nodeType":"ForStatement","src":"15893:133:66"},{"errorCall":{"arguments":[{"id":25081,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25053,"src":"16062:5:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":25080,"name":"TokenNotRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3300,"src":"16043:18:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$returns$_t_error_$","typeString":"function (contract IERC20) pure returns (error)"}},"id":25082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16043:25:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25083,"nodeType":"RevertStatement","src":"16036:32:66"}]},"documentation":{"id":25046,"nodeType":"StructuredDocumentation","src":"15709:74:66","text":"@dev Find the index of a token in a token array. Reverts if not found."},"id":25085,"implemented":true,"kind":"function","modifiers":[],"name":"_findTokenIndex","nameLocation":"15797:15:66","nodeType":"FunctionDefinition","parameters":{"id":25054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25050,"mutability":"mutable","name":"tokens","nameLocation":"15829:6:66","nodeType":"VariableDeclaration","scope":25085,"src":"15813:22:66","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":25048,"nodeType":"UserDefinedTypeName","pathNode":{"id":25047,"name":"IERC20","nameLocations":["15813:6:66"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"15813:6:66"},"referencedDeclaration":39274,"src":"15813:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":25049,"nodeType":"ArrayTypeName","src":"15813:8:66","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":25053,"mutability":"mutable","name":"token","nameLocation":"15844:5:66","nodeType":"VariableDeclaration","scope":25085,"src":"15837:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":25052,"nodeType":"UserDefinedTypeName","pathNode":{"id":25051,"name":"IERC20","nameLocations":["15837:6:66"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"15837:6:66"},"referencedDeclaration":39274,"src":"15837:6:66","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"15812:38:66"},"returnParameters":{"id":25057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25085,"src":"15874:7:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25055,"name":"uint256","nodeType":"ElementaryTypeName","src":"15874:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15873:9:66"},"scope":25145,"src":"15788:287:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":25095,"nodeType":"Block","src":"16446:59:66","statements":[{"expression":{"arguments":[{"id":25091,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25088,"src":"16482:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25090,"name":"_ensurePoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25113,"src":"16456:25:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":25092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16456:31:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25093,"nodeType":"ExpressionStatement","src":"16456:31:66"},{"id":25094,"nodeType":"PlaceholderStatement","src":"16497:1:66"}]},"documentation":{"id":25086,"nodeType":"StructuredDocumentation","src":"16302:97:66","text":"@dev Place on functions that may only be called when the associated pool is in recovery mode."},"id":25096,"name":"onlyInRecoveryMode","nameLocation":"16413:18:66","nodeType":"ModifierDefinition","parameters":{"id":25089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25088,"mutability":"mutable","name":"pool","nameLocation":"16440:4:66","nodeType":"VariableDeclaration","scope":25096,"src":"16432:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25087,"name":"address","nodeType":"ElementaryTypeName","src":"16432:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16431:14:66"},"src":"16404:101:66","virtual":false,"visibility":"internal"},{"body":{"id":25112,"nodeType":"Block","src":"16632:109:66","statements":[{"condition":{"id":25105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16646:28:66","subExpression":{"arguments":[{"id":25103,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25099,"src":"16669:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25102,"name":"_isPoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25128,"src":"16647:21:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":25104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16647:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25111,"nodeType":"IfStatement","src":"16642:93:66","trueBody":{"id":25110,"nodeType":"Block","src":"16676:59:66","statements":[{"errorCall":{"arguments":[{"id":25107,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25099,"src":"16719:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25106,"name":"PoolNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"16697:21:66","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":25108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16697:27:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25109,"nodeType":"RevertStatement","src":"16690:34:66"}]}}]},"documentation":{"id":25097,"nodeType":"StructuredDocumentation","src":"16511:53:66","text":"@dev Reverts if the pool is not in recovery mode."},"id":25113,"implemented":true,"kind":"function","modifiers":[],"name":"_ensurePoolInRecoveryMode","nameLocation":"16578:25:66","nodeType":"FunctionDefinition","parameters":{"id":25100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25099,"mutability":"mutable","name":"pool","nameLocation":"16612:4:66","nodeType":"VariableDeclaration","scope":25113,"src":"16604:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25098,"name":"address","nodeType":"ElementaryTypeName","src":"16604:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16603:14:66"},"returnParameters":{"id":25101,"nodeType":"ParameterList","parameters":[],"src":"16632:0:66"},"scope":25145,"src":"16569:172:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":25127,"nodeType":"Block","src":"17027:68:66","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":25121,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"17044:15:66","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":25123,"indexExpression":{"id":25122,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25116,"src":"17060:4:66","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17044:21:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17066:20:66","memberName":"isPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":29305,"src":"17044:42:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":25125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17044:44:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":25120,"id":25126,"nodeType":"Return","src":"17037:51:66"}]},"documentation":{"id":25114,"nodeType":"StructuredDocumentation","src":"16747:201:66","text":" @notice Checks whether a pool is in recovery mode.\n @param pool Address of the pool to check\n @return inRecoveryMode True if the pool is in recovery mode, false otherwise"},"id":25128,"implemented":true,"kind":"function","modifiers":[],"name":"_isPoolInRecoveryMode","nameLocation":"16962:21:66","nodeType":"FunctionDefinition","parameters":{"id":25117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25116,"mutability":"mutable","name":"pool","nameLocation":"16992:4:66","nodeType":"VariableDeclaration","scope":25128,"src":"16984:12:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25115,"name":"address","nodeType":"ElementaryTypeName","src":"16984:7:66","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16983:14:66"},"returnParameters":{"id":25120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25128,"src":"17021:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25118,"name":"bool","nodeType":"ElementaryTypeName","src":"17021:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17020:6:66"},"scope":25145,"src":"16953:142:66","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":25143,"nodeType":"Block","src":"17157:103:66","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25133,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"17174:18:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":25134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17193:12:66","memberName":"isStaticCall","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"17174:31:66","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":25135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17174:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25136,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"17211:15:66","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":25137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17227:15:66","memberName":"isQueryDisabled","nodeType":"MemberAccess","referencedDeclaration":30641,"src":"17211:31:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":25138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17211:33:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":25139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17248:5:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"17211:42:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17174:79:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":25132,"id":25142,"nodeType":"Return","src":"17167:86:66"}]},"id":25144,"implemented":true,"kind":"function","modifiers":[],"name":"_isQueryContext","nameLocation":"17110:15:66","nodeType":"FunctionDefinition","parameters":{"id":25129,"nodeType":"ParameterList","parameters":[],"src":"17125:2:66"},"returnParameters":{"id":25132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25131,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25144,"src":"17151:4:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25130,"name":"bool","nodeType":"ElementaryTypeName","src":"17151:4:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17150:6:66"},"scope":25145,"src":"17101:159:66","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":25146,"src":"1998:15264:66","usedErrors":[1684,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,9512,39035,39040,39045,39054,39059,39064],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788,38264,38275]}],"src":"46:17217:66"},"id":66},"@balancer-labs/v3-vault/contracts/VaultExtension.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultExtension.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"Address":[39879],"AfterSwapParams":[4583],"BasePoolMath":[11709],"BufferWrapOrUnwrapParams":[4644],"CastingHelpers":[5471],"EVMCallModeHelpers":[5493],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"FixedPoint":[7834],"HookFlags":[4409],"HooksConfig":[4433],"HooksConfigLib":[29013],"IAuthorizer":[1316],"IBasePool":[1366],"IERC20":[39274],"IERC20Metadata":[39300],"IERC4626":[38998],"IHooks":[1887],"IProtocolFeeController":[2230],"IRateProvider":[150],"IVault":[2893],"IVaultAdmin":[3183],"IVaultExtension":[4208],"InputHelpers":[5819],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PackedTokenBalance":[5970],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolConfigLib":[29980],"PoolData":[4511],"PoolDataLib":[30570],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"Proxy":[39196],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"RevertCodec":[6060],"Rounding":[4514],"ScalingHelpers":[6474],"StorageSlotExtension":[9911],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"TransientStorageHelpers":[7068],"VaultCommon":[25145],"VaultExtension":[27639],"VaultExtensionsLib":[30601],"VaultState":[4451],"VaultStateBits":[30607],"VaultStateLib":[30748],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":27640,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":25147,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:67"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":25149,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":39301,"src":"72:99:67","symbolAliases":[{"foreign":{"id":25148,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39300,"src":"81:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":25151,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":38999,"src":"172:75:67","symbolAliases":[{"foreign":{"id":25150,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"181:8:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":25153,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":39275,"src":"248:72:67","symbolAliases":[{"foreign":{"id":25152,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"257:6:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":25155,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":39880,"src":"321:68:67","symbolAliases":[{"foreign":{"id":25154,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"330:7:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","id":25157,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":39197,"src":"390:64:67","symbolAliases":[{"foreign":{"id":25156,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39196,"src":"399:5:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","id":25159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":1317,"src":"456:91:67","symbolAliases":[{"foreign":{"id":25158,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"465:11:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","id":25161,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":2231,"src":"548:113:67","symbolAliases":[{"foreign":{"id":25160,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"557:22:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","id":25163,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":151,"src":"662:112:67","symbolAliases":[{"foreign":{"id":25162,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"671:13:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","id":25165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":4209,"src":"775:99:67","symbolAliases":[{"foreign":{"id":25164,"name":"IVaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"784:15:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","id":25167,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":3184,"src":"875:91:67","symbolAliases":[{"foreign":{"id":25166,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"884:11:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","id":25169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":1367,"src":"967:87:67","symbolAliases":[{"foreign":{"id":25168,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"976:9:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","id":25171,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":1888,"src":"1055:81:67","symbolAliases":[{"foreign":{"id":25170,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"1064:6:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":25173,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":2894,"src":"1137:81:67","symbolAliases":[{"foreign":{"id":25172,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"1146:6:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":25174,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":4654,"src":"1219:69:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","id":25176,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":9912,"src":"1290:120:67","symbolAliases":[{"foreign":{"id":25175,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"1299:20:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","id":25178,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":5494,"src":"1411:111:67","symbolAliases":[{"foreign":{"id":25177,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"1420:18:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","id":25180,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":5971,"src":"1523:111:67","symbolAliases":[{"foreign":{"id":25179,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"1532:18:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","id":25182,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":6475,"src":"1635:103:67","symbolAliases":[{"foreign":{"id":25181,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"1644:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol","id":25184,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":5472,"src":"1739:103:67","symbolAliases":[{"foreign":{"id":25183,"name":"CastingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5471,"src":"1748:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","id":25186,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":5820,"src":"1843:99:67","symbolAliases":[{"foreign":{"id":25185,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"1852:12:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol","id":25188,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":6061,"src":"1943:97:67","symbolAliases":[{"foreign":{"id":25187,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"1952:11:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":25190,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":7835,"src":"2041:92:67","symbolAliases":[{"foreign":{"id":25189,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"2050:10:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":25192,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":7069,"src":"2134:125:67","symbolAliases":[{"foreign":{"id":25191,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"2147:23:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol","file":"./lib/VaultStateLib.sol","id":25195,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":30749,"src":"2261:72:67","symbolAliases":[{"foreign":{"id":25193,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"2270:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":25194,"name":"VaultStateLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30748,"src":"2286:13:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"./lib/PoolConfigLib.sol","id":25198,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":29981,"src":"2334:72:67","symbolAliases":[{"foreign":{"id":25196,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"2343:13:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":25197,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2358:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol","file":"./lib/VaultExtensionsLib.sol","id":25200,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":30602,"src":"2407:66:67","symbolAliases":[{"foreign":{"id":25199,"name":"VaultExtensionsLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30601,"src":"2416:18:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol","file":"./lib/HooksConfigLib.sol","id":25202,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":29014,"src":"2474:58:67","symbolAliases":[{"foreign":{"id":25201,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"2483:14:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol","file":"./lib/PoolDataLib.sol","id":25204,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":30571,"src":"2533:52:67","symbolAliases":[{"foreign":{"id":25203,"name":"PoolDataLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30570,"src":"2542:11:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BasePoolMath.sol","file":"./BasePoolMath.sol","id":25206,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":11710,"src":"2586:50:67","symbolAliases":[{"foreign":{"id":25205,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"2595:12:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultCommon.sol","file":"./VaultCommon.sol","id":25208,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27640,"sourceUnit":25146,"src":"2637:48:67","symbolAliases":[{"foreign":{"id":25207,"name":"VaultCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25145,"src":"2646:11:67","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":25210,"name":"IVaultExtension","nameLocations":["3198:15:67"],"nodeType":"IdentifierPath","referencedDeclaration":4208,"src":"3198:15:67"},"id":25211,"nodeType":"InheritanceSpecifier","src":"3198:15:67"},{"baseName":{"id":25212,"name":"VaultCommon","nameLocations":["3215:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":25145,"src":"3215:11:67"},"id":25213,"nodeType":"InheritanceSpecifier","src":"3215:11:67"},{"baseName":{"id":25214,"name":"Proxy","nameLocations":["3228:5:67"],"nodeType":"IdentifierPath","referencedDeclaration":39196,"src":"3228:5:67"},"id":25215,"nodeType":"InheritanceSpecifier","src":"3228:5:67"}],"canonicalName":"VaultExtension","contractDependencies":[],"contractKind":"contract","documentation":{"id":25209,"nodeType":"StructuredDocumentation","src":"2687:483:67","text":" @notice Bytecode extension for the Vault containing permissionless functions outside the critical path.\n It has access to the same storage layout as the main vault.\n The functions in this contract are not meant to be called directly. They must only be called by the Vault\n via delegate calls, so that any state modifications produced by this contract's code will actually target\n the main Vault's state.\n The storage of this contract is in practice unused."},"fullyImplemented":true,"id":27639,"internalFunctionIDs":{"6093":1,"6114":2},"linearizedBaseContracts":[27639,39196,25145,38828,1685,39065,9568,27923,3550,3789,4208],"name":"VaultExtension","nameLocation":"3180:14:67","nodeType":"ContractDefinition","nodes":[{"global":false,"id":25217,"libraryName":{"id":25216,"name":"Address","nameLocations":["3246:7:67"],"nodeType":"IdentifierPath","referencedDeclaration":39879,"src":"3246:7:67"},"nodeType":"UsingForDirective","src":"3240:20:67"},{"global":false,"id":25221,"libraryName":{"id":25218,"name":"CastingHelpers","nameLocations":["3271:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":5471,"src":"3271:14:67"},"nodeType":"UsingForDirective","src":"3265:35:67","typeName":{"baseType":{"id":25219,"name":"uint256","nodeType":"ElementaryTypeName","src":"3290:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25220,"nodeType":"ArrayTypeName","src":"3290:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},{"global":false,"id":25224,"libraryName":{"id":25222,"name":"FixedPoint","nameLocations":["3311:10:67"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"3311:10:67"},"nodeType":"UsingForDirective","src":"3305:29:67","typeName":{"id":25223,"name":"uint256","nodeType":"ElementaryTypeName","src":"3326:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":25227,"libraryName":{"id":25225,"name":"PackedTokenBalance","nameLocations":["3345:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":5970,"src":"3345:18:67"},"nodeType":"UsingForDirective","src":"3339:37:67","typeName":{"id":25226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3368:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":25231,"libraryName":{"id":25228,"name":"PoolConfigLib","nameLocations":["3387:13:67"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"3387:13:67"},"nodeType":"UsingForDirective","src":"3381:39:67","typeName":{"id":25230,"nodeType":"UserDefinedTypeName","pathNode":{"id":25229,"name":"PoolConfigBits","nameLocations":["3405:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3405:14:67"},"referencedDeclaration":4364,"src":"3405:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":25235,"libraryName":{"id":25232,"name":"HooksConfigLib","nameLocations":["3431:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":29013,"src":"3431:14:67"},"nodeType":"UsingForDirective","src":"3425:40:67","typeName":{"id":25234,"nodeType":"UserDefinedTypeName","pathNode":{"id":25233,"name":"PoolConfigBits","nameLocations":["3450:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3450:14:67"},"referencedDeclaration":4364,"src":"3450:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":25239,"libraryName":{"id":25236,"name":"VaultStateLib","nameLocations":["3476:13:67"],"nodeType":"IdentifierPath","referencedDeclaration":30748,"src":"3476:13:67"},"nodeType":"UsingForDirective","src":"3470:39:67","typeName":{"id":25238,"nodeType":"UserDefinedTypeName","pathNode":{"id":25237,"name":"VaultStateBits","nameLocations":["3494:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"3494:14:67"},"referencedDeclaration":30607,"src":"3494:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}},{"global":false,"id":25242,"libraryName":{"id":25240,"name":"InputHelpers","nameLocations":["3520:12:67"],"nodeType":"IdentifierPath","referencedDeclaration":5819,"src":"3520:12:67"},"nodeType":"UsingForDirective","src":"3514:31:67","typeName":{"id":25241,"name":"uint256","nodeType":"ElementaryTypeName","src":"3537:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":25244,"libraryName":{"id":25243,"name":"ScalingHelpers","nameLocations":["3556:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":6474,"src":"3556:14:67"},"nodeType":"UsingForDirective","src":"3550:27:67"},{"global":false,"id":25248,"libraryName":{"id":25245,"name":"VaultExtensionsLib","nameLocations":["3588:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":30601,"src":"3588:18:67"},"nodeType":"UsingForDirective","src":"3582:36:67","typeName":{"id":25247,"nodeType":"UserDefinedTypeName","pathNode":{"id":25246,"name":"IVault","nameLocations":["3611:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"3611:6:67"},"referencedDeclaration":2893,"src":"3611:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}},{"global":false,"id":25250,"libraryName":{"id":25249,"name":"TransientStorageHelpers","nameLocations":["3629:23:67"],"nodeType":"IdentifierPath","referencedDeclaration":7068,"src":"3629:23:67"},"nodeType":"UsingForDirective","src":"3623:36:67"},{"global":false,"id":25252,"libraryName":{"id":25251,"name":"StorageSlotExtension","nameLocations":["3670:20:67"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"3670:20:67"},"nodeType":"UsingForDirective","src":"3664:33:67"},{"global":false,"id":25256,"libraryName":{"id":25253,"name":"PoolDataLib","nameLocations":["3708:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":30570,"src":"3708:11:67"},"nodeType":"UsingForDirective","src":"3702:31:67","typeName":{"id":25255,"nodeType":"UserDefinedTypeName","pathNode":{"id":25254,"name":"PoolData","nameLocations":["3724:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"3724:8:67"},"referencedDeclaration":4511,"src":"3724:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}}},{"constant":false,"id":25259,"mutability":"immutable","name":"_vault","nameLocation":"3764:6:67","nodeType":"VariableDeclaration","scope":27639,"src":"3739:31:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":25258,"nodeType":"UserDefinedTypeName","pathNode":{"id":25257,"name":"IVault","nameLocations":["3739:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"3739:6:67"},"referencedDeclaration":2893,"src":"3739:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":25262,"mutability":"immutable","name":"_vaultAdmin","nameLocation":"3806:11:67","nodeType":"VariableDeclaration","scope":27639,"src":"3776:41:67","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"},"typeName":{"id":25261,"nodeType":"UserDefinedTypeName","pathNode":{"id":25260,"name":"IVaultAdmin","nameLocations":["3776:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":3183,"src":"3776:11:67"},"referencedDeclaration":3183,"src":"3776:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"visibility":"private"},{"body":{"id":25269,"nodeType":"Block","src":"3941:54:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":25265,"name":"_ensureVaultDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25279,"src":"3951:24:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":25266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3951:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25267,"nodeType":"ExpressionStatement","src":"3951:26:67"},{"id":25268,"nodeType":"PlaceholderStatement","src":"3987:1:67"}]},"documentation":{"id":25263,"nodeType":"StructuredDocumentation","src":"3824:79:67","text":"@dev Functions with this modifier can only be delegate-called by the Vault."},"id":25270,"name":"onlyVaultDelegateCall","nameLocation":"3917:21:67","nodeType":"ModifierDefinition","parameters":{"id":25264,"nodeType":"ParameterList","parameters":[],"src":"3938:2:67"},"src":"3908:87:67","virtual":false,"visibility":"internal"},{"body":{"id":25278,"nodeType":"Block","src":"4051:49:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25273,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25259,"src":"4061:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":25275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4068:23:67","memberName":"ensureVaultDelegateCall","nodeType":"MemberAccess","referencedDeclaration":30600,"src":"4061:30:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IVault_$2893_$returns$__$attached_to$_t_contract$_IVault_$2893_$","typeString":"function (contract IVault) view"}},"id":25276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25277,"nodeType":"ExpressionStatement","src":"4061:32:67"}]},"id":25279,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureVaultDelegateCall","nameLocation":"4010:24:67","nodeType":"FunctionDefinition","parameters":{"id":25271,"nodeType":"ParameterList","parameters":[],"src":"4034:2:67"},"returnParameters":{"id":25272,"nodeType":"ParameterList","parameters":[],"src":"4051:0:67"},"scope":27639,"src":"4001:99:67","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":25324,"nodeType":"Block","src":"4160:395:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"id":25292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25288,"name":"vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25285,"src":"4174:10:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":25289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4185:5:67","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":2911,"src":"4174:16:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view external returns (contract IVault)"}},"id":25290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4174:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":25291,"name":"mainVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25282,"src":"4196:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"src":"4174:31:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25297,"nodeType":"IfStatement","src":"4170:96:67","trueBody":{"id":25296,"nodeType":"Block","src":"4207:59:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25293,"name":"WrongVaultAdminDeployment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"4228:25:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4228:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25295,"nodeType":"RevertStatement","src":"4221:34:67"}]}},{"expression":{"id":25302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25298,"name":"_vaultPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27804,"src":"4276:24:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25299,"name":"vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25285,"src":"4303:10:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":25300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4314:21:67","memberName":"getPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":2917,"src":"4303:32:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":25301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4303:34:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4276:61:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":25303,"nodeType":"ExpressionStatement","src":"4276:61:67"},{"expression":{"id":25308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25304,"name":"_vaultBufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27808,"src":"4347:26:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25305,"name":"vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25285,"src":"4376:10:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":25306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4387:23:67","memberName":"getBufferPeriodDuration","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"4376:34:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":25307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4376:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4347:65:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":25309,"nodeType":"ExpressionStatement","src":"4347:65:67"},{"expression":{"id":25314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25310,"name":"_vaultBufferPeriodEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27806,"src":"4422:25:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25311,"name":"vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25285,"src":"4450:10:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":25312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4461:22:67","memberName":"getBufferPeriodEndTime","nodeType":"MemberAccess","referencedDeclaration":2929,"src":"4450:33:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":25313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4450:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4422:63:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":25315,"nodeType":"ExpressionStatement","src":"4422:63:67"},{"expression":{"id":25318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25316,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25259,"src":"4496:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25317,"name":"mainVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25282,"src":"4505:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"src":"4496:18:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":25319,"nodeType":"ExpressionStatement","src":"4496:18:67"},{"expression":{"id":25322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25320,"name":"_vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25262,"src":"4524:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25321,"name":"vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25285,"src":"4538:10:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"src":"4524:24:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":25323,"nodeType":"ExpressionStatement","src":"4524:24:67"}]},"id":25325,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":25286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25282,"mutability":"mutable","name":"mainVault","nameLocation":"4125:9:67","nodeType":"VariableDeclaration","scope":25325,"src":"4118:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":25281,"nodeType":"UserDefinedTypeName","pathNode":{"id":25280,"name":"IVault","nameLocations":["4118:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"4118:6:67"},"referencedDeclaration":2893,"src":"4118:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":25285,"mutability":"mutable","name":"vaultAdmin","nameLocation":"4148:10:67","nodeType":"VariableDeclaration","scope":25325,"src":"4136:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"},"typeName":{"id":25284,"nodeType":"UserDefinedTypeName","pathNode":{"id":25283,"name":"IVaultAdmin","nameLocations":["4136:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":3183,"src":"4136:11:67"},"referencedDeclaration":3183,"src":"4136:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"visibility":"internal"}],"src":"4117:42:67"},"returnParameters":{"id":25287,"nodeType":"ParameterList","parameters":[],"src":"4160:0:67"},"scope":27639,"src":"4106:449:67","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3812],"body":{"id":25334,"nodeType":"Block","src":"4871:30:67","statements":[{"expression":{"id":25332,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25259,"src":"4888:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"functionReturnParameters":25331,"id":25333,"nodeType":"Return","src":"4881:13:67"}]},"documentation":{"id":25326,"nodeType":"StructuredDocumentation","src":"4787:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"fbfa77cf","id":25335,"implemented":true,"kind":"function","modifiers":[],"name":"vault","nameLocation":"4832:5:67","nodeType":"FunctionDefinition","parameters":{"id":25327,"nodeType":"ParameterList","parameters":[],"src":"4837:2:67"},"returnParameters":{"id":25331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25335,"src":"4863:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":25329,"nodeType":"UserDefinedTypeName","pathNode":{"id":25328,"name":"IVault","nameLocations":["4863:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"4863:6:67"},"referencedDeclaration":2893,"src":"4863:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"4862:8:67"},"scope":27639,"src":"4823:78:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3818],"body":{"id":25344,"nodeType":"Block","src":"5000:41:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":25341,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[27591],"referencedDeclaration":27591,"src":"5017:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":25342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5017:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":25340,"id":25343,"nodeType":"Return","src":"5010:24:67"}]},"documentation":{"id":25336,"nodeType":"StructuredDocumentation","src":"4907:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"1ba0ae45","id":25345,"implemented":true,"kind":"function","modifiers":[],"name":"getVaultAdmin","nameLocation":"4952:13:67","nodeType":"FunctionDefinition","parameters":{"id":25337,"nodeType":"ParameterList","parameters":[],"src":"4965:2:67"},"returnParameters":{"id":25340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25345,"src":"4991:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25338,"name":"address","nodeType":"ElementaryTypeName","src":"4991:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4990:9:67"},"scope":27639,"src":"4943:98:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3824],"body":{"id":25358,"nodeType":"Block","src":"5378:45:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":25353,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"5395:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":25354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5395:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":25355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5409:5:67","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9833,"src":"5395:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlotType_$9734_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType) view returns (bool)"}},"id":25356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5395:21:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":25352,"id":25357,"nodeType":"Return","src":"5388:28:67"}]},"documentation":{"id":25346,"nodeType":"StructuredDocumentation","src":"5269:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"8380edb7","id":25359,"implemented":true,"kind":"function","modifiers":[{"id":25349,"kind":"modifierInvocation","modifierName":{"id":25348,"name":"onlyVaultDelegateCall","nameLocations":["5341:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"5341:21:67"},"nodeType":"ModifierInvocation","src":"5341:21:67"}],"name":"isUnlocked","nameLocation":"5314:10:67","nodeType":"FunctionDefinition","parameters":{"id":25347,"nodeType":"ParameterList","parameters":[],"src":"5324:2:67"},"returnParameters":{"id":25352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25359,"src":"5372:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25350,"name":"bool","nodeType":"ElementaryTypeName","src":"5372:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5371:6:67"},"scope":27639,"src":"5305:118:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3830],"body":{"id":25372,"nodeType":"Block","src":"5551:52:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":25367,"name":"_nonZeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27870,"src":"5568:18:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":25368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5568:20:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":25369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5589:5:67","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"5568:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":25370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5568:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":25366,"id":25371,"nodeType":"Return","src":"5561:35:67"}]},"documentation":{"id":25360,"nodeType":"StructuredDocumentation","src":"5429:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"db817187","id":25373,"implemented":true,"kind":"function","modifiers":[{"id":25363,"kind":"modifierInvocation","modifierName":{"id":25362,"name":"onlyVaultDelegateCall","nameLocations":["5511:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"5511:21:67"},"nodeType":"ModifierInvocation","src":"5511:21:67"}],"name":"getNonzeroDeltaCount","nameLocation":"5474:20:67","nodeType":"FunctionDefinition","parameters":{"id":25361,"nodeType":"ParameterList","parameters":[],"src":"5494:2:67"},"returnParameters":{"id":25366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25365,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25373,"src":"5542:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25364,"name":"uint256","nodeType":"ElementaryTypeName","src":"5542:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5541:9:67"},"scope":27639,"src":"5465:138:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3839],"body":{"id":25390,"nodeType":"Block","src":"5735:50:67","statements":[{"expression":{"arguments":[{"id":25387,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25377,"src":"5772:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":25384,"name":"_tokenDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27882,"src":"5752:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function () view returns (TokenDeltaMappingSlotType)"}},"id":25385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"id":25386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5767:4:67","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6564,"src":"5752:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$_t_contract$_IERC20_$39274_$returns$_t_int256_$attached_to$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function (TokenDeltaMappingSlotType,contract IERC20) view returns (int256)"}},"id":25388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":25383,"id":25389,"nodeType":"Return","src":"5745:33:67"}]},"documentation":{"id":25374,"nodeType":"StructuredDocumentation","src":"5609:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"9e825ff5","id":25391,"implemented":true,"kind":"function","modifiers":[{"id":25380,"kind":"modifierInvocation","modifierName":{"id":25379,"name":"onlyVaultDelegateCall","nameLocations":["5696:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"5696:21:67"},"nodeType":"ModifierInvocation","src":"5696:21:67"}],"name":"getTokenDelta","nameLocation":"5654:13:67","nodeType":"FunctionDefinition","parameters":{"id":25378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25377,"mutability":"mutable","name":"token","nameLocation":"5675:5:67","nodeType":"VariableDeclaration","scope":25391,"src":"5668:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":25376,"nodeType":"UserDefinedTypeName","pathNode":{"id":25375,"name":"IERC20","nameLocations":["5668:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5668:6:67"},"referencedDeclaration":39274,"src":"5668:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5667:14:67"},"returnParameters":{"id":25383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25391,"src":"5727:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":25381,"name":"int256","nodeType":"ElementaryTypeName","src":"5727:6:67","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5726:8:67"},"scope":27639,"src":"5645:140:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3848],"body":{"id":25406,"nodeType":"Block","src":"5918:42:67","statements":[{"expression":{"baseExpression":{"id":25402,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"5935:11:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":25404,"indexExpression":{"id":25403,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25395,"src":"5947:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5935:18:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":25401,"id":25405,"nodeType":"Return","src":"5928:25:67"}]},"documentation":{"id":25392,"nodeType":"StructuredDocumentation","src":"5791:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"96787092","id":25407,"implemented":true,"kind":"function","modifiers":[{"id":25398,"kind":"modifierInvocation","modifierName":{"id":25397,"name":"onlyVaultDelegateCall","nameLocations":["5878:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"5878:21:67"},"nodeType":"ModifierInvocation","src":"5878:21:67"}],"name":"getReservesOf","nameLocation":"5836:13:67","nodeType":"FunctionDefinition","parameters":{"id":25396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25395,"mutability":"mutable","name":"token","nameLocation":"5857:5:67","nodeType":"VariableDeclaration","scope":25407,"src":"5850:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":25394,"nodeType":"UserDefinedTypeName","pathNode":{"id":25393,"name":"IERC20","nameLocations":["5850:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5850:6:67"},"referencedDeclaration":39274,"src":"5850:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5849:14:67"},"returnParameters":{"id":25401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25400,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25407,"src":"5909:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25399,"name":"uint256","nodeType":"ElementaryTypeName","src":"5909:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5908:9:67"},"scope":27639,"src":"5827:133:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3856],"body":{"id":25427,"nodeType":"Block","src":"6102:82:67","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":25420,"name":"_sessionIdSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27905,"src":"6146:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":25421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6146:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":25422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6163:5:67","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"6146:22:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":25423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6146:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25424,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25410,"src":"6172:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":25417,"name":"_addLiquidityCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27894,"src":"6119:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function () view returns (UintToAddressToBooleanMappingSlot)"}},"id":25418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6119:21:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"id":25419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6141:4:67","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6669,"src":"6119:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$_t_uint256_$_t_address_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function (UintToAddressToBooleanMappingSlot,uint256,address) view returns (bool)"}},"id":25425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6119:58:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":25416,"id":25426,"nodeType":"Return","src":"6112:65:67"}]},"documentation":{"id":25408,"nodeType":"StructuredDocumentation","src":"5966:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"ace9b89b","id":25428,"implemented":true,"kind":"function","modifiers":[{"id":25413,"kind":"modifierInvocation","modifierName":{"id":25412,"name":"onlyVaultDelegateCall","nameLocations":["6065:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"6065:21:67"},"nodeType":"ModifierInvocation","src":"6065:21:67"}],"name":"getAddLiquidityCalledFlag","nameLocation":"6011:25:67","nodeType":"FunctionDefinition","parameters":{"id":25411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25410,"mutability":"mutable","name":"pool","nameLocation":"6045:4:67","nodeType":"VariableDeclaration","scope":25428,"src":"6037:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25409,"name":"address","nodeType":"ElementaryTypeName","src":"6037:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6036:14:67"},"returnParameters":{"id":25416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":25428,"src":"6096:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25414,"name":"bool","nodeType":"ElementaryTypeName","src":"6096:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6095:6:67"},"scope":27639,"src":"6002:182:67","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"VaultExtension.PoolRegistrationParams","id":25447,"members":[{"constant":false,"id":25432,"mutability":"mutable","name":"tokenConfig","nameLocation":"6469:11:67","nodeType":"VariableDeclaration","scope":25447,"src":"6455:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":25430,"nodeType":"UserDefinedTypeName","pathNode":{"id":25429,"name":"TokenConfig","nameLocations":["6455:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"6455:11:67"},"referencedDeclaration":4476,"src":"6455:11:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":25431,"nodeType":"ArrayTypeName","src":"6455:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":25434,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"6498:17:67","nodeType":"VariableDeclaration","scope":25447,"src":"6490:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25433,"name":"uint256","nodeType":"ElementaryTypeName","src":"6490:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25436,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"6532:18:67","nodeType":"VariableDeclaration","scope":25447,"src":"6525:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":25435,"name":"uint32","nodeType":"ElementaryTypeName","src":"6525:6:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":25438,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"6565:17:67","nodeType":"VariableDeclaration","scope":25447,"src":"6560:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25437,"name":"bool","nodeType":"ElementaryTypeName","src":"6560:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":25441,"mutability":"mutable","name":"roleAccounts","nameLocation":"6609:12:67","nodeType":"VariableDeclaration","scope":25447,"src":"6592:29:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":25440,"nodeType":"UserDefinedTypeName","pathNode":{"id":25439,"name":"PoolRoleAccounts","nameLocations":["6592:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"6592:16:67"},"referencedDeclaration":4459,"src":"6592:16:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":25443,"mutability":"mutable","name":"poolHooksContract","nameLocation":"6639:17:67","nodeType":"VariableDeclaration","scope":25447,"src":"6631:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25442,"name":"address","nodeType":"ElementaryTypeName","src":"6631:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25446,"mutability":"mutable","name":"liquidityManagement","nameLocation":"6686:19:67","nodeType":"VariableDeclaration","scope":25447,"src":"6666:39:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":25445,"nodeType":"UserDefinedTypeName","pathNode":{"id":25444,"name":"LiquidityManagement","nameLocations":["6666:19:67"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"6666:19:67"},"referencedDeclaration":4362,"src":"6666:19:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"name":"PoolRegistrationParams","nameLocation":"6422:22:67","nodeType":"StructDefinition","scope":27639,"src":"6415:297:67","visibility":"public"},{"baseFunctions":[3880],"body":{"id":25490,"nodeType":"Block","src":"7152:472:67","statements":[{"expression":{"arguments":[{"id":25478,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25450,"src":"7189:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":25480,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25454,"src":"7261:11:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":25481,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25456,"src":"7309:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":25482,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25458,"src":"7364:18:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":25483,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25460,"src":"7419:17:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":25484,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25463,"src":"7468:12:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts calldata"}},{"id":25485,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25465,"src":"7517:17:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25486,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25468,"src":"7573:19:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}],"id":25479,"name":"PoolRegistrationParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25447,"src":"7207:22:67","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolRegistrationParams_$25447_storage_ptr_$","typeString":"type(struct VaultExtension.PoolRegistrationParams storage pointer)"}},"id":25487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7248:11:67","7290:17:67","7344:18:67","7400:17:67","7454:12:67","7498:17:67","7552:19:67"],"names":["tokenConfig","swapFeePercentage","pauseWindowEndTime","protocolFeeExempt","roleAccounts","poolHooksContract","liquidityManagement"],"nodeType":"FunctionCall","src":"7207:400:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}],"id":25477,"name":"_registerPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26002,"src":"7162:13:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_PoolRegistrationParams_$25447_memory_ptr_$returns$__$","typeString":"function (address,struct VaultExtension.PoolRegistrationParams memory)"}},"id":25488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7162:455:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25489,"nodeType":"ExpressionStatement","src":"7162:455:67"}]},"documentation":{"id":25448,"nodeType":"StructuredDocumentation","src":"6718:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"eeec802f","id":25491,"implemented":true,"kind":"function","modifiers":[{"id":25471,"kind":"modifierInvocation","modifierName":{"id":25470,"name":"onlyVaultDelegateCall","nameLocations":["7098:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"7098:21:67"},"nodeType":"ModifierInvocation","src":"7098:21:67"},{"id":25473,"kind":"modifierInvocation","modifierName":{"id":25472,"name":"nonReentrant","nameLocations":["7120:12:67"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"7120:12:67"},"nodeType":"ModifierInvocation","src":"7120:12:67"},{"id":25475,"kind":"modifierInvocation","modifierName":{"id":25474,"name":"whenVaultNotPaused","nameLocations":["7133:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24511,"src":"7133:18:67"},"nodeType":"ModifierInvocation","src":"7133:18:67"}],"name":"registerPool","nameLocation":"6763:12:67","nodeType":"FunctionDefinition","parameters":{"id":25469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25450,"mutability":"mutable","name":"pool","nameLocation":"6793:4:67","nodeType":"VariableDeclaration","scope":25491,"src":"6785:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25449,"name":"address","nodeType":"ElementaryTypeName","src":"6785:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25454,"mutability":"mutable","name":"tokenConfig","nameLocation":"6828:11:67","nodeType":"VariableDeclaration","scope":25491,"src":"6807:32:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":25452,"nodeType":"UserDefinedTypeName","pathNode":{"id":25451,"name":"TokenConfig","nameLocations":["6807:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"6807:11:67"},"referencedDeclaration":4476,"src":"6807:11:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":25453,"nodeType":"ArrayTypeName","src":"6807:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":25456,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"6857:17:67","nodeType":"VariableDeclaration","scope":25491,"src":"6849:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25455,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25458,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"6891:18:67","nodeType":"VariableDeclaration","scope":25491,"src":"6884:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":25457,"name":"uint32","nodeType":"ElementaryTypeName","src":"6884:6:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":25460,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"6924:17:67","nodeType":"VariableDeclaration","scope":25491,"src":"6919:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25459,"name":"bool","nodeType":"ElementaryTypeName","src":"6919:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":25463,"mutability":"mutable","name":"roleAccounts","nameLocation":"6977:12:67","nodeType":"VariableDeclaration","scope":25491,"src":"6951:38:67","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":25462,"nodeType":"UserDefinedTypeName","pathNode":{"id":25461,"name":"PoolRoleAccounts","nameLocations":["6951:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"6951:16:67"},"referencedDeclaration":4459,"src":"6951:16:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":25465,"mutability":"mutable","name":"poolHooksContract","nameLocation":"7007:17:67","nodeType":"VariableDeclaration","scope":25491,"src":"6999:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25464,"name":"address","nodeType":"ElementaryTypeName","src":"6999:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25468,"mutability":"mutable","name":"liquidityManagement","nameLocation":"7063:19:67","nodeType":"VariableDeclaration","scope":25491,"src":"7034:48:67","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":25467,"nodeType":"UserDefinedTypeName","pathNode":{"id":25466,"name":"LiquidityManagement","nameLocations":["7034:19:67"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"7034:19:67"},"referencedDeclaration":4362,"src":"7034:19:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"6775:313:67"},"returnParameters":{"id":25476,"nodeType":"ParameterList","parameters":[],"src":"7152:0:67"},"scope":27639,"src":"6754:870:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":26001,"nodeType":"Block","src":"8035:7779:67","statements":[{"condition":{"arguments":[{"id":25501,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"8120:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25500,"name":"_isPoolRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24706,"src":"8102:17:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":25502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8102:23:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25508,"nodeType":"IfStatement","src":"8098:88:67","trueBody":{"id":25507,"nodeType":"Block","src":"8127:59:67","statements":[{"errorCall":{"arguments":[{"id":25504,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"8170:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25503,"name":"PoolAlreadyRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3195,"src":"8148:21:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":25505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8148:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25506,"nodeType":"RevertStatement","src":"8141:34:67"}]}},{"assignments":[25510],"declarations":[{"constant":false,"id":25510,"mutability":"mutable","name":"numTokens","nameLocation":"8204:9:67","nodeType":"VariableDeclaration","scope":26001,"src":"8196:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25509,"name":"uint256","nodeType":"ElementaryTypeName","src":"8196:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25514,"initialValue":{"expression":{"expression":{"id":25511,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"8216:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8223:11:67","memberName":"tokenConfig","nodeType":"MemberAccess","referencedDeclaration":25432,"src":"8216:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":25513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8235:6:67","memberName":"length","nodeType":"MemberAccess","src":"8216:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8196:45:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25515,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25510,"src":"8255:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":25516,"name":"_MIN_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27717,"src":"8267:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8255:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25522,"nodeType":"IfStatement","src":"8251:72:67","trueBody":{"id":25521,"nodeType":"Block","src":"8280:43:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25518,"name":"MinTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3228,"src":"8301:9:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8301:11:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25520,"nodeType":"RevertStatement","src":"8294:18:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25523,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25510,"src":"8336:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":25524,"name":"_MAX_TOKENS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27720,"src":"8348:11:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8336:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25530,"nodeType":"IfStatement","src":"8332:72:67","trueBody":{"id":25529,"nodeType":"Block","src":"8361:43:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25526,"name":"MaxTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3231,"src":"8382:9:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8382:11:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25528,"nodeType":"RevertStatement","src":"8375:18:67"}]}},{"assignments":[25535],"declarations":[{"constant":false,"id":25535,"mutability":"mutable","name":"tokenDecimalDiffs","nameLocation":"8429:17:67","nodeType":"VariableDeclaration","scope":26001,"src":"8414:32:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":25533,"name":"uint8","nodeType":"ElementaryTypeName","src":"8414:5:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":25534,"nodeType":"ArrayTypeName","src":"8414:7:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"id":25541,"initialValue":{"arguments":[{"id":25539,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25510,"src":"8461:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8449:11:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint8[] memory)"},"typeName":{"baseType":{"id":25536,"name":"uint8","nodeType":"ElementaryTypeName","src":"8453:5:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":25537,"nodeType":"ArrayTypeName","src":"8453:7:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}}},"id":25540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8449:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8414:57:67"},{"assignments":[25544],"declarations":[{"constant":false,"id":25544,"mutability":"mutable","name":"previousToken","nameLocation":"8488:13:67","nodeType":"VariableDeclaration","scope":26001,"src":"8481:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":25543,"nodeType":"UserDefinedTypeName","pathNode":{"id":25542,"name":"IERC20","nameLocations":["8481:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8481:6:67"},"referencedDeclaration":39274,"src":"8481:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":25545,"nodeType":"VariableDeclarationStatement","src":"8481:20:67"},{"body":{"id":25712,"nodeType":"Block","src":"8552:1998:67","statements":[{"assignments":[25558],"declarations":[{"constant":false,"id":25558,"mutability":"mutable","name":"tokenData","nameLocation":"8585:9:67","nodeType":"VariableDeclaration","scope":25712,"src":"8566:28:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig"},"typeName":{"id":25557,"nodeType":"UserDefinedTypeName","pathNode":{"id":25556,"name":"TokenConfig","nameLocations":["8566:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"8566:11:67"},"referencedDeclaration":4476,"src":"8566:11:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"visibility":"internal"}],"id":25563,"initialValue":{"baseExpression":{"expression":{"id":25559,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"8597:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8604:11:67","memberName":"tokenConfig","nodeType":"MemberAccess","referencedDeclaration":25432,"src":"8597:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":25562,"indexExpression":{"id":25561,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25547,"src":"8616:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8597:21:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"8566:52:67"},{"assignments":[25566],"declarations":[{"constant":false,"id":25566,"mutability":"mutable","name":"token","nameLocation":"8639:5:67","nodeType":"VariableDeclaration","scope":25712,"src":"8632:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":25565,"nodeType":"UserDefinedTypeName","pathNode":{"id":25564,"name":"IERC20","nameLocations":["8632:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8632:6:67"},"referencedDeclaration":39274,"src":"8632:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":25569,"initialValue":{"expression":{"id":25567,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"8647:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8657:5:67","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"8647:15:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"8632:30:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":25572,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"8744:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":25571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8736:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25570,"name":"address","nodeType":"ElementaryTypeName","src":"8736:7:67","typeDescriptions":{}}},"id":25573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8736:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":25576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8762:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":25575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8754:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25574,"name":"address","nodeType":"ElementaryTypeName","src":"8754:7:67","typeDescriptions":{}}},"id":25577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8754:10:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8736:28:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":25581,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"8776:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":25580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8768:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25579,"name":"address","nodeType":"ElementaryTypeName","src":"8768:7:67","typeDescriptions":{}}},"id":25582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8768:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":25583,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"8786:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8768:22:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8736:54:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25590,"nodeType":"IfStatement","src":"8732:114:67","trueBody":{"id":25589,"nodeType":"Block","src":"8792:54:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25586,"name":"InvalidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"8817:12:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8817:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25588,"nodeType":"RevertStatement","src":"8810:21:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":25593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25591,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"8969:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":25592,"name":"previousToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25544,"src":"8977:13:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"8969:21:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25600,"nodeType":"IfStatement","src":"8965:97:67","trueBody":{"id":25599,"nodeType":"Block","src":"8992:70:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":25594,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"9017:12:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":25596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9030:15:67","memberName":"TokensNotSorted","nodeType":"MemberAccess","referencedDeclaration":5595,"src":"9017:28:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9017:30:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25598,"nodeType":"RevertStatement","src":"9010:37:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":25603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25601,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"9080:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":25602,"name":"previousToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25544,"src":"9089:13:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"9080:22:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25609,"nodeType":"IfStatement","src":"9076:97:67","trueBody":{"id":25608,"nodeType":"Block","src":"9104:69:67","statements":[{"errorCall":{"arguments":[{"id":25605,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"9152:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":25604,"name":"TokenAlreadyRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3225,"src":"9129:22:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$returns$_t_error_$","typeString":"function (contract IERC20) pure returns (error)"}},"id":25606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9129:29:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25607,"nodeType":"RevertStatement","src":"9122:36:67"}]}},{"assignments":[25611],"declarations":[{"constant":false,"id":25611,"mutability":"mutable","name":"hasRateProvider","nameLocation":"9192:15:67","nodeType":"VariableDeclaration","scope":25712,"src":"9187:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":25610,"name":"bool","nodeType":"ElementaryTypeName","src":"9187:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":25621,"initialValue":{"commonType":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"},"id":25620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25612,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"9210:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25613,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9220:12:67","memberName":"rateProvider","nodeType":"MemberAccess","referencedDeclaration":4473,"src":"9210:22:67","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":25617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9258:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":25616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9250:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25615,"name":"address","nodeType":"ElementaryTypeName","src":"9250:7:67","typeDescriptions":{}}},"id":25618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9250:10:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25614,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"9236:13:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProvider_$150_$","typeString":"type(contract IRateProvider)"}},"id":25619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9236:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"src":"9210:51:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9187:74:67"},{"expression":{"id":25635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":25622,"name":"_poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27789,"src":"9276:14:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo storage ref))"}},"id":25625,"indexExpression":{"id":25623,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"9291:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9276:20:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},"id":25626,"indexExpression":{"id":25624,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"9297:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9276:27:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25628,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"9345:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9355:9:67","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"9345:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},{"expression":{"id":25630,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"9396:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9406:12:67","memberName":"rateProvider","nodeType":"MemberAccess","referencedDeclaration":4473,"src":"9396:22:67","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},{"expression":{"id":25632,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"9451:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9461:13:67","memberName":"paysYieldFees","nodeType":"MemberAccess","referencedDeclaration":4475,"src":"9451:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":25627,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"9306:9:67","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TokenInfo_$4486_storage_ptr_$","typeString":"type(struct TokenInfo storage pointer)"}},"id":25634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9334:9:67","9382:12:67","9436:13:67"],"names":["tokenType","rateProvider","paysYieldFees"],"nodeType":"FunctionCall","src":"9306:183:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"src":"9276:213:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"id":25636,"nodeType":"ExpressionStatement","src":"9276:213:67"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"id":25641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25637,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"9508:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25638,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9518:9:67","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"9508:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":25639,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"9531:9:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":25640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9541:8:67","memberName":"STANDARD","nodeType":"MemberAccess","referencedDeclaration":4461,"src":"9531:18:67","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"9508:41:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"id":25656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25652,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"9716:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9726:9:67","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"9716:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":25654,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"9739:9:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":25655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9749:9:67","memberName":"WITH_RATE","nodeType":"MemberAccess","referencedDeclaration":4462,"src":"9739:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"9716:42:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":25669,"nodeType":"Block","src":"9903:58:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25666,"name":"InvalidTokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"9928:16:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9928:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25668,"nodeType":"RevertStatement","src":"9921:25:67"}]},"id":25670,"nodeType":"IfStatement","src":"9712:249:67","trueBody":{"id":25665,"nodeType":"Block","src":"9760:137:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25657,"name":"hasRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25611,"src":"9782:15:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":25658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9801:5:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"9782:24:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25664,"nodeType":"IfStatement","src":"9778:105:67","trueBody":{"id":25663,"nodeType":"Block","src":"9808:75:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25660,"name":"InvalidTokenConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"9837:25:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9837:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25662,"nodeType":"RevertStatement","src":"9830:34:67"}]}}]}},"id":25671,"nodeType":"IfStatement","src":"9504:457:67","trueBody":{"id":25651,"nodeType":"Block","src":"9551:155:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25642,"name":"hasRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25611,"src":"9573:15:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"expression":{"id":25643,"name":"tokenData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25558,"src":"9592:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":25644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9602:13:67","memberName":"paysYieldFees","nodeType":"MemberAccess","referencedDeclaration":4475,"src":"9592:23:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9573:42:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25650,"nodeType":"IfStatement","src":"9569:123:67","trueBody":{"id":25649,"nodeType":"Block","src":"9617:75:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25646,"name":"InvalidTokenConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"9646:25:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9646:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25648,"nodeType":"RevertStatement","src":"9639:34:67"}]}}]}},{"assignments":[25673],"declarations":[{"constant":false,"id":25673,"mutability":"mutable","name":"tokenDecimals","nameLocation":"10083:13:67","nodeType":"VariableDeclaration","scope":25712,"src":"10077:19:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":25672,"name":"uint8","nodeType":"ElementaryTypeName","src":"10077:5:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":25682,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":25677,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"10122:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":25676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10114:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25675,"name":"address","nodeType":"ElementaryTypeName","src":"10114:7:67","typeDescriptions":{}}},"id":25678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10114:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25674,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39300,"src":"10099:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$39300_$","typeString":"type(contract IERC20Metadata)"}},"id":25679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10099:30:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$39300","typeString":"contract IERC20Metadata"}},"id":25680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10130:8:67","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":39299,"src":"10099:39:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":25681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10099:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"10077:63:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":25685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25683,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25673,"src":"10159:13:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":25684,"name":"_MAX_TOKEN_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27723,"src":"10175:19:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10159:35:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":25699,"nodeType":"Block","src":"10264:141:67","statements":[{"id":25698,"nodeType":"UncheckedBlock","src":"10282:109:67","statements":[{"expression":{"id":25696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":25690,"name":"tokenDecimalDiffs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25535,"src":"10314:17:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":25692,"indexExpression":{"id":25691,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25547,"src":"10332:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10314:20:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":25695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25693,"name":"_MAX_TOKEN_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27723,"src":"10337:19:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":25694,"name":"tokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25673,"src":"10359:13:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10337:35:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10314:58:67","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":25697,"nodeType":"ExpressionStatement","src":"10314:58:67"}]}]},"id":25700,"nodeType":"IfStatement","src":"10155:250:67","trueBody":{"id":25689,"nodeType":"Block","src":"10196:62:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":25686,"name":"InvalidTokenDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"10221:20:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":25687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10221:22:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25688,"nodeType":"RevertStatement","src":"10214:29:67"}]}},{"expression":{"arguments":[{"id":25705,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"10498:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"expression":{"baseExpression":{"id":25701,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"10475:11:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":25703,"indexExpression":{"id":25702,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"10487:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10475:17:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"id":25704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10493:4:67","memberName":"push","nodeType":"MemberAccess","src":"10475:22:67","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr_$_t_contract$_IERC20_$39274_$returns$__$attached_to$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr_$","typeString":"function (contract IERC20[] storage pointer,contract IERC20)"}},"id":25706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10475:29:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25707,"nodeType":"ExpressionStatement","src":"10475:29:67"},{"expression":{"id":25710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25708,"name":"previousToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25544,"src":"10518:13:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25709,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25566,"src":"10534:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"10518:21:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":25711,"nodeType":"ExpressionStatement","src":"10518:21:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":25550,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25547,"src":"8532:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":25551,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25510,"src":"8536:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8532:13:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25713,"initializationExpression":{"assignments":[25547],"declarations":[{"constant":false,"id":25547,"mutability":"mutable","name":"i","nameLocation":"8525:1:67","nodeType":"VariableDeclaration","scope":25713,"src":"8517:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25546,"name":"uint256","nodeType":"ElementaryTypeName","src":"8517:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25549,"initialValue":{"hexValue":"30","id":25548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8529:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8517:13:67"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":25554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8547:3:67","subExpression":{"id":25553,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25547,"src":"8549:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":25555,"nodeType":"ExpressionStatement","src":"8547:3:67"},"nodeType":"ForStatement","src":"8512:2038:67"},{"expression":{"id":25719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":25714,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"10619:17:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":25716,"indexExpression":{"id":25715,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"10637:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10619:23:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":25717,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"10645:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10652:12:67","memberName":"roleAccounts","nodeType":"MemberAccess","referencedDeclaration":25441,"src":"10645:19:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},"src":"10619:45:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"id":25720,"nodeType":"ExpressionStatement","src":"10619:45:67"},{"assignments":[25723],"declarations":[{"constant":false,"id":25723,"mutability":"mutable","name":"poolConfigBits","nameLocation":"10690:14:67","nodeType":"VariableDeclaration","scope":26001,"src":"10675:29:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":25722,"nodeType":"UserDefinedTypeName","pathNode":{"id":25721,"name":"PoolConfigBits","nameLocations":["10675:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"10675:14:67"},"referencedDeclaration":4364,"src":"10675:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":25724,"nodeType":"VariableDeclarationStatement","src":"10675:29:67"},{"id":25971,"nodeType":"Block","src":"10784:4412:67","statements":[{"assignments":[25726,25728],"declarations":[{"constant":false,"id":25726,"mutability":"mutable","name":"aggregateSwapFeePercentage","nameLocation":"10903:26:67","nodeType":"VariableDeclaration","scope":25971,"src":"10895:34:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25725,"name":"uint256","nodeType":"ElementaryTypeName","src":"10895:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":25728,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"10939:27:67","nodeType":"VariableDeclaration","scope":25971,"src":"10931:35:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25727,"name":"uint256","nodeType":"ElementaryTypeName","src":"10931:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":25738,"initialValue":{"arguments":[{"id":25731,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"11023:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":25732,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"11029:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11036:12:67","memberName":"roleAccounts","nodeType":"MemberAccess","referencedDeclaration":25441,"src":"11029:19:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},"id":25734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11049:11:67","memberName":"poolCreator","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"11029:31:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25735,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"11062:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11069:17:67","memberName":"protocolFeeExempt","nodeType":"MemberAccess","referencedDeclaration":25438,"src":"11062:24:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25729,"name":"_protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27826,"src":"10970:22:67","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"id":25730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11010:12:67","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":2152,"src":"10970:52:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,bool) external returns (uint256,uint256)"}},"id":25737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10970:117:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10894:193:67"},{"expression":{"id":25744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25739,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11102:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"74727565","id":25742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11152:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25740,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11119:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11134:17:67","memberName":"setPoolRegistered","nodeType":"MemberAccess","referencedDeclaration":29201,"src":"11119:32:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11119:38:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11102:55:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25745,"nodeType":"ExpressionStatement","src":"11102:55:67"},{"expression":{"id":25753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25746,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11171:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":25749,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"11250:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11257:19:67","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":25446,"src":"11250:26:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":25751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11277:26:67","memberName":"disableUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":4355,"src":"11250:53:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25747,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11188:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11203:29:67","memberName":"setDisableUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":29393,"src":"11188:44:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11188:129:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11171:146:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25754,"nodeType":"ExpressionStatement","src":"11171:146:67"},{"expression":{"id":25762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25755,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11331:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":25758,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"11385:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11392:19:67","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":25446,"src":"11385:26:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":25760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11412:24:67","memberName":"enableAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4357,"src":"11385:51:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25756,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11348:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11363:21:67","memberName":"setAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29455,"src":"11348:36:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11348:89:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11331:106:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25763,"nodeType":"ExpressionStatement","src":"11331:106:67"},{"expression":{"id":25771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25764,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11451:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":25767,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"11525:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11532:19:67","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":25446,"src":"11525:26:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":25769,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11552:27:67","memberName":"enableRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4359,"src":"11525:54:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25765,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11468:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11483:24:67","memberName":"setRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29517,"src":"11468:39:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11468:125:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11451:142:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25772,"nodeType":"ExpressionStatement","src":"11451:142:67"},{"expression":{"id":25780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25773,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11607:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":25776,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"11651:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25777,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11658:19:67","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":25446,"src":"11651:26:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":25778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11678:14:67","memberName":"enableDonation","nodeType":"MemberAccess","referencedDeclaration":4361,"src":"11651:41:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25774,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11624:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11639:11:67","memberName":"setDonation","nodeType":"MemberAccess","referencedDeclaration":29560,"src":"11624:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11624:69:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11607:86:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25781,"nodeType":"ExpressionStatement","src":"11607:86:67"},{"expression":{"id":25790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25782,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11707:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":25787,"name":"tokenDecimalDiffs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25535,"src":"11794:17:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}],"expression":{"id":25785,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"11760:13:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigLib_$29980_$","typeString":"type(library PoolConfigLib)"}},"id":25786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11774:19:67","memberName":"toTokenDecimalDiffs","nodeType":"MemberAccess","referencedDeclaration":29979,"src":"11760:33:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint8_$dyn_memory_ptr_$returns$_t_uint40_$","typeString":"function (uint8[] memory) pure returns (uint40)"}},"id":25788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11760:52:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"expression":{"id":25783,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11724:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11739:20:67","memberName":"setTokenDecimalDiffs","nodeType":"MemberAccess","referencedDeclaration":29881,"src":"11724:35:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint40_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint40) pure returns (PoolConfigBits)"}},"id":25789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11724:89:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11707:106:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25791,"nodeType":"ExpressionStatement","src":"11707:106:67"},{"expression":{"id":25798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25792,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11827:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25795,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"11881:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11888:18:67","memberName":"pauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":25436,"src":"11881:25:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":25793,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11844:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11859:21:67","memberName":"setPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":29931,"src":"11844:36:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint32) pure returns (PoolConfigBits)"}},"id":25797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11844:63:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11827:80:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25799,"nodeType":"ExpressionStatement","src":"11827:80:67"},{"expression":{"id":25805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25800,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11921:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":25803,"name":"aggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25726,"src":"11983:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":25801,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"11938:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11953:29:67","memberName":"setAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29701,"src":"11938:44:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":25804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11938:72:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"11921:89:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25806,"nodeType":"ExpressionStatement","src":"11921:89:67"},{"expression":{"id":25812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25807,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"12024:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":25810,"name":"aggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25728,"src":"12087:27:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":25808,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"12041:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12056:30:67","memberName":"setAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29762,"src":"12041:45:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":25811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12041:74:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"12024:91:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25813,"nodeType":"ExpressionStatement","src":"12024:91:67"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":25820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25814,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"12134:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12141:17:67","memberName":"poolHooksContract","nodeType":"MemberAccess","referencedDeclaration":25443,"src":"12134:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":25818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12170:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":25817,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12162:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":25816,"name":"address","nodeType":"ElementaryTypeName","src":"12162:7:67","typeDescriptions":{}}},"id":25819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12162:10:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12134:38:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25955,"nodeType":"IfStatement","src":"12130:2933:67","trueBody":{"id":25954,"nodeType":"Block","src":"12174:2889:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":25826,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12380:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12384:6:67","memberName":"sender","nodeType":"MemberAccess","src":"12380:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25828,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"12416:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25829,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"12446:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25830,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12453:11:67","memberName":"tokenConfig","nodeType":"MemberAccess","referencedDeclaration":25432,"src":"12446:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"expression":{"id":25831,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"12490:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25832,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12497:19:67","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":25446,"src":"12490:26:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"arguments":[{"expression":{"id":25822,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"12318:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25823,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12325:17:67","memberName":"poolHooksContract","nodeType":"MemberAccess","referencedDeclaration":25443,"src":"12318:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25821,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"12311:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1887_$","typeString":"type(contract IHooks)"}},"id":25824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12311:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":25825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12344:10:67","memberName":"onRegister","nodeType":"MemberAccess","referencedDeclaration":1714,"src":"12311:43:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,struct TokenConfig memory[] memory,struct LiquidityManagement memory) external returns (bool)"}},"id":25833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12311:227:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":25834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12542:5:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12311:236:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25845,"nodeType":"IfStatement","src":"12286:394:67","trueBody":{"id":25844,"nodeType":"Block","src":"12566:114:67","statements":[{"errorCall":{"arguments":[{"expression":{"id":25837,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"12618:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12625:17:67","memberName":"poolHooksContract","nodeType":"MemberAccess","referencedDeclaration":25443,"src":"12618:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25839,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"12644:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25840,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12650:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12654:6:67","memberName":"sender","nodeType":"MemberAccess","src":"12650:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":25836,"name":"HookRegistrationFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"12595:22:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address,address) pure returns (error)"}},"id":25842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12595:66:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25843,"nodeType":"RevertStatement","src":"12588:73:67"}]}},{"assignments":[25848],"declarations":[{"constant":false,"id":25848,"mutability":"mutable","name":"hookFlags","nameLocation":"12892:9:67","nodeType":"VariableDeclaration","scope":25954,"src":"12875:26:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags"},"typeName":{"id":25847,"nodeType":"UserDefinedTypeName","pathNode":{"id":25846,"name":"HookFlags","nameLocations":["12875:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"12875:9:67"},"referencedDeclaration":4409,"src":"12875:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage_ptr","typeString":"struct HookFlags"}},"visibility":"internal"}],"id":25855,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":25850,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"12911:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12918:17:67","memberName":"poolHooksContract","nodeType":"MemberAccess","referencedDeclaration":25443,"src":"12911:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25849,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"12904:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1887_$","typeString":"type(contract IHooks)"}},"id":25852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12904:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":25853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12937:12:67","memberName":"getHookFlags","nodeType":"MemberAccess","referencedDeclaration":1721,"src":"12904:45:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_struct$_HookFlags_$4409_memory_ptr_$","typeString":"function () view external returns (struct HookFlags memory)"}},"id":25854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12904:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"nodeType":"VariableDeclarationStatement","src":"12875:76:67"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":25856,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"13512:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13522:25:67","memberName":"enableHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":4390,"src":"13512:35:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":25862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":25858,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"13571:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13578:19:67","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":25446,"src":"13571:26:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":25860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13598:26:67","memberName":"disableUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":4355,"src":"13571:53:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":25861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13628:5:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"13571:62:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13512:121:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":25873,"nodeType":"IfStatement","src":"13487:279:67","trueBody":{"id":25872,"nodeType":"Block","src":"13652:114:67","statements":[{"errorCall":{"arguments":[{"expression":{"id":25865,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"13704:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13711:17:67","memberName":"poolHooksContract","nodeType":"MemberAccess","referencedDeclaration":25443,"src":"13704:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":25867,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"13730:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25868,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13736:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13740:6:67","memberName":"sender","nodeType":"MemberAccess","src":"13736:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":25864,"name":"HookRegistrationFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"13681:22:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address,address) pure returns (error)"}},"id":25870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13681:66:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":25871,"nodeType":"RevertStatement","src":"13674:73:67"}]}},{"expression":{"id":25880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25874,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"13784:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25877,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"13839:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13849:25:67","memberName":"enableHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":4390,"src":"13839:35:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25875,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"13801:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13816:22:67","memberName":"setHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":27985,"src":"13801:37:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13801:74:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"13784:91:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25881,"nodeType":"ExpressionStatement","src":"13784:91:67"},{"expression":{"id":25888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25882,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"13893:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25885,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"13955:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13965:26:67","memberName":"shouldCallBeforeInitialize","nodeType":"MemberAccess","referencedDeclaration":4392,"src":"13955:36:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25883,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"13910:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13925:29:67","memberName":"setShouldCallBeforeInitialize","nodeType":"MemberAccess","referencedDeclaration":28028,"src":"13910:44:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13910:82:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"13893:99:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25889,"nodeType":"ExpressionStatement","src":"13893:99:67"},{"expression":{"id":25896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25890,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14010:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25893,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14071:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14081:25:67","memberName":"shouldCallAfterInitialize","nodeType":"MemberAccess","referencedDeclaration":4394,"src":"14071:35:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25891,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14027:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14042:28:67","memberName":"setShouldCallAfterInitialize","nodeType":"MemberAccess","referencedDeclaration":28071,"src":"14027:43:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14027:80:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14010:97:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25897,"nodeType":"ExpressionStatement","src":"14010:97:67"},{"expression":{"id":25904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25898,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14125:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25901,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14213:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14223:31:67","memberName":"shouldCallComputeDynamicSwapFee","nodeType":"MemberAccess","referencedDeclaration":4396,"src":"14213:41:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25899,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14142:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14157:34:67","memberName":"setShouldCallComputeDynamicSwapFee","nodeType":"MemberAccess","referencedDeclaration":28114,"src":"14142:49:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14142:130:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14125:147:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25905,"nodeType":"ExpressionStatement","src":"14125:147:67"},{"expression":{"id":25912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25906,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14290:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25909,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14346:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14356:20:67","memberName":"shouldCallBeforeSwap","nodeType":"MemberAccess","referencedDeclaration":4398,"src":"14346:30:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25907,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14307:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14322:23:67","memberName":"setShouldCallBeforeSwap","nodeType":"MemberAccess","referencedDeclaration":28157,"src":"14307:38:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14307:70:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14290:87:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25913,"nodeType":"ExpressionStatement","src":"14290:87:67"},{"expression":{"id":25920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25914,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14395:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25917,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14450:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14460:19:67","memberName":"shouldCallAfterSwap","nodeType":"MemberAccess","referencedDeclaration":4400,"src":"14450:29:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25915,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14412:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14427:22:67","memberName":"setShouldCallAfterSwap","nodeType":"MemberAccess","referencedDeclaration":28200,"src":"14412:37:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14412:68:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14395:85:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25921,"nodeType":"ExpressionStatement","src":"14395:85:67"},{"expression":{"id":25928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25922,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14498:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25925,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14562:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14572:28:67","memberName":"shouldCallBeforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":4402,"src":"14562:38:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25923,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14515:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14530:31:67","memberName":"setShouldCallBeforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28243,"src":"14515:46:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14515:86:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14498:103:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25929,"nodeType":"ExpressionStatement","src":"14498:103:67"},{"expression":{"id":25936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25930,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14619:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25933,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14682:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25934,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14692:27:67","memberName":"shouldCallAfterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":4404,"src":"14682:37:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25931,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14636:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14651:30:67","memberName":"setShouldCallAfterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28286,"src":"14636:45:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14636:84:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14619:101:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25937,"nodeType":"ExpressionStatement","src":"14619:101:67"},{"expression":{"id":25944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25938,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14738:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25941,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14826:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14836:31:67","memberName":"shouldCallBeforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":4406,"src":"14826:41:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25939,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14755:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14770:34:67","memberName":"setShouldCallBeforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28329,"src":"14755:49:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14755:130:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14738:147:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25945,"nodeType":"ExpressionStatement","src":"14738:147:67"},{"expression":{"id":25952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":25946,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14903:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25949,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25848,"src":"14990:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"id":25950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15000:30:67","memberName":"shouldCallAfterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":4408,"src":"14990:40:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":25947,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"14920:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14935:33:67","memberName":"setShouldCallAfterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28372,"src":"14920:48:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":25951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14920:128:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"14903:145:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25953,"nodeType":"ExpressionStatement","src":"14903:145:67"}]}},{"expression":{"id":25960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":25956,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"15077:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":25958,"indexExpression":{"id":25957,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"15093:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15077:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":25959,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"15101:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"15077:38:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25961,"nodeType":"ExpressionStatement","src":"15077:38:67"},{"expression":{"id":25969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":25962,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"15129:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":25964,"indexExpression":{"id":25963,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"15145:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15129:21:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":25966,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15160:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15167:17:67","memberName":"poolHooksContract","nodeType":"MemberAccess","referencedDeclaration":25443,"src":"15160:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25965,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"15153:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1887_$","typeString":"type(contract IHooks)"}},"id":25968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15153:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"src":"15129:56:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":25970,"nodeType":"ExpressionStatement","src":"15129:56:67"}]},{"expression":{"arguments":[{"id":25973,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"15339:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25974,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15345:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15352:17:67","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":25434,"src":"15345:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":25972,"name":"_setStaticSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25045,"src":"15311:27:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":25976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15311:59:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":25977,"nodeType":"ExpressionStatement","src":"15311:59:67"},{"eventCall":{"arguments":[{"id":25979,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25494,"src":"15511:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25980,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15529:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15533:6:67","memberName":"sender","nodeType":"MemberAccess","src":"15529:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":25982,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15553:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25983,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15560:11:67","memberName":"tokenConfig","nodeType":"MemberAccess","referencedDeclaration":25432,"src":"15553:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"expression":{"id":25984,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15585:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15592:17:67","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":25434,"src":"15585:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":25986,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15623:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15630:18:67","memberName":"pauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":25436,"src":"15623:25:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":25988,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15662:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15669:12:67","memberName":"roleAccounts","nodeType":"MemberAccess","referencedDeclaration":25441,"src":"15662:19:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"arguments":[{"arguments":[{"expression":{"id":25993,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15731:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15738:17:67","memberName":"poolHooksContract","nodeType":"MemberAccess","referencedDeclaration":25443,"src":"15731:24:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":25992,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"15724:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1887_$","typeString":"type(contract IHooks)"}},"id":25995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15724:32:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":25990,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25723,"src":"15695:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":25991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15710:13:67","memberName":"toHooksConfig","nodeType":"MemberAccess","referencedDeclaration":28422,"src":"15695:28:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_contract$_IHooks_$1887_$returns$_t_struct$_HooksConfig_$4433_memory_ptr_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,contract IHooks) pure returns (struct HooksConfig memory)"}},"id":25996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15695:62:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},{"expression":{"id":25997,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25497,"src":"15771:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams memory"}},"id":25998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15778:19:67","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":25446,"src":"15771:26:67","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"id":25978,"name":"PoolRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"15483:14:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_struct$_HooksConfig_$4433_memory_ptr_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,address,struct TokenConfig memory[] memory,uint256,uint32,struct PoolRoleAccounts memory,struct HooksConfig memory,struct LiquidityManagement memory)"}},"id":25999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15483:324:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26000,"nodeType":"EmitStatement","src":"15478:329:67"}]},"documentation":{"id":25492,"nodeType":"StructuredDocumentation","src":"7630:316:67","text":" @dev The function will register the pool, setting its tokens with an initial balance of zero.\n The function also checks for valid token addresses and ensures that the pool and tokens aren't\n already registered.\n Emits a `PoolRegistered` event upon successful registration."},"id":26002,"implemented":true,"kind":"function","modifiers":[],"name":"_registerPool","nameLocation":"7960:13:67","nodeType":"FunctionDefinition","parameters":{"id":25498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25494,"mutability":"mutable","name":"pool","nameLocation":"7982:4:67","nodeType":"VariableDeclaration","scope":26002,"src":"7974:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25493,"name":"address","nodeType":"ElementaryTypeName","src":"7974:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25497,"mutability":"mutable","name":"params","nameLocation":"8018:6:67","nodeType":"VariableDeclaration","scope":26002,"src":"7988:36:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_memory_ptr","typeString":"struct VaultExtension.PoolRegistrationParams"},"typeName":{"id":25496,"nodeType":"UserDefinedTypeName","pathNode":{"id":25495,"name":"PoolRegistrationParams","nameLocations":["7988:22:67"],"nodeType":"IdentifierPath","referencedDeclaration":25447,"src":"7988:22:67"},"referencedDeclaration":25447,"src":"7988:22:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRegistrationParams_$25447_storage_ptr","typeString":"struct VaultExtension.PoolRegistrationParams"}},"visibility":"internal"}],"src":"7973:52:67"},"returnParameters":{"id":25499,"nodeType":"ParameterList","parameters":[],"src":"8035:0:67"},"scope":27639,"src":"7951:7863:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3888],"body":{"id":26016,"nodeType":"Block","src":"15947:47:67","statements":[{"expression":{"arguments":[{"id":26013,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26005,"src":"15982:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26012,"name":"_isPoolRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24706,"src":"15964:17:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":26014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15964:23:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":26011,"id":26015,"nodeType":"Return","src":"15957:30:67"}]},"documentation":{"id":26003,"nodeType":"StructuredDocumentation","src":"15820:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"c673bdaf","id":26017,"implemented":true,"kind":"function","modifiers":[{"id":26008,"kind":"modifierInvocation","modifierName":{"id":26007,"name":"onlyVaultDelegateCall","nameLocations":["15910:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"15910:21:67"},"nodeType":"ModifierInvocation","src":"15910:21:67"}],"name":"isPoolRegistered","nameLocation":"15865:16:67","nodeType":"FunctionDefinition","parameters":{"id":26006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26005,"mutability":"mutable","name":"pool","nameLocation":"15890:4:67","nodeType":"VariableDeclaration","scope":26017,"src":"15882:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26004,"name":"address","nodeType":"ElementaryTypeName","src":"15882:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15881:14:67"},"returnParameters":{"id":26011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26010,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26017,"src":"15941:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26009,"name":"bool","nodeType":"ElementaryTypeName","src":"15941:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15940:6:67"},"scope":27639,"src":"15856:138:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3909],"body":{"id":26167,"nodeType":"Block","src":"16410:2050:67","statements":[{"expression":{"arguments":[{"id":26048,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"16436:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26047,"name":"_ensureUnpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24537,"src":"16420:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":26049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16420:21:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26050,"nodeType":"ExpressionStatement","src":"16420:21:67"},{"assignments":[26053],"declarations":[{"constant":false,"id":26053,"mutability":"mutable","name":"poolData","nameLocation":"16585:8:67","nodeType":"VariableDeclaration","scope":26167,"src":"16569:24:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":26052,"nodeType":"UserDefinedTypeName","pathNode":{"id":26051,"name":"PoolData","nameLocations":["16569:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"16569:8:67"},"referencedDeclaration":4511,"src":"16569:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"id":26059,"initialValue":{"arguments":[{"id":26055,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"16610:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":26056,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"16616:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":26057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16625:10:67","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"16616:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":26054,"name":"_loadPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24875,"src":"16596:13:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) view returns (struct PoolData memory)"}},"id":26058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16596:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"nodeType":"VariableDeclarationStatement","src":"16569:67:67"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":26060,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"16651:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16660:14:67","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"16651:23:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16675:17:67","memberName":"isPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":29219,"src":"16651:41:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16651:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26069,"nodeType":"IfStatement","src":"16647:109:67","trueBody":{"id":26068,"nodeType":"Block","src":"16696:60:67","statements":[{"errorCall":{"arguments":[{"id":26065,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"16740:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26064,"name":"PoolAlreadyInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"16717:22:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":26066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16717:28:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":26067,"nodeType":"RevertStatement","src":"16710:35:67"}]}},{"assignments":[26071],"declarations":[{"constant":false,"id":26071,"mutability":"mutable","name":"numTokens","nameLocation":"16773:9:67","nodeType":"VariableDeclaration","scope":26167,"src":"16765:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26070,"name":"uint256","nodeType":"ElementaryTypeName","src":"16765:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26075,"initialValue":{"expression":{"expression":{"id":26072,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"16785:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16794:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"16785:15:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16801:6:67","memberName":"length","nodeType":"MemberAccess","src":"16785:22:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16765:42:67"},{"expression":{"arguments":[{"id":26079,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26071,"src":"16854:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":26080,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26029,"src":"16865:14:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16880:6:67","memberName":"length","nodeType":"MemberAccess","src":"16865:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":26076,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"16818:12:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":26078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16831:22:67","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5611,"src":"16818:35:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":26082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16818:69:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26083,"nodeType":"ExpressionStatement","src":"16818:69:67"},{"assignments":[26088],"declarations":[{"constant":false,"id":26088,"mutability":"mutable","name":"exactAmountsInScaled18","nameLocation":"17055:22:67","nodeType":"VariableDeclaration","scope":26167,"src":"17038:39:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26086,"name":"uint256","nodeType":"ElementaryTypeName","src":"17038:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26087,"nodeType":"ArrayTypeName","src":"17038:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":26096,"initialValue":{"arguments":[{"expression":{"id":26091,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"17146:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17155:21:67","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"17146:30:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":26093,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"17190:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17199:10:67","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"17190:19:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":26089,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26029,"src":"17080:14:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17095:37:67","memberName":"copyToScaled18ApplyRateRoundDownArray","nodeType":"MemberAccess","referencedDeclaration":6310,"src":"17080:52:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256[] memory) pure returns (uint256[] memory)"}},"id":26095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17080:139:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17038:181:67"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":26097,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"17234:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26098,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17243:14:67","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"17234:23:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17258:26:67","memberName":"shouldCallBeforeInitialize","nodeType":"MemberAccess","referencedDeclaration":28003,"src":"17234:50:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17234:52:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26132,"nodeType":"IfStatement","src":"17230:789:67","trueBody":{"id":26131,"nodeType":"Block","src":"17288:731:67","statements":[{"expression":{"arguments":[{"id":26104,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26088,"src":"17342:22:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":26105,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26033,"src":"17366:8:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"baseExpression":{"id":26106,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"17376:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":26108,"indexExpression":{"id":26107,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"17392:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17376:21:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":26101,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"17302:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_HooksConfigLib_$29013_$","typeString":"type(library HooksConfigLib)"}},"id":26103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17317:24:67","memberName":"callBeforeInitializeHook","nodeType":"MemberAccess","referencedDeclaration":28982,"src":"17302:39:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$_t_contract$_IHooks_$1887_$returns$__$","typeString":"function (uint256[] memory,bytes memory,contract IHooks)"}},"id":26109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17302:96:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26110,"nodeType":"ExpressionStatement","src":"17302:96:67"},{"expression":{"arguments":[{"baseExpression":{"id":26114,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"17680:18:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":26116,"indexExpression":{"id":26115,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"17699:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17680:24:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"expression":{"id":26117,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"17706:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":26118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17715:10:67","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"17706:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":26111,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"17648:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17657:22:67","memberName":"reloadBalancesAndRates","nodeType":"MemberAccess","referencedDeclaration":30410,"src":"17648:31:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),enum Rounding) view"}},"id":26119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17648:78:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26120,"nodeType":"ExpressionStatement","src":"17648:78:67"},{"expression":{"id":26129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26121,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26088,"src":"17832:22:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":26124,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"17927:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17936:21:67","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"17927:30:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":26126,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"17975:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17984:10:67","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"17975:19:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":26122,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26029,"src":"17857:14:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17872:37:67","memberName":"copyToScaled18ApplyRateRoundDownArray","nodeType":"MemberAccess","referencedDeclaration":6310,"src":"17857:52:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$attached_to$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256[] memory) pure returns (uint256[] memory)"}},"id":26128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17857:151:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"17832:176:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26130,"nodeType":"ExpressionStatement","src":"17832:176:67"}]}},{"expression":{"id":26143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26133,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26045,"src":"18029:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26135,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"18056:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26136,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26022,"src":"18062:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26137,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"18066:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":26138,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26026,"src":"18076:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":26139,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26029,"src":"18084:14:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":26140,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26088,"src":"18100:22:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":26141,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26031,"src":"18124:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26134,"name":"_initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26349,"src":"18044:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_struct$_PoolData_$4511_memory_ptr_$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,address,struct PoolData memory,contract IERC20[] memory,uint256[] memory,uint256[] memory,uint256) returns (uint256)"}},"id":26142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18044:96:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18029:111:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26144,"nodeType":"ExpressionStatement","src":"18029:111:67"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":26145,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26053,"src":"18155:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18164:14:67","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"18155:23:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18179:25:67","memberName":"shouldCallAfterInitialize","nodeType":"MemberAccess","referencedDeclaration":28046,"src":"18155:49:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18155:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26166,"nodeType":"IfStatement","src":"18151:303:67","trueBody":{"id":26165,"nodeType":"Block","src":"18208:246:67","statements":[{"assignments":[26151],"declarations":[{"constant":false,"id":26151,"mutability":"mutable","name":"hooksContract","nameLocation":"18290:13:67","nodeType":"VariableDeclaration","scope":26165,"src":"18283:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":26150,"nodeType":"UserDefinedTypeName","pathNode":{"id":26149,"name":"IHooks","nameLocations":["18283:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"18283:6:67"},"referencedDeclaration":1887,"src":"18283:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"id":26155,"initialValue":{"baseExpression":{"id":26152,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"18306:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":26154,"indexExpression":{"id":26153,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"18322:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18306:21:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"nodeType":"VariableDeclarationStatement","src":"18283:44:67"},{"expression":{"arguments":[{"id":26159,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26088,"src":"18381:22:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":26160,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26045,"src":"18405:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26161,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26033,"src":"18419:8:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":26162,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26151,"src":"18429:13:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":26156,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"18342:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_HooksConfigLib_$29013_$","typeString":"type(library HooksConfigLib)"}},"id":26158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18357:23:67","memberName":"callAfterInitializeHook","nodeType":"MemberAccess","referencedDeclaration":29012,"src":"18342:38:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$_t_contract$_IHooks_$1887_$returns$__$","typeString":"function (uint256[] memory,uint256,bytes memory,contract IHooks)"}},"id":26163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18342:101:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26164,"nodeType":"ExpressionStatement","src":"18342:101:67"}]}}]},"documentation":{"id":26018,"nodeType":"StructuredDocumentation","src":"16000:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"ba8a2be0","id":26168,"implemented":true,"kind":"function","modifiers":[{"id":26036,"kind":"modifierInvocation","modifierName":{"id":26035,"name":"onlyVaultDelegateCall","nameLocations":["16266:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"16266:21:67"},"nodeType":"ModifierInvocation","src":"16266:21:67"},{"id":26038,"kind":"modifierInvocation","modifierName":{"id":26037,"name":"onlyWhenUnlocked","nameLocations":["16296:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"16296:16:67"},"nodeType":"ModifierInvocation","src":"16296:16:67"},{"arguments":[{"id":26040,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26020,"src":"16340:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26041,"kind":"modifierInvocation","modifierName":{"id":26039,"name":"withRegisteredPool","nameLocations":["16321:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"16321:18:67"},"nodeType":"ModifierInvocation","src":"16321:24:67"},{"id":26043,"kind":"modifierInvocation","modifierName":{"id":26042,"name":"nonReentrant","nameLocations":["16354:12:67"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"16354:12:67"},"nodeType":"ModifierInvocation","src":"16354:12:67"}],"name":"initialize","nameLocation":"16045:10:67","nodeType":"FunctionDefinition","parameters":{"id":26034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26020,"mutability":"mutable","name":"pool","nameLocation":"16073:4:67","nodeType":"VariableDeclaration","scope":26168,"src":"16065:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26019,"name":"address","nodeType":"ElementaryTypeName","src":"16065:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26022,"mutability":"mutable","name":"to","nameLocation":"16095:2:67","nodeType":"VariableDeclaration","scope":26168,"src":"16087:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26021,"name":"address","nodeType":"ElementaryTypeName","src":"16087:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26026,"mutability":"mutable","name":"tokens","nameLocation":"16123:6:67","nodeType":"VariableDeclaration","scope":26168,"src":"16107:22:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":26024,"nodeType":"UserDefinedTypeName","pathNode":{"id":26023,"name":"IERC20","nameLocations":["16107:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"16107:6:67"},"referencedDeclaration":39274,"src":"16107:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":26025,"nodeType":"ArrayTypeName","src":"16107:8:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":26029,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"16156:14:67","nodeType":"VariableDeclaration","scope":26168,"src":"16139:31:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26027,"name":"uint256","nodeType":"ElementaryTypeName","src":"16139:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26028,"nodeType":"ArrayTypeName","src":"16139:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":26031,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"16188:15:67","nodeType":"VariableDeclaration","scope":26168,"src":"16180:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26030,"name":"uint256","nodeType":"ElementaryTypeName","src":"16180:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":26033,"mutability":"mutable","name":"userData","nameLocation":"16226:8:67","nodeType":"VariableDeclaration","scope":26168,"src":"16213:21:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":26032,"name":"bytes","nodeType":"ElementaryTypeName","src":"16213:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16055:185:67"},"returnParameters":{"id":26046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26045,"mutability":"mutable","name":"bptAmountOut","nameLocation":"16392:12:67","nodeType":"VariableDeclaration","scope":26168,"src":"16384:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26044,"name":"uint256","nodeType":"ElementaryTypeName","src":"16384:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16383:22:67"},"scope":27639,"src":"16036:2424:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":26348,"nodeType":"Block","src":"18764:2188:67","statements":[{"assignments":[26195],"declarations":[{"constant":false,"id":26195,"mutability":"mutable","name":"poolBalances","nameLocation":"18840:12:67","nodeType":"VariableDeclaration","scope":26348,"src":"18774:78:67","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":26194,"keyName":"tokenIndex","keyNameLocation":"18790:10:67","keyType":{"id":26192,"name":"uint256","nodeType":"ElementaryTypeName","src":"18782:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"18774:57:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"18812:18:67","valueType":{"id":26193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18804:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":26199,"initialValue":{"baseExpression":{"id":26196,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"18855:18:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":26198,"indexExpression":{"id":26197,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"18874:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18855:24:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"18774:105:67"},{"body":{"id":26262,"nodeType":"Block","src":"18943:574:67","statements":[{"assignments":[26214],"declarations":[{"constant":false,"id":26214,"mutability":"mutable","name":"actualToken","nameLocation":"18964:11:67","nodeType":"VariableDeclaration","scope":26262,"src":"18957:18:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":26213,"nodeType":"UserDefinedTypeName","pathNode":{"id":26212,"name":"IERC20","nameLocations":["18957:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18957:6:67"},"referencedDeclaration":39274,"src":"18957:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":26219,"initialValue":{"baseExpression":{"expression":{"id":26215,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26175,"src":"18978:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18987:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"18978:15:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26218,"indexExpression":{"id":26217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"18994:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18978:18:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"18957:39:67"},{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":26224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26220,"name":"actualToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26214,"src":"19089:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":26221,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26179,"src":"19104:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26223,"indexExpression":{"id":26222,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"19111:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19104:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"19089:24:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26240,"nodeType":"IfStatement","src":"19085:132:67","trueBody":{"id":26239,"nodeType":"Block","src":"19115:102:67","statements":[{"errorCall":{"arguments":[{"id":26226,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"19155:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"baseExpression":{"id":26229,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26179,"src":"19169:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26231,"indexExpression":{"id":26230,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"19176:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19169:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":26228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19161:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26227,"name":"address","nodeType":"ElementaryTypeName","src":"19161:7:67","typeDescriptions":{}}},"id":26232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19161:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":26235,"name":"actualToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26214,"src":"19189:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":26234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19181:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26233,"name":"address","nodeType":"ElementaryTypeName","src":"19181:7:67","typeDescriptions":{}}},"id":26236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19181:20:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":26225,"name":"TokensMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"19140:14:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address,address) pure returns (error)"}},"id":26237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19140:62:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":26238,"nodeType":"RevertStatement","src":"19133:69:67"}]}},{"expression":{"arguments":[{"id":26242,"name":"actualToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26214,"src":"19285:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":26243,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26182,"src":"19298:14:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26245,"indexExpression":{"id":26244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"19313:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19298:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26241,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"19275:9:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":26246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19275:41:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26247,"nodeType":"ExpressionStatement","src":"19275:41:67"},{"expression":{"id":26260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26248,"name":"poolBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26195,"src":"19408:12:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":26250,"indexExpression":{"id":26249,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"19421:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19408:15:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":26253,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26182,"src":"19461:14:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26255,"indexExpression":{"id":26254,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"19476:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19461:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":26256,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26185,"src":"19480:22:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26258,"indexExpression":{"id":26257,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"19503:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19480:25:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":26251,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"19426:18:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":26252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19445:15:67","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"19426:34:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":26259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19426:80:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19408:98:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":26261,"nodeType":"ExpressionStatement","src":"19408:98:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26204,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"18910:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":26205,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26175,"src":"18914:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18923:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"18914:15:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18930:6:67","memberName":"length","nodeType":"MemberAccess","src":"18914:22:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18910:26:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26263,"initializationExpression":{"assignments":[26201],"declarations":[{"constant":false,"id":26201,"mutability":"mutable","name":"i","nameLocation":"18903:1:67","nodeType":"VariableDeclaration","scope":26263,"src":"18895:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26200,"name":"uint256","nodeType":"ElementaryTypeName","src":"18895:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26203,"initialValue":{"hexValue":"30","id":26202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18907:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18895:13:67"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":26210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18938:3:67","subExpression":{"id":26209,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26201,"src":"18940:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26211,"nodeType":"ExpressionStatement","src":"18938:3:67"},"nodeType":"ForStatement","src":"18890:627:67"},{"expression":{"id":26272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":26264,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26175,"src":"19527:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19536:14:67","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"19527:23:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"74727565","id":26270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19596:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"expression":{"id":26267,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26175,"src":"19553:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19562:14:67","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"19553:23:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19577:18:67","memberName":"setPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":29244,"src":"19553:42:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":26271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19553:48:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"19527:74:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26273,"nodeType":"ExpressionStatement","src":"19527:74:67"},{"expression":{"id":26279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26274,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"19670:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":26276,"indexExpression":{"id":26275,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"19686:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19670:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":26277,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26175,"src":"19694:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19703:14:67","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"19694:23:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"19670:47:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26280,"nodeType":"ExpressionStatement","src":"19670:47:67"},{"expression":{"id":26290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26281,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26190,"src":"19773:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26286,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26185,"src":"19821:22:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":26287,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"19845:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":26288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19854:10:67","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"19845:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"arguments":[{"id":26283,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"19798:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26282,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"19788:9:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":26284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19788:15:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":26285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19804:16:67","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"19788:32:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":26289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19788:77:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19773:92:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26291,"nodeType":"ExpressionStatement","src":"19773:92:67"},{"expression":{"arguments":[{"id":26293,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26190,"src":"19906:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26292,"name":"_ensurePoolMinimumTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38473,"src":"19876:29:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":26294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19876:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26295,"nodeType":"ExpressionStatement","src":"19876:43:67"},{"expression":{"id":26298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26296,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26190,"src":"20037:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":26297,"name":"_POOL_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"20053:26:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20037:42:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26299,"nodeType":"ExpressionStatement","src":"20037:42:67"},{"expression":{"arguments":[{"arguments":[{"id":26303,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"20382:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20374:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26301,"name":"address","nodeType":"ElementaryTypeName","src":"20374:7:67","typeDescriptions":{}}},"id":26304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20374:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26300,"name":"_mintMinimumSupplyReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38525,"src":"20348:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":26305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20348:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26306,"nodeType":"ExpressionStatement","src":"20348:40:67"},{"expression":{"arguments":[{"arguments":[{"id":26310,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"20412:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20404:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26308,"name":"address","nodeType":"ElementaryTypeName","src":"20404:7:67","typeDescriptions":{}}},"id":26311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20404:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26312,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26172,"src":"20419:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26313,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26190,"src":"20423:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26307,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38458,"src":"20398:5:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":26314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20398:38:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26315,"nodeType":"ExpressionStatement","src":"20398:38:67"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26316,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26190,"src":"20511:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":26317,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26187,"src":"20526:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20511:30:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26325,"nodeType":"IfStatement","src":"20507:119:67","trueBody":{"id":26324,"nodeType":"Block","src":"20543:83:67","statements":[{"errorCall":{"arguments":[{"id":26320,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26190,"src":"20585:12:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26321,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26187,"src":"20599:15:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26319,"name":"BptAmountOutBelowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3347,"src":"20564:20:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":26322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20564:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":26323,"nodeType":"RevertStatement","src":"20557:58:67"}]}},{"eventCall":{"arguments":[{"id":26327,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"20669:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26328,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26172,"src":"20687:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":26329,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"20703:16:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":26330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20720:10:67","memberName":"UNBALANCED","nodeType":"MemberAccess","referencedDeclaration":4585,"src":"20703:27:67","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"arguments":[{"id":26332,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"20757:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26331,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"20744:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":26333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20744:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":26334,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26182,"src":"20776:14:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"expression":{"expression":{"id":26338,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26175,"src":"20818:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20827:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"20818:15:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20834:6:67","memberName":"length","nodeType":"MemberAccess","src":"20818:22:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"20804:13:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":26335,"name":"uint256","nodeType":"ElementaryTypeName","src":"20808:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26336,"nodeType":"ArrayTypeName","src":"20808:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":26341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20804:37:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":26326,"name":"LiquidityAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"20641:14:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_enum$_AddLiquidityKind_$4589_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,enum AddLiquidityKind,uint256,uint256[] memory,uint256[] memory)"}},"id":26342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20641:210:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26343,"nodeType":"EmitStatement","src":"20636:215:67"},{"eventCall":{"arguments":[{"id":26345,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26170,"src":"20940:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26344,"name":"PoolInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"20924:15:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":26346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20924:21:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26347,"nodeType":"EmitStatement","src":"20919:26:67"}]},"id":26349,"implemented":true,"kind":"function","modifiers":[],"name":"_initialize","nameLocation":"18475:11:67","nodeType":"FunctionDefinition","parameters":{"id":26188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26170,"mutability":"mutable","name":"pool","nameLocation":"18504:4:67","nodeType":"VariableDeclaration","scope":26349,"src":"18496:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26169,"name":"address","nodeType":"ElementaryTypeName","src":"18496:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26172,"mutability":"mutable","name":"to","nameLocation":"18526:2:67","nodeType":"VariableDeclaration","scope":26349,"src":"18518:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26171,"name":"address","nodeType":"ElementaryTypeName","src":"18518:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26175,"mutability":"mutable","name":"poolData","nameLocation":"18554:8:67","nodeType":"VariableDeclaration","scope":26349,"src":"18538:24:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":26174,"nodeType":"UserDefinedTypeName","pathNode":{"id":26173,"name":"PoolData","nameLocations":["18538:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"18538:8:67"},"referencedDeclaration":4511,"src":"18538:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":26179,"mutability":"mutable","name":"tokens","nameLocation":"18588:6:67","nodeType":"VariableDeclaration","scope":26349,"src":"18572:22:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":26177,"nodeType":"UserDefinedTypeName","pathNode":{"id":26176,"name":"IERC20","nameLocations":["18572:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18572:6:67"},"referencedDeclaration":39274,"src":"18572:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":26178,"nodeType":"ArrayTypeName","src":"18572:8:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":26182,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"18621:14:67","nodeType":"VariableDeclaration","scope":26349,"src":"18604:31:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26180,"name":"uint256","nodeType":"ElementaryTypeName","src":"18604:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26181,"nodeType":"ArrayTypeName","src":"18604:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":26185,"mutability":"mutable","name":"exactAmountsInScaled18","nameLocation":"18662:22:67","nodeType":"VariableDeclaration","scope":26349,"src":"18645:39:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26183,"name":"uint256","nodeType":"ElementaryTypeName","src":"18645:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26184,"nodeType":"ArrayTypeName","src":"18645:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":26187,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"18702:15:67","nodeType":"VariableDeclaration","scope":26349,"src":"18694:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26186,"name":"uint256","nodeType":"ElementaryTypeName","src":"18694:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18486:237:67"},"returnParameters":{"id":26191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26190,"mutability":"mutable","name":"bptAmountOut","nameLocation":"18750:12:67","nodeType":"VariableDeclaration","scope":26349,"src":"18742:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26189,"name":"uint256","nodeType":"ElementaryTypeName","src":"18742:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18741:22:67"},"scope":27639,"src":"18466:2486:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3917],"body":{"id":26366,"nodeType":"Block","src":"21349:48:67","statements":[{"expression":{"arguments":[{"id":26363,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26352,"src":"21385:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26362,"name":"_isPoolInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24742,"src":"21366:18:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":26364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21366:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":26361,"id":26365,"nodeType":"Return","src":"21359:31:67"}]},"documentation":{"id":26350,"nodeType":"StructuredDocumentation","src":"21182:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"532cec7c","id":26367,"implemented":true,"kind":"function","modifiers":[{"id":26355,"kind":"modifierInvocation","modifierName":{"id":26354,"name":"onlyVaultDelegateCall","nameLocations":["21287:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"21287:21:67"},"nodeType":"ModifierInvocation","src":"21287:21:67"},{"arguments":[{"id":26357,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26352,"src":"21328:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26358,"kind":"modifierInvocation","modifierName":{"id":26356,"name":"withRegisteredPool","nameLocations":["21309:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"21309:18:67"},"nodeType":"ModifierInvocation","src":"21309:24:67"}],"name":"isPoolInitialized","nameLocation":"21227:17:67","nodeType":"FunctionDefinition","parameters":{"id":26353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26352,"mutability":"mutable","name":"pool","nameLocation":"21262:4:67","nodeType":"VariableDeclaration","scope":26367,"src":"21254:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26351,"name":"address","nodeType":"ElementaryTypeName","src":"21254:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21244:28:67"},"returnParameters":{"id":26361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26367,"src":"21343:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26359,"name":"bool","nodeType":"ElementaryTypeName","src":"21343:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21342:6:67"},"scope":27639,"src":"21218:179:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3927],"body":{"id":26386,"nodeType":"Block","src":"21584:41:67","statements":[{"expression":{"baseExpression":{"id":26382,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"21601:11:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":26384,"indexExpression":{"id":26383,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26370,"src":"21613:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21601:17:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"functionReturnParameters":26381,"id":26385,"nodeType":"Return","src":"21594:24:67"}]},"documentation":{"id":26368,"nodeType":"StructuredDocumentation","src":"21403:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"ca4f2803","id":26387,"implemented":true,"kind":"function","modifiers":[{"id":26373,"kind":"modifierInvocation","modifierName":{"id":26372,"name":"onlyVaultDelegateCall","nameLocations":["21504:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"21504:21:67"},"nodeType":"ModifierInvocation","src":"21504:21:67"},{"arguments":[{"id":26375,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26370,"src":"21545:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26376,"kind":"modifierInvocation","modifierName":{"id":26374,"name":"withRegisteredPool","nameLocations":["21526:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"21526:18:67"},"nodeType":"ModifierInvocation","src":"21526:24:67"}],"name":"getPoolTokens","nameLocation":"21448:13:67","nodeType":"FunctionDefinition","parameters":{"id":26371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26370,"mutability":"mutable","name":"pool","nameLocation":"21479:4:67","nodeType":"VariableDeclaration","scope":26387,"src":"21471:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26369,"name":"address","nodeType":"ElementaryTypeName","src":"21471:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21461:28:67"},"returnParameters":{"id":26381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26380,"mutability":"mutable","name":"tokens","nameLocation":"21576:6:67","nodeType":"VariableDeclaration","scope":26387,"src":"21560:22:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":26378,"nodeType":"UserDefinedTypeName","pathNode":{"id":26377,"name":"IERC20","nameLocations":["21560:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"21560:6:67"},"referencedDeclaration":39274,"src":"21560:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":26379,"nodeType":"ArrayTypeName","src":"21560:8:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"21559:24:67"},"scope":27639,"src":"21439:186:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3939],"body":{"id":26473,"nodeType":"Block","src":"21905:589:67","statements":[{"assignments":[26406],"declarations":[{"constant":false,"id":26406,"mutability":"mutable","name":"poolConfig","nameLocation":"22015:10:67","nodeType":"VariableDeclaration","scope":26473,"src":"22000:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":26405,"nodeType":"UserDefinedTypeName","pathNode":{"id":26404,"name":"PoolConfigBits","nameLocations":["22000:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"22000:14:67"},"referencedDeclaration":4364,"src":"22000:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":26410,"initialValue":{"baseExpression":{"id":26407,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"22028:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":26409,"indexExpression":{"id":26408,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26390,"src":"22044:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22028:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"22000:49:67"},{"assignments":[26415],"declarations":[{"constant":false,"id":26415,"mutability":"mutable","name":"tokens","nameLocation":"22076:6:67","nodeType":"VariableDeclaration","scope":26473,"src":"22060:22:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":26413,"nodeType":"UserDefinedTypeName","pathNode":{"id":26412,"name":"IERC20","nameLocations":["22060:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"22060:6:67"},"referencedDeclaration":39274,"src":"22060:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":26414,"nodeType":"ArrayTypeName","src":"22060:8:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":26419,"initialValue":{"baseExpression":{"id":26416,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"22085:11:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":26418,"indexExpression":{"id":26417,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26390,"src":"22097:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22085:17:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"22060:42:67"},{"assignments":[26421],"declarations":[{"constant":false,"id":26421,"mutability":"mutable","name":"numTokens","nameLocation":"22120:9:67","nodeType":"VariableDeclaration","scope":26473,"src":"22112:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26420,"name":"uint256","nodeType":"ElementaryTypeName","src":"22112:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26424,"initialValue":{"expression":{"id":26422,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26415,"src":"22132:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22139:6:67","memberName":"length","nodeType":"MemberAccess","src":"22132:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22112:33:67"},{"expression":{"id":26431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26425,"name":"decimalScalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26399,"src":"22155:21:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26428,"name":"poolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26406,"src":"22218:10:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},{"id":26429,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26421,"src":"22230:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":26426,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"22179:13:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigLib_$29980_$","typeString":"type(library PoolConfigLib)"}},"id":26427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22193:24:67","memberName":"getDecimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":29854,"src":"22179:38:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (PoolConfigBits,uint256) pure returns (uint256[] memory)"}},"id":26430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22179:61:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"22155:85:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26432,"nodeType":"ExpressionStatement","src":"22155:85:67"},{"expression":{"id":26439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26433,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26402,"src":"22250:10:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26437,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26421,"src":"22277:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"22263:13:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":26434,"name":"uint256","nodeType":"ElementaryTypeName","src":"22267:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26435,"nodeType":"ArrayTypeName","src":"22267:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":26438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22263:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"22250:37:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26440,"nodeType":"ExpressionStatement","src":"22250:37:67"},{"body":{"id":26471,"nodeType":"Block","src":"22338:150:67","statements":[{"assignments":[26453],"declarations":[{"constant":false,"id":26453,"mutability":"mutable","name":"tokenInfo","nameLocation":"22369:9:67","nodeType":"VariableDeclaration","scope":26471,"src":"22352:26:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo"},"typeName":{"id":26452,"nodeType":"UserDefinedTypeName","pathNode":{"id":26451,"name":"TokenInfo","nameLocations":["22352:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"22352:9:67"},"referencedDeclaration":4486,"src":"22352:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"visibility":"internal"}],"id":26461,"initialValue":{"baseExpression":{"baseExpression":{"id":26454,"name":"_poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27789,"src":"22381:14:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo storage ref))"}},"id":26456,"indexExpression":{"id":26455,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26390,"src":"22396:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22381:20:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},"id":26460,"indexExpression":{"baseExpression":{"id":26457,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26415,"src":"22402:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26459,"indexExpression":{"id":26458,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26442,"src":"22409:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22402:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22381:31:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"22352:60:67"},{"expression":{"id":26469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26462,"name":"tokenRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26402,"src":"22426:10:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26464,"indexExpression":{"id":26463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26442,"src":"22437:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22426:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26467,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26453,"src":"22467:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}],"expression":{"id":26465,"name":"PoolDataLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30570,"src":"22442:11:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolDataLib_$30570_$","typeString":"type(library PoolDataLib)"}},"id":26466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22454:12:67","memberName":"getTokenRate","nodeType":"MemberAccess","referencedDeclaration":30455,"src":"22442:24:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_TokenInfo_$4486_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct TokenInfo memory) view returns (uint256)"}},"id":26468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22442:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22426:51:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26470,"nodeType":"ExpressionStatement","src":"22426:51:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26442,"src":"22318:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":26446,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26421,"src":"22322:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22318:13:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26472,"initializationExpression":{"assignments":[26442],"declarations":[{"constant":false,"id":26442,"mutability":"mutable","name":"i","nameLocation":"22311:1:67","nodeType":"VariableDeclaration","scope":26472,"src":"22303:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26441,"name":"uint256","nodeType":"ElementaryTypeName","src":"22303:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26444,"initialValue":{"hexValue":"30","id":26443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22315:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"22303:13:67"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":26449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"22333:3:67","subExpression":{"id":26448,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26442,"src":"22335:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26450,"nodeType":"ExpressionStatement","src":"22333:3:67"},"nodeType":"ForStatement","src":"22298:190:67"}]},"documentation":{"id":26388,"nodeType":"StructuredDocumentation","src":"21631:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"7e361bde","id":26474,"implemented":true,"kind":"function","modifiers":[{"id":26393,"kind":"modifierInvocation","modifierName":{"id":26392,"name":"onlyVaultDelegateCall","nameLocations":["21760:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"21760:21:67"},"nodeType":"ModifierInvocation","src":"21760:21:67"},{"arguments":[{"id":26395,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26390,"src":"21809:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26396,"kind":"modifierInvocation","modifierName":{"id":26394,"name":"withRegisteredPool","nameLocations":["21790:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"21790:18:67"},"nodeType":"ModifierInvocation","src":"21790:24:67"}],"name":"getPoolTokenRates","nameLocation":"21676:17:67","nodeType":"FunctionDefinition","parameters":{"id":26391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26390,"mutability":"mutable","name":"pool","nameLocation":"21711:4:67","nodeType":"VariableDeclaration","scope":26474,"src":"21703:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26389,"name":"address","nodeType":"ElementaryTypeName","src":"21703:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21693:28:67"},"returnParameters":{"id":26403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26399,"mutability":"mutable","name":"decimalScalingFactors","nameLocation":"21849:21:67","nodeType":"VariableDeclaration","scope":26474,"src":"21832:38:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26397,"name":"uint256","nodeType":"ElementaryTypeName","src":"21832:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26398,"nodeType":"ArrayTypeName","src":"21832:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":26402,"mutability":"mutable","name":"tokenRates","nameLocation":"21889:10:67","nodeType":"VariableDeclaration","scope":26474,"src":"21872:27:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26400,"name":"uint256","nodeType":"ElementaryTypeName","src":"21872:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26401,"nodeType":"ArrayTypeName","src":"21872:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"21831:69:67"},"scope":27639,"src":"21667:827:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3948],"body":{"id":26494,"nodeType":"Block","src":"22673:64:67","statements":[{"expression":{"arguments":[{"id":26489,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26477,"src":"22704:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":26490,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"22710:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":26491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22719:10:67","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"22710:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":26488,"name":"_loadPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24875,"src":"22690:13:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) view returns (struct PoolData memory)"}},"id":26492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22690:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"functionReturnParameters":26487,"id":26493,"nodeType":"Return","src":"22683:47:67"}]},"documentation":{"id":26475,"nodeType":"StructuredDocumentation","src":"22500:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"13d21cdf","id":26495,"implemented":true,"kind":"function","modifiers":[{"id":26480,"kind":"modifierInvocation","modifierName":{"id":26479,"name":"onlyVaultDelegateCall","nameLocations":["22599:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"22599:21:67"},"nodeType":"ModifierInvocation","src":"22599:21:67"},{"arguments":[{"id":26482,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26477,"src":"22641:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26483,"kind":"modifierInvocation","modifierName":{"id":26481,"name":"withInitializedPool","nameLocations":["22621:19:67"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"22621:19:67"},"nodeType":"ModifierInvocation","src":"22621:25:67"}],"name":"getPoolData","nameLocation":"22545:11:67","nodeType":"FunctionDefinition","parameters":{"id":26478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26477,"mutability":"mutable","name":"pool","nameLocation":"22574:4:67","nodeType":"VariableDeclaration","scope":26495,"src":"22566:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26476,"name":"address","nodeType":"ElementaryTypeName","src":"22566:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22556:28:67"},"returnParameters":{"id":26487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26495,"src":"22656:15:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":26485,"nodeType":"UserDefinedTypeName","pathNode":{"id":26484,"name":"PoolData","nameLocations":["22656:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"22656:8:67"},"referencedDeclaration":4511,"src":"22656:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"22655:17:67"},"scope":27639,"src":"22536:201:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3968],"body":{"id":26610,"nodeType":"Block","src":"23132:764:67","statements":[{"assignments":[26523],"declarations":[{"constant":false,"id":26523,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"23293:17:67","nodeType":"VariableDeclaration","scope":26610,"src":"23227:83:67","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":26522,"keyName":"tokenIndex","keyNameLocation":"23243:10:67","keyType":{"id":26520,"name":"uint256","nodeType":"ElementaryTypeName","src":"23235:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"23227:57:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"23265:18:67","valueType":{"id":26521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23257:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":26527,"initialValue":{"baseExpression":{"id":26524,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"23313:18:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":26526,"indexExpression":{"id":26525,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26498,"src":"23332:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23313:24:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"23227:110:67"},{"expression":{"id":26532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26528,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26508,"src":"23347:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":26529,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"23356:11:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":26531,"indexExpression":{"id":26530,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26498,"src":"23368:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23356:17:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"src":"23347:26:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26533,"nodeType":"ExpressionStatement","src":"23347:26:67"},{"assignments":[26535],"declarations":[{"constant":false,"id":26535,"mutability":"mutable","name":"numTokens","nameLocation":"23391:9:67","nodeType":"VariableDeclaration","scope":26610,"src":"23383:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26534,"name":"uint256","nodeType":"ElementaryTypeName","src":"23383:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26538,"initialValue":{"expression":{"id":26536,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26508,"src":"23403:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23410:6:67","memberName":"length","nodeType":"MemberAccess","src":"23403:13:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23383:33:67"},{"expression":{"id":26546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26539,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26512,"src":"23426:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26544,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"23454:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23438:15:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenInfo memory[] memory)"},"typeName":{"baseType":{"id":26541,"nodeType":"UserDefinedTypeName","pathNode":{"id":26540,"name":"TokenInfo","nameLocations":["23442:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"23442:9:67"},"referencedDeclaration":4486,"src":"23442:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":26542,"nodeType":"ArrayTypeName","src":"23442:11:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}}},"id":26545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23438:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"src":"23426:38:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"id":26547,"nodeType":"ExpressionStatement","src":"23426:38:67"},{"expression":{"id":26554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26548,"name":"balancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26515,"src":"23474:11:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26552,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"23502:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23488:13:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":26549,"name":"uint256","nodeType":"ElementaryTypeName","src":"23492:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26550,"nodeType":"ArrayTypeName","src":"23492:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":26553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23488:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"23474:38:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26555,"nodeType":"ExpressionStatement","src":"23474:38:67"},{"expression":{"id":26562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":26556,"name":"lastBalancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26518,"src":"23522:24:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":26560,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"23563:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"23549:13:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":26557,"name":"uint256","nodeType":"ElementaryTypeName","src":"23553:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26558,"nodeType":"ArrayTypeName","src":"23553:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":26561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23549:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"23522:51:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26563,"nodeType":"ExpressionStatement","src":"23522:51:67"},{"body":{"id":26608,"nodeType":"Block","src":"23624:266:67","statements":[{"assignments":[26575],"declarations":[{"constant":false,"id":26575,"mutability":"mutable","name":"packedBalance","nameLocation":"23646:13:67","nodeType":"VariableDeclaration","scope":26608,"src":"23638:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26574,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23638:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":26579,"initialValue":{"baseExpression":{"id":26576,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26523,"src":"23662:17:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":26578,"indexExpression":{"id":26577,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26565,"src":"23680:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23662:20:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"23638:44:67"},{"expression":{"id":26590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26580,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26512,"src":"23696:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"id":26582,"indexExpression":{"id":26581,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26565,"src":"23706:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23696:12:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":26583,"name":"_poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27789,"src":"23711:14:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo storage ref))"}},"id":26585,"indexExpression":{"id":26584,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26498,"src":"23726:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23711:20:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},"id":26589,"indexExpression":{"baseExpression":{"id":26586,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26508,"src":"23732:6:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":26588,"indexExpression":{"id":26587,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26565,"src":"23739:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23732:9:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23711:31:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"src":"23696:46:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"id":26591,"nodeType":"ExpressionStatement","src":"23696:46:67"},{"expression":{"id":26598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26592,"name":"balancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26515,"src":"23756:11:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26594,"indexExpression":{"id":26593,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26565,"src":"23768:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23756:14:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26595,"name":"packedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26575,"src":"23773:13:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":26596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23787:13:67","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"23773:27:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":26597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23773:29:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23756:46:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26599,"nodeType":"ExpressionStatement","src":"23756:46:67"},{"expression":{"id":26606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":26600,"name":"lastBalancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26518,"src":"23816:24:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":26602,"indexExpression":{"id":26601,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26565,"src":"23841:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23816:27:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26603,"name":"packedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26575,"src":"23846:13:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":26604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23860:17:67","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"23846:31:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":26605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23846:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23816:63:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26607,"nodeType":"ExpressionStatement","src":"23816:63:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":26570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26568,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26565,"src":"23604:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":26569,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26535,"src":"23608:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23604:13:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":26609,"initializationExpression":{"assignments":[26565],"declarations":[{"constant":false,"id":26565,"mutability":"mutable","name":"i","nameLocation":"23597:1:67","nodeType":"VariableDeclaration","scope":26609,"src":"23589:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26564,"name":"uint256","nodeType":"ElementaryTypeName","src":"23589:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26567,"initialValue":{"hexValue":"30","id":26566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23601:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23589:13:67"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":26572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"23619:3:67","subExpression":{"id":26571,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26565,"src":"23621:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26573,"nodeType":"ExpressionStatement","src":"23619:3:67"},"nodeType":"ForStatement","src":"23584:306:67"}]},"documentation":{"id":26496,"nodeType":"StructuredDocumentation","src":"22743:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"67e0e076","id":26611,"implemented":true,"kind":"function","modifiers":[{"id":26501,"kind":"modifierInvocation","modifierName":{"id":26500,"name":"onlyVaultDelegateCall","nameLocations":["22871:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"22871:21:67"},"nodeType":"ModifierInvocation","src":"22871:21:67"},{"arguments":[{"id":26503,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26498,"src":"22920:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26504,"kind":"modifierInvocation","modifierName":{"id":26502,"name":"withRegisteredPool","nameLocations":["22901:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"22901:18:67"},"nodeType":"ModifierInvocation","src":"22901:24:67"}],"name":"getPoolTokenInfo","nameLocation":"22788:16:67","nodeType":"FunctionDefinition","parameters":{"id":26499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26498,"mutability":"mutable","name":"pool","nameLocation":"22822:4:67","nodeType":"VariableDeclaration","scope":26611,"src":"22814:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26497,"name":"address","nodeType":"ElementaryTypeName","src":"22814:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22804:28:67"},"returnParameters":{"id":26519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26508,"mutability":"mutable","name":"tokens","nameLocation":"22972:6:67","nodeType":"VariableDeclaration","scope":26611,"src":"22956:22:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":26506,"nodeType":"UserDefinedTypeName","pathNode":{"id":26505,"name":"IERC20","nameLocations":["22956:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"22956:6:67"},"referencedDeclaration":39274,"src":"22956:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":26507,"nodeType":"ArrayTypeName","src":"22956:8:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":26512,"mutability":"mutable","name":"tokenInfo","nameLocation":"23011:9:67","nodeType":"VariableDeclaration","scope":26611,"src":"22992:28:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo[]"},"typeName":{"baseType":{"id":26510,"nodeType":"UserDefinedTypeName","pathNode":{"id":26509,"name":"TokenInfo","nameLocations":["22992:9:67"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"22992:9:67"},"referencedDeclaration":4486,"src":"22992:9:67","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":26511,"nodeType":"ArrayTypeName","src":"22992:11:67","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}},"visibility":"internal"},{"constant":false,"id":26515,"mutability":"mutable","name":"balancesRaw","nameLocation":"23051:11:67","nodeType":"VariableDeclaration","scope":26611,"src":"23034:28:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26513,"name":"uint256","nodeType":"ElementaryTypeName","src":"23034:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26514,"nodeType":"ArrayTypeName","src":"23034:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":26518,"mutability":"mutable","name":"lastBalancesLiveScaled18","nameLocation":"23093:24:67","nodeType":"VariableDeclaration","scope":26611,"src":"23076:41:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26516,"name":"uint256","nodeType":"ElementaryTypeName","src":"23076:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26517,"nodeType":"ArrayTypeName","src":"23076:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22942:185:67"},"scope":27639,"src":"22779:1117:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3977],"body":{"id":26632,"nodeType":"Block","src":"24107:85:67","statements":[{"expression":{"expression":{"arguments":[{"id":26626,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26614,"src":"24138:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":26627,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"24144:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":26628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24153:10:67","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"24144:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":26625,"name":"_loadPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24875,"src":"24124:13:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) view returns (struct PoolData memory)"}},"id":26629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24124:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26630,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24165:20:67","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"24124:61:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":26624,"id":26631,"nodeType":"Return","src":"24117:68:67"}]},"documentation":{"id":26612,"nodeType":"StructuredDocumentation","src":"23902:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"535cfd8a","id":26633,"implemented":true,"kind":"function","modifiers":[{"id":26617,"kind":"modifierInvocation","modifierName":{"id":26616,"name":"onlyVaultDelegateCall","nameLocations":["24012:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"24012:21:67"},"nodeType":"ModifierInvocation","src":"24012:21:67"},{"arguments":[{"id":26619,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26614,"src":"24053:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26620,"kind":"modifierInvocation","modifierName":{"id":26618,"name":"withRegisteredPool","nameLocations":["24034:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"24034:18:67"},"nodeType":"ModifierInvocation","src":"24034:24:67"}],"name":"getCurrentLiveBalances","nameLocation":"23947:22:67","nodeType":"FunctionDefinition","parameters":{"id":26615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26614,"mutability":"mutable","name":"pool","nameLocation":"23987:4:67","nodeType":"VariableDeclaration","scope":26633,"src":"23979:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26613,"name":"address","nodeType":"ElementaryTypeName","src":"23979:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23969:28:67"},"returnParameters":{"id":26624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26623,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"24085:20:67","nodeType":"VariableDeclaration","scope":26633,"src":"24068:37:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":26621,"name":"uint256","nodeType":"ElementaryTypeName","src":"24068:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26622,"nodeType":"ArrayTypeName","src":"24068:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"24067:39:67"},"scope":27639,"src":"23938:254:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3986],"body":{"id":26699,"nodeType":"Block","src":"24374:1258:67","statements":[{"assignments":[26649],"declarations":[{"constant":false,"id":26649,"mutability":"mutable","name":"config","nameLocation":"24399:6:67","nodeType":"VariableDeclaration","scope":26699,"src":"24384:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":26648,"nodeType":"UserDefinedTypeName","pathNode":{"id":26647,"name":"PoolConfigBits","nameLocations":["24384:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"24384:14:67"},"referencedDeclaration":4364,"src":"24384:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":26653,"initialValue":{"baseExpression":{"id":26650,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"24408:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":26652,"indexExpression":{"id":26651,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26636,"src":"24424:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24408:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"24384:45:67"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26655,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"24506:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24513:16:67","memberName":"isPoolRegistered","nodeType":"MemberAccess","referencedDeclaration":29176,"src":"24506:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24506:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26658,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"24568:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24575:17:67","memberName":"isPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":29219,"src":"24568:24:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24568:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26661,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"24626:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24633:12:67","memberName":"isPoolPaused","nodeType":"MemberAccess","referencedDeclaration":29262,"src":"24626:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24626:21:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26664,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"24687:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24694:20:67","memberName":"isPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":29305,"src":"24687:27:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24687:29:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26667,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"24759:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24766:26:67","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"24759:33:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":26669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24759:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26670,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"24840:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24847:29:67","memberName":"getAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29661,"src":"24840:36:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":26672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24840:38:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26673,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"24925:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24932:30:67","memberName":"getAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29722,"src":"24925:37:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":26675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24925:39:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26676,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"25001:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25008:20:67","memberName":"getTokenDecimalDiffs","nodeType":"MemberAccess","referencedDeclaration":29785,"src":"25001:27:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint40_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint40)"}},"id":26678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25001:29:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26679,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"25068:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25075:21:67","memberName":"getPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":29904,"src":"25068:28:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint32)"}},"id":26681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25068:30:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":26686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"25319:37:67","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26683,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"25320:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25327:27:67","memberName":"supportsUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":29349,"src":"25320:34:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25320:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26687,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"25404:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25411:26:67","memberName":"supportsAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29411,"src":"25404:33:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25404:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26690,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"25490:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25497:29:67","memberName":"supportsRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29473,"src":"25490:36:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25490:38:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":26693,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26649,"src":"25566:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25573:16:67","memberName":"supportsDonation","nodeType":"MemberAccess","referencedDeclaration":29535,"src":"25566:23:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":26695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25566:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":26682,"name":"LiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"25137:19:67","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_LiquidityManagement_$4362_storage_ptr_$","typeString":"type(struct LiquidityManagement storage pointer)"}},"id":26696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["25291:26:67","25378:24:67","25461:27:67","25550:14:67"],"names":["disableUnbalancedLiquidity","enableAddLiquidityCustom","enableRemoveLiquidityCustom","enableDonation"],"nodeType":"FunctionCall","src":"25137:473:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint40","typeString":"uint40"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"id":26654,"name":"PoolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4387,"src":"24459:10:67","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_PoolConfig_$4387_storage_ptr_$","typeString":"type(struct PoolConfig storage pointer)"}},"id":26697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["24488:16:67","24549:17:67","24612:12:67","24665:20:67","24734:23:67","24812:26:67","24896:27:67","24982:17:67","25048:18:67","25116:19:67"],"names":["isPoolRegistered","isPoolInitialized","isPoolPaused","isPoolInRecoveryMode","staticSwapFeePercentage","aggregateSwapFeePercentage","aggregateYieldFeePercentage","tokenDecimalDiffs","pauseWindowEndTime","liquidityManagement"],"nodeType":"FunctionCall","src":"24459:1166:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"functionReturnParameters":26646,"id":26698,"nodeType":"Return","src":"24440:1185:67"}]},"documentation":{"id":26634,"nodeType":"StructuredDocumentation","src":"24198:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"f29486a1","id":26700,"implemented":true,"kind":"function","modifiers":[{"id":26639,"kind":"modifierInvocation","modifierName":{"id":26638,"name":"onlyVaultDelegateCall","nameLocations":["24299:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"24299:21:67"},"nodeType":"ModifierInvocation","src":"24299:21:67"},{"arguments":[{"id":26641,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26636,"src":"24340:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26642,"kind":"modifierInvocation","modifierName":{"id":26640,"name":"withRegisteredPool","nameLocations":["24321:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"24321:18:67"},"nodeType":"ModifierInvocation","src":"24321:24:67"}],"name":"getPoolConfig","nameLocation":"24243:13:67","nodeType":"FunctionDefinition","parameters":{"id":26637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26636,"mutability":"mutable","name":"pool","nameLocation":"24274:4:67","nodeType":"VariableDeclaration","scope":26700,"src":"24266:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26635,"name":"address","nodeType":"ElementaryTypeName","src":"24266:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24256:28:67"},"returnParameters":{"id":26646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26645,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26700,"src":"24355:17:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig"},"typeName":{"id":26644,"nodeType":"UserDefinedTypeName","pathNode":{"id":26643,"name":"PoolConfig","nameLocations":["24355:10:67"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"24355:10:67"},"referencedDeclaration":4387,"src":"24355:10:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_storage_ptr","typeString":"struct PoolConfig"}},"visibility":"internal"}],"src":"24354:19:67"},"scope":27639,"src":"24234:1398:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3995],"body":{"id":26723,"nodeType":"Block","src":"25816:82:67","statements":[{"expression":{"arguments":[{"baseExpression":{"id":26718,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"25869:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":26720,"indexExpression":{"id":26719,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26703,"src":"25885:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25869:21:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"baseExpression":{"id":26714,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"25833:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":26716,"indexExpression":{"id":26715,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26703,"src":"25849:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25833:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":26717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25855:13:67","memberName":"toHooksConfig","nodeType":"MemberAccess","referencedDeclaration":28422,"src":"25833:35:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_contract$_IHooks_$1887_$returns$_t_struct$_HooksConfig_$4433_memory_ptr_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,contract IHooks) pure returns (struct HooksConfig memory)"}},"id":26721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25833:58:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"functionReturnParameters":26713,"id":26722,"nodeType":"Return","src":"25826:65:67"}]},"documentation":{"id":26701,"nodeType":"StructuredDocumentation","src":"25638:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"ce8630d4","id":26724,"implemented":true,"kind":"function","modifiers":[{"id":26706,"kind":"modifierInvocation","modifierName":{"id":26705,"name":"onlyVaultDelegateCall","nameLocations":["25740:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"25740:21:67"},"nodeType":"ModifierInvocation","src":"25740:21:67"},{"arguments":[{"id":26708,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26703,"src":"25781:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26709,"kind":"modifierInvocation","modifierName":{"id":26707,"name":"withRegisteredPool","nameLocations":["25762:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"25762:18:67"},"nodeType":"ModifierInvocation","src":"25762:24:67"}],"name":"getHooksConfig","nameLocation":"25683:14:67","nodeType":"FunctionDefinition","parameters":{"id":26704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26703,"mutability":"mutable","name":"pool","nameLocation":"25715:4:67","nodeType":"VariableDeclaration","scope":26724,"src":"25707:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26702,"name":"address","nodeType":"ElementaryTypeName","src":"25707:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25697:28:67"},"returnParameters":{"id":26713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26724,"src":"25796:18:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig"},"typeName":{"id":26711,"nodeType":"UserDefinedTypeName","pathNode":{"id":26710,"name":"HooksConfig","nameLocations":["25796:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":4433,"src":"25796:11:67"},"referencedDeclaration":4433,"src":"25796:11:67","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_storage_ptr","typeString":"struct HooksConfig"}},"visibility":"internal"}],"src":"25795:20:67"},"scope":27639,"src":"25674:224:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4003],"body":{"id":26765,"nodeType":"Block","src":"26073:253:67","statements":[{"assignments":[26739],"declarations":[{"constant":false,"id":26739,"mutability":"mutable","name":"poolData","nameLocation":"26099:8:67","nodeType":"VariableDeclaration","scope":26765,"src":"26083:24:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":26738,"nodeType":"UserDefinedTypeName","pathNode":{"id":26737,"name":"PoolData","nameLocations":["26083:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"26083:8:67"},"referencedDeclaration":4511,"src":"26083:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"id":26745,"initialValue":{"arguments":[{"id":26741,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26727,"src":"26124:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":26742,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"26130:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":26743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26139:10:67","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"26130:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":26740,"name":"_loadPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24875,"src":"26110:13:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) view returns (struct PoolData memory)"}},"id":26744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26110:40:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"nodeType":"VariableDeclarationStatement","src":"26083:67:67"},{"assignments":[26747],"declarations":[{"constant":false,"id":26747,"mutability":"mutable","name":"invariant","nameLocation":"26168:9:67","nodeType":"VariableDeclaration","scope":26765,"src":"26160:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26746,"name":"uint256","nodeType":"ElementaryTypeName","src":"26160:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":26757,"initialValue":{"arguments":[{"expression":{"id":26752,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26739,"src":"26213:8:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":26753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26222:20:67","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"26213:29:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":26754,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"26244:8:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":26755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26253:10:67","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"26244:19:67","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"arguments":[{"id":26749,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26727,"src":"26190:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26748,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"26180:9:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":26750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26180:15:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}},"id":26751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26196:16:67","memberName":"computeInvariant","nodeType":"MemberAccess","referencedDeclaration":1343,"src":"26180:32:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) view external returns (uint256)"}},"id":26756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26180:84:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26160:104:67"},{"expression":{"arguments":[{"arguments":[{"id":26761,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26727,"src":"26313:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26760,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"26300:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":26762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26300:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":26758,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26747,"src":"26282:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":26759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26292:7:67","memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"26282:17:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":26763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26282:37:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":26736,"id":26764,"nodeType":"Return","src":"26275:44:67"}]},"documentation":{"id":26725,"nodeType":"StructuredDocumentation","src":"25904:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"4f037ee7","id":26766,"implemented":true,"kind":"function","modifiers":[{"id":26730,"kind":"modifierInvocation","modifierName":{"id":26729,"name":"onlyVaultDelegateCall","nameLocations":["26002:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"26002:21:67"},"nodeType":"ModifierInvocation","src":"26002:21:67"},{"arguments":[{"id":26732,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26727,"src":"26044:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26733,"kind":"modifierInvocation","modifierName":{"id":26731,"name":"withInitializedPool","nameLocations":["26024:19:67"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"26024:19:67"},"nodeType":"ModifierInvocation","src":"26024:25:67"}],"name":"getBptRate","nameLocation":"25949:10:67","nodeType":"FunctionDefinition","parameters":{"id":26728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26727,"mutability":"mutable","name":"pool","nameLocation":"25977:4:67","nodeType":"VariableDeclaration","scope":26766,"src":"25969:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26726,"name":"address","nodeType":"ElementaryTypeName","src":"25969:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25959:28:67"},"returnParameters":{"id":26736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26735,"mutability":"mutable","name":"rate","nameLocation":"26067:4:67","nodeType":"VariableDeclaration","scope":26766,"src":"26059:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26734,"name":"uint256","nodeType":"ElementaryTypeName","src":"26059:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26058:14:67"},"scope":27639,"src":"25940:386:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4011],"body":{"id":26780,"nodeType":"Block","src":"26683:43:67","statements":[{"expression":{"arguments":[{"id":26777,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26769,"src":"26713:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26776,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"26700:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":26778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26700:19:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":26775,"id":26779,"nodeType":"Return","src":"26693:26:67"}]},"documentation":{"id":26767,"nodeType":"StructuredDocumentation","src":"26557:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"e4dc2aa4","id":26781,"implemented":true,"kind":"function","modifiers":[{"id":26772,"kind":"modifierInvocation","modifierName":{"id":26771,"name":"onlyVaultDelegateCall","nameLocations":["26643:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"26643:21:67"},"nodeType":"ModifierInvocation","src":"26643:21:67"}],"name":"totalSupply","nameLocation":"26602:11:67","nodeType":"FunctionDefinition","parameters":{"id":26770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26769,"mutability":"mutable","name":"token","nameLocation":"26622:5:67","nodeType":"VariableDeclaration","scope":26781,"src":"26614:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26768,"name":"address","nodeType":"ElementaryTypeName","src":"26614:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26613:15:67"},"returnParameters":{"id":26775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26774,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26781,"src":"26674:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26773,"name":"uint256","nodeType":"ElementaryTypeName","src":"26674:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26673:9:67"},"scope":27639,"src":"26593:133:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4021],"body":{"id":26798,"nodeType":"Block","src":"26873:50:67","statements":[{"expression":{"arguments":[{"id":26794,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26784,"src":"26901:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26795,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26786,"src":"26908:7:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":26793,"name":"_balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38321,"src":"26890:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":26796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26890:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":26792,"id":26797,"nodeType":"Return","src":"26883:33:67"}]},"documentation":{"id":26782,"nodeType":"StructuredDocumentation","src":"26732:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"f7888aec","id":26799,"implemented":true,"kind":"function","modifiers":[{"id":26789,"kind":"modifierInvocation","modifierName":{"id":26788,"name":"onlyVaultDelegateCall","nameLocations":["26833:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"26833:21:67"},"nodeType":"ModifierInvocation","src":"26833:21:67"}],"name":"balanceOf","nameLocation":"26777:9:67","nodeType":"FunctionDefinition","parameters":{"id":26787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26784,"mutability":"mutable","name":"token","nameLocation":"26795:5:67","nodeType":"VariableDeclaration","scope":26799,"src":"26787:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26783,"name":"address","nodeType":"ElementaryTypeName","src":"26787:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26786,"mutability":"mutable","name":"account","nameLocation":"26810:7:67","nodeType":"VariableDeclaration","scope":26799,"src":"26802:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26785,"name":"address","nodeType":"ElementaryTypeName","src":"26802:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26786:32:67"},"returnParameters":{"id":26792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26799,"src":"26864:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26790,"name":"uint256","nodeType":"ElementaryTypeName","src":"26864:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26863:9:67"},"scope":27639,"src":"26768:155:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4033],"body":{"id":26819,"nodeType":"Block","src":"27115:57:67","statements":[{"expression":{"arguments":[{"id":26814,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26802,"src":"27143:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26815,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26804,"src":"27150:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26816,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26806,"src":"27157:7:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":26813,"name":"_allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38353,"src":"27132:10:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256)"}},"id":26817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27132:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":26812,"id":26818,"nodeType":"Return","src":"27125:40:67"}]},"documentation":{"id":26800,"nodeType":"StructuredDocumentation","src":"26929:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"927da105","id":26820,"implemented":true,"kind":"function","modifiers":[{"id":26809,"kind":"modifierInvocation","modifierName":{"id":26808,"name":"onlyVaultDelegateCall","nameLocations":["27075:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"27075:21:67"},"nodeType":"ModifierInvocation","src":"27075:21:67"}],"name":"allowance","nameLocation":"26974:9:67","nodeType":"FunctionDefinition","parameters":{"id":26807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26802,"mutability":"mutable","name":"token","nameLocation":"27001:5:67","nodeType":"VariableDeclaration","scope":26820,"src":"26993:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26801,"name":"address","nodeType":"ElementaryTypeName","src":"26993:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26804,"mutability":"mutable","name":"owner","nameLocation":"27024:5:67","nodeType":"VariableDeclaration","scope":26820,"src":"27016:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26803,"name":"address","nodeType":"ElementaryTypeName","src":"27016:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26806,"mutability":"mutable","name":"spender","nameLocation":"27047:7:67","nodeType":"VariableDeclaration","scope":26820,"src":"27039:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26805,"name":"address","nodeType":"ElementaryTypeName","src":"27039:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26983:77:67"},"returnParameters":{"id":26812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26820,"src":"27106:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26810,"name":"uint256","nodeType":"ElementaryTypeName","src":"27106:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27105:9:67"},"scope":27639,"src":"26965:207:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4045],"body":{"id":26844,"nodeType":"Block","src":"27325:82:67","statements":[{"expression":{"arguments":[{"expression":{"id":26835,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"27344:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":26836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27348:6:67","memberName":"sender","nodeType":"MemberAccess","src":"27344:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26837,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26823,"src":"27356:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26838,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26825,"src":"27363:7:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":26839,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26827,"src":"27372:6:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":26834,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38777,"src":"27335:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":26840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27335:44:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":26841,"nodeType":"ExpressionStatement","src":"27335:44:67"},{"expression":{"hexValue":"74727565","id":26842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27396:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":26833,"id":26843,"nodeType":"Return","src":"27389:11:67"}]},"documentation":{"id":26821,"nodeType":"StructuredDocumentation","src":"27178:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"e1f21c67","id":26845,"implemented":true,"kind":"function","modifiers":[{"id":26830,"kind":"modifierInvocation","modifierName":{"id":26829,"name":"onlyVaultDelegateCall","nameLocations":["27288:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"27288:21:67"},"nodeType":"ModifierInvocation","src":"27288:21:67"}],"name":"approve","nameLocation":"27223:7:67","nodeType":"FunctionDefinition","parameters":{"id":26828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26823,"mutability":"mutable","name":"owner","nameLocation":"27239:5:67","nodeType":"VariableDeclaration","scope":26845,"src":"27231:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26822,"name":"address","nodeType":"ElementaryTypeName","src":"27231:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26825,"mutability":"mutable","name":"spender","nameLocation":"27254:7:67","nodeType":"VariableDeclaration","scope":26845,"src":"27246:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26824,"name":"address","nodeType":"ElementaryTypeName","src":"27246:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26827,"mutability":"mutable","name":"amount","nameLocation":"27271:6:67","nodeType":"VariableDeclaration","scope":26845,"src":"27263:14:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26826,"name":"uint256","nodeType":"ElementaryTypeName","src":"27263:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27230:48:67"},"returnParameters":{"id":26833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26845,"src":"27319:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26831,"name":"bool","nodeType":"ElementaryTypeName","src":"27319:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"27318:6:67"},"scope":27639,"src":"27214:193:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4053],"body":{"id":26862,"nodeType":"Block","src":"27782:43:67","statements":[{"expression":{"arguments":[{"id":26859,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26848,"src":"27813:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26858,"name":"_isPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24586,"src":"27799:13:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":26860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27799:19:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":26857,"id":26861,"nodeType":"Return","src":"27792:26:67"}]},"documentation":{"id":26846,"nodeType":"StructuredDocumentation","src":"27634:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"6c9bc732","id":26863,"implemented":true,"kind":"function","modifiers":[{"id":26851,"kind":"modifierInvocation","modifierName":{"id":26850,"name":"onlyVaultDelegateCall","nameLocations":["27720:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"27720:21:67"},"nodeType":"ModifierInvocation","src":"27720:21:67"},{"arguments":[{"id":26853,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26848,"src":"27761:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26854,"kind":"modifierInvocation","modifierName":{"id":26852,"name":"withRegisteredPool","nameLocations":["27742:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"27742:18:67"},"nodeType":"ModifierInvocation","src":"27742:24:67"}],"name":"isPoolPaused","nameLocation":"27679:12:67","nodeType":"FunctionDefinition","parameters":{"id":26849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26848,"mutability":"mutable","name":"pool","nameLocation":"27700:4:67","nodeType":"VariableDeclaration","scope":26863,"src":"27692:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26847,"name":"address","nodeType":"ElementaryTypeName","src":"27692:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27691:14:67"},"returnParameters":{"id":26857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26863,"src":"27776:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26855,"name":"bool","nodeType":"ElementaryTypeName","src":"27776:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"27775:6:67"},"scope":27639,"src":"27670:155:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4067],"body":{"id":26901,"nodeType":"Block","src":"28024:276:67","statements":[{"assignments":[26883,26885],"declarations":[{"constant":false,"id":26883,"mutability":"mutable","name":"paused","nameLocation":"28040:6:67","nodeType":"VariableDeclaration","scope":26901,"src":"28035:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26882,"name":"bool","nodeType":"ElementaryTypeName","src":"28035:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":26885,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"28055:18:67","nodeType":"VariableDeclaration","scope":26901,"src":"28048:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":26884,"name":"uint32","nodeType":"ElementaryTypeName","src":"28048:6:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":26889,"initialValue":{"arguments":[{"id":26887,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26866,"src":"28097:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":26886,"name":"_getPoolPausedState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24627,"src":"28077:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$_t_uint32_$","typeString":"function (address) view returns (bool,uint32)"}},"id":26888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28077:25:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"28034:68:67"},{"expression":{"components":[{"id":26890,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26883,"src":"28134:6:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":26891,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26885,"src":"28154:18:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":26894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":26892,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26885,"src":"28186:18:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":26893,"name":"_vaultBufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27808,"src":"28207:26:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"28186:47:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"baseExpression":{"id":26895,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"28247:17:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":26897,"indexExpression":{"id":26896,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26866,"src":"28265:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28247:23:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"id":26898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28271:12:67","memberName":"pauseManager","nodeType":"MemberAccess","referencedDeclaration":4454,"src":"28247:36:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26899,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28120:173:67","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$_t_uint32_$_t_address_$","typeString":"tuple(bool,uint32,uint32,address)"}},"functionReturnParameters":26881,"id":26900,"nodeType":"Return","src":"28113:180:67"}]},"documentation":{"id":26864,"nodeType":"StructuredDocumentation","src":"27831:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"15e32046","id":26902,"implemented":true,"kind":"function","modifiers":[{"id":26869,"kind":"modifierInvocation","modifierName":{"id":26868,"name":"onlyVaultDelegateCall","nameLocations":["27937:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"27937:21:67"},"nodeType":"ModifierInvocation","src":"27937:21:67"},{"arguments":[{"id":26871,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26866,"src":"27978:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26872,"kind":"modifierInvocation","modifierName":{"id":26870,"name":"withRegisteredPool","nameLocations":["27959:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"27959:18:67"},"nodeType":"ModifierInvocation","src":"27959:24:67"}],"name":"getPoolPausedState","nameLocation":"27876:18:67","nodeType":"FunctionDefinition","parameters":{"id":26867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26866,"mutability":"mutable","name":"pool","nameLocation":"27912:4:67","nodeType":"VariableDeclaration","scope":26902,"src":"27904:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26865,"name":"address","nodeType":"ElementaryTypeName","src":"27904:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27894:28:67"},"returnParameters":{"id":26881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26902,"src":"27993:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26873,"name":"bool","nodeType":"ElementaryTypeName","src":"27993:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":26876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26902,"src":"27999:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":26875,"name":"uint32","nodeType":"ElementaryTypeName","src":"27999:6:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":26878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26902,"src":"28007:6:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":26877,"name":"uint32","nodeType":"ElementaryTypeName","src":"28007:6:67","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":26880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26902,"src":"28015:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26879,"name":"address","nodeType":"ElementaryTypeName","src":"28015:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27992:31:67"},"scope":27639,"src":"27867:433:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4076],"body":{"id":26922,"nodeType":"Block","src":"28674:65:67","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":26920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":26913,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"28691:13:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":26915,"indexExpression":{"id":26914,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26906,"src":"28705:12:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28691:27:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":26918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28730:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":26917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28722:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":26916,"name":"address","nodeType":"ElementaryTypeName","src":"28722:7:67","typeDescriptions":{}}},"id":26919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28722:10:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"28691:41:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":26912,"id":26921,"nodeType":"Return","src":"28684:48:67"}]},"documentation":{"id":26903,"nodeType":"StructuredDocumentation","src":"28528:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"6844846b","id":26923,"implemented":true,"kind":"function","modifiers":[{"id":26909,"kind":"modifierInvocation","modifierName":{"id":26908,"name":"onlyVaultDelegateCall","nameLocations":["28637:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"28637:21:67"},"nodeType":"ModifierInvocation","src":"28637:21:67"}],"name":"isERC4626BufferInitialized","nameLocation":"28573:26:67","nodeType":"FunctionDefinition","parameters":{"id":26907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26906,"mutability":"mutable","name":"wrappedToken","nameLocation":"28609:12:67","nodeType":"VariableDeclaration","scope":26923,"src":"28600:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":26905,"nodeType":"UserDefinedTypeName","pathNode":{"id":26904,"name":"IERC4626","nameLocations":["28600:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"28600:8:67"},"referencedDeclaration":38998,"src":"28600:8:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"28599:23:67"},"returnParameters":{"id":26912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26923,"src":"28668:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":26910,"name":"bool","nodeType":"ElementaryTypeName","src":"28668:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28667:6:67"},"scope":27639,"src":"28564:175:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4085],"body":{"id":26938,"nodeType":"Block","src":"28895:51:67","statements":[{"expression":{"baseExpression":{"id":26934,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"28912:13:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":26936,"indexExpression":{"id":26935,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26927,"src":"28926:12:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28912:27:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":26933,"id":26937,"nodeType":"Return","src":"28905:34:67"}]},"documentation":{"id":26924,"nodeType":"StructuredDocumentation","src":"28745:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"4afbaf5a","id":26939,"implemented":true,"kind":"function","modifiers":[{"id":26930,"kind":"modifierInvocation","modifierName":{"id":26929,"name":"onlyVaultDelegateCall","nameLocations":["28849:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"28849:21:67"},"nodeType":"ModifierInvocation","src":"28849:21:67"}],"name":"getERC4626BufferAsset","nameLocation":"28790:21:67","nodeType":"FunctionDefinition","parameters":{"id":26928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26927,"mutability":"mutable","name":"wrappedToken","nameLocation":"28821:12:67","nodeType":"VariableDeclaration","scope":26939,"src":"28812:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":26926,"nodeType":"UserDefinedTypeName","pathNode":{"id":26925,"name":"IERC4626","nameLocations":["28812:8:67"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"28812:8:67"},"referencedDeclaration":38998,"src":"28812:8:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"28811:23:67"},"returnParameters":{"id":26933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26932,"mutability":"mutable","name":"asset","nameLocation":"28888:5:67","nodeType":"VariableDeclaration","scope":26939,"src":"28880:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26931,"name":"address","nodeType":"ElementaryTypeName","src":"28880:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28879:15:67"},"scope":27639,"src":"28781:165:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4096],"body":{"id":26963,"nodeType":"Block","src":"29676:73:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"baseExpression":{"id":26955,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"29693:20:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":26957,"indexExpression":{"id":26956,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26942,"src":"29714:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29693:26:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":26959,"indexExpression":{"id":26958,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26945,"src":"29720:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29693:33:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":26960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29727:13:67","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"29693:47:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":26961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29693:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":26954,"id":26962,"nodeType":"Return","src":"29686:56:67"}]},"documentation":{"id":26940,"nodeType":"StructuredDocumentation","src":"29476:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"85e0b999","id":26964,"implemented":true,"kind":"function","modifiers":[{"id":26948,"kind":"modifierInvocation","modifierName":{"id":26947,"name":"onlyVaultDelegateCall","nameLocations":["29611:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"29611:21:67"},"nodeType":"ModifierInvocation","src":"29611:21:67"},{"arguments":[{"id":26950,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26942,"src":"29652:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26951,"kind":"modifierInvocation","modifierName":{"id":26949,"name":"withRegisteredPool","nameLocations":["29633:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"29633:18:67"},"nodeType":"ModifierInvocation","src":"29633:24:67"}],"name":"getAggregateSwapFeeAmount","nameLocation":"29521:25:67","nodeType":"FunctionDefinition","parameters":{"id":26946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26942,"mutability":"mutable","name":"pool","nameLocation":"29564:4:67","nodeType":"VariableDeclaration","scope":26964,"src":"29556:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26941,"name":"address","nodeType":"ElementaryTypeName","src":"29556:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26945,"mutability":"mutable","name":"token","nameLocation":"29585:5:67","nodeType":"VariableDeclaration","scope":26964,"src":"29578:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":26944,"nodeType":"UserDefinedTypeName","pathNode":{"id":26943,"name":"IERC20","nameLocations":["29578:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"29578:6:67"},"referencedDeclaration":39274,"src":"29578:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"29546:50:67"},"returnParameters":{"id":26954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26964,"src":"29667:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26952,"name":"uint256","nodeType":"ElementaryTypeName","src":"29667:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29666:9:67"},"scope":27639,"src":"29512:237:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4107],"body":{"id":26988,"nodeType":"Block","src":"29956:77:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"baseExpression":{"id":26980,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"29973:20:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":26982,"indexExpression":{"id":26981,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26967,"src":"29994:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29973:26:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":26984,"indexExpression":{"id":26983,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26970,"src":"30000:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29973:33:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":26985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30007:17:67","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"29973:51:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":26986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29973:53:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":26979,"id":26987,"nodeType":"Return","src":"29966:60:67"}]},"documentation":{"id":26965,"nodeType":"StructuredDocumentation","src":"29755:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"00fdfa13","id":26989,"implemented":true,"kind":"function","modifiers":[{"id":26973,"kind":"modifierInvocation","modifierName":{"id":26972,"name":"onlyVaultDelegateCall","nameLocations":["29891:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"29891:21:67"},"nodeType":"ModifierInvocation","src":"29891:21:67"},{"arguments":[{"id":26975,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26967,"src":"29932:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26976,"kind":"modifierInvocation","modifierName":{"id":26974,"name":"withRegisteredPool","nameLocations":["29913:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"29913:18:67"},"nodeType":"ModifierInvocation","src":"29913:24:67"}],"name":"getAggregateYieldFeeAmount","nameLocation":"29800:26:67","nodeType":"FunctionDefinition","parameters":{"id":26971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26967,"mutability":"mutable","name":"pool","nameLocation":"29844:4:67","nodeType":"VariableDeclaration","scope":26989,"src":"29836:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26966,"name":"address","nodeType":"ElementaryTypeName","src":"29836:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26970,"mutability":"mutable","name":"token","nameLocation":"29865:5:67","nodeType":"VariableDeclaration","scope":26989,"src":"29858:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":26969,"nodeType":"UserDefinedTypeName","pathNode":{"id":26968,"name":"IERC20","nameLocations":["29858:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"29858:6:67"},"referencedDeclaration":39274,"src":"29858:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"29826:50:67"},"returnParameters":{"id":26979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26989,"src":"29947:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26977,"name":"uint256","nodeType":"ElementaryTypeName","src":"29947:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29946:9:67"},"scope":27639,"src":"29791:242:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4115],"body":{"id":27013,"nodeType":"Block","src":"30218:114:67","statements":[{"assignments":[27004],"declarations":[{"constant":false,"id":27004,"mutability":"mutable","name":"config","nameLocation":"30243:6:67","nodeType":"VariableDeclaration","scope":27013,"src":"30228:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":27003,"nodeType":"UserDefinedTypeName","pathNode":{"id":27002,"name":"PoolConfigBits","nameLocations":["30228:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"30228:14:67"},"referencedDeclaration":4364,"src":"30228:14:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":27008,"initialValue":{"baseExpression":{"id":27005,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"30252:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":27007,"indexExpression":{"id":27006,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26992,"src":"30268:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30252:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"30228:45:67"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27009,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27004,"src":"30290:6:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":27010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30297:26:67","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"30290:33:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":27011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30290:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27001,"id":27012,"nodeType":"Return","src":"30283:42:67"}]},"documentation":{"id":26990,"nodeType":"StructuredDocumentation","src":"30039:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"b45090f9","id":27014,"implemented":true,"kind":"function","modifiers":[{"id":26995,"kind":"modifierInvocation","modifierName":{"id":26994,"name":"onlyVaultDelegateCall","nameLocations":["30153:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"30153:21:67"},"nodeType":"ModifierInvocation","src":"30153:21:67"},{"arguments":[{"id":26997,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26992,"src":"30194:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":26998,"kind":"modifierInvocation","modifierName":{"id":26996,"name":"withRegisteredPool","nameLocations":["30175:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"30175:18:67"},"nodeType":"ModifierInvocation","src":"30175:24:67"}],"name":"getStaticSwapFeePercentage","nameLocation":"30084:26:67","nodeType":"FunctionDefinition","parameters":{"id":26993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":26992,"mutability":"mutable","name":"pool","nameLocation":"30128:4:67","nodeType":"VariableDeclaration","scope":27014,"src":"30120:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":26991,"name":"address","nodeType":"ElementaryTypeName","src":"30120:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30110:28:67"},"returnParameters":{"id":27001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27014,"src":"30209:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":26999,"name":"uint256","nodeType":"ElementaryTypeName","src":"30209:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30208:9:67"},"scope":27639,"src":"30075:257:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4124],"body":{"id":27032,"nodeType":"Block","src":"30526:47:67","statements":[{"expression":{"baseExpression":{"id":27028,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"30543:17:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":27030,"indexExpression":{"id":27029,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27017,"src":"30561:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30543:23:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"functionReturnParameters":27027,"id":27031,"nodeType":"Return","src":"30536:30:67"}]},"documentation":{"id":27015,"nodeType":"StructuredDocumentation","src":"30338:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"e9ddeb26","id":27033,"implemented":true,"kind":"function","modifiers":[{"id":27020,"kind":"modifierInvocation","modifierName":{"id":27019,"name":"onlyVaultDelegateCall","nameLocations":["30445:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"30445:21:67"},"nodeType":"ModifierInvocation","src":"30445:21:67"},{"arguments":[{"id":27022,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27017,"src":"30486:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27023,"kind":"modifierInvocation","modifierName":{"id":27021,"name":"withRegisteredPool","nameLocations":["30467:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"30467:18:67"},"nodeType":"ModifierInvocation","src":"30467:24:67"}],"name":"getPoolRoleAccounts","nameLocation":"30383:19:67","nodeType":"FunctionDefinition","parameters":{"id":27018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27017,"mutability":"mutable","name":"pool","nameLocation":"30420:4:67","nodeType":"VariableDeclaration","scope":27033,"src":"30412:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27016,"name":"address","nodeType":"ElementaryTypeName","src":"30412:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30402:28:67"},"returnParameters":{"id":27027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27026,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27033,"src":"30501:23:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":27025,"nodeType":"UserDefinedTypeName","pathNode":{"id":27024,"name":"PoolRoleAccounts","nameLocations":["30501:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"30501:16:67"},"referencedDeclaration":4459,"src":"30501:16:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"src":"30500:25:67"},"scope":27639,"src":"30374:199:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4135],"body":{"id":27063,"nodeType":"Block","src":"30831:251:67","statements":[{"expression":{"arguments":[{"id":27051,"name":"swapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27039,"src":"30922:10:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},{"id":27052,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27036,"src":"30950:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":27053,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"30972:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":27055,"indexExpression":{"id":27054,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27036,"src":"30988:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"30972:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":27056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30994:26:67","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"30972:48:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":27057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30972:50:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":27058,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"31040:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":27060,"indexExpression":{"id":27059,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27036,"src":"31056:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31040:21:67","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"expression":{"id":27049,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"30860:14:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_HooksConfigLib_$29013_$","typeString":"type(library HooksConfigLib)"}},"id":27050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30875:29:67","memberName":"callComputeDynamicSwapFeeHook","nodeType":"MemberAccess","referencedDeclaration":28472,"src":"30860:44:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolSwapParams_$4554_memory_ptr_$_t_address_$_t_uint256_$_t_contract$_IHooks_$1887_$returns$_t_uint256_$","typeString":"function (struct PoolSwapParams memory,address,uint256,contract IHooks) view returns (uint256)"}},"id":27061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:215:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":27048,"id":27062,"nodeType":"Return","src":"30841:234:67"}]},"documentation":{"id":27034,"nodeType":"StructuredDocumentation","src":"30579:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"4d472bdd","id":27064,"implemented":true,"kind":"function","modifiers":[{"id":27042,"kind":"modifierInvocation","modifierName":{"id":27041,"name":"onlyVaultDelegateCall","nameLocations":["30740:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"30740:21:67"},"nodeType":"ModifierInvocation","src":"30740:21:67"},{"arguments":[{"id":27044,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27036,"src":"30782:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27045,"kind":"modifierInvocation","modifierName":{"id":27043,"name":"withInitializedPool","nameLocations":["30762:19:67"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"30762:19:67"},"nodeType":"ModifierInvocation","src":"30762:25:67"}],"name":"computeDynamicSwapFeePercentage","nameLocation":"30624:31:67","nodeType":"FunctionDefinition","parameters":{"id":27040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27036,"mutability":"mutable","name":"pool","nameLocation":"30673:4:67","nodeType":"VariableDeclaration","scope":27064,"src":"30665:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27035,"name":"address","nodeType":"ElementaryTypeName","src":"30665:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27039,"mutability":"mutable","name":"swapParams","nameLocation":"30709:10:67","nodeType":"VariableDeclaration","scope":27064,"src":"30687:32:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":27038,"nodeType":"UserDefinedTypeName","pathNode":{"id":27037,"name":"PoolSwapParams","nameLocations":["30687:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"30687:14:67"},"referencedDeclaration":4554,"src":"30687:14:67","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"30655:70:67"},"returnParameters":{"id":27048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27047,"mutability":"mutable","name":"dynamicSwapFeePercentage","nameLocation":"30805:24:67","nodeType":"VariableDeclaration","scope":27064,"src":"30797:32:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27046,"name":"uint256","nodeType":"ElementaryTypeName","src":"30797:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30796:34:67"},"scope":27639,"src":"30615:467:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4142],"body":{"id":27075,"nodeType":"Block","src":"31229:46:67","statements":[{"expression":{"id":27073,"name":"_protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27826,"src":"31246:22:67","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"functionReturnParameters":27072,"id":27074,"nodeType":"Return","src":"31239:29:67"}]},"documentation":{"id":27065,"nodeType":"StructuredDocumentation","src":"31088:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"85f2dbd4","id":27076,"implemented":true,"kind":"function","modifiers":[{"id":27068,"kind":"modifierInvocation","modifierName":{"id":27067,"name":"onlyVaultDelegateCall","nameLocations":["31174:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"31174:21:67"},"nodeType":"ModifierInvocation","src":"31174:21:67"}],"name":"getProtocolFeeController","nameLocation":"31133:24:67","nodeType":"FunctionDefinition","parameters":{"id":27066,"nodeType":"ParameterList","parameters":[],"src":"31157:2:67"},"returnParameters":{"id":27072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27076,"src":"31205:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":27070,"nodeType":"UserDefinedTypeName","pathNode":{"id":27069,"name":"IProtocolFeeController","nameLocations":["31205:22:67"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"31205:22:67"},"referencedDeclaration":2230,"src":"31205:22:67","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"}],"src":"31204:24:67"},"scope":27639,"src":"31124:151:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4150],"body":{"id":27093,"nodeType":"Block","src":"31673:51:67","statements":[{"expression":{"arguments":[{"id":27090,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27079,"src":"31712:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":27089,"name":"_isPoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25128,"src":"31690:21:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":27091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31690:27:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":27088,"id":27092,"nodeType":"Return","src":"31683:34:67"}]},"documentation":{"id":27077,"nodeType":"StructuredDocumentation","src":"31503:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"be7d628a","id":27094,"implemented":true,"kind":"function","modifiers":[{"id":27082,"kind":"modifierInvocation","modifierName":{"id":27081,"name":"onlyVaultDelegateCall","nameLocations":["31611:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"31611:21:67"},"nodeType":"ModifierInvocation","src":"31611:21:67"},{"arguments":[{"id":27084,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27079,"src":"31652:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27085,"kind":"modifierInvocation","modifierName":{"id":27083,"name":"withRegisteredPool","nameLocations":["31633:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"31633:18:67"},"nodeType":"ModifierInvocation","src":"31633:24:67"}],"name":"isPoolInRecoveryMode","nameLocation":"31548:20:67","nodeType":"FunctionDefinition","parameters":{"id":27080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27079,"mutability":"mutable","name":"pool","nameLocation":"31586:4:67","nodeType":"VariableDeclaration","scope":27094,"src":"31578:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27078,"name":"address","nodeType":"ElementaryTypeName","src":"31578:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31568:28:67"},"returnParameters":{"id":27088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27094,"src":"31667:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27086,"name":"bool","nodeType":"ElementaryTypeName","src":"31667:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"31666:6:67"},"scope":27639,"src":"31539:185:67","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"VaultExtension.RecoveryLocals","id":27111,"members":[{"constant":false,"id":27098,"mutability":"mutable","name":"tokens","nameLocation":"31810:6:67","nodeType":"VariableDeclaration","scope":27111,"src":"31801:15:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":27096,"nodeType":"UserDefinedTypeName","pathNode":{"id":27095,"name":"IERC20","nameLocations":["31801:6:67"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"31801:6:67"},"referencedDeclaration":39274,"src":"31801:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":27097,"nodeType":"ArrayTypeName","src":"31801:8:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":27100,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"31834:17:67","nodeType":"VariableDeclaration","scope":27111,"src":"31826:25:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27099,"name":"uint256","nodeType":"ElementaryTypeName","src":"31826:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27102,"mutability":"mutable","name":"numTokens","nameLocation":"31869:9:67","nodeType":"VariableDeclaration","scope":27111,"src":"31861:17:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27101,"name":"uint256","nodeType":"ElementaryTypeName","src":"31861:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27105,"mutability":"mutable","name":"swapFeeAmountsRaw","nameLocation":"31898:17:67","nodeType":"VariableDeclaration","scope":27111,"src":"31888:27:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":27103,"name":"uint256","nodeType":"ElementaryTypeName","src":"31888:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27104,"nodeType":"ArrayTypeName","src":"31888:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":27108,"mutability":"mutable","name":"balancesRaw","nameLocation":"31935:11:67","nodeType":"VariableDeclaration","scope":27111,"src":"31925:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":27106,"name":"uint256","nodeType":"ElementaryTypeName","src":"31925:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27107,"nodeType":"ArrayTypeName","src":"31925:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":27110,"mutability":"mutable","name":"chargeRoundtripFee","nameLocation":"31961:18:67","nodeType":"VariableDeclaration","scope":27111,"src":"31956:23:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27109,"name":"bool","nodeType":"ElementaryTypeName","src":"31956:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"RecoveryLocals","nameLocation":"31776:14:67","nodeType":"StructDefinition","scope":27639,"src":"31769:217:67","visibility":"public"},{"baseFunctions":[4166],"body":{"id":27415,"nodeType":"Block","src":"32398:3713:67","statements":[{"assignments":[27142],"declarations":[{"constant":false,"id":27142,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"32559:17:67","nodeType":"VariableDeclaration","scope":27415,"src":"32493:83:67","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":27141,"keyName":"tokenIndex","keyNameLocation":"32509:10:67","keyType":{"id":27139,"name":"uint256","nodeType":"ElementaryTypeName","src":"32501:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"32493:57:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"32531:18:67","valueType":{"id":27140,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32523:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":27146,"initialValue":{"baseExpression":{"id":27143,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"32579:18:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":27145,"indexExpression":{"id":27144,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"32598:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32579:24:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"32493:110:67"},{"assignments":[27149],"declarations":[{"constant":false,"id":27149,"mutability":"mutable","name":"locals","nameLocation":"32635:6:67","nodeType":"VariableDeclaration","scope":27415,"src":"32613:28:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals"},"typeName":{"id":27148,"nodeType":"UserDefinedTypeName","pathNode":{"id":27147,"name":"RecoveryLocals","nameLocations":["32613:14:67"],"nodeType":"IdentifierPath","referencedDeclaration":27111,"src":"32613:14:67"},"referencedDeclaration":27111,"src":"32613:14:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_storage_ptr","typeString":"struct VaultExtension.RecoveryLocals"}},"visibility":"internal"}],"id":27150,"nodeType":"VariableDeclarationStatement","src":"32613:28:67"},{"expression":{"id":27157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":27151,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"32753:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"32760:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":27098,"src":"32753:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":27154,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"32769:11:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":27156,"indexExpression":{"id":27155,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"32781:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"32769:17:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"src":"32753:33:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":27158,"nodeType":"ExpressionStatement","src":"32753:33:67"},{"expression":{"id":27165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":27159,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"32796:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"32803:9:67","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":27102,"src":"32796:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":27162,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"32815:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32822:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":27098,"src":"32815:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":27164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32829:6:67","memberName":"length","nodeType":"MemberAccess","src":"32815:20:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32796:39:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27166,"nodeType":"ExpressionStatement","src":"32796:39:67"},{"expression":{"id":27176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":27167,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"32846:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"32853:11:67","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":27108,"src":"32846:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":27173,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"32881:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32888:9:67","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":27102,"src":"32881:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"32867:13:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":27170,"name":"uint256","nodeType":"ElementaryTypeName","src":"32871:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27171,"nodeType":"ArrayTypeName","src":"32871:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":27175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32867:31:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"32846:52:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27177,"nodeType":"ExpressionStatement","src":"32846:52:67"},{"assignments":[27179],"declarations":[{"constant":false,"id":27179,"mutability":"mutable","name":"packedBalances","nameLocation":"32916:14:67","nodeType":"VariableDeclaration","scope":27415,"src":"32908:22:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27178,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32908:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":27180,"nodeType":"VariableDeclarationStatement","src":"32908:22:67"},{"body":{"id":27204,"nodeType":"Block","src":"32988:85:67","statements":[{"expression":{"id":27202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":27192,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"33002:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27195,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33009:11:67","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":27108,"src":"33002:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27196,"indexExpression":{"id":27194,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27182,"src":"33021:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"33002:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":27197,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27142,"src":"33026:17:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":27199,"indexExpression":{"id":27198,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27182,"src":"33044:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33026:20:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33047:13:67","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"33026:34:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":27201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33026:36:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33002:60:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27203,"nodeType":"ExpressionStatement","src":"33002:60:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27185,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27182,"src":"32961:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":27186,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"32965:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32972:9:67","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":27102,"src":"32965:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32961:20:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27205,"initializationExpression":{"assignments":[27182],"declarations":[{"constant":false,"id":27182,"mutability":"mutable","name":"i","nameLocation":"32954:1:67","nodeType":"VariableDeclaration","scope":27205,"src":"32946:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27181,"name":"uint256","nodeType":"ElementaryTypeName","src":"32946:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27184,"initialValue":{"hexValue":"30","id":27183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32958:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"32946:13:67"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":27190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"32983:3:67","subExpression":{"id":27189,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27182,"src":"32985:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27191,"nodeType":"ExpressionStatement","src":"32983:3:67"},"nodeType":"ForStatement","src":"32941:132:67"},{"expression":{"id":27216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27206,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"33083:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":27209,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"33155:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33162:11:67","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":27108,"src":"33155:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"id":27212,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"33200:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":27211,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"33187:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":27213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33187:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":27214,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27118,"src":"33219:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":27207,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"33099:12:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":27208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33112:29:67","memberName":"computeProportionalAmountsOut","nodeType":"MemberAccess","referencedDeclaration":11099,"src":"33099:42:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256) pure returns (uint256[] memory)"}},"id":27215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33099:146:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"33083:162:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27217,"nodeType":"ExpressionStatement","src":"33083:162:67"},{"expression":{"id":27227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":27218,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"33631:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"33638:17:67","memberName":"swapFeeAmountsRaw","nodeType":"MemberAccess","referencedDeclaration":27105,"src":"33631:24:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":27224,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"33672:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33679:9:67","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":27102,"src":"33672:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"33658:13:67","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":27221,"name":"uint256","nodeType":"ElementaryTypeName","src":"33662:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27222,"nodeType":"ArrayTypeName","src":"33662:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":27226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33658:31:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"33631:58:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27228,"nodeType":"ExpressionStatement","src":"33631:58:67"},{"expression":{"id":27241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":27229,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"33699:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"33706:18:67","memberName":"chargeRoundtripFee","nodeType":"MemberAccess","referencedDeclaration":27110,"src":"33699:25:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":27235,"name":"_sessionIdSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27905,"src":"33754:14:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":27236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33754:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":27237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33771:5:67","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"33754:22:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":27238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33754:24:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":27239,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"33780:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":27232,"name":"_addLiquidityCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27894,"src":"33727:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function () view returns (UintToAddressToBooleanMappingSlot)"}},"id":27233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33727:21:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"id":27234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33749:4:67","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6669,"src":"33727:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$_t_uint256_$_t_address_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function (UintToAddressToBooleanMappingSlot,uint256,address) view returns (bool)"}},"id":27240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33727:58:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"33699:86:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27242,"nodeType":"ExpressionStatement","src":"33699:86:67"},{"condition":{"expression":{"id":27243,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"33870:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33877:18:67","memberName":"chargeRoundtripFee","nodeType":"MemberAccess","referencedDeclaration":27110,"src":"33870:25:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27256,"nodeType":"IfStatement","src":"33866:133:67","trueBody":{"id":27255,"nodeType":"Block","src":"33897:102:67","statements":[{"expression":{"id":27253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":27245,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"33911:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"33918:17:67","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":27100,"src":"33911:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":27248,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"33938:15:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":27250,"indexExpression":{"id":27249,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"33954:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33938:21:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":27251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33960:26:67","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29600,"src":"33938:48:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":27252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33938:50:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33911:77:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27254,"nodeType":"ExpressionStatement","src":"33911:77:67"}]}},{"body":{"id":27337,"nodeType":"Block","src":"34056:698:67","statements":[{"condition":{"expression":{"id":27268,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34074:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34081:18:67","memberName":"chargeRoundtripFee","nodeType":"MemberAccess","referencedDeclaration":27110,"src":"34074:25:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27294,"nodeType":"IfStatement","src":"34070:207:67","trueBody":{"id":27293,"nodeType":"Block","src":"34101:176:67","statements":[{"expression":{"id":27282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":27270,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34119:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34126:17:67","memberName":"swapFeeAmountsRaw","nodeType":"MemberAccess","referencedDeclaration":27105,"src":"34119:24:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27274,"indexExpression":{"id":27272,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34144:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"34119:27:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":27279,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34172:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34179:17:67","memberName":"swapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":27100,"src":"34172:24:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":27275,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"34149:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27277,"indexExpression":{"id":27276,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34163:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34149:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34166:5:67","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"34149:22:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":27281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34149:48:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34119:78:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27283,"nodeType":"ExpressionStatement","src":"34119:78:67"},{"expression":{"id":27291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":27284,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"34215:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27286,"indexExpression":{"id":27285,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34229:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"34215:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"baseExpression":{"expression":{"id":27287,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34235:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34242:17:67","memberName":"swapFeeAmountsRaw","nodeType":"MemberAccess","referencedDeclaration":27105,"src":"34235:24:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27290,"indexExpression":{"id":27289,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34260:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34235:27:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34215:47:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27292,"nodeType":"ExpressionStatement","src":"34215:47:67"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":27295,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"34295:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27297,"indexExpression":{"id":27296,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34309:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34295:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":27298,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27121,"src":"34314:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27300,"indexExpression":{"id":27299,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34328:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34314:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34295:35:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27316,"nodeType":"IfStatement","src":"34291:152:67","trueBody":{"id":27315,"nodeType":"Block","src":"34332:111:67","statements":[{"errorCall":{"arguments":[{"baseExpression":{"expression":{"id":27303,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34375:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34382:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":27098,"src":"34375:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":27306,"indexExpression":{"id":27305,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34389:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34375:16:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":27307,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"34393:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27309,"indexExpression":{"id":27308,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34407:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34393:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":27310,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27121,"src":"34411:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27312,"indexExpression":{"id":27311,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34425:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34411:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27302,"name":"AmountOutBelowMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3366,"src":"34357:17:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":27313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34357:71:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27314,"nodeType":"RevertStatement","src":"34350:78:67"}]}},{"expression":{"arguments":[{"baseExpression":{"expression":{"id":27318,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34517:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34524:6:67","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":27098,"src":"34517:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":27321,"indexExpression":{"id":27320,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34531:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34517:16:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":27322,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"34535:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27324,"indexExpression":{"id":27323,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34549:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34535:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27317,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"34503:13:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":27325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34503:49:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27326,"nodeType":"ExpressionStatement","src":"34503:49:67"},{"expression":{"id":27335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":27327,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34702:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34709:11:67","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":27108,"src":"34702:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27331,"indexExpression":{"id":27329,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34721:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"34702:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"baseExpression":{"id":27332,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"34727:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27334,"indexExpression":{"id":27333,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34741:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34727:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34702:41:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27336,"nodeType":"ExpressionStatement","src":"34702:41:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27261,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34029:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":27262,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"34033:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34040:9:67","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":27102,"src":"34033:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34029:20:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27338,"initializationExpression":{"assignments":[27258],"declarations":[{"constant":false,"id":27258,"mutability":"mutable","name":"i","nameLocation":"34022:1:67","nodeType":"VariableDeclaration","scope":27338,"src":"34014:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27257,"name":"uint256","nodeType":"ElementaryTypeName","src":"34014:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27260,"initialValue":{"hexValue":"30","id":27259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34026:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"34014:13:67"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":27266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"34051:3:67","subExpression":{"id":27265,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27258,"src":"34053:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27267,"nodeType":"ExpressionStatement","src":"34051:3:67"},"nodeType":"ForStatement","src":"34009:745:67"},{"assignments":[27342],"declarations":[{"constant":false,"id":27342,"mutability":"mutable","name":"poolBalances","nameLocation":"35077:12:67","nodeType":"VariableDeclaration","scope":27415,"src":"35011:78:67","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":27341,"keyName":"tokenIndex","keyNameLocation":"35027:10:67","keyType":{"id":27339,"name":"uint256","nodeType":"ElementaryTypeName","src":"35019:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"35011:57:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"35049:18:67","valueType":{"id":27340,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35041:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":27346,"initialValue":{"baseExpression":{"id":27343,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"35092:18:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":27345,"indexExpression":{"id":27344,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"35111:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35092:24:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"35011:105:67"},{"body":{"id":27376,"nodeType":"Block","src":"35174:140:67","statements":[{"expression":{"id":27362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27358,"name":"packedBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27179,"src":"35188:14:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":27359,"name":"poolBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27342,"src":"35205:12:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":27361,"indexExpression":{"id":27360,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27348,"src":"35218:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35205:15:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"35188:32:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27363,"nodeType":"ExpressionStatement","src":"35188:32:67"},{"expression":{"id":27374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":27364,"name":"poolBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27342,"src":"35234:12:67","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":27366,"indexExpression":{"id":27365,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27348,"src":"35247:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"35234:15:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":27369,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"35281:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35288:11:67","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":27108,"src":"35281:18:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":27372,"indexExpression":{"id":27371,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27348,"src":"35300:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35281:21:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":27367,"name":"packedBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27179,"src":"35252:14:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35267:13:67","memberName":"setBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5883,"src":"35252:28:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":27373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35252:51:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"35234:69:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27375,"nodeType":"ExpressionStatement","src":"35234:69:67"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27351,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27348,"src":"35147:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":27352,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"35151:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27353,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35158:9:67","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":27102,"src":"35151:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"35147:20:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27377,"initializationExpression":{"assignments":[27348],"declarations":[{"constant":false,"id":27348,"mutability":"mutable","name":"i","nameLocation":"35140:1:67","nodeType":"VariableDeclaration","scope":27377,"src":"35132:9:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27347,"name":"uint256","nodeType":"ElementaryTypeName","src":"35132:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":27350,"initialValue":{"hexValue":"30","id":27349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35144:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"35132:13:67"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":27356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"35169:3:67","subExpression":{"id":27355,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27348,"src":"35171:1:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27357,"nodeType":"ExpressionStatement","src":"35169:3:67"},"nodeType":"ForStatement","src":"35127:187:67"},{"expression":{"arguments":[{"id":27379,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"35340:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27380,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27116,"src":"35346:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":27381,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"35352:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35356:6:67","memberName":"sender","nodeType":"MemberAccess","src":"35352:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27383,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27118,"src":"35364:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27378,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38827,"src":"35324:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":27384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35324:57:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27385,"nodeType":"ExpressionStatement","src":"35324:57:67"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":27386,"name":"_isQueryContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25144,"src":"35396:15:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":27387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35396:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27395,"nodeType":"IfStatement","src":"35392:180:67","trueBody":{"id":27394,"nodeType":"Block","src":"35415:157:67","statements":[{"expression":{"arguments":[{"id":27389,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"35532:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27390,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27116,"src":"35538:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27391,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27118,"src":"35544:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27388,"name":"_queryModeBalanceIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38387,"src":"35506:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35506:55:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27393,"nodeType":"ExpressionStatement","src":"35506:55:67"}]}},{"expression":{"arguments":[{"id":27397,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"35854:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27398,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27116,"src":"35860:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27399,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27118,"src":"35866:16:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":27396,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38621,"src":"35848:5:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":27400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35848:35:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27401,"nodeType":"ExpressionStatement","src":"35848:35:67"},{"eventCall":{"arguments":[{"id":27403,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"35929:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27404,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27116,"src":"35947:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":27405,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"35965:19:67","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":27406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35985:12:67","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4606,"src":"35965:32:67","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"arguments":[{"id":27408,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"36024:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":27407,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38305,"src":"36011:12:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":27409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36011:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":27410,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27137,"src":"36043:13:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":27411,"name":"locals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27149,"src":"36070:6:67","typeDescriptions":{"typeIdentifier":"t_struct$_RecoveryLocals_$27111_memory_ptr","typeString":"struct VaultExtension.RecoveryLocals memory"}},"id":27412,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36077:17:67","memberName":"swapFeeAmountsRaw","nodeType":"MemberAccess","referencedDeclaration":27105,"src":"36070:24:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":27402,"name":"LiquidityRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"35899:16:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_enum$_RemoveLiquidityKind_$4610_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,address,enum RemoveLiquidityKind,uint256,uint256[] memory,uint256[] memory)"}},"id":27413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35899:205:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27414,"nodeType":"EmitStatement","src":"35894:210:67"}]},"documentation":{"id":27112,"nodeType":"StructuredDocumentation","src":"31992:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"a07d6040","id":27416,"implemented":true,"kind":"function","modifiers":[{"id":27124,"kind":"modifierInvocation","modifierName":{"id":27123,"name":"onlyVaultDelegateCall","nameLocations":["32210:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"32210:21:67"},"nodeType":"ModifierInvocation","src":"32210:21:67"},{"id":27126,"kind":"modifierInvocation","modifierName":{"id":27125,"name":"onlyWhenUnlocked","nameLocations":["32240:16:67"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"32240:16:67"},"nodeType":"ModifierInvocation","src":"32240:16:67"},{"id":27128,"kind":"modifierInvocation","modifierName":{"id":27127,"name":"nonReentrant","nameLocations":["32265:12:67"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"32265:12:67"},"nodeType":"ModifierInvocation","src":"32265:12:67"},{"arguments":[{"id":27130,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"32306:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27131,"kind":"modifierInvocation","modifierName":{"id":27129,"name":"withInitializedPool","nameLocations":["32286:19:67"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"32286:19:67"},"nodeType":"ModifierInvocation","src":"32286:25:67"},{"arguments":[{"id":27133,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27114,"src":"32339:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27134,"kind":"modifierInvocation","modifierName":{"id":27132,"name":"onlyInRecoveryMode","nameLocations":["32320:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":25096,"src":"32320:18:67"},"nodeType":"ModifierInvocation","src":"32320:24:67"}],"name":"removeLiquidityRecovery","nameLocation":"32037:23:67","nodeType":"FunctionDefinition","parameters":{"id":27122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27114,"mutability":"mutable","name":"pool","nameLocation":"32078:4:67","nodeType":"VariableDeclaration","scope":27416,"src":"32070:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27113,"name":"address","nodeType":"ElementaryTypeName","src":"32070:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27116,"mutability":"mutable","name":"from","nameLocation":"32100:4:67","nodeType":"VariableDeclaration","scope":27416,"src":"32092:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27115,"name":"address","nodeType":"ElementaryTypeName","src":"32092:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":27118,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"32122:16:67","nodeType":"VariableDeclaration","scope":27416,"src":"32114:24:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27117,"name":"uint256","nodeType":"ElementaryTypeName","src":"32114:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27121,"mutability":"mutable","name":"minAmountsOut","nameLocation":"32165:13:67","nodeType":"VariableDeclaration","scope":27416,"src":"32148:30:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":27119,"name":"uint256","nodeType":"ElementaryTypeName","src":"32148:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27120,"nodeType":"ArrayTypeName","src":"32148:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"32060:124:67"},"returnParameters":{"id":27138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27137,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"32379:13:67","nodeType":"VariableDeclaration","scope":27416,"src":"32362:30:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":27135,"name":"uint256","nodeType":"ElementaryTypeName","src":"32362:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":27136,"nodeType":"ArrayTypeName","src":"32362:9:67","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"32361:32:67"},"scope":27639,"src":"32028:4083:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":27423,"nodeType":"Block","src":"36442:41:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":27419,"name":"_setupQuery","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27458,"src":"36452:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":27420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36452:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27421,"nodeType":"ExpressionStatement","src":"36452:13:67"},{"id":27422,"nodeType":"PlaceholderStatement","src":"36475:1:67"}]},"documentation":{"id":27417,"nodeType":"StructuredDocumentation","src":"36336:84:67","text":"@dev Ensure that only static calls are made to the functions with this modifier."},"id":27424,"name":"query","nameLocation":"36434:5:67","nodeType":"ModifierDefinition","parameters":{"id":27418,"nodeType":"ParameterList","parameters":[],"src":"36439:2:67"},"src":"36425:58:67","virtual":false,"visibility":"internal"},{"body":{"id":27457,"nodeType":"Block","src":"36521:377:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":27431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27427,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"36535:18:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":27428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36554:12:67","memberName":"isStaticCall","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"36535:31:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":27429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36535:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":27430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"36572:5:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"36535:42:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27438,"nodeType":"IfStatement","src":"36531:114:67","trueBody":{"id":27437,"nodeType":"Block","src":"36579:66:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27432,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"36600:18:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":27434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36619:13:67","memberName":"NotStaticCall","nodeType":"MemberAccess","referencedDeclaration":5477,"src":"36600:32:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":27435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36600:34:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27436,"nodeType":"RevertStatement","src":"36593:41:67"}]}},{"assignments":[27440],"declarations":[{"constant":false,"id":27440,"mutability":"mutable","name":"_isQueryDisabled","nameLocation":"36660:16:67","nodeType":"VariableDeclaration","scope":27457,"src":"36655:21:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27439,"name":"bool","nodeType":"ElementaryTypeName","src":"36655:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":27444,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27441,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"36679:15:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":27442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36695:15:67","memberName":"isQueryDisabled","nodeType":"MemberAccess","referencedDeclaration":30641,"src":"36679:31:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":27443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36679:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"36655:57:67"},{"condition":{"id":27445,"name":"_isQueryDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27440,"src":"36726:16:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27450,"nodeType":"IfStatement","src":"36722:71:67","trueBody":{"id":27449,"nodeType":"Block","src":"36744:49:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":27446,"name":"QueriesDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"36765:15:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":27447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36765:17:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27448,"nodeType":"RevertStatement","src":"36758:24:67"}]}},{"expression":{"arguments":[{"hexValue":"74727565","id":27454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"36886:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":27451,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"36865:11:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":27452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36865:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":27453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36879:6:67","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"36865:20:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":27455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36865:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27456,"nodeType":"ExpressionStatement","src":"36865:26:67"}]},"id":27458,"implemented":true,"kind":"function","modifiers":[],"name":"_setupQuery","nameLocation":"36498:11:67","nodeType":"FunctionDefinition","parameters":{"id":27425,"nodeType":"ParameterList","parameters":[],"src":"36509:2:67"},"returnParameters":{"id":27426,"nodeType":"ParameterList","parameters":[],"src":"36521:0:67"},"scope":27639,"src":"36489:409:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4174],"body":{"id":27477,"nodeType":"Block","src":"37043:136:67","statements":[{"expression":{"arguments":[{"id":27474,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27461,"src":"37167:4:67","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"components":[{"expression":{"id":27470,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"37142:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37146:6:67","memberName":"sender","nodeType":"MemberAccess","src":"37142:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27472,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37141:12:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":27473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37154:12:67","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":39700,"src":"37141:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":27475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37141:31:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":27469,"id":27476,"nodeType":"Return","src":"37134:38:67"}]},"documentation":{"id":27459,"nodeType":"StructuredDocumentation","src":"36904:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"edfa3568","id":27478,"implemented":true,"kind":"function","modifiers":[{"id":27464,"kind":"modifierInvocation","modifierName":{"id":27463,"name":"query","nameLocations":["36985:5:67"],"nodeType":"IdentifierPath","referencedDeclaration":27424,"src":"36985:5:67"},"nodeType":"ModifierInvocation","src":"36985:5:67"},{"id":27466,"kind":"modifierInvocation","modifierName":{"id":27465,"name":"onlyVaultDelegateCall","nameLocations":["36991:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"36991:21:67"},"nodeType":"ModifierInvocation","src":"36991:21:67"}],"name":"quote","nameLocation":"36949:5:67","nodeType":"FunctionDefinition","parameters":{"id":27462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27461,"mutability":"mutable","name":"data","nameLocation":"36970:4:67","nodeType":"VariableDeclaration","scope":27478,"src":"36955:19:67","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":27460,"name":"bytes","nodeType":"ElementaryTypeName","src":"36955:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"36954:21:67"},"returnParameters":{"id":27469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27468,"mutability":"mutable","name":"result","nameLocation":"37035:6:67","nodeType":"VariableDeclaration","scope":27478,"src":"37022:19:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":27467,"name":"bytes","nodeType":"ElementaryTypeName","src":"37022:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"37021:21:67"},"scope":27639,"src":"36940:239:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4180],"body":{"id":27541,"nodeType":"Block","src":"37303:945:67","statements":[{"assignments":[27489,27491],"declarations":[{"constant":false,"id":27489,"mutability":"mutable","name":"success","nameLocation":"37459:7:67","nodeType":"VariableDeclaration","scope":27541,"src":"37454:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27488,"name":"bool","nodeType":"ElementaryTypeName","src":"37454:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":27491,"mutability":"mutable","name":"result","nameLocation":"37481:6:67","nodeType":"VariableDeclaration","scope":27541,"src":"37468:19:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":27490,"name":"bytes","nodeType":"ElementaryTypeName","src":"37468:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":27498,"initialValue":{"arguments":[{"id":27496,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27481,"src":"37509:4:67","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"components":[{"expression":{"id":27492,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"37492:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37496:6:67","memberName":"sender","nodeType":"MemberAccess","src":"37492:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37491:12:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":27495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37504:4:67","memberName":"call","nodeType":"MemberAccess","src":"37491:17:67","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":27497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37491:23:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"37453:61:67"},{"condition":{"id":27499,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27489,"src":"37528:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":27539,"nodeType":"Block","src":"37811:431:67","statements":[{"assignments":[27517],"declarations":[{"constant":false,"id":27517,"mutability":"mutable","name":"errorSelector","nameLocation":"37944:13:67","nodeType":"VariableDeclaration","scope":27539,"src":"37937:20:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":27516,"name":"bytes4","nodeType":"ElementaryTypeName","src":"37937:6:67","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":27522,"initialValue":{"arguments":[{"id":27520,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27491,"src":"37986:6:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":27518,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"37960:11:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":27519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37972:13:67","memberName":"parseSelector","nodeType":"MemberAccess","referencedDeclaration":6041,"src":"37960:25:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes memory) pure returns (bytes4)"}},"id":27521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37960:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"37937:56:67"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":27527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":27523,"name":"errorSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27517,"src":"38011:13:67","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":27524,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"38028:11:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":27525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38040:6:67","memberName":"Result","nodeType":"MemberAccess","referencedDeclaration":5978,"src":"38028:18:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":27526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38047:8:67","memberName":"selector","nodeType":"MemberAccess","src":"38028:27:67","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"38011:44:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27532,"nodeType":"IfStatement","src":"38007:110:67","trueBody":{"id":27531,"nodeType":"Block","src":"38057:60:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":27528,"name":"QuoteResultSpoofed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"38082:18:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":27529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38082:20:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27530,"nodeType":"RevertStatement","src":"38075:27:67"}]}},{"expression":{"arguments":[{"id":27536,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27491,"src":"38224:6:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":27533,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"38197:11:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":27535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38209:14:67","memberName":"bubbleUpRevert","nodeType":"MemberAccess","referencedDeclaration":6059,"src":"38197:26:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":27537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38197:34:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27538,"nodeType":"ExpressionStatement","src":"38197:34:67"}]},"id":27540,"nodeType":"IfStatement","src":"37524:718:67","trueBody":{"id":27515,"nodeType":"Block","src":"37537:268:67","statements":[{"expression":{"arguments":[{"expression":{"id":27503,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"37674:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37678:6:67","memberName":"sender","nodeType":"MemberAccess","src":"37674:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27505,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27489,"src":"37686:7:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":27506,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27491,"src":"37695:6:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":27500,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"37639:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$39879_$","typeString":"type(library Address)"}},"id":27502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37647:26:67","memberName":"verifyCallResultFromTarget","nodeType":"MemberAccess","referencedDeclaration":39838,"src":"37639:34:67","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":27507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37639:63:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":27508,"nodeType":"ExpressionStatement","src":"37639:63:67"},{"errorCall":{"arguments":[{"id":27512,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27491,"src":"37787:6:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":27509,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"37768:11:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":27511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37780:6:67","memberName":"Result","nodeType":"MemberAccess","referencedDeclaration":5978,"src":"37768:18:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":27513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37768:26:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27514,"nodeType":"RevertStatement","src":"37761:33:67"}]}}]},"documentation":{"id":27479,"nodeType":"StructuredDocumentation","src":"37185:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"757d64b3","id":27542,"implemented":true,"kind":"function","modifiers":[{"id":27484,"kind":"modifierInvocation","modifierName":{"id":27483,"name":"query","nameLocations":["37275:5:67"],"nodeType":"IdentifierPath","referencedDeclaration":27424,"src":"37275:5:67"},"nodeType":"ModifierInvocation","src":"37275:5:67"},{"id":27486,"kind":"modifierInvocation","modifierName":{"id":27485,"name":"onlyVaultDelegateCall","nameLocations":["37281:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"37281:21:67"},"nodeType":"ModifierInvocation","src":"37281:21:67"}],"name":"quoteAndRevert","nameLocation":"37230:14:67","nodeType":"FunctionDefinition","parameters":{"id":27482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27481,"mutability":"mutable","name":"data","nameLocation":"37260:4:67","nodeType":"VariableDeclaration","scope":27542,"src":"37245:19:67","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":27480,"name":"bytes","nodeType":"ElementaryTypeName","src":"37245:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"37244:21:67"},"returnParameters":{"id":27487,"nodeType":"ParameterList","parameters":[],"src":"37303:0:67"},"scope":27639,"src":"37221:1027:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4186],"body":{"id":27554,"nodeType":"Block","src":"38368:57:67","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27550,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"38385:15:67","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":27551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38401:15:67","memberName":"isQueryDisabled","nodeType":"MemberAccess","referencedDeclaration":30641,"src":"38385:31:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":27552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38385:33:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":27549,"id":27553,"nodeType":"Return","src":"38378:40:67"}]},"documentation":{"id":27543,"nodeType":"StructuredDocumentation","src":"38254:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"b4aef0ab","id":27555,"implemented":true,"kind":"function","modifiers":[{"id":27546,"kind":"modifierInvocation","modifierName":{"id":27545,"name":"onlyVaultDelegateCall","nameLocations":["38331:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"38331:21:67"},"nodeType":"ModifierInvocation","src":"38331:21:67"}],"name":"isQueryDisabled","nameLocation":"38299:15:67","nodeType":"FunctionDefinition","parameters":{"id":27544,"nodeType":"ParameterList","parameters":[],"src":"38314:2:67"},"returnParameters":{"id":27549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27555,"src":"38362:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27547,"name":"bool","nodeType":"ElementaryTypeName","src":"38362:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38361:6:67"},"scope":27639,"src":"38290:135:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4192],"body":{"id":27565,"nodeType":"Block","src":"38556:51:67","statements":[{"expression":{"id":27563,"name":"_queriesDisabledPermanently","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27820,"src":"38573:27:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":27562,"id":27564,"nodeType":"Return","src":"38566:34:67"}]},"documentation":{"id":27556,"nodeType":"StructuredDocumentation","src":"38431:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"13ef8a5d","id":27566,"implemented":true,"kind":"function","modifiers":[{"id":27559,"kind":"modifierInvocation","modifierName":{"id":27558,"name":"onlyVaultDelegateCall","nameLocations":["38519:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"38519:21:67"},"nodeType":"ModifierInvocation","src":"38519:21:67"}],"name":"isQueryDisabledPermanently","nameLocation":"38476:26:67","nodeType":"FunctionDefinition","parameters":{"id":27557,"nodeType":"ParameterList","parameters":[],"src":"38502:2:67"},"returnParameters":{"id":27562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27566,"src":"38550:4:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27560,"name":"bool","nodeType":"ElementaryTypeName","src":"38550:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38549:6:67"},"scope":27639,"src":"38467:140:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4207],"body":{"id":27577,"nodeType":"Block","src":"38954:35:67","statements":[{"expression":{"id":27575,"name":"_authorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27823,"src":"38971:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"functionReturnParameters":27574,"id":27576,"nodeType":"Return","src":"38964:18:67"}]},"documentation":{"id":27567,"nodeType":"StructuredDocumentation","src":"38835:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"aaabadc5","id":27578,"implemented":true,"kind":"function","modifiers":[{"id":27570,"kind":"modifierInvocation","modifierName":{"id":27569,"name":"onlyVaultDelegateCall","nameLocations":["38910:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"38910:21:67"},"nodeType":"ModifierInvocation","src":"38910:21:67"}],"name":"getAuthorizer","nameLocation":"38880:13:67","nodeType":"FunctionDefinition","parameters":{"id":27568,"nodeType":"ParameterList","parameters":[],"src":"38893:2:67"},"returnParameters":{"id":27574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27578,"src":"38941:11:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":27572,"nodeType":"UserDefinedTypeName","pathNode":{"id":27571,"name":"IAuthorizer","nameLocations":["38941:11:67"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"38941:11:67"},"referencedDeclaration":1316,"src":"38941:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"38940:13:67"},"scope":27639,"src":"38871:118:67","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[39177],"body":{"id":27590,"nodeType":"Block","src":"39413:44:67","statements":[{"expression":{"arguments":[{"id":27587,"name":"_vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25262,"src":"39438:11:67","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}],"id":27586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39430:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27585,"name":"address","nodeType":"ElementaryTypeName","src":"39430:7:67","typeDescriptions":{}}},"id":27588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39430:20:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":27584,"id":27589,"nodeType":"Return","src":"39423:27:67"}]},"documentation":{"id":27579,"nodeType":"StructuredDocumentation","src":"39217:123:67","text":" @inheritdoc Proxy\n @dev Returns the VaultAdmin contract, to which fallback requests are forwarded."},"id":27591,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"39354:15:67","nodeType":"FunctionDefinition","overrides":{"id":27581,"nodeType":"OverrideSpecifier","overrides":[],"src":"39386:8:67"},"parameters":{"id":27580,"nodeType":"ParameterList","parameters":[],"src":"39369:2:67"},"returnParameters":{"id":27584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27591,"src":"39404:7:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27582,"name":"address","nodeType":"ElementaryTypeName","src":"39404:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"39403:9:67"},"scope":27639,"src":"39345:112:67","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4200],"body":{"id":27612,"nodeType":"Block","src":"39655:69:67","statements":[{"eventCall":{"arguments":[{"expression":{"id":27606,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"39685:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39689:6:67","memberName":"sender","nodeType":"MemberAccess","src":"39685:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":27608,"name":"eventKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27594,"src":"39697:8:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":27609,"name":"eventData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27596,"src":"39707:9:67","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":27605,"name":"VaultAuxiliary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3788,"src":"39670:14:67","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,bytes memory)"}},"id":27610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39670:47:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27611,"nodeType":"EmitStatement","src":"39665:52:67"}]},"documentation":{"id":27592,"nodeType":"StructuredDocumentation","src":"39463:31:67","text":"@inheritdoc IVaultExtension"},"functionSelector":"c8088247","id":27613,"implemented":true,"kind":"function","modifiers":[{"id":27599,"kind":"modifierInvocation","modifierName":{"id":27598,"name":"onlyVaultDelegateCall","nameLocations":["39602:21:67"],"nodeType":"IdentifierPath","referencedDeclaration":25270,"src":"39602:21:67"},"nodeType":"ModifierInvocation","src":"39602:21:67"},{"arguments":[{"expression":{"id":27601,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"39643:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39647:6:67","memberName":"sender","nodeType":"MemberAccess","src":"39643:10:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":27603,"kind":"modifierInvocation","modifierName":{"id":27600,"name":"withRegisteredPool","nameLocations":["39624:18:67"],"nodeType":"IdentifierPath","referencedDeclaration":24659,"src":"39624:18:67"},"nodeType":"ModifierInvocation","src":"39624:30:67"}],"name":"emitAuxiliaryEvent","nameLocation":"39508:18:67","nodeType":"FunctionDefinition","parameters":{"id":27597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27594,"mutability":"mutable","name":"eventKey","nameLocation":"39544:8:67","nodeType":"VariableDeclaration","scope":27613,"src":"39536:16:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27593,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39536:7:67","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":27596,"mutability":"mutable","name":"eventData","nameLocation":"39577:9:67","nodeType":"VariableDeclaration","scope":27613,"src":"39562:24:67","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":27595,"name":"bytes","nodeType":"ElementaryTypeName","src":"39562:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"39526:66:67"},"returnParameters":{"id":27604,"nodeType":"ParameterList","parameters":[],"src":"39655:0:67"},"scope":27639,"src":"39499:225:67","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":27619,"nodeType":"Block","src":"39982:42:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":27616,"name":"CannotReceiveEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"39999:16:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":27617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39999:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27618,"nodeType":"RevertStatement","src":"39992:25:67"}]},"id":27620,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":27614,"nodeType":"ParameterList","parameters":[],"src":"39962:2:67"},"returnParameters":{"id":27615,"nodeType":"ParameterList","parameters":[],"src":"39982:0:67"},"scope":27639,"src":"39955:69:67","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[39195],"body":{"id":27637,"nodeType":"Block","src":"40338:107:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":27628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":27625,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"40352:3:67","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40356:5:67","memberName":"value","nodeType":"MemberAccess","src":"40352:9:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":27627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40364:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"40352:13:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27633,"nodeType":"IfStatement","src":"40348:69:67","trueBody":{"id":27632,"nodeType":"Block","src":"40367:50:67","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":27629,"name":"CannotReceiveEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3534,"src":"40388:16:67","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":27630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40388:18:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27631,"nodeType":"RevertStatement","src":"40381:25:67"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":27634,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39187,"src":"40427:9:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":27635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40427:11:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27636,"nodeType":"ExpressionStatement","src":"40427:11:67"}]},"documentation":{"id":27621,"nodeType":"StructuredDocumentation","src":"40074:222:67","text":" @inheritdoc Proxy\n @dev Override proxy implementation of `fallback` to disallow incoming ETH transfers.\n This function actually returns whatever the VaultAdmin does when handling the request."},"id":27638,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","overrides":{"id":27623,"nodeType":"OverrideSpecifier","overrides":[],"src":"40329:8:67"},"parameters":{"id":27622,"nodeType":"ParameterList","parameters":[],"src":"40309:2:67"},"returnParameters":{"id":27624,"nodeType":"ParameterList","parameters":[],"src":"40338:0:67"},"scope":27639,"src":"40301:144:67","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":27640,"src":"3171:37276:67","usedErrors":[1684,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,5477,5586,5595,5833,5978,5981,7124,7127,9512,39035,39040,39045,39054,39059,39064,39634,39639,39642,42398],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788,38264,38275]}],"src":"46:40402:67"},"id":67},"@balancer-labs/v3-vault/contracts/VaultGuard.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultGuard.sol","exportedSymbols":{"IVault":[2893],"IVaultErrors":[3550],"VaultGuard":[27688]},"id":27689,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":27641,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:68"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":27643,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27689,"sourceUnit":3551,"src":"72:93:68","symbolAliases":[{"foreign":{"id":27642,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"81:12:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":27645,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27689,"sourceUnit":2894,"src":"166:81:68","symbolAliases":[{"foreign":{"id":27644,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"175:6:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"VaultGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":27646,"nodeType":"StructuredDocumentation","src":"249:59:68","text":"@notice Contract that shares the modifier `onlyVault`."},"fullyImplemented":true,"id":27688,"linearizedBaseContracts":[27688],"name":"VaultGuard","nameLocation":"317:10:68","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":27649,"mutability":"immutable","name":"_vault","nameLocation":"360:6:68","nodeType":"VariableDeclaration","scope":27688,"src":"334:32:68","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":27648,"nodeType":"UserDefinedTypeName","pathNode":{"id":27647,"name":"IVault","nameLocations":["334:6:68"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"334:6:68"},"referencedDeclaration":2893,"src":"334:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"body":{"id":27659,"nodeType":"Block","src":"399:31:68","statements":[{"expression":{"id":27657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27655,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"409:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":27656,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27652,"src":"418:5:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"src":"409:14:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":27658,"nodeType":"ExpressionStatement","src":"409:14:68"}]},"id":27660,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":27653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27652,"mutability":"mutable","name":"vault","nameLocation":"392:5:68","nodeType":"VariableDeclaration","scope":27660,"src":"385:12:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":27651,"nodeType":"UserDefinedTypeName","pathNode":{"id":27650,"name":"IVault","nameLocations":["385:6:68"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"385:6:68"},"referencedDeclaration":2893,"src":"385:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"384:14:68"},"returnParameters":{"id":27654,"nodeType":"ParameterList","parameters":[],"src":"399:0:68"},"scope":27688,"src":"373:57:68","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":27666,"nodeType":"Block","src":"457:46:68","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":27662,"name":"_ensureOnlyVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27687,"src":"467:16:68","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":27663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"467:18:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":27664,"nodeType":"ExpressionStatement","src":"467:18:68"},{"id":27665,"nodeType":"PlaceholderStatement","src":"495:1:68"}]},"id":27667,"name":"onlyVault","nameLocation":"445:9:68","nodeType":"ModifierDefinition","parameters":{"id":27661,"nodeType":"ParameterList","parameters":[],"src":"454:2:68"},"src":"436:67:68","virtual":false,"visibility":"internal"},{"body":{"id":27686,"nodeType":"Block","src":"550:124:68","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":27676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":27670,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"564:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"568:6:68","memberName":"sender","nodeType":"MemberAccess","src":"564:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":27674,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"586:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":27673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"578:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":27672,"name":"address","nodeType":"ElementaryTypeName","src":"578:7:68","typeDescriptions":{}}},"id":27675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"578:15:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"564:29:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":27685,"nodeType":"IfStatement","src":"560:108:68","trueBody":{"id":27684,"nodeType":"Block","src":"595:73:68","statements":[{"errorCall":{"arguments":[{"expression":{"id":27680,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"646:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":27681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"650:6:68","memberName":"sender","nodeType":"MemberAccess","src":"646:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":27677,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"616:12:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":27679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"629:16:68","memberName":"SenderIsNotVault","nodeType":"MemberAccess","referencedDeclaration":3422,"src":"616:29:68","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":27682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"616:41:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":27683,"nodeType":"RevertStatement","src":"609:48:68"}]}}]},"id":27687,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureOnlyVault","nameLocation":"518:16:68","nodeType":"FunctionDefinition","parameters":{"id":27668,"nodeType":"ParameterList","parameters":[],"src":"534:2:68"},"returnParameters":{"id":27669,"nodeType":"ParameterList","parameters":[],"src":"550:0:68"},"scope":27688,"src":"509:165:68","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":27689,"src":"308:368:68","usedErrors":[],"usedEvents":[]}],"src":"46:631:68"},"id":68},"@balancer-labs/v3-vault/contracts/VaultStorage.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultStorage.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IAuthorizer":[1316],"IERC20":[39274],"IERC4626":[38998],"IHooks":[1887],"IProtocolFeeController":[2230],"IRateProvider":[150],"IVaultExtension":[4208],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"StorageSlotExtension":[9911],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenDeltaMappingSlotType":[6484],"TokenInfo":[4486],"TokenType":[4463],"TransientStorageHelpers":[7068],"UintToAddressToBooleanMappingSlot":[6488],"VaultState":[4451],"VaultStateBits":[30607],"VaultStorage":[27923],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":27924,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":27690,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:69"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":27692,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":39275,"src":"72:72:69","symbolAliases":[{"foreign":{"id":27691,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","id":27694,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":2231,"src":"146:113:69","symbolAliases":[{"foreign":{"id":27693,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"155:22:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","id":27696,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":4209,"src":"260:99:69","symbolAliases":[{"foreign":{"id":27695,"name":"IVaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"269:15:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","id":27698,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":1317,"src":"360:91:69","symbolAliases":[{"foreign":{"id":27697,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"369:11:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","id":27700,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":1888,"src":"452:81:69","symbolAliases":[{"foreign":{"id":27699,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"461:6:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":27701,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":4654,"src":"534:69:69","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","id":27703,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":9912,"src":"605:120:69","symbolAliases":[{"foreign":{"id":27702,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"614:20:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":27707,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":7069,"src":"726:195:69","symbolAliases":[{"foreign":{"id":27704,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"739:23:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":27705,"name":"TokenDeltaMappingSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"768:25:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":27706,"name":"UintToAddressToBooleanMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6488,"src":"799:33:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol","file":"./lib/VaultStateLib.sol","id":27709,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":30749,"src":"923:57:69","symbolAliases":[{"foreign":{"id":27708,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"932:14:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"./lib/PoolConfigLib.sol","id":27711,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":27924,"sourceUnit":29981,"src":"981:57:69","symbolAliases":[{"foreign":{"id":27710,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"990:14:69","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"VaultStorage","contractDependencies":[],"contractKind":"contract","documentation":{"id":27712,"nodeType":"StructuredDocumentation","src":"1077:299:69","text":" @notice Storage layout for the Vault.\n @dev This contract has no code, but is inherited by all three Vault contracts. In order to ensure that *only* the\n Vault contract's storage is actually used, calls to the extension contracts must be delegate calls made through the\n main Vault."},"fullyImplemented":true,"id":27923,"linearizedBaseContracts":[27923],"name":"VaultStorage","nameLocation":"1386:12:69","nodeType":"ContractDefinition","nodes":[{"global":false,"id":27714,"libraryName":{"id":27713,"name":"StorageSlotExtension","nameLocations":["1411:20:69"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"1411:20:69"},"nodeType":"UsingForDirective","src":"1405:33:69"},{"constant":true,"id":27717,"mutability":"constant","name":"_MIN_TOKENS","nameLocation":"1732:11:69","nodeType":"VariableDeclaration","scope":27923,"src":"1706:41:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27715,"name":"uint256","nodeType":"ElementaryTypeName","src":"1706:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":27716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1746:1:69","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":27720,"mutability":"constant","name":"_MAX_TOKENS","nameLocation":"1899:11:69","nodeType":"VariableDeclaration","scope":27923,"src":"1873:41:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27718,"name":"uint256","nodeType":"ElementaryTypeName","src":"1873:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":27719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1913:1:69","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"constant":true,"id":27723,"mutability":"constant","name":"_MAX_TOKEN_DECIMALS","nameLocation":"2058:19:69","nodeType":"VariableDeclaration","scope":27923,"src":"2034:48:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":27721,"name":"uint8","nodeType":"ElementaryTypeName","src":"2034:5:69","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":27722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2080:2:69","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"internal"},{"constant":true,"id":27728,"mutability":"constant","name":"_MAX_PAUSE_WINDOW_DURATION","nameLocation":"2165:26:69","nodeType":"VariableDeclaration","scope":27923,"src":"2139:67:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27724,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_126144000_by_1","typeString":"int_const 126144000"},"id":27727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"333635","id":27725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2194:8:69","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"34","id":27726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2205:1:69","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2194:12:69","typeDescriptions":{"typeIdentifier":"t_rational_126144000_by_1","typeString":"int_const 126144000"}},"visibility":"internal"},{"constant":true,"id":27731,"mutability":"constant","name":"_MAX_BUFFER_PERIOD_DURATION","nameLocation":"2238:27:69","nodeType":"VariableDeclaration","scope":27923,"src":"2212:64:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27729,"name":"uint256","nodeType":"ElementaryTypeName","src":"2212:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313830","id":27730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2268:8:69","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_15552000_by_1","typeString":"int_const 15552000"},"value":"180"},"visibility":"internal"},{"constant":false,"id":27733,"mutability":"immutable","name":"_MINIMUM_TRADE_AMOUNT","nameLocation":"2509:21:69","nodeType":"VariableDeclaration","scope":27923,"src":"2482:48:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27732,"name":"uint256","nodeType":"ElementaryTypeName","src":"2482:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27735,"mutability":"immutable","name":"_MINIMUM_WRAP_AMOUNT","nameLocation":"2721:20:69","nodeType":"VariableDeclaration","scope":27923,"src":"2694:47:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27734,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27740,"mutability":"immutable","name":"_IS_UNLOCKED_SLOT","nameLocation":"3380:17:69","nodeType":"VariableDeclaration","scope":27923,"src":"3354:86:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3354:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6973556e6c6f636b6564","id":27738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3427:12:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_a510d743a7e777ee75c062642dc8c16fed516063b6963ca8d80c87d268ce0db7","typeString":"literal_string \"isUnlocked\""},"value":"isUnlocked"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a510d743a7e777ee75c062642dc8c16fed516063b6963ca8d80c87d268ce0db7","typeString":"literal_string \"isUnlocked\""}],"id":27737,"name":"_calculateVaultStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27922,"src":"3400:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":27739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3400:40:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":27745,"mutability":"immutable","name":"_NON_ZERO_DELTA_COUNT_SLOT","nameLocation":"3472:26:69","nodeType":"VariableDeclaration","scope":27923,"src":"3446:102:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27741,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3446:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6e6f6e5a65726f44656c7461436f756e74","id":27743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3528:19:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_20641895e8df322512adcd6373d3c6096d4e0152b30bd6a461d49c5bf2ba6634","typeString":"literal_string \"nonZeroDeltaCount\""},"value":"nonZeroDeltaCount"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_20641895e8df322512adcd6373d3c6096d4e0152b30bd6a461d49c5bf2ba6634","typeString":"literal_string \"nonZeroDeltaCount\""}],"id":27742,"name":"_calculateVaultStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27922,"src":"3501:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":27744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:47:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":27750,"mutability":"immutable","name":"_TOKEN_DELTAS_SLOT","nameLocation":"3580:18:69","nodeType":"VariableDeclaration","scope":27923,"src":"3554:88:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27746,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3554:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"746f6b656e44656c746173","id":27748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3628:13:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_f30c7b7598180f2aeb106e995ea0047da95f7a2b6d28dcb1281ac7f231dea1dd","typeString":"literal_string \"tokenDeltas\""},"value":"tokenDeltas"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f30c7b7598180f2aeb106e995ea0047da95f7a2b6d28dcb1281ac7f231dea1dd","typeString":"literal_string \"tokenDeltas\""}],"id":27747,"name":"_calculateVaultStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27922,"src":"3601:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":27749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3601:41:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":27755,"mutability":"immutable","name":"_ADD_LIQUIDITY_CALLED_SLOT","nameLocation":"3674:26:69","nodeType":"VariableDeclaration","scope":27923,"src":"3648:103:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3648:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6164644c697175696469747943616c6c6564","id":27753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3730:20:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_7841a116c280f8c1ac8b69abca4cf7c2e40d11cf0658dc5b3f9204db134a8494","typeString":"literal_string \"addLiquidityCalled\""},"value":"addLiquidityCalled"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7841a116c280f8c1ac8b69abca4cf7c2e40d11cf0658dc5b3f9204db134a8494","typeString":"literal_string \"addLiquidityCalled\""}],"id":27752,"name":"_calculateVaultStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27922,"src":"3703:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":27754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3703:48:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":27760,"mutability":"immutable","name":"_SESSION_ID_SLOT","nameLocation":"3783:16:69","nodeType":"VariableDeclaration","scope":27923,"src":"3757:84:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3757:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"73657373696f6e4964","id":27758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3829:11:69","typeDescriptions":{"typeIdentifier":"t_stringliteral_7665db96508d50e1824f5dc8219e0168a78d13b9d608109c1eeac31853406877","typeString":"literal_string \"sessionId\""},"value":"sessionId"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7665db96508d50e1824f5dc8219e0168a78d13b9d608109c1eeac31853406877","typeString":"literal_string \"sessionId\""}],"id":27757,"name":"_calculateVaultStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27922,"src":"3802:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":27759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3802:39:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":27765,"mutability":"mutable","name":"_poolConfigBits","nameLocation":"4248:15:69","nodeType":"VariableDeclaration","scope":27923,"src":"4188:75:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"},"typeName":{"id":27764,"keyName":"pool","keyNameLocation":"4204:4:69","keyType":{"id":27761,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4188:50:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"},"valueName":"poolConfig","valueNameLocation":"4227:10:69","valueType":{"id":27763,"nodeType":"UserDefinedTypeName","pathNode":{"id":27762,"name":"PoolConfigBits","nameLocations":["4212:14:69"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4212:14:69"},"referencedDeclaration":4364,"src":"4212:14:69","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},"visibility":"internal"},{"constant":false,"id":27770,"mutability":"mutable","name":"_poolRoleAccounts","nameLocation":"4411:17:69","nodeType":"VariableDeclaration","scope":27923,"src":"4347:81:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts)"},"typeName":{"id":27769,"keyName":"pool","keyNameLocation":"4363:4:69","keyType":{"id":27766,"name":"address","nodeType":"ElementaryTypeName","src":"4355:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4347:54:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts)"},"valueName":"roleAccounts","valueNameLocation":"4388:12:69","valueType":{"id":27768,"nodeType":"UserDefinedTypeName","pathNode":{"id":27767,"name":"PoolRoleAccounts","nameLocations":["4371:16:69"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"4371:16:69"},"referencedDeclaration":4459,"src":"4371:16:69","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}}},"visibility":"internal"},{"constant":false,"id":27775,"mutability":"mutable","name":"_hooksContracts","nameLocation":"4544:15:69","nodeType":"VariableDeclaration","scope":27923,"src":"4489:70:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"},"typeName":{"id":27774,"keyName":"pool","keyNameLocation":"4505:4:69","keyType":{"id":27771,"name":"address","nodeType":"ElementaryTypeName","src":"4497:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4489:45:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"},"valueName":"hooksContract","valueNameLocation":"4520:13:69","valueType":{"id":27773,"nodeType":"UserDefinedTypeName","pathNode":{"id":27772,"name":"IHooks","nameLocations":["4513:6:69"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"4513:6:69"},"referencedDeclaration":1887,"src":"4513:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}},"visibility":"internal"},{"constant":false,"id":27781,"mutability":"mutable","name":"_poolTokens","nameLocation":"4672:11:69","nodeType":"VariableDeclaration","scope":27923,"src":"4618:65:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[])"},"typeName":{"id":27780,"keyName":"pool","keyNameLocation":"4634:4:69","keyType":{"id":27776,"name":"address","nodeType":"ElementaryTypeName","src":"4626:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4618:44:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[])"},"valueName":"poolTokens","valueNameLocation":"4651:10:69","valueType":{"baseType":{"id":27778,"nodeType":"UserDefinedTypeName","pathNode":{"id":27777,"name":"IERC20","nameLocations":["4642:6:69"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4642:6:69"},"referencedDeclaration":39274,"src":"4642:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":27779,"nodeType":"ArrayTypeName","src":"4642:8:69","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"visibility":"internal"},{"constant":false,"id":27789,"mutability":"mutable","name":"_poolTokenInfo","nameLocation":"4823:14:69","nodeType":"VariableDeclaration","scope":27923,"src":"4744:93:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo))"},"typeName":{"id":27788,"keyName":"pool","keyNameLocation":"4760:4:69","keyType":{"id":27782,"name":"address","nodeType":"ElementaryTypeName","src":"4752:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4744:69:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":27787,"keyName":"token","keyNameLocation":"4783:5:69","keyType":{"id":27784,"nodeType":"UserDefinedTypeName","pathNode":{"id":27783,"name":"IERC20","nameLocations":["4776:6:69"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4776:6:69"},"referencedDeclaration":39274,"src":"4776:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"4768:44:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo)"},"valueName":"tokenInfo","valueNameLocation":"4802:9:69","valueType":{"id":27786,"nodeType":"UserDefinedTypeName","pathNode":{"id":27785,"name":"TokenInfo","nameLocations":["4792:9:69"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"4792:9:69"},"referencedDeclaration":4486,"src":"4792:9:69","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}}}},"visibility":"internal"},{"constant":false,"id":27795,"mutability":"mutable","name":"_poolTokenBalances","nameLocation":"5226:18:69","nodeType":"VariableDeclaration","scope":27923,"src":"5134:110:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"},"typeName":{"id":27794,"keyName":"pool","keyNameLocation":"5150:4:69","keyType":{"id":27790,"name":"address","nodeType":"ElementaryTypeName","src":"5142:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5134:82:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":27793,"keyName":"tokenIndex","keyNameLocation":"5174:10:69","keyType":{"id":27791,"name":"uint256","nodeType":"ElementaryTypeName","src":"5166:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5158:57:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"5196:18:69","valueType":{"id":27792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5188:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}}},"visibility":"internal"},{"constant":false,"id":27802,"mutability":"mutable","name":"_aggregateFeeAmounts","nameLocation":"5597:20:69","nodeType":"VariableDeclaration","scope":27923,"src":"5513:104:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"},"typeName":{"id":27801,"keyName":"pool","keyNameLocation":"5529:4:69","keyType":{"id":27796,"name":"address","nodeType":"ElementaryTypeName","src":"5521:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5513:74:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":27800,"keyName":"token","keyNameLocation":"5552:5:69","keyType":{"id":27798,"nodeType":"UserDefinedTypeName","pathNode":{"id":27797,"name":"IERC20","nameLocations":["5545:6:69"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5545:6:69"},"referencedDeclaration":39274,"src":"5545:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"5537:49:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"},"valueName":"packedFeeAmounts","valueNameLocation":"5569:16:69","valueType":{"id":27799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5561:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}}},"visibility":"internal"},{"constant":false,"id":27804,"mutability":"immutable","name":"_vaultPauseWindowEndTime","nameLocation":"5980:24:69","nodeType":"VariableDeclaration","scope":27923,"src":"5954:50:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":27803,"name":"uint32","nodeType":"ElementaryTypeName","src":"5954:6:69","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":27806,"mutability":"immutable","name":"_vaultBufferPeriodEndTime","nameLocation":"6036:25:69","nodeType":"VariableDeclaration","scope":27923,"src":"6010:51:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":27805,"name":"uint32","nodeType":"ElementaryTypeName","src":"6010:6:69","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":27808,"mutability":"immutable","name":"_vaultBufferPeriodDuration","nameLocation":"6170:26:69","nodeType":"VariableDeclaration","scope":27923,"src":"6144:52:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":27807,"name":"uint32","nodeType":"ElementaryTypeName","src":"6144:6:69","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":27811,"mutability":"mutable","name":"_vaultStateBits","nameLocation":"6296:15:69","nodeType":"VariableDeclaration","scope":27923,"src":"6272:39:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":27810,"nodeType":"UserDefinedTypeName","pathNode":{"id":27809,"name":"VaultStateBits","nameLocations":["6272:14:69"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"6272:14:69"},"referencedDeclaration":30607,"src":"6272:14:69","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"},{"constant":false,"documentation":{"id":27812,"nodeType":"StructuredDocumentation","src":"6318:159:69","text":" @dev Represents the total reserve of each ERC20 token. It should be always equal to `token.balanceOf(vault)`,\n except during `unlock`."},"id":27817,"mutability":"mutable","name":"_reservesOf","nameLocation":"6537:11:69","nodeType":"VariableDeclaration","scope":27923,"src":"6482:66:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"},"typeName":{"id":27816,"keyName":"token","keyNameLocation":"6497:5:69","keyType":{"id":27814,"nodeType":"UserDefinedTypeName","pathNode":{"id":27813,"name":"IERC20","nameLocations":["6490:6:69"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"6490:6:69"},"referencedDeclaration":39274,"src":"6490:6:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"6482:45:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"},"valueName":"vaultBalance","valueNameLocation":"6514:12:69","valueType":{"id":27815,"name":"uint256","nodeType":"ElementaryTypeName","src":"6506:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"documentation":{"id":27818,"nodeType":"StructuredDocumentation","src":"6555:48:69","text":"@dev Flag that prevents re-enabling queries."},"id":27820,"mutability":"mutable","name":"_queriesDisabledPermanently","nameLocation":"6622:27:69","nodeType":"VariableDeclaration","scope":27923,"src":"6608:41:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27819,"name":"bool","nodeType":"ElementaryTypeName","src":"6608:4:69","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":27823,"mutability":"mutable","name":"_authorizer","nameLocation":"6954:11:69","nodeType":"VariableDeclaration","scope":27923,"src":"6933:32:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":27822,"nodeType":"UserDefinedTypeName","pathNode":{"id":27821,"name":"IAuthorizer","nameLocations":["6933:11:69"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"6933:11:69"},"referencedDeclaration":1316,"src":"6933:11:69","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"},{"constant":false,"id":27826,"mutability":"mutable","name":"_protocolFeeController","nameLocation":"7065:22:69","nodeType":"VariableDeclaration","scope":27923,"src":"7033:54:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":27825,"nodeType":"UserDefinedTypeName","pathNode":{"id":27824,"name":"IProtocolFeeController","nameLocations":["7033:22:69"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"7033:22:69"},"referencedDeclaration":2230,"src":"7033:22:69","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"},{"constant":false,"id":27831,"mutability":"mutable","name":"_bufferTokenBalances","nameLocation":"8207:20:69","nodeType":"VariableDeclaration","scope":27923,"src":"8137:90:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"},"typeName":{"id":27830,"keyName":"wrappedToken","keyNameLocation":"8154:12:69","keyType":{"id":27828,"nodeType":"UserDefinedTypeName","pathNode":{"id":27827,"name":"IERC4626","nameLocations":["8145:8:69"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8145:8:69"},"referencedDeclaration":38998,"src":"8145:8:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"nodeType":"Mapping","src":"8137:60:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"8178:18:69","valueType":{"id":27829,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8170:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":27838,"mutability":"mutable","name":"_bufferLpShares","nameLocation":"8549:15:69","nodeType":"VariableDeclaration","scope":27923,"src":"8462:102:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"},"typeName":{"id":27837,"keyName":"wrappedToken","keyNameLocation":"8479:12:69","keyType":{"id":27833,"nodeType":"UserDefinedTypeName","pathNode":{"id":27832,"name":"IERC4626","nameLocations":["8470:8:69"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8470:8:69"},"referencedDeclaration":38998,"src":"8470:8:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"nodeType":"Mapping","src":"8462:77:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":27836,"keyName":"user","keyNameLocation":"8511:4:69","keyType":{"id":27834,"name":"address","nodeType":"ElementaryTypeName","src":"8503:7:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"8495:43:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"userShares","valueNameLocation":"8527:10:69","valueType":{"id":27835,"name":"uint256","nodeType":"ElementaryTypeName","src":"8519:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":27843,"mutability":"mutable","name":"_bufferTotalShares","nameLocation":"8658:18:69","nodeType":"VariableDeclaration","scope":27923,"src":"8595:81:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"},"typeName":{"id":27842,"keyName":"wrappedToken","keyNameLocation":"8612:12:69","keyType":{"id":27840,"nodeType":"UserDefinedTypeName","pathNode":{"id":27839,"name":"IERC4626","nameLocations":["8603:8:69"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8603:8:69"},"referencedDeclaration":38998,"src":"8603:8:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"nodeType":"Mapping","src":"8595:53:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"},"valueName":"totalShares","valueNameLocation":"8636:11:69","valueType":{"id":27841,"name":"uint256","nodeType":"ElementaryTypeName","src":"8628:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":27848,"mutability":"mutable","name":"_bufferAssets","nameLocation":"8844:13:69","nodeType":"VariableDeclaration","scope":27923,"src":"8777:80:69","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"},"typeName":{"id":27847,"keyName":"wrappedToken","keyNameLocation":"8794:12:69","keyType":{"id":27845,"nodeType":"UserDefinedTypeName","pathNode":{"id":27844,"name":"IERC4626","nameLocations":["8785:8:69"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"8785:8:69"},"referencedDeclaration":38998,"src":"8785:8:69","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"nodeType":"Mapping","src":"8777:57:69","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"},"valueName":"underlyingToken","valueNameLocation":"8818:15:69","valueType":{"id":27846,"name":"address","nodeType":"ElementaryTypeName","src":"8810:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"body":{"id":27858,"nodeType":"Block","src":"9170:53:69","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27854,"name":"_IS_UNLOCKED_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27740,"src":"9187:17:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9205:9:69","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":9749,"src":"9187:27:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.BooleanSlotType)"}},"id":27856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9187:29:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"functionReturnParameters":27853,"id":27857,"nodeType":"Return","src":"9180:36:69"}]},"id":27859,"implemented":true,"kind":"function","modifiers":[],"name":"_isUnlocked","nameLocation":"9090:11:69","nodeType":"FunctionDefinition","parameters":{"id":27849,"nodeType":"ParameterList","parameters":[],"src":"9101:2:69"},"returnParameters":{"id":27853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27852,"mutability":"mutable","name":"slot","nameLocation":"9164:4:69","nodeType":"VariableDeclaration","scope":27859,"src":"9127:41:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"},"typeName":{"id":27851,"nodeType":"UserDefinedTypeName","pathNode":{"id":27850,"name":"StorageSlotExtension.BooleanSlotType","nameLocations":["9127:20:69","9148:15:69"],"nodeType":"IdentifierPath","referencedDeclaration":9734,"src":"9127:36:69"},"referencedDeclaration":9734,"src":"9127:36:69","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"visibility":"internal"}],"src":"9126:43:69"},"scope":27923,"src":"9081:142:69","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":27869,"nodeType":"Block","src":"9325:62:69","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27865,"name":"_NON_ZERO_DELTA_COUNT_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27745,"src":"9342:26:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9369:9:69","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"9342:36:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":27867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9342:38:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"functionReturnParameters":27864,"id":27868,"nodeType":"Return","src":"9335:45:69"}]},"id":27870,"implemented":true,"kind":"function","modifiers":[],"name":"_nonZeroDeltaCount","nameLocation":"9238:18:69","nodeType":"FunctionDefinition","parameters":{"id":27860,"nodeType":"ParameterList","parameters":[],"src":"9256:2:69"},"returnParameters":{"id":27864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27863,"mutability":"mutable","name":"slot","nameLocation":"9319:4:69","nodeType":"VariableDeclaration","scope":27870,"src":"9282:41:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":27862,"nodeType":"UserDefinedTypeName","pathNode":{"id":27861,"name":"StorageSlotExtension.Uint256SlotType","nameLocations":["9282:20:69","9303:15:69"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"9282:36:69"},"referencedDeclaration":9768,"src":"9282:36:69","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"9281:43:69"},"scope":27923,"src":"9229:158:69","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":27881,"nodeType":"Block","src":"9472:74:69","statements":[{"expression":{"arguments":[{"id":27878,"name":"_TOKEN_DELTAS_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27750,"src":"9520:18:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":27876,"name":"TokenDeltaMappingSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"9489:25:69","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"type(TokenDeltaMappingSlotType)"}},"id":27877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9515:4:69","memberName":"wrap","nodeType":"MemberAccess","src":"9489:30:69","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function (bytes32) pure returns (TokenDeltaMappingSlotType)"}},"id":27879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9489:50:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"functionReturnParameters":27875,"id":27880,"nodeType":"Return","src":"9482:57:69"}]},"id":27882,"implemented":true,"kind":"function","modifiers":[],"name":"_tokenDeltas","nameLocation":"9402:12:69","nodeType":"FunctionDefinition","parameters":{"id":27871,"nodeType":"ParameterList","parameters":[],"src":"9414:2:69"},"returnParameters":{"id":27875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27874,"mutability":"mutable","name":"slot","nameLocation":"9466:4:69","nodeType":"VariableDeclaration","scope":27882,"src":"9440:30:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"},"typeName":{"id":27873,"nodeType":"UserDefinedTypeName","pathNode":{"id":27872,"name":"TokenDeltaMappingSlotType","nameLocations":["9440:25:69"],"nodeType":"IdentifierPath","referencedDeclaration":6484,"src":"9440:25:69"},"referencedDeclaration":6484,"src":"9440:25:69","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"visibility":"internal"}],"src":"9439:32:69"},"scope":27923,"src":"9393:153:69","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":27893,"nodeType":"Block","src":"9646:90:69","statements":[{"expression":{"arguments":[{"id":27890,"name":"_ADD_LIQUIDITY_CALLED_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27755,"src":"9702:26:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":27888,"name":"UintToAddressToBooleanMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6488,"src":"9663:33:69","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"type(UintToAddressToBooleanMappingSlot)"}},"id":27889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9697:4:69","memberName":"wrap","nodeType":"MemberAccess","src":"9663:38:69","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function (bytes32) pure returns (UintToAddressToBooleanMappingSlot)"}},"id":27891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9663:66:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"functionReturnParameters":27887,"id":27892,"nodeType":"Return","src":"9656:73:69"}]},"id":27894,"implemented":true,"kind":"function","modifiers":[],"name":"_addLiquidityCalled","nameLocation":"9561:19:69","nodeType":"FunctionDefinition","parameters":{"id":27883,"nodeType":"ParameterList","parameters":[],"src":"9580:2:69"},"returnParameters":{"id":27887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27886,"mutability":"mutable","name":"slot","nameLocation":"9640:4:69","nodeType":"VariableDeclaration","scope":27894,"src":"9606:38:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"},"typeName":{"id":27885,"nodeType":"UserDefinedTypeName","pathNode":{"id":27884,"name":"UintToAddressToBooleanMappingSlot","nameLocations":["9606:33:69"],"nodeType":"IdentifierPath","referencedDeclaration":6488,"src":"9606:33:69"},"referencedDeclaration":6488,"src":"9606:33:69","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"visibility":"internal"}],"src":"9605:40:69"},"scope":27923,"src":"9552:184:69","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":27904,"nodeType":"Block","src":"9834:52:69","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":27900,"name":"_SESSION_ID_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27760,"src":"9851:16:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9868:9:69","memberName":"asUint256","nodeType":"MemberAccess","referencedDeclaration":9783,"src":"9851:26:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (StorageSlotExtension.Uint256SlotType)"}},"id":27902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9851:28:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"functionReturnParameters":27899,"id":27903,"nodeType":"Return","src":"9844:35:69"}]},"id":27905,"implemented":true,"kind":"function","modifiers":[],"name":"_sessionIdSlot","nameLocation":"9751:14:69","nodeType":"FunctionDefinition","parameters":{"id":27895,"nodeType":"ParameterList","parameters":[],"src":"9765:2:69"},"returnParameters":{"id":27899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27898,"mutability":"mutable","name":"slot","nameLocation":"9828:4:69","nodeType":"VariableDeclaration","scope":27905,"src":"9791:41:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":27897,"nodeType":"UserDefinedTypeName","pathNode":{"id":27896,"name":"StorageSlotExtension.Uint256SlotType","nameLocations":["9791:20:69","9812:15:69"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"9791:36:69"},"referencedDeclaration":9768,"src":"9791:36:69","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"9790:43:69"},"scope":27923,"src":"9742:144:69","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":27921,"nodeType":"Block","src":"9978:91:69","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":27915,"name":"VaultStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27923,"src":"10038:12:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VaultStorage_$27923_$","typeString":"type(contract VaultStorage)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_VaultStorage_$27923_$","typeString":"type(contract VaultStorage)"}],"id":27914,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10033:4:69","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":27916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10033:18:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_VaultStorage_$27923","typeString":"type(contract VaultStorage)"}},"id":27917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10052:4:69","memberName":"name","nodeType":"MemberAccess","src":"10033:23:69","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":27918,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27907,"src":"10058:3:69","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":27912,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"9995:23:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransientStorageHelpers_$7068_$","typeString":"type(library TransientStorageHelpers)"}},"id":27913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10019:13:69","memberName":"calculateSlot","nodeType":"MemberAccess","referencedDeclaration":6537,"src":"9995:37:69","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory,string memory) pure returns (bytes32)"}},"id":27919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9995:67:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":27911,"id":27920,"nodeType":"Return","src":"9988:74:69"}]},"id":27922,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateVaultStorageSlot","nameLocation":"9901:26:69","nodeType":"FunctionDefinition","parameters":{"id":27908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27907,"mutability":"mutable","name":"key","nameLocation":"9942:3:69","nodeType":"VariableDeclaration","scope":27922,"src":"9928:17:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":27906,"name":"string","nodeType":"ElementaryTypeName","src":"9928:6:69","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9927:19:69"},"returnParameters":{"id":27911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27922,"src":"9969:7:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":27909,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9969:7:69","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9968:9:69"},"scope":27923,"src":"9892:177:69","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":27924,"src":"1377:8694:69","usedErrors":[],"usedEvents":[]}],"src":"46:10026:69"},"id":69},"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"HooksConfigLib":[29013],"IERC20":[39274],"IERC4626":[38998],"IHooks":[1887],"IRateProvider":[150],"IVaultErrors":[3550],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolConfigConst":[29141],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WordCodec":[7535],"WrappingDirection":[4629]},"id":29014,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":27925,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:70"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":27927,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29014,"sourceUnit":3551,"src":"72:93:70","symbolAliases":[{"foreign":{"id":27926,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"81:12:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","id":27929,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29014,"sourceUnit":1888,"src":"166:81:70","symbolAliases":[{"foreign":{"id":27928,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"175:6:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":27930,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29014,"sourceUnit":4654,"src":"248:69:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","id":27932,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29014,"sourceUnit":7536,"src":"319:93:70","symbolAliases":[{"foreign":{"id":27931,"name":"WordCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7535,"src":"328:9:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol","file":"./PoolConfigConst.sol","id":27934,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29014,"sourceUnit":29142,"src":"414:56:70","symbolAliases":[{"foreign":{"id":27933,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"423:15:70","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"HooksConfigLib","contractDependencies":[],"contractKind":"library","documentation":{"id":27935,"nodeType":"StructuredDocumentation","src":"472:1405:70","text":" @notice Helper functions to read and write the packed hook configuration flags stored in `_poolConfigBits`.\n @dev This library has two additional functions. `toHooksConfig` constructs a `HooksConfig` structure from the\n PoolConfig and the hooks contract address. Also, there are `call` functions that forward the arguments\n to the corresponding functions in the hook contract, then validate and return the results.\n Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool).\n This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e.,\n offsets for each data field) is specified in `PoolConfigConst`.\n There are two libraries for interpreting these data. This one parses fields related to hooks, and also\n contains helpers for the struct building and hooks contract forwarding functions described above. `PoolConfigLib`\n contains helpers related to the non-hook-related flags, along with aggregate fee percentages and other data\n associated with pools.\n The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token\n configuration, scaling factors, and dynamic information such as current balances and rates.\n The hooks contract addresses themselves are stored in a separate `_hooksContracts` mapping."},"fullyImplemented":true,"id":29013,"linearizedBaseContracts":[29013],"name":"HooksConfigLib","nameLocation":"1886:14:70","nodeType":"ContractDefinition","nodes":[{"global":false,"id":27938,"libraryName":{"id":27936,"name":"WordCodec","nameLocations":["1913:9:70"],"nodeType":"IdentifierPath","referencedDeclaration":7535,"src":"1913:9:70"},"nodeType":"UsingForDirective","src":"1907:28:70","typeName":{"id":27937,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1927:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":27942,"libraryName":{"id":27939,"name":"HooksConfigLib","nameLocations":["1946:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":29013,"src":"1946:14:70"},"nodeType":"UsingForDirective","src":"1940:40:70","typeName":{"id":27941,"nodeType":"UserDefinedTypeName","pathNode":{"id":27940,"name":"PoolConfigBits","nameLocations":["1965:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1965:14:70"},"referencedDeclaration":4364,"src":"1965:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"body":{"id":27959,"nodeType":"Block","src":"2073:117:70","statements":[{"expression":{"arguments":[{"expression":{"id":27955,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2131:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":27956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2147:35:70","memberName":"ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29066,"src":"2131:51:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":27952,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27945,"src":"2112:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":27950,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2090:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":27951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2105:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"2090:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":27953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2090:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2120:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"2090:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":27957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2090:93:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":27949,"id":27958,"nodeType":"Return","src":"2083:100:70"}]},"id":27960,"implemented":true,"kind":"function","modifiers":[],"name":"enableHookAdjustedAmounts","nameLocation":"1995:25:70","nodeType":"FunctionDefinition","parameters":{"id":27946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27945,"mutability":"mutable","name":"config","nameLocation":"2036:6:70","nodeType":"VariableDeclaration","scope":27960,"src":"2021:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":27944,"nodeType":"UserDefinedTypeName","pathNode":{"id":27943,"name":"PoolConfigBits","nameLocations":["2021:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2021:14:70"},"referencedDeclaration":4364,"src":"2021:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2020:23:70"},"returnParameters":{"id":27949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27948,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27960,"src":"2067:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27947,"name":"bool","nodeType":"ElementaryTypeName","src":"2067:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2066:6:70"},"scope":29013,"src":"1986:204:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":27984,"nodeType":"Block","src":"2302:187:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":27978,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27965,"src":"2409:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":27979,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2416:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":27980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2432:35:70","memberName":"ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29066,"src":"2416:51:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":27975,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27963,"src":"2390:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":27973,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2368:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":27974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2383:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"2368:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":27976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2368:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2398:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"2368:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":27981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2368:100:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":27971,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2331:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":27972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2346:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"2331:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":27982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2331:151:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":27970,"id":27983,"nodeType":"Return","src":"2312:170:70"}]},"id":27985,"implemented":true,"kind":"function","modifiers":[],"name":"setHookAdjustedAmounts","nameLocation":"2205:22:70","nodeType":"FunctionDefinition","parameters":{"id":27966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27963,"mutability":"mutable","name":"config","nameLocation":"2243:6:70","nodeType":"VariableDeclaration","scope":27985,"src":"2228:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":27962,"nodeType":"UserDefinedTypeName","pathNode":{"id":27961,"name":"PoolConfigBits","nameLocations":["2228:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2228:14:70"},"referencedDeclaration":4364,"src":"2228:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":27965,"mutability":"mutable","name":"value","nameLocation":"2256:5:70","nodeType":"VariableDeclaration","scope":27985,"src":"2251:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27964,"name":"bool","nodeType":"ElementaryTypeName","src":"2251:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2227:35:70"},"returnParameters":{"id":27970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27969,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":27985,"src":"2286:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":27968,"nodeType":"UserDefinedTypeName","pathNode":{"id":27967,"name":"PoolConfigBits","nameLocations":["2286:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2286:14:70"},"referencedDeclaration":4364,"src":"2286:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2285:16:70"},"scope":29013,"src":"2196:293:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28002,"nodeType":"Block","src":"2583:106:70","statements":[{"expression":{"arguments":[{"expression":{"id":27998,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2641:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":27999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2657:24:70","memberName":"BEFORE_INITIALIZE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29061,"src":"2641:40:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":27995,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27988,"src":"2622:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":27993,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2600:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":27994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2615:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"2600:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":27996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2600:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":27997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2630:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"2600:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2600:82:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":27992,"id":28001,"nodeType":"Return","src":"2593:89:70"}]},"id":28003,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallBeforeInitialize","nameLocation":"2504:26:70","nodeType":"FunctionDefinition","parameters":{"id":27989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27988,"mutability":"mutable","name":"config","nameLocation":"2546:6:70","nodeType":"VariableDeclaration","scope":28003,"src":"2531:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":27987,"nodeType":"UserDefinedTypeName","pathNode":{"id":27986,"name":"PoolConfigBits","nameLocations":["2531:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2531:14:70"},"referencedDeclaration":4364,"src":"2531:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2530:23:70"},"returnParameters":{"id":27992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":27991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28003,"src":"2577:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":27990,"name":"bool","nodeType":"ElementaryTypeName","src":"2577:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2576:6:70"},"scope":29013,"src":"2495:194:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28027,"nodeType":"Block","src":"2808:176:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28008,"src":"2915:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28022,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2922:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2938:24:70","memberName":"BEFORE_INITIALIZE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29061,"src":"2922:40:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28018,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28006,"src":"2896:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28016,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2874:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2889:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"2874:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2904:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"2874:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:89:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28014,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2837:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2852:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"2837:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2837:140:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28013,"id":28026,"nodeType":"Return","src":"2818:159:70"}]},"id":28028,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallBeforeInitialize","nameLocation":"2704:29:70","nodeType":"FunctionDefinition","parameters":{"id":28009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28006,"mutability":"mutable","name":"config","nameLocation":"2749:6:70","nodeType":"VariableDeclaration","scope":28028,"src":"2734:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28005,"nodeType":"UserDefinedTypeName","pathNode":{"id":28004,"name":"PoolConfigBits","nameLocations":["2734:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2734:14:70"},"referencedDeclaration":4364,"src":"2734:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28008,"mutability":"mutable","name":"value","nameLocation":"2762:5:70","nodeType":"VariableDeclaration","scope":28028,"src":"2757:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28007,"name":"bool","nodeType":"ElementaryTypeName","src":"2757:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2733:35:70"},"returnParameters":{"id":28013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28012,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28028,"src":"2792:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28011,"nodeType":"UserDefinedTypeName","pathNode":{"id":28010,"name":"PoolConfigBits","nameLocations":["2792:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2792:14:70"},"referencedDeclaration":4364,"src":"2792:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2791:16:70"},"scope":29013,"src":"2695:289:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28045,"nodeType":"Block","src":"3077:105:70","statements":[{"expression":{"arguments":[{"expression":{"id":28041,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3135:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3151:23:70","memberName":"AFTER_INITIALIZE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29071,"src":"3135:39:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28038,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28031,"src":"3116:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28036,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3094:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3109:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"3094:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3094:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3124:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"3094:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3094:81:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28035,"id":28044,"nodeType":"Return","src":"3087:88:70"}]},"id":28046,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallAfterInitialize","nameLocation":"2999:25:70","nodeType":"FunctionDefinition","parameters":{"id":28032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28031,"mutability":"mutable","name":"config","nameLocation":"3040:6:70","nodeType":"VariableDeclaration","scope":28046,"src":"3025:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28030,"nodeType":"UserDefinedTypeName","pathNode":{"id":28029,"name":"PoolConfigBits","nameLocations":["3025:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3025:14:70"},"referencedDeclaration":4364,"src":"3025:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"3024:23:70"},"returnParameters":{"id":28035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28046,"src":"3071:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28033,"name":"bool","nodeType":"ElementaryTypeName","src":"3071:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3070:6:70"},"scope":29013,"src":"2990:192:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28070,"nodeType":"Block","src":"3300:175:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28051,"src":"3407:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28065,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3414:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3430:23:70","memberName":"AFTER_INITIALIZE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29071,"src":"3414:39:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28061,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28049,"src":"3388:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28059,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3366:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3381:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"3366:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3366:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3396:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"3366:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3366:88:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28057,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3329:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3344:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"3329:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3329:139:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28056,"id":28069,"nodeType":"Return","src":"3310:158:70"}]},"id":28071,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallAfterInitialize","nameLocation":"3197:28:70","nodeType":"FunctionDefinition","parameters":{"id":28052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28049,"mutability":"mutable","name":"config","nameLocation":"3241:6:70","nodeType":"VariableDeclaration","scope":28071,"src":"3226:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28048,"nodeType":"UserDefinedTypeName","pathNode":{"id":28047,"name":"PoolConfigBits","nameLocations":["3226:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3226:14:70"},"referencedDeclaration":4364,"src":"3226:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28051,"mutability":"mutable","name":"value","nameLocation":"3254:5:70","nodeType":"VariableDeclaration","scope":28071,"src":"3249:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28050,"name":"bool","nodeType":"ElementaryTypeName","src":"3249:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3225:35:70"},"returnParameters":{"id":28056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28071,"src":"3284:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28054,"nodeType":"UserDefinedTypeName","pathNode":{"id":28053,"name":"PoolConfigBits","nameLocations":["3284:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3284:14:70"},"referencedDeclaration":4364,"src":"3284:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"3283:16:70"},"scope":29013,"src":"3188:287:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28088,"nodeType":"Block","src":"3574:105:70","statements":[{"expression":{"arguments":[{"expression":{"id":28084,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3632:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3648:23:70","memberName":"DYNAMIC_SWAP_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29076,"src":"3632:39:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28081,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28074,"src":"3613:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28079,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3591:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3606:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"3591:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3591:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3621:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"3591:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3591:81:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28078,"id":28087,"nodeType":"Return","src":"3584:88:70"}]},"id":28089,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallComputeDynamicSwapFee","nameLocation":"3490:31:70","nodeType":"FunctionDefinition","parameters":{"id":28075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28074,"mutability":"mutable","name":"config","nameLocation":"3537:6:70","nodeType":"VariableDeclaration","scope":28089,"src":"3522:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28073,"nodeType":"UserDefinedTypeName","pathNode":{"id":28072,"name":"PoolConfigBits","nameLocations":["3522:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3522:14:70"},"referencedDeclaration":4364,"src":"3522:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"3521:23:70"},"returnParameters":{"id":28078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28077,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28089,"src":"3568:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28076,"name":"bool","nodeType":"ElementaryTypeName","src":"3568:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3567:6:70"},"scope":29013,"src":"3481:198:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28113,"nodeType":"Block","src":"3825:175:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28107,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28094,"src":"3932:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28108,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3939:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3955:23:70","memberName":"DYNAMIC_SWAP_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29076,"src":"3939:39:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28104,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28092,"src":"3913:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28102,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3891:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3906:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"3891:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3891:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3921:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"3891:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3891:88:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28100,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3854:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3869:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"3854:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3854:139:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28099,"id":28112,"nodeType":"Return","src":"3835:158:70"}]},"id":28114,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallComputeDynamicSwapFee","nameLocation":"3694:34:70","nodeType":"FunctionDefinition","parameters":{"id":28095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28092,"mutability":"mutable","name":"config","nameLocation":"3753:6:70","nodeType":"VariableDeclaration","scope":28114,"src":"3738:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28091,"nodeType":"UserDefinedTypeName","pathNode":{"id":28090,"name":"PoolConfigBits","nameLocations":["3738:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3738:14:70"},"referencedDeclaration":4364,"src":"3738:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28094,"mutability":"mutable","name":"value","nameLocation":"3774:5:70","nodeType":"VariableDeclaration","scope":28114,"src":"3769:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28093,"name":"bool","nodeType":"ElementaryTypeName","src":"3769:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3728:57:70"},"returnParameters":{"id":28099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28114,"src":"3809:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28097,"nodeType":"UserDefinedTypeName","pathNode":{"id":28096,"name":"PoolConfigBits","nameLocations":["3809:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3809:14:70"},"referencedDeclaration":4364,"src":"3809:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"3808:16:70"},"scope":29013,"src":"3685:315:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28131,"nodeType":"Block","src":"4088:100:70","statements":[{"expression":{"arguments":[{"expression":{"id":28127,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"4146:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4162:18:70","memberName":"BEFORE_SWAP_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29081,"src":"4146:34:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28124,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28117,"src":"4127:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28122,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4105:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4120:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"4105:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4105:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4135:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"4105:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4105:76:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28121,"id":28130,"nodeType":"Return","src":"4098:83:70"}]},"id":28132,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallBeforeSwap","nameLocation":"4015:20:70","nodeType":"FunctionDefinition","parameters":{"id":28118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28117,"mutability":"mutable","name":"config","nameLocation":"4051:6:70","nodeType":"VariableDeclaration","scope":28132,"src":"4036:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28116,"nodeType":"UserDefinedTypeName","pathNode":{"id":28115,"name":"PoolConfigBits","nameLocations":["4036:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4036:14:70"},"referencedDeclaration":4364,"src":"4036:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4035:23:70"},"returnParameters":{"id":28121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28132,"src":"4082:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28119,"name":"bool","nodeType":"ElementaryTypeName","src":"4082:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4081:6:70"},"scope":29013,"src":"4006:182:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28156,"nodeType":"Block","src":"4301:128:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28150,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28137,"src":"4379:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28151,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"4386:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4402:18:70","memberName":"BEFORE_SWAP_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29081,"src":"4386:34:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28147,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28135,"src":"4360:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28145,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4338:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4353:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"4338:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4338:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4368:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"4338:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4338:83:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28143,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4318:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4333:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"4318:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4318:104:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28142,"id":28155,"nodeType":"Return","src":"4311:111:70"}]},"id":28157,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallBeforeSwap","nameLocation":"4203:23:70","nodeType":"FunctionDefinition","parameters":{"id":28138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28135,"mutability":"mutable","name":"config","nameLocation":"4242:6:70","nodeType":"VariableDeclaration","scope":28157,"src":"4227:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28134,"nodeType":"UserDefinedTypeName","pathNode":{"id":28133,"name":"PoolConfigBits","nameLocations":["4227:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4227:14:70"},"referencedDeclaration":4364,"src":"4227:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28137,"mutability":"mutable","name":"value","nameLocation":"4255:5:70","nodeType":"VariableDeclaration","scope":28157,"src":"4250:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28136,"name":"bool","nodeType":"ElementaryTypeName","src":"4250:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4226:35:70"},"returnParameters":{"id":28142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28141,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28157,"src":"4285:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28140,"nodeType":"UserDefinedTypeName","pathNode":{"id":28139,"name":"PoolConfigBits","nameLocations":["4285:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4285:14:70"},"referencedDeclaration":4364,"src":"4285:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4284:16:70"},"scope":29013,"src":"4194:235:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28174,"nodeType":"Block","src":"4516:99:70","statements":[{"expression":{"arguments":[{"expression":{"id":28170,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"4574:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4590:17:70","memberName":"AFTER_SWAP_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29086,"src":"4574:33:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28167,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28160,"src":"4555:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28165,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4533:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4548:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"4533:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4533:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4563:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"4533:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4533:75:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28164,"id":28173,"nodeType":"Return","src":"4526:82:70"}]},"id":28175,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallAfterSwap","nameLocation":"4444:19:70","nodeType":"FunctionDefinition","parameters":{"id":28161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28160,"mutability":"mutable","name":"config","nameLocation":"4479:6:70","nodeType":"VariableDeclaration","scope":28175,"src":"4464:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28159,"nodeType":"UserDefinedTypeName","pathNode":{"id":28158,"name":"PoolConfigBits","nameLocations":["4464:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4464:14:70"},"referencedDeclaration":4364,"src":"4464:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4463:23:70"},"returnParameters":{"id":28164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28175,"src":"4510:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28162,"name":"bool","nodeType":"ElementaryTypeName","src":"4510:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4509:6:70"},"scope":29013,"src":"4435:180:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28199,"nodeType":"Block","src":"4727:127:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28193,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28180,"src":"4805:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28194,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"4812:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4828:17:70","memberName":"AFTER_SWAP_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29086,"src":"4812:33:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28190,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28178,"src":"4786:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28188,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4764:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4779:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"4764:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4764:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"4764:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4764:82:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28186,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4744:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4759:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"4744:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4744:103:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28185,"id":28198,"nodeType":"Return","src":"4737:110:70"}]},"id":28200,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallAfterSwap","nameLocation":"4630:22:70","nodeType":"FunctionDefinition","parameters":{"id":28181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28178,"mutability":"mutable","name":"config","nameLocation":"4668:6:70","nodeType":"VariableDeclaration","scope":28200,"src":"4653:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28177,"nodeType":"UserDefinedTypeName","pathNode":{"id":28176,"name":"PoolConfigBits","nameLocations":["4653:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4653:14:70"},"referencedDeclaration":4364,"src":"4653:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28180,"mutability":"mutable","name":"value","nameLocation":"4681:5:70","nodeType":"VariableDeclaration","scope":28200,"src":"4676:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28179,"name":"bool","nodeType":"ElementaryTypeName","src":"4676:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4652:35:70"},"returnParameters":{"id":28185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28200,"src":"4711:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28183,"nodeType":"UserDefinedTypeName","pathNode":{"id":28182,"name":"PoolConfigBits","nameLocations":["4711:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4711:14:70"},"referencedDeclaration":4364,"src":"4711:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4710:16:70"},"scope":29013,"src":"4621:233:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28217,"nodeType":"Block","src":"4950:109:70","statements":[{"expression":{"arguments":[{"expression":{"id":28213,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"5008:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5024:27:70","memberName":"BEFORE_ADD_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29091,"src":"5008:43:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28210,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28203,"src":"4989:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28208,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4967:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4982:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"4967:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4967:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4997:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"4967:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4967:85:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28207,"id":28216,"nodeType":"Return","src":"4960:92:70"}]},"id":28218,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallBeforeAddLiquidity","nameLocation":"4869:28:70","nodeType":"FunctionDefinition","parameters":{"id":28204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28203,"mutability":"mutable","name":"config","nameLocation":"4913:6:70","nodeType":"VariableDeclaration","scope":28218,"src":"4898:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28202,"nodeType":"UserDefinedTypeName","pathNode":{"id":28201,"name":"PoolConfigBits","nameLocations":["4898:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4898:14:70"},"referencedDeclaration":4364,"src":"4898:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4897:23:70"},"returnParameters":{"id":28207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28218,"src":"4944:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28205,"name":"bool","nodeType":"ElementaryTypeName","src":"4944:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4943:6:70"},"scope":29013,"src":"4860:199:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28242,"nodeType":"Block","src":"5180:179:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28223,"src":"5287:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28237,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"5294:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5310:27:70","memberName":"BEFORE_ADD_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29091,"src":"5294:43:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28233,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28221,"src":"5268:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28231,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5246:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5261:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"5246:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5246:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5276:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"5246:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5246:92:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28229,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5209:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5224:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"5209:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5209:143:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28228,"id":28241,"nodeType":"Return","src":"5190:162:70"}]},"id":28243,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallBeforeAddLiquidity","nameLocation":"5074:31:70","nodeType":"FunctionDefinition","parameters":{"id":28224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28221,"mutability":"mutable","name":"config","nameLocation":"5121:6:70","nodeType":"VariableDeclaration","scope":28243,"src":"5106:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28220,"nodeType":"UserDefinedTypeName","pathNode":{"id":28219,"name":"PoolConfigBits","nameLocations":["5106:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5106:14:70"},"referencedDeclaration":4364,"src":"5106:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28223,"mutability":"mutable","name":"value","nameLocation":"5134:5:70","nodeType":"VariableDeclaration","scope":28243,"src":"5129:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28222,"name":"bool","nodeType":"ElementaryTypeName","src":"5129:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5105:35:70"},"returnParameters":{"id":28228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28243,"src":"5164:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28226,"nodeType":"UserDefinedTypeName","pathNode":{"id":28225,"name":"PoolConfigBits","nameLocations":["5164:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5164:14:70"},"referencedDeclaration":4364,"src":"5164:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"5163:16:70"},"scope":29013,"src":"5065:294:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28260,"nodeType":"Block","src":"5454:108:70","statements":[{"expression":{"arguments":[{"expression":{"id":28256,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"5512:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5528:26:70","memberName":"AFTER_ADD_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29096,"src":"5512:42:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28253,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28246,"src":"5493:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28251,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5471:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5486:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"5471:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5471:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5501:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"5471:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5471:84:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28250,"id":28259,"nodeType":"Return","src":"5464:91:70"}]},"id":28261,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallAfterAddLiquidity","nameLocation":"5374:27:70","nodeType":"FunctionDefinition","parameters":{"id":28247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28246,"mutability":"mutable","name":"config","nameLocation":"5417:6:70","nodeType":"VariableDeclaration","scope":28261,"src":"5402:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28245,"nodeType":"UserDefinedTypeName","pathNode":{"id":28244,"name":"PoolConfigBits","nameLocations":["5402:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5402:14:70"},"referencedDeclaration":4364,"src":"5402:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"5401:23:70"},"returnParameters":{"id":28250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28261,"src":"5448:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28248,"name":"bool","nodeType":"ElementaryTypeName","src":"5448:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5447:6:70"},"scope":29013,"src":"5365:197:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28285,"nodeType":"Block","src":"5682:178:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28266,"src":"5789:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28280,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"5796:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5812:26:70","memberName":"AFTER_ADD_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29096,"src":"5796:42:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28276,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28264,"src":"5770:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28274,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5748:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5763:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"5748:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5748:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5778:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"5748:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5748:91:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28272,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5711:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5726:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"5711:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5711:142:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28271,"id":28284,"nodeType":"Return","src":"5692:161:70"}]},"id":28286,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallAfterAddLiquidity","nameLocation":"5577:30:70","nodeType":"FunctionDefinition","parameters":{"id":28267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28264,"mutability":"mutable","name":"config","nameLocation":"5623:6:70","nodeType":"VariableDeclaration","scope":28286,"src":"5608:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28263,"nodeType":"UserDefinedTypeName","pathNode":{"id":28262,"name":"PoolConfigBits","nameLocations":["5608:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5608:14:70"},"referencedDeclaration":4364,"src":"5608:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28266,"mutability":"mutable","name":"value","nameLocation":"5636:5:70","nodeType":"VariableDeclaration","scope":28286,"src":"5631:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28265,"name":"bool","nodeType":"ElementaryTypeName","src":"5631:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5607:35:70"},"returnParameters":{"id":28271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28286,"src":"5666:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28269,"nodeType":"UserDefinedTypeName","pathNode":{"id":28268,"name":"PoolConfigBits","nameLocations":["5666:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5666:14:70"},"referencedDeclaration":4364,"src":"5666:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"5665:16:70"},"scope":29013,"src":"5568:292:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28303,"nodeType":"Block","src":"5959:112:70","statements":[{"expression":{"arguments":[{"expression":{"id":28299,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"6017:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6033:30:70","memberName":"BEFORE_REMOVE_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29101,"src":"6017:46:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28296,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28289,"src":"5998:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28294,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5976:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5991:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"5976:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5976:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6006:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"5976:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5976:88:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28293,"id":28302,"nodeType":"Return","src":"5969:95:70"}]},"id":28304,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallBeforeRemoveLiquidity","nameLocation":"5875:31:70","nodeType":"FunctionDefinition","parameters":{"id":28290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28289,"mutability":"mutable","name":"config","nameLocation":"5922:6:70","nodeType":"VariableDeclaration","scope":28304,"src":"5907:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28288,"nodeType":"UserDefinedTypeName","pathNode":{"id":28287,"name":"PoolConfigBits","nameLocations":["5907:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5907:14:70"},"referencedDeclaration":4364,"src":"5907:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"5906:23:70"},"returnParameters":{"id":28293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28304,"src":"5953:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28291,"name":"bool","nodeType":"ElementaryTypeName","src":"5953:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5952:6:70"},"scope":29013,"src":"5866:205:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28328,"nodeType":"Block","src":"6217:182:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28322,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28309,"src":"6324:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28323,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"6331:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6347:30:70","memberName":"BEFORE_REMOVE_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29101,"src":"6331:46:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28319,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28307,"src":"6305:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28317,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6283:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6298:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"6283:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6283:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6313:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"6283:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6283:95:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28315,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6246:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6261:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"6246:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6246:146:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28314,"id":28327,"nodeType":"Return","src":"6227:165:70"}]},"id":28329,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallBeforeRemoveLiquidity","nameLocation":"6086:34:70","nodeType":"FunctionDefinition","parameters":{"id":28310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28307,"mutability":"mutable","name":"config","nameLocation":"6145:6:70","nodeType":"VariableDeclaration","scope":28329,"src":"6130:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28306,"nodeType":"UserDefinedTypeName","pathNode":{"id":28305,"name":"PoolConfigBits","nameLocations":["6130:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6130:14:70"},"referencedDeclaration":4364,"src":"6130:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28309,"mutability":"mutable","name":"value","nameLocation":"6166:5:70","nodeType":"VariableDeclaration","scope":28329,"src":"6161:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28308,"name":"bool","nodeType":"ElementaryTypeName","src":"6161:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6120:57:70"},"returnParameters":{"id":28314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28329,"src":"6201:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28312,"nodeType":"UserDefinedTypeName","pathNode":{"id":28311,"name":"PoolConfigBits","nameLocations":["6201:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6201:14:70"},"referencedDeclaration":4364,"src":"6201:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"6200:16:70"},"scope":29013,"src":"6077:322:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28346,"nodeType":"Block","src":"6497:111:70","statements":[{"expression":{"arguments":[{"expression":{"id":28342,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"6555:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6571:29:70","memberName":"AFTER_REMOVE_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29106,"src":"6555:45:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28339,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28332,"src":"6536:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28337,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6514:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6529:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"6514:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6514:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6544:10:70","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"6514:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":28344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6514:87:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":28336,"id":28345,"nodeType":"Return","src":"6507:94:70"}]},"id":28347,"implemented":true,"kind":"function","modifiers":[],"name":"shouldCallAfterRemoveLiquidity","nameLocation":"6414:30:70","nodeType":"FunctionDefinition","parameters":{"id":28333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28332,"mutability":"mutable","name":"config","nameLocation":"6460:6:70","nodeType":"VariableDeclaration","scope":28347,"src":"6445:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28331,"nodeType":"UserDefinedTypeName","pathNode":{"id":28330,"name":"PoolConfigBits","nameLocations":["6445:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6445:14:70"},"referencedDeclaration":4364,"src":"6445:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"6444:23:70"},"returnParameters":{"id":28336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28347,"src":"6491:4:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28334,"name":"bool","nodeType":"ElementaryTypeName","src":"6491:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6490:6:70"},"scope":29013,"src":"6405:203:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28371,"nodeType":"Block","src":"6753:181:70","statements":[{"expression":{"arguments":[{"arguments":[{"id":28365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28352,"src":"6860:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":28366,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"6867:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":28367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6883:29:70","memberName":"AFTER_REMOVE_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29106,"src":"6867:45:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":28362,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28350,"src":"6841:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":28360,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6819:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6834:6:70","memberName":"unwrap","nodeType":"MemberAccess","src":"6819:21:70","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":28363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6819:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":28364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6849:10:70","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"6819:40:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":28368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6819:94:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":28358,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6782:14:70","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":28359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6797:4:70","memberName":"wrap","nodeType":"MemberAccess","src":"6782:19:70","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":28369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6782:145:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":28357,"id":28370,"nodeType":"Return","src":"6763:164:70"}]},"id":28372,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldCallAfterRemoveLiquidity","nameLocation":"6623:33:70","nodeType":"FunctionDefinition","parameters":{"id":28353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28350,"mutability":"mutable","name":"config","nameLocation":"6681:6:70","nodeType":"VariableDeclaration","scope":28372,"src":"6666:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28349,"nodeType":"UserDefinedTypeName","pathNode":{"id":28348,"name":"PoolConfigBits","nameLocations":["6666:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6666:14:70"},"referencedDeclaration":4364,"src":"6666:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28352,"mutability":"mutable","name":"value","nameLocation":"6702:5:70","nodeType":"VariableDeclaration","scope":28372,"src":"6697:10:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28351,"name":"bool","nodeType":"ElementaryTypeName","src":"6697:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6656:57:70"},"returnParameters":{"id":28357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28356,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28372,"src":"6737:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28355,"nodeType":"UserDefinedTypeName","pathNode":{"id":28354,"name":"PoolConfigBits","nameLocations":["6737:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6737:14:70"},"referencedDeclaration":4364,"src":"6737:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"6736:16:70"},"scope":29013,"src":"6614:320:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28421,"nodeType":"Block","src":"7051:932:70","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28385,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7137:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7144:25:70","memberName":"enableHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":27960,"src":"7137:32:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7137:34:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28388,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7217:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7224:26:70","memberName":"shouldCallBeforeInitialize","nodeType":"MemberAccess","referencedDeclaration":28003,"src":"7217:33:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7217:35:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28391,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7297:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7304:25:70","memberName":"shouldCallAfterInitialize","nodeType":"MemberAccess","referencedDeclaration":28046,"src":"7297:32:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7297:34:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28394,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7379:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7386:28:70","memberName":"shouldCallBeforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28218,"src":"7379:35:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7379:37:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28397,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7463:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7470:27:70","memberName":"shouldCallAfterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28261,"src":"7463:34:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7463:36:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28400,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7550:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7557:31:70","memberName":"shouldCallBeforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28304,"src":"7550:38:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7550:40:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28403,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7640:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7647:30:70","memberName":"shouldCallAfterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28347,"src":"7640:37:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7640:39:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28406,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7730:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7737:31:70","memberName":"shouldCallComputeDynamicSwapFee","nodeType":"MemberAccess","referencedDeclaration":28089,"src":"7730:38:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7730:40:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28409,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7810:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7817:20:70","memberName":"shouldCallBeforeSwap","nodeType":"MemberAccess","referencedDeclaration":28132,"src":"7810:27:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7810:29:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28412,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28375,"src":"7878:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7885:19:70","memberName":"shouldCallAfterSwap","nodeType":"MemberAccess","referencedDeclaration":28175,"src":"7878:26:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7878:28:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":28417,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28378,"src":"7947:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}],"id":28416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7939:7:70","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":28415,"name":"address","nodeType":"ElementaryTypeName","src":"7939:7:70","typeDescriptions":{}}},"id":28418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7939:22:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":28384,"name":"HooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4433,"src":"7080:11:70","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_HooksConfig_$4433_storage_ptr_$","typeString":"type(struct HooksConfig storage pointer)"}},"id":28419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7110:25:70","7189:26:70","7270:25:70","7349:28:70","7434:27:70","7517:31:70","7608:30:70","7697:31:70","7788:20:70","7857:19:70","7924:13:70"],"names":["enableHookAdjustedAmounts","shouldCallBeforeInitialize","shouldCallAfterInitialize","shouldCallBeforeAddLiquidity","shouldCallAfterAddLiquidity","shouldCallBeforeRemoveLiquidity","shouldCallAfterRemoveLiquidity","shouldCallComputeDynamicSwapFee","shouldCallBeforeSwap","shouldCallAfterSwap","hooksContract"],"nodeType":"FunctionCall","src":"7080:896:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"functionReturnParameters":28383,"id":28420,"nodeType":"Return","src":"7061:915:70"}]},"id":28422,"implemented":true,"kind":"function","modifiers":[],"name":"toHooksConfig","nameLocation":"6949:13:70","nodeType":"FunctionDefinition","parameters":{"id":28379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28375,"mutability":"mutable","name":"config","nameLocation":"6978:6:70","nodeType":"VariableDeclaration","scope":28422,"src":"6963:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28374,"nodeType":"UserDefinedTypeName","pathNode":{"id":28373,"name":"PoolConfigBits","nameLocations":["6963:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6963:14:70"},"referencedDeclaration":4364,"src":"6963:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28378,"mutability":"mutable","name":"hooksContract","nameLocation":"6993:13:70","nodeType":"VariableDeclaration","scope":28422,"src":"6986:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28377,"nodeType":"UserDefinedTypeName","pathNode":{"id":28376,"name":"IHooks","nameLocations":["6986:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"6986:6:70"},"referencedDeclaration":1887,"src":"6986:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"6962:45:70"},"returnParameters":{"id":28383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28422,"src":"7031:18:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig"},"typeName":{"id":28381,"nodeType":"UserDefinedTypeName","pathNode":{"id":28380,"name":"HooksConfig","nameLocations":["7031:11:70"],"nodeType":"IdentifierPath","referencedDeclaration":4433,"src":"7031:11:70"},"referencedDeclaration":4433,"src":"7031:11:70","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_storage_ptr","typeString":"struct HooksConfig"}},"visibility":"internal"}],"src":"7030:20:70"},"scope":29013,"src":"6940:1043:70","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":28471,"nodeType":"Block","src":"8655:644:70","statements":[{"assignments":[28439,28441],"declarations":[{"constant":false,"id":28439,"mutability":"mutable","name":"success","nameLocation":"8671:7:70","nodeType":"VariableDeclaration","scope":28471,"src":"8666:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28438,"name":"bool","nodeType":"ElementaryTypeName","src":"8666:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":28441,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"8688:17:70","nodeType":"VariableDeclaration","scope":28471,"src":"8680:25:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28440,"name":"uint256","nodeType":"ElementaryTypeName","src":"8680:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28448,"initialValue":{"arguments":[{"id":28444,"name":"swapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28426,"src":"8770:10:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},{"id":28445,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28428,"src":"8794:4:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":28446,"name":"staticSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28430,"src":"8812:23:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28442,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28433,"src":"8709:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8723:33:70","memberName":"onComputeDynamicSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":1886,"src":"8709:47:70","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_struct$_PoolSwapParams_$4554_memory_ptr_$_t_address_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (struct PoolSwapParams memory,address,uint256) view external returns (bool,uint256)"}},"id":28447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8709:136:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8665:180:70"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28449,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28439,"src":"8860:7:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8871:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8860:16:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28458,"nodeType":"IfStatement","src":"8856:93:70","trueBody":{"id":28457,"nodeType":"Block","src":"8878:71:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28452,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"8899:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8912:24:70","memberName":"DynamicSwapFeeHookFailed","nodeType":"MemberAccess","referencedDeclaration":3261,"src":"8899:37:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8899:39:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28456,"nodeType":"RevertStatement","src":"8892:46:70"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28459,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28441,"src":"9153:17:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":28460,"name":"MAX_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"9173:18:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9153:38:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28468,"nodeType":"IfStatement","src":"9149:109:70","trueBody":{"id":28467,"nodeType":"Block","src":"9193:65:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28462,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"9214:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9227:18:70","memberName":"PercentageAboveMax","nodeType":"MemberAccess","referencedDeclaration":3401,"src":"9214:31:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9214:33:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28466,"nodeType":"RevertStatement","src":"9207:40:70"}]}},{"expression":{"id":28469,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28441,"src":"9275:17:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28437,"id":28470,"nodeType":"Return","src":"9268:24:70"}]},"documentation":{"id":28423,"nodeType":"StructuredDocumentation","src":"7989:449:70","text":" @dev Call the `onComputeDynamicSwapFeePercentage` hook and return the result. Reverts on failure.\n @param swapParams The swap parameters used to calculate the fee\n @param pool Pool address\n @param staticSwapFeePercentage Value of the static swap fee, for reference\n @param hooksContract Storage slot with the address of the hooks contract\n @return swapFeePercentage The calculated swap fee percentage"},"id":28472,"implemented":true,"kind":"function","modifiers":[],"name":"callComputeDynamicSwapFeeHook","nameLocation":"8452:29:70","nodeType":"FunctionDefinition","parameters":{"id":28434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28426,"mutability":"mutable","name":"swapParams","nameLocation":"8513:10:70","nodeType":"VariableDeclaration","scope":28472,"src":"8491:32:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":28425,"nodeType":"UserDefinedTypeName","pathNode":{"id":28424,"name":"PoolSwapParams","nameLocations":["8491:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"8491:14:70"},"referencedDeclaration":4554,"src":"8491:14:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":28428,"mutability":"mutable","name":"pool","nameLocation":"8541:4:70","nodeType":"VariableDeclaration","scope":28472,"src":"8533:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28427,"name":"address","nodeType":"ElementaryTypeName","src":"8533:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28430,"mutability":"mutable","name":"staticSwapFeePercentage","nameLocation":"8563:23:70","nodeType":"VariableDeclaration","scope":28472,"src":"8555:31:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28429,"name":"uint256","nodeType":"ElementaryTypeName","src":"8555:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28433,"mutability":"mutable","name":"hooksContract","nameLocation":"8603:13:70","nodeType":"VariableDeclaration","scope":28472,"src":"8596:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28432,"nodeType":"UserDefinedTypeName","pathNode":{"id":28431,"name":"IHooks","nameLocations":["8596:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"8596:6:70"},"referencedDeclaration":1887,"src":"8596:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"8481:141:70"},"returnParameters":{"id":28437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28472,"src":"8646:7:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28435,"name":"uint256","nodeType":"ElementaryTypeName","src":"8646:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8645:9:70"},"scope":29013,"src":"8443:856:70","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":28498,"nodeType":"Block","src":"9664:243:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":28486,"name":"swapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28476,"src":"9705:10:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},{"id":28487,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28478,"src":"9717:4:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":28484,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28481,"src":"9678:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9692:12:70","memberName":"onBeforeSwap","nodeType":"MemberAccess","referencedDeclaration":1860,"src":"9678:26:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_PoolSwapParams_$4554_memory_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct PoolSwapParams memory,address) external returns (bool)"}},"id":28488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9678:44:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9726:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"9678:53:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28497,"nodeType":"IfStatement","src":"9674:227:70","trueBody":{"id":28496,"nodeType":"Block","src":"9733:168:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28491,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"9855:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9868:20:70","memberName":"BeforeSwapHookFailed","nodeType":"MemberAccess","referencedDeclaration":3264,"src":"9855:33:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9855:35:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28495,"nodeType":"RevertStatement","src":"9848:42:70"}]}}]},"documentation":{"id":28473,"nodeType":"StructuredDocumentation","src":"9305:247:70","text":" @dev Call the `onBeforeSwap` hook. Reverts on failure.\n @param swapParams The swap parameters used in the hook\n @param pool Pool address\n @param hooksContract Storage slot with the address of the hooks contract"},"id":28499,"implemented":true,"kind":"function","modifiers":[],"name":"callBeforeSwapHook","nameLocation":"9566:18:70","nodeType":"FunctionDefinition","parameters":{"id":28482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28476,"mutability":"mutable","name":"swapParams","nameLocation":"9607:10:70","nodeType":"VariableDeclaration","scope":28499,"src":"9585:32:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":28475,"nodeType":"UserDefinedTypeName","pathNode":{"id":28474,"name":"PoolSwapParams","nameLocations":["9585:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"9585:14:70"},"referencedDeclaration":4554,"src":"9585:14:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":28478,"mutability":"mutable","name":"pool","nameLocation":"9627:4:70","nodeType":"VariableDeclaration","scope":28499,"src":"9619:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28477,"name":"address","nodeType":"ElementaryTypeName","src":"9619:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28481,"mutability":"mutable","name":"hooksContract","nameLocation":"9640:13:70","nodeType":"VariableDeclaration","scope":28499,"src":"9633:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28480,"nodeType":"UserDefinedTypeName","pathNode":{"id":28479,"name":"IHooks","nameLocations":["9633:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"9633:6:70"},"referencedDeclaration":1887,"src":"9633:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"9584:70:70"},"returnParameters":{"id":28483,"nodeType":"ParameterList","parameters":[],"src":"9664:0:70"},"scope":29013,"src":"9557:350:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":28634,"nodeType":"Block","src":"11164:1965:70","statements":[{"assignments":[28527,28529],"declarations":[{"constant":false,"id":28527,"mutability":"mutable","name":"amountInScaled18","nameLocation":"11234:16:70","nodeType":"VariableDeclaration","scope":28634,"src":"11226:24:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28526,"name":"uint256","nodeType":"ElementaryTypeName","src":"11226:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28529,"mutability":"mutable","name":"amountOutScaled18","nameLocation":"11260:17:70","nodeType":"VariableDeclaration","scope":28634,"src":"11252:25:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28528,"name":"uint256","nodeType":"ElementaryTypeName","src":"11252:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28544,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":28534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":28530,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"11281:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11297:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"11281:20:70","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":28532,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"11305:8:70","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":28533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11314:8:70","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"11305:17:70","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"11281:41:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":28539,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28505,"src":"11406:24:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":28540,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28515,"src":"11432:5:70","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":28541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11438:19:70","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4440,"src":"11432:25:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":28542,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11405:53:70","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":28543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11281:177:70","trueExpression":{"components":[{"expression":{"id":28535,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28515,"src":"11338:5:70","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":28536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11344:19:70","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4440,"src":"11338:25:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28537,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28505,"src":"11365:24:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":28538,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11337:53:70","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11225:233:70"},{"assignments":[28546,28548],"declarations":[{"constant":false,"id":28546,"mutability":"mutable","name":"success","nameLocation":"11475:7:70","nodeType":"VariableDeclaration","scope":28634,"src":"11470:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28545,"name":"bool","nodeType":"ElementaryTypeName","src":"11470:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":28548,"mutability":"mutable","name":"hookAdjustedAmountCalculatedRaw","nameLocation":"11492:31:70","nodeType":"VariableDeclaration","scope":28634,"src":"11484:39:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28547,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28579,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":28552,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"11606:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11622:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"11606:20:70","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"expression":{"id":28554,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"11653:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11669:7:70","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4526,"src":"11653:23:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":28556,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"11704:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11720:8:70","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"11704:24:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":28558,"name":"amountInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28527,"src":"11764:16:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28559,"name":"amountOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28529,"src":"11817:17:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":28560,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28518,"src":"11876:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11885:20:70","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"11876:29:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28564,"indexExpression":{"expression":{"id":28562,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28515,"src":"11906:5:70","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":28563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11912:7:70","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4436,"src":"11906:13:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11876:44:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":28565,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28518,"src":"11963:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28566,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11972:20:70","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"11963:29:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28569,"indexExpression":{"expression":{"id":28567,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28515,"src":"11993:5:70","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},"id":28568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11999:8:70","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4438,"src":"11993:14:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11963:45:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28570,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28505,"src":"12052:24:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28571,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28507,"src":"12115:19:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28572,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28509,"src":"12160:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28573,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"12190:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12206:4:70","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4523,"src":"12190:20:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28575,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"12238:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12254:8:70","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4535,"src":"12238:24:70","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":28551,"name":"AfterSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"11566:15:70","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AfterSwapParams_$4583_storage_ptr_$","typeString":"type(struct AfterSwapParams storage pointer)"}},"id":28577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["11600:4:70","11644:7:70","11694:8:70","11746:16:70","11798:17:70","11852:22:70","11938:23:70","12026:24:70","12094:19:70","12152:6:70","12184:4:70","12228:8:70"],"names":["kind","tokenIn","tokenOut","amountInScaled18","amountOutScaled18","tokenInBalanceScaled18","tokenOutBalanceScaled18","amountCalculatedScaled18","amountCalculatedRaw","router","pool","userData"],"nodeType":"FunctionCall","src":"11566:711:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_memory_ptr","typeString":"struct AfterSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_memory_ptr","typeString":"struct AfterSwapParams memory"}],"expression":{"id":28549,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28521,"src":"11527:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11541:11:70","memberName":"onAfterSwap","nodeType":"MemberAccess","referencedDeclaration":1871,"src":"11527:25:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_AfterSwapParams_$4583_memory_ptr_$returns$_t_bool_$_t_uint256_$","typeString":"function (struct AfterSwapParams memory) external returns (bool,uint256)"}},"id":28578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11527:760:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11469:818:70"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28580,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28546,"src":"12302:7:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12313:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12302:16:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28589,"nodeType":"IfStatement","src":"12298:188:70","trueBody":{"id":28588,"nodeType":"Block","src":"12320:166:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28583,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"12441:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12454:19:70","memberName":"AfterSwapHookFailed","nodeType":"MemberAccess","referencedDeclaration":3267,"src":"12441:32:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12441:34:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28587,"nodeType":"RevertStatement","src":"12434:41:70"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28590,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28503,"src":"12588:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12595:25:70","memberName":"enableHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":27960,"src":"12588:32:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12588:34:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12626:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12588:43:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28598,"nodeType":"IfStatement","src":"12584:100:70","trueBody":{"id":28597,"nodeType":"Block","src":"12633:51:70","statements":[{"expression":{"id":28595,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28507,"src":"12654:19:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28525,"id":28596,"nodeType":"Return","src":"12647:26:70"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":28603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":28599,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"12712:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28600,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12728:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"12712:20:70","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":28601,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12736:8:70","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":28602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12745:8:70","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"12736:17:70","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"12712:41:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28604,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28548,"src":"12757:31:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":28605,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"12791:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12807:8:70","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4533,"src":"12791:24:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12757:58:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12712:103:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":28609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12711:105:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":28614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":28610,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"12833:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12849:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4521,"src":"12833:20:70","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":28612,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"12857:8:70","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":28613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12866:9:70","memberName":"EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"12857:18:70","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"12833:42:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28615,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28548,"src":"12879:31:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":28616,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"12913:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28617,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12929:8:70","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4533,"src":"12913:24:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12879:58:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12833:104:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":28620,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12832:106:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12711:227:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28631,"nodeType":"IfStatement","src":"12694:380:70","trueBody":{"id":28630,"nodeType":"Block","src":"12949:125:70","statements":[{"errorCall":{"arguments":[{"id":28625,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28548,"src":"13005:31:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":28626,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28512,"src":"13038:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},"id":28627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13054:8:70","memberName":"limitRaw","nodeType":"MemberAccess","referencedDeclaration":4533,"src":"13038:24:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28622,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"12970:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12983:21:70","memberName":"HookAdjustedSwapLimit","nodeType":"MemberAccess","referencedDeclaration":3314,"src":"12970:34:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":28628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12970:93:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28629,"nodeType":"RevertStatement","src":"12963:100:70"}]}},{"expression":{"id":28632,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28548,"src":"13091:31:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":28525,"id":28633,"nodeType":"Return","src":"13084:38:70"}]},"documentation":{"id":28500,"nodeType":"StructuredDocumentation","src":"9913:908:70","text":" @dev Call the `onAfterSwap` hook, then validate and return the result. Reverts on failure, or if the limits\n are violated. If the hook contract did not enable hook-adjusted amounts, it will ignore the hook results and\n return the original `amountCalculatedRaw`.\n @param config The encoded pool configuration\n @param amountCalculatedScaled18 Token amount calculated by the swap\n @param amountCalculatedRaw Token amount calculated by the swap\n @param router Router address\n @param vaultSwapParams The swap parameters\n @param state Temporary state used in swap operations\n @param poolData Struct containing balance and token information of the pool\n @param hooksContract Storage slot with the address of the hooks contract\n @return hookAdjustedAmountCalculatedRaw New amount calculated, potentially modified by the hook"},"id":28635,"implemented":true,"kind":"function","modifiers":[],"name":"callAfterSwapHook","nameLocation":"10835:17:70","nodeType":"FunctionDefinition","parameters":{"id":28522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28503,"mutability":"mutable","name":"config","nameLocation":"10877:6:70","nodeType":"VariableDeclaration","scope":28635,"src":"10862:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28502,"nodeType":"UserDefinedTypeName","pathNode":{"id":28501,"name":"PoolConfigBits","nameLocations":["10862:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"10862:14:70"},"referencedDeclaration":4364,"src":"10862:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28505,"mutability":"mutable","name":"amountCalculatedScaled18","nameLocation":"10901:24:70","nodeType":"VariableDeclaration","scope":28635,"src":"10893:32:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28504,"name":"uint256","nodeType":"ElementaryTypeName","src":"10893:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28507,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"10943:19:70","nodeType":"VariableDeclaration","scope":28635,"src":"10935:27:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28506,"name":"uint256","nodeType":"ElementaryTypeName","src":"10935:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28509,"mutability":"mutable","name":"router","nameLocation":"10980:6:70","nodeType":"VariableDeclaration","scope":28635,"src":"10972:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28508,"name":"address","nodeType":"ElementaryTypeName","src":"10972:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28512,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"11019:15:70","nodeType":"VariableDeclaration","scope":28635,"src":"10996:38:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":28511,"nodeType":"UserDefinedTypeName","pathNode":{"id":28510,"name":"VaultSwapParams","nameLocations":["10996:15:70"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"10996:15:70"},"referencedDeclaration":4536,"src":"10996:15:70","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":28515,"mutability":"mutable","name":"state","nameLocation":"11061:5:70","nodeType":"VariableDeclaration","scope":28635,"src":"11044:22:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":28514,"nodeType":"UserDefinedTypeName","pathNode":{"id":28513,"name":"SwapState","nameLocations":["11044:9:70"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"11044:9:70"},"referencedDeclaration":4443,"src":"11044:9:70","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":28518,"mutability":"mutable","name":"poolData","nameLocation":"11092:8:70","nodeType":"VariableDeclaration","scope":28635,"src":"11076:24:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":28517,"nodeType":"UserDefinedTypeName","pathNode":{"id":28516,"name":"PoolData","nameLocations":["11076:8:70"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"11076:8:70"},"referencedDeclaration":4511,"src":"11076:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":28521,"mutability":"mutable","name":"hooksContract","nameLocation":"11117:13:70","nodeType":"VariableDeclaration","scope":28635,"src":"11110:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28520,"nodeType":"UserDefinedTypeName","pathNode":{"id":28519,"name":"IHooks","nameLocations":["11110:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"11110:6:70"},"referencedDeclaration":1887,"src":"11110:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"10852:284:70"},"returnParameters":{"id":28525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28635,"src":"11155:7:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28523,"name":"uint256","nodeType":"ElementaryTypeName","src":"11155:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:9:70"},"scope":29013,"src":"10826:2303:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":28677,"nodeType":"Block","src":"13815:416:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":28655,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28638,"src":"13894:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28656,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28644,"src":"13918:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13925:4:70","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"13918:11:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28658,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28644,"src":"13947:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13954:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"13947:11:70","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"id":28660,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28641,"src":"13976:20:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":28661,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28644,"src":"14014:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14021:15:70","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":4599,"src":"14014:22:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":28663,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28647,"src":"14054:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14063:20:70","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"14054:29:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":28665,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28644,"src":"14101:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14108:8:70","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4604,"src":"14101:15:70","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":28653,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28650,"src":"13842:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13856:20:70","memberName":"onBeforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":1768,"src":"13842:34:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_enum$_AddLiquidityKind_$4589_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,enum AddLiquidityKind,uint256[] memory,uint256,uint256[] memory,bytes memory) external returns (bool)"}},"id":28667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13842:288:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14134:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"13842:297:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28676,"nodeType":"IfStatement","src":"13825:400:70","trueBody":{"id":28675,"nodeType":"Block","src":"14150:75:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28670,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"14171:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14184:28:70","memberName":"BeforeAddLiquidityHookFailed","nodeType":"MemberAccess","referencedDeclaration":3276,"src":"14171:41:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14171:43:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28674,"nodeType":"RevertStatement","src":"14164:50:70"}]}}]},"documentation":{"id":28636,"nodeType":"StructuredDocumentation","src":"13135:447:70","text":" @dev Call the `onBeforeAddLiquidity` hook. Reverts on failure.\n @param router Router address\n @param maxAmountsInScaled18 An array with maximum amounts for each input token of the add liquidity operation\n @param params The add liquidity parameters\n @param poolData Struct containing balance and token information of the pool\n @param hooksContract Storage slot with the address of the hooks contract"},"id":28678,"implemented":true,"kind":"function","modifiers":[],"name":"callBeforeAddLiquidityHook","nameLocation":"13596:26:70","nodeType":"FunctionDefinition","parameters":{"id":28651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28638,"mutability":"mutable","name":"router","nameLocation":"13640:6:70","nodeType":"VariableDeclaration","scope":28678,"src":"13632:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28637,"name":"address","nodeType":"ElementaryTypeName","src":"13632:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28641,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"13673:20:70","nodeType":"VariableDeclaration","scope":28678,"src":"13656:37:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28639,"name":"uint256","nodeType":"ElementaryTypeName","src":"13656:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28640,"nodeType":"ArrayTypeName","src":"13656:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28644,"mutability":"mutable","name":"params","nameLocation":"13729:6:70","nodeType":"VariableDeclaration","scope":28678,"src":"13703:32:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":28643,"nodeType":"UserDefinedTypeName","pathNode":{"id":28642,"name":"AddLiquidityParams","nameLocations":["13703:18:70"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"13703:18:70"},"referencedDeclaration":4605,"src":"13703:18:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":28647,"mutability":"mutable","name":"poolData","nameLocation":"13761:8:70","nodeType":"VariableDeclaration","scope":28678,"src":"13745:24:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":28646,"nodeType":"UserDefinedTypeName","pathNode":{"id":28645,"name":"PoolData","nameLocations":["13745:8:70"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"13745:8:70"},"referencedDeclaration":4511,"src":"13745:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":28650,"mutability":"mutable","name":"hooksContract","nameLocation":"13786:13:70","nodeType":"VariableDeclaration","scope":28678,"src":"13779:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28649,"nodeType":"UserDefinedTypeName","pathNode":{"id":28648,"name":"IHooks","nameLocations":["13779:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"13779:6:70"},"referencedDeclaration":1887,"src":"13779:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"13622:183:70"},"returnParameters":{"id":28652,"nodeType":"ParameterList","parameters":[],"src":"13815:0:70"},"scope":29013,"src":"13587:644:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":28794,"nodeType":"Block","src":"15588:1128:70","statements":[{"assignments":[28708,28711],"declarations":[{"constant":false,"id":28708,"mutability":"mutable","name":"success","nameLocation":"15604:7:70","nodeType":"VariableDeclaration","scope":28794,"src":"15599:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28707,"name":"bool","nodeType":"ElementaryTypeName","src":"15599:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":28711,"mutability":"mutable","name":"hookAdjustedAmountsInRaw","nameLocation":"15630:24:70","nodeType":"VariableDeclaration","scope":28794,"src":"15613:41:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28709,"name":"uint256","nodeType":"ElementaryTypeName","src":"15613:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28710,"nodeType":"ArrayTypeName","src":"15613:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":28727,"initialValue":{"arguments":[{"id":28714,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28684,"src":"15705:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28715,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28695,"src":"15725:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15732:4:70","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4592,"src":"15725:11:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28717,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28695,"src":"15750:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15757:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4602,"src":"15750:11:70","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"id":28719,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28687,"src":"15775:17:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":28720,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28690,"src":"15806:12:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":28721,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28692,"src":"15832:12:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":28722,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28698,"src":"15858:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15867:20:70","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"15858:29:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":28724,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28695,"src":"15901:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15908:8:70","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4604,"src":"15901:15:70","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":28712,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28701,"src":"15658:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15672:19:70","memberName":"onAfterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":1797,"src":"15658:33:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_enum$_AddLiquidityKind_$4589_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,address,enum AddLiquidityKind,uint256[] memory,uint256[] memory,uint256,uint256[] memory,bytes memory) external returns (bool,uint256[] memory)"}},"id":28726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15658:268:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"15598:328:70"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28728,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28708,"src":"15941:7:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15952:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"15941:16:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":28731,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28711,"src":"15961:24:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15986:6:70","memberName":"length","nodeType":"MemberAccess","src":"15961:31:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":28733,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28690,"src":"15996:12:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16009:6:70","memberName":"length","nodeType":"MemberAccess","src":"15996:19:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15961:54:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15941:74:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28743,"nodeType":"IfStatement","src":"15937:154:70","trueBody":{"id":28742,"nodeType":"Block","src":"16017:74:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28737,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"16038:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16051:27:70","memberName":"AfterAddLiquidityHookFailed","nodeType":"MemberAccess","referencedDeclaration":3279,"src":"16038:40:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16038:42:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28741,"nodeType":"RevertStatement","src":"16031:49:70"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28744,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28682,"src":"16193:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16200:25:70","memberName":"enableHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":27960,"src":"16193:32:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16193:34:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16231:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"16193:43:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28752,"nodeType":"IfStatement","src":"16189:93:70","trueBody":{"id":28751,"nodeType":"Block","src":"16238:44:70","statements":[{"expression":{"id":28749,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28690,"src":"16259:12:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":28706,"id":28750,"nodeType":"Return","src":"16252:19:70"}]}},{"body":{"id":28790,"nodeType":"Block","src":"16354:314:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":28764,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28711,"src":"16372:24:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28766,"indexExpression":{"id":28765,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28754,"src":"16397:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16372:27:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"expression":{"id":28767,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28695,"src":"16402:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16409:12:70","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"16402:19:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28770,"indexExpression":{"id":28769,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28754,"src":"16422:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16402:22:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16372:52:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28789,"nodeType":"IfStatement","src":"16368:290:70","trueBody":{"id":28788,"nodeType":"Block","src":"16426:232:70","statements":[{"errorCall":{"arguments":[{"baseExpression":{"expression":{"id":28775,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28698,"src":"16514:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16523:6:70","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"16514:15:70","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":28778,"indexExpression":{"id":28777,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28754,"src":"16530:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16514:18:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":28779,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28711,"src":"16554:24:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28781,"indexExpression":{"id":28780,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28754,"src":"16579:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16554:27:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":28782,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28695,"src":"16603:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},"id":28783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16610:12:70","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":4597,"src":"16603:19:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28785,"indexExpression":{"id":28784,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28754,"src":"16623:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16603:22:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28772,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"16451:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16464:28:70","memberName":"HookAdjustedAmountInAboveMax","nodeType":"MemberAccess","referencedDeclaration":3340,"src":"16451:41:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":28786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16451:192:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28787,"nodeType":"RevertStatement","src":"16444:199:70"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28757,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28754,"src":"16312:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":28758,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28711,"src":"16316:24:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16341:6:70","memberName":"length","nodeType":"MemberAccess","src":"16316:31:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16312:35:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28791,"initializationExpression":{"assignments":[28754],"declarations":[{"constant":false,"id":28754,"mutability":"mutable","name":"i","nameLocation":"16305:1:70","nodeType":"VariableDeclaration","scope":28791,"src":"16297:9:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28753,"name":"uint256","nodeType":"ElementaryTypeName","src":"16297:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28756,"initialValue":{"hexValue":"30","id":28755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16309:1:70","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16297:13:70"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":28762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16349:3:70","subExpression":{"id":28761,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28754,"src":"16349:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28763,"nodeType":"ExpressionStatement","src":"16349:3:70"},"nodeType":"ForStatement","src":"16292:376:70"},{"expression":{"id":28792,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28711,"src":"16685:24:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":28706,"id":28793,"nodeType":"Return","src":"16678:31:70"}]},"documentation":{"id":28679,"nodeType":"StructuredDocumentation","src":"14237:995:70","text":" @dev Call the `onAfterAddLiquidity` hook, then validate and return the result. Reverts on failure, or if\n the limits are violated. If the contract did not enable hook-adjusted amounts, it will ignore the hook\n results and return the original `amountsInRaw`.\n @param config The encoded pool configuration\n @param router Router address\n @param amountsInScaled18 An array with amounts for each input token of the add liquidity operation\n @param amountsInRaw An array with amounts for each input token of the add liquidity operation\n @param bptAmountOut The BPT amount a user will receive after add liquidity operation succeeds\n @param params The add liquidity parameters\n @param poolData Struct containing balance and token information of the pool\n @param hooksContract Storage slot with the address of the hooks contract\n @return hookAdjustedAmountsInRaw New amountsInRaw, potentially modified by the hook"},"id":28795,"implemented":true,"kind":"function","modifiers":[],"name":"callAfterAddLiquidityHook","nameLocation":"15246:25:70","nodeType":"FunctionDefinition","parameters":{"id":28702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28682,"mutability":"mutable","name":"config","nameLocation":"15296:6:70","nodeType":"VariableDeclaration","scope":28795,"src":"15281:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28681,"nodeType":"UserDefinedTypeName","pathNode":{"id":28680,"name":"PoolConfigBits","nameLocations":["15281:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"15281:14:70"},"referencedDeclaration":4364,"src":"15281:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28684,"mutability":"mutable","name":"router","nameLocation":"15320:6:70","nodeType":"VariableDeclaration","scope":28795,"src":"15312:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28683,"name":"address","nodeType":"ElementaryTypeName","src":"15312:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28687,"mutability":"mutable","name":"amountsInScaled18","nameLocation":"15353:17:70","nodeType":"VariableDeclaration","scope":28795,"src":"15336:34:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28685,"name":"uint256","nodeType":"ElementaryTypeName","src":"15336:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28686,"nodeType":"ArrayTypeName","src":"15336:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28690,"mutability":"mutable","name":"amountsInRaw","nameLocation":"15397:12:70","nodeType":"VariableDeclaration","scope":28795,"src":"15380:29:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28688,"name":"uint256","nodeType":"ElementaryTypeName","src":"15380:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28689,"nodeType":"ArrayTypeName","src":"15380:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28692,"mutability":"mutable","name":"bptAmountOut","nameLocation":"15427:12:70","nodeType":"VariableDeclaration","scope":28795,"src":"15419:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28691,"name":"uint256","nodeType":"ElementaryTypeName","src":"15419:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28695,"mutability":"mutable","name":"params","nameLocation":"15475:6:70","nodeType":"VariableDeclaration","scope":28795,"src":"15449:32:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":28694,"nodeType":"UserDefinedTypeName","pathNode":{"id":28693,"name":"AddLiquidityParams","nameLocations":["15449:18:70"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"15449:18:70"},"referencedDeclaration":4605,"src":"15449:18:70","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":28698,"mutability":"mutable","name":"poolData","nameLocation":"15507:8:70","nodeType":"VariableDeclaration","scope":28795,"src":"15491:24:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":28697,"nodeType":"UserDefinedTypeName","pathNode":{"id":28696,"name":"PoolData","nameLocations":["15491:8:70"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"15491:8:70"},"referencedDeclaration":4511,"src":"15491:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":28701,"mutability":"mutable","name":"hooksContract","nameLocation":"15532:13:70","nodeType":"VariableDeclaration","scope":28795,"src":"15525:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28700,"nodeType":"UserDefinedTypeName","pathNode":{"id":28699,"name":"IHooks","nameLocations":["15525:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"15525:6:70"},"referencedDeclaration":1887,"src":"15525:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"15271:280:70"},"returnParameters":{"id":28706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28795,"src":"15570:16:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28703,"name":"uint256","nodeType":"ElementaryTypeName","src":"15570:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28704,"nodeType":"ArrayTypeName","src":"15570:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"15569:18:70"},"scope":29013,"src":"15237:1479:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":28837,"nodeType":"Block","src":"17406:422:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":28815,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28801,"src":"17488:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28816,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28804,"src":"17512:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17519:4:70","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"17512:11:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28818,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28804,"src":"17541:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17548:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4623,"src":"17541:11:70","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"expression":{"id":28820,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28804,"src":"17570:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17577:14:70","memberName":"maxBptAmountIn","nodeType":"MemberAccess","referencedDeclaration":4617,"src":"17570:21:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28822,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28799,"src":"17609:21:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":28823,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28807,"src":"17648:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17657:20:70","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"17648:29:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":28825,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28804,"src":"17695:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17702:8:70","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4625,"src":"17695:15:70","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":28813,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28810,"src":"17433:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17447:23:70","memberName":"onBeforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":1820,"src":"17433:37:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_enum$_RemoveLiquidityKind_$4610_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,enum RemoveLiquidityKind,uint256,uint256[] memory,uint256[] memory,bytes memory) external returns (bool)"}},"id":28827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17433:291:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17728:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"17433:300:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28836,"nodeType":"IfStatement","src":"17416:406:70","trueBody":{"id":28835,"nodeType":"Block","src":"17744:78:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28830,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"17765:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17778:31:70","memberName":"BeforeRemoveLiquidityHookFailed","nodeType":"MemberAccess","referencedDeclaration":3282,"src":"17765:44:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17765:46:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28834,"nodeType":"RevertStatement","src":"17758:53:70"}]}}]},"documentation":{"id":28796,"nodeType":"StructuredDocumentation","src":"16722:444:70","text":" @dev Call the `onBeforeRemoveLiquidity` hook. Reverts on failure.\n @param minAmountsOutScaled18 Minimum amounts for each output token of the remove liquidity operation\n @param router Router address\n @param params The remove liquidity parameters\n @param poolData Struct containing balance and token information of the pool\n @param hooksContract Storage slot with the address of the hooks contract"},"id":28838,"implemented":true,"kind":"function","modifiers":[],"name":"callBeforeRemoveLiquidityHook","nameLocation":"17180:29:70","nodeType":"FunctionDefinition","parameters":{"id":28811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28799,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"17236:21:70","nodeType":"VariableDeclaration","scope":28838,"src":"17219:38:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28797,"name":"uint256","nodeType":"ElementaryTypeName","src":"17219:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28798,"nodeType":"ArrayTypeName","src":"17219:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28801,"mutability":"mutable","name":"router","nameLocation":"17275:6:70","nodeType":"VariableDeclaration","scope":28838,"src":"17267:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28800,"name":"address","nodeType":"ElementaryTypeName","src":"17267:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28804,"mutability":"mutable","name":"params","nameLocation":"17320:6:70","nodeType":"VariableDeclaration","scope":28838,"src":"17291:35:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":28803,"nodeType":"UserDefinedTypeName","pathNode":{"id":28802,"name":"RemoveLiquidityParams","nameLocations":["17291:21:70"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"17291:21:70"},"referencedDeclaration":4626,"src":"17291:21:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":28807,"mutability":"mutable","name":"poolData","nameLocation":"17352:8:70","nodeType":"VariableDeclaration","scope":28838,"src":"17336:24:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":28806,"nodeType":"UserDefinedTypeName","pathNode":{"id":28805,"name":"PoolData","nameLocations":["17336:8:70"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"17336:8:70"},"referencedDeclaration":4511,"src":"17336:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":28810,"mutability":"mutable","name":"hooksContract","nameLocation":"17377:13:70","nodeType":"VariableDeclaration","scope":28838,"src":"17370:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28809,"nodeType":"UserDefinedTypeName","pathNode":{"id":28808,"name":"IHooks","nameLocations":["17370:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"17370:6:70"},"referencedDeclaration":1887,"src":"17370:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"17209:187:70"},"returnParameters":{"id":28812,"nodeType":"ParameterList","parameters":[],"src":"17406:0:70"},"scope":29013,"src":"17171:657:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":28954,"nodeType":"Block","src":"19195:1146:70","statements":[{"assignments":[28868,28871],"declarations":[{"constant":false,"id":28868,"mutability":"mutable","name":"success","nameLocation":"19211:7:70","nodeType":"VariableDeclaration","scope":28954,"src":"19206:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":28867,"name":"bool","nodeType":"ElementaryTypeName","src":"19206:4:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":28871,"mutability":"mutable","name":"hookAdjustedAmountsOutRaw","nameLocation":"19237:25:70","nodeType":"VariableDeclaration","scope":28954,"src":"19220:42:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28869,"name":"uint256","nodeType":"ElementaryTypeName","src":"19220:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28870,"nodeType":"ArrayTypeName","src":"19220:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":28887,"initialValue":{"arguments":[{"id":28874,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28844,"src":"19316:6:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28875,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28855,"src":"19336:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19343:4:70","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4613,"src":"19336:11:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":28877,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28855,"src":"19361:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19368:4:70","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4623,"src":"19361:11:70","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"id":28879,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28852,"src":"19386:11:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":28880,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28847,"src":"19411:18:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":28881,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28850,"src":"19443:13:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":28882,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28858,"src":"19470:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19479:20:70","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"19470:29:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":28884,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28855,"src":"19513:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19520:8:70","memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":4625,"src":"19513:15:70","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":28872,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28861,"src":"19266:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19280:22:70","memberName":"onAfterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":1849,"src":"19266:36:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_enum$_RemoveLiquidityKind_$4610_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,address,enum RemoveLiquidityKind,uint256,uint256[] memory,uint256[] memory,uint256[] memory,bytes memory) external returns (bool,uint256[] memory)"}},"id":28886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19266:272:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"19205:333:70"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28888,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28868,"src":"19553:7:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19564:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"19553:16:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":28891,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28871,"src":"19573:25:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19599:6:70","memberName":"length","nodeType":"MemberAccess","src":"19573:32:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":28893,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28850,"src":"19609:13:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19623:6:70","memberName":"length","nodeType":"MemberAccess","src":"19609:20:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19573:56:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19553:76:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28903,"nodeType":"IfStatement","src":"19549:159:70","trueBody":{"id":28902,"nodeType":"Block","src":"19631:77:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28897,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"19652:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19665:30:70","memberName":"AfterRemoveLiquidityHookFailed","nodeType":"MemberAccess","referencedDeclaration":3285,"src":"19652:43:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19652:45:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28901,"nodeType":"RevertStatement","src":"19645:52:70"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28904,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28842,"src":"19810:6:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":28905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19817:25:70","memberName":"enableHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":27960,"src":"19810:32:70","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":28906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19810:34:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19848:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"19810:43:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28912,"nodeType":"IfStatement","src":"19806:94:70","trueBody":{"id":28911,"nodeType":"Block","src":"19855:45:70","statements":[{"expression":{"id":28909,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28850,"src":"19876:13:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":28866,"id":28910,"nodeType":"Return","src":"19869:20:70"}]}},{"body":{"id":28950,"nodeType":"Block","src":"19973:319:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":28924,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28871,"src":"19991:25:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28926,"indexExpression":{"id":28925,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28914,"src":"20017:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19991:28:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"expression":{"id":28927,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28855,"src":"20022:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20029:13:70","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"20022:20:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28930,"indexExpression":{"id":28929,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28914,"src":"20043:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20022:23:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19991:54:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28949,"nodeType":"IfStatement","src":"19987:295:70","trueBody":{"id":28948,"nodeType":"Block","src":"20047:235:70","statements":[{"errorCall":{"arguments":[{"baseExpression":{"expression":{"id":28935,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28858,"src":"20136:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":28936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20145:6:70","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"20136:15:70","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":28938,"indexExpression":{"id":28937,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28914,"src":"20152:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20136:18:70","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"baseExpression":{"id":28939,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28871,"src":"20176:25:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28941,"indexExpression":{"id":28940,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28914,"src":"20202:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20176:28:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":28942,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28855,"src":"20226:6:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},"id":28943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20233:13:70","memberName":"minAmountsOut","nodeType":"MemberAccess","referencedDeclaration":4620,"src":"20226:20:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28945,"indexExpression":{"id":28944,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28914,"src":"20247:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20226:23:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":28932,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"20072:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20085:29:70","memberName":"HookAdjustedAmountOutBelowMin","nodeType":"MemberAccess","referencedDeclaration":3376,"src":"20072:42:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (contract IERC20,uint256,uint256) pure returns (error)"}},"id":28946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20072:195:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28947,"nodeType":"RevertStatement","src":"20065:202:70"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":28920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":28917,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28914,"src":"19930:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":28918,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28871,"src":"19934:25:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":28919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19960:6:70","memberName":"length","nodeType":"MemberAccess","src":"19934:32:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19930:36:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28951,"initializationExpression":{"assignments":[28914],"declarations":[{"constant":false,"id":28914,"mutability":"mutable","name":"i","nameLocation":"19923:1:70","nodeType":"VariableDeclaration","scope":28951,"src":"19915:9:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28913,"name":"uint256","nodeType":"ElementaryTypeName","src":"19915:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":28916,"initialValue":{"hexValue":"30","id":28915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19927:1:70","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19915:13:70"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":28922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19968:3:70","subExpression":{"id":28921,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28914,"src":"19968:1:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28923,"nodeType":"ExpressionStatement","src":"19968:3:70"},"nodeType":"ForStatement","src":"19910:382:70"},{"expression":{"id":28952,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28871,"src":"20309:25:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":28866,"id":28953,"nodeType":"Return","src":"20302:32:70"}]},"documentation":{"id":28839,"nodeType":"StructuredDocumentation","src":"17834:998:70","text":" @dev Call the `onAfterRemoveLiquidity` hook, then validate and return the result. Reverts on failure, or if\n the limits are violated. If the contract did not enable hook-adjusted amounts, it will ignore the hook\n results and return the original `amountsOutRaw`.\n @param config The encoded pool configuration\n @param router Router address\n @param amountsOutScaled18 Scaled amount of tokens to receive, sorted in token registration order\n @param amountsOutRaw Actual amount of tokens to receive, sorted in token registration order\n @param bptAmountIn The BPT amount a user will need burn to remove the liquidity of the pool\n @param params The remove liquidity parameters\n @param poolData Struct containing balance and token information of the pool\n @param hooksContract Storage slot with the address of the hooks contract\n @return hookAdjustedAmountsOutRaw New amountsOutRaw, potentially modified by the hook"},"id":28955,"implemented":true,"kind":"function","modifiers":[],"name":"callAfterRemoveLiquidityHook","nameLocation":"18846:28:70","nodeType":"FunctionDefinition","parameters":{"id":28862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28842,"mutability":"mutable","name":"config","nameLocation":"18899:6:70","nodeType":"VariableDeclaration","scope":28955,"src":"18884:21:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":28841,"nodeType":"UserDefinedTypeName","pathNode":{"id":28840,"name":"PoolConfigBits","nameLocations":["18884:14:70"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"18884:14:70"},"referencedDeclaration":4364,"src":"18884:14:70","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":28844,"mutability":"mutable","name":"router","nameLocation":"18923:6:70","nodeType":"VariableDeclaration","scope":28955,"src":"18915:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28843,"name":"address","nodeType":"ElementaryTypeName","src":"18915:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":28847,"mutability":"mutable","name":"amountsOutScaled18","nameLocation":"18956:18:70","nodeType":"VariableDeclaration","scope":28955,"src":"18939:35:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28845,"name":"uint256","nodeType":"ElementaryTypeName","src":"18939:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28846,"nodeType":"ArrayTypeName","src":"18939:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28850,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"19001:13:70","nodeType":"VariableDeclaration","scope":28955,"src":"18984:30:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28848,"name":"uint256","nodeType":"ElementaryTypeName","src":"18984:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28849,"nodeType":"ArrayTypeName","src":"18984:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28852,"mutability":"mutable","name":"bptAmountIn","nameLocation":"19032:11:70","nodeType":"VariableDeclaration","scope":28955,"src":"19024:19:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28851,"name":"uint256","nodeType":"ElementaryTypeName","src":"19024:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28855,"mutability":"mutable","name":"params","nameLocation":"19082:6:70","nodeType":"VariableDeclaration","scope":28955,"src":"19053:35:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":28854,"nodeType":"UserDefinedTypeName","pathNode":{"id":28853,"name":"RemoveLiquidityParams","nameLocations":["19053:21:70"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"19053:21:70"},"referencedDeclaration":4626,"src":"19053:21:70","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":28858,"mutability":"mutable","name":"poolData","nameLocation":"19114:8:70","nodeType":"VariableDeclaration","scope":28955,"src":"19098:24:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":28857,"nodeType":"UserDefinedTypeName","pathNode":{"id":28856,"name":"PoolData","nameLocations":["19098:8:70"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"19098:8:70"},"referencedDeclaration":4511,"src":"19098:8:70","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":28861,"mutability":"mutable","name":"hooksContract","nameLocation":"19139:13:70","nodeType":"VariableDeclaration","scope":28955,"src":"19132:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28860,"nodeType":"UserDefinedTypeName","pathNode":{"id":28859,"name":"IHooks","nameLocations":["19132:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"19132:6:70"},"referencedDeclaration":1887,"src":"19132:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"18874:284:70"},"returnParameters":{"id":28866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":28955,"src":"19177:16:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28863,"name":"uint256","nodeType":"ElementaryTypeName","src":"19177:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28864,"nodeType":"ArrayTypeName","src":"19177:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"19176:18:70"},"scope":29013,"src":"18837:1504:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":28981,"nodeType":"Block","src":"20843:170:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":28973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":28969,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28959,"src":"20890:22:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":28970,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28961,"src":"20914:8:70","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":28967,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28964,"src":"20857:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20871:18:70","memberName":"onBeforeInitialize","nodeType":"MemberAccess","referencedDeclaration":1732,"src":"20857:32:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (uint256[] memory,bytes memory) external returns (bool)"}},"id":28971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20857:66:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":28972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20927:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"20857:75:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":28980,"nodeType":"IfStatement","src":"20853:154:70","trueBody":{"id":28979,"nodeType":"Block","src":"20934:73:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":28974,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"20955:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":28976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20968:26:70","memberName":"BeforeInitializeHookFailed","nodeType":"MemberAccess","referencedDeclaration":3270,"src":"20955:39:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":28977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20955:41:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":28978,"nodeType":"RevertStatement","src":"20948:48:70"}]}}]},"documentation":{"id":28956,"nodeType":"StructuredDocumentation","src":"20347:332:70","text":" @dev Call the `onBeforeInitialize` hook. Reverts on failure.\n @param exactAmountsInScaled18 An array with the initial liquidity of the pool\n @param userData Additional (optional) data required for adding initial liquidity\n @param hooksContract Storage slot with the address of the hooks contract"},"id":28982,"implemented":true,"kind":"function","modifiers":[],"name":"callBeforeInitializeHook","nameLocation":"20693:24:70","nodeType":"FunctionDefinition","parameters":{"id":28965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28959,"mutability":"mutable","name":"exactAmountsInScaled18","nameLocation":"20744:22:70","nodeType":"VariableDeclaration","scope":28982,"src":"20727:39:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28957,"name":"uint256","nodeType":"ElementaryTypeName","src":"20727:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28958,"nodeType":"ArrayTypeName","src":"20727:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28961,"mutability":"mutable","name":"userData","nameLocation":"20789:8:70","nodeType":"VariableDeclaration","scope":28982,"src":"20776:21:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":28960,"name":"bytes","nodeType":"ElementaryTypeName","src":"20776:5:70","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":28964,"mutability":"mutable","name":"hooksContract","nameLocation":"20814:13:70","nodeType":"VariableDeclaration","scope":28982,"src":"20807:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28963,"nodeType":"UserDefinedTypeName","pathNode":{"id":28962,"name":"IHooks","nameLocations":["20807:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"20807:6:70"},"referencedDeclaration":1887,"src":"20807:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"20717:116:70"},"returnParameters":{"id":28966,"nodeType":"ParameterList","parameters":[],"src":"20843:0:70"},"scope":29013,"src":"20684:329:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":29011,"nodeType":"Block","src":"21645:182:70","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":28998,"name":"exactAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28986,"src":"21691:22:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":28999,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28988,"src":"21715:12:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29000,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28990,"src":"21729:8:70","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":28996,"name":"hooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28993,"src":"21659:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":28997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21673:17:70","memberName":"onAfterInitialize","nodeType":"MemberAccess","referencedDeclaration":1745,"src":"21659:31:70","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (uint256[] memory,uint256,bytes memory) external returns (bool)"}},"id":29001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21659:79:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":29002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21742:5:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"21659:88:70","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29010,"nodeType":"IfStatement","src":"21655:166:70","trueBody":{"id":29009,"nodeType":"Block","src":"21749:72:70","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29004,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"21770:12:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21783:25:70","memberName":"AfterInitializeHookFailed","nodeType":"MemberAccess","referencedDeclaration":3273,"src":"21770:38:70","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21770:40:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29008,"nodeType":"RevertStatement","src":"21763:47:70"}]}}]},"documentation":{"id":28983,"nodeType":"StructuredDocumentation","src":"21019:433:70","text":" @dev Call the `onAfterInitialize` hook. Reverts on failure.\n @param exactAmountsInScaled18 An array with the initial liquidity of the pool\n @param bptAmountOut The BPT amount a user will receive after initialization operation succeeds\n @param userData Additional (optional) data required for adding initial liquidity\n @param hooksContract Storage slot with the address of the hooks contract"},"id":29012,"implemented":true,"kind":"function","modifiers":[],"name":"callAfterInitializeHook","nameLocation":"21466:23:70","nodeType":"FunctionDefinition","parameters":{"id":28994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28986,"mutability":"mutable","name":"exactAmountsInScaled18","nameLocation":"21516:22:70","nodeType":"VariableDeclaration","scope":29012,"src":"21499:39:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":28984,"name":"uint256","nodeType":"ElementaryTypeName","src":"21499:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":28985,"nodeType":"ArrayTypeName","src":"21499:9:70","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":28988,"mutability":"mutable","name":"bptAmountOut","nameLocation":"21556:12:70","nodeType":"VariableDeclaration","scope":29012,"src":"21548:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":28987,"name":"uint256","nodeType":"ElementaryTypeName","src":"21548:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28990,"mutability":"mutable","name":"userData","nameLocation":"21591:8:70","nodeType":"VariableDeclaration","scope":29012,"src":"21578:21:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":28989,"name":"bytes","nodeType":"ElementaryTypeName","src":"21578:5:70","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":28993,"mutability":"mutable","name":"hooksContract","nameLocation":"21616:13:70","nodeType":"VariableDeclaration","scope":29012,"src":"21609:20:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"},"typeName":{"id":28992,"nodeType":"UserDefinedTypeName","pathNode":{"id":28991,"name":"IHooks","nameLocations":["21609:6:70"],"nodeType":"IdentifierPath","referencedDeclaration":1887,"src":"21609:6:70"},"referencedDeclaration":1887,"src":"21609:6:70","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"visibility":"internal"}],"src":"21489:146:70"},"returnParameters":{"id":28995,"nodeType":"ParameterList","parameters":[],"src":"21645:0:70"},"scope":29013,"src":"21457:370:70","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":29014,"src":"1878:19951:70","usedErrors":[],"usedEvents":[]}],"src":"46:21784:70"},"id":70},"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol","exportedSymbols":{"FEE_BITLENGTH":[4647],"PoolConfigConst":[29141]},"id":29142,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":29015,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:71"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":29017,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29142,"sourceUnit":4654,"src":"72:92:71","symbolAliases":[{"foreign":{"id":29016,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"81:13:71","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"PoolConfigConst","contractDependencies":[],"contractKind":"library","documentation":{"id":29018,"nodeType":"StructuredDocumentation","src":"166:664:71","text":" @notice Helper functions to read and write the packed configuration flags stored in `_poolConfigBits`.\n @dev Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool).\n This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e.,\n offsets for each data field) is specified here.\n There are two libraries for interpreting these data. `HooksConfigLib` parses fields related to hooks, while\n `PoolConfigLib` contains helpers related to the non-hook-related flags, along with aggregate fee percentages\n and other data associated with pools."},"fullyImplemented":true,"id":29141,"linearizedBaseContracts":[29141],"name":"PoolConfigConst","nameLocation":"839:15:71","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"6801b442","id":29021,"mutability":"constant","name":"POOL_REGISTERED_OFFSET","nameLocation":"933:22:71","nodeType":"VariableDeclaration","scope":29141,"src":"911:48:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29019,"name":"uint8","nodeType":"ElementaryTypeName","src":"911:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30","id":29020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"958:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"public"},{"constant":true,"functionSelector":"18518628","id":29026,"mutability":"constant","name":"POOL_INITIALIZED_OFFSET","nameLocation":"987:23:71","nodeType":"VariableDeclaration","scope":29141,"src":"965:74:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29022,"name":"uint8","nodeType":"ElementaryTypeName","src":"965:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29023,"name":"POOL_REGISTERED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29021,"src":"1013:22:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1038:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1013:26:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"af815f04","id":29031,"mutability":"constant","name":"POOL_PAUSED_OFFSET","nameLocation":"1067:18:71","nodeType":"VariableDeclaration","scope":29141,"src":"1045:70:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29027,"name":"uint8","nodeType":"ElementaryTypeName","src":"1045:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29028,"name":"POOL_INITIALIZED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29026,"src":"1088:23:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1114:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1088:27:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"2d6724e1","id":29036,"mutability":"constant","name":"POOL_RECOVERY_MODE_OFFSET","nameLocation":"1143:25:71","nodeType":"VariableDeclaration","scope":29141,"src":"1121:72:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29032,"name":"uint8","nodeType":"ElementaryTypeName","src":"1121:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29033,"name":"POOL_PAUSED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29031,"src":"1171:18:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1192:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1171:22:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"d9827217","id":29041,"mutability":"constant","name":"UNBALANCED_LIQUIDITY_OFFSET","nameLocation":"1267:27:71","nodeType":"VariableDeclaration","scope":29141,"src":"1245:81:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29037,"name":"uint8","nodeType":"ElementaryTypeName","src":"1245:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29038,"name":"POOL_RECOVERY_MODE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29036,"src":"1297:25:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1297:29:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"b2cb247c","id":29046,"mutability":"constant","name":"ADD_LIQUIDITY_CUSTOM_OFFSET","nameLocation":"1354:27:71","nodeType":"VariableDeclaration","scope":29141,"src":"1332:83:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29042,"name":"uint8","nodeType":"ElementaryTypeName","src":"1332:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29043,"name":"UNBALANCED_LIQUIDITY_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29041,"src":"1384:27:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1414:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1384:31:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"7e3edbf1","id":29051,"mutability":"constant","name":"REMOVE_LIQUIDITY_CUSTOM_OFFSET","nameLocation":"1443:30:71","nodeType":"VariableDeclaration","scope":29141,"src":"1421:86:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29047,"name":"uint8","nodeType":"ElementaryTypeName","src":"1421:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29048,"name":"ADD_LIQUIDITY_CUSTOM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29046,"src":"1476:27:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1506:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1476:31:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"e2ce6c6c","id":29056,"mutability":"constant","name":"DONATION_OFFSET","nameLocation":"1535:15:71","nodeType":"VariableDeclaration","scope":29141,"src":"1513:74:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29052,"name":"uint8","nodeType":"ElementaryTypeName","src":"1513:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29053,"name":"REMOVE_LIQUIDITY_CUSTOM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29051,"src":"1553:30:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1586:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1553:34:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"547acb16","id":29061,"mutability":"constant","name":"BEFORE_INITIALIZE_OFFSET","nameLocation":"1653:24:71","nodeType":"VariableDeclaration","scope":29141,"src":"1631:68:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29057,"name":"uint8","nodeType":"ElementaryTypeName","src":"1631:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29058,"name":"DONATION_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29056,"src":"1680:15:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1698:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1680:19:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"fab86870","id":29066,"mutability":"constant","name":"ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET","nameLocation":"1727:35:71","nodeType":"VariableDeclaration","scope":29141,"src":"1705:88:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29062,"name":"uint8","nodeType":"ElementaryTypeName","src":"1705:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29063,"name":"BEFORE_INITIALIZE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29061,"src":"1765:24:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1792:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1765:28:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"3f60345a","id":29071,"mutability":"constant","name":"AFTER_INITIALIZE_OFFSET","nameLocation":"1821:23:71","nodeType":"VariableDeclaration","scope":29141,"src":"1799:87:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29067,"name":"uint8","nodeType":"ElementaryTypeName","src":"1799:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29068,"name":"ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29066,"src":"1847:35:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1885:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1847:39:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"84efbfd5","id":29076,"mutability":"constant","name":"DYNAMIC_SWAP_FEE_OFFSET","nameLocation":"1914:23:71","nodeType":"VariableDeclaration","scope":29141,"src":"1892:75:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29072,"name":"uint8","nodeType":"ElementaryTypeName","src":"1892:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29073,"name":"AFTER_INITIALIZE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29071,"src":"1940:23:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1966:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1940:27:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"a22425b6","id":29081,"mutability":"constant","name":"BEFORE_SWAP_OFFSET","nameLocation":"1995:18:71","nodeType":"VariableDeclaration","scope":29141,"src":"1973:70:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29077,"name":"uint8","nodeType":"ElementaryTypeName","src":"1973:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29078,"name":"DYNAMIC_SWAP_FEE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29076,"src":"2016:23:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2016:27:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"bdefaf71","id":29086,"mutability":"constant","name":"AFTER_SWAP_OFFSET","nameLocation":"2071:17:71","nodeType":"VariableDeclaration","scope":29141,"src":"2049:64:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29082,"name":"uint8","nodeType":"ElementaryTypeName","src":"2049:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29083,"name":"BEFORE_SWAP_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29081,"src":"2091:18:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2112:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2091:22:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"dde7b13f","id":29091,"mutability":"constant","name":"BEFORE_ADD_LIQUIDITY_OFFSET","nameLocation":"2141:27:71","nodeType":"VariableDeclaration","scope":29141,"src":"2119:73:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29087,"name":"uint8","nodeType":"ElementaryTypeName","src":"2119:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29088,"name":"AFTER_SWAP_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29086,"src":"2171:17:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2191:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2171:21:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"aa6cda91","id":29096,"mutability":"constant","name":"AFTER_ADD_LIQUIDITY_OFFSET","nameLocation":"2220:26:71","nodeType":"VariableDeclaration","scope":29141,"src":"2198:82:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29092,"name":"uint8","nodeType":"ElementaryTypeName","src":"2198:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29093,"name":"BEFORE_ADD_LIQUIDITY_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29091,"src":"2249:27:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2279:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2249:31:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"bc848769","id":29101,"mutability":"constant","name":"BEFORE_REMOVE_LIQUIDITY_OFFSET","nameLocation":"2308:30:71","nodeType":"VariableDeclaration","scope":29141,"src":"2286:85:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29097,"name":"uint8","nodeType":"ElementaryTypeName","src":"2286:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29098,"name":"AFTER_ADD_LIQUIDITY_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29096,"src":"2341:26:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2370:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2341:30:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"80b1c55b","id":29106,"mutability":"constant","name":"AFTER_REMOVE_LIQUIDITY_OFFSET","nameLocation":"2399:29:71","nodeType":"VariableDeclaration","scope":29141,"src":"2377:88:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29102,"name":"uint8","nodeType":"ElementaryTypeName","src":"2377:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29103,"name":"BEFORE_REMOVE_LIQUIDITY_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29101,"src":"2431:30:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2464:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2431:34:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"fd5da010","id":29111,"mutability":"constant","name":"STATIC_SWAP_FEE_OFFSET","nameLocation":"2530:22:71","nodeType":"VariableDeclaration","scope":29141,"src":"2508:80:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29107,"name":"uint8","nodeType":"ElementaryTypeName","src":"2508:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":29110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29108,"name":"AFTER_REMOVE_LIQUIDITY_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29106,"src":"2555:29:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":29109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2587:1:71","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2555:33:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"public"},{"constant":true,"functionSelector":"1294794b","id":29116,"mutability":"constant","name":"AGGREGATE_SWAP_FEE_OFFSET","nameLocation":"2618:25:71","nodeType":"VariableDeclaration","scope":29141,"src":"2594:90:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29112,"name":"uint256","nodeType":"ElementaryTypeName","src":"2594:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29113,"name":"STATIC_SWAP_FEE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29111,"src":"2646:22:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":29114,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"2671:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2646:38:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"d9cebbd9","id":29121,"mutability":"constant","name":"AGGREGATE_YIELD_FEE_OFFSET","nameLocation":"2714:26:71","nodeType":"VariableDeclaration","scope":29141,"src":"2690:94:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29117,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29118,"name":"AGGREGATE_SWAP_FEE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29116,"src":"2743:25:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":29119,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"2771:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2743:41:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"3dc52c43","id":29126,"mutability":"constant","name":"DECIMAL_SCALING_FACTORS_OFFSET","nameLocation":"2814:30:71","nodeType":"VariableDeclaration","scope":29141,"src":"2790:99:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29122,"name":"uint256","nodeType":"ElementaryTypeName","src":"2790:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29123,"name":"AGGREGATE_YIELD_FEE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29121,"src":"2847:26:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":29124,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"2876:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2847:42:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"68aa2524","id":29131,"mutability":"constant","name":"PAUSE_WINDOW_END_TIME_OFFSET","nameLocation":"2919:28:71","nodeType":"VariableDeclaration","scope":29141,"src":"2895:125:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29127,"name":"uint256","nodeType":"ElementaryTypeName","src":"2895:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":29128,"name":"DECIMAL_SCALING_FACTORS_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29126,"src":"2958:30:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":29129,"name":"TOKEN_DECIMAL_DIFFS_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29134,"src":"2991:29:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2958:62:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"7ea0cde9","id":29134,"mutability":"constant","name":"TOKEN_DECIMAL_DIFFS_BITLENGTH","nameLocation":"3180:29:71","nodeType":"VariableDeclaration","scope":29141,"src":"3158:56:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29132,"name":"uint8","nodeType":"ElementaryTypeName","src":"3158:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3430","id":29133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3212:2:71","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"visibility":"public"},{"constant":true,"functionSelector":"28b161ce","id":29137,"mutability":"constant","name":"DECIMAL_DIFF_BITLENGTH","nameLocation":"3242:22:71","nodeType":"VariableDeclaration","scope":29141,"src":"3220:48:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29135,"name":"uint8","nodeType":"ElementaryTypeName","src":"3220:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"35","id":29136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3267:1:71","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"public"},{"constant":true,"functionSelector":"df9d385b","id":29140,"mutability":"constant","name":"TIMESTAMP_BITLENGTH","nameLocation":"3297:19:71","nodeType":"VariableDeclaration","scope":29141,"src":"3275:46:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":29138,"name":"uint8","nodeType":"ElementaryTypeName","src":"3275:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3332","id":29139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3319:2:71","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"public"}],"scope":29142,"src":"831:2493:71","usedErrors":[],"usedEvents":[]}],"src":"46:3279:71"},"id":71},"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC4626":[38998],"IRateProvider":[150],"IVaultErrors":[3550],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolConfigConst":[29141],"PoolConfigLib":[29980],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WordCodec":[7535],"WrappingDirection":[4629]},"id":29981,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":29143,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:72"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":29145,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29981,"sourceUnit":3551,"src":"72:93:72","symbolAliases":[{"foreign":{"id":29144,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"81:12:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":29146,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29981,"sourceUnit":4654,"src":"166:69:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","id":29148,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29981,"sourceUnit":7536,"src":"237:93:72","symbolAliases":[{"foreign":{"id":29147,"name":"WordCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7535,"src":"246:9:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol","file":"./PoolConfigConst.sol","id":29150,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":29981,"sourceUnit":29142,"src":"332:56:72","symbolAliases":[{"foreign":{"id":29149,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"341:15:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"PoolConfigLib","contractDependencies":[],"contractKind":"library","documentation":{"id":29151,"nodeType":"StructuredDocumentation","src":"390:888:72","text":" @notice Helper functions to read and write the packed hook configuration flags stored in `_poolConfigBits`.\n @dev Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot\n per pool). This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct.\n The layout (i.e., offsets for each data field) is specified in `PoolConfigConst`.\n There are two libraries for interpreting these data. `HooksConfigLib` parses fields related to hooks, while\n this one contains helpers related to the non-hook-related flags, along with aggregate fee percentages and\n other data associated with pools.\n The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token\n configuration, scaling factors, and dynamic information such as current balances and rates."},"fullyImplemented":true,"id":29980,"linearizedBaseContracts":[29980],"name":"PoolConfigLib","nameLocation":"1287:13:72","nodeType":"ContractDefinition","nodes":[{"global":false,"id":29154,"libraryName":{"id":29152,"name":"WordCodec","nameLocations":["1313:9:72"],"nodeType":"IdentifierPath","referencedDeclaration":7535,"src":"1313:9:72"},"nodeType":"UsingForDirective","src":"1307:28:72","typeName":{"id":29153,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1327:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":29158,"libraryName":{"id":29155,"name":"PoolConfigLib","nameLocations":["1346:13:72"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"1346:13:72"},"nodeType":"UsingForDirective","src":"1340:39:72","typeName":{"id":29157,"nodeType":"UserDefinedTypeName","pathNode":{"id":29156,"name":"PoolConfigBits","nameLocations":["1364:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1364:14:72"},"referencedDeclaration":4364,"src":"1364:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"body":{"id":29175,"nodeType":"Block","src":"1513:104:72","statements":[{"expression":{"arguments":[{"expression":{"id":29171,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"1571:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1587:22:72","memberName":"POOL_REGISTERED_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29021,"src":"1571:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29168,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29161,"src":"1552:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29166,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"1530:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1545:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"1530:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1530:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1560:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"1530:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1530:80:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29165,"id":29174,"nodeType":"Return","src":"1523:87:72"}]},"id":29176,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolRegistered","nameLocation":"1444:16:72","nodeType":"FunctionDefinition","parameters":{"id":29162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29161,"mutability":"mutable","name":"config","nameLocation":"1476:6:72","nodeType":"VariableDeclaration","scope":29176,"src":"1461:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29160,"nodeType":"UserDefinedTypeName","pathNode":{"id":29159,"name":"PoolConfigBits","nameLocations":["1461:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1461:14:72"},"referencedDeclaration":4364,"src":"1461:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"1460:23:72"},"returnParameters":{"id":29165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29176,"src":"1507:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29163,"name":"bool","nodeType":"ElementaryTypeName","src":"1507:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1506:6:72"},"scope":29980,"src":"1435:182:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29200,"nodeType":"Block","src":"1724:174:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29181,"src":"1831:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29195,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"1838:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1854:22:72","memberName":"POOL_REGISTERED_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29021,"src":"1838:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29191,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29179,"src":"1812:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29189,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"1790:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1805:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"1790:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1790:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1820:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"1790:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1790:87:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29187,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"1753:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1768:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"1753:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1753:138:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29186,"id":29199,"nodeType":"Return","src":"1734:157:72"}]},"id":29201,"implemented":true,"kind":"function","modifiers":[],"name":"setPoolRegistered","nameLocation":"1632:17:72","nodeType":"FunctionDefinition","parameters":{"id":29182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29179,"mutability":"mutable","name":"config","nameLocation":"1665:6:72","nodeType":"VariableDeclaration","scope":29201,"src":"1650:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29178,"nodeType":"UserDefinedTypeName","pathNode":{"id":29177,"name":"PoolConfigBits","nameLocations":["1650:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1650:14:72"},"referencedDeclaration":4364,"src":"1650:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29181,"mutability":"mutable","name":"value","nameLocation":"1678:5:72","nodeType":"VariableDeclaration","scope":29201,"src":"1673:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29180,"name":"bool","nodeType":"ElementaryTypeName","src":"1673:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1649:35:72"},"returnParameters":{"id":29186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29201,"src":"1708:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29184,"nodeType":"UserDefinedTypeName","pathNode":{"id":29183,"name":"PoolConfigBits","nameLocations":["1708:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1708:14:72"},"referencedDeclaration":4364,"src":"1708:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"1707:16:72"},"scope":29980,"src":"1623:275:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29218,"nodeType":"Block","src":"1983:105:72","statements":[{"expression":{"arguments":[{"expression":{"id":29214,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2041:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2057:23:72","memberName":"POOL_INITIALIZED_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29026,"src":"2041:39:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29211,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29204,"src":"2022:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29209,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2000:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2015:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"2000:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2000:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2030:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"2000:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2000:81:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29208,"id":29217,"nodeType":"Return","src":"1993:88:72"}]},"id":29219,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolInitialized","nameLocation":"1913:17:72","nodeType":"FunctionDefinition","parameters":{"id":29205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29204,"mutability":"mutable","name":"config","nameLocation":"1946:6:72","nodeType":"VariableDeclaration","scope":29219,"src":"1931:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29203,"nodeType":"UserDefinedTypeName","pathNode":{"id":29202,"name":"PoolConfigBits","nameLocations":["1931:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1931:14:72"},"referencedDeclaration":4364,"src":"1931:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"1930:23:72"},"returnParameters":{"id":29208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29219,"src":"1977:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29206,"name":"bool","nodeType":"ElementaryTypeName","src":"1977:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1976:6:72"},"scope":29980,"src":"1904:184:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29243,"nodeType":"Block","src":"2196:175:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29224,"src":"2303:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29238,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2310:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2326:23:72","memberName":"POOL_INITIALIZED_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29026,"src":"2310:39:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29234,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29222,"src":"2284:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29232,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2262:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2277:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"2262:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2262:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2292:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"2262:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2262:88:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29230,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2225:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"2225:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:139:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29229,"id":29242,"nodeType":"Return","src":"2206:158:72"}]},"id":29244,"implemented":true,"kind":"function","modifiers":[],"name":"setPoolInitialized","nameLocation":"2103:18:72","nodeType":"FunctionDefinition","parameters":{"id":29225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29222,"mutability":"mutable","name":"config","nameLocation":"2137:6:72","nodeType":"VariableDeclaration","scope":29244,"src":"2122:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29221,"nodeType":"UserDefinedTypeName","pathNode":{"id":29220,"name":"PoolConfigBits","nameLocations":["2122:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2122:14:72"},"referencedDeclaration":4364,"src":"2122:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29224,"mutability":"mutable","name":"value","nameLocation":"2150:5:72","nodeType":"VariableDeclaration","scope":29244,"src":"2145:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29223,"name":"bool","nodeType":"ElementaryTypeName","src":"2145:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2121:35:72"},"returnParameters":{"id":29229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29244,"src":"2180:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29227,"nodeType":"UserDefinedTypeName","pathNode":{"id":29226,"name":"PoolConfigBits","nameLocations":["2180:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2180:14:72"},"referencedDeclaration":4364,"src":"2180:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2179:16:72"},"scope":29980,"src":"2094:277:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29261,"nodeType":"Block","src":"2451:100:72","statements":[{"expression":{"arguments":[{"expression":{"id":29257,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2509:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2525:18:72","memberName":"POOL_PAUSED_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29031,"src":"2509:34:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29254,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29247,"src":"2490:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29252,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2468:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2483:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"2468:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2468:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2498:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"2468:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2468:76:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29251,"id":29260,"nodeType":"Return","src":"2461:83:72"}]},"id":29262,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolPaused","nameLocation":"2386:12:72","nodeType":"FunctionDefinition","parameters":{"id":29248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29247,"mutability":"mutable","name":"config","nameLocation":"2414:6:72","nodeType":"VariableDeclaration","scope":29262,"src":"2399:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29246,"nodeType":"UserDefinedTypeName","pathNode":{"id":29245,"name":"PoolConfigBits","nameLocations":["2399:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2399:14:72"},"referencedDeclaration":4364,"src":"2399:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2398:23:72"},"returnParameters":{"id":29251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29262,"src":"2445:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29249,"name":"bool","nodeType":"ElementaryTypeName","src":"2445:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2444:6:72"},"scope":29980,"src":"2377:174:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29286,"nodeType":"Block","src":"2654:128:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29267,"src":"2732:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29281,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2739:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2755:18:72","memberName":"POOL_PAUSED_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29031,"src":"2739:34:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29277,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29265,"src":"2713:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29275,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2691:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2706:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"2691:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2691:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2721:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"2691:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2691:83:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29273,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2671:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2686:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"2671:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2671:104:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29272,"id":29285,"nodeType":"Return","src":"2664:111:72"}]},"id":29287,"implemented":true,"kind":"function","modifiers":[],"name":"setPoolPaused","nameLocation":"2566:13:72","nodeType":"FunctionDefinition","parameters":{"id":29268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29265,"mutability":"mutable","name":"config","nameLocation":"2595:6:72","nodeType":"VariableDeclaration","scope":29287,"src":"2580:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29264,"nodeType":"UserDefinedTypeName","pathNode":{"id":29263,"name":"PoolConfigBits","nameLocations":["2580:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2580:14:72"},"referencedDeclaration":4364,"src":"2580:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29267,"mutability":"mutable","name":"value","nameLocation":"2608:5:72","nodeType":"VariableDeclaration","scope":29287,"src":"2603:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29266,"name":"bool","nodeType":"ElementaryTypeName","src":"2603:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2579:35:72"},"returnParameters":{"id":29272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29287,"src":"2638:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29270,"nodeType":"UserDefinedTypeName","pathNode":{"id":29269,"name":"PoolConfigBits","nameLocations":["2638:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2638:14:72"},"referencedDeclaration":4364,"src":"2638:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2637:16:72"},"scope":29980,"src":"2557:225:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29304,"nodeType":"Block","src":"2870:107:72","statements":[{"expression":{"arguments":[{"expression":{"id":29300,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2928:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2944:25:72","memberName":"POOL_RECOVERY_MODE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29036,"src":"2928:41:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29297,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29290,"src":"2909:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29295,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"2887:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2902:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"2887:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2887:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2917:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"2887:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2887:83:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29294,"id":29303,"nodeType":"Return","src":"2880:90:72"}]},"id":29305,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolInRecoveryMode","nameLocation":"2797:20:72","nodeType":"FunctionDefinition","parameters":{"id":29291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29290,"mutability":"mutable","name":"config","nameLocation":"2833:6:72","nodeType":"VariableDeclaration","scope":29305,"src":"2818:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29289,"nodeType":"UserDefinedTypeName","pathNode":{"id":29288,"name":"PoolConfigBits","nameLocations":["2818:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2818:14:72"},"referencedDeclaration":4364,"src":"2818:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"2817:23:72"},"returnParameters":{"id":29294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29305,"src":"2864:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29292,"name":"bool","nodeType":"ElementaryTypeName","src":"2864:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2863:6:72"},"scope":29980,"src":"2788:189:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29329,"nodeType":"Block","src":"3088:177:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29310,"src":"3195:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29324,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3202:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3218:25:72","memberName":"POOL_RECOVERY_MODE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29036,"src":"3202:41:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29320,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29308,"src":"3176:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29318,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3154:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3169:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"3154:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3154:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3184:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"3154:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3154:90:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29316,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3117:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3132:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"3117:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3117:141:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29315,"id":29328,"nodeType":"Return","src":"3098:160:72"}]},"id":29330,"implemented":true,"kind":"function","modifiers":[],"name":"setPoolInRecoveryMode","nameLocation":"2992:21:72","nodeType":"FunctionDefinition","parameters":{"id":29311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29308,"mutability":"mutable","name":"config","nameLocation":"3029:6:72","nodeType":"VariableDeclaration","scope":29330,"src":"3014:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29307,"nodeType":"UserDefinedTypeName","pathNode":{"id":29306,"name":"PoolConfigBits","nameLocations":["3014:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3014:14:72"},"referencedDeclaration":4364,"src":"3014:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29310,"mutability":"mutable","name":"value","nameLocation":"3042:5:72","nodeType":"VariableDeclaration","scope":29330,"src":"3037:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29309,"name":"bool","nodeType":"ElementaryTypeName","src":"3037:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3013:35:72"},"returnParameters":{"id":29315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29330,"src":"3072:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29313,"nodeType":"UserDefinedTypeName","pathNode":{"id":29312,"name":"PoolConfigBits","nameLocations":["3072:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3072:14:72"},"referencedDeclaration":4364,"src":"3072:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"3071:16:72"},"scope":29980,"src":"2983:282:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29348,"nodeType":"Block","src":"3405:255:72","statements":[{"expression":{"id":29346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3567:86:72","subExpression":{"arguments":[{"expression":{"id":29343,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"3609:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3625:27:72","memberName":"UNBALANCED_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29041,"src":"3609:43:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29340,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29333,"src":"3590:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29338,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"3568:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3583:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"3568:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3568:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3598:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"3568:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3568:85:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29337,"id":29347,"nodeType":"Return","src":"3560:93:72"}]},"id":29349,"implemented":true,"kind":"function","modifiers":[],"name":"supportsUnbalancedLiquidity","nameLocation":"3325:27:72","nodeType":"FunctionDefinition","parameters":{"id":29334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29333,"mutability":"mutable","name":"config","nameLocation":"3368:6:72","nodeType":"VariableDeclaration","scope":29349,"src":"3353:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29332,"nodeType":"UserDefinedTypeName","pathNode":{"id":29331,"name":"PoolConfigBits","nameLocations":["3353:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3353:14:72"},"referencedDeclaration":4364,"src":"3353:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"3352:23:72"},"returnParameters":{"id":29337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29349,"src":"3399:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29335,"name":"bool","nodeType":"ElementaryTypeName","src":"3399:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3398:6:72"},"scope":29980,"src":"3316:344:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29367,"nodeType":"Block","src":"3746:147:72","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29355,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29352,"src":"3760:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":29356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3767:27:72","memberName":"supportsUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":29349,"src":"3760:34:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":29357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3760:36:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":29358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3800:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3760:45:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29366,"nodeType":"IfStatement","src":"3756:131:72","trueBody":{"id":29365,"nodeType":"Block","src":"3807:80:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29360,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"3828:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3841:33:72","memberName":"DoesNotSupportUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":3531,"src":"3828:46:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3828:48:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29364,"nodeType":"RevertStatement","src":"3821:55:72"}]}}]},"id":29368,"implemented":true,"kind":"function","modifiers":[],"name":"requireUnbalancedLiquidityEnabled","nameLocation":"3675:33:72","nodeType":"FunctionDefinition","parameters":{"id":29353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29352,"mutability":"mutable","name":"config","nameLocation":"3724:6:72","nodeType":"VariableDeclaration","scope":29368,"src":"3709:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29351,"nodeType":"UserDefinedTypeName","pathNode":{"id":29350,"name":"PoolConfigBits","nameLocations":["3709:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3709:14:72"},"referencedDeclaration":4364,"src":"3709:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"3708:23:72"},"returnParameters":{"id":29354,"nodeType":"ParameterList","parameters":[],"src":"3746:0:72"},"scope":29980,"src":"3666:227:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29392,"nodeType":"Block","src":"4055:258:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29386,"name":"disableUnbalancedLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29373,"src":"4183:26:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29387,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"4231:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4247:27:72","memberName":"UNBALANCED_LIQUIDITY_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29041,"src":"4231:43:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29383,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29371,"src":"4143:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29381,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4121:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4136:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"4121:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4121:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4151:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"4121:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4121:171:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29379,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4084:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4099:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"4084:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4084:222:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29378,"id":29391,"nodeType":"Return","src":"4065:241:72"}]},"id":29393,"implemented":true,"kind":"function","modifiers":[],"name":"setDisableUnbalancedLiquidity","nameLocation":"3908:29:72","nodeType":"FunctionDefinition","parameters":{"id":29374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29371,"mutability":"mutable","name":"config","nameLocation":"3962:6:72","nodeType":"VariableDeclaration","scope":29393,"src":"3947:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29370,"nodeType":"UserDefinedTypeName","pathNode":{"id":29369,"name":"PoolConfigBits","nameLocations":["3947:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"3947:14:72"},"referencedDeclaration":4364,"src":"3947:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29373,"mutability":"mutable","name":"disableUnbalancedLiquidity","nameLocation":"3983:26:72","nodeType":"VariableDeclaration","scope":29393,"src":"3978:31:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29372,"name":"bool","nodeType":"ElementaryTypeName","src":"3978:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3937:78:72"},"returnParameters":{"id":29378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29377,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29393,"src":"4039:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29376,"nodeType":"UserDefinedTypeName","pathNode":{"id":29375,"name":"PoolConfigBits","nameLocations":["4039:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4039:14:72"},"referencedDeclaration":4364,"src":"4039:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4038:16:72"},"scope":29980,"src":"3899:414:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29410,"nodeType":"Block","src":"4407:109:72","statements":[{"expression":{"arguments":[{"expression":{"id":29406,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"4465:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4481:27:72","memberName":"ADD_LIQUIDITY_CUSTOM_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29046,"src":"4465:43:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29403,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29396,"src":"4446:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29401,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4424:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4439:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"4424:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4424:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4454:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"4424:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4424:85:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29400,"id":29409,"nodeType":"Return","src":"4417:92:72"}]},"id":29411,"implemented":true,"kind":"function","modifiers":[],"name":"supportsAddLiquidityCustom","nameLocation":"4328:26:72","nodeType":"FunctionDefinition","parameters":{"id":29397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29396,"mutability":"mutable","name":"config","nameLocation":"4370:6:72","nodeType":"VariableDeclaration","scope":29411,"src":"4355:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29395,"nodeType":"UserDefinedTypeName","pathNode":{"id":29394,"name":"PoolConfigBits","nameLocations":["4355:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4355:14:72"},"referencedDeclaration":4364,"src":"4355:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4354:23:72"},"returnParameters":{"id":29400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29411,"src":"4401:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29398,"name":"bool","nodeType":"ElementaryTypeName","src":"4401:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4400:6:72"},"scope":29980,"src":"4319:197:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29429,"nodeType":"Block","src":"4601:145:72","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29417,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29414,"src":"4615:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":29418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4622:26:72","memberName":"supportsAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29411,"src":"4615:33:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":29419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4615:35:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":29420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4654:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4615:44:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29428,"nodeType":"IfStatement","src":"4611:129:72","trueBody":{"id":29427,"nodeType":"Block","src":"4661:79:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29422,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"4682:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4695:32:72","memberName":"DoesNotSupportAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":3350,"src":"4682:45:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4682:47:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29426,"nodeType":"RevertStatement","src":"4675:54:72"}]}}]},"id":29430,"implemented":true,"kind":"function","modifiers":[],"name":"requireAddLiquidityCustomEnabled","nameLocation":"4531:32:72","nodeType":"FunctionDefinition","parameters":{"id":29415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29414,"mutability":"mutable","name":"config","nameLocation":"4579:6:72","nodeType":"VariableDeclaration","scope":29430,"src":"4564:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29413,"nodeType":"UserDefinedTypeName","pathNode":{"id":29412,"name":"PoolConfigBits","nameLocations":["4564:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4564:14:72"},"referencedDeclaration":4364,"src":"4564:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4563:23:72"},"returnParameters":{"id":29416,"nodeType":"ParameterList","parameters":[],"src":"4601:0:72"},"scope":29980,"src":"4522:224:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29454,"nodeType":"Block","src":"4898:256:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29448,"name":"enableAddLiquidityCustom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29435,"src":"5026:24:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29449,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"5072:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5088:27:72","memberName":"ADD_LIQUIDITY_CUSTOM_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29046,"src":"5072:43:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29445,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29433,"src":"4986:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29443,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4964:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29444,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4979:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"4964:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4964:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4994:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"4964:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4964:169:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29441,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"4927:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4942:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"4927:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4927:220:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29440,"id":29453,"nodeType":"Return","src":"4908:239:72"}]},"id":29455,"implemented":true,"kind":"function","modifiers":[],"name":"setAddLiquidityCustom","nameLocation":"4761:21:72","nodeType":"FunctionDefinition","parameters":{"id":29436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29433,"mutability":"mutable","name":"config","nameLocation":"4807:6:72","nodeType":"VariableDeclaration","scope":29455,"src":"4792:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29432,"nodeType":"UserDefinedTypeName","pathNode":{"id":29431,"name":"PoolConfigBits","nameLocations":["4792:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4792:14:72"},"referencedDeclaration":4364,"src":"4792:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29435,"mutability":"mutable","name":"enableAddLiquidityCustom","nameLocation":"4828:24:72","nodeType":"VariableDeclaration","scope":29455,"src":"4823:29:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29434,"name":"bool","nodeType":"ElementaryTypeName","src":"4823:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4782:76:72"},"returnParameters":{"id":29440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29455,"src":"4882:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29438,"nodeType":"UserDefinedTypeName","pathNode":{"id":29437,"name":"PoolConfigBits","nameLocations":["4882:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"4882:14:72"},"referencedDeclaration":4364,"src":"4882:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"4881:16:72"},"scope":29980,"src":"4752:402:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29472,"nodeType":"Block","src":"5251:112:72","statements":[{"expression":{"arguments":[{"expression":{"id":29468,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"5309:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5325:30:72","memberName":"REMOVE_LIQUIDITY_CUSTOM_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29051,"src":"5309:46:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29465,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29458,"src":"5290:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29463,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5268:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5283:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"5268:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5268:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5298:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"5268:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5268:88:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29462,"id":29471,"nodeType":"Return","src":"5261:95:72"}]},"id":29473,"implemented":true,"kind":"function","modifiers":[],"name":"supportsRemoveLiquidityCustom","nameLocation":"5169:29:72","nodeType":"FunctionDefinition","parameters":{"id":29459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29458,"mutability":"mutable","name":"config","nameLocation":"5214:6:72","nodeType":"VariableDeclaration","scope":29473,"src":"5199:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29457,"nodeType":"UserDefinedTypeName","pathNode":{"id":29456,"name":"PoolConfigBits","nameLocations":["5199:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5199:14:72"},"referencedDeclaration":4364,"src":"5199:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"5198:23:72"},"returnParameters":{"id":29462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29473,"src":"5245:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29460,"name":"bool","nodeType":"ElementaryTypeName","src":"5245:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5244:6:72"},"scope":29980,"src":"5160:203:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29491,"nodeType":"Block","src":"5451:151:72","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29479,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29476,"src":"5465:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":29480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5472:29:72","memberName":"supportsRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29473,"src":"5465:36:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":29481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5465:38:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":29482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5507:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5465:47:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29490,"nodeType":"IfStatement","src":"5461:135:72","trueBody":{"id":29489,"nodeType":"Block","src":"5514:82:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29484,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"5535:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5548:35:72","memberName":"DoesNotSupportRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":3386,"src":"5535:48:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:50:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29488,"nodeType":"RevertStatement","src":"5528:57:72"}]}}]},"id":29492,"implemented":true,"kind":"function","modifiers":[],"name":"requireRemoveLiquidityCustomEnabled","nameLocation":"5378:35:72","nodeType":"FunctionDefinition","parameters":{"id":29477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29476,"mutability":"mutable","name":"config","nameLocation":"5429:6:72","nodeType":"VariableDeclaration","scope":29492,"src":"5414:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29475,"nodeType":"UserDefinedTypeName","pathNode":{"id":29474,"name":"PoolConfigBits","nameLocations":["5414:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5414:14:72"},"referencedDeclaration":4364,"src":"5414:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"5413:23:72"},"returnParameters":{"id":29478,"nodeType":"ParameterList","parameters":[],"src":"5451:0:72"},"scope":29980,"src":"5369:233:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29516,"nodeType":"Block","src":"5760:262:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29510,"name":"enableRemoveLiquidityCustom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29497,"src":"5888:27:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29511,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"5937:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5953:30:72","memberName":"REMOVE_LIQUIDITY_CUSTOM_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29051,"src":"5937:46:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29507,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29495,"src":"5848:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29505,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5826:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5841:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"5826:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5826:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5856:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"5826:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5826:175:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29503,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"5789:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5804:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"5789:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:226:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29502,"id":29515,"nodeType":"Return","src":"5770:245:72"}]},"id":29517,"implemented":true,"kind":"function","modifiers":[],"name":"setRemoveLiquidityCustom","nameLocation":"5617:24:72","nodeType":"FunctionDefinition","parameters":{"id":29498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29495,"mutability":"mutable","name":"config","nameLocation":"5666:6:72","nodeType":"VariableDeclaration","scope":29517,"src":"5651:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29494,"nodeType":"UserDefinedTypeName","pathNode":{"id":29493,"name":"PoolConfigBits","nameLocations":["5651:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5651:14:72"},"referencedDeclaration":4364,"src":"5651:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29497,"mutability":"mutable","name":"enableRemoveLiquidityCustom","nameLocation":"5687:27:72","nodeType":"VariableDeclaration","scope":29517,"src":"5682:32:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29496,"name":"bool","nodeType":"ElementaryTypeName","src":"5682:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5641:79:72"},"returnParameters":{"id":29502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29517,"src":"5744:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29500,"nodeType":"UserDefinedTypeName","pathNode":{"id":29499,"name":"PoolConfigBits","nameLocations":["5744:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"5744:14:72"},"referencedDeclaration":4364,"src":"5744:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"5743:16:72"},"scope":29980,"src":"5608:414:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29534,"nodeType":"Block","src":"6106:97:72","statements":[{"expression":{"arguments":[{"expression":{"id":29530,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"6164:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6180:15:72","memberName":"DONATION_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29056,"src":"6164:31:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29527,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29520,"src":"6145:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29525,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6123:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6138:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"6123:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6123:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6153:10:72","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"6123:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":29532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6123:73:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":29524,"id":29533,"nodeType":"Return","src":"6116:80:72"}]},"id":29535,"implemented":true,"kind":"function","modifiers":[],"name":"supportsDonation","nameLocation":"6037:16:72","nodeType":"FunctionDefinition","parameters":{"id":29521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29520,"mutability":"mutable","name":"config","nameLocation":"6069:6:72","nodeType":"VariableDeclaration","scope":29535,"src":"6054:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29519,"nodeType":"UserDefinedTypeName","pathNode":{"id":29518,"name":"PoolConfigBits","nameLocations":["6054:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6054:14:72"},"referencedDeclaration":4364,"src":"6054:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"6053:23:72"},"returnParameters":{"id":29524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29523,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29535,"src":"6100:4:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29522,"name":"bool","nodeType":"ElementaryTypeName","src":"6100:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6099:6:72"},"scope":29980,"src":"6028:175:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29559,"nodeType":"Block","src":"6313:176:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29553,"name":"enableDonation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29540,"src":"6420:14:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":29554,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"6436:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6452:15:72","memberName":"DONATION_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29056,"src":"6436:31:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29550,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29538,"src":"6401:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29548,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6379:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6394:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"6379:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6409:10:72","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"6379:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":29556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:89:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29546,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6342:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6357:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"6342:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6342:140:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29545,"id":29558,"nodeType":"Return","src":"6323:159:72"}]},"id":29560,"implemented":true,"kind":"function","modifiers":[],"name":"setDonation","nameLocation":"6218:11:72","nodeType":"FunctionDefinition","parameters":{"id":29541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29538,"mutability":"mutable","name":"config","nameLocation":"6245:6:72","nodeType":"VariableDeclaration","scope":29560,"src":"6230:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29537,"nodeType":"UserDefinedTypeName","pathNode":{"id":29536,"name":"PoolConfigBits","nameLocations":["6230:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6230:14:72"},"referencedDeclaration":4364,"src":"6230:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29540,"mutability":"mutable","name":"enableDonation","nameLocation":"6258:14:72","nodeType":"VariableDeclaration","scope":29560,"src":"6253:19:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29539,"name":"bool","nodeType":"ElementaryTypeName","src":"6253:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6229:44:72"},"returnParameters":{"id":29545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29560,"src":"6297:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29543,"nodeType":"UserDefinedTypeName","pathNode":{"id":29542,"name":"PoolConfigBits","nameLocations":["6297:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6297:14:72"},"referencedDeclaration":4364,"src":"6297:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"6296:16:72"},"scope":29980,"src":"6209:280:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29578,"nodeType":"Block","src":"6564:125:72","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":29570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29566,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29563,"src":"6578:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":29567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6585:16:72","memberName":"supportsDonation","nodeType":"MemberAccess","referencedDeclaration":29535,"src":"6578:23:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":29568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6578:25:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":29569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6607:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6578:34:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29577,"nodeType":"IfStatement","src":"6574:109:72","trueBody":{"id":29576,"nodeType":"Block","src":"6614:69:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29571,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"6635:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6648:22:72","memberName":"DoesNotSupportDonation","nodeType":"MemberAccess","referencedDeclaration":3353,"src":"6635:35:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6635:37:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29575,"nodeType":"RevertStatement","src":"6628:44:72"}]}}]},"id":29579,"implemented":true,"kind":"function","modifiers":[],"name":"requireDonationEnabled","nameLocation":"6504:22:72","nodeType":"FunctionDefinition","parameters":{"id":29564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29563,"mutability":"mutable","name":"config","nameLocation":"6542:6:72","nodeType":"VariableDeclaration","scope":29579,"src":"6527:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29562,"nodeType":"UserDefinedTypeName","pathNode":{"id":29561,"name":"PoolConfigBits","nameLocations":["6527:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6527:14:72"},"referencedDeclaration":4364,"src":"6527:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"6526:23:72"},"returnParameters":{"id":29565,"nodeType":"ParameterList","parameters":[],"src":"6564:0:72"},"scope":29980,"src":"6495:194:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29599,"nodeType":"Block","src":"6822:164:72","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":29592,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"6892:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6908:22:72","memberName":"STATIC_SWAP_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29111,"src":"6892:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":29594,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"6932:13:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":29589,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29582,"src":"6873:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29587,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"6851:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6866:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"6851:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6851:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6881:10:72","memberName":"decodeUint","nodeType":"MemberAccess","referencedDeclaration":7321,"src":"6851:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (uint256)"}},"id":29595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6851:95:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":29596,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"6961:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6851:128:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29586,"id":29598,"nodeType":"Return","src":"6832:147:72"}]},"id":29600,"implemented":true,"kind":"function","modifiers":[],"name":"getStaticSwapFeePercentage","nameLocation":"6740:26:72","nodeType":"FunctionDefinition","parameters":{"id":29583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29582,"mutability":"mutable","name":"config","nameLocation":"6782:6:72","nodeType":"VariableDeclaration","scope":29600,"src":"6767:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29581,"nodeType":"UserDefinedTypeName","pathNode":{"id":29580,"name":"PoolConfigBits","nameLocations":["6767:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"6767:14:72"},"referencedDeclaration":4364,"src":"6767:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"6766:23:72"},"returnParameters":{"id":29586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29600,"src":"6813:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29584,"name":"uint256","nodeType":"ElementaryTypeName","src":"6813:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6812:9:72"},"scope":29980,"src":"6731:255:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29639,"nodeType":"Block","src":"7105:506:72","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29605,"src":"7292:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":29612,"name":"MAX_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"7300:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7292:26:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29620,"nodeType":"IfStatement","src":"7288:97:72","trueBody":{"id":29619,"nodeType":"Block","src":"7320:65:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29614,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"7341:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7354:18:72","memberName":"PercentageAboveMax","nodeType":"MemberAccess","referencedDeclaration":3401,"src":"7341:31:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7341:33:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29618,"nodeType":"RevertStatement","src":"7334:40:72"}]}},{"expression":{"id":29623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29605,"src":"7394:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":29622,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"7403:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7394:27:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29624,"nodeType":"ExpressionStatement","src":"7394:27:72"},{"expression":{"arguments":[{"arguments":[{"id":29632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29605,"src":"7529:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29633,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"7536:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7552:22:72","memberName":"STATIC_SWAP_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29111,"src":"7536:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":29635,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"7576:13:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":29629,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29603,"src":"7510:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29627,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"7488:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7503:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"7488:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7488:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7518:10:72","memberName":"insertUint","nodeType":"MemberAccess","referencedDeclaration":7149,"src":"7488:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256,uint256) pure returns (bytes32)"}},"id":29636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7488:102:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29625,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"7451:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7466:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"7451:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7451:153:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29610,"id":29638,"nodeType":"Return","src":"7432:172:72"}]},"id":29640,"implemented":true,"kind":"function","modifiers":[],"name":"setStaticSwapFeePercentage","nameLocation":"7001:26:72","nodeType":"FunctionDefinition","parameters":{"id":29606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29603,"mutability":"mutable","name":"config","nameLocation":"7043:6:72","nodeType":"VariableDeclaration","scope":29640,"src":"7028:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29602,"nodeType":"UserDefinedTypeName","pathNode":{"id":29601,"name":"PoolConfigBits","nameLocations":["7028:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"7028:14:72"},"referencedDeclaration":4364,"src":"7028:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29605,"mutability":"mutable","name":"value","nameLocation":"7059:5:72","nodeType":"VariableDeclaration","scope":29640,"src":"7051:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29604,"name":"uint256","nodeType":"ElementaryTypeName","src":"7051:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7027:38:72"},"returnParameters":{"id":29610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29640,"src":"7089:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29608,"nodeType":"UserDefinedTypeName","pathNode":{"id":29607,"name":"PoolConfigBits","nameLocations":["7089:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"7089:14:72"},"referencedDeclaration":4364,"src":"7089:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"7088:16:72"},"scope":29980,"src":"6992:619:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29660,"nodeType":"Block","src":"7711:167:72","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":29653,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"7781:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7797:25:72","memberName":"AGGREGATE_SWAP_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29116,"src":"7781:41:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29655,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"7824:13:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":29650,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29643,"src":"7762:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29648,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"7740:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7755:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"7740:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7740:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7770:10:72","memberName":"decodeUint","nodeType":"MemberAccess","referencedDeclaration":7321,"src":"7740:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (uint256)"}},"id":29656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7740:98:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":29657,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"7853:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7740:131:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29647,"id":29659,"nodeType":"Return","src":"7721:150:72"}]},"id":29661,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregateSwapFeePercentage","nameLocation":"7626:29:72","nodeType":"FunctionDefinition","parameters":{"id":29644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29643,"mutability":"mutable","name":"config","nameLocation":"7671:6:72","nodeType":"VariableDeclaration","scope":29661,"src":"7656:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29642,"nodeType":"UserDefinedTypeName","pathNode":{"id":29641,"name":"PoolConfigBits","nameLocations":["7656:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"7656:14:72"},"referencedDeclaration":4364,"src":"7656:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"7655:23:72"},"returnParameters":{"id":29647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29646,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29661,"src":"7702:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29645,"name":"uint256","nodeType":"ElementaryTypeName","src":"7702:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7701:9:72"},"scope":29980,"src":"7617:261:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29700,"nodeType":"Block","src":"8022:414:72","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29666,"src":"8036:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":29673,"name":"MAX_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"8044:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8036:26:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29681,"nodeType":"IfStatement","src":"8032:97:72","trueBody":{"id":29680,"nodeType":"Block","src":"8064:65:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29675,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"8085:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8098:18:72","memberName":"PercentageAboveMax","nodeType":"MemberAccess","referencedDeclaration":3401,"src":"8085:31:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:33:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29679,"nodeType":"RevertStatement","src":"8078:40:72"}]}},{"expression":{"id":29684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29666,"src":"8138:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":29683,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"8147:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8138:27:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29685,"nodeType":"ExpressionStatement","src":"8138:27:72"},{"expression":{"arguments":[{"arguments":[{"id":29693,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29666,"src":"8294:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29694,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"8321:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8337:25:72","memberName":"AGGREGATE_SWAP_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29116,"src":"8321:41:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29696,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"8384:13:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":29690,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29664,"src":"8254:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29688,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"8232:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8247:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"8232:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8232:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8262:10:72","memberName":"insertUint","nodeType":"MemberAccess","referencedDeclaration":7149,"src":"8232:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256,uint256) pure returns (bytes32)"}},"id":29697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8232:183:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29686,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"8195:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8210:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"8195:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8195:234:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29671,"id":29699,"nodeType":"Return","src":"8176:253:72"}]},"id":29701,"implemented":true,"kind":"function","modifiers":[],"name":"setAggregateSwapFeePercentage","nameLocation":"7893:29:72","nodeType":"FunctionDefinition","parameters":{"id":29667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29664,"mutability":"mutable","name":"config","nameLocation":"7947:6:72","nodeType":"VariableDeclaration","scope":29701,"src":"7932:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29663,"nodeType":"UserDefinedTypeName","pathNode":{"id":29662,"name":"PoolConfigBits","nameLocations":["7932:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"7932:14:72"},"referencedDeclaration":4364,"src":"7932:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29666,"mutability":"mutable","name":"value","nameLocation":"7971:5:72","nodeType":"VariableDeclaration","scope":29701,"src":"7963:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29665,"name":"uint256","nodeType":"ElementaryTypeName","src":"7963:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7922:60:72"},"returnParameters":{"id":29671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29701,"src":"8006:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29669,"nodeType":"UserDefinedTypeName","pathNode":{"id":29668,"name":"PoolConfigBits","nameLocations":["8006:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"8006:14:72"},"referencedDeclaration":4364,"src":"8006:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"8005:16:72"},"scope":29980,"src":"7884:552:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29721,"nodeType":"Block","src":"8537:168:72","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":29714,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"8607:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8623:26:72","memberName":"AGGREGATE_YIELD_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29121,"src":"8607:42:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29716,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"8651:13:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":29711,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29704,"src":"8588:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29709,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"8566:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8581:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"8566:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8566:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8596:10:72","memberName":"decodeUint","nodeType":"MemberAccess","referencedDeclaration":7321,"src":"8566:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (uint256)"}},"id":29717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8566:99:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":29718,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"8680:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8566:132:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":29708,"id":29720,"nodeType":"Return","src":"8547:151:72"}]},"id":29722,"implemented":true,"kind":"function","modifiers":[],"name":"getAggregateYieldFeePercentage","nameLocation":"8451:30:72","nodeType":"FunctionDefinition","parameters":{"id":29705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29704,"mutability":"mutable","name":"config","nameLocation":"8497:6:72","nodeType":"VariableDeclaration","scope":29722,"src":"8482:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29703,"nodeType":"UserDefinedTypeName","pathNode":{"id":29702,"name":"PoolConfigBits","nameLocations":["8482:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"8482:14:72"},"referencedDeclaration":4364,"src":"8482:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"8481:23:72"},"returnParameters":{"id":29708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29722,"src":"8528:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29706,"name":"uint256","nodeType":"ElementaryTypeName","src":"8528:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8527:9:72"},"scope":29980,"src":"8442:263:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29761,"nodeType":"Block","src":"8850:415:72","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29733,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29727,"src":"8864:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":29734,"name":"MAX_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"8872:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8864:26:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29742,"nodeType":"IfStatement","src":"8860:97:72","trueBody":{"id":29741,"nodeType":"Block","src":"8892:65:72","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29736,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"8913:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":29738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8926:18:72","memberName":"PercentageAboveMax","nodeType":"MemberAccess","referencedDeclaration":3401,"src":"8913:31:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":29739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8913:33:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":29740,"nodeType":"RevertStatement","src":"8906:40:72"}]}},{"expression":{"id":29745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29743,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29727,"src":"8966:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":29744,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"8975:18:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8966:27:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29746,"nodeType":"ExpressionStatement","src":"8966:27:72"},{"expression":{"arguments":[{"arguments":[{"id":29754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29727,"src":"9122:5:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29755,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"9149:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9165:26:72","memberName":"AGGREGATE_YIELD_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29121,"src":"9149:42:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":29757,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"9213:13:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":29751,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29725,"src":"9082:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29749,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"9060:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9075:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"9060:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9060:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9090:10:72","memberName":"insertUint","nodeType":"MemberAccess","referencedDeclaration":7149,"src":"9060:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256,uint256) pure returns (bytes32)"}},"id":29758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9060:184:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29747,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"9023:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9038:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"9023:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9023:235:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29732,"id":29760,"nodeType":"Return","src":"9004:254:72"}]},"id":29762,"implemented":true,"kind":"function","modifiers":[],"name":"setAggregateYieldFeePercentage","nameLocation":"8720:30:72","nodeType":"FunctionDefinition","parameters":{"id":29728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29725,"mutability":"mutable","name":"config","nameLocation":"8775:6:72","nodeType":"VariableDeclaration","scope":29762,"src":"8760:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29724,"nodeType":"UserDefinedTypeName","pathNode":{"id":29723,"name":"PoolConfigBits","nameLocations":["8760:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"8760:14:72"},"referencedDeclaration":4364,"src":"8760:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29727,"mutability":"mutable","name":"value","nameLocation":"8799:5:72","nodeType":"VariableDeclaration","scope":29762,"src":"8791:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29726,"name":"uint256","nodeType":"ElementaryTypeName","src":"8791:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8750:60:72"},"returnParameters":{"id":29732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29762,"src":"8834:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29730,"nodeType":"UserDefinedTypeName","pathNode":{"id":29729,"name":"PoolConfigBits","nameLocations":["8834:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"8834:14:72"},"referencedDeclaration":4364,"src":"8834:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"8833:16:72"},"scope":29980,"src":"8711:554:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29784,"nodeType":"Block","src":"9355:267:72","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":29777,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"9470:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9486:30:72","memberName":"DECIMAL_SCALING_FACTORS_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29126,"src":"9470:46:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29779,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"9538:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9554:29:72","memberName":"TOKEN_DECIMAL_DIFFS_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29134,"src":"9538:45:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29774,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29765,"src":"9430:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29772,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"9408:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9423:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"9408:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9408:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9438:10:72","memberName":"decodeUint","nodeType":"MemberAccess","referencedDeclaration":7321,"src":"9408:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (uint256)"}},"id":29781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9408:193:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":29771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9384:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":29770,"name":"uint40","nodeType":"ElementaryTypeName","src":"9384:6:72","typeDescriptions":{}}},"id":29782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9384:231:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":29769,"id":29783,"nodeType":"Return","src":"9365:250:72"}]},"id":29785,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenDecimalDiffs","nameLocation":"9280:20:72","nodeType":"FunctionDefinition","parameters":{"id":29766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29765,"mutability":"mutable","name":"config","nameLocation":"9316:6:72","nodeType":"VariableDeclaration","scope":29785,"src":"9301:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29764,"nodeType":"UserDefinedTypeName","pathNode":{"id":29763,"name":"PoolConfigBits","nameLocations":["9301:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"9301:14:72"},"referencedDeclaration":4364,"src":"9301:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"9300:23:72"},"returnParameters":{"id":29769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29768,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29785,"src":"9347:6:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":29767,"name":"uint40","nodeType":"ElementaryTypeName","src":"9347:6:72","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"9346:8:72"},"scope":29980,"src":"9271:351:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29853,"nodeType":"Block","src":"9767:667:72","statements":[{"assignments":[29800],"declarations":[{"constant":false,"id":29800,"mutability":"mutable","name":"scalingFactors","nameLocation":"9794:14:72","nodeType":"VariableDeclaration","scope":29853,"src":"9777:31:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":29798,"name":"uint256","nodeType":"ElementaryTypeName","src":"9777:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29799,"nodeType":"ArrayTypeName","src":"9777:9:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":29806,"initialValue":{"arguments":[{"id":29804,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29790,"src":"9825:9:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":29803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9811:13:72","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":29801,"name":"uint256","nodeType":"ElementaryTypeName","src":"9815:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29802,"nodeType":"ArrayTypeName","src":"9815:9:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":29805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9811:24:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9777:58:72"},{"assignments":[29808],"declarations":[{"constant":false,"id":29808,"mutability":"mutable","name":"tokenDecimalDiffs","nameLocation":"9854:17:72","nodeType":"VariableDeclaration","scope":29853,"src":"9846:25:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":29807,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9846:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":29818,"initialValue":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":29813,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29788,"src":"9890:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":29814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9897:20:72","memberName":"getTokenDecimalDiffs","nodeType":"MemberAccess","referencedDeclaration":29785,"src":"9890:27:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint40_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint40)"}},"id":29815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9890:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"id":29812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9882:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":29811,"name":"uint256","nodeType":"ElementaryTypeName","src":"9882:7:72","typeDescriptions":{}}},"id":29816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9882:38:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":29810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9874:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":29809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9874:7:72","typeDescriptions":{}}},"id":29817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9874:47:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9846:75:72"},{"body":{"id":29849,"nodeType":"Block","src":"9972:424:72","statements":[{"assignments":[29830],"declarations":[{"constant":false,"id":29830,"mutability":"mutable","name":"decimalDiff","nameLocation":"9994:11:72","nodeType":"VariableDeclaration","scope":29849,"src":"9986:19:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29829,"name":"uint256","nodeType":"ElementaryTypeName","src":"9986:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29840,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29833,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29820,"src":"10054:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":29834,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"10058:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10074:22:72","memberName":"DECIMAL_DIFF_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29137,"src":"10058:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10054:42:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29837,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"10114:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10130:22:72","memberName":"DECIMAL_DIFF_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29137,"src":"10114:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":29831,"name":"tokenDecimalDiffs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29808,"src":"10008:17:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10026:10:72","memberName":"decodeUint","nodeType":"MemberAccess","referencedDeclaration":7321,"src":"10008:28:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (uint256)"}},"id":29839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10008:158:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9986:180:72"},{"expression":{"id":29847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":29841,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29800,"src":"10348:14:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":29843,"indexExpression":{"id":29842,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29820,"src":"10363:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10348:17:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":29844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10368:2:72","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":29845,"name":"decimalDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29830,"src":"10374:11:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10368:17:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10348:37:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29848,"nodeType":"ExpressionStatement","src":"10348:37:72"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29823,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29820,"src":"9952:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":29824,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29790,"src":"9956:9:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9952:13:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29850,"initializationExpression":{"assignments":[29820],"declarations":[{"constant":false,"id":29820,"mutability":"mutable","name":"i","nameLocation":"9945:1:72","nodeType":"VariableDeclaration","scope":29850,"src":"9937:9:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29819,"name":"uint256","nodeType":"ElementaryTypeName","src":"9937:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29822,"initialValue":{"hexValue":"30","id":29821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9949:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9937:13:72"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":29827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9967:3:72","subExpression":{"id":29826,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29820,"src":"9969:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29828,"nodeType":"ExpressionStatement","src":"9967:3:72"},"nodeType":"ForStatement","src":"9932:464:72"},{"expression":{"id":29851,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29800,"src":"10413:14:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":29795,"id":29852,"nodeType":"Return","src":"10406:21:72"}]},"id":29854,"implemented":true,"kind":"function","modifiers":[],"name":"getDecimalScalingFactors","nameLocation":"9637:24:72","nodeType":"FunctionDefinition","parameters":{"id":29791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29788,"mutability":"mutable","name":"config","nameLocation":"9686:6:72","nodeType":"VariableDeclaration","scope":29854,"src":"9671:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29787,"nodeType":"UserDefinedTypeName","pathNode":{"id":29786,"name":"PoolConfigBits","nameLocations":["9671:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"9671:14:72"},"referencedDeclaration":4364,"src":"9671:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29790,"mutability":"mutable","name":"numTokens","nameLocation":"9710:9:72","nodeType":"VariableDeclaration","scope":29854,"src":"9702:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29789,"name":"uint256","nodeType":"ElementaryTypeName","src":"9702:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9661:64:72"},"returnParameters":{"id":29795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29854,"src":"9749:16:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":29792,"name":"uint256","nodeType":"ElementaryTypeName","src":"9749:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29793,"nodeType":"ArrayTypeName","src":"9749:9:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9748:18:72"},"scope":29980,"src":"9628:806:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29880,"nodeType":"Block","src":"10546:307:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29872,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29859,"src":"10674:5:72","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},{"expression":{"id":29873,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"10701:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10717:30:72","memberName":"DECIMAL_SCALING_FACTORS_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29126,"src":"10701:46:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29875,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"10769:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10785:29:72","memberName":"TOKEN_DECIMAL_DIFFS_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29134,"src":"10769:45:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29869,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29857,"src":"10634:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29867,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"10612:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10627:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"10612:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10612:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10642:10:72","memberName":"insertUint","nodeType":"MemberAccess","referencedDeclaration":7149,"src":"10612:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256,uint256) pure returns (bytes32)"}},"id":29877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10612:220:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29865,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"10575:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10590:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"10575:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10575:271:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29864,"id":29879,"nodeType":"Return","src":"10556:290:72"}]},"id":29881,"implemented":true,"kind":"function","modifiers":[],"name":"setTokenDecimalDiffs","nameLocation":"10449:20:72","nodeType":"FunctionDefinition","parameters":{"id":29860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29857,"mutability":"mutable","name":"config","nameLocation":"10485:6:72","nodeType":"VariableDeclaration","scope":29881,"src":"10470:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29856,"nodeType":"UserDefinedTypeName","pathNode":{"id":29855,"name":"PoolConfigBits","nameLocations":["10470:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"10470:14:72"},"referencedDeclaration":4364,"src":"10470:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29859,"mutability":"mutable","name":"value","nameLocation":"10500:5:72","nodeType":"VariableDeclaration","scope":29881,"src":"10493:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":29858,"name":"uint40","nodeType":"ElementaryTypeName","src":"10493:6:72","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"10469:37:72"},"returnParameters":{"id":29864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29863,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29881,"src":"10530:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29862,"nodeType":"UserDefinedTypeName","pathNode":{"id":29861,"name":"PoolConfigBits","nameLocations":["10530:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"10530:14:72"},"referencedDeclaration":4364,"src":"10530:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"10529:16:72"},"scope":29980,"src":"10440:413:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29903,"nodeType":"Block","src":"10944:255:72","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":29896,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"11059:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11075:28:72","memberName":"PAUSE_WINDOW_END_TIME_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29131,"src":"11059:44:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29898,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"11125:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11141:19:72","memberName":"TIMESTAMP_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29140,"src":"11125:35:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29893,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29884,"src":"11019:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29891,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"10997:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11012:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"10997:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10997:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11027:10:72","memberName":"decodeUint","nodeType":"MemberAccess","referencedDeclaration":7321,"src":"10997:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (uint256)"}},"id":29900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10997:181:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":29890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10973:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":29889,"name":"uint32","nodeType":"ElementaryTypeName","src":"10973:6:72","typeDescriptions":{}}},"id":29901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10973:219:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":29888,"id":29902,"nodeType":"Return","src":"10954:238:72"}]},"id":29904,"implemented":true,"kind":"function","modifiers":[],"name":"getPauseWindowEndTime","nameLocation":"10868:21:72","nodeType":"FunctionDefinition","parameters":{"id":29885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29884,"mutability":"mutable","name":"config","nameLocation":"10905:6:72","nodeType":"VariableDeclaration","scope":29904,"src":"10890:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29883,"nodeType":"UserDefinedTypeName","pathNode":{"id":29882,"name":"PoolConfigBits","nameLocations":["10890:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"10890:14:72"},"referencedDeclaration":4364,"src":"10890:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"10889:23:72"},"returnParameters":{"id":29888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29904,"src":"10936:6:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":29886,"name":"uint32","nodeType":"ElementaryTypeName","src":"10936:6:72","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"10935:8:72"},"scope":29980,"src":"10859:340:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29930,"nodeType":"Block","src":"11312:295:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":29922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29909,"src":"11440:5:72","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":29923,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"11467:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11483:28:72","memberName":"PAUSE_WINDOW_END_TIME_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29131,"src":"11467:44:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29925,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"11533:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11549:19:72","memberName":"TIMESTAMP_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29140,"src":"11533:35:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":29919,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29907,"src":"11400:6:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":29917,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"11378:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11393:6:72","memberName":"unwrap","nodeType":"MemberAccess","src":"11378:21:72","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":29920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11378:29:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11408:10:72","memberName":"insertUint","nodeType":"MemberAccess","referencedDeclaration":7149,"src":"11378:40:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256,uint256) pure returns (bytes32)"}},"id":29927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11378:208:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":29915,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"11341:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":29916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11356:4:72","memberName":"wrap","nodeType":"MemberAccess","src":"11341:19:72","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":29928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11341:259:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":29914,"id":29929,"nodeType":"Return","src":"11322:278:72"}]},"id":29931,"implemented":true,"kind":"function","modifiers":[],"name":"setPauseWindowEndTime","nameLocation":"11214:21:72","nodeType":"FunctionDefinition","parameters":{"id":29910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29907,"mutability":"mutable","name":"config","nameLocation":"11251:6:72","nodeType":"VariableDeclaration","scope":29931,"src":"11236:21:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29906,"nodeType":"UserDefinedTypeName","pathNode":{"id":29905,"name":"PoolConfigBits","nameLocations":["11236:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"11236:14:72"},"referencedDeclaration":4364,"src":"11236:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":29909,"mutability":"mutable","name":"value","nameLocation":"11266:5:72","nodeType":"VariableDeclaration","scope":29931,"src":"11259:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":29908,"name":"uint32","nodeType":"ElementaryTypeName","src":"11259:6:72","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11235:37:72"},"returnParameters":{"id":29914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29931,"src":"11296:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":29912,"nodeType":"UserDefinedTypeName","pathNode":{"id":29911,"name":"PoolConfigBits","nameLocations":["11296:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"11296:14:72"},"referencedDeclaration":4364,"src":"11296:14:72","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"11295:16:72"},"scope":29980,"src":"11205:402:72","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":29978,"nodeType":"Block","src":"11815:352:72","statements":[{"assignments":[29940],"declarations":[{"constant":false,"id":29940,"mutability":"mutable","name":"value","nameLocation":"11833:5:72","nodeType":"VariableDeclaration","scope":29978,"src":"11825:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":29939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11825:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":29941,"nodeType":"VariableDeclarationStatement","src":"11825:13:72"},{"body":{"id":29968,"nodeType":"Block","src":"11904:217:72","statements":[{"expression":{"id":29966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":29953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29940,"src":"11918:5:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":29956,"name":"tokenDecimalDiffs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29934,"src":"11960:17:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":29958,"indexExpression":{"id":29957,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29943,"src":"11978:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11960:20:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29959,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29943,"src":"11998:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":29960,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"12002:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12018:22:72","memberName":"DECIMAL_DIFF_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29137,"src":"12002:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:42:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":29963,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"12058:15:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":29964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12074:22:72","memberName":"DECIMAL_DIFF_BITLENGTH","nodeType":"MemberAccess","referencedDeclaration":29137,"src":"12058:38:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":29954,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29940,"src":"11926:5:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11932:10:72","memberName":"insertUint","nodeType":"MemberAccess","referencedDeclaration":7149,"src":"11926:16:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256,uint256) pure returns (bytes32)"}},"id":29965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11926:184:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11918:192:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":29967,"nodeType":"ExpressionStatement","src":"11918:192:72"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":29949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":29946,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29943,"src":"11869:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":29947,"name":"tokenDecimalDiffs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29934,"src":"11873:17:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":29948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11891:6:72","memberName":"length","nodeType":"MemberAccess","src":"11873:24:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11869:28:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":29969,"initializationExpression":{"assignments":[29943],"declarations":[{"constant":false,"id":29943,"mutability":"mutable","name":"i","nameLocation":"11862:1:72","nodeType":"VariableDeclaration","scope":29969,"src":"11854:9:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29942,"name":"uint256","nodeType":"ElementaryTypeName","src":"11854:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":29945,"initialValue":{"hexValue":"30","id":29944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11866:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11854:13:72"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":29951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11899:3:72","subExpression":{"id":29950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29943,"src":"11901:1:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":29952,"nodeType":"ExpressionStatement","src":"11899:3:72"},"nodeType":"ForStatement","src":"11849:272:72"},{"expression":{"arguments":[{"arguments":[{"id":29974,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29940,"src":"12153:5:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":29973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12145:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":29972,"name":"uint256","nodeType":"ElementaryTypeName","src":"12145:7:72","typeDescriptions":{}}},"id":29975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12145:14:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":29971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12138:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":29970,"name":"uint40","nodeType":"ElementaryTypeName","src":"12138:6:72","typeDescriptions":{}}},"id":29976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12138:22:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":29938,"id":29977,"nodeType":"Return","src":"12131:29:72"}]},"id":29979,"implemented":true,"kind":"function","modifiers":[],"name":"toTokenDecimalDiffs","nameLocation":"11730:19:72","nodeType":"FunctionDefinition","parameters":{"id":29935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29934,"mutability":"mutable","name":"tokenDecimalDiffs","nameLocation":"11765:17:72","nodeType":"VariableDeclaration","scope":29979,"src":"11750:32:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":29932,"name":"uint8","nodeType":"ElementaryTypeName","src":"11750:5:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":29933,"nodeType":"ArrayTypeName","src":"11750:7:72","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"11749:34:72"},"returnParameters":{"id":29938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":29979,"src":"11807:6:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":29936,"name":"uint40","nodeType":"ElementaryTypeName","src":"11807:6:72","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"11806:8:72"},"scope":29980,"src":"11721:446:72","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":29981,"src":"1279:10890:72","usedErrors":[],"usedEvents":[]}],"src":"46:12124:72"},"id":72},"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol","exportedSymbols":{"FixedPoint":[7834],"IERC20":[39274],"IVaultErrors":[3550],"PackedTokenBalance":[5970],"PoolConfigBits":[4364],"PoolConfigLib":[29980],"PoolData":[4511],"PoolDataLib":[30570],"Rounding":[4514],"ScalingHelpers":[6474],"TokenInfo":[4486],"TokenType":[4463]},"id":30571,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":29982,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:73"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":29984,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30571,"sourceUnit":39275,"src":"72:72:73","symbolAliases":[{"foreign":{"id":29983,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":29989,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30571,"sourceUnit":4654,"src":"146:119:73","symbolAliases":[{"foreign":{"id":29985,"name":"PoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4511,"src":"155:8:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":29986,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"165:9:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":29987,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"176:9:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":29988,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"187:8:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":29991,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30571,"sourceUnit":3551,"src":"266:93:73","symbolAliases":[{"foreign":{"id":29990,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"275:12:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":29993,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30571,"sourceUnit":7835,"src":"361:92:73","symbolAliases":[{"foreign":{"id":29992,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"370:10:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","id":29995,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30571,"sourceUnit":6475,"src":"454:103:73","symbolAliases":[{"foreign":{"id":29994,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"463:14:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","id":29997,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30571,"sourceUnit":5971,"src":"558:111:73","symbolAliases":[{"foreign":{"id":29996,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"567:18:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"./PoolConfigLib.sol","id":30000,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30571,"sourceUnit":29981,"src":"671:68:73","symbolAliases":[{"foreign":{"id":29998,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"680:14:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":29999,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"696:13:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"PoolDataLib","contractDependencies":[],"contractKind":"library","documentation":{"id":30001,"nodeType":"StructuredDocumentation","src":"741:579:73","text":" @notice Helper functions to read/write a `PoolData` struct.\n @dev Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool).\n This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e.,\n offsets for each data field) is specified in `PoolConfigConst`.\n The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token\n configuration, scaling factors, and dynamic information such as current balances and rates."},"fullyImplemented":true,"id":30570,"linearizedBaseContracts":[30570],"name":"PoolDataLib","nameLocation":"1329:11:73","nodeType":"ContractDefinition","nodes":[{"global":false,"id":30004,"libraryName":{"id":30002,"name":"PackedTokenBalance","nameLocations":["1353:18:73"],"nodeType":"IdentifierPath","referencedDeclaration":5970,"src":"1353:18:73"},"nodeType":"UsingForDirective","src":"1347:37:73","typeName":{"id":30003,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1376:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":30006,"libraryName":{"id":30005,"name":"FixedPoint","nameLocations":["1395:10:73"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"1395:10:73"},"nodeType":"UsingForDirective","src":"1389:23:73"},{"global":false,"id":30008,"libraryName":{"id":30007,"name":"ScalingHelpers","nameLocations":["1423:14:73"],"nodeType":"IdentifierPath","referencedDeclaration":6474,"src":"1423:14:73"},"nodeType":"UsingForDirective","src":"1417:27:73"},{"global":false,"id":30012,"libraryName":{"id":30009,"name":"PoolConfigLib","nameLocations":["1455:13:73"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"1455:13:73"},"nodeType":"UsingForDirective","src":"1449:39:73","typeName":{"id":30011,"nodeType":"UserDefinedTypeName","pathNode":{"id":30010,"name":"PoolConfigBits","nameLocations":["1473:14:73"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1473:14:73"},"referencedDeclaration":4364,"src":"1473:14:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"body":{"id":30242,"nodeType":"Block","src":"1843:2810:73","statements":[{"assignments":[30039],"declarations":[{"constant":false,"id":30039,"mutability":"mutable","name":"numTokens","nameLocation":"1861:9:73","nodeType":"VariableDeclaration","scope":30242,"src":"1853:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30038,"name":"uint256","nodeType":"ElementaryTypeName","src":"1853:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30042,"initialValue":{"expression":{"id":30040,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30032,"src":"1873:6:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[] storage pointer"}},"id":30041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1880:6:73","memberName":"length","nodeType":"MemberAccess","src":"1873:13:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1853:33:73"},{"expression":{"id":30047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":30043,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"1897:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1906:14:73","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"1897:23:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":30046,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30022,"src":"1923:14:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"1897:40:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":30048,"nodeType":"ExpressionStatement","src":"1897:40:73"},{"expression":{"id":30053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":30049,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"1947:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1956:6:73","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"1947:15:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":30052,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30032,"src":"1965:6:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[] storage pointer"}},"src":"1947:24:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":30054,"nodeType":"ExpressionStatement","src":"1947:24:73"},{"expression":{"id":30064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":30055,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"1981:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1990:9:73","memberName":"tokenInfo","nodeType":"MemberAccess","referencedDeclaration":4498,"src":"1981:18:73","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":30062,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30039,"src":"2018:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2002:15:73","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenInfo memory[] memory)"},"typeName":{"baseType":{"id":30059,"nodeType":"UserDefinedTypeName","pathNode":{"id":30058,"name":"TokenInfo","nameLocations":["2006:9:73"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"2006:9:73"},"referencedDeclaration":4486,"src":"2006:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":30060,"nodeType":"ArrayTypeName","src":"2006:11:73","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}}},"id":30063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2002:26:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"src":"1981:47:73","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"id":30065,"nodeType":"ExpressionStatement","src":"1981:47:73"},{"expression":{"id":30074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":30066,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2038:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2047:11:73","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"2038:20:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":30072,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30039,"src":"2075:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2061:13:73","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":30069,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30070,"nodeType":"ArrayTypeName","src":"2065:9:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":30073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2061:24:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"2038:47:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30075,"nodeType":"ExpressionStatement","src":"2038:47:73"},{"expression":{"id":30084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":30076,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2095:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2104:20:73","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"2095:29:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":30082,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30039,"src":"2141:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2127:13:73","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":30079,"name":"uint256","nodeType":"ElementaryTypeName","src":"2131:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30080,"nodeType":"ArrayTypeName","src":"2131:9:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":30083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2127:24:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"2095:56:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30085,"nodeType":"ExpressionStatement","src":"2095:56:73"},{"expression":{"id":30095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":30086,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2161:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2170:21:73","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"2161:30:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":30091,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2233:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2242:14:73","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"2233:23:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},{"id":30093,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30039,"src":"2258:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":30089,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"2194:13:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigLib_$29980_$","typeString":"type(library PoolConfigLib)"}},"id":30090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2208:24:73","memberName":"getDecimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":29854,"src":"2194:38:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (PoolConfigBits,uint256) pure returns (uint256[] memory)"}},"id":30094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2194:74:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"2161:107:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30096,"nodeType":"ExpressionStatement","src":"2161:107:73"},{"expression":{"id":30105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":30097,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2278:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2287:10:73","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"2278:19:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":30103,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30039,"src":"2314:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2300:13:73","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":30100,"name":"uint256","nodeType":"ElementaryTypeName","src":"2304:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30101,"nodeType":"ArrayTypeName","src":"2304:9:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":30104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:24:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"2278:46:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30106,"nodeType":"ExpressionStatement","src":"2278:46:73"},{"assignments":[30108],"declarations":[{"constant":false,"id":30108,"mutability":"mutable","name":"poolSubjectToYieldFees","nameLocation":"2340:22:73","nodeType":"VariableDeclaration","scope":30242,"src":"2335:27:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30107,"name":"bool","nodeType":"ElementaryTypeName","src":"2335:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":30127,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":30109,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2365:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30110,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2374:14:73","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"2365:23:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":30111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2389:17:73","memberName":"isPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":29219,"src":"2365:41:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":30112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2365:43:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":30113,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2424:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30114,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2433:14:73","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"2424:23:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":30115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2448:30:73","memberName":"getAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29722,"src":"2424:54:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":30116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2424:56:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":30117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2483:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2424:60:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2365:119:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":30120,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2500:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2509:14:73","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"2500:23:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":30122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2524:20:73","memberName":"isPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":29305,"src":"2500:44:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (bool)"}},"id":30123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:46:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":30124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2550:5:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2500:55:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2365:190:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"2335:220:73"},{"body":{"id":30240,"nodeType":"Block","src":"2606:2041:73","statements":[{"assignments":[30140],"declarations":[{"constant":false,"id":30140,"mutability":"mutable","name":"tokenInfo","nameLocation":"2637:9:73","nodeType":"VariableDeclaration","scope":30240,"src":"2620:26:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo"},"typeName":{"id":30139,"nodeType":"UserDefinedTypeName","pathNode":{"id":30138,"name":"TokenInfo","nameLocations":["2620:9:73"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"2620:9:73"},"referencedDeclaration":4486,"src":"2620:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"visibility":"internal"}],"id":30147,"initialValue":{"baseExpression":{"id":30141,"name":"poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30028,"src":"2649:13:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},"id":30146,"indexExpression":{"baseExpression":{"expression":{"id":30142,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2663:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2672:6:73","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"2663:15:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":30145,"indexExpression":{"id":30144,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"2679:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2663:18:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2649:33:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2620:62:73"},{"assignments":[30149],"declarations":[{"constant":false,"id":30149,"mutability":"mutable","name":"packedBalance","nameLocation":"2704:13:73","nodeType":"VariableDeclaration","scope":30240,"src":"2696:21:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30148,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2696:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":30153,"initialValue":{"baseExpression":{"id":30150,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30019,"src":"2720:17:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":30152,"indexExpression":{"id":30151,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"2738:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2720:20:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2696:44:73"},{"expression":{"id":30160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":30154,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2755:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2764:9:73","memberName":"tokenInfo","nodeType":"MemberAccess","referencedDeclaration":4498,"src":"2755:18:73","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"id":30158,"indexExpression":{"id":30156,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"2774:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2755:21:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":30159,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30140,"src":"2779:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"src":"2755:33:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"id":30161,"nodeType":"ExpressionStatement","src":"2755:33:73"},{"expression":{"id":30170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":30162,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2802:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2811:10:73","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"2802:19:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30166,"indexExpression":{"id":30164,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"2822:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2802:22:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":30168,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30140,"src":"2840:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}],"id":30167,"name":"getTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30455,"src":"2827:12:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_TokenInfo_$4486_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct TokenInfo memory) view returns (uint256)"}},"id":30169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2802:48:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30171,"nodeType":"ExpressionStatement","src":"2802:48:73"},{"expression":{"arguments":[{"id":30173,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"2888:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":30174,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"2898:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":30175,"name":"packedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30149,"src":"2901:13:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2915:13:73","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"2901:27:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":30177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:29:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30178,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30035,"src":"2932:17:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":30172,"name":"updateRawAndLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30517,"src":"2864:23:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$4514_$returns$__$","typeString":"function (struct PoolData memory,uint256,uint256,enum Rounding) pure"}},"id":30179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2864:86:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30180,"nodeType":"ExpressionStatement","src":"2864:86:73"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30181,"name":"poolSubjectToYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30108,"src":"3063:22:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":30182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3089:5:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3063:31:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30186,"nodeType":"IfStatement","src":"3059:78:73","trueBody":{"id":30185,"nodeType":"Block","src":"3096:41:73","statements":[{"id":30184,"nodeType":"Continue","src":"3114:8:73"}]}},{"assignments":[30188],"declarations":[{"constant":false,"id":30188,"mutability":"mutable","name":"tokenSubjectToYieldFees","nameLocation":"3774:23:73","nodeType":"VariableDeclaration","scope":30240,"src":"3769:28:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30187,"name":"bool","nodeType":"ElementaryTypeName","src":"3769:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":30197,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":30196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":30189,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30140,"src":"3800:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"id":30190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3810:13:73","memberName":"paysYieldFees","nodeType":"MemberAccess","referencedDeclaration":4485,"src":"3800:23:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"id":30195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":30191,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30140,"src":"3827:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"id":30192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3837:9:73","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4480,"src":"3827:19:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":30193,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"3850:9:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":30194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3860:9:73","memberName":"WITH_RATE","nodeType":"MemberAccess","referencedDeclaration":4462,"src":"3850:19:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"3827:42:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3800:69:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3769:100:73"},{"condition":{"id":30198,"name":"tokenSubjectToYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30188,"src":"3981:23:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30239,"nodeType":"IfStatement","src":"3977:660:73","trueBody":{"id":30238,"nodeType":"Block","src":"4006:631:73","statements":[{"assignments":[30200],"declarations":[{"constant":false,"id":30200,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"4032:27:73","nodeType":"VariableDeclaration","scope":30238,"src":"4024:35:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30199,"name":"uint256","nodeType":"ElementaryTypeName","src":"4024:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30205,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":30201,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"4062:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4071:14:73","memberName":"poolConfigBits","nodeType":"MemberAccess","referencedDeclaration":4490,"src":"4062:23:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":30203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4086:30:73","memberName":"getAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29722,"src":"4062:54:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits) pure returns (uint256)"}},"id":30204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4062:56:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4024:94:73"},{"assignments":[30207],"declarations":[{"constant":false,"id":30207,"mutability":"mutable","name":"balanceRaw","nameLocation":"4144:10:73","nodeType":"VariableDeclaration","scope":30238,"src":"4136:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30206,"name":"uint256","nodeType":"ElementaryTypeName","src":"4136:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30212,"initialValue":{"baseExpression":{"expression":{"id":30208,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"4157:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4166:11:73","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"4157:20:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30211,"indexExpression":{"id":30210,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"4178:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4157:23:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4136:44:73"},{"assignments":[30214],"declarations":[{"constant":false,"id":30214,"mutability":"mutable","name":"aggregateYieldFeeAmountRaw","nameLocation":"4207:26:73","nodeType":"VariableDeclaration","scope":30238,"src":"4199:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30213,"name":"uint256","nodeType":"ElementaryTypeName","src":"4199:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30223,"initialValue":{"arguments":[{"id":30216,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"4278:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":30217,"name":"packedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30149,"src":"4308:13:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4322:17:73","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"4308:31:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":30219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4308:33:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30220,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"4363:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30221,"name":"aggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30200,"src":"4386:27:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30215,"name":"_computeYieldFeesDue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30569,"src":"4236:20:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct PoolData memory,uint256,uint256,uint256) pure returns (uint256)"}},"id":30222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4236:195:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4199:232:73"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30224,"name":"aggregateYieldFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30214,"src":"4454:26:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":30225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4483:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4454:30:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30237,"nodeType":"IfStatement","src":"4450:173:73","trueBody":{"id":30236,"nodeType":"Block","src":"4486:137:73","statements":[{"expression":{"arguments":[{"id":30228,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30015,"src":"4532:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":30229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"4542:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30230,"name":"balanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30207,"src":"4545:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":30231,"name":"aggregateYieldFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30214,"src":"4558:26:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4545:39:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30233,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30035,"src":"4586:17:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":30227,"name":"updateRawAndLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30517,"src":"4508:23:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$4514_$returns$__$","typeString":"function (struct PoolData memory,uint256,uint256,enum Rounding) pure"}},"id":30234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4508:96:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30235,"nodeType":"ExpressionStatement","src":"4508:96:73"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30132,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"2586:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":30133,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30039,"src":"2590:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2586:13:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30241,"initializationExpression":{"assignments":[30129],"declarations":[{"constant":false,"id":30129,"mutability":"mutable","name":"i","nameLocation":"2579:1:73","nodeType":"VariableDeclaration","scope":30241,"src":"2571:9:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2571:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30131,"initialValue":{"hexValue":"30","id":30130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2583:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2571:13:73"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":30136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2601:3:73","subExpression":{"id":30135,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30129,"src":"2603:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30137,"nodeType":"ExpressionStatement","src":"2601:3:73"},"nodeType":"ForStatement","src":"2566:2081:73"}]},"id":30243,"implemented":true,"kind":"function","modifiers":[],"name":"load","nameLocation":"1503:4:73","nodeType":"FunctionDefinition","parameters":{"id":30036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30015,"mutability":"mutable","name":"poolData","nameLocation":"1533:8:73","nodeType":"VariableDeclaration","scope":30243,"src":"1517:24:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":30014,"nodeType":"UserDefinedTypeName","pathNode":{"id":30013,"name":"PoolData","nameLocations":["1517:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"1517:8:73"},"referencedDeclaration":4511,"src":"1517:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":30019,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"1617:17:73","nodeType":"VariableDeclaration","scope":30243,"src":"1551:83:73","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":30018,"keyName":"tokenIndex","keyNameLocation":"1567:10:73","keyType":{"id":30016,"name":"uint256","nodeType":"ElementaryTypeName","src":"1559:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1551:57:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"1589:18:73","valueType":{"id":30017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1581:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":30022,"mutability":"mutable","name":"poolConfigBits","nameLocation":"1659:14:73","nodeType":"VariableDeclaration","scope":30243,"src":"1644:29:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":30021,"nodeType":"UserDefinedTypeName","pathNode":{"id":30020,"name":"PoolConfigBits","nameLocations":["1644:14:73"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"1644:14:73"},"referencedDeclaration":4364,"src":"1644:14:73","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":30028,"mutability":"mutable","name":"poolTokenInfo","nameLocation":"1740:13:73","nodeType":"VariableDeclaration","scope":30243,"src":"1683:70:73","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo)"},"typeName":{"id":30027,"keyName":"poolToken","keyNameLocation":"1698:9:73","keyType":{"id":30024,"nodeType":"UserDefinedTypeName","pathNode":{"id":30023,"name":"IERC20","nameLocations":["1691:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1691:6:73"},"referencedDeclaration":39274,"src":"1691:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"1683:48:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo)"},"valueName":"tokenInfo","valueNameLocation":"1721:9:73","valueType":{"id":30026,"nodeType":"UserDefinedTypeName","pathNode":{"id":30025,"name":"TokenInfo","nameLocations":["1711:9:73"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"1711:9:73"},"referencedDeclaration":4486,"src":"1711:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}}},"visibility":"internal"},{"constant":false,"id":30032,"mutability":"mutable","name":"tokens","nameLocation":"1780:6:73","nodeType":"VariableDeclaration","scope":30243,"src":"1763:23:73","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":30030,"nodeType":"UserDefinedTypeName","pathNode":{"id":30029,"name":"IERC20","nameLocations":["1763:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1763:6:73"},"referencedDeclaration":39274,"src":"1763:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":30031,"nodeType":"ArrayTypeName","src":"1763:8:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":30035,"mutability":"mutable","name":"roundingDirection","nameLocation":"1805:17:73","nodeType":"VariableDeclaration","scope":30243,"src":"1796:26:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":30034,"nodeType":"UserDefinedTypeName","pathNode":{"id":30033,"name":"Rounding","nameLocations":["1796:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"1796:8:73"},"referencedDeclaration":4514,"src":"1796:8:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"1507:321:73"},"returnParameters":{"id":30037,"nodeType":"ParameterList","parameters":[],"src":"1843:0:73"},"scope":30570,"src":"1494:3159:73","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":30345,"nodeType":"Block","src":"4933:1225:73","statements":[{"assignments":[30259],"declarations":[{"constant":false,"id":30259,"mutability":"mutable","name":"numTokens","nameLocation":"4951:9:73","nodeType":"VariableDeclaration","scope":30345,"src":"4943:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30258,"name":"uint256","nodeType":"ElementaryTypeName","src":"4943:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30263,"initialValue":{"expression":{"expression":{"id":30260,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30246,"src":"4963:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4972:11:73","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"4963:20:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4984:6:73","memberName":"length","nodeType":"MemberAccess","src":"4963:27:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4943:47:73"},{"body":{"id":30343,"nodeType":"Block","src":"5041:1111:73","statements":[{"assignments":[30276],"declarations":[{"constant":false,"id":30276,"mutability":"mutable","name":"token","nameLocation":"5062:5:73","nodeType":"VariableDeclaration","scope":30343,"src":"5055:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":30275,"nodeType":"UserDefinedTypeName","pathNode":{"id":30274,"name":"IERC20","nameLocations":["5055:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5055:6:73"},"referencedDeclaration":39274,"src":"5055:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":30281,"initialValue":{"baseExpression":{"expression":{"id":30277,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30246,"src":"5070:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5079:6:73","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"5070:15:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":30280,"indexExpression":{"id":30279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"5086:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5070:18:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"5055:33:73"},{"assignments":[30283],"declarations":[{"constant":false,"id":30283,"mutability":"mutable","name":"packedBalances","nameLocation":"5110:14:73","nodeType":"VariableDeclaration","scope":30343,"src":"5102:22:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30282,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5102:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":30287,"initialValue":{"baseExpression":{"id":30284,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30250,"src":"5127:17:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":30286,"indexExpression":{"id":30285,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"5145:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5127:20:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5102:45:73"},{"assignments":[30289],"declarations":[{"constant":false,"id":30289,"mutability":"mutable","name":"storedBalanceRaw","nameLocation":"5169:16:73","nodeType":"VariableDeclaration","scope":30343,"src":"5161:24:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30288,"name":"uint256","nodeType":"ElementaryTypeName","src":"5161:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30293,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":30290,"name":"packedBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30283,"src":"5188:14:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5203:13:73","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"5188:28:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":30292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5188:30:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5161:57:73"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30294,"name":"storedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30289,"src":"5404:16:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"baseExpression":{"expression":{"id":30295,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30246,"src":"5423:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5432:11:73","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"5423:20:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30298,"indexExpression":{"id":30297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"5444:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5423:23:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5404:42:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30326,"nodeType":"IfStatement","src":"5400:565:73","trueBody":{"id":30325,"nodeType":"Block","src":"5448:517:73","statements":[{"assignments":[30301],"declarations":[{"constant":false,"id":30301,"mutability":"mutable","name":"packedProtocolFeeAmounts","nameLocation":"5653:24:73","nodeType":"VariableDeclaration","scope":30325,"src":"5645:32:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30300,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5645:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":30305,"initialValue":{"baseExpression":{"id":30302,"name":"poolAggregateProtocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30255,"src":"5680:31:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":30304,"indexExpression":{"id":30303,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30276,"src":"5712:5:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5680:38:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5645:73:73"},{"expression":{"id":30323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":30306,"name":"poolAggregateProtocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30255,"src":"5736:31:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":30308,"indexExpression":{"id":30307,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30276,"src":"5768:5:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5736:38:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":30311,"name":"packedProtocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30301,"src":"5841:24:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5866:17:73","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"5841:42:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":30313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5841:44:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30314,"name":"storedBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30289,"src":"5889:16:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"expression":{"id":30315,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30246,"src":"5908:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5917:11:73","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"5908:20:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30318,"indexExpression":{"id":30317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"5929:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5908:23:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5889:42:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":30320,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5888:44:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5841:91:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":30309,"name":"packedProtocolFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30301,"src":"5777:24:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5802:17:73","memberName":"setBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5901,"src":"5777:42:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":30322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5777:173:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5736:214:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30324,"nodeType":"ExpressionStatement","src":"5736:214:73"}]}},{"expression":{"id":30341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":30327,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30250,"src":"5979:17:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":30329,"indexExpression":{"id":30328,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"5997:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5979:20:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":30332,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30246,"src":"6054:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6063:11:73","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"6054:20:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30335,"indexExpression":{"id":30334,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"6075:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6054:23:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":30336,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30246,"src":"6095:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6104:20:73","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"6095:29:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30339,"indexExpression":{"id":30338,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"6125:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6095:32:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":30330,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"6002:18:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":30331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:15:73","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"6002:34:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":30340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6002:139:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5979:162:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30342,"nodeType":"ExpressionStatement","src":"5979:162:73"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30268,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"5021:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":30269,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30259,"src":"5025:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5021:13:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30344,"initializationExpression":{"assignments":[30265],"declarations":[{"constant":false,"id":30265,"mutability":"mutable","name":"i","nameLocation":"5014:1:73","nodeType":"VariableDeclaration","scope":30344,"src":"5006:9:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30264,"name":"uint256","nodeType":"ElementaryTypeName","src":"5006:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30267,"initialValue":{"hexValue":"30","id":30266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5018:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5006:13:73"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":30272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5036:3:73","subExpression":{"id":30271,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30265,"src":"5038:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30273,"nodeType":"ExpressionStatement","src":"5036:3:73"},"nodeType":"ForStatement","src":"5001:1151:73"}]},"id":30346,"implemented":true,"kind":"function","modifiers":[],"name":"syncPoolBalancesAndFees","nameLocation":"4668:23:73","nodeType":"FunctionDefinition","parameters":{"id":30256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30246,"mutability":"mutable","name":"poolData","nameLocation":"4717:8:73","nodeType":"VariableDeclaration","scope":30346,"src":"4701:24:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":30245,"nodeType":"UserDefinedTypeName","pathNode":{"id":30244,"name":"PoolData","nameLocations":["4701:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"4701:8:73"},"referencedDeclaration":4511,"src":"4701:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":30250,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"4801:17:73","nodeType":"VariableDeclaration","scope":30346,"src":"4735:83:73","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":30249,"keyName":"tokenIndex","keyNameLocation":"4751:10:73","keyType":{"id":30247,"name":"uint256","nodeType":"ElementaryTypeName","src":"4743:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"4735:57:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"4773:18:73","valueType":{"id":30248,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4765:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":30255,"mutability":"mutable","name":"poolAggregateProtocolFeeAmounts","nameLocation":"4886:31:73","nodeType":"VariableDeclaration","scope":30346,"src":"4828:89:73","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"},"typeName":{"id":30254,"keyName":"token","keyNameLocation":"4843:5:73","keyType":{"id":30252,"nodeType":"UserDefinedTypeName","pathNode":{"id":30251,"name":"IERC20","nameLocations":["4836:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4836:6:73"},"referencedDeclaration":39274,"src":"4836:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Mapping","src":"4828:49:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"},"valueName":"packedFeeAmounts","valueNameLocation":"4860:16:73","valueType":{"id":30253,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4852:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"src":"4691:232:73"},"returnParameters":{"id":30257,"nodeType":"ParameterList","parameters":[],"src":"4933:0:73"},"scope":30570,"src":"4659:1499:73","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30409,"nodeType":"Block","src":"6789:641:73","statements":[{"assignments":[30361],"declarations":[{"constant":false,"id":30361,"mutability":"mutable","name":"numTokens","nameLocation":"6807:9:73","nodeType":"VariableDeclaration","scope":30409,"src":"6799:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30360,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30365,"initialValue":{"expression":{"expression":{"id":30362,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30350,"src":"6819:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6828:6:73","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":4494,"src":"6819:15:73","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":30364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6835:6:73","memberName":"length","nodeType":"MemberAccess","src":"6819:22:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6799:42:73"},{"assignments":[30367],"declarations":[{"constant":false,"id":30367,"mutability":"mutable","name":"packedBalance","nameLocation":"7004:13:73","nodeType":"VariableDeclaration","scope":30409,"src":"6996:21:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":30366,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6996:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":30368,"nodeType":"VariableDeclarationStatement","src":"6996:21:73"},{"body":{"id":30407,"nodeType":"Block","src":"7068:356:73","statements":[{"expression":{"id":30390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":30379,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30350,"src":"7082:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7091:10:73","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"7082:19:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30383,"indexExpression":{"id":30381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30370,"src":"7102:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7082:22:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":30385,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30350,"src":"7120:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7129:9:73","memberName":"tokenInfo","nodeType":"MemberAccess","referencedDeclaration":4498,"src":"7120:18:73","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"id":30388,"indexExpression":{"id":30387,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30370,"src":"7139:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7120:21:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}],"id":30384,"name":"getTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30455,"src":"7107:12:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_TokenInfo_$4486_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct TokenInfo memory) view returns (uint256)"}},"id":30389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7107:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7082:60:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30391,"nodeType":"ExpressionStatement","src":"7082:60:73"},{"expression":{"id":30396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":30392,"name":"packedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30367,"src":"7157:13:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":30393,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30354,"src":"7173:17:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":30395,"indexExpression":{"id":30394,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30370,"src":"7191:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7173:20:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7157:36:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30397,"nodeType":"ExpressionStatement","src":"7157:36:73"},{"expression":{"arguments":[{"id":30399,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30350,"src":"7351:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":30400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30370,"src":"7361:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":30401,"name":"packedBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30367,"src":"7364:13:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7378:13:73","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"7364:27:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":30403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7364:29:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30404,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30357,"src":"7395:17:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":30398,"name":"updateRawAndLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30517,"src":"7327:23:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$4514_$returns$__$","typeString":"function (struct PoolData memory,uint256,uint256,enum Rounding) pure"}},"id":30405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7327:86:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":30406,"nodeType":"ExpressionStatement","src":"7327:86:73"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30373,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30370,"src":"7048:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":30374,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30361,"src":"7052:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7048:13:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30408,"initializationExpression":{"assignments":[30370],"declarations":[{"constant":false,"id":30370,"mutability":"mutable","name":"i","nameLocation":"7041:1:73","nodeType":"VariableDeclaration","scope":30408,"src":"7033:9:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30369,"name":"uint256","nodeType":"ElementaryTypeName","src":"7033:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30372,"initialValue":{"hexValue":"30","id":30371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7045:1:73","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7033:13:73"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":30377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7063:3:73","subExpression":{"id":30376,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30370,"src":"7065:1:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30378,"nodeType":"ExpressionStatement","src":"7063:3:73"},"nodeType":"ForStatement","src":"7028:396:73"}]},"documentation":{"id":30347,"nodeType":"StructuredDocumentation","src":"6164:405:73","text":" @dev This is typically called after a reentrant callback (e.g., a \"before\" liquidity operation callback),\n to refresh the poolData struct with any balances (or rates) that might have changed.\n Preconditions: tokenConfig, balancesRaw, and decimalScalingFactors must be current in `poolData`.\n Side effects: mutates tokenRates, balancesLiveScaled18 in `poolData`."},"id":30410,"implemented":true,"kind":"function","modifiers":[],"name":"reloadBalancesAndRates","nameLocation":"6583:22:73","nodeType":"FunctionDefinition","parameters":{"id":30358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30350,"mutability":"mutable","name":"poolData","nameLocation":"6631:8:73","nodeType":"VariableDeclaration","scope":30410,"src":"6615:24:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":30349,"nodeType":"UserDefinedTypeName","pathNode":{"id":30348,"name":"PoolData","nameLocations":["6615:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"6615:8:73"},"referencedDeclaration":4511,"src":"6615:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":30354,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"6715:17:73","nodeType":"VariableDeclaration","scope":30410,"src":"6649:83:73","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":30353,"keyName":"tokenIndex","keyNameLocation":"6665:10:73","keyType":{"id":30351,"name":"uint256","nodeType":"ElementaryTypeName","src":"6657:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"6649:57:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"6687:18:73","valueType":{"id":30352,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6679:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":30357,"mutability":"mutable","name":"roundingDirection","nameLocation":"6751:17:73","nodeType":"VariableDeclaration","scope":30410,"src":"6742:26:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":30356,"nodeType":"UserDefinedTypeName","pathNode":{"id":30355,"name":"Rounding","nameLocations":["6742:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"6742:8:73"},"referencedDeclaration":4514,"src":"6742:8:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"6605:169:73"},"returnParameters":{"id":30359,"nodeType":"ParameterList","parameters":[],"src":"6789:0:73"},"scope":30570,"src":"6574:856:73","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":30454,"nodeType":"Block","src":"7523:337:73","statements":[{"assignments":[30420],"declarations":[{"constant":false,"id":30420,"mutability":"mutable","name":"tokenType","nameLocation":"7543:9:73","nodeType":"VariableDeclaration","scope":30454,"src":"7533:19:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"typeName":{"id":30419,"nodeType":"UserDefinedTypeName","pathNode":{"id":30418,"name":"TokenType","nameLocations":["7533:9:73"],"nodeType":"IdentifierPath","referencedDeclaration":4463,"src":"7533:9:73"},"referencedDeclaration":4463,"src":"7533:9:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"visibility":"internal"}],"id":30423,"initialValue":{"expression":{"id":30421,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30413,"src":"7555:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"id":30422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7565:9:73","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4480,"src":"7555:19:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"VariableDeclarationStatement","src":"7533:41:73"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"id":30427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30424,"name":"tokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30420,"src":"7589:9:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":30425,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"7602:9:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":30426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7612:8:73","memberName":"STANDARD","nodeType":"MemberAccess","referencedDeclaration":4461,"src":"7602:18:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"7589:31:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},"id":30437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30434,"name":"tokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30420,"src":"7678:9:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":30435,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"7691:9:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":30436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7701:9:73","memberName":"WITH_RATE","nodeType":"MemberAccess","referencedDeclaration":4462,"src":"7691:19:73","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"7678:32:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":30451,"nodeType":"Block","src":"7782:72:73","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":30446,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"7803:12:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":30448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7816:25:73","memberName":"InvalidTokenConfiguration","nodeType":"MemberAccess","referencedDeclaration":3240,"src":"7803:38:73","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":30449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7803:40:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":30450,"nodeType":"RevertStatement","src":"7796:47:73"}]},"id":30452,"nodeType":"IfStatement","src":"7674:180:73","trueBody":{"id":30445,"nodeType":"Block","src":"7712:64:73","statements":[{"expression":{"id":30443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":30438,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30416,"src":"7726:4:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":30439,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30413,"src":"7733:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"id":30440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7743:12:73","memberName":"rateProvider","nodeType":"MemberAccess","referencedDeclaration":4483,"src":"7733:22:73","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":30441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7756:7:73","memberName":"getRate","nodeType":"MemberAccess","referencedDeclaration":149,"src":"7733:30:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":30442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7733:32:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7726:39:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30444,"nodeType":"ExpressionStatement","src":"7726:39:73"}]}},"id":30453,"nodeType":"IfStatement","src":"7585:269:73","trueBody":{"id":30433,"nodeType":"Block","src":"7622:46:73","statements":[{"expression":{"id":30431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":30428,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30416,"src":"7636:4:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":30429,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"7643:10:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":30430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7654:3:73","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"7643:14:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7636:21:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30432,"nodeType":"ExpressionStatement","src":"7636:21:73"}]}}]},"id":30455,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenRate","nameLocation":"7445:12:73","nodeType":"FunctionDefinition","parameters":{"id":30414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30413,"mutability":"mutable","name":"tokenInfo","nameLocation":"7475:9:73","nodeType":"VariableDeclaration","scope":30455,"src":"7458:26:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo"},"typeName":{"id":30412,"nodeType":"UserDefinedTypeName","pathNode":{"id":30411,"name":"TokenInfo","nameLocations":["7458:9:73"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"7458:9:73"},"referencedDeclaration":4486,"src":"7458:9:73","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"visibility":"internal"}],"src":"7457:28:73"},"returnParameters":{"id":30417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30416,"mutability":"mutable","name":"rate","nameLocation":"7517:4:73","nodeType":"VariableDeclaration","scope":30455,"src":"7509:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30415,"name":"uint256","nodeType":"ElementaryTypeName","src":"7509:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7508:14:73"},"scope":30570,"src":"7436:424:73","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":30516,"nodeType":"Block","src":"8048:522:73","statements":[{"expression":{"id":30474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":30468,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30458,"src":"8058:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8067:11:73","memberName":"balancesRaw","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"8058:20:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30472,"indexExpression":{"id":30470,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30460,"src":"8079:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8058:32:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":30473,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30462,"src":"8093:13:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8058:48:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30475,"nodeType":"ExpressionStatement","src":"8058:48:73"},{"assignments":[30487],"declarations":[{"constant":false,"id":30487,"mutability":"mutable","name":"_upOrDown","nameLocation":"8185:9:73","nodeType":"VariableDeclaration","scope":30516,"src":"8117:77:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"},"typeName":{"id":30486,"nodeType":"FunctionTypeName","parameterTypes":{"id":30482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30486,"src":"8126:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30476,"name":"uint256","nodeType":"ElementaryTypeName","src":"8126:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30486,"src":"8135:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30478,"name":"uint256","nodeType":"ElementaryTypeName","src":"8135:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30486,"src":"8144:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30480,"name":"uint256","nodeType":"ElementaryTypeName","src":"8144:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8125:27:73"},"returnParameterTypes":{"id":30485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30486,"src":"8176:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30483,"name":"uint256","nodeType":"ElementaryTypeName","src":"8176:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8175:9:73"},"src":"8117:77:73","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"},"visibility":"internal"},"visibility":"internal"}],"id":30497,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"id":30491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30488,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30465,"src":"8197:17:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":30489,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"8230:8:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":30490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8239:8:73","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"8230:17:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"src":"8197:50:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":30494,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"8318:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ScalingHelpers_$6474_$","typeString":"type(library ScalingHelpers)"}},"id":30495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8333:28:73","memberName":"toScaled18ApplyRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6093,"src":"8318:43:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":30496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8197:164:73","trueExpression":{"expression":{"id":30492,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"8262:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ScalingHelpers_$6474_$","typeString":"type(library ScalingHelpers)"}},"id":30493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8277:26:73","memberName":"toScaled18ApplyRateRoundUp","nodeType":"MemberAccess","referencedDeclaration":6114,"src":"8262:41:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8117:244:73"},{"expression":{"id":30514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":30498,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30458,"src":"8372:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8381:20:73","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"8372:29:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30502,"indexExpression":{"id":30500,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30460,"src":"8402:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8372:41:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":30504,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30462,"src":"8439:13:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":30505,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30458,"src":"8466:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30506,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8475:21:73","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"8466:30:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30508,"indexExpression":{"id":30507,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30460,"src":"8497:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8466:42:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":30509,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30458,"src":"8522:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30510,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8531:10:73","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"8522:19:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30512,"indexExpression":{"id":30511,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30460,"src":"8542:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8522:31:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":30503,"name":"_upOrDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30487,"src":"8416:9:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":30513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8416:147:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8372:191:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30515,"nodeType":"ExpressionStatement","src":"8372:191:73"}]},"id":30517,"implemented":true,"kind":"function","modifiers":[],"name":"updateRawAndLiveBalance","nameLocation":"7875:23:73","nodeType":"FunctionDefinition","parameters":{"id":30466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30458,"mutability":"mutable","name":"poolData","nameLocation":"7924:8:73","nodeType":"VariableDeclaration","scope":30517,"src":"7908:24:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":30457,"nodeType":"UserDefinedTypeName","pathNode":{"id":30456,"name":"PoolData","nameLocations":["7908:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"7908:8:73"},"referencedDeclaration":4511,"src":"7908:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":30460,"mutability":"mutable","name":"tokenIndex","nameLocation":"7950:10:73","nodeType":"VariableDeclaration","scope":30517,"src":"7942:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30459,"name":"uint256","nodeType":"ElementaryTypeName","src":"7942:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30462,"mutability":"mutable","name":"newRawBalance","nameLocation":"7978:13:73","nodeType":"VariableDeclaration","scope":30517,"src":"7970:21:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30461,"name":"uint256","nodeType":"ElementaryTypeName","src":"7970:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30465,"mutability":"mutable","name":"roundingDirection","nameLocation":"8010:17:73","nodeType":"VariableDeclaration","scope":30517,"src":"8001:26:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":30464,"nodeType":"UserDefinedTypeName","pathNode":{"id":30463,"name":"Rounding","nameLocations":["8001:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"8001:8:73"},"referencedDeclaration":4514,"src":"8001:8:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"7898:135:73"},"returnParameters":{"id":30467,"nodeType":"ParameterList","parameters":[],"src":"8048:0:73"},"scope":30570,"src":"7866:704:73","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30568,"nodeType":"Block","src":"8876:1388:73","statements":[{"assignments":[30532],"declarations":[{"constant":false,"id":30532,"mutability":"mutable","name":"currentLiveBalance","nameLocation":"8894:18:73","nodeType":"VariableDeclaration","scope":30568,"src":"8886:26:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30531,"name":"uint256","nodeType":"ElementaryTypeName","src":"8886:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30537,"initialValue":{"baseExpression":{"expression":{"id":30533,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30520,"src":"8915:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8924:20:73","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":4504,"src":"8915:29:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30536,"indexExpression":{"id":30535,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30524,"src":"8945:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8915:41:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8886:70:73"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30538,"name":"currentLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30532,"src":"9458:18:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":30539,"name":"lastLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30522,"src":"9479:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9458:36:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30567,"nodeType":"IfStatement","src":"9454:804:73","trueBody":{"id":30566,"nodeType":"Block","src":"9496:762:73","statements":[{"id":30565,"nodeType":"UncheckedBlock","src":"9510:738:73","statements":[{"assignments":[30542],"declarations":[{"constant":false,"id":30542,"mutability":"mutable","name":"aggregateYieldFeeAmountScaled18","nameLocation":"9635:31:73","nodeType":"VariableDeclaration","scope":30565,"src":"9627:39:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30541,"name":"uint256","nodeType":"ElementaryTypeName","src":"9627:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":30550,"initialValue":{"arguments":[{"id":30548,"name":"aggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30526,"src":"9735:27:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":30543,"name":"currentLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30532,"src":"9670:18:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":30544,"name":"lastLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30522,"src":"9691:15:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9670:36:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":30546,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9669:38:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9708:5:73","memberName":"mulUp","nodeType":"MemberAccess","referencedDeclaration":7596,"src":"9669:44:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":30549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9669:111:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9627:153:73"},{"expression":{"id":30563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":30551,"name":"aggregateYieldFeeAmountRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30529,"src":"10015:26:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":30554,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30520,"src":"10120:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10129:21:73","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":4510,"src":"10120:30:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30557,"indexExpression":{"id":30556,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30524,"src":"10151:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10120:42:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"expression":{"id":30558,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30520,"src":"10184:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":30559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10193:10:73","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":4507,"src":"10184:19:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":30561,"indexExpression":{"id":30560,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30524,"src":"10204:10:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10184:31:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":30552,"name":"aggregateYieldFeeAmountScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30542,"src":"10044:31:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10076:22:73","memberName":"toRawUndoRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6135,"src":"10044:54:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":30562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10044:189:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10015:218:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30564,"nodeType":"ExpressionStatement","src":"10015:218:73"}]}]}}]},"id":30569,"implemented":true,"kind":"function","modifiers":[],"name":"_computeYieldFeesDue","nameLocation":"8650:20:73","nodeType":"FunctionDefinition","parameters":{"id":30527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30520,"mutability":"mutable","name":"poolData","nameLocation":"8696:8:73","nodeType":"VariableDeclaration","scope":30569,"src":"8680:24:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":30519,"nodeType":"UserDefinedTypeName","pathNode":{"id":30518,"name":"PoolData","nameLocations":["8680:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"8680:8:73"},"referencedDeclaration":4511,"src":"8680:8:73","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":30522,"mutability":"mutable","name":"lastLiveBalance","nameLocation":"8722:15:73","nodeType":"VariableDeclaration","scope":30569,"src":"8714:23:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30521,"name":"uint256","nodeType":"ElementaryTypeName","src":"8714:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30524,"mutability":"mutable","name":"tokenIndex","nameLocation":"8755:10:73","nodeType":"VariableDeclaration","scope":30569,"src":"8747:18:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30523,"name":"uint256","nodeType":"ElementaryTypeName","src":"8747:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30526,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"8783:27:73","nodeType":"VariableDeclaration","scope":30569,"src":"8775:35:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30525,"name":"uint256","nodeType":"ElementaryTypeName","src":"8775:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8670:146:73"},"returnParameters":{"id":30530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30529,"mutability":"mutable","name":"aggregateYieldFeeAmountRaw","nameLocation":"8848:26:73","nodeType":"VariableDeclaration","scope":30569,"src":"8840:34:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30528,"name":"uint256","nodeType":"ElementaryTypeName","src":"8840:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8839:36:73"},"scope":30570,"src":"8641:1623:73","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":30571,"src":"1321:8945:73","usedErrors":[],"usedEvents":[]}],"src":"46:10221:73"},"id":73},"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol","exportedSymbols":{"IVault":[2893],"IVaultErrors":[3550],"VaultExtensionsLib":[30601]},"id":30602,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":30572,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:74"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":30574,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30602,"sourceUnit":2894,"src":"72:81:74","symbolAliases":[{"foreign":{"id":30573,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"81:6:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":30576,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30602,"sourceUnit":3551,"src":"154:93:74","symbolAliases":[{"foreign":{"id":30575,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"163:12:74","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"VaultExtensionsLib","contractDependencies":[],"contractKind":"library","documentation":{"id":30577,"nodeType":"StructuredDocumentation","src":"249:647:74","text":" @notice Ensure functions in extension contracts can only be called through the main Vault.\n @dev The Vault is composed of three contracts, using the Proxy pattern from OpenZeppelin. `ensureVaultDelegateCall`\n can be called on the locally stored Vault address by modifiers in extension contracts to ensure that their functions\n can only be called through the main Vault. Because the storage *layout* is shared (through inheritance of\n `VaultStorage`), but each contract actually has its own storage, we need to make sure we are always calling in the\n main Vault context, to avoid referencing storage in the extension contracts."},"fullyImplemented":true,"id":30601,"linearizedBaseContracts":[30601],"name":"VaultExtensionsLib","nameLocation":"905:18:74","nodeType":"ContractDefinition","nodes":[{"body":{"id":30599,"nodeType":"Block","src":"991:255:74","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":30591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":30585,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1148:4:74","typeDescriptions":{"typeIdentifier":"t_contract$_VaultExtensionsLib_$30601","typeString":"library VaultExtensionsLib"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultExtensionsLib_$30601","typeString":"library VaultExtensionsLib"}],"id":30584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1140:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30583,"name":"address","nodeType":"ElementaryTypeName","src":"1140:7:74","typeDescriptions":{}}},"id":30586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":30589,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30580,"src":"1165:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":30588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1157:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30587,"name":"address","nodeType":"ElementaryTypeName","src":"1157:7:74","typeDescriptions":{}}},"id":30590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1157:14:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1140:31:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":30598,"nodeType":"IfStatement","src":"1136:104:74","trueBody":{"id":30597,"nodeType":"Block","src":"1173:67:74","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":30592,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"1194:12:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":30594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1207:20:74","memberName":"NotVaultDelegateCall","nodeType":"MemberAccess","referencedDeclaration":3537,"src":"1194:33:74","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":30595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1194:35:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":30596,"nodeType":"RevertStatement","src":"1187:42:74"}]}}]},"id":30600,"implemented":true,"kind":"function","modifiers":[],"name":"ensureVaultDelegateCall","nameLocation":"939:23:74","nodeType":"FunctionDefinition","parameters":{"id":30581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30580,"mutability":"mutable","name":"vault","nameLocation":"970:5:74","nodeType":"VariableDeclaration","scope":30600,"src":"963:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":30579,"nodeType":"UserDefinedTypeName","pathNode":{"id":30578,"name":"IVault","nameLocations":["963:6:74"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"963:6:74"},"referencedDeclaration":2893,"src":"963:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"962:14:74"},"returnParameters":{"id":30582,"nodeType":"ParameterList","parameters":[],"src":"991:0:74"},"scope":30601,"src":"930:316:74","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":30602,"src":"897:351:74","usedErrors":[],"usedEvents":[]}],"src":"46:1203:74"},"id":74},"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol","exportedSymbols":{"VaultStateBits":[30607],"VaultStateLib":[30748],"WordCodec":[7535]},"id":30749,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":30603,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:75"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","id":30605,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":30749,"sourceUnit":7536,"src":"72:93:75","symbolAliases":[{"foreign":{"id":30604,"name":"WordCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7535,"src":"81:9:75","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"VaultStateBits","id":30607,"name":"VaultStateBits","nameLocation":"229:14:75","nodeType":"UserDefinedValueTypeDefinition","src":"224:31:75","underlyingType":{"id":30606,"name":"bytes32","nodeType":"ElementaryTypeName","src":"247:7:75","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"abstract":false,"baseContracts":[],"canonicalName":"VaultStateLib","contractDependencies":[],"contractKind":"library","documentation":{"id":30608,"nodeType":"StructuredDocumentation","src":"257:78:75","text":"@notice Helper functions for reading and writing the `VaultState` struct."},"fullyImplemented":true,"id":30748,"linearizedBaseContracts":[30748],"name":"VaultStateLib","nameLocation":"343:13:75","nodeType":"ContractDefinition","nodes":[{"global":false,"id":30611,"libraryName":{"id":30609,"name":"WordCodec","nameLocations":["369:9:75"],"nodeType":"IdentifierPath","referencedDeclaration":7535,"src":"369:9:75"},"nodeType":"UsingForDirective","src":"363:28:75","typeName":{"id":30610,"name":"bytes32","nodeType":"ElementaryTypeName","src":"383:7:75","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":true,"functionSelector":"434e60ca","id":30614,"mutability":"constant","name":"QUERY_DISABLED_OFFSET","nameLocation":"467:21:75","nodeType":"VariableDeclaration","scope":30748,"src":"443:49:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30612,"name":"uint256","nodeType":"ElementaryTypeName","src":"443:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":30613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"491:1:75","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"public"},{"constant":true,"functionSelector":"2577aa90","id":30619,"mutability":"constant","name":"VAULT_PAUSED_OFFSET","nameLocation":"522:19:75","nodeType":"VariableDeclaration","scope":30748,"src":"498:71:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30615,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30616,"name":"QUERY_DISABLED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30614,"src":"544:21:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":30617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"568:1:75","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"544:25:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"227e492d","id":30624,"mutability":"constant","name":"BUFFER_PAUSED_OFFSET","nameLocation":"599:20:75","nodeType":"VariableDeclaration","scope":30748,"src":"575:70:75","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30620,"name":"uint256","nodeType":"ElementaryTypeName","src":"575:7:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":30621,"name":"VAULT_PAUSED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30619,"src":"622:19:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":30622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"644:1:75","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"622:23:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":30640,"nodeType":"Block","src":"729:87:75","statements":[{"expression":{"arguments":[{"id":30637,"name":"QUERY_DISABLED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30614,"src":"787:21:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":30634,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30627,"src":"768:6:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}],"expression":{"id":30632,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"746:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"761:6:75","memberName":"unwrap","nodeType":"MemberAccess","src":"746:21:75","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bytes32_$","typeString":"function (VaultStateBits) pure returns (bytes32)"}},"id":30635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"746:29:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"776:10:75","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"746:40:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":30638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"746:63:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":30631,"id":30639,"nodeType":"Return","src":"739:70:75"}]},"id":30641,"implemented":true,"kind":"function","modifiers":[],"name":"isQueryDisabled","nameLocation":"661:15:75","nodeType":"FunctionDefinition","parameters":{"id":30628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30627,"mutability":"mutable","name":"config","nameLocation":"692:6:75","nodeType":"VariableDeclaration","scope":30641,"src":"677:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30626,"nodeType":"UserDefinedTypeName","pathNode":{"id":30625,"name":"VaultStateBits","nameLocations":["677:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"677:14:75"},"referencedDeclaration":30607,"src":"677:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"src":"676:23:75"},"returnParameters":{"id":30631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30641,"src":"723:4:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30629,"name":"bool","nodeType":"ElementaryTypeName","src":"723:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"722:6:75"},"scope":30748,"src":"652:164:75","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30664,"nodeType":"Block","src":"922:115:75","statements":[{"expression":{"arguments":[{"arguments":[{"id":30659,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30646,"src":"1000:5:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":30660,"name":"QUERY_DISABLED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30614,"src":"1007:21:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":30656,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30644,"src":"981:6:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}],"expression":{"id":30654,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"959:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"974:6:75","memberName":"unwrap","nodeType":"MemberAccess","src":"959:21:75","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bytes32_$","typeString":"function (VaultStateBits) pure returns (bytes32)"}},"id":30657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:29:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"989:10:75","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"959:40:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":30661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:70:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":30652,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"939:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"954:4:75","memberName":"wrap","nodeType":"MemberAccess","src":"939:19:75","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (bytes32) pure returns (VaultStateBits)"}},"id":30662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"939:91:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"functionReturnParameters":30651,"id":30663,"nodeType":"Return","src":"932:98:75"}]},"id":30665,"implemented":true,"kind":"function","modifiers":[],"name":"setQueryDisabled","nameLocation":"831:16:75","nodeType":"FunctionDefinition","parameters":{"id":30647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30644,"mutability":"mutable","name":"config","nameLocation":"863:6:75","nodeType":"VariableDeclaration","scope":30665,"src":"848:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30643,"nodeType":"UserDefinedTypeName","pathNode":{"id":30642,"name":"VaultStateBits","nameLocations":["848:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"848:14:75"},"referencedDeclaration":30607,"src":"848:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"},{"constant":false,"id":30646,"mutability":"mutable","name":"value","nameLocation":"876:5:75","nodeType":"VariableDeclaration","scope":30665,"src":"871:10:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30645,"name":"bool","nodeType":"ElementaryTypeName","src":"871:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"847:35:75"},"returnParameters":{"id":30651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30665,"src":"906:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30649,"nodeType":"UserDefinedTypeName","pathNode":{"id":30648,"name":"VaultStateBits","nameLocations":["906:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"906:14:75"},"referencedDeclaration":30607,"src":"906:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"src":"905:16:75"},"scope":30748,"src":"822:215:75","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30681,"nodeType":"Block","src":"1118:85:75","statements":[{"expression":{"arguments":[{"id":30678,"name":"VAULT_PAUSED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30619,"src":"1176:19:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":30675,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30668,"src":"1157:6:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}],"expression":{"id":30673,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1135:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1150:6:75","memberName":"unwrap","nodeType":"MemberAccess","src":"1135:21:75","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bytes32_$","typeString":"function (VaultStateBits) pure returns (bytes32)"}},"id":30676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1135:29:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1165:10:75","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"1135:40:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":30679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1135:61:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":30672,"id":30680,"nodeType":"Return","src":"1128:68:75"}]},"id":30682,"implemented":true,"kind":"function","modifiers":[],"name":"isVaultPaused","nameLocation":"1052:13:75","nodeType":"FunctionDefinition","parameters":{"id":30669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30668,"mutability":"mutable","name":"config","nameLocation":"1081:6:75","nodeType":"VariableDeclaration","scope":30682,"src":"1066:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30667,"nodeType":"UserDefinedTypeName","pathNode":{"id":30666,"name":"VaultStateBits","nameLocations":["1066:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"1066:14:75"},"referencedDeclaration":30607,"src":"1066:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"src":"1065:23:75"},"returnParameters":{"id":30672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30682,"src":"1112:4:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30670,"name":"bool","nodeType":"ElementaryTypeName","src":"1112:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1111:6:75"},"scope":30748,"src":"1043:160:75","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30705,"nodeType":"Block","src":"1307:113:75","statements":[{"expression":{"arguments":[{"arguments":[{"id":30700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30687,"src":"1385:5:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":30701,"name":"VAULT_PAUSED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30619,"src":"1392:19:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":30697,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30685,"src":"1366:6:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}],"expression":{"id":30695,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1344:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1359:6:75","memberName":"unwrap","nodeType":"MemberAccess","src":"1344:21:75","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bytes32_$","typeString":"function (VaultStateBits) pure returns (bytes32)"}},"id":30698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1344:29:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1374:10:75","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"1344:40:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":30702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1344:68:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":30693,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1324:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1339:4:75","memberName":"wrap","nodeType":"MemberAccess","src":"1324:19:75","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (bytes32) pure returns (VaultStateBits)"}},"id":30703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1324:89:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"functionReturnParameters":30692,"id":30704,"nodeType":"Return","src":"1317:96:75"}]},"id":30706,"implemented":true,"kind":"function","modifiers":[],"name":"setVaultPaused","nameLocation":"1218:14:75","nodeType":"FunctionDefinition","parameters":{"id":30688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30685,"mutability":"mutable","name":"config","nameLocation":"1248:6:75","nodeType":"VariableDeclaration","scope":30706,"src":"1233:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30684,"nodeType":"UserDefinedTypeName","pathNode":{"id":30683,"name":"VaultStateBits","nameLocations":["1233:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"1233:14:75"},"referencedDeclaration":30607,"src":"1233:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"},{"constant":false,"id":30687,"mutability":"mutable","name":"value","nameLocation":"1261:5:75","nodeType":"VariableDeclaration","scope":30706,"src":"1256:10:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30686,"name":"bool","nodeType":"ElementaryTypeName","src":"1256:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1232:35:75"},"returnParameters":{"id":30692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30691,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30706,"src":"1291:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30690,"nodeType":"UserDefinedTypeName","pathNode":{"id":30689,"name":"VaultStateBits","nameLocations":["1291:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"1291:14:75"},"referencedDeclaration":30607,"src":"1291:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"src":"1290:16:75"},"scope":30748,"src":"1209:211:75","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30722,"nodeType":"Block","src":"1504:86:75","statements":[{"expression":{"arguments":[{"id":30719,"name":"BUFFER_PAUSED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30624,"src":"1562:20:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":30716,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30709,"src":"1543:6:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}],"expression":{"id":30714,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1521:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1536:6:75","memberName":"unwrap","nodeType":"MemberAccess","src":"1521:21:75","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bytes32_$","typeString":"function (VaultStateBits) pure returns (bytes32)"}},"id":30717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1521:29:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1551:10:75","memberName":"decodeBool","nodeType":"MemberAccess","referencedDeclaration":7397,"src":"1521:40:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bool_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bool)"}},"id":30720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1521:62:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":30713,"id":30721,"nodeType":"Return","src":"1514:69:75"}]},"id":30723,"implemented":true,"kind":"function","modifiers":[],"name":"areBuffersPaused","nameLocation":"1435:16:75","nodeType":"FunctionDefinition","parameters":{"id":30710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30709,"mutability":"mutable","name":"config","nameLocation":"1467:6:75","nodeType":"VariableDeclaration","scope":30723,"src":"1452:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30708,"nodeType":"UserDefinedTypeName","pathNode":{"id":30707,"name":"VaultStateBits","nameLocations":["1452:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"1452:14:75"},"referencedDeclaration":30607,"src":"1452:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"src":"1451:23:75"},"returnParameters":{"id":30713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30723,"src":"1498:4:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30711,"name":"bool","nodeType":"ElementaryTypeName","src":"1498:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1497:6:75"},"scope":30748,"src":"1426:164:75","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":30746,"nodeType":"Block","src":"1696:114:75","statements":[{"expression":{"arguments":[{"arguments":[{"id":30741,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30728,"src":"1774:5:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":30742,"name":"BUFFER_PAUSED_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30624,"src":"1781:20:75","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":30738,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30726,"src":"1755:6:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}],"expression":{"id":30736,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1733:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1748:6:75","memberName":"unwrap","nodeType":"MemberAccess","src":"1733:21:75","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bytes32_$","typeString":"function (VaultStateBits) pure returns (bytes32)"}},"id":30739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1733:29:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":30740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1763:10:75","memberName":"insertBool","nodeType":"MemberAccess","referencedDeclaration":7411,"src":"1733:40:75","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bool,uint256) pure returns (bytes32)"}},"id":30743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1733:69:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":30734,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1713:14:75","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"type(VaultStateBits)"}},"id":30735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1728:4:75","memberName":"wrap","nodeType":"MemberAccess","src":"1713:19:75","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (bytes32) pure returns (VaultStateBits)"}},"id":30744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1713:90:75","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"functionReturnParameters":30733,"id":30745,"nodeType":"Return","src":"1706:97:75"}]},"id":30747,"implemented":true,"kind":"function","modifiers":[],"name":"setBuffersPaused","nameLocation":"1605:16:75","nodeType":"FunctionDefinition","parameters":{"id":30729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30726,"mutability":"mutable","name":"config","nameLocation":"1637:6:75","nodeType":"VariableDeclaration","scope":30747,"src":"1622:21:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30725,"nodeType":"UserDefinedTypeName","pathNode":{"id":30724,"name":"VaultStateBits","nameLocations":["1622:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"1622:14:75"},"referencedDeclaration":30607,"src":"1622:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"},{"constant":false,"id":30728,"mutability":"mutable","name":"value","nameLocation":"1650:5:75","nodeType":"VariableDeclaration","scope":30747,"src":"1645:10:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":30727,"name":"bool","nodeType":"ElementaryTypeName","src":"1645:4:75","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1621:35:75"},"returnParameters":{"id":30733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30747,"src":"1680:14:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":30731,"nodeType":"UserDefinedTypeName","pathNode":{"id":30730,"name":"VaultStateBits","nameLocations":["1680:14:75"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"1680:14:75"},"referencedDeclaration":30607,"src":"1680:14:75","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"src":"1679:16:75"},"scope":30748,"src":"1596:214:75","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":30749,"src":"335:1477:75","usedErrors":[],"usedEvents":[]}],"src":"46:1767:75"},"id":75},"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol","exportedSymbols":{"BasePoolMath":[11709],"BasePoolMathMock":[31014],"IBasePool":[1366],"PoolSwapParams":[4554],"Rounding":[4514]},"id":31015,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":30750,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:76"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":30753,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31015,"sourceUnit":4654,"src":"72:103:76","symbolAliases":[{"foreign":{"id":30751,"name":"PoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4554,"src":"81:14:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":30752,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"97:8:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","id":30755,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31015,"sourceUnit":1367,"src":"176:87:76","symbolAliases":[{"foreign":{"id":30754,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"185:9:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BasePoolMath.sol","file":"../BasePoolMath.sol","id":30757,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31015,"sourceUnit":11710,"src":"265:51:76","symbolAliases":[{"foreign":{"id":30756,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"274:12:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":30758,"name":"IBasePool","nameLocations":["356:9:76"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"356:9:76"},"id":30759,"nodeType":"InheritanceSpecifier","src":"356:9:76"}],"canonicalName":"BasePoolMathMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":false,"id":31014,"linearizedBaseContracts":[31014,1366,2855,2839],"name":"BasePoolMathMock","nameLocation":"336:16:76","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[1343],"functionSelector":"984de9e8","id":30770,"implemented":false,"kind":"function","modifiers":[],"name":"computeInvariant","nameLocation":"381:16:76","nodeType":"FunctionDefinition","parameters":{"id":30766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30762,"mutability":"mutable","name":"balances","nameLocation":"415:8:76","nodeType":"VariableDeclaration","scope":30770,"src":"398:25:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30760,"name":"uint256","nodeType":"ElementaryTypeName","src":"398:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30761,"nodeType":"ArrayTypeName","src":"398:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30770,"src":"425:8:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":30764,"nodeType":"UserDefinedTypeName","pathNode":{"id":30763,"name":"Rounding","nameLocations":["425:8:76"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"425:8:76"},"referencedDeclaration":4514,"src":"425:8:76","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"397:37:76"},"returnParameters":{"id":30769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30768,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30770,"src":"464:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30767,"name":"uint256","nodeType":"ElementaryTypeName","src":"464:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"463:9:76"},"scope":31014,"src":"372:101:76","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1356],"functionSelector":"16a0b3e0","id":30782,"implemented":false,"kind":"function","modifiers":[],"name":"computeBalance","nameLocation":"488:14:76","nodeType":"FunctionDefinition","parameters":{"id":30778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30773,"mutability":"mutable","name":"balances","nameLocation":"529:8:76","nodeType":"VariableDeclaration","scope":30782,"src":"512:25:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30771,"name":"uint256","nodeType":"ElementaryTypeName","src":"512:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30772,"nodeType":"ArrayTypeName","src":"512:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30775,"mutability":"mutable","name":"tokenInIndex","nameLocation":"555:12:76","nodeType":"VariableDeclaration","scope":30782,"src":"547:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30774,"name":"uint256","nodeType":"ElementaryTypeName","src":"547:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30777,"mutability":"mutable","name":"invariantRatio","nameLocation":"585:14:76","nodeType":"VariableDeclaration","scope":30782,"src":"577:22:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30776,"name":"uint256","nodeType":"ElementaryTypeName","src":"577:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"502:103:76"},"returnParameters":{"id":30781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30780,"mutability":"mutable","name":"newBalance","nameLocation":"645:10:76","nodeType":"VariableDeclaration","scope":30782,"src":"637:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30779,"name":"uint256","nodeType":"ElementaryTypeName","src":"637:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:20:76"},"scope":31014,"src":"479:178:76","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":30802,"nodeType":"Block","src":"845:105:76","statements":[{"expression":{"arguments":[{"id":30797,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30785,"src":"904:8:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":30798,"name":"bptTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30787,"src":"914:14:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30799,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30789,"src":"930:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":30795,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"862:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":30796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"875:28:76","memberName":"computeProportionalAmountsIn","nodeType":"MemberAccess","referencedDeclaration":11049,"src":"862:41:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256) pure returns (uint256[] memory)"}},"id":30800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"862:81:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":30794,"id":30801,"nodeType":"Return","src":"855:88:76"}]},"functionSelector":"c548e4d8","id":30803,"implemented":true,"kind":"function","modifiers":[],"name":"computeProportionalAmountsIn","nameLocation":"672:28:76","nodeType":"FunctionDefinition","parameters":{"id":30790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30785,"mutability":"mutable","name":"balances","nameLocation":"727:8:76","nodeType":"VariableDeclaration","scope":30803,"src":"710:25:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30783,"name":"uint256","nodeType":"ElementaryTypeName","src":"710:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30784,"nodeType":"ArrayTypeName","src":"710:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30787,"mutability":"mutable","name":"bptTotalSupply","nameLocation":"753:14:76","nodeType":"VariableDeclaration","scope":30803,"src":"745:22:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30786,"name":"uint256","nodeType":"ElementaryTypeName","src":"745:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30789,"mutability":"mutable","name":"bptAmountOut","nameLocation":"785:12:76","nodeType":"VariableDeclaration","scope":30803,"src":"777:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30788,"name":"uint256","nodeType":"ElementaryTypeName","src":"777:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"700:103:76"},"returnParameters":{"id":30794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30803,"src":"827:16:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30791,"name":"uint256","nodeType":"ElementaryTypeName","src":"827:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30792,"nodeType":"ArrayTypeName","src":"827:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"826:18:76"},"scope":31014,"src":"663:287:76","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":30823,"nodeType":"Block","src":"1138:105:76","statements":[{"expression":{"arguments":[{"id":30818,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30806,"src":"1198:8:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":30819,"name":"bptTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30808,"src":"1208:14:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30820,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30810,"src":"1224:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":30816,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"1155:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":30817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:29:76","memberName":"computeProportionalAmountsOut","nodeType":"MemberAccess","referencedDeclaration":11099,"src":"1155:42:76","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256) pure returns (uint256[] memory)"}},"id":30821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1155:81:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":30815,"id":30822,"nodeType":"Return","src":"1148:88:76"}]},"functionSelector":"da317980","id":30824,"implemented":true,"kind":"function","modifiers":[],"name":"computeProportionalAmountsOut","nameLocation":"965:29:76","nodeType":"FunctionDefinition","parameters":{"id":30811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30806,"mutability":"mutable","name":"balances","nameLocation":"1021:8:76","nodeType":"VariableDeclaration","scope":30824,"src":"1004:25:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30804,"name":"uint256","nodeType":"ElementaryTypeName","src":"1004:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30805,"nodeType":"ArrayTypeName","src":"1004:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30808,"mutability":"mutable","name":"bptTotalSupply","nameLocation":"1047:14:76","nodeType":"VariableDeclaration","scope":30824,"src":"1039:22:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30807,"name":"uint256","nodeType":"ElementaryTypeName","src":"1039:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30810,"mutability":"mutable","name":"bptAmountIn","nameLocation":"1079:11:76","nodeType":"VariableDeclaration","scope":30824,"src":"1071:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1071:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"994:102:76"},"returnParameters":{"id":30815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30814,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30824,"src":"1120:16:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30812,"name":"uint256","nodeType":"ElementaryTypeName","src":"1120:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30813,"nodeType":"ArrayTypeName","src":"1120:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1119:18:76"},"scope":31014,"src":"956:287:76","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":30856,"nodeType":"Block","src":"1517:261:76","statements":[{"expression":{"arguments":[{"id":30844,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30827,"src":"1606:15:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":30845,"name":"exactAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30830,"src":"1639:12:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":30846,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30832,"src":"1669:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30847,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30834,"src":"1698:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":30851,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1751:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}],"id":30850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1743:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30849,"name":"address","nodeType":"ElementaryTypeName","src":"1743:7:76","typeDescriptions":{}}},"id":30852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1743:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":30848,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"1733:9:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":30853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1733:24:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":30842,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"1546:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":30843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1559:29:76","memberName":"computeAddLiquidityUnbalanced","nodeType":"MemberAccess","referencedDeclaration":11280,"src":"1546:42:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256[] memory,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":30854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1546:225:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"functionReturnParameters":30841,"id":30855,"nodeType":"Return","src":"1527:244:76"}]},"functionSelector":"d9c7cc7a","id":30857,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddLiquidityUnbalanced","nameLocation":"1258:29:76","nodeType":"FunctionDefinition","parameters":{"id":30835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30827,"mutability":"mutable","name":"currentBalances","nameLocation":"1314:15:76","nodeType":"VariableDeclaration","scope":30857,"src":"1297:32:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30825,"name":"uint256","nodeType":"ElementaryTypeName","src":"1297:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30826,"nodeType":"ArrayTypeName","src":"1297:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30830,"mutability":"mutable","name":"exactAmounts","nameLocation":"1356:12:76","nodeType":"VariableDeclaration","scope":30857,"src":"1339:29:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30828,"name":"uint256","nodeType":"ElementaryTypeName","src":"1339:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30829,"nodeType":"ArrayTypeName","src":"1339:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30832,"mutability":"mutable","name":"totalSupply","nameLocation":"1386:11:76","nodeType":"VariableDeclaration","scope":30857,"src":"1378:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30831,"name":"uint256","nodeType":"ElementaryTypeName","src":"1378:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30834,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"1415:17:76","nodeType":"VariableDeclaration","scope":30857,"src":"1407:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1407:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1287:151:76"},"returnParameters":{"id":30841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30837,"mutability":"mutable","name":"bptAmountOut","nameLocation":"1470:12:76","nodeType":"VariableDeclaration","scope":30857,"src":"1462:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30836,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30840,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"1501:14:76","nodeType":"VariableDeclaration","scope":30857,"src":"1484:31:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30838,"name":"uint256","nodeType":"ElementaryTypeName","src":"1484:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30839,"nodeType":"ArrayTypeName","src":"1484:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1461:55:76"},"scope":31014,"src":"1249:529:76","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":30891,"nodeType":"Block","src":"2090:305:76","statements":[{"expression":{"arguments":[{"id":30878,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30860,"src":"2188:15:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":30879,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30862,"src":"2221:12:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30880,"name":"exactBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30864,"src":"2251:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30881,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30866,"src":"2286:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30882,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30868,"src":"2315:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":30886,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2368:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}],"id":30885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2360:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30884,"name":"address","nodeType":"ElementaryTypeName","src":"2360:7:76","typeDescriptions":{}}},"id":30887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2360:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":30883,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"2350:9:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":30888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2350:24:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":30876,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"2119:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":30877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2132:38:76","memberName":"computeAddLiquiditySingleTokenExactOut","nodeType":"MemberAccess","referencedDeclaration":11388,"src":"2119:51:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":30889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2119:269:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"functionReturnParameters":30875,"id":30890,"nodeType":"Return","src":"2100:288:76"}]},"functionSelector":"85d5261a","id":30892,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddLiquiditySingleTokenExactOut","nameLocation":"1793:38:76","nodeType":"FunctionDefinition","parameters":{"id":30869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30860,"mutability":"mutable","name":"currentBalances","nameLocation":"1858:15:76","nodeType":"VariableDeclaration","scope":30892,"src":"1841:32:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30858,"name":"uint256","nodeType":"ElementaryTypeName","src":"1841:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30859,"nodeType":"ArrayTypeName","src":"1841:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30862,"mutability":"mutable","name":"tokenInIndex","nameLocation":"1891:12:76","nodeType":"VariableDeclaration","scope":30892,"src":"1883:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30861,"name":"uint256","nodeType":"ElementaryTypeName","src":"1883:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30864,"mutability":"mutable","name":"exactBptAmountOut","nameLocation":"1921:17:76","nodeType":"VariableDeclaration","scope":30892,"src":"1913:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30863,"name":"uint256","nodeType":"ElementaryTypeName","src":"1913:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30866,"mutability":"mutable","name":"totalSupply","nameLocation":"1956:11:76","nodeType":"VariableDeclaration","scope":30892,"src":"1948:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30868,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"1985:17:76","nodeType":"VariableDeclaration","scope":30892,"src":"1977:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30867,"name":"uint256","nodeType":"ElementaryTypeName","src":"1977:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1831:177:76"},"returnParameters":{"id":30875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30871,"mutability":"mutable","name":"amountInWithFee","nameLocation":"2040:15:76","nodeType":"VariableDeclaration","scope":30892,"src":"2032:23:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30870,"name":"uint256","nodeType":"ElementaryTypeName","src":"2032:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30874,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"2074:14:76","nodeType":"VariableDeclaration","scope":30892,"src":"2057:31:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30872,"name":"uint256","nodeType":"ElementaryTypeName","src":"2057:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30873,"nodeType":"ArrayTypeName","src":"2057:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2031:58:76"},"scope":31014,"src":"1784:611:76","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":30926,"nodeType":"Block","src":"2704:306:76","statements":[{"expression":{"arguments":[{"id":30913,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30895,"src":"2805:15:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":30914,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30897,"src":"2838:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30915,"name":"exactAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30899,"src":"2869:14:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30916,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30901,"src":"2901:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30917,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30903,"src":"2930:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":30921,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2983:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}],"id":30920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2975:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30919,"name":"address","nodeType":"ElementaryTypeName","src":"2975:7:76","typeDescriptions":{}}},"id":30922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2975:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":30918,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"2965:9:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":30923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2965:24:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":30911,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"2733:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":30912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2746:41:76","memberName":"computeRemoveLiquiditySingleTokenExactOut","nodeType":"MemberAccess","referencedDeclaration":11553,"src":"2733:54:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":30924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2733:270:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"functionReturnParameters":30910,"id":30925,"nodeType":"Return","src":"2714:289:76"}]},"functionSelector":"9a87ffbf","id":30927,"implemented":true,"kind":"function","modifiers":[],"name":"computeRemoveLiquiditySingleTokenExactOut","nameLocation":"2410:41:76","nodeType":"FunctionDefinition","parameters":{"id":30904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30895,"mutability":"mutable","name":"currentBalances","nameLocation":"2478:15:76","nodeType":"VariableDeclaration","scope":30927,"src":"2461:32:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30893,"name":"uint256","nodeType":"ElementaryTypeName","src":"2461:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30894,"nodeType":"ArrayTypeName","src":"2461:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30897,"mutability":"mutable","name":"tokenOutIndex","nameLocation":"2511:13:76","nodeType":"VariableDeclaration","scope":30927,"src":"2503:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30899,"mutability":"mutable","name":"exactAmountOut","nameLocation":"2542:14:76","nodeType":"VariableDeclaration","scope":30927,"src":"2534:22:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30898,"name":"uint256","nodeType":"ElementaryTypeName","src":"2534:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30901,"mutability":"mutable","name":"totalSupply","nameLocation":"2574:11:76","nodeType":"VariableDeclaration","scope":30927,"src":"2566:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2566:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30903,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"2603:17:76","nodeType":"VariableDeclaration","scope":30927,"src":"2595:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30902,"name":"uint256","nodeType":"ElementaryTypeName","src":"2595:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2451:175:76"},"returnParameters":{"id":30910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30906,"mutability":"mutable","name":"bptAmountIn","nameLocation":"2658:11:76","nodeType":"VariableDeclaration","scope":30927,"src":"2650:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30905,"name":"uint256","nodeType":"ElementaryTypeName","src":"2650:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30909,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"2688:14:76","nodeType":"VariableDeclaration","scope":30927,"src":"2671:31:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30907,"name":"uint256","nodeType":"ElementaryTypeName","src":"2671:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30908,"nodeType":"ArrayTypeName","src":"2671:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2649:54:76"},"scope":31014,"src":"2401:609:76","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":30961,"nodeType":"Block","src":"3325:307:76","statements":[{"expression":{"arguments":[{"id":30948,"name":"currentBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30930,"src":"3425:15:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":30949,"name":"tokenOutIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30932,"src":"3458:13:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30950,"name":"exactBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30934,"src":"3489:16:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30951,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30936,"src":"3523:11:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":30952,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30938,"src":"3552:17:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"arguments":[{"id":30956,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3605:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePoolMathMock_$31014","typeString":"contract BasePoolMathMock"}],"id":30955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3597:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30954,"name":"address","nodeType":"ElementaryTypeName","src":"3597:7:76","typeDescriptions":{}}},"id":30957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":30953,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"3587:9:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$1366_$","typeString":"type(contract IBasePool)"}},"id":30958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3587:24:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IBasePool_$1366","typeString":"contract IBasePool"}],"expression":{"id":30946,"name":"BasePoolMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11709,"src":"3354:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolMath_$11709_$","typeString":"type(library BasePoolMath)"}},"id":30947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3367:40:76","memberName":"computeRemoveLiquiditySingleTokenExactIn","nodeType":"MemberAccess","referencedDeclaration":11656,"src":"3354:53:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_contract$_IBasePool_$1366_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256[] memory,uint256,uint256,uint256,uint256,contract IBasePool) view returns (uint256,uint256[] memory)"}},"id":30959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3354:271:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"functionReturnParameters":30945,"id":30960,"nodeType":"Return","src":"3335:290:76"}]},"functionSelector":"3ab05915","id":30962,"implemented":true,"kind":"function","modifiers":[],"name":"computeRemoveLiquiditySingleTokenExactIn","nameLocation":"3025:40:76","nodeType":"FunctionDefinition","parameters":{"id":30939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30930,"mutability":"mutable","name":"currentBalances","nameLocation":"3092:15:76","nodeType":"VariableDeclaration","scope":30962,"src":"3075:32:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30928,"name":"uint256","nodeType":"ElementaryTypeName","src":"3075:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30929,"nodeType":"ArrayTypeName","src":"3075:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":30932,"mutability":"mutable","name":"tokenOutIndex","nameLocation":"3125:13:76","nodeType":"VariableDeclaration","scope":30962,"src":"3117:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30931,"name":"uint256","nodeType":"ElementaryTypeName","src":"3117:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30934,"mutability":"mutable","name":"exactBptAmountIn","nameLocation":"3156:16:76","nodeType":"VariableDeclaration","scope":30962,"src":"3148:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30933,"name":"uint256","nodeType":"ElementaryTypeName","src":"3148:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30936,"mutability":"mutable","name":"totalSupply","nameLocation":"3190:11:76","nodeType":"VariableDeclaration","scope":30962,"src":"3182:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30935,"name":"uint256","nodeType":"ElementaryTypeName","src":"3182:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30938,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"3219:17:76","nodeType":"VariableDeclaration","scope":30962,"src":"3211:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30937,"name":"uint256","nodeType":"ElementaryTypeName","src":"3211:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3065:177:76"},"returnParameters":{"id":30945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30941,"mutability":"mutable","name":"amountOutWithFee","nameLocation":"3274:16:76","nodeType":"VariableDeclaration","scope":30962,"src":"3266:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30940,"name":"uint256","nodeType":"ElementaryTypeName","src":"3266:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30944,"mutability":"mutable","name":"swapFeeAmounts","nameLocation":"3309:14:76","nodeType":"VariableDeclaration","scope":30962,"src":"3292:31:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":30942,"name":"uint256","nodeType":"ElementaryTypeName","src":"3292:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30943,"nodeType":"ArrayTypeName","src":"3292:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3265:59:76"},"scope":31014,"src":"3016:616:76","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2848],"body":{"id":30970,"nodeType":"Block","src":"3715:25:76","statements":[{"expression":{"hexValue":"30","id":30968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3732:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":30967,"id":30969,"nodeType":"Return","src":"3725:8:76"}]},"functionSelector":"b677fa56","id":30971,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumInvariantRatio","nameLocation":"3647:24:76","nodeType":"FunctionDefinition","overrides":{"id":30964,"nodeType":"OverrideSpecifier","overrides":[],"src":"3688:8:76"},"parameters":{"id":30963,"nodeType":"ParameterList","parameters":[],"src":"3671:2:76"},"returnParameters":{"id":30967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30971,"src":"3706:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30965,"name":"uint256","nodeType":"ElementaryTypeName","src":"3706:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3705:9:76"},"scope":31014,"src":"3638:102:76","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2854],"body":{"id":30981,"nodeType":"Block","src":"3823:40:76","statements":[{"expression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000"},"id":30979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"315f3030305f303030","id":30977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3840:9:76","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"31653138","id":30978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3852:4:76","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"src":"3840:16:76","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000"}},"functionReturnParameters":30976,"id":30980,"nodeType":"Return","src":"3833:23:76"}]},"functionSelector":"273c1adf","id":30982,"implemented":true,"kind":"function","modifiers":[],"name":"getMaximumInvariantRatio","nameLocation":"3755:24:76","nodeType":"FunctionDefinition","overrides":{"id":30973,"nodeType":"OverrideSpecifier","overrides":[],"src":"3796:8:76"},"parameters":{"id":30972,"nodeType":"ParameterList","parameters":[],"src":"3779:2:76"},"returnParameters":{"id":30976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30982,"src":"3814:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30974,"name":"uint256","nodeType":"ElementaryTypeName","src":"3814:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3813:9:76"},"scope":31014,"src":"3746:117:76","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2832],"body":{"id":30990,"nodeType":"Block","src":"3949:25:76","statements":[{"expression":{"hexValue":"30","id":30988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3966:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":30987,"id":30989,"nodeType":"Return","src":"3959:8:76"}]},"functionSelector":"ce20ece7","id":30991,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumSwapFeePercentage","nameLocation":"3878:27:76","nodeType":"FunctionDefinition","overrides":{"id":30984,"nodeType":"OverrideSpecifier","overrides":[],"src":"3922:8:76"},"parameters":{"id":30983,"nodeType":"ParameterList","parameters":[],"src":"3905:2:76"},"returnParameters":{"id":30987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30991,"src":"3940:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30985,"name":"uint256","nodeType":"ElementaryTypeName","src":"3940:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3939:9:76"},"scope":31014,"src":"3869:105:76","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2838],"body":{"id":30999,"nodeType":"Block","src":"4060:28:76","statements":[{"expression":{"hexValue":"31653138","id":30997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4077:4:76","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"functionReturnParameters":30996,"id":30998,"nodeType":"Return","src":"4070:11:76"}]},"functionSelector":"654cf15d","id":31000,"implemented":true,"kind":"function","modifiers":[],"name":"getMaximumSwapFeePercentage","nameLocation":"3989:27:76","nodeType":"FunctionDefinition","overrides":{"id":30993,"nodeType":"OverrideSpecifier","overrides":[],"src":"4033:8:76"},"parameters":{"id":30992,"nodeType":"ParameterList","parameters":[],"src":"4016:2:76"},"returnParameters":{"id":30996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31000,"src":"4051:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":30994,"name":"uint256","nodeType":"ElementaryTypeName","src":"4051:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4050:9:76"},"scope":31014,"src":"3980:108:76","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[1365],"body":{"id":31012,"nodeType":"Block","src":"4167:42:76","statements":[{"expression":{"arguments":[{"hexValue":"4e6f7420696d706c656d656e746564","id":31009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4184:17:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""},"value":"Not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""}],"id":31008,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4177:6:76","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":31010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4177:25:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31011,"nodeType":"ExpressionStatement","src":"4177:25:76"}]},"functionSelector":"72c98186","id":31013,"implemented":true,"kind":"function","modifiers":[],"name":"onSwap","nameLocation":"4103:6:76","nodeType":"FunctionDefinition","parameters":{"id":31004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31003,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31013,"src":"4110:23:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":31002,"nodeType":"UserDefinedTypeName","pathNode":{"id":31001,"name":"PoolSwapParams","nameLocations":["4110:14:76"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"4110:14:76"},"referencedDeclaration":4554,"src":"4110:14:76","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"4109:25:76"},"returnParameters":{"id":31007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31013,"src":"4158:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31005,"name":"uint256","nodeType":"ElementaryTypeName","src":"4158:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4157:9:76"},"scope":31014,"src":"4094:115:76","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":31015,"src":"318:3893:76","usedErrors":[7543,10993,11000],"usedEvents":[]}],"src":"46:4166:76"},"id":76},"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol","exportedSymbols":{"BasicAuthorizerMock":[31167],"IAuthorizer":[1316]},"id":31168,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":31016,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:77"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","id":31018,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31168,"sourceUnit":1317,"src":"72:91:77","symbolAliases":[{"foreign":{"id":31017,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"81:11:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":31019,"name":"IAuthorizer","nameLocations":["197:11:77"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"197:11:77"},"id":31020,"nodeType":"InheritanceSpecifier","src":"197:11:77"}],"canonicalName":"BasicAuthorizerMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":31167,"linearizedBaseContracts":[31167,1316],"name":"BasicAuthorizerMock","nameLocation":"174:19:77","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":31026,"mutability":"mutable","name":"_roles","nameLocation":"349:6:77","nodeType":"VariableDeclaration","scope":31167,"src":"271:84:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(address => bool))"},"typeName":{"id":31025,"keyName":"actionId","keyNameLocation":"287:8:77","keyType":{"id":31021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"279:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"271:69:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":31024,"keyName":"account","keyNameLocation":"315:7:77","keyType":{"id":31022,"name":"address","nodeType":"ElementaryTypeName","src":"307:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"299:40:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"hasRole","valueNameLocation":"331:7:77","valueType":{"id":31023,"name":"bool","nodeType":"ElementaryTypeName","src":"326:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"constant":false,"id":31034,"mutability":"mutable","name":"_specificRoles","nameLocation":"549:14:77","nodeType":"VariableDeclaration","scope":31167,"src":"430:133:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"typeName":{"id":31033,"keyName":"actionId","keyNameLocation":"446:8:77","keyType":{"id":31027,"name":"bytes32","nodeType":"ElementaryTypeName","src":"438:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"430:102:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":31032,"keyName":"account","keyNameLocation":"474:7:77","keyType":{"id":31028,"name":"address","nodeType":"ElementaryTypeName","src":"466:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"458:73:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":31031,"keyName":"whereAddress","keyNameLocation":"501:12:77","keyType":{"id":31029,"name":"address","nodeType":"ElementaryTypeName","src":"493:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"485:45:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"hasRole","valueNameLocation":"522:7:77","valueType":{"id":31030,"name":"bool","nodeType":"ElementaryTypeName","src":"517:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}}},"visibility":"private"},{"baseFunctions":[1315],"body":{"id":31057,"nodeType":"Block","src":"697:87:77","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":31055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":31047,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31037,"src":"730:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":31048,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31039,"src":"736:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31049,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31041,"src":"745:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":31046,"name":"hasSpecificRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31166,"src":"714:15:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view returns (bool)"}},"id":31050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"714:37:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":31052,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31037,"src":"763:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":31053,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31039,"src":"769:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":31051,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31106,"src":"755:7:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":31054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"755:22:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"714:63:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31045,"id":31056,"nodeType":"Return","src":"707:70:77"}]},"documentation":{"id":31035,"nodeType":"StructuredDocumentation","src":"570:27:77","text":"@inheritdoc IAuthorizer"},"functionSelector":"9be2a884","id":31058,"implemented":true,"kind":"function","modifiers":[],"name":"canPerform","nameLocation":"611:10:77","nodeType":"FunctionDefinition","parameters":{"id":31042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31037,"mutability":"mutable","name":"role","nameLocation":"630:4:77","nodeType":"VariableDeclaration","scope":31058,"src":"622:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31036,"name":"bytes32","nodeType":"ElementaryTypeName","src":"622:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":31039,"mutability":"mutable","name":"account","nameLocation":"644:7:77","nodeType":"VariableDeclaration","scope":31058,"src":"636:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31038,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31041,"mutability":"mutable","name":"where","nameLocation":"661:5:77","nodeType":"VariableDeclaration","scope":31058,"src":"653:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31040,"name":"address","nodeType":"ElementaryTypeName","src":"653:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"621:46:77"},"returnParameters":{"id":31045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31058,"src":"691:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31043,"name":"bool","nodeType":"ElementaryTypeName","src":"691:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"690:6:77"},"scope":31167,"src":"602:182:77","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":31073,"nodeType":"Block","src":"849:45:77","statements":[{"expression":{"id":31071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":31065,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31026,"src":"859:6:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(address => bool))"}},"id":31068,"indexExpression":{"id":31066,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31060,"src":"866:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"859:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31069,"indexExpression":{"id":31067,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31062,"src":"872:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"859:21:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":31070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"883:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"859:28:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31072,"nodeType":"ExpressionStatement","src":"859:28:77"}]},"functionSelector":"2f2ff15d","id":31074,"implemented":true,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"799:9:77","nodeType":"FunctionDefinition","parameters":{"id":31063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31060,"mutability":"mutable","name":"role","nameLocation":"817:4:77","nodeType":"VariableDeclaration","scope":31074,"src":"809:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31059,"name":"bytes32","nodeType":"ElementaryTypeName","src":"809:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":31062,"mutability":"mutable","name":"account","nameLocation":"831:7:77","nodeType":"VariableDeclaration","scope":31074,"src":"823:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31061,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"808:31:77"},"returnParameters":{"id":31064,"nodeType":"ParameterList","parameters":[],"src":"849:0:77"},"scope":31167,"src":"790:104:77","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31089,"nodeType":"Block","src":"960:46:77","statements":[{"expression":{"id":31087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":31081,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31026,"src":"970:6:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(address => bool))"}},"id":31084,"indexExpression":{"id":31082,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31076,"src":"977:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"970:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31085,"indexExpression":{"id":31083,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31078,"src":"983:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"970:21:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":31086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"994:5:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"970:29:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31088,"nodeType":"ExpressionStatement","src":"970:29:77"}]},"functionSelector":"d547741f","id":31090,"implemented":true,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"909:10:77","nodeType":"FunctionDefinition","parameters":{"id":31079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31076,"mutability":"mutable","name":"role","nameLocation":"928:4:77","nodeType":"VariableDeclaration","scope":31090,"src":"920:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31075,"name":"bytes32","nodeType":"ElementaryTypeName","src":"920:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":31078,"mutability":"mutable","name":"account","nameLocation":"942:7:77","nodeType":"VariableDeclaration","scope":31090,"src":"934:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31077,"name":"address","nodeType":"ElementaryTypeName","src":"934:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"919:31:77"},"returnParameters":{"id":31080,"nodeType":"ParameterList","parameters":[],"src":"960:0:77"},"scope":31167,"src":"900:106:77","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31105,"nodeType":"Block","src":"1087:45:77","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":31099,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31026,"src":"1104:6:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(bytes32 => mapping(address => bool))"}},"id":31101,"indexExpression":{"id":31100,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31092,"src":"1111:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1104:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31103,"indexExpression":{"id":31102,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31094,"src":"1117:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1104:21:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31098,"id":31104,"nodeType":"Return","src":"1097:28:77"}]},"functionSelector":"91d14854","id":31106,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1021:7:77","nodeType":"FunctionDefinition","parameters":{"id":31095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31092,"mutability":"mutable","name":"role","nameLocation":"1037:4:77","nodeType":"VariableDeclaration","scope":31106,"src":"1029:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31091,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1029:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":31094,"mutability":"mutable","name":"account","nameLocation":"1051:7:77","nodeType":"VariableDeclaration","scope":31106,"src":"1043:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31093,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1028:31:77"},"returnParameters":{"id":31098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31106,"src":"1081:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31096,"name":"bool","nodeType":"ElementaryTypeName","src":"1081:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1080:6:77"},"scope":31167,"src":"1012:120:77","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":31125,"nodeType":"Block","src":"1263:60:77","statements":[{"expression":{"id":31123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":31115,"name":"_specificRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31034,"src":"1273:14:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"}},"id":31119,"indexExpression":{"id":31116,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31108,"src":"1288:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1273:20:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":31120,"indexExpression":{"id":31117,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31110,"src":"1294:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1273:29:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31121,"indexExpression":{"id":31118,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31112,"src":"1303:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1273:36:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":31122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1312:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1273:43:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31124,"nodeType":"ExpressionStatement","src":"1273:43:77"}]},"functionSelector":"f5407f77","id":31126,"implemented":true,"kind":"function","modifiers":[],"name":"grantSpecificRole","nameLocation":"1190:17:77","nodeType":"FunctionDefinition","parameters":{"id":31113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31108,"mutability":"mutable","name":"role","nameLocation":"1216:4:77","nodeType":"VariableDeclaration","scope":31126,"src":"1208:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1208:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":31110,"mutability":"mutable","name":"account","nameLocation":"1230:7:77","nodeType":"VariableDeclaration","scope":31126,"src":"1222:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31109,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31112,"mutability":"mutable","name":"where","nameLocation":"1247:5:77","nodeType":"VariableDeclaration","scope":31126,"src":"1239:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31111,"name":"address","nodeType":"ElementaryTypeName","src":"1239:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1207:46:77"},"returnParameters":{"id":31114,"nodeType":"ParameterList","parameters":[],"src":"1263:0:77"},"scope":31167,"src":"1181:142:77","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31145,"nodeType":"Block","src":"1412:61:77","statements":[{"expression":{"id":31143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":31135,"name":"_specificRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31034,"src":"1422:14:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"}},"id":31139,"indexExpression":{"id":31136,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31128,"src":"1437:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1422:20:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":31140,"indexExpression":{"id":31137,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31130,"src":"1443:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1422:29:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31141,"indexExpression":{"id":31138,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31132,"src":"1452:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1422:36:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":31142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1461:5:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1422:44:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31144,"nodeType":"ExpressionStatement","src":"1422:44:77"}]},"functionSelector":"686c7a1d","id":31146,"implemented":true,"kind":"function","modifiers":[],"name":"revokeSpecificRole","nameLocation":"1338:18:77","nodeType":"FunctionDefinition","parameters":{"id":31133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31128,"mutability":"mutable","name":"role","nameLocation":"1365:4:77","nodeType":"VariableDeclaration","scope":31146,"src":"1357:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31127,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1357:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":31130,"mutability":"mutable","name":"account","nameLocation":"1379:7:77","nodeType":"VariableDeclaration","scope":31146,"src":"1371:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31129,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31132,"mutability":"mutable","name":"where","nameLocation":"1396:5:77","nodeType":"VariableDeclaration","scope":31146,"src":"1388:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31131,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1356:46:77"},"returnParameters":{"id":31134,"nodeType":"ParameterList","parameters":[],"src":"1412:0:77"},"scope":31167,"src":"1329:144:77","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31165,"nodeType":"Block","src":"1577:60:77","statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":31157,"name":"_specificRoles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31034,"src":"1594:14:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$_$","typeString":"mapping(bytes32 => mapping(address => mapping(address => bool)))"}},"id":31159,"indexExpression":{"id":31158,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31148,"src":"1609:4:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1594:20:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":31161,"indexExpression":{"id":31160,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31150,"src":"1615:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1594:29:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31163,"indexExpression":{"id":31162,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31152,"src":"1624:5:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1594:36:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31156,"id":31164,"nodeType":"Return","src":"1587:43:77"}]},"functionSelector":"b7cfddf6","id":31166,"implemented":true,"kind":"function","modifiers":[],"name":"hasSpecificRole","nameLocation":"1488:15:77","nodeType":"FunctionDefinition","parameters":{"id":31153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31148,"mutability":"mutable","name":"role","nameLocation":"1512:4:77","nodeType":"VariableDeclaration","scope":31166,"src":"1504:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31147,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1504:7:77","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":31150,"mutability":"mutable","name":"account","nameLocation":"1526:7:77","nodeType":"VariableDeclaration","scope":31166,"src":"1518:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31149,"name":"address","nodeType":"ElementaryTypeName","src":"1518:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31152,"mutability":"mutable","name":"where","nameLocation":"1543:5:77","nodeType":"VariableDeclaration","scope":31166,"src":"1535:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31151,"name":"address","nodeType":"ElementaryTypeName","src":"1535:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1503:46:77"},"returnParameters":{"id":31156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31166,"src":"1571:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31154,"name":"bool","nodeType":"ElementaryTypeName","src":"1571:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1570:6:77"},"scope":31167,"src":"1479:158:77","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":31168,"src":"165:1474:77","usedErrors":[],"usedEvents":[]}],"src":"46:1594:77"},"id":77},"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol","exportedSymbols":{"AddressToUintMappingSlot":[6486],"BatchRouter":[13542],"BatchRouterMock":[31276],"IPermit2":[46102],"IVault":[2893],"IWETH":[178],"MOCK_BATCH_ROUTER_VERSION":[31184],"TransientEnumerableSet":[10319]},"id":31277,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":31169,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:78"},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":31171,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31277,"sourceUnit":46103,"src":"72:63:78","symbolAliases":[{"foreign":{"id":31170,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"81:8:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":31173,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31277,"sourceUnit":2894,"src":"137:81:78","symbolAliases":[{"foreign":{"id":31172,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"146:6:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":31175,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31277,"sourceUnit":179,"src":"219:93:78","symbolAliases":[{"foreign":{"id":31174,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"228:5:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":31177,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31277,"sourceUnit":7069,"src":"314:126:78","symbolAliases":[{"foreign":{"id":31176,"name":"AddressToUintMappingSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"327:24:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol","id":31179,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31277,"sourceUnit":10320,"src":"441:128:78","symbolAliases":[{"foreign":{"id":31178,"name":"TransientEnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"454:22:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BatchRouter.sol","file":"../BatchRouter.sol","id":31181,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31277,"sourceUnit":13543,"src":"571:49:78","symbolAliases":[{"foreign":{"id":31180,"name":"BatchRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13542,"src":"580:11:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"constant":true,"id":31184,"mutability":"constant","name":"MOCK_BATCH_ROUTER_VERSION","nameLocation":"638:25:78","nodeType":"VariableDeclaration","scope":31277,"src":"622:65:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31182,"name":"string","nodeType":"ElementaryTypeName","src":"622:6:78","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b204261746368526f75746572207631","id":31183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"666:21:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_a1a58c329204c6a3c8a4545c55336c6a42364bfe3713a147b204afa258042cd4","typeString":"literal_string \"Mock BatchRouter v1\""},"value":"Mock BatchRouter v1"},"visibility":"internal"},{"abstract":false,"baseContracts":[{"baseName":{"id":31185,"name":"BatchRouter","nameLocations":["718:11:78"],"nodeType":"IdentifierPath","referencedDeclaration":13542,"src":"718:11:78"},"id":31186,"nodeType":"InheritanceSpecifier","src":"718:11:78"}],"canonicalName":"BatchRouterMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":31276,"linearizedBaseContracts":[31276,13542,13833,18820,7108,160,9568,27688,2823,1596],"name":"BatchRouterMock","nameLocation":"699:15:78","nodeType":"ContractDefinition","nodes":[{"body":{"id":31204,"nodeType":"Block","src":"883:64:78","statements":[]},"id":31205,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":31198,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31189,"src":"834:5:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":31199,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31192,"src":"841:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":31200,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31195,"src":"847:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},{"id":31201,"name":"MOCK_BATCH_ROUTER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31184,"src":"856:25:78","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":31202,"kind":"baseConstructorSpecifier","modifierName":{"id":31197,"name":"BatchRouter","nameLocations":["822:11:78"],"nodeType":"IdentifierPath","referencedDeclaration":13542,"src":"822:11:78"},"nodeType":"ModifierInvocation","src":"822:60:78"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":31196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31189,"mutability":"mutable","name":"vault","nameLocation":"764:5:78","nodeType":"VariableDeclaration","scope":31205,"src":"757:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":31188,"nodeType":"UserDefinedTypeName","pathNode":{"id":31187,"name":"IVault","nameLocations":["757:6:78"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"757:6:78"},"referencedDeclaration":2893,"src":"757:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":31192,"mutability":"mutable","name":"weth","nameLocation":"785:4:78","nodeType":"VariableDeclaration","scope":31205,"src":"779:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":31191,"nodeType":"UserDefinedTypeName","pathNode":{"id":31190,"name":"IWETH","nameLocations":["779:5:78"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"779:5:78"},"referencedDeclaration":178,"src":"779:5:78","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":31195,"mutability":"mutable","name":"permit2","nameLocation":"808:7:78","nodeType":"VariableDeclaration","scope":31205,"src":"799:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":31194,"nodeType":"UserDefinedTypeName","pathNode":{"id":31193,"name":"IPermit2","nameLocations":["799:8:78"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"799:8:78"},"referencedDeclaration":46102,"src":"799:8:78","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"}],"src":"747:74:78"},"returnParameters":{"id":31203,"nodeType":"ParameterList","parameters":[],"src":"883:0:78"},"scope":31276,"src":"736:211:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":31224,"nodeType":"Block","src":"1029:210:78","statements":[{"assignments":[31214],"declarations":[{"constant":false,"id":31214,"mutability":"mutable","name":"enumerableSet","nameLocation":"1081:13:78","nodeType":"VariableDeclaration","scope":31224,"src":"1039:55:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":31213,"nodeType":"UserDefinedTypeName","pathNode":{"id":31212,"name":"TransientEnumerableSet.AddressSet","nameLocations":["1039:22:78","1062:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"1039:33:78"},"referencedDeclaration":9934,"src":"1039:33:78","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"id":31217,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":31215,"name":"_currentSwapTokensIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13626,"src":"1097:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":31216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1097:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1039:80:78"},{"assignments":[31219],"declarations":[{"constant":false,"id":31219,"mutability":"mutable","name":"slot","nameLocation":"1138:4:78","nodeType":"VariableDeclaration","scope":31224,"src":"1130:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1130:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":31220,"nodeType":"VariableDeclarationStatement","src":"1130:12:78"},{"AST":{"nativeSrc":"1161:50:78","nodeType":"YulBlock","src":"1161:50:78","statements":[{"nativeSrc":"1175:26:78","nodeType":"YulAssignment","src":"1175:26:78","value":{"name":"enumerableSet.slot","nativeSrc":"1183:18:78","nodeType":"YulIdentifier","src":"1183:18:78"},"variableNames":[{"name":"slot","nativeSrc":"1175:4:78","nodeType":"YulIdentifier","src":"1175:4:78"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":31214,"isOffset":false,"isSlot":true,"src":"1183:18:78","suffix":"slot","valueSize":1},{"declaration":31219,"isOffset":false,"isSlot":false,"src":"1175:4:78","valueSize":1}],"id":31221,"nodeType":"InlineAssembly","src":"1152:59:78"},{"expression":{"id":31222,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31219,"src":"1228:4:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":31209,"id":31223,"nodeType":"Return","src":"1221:11:78"}]},"functionSelector":"8c824cd9","id":31225,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetCurrentSwapTokensInSlot","nameLocation":"962:32:78","nodeType":"FunctionDefinition","parameters":{"id":31206,"nodeType":"ParameterList","parameters":[],"src":"994:2:78"},"returnParameters":{"id":31209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31225,"src":"1020:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1020:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1019:9:78"},"scope":31276,"src":"953:286:78","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":31244,"nodeType":"Block","src":"1322:211:78","statements":[{"assignments":[31234],"declarations":[{"constant":false,"id":31234,"mutability":"mutable","name":"enumerableSet","nameLocation":"1374:13:78","nodeType":"VariableDeclaration","scope":31244,"src":"1332:55:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"},"typeName":{"id":31233,"nodeType":"UserDefinedTypeName","pathNode":{"id":31232,"name":"TransientEnumerableSet.AddressSet","nameLocations":["1332:22:78","1355:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":9934,"src":"1332:33:78"},"referencedDeclaration":9934,"src":"1332:33:78","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet"}},"visibility":"internal"}],"id":31237,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":31235,"name":"_currentSwapTokensOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13638,"src":"1390:21:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_AddressSet_$9934_storage_ptr_$","typeString":"function () view returns (struct TransientEnumerableSet.AddressSet storage pointer)"}},"id":31236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1390:23:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$9934_storage_ptr","typeString":"struct TransientEnumerableSet.AddressSet storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1332:81:78"},{"assignments":[31239],"declarations":[{"constant":false,"id":31239,"mutability":"mutable","name":"slot","nameLocation":"1432:4:78","nodeType":"VariableDeclaration","scope":31244,"src":"1424:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1424:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":31240,"nodeType":"VariableDeclarationStatement","src":"1424:12:78"},{"AST":{"nativeSrc":"1455:50:78","nodeType":"YulBlock","src":"1455:50:78","statements":[{"nativeSrc":"1469:26:78","nodeType":"YulAssignment","src":"1469:26:78","value":{"name":"enumerableSet.slot","nativeSrc":"1477:18:78","nodeType":"YulIdentifier","src":"1477:18:78"},"variableNames":[{"name":"slot","nativeSrc":"1469:4:78","nodeType":"YulIdentifier","src":"1469:4:78"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":31234,"isOffset":false,"isSlot":true,"src":"1477:18:78","suffix":"slot","valueSize":1},{"declaration":31239,"isOffset":false,"isSlot":false,"src":"1469:4:78","valueSize":1}],"id":31241,"nodeType":"InlineAssembly","src":"1446:59:78"},{"expression":{"id":31242,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31239,"src":"1522:4:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":31229,"id":31243,"nodeType":"Return","src":"1515:11:78"}]},"functionSelector":"96123406","id":31245,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetCurrentSwapTokensOutSlot","nameLocation":"1254:33:78","nodeType":"FunctionDefinition","parameters":{"id":31226,"nodeType":"ParameterList","parameters":[],"src":"1287:2:78"},"returnParameters":{"id":31229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31245,"src":"1313:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1313:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1312:9:78"},"scope":31276,"src":"1245:288:78","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":31254,"nodeType":"Block","src":"1634:52:78","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":31251,"name":"_currentSwapTokenInAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"1651:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":31252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1651:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"functionReturnParameters":31250,"id":31253,"nodeType":"Return","src":"1644:35:78"}]},"functionSelector":"48bbd869","id":31255,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetCurrentSwapTokenInAmounts","nameLocation":"1548:34:78","nodeType":"FunctionDefinition","parameters":{"id":31246,"nodeType":"ParameterList","parameters":[],"src":"1582:2:78"},"returnParameters":{"id":31250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31255,"src":"1608:24:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":31248,"nodeType":"UserDefinedTypeName","pathNode":{"id":31247,"name":"AddressToUintMappingSlot","nameLocations":["1608:24:78"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"1608:24:78"},"referencedDeclaration":6486,"src":"1608:24:78","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"}],"src":"1607:26:78"},"scope":31276,"src":"1539:147:78","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":31264,"nodeType":"Block","src":"1788:53:78","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":31261,"name":"_currentSwapTokenOutAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13662,"src":"1805:27:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":31262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:29:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"functionReturnParameters":31260,"id":31263,"nodeType":"Return","src":"1798:36:78"}]},"functionSelector":"0f8fb1cc","id":31265,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetCurrentSwapTokenOutAmounts","nameLocation":"1701:35:78","nodeType":"FunctionDefinition","parameters":{"id":31256,"nodeType":"ParameterList","parameters":[],"src":"1736:2:78"},"returnParameters":{"id":31260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31265,"src":"1762:24:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":31258,"nodeType":"UserDefinedTypeName","pathNode":{"id":31257,"name":"AddressToUintMappingSlot","nameLocations":["1762:24:78"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"1762:24:78"},"referencedDeclaration":6486,"src":"1762:24:78","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"}],"src":"1761:26:78"},"scope":31276,"src":"1692:149:78","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":31274,"nodeType":"Block","src":"1936:46:78","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":31271,"name":"_settledTokenAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13674,"src":"1953:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_AddressToUintMappingSlot_$6486_$","typeString":"function () view returns (AddressToUintMappingSlot)"}},"id":31272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1953:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"functionReturnParameters":31270,"id":31273,"nodeType":"Return","src":"1946:29:78"}]},"functionSelector":"cd791ccc","id":31275,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetSettledTokenAmounts","nameLocation":"1856:28:78","nodeType":"FunctionDefinition","parameters":{"id":31266,"nodeType":"ParameterList","parameters":[],"src":"1884:2:78"},"returnParameters":{"id":31270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31275,"src":"1910:24:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"},"typeName":{"id":31268,"nodeType":"UserDefinedTypeName","pathNode":{"id":31267,"name":"AddressToUintMappingSlot","nameLocations":["1910:24:78"],"nodeType":"IdentifierPath","referencedDeclaration":6486,"src":"1910:24:78"},"referencedDeclaration":6486,"src":"1910:24:78","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_AddressToUintMappingSlot_$6486","typeString":"AddressToUintMappingSlot"}},"visibility":"internal"}],"src":"1909:26:78"},"scope":31276,"src":"1847:135:78","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":31277,"src":"690:1294:78","usedErrors":[3422,5586,5981,6498,9512,18076,18079,18082,39353,39634,39639,39642,42381],"usedEvents":[]}],"src":"46:1939:78"},"id":78},"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol","exportedSymbols":{"BufferRouter":[14288],"BufferRouterMock":[31371],"IERC4626":[38998],"IPermit2":[46102],"IVault":[2893],"IWETH":[178],"MOCK_BUFFER_ROUTER_VERSION":[31291]},"id":31372,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":31278,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:79"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":31280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31372,"sourceUnit":38999,"src":"72:75:79","symbolAliases":[{"foreign":{"id":31279,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":31282,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31372,"sourceUnit":46103,"src":"148:63:79","symbolAliases":[{"foreign":{"id":31281,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"157:8:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":31284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31372,"sourceUnit":179,"src":"213:93:79","symbolAliases":[{"foreign":{"id":31283,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"222:5:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":31286,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31372,"sourceUnit":2894,"src":"307:81:79","symbolAliases":[{"foreign":{"id":31285,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"316:6:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BufferRouter.sol","file":"../BufferRouter.sol","id":31288,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31372,"sourceUnit":14289,"src":"390:51:79","symbolAliases":[{"foreign":{"id":31287,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"399:12:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"constant":true,"id":31291,"mutability":"constant","name":"MOCK_BUFFER_ROUTER_VERSION","nameLocation":"459:26:79","nodeType":"VariableDeclaration","scope":31372,"src":"443:61:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31289,"name":"string","nodeType":"ElementaryTypeName","src":"443:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b20526f75746572207631","id":31290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"488:16:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_750944b6d19ac3b936d3601e57fe38302b01d85b9ac34ad5425c49b78664201a","typeString":"literal_string \"Mock Router v1\""},"value":"Mock Router v1"},"visibility":"internal"},{"abstract":false,"baseContracts":[{"baseName":{"id":31292,"name":"BufferRouter","nameLocations":["536:12:79"],"nodeType":"IdentifierPath","referencedDeclaration":14288,"src":"536:12:79"},"id":31293,"nodeType":"InheritanceSpecifier","src":"536:12:79"}],"canonicalName":"BufferRouterMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":31371,"linearizedBaseContracts":[31371,14288,18820,7108,160,9568,27688,2823,1677],"name":"BufferRouterMock","nameLocation":"516:16:79","nodeType":"ContractDefinition","nodes":[{"errorSelector":"f5ab33e5","id":31295,"name":"MockErrorCode","nameLocation":"561:13:79","nodeType":"ErrorDefinition","parameters":{"id":31294,"nodeType":"ParameterList","parameters":[],"src":"574:2:79"},"src":"555:22:79"},{"body":{"id":31313,"nodeType":"Block","src":"732:64:79","statements":[]},"id":31314,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":31307,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31298,"src":"682:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":31308,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31301,"src":"689:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":31309,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31304,"src":"695:7:79","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},{"id":31310,"name":"MOCK_BUFFER_ROUTER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31291,"src":"704:26:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":31311,"kind":"baseConstructorSpecifier","modifierName":{"id":31306,"name":"BufferRouter","nameLocations":["669:12:79"],"nodeType":"IdentifierPath","referencedDeclaration":14288,"src":"669:12:79"},"nodeType":"ModifierInvocation","src":"669:62:79"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":31305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31298,"mutability":"mutable","name":"vault","nameLocation":"611:5:79","nodeType":"VariableDeclaration","scope":31314,"src":"604:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":31297,"nodeType":"UserDefinedTypeName","pathNode":{"id":31296,"name":"IVault","nameLocations":["604:6:79"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"604:6:79"},"referencedDeclaration":2893,"src":"604:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":31301,"mutability":"mutable","name":"weth","nameLocation":"632:4:79","nodeType":"VariableDeclaration","scope":31314,"src":"626:10:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":31300,"nodeType":"UserDefinedTypeName","pathNode":{"id":31299,"name":"IWETH","nameLocations":["626:5:79"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"626:5:79"},"referencedDeclaration":178,"src":"626:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":31304,"mutability":"mutable","name":"permit2","nameLocation":"655:7:79","nodeType":"VariableDeclaration","scope":31314,"src":"646:16:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":31303,"nodeType":"UserDefinedTypeName","pathNode":{"id":31302,"name":"IPermit2","nameLocations":["646:8:79"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"646:8:79"},"referencedDeclaration":46102,"src":"646:8:79","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"}],"src":"594:74:79"},"returnParameters":{"id":31312,"nodeType":"ParameterList","parameters":[],"src":"732:0:79"},"scope":31371,"src":"583:213:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":31341,"nodeType":"Block","src":"876:112:79","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":31329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"956:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":31328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"948:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31327,"name":"address","nodeType":"ElementaryTypeName","src":"948:7:79","typeDescriptions":{}}},"id":31330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"948:10:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31326,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"939:8:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$38998_$","typeString":"type(contract IERC4626)"}},"id":31331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"939:20:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"hexValue":"30","id":31332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"961:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":31333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"964:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":31334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"967:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":31337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"978:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":31336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"970:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31335,"name":"address","nodeType":"ElementaryTypeName","src":"970:7:79","typeDescriptions":{}}},"id":31338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"970:10:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":31322,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"907:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_BufferRouterMock_$31371","typeString":"contract BufferRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BufferRouterMock_$31371","typeString":"contract BufferRouterMock"}],"id":31321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"899:8:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":31320,"name":"address","nodeType":"ElementaryTypeName","src":"899:8:79","stateMutability":"payable","typeDescriptions":{}}},"id":31323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"899:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":31319,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"886:12:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BufferRouter_$14288_$","typeString":"type(contract BufferRouter)"}},"id":31324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"886:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BufferRouter_$14288","typeString":"contract BufferRouter"}},"id":31325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"914:24:79","memberName":"addLiquidityToBufferHook","nodeType":"MemberAccess","referencedDeclaration":14089,"src":"886:52:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256,uint256)"}},"id":31339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"886:95:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":31340,"nodeType":"ExpressionStatement","src":"886:95:79"}]},"functionSelector":"8afe5c38","id":31342,"implemented":true,"kind":"function","modifiers":[{"id":31317,"kind":"modifierInvocation","modifierName":{"id":31316,"name":"nonReentrant","nameLocations":["863:12:79"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"863:12:79"},"nodeType":"ModifierInvocation","src":"863:12:79"}],"name":"manualReentrancyAddLiquidityToBufferHook","nameLocation":"811:40:79","nodeType":"FunctionDefinition","parameters":{"id":31315,"nodeType":"ParameterList","parameters":[],"src":"851:2:79"},"returnParameters":{"id":31318,"nodeType":"ParameterList","parameters":[],"src":"876:0:79"},"scope":31371,"src":"802:186:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31369,"nodeType":"Block","src":"1064:108:79","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":31357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1140:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":31356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1132:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31355,"name":"address","nodeType":"ElementaryTypeName","src":"1132:7:79","typeDescriptions":{}}},"id":31358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1132:10:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31354,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"1123:8:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC4626_$38998_$","typeString":"type(contract IERC4626)"}},"id":31359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1123:20:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"hexValue":"30","id":31360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":31361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1148:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":31362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1151:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":31365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1162:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":31364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1154:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31363,"name":"address","nodeType":"ElementaryTypeName","src":"1154:7:79","typeDescriptions":{}}},"id":31366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1154:10:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":31350,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1095:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_BufferRouterMock_$31371","typeString":"contract BufferRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BufferRouterMock_$31371","typeString":"contract BufferRouterMock"}],"id":31349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1087:8:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":31348,"name":"address","nodeType":"ElementaryTypeName","src":"1087:8:79","stateMutability":"payable","typeDescriptions":{}}},"id":31351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1087:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":31347,"name":"BufferRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14288,"src":"1074:12:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BufferRouter_$14288_$","typeString":"type(contract BufferRouter)"}},"id":31352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1074:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BufferRouter_$14288","typeString":"contract BufferRouter"}},"id":31353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1102:20:79","memberName":"initializeBufferHook","nodeType":"MemberAccess","referencedDeclaration":13982,"src":"1074:48:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256)"}},"id":31367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1074:91:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":31368,"nodeType":"ExpressionStatement","src":"1074:91:79"}]},"functionSelector":"bc48e97f","id":31370,"implemented":true,"kind":"function","modifiers":[{"id":31345,"kind":"modifierInvocation","modifierName":{"id":31344,"name":"nonReentrant","nameLocations":["1051:12:79"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"1051:12:79"},"nodeType":"ModifierInvocation","src":"1051:12:79"}],"name":"manualReentrancyInitializeBufferHook","nameLocation":"1003:36:79","nodeType":"FunctionDefinition","parameters":{"id":31343,"nodeType":"ParameterList","parameters":[],"src":"1039:2:79"},"returnParameters":{"id":31346,"nodeType":"ParameterList","parameters":[],"src":"1064:0:79"},"scope":31371,"src":"994:178:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":31372,"src":"507:667:79","usedErrors":[3422,5586,5981,9512,18076,18079,18082,31295,39353,39634,39639,39642,42381],"usedEvents":[]}],"src":"46:1129:79"},"id":79},"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol","exportedSymbols":{"IERC20":[39274],"InputHelpers":[5819],"InputHelpersMock":[31490],"TokenConfig":[4476]},"id":31491,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":31373,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:80"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":31375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31491,"sourceUnit":39275,"src":"72:72:80","symbolAliases":[{"foreign":{"id":31374,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":31377,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31491,"sourceUnit":4654,"src":"146:90:80","symbolAliases":[{"foreign":{"id":31376,"name":"TokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4476,"src":"155:11:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","id":31379,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":31491,"sourceUnit":5820,"src":"238:99:80","symbolAliases":[{"foreign":{"id":31378,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"247:12:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"InputHelpersMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":31490,"linearizedBaseContracts":[31490],"name":"InputHelpersMock","nameLocation":"348:16:80","nodeType":"ContractDefinition","nodes":[{"body":{"id":31395,"nodeType":"Block","src":"455:55:80","statements":[{"expression":{"arguments":[{"id":31392,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31383,"src":"496:6:80","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"id":31390,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"472:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":31391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"485:10:80","memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":5770,"src":"472:23:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) pure returns (contract IERC20[] memory)"}},"id":31393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"472:31:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":31389,"id":31394,"nodeType":"Return","src":"465:38:80"}]},"functionSelector":"136deb1c","id":31396,"implemented":true,"kind":"function","modifiers":[],"name":"sortTokens","nameLocation":"380:10:80","nodeType":"FunctionDefinition","parameters":{"id":31384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31383,"mutability":"mutable","name":"tokens","nameLocation":"407:6:80","nodeType":"VariableDeclaration","scope":31396,"src":"391:22:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":31381,"nodeType":"UserDefinedTypeName","pathNode":{"id":31380,"name":"IERC20","nameLocations":["391:6:80"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"391:6:80"},"referencedDeclaration":39274,"src":"391:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":31382,"nodeType":"ArrayTypeName","src":"391:8:80","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"390:24:80"},"returnParameters":{"id":31389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31396,"src":"438:15:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":31386,"nodeType":"UserDefinedTypeName","pathNode":{"id":31385,"name":"IERC20","nameLocations":["438:6:80"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"438:6:80"},"referencedDeclaration":39274,"src":"438:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":31387,"nodeType":"ArrayTypeName","src":"438:8:80","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"437:17:80"},"scope":31490,"src":"371:139:80","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":31409,"nodeType":"Block","src":"582:56:80","statements":[{"expression":{"arguments":[{"id":31406,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31400,"src":"624:6:80","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"id":31403,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"592:12:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":31405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"605:18:80","memberName":"ensureSortedTokens","nodeType":"MemberAccess","referencedDeclaration":5818,"src":"592:31:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory) pure"}},"id":31407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"592:39:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31408,"nodeType":"ExpressionStatement","src":"592:39:80"}]},"functionSelector":"a3aef0b8","id":31410,"implemented":true,"kind":"function","modifiers":[],"name":"ensureSortedTokens","nameLocation":"525:18:80","nodeType":"FunctionDefinition","parameters":{"id":31401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31400,"mutability":"mutable","name":"tokens","nameLocation":"560:6:80","nodeType":"VariableDeclaration","scope":31410,"src":"544:22:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":31398,"nodeType":"UserDefinedTypeName","pathNode":{"id":31397,"name":"IERC20","nameLocations":["544:6:80"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"544:6:80"},"referencedDeclaration":39274,"src":"544:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":31399,"nodeType":"ArrayTypeName","src":"544:8:80","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"543:24:80"},"returnParameters":{"id":31402,"nodeType":"ParameterList","parameters":[],"src":"582:0:80"},"scope":31490,"src":"516:122:80","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":31488,"nodeType":"Block","src":"746:433:80","statements":[{"body":{"id":31484,"nodeType":"Block","src":"809:335:80","statements":[{"body":{"id":31482,"nodeType":"Block","src":"880:254:80","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":31459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":31449,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"902:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31451,"indexExpression":{"id":31450,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"914:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"902:14:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":31452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"917:5:80","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"902:20:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"baseExpression":{"id":31453,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"925:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31457,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31454,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"937:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":31455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:1:80","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"937:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"925:18:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":31458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"944:5:80","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"925:24:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"902:47:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31481,"nodeType":"IfStatement","src":"898:222:80","trueBody":{"id":31480,"nodeType":"Block","src":"951:169:80","statements":[{"expression":{"id":31478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":31460,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"1027:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31462,"indexExpression":{"id":31461,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"1039:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1027:14:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},{"baseExpression":{"id":31463,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"1043:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31467,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31464,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"1055:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":31465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1059:1:80","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1055:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1043:18:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}}],"id":31468,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1026:36:80","typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_TokenConfig_$4476_memory_ptr_$_t_struct$_TokenConfig_$4476_memory_ptr_$","typeString":"tuple(struct TokenConfig memory,struct TokenConfig memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"baseExpression":{"id":31469,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"1066:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31473,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31470,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"1078:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":31471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1082:1:80","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1078:5:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1066:18:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},{"baseExpression":{"id":31474,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"1086:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31476,"indexExpression":{"id":31475,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"1098:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1086:14:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}}],"id":31477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1065:36:80","typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_TokenConfig_$4476_memory_ptr_$_t_struct$_TokenConfig_$4476_memory_ptr_$","typeString":"tuple(struct TokenConfig memory,struct TokenConfig memory)"}},"src":"1026:75:80","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31479,"nodeType":"ExpressionStatement","src":"1026:75:80"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31438,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"843:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":31439,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"847:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"859:6:80","memberName":"length","nodeType":"MemberAccess","src":"847:18:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":31441,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31422,"src":"868:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"847:22:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":31443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"872:1:80","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"847:26:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"843:30:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31483,"initializationExpression":{"assignments":[31435],"declarations":[{"constant":false,"id":31435,"mutability":"mutable","name":"j","nameLocation":"836:1:80","nodeType":"VariableDeclaration","scope":31483,"src":"828:9:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31434,"name":"uint256","nodeType":"ElementaryTypeName","src":"828:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":31437,"initialValue":{"hexValue":"30","id":31436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"840:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"828:13:80"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":31447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"875:3:80","subExpression":{"id":31446,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31435,"src":"875:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":31448,"nodeType":"ExpressionStatement","src":"875:3:80"},"nodeType":"ForStatement","src":"823:311:80"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":31425,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31422,"src":"776:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":31429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":31426,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"780:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":31427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"792:6:80","memberName":"length","nodeType":"MemberAccess","src":"780:18:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":31428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"801:1:80","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"780:22:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"776:26:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31485,"initializationExpression":{"assignments":[31422],"declarations":[{"constant":false,"id":31422,"mutability":"mutable","name":"i","nameLocation":"769:1:80","nodeType":"VariableDeclaration","scope":31485,"src":"761:9:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31421,"name":"uint256","nodeType":"ElementaryTypeName","src":"761:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":31424,"initialValue":{"hexValue":"30","id":31423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"773:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"761:13:80"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":31432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"804:3:80","subExpression":{"id":31431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31422,"src":"806:1:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":31433,"nodeType":"ExpressionStatement","src":"804:3:80"},"nodeType":"ForStatement","src":"756:388:80"},{"expression":{"id":31486,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31414,"src":"1161:11:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"functionReturnParameters":31420,"id":31487,"nodeType":"Return","src":"1154:18:80"}]},"functionSelector":"bb4ad7d5","id":31489,"implemented":true,"kind":"function","modifiers":[],"name":"sortTokenConfig","nameLocation":"653:15:80","nodeType":"FunctionDefinition","parameters":{"id":31415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31414,"mutability":"mutable","name":"tokenConfig","nameLocation":"690:11:80","nodeType":"VariableDeclaration","scope":31489,"src":"669:32:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31412,"nodeType":"UserDefinedTypeName","pathNode":{"id":31411,"name":"TokenConfig","nameLocations":["669:11:80"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"669:11:80"},"referencedDeclaration":4476,"src":"669:11:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31413,"nodeType":"ArrayTypeName","src":"669:13:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"668:34:80"},"returnParameters":{"id":31420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31489,"src":"724:20:80","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31417,"nodeType":"UserDefinedTypeName","pathNode":{"id":31416,"name":"TokenConfig","nameLocations":["724:11:80"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"724:11:80"},"referencedDeclaration":4476,"src":"724:11:80","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31418,"nodeType":"ArrayTypeName","src":"724:13:80","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"723:22:80"},"scope":31490,"src":"644:535:80","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":31491,"src":"339:842:80","usedErrors":[5595],"usedEvents":[]}],"src":"46:1136:80"},"id":80},"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"Create2":[39982],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"FactoryWidePauseWindow":[5577],"HookFlags":[4409],"HooksConfig":[4433],"IBasePoolFactory":[1440],"IERC20":[39274],"IERC4626":[38998],"IRateProvider":[150],"IVault":[2893],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolFactoryMock":[32017],"PoolMock":[33909],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SingletonAuthentication":[18926],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":32018,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":31492,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:81"},{"absolutePath":"@openzeppelin/contracts/utils/Create2.sol","file":"@openzeppelin/contracts/utils/Create2.sol","id":31494,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":32018,"sourceUnit":39983,"src":"72:68:81","symbolAliases":[{"foreign":{"id":31493,"name":"Create2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39982,"src":"81:7:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol","id":31496,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":32018,"sourceUnit":1441,"src":"142:101:81","symbolAliases":[{"foreign":{"id":31495,"name":"IBasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"151:16:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":31498,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":32018,"sourceUnit":2894,"src":"244:81:81","symbolAliases":[{"foreign":{"id":31497,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"253:6:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":31499,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":32018,"sourceUnit":4654,"src":"326:69:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol","id":31501,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":32018,"sourceUnit":5578,"src":"397:119:81","symbolAliases":[{"foreign":{"id":31500,"name":"FactoryWidePauseWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"406:22:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol","file":"../SingletonAuthentication.sol","id":31503,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":32018,"sourceUnit":18927,"src":"518:73:81","symbolAliases":[{"foreign":{"id":31502,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18926,"src":"527:23:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/PoolMock.sol","file":"./PoolMock.sol","id":31505,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":32018,"sourceUnit":33910,"src":"592:42:81","symbolAliases":[{"foreign":{"id":31504,"name":"PoolMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33909,"src":"601:8:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":31506,"name":"IBasePoolFactory","nameLocations":["664:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":1440,"src":"664:16:81"},"id":31507,"nodeType":"InheritanceSpecifier","src":"664:16:81"},{"baseName":{"id":31508,"name":"SingletonAuthentication","nameLocations":["682:23:81"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"682:23:81"},"id":31509,"nodeType":"InheritanceSpecifier","src":"682:23:81"},{"baseName":{"id":31510,"name":"FactoryWidePauseWindow","nameLocations":["707:22:81"],"nodeType":"IdentifierPath","referencedDeclaration":5577,"src":"707:22:81"},"id":31511,"nodeType":"InheritanceSpecifier","src":"707:22:81"}],"canonicalName":"PoolFactoryMock","contractDependencies":[33909],"contractKind":"contract","fullyImplemented":true,"id":32017,"linearizedBaseContracts":[32017,5577,18926,5327,1440,130],"name":"PoolFactoryMock","nameLocation":"645:15:81","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":31514,"mutability":"constant","name":"DEFAULT_SWAP_FEE","nameLocation":"761:16:81","nodeType":"VariableDeclaration","scope":32017,"src":"736:45:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31512,"name":"uint256","nodeType":"ElementaryTypeName","src":"736:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":31513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"780:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":false,"id":31517,"mutability":"immutable","name":"_vault","nameLocation":"813:6:81","nodeType":"VariableDeclaration","scope":32017,"src":"788:31:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":31516,"nodeType":"UserDefinedTypeName","pathNode":{"id":31515,"name":"IVault","nameLocations":["788:6:81"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"788:6:81"},"referencedDeclaration":2893,"src":"788:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":31521,"mutability":"mutable","name":"_isPoolFromFactory","nameLocation":"941:18:81","nodeType":"VariableDeclaration","scope":32017,"src":"889:70:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":31520,"keyName":"pool","keyNameLocation":"905:4:81","keyType":{"id":31518,"name":"address","nodeType":"ElementaryTypeName","src":"897:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"889:43:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"isFromFactory","valueNameLocation":"918:13:81","valueType":{"id":31519,"name":"bool","nodeType":"ElementaryTypeName","src":"913:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":31523,"mutability":"mutable","name":"_disabled","nameLocation":"978:9:81","nodeType":"VariableDeclaration","scope":32017,"src":"965:22:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31522,"name":"bool","nodeType":"ElementaryTypeName","src":"965:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":31541,"nodeType":"Block","src":"1145:31:81","statements":[{"expression":{"id":31539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":31537,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"1155:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31538,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31526,"src":"1164:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"src":"1155:14:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31540,"nodeType":"ExpressionStatement","src":"1155:14:81"}]},"id":31542,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":31531,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31526,"src":"1094:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":31532,"kind":"baseConstructorSpecifier","modifierName":{"id":31530,"name":"SingletonAuthentication","nameLocations":["1070:23:81"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"1070:23:81"},"nodeType":"ModifierInvocation","src":"1070:30:81"},{"arguments":[{"id":31534,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31528,"src":"1124:19:81","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":31535,"kind":"baseConstructorSpecifier","modifierName":{"id":31533,"name":"FactoryWidePauseWindow","nameLocations":["1101:22:81"],"nodeType":"IdentifierPath","referencedDeclaration":5577,"src":"1101:22:81"},"nodeType":"ModifierInvocation","src":"1101:43:81"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":31529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31526,"mutability":"mutable","name":"vault","nameLocation":"1022:5:81","nodeType":"VariableDeclaration","scope":31542,"src":"1015:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":31525,"nodeType":"UserDefinedTypeName","pathNode":{"id":31524,"name":"IVault","nameLocations":["1015:6:81"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1015:6:81"},"referencedDeclaration":2893,"src":"1015:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":31528,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"1044:19:81","nodeType":"VariableDeclaration","scope":31542,"src":"1037:26:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":31527,"name":"uint32","nodeType":"ElementaryTypeName","src":"1037:6:81","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1005:64:81"},"returnParameters":{"id":31536,"nodeType":"ParameterList","parameters":[],"src":"1145:0:81"},"scope":32017,"src":"994:182:81","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":31579,"nodeType":"Block","src":"1271:172:81","statements":[{"assignments":[31553],"declarations":[{"constant":false,"id":31553,"mutability":"mutable","name":"newPool","nameLocation":"1290:7:81","nodeType":"VariableDeclaration","scope":31579,"src":"1281:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"},"typeName":{"id":31552,"nodeType":"UserDefinedTypeName","pathNode":{"id":31551,"name":"PoolMock","nameLocations":["1281:8:81"],"nodeType":"IdentifierPath","referencedDeclaration":33909,"src":"1281:8:81"},"referencedDeclaration":33909,"src":"1281:8:81","typeDescriptions":{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}},"visibility":"internal"}],"id":31566,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":31560,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"1328:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":31559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1320:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31558,"name":"address","nodeType":"ElementaryTypeName","src":"1320:7:81","typeDescriptions":{}}},"id":31561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1320:15:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31557,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"1313:6:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":31562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1313:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":31563,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31544,"src":"1338:4:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":31564,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31546,"src":"1344:6:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":31556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1300:12:81","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IVault_$2893_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_PoolMock_$33909_$","typeString":"function (contract IVault,string memory,string memory) returns (contract PoolMock)"},"typeName":{"id":31555,"nodeType":"UserDefinedTypeName","pathNode":{"id":31554,"name":"PoolMock","nameLocations":["1304:8:81"],"nodeType":"IdentifierPath","referencedDeclaration":33909,"src":"1304:8:81"},"referencedDeclaration":33909,"src":"1304:8:81","typeDescriptions":{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}}},"id":31565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1300:51:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}},"nodeType":"VariableDeclarationStatement","src":"1281:70:81"},{"expression":{"arguments":[{"arguments":[{"id":31570,"name":"newPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31553,"src":"1394:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}],"id":31569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1386:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31568,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:81","typeDescriptions":{}}},"id":31571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1386:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31567,"name":"_registerPoolWithFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31986,"src":"1361:24:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":31572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1361:42:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31573,"nodeType":"ExpressionStatement","src":"1361:42:81"},{"expression":{"arguments":[{"id":31576,"name":"newPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31553,"src":"1428:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}],"id":31575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1420:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31574,"name":"address","nodeType":"ElementaryTypeName","src":"1420:7:81","typeDescriptions":{}}},"id":31577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":31550,"id":31578,"nodeType":"Return","src":"1413:23:81"}]},"functionSelector":"5ea81a32","id":31580,"implemented":true,"kind":"function","modifiers":[],"name":"createPool","nameLocation":"1191:10:81","nodeType":"FunctionDefinition","parameters":{"id":31547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31544,"mutability":"mutable","name":"name","nameLocation":"1216:4:81","nodeType":"VariableDeclaration","scope":31580,"src":"1202:18:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31543,"name":"string","nodeType":"ElementaryTypeName","src":"1202:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":31546,"mutability":"mutable","name":"symbol","nameLocation":"1236:6:81","nodeType":"VariableDeclaration","scope":31580,"src":"1222:20:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":31545,"name":"string","nodeType":"ElementaryTypeName","src":"1222:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1201:42:81"},"returnParameters":{"id":31550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31580,"src":"1262:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31548,"name":"address","nodeType":"ElementaryTypeName","src":"1262:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1261:9:81"},"scope":32017,"src":"1182:261:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31611,"nodeType":"Block","src":"1532:345:81","statements":[{"assignments":[31591],"declarations":[{"constant":false,"id":31591,"mutability":"mutable","name":"roleAccounts","nameLocation":"1566:12:81","nodeType":"VariableDeclaration","scope":31611,"src":"1542:36:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":31590,"nodeType":"UserDefinedTypeName","pathNode":{"id":31589,"name":"PoolRoleAccounts","nameLocations":["1542:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"1542:16:81"},"referencedDeclaration":4459,"src":"1542:16:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"id":31592,"nodeType":"VariableDeclarationStatement","src":"1542:36:81"},{"expression":{"arguments":[{"id":31596,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31582,"src":"1622:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31597,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31586,"src":"1640:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":31598,"name":"DEFAULT_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31514,"src":"1665:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31599,"name":"getNewPoolPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"1695:28:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":31600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1695:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":31601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1739:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":31602,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31591,"src":"1758:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"arguments":[{"hexValue":"30","id":31605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1792:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":31604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1784:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31603,"name":"address","nodeType":"ElementaryTypeName","src":"1784:7:81","typeDescriptions":{}}},"id":31606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1784:10:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31607,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31848,"src":"1828:30:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":31608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":31593,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"1589:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:12:81","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"1589:19:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":31609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1589:281:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31610,"nodeType":"ExpressionStatement","src":"1589:281:81"}]},"functionSelector":"675d6050","id":31612,"implemented":true,"kind":"function","modifiers":[],"name":"registerTestPool","nameLocation":"1458:16:81","nodeType":"FunctionDefinition","parameters":{"id":31587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31582,"mutability":"mutable","name":"pool","nameLocation":"1483:4:81","nodeType":"VariableDeclaration","scope":31612,"src":"1475:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31581,"name":"address","nodeType":"ElementaryTypeName","src":"1475:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31586,"mutability":"mutable","name":"tokenConfig","nameLocation":"1510:11:81","nodeType":"VariableDeclaration","scope":31612,"src":"1489:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31584,"nodeType":"UserDefinedTypeName","pathNode":{"id":31583,"name":"TokenConfig","nameLocations":["1489:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"1489:11:81"},"referencedDeclaration":4476,"src":"1489:11:81","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31585,"nodeType":"ArrayTypeName","src":"1489:13:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"1474:48:81"},"returnParameters":{"id":31588,"nodeType":"ParameterList","parameters":[],"src":"1532:0:81"},"scope":32017,"src":"1449:428:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31642,"nodeType":"Block","src":"1993:332:81","statements":[{"assignments":[31625],"declarations":[{"constant":false,"id":31625,"mutability":"mutable","name":"roleAccounts","nameLocation":"2027:12:81","nodeType":"VariableDeclaration","scope":31642,"src":"2003:36:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":31624,"nodeType":"UserDefinedTypeName","pathNode":{"id":31623,"name":"PoolRoleAccounts","nameLocations":["2003:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"2003:16:81"},"referencedDeclaration":4459,"src":"2003:16:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"id":31626,"nodeType":"VariableDeclarationStatement","src":"2003:36:81"},{"expression":{"arguments":[{"id":31630,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31614,"src":"2083:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31631,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31618,"src":"2101:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":31632,"name":"DEFAULT_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31514,"src":"2126:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31633,"name":"getNewPoolPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"2156:28:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":31634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2156:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":31635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2200:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":31636,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31625,"src":"2219:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":31637,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31620,"src":"2245:17:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31638,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31848,"src":"2276:30:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":31639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2276:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":31627,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"2050:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2057:12:81","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"2050:19:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":31640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2050:268:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31641,"nodeType":"ExpressionStatement","src":"2050:268:81"}]},"functionSelector":"c7c90a51","id":31643,"implemented":true,"kind":"function","modifiers":[],"name":"registerTestPool","nameLocation":"1892:16:81","nodeType":"FunctionDefinition","parameters":{"id":31621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31614,"mutability":"mutable","name":"pool","nameLocation":"1917:4:81","nodeType":"VariableDeclaration","scope":31643,"src":"1909:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31613,"name":"address","nodeType":"ElementaryTypeName","src":"1909:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31618,"mutability":"mutable","name":"tokenConfig","nameLocation":"1944:11:81","nodeType":"VariableDeclaration","scope":31643,"src":"1923:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31616,"nodeType":"UserDefinedTypeName","pathNode":{"id":31615,"name":"TokenConfig","nameLocations":["1923:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"1923:11:81"},"referencedDeclaration":4476,"src":"1923:11:81","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31617,"nodeType":"ArrayTypeName","src":"1923:13:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":31620,"mutability":"mutable","name":"poolHooksContract","nameLocation":"1965:17:81","nodeType":"VariableDeclaration","scope":31643,"src":"1957:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31619,"name":"address","nodeType":"ElementaryTypeName","src":"1957:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1908:75:81"},"returnParameters":{"id":31622,"nodeType":"ParameterList","parameters":[],"src":"1993:0:81"},"scope":32017,"src":"1883:442:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31681,"nodeType":"Block","src":"2500:380:81","statements":[{"assignments":[31658],"declarations":[{"constant":false,"id":31658,"mutability":"mutable","name":"roleAccounts","nameLocation":"2534:12:81","nodeType":"VariableDeclaration","scope":31681,"src":"2510:36:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":31657,"nodeType":"UserDefinedTypeName","pathNode":{"id":31656,"name":"PoolRoleAccounts","nameLocations":["2510:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"2510:16:81"},"referencedDeclaration":4459,"src":"2510:16:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"id":31659,"nodeType":"VariableDeclarationStatement","src":"2510:36:81"},{"expression":{"id":31664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":31660,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31658,"src":"2556:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},"id":31662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2569:11:81","memberName":"poolCreator","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"2556:24:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":31663,"name":"poolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31653,"src":"2583:11:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2556:38:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":31665,"nodeType":"ExpressionStatement","src":"2556:38:81"},{"expression":{"arguments":[{"id":31669,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31645,"src":"2638:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31670,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31649,"src":"2656:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":31671,"name":"DEFAULT_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31514,"src":"2681:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31672,"name":"getNewPoolPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"2711:28:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":31673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2711:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":31674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2755:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":31675,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31658,"src":"2774:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":31676,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31651,"src":"2800:17:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31677,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31848,"src":"2831:30:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":31678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":31666,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"2605:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2612:12:81","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"2605:19:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":31679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2605:268:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31680,"nodeType":"ExpressionStatement","src":"2605:268:81"}]},"functionSelector":"a7a4b711","id":31682,"implemented":true,"kind":"function","modifiers":[],"name":"registerTestPool","nameLocation":"2340:16:81","nodeType":"FunctionDefinition","parameters":{"id":31654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31645,"mutability":"mutable","name":"pool","nameLocation":"2374:4:81","nodeType":"VariableDeclaration","scope":31682,"src":"2366:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31644,"name":"address","nodeType":"ElementaryTypeName","src":"2366:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31649,"mutability":"mutable","name":"tokenConfig","nameLocation":"2409:11:81","nodeType":"VariableDeclaration","scope":31682,"src":"2388:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31647,"nodeType":"UserDefinedTypeName","pathNode":{"id":31646,"name":"TokenConfig","nameLocations":["2388:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"2388:11:81"},"referencedDeclaration":4476,"src":"2388:11:81","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31648,"nodeType":"ArrayTypeName","src":"2388:13:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":31651,"mutability":"mutable","name":"poolHooksContract","nameLocation":"2438:17:81","nodeType":"VariableDeclaration","scope":31682,"src":"2430:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31650,"name":"address","nodeType":"ElementaryTypeName","src":"2430:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31653,"mutability":"mutable","name":"poolCreator","nameLocation":"2473:11:81","nodeType":"VariableDeclaration","scope":31682,"src":"2465:19:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31652,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2356:134:81"},"returnParameters":{"id":31655,"nodeType":"ParameterList","parameters":[],"src":"2500:0:81"},"scope":32017,"src":"2331:549:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31722,"nodeType":"Block","src":"3172:303:81","statements":[{"expression":{"arguments":[{"id":31705,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31684,"src":"3215:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31706,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31688,"src":"3233:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":31707,"name":"swapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31690,"src":"3258:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":31714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":31710,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3286:5:81","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":31711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3292:9:81","memberName":"timestamp","nodeType":"MemberAccess","src":"3286:15:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":31709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3279:6:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":31708,"name":"uint32","nodeType":"ElementaryTypeName","src":"3279:6:81","typeDescriptions":{}}},"id":31712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3279:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":31713,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31692,"src":"3305:19:81","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3279:45:81","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":31715,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31694,"src":"3338:17:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":31716,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31697,"src":"3369:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":31717,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31699,"src":"3395:17:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31718,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31848,"src":"3426:30:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":31719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3426:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":31702,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"3182:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3189:12:81","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"3182:19:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":31720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3182:286:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31721,"nodeType":"ExpressionStatement","src":"3182:286:81"}]},"functionSelector":"7a0b2e8d","id":31723,"implemented":true,"kind":"function","modifiers":[],"name":"registerGeneralTestPool","nameLocation":"2895:23:81","nodeType":"FunctionDefinition","parameters":{"id":31700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31684,"mutability":"mutable","name":"pool","nameLocation":"2936:4:81","nodeType":"VariableDeclaration","scope":31723,"src":"2928:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31683,"name":"address","nodeType":"ElementaryTypeName","src":"2928:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31688,"mutability":"mutable","name":"tokenConfig","nameLocation":"2971:11:81","nodeType":"VariableDeclaration","scope":31723,"src":"2950:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31686,"nodeType":"UserDefinedTypeName","pathNode":{"id":31685,"name":"TokenConfig","nameLocations":["2950:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"2950:11:81"},"referencedDeclaration":4476,"src":"2950:11:81","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31687,"nodeType":"ArrayTypeName","src":"2950:13:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":31690,"mutability":"mutable","name":"swapFee","nameLocation":"3000:7:81","nodeType":"VariableDeclaration","scope":31723,"src":"2992:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31689,"name":"uint256","nodeType":"ElementaryTypeName","src":"2992:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31692,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"3024:19:81","nodeType":"VariableDeclaration","scope":31723,"src":"3017:26:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":31691,"name":"uint32","nodeType":"ElementaryTypeName","src":"3017:6:81","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":31694,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"3058:17:81","nodeType":"VariableDeclaration","scope":31723,"src":"3053:22:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31693,"name":"bool","nodeType":"ElementaryTypeName","src":"3053:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":31697,"mutability":"mutable","name":"roleAccounts","nameLocation":"3109:12:81","nodeType":"VariableDeclaration","scope":31723,"src":"3085:36:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":31696,"nodeType":"UserDefinedTypeName","pathNode":{"id":31695,"name":"PoolRoleAccounts","nameLocations":["3085:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"3085:16:81"},"referencedDeclaration":4459,"src":"3085:16:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":31699,"mutability":"mutable","name":"poolHooksContract","nameLocation":"3139:17:81","nodeType":"VariableDeclaration","scope":31723,"src":"3131:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31698,"name":"address","nodeType":"ElementaryTypeName","src":"3131:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2918:244:81"},"returnParameters":{"id":31701,"nodeType":"ParameterList","parameters":[],"src":"3172:0:81"},"scope":32017,"src":"2886:589:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31754,"nodeType":"Block","src":"3721:272:81","statements":[{"expression":{"arguments":[{"id":31743,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31725,"src":"3764:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31744,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31729,"src":"3782:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":31745,"name":"DEFAULT_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31514,"src":"3807:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31746,"name":"getNewPoolPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"3837:28:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":31747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3837:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":31748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3881:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":31749,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31732,"src":"3900:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":31750,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31734,"src":"3926:17:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31751,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31737,"src":"3957:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}],"expression":{"id":31740,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"3731:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3738:12:81","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"3731:19:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":31752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3731:255:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31753,"nodeType":"ExpressionStatement","src":"3731:255:81"}]},"functionSelector":"d396a666","id":31755,"implemented":true,"kind":"function","modifiers":[],"name":"registerPool","nameLocation":"3490:12:81","nodeType":"FunctionDefinition","parameters":{"id":31738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31725,"mutability":"mutable","name":"pool","nameLocation":"3520:4:81","nodeType":"VariableDeclaration","scope":31755,"src":"3512:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31724,"name":"address","nodeType":"ElementaryTypeName","src":"3512:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31729,"mutability":"mutable","name":"tokenConfig","nameLocation":"3555:11:81","nodeType":"VariableDeclaration","scope":31755,"src":"3534:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31727,"nodeType":"UserDefinedTypeName","pathNode":{"id":31726,"name":"TokenConfig","nameLocations":["3534:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"3534:11:81"},"referencedDeclaration":4476,"src":"3534:11:81","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31728,"nodeType":"ArrayTypeName","src":"3534:13:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":31732,"mutability":"mutable","name":"roleAccounts","nameLocation":"3600:12:81","nodeType":"VariableDeclaration","scope":31755,"src":"3576:36:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":31731,"nodeType":"UserDefinedTypeName","pathNode":{"id":31730,"name":"PoolRoleAccounts","nameLocations":["3576:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"3576:16:81"},"referencedDeclaration":4459,"src":"3576:16:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":31734,"mutability":"mutable","name":"poolHooksContract","nameLocation":"3630:17:81","nodeType":"VariableDeclaration","scope":31755,"src":"3622:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31733,"name":"address","nodeType":"ElementaryTypeName","src":"3622:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31737,"mutability":"mutable","name":"liquidityManagement","nameLocation":"3686:19:81","nodeType":"VariableDeclaration","scope":31755,"src":"3657:48:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":31736,"nodeType":"UserDefinedTypeName","pathNode":{"id":31735,"name":"LiquidityManagement","nameLocations":["3657:19:81"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"3657:19:81"},"referencedDeclaration":4362,"src":"3657:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"3502:209:81"},"returnParameters":{"id":31739,"nodeType":"ParameterList","parameters":[],"src":"3721:0:81"},"scope":32017,"src":"3481:512:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31789,"nodeType":"Block","src":"4239:320:81","statements":[{"assignments":[31773],"declarations":[{"constant":false,"id":31773,"mutability":"mutable","name":"roleAccounts","nameLocation":"4273:12:81","nodeType":"VariableDeclaration","scope":31789,"src":"4249:36:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":31772,"nodeType":"UserDefinedTypeName","pathNode":{"id":31771,"name":"PoolRoleAccounts","nameLocations":["4249:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"4249:16:81"},"referencedDeclaration":4459,"src":"4249:16:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"id":31774,"nodeType":"VariableDeclarationStatement","src":"4249:36:81"},{"expression":{"arguments":[{"id":31778,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31757,"src":"4329:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31779,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31761,"src":"4347:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":31780,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31763,"src":"4372:17:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":31781,"name":"getNewPoolPauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5576,"src":"4403:28:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":31782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4403:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":31783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4447:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":31784,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31773,"src":"4466:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":31785,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31765,"src":"4492:17:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31786,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31768,"src":"4523:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}],"expression":{"id":31775,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"4296:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4303:12:81","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"4296:19:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":31787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4296:256:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31788,"nodeType":"ExpressionStatement","src":"4296:256:81"}]},"functionSelector":"ed05beaf","id":31790,"implemented":true,"kind":"function","modifiers":[],"name":"registerPoolWithSwapFee","nameLocation":"4008:23:81","nodeType":"FunctionDefinition","parameters":{"id":31769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31757,"mutability":"mutable","name":"pool","nameLocation":"4049:4:81","nodeType":"VariableDeclaration","scope":31790,"src":"4041:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31756,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31761,"mutability":"mutable","name":"tokenConfig","nameLocation":"4084:11:81","nodeType":"VariableDeclaration","scope":31790,"src":"4063:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31759,"nodeType":"UserDefinedTypeName","pathNode":{"id":31758,"name":"TokenConfig","nameLocations":["4063:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"4063:11:81"},"referencedDeclaration":4476,"src":"4063:11:81","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31760,"nodeType":"ArrayTypeName","src":"4063:13:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":31763,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"4113:17:81","nodeType":"VariableDeclaration","scope":31790,"src":"4105:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31762,"name":"uint256","nodeType":"ElementaryTypeName","src":"4105:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31765,"mutability":"mutable","name":"poolHooksContract","nameLocation":"4148:17:81","nodeType":"VariableDeclaration","scope":31790,"src":"4140:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31764,"name":"address","nodeType":"ElementaryTypeName","src":"4140:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31768,"mutability":"mutable","name":"liquidityManagement","nameLocation":"4204:19:81","nodeType":"VariableDeclaration","scope":31790,"src":"4175:48:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":31767,"nodeType":"UserDefinedTypeName","pathNode":{"id":31766,"name":"LiquidityManagement","nameLocations":["4175:19:81"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"4175:19:81"},"referencedDeclaration":4362,"src":"4175:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"4031:198:81"},"returnParameters":{"id":31770,"nodeType":"ParameterList","parameters":[],"src":"4239:0:81"},"scope":32017,"src":"3999:560:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31822,"nodeType":"Block","src":"4907:251:81","statements":[{"expression":{"arguments":[{"id":31812,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31792,"src":"4950:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31813,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31796,"src":"4968:11:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":31814,"name":"DEFAULT_SWAP_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31514,"src":"4993:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":31815,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31798,"src":"5023:9:81","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"66616c7365","id":31816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5046:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":31817,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31801,"src":"5065:12:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":31818,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31803,"src":"5091:17:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":31819,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31806,"src":"5122:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}],"expression":{"id":31809,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31517,"src":"4917:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":31811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4924:12:81","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"4917:19:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":31820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4917:234:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31821,"nodeType":"ExpressionStatement","src":"4917:234:81"}]},"functionSelector":"0e0677ab","id":31823,"implemented":true,"kind":"function","modifiers":[],"name":"registerPoolAtTimestamp","nameLocation":"4639:23:81","nodeType":"FunctionDefinition","parameters":{"id":31807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31792,"mutability":"mutable","name":"pool","nameLocation":"4680:4:81","nodeType":"VariableDeclaration","scope":31823,"src":"4672:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31791,"name":"address","nodeType":"ElementaryTypeName","src":"4672:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31796,"mutability":"mutable","name":"tokenConfig","nameLocation":"4715:11:81","nodeType":"VariableDeclaration","scope":31823,"src":"4694:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":31794,"nodeType":"UserDefinedTypeName","pathNode":{"id":31793,"name":"TokenConfig","nameLocations":["4694:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"4694:11:81"},"referencedDeclaration":4476,"src":"4694:11:81","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":31795,"nodeType":"ArrayTypeName","src":"4694:13:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":31798,"mutability":"mutable","name":"timestamp","nameLocation":"4743:9:81","nodeType":"VariableDeclaration","scope":31823,"src":"4736:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":31797,"name":"uint32","nodeType":"ElementaryTypeName","src":"4736:6:81","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":31801,"mutability":"mutable","name":"roleAccounts","nameLocation":"4786:12:81","nodeType":"VariableDeclaration","scope":31823,"src":"4762:36:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":31800,"nodeType":"UserDefinedTypeName","pathNode":{"id":31799,"name":"PoolRoleAccounts","nameLocations":["4762:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"4762:16:81"},"referencedDeclaration":4459,"src":"4762:16:81","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":31803,"mutability":"mutable","name":"poolHooksContract","nameLocation":"4816:17:81","nodeType":"VariableDeclaration","scope":31823,"src":"4808:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31802,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":31806,"mutability":"mutable","name":"liquidityManagement","nameLocation":"4872:19:81","nodeType":"VariableDeclaration","scope":31823,"src":"4843:48:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":31805,"nodeType":"UserDefinedTypeName","pathNode":{"id":31804,"name":"LiquidityManagement","nameLocations":["4843:19:81"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"4843:19:81"},"referencedDeclaration":4362,"src":"4843:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"4662:235:81"},"returnParameters":{"id":31808,"nodeType":"ParameterList","parameters":[],"src":"4907:0:81"},"scope":32017,"src":"4630:528:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31847,"nodeType":"Block","src":"5256:224:81","statements":[{"assignments":[31831],"declarations":[{"constant":false,"id":31831,"mutability":"mutable","name":"liquidityManagement","nameLocation":"5293:19:81","nodeType":"VariableDeclaration","scope":31847,"src":"5266:46:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":31830,"nodeType":"UserDefinedTypeName","pathNode":{"id":31829,"name":"LiquidityManagement","nameLocations":["5266:19:81"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"5266:19:81"},"referencedDeclaration":4362,"src":"5266:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"id":31832,"nodeType":"VariableDeclarationStatement","src":"5266:46:81"},{"expression":{"id":31837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":31833,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31831,"src":"5322:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":31835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5342:24:81","memberName":"enableAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4357,"src":"5322:44:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":31836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5369:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5322:51:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31838,"nodeType":"ExpressionStatement","src":"5322:51:81"},{"expression":{"id":31843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":31839,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31831,"src":"5383:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":31841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5403:27:81","memberName":"enableRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4359,"src":"5383:47:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":31842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5433:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5383:54:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31844,"nodeType":"ExpressionStatement","src":"5383:54:81"},{"expression":{"id":31845,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31831,"src":"5454:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"functionReturnParameters":31828,"id":31846,"nodeType":"Return","src":"5447:26:81"}]},"id":31848,"implemented":true,"kind":"function","modifiers":[],"name":"_getDefaultLiquidityManagement","nameLocation":"5173:30:81","nodeType":"FunctionDefinition","parameters":{"id":31824,"nodeType":"ParameterList","parameters":[],"src":"5203:2:81"},"returnParameters":{"id":31828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31848,"src":"5228:26:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":31826,"nodeType":"UserDefinedTypeName","pathNode":{"id":31825,"name":"LiquidityManagement","nameLocations":["5228:19:81"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"5228:19:81"},"referencedDeclaration":4362,"src":"5228:19:81","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"5227:28:81"},"scope":32017,"src":"5164:316:81","stateMutability":"pure","virtual":false,"visibility":"private"},{"baseFunctions":[1395],"body":{"id":31860,"nodeType":"Block","src":"5593:48:81","statements":[{"expression":{"baseExpression":{"id":31856,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31521,"src":"5610:18:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31858,"indexExpression":{"id":31857,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31851,"src":"5629:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5610:24:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31855,"id":31859,"nodeType":"Return","src":"5603:31:81"}]},"documentation":{"id":31849,"nodeType":"StructuredDocumentation","src":"5486:32:81","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"6634b753","id":31861,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolFromFactory","nameLocation":"5532:17:81","nodeType":"FunctionDefinition","parameters":{"id":31852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31851,"mutability":"mutable","name":"pool","nameLocation":"5558:4:81","nodeType":"VariableDeclaration","scope":31861,"src":"5550:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31850,"name":"address","nodeType":"ElementaryTypeName","src":"5550:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5549:14:81"},"returnParameters":{"id":31855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31861,"src":"5587:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31853,"name":"bool","nodeType":"ElementaryTypeName","src":"5587:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5586:6:81"},"scope":32017,"src":"5523:118:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1401],"body":{"id":31870,"nodeType":"Block","src":"5703:42:81","statements":[{"expression":{"arguments":[{"hexValue":"4e6f7420696d706c656d656e746564","id":31867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5720:17:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""},"value":"Not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""}],"id":31866,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5713:6:81","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":31868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5713:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31869,"nodeType":"ExpressionStatement","src":"5713:25:81"}]},"functionSelector":"8eec5d70","id":31871,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolCount","nameLocation":"5656:12:81","nodeType":"FunctionDefinition","parameters":{"id":31862,"nodeType":"ParameterList","parameters":[],"src":"5668:2:81"},"returnParameters":{"id":31865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31864,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31871,"src":"5694:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31863,"name":"uint256","nodeType":"ElementaryTypeName","src":"5694:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5693:9:81"},"scope":32017,"src":"5647:98:81","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[1419],"body":{"id":31881,"nodeType":"Block","src":"5812:42:81","statements":[{"expression":{"arguments":[{"hexValue":"4e6f7420696d706c656d656e746564","id":31878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5829:17:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""},"value":"Not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""}],"id":31877,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5822:6:81","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":31879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5822:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31880,"nodeType":"ExpressionStatement","src":"5822:25:81"}]},"functionSelector":"673a2a1f","id":31882,"implemented":true,"kind":"function","modifiers":[],"name":"getPools","nameLocation":"5760:8:81","nodeType":"FunctionDefinition","parameters":{"id":31872,"nodeType":"ParameterList","parameters":[],"src":"5768:2:81"},"returnParameters":{"id":31876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31882,"src":"5794:16:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":31873,"name":"address","nodeType":"ElementaryTypeName","src":"5794:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":31874,"nodeType":"ArrayTypeName","src":"5794:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5793:18:81"},"scope":32017,"src":"5751:103:81","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[1412],"body":{"id":31896,"nodeType":"Block","src":"5944:42:81","statements":[{"expression":{"arguments":[{"hexValue":"4e6f7420696d706c656d656e746564","id":31893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5961:17:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""},"value":"Not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f5474d7a5849b3f79e8aee7ea2c60bcd36a60a08b4fa41f97e2fccf1c4df98b","typeString":"literal_string \"Not implemented\""}],"id":31892,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5954:6:81","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":31894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5954:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31895,"nodeType":"ExpressionStatement","src":"5954:25:81"}]},"functionSelector":"53a72f7e","id":31897,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolsInRange","nameLocation":"5869:15:81","nodeType":"FunctionDefinition","parameters":{"id":31887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31897,"src":"5885:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31883,"name":"uint256","nodeType":"ElementaryTypeName","src":"5885:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":31886,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31897,"src":"5894:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31885,"name":"uint256","nodeType":"ElementaryTypeName","src":"5894:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5884:18:81"},"returnParameters":{"id":31891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31897,"src":"5926:16:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":31888,"name":"address","nodeType":"ElementaryTypeName","src":"5926:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":31889,"nodeType":"ArrayTypeName","src":"5926:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5925:18:81"},"scope":32017,"src":"5860:126:81","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[1435],"body":{"id":31905,"nodeType":"Block","src":"6078:33:81","statements":[{"expression":{"id":31903,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31523,"src":"6095:9:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":31902,"id":31904,"nodeType":"Return","src":"6088:16:81"}]},"documentation":{"id":31898,"nodeType":"StructuredDocumentation","src":"5992:32:81","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"6c57f5a9","id":31906,"implemented":true,"kind":"function","modifiers":[],"name":"isDisabled","nameLocation":"6038:10:81","nodeType":"FunctionDefinition","parameters":{"id":31899,"nodeType":"ParameterList","parameters":[],"src":"6048:2:81"},"returnParameters":{"id":31902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":31906,"src":"6072:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":31900,"name":"bool","nodeType":"ElementaryTypeName","src":"6072:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6071:6:81"},"scope":32017,"src":"6029:82:81","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1429],"body":{"id":31949,"nodeType":"Block","src":"6294:304:81","statements":[{"assignments":[31917],"declarations":[{"constant":false,"id":31917,"mutability":"mutable","name":"creationCode","nameLocation":"6317:12:81","nodeType":"VariableDeclaration","scope":31949,"src":"6304:25:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":31916,"name":"bytes","nodeType":"ElementaryTypeName","src":"6304:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":31926,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":31921,"name":"PoolMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33909,"src":"6354:8:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolMock_$33909_$","typeString":"type(contract PoolMock)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_PoolMock_$33909_$","typeString":"type(contract PoolMock)"}],"id":31920,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6349:4:81","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":31922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6349:14:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_PoolMock_$33909","typeString":"type(contract PoolMock)"}},"id":31923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6364:12:81","memberName":"creationCode","nodeType":"MemberAccess","src":"6349:27:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":31924,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31909,"src":"6378:15:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":31918,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6332:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":31919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6336:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"6332:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":31925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6332:62:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6304:90:81"},{"assignments":[31928],"declarations":[{"constant":false,"id":31928,"mutability":"mutable","name":"creationCodeHash","nameLocation":"6412:16:81","nodeType":"VariableDeclaration","scope":31949,"src":"6404:24:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31927,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6404:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":31932,"initialValue":{"arguments":[{"id":31930,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31917,"src":"6441:12:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":31929,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"6431:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":31931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6431:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6404:50:81"},{"assignments":[31934],"declarations":[{"constant":false,"id":31934,"mutability":"mutable","name":"finalSalt","nameLocation":"6472:9:81","nodeType":"VariableDeclaration","scope":31949,"src":"6464:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31933,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6464:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":31938,"initialValue":{"arguments":[{"id":31936,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31911,"src":"6502:4:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":31935,"name":"_computeFinalSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32016,"src":"6484:17:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":31937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6484:23:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6464:43:81"},{"expression":{"arguments":[{"id":31941,"name":"finalSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31934,"src":"6548:9:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":31942,"name":"creationCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31928,"src":"6559:16:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":31945,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6585:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}],"id":31944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6577:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31943,"name":"address","nodeType":"ElementaryTypeName","src":"6577:7:81","typeDescriptions":{}}},"id":31946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6577:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":31939,"name":"Create2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39982,"src":"6525:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Create2_$39982_$","typeString":"type(library Create2)"}},"id":31940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6533:14:81","memberName":"computeAddress","nodeType":"MemberAccess","referencedDeclaration":39981,"src":"6525:22:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes32,address) pure returns (address)"}},"id":31947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6525:66:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":31915,"id":31948,"nodeType":"Return","src":"6518:73:81"}]},"documentation":{"id":31907,"nodeType":"StructuredDocumentation","src":"6117:32:81","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"44f6fec7","id":31950,"implemented":true,"kind":"function","modifiers":[],"name":"getDeploymentAddress","nameLocation":"6163:20:81","nodeType":"FunctionDefinition","parameters":{"id":31912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31909,"mutability":"mutable","name":"constructorArgs","nameLocation":"6206:15:81","nodeType":"VariableDeclaration","scope":31950,"src":"6193:28:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":31908,"name":"bytes","nodeType":"ElementaryTypeName","src":"6193:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":31911,"mutability":"mutable","name":"salt","nameLocation":"6239:4:81","nodeType":"VariableDeclaration","scope":31950,"src":"6231:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6231:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6183:66:81"},"returnParameters":{"id":31915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31914,"mutability":"mutable","name":"deployAddress","nameLocation":"6279:13:81","nodeType":"VariableDeclaration","scope":31950,"src":"6271:21:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31913,"name":"address","nodeType":"ElementaryTypeName","src":"6271:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6270:23:81"},"scope":32017,"src":"6154:444:81","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1439],"body":{"id":31966,"nodeType":"Block","src":"6682:93:81","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":31956,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31997,"src":"6692:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":31957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6692:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31958,"nodeType":"ExpressionStatement","src":"6692:16:81"},{"expression":{"id":31961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":31959,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31523,"src":"6719:9:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":31960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6731:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6719:16:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31962,"nodeType":"ExpressionStatement","src":"6719:16:81"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":31963,"name":"FactoryDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"6751:15:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":31964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6751:17:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31965,"nodeType":"EmitStatement","src":"6746:22:81"}]},"documentation":{"id":31951,"nodeType":"StructuredDocumentation","src":"6604:32:81","text":"@inheritdoc IBasePoolFactory"},"functionSelector":"2f2770db","id":31967,"implemented":true,"kind":"function","modifiers":[{"id":31954,"kind":"modifierInvocation","modifierName":{"id":31953,"name":"authenticate","nameLocations":["6669:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":5275,"src":"6669:12:81"},"nodeType":"ModifierInvocation","src":"6669:12:81"}],"name":"disable","nameLocation":"6650:7:81","nodeType":"FunctionDefinition","parameters":{"id":31952,"nodeType":"ParameterList","parameters":[],"src":"6657:2:81"},"returnParameters":{"id":31955,"nodeType":"ParameterList","parameters":[],"src":"6682:0:81"},"scope":32017,"src":"6641:134:81","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":31985,"nodeType":"Block","src":"6846:108:81","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":31972,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31997,"src":"6856:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":31973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6856:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31974,"nodeType":"ExpressionStatement","src":"6856:16:81"},{"expression":{"id":31979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":31975,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31521,"src":"6883:18:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":31977,"indexExpression":{"id":31976,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31969,"src":"6902:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6883:24:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":31978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6910:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6883:31:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31980,"nodeType":"ExpressionStatement","src":"6883:31:81"},{"eventCall":{"arguments":[{"id":31982,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31969,"src":"6942:4:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":31981,"name":"PoolCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1378,"src":"6930:11:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":31983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6930:17:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":31984,"nodeType":"EmitStatement","src":"6925:22:81"}]},"id":31986,"implemented":true,"kind":"function","modifiers":[],"name":"_registerPoolWithFactory","nameLocation":"6790:24:81","nodeType":"FunctionDefinition","parameters":{"id":31970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31969,"mutability":"mutable","name":"pool","nameLocation":"6823:4:81","nodeType":"VariableDeclaration","scope":31986,"src":"6815:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31968,"name":"address","nodeType":"ElementaryTypeName","src":"6815:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6814:14:81"},"returnParameters":{"id":31971,"nodeType":"ParameterList","parameters":[],"src":"6846:0:81"},"scope":32017,"src":"6781:173:81","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":31996,"nodeType":"Block","src":"7039:76:81","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":31989,"name":"isDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31906,"src":"7053:10:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":31990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7053:12:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":31995,"nodeType":"IfStatement","src":"7049:60:81","trueBody":{"id":31994,"nodeType":"Block","src":"7067:42:81","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":31991,"name":"Disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"7088:8:81","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":31992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7088:10:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":31993,"nodeType":"RevertStatement","src":"7081:17:81"}]}}]},"id":31997,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureEnabled","nameLocation":"7008:14:81","nodeType":"FunctionDefinition","parameters":{"id":31987,"nodeType":"ParameterList","parameters":[],"src":"7022:2:81"},"returnParameters":{"id":31988,"nodeType":"ParameterList","parameters":[],"src":"7039:0:81"},"scope":32017,"src":"6999:116:81","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":32015,"nodeType":"Block","src":"7202:78:81","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":32007,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7240:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":32008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7244:6:81","memberName":"sender","nodeType":"MemberAccess","src":"7240:10:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":32009,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7252:5:81","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":32010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7258:7:81","memberName":"chainid","nodeType":"MemberAccess","src":"7252:13:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":32011,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31999,"src":"7267:4:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":32005,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7229:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":32006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7233:6:81","memberName":"encode","nodeType":"MemberAccess","src":"7229:10:81","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":32012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:43:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":32004,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7219:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":32013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7219:54:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":32003,"id":32014,"nodeType":"Return","src":"7212:61:81"}]},"id":32016,"implemented":true,"kind":"function","modifiers":[],"name":"_computeFinalSalt","nameLocation":"7130:17:81","nodeType":"FunctionDefinition","parameters":{"id":32000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":31999,"mutability":"mutable","name":"salt","nameLocation":"7156:4:81","nodeType":"VariableDeclaration","scope":32016,"src":"7148:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":31998,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7148:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7147:14:81"},"returnParameters":{"id":32003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32016,"src":"7193:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":32001,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7193:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7192:9:81"},"scope":32017,"src":"7121:159:81","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":32018,"src":"636:6646:81","usedErrors":[121,1384,1387,5510],"usedEvents":[1378,1381]}],"src":"46:7237:81"},"id":81},"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"Address":[39879],"AfterSwapParams":[4583],"BaseHooks":[10975],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"FixedPoint":[7834],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC4626":[38998],"IRateProvider":[150],"IRouterCommon":[2823],"IVault":[2893],"IVaultMock":[1275],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolHooksMock":[33567],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RateProviderMock":[34054],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"ScalingHelpers":[6474],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultGuard":[27688],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":33568,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":32019,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:82"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":32021,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":39275,"src":"72:72:82","symbolAliases":[{"foreign":{"id":32020,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":32023,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":39880,"src":"145:68:82","symbolAliases":[{"foreign":{"id":32022,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"154:7:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol","id":32025,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":2824,"src":"215:95:82","symbolAliases":[{"foreign":{"id":32024,"name":"IRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"224:13:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":32027,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":2894,"src":"311:81:82","symbolAliases":[{"foreign":{"id":32026,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"320:6:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol","file":"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol","id":32029,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":1276,"src":"393:88:82","symbolAliases":[{"foreign":{"id":32028,"name":"IVaultMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"402:10:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":32030,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":4654,"src":"482:69:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":32032,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":7835,"src":"553:92:82","symbolAliases":[{"foreign":{"id":32031,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"562:10:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol","id":32034,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":6475,"src":"646:103:82","symbolAliases":[{"foreign":{"id":32033,"name":"ScalingHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6474,"src":"655:14:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol","file":"./RateProviderMock.sol","id":32036,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":34055,"src":"751:58:82","symbolAliases":[{"foreign":{"id":32035,"name":"RateProviderMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34054,"src":"760:16:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultGuard.sol","file":"../VaultGuard.sol","id":32038,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":27689,"src":"810:47:82","symbolAliases":[{"foreign":{"id":32037,"name":"VaultGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27688,"src":"819:10:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BaseHooks.sol","file":"../BaseHooks.sol","id":32040,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33568,"sourceUnit":10976,"src":"858:45:82","symbolAliases":[{"foreign":{"id":32039,"name":"BaseHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10975,"src":"867:9:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":32041,"name":"BaseHooks","nameLocations":["931:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":10975,"src":"931:9:82"},"id":32042,"nodeType":"InheritanceSpecifier","src":"931:9:82"},{"baseName":{"id":32043,"name":"VaultGuard","nameLocations":["942:10:82"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"942:10:82"},"id":32044,"nodeType":"InheritanceSpecifier","src":"942:10:82"}],"canonicalName":"PoolHooksMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":33567,"linearizedBaseContracts":[33567,27688,10975,1887],"name":"PoolHooksMock","nameLocation":"914:13:82","nodeType":"ContractDefinition","nodes":[{"global":false,"id":32047,"libraryName":{"id":32045,"name":"FixedPoint","nameLocations":["965:10:82"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"965:10:82"},"nodeType":"UsingForDirective","src":"959:29:82","typeName":{"id":32046,"name":"uint256","nodeType":"ElementaryTypeName","src":"980:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":32050,"libraryName":{"id":32048,"name":"ScalingHelpers","nameLocations":["999:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":6474,"src":"999:14:82"},"nodeType":"UsingForDirective","src":"993:33:82","typeName":{"id":32049,"name":"uint256","nodeType":"ElementaryTypeName","src":"1018:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"5cd00746","id":32052,"mutability":"mutable","name":"failOnAfterInitialize","nameLocation":"1044:21:82","nodeType":"VariableDeclaration","scope":33567,"src":"1032:33:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32051,"name":"bool","nodeType":"ElementaryTypeName","src":"1032:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"f5279d9c","id":32054,"mutability":"mutable","name":"failOnBeforeInitialize","nameLocation":"1083:22:82","nodeType":"VariableDeclaration","scope":33567,"src":"1071:34:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32053,"name":"bool","nodeType":"ElementaryTypeName","src":"1071:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"e326f03a","id":32056,"mutability":"mutable","name":"failOnComputeDynamicSwapFeeHook","nameLocation":"1123:31:82","nodeType":"VariableDeclaration","scope":33567,"src":"1111:43:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32055,"name":"bool","nodeType":"ElementaryTypeName","src":"1111:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"5351b230","id":32058,"mutability":"mutable","name":"failOnBeforeSwapHook","nameLocation":"1172:20:82","nodeType":"VariableDeclaration","scope":33567,"src":"1160:32:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32057,"name":"bool","nodeType":"ElementaryTypeName","src":"1160:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"a5098f10","id":32060,"mutability":"mutable","name":"failOnAfterSwapHook","nameLocation":"1210:19:82","nodeType":"VariableDeclaration","scope":33567,"src":"1198:31:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32059,"name":"bool","nodeType":"ElementaryTypeName","src":"1198:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"35f7290e","id":32062,"mutability":"mutable","name":"failOnBeforeAddLiquidity","nameLocation":"1247:24:82","nodeType":"VariableDeclaration","scope":33567,"src":"1235:36:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32061,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"40dc21d4","id":32064,"mutability":"mutable","name":"failOnAfterAddLiquidity","nameLocation":"1289:23:82","nodeType":"VariableDeclaration","scope":33567,"src":"1277:35:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32063,"name":"bool","nodeType":"ElementaryTypeName","src":"1277:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"677db20e","id":32066,"mutability":"mutable","name":"failOnBeforeRemoveLiquidity","nameLocation":"1330:27:82","nodeType":"VariableDeclaration","scope":33567,"src":"1318:39:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32065,"name":"bool","nodeType":"ElementaryTypeName","src":"1318:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"a975dda0","id":32068,"mutability":"mutable","name":"failOnAfterRemoveLiquidity","nameLocation":"1375:26:82","nodeType":"VariableDeclaration","scope":33567,"src":"1363:38:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32067,"name":"bool","nodeType":"ElementaryTypeName","src":"1363:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"f8b5ef85","id":32070,"mutability":"mutable","name":"shouldForceHookAdjustedAmounts","nameLocation":"1420:30:82","nodeType":"VariableDeclaration","scope":33567,"src":"1408:42:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32069,"name":"bool","nodeType":"ElementaryTypeName","src":"1408:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"a55e47be","id":32073,"mutability":"mutable","name":"forcedHookAdjustedAmountsLiquidity","nameLocation":"1473:34:82","nodeType":"VariableDeclaration","scope":33567,"src":"1456:51:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[]"},"typeName":{"baseType":{"id":32071,"name":"uint256","nodeType":"ElementaryTypeName","src":"1456:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32072,"nodeType":"ArrayTypeName","src":"1456:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"public"},{"constant":false,"functionSelector":"b298157b","id":32075,"mutability":"mutable","name":"changeTokenRateOnBeforeSwapHook","nameLocation":"1526:31:82","nodeType":"VariableDeclaration","scope":33567,"src":"1514:43:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32074,"name":"bool","nodeType":"ElementaryTypeName","src":"1514:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"3d05719a","id":32077,"mutability":"mutable","name":"changeTokenRateOnBeforeInitialize","nameLocation":"1575:33:82","nodeType":"VariableDeclaration","scope":33567,"src":"1563:45:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32076,"name":"bool","nodeType":"ElementaryTypeName","src":"1563:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"af72105d","id":32079,"mutability":"mutable","name":"changeTokenRateOnBeforeAddLiquidity","nameLocation":"1626:35:82","nodeType":"VariableDeclaration","scope":33567,"src":"1614:47:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32078,"name":"bool","nodeType":"ElementaryTypeName","src":"1614:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"9f94c522","id":32081,"mutability":"mutable","name":"changeTokenRateOnBeforeRemoveLiquidity","nameLocation":"1679:38:82","nodeType":"VariableDeclaration","scope":33567,"src":"1667:50:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32080,"name":"bool","nodeType":"ElementaryTypeName","src":"1667:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"e4c593d7","id":32083,"mutability":"mutable","name":"changePoolBalancesOnBeforeSwapHook","nameLocation":"1736:34:82","nodeType":"VariableDeclaration","scope":33567,"src":"1724:46:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32082,"name":"bool","nodeType":"ElementaryTypeName","src":"1724:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"005b449c","id":32085,"mutability":"mutable","name":"changePoolBalancesOnBeforeAddLiquidityHook","nameLocation":"1788:42:82","nodeType":"VariableDeclaration","scope":33567,"src":"1776:54:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32084,"name":"bool","nodeType":"ElementaryTypeName","src":"1776:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"00d332fd","id":32087,"mutability":"mutable","name":"changePoolBalancesOnBeforeRemoveLiquidityHook","nameLocation":"1848:45:82","nodeType":"VariableDeclaration","scope":33567,"src":"1836:57:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32086,"name":"bool","nodeType":"ElementaryTypeName","src":"1836:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"80c554c1","id":32089,"mutability":"mutable","name":"shouldSettleDiscount","nameLocation":"1912:20:82","nodeType":"VariableDeclaration","scope":33567,"src":"1900:32:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32088,"name":"bool","nodeType":"ElementaryTypeName","src":"1900:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"functionSelector":"4392312a","id":32091,"mutability":"mutable","name":"hookSwapFeePercentage","nameLocation":"1953:21:82","nodeType":"VariableDeclaration","scope":33567,"src":"1938:36:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32090,"name":"uint256","nodeType":"ElementaryTypeName","src":"1938:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"2352c2ed","id":32093,"mutability":"mutable","name":"hookSwapDiscountPercentage","nameLocation":"1995:26:82","nodeType":"VariableDeclaration","scope":33567,"src":"1980:41:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32092,"name":"uint256","nodeType":"ElementaryTypeName","src":"1980:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"02273467","id":32095,"mutability":"mutable","name":"addLiquidityHookFeePercentage","nameLocation":"2042:29:82","nodeType":"VariableDeclaration","scope":33567,"src":"2027:44:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32094,"name":"uint256","nodeType":"ElementaryTypeName","src":"2027:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"e908e85d","id":32097,"mutability":"mutable","name":"addLiquidityHookDiscountPercentage","nameLocation":"2092:34:82","nodeType":"VariableDeclaration","scope":33567,"src":"2077:49:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32096,"name":"uint256","nodeType":"ElementaryTypeName","src":"2077:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"eb499270","id":32099,"mutability":"mutable","name":"removeLiquidityHookFeePercentage","nameLocation":"2147:32:82","nodeType":"VariableDeclaration","scope":33567,"src":"2132:47:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32098,"name":"uint256","nodeType":"ElementaryTypeName","src":"2132:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"bd825f6b","id":32101,"mutability":"mutable","name":"removeLiquidityHookDiscountPercentage","nameLocation":"2200:37:82","nodeType":"VariableDeclaration","scope":33567,"src":"2185:52:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32100,"name":"uint256","nodeType":"ElementaryTypeName","src":"2185:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"31378f4f","id":32103,"mutability":"mutable","name":"swapReentrancyHookActive","nameLocation":"2256:24:82","nodeType":"VariableDeclaration","scope":33567,"src":"2244:36:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32102,"name":"bool","nodeType":"ElementaryTypeName","src":"2244:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"id":32105,"mutability":"mutable","name":"_swapHookContract","nameLocation":"2302:17:82","nodeType":"VariableDeclaration","scope":33567,"src":"2286:33:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32104,"name":"address","nodeType":"ElementaryTypeName","src":"2286:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":32107,"mutability":"mutable","name":"_swapHookCalldata","nameLocation":"2339:17:82","nodeType":"VariableDeclaration","scope":33567,"src":"2325:31:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes"},"typeName":{"id":32106,"name":"bytes","nodeType":"ElementaryTypeName","src":"2325:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"private"},{"constant":false,"id":32110,"mutability":"mutable","name":"_rateProvider","nameLocation":"2388:13:82","nodeType":"VariableDeclaration","scope":33567,"src":"2363:38:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"},"typeName":{"id":32109,"nodeType":"UserDefinedTypeName","pathNode":{"id":32108,"name":"RateProviderMock","nameLocations":["2363:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":34054,"src":"2363:16:82"},"referencedDeclaration":34054,"src":"2363:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"visibility":"private"},{"constant":false,"id":32112,"mutability":"mutable","name":"_newTokenRate","nameLocation":"2423:13:82","nodeType":"VariableDeclaration","scope":33567,"src":"2407:29:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32111,"name":"uint256","nodeType":"ElementaryTypeName","src":"2407:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":32114,"mutability":"mutable","name":"_dynamicSwapFee","nameLocation":"2458:15:82","nodeType":"VariableDeclaration","scope":33567,"src":"2442:31:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32113,"name":"uint256","nodeType":"ElementaryTypeName","src":"2442:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":32116,"mutability":"mutable","name":"_pool","nameLocation":"2495:5:82","nodeType":"VariableDeclaration","scope":33567,"src":"2479:21:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32115,"name":"address","nodeType":"ElementaryTypeName","src":"2479:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":32118,"mutability":"mutable","name":"_specialSender","nameLocation":"2522:14:82","nodeType":"VariableDeclaration","scope":33567,"src":"2506:30:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32117,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":32121,"mutability":"mutable","name":"_newBalancesRaw","nameLocation":"2560:15:82","nodeType":"VariableDeclaration","scope":33567,"src":"2542:33:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[]"},"typeName":{"baseType":{"id":32119,"name":"uint256","nodeType":"ElementaryTypeName","src":"2542:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32120,"nodeType":"ArrayTypeName","src":"2542:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"private"},{"constant":false,"functionSelector":"4f036756","id":32123,"mutability":"mutable","name":"shouldIgnoreSavedSender","nameLocation":"2702:23:82","nodeType":"VariableDeclaration","scope":33567,"src":"2690:35:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32122,"name":"bool","nodeType":"ElementaryTypeName","src":"2690:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"constant":false,"id":32125,"mutability":"mutable","name":"_savedSender","nameLocation":"2747:12:82","nodeType":"VariableDeclaration","scope":33567,"src":"2731:28:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32124,"name":"address","nodeType":"ElementaryTypeName","src":"2731:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":32129,"mutability":"mutable","name":"_allowedFactories","nameLocation":"2818:17:82","nodeType":"VariableDeclaration","scope":33567,"src":"2766:69:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":32128,"keyName":"pool","keyNameLocation":"2782:4:82","keyType":{"id":32126,"name":"address","nodeType":"ElementaryTypeName","src":"2774:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2766:43:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"isFromFactory","valueNameLocation":"2795:13:82","valueType":{"id":32127,"name":"bool","nodeType":"ElementaryTypeName","src":"2790:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":32132,"mutability":"mutable","name":"_hookFlags","nameLocation":"2860:10:82","nodeType":"VariableDeclaration","scope":33567,"src":"2842:28:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage","typeString":"struct HookFlags"},"typeName":{"id":32131,"nodeType":"UserDefinedTypeName","pathNode":{"id":32130,"name":"HookFlags","nameLocations":["2842:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"2842:9:82"},"referencedDeclaration":4409,"src":"2842:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage_ptr","typeString":"struct HookFlags"}},"visibility":"private"},{"body":{"id":32145,"nodeType":"Block","src":"2921:44:82","statements":[{"expression":{"id":32143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32141,"name":"shouldSettleDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32089,"src":"2931:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":32142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2954:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2931:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32144,"nodeType":"ExpressionStatement","src":"2931:27:82"}]},"id":32146,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":32138,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32135,"src":"2914:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":32139,"kind":"baseConstructorSpecifier","modifierName":{"id":32137,"name":"VaultGuard","nameLocations":["2903:10:82"],"nodeType":"IdentifierPath","referencedDeclaration":27688,"src":"2903:10:82"},"nodeType":"ModifierInvocation","src":"2903:17:82"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":32136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32135,"mutability":"mutable","name":"vault","nameLocation":"2896:5:82","nodeType":"VariableDeclaration","scope":32146,"src":"2889:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":32134,"nodeType":"UserDefinedTypeName","pathNode":{"id":32133,"name":"IVault","nameLocations":["2889:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"2889:6:82"},"referencedDeclaration":2893,"src":"2889:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2888:14:82"},"returnParameters":{"id":32140,"nodeType":"ParameterList","parameters":[],"src":"2921:0:82"},"scope":33567,"src":"2877:88:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10767],"body":{"id":32167,"nodeType":"Block","src":"3143:50:82","statements":[{"expression":{"baseExpression":{"id":32163,"name":"_allowedFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32129,"src":"3160:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":32165,"indexExpression":{"id":32164,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32148,"src":"3178:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3160:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32162,"id":32166,"nodeType":"Return","src":"3153:33:82"}]},"functionSelector":"0b89f182","id":32168,"implemented":true,"kind":"function","modifiers":[],"name":"onRegister","nameLocation":"2980:10:82","nodeType":"FunctionDefinition","overrides":{"id":32159,"nodeType":"OverrideSpecifier","overrides":[],"src":"3119:8:82"},"parameters":{"id":32158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32148,"mutability":"mutable","name":"factory","nameLocation":"3008:7:82","nodeType":"VariableDeclaration","scope":32168,"src":"3000:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32147,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32168,"src":"3025:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32149,"name":"address","nodeType":"ElementaryTypeName","src":"3025:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32168,"src":"3042:20:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":32152,"nodeType":"UserDefinedTypeName","pathNode":{"id":32151,"name":"TokenConfig","nameLocations":["3042:11:82"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"3042:11:82"},"referencedDeclaration":4476,"src":"3042:11:82","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":32153,"nodeType":"ArrayTypeName","src":"3042:13:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":32157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32168,"src":"3072:28:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":32156,"nodeType":"UserDefinedTypeName","pathNode":{"id":32155,"name":"LiquidityManagement","nameLocations":["3072:19:82"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"3072:19:82"},"referencedDeclaration":4362,"src":"3072:19:82","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"2990:116:82"},"returnParameters":{"id":32162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32168,"src":"3137:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32160,"name":"bool","nodeType":"ElementaryTypeName","src":"3137:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3136:6:82"},"scope":33567,"src":"2971:222:82","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[10774],"body":{"id":32177,"nodeType":"Block","src":"3271:34:82","statements":[{"expression":{"id":32175,"name":"_hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32132,"src":"3288:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage","typeString":"struct HookFlags storage ref"}},"functionReturnParameters":32174,"id":32176,"nodeType":"Return","src":"3281:17:82"}]},"functionSelector":"d77153a7","id":32178,"implemented":true,"kind":"function","modifiers":[],"name":"getHookFlags","nameLocation":"3208:12:82","nodeType":"FunctionDefinition","overrides":{"id":32170,"nodeType":"OverrideSpecifier","overrides":[],"src":"3235:8:82"},"parameters":{"id":32169,"nodeType":"ParameterList","parameters":[],"src":"3220:2:82"},"returnParameters":{"id":32174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32173,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32178,"src":"3253:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags"},"typeName":{"id":32172,"nodeType":"UserDefinedTypeName","pathNode":{"id":32171,"name":"HookFlags","nameLocations":["3253:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"3253:9:82"},"referencedDeclaration":4409,"src":"3253:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage_ptr","typeString":"struct HookFlags"}},"visibility":"internal"}],"src":"3252:18:82"},"scope":33567,"src":"3199:106:82","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":32188,"nodeType":"Block","src":"3370:39:82","statements":[{"expression":{"id":32186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32184,"name":"_hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32132,"src":"3380:10:82","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage","typeString":"struct HookFlags storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":32185,"name":"hookFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32181,"src":"3393:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags memory"}},"src":"3380:22:82","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage","typeString":"struct HookFlags storage ref"}},"id":32187,"nodeType":"ExpressionStatement","src":"3380:22:82"}]},"functionSelector":"e9f7c591","id":32189,"implemented":true,"kind":"function","modifiers":[],"name":"setHookFlags","nameLocation":"3320:12:82","nodeType":"FunctionDefinition","parameters":{"id":32182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32181,"mutability":"mutable","name":"hookFlags","nameLocation":"3350:9:82","nodeType":"VariableDeclaration","scope":32189,"src":"3333:26:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_memory_ptr","typeString":"struct HookFlags"},"typeName":{"id":32180,"nodeType":"UserDefinedTypeName","pathNode":{"id":32179,"name":"HookFlags","nameLocations":["3333:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":4409,"src":"3333:9:82"},"referencedDeclaration":4409,"src":"3333:9:82","typeDescriptions":{"typeIdentifier":"t_struct$_HookFlags_$4409_storage_ptr","typeString":"struct HookFlags"}},"visibility":"internal"}],"src":"3332:28:82"},"returnParameters":{"id":32183,"nodeType":"ParameterList","parameters":[],"src":"3370:0:82"},"scope":33567,"src":"3311:98:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10788],"body":{"id":32209,"nodeType":"Block","src":"3506:139:82","statements":[{"condition":{"id":32200,"name":"changeTokenRateOnBeforeInitialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32077,"src":"3520:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32205,"nodeType":"IfStatement","src":"3516:82:82","trueBody":{"id":32204,"nodeType":"Block","src":"3555:43:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":32201,"name":"_updateTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33539,"src":"3569:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3569:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32203,"nodeType":"ExpressionStatement","src":"3569:18:82"}]}},{"expression":{"id":32207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3615:23:82","subExpression":{"id":32206,"name":"failOnBeforeInitialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32054,"src":"3616:22:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32199,"id":32208,"nodeType":"Return","src":"3608:30:82"}]},"functionSelector":"1c149e28","id":32210,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeInitialize","nameLocation":"3424:18:82","nodeType":"FunctionDefinition","overrides":{"id":32196,"nodeType":"OverrideSpecifier","overrides":[],"src":"3482:8:82"},"parameters":{"id":32195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32210,"src":"3443:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32190,"name":"uint256","nodeType":"ElementaryTypeName","src":"3443:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32191,"nodeType":"ArrayTypeName","src":"3443:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32194,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32210,"src":"3461:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32193,"name":"bytes","nodeType":"ElementaryTypeName","src":"3461:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3442:32:82"},"returnParameters":{"id":32199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32210,"src":"3500:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32197,"name":"bool","nodeType":"ElementaryTypeName","src":"3500:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3499:6:82"},"scope":33567,"src":"3415:230:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10804],"body":{"id":32226,"nodeType":"Block","src":"3755:46:82","statements":[{"expression":{"id":32224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3772:22:82","subExpression":{"id":32223,"name":"failOnAfterInitialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32052,"src":"3773:21:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32222,"id":32225,"nodeType":"Return","src":"3765:29:82"}]},"functionSelector":"38be241d","id":32227,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterInitialize","nameLocation":"3660:17:82","nodeType":"FunctionDefinition","overrides":{"id":32219,"nodeType":"OverrideSpecifier","overrides":[],"src":"3731:8:82"},"parameters":{"id":32218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32227,"src":"3678:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32211,"name":"uint256","nodeType":"ElementaryTypeName","src":"3678:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32212,"nodeType":"ArrayTypeName","src":"3678:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32227,"src":"3696:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32214,"name":"uint256","nodeType":"ElementaryTypeName","src":"3696:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32227,"src":"3705:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32216,"name":"bytes","nodeType":"ElementaryTypeName","src":"3705:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3677:41:82"},"returnParameters":{"id":32222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32227,"src":"3749:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32220,"name":"bool","nodeType":"ElementaryTypeName","src":"3749:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3748:6:82"},"scope":33567,"src":"3651:150:82","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[10974],"body":{"id":32277,"nodeType":"Block","src":"3975:374:82","statements":[{"assignments":[32243],"declarations":[{"constant":false,"id":32243,"mutability":"mutable","name":"finalSwapFee","nameLocation":"3993:12:82","nodeType":"VariableDeclaration","scope":32277,"src":"3985:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32242,"name":"uint256","nodeType":"ElementaryTypeName","src":"3985:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32245,"initialValue":{"id":32244,"name":"_dynamicSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32114,"src":"4008:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3985:38:82"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":32251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32246,"name":"_specialSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32118,"src":"4038:14:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":32249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4064:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":32248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4056:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32247,"name":"address","nodeType":"ElementaryTypeName","src":"4056:7:82","typeDescriptions":{}}},"id":32250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4056:10:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4038:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32271,"nodeType":"IfStatement","src":"4034:243:82","trueBody":{"id":32270,"nodeType":"Block","src":"4068:209:82","statements":[{"assignments":[32253],"declarations":[{"constant":false,"id":32253,"mutability":"mutable","name":"swapper","nameLocation":"4123:7:82","nodeType":"VariableDeclaration","scope":32270,"src":"4115:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32252,"name":"address","nodeType":"ElementaryTypeName","src":"4115:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":32260,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":32255,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32230,"src":"4147:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams calldata"}},"id":32256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4154:6:82","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":4551,"src":"4147:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32254,"name":"IRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"4133:13:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouterCommon_$2823_$","typeString":"type(contract IRouterCommon)"}},"id":32257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4133:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouterCommon_$2823","typeString":"contract IRouterCommon"}},"id":32258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4162:9:82","memberName":"getSender","nodeType":"MemberAccess","referencedDeclaration":2777,"src":"4133:38:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":32259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4133:40:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4115:58:82"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":32263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32261,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32253,"src":"4191:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":32262,"name":"_specialSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32118,"src":"4202:14:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4191:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32269,"nodeType":"IfStatement","src":"4187:80:82","trueBody":{"id":32268,"nodeType":"Block","src":"4218:49:82","statements":[{"expression":{"id":32266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32264,"name":"finalSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32243,"src":"4236:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":32265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4251:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4236:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32267,"nodeType":"ExpressionStatement","src":"4236:16:82"}]}}]}},{"expression":{"components":[{"id":32273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4295:32:82","subExpression":{"id":32272,"name":"failOnComputeDynamicSwapFeeHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32056,"src":"4296:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":32274,"name":"finalSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32243,"src":"4329:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":32275,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4294:48:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":32241,"id":32276,"nodeType":"Return","src":"4287:55:82"}]},"functionSelector":"a0e8f5ac","id":32278,"implemented":true,"kind":"function","modifiers":[],"name":"onComputeDynamicSwapFeePercentage","nameLocation":"3816:33:82","nodeType":"FunctionDefinition","overrides":{"id":32236,"nodeType":"OverrideSpecifier","overrides":[],"src":"3942:8:82"},"parameters":{"id":32235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32230,"mutability":"mutable","name":"params","nameLocation":"3883:6:82","nodeType":"VariableDeclaration","scope":32278,"src":"3859:30:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":32229,"nodeType":"UserDefinedTypeName","pathNode":{"id":32228,"name":"PoolSwapParams","nameLocations":["3859:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"3859:14:82"},"referencedDeclaration":4554,"src":"3859:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":32232,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32278,"src":"3899:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32231,"name":"address","nodeType":"ElementaryTypeName","src":"3899:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32278,"src":"3916:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32233,"name":"uint256","nodeType":"ElementaryTypeName","src":"3916:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3849:80:82"},"returnParameters":{"id":32241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32278,"src":"3960:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32237,"name":"bool","nodeType":"ElementaryTypeName","src":"3960:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32278,"src":"3966:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32239,"name":"uint256","nodeType":"ElementaryTypeName","src":"3966:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3959:15:82"},"scope":33567,"src":"3807:542:82","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[10938],"body":{"id":32350,"nodeType":"Block","src":"4449:685:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":32291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32289,"name":"shouldIgnoreSavedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32123,"src":"4463:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":32290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4490:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4463:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32302,"nodeType":"IfStatement","src":"4459:118:82","trueBody":{"id":32301,"nodeType":"Block","src":"4497:80:82","statements":[{"expression":{"id":32299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32292,"name":"_savedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32125,"src":"4511:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":32294,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32281,"src":"4540:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams calldata"}},"id":32295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4547:6:82","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":4551,"src":"4540:13:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32293,"name":"IRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"4526:13:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouterCommon_$2823_$","typeString":"type(contract IRouterCommon)"}},"id":32296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4526:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouterCommon_$2823","typeString":"contract IRouterCommon"}},"id":32297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4555:9:82","memberName":"getSender","nodeType":"MemberAccess","referencedDeclaration":2777,"src":"4526:38:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":32298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4526:40:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4511:55:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32300,"nodeType":"ExpressionStatement","src":"4511:55:82"}]}},{"condition":{"id":32303,"name":"changeTokenRateOnBeforeSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32075,"src":"4591:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32308,"nodeType":"IfStatement","src":"4587:80:82","trueBody":{"id":32307,"nodeType":"Block","src":"4624:43:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":32304,"name":"_updateTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33539,"src":"4638:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4638:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32306,"nodeType":"ExpressionStatement","src":"4638:18:82"}]}},{"condition":{"id":32309,"name":"changePoolBalancesOnBeforeSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32083,"src":"4681:34:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32314,"nodeType":"IfStatement","src":"4677:86:82","trueBody":{"id":32313,"nodeType":"Block","src":"4717:46:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":32310,"name":"_setBalancesInVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33566,"src":"4731:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4731:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32312,"nodeType":"ExpressionStatement","src":"4731:21:82"}]}},{"condition":{"id":32315,"name":"swapReentrancyHookActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32103,"src":"4777:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32346,"nodeType":"IfStatement","src":"4773:316:82","trueBody":{"id":32345,"nodeType":"Block","src":"4803:286:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":32322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32317,"name":"_swapHookContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32105,"src":"4825:17:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":32320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4854:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":32319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4846:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32318,"name":"address","nodeType":"ElementaryTypeName","src":"4846:7:82","typeDescriptions":{}}},"id":32321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4846:10:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4825:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"486f6f6b20636f6e7472616374206e6f7420736574","id":32323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4858:23:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_c05d33585962d8048f4bce5d359e85ca1929692ded5119e6188581d534744fd1","typeString":"literal_string \"Hook contract not set\""},"value":"Hook contract not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c05d33585962d8048f4bce5d359e85ca1929692ded5119e6188581d534744fd1","typeString":"literal_string \"Hook contract not set\""}],"id":32316,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4817:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4817:65:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32325,"nodeType":"ExpressionStatement","src":"4817:65:82"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":32327,"name":"_swapHookCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32107,"src":"4904:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":32328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4922:6:82","memberName":"length","nodeType":"MemberAccess","src":"4904:24:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":32329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4932:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4904:29:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"486f6f6b2063616c6c6461746120697320656d707479","id":32331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4935:24:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d43edd872992ef70286758fdc7703dbe0f578dc4f69415b268e7f27a99b64d3","typeString":"literal_string \"Hook calldata is empty\""},"value":"Hook calldata is empty"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d43edd872992ef70286758fdc7703dbe0f578dc4f69415b268e7f27a99b64d3","typeString":"literal_string \"Hook calldata is empty\""}],"id":32326,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4896:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":32332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4896:64:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32333,"nodeType":"ExpressionStatement","src":"4896:64:82"},{"expression":{"id":32336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32334,"name":"swapReentrancyHookActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32103,"src":"4974:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":32335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5001:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4974:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32337,"nodeType":"ExpressionStatement","src":"4974:32:82"},{"expression":{"arguments":[{"id":32341,"name":"_swapHookContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32105,"src":"5041:17:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32342,"name":"_swapHookCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32107,"src":"5060:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}],"expression":{"id":32338,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"5020:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$39879_$","typeString":"type(library Address)"}},"id":32340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5028:12:82","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":39700,"src":"5020:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":32343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5020:58:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":32344,"nodeType":"ExpressionStatement","src":"5020:58:82"}]}},{"expression":{"id":32348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5106:21:82","subExpression":{"id":32347,"name":"failOnBeforeSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32058,"src":"5107:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32288,"id":32349,"nodeType":"Return","src":"5099:28:82"}]},"functionSelector":"5211fa77","id":32351,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeSwap","nameLocation":"4364:12:82","nodeType":"FunctionDefinition","overrides":{"id":32285,"nodeType":"OverrideSpecifier","overrides":[],"src":"4425:8:82"},"parameters":{"id":32284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32281,"mutability":"mutable","name":"params","nameLocation":"4401:6:82","nodeType":"VariableDeclaration","scope":32351,"src":"4377:30:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":32280,"nodeType":"UserDefinedTypeName","pathNode":{"id":32279,"name":"PoolSwapParams","nameLocations":["4377:14:82"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"4377:14:82"},"referencedDeclaration":4554,"src":"4377:14:82","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"},{"constant":false,"id":32283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32351,"src":"4409:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32282,"name":"address","nodeType":"ElementaryTypeName","src":"4409:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4376:41:82"},"returnParameters":{"id":32288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32351,"src":"4443:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32286,"name":"bool","nodeType":"ElementaryTypeName","src":"4443:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4442:6:82"},"scope":33567,"src":"4355:779:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10954],"body":{"id":32662,"nodeType":"Block","src":"5234:3221:82","statements":[{"assignments":[32366,null,32369,null],"declarations":[{"constant":false,"id":32366,"mutability":"mutable","name":"tokens","nameLocation":"5311:6:82","nodeType":"VariableDeclaration","scope":32662,"src":"5295:22:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":32364,"nodeType":"UserDefinedTypeName","pathNode":{"id":32363,"name":"IERC20","nameLocations":["5295:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5295:6:82"},"referencedDeclaration":39274,"src":"5295:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":32365,"nodeType":"ArrayTypeName","src":"5295:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},null,{"constant":false,"id":32369,"mutability":"mutable","name":"balancesRaw","nameLocation":"5338:11:82","nodeType":"VariableDeclaration","scope":32662,"src":"5321:28:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32367,"name":"uint256","nodeType":"ElementaryTypeName","src":"5321:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32368,"nodeType":"ArrayTypeName","src":"5321:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},null],"id":32375,"initialValue":{"arguments":[{"expression":{"id":32372,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"5379:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5386:4:82","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4580,"src":"5379:11:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":32370,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"5355:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5362:16:82","memberName":"getPoolTokenInfo","nodeType":"MemberAccess","referencedDeclaration":3968,"src":"5355:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"id":32374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5355:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"5294:97:82"},{"assignments":[32380],"declarations":[{"constant":false,"id":32380,"mutability":"mutable","name":"currentLiveBalances","nameLocation":"5419:19:82","nodeType":"VariableDeclaration","scope":32662,"src":"5402:36:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32378,"name":"uint256","nodeType":"ElementaryTypeName","src":"5402:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32379,"nodeType":"ArrayTypeName","src":"5402:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":32391,"initialValue":{"arguments":[{"expression":{"id":32388,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"5492:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5499:4:82","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4580,"src":"5492:11:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":32384,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"5460:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":32383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5452:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32382,"name":"address","nodeType":"ElementaryTypeName","src":"5452:7:82","typeDescriptions":{}}},"id":32385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5452:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32381,"name":"IVaultMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"5441:10:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultMock_$1275_$","typeString":"type(contract IVaultMock)"}},"id":32386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5441:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$1275","typeString":"contract IVaultMock"}},"id":32387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5469:22:82","memberName":"getCurrentLiveBalances","nodeType":"MemberAccess","referencedDeclaration":3977,"src":"5441:50:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (uint256[] memory)"}},"id":32390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5441:63:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5402:102:82"},{"assignments":[32396,32399],"declarations":[{"constant":false,"id":32396,"mutability":"mutable","name":"scalingFactors","nameLocation":"5533:14:82","nodeType":"VariableDeclaration","scope":32662,"src":"5516:31:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32394,"name":"uint256","nodeType":"ElementaryTypeName","src":"5516:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32395,"nodeType":"ArrayTypeName","src":"5516:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32399,"mutability":"mutable","name":"rates","nameLocation":"5566:5:82","nodeType":"VariableDeclaration","scope":32662,"src":"5549:22:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32397,"name":"uint256","nodeType":"ElementaryTypeName","src":"5549:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32398,"nodeType":"ArrayTypeName","src":"5549:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":32405,"initialValue":{"arguments":[{"expression":{"id":32402,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"5600:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5607:4:82","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":4580,"src":"5600:11:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":32400,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"5575:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5582:17:82","memberName":"getPoolTokenRates","nodeType":"MemberAccess","referencedDeclaration":3939,"src":"5575:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (uint256[] memory,uint256[] memory)"}},"id":32404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5575:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"5515:97:82"},{"body":{"id":32509,"nodeType":"Block","src":"5667:1137:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":32422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":32417,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32366,"src":"5685:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":32419,"indexExpression":{"id":32418,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"5692:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5685:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":32420,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"5698:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5705:7:82","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4561,"src":"5698:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"5685:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":32467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":32462,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32366,"src":"6242:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":32464,"indexExpression":{"id":32463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6249:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6242:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":32465,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"6255:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6262:8:82","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4564,"src":"6255:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"6242:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32507,"nodeType":"IfStatement","src":"6238:556:82","trueBody":{"id":32506,"nodeType":"Block","src":"6272:522:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":32468,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"6294:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6301:23:82","memberName":"tokenOutBalanceScaled18","nodeType":"MemberAccess","referencedDeclaration":4572,"src":"6294:30:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":32470,"name":"currentLiveBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32380,"src":"6328:19:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32472,"indexExpression":{"id":32471,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6348:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6328:22:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6294:56:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32480,"nodeType":"IfStatement","src":"6290:145:82","trueBody":{"id":32479,"nodeType":"Block","src":"6352:83:82","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":32474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6382:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"expression":{"id":32475,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"6389:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6396:19:82","memberName":"amountCalculatedRaw","nodeType":"MemberAccess","referencedDeclaration":4576,"src":"6389:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":32477,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6381:35:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":32361,"id":32478,"nodeType":"Return","src":"6374:42:82"}]}},{"assignments":[32482],"declarations":[{"constant":false,"id":32482,"mutability":"mutable","name":"expectedTokenOutBalanceRaw","nameLocation":"6460:26:82","nodeType":"VariableDeclaration","scope":32506,"src":"6452:34:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32481,"name":"uint256","nodeType":"ElementaryTypeName","src":"6452:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32493,"initialValue":{"arguments":[{"baseExpression":{"id":32486,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32396,"src":"6564:14:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32488,"indexExpression":{"id":32487,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6579:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6564:17:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":32489,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32399,"src":"6603:5:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32491,"indexExpression":{"id":32490,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6609:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6603:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":32483,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"6489:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6496:23:82","memberName":"tokenOutBalanceScaled18","nodeType":"MemberAccess","referencedDeclaration":4572,"src":"6489:30:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6520:22:82","memberName":"toRawUndoRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6135,"src":"6489:53:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":32492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6489:140:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6452:177:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32494,"name":"expectedTokenOutBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32482,"src":"6651:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":32495,"name":"balancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32369,"src":"6681:11:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32497,"indexExpression":{"id":32496,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6693:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6681:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6651:44:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32505,"nodeType":"IfStatement","src":"6647:133:82","trueBody":{"id":32504,"nodeType":"Block","src":"6697:83:82","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":32499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6727:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"expression":{"id":32500,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"6734:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6741:19:82","memberName":"amountCalculatedRaw","nodeType":"MemberAccess","referencedDeclaration":4576,"src":"6734:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":32502,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6726:35:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":32361,"id":32503,"nodeType":"Return","src":"6719:42:82"}]}}]}},"id":32508,"nodeType":"IfStatement","src":"5681:1113:82","trueBody":{"id":32461,"nodeType":"Block","src":"5714:518:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":32423,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"5736:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5743:22:82","memberName":"tokenInBalanceScaled18","nodeType":"MemberAccess","referencedDeclaration":4570,"src":"5736:29:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":32425,"name":"currentLiveBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32380,"src":"5769:19:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32427,"indexExpression":{"id":32426,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"5789:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5769:22:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5736:55:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32435,"nodeType":"IfStatement","src":"5732:144:82","trueBody":{"id":32434,"nodeType":"Block","src":"5793:83:82","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":32429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5823:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"expression":{"id":32430,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"5830:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5837:19:82","memberName":"amountCalculatedRaw","nodeType":"MemberAccess","referencedDeclaration":4576,"src":"5830:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":32432,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5822:35:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":32361,"id":32433,"nodeType":"Return","src":"5815:42:82"}]}},{"assignments":[32437],"declarations":[{"constant":false,"id":32437,"mutability":"mutable","name":"expectedTokenInBalanceRaw","nameLocation":"5901:25:82","nodeType":"VariableDeclaration","scope":32461,"src":"5893:33:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32436,"name":"uint256","nodeType":"ElementaryTypeName","src":"5893:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32448,"initialValue":{"arguments":[{"baseExpression":{"id":32441,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32396,"src":"6003:14:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32443,"indexExpression":{"id":32442,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6018:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6003:17:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":32444,"name":"rates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32399,"src":"6042:5:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32446,"indexExpression":{"id":32445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6048:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6042:8:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":32438,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"5929:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5936:22:82","memberName":"tokenInBalanceScaled18","nodeType":"MemberAccess","referencedDeclaration":4570,"src":"5929:29:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5959:22:82","memberName":"toRawUndoRateRoundDown","nodeType":"MemberAccess","referencedDeclaration":6135,"src":"5929:52:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":32447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5929:139:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5893:175:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32449,"name":"expectedTokenInBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32437,"src":"6090:25:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":32450,"name":"balancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32369,"src":"6119:11:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32452,"indexExpression":{"id":32451,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"6131:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6119:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6090:43:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32460,"nodeType":"IfStatement","src":"6086:132:82","trueBody":{"id":32459,"nodeType":"Block","src":"6135:83:82","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":32454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6165:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"expression":{"id":32455,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"6172:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6179:19:82","memberName":"amountCalculatedRaw","nodeType":"MemberAccess","referencedDeclaration":4576,"src":"6172:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":32457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6164:35:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":32361,"id":32458,"nodeType":"Return","src":"6157:42:82"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32410,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"5643:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":32411,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32366,"src":"5647:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":32412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5654:6:82","memberName":"length","nodeType":"MemberAccess","src":"5647:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5643:17:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32510,"initializationExpression":{"assignments":[32407],"declarations":[{"constant":false,"id":32407,"mutability":"mutable","name":"i","nameLocation":"5636:1:82","nodeType":"VariableDeclaration","scope":32510,"src":"5628:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32406,"name":"uint256","nodeType":"ElementaryTypeName","src":"5628:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32409,"initialValue":{"hexValue":"30","id":32408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5640:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5628:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":32415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5662:3:82","subExpression":{"id":32414,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32407,"src":"5664:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32416,"nodeType":"ExpressionStatement","src":"5662:3:82"},"nodeType":"ForStatement","src":"5623:1181:82"},{"assignments":[32512],"declarations":[{"constant":false,"id":32512,"mutability":"mutable","name":"hookAdjustedAmountCalculatedRaw","nameLocation":"6822:31:82","nodeType":"VariableDeclaration","scope":32662,"src":"6814:39:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32511,"name":"uint256","nodeType":"ElementaryTypeName","src":"6814:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32515,"initialValue":{"expression":{"id":32513,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"6856:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6863:19:82","memberName":"amountCalculatedRaw","nodeType":"MemberAccess","referencedDeclaration":4576,"src":"6856:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6814:68:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32516,"name":"hookSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32091,"src":"6896:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6920:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6896:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32572,"name":"hookSwapDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32093,"src":"7461:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7490:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7461:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32650,"nodeType":"IfStatement","src":"7457:880:82","trueBody":{"id":32649,"nodeType":"Block","src":"7493:844:82","statements":[{"assignments":[32576],"declarations":[{"constant":false,"id":32576,"mutability":"mutable","name":"hookDiscount","nameLocation":"7515:12:82","nodeType":"VariableDeclaration","scope":32649,"src":"7507:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32575,"name":"uint256","nodeType":"ElementaryTypeName","src":"7507:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32581,"initialValue":{"arguments":[{"id":32579,"name":"hookSwapDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32093,"src":"7570:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32577,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32512,"src":"7530:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7562:7:82","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"7530:39:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":32580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7530:67:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7507:90:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32582,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32576,"src":"7615:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7630:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7615:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32648,"nodeType":"IfStatement","src":"7611:716:82","trueBody":{"id":32647,"nodeType":"Block","src":"7633:694:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":32589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":32585,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"7655:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7662:4:82","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4558,"src":"7655:11:82","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":32587,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"7670:8:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":32588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7679:8:82","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"7670:17:82","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"7655:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":32645,"nodeType":"Block","src":"8005:308:82","statements":[{"expression":{"id":32620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32618,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32512,"src":"8027:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":32619,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32576,"src":"8062:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:47:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32621,"nodeType":"ExpressionStatement","src":"8027:47:82"},{"condition":{"id":32622,"name":"shouldSettleDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32089,"src":"8101:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32644,"nodeType":"IfStatement","src":"8097:198:82","trueBody":{"id":32643,"nodeType":"Block","src":"8123:172:82","statements":[{"expression":{"arguments":[{"arguments":[{"id":32630,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8181:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":32629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8173:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32628,"name":"address","nodeType":"ElementaryTypeName","src":"8173:7:82","typeDescriptions":{}}},"id":32631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32632,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32576,"src":"8190:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":32623,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"8149:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8156:7:82","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4561,"src":"8149:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":32627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8164:8:82","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"8149:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":32633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8149:54:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32634,"nodeType":"ExpressionStatement","src":"8149:54:82"},{"expression":{"arguments":[{"expression":{"id":32638,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"8243:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8250:7:82","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4561,"src":"8243:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":32640,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32576,"src":"8259:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32635,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8229:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8236:6:82","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"8229:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":32641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8229:43:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32642,"nodeType":"ExpressionStatement","src":"8229:43:82"}]}}]},"id":32646,"nodeType":"IfStatement","src":"7651:662:82","trueBody":{"id":32617,"nodeType":"Block","src":"7689:310:82","statements":[{"expression":{"id":32592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32590,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32512,"src":"7711:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":32591,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32576,"src":"7746:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7711:47:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32593,"nodeType":"ExpressionStatement","src":"7711:47:82"},{"condition":{"id":32594,"name":"shouldSettleDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32089,"src":"7785:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32616,"nodeType":"IfStatement","src":"7781:200:82","trueBody":{"id":32615,"nodeType":"Block","src":"7807:174:82","statements":[{"expression":{"arguments":[{"arguments":[{"id":32602,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7866:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":32601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7858:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32600,"name":"address","nodeType":"ElementaryTypeName","src":"7858:7:82","typeDescriptions":{}}},"id":32603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7858:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32604,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32576,"src":"7875:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":32595,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"7833:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7840:8:82","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4564,"src":"7833:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":32599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7849:8:82","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"7833:24:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":32605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7833:55:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32606,"nodeType":"ExpressionStatement","src":"7833:55:82"},{"expression":{"arguments":[{"expression":{"id":32610,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"7928:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7935:8:82","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4564,"src":"7928:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":32612,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32576,"src":"7945:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32607,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7914:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7921:6:82","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"7914:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":32613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7914:44:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32614,"nodeType":"ExpressionStatement","src":"7914:44:82"}]}}]}}]}}]}},"id":32651,"nodeType":"IfStatement","src":"6892:1445:82","trueBody":{"id":32571,"nodeType":"Block","src":"6923:528:82","statements":[{"assignments":[32520],"declarations":[{"constant":false,"id":32520,"mutability":"mutable","name":"hookFee","nameLocation":"6945:7:82","nodeType":"VariableDeclaration","scope":32571,"src":"6937:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32519,"name":"uint256","nodeType":"ElementaryTypeName","src":"6937:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32525,"initialValue":{"arguments":[{"id":32523,"name":"hookSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32091,"src":"6995:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32521,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32512,"src":"6955:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6987:7:82","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"6955:39:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":32524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6955:62:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6937:80:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32526,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32520,"src":"7035:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7045:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7035:11:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32570,"nodeType":"IfStatement","src":"7031:410:82","trueBody":{"id":32569,"nodeType":"Block","src":"7048:393:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":32533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":32529,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"7070:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7077:4:82","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4558,"src":"7070:11:82","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":32531,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"7085:8:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":32532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7094:8:82","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"7085:17:82","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"7070:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":32567,"nodeType":"Block","src":"7269:158:82","statements":[{"expression":{"id":32553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32551,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32512,"src":"7291:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":32552,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32520,"src":"7326:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7291:42:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32554,"nodeType":"ExpressionStatement","src":"7291:42:82"},{"expression":{"arguments":[{"expression":{"id":32558,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"7369:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7376:7:82","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4561,"src":"7369:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":32562,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7393:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}],"id":32561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7385:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32560,"name":"address","nodeType":"ElementaryTypeName","src":"7385:7:82","typeDescriptions":{}}},"id":32563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7385:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32564,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32520,"src":"7400:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32555,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7355:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7362:6:82","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"7355:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":32565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7355:53:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32566,"nodeType":"ExpressionStatement","src":"7355:53:82"}]},"id":32568,"nodeType":"IfStatement","src":"7066:361:82","trueBody":{"id":32550,"nodeType":"Block","src":"7104:159:82","statements":[{"expression":{"id":32536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32534,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32512,"src":"7126:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":32535,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32520,"src":"7161:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7126:42:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32537,"nodeType":"ExpressionStatement","src":"7126:42:82"},{"expression":{"arguments":[{"expression":{"id":32541,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"7204:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7211:8:82","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4564,"src":"7204:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":32545,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7229:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}],"id":32544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7221:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32543,"name":"address","nodeType":"ElementaryTypeName","src":"7221:7:82","typeDescriptions":{}}},"id":32546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7221:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32547,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32520,"src":"7236:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32538,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7190:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7197:6:82","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"7190:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":32548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7190:54:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32549,"nodeType":"ExpressionStatement","src":"7190:54:82"}]}}]}}]}},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":32658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":32652,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32354,"src":"8355:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams calldata"}},"id":32653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8362:24:82","memberName":"amountCalculatedScaled18","nodeType":"MemberAccess","referencedDeclaration":4574,"src":"8355:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8389:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8355:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":32657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8394:20:82","subExpression":{"id":32656,"name":"failOnAfterSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32060,"src":"8395:19:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8355:59:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":32659,"name":"hookAdjustedAmountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32512,"src":"8416:31:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":32660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8354:94:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":32361,"id":32661,"nodeType":"Return","src":"8347:101:82"}]},"functionSelector":"18b6eb55","id":32663,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterSwap","nameLocation":"5149:11:82","nodeType":"FunctionDefinition","overrides":{"id":32356,"nodeType":"OverrideSpecifier","overrides":[],"src":"5201:8:82"},"parameters":{"id":32355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32354,"mutability":"mutable","name":"params","nameLocation":"5186:6:82","nodeType":"VariableDeclaration","scope":32663,"src":"5161:31:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_calldata_ptr","typeString":"struct AfterSwapParams"},"typeName":{"id":32353,"nodeType":"UserDefinedTypeName","pathNode":{"id":32352,"name":"AfterSwapParams","nameLocations":["5161:15:82"],"nodeType":"IdentifierPath","referencedDeclaration":4583,"src":"5161:15:82"},"referencedDeclaration":4583,"src":"5161:15:82","typeDescriptions":{"typeIdentifier":"t_struct$_AfterSwapParams_$4583_storage_ptr","typeString":"struct AfterSwapParams"}},"visibility":"internal"}],"src":"5160:33:82"},"returnParameters":{"id":32361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32663,"src":"5219:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32357,"name":"bool","nodeType":"ElementaryTypeName","src":"5219:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32663,"src":"5225:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32359,"name":"uint256","nodeType":"ElementaryTypeName","src":"5225:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5218:15:82"},"scope":33567,"src":"5140:3315:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10830],"body":{"id":32714,"nodeType":"Block","src":"8720:368:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":32688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32686,"name":"shouldIgnoreSavedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32123,"src":"8734:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":32687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8761:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8734:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32698,"nodeType":"IfStatement","src":"8730:111:82","trueBody":{"id":32697,"nodeType":"Block","src":"8768:73:82","statements":[{"expression":{"id":32695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32689,"name":"_savedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32125,"src":"8782:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":32691,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32665,"src":"8811:6:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32690,"name":"IRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"8797:13:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouterCommon_$2823_$","typeString":"type(contract IRouterCommon)"}},"id":32692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8797:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouterCommon_$2823","typeString":"contract IRouterCommon"}},"id":32693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8819:9:82","memberName":"getSender","nodeType":"MemberAccess","referencedDeclaration":2777,"src":"8797:31:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":32694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8797:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8782:48:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32696,"nodeType":"ExpressionStatement","src":"8782:48:82"}]}},{"condition":{"id":32699,"name":"changeTokenRateOnBeforeAddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32079,"src":"8855:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32704,"nodeType":"IfStatement","src":"8851:84:82","trueBody":{"id":32703,"nodeType":"Block","src":"8892:43:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":32700,"name":"_updateTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33539,"src":"8906:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8906:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32702,"nodeType":"ExpressionStatement","src":"8906:18:82"}]}},{"condition":{"id":32705,"name":"changePoolBalancesOnBeforeAddLiquidityHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32085,"src":"8949:42:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32710,"nodeType":"IfStatement","src":"8945:94:82","trueBody":{"id":32709,"nodeType":"Block","src":"8993:46:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":32706,"name":"_setBalancesInVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33566,"src":"9007:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9007:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32708,"nodeType":"ExpressionStatement","src":"9007:21:82"}]}},{"expression":{"id":32712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9056:25:82","subExpression":{"id":32711,"name":"failOnBeforeAddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32062,"src":"9057:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32685,"id":32713,"nodeType":"Return","src":"9049:32:82"}]},"functionSelector":"45421ec7","id":32715,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeAddLiquidity","nameLocation":"8504:20:82","nodeType":"FunctionDefinition","overrides":{"id":32682,"nodeType":"OverrideSpecifier","overrides":[],"src":"8696:8:82"},"parameters":{"id":32681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32665,"mutability":"mutable","name":"router","nameLocation":"8542:6:82","nodeType":"VariableDeclaration","scope":32715,"src":"8534:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32664,"name":"address","nodeType":"ElementaryTypeName","src":"8534:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32667,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32715,"src":"8558:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32666,"name":"address","nodeType":"ElementaryTypeName","src":"8558:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32715,"src":"8575:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":32669,"nodeType":"UserDefinedTypeName","pathNode":{"id":32668,"name":"AddLiquidityKind","nameLocations":["8575:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"8575:16:82"},"referencedDeclaration":4589,"src":"8575:16:82","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":32673,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32715,"src":"8601:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32671,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32672,"nodeType":"ArrayTypeName","src":"8601:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32675,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32715,"src":"8627:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32674,"name":"uint256","nodeType":"ElementaryTypeName","src":"8627:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32715,"src":"8644:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32676,"name":"uint256","nodeType":"ElementaryTypeName","src":"8644:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32677,"nodeType":"ArrayTypeName","src":"8644:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32715,"src":"8670:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32679,"name":"bytes","nodeType":"ElementaryTypeName","src":"8670:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8524:164:82"},"returnParameters":{"id":32685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32715,"src":"8714:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32683,"name":"bool","nodeType":"ElementaryTypeName","src":"8714:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8713:6:82"},"scope":33567,"src":"8495:593:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10890],"body":{"id":32766,"nodeType":"Block","src":"9325:377:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":32740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32738,"name":"shouldIgnoreSavedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32123,"src":"9339:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":32739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9366:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"9339:32:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32750,"nodeType":"IfStatement","src":"9335:111:82","trueBody":{"id":32749,"nodeType":"Block","src":"9373:73:82","statements":[{"expression":{"id":32747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32741,"name":"_savedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32125,"src":"9387:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":32743,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32717,"src":"9416:6:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":32742,"name":"IRouterCommon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"9402:13:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouterCommon_$2823_$","typeString":"type(contract IRouterCommon)"}},"id":32744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9402:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouterCommon_$2823","typeString":"contract IRouterCommon"}},"id":32745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9424:9:82","memberName":"getSender","nodeType":"MemberAccess","referencedDeclaration":2777,"src":"9402:31:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":32746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9402:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9387:48:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":32748,"nodeType":"ExpressionStatement","src":"9387:48:82"}]}},{"condition":{"id":32751,"name":"changeTokenRateOnBeforeRemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32081,"src":"9460:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32756,"nodeType":"IfStatement","src":"9456:87:82","trueBody":{"id":32755,"nodeType":"Block","src":"9500:43:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":32752,"name":"_updateTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33539,"src":"9514:16:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9514:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32754,"nodeType":"ExpressionStatement","src":"9514:18:82"}]}},{"condition":{"id":32757,"name":"changePoolBalancesOnBeforeRemoveLiquidityHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32087,"src":"9557:45:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32762,"nodeType":"IfStatement","src":"9553:97:82","trueBody":{"id":32761,"nodeType":"Block","src":"9604:46:82","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":32758,"name":"_setBalancesInVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33566,"src":"9618:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":32759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9618:21:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32760,"nodeType":"ExpressionStatement","src":"9618:21:82"}]}},{"expression":{"id":32764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9667:28:82","subExpression":{"id":32763,"name":"failOnBeforeRemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32066,"src":"9668:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":32737,"id":32765,"nodeType":"Return","src":"9660:35:82"}]},"functionSelector":"ba5f9f40","id":32767,"implemented":true,"kind":"function","modifiers":[],"name":"onBeforeRemoveLiquidity","nameLocation":"9103:23:82","nodeType":"FunctionDefinition","overrides":{"id":32734,"nodeType":"OverrideSpecifier","overrides":[],"src":"9301:8:82"},"parameters":{"id":32733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32717,"mutability":"mutable","name":"router","nameLocation":"9144:6:82","nodeType":"VariableDeclaration","scope":32767,"src":"9136:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32716,"name":"address","nodeType":"ElementaryTypeName","src":"9136:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32767,"src":"9160:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32718,"name":"address","nodeType":"ElementaryTypeName","src":"9160:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32722,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32767,"src":"9177:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":32721,"nodeType":"UserDefinedTypeName","pathNode":{"id":32720,"name":"RemoveLiquidityKind","nameLocations":["9177:19:82"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"9177:19:82"},"referencedDeclaration":4610,"src":"9177:19:82","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":32724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32767,"src":"9206:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32723,"name":"uint256","nodeType":"ElementaryTypeName","src":"9206:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32767,"src":"9223:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32725,"name":"uint256","nodeType":"ElementaryTypeName","src":"9223:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32726,"nodeType":"ArrayTypeName","src":"9223:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32767,"src":"9249:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32728,"name":"uint256","nodeType":"ElementaryTypeName","src":"9249:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32729,"nodeType":"ArrayTypeName","src":"9249:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32767,"src":"9275:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32731,"name":"bytes","nodeType":"ElementaryTypeName","src":"9275:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9126:167:82"},"returnParameters":{"id":32737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32767,"src":"9319:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32735,"name":"bool","nodeType":"ElementaryTypeName","src":"9319:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9318:6:82"},"scope":33567,"src":"9094:608:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10864],"body":{"id":32935,"nodeType":"Block","src":"10012:1315:82","statements":[{"condition":{"id":32796,"name":"shouldForceHookAdjustedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32070,"src":"10084:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32802,"nodeType":"IfStatement","src":"10080:110:82","trueBody":{"id":32801,"nodeType":"Block","src":"10116:74:82","statements":[{"expression":{"components":[{"hexValue":"74727565","id":32797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10138:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":32798,"name":"forcedHookAdjustedAmountsLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32073,"src":"10144:34:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}}],"id":32799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10137:42:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_storage_$","typeString":"tuple(bool,uint256[] storage ref)"}},"functionReturnParameters":32795,"id":32800,"nodeType":"Return","src":"10130:49:82"}]}},{"assignments":[32807,null,null,null],"declarations":[{"constant":false,"id":32807,"mutability":"mutable","name":"tokens","nameLocation":"10217:6:82","nodeType":"VariableDeclaration","scope":32935,"src":"10201:22:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":32805,"nodeType":"UserDefinedTypeName","pathNode":{"id":32804,"name":"IERC20","nameLocations":["10201:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10201:6:82"},"referencedDeclaration":39274,"src":"10201:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":32806,"nodeType":"ArrayTypeName","src":"10201:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},null,null,null],"id":32812,"initialValue":{"arguments":[{"id":32810,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32771,"src":"10257:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":32808,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"10233:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10240:16:82","memberName":"getPoolTokenInfo","nodeType":"MemberAccess","referencedDeclaration":3968,"src":"10233:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"id":32811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10233:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"10200:62:82"},{"expression":{"id":32815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32813,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32794,"src":"10272:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":32814,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32780,"src":"10299:12:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"10272:39:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32816,"nodeType":"ExpressionStatement","src":"10272:39:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32817,"name":"addLiquidityHookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32095,"src":"10326:29:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10358:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10326:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32867,"name":"addLiquidityHookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32097,"src":"10733:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10770:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10733:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32928,"nodeType":"IfStatement","src":"10729:522:82","trueBody":{"id":32927,"nodeType":"Block","src":"10773:478:82","statements":[{"body":{"id":32925,"nodeType":"Block","src":"10837:404:82","statements":[{"assignments":[32883],"declarations":[{"constant":false,"id":32883,"mutability":"mutable","name":"token","nameLocation":"10862:5:82","nodeType":"VariableDeclaration","scope":32925,"src":"10855:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":32882,"nodeType":"UserDefinedTypeName","pathNode":{"id":32881,"name":"IERC20","nameLocations":["10855:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10855:6:82"},"referencedDeclaration":39274,"src":"10855:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":32887,"initialValue":{"baseExpression":{"id":32884,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32807,"src":"10870:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":32886,"indexExpression":{"id":32885,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32871,"src":"10877:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10870:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"10855:24:82"},{"assignments":[32889],"declarations":[{"constant":false,"id":32889,"mutability":"mutable","name":"hookDiscount","nameLocation":"10906:12:82","nodeType":"VariableDeclaration","scope":32925,"src":"10898:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32888,"name":"uint256","nodeType":"ElementaryTypeName","src":"10898:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32896,"initialValue":{"arguments":[{"id":32894,"name":"addLiquidityHookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32097,"src":"10945:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":32890,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32780,"src":"10921:12:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32892,"indexExpression":{"id":32891,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32871,"src":"10934:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10921:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10937:7:82","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"10921:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":32895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10921:59:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10898:82:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32897,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32889,"src":"11002:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11017:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11002:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32924,"nodeType":"IfStatement","src":"10998:229:82","trueBody":{"id":32923,"nodeType":"Block","src":"11020:207:82","statements":[{"expression":{"arguments":[{"arguments":[{"id":32905,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11065:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":32904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11057:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32903,"name":"address","nodeType":"ElementaryTypeName","src":"11057:7:82","typeDescriptions":{}}},"id":32906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11057:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32907,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32889,"src":"11074:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32900,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32883,"src":"11042:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":32902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11048:8:82","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"11042:14:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":32908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11042:45:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32909,"nodeType":"ExpressionStatement","src":"11042:45:82"},{"expression":{"id":32914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":32910,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32794,"src":"11109:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32912,"indexExpression":{"id":32911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32871,"src":"11134:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11109:27:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":32913,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32889,"src":"11140:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11109:43:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32915,"nodeType":"ExpressionStatement","src":"11109:43:82"},{"expression":{"arguments":[{"id":32919,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32883,"src":"11188:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":32920,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32889,"src":"11195:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32916,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11174:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11181:6:82","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"11174:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":32921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11174:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32922,"nodeType":"ExpressionStatement","src":"11174:34:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32874,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32871,"src":"10807:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":32875,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32780,"src":"10811:12:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10824:6:82","memberName":"length","nodeType":"MemberAccess","src":"10811:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10807:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32926,"initializationExpression":{"assignments":[32871],"declarations":[{"constant":false,"id":32871,"mutability":"mutable","name":"i","nameLocation":"10800:1:82","nodeType":"VariableDeclaration","scope":32926,"src":"10792:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32870,"name":"uint256","nodeType":"ElementaryTypeName","src":"10792:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32873,"initialValue":{"hexValue":"30","id":32872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10804:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10792:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":32879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10832:3:82","subExpression":{"id":32878,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32871,"src":"10832:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32880,"nodeType":"ExpressionStatement","src":"10832:3:82"},"nodeType":"ForStatement","src":"10787:454:82"}]}},"id":32929,"nodeType":"IfStatement","src":"10322:929:82","trueBody":{"id":32866,"nodeType":"Block","src":"10361:362:82","statements":[{"body":{"id":32864,"nodeType":"Block","src":"10425:288:82","statements":[{"assignments":[32832],"declarations":[{"constant":false,"id":32832,"mutability":"mutable","name":"hookFee","nameLocation":"10451:7:82","nodeType":"VariableDeclaration","scope":32864,"src":"10443:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32831,"name":"uint256","nodeType":"ElementaryTypeName","src":"10443:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32839,"initialValue":{"arguments":[{"id":32837,"name":"addLiquidityHookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32095,"src":"10485:29:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":32833,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32780,"src":"10461:12:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32835,"indexExpression":{"id":32834,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32821,"src":"10474:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10461:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10477:7:82","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"10461:23:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":32838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10461:54:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10443:72:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32840,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32832,"src":"10537:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10547:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10537:11:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32863,"nodeType":"IfStatement","src":"10533:166:82","trueBody":{"id":32862,"nodeType":"Block","src":"10550:149:82","statements":[{"expression":{"id":32847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":32843,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32794,"src":"10572:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32845,"indexExpression":{"id":32844,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32821,"src":"10597:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10572:27:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":32846,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32832,"src":"10603:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10572:38:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32848,"nodeType":"ExpressionStatement","src":"10572:38:82"},{"expression":{"arguments":[{"baseExpression":{"id":32852,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32807,"src":"10646:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":32854,"indexExpression":{"id":32853,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32821,"src":"10653:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10646:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":32857,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10665:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}],"id":32856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10657:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":32855,"name":"address","nodeType":"ElementaryTypeName","src":"10657:7:82","typeDescriptions":{}}},"id":32858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10657:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":32859,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32832,"src":"10672:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":32849,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"10632:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10639:6:82","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"10632:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":32860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10632:48:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":32861,"nodeType":"ExpressionStatement","src":"10632:48:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32821,"src":"10395:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":32825,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32780,"src":"10399:12:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10412:6:82","memberName":"length","nodeType":"MemberAccess","src":"10399:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10395:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32865,"initializationExpression":{"assignments":[32821],"declarations":[{"constant":false,"id":32821,"mutability":"mutable","name":"i","nameLocation":"10388:1:82","nodeType":"VariableDeclaration","scope":32865,"src":"10380:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32820,"name":"uint256","nodeType":"ElementaryTypeName","src":"10380:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32823,"initialValue":{"hexValue":"30","id":32822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10380:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":32829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10420:3:82","subExpression":{"id":32828,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32821,"src":"10420:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32830,"nodeType":"ExpressionStatement","src":"10420:3:82"},"nodeType":"ForStatement","src":"10375:338:82"}]}},{"expression":{"components":[{"id":32931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11269:24:82","subExpression":{"id":32930,"name":"failOnAfterAddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32064,"src":"11270:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":32932,"name":"hookAdjustedAmountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32794,"src":"11295:24:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":32933,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11268:52:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool,uint256[] memory)"}},"functionReturnParameters":32795,"id":32934,"nodeType":"Return","src":"11261:59:82"}]},"functionSelector":"976907cc","id":32936,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterAddLiquidity","nameLocation":"9717:19:82","nodeType":"FunctionDefinition","overrides":{"id":32789,"nodeType":"OverrideSpecifier","overrides":[],"src":"9945:8:82"},"parameters":{"id":32788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32936,"src":"9746:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32768,"name":"address","nodeType":"ElementaryTypeName","src":"9746:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32771,"mutability":"mutable","name":"pool","nameLocation":"9771:4:82","nodeType":"VariableDeclaration","scope":32936,"src":"9763:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32770,"name":"address","nodeType":"ElementaryTypeName","src":"9763:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32774,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32936,"src":"9785:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},"typeName":{"id":32773,"nodeType":"UserDefinedTypeName","pathNode":{"id":32772,"name":"AddLiquidityKind","nameLocations":["9785:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":4589,"src":"9785:16:82"},"referencedDeclaration":4589,"src":"9785:16:82","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":32777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32936,"src":"9811:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32775,"name":"uint256","nodeType":"ElementaryTypeName","src":"9811:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32776,"nodeType":"ArrayTypeName","src":"9811:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32780,"mutability":"mutable","name":"amountsInRaw","nameLocation":"9854:12:82","nodeType":"VariableDeclaration","scope":32936,"src":"9837:29:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32778,"name":"uint256","nodeType":"ElementaryTypeName","src":"9837:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32779,"nodeType":"ArrayTypeName","src":"9837:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32936,"src":"9876:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32781,"name":"uint256","nodeType":"ElementaryTypeName","src":"9876:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32936,"src":"9893:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32783,"name":"uint256","nodeType":"ElementaryTypeName","src":"9893:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32784,"nodeType":"ArrayTypeName","src":"9893:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32936,"src":"9919:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32786,"name":"bytes","nodeType":"ElementaryTypeName","src":"9919:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9736:201:82"},"returnParameters":{"id":32795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32936,"src":"9963:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32790,"name":"bool","nodeType":"ElementaryTypeName","src":"9963:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32794,"mutability":"mutable","name":"hookAdjustedAmountsInRaw","nameLocation":"9986:24:82","nodeType":"VariableDeclaration","scope":32936,"src":"9969:41:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32792,"name":"uint256","nodeType":"ElementaryTypeName","src":"9969:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32793,"nodeType":"ArrayTypeName","src":"9969:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9962:49:82"},"scope":33567,"src":"9708:1619:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[10924],"body":{"id":33104,"nodeType":"Block","src":"11645:1339:82","statements":[{"condition":{"id":32965,"name":"shouldForceHookAdjustedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32070,"src":"11717:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":32971,"nodeType":"IfStatement","src":"11713:110:82","trueBody":{"id":32970,"nodeType":"Block","src":"11749:74:82","statements":[{"expression":{"components":[{"hexValue":"74727565","id":32966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11771:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":32967,"name":"forcedHookAdjustedAmountsLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32073,"src":"11777:34:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}}],"id":32968,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11770:42:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_storage_$","typeString":"tuple(bool,uint256[] storage ref)"}},"functionReturnParameters":32964,"id":32969,"nodeType":"Return","src":"11763:49:82"}]}},{"assignments":[32976,null,null,null],"declarations":[{"constant":false,"id":32976,"mutability":"mutable","name":"tokens","nameLocation":"11850:6:82","nodeType":"VariableDeclaration","scope":33104,"src":"11834:22:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":32974,"nodeType":"UserDefinedTypeName","pathNode":{"id":32973,"name":"IERC20","nameLocations":["11834:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"11834:6:82"},"referencedDeclaration":39274,"src":"11834:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":32975,"nodeType":"ArrayTypeName","src":"11834:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},null,null,null],"id":32981,"initialValue":{"arguments":[{"id":32979,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32940,"src":"11890:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":32977,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11866:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":32978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11873:16:82","memberName":"getPoolTokenInfo","nodeType":"MemberAccess","referencedDeclaration":3968,"src":"11866:23:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"id":32980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11866:29:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(contract IERC20[] memory,struct TokenInfo memory[] memory,uint256[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"11833:62:82"},{"expression":{"id":32984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":32982,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32963,"src":"11905:25:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":32983,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32951,"src":"11933:13:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"11905:41:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32985,"nodeType":"ExpressionStatement","src":"11905:41:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32986,"name":"removeLiquidityHookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32099,"src":"11961:32:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":32987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11996:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11961:36:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33036,"name":"removeLiquidityHookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32101,"src":"12377:37:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":33037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12417:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12377:41:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33097,"nodeType":"IfStatement","src":"12373:531:82","trueBody":{"id":33096,"nodeType":"Block","src":"12420:484:82","statements":[{"body":{"id":33094,"nodeType":"Block","src":"12485:409:82","statements":[{"assignments":[33051],"declarations":[{"constant":false,"id":33051,"mutability":"mutable","name":"hookDiscount","nameLocation":"12511:12:82","nodeType":"VariableDeclaration","scope":33094,"src":"12503:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33050,"name":"uint256","nodeType":"ElementaryTypeName","src":"12503:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33058,"initialValue":{"arguments":[{"id":33056,"name":"removeLiquidityHookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32101,"src":"12551:37:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":33052,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32951,"src":"12526:13:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33054,"indexExpression":{"id":33053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33040,"src":"12540:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12526:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12543:7:82","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"12526:24:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":33057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12526:63:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12503:86:82"},{"assignments":[33061],"declarations":[{"constant":false,"id":33061,"mutability":"mutable","name":"token","nameLocation":"12614:5:82","nodeType":"VariableDeclaration","scope":33094,"src":"12607:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":33060,"nodeType":"UserDefinedTypeName","pathNode":{"id":33059,"name":"IERC20","nameLocations":["12607:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"12607:6:82"},"referencedDeclaration":39274,"src":"12607:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":33065,"initialValue":{"baseExpression":{"id":33062,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32976,"src":"12622:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":33064,"indexExpression":{"id":33063,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33040,"src":"12629:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12622:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"12607:24:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33066,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33051,"src":"12654:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":33067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12669:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12654:16:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33093,"nodeType":"IfStatement","src":"12650:230:82","trueBody":{"id":33092,"nodeType":"Block","src":"12672:208:82","statements":[{"expression":{"arguments":[{"arguments":[{"id":33074,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"12717:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":33073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12709:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33072,"name":"address","nodeType":"ElementaryTypeName","src":"12709:7:82","typeDescriptions":{}}},"id":33075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12709:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":33076,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33051,"src":"12726:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":33069,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33061,"src":"12694:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":33071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12700:8:82","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"12694:14:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":33077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12694:45:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33078,"nodeType":"ExpressionStatement","src":"12694:45:82"},{"expression":{"id":33083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":33079,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32963,"src":"12761:25:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33081,"indexExpression":{"id":33080,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33040,"src":"12787:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12761:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":33082,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33051,"src":"12793:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12761:44:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33084,"nodeType":"ExpressionStatement","src":"12761:44:82"},{"expression":{"arguments":[{"id":33088,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33061,"src":"12841:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":33089,"name":"hookDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33051,"src":"12848:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":33085,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"12827:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":33087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12834:6:82","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"12827:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":33090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12827:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33091,"nodeType":"ExpressionStatement","src":"12827:34:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33043,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33040,"src":"12454:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":33044,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32951,"src":"12458:13:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12472:6:82","memberName":"length","nodeType":"MemberAccess","src":"12458:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12454:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33095,"initializationExpression":{"assignments":[33040],"declarations":[{"constant":false,"id":33040,"mutability":"mutable","name":"i","nameLocation":"12447:1:82","nodeType":"VariableDeclaration","scope":33095,"src":"12439:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33039,"name":"uint256","nodeType":"ElementaryTypeName","src":"12439:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33042,"initialValue":{"hexValue":"30","id":33041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12451:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12439:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":33048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12480:3:82","subExpression":{"id":33047,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33040,"src":"12480:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33049,"nodeType":"ExpressionStatement","src":"12480:3:82"},"nodeType":"ForStatement","src":"12434:460:82"}]}},"id":33098,"nodeType":"IfStatement","src":"11957:947:82","trueBody":{"id":33035,"nodeType":"Block","src":"11999:368:82","statements":[{"body":{"id":33033,"nodeType":"Block","src":"12064:293:82","statements":[{"assignments":[33001],"declarations":[{"constant":false,"id":33001,"mutability":"mutable","name":"hookFee","nameLocation":"12090:7:82","nodeType":"VariableDeclaration","scope":33033,"src":"12082:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33000,"name":"uint256","nodeType":"ElementaryTypeName","src":"12082:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33008,"initialValue":{"arguments":[{"id":33006,"name":"removeLiquidityHookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32099,"src":"12125:32:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":33002,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32951,"src":"12100:13:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33004,"indexExpression":{"id":33003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32990,"src":"12114:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12100:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12117:7:82","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"12100:24:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":33007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12100:58:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12082:76:82"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33009,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33001,"src":"12180:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":33010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12190:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12180:11:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33032,"nodeType":"IfStatement","src":"12176:167:82","trueBody":{"id":33031,"nodeType":"Block","src":"12193:150:82","statements":[{"expression":{"id":33016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":33012,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32963,"src":"12215:25:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33014,"indexExpression":{"id":33013,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32990,"src":"12241:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12215:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":33015,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33001,"src":"12247:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12215:39:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33017,"nodeType":"ExpressionStatement","src":"12215:39:82"},{"expression":{"arguments":[{"baseExpression":{"id":33021,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32976,"src":"12290:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":33023,"indexExpression":{"id":33022,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32990,"src":"12297:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12290:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"id":33026,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12309:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolHooksMock_$33567","typeString":"contract PoolHooksMock"}],"id":33025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12301:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33024,"name":"address","nodeType":"ElementaryTypeName","src":"12301:7:82","typeDescriptions":{}}},"id":33027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12301:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":33028,"name":"hookFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33001,"src":"12316:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":33018,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"12276:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":33020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12283:6:82","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"12276:13:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":33029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12276:48:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33030,"nodeType":"ExpressionStatement","src":"12276:48:82"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":32996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":32993,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32990,"src":"12033:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":32994,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32951,"src":"12037:13:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":32995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12051:6:82","memberName":"length","nodeType":"MemberAccess","src":"12037:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12033:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33034,"initializationExpression":{"assignments":[32990],"declarations":[{"constant":false,"id":32990,"mutability":"mutable","name":"i","nameLocation":"12026:1:82","nodeType":"VariableDeclaration","scope":33034,"src":"12018:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32989,"name":"uint256","nodeType":"ElementaryTypeName","src":"12018:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":32992,"initialValue":{"hexValue":"30","id":32991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12030:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12018:13:82"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":32998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12059:3:82","subExpression":{"id":32997,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32990,"src":"12059:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32999,"nodeType":"ExpressionStatement","src":"12059:3:82"},"nodeType":"ForStatement","src":"12013:344:82"}]}},{"expression":{"components":[{"id":33100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12922:27:82","subExpression":{"id":33099,"name":"failOnAfterRemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32068,"src":"12923:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":33101,"name":"hookAdjustedAmountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32963,"src":"12951:25:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":33102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12921:56:82","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(bool,uint256[] memory)"}},"functionReturnParameters":32964,"id":33103,"nodeType":"Return","src":"12914:63:82"}]},"functionSelector":"2754888d","id":33105,"implemented":true,"kind":"function","modifiers":[],"name":"onAfterRemoveLiquidity","nameLocation":"11342:22:82","nodeType":"FunctionDefinition","overrides":{"id":32958,"nodeType":"OverrideSpecifier","overrides":[],"src":"11577:8:82"},"parameters":{"id":32957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33105,"src":"11374:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32937,"name":"address","nodeType":"ElementaryTypeName","src":"11374:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32940,"mutability":"mutable","name":"pool","nameLocation":"11399:4:82","nodeType":"VariableDeclaration","scope":33105,"src":"11391:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32939,"name":"address","nodeType":"ElementaryTypeName","src":"11391:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33105,"src":"11413:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},"typeName":{"id":32942,"nodeType":"UserDefinedTypeName","pathNode":{"id":32941,"name":"RemoveLiquidityKind","nameLocations":["11413:19:82"],"nodeType":"IdentifierPath","referencedDeclaration":4610,"src":"11413:19:82"},"referencedDeclaration":4610,"src":"11413:19:82","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},"visibility":"internal"},{"constant":false,"id":32945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33105,"src":"11442:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":32944,"name":"uint256","nodeType":"ElementaryTypeName","src":"11442:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32948,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33105,"src":"11459:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32946,"name":"uint256","nodeType":"ElementaryTypeName","src":"11459:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32947,"nodeType":"ArrayTypeName","src":"11459:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32951,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"11502:13:82","nodeType":"VariableDeclaration","scope":33105,"src":"11485:30:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32949,"name":"uint256","nodeType":"ElementaryTypeName","src":"11485:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32950,"nodeType":"ArrayTypeName","src":"11485:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33105,"src":"11525:16:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32952,"name":"uint256","nodeType":"ElementaryTypeName","src":"11525:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32953,"nodeType":"ArrayTypeName","src":"11525:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":32956,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33105,"src":"11551:12:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":32955,"name":"bytes","nodeType":"ElementaryTypeName","src":"11551:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11364:205:82"},"returnParameters":{"id":32964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33105,"src":"11595:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":32959,"name":"bool","nodeType":"ElementaryTypeName","src":"11595:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":32963,"mutability":"mutable","name":"hookAdjustedAmountsOutRaw","nameLocation":"11618:25:82","nodeType":"VariableDeclaration","scope":33105,"src":"11601:42:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":32961,"name":"uint256","nodeType":"ElementaryTypeName","src":"11601:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":32962,"nodeType":"ArrayTypeName","src":"11601:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11594:50:82"},"scope":33567,"src":"11333:1651:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33114,"nodeType":"Block","src":"13224:45:82","statements":[{"expression":{"id":33112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33110,"name":"failOnAfterInitialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32052,"src":"13234:21:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33111,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33107,"src":"13258:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13234:28:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33113,"nodeType":"ExpressionStatement","src":"13234:28:82"}]},"functionSelector":"b127e385","id":33115,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnAfterInitializeHook","nameLocation":"13175:28:82","nodeType":"FunctionDefinition","parameters":{"id":33108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33107,"mutability":"mutable","name":"fail","nameLocation":"13209:4:82","nodeType":"VariableDeclaration","scope":33115,"src":"13204:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33106,"name":"bool","nodeType":"ElementaryTypeName","src":"13204:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13203:11:82"},"returnParameters":{"id":33109,"nodeType":"ParameterList","parameters":[],"src":"13224:0:82"},"scope":33567,"src":"13166:103:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33124,"nodeType":"Block","src":"13334:46:82","statements":[{"expression":{"id":33122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33120,"name":"failOnBeforeInitialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32054,"src":"13344:22:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33121,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33117,"src":"13369:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13344:29:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33123,"nodeType":"ExpressionStatement","src":"13344:29:82"}]},"functionSelector":"d3fca637","id":33125,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnBeforeInitializeHook","nameLocation":"13284:29:82","nodeType":"FunctionDefinition","parameters":{"id":33118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33117,"mutability":"mutable","name":"fail","nameLocation":"13319:4:82","nodeType":"VariableDeclaration","scope":33125,"src":"13314:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33116,"name":"bool","nodeType":"ElementaryTypeName","src":"13314:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13313:11:82"},"returnParameters":{"id":33119,"nodeType":"ParameterList","parameters":[],"src":"13334:0:82"},"scope":33567,"src":"13275:105:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33134,"nodeType":"Block","src":"13450:55:82","statements":[{"expression":{"id":33132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33130,"name":"failOnComputeDynamicSwapFeeHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32056,"src":"13460:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33131,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33127,"src":"13494:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13460:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33133,"nodeType":"ExpressionStatement","src":"13460:38:82"}]},"functionSelector":"87ac5691","id":33135,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnComputeDynamicSwapFeeHook","nameLocation":"13395:34:82","nodeType":"FunctionDefinition","parameters":{"id":33128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33127,"mutability":"mutable","name":"fail","nameLocation":"13435:4:82","nodeType":"VariableDeclaration","scope":33135,"src":"13430:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33126,"name":"bool","nodeType":"ElementaryTypeName","src":"13430:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13429:11:82"},"returnParameters":{"id":33129,"nodeType":"ParameterList","parameters":[],"src":"13450:0:82"},"scope":33567,"src":"13386:119:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33144,"nodeType":"Block","src":"13564:44:82","statements":[{"expression":{"id":33142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33140,"name":"failOnBeforeSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32058,"src":"13574:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33141,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33137,"src":"13597:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13574:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33143,"nodeType":"ExpressionStatement","src":"13574:27:82"}]},"functionSelector":"b3a763b9","id":33145,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnBeforeSwapHook","nameLocation":"13520:23:82","nodeType":"FunctionDefinition","parameters":{"id":33138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33137,"mutability":"mutable","name":"fail","nameLocation":"13549:4:82","nodeType":"VariableDeclaration","scope":33145,"src":"13544:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33136,"name":"bool","nodeType":"ElementaryTypeName","src":"13544:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13543:11:82"},"returnParameters":{"id":33139,"nodeType":"ParameterList","parameters":[],"src":"13564:0:82"},"scope":33567,"src":"13511:97:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33154,"nodeType":"Block","src":"13666:43:82","statements":[{"expression":{"id":33152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33150,"name":"failOnAfterSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32060,"src":"13676:19:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33151,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33147,"src":"13698:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13676:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33153,"nodeType":"ExpressionStatement","src":"13676:26:82"}]},"functionSelector":"7b695d10","id":33155,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnAfterSwapHook","nameLocation":"13623:22:82","nodeType":"FunctionDefinition","parameters":{"id":33148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33147,"mutability":"mutable","name":"fail","nameLocation":"13651:4:82","nodeType":"VariableDeclaration","scope":33155,"src":"13646:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33146,"name":"bool","nodeType":"ElementaryTypeName","src":"13646:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13645:11:82"},"returnParameters":{"id":33149,"nodeType":"ParameterList","parameters":[],"src":"13666:0:82"},"scope":33567,"src":"13614:95:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33164,"nodeType":"Block","src":"13776:48:82","statements":[{"expression":{"id":33162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33160,"name":"failOnBeforeAddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32062,"src":"13786:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33161,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33157,"src":"13813:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13786:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33163,"nodeType":"ExpressionStatement","src":"13786:31:82"}]},"functionSelector":"82fb5d21","id":33165,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnBeforeAddLiquidityHook","nameLocation":"13724:31:82","nodeType":"FunctionDefinition","parameters":{"id":33158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33157,"mutability":"mutable","name":"fail","nameLocation":"13761:4:82","nodeType":"VariableDeclaration","scope":33165,"src":"13756:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33156,"name":"bool","nodeType":"ElementaryTypeName","src":"13756:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13755:11:82"},"returnParameters":{"id":33159,"nodeType":"ParameterList","parameters":[],"src":"13776:0:82"},"scope":33567,"src":"13715:109:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33174,"nodeType":"Block","src":"13890:47:82","statements":[{"expression":{"id":33172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33170,"name":"failOnAfterAddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32064,"src":"13900:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33171,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33167,"src":"13926:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13900:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33173,"nodeType":"ExpressionStatement","src":"13900:30:82"}]},"functionSelector":"6e7d75e5","id":33175,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnAfterAddLiquidityHook","nameLocation":"13839:30:82","nodeType":"FunctionDefinition","parameters":{"id":33168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33167,"mutability":"mutable","name":"fail","nameLocation":"13875:4:82","nodeType":"VariableDeclaration","scope":33175,"src":"13870:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33166,"name":"bool","nodeType":"ElementaryTypeName","src":"13870:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13869:11:82"},"returnParameters":{"id":33169,"nodeType":"ParameterList","parameters":[],"src":"13890:0:82"},"scope":33567,"src":"13830:107:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33184,"nodeType":"Block","src":"14007:51:82","statements":[{"expression":{"id":33182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33180,"name":"failOnBeforeRemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32066,"src":"14017:27:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33181,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33177,"src":"14047:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14017:34:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33183,"nodeType":"ExpressionStatement","src":"14017:34:82"}]},"functionSelector":"d4f83182","id":33185,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnBeforeRemoveLiquidityHook","nameLocation":"13952:34:82","nodeType":"FunctionDefinition","parameters":{"id":33178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33177,"mutability":"mutable","name":"fail","nameLocation":"13992:4:82","nodeType":"VariableDeclaration","scope":33185,"src":"13987:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33176,"name":"bool","nodeType":"ElementaryTypeName","src":"13987:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13986:11:82"},"returnParameters":{"id":33179,"nodeType":"ParameterList","parameters":[],"src":"14007:0:82"},"scope":33567,"src":"13943:115:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33194,"nodeType":"Block","src":"14127:50:82","statements":[{"expression":{"id":33192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33190,"name":"failOnAfterRemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32068,"src":"14137:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33191,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33187,"src":"14166:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14137:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33193,"nodeType":"ExpressionStatement","src":"14137:33:82"}]},"functionSelector":"039388ba","id":33195,"implemented":true,"kind":"function","modifiers":[],"name":"setFailOnAfterRemoveLiquidityHook","nameLocation":"14073:33:82","nodeType":"FunctionDefinition","parameters":{"id":33188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33187,"mutability":"mutable","name":"fail","nameLocation":"14112:4:82","nodeType":"VariableDeclaration","scope":33195,"src":"14107:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33186,"name":"bool","nodeType":"ElementaryTypeName","src":"14107:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14106:11:82"},"returnParameters":{"id":33189,"nodeType":"ParameterList","parameters":[],"src":"14127:0:82"},"scope":33567,"src":"14064:113:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33211,"nodeType":"Block","src":"14467:110:82","statements":[{"expression":{"id":33205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33203,"name":"changePoolBalancesOnBeforeSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32083,"src":"14477:34:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33204,"name":"changeBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33197,"src":"14514:14:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14477:51:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33206,"nodeType":"ExpressionStatement","src":"14477:51:82"},{"expression":{"id":33209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33207,"name":"_newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32121,"src":"14538:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33208,"name":"newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33200,"src":"14556:14:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14538:32:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":33210,"nodeType":"ExpressionStatement","src":"14538:32:82"}]},"functionSelector":"34e3a8c3","id":33212,"implemented":true,"kind":"function","modifiers":[],"name":"setChangePoolBalancesOnBeforeSwapHook","nameLocation":"14366:37:82","nodeType":"FunctionDefinition","parameters":{"id":33201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33197,"mutability":"mutable","name":"changeBalances","nameLocation":"14409:14:82","nodeType":"VariableDeclaration","scope":33212,"src":"14404:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33196,"name":"bool","nodeType":"ElementaryTypeName","src":"14404:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":33200,"mutability":"mutable","name":"newBalancesRaw","nameLocation":"14442:14:82","nodeType":"VariableDeclaration","scope":33212,"src":"14425:31:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33198,"name":"uint256","nodeType":"ElementaryTypeName","src":"14425:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33199,"nodeType":"ArrayTypeName","src":"14425:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14403:54:82"},"returnParameters":{"id":33202,"nodeType":"ParameterList","parameters":[],"src":"14467:0:82"},"scope":33567,"src":"14357:220:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33228,"nodeType":"Block","src":"14723:118:82","statements":[{"expression":{"id":33222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33220,"name":"changePoolBalancesOnBeforeAddLiquidityHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32085,"src":"14733:42:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33221,"name":"changeBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33214,"src":"14778:14:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14733:59:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33223,"nodeType":"ExpressionStatement","src":"14733:59:82"},{"expression":{"id":33226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33224,"name":"_newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32121,"src":"14802:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33225,"name":"newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33217,"src":"14820:14:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14802:32:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":33227,"nodeType":"ExpressionStatement","src":"14802:32:82"}]},"functionSelector":"93c4b286","id":33229,"implemented":true,"kind":"function","modifiers":[],"name":"setChangePoolBalancesOnBeforeAddLiquidityHook","nameLocation":"14592:45:82","nodeType":"FunctionDefinition","parameters":{"id":33218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33214,"mutability":"mutable","name":"changeBalances","nameLocation":"14652:14:82","nodeType":"VariableDeclaration","scope":33229,"src":"14647:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33213,"name":"bool","nodeType":"ElementaryTypeName","src":"14647:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":33217,"mutability":"mutable","name":"newBalancesRaw","nameLocation":"14693:14:82","nodeType":"VariableDeclaration","scope":33229,"src":"14676:31:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33215,"name":"uint256","nodeType":"ElementaryTypeName","src":"14676:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33216,"nodeType":"ArrayTypeName","src":"14676:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14637:76:82"},"returnParameters":{"id":33219,"nodeType":"ParameterList","parameters":[],"src":"14723:0:82"},"scope":33567,"src":"14583:258:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33245,"nodeType":"Block","src":"14990:121:82","statements":[{"expression":{"id":33239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33237,"name":"changePoolBalancesOnBeforeRemoveLiquidityHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32087,"src":"15000:45:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33238,"name":"changeBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33231,"src":"15048:14:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15000:62:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33240,"nodeType":"ExpressionStatement","src":"15000:62:82"},{"expression":{"id":33243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33241,"name":"_newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32121,"src":"15072:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33242,"name":"newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33234,"src":"15090:14:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"15072:32:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":33244,"nodeType":"ExpressionStatement","src":"15072:32:82"}]},"functionSelector":"71eff9d2","id":33246,"implemented":true,"kind":"function","modifiers":[],"name":"setChangePoolBalancesOnBeforeRemoveLiquidityHook","nameLocation":"14856:48:82","nodeType":"FunctionDefinition","parameters":{"id":33235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33231,"mutability":"mutable","name":"changeBalances","nameLocation":"14919:14:82","nodeType":"VariableDeclaration","scope":33246,"src":"14914:19:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33230,"name":"bool","nodeType":"ElementaryTypeName","src":"14914:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":33234,"mutability":"mutable","name":"newBalancesRaw","nameLocation":"14960:14:82","nodeType":"VariableDeclaration","scope":33246,"src":"14943:31:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33232,"name":"uint256","nodeType":"ElementaryTypeName","src":"14943:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33233,"nodeType":"ArrayTypeName","src":"14943:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14904:76:82"},"returnParameters":{"id":33236,"nodeType":"ParameterList","parameters":[],"src":"14990:0:82"},"scope":33567,"src":"14847:264:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33268,"nodeType":"Block","src":"15276:139:82","statements":[{"expression":{"id":33258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33256,"name":"changeTokenRateOnBeforeInitialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32077,"src":"15286:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33257,"name":"changeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33248,"src":"15322:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15286:46:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33259,"nodeType":"ExpressionStatement","src":"15286:46:82"},{"expression":{"id":33262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33260,"name":"_rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32110,"src":"15342:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33261,"name":"rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33251,"src":"15358:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"src":"15342:28:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"id":33263,"nodeType":"ExpressionStatement","src":"15342:28:82"},{"expression":{"id":33266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33264,"name":"_newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32112,"src":"15380:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33265,"name":"newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33253,"src":"15396:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15380:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33267,"nodeType":"ExpressionStatement","src":"15380:28:82"}]},"functionSelector":"5991de93","id":33269,"implemented":true,"kind":"function","modifiers":[],"name":"setChangeTokenRateOnBeforeInitializeHook","nameLocation":"15126:40:82","nodeType":"FunctionDefinition","parameters":{"id":33254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33248,"mutability":"mutable","name":"changeRate","nameLocation":"15181:10:82","nodeType":"VariableDeclaration","scope":33269,"src":"15176:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33247,"name":"bool","nodeType":"ElementaryTypeName","src":"15176:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":33251,"mutability":"mutable","name":"rateProvider","nameLocation":"15218:12:82","nodeType":"VariableDeclaration","scope":33269,"src":"15201:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"},"typeName":{"id":33250,"nodeType":"UserDefinedTypeName","pathNode":{"id":33249,"name":"RateProviderMock","nameLocations":["15201:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":34054,"src":"15201:16:82"},"referencedDeclaration":34054,"src":"15201:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"visibility":"internal"},{"constant":false,"id":33253,"mutability":"mutable","name":"newTokenRate","nameLocation":"15248:12:82","nodeType":"VariableDeclaration","scope":33269,"src":"15240:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33252,"name":"uint256","nodeType":"ElementaryTypeName","src":"15240:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15166:100:82"},"returnParameters":{"id":33255,"nodeType":"ParameterList","parameters":[],"src":"15276:0:82"},"scope":33567,"src":"15117:298:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33291,"nodeType":"Block","src":"15574:137:82","statements":[{"expression":{"id":33281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33279,"name":"changeTokenRateOnBeforeSwapHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32075,"src":"15584:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33280,"name":"changeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33271,"src":"15618:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15584:44:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33282,"nodeType":"ExpressionStatement","src":"15584:44:82"},{"expression":{"id":33285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33283,"name":"_rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32110,"src":"15638:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33284,"name":"rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33274,"src":"15654:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"src":"15638:28:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"id":33286,"nodeType":"ExpressionStatement","src":"15638:28:82"},{"expression":{"id":33289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33287,"name":"_newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32112,"src":"15676:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33288,"name":"newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33276,"src":"15692:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15676:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33290,"nodeType":"ExpressionStatement","src":"15676:28:82"}]},"functionSelector":"c25dade8","id":33292,"implemented":true,"kind":"function","modifiers":[],"name":"setChangeTokenRateOnBeforeSwapHook","nameLocation":"15430:34:82","nodeType":"FunctionDefinition","parameters":{"id":33277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33271,"mutability":"mutable","name":"changeRate","nameLocation":"15479:10:82","nodeType":"VariableDeclaration","scope":33292,"src":"15474:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33270,"name":"bool","nodeType":"ElementaryTypeName","src":"15474:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":33274,"mutability":"mutable","name":"rateProvider","nameLocation":"15516:12:82","nodeType":"VariableDeclaration","scope":33292,"src":"15499:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"},"typeName":{"id":33273,"nodeType":"UserDefinedTypeName","pathNode":{"id":33272,"name":"RateProviderMock","nameLocations":["15499:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":34054,"src":"15499:16:82"},"referencedDeclaration":34054,"src":"15499:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"visibility":"internal"},{"constant":false,"id":33276,"mutability":"mutable","name":"newTokenRate","nameLocation":"15546:12:82","nodeType":"VariableDeclaration","scope":33292,"src":"15538:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33275,"name":"uint256","nodeType":"ElementaryTypeName","src":"15538:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15464:100:82"},"returnParameters":{"id":33278,"nodeType":"ParameterList","parameters":[],"src":"15574:0:82"},"scope":33567,"src":"15421:290:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33314,"nodeType":"Block","src":"15878:141:82","statements":[{"expression":{"id":33304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33302,"name":"changeTokenRateOnBeforeAddLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32079,"src":"15888:35:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33303,"name":"changeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33294,"src":"15926:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15888:48:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33305,"nodeType":"ExpressionStatement","src":"15888:48:82"},{"expression":{"id":33308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33306,"name":"_rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32110,"src":"15946:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33307,"name":"rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33297,"src":"15962:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"src":"15946:28:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"id":33309,"nodeType":"ExpressionStatement","src":"15946:28:82"},{"expression":{"id":33312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33310,"name":"_newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32112,"src":"15984:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33311,"name":"newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33299,"src":"16000:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15984:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33313,"nodeType":"ExpressionStatement","src":"15984:28:82"}]},"functionSelector":"335d4126","id":33315,"implemented":true,"kind":"function","modifiers":[],"name":"setChangeTokenRateOnBeforeAddLiquidityHook","nameLocation":"15726:42:82","nodeType":"FunctionDefinition","parameters":{"id":33300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33294,"mutability":"mutable","name":"changeRate","nameLocation":"15783:10:82","nodeType":"VariableDeclaration","scope":33315,"src":"15778:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33293,"name":"bool","nodeType":"ElementaryTypeName","src":"15778:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":33297,"mutability":"mutable","name":"rateProvider","nameLocation":"15820:12:82","nodeType":"VariableDeclaration","scope":33315,"src":"15803:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"},"typeName":{"id":33296,"nodeType":"UserDefinedTypeName","pathNode":{"id":33295,"name":"RateProviderMock","nameLocations":["15803:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":34054,"src":"15803:16:82"},"referencedDeclaration":34054,"src":"15803:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"visibility":"internal"},{"constant":false,"id":33299,"mutability":"mutable","name":"newTokenRate","nameLocation":"15850:12:82","nodeType":"VariableDeclaration","scope":33315,"src":"15842:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33298,"name":"uint256","nodeType":"ElementaryTypeName","src":"15842:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15768:100:82"},"returnParameters":{"id":33301,"nodeType":"ParameterList","parameters":[],"src":"15878:0:82"},"scope":33567,"src":"15717:302:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33337,"nodeType":"Block","src":"16189:144:82","statements":[{"expression":{"id":33327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33325,"name":"changeTokenRateOnBeforeRemoveLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32081,"src":"16199:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33326,"name":"changeRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33317,"src":"16240:10:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16199:51:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33328,"nodeType":"ExpressionStatement","src":"16199:51:82"},{"expression":{"id":33331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33329,"name":"_rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32110,"src":"16260:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33330,"name":"rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33320,"src":"16276:12:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"src":"16260:28:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"id":33332,"nodeType":"ExpressionStatement","src":"16260:28:82"},{"expression":{"id":33335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33333,"name":"_newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32112,"src":"16298:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33334,"name":"newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33322,"src":"16314:12:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16298:28:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33336,"nodeType":"ExpressionStatement","src":"16298:28:82"}]},"functionSelector":"e62eecdd","id":33338,"implemented":true,"kind":"function","modifiers":[],"name":"setChangeTokenRateOnBeforeRemoveLiquidityHook","nameLocation":"16034:45:82","nodeType":"FunctionDefinition","parameters":{"id":33323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33317,"mutability":"mutable","name":"changeRate","nameLocation":"16094:10:82","nodeType":"VariableDeclaration","scope":33338,"src":"16089:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33316,"name":"bool","nodeType":"ElementaryTypeName","src":"16089:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":33320,"mutability":"mutable","name":"rateProvider","nameLocation":"16131:12:82","nodeType":"VariableDeclaration","scope":33338,"src":"16114:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"},"typeName":{"id":33319,"nodeType":"UserDefinedTypeName","pathNode":{"id":33318,"name":"RateProviderMock","nameLocations":["16114:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":34054,"src":"16114:16:82"},"referencedDeclaration":34054,"src":"16114:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"visibility":"internal"},{"constant":false,"id":33322,"mutability":"mutable","name":"newTokenRate","nameLocation":"16161:12:82","nodeType":"VariableDeclaration","scope":33338,"src":"16153:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33321,"name":"uint256","nodeType":"ElementaryTypeName","src":"16153:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16079:100:82"},"returnParameters":{"id":33324,"nodeType":"ParameterList","parameters":[],"src":"16189:0:82"},"scope":33567,"src":"16025:308:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33347,"nodeType":"Block","src":"16417:69:82","statements":[{"expression":{"id":33345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33343,"name":"swapReentrancyHookActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32103,"src":"16427:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33344,"name":"_swapReentrancyHookActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33340,"src":"16454:25:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16427:52:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33346,"nodeType":"ExpressionStatement","src":"16427:52:82"}]},"functionSelector":"e5e3b67e","id":33348,"implemented":true,"kind":"function","modifiers":[],"name":"setSwapReentrancyHookActive","nameLocation":"16348:27:82","nodeType":"FunctionDefinition","parameters":{"id":33341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33340,"mutability":"mutable","name":"_swapReentrancyHookActive","nameLocation":"16381:25:82","nodeType":"VariableDeclaration","scope":33348,"src":"16376:30:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33339,"name":"bool","nodeType":"ElementaryTypeName","src":"16376:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16375:32:82"},"returnParameters":{"id":33342,"nodeType":"ParameterList","parameters":[],"src":"16417:0:82"},"scope":33567,"src":"16339:147:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33363,"nodeType":"Block","src":"16575:83:82","statements":[{"expression":{"id":33357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33355,"name":"_swapHookContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32105,"src":"16585:17:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33356,"name":"hookContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33350,"src":"16605:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16585:32:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":33358,"nodeType":"ExpressionStatement","src":"16585:32:82"},{"expression":{"id":33361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33359,"name":"_swapHookCalldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32107,"src":"16627:17:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33360,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33352,"src":"16647:4:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"16627:24:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":33362,"nodeType":"ExpressionStatement","src":"16627:24:82"}]},"functionSelector":"423ef816","id":33364,"implemented":true,"kind":"function","modifiers":[],"name":"setSwapReentrancyHook","nameLocation":"16501:21:82","nodeType":"FunctionDefinition","parameters":{"id":33353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33350,"mutability":"mutable","name":"hookContract","nameLocation":"16531:12:82","nodeType":"VariableDeclaration","scope":33364,"src":"16523:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33349,"name":"address","nodeType":"ElementaryTypeName","src":"16523:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":33352,"mutability":"mutable","name":"data","nameLocation":"16560:4:82","nodeType":"VariableDeclaration","scope":33364,"src":"16545:19:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":33351,"name":"bytes","nodeType":"ElementaryTypeName","src":"16545:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16522:43:82"},"returnParameters":{"id":33354,"nodeType":"ParameterList","parameters":[],"src":"16575:0:82"},"scope":33567,"src":"16492:166:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33373,"nodeType":"Block","src":"16715:40:82","statements":[{"expression":{"id":33371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33369,"name":"_specialSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32118,"src":"16725:14:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33370,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33366,"src":"16742:6:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16725:23:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":33372,"nodeType":"ExpressionStatement","src":"16725:23:82"}]},"functionSelector":"1064dfdd","id":33374,"implemented":true,"kind":"function","modifiers":[],"name":"setSpecialSender","nameLocation":"16673:16:82","nodeType":"FunctionDefinition","parameters":{"id":33367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33366,"mutability":"mutable","name":"sender","nameLocation":"16698:6:82","nodeType":"VariableDeclaration","scope":33374,"src":"16690:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33365,"name":"address","nodeType":"ElementaryTypeName","src":"16690:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16689:16:82"},"returnParameters":{"id":33368,"nodeType":"ParameterList","parameters":[],"src":"16715:0:82"},"scope":33567,"src":"16664:91:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33383,"nodeType":"Block","src":"16831:49:82","statements":[{"expression":{"id":33381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33379,"name":"_dynamicSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32114,"src":"16841:15:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33380,"name":"dynamicSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33376,"src":"16859:14:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16841:32:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33382,"nodeType":"ExpressionStatement","src":"16841:32:82"}]},"functionSelector":"214ff4c5","id":33384,"implemented":true,"kind":"function","modifiers":[],"name":"setDynamicSwapFeePercentage","nameLocation":"16770:27:82","nodeType":"FunctionDefinition","parameters":{"id":33377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33376,"mutability":"mutable","name":"dynamicSwapFee","nameLocation":"16806:14:82","nodeType":"VariableDeclaration","scope":33384,"src":"16798:22:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33375,"name":"uint256","nodeType":"ElementaryTypeName","src":"16798:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16797:24:82"},"returnParameters":{"id":33378,"nodeType":"ParameterList","parameters":[],"src":"16831:0:82"},"scope":33567,"src":"16761:119:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33393,"nodeType":"Block","src":"16926:29:82","statements":[{"expression":{"id":33391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33389,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32116,"src":"16936:5:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33390,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33386,"src":"16944:4:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16936:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":33392,"nodeType":"ExpressionStatement","src":"16936:12:82"}]},"functionSelector":"4437152a","id":33394,"implemented":true,"kind":"function","modifiers":[],"name":"setPool","nameLocation":"16895:7:82","nodeType":"FunctionDefinition","parameters":{"id":33387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33386,"mutability":"mutable","name":"pool","nameLocation":"16911:4:82","nodeType":"VariableDeclaration","scope":33394,"src":"16903:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33385,"name":"address","nodeType":"ElementaryTypeName","src":"16903:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16902:14:82"},"returnParameters":{"id":33388,"nodeType":"ParameterList","parameters":[],"src":"16926:0:82"},"scope":33567,"src":"16886:69:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33403,"nodeType":"Block","src":"17034:64:82","statements":[{"expression":{"id":33401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33399,"name":"shouldSettleDiscount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32089,"src":"17044:20:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33400,"name":"shouldSettleDiscountFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33396,"src":"17067:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17044:47:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33402,"nodeType":"ExpressionStatement","src":"17044:47:82"}]},"functionSelector":"3478db73","id":33404,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldSettleDiscount","nameLocation":"16970:23:82","nodeType":"FunctionDefinition","parameters":{"id":33397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33396,"mutability":"mutable","name":"shouldSettleDiscountFlag","nameLocation":"16999:24:82","nodeType":"VariableDeclaration","scope":33404,"src":"16994:29:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33395,"name":"bool","nodeType":"ElementaryTypeName","src":"16994:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16993:31:82"},"returnParameters":{"id":33398,"nodeType":"ParameterList","parameters":[],"src":"17034:0:82"},"scope":33567,"src":"16961:137:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33413,"nodeType":"Block","src":"17170:54:82","statements":[{"expression":{"id":33411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33409,"name":"hookSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32091,"src":"17180:21:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33410,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33406,"src":"17204:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17180:37:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33412,"nodeType":"ExpressionStatement","src":"17180:37:82"}]},"functionSelector":"da09aacf","id":33414,"implemented":true,"kind":"function","modifiers":[],"name":"setHookSwapFeePercentage","nameLocation":"17113:24:82","nodeType":"FunctionDefinition","parameters":{"id":33407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33406,"mutability":"mutable","name":"feePercentage","nameLocation":"17146:13:82","nodeType":"VariableDeclaration","scope":33414,"src":"17138:21:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33405,"name":"uint256","nodeType":"ElementaryTypeName","src":"17138:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17137:23:82"},"returnParameters":{"id":33408,"nodeType":"ParameterList","parameters":[],"src":"17170:0:82"},"scope":33567,"src":"17104:120:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33423,"nodeType":"Block","src":"17306:64:82","statements":[{"expression":{"id":33421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33419,"name":"hookSwapDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32093,"src":"17316:26:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33420,"name":"discountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33416,"src":"17345:18:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17316:47:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33422,"nodeType":"ExpressionStatement","src":"17316:47:82"}]},"functionSelector":"fc6e0f59","id":33424,"implemented":true,"kind":"function","modifiers":[],"name":"setHookSwapDiscountPercentage","nameLocation":"17239:29:82","nodeType":"FunctionDefinition","parameters":{"id":33417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33416,"mutability":"mutable","name":"discountPercentage","nameLocation":"17277:18:82","nodeType":"VariableDeclaration","scope":33424,"src":"17269:26:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33415,"name":"uint256","nodeType":"ElementaryTypeName","src":"17269:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17268:28:82"},"returnParameters":{"id":33418,"nodeType":"ParameterList","parameters":[],"src":"17306:0:82"},"scope":33567,"src":"17230:140:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33433,"nodeType":"Block","src":"17452:66:82","statements":[{"expression":{"id":33431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33429,"name":"addLiquidityHookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32095,"src":"17462:29:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33430,"name":"hookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33426,"src":"17494:17:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17462:49:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33432,"nodeType":"ExpressionStatement","src":"17462:49:82"}]},"functionSelector":"2e55a841","id":33434,"implemented":true,"kind":"function","modifiers":[],"name":"setAddLiquidityHookFeePercentage","nameLocation":"17385:32:82","nodeType":"FunctionDefinition","parameters":{"id":33427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33426,"mutability":"mutable","name":"hookFeePercentage","nameLocation":"17426:17:82","nodeType":"VariableDeclaration","scope":33434,"src":"17418:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33425,"name":"uint256","nodeType":"ElementaryTypeName","src":"17418:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17417:27:82"},"returnParameters":{"id":33428,"nodeType":"ParameterList","parameters":[],"src":"17452:0:82"},"scope":33567,"src":"17376:142:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33443,"nodeType":"Block","src":"17610:76:82","statements":[{"expression":{"id":33441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33439,"name":"addLiquidityHookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32097,"src":"17620:34:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33440,"name":"hookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33436,"src":"17657:22:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17620:59:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33442,"nodeType":"ExpressionStatement","src":"17620:59:82"}]},"functionSelector":"dda1c15b","id":33444,"implemented":true,"kind":"function","modifiers":[],"name":"setAddLiquidityHookDiscountPercentage","nameLocation":"17533:37:82","nodeType":"FunctionDefinition","parameters":{"id":33437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33436,"mutability":"mutable","name":"hookDiscountPercentage","nameLocation":"17579:22:82","nodeType":"VariableDeclaration","scope":33444,"src":"17571:30:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33435,"name":"uint256","nodeType":"ElementaryTypeName","src":"17571:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17570:32:82"},"returnParameters":{"id":33438,"nodeType":"ParameterList","parameters":[],"src":"17610:0:82"},"scope":33567,"src":"17524:162:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33453,"nodeType":"Block","src":"17771:69:82","statements":[{"expression":{"id":33451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33449,"name":"removeLiquidityHookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32099,"src":"17781:32:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33450,"name":"hookFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33446,"src":"17816:17:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17781:52:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33452,"nodeType":"ExpressionStatement","src":"17781:52:82"}]},"functionSelector":"b445fbe7","id":33454,"implemented":true,"kind":"function","modifiers":[],"name":"setRemoveLiquidityHookFeePercentage","nameLocation":"17701:35:82","nodeType":"FunctionDefinition","parameters":{"id":33447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33446,"mutability":"mutable","name":"hookFeePercentage","nameLocation":"17745:17:82","nodeType":"VariableDeclaration","scope":33454,"src":"17737:25:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33445,"name":"uint256","nodeType":"ElementaryTypeName","src":"17737:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17736:27:82"},"returnParameters":{"id":33448,"nodeType":"ParameterList","parameters":[],"src":"17771:0:82"},"scope":33567,"src":"17692:148:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33463,"nodeType":"Block","src":"17935:79:82","statements":[{"expression":{"id":33461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33459,"name":"removeLiquidityHookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32101,"src":"17945:37:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33460,"name":"hookDiscountPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33456,"src":"17985:22:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17945:62:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33462,"nodeType":"ExpressionStatement","src":"17945:62:82"}]},"functionSelector":"34a168ec","id":33464,"implemented":true,"kind":"function","modifiers":[],"name":"setRemoveLiquidityHookDiscountPercentage","nameLocation":"17855:40:82","nodeType":"FunctionDefinition","parameters":{"id":33457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33456,"mutability":"mutable","name":"hookDiscountPercentage","nameLocation":"17904:22:82","nodeType":"VariableDeclaration","scope":33464,"src":"17896:30:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33455,"name":"uint256","nodeType":"ElementaryTypeName","src":"17896:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17895:32:82"},"returnParameters":{"id":33458,"nodeType":"ParameterList","parameters":[],"src":"17935:0:82"},"scope":33567,"src":"17846:168:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33478,"nodeType":"Block","src":"18124:129:82","statements":[{"expression":{"id":33472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33470,"name":"shouldForceHookAdjustedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32070,"src":"18134:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":33471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18167:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18134:37:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33473,"nodeType":"ExpressionStatement","src":"18134:37:82"},{"expression":{"id":33476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33474,"name":"forcedHookAdjustedAmountsLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32073,"src":"18181:34:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33475,"name":"hookAdjustedAmountsLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33467,"src":"18218:28:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"18181:65:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":33477,"nodeType":"ExpressionStatement","src":"18181:65:82"}]},"functionSelector":"0c54b1de","id":33479,"implemented":true,"kind":"function","modifiers":[],"name":"enableForcedHookAdjustedAmountsLiquidity","nameLocation":"18029:40:82","nodeType":"FunctionDefinition","parameters":{"id":33468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33467,"mutability":"mutable","name":"hookAdjustedAmountsLiquidity","nameLocation":"18087:28:82","nodeType":"VariableDeclaration","scope":33479,"src":"18070:45:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33465,"name":"uint256","nodeType":"ElementaryTypeName","src":"18070:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33466,"nodeType":"ArrayTypeName","src":"18070:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"18069:47:82"},"returnParameters":{"id":33469,"nodeType":"ParameterList","parameters":[],"src":"18124:0:82"},"scope":33567,"src":"18020:233:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33486,"nodeType":"Block","src":"18310:55:82","statements":[{"expression":{"id":33484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33482,"name":"shouldForceHookAdjustedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32070,"src":"18320:30:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":33483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18353:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"18320:38:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33485,"nodeType":"ExpressionStatement","src":"18320:38:82"}]},"functionSelector":"232b59f7","id":33487,"implemented":true,"kind":"function","modifiers":[],"name":"disableForcedHookAdjustedAmounts","nameLocation":"18268:32:82","nodeType":"FunctionDefinition","parameters":{"id":33480,"nodeType":"ParameterList","parameters":[],"src":"18300:2:82"},"returnParameters":{"id":33481,"nodeType":"ParameterList","parameters":[],"src":"18310:0:82"},"scope":33567,"src":"18259:106:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33498,"nodeType":"Block","src":"18419:50:82","statements":[{"expression":{"id":33496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":33492,"name":"_allowedFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32129,"src":"18429:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":33494,"indexExpression":{"id":33493,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33489,"src":"18447:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18429:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":33495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18458:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"18429:33:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33497,"nodeType":"ExpressionStatement","src":"18429:33:82"}]},"functionSelector":"8f5fae62","id":33499,"implemented":true,"kind":"function","modifiers":[],"name":"allowFactory","nameLocation":"18380:12:82","nodeType":"FunctionDefinition","parameters":{"id":33490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33489,"mutability":"mutable","name":"factory","nameLocation":"18401:7:82","nodeType":"VariableDeclaration","scope":33499,"src":"18393:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33488,"name":"address","nodeType":"ElementaryTypeName","src":"18393:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18392:17:82"},"returnParameters":{"id":33491,"nodeType":"ParameterList","parameters":[],"src":"18419:0:82"},"scope":33567,"src":"18371:98:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33510,"nodeType":"Block","src":"18522:51:82","statements":[{"expression":{"id":33508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":33504,"name":"_allowedFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32129,"src":"18532:17:82","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":33506,"indexExpression":{"id":33505,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33501,"src":"18550:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18532:26:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":33507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18561:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"18532:34:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33509,"nodeType":"ExpressionStatement","src":"18532:34:82"}]},"functionSelector":"dc7776ca","id":33511,"implemented":true,"kind":"function","modifiers":[],"name":"denyFactory","nameLocation":"18484:11:82","nodeType":"FunctionDefinition","parameters":{"id":33502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33501,"mutability":"mutable","name":"factory","nameLocation":"18504:7:82","nodeType":"VariableDeclaration","scope":33511,"src":"18496:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33500,"name":"address","nodeType":"ElementaryTypeName","src":"18496:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18495:17:82"},"returnParameters":{"id":33503,"nodeType":"ParameterList","parameters":[],"src":"18522:0:82"},"scope":33567,"src":"18475:98:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33520,"nodeType":"Block","src":"18636:48:82","statements":[{"expression":{"id":33518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33516,"name":"shouldIgnoreSavedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32123,"src":"18646:23:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33513,"src":"18672:5:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18646:31:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33519,"nodeType":"ExpressionStatement","src":"18646:31:82"}]},"functionSelector":"68c6db6a","id":33521,"implemented":true,"kind":"function","modifiers":[],"name":"setShouldIgnoreSavedSender","nameLocation":"18588:26:82","nodeType":"FunctionDefinition","parameters":{"id":33514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33513,"mutability":"mutable","name":"value","nameLocation":"18620:5:82","nodeType":"VariableDeclaration","scope":33521,"src":"18615:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33512,"name":"bool","nodeType":"ElementaryTypeName","src":"18615:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18614:12:82"},"returnParameters":{"id":33515,"nodeType":"ParameterList","parameters":[],"src":"18636:0:82"},"scope":33567,"src":"18579:105:82","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33528,"nodeType":"Block","src":"18748:36:82","statements":[{"expression":{"id":33526,"name":"_savedSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32125,"src":"18765:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":33525,"id":33527,"nodeType":"Return","src":"18758:19:82"}]},"functionSelector":"6a9a0611","id":33529,"implemented":true,"kind":"function","modifiers":[],"name":"getSavedSender","nameLocation":"18699:14:82","nodeType":"FunctionDefinition","parameters":{"id":33522,"nodeType":"ParameterList","parameters":[],"src":"18713:2:82"},"returnParameters":{"id":33525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33529,"src":"18739:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33523,"name":"address","nodeType":"ElementaryTypeName","src":"18739:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18738:9:82"},"scope":33567,"src":"18690:94:82","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":33538,"nodeType":"Block","src":"19001:54:82","statements":[{"expression":{"arguments":[{"id":33535,"name":"_newTokenRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32112,"src":"19034:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":33532,"name":"_rateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32110,"src":"19011:13:82","typeDescriptions":{"typeIdentifier":"t_contract$_RateProviderMock_$34054","typeString":"contract RateProviderMock"}},"id":33534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19025:8:82","memberName":"mockRate","nodeType":"MemberAccess","referencedDeclaration":34053,"src":"19011:22:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":33536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19011:37:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33537,"nodeType":"ExpressionStatement","src":"19011:37:82"}]},"id":33539,"implemented":true,"kind":"function","modifiers":[],"name":"_updateTokenRate","nameLocation":"18974:16:82","nodeType":"FunctionDefinition","parameters":{"id":33530,"nodeType":"ParameterList","parameters":[],"src":"18990:2:82"},"returnParameters":{"id":33531,"nodeType":"ParameterList","parameters":[],"src":"19001:0:82"},"scope":33567,"src":"18965:90:82","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":33565,"nodeType":"Block","src":"19100:288:82","statements":[{"assignments":[33546],"declarations":[{"constant":false,"id":33546,"mutability":"mutable","name":"poolTokens","nameLocation":"19126:10:82","nodeType":"VariableDeclaration","scope":33565,"src":"19110:26:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":33544,"nodeType":"UserDefinedTypeName","pathNode":{"id":33543,"name":"IERC20","nameLocations":["19110:6:82"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"19110:6:82"},"referencedDeclaration":39274,"src":"19110:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":33545,"nodeType":"ArrayTypeName","src":"19110:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":33551,"initialValue":{"arguments":[{"id":33549,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32116,"src":"19160:5:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":33547,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"19139:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":33548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19146:13:82","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"19139:20:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":33550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19139:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"19110:56:82"},{"expression":{"arguments":[{"id":33559,"name":"_pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32116,"src":"19329:5:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":33560,"name":"poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33546,"src":"19336:10:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":33561,"name":"_newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32121,"src":"19348:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},{"id":33562,"name":"_newBalancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32121,"src":"19365:15:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"},{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}],"expression":{"arguments":[{"arguments":[{"id":33555,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"19289:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":33554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19281:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33553,"name":"address","nodeType":"ElementaryTypeName","src":"19281:7:82","typeDescriptions":{}}},"id":33556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19281:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":33552,"name":"IVaultMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"19270:10:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultMock_$1275_$","typeString":"type(contract IVaultMock)"}},"id":33557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19270:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$1275","typeString":"contract IVaultMock"}},"id":33558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19298:30:82","memberName":"manualSetPoolTokensAndBalances","nodeType":"MemberAccess","referencedDeclaration":552,"src":"19270:58:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,contract IERC20[] memory,uint256[] memory,uint256[] memory) external"}},"id":33563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19270:111:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33564,"nodeType":"ExpressionStatement","src":"19270:111:82"}]},"id":33566,"implemented":true,"kind":"function","modifiers":[],"name":"_setBalancesInVault","nameLocation":"19070:19:82","nodeType":"FunctionDefinition","parameters":{"id":33540,"nodeType":"ParameterList","parameters":[],"src":"19089:2:82"},"returnParameters":{"id":33541,"nodeType":"ParameterList","parameters":[],"src":"19100:0:82"},"scope":33567,"src":"19061:327:82","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":33568,"src":"905:18485:82","usedErrors":[39634,39639,39642],"usedEvents":[]}],"src":"46:19345:82"},"id":82},"@balancer-labs/v3-vault/contracts/test/PoolMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/PoolMock.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BalancerPoolToken":[10732],"BasePoolAuthentication":[4736],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"FixedPoint":[7834],"HookFlags":[4409],"HooksConfig":[4433],"IBasePool":[1366],"IERC20":[39274],"IERC4626":[38998],"IPoolLiquidity":[1943],"IRateProvider":[150],"IVault":[2893],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolInfo":[5247],"PoolMock":[33909],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":33910,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":33569,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:83"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol","id":33571,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":1944,"src":"72:97:83","symbolAliases":[{"foreign":{"id":33570,"name":"IPoolLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"81:14:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","id":33573,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":1367,"src":"170:87:83","symbolAliases":[{"foreign":{"id":33572,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"179:9:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":33575,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":2894,"src":"258:81:83","symbolAliases":[{"foreign":{"id":33574,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"267:6:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":33576,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":4654,"src":"340:69:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol","file":"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol","id":33578,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":4737,"src":"411:107:83","symbolAliases":[{"foreign":{"id":33577,"name":"BasePoolAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"420:22:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol","file":"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol","id":33580,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":5248,"src":"519:79:83","symbolAliases":[{"foreign":{"id":33579,"name":"PoolInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5247,"src":"528:8:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":33582,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":7835,"src":"600:92:83","symbolAliases":[{"foreign":{"id":33581,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"609:10:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol","file":"../BalancerPoolToken.sol","id":33584,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":33910,"sourceUnit":10733,"src":"694:61:83","symbolAliases":[{"foreign":{"id":33583,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"703:17:83","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":33585,"name":"IBasePool","nameLocations":["778:9:83"],"nodeType":"IdentifierPath","referencedDeclaration":1366,"src":"778:9:83"},"id":33586,"nodeType":"InheritanceSpecifier","src":"778:9:83"},{"baseName":{"id":33587,"name":"IPoolLiquidity","nameLocations":["789:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":1943,"src":"789:14:83"},"id":33588,"nodeType":"InheritanceSpecifier","src":"789:14:83"},{"baseName":{"id":33589,"name":"BalancerPoolToken","nameLocations":["805:17:83"],"nodeType":"IdentifierPath","referencedDeclaration":10732,"src":"805:17:83"},"id":33590,"nodeType":"InheritanceSpecifier","src":"805:17:83"},{"baseName":{"id":33591,"name":"BasePoolAuthentication","nameLocations":["824:22:83"],"nodeType":"IdentifierPath","referencedDeclaration":4736,"src":"824:22:83"},"id":33592,"nodeType":"InheritanceSpecifier","src":"824:22:83"},{"baseName":{"id":33593,"name":"PoolInfo","nameLocations":["848:8:83"],"nodeType":"IdentifierPath","referencedDeclaration":5247,"src":"848:8:83"},"id":33594,"nodeType":"InheritanceSpecifier","src":"848:8:83"}],"canonicalName":"PoolMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":33909,"linearizedBaseContracts":[33909,5247,54,4736,5327,130,10732,27688,41305,41317,40050,41207,39023,150,39336,39300,39274,1943,1366,2855,2839],"name":"PoolMock","nameLocation":"766:8:83","nodeType":"ContractDefinition","nodes":[{"global":false,"id":33597,"libraryName":{"id":33595,"name":"FixedPoint","nameLocations":["869:10:83"],"nodeType":"IdentifierPath","referencedDeclaration":7834,"src":"869:10:83"},"nodeType":"UsingForDirective","src":"863:29:83","typeName":{"id":33596,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":33601,"mutability":"mutable","name":"_multiplier","nameLocation":"997:11:83","nodeType":"VariableDeclaration","scope":33909,"src":"981:44:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33598,"name":"uint256","nodeType":"ElementaryTypeName","src":"981:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"expression":{"id":33599,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"1011:10:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":33600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1022:3:83","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"1011:14:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":33603,"mutability":"mutable","name":"_mockRate","nameLocation":"1167:9:83","nodeType":"VariableDeclaration","scope":33909,"src":"1151:25:83","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33602,"name":"uint256","nodeType":"ElementaryTypeName","src":"1151:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":33626,"nodeType":"Block","src":"1378:56:83","statements":[]},"id":33627,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":33613,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33606,"src":"1299:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":33614,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33608,"src":"1306:4:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":33615,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33610,"src":"1312:6:83","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":33616,"kind":"baseConstructorSpecifier","modifierName":{"id":33612,"name":"BalancerPoolToken","nameLocations":["1281:17:83"],"nodeType":"IdentifierPath","referencedDeclaration":10732,"src":"1281:17:83"},"nodeType":"ModifierInvocation","src":"1281:38:83"},{"arguments":[{"id":33618,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33606,"src":"1343:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"expression":{"id":33619,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1350:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":33620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1354:6:83","memberName":"sender","nodeType":"MemberAccess","src":"1350:10:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":33621,"kind":"baseConstructorSpecifier","modifierName":{"id":33617,"name":"BasePoolAuthentication","nameLocations":["1320:22:83"],"nodeType":"IdentifierPath","referencedDeclaration":4736,"src":"1320:22:83"},"nodeType":"ModifierInvocation","src":"1320:41:83"},{"arguments":[{"id":33623,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33606,"src":"1371:5:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":33624,"kind":"baseConstructorSpecifier","modifierName":{"id":33622,"name":"PoolInfo","nameLocations":["1362:8:83"],"nodeType":"IdentifierPath","referencedDeclaration":5247,"src":"1362:8:83"},"nodeType":"ModifierInvocation","src":"1362:15:83"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":33611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33606,"mutability":"mutable","name":"vault","nameLocation":"1211:5:83","nodeType":"VariableDeclaration","scope":33627,"src":"1204:12:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":33605,"nodeType":"UserDefinedTypeName","pathNode":{"id":33604,"name":"IVault","nameLocations":["1204:6:83"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1204:6:83"},"referencedDeclaration":2893,"src":"1204:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":33608,"mutability":"mutable","name":"name","nameLocation":"1240:4:83","nodeType":"VariableDeclaration","scope":33627,"src":"1226:18:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":33607,"name":"string","nodeType":"ElementaryTypeName","src":"1226:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":33610,"mutability":"mutable","name":"symbol","nameLocation":"1268:6:83","nodeType":"VariableDeclaration","scope":33627,"src":"1254:20:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":33609,"name":"string","nodeType":"ElementaryTypeName","src":"1254:6:83","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1194:86:83"},"returnParameters":{"id":33625,"nodeType":"ParameterList","parameters":[],"src":"1378:0:83"},"scope":33909,"src":"1183:251:83","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1343],"body":{"id":33662,"nodeType":"Block","src":"1533:187:83","statements":[{"assignments":[33639],"declarations":[{"constant":false,"id":33639,"mutability":"mutable","name":"invariant","nameLocation":"1574:9:83","nodeType":"VariableDeclaration","scope":33662,"src":"1566:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33638,"name":"uint256","nodeType":"ElementaryTypeName","src":"1566:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33640,"nodeType":"VariableDeclarationStatement","src":"1566:17:83"},{"body":{"id":33658,"nodeType":"Block","src":"1639:49:83","statements":[{"expression":{"id":33656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33652,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33639,"src":"1653:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":33653,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33630,"src":"1666:8:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33655,"indexExpression":{"id":33654,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33642,"src":"1675:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1666:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1653:24:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33657,"nodeType":"ExpressionStatement","src":"1653:24:83"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33645,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33642,"src":"1613:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":33646,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33630,"src":"1617:8:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1626:6:83","memberName":"length","nodeType":"MemberAccess","src":"1617:15:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1613:19:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":33659,"initializationExpression":{"assignments":[33642],"declarations":[{"constant":false,"id":33642,"mutability":"mutable","name":"i","nameLocation":"1606:1:83","nodeType":"VariableDeclaration","scope":33659,"src":"1598:9:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1598:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33644,"initialValue":{"hexValue":"30","id":33643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1610:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1598:13:83"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":33650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1634:3:83","subExpression":{"id":33649,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33642,"src":"1636:1:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33651,"nodeType":"ExpressionStatement","src":"1634:3:83"},"nodeType":"ForStatement","src":"1593:95:83"},{"expression":{"id":33660,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33639,"src":"1704:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33637,"id":33661,"nodeType":"Return","src":"1697:16:83"}]},"functionSelector":"984de9e8","id":33663,"implemented":true,"kind":"function","modifiers":[],"name":"computeInvariant","nameLocation":"1449:16:83","nodeType":"FunctionDefinition","parameters":{"id":33634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33630,"mutability":"mutable","name":"balances","nameLocation":"1483:8:83","nodeType":"VariableDeclaration","scope":33663,"src":"1466:25:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33628,"name":"uint256","nodeType":"ElementaryTypeName","src":"1466:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33629,"nodeType":"ArrayTypeName","src":"1466:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33663,"src":"1493:8:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":33632,"nodeType":"UserDefinedTypeName","pathNode":{"id":33631,"name":"Rounding","nameLocations":["1493:8:83"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"1493:8:83"},"referencedDeclaration":4514,"src":"1493:8:83","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"1465:37:83"},"returnParameters":{"id":33637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33663,"src":"1524:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33635,"name":"uint256","nodeType":"ElementaryTypeName","src":"1524:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1523:9:83"},"scope":33909,"src":"1440:280:83","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[1356],"body":{"id":33696,"nodeType":"Block","src":"1926:196:83","statements":[{"assignments":[33677],"declarations":[{"constant":false,"id":33677,"mutability":"mutable","name":"invariant","nameLocation":"1967:9:83","nodeType":"VariableDeclaration","scope":33696,"src":"1959:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33676,"name":"uint256","nodeType":"ElementaryTypeName","src":"1959:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":33683,"initialValue":{"arguments":[{"id":33679,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33667,"src":"1996:8:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":33680,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"2006:8:83","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":33681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2015:10:83","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"2006:19:83","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":33678,"name":"computeInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33663,"src":"1979:16:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_enum$_Rounding_$4514_$returns$_t_uint256_$","typeString":"function (uint256[] memory,enum Rounding) pure returns (uint256)"}},"id":33682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1979:47:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1959:67:83"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":33684,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33667,"src":"2044:8:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33686,"indexExpression":{"id":33685,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33669,"src":"2053:12:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2044:22:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"id":33689,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33671,"src":"2087:14:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":33687,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33677,"src":"2069:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2079:7:83","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"2069:17:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":33690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2069:33:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2044:58:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":33692,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2043:60:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":33693,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33677,"src":"2106:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2043:72:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33675,"id":33695,"nodeType":"Return","src":"2036:79:83"}]},"documentation":{"id":33664,"nodeType":"StructuredDocumentation","src":"1726:25:83","text":"@inheritdoc IBasePool"},"functionSelector":"16a0b3e0","id":33697,"implemented":true,"kind":"function","modifiers":[],"name":"computeBalance","nameLocation":"1765:14:83","nodeType":"FunctionDefinition","parameters":{"id":33672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33667,"mutability":"mutable","name":"balances","nameLocation":"1806:8:83","nodeType":"VariableDeclaration","scope":33697,"src":"1789:25:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33665,"name":"uint256","nodeType":"ElementaryTypeName","src":"1789:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33666,"nodeType":"ArrayTypeName","src":"1789:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33669,"mutability":"mutable","name":"tokenInIndex","nameLocation":"1832:12:83","nodeType":"VariableDeclaration","scope":33697,"src":"1824:20:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33668,"name":"uint256","nodeType":"ElementaryTypeName","src":"1824:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":33671,"mutability":"mutable","name":"invariantRatio","nameLocation":"1862:14:83","nodeType":"VariableDeclaration","scope":33697,"src":"1854:22:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33670,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1779:103:83"},"returnParameters":{"id":33675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33674,"mutability":"mutable","name":"newBalance","nameLocation":"1914:10:83","nodeType":"VariableDeclaration","scope":33697,"src":"1906:18:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33673,"name":"uint256","nodeType":"ElementaryTypeName","src":"1906:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1905:20:83"},"scope":33909,"src":"1756:366:83","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":33706,"nodeType":"Block","src":"2183:44:83","statements":[{"expression":{"id":33704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33702,"name":"_multiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33601,"src":"2193:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33703,"name":"newMultiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33699,"src":"2207:13:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2193:27:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33705,"nodeType":"ExpressionStatement","src":"2193:27:83"}]},"functionSelector":"641579a6","id":33707,"implemented":true,"kind":"function","modifiers":[],"name":"setMultiplier","nameLocation":"2137:13:83","nodeType":"FunctionDefinition","parameters":{"id":33700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33699,"mutability":"mutable","name":"newMultiplier","nameLocation":"2159:13:83","nodeType":"VariableDeclaration","scope":33707,"src":"2151:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33698,"name":"uint256","nodeType":"ElementaryTypeName","src":"2151:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2150:23:83"},"returnParameters":{"id":33701,"nodeType":"ParameterList","parameters":[],"src":"2183:0:83"},"scope":33909,"src":"2128:99:83","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1365],"body":{"id":33733,"nodeType":"Block","src":"2339:200:83","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":33720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":33716,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33710,"src":"2368:6:83","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams calldata"}},"id":33717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2375:4:83","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4540,"src":"2368:11:83","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":33718,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"2383:8:83","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":33719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2392:8:83","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"2383:17:83","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"2368:32:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":33729,"name":"_multiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33601,"src":"2520:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":33726,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33710,"src":"2485:6:83","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams calldata"}},"id":33727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2492:19:83","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"2485:26:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2512:7:83","memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"2485:34:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":33730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2485:47:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2368:164:83","trueExpression":{"arguments":[{"id":33724,"name":"_multiplier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33601,"src":"2454:11:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":33721,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33710,"src":"2419:6:83","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams calldata"}},"id":33722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2426:19:83","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"2419:26:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2446:7:83","memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":7579,"src":"2419:34:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":33725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2419:47:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33715,"id":33732,"nodeType":"Return","src":"2349:183:83"}]},"functionSelector":"72c98186","id":33734,"implemented":true,"kind":"function","modifiers":[],"name":"onSwap","nameLocation":"2242:6:83","nodeType":"FunctionDefinition","overrides":{"id":33712,"nodeType":"OverrideSpecifier","overrides":[],"src":"2295:8:83"},"parameters":{"id":33711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33710,"mutability":"mutable","name":"params","nameLocation":"2273:6:83","nodeType":"VariableDeclaration","scope":33734,"src":"2249:30:83","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_calldata_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":33709,"nodeType":"UserDefinedTypeName","pathNode":{"id":33708,"name":"PoolSwapParams","nameLocations":["2249:14:83"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"2249:14:83"},"referencedDeclaration":4554,"src":"2249:14:83","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"2248:32:83"},"returnParameters":{"id":33715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33714,"mutability":"mutable","name":"amountCalculated","nameLocation":"2321:16:83","nodeType":"VariableDeclaration","scope":33734,"src":"2313:24:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33713,"name":"uint256","nodeType":"ElementaryTypeName","src":"2313:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2312:26:83"},"scope":33909,"src":"2233:306:83","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1916],"body":{"id":33771,"nodeType":"Block","src":"2826:117:83","statements":[{"expression":{"components":[{"id":33760,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33739,"src":"2844:20:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":33761,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33741,"src":"2866:15:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":33765,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33739,"src":"2897:20:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2918:6:83","memberName":"length","nodeType":"MemberAccess","src":"2897:27:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2883:13:83","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":33762,"name":"uint256","nodeType":"ElementaryTypeName","src":"2887:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33763,"nodeType":"ArrayTypeName","src":"2887:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":33767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2883:42:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":33768,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33746,"src":"2927:8:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":33769,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2843:93:83","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,uint256[] memory,bytes memory)"}},"functionReturnParameters":33759,"id":33770,"nodeType":"Return","src":"2836:100:83"}]},"functionSelector":"e4c43663","id":33772,"implemented":true,"kind":"function","modifiers":[],"name":"onAddLiquidityCustom","nameLocation":"2554:20:83","nodeType":"FunctionDefinition","overrides":{"id":33748,"nodeType":"OverrideSpecifier","overrides":[],"src":"2749:8:83"},"parameters":{"id":33747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33772,"src":"2584:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33735,"name":"address","nodeType":"ElementaryTypeName","src":"2584:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":33739,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"2618:20:83","nodeType":"VariableDeclaration","scope":33772,"src":"2601:37:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33737,"name":"uint256","nodeType":"ElementaryTypeName","src":"2601:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33738,"nodeType":"ArrayTypeName","src":"2601:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33741,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"2656:15:83","nodeType":"VariableDeclaration","scope":33772,"src":"2648:23:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33740,"name":"uint256","nodeType":"ElementaryTypeName","src":"2648:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":33744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33772,"src":"2681:16:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33742,"name":"uint256","nodeType":"ElementaryTypeName","src":"2681:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33743,"nodeType":"ArrayTypeName","src":"2681:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33746,"mutability":"mutable","name":"userData","nameLocation":"2720:8:83","nodeType":"VariableDeclaration","scope":33772,"src":"2707:21:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33745,"name":"bytes","nodeType":"ElementaryTypeName","src":"2707:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2574:160:83"},"returnParameters":{"id":33759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33772,"src":"2767:16:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33749,"name":"uint256","nodeType":"ElementaryTypeName","src":"2767:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33750,"nodeType":"ArrayTypeName","src":"2767:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33772,"src":"2785:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33752,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":33756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33772,"src":"2794:16:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33754,"name":"uint256","nodeType":"ElementaryTypeName","src":"2794:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33755,"nodeType":"ArrayTypeName","src":"2794:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33772,"src":"2812:12:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33757,"name":"bytes","nodeType":"ElementaryTypeName","src":"2812:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2766:59:83"},"scope":33909,"src":"2545:398:83","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[1942],"body":{"id":33809,"nodeType":"Block","src":"3225:102:83","statements":[{"expression":{"components":[{"id":33798,"name":"maxBptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33776,"src":"3243:14:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":33799,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33779,"src":"3259:13:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"expression":{"id":33803,"name":"minAmountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33779,"src":"3288:13:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":33804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3302:6:83","memberName":"length","nodeType":"MemberAccess","src":"3288:20:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":33802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3274:13:83","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":33800,"name":"uint256","nodeType":"ElementaryTypeName","src":"3278:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33801,"nodeType":"ArrayTypeName","src":"3278:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":33805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3274:35:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":33806,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33784,"src":"3311:8:83","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":33807,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3242:78:83","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"functionReturnParameters":33797,"id":33808,"nodeType":"Return","src":"3235:85:83"}]},"functionSelector":"ab68e28c","id":33810,"implemented":true,"kind":"function","modifiers":[],"name":"onRemoveLiquidityCustom","nameLocation":"2958:23:83","nodeType":"FunctionDefinition","overrides":{"id":33786,"nodeType":"OverrideSpecifier","overrides":[],"src":"3148:8:83"},"parameters":{"id":33785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33774,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33810,"src":"2991:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33773,"name":"address","nodeType":"ElementaryTypeName","src":"2991:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":33776,"mutability":"mutable","name":"maxBptAmountIn","nameLocation":"3016:14:83","nodeType":"VariableDeclaration","scope":33810,"src":"3008:22:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33775,"name":"uint256","nodeType":"ElementaryTypeName","src":"3008:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":33779,"mutability":"mutable","name":"minAmountsOut","nameLocation":"3057:13:83","nodeType":"VariableDeclaration","scope":33810,"src":"3040:30:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33777,"name":"uint256","nodeType":"ElementaryTypeName","src":"3040:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33778,"nodeType":"ArrayTypeName","src":"3040:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33810,"src":"3080:16:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33780,"name":"uint256","nodeType":"ElementaryTypeName","src":"3080:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33781,"nodeType":"ArrayTypeName","src":"3080:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33784,"mutability":"mutable","name":"userData","nameLocation":"3119:8:83","nodeType":"VariableDeclaration","scope":33810,"src":"3106:21:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33783,"name":"bytes","nodeType":"ElementaryTypeName","src":"3106:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2981:152:83"},"returnParameters":{"id":33797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33788,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33810,"src":"3166:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33787,"name":"uint256","nodeType":"ElementaryTypeName","src":"3166:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":33791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33810,"src":"3175:16:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33789,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33790,"nodeType":"ArrayTypeName","src":"3175:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33810,"src":"3193:16:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33792,"name":"uint256","nodeType":"ElementaryTypeName","src":"3193:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33793,"nodeType":"ArrayTypeName","src":"3193:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":33796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33810,"src":"3211:12:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33795,"name":"bytes","nodeType":"ElementaryTypeName","src":"3211:5:83","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3165:59:83"},"scope":33909,"src":"2949:378:83","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":33825,"nodeType":"Block","src":"3388:78:83","statements":[{"expression":{"arguments":[{"hexValue":"546573744576656e74","id":33818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3424:11:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_e8f134cb39cbc51b2dd43af32059dcd508e608e59c8050a30ca3bdd623bd84c5","typeString":"literal_string \"TestEvent\""},"value":"TestEvent"},{"arguments":[{"id":33821,"name":"testValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33812,"src":"3448:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":33819,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3437:3:83","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":33820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3441:6:83","memberName":"encode","nodeType":"MemberAccess","src":"3437:10:83","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":33822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3437:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e8f134cb39cbc51b2dd43af32059dcd508e608e59c8050a30ca3bdd623bd84c5","typeString":"literal_string \"TestEvent\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":33815,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3398:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":33817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3405:18:83","memberName":"emitAuxiliaryEvent","nodeType":"MemberAccess","referencedDeclaration":4200,"src":"3398:25:83","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,bytes memory) external"}},"id":33823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3398:61:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33824,"nodeType":"ExpressionStatement","src":"3398:61:83"}]},"functionSelector":"b0e2e403","id":33826,"implemented":true,"kind":"function","modifiers":[],"name":"mockEventFunction","nameLocation":"3342:17:83","nodeType":"FunctionDefinition","parameters":{"id":33813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33812,"mutability":"mutable","name":"testValue","nameLocation":"3368:9:83","nodeType":"VariableDeclaration","scope":33826,"src":"3360:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33811,"name":"uint256","nodeType":"ElementaryTypeName","src":"3360:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3359:19:83"},"returnParameters":{"id":33814,"nodeType":"ParameterList","parameters":[],"src":"3388:0:83"},"scope":33909,"src":"3333:133:83","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":33844,"nodeType":"Block","src":"3652:77:83","statements":[{"expression":{"id":33842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":33833,"name":"scalingFactors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33831,"src":"3663:14:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":33834,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3662:18:83","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":33839,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3716:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolMock_$33909","typeString":"contract PoolMock"}],"id":33838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3708:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33837,"name":"address","nodeType":"ElementaryTypeName","src":"3708:7:83","typeDescriptions":{}}},"id":33840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3708:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":33835,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3683:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":33836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3690:17:83","memberName":"getPoolTokenRates","nodeType":"MemberAccess","referencedDeclaration":3939,"src":"3683:24:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (uint256[] memory,uint256[] memory)"}},"id":33841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3683:39:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory)"}},"src":"3662:60:83","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":33843,"nodeType":"ExpressionStatement","src":"3662:60:83"}]},"documentation":{"id":33827,"nodeType":"StructuredDocumentation","src":"3472:83:83","text":"@dev Even though pools do not handle scaling, we still need this for the tests."},"functionSelector":"360c340f","id":33845,"implemented":true,"kind":"function","modifiers":[],"name":"getDecimalScalingFactors","nameLocation":"3569:24:83","nodeType":"FunctionDefinition","parameters":{"id":33828,"nodeType":"ParameterList","parameters":[],"src":"3593:2:83"},"returnParameters":{"id":33832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33831,"mutability":"mutable","name":"scalingFactors","nameLocation":"3636:14:83","nodeType":"VariableDeclaration","scope":33845,"src":"3619:31:83","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":33829,"name":"uint256","nodeType":"ElementaryTypeName","src":"3619:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33830,"nodeType":"ArrayTypeName","src":"3619:9:83","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3618:33:83"},"scope":33909,"src":"3560:169:83","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2832],"body":{"id":33853,"nodeType":"Block","src":"3815:25:83","statements":[{"expression":{"hexValue":"30","id":33851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3832:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":33850,"id":33852,"nodeType":"Return","src":"3825:8:83"}]},"functionSelector":"ce20ece7","id":33854,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumSwapFeePercentage","nameLocation":"3744:27:83","nodeType":"FunctionDefinition","overrides":{"id":33847,"nodeType":"OverrideSpecifier","overrides":[],"src":"3788:8:83"},"parameters":{"id":33846,"nodeType":"ParameterList","parameters":[],"src":"3771:2:83"},"returnParameters":{"id":33850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33854,"src":"3806:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33848,"name":"uint256","nodeType":"ElementaryTypeName","src":"3806:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3805:9:83"},"scope":33909,"src":"3735:105:83","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2838],"body":{"id":33863,"nodeType":"Block","src":"3926:38:83","statements":[{"expression":{"expression":{"id":33860,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"3943:10:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":33861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3954:3:83","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"3943:14:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33859,"id":33862,"nodeType":"Return","src":"3936:21:83"}]},"functionSelector":"654cf15d","id":33864,"implemented":true,"kind":"function","modifiers":[],"name":"getMaximumSwapFeePercentage","nameLocation":"3855:27:83","nodeType":"FunctionDefinition","overrides":{"id":33856,"nodeType":"OverrideSpecifier","overrides":[],"src":"3899:8:83"},"parameters":{"id":33855,"nodeType":"ParameterList","parameters":[],"src":"3882:2:83"},"returnParameters":{"id":33859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33858,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33864,"src":"3917:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33857,"name":"uint256","nodeType":"ElementaryTypeName","src":"3917:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3916:9:83"},"scope":33909,"src":"3846:118:83","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2848],"body":{"id":33872,"nodeType":"Block","src":"4055:25:83","statements":[{"expression":{"hexValue":"30","id":33870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4072:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":33869,"id":33871,"nodeType":"Return","src":"4065:8:83"}]},"functionSelector":"b677fa56","id":33873,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumInvariantRatio","nameLocation":"3979:24:83","nodeType":"FunctionDefinition","overrides":{"id":33866,"nodeType":"OverrideSpecifier","overrides":[],"src":"4028:8:83"},"parameters":{"id":33865,"nodeType":"ParameterList","parameters":[],"src":"4003:2:83"},"returnParameters":{"id":33869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33873,"src":"4046:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33867,"name":"uint256","nodeType":"ElementaryTypeName","src":"4046:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4045:9:83"},"scope":33909,"src":"3970:110:83","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[2854],"body":{"id":33881,"nodeType":"Block","src":"4171:77:83","statements":[{"expression":{"hexValue":"31653430","id":33879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4188:4:83","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(33 digits omitted)...0000"},"value":"1e40"},"functionReturnParameters":33878,"id":33880,"nodeType":"Return","src":"4181:11:83"}]},"functionSelector":"273c1adf","id":33882,"implemented":true,"kind":"function","modifiers":[],"name":"getMaximumInvariantRatio","nameLocation":"4095:24:83","nodeType":"FunctionDefinition","overrides":{"id":33875,"nodeType":"OverrideSpecifier","overrides":[],"src":"4144:8:83"},"parameters":{"id":33874,"nodeType":"ParameterList","parameters":[],"src":"4119:2:83"},"returnParameters":{"id":33878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33882,"src":"4162:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33876,"name":"uint256","nodeType":"ElementaryTypeName","src":"4162:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4161:9:83"},"scope":33909,"src":"4086:162:83","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":33891,"nodeType":"Block","src":"4302:37:83","statements":[{"expression":{"id":33889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":33887,"name":"_mockRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33603,"src":"4312:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33888,"name":"mockRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33884,"src":"4324:8:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4312:20:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33890,"nodeType":"ExpressionStatement","src":"4312:20:83"}]},"functionSelector":"4cfe8d1a","id":33892,"implemented":true,"kind":"function","modifiers":[],"name":"setMockRate","nameLocation":"4263:11:83","nodeType":"FunctionDefinition","parameters":{"id":33885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33884,"mutability":"mutable","name":"mockRate","nameLocation":"4283:8:83","nodeType":"VariableDeclaration","scope":33892,"src":"4275:16:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33883,"name":"uint256","nodeType":"ElementaryTypeName","src":"4275:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4274:18:83"},"returnParameters":{"id":33886,"nodeType":"ParameterList","parameters":[],"src":"4302:0:83"},"scope":33909,"src":"4254:85:83","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10731],"body":{"id":33907,"nodeType":"Block","src":"4403:68:83","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":33900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":33898,"name":"_mockRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33603,"src":"4420:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":33899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4433:1:83","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4420:14:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":33904,"name":"_mockRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33603,"src":"4455:9:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4420:44:83","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":33901,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4437:5:83","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PoolMock_$33909_$","typeString":"type(contract super PoolMock)"}},"id":33902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4443:7:83","memberName":"getRate","nodeType":"MemberAccess","referencedDeclaration":10731,"src":"4437:13:83","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":33903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4437:15:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":33897,"id":33906,"nodeType":"Return","src":"4413:51:83"}]},"functionSelector":"679aefce","id":33908,"implemented":true,"kind":"function","modifiers":[],"name":"getRate","nameLocation":"4354:7:83","nodeType":"FunctionDefinition","overrides":{"id":33894,"nodeType":"OverrideSpecifier","overrides":[],"src":"4376:8:83"},"parameters":{"id":33893,"nodeType":"ParameterList","parameters":[],"src":"4361:2:83"},"returnParameters":{"id":33897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":33908,"src":"4394:7:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33895,"name":"uint256","nodeType":"ElementaryTypeName","src":"4394:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4393:9:83"},"scope":33909,"src":"4345:126:83","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":33910,"src":"757:3716:83","usedErrors":[121,3422,10368,10375,39992,40064,40066,40643,40648,40653],"usedEvents":[39003,39208,39217]}],"src":"46:4428:83"},"id":83},"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol","exportedSymbols":{"IERC20":[39274],"IVaultMock":[1275],"ProtocolFeeController":[15747],"ProtocolFeeControllerMock":[34014]},"id":34015,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":33911,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:84"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":33913,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34015,"sourceUnit":39275,"src":"72:72:84","symbolAliases":[{"foreign":{"id":33912,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol","file":"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol","id":33915,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34015,"sourceUnit":1276,"src":"146:88:84","symbolAliases":[{"foreign":{"id":33914,"name":"IVaultMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"155:10:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol","file":"../ProtocolFeeController.sol","id":33917,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34015,"sourceUnit":15748,"src":"236:69:84","symbolAliases":[{"foreign":{"id":33916,"name":"ProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15747,"src":"245:21:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":33918,"name":"ProtocolFeeController","nameLocations":["345:21:84"],"nodeType":"IdentifierPath","referencedDeclaration":15747,"src":"345:21:84"},"id":33919,"nodeType":"InheritanceSpecifier","src":"345:21:84"}],"canonicalName":"ProtocolFeeControllerMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":34014,"linearizedBaseContracts":[34014,15747,27688,9568,18926,5327,130,2230],"name":"ProtocolFeeControllerMock","nameLocation":"316:25:84","nodeType":"ContractDefinition","nodes":[{"body":{"id":33928,"nodeType":"Block","src":"434:64:84","statements":[]},"id":33929,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":33925,"name":"vault_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33922,"src":"426:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$1275","typeString":"contract IVaultMock"}}],"id":33926,"kind":"baseConstructorSpecifier","modifierName":{"id":33924,"name":"ProtocolFeeController","nameLocations":["404:21:84"],"nodeType":"IdentifierPath","referencedDeclaration":15747,"src":"404:21:84"},"nodeType":"ModifierInvocation","src":"404:29:84"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":33923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33922,"mutability":"mutable","name":"vault_","nameLocation":"396:6:84","nodeType":"VariableDeclaration","scope":33929,"src":"385:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$1275","typeString":"contract IVaultMock"},"typeName":{"id":33921,"nodeType":"UserDefinedTypeName","pathNode":{"id":33920,"name":"IVaultMock","nameLocations":["385:10:84"],"nodeType":"IdentifierPath","referencedDeclaration":1275,"src":"385:10:84"},"referencedDeclaration":1275,"src":"385:10:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$1275","typeString":"contract IVaultMock"}},"visibility":"internal"}],"src":"384:19:84"},"returnParameters":{"id":33927,"nodeType":"ParameterList","parameters":[],"src":"434:0:84"},"scope":34014,"src":"373:125:84","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":33944,"nodeType":"Block","src":"615:52:84","statements":[{"expression":{"arguments":[{"id":33941,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33931,"src":"655:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":33940,"name":"_getPoolTokensAndCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15168,"src":"632:22:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address) view returns (contract IERC20[] memory,uint256)"}},"id":33942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"632:28:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256)"}},"functionReturnParameters":33939,"id":33943,"nodeType":"Return","src":"625:35:84"}]},"functionSelector":"f29aaa58","id":33945,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolTokensAndCount","nameLocation":"513:21:84","nodeType":"FunctionDefinition","parameters":{"id":33932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33931,"mutability":"mutable","name":"pool","nameLocation":"543:4:84","nodeType":"VariableDeclaration","scope":33945,"src":"535:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33930,"name":"address","nodeType":"ElementaryTypeName","src":"535:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"534:14:84"},"returnParameters":{"id":33939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33936,"mutability":"mutable","name":"tokens","nameLocation":"588:6:84","nodeType":"VariableDeclaration","scope":33945,"src":"572:22:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":33934,"nodeType":"UserDefinedTypeName","pathNode":{"id":33933,"name":"IERC20","nameLocations":["572:6:84"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"572:6:84"},"referencedDeclaration":39274,"src":"572:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":33935,"nodeType":"ArrayTypeName","src":"572:8:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":33938,"mutability":"mutable","name":"numTokens","nameLocation":"604:9:84","nodeType":"VariableDeclaration","scope":33945,"src":"596:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33937,"name":"uint256","nodeType":"ElementaryTypeName","src":"596:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"571:43:84"},"scope":34014,"src":"504:163:84","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":33967,"nodeType":"Block","src":"842:122:84","statements":[{"expression":{"components":[{"baseExpression":{"id":33956,"name":"_poolCreators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14367,"src":"860:13:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":33958,"indexExpression":{"id":33957,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33947,"src":"874:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"860:19:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":33959,"name":"_poolCreatorSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"881:30:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":33961,"indexExpression":{"id":33960,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33947,"src":"912:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"881:36:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":33962,"name":"_poolCreatorYieldFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14375,"src":"919:31:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":33964,"indexExpression":{"id":33963,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33947,"src":"951:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"919:37:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":33965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"859:98:84","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$","typeString":"tuple(address,uint256,uint256)"}},"functionReturnParameters":33955,"id":33966,"nodeType":"Return","src":"852:105:84"}]},"functionSelector":"aa9fea87","id":33968,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolCreatorInfo","nameLocation":"682:18:84","nodeType":"FunctionDefinition","parameters":{"id":33948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33947,"mutability":"mutable","name":"pool","nameLocation":"718:4:84","nodeType":"VariableDeclaration","scope":33968,"src":"710:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33946,"name":"address","nodeType":"ElementaryTypeName","src":"710:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"700:28:84"},"returnParameters":{"id":33955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33950,"mutability":"mutable","name":"poolCreator","nameLocation":"760:11:84","nodeType":"VariableDeclaration","scope":33968,"src":"752:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33949,"name":"address","nodeType":"ElementaryTypeName","src":"752:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":33952,"mutability":"mutable","name":"creatorSwapFeePercentage","nameLocation":"781:24:84","nodeType":"VariableDeclaration","scope":33968,"src":"773:32:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33951,"name":"uint256","nodeType":"ElementaryTypeName","src":"773:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":33954,"mutability":"mutable","name":"creatorYieldFeePercentage","nameLocation":"815:25:84","nodeType":"VariableDeclaration","scope":33968,"src":"807:33:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33953,"name":"uint256","nodeType":"ElementaryTypeName","src":"807:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"751:90:84"},"scope":34014,"src":"673:291:84","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":33982,"nodeType":"Block","src":"1330:50:84","statements":[{"expression":{"id":33980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":33976,"name":"_poolCreators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14367,"src":"1340:13:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":33978,"indexExpression":{"id":33977,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33971,"src":"1354:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1340:19:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33979,"name":"poolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33973,"src":"1362:11:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1340:33:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":33981,"nodeType":"ExpressionStatement","src":"1340:33:84"}]},"documentation":{"id":33969,"nodeType":"StructuredDocumentation","src":"970:281:84","text":" @notice Sets the pool creator address, allowing the address to change the pool creator fee percentage.\n @dev Standard Balancer Pools specifically disallow pool creators to be passed in through PoolRoleAccounts;\n otherwise, this wouldn't be necessary."},"functionSelector":"79a2c0ac","id":33983,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolCreator","nameLocation":"1265:20:84","nodeType":"FunctionDefinition","parameters":{"id":33974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33971,"mutability":"mutable","name":"pool","nameLocation":"1294:4:84","nodeType":"VariableDeclaration","scope":33983,"src":"1286:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33970,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":33973,"mutability":"mutable","name":"poolCreator","nameLocation":"1308:11:84","nodeType":"VariableDeclaration","scope":33983,"src":"1300:19:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33972,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1285:35:84"},"returnParameters":{"id":33975,"nodeType":"ParameterList","parameters":[],"src":"1330:0:84"},"scope":34014,"src":"1256:124:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34012,"nodeType":"Block","src":"1569:256:84","statements":[{"expression":{"id":33995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":33991,"name":"_poolCreatorSwapFeePercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"1579:30:84","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":33993,"indexExpression":{"id":33992,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33986,"src":"1610:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1579:36:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":33994,"name":"poolCreatorSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33988,"src":"1618:28:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1579:67:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":33996,"nodeType":"ExpressionStatement","src":"1579:67:84"},{"expression":{"arguments":[{"id":34004,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33986,"src":"1736:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":34006,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33986,"src":"1781:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":34007,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14334,"src":"1787:15:84","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ProtocolFeeType_$14334_$","typeString":"type(enum ProtocolFeeController.ProtocolFeeType)"}},"id":34008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1803:4:84","memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":14332,"src":"1787:20:84","typeDescriptions":{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_ProtocolFeeType_$14334","typeString":"enum ProtocolFeeController.ProtocolFeeType"}],"id":34005,"name":"_getAggregateFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15078,"src":"1754:26:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_ProtocolFeeType_$14334_$returns$_t_uint256_$","typeString":"function (address,enum ProtocolFeeController.ProtocolFeeType) view returns (uint256)"}},"id":34009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1754:54:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":34000,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"1675:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":33999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1667:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":33998,"name":"address","nodeType":"ElementaryTypeName","src":"1667:7:84","typeDescriptions":{}}},"id":34001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1667:15:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":33997,"name":"IVaultMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"1656:10:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultMock_$1275_$","typeString":"type(contract IVaultMock)"}},"id":34002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:27:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$1275","typeString":"contract IVaultMock"}},"id":34003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1684:38:84","memberName":"manualUpdateAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":1192,"src":"1656:66:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":34010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:162:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34011,"nodeType":"ExpressionStatement","src":"1656:162:84"}]},"documentation":{"id":33984,"nodeType":"StructuredDocumentation","src":"1386:70:84","text":"@dev Set pool creator swap fee percentage without any constraints."},"functionSelector":"b8abccd1","id":34013,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolCreatorSwapFeePercentage","nameLocation":"1470:37:84","nodeType":"FunctionDefinition","parameters":{"id":33989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33986,"mutability":"mutable","name":"pool","nameLocation":"1516:4:84","nodeType":"VariableDeclaration","scope":34013,"src":"1508:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33985,"name":"address","nodeType":"ElementaryTypeName","src":"1508:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":33988,"mutability":"mutable","name":"poolCreatorSwapFeePercentage","nameLocation":"1530:28:84","nodeType":"VariableDeclaration","scope":34013,"src":"1522:36:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33987,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1507:52:84"},"returnParameters":{"id":33990,"nodeType":"ParameterList","parameters":[],"src":"1569:0:84"},"scope":34014,"src":"1461:364:84","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":34015,"src":"307:1520:84","usedErrors":[121,2035,2038,2043,2050,2053,3398,3422,7543,9512,39353,39634,39639,39642,42381],"usedEvents":[1955,1960,1967,1974,1981,1988,1998,2008,2020,2032]}],"src":"46:1782:84"},"id":84},"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol","exportedSymbols":{"FixedPoint":[7834],"IRateProvider":[150],"RateProviderMock":[34054]},"id":34055,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":34016,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:85"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","id":34018,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34055,"sourceUnit":151,"src":"72:112:85","symbolAliases":[{"foreign":{"id":34017,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"81:13:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":34020,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34055,"sourceUnit":7835,"src":"186:92:85","symbolAliases":[{"foreign":{"id":34019,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"195:10:85","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":34021,"name":"IRateProvider","nameLocations":["309:13:85"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"309:13:85"},"id":34022,"nodeType":"InheritanceSpecifier","src":"309:13:85"}],"canonicalName":"RateProviderMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":34054,"linearizedBaseContracts":[34054,150],"name":"RateProviderMock","nameLocation":"289:16:85","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":34024,"mutability":"mutable","name":"_rate","nameLocation":"346:5:85","nodeType":"VariableDeclaration","scope":34054,"src":"329:22:85","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34023,"name":"uint256","nodeType":"ElementaryTypeName","src":"329:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"body":{"id":34032,"nodeType":"Block","src":"372:39:85","statements":[{"expression":{"id":34030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":34027,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34024,"src":"382:5:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":34028,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"390:10:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":34029,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"401:3:85","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"390:14:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"382:22:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34031,"nodeType":"ExpressionStatement","src":"382:22:85"}]},"id":34033,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":34025,"nodeType":"ParameterList","parameters":[],"src":"369:2:85"},"returnParameters":{"id":34026,"nodeType":"ParameterList","parameters":[],"src":"372:0:85"},"scope":34054,"src":"358:53:85","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[149],"body":{"id":34042,"nodeType":"Block","src":"511:29:85","statements":[{"expression":{"id":34040,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34024,"src":"528:5:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34039,"id":34041,"nodeType":"Return","src":"521:12:85"}]},"documentation":{"id":34034,"nodeType":"StructuredDocumentation","src":"417:29:85","text":"@inheritdoc IRateProvider"},"functionSelector":"679aefce","id":34043,"implemented":true,"kind":"function","modifiers":[],"name":"getRate","nameLocation":"460:7:85","nodeType":"FunctionDefinition","overrides":{"id":34036,"nodeType":"OverrideSpecifier","overrides":[],"src":"484:8:85"},"parameters":{"id":34035,"nodeType":"ParameterList","parameters":[],"src":"467:2:85"},"returnParameters":{"id":34039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34038,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34043,"src":"502:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34037,"name":"uint256","nodeType":"ElementaryTypeName","src":"502:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"501:9:85"},"scope":34054,"src":"451:89:85","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":34052,"nodeType":"Block","src":"590:32:85","statements":[{"expression":{"id":34050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":34048,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34024,"src":"600:5:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":34049,"name":"newRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34045,"src":"608:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"600:15:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34051,"nodeType":"ExpressionStatement","src":"600:15:85"}]},"functionSelector":"a1cfa041","id":34053,"implemented":true,"kind":"function","modifiers":[],"name":"mockRate","nameLocation":"555:8:85","nodeType":"FunctionDefinition","parameters":{"id":34046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34045,"mutability":"mutable","name":"newRate","nameLocation":"572:7:85","nodeType":"VariableDeclaration","scope":34053,"src":"564:15:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34044,"name":"uint256","nodeType":"ElementaryTypeName","src":"564:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"563:17:85"},"returnParameters":{"id":34047,"nodeType":"ParameterList","parameters":[],"src":"590:0:85"},"scope":34054,"src":"546:76:85","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":34055,"src":"280:344:85","usedErrors":[],"usedEvents":[]}],"src":"46:579:85"},"id":85},"@balancer-labs/v3-vault/contracts/test/RouterMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/RouterMock.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC4626":[38998],"IPermit2":[46102],"IRateProvider":[150],"IRouter":[2727],"IVault":[2893],"IWETH":[178],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"MOCK_ROUTER_VERSION":[34080],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"RevertCodec":[6060],"Rounding":[4514],"Router":[17997],"RouterMock":[34813],"SafeCast":[44126],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"WrappingDirection":[4629]},"id":34814,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":34056,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:86"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":34058,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":38999,"src":"72:75:86","symbolAliases":[{"foreign":{"id":34057,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":34060,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":44127,"src":"148:75:86","symbolAliases":[{"foreign":{"id":34059,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44126,"src":"157:8:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":34062,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":39275,"src":"224:72:86","symbolAliases":[{"foreign":{"id":34061,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"233:6:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IPermit2.sol","file":"permit2/src/interfaces/IPermit2.sol","id":34064,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":46103,"src":"297:63:86","symbolAliases":[{"foreign":{"id":34063,"name":"IPermit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46102,"src":"306:8:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":34066,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":179,"src":"362:93:86","symbolAliases":[{"foreign":{"id":34065,"name":"IWETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"371:5:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":34068,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":4654,"src":"456:87:86","symbolAliases":[{"foreign":{"id":34067,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"465:8:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol","id":34070,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":2728,"src":"544:83:86","symbolAliases":[{"foreign":{"id":34069,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"553:7:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":34072,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":2894,"src":"628:81:86","symbolAliases":[{"foreign":{"id":34071,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"637:6:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":34073,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":4654,"src":"710:69:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol","id":34075,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":6061,"src":"781:97:86","symbolAliases":[{"foreign":{"id":34074,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"790:11:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/Router.sol","file":"../Router.sol","id":34077,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":34814,"sourceUnit":17998,"src":"880:39:86","symbolAliases":[{"foreign":{"id":34076,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"889:6:86","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"constant":true,"id":34080,"mutability":"constant","name":"MOCK_ROUTER_VERSION","nameLocation":"937:19:86","nodeType":"VariableDeclaration","scope":34814,"src":"921:54:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":34078,"name":"string","nodeType":"ElementaryTypeName","src":"921:6:86","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"4d6f636b20526f75746572207631","id":34079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"959:16:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_750944b6d19ac3b936d3601e57fe38302b01d85b9ac34ad5425c49b78664201a","typeString":"literal_string \"Mock Router v1\""},"value":"Mock Router v1"},"visibility":"internal"},{"abstract":false,"baseContracts":[{"baseName":{"id":34081,"name":"Router","nameLocations":["1001:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":17997,"src":"1001:6:86"},"id":34082,"nodeType":"InheritanceSpecifier","src":"1001:6:86"}],"canonicalName":"RouterMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":34813,"linearizedBaseContracts":[34813,17997,18820,7108,160,9568,27688,2823,2727],"name":"RouterMock","nameLocation":"987:10:86","nodeType":"ContractDefinition","nodes":[{"global":false,"id":34084,"libraryName":{"id":34083,"name":"SafeCast","nameLocations":["1020:8:86"],"nodeType":"IdentifierPath","referencedDeclaration":44126,"src":"1020:8:86"},"nodeType":"UsingForDirective","src":"1014:21:86"},{"errorSelector":"f5ab33e5","id":34086,"name":"MockErrorCode","nameLocation":"1047:13:86","nodeType":"ErrorDefinition","parameters":{"id":34085,"nodeType":"ParameterList","parameters":[],"src":"1060:2:86"},"src":"1041:22:86"},{"body":{"id":34104,"nodeType":"Block","src":"1175:64:86","statements":[]},"id":34105,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":34098,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34089,"src":"1132:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":34099,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34092,"src":"1139:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},{"id":34100,"name":"permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34095,"src":"1145:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},{"id":34101,"name":"MOCK_ROUTER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34080,"src":"1154:19:86","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":34102,"kind":"baseConstructorSpecifier","modifierName":{"id":34097,"name":"Router","nameLocations":["1125:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":17997,"src":"1125:6:86"},"nodeType":"ModifierInvocation","src":"1125:49:86"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":34096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34089,"mutability":"mutable","name":"vault","nameLocation":"1088:5:86","nodeType":"VariableDeclaration","scope":34105,"src":"1081:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":34088,"nodeType":"UserDefinedTypeName","pathNode":{"id":34087,"name":"IVault","nameLocations":["1081:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1081:6:86"},"referencedDeclaration":2893,"src":"1081:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":34092,"mutability":"mutable","name":"weth","nameLocation":"1101:4:86","nodeType":"VariableDeclaration","scope":34105,"src":"1095:10:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"},"typeName":{"id":34091,"nodeType":"UserDefinedTypeName","pathNode":{"id":34090,"name":"IWETH","nameLocations":["1095:5:86"],"nodeType":"IdentifierPath","referencedDeclaration":178,"src":"1095:5:86"},"referencedDeclaration":178,"src":"1095:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$178","typeString":"contract IWETH"}},"visibility":"internal"},{"constant":false,"id":34095,"mutability":"mutable","name":"permit2","nameLocation":"1116:7:86","nodeType":"VariableDeclaration","scope":34105,"src":"1107:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"},"typeName":{"id":34094,"nodeType":"UserDefinedTypeName","pathNode":{"id":34093,"name":"IPermit2","nameLocations":["1107:8:86"],"nodeType":"IdentifierPath","referencedDeclaration":46102,"src":"1107:8:86"},"referencedDeclaration":46102,"src":"1107:8:86","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"visibility":"internal"}],"src":"1080:44:86"},"returnParameters":{"id":34103,"nodeType":"ParameterList","parameters":[],"src":"1175:0:86"},"scope":34813,"src":"1069:170:86","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":34126,"nodeType":"Block","src":"1309:121:86","statements":[{"assignments":[34114],"declarations":[{"constant":false,"id":34114,"mutability":"mutable","name":"hookParams","nameLocation":"1355:10:86","nodeType":"VariableDeclaration","scope":34126,"src":"1319:46:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_memory_ptr","typeString":"struct IRouter.InitializeHookParams"},"typeName":{"id":34113,"nodeType":"UserDefinedTypeName","pathNode":{"id":34112,"name":"IRouter.InitializeHookParams","nameLocations":["1319:7:86","1327:20:86"],"nodeType":"IdentifierPath","referencedDeclaration":2260,"src":"1319:28:86"},"referencedDeclaration":2260,"src":"1319:28:86","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_storage_ptr","typeString":"struct IRouter.InitializeHookParams"}},"visibility":"internal"}],"id":34115,"nodeType":"VariableDeclarationStatement","src":"1319:46:86"},{"expression":{"arguments":[{"id":34123,"name":"hookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34114,"src":"1412:10:86","typeDescriptions":{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_memory_ptr","typeString":"struct IRouter.InitializeHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_InitializeHookParams_$2260_memory_ptr","typeString":"struct IRouter.InitializeHookParams memory"}],"expression":{"arguments":[{"arguments":[{"id":34119,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1390:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}],"id":34118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1382:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":34117,"name":"address","nodeType":"ElementaryTypeName","src":"1382:8:86","stateMutability":"payable","typeDescriptions":{}}},"id":34120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1382:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":34116,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"1375:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":34121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:21:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}},"id":34122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1397:14:86","memberName":"initializeHook","nodeType":"MemberAccess","referencedDeclaration":15994,"src":"1375:36:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_InitializeHookParams_$2260_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct IRouter.InitializeHookParams memory) external returns (uint256)"}},"id":34124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:48:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34125,"nodeType":"ExpressionStatement","src":"1375:48:86"}]},"functionSelector":"4b59d17c","id":34127,"implemented":true,"kind":"function","modifiers":[{"id":34108,"kind":"modifierInvocation","modifierName":{"id":34107,"name":"nonReentrant","nameLocations":["1296:12:86"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"1296:12:86"},"nodeType":"ModifierInvocation","src":"1296:12:86"}],"name":"manualReentrancyInitializeHook","nameLocation":"1254:30:86","nodeType":"FunctionDefinition","parameters":{"id":34106,"nodeType":"ParameterList","parameters":[],"src":"1284:2:86"},"returnParameters":{"id":34109,"nodeType":"ParameterList","parameters":[],"src":"1309:0:86"},"scope":34813,"src":"1245:185:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34146,"nodeType":"Block","src":"1502:109:86","statements":[{"assignments":[34134],"declarations":[{"constant":false,"id":34134,"mutability":"mutable","name":"params","nameLocation":"1542:6:86","nodeType":"VariableDeclaration","scope":34146,"src":"1512:36:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams"},"typeName":{"id":34133,"nodeType":"UserDefinedTypeName","pathNode":{"id":34132,"name":"AddLiquidityHookParams","nameLocations":["1512:22:86"],"nodeType":"IdentifierPath","referencedDeclaration":2753,"src":"1512:22:86"},"referencedDeclaration":2753,"src":"1512:22:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_storage_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams"}},"visibility":"internal"}],"id":34135,"nodeType":"VariableDeclarationStatement","src":"1512:36:86"},{"expression":{"arguments":[{"id":34143,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34134,"src":"1597:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityHookParams_$2753_memory_ptr","typeString":"struct IRouterCommon.AddLiquidityHookParams memory"}],"expression":{"arguments":[{"arguments":[{"id":34139,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1573:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}],"id":34138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1565:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":34137,"name":"address","nodeType":"ElementaryTypeName","src":"1565:8:86","stateMutability":"payable","typeDescriptions":{}}},"id":34140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1565:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":34136,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"1558:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":34141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1558:21:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}},"id":34142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1580:16:86","memberName":"addLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16447,"src":"1558:38:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_AddLiquidityHookParams_$2753_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct IRouterCommon.AddLiquidityHookParams memory) external returns (uint256[] memory,uint256,bytes memory)"}},"id":34144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1558:46:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"id":34145,"nodeType":"ExpressionStatement","src":"1558:46:86"}]},"functionSelector":"0c3b846f","id":34147,"implemented":true,"kind":"function","modifiers":[{"id":34130,"kind":"modifierInvocation","modifierName":{"id":34129,"name":"nonReentrant","nameLocations":["1489:12:86"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"1489:12:86"},"nodeType":"ModifierInvocation","src":"1489:12:86"}],"name":"manualReentrancyAddLiquidityHook","nameLocation":"1445:32:86","nodeType":"FunctionDefinition","parameters":{"id":34128,"nodeType":"ParameterList","parameters":[],"src":"1477:2:86"},"returnParameters":{"id":34131,"nodeType":"ParameterList","parameters":[],"src":"1502:0:86"},"scope":34813,"src":"1436:175:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34166,"nodeType":"Block","src":"1686:115:86","statements":[{"assignments":[34154],"declarations":[{"constant":false,"id":34154,"mutability":"mutable","name":"params","nameLocation":"1729:6:86","nodeType":"VariableDeclaration","scope":34166,"src":"1696:39:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams"},"typeName":{"id":34153,"nodeType":"UserDefinedTypeName","pathNode":{"id":34152,"name":"RemoveLiquidityHookParams","nameLocations":["1696:25:86"],"nodeType":"IdentifierPath","referencedDeclaration":2771,"src":"1696:25:86"},"referencedDeclaration":2771,"src":"1696:25:86","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_storage_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams"}},"visibility":"internal"}],"id":34155,"nodeType":"VariableDeclarationStatement","src":"1696:39:86"},{"expression":{"arguments":[{"id":34163,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34154,"src":"1787:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr","typeString":"struct IRouterCommon.RemoveLiquidityHookParams memory"}],"expression":{"arguments":[{"arguments":[{"id":34159,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1760:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}],"id":34158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1752:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":34157,"name":"address","nodeType":"ElementaryTypeName","src":"1752:8:86","stateMutability":"payable","typeDescriptions":{}}},"id":34160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1752:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":34156,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"1745:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":34161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1745:21:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}},"id":34162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1767:19:86","memberName":"removeLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":16889,"src":"1745:41:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RemoveLiquidityHookParams_$2771_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct IRouterCommon.RemoveLiquidityHookParams memory) external returns (uint256,uint256[] memory,bytes memory)"}},"id":34164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1745:49:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"id":34165,"nodeType":"ExpressionStatement","src":"1745:49:86"}]},"functionSelector":"ad6d59f3","id":34167,"implemented":true,"kind":"function","modifiers":[{"id":34150,"kind":"modifierInvocation","modifierName":{"id":34149,"name":"nonReentrant","nameLocations":["1673:12:86"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"1673:12:86"},"nodeType":"ModifierInvocation","src":"1673:12:86"}],"name":"manualReentrancyRemoveLiquidityHook","nameLocation":"1626:35:86","nodeType":"FunctionDefinition","parameters":{"id":34148,"nodeType":"ParameterList","parameters":[],"src":"1661:2:86"},"returnParameters":{"id":34151,"nodeType":"ParameterList","parameters":[],"src":"1686:0:86"},"scope":34813,"src":"1617:184:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34195,"nodeType":"Block","src":"1884:111:86","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":34181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1952:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":34180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1944:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":34179,"name":"address","nodeType":"ElementaryTypeName","src":"1944:7:86","typeDescriptions":{}}},"id":34182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1944:10:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":34185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1964:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":34184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1956:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":34183,"name":"address","nodeType":"ElementaryTypeName","src":"1956:7:86","typeDescriptions":{}}},"id":34186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1956:10:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":34187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1968:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"32","id":34191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1985:1:86","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":34190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1971:13:86","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":34188,"name":"uint256","nodeType":"ElementaryTypeName","src":"1975:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34189,"nodeType":"ArrayTypeName","src":"1975:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":34192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1971:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"arguments":[{"arguments":[{"id":34175,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1909:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}],"id":34174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1901:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":34173,"name":"address","nodeType":"ElementaryTypeName","src":"1901:8:86","stateMutability":"payable","typeDescriptions":{}}},"id":34176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":34172,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"1894:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":34177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1894:21:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}},"id":34178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1916:27:86","memberName":"removeLiquidityRecoveryHook","nodeType":"MemberAccess","referencedDeclaration":16968,"src":"1894:49:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,address,uint256,uint256[] memory) external returns (uint256[] memory)"}},"id":34193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1894:94:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":34194,"nodeType":"ExpressionStatement","src":"1894:94:86"}]},"functionSelector":"beb91feb","id":34196,"implemented":true,"kind":"function","modifiers":[{"id":34170,"kind":"modifierInvocation","modifierName":{"id":34169,"name":"nonReentrant","nameLocations":["1871:12:86"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"1871:12:86"},"nodeType":"ModifierInvocation","src":"1871:12:86"}],"name":"manualReentrancyRemoveLiquidityRecoveryHook","nameLocation":"1816:43:86","nodeType":"FunctionDefinition","parameters":{"id":34168,"nodeType":"ParameterList","parameters":[],"src":"1859:2:86"},"returnParameters":{"id":34171,"nodeType":"ParameterList","parameters":[],"src":"1884:0:86"},"scope":34813,"src":"1807:188:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34217,"nodeType":"Block","src":"2070:123:86","statements":[{"assignments":[34205],"declarations":[{"constant":false,"id":34205,"mutability":"mutable","name":"params","nameLocation":"2121:6:86","nodeType":"VariableDeclaration","scope":34217,"src":"2080:47:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"},"typeName":{"id":34204,"nodeType":"UserDefinedTypeName","pathNode":{"id":34203,"name":"IRouter.SwapSingleTokenHookParams","nameLocations":["2080:7:86","2088:25:86"],"nodeType":"IdentifierPath","referencedDeclaration":2487,"src":"2080:33:86"},"referencedDeclaration":2487,"src":"2080:33:86","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"}},"visibility":"internal"}],"id":34206,"nodeType":"VariableDeclarationStatement","src":"2080:47:86"},{"expression":{"arguments":[{"id":34214,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34205,"src":"2179:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}],"expression":{"arguments":[{"arguments":[{"id":34210,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2152:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}],"id":34209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2144:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":34208,"name":"address","nodeType":"ElementaryTypeName","src":"2144:8:86","stateMutability":"payable","typeDescriptions":{}}},"id":34211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2144:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":34207,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"2137:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":34212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2137:21:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}},"id":34213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2159:19:86","memberName":"swapSingleTokenHook","nodeType":"MemberAccess","referencedDeclaration":17145,"src":"2137:41:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct IRouter.SwapSingleTokenHookParams memory) external returns (uint256)"}},"id":34215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2137:49:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34216,"nodeType":"ExpressionStatement","src":"2137:49:86"}]},"functionSelector":"c3ec0efc","id":34218,"implemented":true,"kind":"function","modifiers":[{"id":34199,"kind":"modifierInvocation","modifierName":{"id":34198,"name":"nonReentrant","nameLocations":["2057:12:86"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"2057:12:86"},"nodeType":"ModifierInvocation","src":"2057:12:86"}],"name":"manualReentrancySwapSingleTokenHook","nameLocation":"2010:35:86","nodeType":"FunctionDefinition","parameters":{"id":34197,"nodeType":"ParameterList","parameters":[],"src":"2045:2:86"},"returnParameters":{"id":34200,"nodeType":"ParameterList","parameters":[],"src":"2070:0:86"},"scope":34813,"src":"2001:192:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34239,"nodeType":"Block","src":"2262:117:86","statements":[{"assignments":[34227],"declarations":[{"constant":false,"id":34227,"mutability":"mutable","name":"params","nameLocation":"2313:6:86","nodeType":"VariableDeclaration","scope":34239,"src":"2272:47:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"},"typeName":{"id":34226,"nodeType":"UserDefinedTypeName","pathNode":{"id":34225,"name":"IRouter.SwapSingleTokenHookParams","nameLocations":["2272:7:86","2280:25:86"],"nodeType":"IdentifierPath","referencedDeclaration":2487,"src":"2272:33:86"},"referencedDeclaration":2487,"src":"2272:33:86","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams"}},"visibility":"internal"}],"id":34228,"nodeType":"VariableDeclarationStatement","src":"2272:47:86"},{"expression":{"arguments":[{"id":34236,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34227,"src":"2365:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}],"expression":{"arguments":[{"arguments":[{"id":34232,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2344:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterMock_$34813","typeString":"contract RouterMock"}],"id":34231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2336:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":34230,"name":"address","nodeType":"ElementaryTypeName","src":"2336:8:86","stateMutability":"payable","typeDescriptions":{}}},"id":34233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2336:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":34229,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"2329:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":34234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2329:21:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Router_$17997","typeString":"contract Router"}},"id":34235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2351:13:86","memberName":"querySwapHook","nodeType":"MemberAccess","referencedDeclaration":17996,"src":"2329:35:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct IRouter.SwapSingleTokenHookParams memory) external returns (uint256)"}},"id":34237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2329:43:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34238,"nodeType":"ExpressionStatement","src":"2329:43:86"}]},"functionSelector":"64c90707","id":34240,"implemented":true,"kind":"function","modifiers":[{"id":34221,"kind":"modifierInvocation","modifierName":{"id":34220,"name":"nonReentrant","nameLocations":["2249:12:86"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"2249:12:86"},"nodeType":"ModifierInvocation","src":"2249:12:86"}],"name":"manualReentrancyQuerySwapHook","nameLocation":"2208:29:86","nodeType":"FunctionDefinition","parameters":{"id":34219,"nodeType":"ParameterList","parameters":[],"src":"2237:2:86"},"returnParameters":{"id":34222,"nodeType":"ParameterList","parameters":[],"src":"2262:0:86"},"scope":34813,"src":"2199:180:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34261,"nodeType":"Block","src":"2580:83:86","statements":[{"expression":{"arguments":[{"id":34256,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34242,"src":"2631:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":34257,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34245,"src":"2637:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":34258,"name":"amountGiven","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34247,"src":"2644:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":34255,"name":"_getSingleInputArrayAndTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18579,"src":"2597:33:86","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (address,contract IERC20,uint256) view returns (uint256[] memory,uint256)"}},"id":34259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2597:59:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"functionReturnParameters":34254,"id":34260,"nodeType":"Return","src":"2590:66:86"}]},"functionSelector":"e178073e","id":34262,"implemented":true,"kind":"function","modifiers":[],"name":"getSingleInputArrayAndTokenIndex","nameLocation":"2394:32:86","nodeType":"FunctionDefinition","parameters":{"id":34248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34242,"mutability":"mutable","name":"pool","nameLocation":"2444:4:86","nodeType":"VariableDeclaration","scope":34262,"src":"2436:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34241,"name":"address","nodeType":"ElementaryTypeName","src":"2436:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":34245,"mutability":"mutable","name":"token","nameLocation":"2465:5:86","nodeType":"VariableDeclaration","scope":34262,"src":"2458:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":34244,"nodeType":"UserDefinedTypeName","pathNode":{"id":34243,"name":"IERC20","nameLocations":["2458:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2458:6:86"},"referencedDeclaration":39274,"src":"2458:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":34247,"mutability":"mutable","name":"amountGiven","nameLocation":"2488:11:86","nodeType":"VariableDeclaration","scope":34262,"src":"2480:19:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34246,"name":"uint256","nodeType":"ElementaryTypeName","src":"2480:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2426:79:86"},"returnParameters":{"id":34254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34251,"mutability":"mutable","name":"amountsGiven","nameLocation":"2546:12:86","nodeType":"VariableDeclaration","scope":34262,"src":"2529:29:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":34249,"name":"uint256","nodeType":"ElementaryTypeName","src":"2529:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34250,"nodeType":"ArrayTypeName","src":"2529:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":34253,"mutability":"mutable","name":"tokenIndex","nameLocation":"2568:10:86","nodeType":"VariableDeclaration","scope":34262,"src":"2560:18:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34252,"name":"uint256","nodeType":"ElementaryTypeName","src":"2560:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2528:51:86"},"scope":34813,"src":"2385:278:86","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":34324,"nodeType":"Block","src":"2900:848:86","statements":[{"clauses":[{"block":{"id":34305,"nodeType":"Block","src":"3567:53:86","statements":[{"expression":{"arguments":[{"hexValue":"556e65787065637465642073756363657373","id":34302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3588:20:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""},"value":"Unexpected success"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""}],"id":34301,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3581:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":34303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3581:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34304,"nodeType":"ExpressionStatement","src":"3581:28:86"}]},"errorName":"","id":34306,"nodeType":"TryCatchClause","src":"3567:53:86"},{"block":{"id":34321,"nodeType":"Block","src":"3649:93:86","statements":[{"expression":{"arguments":[{"arguments":[{"id":34314,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34308,"src":"3712:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34312,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"3681:11:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":34313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3693:18:86","memberName":"catchEncodedResult","nodeType":"MemberAccess","referencedDeclaration":6022,"src":"3681:30:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":34315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3681:38:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":34317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3722:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34316,"name":"uint256","nodeType":"ElementaryTypeName","src":"3722:7:86","typeDescriptions":{}}}],"id":34318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3721:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":34310,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3670:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3674:6:86","memberName":"decode","nodeType":"MemberAccess","src":"3670:10:86","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":34319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3670:61:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34278,"id":34320,"nodeType":"Return","src":"3663:68:86"}]},"errorName":"","id":34322,"nodeType":"TryCatchClause","parameters":{"id":34309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34308,"mutability":"mutable","name":"result","nameLocation":"3641:6:86","nodeType":"VariableDeclaration","scope":34322,"src":"3628:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":34307,"name":"bytes","nodeType":"ElementaryTypeName","src":"3628:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3627:21:86"},"src":"3621:121:86"}],"externalCall":{"arguments":[{"arguments":[{"expression":{"id":34283,"name":"Router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17997,"src":"3001:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Router_$17997_$","typeString":"type(contract Router)"}},"id":34284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3008:13:86","memberName":"querySwapHook","nodeType":"MemberAccess","referencedDeclaration":17996,"src":"3001:20:86","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.querySwapHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"}},{"arguments":[{"expression":{"id":34286,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3103:3:86","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":34287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3107:6:86","memberName":"sender","nodeType":"MemberAccess","src":"3103:10:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":34288,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"3145:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":34289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3154:8:86","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"3145:17:86","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"id":34290,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34264,"src":"3194:4:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":34291,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34267,"src":"3233:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":34292,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34270,"src":"3276:8:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":34293,"name":"exactAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34272,"src":"3323:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":34294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3369:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":34295,"name":"_MAX_AMOUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18089,"src":"3406:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":34296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3454:5:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":34297,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34274,"src":"3495:8:86","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":34285,"name":"SwapSingleTokenHookParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"3043:25:86","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapSingleTokenHookParams_$2487_storage_ptr_$","typeString":"type(struct IRouter.SwapSingleTokenHookParams storage pointer)"}},"id":34298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["3095:6:86","3139:4:86","3188:4:86","3224:7:86","3266:8:86","3310:11:86","3362:5:86","3396:8:86","3443:9:86","3485:8:86"],"names":["sender","kind","pool","tokenIn","tokenOut","amountGiven","limit","deadline","wethIsEth","userData"],"nodeType":"FunctionCall","src":"3043:483:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_SwapSingleTokenHookParams_$2487_calldata_ptr_$returns$_t_uint256_$","typeString":"function Router.querySwapHook(struct IRouter.SwapSingleTokenHookParams calldata) returns (uint256)"},{"typeIdentifier":"t_struct$_SwapSingleTokenHookParams_$2487_memory_ptr","typeString":"struct IRouter.SwapSingleTokenHookParams memory"}],"expression":{"id":34281,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2965:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2969:10:86","memberName":"encodeCall","nodeType":"MemberAccess","src":"2965:14:86","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":34299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2965:579:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34279,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"2926:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2933:14:86","memberName":"quoteAndRevert","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"2926:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":34300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:632:86","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34323,"nodeType":"TryStatement","src":"2910:832:86"}]},"functionSelector":"b29a62a7","id":34325,"implemented":true,"kind":"function","modifiers":[],"name":"querySwapSingleTokenExactInAndRevert","nameLocation":"2678:36:86","nodeType":"FunctionDefinition","parameters":{"id":34275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34264,"mutability":"mutable","name":"pool","nameLocation":"2732:4:86","nodeType":"VariableDeclaration","scope":34325,"src":"2724:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34263,"name":"address","nodeType":"ElementaryTypeName","src":"2724:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":34267,"mutability":"mutable","name":"tokenIn","nameLocation":"2753:7:86","nodeType":"VariableDeclaration","scope":34325,"src":"2746:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":34266,"nodeType":"UserDefinedTypeName","pathNode":{"id":34265,"name":"IERC20","nameLocations":["2746:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2746:6:86"},"referencedDeclaration":39274,"src":"2746:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":34270,"mutability":"mutable","name":"tokenOut","nameLocation":"2777:8:86","nodeType":"VariableDeclaration","scope":34325,"src":"2770:15:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":34269,"nodeType":"UserDefinedTypeName","pathNode":{"id":34268,"name":"IERC20","nameLocations":["2770:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2770:6:86"},"referencedDeclaration":39274,"src":"2770:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":34272,"mutability":"mutable","name":"exactAmountIn","nameLocation":"2803:13:86","nodeType":"VariableDeclaration","scope":34325,"src":"2795:21:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34271,"name":"uint256","nodeType":"ElementaryTypeName","src":"2795:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34274,"mutability":"mutable","name":"userData","nameLocation":"2841:8:86","nodeType":"VariableDeclaration","scope":34325,"src":"2826:23:86","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":34273,"name":"bytes","nodeType":"ElementaryTypeName","src":"2826:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2714:141:86"},"returnParameters":{"id":34278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34277,"mutability":"mutable","name":"amountCalculated","nameLocation":"2882:16:86","nodeType":"VariableDeclaration","scope":34325,"src":"2874:24:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34276,"name":"uint256","nodeType":"ElementaryTypeName","src":"2874:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2873:26:86"},"scope":34813,"src":"2669:1079:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34362,"nodeType":"Block","src":"3803:277:86","statements":[{"clauses":[{"block":{"id":34343,"nodeType":"Block","src":"3899:53:86","statements":[{"expression":{"arguments":[{"hexValue":"556e65787065637465642073756363657373","id":34340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3920:20:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""},"value":"Unexpected success"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""}],"id":34339,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3913:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":34341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3913:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34342,"nodeType":"ExpressionStatement","src":"3913:28:86"}]},"errorName":"","id":34344,"nodeType":"TryCatchClause","src":"3899:53:86"},{"block":{"id":34359,"nodeType":"Block","src":"3981:93:86","statements":[{"expression":{"arguments":[{"arguments":[{"id":34352,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34346,"src":"4044:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34350,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"4013:11:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":34351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4025:18:86","memberName":"catchEncodedResult","nodeType":"MemberAccess","referencedDeclaration":6022,"src":"4013:30:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":34353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4013:38:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":34355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4054:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34354,"name":"uint256","nodeType":"ElementaryTypeName","src":"4054:7:86","typeDescriptions":{}}}],"id":34356,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4053:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":34348,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4002:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4006:6:86","memberName":"decode","nodeType":"MemberAccess","src":"4002:10:86","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":34357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4002:61:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34329,"id":34358,"nodeType":"Return","src":"3995:68:86"}]},"errorName":"","id":34360,"nodeType":"TryCatchClause","parameters":{"id":34347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34346,"mutability":"mutable","name":"result","nameLocation":"3973:6:86","nodeType":"VariableDeclaration","scope":34360,"src":"3960:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":34345,"name":"bytes","nodeType":"ElementaryTypeName","src":"3960:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3959:21:86"},"src":"3953:121:86"}],"externalCall":{"arguments":[{"arguments":[{"expression":{"expression":{"id":34334,"name":"RouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34813,"src":"3862:10:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterMock_$34813_$","typeString":"type(contract RouterMock)"}},"id":34335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3873:14:86","memberName":"querySpoofHook","nodeType":"MemberAccess","referencedDeclaration":34379,"src":"3862:25:86","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$__$returns$__$","typeString":"function RouterMock.querySpoofHook() pure"}},"id":34336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3888:8:86","memberName":"selector","nodeType":"MemberAccess","src":"3862:34:86","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":34332,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3839:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3843:18:86","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3839:22:86","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":34337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3839:58:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34330,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"3817:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3824:14:86","memberName":"quoteAndRevert","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"3817:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":34338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3817:81:86","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34361,"nodeType":"TryStatement","src":"3813:261:86"}]},"functionSelector":"4aeecca9","id":34363,"implemented":true,"kind":"function","modifiers":[],"name":"querySpoof","nameLocation":"3763:10:86","nodeType":"FunctionDefinition","parameters":{"id":34326,"nodeType":"ParameterList","parameters":[],"src":"3773:2:86"},"returnParameters":{"id":34329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34328,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34363,"src":"3794:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34327,"name":"uint256","nodeType":"ElementaryTypeName","src":"3794:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3793:9:86"},"scope":34813,"src":"3754:326:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34378,"nodeType":"Block","src":"4126:69:86","statements":[{"errorCall":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"31323334","id":34373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4181:4:86","typeDescriptions":{"typeIdentifier":"t_rational_1234_by_1","typeString":"int_const 1234"},"value":"1234"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1234_by_1","typeString":"int_const 1234"}],"id":34372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4173:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34371,"name":"uint256","nodeType":"ElementaryTypeName","src":"4173:7:86","typeDescriptions":{}}},"id":34374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4173:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":34369,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4162:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4166:6:86","memberName":"encode","nodeType":"MemberAccess","src":"4162:10:86","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":34375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4162:25:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34366,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"4143:11:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":34368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4155:6:86","memberName":"Result","nodeType":"MemberAccess","referencedDeclaration":5978,"src":"4143:18:86","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":34376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4143:45:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":34377,"nodeType":"RevertStatement","src":"4136:52:86"}]},"functionSelector":"58307e44","id":34379,"implemented":true,"kind":"function","modifiers":[],"name":"querySpoofHook","nameLocation":"4095:14:86","nodeType":"FunctionDefinition","parameters":{"id":34364,"nodeType":"ParameterList","parameters":[],"src":"4109:2:86"},"returnParameters":{"id":34365,"nodeType":"ParameterList","parameters":[],"src":"4126:0:86"},"scope":34813,"src":"4086:109:86","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":34416,"nodeType":"Block","src":"4260:287:86","statements":[{"clauses":[{"block":{"id":34397,"nodeType":"Block","src":"4366:53:86","statements":[{"expression":{"arguments":[{"hexValue":"556e65787065637465642073756363657373","id":34394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4387:20:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""},"value":"Unexpected success"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""}],"id":34393,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4380:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":34395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4380:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34396,"nodeType":"ExpressionStatement","src":"4380:28:86"}]},"errorName":"","id":34398,"nodeType":"TryCatchClause","src":"4366:53:86"},{"block":{"id":34413,"nodeType":"Block","src":"4448:93:86","statements":[{"expression":{"arguments":[{"arguments":[{"id":34406,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34400,"src":"4511:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34404,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"4480:11:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":34405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4492:18:86","memberName":"catchEncodedResult","nodeType":"MemberAccess","referencedDeclaration":6022,"src":"4480:30:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":34407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4480:38:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":34409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4521:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34408,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:86","typeDescriptions":{}}}],"id":34410,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4520:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":34402,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4469:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4473:6:86","memberName":"decode","nodeType":"MemberAccess","src":"4469:10:86","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":34411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4469:61:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34383,"id":34412,"nodeType":"Return","src":"4462:68:86"}]},"errorName":"","id":34414,"nodeType":"TryCatchClause","parameters":{"id":34401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34400,"mutability":"mutable","name":"result","nameLocation":"4440:6:86","nodeType":"VariableDeclaration","scope":34414,"src":"4427:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":34399,"name":"bytes","nodeType":"ElementaryTypeName","src":"4427:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4426:21:86"},"src":"4420:121:86"}],"externalCall":{"arguments":[{"arguments":[{"expression":{"expression":{"id":34388,"name":"RouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34813,"src":"4319:10:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterMock_$34813_$","typeString":"type(contract RouterMock)"}},"id":34389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4330:24:86","memberName":"queryRevertErrorCodeHook","nodeType":"MemberAccess","referencedDeclaration":34424,"src":"4319:35:86","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$__$returns$__$","typeString":"function RouterMock.queryRevertErrorCodeHook() pure"}},"id":34390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4355:8:86","memberName":"selector","nodeType":"MemberAccess","src":"4319:44:86","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":34386,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4296:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4300:18:86","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4296:22:86","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":34391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4296:68:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34384,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"4274:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4281:14:86","memberName":"quoteAndRevert","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"4274:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":34392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4274:91:86","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34415,"nodeType":"TryStatement","src":"4270:271:86"}]},"functionSelector":"7ae30960","id":34417,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertErrorCode","nameLocation":"4210:20:86","nodeType":"FunctionDefinition","parameters":{"id":34380,"nodeType":"ParameterList","parameters":[],"src":"4230:2:86"},"returnParameters":{"id":34383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34417,"src":"4251:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34381,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4250:9:86"},"scope":34813,"src":"4201:346:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34423,"nodeType":"Block","src":"4603:39:86","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":34420,"name":"MockErrorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34086,"src":"4620:13:86","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":34421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4620:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":34422,"nodeType":"RevertStatement","src":"4613:22:86"}]},"functionSelector":"45d132fe","id":34424,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertErrorCodeHook","nameLocation":"4562:24:86","nodeType":"FunctionDefinition","parameters":{"id":34418,"nodeType":"ParameterList","parameters":[],"src":"4586:2:86"},"returnParameters":{"id":34419,"nodeType":"ParameterList","parameters":[],"src":"4603:0:86"},"scope":34813,"src":"4553:89:86","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":34461,"nodeType":"Block","src":"4704:284:86","statements":[{"clauses":[{"block":{"id":34442,"nodeType":"Block","src":"4807:53:86","statements":[{"expression":{"arguments":[{"hexValue":"556e65787065637465642073756363657373","id":34439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4828:20:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""},"value":"Unexpected success"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""}],"id":34438,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4821:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":34440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34441,"nodeType":"ExpressionStatement","src":"4821:28:86"}]},"errorName":"","id":34443,"nodeType":"TryCatchClause","src":"4807:53:86"},{"block":{"id":34458,"nodeType":"Block","src":"4889:93:86","statements":[{"expression":{"arguments":[{"arguments":[{"id":34451,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34445,"src":"4952:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34449,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"4921:11:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":34450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4933:18:86","memberName":"catchEncodedResult","nodeType":"MemberAccess","referencedDeclaration":6022,"src":"4921:30:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":34452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4921:38:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":34454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4962:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34453,"name":"uint256","nodeType":"ElementaryTypeName","src":"4962:7:86","typeDescriptions":{}}}],"id":34455,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4961:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":34447,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4910:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4914:6:86","memberName":"decode","nodeType":"MemberAccess","src":"4910:10:86","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":34456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4910:61:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34428,"id":34457,"nodeType":"Return","src":"4903:68:86"}]},"errorName":"","id":34459,"nodeType":"TryCatchClause","parameters":{"id":34446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34445,"mutability":"mutable","name":"result","nameLocation":"4881:6:86","nodeType":"VariableDeclaration","scope":34459,"src":"4868:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":34444,"name":"bytes","nodeType":"ElementaryTypeName","src":"4868:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4867:21:86"},"src":"4861:121:86"}],"externalCall":{"arguments":[{"arguments":[{"expression":{"expression":{"id":34433,"name":"RouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34813,"src":"4763:10:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterMock_$34813_$","typeString":"type(contract RouterMock)"}},"id":34434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4774:21:86","memberName":"queryRevertLegacyHook","nodeType":"MemberAccess","referencedDeclaration":34470,"src":"4763:32:86","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$__$returns$__$","typeString":"function RouterMock.queryRevertLegacyHook() pure"}},"id":34435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4796:8:86","memberName":"selector","nodeType":"MemberAccess","src":"4763:41:86","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":34431,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4740:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4744:18:86","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4740:22:86","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":34436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4740:65:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34429,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"4718:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4725:14:86","memberName":"quoteAndRevert","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"4718:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":34437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4718:88:86","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34460,"nodeType":"TryStatement","src":"4714:268:86"}]},"functionSelector":"339f3838","id":34462,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertLegacy","nameLocation":"4657:17:86","nodeType":"FunctionDefinition","parameters":{"id":34425,"nodeType":"ParameterList","parameters":[],"src":"4674:2:86"},"returnParameters":{"id":34428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34427,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34462,"src":"4695:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34426,"name":"uint256","nodeType":"ElementaryTypeName","src":"4695:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4694:9:86"},"scope":34813,"src":"4648:340:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34469,"nodeType":"Block","src":"5041:47:86","statements":[{"expression":{"arguments":[{"hexValue":"4c65676163792072657665727420726561736f6e","id":34466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5058:22:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_f3fa99d79ae4d6199f28559da514c573ab41f2feefd45a7aac4a97a8f0e048be","typeString":"literal_string \"Legacy revert reason\""},"value":"Legacy revert reason"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f3fa99d79ae4d6199f28559da514c573ab41f2feefd45a7aac4a97a8f0e048be","typeString":"literal_string \"Legacy revert reason\""}],"id":34465,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5051:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":34467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5051:30:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34468,"nodeType":"ExpressionStatement","src":"5051:30:86"}]},"functionSelector":"22717db2","id":34470,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertLegacyHook","nameLocation":"5003:21:86","nodeType":"FunctionDefinition","parameters":{"id":34463,"nodeType":"ParameterList","parameters":[],"src":"5024:2:86"},"returnParameters":{"id":34464,"nodeType":"ParameterList","parameters":[],"src":"5041:0:86"},"scope":34813,"src":"4994:94:86","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":34507,"nodeType":"Block","src":"5149:283:86","statements":[{"clauses":[{"block":{"id":34488,"nodeType":"Block","src":"5251:53:86","statements":[{"expression":{"arguments":[{"hexValue":"556e65787065637465642073756363657373","id":34485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5272:20:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""},"value":"Unexpected success"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""}],"id":34484,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5265:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":34486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5265:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34487,"nodeType":"ExpressionStatement","src":"5265:28:86"}]},"errorName":"","id":34489,"nodeType":"TryCatchClause","src":"5251:53:86"},{"block":{"id":34504,"nodeType":"Block","src":"5333:93:86","statements":[{"expression":{"arguments":[{"arguments":[{"id":34497,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34491,"src":"5396:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34495,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"5365:11:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":34496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5377:18:86","memberName":"catchEncodedResult","nodeType":"MemberAccess","referencedDeclaration":6022,"src":"5365:30:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":34498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:38:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":34500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5406:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34499,"name":"uint256","nodeType":"ElementaryTypeName","src":"5406:7:86","typeDescriptions":{}}}],"id":34501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5405:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":34493,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5354:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5358:6:86","memberName":"decode","nodeType":"MemberAccess","src":"5354:10:86","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":34502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:61:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34474,"id":34503,"nodeType":"Return","src":"5347:68:86"}]},"errorName":"","id":34505,"nodeType":"TryCatchClause","parameters":{"id":34492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34491,"mutability":"mutable","name":"result","nameLocation":"5325:6:86","nodeType":"VariableDeclaration","scope":34505,"src":"5312:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":34490,"name":"bytes","nodeType":"ElementaryTypeName","src":"5312:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5311:21:86"},"src":"5305:121:86"}],"externalCall":{"arguments":[{"arguments":[{"expression":{"expression":{"id":34479,"name":"RouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34813,"src":"5208:10:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterMock_$34813_$","typeString":"type(contract RouterMock)"}},"id":34480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5219:20:86","memberName":"queryRevertPanicHook","nodeType":"MemberAccess","referencedDeclaration":34526,"src":"5208:31:86","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$__$returns$_t_uint256_$","typeString":"function RouterMock.queryRevertPanicHook() pure returns (uint256)"}},"id":34481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5240:8:86","memberName":"selector","nodeType":"MemberAccess","src":"5208:40:86","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":34477,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5185:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5189:18:86","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"5185:22:86","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":34482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5185:64:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34475,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"5163:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5170:14:86","memberName":"quoteAndRevert","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"5163:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":34483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5163:87:86","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34506,"nodeType":"TryStatement","src":"5159:267:86"}]},"functionSelector":"aaf51ea3","id":34508,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertPanic","nameLocation":"5103:16:86","nodeType":"FunctionDefinition","parameters":{"id":34471,"nodeType":"ParameterList","parameters":[],"src":"5119:2:86"},"returnParameters":{"id":34474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34508,"src":"5140:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34472,"name":"uint256","nodeType":"ElementaryTypeName","src":"5140:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5139:9:86"},"scope":34813,"src":"5094:338:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34525,"nodeType":"Block","src":"5502:76:86","statements":[{"assignments":[34514],"declarations":[{"constant":false,"id":34514,"mutability":"mutable","name":"a","nameLocation":"5520:1:86","nodeType":"VariableDeclaration","scope":34525,"src":"5512:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34513,"name":"uint256","nodeType":"ElementaryTypeName","src":"5512:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":34516,"initialValue":{"hexValue":"3130","id":34515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5524:2:86","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"VariableDeclarationStatement","src":"5512:14:86"},{"assignments":[34518],"declarations":[{"constant":false,"id":34518,"mutability":"mutable","name":"b","nameLocation":"5544:1:86","nodeType":"VariableDeclaration","scope":34525,"src":"5536:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34517,"name":"uint256","nodeType":"ElementaryTypeName","src":"5536:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":34520,"initialValue":{"hexValue":"30","id":34519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5548:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5536:13:86"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":34523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":34521,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34514,"src":"5566:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":34522,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34518,"src":"5570:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5566:5:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34512,"id":34524,"nodeType":"Return","src":"5559:12:86"}]},"functionSelector":"d3a5152a","id":34526,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertPanicHook","nameLocation":"5447:20:86","nodeType":"FunctionDefinition","parameters":{"id":34509,"nodeType":"ParameterList","parameters":[],"src":"5467:2:86"},"returnParameters":{"id":34512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34511,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34526,"src":"5493:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34510,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5492:9:86"},"scope":34813,"src":"5438:140:86","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":34563,"nodeType":"Block","src":"5642:286:86","statements":[{"clauses":[{"block":{"id":34544,"nodeType":"Block","src":"5747:53:86","statements":[{"expression":{"arguments":[{"hexValue":"556e65787065637465642073756363657373","id":34541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5768:20:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""},"value":"Unexpected success"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_52cc6744a1218fb09c6a53a5e53dd9c5152cf7440797e8ce2d6c7d521e9d14d5","typeString":"literal_string \"Unexpected success\""}],"id":34540,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5761:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":34542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5761:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34543,"nodeType":"ExpressionStatement","src":"5761:28:86"}]},"errorName":"","id":34545,"nodeType":"TryCatchClause","src":"5747:53:86"},{"block":{"id":34560,"nodeType":"Block","src":"5829:93:86","statements":[{"expression":{"arguments":[{"arguments":[{"id":34553,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34547,"src":"5892:6:86","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34551,"name":"RevertCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"5861:11:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RevertCodec_$6060_$","typeString":"type(library RevertCodec)"}},"id":34552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5873:18:86","memberName":"catchEncodedResult","nodeType":"MemberAccess","referencedDeclaration":6022,"src":"5861:30:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":34554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:38:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":34556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5902:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34555,"name":"uint256","nodeType":"ElementaryTypeName","src":"5902:7:86","typeDescriptions":{}}}],"id":34557,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5901:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":34549,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5850:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5854:6:86","memberName":"decode","nodeType":"MemberAccess","src":"5850:10:86","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":34558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5850:61:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":34530,"id":34559,"nodeType":"Return","src":"5843:68:86"}]},"errorName":"","id":34561,"nodeType":"TryCatchClause","parameters":{"id":34548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34547,"mutability":"mutable","name":"result","nameLocation":"5821:6:86","nodeType":"VariableDeclaration","scope":34561,"src":"5808:19:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":34546,"name":"bytes","nodeType":"ElementaryTypeName","src":"5808:5:86","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5807:21:86"},"src":"5801:121:86"}],"externalCall":{"arguments":[{"arguments":[{"expression":{"expression":{"id":34535,"name":"RouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34813,"src":"5701:10:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterMock_$34813_$","typeString":"type(contract RouterMock)"}},"id":34536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5712:23:86","memberName":"queryRevertNoReasonHook","nodeType":"MemberAccess","referencedDeclaration":34573,"src":"5701:34:86","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$__$returns$_t_uint256_$","typeString":"function RouterMock.queryRevertNoReasonHook() pure returns (uint256)"}},"id":34537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5736:8:86","memberName":"selector","nodeType":"MemberAccess","src":"5701:43:86","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":34533,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5678:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5682:18:86","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"5678:22:86","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":34538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5678:67:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34531,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"5656:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5663:14:86","memberName":"quoteAndRevert","nodeType":"MemberAccess","referencedDeclaration":4180,"src":"5656:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":34539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5656:90:86","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34562,"nodeType":"TryStatement","src":"5652:270:86"}]},"functionSelector":"90aa9f76","id":34564,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertNoReason","nameLocation":"5593:19:86","nodeType":"FunctionDefinition","parameters":{"id":34527,"nodeType":"ParameterList","parameters":[],"src":"5612:2:86"},"returnParameters":{"id":34530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34564,"src":"5633:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34528,"name":"uint256","nodeType":"ElementaryTypeName","src":"5633:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5632:9:86"},"scope":34813,"src":"5584:344:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34572,"nodeType":"Block","src":"6001:25:86","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":34569,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6011:6:86","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":34570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6011:8:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34571,"nodeType":"ExpressionStatement","src":"6011:8:86"}]},"functionSelector":"b3b0a7a7","id":34573,"implemented":true,"kind":"function","modifiers":[],"name":"queryRevertNoReasonHook","nameLocation":"5943:23:86","nodeType":"FunctionDefinition","parameters":{"id":34565,"nodeType":"ParameterList","parameters":[],"src":"5966:2:86"},"returnParameters":{"id":34568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34573,"src":"5992:7:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34566,"name":"uint256","nodeType":"ElementaryTypeName","src":"5992:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5991:9:86"},"scope":34813,"src":"5934:92:86","stateMutability":"pure","virtual":false,"visibility":"external"},{"canonicalName":"RouterMock.ManualAddRemoveLiquidityParams","id":34583,"members":[{"constant":false,"id":34575,"mutability":"mutable","name":"pool","nameLocation":"6088:4:86","nodeType":"VariableDeclaration","scope":34583,"src":"6080:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34574,"name":"address","nodeType":"ElementaryTypeName","src":"6080:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":34577,"mutability":"mutable","name":"sender","nameLocation":"6110:6:86","nodeType":"VariableDeclaration","scope":34583,"src":"6102:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34576,"name":"address","nodeType":"ElementaryTypeName","src":"6102:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":34580,"mutability":"mutable","name":"maxAmountsIn","nameLocation":"6136:12:86","nodeType":"VariableDeclaration","scope":34583,"src":"6126:22:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":34578,"name":"uint256","nodeType":"ElementaryTypeName","src":"6126:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34579,"nodeType":"ArrayTypeName","src":"6126:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":34582,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"6166:15:86","nodeType":"VariableDeclaration","scope":34583,"src":"6158:23:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34581,"name":"uint256","nodeType":"ElementaryTypeName","src":"6158:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ManualAddRemoveLiquidityParams","nameLocation":"6039:30:86","nodeType":"StructDefinition","scope":34813,"src":"6032:156:86","visibility":"public"},{"body":{"id":34627,"nodeType":"Block","src":"6462:217:86","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":34609,"name":"RouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34813,"src":"6548:10:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RouterMock_$34813_$","typeString":"type(contract RouterMock)"}},"id":34610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6559:31:86","memberName":"manualAddAndRemoveLiquidityHook","nodeType":"MemberAccess","referencedDeclaration":34812,"src":"6548:42:86","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function RouterMock.manualAddAndRemoveLiquidityHook(struct RouterMock.ManualAddRemoveLiquidityParams calldata) returns (uint256[] memory,uint256,uint256,uint256[] memory)"}},{"id":34611,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34586,"src":"6592:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function RouterMock.manualAddAndRemoveLiquidityHook(struct RouterMock.ManualAddRemoveLiquidityParams calldata) returns (uint256[] memory,uint256,uint256,uint256[] memory)"},{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}],"expression":{"id":34607,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6533:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6537:10:86","memberName":"encodeCall","nodeType":"MemberAccess","src":"6533:14:86","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":34612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6533:66:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":34605,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"6519:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6526:6:86","memberName":"unlock","nodeType":"MemberAccess","referencedDeclaration":4222,"src":"6519:13:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) external returns (bytes memory)"}},"id":34613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6519:81:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"baseExpression":{"id":34615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6619:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34614,"name":"uint256","nodeType":"ElementaryTypeName","src":"6619:7:86","typeDescriptions":{}}},"id":34616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6619:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":34618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6630:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34617,"name":"uint256","nodeType":"ElementaryTypeName","src":"6630:7:86","typeDescriptions":{}}},{"id":34620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6639:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34619,"name":"uint256","nodeType":"ElementaryTypeName","src":"6639:7:86","typeDescriptions":{}}},{"baseExpression":{"id":34622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6648:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":34621,"name":"uint256","nodeType":"ElementaryTypeName","src":"6648:7:86","typeDescriptions":{}}},"id":34623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6648:9:86","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":34624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6618:40:86","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(uint256),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(uint256[] memory),type(uint256),type(uint256),type(uint256[] memory))"}],"expression":{"id":34603,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6491:3:86","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":34604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6495:6:86","memberName":"decode","nodeType":"MemberAccess","src":"6491:10:86","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":34625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6491:181:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,uint256,uint256[] memory)"}},"functionReturnParameters":34602,"id":34626,"nodeType":"Return","src":"6472:200:86"}]},"functionSelector":"68d5e16a","id":34628,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":34589,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6329:3:86","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":34590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6333:6:86","memberName":"sender","nodeType":"MemberAccess","src":"6329:10:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":34591,"kind":"modifierInvocation","modifierName":{"id":34588,"name":"saveSender","nameLocations":["6318:10:86"],"nodeType":"IdentifierPath","referencedDeclaration":18112,"src":"6318:10:86"},"nodeType":"ModifierInvocation","src":"6318:22:86"}],"name":"manualAddAndRemoveLiquidity","nameLocation":"6203:27:86","nodeType":"FunctionDefinition","parameters":{"id":34587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34586,"mutability":"mutable","name":"params","nameLocation":"6280:6:86","nodeType":"VariableDeclaration","scope":34628,"src":"6240:46:86","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams"},"typeName":{"id":34585,"nodeType":"UserDefinedTypeName","pathNode":{"id":34584,"name":"ManualAddRemoveLiquidityParams","nameLocations":["6240:30:86"],"nodeType":"IdentifierPath","referencedDeclaration":34583,"src":"6240:30:86"},"referencedDeclaration":34583,"src":"6240:30:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_storage_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams"}},"visibility":"internal"}],"src":"6230:62:86"},"returnParameters":{"id":34602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34594,"mutability":"mutable","name":"amountsIn","nameLocation":"6375:9:86","nodeType":"VariableDeclaration","scope":34628,"src":"6358:26:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":34592,"name":"uint256","nodeType":"ElementaryTypeName","src":"6358:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34593,"nodeType":"ArrayTypeName","src":"6358:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":34596,"mutability":"mutable","name":"bptAmountOut","nameLocation":"6394:12:86","nodeType":"VariableDeclaration","scope":34628,"src":"6386:20:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34595,"name":"uint256","nodeType":"ElementaryTypeName","src":"6386:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34598,"mutability":"mutable","name":"bptAmountIn","nameLocation":"6416:11:86","nodeType":"VariableDeclaration","scope":34628,"src":"6408:19:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34597,"name":"uint256","nodeType":"ElementaryTypeName","src":"6408:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34601,"mutability":"mutable","name":"amountsOut","nameLocation":"6446:10:86","nodeType":"VariableDeclaration","scope":34628,"src":"6429:27:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":34599,"name":"uint256","nodeType":"ElementaryTypeName","src":"6429:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34600,"nodeType":"ArrayTypeName","src":"6429:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6357:100:86"},"scope":34813,"src":"6194:485:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":34811,"nodeType":"Block","src":"6926:1857:86","statements":[{"expression":{"id":34666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":34644,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34635,"src":"6937:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":34645,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34637,"src":"6948:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":34646,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6936:27:86","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$__$","typeString":"tuple(uint256[] memory,uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":34650,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"7042:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7049:4:86","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":34575,"src":"7042:11:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":34652,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"7075:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7082:6:86","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":34577,"src":"7075:13:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":34654,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"7120:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7127:12:86","memberName":"maxAmountsIn","nodeType":"MemberAccess","referencedDeclaration":34580,"src":"7120:19:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"expression":{"id":34656,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"7174:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7181:15:86","memberName":"minBptAmountOut","nodeType":"MemberAccess","referencedDeclaration":34582,"src":"7174:22:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":34658,"name":"AddLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"7220:16:86","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_AddLiquidityKind_$4589_$","typeString":"type(enum AddLiquidityKind)"}},"id":34659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7237:12:86","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4584,"src":"7220:29:86","typeDescriptions":{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"}},{"arguments":[{"hexValue":"","id":34662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7283:2:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":34661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7277:5:86","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":34660,"name":"bytes","nodeType":"ElementaryTypeName","src":"7277:5:86","typeDescriptions":{}}},"id":34663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7277:9:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_AddLiquidityKind_$4589","typeString":"enum AddLiquidityKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":34649,"name":"AddLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4605,"src":"6999:18:86","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddLiquidityParams_$4605_storage_ptr_$","typeString":"type(struct AddLiquidityParams storage pointer)"}},"id":34664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7036:4:86","7071:2:86","7106:12:86","7157:15:86","7214:4:86","7267:8:86"],"names":["pool","to","maxAmountsIn","minBptAmountOut","kind","userData"],"nodeType":"FunctionCall","src":"6999:302:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}],"expression":{"id":34647,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"6966:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6973:12:86","memberName":"addLiquidity","nodeType":"MemberAccess","referencedDeclaration":4271,"src":"6966:19:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct AddLiquidityParams memory) external returns (uint256[] memory,uint256,bytes memory)"}},"id":34665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6966:345:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256,bytes memory)"}},"src":"6936:375:86","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34667,"nodeType":"ExpressionStatement","src":"6936:375:86"},{"assignments":[34672],"declarations":[{"constant":false,"id":34672,"mutability":"mutable","name":"tokens","nameLocation":"7416:6:86","nodeType":"VariableDeclaration","scope":34811,"src":"7400:22:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":34670,"nodeType":"UserDefinedTypeName","pathNode":{"id":34669,"name":"IERC20","nameLocations":["7400:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"7400:6:86"},"referencedDeclaration":39274,"src":"7400:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":34671,"nodeType":"ArrayTypeName","src":"7400:8:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":34678,"initialValue":{"arguments":[{"expression":{"id":34675,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"7446:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7453:4:86","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":34575,"src":"7446:11:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":34673,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7425:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7432:13:86","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"7425:20:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":34677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7400:58:86"},{"body":{"id":34734,"nodeType":"Block","src":"7513:490:86","statements":[{"assignments":[34692],"declarations":[{"constant":false,"id":34692,"mutability":"mutable","name":"token","nameLocation":"7534:5:86","nodeType":"VariableDeclaration","scope":34734,"src":"7527:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":34691,"nodeType":"UserDefinedTypeName","pathNode":{"id":34690,"name":"IERC20","nameLocations":["7527:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"7527:6:86"},"referencedDeclaration":39274,"src":"7527:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":34696,"initialValue":{"baseExpression":{"id":34693,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34672,"src":"7542:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":34695,"indexExpression":{"id":34694,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34680,"src":"7549:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7542:9:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"7527:24:86"},{"assignments":[34698],"declarations":[{"constant":false,"id":34698,"mutability":"mutable","name":"amountIn","nameLocation":"7573:8:86","nodeType":"VariableDeclaration","scope":34734,"src":"7565:16:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34697,"name":"uint256","nodeType":"ElementaryTypeName","src":"7565:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":34702,"initialValue":{"baseExpression":{"id":34699,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34635,"src":"7584:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":34701,"indexExpression":{"id":34700,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34680,"src":"7594:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7584:12:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7565:31:86"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":34705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":34703,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34698,"src":"7614:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":34704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7626:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7614:13:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":34708,"nodeType":"IfStatement","src":"7610:60:86","trueBody":{"id":34707,"nodeType":"Block","src":"7629:41:86","statements":[{"id":34706,"nodeType":"Continue","src":"7647:8:86"}]}},{"expression":{"arguments":[{"expression":{"id":34712,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"7879:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7886:6:86","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":34577,"src":"7879:13:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":34716,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7902:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"id":34715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7894:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":34714,"name":"address","nodeType":"ElementaryTypeName","src":"7894:7:86","typeDescriptions":{}}},"id":34717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7894:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":34718,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34698,"src":"7911:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7920:9:86","memberName":"toUint160","nodeType":"MemberAccess","referencedDeclaration":42734,"src":"7911:18:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint160_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint160)"}},"id":34720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7911:20:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"arguments":[{"id":34723,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34692,"src":"7941:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":34722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7933:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":34721,"name":"address","nodeType":"ElementaryTypeName","src":"7933:7:86","typeDescriptions":{}}},"id":34724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7933:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":34709,"name":"_permit2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18095,"src":"7857:8:86","typeDescriptions":{"typeIdentifier":"t_contract$_IPermit2_$46102","typeString":"contract IPermit2"}},"id":34711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7866:12:86","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46055,"src":"7857:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint160_$_t_address_$returns$__$","typeString":"function (address,address,uint160,address) external"}},"id":34725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7857:91:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34726,"nodeType":"ExpressionStatement","src":"7857:91:86"},{"expression":{"arguments":[{"id":34730,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34692,"src":"7976:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":34731,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34698,"src":"7983:8:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":34727,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"7962:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7969:6:86","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"7962:13:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":34732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7962:30:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34733,"nodeType":"ExpressionStatement","src":"7962:30:86"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":34686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":34683,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34680,"src":"7489:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":34684,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34672,"src":"7493:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":34685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7500:6:86","memberName":"length","nodeType":"MemberAccess","src":"7493:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7489:17:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":34735,"initializationExpression":{"assignments":[34680],"declarations":[{"constant":false,"id":34680,"mutability":"mutable","name":"i","nameLocation":"7482:1:86","nodeType":"VariableDeclaration","scope":34735,"src":"7474:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34679,"name":"uint256","nodeType":"ElementaryTypeName","src":"7474:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":34682,"initialValue":{"hexValue":"30","id":34681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7486:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7474:13:86"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":34688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7508:3:86","subExpression":{"id":34687,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34680,"src":"7510:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34689,"nodeType":"ExpressionStatement","src":"7508:3:86"},"nodeType":"ForStatement","src":"7469:534:86"},{"expression":{"id":34768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":34736,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34639,"src":"8014:11:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":34737,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34642,"src":"8027:10:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":34738,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8013:27:86","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(uint256,uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":34742,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"8125:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8132:4:86","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":34575,"src":"8125:11:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":34744,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"8160:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8167:6:86","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":34577,"src":"8160:13:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":34751,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"8237:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8244:6:86","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":34577,"src":"8237:13:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":34747,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"8214:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8221:4:86","memberName":"pool","nodeType":"MemberAccess","referencedDeclaration":34575,"src":"8214:11:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":34746,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"8207:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":34749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8207:19:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":34750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8227:9:86","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":39231,"src":"8207:29:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":34753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8207:44:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":34757,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34672,"src":"8298:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":34758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8305:6:86","memberName":"length","nodeType":"MemberAccess","src":"8298:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":34756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8284:13:86","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":34754,"name":"uint256","nodeType":"ElementaryTypeName","src":"8288:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34755,"nodeType":"ArrayTypeName","src":"8288:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":34759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8284:28:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":34760,"name":"RemoveLiquidityKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"8336:19:86","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RemoveLiquidityKind_$4610_$","typeString":"type(enum RemoveLiquidityKind)"}},"id":34761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8356:12:86","memberName":"PROPORTIONAL","nodeType":"MemberAccess","referencedDeclaration":4606,"src":"8336:32:86","typeDescriptions":{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"}},{"arguments":[{"hexValue":"","id":34764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8402:2:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":34763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8396:5:86","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":34762,"name":"bytes","nodeType":"ElementaryTypeName","src":"8396:5:86","typeDescriptions":{}}},"id":34765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8396:9:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_enum$_RemoveLiquidityKind_$4610","typeString":"enum RemoveLiquidityKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":34741,"name":"RemoveLiquidityParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4626,"src":"8079:21:86","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_RemoveLiquidityParams_$4626_storage_ptr_$","typeString":"type(struct RemoveLiquidityParams storage pointer)"}},"id":34766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8119:4:86","8154:4:86","8191:14:86","8269:13:86","8330:4:86","8386:8:86"],"names":["pool","from","maxBptAmountIn","minAmountsOut","kind","userData"],"nodeType":"FunctionCall","src":"8079:341:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}],"expression":{"id":34739,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8043:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8050:15:86","memberName":"removeLiquidity","nodeType":"MemberAccess","referencedDeclaration":4285,"src":"8043:22:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct RemoveLiquidityParams memory) external returns (uint256,uint256[] memory,bytes memory)"}},"id":34767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8043:387:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,bytes memory)"}},"src":"8013:417:86","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34769,"nodeType":"ExpressionStatement","src":"8013:417:86"},{"body":{"id":34809,"nodeType":"Block","src":"8485:292:86","statements":[{"assignments":[34783],"declarations":[{"constant":false,"id":34783,"mutability":"mutable","name":"token","nameLocation":"8506:5:86","nodeType":"VariableDeclaration","scope":34809,"src":"8499:12:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":34782,"nodeType":"UserDefinedTypeName","pathNode":{"id":34781,"name":"IERC20","nameLocations":["8499:6:86"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"8499:6:86"},"referencedDeclaration":39274,"src":"8499:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":34787,"initialValue":{"baseExpression":{"id":34784,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34672,"src":"8514:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":34786,"indexExpression":{"id":34785,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34771,"src":"8521:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8514:9:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"8499:24:86"},{"assignments":[34789],"declarations":[{"constant":false,"id":34789,"mutability":"mutable","name":"amountOut","nameLocation":"8545:9:86","nodeType":"VariableDeclaration","scope":34809,"src":"8537:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34788,"name":"uint256","nodeType":"ElementaryTypeName","src":"8537:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":34793,"initialValue":{"baseExpression":{"id":34790,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34642,"src":"8557:10:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":34792,"indexExpression":{"id":34791,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34771,"src":"8568:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8557:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8537:33:86"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":34796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":34794,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34789,"src":"8588:9:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":34795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8601:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8588:14:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":34799,"nodeType":"IfStatement","src":"8584:61:86","trueBody":{"id":34798,"nodeType":"Block","src":"8604:41:86","statements":[{"id":34797,"nodeType":"Continue","src":"8622:8:86"}]}},{"expression":{"arguments":[{"id":34803,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34783,"src":"8734:5:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"expression":{"id":34804,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34631,"src":"8741:6:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams calldata"}},"id":34805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8748:6:86","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":34577,"src":"8741:13:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":34806,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34789,"src":"8756:9:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":34800,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"8720:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8727:6:86","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"8720:13:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":34807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8720:46:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34808,"nodeType":"ExpressionStatement","src":"8720:46:86"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":34777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":34774,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34771,"src":"8461:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":34775,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34672,"src":"8465:6:86","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":34776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8472:6:86","memberName":"length","nodeType":"MemberAccess","src":"8465:13:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8461:17:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":34810,"initializationExpression":{"assignments":[34771],"declarations":[{"constant":false,"id":34771,"mutability":"mutable","name":"i","nameLocation":"8454:1:86","nodeType":"VariableDeclaration","scope":34810,"src":"8446:9:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34770,"name":"uint256","nodeType":"ElementaryTypeName","src":"8446:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":34773,"initialValue":{"hexValue":"30","id":34772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8458:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8446:13:86"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":34779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8480:3:86","subExpression":{"id":34778,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34771,"src":"8482:1:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34780,"nodeType":"ExpressionStatement","src":"8480:3:86"},"nodeType":"ForStatement","src":"8441:336:86"}]},"functionSelector":"3a1b05de","id":34812,"implemented":true,"kind":"function","modifiers":[],"name":"manualAddAndRemoveLiquidityHook","nameLocation":"6694:31:86","nodeType":"FunctionDefinition","parameters":{"id":34632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34631,"mutability":"mutable","name":"params","nameLocation":"6775:6:86","nodeType":"VariableDeclaration","scope":34812,"src":"6735:46:86","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_calldata_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams"},"typeName":{"id":34630,"nodeType":"UserDefinedTypeName","pathNode":{"id":34629,"name":"ManualAddRemoveLiquidityParams","nameLocations":["6735:30:86"],"nodeType":"IdentifierPath","referencedDeclaration":34583,"src":"6735:30:86"},"referencedDeclaration":34583,"src":"6735:30:86","typeDescriptions":{"typeIdentifier":"t_struct$_ManualAddRemoveLiquidityParams_$34583_storage_ptr","typeString":"struct RouterMock.ManualAddRemoveLiquidityParams"}},"visibility":"internal"}],"src":"6725:62:86"},"returnParameters":{"id":34643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34635,"mutability":"mutable","name":"amountsIn","nameLocation":"6839:9:86","nodeType":"VariableDeclaration","scope":34812,"src":"6822:26:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":34633,"name":"uint256","nodeType":"ElementaryTypeName","src":"6822:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34634,"nodeType":"ArrayTypeName","src":"6822:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":34637,"mutability":"mutable","name":"bptAmountOut","nameLocation":"6858:12:86","nodeType":"VariableDeclaration","scope":34812,"src":"6850:20:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34636,"name":"uint256","nodeType":"ElementaryTypeName","src":"6850:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34639,"mutability":"mutable","name":"bptAmountIn","nameLocation":"6880:11:86","nodeType":"VariableDeclaration","scope":34812,"src":"6872:19:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34638,"name":"uint256","nodeType":"ElementaryTypeName","src":"6872:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34642,"mutability":"mutable","name":"amountsOut","nameLocation":"6910:10:86","nodeType":"VariableDeclaration","scope":34812,"src":"6893:27:86","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":34640,"name":"uint256","nodeType":"ElementaryTypeName","src":"6893:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34641,"nodeType":"ArrayTypeName","src":"6893:9:86","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6821:100:86"},"scope":34813,"src":"6685:2098:86","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":34814,"src":"978:7807:86","usedErrors":[3422,5586,5978,5981,9512,18076,18079,18082,34086,39353,39634,39639,39642,42381],"usedEvents":[]}],"src":"46:8740:86"},"id":86},"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol","exportedSymbols":{"IERC20":[39274],"IERC4626":[38998],"IVault":[2893],"IVaultAdminMock":[303],"PackedTokenBalance":[5970],"VaultAdmin":[24309],"VaultAdminMock":[35247]},"id":35248,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":34815,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:87"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":34817,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35248,"sourceUnit":39275,"src":"72:72:87","symbolAliases":[{"foreign":{"id":34816,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":34819,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35248,"sourceUnit":38999,"src":"145:75:87","symbolAliases":[{"foreign":{"id":34818,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"154:8:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol","file":"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol","id":34821,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35248,"sourceUnit":304,"src":"222:98:87","symbolAliases":[{"foreign":{"id":34820,"name":"IVaultAdminMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":303,"src":"231:15:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":34823,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35248,"sourceUnit":2894,"src":"321:81:87","symbolAliases":[{"foreign":{"id":34822,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"330:6:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","id":34825,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35248,"sourceUnit":5971,"src":"404:111:87","symbolAliases":[{"foreign":{"id":34824,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"413:18:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultAdmin.sol","file":"../VaultAdmin.sol","id":34827,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35248,"sourceUnit":24310,"src":"517:47:87","symbolAliases":[{"foreign":{"id":34826,"name":"VaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24309,"src":"526:10:87","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":34828,"name":"IVaultAdminMock","nameLocations":["593:15:87"],"nodeType":"IdentifierPath","referencedDeclaration":303,"src":"593:15:87"},"id":34829,"nodeType":"InheritanceSpecifier","src":"593:15:87"},{"baseName":{"id":34830,"name":"VaultAdmin","nameLocations":["610:10:87"],"nodeType":"IdentifierPath","referencedDeclaration":24309,"src":"610:10:87"},"id":34831,"nodeType":"InheritanceSpecifier","src":"610:10:87"}],"canonicalName":"VaultAdminMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":35247,"internalFunctionIDs":{"6093":1,"6114":2},"linearizedBaseContracts":[35247,24309,27688,5327,130,25145,38828,1685,39065,9568,27923,3550,3789,3183,303],"name":"VaultAdminMock","nameLocation":"575:14:87","nodeType":"ContractDefinition","nodes":[{"global":false,"id":34834,"libraryName":{"id":34832,"name":"PackedTokenBalance","nameLocations":["633:18:87"],"nodeType":"IdentifierPath","referencedDeclaration":5970,"src":"633:18:87"},"nodeType":"UsingForDirective","src":"627:37:87","typeName":{"id":34833,"name":"bytes32","nodeType":"ElementaryTypeName","src":"656:7:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"body":{"id":34855,"nodeType":"Block","src":"946:2:87","statements":[]},"id":34856,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":34848,"name":"mainVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34837,"src":"861:9:87","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":34849,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34839,"src":"872:19:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":34850,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34841,"src":"893:20:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":34851,"name":"minTradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34843,"src":"915:14:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":34852,"name":"minWrapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34845,"src":"931:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":34853,"kind":"baseConstructorSpecifier","modifierName":{"id":34847,"name":"VaultAdmin","nameLocations":["850:10:87"],"nodeType":"IdentifierPath","referencedDeclaration":24309,"src":"850:10:87"},"nodeType":"ModifierInvocation","src":"850:95:87"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":34846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34837,"mutability":"mutable","name":"mainVault","nameLocation":"698:9:87","nodeType":"VariableDeclaration","scope":34856,"src":"691:16:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":34836,"nodeType":"UserDefinedTypeName","pathNode":{"id":34835,"name":"IVault","nameLocations":["691:6:87"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"691:6:87"},"referencedDeclaration":2893,"src":"691:6:87","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":34839,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"724:19:87","nodeType":"VariableDeclaration","scope":34856,"src":"717:26:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":34838,"name":"uint32","nodeType":"ElementaryTypeName","src":"717:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":34841,"mutability":"mutable","name":"bufferPeriodDuration","nameLocation":"760:20:87","nodeType":"VariableDeclaration","scope":34856,"src":"753:27:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":34840,"name":"uint32","nodeType":"ElementaryTypeName","src":"753:6:87","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":34843,"mutability":"mutable","name":"minTradeAmount","nameLocation":"798:14:87","nodeType":"VariableDeclaration","scope":34856,"src":"790:22:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34842,"name":"uint256","nodeType":"ElementaryTypeName","src":"790:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34845,"mutability":"mutable","name":"minWrapAmount","nameLocation":"830:13:87","nodeType":"VariableDeclaration","scope":34856,"src":"822:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34844,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"681:168:87"},"returnParameters":{"id":34854,"nodeType":"ParameterList","parameters":[],"src":"946:0:87"},"scope":35247,"src":"670:278:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[185],"body":{"id":34863,"nodeType":"Block","src":"991:38:87","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":34860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1017:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":34859,"name":"_setVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22738,"src":"1001:15:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":34861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1001:21:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34862,"nodeType":"ExpressionStatement","src":"1001:21:87"}]},"functionSelector":"071d8a02","id":34864,"implemented":true,"kind":"function","modifiers":[],"name":"manualPauseVault","nameLocation":"963:16:87","nodeType":"FunctionDefinition","parameters":{"id":34857,"nodeType":"ParameterList","parameters":[],"src":"979:2:87"},"returnParameters":{"id":34858,"nodeType":"ParameterList","parameters":[],"src":"991:0:87"},"scope":35247,"src":"954:75:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[188],"body":{"id":34871,"nodeType":"Block","src":"1074:39:87","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":34868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1100:5:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":34867,"name":"_setVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22738,"src":"1084:15:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":34869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1084:22:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34870,"nodeType":"ExpressionStatement","src":"1084:22:87"}]},"functionSelector":"cc671ff7","id":34872,"implemented":true,"kind":"function","modifiers":[],"name":"manualUnpauseVault","nameLocation":"1044:18:87","nodeType":"FunctionDefinition","parameters":{"id":34865,"nodeType":"ParameterList","parameters":[],"src":"1062:2:87"},"returnParameters":{"id":34866,"nodeType":"ParameterList","parameters":[],"src":"1074:0:87"},"scope":35247,"src":"1035:78:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[193],"body":{"id":34890,"nodeType":"Block","src":"1167:102:87","statements":[{"expression":{"id":34883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":34877,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"1177:17:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":34879,"indexExpression":{"id":34878,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34874,"src":"1195:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1177:23:87","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"id":34880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1201:12:87","memberName":"pauseManager","nodeType":"MemberAccess","referencedDeclaration":4454,"src":"1177:36:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":34881,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1216:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":34882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1220:6:87","memberName":"sender","nodeType":"MemberAccess","src":"1216:10:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1177:49:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":34884,"nodeType":"ExpressionStatement","src":"1177:49:87"},{"expression":{"arguments":[{"id":34886,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34874,"src":"1251:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":34887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1257:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":34885,"name":"_setPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22842,"src":"1236:14:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":34888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1236:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34889,"nodeType":"ExpressionStatement","src":"1236:26:87"}]},"functionSelector":"1558356e","id":34891,"implemented":true,"kind":"function","modifiers":[],"name":"manualPausePool","nameLocation":"1128:15:87","nodeType":"FunctionDefinition","parameters":{"id":34875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34874,"mutability":"mutable","name":"pool","nameLocation":"1152:4:87","nodeType":"VariableDeclaration","scope":34891,"src":"1144:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34873,"name":"address","nodeType":"ElementaryTypeName","src":"1144:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1143:14:87"},"returnParameters":{"id":34876,"nodeType":"ParameterList","parameters":[],"src":"1167:0:87"},"scope":35247,"src":"1119:150:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[198],"body":{"id":34909,"nodeType":"Block","src":"1325:103:87","statements":[{"expression":{"id":34902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":34896,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"1335:17:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":34898,"indexExpression":{"id":34897,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34893,"src":"1353:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1335:23:87","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"id":34899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1359:12:87","memberName":"pauseManager","nodeType":"MemberAccess","referencedDeclaration":4454,"src":"1335:36:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":34900,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1374:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":34901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1378:6:87","memberName":"sender","nodeType":"MemberAccess","src":"1374:10:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1335:49:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":34903,"nodeType":"ExpressionStatement","src":"1335:49:87"},{"expression":{"arguments":[{"id":34905,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34893,"src":"1409:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":34906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1415:5:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":34904,"name":"_setPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22842,"src":"1394:14:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":34907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1394:27:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34908,"nodeType":"ExpressionStatement","src":"1394:27:87"}]},"functionSelector":"52b9e33d","id":34910,"implemented":true,"kind":"function","modifiers":[],"name":"manualUnpausePool","nameLocation":"1284:17:87","nodeType":"FunctionDefinition","parameters":{"id":34894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34893,"mutability":"mutable","name":"pool","nameLocation":"1310:4:87","nodeType":"VariableDeclaration","scope":34910,"src":"1302:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34892,"name":"address","nodeType":"ElementaryTypeName","src":"1302:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1301:14:87"},"returnParameters":{"id":34895,"nodeType":"ParameterList","parameters":[],"src":"1325:0:87"},"scope":35247,"src":"1275:153:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[203],"body":{"id":34924,"nodeType":"Block","src":"1491:93:87","statements":[{"expression":{"arguments":[{"id":34916,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34912,"src":"1530:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":34915,"name":"_ensurePoolNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23161,"src":"1501:28:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":34917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1501:34:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34918,"nodeType":"ExpressionStatement","src":"1501:34:87"},{"expression":{"arguments":[{"id":34920,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34912,"src":"1566:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":34921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1572:4:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":34919,"name":"_setPoolRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23195,"src":"1545:20:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":34922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1545:32:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34923,"nodeType":"ExpressionStatement","src":"1545:32:87"}]},"functionSelector":"27521d0c","id":34925,"implemented":true,"kind":"function","modifiers":[],"name":"manualEnableRecoveryMode","nameLocation":"1443:24:87","nodeType":"FunctionDefinition","parameters":{"id":34913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34912,"mutability":"mutable","name":"pool","nameLocation":"1476:4:87","nodeType":"VariableDeclaration","scope":34925,"src":"1468:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34911,"name":"address","nodeType":"ElementaryTypeName","src":"1468:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1467:14:87"},"returnParameters":{"id":34914,"nodeType":"ParameterList","parameters":[],"src":"1491:0:87"},"scope":35247,"src":"1434:150:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[208],"body":{"id":34939,"nodeType":"Block","src":"1648:91:87","statements":[{"expression":{"arguments":[{"id":34931,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34927,"src":"1684:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":34930,"name":"_ensurePoolInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25113,"src":"1658:25:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":34932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1658:31:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34933,"nodeType":"ExpressionStatement","src":"1658:31:87"},{"expression":{"arguments":[{"id":34935,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34927,"src":"1720:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":34936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1726:5:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":34934,"name":"_setPoolRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23195,"src":"1699:20:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":34937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1699:33:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":34938,"nodeType":"ExpressionStatement","src":"1699:33:87"}]},"functionSelector":"7578abb9","id":34940,"implemented":true,"kind":"function","modifiers":[],"name":"manualDisableRecoveryMode","nameLocation":"1599:25:87","nodeType":"FunctionDefinition","parameters":{"id":34928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34927,"mutability":"mutable","name":"pool","nameLocation":"1633:4:87","nodeType":"VariableDeclaration","scope":34940,"src":"1625:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34926,"name":"address","nodeType":"ElementaryTypeName","src":"1625:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1624:14:87"},"returnParameters":{"id":34929,"nodeType":"ParameterList","parameters":[],"src":"1648:0:87"},"scope":35247,"src":"1590:149:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[222],"body":{"id":34970,"nodeType":"Block","src":"1973:202:87","statements":[{"expression":{"arguments":[{"id":34963,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34943,"src":"2035:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":34964,"name":"amountUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34945,"src":"2061:16:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":34965,"name":"amountWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34947,"src":"2091:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":34966,"name":"minIssuedShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34949,"src":"2118:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":34967,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34951,"src":"2147:11:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":34959,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1998:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}],"id":34958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1990:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":34957,"name":"address","nodeType":"ElementaryTypeName","src":"1990:7:87","typeDescriptions":{}}},"id":34960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1990:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":34956,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"1983:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":34961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1983:21:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":34962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2005:16:87","memberName":"initializeBuffer","nodeType":"MemberAccess","referencedDeclaration":3099,"src":"1983:38:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256)"}},"id":34968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1983:185:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":34969,"nodeType":"ExpressionStatement","src":"1983:185:87"}]},"functionSelector":"b61398cd","id":34971,"implemented":true,"kind":"function","modifiers":[{"id":34954,"kind":"modifierInvocation","modifierName":{"id":34953,"name":"nonReentrant","nameLocations":["1960:12:87"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"1960:12:87"},"nodeType":"ModifierInvocation","src":"1960:12:87"}],"name":"manualReentrancyInitializeBuffer","nameLocation":"1754:32:87","nodeType":"FunctionDefinition","parameters":{"id":34952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34943,"mutability":"mutable","name":"wrappedToken","nameLocation":"1805:12:87","nodeType":"VariableDeclaration","scope":34971,"src":"1796:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":34942,"nodeType":"UserDefinedTypeName","pathNode":{"id":34941,"name":"IERC4626","nameLocations":["1796:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"1796:8:87"},"referencedDeclaration":38998,"src":"1796:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":34945,"mutability":"mutable","name":"amountUnderlying","nameLocation":"1835:16:87","nodeType":"VariableDeclaration","scope":34971,"src":"1827:24:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34944,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34947,"mutability":"mutable","name":"amountWrapped","nameLocation":"1869:13:87","nodeType":"VariableDeclaration","scope":34971,"src":"1861:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34946,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34949,"mutability":"mutable","name":"minIssuedShares","nameLocation":"1900:15:87","nodeType":"VariableDeclaration","scope":34971,"src":"1892:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34948,"name":"uint256","nodeType":"ElementaryTypeName","src":"1892:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34951,"mutability":"mutable","name":"sharesOwner","nameLocation":"1933:11:87","nodeType":"VariableDeclaration","scope":34971,"src":"1925:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34950,"name":"address","nodeType":"ElementaryTypeName","src":"1925:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1786:164:87"},"returnParameters":{"id":34955,"nodeType":"ParameterList","parameters":[],"src":"1973:0:87"},"scope":35247,"src":"1745:430:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[233],"body":{"id":35109,"nodeType":"Block","src":"2420:1199:87","statements":[{"assignments":[34983],"declarations":[{"constant":false,"id":34983,"mutability":"mutable","name":"bufferBalances","nameLocation":"2438:14:87","nodeType":"VariableDeclaration","scope":35109,"src":"2430:22:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":34982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2430:7:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":34987,"initialValue":{"baseExpression":{"id":34984,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"2455:20:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":34986,"indexExpression":{"id":34985,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"2476:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2455:34:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2430:59:87"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":34990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":34988,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34977,"src":"2504:16:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":34989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2523:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2504:20:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":35032,"nodeType":"IfStatement","src":"2500:410:87","trueBody":{"id":35031,"nodeType":"Block","src":"2526:384:87","statements":[{"expression":{"arguments":[{"expression":{"id":34997,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2582:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":34998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2586:6:87","memberName":"sender","nodeType":"MemberAccess","src":"2582:10:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":35001,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2602:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}],"id":35000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2594:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":34999,"name":"address","nodeType":"ElementaryTypeName","src":"2594:7:87","typeDescriptions":{}}},"id":35002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2594:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35003,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34977,"src":"2609:16:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":34992,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"2547:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":34993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2560:5:87","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"2547:18:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":34994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2547:20:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":34991,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"2540:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":34995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2540:28:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":34996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2569:12:87","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":39273,"src":"2540:41:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":35004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2540:86:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":35005,"nodeType":"ExpressionStatement","src":"2540:86:87"},{"expression":{"id":35014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35006,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"2640:11:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":35012,"indexExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":35008,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"2659:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":35009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2672:5:87","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"2659:18:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":35010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2659:20:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35007,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"2652:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":35011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2652:28:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2640:41:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":35013,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34977,"src":"2685:16:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2640:61:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35015,"nodeType":"ExpressionStatement","src":"2640:61:87"},{"expression":{"id":35020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35016,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"2772:18:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":35018,"indexExpression":{"id":35017,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"2791:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2772:32:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":35019,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34977,"src":"2808:16:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2772:52:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35021,"nodeType":"ExpressionStatement","src":"2772:52:87"},{"expression":{"id":35029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":35022,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"2838:15:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":35026,"indexExpression":{"id":35023,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"2854:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2838:29:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":35027,"indexExpression":{"expression":{"id":35024,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2868:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":35025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2872:6:87","memberName":"sender","nodeType":"MemberAccess","src":"2868:10:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2838:41:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":35028,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34977,"src":"2883:16:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2838:61:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35030,"nodeType":"ExpressionStatement","src":"2838:61:87"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":35035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":35033,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34979,"src":"2923:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":35034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2939:1:87","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2923:17:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":35086,"nodeType":"IfStatement","src":"2919:434:87","trueBody":{"id":35085,"nodeType":"Block","src":"2942:411:87","statements":[{"expression":{"arguments":[{"expression":{"id":35043,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2999:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":35044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3003:6:87","memberName":"sender","nodeType":"MemberAccess","src":"2999:10:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":35047,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3019:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}],"id":35046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3011:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35045,"name":"address","nodeType":"ElementaryTypeName","src":"3011:7:87","typeDescriptions":{}}},"id":35048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3011:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35049,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34979,"src":"3026:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":35039,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"2971:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":35038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2963:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35037,"name":"address","nodeType":"ElementaryTypeName","src":"2963:7:87","typeDescriptions":{}}},"id":35040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2963:21:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35036,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"2956:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":35041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2956:29:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":35042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2986:12:87","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":39273,"src":"2956:42:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":35050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2956:84:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":35051,"nodeType":"ExpressionStatement","src":"2956:84:87"},{"expression":{"id":35061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35052,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"3054:11:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":35059,"indexExpression":{"arguments":[{"arguments":[{"id":35056,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"3081:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":35055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3073:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35054,"name":"address","nodeType":"ElementaryTypeName","src":"3073:7:87","typeDescriptions":{}}},"id":35057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3073:21:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35053,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"3066:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":35058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3066:29:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3054:42:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":35060,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34979,"src":"3100:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3054:59:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35062,"nodeType":"ExpressionStatement","src":"3054:59:87"},{"assignments":[35064],"declarations":[{"constant":false,"id":35064,"mutability":"mutable","name":"issuedSharesAmount","nameLocation":"3135:18:87","nodeType":"VariableDeclaration","scope":35085,"src":"3127:26:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35063,"name":"uint256","nodeType":"ElementaryTypeName","src":"3127:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":35069,"initialValue":{"arguments":[{"id":35067,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34979,"src":"3183:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":35065,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"3156:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":35066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3169:13:87","memberName":"previewRedeem","nodeType":"MemberAccess","referencedDeclaration":38985,"src":"3156:26:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":35068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3156:41:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3127:70:87"},{"expression":{"id":35074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35070,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"3211:18:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":35072,"indexExpression":{"id":35071,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"3230:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3211:32:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":35073,"name":"issuedSharesAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35064,"src":"3247:18:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3211:54:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35075,"nodeType":"ExpressionStatement","src":"3211:54:87"},{"expression":{"id":35083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":35076,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"3279:15:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":35080,"indexExpression":{"id":35077,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"3295:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3279:29:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":35081,"indexExpression":{"expression":{"id":35078,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3309:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":35079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3313:6:87","memberName":"sender","nodeType":"MemberAccess","src":"3309:10:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3279:41:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":35082,"name":"issuedSharesAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35064,"src":"3324:18:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3279:63:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35084,"nodeType":"ExpressionStatement","src":"3279:63:87"}]}},{"expression":{"id":35101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35087,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34983,"src":"3363:14:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":35094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":35090,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34983,"src":"3428:14:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":35091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3443:13:87","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"3428:28:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":35092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3428:30:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":35093,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34977,"src":"3461:16:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3428:49:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":35099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":35095,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34983,"src":"3491:14:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":35096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3506:17:87","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"3491:32:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":35097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3491:34:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":35098,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34979,"src":"3528:13:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3491:50:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":35088,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"3380:18:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":35089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3399:15:87","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"3380:34:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":35100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3380:171:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3363:188:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":35102,"nodeType":"ExpressionStatement","src":"3363:188:87"},{"expression":{"id":35107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35103,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"3561:20:87","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":35105,"indexExpression":{"id":35104,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34975,"src":"3582:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3561:34:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":35106,"name":"bufferBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34983,"src":"3598:14:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3561:51:87","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":35108,"nodeType":"ExpressionStatement","src":"3561:51:87"}]},"documentation":{"id":34972,"nodeType":"StructuredDocumentation","src":"2181:77:87","text":"@dev Adds liquidity to buffer unbalanced, so it can unbalance the buffer."},"functionSelector":"1f568ea3","id":35110,"implemented":true,"kind":"function","modifiers":[],"name":"addLiquidityToBufferUnbalancedForTests","nameLocation":"2272:38:87","nodeType":"FunctionDefinition","parameters":{"id":34980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34975,"mutability":"mutable","name":"wrappedToken","nameLocation":"2329:12:87","nodeType":"VariableDeclaration","scope":35110,"src":"2320:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":34974,"nodeType":"UserDefinedTypeName","pathNode":{"id":34973,"name":"IERC4626","nameLocations":["2320:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"2320:8:87"},"referencedDeclaration":38998,"src":"2320:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":34977,"mutability":"mutable","name":"underlyingAmount","nameLocation":"2359:16:87","nodeType":"VariableDeclaration","scope":35110,"src":"2351:24:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34976,"name":"uint256","nodeType":"ElementaryTypeName","src":"2351:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34979,"mutability":"mutable","name":"wrappedAmount","nameLocation":"2393:13:87","nodeType":"VariableDeclaration","scope":35110,"src":"2385:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34978,"name":"uint256","nodeType":"ElementaryTypeName","src":"2385:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2310:102:87"},"returnParameters":{"id":34981,"nodeType":"ParameterList","parameters":[],"src":"2420:0:87"},"scope":35247,"src":"2263:1356:87","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[247],"body":{"id":35140,"nodeType":"Block","src":"3876:225:87","statements":[{"expression":{"arguments":[{"id":35133,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35113,"src":"3942:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":35134,"name":"maxAmountUnderlyingInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35115,"src":"3968:24:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35135,"name":"maxAmountWrappedInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35117,"src":"4006:21:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35136,"name":"exactSharesToIssue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35119,"src":"4041:18:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35137,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35121,"src":"4073:11:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"arguments":[{"id":35129,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3901:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}],"id":35128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3893:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35127,"name":"address","nodeType":"ElementaryTypeName","src":"3893:7:87","typeDescriptions":{}}},"id":35130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3893:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35126,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"3886:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":35131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3886:21:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":35132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3908:20:87","memberName":"addLiquidityToBuffer","nodeType":"MemberAccess","referencedDeclaration":3118,"src":"3886:42:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256,uint256)"}},"id":35138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3886:208:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":35139,"nodeType":"ExpressionStatement","src":"3886:208:87"}]},"functionSelector":"9260d920","id":35141,"implemented":true,"kind":"function","modifiers":[{"id":35124,"kind":"modifierInvocation","modifierName":{"id":35123,"name":"nonReentrant","nameLocations":["3863:12:87"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"3863:12:87"},"nodeType":"ModifierInvocation","src":"3863:12:87"}],"name":"manualReentrancyAddLiquidityToBuffer","nameLocation":"3634:36:87","nodeType":"FunctionDefinition","parameters":{"id":35122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35113,"mutability":"mutable","name":"wrappedToken","nameLocation":"3689:12:87","nodeType":"VariableDeclaration","scope":35141,"src":"3680:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":35112,"nodeType":"UserDefinedTypeName","pathNode":{"id":35111,"name":"IERC4626","nameLocations":["3680:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"3680:8:87"},"referencedDeclaration":38998,"src":"3680:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":35115,"mutability":"mutable","name":"maxAmountUnderlyingInRaw","nameLocation":"3719:24:87","nodeType":"VariableDeclaration","scope":35141,"src":"3711:32:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35114,"name":"uint256","nodeType":"ElementaryTypeName","src":"3711:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35117,"mutability":"mutable","name":"maxAmountWrappedInRaw","nameLocation":"3761:21:87","nodeType":"VariableDeclaration","scope":35141,"src":"3753:29:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35116,"name":"uint256","nodeType":"ElementaryTypeName","src":"3753:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35119,"mutability":"mutable","name":"exactSharesToIssue","nameLocation":"3800:18:87","nodeType":"VariableDeclaration","scope":35141,"src":"3792:26:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35118,"name":"uint256","nodeType":"ElementaryTypeName","src":"3792:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35121,"mutability":"mutable","name":"sharesOwner","nameLocation":"3836:11:87","nodeType":"VariableDeclaration","scope":35141,"src":"3828:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35120,"name":"address","nodeType":"ElementaryTypeName","src":"3828:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3670:183:87"},"returnParameters":{"id":35125,"nodeType":"ParameterList","parameters":[],"src":"3876:0:87"},"scope":35247,"src":"3625:476:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[261],"body":{"id":35167,"nodeType":"Block","src":"4359:209:87","statements":[{"expression":{"arguments":[{"id":35160,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35144,"src":"4417:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":35161,"name":"sharesToRemove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35146,"src":"4443:14:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35162,"name":"minAmountUnderlyingOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35148,"src":"4471:22:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35163,"name":"minAmountWrappedOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35150,"src":"4507:19:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35164,"name":"sharesOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35152,"src":"4540:11:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":35157,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4369:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}},"id":35159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4374:29:87","memberName":"removeLiquidityFromBufferHook","nodeType":"MemberAccess","referencedDeclaration":23966,"src":"4369:34:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC4626_$38998_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC4626,uint256,uint256,uint256,address) external returns (uint256,uint256)"}},"id":35165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4369:192:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":35166,"nodeType":"ExpressionStatement","src":"4369:192:87"}]},"functionSelector":"c7b3b3a9","id":35168,"implemented":true,"kind":"function","modifiers":[{"id":35155,"kind":"modifierInvocation","modifierName":{"id":35154,"name":"nonReentrant","nameLocations":["4346:12:87"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"4346:12:87"},"nodeType":"ModifierInvocation","src":"4346:12:87"}],"name":"manualReentrancyRemoveLiquidityFromBufferHook","nameLocation":"4116:45:87","nodeType":"FunctionDefinition","parameters":{"id":35153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35144,"mutability":"mutable","name":"wrappedToken","nameLocation":"4180:12:87","nodeType":"VariableDeclaration","scope":35168,"src":"4171:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":35143,"nodeType":"UserDefinedTypeName","pathNode":{"id":35142,"name":"IERC4626","nameLocations":["4171:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"4171:8:87"},"referencedDeclaration":38998,"src":"4171:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":35146,"mutability":"mutable","name":"sharesToRemove","nameLocation":"4210:14:87","nodeType":"VariableDeclaration","scope":35168,"src":"4202:22:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35145,"name":"uint256","nodeType":"ElementaryTypeName","src":"4202:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35148,"mutability":"mutable","name":"minAmountUnderlyingOut","nameLocation":"4242:22:87","nodeType":"VariableDeclaration","scope":35168,"src":"4234:30:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35147,"name":"uint256","nodeType":"ElementaryTypeName","src":"4234:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35150,"mutability":"mutable","name":"minAmountWrappedOut","nameLocation":"4282:19:87","nodeType":"VariableDeclaration","scope":35168,"src":"4274:27:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35149,"name":"uint256","nodeType":"ElementaryTypeName","src":"4274:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35152,"mutability":"mutable","name":"sharesOwner","nameLocation":"4319:11:87","nodeType":"VariableDeclaration","scope":35168,"src":"4311:19:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35151,"name":"address","nodeType":"ElementaryTypeName","src":"4311:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4161:175:87"},"returnParameters":{"id":35156,"nodeType":"ParameterList","parameters":[],"src":"4359:0:87"},"scope":35247,"src":"4107:461:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[266],"body":{"id":35181,"nodeType":"Block","src":"4655:47:87","statements":[{"expression":{"arguments":[{"id":35178,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35170,"src":"4690:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":35175,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4665:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_VaultAdminMock_$35247","typeString":"contract VaultAdminMock"}},"id":35177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4670:19:87","memberName":"disableRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":23145,"src":"4665:24:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":35179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4665:30:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35180,"nodeType":"ExpressionStatement","src":"4665:30:87"}]},"functionSelector":"16df26cb","id":35182,"implemented":true,"kind":"function","modifiers":[{"id":35173,"kind":"modifierInvocation","modifierName":{"id":35172,"name":"nonReentrant","nameLocations":["4642:12:87"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"4642:12:87"},"nodeType":"ModifierInvocation","src":"4642:12:87"}],"name":"manualReentrancyDisableRecoveryMode","nameLocation":"4583:35:87","nodeType":"FunctionDefinition","parameters":{"id":35171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35170,"mutability":"mutable","name":"pool","nameLocation":"4627:4:87","nodeType":"VariableDeclaration","scope":35182,"src":"4619:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35169,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:14:87"},"returnParameters":{"id":35174,"nodeType":"ParameterList","parameters":[],"src":"4655:0:87"},"scope":35247,"src":"4574:128:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[271],"body":{"id":35190,"nodeType":"Block","src":"4807:64:87","statements":[]},"functionSelector":"88e5101a","id":35191,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":35187,"name":"percentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35184,"src":"4795:10:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":35188,"kind":"modifierInvocation","modifierName":{"id":35186,"name":"withValidPercentage","nameLocations":["4775:19:87"],"nodeType":"IdentifierPath","referencedDeclaration":22455,"src":"4775:19:87"},"nodeType":"ModifierInvocation","src":"4775:31:87"}],"name":"mockWithValidPercentage","nameLocation":"4717:23:87","nodeType":"FunctionDefinition","parameters":{"id":35185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35184,"mutability":"mutable","name":"percentage","nameLocation":"4749:10:87","nodeType":"VariableDeclaration","scope":35191,"src":"4741:18:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35183,"name":"uint256","nodeType":"ElementaryTypeName","src":"4741:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4740:20:87"},"returnParameters":{"id":35189,"nodeType":"ParameterList","parameters":[],"src":"4807:0:87"},"scope":35247,"src":"4708:163:87","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[276],"body":{"id":35200,"nodeType":"Block","src":"4946:51:87","statements":[{"expression":{"arguments":[{"id":35197,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35193,"src":"4985:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35196,"name":"_ensurePoolNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23161,"src":"4956:28:87","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":35198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4956:34:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35199,"nodeType":"ExpressionStatement","src":"4956:34:87"}]},"functionSelector":"0b9df1f6","id":35201,"implemented":true,"kind":"function","modifiers":[],"name":"mockEnsurePoolNotInRecoveryMode","nameLocation":"4886:31:87","nodeType":"FunctionDefinition","parameters":{"id":35194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35193,"mutability":"mutable","name":"pool","nameLocation":"4926:4:87","nodeType":"VariableDeclaration","scope":35201,"src":"4918:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35192,"name":"address","nodeType":"ElementaryTypeName","src":"4918:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4917:14:87"},"returnParameters":{"id":35195,"nodeType":"ParameterList","parameters":[],"src":"4946:0:87"},"scope":35247,"src":"4877:120:87","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[286],"body":{"id":35217,"nodeType":"Block","src":"5095:60:87","statements":[{"expression":{"arguments":[{"id":35212,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35204,"src":"5123:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":35213,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35206,"src":"5137:2:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35214,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35208,"src":"5141:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":35211,"name":"_mintBufferShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23731,"src":"5105:17:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":35215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5105:43:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35216,"nodeType":"ExpressionStatement","src":"5105:43:87"}]},"functionSelector":"6b230291","id":35218,"implemented":true,"kind":"function","modifiers":[],"name":"manualMintBufferShares","nameLocation":"5012:22:87","nodeType":"FunctionDefinition","parameters":{"id":35209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35204,"mutability":"mutable","name":"wrappedToken","nameLocation":"5044:12:87","nodeType":"VariableDeclaration","scope":35218,"src":"5035:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":35203,"nodeType":"UserDefinedTypeName","pathNode":{"id":35202,"name":"IERC4626","nameLocations":["5035:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"5035:8:87"},"referencedDeclaration":38998,"src":"5035:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":35206,"mutability":"mutable","name":"to","nameLocation":"5066:2:87","nodeType":"VariableDeclaration","scope":35218,"src":"5058:10:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35205,"name":"address","nodeType":"ElementaryTypeName","src":"5058:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35208,"mutability":"mutable","name":"amount","nameLocation":"5078:6:87","nodeType":"VariableDeclaration","scope":35218,"src":"5070:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35207,"name":"uint256","nodeType":"ElementaryTypeName","src":"5070:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5034:51:87"},"returnParameters":{"id":35210,"nodeType":"ParameterList","parameters":[],"src":"5095:0:87"},"scope":35247,"src":"5003:152:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[296],"body":{"id":35234,"nodeType":"Block","src":"5255:62:87","statements":[{"expression":{"arguments":[{"id":35229,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35221,"src":"5283:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":35230,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35223,"src":"5297:4:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35231,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35225,"src":"5303:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":35228,"name":"_burnBufferShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24020,"src":"5265:17:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC4626,address,uint256)"}},"id":35232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5265:45:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35233,"nodeType":"ExpressionStatement","src":"5265:45:87"}]},"functionSelector":"e8338894","id":35235,"implemented":true,"kind":"function","modifiers":[],"name":"manualBurnBufferShares","nameLocation":"5170:22:87","nodeType":"FunctionDefinition","parameters":{"id":35226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35221,"mutability":"mutable","name":"wrappedToken","nameLocation":"5202:12:87","nodeType":"VariableDeclaration","scope":35235,"src":"5193:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":35220,"nodeType":"UserDefinedTypeName","pathNode":{"id":35219,"name":"IERC4626","nameLocations":["5193:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"5193:8:87"},"referencedDeclaration":38998,"src":"5193:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":35223,"mutability":"mutable","name":"from","nameLocation":"5224:4:87","nodeType":"VariableDeclaration","scope":35235,"src":"5216:12:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35222,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35225,"mutability":"mutable","name":"amount","nameLocation":"5238:6:87","nodeType":"VariableDeclaration","scope":35235,"src":"5230:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35224,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5192:53:87"},"returnParameters":{"id":35227,"nodeType":"ParameterList","parameters":[],"src":"5255:0:87"},"scope":35247,"src":"5161:156:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[302],"body":{"id":35245,"nodeType":"Block","src":"5401:62:87","statements":[{"expression":{"arguments":[{"id":35242,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35238,"src":"5443:12:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"id":35241,"name":"_mintMinimumBufferSupplyReserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23677,"src":"5411:31:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC4626_$38998_$returns$__$","typeString":"function (contract IERC4626)"}},"id":35243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5411:45:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35244,"nodeType":"ExpressionStatement","src":"5411:45:87"}]},"functionSelector":"e99ac9a3","id":35246,"implemented":true,"kind":"function","modifiers":[],"name":"manualMintMinimumBufferSupplyReserve","nameLocation":"5332:36:87","nodeType":"FunctionDefinition","parameters":{"id":35239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35238,"mutability":"mutable","name":"wrappedToken","nameLocation":"5378:12:87","nodeType":"VariableDeclaration","scope":35246,"src":"5369:21:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":35237,"nodeType":"UserDefinedTypeName","pathNode":{"id":35236,"name":"IERC4626","nameLocations":["5369:8:87"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"5369:8:87"},"referencedDeclaration":38998,"src":"5369:8:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"5368:23:87"},"returnParameters":{"id":35240,"nodeType":"ParameterList","parameters":[],"src":"5401:0:87"},"scope":35247,"src":"5323:140:87","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":35248,"src":"566:4899:87","usedErrors":[121,1684,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,5477,5833,7124,7127,7543,9512,39035,39040,39045,39054,39059,39064,42381,42398],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788,38264,38275]}],"src":"46:5420:87"},"id":87},"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol","exportedSymbols":{"IERC20":[39274],"IVault":[2893],"IVaultAdmin":[3183],"IVaultExtensionMock":[360],"LiquidityManagement":[4362],"PoolConfigBits":[4364],"PoolConfigLib":[29980],"PoolRoleAccounts":[4459],"TokenConfig":[4476],"VaultExtension":[27639],"VaultExtensionMock":[35399]},"id":35400,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":35249,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:88"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":35251,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35400,"sourceUnit":39275,"src":"72:72:88","symbolAliases":[{"foreign":{"id":35250,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"81:6:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":35255,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35400,"sourceUnit":4654,"src":"146:141:88","symbolAliases":[{"foreign":{"id":35252,"name":"TokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4476,"src":"159:11:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":35253,"name":"PoolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"176:16:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":35254,"name":"LiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"198:19:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol","file":"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol","id":35257,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35400,"sourceUnit":361,"src":"288:106:88","symbolAliases":[{"foreign":{"id":35256,"name":"IVaultExtensionMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"297:19:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","id":35259,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35400,"sourceUnit":3184,"src":"395:91:88","symbolAliases":[{"foreign":{"id":35258,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"404:11:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":35261,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35400,"sourceUnit":2894,"src":"487:81:88","symbolAliases":[{"foreign":{"id":35260,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"496:6:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"../lib/PoolConfigLib.sol","id":35264,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35400,"sourceUnit":29981,"src":"570:73:88","symbolAliases":[{"foreign":{"id":35262,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"579:13:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":35263,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"594:14:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultExtension.sol","file":"../VaultExtension.sol","id":35266,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":35400,"sourceUnit":27640,"src":"644:55:88","symbolAliases":[{"foreign":{"id":35265,"name":"VaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27639,"src":"653:14:88","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":35267,"name":"IVaultExtensionMock","nameLocations":["732:19:88"],"nodeType":"IdentifierPath","referencedDeclaration":360,"src":"732:19:88"},"id":35268,"nodeType":"InheritanceSpecifier","src":"732:19:88"},{"baseName":{"id":35269,"name":"VaultExtension","nameLocations":["753:14:88"],"nodeType":"IdentifierPath","referencedDeclaration":27639,"src":"753:14:88"},"id":35270,"nodeType":"InheritanceSpecifier","src":"753:14:88"}],"canonicalName":"VaultExtensionMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":35399,"internalFunctionIDs":{"6093":1,"6114":2},"linearizedBaseContracts":[35399,27639,39196,25145,38828,1685,39065,9568,27923,3550,3789,4208,360],"name":"VaultExtensionMock","nameLocation":"710:18:88","nodeType":"ContractDefinition","nodes":[{"global":false,"id":35274,"libraryName":{"id":35271,"name":"PoolConfigLib","nameLocations":["780:13:88"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"780:13:88"},"nodeType":"UsingForDirective","src":"774:39:88","typeName":{"id":35273,"nodeType":"UserDefinedTypeName","pathNode":{"id":35272,"name":"PoolConfigBits","nameLocations":["798:14:88"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"798:14:88"},"referencedDeclaration":4364,"src":"798:14:88","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"body":{"id":35287,"nodeType":"Block","src":"903:2:88","statements":[]},"id":35288,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":35283,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35277,"src":"884:5:88","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":35284,"name":"vaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35280,"src":"891:10:88","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}}],"id":35285,"kind":"baseConstructorSpecifier","modifierName":{"id":35282,"name":"VaultExtension","nameLocations":["869:14:88"],"nodeType":"IdentifierPath","referencedDeclaration":27639,"src":"869:14:88"},"nodeType":"ModifierInvocation","src":"869:33:88"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":35281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35277,"mutability":"mutable","name":"vault","nameLocation":"838:5:88","nodeType":"VariableDeclaration","scope":35288,"src":"831:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":35276,"nodeType":"UserDefinedTypeName","pathNode":{"id":35275,"name":"IVault","nameLocations":["831:6:88"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"831:6:88"},"referencedDeclaration":2893,"src":"831:6:88","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":35280,"mutability":"mutable","name":"vaultAdmin","nameLocation":"857:10:88","nodeType":"VariableDeclaration","scope":35288,"src":"845:22:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"},"typeName":{"id":35279,"nodeType":"UserDefinedTypeName","pathNode":{"id":35278,"name":"IVaultAdmin","nameLocations":["845:11:88"],"nodeType":"IdentifierPath","referencedDeclaration":3183,"src":"845:11:88"},"referencedDeclaration":3183,"src":"845:11:88","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"visibility":"internal"}],"src":"830:38:88"},"returnParameters":{"id":35286,"nodeType":"ParameterList","parameters":[],"src":"903:0:88"},"scope":35399,"src":"819:86:88","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":35299,"nodeType":"Block","src":"995:40:88","statements":[{"expression":{"arguments":[{"id":35296,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35290,"src":"1022:5:88","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":35295,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1012:9:88","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":35297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1012:16:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":35294,"id":35298,"nodeType":"Return","src":"1005:23:88"}]},"functionSelector":"590e8145","id":35300,"implemented":true,"kind":"function","modifiers":[],"name":"mockExtensionHash","nameLocation":"920:17:88","nodeType":"FunctionDefinition","parameters":{"id":35291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35290,"mutability":"mutable","name":"input","nameLocation":"953:5:88","nodeType":"VariableDeclaration","scope":35300,"src":"938:20:88","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":35289,"name":"bytes","nodeType":"ElementaryTypeName","src":"938:5:88","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"937:22:88"},"returnParameters":{"id":35294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":35300,"src":"986:7:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":35292,"name":"bytes32","nodeType":"ElementaryTypeName","src":"986:7:88","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"985:9:88"},"scope":35399,"src":"911:124:88","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[318],"body":{"id":35318,"nodeType":"Block","src":"1112:101:88","statements":[{"expression":{"id":35316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35307,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"1122:15:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35309,"indexExpression":{"id":35308,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35302,"src":"1138:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1122:21:88","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35314,"name":"newSwapFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35304,"src":"1195:10:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":35310,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"1146:15:88","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35312,"indexExpression":{"id":35311,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35302,"src":"1162:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1146:21:88","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:26:88","memberName":"setStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29640,"src":"1146:48:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":35315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1146:60:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"1122:84:88","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35317,"nodeType":"ExpressionStatement","src":"1122:84:88"}]},"functionSelector":"70600089","id":35319,"implemented":true,"kind":"function","modifiers":[],"name":"manuallySetSwapFee","nameLocation":"1050:18:88","nodeType":"FunctionDefinition","parameters":{"id":35305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35302,"mutability":"mutable","name":"pool","nameLocation":"1077:4:88","nodeType":"VariableDeclaration","scope":35319,"src":"1069:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35301,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35304,"mutability":"mutable","name":"newSwapFee","nameLocation":"1091:10:88","nodeType":"VariableDeclaration","scope":35319,"src":"1083:18:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1068:34:88"},"returnParameters":{"id":35306,"nodeType":"ParameterList","parameters":[],"src":"1112:0:88"},"scope":35399,"src":"1041:172:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[341],"body":{"id":35361,"nodeType":"Block","src":"1592:288:88","statements":[{"expression":{"arguments":[{"id":35351,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35321,"src":"1650:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35352,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35325,"src":"1668:11:88","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":35353,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35327,"src":"1693:17:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35354,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35329,"src":"1724:18:88","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":35355,"name":"protocolFeeExempt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35331,"src":"1756:17:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":35356,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35334,"src":"1787:12:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts calldata"}},{"id":35357,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35336,"src":"1813:17:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35358,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35339,"src":"1844:19:88","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement calldata"}],"expression":{"arguments":[{"arguments":[{"id":35347,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1617:4:88","typeDescriptions":{"typeIdentifier":"t_contract$_VaultExtensionMock_$35399","typeString":"contract VaultExtensionMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultExtensionMock_$35399","typeString":"contract VaultExtensionMock"}],"id":35346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1609:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35345,"name":"address","nodeType":"ElementaryTypeName","src":"1609:7:88","typeDescriptions":{}}},"id":35348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1609:13:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35344,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"1602:6:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":35349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1602:21:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":35350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1624:12:88","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":3880,"src":"1602:34:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint32_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,uint32,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":35359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1602:271:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35360,"nodeType":"ExpressionStatement","src":"1602:271:88"}]},"functionSelector":"e68010c6","id":35362,"implemented":true,"kind":"function","modifiers":[{"id":35342,"kind":"modifierInvocation","modifierName":{"id":35341,"name":"nonReentrant","nameLocations":["1579:12:88"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"1579:12:88"},"nodeType":"ModifierInvocation","src":"1579:12:88"}],"name":"manualRegisterPoolReentrancy","nameLocation":"1228:28:88","nodeType":"FunctionDefinition","parameters":{"id":35340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35321,"mutability":"mutable","name":"pool","nameLocation":"1274:4:88","nodeType":"VariableDeclaration","scope":35362,"src":"1266:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35320,"name":"address","nodeType":"ElementaryTypeName","src":"1266:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35325,"mutability":"mutable","name":"tokenConfig","nameLocation":"1309:11:88","nodeType":"VariableDeclaration","scope":35362,"src":"1288:32:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":35323,"nodeType":"UserDefinedTypeName","pathNode":{"id":35322,"name":"TokenConfig","nameLocations":["1288:11:88"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"1288:11:88"},"referencedDeclaration":4476,"src":"1288:11:88","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":35324,"nodeType":"ArrayTypeName","src":"1288:13:88","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":35327,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"1338:17:88","nodeType":"VariableDeclaration","scope":35362,"src":"1330:25:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35326,"name":"uint256","nodeType":"ElementaryTypeName","src":"1330:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35329,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"1372:18:88","nodeType":"VariableDeclaration","scope":35362,"src":"1365:25:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":35328,"name":"uint32","nodeType":"ElementaryTypeName","src":"1365:6:88","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":35331,"mutability":"mutable","name":"protocolFeeExempt","nameLocation":"1405:17:88","nodeType":"VariableDeclaration","scope":35362,"src":"1400:22:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":35330,"name":"bool","nodeType":"ElementaryTypeName","src":"1400:4:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":35334,"mutability":"mutable","name":"roleAccounts","nameLocation":"1458:12:88","nodeType":"VariableDeclaration","scope":35362,"src":"1432:38:88","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_calldata_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":35333,"nodeType":"UserDefinedTypeName","pathNode":{"id":35332,"name":"PoolRoleAccounts","nameLocations":["1432:16:88"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"1432:16:88"},"referencedDeclaration":4459,"src":"1432:16:88","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":35336,"mutability":"mutable","name":"poolHooksContract","nameLocation":"1488:17:88","nodeType":"VariableDeclaration","scope":35362,"src":"1480:25:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35335,"name":"address","nodeType":"ElementaryTypeName","src":"1480:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35339,"mutability":"mutable","name":"liquidityManagement","nameLocation":"1544:19:88","nodeType":"VariableDeclaration","scope":35362,"src":"1515:48:88","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_calldata_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":35338,"nodeType":"UserDefinedTypeName","pathNode":{"id":35337,"name":"LiquidityManagement","nameLocations":["1515:19:88"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"1515:19:88"},"referencedDeclaration":4362,"src":"1515:19:88","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"1256:313:88"},"returnParameters":{"id":35343,"nodeType":"ParameterList","parameters":[],"src":"1592:0:88"},"scope":35399,"src":"1219:661:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[359],"body":{"id":35397,"nodeType":"Block","src":"2133:110:88","statements":[{"expression":{"arguments":[{"id":35389,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35364,"src":"2176:4:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35390,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35366,"src":"2182:2:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35391,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35370,"src":"2186:6:88","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":35392,"name":"exactAmountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35373,"src":"2194:14:88","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":35393,"name":"minBptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35375,"src":"2210:15:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":35394,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35377,"src":"2227:8:88","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"arguments":[{"id":35385,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2158:4:88","typeDescriptions":{"typeIdentifier":"t_contract$_VaultExtensionMock_$35399","typeString":"contract VaultExtensionMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultExtensionMock_$35399","typeString":"contract VaultExtensionMock"}],"id":35384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2150:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35383,"name":"address","nodeType":"ElementaryTypeName","src":"2150:7:88","typeDescriptions":{}}},"id":35386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2150:13:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35382,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"2143:6:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":35387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2143:21:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":35388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2165:10:88","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":3909,"src":"2143:32:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (address,address,contract IERC20[] memory,uint256[] memory,uint256,bytes memory) external returns (uint256)"}},"id":35395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2143:93:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35396,"nodeType":"ExpressionStatement","src":"2143:93:88"}]},"functionSelector":"809846d1","id":35398,"implemented":true,"kind":"function","modifiers":[{"id":35380,"kind":"modifierInvocation","modifierName":{"id":35379,"name":"nonReentrant","nameLocations":["2120:12:88"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"2120:12:88"},"nodeType":"ModifierInvocation","src":"2120:12:88"}],"name":"manualInitializePoolReentrancy","nameLocation":"1895:30:88","nodeType":"FunctionDefinition","parameters":{"id":35378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35364,"mutability":"mutable","name":"pool","nameLocation":"1943:4:88","nodeType":"VariableDeclaration","scope":35398,"src":"1935:12:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35363,"name":"address","nodeType":"ElementaryTypeName","src":"1935:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35366,"mutability":"mutable","name":"to","nameLocation":"1965:2:88","nodeType":"VariableDeclaration","scope":35398,"src":"1957:10:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35365,"name":"address","nodeType":"ElementaryTypeName","src":"1957:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35370,"mutability":"mutable","name":"tokens","nameLocation":"1993:6:88","nodeType":"VariableDeclaration","scope":35398,"src":"1977:22:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":35368,"nodeType":"UserDefinedTypeName","pathNode":{"id":35367,"name":"IERC20","nameLocations":["1977:6:88"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1977:6:88"},"referencedDeclaration":39274,"src":"1977:6:88","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":35369,"nodeType":"ArrayTypeName","src":"1977:8:88","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":35373,"mutability":"mutable","name":"exactAmountsIn","nameLocation":"2026:14:88","nodeType":"VariableDeclaration","scope":35398,"src":"2009:31:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":35371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2009:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35372,"nodeType":"ArrayTypeName","src":"2009:9:88","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":35375,"mutability":"mutable","name":"minBptAmountOut","nameLocation":"2058:15:88","nodeType":"VariableDeclaration","scope":35398,"src":"2050:23:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35374,"name":"uint256","nodeType":"ElementaryTypeName","src":"2050:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":35377,"mutability":"mutable","name":"userData","nameLocation":"2096:8:88","nodeType":"VariableDeclaration","scope":35398,"src":"2083:21:88","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":35376,"name":"bytes","nodeType":"ElementaryTypeName","src":"2083:5:88","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1925:185:88"},"returnParameters":{"id":35381,"nodeType":"ParameterList","parameters":[],"src":"2133:0:88"},"scope":35399,"src":"1886:357:88","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":35400,"src":"701:1544:88","usedErrors":[1684,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,5477,5586,5595,5833,5978,5981,7124,7127,9512,39035,39040,39045,39054,39059,39064,39634,39639,39642,42398],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788,38264,38275]}],"src":"46:2200:88"},"id":88},"@balancer-labs/v3-vault/contracts/test/VaultMock.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/test/VaultMock.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BufferHelpers":[5439],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"HooksConfigLib":[29013],"IAuthorizer":[1316],"IERC20":[39274],"IERC4626":[38998],"IHooks":[1887],"IProtocolFeeController":[2230],"IRateProvider":[150],"IVault":[2893],"IVaultAdmin":[3183],"IVaultExtension":[4208],"IVaultMainMock":[1247],"InputHelpersMock":[31490],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PackedTokenBalance":[5970],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolConfigConst":[29141],"PoolConfigLib":[29980],"PoolData":[4511],"PoolDataLib":[30570],"PoolFactoryMock":[32017],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"StorageSlotExtension":[9911],"SwapInternalStateLocals":[35466],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenDeltaMappingSlotType":[6484],"TokenInfo":[4486],"TokenType":[4463],"TransientStorageHelpers":[7068],"Vault":[22336],"VaultExtension":[27639],"VaultMock":[38235],"VaultState":[4451],"VaultStateBits":[30607],"VaultStateLib":[30748],"VaultSwapParams":[4536],"WordCodec":[7535],"WrappingDirection":[4629]},"id":38236,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":35401,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:89"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":35403,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":38999,"src":"72:75:89","symbolAliases":[{"foreign":{"id":35402,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38998,"src":"81:8:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":35405,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":39275,"src":"148:72:89","symbolAliases":[{"foreign":{"id":35404,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"157:6:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol","id":35407,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":2231,"src":"222:113:89","symbolAliases":[{"foreign":{"id":35406,"name":"IProtocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"231:22:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol","id":35409,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":151,"src":"336:112:89","symbolAliases":[{"foreign":{"id":35408,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"345:13:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol","id":35411,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":4209,"src":"449:99:89","symbolAliases":[{"foreign":{"id":35410,"name":"IVaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"458:15:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol","file":"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol","id":35413,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":1248,"src":"549:96:89","symbolAliases":[{"foreign":{"id":35412,"name":"IVaultMainMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1247,"src":"558:14:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol","id":35415,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":1317,"src":"646:91:89","symbolAliases":[{"foreign":{"id":35414,"name":"IAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1316,"src":"655:11:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol","id":35417,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":3184,"src":"738:91:89","symbolAliases":[{"foreign":{"id":35416,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"747:11:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":35419,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":2894,"src":"830:81:89","symbolAliases":[{"foreign":{"id":35418,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"839:6:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol","id":35421,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":1888,"src":"912:81:89","symbolAliases":[{"foreign":{"id":35420,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"921:6:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":35422,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":4654,"src":"994:69:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","file":"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol","id":35424,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":9912,"src":"1065:120:89","symbolAliases":[{"foreign":{"id":35423,"name":"StorageSlotExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9911,"src":"1074:20:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol","id":35426,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":5971,"src":"1186:111:89","symbolAliases":[{"foreign":{"id":35425,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"1195:18:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol","id":35428,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":5440,"src":"1298:101:89","symbolAliases":[{"foreign":{"id":35427,"name":"BufferHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5439,"src":"1307:13:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol","id":35431,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":7069,"src":"1400:156:89","symbolAliases":[{"foreign":{"id":35429,"name":"TransientStorageHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"1413:23:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":35430,"name":"TokenDeltaMappingSlotType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6484,"src":"1442:25:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol","id":35433,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":7536,"src":"1557:93:89","symbolAliases":[{"foreign":{"id":35432,"name":"WordCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7535,"src":"1566:9:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol","file":"../lib/VaultStateLib.sol","id":35436,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":30749,"src":"1652:73:89","symbolAliases":[{"foreign":{"id":35434,"name":"VaultStateLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30748,"src":"1661:13:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":35435,"name":"VaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30607,"src":"1676:14:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol","file":"../lib/PoolConfigLib.sol","id":35439,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":29981,"src":"1726:73:89","symbolAliases":[{"foreign":{"id":35437,"name":"PoolConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29980,"src":"1735:13:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":35438,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"1750:14:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol","file":"../lib/HooksConfigLib.sol","id":35441,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":29014,"src":"1800:59:89","symbolAliases":[{"foreign":{"id":35440,"name":"HooksConfigLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29013,"src":"1809:14:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol","file":"./InputHelpersMock.sol","id":35443,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":31491,"src":"1860:58:89","symbolAliases":[{"foreign":{"id":35442,"name":"InputHelpersMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31490,"src":"1869:16:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol","file":"./PoolFactoryMock.sol","id":35445,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":32018,"src":"1919:56:89","symbolAliases":[{"foreign":{"id":35444,"name":"PoolFactoryMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32017,"src":"1928:15:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/VaultExtension.sol","file":"../VaultExtension.sol","id":35447,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":27640,"src":"1976:55:89","symbolAliases":[{"foreign":{"id":35446,"name":"VaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27639,"src":"1985:14:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol","file":"../lib/PoolConfigConst.sol","id":35449,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":29142,"src":"2032:61:89","symbolAliases":[{"foreign":{"id":35448,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"2041:15:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol","file":"../lib/PoolDataLib.sol","id":35451,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":30571,"src":"2094:53:89","symbolAliases":[{"foreign":{"id":35450,"name":"PoolDataLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30570,"src":"2103:11:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/Vault.sol","file":"../Vault.sol","id":35453,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38236,"sourceUnit":22337,"src":"2148:37:89","symbolAliases":[{"foreign":{"id":35452,"name":"Vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22336,"src":"2157:5:89","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"SwapInternalStateLocals","id":35466,"members":[{"constant":false,"id":35456,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"2240:15:89","nodeType":"VariableDeclaration","scope":35466,"src":"2224:31:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":35455,"nodeType":"UserDefinedTypeName","pathNode":{"id":35454,"name":"VaultSwapParams","nameLocations":["2224:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"2224:15:89"},"referencedDeclaration":4536,"src":"2224:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":35459,"mutability":"mutable","name":"swapState","nameLocation":"2271:9:89","nodeType":"VariableDeclaration","scope":35466,"src":"2261:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"},"typeName":{"id":35458,"nodeType":"UserDefinedTypeName","pathNode":{"id":35457,"name":"SwapState","nameLocations":["2261:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"2261:9:89"},"referencedDeclaration":4443,"src":"2261:9:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":35462,"mutability":"mutable","name":"poolData","nameLocation":"2295:8:89","nodeType":"VariableDeclaration","scope":35466,"src":"2286:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"},"typeName":{"id":35461,"nodeType":"UserDefinedTypeName","pathNode":{"id":35460,"name":"PoolData","nameLocations":["2286:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"2286:8:89"},"referencedDeclaration":4511,"src":"2286:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":35465,"mutability":"mutable","name":"vaultState","nameLocation":"2320:10:89","nodeType":"VariableDeclaration","scope":35466,"src":"2309:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_storage_ptr","typeString":"struct VaultState"},"typeName":{"id":35464,"nodeType":"UserDefinedTypeName","pathNode":{"id":35463,"name":"VaultState","nameLocations":["2309:10:89"],"nodeType":"IdentifierPath","referencedDeclaration":4451,"src":"2309:10:89"},"referencedDeclaration":4451,"src":"2309:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_storage_ptr","typeString":"struct VaultState"}},"visibility":"internal"}],"name":"SwapInternalStateLocals","nameLocation":"2194:23:89","nodeType":"StructDefinition","scope":38236,"src":"2187:146:89","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":35467,"name":"IVaultMainMock","nameLocations":["2357:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":1247,"src":"2357:14:89"},"id":35468,"nodeType":"InheritanceSpecifier","src":"2357:14:89"},{"baseName":{"id":35469,"name":"Vault","nameLocations":["2373:5:89"],"nodeType":"IdentifierPath","referencedDeclaration":22336,"src":"2373:5:89"},"id":35470,"nodeType":"InheritanceSpecifier","src":"2373:5:89"}],"canonicalName":"VaultMock","contractDependencies":[31490,32017],"contractKind":"contract","fullyImplemented":true,"id":38235,"internalFunctionIDs":{"6093":1,"6114":2},"linearizedBaseContracts":[38235,22336,39196,25145,38828,1685,39065,9568,27923,3550,3789,4344,1247],"name":"VaultMock","nameLocation":"2344:9:89","nodeType":"ContractDefinition","nodes":[{"global":false,"id":35473,"libraryName":{"id":35471,"name":"PackedTokenBalance","nameLocations":["2391:18:89"],"nodeType":"IdentifierPath","referencedDeclaration":5970,"src":"2391:18:89"},"nodeType":"UsingForDirective","src":"2385:37:89","typeName":{"id":35472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2414:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":35477,"libraryName":{"id":35474,"name":"PoolConfigLib","nameLocations":["2433:13:89"],"nodeType":"IdentifierPath","referencedDeclaration":29980,"src":"2433:13:89"},"nodeType":"UsingForDirective","src":"2427:39:89","typeName":{"id":35476,"nodeType":"UserDefinedTypeName","pathNode":{"id":35475,"name":"PoolConfigBits","nameLocations":["2451:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2451:14:89"},"referencedDeclaration":4364,"src":"2451:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":35481,"libraryName":{"id":35478,"name":"HooksConfigLib","nameLocations":["2477:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":29013,"src":"2477:14:89"},"nodeType":"UsingForDirective","src":"2471:40:89","typeName":{"id":35480,"nodeType":"UserDefinedTypeName","pathNode":{"id":35479,"name":"PoolConfigBits","nameLocations":["2496:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"2496:14:89"},"referencedDeclaration":4364,"src":"2496:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}},{"global":false,"id":35485,"libraryName":{"id":35482,"name":"VaultStateLib","nameLocations":["2522:13:89"],"nodeType":"IdentifierPath","referencedDeclaration":30748,"src":"2522:13:89"},"nodeType":"UsingForDirective","src":"2516:39:89","typeName":{"id":35484,"nodeType":"UserDefinedTypeName","pathNode":{"id":35483,"name":"VaultStateBits","nameLocations":["2540:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"2540:14:89"},"referencedDeclaration":30607,"src":"2540:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}}},{"global":false,"id":35488,"libraryName":{"id":35486,"name":"BufferHelpers","nameLocations":["2566:13:89"],"nodeType":"IdentifierPath","referencedDeclaration":5439,"src":"2566:13:89"},"nodeType":"UsingForDirective","src":"2560:32:89","typeName":{"id":35487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2584:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"global":false,"id":35492,"libraryName":{"id":35489,"name":"PoolDataLib","nameLocations":["2603:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":30570,"src":"2603:11:89"},"nodeType":"UsingForDirective","src":"2597:31:89","typeName":{"id":35491,"nodeType":"UserDefinedTypeName","pathNode":{"id":35490,"name":"PoolData","nameLocations":["2619:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"2619:8:89"},"referencedDeclaration":4511,"src":"2619:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}}},{"global":false,"id":35494,"libraryName":{"id":35493,"name":"TransientStorageHelpers","nameLocations":["2639:23:89"],"nodeType":"IdentifierPath","referencedDeclaration":7068,"src":"2639:23:89"},"nodeType":"UsingForDirective","src":"2633:36:89"},{"global":false,"id":35496,"libraryName":{"id":35495,"name":"StorageSlotExtension","nameLocations":["2680:20:89"],"nodeType":"IdentifierPath","referencedDeclaration":9911,"src":"2680:20:89"},"nodeType":"UsingForDirective","src":"2674:33:89"},{"global":false,"id":35499,"libraryName":{"id":35497,"name":"WordCodec","nameLocations":["2718:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":7535,"src":"2718:9:89"},"nodeType":"UsingForDirective","src":"2712:28:89","typeName":{"id":35498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2732:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":false,"id":35502,"mutability":"immutable","name":"_poolFactoryMock","nameLocation":"2780:16:89","nodeType":"VariableDeclaration","scope":38235,"src":"2746:50:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"},"typeName":{"id":35501,"nodeType":"UserDefinedTypeName","pathNode":{"id":35500,"name":"PoolFactoryMock","nameLocations":["2746:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":32017,"src":"2746:15:89"},"referencedDeclaration":32017,"src":"2746:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"visibility":"private"},{"constant":false,"id":35505,"mutability":"immutable","name":"_inputHelpersMock","nameLocation":"2837:17:89","nodeType":"VariableDeclaration","scope":38235,"src":"2802:52:89","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"},"typeName":{"id":35504,"nodeType":"UserDefinedTypeName","pathNode":{"id":35503,"name":"InputHelpersMock","nameLocations":["2802:16:89"],"nodeType":"IdentifierPath","referencedDeclaration":31490,"src":"2802:16:89"},"referencedDeclaration":31490,"src":"2802:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"visibility":"private"},{"body":{"id":35567,"nodeType":"Block","src":"3062:373:89","statements":[{"assignments":[35523],"declarations":[{"constant":false,"id":35523,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"3079:18:89","nodeType":"VariableDeclaration","scope":35567,"src":"3072:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":35522,"name":"uint32","nodeType":"ElementaryTypeName","src":"3072:6:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":35532,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":35527,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35508,"src":"3120:14:89","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":35526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3112:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35525,"name":"address","nodeType":"ElementaryTypeName","src":"3112:7:89","typeDescriptions":{}}},"id":35528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3112:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35524,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"3100:11:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultAdmin_$3183_$","typeString":"type(contract IVaultAdmin)"}},"id":35529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3100:36:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":35530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3137:21:89","memberName":"getPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":2917,"src":"3100:58:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":35531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3100:60:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"3072:88:89"},{"assignments":[35534],"declarations":[{"constant":false,"id":35534,"mutability":"mutable","name":"bufferPeriodDuration","nameLocation":"3177:20:89","nodeType":"VariableDeclaration","scope":35567,"src":"3170:27:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":35533,"name":"uint32","nodeType":"ElementaryTypeName","src":"3170:6:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":35543,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":35538,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35508,"src":"3220:14:89","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}],"id":35537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3212:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35536,"name":"address","nodeType":"ElementaryTypeName","src":"3212:7:89","typeDescriptions":{}}},"id":35539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3212:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35535,"name":"IVaultAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"3200:11:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultAdmin_$3183_$","typeString":"type(contract IVaultAdmin)"}},"id":35540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3200:36:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultAdmin_$3183","typeString":"contract IVaultAdmin"}},"id":35541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3237:23:89","memberName":"getBufferPeriodDuration","nodeType":"MemberAccess","referencedDeclaration":2923,"src":"3200:60:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint32_$","typeString":"function () view external returns (uint32)"}},"id":35542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3200:62:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"3170:92:89"},{"expression":{"id":35558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35544,"name":"_poolFactoryMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35502,"src":"3272:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":35551,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3326:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}],"id":35550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3318:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35549,"name":"address","nodeType":"ElementaryTypeName","src":"3318:7:89","typeDescriptions":{}}},"id":35552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3318:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":35548,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"3311:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":35553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3311:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":35556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":35554,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35523,"src":"3334:18:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":35555,"name":"bufferPeriodDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35534,"src":"3355:20:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"3334:41:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":35547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"3291:19:89","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IVault_$2893_$_t_uint32_$returns$_t_contract$_PoolFactoryMock_$32017_$","typeString":"function (contract IVault,uint32) returns (contract PoolFactoryMock)"},"typeName":{"id":35546,"nodeType":"UserDefinedTypeName","pathNode":{"id":35545,"name":"PoolFactoryMock","nameLocations":["3295:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":32017,"src":"3295:15:89"},"referencedDeclaration":32017,"src":"3295:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}}},"id":35557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3291:85:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"src":"3272:104:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"id":35559,"nodeType":"ExpressionStatement","src":"3272:104:89"},{"expression":{"id":35565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35560,"name":"_inputHelpersMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35505,"src":"3386:17:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":35563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"3406:20:89","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_InputHelpersMock_$31490_$","typeString":"function () returns (contract InputHelpersMock)"},"typeName":{"id":35562,"nodeType":"UserDefinedTypeName","pathNode":{"id":35561,"name":"InputHelpersMock","nameLocations":["3410:16:89"],"nodeType":"IdentifierPath","referencedDeclaration":31490,"src":"3410:16:89"},"referencedDeclaration":31490,"src":"3410:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}}},"id":35564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3406:22:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"src":"3386:42:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"id":35566,"nodeType":"ExpressionStatement","src":"3386:42:89"}]},"id":35568,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":35517,"name":"vaultExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35508,"src":"3011:14:89","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},{"id":35518,"name":"authorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35511,"src":"3027:10:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},{"id":35519,"name":"protocolFeeController","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35514,"src":"3039:21:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}}],"id":35520,"kind":"baseConstructorSpecifier","modifierName":{"id":35516,"name":"Vault","nameLocations":["3005:5:89"],"nodeType":"IdentifierPath","referencedDeclaration":22336,"src":"3005:5:89"},"nodeType":"ModifierInvocation","src":"3005:56:89"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":35515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35508,"mutability":"mutable","name":"vaultExtension","nameLocation":"2898:14:89","nodeType":"VariableDeclaration","scope":35568,"src":"2882:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"},"typeName":{"id":35507,"nodeType":"UserDefinedTypeName","pathNode":{"id":35506,"name":"IVaultExtension","nameLocations":["2882:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":4208,"src":"2882:15:89"},"referencedDeclaration":4208,"src":"2882:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultExtension_$4208","typeString":"contract IVaultExtension"}},"visibility":"internal"},{"constant":false,"id":35511,"mutability":"mutable","name":"authorizer","nameLocation":"2934:10:89","nodeType":"VariableDeclaration","scope":35568,"src":"2922:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"},"typeName":{"id":35510,"nodeType":"UserDefinedTypeName","pathNode":{"id":35509,"name":"IAuthorizer","nameLocations":["2922:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"2922:11:89"},"referencedDeclaration":1316,"src":"2922:11:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$1316","typeString":"contract IAuthorizer"}},"visibility":"internal"},{"constant":false,"id":35514,"mutability":"mutable","name":"protocolFeeController","nameLocation":"2977:21:89","nodeType":"VariableDeclaration","scope":35568,"src":"2954:44:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"},"typeName":{"id":35513,"nodeType":"UserDefinedTypeName","pathNode":{"id":35512,"name":"IProtocolFeeController","nameLocations":["2954:22:89"],"nodeType":"IdentifierPath","referencedDeclaration":2230,"src":"2954:22:89"},"referencedDeclaration":2230,"src":"2954:22:89","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeController_$2230","typeString":"contract IProtocolFeeController"}},"visibility":"internal"}],"src":"2872:132:89"},"returnParameters":{"id":35521,"nodeType":"ParameterList","parameters":[],"src":"3062:0:89"},"scope":38235,"src":"2861:574:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[374],"body":{"id":35578,"nodeType":"Block","src":"3503:49:89","statements":[{"expression":{"arguments":[{"id":35575,"name":"_poolFactoryMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35502,"src":"3528:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}],"id":35574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3520:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35573,"name":"address","nodeType":"ElementaryTypeName","src":"3520:7:89","typeDescriptions":{}}},"id":35576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3520:25:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":35572,"id":35577,"nodeType":"Return","src":"3513:32:89"}]},"functionSelector":"87a76c59","id":35579,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolFactoryMock","nameLocation":"3450:18:89","nodeType":"FunctionDefinition","parameters":{"id":35569,"nodeType":"ParameterList","parameters":[],"src":"3468:2:89"},"returnParameters":{"id":35572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35571,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":35579,"src":"3494:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35570,"name":"address","nodeType":"ElementaryTypeName","src":"3494:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3493:9:89"},"scope":38235,"src":"3441:111:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[383],"body":{"id":35594,"nodeType":"Block","src":"3631:43:89","statements":[{"expression":{"arguments":[{"id":35589,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35581,"src":"3647:5:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35590,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35583,"src":"3654:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35591,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35585,"src":"3660:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":35588,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38621,"src":"3641:5:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":35592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3641:26:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35593,"nodeType":"ExpressionStatement","src":"3641:26:89"}]},"functionSelector":"1d27af68","id":35595,"implemented":true,"kind":"function","modifiers":[],"name":"burnERC20","nameLocation":"3567:9:89","nodeType":"FunctionDefinition","parameters":{"id":35586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35581,"mutability":"mutable","name":"token","nameLocation":"3585:5:89","nodeType":"VariableDeclaration","scope":35595,"src":"3577:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35580,"name":"address","nodeType":"ElementaryTypeName","src":"3577:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35583,"mutability":"mutable","name":"from","nameLocation":"3600:4:89","nodeType":"VariableDeclaration","scope":35595,"src":"3592:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35582,"name":"address","nodeType":"ElementaryTypeName","src":"3592:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35585,"mutability":"mutable","name":"amount","nameLocation":"3614:6:89","nodeType":"VariableDeclaration","scope":35595,"src":"3606:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35584,"name":"uint256","nodeType":"ElementaryTypeName","src":"3606:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3576:45:89"},"returnParameters":{"id":35587,"nodeType":"ParameterList","parameters":[],"src":"3631:0:89"},"scope":38235,"src":"3558:116:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[392],"body":{"id":35610,"nodeType":"Block","src":"3751:41:89","statements":[{"expression":{"arguments":[{"id":35605,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35597,"src":"3767:5:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35606,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35599,"src":"3774:2:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35607,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35601,"src":"3778:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":35604,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38458,"src":"3761:5:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":35608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3761:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35609,"nodeType":"ExpressionStatement","src":"3761:24:89"}]},"functionSelector":"47c07e88","id":35611,"implemented":true,"kind":"function","modifiers":[],"name":"mintERC20","nameLocation":"3689:9:89","nodeType":"FunctionDefinition","parameters":{"id":35602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35597,"mutability":"mutable","name":"token","nameLocation":"3707:5:89","nodeType":"VariableDeclaration","scope":35611,"src":"3699:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35596,"name":"address","nodeType":"ElementaryTypeName","src":"3699:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35599,"mutability":"mutable","name":"to","nameLocation":"3722:2:89","nodeType":"VariableDeclaration","scope":35611,"src":"3714:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35598,"name":"address","nodeType":"ElementaryTypeName","src":"3714:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35601,"mutability":"mutable","name":"amount","nameLocation":"3734:6:89","nodeType":"VariableDeclaration","scope":35611,"src":"3726:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35600,"name":"uint256","nodeType":"ElementaryTypeName","src":"3726:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3698:43:89"},"returnParameters":{"id":35603,"nodeType":"ParameterList","parameters":[],"src":"3751:0:89"},"scope":38235,"src":"3680:112:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[401],"body":{"id":35642,"nodeType":"Block","src":"4174:275:89","statements":[{"assignments":[35624],"declarations":[{"constant":false,"id":35624,"mutability":"mutable","name":"roleAccounts","nameLocation":"4208:12:89","nodeType":"VariableDeclaration","scope":35642,"src":"4184:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":35623,"nodeType":"UserDefinedTypeName","pathNode":{"id":35622,"name":"PoolRoleAccounts","nameLocations":["4184:16:89"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"4184:16:89"},"referencedDeclaration":4459,"src":"4184:16:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"id":35625,"nodeType":"VariableDeclarationStatement","src":"4184:36:89"},{"expression":{"arguments":[{"id":35629,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35613,"src":"4274:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":35631,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35617,"src":"4309:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":35630,"name":"buildTokenConfig","nodeType":"Identifier","overloadedDeclarations":[36535,36620,36717,36806],"referencedDeclaration":36535,"src":"4292:16:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) view returns (struct TokenConfig memory[] memory)"}},"id":35632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4292:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":35633,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35624,"src":"4330:12:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"arguments":[{"hexValue":"30","id":35636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4364:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":35635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4356:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35634,"name":"address","nodeType":"ElementaryTypeName","src":"4356:7:89","typeDescriptions":{}}},"id":35637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4356:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":35638,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38000,"src":"4400:30:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":35639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":35626,"name":"_poolFactoryMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35502,"src":"4231:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"id":35628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4248:12:89","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":31755,"src":"4231:29:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":35640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4231:211:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35641,"nodeType":"ExpressionStatement","src":"4231:211:89"}]},"functionSelector":"851c65a3","id":35643,"implemented":true,"kind":"function","modifiers":[{"id":35620,"kind":"modifierInvocation","modifierName":{"id":35619,"name":"whenVaultNotPaused","nameLocations":["4155:18:89"],"nodeType":"IdentifierPath","referencedDeclaration":24511,"src":"4155:18:89"},"nodeType":"ModifierInvocation","src":"4155:18:89"}],"name":"manualRegisterPool","nameLocation":"4089:18:89","nodeType":"FunctionDefinition","parameters":{"id":35618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35613,"mutability":"mutable","name":"pool","nameLocation":"4116:4:89","nodeType":"VariableDeclaration","scope":35643,"src":"4108:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35612,"name":"address","nodeType":"ElementaryTypeName","src":"4108:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35617,"mutability":"mutable","name":"tokens","nameLocation":"4138:6:89","nodeType":"VariableDeclaration","scope":35643,"src":"4122:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":35615,"nodeType":"UserDefinedTypeName","pathNode":{"id":35614,"name":"IERC20","nameLocations":["4122:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4122:6:89"},"referencedDeclaration":39274,"src":"4122:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":35616,"nodeType":"ArrayTypeName","src":"4122:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"4107:38:89"},"returnParameters":{"id":35621,"nodeType":"ParameterList","parameters":[],"src":"4174:0:89"},"scope":38235,"src":"4080:369:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[412],"body":{"id":35683,"nodeType":"Block","src":"4617:386:89","statements":[{"assignments":[35658],"declarations":[{"constant":false,"id":35658,"mutability":"mutable","name":"liquidityManagement","nameLocation":"4654:19:89","nodeType":"VariableDeclaration","scope":35683,"src":"4627:46:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":35657,"nodeType":"UserDefinedTypeName","pathNode":{"id":35656,"name":"LiquidityManagement","nameLocations":["4627:19:89"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"4627:19:89"},"referencedDeclaration":4362,"src":"4627:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"id":35661,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":35659,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38000,"src":"4676:30:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":35660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4676:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"nodeType":"VariableDeclarationStatement","src":"4627:81:89"},{"expression":{"id":35666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":35662,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35658,"src":"4718:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":35664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4738:26:89","memberName":"disableUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":4355,"src":"4718:46:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":35665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4767:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4718:53:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":35667,"nodeType":"ExpressionStatement","src":"4718:53:89"},{"expression":{"arguments":[{"id":35671,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35645,"src":"4836:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":35673,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35649,"src":"4871:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":35672,"name":"buildTokenConfig","nodeType":"Identifier","overloadedDeclarations":[36535,36620,36717,36806],"referencedDeclaration":36535,"src":"4854:16:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) view returns (struct TokenConfig memory[] memory)"}},"id":35674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4854:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":35675,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35651,"src":"4892:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":35678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4931:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":35677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4923:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35676,"name":"address","nodeType":"ElementaryTypeName","src":"4923:7:89","typeDescriptions":{}}},"id":35679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4923:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35680,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35658,"src":"4967:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":35668,"name":"_poolFactoryMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35502,"src":"4782:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"id":35670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4799:23:89","memberName":"registerPoolWithSwapFee","nodeType":"MemberAccess","referencedDeclaration":31790,"src":"4782:40:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,address,struct LiquidityManagement memory) external"}},"id":35681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:214:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35682,"nodeType":"ExpressionStatement","src":"4782:214:89"}]},"functionSelector":"1f495f79","id":35684,"implemented":true,"kind":"function","modifiers":[{"id":35654,"kind":"modifierInvocation","modifierName":{"id":35653,"name":"whenVaultNotPaused","nameLocations":["4598:18:89"],"nodeType":"IdentifierPath","referencedDeclaration":24511,"src":"4598:18:89"},"nodeType":"ModifierInvocation","src":"4598:18:89"}],"name":"manualRegisterPoolWithSwapFee","nameLocation":"4464:29:89","nodeType":"FunctionDefinition","parameters":{"id":35652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35645,"mutability":"mutable","name":"pool","nameLocation":"4511:4:89","nodeType":"VariableDeclaration","scope":35684,"src":"4503:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35644,"name":"address","nodeType":"ElementaryTypeName","src":"4503:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35649,"mutability":"mutable","name":"tokens","nameLocation":"4541:6:89","nodeType":"VariableDeclaration","scope":35684,"src":"4525:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":35647,"nodeType":"UserDefinedTypeName","pathNode":{"id":35646,"name":"IERC20","nameLocations":["4525:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4525:6:89"},"referencedDeclaration":39274,"src":"4525:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":35648,"nodeType":"ArrayTypeName","src":"4525:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":35651,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"4565:17:89","nodeType":"VariableDeclaration","scope":35684,"src":"4557:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35650,"name":"uint256","nodeType":"ElementaryTypeName","src":"4557:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4493:95:89"},"returnParameters":{"id":35655,"nodeType":"ParameterList","parameters":[],"src":"4617:0:89"},"scope":38235,"src":"4455:548:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[421],"body":{"id":35746,"nodeType":"Block","src":"5098:450:89","statements":[{"assignments":[35697],"declarations":[{"constant":false,"id":35697,"mutability":"mutable","name":"tokenConfig","nameLocation":"5129:11:89","nodeType":"VariableDeclaration","scope":35746,"src":"5108:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":35695,"nodeType":"UserDefinedTypeName","pathNode":{"id":35694,"name":"TokenConfig","nameLocations":["5108:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"5108:11:89"},"referencedDeclaration":4476,"src":"5108:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":35696,"nodeType":"ArrayTypeName","src":"5108:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"id":35705,"initialValue":{"arguments":[{"expression":{"id":35702,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35690,"src":"5161:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":35703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5168:6:89","memberName":"length","nodeType":"MemberAccess","src":"5161:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":35701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5143:17:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenConfig memory[] memory)"},"typeName":{"baseType":{"id":35699,"nodeType":"UserDefinedTypeName","pathNode":{"id":35698,"name":"TokenConfig","nameLocations":["5147:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"5147:11:89"},"referencedDeclaration":4476,"src":"5147:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":35700,"nodeType":"ArrayTypeName","src":"5147:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}}},"id":35704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5143:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5108:67:89"},{"assignments":[35708],"declarations":[{"constant":false,"id":35708,"mutability":"mutable","name":"roleAccounts","nameLocation":"5209:12:89","nodeType":"VariableDeclaration","scope":35746,"src":"5185:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":35707,"nodeType":"UserDefinedTypeName","pathNode":{"id":35706,"name":"PoolRoleAccounts","nameLocations":["5185:16:89"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"5185:16:89"},"referencedDeclaration":4459,"src":"5185:16:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"id":35709,"nodeType":"VariableDeclarationStatement","src":"5185:36:89"},{"body":{"id":35730,"nodeType":"Block","src":"5276:57:89","statements":[{"expression":{"id":35728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":35721,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35697,"src":"5290:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":35723,"indexExpression":{"id":35722,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35711,"src":"5302:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5290:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":35724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5305:5:89","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"5290:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":35725,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35690,"src":"5313:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":35727,"indexExpression":{"id":35726,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35711,"src":"5320:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5313:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"5290:32:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":35729,"nodeType":"ExpressionStatement","src":"5290:32:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":35717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":35714,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35711,"src":"5252:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":35715,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35690,"src":"5256:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":35716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5263:6:89","memberName":"length","nodeType":"MemberAccess","src":"5256:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5252:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":35731,"initializationExpression":{"assignments":[35711],"declarations":[{"constant":false,"id":35711,"mutability":"mutable","name":"i","nameLocation":"5245:1:89","nodeType":"VariableDeclaration","scope":35731,"src":"5237:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":35710,"name":"uint256","nodeType":"ElementaryTypeName","src":"5237:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":35713,"initialValue":{"hexValue":"30","id":35712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5249:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5237:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":35719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5271:3:89","subExpression":{"id":35718,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35711,"src":"5273:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":35720,"nodeType":"ExpressionStatement","src":"5271:3:89"},"nodeType":"ForStatement","src":"5232:101:89"},{"expression":{"arguments":[{"id":35735,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35686,"src":"5386:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":35736,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35697,"src":"5404:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":35737,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35708,"src":"5429:12:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"arguments":[{"hexValue":"30","id":35740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5463:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":35739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5455:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35738,"name":"address","nodeType":"ElementaryTypeName","src":"5455:7:89","typeDescriptions":{}}},"id":35741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5455:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":35742,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38000,"src":"5499:30:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":35743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5499:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":35732,"name":"_poolFactoryMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35502,"src":"5343:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"id":35734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5360:12:89","memberName":"registerPool","nodeType":"MemberAccess","referencedDeclaration":31755,"src":"5343:29:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":35744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5343:198:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35745,"nodeType":"ExpressionStatement","src":"5343:198:89"}]},"functionSelector":"32333ce6","id":35747,"implemented":true,"kind":"function","modifiers":[],"name":"manualRegisterPoolPassThruTokens","nameLocation":"5018:32:89","nodeType":"FunctionDefinition","parameters":{"id":35691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35686,"mutability":"mutable","name":"pool","nameLocation":"5059:4:89","nodeType":"VariableDeclaration","scope":35747,"src":"5051:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35685,"name":"address","nodeType":"ElementaryTypeName","src":"5051:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35690,"mutability":"mutable","name":"tokens","nameLocation":"5081:6:89","nodeType":"VariableDeclaration","scope":35747,"src":"5065:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":35688,"nodeType":"UserDefinedTypeName","pathNode":{"id":35687,"name":"IERC20","nameLocations":["5065:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5065:6:89"},"referencedDeclaration":39274,"src":"5065:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":35689,"nodeType":"ArrayTypeName","src":"5065:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"5050:38:89"},"returnParameters":{"id":35692,"nodeType":"ParameterList","parameters":[],"src":"5098:0:89"},"scope":38235,"src":"5009:539:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[435],"body":{"id":35780,"nodeType":"Block","src":"5753:262:89","statements":[{"expression":{"arguments":[{"id":35766,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35749,"src":"5817:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":35768,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35753,"src":"5852:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":35767,"name":"buildTokenConfig","nodeType":"Identifier","overloadedDeclarations":[36535,36620,36717,36806],"referencedDeclaration":36535,"src":"5835:16:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) view returns (struct TokenConfig memory[] memory)"}},"id":35769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5835:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":35770,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35755,"src":"5873:9:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":35771,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35758,"src":"5896:12:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"arguments":[{"hexValue":"30","id":35774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5930:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":35773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5922:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":35772,"name":"address","nodeType":"ElementaryTypeName","src":"5922:7:89","typeDescriptions":{}}},"id":35775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5922:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":35776,"name":"_getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38000,"src":"5966:30:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":35777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5966:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"expression":{"id":35763,"name":"_poolFactoryMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35502,"src":"5763:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_PoolFactoryMock_$32017","typeString":"contract PoolFactoryMock"}},"id":35765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5780:23:89","memberName":"registerPoolAtTimestamp","nodeType":"MemberAccess","referencedDeclaration":31823,"src":"5763:40:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint32_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint32,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory) external"}},"id":35778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5763:245:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":35779,"nodeType":"ExpressionStatement","src":"5763:245:89"}]},"functionSelector":"0362a513","id":35781,"implemented":true,"kind":"function","modifiers":[{"id":35761,"kind":"modifierInvocation","modifierName":{"id":35760,"name":"whenVaultNotPaused","nameLocations":["5734:18:89"],"nodeType":"IdentifierPath","referencedDeclaration":24511,"src":"5734:18:89"},"nodeType":"ModifierInvocation","src":"5734:18:89"}],"name":"manualRegisterPoolAtTimestamp","nameLocation":"5563:29:89","nodeType":"FunctionDefinition","parameters":{"id":35759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35749,"mutability":"mutable","name":"pool","nameLocation":"5610:4:89","nodeType":"VariableDeclaration","scope":35781,"src":"5602:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35748,"name":"address","nodeType":"ElementaryTypeName","src":"5602:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35753,"mutability":"mutable","name":"tokens","nameLocation":"5640:6:89","nodeType":"VariableDeclaration","scope":35781,"src":"5624:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":35751,"nodeType":"UserDefinedTypeName","pathNode":{"id":35750,"name":"IERC20","nameLocations":["5624:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5624:6:89"},"referencedDeclaration":39274,"src":"5624:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":35752,"nodeType":"ArrayTypeName","src":"5624:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":35755,"mutability":"mutable","name":"timestamp","nameLocation":"5663:9:89","nodeType":"VariableDeclaration","scope":35781,"src":"5656:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":35754,"name":"uint32","nodeType":"ElementaryTypeName","src":"5656:6:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":35758,"mutability":"mutable","name":"roleAccounts","nameLocation":"5706:12:89","nodeType":"VariableDeclaration","scope":35781,"src":"5682:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":35757,"nodeType":"UserDefinedTypeName","pathNode":{"id":35756,"name":"PoolRoleAccounts","nameLocations":["5682:16:89"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"5682:16:89"},"referencedDeclaration":4459,"src":"5682:16:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"}],"src":"5592:132:89"},"returnParameters":{"id":35762,"nodeType":"ParameterList","parameters":[],"src":"5753:0:89"},"scope":38235,"src":"5554:461:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[442],"body":{"id":35799,"nodeType":"Block","src":"6088:88:89","statements":[{"expression":{"id":35797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35788,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6098:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35790,"indexExpression":{"id":35789,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35783,"src":"6114:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6098:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35795,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35785,"src":"6162:6:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"baseExpression":{"id":35791,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6122:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35793,"indexExpression":{"id":35792,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35783,"src":"6138:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6122:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6144:17:89","memberName":"setPoolRegistered","nodeType":"MemberAccess","referencedDeclaration":29201,"src":"6122:39:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6122:47:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"6098:71:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35798,"nodeType":"ExpressionStatement","src":"6098:71:89"}]},"functionSelector":"352339ee","id":35800,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolRegistered","nameLocation":"6030:23:89","nodeType":"FunctionDefinition","parameters":{"id":35786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35783,"mutability":"mutable","name":"pool","nameLocation":"6062:4:89","nodeType":"VariableDeclaration","scope":35800,"src":"6054:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35782,"name":"address","nodeType":"ElementaryTypeName","src":"6054:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35785,"mutability":"mutable","name":"status","nameLocation":"6073:6:89","nodeType":"VariableDeclaration","scope":35800,"src":"6068:11:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":35784,"name":"bool","nodeType":"ElementaryTypeName","src":"6068:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6053:27:89"},"returnParameters":{"id":35787,"nodeType":"ParameterList","parameters":[],"src":"6088:0:89"},"scope":38235,"src":"6021:155:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[449],"body":{"id":35818,"nodeType":"Block","src":"6261:100:89","statements":[{"expression":{"id":35816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35807,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6271:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35809,"indexExpression":{"id":35808,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35802,"src":"6287:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6271:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35814,"name":"isPoolInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35804,"src":"6336:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"baseExpression":{"id":35810,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6295:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35812,"indexExpression":{"id":35811,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35802,"src":"6311:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6295:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6317:18:89","memberName":"setPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":29244,"src":"6295:40:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6295:59:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"6271:83:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35817,"nodeType":"ExpressionStatement","src":"6271:83:89"}]},"functionSelector":"5e3e00fa","id":35819,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetInitializedPool","nameLocation":"6191:24:89","nodeType":"FunctionDefinition","parameters":{"id":35805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35802,"mutability":"mutable","name":"pool","nameLocation":"6224:4:89","nodeType":"VariableDeclaration","scope":35819,"src":"6216:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35801,"name":"address","nodeType":"ElementaryTypeName","src":"6216:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35804,"mutability":"mutable","name":"isPoolInitialized","nameLocation":"6235:17:89","nodeType":"VariableDeclaration","scope":35819,"src":"6230:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":35803,"name":"bool","nodeType":"ElementaryTypeName","src":"6230:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6215:38:89"},"returnParameters":{"id":35806,"nodeType":"ParameterList","parameters":[],"src":"6261:0:89"},"scope":38235,"src":"6182:179:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[463],"body":{"id":35837,"nodeType":"Block","src":"6456:104:89","statements":[{"expression":{"id":35835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35826,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6466:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35828,"indexExpression":{"id":35827,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35821,"src":"6482:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6466:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35833,"name":"pauseWindowEndTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35823,"src":"6534:18:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"baseExpression":{"id":35829,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6490:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35831,"indexExpression":{"id":35830,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35821,"src":"6506:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6490:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6512:21:89","memberName":"setPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":29931,"src":"6490:43:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint32) pure returns (PoolConfigBits)"}},"id":35834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6490:63:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"6466:87:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35836,"nodeType":"ExpressionStatement","src":"6466:87:89"}]},"functionSelector":"0c87409b","id":35838,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolPauseWindowEndTime","nameLocation":"6376:31:89","nodeType":"FunctionDefinition","parameters":{"id":35824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35821,"mutability":"mutable","name":"pool","nameLocation":"6416:4:89","nodeType":"VariableDeclaration","scope":35838,"src":"6408:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35820,"name":"address","nodeType":"ElementaryTypeName","src":"6408:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35823,"mutability":"mutable","name":"pauseWindowEndTime","nameLocation":"6429:18:89","nodeType":"VariableDeclaration","scope":35838,"src":"6422:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":35822,"name":"uint32","nodeType":"ElementaryTypeName","src":"6422:6:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6407:41:89"},"returnParameters":{"id":35825,"nodeType":"ParameterList","parameters":[],"src":"6456:0:89"},"scope":38235,"src":"6367:193:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[456],"body":{"id":35856,"nodeType":"Block","src":"6635:90:89","statements":[{"expression":{"id":35854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":35845,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6645:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35847,"indexExpression":{"id":35846,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35840,"src":"6661:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6645:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35852,"name":"isPoolPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35842,"src":"6705:12:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"baseExpression":{"id":35848,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"6669:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35850,"indexExpression":{"id":35849,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35840,"src":"6685:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6669:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6691:13:89","memberName":"setPoolPaused","nodeType":"MemberAccess","referencedDeclaration":29287,"src":"6669:35:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6669:49:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"6645:73:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35855,"nodeType":"ExpressionStatement","src":"6645:73:89"}]},"functionSelector":"cbde2b68","id":35857,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolPaused","nameLocation":"6575:19:89","nodeType":"FunctionDefinition","parameters":{"id":35843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35840,"mutability":"mutable","name":"pool","nameLocation":"6603:4:89","nodeType":"VariableDeclaration","scope":35857,"src":"6595:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35839,"name":"address","nodeType":"ElementaryTypeName","src":"6595:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35842,"mutability":"mutable","name":"isPoolPaused","nameLocation":"6614:12:89","nodeType":"VariableDeclaration","scope":35857,"src":"6609:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":35841,"name":"bool","nodeType":"ElementaryTypeName","src":"6609:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:33:89"},"returnParameters":{"id":35844,"nodeType":"ParameterList","parameters":[],"src":"6635:0:89"},"scope":38235,"src":"6566:159:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[468],"body":{"id":35869,"nodeType":"Block","src":"6788:80:89","statements":[{"expression":{"id":35867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35862,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"6798:15:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35865,"name":"isVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35859,"src":"6847:13:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35863,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"6816:15:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":35864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6832:14:89","memberName":"setVaultPaused","nodeType":"MemberAccess","referencedDeclaration":30706,"src":"6816:30:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$_t_bool_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits,bool) pure returns (VaultStateBits)"}},"id":35866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6816:45:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"6798:63:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":35868,"nodeType":"ExpressionStatement","src":"6798:63:89"}]},"functionSelector":"692407ae","id":35870,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetVaultPaused","nameLocation":"6740:20:89","nodeType":"FunctionDefinition","parameters":{"id":35860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35859,"mutability":"mutable","name":"isVaultPaused","nameLocation":"6766:13:89","nodeType":"VariableDeclaration","scope":35870,"src":"6761:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":35858,"name":"bool","nodeType":"ElementaryTypeName","src":"6761:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6760:20:89"},"returnParameters":{"id":35861,"nodeType":"ParameterList","parameters":[],"src":"6788:0:89"},"scope":38235,"src":"6731:137:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[475],"body":{"id":35887,"nodeType":"Block","src":"6952:114:89","statements":[{"expression":{"id":35885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35877,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"6962:15:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35883,"name":"isQueryDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35874,"src":"7043:15:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"id":35880,"name":"isVaultPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35872,"src":"7011:13:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35878,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"6980:15:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":35879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6996:14:89","memberName":"setVaultPaused","nodeType":"MemberAccess","referencedDeclaration":30706,"src":"6980:30:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$_t_bool_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits,bool) pure returns (VaultStateBits)"}},"id":35881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6980:45:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":35882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7026:16:89","memberName":"setQueryDisabled","nodeType":"MemberAccess","referencedDeclaration":30665,"src":"6980:62:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$_t_bool_$returns$_t_userDefinedValueType$_VaultStateBits_$30607_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits,bool) pure returns (VaultStateBits)"}},"id":35884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6980:79:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"src":"6962:97:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":35886,"nodeType":"ExpressionStatement","src":"6962:97:89"}]},"functionSelector":"10c1dc41","id":35888,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetVaultState","nameLocation":"6883:19:89","nodeType":"FunctionDefinition","parameters":{"id":35875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35872,"mutability":"mutable","name":"isVaultPaused","nameLocation":"6908:13:89","nodeType":"VariableDeclaration","scope":35888,"src":"6903:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":35871,"name":"bool","nodeType":"ElementaryTypeName","src":"6903:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":35874,"mutability":"mutable","name":"isQueryDisabled","nameLocation":"6928:15:89","nodeType":"VariableDeclaration","scope":35888,"src":"6923:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":35873,"name":"bool","nodeType":"ElementaryTypeName","src":"6923:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6902:42:89"},"returnParameters":{"id":35876,"nodeType":"ParameterList","parameters":[],"src":"6952:0:89"},"scope":38235,"src":"6874:192:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[505],"body":{"id":36017,"nodeType":"Block","src":"7148:1462:89","statements":[{"assignments":[35898],"declarations":[{"constant":false,"id":35898,"mutability":"mutable","name":"poolConfigBits","nameLocation":"7173:14:89","nodeType":"VariableDeclaration","scope":36017,"src":"7158:29:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":35897,"nodeType":"UserDefinedTypeName","pathNode":{"id":35896,"name":"PoolConfigBits","nameLocations":["7158:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"7158:14:89"},"referencedDeclaration":4364,"src":"7158:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":35902,"initialValue":{"baseExpression":{"id":35899,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"7190:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":35901,"indexExpression":{"id":35900,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35890,"src":"7206:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7190:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"7158:53:89"},{"expression":{"id":35909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35903,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7222:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35906,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7272:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7279:16:89","memberName":"isPoolRegistered","nodeType":"MemberAccess","referencedDeclaration":4380,"src":"7272:23:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35904,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7239:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7254:17:89","memberName":"setPoolRegistered","nodeType":"MemberAccess","referencedDeclaration":29201,"src":"7239:32:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7239:57:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7222:74:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35910,"nodeType":"ExpressionStatement","src":"7222:74:89"},{"expression":{"id":35917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35911,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7306:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35914,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7357:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7364:17:89","memberName":"isPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"7357:24:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35912,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7323:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7338:18:89","memberName":"setPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":29244,"src":"7323:33:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7323:59:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7306:76:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35918,"nodeType":"ExpressionStatement","src":"7306:76:89"},{"expression":{"id":35925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35919,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7392:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35922,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7446:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7453:20:89","memberName":"isPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":4386,"src":"7446:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35920,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7409:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7424:21:89","memberName":"setPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":29330,"src":"7409:36:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7409:65:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7392:82:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35926,"nodeType":"ExpressionStatement","src":"7392:82:89"},{"expression":{"id":35933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35927,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7484:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35930,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7530:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35931,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7537:12:89","memberName":"isPoolPaused","nodeType":"MemberAccess","referencedDeclaration":4384,"src":"7530:19:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35928,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7501:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7516:13:89","memberName":"setPoolPaused","nodeType":"MemberAccess","referencedDeclaration":29287,"src":"7501:28:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7501:49:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7484:66:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35934,"nodeType":"ExpressionStatement","src":"7484:66:89"},{"expression":{"id":35941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35935,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7560:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35938,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7619:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7626:23:89","memberName":"staticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4370,"src":"7619:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":35936,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7577:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7592:26:89","memberName":"setStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29640,"src":"7577:41:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":35940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7577:73:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7560:90:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35942,"nodeType":"ExpressionStatement","src":"7560:90:89"},{"expression":{"id":35949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35943,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7660:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":35945,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7714:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},{"expression":{"id":35946,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7730:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7737:26:89","memberName":"aggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4372,"src":"7730:33:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":35944,"name":"_manualSetAggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38084,"src":"7677:36:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":35948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7677:87:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7660:104:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35950,"nodeType":"ExpressionStatement","src":"7660:104:89"},{"expression":{"id":35957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35951,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7774:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35954,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7837:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35955,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7844:27:89","memberName":"aggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4374,"src":"7837:34:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":35952,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7791:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7806:30:89","memberName":"setAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29762,"src":"7791:45:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":35956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7791:81:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7774:98:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35958,"nodeType":"ExpressionStatement","src":"7774:98:89"},{"expression":{"id":35965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35959,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7882:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35962,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"7935:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7942:17:89","memberName":"tokenDecimalDiffs","nodeType":"MemberAccess","referencedDeclaration":4376,"src":"7935:24:89","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"expression":{"id":35960,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7899:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7914:20:89","memberName":"setTokenDecimalDiffs","nodeType":"MemberAccess","referencedDeclaration":29881,"src":"7899:35:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint40_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint40) pure returns (PoolConfigBits)"}},"id":35964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7899:61:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7882:78:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35966,"nodeType":"ExpressionStatement","src":"7882:78:89"},{"expression":{"id":35973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35967,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7970:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":35970,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"8024:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8031:18:89","memberName":"pauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":4378,"src":"8024:25:89","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":35968,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"7987:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8002:21:89","memberName":"setPauseWindowEndTime","nodeType":"MemberAccess","referencedDeclaration":29931,"src":"7987:36:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint32) pure returns (PoolConfigBits)"}},"id":35972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7987:63:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"7970:80:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35974,"nodeType":"ExpressionStatement","src":"7970:80:89"},{"expression":{"id":35982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35975,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8060:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":35978,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"8135:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8142:19:89","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":4368,"src":"8135:26:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":35980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8162:26:89","memberName":"disableUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":4355,"src":"8135:53:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35976,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8077:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8092:29:89","memberName":"setDisableUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":29393,"src":"8077:44:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8077:121:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"8060:138:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35983,"nodeType":"ExpressionStatement","src":"8060:138:89"},{"expression":{"id":35991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35984,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8208:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":35987,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"8262:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35988,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8269:19:89","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":4368,"src":"8262:26:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":35989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8289:24:89","memberName":"enableAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4357,"src":"8262:51:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35985,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8225:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8240:21:89","memberName":"setAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29455,"src":"8225:36:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8225:89:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"8208:106:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35992,"nodeType":"ExpressionStatement","src":"8208:106:89"},{"expression":{"id":36000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":35993,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8324:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":35996,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"8394:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":35997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8401:19:89","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":4368,"src":"8394:26:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":35998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8421:27:89","memberName":"enableRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4359,"src":"8394:54:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":35994,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8341:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":35995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8356:24:89","memberName":"setRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":29517,"src":"8341:39:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":35999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8341:117:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"8324:134:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36001,"nodeType":"ExpressionStatement","src":"8324:134:89"},{"expression":{"id":36009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36002,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8468:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":36005,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35893,"src":"8512:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":36006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8519:19:89","memberName":"liquidityManagement","nodeType":"MemberAccess","referencedDeclaration":4368,"src":"8512:26:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":36007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8539:14:89","memberName":"enableDonation","nodeType":"MemberAccess","referencedDeclaration":4361,"src":"8512:41:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36003,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8485:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8500:11:89","memberName":"setDonation","nodeType":"MemberAccess","referencedDeclaration":29560,"src":"8485:26:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8485:69:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"8468:86:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36010,"nodeType":"ExpressionStatement","src":"8468:86:89"},{"expression":{"id":36015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36011,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"8565:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":36013,"indexExpression":{"id":36012,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35890,"src":"8581:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8565:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":36014,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35898,"src":"8589:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"8565:38:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36016,"nodeType":"ExpressionStatement","src":"8565:38:89"}]},"functionSelector":"5c1c1c81","id":36018,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolConfig","nameLocation":"7081:19:89","nodeType":"FunctionDefinition","parameters":{"id":35894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35890,"mutability":"mutable","name":"pool","nameLocation":"7109:4:89","nodeType":"VariableDeclaration","scope":36018,"src":"7101:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35889,"name":"address","nodeType":"ElementaryTypeName","src":"7101:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":35893,"mutability":"mutable","name":"config","nameLocation":"7133:6:89","nodeType":"VariableDeclaration","scope":36018,"src":"7115:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig"},"typeName":{"id":35892,"nodeType":"UserDefinedTypeName","pathNode":{"id":35891,"name":"PoolConfig","nameLocations":["7115:10:89"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"7115:10:89"},"referencedDeclaration":4387,"src":"7115:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_storage_ptr","typeString":"struct PoolConfig"}},"visibility":"internal"}],"src":"7100:40:89"},"returnParameters":{"id":35895,"nodeType":"ParameterList","parameters":[],"src":"7148:0:89"},"scope":38235,"src":"7072:1538:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[520],"body":{"id":36030,"nodeType":"Block","src":"8694:57:89","statements":[{"expression":{"arguments":[{"id":36026,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36020,"src":"8732:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":36027,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36022,"src":"8738:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36025,"name":"_setStaticSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25045,"src":"8704:27:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":36028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8704:40:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36029,"nodeType":"ExpressionStatement","src":"8704:40:89"}]},"functionSelector":"195aaef9","id":36031,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetStaticSwapFeePercentage","nameLocation":"8625:32:89","nodeType":"FunctionDefinition","parameters":{"id":36023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36020,"mutability":"mutable","name":"pool","nameLocation":"8666:4:89","nodeType":"VariableDeclaration","scope":36031,"src":"8658:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36019,"name":"address","nodeType":"ElementaryTypeName","src":"8658:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36022,"mutability":"mutable","name":"value","nameLocation":"8680:5:89","nodeType":"VariableDeclaration","scope":36031,"src":"8672:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36021,"name":"uint256","nodeType":"ElementaryTypeName","src":"8672:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8657:29:89"},"returnParameters":{"id":36024,"nodeType":"ParameterList","parameters":[],"src":"8694:0:89"},"scope":38235,"src":"8616:135:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[528],"body":{"id":36049,"nodeType":"Block","src":"8841:96:89","statements":[{"expression":{"id":36047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36038,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"8851:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":36040,"indexExpression":{"id":36039,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36033,"src":"8867:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8851:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":36045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36035,"src":"8924:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":36041,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"8875:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":36043,"indexExpression":{"id":36042,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36033,"src":"8891:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8875:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8897:26:89","memberName":"setStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29640,"src":"8875:48:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":36046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8875:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"8851:79:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36048,"nodeType":"ExpressionStatement","src":"8851:79:89"}]},"functionSelector":"2b766278","id":36050,"implemented":true,"kind":"function","modifiers":[],"name":"manualUnsafeSetStaticSwapFeePercentage","nameLocation":"8766:38:89","nodeType":"FunctionDefinition","parameters":{"id":36036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36033,"mutability":"mutable","name":"pool","nameLocation":"8813:4:89","nodeType":"VariableDeclaration","scope":36050,"src":"8805:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36032,"name":"address","nodeType":"ElementaryTypeName","src":"8805:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36035,"mutability":"mutable","name":"value","nameLocation":"8827:5:89","nodeType":"VariableDeclaration","scope":36050,"src":"8819:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36034,"name":"uint256","nodeType":"ElementaryTypeName","src":"8819:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8804:29:89"},"returnParameters":{"id":36037,"nodeType":"ParameterList","parameters":[],"src":"8841:0:89"},"scope":38235,"src":"8757:180:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[513],"body":{"id":36160,"nodeType":"Block","src":"9026:1295:89","statements":[{"assignments":[36060],"declarations":[{"constant":false,"id":36060,"mutability":"mutable","name":"poolConfigBits","nameLocation":"9051:14:89","nodeType":"VariableDeclaration","scope":36160,"src":"9036:29:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":36059,"nodeType":"UserDefinedTypeName","pathNode":{"id":36058,"name":"PoolConfigBits","nameLocations":["9036:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"9036:14:89"},"referencedDeclaration":4364,"src":"9036:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"id":36064,"initialValue":{"baseExpression":{"id":36061,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"9068:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":36063,"indexExpression":{"id":36062,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36052,"src":"9084:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9068:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"VariableDeclarationStatement","src":"9036:53:89"},{"expression":{"id":36071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36065,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9100:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36068,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9155:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9167:25:89","memberName":"enableHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":4412,"src":"9155:37:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36066,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9117:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9132:22:89","memberName":"setHookAdjustedAmounts","nodeType":"MemberAccess","referencedDeclaration":27985,"src":"9117:37:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9117:76:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9100:93:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36072,"nodeType":"ExpressionStatement","src":"9100:93:89"},{"expression":{"id":36079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36073,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9203:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36076,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9265:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9277:26:89","memberName":"shouldCallBeforeInitialize","nodeType":"MemberAccess","referencedDeclaration":4414,"src":"9265:38:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36074,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9220:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9235:29:89","memberName":"setShouldCallBeforeInitialize","nodeType":"MemberAccess","referencedDeclaration":28028,"src":"9220:44:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9220:84:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9203:101:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36080,"nodeType":"ExpressionStatement","src":"9203:101:89"},{"expression":{"id":36087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36081,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9314:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36084,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9375:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9387:25:89","memberName":"shouldCallAfterInitialize","nodeType":"MemberAccess","referencedDeclaration":4416,"src":"9375:37:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36082,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9331:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9346:28:89","memberName":"setShouldCallAfterInitialize","nodeType":"MemberAccess","referencedDeclaration":28071,"src":"9331:43:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9331:82:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9314:99:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36088,"nodeType":"ExpressionStatement","src":"9314:99:89"},{"expression":{"id":36095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36089,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9423:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36092,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9490:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9502:31:89","memberName":"shouldCallComputeDynamicSwapFee","nodeType":"MemberAccess","referencedDeclaration":4418,"src":"9490:43:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36090,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9440:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9455:34:89","memberName":"setShouldCallComputeDynamicSwapFee","nodeType":"MemberAccess","referencedDeclaration":28114,"src":"9440:49:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9440:94:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9423:111:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36096,"nodeType":"ExpressionStatement","src":"9423:111:89"},{"expression":{"id":36103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36097,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9544:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36100,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9600:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9612:20:89","memberName":"shouldCallBeforeSwap","nodeType":"MemberAccess","referencedDeclaration":4420,"src":"9600:32:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36098,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9561:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9576:23:89","memberName":"setShouldCallBeforeSwap","nodeType":"MemberAccess","referencedDeclaration":28157,"src":"9561:38:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9561:72:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9544:89:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36104,"nodeType":"ExpressionStatement","src":"9544:89:89"},{"expression":{"id":36111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36105,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9643:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36108,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9698:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9710:19:89","memberName":"shouldCallAfterSwap","nodeType":"MemberAccess","referencedDeclaration":4422,"src":"9698:31:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36106,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9660:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9675:22:89","memberName":"setShouldCallAfterSwap","nodeType":"MemberAccess","referencedDeclaration":28200,"src":"9660:37:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9660:70:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9643:87:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36112,"nodeType":"ExpressionStatement","src":"9643:87:89"},{"expression":{"id":36119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36113,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9740:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36116,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9804:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9816:28:89","memberName":"shouldCallBeforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":4424,"src":"9804:40:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36114,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9757:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9772:31:89","memberName":"setShouldCallBeforeAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28243,"src":"9757:46:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9757:88:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9740:105:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36120,"nodeType":"ExpressionStatement","src":"9740:105:89"},{"expression":{"id":36127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36121,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9855:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36124,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"9918:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36125,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9930:27:89","memberName":"shouldCallAfterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":4426,"src":"9918:39:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36122,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9872:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9887:30:89","memberName":"setShouldCallAfterAddLiquidity","nodeType":"MemberAccess","referencedDeclaration":28286,"src":"9872:45:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9872:86:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9855:103:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36128,"nodeType":"ExpressionStatement","src":"9855:103:89"},{"expression":{"id":36135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36129,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9968:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36132,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"10035:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10047:31:89","memberName":"shouldCallBeforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":4428,"src":"10035:43:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36130,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"9985:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10000:34:89","memberName":"setShouldCallBeforeRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28329,"src":"9985:49:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9985:94:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"9968:111:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36136,"nodeType":"ExpressionStatement","src":"9968:111:89"},{"expression":{"id":36143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36137,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"10089:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36140,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"10155:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10167:30:89","memberName":"shouldCallAfterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":4430,"src":"10155:42:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":36138,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"10106:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10121:33:89","memberName":"setShouldCallAfterRemoveLiquidity","nodeType":"MemberAccess","referencedDeclaration":28372,"src":"10106:48:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_bool_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,bool) pure returns (PoolConfigBits)"}},"id":36142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10106:92:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"10089:109:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36144,"nodeType":"ExpressionStatement","src":"10089:109:89"},{"expression":{"id":36149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36145,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"10209:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":36147,"indexExpression":{"id":36146,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36052,"src":"10225:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10209:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":36148,"name":"poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36060,"src":"10233:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"10209:38:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36150,"nodeType":"ExpressionStatement","src":"10209:38:89"},{"expression":{"id":36158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36151,"name":"_hooksContracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27775,"src":"10257:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_contract$_IHooks_$1887_$","typeString":"mapping(address => contract IHooks)"}},"id":36153,"indexExpression":{"id":36152,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36052,"src":"10273:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10257:21:89","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36155,"name":"hooksConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36055,"src":"10288:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig memory"}},"id":36156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10300:13:89","memberName":"hooksContract","nodeType":"MemberAccess","referencedDeclaration":4432,"src":"10288:25:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36154,"name":"IHooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"10281:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IHooks_$1887_$","typeString":"type(contract IHooks)"}},"id":36157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10281:33:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"src":"10257:57:89","typeDescriptions":{"typeIdentifier":"t_contract$_IHooks_$1887","typeString":"contract IHooks"}},"id":36159,"nodeType":"ExpressionStatement","src":"10257:57:89"}]},"functionSelector":"c1fdcd62","id":36161,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetHooksConfig","nameLocation":"8952:20:89","nodeType":"FunctionDefinition","parameters":{"id":36056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36052,"mutability":"mutable","name":"pool","nameLocation":"8981:4:89","nodeType":"VariableDeclaration","scope":36161,"src":"8973:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36051,"name":"address","nodeType":"ElementaryTypeName","src":"8973:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36055,"mutability":"mutable","name":"hooksConfig","nameLocation":"9006:11:89","nodeType":"VariableDeclaration","scope":36161,"src":"8987:30:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_memory_ptr","typeString":"struct HooksConfig"},"typeName":{"id":36054,"nodeType":"UserDefinedTypeName","pathNode":{"id":36053,"name":"HooksConfig","nameLocations":["8987:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4433,"src":"8987:11:89"},"referencedDeclaration":4433,"src":"8987:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_HooksConfig_$4433_storage_ptr","typeString":"struct HooksConfig"}},"visibility":"internal"}],"src":"8972:46:89"},"returnParameters":{"id":36057,"nodeType":"ParameterList","parameters":[],"src":"9026:0:89"},"scope":38235,"src":"8943:1378:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[571],"body":{"id":36175,"nodeType":"Block","src":"10404:47:89","statements":[{"expression":{"id":36173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36169,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"10414:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":36171,"indexExpression":{"id":36170,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36163,"src":"10430:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10414:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":36172,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36166,"src":"10438:6:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"10414:30:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":36174,"nodeType":"ExpressionStatement","src":"10414:30:89"}]},"functionSelector":"df138458","id":36176,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolConfigBits","nameLocation":"10336:23:89","nodeType":"FunctionDefinition","parameters":{"id":36167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36163,"mutability":"mutable","name":"pool","nameLocation":"10368:4:89","nodeType":"VariableDeclaration","scope":36176,"src":"10360:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36162,"name":"address","nodeType":"ElementaryTypeName","src":"10360:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36166,"mutability":"mutable","name":"config","nameLocation":"10389:6:89","nodeType":"VariableDeclaration","scope":36176,"src":"10374:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":36165,"nodeType":"UserDefinedTypeName","pathNode":{"id":36164,"name":"PoolConfigBits","nameLocations":["10374:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"10374:14:89"},"referencedDeclaration":4364,"src":"10374:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"10359:37:89"},"returnParameters":{"id":36168,"nodeType":"ParameterList","parameters":[],"src":"10404:0:89"},"scope":38235,"src":"10327:124:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[484],"body":{"id":36222,"nodeType":"Block","src":"10544:333:89","statements":[{"body":{"id":36220,"nodeType":"Block","src":"10603:268:89","statements":[{"expression":{"id":36218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":36196,"name":"_poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27789,"src":"10617:14:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo storage ref))"}},"id":36202,"indexExpression":{"id":36197,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36178,"src":"10632:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10617:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},"id":36203,"indexExpression":{"expression":{"baseExpression":{"id":36198,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36182,"src":"10638:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36200,"indexExpression":{"id":36199,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36186,"src":"10650:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10638:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10653:5:89","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"10638:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10617:42:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"baseExpression":{"id":36205,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36182,"src":"10701:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36207,"indexExpression":{"id":36206,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36186,"src":"10713:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10701:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10716:9:89","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"10701:24:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},{"expression":{"baseExpression":{"id":36209,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36182,"src":"10757:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36211,"indexExpression":{"id":36210,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36186,"src":"10769:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10757:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10772:12:89","memberName":"rateProvider","nodeType":"MemberAccess","referencedDeclaration":4473,"src":"10757:27:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},{"expression":{"baseExpression":{"id":36213,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36182,"src":"10817:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36215,"indexExpression":{"id":36214,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36186,"src":"10829:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10817:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10832:13:89","memberName":"paysYieldFees","nodeType":"MemberAccess","referencedDeclaration":4475,"src":"10817:28:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"},{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":36204,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"10662:9:89","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TokenInfo_$4486_storage_ptr_$","typeString":"type(struct TokenInfo storage pointer)"}},"id":36217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10690:9:89","10743:12:89","10802:13:89"],"names":["tokenType","rateProvider","paysYieldFees"],"nodeType":"FunctionCall","src":"10662:198:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"src":"10617:243:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"id":36219,"nodeType":"ExpressionStatement","src":"10617:243:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36189,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36186,"src":"10574:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36190,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36182,"src":"10578:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10590:6:89","memberName":"length","nodeType":"MemberAccess","src":"10578:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10574:22:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36221,"initializationExpression":{"assignments":[36186],"declarations":[{"constant":false,"id":36186,"mutability":"mutable","name":"i","nameLocation":"10567:1:89","nodeType":"VariableDeclaration","scope":36221,"src":"10559:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36185,"name":"uint256","nodeType":"ElementaryTypeName","src":"10559:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36188,"initialValue":{"hexValue":"30","id":36187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10571:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10559:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10598:3:89","subExpression":{"id":36193,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36186,"src":"10600:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36195,"nodeType":"ExpressionStatement","src":"10598:3:89"},"nodeType":"ForStatement","src":"10554:317:89"}]},"functionSelector":"dab50579","id":36223,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolTokenInfo","nameLocation":"10466:22:89","nodeType":"FunctionDefinition","parameters":{"id":36183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36178,"mutability":"mutable","name":"pool","nameLocation":"10497:4:89","nodeType":"VariableDeclaration","scope":36223,"src":"10489:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36177,"name":"address","nodeType":"ElementaryTypeName","src":"10489:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36182,"mutability":"mutable","name":"tokenConfig","nameLocation":"10524:11:89","nodeType":"VariableDeclaration","scope":36223,"src":"10503:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":36180,"nodeType":"UserDefinedTypeName","pathNode":{"id":36179,"name":"TokenConfig","nameLocations":["10503:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"10503:11:89"},"referencedDeclaration":4476,"src":"10503:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36181,"nodeType":"ArrayTypeName","src":"10503:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"10488:48:89"},"returnParameters":{"id":36184,"nodeType":"ParameterList","parameters":[],"src":"10544:0:89"},"scope":38235,"src":"10457:420:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[497],"body":{"id":36261,"nodeType":"Block","src":"10990:131:89","statements":[{"body":{"id":36259,"nodeType":"Block","src":"11044:71:89","statements":[{"expression":{"id":36257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":36247,"name":"_poolTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27789,"src":"11058:14:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$_$","typeString":"mapping(address => mapping(contract IERC20 => struct TokenInfo storage ref))"}},"id":36252,"indexExpression":{"id":36248,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36225,"src":"11073:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11058:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_struct$_TokenInfo_$4486_storage_$","typeString":"mapping(contract IERC20 => struct TokenInfo storage ref)"}},"id":36253,"indexExpression":{"baseExpression":{"id":36249,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36229,"src":"11079:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36251,"indexExpression":{"id":36250,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36237,"src":"11086:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11079:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11058:31:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36254,"name":"tokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36233,"src":"11092:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo memory[] memory"}},"id":36256,"indexExpression":{"id":36255,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36237,"src":"11102:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11092:12:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_memory_ptr","typeString":"struct TokenInfo memory"}},"src":"11058:46:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage","typeString":"struct TokenInfo storage ref"}},"id":36258,"nodeType":"ExpressionStatement","src":"11058:46:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36240,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36237,"src":"11020:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36241,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36229,"src":"11024:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11031:6:89","memberName":"length","nodeType":"MemberAccess","src":"11024:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11020:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36260,"initializationExpression":{"assignments":[36237],"declarations":[{"constant":false,"id":36237,"mutability":"mutable","name":"i","nameLocation":"11013:1:89","nodeType":"VariableDeclaration","scope":36260,"src":"11005:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36236,"name":"uint256","nodeType":"ElementaryTypeName","src":"11005:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36239,"initialValue":{"hexValue":"30","id":36238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11017:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11005:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11039:3:89","subExpression":{"id":36244,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36237,"src":"11041:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36246,"nodeType":"ExpressionStatement","src":"11039:3:89"},"nodeType":"ForStatement","src":"11000:115:89"}]},"functionSelector":"bb14e466","id":36262,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolTokenInfo","nameLocation":"10892:22:89","nodeType":"FunctionDefinition","parameters":{"id":36234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36225,"mutability":"mutable","name":"pool","nameLocation":"10923:4:89","nodeType":"VariableDeclaration","scope":36262,"src":"10915:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36224,"name":"address","nodeType":"ElementaryTypeName","src":"10915:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36229,"mutability":"mutable","name":"tokens","nameLocation":"10945:6:89","nodeType":"VariableDeclaration","scope":36262,"src":"10929:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36227,"nodeType":"UserDefinedTypeName","pathNode":{"id":36226,"name":"IERC20","nameLocations":["10929:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"10929:6:89"},"referencedDeclaration":39274,"src":"10929:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36228,"nodeType":"ArrayTypeName","src":"10929:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":36233,"mutability":"mutable","name":"tokenInfo","nameLocation":"10972:9:89","nodeType":"VariableDeclaration","scope":36262,"src":"10953:28:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenInfo[]"},"typeName":{"baseType":{"id":36231,"nodeType":"UserDefinedTypeName","pathNode":{"id":36230,"name":"TokenInfo","nameLocations":["10953:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":4486,"src":"10953:9:89"},"referencedDeclaration":4486,"src":"10953:9:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenInfo_$4486_storage_ptr","typeString":"struct TokenInfo"}},"id":36232,"nodeType":"ArrayTypeName","src":"10953:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenInfo_$4486_storage_$dyn_storage_ptr","typeString":"struct TokenInfo[]"}},"visibility":"internal"}],"src":"10914:68:89"},"returnParameters":{"id":36235,"nodeType":"ParameterList","parameters":[],"src":"10990:0:89"},"scope":38235,"src":"10883:238:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[537],"body":{"id":36277,"nodeType":"Block","src":"11201:43:89","statements":[{"expression":{"id":36275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36271,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"11211:11:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":36273,"indexExpression":{"id":36272,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36264,"src":"11223:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11211:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":36274,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36268,"src":"11231:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"11211:26:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"id":36276,"nodeType":"ExpressionStatement","src":"11211:26:89"}]},"functionSelector":"82ea1749","id":36278,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolTokens","nameLocation":"11136:19:89","nodeType":"FunctionDefinition","parameters":{"id":36269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36264,"mutability":"mutable","name":"pool","nameLocation":"11164:4:89","nodeType":"VariableDeclaration","scope":36278,"src":"11156:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36263,"name":"address","nodeType":"ElementaryTypeName","src":"11156:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36268,"mutability":"mutable","name":"tokens","nameLocation":"11186:6:89","nodeType":"VariableDeclaration","scope":36278,"src":"11170:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36266,"nodeType":"UserDefinedTypeName","pathNode":{"id":36265,"name":"IERC20","nameLocations":["11170:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"11170:6:89"},"referencedDeclaration":39274,"src":"11170:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36267,"nodeType":"ArrayTypeName","src":"11170:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"11155:38:89"},"returnParameters":{"id":36270,"nodeType":"ParameterList","parameters":[],"src":"11201:0:89"},"scope":38235,"src":"11127:117:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[552],"body":{"id":36352,"nodeType":"Block","src":"11450:548:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":36294,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36284,"src":"11468:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11475:6:89","memberName":"length","nodeType":"MemberAccess","src":"11468:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":36296,"name":"tokenBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36287,"src":"11485:15:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11501:6:89","memberName":"length","nodeType":"MemberAccess","src":"11485:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11468:39:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5661756c744d6f636b3a20544f4b454e535f4c454e4754485f4d49534d41544348","id":36299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11509:35:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""},"value":"VaultMock: TOKENS_LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""}],"id":36293,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11460:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":36300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11460:85:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36301,"nodeType":"ExpressionStatement","src":"11460:85:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":36303,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36284,"src":"11563:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11570:6:89","memberName":"length","nodeType":"MemberAccess","src":"11563:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":36305,"name":"tokenBalanceLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36290,"src":"11580:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11605:6:89","memberName":"length","nodeType":"MemberAccess","src":"11580:31:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11563:48:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5661756c744d6f636b3a20544f4b454e535f4c454e4754485f4d49534d41544348","id":36308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11613:35:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""},"value":"VaultMock: TOKENS_LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""}],"id":36302,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11555:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":36309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11555:94:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36310,"nodeType":"ExpressionStatement","src":"11555:94:89"},{"assignments":[36314],"declarations":[{"constant":false,"id":36314,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"11726:17:89","nodeType":"VariableDeclaration","scope":36352,"src":"11660:83:89","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":36313,"keyName":"tokenIndex","keyNameLocation":"11676:10:89","keyType":{"id":36311,"name":"uint256","nodeType":"ElementaryTypeName","src":"11668:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"11660:57:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"11698:18:89","valueType":{"id":36312,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11690:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":36318,"initialValue":{"baseExpression":{"id":36315,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"11746:18:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":36317,"indexExpression":{"id":36316,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36280,"src":"11765:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11746:24:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"11660:110:89"},{"body":{"id":36344,"nodeType":"Block","src":"11824:131:89","statements":[{"expression":{"id":36342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36330,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36314,"src":"11838:17:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":36332,"indexExpression":{"id":36331,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36320,"src":"11856:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11838:20:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":36335,"name":"tokenBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36287,"src":"11896:15:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36337,"indexExpression":{"id":36336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36320,"src":"11912:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11896:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":36338,"name":"tokenBalanceLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36290,"src":"11916:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36340,"indexExpression":{"id":36339,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36320,"src":"11941:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11916:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":36333,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"11861:18:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":36334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11880:15:89","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"11861:34:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":36341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11861:83:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11838:106:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":36343,"nodeType":"ExpressionStatement","src":"11838:106:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36323,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36320,"src":"11800:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36324,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36284,"src":"11804:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11811:6:89","memberName":"length","nodeType":"MemberAccess","src":"11804:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11800:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36345,"initializationExpression":{"assignments":[36320],"declarations":[{"constant":false,"id":36320,"mutability":"mutable","name":"i","nameLocation":"11793:1:89","nodeType":"VariableDeclaration","scope":36345,"src":"11785:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36319,"name":"uint256","nodeType":"ElementaryTypeName","src":"11785:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36322,"initialValue":{"hexValue":"30","id":36321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11797:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11785:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11819:3:89","subExpression":{"id":36327,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36320,"src":"11821:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36329,"nodeType":"ExpressionStatement","src":"11819:3:89"},"nodeType":"ForStatement","src":"11780:175:89"},{"expression":{"id":36350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36346,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"11965:11:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":36348,"indexExpression":{"id":36347,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36280,"src":"11977:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11965:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":36349,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36284,"src":"11985:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"11965:26:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"id":36351,"nodeType":"ExpressionStatement","src":"11965:26:89"}]},"functionSelector":"d8f4cf3c","id":36353,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolTokensAndBalances","nameLocation":"11259:30:89","nodeType":"FunctionDefinition","parameters":{"id":36291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36280,"mutability":"mutable","name":"pool","nameLocation":"11307:4:89","nodeType":"VariableDeclaration","scope":36353,"src":"11299:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36279,"name":"address","nodeType":"ElementaryTypeName","src":"11299:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36284,"mutability":"mutable","name":"tokens","nameLocation":"11337:6:89","nodeType":"VariableDeclaration","scope":36353,"src":"11321:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36282,"nodeType":"UserDefinedTypeName","pathNode":{"id":36281,"name":"IERC20","nameLocations":["11321:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"11321:6:89"},"referencedDeclaration":39274,"src":"11321:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36283,"nodeType":"ArrayTypeName","src":"11321:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":36287,"mutability":"mutable","name":"tokenBalanceRaw","nameLocation":"11370:15:89","nodeType":"VariableDeclaration","scope":36353,"src":"11353:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":36285,"name":"uint256","nodeType":"ElementaryTypeName","src":"11353:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36286,"nodeType":"ArrayTypeName","src":"11353:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":36290,"mutability":"mutable","name":"tokenBalanceLiveScaled18","nameLocation":"11412:24:89","nodeType":"VariableDeclaration","scope":36353,"src":"11395:41:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":36288,"name":"uint256","nodeType":"ElementaryTypeName","src":"11395:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36289,"nodeType":"ArrayTypeName","src":"11395:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"11289:153:89"},"returnParameters":{"id":36292,"nodeType":"ParameterList","parameters":[],"src":"11450:0:89"},"scope":38235,"src":"11250:748:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[563],"body":{"id":36426,"nodeType":"Block","src":"12163:564:89","statements":[{"assignments":[36368],"declarations":[{"constant":false,"id":36368,"mutability":"mutable","name":"tokens","nameLocation":"12189:6:89","nodeType":"VariableDeclaration","scope":36426,"src":"12173:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36366,"nodeType":"UserDefinedTypeName","pathNode":{"id":36365,"name":"IERC20","nameLocations":["12173:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"12173:6:89"},"referencedDeclaration":39274,"src":"12173:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36367,"nodeType":"ArrayTypeName","src":"12173:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":36372,"initialValue":{"baseExpression":{"id":36369,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"12198:11:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":36371,"indexExpression":{"id":36370,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36355,"src":"12210:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12198:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12173:42:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":36374,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36368,"src":"12234:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12241:6:89","memberName":"length","nodeType":"MemberAccess","src":"12234:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":36376,"name":"tokenBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36358,"src":"12251:15:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12267:6:89","memberName":"length","nodeType":"MemberAccess","src":"12251:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12234:39:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5661756c744d6f636b3a20544f4b454e535f4c454e4754485f4d49534d41544348","id":36379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12275:35:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""},"value":"VaultMock: TOKENS_LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""}],"id":36373,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12226:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":36380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12226:85:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36381,"nodeType":"ExpressionStatement","src":"12226:85:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":36383,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36368,"src":"12329:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12336:6:89","memberName":"length","nodeType":"MemberAccess","src":"12329:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":36385,"name":"tokenBalanceLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36361,"src":"12346:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12371:6:89","memberName":"length","nodeType":"MemberAccess","src":"12346:31:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12329:48:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5661756c744d6f636b3a20544f4b454e535f4c454e4754485f4d49534d41544348","id":36388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12379:35:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""},"value":"VaultMock: TOKENS_LENGTH_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_555bd15dadb44885befa5fe3e8929f2f3fcdd2ca54281806331989322e4413b1","typeString":"literal_string \"VaultMock: TOKENS_LENGTH_MISMATCH\""}],"id":36382,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12321:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":36389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12321:94:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36390,"nodeType":"ExpressionStatement","src":"12321:94:89"},{"assignments":[36394],"declarations":[{"constant":false,"id":36394,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"12492:17:89","nodeType":"VariableDeclaration","scope":36426,"src":"12426:83:89","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":36393,"keyName":"tokenIndex","keyNameLocation":"12442:10:89","keyType":{"id":36391,"name":"uint256","nodeType":"ElementaryTypeName","src":"12434:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"12426:57:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"12464:18:89","valueType":{"id":36392,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12456:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":36398,"initialValue":{"baseExpression":{"id":36395,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"12512:18:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":36397,"indexExpression":{"id":36396,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36355,"src":"12531:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12512:24:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"12426:110:89"},{"body":{"id":36424,"nodeType":"Block","src":"12590:131:89","statements":[{"expression":{"id":36422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36410,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36394,"src":"12604:17:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":36412,"indexExpression":{"id":36411,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36400,"src":"12622:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12604:20:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":36415,"name":"tokenBalanceRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36358,"src":"12662:15:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36417,"indexExpression":{"id":36416,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36400,"src":"12678:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12662:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":36418,"name":"tokenBalanceLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36361,"src":"12682:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36420,"indexExpression":{"id":36419,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36400,"src":"12707:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12682:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":36413,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"12627:18:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":36414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12646:15:89","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"12627:34:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":36421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12627:83:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12604:106:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":36423,"nodeType":"ExpressionStatement","src":"12604:106:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36403,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36400,"src":"12566:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36404,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36368,"src":"12570:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12577:6:89","memberName":"length","nodeType":"MemberAccess","src":"12570:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12566:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36425,"initializationExpression":{"assignments":[36400],"declarations":[{"constant":false,"id":36400,"mutability":"mutable","name":"i","nameLocation":"12559:1:89","nodeType":"VariableDeclaration","scope":36425,"src":"12551:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36399,"name":"uint256","nodeType":"ElementaryTypeName","src":"12551:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36402,"initialValue":{"hexValue":"30","id":36401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12563:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12551:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12585:3:89","subExpression":{"id":36407,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36400,"src":"12587:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36409,"nodeType":"ExpressionStatement","src":"12585:3:89"},"nodeType":"ForStatement","src":"12546:175:89"}]},"functionSelector":"1c4e1e23","id":36427,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolBalances","nameLocation":"12013:21:89","nodeType":"FunctionDefinition","parameters":{"id":36362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36355,"mutability":"mutable","name":"pool","nameLocation":"12052:4:89","nodeType":"VariableDeclaration","scope":36427,"src":"12044:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36354,"name":"address","nodeType":"ElementaryTypeName","src":"12044:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36358,"mutability":"mutable","name":"tokenBalanceRaw","nameLocation":"12083:15:89","nodeType":"VariableDeclaration","scope":36427,"src":"12066:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":36356,"name":"uint256","nodeType":"ElementaryTypeName","src":"12066:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36357,"nodeType":"ArrayTypeName","src":"12066:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":36361,"mutability":"mutable","name":"tokenBalanceLiveScaled18","nameLocation":"12125:24:89","nodeType":"VariableDeclaration","scope":36427,"src":"12108:41:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":36359,"name":"uint256","nodeType":"ElementaryTypeName","src":"12108:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36360,"nodeType":"ArrayTypeName","src":"12108:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12034:121:89"},"returnParameters":{"id":36363,"nodeType":"ParameterList","parameters":[],"src":"12163:0:89"},"scope":38235,"src":"12004:723:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[574],"body":{"id":36432,"nodeType":"Block","src":"12788:2:89","statements":[]},"functionSelector":"b8caceee","id":36433,"implemented":true,"kind":"function","modifiers":[{"id":36430,"kind":"modifierInvocation","modifierName":{"id":36429,"name":"onlyWhenUnlocked","nameLocations":["12771:16:89"],"nodeType":"IdentifierPath","referencedDeclaration":24387,"src":"12771:16:89"},"nodeType":"ModifierInvocation","src":"12771:16:89"}],"name":"mockIsUnlocked","nameLocation":"12742:14:89","nodeType":"FunctionDefinition","parameters":{"id":36428,"nodeType":"ParameterList","parameters":[],"src":"12756:2:89"},"returnParameters":{"id":36431,"nodeType":"ParameterList","parameters":[],"src":"12788:0:89"},"scope":38235,"src":"12733:57:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[579],"body":{"id":36441,"nodeType":"Block","src":"12881:2:89","statements":[]},"functionSelector":"62691e5f","id":36442,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":36438,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36435,"src":"12875:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":36439,"kind":"modifierInvocation","modifierName":{"id":36437,"name":"withInitializedPool","nameLocations":["12855:19:89"],"nodeType":"IdentifierPath","referencedDeclaration":24670,"src":"12855:19:89"},"nodeType":"ModifierInvocation","src":"12855:25:89"}],"name":"mockWithInitializedPool","nameLocation":"12805:23:89","nodeType":"FunctionDefinition","parameters":{"id":36436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36435,"mutability":"mutable","name":"pool","nameLocation":"12837:4:89","nodeType":"VariableDeclaration","scope":36442,"src":"12829:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36434,"name":"address","nodeType":"ElementaryTypeName","src":"12829:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12828:14:89"},"returnParameters":{"id":36440,"nodeType":"ParameterList","parameters":[],"src":"12881:0:89"},"scope":38235,"src":"12796:87:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[584],"body":{"id":36451,"nodeType":"Block","src":"12944:43:89","statements":[{"expression":{"arguments":[{"id":36448,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36444,"src":"12975:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36447,"name":"_ensurePoolNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24569,"src":"12954:20:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":36449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12954:26:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36450,"nodeType":"ExpressionStatement","src":"12954:26:89"}]},"functionSelector":"02e1a4aa","id":36452,"implemented":true,"kind":"function","modifiers":[],"name":"ensurePoolNotPaused","nameLocation":"12898:19:89","nodeType":"FunctionDefinition","parameters":{"id":36445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36444,"mutability":"mutable","name":"pool","nameLocation":"12926:4:89","nodeType":"VariableDeclaration","scope":36452,"src":"12918:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36443,"name":"address","nodeType":"ElementaryTypeName","src":"12918:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12917:14:89"},"returnParameters":{"id":36446,"nodeType":"ParameterList","parameters":[],"src":"12944:0:89"},"scope":38235,"src":"12889:98:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[592],"body":{"id":36483,"nodeType":"Block","src":"13098:291:89","statements":[{"expression":{"arguments":[{"id":36461,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36454,"src":"13124:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36460,"name":"_ensureUnpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24537,"src":"13108:15:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":36462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13108:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36463,"nodeType":"ExpressionStatement","src":"13108:21:89"},{"assignments":[36466],"declarations":[{"constant":false,"id":36466,"mutability":"mutable","name":"state","nameLocation":"13154:5:89","nodeType":"VariableDeclaration","scope":36483,"src":"13139:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"},"typeName":{"id":36465,"nodeType":"UserDefinedTypeName","pathNode":{"id":36464,"name":"VaultStateBits","nameLocations":["13139:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":30607,"src":"13139:14:89"},"referencedDeclaration":30607,"src":"13139:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"visibility":"internal"}],"id":36468,"initialValue":{"id":36467,"name":"_vaultStateBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27811,"src":"13162:15:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"nodeType":"VariableDeclarationStatement","src":"13139:38:89"},{"expression":{"id":36481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36469,"name":"vaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36458,"src":"13187:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_memory_ptr","typeString":"struct VaultState memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":36471,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36466,"src":"13242:5:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":36472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13248:15:89","memberName":"isQueryDisabled","nodeType":"MemberAccess","referencedDeclaration":30641,"src":"13242:21:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":36473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13242:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":36474,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36466,"src":"13294:5:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":36475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13300:13:89","memberName":"isVaultPaused","nodeType":"MemberAccess","referencedDeclaration":30682,"src":"13294:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":36476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13294:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":36477,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36466,"src":"13347:5:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_VaultStateBits_$30607","typeString":"VaultStateBits"}},"id":36478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13353:16:89","memberName":"areBuffersPaused","nodeType":"MemberAccess","referencedDeclaration":30723,"src":"13347:22:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_VaultStateBits_$30607_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_VaultStateBits_$30607_$","typeString":"function (VaultStateBits) pure returns (bool)"}},"id":36479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13347:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":36470,"name":"VaultState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4451,"src":"13200:10:89","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_VaultState_$4451_storage_ptr_$","typeString":"type(struct VaultState storage pointer)"}},"id":36480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["13225:15:89","13279:13:89","13329:16:89"],"names":["isQueryDisabled","isVaultPaused","areBuffersPaused"],"nodeType":"FunctionCall","src":"13200:182:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_memory_ptr","typeString":"struct VaultState memory"}},"src":"13187:195:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_memory_ptr","typeString":"struct VaultState memory"}},"id":36482,"nodeType":"ExpressionStatement","src":"13187:195:89"}]},"functionSelector":"e460a8a9","id":36484,"implemented":true,"kind":"function","modifiers":[],"name":"ensureUnpausedAndGetVaultState","nameLocation":"13002:30:89","nodeType":"FunctionDefinition","parameters":{"id":36455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36454,"mutability":"mutable","name":"pool","nameLocation":"13041:4:89","nodeType":"VariableDeclaration","scope":36484,"src":"13033:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36453,"name":"address","nodeType":"ElementaryTypeName","src":"13033:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13032:14:89"},"returnParameters":{"id":36459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36458,"mutability":"mutable","name":"vaultState","nameLocation":"13086:10:89","nodeType":"VariableDeclaration","scope":36484,"src":"13068:28:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_memory_ptr","typeString":"struct VaultState"},"typeName":{"id":36457,"nodeType":"UserDefinedTypeName","pathNode":{"id":36456,"name":"VaultState","nameLocations":["13068:10:89"],"nodeType":"IdentifierPath","referencedDeclaration":4451,"src":"13068:10:89"},"referencedDeclaration":4451,"src":"13068:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultState_$4451_storage_ptr","typeString":"struct VaultState"}},"visibility":"internal"}],"src":"13067:30:89"},"scope":38235,"src":"12993:396:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[714],"body":{"id":36534,"nodeType":"Block","src":"13500:244:89","statements":[{"expression":{"id":36503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36495,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36493,"src":"13510:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36500,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36488,"src":"13542:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13549:6:89","memberName":"length","nodeType":"MemberAccess","src":"13542:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13524:17:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenConfig memory[] memory)"},"typeName":{"baseType":{"id":36497,"nodeType":"UserDefinedTypeName","pathNode":{"id":36496,"name":"TokenConfig","nameLocations":["13528:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"13528:11:89"},"referencedDeclaration":4476,"src":"13528:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36498,"nodeType":"ArrayTypeName","src":"13528:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}}},"id":36502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13524:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"13510:46:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36504,"nodeType":"ExpressionStatement","src":"13510:46:89"},{"body":{"id":36525,"nodeType":"Block","src":"13610:57:89","statements":[{"expression":{"id":36523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36516,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36493,"src":"13624:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36518,"indexExpression":{"id":36517,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36506,"src":"13636:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13624:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13639:5:89","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"13624:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36520,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36488,"src":"13647:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36522,"indexExpression":{"id":36521,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36506,"src":"13654:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13647:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"13624:32:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36524,"nodeType":"ExpressionStatement","src":"13624:32:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36509,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36506,"src":"13586:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36510,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36488,"src":"13590:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13597:6:89","memberName":"length","nodeType":"MemberAccess","src":"13590:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13586:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36526,"initializationExpression":{"assignments":[36506],"declarations":[{"constant":false,"id":36506,"mutability":"mutable","name":"i","nameLocation":"13579:1:89","nodeType":"VariableDeclaration","scope":36526,"src":"13571:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36505,"name":"uint256","nodeType":"ElementaryTypeName","src":"13571:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36508,"initialValue":{"hexValue":"30","id":36507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13583:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13571:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13605:3:89","subExpression":{"id":36513,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36506,"src":"13607:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36515,"nodeType":"ExpressionStatement","src":"13605:3:89"},"nodeType":"ForStatement","src":"13566:101:89"},{"expression":{"id":36532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36527,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36493,"src":"13677:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":36530,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36493,"src":"13725:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}],"expression":{"id":36528,"name":"_inputHelpersMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35505,"src":"13691:17:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"id":36529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13709:15:89","memberName":"sortTokenConfig","nodeType":"MemberAccess","referencedDeclaration":31489,"src":"13691:33:89","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (struct TokenConfig memory[] memory) pure external returns (struct TokenConfig memory[] memory)"}},"id":36531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13691:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"13677:60:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36533,"nodeType":"ExpressionStatement","src":"13677:60:89"}]},"functionSelector":"24e7176b","id":36535,"implemented":true,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"13404:16:89","nodeType":"FunctionDefinition","parameters":{"id":36489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36488,"mutability":"mutable","name":"tokens","nameLocation":"13437:6:89","nodeType":"VariableDeclaration","scope":36535,"src":"13421:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36486,"nodeType":"UserDefinedTypeName","pathNode":{"id":36485,"name":"IERC20","nameLocations":["13421:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"13421:6:89"},"referencedDeclaration":39274,"src":"13421:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36487,"nodeType":"ArrayTypeName","src":"13421:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"13420:24:89"},"returnParameters":{"id":36494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36493,"mutability":"mutable","name":"tokenConfig","nameLocation":"13487:11:89","nodeType":"VariableDeclaration","scope":36535,"src":"13466:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":36491,"nodeType":"UserDefinedTypeName","pathNode":{"id":36490,"name":"TokenConfig","nameLocations":["13466:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"13466:11:89"},"referencedDeclaration":4476,"src":"13466:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36492,"nodeType":"ArrayTypeName","src":"13466:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"13465:34:89"},"scope":38235,"src":"13395:349:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[730],"body":{"id":36619,"nodeType":"Block","src":"13915:465:89","statements":[{"expression":{"id":36558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36550,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36548,"src":"13925:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36555,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36539,"src":"13957:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13964:6:89","memberName":"length","nodeType":"MemberAccess","src":"13957:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13939:17:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenConfig memory[] memory)"},"typeName":{"baseType":{"id":36552,"nodeType":"UserDefinedTypeName","pathNode":{"id":36551,"name":"TokenConfig","nameLocations":["13943:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"13943:11:89"},"referencedDeclaration":4476,"src":"13943:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36553,"nodeType":"ArrayTypeName","src":"13943:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}}},"id":36557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13939:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"13925:46:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36559,"nodeType":"ExpressionStatement","src":"13925:46:89"},{"body":{"id":36610,"nodeType":"Block","src":"14025:278:89","statements":[{"expression":{"id":36578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36571,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36548,"src":"14039:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36573,"indexExpression":{"id":36572,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14051:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14039:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14054:5:89","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"14039:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36575,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36539,"src":"14062:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36577,"indexExpression":{"id":36576,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14069:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14062:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"14039:32:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36579,"nodeType":"ExpressionStatement","src":"14039:32:89"},{"expression":{"id":36587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36580,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36548,"src":"14085:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36582,"indexExpression":{"id":36581,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14097:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14085:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14100:12:89","memberName":"rateProvider","nodeType":"MemberAccess","referencedDeclaration":4473,"src":"14085:27:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36584,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36543,"src":"14115:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":36586,"indexExpression":{"id":36585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14129:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14115:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"src":"14085:46:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":36588,"nodeType":"ExpressionStatement","src":"14085:46:89"},{"expression":{"id":36608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36589,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36548,"src":"14145:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36591,"indexExpression":{"id":36590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14157:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14145:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14160:9:89","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"14145:24:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"},"id":36602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":36593,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36543,"src":"14172:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":36595,"indexExpression":{"id":36594,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14186:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14172:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":36599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14214:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":36598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14206:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":36597,"name":"address","nodeType":"ElementaryTypeName","src":"14206:7:89","typeDescriptions":{}}},"id":36600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14206:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36596,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"14192:13:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProvider_$150_$","typeString":"type(contract IRateProvider)"}},"id":36601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14192:25:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"src":"14172:45:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":36605,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"14273:9:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":36606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14283:9:89","memberName":"WITH_RATE","nodeType":"MemberAccess","referencedDeclaration":4462,"src":"14273:19:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"id":36607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14172:120:89","trueExpression":{"expression":{"id":36603,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"14236:9:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":36604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14246:8:89","memberName":"STANDARD","nodeType":"MemberAccess","referencedDeclaration":4461,"src":"14236:18:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"14145:147:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"id":36609,"nodeType":"ExpressionStatement","src":"14145:147:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36564,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14001:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36565,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36539,"src":"14005:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14012:6:89","memberName":"length","nodeType":"MemberAccess","src":"14005:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14001:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36611,"initializationExpression":{"assignments":[36561],"declarations":[{"constant":false,"id":36561,"mutability":"mutable","name":"i","nameLocation":"13994:1:89","nodeType":"VariableDeclaration","scope":36611,"src":"13986:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36560,"name":"uint256","nodeType":"ElementaryTypeName","src":"13986:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36563,"initialValue":{"hexValue":"30","id":36562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13986:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14020:3:89","subExpression":{"id":36568,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36561,"src":"14022:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36570,"nodeType":"ExpressionStatement","src":"14020:3:89"},"nodeType":"ForStatement","src":"13981:322:89"},{"expression":{"id":36617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36612,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36548,"src":"14313:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":36615,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36548,"src":"14361:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}],"expression":{"id":36613,"name":"_inputHelpersMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35505,"src":"14327:17:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"id":36614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14345:15:89","memberName":"sortTokenConfig","nodeType":"MemberAccess","referencedDeclaration":31489,"src":"14327:33:89","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (struct TokenConfig memory[] memory) pure external returns (struct TokenConfig memory[] memory)"}},"id":36616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14327:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"14313:60:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36618,"nodeType":"ExpressionStatement","src":"14313:60:89"}]},"functionSelector":"5f70f542","id":36620,"implemented":true,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"13759:16:89","nodeType":"FunctionDefinition","parameters":{"id":36544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36539,"mutability":"mutable","name":"tokens","nameLocation":"13801:6:89","nodeType":"VariableDeclaration","scope":36620,"src":"13785:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36537,"nodeType":"UserDefinedTypeName","pathNode":{"id":36536,"name":"IERC20","nameLocations":["13785:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"13785:6:89"},"referencedDeclaration":39274,"src":"13785:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36538,"nodeType":"ArrayTypeName","src":"13785:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":36543,"mutability":"mutable","name":"rateProviders","nameLocation":"13840:13:89","nodeType":"VariableDeclaration","scope":36620,"src":"13817:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":36541,"nodeType":"UserDefinedTypeName","pathNode":{"id":36540,"name":"IRateProvider","nameLocations":["13817:13:89"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"13817:13:89"},"referencedDeclaration":150,"src":"13817:13:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":36542,"nodeType":"ArrayTypeName","src":"13817:15:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"13775:84:89"},"returnParameters":{"id":36549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36548,"mutability":"mutable","name":"tokenConfig","nameLocation":"13902:11:89","nodeType":"VariableDeclaration","scope":36620,"src":"13881:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":36546,"nodeType":"UserDefinedTypeName","pathNode":{"id":36545,"name":"TokenConfig","nameLocations":["13881:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"13881:11:89"},"referencedDeclaration":4476,"src":"13881:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36547,"nodeType":"ArrayTypeName","src":"13881:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"13880:34:89"},"scope":38235,"src":"13750:630:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[749],"body":{"id":36716,"nodeType":"Block","src":"14588:526:89","statements":[{"expression":{"id":36646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36638,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36636,"src":"14598:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36643,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36624,"src":"14630:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14637:6:89","memberName":"length","nodeType":"MemberAccess","src":"14630:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14612:17:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenConfig memory[] memory)"},"typeName":{"baseType":{"id":36640,"nodeType":"UserDefinedTypeName","pathNode":{"id":36639,"name":"TokenConfig","nameLocations":["14616:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"14616:11:89"},"referencedDeclaration":4476,"src":"14616:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36641,"nodeType":"ArrayTypeName","src":"14616:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}}},"id":36645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14612:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"14598:46:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36647,"nodeType":"ExpressionStatement","src":"14598:46:89"},{"body":{"id":36707,"nodeType":"Block","src":"14698:339:89","statements":[{"expression":{"id":36666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36659,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36636,"src":"14712:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36661,"indexExpression":{"id":36660,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14724:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14712:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14727:5:89","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"14712:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36663,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36624,"src":"14735:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36665,"indexExpression":{"id":36664,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14742:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14735:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"14712:32:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36667,"nodeType":"ExpressionStatement","src":"14712:32:89"},{"expression":{"id":36675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36668,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36636,"src":"14758:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36670,"indexExpression":{"id":36669,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14770:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14758:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14773:12:89","memberName":"rateProvider","nodeType":"MemberAccess","referencedDeclaration":4473,"src":"14758:27:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36672,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36628,"src":"14788:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":36674,"indexExpression":{"id":36673,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14802:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14788:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"src":"14758:46:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":36676,"nodeType":"ExpressionStatement","src":"14758:46:89"},{"expression":{"id":36696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36677,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36636,"src":"14818:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36679,"indexExpression":{"id":36678,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14830:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14818:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14833:9:89","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"14818:24:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"},"id":36690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":36681,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36628,"src":"14845:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":36683,"indexExpression":{"id":36682,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14859:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14845:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":36687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14887:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":36686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14879:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":36685,"name":"address","nodeType":"ElementaryTypeName","src":"14879:7:89","typeDescriptions":{}}},"id":36688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14879:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":36684,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"14865:13:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProvider_$150_$","typeString":"type(contract IRateProvider)"}},"id":36689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14865:25:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"src":"14845:45:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":36693,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"14946:9:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":36694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14956:9:89","memberName":"WITH_RATE","nodeType":"MemberAccess","referencedDeclaration":4462,"src":"14946:19:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"id":36695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14845:120:89","trueExpression":{"expression":{"id":36691,"name":"TokenType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4463,"src":"14909:9:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TokenType_$4463_$","typeString":"type(enum TokenType)"}},"id":36692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14919:8:89","memberName":"STANDARD","nodeType":"MemberAccess","referencedDeclaration":4461,"src":"14909:18:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"14818:147:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"id":36697,"nodeType":"ExpressionStatement","src":"14818:147:89"},{"expression":{"id":36705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36698,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36636,"src":"14979:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36700,"indexExpression":{"id":36699,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14991:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14979:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14994:13:89","memberName":"paysYieldFees","nodeType":"MemberAccess","referencedDeclaration":4475,"src":"14979:28:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36702,"name":"yieldFeeFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36631,"src":"15010:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":36704,"indexExpression":{"id":36703,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"15024:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15010:16:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14979:47:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36706,"nodeType":"ExpressionStatement","src":"14979:47:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36652,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14674:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36653,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36624,"src":"14678:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14685:6:89","memberName":"length","nodeType":"MemberAccess","src":"14678:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14674:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36708,"initializationExpression":{"assignments":[36649],"declarations":[{"constant":false,"id":36649,"mutability":"mutable","name":"i","nameLocation":"14667:1:89","nodeType":"VariableDeclaration","scope":36708,"src":"14659:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36648,"name":"uint256","nodeType":"ElementaryTypeName","src":"14659:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36651,"initialValue":{"hexValue":"30","id":36650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14671:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14659:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14693:3:89","subExpression":{"id":36656,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36649,"src":"14695:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36658,"nodeType":"ExpressionStatement","src":"14693:3:89"},"nodeType":"ForStatement","src":"14654:383:89"},{"expression":{"id":36714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36709,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36636,"src":"15047:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":36712,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36636,"src":"15095:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}],"expression":{"id":36710,"name":"_inputHelpersMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35505,"src":"15061:17:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"id":36711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15079:15:89","memberName":"sortTokenConfig","nodeType":"MemberAccess","referencedDeclaration":31489,"src":"15061:33:89","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (struct TokenConfig memory[] memory) pure external returns (struct TokenConfig memory[] memory)"}},"id":36713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15061:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"15047:60:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36715,"nodeType":"ExpressionStatement","src":"15047:60:89"}]},"functionSelector":"e5948689","id":36717,"implemented":true,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"14395:16:89","nodeType":"FunctionDefinition","parameters":{"id":36632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36624,"mutability":"mutable","name":"tokens","nameLocation":"14437:6:89","nodeType":"VariableDeclaration","scope":36717,"src":"14421:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36622,"nodeType":"UserDefinedTypeName","pathNode":{"id":36621,"name":"IERC20","nameLocations":["14421:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"14421:6:89"},"referencedDeclaration":39274,"src":"14421:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36623,"nodeType":"ArrayTypeName","src":"14421:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":36628,"mutability":"mutable","name":"rateProviders","nameLocation":"14476:13:89","nodeType":"VariableDeclaration","scope":36717,"src":"14453:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":36626,"nodeType":"UserDefinedTypeName","pathNode":{"id":36625,"name":"IRateProvider","nameLocations":["14453:13:89"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"14453:13:89"},"referencedDeclaration":150,"src":"14453:13:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":36627,"nodeType":"ArrayTypeName","src":"14453:15:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"},{"constant":false,"id":36631,"mutability":"mutable","name":"yieldFeeFlags","nameLocation":"14513:13:89","nodeType":"VariableDeclaration","scope":36717,"src":"14499:27:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":36629,"name":"bool","nodeType":"ElementaryTypeName","src":"14499:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36630,"nodeType":"ArrayTypeName","src":"14499:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"14411:121:89"},"returnParameters":{"id":36637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36636,"mutability":"mutable","name":"tokenConfig","nameLocation":"14575:11:89","nodeType":"VariableDeclaration","scope":36717,"src":"14554:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":36634,"nodeType":"UserDefinedTypeName","pathNode":{"id":36633,"name":"TokenConfig","nameLocations":["14554:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"14554:11:89"},"referencedDeclaration":4476,"src":"14554:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36635,"nodeType":"ArrayTypeName","src":"14554:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"14553:34:89"},"scope":38235,"src":"14386:728:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[771],"body":{"id":36805,"nodeType":"Block","src":"15361:419:89","statements":[{"expression":{"id":36747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36739,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36737,"src":"15371:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":36744,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36721,"src":"15403:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15410:6:89","memberName":"length","nodeType":"MemberAccess","src":"15403:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15385:17:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenConfig memory[] memory)"},"typeName":{"baseType":{"id":36741,"nodeType":"UserDefinedTypeName","pathNode":{"id":36740,"name":"TokenConfig","nameLocations":["15389:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"15389:11:89"},"referencedDeclaration":4476,"src":"15389:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36742,"nodeType":"ArrayTypeName","src":"15389:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}}},"id":36746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15385:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"15371:46:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36748,"nodeType":"ExpressionStatement","src":"15371:46:89"},{"body":{"id":36796,"nodeType":"Block","src":"15471:232:89","statements":[{"expression":{"id":36767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36760,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36737,"src":"15485:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36762,"indexExpression":{"id":36761,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15497:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15485:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15500:5:89","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"15485:20:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36764,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36721,"src":"15508:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36766,"indexExpression":{"id":36765,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15515:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15508:9:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"15485:32:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36768,"nodeType":"ExpressionStatement","src":"15485:32:89"},{"expression":{"id":36776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36769,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36737,"src":"15531:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36771,"indexExpression":{"id":36770,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15543:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15531:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15546:9:89","memberName":"tokenType","nodeType":"MemberAccess","referencedDeclaration":4470,"src":"15531:24:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36773,"name":"tokenTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36725,"src":"15558:10:89","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TokenType_$4463_$dyn_memory_ptr","typeString":"enum TokenType[] memory"}},"id":36775,"indexExpression":{"id":36774,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15569:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15558:13:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"src":"15531:40:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"id":36777,"nodeType":"ExpressionStatement","src":"15531:40:89"},{"expression":{"id":36785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36778,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36737,"src":"15585:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36780,"indexExpression":{"id":36779,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15597:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15585:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15600:12:89","memberName":"rateProvider","nodeType":"MemberAccess","referencedDeclaration":4473,"src":"15585:27:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36782,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36729,"src":"15615:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":36784,"indexExpression":{"id":36783,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15629:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15615:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"src":"15585:46:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":36786,"nodeType":"ExpressionStatement","src":"15585:46:89"},{"expression":{"id":36794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":36787,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36737,"src":"15645:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36789,"indexExpression":{"id":36788,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15657:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15645:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":36790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15660:13:89","memberName":"paysYieldFees","nodeType":"MemberAccess","referencedDeclaration":4475,"src":"15645:28:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":36791,"name":"yieldFeeFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36732,"src":"15676:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":36793,"indexExpression":{"id":36792,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15690:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15676:16:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15645:47:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36795,"nodeType":"ExpressionStatement","src":"15645:47:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15447:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":36754,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36721,"src":"15451:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":36755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15458:6:89","memberName":"length","nodeType":"MemberAccess","src":"15451:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15447:17:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36797,"initializationExpression":{"assignments":[36750],"declarations":[{"constant":false,"id":36750,"mutability":"mutable","name":"i","nameLocation":"15440:1:89","nodeType":"VariableDeclaration","scope":36797,"src":"15432:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36749,"name":"uint256","nodeType":"ElementaryTypeName","src":"15432:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36752,"initialValue":{"hexValue":"30","id":36751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15444:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15432:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15466:3:89","subExpression":{"id":36757,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36750,"src":"15468:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36759,"nodeType":"ExpressionStatement","src":"15466:3:89"},"nodeType":"ForStatement","src":"15427:276:89"},{"expression":{"id":36803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36798,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36737,"src":"15713:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":36801,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36737,"src":"15761:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}],"expression":{"id":36799,"name":"_inputHelpersMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35505,"src":"15727:17:89","typeDescriptions":{"typeIdentifier":"t_contract$_InputHelpersMock_$31490","typeString":"contract InputHelpersMock"}},"id":36800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15745:15:89","memberName":"sortTokenConfig","nodeType":"MemberAccess","referencedDeclaration":31489,"src":"15727:33:89","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (struct TokenConfig memory[] memory) pure external returns (struct TokenConfig memory[] memory)"}},"id":36802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15727:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"src":"15713:60:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":36804,"nodeType":"ExpressionStatement","src":"15713:60:89"}]},"functionSelector":"608256f7","id":36806,"implemented":true,"kind":"function","modifiers":[],"name":"buildTokenConfig","nameLocation":"15129:16:89","nodeType":"FunctionDefinition","parameters":{"id":36733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36721,"mutability":"mutable","name":"tokens","nameLocation":"15171:6:89","nodeType":"VariableDeclaration","scope":36806,"src":"15155:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":36719,"nodeType":"UserDefinedTypeName","pathNode":{"id":36718,"name":"IERC20","nameLocations":["15155:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"15155:6:89"},"referencedDeclaration":39274,"src":"15155:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":36720,"nodeType":"ArrayTypeName","src":"15155:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":36725,"mutability":"mutable","name":"tokenTypes","nameLocation":"15206:10:89","nodeType":"VariableDeclaration","scope":36806,"src":"15187:29:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TokenType_$4463_$dyn_memory_ptr","typeString":"enum TokenType[]"},"typeName":{"baseType":{"id":36723,"nodeType":"UserDefinedTypeName","pathNode":{"id":36722,"name":"TokenType","nameLocations":["15187:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":4463,"src":"15187:9:89"},"referencedDeclaration":4463,"src":"15187:9:89","typeDescriptions":{"typeIdentifier":"t_enum$_TokenType_$4463","typeString":"enum TokenType"}},"id":36724,"nodeType":"ArrayTypeName","src":"15187:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_TokenType_$4463_$dyn_storage_ptr","typeString":"enum TokenType[]"}},"visibility":"internal"},{"constant":false,"id":36729,"mutability":"mutable","name":"rateProviders","nameLocation":"15249:13:89","nodeType":"VariableDeclaration","scope":36806,"src":"15226:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":36727,"nodeType":"UserDefinedTypeName","pathNode":{"id":36726,"name":"IRateProvider","nameLocations":["15226:13:89"],"nodeType":"IdentifierPath","referencedDeclaration":150,"src":"15226:13:89"},"referencedDeclaration":150,"src":"15226:13:89","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$150","typeString":"contract IRateProvider"}},"id":36728,"nodeType":"ArrayTypeName","src":"15226:15:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$150_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"},{"constant":false,"id":36732,"mutability":"mutable","name":"yieldFeeFlags","nameLocation":"15286:13:89","nodeType":"VariableDeclaration","scope":36806,"src":"15272:27:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":36730,"name":"bool","nodeType":"ElementaryTypeName","src":"15272:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36731,"nodeType":"ArrayTypeName","src":"15272:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"15145:160:89"},"returnParameters":{"id":36738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36737,"mutability":"mutable","name":"tokenConfig","nameLocation":"15348:11:89","nodeType":"VariableDeclaration","scope":36806,"src":"15327:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":36735,"nodeType":"UserDefinedTypeName","pathNode":{"id":36734,"name":"TokenConfig","nameLocations":["15327:11:89"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"15327:11:89"},"referencedDeclaration":4476,"src":"15327:11:89","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":36736,"nodeType":"ArrayTypeName","src":"15327:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"src":"15326:34:89"},"scope":38235,"src":"15120:660:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[621],"body":{"id":36814,"nodeType":"Block","src":"15865:64:89","statements":[]},"functionSelector":"87a530f8","id":36815,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":36811,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36808,"src":"15859:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":36812,"kind":"modifierInvocation","modifierName":{"id":36810,"name":"onlyInRecoveryMode","nameLocations":["15840:18:89"],"nodeType":"IdentifierPath","referencedDeclaration":25096,"src":"15840:18:89"},"nodeType":"ModifierInvocation","src":"15840:24:89"}],"name":"recoveryModeExit","nameLocation":"15795:16:89","nodeType":"FunctionDefinition","parameters":{"id":36809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36808,"mutability":"mutable","name":"pool","nameLocation":"15820:4:89","nodeType":"VariableDeclaration","scope":36815,"src":"15812:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36807,"name":"address","nodeType":"ElementaryTypeName","src":"15812:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15811:14:89"},"returnParameters":{"id":36813,"nodeType":"ParameterList","parameters":[],"src":"15865:0:89"},"scope":38235,"src":"15786:143:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[632],"body":{"id":36831,"nodeType":"Block","src":"16084:90:89","statements":[{"expression":{"arguments":[{"id":36827,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36817,"src":"16143:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":36828,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36820,"src":"16149:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":36826,"name":"_loadPoolDataUpdatingBalancesAndYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"16101:41:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) returns (struct PoolData memory)"}},"id":36829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16101:66:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"functionReturnParameters":36825,"id":36830,"nodeType":"Return","src":"16094:73:89"}]},"functionSelector":"0f682ba0","id":36832,"implemented":true,"kind":"function","modifiers":[],"name":"loadPoolDataUpdatingBalancesAndYieldFees","nameLocation":"15944:40:89","nodeType":"FunctionDefinition","parameters":{"id":36821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36817,"mutability":"mutable","name":"pool","nameLocation":"16002:4:89","nodeType":"VariableDeclaration","scope":36832,"src":"15994:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36816,"name":"address","nodeType":"ElementaryTypeName","src":"15994:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36820,"mutability":"mutable","name":"roundingDirection","nameLocation":"16025:17:89","nodeType":"VariableDeclaration","scope":36832,"src":"16016:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":36819,"nodeType":"UserDefinedTypeName","pathNode":{"id":36818,"name":"Rounding","nameLocations":["16016:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"16016:8:89"},"referencedDeclaration":4514,"src":"16016:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"15984:64:89"},"returnParameters":{"id":36825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":36832,"src":"16067:15:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":36823,"nodeType":"UserDefinedTypeName","pathNode":{"id":36822,"name":"PoolData","nameLocations":["16067:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"16067:8:89"},"referencedDeclaration":4511,"src":"16067:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"16066:17:89"},"scope":38235,"src":"15935:239:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[643],"body":{"id":36850,"nodeType":"Block","src":"16352:90:89","statements":[{"expression":{"arguments":[{"id":36846,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36834,"src":"16411:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":36847,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36837,"src":"16417:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"id":36845,"name":"_loadPoolDataUpdatingBalancesAndYieldFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24920,"src":"16369:41:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_enum$_Rounding_$4514_$returns$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (address,enum Rounding) returns (struct PoolData memory)"}},"id":36848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16369:66:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"functionReturnParameters":36844,"id":36849,"nodeType":"Return","src":"16362:73:89"}]},"functionSelector":"dc4402ed","id":36851,"implemented":true,"kind":"function","modifiers":[{"id":36840,"kind":"modifierInvocation","modifierName":{"id":36839,"name":"nonReentrant","nameLocations":["16313:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"16313:12:89"},"nodeType":"ModifierInvocation","src":"16313:12:89"}],"name":"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy","nameLocation":"16189:50:89","nodeType":"FunctionDefinition","parameters":{"id":36838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36834,"mutability":"mutable","name":"pool","nameLocation":"16257:4:89","nodeType":"VariableDeclaration","scope":36851,"src":"16249:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36833,"name":"address","nodeType":"ElementaryTypeName","src":"16249:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36837,"mutability":"mutable","name":"roundingDirection","nameLocation":"16280:17:89","nodeType":"VariableDeclaration","scope":36851,"src":"16271:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":36836,"nodeType":"UserDefinedTypeName","pathNode":{"id":36835,"name":"Rounding","nameLocations":["16271:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"16271:8:89"},"referencedDeclaration":4514,"src":"16271:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"16239:64:89"},"returnParameters":{"id":36844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":36851,"src":"16335:15:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":36842,"nodeType":"UserDefinedTypeName","pathNode":{"id":36841,"name":"PoolData","nameLocations":["16335:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"16335:8:89"},"referencedDeclaration":4511,"src":"16335:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"16334:17:89"},"scope":38235,"src":"16180:262:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[683],"body":{"id":36876,"nodeType":"Block","src":"16665:138:89","statements":[{"expression":{"arguments":[{"id":36868,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36854,"src":"16716:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":36869,"name":"newRawBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36856,"src":"16726:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":36870,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36859,"src":"16741:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},{"id":36871,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36861,"src":"16760:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36867,"name":"_updateRawAndLiveTokenBalancesInPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24997,"src":"16675:40:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_enum$_Rounding_$4514_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct PoolData memory,uint256,enum Rounding,uint256) pure returns (uint256)"}},"id":36872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16675:96:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36873,"nodeType":"ExpressionStatement","src":"16675:96:89"},{"expression":{"id":36874,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36854,"src":"16788:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"functionReturnParameters":36866,"id":36875,"nodeType":"Return","src":"16781:15:89"}]},"functionSelector":"aa01edb3","id":36877,"implemented":true,"kind":"function","modifiers":[],"name":"updateLiveTokenBalanceInPoolData","nameLocation":"16457:32:89","nodeType":"FunctionDefinition","parameters":{"id":36862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36854,"mutability":"mutable","name":"poolData","nameLocation":"16515:8:89","nodeType":"VariableDeclaration","scope":36877,"src":"16499:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":36853,"nodeType":"UserDefinedTypeName","pathNode":{"id":36852,"name":"PoolData","nameLocations":["16499:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"16499:8:89"},"referencedDeclaration":4511,"src":"16499:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":36856,"mutability":"mutable","name":"newRawBalance","nameLocation":"16541:13:89","nodeType":"VariableDeclaration","scope":36877,"src":"16533:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36855,"name":"uint256","nodeType":"ElementaryTypeName","src":"16533:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":36859,"mutability":"mutable","name":"roundingDirection","nameLocation":"16573:17:89","nodeType":"VariableDeclaration","scope":36877,"src":"16564:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":36858,"nodeType":"UserDefinedTypeName","pathNode":{"id":36857,"name":"Rounding","nameLocations":["16564:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"16564:8:89"},"referencedDeclaration":4514,"src":"16564:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"},{"constant":false,"id":36861,"mutability":"mutable","name":"tokenIndex","nameLocation":"16608:10:89","nodeType":"VariableDeclaration","scope":36877,"src":"16600:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36860,"name":"uint256","nodeType":"ElementaryTypeName","src":"16600:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16489:135:89"},"returnParameters":{"id":36866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":36877,"src":"16648:15:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":36864,"nodeType":"UserDefinedTypeName","pathNode":{"id":36863,"name":"PoolData","nameLocations":["16648:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"16648:8:89"},"referencedDeclaration":4511,"src":"16648:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"16647:17:89"},"scope":38235,"src":"16448:355:89","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[697],"body":{"id":36899,"nodeType":"Block","src":"17016:124:89","statements":[{"expression":{"arguments":[{"id":36893,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36880,"src":"17066:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":36894,"name":"lastLiveBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36882,"src":"17076:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":36895,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36884,"src":"17093:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":36896,"name":"aggregateYieldFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36886,"src":"17105:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":36891,"name":"PoolDataLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30570,"src":"17033:11:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolDataLib_$30570_$","typeString":"type(library PoolDataLib)"}},"id":36892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17045:20:89","memberName":"_computeYieldFeesDue","nodeType":"MemberAccess","referencedDeclaration":30569,"src":"17033:32:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct PoolData memory,uint256,uint256,uint256) pure returns (uint256)"}},"id":36897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17033:100:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":36890,"id":36898,"nodeType":"Return","src":"17026:107:89"}]},"functionSelector":"08bade29","id":36900,"implemented":true,"kind":"function","modifiers":[],"name":"computeYieldFeesDue","nameLocation":"16818:19:89","nodeType":"FunctionDefinition","parameters":{"id":36887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36880,"mutability":"mutable","name":"poolData","nameLocation":"16863:8:89","nodeType":"VariableDeclaration","scope":36900,"src":"16847:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":36879,"nodeType":"UserDefinedTypeName","pathNode":{"id":36878,"name":"PoolData","nameLocations":["16847:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"16847:8:89"},"referencedDeclaration":4511,"src":"16847:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":36882,"mutability":"mutable","name":"lastLiveBalance","nameLocation":"16889:15:89","nodeType":"VariableDeclaration","scope":36900,"src":"16881:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36881,"name":"uint256","nodeType":"ElementaryTypeName","src":"16881:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":36884,"mutability":"mutable","name":"tokenIndex","nameLocation":"16922:10:89","nodeType":"VariableDeclaration","scope":36900,"src":"16914:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36883,"name":"uint256","nodeType":"ElementaryTypeName","src":"16914:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":36886,"mutability":"mutable","name":"aggregateYieldFeePercentage","nameLocation":"16950:27:89","nodeType":"VariableDeclaration","scope":36900,"src":"16942:35:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36885,"name":"uint256","nodeType":"ElementaryTypeName","src":"16942:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16837:146:89"},"returnParameters":{"id":36890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":36900,"src":"17007:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36888,"name":"uint256","nodeType":"ElementaryTypeName","src":"17007:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17006:9:89"},"scope":38235,"src":"16809:331:89","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[651],"body":{"id":36913,"nodeType":"Block","src":"17237:60:89","statements":[{"expression":{"arguments":[{"id":36909,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36902,"src":"17275:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":36910,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36905,"src":"17281:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":36908,"name":"_writePoolBalancesToStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24844,"src":"17247:27:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_PoolData_$4511_memory_ptr_$returns$__$","typeString":"function (address,struct PoolData memory)"}},"id":36911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17247:43:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":36912,"nodeType":"ExpressionStatement","src":"17247:43:89"}]},"functionSelector":"0f619655","id":36914,"implemented":true,"kind":"function","modifiers":[],"name":"manualWritePoolBalancesToStorage","nameLocation":"17155:32:89","nodeType":"FunctionDefinition","parameters":{"id":36906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36902,"mutability":"mutable","name":"pool","nameLocation":"17196:4:89","nodeType":"VariableDeclaration","scope":36914,"src":"17188:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36901,"name":"address","nodeType":"ElementaryTypeName","src":"17188:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36905,"mutability":"mutable","name":"poolData","nameLocation":"17218:8:89","nodeType":"VariableDeclaration","scope":36914,"src":"17202:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":36904,"nodeType":"UserDefinedTypeName","pathNode":{"id":36903,"name":"PoolData","nameLocations":["17202:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"17202:8:89"},"referencedDeclaration":4511,"src":"17202:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"17187:40:89"},"returnParameters":{"id":36907,"nodeType":"ParameterList","parameters":[],"src":"17237:0:89"},"scope":38235,"src":"17146:151:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[659],"body":{"id":36967,"nodeType":"Block","src":"17394:358:89","statements":[{"assignments":[36925],"declarations":[{"constant":false,"id":36925,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"17470:17:89","nodeType":"VariableDeclaration","scope":36967,"src":"17404:83:89","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":36924,"keyName":"tokenIndex","keyNameLocation":"17420:10:89","keyType":{"id":36922,"name":"uint256","nodeType":"ElementaryTypeName","src":"17412:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"17404:57:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"17442:18:89","valueType":{"id":36923,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17434:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":36929,"initialValue":{"baseExpression":{"id":36926,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"17490:18:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":36928,"indexExpression":{"id":36927,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36916,"src":"17509:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17490:24:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"17404:110:89"},{"assignments":[36931],"declarations":[{"constant":false,"id":36931,"mutability":"mutable","name":"numTokens","nameLocation":"17533:9:89","nodeType":"VariableDeclaration","scope":36967,"src":"17525:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36930,"name":"uint256","nodeType":"ElementaryTypeName","src":"17525:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36936,"initialValue":{"expression":{"baseExpression":{"id":36932,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"17545:11:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":36934,"indexExpression":{"id":36933,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36916,"src":"17557:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17545:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"id":36935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17563:6:89","memberName":"length","nodeType":"MemberAccess","src":"17545:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17525:44:89"},{"expression":{"id":36943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36937,"name":"balancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36920,"src":"17579:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":36941,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36931,"src":"17607:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17593:13:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":36938,"name":"uint256","nodeType":"ElementaryTypeName","src":"17597:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36939,"nodeType":"ArrayTypeName","src":"17597:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":36942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17593:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"17579:38:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36944,"nodeType":"ExpressionStatement","src":"17579:38:89"},{"body":{"id":36965,"nodeType":"Block","src":"17668:78:89","statements":[{"expression":{"id":36963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":36955,"name":"balancesRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36920,"src":"17682:11:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36957,"indexExpression":{"id":36956,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36946,"src":"17694:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17682:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":36958,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36925,"src":"17699:17:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":36960,"indexExpression":{"id":36959,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36946,"src":"17717:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17699:20:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":36961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17720:13:89","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"17699:34:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":36962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17699:36:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17682:53:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36964,"nodeType":"ExpressionStatement","src":"17682:53:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":36951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36949,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36946,"src":"17648:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":36950,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36931,"src":"17652:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17648:13:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":36966,"initializationExpression":{"assignments":[36946],"declarations":[{"constant":false,"id":36946,"mutability":"mutable","name":"i","nameLocation":"17641:1:89","nodeType":"VariableDeclaration","scope":36966,"src":"17633:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36945,"name":"uint256","nodeType":"ElementaryTypeName","src":"17633:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36948,"initialValue":{"hexValue":"30","id":36947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17645:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17633:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":36953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17663:3:89","subExpression":{"id":36952,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36946,"src":"17665:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36954,"nodeType":"ExpressionStatement","src":"17663:3:89"},"nodeType":"ForStatement","src":"17628:118:89"}]},"functionSelector":"19a24bcb","id":36968,"implemented":true,"kind":"function","modifiers":[],"name":"getRawBalances","nameLocation":"17312:14:89","nodeType":"FunctionDefinition","parameters":{"id":36917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36916,"mutability":"mutable","name":"pool","nameLocation":"17335:4:89","nodeType":"VariableDeclaration","scope":36968,"src":"17327:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36915,"name":"address","nodeType":"ElementaryTypeName","src":"17327:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17326:14:89"},"returnParameters":{"id":36921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36920,"mutability":"mutable","name":"balancesRaw","nameLocation":"17381:11:89","nodeType":"VariableDeclaration","scope":36968,"src":"17364:28:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":36918,"name":"uint256","nodeType":"ElementaryTypeName","src":"17364:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36919,"nodeType":"ArrayTypeName","src":"17364:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"17363:30:89"},"scope":38235,"src":"17303:449:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[667],"body":{"id":37021,"nodeType":"Block","src":"17867:388:89","statements":[{"assignments":[36979],"declarations":[{"constant":false,"id":36979,"mutability":"mutable","name":"poolTokenBalances","nameLocation":"17943:17:89","nodeType":"VariableDeclaration","scope":37021,"src":"17877:83:89","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"typeName":{"id":36978,"keyName":"tokenIndex","keyNameLocation":"17893:10:89","keyType":{"id":36976,"name":"uint256","nodeType":"ElementaryTypeName","src":"17885:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"17877:57:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},"valueName":"packedTokenBalance","valueNameLocation":"17915:18:89","valueType":{"id":36977,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17907:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"}],"id":36983,"initialValue":{"baseExpression":{"id":36980,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"17963:18:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":36982,"indexExpression":{"id":36981,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36970,"src":"17982:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17963:24:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"17877:110:89"},{"assignments":[36985],"declarations":[{"constant":false,"id":36985,"mutability":"mutable","name":"numTokens","nameLocation":"18006:9:89","nodeType":"VariableDeclaration","scope":37021,"src":"17998:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36984,"name":"uint256","nodeType":"ElementaryTypeName","src":"17998:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":36990,"initialValue":{"expression":{"baseExpression":{"id":36986,"name":"_poolTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27781,"src":"18018:11:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_contract$_IERC20_$39274_$dyn_storage_$","typeString":"mapping(address => contract IERC20[] storage ref)"}},"id":36988,"indexExpression":{"id":36987,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36970,"src":"18030:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18018:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage","typeString":"contract IERC20[] storage ref"}},"id":36989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18036:6:89","memberName":"length","nodeType":"MemberAccess","src":"18018:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17998:44:89"},{"expression":{"id":36997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":36991,"name":"lastBalancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36974,"src":"18052:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":36995,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36985,"src":"18093:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":36994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18079:13:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":36992,"name":"uint256","nodeType":"ElementaryTypeName","src":"18083:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36993,"nodeType":"ArrayTypeName","src":"18083:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":36996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18079:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"18052:51:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":36998,"nodeType":"ExpressionStatement","src":"18052:51:89"},{"body":{"id":37019,"nodeType":"Block","src":"18154:95:89","statements":[{"expression":{"id":37017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":37009,"name":"lastBalancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36974,"src":"18168:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":37011,"indexExpression":{"id":37010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37000,"src":"18193:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18168:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":37012,"name":"poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36979,"src":"18198:17:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},"id":37014,"indexExpression":{"id":37013,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37000,"src":"18216:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18198:20:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18219:17:89","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"18198:38:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":37016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18198:40:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18168:70:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37018,"nodeType":"ExpressionStatement","src":"18168:70:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":37005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":37003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37000,"src":"18134:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":37004,"name":"numTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36985,"src":"18138:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18134:13:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":37020,"initializationExpression":{"assignments":[37000],"declarations":[{"constant":false,"id":37000,"mutability":"mutable","name":"i","nameLocation":"18127:1:89","nodeType":"VariableDeclaration","scope":37020,"src":"18119:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36999,"name":"uint256","nodeType":"ElementaryTypeName","src":"18119:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":37002,"initialValue":{"hexValue":"30","id":37001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18131:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18119:13:89"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":37007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"18149:3:89","subExpression":{"id":37006,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37000,"src":"18151:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37008,"nodeType":"ExpressionStatement","src":"18149:3:89"},"nodeType":"ForStatement","src":"18114:135:89"}]},"functionSelector":"3cce2585","id":37022,"implemented":true,"kind":"function","modifiers":[],"name":"getLastLiveBalances","nameLocation":"17767:19:89","nodeType":"FunctionDefinition","parameters":{"id":36971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36970,"mutability":"mutable","name":"pool","nameLocation":"17795:4:89","nodeType":"VariableDeclaration","scope":37022,"src":"17787:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36969,"name":"address","nodeType":"ElementaryTypeName","src":"17787:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17786:14:89"},"returnParameters":{"id":36975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":36974,"mutability":"mutable","name":"lastBalancesLiveScaled18","nameLocation":"17841:24:89","nodeType":"VariableDeclaration","scope":37022,"src":"17824:41:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":36972,"name":"uint256","nodeType":"ElementaryTypeName","src":"17824:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":36973,"nodeType":"ArrayTypeName","src":"17824:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"17823:43:89"},"scope":38235,"src":"17758:497:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[700],"body":{"id":37032,"nodeType":"Block","src":"18314:50:89","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":37028,"name":"reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24412,"src":"18332:22:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":37029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18332:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":37027,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18324:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":37030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18324:33:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37031,"nodeType":"ExpressionStatement","src":"18324:33:89"}]},"functionSelector":"a408f312","id":37033,"implemented":true,"kind":"function","modifiers":[{"id":37025,"kind":"modifierInvocation","modifierName":{"id":37024,"name":"nonReentrant","nameLocations":["18301:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"18301:12:89"},"nodeType":"ModifierInvocation","src":"18301:12:89"}],"name":"guardedCheckEntered","nameLocation":"18270:19:89","nodeType":"FunctionDefinition","parameters":{"id":37023,"nodeType":"ParameterList","parameters":[],"src":"18289:2:89"},"returnParameters":{"id":37026,"nodeType":"ParameterList","parameters":[],"src":"18314:0:89"},"scope":38235,"src":"18261:103:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[703],"body":{"id":37042,"nodeType":"Block","src":"18420:51:89","statements":[{"expression":{"arguments":[{"id":37039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18438:25:89","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":37037,"name":"reentrancyGuardEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24412,"src":"18439:22:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":37038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18439:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":37036,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18430:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":37040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18430:34:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37041,"nodeType":"ExpressionStatement","src":"18430:34:89"}]},"functionSelector":"cecc95a7","id":37043,"implemented":true,"kind":"function","modifiers":[],"name":"unguardedCheckNotEntered","nameLocation":"18379:24:89","nodeType":"FunctionDefinition","parameters":{"id":37034,"nodeType":"ParameterList","parameters":[],"src":"18403:2:89"},"returnParameters":{"id":37035,"nodeType":"ParameterList","parameters":[],"src":"18420:0:89"},"scope":38235,"src":"18370:101:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[779],"body":{"id":37056,"nodeType":"Block","src":"18536:44:89","statements":[{"expression":{"arguments":[{"id":37052,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37046,"src":"18560:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37053,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37048,"src":"18567:5:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":37051,"name":"_accountDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24503,"src":"18546:13:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_int256_$returns$__$","typeString":"function (contract IERC20,int256)"}},"id":37054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18546:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37055,"nodeType":"ExpressionStatement","src":"18546:27:89"}]},"functionSelector":"80047e26","id":37057,"implemented":true,"kind":"function","modifiers":[],"name":"accountDelta","nameLocation":"18486:12:89","nodeType":"FunctionDefinition","parameters":{"id":37049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37046,"mutability":"mutable","name":"token","nameLocation":"18506:5:89","nodeType":"VariableDeclaration","scope":37057,"src":"18499:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37045,"nodeType":"UserDefinedTypeName","pathNode":{"id":37044,"name":"IERC20","nameLocations":["18499:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18499:6:89"},"referencedDeclaration":39274,"src":"18499:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37048,"mutability":"mutable","name":"delta","nameLocation":"18520:5:89","nodeType":"VariableDeclaration","scope":37057,"src":"18513:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":37047,"name":"int256","nodeType":"ElementaryTypeName","src":"18513:6:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18498:28:89"},"returnParameters":{"id":37050,"nodeType":"ParameterList","parameters":[],"src":"18536:0:89"},"scope":38235,"src":"18477:103:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[787],"body":{"id":37070,"nodeType":"Block","src":"18647:45:89","statements":[{"expression":{"arguments":[{"id":37066,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37060,"src":"18671:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37067,"name":"credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37062,"src":"18678:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":37065,"name":"_supplyCredit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24430,"src":"18657:13:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":37068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18657:28:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37069,"nodeType":"ExpressionStatement","src":"18657:28:89"}]},"functionSelector":"b1740c2d","id":37071,"implemented":true,"kind":"function","modifiers":[],"name":"supplyCredit","nameLocation":"18595:12:89","nodeType":"FunctionDefinition","parameters":{"id":37063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37060,"mutability":"mutable","name":"token","nameLocation":"18615:5:89","nodeType":"VariableDeclaration","scope":37071,"src":"18608:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37059,"nodeType":"UserDefinedTypeName","pathNode":{"id":37058,"name":"IERC20","nameLocations":["18608:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18608:6:89"},"referencedDeclaration":39274,"src":"18608:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37062,"mutability":"mutable","name":"credit","nameLocation":"18630:6:89","nodeType":"VariableDeclaration","scope":37071,"src":"18622:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37061,"name":"uint256","nodeType":"ElementaryTypeName","src":"18622:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18607:30:89"},"returnParameters":{"id":37064,"nodeType":"ParameterList","parameters":[],"src":"18647:0:89"},"scope":38235,"src":"18586:106:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[795],"body":{"id":37084,"nodeType":"Block","src":"18753:39:89","statements":[{"expression":{"arguments":[{"id":37080,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37074,"src":"18773:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37081,"name":"debt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37076,"src":"18780:4:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":37079,"name":"_takeDebt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24447,"src":"18763:9:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":37082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18763:22:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37083,"nodeType":"ExpressionStatement","src":"18763:22:89"}]},"functionSelector":"3e262ba3","id":37085,"implemented":true,"kind":"function","modifiers":[],"name":"takeDebt","nameLocation":"18707:8:89","nodeType":"FunctionDefinition","parameters":{"id":37077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37074,"mutability":"mutable","name":"token","nameLocation":"18723:5:89","nodeType":"VariableDeclaration","scope":37085,"src":"18716:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37073,"nodeType":"UserDefinedTypeName","pathNode":{"id":37072,"name":"IERC20","nameLocations":["18716:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18716:6:89"},"referencedDeclaration":39274,"src":"18716:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37076,"mutability":"mutable","name":"debt","nameLocation":"18738:4:89","nodeType":"VariableDeclaration","scope":37085,"src":"18730:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37075,"name":"uint256","nodeType":"ElementaryTypeName","src":"18730:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18715:28:89"},"returnParameters":{"id":37078,"nodeType":"ParameterList","parameters":[],"src":"18753:0:89"},"scope":38235,"src":"18698:94:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[803],"body":{"id":37100,"nodeType":"Block","src":"18866:50:89","statements":[{"expression":{"arguments":[{"id":37096,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37088,"src":"18896:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37097,"name":"delta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37090,"src":"18903:5:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37093,"name":"_tokenDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27882,"src":"18876:12:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function () view returns (TokenDeltaMappingSlotType)"}},"id":37094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18876:14:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"id":37095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18891:4:89","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6593,"src":"18876:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$_t_contract$_IERC20_$39274_$_t_int256_$returns$__$attached_to$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function (TokenDeltaMappingSlotType,contract IERC20,int256)"}},"id":37098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18876:33:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37099,"nodeType":"ExpressionStatement","src":"18876:33:89"}]},"functionSelector":"d0643b8c","id":37101,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetAccountDelta","nameLocation":"18807:21:89","nodeType":"FunctionDefinition","parameters":{"id":37091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37088,"mutability":"mutable","name":"token","nameLocation":"18836:5:89","nodeType":"VariableDeclaration","scope":37101,"src":"18829:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37087,"nodeType":"UserDefinedTypeName","pathNode":{"id":37086,"name":"IERC20","nameLocations":["18829:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"18829:6:89"},"referencedDeclaration":39274,"src":"18829:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37090,"mutability":"mutable","name":"delta","nameLocation":"18850:5:89","nodeType":"VariableDeclaration","scope":37101,"src":"18843:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":37089,"name":"int256","nodeType":"ElementaryTypeName","src":"18843:6:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18828:28:89"},"returnParameters":{"id":37092,"nodeType":"ParameterList","parameters":[],"src":"18866:0:89"},"scope":38235,"src":"18798:118:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[808],"body":{"id":37112,"nodeType":"Block","src":"18987:56:89","statements":[{"expression":{"arguments":[{"id":37109,"name":"deltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37103,"src":"19025:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37106,"name":"_nonZeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27870,"src":"18997:18:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":37107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18997:20:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":37108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19018:6:89","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9888,"src":"18997:27:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_Uint256SlotType_$9768_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType,uint256)"}},"id":37110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18997:39:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37111,"nodeType":"ExpressionStatement","src":"18997:39:89"}]},"functionSelector":"5eeae6eb","id":37113,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetNonZeroDeltaCount","nameLocation":"18931:26:89","nodeType":"FunctionDefinition","parameters":{"id":37104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37103,"mutability":"mutable","name":"deltaCount","nameLocation":"18966:10:89","nodeType":"VariableDeclaration","scope":37113,"src":"18958:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37102,"name":"uint256","nodeType":"ElementaryTypeName","src":"18958:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18957:20:89"},"returnParameters":{"id":37105,"nodeType":"ParameterList","parameters":[],"src":"18987:0:89"},"scope":38235,"src":"18922:121:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[816],"body":{"id":37127,"nodeType":"Block","src":"19119:46:89","statements":[{"expression":{"id":37125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":37121,"name":"_reservesOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27817,"src":"19129:11:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_uint256_$","typeString":"mapping(contract IERC20 => uint256)"}},"id":37123,"indexExpression":{"id":37122,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37116,"src":"19141:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19129:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":37124,"name":"reserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37118,"src":"19150:8:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19129:29:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37126,"nodeType":"ExpressionStatement","src":"19129:29:89"}]},"functionSelector":"d64bc25d","id":37128,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetReservesOf","nameLocation":"19058:19:89","nodeType":"FunctionDefinition","parameters":{"id":37119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37116,"mutability":"mutable","name":"token","nameLocation":"19085:5:89","nodeType":"VariableDeclaration","scope":37128,"src":"19078:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37115,"nodeType":"UserDefinedTypeName","pathNode":{"id":37114,"name":"IERC20","nameLocations":["19078:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"19078:6:89"},"referencedDeclaration":39274,"src":"19078:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37118,"mutability":"mutable","name":"reserves","nameLocation":"19100:8:89","nodeType":"VariableDeclaration","scope":37128,"src":"19092:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37117,"name":"uint256","nodeType":"ElementaryTypeName","src":"19092:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19077:32:89"},"returnParameters":{"id":37120,"nodeType":"ParameterList","parameters":[],"src":"19119:0:89"},"scope":38235,"src":"19049:116:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[845],"body":{"id":37188,"nodeType":"Block","src":"19610:425:89","statements":[{"assignments":[37159],"declarations":[{"constant":false,"id":37159,"mutability":"mutable","name":"poolSwapParams","nameLocation":"19642:14:89","nodeType":"VariableDeclaration","scope":37188,"src":"19620:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":37158,"nodeType":"UserDefinedTypeName","pathNode":{"id":37157,"name":"PoolSwapParams","nameLocations":["19620:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"19620:14:89"},"referencedDeclaration":4554,"src":"19620:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"id":37165,"initialValue":{"arguments":[{"id":37161,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37131,"src":"19680:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":37162,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37134,"src":"19697:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":37163,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37137,"src":"19704:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":37160,"name":"_buildPoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19601,"src":"19659:20:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$returns$_t_struct$_PoolSwapParams_$4554_memory_ptr_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory) view returns (struct PoolSwapParams memory)"}},"id":37164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19659:54:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"nodeType":"VariableDeclarationStatement","src":"19620:93:89"},{"expression":{"id":37177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":37166,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37140,"src":"19725:19:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37167,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37142,"src":"19746:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37168,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37144,"src":"19772:8:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37169,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37146,"src":"19782:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":37170,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"19724:68:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37172,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37131,"src":"19814:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":37173,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37134,"src":"19843:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":37174,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37137,"src":"19862:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":37175,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37159,"src":"19884:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}],"id":37171,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19975,"src":"19795:5:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_PoolSwapParams_$4554_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory,struct PoolSwapParams memory) returns (uint256,uint256,uint256,uint256)"}},"id":37176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19795:113:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"src":"19724:184:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37178,"nodeType":"ExpressionStatement","src":"19724:184:89"},{"expression":{"components":[{"id":37179,"name":"amountCalculatedRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37140,"src":"19927:19:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37180,"name":"amountCalculatedScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37142,"src":"19948:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37181,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37144,"src":"19974:8:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37182,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37146,"src":"19984:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37183,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37131,"src":"19995:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":37184,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37134,"src":"20012:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":37185,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37137,"src":"20019:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"id":37186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19926:102:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"tuple(uint256,uint256,uint256,uint256,struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory)"}},"functionReturnParameters":37156,"id":37187,"nodeType":"Return","src":"19919:109:89"}]},"functionSelector":"25b6a844","id":37189,"implemented":true,"kind":"function","modifiers":[],"name":"manualInternalSwap","nameLocation":"19180:18:89","nodeType":"FunctionDefinition","parameters":{"id":37138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37131,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"19231:15:89","nodeType":"VariableDeclaration","scope":37189,"src":"19208:38:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":37130,"nodeType":"UserDefinedTypeName","pathNode":{"id":37129,"name":"VaultSwapParams","nameLocations":["19208:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"19208:15:89"},"referencedDeclaration":4536,"src":"19208:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":37134,"mutability":"mutable","name":"state","nameLocation":"19273:5:89","nodeType":"VariableDeclaration","scope":37189,"src":"19256:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":37133,"nodeType":"UserDefinedTypeName","pathNode":{"id":37132,"name":"SwapState","nameLocations":["19256:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"19256:9:89"},"referencedDeclaration":4443,"src":"19256:9:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":37137,"mutability":"mutable","name":"poolData","nameLocation":"19304:8:89","nodeType":"VariableDeclaration","scope":37189,"src":"19288:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37136,"nodeType":"UserDefinedTypeName","pathNode":{"id":37135,"name":"PoolData","nameLocations":["19288:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"19288:8:89"},"referencedDeclaration":4511,"src":"19288:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"19198:120:89"},"returnParameters":{"id":37156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37140,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"19374:19:89","nodeType":"VariableDeclaration","scope":37189,"src":"19366:27:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37139,"name":"uint256","nodeType":"ElementaryTypeName","src":"19366:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37142,"mutability":"mutable","name":"amountCalculatedScaled18","nameLocation":"19415:24:89","nodeType":"VariableDeclaration","scope":37189,"src":"19407:32:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37141,"name":"uint256","nodeType":"ElementaryTypeName","src":"19407:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37144,"mutability":"mutable","name":"amountIn","nameLocation":"19461:8:89","nodeType":"VariableDeclaration","scope":37189,"src":"19453:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37143,"name":"uint256","nodeType":"ElementaryTypeName","src":"19453:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37146,"mutability":"mutable","name":"amountOut","nameLocation":"19491:9:89","nodeType":"VariableDeclaration","scope":37189,"src":"19483:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37145,"name":"uint256","nodeType":"ElementaryTypeName","src":"19483:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37149,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37189,"src":"19514:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":37148,"nodeType":"UserDefinedTypeName","pathNode":{"id":37147,"name":"VaultSwapParams","nameLocations":["19514:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"19514:15:89"},"referencedDeclaration":4536,"src":"19514:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":37152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37189,"src":"19550:16:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":37151,"nodeType":"UserDefinedTypeName","pathNode":{"id":37150,"name":"SwapState","nameLocations":["19550:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"19550:9:89"},"referencedDeclaration":4443,"src":"19550:9:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":37155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37189,"src":"19580:15:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37154,"nodeType":"UserDefinedTypeName","pathNode":{"id":37153,"name":"PoolData","nameLocations":["19580:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"19580:8:89"},"referencedDeclaration":4511,"src":"19580:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"19352:253:89"},"scope":38235,"src":"19171:864:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[857],"body":{"id":37219,"nodeType":"Block","src":"20213:175:89","statements":[{"assignments":[37205],"declarations":[{"constant":false,"id":37205,"mutability":"mutable","name":"poolSwapParams","nameLocation":"20245:14:89","nodeType":"VariableDeclaration","scope":37219,"src":"20223:36:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":37204,"nodeType":"UserDefinedTypeName","pathNode":{"id":37203,"name":"PoolSwapParams","nameLocations":["20223:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"20223:14:89"},"referencedDeclaration":4554,"src":"20223:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"id":37211,"initialValue":{"arguments":[{"id":37207,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37192,"src":"20283:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":37208,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37195,"src":"20300:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":37209,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37198,"src":"20307:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":37206,"name":"_buildPoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19601,"src":"20262:20:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$returns$_t_struct$_PoolSwapParams_$4554_memory_ptr_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory) view returns (struct PoolSwapParams memory)"}},"id":37210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20262:54:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"nodeType":"VariableDeclarationStatement","src":"20223:93:89"},{"expression":{"arguments":[{"id":37213,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37192,"src":"20332:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":37214,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37195,"src":"20349:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":37215,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37198,"src":"20356:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":37216,"name":"poolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37205,"src":"20366:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}],"id":37212,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19975,"src":"20326:5:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_PoolSwapParams_$4554_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory,struct PoolSwapParams memory) returns (uint256,uint256,uint256,uint256)"}},"id":37217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20326:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256,uint256)"}},"id":37218,"nodeType":"ExpressionStatement","src":"20326:55:89"}]},"functionSelector":"96e74a27","id":37220,"implemented":true,"kind":"function","modifiers":[{"id":37201,"kind":"modifierInvocation","modifierName":{"id":37200,"name":"nonReentrant","nameLocations":["20200:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"20200:12:89"},"nodeType":"ModifierInvocation","src":"20200:12:89"}],"name":"manualReentrancySwap","nameLocation":"20050:20:89","nodeType":"FunctionDefinition","parameters":{"id":37199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37192,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"20103:15:89","nodeType":"VariableDeclaration","scope":37220,"src":"20080:38:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":37191,"nodeType":"UserDefinedTypeName","pathNode":{"id":37190,"name":"VaultSwapParams","nameLocations":["20080:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"20080:15:89"},"referencedDeclaration":4536,"src":"20080:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":37195,"mutability":"mutable","name":"state","nameLocation":"20145:5:89","nodeType":"VariableDeclaration","scope":37220,"src":"20128:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":37194,"nodeType":"UserDefinedTypeName","pathNode":{"id":37193,"name":"SwapState","nameLocations":["20128:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"20128:9:89"},"referencedDeclaration":4443,"src":"20128:9:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":37198,"mutability":"mutable","name":"poolData","nameLocation":"20176:8:89","nodeType":"VariableDeclaration","scope":37220,"src":"20160:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37197,"nodeType":"UserDefinedTypeName","pathNode":{"id":37196,"name":"PoolData","nameLocations":["20160:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"20160:8:89"},"referencedDeclaration":4511,"src":"20160:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"20070:120:89"},"returnParameters":{"id":37202,"nodeType":"ParameterList","parameters":[],"src":"20213:0:89"},"scope":38235,"src":"20041:347:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[867],"body":{"id":37238,"nodeType":"Block","src":"20495:73:89","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"baseExpression":{"id":37230,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"20512:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":37232,"indexExpression":{"id":37231,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37222,"src":"20533:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20512:26:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":37234,"indexExpression":{"id":37233,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37225,"src":"20539:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20512:33:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20546:13:89","memberName":"getBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5848,"src":"20512:47:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":37236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20512:49:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":37229,"id":37237,"nodeType":"Return","src":"20505:56:89"}]},"functionSelector":"36918d6e","id":37239,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetAggregateSwapFeeAmount","nameLocation":"20403:31:89","nodeType":"FunctionDefinition","parameters":{"id":37226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37222,"mutability":"mutable","name":"pool","nameLocation":"20443:4:89","nodeType":"VariableDeclaration","scope":37239,"src":"20435:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37221,"name":"address","nodeType":"ElementaryTypeName","src":"20435:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37225,"mutability":"mutable","name":"token","nameLocation":"20456:5:89","nodeType":"VariableDeclaration","scope":37239,"src":"20449:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37224,"nodeType":"UserDefinedTypeName","pathNode":{"id":37223,"name":"IERC20","nameLocations":["20449:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"20449:6:89"},"referencedDeclaration":39274,"src":"20449:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"20434:28:89"},"returnParameters":{"id":37229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37239,"src":"20486:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37227,"name":"uint256","nodeType":"ElementaryTypeName","src":"20486:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20485:9:89"},"scope":38235,"src":"20394:174:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[877],"body":{"id":37257,"nodeType":"Block","src":"20676:77:89","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"baseExpression":{"id":37249,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"20693:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":37251,"indexExpression":{"id":37250,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37241,"src":"20714:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20693:26:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":37253,"indexExpression":{"id":37252,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37244,"src":"20720:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20693:33:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20727:17:89","memberName":"getBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5865,"src":"20693:51:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_uint256_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (uint256)"}},"id":37255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20693:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":37248,"id":37256,"nodeType":"Return","src":"20686:60:89"}]},"functionSelector":"8f5aeb4b","id":37258,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetAggregateYieldFeeAmount","nameLocation":"20583:32:89","nodeType":"FunctionDefinition","parameters":{"id":37245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37241,"mutability":"mutable","name":"pool","nameLocation":"20624:4:89","nodeType":"VariableDeclaration","scope":37258,"src":"20616:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37240,"name":"address","nodeType":"ElementaryTypeName","src":"20616:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37244,"mutability":"mutable","name":"token","nameLocation":"20637:5:89","nodeType":"VariableDeclaration","scope":37258,"src":"20630:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37243,"nodeType":"UserDefinedTypeName","pathNode":{"id":37242,"name":"IERC20","nameLocations":["20630:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"20630:6:89"},"referencedDeclaration":39274,"src":"20630:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"20615:28:89"},"returnParameters":{"id":37248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37258,"src":"20667:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37246,"name":"uint256","nodeType":"ElementaryTypeName","src":"20667:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20666:9:89"},"scope":38235,"src":"20574:179:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[887],"body":{"id":37283,"nodeType":"Block","src":"20852:107:89","statements":[{"expression":{"id":37281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":37268,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"20862:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":37271,"indexExpression":{"id":37269,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37260,"src":"20883:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20862:26:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":37272,"indexExpression":{"id":37270,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37263,"src":"20889:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20862:33:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37265,"src":"20946:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":37273,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"20898:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":37275,"indexExpression":{"id":37274,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37260,"src":"20919:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20898:26:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":37277,"indexExpression":{"id":37276,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37263,"src":"20925:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20898:33:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20932:13:89","memberName":"setBalanceRaw","nodeType":"MemberAccess","referencedDeclaration":5883,"src":"20898:47:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":37280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20898:54:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20862:90:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37282,"nodeType":"ExpressionStatement","src":"20862:90:89"}]},"functionSelector":"44ea8763","id":37284,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetAggregateSwapFeeAmount","nameLocation":"20768:31:89","nodeType":"FunctionDefinition","parameters":{"id":37266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37260,"mutability":"mutable","name":"pool","nameLocation":"20808:4:89","nodeType":"VariableDeclaration","scope":37284,"src":"20800:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37259,"name":"address","nodeType":"ElementaryTypeName","src":"20800:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37263,"mutability":"mutable","name":"token","nameLocation":"20821:5:89","nodeType":"VariableDeclaration","scope":37284,"src":"20814:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37262,"nodeType":"UserDefinedTypeName","pathNode":{"id":37261,"name":"IERC20","nameLocations":["20814:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"20814:6:89"},"referencedDeclaration":39274,"src":"20814:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37265,"mutability":"mutable","name":"value","nameLocation":"20836:5:89","nodeType":"VariableDeclaration","scope":37284,"src":"20828:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37264,"name":"uint256","nodeType":"ElementaryTypeName","src":"20828:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20799:43:89"},"returnParameters":{"id":37267,"nodeType":"ParameterList","parameters":[],"src":"20852:0:89"},"scope":38235,"src":"20759:200:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[897],"body":{"id":37309,"nodeType":"Block","src":"21059:111:89","statements":[{"expression":{"id":37307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":37294,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"21069:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":37297,"indexExpression":{"id":37295,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37286,"src":"21090:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21069:26:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":37298,"indexExpression":{"id":37296,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37289,"src":"21096:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21069:33:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37305,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37291,"src":"21157:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":37299,"name":"_aggregateFeeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27802,"src":"21105:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$_$","typeString":"mapping(address => mapping(contract IERC20 => bytes32))"}},"id":37301,"indexExpression":{"id":37300,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37286,"src":"21126:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21105:26:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC20_$39274_$_t_bytes32_$","typeString":"mapping(contract IERC20 => bytes32)"}},"id":37303,"indexExpression":{"id":37302,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37289,"src":"21132:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21105:33:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21139:17:89","memberName":"setBalanceDerived","nodeType":"MemberAccess","referencedDeclaration":5901,"src":"21105:51:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256) pure returns (bytes32)"}},"id":37306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21105:58:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"21069:94:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37308,"nodeType":"ExpressionStatement","src":"21069:94:89"}]},"functionSelector":"7004b0f1","id":37310,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetAggregateYieldFeeAmount","nameLocation":"20974:32:89","nodeType":"FunctionDefinition","parameters":{"id":37292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37286,"mutability":"mutable","name":"pool","nameLocation":"21015:4:89","nodeType":"VariableDeclaration","scope":37310,"src":"21007:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37285,"name":"address","nodeType":"ElementaryTypeName","src":"21007:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37289,"mutability":"mutable","name":"token","nameLocation":"21028:5:89","nodeType":"VariableDeclaration","scope":37310,"src":"21021:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37288,"nodeType":"UserDefinedTypeName","pathNode":{"id":37287,"name":"IERC20","nameLocations":["21021:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"21021:6:89"},"referencedDeclaration":39274,"src":"21021:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37291,"mutability":"mutable","name":"value","nameLocation":"21043:5:89","nodeType":"VariableDeclaration","scope":37310,"src":"21035:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37290,"name":"uint256","nodeType":"ElementaryTypeName","src":"21035:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21006:43:89"},"returnParameters":{"id":37293,"nodeType":"ParameterList","parameters":[],"src":"21059:0:89"},"scope":38235,"src":"20965:205:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[904],"body":{"id":37328,"nodeType":"Block","src":"21259:99:89","statements":[{"expression":{"id":37326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":37317,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"21269:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":37319,"indexExpression":{"id":37318,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37312,"src":"21285:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21269:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37314,"src":"21345:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":37320,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"21293:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":37322,"indexExpression":{"id":37321,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37312,"src":"21309:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21293:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":37323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21315:29:89","memberName":"setAggregateSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29701,"src":"21293:51:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":37325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21293:58:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"21269:82:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":37327,"nodeType":"ExpressionStatement","src":"21269:82:89"}]},"functionSelector":"cfcc2209","id":37329,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetAggregateSwapFeePercentage","nameLocation":"21185:35:89","nodeType":"FunctionDefinition","parameters":{"id":37315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37312,"mutability":"mutable","name":"pool","nameLocation":"21229:4:89","nodeType":"VariableDeclaration","scope":37329,"src":"21221:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37311,"name":"address","nodeType":"ElementaryTypeName","src":"21221:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37314,"mutability":"mutable","name":"value","nameLocation":"21243:5:89","nodeType":"VariableDeclaration","scope":37329,"src":"21235:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37313,"name":"uint256","nodeType":"ElementaryTypeName","src":"21235:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21220:29:89"},"returnParameters":{"id":37316,"nodeType":"ParameterList","parameters":[],"src":"21259:0:89"},"scope":38235,"src":"21176:182:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[911],"body":{"id":37347,"nodeType":"Block","src":"21448:100:89","statements":[{"expression":{"id":37345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":37336,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"21458:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":37338,"indexExpression":{"id":37337,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37331,"src":"21474:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21458:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37333,"src":"21535:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":37339,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"21482:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":37341,"indexExpression":{"id":37340,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37331,"src":"21498:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21482:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":37342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21504:30:89","memberName":"setAggregateYieldFeePercentage","nodeType":"MemberAccess","referencedDeclaration":29762,"src":"21482:52:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$attached_to$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":37344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21482:59:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"21458:83:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":37346,"nodeType":"ExpressionStatement","src":"21458:83:89"}]},"functionSelector":"920af066","id":37348,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetAggregateYieldFeePercentage","nameLocation":"21373:36:89","nodeType":"FunctionDefinition","parameters":{"id":37334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37331,"mutability":"mutable","name":"pool","nameLocation":"21418:4:89","nodeType":"VariableDeclaration","scope":37348,"src":"21410:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37330,"name":"address","nodeType":"ElementaryTypeName","src":"21410:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37333,"mutability":"mutable","name":"value","nameLocation":"21432:5:89","nodeType":"VariableDeclaration","scope":37348,"src":"21424:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37332,"name":"uint256","nodeType":"ElementaryTypeName","src":"21424:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21409:29:89"},"returnParameters":{"id":37335,"nodeType":"ParameterList","parameters":[],"src":"21448:0:89"},"scope":38235,"src":"21364:184:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[926],"body":{"id":37369,"nodeType":"Block","src":"21755:78:89","statements":[{"expression":{"arguments":[{"id":37364,"name":"vaultSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37351,"src":"21793:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"}},{"id":37365,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37354,"src":"21810:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"}},{"id":37366,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37357,"src":"21817:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams memory"},{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState memory"},{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}],"id":37363,"name":"_buildPoolSwapParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19601,"src":"21772:20:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_VaultSwapParams_$4536_memory_ptr_$_t_struct$_SwapState_$4443_memory_ptr_$_t_struct$_PoolData_$4511_memory_ptr_$returns$_t_struct$_PoolSwapParams_$4554_memory_ptr_$","typeString":"function (struct VaultSwapParams memory,struct SwapState memory,struct PoolData memory) view returns (struct PoolSwapParams memory)"}},"id":37367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21772:54:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"functionReturnParameters":37362,"id":37368,"nodeType":"Return","src":"21765:61:89"}]},"functionSelector":"16a573c2","id":37370,"implemented":true,"kind":"function","modifiers":[],"name":"manualBuildPoolSwapParams","nameLocation":"21563:25:89","nodeType":"FunctionDefinition","parameters":{"id":37358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37351,"mutability":"mutable","name":"vaultSwapParams","nameLocation":"21621:15:89","nodeType":"VariableDeclaration","scope":37370,"src":"21598:38:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_memory_ptr","typeString":"struct VaultSwapParams"},"typeName":{"id":37350,"nodeType":"UserDefinedTypeName","pathNode":{"id":37349,"name":"VaultSwapParams","nameLocations":["21598:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":4536,"src":"21598:15:89"},"referencedDeclaration":4536,"src":"21598:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSwapParams_$4536_storage_ptr","typeString":"struct VaultSwapParams"}},"visibility":"internal"},{"constant":false,"id":37354,"mutability":"mutable","name":"state","nameLocation":"21663:5:89","nodeType":"VariableDeclaration","scope":37370,"src":"21646:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_memory_ptr","typeString":"struct SwapState"},"typeName":{"id":37353,"nodeType":"UserDefinedTypeName","pathNode":{"id":37352,"name":"SwapState","nameLocations":["21646:9:89"],"nodeType":"IdentifierPath","referencedDeclaration":4443,"src":"21646:9:89"},"referencedDeclaration":4443,"src":"21646:9:89","typeDescriptions":{"typeIdentifier":"t_struct$_SwapState_$4443_storage_ptr","typeString":"struct SwapState"}},"visibility":"internal"},{"constant":false,"id":37357,"mutability":"mutable","name":"poolData","nameLocation":"21694:8:89","nodeType":"VariableDeclaration","scope":37370,"src":"21678:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37356,"nodeType":"UserDefinedTypeName","pathNode":{"id":37355,"name":"PoolData","nameLocations":["21678:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"21678:8:89"},"referencedDeclaration":4511,"src":"21678:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"21588:120:89"},"returnParameters":{"id":37362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37370,"src":"21732:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":37360,"nodeType":"UserDefinedTypeName","pathNode":{"id":37359,"name":"PoolSwapParams","nameLocations":["21732:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"21732:14:89"},"referencedDeclaration":4554,"src":"21732:14:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"21731:23:89"},"scope":38235,"src":"21554:279:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[945],"body":{"id":37397,"nodeType":"Block","src":"22123:116:89","statements":[{"expression":{"arguments":[{"id":37390,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37373,"src":"22175:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":37391,"name":"totalSwapFeeAmountScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37375,"src":"22185:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37392,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37377,"src":"22213:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":37393,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37380,"src":"22219:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37394,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37382,"src":"22226:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":37389,"name":"_computeAndChargeAggregateSwapFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21334,"src":"22140:34:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_uint256_$_t_address_$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (struct PoolData memory,uint256,address,contract IERC20,uint256) returns (uint256,uint256)"}},"id":37395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22140:92:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":37388,"id":37396,"nodeType":"Return","src":"22133:99:89"}]},"functionSelector":"be6b4d2a","id":37398,"implemented":true,"kind":"function","modifiers":[],"name":"manualComputeAndChargeAggregateSwapFees","nameLocation":"21848:39:89","nodeType":"FunctionDefinition","parameters":{"id":37383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37373,"mutability":"mutable","name":"poolData","nameLocation":"21913:8:89","nodeType":"VariableDeclaration","scope":37398,"src":"21897:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37372,"nodeType":"UserDefinedTypeName","pathNode":{"id":37371,"name":"PoolData","nameLocations":["21897:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"21897:8:89"},"referencedDeclaration":4511,"src":"21897:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37375,"mutability":"mutable","name":"totalSwapFeeAmountScaled18","nameLocation":"21939:26:89","nodeType":"VariableDeclaration","scope":37398,"src":"21931:34:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37374,"name":"uint256","nodeType":"ElementaryTypeName","src":"21931:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37377,"mutability":"mutable","name":"pool","nameLocation":"21983:4:89","nodeType":"VariableDeclaration","scope":37398,"src":"21975:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37376,"name":"address","nodeType":"ElementaryTypeName","src":"21975:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37380,"mutability":"mutable","name":"token","nameLocation":"22004:5:89","nodeType":"VariableDeclaration","scope":37398,"src":"21997:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37379,"nodeType":"UserDefinedTypeName","pathNode":{"id":37378,"name":"IERC20","nameLocations":["21997:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"21997:6:89"},"referencedDeclaration":39274,"src":"21997:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37382,"mutability":"mutable","name":"index","nameLocation":"22027:5:89","nodeType":"VariableDeclaration","scope":37398,"src":"22019:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37381,"name":"uint256","nodeType":"ElementaryTypeName","src":"22019:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21887:151:89"},"returnParameters":{"id":37388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37385,"mutability":"mutable","name":"totalSwapFeeAmountRaw","nameLocation":"22065:21:89","nodeType":"VariableDeclaration","scope":37398,"src":"22057:29:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37384,"name":"uint256","nodeType":"ElementaryTypeName","src":"22057:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37387,"mutability":"mutable","name":"aggregateSwapFeeAmountRaw","nameLocation":"22096:25:89","nodeType":"VariableDeclaration","scope":37398,"src":"22088:33:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37386,"name":"uint256","nodeType":"ElementaryTypeName","src":"22088:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22056:66:89"},"scope":38235,"src":"21839:400:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[959],"body":{"id":37423,"nodeType":"Block","src":"22433:119:89","statements":[{"expression":{"arguments":[{"baseExpression":{"id":37415,"name":"_poolTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27795,"src":"22475:18:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bytes32_$_$","typeString":"mapping(address => mapping(uint256 => bytes32))"}},"id":37417,"indexExpression":{"id":37416,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37400,"src":"22494:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22475:24:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"}},{"id":37418,"name":"roundingDirection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37406,"src":"22501:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_mapping$_t_uint256_$_t_bytes32_$","typeString":"mapping(uint256 => bytes32)"},{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}],"expression":{"id":37412,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37403,"src":"22443:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":37414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22452:22:89","memberName":"reloadBalancesAndRates","nodeType":"MemberAccess","referencedDeclaration":30410,"src":"22443:31:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_PoolData_$4511_memory_ptr_$_t_mapping$_t_uint256_$_t_bytes32_$_$_t_enum$_Rounding_$4514_$returns$__$attached_to$_t_struct$_PoolData_$4511_memory_ptr_$","typeString":"function (struct PoolData memory,mapping(uint256 => bytes32),enum Rounding) view"}},"id":37419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22443:76:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37420,"nodeType":"ExpressionStatement","src":"22443:76:89"},{"expression":{"id":37421,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37403,"src":"22537:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"functionReturnParameters":37411,"id":37422,"nodeType":"Return","src":"22530:15:89"}]},"functionSelector":"d86c3fef","id":37424,"implemented":true,"kind":"function","modifiers":[],"name":"manualUpdatePoolDataLiveBalancesAndRates","nameLocation":"22254:40:89","nodeType":"FunctionDefinition","parameters":{"id":37407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37400,"mutability":"mutable","name":"pool","nameLocation":"22312:4:89","nodeType":"VariableDeclaration","scope":37424,"src":"22304:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37399,"name":"address","nodeType":"ElementaryTypeName","src":"22304:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37403,"mutability":"mutable","name":"poolData","nameLocation":"22342:8:89","nodeType":"VariableDeclaration","scope":37424,"src":"22326:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37402,"nodeType":"UserDefinedTypeName","pathNode":{"id":37401,"name":"PoolData","nameLocations":["22326:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"22326:8:89"},"referencedDeclaration":4511,"src":"22326:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37406,"mutability":"mutable","name":"roundingDirection","nameLocation":"22369:17:89","nodeType":"VariableDeclaration","scope":37424,"src":"22360:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":37405,"nodeType":"UserDefinedTypeName","pathNode":{"id":37404,"name":"Rounding","nameLocations":["22360:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"22360:8:89"},"referencedDeclaration":4514,"src":"22360:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"22294:98:89"},"returnParameters":{"id":37411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37410,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37424,"src":"22416:15:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37409,"nodeType":"UserDefinedTypeName","pathNode":{"id":37408,"name":"PoolData","nameLocations":["22416:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"22416:8:89"},"referencedDeclaration":4511,"src":"22416:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"}],"src":"22415:17:89"},"scope":38235,"src":"22245:307:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[984],"body":{"id":37486,"nodeType":"Block","src":"22970:384:89","statements":[{"assignments":[37450],"declarations":[{"constant":false,"id":37450,"mutability":"mutable","name":"paramsHashBefore","nameLocation":"22988:16:89","nodeType":"VariableDeclaration","scope":37486,"src":"22980:24:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":37449,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22980:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":37457,"initialValue":{"arguments":[{"arguments":[{"id":37454,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37430,"src":"23028:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}],"expression":{"id":37452,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"23017:3:89","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":37453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23021:6:89","memberName":"encode","nodeType":"MemberAccess","src":"23017:10:89","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":37455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23017:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":37451,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"23007:9:89","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":37456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23007:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"22980:56:89"},{"expression":{"id":37468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":37458,"name":"amountsInRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37440,"src":"23048:12:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":37459,"name":"amountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37443,"src":"23062:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":37460,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37445,"src":"23081:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37461,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37447,"src":"23095:10:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":37462,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"23047:59:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37464,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37427,"src":"23136:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":37465,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37430,"src":"23158:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},{"id":37466,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37433,"src":"23178:20:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":37463,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20585,"src":"23109:13:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct PoolData memory,struct AddLiquidityParams memory,uint256[] memory) returns (uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"id":37467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23109:99:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"src":"23047:161:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37469,"nodeType":"ExpressionStatement","src":"23047:161:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":37478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":37471,"name":"paramsHashBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37450,"src":"23227:16:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":37475,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37430,"src":"23268:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}],"expression":{"id":37473,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"23257:3:89","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":37474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23261:6:89","memberName":"encode","nodeType":"MemberAccess","src":"23257:10:89","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":37476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23257:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":37472,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"23247:9:89","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":37477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23247:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"23227:49:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e70757420706172616d65746572732068617665206368616e676564","id":37479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23278:31:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_14ed3a0ca3a8e39a28d1d4fd38750bd93b173beb93bbefce0e587c4b758fd3eb","typeString":"literal_string \"Input parameters have changed\""},"value":"Input parameters have changed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_14ed3a0ca3a8e39a28d1d4fd38750bd93b173beb93bbefce0e587c4b758fd3eb","typeString":"literal_string \"Input parameters have changed\""}],"id":37470,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23219:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":37480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23219:91:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37481,"nodeType":"ExpressionStatement","src":"23219:91:89"},{"expression":{"id":37484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":37482,"name":"updatedPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37437,"src":"23321:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":37483,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37427,"src":"23339:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"src":"23321:26:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":37485,"nodeType":"ExpressionStatement","src":"23321:26:89"}]},"functionSelector":"0790de46","id":37487,"implemented":true,"kind":"function","modifiers":[],"name":"manualAddLiquidity","nameLocation":"22567:18:89","nodeType":"FunctionDefinition","parameters":{"id":37434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37427,"mutability":"mutable","name":"poolData","nameLocation":"22611:8:89","nodeType":"VariableDeclaration","scope":37487,"src":"22595:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37426,"nodeType":"UserDefinedTypeName","pathNode":{"id":37425,"name":"PoolData","nameLocations":["22595:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"22595:8:89"},"referencedDeclaration":4511,"src":"22595:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37430,"mutability":"mutable","name":"params","nameLocation":"22655:6:89","nodeType":"VariableDeclaration","scope":37487,"src":"22629:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":37429,"nodeType":"UserDefinedTypeName","pathNode":{"id":37428,"name":"AddLiquidityParams","nameLocations":["22629:18:89"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"22629:18:89"},"referencedDeclaration":4605,"src":"22629:18:89","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":37433,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"22688:20:89","nodeType":"VariableDeclaration","scope":37487,"src":"22671:37:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37431,"name":"uint256","nodeType":"ElementaryTypeName","src":"22671:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37432,"nodeType":"ArrayTypeName","src":"22671:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22585:129:89"},"returnParameters":{"id":37448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37437,"mutability":"mutable","name":"updatedPoolData","nameLocation":"22778:15:89","nodeType":"VariableDeclaration","scope":37487,"src":"22762:31:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37436,"nodeType":"UserDefinedTypeName","pathNode":{"id":37435,"name":"PoolData","nameLocations":["22762:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"22762:8:89"},"referencedDeclaration":4511,"src":"22762:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37440,"mutability":"mutable","name":"amountsInRaw","nameLocation":"22824:12:89","nodeType":"VariableDeclaration","scope":37487,"src":"22807:29:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37438,"name":"uint256","nodeType":"ElementaryTypeName","src":"22807:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37439,"nodeType":"ArrayTypeName","src":"22807:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":37443,"mutability":"mutable","name":"amountsInScaled18","nameLocation":"22867:17:89","nodeType":"VariableDeclaration","scope":37487,"src":"22850:34:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37441,"name":"uint256","nodeType":"ElementaryTypeName","src":"22850:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37442,"nodeType":"ArrayTypeName","src":"22850:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":37445,"mutability":"mutable","name":"bptAmountOut","nameLocation":"22906:12:89","nodeType":"VariableDeclaration","scope":37487,"src":"22898:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37444,"name":"uint256","nodeType":"ElementaryTypeName","src":"22898:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37447,"mutability":"mutable","name":"returnData","nameLocation":"22945:10:89","nodeType":"VariableDeclaration","scope":37487,"src":"22932:23:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":37446,"name":"bytes","nodeType":"ElementaryTypeName","src":"22932:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22748:217:89"},"scope":38235,"src":"22558:796:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[996],"body":{"id":37507,"nodeType":"Block","src":"23549:70:89","statements":[{"expression":{"arguments":[{"id":37502,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37490,"src":"23573:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":37503,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37493,"src":"23583:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"}},{"id":37504,"name":"maxAmountsInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37496,"src":"23591:20:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":37501,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20585,"src":"23559:13:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_AddLiquidityParams_$4605_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"function (struct PoolData memory,struct AddLiquidityParams memory,uint256[] memory) returns (uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"id":37505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23559:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory,uint256,bytes memory)"}},"id":37506,"nodeType":"ExpressionStatement","src":"23559:53:89"}]},"functionSelector":"eeda9991","id":37508,"implemented":true,"kind":"function","modifiers":[{"id":37499,"kind":"modifierInvocation","modifierName":{"id":37498,"name":"nonReentrant","nameLocations":["23536:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"23536:12:89"},"nodeType":"ModifierInvocation","src":"23536:12:89"}],"name":"manualReentrancyAddLiquidity","nameLocation":"23369:28:89","nodeType":"FunctionDefinition","parameters":{"id":37497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37490,"mutability":"mutable","name":"poolData","nameLocation":"23423:8:89","nodeType":"VariableDeclaration","scope":37508,"src":"23407:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37489,"nodeType":"UserDefinedTypeName","pathNode":{"id":37488,"name":"PoolData","nameLocations":["23407:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"23407:8:89"},"referencedDeclaration":4511,"src":"23407:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37493,"mutability":"mutable","name":"params","nameLocation":"23467:6:89","nodeType":"VariableDeclaration","scope":37508,"src":"23441:32:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_memory_ptr","typeString":"struct AddLiquidityParams"},"typeName":{"id":37492,"nodeType":"UserDefinedTypeName","pathNode":{"id":37491,"name":"AddLiquidityParams","nameLocations":["23441:18:89"],"nodeType":"IdentifierPath","referencedDeclaration":4605,"src":"23441:18:89"},"referencedDeclaration":4605,"src":"23441:18:89","typeDescriptions":{"typeIdentifier":"t_struct$_AddLiquidityParams_$4605_storage_ptr","typeString":"struct AddLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":37496,"mutability":"mutable","name":"maxAmountsInScaled18","nameLocation":"23500:20:89","nodeType":"VariableDeclaration","scope":37508,"src":"23483:37:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37494,"name":"uint256","nodeType":"ElementaryTypeName","src":"23483:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37495,"nodeType":"ArrayTypeName","src":"23483:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"23397:129:89"},"returnParameters":{"id":37500,"nodeType":"ParameterList","parameters":[],"src":"23549:0:89"},"scope":38235,"src":"23360:259:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1027],"body":{"id":37570,"nodeType":"Block","src":"24045:389:89","statements":[{"assignments":[37534],"declarations":[{"constant":false,"id":37534,"mutability":"mutable","name":"paramsHashBefore","nameLocation":"24063:16:89","nodeType":"VariableDeclaration","scope":37570,"src":"24055:24:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":37533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24055:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":37541,"initialValue":{"arguments":[{"arguments":[{"id":37538,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37514,"src":"24103:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}],"expression":{"id":37536,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"24092:3:89","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":37537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24096:6:89","memberName":"encode","nodeType":"MemberAccess","src":"24092:10:89","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":37539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24092:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":37535,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"24082:9:89","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":37540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24082:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"24055:56:89"},{"expression":{"id":37552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":37542,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37523,"src":"24123:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37543,"name":"amountsOutRaw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37526,"src":"24136:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":37544,"name":"amountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37529,"src":"24151:18:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":37545,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37531,"src":"24171:10:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":37546,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24122:60:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37548,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37511,"src":"24215:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":37549,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37514,"src":"24237:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},{"id":37550,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37517,"src":"24257:21:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":37547,"name":"_removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21241,"src":"24185:16:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct PoolData memory,struct RemoveLiquidityParams memory,uint256[] memory) returns (uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"id":37551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24185:103:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"src":"24122:166:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37553,"nodeType":"ExpressionStatement","src":"24122:166:89"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":37562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":37555,"name":"paramsHashBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37534,"src":"24307:16:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":37559,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37514,"src":"24348:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}],"expression":{"id":37557,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"24337:3:89","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":37558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24341:6:89","memberName":"encode","nodeType":"MemberAccess","src":"24337:10:89","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":37560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24337:18:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":37556,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"24327:9:89","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":37561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24327:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"24307:49:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e70757420706172616d65746572732068617665206368616e676564","id":37563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24358:31:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_14ed3a0ca3a8e39a28d1d4fd38750bd93b173beb93bbefce0e587c4b758fd3eb","typeString":"literal_string \"Input parameters have changed\""},"value":"Input parameters have changed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_14ed3a0ca3a8e39a28d1d4fd38750bd93b173beb93bbefce0e587c4b758fd3eb","typeString":"literal_string \"Input parameters have changed\""}],"id":37554,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24299:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":37564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24299:91:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37565,"nodeType":"ExpressionStatement","src":"24299:91:89"},{"expression":{"id":37568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":37566,"name":"updatedPoolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37521,"src":"24401:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":37567,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37511,"src":"24419:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"src":"24401:26:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},"id":37569,"nodeType":"ExpressionStatement","src":"24401:26:89"}]},"functionSelector":"f1320097","id":37571,"implemented":true,"kind":"function","modifiers":[],"name":"manualRemoveLiquidity","nameLocation":"23634:21:89","nodeType":"FunctionDefinition","parameters":{"id":37518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37511,"mutability":"mutable","name":"poolData","nameLocation":"23681:8:89","nodeType":"VariableDeclaration","scope":37571,"src":"23665:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37510,"nodeType":"UserDefinedTypeName","pathNode":{"id":37509,"name":"PoolData","nameLocations":["23665:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"23665:8:89"},"referencedDeclaration":4511,"src":"23665:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37514,"mutability":"mutable","name":"params","nameLocation":"23728:6:89","nodeType":"VariableDeclaration","scope":37571,"src":"23699:35:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":37513,"nodeType":"UserDefinedTypeName","pathNode":{"id":37512,"name":"RemoveLiquidityParams","nameLocations":["23699:21:89"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"23699:21:89"},"referencedDeclaration":4626,"src":"23699:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":37517,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"23761:21:89","nodeType":"VariableDeclaration","scope":37571,"src":"23744:38:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37515,"name":"uint256","nodeType":"ElementaryTypeName","src":"23744:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37516,"nodeType":"ArrayTypeName","src":"23744:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"23655:133:89"},"returnParameters":{"id":37532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37521,"mutability":"mutable","name":"updatedPoolData","nameLocation":"23852:15:89","nodeType":"VariableDeclaration","scope":37571,"src":"23836:31:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37520,"nodeType":"UserDefinedTypeName","pathNode":{"id":37519,"name":"PoolData","nameLocations":["23836:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"23836:8:89"},"referencedDeclaration":4511,"src":"23836:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37523,"mutability":"mutable","name":"bptAmountIn","nameLocation":"23889:11:89","nodeType":"VariableDeclaration","scope":37571,"src":"23881:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37522,"name":"uint256","nodeType":"ElementaryTypeName","src":"23881:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37526,"mutability":"mutable","name":"amountsOutRaw","nameLocation":"23931:13:89","nodeType":"VariableDeclaration","scope":37571,"src":"23914:30:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37524,"name":"uint256","nodeType":"ElementaryTypeName","src":"23914:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37525,"nodeType":"ArrayTypeName","src":"23914:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":37529,"mutability":"mutable","name":"amountsOutScaled18","nameLocation":"23975:18:89","nodeType":"VariableDeclaration","scope":37571,"src":"23958:35:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37527,"name":"uint256","nodeType":"ElementaryTypeName","src":"23958:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37528,"nodeType":"ArrayTypeName","src":"23958:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":37531,"mutability":"mutable","name":"returnData","nameLocation":"24020:10:89","nodeType":"VariableDeclaration","scope":37571,"src":"24007:23:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":37530,"name":"bytes","nodeType":"ElementaryTypeName","src":"24007:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"23822:218:89"},"scope":38235,"src":"23625:809:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1039],"body":{"id":37591,"nodeType":"Block","src":"24636:74:89","statements":[{"expression":{"arguments":[{"id":37586,"name":"poolData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37574,"src":"24663:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"}},{"id":37587,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37577,"src":"24673:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"}},{"id":37588,"name":"minAmountsOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37580,"src":"24681:21:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData memory"},{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":37585,"name":"_removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21241,"src":"24646:16:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_PoolData_$4511_memory_ptr_$_t_struct$_RemoveLiquidityParams_$4626_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct PoolData memory,struct RemoveLiquidityParams memory,uint256[] memory) returns (uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"id":37589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24646:57:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory,uint256[] memory,bytes memory)"}},"id":37590,"nodeType":"ExpressionStatement","src":"24646:57:89"}]},"functionSelector":"28121e27","id":37592,"implemented":true,"kind":"function","modifiers":[{"id":37583,"kind":"modifierInvocation","modifierName":{"id":37582,"name":"nonReentrant","nameLocations":["24623:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"24623:12:89"},"nodeType":"ModifierInvocation","src":"24623:12:89"}],"name":"manualReentrancyRemoveLiquidity","nameLocation":"24449:31:89","nodeType":"FunctionDefinition","parameters":{"id":37581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37574,"mutability":"mutable","name":"poolData","nameLocation":"24506:8:89","nodeType":"VariableDeclaration","scope":37592,"src":"24490:24:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_memory_ptr","typeString":"struct PoolData"},"typeName":{"id":37573,"nodeType":"UserDefinedTypeName","pathNode":{"id":37572,"name":"PoolData","nameLocations":["24490:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":4511,"src":"24490:8:89"},"referencedDeclaration":4511,"src":"24490:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolData_$4511_storage_ptr","typeString":"struct PoolData"}},"visibility":"internal"},{"constant":false,"id":37577,"mutability":"mutable","name":"params","nameLocation":"24553:6:89","nodeType":"VariableDeclaration","scope":37592,"src":"24524:35:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_memory_ptr","typeString":"struct RemoveLiquidityParams"},"typeName":{"id":37576,"nodeType":"UserDefinedTypeName","pathNode":{"id":37575,"name":"RemoveLiquidityParams","nameLocations":["24524:21:89"],"nodeType":"IdentifierPath","referencedDeclaration":4626,"src":"24524:21:89"},"referencedDeclaration":4626,"src":"24524:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_RemoveLiquidityParams_$4626_storage_ptr","typeString":"struct RemoveLiquidityParams"}},"visibility":"internal"},{"constant":false,"id":37580,"mutability":"mutable","name":"minAmountsOutScaled18","nameLocation":"24586:21:89","nodeType":"VariableDeclaration","scope":37592,"src":"24569:38:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":37578,"name":"uint256","nodeType":"ElementaryTypeName","src":"24569:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37579,"nodeType":"ArrayTypeName","src":"24569:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"24480:133:89"},"returnParameters":{"id":37584,"nodeType":"ParameterList","parameters":[],"src":"24636:0:89"},"scope":38235,"src":"24440:270:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[600],"body":{"id":37611,"nodeType":"Block","src":"24816:148:89","statements":[{"assignments":[37601],"declarations":[{"constant":false,"id":37601,"mutability":"mutable","name":"bufferBalance","nameLocation":"24834:13:89","nodeType":"VariableDeclaration","scope":37611,"src":"24826:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":37600,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24826:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":37605,"initialValue":{"baseExpression":{"id":37602,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"24850:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":37604,"indexExpression":{"id":37603,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37595,"src":"24871:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24850:34:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"24826:58:89"},{"expression":{"arguments":[{"id":37608,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37595,"src":"24944:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":37606,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37601,"src":"24901:13:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24915:28:89","memberName":"getBufferUnderlyingImbalance","nodeType":"MemberAccess","referencedDeclaration":5389,"src":"24901:42:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_contract$_IERC4626_$38998_$returns$_t_int256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,contract IERC4626) view returns (int256)"}},"id":37609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24901:56:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":37599,"id":37610,"nodeType":"Return","src":"24894:63:89"}]},"functionSelector":"2606a4de","id":37612,"implemented":true,"kind":"function","modifiers":[],"name":"internalGetBufferUnderlyingImbalance","nameLocation":"24725:36:89","nodeType":"FunctionDefinition","parameters":{"id":37596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37595,"mutability":"mutable","name":"wrappedToken","nameLocation":"24771:12:89","nodeType":"VariableDeclaration","scope":37612,"src":"24762:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":37594,"nodeType":"UserDefinedTypeName","pathNode":{"id":37593,"name":"IERC4626","nameLocations":["24762:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"24762:8:89"},"referencedDeclaration":38998,"src":"24762:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"24761:23:89"},"returnParameters":{"id":37599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37612,"src":"24808:6:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":37597,"name":"int256","nodeType":"ElementaryTypeName","src":"24808:6:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24807:8:89"},"scope":38235,"src":"24716:248:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[608],"body":{"id":37631,"nodeType":"Block","src":"25067:145:89","statements":[{"assignments":[37621],"declarations":[{"constant":false,"id":37621,"mutability":"mutable","name":"bufferBalance","nameLocation":"25085:13:89","nodeType":"VariableDeclaration","scope":37631,"src":"25077:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":37620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25077:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":37625,"initialValue":{"baseExpression":{"id":37622,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"25101:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":37624,"indexExpression":{"id":37623,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37615,"src":"25122:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25101:34:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"25077:58:89"},{"expression":{"arguments":[{"id":37628,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37615,"src":"25192:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}],"expression":{"id":37626,"name":"bufferBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37621,"src":"25152:13:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25166:25:89","memberName":"getBufferWrappedImbalance","nodeType":"MemberAccess","referencedDeclaration":5438,"src":"25152:39:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_contract$_IERC4626_$38998_$returns$_t_int256_$attached_to$_t_bytes32_$","typeString":"function (bytes32,contract IERC4626) view returns (int256)"}},"id":37629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25152:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":37619,"id":37630,"nodeType":"Return","src":"25145:60:89"}]},"functionSelector":"a40f9592","id":37632,"implemented":true,"kind":"function","modifiers":[],"name":"internalGetBufferWrappedImbalance","nameLocation":"24979:33:89","nodeType":"FunctionDefinition","parameters":{"id":37616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37615,"mutability":"mutable","name":"wrappedToken","nameLocation":"25022:12:89","nodeType":"VariableDeclaration","scope":37632,"src":"25013:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":37614,"nodeType":"UserDefinedTypeName","pathNode":{"id":37613,"name":"IERC4626","nameLocations":["25013:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"25013:8:89"},"referencedDeclaration":38998,"src":"25013:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"25012:23:89"},"returnParameters":{"id":37619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37632,"src":"25059:6:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":37617,"name":"int256","nodeType":"ElementaryTypeName","src":"25059:6:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25058:8:89"},"scope":38235,"src":"24970:242:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[616],"body":{"id":37644,"nodeType":"Block","src":"25310:58:89","statements":[{"expression":{"baseExpression":{"id":37640,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"25327:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":37642,"indexExpression":{"id":37641,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37635,"src":"25348:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25327:34:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":37639,"id":37643,"nodeType":"Return","src":"25320:41:89"}]},"functionSelector":"e5b08ffb","id":37645,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferTokenBalancesBytes","nameLocation":"25227:27:89","nodeType":"FunctionDefinition","parameters":{"id":37636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37635,"mutability":"mutable","name":"wrappedToken","nameLocation":"25264:12:89","nodeType":"VariableDeclaration","scope":37645,"src":"25255:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":37634,"nodeType":"UserDefinedTypeName","pathNode":{"id":37633,"name":"IERC4626","nameLocations":["25255:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"25255:8:89"},"referencedDeclaration":38998,"src":"25255:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"}],"src":"25254:23:89"},"returnParameters":{"id":37639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37645,"src":"25301:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":37637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25301:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"25300:9:89"},"scope":38235,"src":"25218:150:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1052],"body":{"id":37665,"nodeType":"Block","src":"25537:88:89","statements":[{"expression":{"arguments":[{"id":37659,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37648,"src":"25559:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37660,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37651,"src":"25576:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37661,"name":"underlyingHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37653,"src":"25590:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37662,"name":"wrappedHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37655,"src":"25606:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":37658,"name":"_settleWrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22141,"src":"25547:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,contract IERC20,uint256,uint256)"}},"id":37663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25547:71:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37664,"nodeType":"ExpressionStatement","src":"25547:71:89"}]},"functionSelector":"ac004855","id":37666,"implemented":true,"kind":"function","modifiers":[],"name":"manualSettleWrap","nameLocation":"25383:16:89","nodeType":"FunctionDefinition","parameters":{"id":37656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37648,"mutability":"mutable","name":"underlyingToken","nameLocation":"25416:15:89","nodeType":"VariableDeclaration","scope":37666,"src":"25409:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37647,"nodeType":"UserDefinedTypeName","pathNode":{"id":37646,"name":"IERC20","nameLocations":["25409:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"25409:6:89"},"referencedDeclaration":39274,"src":"25409:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37651,"mutability":"mutable","name":"wrappedToken","nameLocation":"25448:12:89","nodeType":"VariableDeclaration","scope":37666,"src":"25441:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37650,"nodeType":"UserDefinedTypeName","pathNode":{"id":37649,"name":"IERC20","nameLocations":["25441:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"25441:6:89"},"referencedDeclaration":39274,"src":"25441:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37653,"mutability":"mutable","name":"underlyingHint","nameLocation":"25478:14:89","nodeType":"VariableDeclaration","scope":37666,"src":"25470:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37652,"name":"uint256","nodeType":"ElementaryTypeName","src":"25470:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37655,"mutability":"mutable","name":"wrappedHint","nameLocation":"25510:11:89","nodeType":"VariableDeclaration","scope":37666,"src":"25502:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37654,"name":"uint256","nodeType":"ElementaryTypeName","src":"25502:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25399:128:89"},"returnParameters":{"id":37657,"nodeType":"ParameterList","parameters":[],"src":"25537:0:89"},"scope":38235,"src":"25374:251:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1065],"body":{"id":37686,"nodeType":"Block","src":"25796:90:89","statements":[{"expression":{"arguments":[{"id":37680,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37669,"src":"25820:15:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37681,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37672,"src":"25837:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37682,"name":"underlyingHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37674,"src":"25851:14:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37683,"name":"wrappedHint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37676,"src":"25867:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":37679,"name":"_settleUnwrap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22179,"src":"25806:13:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,contract IERC20,uint256,uint256)"}},"id":37684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25806:73:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37685,"nodeType":"ExpressionStatement","src":"25806:73:89"}]},"functionSelector":"b6f680f4","id":37687,"implemented":true,"kind":"function","modifiers":[],"name":"manualSettleUnwrap","nameLocation":"25640:18:89","nodeType":"FunctionDefinition","parameters":{"id":37677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37669,"mutability":"mutable","name":"underlyingToken","nameLocation":"25675:15:89","nodeType":"VariableDeclaration","scope":37687,"src":"25668:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37668,"nodeType":"UserDefinedTypeName","pathNode":{"id":37667,"name":"IERC20","nameLocations":["25668:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"25668:6:89"},"referencedDeclaration":39274,"src":"25668:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37672,"mutability":"mutable","name":"wrappedToken","nameLocation":"25707:12:89","nodeType":"VariableDeclaration","scope":37687,"src":"25700:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37671,"nodeType":"UserDefinedTypeName","pathNode":{"id":37670,"name":"IERC20","nameLocations":["25700:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"25700:6:89"},"referencedDeclaration":39274,"src":"25700:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37674,"mutability":"mutable","name":"underlyingHint","nameLocation":"25737:14:89","nodeType":"VariableDeclaration","scope":37687,"src":"25729:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37673,"name":"uint256","nodeType":"ElementaryTypeName","src":"25729:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37676,"mutability":"mutable","name":"wrappedHint","nameLocation":"25769:11:89","nodeType":"VariableDeclaration","scope":37687,"src":"25761:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37675,"name":"uint256","nodeType":"ElementaryTypeName","src":"25761:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25658:128:89"},"returnParameters":{"id":37678,"nodeType":"ParameterList","parameters":[],"src":"25796:0:89"},"scope":38235,"src":"25631:255:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1075],"body":{"id":37704,"nodeType":"Block","src":"25967:43:89","statements":[{"expression":{"arguments":[{"id":37700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37692,"src":"25992:2:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":37701,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37694,"src":"25996:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":37697,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37690,"src":"25977:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":37699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25983:8:89","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"25977:14:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":37702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25977:26:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":37703,"nodeType":"ExpressionStatement","src":"25977:26:89"}]},"functionSelector":"00d7aadb","id":37705,"implemented":true,"kind":"function","modifiers":[],"name":"manualTransfer","nameLocation":"25901:14:89","nodeType":"FunctionDefinition","parameters":{"id":37695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37690,"mutability":"mutable","name":"token","nameLocation":"25923:5:89","nodeType":"VariableDeclaration","scope":37705,"src":"25916:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37689,"nodeType":"UserDefinedTypeName","pathNode":{"id":37688,"name":"IERC20","nameLocations":["25916:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"25916:6:89"},"referencedDeclaration":39274,"src":"25916:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37692,"mutability":"mutable","name":"to","nameLocation":"25938:2:89","nodeType":"VariableDeclaration","scope":37705,"src":"25930:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37691,"name":"address","nodeType":"ElementaryTypeName","src":"25930:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37694,"mutability":"mutable","name":"amount","nameLocation":"25950:6:89","nodeType":"VariableDeclaration","scope":37705,"src":"25942:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37693,"name":"uint256","nodeType":"ElementaryTypeName","src":"25942:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25915:42:89"},"returnParameters":{"id":37696,"nodeType":"ParameterList","parameters":[],"src":"25967:0:89"},"scope":38235,"src":"25892:118:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[999],"body":{"id":37714,"nodeType":"Block","src":"26046:43:89","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":37711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26077:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37708,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"26056:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":37709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26056:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":37710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26070:6:89","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"26056:20:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":37712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26056:26:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37713,"nodeType":"ExpressionStatement","src":"26056:26:89"}]},"functionSelector":"7965c967","id":37715,"implemented":true,"kind":"function","modifiers":[],"name":"forceUnlock","nameLocation":"26025:11:89","nodeType":"FunctionDefinition","parameters":{"id":37706,"nodeType":"ParameterList","parameters":[],"src":"26036:2:89"},"returnParameters":{"id":37707,"nodeType":"ParameterList","parameters":[],"src":"26046:0:89"},"scope":38235,"src":"26016:73:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1002],"body":{"id":37724,"nodeType":"Block","src":"26123:44:89","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":37721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26154:5:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37718,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"26133:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":37719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26133:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"id":37720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26147:6:89","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":9844,"src":"26133:20:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlotType_$9734_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function (StorageSlotExtension.BooleanSlotType,bool)"}},"id":37722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26133:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37723,"nodeType":"ExpressionStatement","src":"26133:27:89"}]},"functionSelector":"6d4908c4","id":37725,"implemented":true,"kind":"function","modifiers":[],"name":"forceLock","nameLocation":"26104:9:89","nodeType":"FunctionDefinition","parameters":{"id":37716,"nodeType":"ParameterList","parameters":[],"src":"26113:2:89"},"returnParameters":{"id":37717,"nodeType":"ParameterList","parameters":[],"src":"26123:0:89"},"scope":38235,"src":"26095:72:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1083],"body":{"id":37737,"nodeType":"Block","src":"26259:45:89","statements":[{"expression":{"baseExpression":{"id":37733,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"26276:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":37735,"indexExpression":{"id":37734,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37727,"src":"26292:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26276:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":37732,"id":37736,"nodeType":"Return","src":"26269:28:89"}]},"functionSelector":"557dba68","id":37738,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetPoolConfigBits","nameLocation":"26182:23:89","nodeType":"FunctionDefinition","parameters":{"id":37728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37727,"mutability":"mutable","name":"pool","nameLocation":"26214:4:89","nodeType":"VariableDeclaration","scope":37738,"src":"26206:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37726,"name":"address","nodeType":"ElementaryTypeName","src":"26206:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26205:14:89"},"returnParameters":{"id":37732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37738,"src":"26243:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":37730,"nodeType":"UserDefinedTypeName","pathNode":{"id":37729,"name":"PoolConfigBits","nameLocations":["26243:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"26243:14:89"},"referencedDeclaration":4364,"src":"26243:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"26242:16:89"},"scope":38235,"src":"26173:131:89","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":37747,"nodeType":"Block","src":"26407:37:89","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37744,"name":"_isUnlocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27859,"src":"26424:11:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_BooleanSlotType_$9734_$","typeString":"function () view returns (StorageSlotExtension.BooleanSlotType)"}},"id":37745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26424:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"functionReturnParameters":37743,"id":37746,"nodeType":"Return","src":"26417:20:89"}]},"functionSelector":"b2469499","id":37748,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetIsUnlocked","nameLocation":"26319:19:89","nodeType":"FunctionDefinition","parameters":{"id":37739,"nodeType":"ParameterList","parameters":[],"src":"26338:2:89"},"returnParameters":{"id":37743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37742,"mutability":"mutable","name":"slot","nameLocation":"26401:4:89","nodeType":"VariableDeclaration","scope":37748,"src":"26364:41:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"},"typeName":{"id":37741,"nodeType":"UserDefinedTypeName","pathNode":{"id":37740,"name":"StorageSlotExtension.BooleanSlotType","nameLocations":["26364:20:89","26385:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":9734,"src":"26364:36:89"},"referencedDeclaration":9734,"src":"26364:36:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlotType_$9734","typeString":"StorageSlotExtension.BooleanSlotType"}},"visibility":"internal"}],"src":"26363:43:89"},"scope":38235,"src":"26310:134:89","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":37757,"nodeType":"Block","src":"26554:44:89","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37754,"name":"_nonZeroDeltaCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27870,"src":"26571:18:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":37755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26571:20:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"functionReturnParameters":37753,"id":37756,"nodeType":"Return","src":"26564:27:89"}]},"functionSelector":"155075e6","id":37758,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetNonzeroDeltaCount","nameLocation":"26459:26:89","nodeType":"FunctionDefinition","parameters":{"id":37749,"nodeType":"ParameterList","parameters":[],"src":"26485:2:89"},"returnParameters":{"id":37753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37752,"mutability":"mutable","name":"slot","nameLocation":"26548:4:89","nodeType":"VariableDeclaration","scope":37758,"src":"26511:41:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"},"typeName":{"id":37751,"nodeType":"UserDefinedTypeName","pathNode":{"id":37750,"name":"StorageSlotExtension.Uint256SlotType","nameLocations":["26511:20:89","26532:15:89"],"nodeType":"IdentifierPath","referencedDeclaration":9768,"src":"26511:36:89"},"referencedDeclaration":9768,"src":"26511:36:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"visibility":"internal"}],"src":"26510:43:89"},"scope":38235,"src":"26450:148:89","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":37767,"nodeType":"Block","src":"26691:38:89","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37764,"name":"_tokenDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27882,"src":"26708:12:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484_$","typeString":"function () view returns (TokenDeltaMappingSlotType)"}},"id":37765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26708:14:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"functionReturnParameters":37763,"id":37766,"nodeType":"Return","src":"26701:21:89"}]},"functionSelector":"1f4475c5","id":37768,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetTokenDeltas","nameLocation":"26613:20:89","nodeType":"FunctionDefinition","parameters":{"id":37759,"nodeType":"ParameterList","parameters":[],"src":"26633:2:89"},"returnParameters":{"id":37763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37762,"mutability":"mutable","name":"slot","nameLocation":"26685:4:89","nodeType":"VariableDeclaration","scope":37768,"src":"26659:30:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"},"typeName":{"id":37761,"nodeType":"UserDefinedTypeName","pathNode":{"id":37760,"name":"TokenDeltaMappingSlotType","nameLocations":["26659:25:89"],"nodeType":"IdentifierPath","referencedDeclaration":6484,"src":"26659:25:89"},"referencedDeclaration":6484,"src":"26659:25:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_TokenDeltaMappingSlotType_$6484","typeString":"TokenDeltaMappingSlotType"}},"visibility":"internal"}],"src":"26658:32:89"},"scope":38235,"src":"26604:125:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1103],"body":{"id":37782,"nodeType":"Block","src":"26822:62:89","statements":[{"expression":{"id":37780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":37776,"name":"_bufferAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27848,"src":"26832:13:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_address_$","typeString":"mapping(contract IERC4626 => address)"}},"id":37778,"indexExpression":{"id":37777,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37771,"src":"26846:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26832:27:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":37779,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37773,"src":"26862:15:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"26832:45:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":37781,"nodeType":"ExpressionStatement","src":"26832:45:89"}]},"functionSelector":"ab62c2b6","id":37783,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetBufferAsset","nameLocation":"26744:20:89","nodeType":"FunctionDefinition","parameters":{"id":37774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37771,"mutability":"mutable","name":"wrappedToken","nameLocation":"26774:12:89","nodeType":"VariableDeclaration","scope":37783,"src":"26765:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":37770,"nodeType":"UserDefinedTypeName","pathNode":{"id":37769,"name":"IERC4626","nameLocations":["26765:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"26765:8:89"},"referencedDeclaration":38998,"src":"26765:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":37773,"mutability":"mutable","name":"underlyingToken","nameLocation":"26796:15:89","nodeType":"VariableDeclaration","scope":37783,"src":"26788:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37772,"name":"address","nodeType":"ElementaryTypeName","src":"26788:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26764:48:89"},"returnParameters":{"id":37775,"nodeType":"ParameterList","parameters":[],"src":"26822:0:89"},"scope":38235,"src":"26735:149:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1113],"body":{"id":37801,"nodeType":"Block","src":"26989:62:89","statements":[{"expression":{"id":37799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":37793,"name":"_bufferLpShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27838,"src":"26999:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(contract IERC4626 => mapping(address => uint256))"}},"id":37796,"indexExpression":{"id":37794,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37786,"src":"27015:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26999:29:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":37797,"indexExpression":{"id":37795,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37788,"src":"27029:5:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26999:36:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":37798,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37790,"src":"27038:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26999:45:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37800,"nodeType":"ExpressionStatement","src":"26999:45:89"}]},"functionSelector":"ff44deab","id":37802,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetBufferOwnerShares","nameLocation":"26899:26:89","nodeType":"FunctionDefinition","parameters":{"id":37791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37786,"mutability":"mutable","name":"wrappedToken","nameLocation":"26935:12:89","nodeType":"VariableDeclaration","scope":37802,"src":"26926:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":37785,"nodeType":"UserDefinedTypeName","pathNode":{"id":37784,"name":"IERC4626","nameLocations":["26926:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"26926:8:89"},"referencedDeclaration":38998,"src":"26926:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":37788,"mutability":"mutable","name":"owner","nameLocation":"26957:5:89","nodeType":"VariableDeclaration","scope":37802,"src":"26949:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37787,"name":"address","nodeType":"ElementaryTypeName","src":"26949:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37790,"mutability":"mutable","name":"shares","nameLocation":"26972:6:89","nodeType":"VariableDeclaration","scope":37802,"src":"26964:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37789,"name":"uint256","nodeType":"ElementaryTypeName","src":"26964:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26925:54:89"},"returnParameters":{"id":37792,"nodeType":"ParameterList","parameters":[],"src":"26989:0:89"},"scope":38235,"src":"26890:161:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1121],"body":{"id":37816,"nodeType":"Block","src":"27141:58:89","statements":[{"expression":{"id":37814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":37810,"name":"_bufferTotalShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27843,"src":"27151:18:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_uint256_$","typeString":"mapping(contract IERC4626 => uint256)"}},"id":37812,"indexExpression":{"id":37811,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37805,"src":"27170:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27151:32:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":37813,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37807,"src":"27186:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27151:41:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":37815,"nodeType":"ExpressionStatement","src":"27151:41:89"}]},"functionSelector":"3cb5b2af","id":37817,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetBufferTotalShares","nameLocation":"27066:26:89","nodeType":"FunctionDefinition","parameters":{"id":37808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37805,"mutability":"mutable","name":"wrappedToken","nameLocation":"27102:12:89","nodeType":"VariableDeclaration","scope":37817,"src":"27093:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":37804,"nodeType":"UserDefinedTypeName","pathNode":{"id":37803,"name":"IERC4626","nameLocations":["27093:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"27093:8:89"},"referencedDeclaration":38998,"src":"27093:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":37807,"mutability":"mutable","name":"shares","nameLocation":"27124:6:89","nodeType":"VariableDeclaration","scope":37817,"src":"27116:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37806,"name":"uint256","nodeType":"ElementaryTypeName","src":"27116:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27092:39:89"},"returnParameters":{"id":37809,"nodeType":"ParameterList","parameters":[],"src":"27141:0:89"},"scope":38235,"src":"27057:142:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1131],"body":{"id":37837,"nodeType":"Block","src":"27319:121:89","statements":[{"expression":{"id":37835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":37827,"name":"_bufferTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27831,"src":"27329:20:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_contract$_IERC4626_$38998_$_t_bytes32_$","typeString":"mapping(contract IERC4626 => bytes32)"}},"id":37829,"indexExpression":{"id":37828,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37820,"src":"27350:12:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27329:34:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":37832,"name":"underlyingAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37822,"src":"27401:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37833,"name":"wrappedAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37824,"src":"27419:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":37830,"name":"PackedTokenBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"27366:18:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PackedTokenBalance_$5970_$","typeString":"type(library PackedTokenBalance)"}},"id":37831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27385:15:89","memberName":"toPackedBalance","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"27366:34:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256) pure returns (bytes32)"}},"id":37834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27366:67:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"27329:104:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":37836,"nodeType":"ExpressionStatement","src":"27329:104:89"}]},"functionSelector":"0ee4cdd8","id":37838,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetBufferBalances","nameLocation":"27214:23:89","nodeType":"FunctionDefinition","parameters":{"id":37825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37820,"mutability":"mutable","name":"wrappedToken","nameLocation":"27247:12:89","nodeType":"VariableDeclaration","scope":37838,"src":"27238:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":37819,"nodeType":"UserDefinedTypeName","pathNode":{"id":37818,"name":"IERC4626","nameLocations":["27238:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"27238:8:89"},"referencedDeclaration":38998,"src":"27238:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":37822,"mutability":"mutable","name":"underlyingAmount","nameLocation":"27269:16:89","nodeType":"VariableDeclaration","scope":37838,"src":"27261:24:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37821,"name":"uint256","nodeType":"ElementaryTypeName","src":"27261:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37824,"mutability":"mutable","name":"wrappedAmount","nameLocation":"27295:13:89","nodeType":"VariableDeclaration","scope":37838,"src":"27287:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37823,"name":"uint256","nodeType":"ElementaryTypeName","src":"27287:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27237:72:89"},"returnParameters":{"id":37826,"nodeType":"ParameterList","parameters":[],"src":"27319:0:89"},"scope":38235,"src":"27205:235:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1095],"body":{"id":37862,"nodeType":"Block","src":"27654:79:89","statements":[{"expression":{"arguments":[{"id":37859,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37841,"src":"27719:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams memory"}],"expression":{"arguments":[{"arguments":[{"id":37855,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27686:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}],"id":37854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27678:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":37853,"name":"address","nodeType":"ElementaryTypeName","src":"27678:7:89","typeDescriptions":{}}},"id":37856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27678:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":37852,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"27671:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":37857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27671:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":37858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27693:25:89","memberName":"erc4626BufferWrapOrUnwrap","nodeType":"MemberAccess","referencedDeclaration":4337,"src":"27671:47:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct BufferWrapOrUnwrapParams memory) external returns (uint256,uint256,uint256)"}},"id":37860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27671:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"functionReturnParameters":37851,"id":37861,"nodeType":"Return","src":"27664:62:89"}]},"functionSelector":"370bc8da","id":37863,"implemented":true,"kind":"function","modifiers":[{"id":37844,"kind":"modifierInvocation","modifierName":{"id":37843,"name":"nonReentrant","nameLocations":["27560:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"27560:12:89"},"nodeType":"ModifierInvocation","src":"27560:12:89"}],"name":"manualErc4626BufferWrapOrUnwrapReentrancy","nameLocation":"27455:41:89","nodeType":"FunctionDefinition","parameters":{"id":37842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37841,"mutability":"mutable","name":"params","nameLocation":"27538:6:89","nodeType":"VariableDeclaration","scope":37863,"src":"27506:38:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_memory_ptr","typeString":"struct BufferWrapOrUnwrapParams"},"typeName":{"id":37840,"nodeType":"UserDefinedTypeName","pathNode":{"id":37839,"name":"BufferWrapOrUnwrapParams","nameLocations":["27506:24:89"],"nodeType":"IdentifierPath","referencedDeclaration":4644,"src":"27506:24:89"},"referencedDeclaration":4644,"src":"27506:24:89","typeDescriptions":{"typeIdentifier":"t_struct$_BufferWrapOrUnwrapParams_$4644_storage_ptr","typeString":"struct BufferWrapOrUnwrapParams"}},"visibility":"internal"}],"src":"27496:54:89"},"returnParameters":{"id":37851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37846,"mutability":"mutable","name":"amountCalculatedRaw","nameLocation":"27590:19:89","nodeType":"VariableDeclaration","scope":37863,"src":"27582:27:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37845,"name":"uint256","nodeType":"ElementaryTypeName","src":"27582:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37848,"mutability":"mutable","name":"amountInRaw","nameLocation":"27619:11:89","nodeType":"VariableDeclaration","scope":37863,"src":"27611:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37847,"name":"uint256","nodeType":"ElementaryTypeName","src":"27611:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":37850,"mutability":"mutable","name":"amountOutRaw","nameLocation":"27640:12:89","nodeType":"VariableDeclaration","scope":37863,"src":"27632:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37849,"name":"uint256","nodeType":"ElementaryTypeName","src":"27632:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27581:72:89"},"scope":38235,"src":"27446:287:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1139],"body":{"id":37884,"nodeType":"Block","src":"27828:62:89","statements":[{"expression":{"arguments":[{"id":37880,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37866,"src":"27874:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"hexValue":"30","id":37881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27881:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"arguments":[{"id":37876,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27860:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}],"id":37875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27852:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":37874,"name":"address","nodeType":"ElementaryTypeName","src":"27852:7:89","typeDescriptions":{}}},"id":37877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27852:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":37873,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"27845:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":37878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27845:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":37879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27867:6:89","memberName":"settle","nodeType":"MemberAccess","referencedDeclaration":4233,"src":"27845:28:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_uint256_$returns$_t_uint256_$","typeString":"function (contract IERC20,uint256) external returns (uint256)"}},"id":37882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27845:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":37872,"id":37883,"nodeType":"Return","src":"27838:45:89"}]},"functionSelector":"2d1c3beb","id":37885,"implemented":true,"kind":"function","modifiers":[{"id":37869,"kind":"modifierInvocation","modifierName":{"id":37868,"name":"nonReentrant","nameLocations":["27792:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"27792:12:89"},"nodeType":"ModifierInvocation","src":"27792:12:89"}],"name":"manualSettleReentrancy","nameLocation":"27748:22:89","nodeType":"FunctionDefinition","parameters":{"id":37867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37866,"mutability":"mutable","name":"token","nameLocation":"27778:5:89","nodeType":"VariableDeclaration","scope":37885,"src":"27771:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37865,"nodeType":"UserDefinedTypeName","pathNode":{"id":37864,"name":"IERC20","nameLocations":["27771:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"27771:6:89"},"referencedDeclaration":39274,"src":"27771:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"27770:14:89"},"returnParameters":{"id":37872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37871,"mutability":"mutable","name":"paid","nameLocation":"27822:4:89","nodeType":"VariableDeclaration","scope":37885,"src":"27814:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37870,"name":"uint256","nodeType":"ElementaryTypeName","src":"27814:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27813:14:89"},"scope":38235,"src":"27739:151:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1149],"body":{"id":37909,"nodeType":"Block","src":"27990:64:89","statements":[{"expression":{"arguments":[{"id":37904,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37888,"src":"28029:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":37905,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37890,"src":"28036:2:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":37906,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37892,"src":"28040:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":37900,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28015:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultMock_$38235","typeString":"contract VaultMock"}],"id":37899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28007:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":37898,"name":"address","nodeType":"ElementaryTypeName","src":"28007:7:89","typeDescriptions":{}}},"id":37901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28007:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":37897,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"28000:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$2893_$","typeString":"type(contract IVault)"}},"id":37902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28000:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":37903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28022:6:89","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":4244,"src":"28000:28:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":37907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28000:47:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37908,"nodeType":"ExpressionStatement","src":"28000:47:89"}]},"functionSelector":"d01a3269","id":37910,"implemented":true,"kind":"function","modifiers":[{"id":37895,"kind":"modifierInvocation","modifierName":{"id":37894,"name":"nonReentrant","nameLocations":["27977:12:89"],"nodeType":"IdentifierPath","referencedDeclaration":9523,"src":"27977:12:89"},"nodeType":"ModifierInvocation","src":"27977:12:89"}],"name":"manualSendToReentrancy","nameLocation":"27905:22:89","nodeType":"FunctionDefinition","parameters":{"id":37893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37888,"mutability":"mutable","name":"token","nameLocation":"27935:5:89","nodeType":"VariableDeclaration","scope":37910,"src":"27928:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37887,"nodeType":"UserDefinedTypeName","pathNode":{"id":37886,"name":"IERC20","nameLocations":["27928:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"27928:6:89"},"referencedDeclaration":39274,"src":"27928:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":37890,"mutability":"mutable","name":"to","nameLocation":"27950:2:89","nodeType":"VariableDeclaration","scope":37910,"src":"27942:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37889,"name":"address","nodeType":"ElementaryTypeName","src":"27942:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37892,"mutability":"mutable","name":"amount","nameLocation":"27962:6:89","nodeType":"VariableDeclaration","scope":37910,"src":"27954:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37891,"name":"uint256","nodeType":"ElementaryTypeName","src":"27954:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27927:42:89"},"returnParameters":{"id":37896,"nodeType":"ParameterList","parameters":[],"src":"27990:0:89"},"scope":38235,"src":"27896:158:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1161],"body":{"id":37927,"nodeType":"Block","src":"28164:54:89","statements":[{"expression":{"arguments":[{"id":37923,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37914,"src":"28197:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":37924,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37917,"src":"28205:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":37922,"name":"_findTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25085,"src":"28181:15:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$_t_contract$_IERC20_$39274_$returns$_t_uint256_$","typeString":"function (contract IERC20[] memory,contract IERC20) pure returns (uint256)"}},"id":37925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28181:30:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":37921,"id":37926,"nodeType":"Return","src":"28174:37:89"}]},"functionSelector":"ebfeb0a1","id":37928,"implemented":true,"kind":"function","modifiers":[],"name":"manualFindTokenIndex","nameLocation":"28069:20:89","nodeType":"FunctionDefinition","parameters":{"id":37918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37914,"mutability":"mutable","name":"tokens","nameLocation":"28106:6:89","nodeType":"VariableDeclaration","scope":37928,"src":"28090:22:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":37912,"nodeType":"UserDefinedTypeName","pathNode":{"id":37911,"name":"IERC20","nameLocations":["28090:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"28090:6:89"},"referencedDeclaration":39274,"src":"28090:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":37913,"nodeType":"ArrayTypeName","src":"28090:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":37917,"mutability":"mutable","name":"token","nameLocation":"28121:5:89","nodeType":"VariableDeclaration","scope":37928,"src":"28114:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":37916,"nodeType":"UserDefinedTypeName","pathNode":{"id":37915,"name":"IERC20","nameLocations":["28114:6:89"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"28114:6:89"},"referencedDeclaration":39274,"src":"28114:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"28089:38:89"},"returnParameters":{"id":37921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37920,"mutability":"mutable","name":"index","nameLocation":"28157:5:89","nodeType":"VariableDeclaration","scope":37928,"src":"28149:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37919,"name":"uint256","nodeType":"ElementaryTypeName","src":"28149:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28148:15:89"},"scope":38235,"src":"28060:158:89","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[1168],"body":{"id":37946,"nodeType":"Block","src":"28297:81:89","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37938,"name":"_sessionIdSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27905,"src":"28334:14:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":37939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28334:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":37940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28351:5:89","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"28334:22:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":37941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28334:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37942,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37930,"src":"28360:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":37943,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37932,"src":"28366:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37935,"name":"_addLiquidityCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27894,"src":"28307:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function () view returns (UintToAddressToBooleanMappingSlot)"}},"id":37936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28307:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"id":37937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28329:4:89","memberName":"tSet","nodeType":"MemberAccess","referencedDeclaration":6699,"src":"28307:26:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$_t_uint256_$_t_address_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function (UintToAddressToBooleanMappingSlot,uint256,address,bool)"}},"id":37944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28307:64:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37945,"nodeType":"ExpressionStatement","src":"28307:64:89"}]},"functionSelector":"e2ddce11","id":37947,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetAddLiquidityCalledFlag","nameLocation":"28233:31:89","nodeType":"FunctionDefinition","parameters":{"id":37933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37930,"mutability":"mutable","name":"pool","nameLocation":"28273:4:89","nodeType":"VariableDeclaration","scope":37947,"src":"28265:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37929,"name":"address","nodeType":"ElementaryTypeName","src":"28265:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37932,"mutability":"mutable","name":"flag","nameLocation":"28284:4:89","nodeType":"VariableDeclaration","scope":37947,"src":"28279:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":37931,"name":"bool","nodeType":"ElementaryTypeName","src":"28279:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28264:25:89"},"returnParameters":{"id":37934,"nodeType":"ParameterList","parameters":[],"src":"28297:0:89"},"scope":38235,"src":"28224:154:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1201],"body":{"id":37963,"nodeType":"Block","src":"28494:67:89","statements":[{"expression":{"arguments":[{"id":37959,"name":"sessionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37951,"src":"28538:9:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":37960,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37949,"src":"28549:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37956,"name":"_addLiquidityCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27894,"src":"28511:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function () view returns (UintToAddressToBooleanMappingSlot)"}},"id":37957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28511:21:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488","typeString":"UintToAddressToBooleanMappingSlot"}},"id":37958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28533:4:89","memberName":"tGet","nodeType":"MemberAccess","referencedDeclaration":6669,"src":"28511:26:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$_t_uint256_$_t_address_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_UintToAddressToBooleanMappingSlot_$6488_$","typeString":"function (UintToAddressToBooleanMappingSlot,uint256,address) view returns (bool)"}},"id":37961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28511:43:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":37955,"id":37962,"nodeType":"Return","src":"28504:50:89"}]},"functionSelector":"420f4a45","id":37964,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetAddLiquidityCalledFlagBySession","nameLocation":"28393:40:89","nodeType":"FunctionDefinition","parameters":{"id":37952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37949,"mutability":"mutable","name":"pool","nameLocation":"28442:4:89","nodeType":"VariableDeclaration","scope":37964,"src":"28434:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37948,"name":"address","nodeType":"ElementaryTypeName","src":"28434:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37951,"mutability":"mutable","name":"sessionId","nameLocation":"28456:9:89","nodeType":"VariableDeclaration","scope":37964,"src":"28448:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37950,"name":"uint256","nodeType":"ElementaryTypeName","src":"28448:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28433:33:89"},"returnParameters":{"id":37955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37964,"src":"28488:4:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":37953,"name":"bool","nodeType":"ElementaryTypeName","src":"28488:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28487:6:89"},"scope":38235,"src":"28384:177:89","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1206],"body":{"id":37974,"nodeType":"Block","src":"28640:48:89","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":37969,"name":"_sessionIdSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27905,"src":"28657:14:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function () view returns (StorageSlotExtension.Uint256SlotType)"}},"id":37970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28657:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Uint256SlotType_$9768","typeString":"StorageSlotExtension.Uint256SlotType"}},"id":37971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28674:5:89","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":9877,"src":"28657:22:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Uint256SlotType_$9768_$returns$_t_uint256_$attached_to$_t_userDefinedValueType$_Uint256SlotType_$9768_$","typeString":"function (StorageSlotExtension.Uint256SlotType) view returns (uint256)"}},"id":37972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28657:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":37968,"id":37973,"nodeType":"Return","src":"28650:31:89"}]},"functionSelector":"81e4b7e9","id":37975,"implemented":true,"kind":"function","modifiers":[],"name":"manualGetCurrentUnlockSessionId","nameLocation":"28576:31:89","nodeType":"FunctionDefinition","parameters":{"id":37965,"nodeType":"ParameterList","parameters":[],"src":"28607:2:89"},"returnParameters":{"id":37968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":37975,"src":"28631:7:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37966,"name":"uint256","nodeType":"ElementaryTypeName","src":"28631:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28630:9:89"},"scope":38235,"src":"28567:121:89","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":37999,"nodeType":"Block","src":"28786:224:89","statements":[{"assignments":[37983],"declarations":[{"constant":false,"id":37983,"mutability":"mutable","name":"liquidityManagement","nameLocation":"28823:19:89","nodeType":"VariableDeclaration","scope":37999,"src":"28796:46:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":37982,"nodeType":"UserDefinedTypeName","pathNode":{"id":37981,"name":"LiquidityManagement","nameLocations":["28796:19:89"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"28796:19:89"},"referencedDeclaration":4362,"src":"28796:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"id":37984,"nodeType":"VariableDeclarationStatement","src":"28796:46:89"},{"expression":{"id":37989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":37985,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37983,"src":"28852:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":37987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"28872:24:89","memberName":"enableAddLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4357,"src":"28852:44:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":37988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28899:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"28852:51:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":37990,"nodeType":"ExpressionStatement","src":"28852:51:89"},{"expression":{"id":37995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":37991,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37983,"src":"28913:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":37993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"28933:27:89","memberName":"enableRemoveLiquidityCustom","nodeType":"MemberAccess","referencedDeclaration":4359,"src":"28913:47:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":37994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28963:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"28913:54:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":37996,"nodeType":"ExpressionStatement","src":"28913:54:89"},{"expression":{"id":37997,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37983,"src":"28984:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"functionReturnParameters":37980,"id":37998,"nodeType":"Return","src":"28977:26:89"}]},"id":38000,"implemented":true,"kind":"function","modifiers":[],"name":"_getDefaultLiquidityManagement","nameLocation":"28703:30:89","nodeType":"FunctionDefinition","parameters":{"id":37976,"nodeType":"ParameterList","parameters":[],"src":"28733:2:89"},"returnParameters":{"id":37980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38000,"src":"28758:26:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":37978,"nodeType":"UserDefinedTypeName","pathNode":{"id":37977,"name":"LiquidityManagement","nameLocations":["28758:19:89"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"28758:19:89"},"referencedDeclaration":4362,"src":"28758:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"src":"28757:28:89"},"scope":38235,"src":"28694:316:89","stateMutability":"pure","virtual":false,"visibility":"private"},{"baseFunctions":[1175],"body":{"id":38014,"nodeType":"Block","src":"29091:69:89","statements":[{"expression":{"id":38012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":38007,"name":"_poolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27770,"src":"29101:17:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_PoolRoleAccounts_$4459_storage_$","typeString":"mapping(address => struct PoolRoleAccounts storage ref)"}},"id":38009,"indexExpression":{"id":38008,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38002,"src":"29119:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29101:23:89","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage","typeString":"struct PoolRoleAccounts storage ref"}},"id":38010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"29125:11:89","memberName":"poolCreator","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"29101:35:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":38011,"name":"newPoolCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38004,"src":"29139:14:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29101:52:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":38013,"nodeType":"ExpressionStatement","src":"29101:52:89"}]},"functionSelector":"79a2c0ac","id":38015,"implemented":true,"kind":"function","modifiers":[],"name":"manualSetPoolCreator","nameLocation":"29025:20:89","nodeType":"FunctionDefinition","parameters":{"id":38005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38002,"mutability":"mutable","name":"pool","nameLocation":"29054:4:89","nodeType":"VariableDeclaration","scope":38015,"src":"29046:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38001,"name":"address","nodeType":"ElementaryTypeName","src":"29046:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38004,"mutability":"mutable","name":"newPoolCreator","nameLocation":"29068:14:89","nodeType":"VariableDeclaration","scope":38015,"src":"29060:22:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38003,"name":"address","nodeType":"ElementaryTypeName","src":"29060:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29045:38:89"},"returnParameters":{"id":38006,"nodeType":"ParameterList","parameters":[],"src":"29091:0:89"},"scope":38235,"src":"29016:144:89","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1180],"body":{"id":38024,"nodeType":"Block","src":"29233:53:89","statements":[{"expression":{"arguments":[{"id":38021,"name":"tradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38017,"src":"29267:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38020,"name":"_ensureValidTradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22273,"src":"29243:23:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":38022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29243:36:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38023,"nodeType":"ExpressionStatement","src":"29243:36:89"}]},"functionSelector":"2cbbf198","id":38025,"implemented":true,"kind":"function","modifiers":[],"name":"ensureValidTradeAmount","nameLocation":"29175:22:89","nodeType":"FunctionDefinition","parameters":{"id":38018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38017,"mutability":"mutable","name":"tradeAmount","nameLocation":"29206:11:89","nodeType":"VariableDeclaration","scope":38025,"src":"29198:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38016,"name":"uint256","nodeType":"ElementaryTypeName","src":"29198:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29197:21:89"},"returnParameters":{"id":38019,"nodeType":"ParameterList","parameters":[],"src":"29233:0:89"},"scope":38235,"src":"29166:120:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1185],"body":{"id":38034,"nodeType":"Block","src":"29358:52:89","statements":[{"expression":{"arguments":[{"id":38031,"name":"tradeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38027,"src":"29391:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38030,"name":"_ensureValidSwapAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22287,"src":"29368:22:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":38032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29368:35:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38033,"nodeType":"ExpressionStatement","src":"29368:35:89"}]},"functionSelector":"b4eb0bf9","id":38035,"implemented":true,"kind":"function","modifiers":[],"name":"ensureValidSwapAmount","nameLocation":"29301:21:89","nodeType":"FunctionDefinition","parameters":{"id":38028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38027,"mutability":"mutable","name":"tradeAmount","nameLocation":"29331:11:89","nodeType":"VariableDeclaration","scope":38035,"src":"29323:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38026,"name":"uint256","nodeType":"ElementaryTypeName","src":"29323:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29322:21:89"},"returnParameters":{"id":38029,"nodeType":"ParameterList","parameters":[],"src":"29358:0:89"},"scope":38235,"src":"29292:118:89","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1192],"body":{"id":38053,"nodeType":"Block","src":"29526:165:89","statements":[{"expression":{"id":38051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":38042,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"29536:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":38044,"indexExpression":{"id":38043,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38037,"src":"29552:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"29536:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":38046,"name":"_poolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27765,"src":"29610:15:89","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"mapping(address => PoolConfigBits)"}},"id":38048,"indexExpression":{"id":38047,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38037,"src":"29626:4:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"29610:21:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},{"id":38049,"name":"newAggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38039,"src":"29645:29:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38045,"name":"_manualSetAggregateSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38084,"src":"29560:36:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$_t_uint256_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (PoolConfigBits,uint256) pure returns (PoolConfigBits)"}},"id":38050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29560:124:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"src":"29536:148:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"id":38052,"nodeType":"ExpressionStatement","src":"29536:148:89"}]},"functionSelector":"a03b23ef","id":38054,"implemented":true,"kind":"function","modifiers":[],"name":"manualUpdateAggregateSwapFeePercentage","nameLocation":"29425:38:89","nodeType":"FunctionDefinition","parameters":{"id":38040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38037,"mutability":"mutable","name":"pool","nameLocation":"29472:4:89","nodeType":"VariableDeclaration","scope":38054,"src":"29464:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38036,"name":"address","nodeType":"ElementaryTypeName","src":"29464:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38039,"mutability":"mutable","name":"newAggregateSwapFeePercentage","nameLocation":"29486:29:89","nodeType":"VariableDeclaration","scope":38054,"src":"29478:37:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38038,"name":"uint256","nodeType":"ElementaryTypeName","src":"29478:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29463:53:89"},"returnParameters":{"id":38041,"nodeType":"ParameterList","parameters":[],"src":"29526:0:89"},"scope":38235,"src":"29416:275:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":38083,"nodeType":"Block","src":"29842:308:89","statements":[{"expression":{"id":38067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":38065,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38059,"src":"29852:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":38066,"name":"FEE_SCALING_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"29861:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29852:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38068,"nodeType":"ExpressionStatement","src":"29852:27:89"},{"expression":{"arguments":[{"arguments":[{"id":38076,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38059,"src":"30008:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":38077,"name":"PoolConfigConst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29141,"src":"30035:15:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PoolConfigConst_$29141_$","typeString":"type(library PoolConfigConst)"}},"id":38078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30051:25:89","memberName":"AGGREGATE_SWAP_FEE_OFFSET","nodeType":"MemberAccess","referencedDeclaration":29116,"src":"30035:41:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38079,"name":"FEE_BITLENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"30098:13:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":38073,"name":"config","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38057,"src":"29968:6:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}],"expression":{"id":38071,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"29946:14:89","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":38072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29961:6:89","memberName":"unwrap","nodeType":"MemberAccess","src":"29946:21:89","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_PoolConfigBits_$4364_$returns$_t_bytes32_$","typeString":"function (PoolConfigBits) pure returns (bytes32)"}},"id":38074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29946:29:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":38075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29976:10:89","memberName":"insertUint","nodeType":"MemberAccess","referencedDeclaration":7149,"src":"29946:40:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256,uint256) pure returns (bytes32)"}},"id":38080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29946:183:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":38069,"name":"PoolConfigBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"29909:14:89","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"type(PoolConfigBits)"}},"id":38070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29924:4:89","memberName":"wrap","nodeType":"MemberAccess","src":"29909:19:89","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_PoolConfigBits_$4364_$","typeString":"function (bytes32) pure returns (PoolConfigBits)"}},"id":38081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29909:234:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"functionReturnParameters":38064,"id":38082,"nodeType":"Return","src":"29890:253:89"}]},"id":38084,"implemented":true,"kind":"function","modifiers":[],"name":"_manualSetAggregateSwapFeePercentage","nameLocation":"29706:36:89","nodeType":"FunctionDefinition","parameters":{"id":38060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38057,"mutability":"mutable","name":"config","nameLocation":"29767:6:89","nodeType":"VariableDeclaration","scope":38084,"src":"29752:21:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":38056,"nodeType":"UserDefinedTypeName","pathNode":{"id":38055,"name":"PoolConfigBits","nameLocations":["29752:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"29752:14:89"},"referencedDeclaration":4364,"src":"29752:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"},{"constant":false,"id":38059,"mutability":"mutable","name":"value","nameLocation":"29791:5:89","nodeType":"VariableDeclaration","scope":38084,"src":"29783:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38058,"name":"uint256","nodeType":"ElementaryTypeName","src":"29783:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29742:60:89"},"returnParameters":{"id":38064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38084,"src":"29826:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"},"typeName":{"id":38062,"nodeType":"UserDefinedTypeName","pathNode":{"id":38061,"name":"PoolConfigBits","nameLocations":["29826:14:89"],"nodeType":"IdentifierPath","referencedDeclaration":4364,"src":"29826:14:89"},"referencedDeclaration":4364,"src":"29826:14:89","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_PoolConfigBits_$4364","typeString":"PoolConfigBits"}},"visibility":"internal"}],"src":"29825:16:89"},"scope":38235,"src":"29697:453:89","stateMutability":"pure","virtual":false,"visibility":"internal"},{"baseFunctions":[1216],"body":{"id":38125,"nodeType":"Block","src":"30270:315:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":38105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38094,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38089,"src":"30284:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30306:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"30284:23:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38099,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38089,"src":"30334:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":38100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30355:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30334:22:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":38097,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38087,"src":"30311:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":38098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30319:14:89","memberName":"previewDeposit","nodeType":"MemberAccess","referencedDeclaration":38905,"src":"30311:22:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":38102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30311:46:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30361:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"30311:51:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30284:78:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38109,"nodeType":"IfStatement","src":"30280:117:89","trueBody":{"id":38108,"nodeType":"Block","src":"30364:33:89","statements":[{"expression":{"hexValue":"30","id":38106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30385:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":38093,"id":38107,"nodeType":"Return","src":"30378:8:89"}]}},{"expression":{"id":38123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":38110,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38092,"src":"30410:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":38111,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30407:22:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$__$","typeString":"tuple(,uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":38113,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"30461:8:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":38114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30470:8:89","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"30461:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":38116,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38087,"src":"30499:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":38117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30507:5:89","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"30499:13:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":38118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30499:15:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38115,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"30492:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":38119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30492:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":38120,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38087,"src":"30529:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":38121,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38089,"src":"30550:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38112,"name":"_wrapWithBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21867,"src":"30432:15:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_SwapKind_$4517_$_t_contract$_IERC20_$39274_$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (enum SwapKind,contract IERC20,contract IERC4626,uint256) returns (uint256,uint256,bytes32)"}},"id":38122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30432:146:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"src":"30407:171:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38124,"nodeType":"ExpressionStatement","src":"30407:171:89"}]},"functionSelector":"b8f82b26","id":38126,"implemented":true,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"30165:14:89","nodeType":"FunctionDefinition","parameters":{"id":38090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38087,"mutability":"mutable","name":"wrapper","nameLocation":"30189:7:89","nodeType":"VariableDeclaration","scope":38126,"src":"30180:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":38086,"nodeType":"UserDefinedTypeName","pathNode":{"id":38085,"name":"IERC4626","nameLocations":["30180:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"30180:8:89"},"referencedDeclaration":38998,"src":"30180:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":38089,"mutability":"mutable","name":"amountInUnderlying","nameLocation":"30206:18:89","nodeType":"VariableDeclaration","scope":38126,"src":"30198:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38088,"name":"uint256","nodeType":"ElementaryTypeName","src":"30198:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30179:46:89"},"returnParameters":{"id":38093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38092,"mutability":"mutable","name":"amountOutWrapped","nameLocation":"30252:16:89","nodeType":"VariableDeclaration","scope":38126,"src":"30244:24:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38091,"name":"uint256","nodeType":"ElementaryTypeName","src":"30244:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30243:26:89"},"scope":38235,"src":"30156:429:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1226],"body":{"id":38158,"nodeType":"Block","src":"30702:259:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38136,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38131,"src":"30716:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30736:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"30716:21:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38142,"nodeType":"IfStatement","src":"30712:60:89","trueBody":{"id":38141,"nodeType":"Block","src":"30739:33:89","statements":[{"expression":{"hexValue":"30","id":38139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30760:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":38135,"id":38140,"nodeType":"Return","src":"30753:8:89"}]}},{"expression":{"id":38156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":38143,"name":"amountInUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38134,"src":"30783:18:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null,null],"id":38144,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"30782:24:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$__$__$","typeString":"tuple(uint256,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":38146,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"30838:8:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":38147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30847:9:89","memberName":"EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"30838:18:89","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":38149,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38129,"src":"30877:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":38150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30885:5:89","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"30877:13:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":38151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30877:15:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38148,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"30870:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":38152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30870:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":38153,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38129,"src":"30907:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":38154,"name":"amountOutWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38131,"src":"30928:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38145,"name":"_wrapWithBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21867,"src":"30809:15:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_SwapKind_$4517_$_t_contract$_IERC20_$39274_$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (enum SwapKind,contract IERC20,contract IERC4626,uint256) returns (uint256,uint256,bytes32)"}},"id":38155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30809:145:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"src":"30782:172:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38157,"nodeType":"ExpressionStatement","src":"30782:172:89"}]},"functionSelector":"d1f810a5","id":38159,"implemented":true,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"30600:11:89","nodeType":"FunctionDefinition","parameters":{"id":38132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38129,"mutability":"mutable","name":"wrapper","nameLocation":"30621:7:89","nodeType":"VariableDeclaration","scope":38159,"src":"30612:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":38128,"nodeType":"UserDefinedTypeName","pathNode":{"id":38127,"name":"IERC4626","nameLocations":["30612:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"30612:8:89"},"referencedDeclaration":38998,"src":"30612:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":38131,"mutability":"mutable","name":"amountOutWrapped","nameLocation":"30638:16:89","nodeType":"VariableDeclaration","scope":38159,"src":"30630:24:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38130,"name":"uint256","nodeType":"ElementaryTypeName","src":"30630:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30611:44:89"},"returnParameters":{"id":38135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38134,"mutability":"mutable","name":"amountInUnderlying","nameLocation":"30682:18:89","nodeType":"VariableDeclaration","scope":38159,"src":"30674:26:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38133,"name":"uint256","nodeType":"ElementaryTypeName","src":"30674:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30673:28:89"},"scope":38235,"src":"30591:370:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1236],"body":{"id":38200,"nodeType":"Block","src":"31080:310:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":38180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38169,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38164,"src":"31094:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31113:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31094:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38174,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38164,"src":"31140:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":38175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31158:1:89","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"31140:19:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":38172,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38162,"src":"31118:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":38173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31126:13:89","memberName":"previewRedeem","nodeType":"MemberAccess","referencedDeclaration":38985,"src":"31118:21:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":38177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31118:42:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31164:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31118:47:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31094:71:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38184,"nodeType":"IfStatement","src":"31090:110:89","trueBody":{"id":38183,"nodeType":"Block","src":"31167:33:89","statements":[{"expression":{"hexValue":"30","id":38181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31188:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":38168,"id":38182,"nodeType":"Return","src":"31181:8:89"}]}},{"expression":{"id":38198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":38185,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38167,"src":"31213:19:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":38186,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"31210:25:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$__$","typeString":"tuple(,uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":38188,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"31269:8:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":38189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31278:8:89","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"31269:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":38191,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38162,"src":"31307:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":38192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31315:5:89","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"31307:13:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":38193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31307:15:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38190,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"31300:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":38194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31300:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":38195,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38162,"src":"31337:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":38196,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38164,"src":"31358:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38187,"name":"_unwrapWithBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22103,"src":"31238:17:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_SwapKind_$4517_$_t_contract$_IERC20_$39274_$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (enum SwapKind,contract IERC20,contract IERC4626,uint256) returns (uint256,uint256,bytes32)"}},"id":38197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31238:145:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"src":"31210:173:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38199,"nodeType":"ExpressionStatement","src":"31210:173:89"}]},"functionSelector":"cbe52ae3","id":38201,"implemented":true,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"30976:13:89","nodeType":"FunctionDefinition","parameters":{"id":38165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38162,"mutability":"mutable","name":"wrapper","nameLocation":"30999:7:89","nodeType":"VariableDeclaration","scope":38201,"src":"30990:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":38161,"nodeType":"UserDefinedTypeName","pathNode":{"id":38160,"name":"IERC4626","nameLocations":["30990:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"30990:8:89"},"referencedDeclaration":38998,"src":"30990:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":38164,"mutability":"mutable","name":"amountInWrapped","nameLocation":"31016:15:89","nodeType":"VariableDeclaration","scope":38201,"src":"31008:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38163,"name":"uint256","nodeType":"ElementaryTypeName","src":"31008:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30989:43:89"},"returnParameters":{"id":38168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38167,"mutability":"mutable","name":"amountOutUnderlying","nameLocation":"31059:19:89","nodeType":"VariableDeclaration","scope":38201,"src":"31051:27:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38166,"name":"uint256","nodeType":"ElementaryTypeName","src":"31051:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31050:29:89"},"scope":38235,"src":"30967:423:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1246],"body":{"id":38233,"nodeType":"Block","src":"31511:264:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38211,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38206,"src":"31525:19:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":38212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31548:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31525:24:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38217,"nodeType":"IfStatement","src":"31521:63:89","trueBody":{"id":38216,"nodeType":"Block","src":"31551:33:89","statements":[{"expression":{"hexValue":"30","id":38214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31572:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":38210,"id":38215,"nodeType":"Return","src":"31565:8:89"}]}},{"expression":{"id":38231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":38218,"name":"amountInWrapped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38209,"src":"31595:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null,null],"id":38219,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"31594:21:89","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$__$__$","typeString":"tuple(uint256,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":38221,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"31649:8:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":38222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31658:9:89","memberName":"EXACT_OUT","nodeType":"MemberAccess","referencedDeclaration":4516,"src":"31649:18:89","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":38224,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38204,"src":"31688:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"id":38225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31696:5:89","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":38867,"src":"31688:13:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":38226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31688:15:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38223,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"31681:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$39274_$","typeString":"type(contract IERC20)"}},"id":38227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31681:23:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":38228,"name":"wrapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38204,"src":"31718:7:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},{"id":38229,"name":"amountOutUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38206,"src":"31739:19:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38220,"name":"_unwrapWithBuffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22103,"src":"31618:17:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_SwapKind_$4517_$_t_contract$_IERC20_$39274_$_t_contract$_IERC4626_$38998_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (enum SwapKind,contract IERC20,contract IERC4626,uint256) returns (uint256,uint256,bytes32)"}},"id":38230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31618:150:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32)"}},"src":"31594:174:89","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38232,"nodeType":"ExpressionStatement","src":"31594:174:89"}]},"functionSelector":"bbc6f1dc","id":38234,"implemented":true,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"31405:15:89","nodeType":"FunctionDefinition","parameters":{"id":38207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38204,"mutability":"mutable","name":"wrapper","nameLocation":"31430:7:89","nodeType":"VariableDeclaration","scope":38234,"src":"31421:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"},"typeName":{"id":38203,"nodeType":"UserDefinedTypeName","pathNode":{"id":38202,"name":"IERC4626","nameLocations":["31421:8:89"],"nodeType":"IdentifierPath","referencedDeclaration":38998,"src":"31421:8:89"},"referencedDeclaration":38998,"src":"31421:8:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$38998","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":38206,"mutability":"mutable","name":"amountOutUnderlying","nameLocation":"31447:19:89","nodeType":"VariableDeclaration","scope":38234,"src":"31439:27:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38205,"name":"uint256","nodeType":"ElementaryTypeName","src":"31439:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31420:47:89"},"returnParameters":{"id":38210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38209,"mutability":"mutable","name":"amountInWrapped","nameLocation":"31494:15:89","nodeType":"VariableDeclaration","scope":38234,"src":"31486:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38208,"name":"uint256","nodeType":"ElementaryTypeName","src":"31486:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31485:25:89"},"scope":38235,"src":"31396:379:89","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":38236,"src":"2335:29442:89","usedErrors":[1684,3195,3200,3205,3210,3219,3225,3228,3231,3234,3237,3240,3243,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3300,3307,3314,3317,3320,3330,3340,3347,3350,3353,3356,3366,3376,3383,3386,3389,3392,3395,3398,3401,3404,3407,3412,3417,3422,3425,3428,3431,3434,3437,3442,3447,3452,3458,3464,3467,3475,3481,3487,3490,3493,3496,3501,3511,3521,3528,3531,3534,3537,3540,3543,3546,3549,5477,5586,5589,5592,5833,7124,7127,7543,9512,10993,11000,39035,39040,39045,39054,39059,39064,39353,39634,39639,39642,42386,42398],"usedEvents":[3588,3593,3612,3624,3636,3654,3672,3677,3680,3683,3690,3697,3704,3711,3718,3724,3730,3742,3752,3762,3774,3779,3788,38264,38275]}],"src":"46:31732:89"},"id":89},"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol":{"ast":{"absolutePath":"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol","exportedSymbols":{"BalancerPoolToken":[10732],"ERC20MultiToken":[38828],"EVMCallModeHelpers":[5493],"IERC20Errors":[39065],"IERC20MultiTokenErrors":[1685]},"id":38829,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":38237,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:90"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","id":38239,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38829,"sourceUnit":39161,"src":"72:85:90","symbolAliases":[{"foreign":{"id":38238,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39065,"src":"81:12:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol","id":38241,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38829,"sourceUnit":1686,"src":"159:113:90","symbolAliases":[{"foreign":{"id":38240,"name":"IERC20MultiTokenErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1685,"src":"168:22:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol","id":38243,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38829,"sourceUnit":5494,"src":"274:111:90","symbolAliases":[{"foreign":{"id":38242,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"283:18:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol","file":"../BalancerPoolToken.sol","id":38245,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38829,"sourceUnit":10733,"src":"387:61:90","symbolAliases":[{"foreign":{"id":38244,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"396:17:90","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":38247,"name":"IERC20Errors","nameLocations":["794:12:90"],"nodeType":"IdentifierPath","referencedDeclaration":39065,"src":"794:12:90"},"id":38248,"nodeType":"InheritanceSpecifier","src":"794:12:90"},{"baseName":{"id":38249,"name":"IERC20MultiTokenErrors","nameLocations":["808:22:90"],"nodeType":"IdentifierPath","referencedDeclaration":1685,"src":"808:22:90"},"id":38250,"nodeType":"InheritanceSpecifier","src":"808:22:90"}],"canonicalName":"ERC20MultiToken","contractDependencies":[],"contractKind":"contract","documentation":{"id":38246,"nodeType":"StructuredDocumentation","src":"450:306:90","text":" @notice Store Token data and handle accounting for pool tokens in the Vault.\n @dev The ERC20MultiToken is an ERC20-focused multi-token implementation that is fully compatible with the ERC20 API\n on the token side. It also allows for the minting and burning of tokens on the multi-token side."},"fullyImplemented":true,"id":38828,"linearizedBaseContracts":[38828,1685,39065],"name":"ERC20MultiToken","nameLocation":"775:15:90","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":38253,"mutability":"constant","name":"_POOL_MINIMUM_TOTAL_SUPPLY","nameLocation":"899:26:90","nodeType":"VariableDeclaration","scope":38828,"src":"873:58:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38251,"name":"uint256","nodeType":"ElementaryTypeName","src":"873:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"316536","id":38252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"928:3:90","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"},"visibility":"internal"},{"anonymous":false,"documentation":{"id":38254,"nodeType":"StructuredDocumentation","src":"938:292:90","text":" @notice Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\n @param pool The pool token being transferred\n @param from The token source\n @param to The token destination\n @param value The number of tokens"},"eventSelector":"d1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f","id":38264,"name":"Transfer","nameLocation":"1241:8:90","nodeType":"EventDefinition","parameters":{"id":38263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38256,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"1266:4:90","nodeType":"VariableDeclaration","scope":38264,"src":"1250:20:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38255,"name":"address","nodeType":"ElementaryTypeName","src":"1250:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38258,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"1288:4:90","nodeType":"VariableDeclaration","scope":38264,"src":"1272:20:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38257,"name":"address","nodeType":"ElementaryTypeName","src":"1272:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38260,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"1310:2:90","nodeType":"VariableDeclaration","scope":38264,"src":"1294:18:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38259,"name":"address","nodeType":"ElementaryTypeName","src":"1294:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38262,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1322:5:90","nodeType":"VariableDeclaration","scope":38264,"src":"1314:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38261,"name":"uint256","nodeType":"ElementaryTypeName","src":"1314:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1249:79:90"},"src":"1235:94:90"},{"anonymous":false,"documentation":{"id":38265,"nodeType":"StructuredDocumentation","src":"1335:400:90","text":" @notice The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\n @param pool The pool token receiving the allowance\n @param owner The token holder\n @param spender The account being authorized to spend a given amount of the token\n @param value The number of tokens spender is authorized to transfer from owner"},"eventSelector":"a0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61","id":38275,"name":"Approval","nameLocation":"1746:8:90","nodeType":"EventDefinition","parameters":{"id":38274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38267,"indexed":true,"mutability":"mutable","name":"pool","nameLocation":"1771:4:90","nodeType":"VariableDeclaration","scope":38275,"src":"1755:20:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38266,"name":"address","nodeType":"ElementaryTypeName","src":"1755:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38269,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1793:5:90","nodeType":"VariableDeclaration","scope":38275,"src":"1777:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38268,"name":"address","nodeType":"ElementaryTypeName","src":"1777:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38271,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"1816:7:90","nodeType":"VariableDeclaration","scope":38275,"src":"1800:23:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38270,"name":"address","nodeType":"ElementaryTypeName","src":"1800:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38273,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1833:5:90","nodeType":"VariableDeclaration","scope":38275,"src":"1825:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1825:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1754:85:90"},"src":"1740:100:90"},{"constant":false,"id":38281,"mutability":"mutable","name":"_balances","nameLocation":"1963:9:90","nodeType":"VariableDeclaration","scope":38828,"src":"1887:85:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":38280,"keyName":"token","keyNameLocation":"1903:5:90","keyType":{"id":38276,"name":"address","nodeType":"ElementaryTypeName","src":"1895:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1887:67:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":38279,"keyName":"owner","keyNameLocation":"1928:5:90","keyType":{"id":38277,"name":"address","nodeType":"ElementaryTypeName","src":"1920:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1912:41:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"balance","valueNameLocation":"1945:7:90","valueType":{"id":38278,"name":"uint256","nodeType":"ElementaryTypeName","src":"1937:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":38289,"mutability":"mutable","name":"_allowances","nameLocation":"2136:11:90","nodeType":"VariableDeclaration","scope":38828,"src":"2022:125:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => uint256)))"},"typeName":{"id":38288,"keyName":"token","keyNameLocation":"2038:5:90","keyType":{"id":38282,"name":"address","nodeType":"ElementaryTypeName","src":"2030:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2022:97:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => uint256)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":38287,"keyName":"owner","keyNameLocation":"2063:5:90","keyType":{"id":38283,"name":"address","nodeType":"ElementaryTypeName","src":"2055:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2047:71:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":38286,"keyName":"spender","keyNameLocation":"2088:7:90","keyType":{"id":38284,"name":"address","nodeType":"ElementaryTypeName","src":"2080:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2072:45:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"allowance","valueNameLocation":"2107:9:90","valueType":{"id":38285,"name":"uint256","nodeType":"ElementaryTypeName","src":"2099:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}}},"visibility":"private"},{"constant":false,"id":38293,"mutability":"mutable","name":"_totalSupplyOf","nameLocation":"2381:14:90","nodeType":"VariableDeclaration","scope":38828,"src":"2327:68:90","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":38292,"keyName":"token","keyNameLocation":"2343:5:90","keyType":{"id":38290,"name":"address","nodeType":"ElementaryTypeName","src":"2335:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2327:45:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"totalSupply","valueNameLocation":"2360:11:90","valueType":{"id":38291,"name":"uint256","nodeType":"ElementaryTypeName","src":"2352:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":38304,"nodeType":"Block","src":"2470:44:90","statements":[{"expression":{"baseExpression":{"id":38300,"name":"_totalSupplyOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38293,"src":"2487:14:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38302,"indexExpression":{"id":38301,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38295,"src":"2502:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2487:20:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38299,"id":38303,"nodeType":"Return","src":"2480:27:90"}]},"id":38305,"implemented":true,"kind":"function","modifiers":[],"name":"_totalSupply","nameLocation":"2411:12:90","nodeType":"FunctionDefinition","parameters":{"id":38296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38295,"mutability":"mutable","name":"pool","nameLocation":"2432:4:90","nodeType":"VariableDeclaration","scope":38305,"src":"2424:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38294,"name":"address","nodeType":"ElementaryTypeName","src":"2424:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2423:14:90"},"returnParameters":{"id":38299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38305,"src":"2461:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38297,"name":"uint256","nodeType":"ElementaryTypeName","src":"2461:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2460:9:90"},"scope":38828,"src":"2402:112:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":38320,"nodeType":"Block","src":"2603:48:90","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":38314,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"2620:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38316,"indexExpression":{"id":38315,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38307,"src":"2630:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2620:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38318,"indexExpression":{"id":38317,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38309,"src":"2636:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2620:24:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38313,"id":38319,"nodeType":"Return","src":"2613:31:90"}]},"id":38321,"implemented":true,"kind":"function","modifiers":[],"name":"_balanceOf","nameLocation":"2529:10:90","nodeType":"FunctionDefinition","parameters":{"id":38310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38307,"mutability":"mutable","name":"pool","nameLocation":"2548:4:90","nodeType":"VariableDeclaration","scope":38321,"src":"2540:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38306,"name":"address","nodeType":"ElementaryTypeName","src":"2540:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38309,"mutability":"mutable","name":"account","nameLocation":"2562:7:90","nodeType":"VariableDeclaration","scope":38321,"src":"2554:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38308,"name":"address","nodeType":"ElementaryTypeName","src":"2554:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2539:31:90"},"returnParameters":{"id":38313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38321,"src":"2594:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38311,"name":"uint256","nodeType":"ElementaryTypeName","src":"2594:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2593:9:90"},"scope":38828,"src":"2520:131:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":38352,"nodeType":"Block","src":"2755:211:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":38334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38332,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38325,"src":"2822:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":38333,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38327,"src":"2831:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2822:16:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":38350,"nodeType":"Block","src":"2895:65:90","statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":38342,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38289,"src":"2916:11:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => uint256)))"}},"id":38344,"indexExpression":{"id":38343,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38323,"src":"2928:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2916:17:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38346,"indexExpression":{"id":38345,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38325,"src":"2934:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2916:24:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38348,"indexExpression":{"id":38347,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38327,"src":"2941:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2916:33:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38331,"id":38349,"nodeType":"Return","src":"2909:40:90"}]},"id":38351,"nodeType":"IfStatement","src":"2818:142:90","trueBody":{"id":38341,"nodeType":"Block","src":"2840:49:90","statements":[{"expression":{"expression":{"arguments":[{"id":38337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2866:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":38336,"name":"uint256","nodeType":"ElementaryTypeName","src":"2866:7:90","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":38335,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2861:4:90","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":38338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2861:13:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":38339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2875:3:90","memberName":"max","nodeType":"MemberAccess","src":"2861:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":38331,"id":38340,"nodeType":"Return","src":"2854:24:90"}]}}]},"id":38353,"implemented":true,"kind":"function","modifiers":[],"name":"_allowance","nameLocation":"2666:10:90","nodeType":"FunctionDefinition","parameters":{"id":38328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38323,"mutability":"mutable","name":"pool","nameLocation":"2685:4:90","nodeType":"VariableDeclaration","scope":38353,"src":"2677:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38322,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38325,"mutability":"mutable","name":"owner","nameLocation":"2699:5:90","nodeType":"VariableDeclaration","scope":38353,"src":"2691:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38324,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38327,"mutability":"mutable","name":"spender","nameLocation":"2714:7:90","nodeType":"VariableDeclaration","scope":38353,"src":"2706:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38326,"name":"address","nodeType":"ElementaryTypeName","src":"2706:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2676:46:90"},"returnParameters":{"id":38331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":38353,"src":"2746:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38329,"name":"uint256","nodeType":"ElementaryTypeName","src":"2746:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2745:9:90"},"scope":38828,"src":"2657:309:90","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":38386,"nodeType":"Block","src":"3248:342:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":38367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":38363,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"3341:18:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":38364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3360:12:90","memberName":"isStaticCall","nodeType":"MemberAccess","referencedDeclaration":5492,"src":"3341:31:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":38365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3341:33:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":38366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3378:5:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3341:42:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38374,"nodeType":"IfStatement","src":"3337:114:90","trueBody":{"id":38373,"nodeType":"Block","src":"3385:66:90","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":38368,"name":"EVMCallModeHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5493,"src":"3406:18:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EVMCallModeHelpers_$5493_$","typeString":"type(library EVMCallModeHelpers)"}},"id":38370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3425:13:90","memberName":"NotStaticCall","nodeType":"MemberAccess","referencedDeclaration":5477,"src":"3406:32:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":38371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3406:34:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38372,"nodeType":"RevertStatement","src":"3399:41:90"}]}},{"expression":{"id":38384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":38375,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"3545:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38381,"indexExpression":{"arguments":[{"id":38378,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38356,"src":"3563:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3555:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38376,"name":"address","nodeType":"ElementaryTypeName","src":"3555:7:90","typeDescriptions":{}}},"id":38379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3555:13:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3545:24:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38382,"indexExpression":{"id":38380,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38358,"src":"3570:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3545:28:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":38383,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38360,"src":"3577:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3545:38:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38385,"nodeType":"ExpressionStatement","src":"3545:38:90"}]},"documentation":{"id":38354,"nodeType":"StructuredDocumentation","src":"2972:185:90","text":" @dev DO NOT CALL THIS METHOD!\n Only `removeLiquidity` in the Vault may call this - in a query context - to allow burning tokens the caller\n does not have."},"id":38387,"implemented":true,"kind":"function","modifiers":[],"name":"_queryModeBalanceIncrease","nameLocation":"3171:25:90","nodeType":"FunctionDefinition","parameters":{"id":38361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38356,"mutability":"mutable","name":"pool","nameLocation":"3205:4:90","nodeType":"VariableDeclaration","scope":38387,"src":"3197:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38355,"name":"address","nodeType":"ElementaryTypeName","src":"3197:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38358,"mutability":"mutable","name":"to","nameLocation":"3219:2:90","nodeType":"VariableDeclaration","scope":38387,"src":"3211:10:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38357,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38360,"mutability":"mutable","name":"amount","nameLocation":"3231:6:90","nodeType":"VariableDeclaration","scope":38387,"src":"3223:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38359,"name":"uint256","nodeType":"ElementaryTypeName","src":"3223:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3196:42:90"},"returnParameters":{"id":38362,"nodeType":"ParameterList","parameters":[],"src":"3248:0:90"},"scope":38828,"src":"3162:428:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":38457,"nodeType":"Block","src":"3662:690:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":38401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38396,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38391,"src":"3676:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":38399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3690:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3682:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38397,"name":"address","nodeType":"ElementaryTypeName","src":"3682:7:90","typeDescriptions":{}}},"id":38400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3682:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3676:16:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38407,"nodeType":"IfStatement","src":"3672:78:90","trueBody":{"id":38406,"nodeType":"Block","src":"3694:56:90","statements":[{"errorCall":{"arguments":[{"id":38403,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38391,"src":"3736:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38402,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39045,"src":"3715:20:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":38404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3715:24:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38405,"nodeType":"RevertStatement","src":"3708:31:90"}]}},{"assignments":[38409],"declarations":[{"constant":false,"id":38409,"mutability":"mutable","name":"newTotalSupply","nameLocation":"3768:14:90","nodeType":"VariableDeclaration","scope":38457,"src":"3760:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38408,"name":"uint256","nodeType":"ElementaryTypeName","src":"3760:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38415,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":38410,"name":"_totalSupplyOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38293,"src":"3785:14:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38412,"indexExpression":{"id":38411,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38389,"src":"3800:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3785:20:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":38413,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38393,"src":"3808:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3785:29:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3760:54:90"},{"id":38424,"nodeType":"UncheckedBlock","src":"3824:179:90","statements":[{"expression":{"id":38422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":38416,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"3963:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38419,"indexExpression":{"id":38417,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38389,"src":"3973:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3963:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38420,"indexExpression":{"id":38418,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38391,"src":"3979:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3963:19:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":38421,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38393,"src":"3986:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3963:29:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38423,"nodeType":"ExpressionStatement","src":"3963:29:90"}]},{"expression":{"arguments":[{"id":38426,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38409,"src":"4043:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38425,"name":"_ensurePoolMinimumTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38473,"src":"4013:29:90","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":38427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4013:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38428,"nodeType":"ExpressionStatement","src":"4013:45:90"},{"expression":{"id":38433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":38429,"name":"_totalSupplyOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38293,"src":"4069:14:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38431,"indexExpression":{"id":38430,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38389,"src":"4084:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4069:20:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":38432,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38409,"src":"4092:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4069:37:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38434,"nodeType":"ExpressionStatement","src":"4069:37:90"},{"eventCall":{"arguments":[{"id":38436,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38389,"src":"4131:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":38439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4145:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4137:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38437,"name":"address","nodeType":"ElementaryTypeName","src":"4137:7:90","typeDescriptions":{}}},"id":38440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4137:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38441,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38391,"src":"4149:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38442,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38393,"src":"4153:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38435,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38264,"src":"4122:8:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":38443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4122:38:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38444,"nodeType":"EmitStatement","src":"4117:43:90"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":38451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4330:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4322:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38449,"name":"address","nodeType":"ElementaryTypeName","src":"4322:7:90","typeDescriptions":{}}},"id":38452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38453,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38391,"src":"4334:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38454,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38393,"src":"4338:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":38446,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38389,"src":"4303:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38445,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"4285:17:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerPoolToken_$10732_$","typeString":"type(contract BalancerPoolToken)"}},"id":38447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4285:23:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}},"id":38448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4309:12:90","memberName":"emitTransfer","nodeType":"MemberAccess","referencedDeclaration":10583,"src":"4285:36:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":38455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4285:60:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38456,"nodeType":"ExpressionStatement","src":"4285:60:90"}]},"id":38458,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"3605:5:90","nodeType":"FunctionDefinition","parameters":{"id":38394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38389,"mutability":"mutable","name":"pool","nameLocation":"3619:4:90","nodeType":"VariableDeclaration","scope":38458,"src":"3611:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38388,"name":"address","nodeType":"ElementaryTypeName","src":"3611:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38391,"mutability":"mutable","name":"to","nameLocation":"3633:2:90","nodeType":"VariableDeclaration","scope":38458,"src":"3625:10:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38390,"name":"address","nodeType":"ElementaryTypeName","src":"3625:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38393,"mutability":"mutable","name":"amount","nameLocation":"3645:6:90","nodeType":"VariableDeclaration","scope":38458,"src":"3637:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38392,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3610:42:90"},"returnParameters":{"id":38395,"nodeType":"ParameterList","parameters":[],"src":"3662:0:90"},"scope":38828,"src":"3596:756:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":38472,"nodeType":"Block","src":"4435:134:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38463,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38460,"src":"4449:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":38464,"name":"_POOL_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"4466:26:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4449:43:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38471,"nodeType":"IfStatement","src":"4445:118:90","trueBody":{"id":38470,"nodeType":"Block","src":"4494:69:90","statements":[{"errorCall":{"arguments":[{"id":38467,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38460,"src":"4537:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38466,"name":"PoolTotalSupplyTooLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1684,"src":"4515:21:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":38468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4515:37:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38469,"nodeType":"RevertStatement","src":"4508:44:90"}]}}]},"id":38473,"implemented":true,"kind":"function","modifiers":[],"name":"_ensurePoolMinimumTotalSupply","nameLocation":"4367:29:90","nodeType":"FunctionDefinition","parameters":{"id":38461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38460,"mutability":"mutable","name":"newTotalSupply","nameLocation":"4405:14:90","nodeType":"VariableDeclaration","scope":38473,"src":"4397:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38459,"name":"uint256","nodeType":"ElementaryTypeName","src":"4397:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4396:24:90"},"returnParameters":{"id":38462,"nodeType":"ParameterList","parameters":[],"src":"4435:0:90"},"scope":38828,"src":"4358:211:90","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":38524,"nodeType":"Block","src":"4633:577:90","statements":[{"expression":{"id":38482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":38478,"name":"_totalSupplyOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38293,"src":"4643:14:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38480,"indexExpression":{"id":38479,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38475,"src":"4658:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4643:20:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":38481,"name":"_POOL_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"4667:26:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4643:50:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38483,"nodeType":"ExpressionStatement","src":"4643:50:90"},{"id":38495,"nodeType":"UncheckedBlock","src":"4703:207:90","statements":[{"expression":{"id":38493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":38484,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"4842:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38490,"indexExpression":{"id":38485,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38475,"src":"4852:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4842:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38491,"indexExpression":{"arguments":[{"hexValue":"30","id":38488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4866:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4858:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38486,"name":"address","nodeType":"ElementaryTypeName","src":"4858:7:90","typeDescriptions":{}}},"id":38489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4858:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4842:27:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":38492,"name":"_POOL_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"4873:26:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4842:57:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38494,"nodeType":"ExpressionStatement","src":"4842:57:90"}]},{"eventCall":{"arguments":[{"id":38497,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38475,"src":"4933:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":38500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4947:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4939:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38498,"name":"address","nodeType":"ElementaryTypeName","src":"4939:7:90","typeDescriptions":{}}},"id":38501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4939:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":38504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4959:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4951:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38502,"name":"address","nodeType":"ElementaryTypeName","src":"4951:7:90","typeDescriptions":{}}},"id":38505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4951:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38506,"name":"_POOL_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"4963:26:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38496,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38264,"src":"4924:8:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":38507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4924:66:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38508,"nodeType":"EmitStatement","src":"4919:71:90"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":38515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5160:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5152:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38513,"name":"address","nodeType":"ElementaryTypeName","src":"5152:7:90","typeDescriptions":{}}},"id":38516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5152:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":38519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5172:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5164:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38517,"name":"address","nodeType":"ElementaryTypeName","src":"5164:7:90","typeDescriptions":{}}},"id":38520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5164:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38521,"name":"_POOL_MINIMUM_TOTAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38253,"src":"5176:26:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":38510,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38475,"src":"5133:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38509,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"5115:17:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerPoolToken_$10732_$","typeString":"type(contract BalancerPoolToken)"}},"id":38511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5115:23:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}},"id":38512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5139:12:90","memberName":"emitTransfer","nodeType":"MemberAccess","referencedDeclaration":10583,"src":"5115:36:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":38522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5115:88:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38523,"nodeType":"ExpressionStatement","src":"5115:88:90"}]},"id":38525,"implemented":true,"kind":"function","modifiers":[],"name":"_mintMinimumSupplyReserve","nameLocation":"4584:25:90","nodeType":"FunctionDefinition","parameters":{"id":38476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38475,"mutability":"mutable","name":"pool","nameLocation":"4618:4:90","nodeType":"VariableDeclaration","scope":38525,"src":"4610:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38474,"name":"address","nodeType":"ElementaryTypeName","src":"4610:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4609:14:90"},"returnParameters":{"id":38477,"nodeType":"ParameterList","parameters":[],"src":"4633:0:90"},"scope":38828,"src":"4575:635:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":38620,"nodeType":"Block","src":"5284:1112:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":38539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38534,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38529,"src":"5298:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":38537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5314:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5306:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38535,"name":"address","nodeType":"ElementaryTypeName","src":"5306:7:90","typeDescriptions":{}}},"id":38538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5306:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5298:18:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38545,"nodeType":"IfStatement","src":"5294:80:90","trueBody":{"id":38544,"nodeType":"Block","src":"5318:56:90","statements":[{"errorCall":{"arguments":[{"id":38541,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38529,"src":"5358:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38540,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39040,"src":"5339:18:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":38542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5339:24:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38543,"nodeType":"RevertStatement","src":"5332:31:90"}]}},{"assignments":[38547],"declarations":[{"constant":false,"id":38547,"mutability":"mutable","name":"accountBalance","nameLocation":"5392:14:90","nodeType":"VariableDeclaration","scope":38620,"src":"5384:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38546,"name":"uint256","nodeType":"ElementaryTypeName","src":"5384:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38553,"initialValue":{"baseExpression":{"baseExpression":{"id":38548,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"5409:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38550,"indexExpression":{"id":38549,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"5419:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5409:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38552,"indexExpression":{"id":38551,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38529,"src":"5425:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5409:21:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5384:46:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38554,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38531,"src":"5444:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":38555,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38547,"src":"5453:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5444:23:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38564,"nodeType":"IfStatement","src":"5440:115:90","trueBody":{"id":38563,"nodeType":"Block","src":"5469:86:90","statements":[{"errorCall":{"arguments":[{"id":38558,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38529,"src":"5515:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38559,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38547,"src":"5521:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38560,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38531,"src":"5537:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38557,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39035,"src":"5490:24:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":38561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5490:54:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38562,"nodeType":"RevertStatement","src":"5483:61:90"}]}},{"id":38575,"nodeType":"UncheckedBlock","src":"5565:82:90","statements":[{"expression":{"id":38573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":38565,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"5589:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38568,"indexExpression":{"id":38566,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"5599:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5589:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38569,"indexExpression":{"id":38567,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38529,"src":"5605:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5589:21:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38570,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38547,"src":"5613:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":38571,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38531,"src":"5630:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5613:23:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5589:47:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38574,"nodeType":"ExpressionStatement","src":"5589:47:90"}]},{"assignments":[38577],"declarations":[{"constant":false,"id":38577,"mutability":"mutable","name":"newTotalSupply","nameLocation":"5664:14:90","nodeType":"VariableDeclaration","scope":38620,"src":"5656:22:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38576,"name":"uint256","nodeType":"ElementaryTypeName","src":"5656:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38583,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":38578,"name":"_totalSupplyOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38293,"src":"5681:14:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38580,"indexExpression":{"id":38579,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"5696:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5681:20:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":38581,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38531,"src":"5704:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5681:29:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5656:54:90"},{"expression":{"arguments":[{"id":38585,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38577,"src":"5751:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38584,"name":"_ensurePoolMinimumTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38473,"src":"5721:29:90","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":38586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5721:45:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38587,"nodeType":"ExpressionStatement","src":"5721:45:90"},{"expression":{"id":38592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":38588,"name":"_totalSupplyOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38293,"src":"5777:14:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38590,"indexExpression":{"id":38589,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"5792:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5777:20:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":38591,"name":"newTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38577,"src":"5800:14:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5777:37:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38593,"nodeType":"ExpressionStatement","src":"5777:37:90"},{"clauses":[{"block":{"id":38605,"nodeType":"Block","src":"6176:2:90","statements":[]},"errorName":"","id":38606,"nodeType":"TryCatchClause","src":"6176:2:90"},{"block":{"id":38607,"nodeType":"Block","src":"6185:72:90","statements":[]},"errorName":"","id":38608,"nodeType":"TryCatchClause","src":"6179:78:90"}],"externalCall":{"arguments":[{"id":38598,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38529,"src":"6150:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":38601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6164:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6156:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38599,"name":"address","nodeType":"ElementaryTypeName","src":"6156:7:90","typeDescriptions":{}}},"id":38602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6156:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38603,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38531,"src":"6168:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":38595,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"6131:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38594,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"6113:17:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerPoolToken_$10732_$","typeString":"type(contract BalancerPoolToken)"}},"id":38596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6113:23:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}},"id":38597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6137:12:90","memberName":"emitTransfer","nodeType":"MemberAccess","referencedDeclaration":10583,"src":"6113:36:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":38604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6113:62:90","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38609,"nodeType":"TryStatement","src":"6109:148:90"},{"eventCall":{"arguments":[{"id":38611,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38527,"src":"6358:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38612,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38529,"src":"6364:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":38615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6378:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6370:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38613,"name":"address","nodeType":"ElementaryTypeName","src":"6370:7:90","typeDescriptions":{}}},"id":38616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6370:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38617,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38531,"src":"6382:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38610,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38264,"src":"6349:8:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":38618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6349:40:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38619,"nodeType":"EmitStatement","src":"6344:45:90"}]},"id":38621,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"5225:5:90","nodeType":"FunctionDefinition","parameters":{"id":38532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38527,"mutability":"mutable","name":"pool","nameLocation":"5239:4:90","nodeType":"VariableDeclaration","scope":38621,"src":"5231:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38526,"name":"address","nodeType":"ElementaryTypeName","src":"5231:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38529,"mutability":"mutable","name":"from","nameLocation":"5253:4:90","nodeType":"VariableDeclaration","scope":38621,"src":"5245:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38528,"name":"address","nodeType":"ElementaryTypeName","src":"5245:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38531,"mutability":"mutable","name":"amount","nameLocation":"5267:6:90","nodeType":"VariableDeclaration","scope":38621,"src":"5259:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38530,"name":"uint256","nodeType":"ElementaryTypeName","src":"5259:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5230:44:90"},"returnParameters":{"id":38533,"nodeType":"ParameterList","parameters":[],"src":"5284:0:90"},"scope":38828,"src":"5216:1180:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":38710,"nodeType":"Block","src":"6486:882:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":38637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38632,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38625,"src":"6500:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":38635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6516:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6508:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38633,"name":"address","nodeType":"ElementaryTypeName","src":"6508:7:90","typeDescriptions":{}}},"id":38636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6508:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6500:18:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38643,"nodeType":"IfStatement","src":"6496:80:90","trueBody":{"id":38642,"nodeType":"Block","src":"6520:56:90","statements":[{"errorCall":{"arguments":[{"id":38639,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38625,"src":"6560:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38638,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39040,"src":"6541:18:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":38640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6541:24:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38641,"nodeType":"RevertStatement","src":"6534:31:90"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":38649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38644,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38627,"src":"6590:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":38647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6604:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6596:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38645,"name":"address","nodeType":"ElementaryTypeName","src":"6596:7:90","typeDescriptions":{}}},"id":38648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6596:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6590:16:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38655,"nodeType":"IfStatement","src":"6586:78:90","trueBody":{"id":38654,"nodeType":"Block","src":"6608:56:90","statements":[{"errorCall":{"arguments":[{"id":38651,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38627,"src":"6650:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38650,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39045,"src":"6629:20:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":38652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6629:24:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38653,"nodeType":"RevertStatement","src":"6622:31:90"}]}},{"assignments":[38657],"declarations":[{"constant":false,"id":38657,"mutability":"mutable","name":"fromBalance","nameLocation":"6682:11:90","nodeType":"VariableDeclaration","scope":38710,"src":"6674:19:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38656,"name":"uint256","nodeType":"ElementaryTypeName","src":"6674:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38663,"initialValue":{"baseExpression":{"baseExpression":{"id":38658,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"6696:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38660,"indexExpression":{"id":38659,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38623,"src":"6706:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6696:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38662,"indexExpression":{"id":38661,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38625,"src":"6712:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6696:21:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6674:43:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38664,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38629,"src":"6731:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":38665,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38657,"src":"6740:11:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6731:20:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38674,"nodeType":"IfStatement","src":"6727:109:90","trueBody":{"id":38673,"nodeType":"Block","src":"6753:83:90","statements":[{"errorCall":{"arguments":[{"id":38668,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38625,"src":"6799:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38669,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38657,"src":"6805:11:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38670,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38629,"src":"6818:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38667,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39035,"src":"6774:24:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":38671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6774:51:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38672,"nodeType":"RevertStatement","src":"6767:58:90"}]}},{"id":38693,"nodeType":"UncheckedBlock","src":"6846:289:90","statements":[{"expression":{"id":38683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":38675,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"6870:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38678,"indexExpression":{"id":38676,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38623,"src":"6880:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6870:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38679,"indexExpression":{"id":38677,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38625,"src":"6886:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6870:21:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38680,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38657,"src":"6894:11:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":38681,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38629,"src":"6908:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6894:20:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6870:44:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38684,"nodeType":"ExpressionStatement","src":"6870:44:90"},{"expression":{"id":38691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":38685,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38281,"src":"7095:9:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38688,"indexExpression":{"id":38686,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38623,"src":"7105:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7095:15:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38689,"indexExpression":{"id":38687,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38627,"src":"7111:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7095:19:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":38690,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38629,"src":"7118:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7095:29:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38692,"nodeType":"ExpressionStatement","src":"7095:29:90"}]},{"eventCall":{"arguments":[{"id":38695,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38623,"src":"7159:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38696,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38625,"src":"7165:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38697,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38627,"src":"7171:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38698,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38629,"src":"7175:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38694,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38264,"src":"7150:8:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":38699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7150:32:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38700,"nodeType":"EmitStatement","src":"7145:37:90"},{"expression":{"arguments":[{"id":38705,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38625,"src":"7344:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38706,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38627,"src":"7350:2:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38707,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38629,"src":"7354:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":38702,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38623,"src":"7325:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38701,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"7307:17:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerPoolToken_$10732_$","typeString":"type(contract BalancerPoolToken)"}},"id":38703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:23:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}},"id":38704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7331:12:90","memberName":"emitTransfer","nodeType":"MemberAccess","referencedDeclaration":10583,"src":"7307:36:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":38708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:54:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38709,"nodeType":"ExpressionStatement","src":"7307:54:90"}]},"id":38711,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6411:9:90","nodeType":"FunctionDefinition","parameters":{"id":38630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38623,"mutability":"mutable","name":"pool","nameLocation":"6429:4:90","nodeType":"VariableDeclaration","scope":38711,"src":"6421:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38622,"name":"address","nodeType":"ElementaryTypeName","src":"6421:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38625,"mutability":"mutable","name":"from","nameLocation":"6443:4:90","nodeType":"VariableDeclaration","scope":38711,"src":"6435:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38624,"name":"address","nodeType":"ElementaryTypeName","src":"6435:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38627,"mutability":"mutable","name":"to","nameLocation":"6457:2:90","nodeType":"VariableDeclaration","scope":38711,"src":"6449:10:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38626,"name":"address","nodeType":"ElementaryTypeName","src":"6449:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38629,"mutability":"mutable","name":"amount","nameLocation":"6469:6:90","nodeType":"VariableDeclaration","scope":38711,"src":"6461:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38628,"name":"uint256","nodeType":"ElementaryTypeName","src":"6461:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6420:56:90"},"returnParameters":{"id":38631,"nodeType":"ParameterList","parameters":[],"src":"6486:0:90"},"scope":38828,"src":"6402:966:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":38776,"nodeType":"Block","src":"7463:820:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":38727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38722,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38715,"src":"7477:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":38725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7494:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7486:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38723,"name":"address","nodeType":"ElementaryTypeName","src":"7486:7:90","typeDescriptions":{}}},"id":38726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7486:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7477:19:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38733,"nodeType":"IfStatement","src":"7473:84:90","trueBody":{"id":38732,"nodeType":"Block","src":"7498:59:90","statements":[{"errorCall":{"arguments":[{"id":38729,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38715,"src":"7540:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38728,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39059,"src":"7519:20:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":38730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7519:27:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38731,"nodeType":"RevertStatement","src":"7512:34:90"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":38739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38734,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38717,"src":"7571:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":38737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7590:1:90","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":38736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7582:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":38735,"name":"address","nodeType":"ElementaryTypeName","src":"7582:7:90","typeDescriptions":{}}},"id":38738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7582:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7571:21:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38745,"nodeType":"IfStatement","src":"7567:87:90","trueBody":{"id":38744,"nodeType":"Block","src":"7594:60:90","statements":[{"errorCall":{"arguments":[{"id":38741,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38717,"src":"7635:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38740,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39064,"src":"7615:19:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":38742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7615:28:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38743,"nodeType":"RevertStatement","src":"7608:35:90"}]}},{"expression":{"id":38754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":38746,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38289,"src":"7664:11:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(address => uint256)))"}},"id":38750,"indexExpression":{"id":38747,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38713,"src":"7676:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7664:17:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":38751,"indexExpression":{"id":38748,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38715,"src":"7682:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7664:24:90","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":38752,"indexExpression":{"id":38749,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38717,"src":"7689:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7664:33:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":38753,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38719,"src":"7700:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7664:42:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":38755,"nodeType":"ExpressionStatement","src":"7664:42:90"},{"clauses":[{"block":{"id":38764,"nodeType":"Block","src":"8065:2:90","statements":[]},"errorName":"","id":38765,"nodeType":"TryCatchClause","src":"8065:2:90"},{"block":{"id":38766,"nodeType":"Block","src":"8074:72:90","statements":[]},"errorName":"","id":38767,"nodeType":"TryCatchClause","src":"8068:78:90"}],"externalCall":{"arguments":[{"id":38760,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38715,"src":"8041:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38761,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38717,"src":"8048:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38762,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38719,"src":"8057:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":38757,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38713,"src":"8022:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":38756,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"8004:17:90","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BalancerPoolToken_$10732_$","typeString":"type(contract BalancerPoolToken)"}},"id":38758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8004:23:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerPoolToken_$10732","typeString":"contract BalancerPoolToken"}},"id":38759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8028:12:90","memberName":"emitApproval","nodeType":"MemberAccess","referencedDeclaration":10602,"src":"8004:36:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":38763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8004:60:90","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38768,"nodeType":"TryStatement","src":"8000:146:90"},{"eventCall":{"arguments":[{"id":38770,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38713,"src":"8247:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38771,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38715,"src":"8253:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38772,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38717,"src":"8260:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38773,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38719,"src":"8269:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38769,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38275,"src":"8238:8:90","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":38774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8238:38:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38775,"nodeType":"EmitStatement","src":"8233:43:90"}]},"id":38777,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"7383:8:90","nodeType":"FunctionDefinition","parameters":{"id":38720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38713,"mutability":"mutable","name":"pool","nameLocation":"7400:4:90","nodeType":"VariableDeclaration","scope":38777,"src":"7392:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38712,"name":"address","nodeType":"ElementaryTypeName","src":"7392:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38715,"mutability":"mutable","name":"owner","nameLocation":"7414:5:90","nodeType":"VariableDeclaration","scope":38777,"src":"7406:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38714,"name":"address","nodeType":"ElementaryTypeName","src":"7406:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38717,"mutability":"mutable","name":"spender","nameLocation":"7429:7:90","nodeType":"VariableDeclaration","scope":38777,"src":"7421:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38716,"name":"address","nodeType":"ElementaryTypeName","src":"7421:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38719,"mutability":"mutable","name":"amount","nameLocation":"7446:6:90","nodeType":"VariableDeclaration","scope":38777,"src":"7438:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38718,"name":"uint256","nodeType":"ElementaryTypeName","src":"7438:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7391:62:90"},"returnParameters":{"id":38721,"nodeType":"ParameterList","parameters":[],"src":"7463:0:90"},"scope":38828,"src":"7374:909:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":38826,"nodeType":"Block","src":"8385:398:90","statements":[{"assignments":[38789],"declarations":[{"constant":false,"id":38789,"mutability":"mutable","name":"currentAllowance","nameLocation":"8403:16:90","nodeType":"VariableDeclaration","scope":38826,"src":"8395:24:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38788,"name":"uint256","nodeType":"ElementaryTypeName","src":"8395:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":38795,"initialValue":{"arguments":[{"id":38791,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38779,"src":"8433:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38792,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38781,"src":"8439:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38793,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38783,"src":"8446:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":38790,"name":"_allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38353,"src":"8422:10:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256)"}},"id":38794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8422:32:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8395:59:90"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38796,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38789,"src":"8468:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":38799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8493:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":38798,"name":"uint256","nodeType":"ElementaryTypeName","src":"8493:7:90","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":38797,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8488:4:90","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":38800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8488:13:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":38801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8502:3:90","memberName":"max","nodeType":"MemberAccess","src":"8488:17:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8468:37:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38825,"nodeType":"IfStatement","src":"8464:313:90","trueBody":{"id":38824,"nodeType":"Block","src":"8507:270:90","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38803,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38785,"src":"8525:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":38804,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38789,"src":"8534:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8525:25:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":38813,"nodeType":"IfStatement","src":"8521:132:90","trueBody":{"id":38812,"nodeType":"Block","src":"8552:101:90","statements":[{"errorCall":{"arguments":[{"id":38807,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38783,"src":"8604:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38808,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38789,"src":"8613:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":38809,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38785,"src":"8631:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38806,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39054,"src":"8577:26:90","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":38810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8577:61:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":38811,"nodeType":"RevertStatement","src":"8570:68:90"}]}},{"id":38823,"nodeType":"UncheckedBlock","src":"8667:100:90","statements":[{"expression":{"arguments":[{"id":38815,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38779,"src":"8704:4:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38816,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38781,"src":"8710:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":38817,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38783,"src":"8717:7:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":38820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":38818,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38789,"src":"8726:16:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":38819,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38785,"src":"8745:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8726:25:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":38814,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38777,"src":"8695:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":38821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8695:57:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":38822,"nodeType":"ExpressionStatement","src":"8695:57:90"}]}]}}]},"id":38827,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"8298:15:90","nodeType":"FunctionDefinition","parameters":{"id":38786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38779,"mutability":"mutable","name":"pool","nameLocation":"8322:4:90","nodeType":"VariableDeclaration","scope":38827,"src":"8314:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38778,"name":"address","nodeType":"ElementaryTypeName","src":"8314:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38781,"mutability":"mutable","name":"owner","nameLocation":"8336:5:90","nodeType":"VariableDeclaration","scope":38827,"src":"8328:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38780,"name":"address","nodeType":"ElementaryTypeName","src":"8328:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38783,"mutability":"mutable","name":"spender","nameLocation":"8351:7:90","nodeType":"VariableDeclaration","scope":38827,"src":"8343:15:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38782,"name":"address","nodeType":"ElementaryTypeName","src":"8343:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38785,"mutability":"mutable","name":"amount","nameLocation":"8368:6:90","nodeType":"VariableDeclaration","scope":38827,"src":"8360:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38784,"name":"uint256","nodeType":"ElementaryTypeName","src":"8360:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8313:62:90"},"returnParameters":{"id":38787,"nodeType":"ParameterList","parameters":[],"src":"8385:0:90"},"scope":38828,"src":"8289:494:90","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":38829,"src":"757:8028:90","usedErrors":[1684,39035,39040,39045,39054,39059,39064],"usedEvents":[38264,38275]}],"src":"46:8740:90"},"id":90},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","exportedSymbols":{"IERC20":[39274],"IERC20Metadata":[39300],"IERC4626":[38998]},"id":38999,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":38830,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:91"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":38832,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38999,"sourceUnit":39275,"src":"133:49:91","symbolAliases":[{"foreign":{"id":38831,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"141:6:91","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"../token/ERC20/extensions/IERC20Metadata.sol","id":38834,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":38999,"sourceUnit":39301,"src":"183:76:91","symbolAliases":[{"foreign":{"id":38833,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39300,"src":"191:14:91","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":38836,"name":"IERC20","nameLocations":["420:6:91"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"420:6:91"},"id":38837,"nodeType":"InheritanceSpecifier","src":"420:6:91"},{"baseName":{"id":38838,"name":"IERC20Metadata","nameLocations":["428:14:91"],"nodeType":"IdentifierPath","referencedDeclaration":39300,"src":"428:14:91"},"id":38839,"nodeType":"InheritanceSpecifier","src":"428:14:91"}],"canonicalName":"IERC4626","contractDependencies":[],"contractKind":"interface","documentation":{"id":38835,"nodeType":"StructuredDocumentation","src":"261:136:91","text":" @dev Interface of the ERC4626 \"Tokenized Vault Standard\", as defined in\n https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]."},"fullyImplemented":false,"id":38998,"linearizedBaseContracts":[38998,39300,39274],"name":"IERC4626","nameLocation":"408:8:91","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"dcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7","id":38849,"name":"Deposit","nameLocation":"455:7:91","nodeType":"EventDefinition","parameters":{"id":38848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38841,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"479:6:91","nodeType":"VariableDeclaration","scope":38849,"src":"463:22:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38840,"name":"address","nodeType":"ElementaryTypeName","src":"463:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38843,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"503:5:91","nodeType":"VariableDeclaration","scope":38849,"src":"487:21:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38842,"name":"address","nodeType":"ElementaryTypeName","src":"487:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38845,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"518:6:91","nodeType":"VariableDeclaration","scope":38849,"src":"510:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38844,"name":"uint256","nodeType":"ElementaryTypeName","src":"510:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38847,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"534:6:91","nodeType":"VariableDeclaration","scope":38849,"src":"526:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38846,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"462:79:91"},"src":"449:93:91"},{"anonymous":false,"eventSelector":"fbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db","id":38861,"name":"Withdraw","nameLocation":"554:8:91","nodeType":"EventDefinition","parameters":{"id":38860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38851,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"588:6:91","nodeType":"VariableDeclaration","scope":38861,"src":"572:22:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38850,"name":"address","nodeType":"ElementaryTypeName","src":"572:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38853,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"620:8:91","nodeType":"VariableDeclaration","scope":38861,"src":"604:24:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38852,"name":"address","nodeType":"ElementaryTypeName","src":"604:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38855,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"654:5:91","nodeType":"VariableDeclaration","scope":38861,"src":"638:21:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38854,"name":"address","nodeType":"ElementaryTypeName","src":"638:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38857,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"677:6:91","nodeType":"VariableDeclaration","scope":38861,"src":"669:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38856,"name":"uint256","nodeType":"ElementaryTypeName","src":"669:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38859,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"701:6:91","nodeType":"VariableDeclaration","scope":38861,"src":"693:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38858,"name":"uint256","nodeType":"ElementaryTypeName","src":"693:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"562:151:91"},"src":"548:166:91"},{"documentation":{"id":38862,"nodeType":"StructuredDocumentation","src":"720:207:91","text":" @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.\n - MUST be an ERC-20 token contract.\n - MUST NOT revert."},"functionSelector":"38d52e0f","id":38867,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"941:5:91","nodeType":"FunctionDefinition","parameters":{"id":38863,"nodeType":"ParameterList","parameters":[],"src":"946:2:91"},"returnParameters":{"id":38866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38865,"mutability":"mutable","name":"assetTokenAddress","nameLocation":"980:17:91","nodeType":"VariableDeclaration","scope":38867,"src":"972:25:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38864,"name":"address","nodeType":"ElementaryTypeName","src":"972:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"971:27:91"},"scope":38998,"src":"932:67:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38868,"nodeType":"StructuredDocumentation","src":"1005:286:91","text":" @dev Returns the total amount of the underlying asset that is “managed” by Vault.\n - SHOULD include any compounding that occurs from yield.\n - MUST be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT revert."},"functionSelector":"01e1d114","id":38873,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"1305:11:91","nodeType":"FunctionDefinition","parameters":{"id":38869,"nodeType":"ParameterList","parameters":[],"src":"1316:2:91"},"returnParameters":{"id":38872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38871,"mutability":"mutable","name":"totalManagedAssets","nameLocation":"1350:18:91","nodeType":"VariableDeclaration","scope":38873,"src":"1342:26:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38870,"name":"uint256","nodeType":"ElementaryTypeName","src":"1342:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1341:28:91"},"scope":38998,"src":"1296:74:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38874,"nodeType":"StructuredDocumentation","src":"1376:720:91","text":" @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n from."},"functionSelector":"c6e6f592","id":38881,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"2110:15:91","nodeType":"FunctionDefinition","parameters":{"id":38877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38876,"mutability":"mutable","name":"assets","nameLocation":"2134:6:91","nodeType":"VariableDeclaration","scope":38881,"src":"2126:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2125:16:91"},"returnParameters":{"id":38880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38879,"mutability":"mutable","name":"shares","nameLocation":"2173:6:91","nodeType":"VariableDeclaration","scope":38881,"src":"2165:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38878,"name":"uint256","nodeType":"ElementaryTypeName","src":"2165:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2164:16:91"},"scope":38998,"src":"2101:80:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38882,"nodeType":"StructuredDocumentation","src":"2187:720:91","text":" @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal\n scenario where all the conditions are met.\n - MUST NOT be inclusive of any fees that are charged against assets in the Vault.\n - MUST NOT show any variations depending on the caller.\n - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.\n - MUST NOT revert.\n NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the\n “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and\n from."},"functionSelector":"07a2d13a","id":38889,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"2921:15:91","nodeType":"FunctionDefinition","parameters":{"id":38885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38884,"mutability":"mutable","name":"shares","nameLocation":"2945:6:91","nodeType":"VariableDeclaration","scope":38889,"src":"2937:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38883,"name":"uint256","nodeType":"ElementaryTypeName","src":"2937:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2936:16:91"},"returnParameters":{"id":38888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38887,"mutability":"mutable","name":"assets","nameLocation":"2984:6:91","nodeType":"VariableDeclaration","scope":38889,"src":"2976:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38886,"name":"uint256","nodeType":"ElementaryTypeName","src":"2976:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2975:16:91"},"scope":38998,"src":"2912:80:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38890,"nodeType":"StructuredDocumentation","src":"2998:386:91","text":" @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,\n through a deposit call.\n - MUST return a limited value if receiver is subject to some deposit limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.\n - MUST NOT revert."},"functionSelector":"402d267d","id":38897,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3398:10:91","nodeType":"FunctionDefinition","parameters":{"id":38893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38892,"mutability":"mutable","name":"receiver","nameLocation":"3417:8:91","nodeType":"VariableDeclaration","scope":38897,"src":"3409:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38891,"name":"address","nodeType":"ElementaryTypeName","src":"3409:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3408:18:91"},"returnParameters":{"id":38896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38895,"mutability":"mutable","name":"maxAssets","nameLocation":"3458:9:91","nodeType":"VariableDeclaration","scope":38897,"src":"3450:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38894,"name":"uint256","nodeType":"ElementaryTypeName","src":"3450:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3449:19:91"},"scope":38998,"src":"3389:80:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38898,"nodeType":"StructuredDocumentation","src":"3475:1012:91","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given\n current on-chain conditions.\n - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit\n call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called\n in the same transaction.\n - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the\n deposit would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."},"functionSelector":"ef8b30f7","id":38905,"implemented":false,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"4501:14:91","nodeType":"FunctionDefinition","parameters":{"id":38901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38900,"mutability":"mutable","name":"assets","nameLocation":"4524:6:91","nodeType":"VariableDeclaration","scope":38905,"src":"4516:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38899,"name":"uint256","nodeType":"ElementaryTypeName","src":"4516:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4515:16:91"},"returnParameters":{"id":38904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38903,"mutability":"mutable","name":"shares","nameLocation":"4563:6:91","nodeType":"VariableDeclaration","scope":38905,"src":"4555:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38902,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:16:91"},"scope":38998,"src":"4492:79:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38906,"nodeType":"StructuredDocumentation","src":"4577:651:91","text":" @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n deposit execution, and are accounted for during deposit.\n - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not\n approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."},"functionSelector":"6e553f65","id":38915,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"5242:7:91","nodeType":"FunctionDefinition","parameters":{"id":38911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38908,"mutability":"mutable","name":"assets","nameLocation":"5258:6:91","nodeType":"VariableDeclaration","scope":38915,"src":"5250:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38907,"name":"uint256","nodeType":"ElementaryTypeName","src":"5250:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38910,"mutability":"mutable","name":"receiver","nameLocation":"5274:8:91","nodeType":"VariableDeclaration","scope":38915,"src":"5266:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38909,"name":"address","nodeType":"ElementaryTypeName","src":"5266:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5249:34:91"},"returnParameters":{"id":38914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38913,"mutability":"mutable","name":"shares","nameLocation":"5310:6:91","nodeType":"VariableDeclaration","scope":38915,"src":"5302:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38912,"name":"uint256","nodeType":"ElementaryTypeName","src":"5302:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5301:16:91"},"scope":38998,"src":"5233:85:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":38916,"nodeType":"StructuredDocumentation","src":"5324:341:91","text":" @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.\n - MUST return a limited value if receiver is subject to some mint limit.\n - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.\n - MUST NOT revert."},"functionSelector":"c63d75b6","id":38923,"implemented":false,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"5679:7:91","nodeType":"FunctionDefinition","parameters":{"id":38919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38918,"mutability":"mutable","name":"receiver","nameLocation":"5695:8:91","nodeType":"VariableDeclaration","scope":38923,"src":"5687:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38917,"name":"address","nodeType":"ElementaryTypeName","src":"5687:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5686:18:91"},"returnParameters":{"id":38922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38921,"mutability":"mutable","name":"maxShares","nameLocation":"5736:9:91","nodeType":"VariableDeclaration","scope":38923,"src":"5728:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38920,"name":"uint256","nodeType":"ElementaryTypeName","src":"5728:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5727:19:91"},"scope":38998,"src":"5670:77:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38924,"nodeType":"StructuredDocumentation","src":"5753:984:91","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given\n current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call\n in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the\n same transaction.\n - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint\n would be accepted, regardless if the user has enough tokens approved, etc.\n - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by minting."},"functionSelector":"b3d7f6b9","id":38931,"implemented":false,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"6751:11:91","nodeType":"FunctionDefinition","parameters":{"id":38927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38926,"mutability":"mutable","name":"shares","nameLocation":"6771:6:91","nodeType":"VariableDeclaration","scope":38931,"src":"6763:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38925,"name":"uint256","nodeType":"ElementaryTypeName","src":"6763:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6762:16:91"},"returnParameters":{"id":38930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38929,"mutability":"mutable","name":"assets","nameLocation":"6810:6:91","nodeType":"VariableDeclaration","scope":38931,"src":"6802:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38928,"name":"uint256","nodeType":"ElementaryTypeName","src":"6802:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6801:16:91"},"scope":38998,"src":"6742:76:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38932,"nodeType":"StructuredDocumentation","src":"6824:642:91","text":" @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.\n - MUST emit the Deposit event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint\n execution, and are accounted for during mint.\n - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not\n approving enough underlying tokens to the Vault contract, etc).\n NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token."},"functionSelector":"94bf804d","id":38941,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7480:4:91","nodeType":"FunctionDefinition","parameters":{"id":38937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38934,"mutability":"mutable","name":"shares","nameLocation":"7493:6:91","nodeType":"VariableDeclaration","scope":38941,"src":"7485:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38933,"name":"uint256","nodeType":"ElementaryTypeName","src":"7485:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38936,"mutability":"mutable","name":"receiver","nameLocation":"7509:8:91","nodeType":"VariableDeclaration","scope":38941,"src":"7501:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38935,"name":"address","nodeType":"ElementaryTypeName","src":"7501:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7484:34:91"},"returnParameters":{"id":38940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38939,"mutability":"mutable","name":"assets","nameLocation":"7545:6:91","nodeType":"VariableDeclaration","scope":38941,"src":"7537:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38938,"name":"uint256","nodeType":"ElementaryTypeName","src":"7537:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7536:16:91"},"scope":38998,"src":"7471:82:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":38942,"nodeType":"StructuredDocumentation","src":"7559:293:91","text":" @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the\n Vault, through a withdraw call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST NOT revert."},"functionSelector":"ce96cb77","id":38949,"implemented":false,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"7866:11:91","nodeType":"FunctionDefinition","parameters":{"id":38945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38944,"mutability":"mutable","name":"owner","nameLocation":"7886:5:91","nodeType":"VariableDeclaration","scope":38949,"src":"7878:13:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38943,"name":"address","nodeType":"ElementaryTypeName","src":"7878:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7877:15:91"},"returnParameters":{"id":38948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38947,"mutability":"mutable","name":"maxAssets","nameLocation":"7924:9:91","nodeType":"VariableDeclaration","scope":38949,"src":"7916:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38946,"name":"uint256","nodeType":"ElementaryTypeName","src":"7916:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7915:19:91"},"scope":38998,"src":"7857:78:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38950,"nodeType":"StructuredDocumentation","src":"7941:1034:91","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,\n given current on-chain conditions.\n - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw\n call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if\n called\n in the same transaction.\n - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though\n the withdrawal would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by depositing."},"functionSelector":"0a28a477","id":38957,"implemented":false,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"8989:15:91","nodeType":"FunctionDefinition","parameters":{"id":38953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38952,"mutability":"mutable","name":"assets","nameLocation":"9013:6:91","nodeType":"VariableDeclaration","scope":38957,"src":"9005:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38951,"name":"uint256","nodeType":"ElementaryTypeName","src":"9005:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9004:16:91"},"returnParameters":{"id":38956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38955,"mutability":"mutable","name":"shares","nameLocation":"9052:6:91","nodeType":"VariableDeclaration","scope":38957,"src":"9044:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38954,"name":"uint256","nodeType":"ElementaryTypeName","src":"9044:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9043:16:91"},"scope":38998,"src":"8980:80:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38958,"nodeType":"StructuredDocumentation","src":"9066:670:91","text":" @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n withdraw execution, and are accounted for during withdraw.\n - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner\n not having enough shares, etc).\n Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."},"functionSelector":"b460af94","id":38969,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"9750:8:91","nodeType":"FunctionDefinition","parameters":{"id":38965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38960,"mutability":"mutable","name":"assets","nameLocation":"9767:6:91","nodeType":"VariableDeclaration","scope":38969,"src":"9759:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38959,"name":"uint256","nodeType":"ElementaryTypeName","src":"9759:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38962,"mutability":"mutable","name":"receiver","nameLocation":"9783:8:91","nodeType":"VariableDeclaration","scope":38969,"src":"9775:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38961,"name":"address","nodeType":"ElementaryTypeName","src":"9775:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38964,"mutability":"mutable","name":"owner","nameLocation":"9801:5:91","nodeType":"VariableDeclaration","scope":38969,"src":"9793:13:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38963,"name":"address","nodeType":"ElementaryTypeName","src":"9793:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9758:49:91"},"returnParameters":{"id":38968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38967,"mutability":"mutable","name":"shares","nameLocation":"9834:6:91","nodeType":"VariableDeclaration","scope":38969,"src":"9826:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38966,"name":"uint256","nodeType":"ElementaryTypeName","src":"9826:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9825:16:91"},"scope":38998,"src":"9741:101:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":38970,"nodeType":"StructuredDocumentation","src":"9848:381:91","text":" @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,\n through a redeem call.\n - MUST return a limited value if owner is subject to some withdrawal limit or timelock.\n - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.\n - MUST NOT revert."},"functionSelector":"d905777e","id":38977,"implemented":false,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"10243:9:91","nodeType":"FunctionDefinition","parameters":{"id":38973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38972,"mutability":"mutable","name":"owner","nameLocation":"10261:5:91","nodeType":"VariableDeclaration","scope":38977,"src":"10253:13:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38971,"name":"address","nodeType":"ElementaryTypeName","src":"10253:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10252:15:91"},"returnParameters":{"id":38976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38975,"mutability":"mutable","name":"maxShares","nameLocation":"10299:9:91","nodeType":"VariableDeclaration","scope":38977,"src":"10291:17:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38974,"name":"uint256","nodeType":"ElementaryTypeName","src":"10291:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10290:19:91"},"scope":38998,"src":"10234:76:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38978,"nodeType":"StructuredDocumentation","src":"10316:1010:91","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,\n given current on-chain conditions.\n - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call\n in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the\n same transaction.\n - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the\n redemption would be accepted, regardless if the user has enough shares, etc.\n - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.\n - MUST NOT revert.\n NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in\n share price or some other type of condition, meaning the depositor will lose assets by redeeming."},"functionSelector":"4cdad506","id":38985,"implemented":false,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"11340:13:91","nodeType":"FunctionDefinition","parameters":{"id":38981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38980,"mutability":"mutable","name":"shares","nameLocation":"11362:6:91","nodeType":"VariableDeclaration","scope":38985,"src":"11354:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38979,"name":"uint256","nodeType":"ElementaryTypeName","src":"11354:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11353:16:91"},"returnParameters":{"id":38984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38983,"mutability":"mutable","name":"assets","nameLocation":"11401:6:91","nodeType":"VariableDeclaration","scope":38985,"src":"11393:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38982,"name":"uint256","nodeType":"ElementaryTypeName","src":"11393:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11392:16:91"},"scope":38998,"src":"11331:78:91","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":38986,"nodeType":"StructuredDocumentation","src":"11415:661:91","text":" @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.\n - MUST emit the Withdraw event.\n - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the\n redeem execution, and are accounted for during redeem.\n - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner\n not having enough shares, etc).\n NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.\n Those methods should be performed separately."},"functionSelector":"ba087652","id":38997,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"12090:6:91","nodeType":"FunctionDefinition","parameters":{"id":38993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38988,"mutability":"mutable","name":"shares","nameLocation":"12105:6:91","nodeType":"VariableDeclaration","scope":38997,"src":"12097:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38987,"name":"uint256","nodeType":"ElementaryTypeName","src":"12097:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":38990,"mutability":"mutable","name":"receiver","nameLocation":"12121:8:91","nodeType":"VariableDeclaration","scope":38997,"src":"12113:16:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38989,"name":"address","nodeType":"ElementaryTypeName","src":"12113:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38992,"mutability":"mutable","name":"owner","nameLocation":"12139:5:91","nodeType":"VariableDeclaration","scope":38997,"src":"12131:13:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38991,"name":"address","nodeType":"ElementaryTypeName","src":"12131:7:91","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12096:49:91"},"returnParameters":{"id":38996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38995,"mutability":"mutable","name":"assets","nameLocation":"12172:6:91","nodeType":"VariableDeclaration","scope":38997,"src":"12164:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38994,"name":"uint256","nodeType":"ElementaryTypeName","src":"12164:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12163:16:91"},"scope":38998,"src":"12081:99:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":38999,"src":"398:11784:91","usedErrors":[],"usedEvents":[38849,38861,39208,39217]}],"src":"107:12076:91"},"id":91},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","exportedSymbols":{"IERC5267":[39023]},"id":39024,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39000,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:92"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5267","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":39023,"linearizedBaseContracts":[39023],"name":"IERC5267","nameLocation":"143:8:92","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":39001,"nodeType":"StructuredDocumentation","src":"158:84:92","text":" @dev MAY be emitted to signal that the domain could have changed."},"eventSelector":"0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31","id":39003,"name":"EIP712DomainChanged","nameLocation":"253:19:92","nodeType":"EventDefinition","parameters":{"id":39002,"nodeType":"ParameterList","parameters":[],"src":"272:2:92"},"src":"247:28:92"},{"documentation":{"id":39004,"nodeType":"StructuredDocumentation","src":"281:140:92","text":" @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n signature."},"functionSelector":"84b0196e","id":39022,"implemented":false,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"435:12:92","nodeType":"FunctionDefinition","parameters":{"id":39005,"nodeType":"ParameterList","parameters":[],"src":"447:2:92"},"returnParameters":{"id":39021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39007,"mutability":"mutable","name":"fields","nameLocation":"517:6:92","nodeType":"VariableDeclaration","scope":39022,"src":"510:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":39006,"name":"bytes1","nodeType":"ElementaryTypeName","src":"510:6:92","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":39009,"mutability":"mutable","name":"name","nameLocation":"551:4:92","nodeType":"VariableDeclaration","scope":39022,"src":"537:18:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":39008,"name":"string","nodeType":"ElementaryTypeName","src":"537:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":39011,"mutability":"mutable","name":"version","nameLocation":"583:7:92","nodeType":"VariableDeclaration","scope":39022,"src":"569:21:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":39010,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:92","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":39013,"mutability":"mutable","name":"chainId","nameLocation":"612:7:92","nodeType":"VariableDeclaration","scope":39022,"src":"604:15:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39012,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39015,"mutability":"mutable","name":"verifyingContract","nameLocation":"641:17:92","nodeType":"VariableDeclaration","scope":39022,"src":"633:25:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39014,"name":"address","nodeType":"ElementaryTypeName","src":"633:7:92","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39017,"mutability":"mutable","name":"salt","nameLocation":"680:4:92","nodeType":"VariableDeclaration","scope":39022,"src":"672:12:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39016,"name":"bytes32","nodeType":"ElementaryTypeName","src":"672:7:92","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39020,"mutability":"mutable","name":"extensions","nameLocation":"715:10:92","nodeType":"VariableDeclaration","scope":39022,"src":"698:27:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":39018,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":39019,"nodeType":"ArrayTypeName","src":"698:9:92","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"496:239:92"},"scope":39023,"src":"426:310:92","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":39024,"src":"133:605:92","usedErrors":[],"usedEvents":[39003]}],"src":"107:632:92"},"id":92},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[39160],"IERC20Errors":[39065],"IERC721Errors":[39113]},"id":39161,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39025,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:93"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":39026,"nodeType":"StructuredDocumentation","src":"138:139:93","text":" @dev Standard ERC20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens."},"fullyImplemented":true,"id":39065,"linearizedBaseContracts":[39065],"name":"IERC20Errors","nameLocation":"288:12:93","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39027,"nodeType":"StructuredDocumentation","src":"307:309:93","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":39035,"name":"ERC20InsufficientBalance","nameLocation":"627:24:93","nodeType":"ErrorDefinition","parameters":{"id":39034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39029,"mutability":"mutable","name":"sender","nameLocation":"660:6:93","nodeType":"VariableDeclaration","scope":39035,"src":"652:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39028,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39031,"mutability":"mutable","name":"balance","nameLocation":"676:7:93","nodeType":"VariableDeclaration","scope":39035,"src":"668:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39030,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39033,"mutability":"mutable","name":"needed","nameLocation":"693:6:93","nodeType":"VariableDeclaration","scope":39035,"src":"685:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39032,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"651:49:93"},"src":"621:80:93"},{"documentation":{"id":39036,"nodeType":"StructuredDocumentation","src":"707:152:93","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":39040,"name":"ERC20InvalidSender","nameLocation":"870:18:93","nodeType":"ErrorDefinition","parameters":{"id":39039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39038,"mutability":"mutable","name":"sender","nameLocation":"897:6:93","nodeType":"VariableDeclaration","scope":39040,"src":"889:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39037,"name":"address","nodeType":"ElementaryTypeName","src":"889:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"888:16:93"},"src":"864:41:93"},{"documentation":{"id":39041,"nodeType":"StructuredDocumentation","src":"911:159:93","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":39045,"name":"ERC20InvalidReceiver","nameLocation":"1081:20:93","nodeType":"ErrorDefinition","parameters":{"id":39044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39043,"mutability":"mutable","name":"receiver","nameLocation":"1110:8:93","nodeType":"VariableDeclaration","scope":39045,"src":"1102:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39042,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1101:18:93"},"src":"1075:45:93"},{"documentation":{"id":39046,"nodeType":"StructuredDocumentation","src":"1126:345:93","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":39054,"name":"ERC20InsufficientAllowance","nameLocation":"1482:26:93","nodeType":"ErrorDefinition","parameters":{"id":39053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39048,"mutability":"mutable","name":"spender","nameLocation":"1517:7:93","nodeType":"VariableDeclaration","scope":39054,"src":"1509:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39047,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39050,"mutability":"mutable","name":"allowance","nameLocation":"1534:9:93","nodeType":"VariableDeclaration","scope":39054,"src":"1526:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39049,"name":"uint256","nodeType":"ElementaryTypeName","src":"1526:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39052,"mutability":"mutable","name":"needed","nameLocation":"1553:6:93","nodeType":"VariableDeclaration","scope":39054,"src":"1545:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39051,"name":"uint256","nodeType":"ElementaryTypeName","src":"1545:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1508:52:93"},"src":"1476:85:93"},{"documentation":{"id":39055,"nodeType":"StructuredDocumentation","src":"1567:174:93","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":39059,"name":"ERC20InvalidApprover","nameLocation":"1752:20:93","nodeType":"ErrorDefinition","parameters":{"id":39058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39057,"mutability":"mutable","name":"approver","nameLocation":"1781:8:93","nodeType":"VariableDeclaration","scope":39059,"src":"1773:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39056,"name":"address","nodeType":"ElementaryTypeName","src":"1773:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1772:18:93"},"src":"1746:45:93"},{"documentation":{"id":39060,"nodeType":"StructuredDocumentation","src":"1797:195:93","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":39064,"name":"ERC20InvalidSpender","nameLocation":"2003:19:93","nodeType":"ErrorDefinition","parameters":{"id":39063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39062,"mutability":"mutable","name":"spender","nameLocation":"2031:7:93","nodeType":"VariableDeclaration","scope":39064,"src":"2023:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39061,"name":"address","nodeType":"ElementaryTypeName","src":"2023:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2022:17:93"},"src":"1997:43:93"}],"scope":39161,"src":"278:1764:93","usedErrors":[39035,39040,39045,39054,39059,39064],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":39066,"nodeType":"StructuredDocumentation","src":"2044:141:93","text":" @dev Standard ERC721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens."},"fullyImplemented":true,"id":39113,"linearizedBaseContracts":[39113],"name":"IERC721Errors","nameLocation":"2196:13:93","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39067,"nodeType":"StructuredDocumentation","src":"2216:219:93","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":39071,"name":"ERC721InvalidOwner","nameLocation":"2446:18:93","nodeType":"ErrorDefinition","parameters":{"id":39070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39069,"mutability":"mutable","name":"owner","nameLocation":"2473:5:93","nodeType":"VariableDeclaration","scope":39071,"src":"2465:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39068,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:15:93"},"src":"2440:40:93"},{"documentation":{"id":39072,"nodeType":"StructuredDocumentation","src":"2486:132:93","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":39076,"name":"ERC721NonexistentToken","nameLocation":"2629:22:93","nodeType":"ErrorDefinition","parameters":{"id":39075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39074,"mutability":"mutable","name":"tokenId","nameLocation":"2660:7:93","nodeType":"VariableDeclaration","scope":39076,"src":"2652:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2651:17:93"},"src":"2623:46:93"},{"documentation":{"id":39077,"nodeType":"StructuredDocumentation","src":"2675:289:93","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":39085,"name":"ERC721IncorrectOwner","nameLocation":"2975:20:93","nodeType":"ErrorDefinition","parameters":{"id":39084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39079,"mutability":"mutable","name":"sender","nameLocation":"3004:6:93","nodeType":"VariableDeclaration","scope":39085,"src":"2996:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39078,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39081,"mutability":"mutable","name":"tokenId","nameLocation":"3020:7:93","nodeType":"VariableDeclaration","scope":39085,"src":"3012:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39080,"name":"uint256","nodeType":"ElementaryTypeName","src":"3012:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39083,"mutability":"mutable","name":"owner","nameLocation":"3037:5:93","nodeType":"VariableDeclaration","scope":39085,"src":"3029:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39082,"name":"address","nodeType":"ElementaryTypeName","src":"3029:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2995:48:93"},"src":"2969:75:93"},{"documentation":{"id":39086,"nodeType":"StructuredDocumentation","src":"3050:152:93","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":39090,"name":"ERC721InvalidSender","nameLocation":"3213:19:93","nodeType":"ErrorDefinition","parameters":{"id":39089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39088,"mutability":"mutable","name":"sender","nameLocation":"3241:6:93","nodeType":"VariableDeclaration","scope":39090,"src":"3233:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39087,"name":"address","nodeType":"ElementaryTypeName","src":"3233:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3232:16:93"},"src":"3207:42:93"},{"documentation":{"id":39091,"nodeType":"StructuredDocumentation","src":"3255:159:93","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":39095,"name":"ERC721InvalidReceiver","nameLocation":"3425:21:93","nodeType":"ErrorDefinition","parameters":{"id":39094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39093,"mutability":"mutable","name":"receiver","nameLocation":"3455:8:93","nodeType":"VariableDeclaration","scope":39095,"src":"3447:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39092,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:18:93"},"src":"3419:46:93"},{"documentation":{"id":39096,"nodeType":"StructuredDocumentation","src":"3471:247:93","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":39102,"name":"ERC721InsufficientApproval","nameLocation":"3729:26:93","nodeType":"ErrorDefinition","parameters":{"id":39101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39098,"mutability":"mutable","name":"operator","nameLocation":"3764:8:93","nodeType":"VariableDeclaration","scope":39102,"src":"3756:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39097,"name":"address","nodeType":"ElementaryTypeName","src":"3756:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39100,"mutability":"mutable","name":"tokenId","nameLocation":"3782:7:93","nodeType":"VariableDeclaration","scope":39102,"src":"3774:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39099,"name":"uint256","nodeType":"ElementaryTypeName","src":"3774:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3755:35:93"},"src":"3723:68:93"},{"documentation":{"id":39103,"nodeType":"StructuredDocumentation","src":"3797:174:93","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":39107,"name":"ERC721InvalidApprover","nameLocation":"3982:21:93","nodeType":"ErrorDefinition","parameters":{"id":39106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39105,"mutability":"mutable","name":"approver","nameLocation":"4012:8:93","nodeType":"VariableDeclaration","scope":39107,"src":"4004:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39104,"name":"address","nodeType":"ElementaryTypeName","src":"4004:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4003:18:93"},"src":"3976:46:93"},{"documentation":{"id":39108,"nodeType":"StructuredDocumentation","src":"4028:197:93","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":39112,"name":"ERC721InvalidOperator","nameLocation":"4236:21:93","nodeType":"ErrorDefinition","parameters":{"id":39111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39110,"mutability":"mutable","name":"operator","nameLocation":"4266:8:93","nodeType":"VariableDeclaration","scope":39112,"src":"4258:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39109,"name":"address","nodeType":"ElementaryTypeName","src":"4258:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4257:18:93"},"src":"4230:46:93"}],"scope":39161,"src":"2186:2092:93","usedErrors":[39071,39076,39085,39090,39095,39102,39107,39112],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":39114,"nodeType":"StructuredDocumentation","src":"4280:143:93","text":" @dev Standard ERC1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens."},"fullyImplemented":true,"id":39160,"linearizedBaseContracts":[39160],"name":"IERC1155Errors","nameLocation":"4434:14:93","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39115,"nodeType":"StructuredDocumentation","src":"4455:361:93","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":39125,"name":"ERC1155InsufficientBalance","nameLocation":"4827:26:93","nodeType":"ErrorDefinition","parameters":{"id":39124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39117,"mutability":"mutable","name":"sender","nameLocation":"4862:6:93","nodeType":"VariableDeclaration","scope":39125,"src":"4854:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39116,"name":"address","nodeType":"ElementaryTypeName","src":"4854:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39119,"mutability":"mutable","name":"balance","nameLocation":"4878:7:93","nodeType":"VariableDeclaration","scope":39125,"src":"4870:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39118,"name":"uint256","nodeType":"ElementaryTypeName","src":"4870:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39121,"mutability":"mutable","name":"needed","nameLocation":"4895:6:93","nodeType":"VariableDeclaration","scope":39125,"src":"4887:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39120,"name":"uint256","nodeType":"ElementaryTypeName","src":"4887:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39123,"mutability":"mutable","name":"tokenId","nameLocation":"4911:7:93","nodeType":"VariableDeclaration","scope":39125,"src":"4903:15:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39122,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:66:93"},"src":"4821:99:93"},{"documentation":{"id":39126,"nodeType":"StructuredDocumentation","src":"4926:152:93","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":39130,"name":"ERC1155InvalidSender","nameLocation":"5089:20:93","nodeType":"ErrorDefinition","parameters":{"id":39129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39128,"mutability":"mutable","name":"sender","nameLocation":"5118:6:93","nodeType":"VariableDeclaration","scope":39130,"src":"5110:14:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39127,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5109:16:93"},"src":"5083:43:93"},{"documentation":{"id":39131,"nodeType":"StructuredDocumentation","src":"5132:159:93","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":39135,"name":"ERC1155InvalidReceiver","nameLocation":"5302:22:93","nodeType":"ErrorDefinition","parameters":{"id":39134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39133,"mutability":"mutable","name":"receiver","nameLocation":"5333:8:93","nodeType":"VariableDeclaration","scope":39135,"src":"5325:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39132,"name":"address","nodeType":"ElementaryTypeName","src":"5325:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5324:18:93"},"src":"5296:47:93"},{"documentation":{"id":39136,"nodeType":"StructuredDocumentation","src":"5349:256:93","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":39142,"name":"ERC1155MissingApprovalForAll","nameLocation":"5616:28:93","nodeType":"ErrorDefinition","parameters":{"id":39141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39138,"mutability":"mutable","name":"operator","nameLocation":"5653:8:93","nodeType":"VariableDeclaration","scope":39142,"src":"5645:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39137,"name":"address","nodeType":"ElementaryTypeName","src":"5645:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39140,"mutability":"mutable","name":"owner","nameLocation":"5671:5:93","nodeType":"VariableDeclaration","scope":39142,"src":"5663:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39139,"name":"address","nodeType":"ElementaryTypeName","src":"5663:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5644:33:93"},"src":"5610:68:93"},{"documentation":{"id":39143,"nodeType":"StructuredDocumentation","src":"5684:174:93","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":39147,"name":"ERC1155InvalidApprover","nameLocation":"5869:22:93","nodeType":"ErrorDefinition","parameters":{"id":39146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39145,"mutability":"mutable","name":"approver","nameLocation":"5900:8:93","nodeType":"VariableDeclaration","scope":39147,"src":"5892:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39144,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5891:18:93"},"src":"5863:47:93"},{"documentation":{"id":39148,"nodeType":"StructuredDocumentation","src":"5916:197:93","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":39152,"name":"ERC1155InvalidOperator","nameLocation":"6124:22:93","nodeType":"ErrorDefinition","parameters":{"id":39151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39150,"mutability":"mutable","name":"operator","nameLocation":"6155:8:93","nodeType":"VariableDeclaration","scope":39152,"src":"6147:16:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39149,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:93","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6146:18:93"},"src":"6118:47:93"},{"documentation":{"id":39153,"nodeType":"StructuredDocumentation","src":"6171:280:93","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":39159,"name":"ERC1155InvalidArrayLength","nameLocation":"6462:25:93","nodeType":"ErrorDefinition","parameters":{"id":39158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39155,"mutability":"mutable","name":"idsLength","nameLocation":"6496:9:93","nodeType":"VariableDeclaration","scope":39159,"src":"6488:17:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39154,"name":"uint256","nodeType":"ElementaryTypeName","src":"6488:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39157,"mutability":"mutable","name":"valuesLength","nameLocation":"6515:12:93","nodeType":"VariableDeclaration","scope":39159,"src":"6507:20:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39156,"name":"uint256","nodeType":"ElementaryTypeName","src":"6507:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:41:93"},"src":"6456:73:93"}],"scope":39161,"src":"4424:2107:93","usedErrors":[39125,39130,39135,39142,39147,39152,39159],"usedEvents":[]}],"src":"112:6420:93"},"id":93},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[39196]},"id":39197,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39162,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:94"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":39163,"nodeType":"StructuredDocumentation","src":"125:598:94","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":39196,"linearizedBaseContracts":[39196],"name":"Proxy","nameLocation":"742:5:94","nodeType":"ContractDefinition","nodes":[{"body":{"id":39170,"nodeType":"Block","src":"1009:835:94","statements":[{"AST":{"nativeSrc":"1028:810:94","nodeType":"YulBlock","src":"1028:810:94","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1281:1:94","nodeType":"YulLiteral","src":"1281:1:94","type":"","value":"0"},{"kind":"number","nativeSrc":"1284:1:94","nodeType":"YulLiteral","src":"1284:1:94","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1287:12:94","nodeType":"YulIdentifier","src":"1287:12:94"},"nativeSrc":"1287:14:94","nodeType":"YulFunctionCall","src":"1287:14:94"}],"functionName":{"name":"calldatacopy","nativeSrc":"1268:12:94","nodeType":"YulIdentifier","src":"1268:12:94"},"nativeSrc":"1268:34:94","nodeType":"YulFunctionCall","src":"1268:34:94"},"nativeSrc":"1268:34:94","nodeType":"YulExpressionStatement","src":"1268:34:94"},{"nativeSrc":"1429:74:94","nodeType":"YulVariableDeclaration","src":"1429:74:94","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1456:3:94","nodeType":"YulIdentifier","src":"1456:3:94"},"nativeSrc":"1456:5:94","nodeType":"YulFunctionCall","src":"1456:5:94"},{"name":"implementation","nativeSrc":"1463:14:94","nodeType":"YulIdentifier","src":"1463:14:94"},{"kind":"number","nativeSrc":"1479:1:94","nodeType":"YulLiteral","src":"1479:1:94","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1482:12:94","nodeType":"YulIdentifier","src":"1482:12:94"},"nativeSrc":"1482:14:94","nodeType":"YulFunctionCall","src":"1482:14:94"},{"kind":"number","nativeSrc":"1498:1:94","nodeType":"YulLiteral","src":"1498:1:94","type":"","value":"0"},{"kind":"number","nativeSrc":"1501:1:94","nodeType":"YulLiteral","src":"1501:1:94","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1443:12:94","nodeType":"YulIdentifier","src":"1443:12:94"},"nativeSrc":"1443:60:94","nodeType":"YulFunctionCall","src":"1443:60:94"},"variables":[{"name":"result","nativeSrc":"1433:6:94","nodeType":"YulTypedName","src":"1433:6:94","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1571:1:94","nodeType":"YulLiteral","src":"1571:1:94","type":"","value":"0"},{"kind":"number","nativeSrc":"1574:1:94","nodeType":"YulLiteral","src":"1574:1:94","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1577:14:94","nodeType":"YulIdentifier","src":"1577:14:94"},"nativeSrc":"1577:16:94","nodeType":"YulFunctionCall","src":"1577:16:94"}],"functionName":{"name":"returndatacopy","nativeSrc":"1556:14:94","nodeType":"YulIdentifier","src":"1556:14:94"},"nativeSrc":"1556:38:94","nodeType":"YulFunctionCall","src":"1556:38:94"},"nativeSrc":"1556:38:94","nodeType":"YulExpressionStatement","src":"1556:38:94"},{"cases":[{"body":{"nativeSrc":"1689:59:94","nodeType":"YulBlock","src":"1689:59:94","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1714:1:94","nodeType":"YulLiteral","src":"1714:1:94","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1717:14:94","nodeType":"YulIdentifier","src":"1717:14:94"},"nativeSrc":"1717:16:94","nodeType":"YulFunctionCall","src":"1717:16:94"}],"functionName":{"name":"revert","nativeSrc":"1707:6:94","nodeType":"YulIdentifier","src":"1707:6:94"},"nativeSrc":"1707:27:94","nodeType":"YulFunctionCall","src":"1707:27:94"},"nativeSrc":"1707:27:94","nodeType":"YulExpressionStatement","src":"1707:27:94"}]},"nativeSrc":"1682:66:94","nodeType":"YulCase","src":"1682:66:94","value":{"kind":"number","nativeSrc":"1687:1:94","nodeType":"YulLiteral","src":"1687:1:94","type":"","value":"0"}},{"body":{"nativeSrc":"1769:59:94","nodeType":"YulBlock","src":"1769:59:94","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1794:1:94","nodeType":"YulLiteral","src":"1794:1:94","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1797:14:94","nodeType":"YulIdentifier","src":"1797:14:94"},"nativeSrc":"1797:16:94","nodeType":"YulFunctionCall","src":"1797:16:94"}],"functionName":{"name":"return","nativeSrc":"1787:6:94","nodeType":"YulIdentifier","src":"1787:6:94"},"nativeSrc":"1787:27:94","nodeType":"YulFunctionCall","src":"1787:27:94"},"nativeSrc":"1787:27:94","nodeType":"YulExpressionStatement","src":"1787:27:94"}]},"nativeSrc":"1761:67:94","nodeType":"YulCase","src":"1761:67:94","value":"default"}],"expression":{"name":"result","nativeSrc":"1615:6:94","nodeType":"YulIdentifier","src":"1615:6:94"},"nativeSrc":"1608:220:94","nodeType":"YulSwitch","src":"1608:220:94"}]},"evmVersion":"cancun","externalReferences":[{"declaration":39166,"isOffset":false,"isSlot":false,"src":"1463:14:94","valueSize":1}],"id":39169,"nodeType":"InlineAssembly","src":"1019:819:94"}]},"documentation":{"id":39164,"nodeType":"StructuredDocumentation","src":"754:190:94","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":39171,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"958:9:94","nodeType":"FunctionDefinition","parameters":{"id":39167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39166,"mutability":"mutable","name":"implementation","nameLocation":"976:14:94","nodeType":"VariableDeclaration","scope":39171,"src":"968:22:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39165,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"967:24:94"},"returnParameters":{"id":39168,"nodeType":"ParameterList","parameters":[],"src":"1009:0:94"},"scope":39196,"src":"949:895:94","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":39172,"nodeType":"StructuredDocumentation","src":"1850:173:94","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate."},"id":39177,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2037:15:94","nodeType":"FunctionDefinition","parameters":{"id":39173,"nodeType":"ParameterList","parameters":[],"src":"2052:2:94"},"returnParameters":{"id":39176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39177,"src":"2086:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39174,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:94","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:94"},"scope":39196,"src":"2028:67:94","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":39186,"nodeType":"Block","src":"2361:45:94","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":39182,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39177,"src":"2381:15:94","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":39183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2381:17:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":39181,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39171,"src":"2371:9:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":39184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2371:28:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39185,"nodeType":"ExpressionStatement","src":"2371:28:94"}]},"documentation":{"id":39178,"nodeType":"StructuredDocumentation","src":"2101:217:94","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":39187,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2332:9:94","nodeType":"FunctionDefinition","parameters":{"id":39179,"nodeType":"ParameterList","parameters":[],"src":"2341:2:94"},"returnParameters":{"id":39180,"nodeType":"ParameterList","parameters":[],"src":"2361:0:94"},"scope":39196,"src":"2323:83:94","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":39194,"nodeType":"Block","src":"2639:28:94","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":39191,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39187,"src":"2649:9:94","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":39192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2649:11:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39193,"nodeType":"ExpressionStatement","src":"2649:11:94"}]},"documentation":{"id":39188,"nodeType":"StructuredDocumentation","src":"2412:186:94","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":39195,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":39189,"nodeType":"ParameterList","parameters":[],"src":"2611:2:94"},"returnParameters":{"id":39190,"nodeType":"ParameterList","parameters":[],"src":"2639:0:94"},"scope":39196,"src":"2603:64:94","stateMutability":"payable","virtual":true,"visibility":"external"}],"scope":39197,"src":"724:1945:94","usedErrors":[],"usedEvents":[]}],"src":"99:2571:94"},"id":94},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[39274]},"id":39275,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39198,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:95"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":39199,"nodeType":"StructuredDocumentation","src":"132:70:95","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":39274,"linearizedBaseContracts":[39274],"name":"IERC20","nameLocation":"213:6:95","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":39200,"nodeType":"StructuredDocumentation","src":"226:158:95","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":39208,"name":"Transfer","nameLocation":"395:8:95","nodeType":"EventDefinition","parameters":{"id":39207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39202,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"420:4:95","nodeType":"VariableDeclaration","scope":39208,"src":"404:20:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39201,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39204,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"442:2:95","nodeType":"VariableDeclaration","scope":39208,"src":"426:18:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39203,"name":"address","nodeType":"ElementaryTypeName","src":"426:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39206,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"454:5:95","nodeType":"VariableDeclaration","scope":39208,"src":"446:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39205,"name":"uint256","nodeType":"ElementaryTypeName","src":"446:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"403:57:95"},"src":"389:72:95"},{"anonymous":false,"documentation":{"id":39209,"nodeType":"StructuredDocumentation","src":"467:148:95","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":39217,"name":"Approval","nameLocation":"626:8:95","nodeType":"EventDefinition","parameters":{"id":39216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39211,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"651:5:95","nodeType":"VariableDeclaration","scope":39217,"src":"635:21:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39210,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39213,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"674:7:95","nodeType":"VariableDeclaration","scope":39217,"src":"658:23:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39212,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39215,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"691:5:95","nodeType":"VariableDeclaration","scope":39217,"src":"683:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39214,"name":"uint256","nodeType":"ElementaryTypeName","src":"683:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"634:63:95"},"src":"620:78:95"},{"documentation":{"id":39218,"nodeType":"StructuredDocumentation","src":"704:65:95","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":39223,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:95","nodeType":"FunctionDefinition","parameters":{"id":39219,"nodeType":"ParameterList","parameters":[],"src":"794:2:95"},"returnParameters":{"id":39222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39223,"src":"820:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39220,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:95"},"scope":39274,"src":"774:55:95","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39224,"nodeType":"StructuredDocumentation","src":"835:71:95","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":39231,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"920:9:95","nodeType":"FunctionDefinition","parameters":{"id":39227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39226,"mutability":"mutable","name":"account","nameLocation":"938:7:95","nodeType":"VariableDeclaration","scope":39231,"src":"930:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39225,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"929:17:95"},"returnParameters":{"id":39230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39231,"src":"970:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39228,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"969:9:95"},"scope":39274,"src":"911:68:95","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39232,"nodeType":"StructuredDocumentation","src":"985:213:95","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":39241,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1212:8:95","nodeType":"FunctionDefinition","parameters":{"id":39237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39234,"mutability":"mutable","name":"to","nameLocation":"1229:2:95","nodeType":"VariableDeclaration","scope":39241,"src":"1221:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39233,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39236,"mutability":"mutable","name":"value","nameLocation":"1241:5:95","nodeType":"VariableDeclaration","scope":39241,"src":"1233:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1233:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:27:95"},"returnParameters":{"id":39240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39241,"src":"1266:4:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39238,"name":"bool","nodeType":"ElementaryTypeName","src":"1266:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1265:6:95"},"scope":39274,"src":"1203:69:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":39242,"nodeType":"StructuredDocumentation","src":"1278:264:95","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":39251,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1556:9:95","nodeType":"FunctionDefinition","parameters":{"id":39247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39244,"mutability":"mutable","name":"owner","nameLocation":"1574:5:95","nodeType":"VariableDeclaration","scope":39251,"src":"1566:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39243,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39246,"mutability":"mutable","name":"spender","nameLocation":"1589:7:95","nodeType":"VariableDeclaration","scope":39251,"src":"1581:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39245,"name":"address","nodeType":"ElementaryTypeName","src":"1581:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1565:32:95"},"returnParameters":{"id":39250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39251,"src":"1621:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39248,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1620:9:95"},"scope":39274,"src":"1547:83:95","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39252,"nodeType":"StructuredDocumentation","src":"1636:667:95","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":39261,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2317:7:95","nodeType":"FunctionDefinition","parameters":{"id":39257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39254,"mutability":"mutable","name":"spender","nameLocation":"2333:7:95","nodeType":"VariableDeclaration","scope":39261,"src":"2325:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39253,"name":"address","nodeType":"ElementaryTypeName","src":"2325:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39256,"mutability":"mutable","name":"value","nameLocation":"2350:5:95","nodeType":"VariableDeclaration","scope":39261,"src":"2342:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39255,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2324:32:95"},"returnParameters":{"id":39260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39261,"src":"2375:4:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39258,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:95"},"scope":39274,"src":"2308:73:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":39262,"nodeType":"StructuredDocumentation","src":"2387:297:95","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":39273,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2698:12:95","nodeType":"FunctionDefinition","parameters":{"id":39269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39264,"mutability":"mutable","name":"from","nameLocation":"2719:4:95","nodeType":"VariableDeclaration","scope":39273,"src":"2711:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39263,"name":"address","nodeType":"ElementaryTypeName","src":"2711:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39266,"mutability":"mutable","name":"to","nameLocation":"2733:2:95","nodeType":"VariableDeclaration","scope":39273,"src":"2725:10:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39265,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39268,"mutability":"mutable","name":"value","nameLocation":"2745:5:95","nodeType":"VariableDeclaration","scope":39273,"src":"2737:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39267,"name":"uint256","nodeType":"ElementaryTypeName","src":"2737:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2710:41:95"},"returnParameters":{"id":39272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39273,"src":"2770:4:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39270,"name":"bool","nodeType":"ElementaryTypeName","src":"2770:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2769:6:95"},"scope":39274,"src":"2689:87:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":39275,"src":"203:2575:95","usedErrors":[],"usedEvents":[39208,39217]}],"src":"106:2673:95"},"id":95},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[39274],"IERC20Metadata":[39300]},"id":39301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39276,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:96"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":39278,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":39301,"sourceUnit":39275,"src":"151:37:96","symbolAliases":[{"foreign":{"id":39277,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"159:6:96","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":39280,"name":"IERC20","nameLocations":["305:6:96"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"305:6:96"},"id":39281,"nodeType":"InheritanceSpecifier","src":"305:6:96"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":39279,"nodeType":"StructuredDocumentation","src":"190:86:96","text":" @dev Interface for the optional metadata functions from the ERC20 standard."},"fullyImplemented":false,"id":39300,"linearizedBaseContracts":[39300,39274],"name":"IERC20Metadata","nameLocation":"287:14:96","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39282,"nodeType":"StructuredDocumentation","src":"318:54:96","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":39287,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:96","nodeType":"FunctionDefinition","parameters":{"id":39283,"nodeType":"ParameterList","parameters":[],"src":"390:2:96"},"returnParameters":{"id":39286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39287,"src":"416:13:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":39284,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:96","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:96"},"scope":39300,"src":"377:54:96","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39288,"nodeType":"StructuredDocumentation","src":"437:56:96","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":39293,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:96","nodeType":"FunctionDefinition","parameters":{"id":39289,"nodeType":"ParameterList","parameters":[],"src":"513:2:96"},"returnParameters":{"id":39292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39293,"src":"539:13:96","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":39290,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:96","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:96"},"scope":39300,"src":"498:56:96","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39294,"nodeType":"StructuredDocumentation","src":"560:65:96","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":39299,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:96","nodeType":"FunctionDefinition","parameters":{"id":39295,"nodeType":"ParameterList","parameters":[],"src":"647:2:96"},"returnParameters":{"id":39298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39299,"src":"673:5:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":39296,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:96","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:96"},"scope":39300,"src":"630:50:96","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":39301,"src":"277:405:96","usedErrors":[],"usedEvents":[39208,39217]}],"src":"125:558:96"},"id":96},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[39336]},"id":39337,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39302,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:97"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Permit","contractDependencies":[],"contractKind":"interface","documentation":{"id":39303,"nodeType":"StructuredDocumentation","src":"149:1963:97","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n ==== Security Considerations\n There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n considered as an intention to spend the allowance in any specific way. The second is that because permits have\n built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n generally recommended is:\n ```solidity\n function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n doThing(..., value);\n }\n function doThing(..., uint256 value) public {\n token.safeTransferFrom(msg.sender, address(this), value);\n ...\n }\n ```\n Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n {SafeERC20-safeTransferFrom}).\n Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n contracts should have entry points that don't rely on permit."},"fullyImplemented":false,"id":39336,"linearizedBaseContracts":[39336],"name":"IERC20Permit","nameLocation":"2123:12:97","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39304,"nodeType":"StructuredDocumentation","src":"2142:850:97","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section].\n CAUTION: See Security Considerations above."},"functionSelector":"d505accf","id":39321,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"3006:6:97","nodeType":"FunctionDefinition","parameters":{"id":39319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39306,"mutability":"mutable","name":"owner","nameLocation":"3030:5:97","nodeType":"VariableDeclaration","scope":39321,"src":"3022:13:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39305,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39308,"mutability":"mutable","name":"spender","nameLocation":"3053:7:97","nodeType":"VariableDeclaration","scope":39321,"src":"3045:15:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39307,"name":"address","nodeType":"ElementaryTypeName","src":"3045:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39310,"mutability":"mutable","name":"value","nameLocation":"3078:5:97","nodeType":"VariableDeclaration","scope":39321,"src":"3070:13:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39309,"name":"uint256","nodeType":"ElementaryTypeName","src":"3070:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39312,"mutability":"mutable","name":"deadline","nameLocation":"3101:8:97","nodeType":"VariableDeclaration","scope":39321,"src":"3093:16:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39311,"name":"uint256","nodeType":"ElementaryTypeName","src":"3093:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39314,"mutability":"mutable","name":"v","nameLocation":"3125:1:97","nodeType":"VariableDeclaration","scope":39321,"src":"3119:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":39313,"name":"uint8","nodeType":"ElementaryTypeName","src":"3119:5:97","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":39316,"mutability":"mutable","name":"r","nameLocation":"3144:1:97","nodeType":"VariableDeclaration","scope":39321,"src":"3136:9:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39315,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3136:7:97","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39318,"mutability":"mutable","name":"s","nameLocation":"3163:1:97","nodeType":"VariableDeclaration","scope":39321,"src":"3155:9:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3155:7:97","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3012:158:97"},"returnParameters":{"id":39320,"nodeType":"ParameterList","parameters":[],"src":"3179:0:97"},"scope":39336,"src":"2997:183:97","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":39322,"nodeType":"StructuredDocumentation","src":"3186:294:97","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":39329,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"3494:6:97","nodeType":"FunctionDefinition","parameters":{"id":39325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39324,"mutability":"mutable","name":"owner","nameLocation":"3509:5:97","nodeType":"VariableDeclaration","scope":39329,"src":"3501:13:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39323,"name":"address","nodeType":"ElementaryTypeName","src":"3501:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3500:15:97"},"returnParameters":{"id":39328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39329,"src":"3539:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39326,"name":"uint256","nodeType":"ElementaryTypeName","src":"3539:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3538:9:97"},"scope":39336,"src":"3485:63:97","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":39330,"nodeType":"StructuredDocumentation","src":"3554:128:97","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":39335,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"3749:16:97","nodeType":"FunctionDefinition","parameters":{"id":39331,"nodeType":"ParameterList","parameters":[],"src":"3765:2:97"},"returnParameters":{"id":39334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39335,"src":"3791:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3791:7:97","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3790:9:97"},"scope":39336,"src":"3740:60:97","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":39337,"src":"2113:1689:97","usedErrors":[],"usedEvents":[]}],"src":"123:3680:97"},"id":97},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"Address":[39879],"IERC20":[39274],"IERC20Permit":[39336],"SafeERC20":[39626]},"id":39627,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39338,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:98"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":39340,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":39627,"sourceUnit":39275,"src":"141:37:98","symbolAliases":[{"foreign":{"id":39339,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39274,"src":"149:6:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","file":"../extensions/IERC20Permit.sol","id":39342,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":39627,"sourceUnit":39337,"src":"179:60:98","symbolAliases":[{"foreign":{"id":39341,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39336,"src":"187:12:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../../utils/Address.sol","id":39344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":39627,"sourceUnit":39880,"src":"240:51:98","symbolAliases":[{"foreign":{"id":39343,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39879,"src":"248:7:98","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":39345,"nodeType":"StructuredDocumentation","src":"293:457:98","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":39626,"linearizedBaseContracts":[39626],"name":"SafeERC20","nameLocation":"759:9:98","nodeType":"ContractDefinition","nodes":[{"global":false,"id":39348,"libraryName":{"id":39346,"name":"Address","nameLocations":["781:7:98"],"nodeType":"IdentifierPath","referencedDeclaration":39879,"src":"781:7:98"},"nodeType":"UsingForDirective","src":"775:26:98","typeName":{"id":39347,"name":"address","nodeType":"ElementaryTypeName","src":"793:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"documentation":{"id":39349,"nodeType":"StructuredDocumentation","src":"807:64:98","text":" @dev An operation with an ERC20 token failed."},"errorSelector":"5274afe7","id":39353,"name":"SafeERC20FailedOperation","nameLocation":"882:24:98","nodeType":"ErrorDefinition","parameters":{"id":39352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39351,"mutability":"mutable","name":"token","nameLocation":"915:5:98","nodeType":"VariableDeclaration","scope":39353,"src":"907:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39350,"name":"address","nodeType":"ElementaryTypeName","src":"907:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"906:15:98"},"src":"876:46:98"},{"documentation":{"id":39354,"nodeType":"StructuredDocumentation","src":"928:71:98","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","id":39362,"name":"SafeERC20FailedDecreaseAllowance","nameLocation":"1010:32:98","nodeType":"ErrorDefinition","parameters":{"id":39361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39356,"mutability":"mutable","name":"spender","nameLocation":"1051:7:98","nodeType":"VariableDeclaration","scope":39362,"src":"1043:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39355,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39358,"mutability":"mutable","name":"currentAllowance","nameLocation":"1068:16:98","nodeType":"VariableDeclaration","scope":39362,"src":"1060:24:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1060:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39360,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1094:17:98","nodeType":"VariableDeclaration","scope":39362,"src":"1086:25:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39359,"name":"uint256","nodeType":"ElementaryTypeName","src":"1086:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:70:98"},"src":"1004:109:98"},{"body":{"id":39385,"nodeType":"Block","src":"1375:88:98","statements":[{"expression":{"arguments":[{"id":39374,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39366,"src":"1405:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":39377,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39366,"src":"1427:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":39378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1433:8:98","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":39241,"src":"1427:14:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":39379,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39368,"src":"1444:2:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39380,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39370,"src":"1448:5:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":39381,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1443:11:98","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":39375,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1412:3:98","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":39376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1416:10:98","memberName":"encodeCall","nodeType":"MemberAccess","src":"1412:14:98","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":39382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1412:43:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39373,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39576,"src":"1385:19:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":39383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:71:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39384,"nodeType":"ExpressionStatement","src":"1385:71:98"}]},"documentation":{"id":39363,"nodeType":"StructuredDocumentation","src":"1119:179:98","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":39386,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1312:12:98","nodeType":"FunctionDefinition","parameters":{"id":39371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39366,"mutability":"mutable","name":"token","nameLocation":"1332:5:98","nodeType":"VariableDeclaration","scope":39386,"src":"1325:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":39365,"nodeType":"UserDefinedTypeName","pathNode":{"id":39364,"name":"IERC20","nameLocations":["1325:6:98"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1325:6:98"},"referencedDeclaration":39274,"src":"1325:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":39368,"mutability":"mutable","name":"to","nameLocation":"1347:2:98","nodeType":"VariableDeclaration","scope":39386,"src":"1339:10:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39367,"name":"address","nodeType":"ElementaryTypeName","src":"1339:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39370,"mutability":"mutable","name":"value","nameLocation":"1359:5:98","nodeType":"VariableDeclaration","scope":39386,"src":"1351:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39369,"name":"uint256","nodeType":"ElementaryTypeName","src":"1351:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1324:41:98"},"returnParameters":{"id":39372,"nodeType":"ParameterList","parameters":[],"src":"1375:0:98"},"scope":39626,"src":"1303:160:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39412,"nodeType":"Block","src":"1792:98:98","statements":[{"expression":{"arguments":[{"id":39400,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39390,"src":"1822:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":39403,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39390,"src":"1844:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":39404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1850:12:98","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":39273,"src":"1844:18:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":39405,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39392,"src":"1865:4:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39406,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39394,"src":"1871:2:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39396,"src":"1875:5:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":39408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1864:17:98","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":39401,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1829:3:98","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":39402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1833:10:98","memberName":"encodeCall","nodeType":"MemberAccess","src":"1829:14:98","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":39409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:53:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39399,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39576,"src":"1802:19:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":39410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1802:81:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39411,"nodeType":"ExpressionStatement","src":"1802:81:98"}]},"documentation":{"id":39387,"nodeType":"StructuredDocumentation","src":"1469:228:98","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":39413,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1711:16:98","nodeType":"FunctionDefinition","parameters":{"id":39397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39390,"mutability":"mutable","name":"token","nameLocation":"1735:5:98","nodeType":"VariableDeclaration","scope":39413,"src":"1728:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":39389,"nodeType":"UserDefinedTypeName","pathNode":{"id":39388,"name":"IERC20","nameLocations":["1728:6:98"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"1728:6:98"},"referencedDeclaration":39274,"src":"1728:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":39392,"mutability":"mutable","name":"from","nameLocation":"1750:4:98","nodeType":"VariableDeclaration","scope":39413,"src":"1742:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39391,"name":"address","nodeType":"ElementaryTypeName","src":"1742:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39394,"mutability":"mutable","name":"to","nameLocation":"1764:2:98","nodeType":"VariableDeclaration","scope":39413,"src":"1756:10:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39393,"name":"address","nodeType":"ElementaryTypeName","src":"1756:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39396,"mutability":"mutable","name":"value","nameLocation":"1776:5:98","nodeType":"VariableDeclaration","scope":39413,"src":"1768:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39395,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1727:55:98"},"returnParameters":{"id":39398,"nodeType":"ParameterList","parameters":[],"src":"1792:0:98"},"scope":39626,"src":"1702:188:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39443,"nodeType":"Block","src":"2167:139:98","statements":[{"assignments":[39425],"declarations":[{"constant":false,"id":39425,"mutability":"mutable","name":"oldAllowance","nameLocation":"2185:12:98","nodeType":"VariableDeclaration","scope":39443,"src":"2177:20:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39424,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":39434,"initialValue":{"arguments":[{"arguments":[{"id":39430,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2224:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$39626","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$39626","typeString":"library SafeERC20"}],"id":39429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2216:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39428,"name":"address","nodeType":"ElementaryTypeName","src":"2216:7:98","typeDescriptions":{}}},"id":39431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2216:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39432,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39419,"src":"2231:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":39426,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39417,"src":"2200:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":39427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2206:9:98","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":39251,"src":"2200:15:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":39433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2200:39:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:62:98"},{"expression":{"arguments":[{"id":39436,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39417,"src":"2262:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":39437,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39419,"src":"2269:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":39438,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39425,"src":"2278:12:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":39439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39421,"src":"2293:5:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2278:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":39435,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39534,"src":"2249:12:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":39441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:50:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39442,"nodeType":"ExpressionStatement","src":"2249:50:98"}]},"documentation":{"id":39414,"nodeType":"StructuredDocumentation","src":"1896:180:98","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":39444,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2090:21:98","nodeType":"FunctionDefinition","parameters":{"id":39422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39417,"mutability":"mutable","name":"token","nameLocation":"2119:5:98","nodeType":"VariableDeclaration","scope":39444,"src":"2112:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":39416,"nodeType":"UserDefinedTypeName","pathNode":{"id":39415,"name":"IERC20","nameLocations":["2112:6:98"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2112:6:98"},"referencedDeclaration":39274,"src":"2112:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":39419,"mutability":"mutable","name":"spender","nameLocation":"2134:7:98","nodeType":"VariableDeclaration","scope":39444,"src":"2126:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39418,"name":"address","nodeType":"ElementaryTypeName","src":"2126:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39421,"mutability":"mutable","name":"value","nameLocation":"2151:5:98","nodeType":"VariableDeclaration","scope":39444,"src":"2143:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39420,"name":"uint256","nodeType":"ElementaryTypeName","src":"2143:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2111:46:98"},"returnParameters":{"id":39423,"nodeType":"ParameterList","parameters":[],"src":"2167:0:98"},"scope":39626,"src":"2081:225:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39486,"nodeType":"Block","src":"2607:370:98","statements":[{"id":39485,"nodeType":"UncheckedBlock","src":"2617:354:98","statements":[{"assignments":[39456],"declarations":[{"constant":false,"id":39456,"mutability":"mutable","name":"currentAllowance","nameLocation":"2649:16:98","nodeType":"VariableDeclaration","scope":39485,"src":"2641:24:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39455,"name":"uint256","nodeType":"ElementaryTypeName","src":"2641:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":39465,"initialValue":{"arguments":[{"arguments":[{"id":39461,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2692:4:98","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$39626","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$39626","typeString":"library SafeERC20"}],"id":39460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2684:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39459,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:98","typeDescriptions":{}}},"id":39462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2684:13:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39463,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39450,"src":"2699:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":39457,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39448,"src":"2668:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":39458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2674:9:98","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":39251,"src":"2668:15:98","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":39464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2668:39:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2641:66:98"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":39466,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39456,"src":"2725:16:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":39467,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39452,"src":"2744:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2725:36:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39476,"nodeType":"IfStatement","src":"2721:160:98","trueBody":{"id":39475,"nodeType":"Block","src":"2763:118:98","statements":[{"errorCall":{"arguments":[{"id":39470,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39450,"src":"2821:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39471,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39456,"src":"2830:16:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":39472,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39452,"src":"2848:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":39469,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39362,"src":"2788:32:98","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":39473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2788:78:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39474,"nodeType":"RevertStatement","src":"2781:85:98"}]}},{"expression":{"arguments":[{"id":39478,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39448,"src":"2907:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":39479,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39450,"src":"2914:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":39480,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39456,"src":"2923:16:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":39481,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39452,"src":"2942:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2923:36:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":39477,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39534,"src":"2894:12:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":39483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2894:66:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39484,"nodeType":"ExpressionStatement","src":"2894:66:98"}]}]},"documentation":{"id":39445,"nodeType":"StructuredDocumentation","src":"2312:192:98","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful."},"id":39487,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"2518:21:98","nodeType":"FunctionDefinition","parameters":{"id":39453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39448,"mutability":"mutable","name":"token","nameLocation":"2547:5:98","nodeType":"VariableDeclaration","scope":39487,"src":"2540:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":39447,"nodeType":"UserDefinedTypeName","pathNode":{"id":39446,"name":"IERC20","nameLocations":["2540:6:98"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2540:6:98"},"referencedDeclaration":39274,"src":"2540:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":39450,"mutability":"mutable","name":"spender","nameLocation":"2562:7:98","nodeType":"VariableDeclaration","scope":39487,"src":"2554:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39449,"name":"address","nodeType":"ElementaryTypeName","src":"2554:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39452,"mutability":"mutable","name":"requestedDecrease","nameLocation":"2579:17:98","nodeType":"VariableDeclaration","scope":39487,"src":"2571:25:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39451,"name":"uint256","nodeType":"ElementaryTypeName","src":"2571:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2539:58:98"},"returnParameters":{"id":39454,"nodeType":"ParameterList","parameters":[],"src":"2607:0:98"},"scope":39626,"src":"2509:468:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39533,"nodeType":"Block","src":"3373:303:98","statements":[{"assignments":[39499],"declarations":[{"constant":false,"id":39499,"mutability":"mutable","name":"approvalCall","nameLocation":"3396:12:98","nodeType":"VariableDeclaration","scope":39533,"src":"3383:25:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39498,"name":"bytes","nodeType":"ElementaryTypeName","src":"3383:5:98","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":39508,"initialValue":{"arguments":[{"expression":{"id":39502,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39491,"src":"3426:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":39503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3432:7:98","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":39261,"src":"3426:13:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":39504,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39493,"src":"3442:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39505,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39495,"src":"3451:5:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":39506,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3441:16:98","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":39500,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3411:3:98","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":39501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3415:10:98","memberName":"encodeCall","nodeType":"MemberAccess","src":"3411:14:98","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":39507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3411:47:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3383:75:98"},{"condition":{"id":39513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3473:45:98","subExpression":{"arguments":[{"id":39510,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39491,"src":"3498:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":39511,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39499,"src":"3505:12:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39509,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39625,"src":"3474:23:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":39512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3474:44:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39532,"nodeType":"IfStatement","src":"3469:201:98","trueBody":{"id":39531,"nodeType":"Block","src":"3520:150:98","statements":[{"expression":{"arguments":[{"id":39515,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39491,"src":"3554:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":39518,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39491,"src":"3576:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"id":39519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3582:7:98","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":39261,"src":"3576:13:98","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":39520,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39493,"src":"3592:7:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":39521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3601:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":39522,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3591:12:98","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}],"expression":{"id":39516,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3561:3:98","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":39517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3565:10:98","memberName":"encodeCall","nodeType":"MemberAccess","src":"3561:14:98","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":39523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:43:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39514,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39576,"src":"3534:19:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":39524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3534:71:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39525,"nodeType":"ExpressionStatement","src":"3534:71:98"},{"expression":{"arguments":[{"id":39527,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39491,"src":"3639:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":39528,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39499,"src":"3646:12:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39526,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39576,"src":"3619:19:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$39274_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":39529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3619:40:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39530,"nodeType":"ExpressionStatement","src":"3619:40:98"}]}}]},"documentation":{"id":39488,"nodeType":"StructuredDocumentation","src":"2983:308:98","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT."},"id":39534,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"3305:12:98","nodeType":"FunctionDefinition","parameters":{"id":39496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39491,"mutability":"mutable","name":"token","nameLocation":"3325:5:98","nodeType":"VariableDeclaration","scope":39534,"src":"3318:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":39490,"nodeType":"UserDefinedTypeName","pathNode":{"id":39489,"name":"IERC20","nameLocations":["3318:6:98"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3318:6:98"},"referencedDeclaration":39274,"src":"3318:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":39493,"mutability":"mutable","name":"spender","nameLocation":"3340:7:98","nodeType":"VariableDeclaration","scope":39534,"src":"3332:15:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39492,"name":"address","nodeType":"ElementaryTypeName","src":"3332:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39495,"mutability":"mutable","name":"value","nameLocation":"3357:5:98","nodeType":"VariableDeclaration","scope":39534,"src":"3349:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39494,"name":"uint256","nodeType":"ElementaryTypeName","src":"3349:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3317:46:98"},"returnParameters":{"id":39497,"nodeType":"ParameterList","parameters":[],"src":"3373:0:98"},"scope":39626,"src":"3296:380:98","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39575,"nodeType":"Block","src":"4129:559:98","statements":[{"assignments":[39544],"declarations":[{"constant":false,"id":39544,"mutability":"mutable","name":"returndata","nameLocation":"4491:10:98","nodeType":"VariableDeclaration","scope":39575,"src":"4478:23:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39543,"name":"bytes","nodeType":"ElementaryTypeName","src":"4478:5:98","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":39552,"initialValue":{"arguments":[{"id":39550,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39540,"src":"4532:4:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":39547,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39538,"src":"4512:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":39546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4504:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39545,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:98","typeDescriptions":{}}},"id":39548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4504:14:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4519:12:98","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":39700,"src":"4504:27:98","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":39551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4504:33:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4478:59:98"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":39565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":39553,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39544,"src":"4551:10:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":39554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4562:6:98","memberName":"length","nodeType":"MemberAccess","src":"4551:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":39555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4572:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4551:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":39564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4577:31:98","subExpression":{"arguments":[{"id":39559,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39544,"src":"4589:10:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":39561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4602:4:98","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":39560,"name":"bool","nodeType":"ElementaryTypeName","src":"4602:4:98","typeDescriptions":{}}}],"id":39562,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4601:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":39557,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4578:3:98","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":39558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4582:6:98","memberName":"decode","nodeType":"MemberAccess","src":"4578:10:98","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":39563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4578:30:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4551:57:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39574,"nodeType":"IfStatement","src":"4547:135:98","trueBody":{"id":39573,"nodeType":"Block","src":"4610:72:98","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":39569,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39538,"src":"4664:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":39568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4656:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39567,"name":"address","nodeType":"ElementaryTypeName","src":"4656:7:98","typeDescriptions":{}}},"id":39570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4656:14:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":39566,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39353,"src":"4631:24:98","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":39571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4631:40:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39572,"nodeType":"RevertStatement","src":"4624:47:98"}]}}]},"documentation":{"id":39535,"nodeType":"StructuredDocumentation","src":"3682:372:98","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":39576,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"4068:19:98","nodeType":"FunctionDefinition","parameters":{"id":39541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39538,"mutability":"mutable","name":"token","nameLocation":"4095:5:98","nodeType":"VariableDeclaration","scope":39576,"src":"4088:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":39537,"nodeType":"UserDefinedTypeName","pathNode":{"id":39536,"name":"IERC20","nameLocations":["4088:6:98"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4088:6:98"},"referencedDeclaration":39274,"src":"4088:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":39540,"mutability":"mutable","name":"data","nameLocation":"4115:4:98","nodeType":"VariableDeclaration","scope":39576,"src":"4102:17:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39539,"name":"bytes","nodeType":"ElementaryTypeName","src":"4102:5:98","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4087:33:98"},"returnParameters":{"id":39542,"nodeType":"ParameterList","parameters":[],"src":"4129:0:98"},"scope":39626,"src":"4059:629:98","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":39624,"nodeType":"Block","src":"5278:489:98","statements":[{"assignments":[39588,39590],"declarations":[{"constant":false,"id":39588,"mutability":"mutable","name":"success","nameLocation":"5579:7:98","nodeType":"VariableDeclaration","scope":39624,"src":"5574:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39587,"name":"bool","nodeType":"ElementaryTypeName","src":"5574:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":39590,"mutability":"mutable","name":"returndata","nameLocation":"5601:10:98","nodeType":"VariableDeclaration","scope":39624,"src":"5588:23:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39589,"name":"bytes","nodeType":"ElementaryTypeName","src":"5588:5:98","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":39598,"initialValue":{"arguments":[{"id":39596,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39582,"src":"5635:4:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":39593,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39580,"src":"5623:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":39592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5615:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39591,"name":"address","nodeType":"ElementaryTypeName","src":"5615:7:98","typeDescriptions":{}}},"id":39594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5615:14:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5630:4:98","memberName":"call","nodeType":"MemberAccess","src":"5615:19:98","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":39597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5615:25:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5573:67:98"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":39622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":39613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":39599,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39588,"src":"5657:7:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":39611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":39600,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39590,"src":"5669:10:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":39601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5680:6:98","memberName":"length","nodeType":"MemberAccess","src":"5669:17:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":39602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5690:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5669:22:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":39606,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39590,"src":"5706:10:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":39608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5719:4:98","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":39607,"name":"bool","nodeType":"ElementaryTypeName","src":"5719:4:98","typeDescriptions":{}}}],"id":39609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5718:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":39604,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5695:3:98","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":39605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5699:6:98","memberName":"decode","nodeType":"MemberAccess","src":"5695:10:98","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":39610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5695:30:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5669:56:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":39612,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5668:58:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5657:69:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":39616,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39580,"src":"5738:5:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":39615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5730:7:98","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39614,"name":"address","nodeType":"ElementaryTypeName","src":"5730:7:98","typeDescriptions":{}}},"id":39617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5730:14:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5745:4:98","memberName":"code","nodeType":"MemberAccess","src":"5730:19:98","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":39619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5750:6:98","memberName":"length","nodeType":"MemberAccess","src":"5730:26:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":39620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5759:1:98","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5730:30:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5657:103:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":39586,"id":39623,"nodeType":"Return","src":"5650:110:98"}]},"documentation":{"id":39577,"nodeType":"StructuredDocumentation","src":"4694:490:98","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead."},"id":39625,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"5198:23:98","nodeType":"FunctionDefinition","parameters":{"id":39583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39580,"mutability":"mutable","name":"token","nameLocation":"5229:5:98","nodeType":"VariableDeclaration","scope":39625,"src":"5222:12:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":39579,"nodeType":"UserDefinedTypeName","pathNode":{"id":39578,"name":"IERC20","nameLocations":["5222:6:98"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5222:6:98"},"referencedDeclaration":39274,"src":"5222:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":39582,"mutability":"mutable","name":"data","nameLocation":"5249:4:98","nodeType":"VariableDeclaration","scope":39625,"src":"5236:17:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39581,"name":"bytes","nodeType":"ElementaryTypeName","src":"5236:5:98","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5221:33:98"},"returnParameters":{"id":39586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39625,"src":"5272:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39584,"name":"bool","nodeType":"ElementaryTypeName","src":"5272:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5271:6:98"},"scope":39626,"src":"5189:578:98","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":39627,"src":"751:5018:98","usedErrors":[39353,39362],"usedEvents":[]}],"src":"115:5655:98"},"id":98},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[39879]},"id":39880,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39628,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:99"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":39629,"nodeType":"StructuredDocumentation","src":"127:67:99","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":39879,"linearizedBaseContracts":[39879],"name":"Address","nameLocation":"203:7:99","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39630,"nodeType":"StructuredDocumentation","src":"217:94:99","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cd786059","id":39634,"name":"AddressInsufficientBalance","nameLocation":"322:26:99","nodeType":"ErrorDefinition","parameters":{"id":39633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39632,"mutability":"mutable","name":"account","nameLocation":"357:7:99","nodeType":"VariableDeclaration","scope":39634,"src":"349:15:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39631,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:17:99"},"src":"316:50:99"},{"documentation":{"id":39635,"nodeType":"StructuredDocumentation","src":"372:75:99","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":39639,"name":"AddressEmptyCode","nameLocation":"458:16:99","nodeType":"ErrorDefinition","parameters":{"id":39638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39637,"mutability":"mutable","name":"target","nameLocation":"483:6:99","nodeType":"VariableDeclaration","scope":39639,"src":"475:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39636,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"474:16:99"},"src":"452:39:99"},{"documentation":{"id":39640,"nodeType":"StructuredDocumentation","src":"497:89:99","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"1425ea42","id":39642,"name":"FailedInnerCall","nameLocation":"597:15:99","nodeType":"ErrorDefinition","parameters":{"id":39641,"nodeType":"ParameterList","parameters":[],"src":"612:2:99"},"src":"591:24:99"},{"body":{"id":39682,"nodeType":"Block","src":"1602:260:99","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":39652,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1624:4:99","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}],"id":39651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1616:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39650,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:99","typeDescriptions":{}}},"id":39653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1630:7:99","memberName":"balance","nodeType":"MemberAccess","src":"1616:21:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":39655,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39647,"src":"1640:6:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1616:30:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39665,"nodeType":"IfStatement","src":"1612:109:99","trueBody":{"id":39664,"nodeType":"Block","src":"1648:73:99","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":39660,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1704:4:99","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}],"id":39659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1696:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39658,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:99","typeDescriptions":{}}},"id":39661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":39657,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39634,"src":"1669:26:99","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":39662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1669:41:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39663,"nodeType":"RevertStatement","src":"1662:48:99"}]}},{"assignments":[39667,null],"declarations":[{"constant":false,"id":39667,"mutability":"mutable","name":"success","nameLocation":"1737:7:99","nodeType":"VariableDeclaration","scope":39682,"src":"1732:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39666,"name":"bool","nodeType":"ElementaryTypeName","src":"1732:4:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":39674,"initialValue":{"arguments":[{"hexValue":"","id":39672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1780:2:99","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":39668,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39645,"src":"1750:9:99","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":39669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1760:4:99","memberName":"call","nodeType":"MemberAccess","src":"1750:14:99","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":39671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":39670,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39647,"src":"1772:6:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1750:29:99","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":39673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1750:33:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1731:52:99"},{"condition":{"id":39676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1797:8:99","subExpression":{"id":39675,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39667,"src":"1798:7:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39681,"nodeType":"IfStatement","src":"1793:63:99","trueBody":{"id":39680,"nodeType":"Block","src":"1807:49:99","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":39677,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39642,"src":"1828:15:99","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":39678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:17:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39679,"nodeType":"RevertStatement","src":"1821:24:99"}]}}]},"documentation":{"id":39643,"nodeType":"StructuredDocumentation","src":"621:905:99","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":39683,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1540:9:99","nodeType":"FunctionDefinition","parameters":{"id":39648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39645,"mutability":"mutable","name":"recipient","nameLocation":"1566:9:99","nodeType":"VariableDeclaration","scope":39683,"src":"1550:25:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":39644,"name":"address","nodeType":"ElementaryTypeName","src":"1550:15:99","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":39647,"mutability":"mutable","name":"amount","nameLocation":"1585:6:99","nodeType":"VariableDeclaration","scope":39683,"src":"1577:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39646,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:43:99"},"returnParameters":{"id":39649,"nodeType":"ParameterList","parameters":[],"src":"1602:0:99"},"scope":39879,"src":"1531:331:99","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39699,"nodeType":"Block","src":"2794:62:99","statements":[{"expression":{"arguments":[{"id":39694,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39686,"src":"2833:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39695,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39688,"src":"2841:4:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":39696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2847:1:99","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":39693,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39746,"src":"2811:21:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":39697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:38:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":39692,"id":39698,"nodeType":"Return","src":"2804:45:99"}]},"documentation":{"id":39684,"nodeType":"StructuredDocumentation","src":"1868:832:99","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"id":39700,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2714:12:99","nodeType":"FunctionDefinition","parameters":{"id":39689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39686,"mutability":"mutable","name":"target","nameLocation":"2735:6:99","nodeType":"VariableDeclaration","scope":39700,"src":"2727:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39685,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39688,"mutability":"mutable","name":"data","nameLocation":"2756:4:99","nodeType":"VariableDeclaration","scope":39700,"src":"2743:17:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39687,"name":"bytes","nodeType":"ElementaryTypeName","src":"2743:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2726:35:99"},"returnParameters":{"id":39692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39691,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39700,"src":"2780:12:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39690,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2779:14:99"},"scope":39879,"src":"2705:151:99","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39745,"nodeType":"Block","src":"3293:279:99","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":39714,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3315:4:99","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}],"id":39713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3307:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39712,"name":"address","nodeType":"ElementaryTypeName","src":"3307:7:99","typeDescriptions":{}}},"id":39715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:7:99","memberName":"balance","nodeType":"MemberAccess","src":"3307:21:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":39717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39707,"src":"3331:5:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3307:29:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39727,"nodeType":"IfStatement","src":"3303:108:99","trueBody":{"id":39726,"nodeType":"Block","src":"3338:73:99","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":39722,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3394:4:99","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$39879","typeString":"library Address"}],"id":39721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3386:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39720,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:99","typeDescriptions":{}}},"id":39723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":39719,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39634,"src":"3359:26:99","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":39724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:41:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39725,"nodeType":"RevertStatement","src":"3352:48:99"}]}},{"assignments":[39729,39731],"declarations":[{"constant":false,"id":39729,"mutability":"mutable","name":"success","nameLocation":"3426:7:99","nodeType":"VariableDeclaration","scope":39745,"src":"3421:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39728,"name":"bool","nodeType":"ElementaryTypeName","src":"3421:4:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":39731,"mutability":"mutable","name":"returndata","nameLocation":"3448:10:99","nodeType":"VariableDeclaration","scope":39745,"src":"3435:23:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39730,"name":"bytes","nodeType":"ElementaryTypeName","src":"3435:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":39738,"initialValue":{"arguments":[{"id":39736,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39705,"src":"3488:4:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":39732,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39703,"src":"3462:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:4:99","memberName":"call","nodeType":"MemberAccess","src":"3462:11:99","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":39735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":39734,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39707,"src":"3481:5:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3462:25:99","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":39737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:31:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3420:73:99"},{"expression":{"arguments":[{"id":39740,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39703,"src":"3537:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39741,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39729,"src":"3545:7:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":39742,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39731,"src":"3554:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39739,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39838,"src":"3510:26:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":39743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3510:55:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":39711,"id":39744,"nodeType":"Return","src":"3503:62:99"}]},"documentation":{"id":39701,"nodeType":"StructuredDocumentation","src":"2862:313:99","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"id":39746,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"3189:21:99","nodeType":"FunctionDefinition","parameters":{"id":39708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39703,"mutability":"mutable","name":"target","nameLocation":"3219:6:99","nodeType":"VariableDeclaration","scope":39746,"src":"3211:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39702,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39705,"mutability":"mutable","name":"data","nameLocation":"3240:4:99","nodeType":"VariableDeclaration","scope":39746,"src":"3227:17:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39704,"name":"bytes","nodeType":"ElementaryTypeName","src":"3227:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":39707,"mutability":"mutable","name":"value","nameLocation":"3254:5:99","nodeType":"VariableDeclaration","scope":39746,"src":"3246:13:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39706,"name":"uint256","nodeType":"ElementaryTypeName","src":"3246:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3210:50:99"},"returnParameters":{"id":39711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39746,"src":"3279:12:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39709,"name":"bytes","nodeType":"ElementaryTypeName","src":"3279:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3278:14:99"},"scope":39879,"src":"3180:392:99","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39771,"nodeType":"Block","src":"3811:154:99","statements":[{"assignments":[39757,39759],"declarations":[{"constant":false,"id":39757,"mutability":"mutable","name":"success","nameLocation":"3827:7:99","nodeType":"VariableDeclaration","scope":39771,"src":"3822:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39756,"name":"bool","nodeType":"ElementaryTypeName","src":"3822:4:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":39759,"mutability":"mutable","name":"returndata","nameLocation":"3849:10:99","nodeType":"VariableDeclaration","scope":39771,"src":"3836:23:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39758,"name":"bytes","nodeType":"ElementaryTypeName","src":"3836:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":39764,"initialValue":{"arguments":[{"id":39762,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39751,"src":"3881:4:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":39760,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39749,"src":"3863:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:99","memberName":"staticcall","nodeType":"MemberAccess","src":"3863:17:99","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":39763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3863:23:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3821:65:99"},{"expression":{"arguments":[{"id":39766,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39749,"src":"3930:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39767,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39757,"src":"3938:7:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":39768,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39759,"src":"3947:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39765,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39838,"src":"3903:26:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":39769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3903:55:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":39755,"id":39770,"nodeType":"Return","src":"3896:62:99"}]},"documentation":{"id":39747,"nodeType":"StructuredDocumentation","src":"3578:128:99","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":39772,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3720:18:99","nodeType":"FunctionDefinition","parameters":{"id":39752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39749,"mutability":"mutable","name":"target","nameLocation":"3747:6:99","nodeType":"VariableDeclaration","scope":39772,"src":"3739:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39748,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39751,"mutability":"mutable","name":"data","nameLocation":"3768:4:99","nodeType":"VariableDeclaration","scope":39772,"src":"3755:17:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39750,"name":"bytes","nodeType":"ElementaryTypeName","src":"3755:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3738:35:99"},"returnParameters":{"id":39755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39754,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39772,"src":"3797:12:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39753,"name":"bytes","nodeType":"ElementaryTypeName","src":"3797:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:14:99"},"scope":39879,"src":"3711:254:99","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":39797,"nodeType":"Block","src":"4203:156:99","statements":[{"assignments":[39783,39785],"declarations":[{"constant":false,"id":39783,"mutability":"mutable","name":"success","nameLocation":"4219:7:99","nodeType":"VariableDeclaration","scope":39797,"src":"4214:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39782,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":39785,"mutability":"mutable","name":"returndata","nameLocation":"4241:10:99","nodeType":"VariableDeclaration","scope":39797,"src":"4228:23:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39784,"name":"bytes","nodeType":"ElementaryTypeName","src":"4228:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":39790,"initialValue":{"arguments":[{"id":39788,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39777,"src":"4275:4:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":39786,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39775,"src":"4255:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4262:12:99","memberName":"delegatecall","nodeType":"MemberAccess","src":"4255:19:99","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":39789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4255:25:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4213:67:99"},{"expression":{"arguments":[{"id":39792,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39775,"src":"4324:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":39793,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39783,"src":"4332:7:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":39794,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39785,"src":"4341:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39791,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39838,"src":"4297:26:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":39795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:55:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":39781,"id":39796,"nodeType":"Return","src":"4290:62:99"}]},"documentation":{"id":39773,"nodeType":"StructuredDocumentation","src":"3971:130:99","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":39798,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"4115:20:99","nodeType":"FunctionDefinition","parameters":{"id":39778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39775,"mutability":"mutable","name":"target","nameLocation":"4144:6:99","nodeType":"VariableDeclaration","scope":39798,"src":"4136:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39774,"name":"address","nodeType":"ElementaryTypeName","src":"4136:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39777,"mutability":"mutable","name":"data","nameLocation":"4165:4:99","nodeType":"VariableDeclaration","scope":39798,"src":"4152:17:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39776,"name":"bytes","nodeType":"ElementaryTypeName","src":"4152:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4135:35:99"},"returnParameters":{"id":39781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39798,"src":"4189:12:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39779,"name":"bytes","nodeType":"ElementaryTypeName","src":"4189:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4188:14:99"},"scope":39879,"src":"4106:253:99","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39837,"nodeType":"Block","src":"4783:424:99","statements":[{"condition":{"id":39811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4797:8:99","subExpression":{"id":39810,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39803,"src":"4798:7:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":39835,"nodeType":"Block","src":"4857:344:99","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":39826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":39817,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39805,"src":"5045:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":39818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:99","memberName":"length","nodeType":"MemberAccess","src":"5045:17:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":39819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:99","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5045:22:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":39821,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39801,"src":"5071:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5078:4:99","memberName":"code","nodeType":"MemberAccess","src":"5071:11:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":39823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5083:6:99","memberName":"length","nodeType":"MemberAccess","src":"5071:18:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":39824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5093:1:99","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5071:23:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5045:49:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39832,"nodeType":"IfStatement","src":"5041:119:99","trueBody":{"id":39831,"nodeType":"Block","src":"5096:64:99","statements":[{"errorCall":{"arguments":[{"id":39828,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39801,"src":"5138:6:99","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":39827,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39639,"src":"5121:16:99","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":39829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:24:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39830,"nodeType":"RevertStatement","src":"5114:31:99"}]}},{"expression":{"id":39833,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39805,"src":"5180:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":39809,"id":39834,"nodeType":"Return","src":"5173:17:99"}]},"id":39836,"nodeType":"IfStatement","src":"4793:408:99","trueBody":{"id":39816,"nodeType":"Block","src":"4807:44:99","statements":[{"expression":{"arguments":[{"id":39813,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39805,"src":"4829:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39812,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39878,"src":"4821:7:99","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":39814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:19:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39815,"nodeType":"ExpressionStatement","src":"4821:19:99"}]}}]},"documentation":{"id":39799,"nodeType":"StructuredDocumentation","src":"4365:255:99","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call."},"id":39838,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4634:26:99","nodeType":"FunctionDefinition","parameters":{"id":39806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39801,"mutability":"mutable","name":"target","nameLocation":"4678:6:99","nodeType":"VariableDeclaration","scope":39838,"src":"4670:14:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39800,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:99","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39803,"mutability":"mutable","name":"success","nameLocation":"4699:7:99","nodeType":"VariableDeclaration","scope":39838,"src":"4694:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39802,"name":"bool","nodeType":"ElementaryTypeName","src":"4694:4:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":39805,"mutability":"mutable","name":"returndata","nameLocation":"4729:10:99","nodeType":"VariableDeclaration","scope":39838,"src":"4716:23:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39804,"name":"bytes","nodeType":"ElementaryTypeName","src":"4716:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4660:85:99"},"returnParameters":{"id":39809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39838,"src":"4769:12:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39807,"name":"bytes","nodeType":"ElementaryTypeName","src":"4769:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4768:14:99"},"scope":39879,"src":"4625:582:99","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":39859,"nodeType":"Block","src":"5509:122:99","statements":[{"condition":{"id":39849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5523:8:99","subExpression":{"id":39848,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39841,"src":"5524:7:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":39857,"nodeType":"Block","src":"5583:42:99","statements":[{"expression":{"id":39855,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39843,"src":"5604:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":39847,"id":39856,"nodeType":"Return","src":"5597:17:99"}]},"id":39858,"nodeType":"IfStatement","src":"5519:106:99","trueBody":{"id":39854,"nodeType":"Block","src":"5533:44:99","statements":[{"expression":{"arguments":[{"id":39851,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39843,"src":"5555:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":39850,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39878,"src":"5547:7:99","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":39852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:19:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39853,"nodeType":"ExpressionStatement","src":"5547:19:99"}]}}]},"documentation":{"id":39839,"nodeType":"StructuredDocumentation","src":"5213:189:99","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error."},"id":39860,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5416:16:99","nodeType":"FunctionDefinition","parameters":{"id":39844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39841,"mutability":"mutable","name":"success","nameLocation":"5438:7:99","nodeType":"VariableDeclaration","scope":39860,"src":"5433:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":39840,"name":"bool","nodeType":"ElementaryTypeName","src":"5433:4:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":39843,"mutability":"mutable","name":"returndata","nameLocation":"5460:10:99","nodeType":"VariableDeclaration","scope":39860,"src":"5447:23:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39842,"name":"bytes","nodeType":"ElementaryTypeName","src":"5447:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5432:39:99"},"returnParameters":{"id":39847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39860,"src":"5495:12:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39845,"name":"bytes","nodeType":"ElementaryTypeName","src":"5495:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5494:14:99"},"scope":39879,"src":"5407:224:99","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":39877,"nodeType":"Block","src":"5798:461:99","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":39866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39863,"src":"5874:10:99","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":39867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5885:6:99","memberName":"length","nodeType":"MemberAccess","src":"5874:17:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":39868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:1:99","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5874:21:99","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":39875,"nodeType":"Block","src":"6204:49:99","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":39872,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39642,"src":"6225:15:99","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":39873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6225:17:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39874,"nodeType":"RevertStatement","src":"6218:24:99"}]},"id":39876,"nodeType":"IfStatement","src":"5870:383:99","trueBody":{"id":39871,"nodeType":"Block","src":"5897:301:99","statements":[{"AST":{"nativeSrc":"6055:133:99","nodeType":"YulBlock","src":"6055:133:99","statements":[{"nativeSrc":"6073:40:99","nodeType":"YulVariableDeclaration","src":"6073:40:99","value":{"arguments":[{"name":"returndata","nativeSrc":"6102:10:99","nodeType":"YulIdentifier","src":"6102:10:99"}],"functionName":{"name":"mload","nativeSrc":"6096:5:99","nodeType":"YulIdentifier","src":"6096:5:99"},"nativeSrc":"6096:17:99","nodeType":"YulFunctionCall","src":"6096:17:99"},"variables":[{"name":"returndata_size","nativeSrc":"6077:15:99","nodeType":"YulTypedName","src":"6077:15:99","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6141:2:99","nodeType":"YulLiteral","src":"6141:2:99","type":"","value":"32"},{"name":"returndata","nativeSrc":"6145:10:99","nodeType":"YulIdentifier","src":"6145:10:99"}],"functionName":{"name":"add","nativeSrc":"6137:3:99","nodeType":"YulIdentifier","src":"6137:3:99"},"nativeSrc":"6137:19:99","nodeType":"YulFunctionCall","src":"6137:19:99"},{"name":"returndata_size","nativeSrc":"6158:15:99","nodeType":"YulIdentifier","src":"6158:15:99"}],"functionName":{"name":"revert","nativeSrc":"6130:6:99","nodeType":"YulIdentifier","src":"6130:6:99"},"nativeSrc":"6130:44:99","nodeType":"YulFunctionCall","src":"6130:44:99"},"nativeSrc":"6130:44:99","nodeType":"YulExpressionStatement","src":"6130:44:99"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":39863,"isOffset":false,"isSlot":false,"src":"6102:10:99","valueSize":1},{"declaration":39863,"isOffset":false,"isSlot":false,"src":"6145:10:99","valueSize":1}],"id":39870,"nodeType":"InlineAssembly","src":"6046:142:99"}]}}]},"documentation":{"id":39861,"nodeType":"StructuredDocumentation","src":"5637:101:99","text":" @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}."},"id":39878,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5752:7:99","nodeType":"FunctionDefinition","parameters":{"id":39864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39863,"mutability":"mutable","name":"returndata","nameLocation":"5773:10:99","nodeType":"VariableDeclaration","scope":39878,"src":"5760:23:99","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39862,"name":"bytes","nodeType":"ElementaryTypeName","src":"5760:5:99","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5759:25:99"},"returnParameters":{"id":39865,"nodeType":"ParameterList","parameters":[],"src":"5798:0:99"},"scope":39879,"src":"5743:516:99","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":39880,"src":"195:6066:99","usedErrors":[39634,39639,39642],"usedEvents":[]}],"src":"101:6161:99"},"id":99},"@openzeppelin/contracts/utils/Create2.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Create2.sol","exportedSymbols":{"Create2":[39982]},"id":39983,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39881,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:100"},{"abstract":false,"baseContracts":[],"canonicalName":"Create2","contractDependencies":[],"contractKind":"library","documentation":{"id":39882,"nodeType":"StructuredDocumentation","src":"127:367:100","text":" @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.\n `CREATE2` can be used to compute in advance the address where a smart\n contract will be deployed, which allows for interesting new mechanisms known\n as 'counterfactual interactions'.\n See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more\n information."},"fullyImplemented":true,"id":39982,"linearizedBaseContracts":[39982],"name":"Create2","nameLocation":"503:7:100","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39883,"nodeType":"StructuredDocumentation","src":"517:75:100","text":" @dev Not enough balance for performing a CREATE2 deploy."},"errorSelector":"e4bbecac","id":39889,"name":"Create2InsufficientBalance","nameLocation":"603:26:100","nodeType":"ErrorDefinition","parameters":{"id":39888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39885,"mutability":"mutable","name":"balance","nameLocation":"638:7:100","nodeType":"VariableDeclaration","scope":39889,"src":"630:15:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39884,"name":"uint256","nodeType":"ElementaryTypeName","src":"630:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39887,"mutability":"mutable","name":"needed","nameLocation":"655:6:100","nodeType":"VariableDeclaration","scope":39889,"src":"647:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39886,"name":"uint256","nodeType":"ElementaryTypeName","src":"647:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"629:33:100"},"src":"597:66:100"},{"documentation":{"id":39890,"nodeType":"StructuredDocumentation","src":"669:50:100","text":" @dev There's no code to deploy."},"errorSelector":"4ca249dc","id":39892,"name":"Create2EmptyBytecode","nameLocation":"730:20:100","nodeType":"ErrorDefinition","parameters":{"id":39891,"nodeType":"ParameterList","parameters":[],"src":"750:2:100"},"src":"724:29:100"},{"documentation":{"id":39893,"nodeType":"StructuredDocumentation","src":"759:46:100","text":" @dev The deployment failed."},"errorSelector":"741752c2","id":39895,"name":"Create2FailedDeployment","nameLocation":"816:23:100","nodeType":"ErrorDefinition","parameters":{"id":39894,"nodeType":"ParameterList","parameters":[],"src":"839:2:100"},"src":"810:32:100"},{"body":{"id":39946,"nodeType":"Block","src":"1514:472:100","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":39909,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1536:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_Create2_$39982","typeString":"library Create2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Create2_$39982","typeString":"library Create2"}],"id":39908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39907,"name":"address","nodeType":"ElementaryTypeName","src":"1528:7:100","typeDescriptions":{}}},"id":39910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:13:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1542:7:100","memberName":"balance","nodeType":"MemberAccess","src":"1528:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":39912,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39898,"src":"1552:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1528:30:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39924,"nodeType":"IfStatement","src":"1524:125:100","trueBody":{"id":39923,"nodeType":"Block","src":"1560:89:100","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":39917,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1616:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_Create2_$39982","typeString":"library Create2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Create2_$39982","typeString":"library Create2"}],"id":39916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1608:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39915,"name":"address","nodeType":"ElementaryTypeName","src":"1608:7:100","typeDescriptions":{}}},"id":39918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1608:13:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":39919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1622:7:100","memberName":"balance","nodeType":"MemberAccess","src":"1608:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":39920,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39898,"src":"1631:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":39914,"name":"Create2InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39889,"src":"1581:26:100","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":39921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1581:57:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39922,"nodeType":"RevertStatement","src":"1574:64:100"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":39928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":39925,"name":"bytecode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39902,"src":"1662:8:100","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":39926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1671:6:100","memberName":"length","nodeType":"MemberAccess","src":"1662:15:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":39927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1681:1:100","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1662:20:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39933,"nodeType":"IfStatement","src":"1658:80:100","trueBody":{"id":39932,"nodeType":"Block","src":"1684:54:100","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":39929,"name":"Create2EmptyBytecode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39892,"src":"1705:20:100","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":39930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1705:22:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39931,"nodeType":"RevertStatement","src":"1698:29:100"}]}},{"AST":{"nativeSrc":"1799:91:100","nodeType":"YulBlock","src":"1799:91:100","statements":[{"nativeSrc":"1813:67:100","nodeType":"YulAssignment","src":"1813:67:100","value":{"arguments":[{"name":"amount","nativeSrc":"1829:6:100","nodeType":"YulIdentifier","src":"1829:6:100"},{"arguments":[{"name":"bytecode","nativeSrc":"1841:8:100","nodeType":"YulIdentifier","src":"1841:8:100"},{"kind":"number","nativeSrc":"1851:4:100","nodeType":"YulLiteral","src":"1851:4:100","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1837:3:100","nodeType":"YulIdentifier","src":"1837:3:100"},"nativeSrc":"1837:19:100","nodeType":"YulFunctionCall","src":"1837:19:100"},{"arguments":[{"name":"bytecode","nativeSrc":"1864:8:100","nodeType":"YulIdentifier","src":"1864:8:100"}],"functionName":{"name":"mload","nativeSrc":"1858:5:100","nodeType":"YulIdentifier","src":"1858:5:100"},"nativeSrc":"1858:15:100","nodeType":"YulFunctionCall","src":"1858:15:100"},{"name":"salt","nativeSrc":"1875:4:100","nodeType":"YulIdentifier","src":"1875:4:100"}],"functionName":{"name":"create2","nativeSrc":"1821:7:100","nodeType":"YulIdentifier","src":"1821:7:100"},"nativeSrc":"1821:59:100","nodeType":"YulFunctionCall","src":"1821:59:100"},"variableNames":[{"name":"addr","nativeSrc":"1813:4:100","nodeType":"YulIdentifier","src":"1813:4:100"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":39905,"isOffset":false,"isSlot":false,"src":"1813:4:100","valueSize":1},{"declaration":39898,"isOffset":false,"isSlot":false,"src":"1829:6:100","valueSize":1},{"declaration":39902,"isOffset":false,"isSlot":false,"src":"1841:8:100","valueSize":1},{"declaration":39902,"isOffset":false,"isSlot":false,"src":"1864:8:100","valueSize":1},{"declaration":39900,"isOffset":false,"isSlot":false,"src":"1875:4:100","valueSize":1}],"id":39934,"nodeType":"InlineAssembly","src":"1790:100:100"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":39940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":39935,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39905,"src":"1903:4:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":39938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1919:1:100","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":39937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1911:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39936,"name":"address","nodeType":"ElementaryTypeName","src":"1911:7:100","typeDescriptions":{}}},"id":39939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1911:10:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1903:18:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":39945,"nodeType":"IfStatement","src":"1899:81:100","trueBody":{"id":39944,"nodeType":"Block","src":"1923:57:100","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":39941,"name":"Create2FailedDeployment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39895,"src":"1944:23:100","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":39942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1944:25:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":39943,"nodeType":"RevertStatement","src":"1937:32:100"}]}}]},"documentation":{"id":39896,"nodeType":"StructuredDocumentation","src":"848:560:100","text":" @dev Deploys a contract using `CREATE2`. The address where the contract\n will be deployed can be known in advance via {computeAddress}.\n The bytecode for a contract can be obtained from Solidity with\n `type(contractName).creationCode`.\n Requirements:\n - `bytecode` must not be empty.\n - `salt` must have not been used for `bytecode` already.\n - the factory must have a balance of at least `amount`.\n - if `amount` is non-zero, `bytecode` must have a `payable` constructor."},"id":39947,"implemented":true,"kind":"function","modifiers":[],"name":"deploy","nameLocation":"1422:6:100","nodeType":"FunctionDefinition","parameters":{"id":39903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39898,"mutability":"mutable","name":"amount","nameLocation":"1437:6:100","nodeType":"VariableDeclaration","scope":39947,"src":"1429:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39897,"name":"uint256","nodeType":"ElementaryTypeName","src":"1429:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":39900,"mutability":"mutable","name":"salt","nameLocation":"1453:4:100","nodeType":"VariableDeclaration","scope":39947,"src":"1445:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1445:7:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39902,"mutability":"mutable","name":"bytecode","nameLocation":"1472:8:100","nodeType":"VariableDeclaration","scope":39947,"src":"1459:21:100","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":39901,"name":"bytes","nodeType":"ElementaryTypeName","src":"1459:5:100","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1428:53:100"},"returnParameters":{"id":39906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39905,"mutability":"mutable","name":"addr","nameLocation":"1508:4:100","nodeType":"VariableDeclaration","scope":39947,"src":"1500:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39904,"name":"address","nodeType":"ElementaryTypeName","src":"1500:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1499:14:100"},"scope":39982,"src":"1413:573:100","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":39966,"nodeType":"Block","src":"2282:73:100","statements":[{"expression":{"arguments":[{"id":39958,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39950,"src":"2314:4:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":39959,"name":"bytecodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39952,"src":"2320:12:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":39962,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2342:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_Create2_$39982","typeString":"library Create2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Create2_$39982","typeString":"library Create2"}],"id":39961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2334:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":39960,"name":"address","nodeType":"ElementaryTypeName","src":"2334:7:100","typeDescriptions":{}}},"id":39963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:13:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":39957,"name":"computeAddress","nodeType":"Identifier","overloadedDeclarations":[39967,39981],"referencedDeclaration":39981,"src":"2299:14:100","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes32,address) pure returns (address)"}},"id":39964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2299:49:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":39956,"id":39965,"nodeType":"Return","src":"2292:56:100"}]},"documentation":{"id":39948,"nodeType":"StructuredDocumentation","src":"1992:193:100","text":" @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the\n `bytecodeHash` or `salt` will result in a new destination address."},"id":39967,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nameLocation":"2199:14:100","nodeType":"FunctionDefinition","parameters":{"id":39953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39950,"mutability":"mutable","name":"salt","nameLocation":"2222:4:100","nodeType":"VariableDeclaration","scope":39967,"src":"2214:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2214:7:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39952,"mutability":"mutable","name":"bytecodeHash","nameLocation":"2236:12:100","nodeType":"VariableDeclaration","scope":39967,"src":"2228:20:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2228:7:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2213:36:100"},"returnParameters":{"id":39956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39955,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":39967,"src":"2273:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39954,"name":"address","nodeType":"ElementaryTypeName","src":"2273:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2272:9:100"},"scope":39982,"src":"2190:165:100","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":39980,"nodeType":"Block","src":"2713:1657:100","statements":[{"AST":{"nativeSrc":"2775:1589:100","nodeType":"YulBlock","src":"2775:1589:100","statements":[{"nativeSrc":"2789:22:100","nodeType":"YulVariableDeclaration","src":"2789:22:100","value":{"arguments":[{"kind":"number","nativeSrc":"2806:4:100","nodeType":"YulLiteral","src":"2806:4:100","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2800:5:100","nodeType":"YulIdentifier","src":"2800:5:100"},"nativeSrc":"2800:11:100","nodeType":"YulFunctionCall","src":"2800:11:100"},"variables":[{"name":"ptr","nativeSrc":"2793:3:100","nodeType":"YulTypedName","src":"2793:3:100","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"4013:3:100","nodeType":"YulIdentifier","src":"4013:3:100"},{"kind":"number","nativeSrc":"4018:4:100","nodeType":"YulLiteral","src":"4018:4:100","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"4009:3:100","nodeType":"YulIdentifier","src":"4009:3:100"},"nativeSrc":"4009:14:100","nodeType":"YulFunctionCall","src":"4009:14:100"},{"name":"bytecodeHash","nativeSrc":"4025:12:100","nodeType":"YulIdentifier","src":"4025:12:100"}],"functionName":{"name":"mstore","nativeSrc":"4002:6:100","nodeType":"YulIdentifier","src":"4002:6:100"},"nativeSrc":"4002:36:100","nodeType":"YulFunctionCall","src":"4002:36:100"},"nativeSrc":"4002:36:100","nodeType":"YulExpressionStatement","src":"4002:36:100"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"4062:3:100","nodeType":"YulIdentifier","src":"4062:3:100"},{"kind":"number","nativeSrc":"4067:4:100","nodeType":"YulLiteral","src":"4067:4:100","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4058:3:100","nodeType":"YulIdentifier","src":"4058:3:100"},"nativeSrc":"4058:14:100","nodeType":"YulFunctionCall","src":"4058:14:100"},{"name":"salt","nativeSrc":"4074:4:100","nodeType":"YulIdentifier","src":"4074:4:100"}],"functionName":{"name":"mstore","nativeSrc":"4051:6:100","nodeType":"YulIdentifier","src":"4051:6:100"},"nativeSrc":"4051:28:100","nodeType":"YulFunctionCall","src":"4051:28:100"},"nativeSrc":"4051:28:100","nodeType":"YulExpressionStatement","src":"4051:28:100"},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"4099:3:100","nodeType":"YulIdentifier","src":"4099:3:100"},{"name":"deployer","nativeSrc":"4104:8:100","nodeType":"YulIdentifier","src":"4104:8:100"}],"functionName":{"name":"mstore","nativeSrc":"4092:6:100","nodeType":"YulIdentifier","src":"4092:6:100"},"nativeSrc":"4092:21:100","nodeType":"YulFunctionCall","src":"4092:21:100"},"nativeSrc":"4092:21:100","nodeType":"YulExpressionStatement","src":"4092:21:100"},{"nativeSrc":"4175:27:100","nodeType":"YulVariableDeclaration","src":"4175:27:100","value":{"arguments":[{"name":"ptr","nativeSrc":"4192:3:100","nodeType":"YulIdentifier","src":"4192:3:100"},{"kind":"number","nativeSrc":"4197:4:100","nodeType":"YulLiteral","src":"4197:4:100","type":"","value":"0x0b"}],"functionName":{"name":"add","nativeSrc":"4188:3:100","nodeType":"YulIdentifier","src":"4188:3:100"},"nativeSrc":"4188:14:100","nodeType":"YulFunctionCall","src":"4188:14:100"},"variables":[{"name":"start","nativeSrc":"4179:5:100","nodeType":"YulTypedName","src":"4179:5:100","type":""}]},{"expression":{"arguments":[{"name":"start","nativeSrc":"4301:5:100","nodeType":"YulIdentifier","src":"4301:5:100"},{"kind":"number","nativeSrc":"4308:4:100","nodeType":"YulLiteral","src":"4308:4:100","type":"","value":"0xff"}],"functionName":{"name":"mstore8","nativeSrc":"4293:7:100","nodeType":"YulIdentifier","src":"4293:7:100"},"nativeSrc":"4293:20:100","nodeType":"YulFunctionCall","src":"4293:20:100"},"nativeSrc":"4293:20:100","nodeType":"YulExpressionStatement","src":"4293:20:100"},{"nativeSrc":"4326:28:100","nodeType":"YulAssignment","src":"4326:28:100","value":{"arguments":[{"name":"start","nativeSrc":"4344:5:100","nodeType":"YulIdentifier","src":"4344:5:100"},{"kind":"number","nativeSrc":"4351:2:100","nodeType":"YulLiteral","src":"4351:2:100","type":"","value":"85"}],"functionName":{"name":"keccak256","nativeSrc":"4334:9:100","nodeType":"YulIdentifier","src":"4334:9:100"},"nativeSrc":"4334:20:100","nodeType":"YulFunctionCall","src":"4334:20:100"},"variableNames":[{"name":"addr","nativeSrc":"4326:4:100","nodeType":"YulIdentifier","src":"4326:4:100"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":39977,"isOffset":false,"isSlot":false,"src":"4326:4:100","valueSize":1},{"declaration":39972,"isOffset":false,"isSlot":false,"src":"4025:12:100","valueSize":1},{"declaration":39974,"isOffset":false,"isSlot":false,"src":"4104:8:100","valueSize":1},{"declaration":39970,"isOffset":false,"isSlot":false,"src":"4074:4:100","valueSize":1}],"id":39979,"nodeType":"InlineAssembly","src":"2766:1598:100"}]},"documentation":{"id":39968,"nodeType":"StructuredDocumentation","src":"2361:232:100","text":" @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at\n `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}."},"id":39981,"implemented":true,"kind":"function","modifiers":[],"name":"computeAddress","nameLocation":"2607:14:100","nodeType":"FunctionDefinition","parameters":{"id":39975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39970,"mutability":"mutable","name":"salt","nameLocation":"2630:4:100","nodeType":"VariableDeclaration","scope":39981,"src":"2622:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39969,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2622:7:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39972,"mutability":"mutable","name":"bytecodeHash","nameLocation":"2644:12:100","nodeType":"VariableDeclaration","scope":39981,"src":"2636:20:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":39971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2636:7:100","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39974,"mutability":"mutable","name":"deployer","nameLocation":"2666:8:100","nodeType":"VariableDeclaration","scope":39981,"src":"2658:16:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39973,"name":"address","nodeType":"ElementaryTypeName","src":"2658:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2621:54:100"},"returnParameters":{"id":39978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39977,"mutability":"mutable","name":"addr","nameLocation":"2707:4:100","nodeType":"VariableDeclaration","scope":39981,"src":"2699:12:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39976,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2698:14:100"},"scope":39982,"src":"2598:1772:100","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":39983,"src":"495:3877:100","usedErrors":[39889,39892,39895],"usedEvents":[]}],"src":"101:4272:100"},"id":100},"@openzeppelin/contracts/utils/Nonces.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Nonces.sol","exportedSymbols":{"Nonces":[40050]},"id":40051,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":39984,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:101"},{"abstract":true,"baseContracts":[],"canonicalName":"Nonces","contractDependencies":[],"contractKind":"contract","documentation":{"id":39985,"nodeType":"StructuredDocumentation","src":"125:83:101","text":" @dev Provides tracking nonces for addresses. Nonces will only increment."},"fullyImplemented":true,"id":40050,"linearizedBaseContracts":[40050],"name":"Nonces","nameLocation":"227:6:101","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":39986,"nodeType":"StructuredDocumentation","src":"240:90:101","text":" @dev The nonce used for an `account` is not the expected current nonce."},"errorSelector":"752d88c0","id":39992,"name":"InvalidAccountNonce","nameLocation":"341:19:101","nodeType":"ErrorDefinition","parameters":{"id":39991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39988,"mutability":"mutable","name":"account","nameLocation":"369:7:101","nodeType":"VariableDeclaration","scope":39992,"src":"361:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39987,"name":"address","nodeType":"ElementaryTypeName","src":"361:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39990,"mutability":"mutable","name":"currentNonce","nameLocation":"386:12:101","nodeType":"VariableDeclaration","scope":39992,"src":"378:20:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39989,"name":"uint256","nodeType":"ElementaryTypeName","src":"378:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"360:39:101"},"src":"335:65:101"},{"constant":false,"id":39996,"mutability":"mutable","name":"_nonces","nameLocation":"450:7:101","nodeType":"VariableDeclaration","scope":40050,"src":"406:51:101","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":39995,"keyName":"account","keyNameLocation":"422:7:101","keyType":{"id":39993,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"406:35:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":39994,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":40008,"nodeType":"Block","src":"607:38:101","statements":[{"expression":{"baseExpression":{"id":40004,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39996,"src":"624:7:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":40006,"indexExpression":{"id":40005,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39999,"src":"632:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"624:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":40003,"id":40007,"nodeType":"Return","src":"617:21:101"}]},"documentation":{"id":39997,"nodeType":"StructuredDocumentation","src":"464:69:101","text":" @dev Returns the next unused nonce for an address."},"functionSelector":"7ecebe00","id":40009,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"547:6:101","nodeType":"FunctionDefinition","parameters":{"id":40000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39999,"mutability":"mutable","name":"owner","nameLocation":"562:5:101","nodeType":"VariableDeclaration","scope":40009,"src":"554:13:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39998,"name":"address","nodeType":"ElementaryTypeName","src":"554:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"553:15:101"},"returnParameters":{"id":40003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40009,"src":"598:7:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40001,"name":"uint256","nodeType":"ElementaryTypeName","src":"598:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"597:9:101"},"scope":40050,"src":"538:107:101","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":40023,"nodeType":"Block","src":"828:326:101","statements":[{"id":40022,"nodeType":"UncheckedBlock","src":"1031:117:101","statements":[{"expression":{"id":40020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1121:16:101","subExpression":{"baseExpression":{"id":40017,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39996,"src":"1121:7:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":40019,"indexExpression":{"id":40018,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40012,"src":"1129:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1121:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":40016,"id":40021,"nodeType":"Return","src":"1114:23:101"}]}]},"documentation":{"id":40010,"nodeType":"StructuredDocumentation","src":"651:103:101","text":" @dev Consumes a nonce.\n Returns the current value and increments nonce."},"id":40024,"implemented":true,"kind":"function","modifiers":[],"name":"_useNonce","nameLocation":"768:9:101","nodeType":"FunctionDefinition","parameters":{"id":40013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40012,"mutability":"mutable","name":"owner","nameLocation":"786:5:101","nodeType":"VariableDeclaration","scope":40024,"src":"778:13:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40011,"name":"address","nodeType":"ElementaryTypeName","src":"778:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"777:15:101"},"returnParameters":{"id":40016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40024,"src":"819:7:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40014,"name":"uint256","nodeType":"ElementaryTypeName","src":"819:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"818:9:101"},"scope":40050,"src":"759:395:101","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":40048,"nodeType":"Block","src":"1338:149:101","statements":[{"assignments":[40033],"declarations":[{"constant":false,"id":40033,"mutability":"mutable","name":"current","nameLocation":"1356:7:101","nodeType":"VariableDeclaration","scope":40048,"src":"1348:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40032,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":40037,"initialValue":{"arguments":[{"id":40035,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40027,"src":"1376:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":40034,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40024,"src":"1366:9:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":40036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1366:16:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1348:34:101"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40038,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40029,"src":"1396:5:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":40039,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40033,"src":"1405:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1396:16:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40047,"nodeType":"IfStatement","src":"1392:89:101","trueBody":{"id":40046,"nodeType":"Block","src":"1414:67:101","statements":[{"errorCall":{"arguments":[{"id":40042,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40027,"src":"1455:5:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":40043,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40033,"src":"1462:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40041,"name":"InvalidAccountNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39992,"src":"1435:19:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":40044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1435:35:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":40045,"nodeType":"RevertStatement","src":"1428:42:101"}]}}]},"documentation":{"id":40025,"nodeType":"StructuredDocumentation","src":"1160:100:101","text":" @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`."},"id":40049,"implemented":true,"kind":"function","modifiers":[],"name":"_useCheckedNonce","nameLocation":"1274:16:101","nodeType":"FunctionDefinition","parameters":{"id":40030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40027,"mutability":"mutable","name":"owner","nameLocation":"1299:5:101","nodeType":"VariableDeclaration","scope":40049,"src":"1291:13:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40026,"name":"address","nodeType":"ElementaryTypeName","src":"1291:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40029,"mutability":"mutable","name":"nonce","nameLocation":"1314:5:101","nodeType":"VariableDeclaration","scope":40049,"src":"1306:13:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40028,"name":"uint256","nodeType":"ElementaryTypeName","src":"1306:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1290:30:101"},"returnParameters":{"id":40031,"nodeType":"ParameterList","parameters":[],"src":"1338:0:101"},"scope":40050,"src":"1265:222:101","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":40051,"src":"209:1280:101","usedErrors":[39992],"usedEvents":[]}],"src":"99:1391:101"},"id":101},"@openzeppelin/contracts/utils/ShortStrings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/ShortStrings.sol","exportedSymbols":{"ShortString":[40056],"ShortStrings":[40267],"StorageSlot":[40377]},"id":40268,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":40052,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:102"},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"./StorageSlot.sol","id":40054,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":40268,"sourceUnit":40378,"src":"132:46:102","symbolAliases":[{"foreign":{"id":40053,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40377,"src":"140:11:102","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"ShortString","id":40056,"name":"ShortString","nameLocation":"353:11:102","nodeType":"UserDefinedValueTypeDefinition","src":"348:28:102","underlyingType":{"id":40055,"name":"bytes32","nodeType":"ElementaryTypeName","src":"368:7:102","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"abstract":false,"baseContracts":[],"canonicalName":"ShortStrings","contractDependencies":[],"contractKind":"library","documentation":{"id":40057,"nodeType":"StructuredDocumentation","src":"378:876:102","text":" @dev This library provides functions to convert short memory strings\n into a `ShortString` type that can be used as an immutable variable.\n Strings of arbitrary length can be optimized using this library if\n they are short enough (up to 31 bytes) by packing them with their\n length (1 byte) in a single EVM word (32 bytes). Additionally, a\n fallback mechanism can be used for every other case.\n Usage example:\n ```solidity\n contract Named {\n using ShortStrings for *;\n ShortString private immutable _name;\n string private _nameFallback;\n constructor(string memory contractName) {\n _name = contractName.toShortStringWithFallback(_nameFallback);\n }\n function name() external view returns (string memory) {\n return _name.toStringWithFallback(_nameFallback);\n }\n }\n ```"},"fullyImplemented":true,"id":40267,"linearizedBaseContracts":[40267],"name":"ShortStrings","nameLocation":"1263:12:102","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":40060,"mutability":"constant","name":"FALLBACK_SENTINEL","nameLocation":"1370:17:102","nodeType":"VariableDeclaration","scope":40267,"src":"1345:111:102","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1345:7:102","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304646","id":40059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1390:66:102","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0x00000000000000000000000000000000000000000000000000000000000000FF"},"visibility":"private"},{"errorSelector":"305a27a9","id":40064,"name":"StringTooLong","nameLocation":"1469:13:102","nodeType":"ErrorDefinition","parameters":{"id":40063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40062,"mutability":"mutable","name":"str","nameLocation":"1490:3:102","nodeType":"VariableDeclaration","scope":40064,"src":"1483:10:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40061,"name":"string","nodeType":"ElementaryTypeName","src":"1483:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1482:12:102"},"src":"1463:32:102"},{"errorSelector":"b3512b0c","id":40066,"name":"InvalidShortString","nameLocation":"1506:18:102","nodeType":"ErrorDefinition","parameters":{"id":40065,"nodeType":"ParameterList","parameters":[],"src":"1524:2:102"},"src":"1500:27:102"},{"body":{"id":40109,"nodeType":"Block","src":"1786:208:102","statements":[{"assignments":[40076],"declarations":[{"constant":false,"id":40076,"mutability":"mutable","name":"bstr","nameLocation":"1809:4:102","nodeType":"VariableDeclaration","scope":40109,"src":"1796:17:102","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":40075,"name":"bytes","nodeType":"ElementaryTypeName","src":"1796:5:102","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":40081,"initialValue":{"arguments":[{"id":40079,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40069,"src":"1822:3:102","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1816:5:102","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":40077,"name":"bytes","nodeType":"ElementaryTypeName","src":"1816:5:102","typeDescriptions":{}}},"id":40080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1816:10:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1796:30:102"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":40082,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40076,"src":"1840:4:102","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1845:6:102","memberName":"length","nodeType":"MemberAccess","src":"1840:11:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3331","id":40084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1854:2:102","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"1840:16:102","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40091,"nodeType":"IfStatement","src":"1836:72:102","trueBody":{"id":40090,"nodeType":"Block","src":"1858:50:102","statements":[{"errorCall":{"arguments":[{"id":40087,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40069,"src":"1893:3:102","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40086,"name":"StringTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40064,"src":"1879:13:102","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":40088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1879:18:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":40089,"nodeType":"RevertStatement","src":"1872:25:102"}]}},{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":40100,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40076,"src":"1965:4:102","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":40099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1957:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":40098,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1957:7:102","typeDescriptions":{}}},"id":40101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1957:13:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1949:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":40096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1949:7:102","typeDescriptions":{}}},"id":40102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1949:22:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"expression":{"id":40103,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40076,"src":"1974:4:102","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1979:6:102","memberName":"length","nodeType":"MemberAccess","src":"1974:11:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1949:36:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1941:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":40094,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1941:7:102","typeDescriptions":{}}},"id":40106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1941:45:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":40092,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40056,"src":"1924:11:102","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"type(ShortString)"}},"id":40093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1936:4:102","memberName":"wrap","nodeType":"MemberAccess","src":"1924:16:102","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"function (bytes32) pure returns (ShortString)"}},"id":40107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1924:63:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"functionReturnParameters":40074,"id":40108,"nodeType":"Return","src":"1917:70:102"}]},"documentation":{"id":40067,"nodeType":"StructuredDocumentation","src":"1533:170:102","text":" @dev Encode a string of at most 31 chars into a `ShortString`.\n This will trigger a `StringTooLong` error is the input string is too long."},"id":40110,"implemented":true,"kind":"function","modifiers":[],"name":"toShortString","nameLocation":"1717:13:102","nodeType":"FunctionDefinition","parameters":{"id":40070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40069,"mutability":"mutable","name":"str","nameLocation":"1745:3:102","nodeType":"VariableDeclaration","scope":40110,"src":"1731:17:102","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40068,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1730:19:102"},"returnParameters":{"id":40074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40110,"src":"1773:11:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":40072,"nodeType":"UserDefinedTypeName","pathNode":{"id":40071,"name":"ShortString","nameLocations":["1773:11:102"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"1773:11:102"},"referencedDeclaration":40056,"src":"1773:11:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"internal"}],"src":"1772:13:102"},"scope":40267,"src":"1708:286:102","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40135,"nodeType":"Block","src":"2152:331:102","statements":[{"assignments":[40120],"declarations":[{"constant":false,"id":40120,"mutability":"mutable","name":"len","nameLocation":"2170:3:102","nodeType":"VariableDeclaration","scope":40135,"src":"2162:11:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40119,"name":"uint256","nodeType":"ElementaryTypeName","src":"2162:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":40124,"initialValue":{"arguments":[{"id":40122,"name":"sstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40114,"src":"2187:4:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}],"id":40121,"name":"byteLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40168,"src":"2176:10:102","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$40056_$returns$_t_uint256_$","typeString":"function (ShortString) pure returns (uint256)"}},"id":40123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:16:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2162:30:102"},{"assignments":[40126],"declarations":[{"constant":false,"id":40126,"mutability":"mutable","name":"str","nameLocation":"2294:3:102","nodeType":"VariableDeclaration","scope":40135,"src":"2280:17:102","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40125,"name":"string","nodeType":"ElementaryTypeName","src":"2280:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":40131,"initialValue":{"arguments":[{"hexValue":"3332","id":40129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2311:2:102","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":40128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2300:10:102","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":40127,"name":"string","nodeType":"ElementaryTypeName","src":"2304:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":40130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:14:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2280:34:102"},{"AST":{"nativeSrc":"2376:81:102","nodeType":"YulBlock","src":"2376:81:102","statements":[{"expression":{"arguments":[{"name":"str","nativeSrc":"2397:3:102","nodeType":"YulIdentifier","src":"2397:3:102"},{"name":"len","nativeSrc":"2402:3:102","nodeType":"YulIdentifier","src":"2402:3:102"}],"functionName":{"name":"mstore","nativeSrc":"2390:6:102","nodeType":"YulIdentifier","src":"2390:6:102"},"nativeSrc":"2390:16:102","nodeType":"YulFunctionCall","src":"2390:16:102"},"nativeSrc":"2390:16:102","nodeType":"YulExpressionStatement","src":"2390:16:102"},{"expression":{"arguments":[{"arguments":[{"name":"str","nativeSrc":"2430:3:102","nodeType":"YulIdentifier","src":"2430:3:102"},{"kind":"number","nativeSrc":"2435:4:102","nodeType":"YulLiteral","src":"2435:4:102","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2426:3:102","nodeType":"YulIdentifier","src":"2426:3:102"},"nativeSrc":"2426:14:102","nodeType":"YulFunctionCall","src":"2426:14:102"},{"name":"sstr","nativeSrc":"2442:4:102","nodeType":"YulIdentifier","src":"2442:4:102"}],"functionName":{"name":"mstore","nativeSrc":"2419:6:102","nodeType":"YulIdentifier","src":"2419:6:102"},"nativeSrc":"2419:28:102","nodeType":"YulFunctionCall","src":"2419:28:102"},"nativeSrc":"2419:28:102","nodeType":"YulExpressionStatement","src":"2419:28:102"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40120,"isOffset":false,"isSlot":false,"src":"2402:3:102","valueSize":1},{"declaration":40114,"isOffset":false,"isSlot":false,"src":"2442:4:102","valueSize":1},{"declaration":40126,"isOffset":false,"isSlot":false,"src":"2397:3:102","valueSize":1},{"declaration":40126,"isOffset":false,"isSlot":false,"src":"2430:3:102","valueSize":1}],"id":40132,"nodeType":"InlineAssembly","src":"2367:90:102"},{"expression":{"id":40133,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40126,"src":"2473:3:102","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":40118,"id":40134,"nodeType":"Return","src":"2466:10:102"}]},"documentation":{"id":40111,"nodeType":"StructuredDocumentation","src":"2000:73:102","text":" @dev Decode a `ShortString` back to a \"normal\" string."},"id":40136,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"2087:8:102","nodeType":"FunctionDefinition","parameters":{"id":40115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40114,"mutability":"mutable","name":"sstr","nameLocation":"2108:4:102","nodeType":"VariableDeclaration","scope":40136,"src":"2096:16:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":40113,"nodeType":"UserDefinedTypeName","pathNode":{"id":40112,"name":"ShortString","nameLocations":["2096:11:102"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"2096:11:102"},"referencedDeclaration":40056,"src":"2096:11:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"internal"}],"src":"2095:18:102"},"returnParameters":{"id":40118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40136,"src":"2137:13:102","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40116,"name":"string","nodeType":"ElementaryTypeName","src":"2137:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2136:15:102"},"scope":40267,"src":"2078:405:102","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40167,"nodeType":"Block","src":"2625:175:102","statements":[{"assignments":[40146],"declarations":[{"constant":false,"id":40146,"mutability":"mutable","name":"result","nameLocation":"2643:6:102","nodeType":"VariableDeclaration","scope":40167,"src":"2635:14:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40145,"name":"uint256","nodeType":"ElementaryTypeName","src":"2635:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":40156,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":40151,"name":"sstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40140,"src":"2679:4:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}],"expression":{"id":40149,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40056,"src":"2660:11:102","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"type(ShortString)"}},"id":40150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2672:6:102","memberName":"unwrap","nodeType":"MemberAccess","src":"2660:18:102","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$40056_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":40152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2660:24:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2652:7:102","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":40147,"name":"uint256","nodeType":"ElementaryTypeName","src":"2652:7:102","typeDescriptions":{}}},"id":40153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2652:33:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646","id":40154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2688:4:102","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"src":"2652:40:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2635:57:102"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40157,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40146,"src":"2706:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3331","id":40158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2715:2:102","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"2706:11:102","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40164,"nodeType":"IfStatement","src":"2702:69:102","trueBody":{"id":40163,"nodeType":"Block","src":"2719:52:102","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":40160,"name":"InvalidShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40066,"src":"2740:18:102","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":40161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2740:20:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":40162,"nodeType":"RevertStatement","src":"2733:27:102"}]}},{"expression":{"id":40165,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40146,"src":"2787:6:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":40144,"id":40166,"nodeType":"Return","src":"2780:13:102"}]},"documentation":{"id":40137,"nodeType":"StructuredDocumentation","src":"2489:61:102","text":" @dev Return the length of a `ShortString`."},"id":40168,"implemented":true,"kind":"function","modifiers":[],"name":"byteLength","nameLocation":"2564:10:102","nodeType":"FunctionDefinition","parameters":{"id":40141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40140,"mutability":"mutable","name":"sstr","nameLocation":"2587:4:102","nodeType":"VariableDeclaration","scope":40168,"src":"2575:16:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":40139,"nodeType":"UserDefinedTypeName","pathNode":{"id":40138,"name":"ShortString","nameLocations":["2575:11:102"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"2575:11:102"},"referencedDeclaration":40056,"src":"2575:11:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"internal"}],"src":"2574:18:102"},"returnParameters":{"id":40144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40168,"src":"2616:7:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40142,"name":"uint256","nodeType":"ElementaryTypeName","src":"2616:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2615:9:102"},"scope":40267,"src":"2555:245:102","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40207,"nodeType":"Block","src":"3023:231:102","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":40181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40171,"src":"3043:5:102","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3037:5:102","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":40179,"name":"bytes","nodeType":"ElementaryTypeName","src":"3037:5:102","typeDescriptions":{}}},"id":40182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3037:12:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3050:6:102","memberName":"length","nodeType":"MemberAccess","src":"3037:19:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":40184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3059:2:102","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3037:24:102","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":40205,"nodeType":"Block","src":"3121:127:102","statements":[{"expression":{"id":40198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":40194,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40173,"src":"3161:5:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}],"expression":{"id":40191,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40377,"src":"3135:11:102","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$40377_$","typeString":"type(library StorageSlot)"}},"id":40193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3147:13:102","memberName":"getStringSlot","nodeType":"MemberAccess","referencedDeclaration":40354,"src":"3135:25:102","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_storage_ptr_$returns$_t_struct$_StringSlot_$40285_storage_ptr_$","typeString":"function (string storage pointer) pure returns (struct StorageSlot.StringSlot storage pointer)"}},"id":40195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3135:32:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$40285_storage_ptr","typeString":"struct StorageSlot.StringSlot storage pointer"}},"id":40196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3168:5:102","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":40284,"src":"3135:38:102","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":40197,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40171,"src":"3176:5:102","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3135:46:102","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":40199,"nodeType":"ExpressionStatement","src":"3135:46:102"},{"expression":{"arguments":[{"id":40202,"name":"FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40060,"src":"3219:17:102","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":40200,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40056,"src":"3202:11:102","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"type(ShortString)"}},"id":40201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3214:4:102","memberName":"wrap","nodeType":"MemberAccess","src":"3202:16:102","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"function (bytes32) pure returns (ShortString)"}},"id":40203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3202:35:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"functionReturnParameters":40178,"id":40204,"nodeType":"Return","src":"3195:42:102"}]},"id":40206,"nodeType":"IfStatement","src":"3033:215:102","trueBody":{"id":40190,"nodeType":"Block","src":"3063:52:102","statements":[{"expression":{"arguments":[{"id":40187,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40171,"src":"3098:5:102","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40186,"name":"toShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40110,"src":"3084:13:102","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"function (string memory) pure returns (ShortString)"}},"id":40188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3084:20:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"functionReturnParameters":40178,"id":40189,"nodeType":"Return","src":"3077:27:102"}]}}]},"documentation":{"id":40169,"nodeType":"StructuredDocumentation","src":"2806:103:102","text":" @dev Encode a string into a `ShortString`, or write it to storage if it is too long."},"id":40208,"implemented":true,"kind":"function","modifiers":[],"name":"toShortStringWithFallback","nameLocation":"2923:25:102","nodeType":"FunctionDefinition","parameters":{"id":40174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40171,"mutability":"mutable","name":"value","nameLocation":"2963:5:102","nodeType":"VariableDeclaration","scope":40208,"src":"2949:19:102","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40170,"name":"string","nodeType":"ElementaryTypeName","src":"2949:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":40173,"mutability":"mutable","name":"store","nameLocation":"2985:5:102","nodeType":"VariableDeclaration","scope":40208,"src":"2970:20:102","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":40172,"name":"string","nodeType":"ElementaryTypeName","src":"2970:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2948:43:102"},"returnParameters":{"id":40178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40208,"src":"3010:11:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":40176,"nodeType":"UserDefinedTypeName","pathNode":{"id":40175,"name":"ShortString","nameLocations":["3010:11:102"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"3010:11:102"},"referencedDeclaration":40056,"src":"3010:11:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"internal"}],"src":"3009:13:102"},"scope":40267,"src":"2914:340:102","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":40234,"nodeType":"Block","src":"3494:158:102","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":40224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":40221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40212,"src":"3527:5:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}],"expression":{"id":40219,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40056,"src":"3508:11:102","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"type(ShortString)"}},"id":40220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3520:6:102","memberName":"unwrap","nodeType":"MemberAccess","src":"3508:18:102","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$40056_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":40222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3508:25:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":40223,"name":"FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40060,"src":"3537:17:102","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3508:46:102","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":40232,"nodeType":"Block","src":"3609:37:102","statements":[{"expression":{"id":40230,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40214,"src":"3630:5:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}},"functionReturnParameters":40218,"id":40231,"nodeType":"Return","src":"3623:12:102"}]},"id":40233,"nodeType":"IfStatement","src":"3504:142:102","trueBody":{"id":40229,"nodeType":"Block","src":"3556:47:102","statements":[{"expression":{"arguments":[{"id":40226,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40212,"src":"3586:5:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}],"id":40225,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40136,"src":"3577:8:102","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$40056_$returns$_t_string_memory_ptr_$","typeString":"function (ShortString) pure returns (string memory)"}},"id":40227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3577:15:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":40218,"id":40228,"nodeType":"Return","src":"3570:22:102"}]}}]},"documentation":{"id":40209,"nodeType":"StructuredDocumentation","src":"3260:120:102","text":" @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}."},"id":40235,"implemented":true,"kind":"function","modifiers":[],"name":"toStringWithFallback","nameLocation":"3394:20:102","nodeType":"FunctionDefinition","parameters":{"id":40215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40212,"mutability":"mutable","name":"value","nameLocation":"3427:5:102","nodeType":"VariableDeclaration","scope":40235,"src":"3415:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":40211,"nodeType":"UserDefinedTypeName","pathNode":{"id":40210,"name":"ShortString","nameLocations":["3415:11:102"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"3415:11:102"},"referencedDeclaration":40056,"src":"3415:11:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"internal"},{"constant":false,"id":40214,"mutability":"mutable","name":"store","nameLocation":"3449:5:102","nodeType":"VariableDeclaration","scope":40235,"src":"3434:20:102","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":40213,"name":"string","nodeType":"ElementaryTypeName","src":"3434:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3414:41:102"},"returnParameters":{"id":40218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40235,"src":"3479:13:102","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40216,"name":"string","nodeType":"ElementaryTypeName","src":"3479:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3478:15:102"},"scope":40267,"src":"3385:267:102","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40265,"nodeType":"Block","src":"4132:174:102","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":40251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":40248,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40239,"src":"4165:5:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}],"expression":{"id":40246,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40056,"src":"4146:11:102","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"type(ShortString)"}},"id":40247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4158:6:102","memberName":"unwrap","nodeType":"MemberAccess","src":"4146:18:102","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$40056_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":40249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4146:25:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":40250,"name":"FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40060,"src":"4175:17:102","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4146:46:102","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":40263,"nodeType":"Block","src":"4249:51:102","statements":[{"expression":{"expression":{"arguments":[{"id":40259,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40241,"src":"4276:5:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}],"id":40258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4270:5:102","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":40257,"name":"bytes","nodeType":"ElementaryTypeName","src":"4270:5:102","typeDescriptions":{}}},"id":40260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4270:12:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":40261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4283:6:102","memberName":"length","nodeType":"MemberAccess","src":"4270:19:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":40245,"id":40262,"nodeType":"Return","src":"4263:26:102"}]},"id":40264,"nodeType":"IfStatement","src":"4142:158:102","trueBody":{"id":40256,"nodeType":"Block","src":"4194:49:102","statements":[{"expression":{"arguments":[{"id":40253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40239,"src":"4226:5:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}],"id":40252,"name":"byteLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40168,"src":"4215:10:102","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$40056_$returns$_t_uint256_$","typeString":"function (ShortString) pure returns (uint256)"}},"id":40254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4215:17:102","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":40245,"id":40255,"nodeType":"Return","src":"4208:24:102"}]}}]},"documentation":{"id":40236,"nodeType":"StructuredDocumentation","src":"3658:364:102","text":" @dev Return the length of a string that was encoded to `ShortString` or written to storage using\n {setWithFallback}.\n WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n actual characters as the UTF-8 encoding of a single character can span over multiple bytes."},"id":40266,"implemented":true,"kind":"function","modifiers":[],"name":"byteLengthWithFallback","nameLocation":"4036:22:102","nodeType":"FunctionDefinition","parameters":{"id":40242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40239,"mutability":"mutable","name":"value","nameLocation":"4071:5:102","nodeType":"VariableDeclaration","scope":40266,"src":"4059:17:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":40238,"nodeType":"UserDefinedTypeName","pathNode":{"id":40237,"name":"ShortString","nameLocations":["4059:11:102"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"4059:11:102"},"referencedDeclaration":40056,"src":"4059:11:102","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"internal"},{"constant":false,"id":40241,"mutability":"mutable","name":"store","nameLocation":"4093:5:102","nodeType":"VariableDeclaration","scope":40266,"src":"4078:20:102","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":40240,"name":"string","nodeType":"ElementaryTypeName","src":"4078:6:102","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4058:41:102"},"returnParameters":{"id":40245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40266,"src":"4123:7:102","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40243,"name":"uint256","nodeType":"ElementaryTypeName","src":"4123:7:102","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4122:9:102"},"scope":40267,"src":"4027:279:102","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":40268,"src":"1255:3053:102","usedErrors":[40064,40066],"usedEvents":[]}],"src":"106:4203:102"},"id":102},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[40377]},"id":40378,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":40269,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:103"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":40270,"nodeType":"StructuredDocumentation","src":"219:1025:103","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```"},"fullyImplemented":true,"id":40377,"linearizedBaseContracts":[40377],"name":"StorageSlot","nameLocation":"1253:11:103","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":40273,"members":[{"constant":false,"id":40272,"mutability":"mutable","name":"value","nameLocation":"1308:5:103","nodeType":"VariableDeclaration","scope":40273,"src":"1300:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40271,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:103","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1278:11:103","nodeType":"StructDefinition","scope":40377,"src":"1271:49:103","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":40276,"members":[{"constant":false,"id":40275,"mutability":"mutable","name":"value","nameLocation":"1360:5:103","nodeType":"VariableDeclaration","scope":40276,"src":"1355:10:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":40274,"name":"bool","nodeType":"ElementaryTypeName","src":"1355:4:103","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1333:11:103","nodeType":"StructDefinition","scope":40377,"src":"1326:46:103","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":40279,"members":[{"constant":false,"id":40278,"mutability":"mutable","name":"value","nameLocation":"1415:5:103","nodeType":"VariableDeclaration","scope":40279,"src":"1407:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1407:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1385:11:103","nodeType":"StructDefinition","scope":40377,"src":"1378:49:103","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":40282,"members":[{"constant":false,"id":40281,"mutability":"mutable","name":"value","nameLocation":"1470:5:103","nodeType":"VariableDeclaration","scope":40282,"src":"1462:13:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40280,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:103","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1440:11:103","nodeType":"StructDefinition","scope":40377,"src":"1433:49:103","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":40285,"members":[{"constant":false,"id":40284,"mutability":"mutable","name":"value","nameLocation":"1523:5:103","nodeType":"VariableDeclaration","scope":40285,"src":"1516:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":40283,"name":"string","nodeType":"ElementaryTypeName","src":"1516:6:103","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1495:10:103","nodeType":"StructDefinition","scope":40377,"src":"1488:47:103","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":40288,"members":[{"constant":false,"id":40287,"mutability":"mutable","name":"value","nameLocation":"1574:5:103","nodeType":"VariableDeclaration","scope":40288,"src":"1568:11:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":40286,"name":"bytes","nodeType":"ElementaryTypeName","src":"1568:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1548:9:103","nodeType":"StructDefinition","scope":40377,"src":"1541:45:103","visibility":"public"},{"body":{"id":40298,"nodeType":"Block","src":"1768:106:103","statements":[{"AST":{"nativeSrc":"1830:38:103","nodeType":"YulBlock","src":"1830:38:103","statements":[{"nativeSrc":"1844:14:103","nodeType":"YulAssignment","src":"1844:14:103","value":{"name":"slot","nativeSrc":"1854:4:103","nodeType":"YulIdentifier","src":"1854:4:103"},"variableNames":[{"name":"r.slot","nativeSrc":"1844:6:103","nodeType":"YulIdentifier","src":"1844:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40295,"isOffset":false,"isSlot":true,"src":"1844:6:103","suffix":"slot","valueSize":1},{"declaration":40291,"isOffset":false,"isSlot":false,"src":"1854:4:103","valueSize":1}],"id":40297,"nodeType":"InlineAssembly","src":"1821:47:103"}]},"documentation":{"id":40289,"nodeType":"StructuredDocumentation","src":"1592:87:103","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":40299,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1693:14:103","nodeType":"FunctionDefinition","parameters":{"id":40292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40291,"mutability":"mutable","name":"slot","nameLocation":"1716:4:103","nodeType":"VariableDeclaration","scope":40299,"src":"1708:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40290,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1708:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1707:14:103"},"returnParameters":{"id":40296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40295,"mutability":"mutable","name":"r","nameLocation":"1765:1:103","nodeType":"VariableDeclaration","scope":40299,"src":"1745:21:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$40273_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":40294,"nodeType":"UserDefinedTypeName","pathNode":{"id":40293,"name":"AddressSlot","nameLocations":["1745:11:103"],"nodeType":"IdentifierPath","referencedDeclaration":40273,"src":"1745:11:103"},"referencedDeclaration":40273,"src":"1745:11:103","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$40273_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1744:23:103"},"scope":40377,"src":"1684:190:103","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40309,"nodeType":"Block","src":"2056:106:103","statements":[{"AST":{"nativeSrc":"2118:38:103","nodeType":"YulBlock","src":"2118:38:103","statements":[{"nativeSrc":"2132:14:103","nodeType":"YulAssignment","src":"2132:14:103","value":{"name":"slot","nativeSrc":"2142:4:103","nodeType":"YulIdentifier","src":"2142:4:103"},"variableNames":[{"name":"r.slot","nativeSrc":"2132:6:103","nodeType":"YulIdentifier","src":"2132:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40306,"isOffset":false,"isSlot":true,"src":"2132:6:103","suffix":"slot","valueSize":1},{"declaration":40302,"isOffset":false,"isSlot":false,"src":"2142:4:103","valueSize":1}],"id":40308,"nodeType":"InlineAssembly","src":"2109:47:103"}]},"documentation":{"id":40300,"nodeType":"StructuredDocumentation","src":"1880:87:103","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":40310,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1981:14:103","nodeType":"FunctionDefinition","parameters":{"id":40303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40302,"mutability":"mutable","name":"slot","nameLocation":"2004:4:103","nodeType":"VariableDeclaration","scope":40310,"src":"1996:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40301,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1996:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1995:14:103"},"returnParameters":{"id":40307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40306,"mutability":"mutable","name":"r","nameLocation":"2053:1:103","nodeType":"VariableDeclaration","scope":40310,"src":"2033:21:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$40276_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":40305,"nodeType":"UserDefinedTypeName","pathNode":{"id":40304,"name":"BooleanSlot","nameLocations":["2033:11:103"],"nodeType":"IdentifierPath","referencedDeclaration":40276,"src":"2033:11:103"},"referencedDeclaration":40276,"src":"2033:11:103","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$40276_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2032:23:103"},"scope":40377,"src":"1972:190:103","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40320,"nodeType":"Block","src":"2344:106:103","statements":[{"AST":{"nativeSrc":"2406:38:103","nodeType":"YulBlock","src":"2406:38:103","statements":[{"nativeSrc":"2420:14:103","nodeType":"YulAssignment","src":"2420:14:103","value":{"name":"slot","nativeSrc":"2430:4:103","nodeType":"YulIdentifier","src":"2430:4:103"},"variableNames":[{"name":"r.slot","nativeSrc":"2420:6:103","nodeType":"YulIdentifier","src":"2420:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40317,"isOffset":false,"isSlot":true,"src":"2420:6:103","suffix":"slot","valueSize":1},{"declaration":40313,"isOffset":false,"isSlot":false,"src":"2430:4:103","valueSize":1}],"id":40319,"nodeType":"InlineAssembly","src":"2397:47:103"}]},"documentation":{"id":40311,"nodeType":"StructuredDocumentation","src":"2168:87:103","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":40321,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2269:14:103","nodeType":"FunctionDefinition","parameters":{"id":40314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40313,"mutability":"mutable","name":"slot","nameLocation":"2292:4:103","nodeType":"VariableDeclaration","scope":40321,"src":"2284:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40312,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2283:14:103"},"returnParameters":{"id":40318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40317,"mutability":"mutable","name":"r","nameLocation":"2341:1:103","nodeType":"VariableDeclaration","scope":40321,"src":"2321:21:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$40279_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":40316,"nodeType":"UserDefinedTypeName","pathNode":{"id":40315,"name":"Bytes32Slot","nameLocations":["2321:11:103"],"nodeType":"IdentifierPath","referencedDeclaration":40279,"src":"2321:11:103"},"referencedDeclaration":40279,"src":"2321:11:103","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$40279_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2320:23:103"},"scope":40377,"src":"2260:190:103","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40331,"nodeType":"Block","src":"2632:106:103","statements":[{"AST":{"nativeSrc":"2694:38:103","nodeType":"YulBlock","src":"2694:38:103","statements":[{"nativeSrc":"2708:14:103","nodeType":"YulAssignment","src":"2708:14:103","value":{"name":"slot","nativeSrc":"2718:4:103","nodeType":"YulIdentifier","src":"2718:4:103"},"variableNames":[{"name":"r.slot","nativeSrc":"2708:6:103","nodeType":"YulIdentifier","src":"2708:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40328,"isOffset":false,"isSlot":true,"src":"2708:6:103","suffix":"slot","valueSize":1},{"declaration":40324,"isOffset":false,"isSlot":false,"src":"2718:4:103","valueSize":1}],"id":40330,"nodeType":"InlineAssembly","src":"2685:47:103"}]},"documentation":{"id":40322,"nodeType":"StructuredDocumentation","src":"2456:87:103","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":40332,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2557:14:103","nodeType":"FunctionDefinition","parameters":{"id":40325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40324,"mutability":"mutable","name":"slot","nameLocation":"2580:4:103","nodeType":"VariableDeclaration","scope":40332,"src":"2572:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2572:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2571:14:103"},"returnParameters":{"id":40329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40328,"mutability":"mutable","name":"r","nameLocation":"2629:1:103","nodeType":"VariableDeclaration","scope":40332,"src":"2609:21:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$40282_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":40327,"nodeType":"UserDefinedTypeName","pathNode":{"id":40326,"name":"Uint256Slot","nameLocations":["2609:11:103"],"nodeType":"IdentifierPath","referencedDeclaration":40282,"src":"2609:11:103"},"referencedDeclaration":40282,"src":"2609:11:103","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$40282_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2608:23:103"},"scope":40377,"src":"2548:190:103","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40342,"nodeType":"Block","src":"2917:106:103","statements":[{"AST":{"nativeSrc":"2979:38:103","nodeType":"YulBlock","src":"2979:38:103","statements":[{"nativeSrc":"2993:14:103","nodeType":"YulAssignment","src":"2993:14:103","value":{"name":"slot","nativeSrc":"3003:4:103","nodeType":"YulIdentifier","src":"3003:4:103"},"variableNames":[{"name":"r.slot","nativeSrc":"2993:6:103","nodeType":"YulIdentifier","src":"2993:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40339,"isOffset":false,"isSlot":true,"src":"2993:6:103","suffix":"slot","valueSize":1},{"declaration":40335,"isOffset":false,"isSlot":false,"src":"3003:4:103","valueSize":1}],"id":40341,"nodeType":"InlineAssembly","src":"2970:47:103"}]},"documentation":{"id":40333,"nodeType":"StructuredDocumentation","src":"2744:86:103","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":40343,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"2844:13:103","nodeType":"FunctionDefinition","parameters":{"id":40336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40335,"mutability":"mutable","name":"slot","nameLocation":"2866:4:103","nodeType":"VariableDeclaration","scope":40343,"src":"2858:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40334,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2858:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2857:14:103"},"returnParameters":{"id":40340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40339,"mutability":"mutable","name":"r","nameLocation":"2914:1:103","nodeType":"VariableDeclaration","scope":40343,"src":"2895:20:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$40285_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":40338,"nodeType":"UserDefinedTypeName","pathNode":{"id":40337,"name":"StringSlot","nameLocations":["2895:10:103"],"nodeType":"IdentifierPath","referencedDeclaration":40285,"src":"2895:10:103"},"referencedDeclaration":40285,"src":"2895:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$40285_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"2894:22:103"},"scope":40377,"src":"2835:188:103","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40353,"nodeType":"Block","src":"3225:112:103","statements":[{"AST":{"nativeSrc":"3287:44:103","nodeType":"YulBlock","src":"3287:44:103","statements":[{"nativeSrc":"3301:20:103","nodeType":"YulAssignment","src":"3301:20:103","value":{"name":"store.slot","nativeSrc":"3311:10:103","nodeType":"YulIdentifier","src":"3311:10:103"},"variableNames":[{"name":"r.slot","nativeSrc":"3301:6:103","nodeType":"YulIdentifier","src":"3301:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40350,"isOffset":false,"isSlot":true,"src":"3301:6:103","suffix":"slot","valueSize":1},{"declaration":40346,"isOffset":false,"isSlot":true,"src":"3311:10:103","suffix":"slot","valueSize":1}],"id":40352,"nodeType":"InlineAssembly","src":"3278:53:103"}]},"documentation":{"id":40344,"nodeType":"StructuredDocumentation","src":"3029:101:103","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":40354,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3144:13:103","nodeType":"FunctionDefinition","parameters":{"id":40347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40346,"mutability":"mutable","name":"store","nameLocation":"3173:5:103","nodeType":"VariableDeclaration","scope":40354,"src":"3158:20:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":40345,"name":"string","nodeType":"ElementaryTypeName","src":"3158:6:103","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3157:22:103"},"returnParameters":{"id":40351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40350,"mutability":"mutable","name":"r","nameLocation":"3222:1:103","nodeType":"VariableDeclaration","scope":40354,"src":"3203:20:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$40285_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":40349,"nodeType":"UserDefinedTypeName","pathNode":{"id":40348,"name":"StringSlot","nameLocations":["3203:10:103"],"nodeType":"IdentifierPath","referencedDeclaration":40285,"src":"3203:10:103"},"referencedDeclaration":40285,"src":"3203:10:103","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$40285_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3202:22:103"},"scope":40377,"src":"3135:202:103","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40364,"nodeType":"Block","src":"3513:106:103","statements":[{"AST":{"nativeSrc":"3575:38:103","nodeType":"YulBlock","src":"3575:38:103","statements":[{"nativeSrc":"3589:14:103","nodeType":"YulAssignment","src":"3589:14:103","value":{"name":"slot","nativeSrc":"3599:4:103","nodeType":"YulIdentifier","src":"3599:4:103"},"variableNames":[{"name":"r.slot","nativeSrc":"3589:6:103","nodeType":"YulIdentifier","src":"3589:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40361,"isOffset":false,"isSlot":true,"src":"3589:6:103","suffix":"slot","valueSize":1},{"declaration":40357,"isOffset":false,"isSlot":false,"src":"3599:4:103","valueSize":1}],"id":40363,"nodeType":"InlineAssembly","src":"3566:47:103"}]},"documentation":{"id":40355,"nodeType":"StructuredDocumentation","src":"3343:85:103","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":40365,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3442:12:103","nodeType":"FunctionDefinition","parameters":{"id":40358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40357,"mutability":"mutable","name":"slot","nameLocation":"3463:4:103","nodeType":"VariableDeclaration","scope":40365,"src":"3455:12:103","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3455:7:103","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3454:14:103"},"returnParameters":{"id":40362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40361,"mutability":"mutable","name":"r","nameLocation":"3510:1:103","nodeType":"VariableDeclaration","scope":40365,"src":"3492:19:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$40288_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":40360,"nodeType":"UserDefinedTypeName","pathNode":{"id":40359,"name":"BytesSlot","nameLocations":["3492:9:103"],"nodeType":"IdentifierPath","referencedDeclaration":40288,"src":"3492:9:103"},"referencedDeclaration":40288,"src":"3492:9:103","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$40288_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3491:21:103"},"scope":40377,"src":"3433:186:103","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40375,"nodeType":"Block","src":"3816:112:103","statements":[{"AST":{"nativeSrc":"3878:44:103","nodeType":"YulBlock","src":"3878:44:103","statements":[{"nativeSrc":"3892:20:103","nodeType":"YulAssignment","src":"3892:20:103","value":{"name":"store.slot","nativeSrc":"3902:10:103","nodeType":"YulIdentifier","src":"3902:10:103"},"variableNames":[{"name":"r.slot","nativeSrc":"3892:6:103","nodeType":"YulIdentifier","src":"3892:6:103"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40372,"isOffset":false,"isSlot":true,"src":"3892:6:103","suffix":"slot","valueSize":1},{"declaration":40368,"isOffset":false,"isSlot":true,"src":"3902:10:103","suffix":"slot","valueSize":1}],"id":40374,"nodeType":"InlineAssembly","src":"3869:53:103"}]},"documentation":{"id":40366,"nodeType":"StructuredDocumentation","src":"3625:99:103","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":40376,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3738:12:103","nodeType":"FunctionDefinition","parameters":{"id":40369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40368,"mutability":"mutable","name":"store","nameLocation":"3765:5:103","nodeType":"VariableDeclaration","scope":40376,"src":"3751:19:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":40367,"name":"bytes","nodeType":"ElementaryTypeName","src":"3751:5:103","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3750:21:103"},"returnParameters":{"id":40373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40372,"mutability":"mutable","name":"r","nameLocation":"3813:1:103","nodeType":"VariableDeclaration","scope":40376,"src":"3795:19:103","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$40288_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":40371,"nodeType":"UserDefinedTypeName","pathNode":{"id":40370,"name":"BytesSlot","nameLocations":["3795:9:103"],"nodeType":"IdentifierPath","referencedDeclaration":40288,"src":"3795:9:103"},"referencedDeclaration":40288,"src":"3795:9:103","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$40288_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3794:21:103"},"scope":40377,"src":"3729:199:103","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":40378,"src":"1245:2685:103","usedErrors":[],"usedEvents":[]}],"src":"193:3738:103"},"id":103},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[42371],"SignedMath":[44231],"Strings":[40632]},"id":40633,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":40379,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:104"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":40381,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":40633,"sourceUnit":42372,"src":"127:37:104","symbolAliases":[{"foreign":{"id":40380,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42371,"src":"135:4:104","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":40383,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":40633,"sourceUnit":44232,"src":"165:49:104","symbolAliases":[{"foreign":{"id":40382,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44231,"src":"173:10:104","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":40384,"nodeType":"StructuredDocumentation","src":"216:34:104","text":" @dev String operations."},"fullyImplemented":true,"id":40632,"linearizedBaseContracts":[40632],"name":"Strings","nameLocation":"259:7:104","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":40387,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"298:10:104","nodeType":"VariableDeclaration","scope":40632,"src":"273:56:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":40385,"name":"bytes16","nodeType":"ElementaryTypeName","src":"273:7:104","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":40386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":40390,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"358:14:104","nodeType":"VariableDeclaration","scope":40632,"src":"335:42:104","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":40388,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:104","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":40389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"375:2:104","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"documentation":{"id":40391,"nodeType":"StructuredDocumentation","src":"384:81:104","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":40397,"name":"StringsInsufficientHexLength","nameLocation":"476:28:104","nodeType":"ErrorDefinition","parameters":{"id":40396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40393,"mutability":"mutable","name":"value","nameLocation":"513:5:104","nodeType":"VariableDeclaration","scope":40397,"src":"505:13:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40392,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":40395,"mutability":"mutable","name":"length","nameLocation":"528:6:104","nodeType":"VariableDeclaration","scope":40397,"src":"520:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40394,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:31:104"},"src":"470:66:104"},{"body":{"id":40444,"nodeType":"Block","src":"708:627:104","statements":[{"id":40443,"nodeType":"UncheckedBlock","src":"718:611:104","statements":[{"assignments":[40406],"declarations":[{"constant":false,"id":40406,"mutability":"mutable","name":"length","nameLocation":"750:6:104","nodeType":"VariableDeclaration","scope":40443,"src":"742:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40405,"name":"uint256","nodeType":"ElementaryTypeName","src":"742:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":40413,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":40409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40400,"src":"770:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":40407,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42371,"src":"759:4:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$42371_$","typeString":"type(library Math)"}},"id":40408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"764:5:104","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":42191,"src":"759:10:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":40410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"759:17:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":40411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"779:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"759:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"742:38:104"},{"assignments":[40415],"declarations":[{"constant":false,"id":40415,"mutability":"mutable","name":"buffer","nameLocation":"808:6:104","nodeType":"VariableDeclaration","scope":40443,"src":"794:20:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40414,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":40420,"initialValue":{"arguments":[{"id":40418,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40406,"src":"828:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"817:10:104","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":40416,"name":"string","nodeType":"ElementaryTypeName","src":"821:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":40419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"817:18:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"794:41:104"},{"assignments":[40422],"declarations":[{"constant":false,"id":40422,"mutability":"mutable","name":"ptr","nameLocation":"857:3:104","nodeType":"VariableDeclaration","scope":40443,"src":"849:11:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40421,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":40423,"nodeType":"VariableDeclarationStatement","src":"849:11:104"},{"AST":{"nativeSrc":"930:67:104","nodeType":"YulBlock","src":"930:67:104","statements":[{"nativeSrc":"948:35:104","nodeType":"YulAssignment","src":"948:35:104","value":{"arguments":[{"name":"buffer","nativeSrc":"959:6:104","nodeType":"YulIdentifier","src":"959:6:104"},{"arguments":[{"kind":"number","nativeSrc":"971:2:104","nodeType":"YulLiteral","src":"971:2:104","type":"","value":"32"},{"name":"length","nativeSrc":"975:6:104","nodeType":"YulIdentifier","src":"975:6:104"}],"functionName":{"name":"add","nativeSrc":"967:3:104","nodeType":"YulIdentifier","src":"967:3:104"},"nativeSrc":"967:15:104","nodeType":"YulFunctionCall","src":"967:15:104"}],"functionName":{"name":"add","nativeSrc":"955:3:104","nodeType":"YulIdentifier","src":"955:3:104"},"nativeSrc":"955:28:104","nodeType":"YulFunctionCall","src":"955:28:104"},"variableNames":[{"name":"ptr","nativeSrc":"948:3:104","nodeType":"YulIdentifier","src":"948:3:104"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40415,"isOffset":false,"isSlot":false,"src":"959:6:104","valueSize":1},{"declaration":40406,"isOffset":false,"isSlot":false,"src":"975:6:104","valueSize":1},{"declaration":40422,"isOffset":false,"isSlot":false,"src":"948:3:104","valueSize":1}],"id":40424,"nodeType":"InlineAssembly","src":"921:76:104"},{"body":{"id":40439,"nodeType":"Block","src":"1023:269:104","statements":[{"expression":{"id":40427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1041:5:104","subExpression":{"id":40426,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40422,"src":"1041:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":40428,"nodeType":"ExpressionStatement","src":"1041:5:104"},{"AST":{"nativeSrc":"1124:86:104","nodeType":"YulBlock","src":"1124:86:104","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1154:3:104","nodeType":"YulIdentifier","src":"1154:3:104"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1168:5:104","nodeType":"YulIdentifier","src":"1168:5:104"},{"kind":"number","nativeSrc":"1175:2:104","nodeType":"YulLiteral","src":"1175:2:104","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1164:3:104","nodeType":"YulIdentifier","src":"1164:3:104"},"nativeSrc":"1164:14:104","nodeType":"YulFunctionCall","src":"1164:14:104"},{"name":"HEX_DIGITS","nativeSrc":"1180:10:104","nodeType":"YulIdentifier","src":"1180:10:104"}],"functionName":{"name":"byte","nativeSrc":"1159:4:104","nodeType":"YulIdentifier","src":"1159:4:104"},"nativeSrc":"1159:32:104","nodeType":"YulFunctionCall","src":"1159:32:104"}],"functionName":{"name":"mstore8","nativeSrc":"1146:7:104","nodeType":"YulIdentifier","src":"1146:7:104"},"nativeSrc":"1146:46:104","nodeType":"YulFunctionCall","src":"1146:46:104"},"nativeSrc":"1146:46:104","nodeType":"YulExpressionStatement","src":"1146:46:104"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40387,"isOffset":false,"isSlot":false,"src":"1180:10:104","valueSize":1},{"declaration":40422,"isOffset":false,"isSlot":false,"src":"1154:3:104","valueSize":1},{"declaration":40400,"isOffset":false,"isSlot":false,"src":"1168:5:104","valueSize":1}],"id":40429,"nodeType":"InlineAssembly","src":"1115:95:104"},{"expression":{"id":40432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":40430,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40400,"src":"1227:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":40431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:2:104","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1227:11:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":40433,"nodeType":"ExpressionStatement","src":"1227:11:104"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40400,"src":"1260:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":40435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1269:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1260:10:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40438,"nodeType":"IfStatement","src":"1256:21:104","trueBody":{"id":40437,"nodeType":"Break","src":"1272:5:104"}}]},"condition":{"hexValue":"74727565","id":40425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1017:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":40440,"nodeType":"WhileStatement","src":"1010:282:104"},{"expression":{"id":40441,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40415,"src":"1312:6:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":40404,"id":40442,"nodeType":"Return","src":"1305:13:104"}]}]},"documentation":{"id":40398,"nodeType":"StructuredDocumentation","src":"542:90:104","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":40445,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"646:8:104","nodeType":"FunctionDefinition","parameters":{"id":40401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40400,"mutability":"mutable","name":"value","nameLocation":"663:5:104","nodeType":"VariableDeclaration","scope":40445,"src":"655:13:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40399,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:15:104"},"returnParameters":{"id":40404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40445,"src":"693:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40402,"name":"string","nodeType":"ElementaryTypeName","src":"693:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"692:15:104"},"scope":40632,"src":"637:698:104","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40470,"nodeType":"Block","src":"1511:92:104","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":40458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40456,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40448,"src":"1542:5:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":40457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1550:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1542:9:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":40460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1560:2:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":40461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1542:20:104","trueExpression":{"hexValue":"2d","id":40459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1554:3:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":40465,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40448,"src":"1588:5:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":40463,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44231,"src":"1573:10:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$44231_$","typeString":"type(library SignedMath)"}},"id":40464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:3:104","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":44230,"src":"1573:14:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":40466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:21:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40462,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40445,"src":"1564:8:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":40467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:31:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":40454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:6:104","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":40453,"name":"string","nodeType":"ElementaryTypeName","src":"1528:6:104","typeDescriptions":{}}},"id":40455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1535:6:104","memberName":"concat","nodeType":"MemberAccess","src":"1528:13:104","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":40468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:68:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":40452,"id":40469,"nodeType":"Return","src":"1521:75:104"}]},"documentation":{"id":40446,"nodeType":"StructuredDocumentation","src":"1341:89:104","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":40471,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1444:14:104","nodeType":"FunctionDefinition","parameters":{"id":40449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40448,"mutability":"mutable","name":"value","nameLocation":"1466:5:104","nodeType":"VariableDeclaration","scope":40471,"src":"1459:12:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":40447,"name":"int256","nodeType":"ElementaryTypeName","src":"1459:6:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1458:14:104"},"returnParameters":{"id":40452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40471,"src":"1496:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40450,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1495:15:104"},"scope":40632,"src":"1435:168:104","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40490,"nodeType":"Block","src":"1782:100:104","statements":[{"id":40489,"nodeType":"UncheckedBlock","src":"1792:84:104","statements":[{"expression":{"arguments":[{"id":40480,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40474,"src":"1835:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":40483,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40474,"src":"1854:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":40481,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42371,"src":"1842:4:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$42371_$","typeString":"type(library Math)"}},"id":40482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1847:6:104","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":42313,"src":"1842:11:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":40484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1842:18:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":40485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1842:22:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40479,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[40491,40574,40594],"referencedDeclaration":40574,"src":"1823:11:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":40487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:42:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":40478,"id":40488,"nodeType":"Return","src":"1816:49:104"}]}]},"documentation":{"id":40472,"nodeType":"StructuredDocumentation","src":"1609:94:104","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":40491,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1717:11:104","nodeType":"FunctionDefinition","parameters":{"id":40475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40474,"mutability":"mutable","name":"value","nameLocation":"1737:5:104","nodeType":"VariableDeclaration","scope":40491,"src":"1729:13:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:15:104"},"returnParameters":{"id":40478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40491,"src":"1767:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40476,"name":"string","nodeType":"ElementaryTypeName","src":"1767:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1766:15:104"},"scope":40632,"src":"1708:174:104","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40573,"nodeType":"Block","src":"2095:435:104","statements":[{"assignments":[40502],"declarations":[{"constant":false,"id":40502,"mutability":"mutable","name":"localValue","nameLocation":"2113:10:104","nodeType":"VariableDeclaration","scope":40573,"src":"2105:18:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40501,"name":"uint256","nodeType":"ElementaryTypeName","src":"2105:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":40504,"initialValue":{"id":40503,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40494,"src":"2126:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2105:26:104"},{"assignments":[40506],"declarations":[{"constant":false,"id":40506,"mutability":"mutable","name":"buffer","nameLocation":"2154:6:104","nodeType":"VariableDeclaration","scope":40573,"src":"2141:19:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":40505,"name":"bytes","nodeType":"ElementaryTypeName","src":"2141:5:104","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":40515,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":40509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2173:1:104","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":40510,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40496,"src":"2177:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2173:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":40512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2186:1:104","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2173:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2163:9:104","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":40507,"name":"bytes","nodeType":"ElementaryTypeName","src":"2167:5:104","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":40514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2163:25:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2141:47:104"},{"expression":{"id":40520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":40516,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40506,"src":"2198:6:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40518,"indexExpression":{"hexValue":"30","id":40517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2205:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2198:9:104","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":40519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2210:3:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2198:15:104","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":40521,"nodeType":"ExpressionStatement","src":"2198:15:104"},{"expression":{"id":40526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":40522,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40506,"src":"2223:6:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40524,"indexExpression":{"hexValue":"31","id":40523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2230:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2223:9:104","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":40525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2235:3:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2223:15:104","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":40527,"nodeType":"ExpressionStatement","src":"2223:15:104"},{"body":{"id":40556,"nodeType":"Block","src":"2293:95:104","statements":[{"expression":{"id":40550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":40542,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40506,"src":"2307:6:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40544,"indexExpression":{"id":40543,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40529,"src":"2314:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2307:9:104","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":40545,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40387,"src":"2319:10:104","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":40549,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40546,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40502,"src":"2330:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":40547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2343:3:104","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2330:16:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2319:28:104","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2307:40:104","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":40551,"nodeType":"ExpressionStatement","src":"2307:40:104"},{"expression":{"id":40554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":40552,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40502,"src":"2361:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":40553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:104","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2361:16:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":40555,"nodeType":"ExpressionStatement","src":"2361:16:104"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40536,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40529,"src":"2281:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":40537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2285:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2281:5:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40557,"initializationExpression":{"assignments":[40529],"declarations":[{"constant":false,"id":40529,"mutability":"mutable","name":"i","nameLocation":"2261:1:104","nodeType":"VariableDeclaration","scope":40557,"src":"2253:9:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40528,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":40535,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":40530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2265:1:104","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":40531,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40496,"src":"2269:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2265:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":40533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2278:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2265:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2253:26:104"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":40540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2288:3:104","subExpression":{"id":40539,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40529,"src":"2290:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":40541,"nodeType":"ExpressionStatement","src":"2288:3:104"},"nodeType":"ForStatement","src":"2248:140:104"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40558,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40502,"src":"2401:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":40559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2401:15:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40567,"nodeType":"IfStatement","src":"2397:96:104","trueBody":{"id":40566,"nodeType":"Block","src":"2418:75:104","statements":[{"errorCall":{"arguments":[{"id":40562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40494,"src":"2468:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":40563,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40496,"src":"2475:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40561,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40397,"src":"2439:28:104","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":40564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2439:43:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":40565,"nodeType":"RevertStatement","src":"2432:50:104"}]}},{"expression":{"arguments":[{"id":40570,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40506,"src":"2516:6:104","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":40569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:6:104","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":40568,"name":"string","nodeType":"ElementaryTypeName","src":"2509:6:104","typeDescriptions":{}}},"id":40571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:14:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":40500,"id":40572,"nodeType":"Return","src":"2502:21:104"}]},"documentation":{"id":40492,"nodeType":"StructuredDocumentation","src":"1888:112:104","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":40574,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2014:11:104","nodeType":"FunctionDefinition","parameters":{"id":40497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40494,"mutability":"mutable","name":"value","nameLocation":"2034:5:104","nodeType":"VariableDeclaration","scope":40574,"src":"2026:13:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40493,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":40496,"mutability":"mutable","name":"length","nameLocation":"2049:6:104","nodeType":"VariableDeclaration","scope":40574,"src":"2041:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40495,"name":"uint256","nodeType":"ElementaryTypeName","src":"2041:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2025:31:104"},"returnParameters":{"id":40500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40574,"src":"2080:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40498,"name":"string","nodeType":"ElementaryTypeName","src":"2080:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2079:15:104"},"scope":40632,"src":"2005:525:104","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40593,"nodeType":"Block","src":"2762:75:104","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":40587,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40577,"src":"2807:4:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":40586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2799:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":40585,"name":"uint160","nodeType":"ElementaryTypeName","src":"2799:7:104","typeDescriptions":{}}},"id":40588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:13:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":40584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2791:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":40583,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:104","typeDescriptions":{}}},"id":40589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:22:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":40590,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40390,"src":"2815:14:104","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":40582,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[40491,40574,40594],"referencedDeclaration":40574,"src":"2779:11:104","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":40591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:51:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":40581,"id":40592,"nodeType":"Return","src":"2772:58:104"}]},"documentation":{"id":40575,"nodeType":"StructuredDocumentation","src":"2536:148:104","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":40594,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2698:11:104","nodeType":"FunctionDefinition","parameters":{"id":40578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40577,"mutability":"mutable","name":"addr","nameLocation":"2718:4:104","nodeType":"VariableDeclaration","scope":40594,"src":"2710:12:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40576,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2709:14:104"},"returnParameters":{"id":40581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40580,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40594,"src":"2747:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40579,"name":"string","nodeType":"ElementaryTypeName","src":"2747:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2746:15:104"},"scope":40632,"src":"2689:148:104","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40630,"nodeType":"Block","src":"2992:104:104","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":40628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":40606,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40597,"src":"3015:1:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:5:104","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":40604,"name":"bytes","nodeType":"ElementaryTypeName","src":"3009:5:104","typeDescriptions":{}}},"id":40607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:8:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3018:6:104","memberName":"length","nodeType":"MemberAccess","src":"3009:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":40611,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40599,"src":"3034:1:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3028:5:104","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":40609,"name":"bytes","nodeType":"ElementaryTypeName","src":"3028:5:104","typeDescriptions":{}}},"id":40612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:8:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3037:6:104","memberName":"length","nodeType":"MemberAccess","src":"3028:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3009:34:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":40627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":40618,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40597,"src":"3063:1:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3057:5:104","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":40616,"name":"bytes","nodeType":"ElementaryTypeName","src":"3057:5:104","typeDescriptions":{}}},"id":40619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:8:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":40615,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3047:9:104","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":40620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:19:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":40624,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40599,"src":"3086:1:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":40623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:5:104","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":40622,"name":"bytes","nodeType":"ElementaryTypeName","src":"3080:5:104","typeDescriptions":{}}},"id":40625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:8:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":40621,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3070:9:104","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":40626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:19:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3047:42:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3009:80:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":40603,"id":40629,"nodeType":"Return","src":"3002:87:104"}]},"documentation":{"id":40595,"nodeType":"StructuredDocumentation","src":"2843:66:104","text":" @dev Returns true if the two strings are equal."},"id":40631,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2923:5:104","nodeType":"FunctionDefinition","parameters":{"id":40600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40597,"mutability":"mutable","name":"a","nameLocation":"2943:1:104","nodeType":"VariableDeclaration","scope":40631,"src":"2929:15:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40596,"name":"string","nodeType":"ElementaryTypeName","src":"2929:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":40599,"mutability":"mutable","name":"b","nameLocation":"2960:1:104","nodeType":"VariableDeclaration","scope":40631,"src":"2946:15:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":40598,"name":"string","nodeType":"ElementaryTypeName","src":"2946:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2928:34:104"},"returnParameters":{"id":40603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40631,"src":"2986:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":40601,"name":"bool","nodeType":"ElementaryTypeName","src":"2986:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2985:6:104"},"scope":40632,"src":"2914:182:104","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":40633,"src":"251:2847:104","usedErrors":[40397],"usedEvents":[]}],"src":"101:2998:104"},"id":104},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[40980]},"id":40981,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":40634,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:105"},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":40635,"nodeType":"StructuredDocumentation","src":"138:205:105","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":40980,"linearizedBaseContracts":[40980],"name":"ECDSA","nameLocation":"352:5:105","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSA.RecoverError","id":40640,"members":[{"id":40636,"name":"NoError","nameLocation":"392:7:105","nodeType":"EnumValue","src":"392:7:105"},{"id":40637,"name":"InvalidSignature","nameLocation":"409:16:105","nodeType":"EnumValue","src":"409:16:105"},{"id":40638,"name":"InvalidSignatureLength","nameLocation":"435:22:105","nodeType":"EnumValue","src":"435:22:105"},{"id":40639,"name":"InvalidSignatureS","nameLocation":"467:17:105","nodeType":"EnumValue","src":"467:17:105"}],"name":"RecoverError","nameLocation":"369:12:105","nodeType":"EnumDefinition","src":"364:126:105"},{"documentation":{"id":40641,"nodeType":"StructuredDocumentation","src":"496:63:105","text":" @dev The signature derives the `address(0)`."},"errorSelector":"f645eedf","id":40643,"name":"ECDSAInvalidSignature","nameLocation":"570:21:105","nodeType":"ErrorDefinition","parameters":{"id":40642,"nodeType":"ParameterList","parameters":[],"src":"591:2:105"},"src":"564:30:105"},{"documentation":{"id":40644,"nodeType":"StructuredDocumentation","src":"600:60:105","text":" @dev The signature has an invalid length."},"errorSelector":"fce698f7","id":40648,"name":"ECDSAInvalidSignatureLength","nameLocation":"671:27:105","nodeType":"ErrorDefinition","parameters":{"id":40647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40646,"mutability":"mutable","name":"length","nameLocation":"707:6:105","nodeType":"VariableDeclaration","scope":40648,"src":"699:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40645,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"698:16:105"},"src":"665:50:105"},{"documentation":{"id":40649,"nodeType":"StructuredDocumentation","src":"721:85:105","text":" @dev The signature has an S value that is in the upper half order."},"errorSelector":"d78bce0c","id":40653,"name":"ECDSAInvalidSignatureS","nameLocation":"817:22:105","nodeType":"ErrorDefinition","parameters":{"id":40652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40651,"mutability":"mutable","name":"s","nameLocation":"848:1:105","nodeType":"VariableDeclaration","scope":40653,"src":"840:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40650,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"839:11:105"},"src":"811:40:105"},{"body":{"id":40705,"nodeType":"Block","src":"2242:653:105","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":40668,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40658,"src":"2256:9:105","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2266:6:105","memberName":"length","nodeType":"MemberAccess","src":"2256:16:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":40670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2276:2:105","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2256:22:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":40703,"nodeType":"Block","src":"2781:108:105","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":40692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2811:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":40691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2803:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":40690,"name":"address","nodeType":"ElementaryTypeName","src":"2803:7:105","typeDescriptions":{}}},"id":40693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2803:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":40694,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"2815:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2828:22:105","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":40638,"src":"2815:35:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"expression":{"id":40698,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40658,"src":"2860:9:105","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":40699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2870:6:105","memberName":"length","nodeType":"MemberAccess","src":"2860:16:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2852:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":40696,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2852:7:105","typeDescriptions":{}}},"id":40700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2852:25:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":40701,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2802:76:105","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":40667,"id":40702,"nodeType":"Return","src":"2795:83:105"}]},"id":40704,"nodeType":"IfStatement","src":"2252:637:105","trueBody":{"id":40689,"nodeType":"Block","src":"2280:495:105","statements":[{"assignments":[40673],"declarations":[{"constant":false,"id":40673,"mutability":"mutable","name":"r","nameLocation":"2302:1:105","nodeType":"VariableDeclaration","scope":40689,"src":"2294:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2294:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":40674,"nodeType":"VariableDeclarationStatement","src":"2294:9:105"},{"assignments":[40676],"declarations":[{"constant":false,"id":40676,"mutability":"mutable","name":"s","nameLocation":"2325:1:105","nodeType":"VariableDeclaration","scope":40689,"src":"2317:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40675,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":40677,"nodeType":"VariableDeclarationStatement","src":"2317:9:105"},{"assignments":[40679],"declarations":[{"constant":false,"id":40679,"mutability":"mutable","name":"v","nameLocation":"2346:1:105","nodeType":"VariableDeclaration","scope":40689,"src":"2340:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":40678,"name":"uint8","nodeType":"ElementaryTypeName","src":"2340:5:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":40680,"nodeType":"VariableDeclarationStatement","src":"2340:7:105"},{"AST":{"nativeSrc":"2548:171:105","nodeType":"YulBlock","src":"2548:171:105","statements":[{"nativeSrc":"2566:32:105","nodeType":"YulAssignment","src":"2566:32:105","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2581:9:105","nodeType":"YulIdentifier","src":"2581:9:105"},{"kind":"number","nativeSrc":"2592:4:105","nodeType":"YulLiteral","src":"2592:4:105","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2577:3:105","nodeType":"YulIdentifier","src":"2577:3:105"},"nativeSrc":"2577:20:105","nodeType":"YulFunctionCall","src":"2577:20:105"}],"functionName":{"name":"mload","nativeSrc":"2571:5:105","nodeType":"YulIdentifier","src":"2571:5:105"},"nativeSrc":"2571:27:105","nodeType":"YulFunctionCall","src":"2571:27:105"},"variableNames":[{"name":"r","nativeSrc":"2566:1:105","nodeType":"YulIdentifier","src":"2566:1:105"}]},{"nativeSrc":"2615:32:105","nodeType":"YulAssignment","src":"2615:32:105","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2630:9:105","nodeType":"YulIdentifier","src":"2630:9:105"},{"kind":"number","nativeSrc":"2641:4:105","nodeType":"YulLiteral","src":"2641:4:105","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2626:3:105","nodeType":"YulIdentifier","src":"2626:3:105"},"nativeSrc":"2626:20:105","nodeType":"YulFunctionCall","src":"2626:20:105"}],"functionName":{"name":"mload","nativeSrc":"2620:5:105","nodeType":"YulIdentifier","src":"2620:5:105"},"nativeSrc":"2620:27:105","nodeType":"YulFunctionCall","src":"2620:27:105"},"variableNames":[{"name":"s","nativeSrc":"2615:1:105","nodeType":"YulIdentifier","src":"2615:1:105"}]},{"nativeSrc":"2664:41:105","nodeType":"YulAssignment","src":"2664:41:105","value":{"arguments":[{"kind":"number","nativeSrc":"2674:1:105","nodeType":"YulLiteral","src":"2674:1:105","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2687:9:105","nodeType":"YulIdentifier","src":"2687:9:105"},{"kind":"number","nativeSrc":"2698:4:105","nodeType":"YulLiteral","src":"2698:4:105","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2683:3:105","nodeType":"YulIdentifier","src":"2683:3:105"},"nativeSrc":"2683:20:105","nodeType":"YulFunctionCall","src":"2683:20:105"}],"functionName":{"name":"mload","nativeSrc":"2677:5:105","nodeType":"YulIdentifier","src":"2677:5:105"},"nativeSrc":"2677:27:105","nodeType":"YulFunctionCall","src":"2677:27:105"}],"functionName":{"name":"byte","nativeSrc":"2669:4:105","nodeType":"YulIdentifier","src":"2669:4:105"},"nativeSrc":"2669:36:105","nodeType":"YulFunctionCall","src":"2669:36:105"},"variableNames":[{"name":"v","nativeSrc":"2664:1:105","nodeType":"YulIdentifier","src":"2664:1:105"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":40673,"isOffset":false,"isSlot":false,"src":"2566:1:105","valueSize":1},{"declaration":40676,"isOffset":false,"isSlot":false,"src":"2615:1:105","valueSize":1},{"declaration":40658,"isOffset":false,"isSlot":false,"src":"2581:9:105","valueSize":1},{"declaration":40658,"isOffset":false,"isSlot":false,"src":"2630:9:105","valueSize":1},{"declaration":40658,"isOffset":false,"isSlot":false,"src":"2687:9:105","valueSize":1},{"declaration":40679,"isOffset":false,"isSlot":false,"src":"2664:1:105","valueSize":1}],"id":40681,"nodeType":"InlineAssembly","src":"2539:180:105"},{"expression":{"arguments":[{"id":40683,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40656,"src":"2750:4:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40684,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40679,"src":"2756:1:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":40685,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40673,"src":"2759:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40686,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40676,"src":"2762:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40682,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[40706,40786,40894],"referencedDeclaration":40894,"src":"2739:10:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":40687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:25:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":40667,"id":40688,"nodeType":"Return","src":"2732:32:105"}]}}]},"documentation":{"id":40654,"nodeType":"StructuredDocumentation","src":"857:1267:105","text":" @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]"},"id":40706,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2138:10:105","nodeType":"FunctionDefinition","parameters":{"id":40659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40656,"mutability":"mutable","name":"hash","nameLocation":"2157:4:105","nodeType":"VariableDeclaration","scope":40706,"src":"2149:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40655,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2149:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40658,"mutability":"mutable","name":"signature","nameLocation":"2176:9:105","nodeType":"VariableDeclaration","scope":40706,"src":"2163:22:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":40657,"name":"bytes","nodeType":"ElementaryTypeName","src":"2163:5:105","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2148:38:105"},"returnParameters":{"id":40667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40706,"src":"2210:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40660,"name":"address","nodeType":"ElementaryTypeName","src":"2210:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40706,"src":"2219:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":40663,"nodeType":"UserDefinedTypeName","pathNode":{"id":40662,"name":"RecoverError","nameLocations":["2219:12:105"],"nodeType":"IdentifierPath","referencedDeclaration":40640,"src":"2219:12:105"},"referencedDeclaration":40640,"src":"2219:12:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":40666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40706,"src":"2233:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2233:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2209:32:105"},"scope":40980,"src":"2129:766:105","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40735,"nodeType":"Block","src":"3789:168:105","statements":[{"assignments":[40717,40720,40722],"declarations":[{"constant":false,"id":40717,"mutability":"mutable","name":"recovered","nameLocation":"3808:9:105","nodeType":"VariableDeclaration","scope":40735,"src":"3800:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40716,"name":"address","nodeType":"ElementaryTypeName","src":"3800:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40720,"mutability":"mutable","name":"error","nameLocation":"3832:5:105","nodeType":"VariableDeclaration","scope":40735,"src":"3819:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":40719,"nodeType":"UserDefinedTypeName","pathNode":{"id":40718,"name":"RecoverError","nameLocations":["3819:12:105"],"nodeType":"IdentifierPath","referencedDeclaration":40640,"src":"3819:12:105"},"referencedDeclaration":40640,"src":"3819:12:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":40722,"mutability":"mutable","name":"errorArg","nameLocation":"3847:8:105","nodeType":"VariableDeclaration","scope":40735,"src":"3839:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40721,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3839:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":40727,"initialValue":{"arguments":[{"id":40724,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40709,"src":"3870:4:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40725,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40711,"src":"3876:9:105","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":40723,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[40706,40786,40894],"referencedDeclaration":40706,"src":"3859:10:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":40726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:27:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"3799:87:105"},{"expression":{"arguments":[{"id":40729,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40720,"src":"3908:5:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},{"id":40730,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40722,"src":"3915:8:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40728,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40979,"src":"3896:11:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$40640_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":40731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3896:28:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":40732,"nodeType":"ExpressionStatement","src":"3896:28:105"},{"expression":{"id":40733,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40717,"src":"3941:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":40715,"id":40734,"nodeType":"Return","src":"3934:16:105"}]},"documentation":{"id":40707,"nodeType":"StructuredDocumentation","src":"2901:796:105","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it."},"id":40736,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3711:7:105","nodeType":"FunctionDefinition","parameters":{"id":40712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40709,"mutability":"mutable","name":"hash","nameLocation":"3727:4:105","nodeType":"VariableDeclaration","scope":40736,"src":"3719:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3719:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40711,"mutability":"mutable","name":"signature","nameLocation":"3746:9:105","nodeType":"VariableDeclaration","scope":40736,"src":"3733:22:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":40710,"name":"bytes","nodeType":"ElementaryTypeName","src":"3733:5:105","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3718:38:105"},"returnParameters":{"id":40715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40736,"src":"3780:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40713,"name":"address","nodeType":"ElementaryTypeName","src":"3780:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3779:9:105"},"scope":40980,"src":"3702:255:105","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40785,"nodeType":"Block","src":"4285:342:105","statements":[{"id":40784,"nodeType":"UncheckedBlock","src":"4295:326:105","statements":[{"assignments":[40754],"declarations":[{"constant":false,"id":40754,"mutability":"mutable","name":"s","nameLocation":"4327:1:105","nodeType":"VariableDeclaration","scope":40784,"src":"4319:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40753,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4319:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":40761,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":40760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40755,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40743,"src":"4331:2:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":40758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4344:66:105","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":40757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4336:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":40756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4336:7:105","typeDescriptions":{}}},"id":40759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4336:75:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4331:80:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4319:92:105"},{"assignments":[40763],"declarations":[{"constant":false,"id":40763,"mutability":"mutable","name":"v","nameLocation":"4528:1:105","nodeType":"VariableDeclaration","scope":40784,"src":"4522:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":40762,"name":"uint8","nodeType":"ElementaryTypeName","src":"4522:5:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":40776,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":40768,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40743,"src":"4547:2:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4539:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":40766,"name":"uint256","nodeType":"ElementaryTypeName","src":"4539:7:105","typeDescriptions":{}}},"id":40769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4539:11:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":40770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4554:3:105","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4539:18:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":40772,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4538:20:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":40773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4561:2:105","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4538:25:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4532:5:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":40764,"name":"uint8","nodeType":"ElementaryTypeName","src":"4532:5:105","typeDescriptions":{}}},"id":40775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4532:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4522:42:105"},{"expression":{"arguments":[{"id":40778,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40739,"src":"4596:4:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40779,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40763,"src":"4602:1:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":40780,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40741,"src":"4605:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40781,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40754,"src":"4608:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40777,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[40706,40786,40894],"referencedDeclaration":40894,"src":"4585:10:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":40782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4585:25:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":40752,"id":40783,"nodeType":"Return","src":"4578:32:105"}]}]},"documentation":{"id":40737,"nodeType":"StructuredDocumentation","src":"3963:205:105","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]"},"id":40786,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4182:10:105","nodeType":"FunctionDefinition","parameters":{"id":40744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40739,"mutability":"mutable","name":"hash","nameLocation":"4201:4:105","nodeType":"VariableDeclaration","scope":40786,"src":"4193:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4193:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40741,"mutability":"mutable","name":"r","nameLocation":"4215:1:105","nodeType":"VariableDeclaration","scope":40786,"src":"4207:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40740,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4207:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40743,"mutability":"mutable","name":"vs","nameLocation":"4226:2:105","nodeType":"VariableDeclaration","scope":40786,"src":"4218:10:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40742,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4218:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4192:37:105"},"returnParameters":{"id":40752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40786,"src":"4253:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40745,"name":"address","nodeType":"ElementaryTypeName","src":"4253:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40786,"src":"4262:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":40748,"nodeType":"UserDefinedTypeName","pathNode":{"id":40747,"name":"RecoverError","nameLocations":["4262:12:105"],"nodeType":"IdentifierPath","referencedDeclaration":40640,"src":"4262:12:105"},"referencedDeclaration":40640,"src":"4262:12:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":40751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40786,"src":"4276:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4276:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4252:32:105"},"scope":40980,"src":"4173:454:105","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40818,"nodeType":"Block","src":"4840:164:105","statements":[{"assignments":[40799,40802,40804],"declarations":[{"constant":false,"id":40799,"mutability":"mutable","name":"recovered","nameLocation":"4859:9:105","nodeType":"VariableDeclaration","scope":40818,"src":"4851:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40798,"name":"address","nodeType":"ElementaryTypeName","src":"4851:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40802,"mutability":"mutable","name":"error","nameLocation":"4883:5:105","nodeType":"VariableDeclaration","scope":40818,"src":"4870:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":40801,"nodeType":"UserDefinedTypeName","pathNode":{"id":40800,"name":"RecoverError","nameLocations":["4870:12:105"],"nodeType":"IdentifierPath","referencedDeclaration":40640,"src":"4870:12:105"},"referencedDeclaration":40640,"src":"4870:12:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":40804,"mutability":"mutable","name":"errorArg","nameLocation":"4898:8:105","nodeType":"VariableDeclaration","scope":40818,"src":"4890:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40803,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4890:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":40810,"initialValue":{"arguments":[{"id":40806,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40789,"src":"4921:4:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40807,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40791,"src":"4927:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40808,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40793,"src":"4930:2:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40805,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[40706,40786,40894],"referencedDeclaration":40786,"src":"4910:10:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":40809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4910:23:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"4850:83:105"},{"expression":{"arguments":[{"id":40812,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40802,"src":"4955:5:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},{"id":40813,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40804,"src":"4962:8:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40811,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40979,"src":"4943:11:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$40640_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":40814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4943:28:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":40815,"nodeType":"ExpressionStatement","src":"4943:28:105"},{"expression":{"id":40816,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40799,"src":"4988:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":40797,"id":40817,"nodeType":"Return","src":"4981:16:105"}]},"documentation":{"id":40787,"nodeType":"StructuredDocumentation","src":"4633:116:105","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately."},"id":40819,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4763:7:105","nodeType":"FunctionDefinition","parameters":{"id":40794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40789,"mutability":"mutable","name":"hash","nameLocation":"4779:4:105","nodeType":"VariableDeclaration","scope":40819,"src":"4771:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40788,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4771:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40791,"mutability":"mutable","name":"r","nameLocation":"4793:1:105","nodeType":"VariableDeclaration","scope":40819,"src":"4785:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4785:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40793,"mutability":"mutable","name":"vs","nameLocation":"4804:2:105","nodeType":"VariableDeclaration","scope":40819,"src":"4796:10:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4796:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4770:37:105"},"returnParameters":{"id":40797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40819,"src":"4831:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40795,"name":"address","nodeType":"ElementaryTypeName","src":"4831:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4830:9:105"},"scope":40980,"src":"4754:250:105","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40893,"nodeType":"Block","src":"5298:1372:105","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":40843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":40840,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40828,"src":"6194:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6186:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":40838,"name":"uint256","nodeType":"ElementaryTypeName","src":"6186:7:105","typeDescriptions":{}}},"id":40841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":40842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6199:66:105","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6186:79:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40854,"nodeType":"IfStatement","src":"6182:164:105","trueBody":{"id":40853,"nodeType":"Block","src":"6267:79:105","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":40846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6297:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":40845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6289:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":40844,"name":"address","nodeType":"ElementaryTypeName","src":"6289:7:105","typeDescriptions":{}}},"id":40847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6289:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":40848,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"6301:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6314:17:105","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":40639,"src":"6301:30:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},{"id":40850,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40828,"src":"6333:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":40851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6288:47:105","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":40837,"id":40852,"nodeType":"Return","src":"6281:54:105"}]}},{"assignments":[40856],"declarations":[{"constant":false,"id":40856,"mutability":"mutable","name":"signer","nameLocation":"6448:6:105","nodeType":"VariableDeclaration","scope":40893,"src":"6440:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40855,"name":"address","nodeType":"ElementaryTypeName","src":"6440:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":40863,"initialValue":{"arguments":[{"id":40858,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40822,"src":"6467:4:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40859,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40824,"src":"6473:1:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":40860,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40826,"src":"6476:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40861,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40828,"src":"6479:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40857,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6457:9:105","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":40862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6457:24:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6440:41:105"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":40869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40864,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40856,"src":"6495:6:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":40867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6513:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":40866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6505:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":40865,"name":"address","nodeType":"ElementaryTypeName","src":"6505:7:105","typeDescriptions":{}}},"id":40868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6505:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6495:20:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40883,"nodeType":"IfStatement","src":"6491:113:105","trueBody":{"id":40882,"nodeType":"Block","src":"6517:87:105","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":40872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6547:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":40871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6539:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":40870,"name":"address","nodeType":"ElementaryTypeName","src":"6539:7:105","typeDescriptions":{}}},"id":40873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6539:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":40874,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"6551:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6564:16:105","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":40637,"src":"6551:29:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":40878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6590:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":40877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6582:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":40876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6582:7:105","typeDescriptions":{}}},"id":40879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6582:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":40880,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6538:55:105","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":40837,"id":40881,"nodeType":"Return","src":"6531:62:105"}]}},{"expression":{"components":[{"id":40884,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40856,"src":"6622:6:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":40885,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"6630:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6643:7:105","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":40636,"src":"6630:20:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":40889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":40888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6652:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":40887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6652:7:105","typeDescriptions":{}}},"id":40890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6652:10:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":40891,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6621:42:105","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":40837,"id":40892,"nodeType":"Return","src":"6614:49:105"}]},"documentation":{"id":40820,"nodeType":"StructuredDocumentation","src":"5010:125:105","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":40894,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5149:10:105","nodeType":"FunctionDefinition","parameters":{"id":40829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40822,"mutability":"mutable","name":"hash","nameLocation":"5177:4:105","nodeType":"VariableDeclaration","scope":40894,"src":"5169:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40821,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5169:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40824,"mutability":"mutable","name":"v","nameLocation":"5197:1:105","nodeType":"VariableDeclaration","scope":40894,"src":"5191:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":40823,"name":"uint8","nodeType":"ElementaryTypeName","src":"5191:5:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":40826,"mutability":"mutable","name":"r","nameLocation":"5216:1:105","nodeType":"VariableDeclaration","scope":40894,"src":"5208:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5208:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40828,"mutability":"mutable","name":"s","nameLocation":"5235:1:105","nodeType":"VariableDeclaration","scope":40894,"src":"5227:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40827,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5227:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5159:83:105"},"returnParameters":{"id":40837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40894,"src":"5266:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40830,"name":"address","nodeType":"ElementaryTypeName","src":"5266:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40894,"src":"5275:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":40833,"nodeType":"UserDefinedTypeName","pathNode":{"id":40832,"name":"RecoverError","nameLocations":["5275:12:105"],"nodeType":"IdentifierPath","referencedDeclaration":40640,"src":"5275:12:105"},"referencedDeclaration":40640,"src":"5275:12:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":40836,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40894,"src":"5289:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40835,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5289:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5265:32:105"},"scope":40980,"src":"5140:1530:105","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40929,"nodeType":"Block","src":"6897:166:105","statements":[{"assignments":[40909,40912,40914],"declarations":[{"constant":false,"id":40909,"mutability":"mutable","name":"recovered","nameLocation":"6916:9:105","nodeType":"VariableDeclaration","scope":40929,"src":"6908:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40908,"name":"address","nodeType":"ElementaryTypeName","src":"6908:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40912,"mutability":"mutable","name":"error","nameLocation":"6940:5:105","nodeType":"VariableDeclaration","scope":40929,"src":"6927:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":40911,"nodeType":"UserDefinedTypeName","pathNode":{"id":40910,"name":"RecoverError","nameLocations":["6927:12:105"],"nodeType":"IdentifierPath","referencedDeclaration":40640,"src":"6927:12:105"},"referencedDeclaration":40640,"src":"6927:12:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":40914,"mutability":"mutable","name":"errorArg","nameLocation":"6955:8:105","nodeType":"VariableDeclaration","scope":40929,"src":"6947:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6947:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":40921,"initialValue":{"arguments":[{"id":40916,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40897,"src":"6978:4:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40917,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40899,"src":"6984:1:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":40918,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40901,"src":"6987:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":40919,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40903,"src":"6990:1:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40915,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[40706,40786,40894],"referencedDeclaration":40894,"src":"6967:10:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":40920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6967:25:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$40640_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6907:85:105"},{"expression":{"arguments":[{"id":40923,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40912,"src":"7014:5:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},{"id":40924,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40914,"src":"7021:8:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40922,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40979,"src":"7002:11:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$40640_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":40925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7002:28:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":40926,"nodeType":"ExpressionStatement","src":"7002:28:105"},{"expression":{"id":40927,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40909,"src":"7047:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":40907,"id":40928,"nodeType":"Return","src":"7040:16:105"}]},"documentation":{"id":40895,"nodeType":"StructuredDocumentation","src":"6676:122:105","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":40930,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6812:7:105","nodeType":"FunctionDefinition","parameters":{"id":40904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40897,"mutability":"mutable","name":"hash","nameLocation":"6828:4:105","nodeType":"VariableDeclaration","scope":40930,"src":"6820:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40896,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6820:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40899,"mutability":"mutable","name":"v","nameLocation":"6840:1:105","nodeType":"VariableDeclaration","scope":40930,"src":"6834:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":40898,"name":"uint8","nodeType":"ElementaryTypeName","src":"6834:5:105","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":40901,"mutability":"mutable","name":"r","nameLocation":"6851:1:105","nodeType":"VariableDeclaration","scope":40930,"src":"6843:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6843:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":40903,"mutability":"mutable","name":"s","nameLocation":"6862:1:105","nodeType":"VariableDeclaration","scope":40930,"src":"6854:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40902,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6854:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6819:45:105"},"returnParameters":{"id":40907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40930,"src":"6888:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":40905,"name":"address","nodeType":"ElementaryTypeName","src":"6888:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6887:9:105"},"scope":40980,"src":"6803:260:105","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":40978,"nodeType":"Block","src":"7268:460:105","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"id":40942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40939,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40934,"src":"7282:5:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":40940,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"7291:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7304:7:105","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":40636,"src":"7291:20:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"src":"7282:29:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"id":40948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40945,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40934,"src":"7378:5:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":40946,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"7387:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7400:16:105","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":40637,"src":"7387:29:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"src":"7378:38:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"id":40956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40953,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40934,"src":"7483:5:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":40954,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"7492:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7505:22:105","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":40638,"src":"7492:35:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"src":"7483:44:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"id":40968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":40965,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40934,"src":"7617:5:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":40966,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40640,"src":"7626:12:105","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$40640_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":40967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7639:17:105","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":40639,"src":"7626:30:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"src":"7617:39:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":40974,"nodeType":"IfStatement","src":"7613:109:105","trueBody":{"id":40973,"nodeType":"Block","src":"7658:64:105","statements":[{"errorCall":{"arguments":[{"id":40970,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40936,"src":"7702:8:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40969,"name":"ECDSAInvalidSignatureS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40653,"src":"7679:22:105","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":40971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7679:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":40972,"nodeType":"RevertStatement","src":"7672:39:105"}]}},"id":40975,"nodeType":"IfStatement","src":"7479:243:105","trueBody":{"id":40964,"nodeType":"Block","src":"7529:78:105","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":40960,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40936,"src":"7586:8:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":40959,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7578:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":40958,"name":"uint256","nodeType":"ElementaryTypeName","src":"7578:7:105","typeDescriptions":{}}},"id":40961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7578:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":40957,"name":"ECDSAInvalidSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40648,"src":"7550:27:105","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":40962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7550:46:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":40963,"nodeType":"RevertStatement","src":"7543:53:105"}]}},"id":40976,"nodeType":"IfStatement","src":"7374:348:105","trueBody":{"id":40952,"nodeType":"Block","src":"7418:55:105","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":40949,"name":"ECDSAInvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40643,"src":"7439:21:105","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":40950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7439:23:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":40951,"nodeType":"RevertStatement","src":"7432:30:105"}]}},"id":40977,"nodeType":"IfStatement","src":"7278:444:105","trueBody":{"id":40944,"nodeType":"Block","src":"7313:55:105","statements":[{"functionReturnParameters":40938,"id":40943,"nodeType":"Return","src":"7327:7:105"}]}}]},"documentation":{"id":40931,"nodeType":"StructuredDocumentation","src":"7069:122:105","text":" @dev Optionally reverts with the corresponding custom error according to the `error` argument provided."},"id":40979,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"7205:11:105","nodeType":"FunctionDefinition","parameters":{"id":40937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":40934,"mutability":"mutable","name":"error","nameLocation":"7230:5:105","nodeType":"VariableDeclaration","scope":40979,"src":"7217:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":40933,"nodeType":"UserDefinedTypeName","pathNode":{"id":40932,"name":"RecoverError","nameLocations":["7217:12:105"],"nodeType":"IdentifierPath","referencedDeclaration":40640,"src":"7217:12:105"},"referencedDeclaration":40640,"src":"7217:12:105","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$40640","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":40936,"mutability":"mutable","name":"errorArg","nameLocation":"7245:8:105","nodeType":"VariableDeclaration","scope":40979,"src":"7237:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40935,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7237:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7216:38:105"},"returnParameters":{"id":40938,"nodeType":"ParameterList","parameters":[],"src":"7268:0:105"},"scope":40980,"src":"7196:532:105","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":40981,"src":"344:7386:105","usedErrors":[40643,40648,40653],"usedEvents":[]}],"src":"112:7619:105"},"id":105},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","exportedSymbols":{"EIP712":[41207],"IERC5267":[39023],"MessageHashUtils":[41281],"ShortString":[40056],"ShortStrings":[40267]},"id":41208,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":40982,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:106"},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","file":"./MessageHashUtils.sol","id":40984,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":41208,"sourceUnit":41282,"src":"139:56:106","symbolAliases":[{"foreign":{"id":40983,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41281,"src":"147:16:106","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/ShortStrings.sol","file":"../ShortStrings.sol","id":40987,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":41208,"sourceUnit":40268,"src":"196:62:106","symbolAliases":[{"foreign":{"id":40985,"name":"ShortStrings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40267,"src":"204:12:106","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":40986,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40056,"src":"218:11:106","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","file":"../../interfaces/IERC5267.sol","id":40989,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":41208,"sourceUnit":39024,"src":"259:55:106","symbolAliases":[{"foreign":{"id":40988,"name":"IERC5267","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39023,"src":"267:8:106","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":40991,"name":"IERC5267","nameLocations":["1988:8:106"],"nodeType":"IdentifierPath","referencedDeclaration":39023,"src":"1988:8:106"},"id":40992,"nodeType":"InheritanceSpecifier","src":"1988:8:106"}],"canonicalName":"EIP712","contractDependencies":[],"contractKind":"contract","documentation":{"id":40990,"nodeType":"StructuredDocumentation","src":"316:1643:106","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"fullyImplemented":true,"id":41207,"linearizedBaseContracts":[41207,39023],"name":"EIP712","nameLocation":"1978:6:106","nodeType":"ContractDefinition","nodes":[{"global":false,"id":40994,"libraryName":{"id":40993,"name":"ShortStrings","nameLocations":["2009:12:106"],"nodeType":"IdentifierPath","referencedDeclaration":40267,"src":"2009:12:106"},"nodeType":"UsingForDirective","src":"2003:25:106"},{"constant":true,"id":40999,"mutability":"constant","name":"TYPE_HASH","nameLocation":"2059:9:106","nodeType":"VariableDeclaration","scope":41207,"src":"2034:140:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":40995,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2034:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":40997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2089:84:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":40996,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2079:9:106","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":40998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2079:95:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":41001,"mutability":"immutable","name":"_cachedDomainSeparator","nameLocation":"2399:22:106","nodeType":"VariableDeclaration","scope":41207,"src":"2373:48:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41000,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2373:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":41003,"mutability":"immutable","name":"_cachedChainId","nameLocation":"2453:14:106","nodeType":"VariableDeclaration","scope":41207,"src":"2427:40:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41002,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":41005,"mutability":"immutable","name":"_cachedThis","nameLocation":"2499:11:106","nodeType":"VariableDeclaration","scope":41207,"src":"2473:37:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41004,"name":"address","nodeType":"ElementaryTypeName","src":"2473:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":41007,"mutability":"immutable","name":"_hashedName","nameLocation":"2543:11:106","nodeType":"VariableDeclaration","scope":41207,"src":"2517:37:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2517:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":41009,"mutability":"immutable","name":"_hashedVersion","nameLocation":"2586:14:106","nodeType":"VariableDeclaration","scope":41207,"src":"2560:40:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41008,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2560:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":41012,"mutability":"immutable","name":"_name","nameLocation":"2637:5:106","nodeType":"VariableDeclaration","scope":41207,"src":"2607:35:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":41011,"nodeType":"UserDefinedTypeName","pathNode":{"id":41010,"name":"ShortString","nameLocations":["2607:11:106"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"2607:11:106"},"referencedDeclaration":40056,"src":"2607:11:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"private"},{"constant":false,"id":41015,"mutability":"immutable","name":"_version","nameLocation":"2678:8:106","nodeType":"VariableDeclaration","scope":41207,"src":"2648:38:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"},"typeName":{"id":41014,"nodeType":"UserDefinedTypeName","pathNode":{"id":41013,"name":"ShortString","nameLocations":["2648:11:106"],"nodeType":"IdentifierPath","referencedDeclaration":40056,"src":"2648:11:106"},"referencedDeclaration":40056,"src":"2648:11:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"visibility":"private"},{"constant":false,"id":41017,"mutability":"mutable","name":"_nameFallback","nameLocation":"2707:13:106","nodeType":"VariableDeclaration","scope":41207,"src":"2692:28:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":41016,"name":"string","nodeType":"ElementaryTypeName","src":"2692:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":41019,"mutability":"mutable","name":"_versionFallback","nameLocation":"2741:16:106","nodeType":"VariableDeclaration","scope":41207,"src":"2726:31:106","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":41018,"name":"string","nodeType":"ElementaryTypeName","src":"2726:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":41076,"nodeType":"Block","src":"3383:376:106","statements":[{"expression":{"id":41032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41027,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41012,"src":"3393:5:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":41030,"name":"_nameFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41017,"src":"3432:13:106","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":41028,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41022,"src":"3401:4:106","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":41029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3406:25:106","memberName":"toShortStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":40208,"src":"3401:30:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$40056_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory,string storage pointer) returns (ShortString)"}},"id":41031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3401:45:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"src":"3393:53:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"id":41033,"nodeType":"ExpressionStatement","src":"3393:53:106"},{"expression":{"id":41039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41034,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41015,"src":"3456:8:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":41037,"name":"_versionFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41019,"src":"3501:16:106","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":41035,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41024,"src":"3467:7:106","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":41036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3475:25:106","memberName":"toShortStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":40208,"src":"3467:33:106","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$40056_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory,string storage pointer) returns (ShortString)"}},"id":41038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3467:51:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"src":"3456:62:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"id":41040,"nodeType":"ExpressionStatement","src":"3456:62:106"},{"expression":{"id":41048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41041,"name":"_hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41007,"src":"3528:11:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":41045,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41022,"src":"3558:4:106","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":41044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3552:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":41043,"name":"bytes","nodeType":"ElementaryTypeName","src":"3552:5:106","typeDescriptions":{}}},"id":41046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3552:11:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":41042,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3542:9:106","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":41047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3542:22:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3528:36:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":41049,"nodeType":"ExpressionStatement","src":"3528:36:106"},{"expression":{"id":41057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41050,"name":"_hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41009,"src":"3574:14:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":41054,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41024,"src":"3607:7:106","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":41053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3601:5:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":41052,"name":"bytes","nodeType":"ElementaryTypeName","src":"3601:5:106","typeDescriptions":{}}},"id":41055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3601:14:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":41051,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3591:9:106","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":41056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3591:25:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3574:42:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":41058,"nodeType":"ExpressionStatement","src":"3574:42:106"},{"expression":{"id":41062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41059,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41003,"src":"3627:14:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":41060,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3644:5:106","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":41061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3650:7:106","memberName":"chainid","nodeType":"MemberAccess","src":"3644:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3627:30:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41063,"nodeType":"ExpressionStatement","src":"3627:30:106"},{"expression":{"id":41067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41064,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41001,"src":"3667:22:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":41065,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41124,"src":"3692:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":41066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3692:23:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3667:48:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":41068,"nodeType":"ExpressionStatement","src":"3667:48:106"},{"expression":{"id":41074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41069,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41005,"src":"3725:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":41072,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3747:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}],"id":41071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3739:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41070,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:106","typeDescriptions":{}}},"id":41073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3739:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3725:27:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":41075,"nodeType":"ExpressionStatement","src":"3725:27:106"}]},"documentation":{"id":41020,"nodeType":"StructuredDocumentation","src":"2764:559:106","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":41077,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":41025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41022,"mutability":"mutable","name":"name","nameLocation":"3354:4:106","nodeType":"VariableDeclaration","scope":41077,"src":"3340:18:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41021,"name":"string","nodeType":"ElementaryTypeName","src":"3340:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41024,"mutability":"mutable","name":"version","nameLocation":"3374:7:106","nodeType":"VariableDeclaration","scope":41077,"src":"3360:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41023,"name":"string","nodeType":"ElementaryTypeName","src":"3360:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3339:43:106"},"returnParameters":{"id":41026,"nodeType":"ParameterList","parameters":[],"src":"3383:0:106"},"scope":41207,"src":"3328:431:106","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":41102,"nodeType":"Block","src":"3907:200:106","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":41093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":41088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":41085,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3929:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}],"id":41084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3921:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41083,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:106","typeDescriptions":{}}},"id":41086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3921:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":41087,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41005,"src":"3938:11:106","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3921:28:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":41089,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3953:5:106","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":41090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3959:7:106","memberName":"chainid","nodeType":"MemberAccess","src":"3953:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":41091,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41003,"src":"3970:14:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3953:31:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3921:63:106","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":41100,"nodeType":"Block","src":"4046:55:106","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":41097,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41124,"src":"4067:21:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":41098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4067:23:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":41082,"id":41099,"nodeType":"Return","src":"4060:30:106"}]},"id":41101,"nodeType":"IfStatement","src":"3917:184:106","trueBody":{"id":41096,"nodeType":"Block","src":"3986:54:106","statements":[{"expression":{"id":41094,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41001,"src":"4007:22:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":41082,"id":41095,"nodeType":"Return","src":"4000:29:106"}]}}]},"documentation":{"id":41078,"nodeType":"StructuredDocumentation","src":"3765:75:106","text":" @dev Returns the domain separator for the current chain."},"id":41103,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nameLocation":"3854:18:106","nodeType":"FunctionDefinition","parameters":{"id":41079,"nodeType":"ParameterList","parameters":[],"src":"3872:2:106"},"returnParameters":{"id":41082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41103,"src":"3898:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41080,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3898:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3897:9:106"},"scope":41207,"src":"3845:262:106","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":41123,"nodeType":"Block","src":"4177:115:106","statements":[{"expression":{"arguments":[{"arguments":[{"id":41111,"name":"TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40999,"src":"4215:9:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":41112,"name":"_hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41007,"src":"4226:11:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":41113,"name":"_hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41009,"src":"4239:14:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":41114,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4255:5:106","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":41115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4261:7:106","memberName":"chainid","nodeType":"MemberAccess","src":"4255:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":41118,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4278:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}],"id":41117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4270:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41116,"name":"address","nodeType":"ElementaryTypeName","src":"4270:7:106","typeDescriptions":{}}},"id":41119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4270:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":41109,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4204:3:106","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":41110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4208:6:106","memberName":"encode","nodeType":"MemberAccess","src":"4204:10:106","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":41120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4204:80:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":41108,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4194:9:106","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":41121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4194:91:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":41107,"id":41122,"nodeType":"Return","src":"4187:98:106"}]},"id":41124,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"4122:21:106","nodeType":"FunctionDefinition","parameters":{"id":41104,"nodeType":"ParameterList","parameters":[],"src":"4143:2:106"},"returnParameters":{"id":41107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41124,"src":"4168:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41105,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4168:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4167:9:106"},"scope":41207,"src":"4113:179:106","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":41139,"nodeType":"Block","src":"5003:90:106","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":41134,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41103,"src":"5053:18:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":41135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5053:20:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":41136,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41127,"src":"5075:10:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":41132,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41281,"src":"5020:16:106","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MessageHashUtils_$41281_$","typeString":"type(library MessageHashUtils)"}},"id":41133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5037:15:106","memberName":"toTypedDataHash","nodeType":"MemberAccess","referencedDeclaration":41280,"src":"5020:32:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":41137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5020:66:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":41131,"id":41138,"nodeType":"Return","src":"5013:73:106"}]},"documentation":{"id":41125,"nodeType":"StructuredDocumentation","src":"4298:614:106","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":41140,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nameLocation":"4926:16:106","nodeType":"FunctionDefinition","parameters":{"id":41128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41127,"mutability":"mutable","name":"structHash","nameLocation":"4951:10:106","nodeType":"VariableDeclaration","scope":41140,"src":"4943:18:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41126,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4943:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4942:20:106"},"returnParameters":{"id":41131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41140,"src":"4994:7:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41129,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4994:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4993:9:106"},"scope":41207,"src":"4917:176:106","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[39022],"body":{"id":41181,"nodeType":"Block","src":"5472:229:106","statements":[{"expression":{"components":[{"hexValue":"0f","id":41159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"5503:7:106","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c","typeString":"literal_string hex\"0f\""},"value":"\u000f"},{"arguments":[],"expression":{"argumentTypes":[],"id":41160,"name":"_EIP712Name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41194,"src":"5533:11:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":41161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5533:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"id":41162,"name":"_EIP712Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41206,"src":"5560:14:106","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":41163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5560:16:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":41164,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5590:5:106","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":41165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5596:7:106","memberName":"chainid","nodeType":"MemberAccess","src":"5590:13:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":41168,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5625:4:106","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$41207","typeString":"contract EIP712"}],"id":41167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5617:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41166,"name":"address","nodeType":"ElementaryTypeName","src":"5617:7:106","typeDescriptions":{}}},"id":41169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:13:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":41172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5652:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":41171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5644:7:106","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":41170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5644:7:106","typeDescriptions":{}}},"id":41173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5644:10:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":41177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5682:1:106","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":41176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5668:13:106","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":41174,"name":"uint256","nodeType":"ElementaryTypeName","src":"5672:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41175,"nodeType":"ArrayTypeName","src":"5672:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":41178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5668:16:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":41179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5489:205:106","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(literal_string hex\"0f\",string memory,string memory,uint256,address,bytes32,uint256[] memory)"}},"functionReturnParameters":41158,"id":41180,"nodeType":"Return","src":"5482:212:106"}]},"documentation":{"id":41141,"nodeType":"StructuredDocumentation","src":"5099:40:106","text":" @dev See {IERC-5267}."},"functionSelector":"84b0196e","id":41182,"implemented":true,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"5153:12:106","nodeType":"FunctionDefinition","parameters":{"id":41142,"nodeType":"ParameterList","parameters":[],"src":"5165:2:106"},"returnParameters":{"id":41158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41144,"mutability":"mutable","name":"fields","nameLocation":"5249:6:106","nodeType":"VariableDeclaration","scope":41182,"src":"5242:13:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":41143,"name":"bytes1","nodeType":"ElementaryTypeName","src":"5242:6:106","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":41146,"mutability":"mutable","name":"name","nameLocation":"5283:4:106","nodeType":"VariableDeclaration","scope":41182,"src":"5269:18:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41145,"name":"string","nodeType":"ElementaryTypeName","src":"5269:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41148,"mutability":"mutable","name":"version","nameLocation":"5315:7:106","nodeType":"VariableDeclaration","scope":41182,"src":"5301:21:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41147,"name":"string","nodeType":"ElementaryTypeName","src":"5301:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41150,"mutability":"mutable","name":"chainId","nameLocation":"5344:7:106","nodeType":"VariableDeclaration","scope":41182,"src":"5336:15:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41149,"name":"uint256","nodeType":"ElementaryTypeName","src":"5336:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41152,"mutability":"mutable","name":"verifyingContract","nameLocation":"5373:17:106","nodeType":"VariableDeclaration","scope":41182,"src":"5365:25:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41151,"name":"address","nodeType":"ElementaryTypeName","src":"5365:7:106","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41154,"mutability":"mutable","name":"salt","nameLocation":"5412:4:106","nodeType":"VariableDeclaration","scope":41182,"src":"5404:12:106","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41153,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5404:7:106","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":41157,"mutability":"mutable","name":"extensions","nameLocation":"5447:10:106","nodeType":"VariableDeclaration","scope":41182,"src":"5430:27:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":41155,"name":"uint256","nodeType":"ElementaryTypeName","src":"5430:7:106","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41156,"nodeType":"ArrayTypeName","src":"5430:9:106","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5228:239:106"},"scope":41207,"src":"5144:557:106","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":41193,"nodeType":"Block","src":"6082:65:106","statements":[{"expression":{"arguments":[{"id":41190,"name":"_nameFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41017,"src":"6126:13:106","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":41188,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41012,"src":"6099:5:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"id":41189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6105:20:106","memberName":"toStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":40235,"src":"6099:26:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$40056_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"function (ShortString,string storage pointer) pure returns (string memory)"}},"id":41191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6099:41:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":41187,"id":41192,"nodeType":"Return","src":"6092:48:106"}]},"documentation":{"id":41183,"nodeType":"StructuredDocumentation","src":"5707:256:106","text":" @dev The name parameter for the EIP712 domain.\n NOTE: By default this function reads _name which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."},"id":41194,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Name","nameLocation":"6030:11:106","nodeType":"FunctionDefinition","parameters":{"id":41184,"nodeType":"ParameterList","parameters":[],"src":"6041:2:106"},"returnParameters":{"id":41187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41186,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41194,"src":"6067:13:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41185,"name":"string","nodeType":"ElementaryTypeName","src":"6067:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6066:15:106"},"scope":41207,"src":"6021:126:106","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":41205,"nodeType":"Block","src":"6537:71:106","statements":[{"expression":{"arguments":[{"id":41202,"name":"_versionFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41019,"src":"6584:16:106","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":41200,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41015,"src":"6554:8:106","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$40056","typeString":"ShortString"}},"id":41201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6563:20:106","memberName":"toStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":40235,"src":"6554:29:106","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$40056_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$40056_$","typeString":"function (ShortString,string storage pointer) pure returns (string memory)"}},"id":41203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6554:47:106","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":41199,"id":41204,"nodeType":"Return","src":"6547:54:106"}]},"documentation":{"id":41195,"nodeType":"StructuredDocumentation","src":"6153:262:106","text":" @dev The version parameter for the EIP712 domain.\n NOTE: By default this function reads _version which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."},"id":41206,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Version","nameLocation":"6482:14:106","nodeType":"FunctionDefinition","parameters":{"id":41196,"nodeType":"ParameterList","parameters":[],"src":"6496:2:106"},"returnParameters":{"id":41199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41206,"src":"6522:13:106","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41197,"name":"string","nodeType":"ElementaryTypeName","src":"6522:6:106","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6521:15:106"},"scope":41207,"src":"6473:135:106","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":41208,"src":"1960:4650:106","usedErrors":[40064,40066],"usedEvents":[39003]}],"src":"113:6498:106"},"id":106},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","exportedSymbols":{"MessageHashUtils":[41281],"Strings":[40632]},"id":41282,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":41209,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:107"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../Strings.sol","id":41211,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":41282,"sourceUnit":40633,"src":"149:39:107","symbolAliases":[{"foreign":{"id":41210,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40632,"src":"157:7:107","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MessageHashUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":41212,"nodeType":"StructuredDocumentation","src":"190:330:107","text":" @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n The library provides methods for generating a hash of a message that conforms to the\n https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n specifications."},"fullyImplemented":true,"id":41281,"linearizedBaseContracts":[41281],"name":"MessageHashUtils","nameLocation":"529:16:107","nodeType":"ContractDefinition","nodes":[{"body":{"id":41221,"nodeType":"Block","src":"1314:368:107","statements":[{"AST":{"nativeSrc":"1376:300:107","nodeType":"YulBlock","src":"1376:300:107","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1397:4:107","nodeType":"YulLiteral","src":"1397:4:107","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nativeSrc":"1403:34:107","nodeType":"YulLiteral","src":"1403:34:107","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nativeSrc":"1390:6:107","nodeType":"YulIdentifier","src":"1390:6:107"},"nativeSrc":"1390:48:107","nodeType":"YulFunctionCall","src":"1390:48:107"},"nativeSrc":"1390:48:107","nodeType":"YulExpressionStatement","src":"1390:48:107"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1499:4:107","nodeType":"YulLiteral","src":"1499:4:107","type":"","value":"0x1c"},{"name":"messageHash","nativeSrc":"1505:11:107","nodeType":"YulIdentifier","src":"1505:11:107"}],"functionName":{"name":"mstore","nativeSrc":"1492:6:107","nodeType":"YulIdentifier","src":"1492:6:107"},"nativeSrc":"1492:25:107","nodeType":"YulFunctionCall","src":"1492:25:107"},"nativeSrc":"1492:25:107","nodeType":"YulExpressionStatement","src":"1492:25:107"},{"nativeSrc":"1571:31:107","nodeType":"YulAssignment","src":"1571:31:107","value":{"arguments":[{"kind":"number","nativeSrc":"1591:4:107","nodeType":"YulLiteral","src":"1591:4:107","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1597:4:107","nodeType":"YulLiteral","src":"1597:4:107","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nativeSrc":"1581:9:107","nodeType":"YulIdentifier","src":"1581:9:107"},"nativeSrc":"1581:21:107","nodeType":"YulFunctionCall","src":"1581:21:107"},"variableNames":[{"name":"digest","nativeSrc":"1571:6:107","nodeType":"YulIdentifier","src":"1571:6:107"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":41218,"isOffset":false,"isSlot":false,"src":"1571:6:107","valueSize":1},{"declaration":41215,"isOffset":false,"isSlot":false,"src":"1505:11:107","valueSize":1}],"id":41220,"nodeType":"InlineAssembly","src":"1367:309:107"}]},"documentation":{"id":41213,"nodeType":"StructuredDocumentation","src":"552:665:107","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing a bytes32 `messageHash` with\n `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n keccak256, although any bytes32 value can be safely used because the final digest will\n be re-hashed.\n See {ECDSA-recover}."},"id":41222,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"1231:22:107","nodeType":"FunctionDefinition","parameters":{"id":41216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41215,"mutability":"mutable","name":"messageHash","nameLocation":"1262:11:107","nodeType":"VariableDeclaration","scope":41222,"src":"1254:19:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1254:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1253:21:107"},"returnParameters":{"id":41219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41218,"mutability":"mutable","name":"digest","nameLocation":"1306:6:107","nodeType":"VariableDeclaration","scope":41222,"src":"1298:14:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1297:16:107"},"scope":41281,"src":"1222:460:107","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41247,"nodeType":"Block","src":"2234:143:107","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":41234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2286:32:107","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"arguments":[{"expression":{"id":41239,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41225,"src":"2343:7:107","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":41240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2351:6:107","memberName":"length","nodeType":"MemberAccess","src":"2343:14:107","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":41237,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40632,"src":"2326:7:107","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$40632_$","typeString":"type(library Strings)"}},"id":41238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2334:8:107","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":40445,"src":"2326:16:107","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":41241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:32:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":41236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2320:5:107","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":41235,"name":"bytes","nodeType":"ElementaryTypeName","src":"2320:5:107","typeDescriptions":{}}},"id":41242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:39:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":41243,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41225,"src":"2361:7:107","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":41232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2273:5:107","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":41231,"name":"bytes","nodeType":"ElementaryTypeName","src":"2273:5:107","typeDescriptions":{}}},"id":41233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2279:6:107","memberName":"concat","nodeType":"MemberAccess","src":"2273:12:107","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":41244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2273:96:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":41230,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2263:9:107","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":41245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:107:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":41229,"id":41246,"nodeType":"Return","src":"2244:126:107"}]},"documentation":{"id":41223,"nodeType":"StructuredDocumentation","src":"1688:455:107","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing an arbitrary `message` with\n `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n See {ECDSA-recover}."},"id":41248,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"2157:22:107","nodeType":"FunctionDefinition","parameters":{"id":41226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41225,"mutability":"mutable","name":"message","nameLocation":"2193:7:107","nodeType":"VariableDeclaration","scope":41248,"src":"2180:20:107","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41224,"name":"bytes","nodeType":"ElementaryTypeName","src":"2180:5:107","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2179:22:107"},"returnParameters":{"id":41229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41248,"src":"2225:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2225:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2224:9:107"},"scope":41281,"src":"2148:229:107","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41267,"nodeType":"Block","src":"2831:80:107","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":41261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2875:10:107","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":41262,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41251,"src":"2887:9:107","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41263,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41253,"src":"2898:4:107","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":41259,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2858:3:107","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":41260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2862:12:107","memberName":"encodePacked","nodeType":"MemberAccess","src":"2858:16:107","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":41264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:45:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":41258,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2848:9:107","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":41265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2848:56:107","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":41257,"id":41266,"nodeType":"Return","src":"2841:63:107"}]},"documentation":{"id":41249,"nodeType":"StructuredDocumentation","src":"2383:332:107","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x00` (data with intended validator).\n The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n `validator` address. Then hashing the result.\n See {ECDSA-recover}."},"id":41268,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"2729:31:107","nodeType":"FunctionDefinition","parameters":{"id":41254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41251,"mutability":"mutable","name":"validator","nameLocation":"2769:9:107","nodeType":"VariableDeclaration","scope":41268,"src":"2761:17:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41250,"name":"address","nodeType":"ElementaryTypeName","src":"2761:7:107","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41253,"mutability":"mutable","name":"data","nameLocation":"2793:4:107","nodeType":"VariableDeclaration","scope":41268,"src":"2780:17:107","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41252,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:107","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2760:38:107"},"returnParameters":{"id":41257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41268,"src":"2822:7:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2822:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2821:9:107"},"scope":41281,"src":"2720:191:107","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41279,"nodeType":"Block","src":"3462:292:107","statements":[{"AST":{"nativeSrc":"3524:224:107","nodeType":"YulBlock","src":"3524:224:107","statements":[{"nativeSrc":"3538:22:107","nodeType":"YulVariableDeclaration","src":"3538:22:107","value":{"arguments":[{"kind":"number","nativeSrc":"3555:4:107","nodeType":"YulLiteral","src":"3555:4:107","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"3549:5:107","nodeType":"YulIdentifier","src":"3549:5:107"},"nativeSrc":"3549:11:107","nodeType":"YulFunctionCall","src":"3549:11:107"},"variables":[{"name":"ptr","nativeSrc":"3542:3:107","nodeType":"YulTypedName","src":"3542:3:107","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"3580:3:107","nodeType":"YulIdentifier","src":"3580:3:107"},{"hexValue":"1901","kind":"string","nativeSrc":"3585:10:107","nodeType":"YulLiteral","src":"3585:10:107","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nativeSrc":"3573:6:107","nodeType":"YulIdentifier","src":"3573:6:107"},"nativeSrc":"3573:23:107","nodeType":"YulFunctionCall","src":"3573:23:107"},"nativeSrc":"3573:23:107","nodeType":"YulExpressionStatement","src":"3573:23:107"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3620:3:107","nodeType":"YulIdentifier","src":"3620:3:107"},{"kind":"number","nativeSrc":"3625:4:107","nodeType":"YulLiteral","src":"3625:4:107","type":"","value":"0x02"}],"functionName":{"name":"add","nativeSrc":"3616:3:107","nodeType":"YulIdentifier","src":"3616:3:107"},"nativeSrc":"3616:14:107","nodeType":"YulFunctionCall","src":"3616:14:107"},{"name":"domainSeparator","nativeSrc":"3632:15:107","nodeType":"YulIdentifier","src":"3632:15:107"}],"functionName":{"name":"mstore","nativeSrc":"3609:6:107","nodeType":"YulIdentifier","src":"3609:6:107"},"nativeSrc":"3609:39:107","nodeType":"YulFunctionCall","src":"3609:39:107"},"nativeSrc":"3609:39:107","nodeType":"YulExpressionStatement","src":"3609:39:107"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"3672:3:107","nodeType":"YulIdentifier","src":"3672:3:107"},{"kind":"number","nativeSrc":"3677:4:107","nodeType":"YulLiteral","src":"3677:4:107","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"3668:3:107","nodeType":"YulIdentifier","src":"3668:3:107"},"nativeSrc":"3668:14:107","nodeType":"YulFunctionCall","src":"3668:14:107"},{"name":"structHash","nativeSrc":"3684:10:107","nodeType":"YulIdentifier","src":"3684:10:107"}],"functionName":{"name":"mstore","nativeSrc":"3661:6:107","nodeType":"YulIdentifier","src":"3661:6:107"},"nativeSrc":"3661:34:107","nodeType":"YulFunctionCall","src":"3661:34:107"},"nativeSrc":"3661:34:107","nodeType":"YulExpressionStatement","src":"3661:34:107"},{"nativeSrc":"3708:30:107","nodeType":"YulAssignment","src":"3708:30:107","value":{"arguments":[{"name":"ptr","nativeSrc":"3728:3:107","nodeType":"YulIdentifier","src":"3728:3:107"},{"kind":"number","nativeSrc":"3733:4:107","nodeType":"YulLiteral","src":"3733:4:107","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nativeSrc":"3718:9:107","nodeType":"YulIdentifier","src":"3718:9:107"},"nativeSrc":"3718:20:107","nodeType":"YulFunctionCall","src":"3718:20:107"},"variableNames":[{"name":"digest","nativeSrc":"3708:6:107","nodeType":"YulIdentifier","src":"3708:6:107"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":41276,"isOffset":false,"isSlot":false,"src":"3708:6:107","valueSize":1},{"declaration":41271,"isOffset":false,"isSlot":false,"src":"3632:15:107","valueSize":1},{"declaration":41273,"isOffset":false,"isSlot":false,"src":"3684:10:107","valueSize":1}],"id":41278,"nodeType":"InlineAssembly","src":"3515:233:107"}]},"documentation":{"id":41269,"nodeType":"StructuredDocumentation","src":"2917:431:107","text":" @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\n The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n See {ECDSA-recover}."},"id":41280,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"3362:15:107","nodeType":"FunctionDefinition","parameters":{"id":41274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41271,"mutability":"mutable","name":"domainSeparator","nameLocation":"3386:15:107","nodeType":"VariableDeclaration","scope":41280,"src":"3378:23:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3378:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":41273,"mutability":"mutable","name":"structHash","nameLocation":"3411:10:107","nodeType":"VariableDeclaration","scope":41280,"src":"3403:18:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3403:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3377:45:107"},"returnParameters":{"id":41277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41276,"mutability":"mutable","name":"digest","nameLocation":"3454:6:107","nodeType":"VariableDeclaration","scope":41280,"src":"3446:14:107","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":41275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3446:7:107","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3445:16:107"},"scope":41281,"src":"3353:401:107","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":41282,"src":"521:3235:107","usedErrors":[],"usedEvents":[]}],"src":"123:3634:107"},"id":107},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[41305],"IERC165":[41317]},"id":41306,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":41283,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:108"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":41285,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":41306,"sourceUnit":41318,"src":"140:38:108","symbolAliases":[{"foreign":{"id":41284,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41317,"src":"148:7:108","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":41287,"name":"IERC165","nameLocations":["687:7:108"],"nodeType":"IdentifierPath","referencedDeclaration":41317,"src":"687:7:108"},"id":41288,"nodeType":"InheritanceSpecifier","src":"687:7:108"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":41286,"nodeType":"StructuredDocumentation","src":"180:478:108","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":41305,"linearizedBaseContracts":[41305,41317],"name":"ERC165","nameLocation":"677:6:108","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[41316],"body":{"id":41303,"nodeType":"Block","src":"844:64:108","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":41301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41296,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41291,"src":"861:11:108","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":41298,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41317,"src":"881:7:108","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$41317_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$41317_$","typeString":"type(contract IERC165)"}],"id":41297,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"876:4:108","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":41299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"876:13:108","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$41317","typeString":"type(contract IERC165)"}},"id":41300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"890:11:108","memberName":"interfaceId","nodeType":"MemberAccess","src":"876:25:108","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"861:40:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":41295,"id":41302,"nodeType":"Return","src":"854:47:108"}]},"documentation":{"id":41289,"nodeType":"StructuredDocumentation","src":"701:56:108","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":41304,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"771:17:108","nodeType":"FunctionDefinition","parameters":{"id":41292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41291,"mutability":"mutable","name":"interfaceId","nameLocation":"796:11:108","nodeType":"VariableDeclaration","scope":41304,"src":"789:18:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":41290,"name":"bytes4","nodeType":"ElementaryTypeName","src":"789:6:108","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"788:20:108"},"returnParameters":{"id":41295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41304,"src":"838:4:108","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41293,"name":"bool","nodeType":"ElementaryTypeName","src":"838:4:108","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"837:6:108"},"scope":41305,"src":"762:146:108","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":41306,"src":"659:251:108","usedErrors":[],"usedEvents":[]}],"src":"114:797:108"},"id":108},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[41317]},"id":41318,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":41307,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:109"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":41308,"nodeType":"StructuredDocumentation","src":"141:279:109","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":41317,"linearizedBaseContracts":[41317],"name":"IERC165","nameLocation":"431:7:109","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":41309,"nodeType":"StructuredDocumentation","src":"445:340:109","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":41316,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"799:17:109","nodeType":"FunctionDefinition","parameters":{"id":41312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41311,"mutability":"mutable","name":"interfaceId","nameLocation":"824:11:109","nodeType":"VariableDeclaration","scope":41316,"src":"817:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":41310,"name":"bytes4","nodeType":"ElementaryTypeName","src":"817:6:109","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"816:20:109"},"returnParameters":{"id":41315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41316,"src":"860:4:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41313,"name":"bool","nodeType":"ElementaryTypeName","src":"860:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"859:6:109"},"scope":41317,"src":"790:76:109","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":41318,"src":"421:447:109","usedErrors":[],"usedEvents":[]}],"src":"115:754:109"},"id":109},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[42371]},"id":42372,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":41319,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:110"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":41320,"nodeType":"StructuredDocumentation","src":"129:73:110","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":42371,"linearizedBaseContracts":[42371],"name":"Math","nameLocation":"211:4:110","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":41321,"nodeType":"StructuredDocumentation","src":"222:50:110","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","id":41323,"name":"MathOverflowedMulDiv","nameLocation":"283:20:110","nodeType":"ErrorDefinition","parameters":{"id":41322,"nodeType":"ParameterList","parameters":[],"src":"303:2:110"},"src":"277:29:110"},{"canonicalName":"Math.Rounding","id":41328,"members":[{"id":41324,"name":"Floor","nameLocation":"336:5:110","nodeType":"EnumValue","src":"336:5:110"},{"id":41325,"name":"Ceil","nameLocation":"379:4:110","nodeType":"EnumValue","src":"379:4:110"},{"id":41326,"name":"Trunc","nameLocation":"421:5:110","nodeType":"EnumValue","src":"421:5:110"},{"id":41327,"name":"Expand","nameLocation":"451:6:110","nodeType":"EnumValue","src":"451:6:110"}],"name":"Rounding","nameLocation":"317:8:110","nodeType":"EnumDefinition","src":"312:169:110"},{"body":{"id":41359,"nodeType":"Block","src":"661:140:110","statements":[{"id":41358,"nodeType":"UncheckedBlock","src":"671:124:110","statements":[{"assignments":[41341],"declarations":[{"constant":false,"id":41341,"mutability":"mutable","name":"c","nameLocation":"703:1:110","nodeType":"VariableDeclaration","scope":41358,"src":"695:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41340,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41345,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41342,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41331,"src":"707:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":41343,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41333,"src":"711:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41346,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41341,"src":"730:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":41347,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41331,"src":"734:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41353,"nodeType":"IfStatement","src":"726:28:110","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":41349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":41350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":41351,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":41339,"id":41352,"nodeType":"Return","src":"737:17:110"}},{"expression":{"components":[{"hexValue":"74727565","id":41354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":41355,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41341,"src":"782:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41356,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":41339,"id":41357,"nodeType":"Return","src":"768:16:110"}]}]},"documentation":{"id":41329,"nodeType":"StructuredDocumentation","src":"487:93:110","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"id":41360,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:110","nodeType":"FunctionDefinition","parameters":{"id":41334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41331,"mutability":"mutable","name":"a","nameLocation":"609:1:110","nodeType":"VariableDeclaration","scope":41360,"src":"601:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41330,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41333,"mutability":"mutable","name":"b","nameLocation":"620:1:110","nodeType":"VariableDeclaration","scope":41360,"src":"612:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41332,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:110"},"returnParameters":{"id":41339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41360,"src":"646:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41335,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":41338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41360,"src":"652:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41337,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:110"},"scope":42371,"src":"585:216:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41387,"nodeType":"Block","src":"984:113:110","statements":[{"id":41386,"nodeType":"UncheckedBlock","src":"994:97:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41372,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41365,"src":"1022:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":41373,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41363,"src":"1026:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41379,"nodeType":"IfStatement","src":"1018:28:110","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":41375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":41376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":41377,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":41371,"id":41378,"nodeType":"Return","src":"1029:17:110"}},{"expression":{"components":[{"hexValue":"74727565","id":41380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41381,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41363,"src":"1074:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":41382,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41365,"src":"1078:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":41371,"id":41385,"nodeType":"Return","src":"1060:20:110"}]}]},"documentation":{"id":41361,"nodeType":"StructuredDocumentation","src":"807:96:110","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"id":41388,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:110","nodeType":"FunctionDefinition","parameters":{"id":41366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41363,"mutability":"mutable","name":"a","nameLocation":"932:1:110","nodeType":"VariableDeclaration","scope":41388,"src":"924:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41362,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41365,"mutability":"mutable","name":"b","nameLocation":"943:1:110","nodeType":"VariableDeclaration","scope":41388,"src":"935:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41364,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:110"},"returnParameters":{"id":41371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41368,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41388,"src":"969:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41367,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":41370,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41388,"src":"975:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41369,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:110"},"scope":42371,"src":"908:189:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41429,"nodeType":"Block","src":"1283:417:110","statements":[{"id":41428,"nodeType":"UncheckedBlock","src":"1293:401:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41400,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41391,"src":"1551:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":41401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41407,"nodeType":"IfStatement","src":"1547:28:110","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":41403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":41404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":41405,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":41399,"id":41406,"nodeType":"Return","src":"1559:16:110"}},{"assignments":[41409],"declarations":[{"constant":false,"id":41409,"mutability":"mutable","name":"c","nameLocation":"1597:1:110","nodeType":"VariableDeclaration","scope":41428,"src":"1589:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41408,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41413,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41410,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41391,"src":"1601:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41411,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41393,"src":"1605:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41414,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41409,"src":"1624:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41415,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41391,"src":"1628:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":41417,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41393,"src":"1633:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41423,"nodeType":"IfStatement","src":"1620:33:110","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":41419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":41420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":41421,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":41399,"id":41422,"nodeType":"Return","src":"1636:17:110"}},{"expression":{"components":[{"hexValue":"74727565","id":41424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":41425,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41409,"src":"1681:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41426,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":41399,"id":41427,"nodeType":"Return","src":"1667:16:110"}]}]},"documentation":{"id":41389,"nodeType":"StructuredDocumentation","src":"1103:99:110","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"id":41430,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:110","nodeType":"FunctionDefinition","parameters":{"id":41394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41391,"mutability":"mutable","name":"a","nameLocation":"1231:1:110","nodeType":"VariableDeclaration","scope":41430,"src":"1223:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41390,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41393,"mutability":"mutable","name":"b","nameLocation":"1242:1:110","nodeType":"VariableDeclaration","scope":41430,"src":"1234:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41392,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:110"},"returnParameters":{"id":41399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41430,"src":"1268:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41395,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":41398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41430,"src":"1274:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41397,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:110"},"scope":42371,"src":"1207:493:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41457,"nodeType":"Block","src":"1887:114:110","statements":[{"id":41456,"nodeType":"UncheckedBlock","src":"1897:98:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41442,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41435,"src":"1925:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":41443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41449,"nodeType":"IfStatement","src":"1921:29:110","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":41445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":41446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":41447,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":41441,"id":41448,"nodeType":"Return","src":"1933:17:110"}},{"expression":{"components":[{"hexValue":"74727565","id":41450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41451,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41433,"src":"1978:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41452,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41435,"src":"1982:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41454,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":41441,"id":41455,"nodeType":"Return","src":"1964:20:110"}]}]},"documentation":{"id":41431,"nodeType":"StructuredDocumentation","src":"1706:100:110","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"id":41458,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:110","nodeType":"FunctionDefinition","parameters":{"id":41436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41433,"mutability":"mutable","name":"a","nameLocation":"1835:1:110","nodeType":"VariableDeclaration","scope":41458,"src":"1827:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41435,"mutability":"mutable","name":"b","nameLocation":"1846:1:110","nodeType":"VariableDeclaration","scope":41458,"src":"1838:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:110"},"returnParameters":{"id":41441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41458,"src":"1872:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41437,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":41440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41458,"src":"1878:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41439,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:110"},"scope":42371,"src":"1811:190:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41485,"nodeType":"Block","src":"2198:114:110","statements":[{"id":41484,"nodeType":"UncheckedBlock","src":"2208:98:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41470,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41463,"src":"2236:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":41471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41477,"nodeType":"IfStatement","src":"2232:29:110","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":41473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":41474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":41475,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":41469,"id":41476,"nodeType":"Return","src":"2244:17:110"}},{"expression":{"components":[{"hexValue":"74727565","id":41478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41479,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41461,"src":"2289:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":41480,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41463,"src":"2293:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41482,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:110","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":41469,"id":41483,"nodeType":"Return","src":"2275:20:110"}]}]},"documentation":{"id":41459,"nodeType":"StructuredDocumentation","src":"2007:110:110","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"id":41486,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:110","nodeType":"FunctionDefinition","parameters":{"id":41464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41461,"mutability":"mutable","name":"a","nameLocation":"2146:1:110","nodeType":"VariableDeclaration","scope":41486,"src":"2138:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41460,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41463,"mutability":"mutable","name":"b","nameLocation":"2157:1:110","nodeType":"VariableDeclaration","scope":41486,"src":"2149:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41462,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:110"},"returnParameters":{"id":41469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41486,"src":"2183:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41465,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":41468,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41486,"src":"2189:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41467,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:110"},"scope":42371,"src":"2122:190:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41503,"nodeType":"Block","src":"2449:37:110","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41496,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41489,"src":"2466:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":41497,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41491,"src":"2470:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":41500,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41491,"src":"2478:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:110","trueExpression":{"id":41499,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41489,"src":"2474:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41495,"id":41502,"nodeType":"Return","src":"2459:20:110"}]},"documentation":{"id":41487,"nodeType":"StructuredDocumentation","src":"2318:59:110","text":" @dev Returns the largest of two numbers."},"id":41504,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:110","nodeType":"FunctionDefinition","parameters":{"id":41492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41489,"mutability":"mutable","name":"a","nameLocation":"2403:1:110","nodeType":"VariableDeclaration","scope":41504,"src":"2395:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41488,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41491,"mutability":"mutable","name":"b","nameLocation":"2414:1:110","nodeType":"VariableDeclaration","scope":41504,"src":"2406:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41490,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:110"},"returnParameters":{"id":41495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41494,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41504,"src":"2440:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41493,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:110"},"scope":42371,"src":"2382:104:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41521,"nodeType":"Block","src":"2624:37:110","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41514,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41507,"src":"2641:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":41515,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41509,"src":"2645:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":41518,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41509,"src":"2653:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:110","trueExpression":{"id":41517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41507,"src":"2649:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41513,"id":41520,"nodeType":"Return","src":"2634:20:110"}]},"documentation":{"id":41505,"nodeType":"StructuredDocumentation","src":"2492:60:110","text":" @dev Returns the smallest of two numbers."},"id":41522,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:110","nodeType":"FunctionDefinition","parameters":{"id":41510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41507,"mutability":"mutable","name":"a","nameLocation":"2578:1:110","nodeType":"VariableDeclaration","scope":41522,"src":"2570:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41506,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41509,"mutability":"mutable","name":"b","nameLocation":"2589:1:110","nodeType":"VariableDeclaration","scope":41522,"src":"2581:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41508,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:110"},"returnParameters":{"id":41513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41522,"src":"2615:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41511,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:110"},"scope":42371,"src":"2557:104:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41544,"nodeType":"Block","src":"2845:82:110","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41532,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41525,"src":"2900:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":41533,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41527,"src":"2904:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41535,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41536,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41525,"src":"2910:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":41537,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41527,"src":"2914:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41539,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":41540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41531,"id":41543,"nodeType":"Return","src":"2892:28:110"}]},"documentation":{"id":41523,"nodeType":"StructuredDocumentation","src":"2667:102:110","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":41545,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:110","nodeType":"FunctionDefinition","parameters":{"id":41528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41525,"mutability":"mutable","name":"a","nameLocation":"2799:1:110","nodeType":"VariableDeclaration","scope":41545,"src":"2791:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41524,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41527,"mutability":"mutable","name":"b","nameLocation":"2810:1:110","nodeType":"VariableDeclaration","scope":41545,"src":"2802:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:110"},"returnParameters":{"id":41531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41530,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41545,"src":"2836:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:110"},"scope":42371,"src":"2774:153:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41578,"nodeType":"Block","src":"3219:260:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41555,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41550,"src":"3233:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":41556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41563,"nodeType":"IfStatement","src":"3229:127:110","trueBody":{"id":41562,"nodeType":"Block","src":"3241:115:110","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41558,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41548,"src":"3340:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41559,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41550,"src":"3344:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41554,"id":41561,"nodeType":"Return","src":"3333:12:110"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41564,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41548,"src":"3444:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":41565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41568,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41548,"src":"3458:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":41569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41571,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41572,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41550,"src":"3467:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":41574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:110","trueExpression":{"hexValue":"30","id":41567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41554,"id":41577,"nodeType":"Return","src":"3437:35:110"}]},"documentation":{"id":41546,"nodeType":"StructuredDocumentation","src":"2933:210:110","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":41579,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:110","nodeType":"FunctionDefinition","parameters":{"id":41551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41548,"mutability":"mutable","name":"a","nameLocation":"3173:1:110","nodeType":"VariableDeclaration","scope":41579,"src":"3165:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41547,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41550,"mutability":"mutable","name":"b","nameLocation":"3184:1:110","nodeType":"VariableDeclaration","scope":41579,"src":"3176:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41549,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:110"},"returnParameters":{"id":41554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41579,"src":"3210:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41552,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:110"},"scope":42371,"src":"3148:331:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41704,"nodeType":"Block","src":"3901:4018:110","statements":[{"id":41703,"nodeType":"UncheckedBlock","src":"3911:4002:110","statements":[{"assignments":[41592],"declarations":[{"constant":false,"id":41592,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:110","nodeType":"VariableDeclaration","scope":41703,"src":"4232:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41591,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41596,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41593,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41582,"src":"4248:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41594,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41584,"src":"4252:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:110"},{"assignments":[41598],"declarations":[{"constant":false,"id":41598,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:110","nodeType":"VariableDeclaration","scope":41703,"src":"4312:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41597,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41599,"nodeType":"VariableDeclarationStatement","src":"4312:13:110"},{"AST":{"nativeSrc":"4392:122:110","nodeType":"YulBlock","src":"4392:122:110","statements":[{"nativeSrc":"4410:30:110","nodeType":"YulVariableDeclaration","src":"4410:30:110","value":{"arguments":[{"name":"x","nativeSrc":"4427:1:110","nodeType":"YulIdentifier","src":"4427:1:110"},{"name":"y","nativeSrc":"4430:1:110","nodeType":"YulIdentifier","src":"4430:1:110"},{"arguments":[{"kind":"number","nativeSrc":"4437:1:110","nodeType":"YulLiteral","src":"4437:1:110","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4433:3:110","nodeType":"YulIdentifier","src":"4433:3:110"},"nativeSrc":"4433:6:110","nodeType":"YulFunctionCall","src":"4433:6:110"}],"functionName":{"name":"mulmod","nativeSrc":"4420:6:110","nodeType":"YulIdentifier","src":"4420:6:110"},"nativeSrc":"4420:20:110","nodeType":"YulFunctionCall","src":"4420:20:110"},"variables":[{"name":"mm","nativeSrc":"4414:2:110","nodeType":"YulTypedName","src":"4414:2:110","type":""}]},{"nativeSrc":"4457:43:110","nodeType":"YulAssignment","src":"4457:43:110","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"4474:2:110","nodeType":"YulIdentifier","src":"4474:2:110"},{"name":"prod0","nativeSrc":"4478:5:110","nodeType":"YulIdentifier","src":"4478:5:110"}],"functionName":{"name":"sub","nativeSrc":"4470:3:110","nodeType":"YulIdentifier","src":"4470:3:110"},"nativeSrc":"4470:14:110","nodeType":"YulFunctionCall","src":"4470:14:110"},{"arguments":[{"name":"mm","nativeSrc":"4489:2:110","nodeType":"YulIdentifier","src":"4489:2:110"},{"name":"prod0","nativeSrc":"4493:5:110","nodeType":"YulIdentifier","src":"4493:5:110"}],"functionName":{"name":"lt","nativeSrc":"4486:2:110","nodeType":"YulIdentifier","src":"4486:2:110"},"nativeSrc":"4486:13:110","nodeType":"YulFunctionCall","src":"4486:13:110"}],"functionName":{"name":"sub","nativeSrc":"4466:3:110","nodeType":"YulIdentifier","src":"4466:3:110"},"nativeSrc":"4466:34:110","nodeType":"YulFunctionCall","src":"4466:34:110"},"variableNames":[{"name":"prod1","nativeSrc":"4457:5:110","nodeType":"YulIdentifier","src":"4457:5:110"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":41592,"isOffset":false,"isSlot":false,"src":"4478:5:110","valueSize":1},{"declaration":41592,"isOffset":false,"isSlot":false,"src":"4493:5:110","valueSize":1},{"declaration":41598,"isOffset":false,"isSlot":false,"src":"4457:5:110","valueSize":1},{"declaration":41582,"isOffset":false,"isSlot":false,"src":"4427:1:110","valueSize":1},{"declaration":41584,"isOffset":false,"isSlot":false,"src":"4430:1:110","valueSize":1}],"id":41600,"nodeType":"InlineAssembly","src":"4383:131:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41601,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41598,"src":"4595:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":41602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41609,"nodeType":"IfStatement","src":"4591:368:110","trueBody":{"id":41608,"nodeType":"Block","src":"4607:352:110","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41604,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41592,"src":"4925:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41605,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"4933:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41590,"id":41607,"nodeType":"Return","src":"4918:26:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41610,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"5065:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":41611,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41598,"src":"5080:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41617,"nodeType":"IfStatement","src":"5061:88:110","trueBody":{"id":41616,"nodeType":"Block","src":"5087:62:110","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":41613,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41323,"src":"5112:20:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":41614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":41615,"nodeType":"RevertStatement","src":"5105:29:110"}]}},{"assignments":[41619],"declarations":[{"constant":false,"id":41619,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:110","nodeType":"VariableDeclaration","scope":41703,"src":"5404:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41618,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41620,"nodeType":"VariableDeclarationStatement","src":"5404:17:110"},{"AST":{"nativeSrc":"5444:291:110","nodeType":"YulBlock","src":"5444:291:110","statements":[{"nativeSrc":"5513:38:110","nodeType":"YulAssignment","src":"5513:38:110","value":{"arguments":[{"name":"x","nativeSrc":"5533:1:110","nodeType":"YulIdentifier","src":"5533:1:110"},{"name":"y","nativeSrc":"5536:1:110","nodeType":"YulIdentifier","src":"5536:1:110"},{"name":"denominator","nativeSrc":"5539:11:110","nodeType":"YulIdentifier","src":"5539:11:110"}],"functionName":{"name":"mulmod","nativeSrc":"5526:6:110","nodeType":"YulIdentifier","src":"5526:6:110"},"nativeSrc":"5526:25:110","nodeType":"YulFunctionCall","src":"5526:25:110"},"variableNames":[{"name":"remainder","nativeSrc":"5513:9:110","nodeType":"YulIdentifier","src":"5513:9:110"}]},{"nativeSrc":"5633:41:110","nodeType":"YulAssignment","src":"5633:41:110","value":{"arguments":[{"name":"prod1","nativeSrc":"5646:5:110","nodeType":"YulIdentifier","src":"5646:5:110"},{"arguments":[{"name":"remainder","nativeSrc":"5656:9:110","nodeType":"YulIdentifier","src":"5656:9:110"},{"name":"prod0","nativeSrc":"5667:5:110","nodeType":"YulIdentifier","src":"5667:5:110"}],"functionName":{"name":"gt","nativeSrc":"5653:2:110","nodeType":"YulIdentifier","src":"5653:2:110"},"nativeSrc":"5653:20:110","nodeType":"YulFunctionCall","src":"5653:20:110"}],"functionName":{"name":"sub","nativeSrc":"5642:3:110","nodeType":"YulIdentifier","src":"5642:3:110"},"nativeSrc":"5642:32:110","nodeType":"YulFunctionCall","src":"5642:32:110"},"variableNames":[{"name":"prod1","nativeSrc":"5633:5:110","nodeType":"YulIdentifier","src":"5633:5:110"}]},{"nativeSrc":"5691:30:110","nodeType":"YulAssignment","src":"5691:30:110","value":{"arguments":[{"name":"prod0","nativeSrc":"5704:5:110","nodeType":"YulIdentifier","src":"5704:5:110"},{"name":"remainder","nativeSrc":"5711:9:110","nodeType":"YulIdentifier","src":"5711:9:110"}],"functionName":{"name":"sub","nativeSrc":"5700:3:110","nodeType":"YulIdentifier","src":"5700:3:110"},"nativeSrc":"5700:21:110","nodeType":"YulFunctionCall","src":"5700:21:110"},"variableNames":[{"name":"prod0","nativeSrc":"5691:5:110","nodeType":"YulIdentifier","src":"5691:5:110"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":41586,"isOffset":false,"isSlot":false,"src":"5539:11:110","valueSize":1},{"declaration":41592,"isOffset":false,"isSlot":false,"src":"5667:5:110","valueSize":1},{"declaration":41592,"isOffset":false,"isSlot":false,"src":"5691:5:110","valueSize":1},{"declaration":41592,"isOffset":false,"isSlot":false,"src":"5704:5:110","valueSize":1},{"declaration":41598,"isOffset":false,"isSlot":false,"src":"5633:5:110","valueSize":1},{"declaration":41598,"isOffset":false,"isSlot":false,"src":"5646:5:110","valueSize":1},{"declaration":41619,"isOffset":false,"isSlot":false,"src":"5513:9:110","valueSize":1},{"declaration":41619,"isOffset":false,"isSlot":false,"src":"5656:9:110","valueSize":1},{"declaration":41619,"isOffset":false,"isSlot":false,"src":"5711:9:110","valueSize":1},{"declaration":41582,"isOffset":false,"isSlot":false,"src":"5533:1:110","valueSize":1},{"declaration":41584,"isOffset":false,"isSlot":false,"src":"5536:1:110","valueSize":1}],"id":41621,"nodeType":"InlineAssembly","src":"5435:300:110"},{"assignments":[41623],"declarations":[{"constant":false,"id":41623,"mutability":"mutable","name":"twos","nameLocation":"5947:4:110","nodeType":"VariableDeclaration","scope":41703,"src":"5939:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41622,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41630,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41624,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"5954:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":41625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":41626,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"5973:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41628,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:110"},{"AST":{"nativeSrc":"6008:362:110","nodeType":"YulBlock","src":"6008:362:110","statements":[{"nativeSrc":"6073:37:110","nodeType":"YulAssignment","src":"6073:37:110","value":{"arguments":[{"name":"denominator","nativeSrc":"6092:11:110","nodeType":"YulIdentifier","src":"6092:11:110"},{"name":"twos","nativeSrc":"6105:4:110","nodeType":"YulIdentifier","src":"6105:4:110"}],"functionName":{"name":"div","nativeSrc":"6088:3:110","nodeType":"YulIdentifier","src":"6088:3:110"},"nativeSrc":"6088:22:110","nodeType":"YulFunctionCall","src":"6088:22:110"},"variableNames":[{"name":"denominator","nativeSrc":"6073:11:110","nodeType":"YulIdentifier","src":"6073:11:110"}]},{"nativeSrc":"6177:25:110","nodeType":"YulAssignment","src":"6177:25:110","value":{"arguments":[{"name":"prod0","nativeSrc":"6190:5:110","nodeType":"YulIdentifier","src":"6190:5:110"},{"name":"twos","nativeSrc":"6197:4:110","nodeType":"YulIdentifier","src":"6197:4:110"}],"functionName":{"name":"div","nativeSrc":"6186:3:110","nodeType":"YulIdentifier","src":"6186:3:110"},"nativeSrc":"6186:16:110","nodeType":"YulFunctionCall","src":"6186:16:110"},"variableNames":[{"name":"prod0","nativeSrc":"6177:5:110","nodeType":"YulIdentifier","src":"6177:5:110"}]},{"nativeSrc":"6317:39:110","nodeType":"YulAssignment","src":"6317:39:110","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6337:1:110","nodeType":"YulLiteral","src":"6337:1:110","type":"","value":"0"},{"name":"twos","nativeSrc":"6340:4:110","nodeType":"YulIdentifier","src":"6340:4:110"}],"functionName":{"name":"sub","nativeSrc":"6333:3:110","nodeType":"YulIdentifier","src":"6333:3:110"},"nativeSrc":"6333:12:110","nodeType":"YulFunctionCall","src":"6333:12:110"},{"name":"twos","nativeSrc":"6347:4:110","nodeType":"YulIdentifier","src":"6347:4:110"}],"functionName":{"name":"div","nativeSrc":"6329:3:110","nodeType":"YulIdentifier","src":"6329:3:110"},"nativeSrc":"6329:23:110","nodeType":"YulFunctionCall","src":"6329:23:110"},{"kind":"number","nativeSrc":"6354:1:110","nodeType":"YulLiteral","src":"6354:1:110","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6325:3:110","nodeType":"YulIdentifier","src":"6325:3:110"},"nativeSrc":"6325:31:110","nodeType":"YulFunctionCall","src":"6325:31:110"},"variableNames":[{"name":"twos","nativeSrc":"6317:4:110","nodeType":"YulIdentifier","src":"6317:4:110"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":41586,"isOffset":false,"isSlot":false,"src":"6073:11:110","valueSize":1},{"declaration":41586,"isOffset":false,"isSlot":false,"src":"6092:11:110","valueSize":1},{"declaration":41592,"isOffset":false,"isSlot":false,"src":"6177:5:110","valueSize":1},{"declaration":41592,"isOffset":false,"isSlot":false,"src":"6190:5:110","valueSize":1},{"declaration":41623,"isOffset":false,"isSlot":false,"src":"6105:4:110","valueSize":1},{"declaration":41623,"isOffset":false,"isSlot":false,"src":"6197:4:110","valueSize":1},{"declaration":41623,"isOffset":false,"isSlot":false,"src":"6317:4:110","valueSize":1},{"declaration":41623,"isOffset":false,"isSlot":false,"src":"6340:4:110","valueSize":1},{"declaration":41623,"isOffset":false,"isSlot":false,"src":"6347:4:110","valueSize":1}],"id":41631,"nodeType":"InlineAssembly","src":"5999:371:110"},{"expression":{"id":41636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41632,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41592,"src":"6436:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41633,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41598,"src":"6445:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41634,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41623,"src":"6453:4:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41637,"nodeType":"ExpressionStatement","src":"6436:21:110"},{"assignments":[41639],"declarations":[{"constant":false,"id":41639,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:110","nodeType":"VariableDeclaration","scope":41703,"src":"6775:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41638,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41646,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":41640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:110","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41641,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"6798:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41643,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":41644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:110"},{"expression":{"id":41653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41647,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7031:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":41648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41649,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"7046:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41650,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7060:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41654,"nodeType":"ExpressionStatement","src":"7031:36:110"},{"expression":{"id":41661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41655,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7100:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":41656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41657,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"7115:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41658,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7129:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41662,"nodeType":"ExpressionStatement","src":"7100:36:110"},{"expression":{"id":41669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41663,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7170:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":41664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41665,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"7185:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41666,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7199:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41670,"nodeType":"ExpressionStatement","src":"7170:36:110"},{"expression":{"id":41677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41671,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7240:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":41672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41673,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"7255:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41674,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7269:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41678,"nodeType":"ExpressionStatement","src":"7240:36:110"},{"expression":{"id":41685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41679,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7310:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":41680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41681,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"7325:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41682,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7339:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41686,"nodeType":"ExpressionStatement","src":"7310:36:110"},{"expression":{"id":41693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41687,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7381:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":41688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41689,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41586,"src":"7396:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41690,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7410:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41694,"nodeType":"ExpressionStatement","src":"7381:36:110"},{"expression":{"id":41699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41695,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41589,"src":"7851:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41696,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41592,"src":"7860:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41697,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41639,"src":"7868:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41700,"nodeType":"ExpressionStatement","src":"7851:24:110"},{"expression":{"id":41701,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41589,"src":"7896:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41590,"id":41702,"nodeType":"Return","src":"7889:13:110"}]}]},"documentation":{"id":41580,"nodeType":"StructuredDocumentation","src":"3485:313:110","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":41705,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:110","nodeType":"FunctionDefinition","parameters":{"id":41587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41582,"mutability":"mutable","name":"x","nameLocation":"3827:1:110","nodeType":"VariableDeclaration","scope":41705,"src":"3819:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41581,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41584,"mutability":"mutable","name":"y","nameLocation":"3838:1:110","nodeType":"VariableDeclaration","scope":41705,"src":"3830:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41583,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41586,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:110","nodeType":"VariableDeclaration","scope":41705,"src":"3841:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41585,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:110"},"returnParameters":{"id":41590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41589,"mutability":"mutable","name":"result","nameLocation":"3893:6:110","nodeType":"VariableDeclaration","scope":41705,"src":"3885:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41588,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:110"},"scope":42371,"src":"3803:4116:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41747,"nodeType":"Block","src":"8161:192:110","statements":[{"assignments":[41721],"declarations":[{"constant":false,"id":41721,"mutability":"mutable","name":"result","nameLocation":"8179:6:110","nodeType":"VariableDeclaration","scope":41747,"src":"8171:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41720,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41727,"initialValue":{"arguments":[{"id":41723,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41708,"src":"8195:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":41724,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41710,"src":"8198:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":41725,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41712,"src":"8201:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":41722,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[41705,41748],"referencedDeclaration":41705,"src":"8188:6:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":41726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:110"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":41738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":41729,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41715,"src":"8244:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}],"id":41728,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42370,"src":"8227:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$41328_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":41730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":41732,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41708,"src":"8264:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":41733,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41710,"src":"8267:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":41734,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41712,"src":"8270:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":41731,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:110","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":41735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":41736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41744,"nodeType":"IfStatement","src":"8223:101:110","trueBody":{"id":41743,"nodeType":"Block","src":"8288:36:110","statements":[{"expression":{"id":41741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41739,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41721,"src":"8302:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":41740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41742,"nodeType":"ExpressionStatement","src":"8302:11:110"}]}},{"expression":{"id":41745,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41721,"src":"8340:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41719,"id":41746,"nodeType":"Return","src":"8333:13:110"}]},"documentation":{"id":41706,"nodeType":"StructuredDocumentation","src":"7925:121:110","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":41748,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:110","nodeType":"FunctionDefinition","parameters":{"id":41716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41708,"mutability":"mutable","name":"x","nameLocation":"8075:1:110","nodeType":"VariableDeclaration","scope":41748,"src":"8067:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41707,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41710,"mutability":"mutable","name":"y","nameLocation":"8086:1:110","nodeType":"VariableDeclaration","scope":41748,"src":"8078:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41709,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41712,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:110","nodeType":"VariableDeclaration","scope":41748,"src":"8089:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41711,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41715,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:110","nodeType":"VariableDeclaration","scope":41748,"src":"8110:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"},"typeName":{"id":41714,"nodeType":"UserDefinedTypeName","pathNode":{"id":41713,"name":"Rounding","nameLocations":["8110:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":41328,"src":"8110:8:110"},"referencedDeclaration":41328,"src":"8110:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:110"},"returnParameters":{"id":41719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41718,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41748,"src":"8152:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41717,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:110"},"scope":42371,"src":"8051:302:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41859,"nodeType":"Block","src":"8644:1585:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41756,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"8658:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":41757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41762,"nodeType":"IfStatement","src":"8654:45:110","trueBody":{"id":41761,"nodeType":"Block","src":"8666:33:110","statements":[{"expression":{"hexValue":"30","id":41759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":41755,"id":41760,"nodeType":"Return","src":"8680:8:110"}]}},{"assignments":[41764],"declarations":[{"constant":false,"id":41764,"mutability":"mutable","name":"result","nameLocation":"9386:6:110","nodeType":"VariableDeclaration","scope":41859,"src":"9378:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41763,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41773,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":41765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":41767,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"9406:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":41766,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[42027,42062],"referencedDeclaration":42027,"src":"9401:4:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":41768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41771,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:110"},{"id":41858,"nodeType":"UncheckedBlock","src":"9815:408:110","statements":[{"expression":{"id":41783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41774,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9839:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41775,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9849:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41776,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"9858:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41777,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9862:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41780,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41784,"nodeType":"ExpressionStatement","src":"9839:35:110"},{"expression":{"id":41794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41785,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9888:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41786,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9898:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41787,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"9907:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41788,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9911:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41791,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41795,"nodeType":"ExpressionStatement","src":"9888:35:110"},{"expression":{"id":41805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41796,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9937:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41797,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9947:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41798,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"9956:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41799,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9960:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41802,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41806,"nodeType":"ExpressionStatement","src":"9937:35:110"},{"expression":{"id":41816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41807,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9986:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41808,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"9996:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41809,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"10005:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41810,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10009:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41817,"nodeType":"ExpressionStatement","src":"9986:35:110"},{"expression":{"id":41827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41818,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10035:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41819,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10045:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41820,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"10054:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41821,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10058:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41824,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41828,"nodeType":"ExpressionStatement","src":"10035:35:110"},{"expression":{"id":41838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41829,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10084:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41830,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10094:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41831,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"10103:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41832,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10107:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41835,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41839,"nodeType":"ExpressionStatement","src":"10084:35:110"},{"expression":{"id":41849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41840,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10133:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41841,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10143:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41842,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"10152:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41843,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10156:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":41846,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":41847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41850,"nodeType":"ExpressionStatement","src":"10133:35:110"},{"expression":{"arguments":[{"id":41852,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10193:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41853,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41751,"src":"10201:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":41854,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"10205:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":41851,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41522,"src":"10189:3:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":41856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41755,"id":41857,"nodeType":"Return","src":"10182:30:110"}]}]},"documentation":{"id":41749,"nodeType":"StructuredDocumentation","src":"8359:223:110","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":41860,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:110","nodeType":"FunctionDefinition","parameters":{"id":41752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41751,"mutability":"mutable","name":"a","nameLocation":"8609:1:110","nodeType":"VariableDeclaration","scope":41860,"src":"8601:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41750,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:110"},"returnParameters":{"id":41755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41754,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41860,"src":"8635:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41753,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:110"},"scope":42371,"src":"8587:1642:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":41894,"nodeType":"Block","src":"10405:164:110","statements":[{"id":41893,"nodeType":"UncheckedBlock","src":"10415:148:110","statements":[{"assignments":[41872],"declarations":[{"constant":false,"id":41872,"mutability":"mutable","name":"result","nameLocation":"10447:6:110","nodeType":"VariableDeclaration","scope":41893,"src":"10439:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41871,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41876,"initialValue":{"arguments":[{"id":41874,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41863,"src":"10461:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":41873,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[41860,41895],"referencedDeclaration":41860,"src":"10456:4:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":41875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:110"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41877,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41872,"src":"10484:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":41886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":41879,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41866,"src":"10511:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}],"id":41878,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42370,"src":"10494:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$41328_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":41880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41881,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41872,"src":"10524:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":41882,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41872,"src":"10533:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":41884,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41863,"src":"10542:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":41888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":41889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:110","trueExpression":{"hexValue":"31","id":41887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":41890,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:110","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41870,"id":41892,"nodeType":"Return","src":"10477:75:110"}]}]},"documentation":{"id":41861,"nodeType":"StructuredDocumentation","src":"10235:89:110","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":41895,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:110","nodeType":"FunctionDefinition","parameters":{"id":41867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41863,"mutability":"mutable","name":"a","nameLocation":"10351:1:110","nodeType":"VariableDeclaration","scope":41895,"src":"10343:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41862,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":41866,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:110","nodeType":"VariableDeclaration","scope":41895,"src":"10354:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"},"typeName":{"id":41865,"nodeType":"UserDefinedTypeName","pathNode":{"id":41864,"name":"Rounding","nameLocations":["10354:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":41328,"src":"10354:8:110"},"referencedDeclaration":41328,"src":"10354:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:110"},"returnParameters":{"id":41870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41895,"src":"10396:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41868,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:110"},"scope":42371,"src":"10329:240:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42026,"nodeType":"Block","src":"10760:922:110","statements":[{"assignments":[41904],"declarations":[{"constant":false,"id":41904,"mutability":"mutable","name":"result","nameLocation":"10778:6:110","nodeType":"VariableDeclaration","scope":42026,"src":"10770:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41903,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":41906,"initialValue":{"hexValue":"30","id":41905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:110"},{"id":42023,"nodeType":"UncheckedBlock","src":"10798:855:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"10826:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":41908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:110","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":41910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41921,"nodeType":"IfStatement","src":"10822:99:110","trueBody":{"id":41920,"nodeType":"Block","src":"10844:77:110","statements":[{"expression":{"id":41914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"10862:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":41913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:110","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41915,"nodeType":"ExpressionStatement","src":"10862:13:110"},{"expression":{"id":41918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41916,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"10893:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":41917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:110","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41919,"nodeType":"ExpressionStatement","src":"10893:13:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41922,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"10938:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":41923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":41925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41936,"nodeType":"IfStatement","src":"10934:96:110","trueBody":{"id":41935,"nodeType":"Block","src":"10955:75:110","statements":[{"expression":{"id":41929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41927,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"10973:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":41928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41930,"nodeType":"ExpressionStatement","src":"10973:12:110"},{"expression":{"id":41933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41931,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11003:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":41932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41934,"nodeType":"ExpressionStatement","src":"11003:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41937,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11047:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":41938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":41940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41951,"nodeType":"IfStatement","src":"11043:96:110","trueBody":{"id":41950,"nodeType":"Block","src":"11064:75:110","statements":[{"expression":{"id":41944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41942,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11082:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":41943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41945,"nodeType":"ExpressionStatement","src":"11082:12:110"},{"expression":{"id":41948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41946,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11112:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":41947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41949,"nodeType":"ExpressionStatement","src":"11112:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41952,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11156:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":41953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":41955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41966,"nodeType":"IfStatement","src":"11152:96:110","trueBody":{"id":41965,"nodeType":"Block","src":"11173:75:110","statements":[{"expression":{"id":41959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11191:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":41958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41960,"nodeType":"ExpressionStatement","src":"11191:12:110"},{"expression":{"id":41963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41961,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11221:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":41962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41964,"nodeType":"ExpressionStatement","src":"11221:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11265:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":41968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":41970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41981,"nodeType":"IfStatement","src":"11261:93:110","trueBody":{"id":41980,"nodeType":"Block","src":"11281:73:110","statements":[{"expression":{"id":41974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11299:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":41973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41975,"nodeType":"ExpressionStatement","src":"11299:11:110"},{"expression":{"id":41978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41976,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11328:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":41977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41979,"nodeType":"ExpressionStatement","src":"11328:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41982,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11371:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":41983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:110","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":41985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":41996,"nodeType":"IfStatement","src":"11367:93:110","trueBody":{"id":41995,"nodeType":"Block","src":"11387:73:110","statements":[{"expression":{"id":41989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11405:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":41988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:110","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41990,"nodeType":"ExpressionStatement","src":"11405:11:110"},{"expression":{"id":41993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41991,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11434:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":41992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:110","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":41994,"nodeType":"ExpressionStatement","src":"11434:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":41999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":41997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11477:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":41998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42011,"nodeType":"IfStatement","src":"11473:93:110","trueBody":{"id":42010,"nodeType":"Block","src":"11493:73:110","statements":[{"expression":{"id":42004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42002,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11511:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":42003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42005,"nodeType":"ExpressionStatement","src":"11511:11:110"},{"expression":{"id":42008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42006,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11540:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":42007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42009,"nodeType":"ExpressionStatement","src":"11540:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42012,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41898,"src":"11583:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":42013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42022,"nodeType":"IfStatement","src":"11579:64:110","trueBody":{"id":42021,"nodeType":"Block","src":"11599:44:110","statements":[{"expression":{"id":42019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42017,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11617:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":42018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42020,"nodeType":"ExpressionStatement","src":"11617:11:110"}]}}]},{"expression":{"id":42024,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41904,"src":"11669:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":41902,"id":42025,"nodeType":"Return","src":"11662:13:110"}]},"documentation":{"id":41896,"nodeType":"StructuredDocumentation","src":"10575:119:110","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":42027,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:110","nodeType":"FunctionDefinition","parameters":{"id":41899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41898,"mutability":"mutable","name":"value","nameLocation":"10721:5:110","nodeType":"VariableDeclaration","scope":42027,"src":"10713:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41897,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:110"},"returnParameters":{"id":41902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42027,"src":"10751:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":41900,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:110"},"scope":42371,"src":"10699:983:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42061,"nodeType":"Block","src":"11915:168:110","statements":[{"id":42060,"nodeType":"UncheckedBlock","src":"11925:152:110","statements":[{"assignments":[42039],"declarations":[{"constant":false,"id":42039,"mutability":"mutable","name":"result","nameLocation":"11957:6:110","nodeType":"VariableDeclaration","scope":42060,"src":"11949:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42038,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":42043,"initialValue":{"arguments":[{"id":42041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42030,"src":"11971:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42040,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[42027,42062],"referencedDeclaration":42027,"src":"11966:4:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":42042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:110"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42044,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42039,"src":"11998:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":42046,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42033,"src":"12025:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}],"id":42045,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42370,"src":"12008:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$41328_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":42047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":42048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":42049,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42039,"src":"12043:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":42051,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42030,"src":"12052:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":42055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":42056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:110","trueExpression":{"hexValue":"31","id":42054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":42057,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:110","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":42037,"id":42059,"nodeType":"Return","src":"11991:75:110"}]}]},"documentation":{"id":42028,"nodeType":"StructuredDocumentation","src":"11688:142:110","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":42062,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:110","nodeType":"FunctionDefinition","parameters":{"id":42034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42030,"mutability":"mutable","name":"value","nameLocation":"11857:5:110","nodeType":"VariableDeclaration","scope":42062,"src":"11849:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42029,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42033,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:110","nodeType":"VariableDeclaration","scope":42062,"src":"11864:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"},"typeName":{"id":42032,"nodeType":"UserDefinedTypeName","pathNode":{"id":42031,"name":"Rounding","nameLocations":["11864:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":41328,"src":"11864:8:110"},"referencedDeclaration":41328,"src":"11864:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:110"},"returnParameters":{"id":42037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42036,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42062,"src":"11906:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42035,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:110"},"scope":42371,"src":"11835:248:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42190,"nodeType":"Block","src":"12276:854:110","statements":[{"assignments":[42071],"declarations":[{"constant":false,"id":42071,"mutability":"mutable","name":"result","nameLocation":"12294:6:110","nodeType":"VariableDeclaration","scope":42190,"src":"12286:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42070,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":42073,"initialValue":{"hexValue":"30","id":42072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:110"},{"id":42187,"nodeType":"UncheckedBlock","src":"12314:787:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12342:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":42077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":42076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:110","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42090,"nodeType":"IfStatement","src":"12338:103:110","trueBody":{"id":42089,"nodeType":"Block","src":"12361:80:110","statements":[{"expression":{"id":42083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42079,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12379:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":42082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":42081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:110","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42084,"nodeType":"ExpressionStatement","src":"12379:17:110"},{"expression":{"id":42087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42085,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"12414:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":42086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42088,"nodeType":"ExpressionStatement","src":"12414:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42091,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12458:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":42094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":42093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:110","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42107,"nodeType":"IfStatement","src":"12454:103:110","trueBody":{"id":42106,"nodeType":"Block","src":"12477:80:110","statements":[{"expression":{"id":42100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42096,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12495:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":42099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":42098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:110","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42101,"nodeType":"ExpressionStatement","src":"12495:17:110"},{"expression":{"id":42104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42102,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"12530:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":42103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42105,"nodeType":"ExpressionStatement","src":"12530:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12574:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":42111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":42110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:110","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42124,"nodeType":"IfStatement","src":"12570:103:110","trueBody":{"id":42123,"nodeType":"Block","src":"12593:80:110","statements":[{"expression":{"id":42117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42113,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12611:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":42116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":42115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:110","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42118,"nodeType":"ExpressionStatement","src":"12611:17:110"},{"expression":{"id":42121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"12646:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":42120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42122,"nodeType":"ExpressionStatement","src":"12646:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12690:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":42128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":42127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:110","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42141,"nodeType":"IfStatement","src":"12686:100:110","trueBody":{"id":42140,"nodeType":"Block","src":"12708:78:110","statements":[{"expression":{"id":42134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42130,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12726:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":42133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":42132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:110","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42135,"nodeType":"ExpressionStatement","src":"12726:16:110"},{"expression":{"id":42138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42136,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"12760:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":42137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42139,"nodeType":"ExpressionStatement","src":"12760:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42142,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12803:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":42145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":42144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:110","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:110","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42158,"nodeType":"IfStatement","src":"12799:100:110","trueBody":{"id":42157,"nodeType":"Block","src":"12821:78:110","statements":[{"expression":{"id":42151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42147,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12839:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":42150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":42149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:110","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:110","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42152,"nodeType":"ExpressionStatement","src":"12839:16:110"},{"expression":{"id":42155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42153,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"12873:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":42154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:110","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42156,"nodeType":"ExpressionStatement","src":"12873:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42159,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12916:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":42162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":42161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:110","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42175,"nodeType":"IfStatement","src":"12912:100:110","trueBody":{"id":42174,"nodeType":"Block","src":"12934:78:110","statements":[{"expression":{"id":42168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42164,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"12952:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":42167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":42166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:110","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42169,"nodeType":"ExpressionStatement","src":"12952:16:110"},{"expression":{"id":42172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42170,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"12986:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":42171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42173,"nodeType":"ExpressionStatement","src":"12986:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42176,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42065,"src":"13029:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":42179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":42178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42186,"nodeType":"IfStatement","src":"13025:66:110","trueBody":{"id":42185,"nodeType":"Block","src":"13047:44:110","statements":[{"expression":{"id":42183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42181,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"13065:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":42182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42184,"nodeType":"ExpressionStatement","src":"13065:11:110"}]}}]},{"expression":{"id":42188,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42071,"src":"13117:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":42069,"id":42189,"nodeType":"Return","src":"13110:13:110"}]},"documentation":{"id":42063,"nodeType":"StructuredDocumentation","src":"12089:120:110","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":42191,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:110","nodeType":"FunctionDefinition","parameters":{"id":42066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42065,"mutability":"mutable","name":"value","nameLocation":"12237:5:110","nodeType":"VariableDeclaration","scope":42191,"src":"12229:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42064,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:110"},"returnParameters":{"id":42069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42068,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42191,"src":"12267:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42067,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:110"},"scope":42371,"src":"12214:916:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42225,"nodeType":"Block","src":"13365:170:110","statements":[{"id":42224,"nodeType":"UncheckedBlock","src":"13375:154:110","statements":[{"assignments":[42203],"declarations":[{"constant":false,"id":42203,"mutability":"mutable","name":"result","nameLocation":"13407:6:110","nodeType":"VariableDeclaration","scope":42224,"src":"13399:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42202,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":42207,"initialValue":{"arguments":[{"id":42205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42194,"src":"13422:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42204,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[42191,42226],"referencedDeclaration":42191,"src":"13416:5:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":42206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:110"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42208,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42203,"src":"13449:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":42210,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42197,"src":"13476:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}],"id":42209,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42370,"src":"13459:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$41328_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":42211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":42212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":42213,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42203,"src":"13495:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":42215,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42194,"src":"13504:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":42219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":42220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:110","trueExpression":{"hexValue":"31","id":42218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":42221,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:110","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":42201,"id":42223,"nodeType":"Return","src":"13442:76:110"}]}]},"documentation":{"id":42192,"nodeType":"StructuredDocumentation","src":"13136:143:110","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":42226,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:110","nodeType":"FunctionDefinition","parameters":{"id":42198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42194,"mutability":"mutable","name":"value","nameLocation":"13307:5:110","nodeType":"VariableDeclaration","scope":42226,"src":"13299:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42193,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42197,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:110","nodeType":"VariableDeclaration","scope":42226,"src":"13314:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"},"typeName":{"id":42196,"nodeType":"UserDefinedTypeName","pathNode":{"id":42195,"name":"Rounding","nameLocations":["13314:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":41328,"src":"13314:8:110"},"referencedDeclaration":41328,"src":"13314:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:110"},"returnParameters":{"id":42201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42200,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42226,"src":"13356:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42199,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:110"},"scope":42371,"src":"13284:251:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42312,"nodeType":"Block","src":"13855:600:110","statements":[{"assignments":[42235],"declarations":[{"constant":false,"id":42235,"mutability":"mutable","name":"result","nameLocation":"13873:6:110","nodeType":"VariableDeclaration","scope":42312,"src":"13865:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42234,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":42237,"initialValue":{"hexValue":"30","id":42236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:110"},{"id":42309,"nodeType":"UncheckedBlock","src":"13893:533:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42238,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"13921:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":42239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:110","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42252,"nodeType":"IfStatement","src":"13917:98:110","trueBody":{"id":42251,"nodeType":"Block","src":"13939:76:110","statements":[{"expression":{"id":42245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42243,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"13957:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":42244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:110","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42246,"nodeType":"ExpressionStatement","src":"13957:13:110"},{"expression":{"id":42249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42247,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42235,"src":"13988:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":42248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42250,"nodeType":"ExpressionStatement","src":"13988:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"14032:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":42254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42267,"nodeType":"IfStatement","src":"14028:95:110","trueBody":{"id":42266,"nodeType":"Block","src":"14049:74:110","statements":[{"expression":{"id":42260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42258,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"14067:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":42259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:110","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42261,"nodeType":"ExpressionStatement","src":"14067:12:110"},{"expression":{"id":42264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42262,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42235,"src":"14097:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":42263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42265,"nodeType":"ExpressionStatement","src":"14097:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42268,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"14140:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":42269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42282,"nodeType":"IfStatement","src":"14136:95:110","trueBody":{"id":42281,"nodeType":"Block","src":"14157:74:110","statements":[{"expression":{"id":42275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42273,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"14175:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":42274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:110","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42276,"nodeType":"ExpressionStatement","src":"14175:12:110"},{"expression":{"id":42279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42277,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42235,"src":"14205:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":42278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:110","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42280,"nodeType":"ExpressionStatement","src":"14205:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42283,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"14248:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":42284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42297,"nodeType":"IfStatement","src":"14244:95:110","trueBody":{"id":42296,"nodeType":"Block","src":"14265:74:110","statements":[{"expression":{"id":42290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42288,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"14283:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":42289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:110","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42291,"nodeType":"ExpressionStatement","src":"14283:12:110"},{"expression":{"id":42294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42292,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42235,"src":"14313:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":42293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42295,"nodeType":"ExpressionStatement","src":"14313:11:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42229,"src":"14356:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":42299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:110","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42308,"nodeType":"IfStatement","src":"14352:64:110","trueBody":{"id":42307,"nodeType":"Block","src":"14372:44:110","statements":[{"expression":{"id":42305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":42303,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42235,"src":"14390:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":42304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42306,"nodeType":"ExpressionStatement","src":"14390:11:110"}]}}]},{"expression":{"id":42310,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42235,"src":"14442:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":42233,"id":42311,"nodeType":"Return","src":"14435:13:110"}]},"documentation":{"id":42227,"nodeType":"StructuredDocumentation","src":"13541:246:110","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":42313,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:110","nodeType":"FunctionDefinition","parameters":{"id":42230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42229,"mutability":"mutable","name":"value","nameLocation":"13816:5:110","nodeType":"VariableDeclaration","scope":42313,"src":"13808:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42228,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:110"},"returnParameters":{"id":42233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42232,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42313,"src":"13846:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42231,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:110"},"scope":42371,"src":"13792:663:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42350,"nodeType":"Block","src":"14692:177:110","statements":[{"id":42349,"nodeType":"UncheckedBlock","src":"14702:161:110","statements":[{"assignments":[42325],"declarations":[{"constant":false,"id":42325,"mutability":"mutable","name":"result","nameLocation":"14734:6:110","nodeType":"VariableDeclaration","scope":42349,"src":"14726:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42324,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":42329,"initialValue":{"arguments":[{"id":42327,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42316,"src":"14750:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42326,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[42313,42351],"referencedDeclaration":42313,"src":"14743:6:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":42328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:110"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42330,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42325,"src":"14777:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":42332,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42319,"src":"14804:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}],"id":42331,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42370,"src":"14787:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$41328_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":42333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":42334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42335,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42325,"src":"14823:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":42336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:110","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":42338,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":42340,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42316,"src":"14838:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":42344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":42345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:110","trueExpression":{"hexValue":"31","id":42343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":42346,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:110","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":42323,"id":42348,"nodeType":"Return","src":"14770:82:110"}]}]},"documentation":{"id":42314,"nodeType":"StructuredDocumentation","src":"14461:144:110","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":42351,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:110","nodeType":"FunctionDefinition","parameters":{"id":42320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42316,"mutability":"mutable","name":"value","nameLocation":"14634:5:110","nodeType":"VariableDeclaration","scope":42351,"src":"14626:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42315,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":42319,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:110","nodeType":"VariableDeclaration","scope":42351,"src":"14641:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"},"typeName":{"id":42318,"nodeType":"UserDefinedTypeName","pathNode":{"id":42317,"name":"Rounding","nameLocations":["14641:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":41328,"src":"14641:8:110"},"referencedDeclaration":41328,"src":"14641:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:110"},"returnParameters":{"id":42323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42351,"src":"14683:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42321,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:110"},"scope":42371,"src":"14610:259:110","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42369,"nodeType":"Block","src":"15067:48:110","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":42367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":42365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":42362,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42355,"src":"15090:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}],"id":42361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:110","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":42360,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:110","typeDescriptions":{}}},"id":42363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":42364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:110","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":42366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":42359,"id":42368,"nodeType":"Return","src":"15077:31:110"}]},"documentation":{"id":42352,"nodeType":"StructuredDocumentation","src":"14875:113:110","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":42370,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:110","nodeType":"FunctionDefinition","parameters":{"id":42356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42355,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:110","nodeType":"VariableDeclaration","scope":42370,"src":"15019:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"},"typeName":{"id":42354,"nodeType":"UserDefinedTypeName","pathNode":{"id":42353,"name":"Rounding","nameLocations":["15019:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":41328,"src":"15019:8:110"},"referencedDeclaration":41328,"src":"15019:8:110","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$41328","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:110"},"returnParameters":{"id":42359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42370,"src":"15061:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":42357,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:110"},"scope":42371,"src":"14993:122:110","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":42372,"src":"203:14914:110","usedErrors":[41323],"usedEvents":[]}],"src":"103:15015:110"},"id":110},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[44126]},"id":44127,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":42373,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:111"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":42374,"nodeType":"StructuredDocumentation","src":"218:545:111","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":44126,"linearizedBaseContracts":[44126],"name":"SafeCast","nameLocation":"772:8:111","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":42375,"nodeType":"StructuredDocumentation","src":"787:68:111","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":42381,"name":"SafeCastOverflowedUintDowncast","nameLocation":"866:30:111","nodeType":"ErrorDefinition","parameters":{"id":42380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42377,"mutability":"mutable","name":"bits","nameLocation":"903:4:111","nodeType":"VariableDeclaration","scope":42381,"src":"897:10:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":42376,"name":"uint8","nodeType":"ElementaryTypeName","src":"897:5:111","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":42379,"mutability":"mutable","name":"value","nameLocation":"917:5:111","nodeType":"VariableDeclaration","scope":42381,"src":"909:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42378,"name":"uint256","nodeType":"ElementaryTypeName","src":"909:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"896:27:111"},"src":"860:64:111"},{"documentation":{"id":42382,"nodeType":"StructuredDocumentation","src":"930:75:111","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":42386,"name":"SafeCastOverflowedIntToUint","nameLocation":"1016:27:111","nodeType":"ErrorDefinition","parameters":{"id":42385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42384,"mutability":"mutable","name":"value","nameLocation":"1051:5:111","nodeType":"VariableDeclaration","scope":42386,"src":"1044:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":42383,"name":"int256","nodeType":"ElementaryTypeName","src":"1044:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1043:14:111"},"src":"1010:48:111"},{"documentation":{"id":42387,"nodeType":"StructuredDocumentation","src":"1064:67:111","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":42393,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1142:29:111","nodeType":"ErrorDefinition","parameters":{"id":42392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42389,"mutability":"mutable","name":"bits","nameLocation":"1178:4:111","nodeType":"VariableDeclaration","scope":42393,"src":"1172:10:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":42388,"name":"uint8","nodeType":"ElementaryTypeName","src":"1172:5:111","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":42391,"mutability":"mutable","name":"value","nameLocation":"1191:5:111","nodeType":"VariableDeclaration","scope":42393,"src":"1184:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":42390,"name":"int256","nodeType":"ElementaryTypeName","src":"1184:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1171:26:111"},"src":"1136:62:111"},{"documentation":{"id":42394,"nodeType":"StructuredDocumentation","src":"1204:75:111","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":42398,"name":"SafeCastOverflowedUintToInt","nameLocation":"1290:27:111","nodeType":"ErrorDefinition","parameters":{"id":42397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42396,"mutability":"mutable","name":"value","nameLocation":"1326:5:111","nodeType":"VariableDeclaration","scope":42398,"src":"1318:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42395,"name":"uint256","nodeType":"ElementaryTypeName","src":"1318:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1317:15:111"},"src":"1284:49:111"},{"body":{"id":42425,"nodeType":"Block","src":"1690:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42406,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42401,"src":"1704:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1717:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":42408,"name":"uint248","nodeType":"ElementaryTypeName","src":"1717:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":42407,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1712:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":42411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1726:3:111","memberName":"max","nodeType":"MemberAccess","src":"1712:17:111","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1704:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42419,"nodeType":"IfStatement","src":"1700:105:111","trueBody":{"id":42418,"nodeType":"Block","src":"1731:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":42414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1783:3:111","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":42415,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42401,"src":"1788:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42413,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"1752:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1752:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42417,"nodeType":"RevertStatement","src":"1745:49:111"}]}},{"expression":{"arguments":[{"id":42422,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42401,"src":"1829:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1821:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":42420,"name":"uint248","nodeType":"ElementaryTypeName","src":"1821:7:111","typeDescriptions":{}}},"id":42423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1821:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":42405,"id":42424,"nodeType":"Return","src":"1814:21:111"}]},"documentation":{"id":42399,"nodeType":"StructuredDocumentation","src":"1339:280:111","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":42426,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1633:9:111","nodeType":"FunctionDefinition","parameters":{"id":42402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42401,"mutability":"mutable","name":"value","nameLocation":"1651:5:111","nodeType":"VariableDeclaration","scope":42426,"src":"1643:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1643:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1642:15:111"},"returnParameters":{"id":42405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42426,"src":"1681:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":42403,"name":"uint248","nodeType":"ElementaryTypeName","src":"1681:7:111","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1680:9:111"},"scope":44126,"src":"1624:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42453,"nodeType":"Block","src":"2199:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42429,"src":"2213:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2226:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":42436,"name":"uint240","nodeType":"ElementaryTypeName","src":"2226:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":42435,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2221:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2221:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":42439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2235:3:111","memberName":"max","nodeType":"MemberAccess","src":"2221:17:111","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2213:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42447,"nodeType":"IfStatement","src":"2209:105:111","trueBody":{"id":42446,"nodeType":"Block","src":"2240:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":42442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2292:3:111","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":42443,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42429,"src":"2297:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42441,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"2261:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2261:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42445,"nodeType":"RevertStatement","src":"2254:49:111"}]}},{"expression":{"arguments":[{"id":42450,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42429,"src":"2338:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2330:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":42448,"name":"uint240","nodeType":"ElementaryTypeName","src":"2330:7:111","typeDescriptions":{}}},"id":42451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2330:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":42433,"id":42452,"nodeType":"Return","src":"2323:21:111"}]},"documentation":{"id":42427,"nodeType":"StructuredDocumentation","src":"1848:280:111","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":42454,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2142:9:111","nodeType":"FunctionDefinition","parameters":{"id":42430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42429,"mutability":"mutable","name":"value","nameLocation":"2160:5:111","nodeType":"VariableDeclaration","scope":42454,"src":"2152:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42428,"name":"uint256","nodeType":"ElementaryTypeName","src":"2152:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2151:15:111"},"returnParameters":{"id":42433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42432,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42454,"src":"2190:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":42431,"name":"uint240","nodeType":"ElementaryTypeName","src":"2190:7:111","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2189:9:111"},"scope":44126,"src":"2133:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42481,"nodeType":"Block","src":"2708:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42462,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42457,"src":"2722:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2735:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":42464,"name":"uint232","nodeType":"ElementaryTypeName","src":"2735:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":42463,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2730:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2730:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":42467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2744:3:111","memberName":"max","nodeType":"MemberAccess","src":"2730:17:111","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2722:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42475,"nodeType":"IfStatement","src":"2718:105:111","trueBody":{"id":42474,"nodeType":"Block","src":"2749:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":42470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2801:3:111","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":42471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42457,"src":"2806:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42469,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"2770:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2770:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42473,"nodeType":"RevertStatement","src":"2763:49:111"}]}},{"expression":{"arguments":[{"id":42478,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42457,"src":"2847:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2839:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":42476,"name":"uint232","nodeType":"ElementaryTypeName","src":"2839:7:111","typeDescriptions":{}}},"id":42479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2839:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":42461,"id":42480,"nodeType":"Return","src":"2832:21:111"}]},"documentation":{"id":42455,"nodeType":"StructuredDocumentation","src":"2357:280:111","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":42482,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2651:9:111","nodeType":"FunctionDefinition","parameters":{"id":42458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42457,"mutability":"mutable","name":"value","nameLocation":"2669:5:111","nodeType":"VariableDeclaration","scope":42482,"src":"2661:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42456,"name":"uint256","nodeType":"ElementaryTypeName","src":"2661:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2660:15:111"},"returnParameters":{"id":42461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42482,"src":"2699:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":42459,"name":"uint232","nodeType":"ElementaryTypeName","src":"2699:7:111","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2698:9:111"},"scope":44126,"src":"2642:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42509,"nodeType":"Block","src":"3217:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42490,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42485,"src":"3231:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3244:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":42492,"name":"uint224","nodeType":"ElementaryTypeName","src":"3244:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":42491,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3239:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3239:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":42495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3253:3:111","memberName":"max","nodeType":"MemberAccess","src":"3239:17:111","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3231:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42503,"nodeType":"IfStatement","src":"3227:105:111","trueBody":{"id":42502,"nodeType":"Block","src":"3258:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":42498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3310:3:111","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":42499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42485,"src":"3315:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42497,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"3279:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3279:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42501,"nodeType":"RevertStatement","src":"3272:49:111"}]}},{"expression":{"arguments":[{"id":42506,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42485,"src":"3356:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3348:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":42504,"name":"uint224","nodeType":"ElementaryTypeName","src":"3348:7:111","typeDescriptions":{}}},"id":42507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3348:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":42489,"id":42508,"nodeType":"Return","src":"3341:21:111"}]},"documentation":{"id":42483,"nodeType":"StructuredDocumentation","src":"2866:280:111","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":42510,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3160:9:111","nodeType":"FunctionDefinition","parameters":{"id":42486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42485,"mutability":"mutable","name":"value","nameLocation":"3178:5:111","nodeType":"VariableDeclaration","scope":42510,"src":"3170:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42484,"name":"uint256","nodeType":"ElementaryTypeName","src":"3170:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3169:15:111"},"returnParameters":{"id":42489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42510,"src":"3208:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":42487,"name":"uint224","nodeType":"ElementaryTypeName","src":"3208:7:111","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3207:9:111"},"scope":44126,"src":"3151:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42537,"nodeType":"Block","src":"3726:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42518,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42513,"src":"3740:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3753:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":42520,"name":"uint216","nodeType":"ElementaryTypeName","src":"3753:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":42519,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3748:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3748:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":42523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3762:3:111","memberName":"max","nodeType":"MemberAccess","src":"3748:17:111","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3740:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42531,"nodeType":"IfStatement","src":"3736:105:111","trueBody":{"id":42530,"nodeType":"Block","src":"3767:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":42526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3819:3:111","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":42527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42513,"src":"3824:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42525,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"3788:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3788:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42529,"nodeType":"RevertStatement","src":"3781:49:111"}]}},{"expression":{"arguments":[{"id":42534,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42513,"src":"3865:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3857:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":42532,"name":"uint216","nodeType":"ElementaryTypeName","src":"3857:7:111","typeDescriptions":{}}},"id":42535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3857:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":42517,"id":42536,"nodeType":"Return","src":"3850:21:111"}]},"documentation":{"id":42511,"nodeType":"StructuredDocumentation","src":"3375:280:111","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":42538,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3669:9:111","nodeType":"FunctionDefinition","parameters":{"id":42514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42513,"mutability":"mutable","name":"value","nameLocation":"3687:5:111","nodeType":"VariableDeclaration","scope":42538,"src":"3679:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42512,"name":"uint256","nodeType":"ElementaryTypeName","src":"3679:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3678:15:111"},"returnParameters":{"id":42517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42538,"src":"3717:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":42515,"name":"uint216","nodeType":"ElementaryTypeName","src":"3717:7:111","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3716:9:111"},"scope":44126,"src":"3660:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42565,"nodeType":"Block","src":"4235:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42541,"src":"4249:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4262:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":42548,"name":"uint208","nodeType":"ElementaryTypeName","src":"4262:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":42547,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4257:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4257:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":42551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4271:3:111","memberName":"max","nodeType":"MemberAccess","src":"4257:17:111","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4249:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42559,"nodeType":"IfStatement","src":"4245:105:111","trueBody":{"id":42558,"nodeType":"Block","src":"4276:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":42554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4328:3:111","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":42555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42541,"src":"4333:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42553,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"4297:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42557,"nodeType":"RevertStatement","src":"4290:49:111"}]}},{"expression":{"arguments":[{"id":42562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42541,"src":"4374:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4366:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":42560,"name":"uint208","nodeType":"ElementaryTypeName","src":"4366:7:111","typeDescriptions":{}}},"id":42563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4366:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":42545,"id":42564,"nodeType":"Return","src":"4359:21:111"}]},"documentation":{"id":42539,"nodeType":"StructuredDocumentation","src":"3884:280:111","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":42566,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4178:9:111","nodeType":"FunctionDefinition","parameters":{"id":42542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42541,"mutability":"mutable","name":"value","nameLocation":"4196:5:111","nodeType":"VariableDeclaration","scope":42566,"src":"4188:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42540,"name":"uint256","nodeType":"ElementaryTypeName","src":"4188:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4187:15:111"},"returnParameters":{"id":42545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42566,"src":"4226:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":42543,"name":"uint208","nodeType":"ElementaryTypeName","src":"4226:7:111","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4225:9:111"},"scope":44126,"src":"4169:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42593,"nodeType":"Block","src":"4744:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42574,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42569,"src":"4758:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4771:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":42576,"name":"uint200","nodeType":"ElementaryTypeName","src":"4771:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":42575,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4766:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4766:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":42579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4780:3:111","memberName":"max","nodeType":"MemberAccess","src":"4766:17:111","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4758:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42587,"nodeType":"IfStatement","src":"4754:105:111","trueBody":{"id":42586,"nodeType":"Block","src":"4785:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":42582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:3:111","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":42583,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42569,"src":"4842:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42581,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"4806:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4806:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42585,"nodeType":"RevertStatement","src":"4799:49:111"}]}},{"expression":{"arguments":[{"id":42590,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42569,"src":"4883:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4875:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":42588,"name":"uint200","nodeType":"ElementaryTypeName","src":"4875:7:111","typeDescriptions":{}}},"id":42591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4875:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":42573,"id":42592,"nodeType":"Return","src":"4868:21:111"}]},"documentation":{"id":42567,"nodeType":"StructuredDocumentation","src":"4393:280:111","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":42594,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4687:9:111","nodeType":"FunctionDefinition","parameters":{"id":42570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42569,"mutability":"mutable","name":"value","nameLocation":"4705:5:111","nodeType":"VariableDeclaration","scope":42594,"src":"4697:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42568,"name":"uint256","nodeType":"ElementaryTypeName","src":"4697:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4696:15:111"},"returnParameters":{"id":42573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42572,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42594,"src":"4735:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":42571,"name":"uint200","nodeType":"ElementaryTypeName","src":"4735:7:111","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4734:9:111"},"scope":44126,"src":"4678:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42621,"nodeType":"Block","src":"5253:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42597,"src":"5267:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5280:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":42604,"name":"uint192","nodeType":"ElementaryTypeName","src":"5280:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":42603,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5275:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5275:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":42607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5289:3:111","memberName":"max","nodeType":"MemberAccess","src":"5275:17:111","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5267:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42615,"nodeType":"IfStatement","src":"5263:105:111","trueBody":{"id":42614,"nodeType":"Block","src":"5294:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":42610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5346:3:111","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":42611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42597,"src":"5351:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42609,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"5315:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5315:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42613,"nodeType":"RevertStatement","src":"5308:49:111"}]}},{"expression":{"arguments":[{"id":42618,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42597,"src":"5392:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5384:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":42616,"name":"uint192","nodeType":"ElementaryTypeName","src":"5384:7:111","typeDescriptions":{}}},"id":42619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5384:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":42601,"id":42620,"nodeType":"Return","src":"5377:21:111"}]},"documentation":{"id":42595,"nodeType":"StructuredDocumentation","src":"4902:280:111","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":42622,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5196:9:111","nodeType":"FunctionDefinition","parameters":{"id":42598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42597,"mutability":"mutable","name":"value","nameLocation":"5214:5:111","nodeType":"VariableDeclaration","scope":42622,"src":"5206:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42596,"name":"uint256","nodeType":"ElementaryTypeName","src":"5206:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5205:15:111"},"returnParameters":{"id":42601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42622,"src":"5244:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":42599,"name":"uint192","nodeType":"ElementaryTypeName","src":"5244:7:111","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5243:9:111"},"scope":44126,"src":"5187:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42649,"nodeType":"Block","src":"5762:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42630,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42625,"src":"5776:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5789:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":42632,"name":"uint184","nodeType":"ElementaryTypeName","src":"5789:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":42631,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5784:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":42635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5798:3:111","memberName":"max","nodeType":"MemberAccess","src":"5784:17:111","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5776:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42643,"nodeType":"IfStatement","src":"5772:105:111","trueBody":{"id":42642,"nodeType":"Block","src":"5803:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":42638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5855:3:111","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":42639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42625,"src":"5860:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42637,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"5824:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5824:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42641,"nodeType":"RevertStatement","src":"5817:49:111"}]}},{"expression":{"arguments":[{"id":42646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42625,"src":"5901:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5893:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":42644,"name":"uint184","nodeType":"ElementaryTypeName","src":"5893:7:111","typeDescriptions":{}}},"id":42647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5893:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":42629,"id":42648,"nodeType":"Return","src":"5886:21:111"}]},"documentation":{"id":42623,"nodeType":"StructuredDocumentation","src":"5411:280:111","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":42650,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5705:9:111","nodeType":"FunctionDefinition","parameters":{"id":42626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42625,"mutability":"mutable","name":"value","nameLocation":"5723:5:111","nodeType":"VariableDeclaration","scope":42650,"src":"5715:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42624,"name":"uint256","nodeType":"ElementaryTypeName","src":"5715:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5714:15:111"},"returnParameters":{"id":42629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42628,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42650,"src":"5753:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":42627,"name":"uint184","nodeType":"ElementaryTypeName","src":"5753:7:111","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5752:9:111"},"scope":44126,"src":"5696:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42677,"nodeType":"Block","src":"6271:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42658,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42653,"src":"6285:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6298:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":42660,"name":"uint176","nodeType":"ElementaryTypeName","src":"6298:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":42659,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6293:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6293:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":42663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6307:3:111","memberName":"max","nodeType":"MemberAccess","src":"6293:17:111","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6285:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42671,"nodeType":"IfStatement","src":"6281:105:111","trueBody":{"id":42670,"nodeType":"Block","src":"6312:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":42666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6364:3:111","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":42667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42653,"src":"6369:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42665,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"6333:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6333:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42669,"nodeType":"RevertStatement","src":"6326:49:111"}]}},{"expression":{"arguments":[{"id":42674,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42653,"src":"6410:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6402:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":42672,"name":"uint176","nodeType":"ElementaryTypeName","src":"6402:7:111","typeDescriptions":{}}},"id":42675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6402:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":42657,"id":42676,"nodeType":"Return","src":"6395:21:111"}]},"documentation":{"id":42651,"nodeType":"StructuredDocumentation","src":"5920:280:111","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":42678,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6214:9:111","nodeType":"FunctionDefinition","parameters":{"id":42654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42653,"mutability":"mutable","name":"value","nameLocation":"6232:5:111","nodeType":"VariableDeclaration","scope":42678,"src":"6224:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42652,"name":"uint256","nodeType":"ElementaryTypeName","src":"6224:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6223:15:111"},"returnParameters":{"id":42657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42678,"src":"6262:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":42655,"name":"uint176","nodeType":"ElementaryTypeName","src":"6262:7:111","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6261:9:111"},"scope":44126,"src":"6205:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42705,"nodeType":"Block","src":"6780:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42686,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42681,"src":"6794:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6807:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":42688,"name":"uint168","nodeType":"ElementaryTypeName","src":"6807:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":42687,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6802:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6802:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":42691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6816:3:111","memberName":"max","nodeType":"MemberAccess","src":"6802:17:111","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6794:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42699,"nodeType":"IfStatement","src":"6790:105:111","trueBody":{"id":42698,"nodeType":"Block","src":"6821:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":42694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6873:3:111","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":42695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42681,"src":"6878:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42693,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"6842:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6842:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42697,"nodeType":"RevertStatement","src":"6835:49:111"}]}},{"expression":{"arguments":[{"id":42702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42681,"src":"6919:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6911:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":42700,"name":"uint168","nodeType":"ElementaryTypeName","src":"6911:7:111","typeDescriptions":{}}},"id":42703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6911:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":42685,"id":42704,"nodeType":"Return","src":"6904:21:111"}]},"documentation":{"id":42679,"nodeType":"StructuredDocumentation","src":"6429:280:111","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":42706,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6723:9:111","nodeType":"FunctionDefinition","parameters":{"id":42682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42681,"mutability":"mutable","name":"value","nameLocation":"6741:5:111","nodeType":"VariableDeclaration","scope":42706,"src":"6733:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42680,"name":"uint256","nodeType":"ElementaryTypeName","src":"6733:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6732:15:111"},"returnParameters":{"id":42685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42706,"src":"6771:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":42683,"name":"uint168","nodeType":"ElementaryTypeName","src":"6771:7:111","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6770:9:111"},"scope":44126,"src":"6714:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42733,"nodeType":"Block","src":"7289:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42714,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42709,"src":"7303:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7316:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":42716,"name":"uint160","nodeType":"ElementaryTypeName","src":"7316:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":42715,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7311:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7311:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":42719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7325:3:111","memberName":"max","nodeType":"MemberAccess","src":"7311:17:111","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7303:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42727,"nodeType":"IfStatement","src":"7299:105:111","trueBody":{"id":42726,"nodeType":"Block","src":"7330:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":42722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7382:3:111","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":42723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42709,"src":"7387:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42721,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"7351:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7351:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42725,"nodeType":"RevertStatement","src":"7344:49:111"}]}},{"expression":{"arguments":[{"id":42730,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42709,"src":"7428:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7420:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":42728,"name":"uint160","nodeType":"ElementaryTypeName","src":"7420:7:111","typeDescriptions":{}}},"id":42731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7420:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":42713,"id":42732,"nodeType":"Return","src":"7413:21:111"}]},"documentation":{"id":42707,"nodeType":"StructuredDocumentation","src":"6938:280:111","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":42734,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7232:9:111","nodeType":"FunctionDefinition","parameters":{"id":42710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42709,"mutability":"mutable","name":"value","nameLocation":"7250:5:111","nodeType":"VariableDeclaration","scope":42734,"src":"7242:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42708,"name":"uint256","nodeType":"ElementaryTypeName","src":"7242:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7241:15:111"},"returnParameters":{"id":42713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42734,"src":"7280:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":42711,"name":"uint160","nodeType":"ElementaryTypeName","src":"7280:7:111","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7279:9:111"},"scope":44126,"src":"7223:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42761,"nodeType":"Block","src":"7798:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42742,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42737,"src":"7812:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7825:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":42744,"name":"uint152","nodeType":"ElementaryTypeName","src":"7825:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":42743,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7820:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7820:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":42747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7834:3:111","memberName":"max","nodeType":"MemberAccess","src":"7820:17:111","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7812:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42755,"nodeType":"IfStatement","src":"7808:105:111","trueBody":{"id":42754,"nodeType":"Block","src":"7839:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":42750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7891:3:111","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":42751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42737,"src":"7896:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42749,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"7860:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7860:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42753,"nodeType":"RevertStatement","src":"7853:49:111"}]}},{"expression":{"arguments":[{"id":42758,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42737,"src":"7937:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7929:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":42756,"name":"uint152","nodeType":"ElementaryTypeName","src":"7929:7:111","typeDescriptions":{}}},"id":42759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7929:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":42741,"id":42760,"nodeType":"Return","src":"7922:21:111"}]},"documentation":{"id":42735,"nodeType":"StructuredDocumentation","src":"7447:280:111","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":42762,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7741:9:111","nodeType":"FunctionDefinition","parameters":{"id":42738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42737,"mutability":"mutable","name":"value","nameLocation":"7759:5:111","nodeType":"VariableDeclaration","scope":42762,"src":"7751:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42736,"name":"uint256","nodeType":"ElementaryTypeName","src":"7751:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7750:15:111"},"returnParameters":{"id":42741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42762,"src":"7789:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":42739,"name":"uint152","nodeType":"ElementaryTypeName","src":"7789:7:111","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7788:9:111"},"scope":44126,"src":"7732:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42789,"nodeType":"Block","src":"8307:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42770,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42765,"src":"8321:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8334:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":42772,"name":"uint144","nodeType":"ElementaryTypeName","src":"8334:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":42771,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8329:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8329:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":42775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8343:3:111","memberName":"max","nodeType":"MemberAccess","src":"8329:17:111","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8321:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42783,"nodeType":"IfStatement","src":"8317:105:111","trueBody":{"id":42782,"nodeType":"Block","src":"8348:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":42778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8400:3:111","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":42779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42765,"src":"8405:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42777,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"8369:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8369:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42781,"nodeType":"RevertStatement","src":"8362:49:111"}]}},{"expression":{"arguments":[{"id":42786,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42765,"src":"8446:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8438:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":42784,"name":"uint144","nodeType":"ElementaryTypeName","src":"8438:7:111","typeDescriptions":{}}},"id":42787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8438:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":42769,"id":42788,"nodeType":"Return","src":"8431:21:111"}]},"documentation":{"id":42763,"nodeType":"StructuredDocumentation","src":"7956:280:111","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":42790,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8250:9:111","nodeType":"FunctionDefinition","parameters":{"id":42766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42765,"mutability":"mutable","name":"value","nameLocation":"8268:5:111","nodeType":"VariableDeclaration","scope":42790,"src":"8260:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42764,"name":"uint256","nodeType":"ElementaryTypeName","src":"8260:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8259:15:111"},"returnParameters":{"id":42769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42768,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42790,"src":"8298:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":42767,"name":"uint144","nodeType":"ElementaryTypeName","src":"8298:7:111","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8297:9:111"},"scope":44126,"src":"8241:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42817,"nodeType":"Block","src":"8816:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42798,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42793,"src":"8830:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8843:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":42800,"name":"uint136","nodeType":"ElementaryTypeName","src":"8843:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":42799,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8838:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8838:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":42803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8852:3:111","memberName":"max","nodeType":"MemberAccess","src":"8838:17:111","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8830:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42811,"nodeType":"IfStatement","src":"8826:105:111","trueBody":{"id":42810,"nodeType":"Block","src":"8857:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":42806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8909:3:111","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":42807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42793,"src":"8914:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42805,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"8878:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42809,"nodeType":"RevertStatement","src":"8871:49:111"}]}},{"expression":{"arguments":[{"id":42814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42793,"src":"8955:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8947:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":42812,"name":"uint136","nodeType":"ElementaryTypeName","src":"8947:7:111","typeDescriptions":{}}},"id":42815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8947:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":42797,"id":42816,"nodeType":"Return","src":"8940:21:111"}]},"documentation":{"id":42791,"nodeType":"StructuredDocumentation","src":"8465:280:111","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":42818,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8759:9:111","nodeType":"FunctionDefinition","parameters":{"id":42794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42793,"mutability":"mutable","name":"value","nameLocation":"8777:5:111","nodeType":"VariableDeclaration","scope":42818,"src":"8769:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42792,"name":"uint256","nodeType":"ElementaryTypeName","src":"8769:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8768:15:111"},"returnParameters":{"id":42797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42818,"src":"8807:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":42795,"name":"uint136","nodeType":"ElementaryTypeName","src":"8807:7:111","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8806:9:111"},"scope":44126,"src":"8750:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42845,"nodeType":"Block","src":"9325:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42826,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42821,"src":"9339:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9352:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":42828,"name":"uint128","nodeType":"ElementaryTypeName","src":"9352:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":42827,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9347:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9347:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":42831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9361:3:111","memberName":"max","nodeType":"MemberAccess","src":"9347:17:111","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9339:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42839,"nodeType":"IfStatement","src":"9335:105:111","trueBody":{"id":42838,"nodeType":"Block","src":"9366:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":42834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9418:3:111","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":42835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42821,"src":"9423:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42833,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"9387:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9387:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42837,"nodeType":"RevertStatement","src":"9380:49:111"}]}},{"expression":{"arguments":[{"id":42842,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42821,"src":"9464:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9456:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":42840,"name":"uint128","nodeType":"ElementaryTypeName","src":"9456:7:111","typeDescriptions":{}}},"id":42843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9456:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":42825,"id":42844,"nodeType":"Return","src":"9449:21:111"}]},"documentation":{"id":42819,"nodeType":"StructuredDocumentation","src":"8974:280:111","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":42846,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9268:9:111","nodeType":"FunctionDefinition","parameters":{"id":42822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42821,"mutability":"mutable","name":"value","nameLocation":"9286:5:111","nodeType":"VariableDeclaration","scope":42846,"src":"9278:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42820,"name":"uint256","nodeType":"ElementaryTypeName","src":"9278:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9277:15:111"},"returnParameters":{"id":42825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42846,"src":"9316:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":42823,"name":"uint128","nodeType":"ElementaryTypeName","src":"9316:7:111","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9315:9:111"},"scope":44126,"src":"9259:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42873,"nodeType":"Block","src":"9834:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42854,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42849,"src":"9848:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9861:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":42856,"name":"uint120","nodeType":"ElementaryTypeName","src":"9861:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":42855,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9856:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9856:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":42859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9870:3:111","memberName":"max","nodeType":"MemberAccess","src":"9856:17:111","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9848:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42867,"nodeType":"IfStatement","src":"9844:105:111","trueBody":{"id":42866,"nodeType":"Block","src":"9875:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":42862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9927:3:111","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":42863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42849,"src":"9932:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42861,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"9896:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9896:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42865,"nodeType":"RevertStatement","src":"9889:49:111"}]}},{"expression":{"arguments":[{"id":42870,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42849,"src":"9973:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9965:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":42868,"name":"uint120","nodeType":"ElementaryTypeName","src":"9965:7:111","typeDescriptions":{}}},"id":42871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9965:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":42853,"id":42872,"nodeType":"Return","src":"9958:21:111"}]},"documentation":{"id":42847,"nodeType":"StructuredDocumentation","src":"9483:280:111","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":42874,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9777:9:111","nodeType":"FunctionDefinition","parameters":{"id":42850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42849,"mutability":"mutable","name":"value","nameLocation":"9795:5:111","nodeType":"VariableDeclaration","scope":42874,"src":"9787:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42848,"name":"uint256","nodeType":"ElementaryTypeName","src":"9787:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9786:15:111"},"returnParameters":{"id":42853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42874,"src":"9825:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":42851,"name":"uint120","nodeType":"ElementaryTypeName","src":"9825:7:111","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9824:9:111"},"scope":44126,"src":"9768:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42901,"nodeType":"Block","src":"10343:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42877,"src":"10357:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10370:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":42884,"name":"uint112","nodeType":"ElementaryTypeName","src":"10370:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":42883,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10365:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10365:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":42887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10379:3:111","memberName":"max","nodeType":"MemberAccess","src":"10365:17:111","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10357:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42895,"nodeType":"IfStatement","src":"10353:105:111","trueBody":{"id":42894,"nodeType":"Block","src":"10384:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":42890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10436:3:111","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":42891,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42877,"src":"10441:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42889,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"10405:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10405:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42893,"nodeType":"RevertStatement","src":"10398:49:111"}]}},{"expression":{"arguments":[{"id":42898,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42877,"src":"10482:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10474:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":42896,"name":"uint112","nodeType":"ElementaryTypeName","src":"10474:7:111","typeDescriptions":{}}},"id":42899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10474:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":42881,"id":42900,"nodeType":"Return","src":"10467:21:111"}]},"documentation":{"id":42875,"nodeType":"StructuredDocumentation","src":"9992:280:111","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":42902,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10286:9:111","nodeType":"FunctionDefinition","parameters":{"id":42878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42877,"mutability":"mutable","name":"value","nameLocation":"10304:5:111","nodeType":"VariableDeclaration","scope":42902,"src":"10296:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42876,"name":"uint256","nodeType":"ElementaryTypeName","src":"10296:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10295:15:111"},"returnParameters":{"id":42881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42902,"src":"10334:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":42879,"name":"uint112","nodeType":"ElementaryTypeName","src":"10334:7:111","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10333:9:111"},"scope":44126,"src":"10277:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42929,"nodeType":"Block","src":"10852:152:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42910,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42905,"src":"10866:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10879:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":42912,"name":"uint104","nodeType":"ElementaryTypeName","src":"10879:7:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":42911,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10874:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10874:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":42915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10888:3:111","memberName":"max","nodeType":"MemberAccess","src":"10874:17:111","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10866:25:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42923,"nodeType":"IfStatement","src":"10862:105:111","trueBody":{"id":42922,"nodeType":"Block","src":"10893:74:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":42918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10945:3:111","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":42919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42905,"src":"10950:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42917,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"10914:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10914:42:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42921,"nodeType":"RevertStatement","src":"10907:49:111"}]}},{"expression":{"arguments":[{"id":42926,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42905,"src":"10991:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10983:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":42924,"name":"uint104","nodeType":"ElementaryTypeName","src":"10983:7:111","typeDescriptions":{}}},"id":42927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10983:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":42909,"id":42928,"nodeType":"Return","src":"10976:21:111"}]},"documentation":{"id":42903,"nodeType":"StructuredDocumentation","src":"10501:280:111","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":42930,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10795:9:111","nodeType":"FunctionDefinition","parameters":{"id":42906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42905,"mutability":"mutable","name":"value","nameLocation":"10813:5:111","nodeType":"VariableDeclaration","scope":42930,"src":"10805:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42904,"name":"uint256","nodeType":"ElementaryTypeName","src":"10805:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10804:15:111"},"returnParameters":{"id":42909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42930,"src":"10843:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":42907,"name":"uint104","nodeType":"ElementaryTypeName","src":"10843:7:111","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10842:9:111"},"scope":44126,"src":"10786:218:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42957,"nodeType":"Block","src":"11355:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42938,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42933,"src":"11369:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11382:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":42940,"name":"uint96","nodeType":"ElementaryTypeName","src":"11382:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":42939,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11377:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11377:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":42943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11390:3:111","memberName":"max","nodeType":"MemberAccess","src":"11377:16:111","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11369:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42951,"nodeType":"IfStatement","src":"11365:103:111","trueBody":{"id":42950,"nodeType":"Block","src":"11395:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":42946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11447:2:111","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":42947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42933,"src":"11451:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42945,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"11416:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11416:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42949,"nodeType":"RevertStatement","src":"11409:48:111"}]}},{"expression":{"arguments":[{"id":42954,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42933,"src":"11491:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11484:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":42952,"name":"uint96","nodeType":"ElementaryTypeName","src":"11484:6:111","typeDescriptions":{}}},"id":42955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11484:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":42937,"id":42956,"nodeType":"Return","src":"11477:20:111"}]},"documentation":{"id":42931,"nodeType":"StructuredDocumentation","src":"11010:276:111","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":42958,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11300:8:111","nodeType":"FunctionDefinition","parameters":{"id":42934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42933,"mutability":"mutable","name":"value","nameLocation":"11317:5:111","nodeType":"VariableDeclaration","scope":42958,"src":"11309:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42932,"name":"uint256","nodeType":"ElementaryTypeName","src":"11309:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11308:15:111"},"returnParameters":{"id":42937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42958,"src":"11347:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":42935,"name":"uint96","nodeType":"ElementaryTypeName","src":"11347:6:111","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11346:8:111"},"scope":44126,"src":"11291:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":42985,"nodeType":"Block","src":"11855:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42961,"src":"11869:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11882:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":42968,"name":"uint88","nodeType":"ElementaryTypeName","src":"11882:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":42967,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11877:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11877:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":42971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11890:3:111","memberName":"max","nodeType":"MemberAccess","src":"11877:16:111","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11869:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42979,"nodeType":"IfStatement","src":"11865:103:111","trueBody":{"id":42978,"nodeType":"Block","src":"11895:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":42974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11947:2:111","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":42975,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42961,"src":"11951:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42973,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"11916:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":42976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11916:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":42977,"nodeType":"RevertStatement","src":"11909:48:111"}]}},{"expression":{"arguments":[{"id":42982,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42961,"src":"11991:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11984:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":42980,"name":"uint88","nodeType":"ElementaryTypeName","src":"11984:6:111","typeDescriptions":{}}},"id":42983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11984:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":42965,"id":42984,"nodeType":"Return","src":"11977:20:111"}]},"documentation":{"id":42959,"nodeType":"StructuredDocumentation","src":"11510:276:111","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":42986,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11800:8:111","nodeType":"FunctionDefinition","parameters":{"id":42962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42961,"mutability":"mutable","name":"value","nameLocation":"11817:5:111","nodeType":"VariableDeclaration","scope":42986,"src":"11809:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42960,"name":"uint256","nodeType":"ElementaryTypeName","src":"11809:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11808:15:111"},"returnParameters":{"id":42965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42964,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42986,"src":"11847:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":42963,"name":"uint88","nodeType":"ElementaryTypeName","src":"11847:6:111","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11846:8:111"},"scope":44126,"src":"11791:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43013,"nodeType":"Block","src":"12355:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42994,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42989,"src":"12369:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":42997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12382:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":42996,"name":"uint80","nodeType":"ElementaryTypeName","src":"12382:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":42995,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12377:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":42998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12377:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":42999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12390:3:111","memberName":"max","nodeType":"MemberAccess","src":"12377:16:111","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12369:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43007,"nodeType":"IfStatement","src":"12365:103:111","trueBody":{"id":43006,"nodeType":"Block","src":"12395:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":43002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12447:2:111","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":43003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42989,"src":"12451:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43001,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"12416:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12416:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43005,"nodeType":"RevertStatement","src":"12409:48:111"}]}},{"expression":{"arguments":[{"id":43010,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42989,"src":"12491:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12484:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":43008,"name":"uint80","nodeType":"ElementaryTypeName","src":"12484:6:111","typeDescriptions":{}}},"id":43011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12484:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":42993,"id":43012,"nodeType":"Return","src":"12477:20:111"}]},"documentation":{"id":42987,"nodeType":"StructuredDocumentation","src":"12010:276:111","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":43014,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12300:8:111","nodeType":"FunctionDefinition","parameters":{"id":42990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42989,"mutability":"mutable","name":"value","nameLocation":"12317:5:111","nodeType":"VariableDeclaration","scope":43014,"src":"12309:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42988,"name":"uint256","nodeType":"ElementaryTypeName","src":"12309:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12308:15:111"},"returnParameters":{"id":42993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43014,"src":"12347:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":42991,"name":"uint80","nodeType":"ElementaryTypeName","src":"12347:6:111","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12346:8:111"},"scope":44126,"src":"12291:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43041,"nodeType":"Block","src":"12855:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43017,"src":"12869:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12882:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":43024,"name":"uint72","nodeType":"ElementaryTypeName","src":"12882:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":43023,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12877:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12877:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":43027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12890:3:111","memberName":"max","nodeType":"MemberAccess","src":"12877:16:111","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12869:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43035,"nodeType":"IfStatement","src":"12865:103:111","trueBody":{"id":43034,"nodeType":"Block","src":"12895:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":43030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12947:2:111","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":43031,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43017,"src":"12951:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43029,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"12916:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12916:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43033,"nodeType":"RevertStatement","src":"12909:48:111"}]}},{"expression":{"arguments":[{"id":43038,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43017,"src":"12991:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12984:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":43036,"name":"uint72","nodeType":"ElementaryTypeName","src":"12984:6:111","typeDescriptions":{}}},"id":43039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12984:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":43021,"id":43040,"nodeType":"Return","src":"12977:20:111"}]},"documentation":{"id":43015,"nodeType":"StructuredDocumentation","src":"12510:276:111","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":43042,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12800:8:111","nodeType":"FunctionDefinition","parameters":{"id":43018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43017,"mutability":"mutable","name":"value","nameLocation":"12817:5:111","nodeType":"VariableDeclaration","scope":43042,"src":"12809:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43016,"name":"uint256","nodeType":"ElementaryTypeName","src":"12809:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12808:15:111"},"returnParameters":{"id":43021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43020,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43042,"src":"12847:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":43019,"name":"uint72","nodeType":"ElementaryTypeName","src":"12847:6:111","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12846:8:111"},"scope":44126,"src":"12791:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43069,"nodeType":"Block","src":"13355:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43045,"src":"13369:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13382:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":43052,"name":"uint64","nodeType":"ElementaryTypeName","src":"13382:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":43051,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13377:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13377:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":43055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13390:3:111","memberName":"max","nodeType":"MemberAccess","src":"13377:16:111","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13369:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43063,"nodeType":"IfStatement","src":"13365:103:111","trueBody":{"id":43062,"nodeType":"Block","src":"13395:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":43058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13447:2:111","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":43059,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43045,"src":"13451:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43057,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"13416:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43061,"nodeType":"RevertStatement","src":"13409:48:111"}]}},{"expression":{"arguments":[{"id":43066,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43045,"src":"13491:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13484:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":43064,"name":"uint64","nodeType":"ElementaryTypeName","src":"13484:6:111","typeDescriptions":{}}},"id":43067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13484:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":43049,"id":43068,"nodeType":"Return","src":"13477:20:111"}]},"documentation":{"id":43043,"nodeType":"StructuredDocumentation","src":"13010:276:111","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":43070,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13300:8:111","nodeType":"FunctionDefinition","parameters":{"id":43046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43045,"mutability":"mutable","name":"value","nameLocation":"13317:5:111","nodeType":"VariableDeclaration","scope":43070,"src":"13309:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43044,"name":"uint256","nodeType":"ElementaryTypeName","src":"13309:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13308:15:111"},"returnParameters":{"id":43049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43070,"src":"13347:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":43047,"name":"uint64","nodeType":"ElementaryTypeName","src":"13347:6:111","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13346:8:111"},"scope":44126,"src":"13291:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43097,"nodeType":"Block","src":"13855:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43073,"src":"13869:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13882:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":43080,"name":"uint56","nodeType":"ElementaryTypeName","src":"13882:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":43079,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13877:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13877:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":43083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13890:3:111","memberName":"max","nodeType":"MemberAccess","src":"13877:16:111","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13869:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43091,"nodeType":"IfStatement","src":"13865:103:111","trueBody":{"id":43090,"nodeType":"Block","src":"13895:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":43086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13947:2:111","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":43087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43073,"src":"13951:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43085,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"13916:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13916:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43089,"nodeType":"RevertStatement","src":"13909:48:111"}]}},{"expression":{"arguments":[{"id":43094,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43073,"src":"13991:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13984:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":43092,"name":"uint56","nodeType":"ElementaryTypeName","src":"13984:6:111","typeDescriptions":{}}},"id":43095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13984:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":43077,"id":43096,"nodeType":"Return","src":"13977:20:111"}]},"documentation":{"id":43071,"nodeType":"StructuredDocumentation","src":"13510:276:111","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":43098,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13800:8:111","nodeType":"FunctionDefinition","parameters":{"id":43074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43073,"mutability":"mutable","name":"value","nameLocation":"13817:5:111","nodeType":"VariableDeclaration","scope":43098,"src":"13809:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43072,"name":"uint256","nodeType":"ElementaryTypeName","src":"13809:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13808:15:111"},"returnParameters":{"id":43077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43076,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43098,"src":"13847:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":43075,"name":"uint56","nodeType":"ElementaryTypeName","src":"13847:6:111","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13846:8:111"},"scope":44126,"src":"13791:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43125,"nodeType":"Block","src":"14355:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43106,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43101,"src":"14369:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14382:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":43108,"name":"uint48","nodeType":"ElementaryTypeName","src":"14382:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":43107,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14377:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14377:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":43111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14390:3:111","memberName":"max","nodeType":"MemberAccess","src":"14377:16:111","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14369:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43119,"nodeType":"IfStatement","src":"14365:103:111","trueBody":{"id":43118,"nodeType":"Block","src":"14395:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":43114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14447:2:111","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":43115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43101,"src":"14451:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43113,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"14416:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14416:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43117,"nodeType":"RevertStatement","src":"14409:48:111"}]}},{"expression":{"arguments":[{"id":43122,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43101,"src":"14491:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14484:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":43120,"name":"uint48","nodeType":"ElementaryTypeName","src":"14484:6:111","typeDescriptions":{}}},"id":43123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14484:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":43105,"id":43124,"nodeType":"Return","src":"14477:20:111"}]},"documentation":{"id":43099,"nodeType":"StructuredDocumentation","src":"14010:276:111","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":43126,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14300:8:111","nodeType":"FunctionDefinition","parameters":{"id":43102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43101,"mutability":"mutable","name":"value","nameLocation":"14317:5:111","nodeType":"VariableDeclaration","scope":43126,"src":"14309:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43100,"name":"uint256","nodeType":"ElementaryTypeName","src":"14309:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14308:15:111"},"returnParameters":{"id":43105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43126,"src":"14347:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":43103,"name":"uint48","nodeType":"ElementaryTypeName","src":"14347:6:111","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14346:8:111"},"scope":44126,"src":"14291:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43153,"nodeType":"Block","src":"14855:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43134,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43129,"src":"14869:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14882:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":43136,"name":"uint40","nodeType":"ElementaryTypeName","src":"14882:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":43135,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14877:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14877:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":43139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14890:3:111","memberName":"max","nodeType":"MemberAccess","src":"14877:16:111","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14869:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43147,"nodeType":"IfStatement","src":"14865:103:111","trueBody":{"id":43146,"nodeType":"Block","src":"14895:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":43142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14947:2:111","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":43143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43129,"src":"14951:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43141,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"14916:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14916:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43145,"nodeType":"RevertStatement","src":"14909:48:111"}]}},{"expression":{"arguments":[{"id":43150,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43129,"src":"14991:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14984:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":43148,"name":"uint40","nodeType":"ElementaryTypeName","src":"14984:6:111","typeDescriptions":{}}},"id":43151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14984:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":43133,"id":43152,"nodeType":"Return","src":"14977:20:111"}]},"documentation":{"id":43127,"nodeType":"StructuredDocumentation","src":"14510:276:111","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":43154,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14800:8:111","nodeType":"FunctionDefinition","parameters":{"id":43130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43129,"mutability":"mutable","name":"value","nameLocation":"14817:5:111","nodeType":"VariableDeclaration","scope":43154,"src":"14809:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43128,"name":"uint256","nodeType":"ElementaryTypeName","src":"14809:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14808:15:111"},"returnParameters":{"id":43133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43154,"src":"14847:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":43131,"name":"uint40","nodeType":"ElementaryTypeName","src":"14847:6:111","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14846:8:111"},"scope":44126,"src":"14791:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43181,"nodeType":"Block","src":"15355:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43162,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43157,"src":"15369:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15382:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":43164,"name":"uint32","nodeType":"ElementaryTypeName","src":"15382:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":43163,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15377:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15377:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":43167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15390:3:111","memberName":"max","nodeType":"MemberAccess","src":"15377:16:111","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15369:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43175,"nodeType":"IfStatement","src":"15365:103:111","trueBody":{"id":43174,"nodeType":"Block","src":"15395:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":43170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15447:2:111","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":43171,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43157,"src":"15451:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43169,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"15416:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15416:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43173,"nodeType":"RevertStatement","src":"15409:48:111"}]}},{"expression":{"arguments":[{"id":43178,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43157,"src":"15491:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15484:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":43176,"name":"uint32","nodeType":"ElementaryTypeName","src":"15484:6:111","typeDescriptions":{}}},"id":43179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15484:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":43161,"id":43180,"nodeType":"Return","src":"15477:20:111"}]},"documentation":{"id":43155,"nodeType":"StructuredDocumentation","src":"15010:276:111","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":43182,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15300:8:111","nodeType":"FunctionDefinition","parameters":{"id":43158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43157,"mutability":"mutable","name":"value","nameLocation":"15317:5:111","nodeType":"VariableDeclaration","scope":43182,"src":"15309:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43156,"name":"uint256","nodeType":"ElementaryTypeName","src":"15309:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15308:15:111"},"returnParameters":{"id":43161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43182,"src":"15347:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":43159,"name":"uint32","nodeType":"ElementaryTypeName","src":"15347:6:111","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15346:8:111"},"scope":44126,"src":"15291:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43209,"nodeType":"Block","src":"15855:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43185,"src":"15869:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15882:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":43192,"name":"uint24","nodeType":"ElementaryTypeName","src":"15882:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":43191,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15877:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15877:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":43195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15890:3:111","memberName":"max","nodeType":"MemberAccess","src":"15877:16:111","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15869:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43203,"nodeType":"IfStatement","src":"15865:103:111","trueBody":{"id":43202,"nodeType":"Block","src":"15895:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":43198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15947:2:111","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":43199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43185,"src":"15951:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43197,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"15916:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15916:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43201,"nodeType":"RevertStatement","src":"15909:48:111"}]}},{"expression":{"arguments":[{"id":43206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43185,"src":"15991:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15984:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":43204,"name":"uint24","nodeType":"ElementaryTypeName","src":"15984:6:111","typeDescriptions":{}}},"id":43207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15984:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":43189,"id":43208,"nodeType":"Return","src":"15977:20:111"}]},"documentation":{"id":43183,"nodeType":"StructuredDocumentation","src":"15510:276:111","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":43210,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15800:8:111","nodeType":"FunctionDefinition","parameters":{"id":43186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43185,"mutability":"mutable","name":"value","nameLocation":"15817:5:111","nodeType":"VariableDeclaration","scope":43210,"src":"15809:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43184,"name":"uint256","nodeType":"ElementaryTypeName","src":"15809:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15808:15:111"},"returnParameters":{"id":43189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43210,"src":"15847:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":43187,"name":"uint24","nodeType":"ElementaryTypeName","src":"15847:6:111","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15846:8:111"},"scope":44126,"src":"15791:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43237,"nodeType":"Block","src":"16355:149:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43218,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43213,"src":"16369:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16382:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":43220,"name":"uint16","nodeType":"ElementaryTypeName","src":"16382:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":43219,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16377:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16377:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":43223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16390:3:111","memberName":"max","nodeType":"MemberAccess","src":"16377:16:111","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16369:24:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43231,"nodeType":"IfStatement","src":"16365:103:111","trueBody":{"id":43230,"nodeType":"Block","src":"16395:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":43226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16447:2:111","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":43227,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43213,"src":"16451:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43225,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"16416:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16416:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43229,"nodeType":"RevertStatement","src":"16409:48:111"}]}},{"expression":{"arguments":[{"id":43234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43213,"src":"16491:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16484:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":43232,"name":"uint16","nodeType":"ElementaryTypeName","src":"16484:6:111","typeDescriptions":{}}},"id":43235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16484:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":43217,"id":43236,"nodeType":"Return","src":"16477:20:111"}]},"documentation":{"id":43211,"nodeType":"StructuredDocumentation","src":"16010:276:111","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":43238,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16300:8:111","nodeType":"FunctionDefinition","parameters":{"id":43214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43213,"mutability":"mutable","name":"value","nameLocation":"16317:5:111","nodeType":"VariableDeclaration","scope":43238,"src":"16309:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43212,"name":"uint256","nodeType":"ElementaryTypeName","src":"16309:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16308:15:111"},"returnParameters":{"id":43217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43216,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43238,"src":"16347:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":43215,"name":"uint16","nodeType":"ElementaryTypeName","src":"16347:6:111","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16346:8:111"},"scope":44126,"src":"16291:213:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43265,"nodeType":"Block","src":"16849:146:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43241,"src":"16863:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":43249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16876:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":43248,"name":"uint8","nodeType":"ElementaryTypeName","src":"16876:5:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":43247,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16871:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":43250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16871:11:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":43251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16883:3:111","memberName":"max","nodeType":"MemberAccess","src":"16871:15:111","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16863:23:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43259,"nodeType":"IfStatement","src":"16859:101:111","trueBody":{"id":43258,"nodeType":"Block","src":"16888:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":43254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16940:1:111","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":43255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43241,"src":"16943:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43253,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42381,"src":"16909:30:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":43256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16909:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43257,"nodeType":"RevertStatement","src":"16902:47:111"}]}},{"expression":{"arguments":[{"id":43262,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43241,"src":"16982:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":43261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16976:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":43260,"name":"uint8","nodeType":"ElementaryTypeName","src":"16976:5:111","typeDescriptions":{}}},"id":43263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16976:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":43245,"id":43264,"nodeType":"Return","src":"16969:19:111"}]},"documentation":{"id":43239,"nodeType":"StructuredDocumentation","src":"16510:272:111","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":43266,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16796:7:111","nodeType":"FunctionDefinition","parameters":{"id":43242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43241,"mutability":"mutable","name":"value","nameLocation":"16812:5:111","nodeType":"VariableDeclaration","scope":43266,"src":"16804:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43240,"name":"uint256","nodeType":"ElementaryTypeName","src":"16804:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16803:15:111"},"returnParameters":{"id":43245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43266,"src":"16842:5:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":43243,"name":"uint8","nodeType":"ElementaryTypeName","src":"16842:5:111","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16841:7:111"},"scope":44126,"src":"16787:208:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43288,"nodeType":"Block","src":"17231:128:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43269,"src":"17245:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":43275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17253:1:111","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17245:9:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43282,"nodeType":"IfStatement","src":"17241:81:111","trueBody":{"id":43281,"nodeType":"Block","src":"17256:66:111","statements":[{"errorCall":{"arguments":[{"id":43278,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43269,"src":"17305:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43277,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42386,"src":"17277:27:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":43279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17277:34:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43280,"nodeType":"RevertStatement","src":"17270:41:111"}]}},{"expression":{"arguments":[{"id":43285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43269,"src":"17346:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17338:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":43283,"name":"uint256","nodeType":"ElementaryTypeName","src":"17338:7:111","typeDescriptions":{}}},"id":43286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17338:14:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":43273,"id":43287,"nodeType":"Return","src":"17331:21:111"}]},"documentation":{"id":43267,"nodeType":"StructuredDocumentation","src":"17001:160:111","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":43289,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17175:9:111","nodeType":"FunctionDefinition","parameters":{"id":43270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43269,"mutability":"mutable","name":"value","nameLocation":"17192:5:111","nodeType":"VariableDeclaration","scope":43289,"src":"17185:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43268,"name":"int256","nodeType":"ElementaryTypeName","src":"17185:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17184:14:111"},"returnParameters":{"id":43273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":43289,"src":"17222:7:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":43271,"name":"uint256","nodeType":"ElementaryTypeName","src":"17222:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17221:9:111"},"scope":44126,"src":"17166:193:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43314,"nodeType":"Block","src":"17756:150:111","statements":[{"expression":{"id":43302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43297,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43295,"src":"17766:10:111","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43300,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43292,"src":"17786:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17779:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":43298,"name":"int248","nodeType":"ElementaryTypeName","src":"17779:6:111","typeDescriptions":{}}},"id":43301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17779:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17766:26:111","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":43303,"nodeType":"ExpressionStatement","src":"17766:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43304,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43295,"src":"17806:10:111","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43305,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43292,"src":"17820:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17806:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43313,"nodeType":"IfStatement","src":"17802:98:111","trueBody":{"id":43312,"nodeType":"Block","src":"17827:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":43308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17878:3:111","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":43309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43292,"src":"17883:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43307,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"17848:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17848:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43311,"nodeType":"RevertStatement","src":"17841:48:111"}]}}]},"documentation":{"id":43290,"nodeType":"StructuredDocumentation","src":"17365:312:111","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":43315,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17691:8:111","nodeType":"FunctionDefinition","parameters":{"id":43293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43292,"mutability":"mutable","name":"value","nameLocation":"17707:5:111","nodeType":"VariableDeclaration","scope":43315,"src":"17700:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43291,"name":"int256","nodeType":"ElementaryTypeName","src":"17700:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17699:14:111"},"returnParameters":{"id":43296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43295,"mutability":"mutable","name":"downcasted","nameLocation":"17744:10:111","nodeType":"VariableDeclaration","scope":43315,"src":"17737:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":43294,"name":"int248","nodeType":"ElementaryTypeName","src":"17737:6:111","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17736:19:111"},"scope":44126,"src":"17682:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43340,"nodeType":"Block","src":"18303:150:111","statements":[{"expression":{"id":43328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43323,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43321,"src":"18313:10:111","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43318,"src":"18333:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18326:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":43324,"name":"int240","nodeType":"ElementaryTypeName","src":"18326:6:111","typeDescriptions":{}}},"id":43327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18326:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18313:26:111","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":43329,"nodeType":"ExpressionStatement","src":"18313:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43330,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43321,"src":"18353:10:111","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43318,"src":"18367:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18353:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43339,"nodeType":"IfStatement","src":"18349:98:111","trueBody":{"id":43338,"nodeType":"Block","src":"18374:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":43334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18425:3:111","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":43335,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43318,"src":"18430:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43333,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"18395:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18395:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43337,"nodeType":"RevertStatement","src":"18388:48:111"}]}}]},"documentation":{"id":43316,"nodeType":"StructuredDocumentation","src":"17912:312:111","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":43341,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18238:8:111","nodeType":"FunctionDefinition","parameters":{"id":43319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43318,"mutability":"mutable","name":"value","nameLocation":"18254:5:111","nodeType":"VariableDeclaration","scope":43341,"src":"18247:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43317,"name":"int256","nodeType":"ElementaryTypeName","src":"18247:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18246:14:111"},"returnParameters":{"id":43322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43321,"mutability":"mutable","name":"downcasted","nameLocation":"18291:10:111","nodeType":"VariableDeclaration","scope":43341,"src":"18284:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":43320,"name":"int240","nodeType":"ElementaryTypeName","src":"18284:6:111","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18283:19:111"},"scope":44126,"src":"18229:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43366,"nodeType":"Block","src":"18850:150:111","statements":[{"expression":{"id":43354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43349,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43347,"src":"18860:10:111","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43352,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43344,"src":"18880:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18873:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":43350,"name":"int232","nodeType":"ElementaryTypeName","src":"18873:6:111","typeDescriptions":{}}},"id":43353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18873:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18860:26:111","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":43355,"nodeType":"ExpressionStatement","src":"18860:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43356,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43347,"src":"18900:10:111","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43357,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43344,"src":"18914:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18900:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43365,"nodeType":"IfStatement","src":"18896:98:111","trueBody":{"id":43364,"nodeType":"Block","src":"18921:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":43360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18972:3:111","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":43361,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43344,"src":"18977:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43359,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"18942:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18942:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43363,"nodeType":"RevertStatement","src":"18935:48:111"}]}}]},"documentation":{"id":43342,"nodeType":"StructuredDocumentation","src":"18459:312:111","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":43367,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18785:8:111","nodeType":"FunctionDefinition","parameters":{"id":43345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43344,"mutability":"mutable","name":"value","nameLocation":"18801:5:111","nodeType":"VariableDeclaration","scope":43367,"src":"18794:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43343,"name":"int256","nodeType":"ElementaryTypeName","src":"18794:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18793:14:111"},"returnParameters":{"id":43348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43347,"mutability":"mutable","name":"downcasted","nameLocation":"18838:10:111","nodeType":"VariableDeclaration","scope":43367,"src":"18831:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":43346,"name":"int232","nodeType":"ElementaryTypeName","src":"18831:6:111","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18830:19:111"},"scope":44126,"src":"18776:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43392,"nodeType":"Block","src":"19397:150:111","statements":[{"expression":{"id":43380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43375,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43373,"src":"19407:10:111","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43378,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43370,"src":"19427:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19420:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":43376,"name":"int224","nodeType":"ElementaryTypeName","src":"19420:6:111","typeDescriptions":{}}},"id":43379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19420:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19407:26:111","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":43381,"nodeType":"ExpressionStatement","src":"19407:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43382,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43373,"src":"19447:10:111","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43383,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43370,"src":"19461:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19447:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43391,"nodeType":"IfStatement","src":"19443:98:111","trueBody":{"id":43390,"nodeType":"Block","src":"19468:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":43386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19519:3:111","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":43387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43370,"src":"19524:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43385,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"19489:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19489:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43389,"nodeType":"RevertStatement","src":"19482:48:111"}]}}]},"documentation":{"id":43368,"nodeType":"StructuredDocumentation","src":"19006:312:111","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":43393,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19332:8:111","nodeType":"FunctionDefinition","parameters":{"id":43371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43370,"mutability":"mutable","name":"value","nameLocation":"19348:5:111","nodeType":"VariableDeclaration","scope":43393,"src":"19341:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43369,"name":"int256","nodeType":"ElementaryTypeName","src":"19341:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19340:14:111"},"returnParameters":{"id":43374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43373,"mutability":"mutable","name":"downcasted","nameLocation":"19385:10:111","nodeType":"VariableDeclaration","scope":43393,"src":"19378:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":43372,"name":"int224","nodeType":"ElementaryTypeName","src":"19378:6:111","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19377:19:111"},"scope":44126,"src":"19323:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43418,"nodeType":"Block","src":"19944:150:111","statements":[{"expression":{"id":43406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43401,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43399,"src":"19954:10:111","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43404,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43396,"src":"19974:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19967:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":43402,"name":"int216","nodeType":"ElementaryTypeName","src":"19967:6:111","typeDescriptions":{}}},"id":43405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19967:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19954:26:111","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":43407,"nodeType":"ExpressionStatement","src":"19954:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43408,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43399,"src":"19994:10:111","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43396,"src":"20008:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19994:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43417,"nodeType":"IfStatement","src":"19990:98:111","trueBody":{"id":43416,"nodeType":"Block","src":"20015:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":43412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20066:3:111","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":43413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43396,"src":"20071:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43411,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"20036:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20036:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43415,"nodeType":"RevertStatement","src":"20029:48:111"}]}}]},"documentation":{"id":43394,"nodeType":"StructuredDocumentation","src":"19553:312:111","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":43419,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19879:8:111","nodeType":"FunctionDefinition","parameters":{"id":43397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43396,"mutability":"mutable","name":"value","nameLocation":"19895:5:111","nodeType":"VariableDeclaration","scope":43419,"src":"19888:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43395,"name":"int256","nodeType":"ElementaryTypeName","src":"19888:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19887:14:111"},"returnParameters":{"id":43400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43399,"mutability":"mutable","name":"downcasted","nameLocation":"19932:10:111","nodeType":"VariableDeclaration","scope":43419,"src":"19925:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":43398,"name":"int216","nodeType":"ElementaryTypeName","src":"19925:6:111","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19924:19:111"},"scope":44126,"src":"19870:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43444,"nodeType":"Block","src":"20491:150:111","statements":[{"expression":{"id":43432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43427,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43425,"src":"20501:10:111","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43430,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43422,"src":"20521:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20514:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":43428,"name":"int208","nodeType":"ElementaryTypeName","src":"20514:6:111","typeDescriptions":{}}},"id":43431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20514:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20501:26:111","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":43433,"nodeType":"ExpressionStatement","src":"20501:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43434,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43425,"src":"20541:10:111","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43422,"src":"20555:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20541:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43443,"nodeType":"IfStatement","src":"20537:98:111","trueBody":{"id":43442,"nodeType":"Block","src":"20562:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":43438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20613:3:111","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":43439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43422,"src":"20618:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43437,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"20583:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20583:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43441,"nodeType":"RevertStatement","src":"20576:48:111"}]}}]},"documentation":{"id":43420,"nodeType":"StructuredDocumentation","src":"20100:312:111","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":43445,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20426:8:111","nodeType":"FunctionDefinition","parameters":{"id":43423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43422,"mutability":"mutable","name":"value","nameLocation":"20442:5:111","nodeType":"VariableDeclaration","scope":43445,"src":"20435:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43421,"name":"int256","nodeType":"ElementaryTypeName","src":"20435:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20434:14:111"},"returnParameters":{"id":43426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43425,"mutability":"mutable","name":"downcasted","nameLocation":"20479:10:111","nodeType":"VariableDeclaration","scope":43445,"src":"20472:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":43424,"name":"int208","nodeType":"ElementaryTypeName","src":"20472:6:111","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20471:19:111"},"scope":44126,"src":"20417:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43470,"nodeType":"Block","src":"21038:150:111","statements":[{"expression":{"id":43458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43453,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43451,"src":"21048:10:111","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43456,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43448,"src":"21068:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21061:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":43454,"name":"int200","nodeType":"ElementaryTypeName","src":"21061:6:111","typeDescriptions":{}}},"id":43457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21061:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21048:26:111","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":43459,"nodeType":"ExpressionStatement","src":"21048:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43460,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43451,"src":"21088:10:111","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43461,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43448,"src":"21102:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21088:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43469,"nodeType":"IfStatement","src":"21084:98:111","trueBody":{"id":43468,"nodeType":"Block","src":"21109:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":43464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21160:3:111","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":43465,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43448,"src":"21165:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43463,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"21130:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21130:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43467,"nodeType":"RevertStatement","src":"21123:48:111"}]}}]},"documentation":{"id":43446,"nodeType":"StructuredDocumentation","src":"20647:312:111","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":43471,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20973:8:111","nodeType":"FunctionDefinition","parameters":{"id":43449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43448,"mutability":"mutable","name":"value","nameLocation":"20989:5:111","nodeType":"VariableDeclaration","scope":43471,"src":"20982:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43447,"name":"int256","nodeType":"ElementaryTypeName","src":"20982:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20981:14:111"},"returnParameters":{"id":43452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43451,"mutability":"mutable","name":"downcasted","nameLocation":"21026:10:111","nodeType":"VariableDeclaration","scope":43471,"src":"21019:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":43450,"name":"int200","nodeType":"ElementaryTypeName","src":"21019:6:111","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21018:19:111"},"scope":44126,"src":"20964:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43496,"nodeType":"Block","src":"21585:150:111","statements":[{"expression":{"id":43484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43479,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43477,"src":"21595:10:111","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43482,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43474,"src":"21615:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21608:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":43480,"name":"int192","nodeType":"ElementaryTypeName","src":"21608:6:111","typeDescriptions":{}}},"id":43483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21608:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21595:26:111","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":43485,"nodeType":"ExpressionStatement","src":"21595:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43486,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43477,"src":"21635:10:111","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43487,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43474,"src":"21649:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21635:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43495,"nodeType":"IfStatement","src":"21631:98:111","trueBody":{"id":43494,"nodeType":"Block","src":"21656:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":43490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21707:3:111","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":43491,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43474,"src":"21712:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43489,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"21677:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21677:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43493,"nodeType":"RevertStatement","src":"21670:48:111"}]}}]},"documentation":{"id":43472,"nodeType":"StructuredDocumentation","src":"21194:312:111","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":43497,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21520:8:111","nodeType":"FunctionDefinition","parameters":{"id":43475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43474,"mutability":"mutable","name":"value","nameLocation":"21536:5:111","nodeType":"VariableDeclaration","scope":43497,"src":"21529:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43473,"name":"int256","nodeType":"ElementaryTypeName","src":"21529:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21528:14:111"},"returnParameters":{"id":43478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43477,"mutability":"mutable","name":"downcasted","nameLocation":"21573:10:111","nodeType":"VariableDeclaration","scope":43497,"src":"21566:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":43476,"name":"int192","nodeType":"ElementaryTypeName","src":"21566:6:111","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21565:19:111"},"scope":44126,"src":"21511:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43522,"nodeType":"Block","src":"22132:150:111","statements":[{"expression":{"id":43510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43505,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43503,"src":"22142:10:111","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43500,"src":"22162:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43507,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22155:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":43506,"name":"int184","nodeType":"ElementaryTypeName","src":"22155:6:111","typeDescriptions":{}}},"id":43509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22155:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22142:26:111","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":43511,"nodeType":"ExpressionStatement","src":"22142:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43512,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43503,"src":"22182:10:111","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43500,"src":"22196:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22182:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43521,"nodeType":"IfStatement","src":"22178:98:111","trueBody":{"id":43520,"nodeType":"Block","src":"22203:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":43516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22254:3:111","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":43517,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43500,"src":"22259:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43515,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"22224:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22224:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43519,"nodeType":"RevertStatement","src":"22217:48:111"}]}}]},"documentation":{"id":43498,"nodeType":"StructuredDocumentation","src":"21741:312:111","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":43523,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22067:8:111","nodeType":"FunctionDefinition","parameters":{"id":43501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43500,"mutability":"mutable","name":"value","nameLocation":"22083:5:111","nodeType":"VariableDeclaration","scope":43523,"src":"22076:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43499,"name":"int256","nodeType":"ElementaryTypeName","src":"22076:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22075:14:111"},"returnParameters":{"id":43504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43503,"mutability":"mutable","name":"downcasted","nameLocation":"22120:10:111","nodeType":"VariableDeclaration","scope":43523,"src":"22113:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":43502,"name":"int184","nodeType":"ElementaryTypeName","src":"22113:6:111","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22112:19:111"},"scope":44126,"src":"22058:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43548,"nodeType":"Block","src":"22679:150:111","statements":[{"expression":{"id":43536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43531,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43529,"src":"22689:10:111","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43534,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43526,"src":"22709:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22702:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":43532,"name":"int176","nodeType":"ElementaryTypeName","src":"22702:6:111","typeDescriptions":{}}},"id":43535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22702:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22689:26:111","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":43537,"nodeType":"ExpressionStatement","src":"22689:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43538,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43529,"src":"22729:10:111","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43526,"src":"22743:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22729:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43547,"nodeType":"IfStatement","src":"22725:98:111","trueBody":{"id":43546,"nodeType":"Block","src":"22750:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":43542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22801:3:111","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":43543,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43526,"src":"22806:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43541,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"22771:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22771:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43545,"nodeType":"RevertStatement","src":"22764:48:111"}]}}]},"documentation":{"id":43524,"nodeType":"StructuredDocumentation","src":"22288:312:111","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":43549,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22614:8:111","nodeType":"FunctionDefinition","parameters":{"id":43527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43526,"mutability":"mutable","name":"value","nameLocation":"22630:5:111","nodeType":"VariableDeclaration","scope":43549,"src":"22623:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43525,"name":"int256","nodeType":"ElementaryTypeName","src":"22623:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22622:14:111"},"returnParameters":{"id":43530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43529,"mutability":"mutable","name":"downcasted","nameLocation":"22667:10:111","nodeType":"VariableDeclaration","scope":43549,"src":"22660:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":43528,"name":"int176","nodeType":"ElementaryTypeName","src":"22660:6:111","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22659:19:111"},"scope":44126,"src":"22605:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43574,"nodeType":"Block","src":"23226:150:111","statements":[{"expression":{"id":43562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43557,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43555,"src":"23236:10:111","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43560,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43552,"src":"23256:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23249:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":43558,"name":"int168","nodeType":"ElementaryTypeName","src":"23249:6:111","typeDescriptions":{}}},"id":43561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23249:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23236:26:111","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":43563,"nodeType":"ExpressionStatement","src":"23236:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43564,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43555,"src":"23276:10:111","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43552,"src":"23290:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23276:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43573,"nodeType":"IfStatement","src":"23272:98:111","trueBody":{"id":43572,"nodeType":"Block","src":"23297:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":43568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23348:3:111","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":43569,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43552,"src":"23353:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43567,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"23318:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23318:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43571,"nodeType":"RevertStatement","src":"23311:48:111"}]}}]},"documentation":{"id":43550,"nodeType":"StructuredDocumentation","src":"22835:312:111","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":43575,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23161:8:111","nodeType":"FunctionDefinition","parameters":{"id":43553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43552,"mutability":"mutable","name":"value","nameLocation":"23177:5:111","nodeType":"VariableDeclaration","scope":43575,"src":"23170:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43551,"name":"int256","nodeType":"ElementaryTypeName","src":"23170:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23169:14:111"},"returnParameters":{"id":43556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43555,"mutability":"mutable","name":"downcasted","nameLocation":"23214:10:111","nodeType":"VariableDeclaration","scope":43575,"src":"23207:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":43554,"name":"int168","nodeType":"ElementaryTypeName","src":"23207:6:111","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23206:19:111"},"scope":44126,"src":"23152:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43600,"nodeType":"Block","src":"23773:150:111","statements":[{"expression":{"id":43588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43583,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43581,"src":"23783:10:111","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43586,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43578,"src":"23803:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23796:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":43584,"name":"int160","nodeType":"ElementaryTypeName","src":"23796:6:111","typeDescriptions":{}}},"id":43587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23796:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23783:26:111","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":43589,"nodeType":"ExpressionStatement","src":"23783:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43590,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43581,"src":"23823:10:111","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43591,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43578,"src":"23837:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23823:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43599,"nodeType":"IfStatement","src":"23819:98:111","trueBody":{"id":43598,"nodeType":"Block","src":"23844:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":43594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23895:3:111","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":43595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43578,"src":"23900:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43593,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"23865:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23865:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43597,"nodeType":"RevertStatement","src":"23858:48:111"}]}}]},"documentation":{"id":43576,"nodeType":"StructuredDocumentation","src":"23382:312:111","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":43601,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23708:8:111","nodeType":"FunctionDefinition","parameters":{"id":43579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43578,"mutability":"mutable","name":"value","nameLocation":"23724:5:111","nodeType":"VariableDeclaration","scope":43601,"src":"23717:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43577,"name":"int256","nodeType":"ElementaryTypeName","src":"23717:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23716:14:111"},"returnParameters":{"id":43582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43581,"mutability":"mutable","name":"downcasted","nameLocation":"23761:10:111","nodeType":"VariableDeclaration","scope":43601,"src":"23754:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":43580,"name":"int160","nodeType":"ElementaryTypeName","src":"23754:6:111","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23753:19:111"},"scope":44126,"src":"23699:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43626,"nodeType":"Block","src":"24320:150:111","statements":[{"expression":{"id":43614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43609,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43607,"src":"24330:10:111","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43612,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43604,"src":"24350:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24343:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":43610,"name":"int152","nodeType":"ElementaryTypeName","src":"24343:6:111","typeDescriptions":{}}},"id":43613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24343:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24330:26:111","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":43615,"nodeType":"ExpressionStatement","src":"24330:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43616,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43607,"src":"24370:10:111","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43617,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43604,"src":"24384:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24370:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43625,"nodeType":"IfStatement","src":"24366:98:111","trueBody":{"id":43624,"nodeType":"Block","src":"24391:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":43620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24442:3:111","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":43621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43604,"src":"24447:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43619,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"24412:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24412:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43623,"nodeType":"RevertStatement","src":"24405:48:111"}]}}]},"documentation":{"id":43602,"nodeType":"StructuredDocumentation","src":"23929:312:111","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":43627,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24255:8:111","nodeType":"FunctionDefinition","parameters":{"id":43605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43604,"mutability":"mutable","name":"value","nameLocation":"24271:5:111","nodeType":"VariableDeclaration","scope":43627,"src":"24264:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43603,"name":"int256","nodeType":"ElementaryTypeName","src":"24264:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24263:14:111"},"returnParameters":{"id":43608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43607,"mutability":"mutable","name":"downcasted","nameLocation":"24308:10:111","nodeType":"VariableDeclaration","scope":43627,"src":"24301:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":43606,"name":"int152","nodeType":"ElementaryTypeName","src":"24301:6:111","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24300:19:111"},"scope":44126,"src":"24246:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43652,"nodeType":"Block","src":"24867:150:111","statements":[{"expression":{"id":43640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43635,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43633,"src":"24877:10:111","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43638,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43630,"src":"24897:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24890:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":43636,"name":"int144","nodeType":"ElementaryTypeName","src":"24890:6:111","typeDescriptions":{}}},"id":43639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24890:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24877:26:111","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":43641,"nodeType":"ExpressionStatement","src":"24877:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43642,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43633,"src":"24917:10:111","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43643,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43630,"src":"24931:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24917:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43651,"nodeType":"IfStatement","src":"24913:98:111","trueBody":{"id":43650,"nodeType":"Block","src":"24938:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":43646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24989:3:111","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":43647,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43630,"src":"24994:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43645,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"24959:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24959:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43649,"nodeType":"RevertStatement","src":"24952:48:111"}]}}]},"documentation":{"id":43628,"nodeType":"StructuredDocumentation","src":"24476:312:111","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":43653,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24802:8:111","nodeType":"FunctionDefinition","parameters":{"id":43631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43630,"mutability":"mutable","name":"value","nameLocation":"24818:5:111","nodeType":"VariableDeclaration","scope":43653,"src":"24811:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43629,"name":"int256","nodeType":"ElementaryTypeName","src":"24811:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24810:14:111"},"returnParameters":{"id":43634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43633,"mutability":"mutable","name":"downcasted","nameLocation":"24855:10:111","nodeType":"VariableDeclaration","scope":43653,"src":"24848:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":43632,"name":"int144","nodeType":"ElementaryTypeName","src":"24848:6:111","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24847:19:111"},"scope":44126,"src":"24793:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43678,"nodeType":"Block","src":"25414:150:111","statements":[{"expression":{"id":43666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43661,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43659,"src":"25424:10:111","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43664,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43656,"src":"25444:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25437:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":43662,"name":"int136","nodeType":"ElementaryTypeName","src":"25437:6:111","typeDescriptions":{}}},"id":43665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25437:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25424:26:111","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":43667,"nodeType":"ExpressionStatement","src":"25424:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43668,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43659,"src":"25464:10:111","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43669,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43656,"src":"25478:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25464:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43677,"nodeType":"IfStatement","src":"25460:98:111","trueBody":{"id":43676,"nodeType":"Block","src":"25485:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":43672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25536:3:111","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":43673,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43656,"src":"25541:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43671,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"25506:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25506:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43675,"nodeType":"RevertStatement","src":"25499:48:111"}]}}]},"documentation":{"id":43654,"nodeType":"StructuredDocumentation","src":"25023:312:111","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":43679,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25349:8:111","nodeType":"FunctionDefinition","parameters":{"id":43657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43656,"mutability":"mutable","name":"value","nameLocation":"25365:5:111","nodeType":"VariableDeclaration","scope":43679,"src":"25358:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43655,"name":"int256","nodeType":"ElementaryTypeName","src":"25358:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25357:14:111"},"returnParameters":{"id":43660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43659,"mutability":"mutable","name":"downcasted","nameLocation":"25402:10:111","nodeType":"VariableDeclaration","scope":43679,"src":"25395:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":43658,"name":"int136","nodeType":"ElementaryTypeName","src":"25395:6:111","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25394:19:111"},"scope":44126,"src":"25340:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43704,"nodeType":"Block","src":"25961:150:111","statements":[{"expression":{"id":43692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43687,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43685,"src":"25971:10:111","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43690,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43682,"src":"25991:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25984:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":43688,"name":"int128","nodeType":"ElementaryTypeName","src":"25984:6:111","typeDescriptions":{}}},"id":43691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25984:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25971:26:111","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":43693,"nodeType":"ExpressionStatement","src":"25971:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43694,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43685,"src":"26011:10:111","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43682,"src":"26025:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26011:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43703,"nodeType":"IfStatement","src":"26007:98:111","trueBody":{"id":43702,"nodeType":"Block","src":"26032:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":43698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26083:3:111","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":43699,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43682,"src":"26088:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43697,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"26053:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26053:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43701,"nodeType":"RevertStatement","src":"26046:48:111"}]}}]},"documentation":{"id":43680,"nodeType":"StructuredDocumentation","src":"25570:312:111","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":43705,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25896:8:111","nodeType":"FunctionDefinition","parameters":{"id":43683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43682,"mutability":"mutable","name":"value","nameLocation":"25912:5:111","nodeType":"VariableDeclaration","scope":43705,"src":"25905:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43681,"name":"int256","nodeType":"ElementaryTypeName","src":"25905:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25904:14:111"},"returnParameters":{"id":43686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43685,"mutability":"mutable","name":"downcasted","nameLocation":"25949:10:111","nodeType":"VariableDeclaration","scope":43705,"src":"25942:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":43684,"name":"int128","nodeType":"ElementaryTypeName","src":"25942:6:111","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25941:19:111"},"scope":44126,"src":"25887:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43730,"nodeType":"Block","src":"26508:150:111","statements":[{"expression":{"id":43718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43713,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43711,"src":"26518:10:111","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43716,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43708,"src":"26538:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26531:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":43714,"name":"int120","nodeType":"ElementaryTypeName","src":"26531:6:111","typeDescriptions":{}}},"id":43717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26531:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26518:26:111","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":43719,"nodeType":"ExpressionStatement","src":"26518:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43720,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43711,"src":"26558:10:111","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43721,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43708,"src":"26572:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26558:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43729,"nodeType":"IfStatement","src":"26554:98:111","trueBody":{"id":43728,"nodeType":"Block","src":"26579:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":43724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26630:3:111","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":43725,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43708,"src":"26635:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43723,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"26600:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26600:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43727,"nodeType":"RevertStatement","src":"26593:48:111"}]}}]},"documentation":{"id":43706,"nodeType":"StructuredDocumentation","src":"26117:312:111","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":43731,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26443:8:111","nodeType":"FunctionDefinition","parameters":{"id":43709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43708,"mutability":"mutable","name":"value","nameLocation":"26459:5:111","nodeType":"VariableDeclaration","scope":43731,"src":"26452:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43707,"name":"int256","nodeType":"ElementaryTypeName","src":"26452:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26451:14:111"},"returnParameters":{"id":43712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43711,"mutability":"mutable","name":"downcasted","nameLocation":"26496:10:111","nodeType":"VariableDeclaration","scope":43731,"src":"26489:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":43710,"name":"int120","nodeType":"ElementaryTypeName","src":"26489:6:111","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26488:19:111"},"scope":44126,"src":"26434:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43756,"nodeType":"Block","src":"27055:150:111","statements":[{"expression":{"id":43744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43739,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43737,"src":"27065:10:111","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43742,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43734,"src":"27085:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27078:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":43740,"name":"int112","nodeType":"ElementaryTypeName","src":"27078:6:111","typeDescriptions":{}}},"id":43743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27078:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27065:26:111","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":43745,"nodeType":"ExpressionStatement","src":"27065:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43746,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43737,"src":"27105:10:111","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43747,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43734,"src":"27119:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27105:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43755,"nodeType":"IfStatement","src":"27101:98:111","trueBody":{"id":43754,"nodeType":"Block","src":"27126:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":43750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27177:3:111","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":43751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43734,"src":"27182:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43749,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"27147:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27147:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43753,"nodeType":"RevertStatement","src":"27140:48:111"}]}}]},"documentation":{"id":43732,"nodeType":"StructuredDocumentation","src":"26664:312:111","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":43757,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26990:8:111","nodeType":"FunctionDefinition","parameters":{"id":43735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43734,"mutability":"mutable","name":"value","nameLocation":"27006:5:111","nodeType":"VariableDeclaration","scope":43757,"src":"26999:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43733,"name":"int256","nodeType":"ElementaryTypeName","src":"26999:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26998:14:111"},"returnParameters":{"id":43738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43737,"mutability":"mutable","name":"downcasted","nameLocation":"27043:10:111","nodeType":"VariableDeclaration","scope":43757,"src":"27036:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":43736,"name":"int112","nodeType":"ElementaryTypeName","src":"27036:6:111","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27035:19:111"},"scope":44126,"src":"26981:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43782,"nodeType":"Block","src":"27602:150:111","statements":[{"expression":{"id":43770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43765,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43763,"src":"27612:10:111","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43760,"src":"27632:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27625:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":43766,"name":"int104","nodeType":"ElementaryTypeName","src":"27625:6:111","typeDescriptions":{}}},"id":43769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27625:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27612:26:111","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":43771,"nodeType":"ExpressionStatement","src":"27612:26:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43772,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43763,"src":"27652:10:111","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43773,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43760,"src":"27666:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27652:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43781,"nodeType":"IfStatement","src":"27648:98:111","trueBody":{"id":43780,"nodeType":"Block","src":"27673:73:111","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":43776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27724:3:111","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":43777,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43760,"src":"27729:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43775,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"27694:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27694:41:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43779,"nodeType":"RevertStatement","src":"27687:48:111"}]}}]},"documentation":{"id":43758,"nodeType":"StructuredDocumentation","src":"27211:312:111","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":43783,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27537:8:111","nodeType":"FunctionDefinition","parameters":{"id":43761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43760,"mutability":"mutable","name":"value","nameLocation":"27553:5:111","nodeType":"VariableDeclaration","scope":43783,"src":"27546:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43759,"name":"int256","nodeType":"ElementaryTypeName","src":"27546:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27545:14:111"},"returnParameters":{"id":43764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43763,"mutability":"mutable","name":"downcasted","nameLocation":"27590:10:111","nodeType":"VariableDeclaration","scope":43783,"src":"27583:17:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":43762,"name":"int104","nodeType":"ElementaryTypeName","src":"27583:6:111","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27582:19:111"},"scope":44126,"src":"27528:224:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43808,"nodeType":"Block","src":"28142:148:111","statements":[{"expression":{"id":43796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43791,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43789,"src":"28152:10:111","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43786,"src":"28171:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28165:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":43792,"name":"int96","nodeType":"ElementaryTypeName","src":"28165:5:111","typeDescriptions":{}}},"id":43795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28165:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28152:25:111","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":43797,"nodeType":"ExpressionStatement","src":"28152:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43798,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43789,"src":"28191:10:111","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43799,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43786,"src":"28205:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28191:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43807,"nodeType":"IfStatement","src":"28187:97:111","trueBody":{"id":43806,"nodeType":"Block","src":"28212:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":43802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28263:2:111","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":43803,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43786,"src":"28267:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43801,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"28233:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28233:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43805,"nodeType":"RevertStatement","src":"28226:47:111"}]}}]},"documentation":{"id":43784,"nodeType":"StructuredDocumentation","src":"27758:307:111","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":43809,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28079:7:111","nodeType":"FunctionDefinition","parameters":{"id":43787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43786,"mutability":"mutable","name":"value","nameLocation":"28094:5:111","nodeType":"VariableDeclaration","scope":43809,"src":"28087:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43785,"name":"int256","nodeType":"ElementaryTypeName","src":"28087:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28086:14:111"},"returnParameters":{"id":43790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43789,"mutability":"mutable","name":"downcasted","nameLocation":"28130:10:111","nodeType":"VariableDeclaration","scope":43809,"src":"28124:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":43788,"name":"int96","nodeType":"ElementaryTypeName","src":"28124:5:111","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28123:18:111"},"scope":44126,"src":"28070:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43834,"nodeType":"Block","src":"28680:148:111","statements":[{"expression":{"id":43822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43817,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43815,"src":"28690:10:111","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43820,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43812,"src":"28709:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28703:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":43818,"name":"int88","nodeType":"ElementaryTypeName","src":"28703:5:111","typeDescriptions":{}}},"id":43821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28703:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28690:25:111","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":43823,"nodeType":"ExpressionStatement","src":"28690:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43824,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43815,"src":"28729:10:111","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43825,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43812,"src":"28743:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28729:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43833,"nodeType":"IfStatement","src":"28725:97:111","trueBody":{"id":43832,"nodeType":"Block","src":"28750:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":43828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28801:2:111","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":43829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43812,"src":"28805:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43827,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"28771:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28771:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43831,"nodeType":"RevertStatement","src":"28764:47:111"}]}}]},"documentation":{"id":43810,"nodeType":"StructuredDocumentation","src":"28296:307:111","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":43835,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28617:7:111","nodeType":"FunctionDefinition","parameters":{"id":43813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43812,"mutability":"mutable","name":"value","nameLocation":"28632:5:111","nodeType":"VariableDeclaration","scope":43835,"src":"28625:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43811,"name":"int256","nodeType":"ElementaryTypeName","src":"28625:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28624:14:111"},"returnParameters":{"id":43816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43815,"mutability":"mutable","name":"downcasted","nameLocation":"28668:10:111","nodeType":"VariableDeclaration","scope":43835,"src":"28662:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":43814,"name":"int88","nodeType":"ElementaryTypeName","src":"28662:5:111","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28661:18:111"},"scope":44126,"src":"28608:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43860,"nodeType":"Block","src":"29218:148:111","statements":[{"expression":{"id":43848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43843,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43841,"src":"29228:10:111","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43846,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43838,"src":"29247:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29241:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":43844,"name":"int80","nodeType":"ElementaryTypeName","src":"29241:5:111","typeDescriptions":{}}},"id":43847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29241:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29228:25:111","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":43849,"nodeType":"ExpressionStatement","src":"29228:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43850,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43841,"src":"29267:10:111","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43851,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43838,"src":"29281:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29267:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43859,"nodeType":"IfStatement","src":"29263:97:111","trueBody":{"id":43858,"nodeType":"Block","src":"29288:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":43854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29339:2:111","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":43855,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43838,"src":"29343:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43853,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"29309:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29309:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43857,"nodeType":"RevertStatement","src":"29302:47:111"}]}}]},"documentation":{"id":43836,"nodeType":"StructuredDocumentation","src":"28834:307:111","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":43861,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29155:7:111","nodeType":"FunctionDefinition","parameters":{"id":43839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43838,"mutability":"mutable","name":"value","nameLocation":"29170:5:111","nodeType":"VariableDeclaration","scope":43861,"src":"29163:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43837,"name":"int256","nodeType":"ElementaryTypeName","src":"29163:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29162:14:111"},"returnParameters":{"id":43842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43841,"mutability":"mutable","name":"downcasted","nameLocation":"29206:10:111","nodeType":"VariableDeclaration","scope":43861,"src":"29200:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":43840,"name":"int80","nodeType":"ElementaryTypeName","src":"29200:5:111","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29199:18:111"},"scope":44126,"src":"29146:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43886,"nodeType":"Block","src":"29756:148:111","statements":[{"expression":{"id":43874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43869,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43867,"src":"29766:10:111","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43872,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43864,"src":"29785:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29779:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":43870,"name":"int72","nodeType":"ElementaryTypeName","src":"29779:5:111","typeDescriptions":{}}},"id":43873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29779:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29766:25:111","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":43875,"nodeType":"ExpressionStatement","src":"29766:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43876,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43867,"src":"29805:10:111","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43877,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43864,"src":"29819:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29805:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43885,"nodeType":"IfStatement","src":"29801:97:111","trueBody":{"id":43884,"nodeType":"Block","src":"29826:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":43880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29877:2:111","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":43881,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43864,"src":"29881:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43879,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"29847:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29847:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43883,"nodeType":"RevertStatement","src":"29840:47:111"}]}}]},"documentation":{"id":43862,"nodeType":"StructuredDocumentation","src":"29372:307:111","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":43887,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29693:7:111","nodeType":"FunctionDefinition","parameters":{"id":43865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43864,"mutability":"mutable","name":"value","nameLocation":"29708:5:111","nodeType":"VariableDeclaration","scope":43887,"src":"29701:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43863,"name":"int256","nodeType":"ElementaryTypeName","src":"29701:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29700:14:111"},"returnParameters":{"id":43868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43867,"mutability":"mutable","name":"downcasted","nameLocation":"29744:10:111","nodeType":"VariableDeclaration","scope":43887,"src":"29738:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":43866,"name":"int72","nodeType":"ElementaryTypeName","src":"29738:5:111","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29737:18:111"},"scope":44126,"src":"29684:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43912,"nodeType":"Block","src":"30294:148:111","statements":[{"expression":{"id":43900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43895,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43893,"src":"30304:10:111","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43898,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43890,"src":"30323:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30317:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":43896,"name":"int64","nodeType":"ElementaryTypeName","src":"30317:5:111","typeDescriptions":{}}},"id":43899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30317:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30304:25:111","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":43901,"nodeType":"ExpressionStatement","src":"30304:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43902,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43893,"src":"30343:10:111","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43903,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43890,"src":"30357:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30343:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43911,"nodeType":"IfStatement","src":"30339:97:111","trueBody":{"id":43910,"nodeType":"Block","src":"30364:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":43906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30415:2:111","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":43907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43890,"src":"30419:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43905,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"30385:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30385:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43909,"nodeType":"RevertStatement","src":"30378:47:111"}]}}]},"documentation":{"id":43888,"nodeType":"StructuredDocumentation","src":"29910:307:111","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":43913,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30231:7:111","nodeType":"FunctionDefinition","parameters":{"id":43891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43890,"mutability":"mutable","name":"value","nameLocation":"30246:5:111","nodeType":"VariableDeclaration","scope":43913,"src":"30239:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43889,"name":"int256","nodeType":"ElementaryTypeName","src":"30239:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30238:14:111"},"returnParameters":{"id":43894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43893,"mutability":"mutable","name":"downcasted","nameLocation":"30282:10:111","nodeType":"VariableDeclaration","scope":43913,"src":"30276:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":43892,"name":"int64","nodeType":"ElementaryTypeName","src":"30276:5:111","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30275:18:111"},"scope":44126,"src":"30222:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43938,"nodeType":"Block","src":"30832:148:111","statements":[{"expression":{"id":43926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43921,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43919,"src":"30842:10:111","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43916,"src":"30861:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30855:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":43922,"name":"int56","nodeType":"ElementaryTypeName","src":"30855:5:111","typeDescriptions":{}}},"id":43925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30855:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30842:25:111","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":43927,"nodeType":"ExpressionStatement","src":"30842:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43928,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43919,"src":"30881:10:111","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43929,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43916,"src":"30895:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30881:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43937,"nodeType":"IfStatement","src":"30877:97:111","trueBody":{"id":43936,"nodeType":"Block","src":"30902:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":43932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30953:2:111","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":43933,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43916,"src":"30957:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43931,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"30923:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30923:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43935,"nodeType":"RevertStatement","src":"30916:47:111"}]}}]},"documentation":{"id":43914,"nodeType":"StructuredDocumentation","src":"30448:307:111","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":43939,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30769:7:111","nodeType":"FunctionDefinition","parameters":{"id":43917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43916,"mutability":"mutable","name":"value","nameLocation":"30784:5:111","nodeType":"VariableDeclaration","scope":43939,"src":"30777:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43915,"name":"int256","nodeType":"ElementaryTypeName","src":"30777:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30776:14:111"},"returnParameters":{"id":43920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43919,"mutability":"mutable","name":"downcasted","nameLocation":"30820:10:111","nodeType":"VariableDeclaration","scope":43939,"src":"30814:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":43918,"name":"int56","nodeType":"ElementaryTypeName","src":"30814:5:111","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30813:18:111"},"scope":44126,"src":"30760:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43964,"nodeType":"Block","src":"31370:148:111","statements":[{"expression":{"id":43952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43947,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43945,"src":"31380:10:111","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43942,"src":"31399:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31393:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":43948,"name":"int48","nodeType":"ElementaryTypeName","src":"31393:5:111","typeDescriptions":{}}},"id":43951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31393:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31380:25:111","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":43953,"nodeType":"ExpressionStatement","src":"31380:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43954,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43945,"src":"31419:10:111","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43955,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43942,"src":"31433:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31419:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43963,"nodeType":"IfStatement","src":"31415:97:111","trueBody":{"id":43962,"nodeType":"Block","src":"31440:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":43958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31491:2:111","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":43959,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43942,"src":"31495:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43957,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"31461:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31461:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43961,"nodeType":"RevertStatement","src":"31454:47:111"}]}}]},"documentation":{"id":43940,"nodeType":"StructuredDocumentation","src":"30986:307:111","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":43965,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31307:7:111","nodeType":"FunctionDefinition","parameters":{"id":43943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43942,"mutability":"mutable","name":"value","nameLocation":"31322:5:111","nodeType":"VariableDeclaration","scope":43965,"src":"31315:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43941,"name":"int256","nodeType":"ElementaryTypeName","src":"31315:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31314:14:111"},"returnParameters":{"id":43946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43945,"mutability":"mutable","name":"downcasted","nameLocation":"31358:10:111","nodeType":"VariableDeclaration","scope":43965,"src":"31352:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":43944,"name":"int48","nodeType":"ElementaryTypeName","src":"31352:5:111","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31351:18:111"},"scope":44126,"src":"31298:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":43990,"nodeType":"Block","src":"31908:148:111","statements":[{"expression":{"id":43978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43973,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43971,"src":"31918:10:111","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":43976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43968,"src":"31937:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31931:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":43974,"name":"int40","nodeType":"ElementaryTypeName","src":"31931:5:111","typeDescriptions":{}}},"id":43977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31931:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31918:25:111","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":43979,"nodeType":"ExpressionStatement","src":"31918:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":43982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":43980,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43971,"src":"31957:10:111","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":43981,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43968,"src":"31971:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31957:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":43989,"nodeType":"IfStatement","src":"31953:97:111","trueBody":{"id":43988,"nodeType":"Block","src":"31978:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":43984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32029:2:111","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":43985,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43968,"src":"32033:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":43983,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"31999:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":43986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31999:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":43987,"nodeType":"RevertStatement","src":"31992:47:111"}]}}]},"documentation":{"id":43966,"nodeType":"StructuredDocumentation","src":"31524:307:111","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":43991,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31845:7:111","nodeType":"FunctionDefinition","parameters":{"id":43969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43968,"mutability":"mutable","name":"value","nameLocation":"31860:5:111","nodeType":"VariableDeclaration","scope":43991,"src":"31853:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43967,"name":"int256","nodeType":"ElementaryTypeName","src":"31853:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31852:14:111"},"returnParameters":{"id":43972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43971,"mutability":"mutable","name":"downcasted","nameLocation":"31896:10:111","nodeType":"VariableDeclaration","scope":43991,"src":"31890:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":43970,"name":"int40","nodeType":"ElementaryTypeName","src":"31890:5:111","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31889:18:111"},"scope":44126,"src":"31836:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44016,"nodeType":"Block","src":"32446:148:111","statements":[{"expression":{"id":44004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":43999,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43997,"src":"32456:10:111","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":44002,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43994,"src":"32475:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32469:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":44000,"name":"int32","nodeType":"ElementaryTypeName","src":"32469:5:111","typeDescriptions":{}}},"id":44003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32469:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32456:25:111","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":44005,"nodeType":"ExpressionStatement","src":"32456:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44006,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43997,"src":"32495:10:111","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":44007,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43994,"src":"32509:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32495:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44015,"nodeType":"IfStatement","src":"32491:97:111","trueBody":{"id":44014,"nodeType":"Block","src":"32516:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":44010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32567:2:111","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":44011,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43994,"src":"32571:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44009,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"32537:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":44012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32537:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44013,"nodeType":"RevertStatement","src":"32530:47:111"}]}}]},"documentation":{"id":43992,"nodeType":"StructuredDocumentation","src":"32062:307:111","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":44017,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32383:7:111","nodeType":"FunctionDefinition","parameters":{"id":43995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43994,"mutability":"mutable","name":"value","nameLocation":"32398:5:111","nodeType":"VariableDeclaration","scope":44017,"src":"32391:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":43993,"name":"int256","nodeType":"ElementaryTypeName","src":"32391:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32390:14:111"},"returnParameters":{"id":43998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":43997,"mutability":"mutable","name":"downcasted","nameLocation":"32434:10:111","nodeType":"VariableDeclaration","scope":44017,"src":"32428:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":43996,"name":"int32","nodeType":"ElementaryTypeName","src":"32428:5:111","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32427:18:111"},"scope":44126,"src":"32374:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44042,"nodeType":"Block","src":"32984:148:111","statements":[{"expression":{"id":44030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44025,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44023,"src":"32994:10:111","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":44028,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44020,"src":"33013:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33007:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":44026,"name":"int24","nodeType":"ElementaryTypeName","src":"33007:5:111","typeDescriptions":{}}},"id":44029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33007:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32994:25:111","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":44031,"nodeType":"ExpressionStatement","src":"32994:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44032,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44023,"src":"33033:10:111","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":44033,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44020,"src":"33047:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33033:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44041,"nodeType":"IfStatement","src":"33029:97:111","trueBody":{"id":44040,"nodeType":"Block","src":"33054:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":44036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33105:2:111","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":44037,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44020,"src":"33109:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44035,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"33075:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":44038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33075:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44039,"nodeType":"RevertStatement","src":"33068:47:111"}]}}]},"documentation":{"id":44018,"nodeType":"StructuredDocumentation","src":"32600:307:111","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":44043,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32921:7:111","nodeType":"FunctionDefinition","parameters":{"id":44021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44020,"mutability":"mutable","name":"value","nameLocation":"32936:5:111","nodeType":"VariableDeclaration","scope":44043,"src":"32929:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44019,"name":"int256","nodeType":"ElementaryTypeName","src":"32929:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32928:14:111"},"returnParameters":{"id":44024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44023,"mutability":"mutable","name":"downcasted","nameLocation":"32972:10:111","nodeType":"VariableDeclaration","scope":44043,"src":"32966:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":44022,"name":"int24","nodeType":"ElementaryTypeName","src":"32966:5:111","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32965:18:111"},"scope":44126,"src":"32912:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44068,"nodeType":"Block","src":"33522:148:111","statements":[{"expression":{"id":44056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44051,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44049,"src":"33532:10:111","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":44054,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44046,"src":"33551:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33545:5:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":44052,"name":"int16","nodeType":"ElementaryTypeName","src":"33545:5:111","typeDescriptions":{}}},"id":44055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33545:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33532:25:111","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":44057,"nodeType":"ExpressionStatement","src":"33532:25:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44058,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44049,"src":"33571:10:111","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":44059,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44046,"src":"33585:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33571:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44067,"nodeType":"IfStatement","src":"33567:97:111","trueBody":{"id":44066,"nodeType":"Block","src":"33592:72:111","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":44062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33643:2:111","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":44063,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44046,"src":"33647:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44061,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"33613:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":44064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33613:40:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44065,"nodeType":"RevertStatement","src":"33606:47:111"}]}}]},"documentation":{"id":44044,"nodeType":"StructuredDocumentation","src":"33138:307:111","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":44069,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33459:7:111","nodeType":"FunctionDefinition","parameters":{"id":44047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44046,"mutability":"mutable","name":"value","nameLocation":"33474:5:111","nodeType":"VariableDeclaration","scope":44069,"src":"33467:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44045,"name":"int256","nodeType":"ElementaryTypeName","src":"33467:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33466:14:111"},"returnParameters":{"id":44050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44049,"mutability":"mutable","name":"downcasted","nameLocation":"33510:10:111","nodeType":"VariableDeclaration","scope":44069,"src":"33504:16:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":44048,"name":"int16","nodeType":"ElementaryTypeName","src":"33504:5:111","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33503:18:111"},"scope":44126,"src":"33450:220:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44094,"nodeType":"Block","src":"34053:146:111","statements":[{"expression":{"id":44082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44077,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44075,"src":"34063:10:111","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":44080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44072,"src":"34081:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34076:4:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":44078,"name":"int8","nodeType":"ElementaryTypeName","src":"34076:4:111","typeDescriptions":{}}},"id":44081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34076:11:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34063:24:111","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":44083,"nodeType":"ExpressionStatement","src":"34063:24:111"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44084,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44075,"src":"34101:10:111","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":44085,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44072,"src":"34115:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34101:19:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44093,"nodeType":"IfStatement","src":"34097:96:111","trueBody":{"id":44092,"nodeType":"Block","src":"34122:71:111","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":44088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34173:1:111","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":44089,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44072,"src":"34176:5:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44087,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42393,"src":"34143:29:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":44090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34143:39:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44091,"nodeType":"RevertStatement","src":"34136:46:111"}]}}]},"documentation":{"id":44070,"nodeType":"StructuredDocumentation","src":"33676:302:111","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":44095,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33992:6:111","nodeType":"FunctionDefinition","parameters":{"id":44073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44072,"mutability":"mutable","name":"value","nameLocation":"34006:5:111","nodeType":"VariableDeclaration","scope":44095,"src":"33999:12:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44071,"name":"int256","nodeType":"ElementaryTypeName","src":"33999:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33998:14:111"},"returnParameters":{"id":44076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44075,"mutability":"mutable","name":"downcasted","nameLocation":"34041:10:111","nodeType":"VariableDeclaration","scope":44095,"src":"34036:15:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":44074,"name":"int8","nodeType":"ElementaryTypeName","src":"34036:4:111","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34035:17:111"},"scope":44126,"src":"33983:216:111","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44124,"nodeType":"Block","src":"34439:250:111","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44103,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44098,"src":"34552:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":44108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34573:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":44107,"name":"int256","nodeType":"ElementaryTypeName","src":"34573:6:111","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":44106,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34568:4:111","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":44109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34568:12:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":44110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34581:3:111","memberName":"max","nodeType":"MemberAccess","src":"34568:16:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34560:7:111","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":44104,"name":"uint256","nodeType":"ElementaryTypeName","src":"34560:7:111","typeDescriptions":{}}},"id":44111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34560:25:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34552:33:111","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44118,"nodeType":"IfStatement","src":"34548:105:111","trueBody":{"id":44117,"nodeType":"Block","src":"34587:66:111","statements":[{"errorCall":{"arguments":[{"id":44114,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44098,"src":"34636:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44113,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42398,"src":"34608:27:111","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":44115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34608:34:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44116,"nodeType":"RevertStatement","src":"34601:41:111"}]}},{"expression":{"arguments":[{"id":44121,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44098,"src":"34676:5:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34669:6:111","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":44119,"name":"int256","nodeType":"ElementaryTypeName","src":"34669:6:111","typeDescriptions":{}}},"id":44122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34669:13:111","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":44102,"id":44123,"nodeType":"Return","src":"34662:20:111"}]},"documentation":{"id":44096,"nodeType":"StructuredDocumentation","src":"34205:165:111","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":44125,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34384:8:111","nodeType":"FunctionDefinition","parameters":{"id":44099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44098,"mutability":"mutable","name":"value","nameLocation":"34401:5:111","nodeType":"VariableDeclaration","scope":44125,"src":"34393:13:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44097,"name":"uint256","nodeType":"ElementaryTypeName","src":"34393:7:111","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34392:15:111"},"returnParameters":{"id":44102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44125,"src":"34431:6:111","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44100,"name":"int256","nodeType":"ElementaryTypeName","src":"34431:6:111","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34430:8:111"},"scope":44126,"src":"34375:314:111","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":44127,"src":"764:33927:111","usedErrors":[42381,42386,42393,42398],"usedEvents":[]}],"src":"192:34500:111"},"id":111},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[44231]},"id":44232,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":44128,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:112"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":44129,"nodeType":"StructuredDocumentation","src":"135:80:112","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":44231,"linearizedBaseContracts":[44231],"name":"SignedMath","nameLocation":"224:10:112","nodeType":"ContractDefinition","nodes":[{"body":{"id":44146,"nodeType":"Block","src":"376:37:112","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44139,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44132,"src":"393:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":44140,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44134,"src":"397:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"393:5:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":44143,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44134,"src":"405:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":44144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"393:13:112","trueExpression":{"id":44142,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44132,"src":"401:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":44138,"id":44145,"nodeType":"Return","src":"386:20:112"}]},"documentation":{"id":44130,"nodeType":"StructuredDocumentation","src":"241:66:112","text":" @dev Returns the largest of two signed numbers."},"id":44147,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"321:3:112","nodeType":"FunctionDefinition","parameters":{"id":44135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44132,"mutability":"mutable","name":"a","nameLocation":"332:1:112","nodeType":"VariableDeclaration","scope":44147,"src":"325:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44131,"name":"int256","nodeType":"ElementaryTypeName","src":"325:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":44134,"mutability":"mutable","name":"b","nameLocation":"342:1:112","nodeType":"VariableDeclaration","scope":44147,"src":"335:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44133,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"324:20:112"},"returnParameters":{"id":44138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44147,"src":"368:6:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44136,"name":"int256","nodeType":"ElementaryTypeName","src":"368:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"367:8:112"},"scope":44231,"src":"312:101:112","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44164,"nodeType":"Block","src":"555:37:112","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44157,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44150,"src":"572:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":44158,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44152,"src":"576:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"572:5:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":44161,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44152,"src":"584:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":44162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"572:13:112","trueExpression":{"id":44160,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44150,"src":"580:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":44156,"id":44163,"nodeType":"Return","src":"565:20:112"}]},"documentation":{"id":44148,"nodeType":"StructuredDocumentation","src":"419:67:112","text":" @dev Returns the smallest of two signed numbers."},"id":44165,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"500:3:112","nodeType":"FunctionDefinition","parameters":{"id":44153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44150,"mutability":"mutable","name":"a","nameLocation":"511:1:112","nodeType":"VariableDeclaration","scope":44165,"src":"504:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44149,"name":"int256","nodeType":"ElementaryTypeName","src":"504:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":44152,"mutability":"mutable","name":"b","nameLocation":"521:1:112","nodeType":"VariableDeclaration","scope":44165,"src":"514:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44151,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"503:20:112"},"returnParameters":{"id":44156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44165,"src":"547:6:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44154,"name":"int256","nodeType":"ElementaryTypeName","src":"547:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"546:8:112"},"scope":44231,"src":"491:101:112","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44208,"nodeType":"Block","src":"797:162:112","statements":[{"assignments":[44176],"declarations":[{"constant":false,"id":44176,"mutability":"mutable","name":"x","nameLocation":"866:1:112","nodeType":"VariableDeclaration","scope":44208,"src":"859:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44175,"name":"int256","nodeType":"ElementaryTypeName","src":"859:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":44189,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44177,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44168,"src":"871:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":44178,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44170,"src":"875:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"871:5:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":44180,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"870:7:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44181,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44168,"src":"882:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":44182,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44170,"src":"886:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"882:5:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":44184,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"881:7:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":44185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:1:112","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"881:12:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":44187,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:14:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:24:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"859:35:112"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44190,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44176,"src":"911:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":44195,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44176,"src":"931:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:112","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":44193,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:112","typeDescriptions":{}}},"id":44196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:10:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":44197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:3:112","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"923:17:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"916:6:112","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":44191,"name":"int256","nodeType":"ElementaryTypeName","src":"916:6:112","typeDescriptions":{}}},"id":44199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:25:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44200,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44168,"src":"945:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":44201,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44170,"src":"949:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"945:5:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":44203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"944:7:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"916:35:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":44205,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"915:37:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"911:41:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":44174,"id":44207,"nodeType":"Return","src":"904:48:112"}]},"documentation":{"id":44166,"nodeType":"StructuredDocumentation","src":"598:126:112","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":44209,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"738:7:112","nodeType":"FunctionDefinition","parameters":{"id":44171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44168,"mutability":"mutable","name":"a","nameLocation":"753:1:112","nodeType":"VariableDeclaration","scope":44209,"src":"746:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44167,"name":"int256","nodeType":"ElementaryTypeName","src":"746:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":44170,"mutability":"mutable","name":"b","nameLocation":"763:1:112","nodeType":"VariableDeclaration","scope":44209,"src":"756:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44169,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"745:20:112"},"returnParameters":{"id":44174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44173,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44209,"src":"789:6:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44172,"name":"int256","nodeType":"ElementaryTypeName","src":"789:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"788:8:112"},"scope":44231,"src":"729:230:112","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":44229,"nodeType":"Block","src":"1103:158:112","statements":[{"id":44228,"nodeType":"UncheckedBlock","src":"1113:142:112","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":44221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44219,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44212,"src":"1228:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":44220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:112","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1228:6:112","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":44224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1241:2:112","subExpression":{"id":44223,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44212,"src":"1242:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":44225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1228:15:112","trueExpression":{"id":44222,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44212,"src":"1237:1:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":44218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1220:7:112","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":44217,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:112","typeDescriptions":{}}},"id":44226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:24:112","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44216,"id":44227,"nodeType":"Return","src":"1213:31:112"}]}]},"documentation":{"id":44210,"nodeType":"StructuredDocumentation","src":"965:78:112","text":" @dev Returns the absolute unsigned value of a signed value."},"id":44230,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1057:3:112","nodeType":"FunctionDefinition","parameters":{"id":44213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44212,"mutability":"mutable","name":"n","nameLocation":"1068:1:112","nodeType":"VariableDeclaration","scope":44230,"src":"1061:8:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":44211,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:112","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1060:10:112"},"returnParameters":{"id":44216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44230,"src":"1094:7:112","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44214,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:112","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1093:9:112"},"scope":44231,"src":"1048:213:112","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":44232,"src":"216:1047:112","usedErrors":[],"usedEvents":[]}],"src":"109:1155:112"},"id":112},"contracts/WeightedPool.sol":{"ast":{"absolutePath":"contracts/WeightedPool.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BalancerPoolToken":[10732],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"FixedPoint":[7834],"HookFlags":[4409],"HooksConfig":[4433],"IBasePool":[1366],"IERC20":[39274],"IERC4626":[38998],"IRateProvider":[150],"ISwapFeePercentageBounds":[2839],"IUnbalancedLiquidityInvariantRatioBounds":[2855],"IVault":[2893],"IVaultErrors":[3550],"IWeightedPool":[115],"InputHelpers":[5819],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolInfo":[5247],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"Version":[7108],"WeightedMath":[9499],"WeightedPool":[44990],"WeightedPoolDynamicData":[90],"WeightedPoolImmutableData":[72],"WrappingDirection":[4629]},"id":44991,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":44233,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:113"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol","id":44235,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":2840,"src":"72:117:113","symbolAliases":[{"foreign":{"id":44234,"name":"ISwapFeePercentageBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2839,"src":"81:24:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol","id":44237,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":2856,"src":"190:153:113","symbolAliases":[{"foreign":{"id":44236,"name":"IUnbalancedLiquidityInvariantRatioBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"203:40:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":44239,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":3551,"src":"344:93:113","symbolAliases":[{"foreign":{"id":44238,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"353:12:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol","id":44241,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":1367,"src":"438:87:113","symbolAliases":[{"foreign":{"id":44240,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"447:9:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":44243,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":2894,"src":"526:81:113","symbolAliases":[{"foreign":{"id":44242,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"535:6:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol","file":"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol","id":44247,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":116,"src":"608:167:113","symbolAliases":[{"foreign":{"id":44244,"name":"IWeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"621:13:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":44245,"name":"WeightedPoolDynamicData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90,"src":"640:23:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":44246,"name":"WeightedPoolImmutableData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"669:25:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":44248,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":4654,"src":"776:69:113","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol","id":44250,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":5820,"src":"847:99:113","symbolAliases":[{"foreign":{"id":44249,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"856:12:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol","id":44252,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":9500,"src":"947:96:113","symbolAliases":[{"foreign":{"id":44251,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"956:12:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol","file":"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol","id":44254,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":10733,"src":"1044:92:113","symbolAliases":[{"foreign":{"id":44253,"name":"BalancerPoolToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10732,"src":"1053:17:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":44256,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":7835,"src":"1137:92:113","symbolAliases":[{"foreign":{"id":44255,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"1146:10:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","id":44258,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":7109,"src":"1230:89:113","symbolAliases":[{"foreign":{"id":44257,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"1239:7:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol","file":"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol","id":44260,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":44991,"sourceUnit":5248,"src":"1320:79:113","symbolAliases":[{"foreign":{"id":44259,"name":"PoolInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5247,"src":"1329:8:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":44262,"name":"IWeightedPool","nameLocations":["1956:13:113"],"nodeType":"IdentifierPath","referencedDeclaration":115,"src":"1956:13:113"},"id":44263,"nodeType":"InheritanceSpecifier","src":"1956:13:113"},{"baseName":{"id":44264,"name":"BalancerPoolToken","nameLocations":["1971:17:113"],"nodeType":"IdentifierPath","referencedDeclaration":10732,"src":"1971:17:113"},"id":44265,"nodeType":"InheritanceSpecifier","src":"1971:17:113"},{"baseName":{"id":44266,"name":"PoolInfo","nameLocations":["1990:8:113"],"nodeType":"IdentifierPath","referencedDeclaration":5247,"src":"1990:8:113"},"id":44267,"nodeType":"InheritanceSpecifier","src":"1990:8:113"},{"baseName":{"id":44268,"name":"Version","nameLocations":["2000:7:113"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"2000:7:113"},"id":44269,"nodeType":"InheritanceSpecifier","src":"2000:7:113"}],"canonicalName":"WeightedPool","contractDependencies":[],"contractKind":"contract","documentation":{"id":44261,"nodeType":"StructuredDocumentation","src":"1401:529:113","text":" @notice Standard Balancer Weighted Pool, with fixed weights.\n @dev Weighted Pools are designed for uncorrelated assets, and use `WeightedMath` (from Balancer v1 and v2)\n to compute the price curve.\n There can be up to 8 tokens in a weighted pool (same as v2), and the normalized weights (expressed as 18-decimal\n floating point numbers), must sum to FixedPoint.ONE. Weights cannot be changed after deployment.\n The swap fee percentage is bounded by minimum and maximum values (same as were used in v2)."},"fullyImplemented":true,"id":44990,"internalFunctionIDs":{"7616":1,"7632":2,"9272":3,"9325":4},"linearizedBaseContracts":[44990,7108,160,5247,54,10732,27688,41305,41317,40050,41207,39023,150,39336,39300,39274,115,1366,2855,2839],"name":"WeightedPool","nameLocation":"1940:12:113","nodeType":"ContractDefinition","nodes":[{"canonicalName":"WeightedPool.NewPoolParams","documentation":{"id":44270,"nodeType":"StructuredDocumentation","src":"2014:110:113","text":"@dev Struct with data for deploying a new WeightedPool. `normalizedWeights` length must match `numTokens`."},"id":44282,"members":[{"constant":false,"id":44272,"mutability":"mutable","name":"name","nameLocation":"2167:4:113","nodeType":"VariableDeclaration","scope":44282,"src":"2160:11:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":44271,"name":"string","nodeType":"ElementaryTypeName","src":"2160:6:113","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":44274,"mutability":"mutable","name":"symbol","nameLocation":"2188:6:113","nodeType":"VariableDeclaration","scope":44282,"src":"2181:13:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":44273,"name":"string","nodeType":"ElementaryTypeName","src":"2181:6:113","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":44276,"mutability":"mutable","name":"numTokens","nameLocation":"2212:9:113","nodeType":"VariableDeclaration","scope":44282,"src":"2204:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44275,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44279,"mutability":"mutable","name":"normalizedWeights","nameLocation":"2241:17:113","nodeType":"VariableDeclaration","scope":44282,"src":"2231:27:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44277,"name":"uint256","nodeType":"ElementaryTypeName","src":"2231:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44278,"nodeType":"ArrayTypeName","src":"2231:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":44281,"mutability":"mutable","name":"version","nameLocation":"2275:7:113","nodeType":"VariableDeclaration","scope":44282,"src":"2268:14:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":44280,"name":"string","nodeType":"ElementaryTypeName","src":"2268:6:113","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"NewPoolParams","nameLocation":"2136:13:113","nodeType":"StructDefinition","scope":44990,"src":"2129:160:113","visibility":"public"},{"constant":true,"id":44285,"mutability":"constant","name":"_MIN_SWAP_FEE_PERCENTAGE","nameLocation":"2751:24:113","nodeType":"VariableDeclaration","scope":44990,"src":"2726:60:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44283,"name":"uint256","nodeType":"ElementaryTypeName","src":"2726:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e303031653136","id":44284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2778:8:113","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000_by_1","typeString":"int_const 10000000000000"},"value":"0.001e16"},"visibility":"private"},{"constant":true,"id":44288,"mutability":"constant","name":"_MAX_SWAP_FEE_PERCENTAGE","nameLocation":"2827:24:113","nodeType":"VariableDeclaration","scope":44990,"src":"2802:57:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44286,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130653136","id":44287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2854:5:113","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"10e16"},"visibility":"private"},{"constant":true,"id":44291,"mutability":"constant","name":"_MIN_WEIGHT","nameLocation":"3098:11:113","nodeType":"VariableDeclaration","scope":44990,"src":"3073:43:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44289,"name":"uint256","nodeType":"ElementaryTypeName","src":"3073:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653136","id":44290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3112:4:113","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"value":"1e16"},"visibility":"private"},{"constant":false,"id":44293,"mutability":"immutable","name":"_totalTokens","nameLocation":"3155:12:113","nodeType":"VariableDeclaration","scope":44990,"src":"3129:38:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44292,"name":"uint256","nodeType":"ElementaryTypeName","src":"3129:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":44295,"mutability":"immutable","name":"_normalizedWeight0","nameLocation":"3201:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3174:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44294,"name":"uint256","nodeType":"ElementaryTypeName","src":"3174:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44297,"mutability":"immutable","name":"_normalizedWeight1","nameLocation":"3252:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3225:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44296,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44299,"mutability":"immutable","name":"_normalizedWeight2","nameLocation":"3303:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3276:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44298,"name":"uint256","nodeType":"ElementaryTypeName","src":"3276:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44301,"mutability":"immutable","name":"_normalizedWeight3","nameLocation":"3354:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3327:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44300,"name":"uint256","nodeType":"ElementaryTypeName","src":"3327:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44303,"mutability":"immutable","name":"_normalizedWeight4","nameLocation":"3405:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3378:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44302,"name":"uint256","nodeType":"ElementaryTypeName","src":"3378:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44305,"mutability":"immutable","name":"_normalizedWeight5","nameLocation":"3456:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3429:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44304,"name":"uint256","nodeType":"ElementaryTypeName","src":"3429:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44307,"mutability":"immutable","name":"_normalizedWeight6","nameLocation":"3507:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3480:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44306,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44309,"mutability":"immutable","name":"_normalizedWeight7","nameLocation":"3558:18:113","nodeType":"VariableDeclaration","scope":44990,"src":"3531:45:113","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44308,"name":"uint256","nodeType":"ElementaryTypeName","src":"3531:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"documentation":{"id":44310,"nodeType":"StructuredDocumentation","src":"3583:87:113","text":"@notice Indicates that one of the pool tokens' weight is below the minimum allowed."},"errorSelector":"bd393583","id":44312,"name":"MinWeight","nameLocation":"3681:9:113","nodeType":"ErrorDefinition","parameters":{"id":44311,"nodeType":"ParameterList","parameters":[],"src":"3690:2:113"},"src":"3675:18:113"},{"documentation":{"id":44313,"nodeType":"StructuredDocumentation","src":"3699:85:113","text":"@notice Indicates that the sum of the pool tokens' weights is not FixedPoint.ONE."},"errorSelector":"39cf114e","id":44315,"name":"NormalizedWeightInvariant","nameLocation":"3795:25:113","nodeType":"ErrorDefinition","parameters":{"id":44314,"nodeType":"ParameterList","parameters":[],"src":"3820:2:113"},"src":"3789:34:113"},{"documentation":{"id":44316,"nodeType":"StructuredDocumentation","src":"3829:678:113","text":" @notice `getRate` from `IRateProvider` was called on a Weighted Pool.\n @dev It is not safe to nest Weighted Pools as WITH_RATE tokens in other pools, where they function as their own\n rate provider. The default `getRate` implementation from `BalancerPoolToken` computes the BPT rate using the\n invariant, which has a non-trivial (and non-linear) error. Without the ability to specify a rounding direction,\n the rate could be manipulable.\n It is fine to nest Weighted Pools as STANDARD tokens, or to use them with external rate providers that are\n stable and have at most 1 wei of rounding error (e.g., oracle-based)."},"errorSelector":"18e79a20","id":44318,"name":"WeightedPoolBptRateUnsupported","nameLocation":"4518:30:113","nodeType":"ErrorDefinition","parameters":{"id":44317,"nodeType":"ParameterList","parameters":[],"src":"4548:2:113"},"src":"4512:39:113"},{"body":{"id":44473,"nodeType":"Block","src":"4727:1298:113","statements":[{"expression":{"id":44344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44341,"name":"_totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44293,"src":"4737:12:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":44342,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44321,"src":"4752:6:113","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":44343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4759:9:113","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":44276,"src":"4752:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4737:31:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44345,"nodeType":"ExpressionStatement","src":"4737:31:113"},{"expression":{"arguments":[{"id":44349,"name":"_totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44293,"src":"4814:12:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":44350,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44321,"src":"4828:6:113","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":44351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4835:17:113","memberName":"normalizedWeights","nodeType":"MemberAccess","referencedDeclaration":44279,"src":"4828:24:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4853:6:113","memberName":"length","nodeType":"MemberAccess","src":"4828:31:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":44346,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"4778:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$5819_$","typeString":"type(library InputHelpers)"}},"id":44348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4791:22:113","memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":5611,"src":"4778:35:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":44353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4778:82:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":44354,"nodeType":"ExpressionStatement","src":"4778:82:113"},{"assignments":[44356],"declarations":[{"constant":false,"id":44356,"mutability":"mutable","name":"normalizedSum","nameLocation":"4942:13:113","nodeType":"VariableDeclaration","scope":44473,"src":"4934:21:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44355,"name":"uint256","nodeType":"ElementaryTypeName","src":"4934:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":44358,"initialValue":{"hexValue":"30","id":44357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4958:1:113","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4934:25:113"},{"body":{"id":44462,"nodeType":"Block","src":"5010:845:113","statements":[{"assignments":[44370],"declarations":[{"constant":false,"id":44370,"mutability":"mutable","name":"normalizedWeight","nameLocation":"5032:16:113","nodeType":"VariableDeclaration","scope":44462,"src":"5024:24:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44369,"name":"uint256","nodeType":"ElementaryTypeName","src":"5024:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":44375,"initialValue":{"baseExpression":{"expression":{"id":44371,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44321,"src":"5051:6:113","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":44372,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5058:17:113","memberName":"normalizedWeights","nodeType":"MemberAccess","referencedDeclaration":44279,"src":"5051:24:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44374,"indexExpression":{"id":44373,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5076:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5051:27:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5024:54:113"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44376,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5097:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":44377,"name":"_MIN_WEIGHT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44291,"src":"5116:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5097:30:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44383,"nodeType":"IfStatement","src":"5093:87:113","trueBody":{"id":44382,"nodeType":"Block","src":"5129:51:113","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":44379,"name":"MinWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44312,"src":"5154:9:113","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":44380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5154:11:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44381,"nodeType":"RevertStatement","src":"5147:18:113"}]}},{"expression":{"id":44388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44384,"name":"normalizedSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44356,"src":"5193:13:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44385,"name":"normalizedSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44356,"src":"5209:13:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":44386,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5225:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5209:32:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5193:48:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44389,"nodeType":"ExpressionStatement","src":"5193:48:113"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44390,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5291:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":44391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5296:1:113","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5291:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44398,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5363:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":44399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5368:1:113","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5363:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44406,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5435:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":44407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5440:1:113","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5435:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44414,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5507:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"33","id":44415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5512:1:113","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"5507:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44422,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5579:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"34","id":44423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5584:1:113","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"5579:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44430,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5651:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"35","id":44431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5656:1:113","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"5651:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44438,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5723:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"36","id":44439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5728:1:113","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"5723:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":44448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44446,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5795:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"37","id":44447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5800:1:113","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"5795:6:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44454,"nodeType":"IfStatement","src":"5791:54:113","trueBody":{"id":44453,"nodeType":"Block","src":"5803:42:113","statements":[{"expression":{"id":44451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44449,"name":"_normalizedWeight7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44309,"src":"5805:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44450,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5826:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5805:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44452,"nodeType":"ExpressionStatement","src":"5805:37:113"}]}},"id":44455,"nodeType":"IfStatement","src":"5719:126:113","trueBody":{"id":44445,"nodeType":"Block","src":"5731:42:113","statements":[{"expression":{"id":44443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44441,"name":"_normalizedWeight6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"5733:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44442,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5754:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5733:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44444,"nodeType":"ExpressionStatement","src":"5733:37:113"}]}},"id":44456,"nodeType":"IfStatement","src":"5647:198:113","trueBody":{"id":44437,"nodeType":"Block","src":"5659:42:113","statements":[{"expression":{"id":44435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44433,"name":"_normalizedWeight5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44305,"src":"5661:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44434,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5682:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5661:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44436,"nodeType":"ExpressionStatement","src":"5661:37:113"}]}},"id":44457,"nodeType":"IfStatement","src":"5575:270:113","trueBody":{"id":44429,"nodeType":"Block","src":"5587:42:113","statements":[{"expression":{"id":44427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44425,"name":"_normalizedWeight4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44303,"src":"5589:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44426,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5610:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5589:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44428,"nodeType":"ExpressionStatement","src":"5589:37:113"}]}},"id":44458,"nodeType":"IfStatement","src":"5503:342:113","trueBody":{"id":44421,"nodeType":"Block","src":"5515:42:113","statements":[{"expression":{"id":44419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44417,"name":"_normalizedWeight3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44301,"src":"5517:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44418,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5538:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5517:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44420,"nodeType":"ExpressionStatement","src":"5517:37:113"}]}},"id":44459,"nodeType":"IfStatement","src":"5431:414:113","trueBody":{"id":44413,"nodeType":"Block","src":"5443:42:113","statements":[{"expression":{"id":44411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44409,"name":"_normalizedWeight2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44299,"src":"5445:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44410,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5466:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5445:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44412,"nodeType":"ExpressionStatement","src":"5445:37:113"}]}},"id":44460,"nodeType":"IfStatement","src":"5359:486:113","trueBody":{"id":44405,"nodeType":"Block","src":"5371:42:113","statements":[{"expression":{"id":44403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44401,"name":"_normalizedWeight1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44297,"src":"5373:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44402,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5394:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44404,"nodeType":"ExpressionStatement","src":"5373:37:113"}]}},"id":44461,"nodeType":"IfStatement","src":"5287:558:113","trueBody":{"id":44397,"nodeType":"Block","src":"5299:42:113","statements":[{"expression":{"id":44395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44393,"name":"_normalizedWeight0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44295,"src":"5301:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44394,"name":"normalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44370,"src":"5322:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5301:37:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44396,"nodeType":"ExpressionStatement","src":"5301:37:113"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44363,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"4987:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":44364,"name":"_totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44293,"src":"4991:12:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4987:16:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44463,"initializationExpression":{"assignments":[44360],"declarations":[{"constant":false,"id":44360,"mutability":"mutable","name":"i","nameLocation":"4980:1:113","nodeType":"VariableDeclaration","scope":44463,"src":"4974:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":44359,"name":"uint8","nodeType":"ElementaryTypeName","src":"4974:5:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":44362,"initialValue":{"hexValue":"30","id":44361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4984:1:113","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4974:11:113"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":44367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5005:3:113","subExpression":{"id":44366,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44360,"src":"5007:1:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":44368,"nodeType":"ExpressionStatement","src":"5005:3:113"},"nodeType":"ForStatement","src":"4969:886:113"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44464,"name":"normalizedSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44356,"src":"5927:13:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":44465,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"5944:10:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":44466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5955:3:113","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"5944:14:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5927:31:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44472,"nodeType":"IfStatement","src":"5923:96:113","trueBody":{"id":44471,"nodeType":"Block","src":"5960:59:113","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":44468,"name":"NormalizedWeightInvariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44315,"src":"5981:25:113","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":44469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5981:27:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44470,"nodeType":"RevertStatement","src":"5974:34:113"}]}}]},"id":44474,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":44327,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44324,"src":"4652:5:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"expression":{"id":44328,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44321,"src":"4659:6:113","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":44329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4666:4:113","memberName":"name","nodeType":"MemberAccess","referencedDeclaration":44272,"src":"4659:11:113","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":44330,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44321,"src":"4672:6:113","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":44331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4679:6:113","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":44274,"src":"4672:13:113","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":44332,"kind":"baseConstructorSpecifier","modifierName":{"id":44326,"name":"BalancerPoolToken","nameLocations":["4634:17:113"],"nodeType":"IdentifierPath","referencedDeclaration":10732,"src":"4634:17:113"},"nodeType":"ModifierInvocation","src":"4634:52:113"},{"arguments":[{"id":44334,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44324,"src":"4696:5:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":44335,"kind":"baseConstructorSpecifier","modifierName":{"id":44333,"name":"PoolInfo","nameLocations":["4687:8:113"],"nodeType":"IdentifierPath","referencedDeclaration":5247,"src":"4687:8:113"},"nodeType":"ModifierInvocation","src":"4687:15:113"},{"arguments":[{"expression":{"id":44337,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44321,"src":"4711:6:113","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":44338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4718:7:113","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":44281,"src":"4711:14:113","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":44339,"kind":"baseConstructorSpecifier","modifierName":{"id":44336,"name":"Version","nameLocations":["4703:7:113"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"4703:7:113"},"nodeType":"ModifierInvocation","src":"4703:23:113"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":44325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44321,"mutability":"mutable","name":"params","nameLocation":"4599:6:113","nodeType":"VariableDeclaration","scope":44474,"src":"4578:27:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams"},"typeName":{"id":44320,"nodeType":"UserDefinedTypeName","pathNode":{"id":44319,"name":"NewPoolParams","nameLocations":["4578:13:113"],"nodeType":"IdentifierPath","referencedDeclaration":44282,"src":"4578:13:113"},"referencedDeclaration":44282,"src":"4578:13:113","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_storage_ptr","typeString":"struct WeightedPool.NewPoolParams"}},"visibility":"internal"},{"constant":false,"id":44324,"mutability":"mutable","name":"vault","nameLocation":"4622:5:113","nodeType":"VariableDeclaration","scope":44474,"src":"4615:12:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":44323,"nodeType":"UserDefinedTypeName","pathNode":{"id":44322,"name":"IVault","nameLocations":["4615:6:113"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"4615:6:113"},"referencedDeclaration":2893,"src":"4615:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"4568:65:113"},"returnParameters":{"id":44340,"nodeType":"ParameterList","parameters":[],"src":"4727:0:113"},"scope":44990,"src":"4557:1468:113","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1343],"body":{"id":44514,"nodeType":"Block","src":"6175:315:113","statements":[{"assignments":[44497],"declarations":[{"constant":false,"id":44497,"mutability":"mutable","name":"_upOrDown","nameLocation":"6262:9:113","nodeType":"VariableDeclaration","scope":44514,"src":"6185:86:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[],uint256[]) pure returns (uint256)"},"typeName":{"id":44496,"nodeType":"FunctionTypeName","parameterTypes":{"id":44492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44496,"src":"6194:16:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44486,"name":"uint256","nodeType":"ElementaryTypeName","src":"6194:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44487,"nodeType":"ArrayTypeName","src":"6194:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":44491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44496,"src":"6212:16:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44489,"name":"uint256","nodeType":"ElementaryTypeName","src":"6212:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44490,"nodeType":"ArrayTypeName","src":"6212:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6193:36:113"},"returnParameterTypes":{"id":44495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44494,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44496,"src":"6253:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44493,"name":"uint256","nodeType":"ElementaryTypeName","src":"6253:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6252:9:113"},"src":"6185:86:113","stateMutability":"pure","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[],uint256[]) pure returns (uint256)"},"visibility":"internal"},"visibility":"internal"}],"id":44507,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"id":44501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44498,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44481,"src":"6274:8:113","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":44499,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"6298:8:113","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":44500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6307:8:113","memberName":"ROUND_UP","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"6298:17:113","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"src":"6274:41:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":44504,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"6376:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":44505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6389:20:113","memberName":"computeInvariantDown","nodeType":"MemberAccess","referencedDeclaration":9272,"src":"6376:33:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"id":44506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6274:135:113","trueExpression":{"expression":{"id":44502,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"6330:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":44503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6343:18:113","memberName":"computeInvariantUp","nodeType":"MemberAccess","referencedDeclaration":9325,"src":"6330:31:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6185:224:113"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":44509,"name":"_getNormalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44815,"src":"6437:21:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256[] memory)"}},"id":44510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6437:23:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":44511,"name":"balancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44478,"src":"6462:20:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":44508,"name":"_upOrDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44497,"src":"6427:9:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"id":44512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6427:56:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44485,"id":44513,"nodeType":"Return","src":"6420:63:113"}]},"documentation":{"id":44475,"nodeType":"StructuredDocumentation","src":"6031:25:113","text":"@inheritdoc IBasePool"},"functionSelector":"984de9e8","id":44515,"implemented":true,"kind":"function","modifiers":[],"name":"computeInvariant","nameLocation":"6070:16:113","nodeType":"FunctionDefinition","parameters":{"id":44482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44478,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"6104:20:113","nodeType":"VariableDeclaration","scope":44515,"src":"6087:37:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44476,"name":"uint256","nodeType":"ElementaryTypeName","src":"6087:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44477,"nodeType":"ArrayTypeName","src":"6087:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":44481,"mutability":"mutable","name":"rounding","nameLocation":"6135:8:113","nodeType":"VariableDeclaration","scope":44515,"src":"6126:17:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":44480,"nodeType":"UserDefinedTypeName","pathNode":{"id":44479,"name":"Rounding","nameLocations":["6126:8:113"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"6126:8:113"},"referencedDeclaration":4514,"src":"6126:8:113","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"6086:58:113"},"returnParameters":{"id":44485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44515,"src":"6166:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44483,"name":"uint256","nodeType":"ElementaryTypeName","src":"6166:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6165:9:113"},"scope":44990,"src":"6061:429:113","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1356],"body":{"id":44539,"nodeType":"Block","src":"6708:230:113","statements":[{"expression":{"arguments":[{"baseExpression":{"id":44530,"name":"balancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44519,"src":"6799:20:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44532,"indexExpression":{"id":44531,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44521,"src":"6820:12:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6799:34:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":44534,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44521,"src":"6872:12:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44533,"name":"_getNormalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44697,"src":"6851:20:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":44535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6851:34:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":44536,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44523,"src":"6903:14:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":44528,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"6737:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":44529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6750:31:113","memberName":"computeBalanceOutGivenInvariant","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"6737:44:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":44537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6737:194:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44527,"id":44538,"nodeType":"Return","src":"6718:213:113"}]},"documentation":{"id":44516,"nodeType":"StructuredDocumentation","src":"6496:25:113","text":"@inheritdoc IBasePool"},"functionSelector":"16a0b3e0","id":44540,"implemented":true,"kind":"function","modifiers":[],"name":"computeBalance","nameLocation":"6535:14:113","nodeType":"FunctionDefinition","parameters":{"id":44524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44519,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"6576:20:113","nodeType":"VariableDeclaration","scope":44540,"src":"6559:37:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44517,"name":"uint256","nodeType":"ElementaryTypeName","src":"6559:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44518,"nodeType":"ArrayTypeName","src":"6559:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":44521,"mutability":"mutable","name":"tokenInIndex","nameLocation":"6614:12:113","nodeType":"VariableDeclaration","scope":44540,"src":"6606:20:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44520,"name":"uint256","nodeType":"ElementaryTypeName","src":"6606:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44523,"mutability":"mutable","name":"invariantRatio","nameLocation":"6644:14:113","nodeType":"VariableDeclaration","scope":44540,"src":"6636:22:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44522,"name":"uint256","nodeType":"ElementaryTypeName","src":"6636:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6549:115:113"},"returnParameters":{"id":44527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44526,"mutability":"mutable","name":"newBalance","nameLocation":"6696:10:113","nodeType":"VariableDeclaration","scope":44540,"src":"6688:18:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44525,"name":"uint256","nodeType":"ElementaryTypeName","src":"6688:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6687:20:113"},"scope":44990,"src":"6526:412:113","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[100],"body":{"id":44550,"nodeType":"Block","src":"7051:47:113","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":44547,"name":"_getNormalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44815,"src":"7068:21:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256[] memory)"}},"id":44548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7068:23:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":44546,"id":44549,"nodeType":"Return","src":"7061:30:113"}]},"documentation":{"id":44541,"nodeType":"StructuredDocumentation","src":"6944:29:113","text":"@inheritdoc IWeightedPool"},"functionSelector":"f89f27ed","id":44551,"implemented":true,"kind":"function","modifiers":[],"name":"getNormalizedWeights","nameLocation":"6987:20:113","nodeType":"FunctionDefinition","parameters":{"id":44542,"nodeType":"ParameterList","parameters":[],"src":"7007:2:113"},"returnParameters":{"id":44546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44551,"src":"7033:16:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44543,"name":"uint256","nodeType":"ElementaryTypeName","src":"7033:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44544,"nodeType":"ArrayTypeName","src":"7033:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7032:18:113"},"scope":44990,"src":"6978:120:113","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1365],"body":{"id":44626,"nodeType":"Block","src":"7221:1100:113","statements":[{"assignments":[44563],"declarations":[{"constant":false,"id":44563,"mutability":"mutable","name":"balanceTokenInScaled18","nameLocation":"7239:22:113","nodeType":"VariableDeclaration","scope":44626,"src":"7231:30:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44562,"name":"uint256","nodeType":"ElementaryTypeName","src":"7231:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":44569,"initialValue":{"baseExpression":{"expression":{"id":44564,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7264:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7272:16:113","memberName":"balancesScaled18","nodeType":"MemberAccess","referencedDeclaration":4545,"src":"7264:24:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44568,"indexExpression":{"expression":{"id":44566,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7289:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7297:7:113","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4547,"src":"7289:15:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7264:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7231:74:113"},{"assignments":[44571],"declarations":[{"constant":false,"id":44571,"mutability":"mutable","name":"balanceTokenOutScaled18","nameLocation":"7323:23:113","nodeType":"VariableDeclaration","scope":44626,"src":"7315:31:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44570,"name":"uint256","nodeType":"ElementaryTypeName","src":"7315:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":44577,"initialValue":{"baseExpression":{"expression":{"id":44572,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7349:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7357:16:113","memberName":"balancesScaled18","nodeType":"MemberAccess","referencedDeclaration":4545,"src":"7349:24:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44576,"indexExpression":{"expression":{"id":44574,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7374:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7382:8:113","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4549,"src":"7374:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7349:42:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7315:76:113"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"},"id":44582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":44578,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7406:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7414:4:113","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":4540,"src":"7406:12:113","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":44580,"name":"SwapKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"7422:8:113","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$4517_$","typeString":"type(enum SwapKind)"}},"id":44581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7431:8:113","memberName":"EXACT_IN","nodeType":"MemberAccess","referencedDeclaration":4515,"src":"7422:17:113","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$4517","typeString":"enum SwapKind"}},"src":"7406:33:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":44624,"nodeType":"Block","src":"7825:490:113","statements":[{"assignments":[44605],"declarations":[{"constant":false,"id":44605,"mutability":"mutable","name":"amountInScaled18","nameLocation":"7847:16:113","nodeType":"VariableDeclaration","scope":44624,"src":"7839:24:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44604,"name":"uint256","nodeType":"ElementaryTypeName","src":"7839:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":44621,"initialValue":{"arguments":[{"id":44608,"name":"balanceTokenInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44563,"src":"7919:22:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":44610,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7980:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7988:7:113","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4547,"src":"7980:15:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44609,"name":"_getNormalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44697,"src":"7959:20:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":44612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7959:37:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":44613,"name":"balanceTokenOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44571,"src":"8014:23:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":44615,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"8076:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8084:8:113","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4549,"src":"8076:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44614,"name":"_getNormalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44697,"src":"8055:20:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":44617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8055:38:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":44618,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"8111:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8119:19:113","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"8111:27:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":44606,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"7866:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":44607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7879:22:113","memberName":"computeInGivenExactOut","nodeType":"MemberAccess","referencedDeclaration":9498,"src":"7866:35:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":44620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7866:286:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7839:313:113"},{"expression":{"id":44622,"name":"amountInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44605,"src":"8288:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44561,"id":44623,"nodeType":"Return","src":"8281:23:113"}]},"id":44625,"nodeType":"IfStatement","src":"7402:913:113","trueBody":{"id":44603,"nodeType":"Block","src":"7441:378:113","statements":[{"assignments":[44584],"declarations":[{"constant":false,"id":44584,"mutability":"mutable","name":"amountOutScaled18","nameLocation":"7463:17:113","nodeType":"VariableDeclaration","scope":44603,"src":"7455:25:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44583,"name":"uint256","nodeType":"ElementaryTypeName","src":"7455:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":44600,"initialValue":{"arguments":[{"id":44587,"name":"balanceTokenInScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44563,"src":"7536:22:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":44589,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7597:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7605:7:113","memberName":"indexIn","nodeType":"MemberAccess","referencedDeclaration":4547,"src":"7597:15:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44588,"name":"_getNormalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44697,"src":"7576:20:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":44591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7576:37:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":44592,"name":"balanceTokenOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44571,"src":"7631:23:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":44594,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7693:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7701:8:113","memberName":"indexOut","nodeType":"MemberAccess","referencedDeclaration":4549,"src":"7693:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44593,"name":"_getNormalizedWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44697,"src":"7672:20:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":44596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7672:38:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":44597,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44555,"src":"7728:7:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams memory"}},"id":44598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7736:19:113","memberName":"amountGivenScaled18","nodeType":"MemberAccess","referencedDeclaration":4542,"src":"7728:27:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":44585,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"7483:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":44586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7496:22:113","memberName":"computeOutGivenExactIn","nodeType":"MemberAccess","referencedDeclaration":9435,"src":"7483:35:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":44599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7483:286:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7455:314:113"},{"expression":{"id":44601,"name":"amountOutScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44584,"src":"7791:17:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44561,"id":44602,"nodeType":"Return","src":"7784:24:113"}]}}]},"documentation":{"id":44552,"nodeType":"StructuredDocumentation","src":"7104:25:113","text":"@inheritdoc IBasePool"},"functionSelector":"72c98186","id":44627,"implemented":true,"kind":"function","modifiers":[{"id":44558,"kind":"modifierInvocation","modifierName":{"id":44557,"name":"onlyVault","nameLocations":["7193:9:113"],"nodeType":"IdentifierPath","referencedDeclaration":27667,"src":"7193:9:113"},"nodeType":"ModifierInvocation","src":"7193:9:113"}],"name":"onSwap","nameLocation":"7143:6:113","nodeType":"FunctionDefinition","parameters":{"id":44556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44555,"mutability":"mutable","name":"request","nameLocation":"7172:7:113","nodeType":"VariableDeclaration","scope":44627,"src":"7150:29:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_memory_ptr","typeString":"struct PoolSwapParams"},"typeName":{"id":44554,"nodeType":"UserDefinedTypeName","pathNode":{"id":44553,"name":"PoolSwapParams","nameLocations":["7150:14:113"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"7150:14:113"},"referencedDeclaration":4554,"src":"7150:14:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolSwapParams_$4554_storage_ptr","typeString":"struct PoolSwapParams"}},"visibility":"internal"}],"src":"7149:31:113"},"returnParameters":{"id":44561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44627,"src":"7212:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44559,"name":"uint256","nodeType":"ElementaryTypeName","src":"7212:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7211:9:113"},"scope":44990,"src":"7134:1187:113","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":44696,"nodeType":"Block","src":"8417:622:113","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44634,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8458:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":44635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8472:1:113","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8458:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44640,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8523:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":44641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8537:1:113","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8523:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44646,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8588:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":44647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8602:1:113","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8588:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44652,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8653:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"33","id":44653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8667:1:113","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"8653:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44658,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8718:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"34","id":44659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8732:1:113","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"8718:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44664,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8783:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"35","id":44665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8797:1:113","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"8783:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44670,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8848:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"36","id":44671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8862:1:113","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"8848:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44676,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44629,"src":"8913:10:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"37","id":44677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8927:1:113","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"8913:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":44687,"nodeType":"Block","src":"8974:59:113","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":44682,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"8995:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":44684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9008:12:113","memberName":"InvalidToken","nodeType":"MemberAccess","referencedDeclaration":3234,"src":"8995:25:113","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":44685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8995:27:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44686,"nodeType":"RevertStatement","src":"8988:34:113"}]},"id":44688,"nodeType":"IfStatement","src":"8909:124:113","trueBody":{"id":44681,"nodeType":"Block","src":"8930:30:113","statements":[{"expression":{"id":44679,"name":"_normalizedWeight7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44309,"src":"8939:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44680,"nodeType":"Return","src":"8932:25:113"}]}},"id":44689,"nodeType":"IfStatement","src":"8844:189:113","trueBody":{"id":44675,"nodeType":"Block","src":"8865:30:113","statements":[{"expression":{"id":44673,"name":"_normalizedWeight6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"8874:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44674,"nodeType":"Return","src":"8867:25:113"}]}},"id":44690,"nodeType":"IfStatement","src":"8779:254:113","trueBody":{"id":44669,"nodeType":"Block","src":"8800:30:113","statements":[{"expression":{"id":44667,"name":"_normalizedWeight5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44305,"src":"8809:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44668,"nodeType":"Return","src":"8802:25:113"}]}},"id":44691,"nodeType":"IfStatement","src":"8714:319:113","trueBody":{"id":44663,"nodeType":"Block","src":"8735:30:113","statements":[{"expression":{"id":44661,"name":"_normalizedWeight4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44303,"src":"8744:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44662,"nodeType":"Return","src":"8737:25:113"}]}},"id":44692,"nodeType":"IfStatement","src":"8649:384:113","trueBody":{"id":44657,"nodeType":"Block","src":"8670:30:113","statements":[{"expression":{"id":44655,"name":"_normalizedWeight3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44301,"src":"8679:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44656,"nodeType":"Return","src":"8672:25:113"}]}},"id":44693,"nodeType":"IfStatement","src":"8584:449:113","trueBody":{"id":44651,"nodeType":"Block","src":"8605:30:113","statements":[{"expression":{"id":44649,"name":"_normalizedWeight2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44299,"src":"8614:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44650,"nodeType":"Return","src":"8607:25:113"}]}},"id":44694,"nodeType":"IfStatement","src":"8519:514:113","trueBody":{"id":44645,"nodeType":"Block","src":"8540:30:113","statements":[{"expression":{"id":44643,"name":"_normalizedWeight1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44297,"src":"8549:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44644,"nodeType":"Return","src":"8542:25:113"}]}},"id":44695,"nodeType":"IfStatement","src":"8454:579:113","trueBody":{"id":44639,"nodeType":"Block","src":"8475:30:113","statements":[{"expression":{"id":44637,"name":"_normalizedWeight0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44295,"src":"8484:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44633,"id":44638,"nodeType":"Return","src":"8477:25:113"}]}}]},"id":44697,"implemented":true,"kind":"function","modifiers":[],"name":"_getNormalizedWeight","nameLocation":"8336:20:113","nodeType":"FunctionDefinition","parameters":{"id":44630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44629,"mutability":"mutable","name":"tokenIndex","nameLocation":"8365:10:113","nodeType":"VariableDeclaration","scope":44697,"src":"8357:18:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44628,"name":"uint256","nodeType":"ElementaryTypeName","src":"8357:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8356:20:113"},"returnParameters":{"id":44633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44697,"src":"8408:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44631,"name":"uint256","nodeType":"ElementaryTypeName","src":"8408:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8407:9:113"},"scope":44990,"src":"8327:712:113","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":44814,"nodeType":"Block","src":"9127:972:113","statements":[{"assignments":[44704],"declarations":[{"constant":false,"id":44704,"mutability":"mutable","name":"totalTokens","nameLocation":"9145:11:113","nodeType":"VariableDeclaration","scope":44814,"src":"9137:19:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44703,"name":"uint256","nodeType":"ElementaryTypeName","src":"9137:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":44706,"initialValue":{"id":44705,"name":"_totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44293,"src":"9159:12:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9137:34:113"},{"assignments":[44711],"declarations":[{"constant":false,"id":44711,"mutability":"mutable","name":"normalizedWeights","nameLocation":"9198:17:113","nodeType":"VariableDeclaration","scope":44814,"src":"9181:34:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44709,"name":"uint256","nodeType":"ElementaryTypeName","src":"9181:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44710,"nodeType":"ArrayTypeName","src":"9181:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":44717,"initialValue":{"arguments":[{"id":44715,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44704,"src":"9232:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":44714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9218:13:113","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":44712,"name":"uint256","nodeType":"ElementaryTypeName","src":"9222:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44713,"nodeType":"ArrayTypeName","src":"9222:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":44716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9218:26:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9181:63:113"},{"id":44811,"nodeType":"Block","src":"9282:776:113","statements":[{"expression":{"id":44722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44718,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9296:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44720,"indexExpression":{"hexValue":"30","id":44719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:113","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9296:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44721,"name":"_normalizedWeight0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44295,"src":"9319:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9296:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44723,"nodeType":"ExpressionStatement","src":"9296:41:113"},{"expression":{"id":44728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44724,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9351:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44726,"indexExpression":{"hexValue":"31","id":44725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9369:1:113","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9351:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44727,"name":"_normalizedWeight1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44297,"src":"9374:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9351:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44729,"nodeType":"ExpressionStatement","src":"9351:41:113"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44730,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44704,"src":"9410:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"32","id":44731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:113","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9410:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":44742,"nodeType":"Block","src":"9479:29:113","statements":[{"expression":{"id":44740,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9488:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":44702,"id":44741,"nodeType":"Return","src":"9481:24:113"}]},"id":44743,"nodeType":"IfStatement","src":"9406:102:113","trueBody":{"id":44739,"nodeType":"Block","src":"9427:46:113","statements":[{"expression":{"id":44737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44733,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9429:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44735,"indexExpression":{"hexValue":"32","id":44734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9447:1:113","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9429:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44736,"name":"_normalizedWeight2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44299,"src":"9452:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9429:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44738,"nodeType":"ExpressionStatement","src":"9429:41:113"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44744,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44704,"src":"9525:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"33","id":44745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9539:1:113","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"9525:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":44756,"nodeType":"Block","src":"9594:29:113","statements":[{"expression":{"id":44754,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9603:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":44702,"id":44755,"nodeType":"Return","src":"9596:24:113"}]},"id":44757,"nodeType":"IfStatement","src":"9521:102:113","trueBody":{"id":44753,"nodeType":"Block","src":"9542:46:113","statements":[{"expression":{"id":44751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44747,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9544:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44749,"indexExpression":{"hexValue":"33","id":44748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9562:1:113","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9544:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44750,"name":"_normalizedWeight3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44301,"src":"9567:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9544:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44752,"nodeType":"ExpressionStatement","src":"9544:41:113"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44758,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44704,"src":"9640:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"34","id":44759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9654:1:113","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9640:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":44770,"nodeType":"Block","src":"9709:29:113","statements":[{"expression":{"id":44768,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9718:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":44702,"id":44769,"nodeType":"Return","src":"9711:24:113"}]},"id":44771,"nodeType":"IfStatement","src":"9636:102:113","trueBody":{"id":44767,"nodeType":"Block","src":"9657:46:113","statements":[{"expression":{"id":44765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44761,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9659:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44763,"indexExpression":{"hexValue":"34","id":44762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9677:1:113","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9659:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44764,"name":"_normalizedWeight4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44303,"src":"9682:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9659:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44766,"nodeType":"ExpressionStatement","src":"9659:41:113"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44772,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44704,"src":"9755:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"35","id":44773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9769:1:113","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"9755:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":44784,"nodeType":"Block","src":"9824:29:113","statements":[{"expression":{"id":44782,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9833:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":44702,"id":44783,"nodeType":"Return","src":"9826:24:113"}]},"id":44785,"nodeType":"IfStatement","src":"9751:102:113","trueBody":{"id":44781,"nodeType":"Block","src":"9772:46:113","statements":[{"expression":{"id":44779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44775,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9774:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44777,"indexExpression":{"hexValue":"35","id":44776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9792:1:113","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9774:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44778,"name":"_normalizedWeight5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44305,"src":"9797:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9774:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44780,"nodeType":"ExpressionStatement","src":"9774:41:113"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44786,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44704,"src":"9870:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"36","id":44787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9884:1:113","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"9870:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":44798,"nodeType":"Block","src":"9939:29:113","statements":[{"expression":{"id":44796,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9948:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":44702,"id":44797,"nodeType":"Return","src":"9941:24:113"}]},"id":44799,"nodeType":"IfStatement","src":"9866:102:113","trueBody":{"id":44795,"nodeType":"Block","src":"9887:46:113","statements":[{"expression":{"id":44793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44789,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"9889:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44791,"indexExpression":{"hexValue":"36","id":44790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9907:1:113","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9889:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44792,"name":"_normalizedWeight6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44307,"src":"9912:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9889:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44794,"nodeType":"ExpressionStatement","src":"9889:41:113"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44800,"name":"totalTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44704,"src":"9985:11:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"37","id":44801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9999:1:113","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"9985:15:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44810,"nodeType":"IfStatement","src":"9981:67:113","trueBody":{"id":44809,"nodeType":"Block","src":"10002:46:113","statements":[{"expression":{"id":44807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":44803,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"10004:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44805,"indexExpression":{"hexValue":"37","id":44804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10022:1:113","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10004:20:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44806,"name":"_normalizedWeight7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44309,"src":"10027:18:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10004:41:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44808,"nodeType":"ExpressionStatement","src":"10004:41:113"}]}}]},{"expression":{"id":44812,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44711,"src":"10075:17:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":44702,"id":44813,"nodeType":"Return","src":"10068:24:113"}]},"id":44815,"implemented":true,"kind":"function","modifiers":[],"name":"_getNormalizedWeights","nameLocation":"9054:21:113","nodeType":"FunctionDefinition","parameters":{"id":44698,"nodeType":"ParameterList","parameters":[],"src":"9075:2:113"},"returnParameters":{"id":44702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44815,"src":"9109:16:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44699,"name":"uint256","nodeType":"ElementaryTypeName","src":"9109:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44700,"nodeType":"ArrayTypeName","src":"9109:9:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9108:18:113"},"scope":44990,"src":"9045:1054:113","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[2832],"body":{"id":44823,"nodeType":"Block","src":"10221:48:113","statements":[{"expression":{"id":44821,"name":"_MIN_SWAP_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44285,"src":"10238:24:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44820,"id":44822,"nodeType":"Return","src":"10231:31:113"}]},"documentation":{"id":44816,"nodeType":"StructuredDocumentation","src":"10105:40:113","text":"@inheritdoc ISwapFeePercentageBounds"},"functionSelector":"ce20ece7","id":44824,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumSwapFeePercentage","nameLocation":"10159:27:113","nodeType":"FunctionDefinition","parameters":{"id":44817,"nodeType":"ParameterList","parameters":[],"src":"10186:2:113"},"returnParameters":{"id":44820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44819,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44824,"src":"10212:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44818,"name":"uint256","nodeType":"ElementaryTypeName","src":"10212:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10211:9:113"},"scope":44990,"src":"10150:119:113","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2838],"body":{"id":44832,"nodeType":"Block","src":"10391:48:113","statements":[{"expression":{"id":44830,"name":"_MAX_SWAP_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44288,"src":"10408:24:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44829,"id":44831,"nodeType":"Return","src":"10401:31:113"}]},"documentation":{"id":44825,"nodeType":"StructuredDocumentation","src":"10275:40:113","text":"@inheritdoc ISwapFeePercentageBounds"},"functionSelector":"654cf15d","id":44833,"implemented":true,"kind":"function","modifiers":[],"name":"getMaximumSwapFeePercentage","nameLocation":"10329:27:113","nodeType":"FunctionDefinition","parameters":{"id":44826,"nodeType":"ParameterList","parameters":[],"src":"10356:2:113"},"returnParameters":{"id":44829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44828,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44833,"src":"10382:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44827,"name":"uint256","nodeType":"ElementaryTypeName","src":"10382:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10381:9:113"},"scope":44990,"src":"10320:119:113","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2848],"body":{"id":44842,"nodeType":"Block","src":"10574:57:113","statements":[{"expression":{"expression":{"id":44839,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"10591:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":44840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10604:20:113","memberName":"_MIN_INVARIANT_RATIO","nodeType":"MemberAccess","referencedDeclaration":9219,"src":"10591:33:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44838,"id":44841,"nodeType":"Return","src":"10584:40:113"}]},"documentation":{"id":44834,"nodeType":"StructuredDocumentation","src":"10445:56:113","text":"@inheritdoc IUnbalancedLiquidityInvariantRatioBounds"},"functionSelector":"b677fa56","id":44843,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumInvariantRatio","nameLocation":"10515:24:113","nodeType":"FunctionDefinition","parameters":{"id":44835,"nodeType":"ParameterList","parameters":[],"src":"10539:2:113"},"returnParameters":{"id":44838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44837,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44843,"src":"10565:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44836,"name":"uint256","nodeType":"ElementaryTypeName","src":"10565:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10564:9:113"},"scope":44990,"src":"10506:125:113","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2854],"body":{"id":44852,"nodeType":"Block","src":"10766:57:113","statements":[{"expression":{"expression":{"id":44849,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"10783:12:113","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":44850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10796:20:113","memberName":"_MAX_INVARIANT_RATIO","nodeType":"MemberAccess","referencedDeclaration":9216,"src":"10783:33:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":44848,"id":44851,"nodeType":"Return","src":"10776:40:113"}]},"documentation":{"id":44844,"nodeType":"StructuredDocumentation","src":"10637:56:113","text":"@inheritdoc IUnbalancedLiquidityInvariantRatioBounds"},"functionSelector":"273c1adf","id":44853,"implemented":true,"kind":"function","modifiers":[],"name":"getMaximumInvariantRatio","nameLocation":"10707:24:113","nodeType":"FunctionDefinition","parameters":{"id":44845,"nodeType":"ParameterList","parameters":[],"src":"10731:2:113"},"returnParameters":{"id":44848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44853,"src":"10757:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44846,"name":"uint256","nodeType":"ElementaryTypeName","src":"10757:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10756:9:113"},"scope":44990,"src":"10698:125:113","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[107],"body":{"id":44937,"nodeType":"Block","src":"10961:555:113","statements":[{"expression":{"id":44870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44860,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44858,"src":"10971:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData memory"}},"id":44862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10976:20:113","memberName":"balancesLiveScaled18","nodeType":"MemberAccess","referencedDeclaration":76,"src":"10971:25:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":44867,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11037:4:113","typeDescriptions":{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}],"id":44866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11029:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":44865,"name":"address","nodeType":"ElementaryTypeName","src":"11029:7:113","typeDescriptions":{}}},"id":44868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11029:13:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":44863,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"10999:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":44864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11006:22:113","memberName":"getCurrentLiveBalances","nodeType":"MemberAccess","referencedDeclaration":3977,"src":"10999:29:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (uint256[] memory)"}},"id":44869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10999:44:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"10971:72:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44871,"nodeType":"ExpressionStatement","src":"10971:72:113"},{"expression":{"id":44883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"expression":{"id":44872,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44858,"src":"11056:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData memory"}},"id":44874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11061:10:113","memberName":"tokenRates","nodeType":"MemberAccess","referencedDeclaration":79,"src":"11056:15:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":44875,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11053:19:113","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":44880,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11108:4:113","typeDescriptions":{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}],"id":44879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11100:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":44878,"name":"address","nodeType":"ElementaryTypeName","src":"11100:7:113","typeDescriptions":{}}},"id":44881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11100:13:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":44876,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11075:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":44877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11082:17:113","memberName":"getPoolTokenRates","nodeType":"MemberAccess","referencedDeclaration":3939,"src":"11075:24:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (uint256[] memory,uint256[] memory)"}},"id":44882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11075:39:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory)"}},"src":"11053:61:113","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":44884,"nodeType":"ExpressionStatement","src":"11053:61:113"},{"expression":{"id":44896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44885,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44858,"src":"11124:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData memory"}},"id":44887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11129:23:113","memberName":"staticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":81,"src":"11124:28:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"components":[{"arguments":[{"id":44892,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11198:4:113","typeDescriptions":{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}],"id":44891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11190:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":44890,"name":"address","nodeType":"ElementaryTypeName","src":"11190:7:113","typeDescriptions":{}}},"id":44893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11190:13:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":44894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11189:15:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":44888,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11155:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":44889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11162:26:113","memberName":"getStaticSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":4115,"src":"11155:33:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":44895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11155:50:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11124:81:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44897,"nodeType":"ExpressionStatement","src":"11124:81:113"},{"expression":{"id":44903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44898,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44858,"src":"11215:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData memory"}},"id":44900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11220:11:113","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":83,"src":"11215:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":44901,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10447,"src":"11234:11:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":44902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11234:13:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11215:32:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44904,"nodeType":"ExpressionStatement","src":"11215:32:113"},{"assignments":[44907],"declarations":[{"constant":false,"id":44907,"mutability":"mutable","name":"poolConfig","nameLocation":"11276:10:113","nodeType":"VariableDeclaration","scope":44937,"src":"11258:28:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig"},"typeName":{"id":44906,"nodeType":"UserDefinedTypeName","pathNode":{"id":44905,"name":"PoolConfig","nameLocations":["11258:10:113"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"11258:10:113"},"referencedDeclaration":4387,"src":"11258:10:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_storage_ptr","typeString":"struct PoolConfig"}},"visibility":"internal"}],"id":44915,"initialValue":{"arguments":[{"arguments":[{"id":44912,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11318:4:113","typeDescriptions":{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}],"id":44911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11310:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":44910,"name":"address","nodeType":"ElementaryTypeName","src":"11310:7:113","typeDescriptions":{}}},"id":44913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11310:13:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":44908,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11289:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":44909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11296:13:113","memberName":"getPoolConfig","nodeType":"MemberAccess","referencedDeclaration":3986,"src":"11289:20:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_PoolConfig_$4387_memory_ptr_$","typeString":"function (address) view external returns (struct PoolConfig memory)"}},"id":44914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11289:35:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"11258:66:113"},{"expression":{"id":44921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44916,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44858,"src":"11334:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData memory"}},"id":44918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11339:17:113","memberName":"isPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":85,"src":"11334:22:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":44919,"name":"poolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44907,"src":"11359:10:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":44920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11370:17:113","memberName":"isPoolInitialized","nodeType":"MemberAccess","referencedDeclaration":4382,"src":"11359:28:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11334:53:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44922,"nodeType":"ExpressionStatement","src":"11334:53:113"},{"expression":{"id":44928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44923,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44858,"src":"11397:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData memory"}},"id":44925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11402:12:113","memberName":"isPoolPaused","nodeType":"MemberAccess","referencedDeclaration":87,"src":"11397:17:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":44926,"name":"poolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44907,"src":"11417:10:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":44927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11428:12:113","memberName":"isPoolPaused","nodeType":"MemberAccess","referencedDeclaration":4384,"src":"11417:23:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11397:43:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44929,"nodeType":"ExpressionStatement","src":"11397:43:113"},{"expression":{"id":44935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44930,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44858,"src":"11450:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData memory"}},"id":44932,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11455:20:113","memberName":"isPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":89,"src":"11450:25:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":44933,"name":"poolConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44907,"src":"11478:10:113","typeDescriptions":{"typeIdentifier":"t_struct$_PoolConfig_$4387_memory_ptr","typeString":"struct PoolConfig memory"}},"id":44934,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11489:20:113","memberName":"isPoolInRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":4386,"src":"11478:31:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11450:59:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44936,"nodeType":"ExpressionStatement","src":"11450:59:113"}]},"documentation":{"id":44854,"nodeType":"StructuredDocumentation","src":"10829:29:113","text":"@inheritdoc IWeightedPool"},"functionSelector":"c0bc6f33","id":44938,"implemented":true,"kind":"function","modifiers":[],"name":"getWeightedPoolDynamicData","nameLocation":"10872:26:113","nodeType":"FunctionDefinition","parameters":{"id":44855,"nodeType":"ParameterList","parameters":[],"src":"10898:2:113"},"returnParameters":{"id":44859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44858,"mutability":"mutable","name":"data","nameLocation":"10955:4:113","nodeType":"VariableDeclaration","scope":44938,"src":"10924:35:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_memory_ptr","typeString":"struct WeightedPoolDynamicData"},"typeName":{"id":44857,"nodeType":"UserDefinedTypeName","pathNode":{"id":44856,"name":"WeightedPoolDynamicData","nameLocations":["10924:23:113"],"nodeType":"IdentifierPath","referencedDeclaration":90,"src":"10924:23:113"},"referencedDeclaration":90,"src":"10924:23:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolDynamicData_$90_storage_ptr","typeString":"struct WeightedPoolDynamicData"}},"visibility":"internal"}],"src":"10923:37:113"},"scope":44990,"src":"10863:653:113","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[114],"body":{"id":44977,"nodeType":"Block","src":"11658:206:113","statements":[{"expression":{"id":44955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44945,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44943,"src":"11668:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolImmutableData_$72_memory_ptr","typeString":"struct WeightedPoolImmutableData memory"}},"id":44947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11673:6:113","memberName":"tokens","nodeType":"MemberAccess","referencedDeclaration":65,"src":"11668:11:113","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":44952,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11711:4:113","typeDescriptions":{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}],"id":44951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11703:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":44950,"name":"address","nodeType":"ElementaryTypeName","src":"11703:7:113","typeDescriptions":{}}},"id":44953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11703:13:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":44948,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11682:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":44949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11689:13:113","memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3927,"src":"11682:20:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr_$","typeString":"function (address) view external returns (contract IERC20[] memory)"}},"id":44954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11682:35:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"11668:49:113","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$39274_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":44956,"nodeType":"ExpressionStatement","src":"11668:49:113"},{"expression":{"id":44968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":44957,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44943,"src":"11728:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolImmutableData_$72_memory_ptr","typeString":"struct WeightedPoolImmutableData memory"}},"id":44959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11733:21:113","memberName":"decimalScalingFactors","nodeType":"MemberAccess","referencedDeclaration":68,"src":"11728:26:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":44960,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11727:30:113","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":44965,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11793:4:113","typeDescriptions":{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_WeightedPool_$44990","typeString":"contract WeightedPool"}],"id":44964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11785:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":44963,"name":"address","nodeType":"ElementaryTypeName","src":"11785:7:113","typeDescriptions":{}}},"id":44966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11785:13:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":44961,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27649,"src":"11760:6:113","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"id":44962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11767:17:113","memberName":"getPoolTokenRates","nodeType":"MemberAccess","referencedDeclaration":3939,"src":"11760:24:113","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address) view external returns (uint256[] memory,uint256[] memory)"}},"id":44967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11760:39:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256[] memory,uint256[] memory)"}},"src":"11727:72:113","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":44969,"nodeType":"ExpressionStatement","src":"11727:72:113"},{"expression":{"id":44975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":44970,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44943,"src":"11809:4:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolImmutableData_$72_memory_ptr","typeString":"struct WeightedPoolImmutableData memory"}},"id":44972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11814:17:113","memberName":"normalizedWeights","nodeType":"MemberAccess","referencedDeclaration":71,"src":"11809:22:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":44973,"name":"_getNormalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44815,"src":"11834:21:113","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function () view returns (uint256[] memory)"}},"id":44974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11834:23:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"11809:48:113","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":44976,"nodeType":"ExpressionStatement","src":"11809:48:113"}]},"documentation":{"id":44939,"nodeType":"StructuredDocumentation","src":"11522:29:113","text":"@inheritdoc IWeightedPool"},"functionSelector":"53b79bd7","id":44978,"implemented":true,"kind":"function","modifiers":[],"name":"getWeightedPoolImmutableData","nameLocation":"11565:28:113","nodeType":"FunctionDefinition","parameters":{"id":44940,"nodeType":"ParameterList","parameters":[],"src":"11593:2:113"},"returnParameters":{"id":44944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44943,"mutability":"mutable","name":"data","nameLocation":"11652:4:113","nodeType":"VariableDeclaration","scope":44978,"src":"11619:37:113","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolImmutableData_$72_memory_ptr","typeString":"struct WeightedPoolImmutableData"},"typeName":{"id":44942,"nodeType":"UserDefinedTypeName","pathNode":{"id":44941,"name":"WeightedPoolImmutableData","nameLocations":["11619:25:113"],"nodeType":"IdentifierPath","referencedDeclaration":72,"src":"11619:25:113"},"referencedDeclaration":72,"src":"11619:25:113","typeDescriptions":{"typeIdentifier":"t_struct$_WeightedPoolImmutableData_$72_storage_ptr","typeString":"struct WeightedPoolImmutableData"}},"visibility":"internal"}],"src":"11618:39:113"},"scope":44990,"src":"11556:308:113","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10731],"body":{"id":44988,"nodeType":"Block","src":"11962:56:113","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":44985,"name":"WeightedPoolBptRateUnsupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44318,"src":"11979:30:113","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":44986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11979:32:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":44987,"nodeType":"RevertStatement","src":"11972:39:113"}]},"documentation":{"id":44979,"nodeType":"StructuredDocumentation","src":"11870:29:113","text":"@inheritdoc IRateProvider"},"functionSelector":"679aefce","id":44989,"implemented":true,"kind":"function","modifiers":[],"name":"getRate","nameLocation":"11913:7:113","nodeType":"FunctionDefinition","overrides":{"id":44981,"nodeType":"OverrideSpecifier","overrides":[],"src":"11935:8:113"},"parameters":{"id":44980,"nodeType":"ParameterList","parameters":[],"src":"11920:2:113"},"returnParameters":{"id":44984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44989,"src":"11953:7:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44982,"name":"uint256","nodeType":"ElementaryTypeName","src":"11953:7:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11952:9:113"},"scope":44990,"src":"11904:114:113","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":44991,"src":"1931:10089:113","usedErrors":[3234,3422,5586,7543,7840,7843,7846,7849,9201,9204,9207,10368,10375,39992,40064,40066,40643,40648,40653,44312,44315,44318],"usedEvents":[39003,39208,39217]}],"src":"46:11975:113"},"id":113},"contracts/WeightedPool8020Factory.sol":{"ast":{"absolutePath":"contracts/WeightedPool8020Factory.sol","exportedSymbols":{"AddLiquidityKind":[4589],"AddLiquidityParams":[4605],"AfterSwapParams":[4583],"BasePoolFactory":[5112],"BufferWrapOrUnwrapParams":[4644],"FEE_BITLENGTH":[4647],"FEE_SCALING_FACTOR":[4650],"HookFlags":[4409],"HooksConfig":[4433],"IERC20":[39274],"IERC20Metadata":[39300],"IERC4626":[38998],"IPoolVersion":[140],"IRateProvider":[150],"IVault":[2893],"LiquidityManagement":[4362],"MAX_FEE_PERCENTAGE":[4653],"PoolConfig":[4387],"PoolConfigBits":[4364],"PoolData":[4511],"PoolRoleAccounts":[4459],"PoolSwapParams":[4554],"RemoveLiquidityKind":[4610],"RemoveLiquidityParams":[4626],"Rounding":[4514],"SwapKind":[4517],"SwapState":[4443],"TokenConfig":[4476],"TokenInfo":[4486],"TokenType":[4463],"VaultState":[4451],"VaultSwapParams":[4536],"Version":[7108],"WeightedPool":[44990],"WeightedPool8020Factory":[45367],"WrappingDirection":[4629]},"id":45368,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":44992,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:114"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":44994,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45368,"sourceUnit":39301,"src":"72:99:114","symbolAliases":[{"foreign":{"id":44993,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39300,"src":"81:14:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol","id":44996,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45368,"sourceUnit":141,"src":"173:110:114","symbolAliases":[{"foreign":{"id":44995,"name":"IPoolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":140,"src":"182:12:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":44998,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45368,"sourceUnit":2894,"src":"284:81:114","symbolAliases":[{"foreign":{"id":44997,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"293:6:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":44999,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45368,"sourceUnit":4654,"src":"366:69:114","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol","file":"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol","id":45001,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45368,"sourceUnit":5113,"src":"437:93:114","symbolAliases":[{"foreign":{"id":45000,"name":"BasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5112,"src":"446:15:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","id":45003,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45368,"sourceUnit":7109,"src":"531:89:114","symbolAliases":[{"foreign":{"id":45002,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"540:7:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/WeightedPool.sol","file":"./WeightedPool.sol","id":45005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45368,"sourceUnit":44991,"src":"622:50:114","symbolAliases":[{"foreign":{"id":45004,"name":"WeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44990,"src":"631:12:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":45007,"name":"IPoolVersion","nameLocations":["1336:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":140,"src":"1336:12:114"},"id":45008,"nodeType":"InheritanceSpecifier","src":"1336:12:114"},{"baseName":{"id":45009,"name":"BasePoolFactory","nameLocations":["1350:15:114"],"nodeType":"IdentifierPath","referencedDeclaration":5112,"src":"1350:15:114"},"id":45010,"nodeType":"InheritanceSpecifier","src":"1350:15:114"},{"baseName":{"id":45011,"name":"Version","nameLocations":["1367:7:114"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"1367:7:114"},"id":45012,"nodeType":"InheritanceSpecifier","src":"1367:7:114"}],"canonicalName":"WeightedPool8020Factory","contractDependencies":[44990],"contractKind":"contract","documentation":{"id":45006,"nodeType":"StructuredDocumentation","src":"674:625:114","text":" @notice Weighted Pool factory for 80/20 pools.\n @dev These are standard Weighted Pools, but constrained to two tokens and 80/20 weights, greatly simplifying their\n configuration. This is an example of a customized factory, designed to deploy special-purpose pools.\n It does not allow hooks, and has a custom salt computation that does not consider the deployer address.\n See https://medium.com/balancer-protocol/the-8020-initiative-64a7a6cab976 for one use case, and\n https://medium.com/balancer-protocol/80-20-balancer-pools-ad7fed816c8d for a general discussion of the benefits of\n 80/20 pools."},"fullyImplemented":true,"id":45367,"linearizedBaseContracts":[45367,7108,160,5112,5577,18926,5327,1440,130,140],"name":"WeightedPool8020Factory","nameLocation":"1309:23:114","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":45015,"mutability":"constant","name":"_EIGHTY","nameLocation":"1406:7:114","nodeType":"VariableDeclaration","scope":45367,"src":"1381:40:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45013,"name":"uint256","nodeType":"ElementaryTypeName","src":"1381:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3830653136","id":45014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1416:5:114","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000_by_1","typeString":"int_const 800000000000000000"},"value":"80e16"},"visibility":"private"},{"constant":true,"id":45018,"mutability":"constant","name":"_TWENTY","nameLocation":"1459:7:114","nodeType":"VariableDeclaration","scope":45367,"src":"1434:40:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45016,"name":"uint256","nodeType":"ElementaryTypeName","src":"1434:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230653136","id":45017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1469:5:114","typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000_by_1","typeString":"int_const 200000000000000000"},"value":"20e16"},"visibility":"private"},{"constant":false,"id":45020,"mutability":"mutable","name":"_poolVersion","nameLocation":"1503:12:114","nodeType":"VariableDeclaration","scope":45367,"src":"1488:27:114","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":45019,"name":"string","nodeType":"ElementaryTypeName","src":"1488:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":45047,"nodeType":"Block","src":"1772:43:114","statements":[{"expression":{"id":45045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45043,"name":"_poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45020,"src":"1782:12:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45044,"name":"poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45029,"src":"1797:11:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1782:26:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":45046,"nodeType":"ExpressionStatement","src":"1782:26:114"}]},"id":45048,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":45032,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45023,"src":"1687:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":45033,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45025,"src":"1694:19:114","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"arguments":[{"id":45035,"name":"WeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44990,"src":"1720:12:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPool_$44990_$","typeString":"type(contract WeightedPool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_WeightedPool_$44990_$","typeString":"type(contract WeightedPool)"}],"id":45034,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1715:4:114","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":45036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1715:18:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_WeightedPool_$44990","typeString":"type(contract WeightedPool)"}},"id":45037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1734:12:114","memberName":"creationCode","nodeType":"MemberAccess","src":"1715:31:114","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":45038,"kind":"baseConstructorSpecifier","modifierName":{"id":45031,"name":"BasePoolFactory","nameLocations":["1671:15:114"],"nodeType":"IdentifierPath","referencedDeclaration":5112,"src":"1671:15:114"},"nodeType":"ModifierInvocation","src":"1671:76:114"},{"arguments":[{"id":45040,"name":"factoryVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45027,"src":"1756:14:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":45041,"kind":"baseConstructorSpecifier","modifierName":{"id":45039,"name":"Version","nameLocations":["1748:7:114"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"1748:7:114"},"nodeType":"ModifierInvocation","src":"1748:23:114"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":45030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45023,"mutability":"mutable","name":"vault","nameLocation":"1550:5:114","nodeType":"VariableDeclaration","scope":45048,"src":"1543:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":45022,"nodeType":"UserDefinedTypeName","pathNode":{"id":45021,"name":"IVault","nameLocations":["1543:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"1543:6:114"},"referencedDeclaration":2893,"src":"1543:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":45025,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"1572:19:114","nodeType":"VariableDeclaration","scope":45048,"src":"1565:26:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":45024,"name":"uint32","nodeType":"ElementaryTypeName","src":"1565:6:114","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":45027,"mutability":"mutable","name":"factoryVersion","nameLocation":"1615:14:114","nodeType":"VariableDeclaration","scope":45048,"src":"1601:28:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45026,"name":"string","nodeType":"ElementaryTypeName","src":"1601:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":45029,"mutability":"mutable","name":"poolVersion","nameLocation":"1653:11:114","nodeType":"VariableDeclaration","scope":45048,"src":"1639:25:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45028,"name":"string","nodeType":"ElementaryTypeName","src":"1639:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1533:137:114"},"returnParameters":{"id":45042,"nodeType":"ParameterList","parameters":[],"src":"1772:0:114"},"scope":45367,"src":"1522:293:114","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[139],"body":{"id":45056,"nodeType":"Block","src":"1918:36:114","statements":[{"expression":{"id":45054,"name":"_poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45020,"src":"1935:12:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":45053,"id":45055,"nodeType":"Return","src":"1928:19:114"}]},"documentation":{"id":45049,"nodeType":"StructuredDocumentation","src":"1821:28:114","text":"@inheritdoc IPoolVersion"},"functionSelector":"3f819b6f","id":45057,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolVersion","nameLocation":"1863:14:114","nodeType":"FunctionDefinition","parameters":{"id":45050,"nodeType":"ParameterList","parameters":[],"src":"1877:2:114"},"returnParameters":{"id":45053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45057,"src":"1903:13:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45051,"name":"string","nodeType":"ElementaryTypeName","src":"1903:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1902:15:114"},"scope":45367,"src":"1854:100:114","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":45193,"nodeType":"Block","src":"2868:1297:114","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":45080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":45074,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45067,"src":"2882:12:114","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},"id":45075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2895:11:114","memberName":"poolCreator","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"2882:24:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":45078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2918:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":45077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2910:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":45076,"name":"address","nodeType":"ElementaryTypeName","src":"2910:7:114","typeDescriptions":{}}},"id":45079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2910:10:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2882:38:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":45085,"nodeType":"IfStatement","src":"2878:101:114","trueBody":{"id":45084,"nodeType":"Block","src":"2922:57:114","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":45081,"name":"StandardPoolWithCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4773,"src":"2943:23:114","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":45082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2943:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":45083,"nodeType":"RevertStatement","src":"2936:32:114"}]}},{"assignments":[45088],"declarations":[{"constant":false,"id":45088,"mutability":"mutable","name":"highWeightToken","nameLocation":"2996:15:114","nodeType":"VariableDeclaration","scope":45193,"src":"2989:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45087,"nodeType":"UserDefinedTypeName","pathNode":{"id":45086,"name":"IERC20","nameLocations":["2989:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"2989:6:114"},"referencedDeclaration":39274,"src":"2989:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":45091,"initialValue":{"expression":{"id":45089,"name":"highWeightTokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45061,"src":"3014:21:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":45090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3036:5:114","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"3014:27:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2989:52:114"},{"assignments":[45094],"declarations":[{"constant":false,"id":45094,"mutability":"mutable","name":"lowWeightToken","nameLocation":"3058:14:114","nodeType":"VariableDeclaration","scope":45193,"src":"3051:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45093,"nodeType":"UserDefinedTypeName","pathNode":{"id":45092,"name":"IERC20","nameLocations":["3051:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"3051:6:114"},"referencedDeclaration":39274,"src":"3051:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"id":45097,"initialValue":{"expression":{"id":45095,"name":"lowWeightTokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45064,"src":"3075:20:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":45096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3096:5:114","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4467,"src":"3075:26:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"3051:50:114"},{"assignments":[45102],"declarations":[{"constant":false,"id":45102,"mutability":"mutable","name":"tokenConfig","nameLocation":"3133:11:114","nodeType":"VariableDeclaration","scope":45193,"src":"3112:32:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":45100,"nodeType":"UserDefinedTypeName","pathNode":{"id":45099,"name":"TokenConfig","nameLocations":["3112:11:114"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"3112:11:114"},"referencedDeclaration":4476,"src":"3112:11:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":45101,"nodeType":"ArrayTypeName","src":"3112:13:114","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"}],"id":45109,"initialValue":{"arguments":[{"hexValue":"32","id":45107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3165:1:114","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":45106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3147:17:114","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct TokenConfig memory[] memory)"},"typeName":{"baseType":{"id":45104,"nodeType":"UserDefinedTypeName","pathNode":{"id":45103,"name":"TokenConfig","nameLocations":["3151:11:114"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"3151:11:114"},"referencedDeclaration":4476,"src":"3151:11:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":45105,"nodeType":"ArrayTypeName","src":"3151:13:114","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}}},"id":45108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3147:20:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3112:55:114"},{"assignments":[45114],"declarations":[{"constant":false,"id":45114,"mutability":"mutable","name":"weights","nameLocation":"3194:7:114","nodeType":"VariableDeclaration","scope":45193,"src":"3177:24:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45112,"name":"uint256","nodeType":"ElementaryTypeName","src":"3177:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45113,"nodeType":"ArrayTypeName","src":"3177:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":45120,"initialValue":{"arguments":[{"hexValue":"32","id":45118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3218:1:114","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":45117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3204:13:114","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":45115,"name":"uint256","nodeType":"ElementaryTypeName","src":"3208:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45116,"nodeType":"ArrayTypeName","src":"3208:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":45119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3204:16:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3177:43:114"},{"assignments":[45122,45124],"declarations":[{"constant":false,"id":45122,"mutability":"mutable","name":"highWeightTokenIdx","nameLocation":"3274:18:114","nodeType":"VariableDeclaration","scope":45193,"src":"3266:26:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45121,"name":"uint256","nodeType":"ElementaryTypeName","src":"3266:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45124,"mutability":"mutable","name":"lowWeightTokenIdx","nameLocation":"3302:17:114","nodeType":"VariableDeclaration","scope":45193,"src":"3294:25:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45123,"name":"uint256","nodeType":"ElementaryTypeName","src":"3294:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":45135,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":45127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":45125,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45088,"src":"3323:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":45126,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45094,"src":"3341:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"3323:32:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"30","id":45131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3368:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":45132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3371:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":45133,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3367:6:114","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_1_by_1_$","typeString":"tuple(int_const 0,int_const 1)"}},"id":45134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3323:50:114","trueExpression":{"components":[{"hexValue":"31","id":45128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3359:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"30","id":45129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3362:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":45130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3358:6:114","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_1_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 1,int_const 0)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint8_$","typeString":"tuple(uint8,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"3265:108:114"},{"expression":{"id":45140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45136,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45114,"src":"3384:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":45138,"indexExpression":{"id":45137,"name":"highWeightTokenIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45122,"src":"3392:18:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3384:27:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45139,"name":"_EIGHTY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45015,"src":"3414:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3384:37:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45141,"nodeType":"ExpressionStatement","src":"3384:37:114"},{"expression":{"id":45146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45142,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45114,"src":"3431:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":45144,"indexExpression":{"id":45143,"name":"lowWeightTokenIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45124,"src":"3439:17:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3431:26:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45145,"name":"_TWENTY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45018,"src":"3460:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3431:36:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45147,"nodeType":"ExpressionStatement","src":"3431:36:114"},{"expression":{"id":45152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45148,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45102,"src":"3478:11:114","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":45150,"indexExpression":{"id":45149,"name":"highWeightTokenIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45122,"src":"3490:18:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3478:31:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45151,"name":"highWeightTokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45061,"src":"3512:21:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"src":"3478:55:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":45153,"nodeType":"ExpressionStatement","src":"3478:55:114"},{"expression":{"id":45158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45154,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45102,"src":"3543:11:114","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":45156,"indexExpression":{"id":45155,"name":"lowWeightTokenIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45124,"src":"3555:17:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3543:30:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45157,"name":"lowWeightTokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45064,"src":"3576:20:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"src":"3543:53:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig memory"}},"id":45159,"nodeType":"ExpressionStatement","src":"3543:53:114"},{"assignments":[45161],"declarations":[{"constant":false,"id":45161,"mutability":"mutable","name":"constructorArgs","nameLocation":"3620:15:114","nodeType":"VariableDeclaration","scope":45193,"src":"3607:28:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45160,"name":"bytes","nodeType":"ElementaryTypeName","src":"3607:5:114","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":45166,"initialValue":{"arguments":[{"id":45163,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45088,"src":"3664:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":45164,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45094,"src":"3681:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":45162,"name":"_calculateConstructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45354,"src":"3638:25:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract IERC20,contract IERC20) view returns (bytes memory)"}},"id":45165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3638:58:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3607:89:114"},{"assignments":[45168],"declarations":[{"constant":false,"id":45168,"mutability":"mutable","name":"salt","nameLocation":"3714:4:114","nodeType":"VariableDeclaration","scope":45193,"src":"3706:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45167,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3706:7:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":45173,"initialValue":{"arguments":[{"id":45170,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45088,"src":"3736:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":45171,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45094,"src":"3753:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":45169,"name":"_calculateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45252,"src":"3721:14:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$returns$_t_bytes32_$","typeString":"function (contract IERC20,contract IERC20) view returns (bytes32)"}},"id":45172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:47:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3706:62:114"},{"expression":{"id":45179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45174,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45072,"src":"3779:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":45176,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45161,"src":"3794:15:114","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":45177,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45168,"src":"3811:4:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":45175,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"3786:7:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes memory,bytes32) returns (address)"}},"id":45178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3786:30:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3779:37:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":45180,"nodeType":"ExpressionStatement","src":"3779:37:114"},{"expression":{"arguments":[{"id":45182,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45072,"src":"3922:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":45183,"name":"tokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45102,"src":"3940:11:114","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":45184,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45069,"src":"3965:17:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":45185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3996:5:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":45186,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45067,"src":"4048:12:114","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"arguments":[],"expression":{"argumentTypes":[],"id":45187,"name":"getDefaultPoolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5103,"src":"4074:27:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_address_$","typeString":"function () pure returns (address)"}},"id":45188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4074:29:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":45189,"name":"getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"4117:29:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":45190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4117:31:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"id":45181,"name":"_registerPoolWithVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"3886:22:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory)"}},"id":45191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3886:272:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":45192,"nodeType":"ExpressionStatement","src":"3886:272:114"}]},"documentation":{"id":45058,"nodeType":"StructuredDocumentation","src":"1960:669:114","text":" @notice Deploys a new `WeightedPool`.\n @dev Since tokens must be sorted, pass in explicit 80/20 token config structs. This assumes both tokens support\n the `IERC20Metadata` interface with `symbol` that returns a string. Otherwise, use the regular\n `WeightedPoolFactory`.\n @param highWeightTokenConfig The token configuration of the high weight token\n @param lowWeightTokenConfig The token configuration of the low weight token\n @param roleAccounts Addresses the Vault will allow to change certain pool settings\n @param swapFeePercentage Initial swap fee percentage\n @return pool The pool address"},"functionSelector":"4bef86d9","id":45194,"implemented":true,"kind":"function","modifiers":[],"name":"create","nameLocation":"2643:6:114","nodeType":"FunctionDefinition","parameters":{"id":45070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45061,"mutability":"mutable","name":"highWeightTokenConfig","nameLocation":"2678:21:114","nodeType":"VariableDeclaration","scope":45194,"src":"2659:40:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig"},"typeName":{"id":45060,"nodeType":"UserDefinedTypeName","pathNode":{"id":45059,"name":"TokenConfig","nameLocations":["2659:11:114"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"2659:11:114"},"referencedDeclaration":4476,"src":"2659:11:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"visibility":"internal"},{"constant":false,"id":45064,"mutability":"mutable","name":"lowWeightTokenConfig","nameLocation":"2728:20:114","nodeType":"VariableDeclaration","scope":45194,"src":"2709:39:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_memory_ptr","typeString":"struct TokenConfig"},"typeName":{"id":45063,"nodeType":"UserDefinedTypeName","pathNode":{"id":45062,"name":"TokenConfig","nameLocations":["2709:11:114"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"2709:11:114"},"referencedDeclaration":4476,"src":"2709:11:114","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"visibility":"internal"},{"constant":false,"id":45067,"mutability":"mutable","name":"roleAccounts","nameLocation":"2782:12:114","nodeType":"VariableDeclaration","scope":45194,"src":"2758:36:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":45066,"nodeType":"UserDefinedTypeName","pathNode":{"id":45065,"name":"PoolRoleAccounts","nameLocations":["2758:16:114"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"2758:16:114"},"referencedDeclaration":4459,"src":"2758:16:114","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":45069,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"2812:17:114","nodeType":"VariableDeclaration","scope":45194,"src":"2804:25:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45068,"name":"uint256","nodeType":"ElementaryTypeName","src":"2804:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2649:186:114"},"returnParameters":{"id":45073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45072,"mutability":"mutable","name":"pool","nameLocation":"2862:4:114","nodeType":"VariableDeclaration","scope":45194,"src":"2854:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45071,"name":"address","nodeType":"ElementaryTypeName","src":"2854:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2853:14:114"},"scope":45367,"src":"2634:1531:114","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":45227,"nodeType":"Block","src":"4549:239:114","statements":[{"assignments":[45207],"declarations":[{"constant":false,"id":45207,"mutability":"mutable","name":"constructorArgs","nameLocation":"4572:15:114","nodeType":"VariableDeclaration","scope":45227,"src":"4559:28:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45206,"name":"bytes","nodeType":"ElementaryTypeName","src":"4559:5:114","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":45212,"initialValue":{"arguments":[{"id":45209,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45198,"src":"4616:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":45210,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45201,"src":"4633:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":45208,"name":"_calculateConstructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45354,"src":"4590:25:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract IERC20,contract IERC20) view returns (bytes memory)"}},"id":45211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4590:58:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4559:89:114"},{"assignments":[45214],"declarations":[{"constant":false,"id":45214,"mutability":"mutable","name":"salt","nameLocation":"4666:4:114","nodeType":"VariableDeclaration","scope":45227,"src":"4658:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45213,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4658:7:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":45219,"initialValue":{"arguments":[{"id":45216,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45198,"src":"4688:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":45217,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45201,"src":"4705:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":45215,"name":"_calculateSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45252,"src":"4673:14:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$39274_$_t_contract$_IERC20_$39274_$returns$_t_bytes32_$","typeString":"function (contract IERC20,contract IERC20) view returns (bytes32)"}},"id":45218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4673:47:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4658:62:114"},{"expression":{"id":45225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45220,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45204,"src":"4731:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":45222,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45207,"src":"4759:15:114","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":45223,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45214,"src":"4776:4:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":45221,"name":"getDeploymentAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"4738:20:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes memory,bytes32) view returns (address)"}},"id":45224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4738:43:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4731:50:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":45226,"nodeType":"ExpressionStatement","src":"4731:50:114"}]},"documentation":{"id":45195,"nodeType":"StructuredDocumentation","src":"4171:272:114","text":" @notice Gets the address of the pool with the respective tokens and weights.\n @param highWeightToken The token with 80% weight in the pool.\n @param lowWeightToken The token with 20% weight in the pool.\n @return pool Address of the pool"},"functionSelector":"531aa03e","id":45228,"implemented":true,"kind":"function","modifiers":[],"name":"getPool","nameLocation":"4457:7:114","nodeType":"FunctionDefinition","parameters":{"id":45202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45198,"mutability":"mutable","name":"highWeightToken","nameLocation":"4472:15:114","nodeType":"VariableDeclaration","scope":45228,"src":"4465:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45197,"nodeType":"UserDefinedTypeName","pathNode":{"id":45196,"name":"IERC20","nameLocations":["4465:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4465:6:114"},"referencedDeclaration":39274,"src":"4465:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":45201,"mutability":"mutable","name":"lowWeightToken","nameLocation":"4496:14:114","nodeType":"VariableDeclaration","scope":45228,"src":"4489:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45200,"nodeType":"UserDefinedTypeName","pathNode":{"id":45199,"name":"IERC20","nameLocations":["4489:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4489:6:114"},"referencedDeclaration":39274,"src":"4489:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4464:47:114"},"returnParameters":{"id":45205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45204,"mutability":"mutable","name":"pool","nameLocation":"4543:4:114","nodeType":"VariableDeclaration","scope":45228,"src":"4535:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45203,"name":"address","nodeType":"ElementaryTypeName","src":"4535:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4534:14:114"},"scope":45367,"src":"4448:340:114","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":45251,"nodeType":"Block","src":"4902:93:114","statements":[{"expression":{"id":45249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45239,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45237,"src":"4912:4:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":45243,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4940:5:114","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":45244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4946:7:114","memberName":"chainid","nodeType":"MemberAccess","src":"4940:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45245,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45231,"src":"4955:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},{"id":45246,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45234,"src":"4972:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"expression":{"id":45241,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4929:3:114","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":45242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4933:6:114","memberName":"encode","nodeType":"MemberAccess","src":"4929:10:114","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":45247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4929:58:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":45240,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4919:9:114","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":45248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:69:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4912:76:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":45250,"nodeType":"ExpressionStatement","src":"4912:76:114"}]},"id":45252,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateSalt","nameLocation":"4803:14:114","nodeType":"FunctionDefinition","parameters":{"id":45235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45231,"mutability":"mutable","name":"highWeightToken","nameLocation":"4825:15:114","nodeType":"VariableDeclaration","scope":45252,"src":"4818:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45230,"nodeType":"UserDefinedTypeName","pathNode":{"id":45229,"name":"IERC20","nameLocations":["4818:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4818:6:114"},"referencedDeclaration":39274,"src":"4818:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":45234,"mutability":"mutable","name":"lowWeightToken","nameLocation":"4849:14:114","nodeType":"VariableDeclaration","scope":45252,"src":"4842:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45233,"nodeType":"UserDefinedTypeName","pathNode":{"id":45232,"name":"IERC20","nameLocations":["4842:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"4842:6:114"},"referencedDeclaration":39274,"src":"4842:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4817:47:114"},"returnParameters":{"id":45238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45237,"mutability":"mutable","name":"salt","nameLocation":"4896:4:114","nodeType":"VariableDeclaration","scope":45252,"src":"4888:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4888:7:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4887:14:114"},"scope":45367,"src":"4794:201:114","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":45353,"nodeType":"Block","src":"5157:946:114","statements":[{"assignments":[45264,45266],"declarations":[{"constant":false,"id":45264,"mutability":"mutable","name":"highWeightTokenIdx","nameLocation":"5210:18:114","nodeType":"VariableDeclaration","scope":45353,"src":"5202:26:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45263,"name":"uint256","nodeType":"ElementaryTypeName","src":"5202:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45266,"mutability":"mutable","name":"lowWeightTokenIdx","nameLocation":"5238:17:114","nodeType":"VariableDeclaration","scope":45353,"src":"5230:25:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45265,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":45277,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"id":45269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":45267,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45255,"src":"5259:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":45268,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45258,"src":"5277:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"src":"5259:32:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"30","id":45273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5304:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":45274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5307:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":45275,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5303:6:114","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_1_by_1_$","typeString":"tuple(int_const 0,int_const 1)"}},"id":45276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5259:50:114","trueExpression":{"components":[{"hexValue":"31","id":45270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5295:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"hexValue":"30","id":45271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5298:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":45272,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5294:6:114","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_1_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 1,int_const 0)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint8_$","typeString":"tuple(uint8,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"5201:108:114"},{"assignments":[45279],"declarations":[{"constant":false,"id":45279,"mutability":"mutable","name":"highWeightTokenSymbol","nameLocation":"5334:21:114","nodeType":"VariableDeclaration","scope":45353,"src":"5320:35:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45278,"name":"string","nodeType":"ElementaryTypeName","src":"5320:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":45288,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":45283,"name":"highWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45255,"src":"5381:15:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":45282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":45281,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:114","typeDescriptions":{}}},"id":45284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:24:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":45280,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39300,"src":"5358:14:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$39300_$","typeString":"type(contract IERC20Metadata)"}},"id":45285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:40:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$39300","typeString":"contract IERC20Metadata"}},"id":45286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5399:6:114","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":39293,"src":"5358:47:114","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":45287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:49:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"5320:87:114"},{"assignments":[45290],"declarations":[{"constant":false,"id":45290,"mutability":"mutable","name":"lowWeightTokenSymbol","nameLocation":"5431:20:114","nodeType":"VariableDeclaration","scope":45353,"src":"5417:34:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45289,"name":"string","nodeType":"ElementaryTypeName","src":"5417:6:114","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":45299,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":45294,"name":"lowWeightToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45258,"src":"5477:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}],"id":45293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5469:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":45292,"name":"address","nodeType":"ElementaryTypeName","src":"5469:7:114","typeDescriptions":{}}},"id":45295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5469:23:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":45291,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39300,"src":"5454:14:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$39300_$","typeString":"type(contract IERC20Metadata)"}},"id":45296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5454:39:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$39300","typeString":"contract IERC20Metadata"}},"id":45297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:6:114","memberName":"symbol","nodeType":"MemberAccess","referencedDeclaration":39293,"src":"5454:46:114","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view external returns (string memory)"}},"id":45298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5454:48:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"5417:85:114"},{"assignments":[45304],"declarations":[{"constant":false,"id":45304,"mutability":"mutable","name":"weights","nameLocation":"5530:7:114","nodeType":"VariableDeclaration","scope":45353,"src":"5513:24:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45302,"name":"uint256","nodeType":"ElementaryTypeName","src":"5513:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45303,"nodeType":"ArrayTypeName","src":"5513:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":45310,"initialValue":{"arguments":[{"hexValue":"32","id":45308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5554:1:114","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":45307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5540:13:114","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":45305,"name":"uint256","nodeType":"ElementaryTypeName","src":"5544:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45306,"nodeType":"ArrayTypeName","src":"5544:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":45309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5540:16:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5513:43:114"},{"expression":{"id":45315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45311,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45304,"src":"5566:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":45313,"indexExpression":{"id":45312,"name":"highWeightTokenIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45264,"src":"5574:18:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5566:27:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45314,"name":"_EIGHTY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45015,"src":"5596:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5566:37:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45316,"nodeType":"ExpressionStatement","src":"5566:37:114"},{"expression":{"id":45321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45317,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45304,"src":"5613:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":45319,"indexExpression":{"id":45318,"name":"lowWeightTokenIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45266,"src":"5621:17:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5613:26:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45320,"name":"_TWENTY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45018,"src":"5642:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5613:36:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45322,"nodeType":"ExpressionStatement","src":"5613:36:114"},{"expression":{"id":45351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45323,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45261,"src":"5660:15:114","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"42616c616e63657220383020","id":45331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5767:14:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_ed28c6f403a4d5b8e88c5ea4fb589bc1a6dd829573510ffeaf7b2bfd6663b992","typeString":"literal_string \"Balancer 80 \""},"value":"Balancer 80 "},{"id":45332,"name":"highWeightTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45279,"src":"5783:21:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"20323020","id":45333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5806:6:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_b63e55a17b47aee129da839c11c2a4357f84417d4c68ef5e8bb59c94aba54dc7","typeString":"literal_string \" 20 \""},"value":" 20 "},{"id":45334,"name":"lowWeightTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45290,"src":"5814:20:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ed28c6f403a4d5b8e88c5ea4fb589bc1a6dd829573510ffeaf7b2bfd6663b992","typeString":"literal_string \"Balancer 80 \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_b63e55a17b47aee129da839c11c2a4357f84417d4c68ef5e8bb59c94aba54dc7","typeString":"literal_string \" 20 \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":45329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5753:6:114","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":45328,"name":"string","nodeType":"ElementaryTypeName","src":"5753:6:114","typeDescriptions":{}}},"id":45330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5760:6:114","memberName":"concat","nodeType":"MemberAccess","src":"5753:13:114","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":45335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5753:82:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"hexValue":"422d3830","id":45339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5875:6:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_9b717de650a7a424bb5c3db9901f5a1cd760f150677f3004998ed5eb11795207","typeString":"literal_string \"B-80\""},"value":"B-80"},{"id":45340,"name":"highWeightTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45279,"src":"5883:21:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2d3230","id":45341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5906:5:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_47539b362ac0210d06a15c9a7235540ed55a17d4de4f158b6b5b72c96456dc9b","typeString":"literal_string \"-20\""},"value":"-20"},{"id":45342,"name":"lowWeightTokenSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45290,"src":"5913:20:114","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9b717de650a7a424bb5c3db9901f5a1cd760f150677f3004998ed5eb11795207","typeString":"literal_string \"B-80\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_47539b362ac0210d06a15c9a7235540ed55a17d4de4f158b6b5b72c96456dc9b","typeString":"literal_string \"-20\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":45337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5861:6:114","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":45336,"name":"string","nodeType":"ElementaryTypeName","src":"5861:6:114","typeDescriptions":{}}},"id":45338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5868:6:114","memberName":"concat","nodeType":"MemberAccess","src":"5861:13:114","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":45343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5861:73:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"32","id":45344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5963:1:114","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},{"id":45345,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45304,"src":"6001:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":45346,"name":"_poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45020,"src":"6035:12:114","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":45326,"name":"WeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44990,"src":"5702:12:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPool_$44990_$","typeString":"type(contract WeightedPool)"}},"id":45327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5715:13:114","memberName":"NewPoolParams","nodeType":"MemberAccess","referencedDeclaration":44282,"src":"5702:26:114","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_NewPoolParams_$44282_storage_ptr_$","typeString":"type(struct WeightedPool.NewPoolParams storage pointer)"}},"id":45347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["5747:4:114","5853:6:114","5952:9:114","5982:17:114","6026:7:114"],"names":["name","symbol","numTokens","normalizedWeights","version"],"nodeType":"FunctionCall","src":"5702:360:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},{"arguments":[],"expression":{"argumentTypes":[],"id":45348,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18870,"src":"6076:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view returns (contract IVault)"}},"id":45349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6076:10:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"},{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"expression":{"id":45324,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5678:3:114","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":45325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5682:6:114","memberName":"encode","nodeType":"MemberAccess","src":"5678:10:114","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":45350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5678:418:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5660:436:114","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":45352,"nodeType":"ExpressionStatement","src":"5660:436:114"}]},"id":45354,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateConstructorArgs","nameLocation":"5010:25:114","nodeType":"FunctionDefinition","parameters":{"id":45259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45255,"mutability":"mutable","name":"highWeightToken","nameLocation":"5052:15:114","nodeType":"VariableDeclaration","scope":45354,"src":"5045:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45254,"nodeType":"UserDefinedTypeName","pathNode":{"id":45253,"name":"IERC20","nameLocations":["5045:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5045:6:114"},"referencedDeclaration":39274,"src":"5045:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":45258,"mutability":"mutable","name":"lowWeightToken","nameLocation":"5084:14:114","nodeType":"VariableDeclaration","scope":45354,"src":"5077:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"},"typeName":{"id":45257,"nodeType":"UserDefinedTypeName","pathNode":{"id":45256,"name":"IERC20","nameLocations":["5077:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":39274,"src":"5077:6:114"},"referencedDeclaration":39274,"src":"5077:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$39274","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5035:69:114"},"returnParameters":{"id":45262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45261,"mutability":"mutable","name":"constructorArgs","nameLocation":"5140:15:114","nodeType":"VariableDeclaration","scope":45354,"src":"5127:28:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45260,"name":"bytes","nodeType":"ElementaryTypeName","src":"5127:5:114","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5126:30:114"},"scope":45367,"src":"5001:1102:114","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[5018],"body":{"id":45365,"nodeType":"Block","src":"6377:28:114","statements":[{"expression":{"id":45363,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45357,"src":"6394:4:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":45362,"id":45364,"nodeType":"Return","src":"6387:11:114"}]},"documentation":{"id":45355,"nodeType":"StructuredDocumentation","src":"6109:181:114","text":" @dev By default, the BasePoolFactory adds the sender and chainId to compute a final salt.\n Override this to make it use the canonical address salt directly."},"id":45366,"implemented":true,"kind":"function","modifiers":[],"name":"_computeFinalSalt","nameLocation":"6304:17:114","nodeType":"FunctionDefinition","overrides":{"id":45359,"nodeType":"OverrideSpecifier","overrides":[],"src":"6350:8:114"},"parameters":{"id":45358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45357,"mutability":"mutable","name":"salt","nameLocation":"6330:4:114","nodeType":"VariableDeclaration","scope":45366,"src":"6322:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6322:7:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6321:14:114"},"returnParameters":{"id":45362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45366,"src":"6368:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45360,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6368:7:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6367:9:114"},"scope":45367,"src":"6295:110:114","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":45368,"src":"1300:5107:114","usedErrors":[121,1384,1387,4773,5510,39889,39892,39895],"usedEvents":[1378,1381]}],"src":"46:6362:114"},"id":114},"contracts/WeightedPoolFactory.sol":{"ast":{"absolutePath":"contracts/WeightedPoolFactory.sol","exportedSymbols":{"BasePoolFactory":[5112],"IPoolVersion":[140],"IVault":[2893],"LiquidityManagement":[4362],"PoolRoleAccounts":[4459],"TokenConfig":[4476],"Version":[7108],"WeightedPool":[44990],"WeightedPoolFactory":[45521]},"id":45522,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":45369,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:115"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol","file":"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol","id":45371,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45522,"sourceUnit":141,"src":"72:110:115","symbolAliases":[{"foreign":{"id":45370,"name":"IPoolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":140,"src":"81:12:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":45373,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45522,"sourceUnit":2894,"src":"183:81:115","symbolAliases":[{"foreign":{"id":45372,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"192:6:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":45377,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45522,"sourceUnit":4654,"src":"265:141:115","symbolAliases":[{"foreign":{"id":45374,"name":"TokenConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4476,"src":"278:11:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":45375,"name":"PoolRoleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"295:16:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":45376,"name":"LiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"317:19:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol","file":"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol","id":45379,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45522,"sourceUnit":5113,"src":"408:93:115","symbolAliases":[{"foreign":{"id":45378,"name":"BasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5112,"src":"417:15:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","file":"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol","id":45381,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45522,"sourceUnit":7109,"src":"502:89:115","symbolAliases":[{"foreign":{"id":45380,"name":"Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7108,"src":"511:7:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/WeightedPool.sol","file":"./WeightedPool.sol","id":45383,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45522,"sourceUnit":44991,"src":"593:50:115","symbolAliases":[{"foreign":{"id":45382,"name":"WeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44990,"src":"602:12:115","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":45385,"name":"IPoolVersion","nameLocations":["823:12:115"],"nodeType":"IdentifierPath","referencedDeclaration":140,"src":"823:12:115"},"id":45386,"nodeType":"InheritanceSpecifier","src":"823:12:115"},{"baseName":{"id":45387,"name":"BasePoolFactory","nameLocations":["837:15:115"],"nodeType":"IdentifierPath","referencedDeclaration":5112,"src":"837:15:115"},"id":45388,"nodeType":"InheritanceSpecifier","src":"837:15:115"},{"baseName":{"id":45389,"name":"Version","nameLocations":["854:7:115"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"854:7:115"},"id":45390,"nodeType":"InheritanceSpecifier","src":"854:7:115"}],"canonicalName":"WeightedPoolFactory","contractDependencies":[44990],"contractKind":"contract","documentation":{"id":45384,"nodeType":"StructuredDocumentation","src":"645:145:115","text":" @notice General Weighted Pool factory\n @dev This is the most general factory, which allows up to eight tokens and arbitrary weights."},"fullyImplemented":true,"id":45521,"linearizedBaseContracts":[45521,7108,160,5112,5577,18926,5327,1440,130,140],"name":"WeightedPoolFactory","nameLocation":"800:19:115","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":45392,"mutability":"mutable","name":"_poolVersion","nameLocation":"924:12:115","nodeType":"VariableDeclaration","scope":45521,"src":"909:27:115","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":45391,"name":"string","nodeType":"ElementaryTypeName","src":"909:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":45419,"nodeType":"Block","src":"1193:43:115","statements":[{"expression":{"id":45417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45415,"name":"_poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45392,"src":"1203:12:115","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45416,"name":"poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45401,"src":"1218:11:115","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1203:26:115","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":45418,"nodeType":"ExpressionStatement","src":"1203:26:115"}]},"id":45420,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":45404,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45395,"src":"1108:5:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},{"id":45405,"name":"pauseWindowDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45397,"src":"1115:19:115","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"arguments":[{"id":45407,"name":"WeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44990,"src":"1141:12:115","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPool_$44990_$","typeString":"type(contract WeightedPool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_WeightedPool_$44990_$","typeString":"type(contract WeightedPool)"}],"id":45406,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1136:4:115","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":45408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1136:18:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_WeightedPool_$44990","typeString":"type(contract WeightedPool)"}},"id":45409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1155:12:115","memberName":"creationCode","nodeType":"MemberAccess","src":"1136:31:115","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":45410,"kind":"baseConstructorSpecifier","modifierName":{"id":45403,"name":"BasePoolFactory","nameLocations":["1092:15:115"],"nodeType":"IdentifierPath","referencedDeclaration":5112,"src":"1092:15:115"},"nodeType":"ModifierInvocation","src":"1092:76:115"},{"arguments":[{"id":45412,"name":"factoryVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45399,"src":"1177:14:115","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":45413,"kind":"baseConstructorSpecifier","modifierName":{"id":45411,"name":"Version","nameLocations":["1169:7:115"],"nodeType":"IdentifierPath","referencedDeclaration":7108,"src":"1169:7:115"},"nodeType":"ModifierInvocation","src":"1169:23:115"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":45402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45395,"mutability":"mutable","name":"vault","nameLocation":"971:5:115","nodeType":"VariableDeclaration","scope":45420,"src":"964:12:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":45394,"nodeType":"UserDefinedTypeName","pathNode":{"id":45393,"name":"IVault","nameLocations":["964:6:115"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"964:6:115"},"referencedDeclaration":2893,"src":"964:6:115","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":45397,"mutability":"mutable","name":"pauseWindowDuration","nameLocation":"993:19:115","nodeType":"VariableDeclaration","scope":45420,"src":"986:26:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":45396,"name":"uint32","nodeType":"ElementaryTypeName","src":"986:6:115","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":45399,"mutability":"mutable","name":"factoryVersion","nameLocation":"1036:14:115","nodeType":"VariableDeclaration","scope":45420,"src":"1022:28:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45398,"name":"string","nodeType":"ElementaryTypeName","src":"1022:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":45401,"mutability":"mutable","name":"poolVersion","nameLocation":"1074:11:115","nodeType":"VariableDeclaration","scope":45420,"src":"1060:25:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45400,"name":"string","nodeType":"ElementaryTypeName","src":"1060:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"954:137:115"},"returnParameters":{"id":45414,"nodeType":"ParameterList","parameters":[],"src":"1193:0:115"},"scope":45521,"src":"943:293:115","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[139],"body":{"id":45428,"nodeType":"Block","src":"1339:36:115","statements":[{"expression":{"id":45426,"name":"_poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45392,"src":"1356:12:115","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":45425,"id":45427,"nodeType":"Return","src":"1349:19:115"}]},"documentation":{"id":45421,"nodeType":"StructuredDocumentation","src":"1242:28:115","text":"@inheritdoc IPoolVersion"},"functionSelector":"3f819b6f","id":45429,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolVersion","nameLocation":"1284:14:115","nodeType":"FunctionDefinition","parameters":{"id":45422,"nodeType":"ParameterList","parameters":[],"src":"1298:2:115"},"returnParameters":{"id":45425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45429,"src":"1324:13:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45423,"name":"string","nodeType":"ElementaryTypeName","src":"1324:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1323:15:115"},"scope":45521,"src":"1275:100:115","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":45519,"nodeType":"Block","src":"2652:1121:115","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":45465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":45459,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45444,"src":"2666:12:115","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},"id":45460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2679:11:115","memberName":"poolCreator","nodeType":"MemberAccess","referencedDeclaration":4458,"src":"2666:24:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":45463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2702:1:115","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":45462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2694:7:115","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":45461,"name":"address","nodeType":"ElementaryTypeName","src":"2694:7:115","typeDescriptions":{}}},"id":45464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2694:10:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2666:38:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":45470,"nodeType":"IfStatement","src":"2662:101:115","trueBody":{"id":45469,"nodeType":"Block","src":"2706:57:115","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":45466,"name":"StandardPoolWithCreator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4773,"src":"2727:23:115","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":45467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2727:25:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":45468,"nodeType":"RevertStatement","src":"2720:32:115"}]}},{"assignments":[45473],"declarations":[{"constant":false,"id":45473,"mutability":"mutable","name":"liquidityManagement","nameLocation":"2800:19:115","nodeType":"VariableDeclaration","scope":45519,"src":"2773:46:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement"},"typeName":{"id":45472,"nodeType":"UserDefinedTypeName","pathNode":{"id":45471,"name":"LiquidityManagement","nameLocations":["2773:19:115"],"nodeType":"IdentifierPath","referencedDeclaration":4362,"src":"2773:19:115"},"referencedDeclaration":4362,"src":"2773:19:115","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_storage_ptr","typeString":"struct LiquidityManagement"}},"visibility":"internal"}],"id":45476,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":45474,"name":"getDefaultLiquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"2822:29:115","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LiquidityManagement_$4362_memory_ptr_$","typeString":"function () pure returns (struct LiquidityManagement memory)"}},"id":45475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2822:31:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"nodeType":"VariableDeclarationStatement","src":"2773:80:115"},{"expression":{"id":45481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":45477,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45473,"src":"2863:19:115","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":45479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2883:14:115","memberName":"enableDonation","nodeType":"MemberAccess","referencedDeclaration":4361,"src":"2863:34:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45480,"name":"enableDonation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45450,"src":"2900:14:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2863:51:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":45482,"nodeType":"ExpressionStatement","src":"2863:51:115"},{"expression":{"id":45487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":45483,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45473,"src":"3039:19:115","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}},"id":45485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3059:26:115","memberName":"disableUnbalancedLiquidity","nodeType":"MemberAccess","referencedDeclaration":4355,"src":"3039:46:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45486,"name":"disableUnbalancedLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45452,"src":"3088:26:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3039:75:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":45488,"nodeType":"ExpressionStatement","src":"3039:75:115"},{"expression":{"id":45507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45489,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45457,"src":"3125:4:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":45495,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45432,"src":"3236:4:115","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":45496,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45434,"src":"3270:6:115","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":45497,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45438,"src":"3309:6:115","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},"id":45498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3316:6:115","memberName":"length","nodeType":"MemberAccess","src":"3309:13:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45499,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45441,"src":"3363:17:115","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":45500,"name":"_poolVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45392,"src":"3411:12:115","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":45493,"name":"WeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44990,"src":"3181:12:115","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPool_$44990_$","typeString":"type(contract WeightedPool)"}},"id":45494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3194:13:115","memberName":"NewPoolParams","nodeType":"MemberAccess","referencedDeclaration":44282,"src":"3181:26:115","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_NewPoolParams_$44282_storage_ptr_$","typeString":"type(struct WeightedPool.NewPoolParams storage pointer)"}},"id":45501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["3230:4:115","3262:6:115","3298:9:115","3344:17:115","3402:7:115"],"names":["name","symbol","numTokens","normalizedWeights","version"],"nodeType":"FunctionCall","src":"3181:261:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},{"arguments":[],"expression":{"argumentTypes":[],"id":45502,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18870,"src":"3460:8:115","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$2893_$","typeString":"function () view returns (contract IVault)"}},"id":45503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3460:10:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"},{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}],"expression":{"id":45491,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3153:3:115","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":45492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3157:6:115","memberName":"encode","nodeType":"MemberAccess","src":"3153:10:115","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":45504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3153:331:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":45505,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45454,"src":"3498:4:115","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":45490,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"3132:7:115","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes memory,bytes32) returns (address)"}},"id":45506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3132:380:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3125:387:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":45508,"nodeType":"ExpressionStatement","src":"3125:387:115"},{"expression":{"arguments":[{"id":45510,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45457,"src":"3559:4:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":45511,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45438,"src":"3577:6:115","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"}},{"id":45512,"name":"swapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45446,"src":"3597:17:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":45513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3628:5:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":45514,"name":"roleAccounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45444,"src":"3680:12:115","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"}},{"id":45515,"name":"poolHooksContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45448,"src":"3706:17:115","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":45516,"name":"liquidityManagement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45473,"src":"3737:19:115","typeDescriptions":{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_LiquidityManagement_$4362_memory_ptr","typeString":"struct LiquidityManagement memory"}],"id":45509,"name":"_registerPoolWithVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"3523:22:115","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_bool_$_t_struct$_PoolRoleAccounts_$4459_memory_ptr_$_t_address_$_t_struct$_LiquidityManagement_$4362_memory_ptr_$returns$__$","typeString":"function (address,struct TokenConfig memory[] memory,uint256,bool,struct PoolRoleAccounts memory,address,struct LiquidityManagement memory)"}},"id":45517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3523:243:115","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":45518,"nodeType":"ExpressionStatement","src":"3523:243:115"}]},"documentation":{"id":45430,"nodeType":"StructuredDocumentation","src":"1381:865:115","text":" @notice Deploys a new `WeightedPool`.\n @dev Tokens must be sorted for pool registration.\n @param name The name of the pool\n @param symbol The symbol of the pool\n @param tokens An array of descriptors for the tokens the pool will manage\n @param normalizedWeights The pool weights (must add to FixedPoint.ONE)\n @param roleAccounts Addresses the Vault will allow to change certain pool settings\n @param swapFeePercentage Initial swap fee percentage\n @param poolHooksContract Contract that implements the hooks for the pool\n @param enableDonation If true, the pool will support the donation add liquidity mechanism\n @param disableUnbalancedLiquidity If true, only proportional add and remove liquidity are accepted\n @param salt The salt value that will be passed to create2 deployment"},"functionSelector":"fed4cdda","id":45520,"implemented":true,"kind":"function","modifiers":[],"name":"create","nameLocation":"2260:6:115","nodeType":"FunctionDefinition","parameters":{"id":45455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45432,"mutability":"mutable","name":"name","nameLocation":"2290:4:115","nodeType":"VariableDeclaration","scope":45520,"src":"2276:18:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45431,"name":"string","nodeType":"ElementaryTypeName","src":"2276:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":45434,"mutability":"mutable","name":"symbol","nameLocation":"2318:6:115","nodeType":"VariableDeclaration","scope":45520,"src":"2304:20:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":45433,"name":"string","nodeType":"ElementaryTypeName","src":"2304:6:115","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":45438,"mutability":"mutable","name":"tokens","nameLocation":"2355:6:115","nodeType":"VariableDeclaration","scope":45520,"src":"2334:27:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_memory_ptr_$dyn_memory_ptr","typeString":"struct TokenConfig[]"},"typeName":{"baseType":{"id":45436,"nodeType":"UserDefinedTypeName","pathNode":{"id":45435,"name":"TokenConfig","nameLocations":["2334:11:115"],"nodeType":"IdentifierPath","referencedDeclaration":4476,"src":"2334:11:115"},"referencedDeclaration":4476,"src":"2334:11:115","typeDescriptions":{"typeIdentifier":"t_struct$_TokenConfig_$4476_storage_ptr","typeString":"struct TokenConfig"}},"id":45437,"nodeType":"ArrayTypeName","src":"2334:13:115","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenConfig_$4476_storage_$dyn_storage_ptr","typeString":"struct TokenConfig[]"}},"visibility":"internal"},{"constant":false,"id":45441,"mutability":"mutable","name":"normalizedWeights","nameLocation":"2388:17:115","nodeType":"VariableDeclaration","scope":45520,"src":"2371:34:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45439,"name":"uint256","nodeType":"ElementaryTypeName","src":"2371:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45440,"nodeType":"ArrayTypeName","src":"2371:9:115","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":45444,"mutability":"mutable","name":"roleAccounts","nameLocation":"2439:12:115","nodeType":"VariableDeclaration","scope":45520,"src":"2415:36:115","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_memory_ptr","typeString":"struct PoolRoleAccounts"},"typeName":{"id":45443,"nodeType":"UserDefinedTypeName","pathNode":{"id":45442,"name":"PoolRoleAccounts","nameLocations":["2415:16:115"],"nodeType":"IdentifierPath","referencedDeclaration":4459,"src":"2415:16:115"},"referencedDeclaration":4459,"src":"2415:16:115","typeDescriptions":{"typeIdentifier":"t_struct$_PoolRoleAccounts_$4459_storage_ptr","typeString":"struct PoolRoleAccounts"}},"visibility":"internal"},{"constant":false,"id":45446,"mutability":"mutable","name":"swapFeePercentage","nameLocation":"2469:17:115","nodeType":"VariableDeclaration","scope":45520,"src":"2461:25:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45445,"name":"uint256","nodeType":"ElementaryTypeName","src":"2461:7:115","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45448,"mutability":"mutable","name":"poolHooksContract","nameLocation":"2504:17:115","nodeType":"VariableDeclaration","scope":45520,"src":"2496:25:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45447,"name":"address","nodeType":"ElementaryTypeName","src":"2496:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45450,"mutability":"mutable","name":"enableDonation","nameLocation":"2536:14:115","nodeType":"VariableDeclaration","scope":45520,"src":"2531:19:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":45449,"name":"bool","nodeType":"ElementaryTypeName","src":"2531:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":45452,"mutability":"mutable","name":"disableUnbalancedLiquidity","nameLocation":"2565:26:115","nodeType":"VariableDeclaration","scope":45520,"src":"2560:31:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":45451,"name":"bool","nodeType":"ElementaryTypeName","src":"2560:4:115","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":45454,"mutability":"mutable","name":"salt","nameLocation":"2609:4:115","nodeType":"VariableDeclaration","scope":45520,"src":"2601:12:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45453,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2601:7:115","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2266:353:115"},"returnParameters":{"id":45458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45457,"mutability":"mutable","name":"pool","nameLocation":"2646:4:115","nodeType":"VariableDeclaration","scope":45520,"src":"2638:12:115","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45456,"name":"address","nodeType":"ElementaryTypeName","src":"2638:7:115","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2637:14:115"},"scope":45521,"src":"2251:1522:115","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":45522,"src":"791:2984:115","usedErrors":[121,1384,1387,4773,5510,39889,39892,39895],"usedEvents":[1378,1381]}],"src":"46:3730:115"},"id":115},"contracts/test/HardhatImports.sol":{"ast":{"absolutePath":"contracts/test/HardhatImports.sol","exportedSymbols":{"BasicAuthorizerMock":[31167],"BatchRouterMock":[31276],"BufferRouterMock":[31371],"PoolHooksMock":[33567],"ProtocolFeeControllerMock":[34014],"RateProviderMock":[34054],"RouterMock":[34813],"VaultAdminMock":[35247],"VaultExtensionMock":[35399],"VaultMock":[38235]},"id":45544,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":45523,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:116"},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/VaultMock.sol","file":"@balancer-labs/v3-vault/contracts/test/VaultMock.sol","id":45525,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":38236,"src":"155:81:116","symbolAliases":[{"foreign":{"id":45524,"name":"VaultMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38235,"src":"164:9:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol","file":"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol","id":45527,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":31168,"src":"237:101:116","symbolAliases":[{"foreign":{"id":45526,"name":"BasicAuthorizerMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31167,"src":"246:19:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol","file":"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol","id":45529,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":35248,"src":"339:91:116","symbolAliases":[{"foreign":{"id":45528,"name":"VaultAdminMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35247,"src":"348:14:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol","file":"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol","id":45531,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":35400,"src":"431:99:116","symbolAliases":[{"foreign":{"id":45530,"name":"VaultExtensionMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35399,"src":"440:18:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol","file":"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol","id":45533,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":34015,"src":"531:113:116","symbolAliases":[{"foreign":{"id":45532,"name":"ProtocolFeeControllerMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34014,"src":"540:25:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/RouterMock.sol","file":"@balancer-labs/v3-vault/contracts/test/RouterMock.sol","id":45535,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":34814,"src":"645:83:116","symbolAliases":[{"foreign":{"id":45534,"name":"RouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34813,"src":"654:10:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol","file":"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol","id":45537,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":31277,"src":"729:93:116","symbolAliases":[{"foreign":{"id":45536,"name":"BatchRouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31276,"src":"738:15:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol","file":"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol","id":45539,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":31372,"src":"823:95:116","symbolAliases":[{"foreign":{"id":45538,"name":"BufferRouterMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31371,"src":"832:16:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol","file":"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol","id":45541,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":33568,"src":"919:89:116","symbolAliases":[{"foreign":{"id":45540,"name":"PoolHooksMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33567,"src":"928:13:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol","file":"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol","id":45543,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45544,"sourceUnit":34055,"src":"1009:95:116","symbolAliases":[{"foreign":{"id":45542,"name":"RateProviderMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34054,"src":"1018:16:116","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"46:1059:116"},"id":116},"contracts/test/WeightedBasePoolMathMock.sol":{"ast":{"absolutePath":"contracts/test/WeightedBasePoolMathMock.sol","exportedSymbols":{"BasePoolMathMock":[31014],"Rounding":[4514],"WeightedBasePoolMathMock":[45625],"WeightedMath":[9499]},"id":45626,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":45545,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:117"},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol","id":45547,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45626,"sourceUnit":9500,"src":"72:96:117","symbolAliases":[{"foreign":{"id":45546,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"81:12:117","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":45549,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45626,"sourceUnit":4654,"src":"169:87:117","symbolAliases":[{"foreign":{"id":45548,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"178:8:117","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol","file":"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol","id":45551,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45626,"sourceUnit":31015,"src":"258:95:117","symbolAliases":[{"foreign":{"id":45550,"name":"BasePoolMathMock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31014,"src":"267:16:117","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":45552,"name":"BasePoolMathMock","nameLocations":["490:16:117"],"nodeType":"IdentifierPath","referencedDeclaration":31014,"src":"490:16:117"},"id":45553,"nodeType":"InheritanceSpecifier","src":"490:16:117"}],"canonicalName":"WeightedBasePoolMathMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":45625,"internalFunctionIDs":{"7616":1,"7632":2},"linearizedBaseContracts":[45625,31014,1366,2855,2839],"name":"WeightedBasePoolMathMock","nameLocation":"462:24:117","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"b5f163ff","id":45556,"mutability":"mutable","name":"weights","nameLocation":"530:7:117","nodeType":"VariableDeclaration","scope":45625,"src":"513:24:117","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[]"},"typeName":{"baseType":{"id":45554,"name":"uint256","nodeType":"ElementaryTypeName","src":"513:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45555,"nodeType":"ArrayTypeName","src":"513:9:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"public"},{"body":{"id":45566,"nodeType":"Block","src":"583:35:117","statements":[{"expression":{"id":45564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45562,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45556,"src":"593:7:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45563,"name":"_weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45559,"src":"603:8:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"593:18:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45565,"nodeType":"ExpressionStatement","src":"593:18:117"}]},"id":45567,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":45560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45559,"mutability":"mutable","name":"_weights","nameLocation":"573:8:117","nodeType":"VariableDeclaration","scope":45567,"src":"556:25:117","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45557,"name":"uint256","nodeType":"ElementaryTypeName","src":"556:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45558,"nodeType":"ArrayTypeName","src":"556:9:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"555:27:117"},"returnParameters":{"id":45561,"nodeType":"ParameterList","parameters":[],"src":"583:0:117"},"scope":45625,"src":"544:74:117","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[30770],"body":{"id":45598,"nodeType":"Block","src":"769:249:117","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"id":45582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":45579,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45573,"src":"783:8:117","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":45580,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"795:8:117","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":45581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"804:10:117","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"795:19:117","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"src":"783:31:117","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":45596,"nodeType":"Block","src":"918:94:117","statements":[{"expression":{"arguments":[{"id":45592,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45556,"src":"971:7:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},{"id":45593,"name":"balancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45570,"src":"980:20:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":45590,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"939:12:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":45591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"952:18:117","memberName":"computeInvariantUp","nodeType":"MemberAccess","referencedDeclaration":9325,"src":"939:31:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"id":45594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"939:62:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45578,"id":45595,"nodeType":"Return","src":"932:69:117"}]},"id":45597,"nodeType":"IfStatement","src":"779:233:117","trueBody":{"id":45589,"nodeType":"Block","src":"816:96:117","statements":[{"expression":{"arguments":[{"id":45585,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45556,"src":"871:7:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},{"id":45586,"name":"balancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45570,"src":"880:20:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":45583,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"837:12:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":45584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"850:20:117","memberName":"computeInvariantDown","nodeType":"MemberAccess","referencedDeclaration":9272,"src":"837:33:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"id":45587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"837:64:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45578,"id":45588,"nodeType":"Return","src":"830:71:117"}]}}]},"functionSelector":"984de9e8","id":45599,"implemented":true,"kind":"function","modifiers":[],"name":"computeInvariant","nameLocation":"633:16:117","nodeType":"FunctionDefinition","overrides":{"id":45575,"nodeType":"OverrideSpecifier","overrides":[],"src":"742:8:117"},"parameters":{"id":45574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45570,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"676:20:117","nodeType":"VariableDeclaration","scope":45599,"src":"659:37:117","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45568,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45569,"nodeType":"ArrayTypeName","src":"659:9:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":45573,"mutability":"mutable","name":"rounding","nameLocation":"715:8:117","nodeType":"VariableDeclaration","scope":45599,"src":"706:17:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":45572,"nodeType":"UserDefinedTypeName","pathNode":{"id":45571,"name":"Rounding","nameLocations":["706:8:117"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"706:8:117"},"referencedDeclaration":4514,"src":"706:8:117","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"649:80:117"},"returnParameters":{"id":45578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45599,"src":"760:7:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45576,"name":"uint256","nodeType":"ElementaryTypeName","src":"760:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"759:9:117"},"scope":45625,"src":"624:394:117","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[30782],"body":{"id":45623,"nodeType":"Block","src":"1215:217:117","statements":[{"expression":{"arguments":[{"baseExpression":{"id":45614,"name":"balancesLiveScaled18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45602,"src":"1306:20:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":45616,"indexExpression":{"id":45615,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45604,"src":"1327:12:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1306:34:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":45617,"name":"weights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45556,"src":"1358:7:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45619,"indexExpression":{"id":45618,"name":"tokenInIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45604,"src":"1366:12:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1358:21:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45620,"name":"invariantRatio","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45606,"src":"1397:14:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":45612,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"1244:12:117","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":45613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1257:31:117","memberName":"computeBalanceOutGivenInvariant","nodeType":"MemberAccess","referencedDeclaration":9373,"src":"1244:44:117","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":45621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1244:181:117","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45611,"id":45622,"nodeType":"Return","src":"1225:200:117"}]},"functionSelector":"16a0b3e0","id":45624,"implemented":true,"kind":"function","modifiers":[],"name":"computeBalance","nameLocation":"1033:14:117","nodeType":"FunctionDefinition","overrides":{"id":45608,"nodeType":"OverrideSpecifier","overrides":[],"src":"1177:8:117"},"parameters":{"id":45607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45602,"mutability":"mutable","name":"balancesLiveScaled18","nameLocation":"1074:20:117","nodeType":"VariableDeclaration","scope":45624,"src":"1057:37:117","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45600,"name":"uint256","nodeType":"ElementaryTypeName","src":"1057:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45601,"nodeType":"ArrayTypeName","src":"1057:9:117","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":45604,"mutability":"mutable","name":"tokenInIndex","nameLocation":"1112:12:117","nodeType":"VariableDeclaration","scope":45624,"src":"1104:20:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45603,"name":"uint256","nodeType":"ElementaryTypeName","src":"1104:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45606,"mutability":"mutable","name":"invariantRatio","nameLocation":"1142:14:117","nodeType":"VariableDeclaration","scope":45624,"src":"1134:22:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1047:115:117"},"returnParameters":{"id":45611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45610,"mutability":"mutable","name":"newBalance","nameLocation":"1203:10:117","nodeType":"VariableDeclaration","scope":45624,"src":"1195:18:117","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45609,"name":"uint256","nodeType":"ElementaryTypeName","src":"1195:7:117","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1194:20:117"},"scope":45625,"src":"1024:408:117","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":45626,"src":"453:981:117","usedErrors":[7543,7840,7843,7846,7849,9207,10993,11000],"usedEvents":[]}],"src":"46:1389:117"},"id":117},"contracts/test/WeightedMathMock.sol":{"ast":{"absolutePath":"contracts/test/WeightedMathMock.sol","exportedSymbols":{"Rounding":[4514],"WeightedMath":[9499],"WeightedMathMock":[45716]},"id":45717,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":45627,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:118"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol","id":45629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45717,"sourceUnit":4654,"src":"72:87:118","symbolAliases":[{"foreign":{"id":45628,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"81:8:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol","id":45631,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45717,"sourceUnit":9500,"src":"161:96:118","symbolAliases":[{"foreign":{"id":45630,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"170:12:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"WeightedMathMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":45716,"linearizedBaseContracts":[45716],"name":"WeightedMathMock","nameLocation":"268:16:118","nodeType":"ContractDefinition","nodes":[{"body":{"id":45664,"nodeType":"Block","src":"461:245:118","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"id":45648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":45645,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45640,"src":"475:8:118","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":45646,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"487:8:118","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$4514_$","typeString":"type(enum Rounding)"}},"id":45647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"496:10:118","memberName":"ROUND_DOWN","nodeType":"MemberAccess","referencedDeclaration":4513,"src":"487:19:118","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"src":"475:31:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":45662,"nodeType":"Block","src":"608:92:118","statements":[{"expression":{"arguments":[{"id":45658,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45634,"src":"661:17:118","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":45659,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45637,"src":"680:8:118","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":45656,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"629:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":45657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"642:18:118","memberName":"computeInvariantUp","nodeType":"MemberAccess","referencedDeclaration":9325,"src":"629:31:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"id":45660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"629:60:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45644,"id":45661,"nodeType":"Return","src":"622:67:118"}]},"id":45663,"nodeType":"IfStatement","src":"471:229:118","trueBody":{"id":45655,"nodeType":"Block","src":"508:94:118","statements":[{"expression":{"arguments":[{"id":45651,"name":"normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45634,"src":"563:17:118","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":45652,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45637,"src":"582:8:118","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":45649,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"529:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":45650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"542:20:118","memberName":"computeInvariantDown","nodeType":"MemberAccess","referencedDeclaration":9272,"src":"529:33:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256[] memory,uint256[] memory) pure returns (uint256)"}},"id":45653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"529:62:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45644,"id":45654,"nodeType":"Return","src":"522:69:118"}]}}]},"functionSelector":"f33d1410","id":45665,"implemented":true,"kind":"function","modifiers":[],"name":"computeInvariant","nameLocation":"300:16:118","nodeType":"FunctionDefinition","parameters":{"id":45641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45634,"mutability":"mutable","name":"normalizedWeights","nameLocation":"343:17:118","nodeType":"VariableDeclaration","scope":45665,"src":"326:34:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45632,"name":"uint256","nodeType":"ElementaryTypeName","src":"326:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45633,"nodeType":"ArrayTypeName","src":"326:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":45637,"mutability":"mutable","name":"balances","nameLocation":"387:8:118","nodeType":"VariableDeclaration","scope":45665,"src":"370:25:118","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45635,"name":"uint256","nodeType":"ElementaryTypeName","src":"370:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45636,"nodeType":"ArrayTypeName","src":"370:9:118","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":45640,"mutability":"mutable","name":"rounding","nameLocation":"414:8:118","nodeType":"VariableDeclaration","scope":45665,"src":"405:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"},"typeName":{"id":45639,"nodeType":"UserDefinedTypeName","pathNode":{"id":45638,"name":"Rounding","nameLocations":["405:8:118"],"nodeType":"IdentifierPath","referencedDeclaration":4514,"src":"405:8:118"},"referencedDeclaration":4514,"src":"405:8:118","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$4514","typeString":"enum Rounding"}},"visibility":"internal"}],"src":"316:112:118"},"returnParameters":{"id":45644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45643,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45665,"src":"452:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45642,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"451:9:118"},"scope":45716,"src":"291:415:118","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":45689,"nodeType":"Block","src":"916:113:118","statements":[{"expression":{"arguments":[{"id":45682,"name":"balanceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45667,"src":"969:9:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45683,"name":"weightIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45669,"src":"980:8:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45684,"name":"balanceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45671,"src":"990:10:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45685,"name":"weightOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45673,"src":"1002:9:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45686,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45675,"src":"1013:8:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":45680,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"933:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":45681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"946:22:118","memberName":"computeOutGivenExactIn","nodeType":"MemberAccess","referencedDeclaration":9435,"src":"933:35:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":45687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:89:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45679,"id":45688,"nodeType":"Return","src":"926:96:118"}]},"functionSelector":"3c42a2d6","id":45690,"implemented":true,"kind":"function","modifiers":[],"name":"computeOutGivenExactIn","nameLocation":"721:22:118","nodeType":"FunctionDefinition","parameters":{"id":45676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45667,"mutability":"mutable","name":"balanceIn","nameLocation":"761:9:118","nodeType":"VariableDeclaration","scope":45690,"src":"753:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45666,"name":"uint256","nodeType":"ElementaryTypeName","src":"753:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45669,"mutability":"mutable","name":"weightIn","nameLocation":"788:8:118","nodeType":"VariableDeclaration","scope":45690,"src":"780:16:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45668,"name":"uint256","nodeType":"ElementaryTypeName","src":"780:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45671,"mutability":"mutable","name":"balanceOut","nameLocation":"814:10:118","nodeType":"VariableDeclaration","scope":45690,"src":"806:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45670,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45673,"mutability":"mutable","name":"weightOut","nameLocation":"842:9:118","nodeType":"VariableDeclaration","scope":45690,"src":"834:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45672,"name":"uint256","nodeType":"ElementaryTypeName","src":"834:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45675,"mutability":"mutable","name":"amountIn","nameLocation":"869:8:118","nodeType":"VariableDeclaration","scope":45690,"src":"861:16:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45674,"name":"uint256","nodeType":"ElementaryTypeName","src":"861:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"743:140:118"},"returnParameters":{"id":45679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45690,"src":"907:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45677,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"906:9:118"},"scope":45716,"src":"712:317:118","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":45714,"nodeType":"Block","src":"1240:114:118","statements":[{"expression":{"arguments":[{"id":45707,"name":"balanceIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45692,"src":"1293:9:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45708,"name":"weightIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45694,"src":"1304:8:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45709,"name":"balanceOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45696,"src":"1314:10:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45710,"name":"weightOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45698,"src":"1326:9:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":45711,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45700,"src":"1337:9:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":45705,"name":"WeightedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"1257:12:118","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedMath_$9499_$","typeString":"type(library WeightedMath)"}},"id":45706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1270:22:118","memberName":"computeInGivenExactOut","nodeType":"MemberAccess","referencedDeclaration":9498,"src":"1257:35:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":45712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1257:90:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45704,"id":45713,"nodeType":"Return","src":"1250:97:118"}]},"functionSelector":"388f6bd0","id":45715,"implemented":true,"kind":"function","modifiers":[],"name":"computeInGivenExactOut","nameLocation":"1044:22:118","nodeType":"FunctionDefinition","parameters":{"id":45701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45692,"mutability":"mutable","name":"balanceIn","nameLocation":"1084:9:118","nodeType":"VariableDeclaration","scope":45715,"src":"1076:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45691,"name":"uint256","nodeType":"ElementaryTypeName","src":"1076:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45694,"mutability":"mutable","name":"weightIn","nameLocation":"1111:8:118","nodeType":"VariableDeclaration","scope":45715,"src":"1103:16:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45693,"name":"uint256","nodeType":"ElementaryTypeName","src":"1103:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45696,"mutability":"mutable","name":"balanceOut","nameLocation":"1137:10:118","nodeType":"VariableDeclaration","scope":45715,"src":"1129:18:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45695,"name":"uint256","nodeType":"ElementaryTypeName","src":"1129:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45698,"mutability":"mutable","name":"weightOut","nameLocation":"1165:9:118","nodeType":"VariableDeclaration","scope":45715,"src":"1157:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45697,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45700,"mutability":"mutable","name":"amountOut","nameLocation":"1192:9:118","nodeType":"VariableDeclaration","scope":45715,"src":"1184:17:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45699,"name":"uint256","nodeType":"ElementaryTypeName","src":"1184:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1066:141:118"},"returnParameters":{"id":45704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45715,"src":"1231:7:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1231:7:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1230:9:118"},"scope":45716,"src":"1035:319:118","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":45717,"src":"259:1097:118","usedErrors":[7543,7840,7843,7846,7849,9201,9204,9207],"usedEvents":[]}],"src":"46:1311:118"},"id":118},"contracts/test/WeightedPoolMock.sol":{"ast":{"absolutePath":"contracts/test/WeightedPoolMock.sol","exportedSymbols":{"FixedPoint":[7834],"IVault":[2893],"IVaultErrors":[3550],"WeightedPool":[44990],"WeightedPoolMock":[45870]},"id":45871,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":45718,"literals":["solidity","^","0.8",".24"],"nodeType":"PragmaDirective","src":"46:24:119"},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol","id":45720,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45871,"sourceUnit":3551,"src":"72:93:119","symbolAliases":[{"foreign":{"id":45719,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"81:12:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol","id":45722,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45871,"sourceUnit":2894,"src":"166:81:119","symbolAliases":[{"foreign":{"id":45721,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2893,"src":"175:6:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol","id":45724,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45871,"sourceUnit":7835,"src":"249:92:119","symbolAliases":[{"foreign":{"id":45723,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"258:10:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/WeightedPool.sol","file":"../WeightedPool.sol","id":45726,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":45871,"sourceUnit":44991,"src":"343:51:119","symbolAliases":[{"foreign":{"id":45725,"name":"WeightedPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44990,"src":"352:12:119","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":45727,"name":"WeightedPool","nameLocations":["425:12:119"],"nodeType":"IdentifierPath","referencedDeclaration":44990,"src":"425:12:119"},"id":45728,"nodeType":"InheritanceSpecifier","src":"425:12:119"}],"canonicalName":"WeightedPoolMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":45870,"internalFunctionIDs":{"7616":1,"7632":2,"9272":3,"9325":4},"linearizedBaseContracts":[45870,44990,7108,160,5247,54,10732,27688,41305,41317,40050,41207,39023,150,39336,39300,39274,115,1366,2855,2839],"name":"WeightedPoolMock","nameLocation":"405:16:119","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":45731,"mutability":"mutable","name":"_normalizedWeights","nameLocation":"534:18:119","nodeType":"VariableDeclaration","scope":45870,"src":"516:36:119","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[]"},"typeName":{"baseType":{"id":45729,"name":"uint256","nodeType":"ElementaryTypeName","src":"516:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45730,"nodeType":"ArrayTypeName","src":"516:9:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"private"},{"body":{"id":45775,"nodeType":"Block","src":"642:202:119","statements":[{"expression":{"id":45751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":45744,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"652:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":45748,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45734,"src":"687:6:119","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":45749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"694:9:119","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":44276,"src":"687:16:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":45747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"673:13:119","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":45745,"name":"uint256","nodeType":"ElementaryTypeName","src":"677:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45746,"nodeType":"ArrayTypeName","src":"677:9:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":45750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"673:31:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"652:52:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45752,"nodeType":"ExpressionStatement","src":"652:52:119"},{"body":{"id":45773,"nodeType":"Block","src":"762:76:119","statements":[{"expression":{"id":45771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45764,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"776:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45766,"indexExpression":{"id":45765,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45754,"src":"795:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"776:21:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":45767,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45734,"src":"800:6:119","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":45768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"807:17:119","memberName":"normalizedWeights","nodeType":"MemberAccess","referencedDeclaration":44279,"src":"800:24:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":45770,"indexExpression":{"id":45769,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45754,"src":"825:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"800:27:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"776:51:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45772,"nodeType":"ExpressionStatement","src":"776:51:119"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":45760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":45757,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45754,"src":"735:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":45758,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45734,"src":"739:6:119","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},"id":45759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"746:9:119","memberName":"numTokens","nodeType":"MemberAccess","referencedDeclaration":44276,"src":"739:16:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"735:20:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":45774,"initializationExpression":{"assignments":[45754],"declarations":[{"constant":false,"id":45754,"mutability":"mutable","name":"i","nameLocation":"728:1:119","nodeType":"VariableDeclaration","scope":45774,"src":"720:9:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45753,"name":"uint256","nodeType":"ElementaryTypeName","src":"720:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":45756,"initialValue":{"hexValue":"30","id":45755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"732:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"720:13:119"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":45762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"757:3:119","subExpression":{"id":45761,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45754,"src":"759:1:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45763,"nodeType":"ExpressionStatement","src":"757:3:119"},"nodeType":"ForStatement","src":"715:123:119"}]},"id":45776,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":45740,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45734,"src":"627:6:119","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams memory"}},{"id":45741,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45737,"src":"635:5:119","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}}],"id":45742,"kind":"baseConstructorSpecifier","modifierName":{"id":45739,"name":"WeightedPool","nameLocations":["614:12:119"],"nodeType":"IdentifierPath","referencedDeclaration":44990,"src":"614:12:119"},"nodeType":"ModifierInvocation","src":"614:27:119"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":45738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45734,"mutability":"mutable","name":"params","nameLocation":"592:6:119","nodeType":"VariableDeclaration","scope":45776,"src":"571:27:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_memory_ptr","typeString":"struct WeightedPool.NewPoolParams"},"typeName":{"id":45733,"nodeType":"UserDefinedTypeName","pathNode":{"id":45732,"name":"NewPoolParams","nameLocations":["571:13:119"],"nodeType":"IdentifierPath","referencedDeclaration":44282,"src":"571:13:119"},"referencedDeclaration":44282,"src":"571:13:119","typeDescriptions":{"typeIdentifier":"t_struct$_NewPoolParams_$44282_storage_ptr","typeString":"struct WeightedPool.NewPoolParams"}},"visibility":"internal"},{"constant":false,"id":45737,"mutability":"mutable","name":"vault","nameLocation":"607:5:119","nodeType":"VariableDeclaration","scope":45776,"src":"600:12:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"},"typeName":{"id":45736,"nodeType":"UserDefinedTypeName","pathNode":{"id":45735,"name":"IVault","nameLocations":["600:6:119"],"nodeType":"IdentifierPath","referencedDeclaration":2893,"src":"600:6:119"},"referencedDeclaration":2893,"src":"600:6:119","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$2893","typeString":"contract IVault"}},"visibility":"internal"}],"src":"570:43:119"},"returnParameters":{"id":45743,"nodeType":"ParameterList","parameters":[],"src":"642:0:119"},"scope":45870,"src":"559:285:119","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":45795,"nodeType":"Block","src":"927:127:119","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":45786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":45783,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45778,"src":"941:10:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":45784,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"954:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"973:6:119","memberName":"length","nodeType":"MemberAccess","src":"954:25:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:38:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":45794,"nodeType":"IfStatement","src":"937:111:119","trueBody":{"id":45793,"nodeType":"Block","src":"981:67:119","statements":[{"expression":{"id":45791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45787,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"995:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45789,"indexExpression":{"id":45788,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45778,"src":"1014:10:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"995:30:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":45790,"name":"newWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45780,"src":"1028:9:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"995:42:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45792,"nodeType":"ExpressionStatement","src":"995:42:119"}]}}]},"functionSelector":"19f32ccd","id":45796,"implemented":true,"kind":"function","modifiers":[],"name":"setNormalizedWeight","nameLocation":"859:19:119","nodeType":"FunctionDefinition","parameters":{"id":45781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45778,"mutability":"mutable","name":"tokenIndex","nameLocation":"887:10:119","nodeType":"VariableDeclaration","scope":45796,"src":"879:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45777,"name":"uint256","nodeType":"ElementaryTypeName","src":"879:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":45780,"mutability":"mutable","name":"newWeight","nameLocation":"907:9:119","nodeType":"VariableDeclaration","scope":45796,"src":"899:17:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45779,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"878:39:119"},"returnParameters":{"id":45782,"nodeType":"ParameterList","parameters":[],"src":"927:0:119"},"scope":45870,"src":"850:204:119","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":45833,"nodeType":"Block","src":"1206:193:119","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":45813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":45810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":45804,"name":"newWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45800,"src":"1224:10:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":45806,"indexExpression":{"hexValue":"30","id":45805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1235:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1224:13:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"id":45807,"name":"newWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45800,"src":"1240:10:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":45809,"indexExpression":{"hexValue":"31","id":45808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1251:1:119","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1240:13:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1224:29:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":45811,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7834,"src":"1257:10:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$7834_$","typeString":"type(library FixedPoint)"}},"id":45812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1268:3:119","memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":7546,"src":"1257:14:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1224:47:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5765696768747320646f6e277420746f74616c2031","id":45814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1273:23:119","typeDescriptions":{"typeIdentifier":"t_stringliteral_f94de36b555856ca771a54b7df9d904d69fa1a2e2cace1a373fb449dd0e56130","typeString":"literal_string \"Weights don't total 1\""},"value":"Weights don't total 1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f94de36b555856ca771a54b7df9d904d69fa1a2e2cace1a373fb449dd0e56130","typeString":"literal_string \"Weights don't total 1\""}],"id":45803,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1216:7:119","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":45815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1216:81:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":45816,"nodeType":"ExpressionStatement","src":"1216:81:119"},{"expression":{"id":45823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45817,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"1308:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45819,"indexExpression":{"hexValue":"30","id":45818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1327:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1308:21:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":45820,"name":"newWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45800,"src":"1332:10:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":45822,"indexExpression":{"hexValue":"30","id":45821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:119","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1332:13:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1308:37:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45824,"nodeType":"ExpressionStatement","src":"1308:37:119"},{"expression":{"id":45831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":45825,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"1355:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45827,"indexExpression":{"hexValue":"31","id":45826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1374:1:119","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1355:21:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":45828,"name":"newWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45800,"src":"1379:10:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2] memory"}},"id":45830,"indexExpression":{"hexValue":"31","id":45829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1390:1:119","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1379:13:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1355:37:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45832,"nodeType":"ExpressionStatement","src":"1355:37:119"}]},"functionSelector":"3f3353de","id":45834,"implemented":true,"kind":"function","modifiers":[],"name":"setNormalizedWeights","nameLocation":"1146:20:119","nodeType":"FunctionDefinition","parameters":{"id":45801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45800,"mutability":"mutable","name":"newWeights","nameLocation":"1185:10:119","nodeType":"VariableDeclaration","scope":45834,"src":"1167:28:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_memory_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":45797,"name":"uint256","nodeType":"ElementaryTypeName","src":"1167:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45799,"length":{"hexValue":"32","id":45798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1175:1:119","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"1167:10:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"src":"1166:30:119"},"returnParameters":{"id":45802,"nodeType":"ParameterList","parameters":[],"src":"1206:0:119"},"scope":45870,"src":"1137:262:119","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[44697],"body":{"id":45858,"nodeType":"Block","src":"1496:187:119","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":45845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":45842,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45836,"src":"1510:10:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":45843,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"1523:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1542:6:119","memberName":"length","nodeType":"MemberAccess","src":"1523:25:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1510:38:119","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":45856,"nodeType":"Block","src":"1618:59:119","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":45851,"name":"IVaultErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"1639:12:119","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVaultErrors_$3550_$","typeString":"type(contract IVaultErrors)"}},"id":45853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1652:12:119","memberName":"InvalidToken","nodeType":"MemberAccess","referencedDeclaration":3234,"src":"1639:25:119","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":45854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1639:27:119","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":45855,"nodeType":"RevertStatement","src":"1632:34:119"}]},"id":45857,"nodeType":"IfStatement","src":"1506:171:119","trueBody":{"id":45850,"nodeType":"Block","src":"1550:62:119","statements":[{"expression":{"baseExpression":{"id":45846,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"1571:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":45848,"indexExpression":{"id":45847,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45836,"src":"1590:10:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1571:30:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":45841,"id":45849,"nodeType":"Return","src":"1564:37:119"}]}}]},"id":45859,"implemented":true,"kind":"function","modifiers":[],"name":"_getNormalizedWeight","nameLocation":"1414:20:119","nodeType":"FunctionDefinition","overrides":{"id":45838,"nodeType":"OverrideSpecifier","overrides":[],"src":"1469:8:119"},"parameters":{"id":45837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45836,"mutability":"mutable","name":"tokenIndex","nameLocation":"1443:10:119","nodeType":"VariableDeclaration","scope":45859,"src":"1435:18:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45835,"name":"uint256","nodeType":"ElementaryTypeName","src":"1435:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1434:20:119"},"returnParameters":{"id":45841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45859,"src":"1487:7:119","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1487:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1486:9:119"},"scope":45870,"src":"1405:278:119","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[44815],"body":{"id":45868,"nodeType":"Block","src":"1772:42:119","statements":[{"expression":{"id":45866,"name":"_normalizedWeights","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45731,"src":"1789:18:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"functionReturnParameters":45865,"id":45867,"nodeType":"Return","src":"1782:25:119"}]},"id":45869,"implemented":true,"kind":"function","modifiers":[],"name":"_getNormalizedWeights","nameLocation":"1698:21:119","nodeType":"FunctionDefinition","overrides":{"id":45861,"nodeType":"OverrideSpecifier","overrides":[],"src":"1736:8:119"},"parameters":{"id":45860,"nodeType":"ParameterList","parameters":[],"src":"1719:2:119"},"returnParameters":{"id":45865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45864,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45869,"src":"1754:16:119","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":45862,"name":"uint256","nodeType":"ElementaryTypeName","src":"1754:7:119","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45863,"nodeType":"ArrayTypeName","src":"1754:9:119","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1753:18:119"},"scope":45870,"src":"1689:125:119","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":45871,"src":"396:1420:119","usedErrors":[3234,3422,5586,7543,7840,7843,7846,7849,9201,9204,9207,10368,10375,39992,40064,40066,40643,40648,40653,44312,44315,44318],"usedEvents":[39003,39208,39217]}],"src":"46:1771:119"},"id":119},"permit2/src/interfaces/IAllowanceTransfer.sol":{"ast":{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","exportedSymbols":{"IAllowanceTransfer":[46082],"IEIP712":[46090]},"id":46083,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":45872,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:120"},{"absolutePath":"permit2/src/interfaces/IEIP712.sol","file":"./IEIP712.sol","id":45874,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":46083,"sourceUnit":46091,"src":"57:38:120","symbolAliases":[{"foreign":{"id":45873,"name":"IEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46090,"src":"65:7:120","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":45876,"name":"IEIP712","nameLocations":["362:7:120"],"nodeType":"IdentifierPath","referencedDeclaration":46090,"src":"362:7:120"},"id":45877,"nodeType":"InheritanceSpecifier","src":"362:7:120"}],"canonicalName":"IAllowanceTransfer","contractDependencies":[],"contractKind":"interface","documentation":{"id":45875,"nodeType":"StructuredDocumentation","src":"97:233:120","text":"@title AllowanceTransfer\n @notice Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts\n @dev Requires user's token approval on the Permit2 contract"},"fullyImplemented":false,"id":46082,"linearizedBaseContracts":[46082,46090],"name":"IAllowanceTransfer","nameLocation":"340:18:120","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":45878,"nodeType":"StructuredDocumentation","src":"376:145:120","text":"@notice Thrown when an allowance on a token has expired.\n @param deadline The timestamp at which the allowed amount is no longer valid"},"errorSelector":"d81b2f2e","id":45882,"name":"AllowanceExpired","nameLocation":"532:16:120","nodeType":"ErrorDefinition","parameters":{"id":45881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45880,"mutability":"mutable","name":"deadline","nameLocation":"557:8:120","nodeType":"VariableDeclaration","scope":45882,"src":"549:16:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45879,"name":"uint256","nodeType":"ElementaryTypeName","src":"549:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"548:18:120"},"src":"526:41:120"},{"documentation":{"id":45883,"nodeType":"StructuredDocumentation","src":"573:115:120","text":"@notice Thrown when an allowance on a token has been depleted.\n @param amount The maximum amount allowed"},"errorSelector":"f96fb071","id":45887,"name":"InsufficientAllowance","nameLocation":"699:21:120","nodeType":"ErrorDefinition","parameters":{"id":45886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45885,"mutability":"mutable","name":"amount","nameLocation":"729:6:120","nodeType":"VariableDeclaration","scope":45887,"src":"721:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45884,"name":"uint256","nodeType":"ElementaryTypeName","src":"721:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"720:16:120"},"src":"693:44:120"},{"documentation":{"id":45888,"nodeType":"StructuredDocumentation","src":"743:56:120","text":"@notice Thrown when too many nonces are invalidated."},"errorSelector":"24d35a26","id":45890,"name":"ExcessiveInvalidation","nameLocation":"810:21:120","nodeType":"ErrorDefinition","parameters":{"id":45889,"nodeType":"ParameterList","parameters":[],"src":"831:2:120"},"src":"804:30:120"},{"anonymous":false,"documentation":{"id":45891,"nodeType":"StructuredDocumentation","src":"840:84:120","text":"@notice Emits an event when the owner successfully invalidates an ordered nonce."},"eventSelector":"55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f3","id":45903,"name":"NonceInvalidation","nameLocation":"935:17:120","nodeType":"EventDefinition","parameters":{"id":45902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45893,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"978:5:120","nodeType":"VariableDeclaration","scope":45903,"src":"962:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45892,"name":"address","nodeType":"ElementaryTypeName","src":"962:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45895,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1001:5:120","nodeType":"VariableDeclaration","scope":45903,"src":"985:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45894,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45897,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"1024:7:120","nodeType":"VariableDeclaration","scope":45903,"src":"1008:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45896,"name":"address","nodeType":"ElementaryTypeName","src":"1008:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45899,"indexed":false,"mutability":"mutable","name":"newNonce","nameLocation":"1040:8:120","nodeType":"VariableDeclaration","scope":45903,"src":"1033:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45898,"name":"uint48","nodeType":"ElementaryTypeName","src":"1033:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":45901,"indexed":false,"mutability":"mutable","name":"oldNonce","nameLocation":"1057:8:120","nodeType":"VariableDeclaration","scope":45903,"src":"1050:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45900,"name":"uint48","nodeType":"ElementaryTypeName","src":"1050:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"952:119:120"},"src":"929:143:120"},{"anonymous":false,"documentation":{"id":45904,"nodeType":"StructuredDocumentation","src":"1078:99:120","text":"@notice Emits an event when the owner successfully sets permissions on a token for the spender."},"eventSelector":"da9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b","id":45916,"name":"Approval","nameLocation":"1188:8:120","nodeType":"EventDefinition","parameters":{"id":45915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45906,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1222:5:120","nodeType":"VariableDeclaration","scope":45916,"src":"1206:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45905,"name":"address","nodeType":"ElementaryTypeName","src":"1206:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45908,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1245:5:120","nodeType":"VariableDeclaration","scope":45916,"src":"1229:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45907,"name":"address","nodeType":"ElementaryTypeName","src":"1229:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45910,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"1268:7:120","nodeType":"VariableDeclaration","scope":45916,"src":"1252:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45909,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45912,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1285:6:120","nodeType":"VariableDeclaration","scope":45916,"src":"1277:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":45911,"name":"uint160","nodeType":"ElementaryTypeName","src":"1277:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":45914,"indexed":false,"mutability":"mutable","name":"expiration","nameLocation":"1300:10:120","nodeType":"VariableDeclaration","scope":45916,"src":"1293:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45913,"name":"uint48","nodeType":"ElementaryTypeName","src":"1293:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1196:120:120"},"src":"1182:135:120"},{"anonymous":false,"documentation":{"id":45917,"nodeType":"StructuredDocumentation","src":"1323:124:120","text":"@notice Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender."},"eventSelector":"c6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec","id":45931,"name":"Permit","nameLocation":"1458:6:120","nodeType":"EventDefinition","parameters":{"id":45930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45919,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1490:5:120","nodeType":"VariableDeclaration","scope":45931,"src":"1474:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45918,"name":"address","nodeType":"ElementaryTypeName","src":"1474:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45921,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1521:5:120","nodeType":"VariableDeclaration","scope":45931,"src":"1505:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45920,"name":"address","nodeType":"ElementaryTypeName","src":"1505:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45923,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"1552:7:120","nodeType":"VariableDeclaration","scope":45931,"src":"1536:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45922,"name":"address","nodeType":"ElementaryTypeName","src":"1536:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45925,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1577:6:120","nodeType":"VariableDeclaration","scope":45931,"src":"1569:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":45924,"name":"uint160","nodeType":"ElementaryTypeName","src":"1569:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":45927,"indexed":false,"mutability":"mutable","name":"expiration","nameLocation":"1600:10:120","nodeType":"VariableDeclaration","scope":45931,"src":"1593:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45926,"name":"uint48","nodeType":"ElementaryTypeName","src":"1593:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":45929,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"1627:5:120","nodeType":"VariableDeclaration","scope":45931,"src":"1620:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45928,"name":"uint48","nodeType":"ElementaryTypeName","src":"1620:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"1464:174:120"},"src":"1452:187:120"},{"anonymous":false,"documentation":{"id":45932,"nodeType":"StructuredDocumentation","src":"1645:98:120","text":"@notice Emits an event when the owner sets the allowance back to 0 with the lockdown function."},"eventSelector":"89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4","id":45940,"name":"Lockdown","nameLocation":"1754:8:120","nodeType":"EventDefinition","parameters":{"id":45939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45934,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1779:5:120","nodeType":"VariableDeclaration","scope":45940,"src":"1763:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45933,"name":"address","nodeType":"ElementaryTypeName","src":"1763:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45936,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1794:5:120","nodeType":"VariableDeclaration","scope":45940,"src":"1786:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45935,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45938,"indexed":false,"mutability":"mutable","name":"spender","nameLocation":"1809:7:120","nodeType":"VariableDeclaration","scope":45940,"src":"1801:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45937,"name":"address","nodeType":"ElementaryTypeName","src":"1801:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1762:55:120"},"src":"1748:70:120"},{"canonicalName":"IAllowanceTransfer.PermitDetails","documentation":{"id":45941,"nodeType":"StructuredDocumentation","src":"1824:39:120","text":"@notice The permit data for a token"},"id":45950,"members":[{"constant":false,"id":45943,"mutability":"mutable","name":"token","nameLocation":"1938:5:120","nodeType":"VariableDeclaration","scope":45950,"src":"1930:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45942,"name":"address","nodeType":"ElementaryTypeName","src":"1930:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45945,"mutability":"mutable","name":"amount","nameLocation":"2008:6:120","nodeType":"VariableDeclaration","scope":45950,"src":"2000:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":45944,"name":"uint160","nodeType":"ElementaryTypeName","src":"2000:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":45947,"mutability":"mutable","name":"expiration","nameLocation":"2105:10:120","nodeType":"VariableDeclaration","scope":45950,"src":"2098:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45946,"name":"uint48","nodeType":"ElementaryTypeName","src":"2098:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":45949,"mutability":"mutable","name":"nonce","nameLocation":"2220:5:120","nodeType":"VariableDeclaration","scope":45950,"src":"2213:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45948,"name":"uint48","nodeType":"ElementaryTypeName","src":"2213:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"PermitDetails","nameLocation":"1875:13:120","nodeType":"StructDefinition","scope":46082,"src":"1868:364:120","visibility":"public"},{"canonicalName":"IAllowanceTransfer.PermitSingle","documentation":{"id":45951,"nodeType":"StructuredDocumentation","src":"2238:66:120","text":"@notice The permit message signed for a single token allowance"},"id":45959,"members":[{"constant":false,"id":45954,"mutability":"mutable","name":"details","nameLocation":"2407:7:120","nodeType":"VariableDeclaration","scope":45959,"src":"2393:21:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$45950_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"},"typeName":{"id":45953,"nodeType":"UserDefinedTypeName","pathNode":{"id":45952,"name":"PermitDetails","nameLocations":["2393:13:120"],"nodeType":"IdentifierPath","referencedDeclaration":45950,"src":"2393:13:120"},"referencedDeclaration":45950,"src":"2393:13:120","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$45950_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"}},"visibility":"internal"},{"constant":false,"id":45956,"mutability":"mutable","name":"spender","nameLocation":"2486:7:120","nodeType":"VariableDeclaration","scope":45959,"src":"2478:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45955,"name":"address","nodeType":"ElementaryTypeName","src":"2478:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45958,"mutability":"mutable","name":"sigDeadline","nameLocation":"2555:11:120","nodeType":"VariableDeclaration","scope":45959,"src":"2547:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45957,"name":"uint256","nodeType":"ElementaryTypeName","src":"2547:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitSingle","nameLocation":"2316:12:120","nodeType":"StructDefinition","scope":46082,"src":"2309:264:120","visibility":"public"},{"canonicalName":"IAllowanceTransfer.PermitBatch","documentation":{"id":45960,"nodeType":"StructuredDocumentation","src":"2579:67:120","text":"@notice The permit message signed for multiple token allowances"},"id":45969,"members":[{"constant":false,"id":45964,"mutability":"mutable","name":"details","nameLocation":"2753:7:120","nodeType":"VariableDeclaration","scope":45969,"src":"2737:23:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$45950_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails[]"},"typeName":{"baseType":{"id":45962,"nodeType":"UserDefinedTypeName","pathNode":{"id":45961,"name":"PermitDetails","nameLocations":["2737:13:120"],"nodeType":"IdentifierPath","referencedDeclaration":45950,"src":"2737:13:120"},"referencedDeclaration":45950,"src":"2737:13:120","typeDescriptions":{"typeIdentifier":"t_struct$_PermitDetails_$45950_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails"}},"id":45963,"nodeType":"ArrayTypeName","src":"2737:15:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PermitDetails_$45950_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.PermitDetails[]"}},"visibility":"internal"},{"constant":false,"id":45966,"mutability":"mutable","name":"spender","nameLocation":"2832:7:120","nodeType":"VariableDeclaration","scope":45969,"src":"2824:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45965,"name":"address","nodeType":"ElementaryTypeName","src":"2824:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45968,"mutability":"mutable","name":"sigDeadline","nameLocation":"2901:11:120","nodeType":"VariableDeclaration","scope":45969,"src":"2893:19:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45967,"name":"uint256","nodeType":"ElementaryTypeName","src":"2893:7:120","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitBatch","nameLocation":"2658:11:120","nodeType":"StructDefinition","scope":46082,"src":"2651:268:120","visibility":"public"},{"canonicalName":"IAllowanceTransfer.PackedAllowance","documentation":{"id":45970,"nodeType":"StructuredDocumentation","src":"2925:217:120","text":"@notice The saved permissions\n @dev This info is saved per owner, per token, per spender and all signed over in the permit message\n @dev Setting amount to type(uint160).max sets an unlimited approval"},"id":45977,"members":[{"constant":false,"id":45972,"mutability":"mutable","name":"amount","nameLocation":"3214:6:120","nodeType":"VariableDeclaration","scope":45977,"src":"3206:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":45971,"name":"uint160","nodeType":"ElementaryTypeName","src":"3206:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":45974,"mutability":"mutable","name":"expiration","nameLocation":"3266:10:120","nodeType":"VariableDeclaration","scope":45977,"src":"3259:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45973,"name":"uint48","nodeType":"ElementaryTypeName","src":"3259:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":45976,"mutability":"mutable","name":"nonce","nameLocation":"3381:5:120","nodeType":"VariableDeclaration","scope":45977,"src":"3374:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":45975,"name":"uint48","nodeType":"ElementaryTypeName","src":"3374:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"PackedAllowance","nameLocation":"3154:15:120","nodeType":"StructDefinition","scope":46082,"src":"3147:246:120","visibility":"public"},{"canonicalName":"IAllowanceTransfer.TokenSpenderPair","documentation":{"id":45978,"nodeType":"StructuredDocumentation","src":"3399:33:120","text":"@notice A token spender pair."},"id":45983,"members":[{"constant":false,"id":45980,"mutability":"mutable","name":"token","nameLocation":"3524:5:120","nodeType":"VariableDeclaration","scope":45983,"src":"3516:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45979,"name":"address","nodeType":"ElementaryTypeName","src":"3516:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45982,"mutability":"mutable","name":"spender","nameLocation":"3578:7:120","nodeType":"VariableDeclaration","scope":45983,"src":"3570:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45981,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"TokenSpenderPair","nameLocation":"3444:16:120","nodeType":"StructDefinition","scope":46082,"src":"3437:155:120","visibility":"public"},{"canonicalName":"IAllowanceTransfer.AllowanceTransferDetails","documentation":{"id":45984,"nodeType":"StructuredDocumentation","src":"3598:41:120","text":"@notice Details for a token transfer."},"id":45993,"members":[{"constant":false,"id":45986,"mutability":"mutable","name":"from","nameLocation":"3728:4:120","nodeType":"VariableDeclaration","scope":45993,"src":"3720:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45985,"name":"address","nodeType":"ElementaryTypeName","src":"3720:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45988,"mutability":"mutable","name":"to","nameLocation":"3788:2:120","nodeType":"VariableDeclaration","scope":45993,"src":"3780:10:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45987,"name":"address","nodeType":"ElementaryTypeName","src":"3780:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45990,"mutability":"mutable","name":"amount","nameLocation":"3843:6:120","nodeType":"VariableDeclaration","scope":45993,"src":"3835:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":45989,"name":"uint160","nodeType":"ElementaryTypeName","src":"3835:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":45992,"mutability":"mutable","name":"token","nameLocation":"3906:5:120","nodeType":"VariableDeclaration","scope":45993,"src":"3898:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45991,"name":"address","nodeType":"ElementaryTypeName","src":"3898:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AllowanceTransferDetails","nameLocation":"3651:24:120","nodeType":"StructDefinition","scope":46082,"src":"3644:274:120","visibility":"public"},{"documentation":{"id":45994,"nodeType":"StructuredDocumentation","src":"3924:455:120","text":"@notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals."},"functionSelector":"927da105","id":46009,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4393:9:120","nodeType":"FunctionDefinition","parameters":{"id":46001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45996,"mutability":"mutable","name":"user","nameLocation":"4411:4:120","nodeType":"VariableDeclaration","scope":46009,"src":"4403:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45995,"name":"address","nodeType":"ElementaryTypeName","src":"4403:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45998,"mutability":"mutable","name":"token","nameLocation":"4425:5:120","nodeType":"VariableDeclaration","scope":46009,"src":"4417:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45997,"name":"address","nodeType":"ElementaryTypeName","src":"4417:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46000,"mutability":"mutable","name":"spender","nameLocation":"4440:7:120","nodeType":"VariableDeclaration","scope":46009,"src":"4432:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45999,"name":"address","nodeType":"ElementaryTypeName","src":"4432:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4402:46:120"},"returnParameters":{"id":46008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46003,"mutability":"mutable","name":"amount","nameLocation":"4504:6:120","nodeType":"VariableDeclaration","scope":46009,"src":"4496:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":46002,"name":"uint160","nodeType":"ElementaryTypeName","src":"4496:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":46005,"mutability":"mutable","name":"expiration","nameLocation":"4519:10:120","nodeType":"VariableDeclaration","scope":46009,"src":"4512:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":46004,"name":"uint48","nodeType":"ElementaryTypeName","src":"4512:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":46007,"mutability":"mutable","name":"nonce","nameLocation":"4538:5:120","nodeType":"VariableDeclaration","scope":46009,"src":"4531:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":46006,"name":"uint48","nodeType":"ElementaryTypeName","src":"4531:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4495:49:120"},"scope":46082,"src":"4384:161:120","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":46010,"nodeType":"StructuredDocumentation","src":"4551:498:120","text":"@notice Approves the spender to use up to amount of the specified token up until the expiration\n @param token The token to approve\n @param spender The spender address to approve\n @param amount The approved amount of the token\n @param expiration The timestamp at which the approval is no longer valid\n @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n @dev Setting amount to type(uint160).max sets an unlimited approval"},"functionSelector":"87517c45","id":46021,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5063:7:120","nodeType":"FunctionDefinition","parameters":{"id":46019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46012,"mutability":"mutable","name":"token","nameLocation":"5079:5:120","nodeType":"VariableDeclaration","scope":46021,"src":"5071:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46011,"name":"address","nodeType":"ElementaryTypeName","src":"5071:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46014,"mutability":"mutable","name":"spender","nameLocation":"5094:7:120","nodeType":"VariableDeclaration","scope":46021,"src":"5086:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46013,"name":"address","nodeType":"ElementaryTypeName","src":"5086:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46016,"mutability":"mutable","name":"amount","nameLocation":"5111:6:120","nodeType":"VariableDeclaration","scope":46021,"src":"5103:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":46015,"name":"uint160","nodeType":"ElementaryTypeName","src":"5103:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":46018,"mutability":"mutable","name":"expiration","nameLocation":"5126:10:120","nodeType":"VariableDeclaration","scope":46021,"src":"5119:17:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":46017,"name":"uint48","nodeType":"ElementaryTypeName","src":"5119:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5070:67:120"},"returnParameters":{"id":46020,"nodeType":"ParameterList","parameters":[],"src":"5146:0:120"},"scope":46082,"src":"5054:93:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46022,"nodeType":"StructuredDocumentation","src":"5153:407:120","text":"@notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitSingle Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data"},"functionSelector":"2b67b570","id":46032,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"5574:6:120","nodeType":"FunctionDefinition","parameters":{"id":46030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46024,"mutability":"mutable","name":"owner","nameLocation":"5589:5:120","nodeType":"VariableDeclaration","scope":46032,"src":"5581:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46023,"name":"address","nodeType":"ElementaryTypeName","src":"5581:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46027,"mutability":"mutable","name":"permitSingle","nameLocation":"5616:12:120","nodeType":"VariableDeclaration","scope":46032,"src":"5596:32:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$45959_memory_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"},"typeName":{"id":46026,"nodeType":"UserDefinedTypeName","pathNode":{"id":46025,"name":"PermitSingle","nameLocations":["5596:12:120"],"nodeType":"IdentifierPath","referencedDeclaration":45959,"src":"5596:12:120"},"referencedDeclaration":45959,"src":"5596:12:120","typeDescriptions":{"typeIdentifier":"t_struct$_PermitSingle_$45959_storage_ptr","typeString":"struct IAllowanceTransfer.PermitSingle"}},"visibility":"internal"},{"constant":false,"id":46029,"mutability":"mutable","name":"signature","nameLocation":"5645:9:120","nodeType":"VariableDeclaration","scope":46032,"src":"5630:24:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":46028,"name":"bytes","nodeType":"ElementaryTypeName","src":"5630:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5580:75:120"},"returnParameters":{"id":46031,"nodeType":"ParameterList","parameters":[],"src":"5664:0:120"},"scope":46082,"src":"5565:100:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46033,"nodeType":"StructuredDocumentation","src":"5671:411:120","text":"@notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n @param owner The owner of the tokens being approved\n @param permitBatch Data signed over by the owner specifying the terms of approval\n @param signature The owner's signature over the permit data"},"functionSelector":"2a2d80d1","id":46043,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"6096:6:120","nodeType":"FunctionDefinition","parameters":{"id":46041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46035,"mutability":"mutable","name":"owner","nameLocation":"6111:5:120","nodeType":"VariableDeclaration","scope":46043,"src":"6103:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46034,"name":"address","nodeType":"ElementaryTypeName","src":"6103:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46038,"mutability":"mutable","name":"permitBatch","nameLocation":"6137:11:120","nodeType":"VariableDeclaration","scope":46043,"src":"6118:30:120","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_memory_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"},"typeName":{"id":46037,"nodeType":"UserDefinedTypeName","pathNode":{"id":46036,"name":"PermitBatch","nameLocations":["6118:11:120"],"nodeType":"IdentifierPath","referencedDeclaration":45969,"src":"6118:11:120"},"referencedDeclaration":45969,"src":"6118:11:120","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatch_$45969_storage_ptr","typeString":"struct IAllowanceTransfer.PermitBatch"}},"visibility":"internal"},{"constant":false,"id":46040,"mutability":"mutable","name":"signature","nameLocation":"6165:9:120","nodeType":"VariableDeclaration","scope":46043,"src":"6150:24:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":46039,"name":"bytes","nodeType":"ElementaryTypeName","src":"6150:5:120","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6102:73:120"},"returnParameters":{"id":46042,"nodeType":"ParameterList","parameters":[],"src":"6184:0:120"},"scope":46082,"src":"6087:98:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46044,"nodeType":"StructuredDocumentation","src":"6191:386:120","text":"@notice Transfer approved tokens from one address to another\n @param from The address to transfer from\n @param to The address of the recipient\n @param amount The amount of the token to transfer\n @param token The token address to transfer\n @dev Requires the from address to have approved at least the desired amount\n of tokens to msg.sender."},"functionSelector":"36c78516","id":46055,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6591:12:120","nodeType":"FunctionDefinition","parameters":{"id":46053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46046,"mutability":"mutable","name":"from","nameLocation":"6612:4:120","nodeType":"VariableDeclaration","scope":46055,"src":"6604:12:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46045,"name":"address","nodeType":"ElementaryTypeName","src":"6604:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46048,"mutability":"mutable","name":"to","nameLocation":"6626:2:120","nodeType":"VariableDeclaration","scope":46055,"src":"6618:10:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46047,"name":"address","nodeType":"ElementaryTypeName","src":"6618:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46050,"mutability":"mutable","name":"amount","nameLocation":"6638:6:120","nodeType":"VariableDeclaration","scope":46055,"src":"6630:14:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":46049,"name":"uint160","nodeType":"ElementaryTypeName","src":"6630:7:120","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":46052,"mutability":"mutable","name":"token","nameLocation":"6654:5:120","nodeType":"VariableDeclaration","scope":46055,"src":"6646:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46051,"name":"address","nodeType":"ElementaryTypeName","src":"6646:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6603:57:120"},"returnParameters":{"id":46054,"nodeType":"ParameterList","parameters":[],"src":"6669:0:120"},"scope":46082,"src":"6582:88:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46056,"nodeType":"StructuredDocumentation","src":"6676:264:120","text":"@notice Transfer approved tokens in a batch\n @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n @dev Requires the from addresses to have approved at least the desired amount\n of tokens to msg.sender."},"functionSelector":"0d58b1db","id":46063,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"6954:12:120","nodeType":"FunctionDefinition","parameters":{"id":46061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46060,"mutability":"mutable","name":"transferDetails","nameLocation":"7003:15:120","nodeType":"VariableDeclaration","scope":46063,"src":"6967:51:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$45993_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"},"typeName":{"baseType":{"id":46058,"nodeType":"UserDefinedTypeName","pathNode":{"id":46057,"name":"AllowanceTransferDetails","nameLocations":["6967:24:120"],"nodeType":"IdentifierPath","referencedDeclaration":45993,"src":"6967:24:120"},"referencedDeclaration":45993,"src":"6967:24:120","typeDescriptions":{"typeIdentifier":"t_struct$_AllowanceTransferDetails_$45993_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails"}},"id":46059,"nodeType":"ArrayTypeName","src":"6967:26:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_AllowanceTransferDetails_$45993_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.AllowanceTransferDetails[]"}},"visibility":"internal"}],"src":"6966:53:120"},"returnParameters":{"id":46062,"nodeType":"ParameterList","parameters":[],"src":"7028:0:120"},"scope":46082,"src":"6945:84:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46064,"nodeType":"StructuredDocumentation","src":"7035:167:120","text":"@notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n by batch revoking approvals\n @param approvals Array of approvals to revoke."},"functionSelector":"cc53287f","id":46071,"implemented":false,"kind":"function","modifiers":[],"name":"lockdown","nameLocation":"7216:8:120","nodeType":"FunctionDefinition","parameters":{"id":46069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46068,"mutability":"mutable","name":"approvals","nameLocation":"7253:9:120","nodeType":"VariableDeclaration","scope":46071,"src":"7225:37:120","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$45983_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair[]"},"typeName":{"baseType":{"id":46066,"nodeType":"UserDefinedTypeName","pathNode":{"id":46065,"name":"TokenSpenderPair","nameLocations":["7225:16:120"],"nodeType":"IdentifierPath","referencedDeclaration":45983,"src":"7225:16:120"},"referencedDeclaration":45983,"src":"7225:16:120","typeDescriptions":{"typeIdentifier":"t_struct$_TokenSpenderPair_$45983_storage_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair"}},"id":46067,"nodeType":"ArrayTypeName","src":"7225:18:120","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenSpenderPair_$45983_storage_$dyn_storage_ptr","typeString":"struct IAllowanceTransfer.TokenSpenderPair[]"}},"visibility":"internal"}],"src":"7224:39:120"},"returnParameters":{"id":46070,"nodeType":"ParameterList","parameters":[],"src":"7272:0:120"},"scope":46082,"src":"7207:66:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46072,"nodeType":"StructuredDocumentation","src":"7279:332:120","text":"@notice Invalidate nonces for a given (token, spender) pair\n @param token The token to invalidate nonces for\n @param spender The spender to invalidate nonces for\n @param newNonce The new nonce to set. Invalidates all nonces less than it.\n @dev Can't invalidate more than 2**16 nonces per transaction."},"functionSelector":"65d9723c","id":46081,"implemented":false,"kind":"function","modifiers":[],"name":"invalidateNonces","nameLocation":"7625:16:120","nodeType":"FunctionDefinition","parameters":{"id":46079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46074,"mutability":"mutable","name":"token","nameLocation":"7650:5:120","nodeType":"VariableDeclaration","scope":46081,"src":"7642:13:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46073,"name":"address","nodeType":"ElementaryTypeName","src":"7642:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46076,"mutability":"mutable","name":"spender","nameLocation":"7665:7:120","nodeType":"VariableDeclaration","scope":46081,"src":"7657:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46075,"name":"address","nodeType":"ElementaryTypeName","src":"7657:7:120","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46078,"mutability":"mutable","name":"newNonce","nameLocation":"7681:8:120","nodeType":"VariableDeclaration","scope":46081,"src":"7674:15:120","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":46077,"name":"uint48","nodeType":"ElementaryTypeName","src":"7674:6:120","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7641:49:120"},"returnParameters":{"id":46080,"nodeType":"ParameterList","parameters":[],"src":"7699:0:120"},"scope":46082,"src":"7616:84:120","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":46083,"src":"330:7372:120","usedErrors":[45882,45887,45890],"usedEvents":[45903,45916,45931,45940]}],"src":"32:7671:120"},"id":120},"permit2/src/interfaces/IEIP712.sol":{"ast":{"absolutePath":"permit2/src/interfaces/IEIP712.sol","exportedSymbols":{"IEIP712":[46090]},"id":46091,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":46084,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:121"},{"abstract":false,"baseContracts":[],"canonicalName":"IEIP712","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":46090,"linearizedBaseContracts":[46090],"name":"IEIP712","nameLocation":"67:7:121","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3644e515","id":46089,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"90:16:121","nodeType":"FunctionDefinition","parameters":{"id":46085,"nodeType":"ParameterList","parameters":[],"src":"106:2:121"},"returnParameters":{"id":46088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":46089,"src":"132:7:121","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":46086,"name":"bytes32","nodeType":"ElementaryTypeName","src":"132:7:121","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"131:9:121"},"scope":46090,"src":"81:60:121","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":46091,"src":"57:86:121","usedErrors":[],"usedEvents":[]}],"src":"32:112:121"},"id":121},"permit2/src/interfaces/IPermit2.sol":{"ast":{"absolutePath":"permit2/src/interfaces/IPermit2.sol","exportedSymbols":{"IAllowanceTransfer":[46082],"IPermit2":[46102],"ISignatureTransfer":[46242]},"id":46103,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":46092,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:122"},{"absolutePath":"permit2/src/interfaces/ISignatureTransfer.sol","file":"./ISignatureTransfer.sol","id":46094,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":46103,"sourceUnit":46243,"src":"57:60:122","symbolAliases":[{"foreign":{"id":46093,"name":"ISignatureTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46242,"src":"65:18:122","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"permit2/src/interfaces/IAllowanceTransfer.sol","file":"./IAllowanceTransfer.sol","id":46096,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":46103,"sourceUnit":46083,"src":"118:60:122","symbolAliases":[{"foreign":{"id":46095,"name":"IAllowanceTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46082,"src":"126:18:122","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":46098,"name":"ISignatureTransfer","nameLocations":["411:18:122"],"nodeType":"IdentifierPath","referencedDeclaration":46242,"src":"411:18:122"},"id":46099,"nodeType":"InheritanceSpecifier","src":"411:18:122"},{"baseName":{"id":46100,"name":"IAllowanceTransfer","nameLocations":["431:18:122"],"nodeType":"IdentifierPath","referencedDeclaration":46082,"src":"431:18:122"},"id":46101,"nodeType":"InheritanceSpecifier","src":"431:18:122"}],"canonicalName":"IPermit2","contractDependencies":[],"contractKind":"interface","documentation":{"id":46097,"nodeType":"StructuredDocumentation","src":"180:209:122","text":"@notice Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.\n @dev Users must approve Permit2 before calling any of the transfer functions."},"fullyImplemented":false,"id":46102,"linearizedBaseContracts":[46102,46082,46242,46090],"name":"IPermit2","nameLocation":"399:8:122","nodeType":"ContractDefinition","nodes":[],"scope":46103,"src":"389:158:122","usedErrors":[45882,45887,45890,46114,46117],"usedEvents":[45903,45916,45931,45940,46126]}],"src":"32:516:122"},"id":122},"permit2/src/interfaces/ISignatureTransfer.sol":{"ast":{"absolutePath":"permit2/src/interfaces/ISignatureTransfer.sol","exportedSymbols":{"IEIP712":[46090],"ISignatureTransfer":[46242]},"id":46243,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":46104,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:123"},{"absolutePath":"permit2/src/interfaces/IEIP712.sol","file":"./IEIP712.sol","id":46106,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":46243,"sourceUnit":46091,"src":"57:38:123","symbolAliases":[{"foreign":{"id":46105,"name":"IEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46090,"src":"65:7:123","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":46108,"name":"IEIP712","nameLocations":["296:7:123"],"nodeType":"IdentifierPath","referencedDeclaration":46090,"src":"296:7:123"},"id":46109,"nodeType":"InheritanceSpecifier","src":"296:7:123"}],"canonicalName":"ISignatureTransfer","contractDependencies":[],"contractKind":"interface","documentation":{"id":46107,"nodeType":"StructuredDocumentation","src":"97:167:123","text":"@title SignatureTransfer\n @notice Handles ERC20 token transfers through signature based actions\n @dev Requires user's token approval on the Permit2 contract"},"fullyImplemented":false,"id":46242,"linearizedBaseContracts":[46242,46090],"name":"ISignatureTransfer","nameLocation":"274:18:123","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":46110,"nodeType":"StructuredDocumentation","src":"310:176:123","text":"@notice Thrown when the requested amount for a transfer is larger than the permissioned amount\n @param maxAmount The maximum amount a spender can request to transfer"},"errorSelector":"3728b83d","id":46114,"name":"InvalidAmount","nameLocation":"497:13:123","nodeType":"ErrorDefinition","parameters":{"id":46113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46112,"mutability":"mutable","name":"maxAmount","nameLocation":"519:9:123","nodeType":"VariableDeclaration","scope":46114,"src":"511:17:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46111,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"510:19:123"},"src":"491:39:123"},{"documentation":{"id":46115,"nodeType":"StructuredDocumentation","src":"536:261:123","text":"@notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\n @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred"},"errorSelector":"ff633a38","id":46117,"name":"LengthMismatch","nameLocation":"808:14:123","nodeType":"ErrorDefinition","parameters":{"id":46116,"nodeType":"ParameterList","parameters":[],"src":"822:2:123"},"src":"802:23:123"},{"anonymous":false,"documentation":{"id":46118,"nodeType":"StructuredDocumentation","src":"831:86:123","text":"@notice Emits an event when the owner successfully invalidates an unordered nonce."},"eventSelector":"3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d","id":46126,"name":"UnorderedNonceInvalidation","nameLocation":"928:26:123","nodeType":"EventDefinition","parameters":{"id":46125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46120,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"971:5:123","nodeType":"VariableDeclaration","scope":46126,"src":"955:21:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46119,"name":"address","nodeType":"ElementaryTypeName","src":"955:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46122,"indexed":false,"mutability":"mutable","name":"word","nameLocation":"986:4:123","nodeType":"VariableDeclaration","scope":46126,"src":"978:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46121,"name":"uint256","nodeType":"ElementaryTypeName","src":"978:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46124,"indexed":false,"mutability":"mutable","name":"mask","nameLocation":"1000:4:123","nodeType":"VariableDeclaration","scope":46126,"src":"992:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46123,"name":"uint256","nodeType":"ElementaryTypeName","src":"992:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"954:51:123"},"src":"922:84:123"},{"canonicalName":"ISignatureTransfer.TokenPermissions","documentation":{"id":46127,"nodeType":"StructuredDocumentation","src":"1012:95:123","text":"@notice The token and amount details for a transfer signed in the permit transfer signature"},"id":46132,"members":[{"constant":false,"id":46129,"mutability":"mutable","name":"token","nameLocation":"1185:5:123","nodeType":"VariableDeclaration","scope":46132,"src":"1177:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46128,"name":"address","nodeType":"ElementaryTypeName","src":"1177:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46131,"mutability":"mutable","name":"amount","nameLocation":"1256:6:123","nodeType":"VariableDeclaration","scope":46132,"src":"1248:14:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46130,"name":"uint256","nodeType":"ElementaryTypeName","src":"1248:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"TokenPermissions","nameLocation":"1119:16:123","nodeType":"StructDefinition","scope":46242,"src":"1112:157:123","visibility":"public"},{"canonicalName":"ISignatureTransfer.PermitTransferFrom","documentation":{"id":46133,"nodeType":"StructuredDocumentation","src":"1275:65:123","text":"@notice The signed permit message for a single token transfer"},"id":46141,"members":[{"constant":false,"id":46136,"mutability":"mutable","name":"permitted","nameLocation":"1398:9:123","nodeType":"VariableDeclaration","scope":46141,"src":"1381:26:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$46132_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"},"typeName":{"id":46135,"nodeType":"UserDefinedTypeName","pathNode":{"id":46134,"name":"TokenPermissions","nameLocations":["1381:16:123"],"nodeType":"IdentifierPath","referencedDeclaration":46132,"src":"1381:16:123"},"referencedDeclaration":46132,"src":"1381:16:123","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$46132_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"}},"visibility":"internal"},{"constant":false,"id":46138,"mutability":"mutable","name":"nonce","nameLocation":"1514:5:123","nodeType":"VariableDeclaration","scope":46141,"src":"1506:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46137,"name":"uint256","nodeType":"ElementaryTypeName","src":"1506:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46140,"mutability":"mutable","name":"deadline","nameLocation":"1581:8:123","nodeType":"VariableDeclaration","scope":46141,"src":"1573:16:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46139,"name":"uint256","nodeType":"ElementaryTypeName","src":"1573:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitTransferFrom","nameLocation":"1352:18:123","nodeType":"StructDefinition","scope":46242,"src":"1345:251:123","visibility":"public"},{"canonicalName":"ISignatureTransfer.SignatureTransferDetails","documentation":{"id":46142,"nodeType":"StructuredDocumentation","src":"1602:266:123","text":"@notice Specifies the recipient address and amount for batched transfers.\n @dev Recipients and amounts correspond to the index of the signed token permissions array.\n @dev Reverts if the requested amount is greater than the permitted signed amount."},"id":46147,"members":[{"constant":false,"id":46144,"mutability":"mutable","name":"to","nameLocation":"1952:2:123","nodeType":"VariableDeclaration","scope":46147,"src":"1944:10:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46143,"name":"address","nodeType":"ElementaryTypeName","src":"1944:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46146,"mutability":"mutable","name":"requestedAmount","nameLocation":"2008:15:123","nodeType":"VariableDeclaration","scope":46147,"src":"2000:23:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46145,"name":"uint256","nodeType":"ElementaryTypeName","src":"2000:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SignatureTransferDetails","nameLocation":"1880:24:123","nodeType":"StructDefinition","scope":46242,"src":"1873:157:123","visibility":"public"},{"canonicalName":"ISignatureTransfer.PermitBatchTransferFrom","documentation":{"id":46148,"nodeType":"StructuredDocumentation","src":"2036:243:123","text":"@notice Used to reconstruct the signed permit message for multiple token transfers\n @dev Do not need to pass in spender address as it is required that it is msg.sender\n @dev Note that a user still signs over a spender address"},"id":46157,"members":[{"constant":false,"id":46152,"mutability":"mutable","name":"permitted","nameLocation":"2417:9:123","nodeType":"VariableDeclaration","scope":46157,"src":"2398:28:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$46132_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions[]"},"typeName":{"baseType":{"id":46150,"nodeType":"UserDefinedTypeName","pathNode":{"id":46149,"name":"TokenPermissions","nameLocations":["2398:16:123"],"nodeType":"IdentifierPath","referencedDeclaration":46132,"src":"2398:16:123"},"referencedDeclaration":46132,"src":"2398:16:123","typeDescriptions":{"typeIdentifier":"t_struct$_TokenPermissions_$46132_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions"}},"id":46151,"nodeType":"ArrayTypeName","src":"2398:18:123","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TokenPermissions_$46132_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.TokenPermissions[]"}},"visibility":"internal"},{"constant":false,"id":46154,"mutability":"mutable","name":"nonce","nameLocation":"2533:5:123","nodeType":"VariableDeclaration","scope":46157,"src":"2525:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46153,"name":"uint256","nodeType":"ElementaryTypeName","src":"2525:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46156,"mutability":"mutable","name":"deadline","nameLocation":"2600:8:123","nodeType":"VariableDeclaration","scope":46157,"src":"2592:16:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46155,"name":"uint256","nodeType":"ElementaryTypeName","src":"2592:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PermitBatchTransferFrom","nameLocation":"2291:23:123","nodeType":"StructDefinition","scope":46242,"src":"2284:331:123","visibility":"public"},{"documentation":{"id":46158,"nodeType":"StructuredDocumentation","src":"2621:483:123","text":"@notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\n @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order\n @dev The mapping is indexed first by the token owner, then by an index specified in the nonce\n @dev It returns a uint256 bitmap\n @dev The index, or wordPosition is capped at type(uint248).max"},"functionSelector":"4fe02b44","id":46167,"implemented":false,"kind":"function","modifiers":[],"name":"nonceBitmap","nameLocation":"3118:11:123","nodeType":"FunctionDefinition","parameters":{"id":46163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":46167,"src":"3130:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46159,"name":"address","nodeType":"ElementaryTypeName","src":"3130:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":46167,"src":"3139:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46161,"name":"uint256","nodeType":"ElementaryTypeName","src":"3139:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3129:18:123"},"returnParameters":{"id":46166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":46167,"src":"3171:7:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46164,"name":"uint256","nodeType":"ElementaryTypeName","src":"3171:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3170:9:123"},"scope":46242,"src":"3109:71:123","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":46168,"nodeType":"StructuredDocumentation","src":"3186:413:123","text":"@notice Transfers a token using a signed permit message\n @dev Reverts if the requested amount is greater than the permitted signed amount\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails The spender's requested transfer details for the permitted token\n @param signature The signature to verify"},"functionSelector":"30f28b7a","id":46181,"implemented":false,"kind":"function","modifiers":[],"name":"permitTransferFrom","nameLocation":"3613:18:123","nodeType":"FunctionDefinition","parameters":{"id":46179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46171,"mutability":"mutable","name":"permit","nameLocation":"3667:6:123","nodeType":"VariableDeclaration","scope":46181,"src":"3641:32:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$46141_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":46170,"nodeType":"UserDefinedTypeName","pathNode":{"id":46169,"name":"PermitTransferFrom","nameLocations":["3641:18:123"],"nodeType":"IdentifierPath","referencedDeclaration":46141,"src":"3641:18:123"},"referencedDeclaration":46141,"src":"3641:18:123","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$46141_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":46174,"mutability":"mutable","name":"transferDetails","nameLocation":"3717:15:123","nodeType":"VariableDeclaration","scope":46181,"src":"3683:49:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$46147_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"},"typeName":{"id":46173,"nodeType":"UserDefinedTypeName","pathNode":{"id":46172,"name":"SignatureTransferDetails","nameLocations":["3683:24:123"],"nodeType":"IdentifierPath","referencedDeclaration":46147,"src":"3683:24:123"},"referencedDeclaration":46147,"src":"3683:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$46147_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"visibility":"internal"},{"constant":false,"id":46176,"mutability":"mutable","name":"owner","nameLocation":"3750:5:123","nodeType":"VariableDeclaration","scope":46181,"src":"3742:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46175,"name":"address","nodeType":"ElementaryTypeName","src":"3742:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46178,"mutability":"mutable","name":"signature","nameLocation":"3780:9:123","nodeType":"VariableDeclaration","scope":46181,"src":"3765:24:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":46177,"name":"bytes","nodeType":"ElementaryTypeName","src":"3765:5:123","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3631:164:123"},"returnParameters":{"id":46180,"nodeType":"ParameterList","parameters":[],"src":"3804:0:123"},"scope":46242,"src":"3604:201:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46182,"nodeType":"StructuredDocumentation","src":"3811:815:123","text":"@notice Transfers a token using a signed permit message\n @notice Includes extra data provided by the caller to verify signature over\n @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n @dev Reverts if the requested amount is greater than the permitted signed amount\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails The spender's requested transfer details for the permitted token\n @param witness Extra data to include when checking the user signature\n @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n @param signature The signature to verify"},"functionSelector":"137c29fe","id":46199,"implemented":false,"kind":"function","modifiers":[],"name":"permitWitnessTransferFrom","nameLocation":"4640:25:123","nodeType":"FunctionDefinition","parameters":{"id":46197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46185,"mutability":"mutable","name":"permit","nameLocation":"4701:6:123","nodeType":"VariableDeclaration","scope":46199,"src":"4675:32:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$46141_memory_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"},"typeName":{"id":46184,"nodeType":"UserDefinedTypeName","pathNode":{"id":46183,"name":"PermitTransferFrom","nameLocations":["4675:18:123"],"nodeType":"IdentifierPath","referencedDeclaration":46141,"src":"4675:18:123"},"referencedDeclaration":46141,"src":"4675:18:123","typeDescriptions":{"typeIdentifier":"t_struct$_PermitTransferFrom_$46141_storage_ptr","typeString":"struct ISignatureTransfer.PermitTransferFrom"}},"visibility":"internal"},{"constant":false,"id":46188,"mutability":"mutable","name":"transferDetails","nameLocation":"4751:15:123","nodeType":"VariableDeclaration","scope":46199,"src":"4717:49:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$46147_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"},"typeName":{"id":46187,"nodeType":"UserDefinedTypeName","pathNode":{"id":46186,"name":"SignatureTransferDetails","nameLocations":["4717:24:123"],"nodeType":"IdentifierPath","referencedDeclaration":46147,"src":"4717:24:123"},"referencedDeclaration":46147,"src":"4717:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$46147_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"visibility":"internal"},{"constant":false,"id":46190,"mutability":"mutable","name":"owner","nameLocation":"4784:5:123","nodeType":"VariableDeclaration","scope":46199,"src":"4776:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46189,"name":"address","nodeType":"ElementaryTypeName","src":"4776:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46192,"mutability":"mutable","name":"witness","nameLocation":"4807:7:123","nodeType":"VariableDeclaration","scope":46199,"src":"4799:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":46191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4799:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":46194,"mutability":"mutable","name":"witnessTypeString","nameLocation":"4840:17:123","nodeType":"VariableDeclaration","scope":46199,"src":"4824:33:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":46193,"name":"string","nodeType":"ElementaryTypeName","src":"4824:6:123","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":46196,"mutability":"mutable","name":"signature","nameLocation":"4882:9:123","nodeType":"VariableDeclaration","scope":46199,"src":"4867:24:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":46195,"name":"bytes","nodeType":"ElementaryTypeName","src":"4867:5:123","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4665:232:123"},"returnParameters":{"id":46198,"nodeType":"ParameterList","parameters":[],"src":"4906:0:123"},"scope":46242,"src":"4631:276:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46200,"nodeType":"StructuredDocumentation","src":"4913:335:123","text":"@notice Transfers multiple tokens using a signed permit message\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails Specifies the recipient and requested amount for the token transfer\n @param signature The signature to verify"},"functionSelector":"edd9444b","id":46214,"implemented":false,"kind":"function","modifiers":[],"name":"permitTransferFrom","nameLocation":"5262:18:123","nodeType":"FunctionDefinition","parameters":{"id":46212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46203,"mutability":"mutable","name":"permit","nameLocation":"5321:6:123","nodeType":"VariableDeclaration","scope":46214,"src":"5290:37:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$46157_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":46202,"nodeType":"UserDefinedTypeName","pathNode":{"id":46201,"name":"PermitBatchTransferFrom","nameLocations":["5290:23:123"],"nodeType":"IdentifierPath","referencedDeclaration":46157,"src":"5290:23:123"},"referencedDeclaration":46157,"src":"5290:23:123","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$46157_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":46207,"mutability":"mutable","name":"transferDetails","nameLocation":"5373:15:123","nodeType":"VariableDeclaration","scope":46214,"src":"5337:51:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$46147_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"},"typeName":{"baseType":{"id":46205,"nodeType":"UserDefinedTypeName","pathNode":{"id":46204,"name":"SignatureTransferDetails","nameLocations":["5337:24:123"],"nodeType":"IdentifierPath","referencedDeclaration":46147,"src":"5337:24:123"},"referencedDeclaration":46147,"src":"5337:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$46147_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"id":46206,"nodeType":"ArrayTypeName","src":"5337:26:123","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$46147_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":46209,"mutability":"mutable","name":"owner","nameLocation":"5406:5:123","nodeType":"VariableDeclaration","scope":46214,"src":"5398:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46208,"name":"address","nodeType":"ElementaryTypeName","src":"5398:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46211,"mutability":"mutable","name":"signature","nameLocation":"5436:9:123","nodeType":"VariableDeclaration","scope":46214,"src":"5421:24:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":46210,"name":"bytes","nodeType":"ElementaryTypeName","src":"5421:5:123","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5280:171:123"},"returnParameters":{"id":46213,"nodeType":"ParameterList","parameters":[],"src":"5460:0:123"},"scope":46242,"src":"5253:208:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46215,"nodeType":"StructuredDocumentation","src":"5467:737:123","text":"@notice Transfers multiple tokens using a signed permit message\n @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n @notice Includes extra data provided by the caller to verify signature over\n @param permit The permit data signed over by the owner\n @param owner The owner of the tokens to transfer\n @param transferDetails Specifies the recipient and requested amount for the token transfer\n @param witness Extra data to include when checking the user signature\n @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n @param signature The signature to verify"},"functionSelector":"fe8ec1a7","id":46233,"implemented":false,"kind":"function","modifiers":[],"name":"permitWitnessTransferFrom","nameLocation":"6218:25:123","nodeType":"FunctionDefinition","parameters":{"id":46231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46218,"mutability":"mutable","name":"permit","nameLocation":"6284:6:123","nodeType":"VariableDeclaration","scope":46233,"src":"6253:37:123","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$46157_memory_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"},"typeName":{"id":46217,"nodeType":"UserDefinedTypeName","pathNode":{"id":46216,"name":"PermitBatchTransferFrom","nameLocations":["6253:23:123"],"nodeType":"IdentifierPath","referencedDeclaration":46157,"src":"6253:23:123"},"referencedDeclaration":46157,"src":"6253:23:123","typeDescriptions":{"typeIdentifier":"t_struct$_PermitBatchTransferFrom_$46157_storage_ptr","typeString":"struct ISignatureTransfer.PermitBatchTransferFrom"}},"visibility":"internal"},{"constant":false,"id":46222,"mutability":"mutable","name":"transferDetails","nameLocation":"6336:15:123","nodeType":"VariableDeclaration","scope":46233,"src":"6300:51:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$46147_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"},"typeName":{"baseType":{"id":46220,"nodeType":"UserDefinedTypeName","pathNode":{"id":46219,"name":"SignatureTransferDetails","nameLocations":["6300:24:123"],"nodeType":"IdentifierPath","referencedDeclaration":46147,"src":"6300:24:123"},"referencedDeclaration":46147,"src":"6300:24:123","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureTransferDetails_$46147_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails"}},"id":46221,"nodeType":"ArrayTypeName","src":"6300:26:123","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SignatureTransferDetails_$46147_storage_$dyn_storage_ptr","typeString":"struct ISignatureTransfer.SignatureTransferDetails[]"}},"visibility":"internal"},{"constant":false,"id":46224,"mutability":"mutable","name":"owner","nameLocation":"6369:5:123","nodeType":"VariableDeclaration","scope":46233,"src":"6361:13:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46223,"name":"address","nodeType":"ElementaryTypeName","src":"6361:7:123","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":46226,"mutability":"mutable","name":"witness","nameLocation":"6392:7:123","nodeType":"VariableDeclaration","scope":46233,"src":"6384:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":46225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6384:7:123","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":46228,"mutability":"mutable","name":"witnessTypeString","nameLocation":"6425:17:123","nodeType":"VariableDeclaration","scope":46233,"src":"6409:33:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":46227,"name":"string","nodeType":"ElementaryTypeName","src":"6409:6:123","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":46230,"mutability":"mutable","name":"signature","nameLocation":"6467:9:123","nodeType":"VariableDeclaration","scope":46233,"src":"6452:24:123","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":46229,"name":"bytes","nodeType":"ElementaryTypeName","src":"6452:5:123","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6243:239:123"},"returnParameters":{"id":46232,"nodeType":"ParameterList","parameters":[],"src":"6491:0:123"},"scope":46242,"src":"6209:283:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":46234,"nodeType":"StructuredDocumentation","src":"6498:294:123","text":"@notice Invalidates the bits specified in mask for the bitmap at the word position\n @dev The wordPos is maxed at type(uint248).max\n @param wordPos A number to index the nonceBitmap at\n @param mask A bitmap masked against msg.sender's current bitmap at the word position"},"functionSelector":"3ff9dcb1","id":46241,"implemented":false,"kind":"function","modifiers":[],"name":"invalidateUnorderedNonces","nameLocation":"6806:25:123","nodeType":"FunctionDefinition","parameters":{"id":46239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46236,"mutability":"mutable","name":"wordPos","nameLocation":"6840:7:123","nodeType":"VariableDeclaration","scope":46241,"src":"6832:15:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46235,"name":"uint256","nodeType":"ElementaryTypeName","src":"6832:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":46238,"mutability":"mutable","name":"mask","nameLocation":"6857:4:123","nodeType":"VariableDeclaration","scope":46241,"src":"6849:12:123","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":46237,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:123","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6831:31:123"},"returnParameters":{"id":46240,"nodeType":"ParameterList","parameters":[],"src":"6871:0:123"},"scope":46242,"src":"6797:75:123","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":46243,"src":"264:6610:123","usedErrors":[46114,46117],"usedEvents":[46126]}],"src":"32:6843:123"},"id":123}},"contracts":{"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol":{"IPoolInfo":{"abi":[{"inputs":[],"name":"getAggregateFeePercentages","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStaticSwapFeePercentage","outputs":[{"internalType":"uint256","name":"staticSwapFeePercentage","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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAggregateFeePercentages()":"81fa807c","getCurrentLiveBalances()":"b156aa0a","getStaticSwapFeePercentage()":"d335b0cf","getTokenInfo()":"abb1dc44","getTokens()":"aa6ca808"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getAggregateFeePercentages\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getAggregateFeePercentages()\":{\"details\":\"These are determined by the current protocol and pool creator fees, set in the `ProtocolFeeController`.\",\"returns\":{\"aggregateSwapFeePercentage\":\"The aggregate percentage fee applied to swaps\",\"aggregateYieldFeePercentage\":\"The aggregate percentage fee applied to yield\"}},\"getCurrentLiveBalances()\":{\"details\":\"Note that live balances will not necessarily be accurate if the pool is in Recovery Mode. Withdrawals in Recovery Mode do not make external calls (including those necessary for updating live balances), so if there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\",\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getStaticSwapFeePercentage()\":{\"returns\":{\"staticSwapFeePercentage\":\"18-decimal FP value of the static swap fee percentage\"}},\"getTokenInfo()\":{\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"Pool tokens, sorted in token registration order\"}},\"getTokens()\":{\"returns\":{\"tokens\":\"List of tokens in the pool, sorted in registration order\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAggregateFeePercentages()\":{\"notice\":\"Gets the aggregate swap and yield fee percentages for a pool.\"},\"getCurrentLiveBalances()\":{\"notice\":\"Gets the current live balances of the pool as fixed point, 18-decimal numbers.\"},\"getStaticSwapFeePercentage()\":{\"notice\":\"Fetches the static swap fee percentage for the pool.\"},\"getTokenInfo()\":{\"notice\":\"Gets the raw data for the pool: tokens, token info, raw balances, and last live balances.\"},\"getTokens()\":{\"notice\":\"Gets the tokens registered in the pool.\"}},\"notice\":\"Convenience interface for pools, to get easy access to information stored in the Vault. Intended mostly for off-chain requests; pools do not need to implement this to work properly.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":\"IPoolInfo\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol":{"IWeightedPool":{"abi":[{"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[]"},{"internalType":"enum Rounding","name":"rounding","type":"uint8"}],"name":"computeInvariant","outputs":[{"internalType":"uint256","name":"invariant","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumInvariantRatio","outputs":[{"internalType":"uint256","name":"maximumInvariantRatio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"maximumSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumInvariantRatio","outputs":[{"internalType":"uint256","name":"minimumInvariantRatio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"minimumSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNormalizedWeights","outputs":[{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeightedPoolDynamicData","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":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct WeightedPoolDynamicData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeightedPoolImmutableData","outputs":[{"components":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"}],"internalType":"struct WeightedPoolImmutableData","name":"data","type":"tuple"}],"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":"params","type":"tuple"}],"name":"onSwap","outputs":[{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"computeBalance(uint256[],uint256,uint256)":"16a0b3e0","computeInvariant(uint256[],uint8)":"984de9e8","getMaximumInvariantRatio()":"273c1adf","getMaximumSwapFeePercentage()":"654cf15d","getMinimumInvariantRatio()":"b677fa56","getMinimumSwapFeePercentage()":"ce20ece7","getNormalizedWeights()":"f89f27ed","getWeightedPoolDynamicData()":"c0bc6f33","getWeightedPoolImmutableData()":"53b79bd7","onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))":"72c98186"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"rounding\",\"type\":\"uint8\"}],\"name\":\"computeInvariant\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"invariant\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumInvariantRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maximumInvariantRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maximumSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumInvariantRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumInvariantRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNormalizedWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeightedPoolDynamicData\",\"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\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct WeightedPoolDynamicData\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeightedPoolImmutableData\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"}],\"internalType\":\"struct WeightedPoolImmutableData\",\"name\":\"data\",\"type\":\"tuple\"}],\"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\":\"params\",\"type\":\"tuple\"}],\"name\":\"onSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"computeBalance(uint256[],uint256,uint256)\":{\"details\":\"Similar to V2's `_getTokenBalanceGivenInvariantAndAllOtherBalances` in StableMath. The pool must round up for the Vault to round in the protocol's favor when calling this function.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"tokenInIndex\":\"The index of the token we're computing the balance for, sorted in token registration order\"},\"returns\":{\"newBalance\":\"The new balance of the selected token, after the operation\"}},\"computeInvariant(uint256[],uint8)\":{\"details\":\"This function computes the invariant based on current balances (and potentially other pool state). The rounding direction must be respected for the Vault to round in the pool's favor when calling this function. If the invariant computation involves no precision loss (e.g. simple sum of balances), the same result can be returned for both rounding directions. You can think of the invariant as a measure of the \\\"value\\\" of the pool, which is related to the total liquidity (i.e., the \\\"BPT rate\\\" is `invariant` / `totalSupply`). Two critical properties must hold: 1) The invariant should not change due to a swap. In practice, it can *increase* due to swap fees, which effectively add liquidity after the swap - but it should never decrease. 2) The invariant must be \\\"linear\\\"; i.e., increasing the balances proportionally must increase the invariant in the same proportion: inv(a * n, b * n, c * n) = inv(a, b, c) * n Property #1 is required to prevent \\\"round trip\\\" paths that drain value from the pool (and all LP shareholders). Intuitively, an accurate pricing algorithm ensures the user gets an equal value of token out given token in, so the total value should not change. Property #2 is essential for the \\\"fungibility\\\" of LP shares. If it did not hold, then different users depositing the same total value would get a different number of LP shares. In that case, LP shares would not be interchangeable, as they must be in a fair DEX.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"rounding\":\"Rounding direction to consider when computing the invariant\"},\"returns\":{\"invariant\":\"The calculated invariant of the pool, represented as a uint256\"}},\"getMaximumInvariantRatio()\":{\"returns\":{\"maximumInvariantRatio\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMaximumSwapFeePercentage()\":{\"returns\":{\"maximumSwapFeePercentage\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"minimumInvariantRatio\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"minimumSwapFeePercentage\":\"The minimum swap fee percentage for a pool\"}},\"getNormalizedWeights()\":{\"returns\":{\"normalizedWeights\":\"The normalized weights, sorted in token registration order\"}},\"getWeightedPoolDynamicData()\":{\"returns\":{\"data\":\"A struct containing all dynamic weighted pool parameters\"}},\"getWeightedPoolImmutableData()\":{\"returns\":{\"data\":\"A struct containing all immutable weighted pool parameters\"}},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"params\":{\"params\":\"Swap parameters (see above for struct definition)\"},\"returns\":{\"amountCalculatedScaled18\":\"Calculated amount for the swap operation\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"computeBalance(uint256[],uint256,uint256)\":{\"notice\":\"Computes a new token balance, given the invariant growth ratio and all other balances.\"},\"computeInvariant(uint256[],uint8)\":{\"notice\":\"Computes the pool's invariant.\"},\"getNormalizedWeights()\":{\"notice\":\"Get the normalized weights.\"},\"getWeightedPoolDynamicData()\":{\"notice\":\"Get dynamic pool data relevant to swap/add/remove calculations.\"},\"getWeightedPoolImmutableData()\":{\"notice\":\"Get immutable pool data relevant to swap/add/remove calculations.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Execute a swap in the pool.\"}},\"notice\":\"Full Weighted pool interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol\":\"IWeightedPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol\":{\"keccak256\":\"0x4dbf765d0fba4be1552aa5309aadee71929f74a84818cd453bb23f873ca91bd7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://65c241e3f125e87cea6cad51b075c6d821ba89e45756d8a57590a1f0c6b0d409\",\"dweb:/ipfs/Qmdhs7Fri1yfaRN4S5mPbr76ytv4EhxDntWeYw6mspw1Xq\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"IAuthentication":{"abi":[{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"actionId\":\"The computed actionId\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}]},\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"notice\":\"Simple interface for permissioned calling of external functions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":\"IAuthentication\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol":{"IPoolVersion":{"abi":[{"inputs":[],"name":"getPoolVersion","outputs":[{"internalType":"string","name":"poolVersion","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPoolVersion()":"3f819b6f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getPoolVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"poolVersion\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getPoolVersion()\":{\"details\":\"This is typically only useful in complex Pool deployment schemes, where multiple subsystems need to know about each other. Note that this value will only be set at factory creation time.\",\"returns\":{\"poolVersion\":\"A string representation of the pool version\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPoolVersion()\":{\"notice\":\"Returns a JSON representation of the deployed pool version containing name, version number and task ID.\"}},\"notice\":\"Simple interface to retrieve the version of pools deployed by a pool factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol\":\"IPoolVersion\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol\":{\"keccak256\":\"0xb97e44d4ebd74212195ebf10dc94cd46929e4c3dd217215945d164f02426891f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdc1656abb0e6c82640d17e2752684cce674cdd54665e01491c2b3ccb74c5d8f\",\"dweb:/ipfs/QmfFr81CMmBJa27uHe4aquqHmU2nXCTpXST1shNq6ik8PA\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol":{"IRateProvider":{"abi":[{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRate()":"679aefce"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRate()\":{\"details\":\"The meaning of this rate depends on the context. Note that there may be an error associated with a token rate, and the caller might require a certain rounding direction to ensure correctness. This (legacy) interface does not take a rounding direction or return an error, so great care must be taken when interpreting and using rates in downstream computations.\",\"returns\":{\"rate\":\"The current token rate\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getRate()\":{\"notice\":\"An 18 decimal fixed point number representing the exchange rate of one token to another related token.\"}},\"notice\":\"General interface for token exchange rates.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":\"IRateProvider\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol":{"IVersion":{"abi":[{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"details\":\"For standard Balancer contracts, returns a JSON representation of the contract version containing name, version number and task ID. See real examples in the deployment repo; local tests just use plain text strings.\",\"returns\":{\"_0\":\"version The version string corresponding to the current deployed contract\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"version()\":{\"notice\":\"Return arbitrary text representing the version of a contract.\"}},\"notice\":\"Simple interface to retrieve the version of a deployed contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":\"IVersion\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"IWETH":{"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":"deposit","outputs":[],"stateMutability":"payable","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":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"amount\",\"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`.\"},\"deposit()\":{\"details\":\"The amount is msg.value.\"},\"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.\"},\"withdraw(uint256)\":{\"params\":{\"amount\":\"The amount to withdraw\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit()\":{\"notice\":\"\\\"wrap\\\" native ETH to WETH.\"},\"withdraw(uint256)\":{\"notice\":\"\\\"unwrap\\\" WETH to native ETH.\"}},\"notice\":\"Interface for WETH9. See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol":{"IVaultAdminMock":{"abi":[{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"uint256","name":"wrappedAmount","type":"uint256"}],"name":"addLiquidityToBufferUnbalancedForTests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurnBufferShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualDisableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualEnableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualMintBufferShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"manualMintMinimumBufferSupplyReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualPausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualPauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyAddLiquidityToBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualReentrancyDisableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyInitializeBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOut","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOut","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyRemoveLiquidityFromBufferHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualUnpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualUnpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"mockEnsurePoolNotInRecoveryMode","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"mockWithValidPercentage","outputs":[],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addLiquidityToBufferUnbalancedForTests(address,uint256,uint256)":"1f568ea3","manualBurnBufferShares(address,address,uint256)":"e8338894","manualDisableRecoveryMode(address)":"7578abb9","manualEnableRecoveryMode(address)":"27521d0c","manualMintBufferShares(address,address,uint256)":"6b230291","manualMintMinimumBufferSupplyReserve(address)":"e99ac9a3","manualPausePool(address)":"1558356e","manualPauseVault()":"071d8a02","manualReentrancyAddLiquidityToBuffer(address,uint256,uint256,uint256,address)":"9260d920","manualReentrancyDisableRecoveryMode(address)":"16df26cb","manualReentrancyInitializeBuffer(address,uint256,uint256,uint256,address)":"b61398cd","manualReentrancyRemoveLiquidityFromBufferHook(address,uint256,uint256,uint256,address)":"c7b3b3a9","manualUnpausePool(address)":"52b9e33d","manualUnpauseVault()":"cc671ff7","mockEnsurePoolNotInRecoveryMode(address)":"0b9df1f6","mockWithValidPercentage(uint256)":"88e5101a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"}],\"name\":\"addLiquidityToBufferUnbalancedForTests\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualBurnBufferShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualDisableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualEnableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualMintBufferShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"manualMintMinimumBufferSupplyReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualPausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualPauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyAddLiquidityToBuffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualReentrancyDisableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyInitializeBuffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyRemoveLiquidityFromBufferHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualUnpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualUnpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"mockEnsurePoolNotInRecoveryMode\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"mockWithValidPercentage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidityToBufferUnbalancedForTests(address,uint256,uint256)\":{\"details\":\"Adds liquidity to buffer unbalanced, so it can unbalance the buffer.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol\":\"IVaultAdminMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol\":{\"keccak256\":\"0x51d1502369f0bb1fec58b7aa848f20e6ea3ddcb4866471e2fdbe96f0f6783fb5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ab9f73ec13f137f3103edf9caa8edc4752db585393cc7db6c62f85a1efdbfb5e\",\"dweb:/ipfs/QmXBoBF18c1f33NYqPmrJ3cqULMak55uznBvzfpf1bHpDd\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol":{"IVaultExtensionMock":{"abi":[{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"manualInitializePoolReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"manualRegisterPoolReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"manuallySetSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"manualInitializePoolReentrancy(address,address,address[],uint256[],uint256,bytes)":"809846d1","manualRegisterPoolReentrancy(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"e68010c6","manuallySetSwapFee(address,uint256)":"70600089"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"manualInitializePoolReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"manualRegisterPoolReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manuallySetSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol\":\"IVaultExtensionMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol\":{\"keccak256\":\"0x18c434c91bbcd260bd305f2cdc01684a3040bc633c1b185f95cb323a336ac76c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://270260ba29c81dc6d862a0830ccbbdcd81b4543bd9c9b54228493a92568532d4\",\"dweb:/ipfs/QmTHp7v5dGwLujPRaWkoEM22Loy3MuspodMGcm4syAPUvk\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol":{"IVaultMainMock":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"accountDelta","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"enum TokenType[]","name":"tokenTypes","type":"uint8[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"},{"internalType":"bool[]","name":"yieldFeeFlags","type":"bool[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"},{"internalType":"bool[]","name":"yieldFeeFlags","type":"bool[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"lastLiveBalance","type":"uint256"},{"internalType":"uint256","name":"tokenIndex","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"computeYieldFeesDue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ensurePoolNotPaused","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ensureUnpausedAndGetVaultState","outputs":[{"components":[{"internalType":"bool","name":"isQueryDisabled","type":"bool"},{"internalType":"bool","name":"isVaultPaused","type":"bool"},{"internalType":"bool","name":"areBuffersPaused","type":"bool"}],"internalType":"struct VaultState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradeAmount","type":"uint256"}],"name":"ensureValidSwapAmount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradeAmount","type":"uint256"}],"name":"ensureValidTradeAmount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceUnlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferTokenBalancesBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getLastLiveBalances","outputs":[{"internalType":"uint256[]","name":"lastBalancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolFactoryMock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getRawBalances","outputs":[{"internalType":"uint256[]","name":"balancesRaw","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardedCheckEntered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"internalGetBufferUnderlyingImbalance","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"internalGetBufferWrappedImbalance","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"loadPoolDataUpdatingBalancesAndYieldFees","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"}],"name":"manualAddLiquidity","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"updatedPoolData","type":"tuple"},{"internalType":"uint256[]","name":"amountsInRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsInScaled18","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualBuildPoolSwapParams","outputs":[{"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":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"totalSwapFeeAmountScaled18","type":"uint256"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"manualComputeAndChargeAggregateSwapFees","outputs":[{"internalType":"uint256","name":"totalSwapFeeAmountRaw","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeeAmountRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"manualErc4626BufferWrapOrUnwrapReentrancy","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualFindTokenIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"sessionId","type":"uint256"}],"name":"manualGetAddLiquidityCalledFlagBySession","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualGetAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualGetAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetCurrentUnlockSessionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualGetPoolConfigBits","outputs":[{"internalType":"PoolConfigBits","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualInternalSwap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"}],"name":"manualReentrancyAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"}],"name":"manualReentrancyRemoveLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualReentrancySwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualRegisterPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint32","name":"timestamp","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"}],"name":"manualRegisterPoolAtTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualRegisterPoolPassThruTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"manualRegisterPoolWithSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"}],"name":"manualRemoveLiquidity","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"updatedPoolData","type":"tuple"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsOutScaled18","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSendToReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"manualSetAccountDelta","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manualSetAddLiquidityCalledFlag","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateSwapFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateYieldFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"manualSetBufferAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"uint256","name":"wrappedAmount","type":"uint256"}],"name":"manualSetBufferBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"manualSetBufferOwnerShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"manualSetBufferTotalShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"config","type":"tuple"}],"name":"manualSetHooksConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"}],"name":"manualSetInitializedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deltaCount","type":"uint256"}],"name":"manualSetNonZeroDeltaCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"name":"manualSetPoolBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"config","type":"tuple"}],"name":"manualSetPoolConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"PoolConfigBits","name":"config","type":"bytes32"}],"name":"manualSetPoolConfigBits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"newPoolCreator","type":"address"}],"name":"manualSetPoolCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"manualSetPoolPauseWindowEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"manualSetPoolPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manualSetPoolRegistered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IERC20[]","name":"","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":"","type":"tuple[]"}],"name":"manualSetPoolTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"","type":"tuple[]"}],"name":"manualSetPoolTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualSetPoolTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IERC20[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"name":"manualSetPoolTokensAndBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"manualSetReservesOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"manualSetVaultPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"manualSetVaultState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualSettleReentrancy","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"contract IERC20","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingHint","type":"uint256"},{"internalType":"uint256","name":"wrappedHint","type":"uint256"}],"name":"manualSettleUnwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"contract IERC20","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingHint","type":"uint256"},{"internalType":"uint256","name":"wrappedHint","type":"uint256"}],"name":"manualSettleWrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualUnsafeSetStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"manualUpdateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"manualUpdatePoolDataLiveBalancesAndRates","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualWritePoolBalancesToStorage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mockIsUnlocked","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"mockWithInitializedPool","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountInUnderlying","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"amountOutWrapped","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountOutWrapped","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"amountInUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountInWrapped","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"amountOutUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountOutUnderlying","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"amountInWrapped","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"recoveryModeExit","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"credit","type":"uint256"}],"name":"supplyCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"debt","type":"uint256"}],"name":"takeDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unguardedCheckNotEntered","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"newRawBalance","type":"uint256"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"},{"internalType":"uint256","name":"tokenIndex","type":"uint256"}],"name":"updateLiveTokenBalanceInPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"accountDelta(address,int256)":"80047e26","buildTokenConfig(address[])":"24e7176b","buildTokenConfig(address[],address[])":"5f70f542","buildTokenConfig(address[],address[],bool[])":"e5948689","buildTokenConfig(address[],uint8[],address[],bool[])":"608256f7","burnERC20(address,address,uint256)":"1d27af68","computeYieldFeesDue((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,uint256,uint256)":"08bade29","ensurePoolNotPaused(address)":"02e1a4aa","ensureUnpausedAndGetVaultState(address)":"e460a8a9","ensureValidSwapAmount(uint256)":"b4eb0bf9","ensureValidTradeAmount(uint256)":"2cbbf198","forceLock()":"6d4908c4","forceUnlock()":"7965c967","getBufferTokenBalancesBytes(address)":"e5b08ffb","getLastLiveBalances(address)":"3cce2585","getPoolFactoryMock()":"87a76c59","getRawBalances(address)":"19a24bcb","guardedCheckEntered()":"a408f312","internalGetBufferUnderlyingImbalance(address)":"2606a4de","internalGetBufferWrappedImbalance(address)":"a40f9592","loadPoolDataUpdatingBalancesAndYieldFees(address,uint8)":"0f682ba0","loadPoolDataUpdatingBalancesAndYieldFeesReentrancy(address,uint8)":"dc4402ed","manualAddLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256[],uint256,uint8,bytes),uint256[])":"0790de46","manualBuildPoolSwapParams((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"16a573c2","manualComputeAndChargeAggregateSwapFees((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,address,address,uint256)":"be6b4d2a","manualErc4626BufferWrapOrUnwrapReentrancy((uint8,uint8,address,uint256,uint256))":"370bc8da","manualFindTokenIndex(address[],address)":"ebfeb0a1","manualGetAddLiquidityCalledFlagBySession(address,uint256)":"420f4a45","manualGetAggregateSwapFeeAmount(address,address)":"36918d6e","manualGetAggregateYieldFeeAmount(address,address)":"8f5aeb4b","manualGetCurrentUnlockSessionId()":"81e4b7e9","manualGetPoolConfigBits(address)":"557dba68","manualInternalSwap((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"25b6a844","manualReentrancyAddLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256[],uint256,uint8,bytes),uint256[])":"eeda9991","manualReentrancyRemoveLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256,uint256[],uint8,bytes),uint256[])":"28121e27","manualReentrancySwap((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"96e74a27","manualRegisterPool(address,address[])":"851c65a3","manualRegisterPoolAtTimestamp(address,address[],uint32,(address,address,address))":"0362a513","manualRegisterPoolPassThruTokens(address,address[])":"32333ce6","manualRegisterPoolWithSwapFee(address,address[],uint256)":"1f495f79","manualRemoveLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256,uint256[],uint8,bytes),uint256[])":"f1320097","manualSendToReentrancy(address,address,uint256)":"d01a3269","manualSetAccountDelta(address,int256)":"d0643b8c","manualSetAddLiquidityCalledFlag(address,bool)":"e2ddce11","manualSetAggregateSwapFeeAmount(address,address,uint256)":"44ea8763","manualSetAggregateSwapFeePercentage(address,uint256)":"cfcc2209","manualSetAggregateYieldFeeAmount(address,address,uint256)":"7004b0f1","manualSetAggregateYieldFeePercentage(address,uint256)":"920af066","manualSetBufferAsset(address,address)":"ab62c2b6","manualSetBufferBalances(address,uint256,uint256)":"0ee4cdd8","manualSetBufferOwnerShares(address,address,uint256)":"ff44deab","manualSetBufferTotalShares(address,uint256)":"3cb5b2af","manualSetHooksConfig(address,(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address))":"c1fdcd62","manualSetInitializedPool(address,bool)":"5e3e00fa","manualSetNonZeroDeltaCount(uint256)":"5eeae6eb","manualSetPoolBalances(address,uint256[],uint256[])":"1c4e1e23","manualSetPoolConfig(address,((bool,bool,bool,bool),uint256,uint256,uint256,uint40,uint32,bool,bool,bool,bool))":"5c1c1c81","manualSetPoolConfigBits(address,bytes32)":"df138458","manualSetPoolCreator(address,address)":"79a2c0ac","manualSetPoolPauseWindowEndTime(address,uint32)":"0c87409b","manualSetPoolPaused(address,bool)":"cbde2b68","manualSetPoolRegistered(address,bool)":"352339ee","manualSetPoolTokenInfo(address,(address,uint8,address,bool)[])":"dab50579","manualSetPoolTokenInfo(address,address[],(uint8,address,bool)[])":"bb14e466","manualSetPoolTokens(address,address[])":"82ea1749","manualSetPoolTokensAndBalances(address,address[],uint256[],uint256[])":"d8f4cf3c","manualSetReservesOf(address,uint256)":"d64bc25d","manualSetStaticSwapFeePercentage(address,uint256)":"195aaef9","manualSetVaultPaused(bool)":"692407ae","manualSetVaultState(bool,bool)":"10c1dc41","manualSettleReentrancy(address)":"2d1c3beb","manualSettleUnwrap(address,address,uint256,uint256)":"b6f680f4","manualSettleWrap(address,address,uint256,uint256)":"ac004855","manualTransfer(address,address,uint256)":"00d7aadb","manualUnsafeSetStaticSwapFeePercentage(address,uint256)":"2b766278","manualUpdateAggregateSwapFeePercentage(address,uint256)":"a03b23ef","manualUpdatePoolDataLiveBalancesAndRates(address,(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint8)":"d86c3fef","manualWritePoolBalancesToStorage(address,(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"0f619655","mintERC20(address,address,uint256)":"47c07e88","mockIsUnlocked()":"b8caceee","mockWithInitializedPool(address)":"62691e5f","previewDeposit(address,uint256)":"b8f82b26","previewMint(address,uint256)":"d1f810a5","previewRedeem(address,uint256)":"cbe52ae3","previewWithdraw(address,uint256)":"bbc6f1dc","recoveryModeExit(address)":"87a530f8","supplyCredit(address,uint256)":"b1740c2d","takeDebt(address,uint256)":"3e262ba3","unguardedCheckNotEntered()":"cecc95a7","updateLiveTokenBalanceInPoolData((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,uint8,uint256)":"aa01edb3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"accountDelta\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"enum TokenType[]\",\"name\":\"tokenTypes\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"yieldFeeFlags\",\"type\":\"bool[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"yieldFeeFlags\",\"type\":\"bool[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"lastLiveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeYieldFeesDue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"ensurePoolNotPaused\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"ensureUnpausedAndGetVaultState\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isQueryDisabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isVaultPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"areBuffersPaused\",\"type\":\"bool\"}],\"internalType\":\"struct VaultState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tradeAmount\",\"type\":\"uint256\"}],\"name\":\"ensureValidSwapAmount\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tradeAmount\",\"type\":\"uint256\"}],\"name\":\"ensureValidTradeAmount\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferTokenBalancesBytes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getLastLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"lastBalancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolFactoryMock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getRawBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardedCheckEntered\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"internalGetBufferUnderlyingImbalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"internalGetBufferWrappedImbalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"loadPoolDataUpdatingBalancesAndYieldFees\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualAddLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"updatedPoolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualBuildPoolSwapParams\",\"outputs\":[{\"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\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"totalSwapFeeAmountScaled18\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"manualComputeAndChargeAggregateSwapFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSwapFeeAmountRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeeAmountRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"manualErc4626BufferWrapOrUnwrapReentrancy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualFindTokenIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sessionId\",\"type\":\"uint256\"}],\"name\":\"manualGetAddLiquidityCalledFlagBySession\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualGetAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualGetAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetCurrentUnlockSessionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualGetPoolConfigBits\",\"outputs\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualInternalSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualReentrancyAddLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualReentrancyRemoveLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualReentrancySwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualRegisterPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"}],\"name\":\"manualRegisterPoolAtTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualRegisterPoolPassThruTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manualRegisterPoolWithSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualRemoveLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"updatedPoolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualSendToReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"manualSetAccountDelta\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"manualSetAddLiquidityCalledFlag\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateSwapFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateYieldFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"manualSetBufferAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferOwnerShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferTotalShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"manualSetHooksConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"}],\"name\":\"manualSetInitializedPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deltaCount\",\"type\":\"uint256\"}],\"name\":\"manualSetNonZeroDeltaCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"name\":\"manualSetPoolBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"manualSetPoolConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"PoolConfigBits\",\"name\":\"config\",\"type\":\"bytes32\"}],\"name\":\"manualSetPoolConfigBits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPoolCreator\",\"type\":\"address\"}],\"name\":\"manualSetPoolCreator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"manualSetPoolPauseWindowEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"manualSetPoolPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"manualSetPoolRegistered\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"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\":\"\",\"type\":\"tuple[]\"}],\"name\":\"manualSetPoolTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"name\":\"manualSetPoolTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualSetPoolTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"name\":\"manualSetPoolTokensAndBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"manualSetReservesOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"manualSetVaultPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"manualSetVaultState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualSettleReentrancy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingHint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedHint\",\"type\":\"uint256\"}],\"name\":\"manualSettleUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingHint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedHint\",\"type\":\"uint256\"}],\"name\":\"manualSettleWrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualUnsafeSetStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manualUpdateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"manualUpdatePoolDataLiveBalancesAndRates\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualWritePoolBalancesToStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockIsUnlocked\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"mockWithInitializedPool\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInUnderlying\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutWrapped\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutWrapped\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUnderlying\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInWrapped\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutUnderlying\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutUnderlying\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInWrapped\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"recoveryModeExit\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"name\":\"supplyCredit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debt\",\"type\":\"uint256\"}],\"name\":\"takeDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unguardedCheckNotEntered\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"newRawBalance\",\"type\":\"uint256\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"}],\"name\":\"updateLiveTokenBalanceInPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"buildTokenConfig(address[],address[])\":{\"details\":\"Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\"},\"buildTokenConfig(address[],address[],bool[])\":{\"details\":\"Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\"},\"manualUnsafeSetStaticSwapFeePercentage(address,uint256)\":{\"details\":\"Does not check the value against any min/max limits normally enforced by the pool.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol\":\"IVaultMainMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol\":{\"keccak256\":\"0x086e3fda1fa00d50747c9f88711024e107a894904b9ff996fade91f8da326baa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8712c4f68cc951446482c289250ee6ea15c0028bb9b9d82c69d6793aa8dd1ae2\",\"dweb:/ipfs/QmSmz5XkvCDQ4NZ32evpxCvGkYnGbygCn5BP2xwvz2hQgi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol":{"IVaultMock":{"abi":[{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"accountDelta","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"}],"name":"addLiquidity","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"uint256","name":"wrappedAmount","type":"uint256"}],"name":"addLiquidityToBufferUnbalancedForTests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"tokenAllowance","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":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areBuffersPaused","outputs":[{"internalType":"bool","name":"buffersPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"tokenBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"enum TokenType[]","name":"tokenTypes","type":"uint8[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"},{"internalType":"bool[]","name":"yieldFeeFlags","type":"bool[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"},{"internalType":"bool[]","name":"yieldFeeFlags","type":"bool[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"yieldFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"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":"swapParams","type":"tuple"}],"name":"computeDynamicSwapFeePercentage","outputs":[{"internalType":"uint256","name":"dynamicSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"lastLiveBalance","type":"uint256"},{"internalType":"uint256","name":"tokenIndex","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"computeYieldFeesDue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQueryPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"emitAuxiliaryEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ensurePoolNotPaused","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ensureUnpausedAndGetVaultState","outputs":[{"components":[{"internalType":"bool","name":"isQueryDisabled","type":"bool"},{"internalType":"bool","name":"isVaultPaused","type":"bool"},{"internalType":"bool","name":"areBuffersPaused","type":"bool"}],"internalType":"struct VaultState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradeAmount","type":"uint256"}],"name":"ensureValidSwapAmount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradeAmount","type":"uint256"}],"name":"ensureValidTradeAmount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"erc4626BufferWrapOrUnwrap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceUnlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getAddLiquidityCalledFlag","outputs":[{"internalType":"bool","name":"liquidityAdded","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"yieldFeeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"authorizer","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getBptRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferAsset","outputs":[{"internalType":"address","name":"underlyingToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferBalance","outputs":[{"internalType":"uint256","name":"underlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"wrappedBalanceRaw","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"bufferMinimumTotalSupply","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"liquidityOwner","type":"address"}],"name":"getBufferOwnerShares","outputs":[{"internalType":"uint256","name":"ownerShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodDuration","outputs":[{"internalType":"uint32","name":"bufferPeriodDuration","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodEndTime","outputs":[{"internalType":"uint32","name":"bufferPeriodEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferTokenBalancesBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferTotalShares","outputs":[{"internalType":"uint256","name":"bufferShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getERC4626BufferAsset","outputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getHooksConfig","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getLastLiveBalances","outputs":[{"internalType":"uint256[]","name":"lastBalancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumPoolTokens","outputs":[{"internalType":"uint256","name":"maxTokens","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumPoolTokens","outputs":[{"internalType":"uint256","name":"minTokens","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumTradeAmount","outputs":[{"internalType":"uint256","name":"minimumTradeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumWrapAmount","outputs":[{"internalType":"uint256","name":"minimumWrapAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNonzeroDeltaCount","outputs":[{"internalType":"uint256","name":"nonzeroDeltaCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolConfig","outputs":[{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"poolConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolFactoryMock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"poolMinimumTotalSupply","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolPausedState","outputs":[{"internalType":"bool","name":"poolPaused","type":"bool"},{"internalType":"uint32","name":"poolPauseWindowEndTime","type":"uint32"},{"internalType":"uint32","name":"poolBufferPeriodEndTime","type":"uint32"},{"internalType":"address","name":"pauseManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolRoleAccounts","outputs":[{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenCountAndIndexOfToken","outputs":[{"internalType":"uint256","name":"tokenCount","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenInfo","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":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenRates","outputs":[{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"protocolFeeController","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getRawBalances","outputs":[{"internalType":"uint256[]","name":"balancesRaw","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getReservesOf","outputs":[{"internalType":"uint256","name":"reserveAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getStaticSwapFeePercentage","outputs":[{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenDelta","outputs":[{"internalType":"int256","name":"tokenDelta","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultAdmin","outputs":[{"internalType":"address","name":"vaultAdmin","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultExtension","outputs":[{"internalType":"address","name":"vaultExtension","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultPausedState","outputs":[{"internalType":"bool","name":"vaultPaused","type":"bool"},{"internalType":"uint32","name":"vaultPauseWindowEndTime","type":"uint32"},{"internalType":"uint32","name":"vaultBufferPeriodEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardedCheckEntered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"internalGetBufferUnderlyingImbalance","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"internalGetBufferWrappedImbalance","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"isERC4626BufferInitialized","outputs":[{"internalType":"bool","name":"isBufferInitialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInRecoveryMode","outputs":[{"internalType":"bool","name":"inRecoveryMode","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInitialized","outputs":[{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolPaused","outputs":[{"internalType":"bool","name":"poolPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolRegistered","outputs":[{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabled","outputs":[{"internalType":"bool","name":"queryDisabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabledPermanently","outputs":[{"internalType":"bool","name":"queryDisabledPermanently","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isVaultPaused","outputs":[{"internalType":"bool","name":"vaultPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"loadPoolDataUpdatingBalancesAndYieldFees","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"}],"name":"manualAddLiquidity","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"updatedPoolData","type":"tuple"},{"internalType":"uint256[]","name":"amountsInRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsInScaled18","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualBuildPoolSwapParams","outputs":[{"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":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurnBufferShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"totalSwapFeeAmountScaled18","type":"uint256"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"manualComputeAndChargeAggregateSwapFees","outputs":[{"internalType":"uint256","name":"totalSwapFeeAmountRaw","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeeAmountRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualDisableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualEnableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"manualErc4626BufferWrapOrUnwrapReentrancy","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualFindTokenIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"sessionId","type":"uint256"}],"name":"manualGetAddLiquidityCalledFlagBySession","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualGetAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualGetAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetCurrentUnlockSessionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetIsUnlocked","outputs":[{"internalType":"StorageSlotExtension.BooleanSlotType","name":"slot","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualGetNonzeroDeltaCount","outputs":[{"internalType":"StorageSlotExtension.Uint256SlotType","name":"slot","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualGetPoolConfigBits","outputs":[{"internalType":"PoolConfigBits","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetTokenDeltas","outputs":[{"internalType":"TokenDeltaMappingSlotType","name":"slot","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"manualInitializePoolReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualInternalSwap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualMintBufferShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"manualMintMinimumBufferSupplyReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualPausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualPauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"}],"name":"manualReentrancyAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyAddLiquidityToBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualReentrancyDisableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyInitializeBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"}],"name":"manualReentrancyRemoveLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOut","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOut","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyRemoveLiquidityFromBufferHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualReentrancySwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualRegisterPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint32","name":"timestamp","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"}],"name":"manualRegisterPoolAtTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualRegisterPoolPassThruTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"manualRegisterPoolReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"manualRegisterPoolWithSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"}],"name":"manualRemoveLiquidity","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"updatedPoolData","type":"tuple"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsOutScaled18","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSendToReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"manualSetAccountDelta","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manualSetAddLiquidityCalledFlag","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateSwapFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateYieldFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"manualSetBufferAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"uint256","name":"wrappedAmount","type":"uint256"}],"name":"manualSetBufferBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"manualSetBufferOwnerShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"manualSetBufferTotalShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"config","type":"tuple"}],"name":"manualSetHooksConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"}],"name":"manualSetInitializedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deltaCount","type":"uint256"}],"name":"manualSetNonZeroDeltaCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"name":"manualSetPoolBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"config","type":"tuple"}],"name":"manualSetPoolConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"PoolConfigBits","name":"config","type":"bytes32"}],"name":"manualSetPoolConfigBits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"newPoolCreator","type":"address"}],"name":"manualSetPoolCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"manualSetPoolPauseWindowEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"manualSetPoolPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manualSetPoolRegistered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IERC20[]","name":"","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":"","type":"tuple[]"}],"name":"manualSetPoolTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"","type":"tuple[]"}],"name":"manualSetPoolTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualSetPoolTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"contract IERC20[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"name":"manualSetPoolTokensAndBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"manualSetReservesOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"manualSetVaultPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"name":"manualSetVaultState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualSettleReentrancy","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"contract IERC20","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingHint","type":"uint256"},{"internalType":"uint256","name":"wrappedHint","type":"uint256"}],"name":"manualSettleUnwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"contract IERC20","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingHint","type":"uint256"},{"internalType":"uint256","name":"wrappedHint","type":"uint256"}],"name":"manualSettleWrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualUnpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualUnpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualUnsafeSetStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"manualUpdateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"manualUpdatePoolDataLiveBalancesAndRates","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualWritePoolBalancesToStorage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"manuallySetSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"mockEnsurePoolNotInRecoveryMode","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mockIsUnlocked","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"mockWithInitializedPool","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"mockWithValidPercentage","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"pausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountInUnderlying","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"amountOutWrapped","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountOutWrapped","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"amountInUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountInWrapped","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"amountOutUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountOutUnderlying","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"amountInWrapped","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quote","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quoteAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"recoveryModeExit","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOutRaw","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOutRaw","type":"uint256"}],"name":"removeLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"setProtocolFeeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"setStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountHint","type":"uint256"}],"name":"settle","outputs":[{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"credit","type":"uint256"}],"name":"supplyCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"debt","type":"uint256"}],"name":"takeDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"tokenTotalSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"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":"spender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unguardedCheckNotEntered","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"unpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"updateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateYieldFeePercentage","type":"uint256"}],"name":"updateAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"newRawBalance","type":"uint256"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"},{"internalType":"uint256","name":"tokenIndex","type":"uint256"}],"name":"updateLiveTokenBalanceInPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"accountDelta(address,int256)":"80047e26","addLiquidity((address,address,uint256[],uint256,uint8,bytes))":"4af29ec4","addLiquidityToBuffer(address,uint256,uint256,uint256,address)":"e2a92b1a","addLiquidityToBufferUnbalancedForTests(address,uint256,uint256)":"1f568ea3","allowance(address,address,address)":"927da105","approve(address,address,uint256)":"e1f21c67","areBuffersPaused()":"55cba7fe","balanceOf(address,address)":"f7888aec","buildTokenConfig(address[])":"24e7176b","buildTokenConfig(address[],address[])":"5f70f542","buildTokenConfig(address[],address[],bool[])":"e5948689","buildTokenConfig(address[],uint8[],address[],bool[])":"608256f7","burnERC20(address,address,uint256)":"1d27af68","collectAggregateFees(address)":"8f4ab9ca","computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))":"4d472bdd","computeYieldFeesDue((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,uint256,uint256)":"08bade29","disableQuery()":"de1a36a6","disableQueryPermanently()":"821440f2","disableRecoveryMode(address)":"bffb78b2","emitAuxiliaryEvent(bytes32,bytes)":"c8088247","enableQuery()":"e0d55605","enableRecoveryMode(address)":"dc3f574e","ensurePoolNotPaused(address)":"02e1a4aa","ensureUnpausedAndGetVaultState(address)":"e460a8a9","ensureValidSwapAmount(uint256)":"b4eb0bf9","ensureValidTradeAmount(uint256)":"2cbbf198","erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))":"43583be5","forceLock()":"6d4908c4","forceUnlock()":"7965c967","getActionId(bytes4)":"851c1bb3","getAddLiquidityCalledFlag(address)":"ace9b89b","getAggregateSwapFeeAmount(address,address)":"85e0b999","getAggregateYieldFeeAmount(address,address)":"00fdfa13","getAuthorizer()":"aaabadc5","getBptRate(address)":"4f037ee7","getBufferAsset(address)":"0387587d","getBufferBalance(address)":"4021fe0f","getBufferMinimumTotalSupply()":"26a8a991","getBufferOwnerShares(address,address)":"9385e39a","getBufferPeriodDuration()":"20c1fb7a","getBufferPeriodEndTime()":"cd51c12f","getBufferTokenBalancesBytes(address)":"e5b08ffb","getBufferTotalShares(address)":"f2784e07","getCurrentLiveBalances(address)":"535cfd8a","getERC4626BufferAsset(address)":"4afbaf5a","getHooksConfig(address)":"ce8630d4","getLastLiveBalances(address)":"3cce2585","getMaximumPoolTokens()":"2e42f4d5","getMinimumPoolTokens()":"a8175b27","getMinimumTradeAmount()":"e2cb0ba0","getMinimumWrapAmount()":"53956aa2","getNonzeroDeltaCount()":"db817187","getPauseWindowEndTime()":"8a8d123a","getPoolConfig(address)":"f29486a1","getPoolData(address)":"13d21cdf","getPoolFactoryMock()":"87a76c59","getPoolMinimumTotalSupply()":"d0965a6b","getPoolPausedState(address)":"15e32046","getPoolRoleAccounts(address)":"e9ddeb26","getPoolTokenCountAndIndexOfToken(address,address)":"c9c1661b","getPoolTokenInfo(address)":"67e0e076","getPoolTokenRates(address)":"7e361bde","getPoolTokens(address)":"ca4f2803","getProtocolFeeController()":"85f2dbd4","getRawBalances(address)":"19a24bcb","getReservesOf(address)":"96787092","getStaticSwapFeePercentage(address)":"b45090f9","getTokenDelta(address)":"9e825ff5","getVaultAdmin()":"1ba0ae45","getVaultExtension()":"b9a8effa","getVaultPausedState()":"85c8c015","guardedCheckEntered()":"a408f312","initialize(address,address,address[],uint256[],uint256,bytes)":"ba8a2be0","initializeBuffer(address,uint256,uint256,uint256,address)":"653eb3b0","internalGetBufferUnderlyingImbalance(address)":"2606a4de","internalGetBufferWrappedImbalance(address)":"a40f9592","isERC4626BufferInitialized(address)":"6844846b","isPoolInRecoveryMode(address)":"be7d628a","isPoolInitialized(address)":"532cec7c","isPoolPaused(address)":"6c9bc732","isPoolRegistered(address)":"c673bdaf","isQueryDisabled()":"b4aef0ab","isQueryDisabledPermanently()":"13ef8a5d","isUnlocked()":"8380edb7","isVaultPaused()":"098401f5","loadPoolDataUpdatingBalancesAndYieldFees(address,uint8)":"0f682ba0","loadPoolDataUpdatingBalancesAndYieldFeesReentrancy(address,uint8)":"dc4402ed","manualAddLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256[],uint256,uint8,bytes),uint256[])":"0790de46","manualBuildPoolSwapParams((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"16a573c2","manualBurnBufferShares(address,address,uint256)":"e8338894","manualComputeAndChargeAggregateSwapFees((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,address,address,uint256)":"be6b4d2a","manualDisableRecoveryMode(address)":"7578abb9","manualEnableRecoveryMode(address)":"27521d0c","manualErc4626BufferWrapOrUnwrapReentrancy((uint8,uint8,address,uint256,uint256))":"370bc8da","manualFindTokenIndex(address[],address)":"ebfeb0a1","manualGetAddLiquidityCalledFlagBySession(address,uint256)":"420f4a45","manualGetAggregateSwapFeeAmount(address,address)":"36918d6e","manualGetAggregateYieldFeeAmount(address,address)":"8f5aeb4b","manualGetCurrentUnlockSessionId()":"81e4b7e9","manualGetIsUnlocked()":"b2469499","manualGetNonzeroDeltaCount()":"155075e6","manualGetPoolConfigBits(address)":"557dba68","manualGetTokenDeltas()":"1f4475c5","manualInitializePoolReentrancy(address,address,address[],uint256[],uint256,bytes)":"809846d1","manualInternalSwap((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"25b6a844","manualMintBufferShares(address,address,uint256)":"6b230291","manualMintMinimumBufferSupplyReserve(address)":"e99ac9a3","manualPausePool(address)":"1558356e","manualPauseVault()":"071d8a02","manualReentrancyAddLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256[],uint256,uint8,bytes),uint256[])":"eeda9991","manualReentrancyAddLiquidityToBuffer(address,uint256,uint256,uint256,address)":"9260d920","manualReentrancyDisableRecoveryMode(address)":"16df26cb","manualReentrancyInitializeBuffer(address,uint256,uint256,uint256,address)":"b61398cd","manualReentrancyRemoveLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256,uint256[],uint8,bytes),uint256[])":"28121e27","manualReentrancyRemoveLiquidityFromBufferHook(address,uint256,uint256,uint256,address)":"c7b3b3a9","manualReentrancySwap((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"96e74a27","manualRegisterPool(address,address[])":"851c65a3","manualRegisterPoolAtTimestamp(address,address[],uint32,(address,address,address))":"0362a513","manualRegisterPoolPassThruTokens(address,address[])":"32333ce6","manualRegisterPoolReentrancy(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"e68010c6","manualRegisterPoolWithSwapFee(address,address[],uint256)":"1f495f79","manualRemoveLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256,uint256[],uint8,bytes),uint256[])":"f1320097","manualSendToReentrancy(address,address,uint256)":"d01a3269","manualSetAccountDelta(address,int256)":"d0643b8c","manualSetAddLiquidityCalledFlag(address,bool)":"e2ddce11","manualSetAggregateSwapFeeAmount(address,address,uint256)":"44ea8763","manualSetAggregateSwapFeePercentage(address,uint256)":"cfcc2209","manualSetAggregateYieldFeeAmount(address,address,uint256)":"7004b0f1","manualSetAggregateYieldFeePercentage(address,uint256)":"920af066","manualSetBufferAsset(address,address)":"ab62c2b6","manualSetBufferBalances(address,uint256,uint256)":"0ee4cdd8","manualSetBufferOwnerShares(address,address,uint256)":"ff44deab","manualSetBufferTotalShares(address,uint256)":"3cb5b2af","manualSetHooksConfig(address,(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address))":"c1fdcd62","manualSetInitializedPool(address,bool)":"5e3e00fa","manualSetNonZeroDeltaCount(uint256)":"5eeae6eb","manualSetPoolBalances(address,uint256[],uint256[])":"1c4e1e23","manualSetPoolConfig(address,((bool,bool,bool,bool),uint256,uint256,uint256,uint40,uint32,bool,bool,bool,bool))":"5c1c1c81","manualSetPoolConfigBits(address,bytes32)":"df138458","manualSetPoolCreator(address,address)":"79a2c0ac","manualSetPoolPauseWindowEndTime(address,uint32)":"0c87409b","manualSetPoolPaused(address,bool)":"cbde2b68","manualSetPoolRegistered(address,bool)":"352339ee","manualSetPoolTokenInfo(address,(address,uint8,address,bool)[])":"dab50579","manualSetPoolTokenInfo(address,address[],(uint8,address,bool)[])":"bb14e466","manualSetPoolTokens(address,address[])":"82ea1749","manualSetPoolTokensAndBalances(address,address[],uint256[],uint256[])":"d8f4cf3c","manualSetReservesOf(address,uint256)":"d64bc25d","manualSetStaticSwapFeePercentage(address,uint256)":"195aaef9","manualSetVaultPaused(bool)":"692407ae","manualSetVaultState(bool,bool)":"10c1dc41","manualSettleReentrancy(address)":"2d1c3beb","manualSettleUnwrap(address,address,uint256,uint256)":"b6f680f4","manualSettleWrap(address,address,uint256,uint256)":"ac004855","manualTransfer(address,address,uint256)":"00d7aadb","manualUnpausePool(address)":"52b9e33d","manualUnpauseVault()":"cc671ff7","manualUnsafeSetStaticSwapFeePercentage(address,uint256)":"2b766278","manualUpdateAggregateSwapFeePercentage(address,uint256)":"a03b23ef","manualUpdatePoolDataLiveBalancesAndRates(address,(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint8)":"d86c3fef","manualWritePoolBalancesToStorage(address,(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"0f619655","manuallySetSwapFee(address,uint256)":"70600089","mintERC20(address,address,uint256)":"47c07e88","mockEnsurePoolNotInRecoveryMode(address)":"0b9df1f6","mockIsUnlocked()":"b8caceee","mockWithInitializedPool(address)":"62691e5f","mockWithValidPercentage(uint256)":"88e5101a","pausePool(address)":"55aca1ec","pauseVault()":"9e0879c2","pauseVaultBuffers()":"e085c5a8","previewDeposit(address,uint256)":"b8f82b26","previewMint(address,uint256)":"d1f810a5","previewRedeem(address,uint256)":"cbe52ae3","previewWithdraw(address,uint256)":"bbc6f1dc","quote(bytes)":"edfa3568","quoteAndRevert(bytes)":"757d64b3","recoveryModeExit(address)":"87a530f8","registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"eeec802f","removeLiquidity((address,address,uint256,uint256[],uint8,bytes))":"21457897","removeLiquidityFromBuffer(address,uint256,uint256,uint256)":"ebc7955c","removeLiquidityRecovery(address,address,uint256,uint256[])":"a07d6040","sendTo(address,address,uint256)":"ae639329","setAuthorizer(address)":"058a628f","setProtocolFeeController(address)":"2d771389","setStaticSwapFeePercentage(address,uint256)":"d15126ba","settle(address,uint256)":"15afd409","supplyCredit(address,uint256)":"b1740c2d","swap((uint8,address,address,address,uint256,uint256,bytes))":"2bfb780c","takeDebt(address,uint256)":"3e262ba3","totalSupply(address)":"e4dc2aa4","transfer(address,address,uint256)":"beabacc8","transferFrom(address,address,address,uint256)":"15dacbea","unguardedCheckNotEntered()":"cecc95a7","unlock(bytes)":"48c89491","unpausePool(address)":"f21c38cd","unpauseVault()":"0b7562be","unpauseVaultBuffers()":"b9212b49","updateAggregateSwapFeePercentage(address,uint256)":"5e0b06f4","updateAggregateYieldFeePercentage(address,uint256)":"e253670a","updateLiveTokenBalanceInPoolData((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,uint8,uint256)":"aa01edb3","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"accountDelta\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"}],\"name\":\"addLiquidityToBufferUnbalancedForTests\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAllowance\",\"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\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"areBuffersPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"buffersPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"enum TokenType[]\",\"name\":\"tokenTypes\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"yieldFeeFlags\",\"type\":\"bool[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"yieldFeeFlags\",\"type\":\"bool[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"yieldFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"swapParams\",\"type\":\"tuple\"}],\"name\":\"computeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"lastLiveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeYieldFeesDue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQueryPermanently\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"emitAuxiliaryEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"ensurePoolNotPaused\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"ensureUnpausedAndGetVaultState\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isQueryDisabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isVaultPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"areBuffersPaused\",\"type\":\"bool\"}],\"internalType\":\"struct VaultState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tradeAmount\",\"type\":\"uint256\"}],\"name\":\"ensureValidSwapAmount\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tradeAmount\",\"type\":\"uint256\"}],\"name\":\"ensureValidTradeAmount\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"erc4626BufferWrapOrUnwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getAddLiquidityCalledFlag\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"liquidityAdded\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"yieldFeeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"authorizer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getBptRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"underlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bufferMinimumTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityOwner\",\"type\":\"address\"}],\"name\":\"getBufferOwnerShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ownerShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferTokenBalancesBytes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferTotalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bufferShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getERC4626BufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getHooksConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getLastLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"lastBalancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxTokens\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minTokens\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumTradeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumTradeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumWrapAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumWrapAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonzeroDeltaCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"poolConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolFactoryMock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolMinimumTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"poolPaused\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"poolPauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"poolBufferPeriodEndTime\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolRoleAccounts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenCountAndIndexOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"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\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenRates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getRawBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getReservesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getStaticSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"tokenDelta\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vaultAdmin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vaultExtension\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"vaultPaused\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"vaultPauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"vaultBufferPeriodEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardedCheckEntered\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"internalGetBufferUnderlyingImbalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"internalGetBufferWrappedImbalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"isERC4626BufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isBufferInitialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"inRecoveryMode\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"poolPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"queryDisabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabledPermanently\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"queryDisabledPermanently\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isVaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"vaultPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"loadPoolDataUpdatingBalancesAndYieldFees\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualAddLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"updatedPoolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualBuildPoolSwapParams\",\"outputs\":[{\"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\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualBurnBufferShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"totalSwapFeeAmountScaled18\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"manualComputeAndChargeAggregateSwapFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSwapFeeAmountRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeeAmountRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualDisableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualEnableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"manualErc4626BufferWrapOrUnwrapReentrancy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualFindTokenIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sessionId\",\"type\":\"uint256\"}],\"name\":\"manualGetAddLiquidityCalledFlagBySession\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualGetAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualGetAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetCurrentUnlockSessionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetIsUnlocked\",\"outputs\":[{\"internalType\":\"StorageSlotExtension.BooleanSlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"StorageSlotExtension.Uint256SlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualGetPoolConfigBits\",\"outputs\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetTokenDeltas\",\"outputs\":[{\"internalType\":\"TokenDeltaMappingSlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"manualInitializePoolReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualInternalSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualMintBufferShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"manualMintMinimumBufferSupplyReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualPausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualPauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualReentrancyAddLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyAddLiquidityToBuffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualReentrancyDisableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyInitializeBuffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualReentrancyRemoveLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyRemoveLiquidityFromBufferHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualReentrancySwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualRegisterPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"}],\"name\":\"manualRegisterPoolAtTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualRegisterPoolPassThruTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"manualRegisterPoolReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manualRegisterPoolWithSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualRemoveLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"updatedPoolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualSendToReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"manualSetAccountDelta\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"manualSetAddLiquidityCalledFlag\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateSwapFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateYieldFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"manualSetBufferAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferOwnerShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferTotalShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"manualSetHooksConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"}],\"name\":\"manualSetInitializedPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deltaCount\",\"type\":\"uint256\"}],\"name\":\"manualSetNonZeroDeltaCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"name\":\"manualSetPoolBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"manualSetPoolConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"PoolConfigBits\",\"name\":\"config\",\"type\":\"bytes32\"}],\"name\":\"manualSetPoolConfigBits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPoolCreator\",\"type\":\"address\"}],\"name\":\"manualSetPoolCreator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"manualSetPoolPauseWindowEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"manualSetPoolPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"manualSetPoolRegistered\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"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\":\"\",\"type\":\"tuple[]\"}],\"name\":\"manualSetPoolTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"name\":\"manualSetPoolTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualSetPoolTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"name\":\"manualSetPoolTokensAndBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"manualSetReservesOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"manualSetVaultPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"manualSetVaultState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualSettleReentrancy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingHint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedHint\",\"type\":\"uint256\"}],\"name\":\"manualSettleUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingHint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedHint\",\"type\":\"uint256\"}],\"name\":\"manualSettleWrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualUnpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualUnpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualUnsafeSetStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manualUpdateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"manualUpdatePoolDataLiveBalancesAndRates\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualWritePoolBalancesToStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manuallySetSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"mockEnsurePoolNotInRecoveryMode\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockIsUnlocked\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"mockWithInitializedPool\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"mockWithValidPercentage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInUnderlying\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutWrapped\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutWrapped\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUnderlying\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInWrapped\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutUnderlying\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutUnderlying\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInWrapped\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quoteAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"recoveryModeExit\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOutRaw\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountHint\",\"type\":\"uint256\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"name\":\"supplyCredit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debt\",\"type\":\"uint256\"}],\"name\":\"takeDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"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\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unguardedCheckNotEntered\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"unpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"newRawBalance\",\"type\":\"uint256\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"}],\"name\":\"updateLiveTokenBalanceInPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"One-fits-all solution for hardhat tests. Use the typechain type for errors, events and functions.\",\"errors\":{\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"details\":\"Caution should be exercised when adding liquidity because the Vault has the capability to transfer tokens from any user, given that it holds all allowances.\",\"params\":{\"params\":\"Parameters for the add liquidity (see above for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual amounts of input tokens\",\"bptAmountOut\":\"Output pool token amount\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"details\":\"The buffer needs to be initialized beforehand.\",\"params\":{\"exactSharesToIssue\":\"The value in underlying tokens that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingInRaw\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedInRaw\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens deposited into the buffer\"}},\"addLiquidityToBufferUnbalancedForTests(address,uint256,uint256)\":{\"details\":\"Adds liquidity to buffer unbalanced, so it can unbalance the buffer.\"},\"allowance(address,address,address)\":{\"params\":{\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\",\"token\":\"Address of the token\"},\"returns\":{\"tokenAllowance\":\"Amount of tokens the spender is allowed to spend\"}},\"approve(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to approve\",\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\"},\"returns\":{\"success\":\"True if successful, false otherwise\"}},\"areBuffersPaused()\":{\"details\":\"When buffers are paused, all buffer operations (i.e., calls on the Router with `isBuffer` true) will revert. Pausing buffers is reversible. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `isVaultPaused` to check the pause state of the Vault.\",\"returns\":{\"buffersPaused\":\"True if the Vault buffers are paused\"}},\"balanceOf(address,address)\":{\"params\":{\"account\":\"Address of the account\",\"token\":\"Address of the token\"},\"returns\":{\"tokenBalance\":\"Token balance of the account\"}},\"buildTokenConfig(address[],address[])\":{\"details\":\"Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\"},\"buildTokenConfig(address[],address[],bool[])\":{\"details\":\"Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\"},\"collectAggregateFees(address)\":{\"details\":\"Fees are sent to the ProtocolFeeController address.\",\"params\":{\"pool\":\"The pool on which all aggregate fees should be collected\"},\"returns\":{\"swapFeeAmounts\":\"An array with the total swap fees collected, sorted in token registration order\",\"yieldFeeAmounts\":\"An array with the total yield fees collected, sorted in token registration order\"}},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"details\":\"Reverts if the hook doesn't return the success flag set to `true`.\",\"params\":{\"pool\":\"The pool\",\"swapParams\":\"The swap parameters used to compute the fee\"},\"returns\":{\"dynamicSwapFeePercentage\":\"The dynamic swap fee percentage\"}},\"disableQuery()\":{\"details\":\"The query functions rely on a specific EVM feature to detect static calls. Query operations are exempt from settlement constraints, so it's critical that no state changes can occur. We retain the ability to disable queries in the unlikely event that EVM changes violate its assumptions (perhaps on an L2). This function can be acted upon as an emergency measure in ambiguous contexts where it's not 100% clear whether disabling queries is completely necessary; queries can still be re-enabled after this call.\"},\"disableQueryPermanently()\":{\"details\":\"Shall only be used when there is no doubt that queries pose a fundamental threat to the system.\"},\"disableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It re-syncs live balances (which could not be updated during Recovery Mode), forfeiting any yield fees that accrued while enabled. It makes external calls, and could potentially fail if there is an issue with any associated Rate Providers.\",\"params\":{\"pool\":\"The address of the pool\"}},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\"}},\"enableQuery()\":{\"details\":\"Only works if queries are not permanently disabled.\"},\"enableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It enables a safe proportional withdrawal, with no external calls. Since there are no external calls, ensuring that entering Recovery Mode cannot fail, we cannot compute and so must forfeit any yield fees between the last operation and enabling Recovery Mode. For the same reason, live balances cannot be updated while in Recovery Mode, as doing so might cause withdrawals to fail.\",\"params\":{\"pool\":\"The address of the pool\"}},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"details\":\"All parameters are given in raw token decimal encoding. It requires the buffer to be initialized, and uses the internal wrapped token buffer when it has enough liquidity to avoid external calls.\",\"params\":{\"params\":\"Parameters for the wrap/unwrap operation (see struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"actionId\":\"The computed actionId\"}},\"getAddLiquidityCalledFlag(address)\":{\"details\":\"Taxing remove liquidity proportional whenever liquidity was added in the same `unlock` call adds an extra layer of security, discouraging operations that try to undo others for profit. Remove liquidity proportional is the only standard way to exit a position without fees, and this flag is used to enable fees in that case. It also discourages indirect swaps via unbalanced add and remove proportional, as they are expected to be worse than a simple swap for every pool type.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"liquidityAdded\":\"True if liquidity has been added to this pool in the current transaction Note that there is no `sessionId` argument; it always returns the value for the current (i.e., latest) session.\"}},\"getAggregateSwapFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"swapFeeAmount\":\"The total amount of fees accumulated in the specified token\"}},\"getAggregateYieldFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"yieldFeeAmount\":\"The total amount of fees accumulated in the specified token\"}},\"getAuthorizer()\":{\"details\":\"The authorizer holds the permissions granted by governance. It is set on Vault deployment, and can be changed through a permissioned call.\",\"returns\":{\"authorizer\":\"Address of the authorizer contract\"}},\"getBptRate(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"rate\":\"BPT rate\"}},\"getBufferAsset(address)\":{\"details\":\"The asset can never change after buffer initialization.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingToken\":\"Address of the underlying token registered for the wrapper; `address(0)` if the buffer has not been initialized.\"}},\"getBufferBalance(address)\":{\"details\":\"All values are in native token decimals of the wrapped or underlying tokens.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingBalanceRaw\":\"Amount of underlying tokens deposited into the buffer, in native token decimals\",\"wrappedBalanceRaw\":\"Amount of wrapped tokens deposited into the buffer, in native token decimals\"}},\"getBufferMinimumTotalSupply()\":{\"details\":\"This prevents buffers from being completely drained. When the buffer is initialized, this minimum number of shares is added to the shares resulting from the initial deposit. Buffer total supply accounting is internal to the Vault, as buffers are not tokenized.\",\"returns\":{\"bufferMinimumTotalSupply\":\"The minimum total supply a buffer can have after initialization\"}},\"getBufferOwnerShares(address,address)\":{\"params\":{\"liquidityOwner\":\"Address of the user that owns liquidity in the wrapped token's buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"ownerShares\":\"Amount of shares allocated to the liquidity owner, in native underlying token decimals\"}},\"getBufferPeriodDuration()\":{\"details\":\"This value is immutable. It represents the period during which, if paused, the Vault will remain paused. This ensures there is time available to address whatever issue caused the Vault to be paused. Balancer timestamps are 32 bits.\",\"returns\":{\"bufferPeriodDuration\":\"The length of the buffer period in seconds\"}},\"getBufferPeriodEndTime()\":{\"details\":\"This value is immutable. If already paused, the Vault can be unpaused until this timestamp. Balancer timestamps are 32 bits.\",\"returns\":{\"bufferPeriodEndTime\":\"The timestamp after which the Vault remains permanently unpaused\"}},\"getBufferTotalShares(address)\":{\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"bufferShares\":\"Amount of supply shares of the buffer, in native underlying token decimals\"}},\"getCurrentLiveBalances(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getERC4626BufferAsset(address)\":{\"details\":\"To avoid malicious wrappers (e.g., that might potentially change their asset after deployment), routers should never call `wrapper.asset()` directly, at least without checking it against the asset registered with the Vault on initialization.\",\"params\":{\"wrappedToken\":\"The wrapped token specifying the buffer\"},\"returns\":{\"asset\":\"The underlying asset of the wrapped token\"}},\"getHooksConfig(address)\":{\"details\":\"The `HooksConfig` contains flags indicating which pool hooks are implemented.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"hooksConfig\":\"The hooks configuration as a `HooksConfig` struct\"}},\"getMaximumPoolTokens()\":{\"returns\":{\"maxTokens\":\"The maximum token count of a pool\"}},\"getMinimumPoolTokens()\":{\"details\":\"We expect the vast majority of pools to be 2-token.\",\"returns\":{\"minTokens\":\"The minimum token count of a pool\"}},\"getMinimumTradeAmount()\":{\"details\":\"This limit is applied to the 18-decimal \\\"upscaled\\\" amount in any operation (swap, add/remove liquidity).\",\"returns\":{\"minimumTradeAmount\":\"The minimum trade amount as an 18-decimal floating point number\"}},\"getMinimumWrapAmount()\":{\"details\":\"This limit is applied to the wrap operation amount, in native underlying token decimals.\",\"returns\":{\"minimumWrapAmount\":\"The minimum wrap amount in native underlying token decimals\"}},\"getNonzeroDeltaCount()\":{\"returns\":{\"nonzeroDeltaCount\":\"The current value of `_nonzeroDeltaCount`\"}},\"getPauseWindowEndTime()\":{\"details\":\"This value is immutable, and represents the timestamp after which the Vault can no longer be paused by governance. Balancer timestamps are 32 bits.\",\"returns\":{\"pauseWindowEndTime\":\"The timestamp when the Vault's pause window ends\"}},\"getPoolConfig(address)\":{\"details\":\"The `PoolConfig` contains liquidity management and other state flags, fee percentages, the pause window.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"poolConfig\":\"The pool configuration as a `PoolConfig` struct\"}},\"getPoolData(address)\":{\"details\":\"This contains the pool configuration (flags), tokens and token types, rates, scaling factors, and balances.\",\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"poolData\":\"The `PoolData` result\"}},\"getPoolMinimumTotalSupply()\":{\"details\":\"This prevents pools from being completely drained. When the pool is initialized, this minimum amount of BPT is minted to the zero address. This is an 18-decimal floating point number; BPT are always 18 decimals.\",\"returns\":{\"poolMinimumTotalSupply\":\"The minimum total supply a pool can have after initialization\"}},\"getPoolPausedState(address)\":{\"details\":\"Note that even when set to a paused state, the pool will automatically unpause at the end of the buffer period. Balancer timestamps are 32 bits.\",\"params\":{\"pool\":\"The pool whose data is requested\"},\"returns\":{\"pauseManager\":\"The pause manager, or the zero address\",\"poolBufferPeriodEndTime\":\"The timestamp after which the Pool unpauses itself (if paused)\",\"poolPauseWindowEndTime\":\"The timestamp of the end of the Pool's pause window\",\"poolPaused\":\"True if the Pool is paused\"}},\"getPoolRoleAccounts(address)\":{\"params\":{\"pool\":\"The address of the pool whose roles are being queried\"},\"returns\":{\"roleAccounts\":\"A struct containing the role accounts for the pool (or 0 if unassigned)\"}},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"details\":\"Reverts if the pool is not registered, or if the token does not belong to the pool.\",\"params\":{\"pool\":\"Address of the pool\",\"token\":\"Address of the token\"},\"returns\":{\"index\":\"Index corresponding to the given token in the pool's token list\",\"tokenCount\":\"Number of tokens in the pool\"}},\"getPoolTokenInfo(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"The pool tokens, sorted in registration order\"}},\"getPoolTokenRates(address)\":{\"details\":\"This function performs external calls if tokens are yield-bearing. All returned arrays are in token registration order.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"decimalScalingFactors\":\"Conversion factor used to adjust for token decimals for uniform precision in calculations. FP(1) for 18-decimal tokens\",\"tokenRates\":\"18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\"}},\"getPoolTokens(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"tokens\":\"List of tokens in the pool\"}},\"getProtocolFeeController()\":{\"returns\":{\"protocolFeeController\":\"Address of the ProtocolFeeController\"}},\"getReservesOf(address)\":{\"params\":{\"token\":\"The token for which to retrieve the reserve\"},\"returns\":{\"reserveAmount\":\"The amount of reserves for the given token\"}},\"getStaticSwapFeePercentage(address)\":{\"params\":{\"pool\":\"The address of the pool whose static swap fee percentage is being queried\"},\"returns\":{\"swapFeePercentage\":\"The current static swap fee percentage for the specified pool\"}},\"getTokenDelta(address)\":{\"details\":\"This function allows reading the value from the `_tokenDeltas` mapping.\",\"params\":{\"token\":\"The token for which the delta is being fetched\"},\"returns\":{\"tokenDelta\":\"The delta of the specified token\"}},\"getVaultAdmin()\":{\"details\":\"The VaultAdmin contract mostly implements permissioned functions.\",\"returns\":{\"vaultAdmin\":\"The address of the Vault admin\"}},\"getVaultExtension()\":{\"details\":\"Function is in the main Vault contract. The VaultExtension handles less critical or frequently used functions, since delegate calls through the Vault are more expensive than direct calls.\",\"returns\":{\"vaultExtension\":\"Address of the VaultExtension\"}},\"getVaultPausedState()\":{\"details\":\"Balancer timestamps are 32 bits.\",\"returns\":{\"vaultBufferPeriodEndTime\":\"The timestamp of the end of the Vault's buffer period\",\"vaultPauseWindowEndTime\":\"The timestamp of the end of the Vault's pause window\",\"vaultPaused\":\"True if the Vault is paused\"}},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"pool\":\"Address of the pool to initialize\",\"to\":\"Address that will receive the output BPT\",\"tokens\":\"Tokens used to seed the pool (must match the registered tokens)\",\"userData\":\"Additional (optional) data required for adding initial liquidity\"},\"returns\":{\"bptAmountOut\":\"Output pool token amount\"}},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"params\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens that will be deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts. (it is the BPT of an internal ERC4626 buffer). It is expressed in underlying token native decimals.\"}},\"isERC4626BufferInitialized(address)\":{\"details\":\"An initialized buffer should have an asset registered in the Vault.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"isBufferInitialized\":\"True if the ERC4626 buffer is initialized\"}},\"isPoolInRecoveryMode(address)\":{\"details\":\"Recovery Mode enables a safe proportional withdrawal path, with no external calls.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"inRecoveryMode\":\"True if the pool is in Recovery Mode, false otherwise\"}},\"isPoolInitialized(address)\":{\"details\":\"An initialized pool can be considered registered as well.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"initialized\":\"True if the pool is initialized, false otherwise\"}},\"isPoolPaused(address)\":{\"details\":\"If a pool is paused, all non-Recovery Mode state-changing operations will revert.\",\"params\":{\"pool\":\"The pool to be checked\"},\"returns\":{\"poolPaused\":\"True if the pool is paused\"}},\"isPoolRegistered(address)\":{\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"registered\":\"True if the pool is registered, false otherwise\"}},\"isQueryDisabled()\":{\"details\":\"If true, queries might either be disabled temporarily or permanently.\",\"returns\":{\"queryDisabled\":\"True if query functionality is reversibly disabled\"}},\"isQueryDisabledPermanently()\":{\"details\":\"This is a one-way switch. Once queries are disabled permanently, they can never be re-enabled.\",\"returns\":{\"queryDisabledPermanently\":\"True if query functionality is permanently disabled\"}},\"isUnlocked()\":{\"details\":\"The Vault must be unlocked to perform state-changing liquidity operations.\",\"returns\":{\"unlocked\":\"True if the Vault is unlocked, false otherwise\"}},\"isVaultPaused()\":{\"details\":\"If the Vault is paused, all non-Recovery Mode state-changing operations on pools will revert. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `areBuffersPaused` to check the pause state of the buffers.\",\"returns\":{\"vaultPaused\":\"True if the Vault is paused\"}},\"manualUnsafeSetStaticSwapFeePercentage(address,uint256)\":{\"details\":\"Does not check the value against any min/max limits normally enforced by the pool.\"},\"pausePool(address)\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during pool factory deployment.\",\"params\":{\"pool\":\"The pool being paused\"}},\"pauseVault()\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during deployment. Note that ERC4626 buffer operations have an independent pause mechanism, which is not affected by pausing the Vault. Custom routers could still wrap/unwrap using buffers while the Vault is paused, unless buffers are also paused (with `pauseVaultBuffers`).\"},\"pauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. Currently it's not possible to pause vault buffers individually. This is a permissioned call, and is reversible (see `unpauseVaultBuffers`). Note that the Vault has a separate and independent pausing mechanism. It is possible to pause the Vault (i.e. pool operations), without affecting buffers, and vice versa.\"},\"quote(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}},\"quoteAndRevert(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled. This call always reverts, returning the result in the revert reason.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"}},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"details\":\"A pool can opt-out of pausing by providing a zero value for the pause window, or allow pausing indefinitely by providing a large value. (Pool pause windows are not limited by the Vault maximums.) The vault defines an additional buffer period during which a paused pool will stay paused. After the buffer period passes, a paused pool will automatically unpause. Balancer timestamps are 32 bits. A pool can opt out of Balancer governance pausing by providing a custom `pauseManager`. This might be a multi-sig contract or an arbitrary smart contract with its own access controls, that forwards calls to the Vault. If the zero address is provided for the `pauseManager`, permissions for pausing the pool will default to the authorizer.\",\"params\":{\"liquidityManagement\":\"Liquidity management flags with implemented methods\",\"pauseWindowEndTime\":\"The timestamp after which it is no longer possible to pause the pool\",\"pool\":\"The address of the pool being registered\",\"poolHooksContract\":\"Contract that implements the hooks for the pool\",\"protocolFeeExempt\":\"If true, the pool's initial aggregate fees will be set to 0\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The initial static swap fee percentage of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"details\":\"Trusted routers can burn pool tokens belonging to any user and require no prior approval from the user. Untrusted routers require prior approval from the user. This is the only function allowed to call _queryModeBalanceIncrease (and only in a query context).\",\"params\":{\"params\":\"Parameters for the remove liquidity (see above for struct definition)\"},\"returns\":{\"amountsOut\":\"Actual amounts of output tokens\",\"bptAmountIn\":\"Actual amount of BPT burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Only proportional exits are supported, and the sender has to be the owner of the shares. This function unlocks the Vault just for this operation; it does not work with a Router as an entrypoint. Pre-conditions: - The buffer needs to be initialized. - sharesOwner is the original msg.sender, it needs to be checked in the Router. That's why this call is authenticated; only routers approved by the DAO can remove the liquidity of a buffer. - The buffer needs to have some liquidity and have its asset registered in `_bufferAssets` storage.\",\"params\":{\"minAmountUnderlyingOutRaw\":\"Minimum amount of underlying tokens to receive from the buffer. It is expressed in underlying token native decimals\",\"minAmountWrappedOutRaw\":\"Minimum amount of wrapped tokens to receive from the buffer. It is expressed in wrapped token native decimals\",\"sharesToRemove\":\"Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's total shares. It is expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceRaw\":\"Amount of underlying tokens returned to the user\",\"removedWrappedBalanceRaw\":\"Amount of wrapped tokens returned to the user\"}},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Input pool token amount\",\"from\":\"Address of user to burn pool tokens from\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the pool\"},\"returns\":{\"amountsOut\":\"Actual calculated amounts of output tokens, sorted in token registration order\"}},\"sendTo(address,address,uint256)\":{\"details\":\"There is no inverse operation for this function. Transfer funds to the Vault and call `settle` to cancel debts.\",\"params\":{\"amount\":\"Amount of tokens to send\",\"to\":\"Recipient address\",\"token\":\"Address of the token\"}},\"setAuthorizer(address)\":{\"details\":\"This is a permissioned call. Emits an `AuthorizerChanged` event.\",\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"setProtocolFeeController(address)\":{\"details\":\"This is a permissioned call. Emits a `ProtocolFeeControllerChanged` event.\",\"params\":{\"newProtocolFeeController\":\"The address of the new Protocol Fee Controller\"}},\"setStaticSwapFeePercentage(address,uint256)\":{\"details\":\"This is a permissioned function, disabled if the pool is paused. The swap fee percentage must be within the bounds specified by the pool's implementation of `ISwapFeePercentageBounds`. Emits the SwapFeePercentageChanged event.\",\"params\":{\"pool\":\"The address of the pool for which the static swap fee will be changed\",\"swapFeePercentage\":\"The new swap fee percentage to apply to the pool\"}},\"settle(address,uint256)\":{\"details\":\"Protects the caller against leftover dust in the Vault for the token being settled. The caller should know in advance how many tokens were paid to the Vault, so it can provide it as a hint to discard any excess in the Vault balance. If the given hint is equal to or higher than the difference in reserves, the difference in reserves is given as credit to the caller. If it's higher, the caller sent fewer tokens than expected, so settlement would fail. If the given hint is lower than the difference in reserves, the hint is given as credit to the caller. In this case, the excess would be absorbed by the Vault (and reflected correctly in the reserves), but would not affect settlement. The credit supplied by the Vault can be calculated as `min(reserveDifference, amountHint)`, where the reserve difference equals current balance of the token minus existing reserves of the token when the function is called.\",\"params\":{\"amountHint\":\"Amount paid as reported by the caller\",\"token\":\"Address of the token\"},\"returns\":{\"credit\":\"Credit received in return of the payment\"}},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"details\":\"All parameters are given in raw token decimal encoding.\",\"params\":{\"vaultSwapParams\":\"Parameters for the swap (see above for struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"totalSupply(address)\":{\"params\":{\"token\":\"The token address\"},\"returns\":{\"tokenTotalSupply\":\"Total supply of the token\"}},\"transfer(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"owner\":\"Address of the owner\",\"to\":\"Address of the recipient\"},\"returns\":{\"_0\":\"success True if successful, false otherwise\"}},\"transferFrom(address,address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"from\":\"Address of the sender\",\"spender\":\"Address allowed to perform the transfer\",\"to\":\"Address of the recipient\"},\"returns\":{\"success\":\"True if successful, false otherwise\"}},\"unlock(bytes)\":{\"details\":\"Performs a callback on msg.sender with arguments provided in `data`. The Callback is `transient`, meaning all balances for the caller have to be settled at the end.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}},\"unpausePool(address)\":{\"details\":\"This is a permissioned function that will only work on a paused Pool within the Buffer Period set during deployment. Note that the Pool will automatically unpause after the Buffer Period expires.\",\"params\":{\"pool\":\"The pool being unpaused\"}},\"unpauseVault()\":{\"details\":\"This is a permissioned function that will only work on a paused Vault within the Buffer Period set during deployment. Note that the Vault will automatically unpause after the Buffer Period expires. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing the Vault does not reverse `pauseVaultBuffers`. If buffers were also paused, they will remain in that state until explicitly unpaused.\"},\"unpauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing buffers does not reverse `pauseVault`. If the Vault was also paused, it will remain in that state until explicitly unpaused. This is a permissioned call.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateSwapFeePercentageChanged` event.\",\"params\":{\"newAggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose swap fee percentage will be updated\"}},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateYieldFeePercentageChanged` event.\",\"params\":{\"newAggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose yield fee percentage will be updated\"}},\"vault()\":{\"returns\":{\"_0\":\"vault The main Vault address.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"notice\":\"Adds liquidity to a pool.\"},\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Adds liquidity to an internal ERC4626 buffer in the Vault, proportionally.\"},\"allowance(address,address,address)\":{\"notice\":\"Gets the allowance of a spender for a given ERC20 token and owner.\"},\"approve(address,address,uint256)\":{\"notice\":\"Approves a spender to spend pool tokens on behalf of sender.\"},\"areBuffersPaused()\":{\"notice\":\"Indicates whether the Vault buffers are paused.\"},\"balanceOf(address,address)\":{\"notice\":\"Gets the balance of an account for a given ERC20 token.\"},\"collectAggregateFees(address)\":{\"notice\":\"Collects accumulated aggregate swap and yield fees for the specified pool.\"},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Query the current dynamic swap fee percentage of a pool, given a set of swap parameters.\"},\"disableQuery()\":{\"notice\":\"Disables query functionality on the Vault. Can only be called by governance.\"},\"disableQueryPermanently()\":{\"notice\":\"Disables query functionality permanently on the Vault. Can only be called by governance.\"},\"disableRecoveryMode(address)\":{\"notice\":\"Disable recovery mode for a pool.\"},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"enableQuery()\":{\"notice\":\"Enables query functionality on the Vault. Can only be called by governance.\"},\"enableRecoveryMode(address)\":{\"notice\":\"Enable recovery mode for a pool.\"},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"notice\":\"Wraps/unwraps tokens based on the parameters provided.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAddLiquidityCalledFlag(address)\":{\"notice\":\"This flag is used to detect and tax \\\"round-trip\\\" interactions (adding and removing liquidity in the same pool).\"},\"getAggregateSwapFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated swap fees (including aggregate fees) in `token` collected by the pool.\"},\"getAggregateYieldFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated yield fees (including aggregate fees) in `token` collected by the pool.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer address.\"},\"getBptRate(address)\":{\"notice\":\"The current rate of a pool token (BPT) = invariant / totalSupply.\"},\"getBufferAsset(address)\":{\"notice\":\"Returns the asset registered for a given wrapped token.\"},\"getBufferBalance(address)\":{\"notice\":\"Returns the amount of underlying and wrapped tokens deposited in the internal buffer of the Vault.\"},\"getBufferMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of an ERC4626 wrapped token buffer in the Vault.\"},\"getBufferOwnerShares(address,address)\":{\"notice\":\"Returns the shares (internal buffer BPT) of a liquidity owner: a user that deposited assets in the buffer.\"},\"getBufferPeriodDuration()\":{\"notice\":\"Returns the Vault's buffer period duration.\"},\"getBufferPeriodEndTime()\":{\"notice\":\"Returns the Vault's buffer period end time.\"},\"getBufferTotalShares(address)\":{\"notice\":\"Returns the supply shares (internal buffer BPT) of the ERC4626 buffer.\"},\"getCurrentLiveBalances(address)\":{\"notice\":\"Gets current live balances of a given pool (fixed-point, 18 decimals), corresponding to its tokens in registration order.\"},\"getERC4626BufferAsset(address)\":{\"notice\":\"Gets the registered asset for a given buffer.\"},\"getHooksConfig(address)\":{\"notice\":\"Gets the hooks configuration parameters of a pool.\"},\"getMaximumPoolTokens()\":{\"notice\":\"Get the maximum number of tokens in a pool.\"},\"getMinimumPoolTokens()\":{\"notice\":\"Get the minimum number of tokens in a pool.\"},\"getMinimumTradeAmount()\":{\"notice\":\"Get the minimum trade amount in a pool operation.\"},\"getMinimumWrapAmount()\":{\"notice\":\"Get the minimum wrap amount in a buffer operation.\"},\"getNonzeroDeltaCount()\":{\"notice\":\"Returns the count of non-zero deltas.\"},\"getPauseWindowEndTime()\":{\"notice\":\"Returns the Vault's pause window end time.\"},\"getPoolConfig(address)\":{\"notice\":\"Gets the configuration parameters of a pool.\"},\"getPoolData(address)\":{\"notice\":\"Returns comprehensive pool data for the given pool.\"},\"getPoolMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of pool tokens (BPT) for an initialized pool.\"},\"getPoolPausedState(address)\":{\"notice\":\"Returns the paused status, and end times of the Pool's pause window and buffer period.\"},\"getPoolRoleAccounts(address)\":{\"notice\":\"Fetches the role accounts for a given pool (pause manager, swap manager, pool creator)\"},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"notice\":\"Gets the index of a token in a given pool.\"},\"getPoolTokenInfo(address)\":{\"notice\":\"Gets the raw data for a pool: tokens, raw balances, scaling factors.\"},\"getPoolTokenRates(address)\":{\"notice\":\"Gets pool token rates.\"},\"getPoolTokens(address)\":{\"notice\":\"Gets the tokens registered to a pool.\"},\"getProtocolFeeController()\":{\"notice\":\"Returns the Protocol Fee Controller address.\"},\"getReservesOf(address)\":{\"notice\":\"Retrieves the reserve (i.e., total Vault balance) of a given token.\"},\"getStaticSwapFeePercentage(address)\":{\"notice\":\"Fetches the static swap fee percentage for a given pool.\"},\"getTokenDelta(address)\":{\"notice\":\"Retrieves the token delta for a specific token.\"},\"getVaultAdmin()\":{\"notice\":\"Returns the VaultAdmin contract address.\"},\"getVaultExtension()\":{\"notice\":\"Returns the VaultExtension contract address.\"},\"getVaultPausedState()\":{\"notice\":\"Returns the paused status, and end times of the Vault's pause window and buffer period.\"},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"notice\":\"Initializes a registered pool by adding liquidity; mints BPT tokens for the first time in exchange.\"},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Initializes buffer for the given wrapped token.\"},\"isERC4626BufferInitialized(address)\":{\"notice\":\"Checks if the wrapped token has an initialized buffer in the Vault.\"},\"isPoolInRecoveryMode(address)\":{\"notice\":\"Checks whether a pool is in Recovery Mode.\"},\"isPoolInitialized(address)\":{\"notice\":\"Checks whether a pool is initialized.\"},\"isPoolPaused(address)\":{\"notice\":\"Indicates whether a pool is paused.\"},\"isPoolRegistered(address)\":{\"notice\":\"Checks whether a pool is registered.\"},\"isQueryDisabled()\":{\"notice\":\"Returns true if queries are disabled on the Vault.\"},\"isQueryDisabledPermanently()\":{\"notice\":\"Returns true if queries are disabled permanently; false if they are enabled.\"},\"isUnlocked()\":{\"notice\":\"Returns whether the Vault is unlocked (i.e., executing an operation).\"},\"isVaultPaused()\":{\"notice\":\"Indicates whether the Vault is paused.\"},\"pausePool(address)\":{\"notice\":\"Pause the Pool: an emergency action which disables all pool functions.\"},\"pauseVault()\":{\"notice\":\"Pause the Vault: an emergency action which disables all operational state-changing functions on pools.\"},\"pauseVaultBuffers()\":{\"notice\":\"Pauses native vault buffers globally.\"},\"quote(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"quoteAndRevert(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"notice\":\"Registers a pool, associating it with its factory and the tokens it manages.\"},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"notice\":\"Removes liquidity from a pool.\"},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Removes liquidity from an internal ERC4626 buffer in the Vault.\"},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"notice\":\"Remove liquidity from a pool specifying exact pool tokens in, with proportional token amounts out. The request is implemented by the Vault without any interaction with the pool, ensuring that it works the same for all pools, and cannot be disabled by a new pool type.\"},\"sendTo(address,address,uint256)\":{\"notice\":\"Sends tokens to a recipient.\"},\"setAuthorizer(address)\":{\"notice\":\"Sets a new Authorizer for the Vault.\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets a new Protocol Fee Controller for the Vault.\"},\"setStaticSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new static swap fee percentage to the specified pool.\"},\"settle(address,uint256)\":{\"notice\":\"Settles deltas for a token; must be successful for the current lock to be released.\"},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"notice\":\"Swaps tokens based on provided parameters.\"},\"totalSupply(address)\":{\"notice\":\"Gets the total supply of a given ERC20 token.\"},\"transfer(address,address,uint256)\":{\"notice\":\"Transfers pool token from owner to a recipient.\"},\"transferFrom(address,address,address,uint256)\":{\"notice\":\"Transfers pool token from a sender to a recipient using an allowance.\"},\"unlock(bytes)\":{\"notice\":\"Creates a context for a sequence of operations (i.e., \\\"unlocks\\\" the Vault).\"},\"unpausePool(address)\":{\"notice\":\"Reverse a `pause` operation, and restore the Pool to normal functionality.\"},\"unpauseVault()\":{\"notice\":\"Reverse a `pause` operation, and restore Vault pool operations to normal functionality.\"},\"unpauseVaultBuffers()\":{\"notice\":\"Unpauses native vault buffers globally.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate swap fee percentage.\"},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate yield fee percentage.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol\":\"IVaultMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol\":{\"keccak256\":\"0x51d1502369f0bb1fec58b7aa848f20e6ea3ddcb4866471e2fdbe96f0f6783fb5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ab9f73ec13f137f3103edf9caa8edc4752db585393cc7db6c62f85a1efdbfb5e\",\"dweb:/ipfs/QmXBoBF18c1f33NYqPmrJ3cqULMak55uznBvzfpf1bHpDd\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol\":{\"keccak256\":\"0x18c434c91bbcd260bd305f2cdc01684a3040bc633c1b185f95cb323a336ac76c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://270260ba29c81dc6d862a0830ccbbdcd81b4543bd9c9b54228493a92568532d4\",\"dweb:/ipfs/QmTHp7v5dGwLujPRaWkoEM22Loy3MuspodMGcm4syAPUvk\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol\":{\"keccak256\":\"0x086e3fda1fa00d50747c9f88711024e107a894904b9ff996fade91f8da326baa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8712c4f68cc951446482c289250ee6ea15c0028bb9b9d82c69d6793aa8dd1ae2\",\"dweb:/ipfs/QmSmz5XkvCDQ4NZ32evpxCvGkYnGbygCn5BP2xwvz2hQgi\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol\":{\"keccak256\":\"0x66a706de1a8eb2836d3a6f41ce8b05b244169c42ff5f947affd885b34c722bd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://88e094f387cf6886b7f9764acaf37b3aa278a1a1fb2dc748d29a791b9fe742d9\",\"dweb:/ipfs/QmdaNH3JjqcpgjvNKG4XVbEbJC9wuhH6gwtv8nifGsBmi4\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol\":{\"keccak256\":\"0xb59762a929624826418e57ef85207703bedfbab512eeb422fd16d40520ab05d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f6363f3ac816ff34ac5b78a564ed0febc9772d1dc130674e73db0a63b29273d\",\"dweb:/ipfs/QmSbmTTFb4vGqHSGQu974CHu146pCfzJRGFMxyN8ujopf7\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol":{"IVaultStorageMock":{"abi":[{"inputs":[],"name":"manualGetIsUnlocked","outputs":[{"internalType":"StorageSlotExtension.BooleanSlotType","name":"slot","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualGetNonzeroDeltaCount","outputs":[{"internalType":"StorageSlotExtension.Uint256SlotType","name":"slot","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualGetTokenDeltas","outputs":[{"internalType":"TokenDeltaMappingSlotType","name":"slot","type":"bytes32"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"manualGetIsUnlocked()":"b2469499","manualGetNonzeroDeltaCount()":"155075e6","manualGetTokenDeltas()":"1f4475c5"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"manualGetIsUnlocked\",\"outputs\":[{\"internalType\":\"StorageSlotExtension.BooleanSlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"StorageSlotExtension.Uint256SlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetTokenDeltas\",\"outputs\":[{\"internalType\":\"TokenDeltaMappingSlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol\":\"IVaultStorageMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol\":{\"keccak256\":\"0xb59762a929624826418e57ef85207703bedfbab512eeb422fd16d40520ab05d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f6363f3ac816ff34ac5b78a564ed0febc9772d1dc130674e73db0a63b29273d\",\"dweb:/ipfs/QmSbmTTFb4vGqHSGQu974CHu146pCfzJRGFMxyN8ujopf7\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol":{"IAuthorizer":{"abi":[{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"params\":{\"account\":\"Account trying to perform the action\",\"actionId\":\"Identifier for the action to be performed\",\"where\":\"Target contract for the action\"},\"returns\":{\"success\":\"True if the action is permitted\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"notice\":\"Returns true if `account` can perform the action described by `actionId` in the contract `where`.\"}},\"notice\":\"Interface to the Vault's permission system.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":\"IAuthorizer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol":{"IBasePool":{"abi":[{"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[]"},{"internalType":"enum Rounding","name":"rounding","type":"uint8"}],"name":"computeInvariant","outputs":[{"internalType":"uint256","name":"invariant","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumInvariantRatio","outputs":[{"internalType":"uint256","name":"maximumInvariantRatio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"maximumSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumInvariantRatio","outputs":[{"internalType":"uint256","name":"minimumInvariantRatio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"minimumSwapFeePercentage","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":"params","type":"tuple"}],"name":"onSwap","outputs":[{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"computeBalance(uint256[],uint256,uint256)":"16a0b3e0","computeInvariant(uint256[],uint8)":"984de9e8","getMaximumInvariantRatio()":"273c1adf","getMaximumSwapFeePercentage()":"654cf15d","getMinimumInvariantRatio()":"b677fa56","getMinimumSwapFeePercentage()":"ce20ece7","onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))":"72c98186"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"rounding\",\"type\":\"uint8\"}],\"name\":\"computeInvariant\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"invariant\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumInvariantRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maximumInvariantRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maximumSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumInvariantRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumInvariantRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumSwapFeePercentage\",\"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\":\"params\",\"type\":\"tuple\"}],\"name\":\"onSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All pool types should implement this interface. Note that it also requires implementation of: - `ISwapFeePercentageBounds` to specify the minimum and maximum swap fee percentages. - `IUnbalancedLiquidityInvariantRatioBounds` to specify how much the invariant can change during an unbalanced liquidity operation.\",\"kind\":\"dev\",\"methods\":{\"computeBalance(uint256[],uint256,uint256)\":{\"details\":\"Similar to V2's `_getTokenBalanceGivenInvariantAndAllOtherBalances` in StableMath. The pool must round up for the Vault to round in the protocol's favor when calling this function.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"tokenInIndex\":\"The index of the token we're computing the balance for, sorted in token registration order\"},\"returns\":{\"newBalance\":\"The new balance of the selected token, after the operation\"}},\"computeInvariant(uint256[],uint8)\":{\"details\":\"This function computes the invariant based on current balances (and potentially other pool state). The rounding direction must be respected for the Vault to round in the pool's favor when calling this function. If the invariant computation involves no precision loss (e.g. simple sum of balances), the same result can be returned for both rounding directions. You can think of the invariant as a measure of the \\\"value\\\" of the pool, which is related to the total liquidity (i.e., the \\\"BPT rate\\\" is `invariant` / `totalSupply`). Two critical properties must hold: 1) The invariant should not change due to a swap. In practice, it can *increase* due to swap fees, which effectively add liquidity after the swap - but it should never decrease. 2) The invariant must be \\\"linear\\\"; i.e., increasing the balances proportionally must increase the invariant in the same proportion: inv(a * n, b * n, c * n) = inv(a, b, c) * n Property #1 is required to prevent \\\"round trip\\\" paths that drain value from the pool (and all LP shareholders). Intuitively, an accurate pricing algorithm ensures the user gets an equal value of token out given token in, so the total value should not change. Property #2 is essential for the \\\"fungibility\\\" of LP shares. If it did not hold, then different users depositing the same total value would get a different number of LP shares. In that case, LP shares would not be interchangeable, as they must be in a fair DEX.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"rounding\":\"Rounding direction to consider when computing the invariant\"},\"returns\":{\"invariant\":\"The calculated invariant of the pool, represented as a uint256\"}},\"getMaximumInvariantRatio()\":{\"returns\":{\"maximumInvariantRatio\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMaximumSwapFeePercentage()\":{\"returns\":{\"maximumSwapFeePercentage\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"minimumInvariantRatio\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"minimumSwapFeePercentage\":\"The minimum swap fee percentage for a pool\"}},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"params\":{\"params\":\"Swap parameters (see above for struct definition)\"},\"returns\":{\"amountCalculatedScaled18\":\"Calculated amount for the swap operation\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"computeBalance(uint256[],uint256,uint256)\":{\"notice\":\"Computes a new token balance, given the invariant growth ratio and all other balances.\"},\"computeInvariant(uint256[],uint8)\":{\"notice\":\"Computes the pool's invariant.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Execute a swap in the pool.\"}},\"notice\":\"Base interface for a Balancer Pool.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":\"IBasePool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol":{"IBasePoolFactory":{"abi":[{"inputs":[],"name":"Disabled","type":"error"},{"inputs":[],"name":"IndexOutOfBounds","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"constructorArgs","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"getDeploymentAddress","outputs":[{"internalType":"address","name":"deploymentAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolCount","outputs":[{"internalType":"uint256","name":"poolCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getPoolsInRange","outputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getDeploymentAddress(bytes,bytes32)":"44f6fec7","getPoolCount()":"8eec5d70","getPools()":"673a2a1f","getPoolsInRange(uint256,uint256)":"53a72f7e","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Disabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeploymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deploymentAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPoolsInRange\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All pool factories should be derived from `BasePoolFactory` to enable common behavior for all pool types (e.g., address prediction, tracking deployed pools, and governance-facilitated migration).\",\"events\":{\"PoolCreated(address)\":{\"params\":{\"pool\":\"The address of the new pool\"}}},\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"actionId\":\"The computed actionId\"}},\"getDeploymentAddress(bytes,bytes32)\":{\"params\":{\"constructorArgs\":\"The arguments used to create the pool\",\"salt\":\"The salt used to deploy the pool\"},\"returns\":{\"deploymentAddress\":\"The predicted address of the pool, given the salt\"}},\"getPoolCount()\":{\"details\":\"This can then be used to \\\"paginate\\\" calls to `getPools` to control gas costs.\",\"returns\":{\"poolCount\":\"The number of pools deployed by this factory\"}},\"getPools()\":{\"returns\":{\"pools\":\"The list of pools deployed by this factory\"}},\"getPoolsInRange(uint256,uint256)\":{\"details\":\"`start` must be a valid index, but if `count` exceeds the total length, it will not revert, but simply stop at the end and return fewer results than requested.\",\"params\":{\"count\":\"The maximum number of pools to return\",\"start\":\"The index of the first pool to return\"},\"returns\":{\"pools\":\"The list of pools deployed by this factory, starting at `start` and returning up to `count` pools\"}},\"isDisabled()\":{\"returns\":{\"success\":\"True if this factory was disabled\"}},\"isPoolFromFactory(address)\":{\"params\":{\"pool\":\"The pool to check\"},\"returns\":{\"success\":\"True if `pool` was created by this factory\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Disabled()\":[{\"notice\":\"Attempted pool creation after the factory was disabled.\"}],\"IndexOutOfBounds()\":[{\"notice\":\"A pool index is beyond the current bounds of the array.\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}]},\"events\":{\"FactoryDisabled()\":{\"notice\":\"The factory was disabled by governance.\"},\"PoolCreated(address)\":{\"notice\":\"A pool was deployed.\"}},\"kind\":\"user\",\"methods\":{\"disable()\":{\"notice\":\"Disable the factory, preventing the creation of more pools.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getDeploymentAddress(bytes,bytes32)\":{\"notice\":\"Return the address where a new pool will be deployed, based on the factory address and salt.\"},\"getPoolCount()\":{\"notice\":\"Return the total number of pools deployed by this factory.\"},\"getPools()\":{\"notice\":\"Return the complete list of pools deployed by this factory.\"},\"getPoolsInRange(uint256,uint256)\":{\"notice\":\"Return a subset of the list of pools deployed by this factory.\"},\"isDisabled()\":{\"notice\":\"Check whether this factory has been disabled by governance.\"},\"isPoolFromFactory(address)\":{\"notice\":\"Check whether a pool was deployed by this factory.\"}},\"notice\":\"Base interface for a Balancer Pool Factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\":\"IBasePoolFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\":{\"keccak256\":\"0x6f8c558b0520faae0c4576f30225b5a97821a4cd210878a0ba10c102a2f753f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b40aa7a5ee39fa2e297c684fd29ad45d866f1fc61cd997120a417b02a4d908aa\",\"dweb:/ipfs/QmYP5pQAF7SDLgy3aerqfnc4VwdmfQix2jcQUNL3o83BY9\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol":{"IBatchRouter":{"abi":[{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"e3b5dff4","querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"2950286e","swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"286f580d","swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"8eb1b65e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"details\":\"Min amounts out specified in the paths are ignored.\",\"params\":{\"paths\":\"Swap paths from token in to token out, specifying exact amounts in\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data required for the query\"},\"returns\":{\"amountsOut\":\"Calculated amounts of output tokens to be received, ordered by output token address\",\"pathAmountsOut\":\"Calculated amounts of output tokens corresponding to the last step of each given path\",\"tokensOut\":\"Output token addresses\"}},\"querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"details\":\"Max amounts in specified in the paths are ignored.\",\"params\":{\"paths\":\"Swap paths from token in to token out, specifying exact amounts out\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data required for the query\"},\"returns\":{\"amountsIn\":\"Calculated amounts of input tokens to be received, ordered by input token address\",\"pathAmountsIn\":\"Calculated amounts of input tokens corresponding to the last step of each given path\",\"tokensIn\":\"Input token addresses\"}},\"swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"paths\":\"Swap paths from token in to token out, specifying exact amounts in\",\"userData\":\"Additional (optional) data required for the swap\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Calculated amounts of output tokens, ordered by output token address\",\"pathAmountsOut\":\"Calculated amounts of output tokens corresponding to the last step of each given path\",\"tokensOut\":\"Output token addresses\"}},\"swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap\",\"paths\":\"Swap paths from token in to token out, specifying exact amounts out\",\"userData\":\"Additional (optional) data required for the swap\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Calculated amounts of input tokens, ordered by input token address\",\"pathAmountsIn\":\"Calculated amounts of input tokens corresponding to the first step of each given path\",\"tokensIn\":\"Input token addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"notice\":\"Queries a swap operation involving multiple paths (steps), specifying exact input token amounts.\"},\"querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"notice\":\"Queries a swap operation involving multiple paths (steps), specifying exact output token amounts.\"},\"swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation involving multiple paths (steps), specifying exact input token amounts.\"},\"swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation involving multiple paths (steps), specifying exact output token amounts.\"}},\"notice\":\"Interface for the `BatchRouter`, supporting multi-hop swaps.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol\":\"IBatchRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol\":{\"keccak256\":\"0x700bec0606b05dd5e2799eeb01d5fc63149d84cddf349f75b43df241dd828798\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d18022dc7acd83fc7b37526f63bdd4d7cc11d9ab8cbe273a5a24e5e32c4df7db\",\"dweb:/ipfs/QmR9jWC8iY1nAXhhm9jj2UqvJdK9Coi7S3QVzGmayJcmpw\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol":{"IBufferRouter":{"abi":[{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"queryAddLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"}],"name":"queryInitializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToRemove","type":"uint256"}],"name":"queryRemoveLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceOut","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addLiquidityToBuffer(address,uint256,uint256,uint256)":"502383f4","initializeBuffer(address,uint256,uint256,uint256)":"b365a3c2","queryAddLiquidityToBuffer(address,uint256)":"662727cc","queryInitializeBuffer(address,uint256,uint256)":"e0fefe35","queryRemoveLiquidityFromBuffer(address,uint256)":"13f7bb4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"queryAddLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"}],\"name\":\"queryInitializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToRemove\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Requires the buffer to be initialized beforehand. Restricting adds to proportional simplifies the Vault code, avoiding rounding issues and minimum amount checks. It is possible to add unbalanced by interacting with the wrapper contract directly.\",\"params\":{\"exactSharesToIssue\":\"The amount of shares that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingIn\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedIn\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens deposited into the buffer\"}},\"initializeBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Calling this method binds the wrapped token to its underlying asset internally; the asset in the wrapper cannot change afterwards, or every other operation on that wrapper (add / remove / wrap / unwrap) will fail. To avoid unexpected behavior, always initialize buffers before creating or initializing any pools that contain the wrapped tokens to be used with them.\",\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that will be deposited into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, denominated in underlying tokens (This is the BPT of the Vault's internal ERC4626 buffer.)\"}},\"queryAddLiquidityToBuffer(address,uint256)\":{\"params\":{\"exactSharesToIssue\":\"The amount of shares that would be minted, in underlying token decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens that would be deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens that would be deposited into the buffer\"}},\"queryInitializeBuffer(address,uint256,uint256)\":{\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that the sender wishes to deposit into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that the sender wishes to deposit into the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"The amount of shares that would be minted, in underlying token decimals\"}},\"queryRemoveLiquidityFromBuffer(address,uint256)\":{\"params\":{\"exactSharesToRemove\":\"The amount of shares that would be burned, in underlying token decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceOut\":\"Amount of underlying tokens that would be removed from the buffer\",\"removedWrappedBalanceOut\":\"Amount of wrapped tokens that would be removed from the buffer\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Adds liquidity proportionally to an internal ERC4626 buffer in the Vault.\"},\"initializeBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Adds liquidity for the first time to an internal ERC4626 buffer in the Vault.\"},\"queryAddLiquidityToBuffer(address,uint256)\":{\"notice\":\"Queries an `addLiquidityToBuffer` operation without actually executing it.\"},\"queryInitializeBuffer(address,uint256,uint256)\":{\"notice\":\"Queries an `initializeBuffer` operation without actually executing it.\"},\"queryRemoveLiquidityFromBuffer(address,uint256)\":{\"notice\":\"Queries an `removeLiquidityFromBuffer` operation without actually executing it.\"}},\"notice\":\"User-friendly interface for Buffer liquidity operations with the Vault.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol\":\"IBufferRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol\":{\"keccak256\":\"0xcef9acd5d8cf67d7e126da0961fef2f7dac4e9b24ae13385dfd17d2313536cd9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e1bf4ede1c5055ea3a57536a6804bd3ca984017a738be03a2a7673eaec0c5ed\",\"dweb:/ipfs/QmYyfLkUeTj17JuDnzzKfqtFK9kEjfbs3XWEsdh83kNt1Z\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol":{"IERC20MultiTokenErrors":{"abi":[{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":\"IERC20MultiTokenErrors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol":{"IHooks":{"abi":[{"inputs":[],"name":"getHookFlags","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"}],"internalType":"struct HookFlags","name":"hookFlags","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"uint256[]","name":"amountsInScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsInRaw","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"uint256[]","name":"balancesScaled18","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onAfterAddLiquidity","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256[]","name":"hookAdjustedAmountsInRaw","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onAfterInitialize","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOutScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"balancesScaled18","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onAfterRemoveLiquidity","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256[]","name":"hookAdjustedAmountsOutRaw","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountInScaled18","type":"uint256"},{"internalType":"uint256","name":"amountOutScaled18","type":"uint256"},{"internalType":"uint256","name":"tokenInBalanceScaled18","type":"uint256"},{"internalType":"uint256","name":"tokenOutBalanceScaled18","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AfterSwapParams","name":"params","type":"tuple"}],"name":"onAfterSwap","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"hookAdjustedAmountCalculatedRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"uint256[]","name":"balancesScaled18","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onBeforeAddLiquidity","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onBeforeInitialize","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"balancesScaled18","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onBeforeRemoveLiquidity","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","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":"params","type":"tuple"},{"internalType":"address","name":"pool","type":"address"}],"name":"onBeforeSwap","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","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":"params","type":"tuple"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"}],"name":"onComputeDynamicSwapFeePercentage","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"dynamicSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"onRegister","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getHookFlags()":"d77153a7","onAfterAddLiquidity(address,address,uint8,uint256[],uint256[],uint256,uint256[],bytes)":"976907cc","onAfterInitialize(uint256[],uint256,bytes)":"38be241d","onAfterRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],uint256[],bytes)":"2754888d","onAfterSwap((uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,bytes))":"18b6eb55","onBeforeAddLiquidity(address,address,uint8,uint256[],uint256,uint256[],bytes)":"45421ec7","onBeforeInitialize(uint256[],bytes)":"1c149e28","onBeforeRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],bytes)":"ba5f9f40","onBeforeSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes),address)":"5211fa77","onComputeDynamicSwapFeePercentage((uint8,uint256,uint256[],uint256,uint256,address,bytes),address,uint256)":"a0e8f5ac","onRegister(address,address,(address,uint8,address,bool)[],(bool,bool,bool,bool))":"0b89f182"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getHookFlags\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"}],\"internalType\":\"struct HookFlags\",\"name\":\"hookFlags\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onAfterAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"hookAdjustedAmountsInRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onAfterInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onAfterRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"hookAdjustedAmountsOutRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenInBalanceScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenOutBalanceScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AfterSwapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"onAfterSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"hookAdjustedAmountCalculatedRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onBeforeAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onBeforeInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onBeforeRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"onBeforeSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"onComputeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"onRegister\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Hooks are functions invoked by the Vault at specific points in the flow of each operation. This guarantees that they are called in the correct order, and with the correct arguments. To maintain this security, these functions should only be called by the Vault. The recommended way to do this is to derive the hook contract from `BaseHooks`, then use the `onlyVault` modifier from `VaultGuard`. (See the examples in /pool-hooks.)\",\"kind\":\"dev\",\"methods\":{\"getHookFlags()\":{\"details\":\"The Vault will only call hooks the pool says it supports, and of course only if a hooks contract is defined (i.e., the `poolHooksContract` in `PoolRegistrationParams` is non-zero). `onRegister` is the only \\\"mandatory\\\" hook.\",\"returns\":{\"hookFlags\":\"Flags indicating which hooks the contract supports\"}},\"onAfterAddLiquidity(address,address,uint8,uint256[],uint256[],uint256,uint256[],bytes)\":{\"details\":\"Called if the `shouldCallAfterAddLiquidity` flag is set in the configuration. The Vault will ignore `hookAdjustedAmountsInRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"amountsInRaw\":\"Actual amounts of tokens added, sorted in token registration order\",\"amountsInScaled18\":\"Actual amounts of tokens added, sorted in token registration order\",\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"bptAmountOut\":\"Amount of pool tokens minted\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated an add liquidity operation on the Vault\",\"userData\":\"Additional (optional) data provided by the user\"},\"returns\":{\"hookAdjustedAmountsInRaw\":\"New amountsInRaw, potentially modified by the hook\",\"success\":\"True if the pool wishes to proceed with settlement\"}},\"onAfterInitialize(uint256[],uint256,bytes)\":{\"details\":\"Called if the `shouldCallAfterInitialize` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"bptAmountOut\":\"Amount of pool tokens minted during initialization\",\"exactAmountsIn\":\"Exact amounts of input tokens\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"success\":\"True if the pool accepts the initialization results\"}},\"onAfterRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],uint256[],bytes)\":{\"details\":\"Called if the `shouldCallAfterRemoveLiquidity` flag is set in the configuration. The Vault will ignore `hookAdjustedAmountsOutRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"amountsOutRaw\":\"Actual amount of tokens to receive, sorted in token registration order\",\"amountsOutScaled18\":\"Scaled amount of tokens to receive, sorted in token registration order\",\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"bptAmountIn\":\"Amount of pool tokens to burn\",\"kind\":\"The type of remove liquidity operation (e.g., proportional, custom)\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated a remove liquidity operation on the Vault\",\"userData\":\"Additional (optional) data provided by the user\"},\"returns\":{\"hookAdjustedAmountsOutRaw\":\"New amountsOutRaw, potentially modified by the hook\",\"success\":\"True if the pool wishes to proceed with settlement\"}},\"onAfterSwap((uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,bytes))\":{\"details\":\"Called if the `shouldCallAfterSwap` flag is set in the configuration. The Vault will ignore `hookAdjustedAmountCalculatedRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"params\":\"Swap parameters (see above for struct definition)\"},\"returns\":{\"hookAdjustedAmountCalculatedRaw\":\"New amount calculated, potentially modified by the hook\",\"success\":\"True if the pool wishes to proceed with settlement\"}},\"onBeforeAddLiquidity(address,address,uint8,uint256[],uint256,uint256[],bytes)\":{\"details\":\"Called if the `shouldCallBeforeAddLiquidity` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"maxAmountsInScaled18\":\"Maximum amounts of input tokens\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated an add liquidity operation on the Vault\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"success\":\"True if the pool wishes to proceed with settlement\"}},\"onBeforeInitialize(uint256[],bytes)\":{\"details\":\"Called if the `shouldCallBeforeInitialize` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"success\":\"True if the pool wishes to proceed with initialization\"}},\"onBeforeRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],bytes)\":{\"details\":\"Called if the `shouldCallBeforeRemoveLiquidity` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"kind\":\"The type of remove liquidity operation (e.g., proportional, custom)\",\"maxBptAmountIn\":\"Maximum amount of input pool tokens\",\"minAmountsOutScaled18\":\"Minimum output amounts, sorted in token registration order\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated a remove liquidity operation on the Vault\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"success\":\"True if the pool wishes to proceed with settlement\"}},\"onBeforeSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes),address)\":{\"details\":\"Called if the `shouldCallBeforeSwap` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"params\":\"Swap parameters (see PoolSwapParams for struct definition)\",\"pool\":\"Pool address, used to get pool information from the Vault (poolData, token config, etc.)\"},\"returns\":{\"success\":\"True if the pool wishes to proceed with settlement\"}},\"onComputeDynamicSwapFeePercentage((uint8,uint256,uint256[],uint256,uint256,address,bytes),address,uint256)\":{\"details\":\"Called if the `shouldCallComputeDynamicSwapFee` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"params\":\"Swap parameters (see PoolSwapParams for struct definition)\",\"pool\":\"Pool address, used to get pool information from the Vault (poolData, token config, etc.)\",\"staticSwapFeePercentage\":\"18-decimal FP value of the static swap fee percentage, for reference\"},\"returns\":{\"dynamicSwapFeePercentage\":\"Value of the swap fee percentage, as an 18-decimal FP value\",\"success\":\"True if the pool wishes to proceed with settlement\"}},\"onRegister(address,address,(address,uint8,address,bool)[],(bool,bool,bool,bool))\":{\"details\":\"Returns true if registration was successful, and false to revert the pool registration. Make sure this function is properly implemented (e.g. check the factory, and check that the given pool is from the factory). The Vault address will be msg.sender.\",\"params\":{\"factory\":\"Address of the pool factory (contract deploying the pool)\",\"liquidityManagement\":\"Liquidity management flags indicating which functions are enabled\",\"pool\":\"Address of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"},\"returns\":{\"success\":\"True if the hook allowed the registration, false otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getHookFlags()\":{\"notice\":\"Return the set of hooks implemented by the contract.\"},\"onAfterAddLiquidity(address,address,uint8,uint256[],uint256[],uint256,uint256[],bytes)\":{\"notice\":\"Hook to be executed after adding liquidity.\"},\"onAfterInitialize(uint256[],uint256,bytes)\":{\"notice\":\"Hook to be executed after pool initialization.\"},\"onAfterRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],uint256[],bytes)\":{\"notice\":\"Hook to be executed after removing liquidity.\"},\"onAfterSwap((uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,bytes))\":{\"notice\":\"Called after a swap to perform further actions once the balances have been updated by the swap.\"},\"onBeforeAddLiquidity(address,address,uint8,uint256[],uint256,uint256[],bytes)\":{\"notice\":\"Hook to be executed before adding liquidity.\"},\"onBeforeInitialize(uint256[],bytes)\":{\"notice\":\"Hook executed before pool initialization.\"},\"onBeforeRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],bytes)\":{\"notice\":\"Hook to be executed before removing liquidity.\"},\"onBeforeSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes),address)\":{\"notice\":\"Called before a swap to give the Pool an opportunity to perform actions.\"},\"onComputeDynamicSwapFeePercentage((uint8,uint256,uint256[],uint256,uint256,address,bytes),address,uint256)\":{\"notice\":\"Called after `onBeforeSwap` and before the main swap operation, if the pool has dynamic fees.\"},\"onRegister(address,address,(address,uint8,address,bool)[],(bool,bool,bool,bool))\":{\"notice\":\"Hook executed when a pool is registered with a non-zero hooks contract.\"}},\"notice\":\"Interface for pool hooks.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":\"IHooks\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol":{"IPoolLiquidity":{"abi":[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"uint256[]","name":"balancesScaled18","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onAddLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"amountsInScaled18","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmountsScaled18","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"balancesScaled18","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onRemoveLiquidityCustom","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOutScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"swapFeeAmountsScaled18","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onAddLiquidityCustom(address,uint256[],uint256,uint256[],bytes)":"e4c43663","onRemoveLiquidityCustom(address,uint256,uint256[],uint256[],bytes)":"ab68e28c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onAddLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onRemoveLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onAddLiquidityCustom(address,uint256[],uint256,uint256[],bytes)\":{\"params\":{\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"maxAmountsInScaled18\":\"Maximum input amounts, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"router\":\"The address (usually a router contract) that initiated a swap operation on the Vault\",\"userData\":\"Arbitrary data sent with the encoded request\"},\"returns\":{\"amountsInScaled18\":\"Input token amounts, sorted in token registration order\",\"bptAmountOut\":\"Calculated pool token amount to receive\",\"returnData\":\"Arbitrary data with an encoded response from the pool\",\"swapFeeAmountsScaled18\":\"The amount of swap fees charged for each token\"}},\"onRemoveLiquidityCustom(address,uint256,uint256[],uint256[],bytes)\":{\"params\":{\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"maxBptAmountIn\":\"Maximum amount of input pool tokens\",\"minAmountsOutScaled18\":\"Minimum output amounts, sorted in token registration order\",\"router\":\"The address (usually a router contract) that initiated a swap operation on the Vault\",\"userData\":\"Arbitrary data sent with the encoded request\"},\"returns\":{\"amountsOutScaled18\":\"Amount of tokens to receive, sorted in token registration order\",\"bptAmountIn\":\"Calculated pool token amount to burn\",\"returnData\":\"Arbitrary data with an encoded response from the pool\",\"swapFeeAmountsScaled18\":\"The amount of swap fees charged for each token\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onAddLiquidityCustom(address,uint256[],uint256,uint256[],bytes)\":{\"notice\":\"Add liquidity to the pool with a custom hook.\"},\"onRemoveLiquidityCustom(address,uint256,uint256[],uint256[],bytes)\":{\"notice\":\"Remove liquidity from the pool with a custom hook.\"}},\"notice\":\"Interface for custom liquidity operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\":\"IPoolLiquidity\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\":{\"keccak256\":\"0x0cdc0d3817887d0439c3c6f4c811bd37091ef75a855dd8b14c0e8f337e2799dd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ffd05df90ccdf19a35177fd6c6f78edc61ca2a37df7d0934932a3ad5a96f1e6\",\"dweb:/ipfs/QmaCmKktnMy4XXZn2FaKTjwQBGUhuXKikbxCbPX6K5PPgi\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol":{"IProtocolFeeController":{"abi":[{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"name":"CallerIsNotPoolCreator","type":"error"},{"inputs":[],"name":"PoolCreatorFeePercentageTooHigh","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreatorNotRegistered","type":"error"},{"inputs":[],"name":"ProtocolSwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"ProtocolYieldFeePercentageTooHigh","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"GlobalProtocolSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"yieldFeePercentage","type":"uint256"}],"name":"GlobalProtocolYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PoolCreatorFeesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolCreatorSwapFeePercentage","type":"uint256"}],"name":"PoolCreatorSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolCreatorYieldFeePercentage","type":"uint256"}],"name":"PoolCreatorYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolFeesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolSwapFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"ProtocolSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolYieldFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"yieldFeePercentage","type":"uint256"}],"name":"ProtocolYieldFeePercentageChanged","type":"event"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolFeePercentage","type":"uint256"},{"internalType":"uint256","name":"poolCreatorFeePercentage","type":"uint256"}],"name":"computeAggregateFeePercentage","outputs":[{"internalType":"uint256","name":"aggregateFeePercentage","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getGlobalProtocolSwapFeePercentage","outputs":[{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalProtocolYieldFeePercentage","outputs":[{"internalType":"uint256","name":"protocolYieldFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolCreatorFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProtocolSwapFeeInfo","outputs":[{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bool","name":"isOverride","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProtocolYieldFeeInfo","outputs":[{"internalType":"uint256","name":"protocolYieldFeePercentage","type":"uint256"},{"internalType":"bool","name":"isOverride","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getProtocolFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"}],"name":"registerPool","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProtocolSwapFeePercentage","type":"uint256"}],"name":"setGlobalProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProtocolYieldFeePercentage","type":"uint256"}],"name":"setGlobalProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolCreatorSwapFeePercentage","type":"uint256"}],"name":"setPoolCreatorSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolCreatorYieldFeePercentage","type":"uint256"}],"name":"setPoolCreatorYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newProtocolSwapFeePercentage","type":"uint256"}],"name":"setProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newProtocolYieldFeePercentage","type":"uint256"}],"name":"setProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"updateProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"updateProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"withdrawPoolCreatorFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawPoolCreatorFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawProtocolFeesForToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectAggregateFees(address)":"8f4ab9ca","computeAggregateFeePercentage(uint256,uint256)":"0ddd60c6","getGlobalProtocolSwapFeePercentage()":"7869ee18","getGlobalProtocolYieldFeePercentage()":"55fb76af","getPoolCreatorFeeAmounts(address)":"9e95f3fd","getPoolProtocolSwapFeeInfo(address)":"5c15a0b4","getPoolProtocolYieldFeeInfo(address)":"7a2b97dc","getProtocolFeeAmounts(address)":"8df44c54","registerPool(address,address,bool)":"77ff76e7","setGlobalProtocolSwapFeePercentage(uint256)":"8a3c5c69","setGlobalProtocolYieldFeePercentage(uint256)":"a93df2a4","setPoolCreatorSwapFeePercentage(address,uint256)":"1377c16c","setPoolCreatorYieldFeePercentage(address,uint256)":"3af52712","setProtocolSwapFeePercentage(address,uint256)":"fd267f39","setProtocolYieldFeePercentage(address,uint256)":"abaa3356","updateProtocolSwapFeePercentage(address)":"71ecc8fb","updateProtocolYieldFeePercentage(address)":"71447ea8","vault()":"fbfa77cf","withdrawPoolCreatorFees(address)":"52f125f0","withdrawPoolCreatorFees(address,address)":"f7061445","withdrawProtocolFees(address,address)":"cf7b287f","withdrawProtocolFeesForToken(address,address,address)":"b53a70b2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"CallerIsNotPoolCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolCreatorFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolSwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolYieldFeePercentageTooHigh\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"GlobalProtocolSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"yieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"GlobalProtocolYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorFeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolCreatorSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolCreatorYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolSwapFeeCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolYieldFeeCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"yieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolYieldFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeAggregateFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalProtocolSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalProtocolYieldFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolYieldFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolCreatorFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolProtocolSwapFeeInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOverride\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolProtocolYieldFeeInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOverride\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getProtocolFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newProtocolSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setGlobalProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newProtocolYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setGlobalProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setPoolCreatorSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setPoolCreatorYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newProtocolSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newProtocolYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"updateProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"updateProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"withdrawPoolCreatorFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawPoolCreatorFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawProtocolFeesForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CallerIsNotPoolCreator(address,address)\":[{\"params\":{\"caller\":\"The account attempting to withdraw pool creator fees\",\"pool\":\"The pool the caller tried to withdraw from\"}}],\"PoolCreatorNotRegistered(address)\":[{\"params\":{\"pool\":\"The pool with no creator\"}}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol swap fee percentages.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol yield fee percentages.\"}]},\"events\":{\"GlobalProtocolSwapFeePercentageChanged(uint256)\":{\"params\":{\"swapFeePercentage\":\"The updated protocol swap fee percentage\"}},\"GlobalProtocolYieldFeePercentageChanged(uint256)\":{\"params\":{\"yieldFeePercentage\":\"The updated protocol yield fee percentage\"}},\"PoolCreatorFeesWithdrawn(address,address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the fee token that was withdrawn\",\"pool\":\"The pool from which pool creator fees are being withdrawn\",\"recipient\":\"The recipient of the funds (the pool creator if permissionless, or another account)\",\"token\":\"The token being withdrawn\"}},\"PoolCreatorSwapFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose pool creator swap fee will be changed\",\"poolCreatorSwapFeePercentage\":\"The new pool creator swap fee percentage for the pool\"}},\"PoolCreatorYieldFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose pool creator yield fee will be changed\",\"poolCreatorYieldFeePercentage\":\"The new pool creator yield fee percentage for the pool\"}},\"ProtocolFeesWithdrawn(address,address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the fee token that was withdrawn\",\"pool\":\"The pool from which protocol fees are being withdrawn\",\"recipient\":\"The recipient of the funds\",\"token\":\"The token being withdrawn\"}},\"ProtocolSwapFeeCollected(address,address,uint256)\":{\"details\":\"Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection happens in the ProtocolFeeController, the swap fees reported here may encompass multiple operations.\",\"params\":{\"amount\":\"The amount of the token collected in fees\",\"pool\":\"The pool on which the swap fee was charged\",\"token\":\"The token in which the swap fee was charged\"}},\"ProtocolSwapFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose protocol swap fee will be changed\",\"swapFeePercentage\":\"The updated protocol swap fee percentage\"}},\"ProtocolYieldFeeCollected(address,address,uint256)\":{\"details\":\"Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection happens in the ProtocolFeeController, the yield fees reported here may encompass multiple operations.\",\"params\":{\"amount\":\"The amount of the token collected in fees\",\"pool\":\"The pool on which the yield fee was charged\",\"token\":\"The token in which the yield fee was charged\"}},\"ProtocolYieldFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose protocol yield fee will be changed\",\"yieldFeePercentage\":\"The updated protocol yield fee percentage\"}}},\"kind\":\"dev\",\"methods\":{\"collectAggregateFees(address)\":{\"params\":{\"pool\":\"The pool with aggregate fees\"}},\"computeAggregateFeePercentage(uint256,uint256)\":{\"details\":\"Not tied to any particular pool; this just performs the low-level \\\"additive fee\\\" calculation. Note that pool creator fees are calculated based on creatorAndLpFees, and not in totalFees. Since aggregate fees are stored in the Vault with 24-bit precision, this will truncate any values that require greater precision. It is expected that pool creators will negotiate with the DAO and agree on reasonable values for these fee components, but the truncation ensures it will not revert for any valid set of fee percentages. See example below: tokenOutAmount = 10000; poolSwapFeePct = 10%; protocolFeePct = 40%; creatorFeePct = 60% totalFees = tokenOutAmount * poolSwapFeePct = 10000 * 10% = 1000 protocolFees = totalFees * protocolFeePct = 1000 * 40% = 400 creatorAndLpFees = totalFees - protocolFees = 1000 - 400 = 600 creatorFees = creatorAndLpFees * creatorFeePct = 600 * 60% = 360 lpFees (will stay in the pool) = creatorAndLpFees - creatorFees = 600 - 360 = 240\",\"params\":{\"poolCreatorFeePercentage\":\"The pool creator portion of the aggregate fee percentage\",\"protocolFeePercentage\":\"The protocol portion of the aggregate fee percentage\"},\"returns\":{\"aggregateFeePercentage\":\"The computed aggregate percentage\"}},\"getGlobalProtocolSwapFeePercentage()\":{\"returns\":{\"protocolSwapFeePercentage\":\"The global protocol swap fee percentage\"}},\"getGlobalProtocolYieldFeePercentage()\":{\"returns\":{\"protocolYieldFeePercentage\":\"The global protocol yield fee percentage\"}},\"getPoolCreatorFeeAmounts(address)\":{\"details\":\"Includes both swap and yield fees.\",\"params\":{\"pool\":\"The address of the pool on which fees were collected\"},\"returns\":{\"feeAmounts\":\"The total amounts of each token available for withdrawal, sorted in token registration order\"}},\"getPoolProtocolSwapFeeInfo(address)\":{\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"isOverride\":\"True if the protocol fee has been overridden\",\"protocolSwapFeePercentage\":\"The global protocol swap fee percentage\"}},\"getPoolProtocolYieldFeeInfo(address)\":{\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"isOverride\":\"True if the protocol fee has been overridden\",\"protocolYieldFeePercentage\":\"The global protocol yield fee percentage\"}},\"getProtocolFeeAmounts(address)\":{\"details\":\"Includes both swap and yield fees.\",\"params\":{\"pool\":\"The address of the pool on which fees were collected\"},\"returns\":{\"feeAmounts\":\"The total amounts of each token available for withdrawal, sorted in token registration order\"}},\"registerPool(address,address,bool)\":{\"details\":\"This must be called from the Vault during pool registration. It will initialize the pool to the global protocol fee percentage values (or 0, if the `protocolFeeExempt` flags is set), and return the initial aggregate fee percentages, based on an initial pool creator fee of 0.\",\"params\":{\"pool\":\"The address of the pool being registered\",\"poolCreator\":\"The address of the pool creator (or 0 if there won't be a pool creator fee)\",\"protocolFeeExempt\":\"If true, the pool is initially exempt from protocol fees\"},\"returns\":{\"aggregateSwapFeePercentage\":\"The initial aggregate swap fee percentage\",\"aggregateYieldFeePercentage\":\"The initial aggregate yield fee percentage\"}},\"setGlobalProtocolSwapFeePercentage(uint256)\":{\"params\":{\"newProtocolSwapFeePercentage\":\"The new protocol swap fee percentage\"}},\"setGlobalProtocolYieldFeePercentage(uint256)\":{\"params\":{\"newProtocolYieldFeePercentage\":\"The new protocol yield fee percentage\"}},\"setPoolCreatorSwapFeePercentage(address,uint256)\":{\"details\":\"Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to the \\\"net\\\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\",\"params\":{\"pool\":\"The address of the pool for which the pool creator fee will be changed\",\"poolCreatorSwapFeePercentage\":\"The new pool creator swap fee percentage to apply to the pool\"}},\"setPoolCreatorYieldFeePercentage(address,uint256)\":{\"details\":\"Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to the \\\"net\\\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\",\"params\":{\"pool\":\"The address of the pool for which the pool creator fee will be changed\",\"poolCreatorYieldFeePercentage\":\"The new pool creator yield fee percentage to apply to the pool\"}},\"setProtocolSwapFeePercentage(address,uint256)\":{\"params\":{\"newProtocolSwapFeePercentage\":\"The new protocol swap fee percentage for the pool\",\"pool\":\"The address of the pool for which we are setting the protocol swap fee\"}},\"setProtocolYieldFeePercentage(address,uint256)\":{\"params\":{\"newProtocolYieldFeePercentage\":\"The new protocol yield fee percentage for the pool\",\"pool\":\"The address of the pool for which we are setting the protocol yield fee\"}},\"updateProtocolSwapFeePercentage(address)\":{\"details\":\"This is a permissionless call, and will set the pool's fee to the current global fee, if it is different from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\",\"params\":{\"pool\":\"The pool for which we are setting the protocol swap fee\"}},\"updateProtocolYieldFeePercentage(address)\":{\"details\":\"This is a permissionless call, and will set the pool's fee to the current global fee, if it is different from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\",\"params\":{\"pool\":\"The pool for which we are setting the protocol yield fee\"}},\"vault()\":{\"returns\":{\"_0\":\"vault The Vault address\"}},\"withdrawPoolCreatorFees(address)\":{\"details\":\"Sends swap and yield pool creator fees to the registered poolCreator. Since this is a known and immutable value, this function is permissionless.\",\"params\":{\"pool\":\"The pool on which fees were collected\"}},\"withdrawPoolCreatorFees(address,address)\":{\"details\":\"Sends swap and yield pool creator fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\"}},\"withdrawProtocolFees(address,address)\":{\"details\":\"Sends swap and yield protocol fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\"}},\"withdrawProtocolFeesForToken(address,address,address)\":{\"details\":\"Sends swap and yield protocol fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\",\"token\":\"Token to withdraw\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"CallerIsNotPoolCreator(address,address)\":[{\"notice\":\"Error raised if the wrong account attempts to withdraw pool creator fees.\"}],\"PoolCreatorFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value.\"}],\"PoolCreatorNotRegistered(address)\":[{\"notice\":\"Error raised if there is no pool creator on a withdrawal attempt from the given pool.\"}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol swap fee percentage exceeds the maximum allowed value.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol yield fee percentage exceeds the maximum allowed value.\"}]},\"events\":{\"GlobalProtocolSwapFeePercentageChanged(uint256)\":{\"notice\":\"Emitted when the protocol swap fee percentage is updated.\"},\"GlobalProtocolYieldFeePercentageChanged(uint256)\":{\"notice\":\"Emitted when the protocol yield fee percentage is updated.\"},\"PoolCreatorFeesWithdrawn(address,address,address,uint256)\":{\"notice\":\"Logs the withdrawal of pool creator fees in a specific token and amount.\"},\"PoolCreatorSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the pool creator swap fee percentage of a pool is updated.\"},\"PoolCreatorYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the pool creator yield fee percentage of a pool is updated.\"},\"ProtocolFeesWithdrawn(address,address,address,uint256)\":{\"notice\":\"Logs the withdrawal of protocol fees in a specific token and amount.\"},\"ProtocolSwapFeeCollected(address,address,uint256)\":{\"notice\":\"Logs the collection of protocol swap fees in a specific token and amount.\"},\"ProtocolSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the protocol swap fee percentage is updated for a specific pool.\"},\"ProtocolYieldFeeCollected(address,address,uint256)\":{\"notice\":\"Logs the collection of protocol yield fees in a specific token and amount.\"},\"ProtocolYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the protocol yield fee percentage is updated for a specific pool.\"}},\"kind\":\"user\",\"methods\":{\"collectAggregateFees(address)\":{\"notice\":\"Collects aggregate fees from the Vault for a given pool.\"},\"computeAggregateFeePercentage(uint256,uint256)\":{\"notice\":\"Returns a calculated aggregate percentage from protocol and pool creator fee percentages.\"},\"getGlobalProtocolSwapFeePercentage()\":{\"notice\":\"Getter for the current global protocol swap fee.\"},\"getGlobalProtocolYieldFeePercentage()\":{\"notice\":\"Getter for the current global protocol yield fee.\"},\"getPoolCreatorFeeAmounts(address)\":{\"notice\":\"Returns the amount of each pool token allocated to the pool creator for withdrawal.\"},\"getPoolProtocolSwapFeeInfo(address)\":{\"notice\":\"Getter for the current protocol swap fee for a given pool.\"},\"getPoolProtocolYieldFeeInfo(address)\":{\"notice\":\"Getter for the current protocol yield fee for a given pool.\"},\"getProtocolFeeAmounts(address)\":{\"notice\":\"Returns the amount of each pool token allocated to the protocol for withdrawal.\"},\"registerPool(address,address,bool)\":{\"notice\":\"Add pool-specific entries to the protocol swap and yield percentages.\"},\"setGlobalProtocolSwapFeePercentage(uint256)\":{\"notice\":\"Set the global protocol swap fee percentage, used by standard pools.\"},\"setGlobalProtocolYieldFeePercentage(uint256)\":{\"notice\":\"Set the global protocol yield fee percentage, used by standard pools.\"},\"setPoolCreatorSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new pool creator swap fee percentage to the specified pool.\"},\"setPoolCreatorYieldFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new pool creator yield fee percentage to the specified pool.\"},\"setProtocolSwapFeePercentage(address,uint256)\":{\"notice\":\"Override the protocol swap fee percentage for a specific pool.\"},\"setProtocolYieldFeePercentage(address,uint256)\":{\"notice\":\"Override the protocol yield fee percentage for a specific pool.\"},\"updateProtocolSwapFeePercentage(address)\":{\"notice\":\"Override the protocol swap fee percentage for a specific pool.\"},\"updateProtocolYieldFeePercentage(address)\":{\"notice\":\"Override the protocol yield fee percentage for a specific pool.\"},\"vault()\":{\"notice\":\"Get the address of the main Vault contract.\"},\"withdrawPoolCreatorFees(address)\":{\"notice\":\"Withdraw collected pool creator fees for a given pool.\"},\"withdrawPoolCreatorFees(address,address)\":{\"notice\":\"Withdraw collected pool creator fees for a given pool. This is a permissioned function.\"},\"withdrawProtocolFees(address,address)\":{\"notice\":\"Withdraw collected protocol fees for a given pool (all tokens). This is a permissioned function.\"},\"withdrawProtocolFeesForToken(address,address,address)\":{\"notice\":\"Withdraw collected protocol fees for a given pool and a given token. This is a permissioned function.\"}},\"notice\":\"Contract that handles protocol and pool creator fees for the Vault.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":\"IProtocolFeeController\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol":{"IRouter":{"abi":[{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"donate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquidityCustom","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"}],"name":"queryRemoveLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapSingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapSingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquidityCustom","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapSingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapSingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addLiquidityCustom(address,uint256[],uint256,bool,bytes)":"0ca078ec","addLiquidityProportional(address,uint256[],uint256,bool,bytes)":"724dba33","addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)":"72657d17","addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)":"c08bc851","donate(address,uint256[],bool,bytes)":"bf6ee3fd","initialize(address,address[],uint256[],uint256,bool,bytes)":"026b3d95","queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)":"452db952","queryAddLiquidityProportional(address,uint256,address,bytes)":"9de90518","queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)":"1d56798d","queryAddLiquidityUnbalanced(address,uint256[],address,bytes)":"da001f7d","queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)":"c330c7be","queryRemoveLiquidityProportional(address,uint256,address,bytes)":"0f710888","queryRemoveLiquidityRecovery(address,uint256)":"b037ed36","queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)":"23b39241","queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)":"53d0bb98","querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)":"3ebc54e5","querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)":"175d4408","removeLiquidityCustom(address,uint256,uint256[],bool,bytes)":"82bf2b24","removeLiquidityProportional(address,uint256,uint256[],bool,bytes)":"51682750","removeLiquidityRecovery(address,uint256,uint256[])":"08c04793","removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)":"ecb2182c","removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)":"e7326def","swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)":"750283bc","swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)":"94e86ef8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapSingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapSingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapSingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapSingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidityCustom(address,uint256[],uint256,bool,bytes)\":{\"details\":\"The given maximum and minimum amounts given may be interpreted as exact depending on the pool type. In any case the caller can expect them to be hard boundaries for the request.\",\"params\":{\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Actual amounts of tokens added, sorted in token registration order\",\"bptAmountOut\":\"Actual amount of pool tokens received\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"addLiquidityProportional(address,uint256[],uint256,bool,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Actual amounts of tokens added, sorted in token registration order\"}},\"addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"maxAmountIn\":\"Maximum amount of tokens to be added\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token used to add liquidity\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountIn\":\"Actual amount of tokens added\"}},\"addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountOut\":\"Actual amount of pool tokens received\"}},\"donate(address,uint256[],bool,bytes)\":{\"details\":\"To support donation, the pool config `enableDonation` flag must be set to true.\",\"params\":{\"amountsIn\":\"Amounts of tokens to be donated, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to donate liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"}},\"initialize(address,address[],uint256[],uint256,bool,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokens\":\"Pool tokens, in token registration order\",\"userData\":\"Additional (optional) data sent with the request to add initial liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountOut\":\"Actual amount of pool tokens minted in exchange for initial liquidity\"}},\"queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)\":{\"params\":{\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Expected minimum amount of pool tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsIn\":\"Expected amounts of tokens to add, sorted in token registration order\",\"bptAmountOut\":\"Expected amount of pool tokens to receive\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryAddLiquidityProportional(address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsIn\":\"Expected amounts of tokens to add, sorted in token registration order\"}},\"queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Expected exact amount of pool tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token used to add liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountIn\":\"Expected amount of tokens to add\"}},\"queryAddLiquidityUnbalanced(address,uint256[],address,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"bptAmountOut\":\"Expected amount of pool tokens to receive\"}},\"queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)\":{\"params\":{\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"minAmountsOut\":\"Expected minimum amounts of tokens to receive, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\",\"bptAmountIn\":\"Expected amount of pool tokens to burn\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryRemoveLiquidityProportional(address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\"}},\"queryRemoveLiquidityRecovery(address,uint256)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\"}},\"queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountOut\":\"Expected amount of tokens to receive\"}},\"queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountOut\":\"Expected exact amount of tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"bptAmountIn\":\"Expected amount of pool tokens to burn\"}},\"querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountIn\":\"Exact amounts of input tokens to send\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountOut\":\"Calculated amount of output tokens to be received in exchange for the given input tokens\"}},\"querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountOut\":\"Exact amounts of input tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountIn\":\"Calculated amount of input tokens to be sent in exchange for the requested output tokens\"}},\"removeLiquidityCustom(address,uint256,uint256[],bool,bytes)\":{\"details\":\"The given maximum and minimum amounts given may be interpreted as exact depending on the pool type. In any case the caller can expect them to be hard boundaries for the request.\",\"params\":{\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\",\"bptAmountIn\":\"Actual amount of pool tokens burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"removeLiquidityProportional(address,uint256,uint256[],bool,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\"}},\"removeLiquidityRecovery(address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\"}},\"removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountOut\":\"Minimum amount of tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountOut\":\"Actual amount of tokens received\"}},\"removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)\":{\"params\":{\"exactAmountOut\":\"Exact amount of tokens to be received\",\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"pool\":\"Address of the liquidity pool\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountIn\":\"Actual amount of pool tokens burned\"}},\"swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"exactAmountIn\":\"Exact amounts of input tokens to send\",\"minAmountOut\":\"Minimum amount of tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the swap request\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountOut\":\"Calculated amount of output tokens to be received in exchange for the given input tokens\"}},\"swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"exactAmountOut\":\"Exact amounts of input tokens to receive\",\"maxAmountIn\":\"Maximum amount of tokens to be sent\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the swap request\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountIn\":\"Calculated amount of input tokens to be sent in exchange for the requested output tokens\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidityCustom(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with a custom request.\"},\"addLiquidityProportional(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with proportional token amounts, receiving an exact amount of pool tokens.\"},\"addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool in a single token, receiving an exact amount of pool tokens.\"},\"addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with arbitrary token amounts.\"},\"donate(address,uint256[],bool,bytes)\":{\"notice\":\"Adds liquidity to a pool by donating the amounts in (no BPT out).\"},\"initialize(address,address[],uint256[],uint256,bool,bytes)\":{\"notice\":\"Initialize a liquidity pool.\"},\"queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquidityCustom` operation without actually executing it.\"},\"queryAddLiquidityProportional(address,uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquidityProportional` operation without actually executing it.\"},\"queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquiditySingleTokenExactOut` operation without actually executing it.\"},\"queryAddLiquidityUnbalanced(address,uint256[],address,bytes)\":{\"notice\":\"Queries an `addLiquidityUnbalanced` operation without actually executing it.\"},\"queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)\":{\"notice\":\"Queries a `removeLiquidityCustom` operation without actually executing it.\"},\"queryRemoveLiquidityProportional(address,uint256,address,bytes)\":{\"notice\":\"Queries a `removeLiquidityProportional` operation without actually executing it.\"},\"queryRemoveLiquidityRecovery(address,uint256)\":{\"notice\":\"Queries a `removeLiquidityRecovery` operation without actually executing it.\"},\"queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)\":{\"notice\":\"Queries a `removeLiquiditySingleTokenExactIn` operation without actually executing it.\"},\"queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"notice\":\"Queries a `removeLiquiditySingleTokenExactOut` operation without actually executing it.\"},\"querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)\":{\"notice\":\"Queries a swap operation specifying an exact input token amount without actually executing it.\"},\"querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)\":{\"notice\":\"Queries a swap operation specifying an exact output token amount without actually executing it.\"},\"removeLiquidityCustom(address,uint256,uint256[],bool,bytes)\":{\"notice\":\"Removes liquidity from a pool with a custom request.\"},\"removeLiquidityProportional(address,uint256,uint256[],bool,bytes)\":{\"notice\":\"Removes liquidity with proportional token amounts from a pool, burning an exact pool token amount.\"},\"removeLiquidityRecovery(address,uint256,uint256[])\":{\"notice\":\"Removes liquidity proportionally, burning an exact pool token amount. Only available in Recovery Mode.\"},\"removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)\":{\"notice\":\"Removes liquidity from a pool via a single token, burning an exact pool token amount.\"},\"removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)\":{\"notice\":\"Removes liquidity from a pool via a single token, specifying the exact amount of tokens to receive.\"},\"swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation specifying an exact input token amount.\"},\"swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation specifying an exact output token amount.\"}},\"notice\":\"User-friendly interface to basic Vault operations: swap, add/remove liquidity, and associated queries.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol\":\"IRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol\":{\"keccak256\":\"0x39a5cd3ee5c0bab644f068ad8ba617a0cf71a91610693b1c93c9536464151ee3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6a5f61af5cda44d8ef95e610c0b418f2cfb984e9c47a58fb1fa8c8bc949def75\",\"dweb:/ipfs/Qmby1D2D5Ym44jgBTTM8eTGnmNGCCKrb8ujpkhVPE6C6Cr\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol":{"IRouterCommon":{"abi":[{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getSender()":"5e01eb5a","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getSender()\":{\"returns\":{\"sender\":\"The address of the sender\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"}},\"notice\":\"Interface for functions shared between the `Router` and `BatchRouter`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":\"IRouterCommon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol":{"ISwapFeePercentageBounds":{"abi":[{"inputs":[],"name":"getMaximumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"maximumSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"minimumSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getMaximumSwapFeePercentage()":"654cf15d","getMinimumSwapFeePercentage()":"ce20ece7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getMaximumSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maximumSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The Vault does not enforce bounds on swap fee percentages; `IBasePool` implements this interface to ensure that new pool developers think about and set these bounds according to their specific pool type. A minimum swap fee might be necessary to ensure mathematical soundness (e.g., Weighted Pools, which use the power function in the invariant). A maximum swap fee is general protection for users. With no limits at the Vault level, a pool could specify a near 100% swap fee, effectively disabling trading. Though there are some use cases, such as LVR/MEV strategies, where a very high fee makes sense. Note that the Vault does ensure that dynamic and aggregate fees are less than 100% to prevent attempting to allocate more fees than were collected by the operation. The true `MAX_FEE_PERCENTAGE` is defined in VaultTypes.sol, and is the highest value below 100% that satisfies the precision requirements.\",\"kind\":\"dev\",\"methods\":{\"getMaximumSwapFeePercentage()\":{\"returns\":{\"maximumSwapFeePercentage\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"minimumSwapFeePercentage\":\"The minimum swap fee percentage for a pool\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Return the minimum/maximum swap fee percentages for a pool.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":\"ISwapFeePercentageBounds\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol":{"IUnbalancedLiquidityInvariantRatioBounds":{"abi":[{"inputs":[],"name":"getMaximumInvariantRatio","outputs":[{"internalType":"uint256","name":"maximumInvariantRatio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumInvariantRatio","outputs":[{"internalType":"uint256","name":"minimumInvariantRatio","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getMaximumInvariantRatio()":"273c1adf","getMinimumInvariantRatio()":"b677fa56"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getMaximumInvariantRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maximumInvariantRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumInvariantRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumInvariantRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The Vault does not enforce any \\\"baseline\\\" bounds on invariant ratios, since such bounds are highly specific and dependent on the math of each pool type. Instead, the Vault reads invariant ratio bounds from the pools. `IBasePool` implements this interface to ensure that new pool developers think about and set these bounds according to their pool type's math. For instance, Balancer Weighted Pool math involves exponentiation (the `pow` function), which uses natural logarithms and a discrete Taylor series expansion to compute x^y values for the 18-decimal floating point numbers used in all Vault computations. See `LogExpMath` and `WeightedMath` for a derivation of the bounds for these pools.\",\"kind\":\"dev\",\"methods\":{\"getMaximumInvariantRatio()\":{\"returns\":{\"maximumInvariantRatio\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"minimumInvariantRatio\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Return the minimum/maximum invariant ratios allowed during an unbalanced liquidity operation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":\"IUnbalancedLiquidityInvariantRatioBounds\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol":{"IVault":{"abi":[{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"}],"name":"addLiquidity","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"tokenAllowance","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":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areBuffersPaused","outputs":[{"internalType":"bool","name":"buffersPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"tokenBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"yieldFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"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":"swapParams","type":"tuple"}],"name":"computeDynamicSwapFeePercentage","outputs":[{"internalType":"uint256","name":"dynamicSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQueryPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"emitAuxiliaryEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"erc4626BufferWrapOrUnwrap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getAddLiquidityCalledFlag","outputs":[{"internalType":"bool","name":"liquidityAdded","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"yieldFeeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"authorizer","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getBptRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferAsset","outputs":[{"internalType":"address","name":"underlyingToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferBalance","outputs":[{"internalType":"uint256","name":"underlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"wrappedBalanceRaw","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"bufferMinimumTotalSupply","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"liquidityOwner","type":"address"}],"name":"getBufferOwnerShares","outputs":[{"internalType":"uint256","name":"ownerShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodDuration","outputs":[{"internalType":"uint32","name":"bufferPeriodDuration","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodEndTime","outputs":[{"internalType":"uint32","name":"bufferPeriodEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferTotalShares","outputs":[{"internalType":"uint256","name":"bufferShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getERC4626BufferAsset","outputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getHooksConfig","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumPoolTokens","outputs":[{"internalType":"uint256","name":"maxTokens","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumPoolTokens","outputs":[{"internalType":"uint256","name":"minTokens","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumTradeAmount","outputs":[{"internalType":"uint256","name":"minimumTradeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumWrapAmount","outputs":[{"internalType":"uint256","name":"minimumWrapAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNonzeroDeltaCount","outputs":[{"internalType":"uint256","name":"nonzeroDeltaCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolConfig","outputs":[{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"poolConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"poolMinimumTotalSupply","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolPausedState","outputs":[{"internalType":"bool","name":"poolPaused","type":"bool"},{"internalType":"uint32","name":"poolPauseWindowEndTime","type":"uint32"},{"internalType":"uint32","name":"poolBufferPeriodEndTime","type":"uint32"},{"internalType":"address","name":"pauseManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolRoleAccounts","outputs":[{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenCountAndIndexOfToken","outputs":[{"internalType":"uint256","name":"tokenCount","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenInfo","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":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenRates","outputs":[{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"protocolFeeController","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getReservesOf","outputs":[{"internalType":"uint256","name":"reserveAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getStaticSwapFeePercentage","outputs":[{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenDelta","outputs":[{"internalType":"int256","name":"tokenDelta","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultAdmin","outputs":[{"internalType":"address","name":"vaultAdmin","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultExtension","outputs":[{"internalType":"address","name":"vaultExtension","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultPausedState","outputs":[{"internalType":"bool","name":"vaultPaused","type":"bool"},{"internalType":"uint32","name":"vaultPauseWindowEndTime","type":"uint32"},{"internalType":"uint32","name":"vaultBufferPeriodEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"isERC4626BufferInitialized","outputs":[{"internalType":"bool","name":"isBufferInitialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInRecoveryMode","outputs":[{"internalType":"bool","name":"inRecoveryMode","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInitialized","outputs":[{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolPaused","outputs":[{"internalType":"bool","name":"poolPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolRegistered","outputs":[{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabled","outputs":[{"internalType":"bool","name":"queryDisabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabledPermanently","outputs":[{"internalType":"bool","name":"queryDisabledPermanently","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isVaultPaused","outputs":[{"internalType":"bool","name":"vaultPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"pausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quote","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quoteAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOutRaw","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOutRaw","type":"uint256"}],"name":"removeLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"setProtocolFeeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"setStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountHint","type":"uint256"}],"name":"settle","outputs":[{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"tokenTotalSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"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":"spender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"unpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"updateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateYieldFeePercentage","type":"uint256"}],"name":"updateAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addLiquidity((address,address,uint256[],uint256,uint8,bytes))":"4af29ec4","addLiquidityToBuffer(address,uint256,uint256,uint256,address)":"e2a92b1a","allowance(address,address,address)":"927da105","approve(address,address,uint256)":"e1f21c67","areBuffersPaused()":"55cba7fe","balanceOf(address,address)":"f7888aec","collectAggregateFees(address)":"8f4ab9ca","computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))":"4d472bdd","disableQuery()":"de1a36a6","disableQueryPermanently()":"821440f2","disableRecoveryMode(address)":"bffb78b2","emitAuxiliaryEvent(bytes32,bytes)":"c8088247","enableQuery()":"e0d55605","enableRecoveryMode(address)":"dc3f574e","erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))":"43583be5","getActionId(bytes4)":"851c1bb3","getAddLiquidityCalledFlag(address)":"ace9b89b","getAggregateSwapFeeAmount(address,address)":"85e0b999","getAggregateYieldFeeAmount(address,address)":"00fdfa13","getAuthorizer()":"aaabadc5","getBptRate(address)":"4f037ee7","getBufferAsset(address)":"0387587d","getBufferBalance(address)":"4021fe0f","getBufferMinimumTotalSupply()":"26a8a991","getBufferOwnerShares(address,address)":"9385e39a","getBufferPeriodDuration()":"20c1fb7a","getBufferPeriodEndTime()":"cd51c12f","getBufferTotalShares(address)":"f2784e07","getCurrentLiveBalances(address)":"535cfd8a","getERC4626BufferAsset(address)":"4afbaf5a","getHooksConfig(address)":"ce8630d4","getMaximumPoolTokens()":"2e42f4d5","getMinimumPoolTokens()":"a8175b27","getMinimumTradeAmount()":"e2cb0ba0","getMinimumWrapAmount()":"53956aa2","getNonzeroDeltaCount()":"db817187","getPauseWindowEndTime()":"8a8d123a","getPoolConfig(address)":"f29486a1","getPoolData(address)":"13d21cdf","getPoolMinimumTotalSupply()":"d0965a6b","getPoolPausedState(address)":"15e32046","getPoolRoleAccounts(address)":"e9ddeb26","getPoolTokenCountAndIndexOfToken(address,address)":"c9c1661b","getPoolTokenInfo(address)":"67e0e076","getPoolTokenRates(address)":"7e361bde","getPoolTokens(address)":"ca4f2803","getProtocolFeeController()":"85f2dbd4","getReservesOf(address)":"96787092","getStaticSwapFeePercentage(address)":"b45090f9","getTokenDelta(address)":"9e825ff5","getVaultAdmin()":"1ba0ae45","getVaultExtension()":"b9a8effa","getVaultPausedState()":"85c8c015","initialize(address,address,address[],uint256[],uint256,bytes)":"ba8a2be0","initializeBuffer(address,uint256,uint256,uint256,address)":"653eb3b0","isERC4626BufferInitialized(address)":"6844846b","isPoolInRecoveryMode(address)":"be7d628a","isPoolInitialized(address)":"532cec7c","isPoolPaused(address)":"6c9bc732","isPoolRegistered(address)":"c673bdaf","isQueryDisabled()":"b4aef0ab","isQueryDisabledPermanently()":"13ef8a5d","isUnlocked()":"8380edb7","isVaultPaused()":"098401f5","pausePool(address)":"55aca1ec","pauseVault()":"9e0879c2","pauseVaultBuffers()":"e085c5a8","quote(bytes)":"edfa3568","quoteAndRevert(bytes)":"757d64b3","registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"eeec802f","removeLiquidity((address,address,uint256,uint256[],uint8,bytes))":"21457897","removeLiquidityFromBuffer(address,uint256,uint256,uint256)":"ebc7955c","removeLiquidityRecovery(address,address,uint256,uint256[])":"a07d6040","sendTo(address,address,uint256)":"ae639329","setAuthorizer(address)":"058a628f","setProtocolFeeController(address)":"2d771389","setStaticSwapFeePercentage(address,uint256)":"d15126ba","settle(address,uint256)":"15afd409","swap((uint8,address,address,address,uint256,uint256,bytes))":"2bfb780c","totalSupply(address)":"e4dc2aa4","transfer(address,address,uint256)":"beabacc8","transferFrom(address,address,address,uint256)":"15dacbea","unlock(bytes)":"48c89491","unpausePool(address)":"f21c38cd","unpauseVault()":"0b7562be","unpauseVaultBuffers()":"b9212b49","updateAggregateSwapFeePercentage(address,uint256)":"5e0b06f4","updateAggregateYieldFeePercentage(address,uint256)":"e253670a","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAllowance\",\"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\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"areBuffersPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"buffersPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"yieldFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"swapParams\",\"type\":\"tuple\"}],\"name\":\"computeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQueryPermanently\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"emitAuxiliaryEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"erc4626BufferWrapOrUnwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getAddLiquidityCalledFlag\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"liquidityAdded\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"yieldFeeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"authorizer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getBptRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"underlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bufferMinimumTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityOwner\",\"type\":\"address\"}],\"name\":\"getBufferOwnerShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ownerShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferTotalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bufferShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getERC4626BufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getHooksConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxTokens\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minTokens\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumTradeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumTradeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumWrapAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumWrapAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonzeroDeltaCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"poolConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolMinimumTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"poolPaused\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"poolPauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"poolBufferPeriodEndTime\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolRoleAccounts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenCountAndIndexOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"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\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenRates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getReservesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getStaticSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"tokenDelta\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vaultAdmin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vaultExtension\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"vaultPaused\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"vaultPauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"vaultBufferPeriodEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"isERC4626BufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isBufferInitialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"inRecoveryMode\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"poolPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"queryDisabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabledPermanently\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"queryDisabledPermanently\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isVaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"vaultPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quoteAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOutRaw\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountHint\",\"type\":\"uint256\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"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\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"unpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"details\":\"Caution should be exercised when adding liquidity because the Vault has the capability to transfer tokens from any user, given that it holds all allowances.\",\"params\":{\"params\":\"Parameters for the add liquidity (see above for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual amounts of input tokens\",\"bptAmountOut\":\"Output pool token amount\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"details\":\"The buffer needs to be initialized beforehand.\",\"params\":{\"exactSharesToIssue\":\"The value in underlying tokens that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingInRaw\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedInRaw\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens deposited into the buffer\"}},\"allowance(address,address,address)\":{\"params\":{\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\",\"token\":\"Address of the token\"},\"returns\":{\"tokenAllowance\":\"Amount of tokens the spender is allowed to spend\"}},\"approve(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to approve\",\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\"},\"returns\":{\"success\":\"True if successful, false otherwise\"}},\"areBuffersPaused()\":{\"details\":\"When buffers are paused, all buffer operations (i.e., calls on the Router with `isBuffer` true) will revert. Pausing buffers is reversible. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `isVaultPaused` to check the pause state of the Vault.\",\"returns\":{\"buffersPaused\":\"True if the Vault buffers are paused\"}},\"balanceOf(address,address)\":{\"params\":{\"account\":\"Address of the account\",\"token\":\"Address of the token\"},\"returns\":{\"tokenBalance\":\"Token balance of the account\"}},\"collectAggregateFees(address)\":{\"details\":\"Fees are sent to the ProtocolFeeController address.\",\"params\":{\"pool\":\"The pool on which all aggregate fees should be collected\"},\"returns\":{\"swapFeeAmounts\":\"An array with the total swap fees collected, sorted in token registration order\",\"yieldFeeAmounts\":\"An array with the total yield fees collected, sorted in token registration order\"}},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"details\":\"Reverts if the hook doesn't return the success flag set to `true`.\",\"params\":{\"pool\":\"The pool\",\"swapParams\":\"The swap parameters used to compute the fee\"},\"returns\":{\"dynamicSwapFeePercentage\":\"The dynamic swap fee percentage\"}},\"disableQuery()\":{\"details\":\"The query functions rely on a specific EVM feature to detect static calls. Query operations are exempt from settlement constraints, so it's critical that no state changes can occur. We retain the ability to disable queries in the unlikely event that EVM changes violate its assumptions (perhaps on an L2). This function can be acted upon as an emergency measure in ambiguous contexts where it's not 100% clear whether disabling queries is completely necessary; queries can still be re-enabled after this call.\"},\"disableQueryPermanently()\":{\"details\":\"Shall only be used when there is no doubt that queries pose a fundamental threat to the system.\"},\"disableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It re-syncs live balances (which could not be updated during Recovery Mode), forfeiting any yield fees that accrued while enabled. It makes external calls, and could potentially fail if there is an issue with any associated Rate Providers.\",\"params\":{\"pool\":\"The address of the pool\"}},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\"}},\"enableQuery()\":{\"details\":\"Only works if queries are not permanently disabled.\"},\"enableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It enables a safe proportional withdrawal, with no external calls. Since there are no external calls, ensuring that entering Recovery Mode cannot fail, we cannot compute and so must forfeit any yield fees between the last operation and enabling Recovery Mode. For the same reason, live balances cannot be updated while in Recovery Mode, as doing so might cause withdrawals to fail.\",\"params\":{\"pool\":\"The address of the pool\"}},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"details\":\"All parameters are given in raw token decimal encoding. It requires the buffer to be initialized, and uses the internal wrapped token buffer when it has enough liquidity to avoid external calls.\",\"params\":{\"params\":\"Parameters for the wrap/unwrap operation (see struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"actionId\":\"The computed actionId\"}},\"getAddLiquidityCalledFlag(address)\":{\"details\":\"Taxing remove liquidity proportional whenever liquidity was added in the same `unlock` call adds an extra layer of security, discouraging operations that try to undo others for profit. Remove liquidity proportional is the only standard way to exit a position without fees, and this flag is used to enable fees in that case. It also discourages indirect swaps via unbalanced add and remove proportional, as they are expected to be worse than a simple swap for every pool type.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"liquidityAdded\":\"True if liquidity has been added to this pool in the current transaction Note that there is no `sessionId` argument; it always returns the value for the current (i.e., latest) session.\"}},\"getAggregateSwapFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"swapFeeAmount\":\"The total amount of fees accumulated in the specified token\"}},\"getAggregateYieldFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"yieldFeeAmount\":\"The total amount of fees accumulated in the specified token\"}},\"getAuthorizer()\":{\"details\":\"The authorizer holds the permissions granted by governance. It is set on Vault deployment, and can be changed through a permissioned call.\",\"returns\":{\"authorizer\":\"Address of the authorizer contract\"}},\"getBptRate(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"rate\":\"BPT rate\"}},\"getBufferAsset(address)\":{\"details\":\"The asset can never change after buffer initialization.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingToken\":\"Address of the underlying token registered for the wrapper; `address(0)` if the buffer has not been initialized.\"}},\"getBufferBalance(address)\":{\"details\":\"All values are in native token decimals of the wrapped or underlying tokens.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingBalanceRaw\":\"Amount of underlying tokens deposited into the buffer, in native token decimals\",\"wrappedBalanceRaw\":\"Amount of wrapped tokens deposited into the buffer, in native token decimals\"}},\"getBufferMinimumTotalSupply()\":{\"details\":\"This prevents buffers from being completely drained. When the buffer is initialized, this minimum number of shares is added to the shares resulting from the initial deposit. Buffer total supply accounting is internal to the Vault, as buffers are not tokenized.\",\"returns\":{\"bufferMinimumTotalSupply\":\"The minimum total supply a buffer can have after initialization\"}},\"getBufferOwnerShares(address,address)\":{\"params\":{\"liquidityOwner\":\"Address of the user that owns liquidity in the wrapped token's buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"ownerShares\":\"Amount of shares allocated to the liquidity owner, in native underlying token decimals\"}},\"getBufferPeriodDuration()\":{\"details\":\"This value is immutable. It represents the period during which, if paused, the Vault will remain paused. This ensures there is time available to address whatever issue caused the Vault to be paused. Balancer timestamps are 32 bits.\",\"returns\":{\"bufferPeriodDuration\":\"The length of the buffer period in seconds\"}},\"getBufferPeriodEndTime()\":{\"details\":\"This value is immutable. If already paused, the Vault can be unpaused until this timestamp. Balancer timestamps are 32 bits.\",\"returns\":{\"bufferPeriodEndTime\":\"The timestamp after which the Vault remains permanently unpaused\"}},\"getBufferTotalShares(address)\":{\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"bufferShares\":\"Amount of supply shares of the buffer, in native underlying token decimals\"}},\"getCurrentLiveBalances(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getERC4626BufferAsset(address)\":{\"details\":\"To avoid malicious wrappers (e.g., that might potentially change their asset after deployment), routers should never call `wrapper.asset()` directly, at least without checking it against the asset registered with the Vault on initialization.\",\"params\":{\"wrappedToken\":\"The wrapped token specifying the buffer\"},\"returns\":{\"asset\":\"The underlying asset of the wrapped token\"}},\"getHooksConfig(address)\":{\"details\":\"The `HooksConfig` contains flags indicating which pool hooks are implemented.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"hooksConfig\":\"The hooks configuration as a `HooksConfig` struct\"}},\"getMaximumPoolTokens()\":{\"returns\":{\"maxTokens\":\"The maximum token count of a pool\"}},\"getMinimumPoolTokens()\":{\"details\":\"We expect the vast majority of pools to be 2-token.\",\"returns\":{\"minTokens\":\"The minimum token count of a pool\"}},\"getMinimumTradeAmount()\":{\"details\":\"This limit is applied to the 18-decimal \\\"upscaled\\\" amount in any operation (swap, add/remove liquidity).\",\"returns\":{\"minimumTradeAmount\":\"The minimum trade amount as an 18-decimal floating point number\"}},\"getMinimumWrapAmount()\":{\"details\":\"This limit is applied to the wrap operation amount, in native underlying token decimals.\",\"returns\":{\"minimumWrapAmount\":\"The minimum wrap amount in native underlying token decimals\"}},\"getNonzeroDeltaCount()\":{\"returns\":{\"nonzeroDeltaCount\":\"The current value of `_nonzeroDeltaCount`\"}},\"getPauseWindowEndTime()\":{\"details\":\"This value is immutable, and represents the timestamp after which the Vault can no longer be paused by governance. Balancer timestamps are 32 bits.\",\"returns\":{\"pauseWindowEndTime\":\"The timestamp when the Vault's pause window ends\"}},\"getPoolConfig(address)\":{\"details\":\"The `PoolConfig` contains liquidity management and other state flags, fee percentages, the pause window.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"poolConfig\":\"The pool configuration as a `PoolConfig` struct\"}},\"getPoolData(address)\":{\"details\":\"This contains the pool configuration (flags), tokens and token types, rates, scaling factors, and balances.\",\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"poolData\":\"The `PoolData` result\"}},\"getPoolMinimumTotalSupply()\":{\"details\":\"This prevents pools from being completely drained. When the pool is initialized, this minimum amount of BPT is minted to the zero address. This is an 18-decimal floating point number; BPT are always 18 decimals.\",\"returns\":{\"poolMinimumTotalSupply\":\"The minimum total supply a pool can have after initialization\"}},\"getPoolPausedState(address)\":{\"details\":\"Note that even when set to a paused state, the pool will automatically unpause at the end of the buffer period. Balancer timestamps are 32 bits.\",\"params\":{\"pool\":\"The pool whose data is requested\"},\"returns\":{\"pauseManager\":\"The pause manager, or the zero address\",\"poolBufferPeriodEndTime\":\"The timestamp after which the Pool unpauses itself (if paused)\",\"poolPauseWindowEndTime\":\"The timestamp of the end of the Pool's pause window\",\"poolPaused\":\"True if the Pool is paused\"}},\"getPoolRoleAccounts(address)\":{\"params\":{\"pool\":\"The address of the pool whose roles are being queried\"},\"returns\":{\"roleAccounts\":\"A struct containing the role accounts for the pool (or 0 if unassigned)\"}},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"details\":\"Reverts if the pool is not registered, or if the token does not belong to the pool.\",\"params\":{\"pool\":\"Address of the pool\",\"token\":\"Address of the token\"},\"returns\":{\"index\":\"Index corresponding to the given token in the pool's token list\",\"tokenCount\":\"Number of tokens in the pool\"}},\"getPoolTokenInfo(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"The pool tokens, sorted in registration order\"}},\"getPoolTokenRates(address)\":{\"details\":\"This function performs external calls if tokens are yield-bearing. All returned arrays are in token registration order.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"decimalScalingFactors\":\"Conversion factor used to adjust for token decimals for uniform precision in calculations. FP(1) for 18-decimal tokens\",\"tokenRates\":\"18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\"}},\"getPoolTokens(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"tokens\":\"List of tokens in the pool\"}},\"getProtocolFeeController()\":{\"returns\":{\"protocolFeeController\":\"Address of the ProtocolFeeController\"}},\"getReservesOf(address)\":{\"params\":{\"token\":\"The token for which to retrieve the reserve\"},\"returns\":{\"reserveAmount\":\"The amount of reserves for the given token\"}},\"getStaticSwapFeePercentage(address)\":{\"params\":{\"pool\":\"The address of the pool whose static swap fee percentage is being queried\"},\"returns\":{\"swapFeePercentage\":\"The current static swap fee percentage for the specified pool\"}},\"getTokenDelta(address)\":{\"details\":\"This function allows reading the value from the `_tokenDeltas` mapping.\",\"params\":{\"token\":\"The token for which the delta is being fetched\"},\"returns\":{\"tokenDelta\":\"The delta of the specified token\"}},\"getVaultAdmin()\":{\"details\":\"The VaultAdmin contract mostly implements permissioned functions.\",\"returns\":{\"vaultAdmin\":\"The address of the Vault admin\"}},\"getVaultExtension()\":{\"details\":\"Function is in the main Vault contract. The VaultExtension handles less critical or frequently used functions, since delegate calls through the Vault are more expensive than direct calls.\",\"returns\":{\"vaultExtension\":\"Address of the VaultExtension\"}},\"getVaultPausedState()\":{\"details\":\"Balancer timestamps are 32 bits.\",\"returns\":{\"vaultBufferPeriodEndTime\":\"The timestamp of the end of the Vault's buffer period\",\"vaultPauseWindowEndTime\":\"The timestamp of the end of the Vault's pause window\",\"vaultPaused\":\"True if the Vault is paused\"}},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"pool\":\"Address of the pool to initialize\",\"to\":\"Address that will receive the output BPT\",\"tokens\":\"Tokens used to seed the pool (must match the registered tokens)\",\"userData\":\"Additional (optional) data required for adding initial liquidity\"},\"returns\":{\"bptAmountOut\":\"Output pool token amount\"}},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"params\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens that will be deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts. (it is the BPT of an internal ERC4626 buffer). It is expressed in underlying token native decimals.\"}},\"isERC4626BufferInitialized(address)\":{\"details\":\"An initialized buffer should have an asset registered in the Vault.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"isBufferInitialized\":\"True if the ERC4626 buffer is initialized\"}},\"isPoolInRecoveryMode(address)\":{\"details\":\"Recovery Mode enables a safe proportional withdrawal path, with no external calls.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"inRecoveryMode\":\"True if the pool is in Recovery Mode, false otherwise\"}},\"isPoolInitialized(address)\":{\"details\":\"An initialized pool can be considered registered as well.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"initialized\":\"True if the pool is initialized, false otherwise\"}},\"isPoolPaused(address)\":{\"details\":\"If a pool is paused, all non-Recovery Mode state-changing operations will revert.\",\"params\":{\"pool\":\"The pool to be checked\"},\"returns\":{\"poolPaused\":\"True if the pool is paused\"}},\"isPoolRegistered(address)\":{\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"registered\":\"True if the pool is registered, false otherwise\"}},\"isQueryDisabled()\":{\"details\":\"If true, queries might either be disabled temporarily or permanently.\",\"returns\":{\"queryDisabled\":\"True if query functionality is reversibly disabled\"}},\"isQueryDisabledPermanently()\":{\"details\":\"This is a one-way switch. Once queries are disabled permanently, they can never be re-enabled.\",\"returns\":{\"queryDisabledPermanently\":\"True if query functionality is permanently disabled\"}},\"isUnlocked()\":{\"details\":\"The Vault must be unlocked to perform state-changing liquidity operations.\",\"returns\":{\"unlocked\":\"True if the Vault is unlocked, false otherwise\"}},\"isVaultPaused()\":{\"details\":\"If the Vault is paused, all non-Recovery Mode state-changing operations on pools will revert. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `areBuffersPaused` to check the pause state of the buffers.\",\"returns\":{\"vaultPaused\":\"True if the Vault is paused\"}},\"pausePool(address)\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during pool factory deployment.\",\"params\":{\"pool\":\"The pool being paused\"}},\"pauseVault()\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during deployment. Note that ERC4626 buffer operations have an independent pause mechanism, which is not affected by pausing the Vault. Custom routers could still wrap/unwrap using buffers while the Vault is paused, unless buffers are also paused (with `pauseVaultBuffers`).\"},\"pauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. Currently it's not possible to pause vault buffers individually. This is a permissioned call, and is reversible (see `unpauseVaultBuffers`). Note that the Vault has a separate and independent pausing mechanism. It is possible to pause the Vault (i.e. pool operations), without affecting buffers, and vice versa.\"},\"quote(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}},\"quoteAndRevert(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled. This call always reverts, returning the result in the revert reason.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"}},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"details\":\"A pool can opt-out of pausing by providing a zero value for the pause window, or allow pausing indefinitely by providing a large value. (Pool pause windows are not limited by the Vault maximums.) The vault defines an additional buffer period during which a paused pool will stay paused. After the buffer period passes, a paused pool will automatically unpause. Balancer timestamps are 32 bits. A pool can opt out of Balancer governance pausing by providing a custom `pauseManager`. This might be a multi-sig contract or an arbitrary smart contract with its own access controls, that forwards calls to the Vault. If the zero address is provided for the `pauseManager`, permissions for pausing the pool will default to the authorizer.\",\"params\":{\"liquidityManagement\":\"Liquidity management flags with implemented methods\",\"pauseWindowEndTime\":\"The timestamp after which it is no longer possible to pause the pool\",\"pool\":\"The address of the pool being registered\",\"poolHooksContract\":\"Contract that implements the hooks for the pool\",\"protocolFeeExempt\":\"If true, the pool's initial aggregate fees will be set to 0\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The initial static swap fee percentage of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"details\":\"Trusted routers can burn pool tokens belonging to any user and require no prior approval from the user. Untrusted routers require prior approval from the user. This is the only function allowed to call _queryModeBalanceIncrease (and only in a query context).\",\"params\":{\"params\":\"Parameters for the remove liquidity (see above for struct definition)\"},\"returns\":{\"amountsOut\":\"Actual amounts of output tokens\",\"bptAmountIn\":\"Actual amount of BPT burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Only proportional exits are supported, and the sender has to be the owner of the shares. This function unlocks the Vault just for this operation; it does not work with a Router as an entrypoint. Pre-conditions: - The buffer needs to be initialized. - sharesOwner is the original msg.sender, it needs to be checked in the Router. That's why this call is authenticated; only routers approved by the DAO can remove the liquidity of a buffer. - The buffer needs to have some liquidity and have its asset registered in `_bufferAssets` storage.\",\"params\":{\"minAmountUnderlyingOutRaw\":\"Minimum amount of underlying tokens to receive from the buffer. It is expressed in underlying token native decimals\",\"minAmountWrappedOutRaw\":\"Minimum amount of wrapped tokens to receive from the buffer. It is expressed in wrapped token native decimals\",\"sharesToRemove\":\"Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's total shares. It is expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceRaw\":\"Amount of underlying tokens returned to the user\",\"removedWrappedBalanceRaw\":\"Amount of wrapped tokens returned to the user\"}},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Input pool token amount\",\"from\":\"Address of user to burn pool tokens from\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the pool\"},\"returns\":{\"amountsOut\":\"Actual calculated amounts of output tokens, sorted in token registration order\"}},\"sendTo(address,address,uint256)\":{\"details\":\"There is no inverse operation for this function. Transfer funds to the Vault and call `settle` to cancel debts.\",\"params\":{\"amount\":\"Amount of tokens to send\",\"to\":\"Recipient address\",\"token\":\"Address of the token\"}},\"setAuthorizer(address)\":{\"details\":\"This is a permissioned call. Emits an `AuthorizerChanged` event.\",\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"setProtocolFeeController(address)\":{\"details\":\"This is a permissioned call. Emits a `ProtocolFeeControllerChanged` event.\",\"params\":{\"newProtocolFeeController\":\"The address of the new Protocol Fee Controller\"}},\"setStaticSwapFeePercentage(address,uint256)\":{\"details\":\"This is a permissioned function, disabled if the pool is paused. The swap fee percentage must be within the bounds specified by the pool's implementation of `ISwapFeePercentageBounds`. Emits the SwapFeePercentageChanged event.\",\"params\":{\"pool\":\"The address of the pool for which the static swap fee will be changed\",\"swapFeePercentage\":\"The new swap fee percentage to apply to the pool\"}},\"settle(address,uint256)\":{\"details\":\"Protects the caller against leftover dust in the Vault for the token being settled. The caller should know in advance how many tokens were paid to the Vault, so it can provide it as a hint to discard any excess in the Vault balance. If the given hint is equal to or higher than the difference in reserves, the difference in reserves is given as credit to the caller. If it's higher, the caller sent fewer tokens than expected, so settlement would fail. If the given hint is lower than the difference in reserves, the hint is given as credit to the caller. In this case, the excess would be absorbed by the Vault (and reflected correctly in the reserves), but would not affect settlement. The credit supplied by the Vault can be calculated as `min(reserveDifference, amountHint)`, where the reserve difference equals current balance of the token minus existing reserves of the token when the function is called.\",\"params\":{\"amountHint\":\"Amount paid as reported by the caller\",\"token\":\"Address of the token\"},\"returns\":{\"credit\":\"Credit received in return of the payment\"}},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"details\":\"All parameters are given in raw token decimal encoding.\",\"params\":{\"vaultSwapParams\":\"Parameters for the swap (see above for struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"totalSupply(address)\":{\"params\":{\"token\":\"The token address\"},\"returns\":{\"tokenTotalSupply\":\"Total supply of the token\"}},\"transfer(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"owner\":\"Address of the owner\",\"to\":\"Address of the recipient\"},\"returns\":{\"_0\":\"success True if successful, false otherwise\"}},\"transferFrom(address,address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"from\":\"Address of the sender\",\"spender\":\"Address allowed to perform the transfer\",\"to\":\"Address of the recipient\"},\"returns\":{\"success\":\"True if successful, false otherwise\"}},\"unlock(bytes)\":{\"details\":\"Performs a callback on msg.sender with arguments provided in `data`. The Callback is `transient`, meaning all balances for the caller have to be settled at the end.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}},\"unpausePool(address)\":{\"details\":\"This is a permissioned function that will only work on a paused Pool within the Buffer Period set during deployment. Note that the Pool will automatically unpause after the Buffer Period expires.\",\"params\":{\"pool\":\"The pool being unpaused\"}},\"unpauseVault()\":{\"details\":\"This is a permissioned function that will only work on a paused Vault within the Buffer Period set during deployment. Note that the Vault will automatically unpause after the Buffer Period expires. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing the Vault does not reverse `pauseVaultBuffers`. If buffers were also paused, they will remain in that state until explicitly unpaused.\"},\"unpauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing buffers does not reverse `pauseVault`. If the Vault was also paused, it will remain in that state until explicitly unpaused. This is a permissioned call.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateSwapFeePercentageChanged` event.\",\"params\":{\"newAggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose swap fee percentage will be updated\"}},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateYieldFeePercentageChanged` event.\",\"params\":{\"newAggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose yield fee percentage will be updated\"}},\"vault()\":{\"returns\":{\"_0\":\"vault The main Vault address.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"notice\":\"Adds liquidity to a pool.\"},\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Adds liquidity to an internal ERC4626 buffer in the Vault, proportionally.\"},\"allowance(address,address,address)\":{\"notice\":\"Gets the allowance of a spender for a given ERC20 token and owner.\"},\"approve(address,address,uint256)\":{\"notice\":\"Approves a spender to spend pool tokens on behalf of sender.\"},\"areBuffersPaused()\":{\"notice\":\"Indicates whether the Vault buffers are paused.\"},\"balanceOf(address,address)\":{\"notice\":\"Gets the balance of an account for a given ERC20 token.\"},\"collectAggregateFees(address)\":{\"notice\":\"Collects accumulated aggregate swap and yield fees for the specified pool.\"},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Query the current dynamic swap fee percentage of a pool, given a set of swap parameters.\"},\"disableQuery()\":{\"notice\":\"Disables query functionality on the Vault. Can only be called by governance.\"},\"disableQueryPermanently()\":{\"notice\":\"Disables query functionality permanently on the Vault. Can only be called by governance.\"},\"disableRecoveryMode(address)\":{\"notice\":\"Disable recovery mode for a pool.\"},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"enableQuery()\":{\"notice\":\"Enables query functionality on the Vault. Can only be called by governance.\"},\"enableRecoveryMode(address)\":{\"notice\":\"Enable recovery mode for a pool.\"},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"notice\":\"Wraps/unwraps tokens based on the parameters provided.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAddLiquidityCalledFlag(address)\":{\"notice\":\"This flag is used to detect and tax \\\"round-trip\\\" interactions (adding and removing liquidity in the same pool).\"},\"getAggregateSwapFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated swap fees (including aggregate fees) in `token` collected by the pool.\"},\"getAggregateYieldFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated yield fees (including aggregate fees) in `token` collected by the pool.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer address.\"},\"getBptRate(address)\":{\"notice\":\"The current rate of a pool token (BPT) = invariant / totalSupply.\"},\"getBufferAsset(address)\":{\"notice\":\"Returns the asset registered for a given wrapped token.\"},\"getBufferBalance(address)\":{\"notice\":\"Returns the amount of underlying and wrapped tokens deposited in the internal buffer of the Vault.\"},\"getBufferMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of an ERC4626 wrapped token buffer in the Vault.\"},\"getBufferOwnerShares(address,address)\":{\"notice\":\"Returns the shares (internal buffer BPT) of a liquidity owner: a user that deposited assets in the buffer.\"},\"getBufferPeriodDuration()\":{\"notice\":\"Returns the Vault's buffer period duration.\"},\"getBufferPeriodEndTime()\":{\"notice\":\"Returns the Vault's buffer period end time.\"},\"getBufferTotalShares(address)\":{\"notice\":\"Returns the supply shares (internal buffer BPT) of the ERC4626 buffer.\"},\"getCurrentLiveBalances(address)\":{\"notice\":\"Gets current live balances of a given pool (fixed-point, 18 decimals), corresponding to its tokens in registration order.\"},\"getERC4626BufferAsset(address)\":{\"notice\":\"Gets the registered asset for a given buffer.\"},\"getHooksConfig(address)\":{\"notice\":\"Gets the hooks configuration parameters of a pool.\"},\"getMaximumPoolTokens()\":{\"notice\":\"Get the maximum number of tokens in a pool.\"},\"getMinimumPoolTokens()\":{\"notice\":\"Get the minimum number of tokens in a pool.\"},\"getMinimumTradeAmount()\":{\"notice\":\"Get the minimum trade amount in a pool operation.\"},\"getMinimumWrapAmount()\":{\"notice\":\"Get the minimum wrap amount in a buffer operation.\"},\"getNonzeroDeltaCount()\":{\"notice\":\"Returns the count of non-zero deltas.\"},\"getPauseWindowEndTime()\":{\"notice\":\"Returns the Vault's pause window end time.\"},\"getPoolConfig(address)\":{\"notice\":\"Gets the configuration parameters of a pool.\"},\"getPoolData(address)\":{\"notice\":\"Returns comprehensive pool data for the given pool.\"},\"getPoolMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of pool tokens (BPT) for an initialized pool.\"},\"getPoolPausedState(address)\":{\"notice\":\"Returns the paused status, and end times of the Pool's pause window and buffer period.\"},\"getPoolRoleAccounts(address)\":{\"notice\":\"Fetches the role accounts for a given pool (pause manager, swap manager, pool creator)\"},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"notice\":\"Gets the index of a token in a given pool.\"},\"getPoolTokenInfo(address)\":{\"notice\":\"Gets the raw data for a pool: tokens, raw balances, scaling factors.\"},\"getPoolTokenRates(address)\":{\"notice\":\"Gets pool token rates.\"},\"getPoolTokens(address)\":{\"notice\":\"Gets the tokens registered to a pool.\"},\"getProtocolFeeController()\":{\"notice\":\"Returns the Protocol Fee Controller address.\"},\"getReservesOf(address)\":{\"notice\":\"Retrieves the reserve (i.e., total Vault balance) of a given token.\"},\"getStaticSwapFeePercentage(address)\":{\"notice\":\"Fetches the static swap fee percentage for a given pool.\"},\"getTokenDelta(address)\":{\"notice\":\"Retrieves the token delta for a specific token.\"},\"getVaultAdmin()\":{\"notice\":\"Returns the VaultAdmin contract address.\"},\"getVaultExtension()\":{\"notice\":\"Returns the VaultExtension contract address.\"},\"getVaultPausedState()\":{\"notice\":\"Returns the paused status, and end times of the Vault's pause window and buffer period.\"},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"notice\":\"Initializes a registered pool by adding liquidity; mints BPT tokens for the first time in exchange.\"},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Initializes buffer for the given wrapped token.\"},\"isERC4626BufferInitialized(address)\":{\"notice\":\"Checks if the wrapped token has an initialized buffer in the Vault.\"},\"isPoolInRecoveryMode(address)\":{\"notice\":\"Checks whether a pool is in Recovery Mode.\"},\"isPoolInitialized(address)\":{\"notice\":\"Checks whether a pool is initialized.\"},\"isPoolPaused(address)\":{\"notice\":\"Indicates whether a pool is paused.\"},\"isPoolRegistered(address)\":{\"notice\":\"Checks whether a pool is registered.\"},\"isQueryDisabled()\":{\"notice\":\"Returns true if queries are disabled on the Vault.\"},\"isQueryDisabledPermanently()\":{\"notice\":\"Returns true if queries are disabled permanently; false if they are enabled.\"},\"isUnlocked()\":{\"notice\":\"Returns whether the Vault is unlocked (i.e., executing an operation).\"},\"isVaultPaused()\":{\"notice\":\"Indicates whether the Vault is paused.\"},\"pausePool(address)\":{\"notice\":\"Pause the Pool: an emergency action which disables all pool functions.\"},\"pauseVault()\":{\"notice\":\"Pause the Vault: an emergency action which disables all operational state-changing functions on pools.\"},\"pauseVaultBuffers()\":{\"notice\":\"Pauses native vault buffers globally.\"},\"quote(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"quoteAndRevert(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"notice\":\"Registers a pool, associating it with its factory and the tokens it manages.\"},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"notice\":\"Removes liquidity from a pool.\"},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Removes liquidity from an internal ERC4626 buffer in the Vault.\"},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"notice\":\"Remove liquidity from a pool specifying exact pool tokens in, with proportional token amounts out. The request is implemented by the Vault without any interaction with the pool, ensuring that it works the same for all pools, and cannot be disabled by a new pool type.\"},\"sendTo(address,address,uint256)\":{\"notice\":\"Sends tokens to a recipient.\"},\"setAuthorizer(address)\":{\"notice\":\"Sets a new Authorizer for the Vault.\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets a new Protocol Fee Controller for the Vault.\"},\"setStaticSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new static swap fee percentage to the specified pool.\"},\"settle(address,uint256)\":{\"notice\":\"Settles deltas for a token; must be successful for the current lock to be released.\"},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"notice\":\"Swaps tokens based on provided parameters.\"},\"totalSupply(address)\":{\"notice\":\"Gets the total supply of a given ERC20 token.\"},\"transfer(address,address,uint256)\":{\"notice\":\"Transfers pool token from owner to a recipient.\"},\"transferFrom(address,address,address,uint256)\":{\"notice\":\"Transfers pool token from a sender to a recipient using an allowance.\"},\"unlock(bytes)\":{\"notice\":\"Creates a context for a sequence of operations (i.e., \\\"unlocks\\\" the Vault).\"},\"unpausePool(address)\":{\"notice\":\"Reverse a `pause` operation, and restore the Pool to normal functionality.\"},\"unpauseVault()\":{\"notice\":\"Reverse a `pause` operation, and restore Vault pool operations to normal functionality.\"},\"unpauseVaultBuffers()\":{\"notice\":\"Unpauses native vault buffers globally.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate swap fee percentage.\"},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate yield fee percentage.\"}},\"notice\":\"Composite interface for all Vault operations: swap, add/remove liquidity, and associated queries.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":\"IVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol":{"IVaultAdmin":{"abi":[{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areBuffersPaused","outputs":[{"internalType":"bool","name":"buffersPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"yieldFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQueryPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferAsset","outputs":[{"internalType":"address","name":"underlyingToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferBalance","outputs":[{"internalType":"uint256","name":"underlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"wrappedBalanceRaw","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"bufferMinimumTotalSupply","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"liquidityOwner","type":"address"}],"name":"getBufferOwnerShares","outputs":[{"internalType":"uint256","name":"ownerShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodDuration","outputs":[{"internalType":"uint32","name":"bufferPeriodDuration","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodEndTime","outputs":[{"internalType":"uint32","name":"bufferPeriodEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferTotalShares","outputs":[{"internalType":"uint256","name":"bufferShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumPoolTokens","outputs":[{"internalType":"uint256","name":"maxTokens","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumPoolTokens","outputs":[{"internalType":"uint256","name":"minTokens","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumTradeAmount","outputs":[{"internalType":"uint256","name":"minimumTradeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumWrapAmount","outputs":[{"internalType":"uint256","name":"minimumWrapAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"poolMinimumTotalSupply","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getVaultPausedState","outputs":[{"internalType":"bool","name":"vaultPaused","type":"bool"},{"internalType":"uint32","name":"vaultPauseWindowEndTime","type":"uint32"},{"internalType":"uint32","name":"vaultBufferPeriodEndTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isVaultPaused","outputs":[{"internalType":"bool","name":"vaultPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"pausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOutRaw","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOutRaw","type":"uint256"}],"name":"removeLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"setProtocolFeeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"setStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"unpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"updateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateYieldFeePercentage","type":"uint256"}],"name":"updateAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addLiquidityToBuffer(address,uint256,uint256,uint256,address)":"e2a92b1a","areBuffersPaused()":"55cba7fe","collectAggregateFees(address)":"8f4ab9ca","disableQuery()":"de1a36a6","disableQueryPermanently()":"821440f2","disableRecoveryMode(address)":"bffb78b2","enableQuery()":"e0d55605","enableRecoveryMode(address)":"dc3f574e","getBufferAsset(address)":"0387587d","getBufferBalance(address)":"4021fe0f","getBufferMinimumTotalSupply()":"26a8a991","getBufferOwnerShares(address,address)":"9385e39a","getBufferPeriodDuration()":"20c1fb7a","getBufferPeriodEndTime()":"cd51c12f","getBufferTotalShares(address)":"f2784e07","getMaximumPoolTokens()":"2e42f4d5","getMinimumPoolTokens()":"a8175b27","getMinimumTradeAmount()":"e2cb0ba0","getMinimumWrapAmount()":"53956aa2","getPauseWindowEndTime()":"8a8d123a","getPoolMinimumTotalSupply()":"d0965a6b","getVaultPausedState()":"85c8c015","initializeBuffer(address,uint256,uint256,uint256,address)":"653eb3b0","isVaultPaused()":"098401f5","pausePool(address)":"55aca1ec","pauseVault()":"9e0879c2","pauseVaultBuffers()":"e085c5a8","removeLiquidityFromBuffer(address,uint256,uint256,uint256)":"ebc7955c","setAuthorizer(address)":"058a628f","setProtocolFeeController(address)":"2d771389","setStaticSwapFeePercentage(address,uint256)":"d15126ba","unpausePool(address)":"f21c38cd","unpauseVault()":"0b7562be","unpauseVaultBuffers()":"b9212b49","updateAggregateSwapFeePercentage(address,uint256)":"5e0b06f4","updateAggregateYieldFeePercentage(address,uint256)":"e253670a","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"areBuffersPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"buffersPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"yieldFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQueryPermanently\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"underlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bufferMinimumTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityOwner\",\"type\":\"address\"}],\"name\":\"getBufferOwnerShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ownerShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferTotalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bufferShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxTokens\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minTokens\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumTradeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumTradeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumWrapAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumWrapAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"poolMinimumTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"vaultPaused\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"vaultPauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"vaultBufferPeriodEndTime\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isVaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"vaultPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOutRaw\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"unpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"`VaultAdmin` is the Proxy extension of `VaultExtension`, and handles the least critical operations, as two delegate calls add gas to each call. Most of the permissioned calls are here.\",\"kind\":\"dev\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"details\":\"The buffer needs to be initialized beforehand.\",\"params\":{\"exactSharesToIssue\":\"The value in underlying tokens that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingInRaw\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedInRaw\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens deposited into the buffer\"}},\"areBuffersPaused()\":{\"details\":\"When buffers are paused, all buffer operations (i.e., calls on the Router with `isBuffer` true) will revert. Pausing buffers is reversible. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `isVaultPaused` to check the pause state of the Vault.\",\"returns\":{\"buffersPaused\":\"True if the Vault buffers are paused\"}},\"collectAggregateFees(address)\":{\"details\":\"Fees are sent to the ProtocolFeeController address.\",\"params\":{\"pool\":\"The pool on which all aggregate fees should be collected\"},\"returns\":{\"swapFeeAmounts\":\"An array with the total swap fees collected, sorted in token registration order\",\"yieldFeeAmounts\":\"An array with the total yield fees collected, sorted in token registration order\"}},\"disableQuery()\":{\"details\":\"The query functions rely on a specific EVM feature to detect static calls. Query operations are exempt from settlement constraints, so it's critical that no state changes can occur. We retain the ability to disable queries in the unlikely event that EVM changes violate its assumptions (perhaps on an L2). This function can be acted upon as an emergency measure in ambiguous contexts where it's not 100% clear whether disabling queries is completely necessary; queries can still be re-enabled after this call.\"},\"disableQueryPermanently()\":{\"details\":\"Shall only be used when there is no doubt that queries pose a fundamental threat to the system.\"},\"disableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It re-syncs live balances (which could not be updated during Recovery Mode), forfeiting any yield fees that accrued while enabled. It makes external calls, and could potentially fail if there is an issue with any associated Rate Providers.\",\"params\":{\"pool\":\"The address of the pool\"}},\"enableQuery()\":{\"details\":\"Only works if queries are not permanently disabled.\"},\"enableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It enables a safe proportional withdrawal, with no external calls. Since there are no external calls, ensuring that entering Recovery Mode cannot fail, we cannot compute and so must forfeit any yield fees between the last operation and enabling Recovery Mode. For the same reason, live balances cannot be updated while in Recovery Mode, as doing so might cause withdrawals to fail.\",\"params\":{\"pool\":\"The address of the pool\"}},\"getBufferAsset(address)\":{\"details\":\"The asset can never change after buffer initialization.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingToken\":\"Address of the underlying token registered for the wrapper; `address(0)` if the buffer has not been initialized.\"}},\"getBufferBalance(address)\":{\"details\":\"All values are in native token decimals of the wrapped or underlying tokens.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingBalanceRaw\":\"Amount of underlying tokens deposited into the buffer, in native token decimals\",\"wrappedBalanceRaw\":\"Amount of wrapped tokens deposited into the buffer, in native token decimals\"}},\"getBufferMinimumTotalSupply()\":{\"details\":\"This prevents buffers from being completely drained. When the buffer is initialized, this minimum number of shares is added to the shares resulting from the initial deposit. Buffer total supply accounting is internal to the Vault, as buffers are not tokenized.\",\"returns\":{\"bufferMinimumTotalSupply\":\"The minimum total supply a buffer can have after initialization\"}},\"getBufferOwnerShares(address,address)\":{\"params\":{\"liquidityOwner\":\"Address of the user that owns liquidity in the wrapped token's buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"ownerShares\":\"Amount of shares allocated to the liquidity owner, in native underlying token decimals\"}},\"getBufferPeriodDuration()\":{\"details\":\"This value is immutable. It represents the period during which, if paused, the Vault will remain paused. This ensures there is time available to address whatever issue caused the Vault to be paused. Balancer timestamps are 32 bits.\",\"returns\":{\"bufferPeriodDuration\":\"The length of the buffer period in seconds\"}},\"getBufferPeriodEndTime()\":{\"details\":\"This value is immutable. If already paused, the Vault can be unpaused until this timestamp. Balancer timestamps are 32 bits.\",\"returns\":{\"bufferPeriodEndTime\":\"The timestamp after which the Vault remains permanently unpaused\"}},\"getBufferTotalShares(address)\":{\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"bufferShares\":\"Amount of supply shares of the buffer, in native underlying token decimals\"}},\"getMaximumPoolTokens()\":{\"returns\":{\"maxTokens\":\"The maximum token count of a pool\"}},\"getMinimumPoolTokens()\":{\"details\":\"We expect the vast majority of pools to be 2-token.\",\"returns\":{\"minTokens\":\"The minimum token count of a pool\"}},\"getMinimumTradeAmount()\":{\"details\":\"This limit is applied to the 18-decimal \\\"upscaled\\\" amount in any operation (swap, add/remove liquidity).\",\"returns\":{\"minimumTradeAmount\":\"The minimum trade amount as an 18-decimal floating point number\"}},\"getMinimumWrapAmount()\":{\"details\":\"This limit is applied to the wrap operation amount, in native underlying token decimals.\",\"returns\":{\"minimumWrapAmount\":\"The minimum wrap amount in native underlying token decimals\"}},\"getPauseWindowEndTime()\":{\"details\":\"This value is immutable, and represents the timestamp after which the Vault can no longer be paused by governance. Balancer timestamps are 32 bits.\",\"returns\":{\"pauseWindowEndTime\":\"The timestamp when the Vault's pause window ends\"}},\"getPoolMinimumTotalSupply()\":{\"details\":\"This prevents pools from being completely drained. When the pool is initialized, this minimum amount of BPT is minted to the zero address. This is an 18-decimal floating point number; BPT are always 18 decimals.\",\"returns\":{\"poolMinimumTotalSupply\":\"The minimum total supply a pool can have after initialization\"}},\"getVaultPausedState()\":{\"details\":\"Balancer timestamps are 32 bits.\",\"returns\":{\"vaultBufferPeriodEndTime\":\"The timestamp of the end of the Vault's buffer period\",\"vaultPauseWindowEndTime\":\"The timestamp of the end of the Vault's pause window\",\"vaultPaused\":\"True if the Vault is paused\"}},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"params\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens that will be deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts. (it is the BPT of an internal ERC4626 buffer). It is expressed in underlying token native decimals.\"}},\"isVaultPaused()\":{\"details\":\"If the Vault is paused, all non-Recovery Mode state-changing operations on pools will revert. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `areBuffersPaused` to check the pause state of the buffers.\",\"returns\":{\"vaultPaused\":\"True if the Vault is paused\"}},\"pausePool(address)\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during pool factory deployment.\",\"params\":{\"pool\":\"The pool being paused\"}},\"pauseVault()\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during deployment. Note that ERC4626 buffer operations have an independent pause mechanism, which is not affected by pausing the Vault. Custom routers could still wrap/unwrap using buffers while the Vault is paused, unless buffers are also paused (with `pauseVaultBuffers`).\"},\"pauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. Currently it's not possible to pause vault buffers individually. This is a permissioned call, and is reversible (see `unpauseVaultBuffers`). Note that the Vault has a separate and independent pausing mechanism. It is possible to pause the Vault (i.e. pool operations), without affecting buffers, and vice versa.\"},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Only proportional exits are supported, and the sender has to be the owner of the shares. This function unlocks the Vault just for this operation; it does not work with a Router as an entrypoint. Pre-conditions: - The buffer needs to be initialized. - sharesOwner is the original msg.sender, it needs to be checked in the Router. That's why this call is authenticated; only routers approved by the DAO can remove the liquidity of a buffer. - The buffer needs to have some liquidity and have its asset registered in `_bufferAssets` storage.\",\"params\":{\"minAmountUnderlyingOutRaw\":\"Minimum amount of underlying tokens to receive from the buffer. It is expressed in underlying token native decimals\",\"minAmountWrappedOutRaw\":\"Minimum amount of wrapped tokens to receive from the buffer. It is expressed in wrapped token native decimals\",\"sharesToRemove\":\"Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's total shares. It is expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceRaw\":\"Amount of underlying tokens returned to the user\",\"removedWrappedBalanceRaw\":\"Amount of wrapped tokens returned to the user\"}},\"setAuthorizer(address)\":{\"details\":\"This is a permissioned call. Emits an `AuthorizerChanged` event.\",\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"setProtocolFeeController(address)\":{\"details\":\"This is a permissioned call. Emits a `ProtocolFeeControllerChanged` event.\",\"params\":{\"newProtocolFeeController\":\"The address of the new Protocol Fee Controller\"}},\"setStaticSwapFeePercentage(address,uint256)\":{\"details\":\"This is a permissioned function, disabled if the pool is paused. The swap fee percentage must be within the bounds specified by the pool's implementation of `ISwapFeePercentageBounds`. Emits the SwapFeePercentageChanged event.\",\"params\":{\"pool\":\"The address of the pool for which the static swap fee will be changed\",\"swapFeePercentage\":\"The new swap fee percentage to apply to the pool\"}},\"unpausePool(address)\":{\"details\":\"This is a permissioned function that will only work on a paused Pool within the Buffer Period set during deployment. Note that the Pool will automatically unpause after the Buffer Period expires.\",\"params\":{\"pool\":\"The pool being unpaused\"}},\"unpauseVault()\":{\"details\":\"This is a permissioned function that will only work on a paused Vault within the Buffer Period set during deployment. Note that the Vault will automatically unpause after the Buffer Period expires. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing the Vault does not reverse `pauseVaultBuffers`. If buffers were also paused, they will remain in that state until explicitly unpaused.\"},\"unpauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing buffers does not reverse `pauseVault`. If the Vault was also paused, it will remain in that state until explicitly unpaused. This is a permissioned call.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateSwapFeePercentageChanged` event.\",\"params\":{\"newAggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose swap fee percentage will be updated\"}},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateYieldFeePercentageChanged` event.\",\"params\":{\"newAggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose yield fee percentage will be updated\"}},\"vault()\":{\"details\":\"The main Vault contains the entrypoint and main liquidity operation implementations.\",\"returns\":{\"_0\":\"vault The address of the main Vault\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Adds liquidity to an internal ERC4626 buffer in the Vault, proportionally.\"},\"areBuffersPaused()\":{\"notice\":\"Indicates whether the Vault buffers are paused.\"},\"collectAggregateFees(address)\":{\"notice\":\"Collects accumulated aggregate swap and yield fees for the specified pool.\"},\"disableQuery()\":{\"notice\":\"Disables query functionality on the Vault. Can only be called by governance.\"},\"disableQueryPermanently()\":{\"notice\":\"Disables query functionality permanently on the Vault. Can only be called by governance.\"},\"disableRecoveryMode(address)\":{\"notice\":\"Disable recovery mode for a pool.\"},\"enableQuery()\":{\"notice\":\"Enables query functionality on the Vault. Can only be called by governance.\"},\"enableRecoveryMode(address)\":{\"notice\":\"Enable recovery mode for a pool.\"},\"getBufferAsset(address)\":{\"notice\":\"Returns the asset registered for a given wrapped token.\"},\"getBufferBalance(address)\":{\"notice\":\"Returns the amount of underlying and wrapped tokens deposited in the internal buffer of the Vault.\"},\"getBufferMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of an ERC4626 wrapped token buffer in the Vault.\"},\"getBufferOwnerShares(address,address)\":{\"notice\":\"Returns the shares (internal buffer BPT) of a liquidity owner: a user that deposited assets in the buffer.\"},\"getBufferPeriodDuration()\":{\"notice\":\"Returns the Vault's buffer period duration.\"},\"getBufferPeriodEndTime()\":{\"notice\":\"Returns the Vault's buffer period end time.\"},\"getBufferTotalShares(address)\":{\"notice\":\"Returns the supply shares (internal buffer BPT) of the ERC4626 buffer.\"},\"getMaximumPoolTokens()\":{\"notice\":\"Get the maximum number of tokens in a pool.\"},\"getMinimumPoolTokens()\":{\"notice\":\"Get the minimum number of tokens in a pool.\"},\"getMinimumTradeAmount()\":{\"notice\":\"Get the minimum trade amount in a pool operation.\"},\"getMinimumWrapAmount()\":{\"notice\":\"Get the minimum wrap amount in a buffer operation.\"},\"getPauseWindowEndTime()\":{\"notice\":\"Returns the Vault's pause window end time.\"},\"getPoolMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of pool tokens (BPT) for an initialized pool.\"},\"getVaultPausedState()\":{\"notice\":\"Returns the paused status, and end times of the Vault's pause window and buffer period.\"},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Initializes buffer for the given wrapped token.\"},\"isVaultPaused()\":{\"notice\":\"Indicates whether the Vault is paused.\"},\"pausePool(address)\":{\"notice\":\"Pause the Pool: an emergency action which disables all pool functions.\"},\"pauseVault()\":{\"notice\":\"Pause the Vault: an emergency action which disables all operational state-changing functions on pools.\"},\"pauseVaultBuffers()\":{\"notice\":\"Pauses native vault buffers globally.\"},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Removes liquidity from an internal ERC4626 buffer in the Vault.\"},\"setAuthorizer(address)\":{\"notice\":\"Sets a new Authorizer for the Vault.\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets a new Protocol Fee Controller for the Vault.\"},\"setStaticSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new static swap fee percentage to the specified pool.\"},\"unpausePool(address)\":{\"notice\":\"Reverse a `pause` operation, and restore the Pool to normal functionality.\"},\"unpauseVault()\":{\"notice\":\"Reverse a `pause` operation, and restore Vault pool operations to normal functionality.\"},\"unpauseVaultBuffers()\":{\"notice\":\"Unpauses native vault buffers globally.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate swap fee percentage.\"},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate yield fee percentage.\"},\"vault()\":{\"notice\":\"Returns the main Vault address.\"}},\"notice\":\"Interface for functions defined on the `VaultAdmin` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":\"IVaultAdmin\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol":{"IVaultErrors":{"abi":[{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Errors are declared inside an interface (namespace) to improve DX with Typechain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":\"IVaultErrors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol":{"IVaultEvents":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Events are declared inside an interface (namespace) to improve DX with Typechain.\",\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":\"IVaultEvents\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol":{"IVaultExtension":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"tokenAllowance","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":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"tokenBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"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":"swapParams","type":"tuple"}],"name":"computeDynamicSwapFeePercentage","outputs":[{"internalType":"uint256","name":"dynamicSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"emitAuxiliaryEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getAddLiquidityCalledFlag","outputs":[{"internalType":"bool","name":"liquidityAdded","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"yieldFeeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"authorizer","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getBptRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getERC4626BufferAsset","outputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getHooksConfig","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNonzeroDeltaCount","outputs":[{"internalType":"uint256","name":"nonzeroDeltaCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolConfig","outputs":[{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"poolConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolPausedState","outputs":[{"internalType":"bool","name":"poolPaused","type":"bool"},{"internalType":"uint32","name":"poolPauseWindowEndTime","type":"uint32"},{"internalType":"uint32","name":"poolBufferPeriodEndTime","type":"uint32"},{"internalType":"address","name":"pauseManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolRoleAccounts","outputs":[{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenInfo","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":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenRates","outputs":[{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"protocolFeeController","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getReservesOf","outputs":[{"internalType":"uint256","name":"reserveAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getStaticSwapFeePercentage","outputs":[{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenDelta","outputs":[{"internalType":"int256","name":"tokenDelta","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultAdmin","outputs":[{"internalType":"address","name":"vaultAdmin","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"isERC4626BufferInitialized","outputs":[{"internalType":"bool","name":"isBufferInitialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInRecoveryMode","outputs":[{"internalType":"bool","name":"inRecoveryMode","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInitialized","outputs":[{"internalType":"bool","name":"initialized","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolPaused","outputs":[{"internalType":"bool","name":"poolPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolRegistered","outputs":[{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabled","outputs":[{"internalType":"bool","name":"queryDisabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabledPermanently","outputs":[{"internalType":"bool","name":"queryDisabledPermanently","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"unlocked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quote","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quoteAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"tokenTotalSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address,address)":"927da105","approve(address,address,uint256)":"e1f21c67","balanceOf(address,address)":"f7888aec","computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))":"4d472bdd","emitAuxiliaryEvent(bytes32,bytes)":"c8088247","getAddLiquidityCalledFlag(address)":"ace9b89b","getAggregateSwapFeeAmount(address,address)":"85e0b999","getAggregateYieldFeeAmount(address,address)":"00fdfa13","getAuthorizer()":"aaabadc5","getBptRate(address)":"4f037ee7","getCurrentLiveBalances(address)":"535cfd8a","getERC4626BufferAsset(address)":"4afbaf5a","getHooksConfig(address)":"ce8630d4","getNonzeroDeltaCount()":"db817187","getPoolConfig(address)":"f29486a1","getPoolData(address)":"13d21cdf","getPoolPausedState(address)":"15e32046","getPoolRoleAccounts(address)":"e9ddeb26","getPoolTokenInfo(address)":"67e0e076","getPoolTokenRates(address)":"7e361bde","getPoolTokens(address)":"ca4f2803","getProtocolFeeController()":"85f2dbd4","getReservesOf(address)":"96787092","getStaticSwapFeePercentage(address)":"b45090f9","getTokenDelta(address)":"9e825ff5","getVaultAdmin()":"1ba0ae45","initialize(address,address,address[],uint256[],uint256,bytes)":"ba8a2be0","isERC4626BufferInitialized(address)":"6844846b","isPoolInRecoveryMode(address)":"be7d628a","isPoolInitialized(address)":"532cec7c","isPoolPaused(address)":"6c9bc732","isPoolRegistered(address)":"c673bdaf","isQueryDisabled()":"b4aef0ab","isQueryDisabledPermanently()":"13ef8a5d","isUnlocked()":"8380edb7","quote(bytes)":"edfa3568","quoteAndRevert(bytes)":"757d64b3","registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"eeec802f","removeLiquidityRecovery(address,address,uint256,uint256[])":"a07d6040","totalSupply(address)":"e4dc2aa4","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAllowance\",\"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\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"swapParams\",\"type\":\"tuple\"}],\"name\":\"computeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"emitAuxiliaryEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getAddLiquidityCalledFlag\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"liquidityAdded\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"yieldFeeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"authorizer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getBptRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getERC4626BufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getHooksConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonzeroDeltaCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"poolConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"poolPaused\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"poolPauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"poolBufferPeriodEndTime\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolRoleAccounts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"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\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenRates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getReservesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getStaticSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"tokenDelta\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vaultAdmin\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"isERC4626BufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isBufferInitialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"inRecoveryMode\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"poolPaused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"queryDisabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabledPermanently\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"queryDisabledPermanently\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"unlocked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quoteAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenTotalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"`VaultExtension` handles less critical or frequently used functions, since delegate calls through the Vault are more expensive than direct calls. The main Vault contains the core code for swaps and liquidity operations.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address,address)\":{\"params\":{\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\",\"token\":\"Address of the token\"},\"returns\":{\"tokenAllowance\":\"Amount of tokens the spender is allowed to spend\"}},\"approve(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to approve\",\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\"},\"returns\":{\"success\":\"True if successful, false otherwise\"}},\"balanceOf(address,address)\":{\"params\":{\"account\":\"Address of the account\",\"token\":\"Address of the token\"},\"returns\":{\"tokenBalance\":\"Token balance of the account\"}},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"details\":\"Reverts if the hook doesn't return the success flag set to `true`.\",\"params\":{\"pool\":\"The pool\",\"swapParams\":\"The swap parameters used to compute the fee\"},\"returns\":{\"dynamicSwapFeePercentage\":\"The dynamic swap fee percentage\"}},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\"}},\"getAddLiquidityCalledFlag(address)\":{\"details\":\"Taxing remove liquidity proportional whenever liquidity was added in the same `unlock` call adds an extra layer of security, discouraging operations that try to undo others for profit. Remove liquidity proportional is the only standard way to exit a position without fees, and this flag is used to enable fees in that case. It also discourages indirect swaps via unbalanced add and remove proportional, as they are expected to be worse than a simple swap for every pool type.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"liquidityAdded\":\"True if liquidity has been added to this pool in the current transaction Note that there is no `sessionId` argument; it always returns the value for the current (i.e., latest) session.\"}},\"getAggregateSwapFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"swapFeeAmount\":\"The total amount of fees accumulated in the specified token\"}},\"getAggregateYieldFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"yieldFeeAmount\":\"The total amount of fees accumulated in the specified token\"}},\"getAuthorizer()\":{\"details\":\"The authorizer holds the permissions granted by governance. It is set on Vault deployment, and can be changed through a permissioned call.\",\"returns\":{\"authorizer\":\"Address of the authorizer contract\"}},\"getBptRate(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"rate\":\"BPT rate\"}},\"getCurrentLiveBalances(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getERC4626BufferAsset(address)\":{\"details\":\"To avoid malicious wrappers (e.g., that might potentially change their asset after deployment), routers should never call `wrapper.asset()` directly, at least without checking it against the asset registered with the Vault on initialization.\",\"params\":{\"wrappedToken\":\"The wrapped token specifying the buffer\"},\"returns\":{\"asset\":\"The underlying asset of the wrapped token\"}},\"getHooksConfig(address)\":{\"details\":\"The `HooksConfig` contains flags indicating which pool hooks are implemented.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"hooksConfig\":\"The hooks configuration as a `HooksConfig` struct\"}},\"getNonzeroDeltaCount()\":{\"returns\":{\"nonzeroDeltaCount\":\"The current value of `_nonzeroDeltaCount`\"}},\"getPoolConfig(address)\":{\"details\":\"The `PoolConfig` contains liquidity management and other state flags, fee percentages, the pause window.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"poolConfig\":\"The pool configuration as a `PoolConfig` struct\"}},\"getPoolData(address)\":{\"details\":\"This contains the pool configuration (flags), tokens and token types, rates, scaling factors, and balances.\",\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"poolData\":\"The `PoolData` result\"}},\"getPoolPausedState(address)\":{\"details\":\"Note that even when set to a paused state, the pool will automatically unpause at the end of the buffer period. Balancer timestamps are 32 bits.\",\"params\":{\"pool\":\"The pool whose data is requested\"},\"returns\":{\"pauseManager\":\"The pause manager, or the zero address\",\"poolBufferPeriodEndTime\":\"The timestamp after which the Pool unpauses itself (if paused)\",\"poolPauseWindowEndTime\":\"The timestamp of the end of the Pool's pause window\",\"poolPaused\":\"True if the Pool is paused\"}},\"getPoolRoleAccounts(address)\":{\"params\":{\"pool\":\"The address of the pool whose roles are being queried\"},\"returns\":{\"roleAccounts\":\"A struct containing the role accounts for the pool (or 0 if unassigned)\"}},\"getPoolTokenInfo(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"The pool tokens, sorted in registration order\"}},\"getPoolTokenRates(address)\":{\"details\":\"This function performs external calls if tokens are yield-bearing. All returned arrays are in token registration order.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"decimalScalingFactors\":\"Conversion factor used to adjust for token decimals for uniform precision in calculations. FP(1) for 18-decimal tokens\",\"tokenRates\":\"18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\"}},\"getPoolTokens(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"tokens\":\"List of tokens in the pool\"}},\"getProtocolFeeController()\":{\"returns\":{\"protocolFeeController\":\"Address of the ProtocolFeeController\"}},\"getReservesOf(address)\":{\"params\":{\"token\":\"The token for which to retrieve the reserve\"},\"returns\":{\"reserveAmount\":\"The amount of reserves for the given token\"}},\"getStaticSwapFeePercentage(address)\":{\"params\":{\"pool\":\"The address of the pool whose static swap fee percentage is being queried\"},\"returns\":{\"swapFeePercentage\":\"The current static swap fee percentage for the specified pool\"}},\"getTokenDelta(address)\":{\"details\":\"This function allows reading the value from the `_tokenDeltas` mapping.\",\"params\":{\"token\":\"The token for which the delta is being fetched\"},\"returns\":{\"tokenDelta\":\"The delta of the specified token\"}},\"getVaultAdmin()\":{\"details\":\"The VaultAdmin contract mostly implements permissioned functions.\",\"returns\":{\"vaultAdmin\":\"The address of the Vault admin\"}},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"pool\":\"Address of the pool to initialize\",\"to\":\"Address that will receive the output BPT\",\"tokens\":\"Tokens used to seed the pool (must match the registered tokens)\",\"userData\":\"Additional (optional) data required for adding initial liquidity\"},\"returns\":{\"bptAmountOut\":\"Output pool token amount\"}},\"isERC4626BufferInitialized(address)\":{\"details\":\"An initialized buffer should have an asset registered in the Vault.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"isBufferInitialized\":\"True if the ERC4626 buffer is initialized\"}},\"isPoolInRecoveryMode(address)\":{\"details\":\"Recovery Mode enables a safe proportional withdrawal path, with no external calls.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"inRecoveryMode\":\"True if the pool is in Recovery Mode, false otherwise\"}},\"isPoolInitialized(address)\":{\"details\":\"An initialized pool can be considered registered as well.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"initialized\":\"True if the pool is initialized, false otherwise\"}},\"isPoolPaused(address)\":{\"details\":\"If a pool is paused, all non-Recovery Mode state-changing operations will revert.\",\"params\":{\"pool\":\"The pool to be checked\"},\"returns\":{\"poolPaused\":\"True if the pool is paused\"}},\"isPoolRegistered(address)\":{\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"registered\":\"True if the pool is registered, false otherwise\"}},\"isQueryDisabled()\":{\"details\":\"If true, queries might either be disabled temporarily or permanently.\",\"returns\":{\"queryDisabled\":\"True if query functionality is reversibly disabled\"}},\"isQueryDisabledPermanently()\":{\"details\":\"This is a one-way switch. Once queries are disabled permanently, they can never be re-enabled.\",\"returns\":{\"queryDisabledPermanently\":\"True if query functionality is permanently disabled\"}},\"isUnlocked()\":{\"details\":\"The Vault must be unlocked to perform state-changing liquidity operations.\",\"returns\":{\"unlocked\":\"True if the Vault is unlocked, false otherwise\"}},\"quote(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}},\"quoteAndRevert(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled. This call always reverts, returning the result in the revert reason.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"}},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"details\":\"A pool can opt-out of pausing by providing a zero value for the pause window, or allow pausing indefinitely by providing a large value. (Pool pause windows are not limited by the Vault maximums.) The vault defines an additional buffer period during which a paused pool will stay paused. After the buffer period passes, a paused pool will automatically unpause. Balancer timestamps are 32 bits. A pool can opt out of Balancer governance pausing by providing a custom `pauseManager`. This might be a multi-sig contract or an arbitrary smart contract with its own access controls, that forwards calls to the Vault. If the zero address is provided for the `pauseManager`, permissions for pausing the pool will default to the authorizer.\",\"params\":{\"liquidityManagement\":\"Liquidity management flags with implemented methods\",\"pauseWindowEndTime\":\"The timestamp after which it is no longer possible to pause the pool\",\"pool\":\"The address of the pool being registered\",\"poolHooksContract\":\"Contract that implements the hooks for the pool\",\"protocolFeeExempt\":\"If true, the pool's initial aggregate fees will be set to 0\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The initial static swap fee percentage of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Input pool token amount\",\"from\":\"Address of user to burn pool tokens from\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the pool\"},\"returns\":{\"amountsOut\":\"Actual calculated amounts of output tokens, sorted in token registration order\"}},\"totalSupply(address)\":{\"params\":{\"token\":\"The token address\"},\"returns\":{\"tokenTotalSupply\":\"Total supply of the token\"}},\"vault()\":{\"details\":\"The main Vault contains the entrypoint and main liquidity operation implementations.\",\"returns\":{\"_0\":\"vault The address of the main Vault\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address,address)\":{\"notice\":\"Gets the allowance of a spender for a given ERC20 token and owner.\"},\"approve(address,address,uint256)\":{\"notice\":\"Approves a spender to spend pool tokens on behalf of sender.\"},\"balanceOf(address,address)\":{\"notice\":\"Gets the balance of an account for a given ERC20 token.\"},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Query the current dynamic swap fee percentage of a pool, given a set of swap parameters.\"},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"getAddLiquidityCalledFlag(address)\":{\"notice\":\"This flag is used to detect and tax \\\"round-trip\\\" interactions (adding and removing liquidity in the same pool).\"},\"getAggregateSwapFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated swap fees (including aggregate fees) in `token` collected by the pool.\"},\"getAggregateYieldFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated yield fees (including aggregate fees) in `token` collected by the pool.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer address.\"},\"getBptRate(address)\":{\"notice\":\"The current rate of a pool token (BPT) = invariant / totalSupply.\"},\"getCurrentLiveBalances(address)\":{\"notice\":\"Gets current live balances of a given pool (fixed-point, 18 decimals), corresponding to its tokens in registration order.\"},\"getERC4626BufferAsset(address)\":{\"notice\":\"Gets the registered asset for a given buffer.\"},\"getHooksConfig(address)\":{\"notice\":\"Gets the hooks configuration parameters of a pool.\"},\"getNonzeroDeltaCount()\":{\"notice\":\"Returns the count of non-zero deltas.\"},\"getPoolConfig(address)\":{\"notice\":\"Gets the configuration parameters of a pool.\"},\"getPoolData(address)\":{\"notice\":\"Returns comprehensive pool data for the given pool.\"},\"getPoolPausedState(address)\":{\"notice\":\"Returns the paused status, and end times of the Pool's pause window and buffer period.\"},\"getPoolRoleAccounts(address)\":{\"notice\":\"Fetches the role accounts for a given pool (pause manager, swap manager, pool creator)\"},\"getPoolTokenInfo(address)\":{\"notice\":\"Gets the raw data for a pool: tokens, raw balances, scaling factors.\"},\"getPoolTokenRates(address)\":{\"notice\":\"Gets pool token rates.\"},\"getPoolTokens(address)\":{\"notice\":\"Gets the tokens registered to a pool.\"},\"getProtocolFeeController()\":{\"notice\":\"Returns the Protocol Fee Controller address.\"},\"getReservesOf(address)\":{\"notice\":\"Retrieves the reserve (i.e., total Vault balance) of a given token.\"},\"getStaticSwapFeePercentage(address)\":{\"notice\":\"Fetches the static swap fee percentage for a given pool.\"},\"getTokenDelta(address)\":{\"notice\":\"Retrieves the token delta for a specific token.\"},\"getVaultAdmin()\":{\"notice\":\"Returns the VaultAdmin contract address.\"},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"notice\":\"Initializes a registered pool by adding liquidity; mints BPT tokens for the first time in exchange.\"},\"isERC4626BufferInitialized(address)\":{\"notice\":\"Checks if the wrapped token has an initialized buffer in the Vault.\"},\"isPoolInRecoveryMode(address)\":{\"notice\":\"Checks whether a pool is in Recovery Mode.\"},\"isPoolInitialized(address)\":{\"notice\":\"Checks whether a pool is initialized.\"},\"isPoolPaused(address)\":{\"notice\":\"Indicates whether a pool is paused.\"},\"isPoolRegistered(address)\":{\"notice\":\"Checks whether a pool is registered.\"},\"isQueryDisabled()\":{\"notice\":\"Returns true if queries are disabled on the Vault.\"},\"isQueryDisabledPermanently()\":{\"notice\":\"Returns true if queries are disabled permanently; false if they are enabled.\"},\"isUnlocked()\":{\"notice\":\"Returns whether the Vault is unlocked (i.e., executing an operation).\"},\"quote(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"quoteAndRevert(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"notice\":\"Registers a pool, associating it with its factory and the tokens it manages.\"},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"notice\":\"Remove liquidity from a pool specifying exact pool tokens in, with proportional token amounts out. The request is implemented by the Vault without any interaction with the pool, ensuring that it works the same for all pools, and cannot be disabled by a new pool type.\"},\"totalSupply(address)\":{\"notice\":\"Gets the total supply of a given ERC20 token.\"},\"vault()\":{\"notice\":\"Returns the main Vault address.\"}},\"notice\":\"Interface for functions defined on the `VaultExtension` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":\"IVaultExtension\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol":{"IVaultMain":{"abi":[{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"}],"name":"addLiquidity","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"erc4626BufferWrapOrUnwrap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenCountAndIndexOfToken","outputs":[{"internalType":"uint256","name":"tokenCount","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultExtension","outputs":[{"internalType":"address","name":"vaultExtension","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountHint","type":"uint256"}],"name":"settle","outputs":[{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"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":"spender","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addLiquidity((address,address,uint256[],uint256,uint8,bytes))":"4af29ec4","erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))":"43583be5","getPoolTokenCountAndIndexOfToken(address,address)":"c9c1661b","getVaultExtension()":"b9a8effa","removeLiquidity((address,address,uint256,uint256[],uint8,bytes))":"21457897","sendTo(address,address,uint256)":"ae639329","settle(address,uint256)":"15afd409","swap((uint8,address,address,address,uint256,uint256,bytes))":"2bfb780c","transfer(address,address,uint256)":"beabacc8","transferFrom(address,address,address,uint256)":"15dacbea","unlock(bytes)":"48c89491"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"erc4626BufferWrapOrUnwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenCountAndIndexOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"vaultExtension\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountHint\",\"type\":\"uint256\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"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\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These are generally \\\"critical path\\\" functions (swap, add/remove liquidity) that are in the main contract for technical or performance reasons.\",\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"details\":\"Caution should be exercised when adding liquidity because the Vault has the capability to transfer tokens from any user, given that it holds all allowances.\",\"params\":{\"params\":\"Parameters for the add liquidity (see above for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual amounts of input tokens\",\"bptAmountOut\":\"Output pool token amount\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"details\":\"All parameters are given in raw token decimal encoding. It requires the buffer to be initialized, and uses the internal wrapped token buffer when it has enough liquidity to avoid external calls.\",\"params\":{\"params\":\"Parameters for the wrap/unwrap operation (see struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"details\":\"Reverts if the pool is not registered, or if the token does not belong to the pool.\",\"params\":{\"pool\":\"Address of the pool\",\"token\":\"Address of the token\"},\"returns\":{\"index\":\"Index corresponding to the given token in the pool's token list\",\"tokenCount\":\"Number of tokens in the pool\"}},\"getVaultExtension()\":{\"details\":\"Function is in the main Vault contract. The VaultExtension handles less critical or frequently used functions, since delegate calls through the Vault are more expensive than direct calls.\",\"returns\":{\"vaultExtension\":\"Address of the VaultExtension\"}},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"details\":\"Trusted routers can burn pool tokens belonging to any user and require no prior approval from the user. Untrusted routers require prior approval from the user. This is the only function allowed to call _queryModeBalanceIncrease (and only in a query context).\",\"params\":{\"params\":\"Parameters for the remove liquidity (see above for struct definition)\"},\"returns\":{\"amountsOut\":\"Actual amounts of output tokens\",\"bptAmountIn\":\"Actual amount of BPT burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"sendTo(address,address,uint256)\":{\"details\":\"There is no inverse operation for this function. Transfer funds to the Vault and call `settle` to cancel debts.\",\"params\":{\"amount\":\"Amount of tokens to send\",\"to\":\"Recipient address\",\"token\":\"Address of the token\"}},\"settle(address,uint256)\":{\"details\":\"Protects the caller against leftover dust in the Vault for the token being settled. The caller should know in advance how many tokens were paid to the Vault, so it can provide it as a hint to discard any excess in the Vault balance. If the given hint is equal to or higher than the difference in reserves, the difference in reserves is given as credit to the caller. If it's higher, the caller sent fewer tokens than expected, so settlement would fail. If the given hint is lower than the difference in reserves, the hint is given as credit to the caller. In this case, the excess would be absorbed by the Vault (and reflected correctly in the reserves), but would not affect settlement. The credit supplied by the Vault can be calculated as `min(reserveDifference, amountHint)`, where the reserve difference equals current balance of the token minus existing reserves of the token when the function is called.\",\"params\":{\"amountHint\":\"Amount paid as reported by the caller\",\"token\":\"Address of the token\"},\"returns\":{\"credit\":\"Credit received in return of the payment\"}},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"details\":\"All parameters are given in raw token decimal encoding.\",\"params\":{\"vaultSwapParams\":\"Parameters for the swap (see above for struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"transfer(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"owner\":\"Address of the owner\",\"to\":\"Address of the recipient\"},\"returns\":{\"_0\":\"success True if successful, false otherwise\"}},\"transferFrom(address,address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"from\":\"Address of the sender\",\"spender\":\"Address allowed to perform the transfer\",\"to\":\"Address of the recipient\"},\"returns\":{\"success\":\"True if successful, false otherwise\"}},\"unlock(bytes)\":{\"details\":\"Performs a callback on msg.sender with arguments provided in `data`. The Callback is `transient`, meaning all balances for the caller have to be settled at the end.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"notice\":\"Adds liquidity to a pool.\"},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"notice\":\"Wraps/unwraps tokens based on the parameters provided.\"},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"notice\":\"Gets the index of a token in a given pool.\"},\"getVaultExtension()\":{\"notice\":\"Returns the VaultExtension contract address.\"},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"notice\":\"Removes liquidity from a pool.\"},\"sendTo(address,address,uint256)\":{\"notice\":\"Sends tokens to a recipient.\"},\"settle(address,uint256)\":{\"notice\":\"Settles deltas for a token; must be successful for the current lock to be released.\"},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"notice\":\"Swaps tokens based on provided parameters.\"},\"transfer(address,address,uint256)\":{\"notice\":\"Transfers pool token from owner to a recipient.\"},\"transferFrom(address,address,address,uint256)\":{\"notice\":\"Transfers pool token from a sender to a recipient using an allowance.\"},\"unlock(bytes)\":{\"notice\":\"Creates a context for a sequence of operations (i.e., \\\"unlocks\\\" the Vault).\"}},\"notice\":\"Interface for functions defined on the main Vault contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":\"IVaultMain\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol":{"BasePoolAuthentication":{"abi":[{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base contract for performing access control on external functions within pools.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Pools should use the pool factory as the disambiguator passed into the base Authentication contract. Otherwise, permissions would conflict if different pools reused function names.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}]},\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol\":\"BasePoolAuthentication\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol\":{\"keccak256\":\"0xd810b5deb6053f485a0fc6dfde4894e7a0c90e5d31db3a61144f62c399cd8a26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cdb0e9331a4fe3320355bac37376a0698d36b10347d90d2c4224a787e065622\",\"dweb:/ipfs/QmTsu2bGVhfPyF9X6NCmhRLYyBHBpjRKndKLvTagJGUKE3\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol":{"BasePoolFactory":{"abi":[{"inputs":[],"name":"Disabled","type":"error"},{"inputs":[],"name":"IndexOutOfBounds","type":"error"},{"inputs":[],"name":"PoolPauseWindowDurationOverflow","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"StandardPoolWithCreator","type":"error"},{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[],"name":"disable","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":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultLiquidityManagement","outputs":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getDefaultPoolHooksContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"constructorArgs","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"getDeploymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNewPoolPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOriginalPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getPoolsInRange","outputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDefaultLiquidityManagement()":"193ad50f","getDefaultPoolHooksContract()":"ec888061","getDeploymentAddress(bytes,bytes32)":"44f6fec7","getNewPoolPauseWindowEndTime()":"db035ebc","getOriginalPauseWindowEndTime()":"e9d56e19","getPauseWindowDuration()":"78da80cb","getPoolCount()":"8eec5d70","getPools()":"673a2a1f","getPoolsInRange(uint256,uint256)":"53a72f7e","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Disabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolPauseWindowDurationOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StandardPoolWithCreator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disable\",\"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\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultLiquidityManagement\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultPoolHooksContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeploymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNewPoolPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOriginalPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPoolsInRange\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"PoolCreated(address)\":{\"params\":{\"pool\":\"The address of the new pool\"}}},\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAuthorizer()\":{\"returns\":{\"_0\":\"authorizer An interface pointer to the Authorizer\"}},\"getDefaultLiquidityManagement()\":{\"details\":\"Users can call this to create a structure with all false arguments, then set the ones they need to true.\",\"returns\":{\"liquidityManagement\":\"Liquidity management flags, all initialized to false\"}},\"getDeploymentAddress(bytes,bytes32)\":{\"params\":{\"constructorArgs\":\"The arguments used to create the pool\",\"salt\":\"The salt used to deploy the pool\"},\"returns\":{\"_0\":\"The predicted address of the pool, given the salt\"}},\"getNewPoolPauseWindowEndTime()\":{\"details\":\"We intend for all pools deployed by this factory to have the same pause window end time (i.e., after this date, all future pools will be unpausable). This function will return `_poolsPauseWindowEndTime` until it passes, after which it will return 0.\",\"returns\":{\"_0\":\"pauseWindowEndTime The resolved pause window end time (0 indicating it's no longer pausable)\"}},\"getOriginalPauseWindowEndTime()\":{\"returns\":{\"_0\":\"pauseWindowEndTime The end time as a timestamp\"}},\"getPauseWindowDuration()\":{\"returns\":{\"_0\":\"pauseWindowDuration The duration in seconds\"}},\"getPoolCount()\":{\"details\":\"This can then be used to \\\"paginate\\\" calls to `getPools` to control gas costs.\",\"returns\":{\"_0\":\"The number of pools deployed by this factory\"}},\"getPools()\":{\"returns\":{\"_0\":\"The list of pools deployed by this factory\"}},\"getPoolsInRange(uint256,uint256)\":{\"details\":\"`start` must be a valid index, but if `count` exceeds the total length, it will not revert, but simply stop at the end and return fewer results than requested.\",\"params\":{\"count\":\"The maximum number of pools to return\",\"start\":\"The index of the first pool to return\"},\"returns\":{\"pools\":\"The list of pools deployed by this factory, starting at `start` and returning up to `count` pools\"}},\"getVault()\":{\"returns\":{\"_0\":\"vault An interface pointer to the Vault\"}},\"isDisabled()\":{\"returns\":{\"_0\":\"True if this factory was disabled\"}},\"isPoolFromFactory(address)\":{\"params\":{\"pool\":\"The pool to check\"},\"returns\":{\"_0\":\"True if `pool` was created by this factory\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Disabled()\":[{\"notice\":\"Attempted pool creation after the factory was disabled.\"}],\"IndexOutOfBounds()\":[{\"notice\":\"A pool index is beyond the current bounds of the array.\"}],\"PoolPauseWindowDurationOverflow()\":[{\"notice\":\"The factory deployer gave a duration that would overflow the Unix timestamp.\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"StandardPoolWithCreator()\":[{\"notice\":\"A pool creator was specified for a pool from a Balancer core pool type.\"}]},\"events\":{\"FactoryDisabled()\":{\"notice\":\"The factory was disabled by governance.\"},\"PoolCreated(address)\":{\"notice\":\"A pool was deployed.\"}},\"kind\":\"user\",\"methods\":{\"disable()\":{\"notice\":\"Disable the factory, preventing the creation of more pools.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"notice\":\"Get the address of the Authorizer.\"},\"getDefaultLiquidityManagement()\":{\"notice\":\"Convenience function for constructing a LiquidityManagement object.\"},\"getDefaultPoolHooksContract()\":{\"notice\":\"A common place to retrieve a default hooks contract. Currently set to address(0) (i.e. no hooks).\"},\"getDeploymentAddress(bytes,bytes32)\":{\"notice\":\"Return the address where a new pool will be deployed, based on the factory address and salt.\"},\"getNewPoolPauseWindowEndTime()\":{\"notice\":\"Returns the current pauseWindowEndTime that will be applied to Pools created by this factory.\"},\"getOriginalPauseWindowEndTime()\":{\"notice\":\"Returns the original factory pauseWindowEndTime, regardless of the current time.\"},\"getPauseWindowDuration()\":{\"notice\":\"Return the pause window duration. This is the time pools will be pausable after factory deployment.\"},\"getPoolCount()\":{\"notice\":\"Return the total number of pools deployed by this factory.\"},\"getPools()\":{\"notice\":\"Return the complete list of pools deployed by this factory.\"},\"getPoolsInRange(uint256,uint256)\":{\"notice\":\"Return a subset of the list of pools deployed by this factory.\"},\"getVault()\":{\"notice\":\"Get the address of the Balancer Vault.\"},\"isDisabled()\":{\"notice\":\"Check whether this factory has been disabled by governance.\"},\"isPoolFromFactory(address)\":{\"notice\":\"Check whether a pool was deployed by this factory.\"}},\"notice\":\"Base contract for Pool factories. Pools are deployed from factories to allow third parties to more easily reason about them. Unknown Pools may have arbitrary logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts created by the factory) is very powerful. Note that in v3, the factory alone is not enough to ensure the safety of a pool. v3 pools can have arbitrary hook contracts, rate providers, complex tokens, and configuration that significantly impacts pool behavior. Specialty factories can be designed to limit their pools range of behavior (e.g., weighted 80/20 factories where the token count and weights are fixed). Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently prevent the creation of any future pools from the factory. Use of factories is also important for security. Calls to `registerPool` or `initialize` made directly on the Vault could potentially be frontrun. In the case of registration, a DoS attack could register a pool with malicious parameters, causing the legitimate registration transaction to fail. The standard Balancer factories avoid this by deploying and registering in a single `create` function. It would also be possible to frontrun `initialize` (e.g., with unbalanced liquidity), and cause the intended initialization to fail. Like registration, initialization only happens once. The Balancer standard factories do not initialize on create, as this would be more complex (e.g., requiring token approvals), and it's very common for the deployment and funding to be performed from different accounts. Also, frontrunning `initialize` doesn't have serious consequences, beyond being a DoS. Nevertheless, this is a factor to consider when launching new pools. To avoid any possibility of frontrunning, the best practice would be to create (i.e., deploy and register) and initialize in the same transaction.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol\":\"BasePoolFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\":{\"keccak256\":\"0x6f8c558b0520faae0c4576f30225b5a97821a4cd210878a0ba10c102a2f753f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b40aa7a5ee39fa2e297c684fd29ad45d866f1fc61cd997120a417b02a4d908aa\",\"dweb:/ipfs/QmYP5pQAF7SDLgy3aerqfnc4VwdmfQix2jcQUNL3o83BY9\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol\":{\"keccak256\":\"0x5888b7317d6a8f91a7665922da7e1e00ee8ef47f6690d4bd7f44d37888e21848\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://00b22e2600301568c628a652fcc8f5d79145218feab59a8963dfe300763d8763\",\"dweb:/ipfs/QmNt2BgJYNL7ywhNvR42NneXDYQ7xRyTaTunfgJ2cCVQFR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9594d2dc75aa8c92bb39d30cd76d3bfbb203fe17c4ae35b6f8d882ed4ac868d4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a43d706d34c9f071bed27372100fedaeb12ec4c5c3529e150c8684444c4a619\",\"dweb:/ipfs/QmYUnJ2CtjJY2XktSzamExryTNbAYjesnymMpqTvQuXUka\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]}},\"version\":1}"}},"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol":{"PoolInfo":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getAggregateFeePercentages","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a034608157601f610ab538819003918201601f19168301916001600160401b03831184841017608557808492602094604052833981010312608157516001600160a01b0381168103608157608052604051610a1b908161009a823960805181818160ae015281816101820152818161026d01528181610528015261060d0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604081815260049182361015610015575f80fd5b5f3560e01c90816381fa807c146105b357508063aa6ca808146104d0578063abb1dc4414610211578063b156aa0a1461012a5763d335b0cf14610056575f80fd5b34610115575f600319360112610115578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610121575f916100e8575b6020925051908152f35b90506020823d602011610119575b8161010360209383610873565b810103126101155760209151906100de565b5f80fd5b3d91506100f6565b513d5f823e3d90fd5b5034610115575f600319360112610115578051917f535cfd8a00000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610121575f916101cd575b6101c9925051918291602083526020830190610840565b0390f35b90503d805f843e6101de8184610873565b8201916020818403126101155780519267ffffffffffffffff8411610115576101c99361020b9201610984565b906101b2565b5034610115575f6003193601126101155773ffffffffffffffffffffffffffffffffffffffff9080517f67e0e07600000000000000000000000000000000000000000000000000000000815230848201526024915f82602481877f0000000000000000000000000000000000000000000000000000000000000000165afa9283156104c6575f945f965f945f96610369575b5090916102ba8451976080895260808901906107f7565b91602091888403838a015282808b5195868152019a01945f925b8584106103015750898b03878b015289806101c98b6102f38f8d610840565b908382036060850152610840565b9091929394959a8b518051600281101561033e578252808701518416878301528801511515888201526060019a85019594936001019291906102d4565b856021857f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b94509450955093503d805f843e6103808184610873565b8201936080838603126101155782519567ffffffffffffffff9687811161011557866103ad918601610906565b936020968782015189811161011557820181601f82011215610115578051906103d5826108ee565b996103e288519b8c610873565b828b52808b0181606080950284010192858411610115578201905b838210610442575050505050848201518981116101155781610420918401610984565b986060830151908111610115576104379201610984565b93959693945f6102a3565b8482870312610115578951908582018f81118382101761049b578b52825160028110156101155782528383015190898216820361011557828592838995015261048c8d86016108e1565b8d8201528152019101906103fd565b8a60418f7f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b50513d5f823e3d90fd5b5034610115575f600319360112610115578051917fca4f280300000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610121575f9161056f575b6101c99250519182916020835260208301906107f7565b90503d805f843e6105808184610873565b8201916020818403126101155780519267ffffffffffffffff8411610115576101c9936105ad9201610906565b90610558565b83915034610115575f600319360112610115577ff29486a100000000000000000000000000000000000000000000000000000000815230828201526101a0808260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156107ed575f93610655575b50505060608282015191015182519182526020820152f35b9091809350823d84116107e6575b61066d8183610873565b8101039180831261011557845193610140938486019367ffffffffffffffff91878610838711176107ba57608013610115576101c087019182118583101761078e575086526106bb816108e1565b83526106c9602082016108e1565b9261016093848701526106dd8783016108e1565b9261018093848801526106f2606084016108e1565b9087015285526080810151602086015260a08101518686015260c0810151606086015260e081015164ffffffffff811681036101155760808601526101008082015163ffffffff8116810361011557610782946107789160a089015261076c610120976107608987016108e1565b60c08b015285016108e1565b60e089015283016108e1565b90860152016108e1565b9082015282808061063d565b6041907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6041827f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b503d610663565b84513d5f823e3d90fd5b9081518082526020808093019301915f5b828110610816575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101610808565b9081518082526020808093019301915f5b82811061085f575050505090565b835185529381019392810192600101610851565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108b457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5190811515820361011557565b67ffffffffffffffff81116108b45760051b60200190565b9080601f8301121561011557815190602091610921816108ee565b9361092f6040519586610873565b81855260208086019260051b82010192831161011557602001905b828210610958575050505090565b815173ffffffffffffffffffffffffffffffffffffffff8116810361011557815290830190830161094a565b9080601f830112156101155781519060209161099f816108ee565b936109ad6040519586610873565b81855260208086019260051b82010192831161011557602001905b8282106109d6575050505090565b815181529083019083016109c856fea264697066735822122041c072007fc5245c0722656008fdd8ab513357e653d22511df1eee1f2303f00b64736f6c634300081a0033","opcodes":"PUSH1 0xA0 CALLVALUE PUSH1 0x81 JUMPI PUSH1 0x1F PUSH2 0xAB5 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH1 0x85 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH1 0x81 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH1 0x81 JUMPI PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH2 0xA1B SWAP1 DUP2 PUSH2 0x9A DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH1 0xAE ADD MSTORE DUP2 DUP2 PUSH2 0x182 ADD MSTORE DUP2 DUP2 PUSH2 0x26D ADD MSTORE DUP2 DUP2 PUSH2 0x528 ADD MSTORE PUSH2 0x60D ADD MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x81FA807C EQ PUSH2 0x5B3 JUMPI POP DUP1 PUSH4 0xAA6CA808 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0xABB1DC44 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xB156AA0A EQ PUSH2 0x12A JUMPI PUSH4 0xD335B0CF EQ PUSH2 0x56 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x121 JUMPI PUSH0 SWAP2 PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x119 JUMPI JUMPDEST DUP2 PUSH2 0x103 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x873 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xF6 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP2 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x121 JUMPI PUSH0 SWAP2 PUSH2 0x1CD JUMPI JUMPDEST PUSH2 0x1C9 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x840 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x1DE DUP2 DUP5 PUSH2 0x873 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x115 JUMPI PUSH2 0x1C9 SWAP4 PUSH2 0x20B SWAP3 ADD PUSH2 0x984 JUMP JUMPDEST SWAP1 PUSH2 0x1B2 JUMP JUMPDEST POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP1 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP5 DUP3 ADD MSTORE PUSH1 0x24 SWAP2 PUSH0 DUP3 PUSH1 0x24 DUP2 DUP8 PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4C6 JUMPI PUSH0 SWAP5 PUSH0 SWAP7 PUSH0 SWAP5 PUSH0 SWAP7 PUSH2 0x369 JUMPI JUMPDEST POP SWAP1 SWAP2 PUSH2 0x2BA DUP5 MLOAD SWAP8 PUSH1 0x80 DUP10 MSTORE PUSH1 0x80 DUP10 ADD SWAP1 PUSH2 0x7F7 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP2 DUP9 DUP5 SUB DUP4 DUP11 ADD MSTORE DUP3 DUP1 DUP12 MLOAD SWAP6 DUP7 DUP2 MSTORE ADD SWAP11 ADD SWAP5 PUSH0 SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0x301 JUMPI POP DUP10 DUP12 SUB DUP8 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1C9 DUP12 PUSH2 0x2F3 DUP16 DUP14 PUSH2 0x840 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x840 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP11 DUP12 MLOAD DUP1 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x33E JUMPI DUP3 MSTORE DUP1 DUP8 ADD MLOAD DUP5 AND DUP8 DUP4 ADD MSTORE DUP9 ADD MLOAD ISZERO ISZERO DUP9 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP11 DUP6 ADD SWAP6 SWAP5 SWAP4 PUSH1 0x1 ADD SWAP3 SWAP2 SWAP1 PUSH2 0x2D4 JUMP JUMPDEST DUP6 PUSH1 0x21 DUP6 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST SWAP5 POP SWAP5 POP SWAP6 POP SWAP4 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x380 DUP2 DUP5 PUSH2 0x873 JUMP JUMPDEST DUP3 ADD SWAP4 PUSH1 0x80 DUP4 DUP7 SUB SLT PUSH2 0x115 JUMPI DUP3 MLOAD SWAP6 PUSH8 0xFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP2 GT PUSH2 0x115 JUMPI DUP7 PUSH2 0x3AD SWAP2 DUP7 ADD PUSH2 0x906 JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP7 DUP8 DUP3 ADD MLOAD DUP10 DUP2 GT PUSH2 0x115 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x115 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x3D5 DUP3 PUSH2 0x8EE JUMP JUMPDEST SWAP10 PUSH2 0x3E2 DUP9 MLOAD SWAP12 DUP13 PUSH2 0x873 JUMP JUMPDEST DUP3 DUP12 MSTORE DUP1 DUP12 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x115 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x442 JUMPI POP POP POP POP POP DUP5 DUP3 ADD MLOAD DUP10 DUP2 GT PUSH2 0x115 JUMPI DUP2 PUSH2 0x420 SWAP2 DUP5 ADD PUSH2 0x984 JUMP JUMPDEST SWAP9 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x115 JUMPI PUSH2 0x437 SWAP3 ADD PUSH2 0x984 JUMP JUMPDEST SWAP4 SWAP6 SWAP7 SWAP4 SWAP5 PUSH0 PUSH2 0x2A3 JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x115 JUMPI DUP10 MLOAD SWAP1 DUP6 DUP3 ADD DUP16 DUP2 GT DUP4 DUP3 LT OR PUSH2 0x49B JUMPI DUP12 MSTORE DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x115 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP10 DUP3 AND DUP3 SUB PUSH2 0x115 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0x48C DUP14 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST DUP14 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x3FD JUMP JUMPDEST DUP11 PUSH1 0x41 DUP16 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x121 JUMPI PUSH0 SWAP2 PUSH2 0x56F JUMPI JUMPDEST PUSH2 0x1C9 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x7F7 JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x580 DUP2 DUP5 PUSH2 0x873 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x115 JUMPI PUSH2 0x1C9 SWAP4 PUSH2 0x5AD SWAP3 ADD PUSH2 0x906 JUMP JUMPDEST SWAP1 PUSH2 0x558 JUMP JUMPDEST DUP4 SWAP2 POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH2 0x1A0 DUP1 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x7ED JUMPI PUSH0 SWAP4 PUSH2 0x655 JUMPI JUMPDEST POP POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 DUP1 SWAP4 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x7E6 JUMPI JUMPDEST PUSH2 0x66D DUP2 DUP4 PUSH2 0x873 JUMP JUMPDEST DUP2 ADD SUB SWAP2 DUP1 DUP4 SLT PUSH2 0x115 JUMPI DUP5 MLOAD SWAP4 PUSH2 0x140 SWAP4 DUP5 DUP7 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP8 DUP7 LT DUP4 DUP8 GT OR PUSH2 0x7BA JUMPI PUSH1 0x80 SGT PUSH2 0x115 JUMPI PUSH2 0x1C0 DUP8 ADD SWAP2 DUP3 GT DUP6 DUP4 LT OR PUSH2 0x78E JUMPI POP DUP7 MSTORE PUSH2 0x6BB DUP2 PUSH2 0x8E1 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x6C9 PUSH1 0x20 DUP3 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x6DD DUP8 DUP4 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x6F2 PUSH1 0x60 DUP5 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x115 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x115 JUMPI PUSH2 0x782 SWAP5 PUSH2 0x778 SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x76C PUSH2 0x120 SWAP8 PUSH2 0x760 DUP10 DUP8 ADD PUSH2 0x8E1 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x8E1 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP3 DUP1 DUP1 PUSH2 0x63D JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x41 DUP3 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x663 JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x816 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x808 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x85F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x851 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x8B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x115 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x8B4 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x115 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x921 DUP2 PUSH2 0x8EE JUMP JUMPDEST SWAP4 PUSH2 0x92F PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x873 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x115 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x958 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x115 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x94A JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x115 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x99F DUP2 PUSH2 0x8EE JUMP JUMPDEST SWAP4 PUSH2 0x9AD PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x873 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x115 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x9D6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x9C8 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0xC0 PUSH19 0x7FC5245C0722656008FDD8AB513357E653D2 0x25 GT 0xDF 0x1E 0xEE 0x1F 0x23 SUB CREATE SIGNEXTEND PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"639:1471:34:-:0;;;;;;;;;;;;;-1:-1:-1;;639:1471:34;;;;-1:-1:-1;;;;;639:1471:34;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;639:1471:34;;;;;;750:14;;639:1471;;;;;;;;750:14;639:1471;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:1471:34;;;;;;-1:-1:-1;639:1471:34;;;;;-1:-1:-1;639:1471:34"},"deployedBytecode":{"functionDebugData":{"abi_decode_array_contract_IERC20_dyn_fromMemory":{"entryPoint":2310,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":2436,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":2273,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn":{"entryPoint":2039,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":2112,"id":null,"parameterSlots":2,"returnSlots":1},"array_allocation_size_array_contract_IERC20_dyn":{"entryPoint":2286,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2163,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"5129":[{"length":32,"start":174},{"length":32,"start":386},{"length":32,"start":621},{"length":32,"start":1320},{"length":32,"start":1549}]},"linkReferences":{},"object":"6080604081815260049182361015610015575f80fd5b5f3560e01c90816381fa807c146105b357508063aa6ca808146104d0578063abb1dc4414610211578063b156aa0a1461012a5763d335b0cf14610056575f80fd5b34610115575f600319360112610115578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610121575f916100e8575b6020925051908152f35b90506020823d602011610119575b8161010360209383610873565b810103126101155760209151906100de565b5f80fd5b3d91506100f6565b513d5f823e3d90fd5b5034610115575f600319360112610115578051917f535cfd8a00000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610121575f916101cd575b6101c9925051918291602083526020830190610840565b0390f35b90503d805f843e6101de8184610873565b8201916020818403126101155780519267ffffffffffffffff8411610115576101c99361020b9201610984565b906101b2565b5034610115575f6003193601126101155773ffffffffffffffffffffffffffffffffffffffff9080517f67e0e07600000000000000000000000000000000000000000000000000000000815230848201526024915f82602481877f0000000000000000000000000000000000000000000000000000000000000000165afa9283156104c6575f945f965f945f96610369575b5090916102ba8451976080895260808901906107f7565b91602091888403838a015282808b5195868152019a01945f925b8584106103015750898b03878b015289806101c98b6102f38f8d610840565b908382036060850152610840565b9091929394959a8b518051600281101561033e578252808701518416878301528801511515888201526060019a85019594936001019291906102d4565b856021857f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b94509450955093503d805f843e6103808184610873565b8201936080838603126101155782519567ffffffffffffffff9687811161011557866103ad918601610906565b936020968782015189811161011557820181601f82011215610115578051906103d5826108ee565b996103e288519b8c610873565b828b52808b0181606080950284010192858411610115578201905b838210610442575050505050848201518981116101155781610420918401610984565b986060830151908111610115576104379201610984565b93959693945f6102a3565b8482870312610115578951908582018f81118382101761049b578b52825160028110156101155782528383015190898216820361011557828592838995015261048c8d86016108e1565b8d8201528152019101906103fd565b8a60418f7f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b50513d5f823e3d90fd5b5034610115575f600319360112610115578051917fca4f280300000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610121575f9161056f575b6101c99250519182916020835260208301906107f7565b90503d805f843e6105808184610873565b8201916020818403126101155780519267ffffffffffffffff8411610115576101c9936105ad9201610906565b90610558565b83915034610115575f600319360112610115577ff29486a100000000000000000000000000000000000000000000000000000000815230828201526101a0808260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9283156107ed575f93610655575b50505060608282015191015182519182526020820152f35b9091809350823d84116107e6575b61066d8183610873565b8101039180831261011557845193610140938486019367ffffffffffffffff91878610838711176107ba57608013610115576101c087019182118583101761078e575086526106bb816108e1565b83526106c9602082016108e1565b9261016093848701526106dd8783016108e1565b9261018093848801526106f2606084016108e1565b9087015285526080810151602086015260a08101518686015260c0810151606086015260e081015164ffffffffff811681036101155760808601526101008082015163ffffffff8116810361011557610782946107789160a089015261076c610120976107608987016108e1565b60c08b015285016108e1565b60e089015283016108e1565b90860152016108e1565b9082015282808061063d565b6041907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6041827f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b503d610663565b84513d5f823e3d90fd5b9081518082526020808093019301915f5b828110610816575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101610808565b9081518082526020808093019301915f5b82811061085f575050505090565b835185529381019392810192600101610851565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108b457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5190811515820361011557565b67ffffffffffffffff81116108b45760051b60200190565b9080601f8301121561011557815190602091610921816108ee565b9361092f6040519586610873565b81855260208086019260051b82010192831161011557602001905b828210610958575050505090565b815173ffffffffffffffffffffffffffffffffffffffff8116810361011557815290830190830161094a565b9080601f830112156101155781519060209161099f816108ee565b936109ad6040519586610873565b81855260208086019260051b82010192831161011557602001905b8282106109d6575050505090565b815181529083019083016109c856fea264697066735822122041c072007fc5245c0722656008fdd8ab513357e653d22511df1eee1f2303f00b64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x81FA807C EQ PUSH2 0x5B3 JUMPI POP DUP1 PUSH4 0xAA6CA808 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0xABB1DC44 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xB156AA0A EQ PUSH2 0x12A JUMPI PUSH4 0xD335B0CF EQ PUSH2 0x56 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x121 JUMPI PUSH0 SWAP2 PUSH2 0xE8 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x119 JUMPI JUMPDEST DUP2 PUSH2 0x103 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x873 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0xDE JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xF6 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP2 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x121 JUMPI PUSH0 SWAP2 PUSH2 0x1CD JUMPI JUMPDEST PUSH2 0x1C9 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x840 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x1DE DUP2 DUP5 PUSH2 0x873 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x115 JUMPI PUSH2 0x1C9 SWAP4 PUSH2 0x20B SWAP3 ADD PUSH2 0x984 JUMP JUMPDEST SWAP1 PUSH2 0x1B2 JUMP JUMPDEST POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP1 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP5 DUP3 ADD MSTORE PUSH1 0x24 SWAP2 PUSH0 DUP3 PUSH1 0x24 DUP2 DUP8 PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x4C6 JUMPI PUSH0 SWAP5 PUSH0 SWAP7 PUSH0 SWAP5 PUSH0 SWAP7 PUSH2 0x369 JUMPI JUMPDEST POP SWAP1 SWAP2 PUSH2 0x2BA DUP5 MLOAD SWAP8 PUSH1 0x80 DUP10 MSTORE PUSH1 0x80 DUP10 ADD SWAP1 PUSH2 0x7F7 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP2 DUP9 DUP5 SUB DUP4 DUP11 ADD MSTORE DUP3 DUP1 DUP12 MLOAD SWAP6 DUP7 DUP2 MSTORE ADD SWAP11 ADD SWAP5 PUSH0 SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0x301 JUMPI POP DUP10 DUP12 SUB DUP8 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1C9 DUP12 PUSH2 0x2F3 DUP16 DUP14 PUSH2 0x840 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x840 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP11 DUP12 MLOAD DUP1 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x33E JUMPI DUP3 MSTORE DUP1 DUP8 ADD MLOAD DUP5 AND DUP8 DUP4 ADD MSTORE DUP9 ADD MLOAD ISZERO ISZERO DUP9 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP11 DUP6 ADD SWAP6 SWAP5 SWAP4 PUSH1 0x1 ADD SWAP3 SWAP2 SWAP1 PUSH2 0x2D4 JUMP JUMPDEST DUP6 PUSH1 0x21 DUP6 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST SWAP5 POP SWAP5 POP SWAP6 POP SWAP4 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x380 DUP2 DUP5 PUSH2 0x873 JUMP JUMPDEST DUP3 ADD SWAP4 PUSH1 0x80 DUP4 DUP7 SUB SLT PUSH2 0x115 JUMPI DUP3 MLOAD SWAP6 PUSH8 0xFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP2 GT PUSH2 0x115 JUMPI DUP7 PUSH2 0x3AD SWAP2 DUP7 ADD PUSH2 0x906 JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP7 DUP8 DUP3 ADD MLOAD DUP10 DUP2 GT PUSH2 0x115 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x115 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x3D5 DUP3 PUSH2 0x8EE JUMP JUMPDEST SWAP10 PUSH2 0x3E2 DUP9 MLOAD SWAP12 DUP13 PUSH2 0x873 JUMP JUMPDEST DUP3 DUP12 MSTORE DUP1 DUP12 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x115 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x442 JUMPI POP POP POP POP POP DUP5 DUP3 ADD MLOAD DUP10 DUP2 GT PUSH2 0x115 JUMPI DUP2 PUSH2 0x420 SWAP2 DUP5 ADD PUSH2 0x984 JUMP JUMPDEST SWAP9 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x115 JUMPI PUSH2 0x437 SWAP3 ADD PUSH2 0x984 JUMP JUMPDEST SWAP4 SWAP6 SWAP7 SWAP4 SWAP5 PUSH0 PUSH2 0x2A3 JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x115 JUMPI DUP10 MLOAD SWAP1 DUP6 DUP3 ADD DUP16 DUP2 GT DUP4 DUP3 LT OR PUSH2 0x49B JUMPI DUP12 MSTORE DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x115 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP10 DUP3 AND DUP3 SUB PUSH2 0x115 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0x48C DUP14 DUP7 ADD PUSH2 0x8E1 JUMP JUMPDEST DUP14 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x3FD JUMP JUMPDEST DUP11 PUSH1 0x41 DUP16 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x121 JUMPI PUSH0 SWAP2 PUSH2 0x56F JUMPI JUMPDEST PUSH2 0x1C9 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x7F7 JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x580 DUP2 DUP5 PUSH2 0x873 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x115 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x115 JUMPI PUSH2 0x1C9 SWAP4 PUSH2 0x5AD SWAP3 ADD PUSH2 0x906 JUMP JUMPDEST SWAP1 PUSH2 0x558 JUMP JUMPDEST DUP4 SWAP2 POP CALLVALUE PUSH2 0x115 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115 JUMPI PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH2 0x1A0 DUP1 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x7ED JUMPI PUSH0 SWAP4 PUSH2 0x655 JUMPI JUMPDEST POP POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 DUP1 SWAP4 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x7E6 JUMPI JUMPDEST PUSH2 0x66D DUP2 DUP4 PUSH2 0x873 JUMP JUMPDEST DUP2 ADD SUB SWAP2 DUP1 DUP4 SLT PUSH2 0x115 JUMPI DUP5 MLOAD SWAP4 PUSH2 0x140 SWAP4 DUP5 DUP7 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP8 DUP7 LT DUP4 DUP8 GT OR PUSH2 0x7BA JUMPI PUSH1 0x80 SGT PUSH2 0x115 JUMPI PUSH2 0x1C0 DUP8 ADD SWAP2 DUP3 GT DUP6 DUP4 LT OR PUSH2 0x78E JUMPI POP DUP7 MSTORE PUSH2 0x6BB DUP2 PUSH2 0x8E1 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x6C9 PUSH1 0x20 DUP3 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x6DD DUP8 DUP4 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x6F2 PUSH1 0x60 DUP5 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x115 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x115 JUMPI PUSH2 0x782 SWAP5 PUSH2 0x778 SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x76C PUSH2 0x120 SWAP8 PUSH2 0x760 DUP10 DUP8 ADD PUSH2 0x8E1 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x8E1 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x8E1 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP3 DUP1 DUP1 PUSH2 0x63D JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x41 DUP3 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x663 JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x816 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x808 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x85F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x851 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x8B4 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x115 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x8B4 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x115 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x921 DUP2 PUSH2 0x8EE JUMP JUMPDEST SWAP4 PUSH2 0x92F PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x873 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x115 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x958 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x115 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x94A JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x115 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x99F DUP2 PUSH2 0x8EE JUMP JUMPDEST SWAP4 PUSH2 0x9AD PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x873 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x115 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x9D6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x9C8 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0xC0 PUSH19 0x7FC5245C0722656008FDD8AB513357E653D2 0x25 GT 0xDF 0x1E 0xEE 0x1F 0x23 SUB CREATE SIGNEXTEND PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"639:1471:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;639:1471:34;;;;;;;1615:50;639:1471;1615:50;;1658:4;1615:50;;;639:1471;1615:50;:6;639:1471;1615:6;639:1471;1615:6;639:1471;1615:50;;;;;;;639:1471;1615:50;;;639:1471;1615:50;639:1471;;;;;;;1615:50;;;;;;;;;;;;;;;;;:::i;:::-;;;639:1471;;;;1615:50;639:1471;;1615:50;;;639:1471;;;;1615:50;;;-1:-1:-1;1615:50:34;;;639:1471;;;;;;;;;;;;;;-1:-1:-1;;639:1471:34;;;;;;;1441:44;639:1471;1441:44;;1479:4;1441:44;;;639:1471;;1441:6;639:1471;1441:6;639:1471;1441:6;639:1471;1441:44;;;;;;;639:1471;1441:44;;;639:1471;;;;;;;;;;;;;;;;:::i;:::-;;;;1441:44;;;;;639:1471;1441:44;;;;;;:::i;:::-;;;639:1471;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1441:44;;;639:1471;;;;;;-1:-1:-1;;639:1471:34;;;;;;;;;;1247:38;;1279:4;1247:38;;;639:1471;;1247:6;639:1471;1247:6;639:1471;1247:6;;;639:1471;1247:38;;;;;;;639:1471;;;;;;;1247:38;;;639:1471;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:1471:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:38;;;;;;;;;;;639:1471;1247:38;;;;;;:::i;:::-;;;639:1471;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1247:38;;;;;;;;639:1471;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1247:38;639:1471;;;;;;;;;;;;;;;-1:-1:-1;;639:1471:34;;;;;;;892:35;639:1471;892:35;;921:4;892:35;;;639:1471;;892:6;639:1471;892:6;639:1471;892:6;639:1471;892:35;;;;;;;639:1471;892:35;;;639:1471;;;;;;;;;;;;;;;;:::i;892:35::-;;;;;639:1471;892:35;;;;;;:::i;:::-;;;639:1471;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;892:35;;;639:1471;;;;;;;;-1:-1:-1;;639:1471:34;;;;;;1911:35;;1940:4;1911:35;;;639:1471;1911:35;:6;;639:1471;1911:6;639:1471;1911:6;639:1471;1911:35;;;;;;;639:1471;1911:35;;;639:1471;1986:37;;;2063:38;1986:37;;;639:1471;2063:38;;639:1471;;;;;;;;;;;1911:35;;;;;;;;;;;;;;;;;:::i;:::-;;;639:1471;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:1471:34;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1911:35;;;;;639:1471;;;;;;;;;;;;;;;;;;;;1911:35;;;;;;639:1471;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:1471:34;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:1471:34;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;"},"methodIdentifiers":{"getAggregateFeePercentages()":"81fa807c","getCurrentLiveBalances()":"b156aa0a","getStaticSwapFeePercentage()":"d335b0cf","getTokenInfo()":"abb1dc44","getTokens()":"aa6ca808"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getAggregateFeePercentages\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"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\"}],\"devdoc\":{\"details\":\"Balancer standard pools inherit from this optional interface to provide a standard off-chain interface for commonly requested data.\",\"kind\":\"dev\",\"methods\":{\"getAggregateFeePercentages()\":{\"details\":\"These are determined by the current protocol and pool creator fees, set in the `ProtocolFeeController`.\",\"returns\":{\"aggregateSwapFeePercentage\":\"The aggregate percentage fee applied to swaps\",\"aggregateYieldFeePercentage\":\"The aggregate percentage fee applied to yield\"}},\"getCurrentLiveBalances()\":{\"details\":\"Note that live balances will not necessarily be accurate if the pool is in Recovery Mode. Withdrawals in Recovery Mode do not make external calls (including those necessary for updating live balances), so if there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\",\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getStaticSwapFeePercentage()\":{\"returns\":{\"_0\":\"18-decimal FP value of the static swap fee percentage\"}},\"getTokenInfo()\":{\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"Pool tokens, sorted in token registration order\"}},\"getTokens()\":{\"returns\":{\"tokens\":\"List of tokens in the pool, sorted in registration order\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAggregateFeePercentages()\":{\"notice\":\"Gets the aggregate swap and yield fee percentages for a pool.\"},\"getCurrentLiveBalances()\":{\"notice\":\"Gets the current live balances of the pool as fixed point, 18-decimal numbers.\"},\"getStaticSwapFeePercentage()\":{\"notice\":\"Fetches the static swap fee percentage for the pool.\"},\"getTokenInfo()\":{\"notice\":\"Gets the raw data for the pool: tokens, token info, raw balances, and last live balances.\"},\"getTokens()\":{\"notice\":\"Gets the tokens registered in the pool.\"}},\"notice\":\"Standard implementation of the `IPoolInfo` interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":\"PoolInfo\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol":{"Authentication":{"abi":[{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied to external functions to make them only callable by authorized accounts. Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in multi-contract systems. There are two main uses for it: - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers unique. The contract's own address is a good option. - if the contract belongs to a family that shares action identifiers for the same functions, an identifier shared by the entire family (and no other contract) should be used instead.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}]},\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"notice\":\"Building block for performing access control on external functions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":\"Authentication\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol":{"BufferHelpers":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220222b0cb77d354af1be973716200ecee01b020e55e745b3a79c480cff828ee71864736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0x2B 0xC 0xB7 PUSH30 0x354AF1BE973716200ECEE01B020E55E745B3A79C480CFF828EE71864736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"289:4401:36:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220222b0cb77d354af1be973716200ecee01b020e55e745b3a79c480cff828ee71864736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0x2B 0xC 0xB7 PUSH30 0x354AF1BE973716200ECEE01B020E55E745B3A79C480CFF828EE71864736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"289:4401:36:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol\":\"BufferHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol\":{\"keccak256\":\"0x528ef10b3f14bb2b1d64043ec8c7d732a502147fe9d4e4bd3339f57e40fe3ce7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a71bd94d0c5ba098b04b2bc65a7842c1bb3b96d91dd6a95756efc468cd6dbc5\",\"dweb:/ipfs/QmPrHPMmrdpJjvny8UjWbWFJo5nWpBtmjxWGbX1zDbNx6Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol":{"CastingHelpers":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ea8a1d0795cd1e1c04105500b3ad4e4e9ec5dc1ac110a57f1a91e77353b9265264736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA DUP11 SAR SMOD SWAP6 0xCD 0x1E SHR DIV LT SSTORE STOP 0xB3 0xAD 0x4E 0x4E SWAP15 0xC5 0xDC BYTE 0xC1 LT 0xA5 PUSH32 0x1A91E77353B9265264736F6C634300081A003300000000000000000000000000 ","sourceMap":"217:637:37:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220ea8a1d0795cd1e1c04105500b3ad4e4e9ec5dc1ac110a57f1a91e77353b9265264736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA DUP11 SAR SMOD SWAP6 0xCD 0x1E SHR DIV LT SSTORE STOP 0xB3 0xAD 0x4E 0x4E SWAP15 0xC5 0xDC BYTE 0xC1 LT 0xA5 PUSH32 0x1A91E77353B9265264736F6C634300081A003300000000000000000000000000 ","sourceMap":"217:637:37:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library of helper functions related to typecasting arrays.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":\"CastingHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol":{"EVMCallModeHelpers":{"abi":[{"inputs":[],"name":"NotStaticCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220b756da0d25096874e1bb98ae44ed6256c2b295ec8ca27ffce0426974ce7f513564736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 JUMP 0xDA 0xD 0x25 MULMOD PUSH9 0x74E1BB98AE44ED6256 0xC2 0xB2 SWAP6 0xEC DUP13 LOG2 PUSH32 0xFCE0426974CE7F513564736F6C634300081A0033000000000000000000000000 ","sourceMap":"173:775:38:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220b756da0d25096874e1bb98ae44ed6256c2b295ec8ca27ffce0426974ce7f513564736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 JUMP 0xDA 0xD 0x25 MULMOD PUSH9 0x74E1BB98AE44ED6256 0xC2 0xB2 SWAP6 0xEC DUP13 LOG2 PUSH32 0xFCE0426974CE7F513564736F6C634300081A0033000000000000000000000000 ","sourceMap":"173:775:38:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"NotStaticCall()\":[{\"notice\":\"A state-changing transaction was initiated in a context that only allows static calls.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Library used to check whether the current operation was initiated through a static call.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":\"EVMCallModeHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol":{"FactoryWidePauseWindow":{"abi":[{"inputs":[{"internalType":"uint32","name":"pauseWindowDuration","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"PoolPauseWindowDurationOverflow","type":"error"},{"inputs":[],"name":"getNewPoolPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOriginalPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60c0346100b057601f61026d38819003918201601f19168301916001600160401b038311848410176100b4578084926020946040528339810103126100b0575163ffffffff908181168082036100b05742019081421161009c5782821161008d576080521660a0526040516101a490816100c982396080518161014a015260a0518181816077015260d60152f35b6368755a1160e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816378da80cb1461011257508063db035ebc1461009f5763e9d56e191461003d575f80fd5b3461009b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009b57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5f80fd5b3461009b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009b57602063ffffffff7f000000000000000000000000000000000000000000000000000000000000000081811642101561010a57905b60405191168152f35b505f90610101565b3461009b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009b5760209063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f3fea26469706673582212209eb0e306d593660467233ac7fb47202ea5e41cfbb0b6c31457b0381683974fcd64736f6c634300081a0033","opcodes":"PUSH1 0xC0 CALLVALUE PUSH2 0xB0 JUMPI PUSH1 0x1F PUSH2 0x26D CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0xB4 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0xB0 JUMPI MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 AND DUP1 DUP3 SUB PUSH2 0xB0 JUMPI TIMESTAMP ADD SWAP1 DUP2 TIMESTAMP GT PUSH2 0x9C JUMPI DUP3 DUP3 GT PUSH2 0x8D JUMPI PUSH1 0x80 MSTORE AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x1A4 SWAP1 DUP2 PUSH2 0xC9 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x14A ADD MSTORE PUSH1 0xA0 MLOAD DUP2 DUP2 DUP2 PUSH1 0x77 ADD MSTORE PUSH1 0xD6 ADD MSTORE RETURN JUMPDEST PUSH4 0x68755A11 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x78DA80CB EQ PUSH2 0x112 JUMPI POP DUP1 PUSH4 0xDB035EBC EQ PUSH2 0x9F JUMPI PUSH4 0xE9D56E19 EQ PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x9B JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x9B JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x9B JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x9B JUMPI PUSH1 0x20 PUSH4 0xFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x10A JUMPI SWAP1 JUMPDEST PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP PUSH0 SWAP1 PUSH2 0x101 JUMP JUMPDEST CALLVALUE PUSH2 0x9B JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x9B JUMPI PUSH1 0x20 SWAP1 PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 0xB0 0xE3 MOD 0xD5 SWAP4 PUSH7 0x467233AC7FB47 KECCAK256 0x2E 0xA5 0xE4 SHR 0xFB 0xB0 0xB6 0xC3 EQ JUMPI 0xB0 CODESIZE AND DUP4 SWAP8 0x4F 0xCD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"803:2453:39:-:0;;;;;;;;;;;;;-1:-1:-1;;803:2453:39;;;;-1:-1:-1;;;;;803:2453:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1461:15;803:2453;1461:15;;;803:2453;;;1513:35;;;1509:106;;1625:42;;803:2453;1735:53;;803:2453;;;;;;;;1625:42;803:2453;;;;;1735:53;803:2453;;;;;;;;;;;1509:106;1571:33;;;-1:-1:-1;1571:33:39;;-1:-1:-1;1571:33:39;803:2453;;;;-1:-1:-1;803:2453:39;;;;;-1:-1:-1;803:2453:39;;-1:-1:-1;803:2453:39;;;;;;-1:-1:-1;803:2453:39;;;;;-1:-1:-1;803:2453:39"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{"5505":[{"length":32,"start":330}],"5507":[{"length":32,"start":119},{"length":32,"start":214}]},"linkReferences":{},"object":"6080806040526004361015610012575f80fd5b5f3560e01c90816378da80cb1461011257508063db035ebc1461009f5763e9d56e191461003d575f80fd5b3461009b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009b57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5f80fd5b3461009b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009b57602063ffffffff7f000000000000000000000000000000000000000000000000000000000000000081811642101561010a57905b60405191168152f35b505f90610101565b3461009b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009b5760209063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f3fea26469706673582212209eb0e306d593660467233ac7fb47202ea5e41cfbb0b6c31457b0381683974fcd64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x78DA80CB EQ PUSH2 0x112 JUMPI POP DUP1 PUSH4 0xDB035EBC EQ PUSH2 0x9F JUMPI PUSH4 0xE9D56E19 EQ PUSH2 0x3D JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x9B JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x9B JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x9B JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x9B JUMPI PUSH1 0x20 PUSH4 0xFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x10A JUMPI SWAP1 JUMPDEST PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP PUSH0 SWAP1 PUSH2 0x101 JUMP JUMPDEST CALLVALUE PUSH2 0x9B JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x9B JUMPI PUSH1 0x20 SWAP1 PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 0xB0 0xE3 MOD 0xD5 SWAP4 PUSH7 0x467233AC7FB47 KECCAK256 0x2E 0xA5 0xE4 SHR 0xFB 0xB0 0xB6 0xC3 EQ JUMPI 0xB0 CODESIZE AND DUP4 SWAP8 0x4F 0xCD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"803:2453:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2369:24;803:2453;;;;;;;;;;;;;;;;;;;;;3191:24;803:2453;;;3173:15;:42;803:2453;;;3172:75;;803:2453;;;;;;;3172:75;;803:2453;3172:75;;;803:2453;;;;;;;;;;;;2073:20;803:2453;2073:20;803:2453;;;"},"methodIdentifiers":{"getNewPoolPauseWindowEndTime()":"db035ebc","getOriginalPauseWindowEndTime()":"e9d56e19","getPauseWindowDuration()":"78da80cb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"pauseWindowDuration\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PoolPauseWindowDurationOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getNewPoolPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOriginalPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Each pool deployment calls `getPauseWindowDuration` on the factory so that all Pools created by this factory will share the same Pause Window end time, after which both old and new Pools will not be pausable. All pools are reversibly pausable until the pause window expires. Afterward, there is an additional buffer period, set to the same duration as the Vault's buffer period. If a pool was paused, it will remain paused through this buffer period, and cannot be unpaused. When the buffer period expires, it will unpause automatically, and remain permissionless forever after.\",\"kind\":\"dev\",\"methods\":{\"getNewPoolPauseWindowEndTime()\":{\"details\":\"We intend for all pools deployed by this factory to have the same pause window end time (i.e., after this date, all future pools will be unpausable). This function will return `_poolsPauseWindowEndTime` until it passes, after which it will return 0.\",\"returns\":{\"_0\":\"pauseWindowEndTime The resolved pause window end time (0 indicating it's no longer pausable)\"}},\"getOriginalPauseWindowEndTime()\":{\"returns\":{\"_0\":\"pauseWindowEndTime The end time as a timestamp\"}},\"getPauseWindowDuration()\":{\"returns\":{\"_0\":\"pauseWindowDuration The duration in seconds\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"PoolPauseWindowDurationOverflow()\":[{\"notice\":\"The factory deployer gave a duration that would overflow the Unix timestamp.\"}]},\"kind\":\"user\",\"methods\":{\"getNewPoolPauseWindowEndTime()\":{\"notice\":\"Returns the current pauseWindowEndTime that will be applied to Pools created by this factory.\"},\"getOriginalPauseWindowEndTime()\":{\"notice\":\"Returns the original factory pauseWindowEndTime, regardless of the current time.\"},\"getPauseWindowDuration()\":{\"notice\":\"Return the pause window duration. This is the time pools will be pausable after factory deployment.\"}},\"notice\":\"Base contract for v3 factories to support pause windows for pools based on the factory deployment time.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\":\"FactoryWidePauseWindow\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9594d2dc75aa8c92bb39d30cd76d3bfbb203fe17c4ae35b6f8d882ed4ac868d4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a43d706d34c9f071bed27372100fedaeb12ec4c5c3529e150c8684444c4a619\",\"dweb:/ipfs/QmYUnJ2CtjJY2XktSzamExryTNbAYjesnymMpqTvQuXUka\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol":{"InputHelpers":{"abi":[{"inputs":[],"name":"AllZeroInputs","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"MultipleNonZeroInputs","type":"error"},{"inputs":[],"name":"TokensNotSorted","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220efab5bd5ea2135571c2fe0428bd12b2a7f5defed28bb9cb7bb3cd1cc1722301a64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF 0xAB JUMPDEST 0xD5 0xEA 0x21 CALLDATALOAD JUMPI SHR 0x2F 0xE0 TIMESTAMP DUP12 0xD1 0x2B 0x2A PUSH32 0x5DEFED28BB9CB7BB3CD1CC1722301A64736F6C634300081A0033000000000000 ","sourceMap":"202:3763:40:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220efab5bd5ea2135571c2fe0428bd12b2a7f5defed28bb9cb7bb3cd1cc1722301a64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF 0xAB JUMPDEST 0xD5 0xEA 0x21 CALLDATALOAD JUMPI SHR 0x2F 0xE0 TIMESTAMP DUP12 0xD1 0x2B 0x2A PUSH32 0x5DEFED28BB9CB7BB3CD1CC1722301A64736F6C634300081A0033000000000000 ","sourceMap":"202:3763:40:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AllZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleNonZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokensNotSorted\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"AllZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have one non-zero value, corresponding to the token being added or removed. This error results if all entries are zero.\"}],\"MultipleNonZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have only one non-zero value, corresponding to the token being added or removed. This error results if there are multiple non-zero entries.\"}],\"TokensNotSorted()\":[{\"details\":\"Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can predict the token order without having to query the Vault. (It is also legacy v2 behavior.)\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AllZeroInputs()\":[{\"notice\":\"No valid input was given for a single token operation.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"MultipleNonZeroInputs()\":[{\"notice\":\"More than one non-zero value was given for a single token operation.\"}],\"TokensNotSorted()\":[{\"notice\":\"The tokens supplied to an array argument were not sorted in numerical order.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":\"InputHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol":{"PackedTokenBalance":{"abi":[{"inputs":[],"name":"BalanceOverflow","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212202070911d87e28553018e7a0effcf19ae7ac253db8aa81e15749ece374ee379d064736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 PUSH17 0x911D87E28553018E7A0EFFCF19AE7AC253 0xDB DUP11 0xA8 0x1E ISZERO PUSH21 0x9ECE374EE379D064736F6C634300081A0033000000 ","sourceMap":"982:2131:41:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212202070911d87e28553018e7a0effcf19ae7ac253db8aa81e15749ece374ee379d064736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 PUSH17 0x911D87E28553018E7A0EFFCF19AE7AC253 0xDB DUP11 0xA8 0x1E ISZERO PUSH21 0x9ECE374EE379D064736F6C634300081A0033000000 ","sourceMap":"982:2131:41:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"We could use a Solidity struct to pack balance values together in a single storage slot, but unfortunately Solidity only allows for structs to live in either storage, calldata or memory. Because a memory struct still takes up a slot in the stack (to store its memory location), and because the entire balance fits in a single stack slot (two 128 bit values), using memory is strictly less gas performant. Therefore, we do manual packing and unpacking. We could also use custom types now, but given the simplicity here, and the existing EnumerableMap type, it seemed easier to leave it as a bytes32.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"BalanceOverflow()\":[{\"notice\":\"One of the balances is above the maximum value that can be stored.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"This library represents a data structure for packing a token's current raw and derived balances. A derived balance can be the \\\"last\\\" live balance scaled18 of the raw token, or the balance of the wrapped version of the token in a vault buffer, among others.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":\"PackedTokenBalance\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol":{"RevertCodec":{"abi":[{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"Result","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220aa1cdb321aa557a264f1a21755930e2173ff8a41440cbe3e7668b2c9d124f62d64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA SHR 0xDB ORIGIN BYTE 0xA5 JUMPI LOG2 PUSH5 0xF1A2175593 0xE 0x21 PUSH20 0xFF8A41440CBE3E7668B2C9D124F62D64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"231:2016:42:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220aa1cdb321aa557a264f1a21755930e2173ff8a41440cbe3e7668b2c9d124f62d64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA SHR 0xDB ORIGIN BYTE 0xA5 JUMPI LOG2 PUSH5 0xF1A2175593 0xE 0x21 PUSH20 0xFF8A41440CBE3E7668B2C9D124F62D64736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"231:2016:42:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"Result\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"Result(bytes)\":[{\"params\":{\"result\":\"The result of the query operation\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"Result(bytes)\":[{\"notice\":\"On success of the primary operation in a `quoteAndRevert`, this error is thrown with the return data.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Support `quoteAndRevert`: a v2-style query which always reverts, and returns the result in the return data.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":\"RevertCodec\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol":{"ScalingHelpers":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220579639c3e408b04f8be808dc4436b2033a7cadf82fa4892bef73c183304a467464736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI SWAP7 CODECOPY 0xC3 0xE4 ADDMOD 0xB0 0x4F DUP12 0xE8 ADDMOD 0xDC PREVRANDAO CALLDATASIZE 0xB2 SUB GASPRICE PUSH29 0xADF82FA4892BEF73C183304A467464736F6C634300081A003300000000 ","sourceMap":"938:9455:43:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220579639c3e408b04f8be808dc4436b2033a7cadf82fa4892bef73c183304a467464736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI SWAP7 CODECOPY 0xC3 0xE4 ADDMOD 0xB0 0x4F DUP12 0xE8 ADDMOD 0xDC PREVRANDAO CALLDATASIZE 0xB2 SUB GASPRICE PUSH29 0xADF82FA4892BEF73C183304A467464736F6C634300081A003300000000 ","sourceMap":"938:9455:43:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"To simplify Pool logic, all token balances and amounts are normalized to behave as if the token had 18 decimals. When comparing DAI (18 decimals) and USDC (6 decimals), 1 USDC and 1 DAI would both be represented as 1e18. This allows us to not consider differences in token decimals in the internal Pool math, simplifying it greatly. The Vault does not support tokens with more than 18 decimals (see `_MAX_TOKEN_DECIMALS` in `VaultStorage`), or tokens that do not implement `IERC20Metadata.decimals`. These helpers can also be used to scale amounts by other 18-decimal floating point values, such as rates.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper functions to apply/undo token decimal and rate adjustments, rounding in the direction indicated.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":\"ScalingHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol":{"TransientStorageHelpers":{"abi":[{"inputs":[],"name":"TransientIndexOutOfBounds","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220c0f6b3312fb56104f33d9b3c875e118880654b4f7224bf84d7ea56973f90a3f164736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC0 0xF6 0xB3 BALANCE 0x2F 0xB5 PUSH2 0x4F3 RETURNDATASIZE SWAP12 EXTCODECOPY DUP8 MCOPY GT DUP9 DUP1 PUSH6 0x4B4F7224BF84 0xD7 0xEA JUMP SWAP8 EXTCODEHASH SWAP1 LOG3 CALL PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"991:5950:44:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220c0f6b3312fb56104f33d9b3c875e118880654b4f7224bf84d7ea56973f90a3f164736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC0 0xF6 0xB3 BALANCE 0x2F 0xB5 PUSH2 0x4F3 RETURNDATASIZE SWAP12 EXTCODECOPY DUP8 MCOPY GT DUP9 DUP1 PUSH6 0x4B4F7224BF84 0xD7 0xEA JUMP SWAP8 EXTCODEHASH SWAP1 LOG3 CALL PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"991:5950:44:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"TransientIndexOutOfBounds\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This is temporary, based on Open Zeppelin's partially released library. When the final version is published, we should be able to remove our copies and import directly from OZ. When Solidity catches up and puts direct support for transient storage in the language, we should be able to get rid of this altogether. This only works on networks where EIP-1153 is supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"TransientIndexOutOfBounds()\":[{\"notice\":\"An index is out of bounds on an array operation (e.g., at).\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper functions to read and write values from transient storage, including support for arrays and mappings.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":\"TransientStorageHelpers\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol":{"Version":{"abi":[{"inputs":[{"internalType":"string","name":"version_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"allocate_memory":{"entryPoint":463,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6080604052346101cb5761041880380380610019816101cf565b928339810190602080828403126101cb5781516001600160401b03928382116101cb570192601f908082860112156101cb5784518481116101b757601f1995610067828501881686016101cf565b928284528583830101116101cb57815f92868093018386015e8301015280519384116101b7575f54926001938481811c911680156101ad575b8282101461019957838111610156575b50809285116001146100f65750839450908392915f946100eb575b50501b915f199060031b1c1916175f555b60405161022390816101f58239f35b015192505f806100cb565b9294849081165f8052845f20945f905b8883831061013c5750505010610124575b505050811b015f556100dc565b01515f1960f88460031b161c191690555f8080610117565b858701518855909601959485019487935090810190610106565b5f8052815f208480880160051c820192848910610190575b0160051c019085905b8281106101855750506100b0565b5f8155018590610177565b9250819261016e565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100a0565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176101b75760405256fe6080600436101561000e575f80fd5b5f3560e01c6354fd4d5014610021575f80fd5b346101e9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101e9575f80546001908060011c92600182169384156101e1575b60209384821086146101b4578187528487019587948690821561017b575050600114610124575b505003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090811684019367ffffffffffffffff8511818610176100f7576040938593601f9285875281865251918280928701528686015e5f85828601015201168101030190f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80805285935091907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828410610163575050508201015f8061008d565b8054848a01860152889550869490930192810161014f565b915093507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009150168552151560051b8201015f8061008d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b607f16610066565b5f80fdfea2646970667358221220d9b198252dc1e789603577eb44f76d207d9ce2251be7cbd957b84b3f9e10807c64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x1CB JUMPI PUSH2 0x418 DUP1 CODESIZE SUB DUP1 PUSH2 0x19 DUP2 PUSH2 0x1CF JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH1 0x20 DUP1 DUP3 DUP5 SUB SLT PUSH2 0x1CB JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 DUP4 DUP3 GT PUSH2 0x1CB JUMPI ADD SWAP3 PUSH1 0x1F SWAP1 DUP1 DUP3 DUP7 ADD SLT ISZERO PUSH2 0x1CB JUMPI DUP5 MLOAD DUP5 DUP2 GT PUSH2 0x1B7 JUMPI PUSH1 0x1F NOT SWAP6 PUSH2 0x67 DUP3 DUP6 ADD DUP9 AND DUP7 ADD PUSH2 0x1CF JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE DUP6 DUP4 DUP4 ADD ADD GT PUSH2 0x1CB JUMPI DUP2 PUSH0 SWAP3 DUP7 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE DUP1 MLOAD SWAP4 DUP5 GT PUSH2 0x1B7 JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x1AD JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x199 JUMPI DUP4 DUP2 GT PUSH2 0x156 JUMPI JUMPDEST POP DUP1 SWAP3 DUP6 GT PUSH1 0x1 EQ PUSH2 0xF6 JUMPI POP DUP4 SWAP5 POP SWAP1 DUP4 SWAP3 SWAP2 PUSH0 SWAP5 PUSH2 0xEB JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x223 SWAP1 DUP2 PUSH2 0x1F5 DUP3 CODECOPY RETURN JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xCB JUMP JUMPDEST SWAP3 SWAP5 DUP5 SWAP1 DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0x13C JUMPI POP POP POP LT PUSH2 0x124 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH2 0xDC JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x117 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x106 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP2 PUSH0 KECCAK256 DUP5 DUP1 DUP9 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP5 DUP10 LT PUSH2 0x190 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP6 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x185 JUMPI POP POP PUSH2 0xB0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0x177 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x16E JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xA0 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x1B7 JUMPI PUSH1 0x40 MSTORE JUMP INVALID PUSH1 0x80 PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x54FD4D50 EQ PUSH2 0x21 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1E9 JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1E9 JUMPI PUSH0 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP1 PUSH1 0x1 SHR SWAP3 PUSH1 0x1 DUP3 AND SWAP4 DUP5 ISZERO PUSH2 0x1E1 JUMPI JUMPDEST PUSH1 0x20 SWAP4 DUP5 DUP3 LT DUP7 EQ PUSH2 0x1B4 JUMPI DUP2 DUP8 MSTORE DUP5 DUP8 ADD SWAP6 DUP8 SWAP5 DUP7 SWAP1 DUP3 ISZERO PUSH2 0x17B JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x124 JUMPI JUMPDEST POP POP SUB PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND DUP5 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT DUP2 DUP7 LT OR PUSH2 0xF7 JUMPI PUSH1 0x40 SWAP4 DUP6 SWAP4 PUSH1 0x1F SWAP3 DUP6 DUP8 MSTORE DUP2 DUP7 MSTORE MLOAD SWAP2 DUP3 DUP1 SWAP3 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP4 POP SWAP2 SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP3 DUP5 LT PUSH2 0x163 JUMPI POP POP POP DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x8D JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP7 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x14F JUMP JUMPDEST SWAP2 POP SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP6 MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x8D JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x7F AND PUSH2 0x66 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 0xB1 SWAP9 0x25 0x2D 0xC1 0xE7 DUP10 PUSH1 0x35 PUSH24 0xEB44F76D207D9CE2251BE7CBD957B84B3F9E10807C64736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"666:520:45:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;666:520:45;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;666:520:45;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;-1:-1:-1;666:520:45;;;-1:-1:-1;666:520:45;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;-1:-1:-1;666:520:45;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;-1:-1:-1;666:520:45;;-1:-1:-1;666:520:45;;;;;;;;;-1:-1:-1;;666:520:45;;;-1:-1:-1;;;;;666:520:45;;;;;;;;;;:::o"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080600436101561000e575f80fd5b5f3560e01c6354fd4d5014610021575f80fd5b346101e9575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101e9575f80546001908060011c92600182169384156101e1575b60209384821086146101b4578187528487019587948690821561017b575050600114610124575b505003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090811684019367ffffffffffffffff8511818610176100f7576040938593601f9285875281865251918280928701528686015e5f85828601015201168101030190f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80805285935091907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b828410610163575050508201015f8061008d565b8054848a01860152889550869490930192810161014f565b915093507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009150168552151560051b8201015f8061008d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b607f16610066565b5f80fdfea2646970667358221220d9b198252dc1e789603577eb44f76d207d9ce2251be7cbd957b84b3f9e10807c64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0xE JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x54FD4D50 EQ PUSH2 0x21 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1E9 JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x1E9 JUMPI PUSH0 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP1 PUSH1 0x1 SHR SWAP3 PUSH1 0x1 DUP3 AND SWAP4 DUP5 ISZERO PUSH2 0x1E1 JUMPI JUMPDEST PUSH1 0x20 SWAP4 DUP5 DUP3 LT DUP7 EQ PUSH2 0x1B4 JUMPI DUP2 DUP8 MSTORE DUP5 DUP8 ADD SWAP6 DUP8 SWAP5 DUP7 SWAP1 DUP3 ISZERO PUSH2 0x17B JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x124 JUMPI JUMPDEST POP POP SUB PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND DUP5 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT DUP2 DUP7 LT OR PUSH2 0xF7 JUMPI PUSH1 0x40 SWAP4 DUP6 SWAP4 PUSH1 0x1F SWAP3 DUP6 DUP8 MSTORE DUP2 DUP7 MSTORE MLOAD SWAP2 DUP3 DUP1 SWAP3 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP1 RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP4 POP SWAP2 SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP3 DUP5 LT PUSH2 0x163 JUMPI POP POP POP DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x8D JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP7 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x14F JUMP JUMPDEST SWAP2 POP SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP6 MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x8D JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x7F AND PUSH2 0x66 JUMP JUMPDEST PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 0xB1 SWAP9 0x25 0x2D 0xC1 0xE7 DUP10 PUSH1 0x35 PUSH24 0xEB44F76D207D9CE2251BE7CBD957B84B3F9E10807C64736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"666:520:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;666:520:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;666:520:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"version_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The version is set at deployment time and cannot be changed. It would be immutable, but immutable strings are not yet supported. Contracts like factories and pools should have versions. These typically take the form of JSON strings containing detailed information about the deployment. For instance: `{name: 'ChildChainGaugeFactory', version: 2, deployment: '20230316-child-chain-gauge-factory-v2'}`\",\"kind\":\"dev\",\"methods\":{\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Retrieves a contract's version from storage.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":\"Version\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol":{"WordCodec":{"abi":[{"inputs":[],"name":"CodecOverflow","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220c6a3c6d8e2e6d2d17703b672ccaa096ebc55529a8d9a8da3e5d7befc86b1ae5464736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 LOG3 0xC6 0xD8 0xE2 0xE6 0xD2 0xD1 PUSH24 0x3B672CCAA096EBC55529A8D9A8DA3E5D7BEFC86B1AE5464 PUSH20 0x6F6C634300081A00330000000000000000000000 ","sourceMap":"1408:9257:46:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220c6a3c6d8e2e6d2d17703b672ccaa096ebc55529a8d9a8da3e5d7befc86b1ae5464736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 LOG3 0xC6 0xD8 0xE2 0xE6 0xD2 0xD1 PUSH24 0x3B672CCAA096EBC55529A8D9A8DA3E5D7BEFC86B1AE5464 PUSH20 0x6F6C634300081A00330000000000000000000000 ","sourceMap":"1408:9257:46:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CodecOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfBounds\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Typically used to pack multiple values in a single slot, saving gas by performing fewer storage accesses. Each value is defined by its size and the least significant bit in the word, also known as offset. For example, two 128 bit values may be encoded in a word by assigning one an offset of 0, and the other an offset of 128. We could use Solidity structs to pack values together in a single storage slot instead of relying on a custom and error-prone library, but unfortunately Solidity only allows for structs to live in either storage, calldata or memory. Because a memory struct uses not just memory but also a slot in the stack (to store its memory location), using memory for word-sized values (i.e. of 256 bits or less) is strictly less gas performant, and doesn't even prevent stack-too-deep issues. This is compounded by the fact that Balancer contracts typically are memory- intensive, and the cost of accessing memory increases quadratically with the number of allocated words. Manual packing and unpacking is therefore the preferred approach.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"CodecOverflow()\":[{\"notice\":\"Function called with an invalid value.\"}],\"OutOfBounds()\":[{\"notice\":\"Function called with an invalid bitLength or offset.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for encoding and decoding values stored inside a 256 bit word.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":\"WordCodec\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol":{"FixedPoint":{"abi":[{"inputs":[],"name":"ZeroDivision","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220759e3198681f476397308c5f1550c66118ba23776ada44e68786379010357db264736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x9E3198681F476397308C5F1550C66118BA23776ADA44 0xE6 DUP8 DUP7 CALLDATACOPY SWAP1 LT CALLDATALOAD PUSH30 0xB264736F6C634300081A0033000000000000000000000000000000000000 ","sourceMap":"239:5688:47:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220759e3198681f476397308c5f1550c66118ba23776ada44e68786379010357db264736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x9E3198681F476397308C5F1550C66118BA23776ADA44 0xE6 DUP8 DUP7 CALLDATACOPY SWAP1 LT CALLDATALOAD PUSH30 0xB264736F6C634300081A0033000000000000000000000000000000000000 ","sourceMap":"239:5688:47:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Support 18-decimal fixed point arithmetic. All Vault calculations use this for high and uniform precision.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol":{"LogExpMath":{"abi":[{"inputs":[],"name":"BaseOutOfBounds","type":"error"},{"inputs":[],"name":"ExponentOutOfBounds","type":"error"},{"inputs":[],"name":"InvalidExponent","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"},{"inputs":[],"name":"ProductOutOfBounds","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220dcc680a87918367372a6a6a0a08c322a8e8d5a4b90cd11cb478ea76f7476fec764736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xC6 DUP1 0xA8 PUSH26 0x18367372A6A6A0A08C322A8E8D5A4B90CD11CB478EA76F7476FE 0xC7 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"595:21889:48:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220dcc680a87918367372a6a6a0a08c322a8e8d5a4b90cd11cb478ea76f7476fec764736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xC6 DUP1 0xA8 PUSH26 0x18367372A6A6A0A08C322A8E8D5A4B90CD11CB478EA76F7476FE 0xC7 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"595:21889:48:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BaseOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExponentOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProductOutOfBounds\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Fernando Martinelli - @fernandomartinelliSergio Yuhjtman - @sergioyuhjtmanDaniel Fernandez - @dmf7z\",\"details\":\"Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument). Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural exponentiation and logarithm (where the base is Euler's number). All math operations are unchecked in order to save gas.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"BaseOutOfBounds()\":[{\"notice\":\"This error is thrown when a base is not within an acceptable range.\"}],\"ExponentOutOfBounds()\":[{\"notice\":\"This error is thrown when a exponent is not within an acceptable range.\"}],\"InvalidExponent()\":[{\"notice\":\"This error is thrown when an exponent used in the exp function is not within an acceptable range.\"}],\"OutOfBounds()\":[{\"notice\":\"This error is thrown when a variable or result is not within the acceptable bounds defined in the function.\"}],\"ProductOutOfBounds()\":[{\"notice\":\"This error is thrown when the exponent * ln(base) is not within an acceptable range.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":\"LogExpMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol":{"WeightedMath":{"abi":[{"inputs":[],"name":"MaxInRatio","type":"error"},{"inputs":[],"name":"MaxOutRatio","type":"error"},{"inputs":[],"name":"ZeroInvariant","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220fd28634e2610d3e9e6a5067503b3cd0c91040dcc898cbbcad8531c4054ce8c0264736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT 0x28 PUSH4 0x4E2610D3 0xE9 0xE6 0xA5 MOD PUSH22 0x3B3CD0C91040DCC898CBBCAD8531C4054CE8C026473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"660:13255:49:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220fd28634e2610d3e9e6a5067503b3cd0c91040dcc898cbbcad8531c4054ce8c0264736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 REVERT 0x28 PUSH4 0x4E2610D3 0xE9 0xE6 0xA5 MOD PUSH22 0x3B3CD0C91040DCC898CBBCAD8531C4054CE8C026473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"660:13255:49:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MaxInRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxOutRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroInvariant\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"It is a generalization of the x * y = k constant product formula, accounting for cases with more than two tokens, and weights that are not 50/50. See https://docs.qr68.com/tech-implementations/weighted-math. For security reasons, to help ensure that for all possible \\\"round trip\\\" paths the caller always receives the same or fewer tokens than supplied, we have chosen the rounding direction to favor the protocol in all cases.\",\"errors\":{\"ZeroInvariant()\":[{\"details\":\"Most commonly, this happens when a token balance is zero.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"MaxInRatio()\":[{\"notice\":\"User attempted to add a disproportionate amountIn of tokens to a pool.\"}],\"MaxOutRatio()\":[{\"notice\":\"User attempted to extract a disproportionate amountOut of tokens from a pool.\"}],\"ZeroInvariant()\":[{\"notice\":\"Error thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Implementation of Balancer Weighted Math, essentially unchanged since v1.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":\"WeightedMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":{\"keccak256\":\"0xb31be209c69a6e60f4486b793bfc57b3ab7aa25efd29f40e981d5b9c95196f7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://04a10cf9c7a408f0d617d8f25dedd1d4d8d0411ac022b26293b39fccfbf41c71\",\"dweb:/ipfs/QmaExV5EYT4dtE9EAybKaraqXnbpM4usyAfFV5DHfatkof\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol":{"ReentrancyGuardTransient":{"abi":[{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"NOTE: This variant only works on networks where EIP-1153 is available.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Variant of {ReentrancyGuard} that uses transient storage.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":\"ReentrancyGuardTransient\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol":{"SlotDerivation":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212201156cab60024024978cc55ce09d8d11a8b28a05d7635d02436bef43753bdfcd064736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT JUMP 0xCA 0xB6 STOP 0x24 MUL BLOBHASH PUSH25 0xCC55CE09D8D11A8B28A05D7635D02436BEF43753BDFCD06473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"1652:3778:51:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212201156cab60024024978cc55ce09d8d11a8b28a05d7635d02436bef43753bdfcd064736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT JUMP 0xCA 0xB6 STOP 0x24 MUL BLOBHASH PUSH25 0xCC55CE09D8D11A8B28A05D7635D02436BEF43753BDFCD06473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"1652:3778:51:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The derivation method for array and mapping matches the storage layout used by the solidity language/compiler. See https://docs.soliditylang.org/en/v0.8.20/internals/layout_in_storage.html#mappings-and-dynamic-arrays[Solidity docs for mappings and dynamic arrays.]. Example usage: ```solidity contract Example { // Add the library methods using StorageSlot for bytes32; using SlotDerivation for bytes32; // Declare a namespace string private constant _NAMESPACE = \\\"\\\" // eg. OpenZeppelin.Slot function setValueInNamespace(uint256 key, address newValue) internal { _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value = newValue; } function getValueInNamespace(uint256 key) internal view returns (address) { return _NAMESPACE.erc7201Slot().deriveMapping(key).getAddressSlot().value; } } ``` TIP: Consider using this library along with {StorageSlot}. NOTE: This library provides a way to manipulate storage locations in a non-standard way. Tooling for checking upgrade safety will ignore the slots accessed through this library.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for computing storage (and transient storage) locations from namespaces and deriving slots corresponding to standard patterns.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":\"SlotDerivation\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol":{"StorageSlotExtension":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220e3f2424437411f972c689c895cb2a6ada8772dba7799f78d4282754dcf938d3564736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 CALLCODE TIMESTAMP PREVRANDAO CALLDATACOPY COINBASE 0x1F SWAP8 0x2C PUSH9 0x9C895CB2A6ADA8772D 0xBA PUSH24 0x99F78D4282754DCF938D3564736F6C634300081A00330000 ","sourceMap":"278:4371:52:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220e3f2424437411f972c689c895cb2a6ada8772dba7799f78d4282754dcf938d3564736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 CALLCODE TIMESTAMP PREVRANDAO CALLDATACOPY COINBASE 0x1F SWAP8 0x2C PUSH9 0x9C895CB2A6ADA8772D 0xBA PUSH24 0x99F78D4282754DCF938D3564736F6C634300081A00330000 ","sourceMap":"278:4371:52:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for reading and writing primitive types to specific storage slots. Based on OpenZeppelin; just adding support for int256.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":\"StorageSlotExtension\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]}},\"version\":1}"}},"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol":{"TransientEnumerableSet":{"abi":[{"inputs":[],"name":"ElementNotFound","type":"error"},{"inputs":[],"name":"IndexOutOfBounds","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122048ec8e140b122e3f8fdac45052f925e91c414d00608e2d3ab55d36c54eeca78064736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BASEFEE 0xEC DUP15 EQ SIGNEXTEND SLT 0x2E EXTCODEHASH DUP16 0xDA 0xC4 POP MSTORE 0xF9 0x25 0xE9 SHR COINBASE 0x4D STOP PUSH1 0x8E 0x2D GASPRICE 0xB5 TSTORE CALLDATASIZE 0xC5 0x4E 0xEC 0xA7 DUP1 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1284:6680:53:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122048ec8e140b122e3f8fdac45052f925e91c414d00608e2d3ab55d36c54eeca78064736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BASEFEE 0xEC DUP15 EQ SIGNEXTEND SLT 0x2E EXTCODEHASH DUP16 0xDA 0xC4 POP MSTORE 0xF9 0x25 0xE9 SHR COINBASE 0x4D STOP PUSH1 0x8E 0x2D GASPRICE 0xB5 TSTORE CALLDATASIZE 0xC5 0x4E 0xEC 0xA7 DUP1 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1284:6680:53:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ElementNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"See https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that work on bytes32, replacing them with a native implementation for address values, to reduce bytecode size and runtime costs. It also uses transient storage. The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example { // Add the library methods using TransientEnumerableSet for TransientEnumerableSet.AddressSet; // Declare a set state variable TransientEnumerableSet.AddressSet private mySet; } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"ElementNotFound()\":[{\"notice\":\"An element that is not present in the set.\"}],\"IndexOutOfBounds()\":[{\"notice\":\"An index is beyond the current bounds of the set.\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for managing sets of primitive types.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\":\"TransientEnumerableSet\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\":{\"keccak256\":\"0x1b77bbe902f863cb148ed28ae055841f77fc245b44f878932d0b8e3f2efba7f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1925829096d14d87eacbf2b7d42866128e2b43e1ff4249742a74f62e372ad247\",\"dweb:/ipfs/QmbFmGn45eoiHZHFGhXRqKSzg53j2Lz2XGQqaw6pkSjRxq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol":{"BalancerPoolToken":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault_","type":"address"},{"internalType":"string","name":"bptName","type":"string"},{"internalType":"string","name":"bptSymbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","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":[],"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":[],"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":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementNonce","outputs":[],"stateMutability":"nonpayable","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":[{"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":"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"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_string_fromMemory":{"entryPoint":1104,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1069,"id":null,"parameterSlots":2,"returnSlots":0},"fun_toShortStringWithFallback":{"entryPoint":1576,"id":40208,"parameterSlots":1,"returnSlots":1},"fun_toShortStringWithFallback_3774":{"entryPoint":1189,"id":40208,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"61018060408181523461042957611c7b803803809161001e828661042d565b8439820190606083830312610429578251906001600160a01b0382168203610429576020848101516001600160401b0395919291908681116104295785610066918301610450565b94828201518781116104295761007c9201610450565b918151958287018781108282111761034057835260019081885282880194603160f81b86526100aa886104a5565b976101209889526100ba8a610628565b966101409788528151868301209a8b60e052519020996101009a808c524660a052875190878201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528983015260608201524660808201523060a082015260a0815260c08101818110868211176103405788525190206080523060c052610160978852805191838311610340576003928354928684811c9416801561041f575b8885101461040b578190601f948581116103bd575b50889085831160011461035f575f92610354575b50505f1982861b1c191690861b1783555b80519384116103405760049586548681811c91168015610336575b82821014610323578381116102e0575b508092851160011461027b57509383949184925f95610270575b50501b925f19911b1c19161790555b519261151c948561075f86396080518561108f015260a0518561115b015260c05185611060015260e051856110de01525184611104015251836106f901525182610723015251818181610175015281816103b50152818161052a015281816106be015281816108e7015281816109a601528181610b8201528181610c130152610ff50152f35b015193505f806101db565b92919084601f198116885f52855f20955f905b898383106102c657505050106102ad575b50505050811b0190556101ea565b01519060f8845f19921b161c191690555f80808061029f565b85870151895590970196948501948893509081019061028e565b875f52815f208480880160051c82019284891061031a575b0160051c019087905b82811061030f5750506101c1565b5f8155018790610301565b925081926102f8565b602288634e487b7160e01b5f525260245ffd5b90607f16906101b1565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610185565b90889350601f19831691875f528a5f20925f5b8c8282106103a75750508411610390575b505050811b018355610196565b01515f1983881b60f8161c191690555f8080610383565b8385015186558c97909501949384019301610372565b909150855f52885f208580850160051c8201928b8610610402575b918a91869594930160051c01915b8281106103f4575050610171565b5f81558594508a91016103e6565b925081926103d8565b634e487b7160e01b5f52602260045260245ffd5b93607f169361015c565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761034057604052565b81601f82011215610429578051906001600160401b0382116103405760405192610484601f8401601f19166020018561042d565b8284526020838301011161042957815f9260208093018386015e8301015290565b80516020908181101561051b5750601f8251116104dd57808251920151908083106104cf57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610340575f54926001938481811c9116801561061e575b8382101461040b57601f81116105eb575b5081601f841160011461058957509282939183925f9461057e575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610569565b919083601f1981165f8052845f20945f905b888383106105d157505050106105b9575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f80806105ac565b85870151885590960195948501948793509081019061059b565b5f805284601f845f20920160051c820191601f860160051c015b82811061061357505061054e565b5f8155018590610605565b90607f169061053d565b8051602090818110156106525750601f8251116104dd57808251920151908083106104cf57501790565b9192916001600160401b0381116103405760019182548381811c91168015610754575b8282101461040b57601f8111610721575b5080601f83116001146106c15750819293945f926106b6575b50505f19600383901b1c191690821b17905560ff90565b015190505f8061069f565b90601f19831695845f52825f20925f905b88821061070a57505083859697106106f2575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f80806106e5565b8087859682949686015181550195019301906106d2565b835f5283601f835f20920160051c820191601f850160051c015b828110610749575050610686565b5f815501849061073b565b90607f169061067556fe6080604081815260049182361015610015575f80fd5b5f3560e01c90816301ffc9a714610db95750806306fdde0314610cc9578063095ea7b314610c4c57806318160ddd14610bba57806323b872dd14610b1157806323de665114610adf57806330adf81f14610aa5578063313ce56714610a8a5780633644e51514610a675780635687f2b814610a08578063627cdcb9146109df578063679aefce1461094d57806370a08231146108795780637ecebe001461083557806384b0196e146106e25780638d928af81461069257806395d89b4114610588578063a9059cbb14610493578063d505accf146101f15763dd62ed3e146100fb575f80fd5b346101dc57806003193601126101dc576020610115610e63565b606461011f610e86565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156101e8575f916101af575b6020925051908152f35b90506020823d6020116101e0575b816101ca60209383610f85565b810103126101dc5760209151906101a5565b5f80fd5b3d91506101bd565b513d5f823e3d90fd5b50346101dc5760e06003193601126101dc5761020b610e63565b90610214610e86565b604435926064359060843560ff811681036101dc57824211610468576102618273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b90855160208101907f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9825273ffffffffffffffffffffffffffffffffffffffff9586861694858a84015287891660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff82111761043c5792610340926103379288958b525190206102f6611049565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220611374565b9092919261140e565b1681810361040f5750505f8495966103b160209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156101e857506103e557005b6104069060203d602011610408575b6103fe8183610f85565b810190610fc6565b005b503d6103f4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b60418b7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b82877f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b50346101dc57806003193601126101dc576020610510926104b2610e63565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af191821561057e57602092610563575b505160018152f35b61057990833d8511610408576103fe8183610f85565b61055b565b50513d5f823e3d90fd5b5090346101dc575f6003193601126101dc57815191825f83546105aa81610eeb565b90818452602095600191876001821691825f1461064d5750506001146105f1575b5050506105ed92916105de910385610f85565b51928284938452830190610e20565b0390f35b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061063557505050820101816105de6105ed6105cb565b8054848a01860152889550879490930192810161061c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b860190930193508492506105de91506105ed90506105cb565b50346101dc575f6003193601126101dc576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5090346101dc575f6003193601126101dc5761071d7f0000000000000000000000000000000000000000000000000000000000000000611181565b916107477f00000000000000000000000000000000000000000000000000000000000000006112b6565b815191602091602084019484861067ffffffffffffffff87111761080957506107be82602092876107b199989795525f855281519889987f0f000000000000000000000000000000000000000000000000000000000000008a5260e0868b015260e08a0190610e20565b9188830390890152610e20565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b8281106107f257505050500390f35b8351855286955093810193928101926001016107e3565b6041907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b50346101dc5760206003193601126101dc5760209073ffffffffffffffffffffffffffffffffffffffff610867610e63565b165f5260028252805f20549051908152f35b5090346101dc57602091826003193601126101dc5782610897610e63565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa91821561057e575f9261091e575b5051908152f35b9091508281813d8311610946575b6109368183610f85565b810103126101dc5751905f610917565b503d61092c565b50346101dc575f6003193601126101dc578051917f4f037ee7000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156101e8575f916101af576020925051908152f35b346101dc575f6003193601126101dc57335f908152600260205260409020805460018101909155005b50346101dc5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610a3a36610ea9565b939194610a45610fde565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b50346101dc575f6003193601126101dc57602090610a83611049565b9051908152f35b50346101dc575f6003193601126101dc576020905160128152f35b50346101dc575f6003193601126101dc57602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b50346101dc5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a3a36610ea9565b50346101dc5760205f6084610b2536610ea9565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af191821561057e5760209261056357505160018152f35b50346101dc575f6003193601126101dc578051917fe4dc2aa4000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156101e8575f916101af576020925051908152f35b50346101dc57806003193601126101dc57602061051092610c6b610e63565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b50346101dc575f6003193601126101dc5780516003549091825f610cec84610eeb565b808352602094600190866001821691825f14610d79575050600114610d1e575b50506105ed92916105de910385610f85565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410610d6157505050820101816105de610d0c565b8054848a018601528895508794909301928101610d4b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506105de9050610d0c565b83346101dc5760206003193601126101dc5735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101dc577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101dc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101dc57565b60031960609101126101dc5773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101dc579160243590811681036101dc579060443590565b90600182811c92168015610f32575b6020831014610f0557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610efa565b6040810190811067ffffffffffffffff821117610f5857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f5857604052565b908160209103126101dc575180151581036101dc5790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361101d57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480611158575b156110b1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610f585760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611088565b60ff81146111d55760ff811690601f82116111ad57604051916111a383610f3c565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f54916111e783610eeb565b808352926020906001908181169081156112735750600114611215575b505061121292500382610f85565b90565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b82841061125b57506112129450505081016020015f80611204565b85548785018301529485019486945092810192611240565b9050602093506112129592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80611204565b60ff81146112d85760ff811690601f82116111ad57604051916111a383610f3c565b506040515f816001916001546112ed81610eeb565b8084529360209160018116908115611273575060011461131557505061121292500382610f85565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b82841061135c57506112129450505081016020015f80611204565b85548785018301529485019486945092810192611341565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611403579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156113f8575f5173ffffffffffffffffffffffffffffffffffffffff8116156113ee57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156114b95780611420575050565b60018103611450577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361148457507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60031461148e5750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220b79c87813485173e249eb491f2f5d5c7c4e306fad62611d4ff7318cb75939d1b64736f6c634300081a0033","opcodes":"PUSH2 0x180 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH2 0x429 JUMPI PUSH2 0x1C7B DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1E DUP3 DUP7 PUSH2 0x42D JUMP JUMPDEST DUP5 CODECOPY DUP3 ADD SWAP1 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x429 JUMPI DUP3 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x429 JUMPI PUSH1 0x20 DUP5 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP6 SWAP2 SWAP3 SWAP2 SWAP1 DUP7 DUP2 GT PUSH2 0x429 JUMPI DUP6 PUSH2 0x66 SWAP2 DUP4 ADD PUSH2 0x450 JUMP JUMPDEST SWAP5 DUP3 DUP3 ADD MLOAD DUP8 DUP2 GT PUSH2 0x429 JUMPI PUSH2 0x7C SWAP3 ADD PUSH2 0x450 JUMP JUMPDEST SWAP2 DUP2 MLOAD SWAP6 DUP3 DUP8 ADD DUP8 DUP2 LT DUP3 DUP3 GT OR PUSH2 0x340 JUMPI DUP4 MSTORE PUSH1 0x1 SWAP1 DUP2 DUP9 MSTORE DUP3 DUP9 ADD SWAP5 PUSH1 0x31 PUSH1 0xF8 SHL DUP7 MSTORE PUSH2 0xAA DUP9 PUSH2 0x4A5 JUMP JUMPDEST SWAP8 PUSH2 0x120 SWAP9 DUP10 MSTORE PUSH2 0xBA DUP11 PUSH2 0x628 JUMP JUMPDEST SWAP7 PUSH2 0x140 SWAP8 DUP9 MSTORE DUP2 MLOAD DUP7 DUP4 ADD KECCAK256 SWAP11 DUP12 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 SWAP10 PUSH2 0x100 SWAP11 DUP1 DUP13 MSTORE CHAINID PUSH1 0xA0 MSTORE DUP8 MLOAD SWAP1 DUP8 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE DUP10 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT DUP7 DUP3 GT OR PUSH2 0x340 JUMPI DUP9 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 SWAP8 DUP9 MSTORE DUP1 MLOAD SWAP2 DUP4 DUP4 GT PUSH2 0x340 JUMPI PUSH1 0x3 SWAP3 DUP4 SLOAD SWAP3 DUP7 DUP5 DUP2 SHR SWAP5 AND DUP1 ISZERO PUSH2 0x41F JUMPI JUMPDEST DUP9 DUP6 LT EQ PUSH2 0x40B JUMPI DUP2 SWAP1 PUSH1 0x1F SWAP5 DUP6 DUP2 GT PUSH2 0x3BD JUMPI JUMPDEST POP DUP9 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x35F JUMPI PUSH0 SWAP3 PUSH2 0x354 JUMPI JUMPDEST POP POP PUSH0 NOT DUP3 DUP7 SHL SHR NOT AND SWAP1 DUP7 SHL OR DUP4 SSTORE JUMPDEST DUP1 MLOAD SWAP4 DUP5 GT PUSH2 0x340 JUMPI PUSH1 0x4 SWAP6 DUP7 SLOAD DUP7 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x336 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x323 JUMPI DUP4 DUP2 GT PUSH2 0x2E0 JUMPI JUMPDEST POP DUP1 SWAP3 DUP6 GT PUSH1 0x1 EQ PUSH2 0x27B JUMPI POP SWAP4 DUP4 SWAP5 SWAP2 DUP5 SWAP3 PUSH0 SWAP6 PUSH2 0x270 JUMPI JUMPDEST POP POP SHL SWAP3 PUSH0 NOT SWAP2 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST MLOAD SWAP3 PUSH2 0x151C SWAP5 DUP6 PUSH2 0x75F DUP7 CODECOPY PUSH1 0x80 MLOAD DUP6 PUSH2 0x108F ADD MSTORE PUSH1 0xA0 MLOAD DUP6 PUSH2 0x115B ADD MSTORE PUSH1 0xC0 MLOAD DUP6 PUSH2 0x1060 ADD MSTORE PUSH1 0xE0 MLOAD DUP6 PUSH2 0x10DE ADD MSTORE MLOAD DUP5 PUSH2 0x1104 ADD MSTORE MLOAD DUP4 PUSH2 0x6F9 ADD MSTORE MLOAD DUP3 PUSH2 0x723 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x175 ADD MSTORE DUP2 DUP2 PUSH2 0x3B5 ADD MSTORE DUP2 DUP2 PUSH2 0x52A ADD MSTORE DUP2 DUP2 PUSH2 0x6BE ADD MSTORE DUP2 DUP2 PUSH2 0x8E7 ADD MSTORE DUP2 DUP2 PUSH2 0x9A6 ADD MSTORE DUP2 DUP2 PUSH2 0xB82 ADD MSTORE DUP2 DUP2 PUSH2 0xC13 ADD MSTORE PUSH2 0xFF5 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP4 POP PUSH0 DUP1 PUSH2 0x1DB JUMP JUMPDEST SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1F NOT DUP2 AND DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP6 PUSH0 SWAP1 JUMPDEST DUP10 DUP4 DUP4 LT PUSH2 0x2C6 JUMPI POP POP POP LT PUSH2 0x2AD JUMPI JUMPDEST POP POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x1EA JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xF8 DUP5 PUSH0 NOT SWAP3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x29F JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP10 SSTORE SWAP1 SWAP8 ADD SWAP7 SWAP5 DUP6 ADD SWAP5 DUP9 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x28E JUMP JUMPDEST DUP8 PUSH0 MSTORE DUP2 PUSH0 KECCAK256 DUP5 DUP1 DUP9 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP5 DUP10 LT PUSH2 0x31A JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP8 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x30F JUMPI POP POP PUSH2 0x1C1 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP8 SWAP1 PUSH2 0x301 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x22 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x1B1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x185 JUMP JUMPDEST SWAP1 DUP9 SWAP4 POP PUSH1 0x1F NOT DUP4 AND SWAP2 DUP8 PUSH0 MSTORE DUP11 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP13 DUP3 DUP3 LT PUSH2 0x3A7 JUMPI POP POP DUP5 GT PUSH2 0x390 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP4 SSTORE PUSH2 0x196 JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP9 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x383 JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE DUP13 SWAP8 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x372 JUMP JUMPDEST SWAP1 SWAP2 POP DUP6 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 DUP6 DUP1 DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP12 DUP7 LT PUSH2 0x402 JUMPI JUMPDEST SWAP2 DUP11 SWAP2 DUP7 SWAP6 SWAP5 SWAP4 ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x3F4 JUMPI POP POP PUSH2 0x171 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP DUP11 SWAP2 ADD PUSH2 0x3E6 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x3D8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP4 PUSH1 0x7F AND SWAP4 PUSH2 0x15C JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x340 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x429 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x340 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x484 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x42D JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x429 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x51B JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x4DD JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x4CF JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x340 JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x61E JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x40B JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x5EB JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x589 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0x57E JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x569 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0x5D1 JUMPI POP POP POP LT PUSH2 0x5B9 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x5AC JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x59B JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x613 JUMPI POP POP PUSH2 0x54E JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0x605 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x53D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x652 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x4DD JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x4CF JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x340 JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x754 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x40B JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x721 JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x6C1 JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x6B6 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x69F JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0x70A JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0x6F2 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x6E5 JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x6D2 JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x749 JUMPI POP POP PUSH2 0x686 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x73B JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x675 JUMP INVALID PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xDB9 JUMPI POP DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCC9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC4C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xBBA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB11 JUMPI DUP1 PUSH4 0x23DE6651 EQ PUSH2 0xADF JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0xAA5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0xA67 JUMPI DUP1 PUSH4 0x5687F2B8 EQ PUSH2 0xA08 JUMPI DUP1 PUSH4 0x627CDCB9 EQ PUSH2 0x9DF JUMPI DUP1 PUSH4 0x679AEFCE EQ PUSH2 0x94D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x879 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x835 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x6E2 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x493 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x1F1 JUMPI PUSH4 0xDD62ED3E EQ PUSH2 0xFB JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1DC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH2 0x115 PUSH2 0xE63 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x11F PUSH2 0xE86 JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI PUSH0 SWAP2 PUSH2 0x1AF JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1E0 JUMPI JUMPDEST DUP2 PUSH2 0x1CA PUSH1 0x20 SWAP4 DUP4 PUSH2 0xF85 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x1A5 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1BD JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0xE0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH2 0x20B PUSH2 0xE63 JUMP JUMPDEST SWAP1 PUSH2 0x214 PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1DC JUMPI DUP3 TIMESTAMP GT PUSH2 0x468 JUMPI PUSH2 0x261 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP6 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 DUP7 AND SWAP5 DUP6 DUP11 DUP5 ADD MSTORE DUP8 DUP10 AND PUSH1 0x60 DUP5 ADD MSTORE DUP11 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH1 0xE0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x43C JUMPI SWAP3 PUSH2 0x340 SWAP3 PUSH2 0x337 SWAP3 DUP9 SWAP6 DUP12 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0x2F6 PUSH2 0x1049 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x1374 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x140E JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x40F JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x3B1 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI POP PUSH2 0x3E5 JUMPI STOP JUMPDEST PUSH2 0x406 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x408 JUMPI JUMPDEST PUSH2 0x3FE DUP2 DUP4 PUSH2 0xF85 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xFC6 JUMP JUMPDEST STOP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F4 JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x41 DUP12 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 DUP8 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH2 0x510 SWAP3 PUSH2 0x4B2 PUSH2 0xE63 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x57E JUMPI PUSH1 0x20 SWAP3 PUSH2 0x563 JUMPI JUMPDEST POP MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x579 SWAP1 DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x408 JUMPI PUSH2 0x3FE DUP2 DUP4 PUSH2 0xF85 JUMP JUMPDEST PUSH2 0x55B JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0x5AA DUP2 PUSH2 0xEEB JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x64D JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x5F1 JUMPI JUMPDEST POP POP POP PUSH2 0x5ED SWAP3 SWAP2 PUSH2 0x5DE SWAP2 SUB DUP6 PUSH2 0xF85 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xE20 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x635 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x5DE PUSH2 0x5ED PUSH2 0x5CB JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x61C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x5DE SWAP2 POP PUSH2 0x5ED SWAP1 POP PUSH2 0x5CB JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH2 0x71D PUSH32 0x0 PUSH2 0x1181 JUMP JUMPDEST SWAP2 PUSH2 0x747 PUSH32 0x0 PUSH2 0x12B6 JUMP JUMPDEST DUP2 MLOAD SWAP2 PUSH1 0x20 SWAP2 PUSH1 0x20 DUP5 ADD SWAP5 DUP5 DUP7 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP8 GT OR PUSH2 0x809 JUMPI POP PUSH2 0x7BE DUP3 PUSH1 0x20 SWAP3 DUP8 PUSH2 0x7B1 SWAP10 SWAP9 SWAP8 SWAP6 MSTORE PUSH0 DUP6 MSTORE DUP2 MLOAD SWAP9 DUP10 SWAP9 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP11 MSTORE PUSH1 0xE0 DUP7 DUP12 ADD MSTORE PUSH1 0xE0 DUP11 ADD SWAP1 PUSH2 0xE20 JUMP JUMPDEST SWAP2 DUP9 DUP4 SUB SWAP1 DUP10 ADD MSTORE PUSH2 0xE20 JUMP JUMPDEST SWAP2 CHAINID PUSH1 0x60 DUP8 ADD MSTORE ADDRESS PUSH1 0x80 DUP8 ADD MSTORE PUSH0 PUSH1 0xA0 DUP8 ADD MSTORE DUP6 DUP4 SUB PUSH1 0xC0 DUP8 ADD MSTORE MLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP3 SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x7F2 JUMPI POP POP POP POP SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD DUP6 MSTORE DUP7 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x7E3 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x867 PUSH2 0xE63 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP3 PUSH2 0x897 PUSH2 0xE63 JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x57E JUMPI PUSH0 SWAP3 PUSH2 0x91E JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x946 JUMPI JUMPDEST PUSH2 0x936 DUP2 DUP4 PUSH2 0xF85 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1DC JUMPI MLOAD SWAP1 PUSH0 PUSH2 0x917 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x92C JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP1 MLOAD SWAP2 PUSH32 0x4F037EE700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI PUSH0 SWAP2 PUSH2 0x1AF JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0xA3A CALLDATASIZE PUSH2 0xEA9 JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0xA45 PUSH2 0xFDE JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 PUSH2 0xA83 PUSH2 0x1049 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0xA3A CALLDATASIZE PUSH2 0xEA9 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0xB25 CALLDATASIZE PUSH2 0xEA9 JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x57E JUMPI PUSH1 0x20 SWAP3 PUSH2 0x563 JUMPI POP MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP1 MLOAD SWAP2 PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI PUSH0 SWAP2 PUSH2 0x1AF JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH2 0x510 SWAP3 PUSH2 0xC6B PUSH2 0xE63 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0xCEC DUP5 PUSH2 0xEEB JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xD79 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xD1E JUMPI JUMPDEST POP POP PUSH2 0x5ED SWAP3 SWAP2 PUSH2 0x5DE SWAP2 SUB DUP6 PUSH2 0xF85 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0xD61 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x5DE PUSH2 0xD0C JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xD4B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x5DE SWAP1 POP PUSH2 0xD0C JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1DC JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DC JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DC JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1DC JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1DC JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1DC JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0xF32 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0xF05 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0xEFA JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF58 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF58 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x1DC JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x1DC JUMPI SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x101D JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x1158 JUMPI JUMPDEST ISZERO PUSH2 0x10B1 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF58 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x1088 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x11D5 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x11AD JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x11A3 DUP4 PUSH2 0xF3C JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x11E7 DUP4 PUSH2 0xEEB JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1273 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1215 JUMPI JUMPDEST POP POP PUSH2 0x1212 SWAP3 POP SUB DUP3 PUSH2 0xF85 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x125B JUMPI POP PUSH2 0x1212 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x1204 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x1212 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x1204 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x12D8 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x11AD JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x11A3 DUP4 PUSH2 0xF3C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x12ED DUP2 PUSH2 0xEEB JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1273 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1315 JUMPI POP POP PUSH2 0x1212 SWAP3 POP SUB DUP3 PUSH2 0xF85 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x135C JUMPI POP PUSH2 0x1212 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x1204 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x1341 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x1403 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x13F8 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x13EE JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x14B9 JUMPI DUP1 PUSH2 0x1420 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x1450 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x1484 JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x148E JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 SWAP13 DUP8 DUP2 CALLVALUE DUP6 OR RETURNDATACOPY 0x24 SWAP15 0xB4 SWAP2 CALLCODE CREATE2 0xD5 0xC7 0xC4 0xE3 MOD STATICCALL 0xD6 0x26 GT 0xD4 SELFDESTRUCT PUSH20 0x18CB75939D1B64736F6C634300081A0033000000 ","sourceMap":"1269:5749:54:-:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1269:5749:54;;;;;;;;;;;-1:-1:-1;;;;;1269:5749:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1269:5749:54;;3401:45:106;;;:::i;:::-;3393:53;;;;;3467:51;;;:::i;:::-;3456:62;;;;;1269:5749:54;;;;;3542:22:106;3528:36;;;;1269:5749:54;3591:25:106;;3574:42;;;;;;3644:13;3627:30;;1269:5749:54;;4204:80:106;;;;2079:95;;;;;;;;1269:5749:54;2079:95:106;;;3644:13;2079:95;;;;4278:4;3627:30;2079:95;;;3627:30;4204:80;;2079:95;1269:5749:54;;;;;;;;;;;;;;4194:91:106;;2079:95;3667:48;4278:4;2079:95;3725:27;409:14:68;;;;1269:5749:54;;;;;;;;2265:18;1269:5749;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;-1:-1:-1;;;;1269:5749:54;;;;;;;;;;;;;;;;;;;;2293:22;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:95:106;1269:5749:54;;;;;3627:30:106;1269:5749:54;;;;;2079:95:106;1269:5749:54;;;;;3528:36:106;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;4204:80:106;;;;;;1269:5749:54;;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;2293:22;1269:5749;;-1:-1:-1;1269:5749:54;;;;;-1:-1:-1;1269:5749:54;;;;;4204:80:106;;;;;;1269:5749:54;;;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;-1:-1:-1;;1269:5749:54;;;;-1:-1:-1;;;;;1269:5749:54;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1269:5749:54;;;;;;;;4204:80:106;1269:5749:54;;-1:-1:-1;;1269:5749:54;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;:::o;2914:340:102:-;1269:5749:54;;3059:2:102;;3037:24;;;3059:2;;;1269:5749:54;1854:2:102;1269:5749:54;;1840:16:102;1836:72;;1269:5749:54;;;;;2079:95:106;1269:5749:54;;;;;;1949:36:102;;3077:27;:::o;1269:5749:54:-;;;;;;;;;;1949:36:102;3077:27;:::o;1836:72::-;1269:5749:54;;;;1879:18:102;;;;;;;;;;;;1269:5749:54;;;;;;;;;;;;;;;;3432:13:106;1269:5749:54;;;;;;1854:2:102;1269:5749:54;-1:-1:-1;;1269:5749:54;;;1879:18:102;;;;3033:215;1269:5749:54;-1:-1:-1;;;;;1269:5749:54;;;;3432:13:106;1269:5749:54;;;;;;;;;;;;;;3033:215:102;1269:5749:54;;;;;;;;;;;3033:215:102;1269:5749:54;;;;;;;;;;;;;;;;3432:13:106;1269:5749:54;;;;;;;;;;;;;;;;;3432:13:106;1269:5749:54;1390:66:102;3195:42;:::o;1269:5749:54:-;;;;-1:-1:-1;1269:5749:54;;;;;4204:80:106;;;;;1269:5749:54;;3432:13:106;1269:5749:54;;;3432:13:106;1269:5749:54;;3432:13:106;1269:5749:54;;;;;;;;;;;;;;;;;;;;;3432:13:106;1269:5749:54;1390:66:102;3195:42;:::o;1269:5749:54:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;3432:13:106;1269:5749:54;;;;;3432:13:106;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;3432:13:106;1269:5749:54;;;;;;;;;;;;;;2914:340:102;1269:5749:54;;3059:2:102;;3037:24;;;3059:2;;;1269:5749:54;1854:2:102;1269:5749:54;;1840:16:102;1836:72;;1269:5749:54;;;;;2079:95:106;1269:5749:54;;;;;;1949:36:102;;3077:27;:::o;3033:215::-;1269:5749:54;;;-1:-1:-1;;;;;1269:5749:54;;;;;;;;;;;;;;;;;;3033:215:102;1269:5749:54;;;;;;;;;;;3033:215:102;1269:5749:54;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1269:5749:54;;;;;;;;;;;;;1390:66:102;;3195:42::o;1269:5749:54:-;;;;-1:-1:-1;1269:5749:54;;;;;4204:80:106;;;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;3195:42;:::o;1269:5749:54:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":3718,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_7265":{"entryPoint":3683,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_addresst_uint256":{"entryPoint":3753,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_bool_fromMemory":{"entryPoint":4038,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_string":{"entryPoint":3616,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":3819,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":3973,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_11167":{"entryPoint":3900,"id":null,"parameterSlots":1,"returnSlots":0},"fun_domainSeparatorV4":{"entryPoint":4169,"id":41103,"parameterSlots":0,"returnSlots":1},"fun_ensureOnlyVault":{"entryPoint":4062,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_throwError":{"entryPoint":5134,"id":40979,"parameterSlots":2,"returnSlots":0},"fun_toStringWithFallback":{"entryPoint":4790,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_toStringWithFallback_7271":{"entryPoint":4481,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_tryRecover":{"entryPoint":4980,"id":40894,"parameterSlots":4,"returnSlots":3},"fun_useNonce":{"entryPoint":null,"id":40024,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"27649":[{"length":32,"start":373},{"length":32,"start":949},{"length":32,"start":1322},{"length":32,"start":1726},{"length":32,"start":2279},{"length":32,"start":2470},{"length":32,"start":2946},{"length":32,"start":3091},{"length":32,"start":4085}],"41001":[{"length":32,"start":4239}],"41003":[{"length":32,"start":4443}],"41005":[{"length":32,"start":4192}],"41007":[{"length":32,"start":4318}],"41009":[{"length":32,"start":4356}],"41012":[{"length":32,"start":1785}],"41015":[{"length":32,"start":1827}]},"linkReferences":{},"object":"6080604081815260049182361015610015575f80fd5b5f3560e01c90816301ffc9a714610db95750806306fdde0314610cc9578063095ea7b314610c4c57806318160ddd14610bba57806323b872dd14610b1157806323de665114610adf57806330adf81f14610aa5578063313ce56714610a8a5780633644e51514610a675780635687f2b814610a08578063627cdcb9146109df578063679aefce1461094d57806370a08231146108795780637ecebe001461083557806384b0196e146106e25780638d928af81461069257806395d89b4114610588578063a9059cbb14610493578063d505accf146101f15763dd62ed3e146100fb575f80fd5b346101dc57806003193601126101dc576020610115610e63565b606461011f610e86565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156101e8575f916101af575b6020925051908152f35b90506020823d6020116101e0575b816101ca60209383610f85565b810103126101dc5760209151906101a5565b5f80fd5b3d91506101bd565b513d5f823e3d90fd5b50346101dc5760e06003193601126101dc5761020b610e63565b90610214610e86565b604435926064359060843560ff811681036101dc57824211610468576102618273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b90855160208101907f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9825273ffffffffffffffffffffffffffffffffffffffff9586861694858a84015287891660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff82111761043c5792610340926103379288958b525190206102f6611049565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220611374565b9092919261140e565b1681810361040f5750505f8495966103b160209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156101e857506103e557005b6104069060203d602011610408575b6103fe8183610f85565b810190610fc6565b005b503d6103f4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b60418b7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b82877f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b50346101dc57806003193601126101dc576020610510926104b2610e63565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af191821561057e57602092610563575b505160018152f35b61057990833d8511610408576103fe8183610f85565b61055b565b50513d5f823e3d90fd5b5090346101dc575f6003193601126101dc57815191825f83546105aa81610eeb565b90818452602095600191876001821691825f1461064d5750506001146105f1575b5050506105ed92916105de910385610f85565b51928284938452830190610e20565b0390f35b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061063557505050820101816105de6105ed6105cb565b8054848a01860152889550879490930192810161061c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b860190930193508492506105de91506105ed90506105cb565b50346101dc575f6003193601126101dc576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5090346101dc575f6003193601126101dc5761071d7f0000000000000000000000000000000000000000000000000000000000000000611181565b916107477f00000000000000000000000000000000000000000000000000000000000000006112b6565b815191602091602084019484861067ffffffffffffffff87111761080957506107be82602092876107b199989795525f855281519889987f0f000000000000000000000000000000000000000000000000000000000000008a5260e0868b015260e08a0190610e20565b9188830390890152610e20565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b8281106107f257505050500390f35b8351855286955093810193928101926001016107e3565b6041907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b50346101dc5760206003193601126101dc5760209073ffffffffffffffffffffffffffffffffffffffff610867610e63565b165f5260028252805f20549051908152f35b5090346101dc57602091826003193601126101dc5782610897610e63565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa91821561057e575f9261091e575b5051908152f35b9091508281813d8311610946575b6109368183610f85565b810103126101dc5751905f610917565b503d61092c565b50346101dc575f6003193601126101dc578051917f4f037ee7000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156101e8575f916101af576020925051908152f35b346101dc575f6003193601126101dc57335f908152600260205260409020805460018101909155005b50346101dc5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610a3a36610ea9565b939194610a45610fde565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b50346101dc575f6003193601126101dc57602090610a83611049565b9051908152f35b50346101dc575f6003193601126101dc576020905160128152f35b50346101dc575f6003193601126101dc57602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b50346101dc5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a3a36610ea9565b50346101dc5760205f6084610b2536610ea9565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af191821561057e5760209261056357505160018152f35b50346101dc575f6003193601126101dc578051917fe4dc2aa4000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156101e8575f916101af576020925051908152f35b50346101dc57806003193601126101dc57602061051092610c6b610e63565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b50346101dc575f6003193601126101dc5780516003549091825f610cec84610eeb565b808352602094600190866001821691825f14610d79575050600114610d1e575b50506105ed92916105de910385610f85565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410610d6157505050820101816105de610d0c565b8054848a018601528895508794909301928101610d4b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506105de9050610d0c565b83346101dc5760206003193601126101dc5735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101dc577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101dc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101dc57565b60031960609101126101dc5773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101dc579160243590811681036101dc579060443590565b90600182811c92168015610f32575b6020831014610f0557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610efa565b6040810190811067ffffffffffffffff821117610f5857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f5857604052565b908160209103126101dc575180151581036101dc5790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361101d57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480611158575b156110b1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610f585760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611088565b60ff81146111d55760ff811690601f82116111ad57604051916111a383610f3c565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f54916111e783610eeb565b808352926020906001908181169081156112735750600114611215575b505061121292500382610f85565b90565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b82841061125b57506112129450505081016020015f80611204565b85548785018301529485019486945092810192611240565b9050602093506112129592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80611204565b60ff81146112d85760ff811690601f82116111ad57604051916111a383610f3c565b506040515f816001916001546112ed81610eeb565b8084529360209160018116908115611273575060011461131557505061121292500382610f85565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b82841061135c57506112129450505081016020015f80611204565b85548785018301529485019486945092810192611341565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611403579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156113f8575f5173ffffffffffffffffffffffffffffffffffffffff8116156113ee57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156114b95780611420575050565b60018103611450577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361148457507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60031461148e5750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220b79c87813485173e249eb491f2f5d5c7c4e306fad62611d4ff7318cb75939d1b64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1FFC9A7 EQ PUSH2 0xDB9 JUMPI POP DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCC9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xC4C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xBBA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xB11 JUMPI DUP1 PUSH4 0x23DE6651 EQ PUSH2 0xADF JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0xAA5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xA8A JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0xA67 JUMPI DUP1 PUSH4 0x5687F2B8 EQ PUSH2 0xA08 JUMPI DUP1 PUSH4 0x627CDCB9 EQ PUSH2 0x9DF JUMPI DUP1 PUSH4 0x679AEFCE EQ PUSH2 0x94D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x879 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x835 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x6E2 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x588 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x493 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x1F1 JUMPI PUSH4 0xDD62ED3E EQ PUSH2 0xFB JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1DC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH2 0x115 PUSH2 0xE63 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x11F PUSH2 0xE86 JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI PUSH0 SWAP2 PUSH2 0x1AF JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1E0 JUMPI JUMPDEST DUP2 PUSH2 0x1CA PUSH1 0x20 SWAP4 DUP4 PUSH2 0xF85 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x1A5 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1BD JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0xE0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH2 0x20B PUSH2 0xE63 JUMP JUMPDEST SWAP1 PUSH2 0x214 PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1DC JUMPI DUP3 TIMESTAMP GT PUSH2 0x468 JUMPI PUSH2 0x261 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP6 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 DUP7 AND SWAP5 DUP6 DUP11 DUP5 ADD MSTORE DUP8 DUP10 AND PUSH1 0x60 DUP5 ADD MSTORE DUP11 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH1 0xE0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x43C JUMPI SWAP3 PUSH2 0x340 SWAP3 PUSH2 0x337 SWAP3 DUP9 SWAP6 DUP12 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0x2F6 PUSH2 0x1049 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x1374 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x140E JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x40F JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x3B1 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI POP PUSH2 0x3E5 JUMPI STOP JUMPDEST PUSH2 0x406 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x408 JUMPI JUMPDEST PUSH2 0x3FE DUP2 DUP4 PUSH2 0xF85 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xFC6 JUMP JUMPDEST STOP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F4 JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x41 DUP12 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 DUP8 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH2 0x510 SWAP3 PUSH2 0x4B2 PUSH2 0xE63 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x57E JUMPI PUSH1 0x20 SWAP3 PUSH2 0x563 JUMPI JUMPDEST POP MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x579 SWAP1 DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x408 JUMPI PUSH2 0x3FE DUP2 DUP4 PUSH2 0xF85 JUMP JUMPDEST PUSH2 0x55B JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0x5AA DUP2 PUSH2 0xEEB JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x64D JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x5F1 JUMPI JUMPDEST POP POP POP PUSH2 0x5ED SWAP3 SWAP2 PUSH2 0x5DE SWAP2 SUB DUP6 PUSH2 0xF85 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xE20 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x635 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x5DE PUSH2 0x5ED PUSH2 0x5CB JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x61C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x5DE SWAP2 POP PUSH2 0x5ED SWAP1 POP PUSH2 0x5CB JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH2 0x71D PUSH32 0x0 PUSH2 0x1181 JUMP JUMPDEST SWAP2 PUSH2 0x747 PUSH32 0x0 PUSH2 0x12B6 JUMP JUMPDEST DUP2 MLOAD SWAP2 PUSH1 0x20 SWAP2 PUSH1 0x20 DUP5 ADD SWAP5 DUP5 DUP7 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP8 GT OR PUSH2 0x809 JUMPI POP PUSH2 0x7BE DUP3 PUSH1 0x20 SWAP3 DUP8 PUSH2 0x7B1 SWAP10 SWAP9 SWAP8 SWAP6 MSTORE PUSH0 DUP6 MSTORE DUP2 MLOAD SWAP9 DUP10 SWAP9 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP11 MSTORE PUSH1 0xE0 DUP7 DUP12 ADD MSTORE PUSH1 0xE0 DUP11 ADD SWAP1 PUSH2 0xE20 JUMP JUMPDEST SWAP2 DUP9 DUP4 SUB SWAP1 DUP10 ADD MSTORE PUSH2 0xE20 JUMP JUMPDEST SWAP2 CHAINID PUSH1 0x60 DUP8 ADD MSTORE ADDRESS PUSH1 0x80 DUP8 ADD MSTORE PUSH0 PUSH1 0xA0 DUP8 ADD MSTORE DUP6 DUP4 SUB PUSH1 0xC0 DUP8 ADD MSTORE MLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP3 SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x7F2 JUMPI POP POP POP POP SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD DUP6 MSTORE DUP7 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x7E3 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x867 PUSH2 0xE63 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP3 PUSH2 0x897 PUSH2 0xE63 JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x57E JUMPI PUSH0 SWAP3 PUSH2 0x91E JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x946 JUMPI JUMPDEST PUSH2 0x936 DUP2 DUP4 PUSH2 0xF85 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1DC JUMPI MLOAD SWAP1 PUSH0 PUSH2 0x917 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x92C JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP1 MLOAD SWAP2 PUSH32 0x4F037EE700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI PUSH0 SWAP2 PUSH2 0x1AF JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0xA3A CALLDATASIZE PUSH2 0xEA9 JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0xA45 PUSH2 0xFDE JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 PUSH2 0xA83 PUSH2 0x1049 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0xA3A CALLDATASIZE PUSH2 0xEA9 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0xB25 CALLDATASIZE PUSH2 0xEA9 JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x57E JUMPI PUSH1 0x20 SWAP3 PUSH2 0x563 JUMPI POP MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP1 MLOAD SWAP2 PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1E8 JUMPI PUSH0 SWAP2 PUSH2 0x1AF JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH2 0x510 SWAP3 PUSH2 0xC6B PUSH2 0xE63 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1DC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0xCEC DUP5 PUSH2 0xEEB JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xD79 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xD1E JUMPI JUMPDEST POP POP PUSH2 0x5ED SWAP3 SWAP2 PUSH2 0x5DE SWAP2 SUB DUP6 PUSH2 0xF85 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0xD61 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x5DE PUSH2 0xD0C JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xD4B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x5DE SWAP1 POP PUSH2 0xD0C JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1DC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1DC JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1DC JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DC JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1DC JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1DC JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1DC JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1DC JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0xF32 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0xF05 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0xEFA JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF58 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF58 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x1DC JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x1DC JUMPI SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x101D JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x1158 JUMPI JUMPDEST ISZERO PUSH2 0x10B1 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF58 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x1088 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x11D5 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x11AD JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x11A3 DUP4 PUSH2 0xF3C JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x11E7 DUP4 PUSH2 0xEEB JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1273 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1215 JUMPI JUMPDEST POP POP PUSH2 0x1212 SWAP3 POP SUB DUP3 PUSH2 0xF85 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x125B JUMPI POP PUSH2 0x1212 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x1204 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x1240 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x1212 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x1204 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x12D8 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x11AD JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x11A3 DUP4 PUSH2 0xF3C JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x12ED DUP2 PUSH2 0xEEB JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1273 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1315 JUMPI POP POP PUSH2 0x1212 SWAP3 POP SUB DUP3 PUSH2 0xF85 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x135C JUMPI POP PUSH2 0x1212 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x1204 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x1341 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x1403 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x13F8 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x13EE JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x14B9 JUMPI DUP1 PUSH2 0x1420 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x1450 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x1484 JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x148E JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 SWAP13 DUP8 DUP2 CALLVALUE DUP6 OR RETURNDATACOPY 0x24 SWAP15 0xB4 SWAP2 CALLCODE CREATE2 0xD5 0xC7 0xC4 0xE3 MOD STATICCALL 0xD6 0x26 GT 0xD4 SELFDESTRUCT PUSH20 0x18CB75939D1B64736F6C634300081A0033000000 ","sourceMap":"1269:5749:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2839:33;1269:5749;2839:33;;;4124:49;1269:5749;4124:49;;;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6973:36;1269:5749;6973:36;;;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;3545:47;;;;;1269:5749;3545:47;;3570:4;3545:47;;;1269:5749;;;;;;;;;;;3545:6;1269:5749;3545:47;;;;;;;1269:5749;3545:47;;;1269:5749;;;;;;;;;3545:47;;;1269:5749;3545:47;;1269:5749;3545:47;;;;;;1269:5749;3545:47;;;:::i;:::-;;;1269:5749;;;;;;;3545:47;;;1269:5749;;;;3545:47;;;-1:-1:-1;3545:47:54;;;1269:5749;;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;5510:15;;:26;5506:97;;5696:16;;1269:5749;;-1:-1:-1;1269:5749:54;1121:7:101;1269:5749:54;;;-1:-1:-1;1269:5749:54;;;;;;;;;759:395:101;;5696:16:54;1269:5749;;;;5644:79;;1269:5749;1443:95;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5644:79;;1269:5749;;;;;;;;;;;;;7021:8:105;1269:5749:54;6967:25:105;1269:5749:54;;;;;;5634:90;;5053:20:106;;:::i;:::-;3515:233:107;;;;;;;;;;;;;;;1269:5749:54;;;3515:233:107;1269:5749:54;;3515:233:107;;6967:25:105;:::i;:::-;7021:8;;;;;:::i;:::-;1269:5749:54;5848:15;;;5844:88;;1269:5749;;;;;;5942:38;1269:5749;;;5942:38;;;;;;;1269:5749;5942:38;;;;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;5942:38;;:6;;1269:5749;5942:38;;;;;;;;;;1269:5749;5942:38;;;1269:5749;5942:38;1269:5749;5942:38;;;;;;;;:::i;:::-;;;;;:::i;:::-;1269:5749;5942:38;;;;;5844:88;5886:35;;1269:5749;5886:35;1269:5749;;;;;5886:35;1269:5749;;;;;;;;;;5506:97;5559:33;;;1269:5749;5559:33;1269:5749;;;5559:33;1269:5749;;;;;;-1:-1:-1;;1269:5749:54;;;;;;3345:39;1269:5749;;;:::i;:::-;;;;3345:39;;3361:10;3345:39;;;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:39;;:6;1269:5749;;3345:6;1269:5749;3345:39;;;;;;;1269:5749;3345:39;;;1269:5749;;;;;;;3345:39;;;;;;;;;;;;;:::i;:::-;;;;1269:5749;;;;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;-1:-1:-1;;;1269:5749:54;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;;2951:6;1269:5749;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;6099:41:106;:5;:41;:::i;:::-;6554:8;:47;:8;:47;:::i;:::-;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:106;;1269:5749:54;;;;5625:4:106;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;6584:16:106;1269:5749:54;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;;;:::i;:::-;;;;624:7:101;1269:5749:54;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;:::i;:::-;;;;;;;3082:40;;;;;1269:5749;3082:40;;3107:4;3082:40;;;1269:5749;;;;;;3082:6;1269:5749;3082:40;;;;;;;1269:5749;3082:40;;;1269:5749;;;;;;;3082:40;;;;;;;;;;;;;;;;;:::i;:::-;;;1269:5749;;;;;3082:40;;;;;;;;;1269:5749;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;6973:36;1269:5749;6973:36;;7003:4;6973:36;;;1269:5749;6973:36;2951:6;1269:5749;2951:6;1269:5749;2951:6;1269:5749;6973:36;;;;;;;1269:5749;6973:36;;;;1269:5749;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;6339:10;-1:-1:-1;1269:5749:54;;;1121:7:101;1269:5749:54;;;;;;;;;;;;;;;;;;;;5175:32;1269:5749;;;:::i;:::-;436:67:68;;;;;:::i;:::-;1269:5749:54;;;;;;;;;;;5175:32;1269:5749;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;6533:20;;;:::i;:::-;1269:5749;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;2727:2;1269:5749;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;1443:95;1269:5749;;;;;;;;;4942:26;1269:5749;;;:::i;:::-;;;;;4124:49;1269:5749;;;;;:::i;:::-;;;;4124:49;;4144:10;4124:49;;;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:6;1269:5749;4124:49;;;;;;;;;;;1269:5749;;4190:4;1269:5749;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;2839:33;1269:5749;2839:33;;2866:4;2839:33;;;1269:5749;2839:33;:6;1269:5749;2839:6;1269:5749;2839:6;1269:5749;2839:33;;;;;;;1269:5749;2839:33;;;;1269:5749;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;3819:43;1269:5749;;;:::i;:::-;;;;3819:43;;3834:10;3819:43;;;1269:5749;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;2434:8;1269:5749;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2434:8;1269:5749;;;;;;;;;;;;-1:-1:-1;;;1269:5749:54;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;-1:-1:-1;1269:5749:54;;;;;;;;-1:-1:-1;;1269:5749:54;;;;;;;;;;;;;;;876:25:108;1269:5749:54;861:40:108;;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;-1:-1:-1;;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;509:165:68:-;1269:5749:54;586:6:68;1269:5749:54;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;1269:5749:54;;616:41:68;;3845:262:106;1269:5749:54;3938:11:106;1269:5749:54;3929:4:106;3921:28;:63;;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;1269:5749:54;;4204:80:106;;;1269:5749:54;2079:95:106;1269:5749:54;;4226:11:106;1269:5749:54;2079:95:106;;1269:5749:54;4239:14:106;2079:95;;;1269:5749:54;4255:13:106;2079:95;;;1269:5749:54;3929:4:106;2079:95;;;1269:5749:54;2079:95:106;4204:80;;2079:95;1269:5749:54;;;;;;;;;;;;;;4194:91:106;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;3385:267:102;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;1269:5749:54;;;;;;:::i;:::-;2367:90:102;;2311:2;1269:5749:54;;2367:90:102;3570:22;:::o;2702:69::-;2740:20;1269:5749:54;2740:20:102;;1269:5749:54;2740:20:102;3504:142;1269:5749:54;;;-1:-1:-1;1269:5749:54;-1:-1:-1;1269:5749:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;;;;;;;;:::i;:::-;3623:12;:::o;1269:5749:54:-;;;;-1:-1:-1;1269:5749:54;;;;-1:-1:-1;1269:5749:54;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;;;;;;;1390:66:102;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;3385:267:102;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;1269:5749:54;;;;;;:::i;3504:142:102:-;1269:5749:54;;;-1:-1:-1;6584:16:106;;1269:5749:54;6584:16:106;1269:5749:54;;;;:::i;:::-;;;;;;;6584:16:106;1269:5749:54;;;6584:16:106;;;;1269:5749:54;;;;;1390:66:102;;;;;;;;:::i;1269:5749:54:-;;;;6584:16:106;-1:-1:-1;1269:5749:54;;;-1:-1:-1;1269:5749:54;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1269:5749:54;;;;;;5140:1530:105;;;6199:66;6186:79;;6182:164;;1269:5749:54;;;;;;;;;;;;;;;;;;;;;;;;;;6457:24:105;;;;;;;;;1269:5749:54;6457:24:105;1269:5749:54;;;6495:20:105;6491:113;;6614:49;1269:5749:54;6614:49:105;1269:5749:54;5140:1530:105;:::o;6491:113::-;6531:62;1269:5749:54;6531:62:105;6457:24;6531:62;1269:5749:54;6531:62:105;:::o;6457:24::-;1269:5749:54;;;;;;;;;6182:164:105;6281:54;;;1269:5749:54;6281:54:105;6301:30;6281:54;;:::o;7196:532::-;1269:5749:54;;;;;;7282:29:105;;;7327:7;;:::o;7278:444::-;1269:5749:54;7378:38:105;;1269:5749:54;;7439:23:105;-1:-1:-1;7439:23:105;1269:5749:54;-1:-1:-1;7439:23:105;7374:348;7492:35;7483:44;;7492:35;;7550:46;;-1:-1:-1;7550:46:105;1269:5749:54;;;-1:-1:-1;7550:46:105;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;-1:-1:-1;7679:32:105;1269:5749:54;;;-1:-1:-1;7679:32:105;1269:5749:54;;7291:20:105;1269:5749:54;;;;;7291:20:105;1269:5749:54"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","emitApproval(address,address,uint256)":"5687f2b8","emitTransfer(address,address,uint256)":"23de6651","getRate()":"679aefce","getVault()":"8d928af8","incrementNonce()":"627cdcb9","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"bptName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"bptSymbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"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\":[],\"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\":[],\"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\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[{\"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\":\"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\"}],\"devdoc\":{\"details\":\"Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC2612ExpiredSignature(uint256)\":[{\"params\":{\"deadline\":\"The permit deadline that expired\"}}],\"ERC2612InvalidSigner(address,address)\":[{\"params\":{\"owner\":\"The address of the owner (expected value of the signature provider)\",\"signer\":\"The address corresponding to the signature provider\"}}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"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.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"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.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"emitApproval(address,address,uint256)\":{\"details\":\"Emit the Approval event. This function can only be called by the MultiToken.\"},\"emitTransfer(address,address,uint256)\":{\"details\":\"Emit the Transfer event. This function can only be called by the MultiToken.\"},\"getRate()\":{\"details\":\"The VaultExtension contract defines a default implementation (`getBptRate`) to calculate the rate of any given pool, which should be sufficient in nearly all cases.\",\"returns\":{\"_0\":\"rate Rate of the pool's BPT\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"errors\":{\"ERC2612ExpiredSignature(uint256)\":[{\"notice\":\"Operation failed due to an expired permit signature.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"notice\":\"Operation failed due to a non-matching signature.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}]},\"kind\":\"user\",\"methods\":{\"getRate()\":{\"notice\":\"Get the BPT rate, which is defined as: pool invariant/total supply.\"},\"incrementNonce()\":{\"notice\":\"Increment the sender's nonce to revoke any currently granted (but not yet executed) `permit`.\"}},\"notice\":\"`BalancerPoolToken` is a fully ERC20-compatible token to be used as the base contract for Balancer Pools, with all the data and implementation delegated to the ERC20Multitoken contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":\"BalancerPoolToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/BaseHooks.sol":{"BaseHooks":{"abi":[{"inputs":[],"name":"getHookFlags","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"}],"internalType":"struct HookFlags","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum AddLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsInRaw","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onAfterAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onAfterInitialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum RemoveLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onAfterRemoveLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountInScaled18","type":"uint256"},{"internalType":"uint256","name":"amountOutScaled18","type":"uint256"},{"internalType":"uint256","name":"tokenInBalanceScaled18","type":"uint256"},{"internalType":"uint256","name":"tokenOutBalanceScaled18","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AfterSwapParams","name":"","type":"tuple"}],"name":"onAfterSwap","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum AddLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onBeforeAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onBeforeInitialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum RemoveLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onBeforeRemoveLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"","type":"tuple"},{"internalType":"address","name":"","type":"address"}],"name":"onBeforeSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"","type":"tuple"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"onComputeDynamicSwapFeePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"","type":"tuple[]"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"","type":"tuple"}],"name":"onRegister","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getHookFlags()":"d77153a7","onAfterAddLiquidity(address,address,uint8,uint256[],uint256[],uint256,uint256[],bytes)":"976907cc","onAfterInitialize(uint256[],uint256,bytes)":"38be241d","onAfterRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],uint256[],bytes)":"2754888d","onAfterSwap((uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,bytes))":"18b6eb55","onBeforeAddLiquidity(address,address,uint8,uint256[],uint256,uint256[],bytes)":"45421ec7","onBeforeInitialize(uint256[],bytes)":"1c149e28","onBeforeRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],bytes)":"ba5f9f40","onBeforeSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes),address)":"5211fa77","onComputeDynamicSwapFeePercentage((uint8,uint256,uint256[],uint256,uint256,address,bytes),address,uint256)":"a0e8f5ac","onRegister(address,address,(address,uint8,address,bool)[],(bool,bool,bool,bool))":"0b89f182"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getHookFlags\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"}],\"internalType\":\"struct HookFlags\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onAfterAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onAfterInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onAfterRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenInBalanceScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenOutBalanceScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AfterSwapParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"onAfterSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onBeforeAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onBeforeInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onBeforeRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"onBeforeSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onComputeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"onRegister\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Hook contracts that only implement a subset of callbacks can inherit from here instead of IHooks, and only override what they need. `VaultGuard` allows use of the `onlyVault` modifier, which isn't used in this abstract contract, but should be used in real derived hook contracts.\",\"kind\":\"dev\",\"methods\":{\"getHookFlags()\":{\"details\":\"The Vault will only call hooks the pool says it supports, and of course only if a hooks contract is defined (i.e., the `poolHooksContract` in `PoolRegistrationParams` is non-zero). `onRegister` is the only \\\"mandatory\\\" hook.\",\"returns\":{\"_0\":\"Flags indicating which hooks the contract supports\"}},\"onAfterAddLiquidity(address,address,uint8,uint256[],uint256[],uint256,uint256[],bytes)\":{\"details\":\"Called if the `shouldCallAfterAddLiquidity` flag is set in the configuration. The Vault will ignore `hookAdjustedAmountsInRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"amountsInRaw\":\"Actual amounts of tokens added, sorted in token registration order\",\"amountsInScaled18\":\"Actual amounts of tokens added, sorted in token registration order\",\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"bptAmountOut\":\"Amount of pool tokens minted\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated an add liquidity operation on the Vault\",\"userData\":\"Additional (optional) data provided by the user\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with settlement\",\"_1\":\"New amountsInRaw, potentially modified by the hook\"}},\"onAfterInitialize(uint256[],uint256,bytes)\":{\"details\":\"Called if the `shouldCallAfterInitialize` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"bptAmountOut\":\"Amount of pool tokens minted during initialization\",\"exactAmountsIn\":\"Exact amounts of input tokens\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"_0\":\"True if the pool accepts the initialization results\"}},\"onAfterRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],uint256[],bytes)\":{\"details\":\"Called if the `shouldCallAfterRemoveLiquidity` flag is set in the configuration. The Vault will ignore `hookAdjustedAmountsOutRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"amountsOutRaw\":\"Actual amount of tokens to receive, sorted in token registration order\",\"amountsOutScaled18\":\"Scaled amount of tokens to receive, sorted in token registration order\",\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"bptAmountIn\":\"Amount of pool tokens to burn\",\"kind\":\"The type of remove liquidity operation (e.g., proportional, custom)\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated a remove liquidity operation on the Vault\",\"userData\":\"Additional (optional) data provided by the user\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with settlement\",\"_1\":\"New amountsOutRaw, potentially modified by the hook\"}},\"onAfterSwap((uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,bytes))\":{\"details\":\"Called if the `shouldCallAfterSwap` flag is set in the configuration. The Vault will ignore `hookAdjustedAmountCalculatedRaw` unless `enableHookAdjustedAmounts` is true. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"params\":\"Swap parameters (see above for struct definition)\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with settlement\",\"_1\":\"New amount calculated, potentially modified by the hook\"}},\"onBeforeAddLiquidity(address,address,uint8,uint256[],uint256,uint256[],bytes)\":{\"details\":\"Called if the `shouldCallBeforeAddLiquidity` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"maxAmountsInScaled18\":\"Maximum amounts of input tokens\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated an add liquidity operation on the Vault\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with settlement\"}},\"onBeforeInitialize(uint256[],bytes)\":{\"details\":\"Called if the `shouldCallBeforeInitialize` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with initialization\"}},\"onBeforeRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],bytes)\":{\"details\":\"Called if the `shouldCallBeforeRemoveLiquidity` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"balancesScaled18\":\"Current pool balances, sorted in token registration order\",\"kind\":\"The type of remove liquidity operation (e.g., proportional, custom)\",\"maxBptAmountIn\":\"Maximum amount of input pool tokens\",\"minAmountsOutScaled18\":\"Minimum output amounts, sorted in token registration order\",\"pool\":\"Pool address, used to fetch pool information from the Vault (pool config, tokens, etc.)\",\"router\":\"The address (usually a router contract) that initiated a remove liquidity operation on the Vault\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with settlement\"}},\"onBeforeSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes),address)\":{\"details\":\"Called if the `shouldCallBeforeSwap` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"params\":\"Swap parameters (see PoolSwapParams for struct definition)\",\"pool\":\"Pool address, used to get pool information from the Vault (poolData, token config, etc.)\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with settlement\"}},\"onComputeDynamicSwapFeePercentage((uint8,uint256,uint256[],uint256,uint256,address,bytes),address,uint256)\":{\"details\":\"Called if the `shouldCallComputeDynamicSwapFee` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"params\":\"Swap parameters (see PoolSwapParams for struct definition)\",\"pool\":\"Pool address, used to get pool information from the Vault (poolData, token config, etc.)\",\"staticSwapFeePercentage\":\"18-decimal FP value of the static swap fee percentage, for reference\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with settlement\",\"_1\":\"Value of the swap fee percentage, as an 18-decimal FP value\"}},\"onRegister(address,address,(address,uint8,address,bool)[],(bool,bool,bool,bool))\":{\"details\":\"Returns true if registration was successful, and false to revert the pool registration. Make sure this function is properly implemented (e.g. check the factory, and check that the given pool is from the factory). The Vault address will be msg.sender.\",\"params\":{\"factory\":\"Address of the pool factory (contract deploying the pool)\",\"liquidityManagement\":\"Liquidity management flags indicating which functions are enabled\",\"pool\":\"Address of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"},\"returns\":{\"_0\":\"True if the hook allowed the registration, false otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getHookFlags()\":{\"notice\":\"Return the set of hooks implemented by the contract.\"},\"onAfterAddLiquidity(address,address,uint8,uint256[],uint256[],uint256,uint256[],bytes)\":{\"notice\":\"Hook to be executed after adding liquidity.\"},\"onAfterInitialize(uint256[],uint256,bytes)\":{\"notice\":\"Hook to be executed after pool initialization.\"},\"onAfterRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],uint256[],bytes)\":{\"notice\":\"Hook to be executed after removing liquidity.\"},\"onAfterSwap((uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,bytes))\":{\"notice\":\"Called after a swap to perform further actions once the balances have been updated by the swap.\"},\"onBeforeAddLiquidity(address,address,uint8,uint256[],uint256,uint256[],bytes)\":{\"notice\":\"Hook to be executed before adding liquidity.\"},\"onBeforeInitialize(uint256[],bytes)\":{\"notice\":\"Hook executed before pool initialization.\"},\"onBeforeRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],bytes)\":{\"notice\":\"Hook to be executed before removing liquidity.\"},\"onBeforeSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes),address)\":{\"notice\":\"Called before a swap to give the Pool an opportunity to perform actions.\"},\"onComputeDynamicSwapFeePercentage((uint8,uint256,uint256[],uint256,uint256,address,bytes),address,uint256)\":{\"notice\":\"Called after `onBeforeSwap` and before the main swap operation, if the pool has dynamic fees.\"},\"onRegister(address,address,(address,uint8,address,bool)[],(bool,bool,bool,bool))\":{\"notice\":\"Hook executed when a pool is registered with a non-zero hooks contract.\"}},\"notice\":\"Base for pool hooks contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/BaseHooks.sol\":\"BaseHooks\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-vault/contracts/BaseHooks.sol\":{\"keccak256\":\"0xe987f0806641ac62fc66a6f3b0c6b58a44832c01a1c95f349eb880b00529756a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f8fc15c0fc44dd7032aa5ece3f281d1d83076719ef9b6f6442be79a62e2c1848\",\"dweb:/ipfs/QmVAZSVhzg6fb3ChkCeAPtLLwqnwmxdkxrenvJaf83trNC\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/BasePoolMath.sol":{"BasePoolMath":{"abi":[{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"maxInvariantRatio","type":"uint256"}],"name":"InvariantRatioAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"minInvariantRatio","type":"uint256"}],"name":"InvariantRatioBelowMin","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122038495fd9ec4db7d4772c1af7c3b5dc068f5dcc25a5ce3f723a4351900927d00264736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE BLOBHASH PUSH0 0xD9 0xEC 0x4D 0xB7 0xD4 PUSH24 0x2C1AF7C3B5DC068F5DCC25A5CE3F723A4351900927D00264 PUSH20 0x6F6C634300081A00330000000000000000000000 ","sourceMap":"343:24265:56:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122038495fd9ec4db7d4772c1af7c3b5dc068f5dcc25a5ce3f723a4351900927d00264736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODESIZE BLOBHASH PUSH0 0xD9 0xEC 0x4D 0xB7 0xD4 PUSH24 0x2C1AF7C3B5DC068F5DCC25A5CE3F723A4351900927D00264 PUSH20 0x6F6C634300081A00330000000000000000000000 ","sourceMap":"343:24265:56:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioBelowMin\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"InvariantRatioAboveMax(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"maxInvariantRatio\":\"The maximum allowed invariant ratio\"}}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"minInvariantRatio\":\"The minimum allowed invariant ratio\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"InvariantRatioAboveMax(uint256,uint256)\":[{\"notice\":\"An add liquidity operation increased the invariant above the limit.\"}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"notice\":\"A remove liquidity operation decreased the invariant below the limit.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":\"BasePoolMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":{\"keccak256\":\"0x28078c6fa4d55418c25505d4683642cb51fe55b2155ef7418db6c70631a30d6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://864b91fdc2b69725bcc07f06d9adebe87117561582fa58f1e4410d8928cd205c\",\"dweb:/ipfs/QmWCDsbTxtmEMLhorqfGF1LDMHMqqVnV9sk9mUTPR7eog8\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/BatchRouter.sol":{"BatchRouter":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IWETH","name":"weth","type":"address"},{"internalType":"contract IPermit2","name":"permit2","type":"address"},{"internalType":"string","name":"routerVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[],"name":"TransientIndexOutOfBounds","type":"error"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactInHookParams","name":"params","type":"tuple"}],"name":"querySwapExactInHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactOutHookParams","name":"params","type":"tuple"}],"name":"querySwapExactOutHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactInHookParams","name":"params","type":"tuple"}],"name":"swapExactInHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactOutHookParams","name":"params","type":"tuple"}],"name":"swapExactOutHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"copy_literal_to_memory_ac010f60bd23a8b676a307440640b6fd2c7208b304d0b7c6e71f1b0f3dbf3924":{"entryPoint":1547,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":1512,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_5605":{"entryPoint":1485,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateBatchRouterStorageSlot":{"entryPoint":1587,"id":13691,"parameterSlots":1,"returnSlots":1},"fun_calculateSlot":{"entryPoint":1641,"id":6537,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6101c0604090808252346105c957614bbd803803809161001f82856105e8565b83398101916080828403126105c95781516001600160a01b03939084811681036105c957602093848101519286841684036105c9578482015196871687036105c95760608201516001600160401b03928382116105c9570192601f908282860112156105c95784518481116105b557601f19958851946100a58b898786011601876105e8565b8286528a83830101116105c957815f928b8093018388015e8501015260805281519283116105b5575f54916001928381811c911680156105ab575b8982101461059757828111610554575b50879184116001146104f757839450908392915f946104ec575b50501b915f199060031b1c1916175f555b61014961012661060b565b835190610132826105cd565b600682526539b2b73232b960d11b86830152610669565b60a05261018561015761060b565b835190610163826105cd565b60118252701a5cd4995d1d5c9b915d1a131bd8dad959607a1b86830152610669565b60c05260e0526101009283526101cd815161019f816105cd565b601381527f63757272656e7453776170546f6b656e73496e0000000000000000000000000084820152610633565b9161012092835261021082516101e2816105cd565b601481527f63757272656e7453776170546f6b656e734f757400000000000000000000000083820152610633565b6101409081526102528351610224816105cd565b601981527f63757272656e7453776170546f6b656e496e416d6f756e74730000000000000084820152610633565b906101609182526102d8610298855161026a816105cd565b601a81527f63757272656e7453776170546f6b656e4f7574416d6f756e747300000000000086820152610633565b936101809485527f736574746c6564546f6b656e416d6f756e7473000000000000000000000000008651916102cc836105cd565b60138352820152610633565b936101a094855251946144a1968761071c88396080518781816102460152818161197c01528181611be001528181611e22015281816120790152818161221201528181612323015281816123b10152818161247301528181612aad01528181612c8c01528181612cd401528181612d5201528181612df901528181612f0701528181612f840152818161321901528181613348015281816133e5015281816134ab01528181613b6c01528181613c9101528181613ed0015281816140150152614271015260a0518781816102aa015281816105350152818161181f01526128be015260c0518781816117a901526136ba015260e051878181602201528181613afe01528181613de401528181613f5801526140af0152518681816109f001528181610b0401528181611f6e01528181611ff4015281816130790152613c6d015251858181612569015281816127500152818161295a01526135d8015251848181611c4301528181611e8f01528181612275015281816124d7015281816125ce0152818161272c01528181612b1201526135a8015251838181611d43015281816125950152818161277c0152818161328e01528181613509015261362b015251828181611c6c01528181611ec00152818161250101528181612621015281816127b401528181612b5101526132d001525181818161229f015281816125ff01528181612b8201528181612e5601526136090152f35b015192505f8061010a565b91938316915f805283885f20935f5b8a8883831061053d5750505010610525575b505050811b015f5561011b565b01515f1960f88460031b161c191690555f8080610518565b868601518855909601959485019487935001610506565b5f8052885f208380870160051c8201928b881061058e575b0160051c019084905b8281106105835750506100f0565b5f8155018490610575565b9250819261056c565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e0565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b604081019081106001600160401b038211176105b557604052565b601f909101601f19168101906001600160401b038211908210176105b557604052565b60405190610618826105cd565b600c82526b2937baba32b921b7b6b6b7b760a11b6020830152565b61066690604051610643816105cd565b60118152702130ba31b42937baba32b921b7b6b6b7b760791b6020820152610669565b90565b906106d6603a60209260405193849181808401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952805191829101603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a8101845201826105e8565b5190205f198101908111610707576040519060208201908152602082526106fc826105cd565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c806308a465f614610e9d57806319c6989f1461084e578063286f580d146107b75780632950286e146106cc57806354fd4d501461058f5780635a3c3987146105665780635e01eb5a146105215780638a12a08c146104c65780638eb1b65e146103bf578063945ed33f14610344578063ac9650d8146103005763e3b5dff40361000e57346102fc576060806003193601126102fc5767ffffffffffffffff6004358181116102fc5761012d9036906004016112c4565b6101356111a1565b6044359283116102fc57610150610158933690600401610fcd565b9390916128b9565b905f5b835181101561017c57805f8761017360019488611691565b5101520161015b565b506101f06101fe610239946101b65f94886040519361019a8561111a565b30855260208501525f1960408501528660608501523691611381565b60808201526040519283917f8a12a08c0000000000000000000000000000000000000000000000000000000060208401526024830161143e565b03601f198101835282611152565b604051809481927fedfa3568000000000000000000000000000000000000000000000000000000008352602060048401526024830190610ffb565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156102f1576102a39261028e915f916102cf575b50602080825183010191016115d4565b909391926102a7575b60405193849384610f2f565b0390f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d610297565b6102eb91503d805f833e6102e38183611152565b81019061154d565b8461027e565b6040513d5f823e3d90fd5b5f80fd5b60206003193601126102fc5760043567ffffffffffffffff81116102fc576103386103326102a3923690600401610f9c565b9061179b565b60405191829182611020565b346102fc5761035236610eca565b61035a611945565b610362611972565b6103906102a3610371836128fb565b9193909461038a606061038383611344565b9201611358565b90612729565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384610f2f565b60806003193601126102fc5767ffffffffffffffff6004358181116102fc576103ec9036906004016112c4565b906103f56111b7565b906064359081116102fc576101f061048b6102399461045161041c5f953690600401610fcd565b610425336128b9565b97604051946104338661111a565b33865260208601526024356040860152151560608501523691611381565b60808201526040519283917f945ed33f000000000000000000000000000000000000000000000000000000006020840152602483016116d2565b604051809481927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610ffb565b346102fc576102a36104ef6104da36610eca565b6104e2611945565b6104ea611972565b611a3b565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009492945d60405193849384610f2f565b346102fc575f6003193601126102fc5760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b346102fc576102a36104ef61057a36610eca565b610582611945565b61058a611972565b6128fb565b346102fc575f6003193601126102fc576040515f80549060018260011c91600184169182156106c2575b60209485851084146106955785879486865291825f146106575750506001146105fe575b506105ea92500383611152565b6102a3604051928284938452830190610ffb565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061063f5750506105ea9350820101856105dd565b80548389018501528794508693909201918101610628565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858201526105ea95151560051b85010192508791506105dd9050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f16926105b9565b346102fc5760606003193601126102fc5767ffffffffffffffff6004358181116102fc576106fe9036906004016112c4565b906107076111a1565b6044359182116102fc5761072261072a923690600401610fcd565b9290916128b9565b905f5b845181101561075f57806fffffffffffffffffffffffffffffffff604061075660019489611691565b5101520161072d565b506101f06101fe8561077d5f94610239976040519361019a8561111a565b60808201526040519283917f5a3c3987000000000000000000000000000000000000000000000000000000006020840152602483016116d2565b60806003193601126102fc5767ffffffffffffffff6004358181116102fc576107e49036906004016112c4565b906107ed6111b7565b906064359081116102fc576101f061048b6102399461081461041c5f953690600401610fcd565b60808201526040519283917f08a465f60000000000000000000000000000000000000000000000000000000060208401526024830161143e565b60a06003193601126102fc5767ffffffffffffffff600435116102fc573660236004350112156102fc5767ffffffffffffffff60043560040135116102fc5736602460c060043560040135026004350101116102fc5760243567ffffffffffffffff81116102fc576108c4903690600401610f9c565b67ffffffffffffffff604435116102fc576060600319604435360301126102fc5760643567ffffffffffffffff81116102fc57610905903690600401610fcd565b60843567ffffffffffffffff81116102fc57610925903690600401610f9c565b949093610930611945565b806004356004013503610e75575f5b600435600401358110610bd25750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd6044353603018212156102fc57816044350160048101359067ffffffffffffffff82116102fc5760248260071b36039101136102fc576109e3575b6102a361033886865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d61179b565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b156102fc57604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff6004830135116102fc57600482013560071b360385136102fc5760606064890152600482013590529192869260e484019291905f905b60048101358210610b5457505050602091601f19601f865f9787956001600160a01b03610ac860246044350161118d565b16608488015260448035013560a48801526003198787030160448801528186528786013787868286010152011601030181836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156102f1576102a39361033893610b45575b8294508193506109b3565b610b4e90611106565b84610b3a565b9195945091926001600160a01b03610b6b8761118d565b168152602080870135916001600160a01b0383168093036102fc57600492600192820152610b9b604089016128a6565b65ffffffffffff8091166040830152610bb660608a016128a6565b1660608201526080809101970193019050889495939291610a97565b610be7610be082848661192a565b3691611381565b604051610bf3816110a1565b5f81526020915f838301525f60408301528281015190606060408201519101515f1a91835283830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc81850260043501360301126102fc5760405190610c60826110ea565b610c73602460c08602600435010161118d565b808352610c89604460c08702600435010161118d565b908185850152610ca2606460c08802600435010161118d565b60408581019190915260043560c08802016084810135606087015260a4810135608087015260c4013560a086015283015183519386015160ff91909116926001600160a01b0383163b156102fc575f6001600160a01b03809460e4948b98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af19081610e66575b50610e5c57610d7f612877565b906001600160a01b0381511690836001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa9182156102f1575f92610e2c575b506060015103610df75750506001905b0161093f565b805115610e045780519101fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091508381813d8311610e55575b610e448183611152565b810103126102fc5751906060610de1565b503d610e3a565b5050600190610df1565b610e6f90611106565b8a610d72565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102fc57610eab36610eca565b610eb3611945565b610ebb611972565b6103906102a361037183611a3b565b600319906020828201126102fc576004359167ffffffffffffffff83116102fc578260a0920301126102fc5760040190565b9081518082526020808093019301915f5b828110610f1b575050505090565b835185529381019392810192600101610f0d565b939290610f4490606086526060860190610efc565b936020948181036020830152602080855192838152019401905f5b818110610f7f57505050610f7c9394506040818403910152610efc565b90565b82516001600160a01b031686529487019491870191600101610f5f565b9181601f840112156102fc5782359167ffffffffffffffff83116102fc576020808501948460051b0101116102fc57565b9181601f840112156102fc5782359167ffffffffffffffff83116102fc57602083818601950101116102fc57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106110555750505050505090565b9091929394958480611091837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a51610ffb565b9801930193019194939290611045565b6060810190811067ffffffffffffffff8211176110bd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60c0810190811067ffffffffffffffff8211176110bd57604052565b67ffffffffffffffff81116110bd57604052565b60a0810190811067ffffffffffffffff8211176110bd57604052565b60e0810190811067ffffffffffffffff8211176110bd57604052565b90601f601f19910116810190811067ffffffffffffffff8211176110bd57604052565b67ffffffffffffffff81116110bd5760051b60200190565b35906001600160a01b03821682036102fc57565b602435906001600160a01b03821682036102fc57565b6044359081151582036102fc57565b9190916080818403126102fc57604090815191608083019467ffffffffffffffff95848110878211176110bd57825283956112008461118d565b8552602090818501359081116102fc57840182601f820112156102fc5780359061122982611175565b9361123686519586611152565b82855283850190846060809502840101928184116102fc578501915b8383106112745750505050508401528181013590830152606090810135910152565b84838303126102fc57875190611289826110a1565b6112928461118d565b825261129f87850161118d565b87830152888401359081151582036102fc578288928b89950152815201920191611252565b81601f820112156102fc578035916020916112de84611175565b936112ec6040519586611152565b808552838086019160051b830101928084116102fc57848301915b8483106113175750505050505090565b823567ffffffffffffffff81116102fc578691611339848480948901016111c6565b815201920191611307565b356001600160a01b03811681036102fc5790565b3580151581036102fc5790565b67ffffffffffffffff81116110bd57601f01601f191660200190565b92919261138d82611365565b9161139b6040519384611152565b8294818452818301116102fc578281602093845f960137010152565b9060808101916001600160a01b03808251168352602093848301519460808186015285518092528060a086019601925f905b83821061140b5750505050506060816040829301516040850152015191015290565b845180518216895280840151821689850152604090810151151590890152606090970196938201936001909101906113e9565b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b8382106114bd5750505050506080846040610f7c959601516060840152606081015115158284015201519060a0601f1982850301910152610ffb565b909192939583806114f8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a516113b7565b98019201920190939291611481565b81601f820112156102fc5780519061151e82611365565b9261152c6040519485611152565b828452602083830101116102fc57815f9260208093018386015e8301015290565b906020828203126102fc57815167ffffffffffffffff81116102fc57610f7c9201611507565b9080601f830112156102fc5781519060209161158e81611175565b9361159c6040519586611152565b81855260208086019260051b8201019283116102fc57602001905b8282106115c5575050505090565b815181529083019083016115b7565b90916060828403126102fc5781519167ffffffffffffffff928381116102fc5784611600918301611573565b936020808301518581116102fc5783019082601f830112156102fc5781519161162883611175565b926116366040519485611152565b808452828085019160051b830101918583116102fc578301905b82821061167257505050509360408301519081116102fc57610f7c9201611573565b81516001600160a01b03811681036102fc578152908301908301611650565b80518210156116a55760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b8382106117515750505050506080846040610f7c959601516060840152606081015115158284015201519060a0601f1982850301910152610ffb565b9091929395838061178c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a516113b7565b98019201920190939291611715565b91906117a6336128b9565b907f000000000000000000000000000000000000000000000000000000000000000093845c6118b1576001906001865d6117df83611175565b926117ed6040519485611152565b808452601f196117fc82611175565b015f5b8181106118a05750505f5b8181106118575750505050905f61184c92945d7f0000000000000000000000000000000000000000000000000000000000000000805c9161184e575b506136b1565b565b5f905d5f611846565b806118845f8061186c610be08996888a61192a565b602081519101305af461187d612877565b903061415c565b61188e8288611691565b526118998187611691565b500161180a565b8060606020809389010152016117ff565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102fc570180359067ffffffffffffffff82116102fc576020019181360383136102fc57565b908210156116a5576119419160051b8101906118d9565b9091565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6118b1576001905d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036119a457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b906119da82611175565b6119e76040519182611152565b828152601f196119f78294611175565b0190602036910137565b91908201809211611a0e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b604081013542116126c35790611a5e611a5760208401846136f4565b90506119d0565b915f5b611a6e60208301836136f4565b90508110156125c757611a9881611a93611a8b60208601866136f4565b369391613748565b6111c6565b936040850151936001600160a01b038651169060208701518051156116a55760200151604001511515806125be575b1561256357611aec611ad886611344565b8784611ae660608a01611358565b92613add565b5f5b60208801515181101561255357611b03613788565b6020890151515f198101908111611a0e578214806020830152821582525f1461254c576060890151905b611b3b8360208c0151611691565b51604081015190919015611cee57611bd36001600160a01b03835116936001600160a01b03881685145f14611ce7576001945b60405195611b7b8761111a565b5f8752611b87816137be565b6020870152604086015260609485918d838301526080820152604051809381927f43583be500000000000000000000000000000000000000000000000000000000835260048301613a22565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94611cb0575b50506020015115611c9657816001600160a01b036020611c909360019695611c388c8c611691565b5201611c67828251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b5051167f000000000000000000000000000000000000000000000000000000000000000061420a565b01611aee565b602001519097506001600160a01b03169250600190611c90565b60209294509081611cd592903d10611ce0575b611ccd8183611152565b8101906137f5565b91505092905f611c10565b503d611cc3565b5f94611b6e565b888a6001600160a01b038495945116806001600160a01b038a16145f14612132575050815115905061206e57888a80151580612053575b611f4d575b6001600160a01b03939291611ddd82611e15978b5f95897f0000000000000000000000000000000000000000000000000000000000000000921680885282602052604088205c611f3c575b5050505b6001611d9c8983511660208401998b8b51169080158a14611f3657508391614223565b999092511694611db1608091828101906118d9565b93909460405197611dc1896110ea565b8852306020890152604088015260608701528501523691611381565b60a0820152604051809681927f21457897000000000000000000000000000000000000000000000000000000008352600483016139b1565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94611f0c575b506020015115611ee95791611ebc826001600160a01b0360019695611e7a611ee49686611691565b51611e858d8d611691565b52611eb3828251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b50511692611691565b51907f000000000000000000000000000000000000000000000000000000000000000061420a565b611c90565b98506001929450611f02906001600160a01b0392611691565b5197511692611c90565b6020919450611f2c903d805f833e611f248183611152565b810190613969565b5094919050611e52565b91614223565b611f4592614341565b5f8281611d75565b50611f5a90929192611344565b91611f648b6142fd565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156102fc576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039485166004820152306024820152908416604482015292871660648401525f8380608481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f1578a611ddd8d611e15976001600160a01b03975f95612044575b50975092505091929350611d2a565b61204d90611106565b5f612035565b5061205d82611344565b6001600160a01b0316301415611d25565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916001600160a01b0384511692803b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03949094166004850152306024850152604484018c90525f908490606490829084905af180156102f1578a611ddd8d611e15976001600160a01b03975f95612123575b50611d79565b61212c90611106565b5f61211d565b6001600160a01b0360208796949701511690898183145f146123d7576121cd925061220597915060016121735f96956001600160a01b0393848b5116614223565b509282895116956020890151151588146123ae5761219082611344565b945b6121a1608093848101906118d9565b959096604051996121b18b6110ea565b8a52166020890152604088015260608701528501523691611381565b60a0820152604051809581927f4af29ec4000000000000000000000000000000000000000000000000000000008352600483016138f8565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156102f1575f93612384575b5060200151156122c357816001600160a01b036020611ee493600196956122698c8c611691565b526122998383830151167f00000000000000000000000000000000000000000000000000000000000000006141c0565b500151167f000000000000000000000000000000000000000000000000000000000000000061420a565b60208181015191516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101859052939a50909116945081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f157612359575b50600190611c90565b602090813d831161237d575b61236f8183611152565b810103126102fc575f612350565b503d612365565b60209193506123a4903d805f833e61239c8183611152565b81019061387c565b5093919050612242565b837f00000000000000000000000000000000000000000000000000000000000000001694612192565b6001600160a01b036124669561242e9394956123f860809b8c8101906118d9565b9390946040519761240889611136565b5f8952602089015216604087015260609a8b978888015286015260a08501523691611381565b60c0820152604051809381927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613810565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94612525575b50506020015115611c9657816001600160a01b036020611ee493600196956124cb8c8c611691565b526124fb8383830151167f00000000000000000000000000000000000000000000000000000000000000006141c0565b500151167f000000000000000000000000000000000000000000000000000000000000000061420a565b6020929450908161254192903d10611ce057611ccd8183611152565b91505092905f6124a3565b5f90611b2d565b5091955090935050600101611a61565b61258d827f00000000000000000000000000000000000000000000000000000000000000006141c0565b506125b986837f000000000000000000000000000000000000000000000000000000000000000061420a565b611aec565b50321515611ac7565b50506125f27f0000000000000000000000000000000000000000000000000000000000000000613a71565b916125fd83516119d0565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b86518110156126ba576001906001600160a01b0380612663838b611691565b51165f528560205261269160405f205c8261267e858d611691565b51165f528860205260405f205c90611a01565b61269b8387611691565b526126a6828a611691565b51165f52856020525f604081205d01612644565b50949391509150565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f198201918213600116611a0e57565b7f80000000000000000000000000000000000000000000000000000000000000008114611a0e575f190190565b907f000000000000000000000000000000000000000000000000000000000000000090815c7f0000000000000000000000000000000000000000000000000000000000000000612779815c6126eb565b907f0000000000000000000000000000000000000000000000000000000000000000915b5f81121561283a575050506127b1906126eb565b917f0000000000000000000000000000000000000000000000000000000000000000925b5f8112156127ea575050505061184c906136b1565b61283590825f5261282f60205f83828220015c91828252888152886040916128228a8d8587205c906001600160a01b03891690613eb0565b8484525281205d84613e0d565b506126fc565b6127d5565b61287290825f5261282f60205f8a8785848420015c938484528181526128228c6040948587205c906001600160a01b03891690613add565b61279d565b3d156128a1573d9061288882611365565b916128966040519384611152565b82523d5f602084013e565b606090565b359065ffffffffffff821682036102fc57565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c16156128f1575050565b909192505d600190565b90604082013542116126c357612917611a5760208401846136f4565b915f5b61292760208301836136f4565b90508110156135d15761294481611a93611a8b60208601866136f4565b60608101519061297e6001600160a01b038251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b506020810151515f198101908111611a0e575b5f8112156129a45750505060010161291a565b6129b2816020840151611691565b516129bb613788565b9082156020830152602084015151805f19810111611a0e575f1901831480835261358f575b6020820151156135545760408401516001600160a01b03855116915b604081015115612c1d5783916001600160a01b036060926020612aa0970151151580612c14575b612bed575b5116906001600160a01b0385168203612be6576001915b60405192612a4c8461111a565b60018452612a59816137be565b6020840152604083015288838301526080820152604051809581927f43583be500000000000000000000000000000000000000000000000000000000835260048301613a22565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156102f15787918b915f95612bbf575b506020015115612bb057612ba69284612b02612bab979694612b7594611691565b52612b366001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000006141c0565b506001600160a01b03612b4d8460408a01516137b1565b91167f000000000000000000000000000000000000000000000000000000000000000061420a565b6001600160a01b038551167f000000000000000000000000000000000000000000000000000000000000000061420a565b6126fc565b612991565b505050612bab919350926126fc565b6020919550612bdc9060603d606011611ce057611ccd8183611152565b5095919050612ae1565b5f91612a3f565b612c0f612bf98d611344565b8d8b611ae6886040888451169301519301611358565b612a28565b50321515612a23565b906001600160a01b03825116806001600160a01b038516145f14613137575060208401516130495750604051927f967870920000000000000000000000000000000000000000000000000000000084526001600160a01b03831660048501526020846024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9384156102f1575f94613015575b5083916001600160a01b038151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015230602482015260448101959095525f8580606481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156102f157612dec955f92613006575b505b611ddd6001600160a01b03612da88b828551168360208701511690614223565b50925116918c6002612dbf608092838101906118d9565b92909360405196612dcf886110ea565b875230602088015289604088015260608701528501523691611381565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94612fe3575b506020015115612ecf57908291612bab9493612e45898d611691565b52612e7a836001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000061420a565b80831080612eb4575b612e90575b5050506126fc565b612ea6612eac93612ea08b611344565b926137b1565b91614356565b5f8080612e88565b50306001600160a01b03612ec78b611344565b161415612e83565b9450908094808210612ee8575b505050612bab906126fc565b91612ef8602092612f77946137b1565b90612f2d826001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683614356565b60405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f157612fb8575b8080612edc565b602090813d8311612fdc575b612fce8183611152565b810103126102fc575f612fb1565b503d612fc4565b6020919450612ffb903d805f833e611f248183611152565b509094919050612e29565b61300f90611106565b5f612d86565b9093506020813d602011613041575b8161303160209383611152565b810103126102fc5751925f612cbc565b3d9150613024565b909261305489611344565b6001600160a01b033091160361306f575b5f612dec94612d88565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016936130a38a611344565b6130ac846142fd565b90863b156102fc576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152306024820152918116604483015285166064820152945f908690608490829084905af19081156102f157612dec955f92613128575b50945050613065565b61313190611106565b5f61311f565b6001600160a01b036020849695940151168a8282145f1461340b5750505061320c61316e5f92846001600160a01b03885116614223565b92906131d48c6001600160a01b03808a5116938951151586146133df576131a361319784611344565b935b60808101906118d9565b929093604051966131b3886110ea565b875216602086015260408501528c6060850152600260808501523691611381565b60a0820152604051809381927f4af29ec4000000000000000000000000000000000000000000000000000000008352600483016138f8565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156102f1575f916133c4575b5060208401518c908a90156133aa5783836001600160a01b03936132836132899461327c8f9c9b9a98996132b29a611691565b5192611691565b52611691565b5191167f000000000000000000000000000000000000000000000000000000000000000061420a565b51156132f457612bab92916001600160a01b036020612ba6930151167f0000000000000000000000000000000000000000000000000000000000000000614341565b516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024810191909152602081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f15761337f575b50612bab906126fc565b602090813d83116133a3575b6133958183611152565b810103126102fc575f613375565b503d61338b565b50509091506133bb92939650611691565b519384916132b2565b6133d891503d805f833e61239c8183611152565b9050613249565b6131a3827f00000000000000000000000000000000000000000000000000000000000000001693613199565b61349e965090613466916060948b61342b608099989993848101906118d9565b9390946040519761343b89611136565b6001895260208901526001600160a01b038b1660408901528888015286015260a08501523691611381565b60c0820152604051809581927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613810565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156102f15787918b915f9561352d575b506020015115612bb057612ba69284613505612bab9796946001600160a01b0394611691565b52167f000000000000000000000000000000000000000000000000000000000000000061420a565b602091955061354a9060603d606011611ce057611ccd8183611152565b50959190506134df565b6fffffffffffffffffffffffffffffffff6001600160a01b0360206135858188015161357f886126eb565b90611691565b51015116916129fc565b6135cc856001600160a01b0360208401611c67828251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b6129e0565b50506135fc7f0000000000000000000000000000000000000000000000000000000000000000613a71565b9161360783516119d0565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b86518110156126ba576001906001600160a01b038061366d838b611691565b51165f528560205261368860405f205c8261267e858d611691565b6136928387611691565b5261369d828a611691565b51165f52856020525f604081205d0161364e565b4780156136f0577f00000000000000000000000000000000000000000000000000000000000000005c6136f0576001600160a01b0361184c92166140e0565b5050565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102fc570180359067ffffffffffffffff82116102fc57602001918160051b360383136102fc57565b91908110156116a55760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81813603018212156102fc570190565b604051906040820182811067ffffffffffffffff8211176110bd576040525f6020838281520152565b91908203918211611a0e57565b600211156137c857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b908160609103126102fc578051916040602083015192015190565b61010060c0610f7c93602084528051613828816137be565b602085015260208101516001600160a01b0380911660408601528060408301511660608601526060820151166080850152608081015160a085015260a08101518285015201519160e0808201520190610ffb565b90916060828403126102fc5781519167ffffffffffffffff928381116102fc57846138a8918301611573565b9360208201519360408301519081116102fc57610f7c9201611507565b9081518082526020808093019301915f5b8281106138e4575050505090565b8351855293810193928101926001016138d6565b602081526001600160a01b038083511660208301526020830151166040820152613931604083015160c0606084015260e08301906138c5565b9060608301516080820152608083015160058110156137c857610f7c9360a0918284015201519060c0601f1982850301910152610ffb565b916060838303126102fc5782519260208101519267ffffffffffffffff938481116102fc578161399a918401611573565b9360408301519081116102fc57610f7c9201611507565b602081526001600160a01b038083511660208301526020830151166040820152604082015160608201526139f4606083015160c0608084015260e08301906138c5565b90608083015160048110156137c857610f7c9360a0918284015201519060c0601f1982850301910152610ffb565b91909160808060a08301948051613a38816137be565b84526020810151613a48816137be565b60208501526001600160a01b036040820151166040850152606081015160608501520151910152565b90815c613a7d81611175565b613a8a6040519182611152565b818152613a9682611175565b601f196020910136602084013781945f5b848110613ab5575050505050565b600190825f5280845f20015c6001600160a01b03613ad38388611691565b9116905201613aa7565b919280613dd8575b15613c51575050804710613c29576001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001691823b156102fc57604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f915f8160048185895af180156102f157613c12575b506044602092937f00000000000000000000000000000000000000000000000000000000000000001694613b98838783614356565b8460405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115613c065750613bdf5750565b602090813d8311613bff575b613bf58183611152565b810103126102fc57565b503d613beb565b604051903d90823e3d90fd5b60209250613c1f90611106565b60445f9250613b63565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b90915f9080613c61575b50505050565b6001600160a01b0393847f00000000000000000000000000000000000000000000000000000000000000001694807f00000000000000000000000000000000000000000000000000000000000000001691613cbb846142fd565b96803b156102fc576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015297821660448901529186161660648701525f908690608490829084905af19485156102f157613d8095613dc4575b5082936020936040518097819582947f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af1908115613c065750613d99575b808080613c5b565b602090813d8311613dbd575b613daf8183611152565b810103126102fc575f613d91565b503d613da5565b60209350613dd190611106565b5f92613d2f565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690821614613ae5565b6001810191805f5260209183835260405f205c8015155f14613ea7575f1990818101835c8380820191828403613e6a575b5050505050815c81810192818411611a0e575f93815d835284832001015d5f52525f604081205d600190565b613e77613e87938861443a565b865f52885f2001015c918561443a565b835f52808383885f2001015d5f5285855260405f205d5f80808381613e3e565b50505050505f90565b5f949383156140d857806140a3575b15614007576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af180156102f157613ff4575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b15613ff05781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af18015613fe557613fcd575b5061184c939450166140e0565b613fd78691611106565b613fe15784613fc0565b8480fd5b6040513d88823e3d90fd5b5080fd5b613fff919550611106565b5f935f613f53565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af180156102f15761409a5750565b61184c90611106565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614613ebf565b505050509050565b814710614130575f8080936001600160a01b038294165af1614100612877565b501561410857565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b90614171575080511561410857805190602001fd5b815115806141b7575b614182575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561417a565b6001810190825f528160205260405f205c155f1461420357805c815f52838160205f20015d60018101809111611a0e57815d5c915f5260205260405f205d600190565b5050505f90565b905f5260205261421f60405f2091825c611a01565b905d565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa9384156142f3575f935f956142bc575b50506142b96142b285946119d0565b9485611691565b52565b809295508194503d83116142ec575b6142d58183611152565b810103126102fc5760208251920151925f806142a3565b503d6142cb565b83513d5f823e3d90fd5b6001600160a01b0390818111614311571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b905f5260205261421f60405f2091825c6137b1565b6040519260208401907fa9059cbb0000000000000000000000000000000000000000000000000000000082526001600160a01b038094166024860152604485015260448452608084019084821067ffffffffffffffff8311176110bd576143d5935f9384936040521694519082865af16143ce612877565b908361415c565b8051908115159182614416575b50506143eb5750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81925090602091810103126102fc57602001518015908115036102fc575f806143e2565b5c111561444357565b7f0f4ae0e4000000000000000000000000000000000000000000000000000000005f5260045ffdfea26469706673582212200423f0175f2d5f4ce8a28d12f731faa6492db13af4765d562cda5b8bbd5286ec64736f6c634300081a0033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x5C9 JUMPI PUSH2 0x4BBD DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1F DUP3 DUP6 PUSH2 0x5E8 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SWAP2 PUSH1 0x80 DUP3 DUP5 SUB SLT PUSH2 0x5C9 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 DUP5 DUP2 AND DUP2 SUB PUSH2 0x5C9 JUMPI PUSH1 0x20 SWAP4 DUP5 DUP2 ADD MLOAD SWAP3 DUP7 DUP5 AND DUP5 SUB PUSH2 0x5C9 JUMPI DUP5 DUP3 ADD MLOAD SWAP7 DUP8 AND DUP8 SUB PUSH2 0x5C9 JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 DUP4 DUP3 GT PUSH2 0x5C9 JUMPI ADD SWAP3 PUSH1 0x1F SWAP1 DUP3 DUP3 DUP7 ADD SLT ISZERO PUSH2 0x5C9 JUMPI DUP5 MLOAD DUP5 DUP2 GT PUSH2 0x5B5 JUMPI PUSH1 0x1F NOT SWAP6 DUP9 MLOAD SWAP5 PUSH2 0xA5 DUP12 DUP10 DUP8 DUP7 ADD AND ADD DUP8 PUSH2 0x5E8 JUMP JUMPDEST DUP3 DUP7 MSTORE DUP11 DUP4 DUP4 ADD ADD GT PUSH2 0x5C9 JUMPI DUP2 PUSH0 SWAP3 DUP12 DUP1 SWAP4 ADD DUP4 DUP9 ADD MCOPY DUP6 ADD ADD MSTORE PUSH1 0x80 MSTORE DUP2 MLOAD SWAP3 DUP4 GT PUSH2 0x5B5 JUMPI PUSH0 SLOAD SWAP2 PUSH1 0x1 SWAP3 DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x5AB JUMPI JUMPDEST DUP10 DUP3 LT EQ PUSH2 0x597 JUMPI DUP3 DUP2 GT PUSH2 0x554 JUMPI JUMPDEST POP DUP8 SWAP2 DUP5 GT PUSH1 0x1 EQ PUSH2 0x4F7 JUMPI DUP4 SWAP5 POP SWAP1 DUP4 SWAP3 SWAP2 PUSH0 SWAP5 PUSH2 0x4EC JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE JUMPDEST PUSH2 0x149 PUSH2 0x126 PUSH2 0x60B JUMP JUMPDEST DUP4 MLOAD SWAP1 PUSH2 0x132 DUP3 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x6 DUP3 MSTORE PUSH6 0x39B2B73232B9 PUSH1 0xD1 SHL DUP7 DUP4 ADD MSTORE PUSH2 0x669 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH2 0x185 PUSH2 0x157 PUSH2 0x60B JUMP JUMPDEST DUP4 MLOAD SWAP1 PUSH2 0x163 DUP3 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x11 DUP3 MSTORE PUSH17 0x1A5CD4995D1D5C9B915D1A131BD8DAD959 PUSH1 0x7A SHL DUP7 DUP4 ADD MSTORE PUSH2 0x669 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP3 DUP4 MSTORE PUSH2 0x1CD DUP2 MLOAD PUSH2 0x19F DUP2 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x13 DUP2 MSTORE PUSH32 0x63757272656E7453776170546F6B656E73496E00000000000000000000000000 DUP5 DUP3 ADD MSTORE PUSH2 0x633 JUMP JUMPDEST SWAP2 PUSH2 0x120 SWAP3 DUP4 MSTORE PUSH2 0x210 DUP3 MLOAD PUSH2 0x1E2 DUP2 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x14 DUP2 MSTORE PUSH32 0x63757272656E7453776170546F6B656E734F7574000000000000000000000000 DUP4 DUP3 ADD MSTORE PUSH2 0x633 JUMP JUMPDEST PUSH2 0x140 SWAP1 DUP2 MSTORE PUSH2 0x252 DUP4 MLOAD PUSH2 0x224 DUP2 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x19 DUP2 MSTORE PUSH32 0x63757272656E7453776170546F6B656E496E416D6F756E747300000000000000 DUP5 DUP3 ADD MSTORE PUSH2 0x633 JUMP JUMPDEST SWAP1 PUSH2 0x160 SWAP2 DUP3 MSTORE PUSH2 0x2D8 PUSH2 0x298 DUP6 MLOAD PUSH2 0x26A DUP2 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x63757272656E7453776170546F6B656E4F7574416D6F756E7473000000000000 DUP7 DUP3 ADD MSTORE PUSH2 0x633 JUMP JUMPDEST SWAP4 PUSH2 0x180 SWAP5 DUP6 MSTORE PUSH32 0x736574746C6564546F6B656E416D6F756E747300000000000000000000000000 DUP7 MLOAD SWAP2 PUSH2 0x2CC DUP4 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x13 DUP4 MSTORE DUP3 ADD MSTORE PUSH2 0x633 JUMP JUMPDEST SWAP4 PUSH2 0x1A0 SWAP5 DUP6 MSTORE MLOAD SWAP5 PUSH2 0x44A1 SWAP7 DUP8 PUSH2 0x71C DUP9 CODECOPY PUSH1 0x80 MLOAD DUP8 DUP2 DUP2 PUSH2 0x246 ADD MSTORE DUP2 DUP2 PUSH2 0x197C ADD MSTORE DUP2 DUP2 PUSH2 0x1BE0 ADD MSTORE DUP2 DUP2 PUSH2 0x1E22 ADD MSTORE DUP2 DUP2 PUSH2 0x2079 ADD MSTORE DUP2 DUP2 PUSH2 0x2212 ADD MSTORE DUP2 DUP2 PUSH2 0x2323 ADD MSTORE DUP2 DUP2 PUSH2 0x23B1 ADD MSTORE DUP2 DUP2 PUSH2 0x2473 ADD MSTORE DUP2 DUP2 PUSH2 0x2AAD ADD MSTORE DUP2 DUP2 PUSH2 0x2C8C ADD MSTORE DUP2 DUP2 PUSH2 0x2CD4 ADD MSTORE DUP2 DUP2 PUSH2 0x2D52 ADD MSTORE DUP2 DUP2 PUSH2 0x2DF9 ADD MSTORE DUP2 DUP2 PUSH2 0x2F07 ADD MSTORE DUP2 DUP2 PUSH2 0x2F84 ADD MSTORE DUP2 DUP2 PUSH2 0x3219 ADD MSTORE DUP2 DUP2 PUSH2 0x3348 ADD MSTORE DUP2 DUP2 PUSH2 0x33E5 ADD MSTORE DUP2 DUP2 PUSH2 0x34AB ADD MSTORE DUP2 DUP2 PUSH2 0x3B6C ADD MSTORE DUP2 DUP2 PUSH2 0x3C91 ADD MSTORE DUP2 DUP2 PUSH2 0x3ED0 ADD MSTORE DUP2 DUP2 PUSH2 0x4015 ADD MSTORE PUSH2 0x4271 ADD MSTORE PUSH1 0xA0 MLOAD DUP8 DUP2 DUP2 PUSH2 0x2AA ADD MSTORE DUP2 DUP2 PUSH2 0x535 ADD MSTORE DUP2 DUP2 PUSH2 0x181F ADD MSTORE PUSH2 0x28BE ADD MSTORE PUSH1 0xC0 MLOAD DUP8 DUP2 DUP2 PUSH2 0x17A9 ADD MSTORE PUSH2 0x36BA ADD MSTORE PUSH1 0xE0 MLOAD DUP8 DUP2 DUP2 PUSH1 0x22 ADD MSTORE DUP2 DUP2 PUSH2 0x3AFE ADD MSTORE DUP2 DUP2 PUSH2 0x3DE4 ADD MSTORE DUP2 DUP2 PUSH2 0x3F58 ADD MSTORE PUSH2 0x40AF ADD MSTORE MLOAD DUP7 DUP2 DUP2 PUSH2 0x9F0 ADD MSTORE DUP2 DUP2 PUSH2 0xB04 ADD MSTORE DUP2 DUP2 PUSH2 0x1F6E ADD MSTORE DUP2 DUP2 PUSH2 0x1FF4 ADD MSTORE DUP2 DUP2 PUSH2 0x3079 ADD MSTORE PUSH2 0x3C6D ADD MSTORE MLOAD DUP6 DUP2 DUP2 PUSH2 0x2569 ADD MSTORE DUP2 DUP2 PUSH2 0x2750 ADD MSTORE DUP2 DUP2 PUSH2 0x295A ADD MSTORE PUSH2 0x35D8 ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x1C43 ADD MSTORE DUP2 DUP2 PUSH2 0x1E8F ADD MSTORE DUP2 DUP2 PUSH2 0x2275 ADD MSTORE DUP2 DUP2 PUSH2 0x24D7 ADD MSTORE DUP2 DUP2 PUSH2 0x25CE ADD MSTORE DUP2 DUP2 PUSH2 0x272C ADD MSTORE DUP2 DUP2 PUSH2 0x2B12 ADD MSTORE PUSH2 0x35A8 ADD MSTORE MLOAD DUP4 DUP2 DUP2 PUSH2 0x1D43 ADD MSTORE DUP2 DUP2 PUSH2 0x2595 ADD MSTORE DUP2 DUP2 PUSH2 0x277C ADD MSTORE DUP2 DUP2 PUSH2 0x328E ADD MSTORE DUP2 DUP2 PUSH2 0x3509 ADD MSTORE PUSH2 0x362B ADD MSTORE MLOAD DUP3 DUP2 DUP2 PUSH2 0x1C6C ADD MSTORE DUP2 DUP2 PUSH2 0x1EC0 ADD MSTORE DUP2 DUP2 PUSH2 0x2501 ADD MSTORE DUP2 DUP2 PUSH2 0x2621 ADD MSTORE DUP2 DUP2 PUSH2 0x27B4 ADD MSTORE DUP2 DUP2 PUSH2 0x2B51 ADD MSTORE PUSH2 0x32D0 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x229F ADD MSTORE DUP2 DUP2 PUSH2 0x25FF ADD MSTORE DUP2 DUP2 PUSH2 0x2B82 ADD MSTORE DUP2 DUP2 PUSH2 0x2E56 ADD MSTORE PUSH2 0x3609 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x10A JUMP JUMPDEST SWAP2 SWAP4 DUP4 AND SWAP2 PUSH0 DUP1 MSTORE DUP4 DUP9 PUSH0 KECCAK256 SWAP4 PUSH0 JUMPDEST DUP11 DUP9 DUP4 DUP4 LT PUSH2 0x53D JUMPI POP POP POP LT PUSH2 0x525 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH2 0x11B JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x518 JUMP JUMPDEST DUP7 DUP7 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP ADD PUSH2 0x506 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP9 PUSH0 KECCAK256 DUP4 DUP1 DUP8 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP12 DUP9 LT PUSH2 0x58E JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP5 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x583 JUMPI POP POP PUSH2 0xF0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x575 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x56C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xE0 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x5B5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x5B5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x618 DUP3 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH12 0x2937BABA32B921B7B6B6B7B7 PUSH1 0xA1 SHL PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x666 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x643 DUP2 PUSH2 0x5CD JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x2130BA31B42937BABA32B921B7B6B6B7B7 PUSH1 0x79 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x669 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6D6 PUSH1 0x3A PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 DUP2 DUP1 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x5E8 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x707 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x6FC DUP3 PUSH2 0x5CD JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A465F6 EQ PUSH2 0xE9D JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x84E JUMPI DUP1 PUSH4 0x286F580D EQ PUSH2 0x7B7 JUMPI DUP1 PUSH4 0x2950286E EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0x5A3C3987 EQ PUSH2 0x566 JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0x8A12A08C EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x8EB1B65E EQ PUSH2 0x3BF JUMPI DUP1 PUSH4 0x945ED33F EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x300 JUMPI PUSH4 0xE3B5DFF4 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x2FC JUMPI PUSH1 0x60 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x12D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST PUSH2 0x135 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x2FC JUMPI PUSH2 0x150 PUSH2 0x158 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x28B9 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x17C JUMPI DUP1 PUSH0 DUP8 PUSH2 0x173 PUSH1 0x1 SWAP5 DUP9 PUSH2 0x1691 JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x15B JUMP JUMPDEST POP PUSH2 0x1F0 PUSH2 0x1FE PUSH2 0x239 SWAP5 PUSH2 0x1B6 PUSH0 SWAP5 DUP9 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x19A DUP6 PUSH2 0x111A JUMP JUMPDEST ADDRESS DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH0 NOT PUSH1 0x40 DUP6 ADD MSTORE DUP7 PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A12A08C00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x143E JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1152 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2A3 SWAP3 PUSH2 0x28E SWAP2 PUSH0 SWAP2 PUSH2 0x2CF JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x15D4 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0xF2F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x297 JUMP JUMPDEST PUSH2 0x2EB SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2E3 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x154D JUMP JUMPDEST DUP5 PUSH2 0x27E JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x338 PUSH2 0x332 PUSH2 0x2A3 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF9C JUMP JUMPDEST SWAP1 PUSH2 0x179B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1020 JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0x352 CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0x35A PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x362 PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x2A3 PUSH2 0x371 DUP4 PUSH2 0x28FB JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP5 PUSH2 0x38A PUSH1 0x60 PUSH2 0x383 DUP4 PUSH2 0x1344 JUMP JUMPDEST SWAP3 ADD PUSH2 0x1358 JUMP JUMPDEST SWAP1 PUSH2 0x2729 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0xF2F JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x3EC SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH2 0x3F5 PUSH2 0x11B7 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x1F0 PUSH2 0x48B PUSH2 0x239 SWAP5 PUSH2 0x451 PUSH2 0x41C PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST PUSH2 0x425 CALLER PUSH2 0x28B9 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x433 DUP7 PUSH2 0x111A JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x945ED33F00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x16D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0x2A3 PUSH2 0x4EF PUSH2 0x4DA CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0x4E2 PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x4EA PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP5 SWAP3 SWAP5 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0xF2F JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0x2A3 PUSH2 0x4EF PUSH2 0x57A CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0x582 PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x58A PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x28FB JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x6C2 JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x695 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x657 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x5FE JUMPI JUMPDEST POP PUSH2 0x5EA SWAP3 POP SUB DUP4 PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x63F JUMPI POP POP PUSH2 0x5EA SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x5DD JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x628 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x5EA SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x5DD SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x5B9 JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x6FE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH2 0x707 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x2FC JUMPI PUSH2 0x722 PUSH2 0x72A SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0x28B9 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x75F JUMPI DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x756 PUSH1 0x1 SWAP5 DUP10 PUSH2 0x1691 JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x72D JUMP JUMPDEST POP PUSH2 0x1F0 PUSH2 0x1FE DUP6 PUSH2 0x77D PUSH0 SWAP5 PUSH2 0x239 SWAP8 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x19A DUP6 PUSH2 0x111A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5A3C398700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x16D2 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x7E4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH2 0x7ED PUSH2 0x11B7 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x1F0 PUSH2 0x48B PUSH2 0x239 SWAP5 PUSH2 0x814 PUSH2 0x41C PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A465F600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x143E JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x2FC JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x2FC JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x2FC JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x8C4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF9C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x2FC JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x905 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x925 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF9C JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0x930 PUSH2 0x1945 JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0xE75 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0xBD2 JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2FC JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x2FC JUMPI PUSH2 0x9E3 JUMPI JUMPDEST PUSH2 0x2A3 PUSH2 0x338 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x179B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x2FC JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x2FC JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0xB54 JUMPI POP POP POP PUSH1 0x20 SWAP2 PUSH1 0x1F NOT PUSH1 0x1F DUP7 PUSH0 SWAP8 DUP8 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xAC8 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x118D JUMP JUMPDEST AND PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP9 ADD MSTORE PUSH1 0x3 NOT DUP8 DUP8 SUB ADD PUSH1 0x44 DUP9 ADD MSTORE DUP2 DUP7 MSTORE DUP8 DUP7 ADD CALLDATACOPY DUP8 DUP7 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD SUB ADD DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2A3 SWAP4 PUSH2 0x338 SWAP4 PUSH2 0xB45 JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x9B3 JUMP JUMPDEST PUSH2 0xB4E SWAP1 PUSH2 0x1106 JUMP JUMPDEST DUP5 PUSH2 0xB3A JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xB6B DUP8 PUSH2 0x118D JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x2FC JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0xB9B PUSH1 0x40 DUP10 ADD PUSH2 0x28A6 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xBB6 PUSH1 0x60 DUP11 ADD PUSH2 0x28A6 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0xA97 JUMP JUMPDEST PUSH2 0xBE7 PUSH2 0xBE0 DUP3 DUP5 DUP7 PUSH2 0x192A JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF3 DUP2 PUSH2 0x10A1 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH1 0x20 SWAP2 PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE DUP3 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0xC60 DUP3 PUSH2 0x10EA JUMP JUMPDEST PUSH2 0xC73 PUSH1 0x24 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x118D JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0xC89 PUSH1 0x44 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x118D JUMP JUMPDEST SWAP1 DUP2 DUP6 DUP6 ADD MSTORE PUSH2 0xCA2 PUSH1 0x64 PUSH1 0xC0 DUP9 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x118D JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP9 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP12 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0xE66 JUMPI JUMPDEST POP PUSH2 0xE5C JUMPI PUSH2 0xD7F PUSH2 0x2877 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP3 PUSH2 0xE2C JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0xDF7 JUMPI POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x93F JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xE04 JUMPI DUP1 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0xE55 JUMPI JUMPDEST PUSH2 0xE44 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0xDE1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xE3A JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH2 0xE6F SWAP1 PUSH2 0x1106 JUMP JUMPDEST DUP11 PUSH2 0xD72 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0xEAB CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0xEB3 PUSH2 0x1945 JUMP JUMPDEST PUSH2 0xEBB PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x2A3 PUSH2 0x371 DUP4 PUSH2 0x1A3B JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2FC JUMPI DUP3 PUSH1 0xA0 SWAP3 SUB ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xF1B JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xF0D JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0xF44 SWAP1 PUSH1 0x60 DUP7 MSTORE PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0xEFC JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP5 DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP1 DUP6 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xF7F JUMPI POP POP POP PUSH2 0xF7C SWAP4 SWAP5 POP PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xEFC JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 MSTORE SWAP5 DUP8 ADD SWAP5 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xF5F JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2FC JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2FC JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1055 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x1091 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0xFFB JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10BD JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SLT PUSH2 0x2FC JUMPI PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF SWAP6 DUP5 DUP2 LT DUP8 DUP3 GT OR PUSH2 0x10BD JUMPI DUP3 MSTORE DUP4 SWAP6 PUSH2 0x1200 DUP5 PUSH2 0x118D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI DUP5 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1229 DUP3 PUSH2 0x1175 JUMP JUMPDEST SWAP4 PUSH2 0x1236 DUP7 MLOAD SWAP6 DUP7 PUSH2 0x1152 JUMP JUMPDEST DUP3 DUP6 MSTORE DUP4 DUP6 ADD SWAP1 DUP5 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP2 DUP5 GT PUSH2 0x2FC JUMPI DUP6 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x1274 JUMPI POP POP POP POP POP DUP5 ADD MSTORE DUP2 DUP2 ADD CALLDATALOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST DUP5 DUP4 DUP4 SUB SLT PUSH2 0x2FC JUMPI DUP8 MLOAD SWAP1 PUSH2 0x1289 DUP3 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x1292 DUP5 PUSH2 0x118D JUMP JUMPDEST DUP3 MSTORE PUSH2 0x129F DUP8 DUP6 ADD PUSH2 0x118D JUMP JUMPDEST DUP8 DUP4 ADD MSTORE DUP9 DUP5 ADD CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x2FC JUMPI DUP3 DUP9 SWAP3 DUP12 DUP10 SWAP6 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1252 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP1 CALLDATALOAD SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x12DE DUP5 PUSH2 0x1175 JUMP JUMPDEST SWAP4 PUSH2 0x12EC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1152 JUMP JUMPDEST DUP1 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP3 DUP1 DUP5 GT PUSH2 0x2FC JUMPI DUP5 DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1317 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI DUP7 SWAP2 PUSH2 0x1339 DUP5 DUP5 DUP1 SWAP5 DUP10 ADD ADD PUSH2 0x11C6 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1307 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2FC JUMPI SWAP1 JUMP JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2FC JUMPI SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10BD JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x138D DUP3 PUSH2 0x1365 JUMP JUMPDEST SWAP2 PUSH2 0x139B PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1152 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2FC JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 DUP4 ADD MLOAD SWAP5 PUSH1 0x80 DUP2 DUP7 ADD MSTORE DUP6 MLOAD DUP1 SWAP3 MSTORE DUP1 PUSH1 0xA0 DUP7 ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x140B JUMPI POP POP POP POP POP PUSH1 0x60 DUP2 PUSH1 0x40 DUP3 SWAP4 ADD MLOAD PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP1 MLOAD DUP3 AND DUP10 MSTORE DUP1 DUP5 ADD MLOAD DUP3 AND DUP10 DUP6 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP10 ADD MSTORE PUSH1 0x60 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x13E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x14BD JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0xF7C SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x14F8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x13B7 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x1481 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP1 MLOAD SWAP1 PUSH2 0x151E DUP3 PUSH2 0x1365 JUMP JUMPDEST SWAP3 PUSH2 0x152C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1152 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x2FC JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2FC JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1507 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x158E DUP2 PUSH2 0x1175 JUMP JUMPDEST SWAP4 PUSH2 0x159C PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1152 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x15C5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x15B7 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x2FC JUMPI DUP5 PUSH2 0x1600 SWAP2 DUP4 ADD PUSH2 0x1573 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP6 DUP2 GT PUSH2 0x2FC JUMPI DUP4 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP2 PUSH2 0x1628 DUP4 PUSH2 0x1175 JUMP JUMPDEST SWAP3 PUSH2 0x1636 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1152 JUMP JUMPDEST DUP1 DUP5 MSTORE DUP3 DUP1 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x2FC JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1672 JUMPI POP POP POP POP SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1573 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2FC JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1650 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1751 JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0xF7C SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x178C DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x13B7 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x1715 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x17A6 CALLER PUSH2 0x28B9 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x18B1 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x17DF DUP4 PUSH2 0x1175 JUMP JUMPDEST SWAP3 PUSH2 0x17ED PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1152 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x17FC DUP3 PUSH2 0x1175 JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x18A0 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1857 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x184C SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x184E JUMPI JUMPDEST POP PUSH2 0x36B1 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x1846 JUMP JUMPDEST DUP1 PUSH2 0x1884 PUSH0 DUP1 PUSH2 0x186C PUSH2 0xBE0 DUP10 SWAP7 DUP9 DUP11 PUSH2 0x192A JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x187D PUSH2 0x2877 JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x415C JUMP JUMPDEST PUSH2 0x188E DUP3 DUP9 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x1899 DUP2 DUP8 PUSH2 0x1691 JUMP JUMPDEST POP ADD PUSH2 0x180A JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x17FF JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x16A5 JUMPI PUSH2 0x1941 SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x18B1 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x19A4 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x19DA DUP3 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0x19E7 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1152 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x19F7 DUP3 SWAP5 PUSH2 0x1175 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1A0E JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x26C3 JUMPI SWAP1 PUSH2 0x1A5E PUSH2 0x1A57 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x36F4 JUMP JUMPDEST SWAP1 POP PUSH2 0x19D0 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x1A6E PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x36F4 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x25C7 JUMPI PUSH2 0x1A98 DUP2 PUSH2 0x1A93 PUSH2 0x1A8B PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x36F4 JUMP JUMPDEST CALLDATASIZE SWAP4 SWAP2 PUSH2 0x3748 JUMP JUMPDEST PUSH2 0x11C6 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP6 ADD MLOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 MLOAD AND SWAP1 PUSH1 0x20 DUP8 ADD MLOAD DUP1 MLOAD ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x25BE JUMPI JUMPDEST ISZERO PUSH2 0x2563 JUMPI PUSH2 0x1AEC PUSH2 0x1AD8 DUP7 PUSH2 0x1344 JUMP JUMPDEST DUP8 DUP5 PUSH2 0x1AE6 PUSH1 0x60 DUP11 ADD PUSH2 0x1358 JUMP JUMPDEST SWAP3 PUSH2 0x3ADD JUMP JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x2553 JUMPI PUSH2 0x1B03 PUSH2 0x3788 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1A0E JUMPI DUP3 EQ DUP1 PUSH1 0x20 DUP4 ADD MSTORE DUP3 ISZERO DUP3 MSTORE PUSH0 EQ PUSH2 0x254C JUMPI PUSH1 0x60 DUP10 ADD MLOAD SWAP1 JUMPDEST PUSH2 0x1B3B DUP4 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x1691 JUMP JUMPDEST MLOAD PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 SWAP1 ISZERO PUSH2 0x1CEE JUMPI PUSH2 0x1BD3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 EQ PUSH0 EQ PUSH2 0x1CE7 JUMPI PUSH1 0x1 SWAP5 JUMPDEST PUSH1 0x40 MLOAD SWAP6 PUSH2 0x1B7B DUP8 PUSH2 0x111A JUMP JUMPDEST PUSH0 DUP8 MSTORE PUSH2 0x1B87 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 SWAP5 DUP6 SWAP2 DUP14 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A22 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x1CB0 JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1C96 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1C90 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1C38 DUP13 DUP13 PUSH2 0x1691 JUMP JUMPDEST MSTORE ADD PUSH2 0x1C67 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST ADD PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH1 0x1 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x1CD5 SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1CE0 JUMPI JUMPDEST PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x37F5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x1C10 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CC3 JUMP JUMPDEST PUSH0 SWAP5 PUSH2 0x1B6E JUMP JUMPDEST DUP9 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 SWAP6 SWAP5 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND EQ PUSH0 EQ PUSH2 0x2132 JUMPI POP POP DUP2 MLOAD ISZERO SWAP1 POP PUSH2 0x206E JUMPI DUP9 DUP11 DUP1 ISZERO ISZERO DUP1 PUSH2 0x2053 JUMPI JUMPDEST PUSH2 0x1F4D JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP3 SWAP2 PUSH2 0x1DDD DUP3 PUSH2 0x1E15 SWAP8 DUP12 PUSH0 SWAP6 DUP10 PUSH32 0x0 SWAP3 AND DUP1 DUP9 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP9 KECCAK256 TLOAD PUSH2 0x1F3C JUMPI JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH2 0x1D9C DUP10 DUP4 MLOAD AND PUSH1 0x20 DUP5 ADD SWAP10 DUP12 DUP12 MLOAD AND SWAP1 DUP1 ISZERO DUP11 EQ PUSH2 0x1F36 JUMPI POP DUP4 SWAP2 PUSH2 0x4223 JUMP JUMPDEST SWAP10 SWAP1 SWAP3 MLOAD AND SWAP5 PUSH2 0x1DB1 PUSH1 0x80 SWAP2 DUP3 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x1DC1 DUP10 PUSH2 0x10EA JUMP JUMPDEST DUP9 MSTORE ADDRESS PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x39B1 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x1F0C JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1EE9 JUMPI SWAP2 PUSH2 0x1EBC DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1E7A PUSH2 0x1EE4 SWAP7 DUP7 PUSH2 0x1691 JUMP JUMPDEST MLOAD PUSH2 0x1E85 DUP14 DUP14 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x1EB3 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP MLOAD AND SWAP3 PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP1 PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH2 0x1C90 JUMP JUMPDEST SWAP9 POP PUSH1 0x1 SWAP3 SWAP5 POP PUSH2 0x1F02 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP8 MLOAD AND SWAP3 PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x1F2C SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1F24 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3969 JUMP JUMPDEST POP SWAP5 SWAP2 SWAP1 POP PUSH2 0x1E52 JUMP JUMPDEST SWAP2 PUSH2 0x4223 JUMP JUMPDEST PUSH2 0x1F45 SWAP3 PUSH2 0x4341 JUMP JUMPDEST PUSH0 DUP3 DUP2 PUSH2 0x1D75 JUMP JUMPDEST POP PUSH2 0x1F5A SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1344 JUMP JUMPDEST SWAP2 PUSH2 0x1F64 DUP12 PUSH2 0x42FD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP3 DUP8 AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 DUP4 DUP1 PUSH1 0x84 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI DUP11 PUSH2 0x1DDD DUP14 PUSH2 0x1E15 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x2044 JUMPI JUMPDEST POP SWAP8 POP SWAP3 POP POP SWAP2 SWAP3 SWAP4 POP PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0x204D SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x2035 JUMP JUMPDEST POP PUSH2 0x205D DUP3 PUSH2 0x1344 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS EQ ISZERO PUSH2 0x1D25 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 MLOAD AND SWAP3 DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE ADDRESS PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP13 SWAP1 MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI DUP11 PUSH2 0x1DDD DUP14 PUSH2 0x1E15 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x2123 JUMPI JUMPDEST POP PUSH2 0x1D79 JUMP JUMPDEST PUSH2 0x212C SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP8 SWAP7 SWAP5 SWAP8 ADD MLOAD AND SWAP1 DUP10 DUP2 DUP4 EQ PUSH0 EQ PUSH2 0x23D7 JUMPI PUSH2 0x21CD SWAP3 POP PUSH2 0x2205 SWAP8 SWAP2 POP PUSH1 0x1 PUSH2 0x2173 PUSH0 SWAP7 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP12 MLOAD AND PUSH2 0x4223 JUMP JUMPDEST POP SWAP3 DUP3 DUP10 MLOAD AND SWAP6 PUSH1 0x20 DUP10 ADD MLOAD ISZERO ISZERO DUP9 EQ PUSH2 0x23AE JUMPI PUSH2 0x2190 DUP3 PUSH2 0x1344 JUMP JUMPDEST SWAP5 JUMPDEST PUSH2 0x21A1 PUSH1 0x80 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP6 SWAP1 SWAP7 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x21B1 DUP12 PUSH2 0x10EA JUMP JUMPDEST DUP11 MSTORE AND PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x38F8 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP4 PUSH2 0x2384 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x22C3 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1EE4 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x2269 DUP13 DUP13 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x2299 DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP4 SWAP11 POP SWAP1 SWAP2 AND SWAP5 POP DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2359 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x237D JUMPI JUMPDEST PUSH2 0x236F DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x2350 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP PUSH2 0x23A4 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x239C DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x387C JUMP JUMPDEST POP SWAP4 SWAP2 SWAP1 POP PUSH2 0x2242 JUMP JUMPDEST DUP4 PUSH32 0x0 AND SWAP5 PUSH2 0x2192 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2466 SWAP6 PUSH2 0x242E SWAP4 SWAP5 SWAP6 PUSH2 0x23F8 PUSH1 0x80 SWAP12 DUP13 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x2408 DUP10 PUSH2 0x1136 JUMP JUMPDEST PUSH0 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 SWAP11 DUP12 SWAP8 DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3810 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x2525 JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1C96 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1EE4 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x24CB DUP13 DUP13 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x24FB DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x2541 SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1CE0 JUMPI PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x24A3 JUMP JUMPDEST PUSH0 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP PUSH1 0x1 ADD PUSH2 0x1A61 JUMP JUMPDEST PUSH2 0x258D DUP3 PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP PUSH2 0x25B9 DUP7 DUP4 PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH2 0x1AEC JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x1AC7 JUMP JUMPDEST POP POP PUSH2 0x25F2 PUSH32 0x0 PUSH2 0x3A71 JUMP JUMPDEST SWAP2 PUSH2 0x25FD DUP4 MLOAD PUSH2 0x19D0 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x26BA JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x2663 DUP4 DUP12 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x2691 PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x267E DUP6 DUP14 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP9 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0x269B DUP4 DUP8 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x26A6 DUP3 DUP11 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x2644 JUMP JUMPDEST POP SWAP5 SWAP4 SWAP2 POP SWAP2 POP JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x1A0E JUMPI JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 EQ PUSH2 0x1A0E JUMPI PUSH0 NOT ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 DUP2 TLOAD PUSH32 0x0 PUSH2 0x2779 DUP2 TLOAD PUSH2 0x26EB JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP2 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x283A JUMPI POP POP POP PUSH2 0x27B1 SWAP1 PUSH2 0x26EB JUMP JUMPDEST SWAP2 PUSH32 0x0 SWAP3 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x27EA JUMPI POP POP POP POP PUSH2 0x184C SWAP1 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x2835 SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x282F PUSH1 0x20 PUSH0 DUP4 DUP3 DUP3 KECCAK256 ADD TLOAD SWAP2 DUP3 DUP3 MSTORE DUP9 DUP2 MSTORE DUP9 PUSH1 0x40 SWAP2 PUSH2 0x2822 DUP11 DUP14 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x3EB0 JUMP JUMPDEST DUP5 DUP5 MSTORE MSTORE DUP2 KECCAK256 TSTORE DUP5 PUSH2 0x3E0D JUMP JUMPDEST POP PUSH2 0x26FC JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH2 0x2872 SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x282F PUSH1 0x20 PUSH0 DUP11 DUP8 DUP6 DUP5 DUP5 KECCAK256 ADD TLOAD SWAP4 DUP5 DUP5 MSTORE DUP2 DUP2 MSTORE PUSH2 0x2822 DUP13 PUSH1 0x40 SWAP5 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x3ADD JUMP JUMPDEST PUSH2 0x279D JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x28A1 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2888 DUP3 PUSH2 0x1365 JUMP JUMPDEST SWAP2 PUSH2 0x2896 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1152 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x28F1 JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP3 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x26C3 JUMPI PUSH2 0x2917 PUSH2 0x1A57 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x36F4 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x2927 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x36F4 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x35D1 JUMPI PUSH2 0x2944 DUP2 PUSH2 0x1A93 PUSH2 0x1A8B PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x36F4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH2 0x297E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1A0E JUMPI JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x29A4 JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x291A JUMP JUMPDEST PUSH2 0x29B2 DUP2 PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1691 JUMP JUMPDEST MLOAD PUSH2 0x29BB PUSH2 0x3788 JUMP JUMPDEST SWAP1 DUP3 ISZERO PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP5 ADD MLOAD MLOAD DUP1 PUSH0 NOT DUP2 ADD GT PUSH2 0x1A0E JUMPI PUSH0 NOT ADD DUP4 EQ DUP1 DUP4 MSTORE PUSH2 0x358F JUMPI JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD ISZERO PUSH2 0x3554 JUMPI PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP2 JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD ISZERO PUSH2 0x2C1D JUMPI DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x60 SWAP3 PUSH1 0x20 PUSH2 0x2AA0 SWAP8 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x2C14 JUMPI JUMPDEST PUSH2 0x2BED JUMPI JUMPDEST MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 SUB PUSH2 0x2BE6 JUMPI PUSH1 0x1 SWAP2 JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH2 0x2A4C DUP5 PUSH2 0x111A JUMP JUMPDEST PUSH1 0x1 DUP5 MSTORE PUSH2 0x2A59 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP9 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A22 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2F1 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x2BBF JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2BB0 JUMPI PUSH2 0x2BA6 SWAP3 DUP5 PUSH2 0x2B02 PUSH2 0x2BAB SWAP8 SWAP7 SWAP5 PUSH2 0x2B75 SWAP5 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x2B36 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2B4D DUP5 PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x37B1 JUMP JUMPDEST SWAP2 AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH2 0x26FC JUMP JUMPDEST PUSH2 0x2991 JUMP JUMPDEST POP POP POP PUSH2 0x2BAB SWAP2 SWAP4 POP SWAP3 PUSH2 0x26FC JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x2BDC SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1CE0 JUMPI PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x2AE1 JUMP JUMPDEST PUSH0 SWAP2 PUSH2 0x2A3F JUMP JUMPDEST PUSH2 0x2C0F PUSH2 0x2BF9 DUP14 PUSH2 0x1344 JUMP JUMPDEST DUP14 DUP12 PUSH2 0x1AE6 DUP9 PUSH1 0x40 DUP9 DUP5 MLOAD AND SWAP4 ADD MLOAD SWAP4 ADD PUSH2 0x1358 JUMP JUMPDEST PUSH2 0x2A28 JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x2A23 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH0 EQ PUSH2 0x3137 JUMPI POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x3049 JUMPI POP PUSH1 0x40 MLOAD SWAP3 PUSH32 0x9678709200000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x20 DUP5 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x3015 JUMPI JUMPDEST POP DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH0 DUP6 DUP1 PUSH1 0x64 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2DEC SWAP6 PUSH0 SWAP3 PUSH2 0x3006 JUMPI JUMPDEST POP JUMPDEST PUSH2 0x1DDD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2DA8 DUP12 DUP3 DUP6 MLOAD AND DUP4 PUSH1 0x20 DUP8 ADD MLOAD AND SWAP1 PUSH2 0x4223 JUMP JUMPDEST POP SWAP3 MLOAD AND SWAP2 DUP13 PUSH1 0x2 PUSH2 0x2DBF PUSH1 0x80 SWAP3 DUP4 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x2DCF DUP9 PUSH2 0x10EA JUMP JUMPDEST DUP8 MSTORE ADDRESS PUSH1 0x20 DUP9 ADD MSTORE DUP10 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x2FE3 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2ECF JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x2BAB SWAP5 SWAP4 PUSH2 0x2E45 DUP10 DUP14 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x2E7A DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST DUP1 DUP4 LT DUP1 PUSH2 0x2EB4 JUMPI JUMPDEST PUSH2 0x2E90 JUMPI JUMPDEST POP POP POP PUSH2 0x26FC JUMP JUMPDEST PUSH2 0x2EA6 PUSH2 0x2EAC SWAP4 PUSH2 0x2EA0 DUP12 PUSH2 0x1344 JUMP JUMPDEST SWAP3 PUSH2 0x37B1 JUMP JUMPDEST SWAP2 PUSH2 0x4356 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x2E88 JUMP JUMPDEST POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2EC7 DUP12 PUSH2 0x1344 JUMP JUMPDEST AND EQ ISZERO PUSH2 0x2E83 JUMP JUMPDEST SWAP5 POP SWAP1 DUP1 SWAP5 DUP1 DUP3 LT PUSH2 0x2EE8 JUMPI JUMPDEST POP POP POP PUSH2 0x2BAB SWAP1 PUSH2 0x26FC JUMP JUMPDEST SWAP2 PUSH2 0x2EF8 PUSH1 0x20 SWAP3 PUSH2 0x2F77 SWAP5 PUSH2 0x37B1 JUMP JUMPDEST SWAP1 PUSH2 0x2F2D DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH2 0x4356 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2FB8 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2FDC JUMPI JUMPDEST PUSH2 0x2FCE DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x2FB1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FC4 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x2FFB SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1F24 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP2 SWAP1 POP PUSH2 0x2E29 JUMP JUMPDEST PUSH2 0x300F SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x2D86 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3041 JUMPI JUMPDEST DUP2 PUSH2 0x3031 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI MLOAD SWAP3 PUSH0 PUSH2 0x2CBC JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3024 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x3054 DUP10 PUSH2 0x1344 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB ADDRESS SWAP2 AND SUB PUSH2 0x306F JUMPI JUMPDEST PUSH0 PUSH2 0x2DEC SWAP5 PUSH2 0x2D88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 PUSH2 0x30A3 DUP11 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x30AC DUP5 PUSH2 0x42FD JUMP JUMPDEST SWAP1 DUP7 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP2 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP5 PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2DEC SWAP6 PUSH0 SWAP3 PUSH2 0x3128 JUMPI JUMPDEST POP SWAP5 POP POP PUSH2 0x3065 JUMP JUMPDEST PUSH2 0x3131 SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x311F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 SWAP7 SWAP6 SWAP5 ADD MLOAD AND DUP11 DUP3 DUP3 EQ PUSH0 EQ PUSH2 0x340B JUMPI POP POP POP PUSH2 0x320C PUSH2 0x316E PUSH0 SWAP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 MLOAD AND PUSH2 0x4223 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x31D4 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 MLOAD AND SWAP4 DUP10 MLOAD ISZERO ISZERO DUP7 EQ PUSH2 0x33DF JUMPI PUSH2 0x31A3 PUSH2 0x3197 DUP5 PUSH2 0x1344 JUMP JUMPDEST SWAP4 JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x31B3 DUP9 PUSH2 0x10EA JUMP JUMPDEST DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE DUP13 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x38F8 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP2 PUSH2 0x33C4 JUMPI JUMPDEST POP PUSH1 0x20 DUP5 ADD MLOAD DUP13 SWAP1 DUP11 SWAP1 ISZERO PUSH2 0x33AA JUMPI DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x3283 PUSH2 0x3289 SWAP5 PUSH2 0x327C DUP16 SWAP13 SWAP12 SWAP11 SWAP9 SWAP10 PUSH2 0x32B2 SWAP11 PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP2 AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST MLOAD ISZERO PUSH2 0x32F4 JUMPI PUSH2 0x2BAB SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x2BA6 SWAP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x4341 JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x337F JUMPI JUMPDEST POP PUSH2 0x2BAB SWAP1 PUSH2 0x26FC JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x33A3 JUMPI JUMPDEST PUSH2 0x3395 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x3375 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x338B JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH2 0x33BB SWAP3 SWAP4 SWAP7 POP PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP4 DUP5 SWAP2 PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x33D8 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x239C DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST SWAP1 POP PUSH2 0x3249 JUMP JUMPDEST PUSH2 0x31A3 DUP3 PUSH32 0x0 AND SWAP4 PUSH2 0x3199 JUMP JUMPDEST PUSH2 0x349E SWAP7 POP SWAP1 PUSH2 0x3466 SWAP2 PUSH1 0x60 SWAP5 DUP12 PUSH2 0x342B PUSH1 0x80 SWAP10 SWAP9 SWAP10 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x343B DUP10 PUSH2 0x1136 JUMP JUMPDEST PUSH1 0x1 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x40 DUP10 ADD MSTORE DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3810 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2F1 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x352D JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2BB0 JUMPI PUSH2 0x2BA6 SWAP3 DUP5 PUSH2 0x3505 PUSH2 0x2BAB SWAP8 SWAP7 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x1691 JUMP JUMPDEST MSTORE AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x354A SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1CE0 JUMPI PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x34DF JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x3585 DUP2 DUP9 ADD MLOAD PUSH2 0x357F DUP9 PUSH2 0x26EB JUMP JUMPDEST SWAP1 PUSH2 0x1691 JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP2 PUSH2 0x29FC JUMP JUMPDEST PUSH2 0x35CC DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 ADD PUSH2 0x1C67 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST PUSH2 0x29E0 JUMP JUMPDEST POP POP PUSH2 0x35FC PUSH32 0x0 PUSH2 0x3A71 JUMP JUMPDEST SWAP2 PUSH2 0x3607 DUP4 MLOAD PUSH2 0x19D0 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x26BA JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x366D DUP4 DUP12 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x3688 PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x267E DUP6 DUP14 PUSH2 0x1691 JUMP JUMPDEST PUSH2 0x3692 DUP4 DUP8 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x369D DUP3 DUP11 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x364E JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x36F0 JUMPI PUSH32 0x0 TLOAD PUSH2 0x36F0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x184C SWAP3 AND PUSH2 0x40E0 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1A0E JUMPI JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x37C8 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x2FC JUMPI DUP1 MLOAD SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0xC0 PUSH2 0xF7C SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH2 0x3828 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0xE0 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x2FC JUMPI DUP5 PUSH2 0x38A8 SWAP2 DUP4 ADD PUSH2 0x1573 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1507 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x38E4 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x38D6 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3931 PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x38C5 JUMP JUMPDEST SWAP1 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x37C8 JUMPI PUSH2 0xF7C SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x2FC JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x2FC JUMPI DUP2 PUSH2 0x399A SWAP2 DUP5 ADD PUSH2 0x1573 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1507 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x39F4 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x38C5 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x37C8 JUMPI PUSH2 0xF7C SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP1 PUSH1 0xA0 DUP4 ADD SWAP5 DUP1 MLOAD PUSH2 0x3A38 DUP2 PUSH2 0x37BE JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x3A48 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 TLOAD PUSH2 0x3A7D DUP2 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0x3A8A PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1152 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH2 0x3A96 DUP3 PUSH2 0x1175 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 SWAP2 ADD CALLDATASIZE PUSH1 0x20 DUP5 ADD CALLDATACOPY DUP2 SWAP5 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3AB5 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH0 MSTORE DUP1 DUP5 PUSH0 KECCAK256 ADD TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3AD3 DUP4 DUP9 PUSH2 0x1691 JUMP JUMPDEST SWAP2 AND SWAP1 MSTORE ADD PUSH2 0x3AA7 JUMP JUMPDEST SWAP2 SWAP3 DUP1 PUSH2 0x3DD8 JUMPI JUMPDEST ISZERO PUSH2 0x3C51 JUMPI POP POP DUP1 SELFBALANCE LT PUSH2 0x3C29 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH0 SWAP2 PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x3C12 JUMPI JUMPDEST POP PUSH1 0x44 PUSH1 0x20 SWAP3 SWAP4 PUSH32 0x0 AND SWAP5 PUSH2 0x3B98 DUP4 DUP8 DUP4 PUSH2 0x4356 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3C06 JUMPI POP PUSH2 0x3BDF JUMPI POP JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3BFF JUMPI JUMPDEST PUSH2 0x3BF5 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3BEB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x3C1F SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x3B63 JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x3C61 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 PUSH32 0x0 AND SWAP5 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x3CBB DUP5 PUSH2 0x42FD JUMP JUMPDEST SWAP7 DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP8 DUP3 AND PUSH1 0x44 DUP10 ADD MSTORE SWAP2 DUP7 AND AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x3D80 SWAP6 PUSH2 0x3DC4 JUMPI JUMPDEST POP DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3C06 JUMPI POP PUSH2 0x3D99 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x3C5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3DBD JUMPI JUMPDEST PUSH2 0x3DAF DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x3D91 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DA5 JUMP JUMPDEST PUSH1 0x20 SWAP4 POP PUSH2 0x3DD1 SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 SWAP3 PUSH2 0x3D2F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP3 AND EQ PUSH2 0x3AE5 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP2 DUP1 PUSH0 MSTORE PUSH1 0x20 SWAP2 DUP4 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x3EA7 JUMPI PUSH0 NOT SWAP1 DUP2 DUP2 ADD DUP4 TLOAD DUP4 DUP1 DUP3 ADD SWAP2 DUP3 DUP5 SUB PUSH2 0x3E6A JUMPI JUMPDEST POP POP POP POP POP DUP2 TLOAD DUP2 DUP2 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1A0E JUMPI PUSH0 SWAP4 DUP2 TSTORE DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x3E77 PUSH2 0x3E87 SWAP4 DUP9 PUSH2 0x443A JUMP JUMPDEST DUP7 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 ADD ADD TLOAD SWAP2 DUP6 PUSH2 0x443A JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP1 DUP4 DUP4 DUP9 PUSH0 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE DUP6 DUP6 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH0 DUP1 DUP1 DUP4 DUP2 PUSH2 0x3E3E JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x40D8 JUMPI DUP1 PUSH2 0x40A3 JUMPI JUMPDEST ISZERO PUSH2 0x4007 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x3FF4 JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x3FF0 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x3FE5 JUMPI PUSH2 0x3FCD JUMPI JUMPDEST POP PUSH2 0x184C SWAP4 SWAP5 POP AND PUSH2 0x40E0 JUMP JUMPDEST PUSH2 0x3FD7 DUP7 SWAP2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x3FE1 JUMPI DUP5 PUSH2 0x3FC0 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x3FFF SWAP2 SWAP6 POP PUSH2 0x1106 JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x3F53 JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x409A JUMPI POP JUMP JUMPDEST PUSH2 0x184C SWAP1 PUSH2 0x1106 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x3EBF JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x4130 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x4100 PUSH2 0x2877 JUMP JUMPDEST POP ISZERO PUSH2 0x4108 JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x4171 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x4108 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x41B7 JUMPI JUMPDEST PUSH2 0x4182 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x417A JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD ISZERO PUSH0 EQ PUSH2 0x4203 JUMPI DUP1 TLOAD DUP2 PUSH0 MSTORE DUP4 DUP2 PUSH1 0x20 PUSH0 KECCAK256 ADD TSTORE PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1A0E JUMPI DUP2 TSTORE TLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x421F PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x1A01 JUMP JUMPDEST SWAP1 TSTORE JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x42F3 JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x42BC JUMPI JUMPDEST POP POP PUSH2 0x42B9 PUSH2 0x42B2 DUP6 SWAP5 PUSH2 0x19D0 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x1691 JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x42EC JUMPI JUMPDEST PUSH2 0x42D5 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x42A3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x42CB JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x4311 JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x421F PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x37B1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x44 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x10BD JUMPI PUSH2 0x43D5 SWAP4 PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x40 MSTORE AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x43CE PUSH2 0x2877 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x415C JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x4416 JUMPI JUMPDEST POP POP PUSH2 0x43EB JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 SWAP3 POP SWAP1 PUSH1 0x20 SWAP2 DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD MLOAD DUP1 ISZERO SWAP1 DUP2 ISZERO SUB PUSH2 0x2FC JUMPI PUSH0 DUP1 PUSH2 0x43E2 JUMP JUMPDEST TLOAD GT ISZERO PUSH2 0x4443 JUMPI JUMP JUMPDEST PUSH32 0xF4AE0E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV 0x23 CREATE OR PUSH0 0x2D PUSH0 0x4C 0xE8 LOG2 DUP14 SLT 0xF7 BALANCE STATICCALL 0xA6 BLOBHASH 0x2D 0xB1 GASPRICE DELEGATECALL PUSH23 0x5D562CDA5B8BBD5286EC64736F6C634300081A00330000 ","sourceMap":"1782:32167:57:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;409:14:68;1782:32167:57;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;2651:72:62;2689:23;;:::i;:::-;1782:32167:57;;;;;;:::i;:::-;;;;-1:-1:-1;;;1782:32167:57;;;;2651:72:62;:::i;:::-;;;2845:83;2883:23;;:::i;:::-;1782:32167:57;;;;;;:::i;:::-;;;;-1:-1:-1;;;1782:32167:57;;;;2845:83:62;:::i;:::-;;;7155:12;;7177:18;;;;1422:55:58;1782:32167:57;;;;;:::i;:::-;;;;;;;;;1422:55:58;:::i;:::-;;;;;;1540:56;1782:32167:57;;;;;:::i;:::-;;;;;;;;;1540:56:58;:::i;:::-;;;;;1674:61;1782:32167:57;;;;;:::i;:::-;;;;;;;;;1674:61:58;:::i;:::-;;;;;;1938:55;1814:62;1782:32167:57;;;;;:::i;:::-;;;;;;;;;1814:62:58;:::i;:::-;;;;;;1782:32167:57;;;;;;;:::i;:::-;;;;;;;1938:55:58;:::i;:::-;;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:72:62;1782:32167:57;;;;;;;;;;;;;;;;;;;;2845:83:62;1782:32167:57;;;;;;;;;;7155:12:62;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;-1:-1:-1;1782:32167:57;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;-1:-1:-1;1782:32167:57;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;-1:-1:-1;1782:32167:57;;-1:-1:-1;1782:32167:57;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;:::o;:::-;;;;;-1:-1:-1;;1782:32167:57;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1782:32167:57;;;;:::o;4125:189:58:-;4235:72;4125:189;1782:32167:57;;;;;:::i;:::-;;;;-1:-1:-1;;;1782:32167:57;;;;4235:72:58;:::i;:::-;4125:189;:::o;1276:306:44:-;;1461:67;1782:32167:57;1461:67:44;1276:306;1782:32167:57;;1461:67:44;;;;;;;1782:32167:57;;;;;;;;;;;;;;;;;-1:-1:-1;;;1782:32167:57;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;1461:67:44;;;;;;;;;:::i;:::-;1782:32167:57;1451:78:44;;-1:-1:-1;;1782:32167:57;;;;;;;;;1432:103:44;1461:67;1432:103;;1782:32167:57;;;1461:67:44;1432:103;;;;;:::i;:::-;1782:32167:57;;1405:144:44;;-1:-1:-1;;1405:170:44;;1276:306::o;1782:32167:57:-;;;;-1:-1:-1;1782:32167:57;;;;;-1:-1:-1;1782:32167:57"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":4513,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_bytes_calldata_dyn_calldata":{"entryPoint":3996,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_struct_SwapPathExactAmountIn_dyn":{"entryPoint":4804,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":5491,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_array_address_dynt_array_uint256_dyn_fromMemory":{"entryPoint":5588,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_array_uint256_dynt_uint256t_bytes_fromMemory":{"entryPoint":14460,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_available_length_bytes":{"entryPoint":4993,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":4535,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":4045,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_fromMemory":{"entryPoint":5383,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_memory_ptr_fromMemory":{"entryPoint":5453,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":4493,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SwapExactInHookParams_calldata":{"entryPoint":3786,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SwapPathExactAmountIn":{"entryPoint":4550,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_array_uint256_dynt_bytes_fromMemory":{"entryPoint":14697,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint256t_uint256t_uint256_fromMemory":{"entryPoint":14325,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint48":{"entryPoint":10406,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_uint160_address":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_array_bytes_dyn":{"entryPoint":4128,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":3836,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_array_address_dyn_array_uint256_dyn":{"entryPoint":3887,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_uint256_dyn_memory_ptr":{"entryPoint":14533,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":4091,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IERC20_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_contract_IERC20_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_struct_AddLiquidityParams":{"entryPoint":14584,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_BufferWrapOrUnwrapParams":{"entryPoint":14882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RemoveLiquidityParams":{"entryPoint":14769,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapExactInHookParams":{"entryPoint":5182,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapExactOutHookParams":{"entryPoint":5842,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapPathExactAmountIn":{"entryPoint":5047,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_VaultSwapParams":{"entryPoint":14352,"id":null,"parameterSlots":2,"returnSlots":1},"access_calldata_tail_array_struct_SwapPathExactAmountIn_calldata_dyn_calldata":{"entryPoint":14068,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_bytes_calldata":{"entryPoint":6361,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":6608,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_SwapStepLocals":{"entryPoint":14216,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_SwapPathExactAmountIn_dyn":{"entryPoint":4469,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":4965,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_bytes_calldata_dyn_calldata":{"entryPoint":6442,"id":null,"parameterSlots":3,"returnSlots":2},"calldata_array_index_access_struct_SwapPathExactAmountIn_calldata_dyn_calldata":{"entryPoint":14152,"id":null,"parameterSlots":3,"returnSlots":1},"checked_add_uint256":{"entryPoint":6657,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_int256":{"entryPoint":9963,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":14257,"id":null,"parameterSlots":2,"returnSlots":1},"decrement_int256":{"entryPoint":9980,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":10359,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":4434,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_32899":{"entryPoint":4257,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_32900":{"entryPoint":4330,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_32901":{"entryPoint":4358,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_32905":{"entryPoint":4378,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_32961":{"entryPoint":4406,"id":null,"parameterSlots":1,"returnSlots":0},"fun_add":{"entryPoint":16832,"id":9983,"parameterSlots":2,"returnSlots":1},"fun_ensureIndexWithinBounds":{"entryPoint":17466,"id":6867,"parameterSlots":2,"returnSlots":0},"fun_ensureOnlyVault":{"entryPoint":6514,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_getSingleInputArrayAndTokenIndex":{"entryPoint":16931,"id":18579,"parameterSlots":3,"returnSlots":2},"fun_nonReentrantBefore":{"entryPoint":6469,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_remove":{"entryPoint":15885,"id":10081,"parameterSlots":2,"returnSlots":1},"fun_returnEth":{"entryPoint":14001,"id":18535,"parameterSlots":1,"returnSlots":0},"fun_safeTransfer":{"entryPoint":17238,"id":39386,"parameterSlots":3,"returnSlots":0},"fun_saveSender":{"entryPoint":10425,"id":18193,"parameterSlots":1,"returnSlots":1},"fun_sendTokenOut":{"entryPoint":16048,"id":18725,"parameterSlots":4,"returnSlots":0},"fun_sendValue":{"entryPoint":16608,"id":39683,"parameterSlots":2,"returnSlots":0},"fun_settlePaths":{"entryPoint":10025,"id":13832,"parameterSlots":2,"returnSlots":0},"fun_swapExactInHook":{"entryPoint":6715,"id":12025,"parameterSlots":1,"returnSlots":3},"fun_swapExactOutHook":{"entryPoint":10491,"id":12712,"parameterSlots":1,"returnSlots":3},"fun_tAdd":{"entryPoint":16906,"id":6729,"parameterSlots":3,"returnSlots":0},"fun_tSub":{"entryPoint":17217,"id":6759,"parameterSlots":3,"returnSlots":0},"fun_takeTokenIn":{"entryPoint":15069,"id":18665,"parameterSlots":4,"returnSlots":0},"fun_toUint160":{"entryPoint":17149,"id":42734,"parameterSlots":1,"returnSlots":1},"fun_values":{"entryPoint":14961,"id":10281,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":16732,"id":39838,"parameterSlots":3,"returnSlots":1},"memory_array_index_access_struct_SwapPathExactAmountOut_dyn":{"entryPoint":5777,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_saveSenderAndManageEth":{"entryPoint":6043,"id":18160,"parameterSlots":2,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":4932,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_bool":{"entryPoint":4952,"id":null,"parameterSlots":1,"returnSlots":1},"validator_assert_enum_SwapKind":{"entryPoint":14270,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"13573":[{"length":32,"start":9577},{"length":32,"start":10064},{"length":32,"start":10586},{"length":32,"start":13784}],"13578":[{"length":32,"start":7235},{"length":32,"start":7823},{"length":32,"start":8821},{"length":32,"start":9431},{"length":32,"start":9678},{"length":32,"start":10028},{"length":32,"start":11026},{"length":32,"start":13736}],"13583":[{"length":32,"start":7491},{"length":32,"start":9621},{"length":32,"start":10108},{"length":32,"start":12942},{"length":32,"start":13577},{"length":32,"start":13867}],"13588":[{"length":32,"start":7276},{"length":32,"start":7872},{"length":32,"start":9473},{"length":32,"start":9761},{"length":32,"start":10164},{"length":32,"start":11089},{"length":32,"start":13008}],"13593":[{"length":32,"start":8863},{"length":32,"start":9727},{"length":32,"start":11138},{"length":32,"start":11862},{"length":32,"start":13833}],"18063":[{"length":32,"start":682},{"length":32,"start":1333},{"length":32,"start":6175},{"length":32,"start":10430}],"18073":[{"length":32,"start":6057},{"length":32,"start":14010}],"18092":[{"length":32,"start":34},{"length":32,"start":15102},{"length":32,"start":15844},{"length":32,"start":16216},{"length":32,"start":16559}],"18095":[{"length":32,"start":2544},{"length":32,"start":2820},{"length":32,"start":8046},{"length":32,"start":8180},{"length":32,"start":12409},{"length":32,"start":15469}],"27649":[{"length":32,"start":582},{"length":32,"start":6524},{"length":32,"start":7136},{"length":32,"start":7714},{"length":32,"start":8313},{"length":32,"start":8722},{"length":32,"start":8995},{"length":32,"start":9137},{"length":32,"start":9331},{"length":32,"start":10925},{"length":32,"start":11404},{"length":32,"start":11476},{"length":32,"start":11602},{"length":32,"start":11769},{"length":32,"start":12039},{"length":32,"start":12164},{"length":32,"start":12825},{"length":32,"start":13128},{"length":32,"start":13285},{"length":32,"start":13483},{"length":32,"start":15212},{"length":32,"start":15505},{"length":32,"start":16080},{"length":32,"start":16405},{"length":32,"start":17009}]},"linkReferences":{},"object":"60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c806308a465f614610e9d57806319c6989f1461084e578063286f580d146107b75780632950286e146106cc57806354fd4d501461058f5780635a3c3987146105665780635e01eb5a146105215780638a12a08c146104c65780638eb1b65e146103bf578063945ed33f14610344578063ac9650d8146103005763e3b5dff40361000e57346102fc576060806003193601126102fc5767ffffffffffffffff6004358181116102fc5761012d9036906004016112c4565b6101356111a1565b6044359283116102fc57610150610158933690600401610fcd565b9390916128b9565b905f5b835181101561017c57805f8761017360019488611691565b5101520161015b565b506101f06101fe610239946101b65f94886040519361019a8561111a565b30855260208501525f1960408501528660608501523691611381565b60808201526040519283917f8a12a08c0000000000000000000000000000000000000000000000000000000060208401526024830161143e565b03601f198101835282611152565b604051809481927fedfa3568000000000000000000000000000000000000000000000000000000008352602060048401526024830190610ffb565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156102f1576102a39261028e915f916102cf575b50602080825183010191016115d4565b909391926102a7575b60405193849384610f2f565b0390f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d610297565b6102eb91503d805f833e6102e38183611152565b81019061154d565b8461027e565b6040513d5f823e3d90fd5b5f80fd5b60206003193601126102fc5760043567ffffffffffffffff81116102fc576103386103326102a3923690600401610f9c565b9061179b565b60405191829182611020565b346102fc5761035236610eca565b61035a611945565b610362611972565b6103906102a3610371836128fb565b9193909461038a606061038383611344565b9201611358565b90612729565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384610f2f565b60806003193601126102fc5767ffffffffffffffff6004358181116102fc576103ec9036906004016112c4565b906103f56111b7565b906064359081116102fc576101f061048b6102399461045161041c5f953690600401610fcd565b610425336128b9565b97604051946104338661111a565b33865260208601526024356040860152151560608501523691611381565b60808201526040519283917f945ed33f000000000000000000000000000000000000000000000000000000006020840152602483016116d2565b604051809481927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610ffb565b346102fc576102a36104ef6104da36610eca565b6104e2611945565b6104ea611972565b611a3b565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009492945d60405193849384610f2f565b346102fc575f6003193601126102fc5760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b346102fc576102a36104ef61057a36610eca565b610582611945565b61058a611972565b6128fb565b346102fc575f6003193601126102fc576040515f80549060018260011c91600184169182156106c2575b60209485851084146106955785879486865291825f146106575750506001146105fe575b506105ea92500383611152565b6102a3604051928284938452830190610ffb565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061063f5750506105ea9350820101856105dd565b80548389018501528794508693909201918101610628565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858201526105ea95151560051b85010192508791506105dd9050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f16926105b9565b346102fc5760606003193601126102fc5767ffffffffffffffff6004358181116102fc576106fe9036906004016112c4565b906107076111a1565b6044359182116102fc5761072261072a923690600401610fcd565b9290916128b9565b905f5b845181101561075f57806fffffffffffffffffffffffffffffffff604061075660019489611691565b5101520161072d565b506101f06101fe8561077d5f94610239976040519361019a8561111a565b60808201526040519283917f5a3c3987000000000000000000000000000000000000000000000000000000006020840152602483016116d2565b60806003193601126102fc5767ffffffffffffffff6004358181116102fc576107e49036906004016112c4565b906107ed6111b7565b906064359081116102fc576101f061048b6102399461081461041c5f953690600401610fcd565b60808201526040519283917f08a465f60000000000000000000000000000000000000000000000000000000060208401526024830161143e565b60a06003193601126102fc5767ffffffffffffffff600435116102fc573660236004350112156102fc5767ffffffffffffffff60043560040135116102fc5736602460c060043560040135026004350101116102fc5760243567ffffffffffffffff81116102fc576108c4903690600401610f9c565b67ffffffffffffffff604435116102fc576060600319604435360301126102fc5760643567ffffffffffffffff81116102fc57610905903690600401610fcd565b60843567ffffffffffffffff81116102fc57610925903690600401610f9c565b949093610930611945565b806004356004013503610e75575f5b600435600401358110610bd25750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd6044353603018212156102fc57816044350160048101359067ffffffffffffffff82116102fc5760248260071b36039101136102fc576109e3575b6102a361033886865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d61179b565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b156102fc57604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff6004830135116102fc57600482013560071b360385136102fc5760606064890152600482013590529192869260e484019291905f905b60048101358210610b5457505050602091601f19601f865f9787956001600160a01b03610ac860246044350161118d565b16608488015260448035013560a48801526003198787030160448801528186528786013787868286010152011601030181836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156102f1576102a39361033893610b45575b8294508193506109b3565b610b4e90611106565b84610b3a565b9195945091926001600160a01b03610b6b8761118d565b168152602080870135916001600160a01b0383168093036102fc57600492600192820152610b9b604089016128a6565b65ffffffffffff8091166040830152610bb660608a016128a6565b1660608201526080809101970193019050889495939291610a97565b610be7610be082848661192a565b3691611381565b604051610bf3816110a1565b5f81526020915f838301525f60408301528281015190606060408201519101515f1a91835283830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc81850260043501360301126102fc5760405190610c60826110ea565b610c73602460c08602600435010161118d565b808352610c89604460c08702600435010161118d565b908185850152610ca2606460c08802600435010161118d565b60408581019190915260043560c08802016084810135606087015260a4810135608087015260c4013560a086015283015183519386015160ff91909116926001600160a01b0383163b156102fc575f6001600160a01b03809460e4948b98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af19081610e66575b50610e5c57610d7f612877565b906001600160a01b0381511690836001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa9182156102f1575f92610e2c575b506060015103610df75750506001905b0161093f565b805115610e045780519101fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091508381813d8311610e55575b610e448183611152565b810103126102fc5751906060610de1565b503d610e3a565b5050600190610df1565b610e6f90611106565b8a610d72565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102fc57610eab36610eca565b610eb3611945565b610ebb611972565b6103906102a361037183611a3b565b600319906020828201126102fc576004359167ffffffffffffffff83116102fc578260a0920301126102fc5760040190565b9081518082526020808093019301915f5b828110610f1b575050505090565b835185529381019392810192600101610f0d565b939290610f4490606086526060860190610efc565b936020948181036020830152602080855192838152019401905f5b818110610f7f57505050610f7c9394506040818403910152610efc565b90565b82516001600160a01b031686529487019491870191600101610f5f565b9181601f840112156102fc5782359167ffffffffffffffff83116102fc576020808501948460051b0101116102fc57565b9181601f840112156102fc5782359167ffffffffffffffff83116102fc57602083818601950101116102fc57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106110555750505050505090565b9091929394958480611091837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a51610ffb565b9801930193019194939290611045565b6060810190811067ffffffffffffffff8211176110bd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60c0810190811067ffffffffffffffff8211176110bd57604052565b67ffffffffffffffff81116110bd57604052565b60a0810190811067ffffffffffffffff8211176110bd57604052565b60e0810190811067ffffffffffffffff8211176110bd57604052565b90601f601f19910116810190811067ffffffffffffffff8211176110bd57604052565b67ffffffffffffffff81116110bd5760051b60200190565b35906001600160a01b03821682036102fc57565b602435906001600160a01b03821682036102fc57565b6044359081151582036102fc57565b9190916080818403126102fc57604090815191608083019467ffffffffffffffff95848110878211176110bd57825283956112008461118d565b8552602090818501359081116102fc57840182601f820112156102fc5780359061122982611175565b9361123686519586611152565b82855283850190846060809502840101928184116102fc578501915b8383106112745750505050508401528181013590830152606090810135910152565b84838303126102fc57875190611289826110a1565b6112928461118d565b825261129f87850161118d565b87830152888401359081151582036102fc578288928b89950152815201920191611252565b81601f820112156102fc578035916020916112de84611175565b936112ec6040519586611152565b808552838086019160051b830101928084116102fc57848301915b8483106113175750505050505090565b823567ffffffffffffffff81116102fc578691611339848480948901016111c6565b815201920191611307565b356001600160a01b03811681036102fc5790565b3580151581036102fc5790565b67ffffffffffffffff81116110bd57601f01601f191660200190565b92919261138d82611365565b9161139b6040519384611152565b8294818452818301116102fc578281602093845f960137010152565b9060808101916001600160a01b03808251168352602093848301519460808186015285518092528060a086019601925f905b83821061140b5750505050506060816040829301516040850152015191015290565b845180518216895280840151821689850152604090810151151590890152606090970196938201936001909101906113e9565b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b8382106114bd5750505050506080846040610f7c959601516060840152606081015115158284015201519060a0601f1982850301910152610ffb565b909192939583806114f8837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a516113b7565b98019201920190939291611481565b81601f820112156102fc5780519061151e82611365565b9261152c6040519485611152565b828452602083830101116102fc57815f9260208093018386015e8301015290565b906020828203126102fc57815167ffffffffffffffff81116102fc57610f7c9201611507565b9080601f830112156102fc5781519060209161158e81611175565b9361159c6040519586611152565b81855260208086019260051b8201019283116102fc57602001905b8282106115c5575050505090565b815181529083019083016115b7565b90916060828403126102fc5781519167ffffffffffffffff928381116102fc5784611600918301611573565b936020808301518581116102fc5783019082601f830112156102fc5781519161162883611175565b926116366040519485611152565b808452828085019160051b830101918583116102fc578301905b82821061167257505050509360408301519081116102fc57610f7c9201611573565b81516001600160a01b03811681036102fc578152908301908301611650565b80518210156116a55760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b8382106117515750505050506080846040610f7c959601516060840152606081015115158284015201519060a0601f1982850301910152610ffb565b9091929395838061178c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a516113b7565b98019201920190939291611715565b91906117a6336128b9565b907f000000000000000000000000000000000000000000000000000000000000000093845c6118b1576001906001865d6117df83611175565b926117ed6040519485611152565b808452601f196117fc82611175565b015f5b8181106118a05750505f5b8181106118575750505050905f61184c92945d7f0000000000000000000000000000000000000000000000000000000000000000805c9161184e575b506136b1565b565b5f905d5f611846565b806118845f8061186c610be08996888a61192a565b602081519101305af461187d612877565b903061415c565b61188e8288611691565b526118998187611691565b500161180a565b8060606020809389010152016117ff565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102fc570180359067ffffffffffffffff82116102fc576020019181360383136102fc57565b908210156116a5576119419160051b8101906118d9565b9091565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6118b1576001905d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036119a457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b906119da82611175565b6119e76040519182611152565b828152601f196119f78294611175565b0190602036910137565b91908201809211611a0e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b604081013542116126c35790611a5e611a5760208401846136f4565b90506119d0565b915f5b611a6e60208301836136f4565b90508110156125c757611a9881611a93611a8b60208601866136f4565b369391613748565b6111c6565b936040850151936001600160a01b038651169060208701518051156116a55760200151604001511515806125be575b1561256357611aec611ad886611344565b8784611ae660608a01611358565b92613add565b5f5b60208801515181101561255357611b03613788565b6020890151515f198101908111611a0e578214806020830152821582525f1461254c576060890151905b611b3b8360208c0151611691565b51604081015190919015611cee57611bd36001600160a01b03835116936001600160a01b03881685145f14611ce7576001945b60405195611b7b8761111a565b5f8752611b87816137be565b6020870152604086015260609485918d838301526080820152604051809381927f43583be500000000000000000000000000000000000000000000000000000000835260048301613a22565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94611cb0575b50506020015115611c9657816001600160a01b036020611c909360019695611c388c8c611691565b5201611c67828251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b5051167f000000000000000000000000000000000000000000000000000000000000000061420a565b01611aee565b602001519097506001600160a01b03169250600190611c90565b60209294509081611cd592903d10611ce0575b611ccd8183611152565b8101906137f5565b91505092905f611c10565b503d611cc3565b5f94611b6e565b888a6001600160a01b038495945116806001600160a01b038a16145f14612132575050815115905061206e57888a80151580612053575b611f4d575b6001600160a01b03939291611ddd82611e15978b5f95897f0000000000000000000000000000000000000000000000000000000000000000921680885282602052604088205c611f3c575b5050505b6001611d9c8983511660208401998b8b51169080158a14611f3657508391614223565b999092511694611db1608091828101906118d9565b93909460405197611dc1896110ea565b8852306020890152604088015260608701528501523691611381565b60a0820152604051809681927f21457897000000000000000000000000000000000000000000000000000000008352600483016139b1565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94611f0c575b506020015115611ee95791611ebc826001600160a01b0360019695611e7a611ee49686611691565b51611e858d8d611691565b52611eb3828251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b50511692611691565b51907f000000000000000000000000000000000000000000000000000000000000000061420a565b611c90565b98506001929450611f02906001600160a01b0392611691565b5197511692611c90565b6020919450611f2c903d805f833e611f248183611152565b810190613969565b5094919050611e52565b91614223565b611f4592614341565b5f8281611d75565b50611f5a90929192611344565b91611f648b6142fd565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156102fc576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039485166004820152306024820152908416604482015292871660648401525f8380608481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f1578a611ddd8d611e15976001600160a01b03975f95612044575b50975092505091929350611d2a565b61204d90611106565b5f612035565b5061205d82611344565b6001600160a01b0316301415611d25565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916001600160a01b0384511692803b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03949094166004850152306024850152604484018c90525f908490606490829084905af180156102f1578a611ddd8d611e15976001600160a01b03975f95612123575b50611d79565b61212c90611106565b5f61211d565b6001600160a01b0360208796949701511690898183145f146123d7576121cd925061220597915060016121735f96956001600160a01b0393848b5116614223565b509282895116956020890151151588146123ae5761219082611344565b945b6121a1608093848101906118d9565b959096604051996121b18b6110ea565b8a52166020890152604088015260608701528501523691611381565b60a0820152604051809581927f4af29ec4000000000000000000000000000000000000000000000000000000008352600483016138f8565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156102f1575f93612384575b5060200151156122c357816001600160a01b036020611ee493600196956122698c8c611691565b526122998383830151167f00000000000000000000000000000000000000000000000000000000000000006141c0565b500151167f000000000000000000000000000000000000000000000000000000000000000061420a565b60208181015191516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101859052939a50909116945081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f157612359575b50600190611c90565b602090813d831161237d575b61236f8183611152565b810103126102fc575f612350565b503d612365565b60209193506123a4903d805f833e61239c8183611152565b81019061387c565b5093919050612242565b837f00000000000000000000000000000000000000000000000000000000000000001694612192565b6001600160a01b036124669561242e9394956123f860809b8c8101906118d9565b9390946040519761240889611136565b5f8952602089015216604087015260609a8b978888015286015260a08501523691611381565b60c0820152604051809381927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613810565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94612525575b50506020015115611c9657816001600160a01b036020611ee493600196956124cb8c8c611691565b526124fb8383830151167f00000000000000000000000000000000000000000000000000000000000000006141c0565b500151167f000000000000000000000000000000000000000000000000000000000000000061420a565b6020929450908161254192903d10611ce057611ccd8183611152565b91505092905f6124a3565b5f90611b2d565b5091955090935050600101611a61565b61258d827f00000000000000000000000000000000000000000000000000000000000000006141c0565b506125b986837f000000000000000000000000000000000000000000000000000000000000000061420a565b611aec565b50321515611ac7565b50506125f27f0000000000000000000000000000000000000000000000000000000000000000613a71565b916125fd83516119d0565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b86518110156126ba576001906001600160a01b0380612663838b611691565b51165f528560205261269160405f205c8261267e858d611691565b51165f528860205260405f205c90611a01565b61269b8387611691565b526126a6828a611691565b51165f52856020525f604081205d01612644565b50949391509150565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f198201918213600116611a0e57565b7f80000000000000000000000000000000000000000000000000000000000000008114611a0e575f190190565b907f000000000000000000000000000000000000000000000000000000000000000090815c7f0000000000000000000000000000000000000000000000000000000000000000612779815c6126eb565b907f0000000000000000000000000000000000000000000000000000000000000000915b5f81121561283a575050506127b1906126eb565b917f0000000000000000000000000000000000000000000000000000000000000000925b5f8112156127ea575050505061184c906136b1565b61283590825f5261282f60205f83828220015c91828252888152886040916128228a8d8587205c906001600160a01b03891690613eb0565b8484525281205d84613e0d565b506126fc565b6127d5565b61287290825f5261282f60205f8a8785848420015c938484528181526128228c6040948587205c906001600160a01b03891690613add565b61279d565b3d156128a1573d9061288882611365565b916128966040519384611152565b82523d5f602084013e565b606090565b359065ffffffffffff821682036102fc57565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c16156128f1575050565b909192505d600190565b90604082013542116126c357612917611a5760208401846136f4565b915f5b61292760208301836136f4565b90508110156135d15761294481611a93611a8b60208601866136f4565b60608101519061297e6001600160a01b038251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b506020810151515f198101908111611a0e575b5f8112156129a45750505060010161291a565b6129b2816020840151611691565b516129bb613788565b9082156020830152602084015151805f19810111611a0e575f1901831480835261358f575b6020820151156135545760408401516001600160a01b03855116915b604081015115612c1d5783916001600160a01b036060926020612aa0970151151580612c14575b612bed575b5116906001600160a01b0385168203612be6576001915b60405192612a4c8461111a565b60018452612a59816137be565b6020840152604083015288838301526080820152604051809581927f43583be500000000000000000000000000000000000000000000000000000000835260048301613a22565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156102f15787918b915f95612bbf575b506020015115612bb057612ba69284612b02612bab979694612b7594611691565b52612b366001600160a01b0382167f00000000000000000000000000000000000000000000000000000000000000006141c0565b506001600160a01b03612b4d8460408a01516137b1565b91167f000000000000000000000000000000000000000000000000000000000000000061420a565b6001600160a01b038551167f000000000000000000000000000000000000000000000000000000000000000061420a565b6126fc565b612991565b505050612bab919350926126fc565b6020919550612bdc9060603d606011611ce057611ccd8183611152565b5095919050612ae1565b5f91612a3f565b612c0f612bf98d611344565b8d8b611ae6886040888451169301519301611358565b612a28565b50321515612a23565b906001600160a01b03825116806001600160a01b038516145f14613137575060208401516130495750604051927f967870920000000000000000000000000000000000000000000000000000000084526001600160a01b03831660048501526020846024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9384156102f1575f94613015575b5083916001600160a01b038151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015230602482015260448101959095525f8580606481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156102f157612dec955f92613006575b505b611ddd6001600160a01b03612da88b828551168360208701511690614223565b50925116918c6002612dbf608092838101906118d9565b92909360405196612dcf886110ea565b875230602088015289604088015260608701528501523691611381565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19384156102f1575f94612fe3575b506020015115612ecf57908291612bab9493612e45898d611691565b52612e7a836001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000061420a565b80831080612eb4575b612e90575b5050506126fc565b612ea6612eac93612ea08b611344565b926137b1565b91614356565b5f8080612e88565b50306001600160a01b03612ec78b611344565b161415612e83565b9450908094808210612ee8575b505050612bab906126fc565b91612ef8602092612f77946137b1565b90612f2d826001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683614356565b60405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f157612fb8575b8080612edc565b602090813d8311612fdc575b612fce8183611152565b810103126102fc575f612fb1565b503d612fc4565b6020919450612ffb903d805f833e611f248183611152565b509094919050612e29565b61300f90611106565b5f612d86565b9093506020813d602011613041575b8161303160209383611152565b810103126102fc5751925f612cbc565b3d9150613024565b909261305489611344565b6001600160a01b033091160361306f575b5f612dec94612d88565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016936130a38a611344565b6130ac846142fd565b90863b156102fc576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152306024820152918116604483015285166064820152945f908690608490829084905af19081156102f157612dec955f92613128575b50945050613065565b61313190611106565b5f61311f565b6001600160a01b036020849695940151168a8282145f1461340b5750505061320c61316e5f92846001600160a01b03885116614223565b92906131d48c6001600160a01b03808a5116938951151586146133df576131a361319784611344565b935b60808101906118d9565b929093604051966131b3886110ea565b875216602086015260408501528c6060850152600260808501523691611381565b60a0820152604051809381927f4af29ec4000000000000000000000000000000000000000000000000000000008352600483016138f8565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156102f1575f916133c4575b5060208401518c908a90156133aa5783836001600160a01b03936132836132899461327c8f9c9b9a98996132b29a611691565b5192611691565b52611691565b5191167f000000000000000000000000000000000000000000000000000000000000000061420a565b51156132f457612bab92916001600160a01b036020612ba6930151167f0000000000000000000000000000000000000000000000000000000000000000614341565b516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024810191909152602081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102f15761337f575b50612bab906126fc565b602090813d83116133a3575b6133958183611152565b810103126102fc575f613375565b503d61338b565b50509091506133bb92939650611691565b519384916132b2565b6133d891503d805f833e61239c8183611152565b9050613249565b6131a3827f00000000000000000000000000000000000000000000000000000000000000001693613199565b61349e965090613466916060948b61342b608099989993848101906118d9565b9390946040519761343b89611136565b6001895260208901526001600160a01b038b1660408901528888015286015260a08501523691611381565b60c0820152604051809581927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613810565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156102f15787918b915f9561352d575b506020015115612bb057612ba69284613505612bab9796946001600160a01b0394611691565b52167f000000000000000000000000000000000000000000000000000000000000000061420a565b602091955061354a9060603d606011611ce057611ccd8183611152565b50959190506134df565b6fffffffffffffffffffffffffffffffff6001600160a01b0360206135858188015161357f886126eb565b90611691565b51015116916129fc565b6135cc856001600160a01b0360208401611c67828251167f00000000000000000000000000000000000000000000000000000000000000006141c0565b6129e0565b50506135fc7f0000000000000000000000000000000000000000000000000000000000000000613a71565b9161360783516119d0565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b86518110156126ba576001906001600160a01b038061366d838b611691565b51165f528560205261368860405f205c8261267e858d611691565b6136928387611691565b5261369d828a611691565b51165f52856020525f604081205d0161364e565b4780156136f0577f00000000000000000000000000000000000000000000000000000000000000005c6136f0576001600160a01b0361184c92166140e0565b5050565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102fc570180359067ffffffffffffffff82116102fc57602001918160051b360383136102fc57565b91908110156116a55760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81813603018212156102fc570190565b604051906040820182811067ffffffffffffffff8211176110bd576040525f6020838281520152565b91908203918211611a0e57565b600211156137c857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b908160609103126102fc578051916040602083015192015190565b61010060c0610f7c93602084528051613828816137be565b602085015260208101516001600160a01b0380911660408601528060408301511660608601526060820151166080850152608081015160a085015260a08101518285015201519160e0808201520190610ffb565b90916060828403126102fc5781519167ffffffffffffffff928381116102fc57846138a8918301611573565b9360208201519360408301519081116102fc57610f7c9201611507565b9081518082526020808093019301915f5b8281106138e4575050505090565b8351855293810193928101926001016138d6565b602081526001600160a01b038083511660208301526020830151166040820152613931604083015160c0606084015260e08301906138c5565b9060608301516080820152608083015160058110156137c857610f7c9360a0918284015201519060c0601f1982850301910152610ffb565b916060838303126102fc5782519260208101519267ffffffffffffffff938481116102fc578161399a918401611573565b9360408301519081116102fc57610f7c9201611507565b602081526001600160a01b038083511660208301526020830151166040820152604082015160608201526139f4606083015160c0608084015260e08301906138c5565b90608083015160048110156137c857610f7c9360a0918284015201519060c0601f1982850301910152610ffb565b91909160808060a08301948051613a38816137be565b84526020810151613a48816137be565b60208501526001600160a01b036040820151166040850152606081015160608501520151910152565b90815c613a7d81611175565b613a8a6040519182611152565b818152613a9682611175565b601f196020910136602084013781945f5b848110613ab5575050505050565b600190825f5280845f20015c6001600160a01b03613ad38388611691565b9116905201613aa7565b919280613dd8575b15613c51575050804710613c29576001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001691823b156102fc57604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f915f8160048185895af180156102f157613c12575b506044602092937f00000000000000000000000000000000000000000000000000000000000000001694613b98838783614356565b8460405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115613c065750613bdf5750565b602090813d8311613bff575b613bf58183611152565b810103126102fc57565b503d613beb565b604051903d90823e3d90fd5b60209250613c1f90611106565b60445f9250613b63565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b90915f9080613c61575b50505050565b6001600160a01b0393847f00000000000000000000000000000000000000000000000000000000000000001694807f00000000000000000000000000000000000000000000000000000000000000001691613cbb846142fd565b96803b156102fc576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015297821660448901529186161660648701525f908690608490829084905af19485156102f157613d8095613dc4575b5082936020936040518097819582947f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af1908115613c065750613d99575b808080613c5b565b602090813d8311613dbd575b613daf8183611152565b810103126102fc575f613d91565b503d613da5565b60209350613dd190611106565b5f92613d2f565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690821614613ae5565b6001810191805f5260209183835260405f205c8015155f14613ea7575f1990818101835c8380820191828403613e6a575b5050505050815c81810192818411611a0e575f93815d835284832001015d5f52525f604081205d600190565b613e77613e87938861443a565b865f52885f2001015c918561443a565b835f52808383885f2001015d5f5285855260405f205d5f80808381613e3e565b50505050505f90565b5f949383156140d857806140a3575b15614007576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af180156102f157613ff4575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b15613ff05781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af18015613fe557613fcd575b5061184c939450166140e0565b613fd78691611106565b613fe15784613fc0565b8480fd5b6040513d88823e3d90fd5b5080fd5b613fff919550611106565b5f935f613f53565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102fc576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af180156102f15761409a5750565b61184c90611106565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614613ebf565b505050509050565b814710614130575f8080936001600160a01b038294165af1614100612877565b501561410857565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b90614171575080511561410857805190602001fd5b815115806141b7575b614182575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561417a565b6001810190825f528160205260405f205c155f1461420357805c815f52838160205f20015d60018101809111611a0e57815d5c915f5260205260405f205d600190565b5050505f90565b905f5260205261421f60405f2091825c611a01565b905d565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa9384156142f3575f935f956142bc575b50506142b96142b285946119d0565b9485611691565b52565b809295508194503d83116142ec575b6142d58183611152565b810103126102fc5760208251920151925f806142a3565b503d6142cb565b83513d5f823e3d90fd5b6001600160a01b0390818111614311571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b905f5260205261421f60405f2091825c6137b1565b6040519260208401907fa9059cbb0000000000000000000000000000000000000000000000000000000082526001600160a01b038094166024860152604485015260448452608084019084821067ffffffffffffffff8311176110bd576143d5935f9384936040521694519082865af16143ce612877565b908361415c565b8051908115159182614416575b50506143eb5750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81925090602091810103126102fc57602001518015908115036102fc575f806143e2565b5c111561444357565b7f0f4ae0e4000000000000000000000000000000000000000000000000000000005f5260045ffdfea26469706673582212200423f0175f2d5f4ce8a28d12f731faa6492db13af4765d562cda5b8bbd5286ec64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A465F6 EQ PUSH2 0xE9D JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x84E JUMPI DUP1 PUSH4 0x286F580D EQ PUSH2 0x7B7 JUMPI DUP1 PUSH4 0x2950286E EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0x5A3C3987 EQ PUSH2 0x566 JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0x8A12A08C EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x8EB1B65E EQ PUSH2 0x3BF JUMPI DUP1 PUSH4 0x945ED33F EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x300 JUMPI PUSH4 0xE3B5DFF4 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x2FC JUMPI PUSH1 0x60 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x12D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST PUSH2 0x135 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x2FC JUMPI PUSH2 0x150 PUSH2 0x158 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x28B9 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x17C JUMPI DUP1 PUSH0 DUP8 PUSH2 0x173 PUSH1 0x1 SWAP5 DUP9 PUSH2 0x1691 JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x15B JUMP JUMPDEST POP PUSH2 0x1F0 PUSH2 0x1FE PUSH2 0x239 SWAP5 PUSH2 0x1B6 PUSH0 SWAP5 DUP9 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x19A DUP6 PUSH2 0x111A JUMP JUMPDEST ADDRESS DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH0 NOT PUSH1 0x40 DUP6 ADD MSTORE DUP7 PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A12A08C00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x143E JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1152 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2A3 SWAP3 PUSH2 0x28E SWAP2 PUSH0 SWAP2 PUSH2 0x2CF JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x15D4 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x2A7 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0xF2F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x297 JUMP JUMPDEST PUSH2 0x2EB SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2E3 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x154D JUMP JUMPDEST DUP5 PUSH2 0x27E JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x338 PUSH2 0x332 PUSH2 0x2A3 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF9C JUMP JUMPDEST SWAP1 PUSH2 0x179B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1020 JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0x352 CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0x35A PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x362 PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x2A3 PUSH2 0x371 DUP4 PUSH2 0x28FB JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP5 PUSH2 0x38A PUSH1 0x60 PUSH2 0x383 DUP4 PUSH2 0x1344 JUMP JUMPDEST SWAP3 ADD PUSH2 0x1358 JUMP JUMPDEST SWAP1 PUSH2 0x2729 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0xF2F JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x3EC SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH2 0x3F5 PUSH2 0x11B7 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x1F0 PUSH2 0x48B PUSH2 0x239 SWAP5 PUSH2 0x451 PUSH2 0x41C PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST PUSH2 0x425 CALLER PUSH2 0x28B9 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x433 DUP7 PUSH2 0x111A JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x945ED33F00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x16D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0x2A3 PUSH2 0x4EF PUSH2 0x4DA CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0x4E2 PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x4EA PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x1A3B JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP5 SWAP3 SWAP5 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0xF2F JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0x2A3 PUSH2 0x4EF PUSH2 0x57A CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0x582 PUSH2 0x1945 JUMP JUMPDEST PUSH2 0x58A PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x28FB JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x6C2 JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x695 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x657 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x5FE JUMPI JUMPDEST POP PUSH2 0x5EA SWAP3 POP SUB DUP4 PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x2A3 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x63F JUMPI POP POP PUSH2 0x5EA SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x5DD JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x628 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x5EA SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x5DD SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x5B9 JUMP JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x6FE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH2 0x707 PUSH2 0x11A1 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x2FC JUMPI PUSH2 0x722 PUSH2 0x72A SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0x28B9 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x75F JUMPI DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x756 PUSH1 0x1 SWAP5 DUP10 PUSH2 0x1691 JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x72D JUMP JUMPDEST POP PUSH2 0x1F0 PUSH2 0x1FE DUP6 PUSH2 0x77D PUSH0 SWAP5 PUSH2 0x239 SWAP8 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x19A DUP6 PUSH2 0x111A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5A3C398700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x16D2 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x7E4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH2 0x7ED PUSH2 0x11B7 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x1F0 PUSH2 0x48B PUSH2 0x239 SWAP5 PUSH2 0x814 PUSH2 0x41C PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A465F600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x143E JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x2FC JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x2FC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x2FC JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x2FC JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x8C4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF9C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x2FC JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x905 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0x925 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF9C JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0x930 PUSH2 0x1945 JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0xE75 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0xBD2 JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2FC JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x2FC JUMPI PUSH2 0x9E3 JUMPI JUMPDEST PUSH2 0x2A3 PUSH2 0x338 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x179B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x2FC JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x2FC JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0xB54 JUMPI POP POP POP PUSH1 0x20 SWAP2 PUSH1 0x1F NOT PUSH1 0x1F DUP7 PUSH0 SWAP8 DUP8 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xAC8 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x118D JUMP JUMPDEST AND PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP9 ADD MSTORE PUSH1 0x3 NOT DUP8 DUP8 SUB ADD PUSH1 0x44 DUP9 ADD MSTORE DUP2 DUP7 MSTORE DUP8 DUP7 ADD CALLDATACOPY DUP8 DUP7 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD SUB ADD DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2A3 SWAP4 PUSH2 0x338 SWAP4 PUSH2 0xB45 JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x9B3 JUMP JUMPDEST PUSH2 0xB4E SWAP1 PUSH2 0x1106 JUMP JUMPDEST DUP5 PUSH2 0xB3A JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xB6B DUP8 PUSH2 0x118D JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x2FC JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0xB9B PUSH1 0x40 DUP10 ADD PUSH2 0x28A6 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xBB6 PUSH1 0x60 DUP11 ADD PUSH2 0x28A6 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0xA97 JUMP JUMPDEST PUSH2 0xBE7 PUSH2 0xBE0 DUP3 DUP5 DUP7 PUSH2 0x192A JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF3 DUP2 PUSH2 0x10A1 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH1 0x20 SWAP2 PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE DUP3 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0xC60 DUP3 PUSH2 0x10EA JUMP JUMPDEST PUSH2 0xC73 PUSH1 0x24 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x118D JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0xC89 PUSH1 0x44 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x118D JUMP JUMPDEST SWAP1 DUP2 DUP6 DUP6 ADD MSTORE PUSH2 0xCA2 PUSH1 0x64 PUSH1 0xC0 DUP9 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x118D JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP9 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP12 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0xE66 JUMPI JUMPDEST POP PUSH2 0xE5C JUMPI PUSH2 0xD7F PUSH2 0x2877 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP3 PUSH2 0xE2C JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0xDF7 JUMPI POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x93F JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xE04 JUMPI DUP1 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0xE55 JUMPI JUMPDEST PUSH2 0xE44 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0xDE1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xE3A JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH2 0xE6F SWAP1 PUSH2 0x1106 JUMP JUMPDEST DUP11 PUSH2 0xD72 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2FC JUMPI PUSH2 0xEAB CALLDATASIZE PUSH2 0xECA JUMP JUMPDEST PUSH2 0xEB3 PUSH2 0x1945 JUMP JUMPDEST PUSH2 0xEBB PUSH2 0x1972 JUMP JUMPDEST PUSH2 0x390 PUSH2 0x2A3 PUSH2 0x371 DUP4 PUSH2 0x1A3B JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2FC JUMPI DUP3 PUSH1 0xA0 SWAP3 SUB ADD SLT PUSH2 0x2FC JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xF1B JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xF0D JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0xF44 SWAP1 PUSH1 0x60 DUP7 MSTORE PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0xEFC JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP5 DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP1 DUP6 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xF7F JUMPI POP POP POP PUSH2 0xF7C SWAP4 SWAP5 POP PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xEFC JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 MSTORE SWAP5 DUP8 ADD SWAP5 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xF5F JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2FC JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2FC JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1055 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x1091 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0xFFB JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x1045 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10BD JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SLT PUSH2 0x2FC JUMPI PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF SWAP6 DUP5 DUP2 LT DUP8 DUP3 GT OR PUSH2 0x10BD JUMPI DUP3 MSTORE DUP4 SWAP6 PUSH2 0x1200 DUP5 PUSH2 0x118D JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI DUP5 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1229 DUP3 PUSH2 0x1175 JUMP JUMPDEST SWAP4 PUSH2 0x1236 DUP7 MLOAD SWAP6 DUP7 PUSH2 0x1152 JUMP JUMPDEST DUP3 DUP6 MSTORE DUP4 DUP6 ADD SWAP1 DUP5 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP2 DUP5 GT PUSH2 0x2FC JUMPI DUP6 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x1274 JUMPI POP POP POP POP POP DUP5 ADD MSTORE DUP2 DUP2 ADD CALLDATALOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST DUP5 DUP4 DUP4 SUB SLT PUSH2 0x2FC JUMPI DUP8 MLOAD SWAP1 PUSH2 0x1289 DUP3 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x1292 DUP5 PUSH2 0x118D JUMP JUMPDEST DUP3 MSTORE PUSH2 0x129F DUP8 DUP6 ADD PUSH2 0x118D JUMP JUMPDEST DUP8 DUP4 ADD MSTORE DUP9 DUP5 ADD CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x2FC JUMPI DUP3 DUP9 SWAP3 DUP12 DUP10 SWAP6 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1252 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP1 CALLDATALOAD SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x12DE DUP5 PUSH2 0x1175 JUMP JUMPDEST SWAP4 PUSH2 0x12EC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1152 JUMP JUMPDEST DUP1 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP3 DUP1 DUP5 GT PUSH2 0x2FC JUMPI DUP5 DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1317 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI DUP7 SWAP2 PUSH2 0x1339 DUP5 DUP5 DUP1 SWAP5 DUP10 ADD ADD PUSH2 0x11C6 JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1307 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2FC JUMPI SWAP1 JUMP JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2FC JUMPI SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x10BD JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x138D DUP3 PUSH2 0x1365 JUMP JUMPDEST SWAP2 PUSH2 0x139B PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1152 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2FC JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 DUP4 ADD MLOAD SWAP5 PUSH1 0x80 DUP2 DUP7 ADD MSTORE DUP6 MLOAD DUP1 SWAP3 MSTORE DUP1 PUSH1 0xA0 DUP7 ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x140B JUMPI POP POP POP POP POP PUSH1 0x60 DUP2 PUSH1 0x40 DUP3 SWAP4 ADD MLOAD PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP1 MLOAD DUP3 AND DUP10 MSTORE DUP1 DUP5 ADD MLOAD DUP3 AND DUP10 DUP6 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP10 ADD MSTORE PUSH1 0x60 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x13E9 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x14BD JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0xF7C SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x14F8 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x13B7 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x1481 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP1 MLOAD SWAP1 PUSH2 0x151E DUP3 PUSH2 0x1365 JUMP JUMPDEST SWAP3 PUSH2 0x152C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1152 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x2FC JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x2FC JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1507 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x158E DUP2 PUSH2 0x1175 JUMP JUMPDEST SWAP4 PUSH2 0x159C PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1152 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x15C5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x15B7 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x2FC JUMPI DUP5 PUSH2 0x1600 SWAP2 DUP4 ADD PUSH2 0x1573 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP6 DUP2 GT PUSH2 0x2FC JUMPI DUP4 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP2 PUSH2 0x1628 DUP4 PUSH2 0x1175 JUMP JUMPDEST SWAP3 PUSH2 0x1636 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1152 JUMP JUMPDEST DUP1 DUP5 MSTORE DUP3 DUP1 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x2FC JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1672 JUMPI POP POP POP POP SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1573 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x2FC JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1650 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1751 JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0xF7C SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x178C DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x13B7 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x1715 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x17A6 CALLER PUSH2 0x28B9 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x18B1 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x17DF DUP4 PUSH2 0x1175 JUMP JUMPDEST SWAP3 PUSH2 0x17ED PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1152 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x17FC DUP3 PUSH2 0x1175 JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x18A0 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1857 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x184C SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x184E JUMPI JUMPDEST POP PUSH2 0x36B1 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x1846 JUMP JUMPDEST DUP1 PUSH2 0x1884 PUSH0 DUP1 PUSH2 0x186C PUSH2 0xBE0 DUP10 SWAP7 DUP9 DUP11 PUSH2 0x192A JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x187D PUSH2 0x2877 JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x415C JUMP JUMPDEST PUSH2 0x188E DUP3 DUP9 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x1899 DUP2 DUP8 PUSH2 0x1691 JUMP JUMPDEST POP ADD PUSH2 0x180A JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x17FF JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x16A5 JUMPI PUSH2 0x1941 SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x18B1 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x19A4 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x19DA DUP3 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0x19E7 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1152 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x19F7 DUP3 SWAP5 PUSH2 0x1175 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1A0E JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x26C3 JUMPI SWAP1 PUSH2 0x1A5E PUSH2 0x1A57 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x36F4 JUMP JUMPDEST SWAP1 POP PUSH2 0x19D0 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x1A6E PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x36F4 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x25C7 JUMPI PUSH2 0x1A98 DUP2 PUSH2 0x1A93 PUSH2 0x1A8B PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x36F4 JUMP JUMPDEST CALLDATASIZE SWAP4 SWAP2 PUSH2 0x3748 JUMP JUMPDEST PUSH2 0x11C6 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP6 ADD MLOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 MLOAD AND SWAP1 PUSH1 0x20 DUP8 ADD MLOAD DUP1 MLOAD ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x25BE JUMPI JUMPDEST ISZERO PUSH2 0x2563 JUMPI PUSH2 0x1AEC PUSH2 0x1AD8 DUP7 PUSH2 0x1344 JUMP JUMPDEST DUP8 DUP5 PUSH2 0x1AE6 PUSH1 0x60 DUP11 ADD PUSH2 0x1358 JUMP JUMPDEST SWAP3 PUSH2 0x3ADD JUMP JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x2553 JUMPI PUSH2 0x1B03 PUSH2 0x3788 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1A0E JUMPI DUP3 EQ DUP1 PUSH1 0x20 DUP4 ADD MSTORE DUP3 ISZERO DUP3 MSTORE PUSH0 EQ PUSH2 0x254C JUMPI PUSH1 0x60 DUP10 ADD MLOAD SWAP1 JUMPDEST PUSH2 0x1B3B DUP4 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x1691 JUMP JUMPDEST MLOAD PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 SWAP1 ISZERO PUSH2 0x1CEE JUMPI PUSH2 0x1BD3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 EQ PUSH0 EQ PUSH2 0x1CE7 JUMPI PUSH1 0x1 SWAP5 JUMPDEST PUSH1 0x40 MLOAD SWAP6 PUSH2 0x1B7B DUP8 PUSH2 0x111A JUMP JUMPDEST PUSH0 DUP8 MSTORE PUSH2 0x1B87 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 SWAP5 DUP6 SWAP2 DUP14 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A22 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x1CB0 JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1C96 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1C90 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1C38 DUP13 DUP13 PUSH2 0x1691 JUMP JUMPDEST MSTORE ADD PUSH2 0x1C67 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST ADD PUSH2 0x1AEE JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH1 0x1 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x1CD5 SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1CE0 JUMPI JUMPDEST PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x37F5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x1C10 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CC3 JUMP JUMPDEST PUSH0 SWAP5 PUSH2 0x1B6E JUMP JUMPDEST DUP9 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 SWAP6 SWAP5 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND EQ PUSH0 EQ PUSH2 0x2132 JUMPI POP POP DUP2 MLOAD ISZERO SWAP1 POP PUSH2 0x206E JUMPI DUP9 DUP11 DUP1 ISZERO ISZERO DUP1 PUSH2 0x2053 JUMPI JUMPDEST PUSH2 0x1F4D JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP3 SWAP2 PUSH2 0x1DDD DUP3 PUSH2 0x1E15 SWAP8 DUP12 PUSH0 SWAP6 DUP10 PUSH32 0x0 SWAP3 AND DUP1 DUP9 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP9 KECCAK256 TLOAD PUSH2 0x1F3C JUMPI JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH2 0x1D9C DUP10 DUP4 MLOAD AND PUSH1 0x20 DUP5 ADD SWAP10 DUP12 DUP12 MLOAD AND SWAP1 DUP1 ISZERO DUP11 EQ PUSH2 0x1F36 JUMPI POP DUP4 SWAP2 PUSH2 0x4223 JUMP JUMPDEST SWAP10 SWAP1 SWAP3 MLOAD AND SWAP5 PUSH2 0x1DB1 PUSH1 0x80 SWAP2 DUP3 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x1DC1 DUP10 PUSH2 0x10EA JUMP JUMPDEST DUP9 MSTORE ADDRESS PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x39B1 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x1F0C JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1EE9 JUMPI SWAP2 PUSH2 0x1EBC DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1E7A PUSH2 0x1EE4 SWAP7 DUP7 PUSH2 0x1691 JUMP JUMPDEST MLOAD PUSH2 0x1E85 DUP14 DUP14 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x1EB3 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP MLOAD AND SWAP3 PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP1 PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH2 0x1C90 JUMP JUMPDEST SWAP9 POP PUSH1 0x1 SWAP3 SWAP5 POP PUSH2 0x1F02 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP8 MLOAD AND SWAP3 PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x1F2C SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1F24 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3969 JUMP JUMPDEST POP SWAP5 SWAP2 SWAP1 POP PUSH2 0x1E52 JUMP JUMPDEST SWAP2 PUSH2 0x4223 JUMP JUMPDEST PUSH2 0x1F45 SWAP3 PUSH2 0x4341 JUMP JUMPDEST PUSH0 DUP3 DUP2 PUSH2 0x1D75 JUMP JUMPDEST POP PUSH2 0x1F5A SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x1344 JUMP JUMPDEST SWAP2 PUSH2 0x1F64 DUP12 PUSH2 0x42FD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP3 DUP8 AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 DUP4 DUP1 PUSH1 0x84 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI DUP11 PUSH2 0x1DDD DUP14 PUSH2 0x1E15 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x2044 JUMPI JUMPDEST POP SWAP8 POP SWAP3 POP POP SWAP2 SWAP3 SWAP4 POP PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0x204D SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x2035 JUMP JUMPDEST POP PUSH2 0x205D DUP3 PUSH2 0x1344 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS EQ ISZERO PUSH2 0x1D25 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 MLOAD AND SWAP3 DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE ADDRESS PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP13 SWAP1 MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI DUP11 PUSH2 0x1DDD DUP14 PUSH2 0x1E15 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x2123 JUMPI JUMPDEST POP PUSH2 0x1D79 JUMP JUMPDEST PUSH2 0x212C SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP8 SWAP7 SWAP5 SWAP8 ADD MLOAD AND SWAP1 DUP10 DUP2 DUP4 EQ PUSH0 EQ PUSH2 0x23D7 JUMPI PUSH2 0x21CD SWAP3 POP PUSH2 0x2205 SWAP8 SWAP2 POP PUSH1 0x1 PUSH2 0x2173 PUSH0 SWAP7 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP12 MLOAD AND PUSH2 0x4223 JUMP JUMPDEST POP SWAP3 DUP3 DUP10 MLOAD AND SWAP6 PUSH1 0x20 DUP10 ADD MLOAD ISZERO ISZERO DUP9 EQ PUSH2 0x23AE JUMPI PUSH2 0x2190 DUP3 PUSH2 0x1344 JUMP JUMPDEST SWAP5 JUMPDEST PUSH2 0x21A1 PUSH1 0x80 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP6 SWAP1 SWAP7 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x21B1 DUP12 PUSH2 0x10EA JUMP JUMPDEST DUP11 MSTORE AND PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x38F8 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP4 PUSH2 0x2384 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x22C3 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1EE4 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x2269 DUP13 DUP13 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x2299 DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP4 SWAP11 POP SWAP1 SWAP2 AND SWAP5 POP DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2359 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x237D JUMPI JUMPDEST PUSH2 0x236F DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x2350 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2365 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP PUSH2 0x23A4 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x239C DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x387C JUMP JUMPDEST POP SWAP4 SWAP2 SWAP1 POP PUSH2 0x2242 JUMP JUMPDEST DUP4 PUSH32 0x0 AND SWAP5 PUSH2 0x2192 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2466 SWAP6 PUSH2 0x242E SWAP4 SWAP5 SWAP6 PUSH2 0x23F8 PUSH1 0x80 SWAP12 DUP13 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x2408 DUP10 PUSH2 0x1136 JUMP JUMPDEST PUSH0 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 SWAP11 DUP12 SWAP8 DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3810 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x2525 JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1C96 JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1EE4 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x24CB DUP13 DUP13 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x24FB DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x2541 SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1CE0 JUMPI PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x24A3 JUMP JUMPDEST PUSH0 SWAP1 PUSH2 0x1B2D JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP PUSH1 0x1 ADD PUSH2 0x1A61 JUMP JUMPDEST PUSH2 0x258D DUP3 PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP PUSH2 0x25B9 DUP7 DUP4 PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH2 0x1AEC JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x1AC7 JUMP JUMPDEST POP POP PUSH2 0x25F2 PUSH32 0x0 PUSH2 0x3A71 JUMP JUMPDEST SWAP2 PUSH2 0x25FD DUP4 MLOAD PUSH2 0x19D0 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x26BA JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x2663 DUP4 DUP12 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x2691 PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x267E DUP6 DUP14 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP9 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 PUSH2 0x1A01 JUMP JUMPDEST PUSH2 0x269B DUP4 DUP8 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x26A6 DUP3 DUP11 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x2644 JUMP JUMPDEST POP SWAP5 SWAP4 SWAP2 POP SWAP2 POP JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x1A0E JUMPI JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 EQ PUSH2 0x1A0E JUMPI PUSH0 NOT ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 DUP2 TLOAD PUSH32 0x0 PUSH2 0x2779 DUP2 TLOAD PUSH2 0x26EB JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP2 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x283A JUMPI POP POP POP PUSH2 0x27B1 SWAP1 PUSH2 0x26EB JUMP JUMPDEST SWAP2 PUSH32 0x0 SWAP3 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x27EA JUMPI POP POP POP POP PUSH2 0x184C SWAP1 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x2835 SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x282F PUSH1 0x20 PUSH0 DUP4 DUP3 DUP3 KECCAK256 ADD TLOAD SWAP2 DUP3 DUP3 MSTORE DUP9 DUP2 MSTORE DUP9 PUSH1 0x40 SWAP2 PUSH2 0x2822 DUP11 DUP14 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x3EB0 JUMP JUMPDEST DUP5 DUP5 MSTORE MSTORE DUP2 KECCAK256 TSTORE DUP5 PUSH2 0x3E0D JUMP JUMPDEST POP PUSH2 0x26FC JUMP JUMPDEST PUSH2 0x27D5 JUMP JUMPDEST PUSH2 0x2872 SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x282F PUSH1 0x20 PUSH0 DUP11 DUP8 DUP6 DUP5 DUP5 KECCAK256 ADD TLOAD SWAP4 DUP5 DUP5 MSTORE DUP2 DUP2 MSTORE PUSH2 0x2822 DUP13 PUSH1 0x40 SWAP5 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x3ADD JUMP JUMPDEST PUSH2 0x279D JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x28A1 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2888 DUP3 PUSH2 0x1365 JUMP JUMPDEST SWAP2 PUSH2 0x2896 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1152 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x28F1 JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP3 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x26C3 JUMPI PUSH2 0x2917 PUSH2 0x1A57 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x36F4 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x2927 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x36F4 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x35D1 JUMPI PUSH2 0x2944 DUP2 PUSH2 0x1A93 PUSH2 0x1A8B PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x36F4 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH2 0x297E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1A0E JUMPI JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x29A4 JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x291A JUMP JUMPDEST PUSH2 0x29B2 DUP2 PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1691 JUMP JUMPDEST MLOAD PUSH2 0x29BB PUSH2 0x3788 JUMP JUMPDEST SWAP1 DUP3 ISZERO PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP5 ADD MLOAD MLOAD DUP1 PUSH0 NOT DUP2 ADD GT PUSH2 0x1A0E JUMPI PUSH0 NOT ADD DUP4 EQ DUP1 DUP4 MSTORE PUSH2 0x358F JUMPI JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD ISZERO PUSH2 0x3554 JUMPI PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP2 JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD ISZERO PUSH2 0x2C1D JUMPI DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x60 SWAP3 PUSH1 0x20 PUSH2 0x2AA0 SWAP8 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x2C14 JUMPI JUMPDEST PUSH2 0x2BED JUMPI JUMPDEST MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 SUB PUSH2 0x2BE6 JUMPI PUSH1 0x1 SWAP2 JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH2 0x2A4C DUP5 PUSH2 0x111A JUMP JUMPDEST PUSH1 0x1 DUP5 MSTORE PUSH2 0x2A59 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP9 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A22 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2F1 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x2BBF JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2BB0 JUMPI PUSH2 0x2BA6 SWAP3 DUP5 PUSH2 0x2B02 PUSH2 0x2BAB SWAP8 SWAP7 SWAP5 PUSH2 0x2B75 SWAP5 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x2B36 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2B4D DUP5 PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x37B1 JUMP JUMPDEST SWAP2 AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH2 0x26FC JUMP JUMPDEST PUSH2 0x2991 JUMP JUMPDEST POP POP POP PUSH2 0x2BAB SWAP2 SWAP4 POP SWAP3 PUSH2 0x26FC JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x2BDC SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1CE0 JUMPI PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x2AE1 JUMP JUMPDEST PUSH0 SWAP2 PUSH2 0x2A3F JUMP JUMPDEST PUSH2 0x2C0F PUSH2 0x2BF9 DUP14 PUSH2 0x1344 JUMP JUMPDEST DUP14 DUP12 PUSH2 0x1AE6 DUP9 PUSH1 0x40 DUP9 DUP5 MLOAD AND SWAP4 ADD MLOAD SWAP4 ADD PUSH2 0x1358 JUMP JUMPDEST PUSH2 0x2A28 JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x2A23 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH0 EQ PUSH2 0x3137 JUMPI POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x3049 JUMPI POP PUSH1 0x40 MLOAD SWAP3 PUSH32 0x9678709200000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x20 DUP5 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x3015 JUMPI JUMPDEST POP DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH0 DUP6 DUP1 PUSH1 0x64 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2DEC SWAP6 PUSH0 SWAP3 PUSH2 0x3006 JUMPI JUMPDEST POP JUMPDEST PUSH2 0x1DDD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2DA8 DUP12 DUP3 DUP6 MLOAD AND DUP4 PUSH1 0x20 DUP8 ADD MLOAD AND SWAP1 PUSH2 0x4223 JUMP JUMPDEST POP SWAP3 MLOAD AND SWAP2 DUP13 PUSH1 0x2 PUSH2 0x2DBF PUSH1 0x80 SWAP3 DUP4 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x2DCF DUP9 PUSH2 0x10EA JUMP JUMPDEST DUP8 MSTORE ADDRESS PUSH1 0x20 DUP9 ADD MSTORE DUP10 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP5 PUSH2 0x2FE3 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2ECF JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x2BAB SWAP5 SWAP4 PUSH2 0x2E45 DUP10 DUP14 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x2E7A DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST DUP1 DUP4 LT DUP1 PUSH2 0x2EB4 JUMPI JUMPDEST PUSH2 0x2E90 JUMPI JUMPDEST POP POP POP PUSH2 0x26FC JUMP JUMPDEST PUSH2 0x2EA6 PUSH2 0x2EAC SWAP4 PUSH2 0x2EA0 DUP12 PUSH2 0x1344 JUMP JUMPDEST SWAP3 PUSH2 0x37B1 JUMP JUMPDEST SWAP2 PUSH2 0x4356 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x2E88 JUMP JUMPDEST POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2EC7 DUP12 PUSH2 0x1344 JUMP JUMPDEST AND EQ ISZERO PUSH2 0x2E83 JUMP JUMPDEST SWAP5 POP SWAP1 DUP1 SWAP5 DUP1 DUP3 LT PUSH2 0x2EE8 JUMPI JUMPDEST POP POP POP PUSH2 0x2BAB SWAP1 PUSH2 0x26FC JUMP JUMPDEST SWAP2 PUSH2 0x2EF8 PUSH1 0x20 SWAP3 PUSH2 0x2F77 SWAP5 PUSH2 0x37B1 JUMP JUMPDEST SWAP1 PUSH2 0x2F2D DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH2 0x4356 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2FB8 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x2EDC JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2FDC JUMPI JUMPDEST PUSH2 0x2FCE DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x2FB1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FC4 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x2FFB SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1F24 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST POP SWAP1 SWAP5 SWAP2 SWAP1 POP PUSH2 0x2E29 JUMP JUMPDEST PUSH2 0x300F SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x2D86 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3041 JUMPI JUMPDEST DUP2 PUSH2 0x3031 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI MLOAD SWAP3 PUSH0 PUSH2 0x2CBC JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3024 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x3054 DUP10 PUSH2 0x1344 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB ADDRESS SWAP2 AND SUB PUSH2 0x306F JUMPI JUMPDEST PUSH0 PUSH2 0x2DEC SWAP5 PUSH2 0x2D88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 PUSH2 0x30A3 DUP11 PUSH2 0x1344 JUMP JUMPDEST PUSH2 0x30AC DUP5 PUSH2 0x42FD JUMP JUMPDEST SWAP1 DUP7 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP2 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP5 PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x2DEC SWAP6 PUSH0 SWAP3 PUSH2 0x3128 JUMPI JUMPDEST POP SWAP5 POP POP PUSH2 0x3065 JUMP JUMPDEST PUSH2 0x3131 SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 PUSH2 0x311F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 SWAP7 SWAP6 SWAP5 ADD MLOAD AND DUP11 DUP3 DUP3 EQ PUSH0 EQ PUSH2 0x340B JUMPI POP POP POP PUSH2 0x320C PUSH2 0x316E PUSH0 SWAP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 MLOAD AND PUSH2 0x4223 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x31D4 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 MLOAD AND SWAP4 DUP10 MLOAD ISZERO ISZERO DUP7 EQ PUSH2 0x33DF JUMPI PUSH2 0x31A3 PUSH2 0x3197 DUP5 PUSH2 0x1344 JUMP JUMPDEST SWAP4 JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x31B3 DUP9 PUSH2 0x10EA JUMP JUMPDEST DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE DUP13 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x38F8 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2F1 JUMPI PUSH0 SWAP2 PUSH2 0x33C4 JUMPI JUMPDEST POP PUSH1 0x20 DUP5 ADD MLOAD DUP13 SWAP1 DUP11 SWAP1 ISZERO PUSH2 0x33AA JUMPI DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x3283 PUSH2 0x3289 SWAP5 PUSH2 0x327C DUP16 SWAP13 SWAP12 SWAP11 SWAP9 SWAP10 PUSH2 0x32B2 SWAP11 PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP2 AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST MLOAD ISZERO PUSH2 0x32F4 JUMPI PUSH2 0x2BAB SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x2BA6 SWAP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x4341 JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x337F JUMPI JUMPDEST POP PUSH2 0x2BAB SWAP1 PUSH2 0x26FC JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x33A3 JUMPI JUMPDEST PUSH2 0x3395 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x3375 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x338B JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH2 0x33BB SWAP3 SWAP4 SWAP7 POP PUSH2 0x1691 JUMP JUMPDEST MLOAD SWAP4 DUP5 SWAP2 PUSH2 0x32B2 JUMP JUMPDEST PUSH2 0x33D8 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x239C DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST SWAP1 POP PUSH2 0x3249 JUMP JUMPDEST PUSH2 0x31A3 DUP3 PUSH32 0x0 AND SWAP4 PUSH2 0x3199 JUMP JUMPDEST PUSH2 0x349E SWAP7 POP SWAP1 PUSH2 0x3466 SWAP2 PUSH1 0x60 SWAP5 DUP12 PUSH2 0x342B PUSH1 0x80 SWAP10 SWAP9 SWAP10 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x18D9 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x343B DUP10 PUSH2 0x1136 JUMP JUMPDEST PUSH1 0x1 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x40 DUP10 ADD MSTORE DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x1381 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3810 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2F1 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x352D JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2BB0 JUMPI PUSH2 0x2BA6 SWAP3 DUP5 PUSH2 0x3505 PUSH2 0x2BAB SWAP8 SWAP7 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x1691 JUMP JUMPDEST MSTORE AND PUSH32 0x0 PUSH2 0x420A JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x354A SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1CE0 JUMPI PUSH2 0x1CCD DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x34DF JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x3585 DUP2 DUP9 ADD MLOAD PUSH2 0x357F DUP9 PUSH2 0x26EB JUMP JUMPDEST SWAP1 PUSH2 0x1691 JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP2 PUSH2 0x29FC JUMP JUMPDEST PUSH2 0x35CC DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 ADD PUSH2 0x1C67 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x41C0 JUMP JUMPDEST PUSH2 0x29E0 JUMP JUMPDEST POP POP PUSH2 0x35FC PUSH32 0x0 PUSH2 0x3A71 JUMP JUMPDEST SWAP2 PUSH2 0x3607 DUP4 MLOAD PUSH2 0x19D0 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x26BA JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x366D DUP4 DUP12 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x3688 PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x267E DUP6 DUP14 PUSH2 0x1691 JUMP JUMPDEST PUSH2 0x3692 DUP4 DUP8 PUSH2 0x1691 JUMP JUMPDEST MSTORE PUSH2 0x369D DUP3 DUP11 PUSH2 0x1691 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x364E JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x36F0 JUMPI PUSH32 0x0 TLOAD PUSH2 0x36F0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x184C SWAP3 AND PUSH2 0x40E0 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x2FC JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x2FC JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x10BD JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1A0E JUMPI JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x37C8 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x2FC JUMPI DUP1 MLOAD SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0xC0 PUSH2 0xF7C SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH2 0x3828 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0xE0 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xFFB JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x2FC JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x2FC JUMPI DUP5 PUSH2 0x38A8 SWAP2 DUP4 ADD PUSH2 0x1573 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1507 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x38E4 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x38D6 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3931 PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x38C5 JUMP JUMPDEST SWAP1 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x37C8 JUMPI PUSH2 0xF7C SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x2FC JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x2FC JUMPI DUP2 PUSH2 0x399A SWAP2 DUP5 ADD PUSH2 0x1573 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2FC JUMPI PUSH2 0xF7C SWAP3 ADD PUSH2 0x1507 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x39F4 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x38C5 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x37C8 JUMPI PUSH2 0xF7C SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0xFFB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP1 PUSH1 0xA0 DUP4 ADD SWAP5 DUP1 MLOAD PUSH2 0x3A38 DUP2 PUSH2 0x37BE JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x3A48 DUP2 PUSH2 0x37BE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 TLOAD PUSH2 0x3A7D DUP2 PUSH2 0x1175 JUMP JUMPDEST PUSH2 0x3A8A PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1152 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH2 0x3A96 DUP3 PUSH2 0x1175 JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 SWAP2 ADD CALLDATASIZE PUSH1 0x20 DUP5 ADD CALLDATACOPY DUP2 SWAP5 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3AB5 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH0 MSTORE DUP1 DUP5 PUSH0 KECCAK256 ADD TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3AD3 DUP4 DUP9 PUSH2 0x1691 JUMP JUMPDEST SWAP2 AND SWAP1 MSTORE ADD PUSH2 0x3AA7 JUMP JUMPDEST SWAP2 SWAP3 DUP1 PUSH2 0x3DD8 JUMPI JUMPDEST ISZERO PUSH2 0x3C51 JUMPI POP POP DUP1 SELFBALANCE LT PUSH2 0x3C29 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH0 SWAP2 PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x3C12 JUMPI JUMPDEST POP PUSH1 0x44 PUSH1 0x20 SWAP3 SWAP4 PUSH32 0x0 AND SWAP5 PUSH2 0x3B98 DUP4 DUP8 DUP4 PUSH2 0x4356 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3C06 JUMPI POP PUSH2 0x3BDF JUMPI POP JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3BFF JUMPI JUMPDEST PUSH2 0x3BF5 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3BEB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x3C1F SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x3B63 JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x3C61 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 PUSH32 0x0 AND SWAP5 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x3CBB DUP5 PUSH2 0x42FD JUMP JUMPDEST SWAP7 DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP8 DUP3 AND PUSH1 0x44 DUP10 ADD MSTORE SWAP2 DUP7 AND AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x3D80 SWAP6 PUSH2 0x3DC4 JUMPI JUMPDEST POP DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3C06 JUMPI POP PUSH2 0x3D99 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x3C5B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3DBD JUMPI JUMPDEST PUSH2 0x3DAF DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH0 PUSH2 0x3D91 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3DA5 JUMP JUMPDEST PUSH1 0x20 SWAP4 POP PUSH2 0x3DD1 SWAP1 PUSH2 0x1106 JUMP JUMPDEST PUSH0 SWAP3 PUSH2 0x3D2F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP3 AND EQ PUSH2 0x3AE5 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP2 DUP1 PUSH0 MSTORE PUSH1 0x20 SWAP2 DUP4 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x3EA7 JUMPI PUSH0 NOT SWAP1 DUP2 DUP2 ADD DUP4 TLOAD DUP4 DUP1 DUP3 ADD SWAP2 DUP3 DUP5 SUB PUSH2 0x3E6A JUMPI JUMPDEST POP POP POP POP POP DUP2 TLOAD DUP2 DUP2 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1A0E JUMPI PUSH0 SWAP4 DUP2 TSTORE DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x3E77 PUSH2 0x3E87 SWAP4 DUP9 PUSH2 0x443A JUMP JUMPDEST DUP7 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 ADD ADD TLOAD SWAP2 DUP6 PUSH2 0x443A JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP1 DUP4 DUP4 DUP9 PUSH0 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE DUP6 DUP6 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH0 DUP1 DUP1 DUP4 DUP2 PUSH2 0x3E3E JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x40D8 JUMPI DUP1 PUSH2 0x40A3 JUMPI JUMPDEST ISZERO PUSH2 0x4007 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x3FF4 JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x3FF0 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x3FE5 JUMPI PUSH2 0x3FCD JUMPI JUMPDEST POP PUSH2 0x184C SWAP4 SWAP5 POP AND PUSH2 0x40E0 JUMP JUMPDEST PUSH2 0x3FD7 DUP7 SWAP2 PUSH2 0x1106 JUMP JUMPDEST PUSH2 0x3FE1 JUMPI DUP5 PUSH2 0x3FC0 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x3FFF SWAP2 SWAP6 POP PUSH2 0x1106 JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x3F53 JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH2 0x409A JUMPI POP JUMP JUMPDEST PUSH2 0x184C SWAP1 PUSH2 0x1106 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x3EBF JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x4130 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x4100 PUSH2 0x2877 JUMP JUMPDEST POP ISZERO PUSH2 0x4108 JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x4171 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x4108 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x41B7 JUMPI JUMPDEST PUSH2 0x4182 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x417A JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD ISZERO PUSH0 EQ PUSH2 0x4203 JUMPI DUP1 TLOAD DUP2 PUSH0 MSTORE DUP4 DUP2 PUSH1 0x20 PUSH0 KECCAK256 ADD TSTORE PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1A0E JUMPI DUP2 TSTORE TLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x421F PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x1A01 JUMP JUMPDEST SWAP1 TSTORE JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x42F3 JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x42BC JUMPI JUMPDEST POP POP PUSH2 0x42B9 PUSH2 0x42B2 DUP6 SWAP5 PUSH2 0x19D0 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x1691 JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x42EC JUMPI JUMPDEST PUSH2 0x42D5 DUP2 DUP4 PUSH2 0x1152 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x42A3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x42CB JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x4311 JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x421F PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x37B1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x44 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x10BD JUMPI PUSH2 0x43D5 SWAP4 PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x40 MSTORE AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x43CE PUSH2 0x2877 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x415C JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x4416 JUMPI JUMPDEST POP POP PUSH2 0x43EB JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 SWAP3 POP SWAP1 PUSH1 0x20 SWAP2 DUP2 ADD SUB SLT PUSH2 0x2FC JUMPI PUSH1 0x20 ADD MLOAD DUP1 ISZERO SWAP1 DUP2 ISZERO SUB PUSH2 0x2FC JUMPI PUSH0 DUP1 PUSH2 0x43E2 JUMP JUMPDEST TLOAD GT ISZERO PUSH2 0x4443 JUMPI JUMP JUMPDEST PUSH32 0xF4AE0E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV 0x23 CREATE OR PUSH0 0x2D PUSH0 0x4C 0xE8 LOG2 DUP14 SLT 0xF7 BALANCE STATICCALL 0xA6 BLOBHASH 0x2D 0xB1 GASPRICE DELEGATECALL PUSH23 0x5D562CDA5B8BBD5286EC64736F6C634300081A00330000 ","sourceMap":"1782:32167:57:-:0;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;-1:-1:-1;;;;;16367:5:62;1782:32167:57;16345:10:62;:28;16341:79;;1782:32167:57;16341:79:62;16396:13;;;1782:32167:57;16396:13:62;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;5435:19:62;1782:32167:57;;;;;;:::i;:::-;5435:19:62;;;;:::i;:::-;31554:13:57;1782:32167;31587:3;1782:32167;;31569:16;;;;;31606:8;1782:32167;31606:8;;1782:32167;31606:8;;;:::i;:::-;;:21;1782:32167;;31554:13;;31569:16;;31733:413;;1782:32167;31569:16;1782:32167;;31569:16;;1782:32167;;;;;;:::i;:::-;31899:4;1782:32167;;;31831:293;;1782:32167;-1:-1:-1;;1782:32167:57;31831:293;;1782:32167;31831:293;1782:32167;31831:293;;1782:32167;;;;:::i;:::-;31831:293;;;1782:32167;;;31733:413;;;;1782:32167;31733:413;;;1782:32167;31733:413;;;:::i;:::-;;-1:-1:-1;;31733:413:57;;;;;;:::i;:::-;1782:32167;;31699:465;;;;1782:32167;31699:465;;1782:32167;;31699:465;;1782:32167;;;;;;:::i;:::-;31699:465;:6;;-1:-1:-1;;;;;31699:6:57;1782:32167;31699:465;;;;;;;1782:32167;31699:465;31671:558;31699:465;1782:32167;31699:465;;;31549:93;1782:32167;;;;;31671:558;;;;;;:::i;:::-;6887:82:62;;;;;;31549:93:57;1782:32167;;;;;;;:::i;:::-;;;;6887:82:62;1782:32167:57;16677:12:62;3051:52:52;6887:82:62;;31699:465:57;;;;;;1782:32167;31699:465;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;1782:32167;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;11039:22:62;1782:32167:57;;;;;;;;:::i;:::-;11039:22:62;;:::i;:::-;1782:32167:57;;;;;;;:::i;:::-;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;17491:16:57;1782:32167;17427:25;;;:::i;:::-;17476:13;;;;17491:16;1782:32167;17476:13;;;:::i;:::-;17491:16;;;:::i;:::-;;;:::i;:::-;1782:32167;551:66:50;3051:52:52;1782:32167:57;;;;;;;:::i;:::-;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;3911:402;;1782:32167;;;;;;;;;;;:::i;:::-;5435:19:62;3699:10:57;5435:19:62;:::i;:::-;1782:32167:57;;;;;;;:::i;:::-;3699:10;1782:32167;;;4005:286;;1782:32167;;;;4005:286;;1782:32167;;;;4005:286;;1782:32167;;;;:::i;:::-;;4005:286;;1782:32167;;;3911:402;;;;1782:32167;3911:402;;;1782:32167;3911:402;;;:::i;:::-;1782:32167;;3876:455;;;;1782:32167;3876:455;;1782:32167;;3876:455;;1782:32167;;;;;;:::i;:::-;;;;;33580:24;1782:32167;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;33580:24:57;:::i;:::-;1782:32167;551:66:50;3051:52:52;;;;1782:32167:57;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1782:32167:57;;;;;;16677:12:62;2295:53:52;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;33915:25;1782:32167;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;33915:25:57;:::i;1782:32167::-;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;-1:-1:-1;1782:32167:57;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;5435:19:62;1782:32167:57;;;;;;:::i;:::-;5435:19:62;;;;:::i;:::-;32579:13:57;1782:32167;32612:3;1782:32167;;32594:16;;;;;32631:8;1782:32167;;32631:8;1782:32167;32631:8;;;:::i;:::-;;:20;1782:32167;;32579:13;;32594:16;;32767:415;;32594:16;1782:32167;;32594:16;1782:32167;32594:16;1782:32167;;;;;;:::i;:::-;32866:294;;;1782:32167;;;32767:415;;;;1782:32167;32767:415;;;1782:32167;32767:415;;;:::i;1782:32167::-;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;2960:400;;1782:32167;;;;;;;;;;;:::i;:::-;;3053:285;;1782:32167;;;2960:400;;;;1782:32167;2960:400;;;1782:32167;2960:400;;;:::i;1782:32167::-;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;:::i;:::-;1782:32167:57;;;;;;1500:6:40;1496:65;;1782:32167:57;8604:22:62;1782:32167:57;;;;;8604:22:62;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10022:860:62;;8584:1371;1782:32167:57;11039:22:62;3051:52:52;;1782:32167:57;551:66:50;3051:52:52;11039:22:62;:::i;10022:860::-;-1:-1:-1;;;;;10812:8:62;;;;1782:32167:57;10812:59:62;;;;1782:32167:57;;10812:59:62;1782:32167:57;10812:59:62;;10828:10;1782:32167:57;10812:59:62;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;10812:59:62;;:8;;-1:-1:-1;;;;;10812:8:62;1782:32167:57;10812:59:62;;;;;;;1782:32167:57;10812:59:62;11039:22;10812:59;;;1782:32167:57;10022:860:62;;;;;;;;10812:59;;;;:::i;:::-;;;;1782:32167:57;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8628:3:62;1782:32167:57;8672:19:62;;;;;:::i;:::-;1782:32167:57;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11519:180:62;;;;;1782:32167:57;;11519:180:62;;;;;;1782:32167:57;11519:180:62;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;8876:338:62;;;;1782:32167:57;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;8876:338:62;;;;;1782:32167:57;8876:338:62;;1782:32167:57;;8876:338:62;;1782:32167:57;8989:4:62;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;;;8628:3;-1:-1:-1;8856:1089:62;;9341:604;;:::i;:::-;1782:32167:57;-1:-1:-1;;;;;1782:32167:57;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;9614:75:62;;;;1782:32167:57;9614:75:62;;1782:32167:57;9614:75:62;;1782:32167:57;8989:4:62;1782:32167:57;;;;9614:75:62;;;;;;;1782:32167:57;9614:75:62;;;8856:1089;1782:32167:57;;;;9614:100:62;9589:342;;8856:1089;;1782:32167:57;8856:1089:62;;1782:32167:57;8589:13:62;;9589:342;1782:32167:57;;1881:21:42;:17;;2008:160;;;;;1877:362;2205:23;1782:32167:57;2205:23:42;1782:32167:57;;2205:23:42;9614:75:62;;;;;;;;;;;;;;;;;:::i;:::-;;;1782:32167:57;;;;;;;9614:75:62;;;;;;;8856:1089;;;1782:32167:57;8856:1089:62;;;8876:338;;;;:::i;:::-;;;;1496:65:40;1529:21;1782:32167:57;1529:21:40;1782:32167:57;;1529:21:40;1782:32167:57;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;4769:16:57;1782:32167;4706:24;;;:::i;1782:32167::-;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1782:32167:57;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1782:32167:57;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1782:32167:57;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;3524:17:62;1782:32167:57;;3524:17:62;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3524:17:62;;1782:32167:57;3524:17:62;;;1782:32167:57;3524:17:62;;;;;;;;;;1782:32167:57;;;;;;;;3524:17:62;;1782:32167:57;3524:17:62;;;;;;1782:32167:57;;3524:17:62;;;;;;;;;;;;;;;;;;;;;;;;;1782:32167:57;3524:17:62;;;;1782:32167:57;;3524:17:62;;;1782:32167:57;3524:17:62;;;;-1:-1:-1;;3524:17:62;;;;;;;;:::i;:::-;;;;;;;;1782:32167:57;3524:17:62;;;;;;;;;;;1782:32167:57;:::i;:::-;;;3524:17:62;;;;;;;;;;5703:590;;;5771:23;5783:10;5771:23;:::i;:::-;16826:26;;2806:53:52;;;5897:100:62;;6090:4;3051:52:52;6090:4:62;3051:52:52;;1782:32167:57;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1782:32167:57;;;:::i;:::-;;-1:-1:-1;1782:32167:57;;;;;;11122:13:62;;-1:-1:-1;11137:15:62;;;;;;6105:1;;;;;-1:-1:-1;6279:6:62;6105:1;3051:52:52;;16677:12:62;2295:53:52;;6887:82:62;;;11117:132;6279:6;;:::i;:::-;5703:590::o;6887:82::-;-1:-1:-1;3051:52:52;;6887:82:62;;;11154:3;11230:7;4297:55:99;-1:-1:-1;11230:7:62;1782:32167:57;11230:7:62;;;;;;:::i;1782:32167:57:-;;4255:25:99;;;;11223:4:62;4255:25:99;;;;:::i;:::-;11223:4:62;;4297:55:99;:::i;:::-;11173:65:62;;;;:::i;:::-;;;;;;:::i;:::-;;1782:32167:57;11122:13:62;;1782:32167:57;;;;;;;;;;;;;5897:100:62;5956:30;-1:-1:-1;5956:30:62;;-1:-1:-1;5956:30:62;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;1192:349:50:-;551:66;2295:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;509:165:68:-;-1:-1:-1;;;;;586:6:68;1782:32167:57;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;1782:32167:57;;616:41:68;;1782:32167:57;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;1782:32167:57;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;4799:1054;5170:15;;;1782:32167;5152:15;:33;5148:85;;6036:12;6022:34;6036:12;;;;;;:::i;:::-;6022:34;;;:::i;:::-;6072:13;-1:-1:-1;6112:3:57;6091:12;6036;;;6091;;:::i;:::-;6087:23;;;;;;;1782:32167;6036:12;6167:15;:12;6036;;;6167;;:::i;:::-;1782:32167;;;6167:15;:::i;:::-;1782:32167;:::i;:::-;6429:18;5170:15;6429:18;;1782:32167;;-1:-1:-1;;;;;1782:32167:57;;;6513:10;6036:12;6513:10;;;1782:32167;;3524:17:62;;;6036:12:57;3524:17:62;6513:13:57;5170:15;6513:22;1782:32167;;;;6513:68;;6112:3;6509:776;;;6763:16;6716:13;;;:::i;:::-;6763:16;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;7342:3:57;6036:12;6513:10;;7323;1782:32167;7319:21;;;;;1782:32167;;:::i;:::-;6036:12;6513:10;;7445;1782:32167;-1:-1:-1;;1782:32167:57;;;;;;;7440:26;;7415:21;6036:12;7415:21;;1782:32167;7511:6;;1782:32167;;7638:163;1782:32167;;;7702:17;;;1782:32167;7638:163;;7846:13;6513:10;6036:12;6513:10;;7846;:13;:::i;:::-;;5170:15;7882:13;;1782:32167;7846:13;;7882;1782:32167;5170:15;;7945:553;-1:-1:-1;;;;;1782:32167:57;;;8122:149;-1:-1:-1;;;;;1782:32167:57;;8122:33;;:149;1782:32167;;;;8122:149;;5170:15;1782:32167;;;;;:::i;:::-;-1:-1:-1;1782:32167:57;;;;;:::i;:::-;6036:12;8003:473;;1782:32167;5170:15;8003:473;;1782:32167;8003:473;;;;;;;;1782:32167;8003:473;;;1782:32167;5170:15;1782:32167;7945:553;;;;1782:32167;7945:553;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;7945:6:57;1782:32167;7945:553;;;;;;;-1:-1:-1;7945:553:57;;;8122:149;-1:-1:-1;;6036:12:57;7415:21;1782:32167;;6036:12;;8787:29;-1:-1:-1;;;;;6036:12:57;8978:9;8787:29;1782:32167;8787:29;;;;;;:::i;:::-;1782:32167;8878:13;8842:51;1782:32167;;;;2875:28:58;8842:51:57;:::i;:::-;;1782:32167;;3474:36:58;8978:9:57;:::i;:::-;1782:32167;7304:13;;8521:801;6036:12;9286:13;1782:32167;9121:29;;-1:-1:-1;;;;;;1782:32167:57;;-1:-1:-1;1782:32167:57;;8521:801;;7945:553;6036:12;7945:553;;;;;;;;;-1:-1:-1;7945:553:57;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;8122:149;-1:-1:-1;8122:149:57;;;7878:9220;1782:32167;;-1:-1:-1;;;;;1782:32167:57;;;;;;-1:-1:-1;;;;;1782:32167:57;;9350:33;9346:7752;9350:33;;;-1:-1:-1;;1782:32167:57;;;;-1:-1:-1;9803:22:57;;9857:21;;;;;:55;;;9799:1644;9853:914;;9799:1644;-1:-1:-1;;;;;3211:35:58;;;1782:32167:57;3211:35:58;12242:463:57;3211:35:58;;-1:-1:-1;3211:35:58;;;1782:32167:57;;2870:125:51;;;;6036:12:57;2870:125:51;5170:15:57;2870:125:51;;2295:53:52;10885:196:57;;9799:1644;;;;;1782:32167;11690:191;1782:32167;;;;6036:12;11784:13;;1782:32167;;;;;11823:36;:17;;;;;;:36;;;11690:191;:::i;:::-;1782:32167;;;;;12641:15;;;;;;;;;:::i;:::-;1782:32167;;;5170:15;1782:32167;;;;;:::i;:::-;;;12401:4;6036:12;12290:393;;1782:32167;5170:15;12290:393;;1782:32167;12290:393;;;1782:32167;12290:393;;1782:32167;;;;:::i;:::-;12290:393;;;1782:32167;5170:15;1782:32167;12242:463;;;;1782:32167;12242:463;;1782:32167;12242:463;;;:::i;:::-;;:6;;-1:-1:-1;;;;;12242:6:57;1782:32167;12242:463;;;;;;;-1:-1:-1;;12242:463:57;;11823:36;-1:-1:-1;6036:12:57;7415:21;1782:32167;;6036:12;;13014:22;13198;13014;-1:-1:-1;;;;;1782:32167:57;13014:22;;;13198;13014;;;:::i;:::-;1782:32167;12994:42;;;;:::i;:::-;1782:32167;13062:51;1782:32167;;;;2875:28:58;13062:51:57;:::i;:::-;;1782:32167;;13198:22;;:::i;:::-;1782:32167;3474:36:58;;13198:22:57;:::i;:::-;7878:9220;;12728:840;13374:22;;1782:32167;13374:22;;;;;-1:-1:-1;;;;;13374:22:57;;:::i;:::-;1782:32167;;;;12728:840;7878:9220;;12242:463;6036:12;12242:463;;;;;;;-1:-1:-1;12242:463:57;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;12242:463:57;;;-1:-1:-1;12242:463:57;;11823:36;;11690:191;:::i;10885:196::-;11036:17;;;:::i;:::-;10885:196;;;;;9853:914;10533:13;;;;;;;:::i;:::-;10627:29;;;;:::i;:::-;-1:-1:-1;;;;;10478:8:57;1782:32167;10478:262;;;;5170:15;1782:32167;;10478:262;;-1:-1:-1;;;;;1782:32167:57;;;10478:262;;;1782:32167;10588:4;1782:32167;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;10478:262;:8;;-1:-1:-1;;;;;10478:8:57;1782:32167;10478:262;;;;;;;1782:32167;10478:262;12242:463;10478:262;-1:-1:-1;;;;;10478:262:57;-1:-1:-1;10478:262:57;;;9853:914;;;;;;;;;;;;;10478:262;;;;:::i;:::-;;;;9857:55;9882:13;;;;:::i;:::-;-1:-1:-1;;;;;1782:32167:57;9907:4;9882:30;;9857:55;;9799:1644;11354:6;-1:-1:-1;;;;;11354:6:57;1782:32167;;-1:-1:-1;;;;;1782:32167:57;;;11354:66;;;;;;5170:15;1782:32167;;11354:66;;-1:-1:-1;;;;;1782:32167:57;;;;11354:66;;;1782:32167;11395:4;1782:32167;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;-1:-1:-1;;11354:66:57;;;;;;;1782:32167;11354:66;12242:463;11354:66;-1:-1:-1;;;;;11354:66:57;-1:-1:-1;11354:66:57;;;9799:1644;;;;11354:66;;;;:::i;:::-;;;;9346:7752;-1:-1:-1;;;;;6036:12:57;13604:13;;;;;1782:32167;;13596:35;;;;;13592:3506;13596:35;;;1782:32167;;;14008:482;1782:32167;;;;13786:170;-1:-1:-1;1782:32167:57;;-1:-1:-1;;;;;1782:32167:57;;;;;13786:170;:::i;:::-;1782:32167;;;;;;7415:21;6036:12;7415:21;;1782:32167;;;14151:55;;;;14175:13;;;:::i;:::-;14151:55;;14426:15;;;;;;;;:::i;:::-;1782:32167;;;5170:15;1782:32167;;;;;:::i;:::-;;;;6036:12;14053:415;;1782:32167;5170:15;14053:415;;1782:32167;14053:415;;;1782:32167;14053:415;;1782:32167;;;;:::i;:::-;14053:415;;;1782:32167;5170:15;1782:32167;14008:482;;;;1782:32167;14008:482;;;;;;:::i;:::-;;:6;;-1:-1:-1;;;;;14008:6:57;1782:32167;14008:482;;;;;;;-1:-1:-1;;14008:482:57;;14151:55;-1:-1:-1;6036:12:57;7415:21;1782:32167;;6036:12;;14908:32;-1:-1:-1;;;;;6036:12:57;15095;14908:32;1782:32167;14908:32;;;;;;:::i;:::-;1782:32167;14966:51;13604:13;;;;1782:32167;;2875:28:58;14966:51:57;:::i;:::-;;13604:13;1782:32167;;4084:27:58;15095:12:57;:::i;14513:1118::-;6036:12;13604:13;;;1782:32167;;;5170:15;1782:32167;;15562:46;;-1:-1:-1;;;;;1782:32167:57;;;14008:482;15562:46;;1782:32167;;;;;;;;;-1:-1:-1;1782:32167:57;;;;-1:-1:-1;1782:32167:57;;;;;15562:46;14008:6;-1:-1:-1;;;;;;14008:6:57;1782:32167;15562:46;;;;;;;;14513:1118;;1782:32167;14513:1118;7878:9220;;15562:46;6036:12;15562:46;;;;;;;;;;;;:::i;:::-;;;1782:32167;;;;15562:46;;;;;;;;14008:482;6036:12;14008:482;;;;;;;-1:-1:-1;14008:482:57;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;14008:482:57;;;-1:-1:-1;14008:482:57;;14151:55;14008:6;;1782:32167;14151:55;;;13592:3506;-1:-1:-1;;;;;15783:473:57;16192:15;1782:32167;16192:15;;;;;;;;;;;:::i;:::-;1782:32167;;;5170:15;1782:32167;;;;;:::i;:::-;-1:-1:-1;1782:32167:57;;6036:12;15820:414;;1782:32167;;5170:15;15820:414;;1782:32167;15820:414;;;;;;;1782:32167;15820:414;;1782:32167;15820:414;;;1782:32167;;;;:::i;:::-;15820:414;;;1782:32167;5170:15;1782:32167;15783:473;;;;1782:32167;15783:473;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;15783:6:57;1782:32167;15783:473;;;;;;;-1:-1:-1;15783:473:57;;;13592:3506;-1:-1:-1;;6036:12:57;7415:21;1782:32167;;6036:12;;16545:29;-1:-1:-1;;;;;6036:12:57;16736:9;16545:29;1782:32167;16545:29;;;;;;:::i;:::-;1782:32167;16600:51;13604:13;;;;1782:32167;;2875:28:58;16600:51:57;:::i;:::-;;13604:13;1782:32167;;3474:36:58;16736:9:57;:::i;15783:473::-;6036:12;15783:473;;;;;;;;;-1:-1:-1;15783:473:57;;;;;;:::i;:::-;;;;;;;;;7638:163;-1:-1:-1;7638:163:57;;;7319:21;-1:-1:-1;7319:21:57;;-1:-1:-1;7319:21:57;;-1:-1:-1;;1782:32167:57;;6072:13;;6509:776;7130:48;2613:27:58;;7130:48:57;:::i;:::-;;7252:17;3211:35:58;;;7252:17:57;:::i;:::-;6509:776;;6513:68;859:9:38;;:23;1782:32167:57;6513:68;;6087:23;;;5481:32;2875:28:58;5481:32:57;:::i;:::-;1782:32167;5536:31;1782:32167;;5536:31;:::i;:::-;4084:27:58;;3474:36;;5582:13:57;-1:-1:-1;5619:3:57;1782:32167;;5597:20;;;;;1782:32167;;-1:-1:-1;;;;;5705:12:57;;;;;:::i;:::-;1782:32167;;-1:-1:-1;2870:125:51;;6036:12:57;2870:125:51;5670:108:57;5170:15;-1:-1:-1;2870:125:51;2295:53:52;5765:12:57;;;;;:::i;:::-;1782:32167;;-1:-1:-1;2870:125:51;;6036:12:57;2870:125:51;5170:15:57;-1:-1:-1;2870:125:51;2295:53:52;5670:108:57;;:::i;:::-;5638:140;;;;:::i;:::-;1782:32167;5820:12;;;;:::i;:::-;1782:32167;;-1:-1:-1;2870:125:51;;6036:12:57;2870:125:51;-1:-1:-1;5170:15:57;2870:125:51;;3051:52:52;1782:32167:57;5582:13;;5597:20;;;;;;;;4799:1054::o;5148:85::-;5208:14;-1:-1:-1;5208:14:57;;-1:-1:-1;5208:14:57;1782:32167;;-1:-1:-1;;1782:32167:57;;;;;5475:1:58;1782:32167:57;;;:::o;:::-;;;;;;-1:-1:-1;;1782:32167:57;;:::o;4643:1836:58:-;;2875:28;;2295:53:52;;2613:27:58;5461:15;2295:53:52;;5461:15:58;:::i;:::-;3211:35;;5438:470;5479:6;-1:-1:-1;5479:6:58;;;;;5941:16;;;;;;:::i;:::-;3474:36;;5918:481;5960:6;-1:-1:-1;5960:6:58;;;;;6465;;;;;;;:::i;5968:3::-;;1782:32167:57;;-1:-1:-1;1782:32167:57;6348:40:58;1782:32167:57;-1:-1:-1;1782:32167:57;;;;;2295:53:52;2870:125:51;;;;;;;;;;6154:9:58;2870:125:51;;;;;2295:53:52;1782:32167:57;-1:-1:-1;;;;;1782:32167:57;;6154:9:58;;:::i;:::-;2870:125:51;;;;;;3051:52:52;6348:40:58;;:::i;:::-;;5968:3;:::i;:::-;5923:35;;5487:3;;1782:32167:57;;-1:-1:-1;1782:32167:57;5859:38:58;1782:32167:57;-1:-1:-1;1782:32167:57;;;;;;;2295:53:52;2870:125:51;;;;;;;5667:9:58;2870:125:51;;;;;;2295:53:52;1782:32167:57;-1:-1:-1;;;;;1782:32167:57;;5667:9:58;;:::i;5487:3::-;5443:34;;1782:32167:57;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1782:32167:57;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;6299:351:62:-;;1782:32167:57;16677:12:62;;-1:-1:-1;;;;;2295:53:52;;1782:32167:57;6524:25:62;6520:124;;6299:351;;:::o;6520:124::-;3051:52:52;;;;;6629:4:62;6520:124;6299:351::o;17521:1044:57:-;;17891:15;;;1782:32167;17873:15;:33;17869:85;;18924:34;18938:12;;;;;;:::i;18924:34::-;18974:13;-1:-1:-1;19014:3:57;18993:12;18938;;;18993;;:::i;:::-;18989:23;;;;;;;1782:32167;18938:12;19070:15;:12;18938;;;19070;;:::i;1782:32167::-;19324:19;;;1782:32167;;19859:49;-1:-1:-1;;;;;1782:32167:57;;;2613:27:58;19859:49:57;:::i;:::-;;18938:12;20160:10;;;1782:32167;-1:-1:-1;;1782:32167:57;;;;;;;20184:6;-1:-1:-1;20184:6:57;;;;;19014:3;;;1782:32167;;18974:13;;20192:3;20242:22;20160:10;18938:12;20160:10;;20242;:22;:::i;:::-;;1782:32167;;:::i;:::-;20357:6;;;18938:12;20332:21;;1782:32167;18938:12;20160:10;;20422;1782:32167;;-1:-1:-1;;1782:32167:57;;;;;-1:-1:-1;;1782:32167:57;20408:35;;1782:32167;;;20705:510;;20192:3;18938:12;20332:21;;1782:32167;;18938:12;;17891:15;21474:16;;1782:32167;-1:-1:-1;;;;;1782:32167:57;;;21233:748;;17891:15;22003:13;;1782:32167;;17891:15;;20332:21;;-1:-1:-1;;;;;19324:19:57;20332:21;18938:12;22398:558;20332:21;;1782:32167;;;22044:67;;;21999:8973;22040:311;;21999:8973;1782:32167;;;-1:-1:-1;;;;;1782:32167:57;;22576:33;;1782:32167;;;22576:149;;17891:15;1782:32167;;;;;:::i;:::-;;;;;;;:::i;:::-;18938:12;22456:478;;1782:32167;17891:15;22456:478;;1782:32167;22456:478;;;;1782:32167;22456:478;;;1782:32167;17891:15;1782:32167;22398:558;;;;1782:32167;22398:558;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;22398:6:57;1782:32167;22398:558;;;;;;;;;;;-1:-1:-1;;22398:558:57;;22576:149;-1:-1:-1;18938:12:57;20332:21;1782:32167;;18938:12;;23745:8;23032:27;;;20192:3;23032:27;;;23374;23032;;:::i;:::-;1782:32167;23242:49;-1:-1:-1;;;;;1782:32167:57;;2875:28:58;23242:49:57;:::i;:::-;;-1:-1:-1;;;;;23374:27:57;:16;17891:15;23374:16;;1782:32167;23374:27;:::i;:::-;1782:32167;;3474:36:58;23374:27:57;:::i;:::-;-1:-1:-1;;;;;1782:32167:57;;;4084:27:58;23745:8:57;:::i;:::-;20192:3;:::i;:::-;20142:40;;22979:882;23809:29;;;20192:3;23809:29;;;22979:882;20192:3;:::i;22398:558::-;18938:12;22398:558;;;;;19324:19;22398:558;19324:19;22398:558;;;;;;;:::i;:::-;-1:-1:-1;22398:558:57;;;-1:-1:-1;22398:558:57;;22576:149;-1:-1:-1;22576:149:57;;;22040:311;22311:16;22264:13;;;:::i;:::-;1782:32167;;22311:16;1782:32167;17891:15;1782:32167;;;;22293:16;;1782:32167;22311:16;;;:::i;:::-;22040:311;;22044:67;859:9:38;;:23;1782:32167:57;22044:67;;21999:8973;1782:32167;-1:-1:-1;;;;;1782:32167:57;;;;-1:-1:-1;;;;;1782:32167:57;;23889:33;23885:7087;23889:33;;;-1:-1:-1;18938:12:57;20332:21;;1782:32167;18938:12;;1782:32167;17891:15;1782:32167;24688:33;1782:32167;24688:33;;-1:-1:-1;;;;;1782:32167:57;;24688:33;;;1782:32167;18938:12;24688:6;1782:32167;24688:6;-1:-1:-1;;;;;24688:6:57;1782:32167;24688:33;;;;;;;-1:-1:-1;24688:33:57;;;24608:1046;24670:51;;1782:32167;-1:-1:-1;;;;;1782:32167:57;;;-1:-1:-1;;;;;24688:6:57;1782:32167;24747:64;;;;17891:15;1782:32167;;24747:64;;-1:-1:-1;;;;;1782:32167:57;;;24688:33;24747:64;;1782:32167;24788:4;1782:32167;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;24747:64;24688:6;;-1:-1:-1;;;;;24688:6:57;1782:32167;24747:64;;;;;;;26143:467;24747:64;-1:-1:-1;24747:64:57;;;24608:1046;;;1782:32167;-1:-1:-1;;;;;25715:173:57;1782:32167;;;;;25809:13;18938:12;25809:13;;1782:32167;;25715:173;;:::i;:::-;1782:32167;;;;26546:15;;26464:42;26546:15;;;;;;;;:::i;:::-;1782:32167;;;17891:15;1782:32167;;;;;:::i;:::-;;;26302:4;18938:12;26191:397;;1782:32167;26191:397;17891:15;26191:397;;1782:32167;19324:19;26191:397;;1782:32167;26191:397;;1782:32167;;;;:::i;26143:467::-;;:6;;-1:-1:-1;;;;;26143:6:57;1782:32167;26143:467;;;;;;;-1:-1:-1;;26143:467:57;;24608:1046;-1:-1:-1;18938:12:57;20332:21;1782:32167;;18938:12;;26798:30;;;20192:3;26798:30;;;;;;:::i;:::-;1782:32167;26904:11;1782:32167;-1:-1:-1;;;;;1782:32167:57;;4084:27:58;26904:11:57;:::i;:::-;27021:29;;;:63;;;26633:1183;27017:205;;26633:1183;;;;20192:3;:::i;27017:205::-;27165:29;;27149:13;;;;:::i;:::-;27165:29;;:::i;:::-;;;:::i;:::-;27017:205;;;;;27021:63;26302:4;;-1:-1:-1;;;;;27054:13:57;;;:::i;:::-;1782:32167;27054:30;;27021:63;;26633:1183;27357:32;;;;27499:29;;;;27495:299;;26633:1183;;;;20192:3;26633:1183;20192:3;:::i;27495:299::-;27583:29;;18938:12;27583:29;27727:40;27583:29;;:::i;:::-;26143:6;27684:12;26143:6;-1:-1:-1;;;;;26143:6:57;1782:32167;27684:12;;:::i;:::-;17891:15;1782:32167;27727:40;;;;;1782:32167;27727:40;;1782:32167;27727:40;;1782:32167;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;27727:40;;26143:6;-1:-1:-1;;;;;;26143:6:57;1782:32167;27727:40;;;;;;;;27495:299;;;;;27727:40;18938:12;27727:40;;;;;;;;;;;;:::i;:::-;;;1782:32167;;;;27727:40;;;;;;;;26143:467;18938:12;26143:467;;;;;;;-1:-1:-1;26143:467:57;;;;;;:::i;:::-;-1:-1:-1;26143:467:57;;;;-1:-1:-1;26143:467:57;;24747:64;;;;:::i;:::-;;;;24688:33;;;;18938:12;24688:33;;18938:12;24688:33;;;;;;18938:12;24688:33;;;:::i;:::-;;;1782:32167;;;;;24688:33;;;;;;;-1:-1:-1;24688:33:57;;24608:1046;24844:13;;;;;:::i;:::-;-1:-1:-1;;;;;24869:4:57;1782:32167;;24844:30;24840:814;;24608:1046;-1:-1:-1;26143:467:57;24608:1046;;;24840:814;-1:-1:-1;;;;;25391:8:57;1782:32167;25442:13;;;;:::i;:::-;25528:27;;;:::i;:::-;25391:240;;;;;;17891:15;1782:32167;;25391:240;;-1:-1:-1;;;;;1782:32167:57;;;25391:240;;;1782:32167;24869:4;1782:32167;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;-1:-1:-1;;25391:240:57;;;;;;;26143:467;25391:240;-1:-1:-1;25391:240:57;;;24840:814;;;;;;;25391:240;;;;:::i;:::-;;;;23885:7087;-1:-1:-1;;;;;18938:12:57;27852:13;;;;;1782:32167;;27844:35;;;;27840:3132;27844:35;;;1782:32167;;;28366:500;28039:168;-1:-1:-1;1782:32167:57;;-1:-1:-1;;;;;1782:32167:57;;;28039:168;:::i;:::-;1782:32167;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;28509:56;;;;28802:15;28534:13;;;:::i;:::-;28509:56;;28802:15;;;;;:::i;:::-;1782:32167;;;17891:15;1782:32167;;;;;:::i;:::-;;;;18938:12;28411:433;;1782:32167;17891:15;28411:433;;1782:32167;28411:433;19324:19;28411:433;;1782:32167;28723:39;28802:15;28411:433;;1782:32167;;;;:::i;:::-;28411:433;;;1782:32167;17891:15;1782:32167;28366:500;;;;1782:32167;28366:500;;;;;;:::i;:::-;;:6;;-1:-1:-1;;;;;28366:6:57;1782:32167;28366:500;;;;;;;-1:-1:-1;;28366:500:57;;28509:56;-1:-1:-1;18938:12:57;20332:21;;1782:32167;20332:21;;;;1782:32167;18938:12;;29074:25;;-1:-1:-1;;;;;29074:25:57;29055:44;29181:25;29074;;;;;;;;29181;29074;;:::i;:::-;1782:32167;29055:44;;:::i;:::-;1782:32167;29181:25;:::i;:::-;1782:32167;;;3211:35:58;29181:25:57;:::i;:::-;1782:32167;;29466:22;;20192:3;27852:13;;-1:-1:-1;;;;;18938:12:57;29765:18;27852:13;;1782:32167;;3474:36:58;29765:18:57;:::i;29462:561::-;1782:32167;17891:15;1782:32167;;29948:52;;-1:-1:-1;;;;;1782:32167:57;;;28366:500;29948:52;;1782:32167;;;;;;;;18938:12;1782:32167;;;;;29948:52;28366:6;-1:-1:-1;;;;;;28366:6:57;1782:32167;29948:52;;;;;;;;29462:561;;20192:3;29462:561;20192:3;:::i;29948:52::-;18938:12;29948:52;;;;;;;;;;;;:::i;:::-;;;1782:32167;;;;29948:52;;;;;;;;28889:442;29283:25;;;;;;;;;;;:::i;:::-;1782:32167;28889:442;;;;;28366:500;;;;;;-1:-1:-1;28366:500:57;;;;;;:::i;:::-;;;;;28509:56;28802:15;28366:6;;1782:32167;28509:56;;;27840:3132;30175:478;30589:15;;;1782:32167;30589:15;19324:19;30589:15;;;;;;;;;;;;;:::i;:::-;1782:32167;;;17891:15;1782:32167;;;;;:::i;:::-;;;;18938:12;30212:419;;1782:32167;-1:-1:-1;;;;;1782:32167:57;;17891:15;30212:419;;1782:32167;30212:419;;;1782:32167;30212:419;;1782:32167;30212:419;;;1782:32167;;;;:::i;:::-;30212:419;;;1782:32167;17891:15;1782:32167;30175:478;;;;1782:32167;30175:478;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;30175:6:57;1782:32167;30175:478;;;;;;;;;;;-1:-1:-1;;30175:478:57;;27840:3132;-1:-1:-1;18938:12:57;20332:21;1782:32167;;18938:12;;30838:8;30729:27;;;20192:3;30729:27;;;-1:-1:-1;;;;;30729:27:57;;:::i;:::-;1782:32167;;3211:35:58;30838:8:57;:::i;30175:478::-;18938:12;30175:478;;;;;19324:19;30175:478;19324:19;30175:478;;;;;;;:::i;:::-;-1:-1:-1;30175:478:57;;;-1:-1:-1;30175:478:57;;21233:748;1782:32167;-1:-1:-1;;;;;18938:12:57;21927:26;20160:10;;;21927;21946:5;;;:::i;:::-;21927:26;;:::i;:::-;;:35;1782:32167;;21233:748;;;20705:510;21177:18;21081:13;-1:-1:-1;;;;;18938:12:57;21081:13;;21045:51;1782:32167;;;;2875:28:58;21045:51:57;:::i;21177:18::-;20705:510;;18989:23;;;18198:31;2613:27:58;18198:31:57;:::i;:::-;1782:32167;18287:30;1782:32167;;18287:30;:::i;:::-;4084:27:58;;3211:35;;18332:13:57;-1:-1:-1;18368:3:57;1782:32167;;18347:19;;;;;1782:32167;;-1:-1:-1;;;;;18436:11:57;;;;;:::i;:::-;1782:32167;;-1:-1:-1;2870:125:51;;18938:12:57;2870:125:51;18402:89:57;17891:15;-1:-1:-1;2870:125:51;2295:53:52;18479:11:57;;;;;:::i;18402:89::-;18387:104;;;;:::i;:::-;1782:32167;18533:11;;;;:::i;:::-;1782:32167;;-1:-1:-1;2870:125:51;;18938:12:57;2870:125:51;-1:-1:-1;17891:15:57;2870:125:51;;3051:52:52;1782:32167:57;18332:13;;12478:584:62;12714:21;12749:11;;12745:48;;16826:26;2295:53:52;12943:69:62;;-1:-1:-1;;;;;13048:6:62;1782:32167:57;;13048:6:62;:::i;12943:69::-;12995:7;;:::o;1782:32167:57:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;1782:32167:57;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1782:32167:57;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;:::o;7103:296:53:-;;2295:53:52;;1782:32167:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;1782:32167:57;;;;;;;;7250:30:53;7296:13;-1:-1:-1;7311:7:53;;;;;;7103:296;;;;;:::o;7320:3::-;1782:32167:57;;;-1:-1:-1;1782:32167:57;;;-1:-1:-1;1782:32167:57;;2295:53:52;-1:-1:-1;;;;;7339:43:53;;;;:::i;:::-;1782:32167:57;;;;;7296:13:53;;13763:872:62;;;13940:29;;;13763:872;13936:693;;;13989:21;;;;:32;13985:95;;-1:-1:-1;;;;;14132:5:62;;1782:32167:57;14132:34:62;;;;;;1782:32167:57;;14132:34:62;1782:32167:57;14132:34:62;;;;;;;;;;;;;;;;;;13936:693;14242:6;1782:32167:57;14314:30:62;14242:6;;;1782:32167:57;14251:8:62;;;;;;:::i;:::-;1782:32167:57;;;14314:30:62;;;;;1782:32167:57;14314:30:62;;14132:34;14314:30;;1782:32167:57;;;;;14314:30:62;;;;;;;;;;13936:693;13763:872::o;14314:30::-;;;;;;;;;;;;;;:::i;:::-;;;1782:32167:57;;;;13763:872:62:o;14314:30::-;;;;;;1782:32167:57;;;;;;;;;;14132:34:62;14314:30;14132:34;;;;;:::i;:::-;1782:32167:57;14132:34:62;;;;;13985:95;14048:17;;;;;;13936:693;14390:1;;;14379:12;;14375:244;;13936:693;;;;;13763:872::o;14375:244::-;-1:-1:-1;;;;;14468:8:62;;;1782:32167:57;14506:6:62;;;1782:32167:57;14515:20:62;;;;:::i;:::-;14468:86;;;;;;1782:32167:57;;;14468:86:62;;-1:-1:-1;;;;;1782:32167:57;;;14468:86:62;;;1782:32167:57;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;-1:-1:-1;;14468:86:62;;;;;;;14572:32;14468:86;;;14375:244;1782:32167:57;;;14572:32:62;1782:32167:57;;;14572:32:62;;;;;;1782:32167:57;14572:32:62;;14468:86;14572:32;;1782:32167:57;;;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;;;14572:32:62;;;;;;;;;;;;;14375:244;;;;;;14572:32;;;;;;;;;;;;;;:::i;:::-;;;1782:32167:57;;;;14572:32:62;;;;;;;;14468:86;14572:32;14468:86;;;;;:::i;:::-;14390:1;14468:86;;;13940:29;1782:32167:57;-1:-1:-1;;;;;13964:5:62;;1782:32167:57;;;;13953:16:62;13940:29;;2887:1758:53;7863:13;;;2870:125:51;;1782:32167:57;2870:125:51;;;;;;;1782:32167:57;2870:125:51;2295:53:52;3138:15:53;;;3134:1505;3138:15;;;-1:-1:-1;;1782:32167:57;;;;2295:53:52;;1782:32167:57;;;;3802:26:53;;;;3798:415;;3134:1505;3831:53:52;;;;;;;1782:32167:57;;;;;;;;;;3051:52:52;;;1782:32167:57;;;;;;;3051:52:52;1782:32167:57;2870:125:51;;1782:32167:57;2870:125:51;;;3051:52:52;7863:13:53;4574:11;:::o;3798:415::-;4255:5:44;4493;4255;;;:::i;:::-;1782:32167:57;;;;;;;;2295:53:52;4493:5:44;;;:::i;:::-;1782:32167:57;;;;;;;;;;;3051:52:52;1782:32167:57;2870:125:51;;;;;1782:32167:57;2870:125:51;3051:52:52;3798:415:53;;;;;;;3134:1505;4616:12;;;;;1782:32167:57;4616:12:53;:::o;14641:680:62:-;14768:1;;14641:680;14755:14;;14751:51;;14885:30;;;14641:680;14881:434;;;-1:-1:-1;;;;;14974:6:62;;;1782:32167:57;14974:49:62;;;;;1782:32167:57;;;14974:49:62;;-1:-1:-1;;;;;1782:32167:57;;;;14974:49:62;;;1782:32167:57;15006:4:62;1782:32167:57;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;-1:-1:-1;;14974:49:62;;;;;;;;14881:434;15074:5;;;;1782:32167:57;15074:25:62;;;;;1782:32167:57;;;;;15074:25:62;;;;1782:32167:57;15074:25:62;;;14974:49;15074:25;;1782:32167:57;15074:25:62;;;;;;;;14881:434;1782:32167:57;15174:9:62;1782:32167:57;;;;15174:9:62;:::i;15074:25::-;;;;;:::i;:::-;1782:32167:57;;15074:25:62;;;1782:32167:57;;;;15074:25:62;1782:32167:57;;;;;;;;;15074:25:62;1782:32167:57;;;14974:49:62;;;;;;:::i;:::-;14768:1;14974:49;;;;14881:434;15262:6;;;;-1:-1:-1;;;;;15262:6:62;1782:32167:57;15262:42:62;;;;;1782:32167:57;;;15262:42:62;;-1:-1:-1;;;;;1782:32167:57;;;15262:42:62;;;1782:32167:57;;;;;;;;;;;;;-1:-1:-1;;1782:32167:57;;;;;;-1:-1:-1;;15262:42:62;;;;;;;;14881:434;14641:680::o;15262:42::-;;;;:::i;14885:30::-;1782:32167:57;-1:-1:-1;;;;;14910:5:62;;1782:32167:57;;;;14898:17:62;14885:30;;14751:51;14785:7;;;;;;:::o;1531:331:99:-;1616:21;;:30;1612:109;;1750:33;1782:32167:57;;;-1:-1:-1;;;;;1782:32167:57;;;1750:33:99;;;;:::i;:::-;;1797:8;1793:63;;1531:331::o;1793:63::-;1828:17;1750:33;1828:17;;1750:33;1828:17;1612:109;1669:41;;;1624:4;1669:41;1782:32167:57;;1669:41:99;;4625:582;;4797:8;;-1:-1:-1;1782:32167:57;;5874:21:99;:17;;6046:142;;;;;;4793:408;1782:32167:57;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;1782:32167:57;5121:24:99;1782:32167:57;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;;2304:424:53;7863:13;;;2870:125:51;;1782:32167:57;2870:125:51;;;;;1782:32167:57;2870:125:51;2295:53:52;4814:30:53;2390:332;2870:125:51;;;3831:53:52;;1782:32167:57;;;;;2870:125:51;1782:32167:57;;;3051:52:52;7863:13:53;1782:32167:57;;;;;;;3051:52:52;;2295:53;2870:125:51;1782:32167:57;2870:125:51;;;;1782:32167:57;2870:125:51;3051:52:52;7863:13:53;2657:11;:::o;2390:332::-;2699:12;;;1782:32167:57;2699:12:53;:::o;3350:199:44:-;;-1:-1:-1;2870:125:51;;;3518:23:44;2870:125:51;-1:-1:-1;2870:125:51;2295:53:52;;;3518:23:44;:::i;:::-;3051:52:52;;3350:199:44:o;13342:415:62:-;;1782:32167:57;13342:415:62;;;;-1:-1:-1;;;;;1782:32167:57;;;;;;;;13601:52:62;;;;;1782:32167:57;13601:52:62;;1782:32167:57;13601:52:62;;;1782:32167:57;;;;;;13601:6:62;1782:32167:57;13601:52:62;;;;;;;-1:-1:-1;;;13601:52:62;;;13342:415;13575:78;;13712:38;13678:24;13575:78;13678:24;;:::i;:::-;13712:38;;;:::i;:::-;1782:32167:57;13342:415:62:o;13601:52::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;1782:32167:57;;;;;;;;;;13601:52:62;;;;;;;;;;;1782:32167:57;;;-1:-1:-1;1782:32167:57;;;;;7223:218:111;-1:-1:-1;;;;;7303:25:111;;;;7299:105;;1782:32167:57;7223:218:111;:::o;7299:105::-;7351:42;;;7382:3;7351:42;1782:32167:57;;;;7351:42:111;;3555:199:44;;-1:-1:-1;2870:125:51;;;3723:23:44;2870:125:51;-1:-1:-1;2870:125:51;2295:53:52;;;3723:23:44;:::i;1303:160:98:-;1782:32167:57;;1412:43:98;;;;;1782:32167:57;1412:43:98;;-1:-1:-1;;;;;1782:32167:57;;;1412:43:98;;;1782:32167:57;;;;;;1412:43:98;;1782:32167:57;;;;;;;;;;;;;3510:55:99;1782:32167:57;-1:-1:-1;1782:32167:57;;;;;;3462:31:99;;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;1782:32167:57;;4551:22:98;;;;:57;;;;1303:160;4547:135;;;;1303:160;:::o;4547:135::-;4631:40;-1:-1:-1;4631:40:98;;1782:32167:57;1412:43:98;-1:-1:-1;4631:40:98;4551:57;4578:30;;;;1412:43;4578:30;;;1782:32167:57;;;;1412:43:98;4578:30;1782:32167:57;;;;;;;;;4551:57:98;;;;4609:265:44;3831:53:52;-1:-1:-1;4792:15:44;4788:80;;4609:265::o;4788:80::-;4830:27;-1:-1:-1;4830:27:44;;-1:-1:-1;4830:27:44"},"methodIdentifiers":{"getSender()":"5e01eb5a","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"e3b5dff4","querySwapExactInHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"8a12a08c","querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"2950286e","querySwapExactOutHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"5a3c3987","swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"286f580d","swapExactInHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"08a465f6","swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"8eb1b65e","swapExactOutHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"945ed33f","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IWETH\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"routerVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransientIndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactInHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"querySwapExactInHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactOutHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"querySwapExactOutHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactInHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"swapExactInHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactOutHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"swapExactOutHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"The external API functions unlock the Vault, which calls back into the corresponding hook functions. These interpret the steps and paths in the input data, perform token accounting (in transient storage, to save gas), settle with the Vault, and handle wrapping and unwrapping ETH.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"kind\":\"dev\",\"methods\":{\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"details\":\"Min amounts out specified in the paths are ignored.\",\"params\":{\"paths\":\"Swap paths from token in to token out, specifying exact amounts in\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data required for the query\"},\"returns\":{\"amountsOut\":\"Calculated amounts of output tokens to be received, ordered by output token address\",\"pathAmountsOut\":\"Calculated amounts of output tokens corresponding to the last step of each given path\",\"tokensOut\":\"Output token addresses\"}},\"querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"details\":\"Max amounts in specified in the paths are ignored.\",\"params\":{\"paths\":\"Swap paths from token in to token out, specifying exact amounts out\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data required for the query\"},\"returns\":{\"amountsIn\":\"Calculated amounts of input tokens to be received, ordered by input token address\",\"pathAmountsIn\":\"Calculated amounts of input tokens corresponding to the last step of each given path\",\"tokensIn\":\"Input token addresses\"}},\"swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"paths\":\"Swap paths from token in to token out, specifying exact amounts in\",\"userData\":\"Additional (optional) data required for the swap\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Calculated amounts of output tokens, ordered by output token address\",\"pathAmountsOut\":\"Calculated amounts of output tokens corresponding to the last step of each given path\",\"tokensOut\":\"Output token addresses\"}},\"swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap\",\"paths\":\"Swap paths from token in to token out, specifying exact amounts out\",\"userData\":\"Additional (optional) data required for the swap\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Calculated amounts of input tokens, ordered by input token address\",\"pathAmountsIn\":\"Calculated amounts of input tokens corresponding to the first step of each given path\",\"tokensIn\":\"Input token addresses\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}],\"TransientIndexOutOfBounds()\":[{\"notice\":\"An index is out of bounds on an array operation (e.g., at).\"}]},\"kind\":\"user\",\"methods\":{\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"notice\":\"Queries a swap operation involving multiple paths (steps), specifying exact input token amounts.\"},\"querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"notice\":\"Queries a swap operation involving multiple paths (steps), specifying exact output token amounts.\"},\"swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation involving multiple paths (steps), specifying exact input token amounts.\"},\"swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation involving multiple paths (steps), specifying exact output token amounts.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Entrypoint for batch swaps, and batch swap queries.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/BatchRouter.sol\":\"BatchRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol\":{\"keccak256\":\"0x700bec0606b05dd5e2799eeb01d5fc63149d84cddf349f75b43df241dd828798\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d18022dc7acd83fc7b37526f63bdd4d7cc11d9ab8cbe273a5a24e5e32c4df7db\",\"dweb:/ipfs/QmR9jWC8iY1nAXhhm9jj2UqvJdK9Coi7S3QVzGmayJcmpw\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\":{\"keccak256\":\"0x1b77bbe902f863cb148ed28ae055841f77fc245b44f878932d0b8e3f2efba7f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1925829096d14d87eacbf2b7d42866128e2b43e1ff4249742a74f62e372ad247\",\"dweb:/ipfs/QmbFmGn45eoiHZHFGhXRqKSzg53j2Lz2XGQqaw6pkSjRxq\"]},\"@balancer-labs/v3-vault/contracts/BatchRouter.sol\":{\"keccak256\":\"0x1bfa17be2b1221e762f442d8d70ba20f47813c44feffb9ab1afa1ad13883abca\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32fc58bb361c2b084a4fbc594881a9f7a1a74de0a9a8a6ab1d6323bc68cb5bcb\",\"dweb:/ipfs/QmUEzgjg1H2HXrXyFyinsHR4WL1wBRHhAY7p7UfaEd3r4n\"]},\"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol\":{\"keccak256\":\"0x2e823b86db98c526a3ae859eeee2280dbd8db385e2f70fd41a32072dea0b2567\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://83e33ceaf6b9737c2bc83dc045c06aa67f4e563c106f5d7862f975c3493438fd\",\"dweb:/ipfs/QmQmYzzUCT8mmRenu6kGu81fk7GViYob4mhTuAi1zsYBnr\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol":{"BatchRouterCommon":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getSender()":"5e01eb5a","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}]},\"kind\":\"user\",\"methods\":{\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Transient storage for Batch and Composite Liquidity Router operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol\":\"BatchRouterCommon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\":{\"keccak256\":\"0x1b77bbe902f863cb148ed28ae055841f77fc245b44f878932d0b8e3f2efba7f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1925829096d14d87eacbf2b7d42866128e2b43e1ff4249742a74f62e372ad247\",\"dweb:/ipfs/QmbFmGn45eoiHZHFGhXRqKSzg53j2Lz2XGQqaw6pkSjRxq\"]},\"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol\":{\"keccak256\":\"0x2e823b86db98c526a3ae859eeee2280dbd8db385e2f70fd41a32072dea0b2567\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://83e33ceaf6b9737c2bc83dc045c06aa67f4e563c106f5d7862f975c3493438fd\",\"dweb:/ipfs/QmQmYzzUCT8mmRenu6kGu81fk7GViYob4mhTuAi1zsYBnr\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/BufferRouter.sol":{"BufferRouter":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IWETH","name":"weth","type":"address"},{"internalType":"contract IPermit2","name":"permit2","type":"address"},{"internalType":"string","name":"routerVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"addLiquidityToBufferHook","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"initializeBufferHook","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"queryAddLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"queryAddLiquidityToBufferHook","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"}],"name":"queryInitializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"}],"name":"queryInitializeBufferHook","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToRemove","type":"uint256"}],"name":"queryRemoveLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceOut","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToRemove","type":"uint256"}],"name":"queryRemoveLiquidityFromBufferHook","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceOut","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"copy_literal_to_memory_ac010f60bd23a8b676a307440640b6fd2c7208b304d0b7c6e71f1b0f3dbf3924":{"entryPoint":837,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":802,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4066":{"entryPoint":775,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateSlot":{"entryPoint":877,"id":6537,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"61012060409080825234610303576122ee803803809161001f8285610322565b83398101916080828403126103035781516001600160a01b039283821682036103035760209081810151928584168403610303578482015195861686036103035760608201516001600160401b0392838211610303570190601f908882840112156103035782518481116102ef57601f199388519a6100a4888787860116018d610322565b828c5287838301011161030357815f928c898080950191015e8b01015260805287519283116102ef575f54916001928381811c911680156102e5575b868210146102d15782811161028e575b508491841160011461022f575082918291610186969798995f94610224575b50501b915f199060031b1c1916175f555b61014e61012b610345565b85519061013782610307565b600682526539b2b73232b960d11b8483015261036d565b60a052610159610345565b701a5cd4995d1d5c9b915d1a131bd8dad959607a1b85519261017a84610307565b6011845283015261036d565b60c05260e05261010091825251611ece9182610420833960805182818161020901528181610344015281816104f60152818161066d015281816107aa0152818161090c01528181610c1201528181610dc701528181611b700152611c0f015260a05182818161098d015261189e015260c0518281816118de0152611d76015260e051826031015251818181610ffe015281816111250152611bec0152f35b015192505f8061010f565b83929316905f8052845f20915f5b818110610279575098836101869798999a10610261575b505050811b015f55610120565b01515f1960f88460031b161c191690555f8080610254565b8a83015184559285019291860191860161023d565b5f8052855f208380870160051c8201928888106102c8575b0160051c019084905b8281106102bd5750506100f0565b5f81550184906102af565b925081926102a6565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e0565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b604081019081106001600160401b038211176102ef57604052565b601f909101601f19168101906001600160401b038211908210176102ef57604052565b6040519061035282610307565b600c82526b2937baba32b921b7b6b6b7b760a11b6020830152565b906103da603a60209260405193849181808401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952805191829101603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a810184520182610322565b5190205f19810190811161040b5760405190602082019081526020825261040082610307565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe6080806040526004361015610081575b50361561001a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361005957005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c90816313f7bb4d146115535750806319c6989f14610e2b578063400f230d14610d255780634fe56ed614610b88578063502383f414610b0857806354fd4d50146109cb5780635e01eb5a14610979578063662727cc1461083a578063a390260414610723578063ac9650d8146106db578063b365a3c21461058a578063d96af0701461046a578063d9f70869146102b95763e0fefe3514610127575f61000f565b346102565761013536611769565b73ffffffffffffffffffffffffffffffffffffffff9182604051947fa3902604000000000000000000000000000000000000000000000000000000006020870152166024850152604484015260648301526064825260a082019082821067ffffffffffffffff83111761028c57815f91816040527fedfa3568000000000000000000000000000000000000000000000000000000008252602060a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608761020460c482018261163f565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610281575f9261025a575b505060208180518101031261025657602080910151604051908152f35b5f80fd5b61027a925060a0903d90815f853e61027282856117b4565b0101906117f3565b5f80610239565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610256576102c7366116e5565b91906102d4949394611b2c565b6102dc611b59565b6040517f653eb3b000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201879052604482018490526064820192909252838216608482015260209591937f00000000000000000000000000000000000000000000000000000000000000008516929091878160a4815f885af19687156102815788915f98610437575b50908692916024604051809581937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216978860048301525afa958615610281576103df966103da935f9161040a575b501683611bc4565b611bc4565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b61042a91508a3d8c11610430575b61042281836117b4565b81019061186c565b8a6103d2565b503d610418565b828194939299503d8311610463575b61045081836117b4565b8101031261025657905195879086610381565b503d610446565b3461025657604060031936011261025657608460406104876115ca565b61048f611b2c565b610497611b59565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937febc7955c00000000000000000000000000000000000000000000000000000000855216600484015260243560248401528160448401528160648401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610281576040915f915f9161055b575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b905061057d9150823d8411610583575b61057581836117b4565b810190611856565b8361052b565b503d61056b565b34610256576106535f61060a6106186105a23661172e565b6040517fd9f7086900000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b03601f1981018352826117b4565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061163f565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610281575f916106b9575b5060208180518101031261025657602080910151604051908152f35b6106d591503d805f833e6106cd81836117b4565b8101906117f3565b8161069d565b60206003193601126102565760043567ffffffffffffffff81116102565761071361070d61071f92369060040161160e565b90611898565b60405191829182611664565b0390f35b346102565760a4602061073536611769565b91610741949194611b2c565b610749611b59565b5f73ffffffffffffffffffffffffffffffffffffffff809460405197889687957f653eb3b0000000000000000000000000000000000000000000000000000000008752166004860152602485015260448401528160648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af18015610281575f90610807575b6020905f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b506020813d602011610832575b81610821602093836117b4565b8101031261025657602090516107d9565b3d9150610814565b34610256576040600319360112610256576108f25f61060a6108b761085d6115ca565b6040517f400f230d00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9091166024808301919091523560448201529182906064820190565b604051809381927fedfa356800000000000000000000000000000000000000000000000000000000835260206004840152602483019061163f565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190811561028157604091610953915f9161095f575b5060208082518301019101611856565b82519182526020820152f35b61097391503d805f833e6106cd81836117b4565b83610943565b34610256575f6003193601126102565760207f00000000000000000000000000000000000000000000000000000000000000005c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610256575f600319360112610256576040515f80549060018260011c9160018416918215610afe575b6020948585108414610ad15785879486865291825f14610a93575050600114610a3a575b50610a26925003836117b4565b61071f60405192828493845283019061163f565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b858310610a7b575050610a26935082010185610a19565b80548389018501528794508693909201918101610a64565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152610a2695151560051b8501019250879150610a199050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f16926109f5565b34610256576108f25f61060a610618610b203661172e565b6040517f4fe56ed600000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b3461025657610b96366116e5565b93919092610ba2611b2c565b610baa611b59565b604080517fe2a92b1a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482019390935260448101939093526064830194909452848116608483015290927f00000000000000000000000000000000000000000000000000000000000000008216908460a4815f855af1928315610281575f945f94610cf8575b5090602083926024604051809681937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216948560048301525afa958615610281576103da868694604099610caa975f91610cd957501683611bc4565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b610cf2915060203d6020116104305761042281836117b4565b8b6103d2565b602095508392919450610d199060403d6040116105835761057581836117b4565b95909594919250610c4c565b346102565760406003193601126102565760a46040610d426115ca565b610d4a611b2c565b610d52611b59565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937fe2a92b1a0000000000000000000000000000000000000000000000000000000085521660048401526fffffffffffffffffffffffffffffffff806024850152604484015260243560648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610281576040915f915f9161055b57505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b60a06003193601126102565767ffffffffffffffff60043511610256573660236004350112156102565767ffffffffffffffff60043560040135116102565736602460c060043560040135026004350101116102565760243567ffffffffffffffff811161025657610ea190369060040161160e565b67ffffffffffffffff60443511610256576060600319604435360301126102565767ffffffffffffffff60643511610256573660236064350112156102565767ffffffffffffffff606435600401351161025657366024606435600401356064350101116102565760843567ffffffffffffffff811161025657610f2990369060040161160e565b929091610f34611b2c565b80600435600401350361152b575f5b60043560040135811061121c57505050604435600401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030181121561025657806044350160048101359067ffffffffffffffff82116102565760248260071b360391011361025657610fe6575b61071f61071384845f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d611898565b9173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561025657604051927f2a2d80d10000000000000000000000000000000000000000000000000000000084523360048501526060602485015260c484019060443501602481019167ffffffffffffffff60048301351161025657600482013560071b36038313610256576060606487015260048201359052849160e48301915f905b6004810135821061118857505050906020815f9373ffffffffffffffffffffffffffffffffffffffff6110d86024604435016115ed565b1660848301526044803581013560a4840152600319838303019083015260643560048101358083529060240184830137600460643501358181018401869052601f01601f191601030181837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165af19182156102815761071f9361071393611179575b50915091610fb6565b611182906117a0565b84611170565b9193509173ffffffffffffffffffffffffffffffffffffffff6111aa856115ed565b1681526020808501359173ffffffffffffffffffffffffffffffffffffffff8316809303610256576004926001928201526111e760408701611b19565b65ffffffffffff809116604083015261120260608801611b19565b1660608201526080809101950193019050869392916110a1565b61123161122a828486611a13565b3691611aa0565b6040519081606081011067ffffffffffffffff60608401111761028c57606082016040525f82525f60208301525f6040830152602081015190606060408201519101515f1a9183526020830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc818402600435013603011261025657604051908160c081011067ffffffffffffffff60c08401111761028c5760c082016040526112ec602460c0850260043501016115ed565b808352611302604460c0860260043501016115ed565b9081602085015261131c606460c0870260043501016115ed565b60408581019190915260043560c08702016084810135606087015260a4810135608087015260c4013560a0860152830151835160209094015160ff919091169273ffffffffffffffffffffffffffffffffffffffff83163b15610256575f73ffffffffffffffffffffffffffffffffffffffff809460e4948a98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af1908161151c575b5061151357611415611aea565b9073ffffffffffffffffffffffffffffffffffffffff81511690602073ffffffffffffffffffffffffffffffffffffffff81830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610281575f926114de575b5060600151036114a757506001905b01610f43565b8051156114b657805190602001fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091506020813d60201161150b575b816114fa602093836117b4565b810103126102565751906060611492565b3d91506114ed565b506001906114a1565b611525906117a0565b87611408565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610256576040600319360112610256575f816108b76108f29361060a6115786115ca565b7fd96af07000000000000000000000000000000000000000000000000000000000602084015273ffffffffffffffffffffffffffffffffffffffff166024808401919091523560448301526064820190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361025657565b359073ffffffffffffffffffffffffffffffffffffffff8216820361025657565b9181601f840112156102565782359167ffffffffffffffff8311610256576020808501948460051b01011161025657565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106116995750505050505090565b90919293949584806116d5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a5161163f565b9801930193019194939290611689565b60031960a09101126102565773ffffffffffffffffffffffffffffffffffffffff6004358181168103610256579160243591604435916064359160843590811681036102565790565b60031960809101126102565760043573ffffffffffffffffffffffffffffffffffffffff811681036102565790602435906044359060643590565b60031960609101126102565760043573ffffffffffffffffffffffffffffffffffffffff8116810361025657906024359060443590565b67ffffffffffffffff811161028c57604052565b90601f601f19910116810190811067ffffffffffffffff82111761028c57604052565b67ffffffffffffffff811161028c57601f01601f191660200190565b6020818303126102565780519067ffffffffffffffff8211610256570181601f8201121561025657805190611827826117d7565b9261183560405194856117b4565b8284526020838301011161025657815f9260208093018386015e8301015290565b9190826040910312610256576020825192015190565b90816020910312610256575173ffffffffffffffffffffffffffffffffffffffff811681036102565790565b91905f907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff825c16156119ee575b7f000000000000000000000000000000000000000000000000000000000000000094855c6119c6576001906001875d611914836119fb565b9261192260405194856117b4565b808452601f19611931826119fb565b015f5b8181106119b55750505f5b81811061196c5750505050905f6119619392955d805c91611963575b50611d6c565b565b5f905d5f61195b565b806119995f8061198161122a8996888a611a13565b602081519101305af4611992611aea565b9030611e27565b6119a38288611ad6565b526119ae8187611ad6565b500161193f565b806060602080938901015201611934565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b915033815d6001916118dc565b67ffffffffffffffff811161028c5760051b60200190565b9190811015611a735760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561025657019081359167ffffffffffffffff8311610256576020018236038113610256579190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b929192611aac826117d7565b91611aba60405193846117b4565b829481845281830111610256578281602093845f960137010152565b8051821015611a735760209160051b010190565b3d15611b14573d90611afb826117d7565b91611b0960405193846117b4565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361025657565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6119c6576001905d565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611b9857565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b90915f9080611bd4575b50505050565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016817f00000000000000000000000000000000000000000000000000000000000000001695828411611d3b57821694813b1561025657608483915f809460405196879586947f36c785160000000000000000000000000000000000000000000000000000000086521660048501528b6024850152881660448401528960648401525af1801561028157611d24575b506044829360209360405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115611d185750611ced575b808080611bce565b602090813d8311611d11575b611d0381836117b4565b81010312610256575f611ce5565b503d611cf9565b604051903d90823e3d90fd5b60209250611d31906117a0565b60445f9250611c99565b837f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b47908115611e23577f00000000000000000000000000000000000000000000000000000000000000005c611e2357814710611df7575f80809373ffffffffffffffffffffffffffffffffffffffff8294165af1611dc7611aea565b5015611dcf57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b5050565b90611e3c5750805115611dcf57805190602001fd5b81511580611e8f575b611e4d575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15611e4556fea26469706673582212205f6e862a6d51c9f34a9628b5242dcd104b39bc704d784731d5a60645506713f764736f6c634300081a0033","opcodes":"PUSH2 0x120 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x303 JUMPI PUSH2 0x22EE DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1F DUP3 DUP6 PUSH2 0x322 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SWAP2 PUSH1 0x80 DUP3 DUP5 SUB SLT PUSH2 0x303 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP3 AND DUP3 SUB PUSH2 0x303 JUMPI PUSH1 0x20 SWAP1 DUP2 DUP2 ADD MLOAD SWAP3 DUP6 DUP5 AND DUP5 SUB PUSH2 0x303 JUMPI DUP5 DUP3 ADD MLOAD SWAP6 DUP7 AND DUP7 SUB PUSH2 0x303 JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 DUP4 DUP3 GT PUSH2 0x303 JUMPI ADD SWAP1 PUSH1 0x1F SWAP1 DUP9 DUP3 DUP5 ADD SLT ISZERO PUSH2 0x303 JUMPI DUP3 MLOAD DUP5 DUP2 GT PUSH2 0x2EF JUMPI PUSH1 0x1F NOT SWAP4 DUP9 MLOAD SWAP11 PUSH2 0xA4 DUP9 DUP8 DUP8 DUP7 ADD AND ADD DUP14 PUSH2 0x322 JUMP JUMPDEST DUP3 DUP13 MSTORE DUP8 DUP4 DUP4 ADD ADD GT PUSH2 0x303 JUMPI DUP2 PUSH0 SWAP3 DUP13 DUP10 DUP1 DUP1 SWAP6 ADD SWAP2 ADD MCOPY DUP12 ADD ADD MSTORE PUSH1 0x80 MSTORE DUP8 MLOAD SWAP3 DUP4 GT PUSH2 0x2EF JUMPI PUSH0 SLOAD SWAP2 PUSH1 0x1 SWAP3 DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x2E5 JUMPI JUMPDEST DUP7 DUP3 LT EQ PUSH2 0x2D1 JUMPI DUP3 DUP2 GT PUSH2 0x28E JUMPI JUMPDEST POP DUP5 SWAP2 DUP5 GT PUSH1 0x1 EQ PUSH2 0x22F JUMPI POP DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x186 SWAP7 SWAP8 SWAP9 SWAP10 PUSH0 SWAP5 PUSH2 0x224 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE JUMPDEST PUSH2 0x14E PUSH2 0x12B PUSH2 0x345 JUMP JUMPDEST DUP6 MLOAD SWAP1 PUSH2 0x137 DUP3 PUSH2 0x307 JUMP JUMPDEST PUSH1 0x6 DUP3 MSTORE PUSH6 0x39B2B73232B9 PUSH1 0xD1 SHL DUP5 DUP4 ADD MSTORE PUSH2 0x36D JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH2 0x159 PUSH2 0x345 JUMP JUMPDEST PUSH17 0x1A5CD4995D1D5C9B915D1A131BD8DAD959 PUSH1 0x7A SHL DUP6 MLOAD SWAP3 PUSH2 0x17A DUP5 PUSH2 0x307 JUMP JUMPDEST PUSH1 0x11 DUP5 MSTORE DUP4 ADD MSTORE PUSH2 0x36D JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP2 DUP3 MSTORE MLOAD PUSH2 0x1ECE SWAP2 DUP3 PUSH2 0x420 DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 DUP2 DUP2 PUSH2 0x209 ADD MSTORE DUP2 DUP2 PUSH2 0x344 ADD MSTORE DUP2 DUP2 PUSH2 0x4F6 ADD MSTORE DUP2 DUP2 PUSH2 0x66D ADD MSTORE DUP2 DUP2 PUSH2 0x7AA ADD MSTORE DUP2 DUP2 PUSH2 0x90C ADD MSTORE DUP2 DUP2 PUSH2 0xC12 ADD MSTORE DUP2 DUP2 PUSH2 0xDC7 ADD MSTORE DUP2 DUP2 PUSH2 0x1B70 ADD MSTORE PUSH2 0x1C0F ADD MSTORE PUSH1 0xA0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x98D ADD MSTORE PUSH2 0x189E ADD MSTORE PUSH1 0xC0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x18DE ADD MSTORE PUSH2 0x1D76 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 PUSH1 0x31 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0xFFE ADD MSTORE DUP2 DUP2 PUSH2 0x1125 ADD MSTORE PUSH2 0x1BEC ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x10F JUMP JUMPDEST DUP4 SWAP3 SWAP4 AND SWAP1 PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x279 JUMPI POP SWAP9 DUP4 PUSH2 0x186 SWAP8 SWAP9 SWAP10 SWAP11 LT PUSH2 0x261 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH2 0x120 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x254 JUMP JUMPDEST DUP11 DUP4 ADD MLOAD DUP5 SSTORE SWAP3 DUP6 ADD SWAP3 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x23D JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP6 PUSH0 KECCAK256 DUP4 DUP1 DUP8 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP9 DUP9 LT PUSH2 0x2C8 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP5 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x2BD JUMPI POP POP PUSH2 0xF0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x2AF JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x2A6 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xE0 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x2EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x2EF JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x352 DUP3 PUSH2 0x307 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH12 0x2937BABA32B921B7B6B6B7B7 PUSH1 0xA1 SHL PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3DA PUSH1 0x3A PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 DUP2 DUP1 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x322 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x40B JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x400 DUP3 PUSH2 0x307 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x81 JUMPI JUMPDEST POP CALLDATASIZE ISZERO PUSH2 0x1A JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x59 JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x13F7BB4D EQ PUSH2 0x1553 JUMPI POP DUP1 PUSH4 0x19C6989F EQ PUSH2 0xE2B JUMPI DUP1 PUSH4 0x400F230D EQ PUSH2 0xD25 JUMPI DUP1 PUSH4 0x4FE56ED6 EQ PUSH2 0xB88 JUMPI DUP1 PUSH4 0x502383F4 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9CB JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x979 JUMPI DUP1 PUSH4 0x662727CC EQ PUSH2 0x83A JUMPI DUP1 PUSH4 0xA3902604 EQ PUSH2 0x723 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xB365A3C2 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xD96AF070 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0xD9F70869 EQ PUSH2 0x2B9 JUMPI PUSH4 0xE0FEFE35 EQ PUSH2 0x127 JUMPI PUSH0 PUSH2 0xF JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x135 CALLDATASIZE PUSH2 0x1769 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xA390260400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x28C JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0x204 PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x163F JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP3 PUSH2 0x25A JUMPI JUMPDEST POP POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x27A SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0x272 DUP3 DUP6 PUSH2 0x17B4 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x17F3 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x239 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x2C7 CALLDATASIZE PUSH2 0x16E5 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2D4 SWAP5 SWAP4 SWAP5 PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0x2DC PUSH2 0x1B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 DUP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x20 SWAP6 SWAP2 SWAP4 PUSH32 0x0 DUP6 AND SWAP3 SWAP1 SWAP2 DUP8 DUP2 PUSH1 0xA4 DUP2 PUSH0 DUP9 GAS CALL SWAP7 DUP8 ISZERO PUSH2 0x281 JUMPI DUP9 SWAP2 PUSH0 SWAP9 PUSH2 0x437 JUMPI JUMPDEST POP SWAP1 DUP7 SWAP3 SWAP2 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP8 DUP9 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x281 JUMPI PUSH2 0x3DF SWAP7 PUSH2 0x3DA SWAP4 PUSH0 SWAP2 PUSH2 0x40A JUMPI JUMPDEST POP AND DUP4 PUSH2 0x1BC4 JUMP JUMPDEST PUSH2 0x1BC4 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x42A SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x430 JUMPI JUMPDEST PUSH2 0x422 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x186C JUMP JUMPDEST DUP11 PUSH2 0x3D2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x418 JUMP JUMPDEST DUP3 DUP2 SWAP5 SWAP4 SWAP3 SWAP10 POP RETURNDATASIZE DUP4 GT PUSH2 0x463 JUMPI JUMPDEST PUSH2 0x450 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI SWAP1 MLOAD SWAP6 DUP8 SWAP1 DUP7 PUSH2 0x381 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x446 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x84 PUSH1 0x40 PUSH2 0x487 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x48F PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xEBC7955C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x24 DUP5 ADD MSTORE DUP2 PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x55B JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 POP PUSH2 0x57D SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x583 JUMPI JUMPDEST PUSH2 0x575 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1856 JUMP JUMPDEST DUP4 PUSH2 0x52B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x56B JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x653 PUSH0 PUSH2 0x60A PUSH2 0x618 PUSH2 0x5A2 CALLDATASIZE PUSH2 0x172E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9F7086900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x17B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x163F JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP2 PUSH2 0x6B9 JUMPI JUMPDEST POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x6D5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x6CD DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17F3 JUMP JUMPDEST DUP2 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x256 JUMPI PUSH2 0x713 PUSH2 0x70D PUSH2 0x71F SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x160E JUMP JUMPDEST SWAP1 PUSH2 0x1898 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1664 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0xA4 PUSH1 0x20 PUSH2 0x735 CALLDATASIZE PUSH2 0x1769 JUMP JUMPDEST SWAP2 PUSH2 0x741 SWAP5 SWAP2 SWAP5 PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0x749 PUSH2 0x1B59 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP1 PUSH2 0x807 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x832 JUMPI JUMPDEST DUP2 PUSH2 0x821 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH2 0x7D9 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x814 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH2 0x8F2 PUSH0 PUSH2 0x60A PUSH2 0x8B7 PUSH2 0x85D PUSH2 0x15CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x400F230D00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x163F JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH1 0x40 SWAP2 PUSH2 0x953 SWAP2 PUSH0 SWAP2 PUSH2 0x95F JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x1856 JUMP JUMPDEST DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x973 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x6CD DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP4 PUSH2 0x943 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0xAFE JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0xAD1 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0xA93 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xA3A JUMPI JUMPDEST POP PUSH2 0xA26 SWAP3 POP SUB DUP4 PUSH2 0x17B4 JUMP JUMPDEST PUSH2 0x71F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x163F JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0xA7B JUMPI POP POP PUSH2 0xA26 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xA19 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xA64 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0xA26 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0xA19 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x9F5 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x8F2 PUSH0 PUSH2 0x60A PUSH2 0x618 PUSH2 0xB20 CALLDATASIZE PUSH2 0x172E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FE56ED600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0xB96 CALLDATASIZE PUSH2 0x16E5 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 PUSH2 0xBA2 PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0xBAA PUSH2 0x1B59 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP1 SWAP3 PUSH32 0x0 DUP3 AND SWAP1 DUP5 PUSH1 0xA4 DUP2 PUSH0 DUP6 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP5 PUSH0 SWAP5 PUSH2 0xCF8 JUMPI JUMPDEST POP SWAP1 PUSH1 0x20 DUP4 SWAP3 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP5 DUP6 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x281 JUMPI PUSH2 0x3DA DUP7 DUP7 SWAP5 PUSH1 0x40 SWAP10 PUSH2 0xCAA SWAP8 PUSH0 SWAP2 PUSH2 0xCD9 JUMPI POP AND DUP4 PUSH2 0x1BC4 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0xCF2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x430 JUMPI PUSH2 0x422 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP12 PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0x20 SWAP6 POP DUP4 SWAP3 SWAP2 SWAP5 POP PUSH2 0xD19 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x583 JUMPI PUSH2 0x575 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP3 POP PUSH2 0xC4C JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0xA4 PUSH1 0x40 PUSH2 0xD42 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xD4A PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0xD52 PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x55B JUMPI POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x256 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x256 JUMPI PUSH2 0xEA1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x160E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x256 JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x64 CALLDATALOAD ADD SLT ISZERO PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH1 0x64 CALLDATALOAD ADD ADD GT PUSH2 0x256 JUMPI PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x256 JUMPI PUSH2 0xF29 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x160E JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0xF34 PUSH2 0x1B2C JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x152B JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x121C JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x256 JUMPI DUP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x256 JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x256 JUMPI PUSH2 0xFE6 JUMPI JUMPDEST PUSH2 0x71F PUSH2 0x713 DUP5 DUP5 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x1898 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0xC4 DUP5 ADD SWAP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x256 JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x256 JUMPI PUSH1 0x60 PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE DUP5 SWAP2 PUSH1 0xE4 DUP4 ADD SWAP2 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x1188 JUMPI POP POP POP SWAP1 PUSH1 0x20 DUP2 PUSH0 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x10D8 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x15ED JUMP JUMPDEST AND PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD DUP2 ADD CALLDATALOAD PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0x3 NOT DUP4 DUP4 SUB ADD SWAP1 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 PUSH1 0x24 ADD DUP5 DUP4 ADD CALLDATACOPY PUSH1 0x4 PUSH1 0x64 CALLDATALOAD ADD CALLDATALOAD DUP2 DUP2 ADD DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD SUB ADD DUP2 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x281 JUMPI PUSH2 0x71F SWAP4 PUSH2 0x713 SWAP4 PUSH2 0x1179 JUMPI JUMPDEST POP SWAP2 POP SWAP2 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x1182 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST DUP5 PUSH2 0x1170 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x11AA DUP6 PUSH2 0x15ED JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP1 SWAP4 SUB PUSH2 0x256 JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x11E7 PUSH1 0x40 DUP8 ADD PUSH2 0x1B19 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1202 PUSH1 0x60 DUP9 ADD PUSH2 0x1B19 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP6 ADD SWAP4 ADD SWAP1 POP DUP7 SWAP4 SWAP3 SWAP2 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x1231 PUSH2 0x122A DUP3 DUP5 DUP7 PUSH2 0x1A13 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1AA0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP5 ADD GT OR PUSH2 0x28C JUMPI PUSH1 0x60 DUP3 ADD PUSH1 0x40 MSTORE PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP5 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0xC0 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0xC0 DUP5 ADD GT OR PUSH2 0x28C JUMPI PUSH1 0xC0 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x12EC PUSH1 0x24 PUSH1 0xC0 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x15ED JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x1302 PUSH1 0x44 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x15ED JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x131C PUSH1 0x64 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x15ED JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP8 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 SWAP1 SWAP5 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0x256 JUMPI PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP11 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x151C JUMPI JUMPDEST POP PUSH2 0x1513 JUMPI PUSH2 0x1415 PUSH2 0x1AEA JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP3 PUSH2 0x14DE JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x14A7 JUMPI POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0xF43 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x14B6 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x150B JUMPI JUMPDEST DUP2 PUSH2 0x14FA PUSH1 0x20 SWAP4 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x1492 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x14ED JUMP JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0x1525 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST DUP8 PUSH2 0x1408 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH0 DUP2 PUSH2 0x8B7 PUSH2 0x8F2 SWAP4 PUSH2 0x60A PUSH2 0x1578 PUSH2 0x15CA JUMP JUMPDEST PUSH32 0xD96AF07000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x24 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x256 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x256 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x256 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x256 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x256 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1699 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x16D5 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x163F JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x1689 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x256 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x256 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x256 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x28C JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x28C JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x28C JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x256 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x256 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x256 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1827 DUP3 PUSH2 0x17D7 JUMP JUMPDEST SWAP3 PUSH2 0x1835 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x17B4 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x256 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x256 JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH0 SWAP1 PUSH32 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 TLOAD AND ISZERO PUSH2 0x19EE JUMPI JUMPDEST PUSH32 0x0 SWAP5 DUP6 TLOAD PUSH2 0x19C6 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP8 TSTORE PUSH2 0x1914 DUP4 PUSH2 0x19FB JUMP JUMPDEST SWAP3 PUSH2 0x1922 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x17B4 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x1931 DUP3 PUSH2 0x19FB JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x19B5 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x196C JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x1961 SWAP4 SWAP3 SWAP6 TSTORE DUP1 TLOAD SWAP2 PUSH2 0x1963 JUMPI JUMPDEST POP PUSH2 0x1D6C JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x195B JUMP JUMPDEST DUP1 PUSH2 0x1999 PUSH0 DUP1 PUSH2 0x1981 PUSH2 0x122A DUP10 SWAP7 DUP9 DUP11 PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x1992 PUSH2 0x1AEA JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x1E27 JUMP JUMPDEST PUSH2 0x19A3 DUP3 DUP9 PUSH2 0x1AD6 JUMP JUMPDEST MSTORE PUSH2 0x19AE DUP2 DUP8 PUSH2 0x1AD6 JUMP JUMPDEST POP ADD PUSH2 0x193F JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x1934 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 POP CALLER DUP2 TSTORE PUSH1 0x1 SWAP2 PUSH2 0x18DC JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x28C JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1A73 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x256 JUMPI ADD SWAP1 DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x256 JUMPI PUSH1 0x20 ADD DUP3 CALLDATASIZE SUB DUP2 SGT PUSH2 0x256 JUMPI SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1AAC DUP3 PUSH2 0x17D7 JUMP JUMPDEST SWAP2 PUSH2 0x1ABA PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x17B4 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x256 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1A73 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1B14 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x1AFB DUP3 PUSH2 0x17D7 JUMP JUMPDEST SWAP2 PUSH2 0x1B09 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x17B4 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x256 JUMPI JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x19C6 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x1B98 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x1BD4 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND DUP2 PUSH32 0x0 AND SWAP6 DUP3 DUP5 GT PUSH2 0x1D3B JUMPI DUP3 AND SWAP5 DUP2 EXTCODESIZE ISZERO PUSH2 0x256 JUMPI PUSH1 0x84 DUP4 SWAP2 PUSH0 DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE DUP12 PUSH1 0x24 DUP6 ADD MSTORE DUP9 AND PUSH1 0x44 DUP5 ADD MSTORE DUP10 PUSH1 0x64 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x281 JUMPI PUSH2 0x1D24 JUMPI JUMPDEST POP PUSH1 0x44 DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1D18 JUMPI POP PUSH2 0x1CED JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x1BCE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1D11 JUMPI JUMPDEST PUSH2 0x1D03 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH0 PUSH2 0x1CE5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x1D31 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x1C99 JUMP JUMPDEST DUP4 PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE SWAP1 DUP2 ISZERO PUSH2 0x1E23 JUMPI PUSH32 0x0 TLOAD PUSH2 0x1E23 JUMPI DUP2 SELFBALANCE LT PUSH2 0x1DF7 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SWAP5 AND GAS CALL PUSH2 0x1DC7 PUSH2 0x1AEA JUMP JUMPDEST POP ISZERO PUSH2 0x1DCF JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH2 0x1E3C JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x1DCF JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x1E8F JUMPI JUMPDEST PUSH2 0x1E4D JUMPI POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x1E45 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH0 PUSH15 0x862A6D51C9F34A9628B5242DCD104B CODECOPY 0xBC PUSH17 0x4D784731D5A60645506713F764736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1151:8386:59:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;409:14:68;1151:8386:59;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;2845:83:62;1151:8386:59;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;2651:72:62;2689:23;;:::i;:::-;1151:8386:59;;;;;;:::i;:::-;;;;-1:-1:-1;;;1151:8386:59;;;;2651:72:62;:::i;:::-;;;2883:23;;:::i;:::-;-1:-1:-1;;;1151:8386:59;;;;;;:::i;:::-;;;;;;;2845:83:62;:::i;:::-;;;7155:12;;7177:18;;;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:72:62;1151:8386:59;;;;;;;;;;2845:83:62;1151:8386:59;;;;;;;;;;7155:12:62;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;-1:-1:-1;1151:8386:59;;;-1:-1:-1;1151:8386:59;;-1:-1:-1;1151:8386:59;;;;;;;;;2845:83:62;1151:8386:59;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;-1:-1:-1;1151:8386:59;;-1:-1:-1;1151:8386:59;;;;;;;;;-1:-1:-1;;;;;1151:8386:59;;;;;;;:::o;:::-;;;;;-1:-1:-1;;1151:8386:59;;;;-1:-1:-1;;;;;1151:8386:59;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1151:8386:59;;;;:::o;1276:306:44:-;;1461:67;1151:8386:59;1461:67:44;1276:306;1151:8386:59;;1461:67:44;;;;;;;1151:8386:59;;;;;;;;;;;;;;;;;-1:-1:-1;;;1151:8386:59;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;1461:67:44;;;;;;;;;:::i;:::-;1151:8386:59;1451:78:44;;-1:-1:-1;;1151:8386:59;;;;;;;;;1432:103:44;1461:67;1432:103;;1151:8386:59;;;1461:67:44;1432:103;;;;;:::i;:::-;1151:8386:59;;1405:144:44;;-1:-1:-1;;1405:170:44;;1276:306::o;1151:8386:59:-;;;;-1:-1:-1;1151:8386:59;;;;;-1:-1:-1;1151:8386:59"},"deployedBytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":6252,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_bytes_calldata_dyn_calldata":{"entryPoint":5646,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":6816,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":6131,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC4626":{"entryPoint":5613,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_contract_IERC4626_18925":{"entryPoint":5578,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_contract_IERC4626t_uint256t_uint256":{"entryPoint":5993,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_contract_IERC4626t_uint256t_uint256t_uint256":{"entryPoint":5934,"id":null,"parameterSlots":1,"returnSlots":4},"abi_decode_contract_IERC4626t_uint256t_uint256t_uint256t_address":{"entryPoint":5861,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_uint256t_uint256_fromMemory":{"entryPoint":6230,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint48":{"entryPoint":6937,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_array_bytes_dyn":{"entryPoint":5732,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":5695,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IERC4626_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_contract_IERC4626_uint256_uint256_uint256_address":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"array_allocation_size_array_bytes_dyn":{"entryPoint":6651,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":6103,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_bytes_calldata_dyn_calldata":{"entryPoint":6675,"id":null,"parameterSlots":3,"returnSlots":2},"extract_returndata":{"entryPoint":6890,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":6068,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_18928":{"entryPoint":6048,"id":null,"parameterSlots":1,"returnSlots":0},"fun_ensureOnlyVault":{"entryPoint":7001,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":6956,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_returnEth":{"entryPoint":7532,"id":18535,"parameterSlots":1,"returnSlots":0},"fun_takeTokenIn":{"entryPoint":7108,"id":18665,"parameterSlots":3,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":7719,"id":39838,"parameterSlots":3,"returnSlots":1},"memory_array_index_access_bytes_dyn":{"entryPoint":6870,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_saveSenderAndManageEth":{"entryPoint":6296,"id":18160,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"18063":[{"length":32,"start":2445},{"length":32,"start":6302}],"18073":[{"length":32,"start":6366},{"length":32,"start":7542}],"18092":[{"length":32,"start":49}],"18095":[{"length":32,"start":4094},{"length":32,"start":4389},{"length":32,"start":7148}],"27649":[{"length":32,"start":521},{"length":32,"start":836},{"length":32,"start":1270},{"length":32,"start":1645},{"length":32,"start":1962},{"length":32,"start":2316},{"length":32,"start":3090},{"length":32,"start":3527},{"length":32,"start":7024},{"length":32,"start":7183}]},"linkReferences":{},"object":"6080806040526004361015610081575b50361561001a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361005957005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c90816313f7bb4d146115535750806319c6989f14610e2b578063400f230d14610d255780634fe56ed614610b88578063502383f414610b0857806354fd4d50146109cb5780635e01eb5a14610979578063662727cc1461083a578063a390260414610723578063ac9650d8146106db578063b365a3c21461058a578063d96af0701461046a578063d9f70869146102b95763e0fefe3514610127575f61000f565b346102565761013536611769565b73ffffffffffffffffffffffffffffffffffffffff9182604051947fa3902604000000000000000000000000000000000000000000000000000000006020870152166024850152604484015260648301526064825260a082019082821067ffffffffffffffff83111761028c57815f91816040527fedfa3568000000000000000000000000000000000000000000000000000000008252602060a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608761020460c482018261163f565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610281575f9261025a575b505060208180518101031261025657602080910151604051908152f35b5f80fd5b61027a925060a0903d90815f853e61027282856117b4565b0101906117f3565b5f80610239565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610256576102c7366116e5565b91906102d4949394611b2c565b6102dc611b59565b6040517f653eb3b000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201879052604482018490526064820192909252838216608482015260209591937f00000000000000000000000000000000000000000000000000000000000000008516929091878160a4815f885af19687156102815788915f98610437575b50908692916024604051809581937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216978860048301525afa958615610281576103df966103da935f9161040a575b501683611bc4565b611bc4565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b61042a91508a3d8c11610430575b61042281836117b4565b81019061186c565b8a6103d2565b503d610418565b828194939299503d8311610463575b61045081836117b4565b8101031261025657905195879086610381565b503d610446565b3461025657604060031936011261025657608460406104876115ca565b61048f611b2c565b610497611b59565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937febc7955c00000000000000000000000000000000000000000000000000000000855216600484015260243560248401528160448401528160648401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610281576040915f915f9161055b575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b905061057d9150823d8411610583575b61057581836117b4565b810190611856565b8361052b565b503d61056b565b34610256576106535f61060a6106186105a23661172e565b6040517fd9f7086900000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b03601f1981018352826117b4565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061163f565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610281575f916106b9575b5060208180518101031261025657602080910151604051908152f35b6106d591503d805f833e6106cd81836117b4565b8101906117f3565b8161069d565b60206003193601126102565760043567ffffffffffffffff81116102565761071361070d61071f92369060040161160e565b90611898565b60405191829182611664565b0390f35b346102565760a4602061073536611769565b91610741949194611b2c565b610749611b59565b5f73ffffffffffffffffffffffffffffffffffffffff809460405197889687957f653eb3b0000000000000000000000000000000000000000000000000000000008752166004860152602485015260448401528160648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af18015610281575f90610807575b6020905f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b506020813d602011610832575b81610821602093836117b4565b8101031261025657602090516107d9565b3d9150610814565b34610256576040600319360112610256576108f25f61060a6108b761085d6115ca565b6040517f400f230d00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9091166024808301919091523560448201529182906064820190565b604051809381927fedfa356800000000000000000000000000000000000000000000000000000000835260206004840152602483019061163f565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190811561028157604091610953915f9161095f575b5060208082518301019101611856565b82519182526020820152f35b61097391503d805f833e6106cd81836117b4565b83610943565b34610256575f6003193601126102565760207f00000000000000000000000000000000000000000000000000000000000000005c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610256575f600319360112610256576040515f80549060018260011c9160018416918215610afe575b6020948585108414610ad15785879486865291825f14610a93575050600114610a3a575b50610a26925003836117b4565b61071f60405192828493845283019061163f565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b858310610a7b575050610a26935082010185610a19565b80548389018501528794508693909201918101610a64565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152610a2695151560051b8501019250879150610a199050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f16926109f5565b34610256576108f25f61060a610618610b203661172e565b6040517f4fe56ed600000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b3461025657610b96366116e5565b93919092610ba2611b2c565b610baa611b59565b604080517fe2a92b1a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482019390935260448101939093526064830194909452848116608483015290927f00000000000000000000000000000000000000000000000000000000000000008216908460a4815f855af1928315610281575f945f94610cf8575b5090602083926024604051809681937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216948560048301525afa958615610281576103da868694604099610caa975f91610cd957501683611bc4565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b610cf2915060203d6020116104305761042281836117b4565b8b6103d2565b602095508392919450610d199060403d6040116105835761057581836117b4565b95909594919250610c4c565b346102565760406003193601126102565760a46040610d426115ca565b610d4a611b2c565b610d52611b59565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937fe2a92b1a0000000000000000000000000000000000000000000000000000000085521660048401526fffffffffffffffffffffffffffffffff806024850152604484015260243560648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610281576040915f915f9161055b57505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b60a06003193601126102565767ffffffffffffffff60043511610256573660236004350112156102565767ffffffffffffffff60043560040135116102565736602460c060043560040135026004350101116102565760243567ffffffffffffffff811161025657610ea190369060040161160e565b67ffffffffffffffff60443511610256576060600319604435360301126102565767ffffffffffffffff60643511610256573660236064350112156102565767ffffffffffffffff606435600401351161025657366024606435600401356064350101116102565760843567ffffffffffffffff811161025657610f2990369060040161160e565b929091610f34611b2c565b80600435600401350361152b575f5b60043560040135811061121c57505050604435600401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030181121561025657806044350160048101359067ffffffffffffffff82116102565760248260071b360391011361025657610fe6575b61071f61071384845f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d611898565b9173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561025657604051927f2a2d80d10000000000000000000000000000000000000000000000000000000084523360048501526060602485015260c484019060443501602481019167ffffffffffffffff60048301351161025657600482013560071b36038313610256576060606487015260048201359052849160e48301915f905b6004810135821061118857505050906020815f9373ffffffffffffffffffffffffffffffffffffffff6110d86024604435016115ed565b1660848301526044803581013560a4840152600319838303019083015260643560048101358083529060240184830137600460643501358181018401869052601f01601f191601030181837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165af19182156102815761071f9361071393611179575b50915091610fb6565b611182906117a0565b84611170565b9193509173ffffffffffffffffffffffffffffffffffffffff6111aa856115ed565b1681526020808501359173ffffffffffffffffffffffffffffffffffffffff8316809303610256576004926001928201526111e760408701611b19565b65ffffffffffff809116604083015261120260608801611b19565b1660608201526080809101950193019050869392916110a1565b61123161122a828486611a13565b3691611aa0565b6040519081606081011067ffffffffffffffff60608401111761028c57606082016040525f82525f60208301525f6040830152602081015190606060408201519101515f1a9183526020830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc818402600435013603011261025657604051908160c081011067ffffffffffffffff60c08401111761028c5760c082016040526112ec602460c0850260043501016115ed565b808352611302604460c0860260043501016115ed565b9081602085015261131c606460c0870260043501016115ed565b60408581019190915260043560c08702016084810135606087015260a4810135608087015260c4013560a0860152830151835160209094015160ff919091169273ffffffffffffffffffffffffffffffffffffffff83163b15610256575f73ffffffffffffffffffffffffffffffffffffffff809460e4948a98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af1908161151c575b5061151357611415611aea565b9073ffffffffffffffffffffffffffffffffffffffff81511690602073ffffffffffffffffffffffffffffffffffffffff81830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610281575f926114de575b5060600151036114a757506001905b01610f43565b8051156114b657805190602001fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091506020813d60201161150b575b816114fa602093836117b4565b810103126102565751906060611492565b3d91506114ed565b506001906114a1565b611525906117a0565b87611408565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610256576040600319360112610256575f816108b76108f29361060a6115786115ca565b7fd96af07000000000000000000000000000000000000000000000000000000000602084015273ffffffffffffffffffffffffffffffffffffffff166024808401919091523560448301526064820190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361025657565b359073ffffffffffffffffffffffffffffffffffffffff8216820361025657565b9181601f840112156102565782359167ffffffffffffffff8311610256576020808501948460051b01011161025657565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106116995750505050505090565b90919293949584806116d5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a5161163f565b9801930193019194939290611689565b60031960a09101126102565773ffffffffffffffffffffffffffffffffffffffff6004358181168103610256579160243591604435916064359160843590811681036102565790565b60031960809101126102565760043573ffffffffffffffffffffffffffffffffffffffff811681036102565790602435906044359060643590565b60031960609101126102565760043573ffffffffffffffffffffffffffffffffffffffff8116810361025657906024359060443590565b67ffffffffffffffff811161028c57604052565b90601f601f19910116810190811067ffffffffffffffff82111761028c57604052565b67ffffffffffffffff811161028c57601f01601f191660200190565b6020818303126102565780519067ffffffffffffffff8211610256570181601f8201121561025657805190611827826117d7565b9261183560405194856117b4565b8284526020838301011161025657815f9260208093018386015e8301015290565b9190826040910312610256576020825192015190565b90816020910312610256575173ffffffffffffffffffffffffffffffffffffffff811681036102565790565b91905f907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff825c16156119ee575b7f000000000000000000000000000000000000000000000000000000000000000094855c6119c6576001906001875d611914836119fb565b9261192260405194856117b4565b808452601f19611931826119fb565b015f5b8181106119b55750505f5b81811061196c5750505050905f6119619392955d805c91611963575b50611d6c565b565b5f905d5f61195b565b806119995f8061198161122a8996888a611a13565b602081519101305af4611992611aea565b9030611e27565b6119a38288611ad6565b526119ae8187611ad6565b500161193f565b806060602080938901015201611934565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b915033815d6001916118dc565b67ffffffffffffffff811161028c5760051b60200190565b9190811015611a735760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561025657019081359167ffffffffffffffff8311610256576020018236038113610256579190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b929192611aac826117d7565b91611aba60405193846117b4565b829481845281830111610256578281602093845f960137010152565b8051821015611a735760209160051b010190565b3d15611b14573d90611afb826117d7565b91611b0960405193846117b4565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361025657565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6119c6576001905d565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611b9857565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b90915f9080611bd4575b50505050565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016817f00000000000000000000000000000000000000000000000000000000000000001695828411611d3b57821694813b1561025657608483915f809460405196879586947f36c785160000000000000000000000000000000000000000000000000000000086521660048501528b6024850152881660448401528960648401525af1801561028157611d24575b506044829360209360405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115611d185750611ced575b808080611bce565b602090813d8311611d11575b611d0381836117b4565b81010312610256575f611ce5565b503d611cf9565b604051903d90823e3d90fd5b60209250611d31906117a0565b60445f9250611c99565b837f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b47908115611e23577f00000000000000000000000000000000000000000000000000000000000000005c611e2357814710611df7575f80809373ffffffffffffffffffffffffffffffffffffffff8294165af1611dc7611aea565b5015611dcf57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b5050565b90611e3c5750805115611dcf57805190602001fd5b81511580611e8f575b611e4d575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15611e4556fea26469706673582212205f6e862a6d51c9f34a9628b5242dcd104b39bc704d784731d5a60645506713f764736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x81 JUMPI JUMPDEST POP CALLDATASIZE ISZERO PUSH2 0x1A JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x59 JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x13F7BB4D EQ PUSH2 0x1553 JUMPI POP DUP1 PUSH4 0x19C6989F EQ PUSH2 0xE2B JUMPI DUP1 PUSH4 0x400F230D EQ PUSH2 0xD25 JUMPI DUP1 PUSH4 0x4FE56ED6 EQ PUSH2 0xB88 JUMPI DUP1 PUSH4 0x502383F4 EQ PUSH2 0xB08 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x9CB JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x979 JUMPI DUP1 PUSH4 0x662727CC EQ PUSH2 0x83A JUMPI DUP1 PUSH4 0xA3902604 EQ PUSH2 0x723 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xB365A3C2 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xD96AF070 EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0xD9F70869 EQ PUSH2 0x2B9 JUMPI PUSH4 0xE0FEFE35 EQ PUSH2 0x127 JUMPI PUSH0 PUSH2 0xF JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x135 CALLDATASIZE PUSH2 0x1769 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xA390260400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x28C JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0x204 PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x163F JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP3 PUSH2 0x25A JUMPI JUMPDEST POP POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x27A SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0x272 DUP3 DUP6 PUSH2 0x17B4 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x17F3 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x239 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x2C7 CALLDATASIZE PUSH2 0x16E5 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2D4 SWAP5 SWAP4 SWAP5 PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0x2DC PUSH2 0x1B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 DUP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x20 SWAP6 SWAP2 SWAP4 PUSH32 0x0 DUP6 AND SWAP3 SWAP1 SWAP2 DUP8 DUP2 PUSH1 0xA4 DUP2 PUSH0 DUP9 GAS CALL SWAP7 DUP8 ISZERO PUSH2 0x281 JUMPI DUP9 SWAP2 PUSH0 SWAP9 PUSH2 0x437 JUMPI JUMPDEST POP SWAP1 DUP7 SWAP3 SWAP2 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP8 DUP9 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x281 JUMPI PUSH2 0x3DF SWAP7 PUSH2 0x3DA SWAP4 PUSH0 SWAP2 PUSH2 0x40A JUMPI JUMPDEST POP AND DUP4 PUSH2 0x1BC4 JUMP JUMPDEST PUSH2 0x1BC4 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x42A SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x430 JUMPI JUMPDEST PUSH2 0x422 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x186C JUMP JUMPDEST DUP11 PUSH2 0x3D2 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x418 JUMP JUMPDEST DUP3 DUP2 SWAP5 SWAP4 SWAP3 SWAP10 POP RETURNDATASIZE DUP4 GT PUSH2 0x463 JUMPI JUMPDEST PUSH2 0x450 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI SWAP1 MLOAD SWAP6 DUP8 SWAP1 DUP7 PUSH2 0x381 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x446 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x84 PUSH1 0x40 PUSH2 0x487 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0x48F PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0x497 PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xEBC7955C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x24 DUP5 ADD MSTORE DUP2 PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x55B JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 POP PUSH2 0x57D SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x583 JUMPI JUMPDEST PUSH2 0x575 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1856 JUMP JUMPDEST DUP4 PUSH2 0x52B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x56B JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x653 PUSH0 PUSH2 0x60A PUSH2 0x618 PUSH2 0x5A2 CALLDATASIZE PUSH2 0x172E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9F7086900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x17B4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x163F JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP2 PUSH2 0x6B9 JUMPI JUMPDEST POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x6D5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x6CD DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x17F3 JUMP JUMPDEST DUP2 PUSH2 0x69D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x256 JUMPI PUSH2 0x713 PUSH2 0x70D PUSH2 0x71F SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x160E JUMP JUMPDEST SWAP1 PUSH2 0x1898 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1664 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0xA4 PUSH1 0x20 PUSH2 0x735 CALLDATASIZE PUSH2 0x1769 JUMP JUMPDEST SWAP2 PUSH2 0x741 SWAP5 SWAP2 SWAP5 PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0x749 PUSH2 0x1B59 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP1 PUSH2 0x807 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x832 JUMPI JUMPDEST DUP2 PUSH2 0x821 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH2 0x7D9 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x814 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH2 0x8F2 PUSH0 PUSH2 0x60A PUSH2 0x8B7 PUSH2 0x85D PUSH2 0x15CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x400F230D00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x163F JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH1 0x40 SWAP2 PUSH2 0x953 SWAP2 PUSH0 SWAP2 PUSH2 0x95F JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x1856 JUMP JUMPDEST DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x973 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x6CD DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP4 PUSH2 0x943 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0xAFE JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0xAD1 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0xA93 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xA3A JUMPI JUMPDEST POP PUSH2 0xA26 SWAP3 POP SUB DUP4 PUSH2 0x17B4 JUMP JUMPDEST PUSH2 0x71F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x163F JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0xA7B JUMPI POP POP PUSH2 0xA26 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xA19 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xA64 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0xA26 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0xA19 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x9F5 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0x8F2 PUSH0 PUSH2 0x60A PUSH2 0x618 PUSH2 0xB20 CALLDATASIZE PUSH2 0x172E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FE56ED600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH2 0xB96 CALLDATASIZE PUSH2 0x16E5 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 PUSH2 0xBA2 PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0xBAA PUSH2 0x1B59 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP1 SWAP3 PUSH32 0x0 DUP3 AND SWAP1 DUP5 PUSH1 0xA4 DUP2 PUSH0 DUP6 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP5 PUSH0 SWAP5 PUSH2 0xCF8 JUMPI JUMPDEST POP SWAP1 PUSH1 0x20 DUP4 SWAP3 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP5 DUP6 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x281 JUMPI PUSH2 0x3DA DUP7 DUP7 SWAP5 PUSH1 0x40 SWAP10 PUSH2 0xCAA SWAP8 PUSH0 SWAP2 PUSH2 0xCD9 JUMPI POP AND DUP4 PUSH2 0x1BC4 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0xCF2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x430 JUMPI PUSH2 0x422 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP12 PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0x20 SWAP6 POP DUP4 SWAP3 SWAP2 SWAP5 POP PUSH2 0xD19 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x583 JUMPI PUSH2 0x575 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP3 POP PUSH2 0xC4C JUMP JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH1 0xA4 PUSH1 0x40 PUSH2 0xD42 PUSH2 0x15CA JUMP JUMPDEST PUSH2 0xD4A PUSH2 0x1B2C JUMP JUMPDEST PUSH2 0xD52 PUSH2 0x1B59 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x281 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x55B JUMPI POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x256 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x256 JUMPI PUSH2 0xEA1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x160E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x256 JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x64 CALLDATALOAD ADD SLT ISZERO PUSH2 0x256 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x256 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH1 0x64 CALLDATALOAD ADD ADD GT PUSH2 0x256 JUMPI PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x256 JUMPI PUSH2 0xF29 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x160E JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0xF34 PUSH2 0x1B2C JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x152B JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x121C JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x256 JUMPI DUP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x256 JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x256 JUMPI PUSH2 0xFE6 JUMPI JUMPDEST PUSH2 0x71F PUSH2 0x713 DUP5 DUP5 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x1898 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0xC4 DUP5 ADD SWAP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x256 JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x256 JUMPI PUSH1 0x60 PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE DUP5 SWAP2 PUSH1 0xE4 DUP4 ADD SWAP2 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x1188 JUMPI POP POP POP SWAP1 PUSH1 0x20 DUP2 PUSH0 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x10D8 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x15ED JUMP JUMPDEST AND PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD DUP2 ADD CALLDATALOAD PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0x3 NOT DUP4 DUP4 SUB ADD SWAP1 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 PUSH1 0x24 ADD DUP5 DUP4 ADD CALLDATACOPY PUSH1 0x4 PUSH1 0x64 CALLDATALOAD ADD CALLDATALOAD DUP2 DUP2 ADD DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD SUB ADD DUP2 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x281 JUMPI PUSH2 0x71F SWAP4 PUSH2 0x713 SWAP4 PUSH2 0x1179 JUMPI JUMPDEST POP SWAP2 POP SWAP2 PUSH2 0xFB6 JUMP JUMPDEST PUSH2 0x1182 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST DUP5 PUSH2 0x1170 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x11AA DUP6 PUSH2 0x15ED JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP1 SWAP4 SUB PUSH2 0x256 JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x11E7 PUSH1 0x40 DUP8 ADD PUSH2 0x1B19 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1202 PUSH1 0x60 DUP9 ADD PUSH2 0x1B19 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP6 ADD SWAP4 ADD SWAP1 POP DUP7 SWAP4 SWAP3 SWAP2 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x1231 PUSH2 0x122A DUP3 DUP5 DUP7 PUSH2 0x1A13 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1AA0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP5 ADD GT OR PUSH2 0x28C JUMPI PUSH1 0x60 DUP3 ADD PUSH1 0x40 MSTORE PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP5 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0xC0 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0xC0 DUP5 ADD GT OR PUSH2 0x28C JUMPI PUSH1 0xC0 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x12EC PUSH1 0x24 PUSH1 0xC0 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x15ED JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x1302 PUSH1 0x44 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x15ED JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x131C PUSH1 0x64 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x15ED JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP8 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 SWAP1 SWAP5 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0x256 JUMPI PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP11 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x151C JUMPI JUMPDEST POP PUSH2 0x1513 JUMPI PUSH2 0x1415 PUSH2 0x1AEA JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x281 JUMPI PUSH0 SWAP3 PUSH2 0x14DE JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x14A7 JUMPI POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0xF43 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x14B6 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x150B JUMPI JUMPDEST DUP2 PUSH2 0x14FA PUSH1 0x20 SWAP4 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x1492 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x14ED JUMP JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x14A1 JUMP JUMPDEST PUSH2 0x1525 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST DUP8 PUSH2 0x1408 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x256 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x256 JUMPI PUSH0 DUP2 PUSH2 0x8B7 PUSH2 0x8F2 SWAP4 PUSH2 0x60A PUSH2 0x1578 PUSH2 0x15CA JUMP JUMPDEST PUSH32 0xD96AF07000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x24 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x256 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x256 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x256 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x256 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x256 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1699 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x16D5 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x163F JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x1689 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x256 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x256 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x256 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x28C JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x28C JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x28C JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x256 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x256 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x256 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1827 DUP3 PUSH2 0x17D7 JUMP JUMPDEST SWAP3 PUSH2 0x1835 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x17B4 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x256 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x256 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x256 JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x256 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH0 SWAP1 PUSH32 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 TLOAD AND ISZERO PUSH2 0x19EE JUMPI JUMPDEST PUSH32 0x0 SWAP5 DUP6 TLOAD PUSH2 0x19C6 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP8 TSTORE PUSH2 0x1914 DUP4 PUSH2 0x19FB JUMP JUMPDEST SWAP3 PUSH2 0x1922 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x17B4 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x1931 DUP3 PUSH2 0x19FB JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x19B5 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x196C JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x1961 SWAP4 SWAP3 SWAP6 TSTORE DUP1 TLOAD SWAP2 PUSH2 0x1963 JUMPI JUMPDEST POP PUSH2 0x1D6C JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x195B JUMP JUMPDEST DUP1 PUSH2 0x1999 PUSH0 DUP1 PUSH2 0x1981 PUSH2 0x122A DUP10 SWAP7 DUP9 DUP11 PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x1992 PUSH2 0x1AEA JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x1E27 JUMP JUMPDEST PUSH2 0x19A3 DUP3 DUP9 PUSH2 0x1AD6 JUMP JUMPDEST MSTORE PUSH2 0x19AE DUP2 DUP8 PUSH2 0x1AD6 JUMP JUMPDEST POP ADD PUSH2 0x193F JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x1934 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 POP CALLER DUP2 TSTORE PUSH1 0x1 SWAP2 PUSH2 0x18DC JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x28C JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1A73 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x256 JUMPI ADD SWAP1 DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x256 JUMPI PUSH1 0x20 ADD DUP3 CALLDATASIZE SUB DUP2 SGT PUSH2 0x256 JUMPI SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1AAC DUP3 PUSH2 0x17D7 JUMP JUMPDEST SWAP2 PUSH2 0x1ABA PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x17B4 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x256 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1A73 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1B14 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x1AFB DUP3 PUSH2 0x17D7 JUMP JUMPDEST SWAP2 PUSH2 0x1B09 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x17B4 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x256 JUMPI JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x19C6 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x1B98 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x1BD4 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND DUP2 PUSH32 0x0 AND SWAP6 DUP3 DUP5 GT PUSH2 0x1D3B JUMPI DUP3 AND SWAP5 DUP2 EXTCODESIZE ISZERO PUSH2 0x256 JUMPI PUSH1 0x84 DUP4 SWAP2 PUSH0 DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE DUP12 PUSH1 0x24 DUP6 ADD MSTORE DUP9 AND PUSH1 0x44 DUP5 ADD MSTORE DUP10 PUSH1 0x64 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x281 JUMPI PUSH2 0x1D24 JUMPI JUMPDEST POP PUSH1 0x44 DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1D18 JUMPI POP PUSH2 0x1CED JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x1BCE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1D11 JUMPI JUMPDEST PUSH2 0x1D03 DUP2 DUP4 PUSH2 0x17B4 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x256 JUMPI PUSH0 PUSH2 0x1CE5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1CF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x1D31 SWAP1 PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x1C99 JUMP JUMPDEST DUP4 PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE SWAP1 DUP2 ISZERO PUSH2 0x1E23 JUMPI PUSH32 0x0 TLOAD PUSH2 0x1E23 JUMPI DUP2 SELFBALANCE LT PUSH2 0x1DF7 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SWAP5 AND GAS CALL PUSH2 0x1DC7 PUSH2 0x1AEA JUMP JUMPDEST POP ISZERO PUSH2 0x1DCF JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH2 0x1E3C JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x1DCF JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x1E8F JUMPI JUMPDEST PUSH2 0x1E4D JUMPI POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x1E45 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH0 PUSH15 0x862A6D51C9F34A9628B5242DCD104B CODECOPY 0xBC PUSH17 0x4D784731D5A60645506713F764736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1151:8386:59:-:0;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;16367:5:62;1151:8386:59;16345:10:62;:28;16341:79;;1151:8386:59;16341:79:62;16396:13;;;1151:8386:59;16396:13:62;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7582:172;1151:8386;7582:172;;;1151:8386;;;;;2047:392;1151:8386;2047:392;;;1151:8386;;;;;;3670:184;;;1151:8386;;;;;;;;;;:::i;:::-;;;;;;7084:187;;;;;;1151:8386;7084:187;;;1151:8386;;;;;;;;;;7084:187;;1151:8386;;;;;;;;;;;;;;;;;;;;7050:239;;7084:187;7050:239;;;1151:8386;;;7050:239;1151:8386;;;;;;;:::i;:::-;7050:239;;:6;;1151:8386;7050:239;;;;;;;1151:8386;7050:239;;;1151:8386;;;7084:187;1151:8386;;;7022:308;;1151:8386;;;;7084:187;7022:308;;;1151:8386;;;;;;;;;;;7050:239;;;;1151:8386;7050:239;;;;1151:8386;7050:239;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;1151:8386;;;;;;;;;;;;;;;;7084:187;1151:8386;;;;;;;;;:::i;:::-;1083:103:50;;;;;;;:::i;:::-;436:67:68;;:::i;:::-;1151:8386:59;;;3670:184;;1151:8386;;;;;3670:184;;1151:8386;;;;;;;;;;;;;;;;;;;;;;;;;;;3670:184;;1151:8386;;3670:6;1151:8386;;;;;3670:184;1151:8386;;;-1:-1:-1;1151:8386:59;3670:184;;;;;;;;;1151:8386;3670:184;;;1151:8386;;;;;;;;;3881:42;;;;1151:8386;3881:42;;1151:8386;3881:42;;1151:8386;3881:42;;1151:8386;3881:42;;;;;;;4094:5;3881:42;3999:5;3881:42;1151:8386;3881:42;;;1151:8386;;;3999:5;;:::i;:::-;4094;:::i;:::-;1151:8386;551:66:50;3051:52:52;1151:8386:59;;;;;;3881:42;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3670:184;;;;;;;;;;;;;;;;;;:::i;:::-;;;1151:8386;;;;;;;;;;3670:184;;;;;;;1151:8386;;;;;-1:-1:-1;;1151:8386:59;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;1151:8386:59;;;;;;;9455:73;;;;;1151:8386;9455:73;;1151:8386;;9455:73;;1151:8386;;;;;;;;;;;;;;;;;9455:6;1151:8386;9455:73;;;;;;;1151:8386;9455:73;1151:8386;;;9455:73;;;1151:8386;3051:52:52;1151:8386:59;551:66:50;3051:52:52;1151:8386:59;;;;;;;;;;9455:73;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1151:8386;;;;;;2047:392;;1151:8386;;;:::i;:::-;;;2047:392;;;;;1151:8386;;;;2047:392;;;1151:8386;;;;;;;;;;;;;;;;2366:10;1151:8386;;;;;;;;;;;;2047:392;;-1:-1:-1;;2047:392:59;;;;;;:::i;:::-;1151:8386;;2012:445;;;;1151:8386;2012:445;;2047:392;1151:8386;2012:445;;1151:8386;2047:392;1151:8386;;;;:::i;:::-;2012:445;:6;;1151:8386;2012:6;1151:8386;2012:445;;;;;;;1151:8386;2012:445;;;1151:8386;;2047:392;1151:8386;;;1984:514;;1151:8386;;;;2047:392;1984:514;;;1151:8386;;;;;;;2012:445;;;;;;1151:8386;2012:445;;;;;;:::i;:::-;;;;;:::i;:::-;;;;1151:8386;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;11039:22:62;1151:8386:59;;;;;;;;:::i;:::-;11039:22:62;;:::i;:::-;1151:8386:59;;;;;;;:::i;:::-;;;;;;;;;7582:172;1151:8386;;;:::i;:::-;1083:103:50;;;;;;:::i;:::-;436:67:68;;:::i;:::-;1151:8386:59;;;;;;7582:172;;;;;1151:8386;7582:172;;1151:8386;;7582:172;;1151:8386;;;;;;;;;;;;;;7739:4;1151:8386;;;;7582:6;1151:8386;7582:172;;;;;;1151:8386;7582:172;;;1151:8386;7582:172;3051:52:52;1151:8386:59;551:66:50;3051:52:52;1151:8386:59;;;;;;7582:172;;;;;;;;;;;;;;;;:::i;:::-;;;1151:8386;;;;7582:172;1151:8386;;7582:172;;;;;-1:-1:-1;7582:172:59;;1151:8386;;;;;-1:-1:-1;;1151:8386:59;;;;;;;8071:94;;1151:8386;;:::i;:::-;;;8071:94;1151:8386;8071:94;;;1151:8386;;;;;8071:94;;;1151:8386;;;;;;;;;;;;;;;;;8071:94;1151:8386;;8037:146;;;;1151:8386;8037:146;;1151:8386;;8037:146;;1151:8386;;;;;;:::i;:::-;8037:146;:6;;1151:8386;8037:6;1151:8386;8037:146;;;;;;;1151:8386;8037:146;8009:224;8037:146;1151:8386;8037:146;;;1151:8386;;;;;;8009:224;;;;;;:::i;:::-;1151:8386;;;;;;;;;;8037:146;;;;;;1151:8386;8037:146;;;;;;:::i;:::-;;;;1151:8386;;;;;-1:-1:-1;;1151:8386:59;;;;;;16677:12:62;2295:53:52;1151:8386:59;;;;;;;;;;;;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;-1:-1:-1;1151:8386:59;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;4488:395;;1151:8386;;;:::i;:::-;;;4488:395;;;;;1151:8386;;;;4488:395;;;1151:8386;;;;;;;;;;;;;;;;4810:10;1151:8386;;;;;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;;:::i;:::-;436:67:68;;:::i;:::-;1151:8386:59;;;;6336:187;;1151:8386;;;;;6336:187;;1151:8386;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6336:6;1151:8386;;;;;;-1:-1:-1;1151:8386:59;6336:187;;;;;;;1151:8386;;;6336:187;;;1151:8386;;;6550:42;1151:8386;;;;;6550:42;;;;1151:8386;6550:42;;1151:8386;6550:42;;1151:8386;6550:42;;1151:8386;6550:42;;;;;;;6663:5;6550:42;;;1151:8386;6550:42;6753:5;6550:42;1151:8386;6550:42;;;1151:8386;;6663:5;;:::i;6753:::-;1151:8386;551:66:50;3051:52:52;1151:8386:59;;;;;6550:42;1151:8386;;;;6550:42;;;;;;;;;;;;;;:::i;:::-;;;;6336:187;6550:42;6336:187;;;;;;;;;1151:8386;6336:187;1151:8386;6336:187;;;;;;;:::i;:::-;;;;;;;;;;1151:8386;;;;;-1:-1:-1;;1151:8386:59;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;1151:8386:59;;;;;;;8502:184;;;;;1151:8386;8502:184;;1151:8386;;8502:184;;1151:8386;8569:17;1151:8386;;;;;;;;;;;;;;;8671:4;1151:8386;;;;8502:6;1151:8386;8502:184;;;;;;;1151:8386;8502:184;1151:8386;;;8502:184;;;3051:52:52;1151:8386:59;551:66:50;3051:52:52;1151:8386:59;;;;;;;;;;;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;:::i;:::-;1151:8386:59;;;;;;1500:6:40;1496:65;;1151:8386:59;8604:22:62;1151:8386:59;;;;;8604:22:62;;;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10022:860:62;;8584:1371;1151:8386:59;11039:22:62;3051:52:52;;1151:8386:59;551:66:50;3051:52:52;11039:22:62;:::i;10022:860::-;10812:8;1151:8386:59;10812:8:62;1151:8386:59;10812:59:62;;;;1151:8386:59;;10812:59:62;1151:8386:59;10812:59:62;;10828:10;1151:8386:59;10812:59:62;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1151:8386:59;;10812:59:62;;:8;1151:8386:59;10812:8:62;1151:8386:59;;10812:59:62;;;;;;;1151:8386:59;10812:59:62;11039:22;10812:59;;;1151:8386:59;10022:860:62;;;;;;10812:59;;;;:::i;:::-;;;;1151:8386:59;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;8628:3:62;1151:8386:59;8672:19:62;;;;;:::i;:::-;1151:8386:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11519:180:62;;;;1151:8386:59;;11519:180:62;;;;;;1151:8386:59;11519:180:62;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;1151:8386:59;;;;;;;;;;;;;;8876:338:62;;;;;1151:8386:59;8876:338:62;;1151:8386:59;;8876:338:62;;1151:8386:59;8989:4:62;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;;;8628:3;-1:-1:-1;8856:1089:62;;9341:604;;:::i;:::-;1151:8386:59;;;;;;;;;;;;;;;;9614:75:62;;;;1151:8386:59;9614:75:62;;1151:8386:59;9614:75:62;;1151:8386:59;8989:4:62;1151:8386:59;;;;9614:75:62;;;;;;;1151:8386:59;9614:75:62;;;8856:1089;1151:8386:59;;;;9614:100:62;9589:342;;8856:1089;1151:8386:59;8856:1089:62;;1151:8386:59;8589:13:62;;9589:342;1151:8386:59;;1881:21:42;:17;;2008:160;;;1151:8386:59;2008:160:42;;1877:362;2205:23;1151:8386:59;2205:23:42;1151:8386:59;;2205:23:42;9614:75:62;;;;1151:8386:59;9614:75:62;;1151:8386:59;9614:75:62;;;;;;1151:8386:59;9614:75:62;;;:::i;:::-;;;1151:8386:59;;;;;;;9614:75:62;;;;;-1:-1:-1;9614:75:62;;8856:1089;;1151:8386:59;8856:1089:62;;;8876:338;;;;:::i;:::-;;;;1496:65:40;1529:21;1151:8386:59;1529:21:40;1151:8386:59;;1529:21:40;1151:8386:59;;;;;-1:-1:-1;;1151:8386:59;;;;;;;9027:100;1151:8386;;9027:100;1151:8386;;:::i;:::-;9027:100;1151:8386;9027:100;;;1151:8386;;;9027:100;;;1151:8386;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;-1:-1:-1;;1151:8386:59;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1151:8386:59;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;5703:590:62:-;;;-1:-1:-1;16677:12:62;;2295:53:52;1151:8386:59;2295:53:52;;1151:8386:59;6524:25:62;6520:124;;5703:590;16826:26;2806:53:52;;;5897:100:62;;6090:4;3051:52:52;6090:4:62;3051:52:52;;1151:8386:59;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1151:8386:59;;;:::i;:::-;;-1:-1:-1;1151:8386:59;;;;;;11122:13:62;;-1:-1:-1;11137:15:62;;;;;;6105:1;;;;;-1:-1:-1;6279:6:62;6105:1;;3051:52:52;;2295:53;;6887:82:62;;;11117:132;6279:6;;:::i;:::-;5703:590::o;6887:82::-;-1:-1:-1;3051:52:52;;6887:82:62;;;11154:3;11230:7;4297:55:99;-1:-1:-1;11230:7:62;1151:8386:59;11230:7:62;;;;;;:::i;1151:8386:59:-;;4255:25:99;;;;11223:4:62;4255:25:99;;;;:::i;:::-;11223:4:62;;4297:55:99;:::i;:::-;11173:65:62;;;;:::i;:::-;;;;;;:::i;:::-;;1151:8386:59;11122:13:62;;1151:8386:59;;;;;;;;;;;;;5897:100:62;5956:30;-1:-1:-1;5956:30:62;;-1:-1:-1;5956:30:62;6520:124;5783:10;;;3051:52:52;;6629:4:62;6520:124;;;1151:8386:59;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1151:8386:59;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1151:8386:59;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;1192:349:50:-;551:66;2295:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;509:165:68:-;1151:8386:59;586:6:68;1151:8386:59;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;1151:8386:59;;616:41:68;;13763:872:62;;;1151:8386:59;14379:12:62;;14375:244;;13763:872;;;;;:::o;14375:244::-;1151:8386:59;14468:8:62;;1151:8386:59;14506:6:62;;1151:8386:59;7303:25:111;;;;7299:105;;1151:8386:59;;14468:86:62;;;;;;1151:8386:59;;;;;;;;14468:86:62;;;;;1151:8386:59;14468:86:62;;1151:8386:59;14468:86:62;;;1151:8386:59;;;;;;;;;;;;;;;;;14468:86:62;;;;;;;;14375:244;1151:8386:59;;;;;;;;14572:32:62;;;;;1151:8386:59;14572:32:62;;14468:86;14572:32;;1151:8386:59;;;;;14572:32:62;;;;;;;;;;14375:244;;;;;;14572:32;1151:8386:59;14572:32:62;;;;;;;;;;;;:::i;:::-;;;1151:8386:59;;;;14572:32:62;;;;;;;;;1151:8386:59;;;;;;;;;;14468:86:62;1151:8386:59;14468:86:62;;;;;:::i;:::-;1151:8386:59;;14468:86:62;;;;7299:105:111;7351:42;;1151:8386:59;7351:42:111;7382:3;7351:42;1151:8386:59;;;;;7351:42:111;12478:584:62;12714:21;12749:11;;;12745:48;;16826:26;2295:53:52;12943:69:62;;1616:21:99;;:30;1612:109;;12759:1:62;1151:8386:59;;;;;;;1750:33:99;;;;:::i;:::-;;1797:8;1793:63;;12478:584:62:o;1793:63:99:-;1828:17;12759:1:62;1828:17:99;;12759:1:62;1828:17:99;1612:109;1669:41;12759:1:62;1669:41:99;12722:4:62;1669:41:99;1151:8386:59;;12759:1:62;1669:41:99;12943:69:62;12995:7;;:::o;4625:582:99:-;;4797:8;;-1:-1:-1;1151:8386:59;;5874:21:99;:17;;6046:142;;;;;;4793:408;1151:8386:59;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;1151:8386:59;5121:24:99;;5066:1;5121:24;1151:8386:59;5121:24:99;1151:8386:59;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;"},"methodIdentifiers":{"addLiquidityToBuffer(address,uint256,uint256,uint256)":"502383f4","addLiquidityToBufferHook(address,uint256,uint256,uint256,address)":"4fe56ed6","getSender()":"5e01eb5a","initializeBuffer(address,uint256,uint256,uint256)":"b365a3c2","initializeBufferHook(address,uint256,uint256,uint256,address)":"d9f70869","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","queryAddLiquidityToBuffer(address,uint256)":"662727cc","queryAddLiquidityToBufferHook(address,uint256)":"400f230d","queryInitializeBuffer(address,uint256,uint256)":"e0fefe35","queryInitializeBufferHook(address,uint256,uint256)":"a3902604","queryRemoveLiquidityFromBuffer(address,uint256)":"13f7bb4d","queryRemoveLiquidityFromBufferHook(address,uint256)":"d96af070","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IWETH\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"routerVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"addLiquidityToBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"initializeBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"queryAddLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"queryAddLiquidityToBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"}],\"name\":\"queryInitializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"}],\"name\":\"queryInitializeBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToRemove\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToRemove\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityFromBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"The external API functions unlock the Vault, which calls back into the corresponding hook functions. These interact with the Vault, transfer tokens, settle accounting, and handle wrapping and unwrapping ETH.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"kind\":\"dev\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Requires the buffer to be initialized beforehand. Restricting adds to proportional simplifies the Vault code, avoiding rounding issues and minimum amount checks. It is possible to add unbalanced by interacting with the wrapper contract directly.\",\"params\":{\"exactSharesToIssue\":\"The amount of shares that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingIn\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedIn\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens deposited into the buffer\"}},\"addLiquidityToBufferHook(address,uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"exactSharesToIssue\":\"The value in underlying tokens that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingIn\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedIn\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens deposited into the buffer\"}},\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"initializeBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Calling this method binds the wrapped token to its underlying asset internally; the asset in the wrapper cannot change afterwards, or every other operation on that wrapper (add / remove / wrap / unwrap) will fail. To avoid unexpected behavior, always initialize buffers before creating or initializing any pools that contain the wrapped tokens to be used with them.\",\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that will be deposited into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, denominated in underlying tokens (This is the BPT of the Vault's internal ERC4626 buffer.)\"}},\"initializeBufferHook(address,uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the Vault. Buffers must be initialized before use.\",\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that will be deposited into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive, in underlying token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts. (This is the BPT of an internal ERC4626 buffer)\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"queryAddLiquidityToBuffer(address,uint256)\":{\"params\":{\"exactSharesToIssue\":\"The amount of shares that would be minted, in underlying token decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens that would be deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens that would be deposited into the buffer\"}},\"queryInitializeBuffer(address,uint256,uint256)\":{\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that the sender wishes to deposit into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that the sender wishes to deposit into the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"The amount of shares that would be minted, in underlying token decimals\"}},\"queryRemoveLiquidityFromBuffer(address,uint256)\":{\"params\":{\"exactSharesToRemove\":\"The amount of shares that would be burned, in underlying token decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceOut\":\"Amount of underlying tokens that would be removed from the buffer\",\"removedWrappedBalanceOut\":\"Amount of wrapped tokens that would be removed from the buffer\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}]},\"kind\":\"user\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Adds liquidity proportionally to an internal ERC4626 buffer in the Vault.\"},\"addLiquidityToBufferHook(address,uint256,uint256,uint256,address)\":{\"notice\":\"Hook for adding liquidity to vault buffers. The Vault will enforce that the buffer is initialized.\"},\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"initializeBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Adds liquidity for the first time to an internal ERC4626 buffer in the Vault.\"},\"initializeBufferHook(address,uint256,uint256,uint256,address)\":{\"notice\":\"Hook for initializing a vault buffer.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"queryAddLiquidityToBuffer(address,uint256)\":{\"notice\":\"Queries an `addLiquidityToBuffer` operation without actually executing it.\"},\"queryInitializeBuffer(address,uint256,uint256)\":{\"notice\":\"Queries an `initializeBuffer` operation without actually executing it.\"},\"queryRemoveLiquidityFromBuffer(address,uint256)\":{\"notice\":\"Queries an `removeLiquidityFromBuffer` operation without actually executing it.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Entrypoint for swaps, liquidity operations, and corresponding queries.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/BufferRouter.sol\":\"BufferRouter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol\":{\"keccak256\":\"0xcef9acd5d8cf67d7e126da0961fef2f7dac4e9b24ae13385dfd17d2313536cd9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e1bf4ede1c5055ea3a57536a6804bd3ca984017a738be03a2a7673eaec0c5ed\",\"dweb:/ipfs/QmYyfLkUeTj17JuDnzzKfqtFK9kEjfbs3XWEsdh83kNt1Z\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BufferRouter.sol\":{\"keccak256\":\"0x86ed9d1f9e5a54d2f4213e88f070e25b6a746222c26653de4638b9f619111bd2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://78b8b3026d22679c0697dca993c35cab0de0dcfc6e47781f4b90e3455fb341e9\",\"dweb:/ipfs/QmaEQrJmeHQTA4kWJnaHYJmpe7nKL424henYhBQHrbe3sa\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol":{"ProtocolFeeController":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"name":"CallerIsNotPoolCreator","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[],"name":"PoolCreatorFeePercentageTooHigh","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreatorNotRegistered","type":"error"},{"inputs":[],"name":"ProtocolSwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"ProtocolYieldFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"GlobalProtocolSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"yieldFeePercentage","type":"uint256"}],"name":"GlobalProtocolYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PoolCreatorFeesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolCreatorSwapFeePercentage","type":"uint256"}],"name":"PoolCreatorSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolCreatorYieldFeePercentage","type":"uint256"}],"name":"PoolCreatorYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolFeesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolSwapFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"ProtocolSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolYieldFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"yieldFeePercentage","type":"uint256"}],"name":"ProtocolYieldFeePercentageChanged","type":"event"},{"inputs":[],"name":"MAX_CREATOR_FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PROTOCOL_YIELD_FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFeesHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolFeePercentage","type":"uint256"},{"internalType":"uint256","name":"poolCreatorFeePercentage","type":"uint256"}],"name":"computeAggregateFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalProtocolSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalProtocolYieldFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolCreatorFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProtocolSwapFeeInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProtocolYieldFeeInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getProtocolFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"}],"name":"registerPool","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProtocolSwapFeePercentage","type":"uint256"}],"name":"setGlobalProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProtocolYieldFeePercentage","type":"uint256"}],"name":"setGlobalProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolCreatorSwapFeePercentage","type":"uint256"}],"name":"setPoolCreatorSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolCreatorYieldFeePercentage","type":"uint256"}],"name":"setPoolCreatorYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newProtocolSwapFeePercentage","type":"uint256"}],"name":"setProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newProtocolYieldFeePercentage","type":"uint256"}],"name":"setProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"updateProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"updateProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"withdrawPoolCreatorFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawPoolCreatorFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawProtocolFeesForToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60e03460f057601f6126a838819003918201601f19168301916001600160401b0383118484101760f45780849260209460405283398101031260f057516001600160a01b038116810360f057306080528060a05260c05260405161259f9081610109823960805181611aae015260a0518181816110080152611d61015260c0518181816102240152818161033f015281816103c9015281816104e80152818161055601528181610835015281816108a301528181610c1101528181610d47015281816113ac01528181611551015281816117010152818161185b01528181611c8c01528181611ff301526121ff0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80630ddd60c61461191f5780631377c16c146118005780632772d1561461160e5780632e1d388d146117de5780633af52712146116a657806352f125f01461166c57806355fb76af1461164f5780635c15a0b4146116135780635e32e4e81461160e57806371447ea81461146957806371ecc8fb146112c557806377ff76e7146111675780637869ee181461114b5780637a2b97dc146110e0578063851c1bb3146110905780638a3c5c691461102c5780638d928af814610fe95780638df44c5414610f615780638f4ab9ca14610f405780639e95f3fd14610eb4578063a93df2a414610e4f578063aaabadc514610e24578063abaa335614610c7b578063b53a70b214610b94578063cf7b287f14610b2e578063f706144514610af9578063fa399f2a14610363578063fbfa77cf146103205763fd267f3914610158575f80fd5b346102f45760406003193601126102f457610171611940565b6024359061017d6120d4565b6706f05b59d3b2000082116102f8576101958261208c565b61019e81611bca565b6101a782612047565b916040516101b4816119c9565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600260205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f0000000000000000000000000000000000000000000000000000000000000000169161024e8161239b565b833b156102f4576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e926020926102da575b50604051908152a2005b6102e390611a12565b5f6102d0565b6040513d5f823e3d90fd5b5f80fd5b7f7e6eb7fb000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102f4575f6003193601126102f45760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102f45760206003193601126102f45761037c611940565b610384611fe9565b6040517f8f4ab9ca0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f81602481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156102e9575f905f92610a9c575b506001600160a01b0383165f52600260205267ffffffffffffffff60405f20541690600560205260405f2054905f928215159384610a92575b84610a82575b610443876121c0565b94905f5b8681106107f35789896001600160a01b0382165f52600360205267ffffffffffffffff60405f205416905f92600660205260405f2054925f84151594856107e9575b856107d7575b610498846121c0565b96905f5b8881106104a557005b6104af8189611b4f565b516104bd575b60010161049c565b986001600160a01b036104d08b84611b4f565b5116906104dd8b8a611b4f565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156107d357604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201528181606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156107c8579082916107b1575b5061078457505f9981610599828b611b4f565b516040519081527fe505e41b0d437b47350a9990142ccf38acb11ffa0e5af8f973b9e172f3d5d5e260206001600160a01b038c1692a38315610709576105df818a611b4f565b5186156106e1576105ef90611e3d565b6001670de0b6b3a76400006106308a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848c878301040190151502611e5a565b928301040190151502916001600160a01b0389165f52600760205260405f20815f5260205260405f20610664848254611e30565b9055610670828b611b4f565b519081848103116106b4576001936106aa916001600160a01b038c165f52600860205260405f20905f5260205260405f2092038254611e30565b90555b90506104b5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001918561074e5761071b828b611b4f565b51906001600160a01b038a165f52600760205260405f20905f5260205261074760405f20918254611e30565b90556106ad565b610758828b611b4f565b51906001600160a01b038a165f52600860205260405f20905f5260205261074760405f20918254611e30565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6107ba90611a12565b6107c557808c610586565b80fd5b6040513d84823e3d90fd5b5080fd5b90506107e38183611e6d565b9061048f565b8215159550610489565b6107fd8187611b4f565b5161080b575b600101610447565b6001600160a01b0361081d8284611b4f565b51169061082a8188611b4f565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156102f457604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201525f81606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102e957610a73575b50818b7fae7ebad9fc3d1d17965f063fa520d393595e2ef6c8e22ae8413b60900444e19f60206001600160a01b03610908868d611b4f565b51936040519485521692a388156109f8576109238188611b4f565b5185156106e15761093390611e3d565b6001670de0b6b3a7640000610974897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848b878301040190151502611e5a565b928301040190151502916001600160a01b038c165f52600760205260405f20815f5260205260405f206109a8848254611e30565b90556109b48289611b4f565b519081848103116106b4576001936109ee916001600160a01b038f165f52600860205260405f20905f5260205260405f2092038254611e30565b90555b9050610803565b60019184610a3d57610a0a8289611b4f565b51906001600160a01b038d165f52600760205260405f20905f52602052610a3660405f20918254611e30565b90556109f1565b610a478289611b4f565b51906001600160a01b038d165f52600860205260405f20905f52602052610a3660405f20918254611e30565b610a7c90611a12565b8b6108d0565b50610a8d8382611e6d565b61043a565b8115159450610434565b9150503d805f833e610aae8183611a42565b8101906040818303126102f45780519167ffffffffffffffff928381116102f45781610adb918401611dcf565b9260208301519081116102f457610af29201611dcf565b90836103fb565b346102f45760406003193601126102f457610b2c610b15611940565b610b1d611956565b90610b2781611eae565b611f32565b005b346102f45760406003193601126102f457610b47611940565b610b4f611956565b90610b586120d4565b610b61816121c0565b915f5b838110610b6d57005b80610b8e6001600160a01b03610b8560019487611b4f565b511687856122d4565b01610b64565b346102f45760606003193601126102f457610bad611940565b610bb5611956565b604435906001600160a01b03928383168084036102f457604090610bd76120d4565b60448251809781937fc9c1661b000000000000000000000000000000000000000000000000000000008352818716600484015260248301527f0000000000000000000000000000000000000000000000000000000000000000165afa80156102e957610c48575b610b2c93506122d4565b6040843d604011610c73575b81610c6160409383611a42565b810103126102f457610b2c9350610c3e565b3d9150610c54565b346102f45760406003193601126102f457610c94611940565b60243590610ca06120d4565b6706f05b59d3b200008211610dfc57610cb88261208c565b610cc181611bca565b610cca82612047565b91604051610cd7816119c9565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600360205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f00000000000000000000000000000000000000000000000000000000000000001691610d7181612366565b833b156102f4576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd926020926102da5750604051908152a2005b7fa7849e8e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102f4575f6003193601126102f4576020610e3e611d2b565b6001600160a01b0360405191168152f35b346102f45760206003193601126102f4576004356706f05b59d3b200008111610dfc57602081610e9f7f48c5c3ccec54c4e0ea08d83d838fa9bb725eb0b52c591cb00bd6e63bca8c44f69361208c565b610ea76120d4565b80600155604051908152a1005b346102f4576020806003193601126102f457610ece611940565b90610ed8826121c0565b90610ee282611b00565b925f946001600160a01b03809116955b848110610f0b5760405180610f07888261198e565b0390f35b600190875f526008845260405f2083610f248388611b4f565b51165f52845260405f2054610f398289611b4f565b5201610ef2565b346102f45760206003193601126102f457610b2c610f5c611940565b611bca565b346102f4576020806003193601126102f457610f7b611940565b90610f85826121c0565b90610f8f82611b00565b925f946001600160a01b03809116955b848110610fb45760405180610f07888261198e565b600190875f526007845260405f2083610fcd8388611b4f565b51165f52845260405f2054610fe28289611b4f565b5201610f9f565b346102f4575f6003193601126102f45760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102f45760206003193601126102f4576004356706f05b59d3b2000081116102f85760208161107c7fbf5ac0fc89bbf8819be79f280146b65ea2af2a9705cd9cfe0c9d93f6e87f307d9361208c565b6110846120d4565b805f55604051908152a1005b346102f45760206003193601126102f4576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102f4576110d8602091611a83565b604051908152f35b346102f45760206003193601126102f4576001600160a01b03611101611940565b165f526003602052602060405f206040519061111c826119c9565b5467ffffffffffffffff811680835260ff604092831c1615159390920183905280519182526020820192909252f35b346102f4575f6003193601126102f45760205f54604051908152f35b346102f45760606003193601126102f457611180611940565b611188611956565b9060443590811515908183036102f4576040936111a3611fe9565b6001600160a01b0380921690815f5260209260048452865f2091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055835f146112bd575f935b156112b4575f925b61120085612047565b865161120b816119c9565b67ffffffffffffffff809216815284810191838352845f526002865280895f20925116918054935115158a1b937fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000938468ff000000000000000080971692161717905561127787612047565b94818a5196611285886119c9565b1686528686019485525f5260038652885f2094511691845493511515891b169216171790558351928352820152f35b600154926111f7565b5f54936111ef565b346102f4576020806003193601126102f4576112df611940565b6112e881611bca565b6001600160a01b039182821692835f526002825260405f20906040519161130e836119c9565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101525f54938161145e575b5061133f57005b61134883612047565b908060405192611357846119c9565b168252848201905f8252875f526002865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f000000000000000000000000000000000000000000000000000000000000000016926113d68161239b565b843b156102f4576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af19283156102e9577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e936102da5750604051908152a2005b905083141587611338565b346102f4576020806003193601126102f457611483611940565b61148c81611bca565b6001600160a01b039182821692835f526003825260405f2090604051916114b2836119c9565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101526001549381611603575b506114e457005b6114ed83612047565b9080604051926114fc846119c9565b168252848201905f8252875f526003865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f0000000000000000000000000000000000000000000000000000000000000000169261157b81612366565b843b156102f4576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af19283156102e9577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd936102da5750604051908152a2005b9050831415876114dd565b61196c565b346102f45760206003193601126102f4576001600160a01b03611634611940565b165f526002602052602060405f206040519061111c826119c9565b346102f4575f6003193601126102f4576020600154604051908152f35b346102f45760206003193601126102f457610b2c611688611940565b6001600160a01b038082165f52600460205260405f20541690611f32565b346102f45760406003193601126102f4576116bf611940565b602435906116cc81611eae565b670de0ad9b58f1600082116117b6576116e481611bca565b6001600160a01b039182821692835f5260066020528160405f20557f0000000000000000000000000000000000000000000000000000000000000000169161172b81612366565b833b156102f4576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577f47f70ddbc624c299cef7841aaea0a86b677c800203e953104e958c9ec9bdab34926020926102da5750604051908152a2005b7f0370da74000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102f4575f6003193601126102f4576020604051670de0ad9b58f160008152f35b346102f45760406003193601126102f457611819611940565b6024359061182681611eae565b670de0ad9b58f1600082116117b65761183e81611bca565b6001600160a01b039182821692835f5260056020528160405f20557f000000000000000000000000000000000000000000000000000000000000000016916118858161239b565b833b156102f4576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577fb7cf36369623c01ed7b2eafc4025224e924a2836d5fb49428a0f65417586bf5c926020926119105750604051908152a2005b61191990611a12565b846102d0565b346102f45760406003193601126102f45760206110d8602435600435611e6d565b600435906001600160a01b03821682036102f457565b602435906001600160a01b03821682036102f457565b346102f4575f6003193601126102f45760206040516706f05b59d3b200008152f35b60209060206040818301928281528551809452019301915f5b8281106119b5575050505090565b8351855293810193928101926001016119a7565b6040810190811067ffffffffffffffff8211176119e557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff81116119e557604052565b6060810190811067ffffffffffffffff8211176119e557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176119e557604052565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f0000000000000000000000000000000000000000000000000000000000000000845216604082015260248152611ae281611a26565b51902090565b67ffffffffffffffff81116119e55760051b60200190565b90611b0a82611ae8565b611b176040519182611a42565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b458294611ae8565b0190602036910137565b8051821015611b635760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b67ffffffffffffffff81116119e557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0905f601f6001600160a01b036040519383604460209684888201947ffa399f2a00000000000000000000000000000000000000000000000000000000865216602482015260248152611c3c81611a26565b604051988996879586937f48c894910000000000000000000000000000000000000000000000000000000085528b60048601525180918160248701528686015e85858286010152011681010301927f0000000000000000000000000000000000000000000000000000000000000000165af180156102e957611cbc575050565b3d805f843e611ccb8184611a42565b82019181818403126102f45780519067ffffffffffffffff82116102f457019180601f840112156102f457825190611d0282611b90565b90611d106040519283611a42565b8282528383860101116102f45781835f95018483015e010152565b6040517faaabadc50000000000000000000000000000000000000000000000000000000081526001600160a01b036020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e9575f92611d9657505090565b9091506020813d602011611dc7575b81611db260209383611a42565b810103126102f4575190811681036102f45790565b3d9150611da5565b9080601f830112156102f457815190602091611dea81611ae8565b93611df86040519586611a42565b81855260208086019260051b8201019283116102f457602001905b828210611e21575050505090565b81518152908301908301611e13565b919082018092116106b457565b90670de0b6b3a7640000918281029281840414901517156106b457565b818102929181159184041417156106b457565b90611e9a64174876e800928392611e93670de0b6b3a76400009183830383851002611e5a565b0490611e30565b048181029181830414901517156106b45790565b6001600160a01b0380911690815f52600460205260405f2054168015611f06573303611ed75750565b7ffbecdbf4000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b507f8bcbf353000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90611f3c826121c0565b92905f5b848110611f4e575050505050565b6001906001600160a01b0380611f648386611b4f565b5116818616805f5260086020818152604094855f20855f528252855f20549586611f96575b5050505050505001611f40565b7f938f3a3a03ee425ccc0f8010b0468938cbafd3750fa43bbdf09c6f75e97e51f993855f528352805f20865f5283525f81812055611fd5878d886123cd565b519586528a1694a45f808080808080611f89565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361201b57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b67ffffffffffffffff9081811161205c571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52604060045260245260445ffd5b64174876e8008082048181029181830414901517156106b457036120ac57565b7f833fb3ce000000000000000000000000000000000000000000000000000000005f5260045ffd5b6121007fffffffff000000000000000000000000000000000000000000000000000000005f3516611a83565b60206001600160a01b03612112611d2b565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa9081156102e9575f91612191575b501561216957565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b6121b3915060203d6020116121b9575b6121ab8183611a42565b8101906124c5565b5f612161565b503d6121a1565b906001600160a01b0380604051937fca4f28030000000000000000000000000000000000000000000000000000000085521660048401525f83602481847f0000000000000000000000000000000000000000000000000000000000000000165afa9283156102e9575f93612236575b5050815190565b909192503d805f833e6122498183611a42565b810160209182818303126102f45780519067ffffffffffffffff82116102f457019281601f850112156102f457835161228181611ae8565b9461228f6040519687611a42565b818652848087019260051b8201019384116102f4578401905b8382106122bc575050505050905f8061222f565b815183811681036102f45781529084019084016122a8565b91906001600160a01b0380931690815f52600760205260405f209284811693845f5260205260405f2054948561230d575b505050505050565b82612352877f1c2887fcb98f75e66bb9a36311f2d3d22fb204e6362106f30e9df7eaf63131b595602095885f526007875260405f208a5f5287525f60408120556123cd565b6040519687521694a45f8080808080612305565b6001600160a01b03165f52600360205261239867ffffffffffffffff60405f205416600660205260405f205490611e6d565b90565b6001600160a01b03165f52600260205261239867ffffffffffffffff60405f205416600560205260405f205490611e6d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082019081526001600160a01b03938416602483015260448083019590955293815292612461925f928392919061242a606488611a42565b1694519082865af13d156124bd573d9061244382611b90565b916124516040519384611a42565b82523d5f602084013e5b836124dd565b80519081151591826124a2575b50506124775750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6124b592506020809183010191016124c5565b155f8061246e565b60609061245b565b908160209103126102f4575180151581036102f45790565b9061251a57508051156124f257805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580612560575b61252b575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561252356fea26469706673582212202551060583cf7643fcdd874660582a839f97643f6fcd6d62d3eb94e3475aad4564736f6c634300081a0033","opcodes":"PUSH1 0xE0 CALLVALUE PUSH1 0xF0 JUMPI PUSH1 0x1F PUSH2 0x26A8 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH1 0xF4 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH1 0xF0 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH1 0xF0 JUMPI ADDRESS PUSH1 0x80 MSTORE DUP1 PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x259F SWAP1 DUP2 PUSH2 0x109 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x1AAE ADD MSTORE PUSH1 0xA0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1008 ADD MSTORE PUSH2 0x1D61 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x224 ADD MSTORE DUP2 DUP2 PUSH2 0x33F ADD MSTORE DUP2 DUP2 PUSH2 0x3C9 ADD MSTORE DUP2 DUP2 PUSH2 0x4E8 ADD MSTORE DUP2 DUP2 PUSH2 0x556 ADD MSTORE DUP2 DUP2 PUSH2 0x835 ADD MSTORE DUP2 DUP2 PUSH2 0x8A3 ADD MSTORE DUP2 DUP2 PUSH2 0xC11 ADD MSTORE DUP2 DUP2 PUSH2 0xD47 ADD MSTORE DUP2 DUP2 PUSH2 0x13AC ADD MSTORE DUP2 DUP2 PUSH2 0x1551 ADD MSTORE DUP2 DUP2 PUSH2 0x1701 ADD MSTORE DUP2 DUP2 PUSH2 0x185B ADD MSTORE DUP2 DUP2 PUSH2 0x1C8C ADD MSTORE DUP2 DUP2 PUSH2 0x1FF3 ADD MSTORE PUSH2 0x21FF ADD MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDDD60C6 EQ PUSH2 0x191F JUMPI DUP1 PUSH4 0x1377C16C EQ PUSH2 0x1800 JUMPI DUP1 PUSH4 0x2772D156 EQ PUSH2 0x160E JUMPI DUP1 PUSH4 0x2E1D388D EQ PUSH2 0x17DE JUMPI DUP1 PUSH4 0x3AF52712 EQ PUSH2 0x16A6 JUMPI DUP1 PUSH4 0x52F125F0 EQ PUSH2 0x166C JUMPI DUP1 PUSH4 0x55FB76AF EQ PUSH2 0x164F JUMPI DUP1 PUSH4 0x5C15A0B4 EQ PUSH2 0x1613 JUMPI DUP1 PUSH4 0x5E32E4E8 EQ PUSH2 0x160E JUMPI DUP1 PUSH4 0x71447EA8 EQ PUSH2 0x1469 JUMPI DUP1 PUSH4 0x71ECC8FB EQ PUSH2 0x12C5 JUMPI DUP1 PUSH4 0x77FF76E7 EQ PUSH2 0x1167 JUMPI DUP1 PUSH4 0x7869EE18 EQ PUSH2 0x114B JUMPI DUP1 PUSH4 0x7A2B97DC EQ PUSH2 0x10E0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1090 JUMPI DUP1 PUSH4 0x8A3C5C69 EQ PUSH2 0x102C JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xFE9 JUMPI DUP1 PUSH4 0x8DF44C54 EQ PUSH2 0xF61 JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0xF40 JUMPI DUP1 PUSH4 0x9E95F3FD EQ PUSH2 0xEB4 JUMPI DUP1 PUSH4 0xA93DF2A4 EQ PUSH2 0xE4F JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xE24 JUMPI DUP1 PUSH4 0xABAA3356 EQ PUSH2 0xC7B JUMPI DUP1 PUSH4 0xB53A70B2 EQ PUSH2 0xB94 JUMPI DUP1 PUSH4 0xCF7B287F EQ PUSH2 0xB2E JUMPI DUP1 PUSH4 0xF7061445 EQ PUSH2 0xAF9 JUMPI DUP1 PUSH4 0xFA399F2A EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0x320 JUMPI PUSH4 0xFD267F39 EQ PUSH2 0x158 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x171 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x17D PUSH2 0x20D4 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0x2F8 JUMPI PUSH2 0x195 DUP3 PUSH2 0x208C JUMP JUMPDEST PUSH2 0x19E DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH2 0x1A7 DUP3 PUSH2 0x2047 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0x1B4 DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x24E DUP2 PUSH2 0x239B JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x2DA JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0x2E3 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH0 PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x7E6EB7FB00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x37C PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x1FE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8F4AB9CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH2 0xA9C JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH0 SWAP3 DUP3 ISZERO ISZERO SWAP4 DUP5 PUSH2 0xA92 JUMPI JUMPDEST DUP5 PUSH2 0xA82 JUMPI JUMPDEST PUSH2 0x443 DUP8 PUSH2 0x21C0 JUMP JUMPDEST SWAP5 SWAP1 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x7F3 JUMPI DUP10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH0 SWAP3 PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 PUSH0 DUP5 ISZERO ISZERO SWAP5 DUP6 PUSH2 0x7E9 JUMPI JUMPDEST DUP6 PUSH2 0x7D7 JUMPI JUMPDEST PUSH2 0x498 DUP5 PUSH2 0x21C0 JUMP JUMPDEST SWAP7 SWAP1 PUSH0 JUMPDEST DUP9 DUP2 LT PUSH2 0x4A5 JUMPI STOP JUMPDEST PUSH2 0x4AF DUP2 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH2 0x4BD JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x49C JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4D0 DUP12 DUP5 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x4DD DUP12 DUP11 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x7C8 JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x7B1 JUMPI JUMPDEST POP PUSH2 0x784 JUMPI POP PUSH0 SWAP10 DUP2 PUSH2 0x599 DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xE505E41B0D437B47350A9990142CCF38ACB11FFA0E5AF8F973B9E172F3D5D5E2 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP3 LOG3 DUP4 ISZERO PUSH2 0x709 JUMPI PUSH2 0x5DF DUP2 DUP11 PUSH2 0x1B4F JUMP JUMPDEST MLOAD DUP7 ISZERO PUSH2 0x6E1 JUMPI PUSH2 0x5EF SWAP1 PUSH2 0x1E3D JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x630 DUP11 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP13 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x1E5A JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x664 DUP5 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x670 DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6B4 JUMPI PUSH1 0x1 SWAP4 PUSH2 0x6AA SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x4B5 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP2 DUP6 PUSH2 0x74E JUMPI PUSH2 0x71B DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x747 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x758 DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x747 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST DUP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 SWAP3 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x7BA SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x7C5 JUMPI DUP1 DUP13 PUSH2 0x586 JUMP JUMPDEST DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST SWAP1 POP PUSH2 0x7E3 DUP2 DUP4 PUSH2 0x1E6D JUMP JUMPDEST SWAP1 PUSH2 0x48F JUMP JUMPDEST DUP3 ISZERO ISZERO SWAP6 POP PUSH2 0x489 JUMP JUMPDEST PUSH2 0x7FD DUP2 DUP8 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH2 0x80B JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x81D DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x82A DUP2 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH2 0xA73 JUMPI JUMPDEST POP DUP2 DUP12 PUSH32 0xAE7EBAD9FC3D1D17965F063FA520D393595E2EF6C8E22AE8413B60900444E19F PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x908 DUP7 DUP14 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND SWAP3 LOG3 DUP9 ISZERO PUSH2 0x9F8 JUMPI PUSH2 0x923 DUP2 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD DUP6 ISZERO PUSH2 0x6E1 JUMPI PUSH2 0x933 SWAP1 PUSH2 0x1E3D JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x974 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP12 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x1E5A JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x9A8 DUP5 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x9B4 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6B4 JUMPI PUSH1 0x1 SWAP4 PUSH2 0x9EE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x803 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP5 PUSH2 0xA3D JUMPI PUSH2 0xA0A DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA36 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0xA47 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA36 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST PUSH2 0xA7C SWAP1 PUSH2 0x1A12 JUMP JUMPDEST DUP12 PUSH2 0x8D0 JUMP JUMPDEST POP PUSH2 0xA8D DUP4 DUP3 PUSH2 0x1E6D JUMP JUMPDEST PUSH2 0x43A JUMP JUMPDEST DUP2 ISZERO ISZERO SWAP5 POP PUSH2 0x434 JUMP JUMPDEST SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xAAE DUP2 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x2F4 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x2F4 JUMPI DUP2 PUSH2 0xADB SWAP2 DUP5 ADD PUSH2 0x1DCF JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2F4 JUMPI PUSH2 0xAF2 SWAP3 ADD PUSH2 0x1DCF JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x3FB JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C PUSH2 0xB15 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x1956 JUMP JUMPDEST SWAP1 PUSH2 0xB27 DUP2 PUSH2 0x1EAE JUMP JUMPDEST PUSH2 0x1F32 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB47 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0xB4F PUSH2 0x1956 JUMP JUMPDEST SWAP1 PUSH2 0xB58 PUSH2 0x20D4 JUMP JUMPDEST PUSH2 0xB61 DUP2 PUSH2 0x21C0 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xB6D JUMPI STOP JUMPDEST DUP1 PUSH2 0xB8E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xB85 PUSH1 0x1 SWAP5 DUP8 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND DUP8 DUP6 PUSH2 0x22D4 JUMP JUMPDEST ADD PUSH2 0xB64 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xBAD PUSH2 0x1940 JUMP JUMPDEST PUSH2 0xBB5 PUSH2 0x1956 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP4 AND DUP1 DUP5 SUB PUSH2 0x2F4 JUMPI PUSH1 0x40 SWAP1 PUSH2 0xBD7 PUSH2 0x20D4 JUMP JUMPDEST PUSH1 0x44 DUP3 MLOAD DUP1 SWAP8 DUP2 SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP8 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH2 0xC48 JUMPI JUMPDEST PUSH2 0xB2C SWAP4 POP PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x40 DUP5 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0xC73 JUMPI JUMPDEST DUP2 PUSH2 0xC61 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C SWAP4 POP PUSH2 0xC3E JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xC54 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xC94 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xCA0 PUSH2 0x20D4 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0xDFC JUMPI PUSH2 0xCB8 DUP3 PUSH2 0x208C JUMP JUMPDEST PUSH2 0xCC1 DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH2 0xCCA DUP3 PUSH2 0x2047 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0xCD7 DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0xD71 DUP2 PUSH2 0x2366 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH32 0xA7849E8E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH2 0xE3E PUSH2 0x1D2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0xDFC JUMPI PUSH1 0x20 DUP2 PUSH2 0xE9F PUSH32 0x48C5C3CCEC54C4E0EA08D83D838FA9BB725EB0B52C591CB00BD6E63BCA8C44F6 SWAP4 PUSH2 0x208C JUMP JUMPDEST PUSH2 0xEA7 PUSH2 0x20D4 JUMP JUMPDEST DUP1 PUSH1 0x1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xECE PUSH2 0x1940 JUMP JUMPDEST SWAP1 PUSH2 0xED8 DUP3 PUSH2 0x21C0 JUMP JUMPDEST SWAP1 PUSH2 0xEE2 DUP3 PUSH2 0x1B00 JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0xF0B JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0xF07 DUP9 DUP3 PUSH2 0x198E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x8 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0xF24 DUP4 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xF39 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MSTORE ADD PUSH2 0xEF2 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C PUSH2 0xF5C PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x1BCA JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xF7B PUSH2 0x1940 JUMP JUMPDEST SWAP1 PUSH2 0xF85 DUP3 PUSH2 0x21C0 JUMP JUMPDEST SWAP1 PUSH2 0xF8F DUP3 PUSH2 0x1B00 JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0xFB4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0xF07 DUP9 DUP3 PUSH2 0x198E JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x7 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0xFCD DUP4 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xFE2 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MSTORE ADD PUSH2 0xF9F JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0x2F8 JUMPI PUSH1 0x20 DUP2 PUSH2 0x107C PUSH32 0xBF5AC0FC89BBF8819BE79F280146B65EA2AF2A9705CD9CFE0C9D93F6E87F307D SWAP4 PUSH2 0x208C JUMP JUMPDEST PUSH2 0x1084 PUSH2 0x20D4 JUMP JUMPDEST DUP1 PUSH0 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x2F4 JUMPI PUSH2 0x10D8 PUSH1 0x20 SWAP2 PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1101 PUSH2 0x1940 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x111C DUP3 PUSH2 0x19C9 JUMP JUMPDEST SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0xFF PUSH1 0x40 SWAP3 DUP4 SHR AND ISZERO ISZERO SWAP4 SWAP1 SWAP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x1180 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x1188 PUSH2 0x1956 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO SWAP1 DUP2 DUP4 SUB PUSH2 0x2F4 JUMPI PUSH1 0x40 SWAP4 PUSH2 0x11A3 PUSH2 0x1FE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x4 DUP5 MSTORE DUP7 PUSH0 KECCAK256 SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 PUSH0 EQ PUSH2 0x12BD JUMPI PUSH0 SWAP4 JUMPDEST ISZERO PUSH2 0x12B4 JUMPI PUSH0 SWAP3 JUMPDEST PUSH2 0x1200 DUP6 PUSH2 0x2047 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x120B DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP2 MSTORE DUP5 DUP2 ADD SWAP2 DUP4 DUP4 MSTORE DUP5 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE DUP1 DUP10 PUSH0 KECCAK256 SWAP3 MLOAD AND SWAP2 DUP1 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP11 SHL SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 SWAP4 DUP5 PUSH9 0xFF0000000000000000 DUP1 SWAP8 AND SWAP3 AND OR OR SWAP1 SSTORE PUSH2 0x1277 DUP8 PUSH2 0x2047 JUMP JUMPDEST SWAP5 DUP2 DUP11 MLOAD SWAP7 PUSH2 0x1285 DUP9 PUSH2 0x19C9 JUMP JUMPDEST AND DUP7 MSTORE DUP7 DUP7 ADD SWAP5 DUP6 MSTORE PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE DUP9 PUSH0 KECCAK256 SWAP5 MLOAD AND SWAP2 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP10 SHL AND SWAP3 AND OR OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 SLOAD SWAP3 PUSH2 0x11F7 JUMP JUMPDEST PUSH0 SLOAD SWAP4 PUSH2 0x11EF JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x12DF PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x12E8 DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x130E DUP4 PUSH2 0x19C9 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH0 SLOAD SWAP4 DUP2 PUSH2 0x145E JUMPI JUMPDEST POP PUSH2 0x133F JUMPI STOP JUMPDEST PUSH2 0x1348 DUP4 PUSH2 0x2047 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1357 DUP5 PUSH2 0x19C9 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x13D6 DUP2 PUSH2 0x239B JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP4 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x1338 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x1483 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x148C DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x3 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x14B2 DUP4 PUSH2 0x19C9 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH1 0x1 SLOAD SWAP4 DUP2 PUSH2 0x1603 JUMPI JUMPDEST POP PUSH2 0x14E4 JUMPI STOP JUMPDEST PUSH2 0x14ED DUP4 PUSH2 0x2047 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x14FC DUP5 PUSH2 0x19C9 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x157B DUP2 PUSH2 0x2366 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP4 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x14DD JUMP JUMPDEST PUSH2 0x196C JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1634 PUSH2 0x1940 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x111C DUP3 PUSH2 0x19C9 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C PUSH2 0x1688 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x1F32 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x16BF PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x16CC DUP2 PUSH2 0x1EAE JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x17B6 JUMPI PUSH2 0x16E4 DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x172B DUP2 PUSH2 0x2366 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0x47F70DDBC624C299CEF7841AAEA0A86B677C800203E953104E958C9EC9BDAB34 SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH32 0x370DA7400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0xDE0AD9B58F16000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x1819 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1826 DUP2 PUSH2 0x1EAE JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x17B6 JUMPI PUSH2 0x183E DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x1885 DUP2 PUSH2 0x239B JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0xB7CF36369623C01ED7B2EAFC4025224E924A2836D5FB49428A0F65417586BF5C SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x1910 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0x1919 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST DUP5 PUSH2 0x2D0 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH2 0x10D8 PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x1E6D JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2F4 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2F4 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0x6F05B59D3B20000 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x19B5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x19A7 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1AE2 DUP2 PUSH2 0x1A26 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19E5 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1B0A DUP3 PUSH2 0x1AE8 JUMP JUMPDEST PUSH2 0x1B17 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1A42 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1B45 DUP3 SWAP5 PUSH2 0x1AE8 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1B63 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19E5 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 PUSH0 PUSH1 0x1F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP4 DUP4 PUSH1 0x44 PUSH1 0x20 SWAP7 DUP5 DUP9 DUP3 ADD SWAP5 PUSH32 0xFA399F2A00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1C3C DUP2 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP12 PUSH1 0x4 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x24 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY DUP6 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH2 0x1CBC JUMPI POP POP JUMP JUMPDEST RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x1CCB DUP2 DUP5 PUSH2 0x1A42 JUMP JUMPDEST DUP3 ADD SWAP2 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x2F4 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2F4 JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2F4 JUMPI DUP3 MLOAD SWAP1 PUSH2 0x1D02 DUP3 PUSH2 0x1B90 JUMP JUMPDEST SWAP1 PUSH2 0x1D10 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP3 DUP3 MSTORE DUP4 DUP4 DUP7 ADD ADD GT PUSH2 0x2F4 JUMPI DUP2 DUP4 PUSH0 SWAP6 ADD DUP5 DUP4 ADD MCOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP3 PUSH2 0x1D96 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1DC7 JUMPI JUMPDEST DUP2 PUSH2 0x1DB2 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2F4 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F4 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1DA5 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2F4 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x1DEA DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP4 PUSH2 0x1DF8 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1A42 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x2F4 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1E21 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1E13 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x6B4 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6B4 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x6B4 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x1E9A PUSH5 0x174876E800 SWAP3 DUP4 SWAP3 PUSH2 0x1E93 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP4 DUP4 SUB DUP4 DUP6 LT MUL PUSH2 0x1E5A JUMP JUMPDEST DIV SWAP1 PUSH2 0x1E30 JUMP JUMPDEST DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6B4 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x1F06 JUMPI CALLER SUB PUSH2 0x1ED7 JUMPI POP JUMP JUMPDEST PUSH32 0xFBECDBF400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH32 0x8BCBF35300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x1F3C DUP3 PUSH2 0x21C0 JUMP JUMPDEST SWAP3 SWAP1 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1F4E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x1F64 DUP4 DUP7 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND DUP2 DUP7 AND DUP1 PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP5 DUP6 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE DUP6 PUSH0 KECCAK256 SLOAD SWAP6 DUP7 PUSH2 0x1F96 JUMPI JUMPDEST POP POP POP POP POP POP POP ADD PUSH2 0x1F40 JUMP JUMPDEST PUSH32 0x938F3A3A03EE425CCC0F8010B0468938CBAFD3750FA43BBDF09C6F75E97E51F9 SWAP4 DUP6 PUSH0 MSTORE DUP4 MSTORE DUP1 PUSH0 KECCAK256 DUP7 PUSH0 MSTORE DUP4 MSTORE PUSH0 DUP2 DUP2 KECCAK256 SSTORE PUSH2 0x1FD5 DUP8 DUP14 DUP9 PUSH2 0x23CD JUMP JUMPDEST MLOAD SWAP6 DUP7 MSTORE DUP11 AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1F89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x201B JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x205C JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x40 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH5 0x174876E800 DUP1 DUP3 DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6B4 JUMPI SUB PUSH2 0x20AC JUMPI JUMP JUMPDEST PUSH32 0x833FB3CE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2100 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2112 PUSH2 0x1D2B JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP2 PUSH2 0x2191 JUMPI JUMPDEST POP ISZERO PUSH2 0x2169 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x21B3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21B9 JUMPI JUMPDEST PUSH2 0x21AB DUP2 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24C5 JUMP JUMPDEST PUSH0 PUSH2 0x2161 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x21A1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP4 PUSH2 0x2236 JUMPI JUMPDEST POP POP DUP2 MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2249 DUP2 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 SWAP2 DUP3 DUP2 DUP4 SUB SLT PUSH2 0x2F4 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2F4 JUMPI ADD SWAP3 DUP2 PUSH1 0x1F DUP6 ADD SLT ISZERO PUSH2 0x2F4 JUMPI DUP4 MLOAD PUSH2 0x2281 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP5 PUSH2 0x228F PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x1A42 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP5 DUP1 DUP8 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP4 DUP5 GT PUSH2 0x2F4 JUMPI DUP5 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x22BC JUMPI POP POP POP POP POP SWAP1 PUSH0 DUP1 PUSH2 0x222F JUMP JUMPDEST DUP2 MLOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F4 JUMPI DUP2 MSTORE SWAP1 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x22A8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP5 DUP2 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP5 DUP6 PUSH2 0x230D JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x2352 DUP8 PUSH32 0x1C2887FCB98F75E66BB9A36311F2D3D22FB204E6362106F30E9DF7EAF63131B5 SWAP6 PUSH1 0x20 SWAP6 DUP9 PUSH0 MSTORE PUSH1 0x7 DUP8 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP11 PUSH0 MSTORE DUP8 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x23CD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 MSTORE AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2305 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x2398 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x1E6D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x2398 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x1E6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP2 MSTORE SWAP3 PUSH2 0x2461 SWAP3 PUSH0 SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH2 0x242A PUSH1 0x64 DUP9 PUSH2 0x1A42 JUMP JUMPDEST AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x24BD JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2443 DUP3 PUSH2 0x1B90 JUMP JUMPDEST SWAP2 PUSH2 0x2451 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1A42 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST DUP4 PUSH2 0x24DD JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x24A2 JUMPI JUMPDEST POP POP PUSH2 0x2477 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x24B5 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x24C5 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0x246E JUMP JUMPDEST PUSH1 0x60 SWAP1 PUSH2 0x245B JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2F4 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2F4 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x251A JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x24F2 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x2560 JUMPI JUMPDEST PUSH2 0x252B JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x2523 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 MLOAD MOD SDIV DUP4 0xCF PUSH23 0x43FCDD874660582A839F97643F6FCD6D62D3EB94E3475A 0xAD GASLIMIT PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"3090:25278:60:-:0;;;;;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;-1:-1:-1;;;;;3090:25278:60;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3090:25278:60;;;;;;978:4:63;1347:46:35;;998:14:63;;;409::68;;3090:25278:60;;;;;;;;1347:46:35;3090:25278:60;;;;;998:14:63;3090:25278:60;;;;;;;;;;409:14:68;3090:25278:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3090:25278:60;;;;;;-1:-1:-1;3090:25278:60;;;;;-1:-1:-1;3090:25278:60"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":6464,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_15204":{"entryPoint":6486,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":7631,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":9413,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":6542,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_bool":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":6912,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":6888,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":7056,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":7728,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":7770,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_15323":{"entryPoint":7741,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE":{"entryPoint":6508,"id":null,"parameterSlots":0,"returnSlots":0},"finalize_allocation":{"entryPoint":6722,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_15196":{"entryPoint":6601,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_15311":{"entryPoint":6674,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_38593":{"entryPoint":6694,"id":null,"parameterSlots":1,"returnSlots":0},"fun_authenticateCaller":{"entryPoint":8404,"id":5298,"parameterSlots":0,"returnSlots":0},"fun_collectAggregateFees":{"entryPoint":7114,"id":14500,"parameterSlots":1,"returnSlots":0},"fun_computeAggregateFeePercentage":{"entryPoint":7789,"id":15108,"parameterSlots":2,"returnSlots":1},"fun_ensureCallerIsPoolCreator":{"entryPoint":7854,"id":15144,"parameterSlots":1,"returnSlots":0},"fun_ensureOnlyVault":{"entryPoint":8169,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_ensureValidPrecision":{"entryPoint":8332,"id":15746,"parameterSlots":1,"returnSlots":0},"fun_getActionId":{"entryPoint":6787,"id":5316,"parameterSlots":1,"returnSlots":1},"fun_getAggregateFeePercentage":{"entryPoint":9062,"id":15078,"parameterSlots":1,"returnSlots":1},"fun_getAggregateFeePercentage_15312":{"entryPoint":9115,"id":15078,"parameterSlots":1,"returnSlots":1},"fun_getAuthorizer":{"entryPoint":7467,"id":18883,"parameterSlots":0,"returnSlots":1},"fun_getPoolTokensAndCount":{"entryPoint":8640,"id":15168,"parameterSlots":1,"returnSlots":2},"fun_safeTransfer":{"entryPoint":9165,"id":39386,"parameterSlots":3,"returnSlots":0},"fun_toUint64":{"entryPoint":8263,"id":43070,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":9437,"id":39838,"parameterSlots":3,"returnSlots":1},"fun_withdrawPoolCreatorFees":{"entryPoint":7986,"id":15649,"parameterSlots":2,"returnSlots":0},"fun_withdrawProtocolFees":{"entryPoint":8916,"id":15545,"parameterSlots":3,"returnSlots":0},"memory_array_index_access_contract_IERC20_dyn":{"entryPoint":6991,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"5256":[{"length":32,"start":6830}],"18834":[{"length":32,"start":4104},{"length":32,"start":7521}],"27649":[{"length":32,"start":548},{"length":32,"start":831},{"length":32,"start":969},{"length":32,"start":1256},{"length":32,"start":1366},{"length":32,"start":2101},{"length":32,"start":2211},{"length":32,"start":3089},{"length":32,"start":3399},{"length":32,"start":5036},{"length":32,"start":5457},{"length":32,"start":5889},{"length":32,"start":6235},{"length":32,"start":7308},{"length":32,"start":8179},{"length":32,"start":8703}]},"linkReferences":{},"object":"60806040526004361015610011575f80fd5b5f3560e01c80630ddd60c61461191f5780631377c16c146118005780632772d1561461160e5780632e1d388d146117de5780633af52712146116a657806352f125f01461166c57806355fb76af1461164f5780635c15a0b4146116135780635e32e4e81461160e57806371447ea81461146957806371ecc8fb146112c557806377ff76e7146111675780637869ee181461114b5780637a2b97dc146110e0578063851c1bb3146110905780638a3c5c691461102c5780638d928af814610fe95780638df44c5414610f615780638f4ab9ca14610f405780639e95f3fd14610eb4578063a93df2a414610e4f578063aaabadc514610e24578063abaa335614610c7b578063b53a70b214610b94578063cf7b287f14610b2e578063f706144514610af9578063fa399f2a14610363578063fbfa77cf146103205763fd267f3914610158575f80fd5b346102f45760406003193601126102f457610171611940565b6024359061017d6120d4565b6706f05b59d3b2000082116102f8576101958261208c565b61019e81611bca565b6101a782612047565b916040516101b4816119c9565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600260205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f0000000000000000000000000000000000000000000000000000000000000000169161024e8161239b565b833b156102f4576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e926020926102da575b50604051908152a2005b6102e390611a12565b5f6102d0565b6040513d5f823e3d90fd5b5f80fd5b7f7e6eb7fb000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102f4575f6003193601126102f45760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102f45760206003193601126102f45761037c611940565b610384611fe9565b6040517f8f4ab9ca0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f81602481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156102e9575f905f92610a9c575b506001600160a01b0383165f52600260205267ffffffffffffffff60405f20541690600560205260405f2054905f928215159384610a92575b84610a82575b610443876121c0565b94905f5b8681106107f35789896001600160a01b0382165f52600360205267ffffffffffffffff60405f205416905f92600660205260405f2054925f84151594856107e9575b856107d7575b610498846121c0565b96905f5b8881106104a557005b6104af8189611b4f565b516104bd575b60010161049c565b986001600160a01b036104d08b84611b4f565b5116906104dd8b8a611b4f565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156107d357604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201528181606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156107c8579082916107b1575b5061078457505f9981610599828b611b4f565b516040519081527fe505e41b0d437b47350a9990142ccf38acb11ffa0e5af8f973b9e172f3d5d5e260206001600160a01b038c1692a38315610709576105df818a611b4f565b5186156106e1576105ef90611e3d565b6001670de0b6b3a76400006106308a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848c878301040190151502611e5a565b928301040190151502916001600160a01b0389165f52600760205260405f20815f5260205260405f20610664848254611e30565b9055610670828b611b4f565b519081848103116106b4576001936106aa916001600160a01b038c165f52600860205260405f20905f5260205260405f2092038254611e30565b90555b90506104b5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001918561074e5761071b828b611b4f565b51906001600160a01b038a165f52600760205260405f20905f5260205261074760405f20918254611e30565b90556106ad565b610758828b611b4f565b51906001600160a01b038a165f52600860205260405f20905f5260205261074760405f20918254611e30565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6107ba90611a12565b6107c557808c610586565b80fd5b6040513d84823e3d90fd5b5080fd5b90506107e38183611e6d565b9061048f565b8215159550610489565b6107fd8187611b4f565b5161080b575b600101610447565b6001600160a01b0361081d8284611b4f565b51169061082a8188611b4f565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156102f457604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201525f81606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102e957610a73575b50818b7fae7ebad9fc3d1d17965f063fa520d393595e2ef6c8e22ae8413b60900444e19f60206001600160a01b03610908868d611b4f565b51936040519485521692a388156109f8576109238188611b4f565b5185156106e15761093390611e3d565b6001670de0b6b3a7640000610974897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848b878301040190151502611e5a565b928301040190151502916001600160a01b038c165f52600760205260405f20815f5260205260405f206109a8848254611e30565b90556109b48289611b4f565b519081848103116106b4576001936109ee916001600160a01b038f165f52600860205260405f20905f5260205260405f2092038254611e30565b90555b9050610803565b60019184610a3d57610a0a8289611b4f565b51906001600160a01b038d165f52600760205260405f20905f52602052610a3660405f20918254611e30565b90556109f1565b610a478289611b4f565b51906001600160a01b038d165f52600860205260405f20905f52602052610a3660405f20918254611e30565b610a7c90611a12565b8b6108d0565b50610a8d8382611e6d565b61043a565b8115159450610434565b9150503d805f833e610aae8183611a42565b8101906040818303126102f45780519167ffffffffffffffff928381116102f45781610adb918401611dcf565b9260208301519081116102f457610af29201611dcf565b90836103fb565b346102f45760406003193601126102f457610b2c610b15611940565b610b1d611956565b90610b2781611eae565b611f32565b005b346102f45760406003193601126102f457610b47611940565b610b4f611956565b90610b586120d4565b610b61816121c0565b915f5b838110610b6d57005b80610b8e6001600160a01b03610b8560019487611b4f565b511687856122d4565b01610b64565b346102f45760606003193601126102f457610bad611940565b610bb5611956565b604435906001600160a01b03928383168084036102f457604090610bd76120d4565b60448251809781937fc9c1661b000000000000000000000000000000000000000000000000000000008352818716600484015260248301527f0000000000000000000000000000000000000000000000000000000000000000165afa80156102e957610c48575b610b2c93506122d4565b6040843d604011610c73575b81610c6160409383611a42565b810103126102f457610b2c9350610c3e565b3d9150610c54565b346102f45760406003193601126102f457610c94611940565b60243590610ca06120d4565b6706f05b59d3b200008211610dfc57610cb88261208c565b610cc181611bca565b610cca82612047565b91604051610cd7816119c9565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600360205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f00000000000000000000000000000000000000000000000000000000000000001691610d7181612366565b833b156102f4576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd926020926102da5750604051908152a2005b7fa7849e8e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102f4575f6003193601126102f4576020610e3e611d2b565b6001600160a01b0360405191168152f35b346102f45760206003193601126102f4576004356706f05b59d3b200008111610dfc57602081610e9f7f48c5c3ccec54c4e0ea08d83d838fa9bb725eb0b52c591cb00bd6e63bca8c44f69361208c565b610ea76120d4565b80600155604051908152a1005b346102f4576020806003193601126102f457610ece611940565b90610ed8826121c0565b90610ee282611b00565b925f946001600160a01b03809116955b848110610f0b5760405180610f07888261198e565b0390f35b600190875f526008845260405f2083610f248388611b4f565b51165f52845260405f2054610f398289611b4f565b5201610ef2565b346102f45760206003193601126102f457610b2c610f5c611940565b611bca565b346102f4576020806003193601126102f457610f7b611940565b90610f85826121c0565b90610f8f82611b00565b925f946001600160a01b03809116955b848110610fb45760405180610f07888261198e565b600190875f526007845260405f2083610fcd8388611b4f565b51165f52845260405f2054610fe28289611b4f565b5201610f9f565b346102f4575f6003193601126102f45760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102f45760206003193601126102f4576004356706f05b59d3b2000081116102f85760208161107c7fbf5ac0fc89bbf8819be79f280146b65ea2af2a9705cd9cfe0c9d93f6e87f307d9361208c565b6110846120d4565b805f55604051908152a1005b346102f45760206003193601126102f4576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102f4576110d8602091611a83565b604051908152f35b346102f45760206003193601126102f4576001600160a01b03611101611940565b165f526003602052602060405f206040519061111c826119c9565b5467ffffffffffffffff811680835260ff604092831c1615159390920183905280519182526020820192909252f35b346102f4575f6003193601126102f45760205f54604051908152f35b346102f45760606003193601126102f457611180611940565b611188611956565b9060443590811515908183036102f4576040936111a3611fe9565b6001600160a01b0380921690815f5260209260048452865f2091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055835f146112bd575f935b156112b4575f925b61120085612047565b865161120b816119c9565b67ffffffffffffffff809216815284810191838352845f526002865280895f20925116918054935115158a1b937fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000938468ff000000000000000080971692161717905561127787612047565b94818a5196611285886119c9565b1686528686019485525f5260038652885f2094511691845493511515891b169216171790558351928352820152f35b600154926111f7565b5f54936111ef565b346102f4576020806003193601126102f4576112df611940565b6112e881611bca565b6001600160a01b039182821692835f526002825260405f20906040519161130e836119c9565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101525f54938161145e575b5061133f57005b61134883612047565b908060405192611357846119c9565b168252848201905f8252875f526002865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f000000000000000000000000000000000000000000000000000000000000000016926113d68161239b565b843b156102f4576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af19283156102e9577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e936102da5750604051908152a2005b905083141587611338565b346102f4576020806003193601126102f457611483611940565b61148c81611bca565b6001600160a01b039182821692835f526003825260405f2090604051916114b2836119c9565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101526001549381611603575b506114e457005b6114ed83612047565b9080604051926114fc846119c9565b168252848201905f8252875f526003865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f0000000000000000000000000000000000000000000000000000000000000000169261157b81612366565b843b156102f4576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af19283156102e9577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd936102da5750604051908152a2005b9050831415876114dd565b61196c565b346102f45760206003193601126102f4576001600160a01b03611634611940565b165f526002602052602060405f206040519061111c826119c9565b346102f4575f6003193601126102f4576020600154604051908152f35b346102f45760206003193601126102f457610b2c611688611940565b6001600160a01b038082165f52600460205260405f20541690611f32565b346102f45760406003193601126102f4576116bf611940565b602435906116cc81611eae565b670de0ad9b58f1600082116117b6576116e481611bca565b6001600160a01b039182821692835f5260066020528160405f20557f0000000000000000000000000000000000000000000000000000000000000000169161172b81612366565b833b156102f4576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577f47f70ddbc624c299cef7841aaea0a86b677c800203e953104e958c9ec9bdab34926020926102da5750604051908152a2005b7f0370da74000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102f4575f6003193601126102f4576020604051670de0ad9b58f160008152f35b346102f45760406003193601126102f457611819611940565b6024359061182681611eae565b670de0ad9b58f1600082116117b65761183e81611bca565b6001600160a01b039182821692835f5260056020528160405f20557f000000000000000000000000000000000000000000000000000000000000000016916118858161239b565b833b156102f4576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156102e9577fb7cf36369623c01ed7b2eafc4025224e924a2836d5fb49428a0f65417586bf5c926020926119105750604051908152a2005b61191990611a12565b846102d0565b346102f45760406003193601126102f45760206110d8602435600435611e6d565b600435906001600160a01b03821682036102f457565b602435906001600160a01b03821682036102f457565b346102f4575f6003193601126102f45760206040516706f05b59d3b200008152f35b60209060206040818301928281528551809452019301915f5b8281106119b5575050505090565b8351855293810193928101926001016119a7565b6040810190811067ffffffffffffffff8211176119e557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff81116119e557604052565b6060810190811067ffffffffffffffff8211176119e557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176119e557604052565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f0000000000000000000000000000000000000000000000000000000000000000845216604082015260248152611ae281611a26565b51902090565b67ffffffffffffffff81116119e55760051b60200190565b90611b0a82611ae8565b611b176040519182611a42565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b458294611ae8565b0190602036910137565b8051821015611b635760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b67ffffffffffffffff81116119e557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0905f601f6001600160a01b036040519383604460209684888201947ffa399f2a00000000000000000000000000000000000000000000000000000000865216602482015260248152611c3c81611a26565b604051988996879586937f48c894910000000000000000000000000000000000000000000000000000000085528b60048601525180918160248701528686015e85858286010152011681010301927f0000000000000000000000000000000000000000000000000000000000000000165af180156102e957611cbc575050565b3d805f843e611ccb8184611a42565b82019181818403126102f45780519067ffffffffffffffff82116102f457019180601f840112156102f457825190611d0282611b90565b90611d106040519283611a42565b8282528383860101116102f45781835f95018483015e010152565b6040517faaabadc50000000000000000000000000000000000000000000000000000000081526001600160a01b036020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa9182156102e9575f92611d9657505090565b9091506020813d602011611dc7575b81611db260209383611a42565b810103126102f4575190811681036102f45790565b3d9150611da5565b9080601f830112156102f457815190602091611dea81611ae8565b93611df86040519586611a42565b81855260208086019260051b8201019283116102f457602001905b828210611e21575050505090565b81518152908301908301611e13565b919082018092116106b457565b90670de0b6b3a7640000918281029281840414901517156106b457565b818102929181159184041417156106b457565b90611e9a64174876e800928392611e93670de0b6b3a76400009183830383851002611e5a565b0490611e30565b048181029181830414901517156106b45790565b6001600160a01b0380911690815f52600460205260405f2054168015611f06573303611ed75750565b7ffbecdbf4000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b507f8bcbf353000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90611f3c826121c0565b92905f5b848110611f4e575050505050565b6001906001600160a01b0380611f648386611b4f565b5116818616805f5260086020818152604094855f20855f528252855f20549586611f96575b5050505050505001611f40565b7f938f3a3a03ee425ccc0f8010b0468938cbafd3750fa43bbdf09c6f75e97e51f993855f528352805f20865f5283525f81812055611fd5878d886123cd565b519586528a1694a45f808080808080611f89565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361201b57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b67ffffffffffffffff9081811161205c571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52604060045260245260445ffd5b64174876e8008082048181029181830414901517156106b457036120ac57565b7f833fb3ce000000000000000000000000000000000000000000000000000000005f5260045ffd5b6121007fffffffff000000000000000000000000000000000000000000000000000000005f3516611a83565b60206001600160a01b03612112611d2b565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa9081156102e9575f91612191575b501561216957565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b6121b3915060203d6020116121b9575b6121ab8183611a42565b8101906124c5565b5f612161565b503d6121a1565b906001600160a01b0380604051937fca4f28030000000000000000000000000000000000000000000000000000000085521660048401525f83602481847f0000000000000000000000000000000000000000000000000000000000000000165afa9283156102e9575f93612236575b5050815190565b909192503d805f833e6122498183611a42565b810160209182818303126102f45780519067ffffffffffffffff82116102f457019281601f850112156102f457835161228181611ae8565b9461228f6040519687611a42565b818652848087019260051b8201019384116102f4578401905b8382106122bc575050505050905f8061222f565b815183811681036102f45781529084019084016122a8565b91906001600160a01b0380931690815f52600760205260405f209284811693845f5260205260405f2054948561230d575b505050505050565b82612352877f1c2887fcb98f75e66bb9a36311f2d3d22fb204e6362106f30e9df7eaf63131b595602095885f526007875260405f208a5f5287525f60408120556123cd565b6040519687521694a45f8080808080612305565b6001600160a01b03165f52600360205261239867ffffffffffffffff60405f205416600660205260405f205490611e6d565b90565b6001600160a01b03165f52600260205261239867ffffffffffffffff60405f205416600560205260405f205490611e6d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082019081526001600160a01b03938416602483015260448083019590955293815292612461925f928392919061242a606488611a42565b1694519082865af13d156124bd573d9061244382611b90565b916124516040519384611a42565b82523d5f602084013e5b836124dd565b80519081151591826124a2575b50506124775750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6124b592506020809183010191016124c5565b155f8061246e565b60609061245b565b908160209103126102f4575180151581036102f45790565b9061251a57508051156124f257805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580612560575b61252b575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561252356fea26469706673582212202551060583cf7643fcdd874660582a839f97643f6fcd6d62d3eb94e3475aad4564736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDDD60C6 EQ PUSH2 0x191F JUMPI DUP1 PUSH4 0x1377C16C EQ PUSH2 0x1800 JUMPI DUP1 PUSH4 0x2772D156 EQ PUSH2 0x160E JUMPI DUP1 PUSH4 0x2E1D388D EQ PUSH2 0x17DE JUMPI DUP1 PUSH4 0x3AF52712 EQ PUSH2 0x16A6 JUMPI DUP1 PUSH4 0x52F125F0 EQ PUSH2 0x166C JUMPI DUP1 PUSH4 0x55FB76AF EQ PUSH2 0x164F JUMPI DUP1 PUSH4 0x5C15A0B4 EQ PUSH2 0x1613 JUMPI DUP1 PUSH4 0x5E32E4E8 EQ PUSH2 0x160E JUMPI DUP1 PUSH4 0x71447EA8 EQ PUSH2 0x1469 JUMPI DUP1 PUSH4 0x71ECC8FB EQ PUSH2 0x12C5 JUMPI DUP1 PUSH4 0x77FF76E7 EQ PUSH2 0x1167 JUMPI DUP1 PUSH4 0x7869EE18 EQ PUSH2 0x114B JUMPI DUP1 PUSH4 0x7A2B97DC EQ PUSH2 0x10E0 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1090 JUMPI DUP1 PUSH4 0x8A3C5C69 EQ PUSH2 0x102C JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xFE9 JUMPI DUP1 PUSH4 0x8DF44C54 EQ PUSH2 0xF61 JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0xF40 JUMPI DUP1 PUSH4 0x9E95F3FD EQ PUSH2 0xEB4 JUMPI DUP1 PUSH4 0xA93DF2A4 EQ PUSH2 0xE4F JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xE24 JUMPI DUP1 PUSH4 0xABAA3356 EQ PUSH2 0xC7B JUMPI DUP1 PUSH4 0xB53A70B2 EQ PUSH2 0xB94 JUMPI DUP1 PUSH4 0xCF7B287F EQ PUSH2 0xB2E JUMPI DUP1 PUSH4 0xF7061445 EQ PUSH2 0xAF9 JUMPI DUP1 PUSH4 0xFA399F2A EQ PUSH2 0x363 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0x320 JUMPI PUSH4 0xFD267F39 EQ PUSH2 0x158 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x171 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x17D PUSH2 0x20D4 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0x2F8 JUMPI PUSH2 0x195 DUP3 PUSH2 0x208C JUMP JUMPDEST PUSH2 0x19E DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH2 0x1A7 DUP3 PUSH2 0x2047 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0x1B4 DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x24E DUP2 PUSH2 0x239B JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x2DA JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0x2E3 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH0 PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x7E6EB7FB00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x37C PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x384 PUSH2 0x1FE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8F4AB9CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH2 0xA9C JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH0 SWAP3 DUP3 ISZERO ISZERO SWAP4 DUP5 PUSH2 0xA92 JUMPI JUMPDEST DUP5 PUSH2 0xA82 JUMPI JUMPDEST PUSH2 0x443 DUP8 PUSH2 0x21C0 JUMP JUMPDEST SWAP5 SWAP1 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x7F3 JUMPI DUP10 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH0 SWAP3 PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 PUSH0 DUP5 ISZERO ISZERO SWAP5 DUP6 PUSH2 0x7E9 JUMPI JUMPDEST DUP6 PUSH2 0x7D7 JUMPI JUMPDEST PUSH2 0x498 DUP5 PUSH2 0x21C0 JUMP JUMPDEST SWAP7 SWAP1 PUSH0 JUMPDEST DUP9 DUP2 LT PUSH2 0x4A5 JUMPI STOP JUMPDEST PUSH2 0x4AF DUP2 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH2 0x4BD JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x49C JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4D0 DUP12 DUP5 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x4DD DUP12 DUP11 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x7C8 JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x7B1 JUMPI JUMPDEST POP PUSH2 0x784 JUMPI POP PUSH0 SWAP10 DUP2 PUSH2 0x599 DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xE505E41B0D437B47350A9990142CCF38ACB11FFA0E5AF8F973B9E172F3D5D5E2 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP3 LOG3 DUP4 ISZERO PUSH2 0x709 JUMPI PUSH2 0x5DF DUP2 DUP11 PUSH2 0x1B4F JUMP JUMPDEST MLOAD DUP7 ISZERO PUSH2 0x6E1 JUMPI PUSH2 0x5EF SWAP1 PUSH2 0x1E3D JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x630 DUP11 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP13 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x1E5A JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x664 DUP5 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x670 DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6B4 JUMPI PUSH1 0x1 SWAP4 PUSH2 0x6AA SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x4B5 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP2 DUP6 PUSH2 0x74E JUMPI PUSH2 0x71B DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x747 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x6AD JUMP JUMPDEST PUSH2 0x758 DUP3 DUP12 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x747 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST DUP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 SWAP3 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x7BA SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x7C5 JUMPI DUP1 DUP13 PUSH2 0x586 JUMP JUMPDEST DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST SWAP1 POP PUSH2 0x7E3 DUP2 DUP4 PUSH2 0x1E6D JUMP JUMPDEST SWAP1 PUSH2 0x48F JUMP JUMPDEST DUP3 ISZERO ISZERO SWAP6 POP PUSH2 0x489 JUMP JUMPDEST PUSH2 0x7FD DUP2 DUP8 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH2 0x80B JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x81D DUP3 DUP5 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x82A DUP2 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH2 0xA73 JUMPI JUMPDEST POP DUP2 DUP12 PUSH32 0xAE7EBAD9FC3D1D17965F063FA520D393595E2EF6C8E22AE8413B60900444E19F PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x908 DUP7 DUP14 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND SWAP3 LOG3 DUP9 ISZERO PUSH2 0x9F8 JUMPI PUSH2 0x923 DUP2 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD DUP6 ISZERO PUSH2 0x6E1 JUMPI PUSH2 0x933 SWAP1 PUSH2 0x1E3D JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x974 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP12 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x1E5A JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x9A8 DUP5 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x9B4 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6B4 JUMPI PUSH1 0x1 SWAP4 PUSH2 0x9EE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x803 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP5 PUSH2 0xA3D JUMPI PUSH2 0xA0A DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA36 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0xA47 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA36 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x1E30 JUMP JUMPDEST PUSH2 0xA7C SWAP1 PUSH2 0x1A12 JUMP JUMPDEST DUP12 PUSH2 0x8D0 JUMP JUMPDEST POP PUSH2 0xA8D DUP4 DUP3 PUSH2 0x1E6D JUMP JUMPDEST PUSH2 0x43A JUMP JUMPDEST DUP2 ISZERO ISZERO SWAP5 POP PUSH2 0x434 JUMP JUMPDEST SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xAAE DUP2 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0x2F4 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x2F4 JUMPI DUP2 PUSH2 0xADB SWAP2 DUP5 ADD PUSH2 0x1DCF JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x2F4 JUMPI PUSH2 0xAF2 SWAP3 ADD PUSH2 0x1DCF JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x3FB JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C PUSH2 0xB15 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0xB1D PUSH2 0x1956 JUMP JUMPDEST SWAP1 PUSH2 0xB27 DUP2 PUSH2 0x1EAE JUMP JUMPDEST PUSH2 0x1F32 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB47 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0xB4F PUSH2 0x1956 JUMP JUMPDEST SWAP1 PUSH2 0xB58 PUSH2 0x20D4 JUMP JUMPDEST PUSH2 0xB61 DUP2 PUSH2 0x21C0 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xB6D JUMPI STOP JUMPDEST DUP1 PUSH2 0xB8E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xB85 PUSH1 0x1 SWAP5 DUP8 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND DUP8 DUP6 PUSH2 0x22D4 JUMP JUMPDEST ADD PUSH2 0xB64 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xBAD PUSH2 0x1940 JUMP JUMPDEST PUSH2 0xBB5 PUSH2 0x1956 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP4 AND DUP1 DUP5 SUB PUSH2 0x2F4 JUMPI PUSH1 0x40 SWAP1 PUSH2 0xBD7 PUSH2 0x20D4 JUMP JUMPDEST PUSH1 0x44 DUP3 MLOAD DUP1 SWAP8 DUP2 SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP8 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH2 0xC48 JUMPI JUMPDEST PUSH2 0xB2C SWAP4 POP PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x40 DUP5 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0xC73 JUMPI JUMPDEST DUP2 PUSH2 0xC61 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C SWAP4 POP PUSH2 0xC3E JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xC54 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xC94 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xCA0 PUSH2 0x20D4 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0xDFC JUMPI PUSH2 0xCB8 DUP3 PUSH2 0x208C JUMP JUMPDEST PUSH2 0xCC1 DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH2 0xCCA DUP3 PUSH2 0x2047 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0xCD7 DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0xD71 DUP2 PUSH2 0x2366 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH32 0xA7849E8E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH2 0xE3E PUSH2 0x1D2B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0xDFC JUMPI PUSH1 0x20 DUP2 PUSH2 0xE9F PUSH32 0x48C5C3CCEC54C4E0EA08D83D838FA9BB725EB0B52C591CB00BD6E63BCA8C44F6 SWAP4 PUSH2 0x208C JUMP JUMPDEST PUSH2 0xEA7 PUSH2 0x20D4 JUMP JUMPDEST DUP1 PUSH1 0x1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xECE PUSH2 0x1940 JUMP JUMPDEST SWAP1 PUSH2 0xED8 DUP3 PUSH2 0x21C0 JUMP JUMPDEST SWAP1 PUSH2 0xEE2 DUP3 PUSH2 0x1B00 JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0xF0B JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0xF07 DUP9 DUP3 PUSH2 0x198E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x8 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0xF24 DUP4 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xF39 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MSTORE ADD PUSH2 0xEF2 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C PUSH2 0xF5C PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x1BCA JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xF7B PUSH2 0x1940 JUMP JUMPDEST SWAP1 PUSH2 0xF85 DUP3 PUSH2 0x21C0 JUMP JUMPDEST SWAP1 PUSH2 0xF8F DUP3 PUSH2 0x1B00 JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0xFB4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0xF07 DUP9 DUP3 PUSH2 0x198E JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x7 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0xFCD DUP4 DUP9 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xFE2 DUP3 DUP10 PUSH2 0x1B4F JUMP JUMPDEST MSTORE ADD PUSH2 0xF9F JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0x2F8 JUMPI PUSH1 0x20 DUP2 PUSH2 0x107C PUSH32 0xBF5AC0FC89BBF8819BE79F280146B65EA2AF2A9705CD9CFE0C9D93F6E87F307D SWAP4 PUSH2 0x208C JUMP JUMPDEST PUSH2 0x1084 PUSH2 0x20D4 JUMP JUMPDEST DUP1 PUSH0 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x2F4 JUMPI PUSH2 0x10D8 PUSH1 0x20 SWAP2 PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1101 PUSH2 0x1940 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x111C DUP3 PUSH2 0x19C9 JUMP JUMPDEST SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0xFF PUSH1 0x40 SWAP3 DUP4 SHR AND ISZERO ISZERO SWAP4 SWAP1 SWAP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x1180 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x1188 PUSH2 0x1956 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO SWAP1 DUP2 DUP4 SUB PUSH2 0x2F4 JUMPI PUSH1 0x40 SWAP4 PUSH2 0x11A3 PUSH2 0x1FE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x4 DUP5 MSTORE DUP7 PUSH0 KECCAK256 SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 PUSH0 EQ PUSH2 0x12BD JUMPI PUSH0 SWAP4 JUMPDEST ISZERO PUSH2 0x12B4 JUMPI PUSH0 SWAP3 JUMPDEST PUSH2 0x1200 DUP6 PUSH2 0x2047 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x120B DUP2 PUSH2 0x19C9 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP2 MSTORE DUP5 DUP2 ADD SWAP2 DUP4 DUP4 MSTORE DUP5 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE DUP1 DUP10 PUSH0 KECCAK256 SWAP3 MLOAD AND SWAP2 DUP1 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP11 SHL SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 SWAP4 DUP5 PUSH9 0xFF0000000000000000 DUP1 SWAP8 AND SWAP3 AND OR OR SWAP1 SSTORE PUSH2 0x1277 DUP8 PUSH2 0x2047 JUMP JUMPDEST SWAP5 DUP2 DUP11 MLOAD SWAP7 PUSH2 0x1285 DUP9 PUSH2 0x19C9 JUMP JUMPDEST AND DUP7 MSTORE DUP7 DUP7 ADD SWAP5 DUP6 MSTORE PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE DUP9 PUSH0 KECCAK256 SWAP5 MLOAD AND SWAP2 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP10 SHL AND SWAP3 AND OR OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 SLOAD SWAP3 PUSH2 0x11F7 JUMP JUMPDEST PUSH0 SLOAD SWAP4 PUSH2 0x11EF JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x12DF PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x12E8 DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x130E DUP4 PUSH2 0x19C9 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH0 SLOAD SWAP4 DUP2 PUSH2 0x145E JUMPI JUMPDEST POP PUSH2 0x133F JUMPI STOP JUMPDEST PUSH2 0x1348 DUP4 PUSH2 0x2047 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1357 DUP5 PUSH2 0x19C9 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x13D6 DUP2 PUSH2 0x239B JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP4 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x1338 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x1483 PUSH2 0x1940 JUMP JUMPDEST PUSH2 0x148C DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x3 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x14B2 DUP4 PUSH2 0x19C9 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH1 0x1 SLOAD SWAP4 DUP2 PUSH2 0x1603 JUMPI JUMPDEST POP PUSH2 0x14E4 JUMPI STOP JUMPDEST PUSH2 0x14ED DUP4 PUSH2 0x2047 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x14FC DUP5 PUSH2 0x19C9 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x157B DUP2 PUSH2 0x2366 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP4 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x14DD JUMP JUMPDEST PUSH2 0x196C JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1634 PUSH2 0x1940 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x111C DUP3 PUSH2 0x19C9 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0xB2C PUSH2 0x1688 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x1F32 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x16BF PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x16CC DUP2 PUSH2 0x1EAE JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x17B6 JUMPI PUSH2 0x16E4 DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x172B DUP2 PUSH2 0x2366 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0x47F70DDBC624C299CEF7841AAEA0A86B677C800203E953104E958C9EC9BDAB34 SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x2DA JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH32 0x370DA7400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0xDE0AD9B58F16000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH2 0x1819 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1826 DUP2 PUSH2 0x1EAE JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x17B6 JUMPI PUSH2 0x183E DUP2 PUSH2 0x1BCA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x1885 DUP2 PUSH2 0x239B JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH32 0xB7CF36369623C01ED7B2EAFC4025224E924A2836D5FB49428A0F65417586BF5C SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x1910 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0x1919 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST DUP5 PUSH2 0x2D0 JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH2 0x10D8 PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x1E6D JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2F4 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x2F4 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x2F4 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0x6F05B59D3B20000 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x19B5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x19A7 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x19E5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1AE2 DUP2 PUSH2 0x1A26 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19E5 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1B0A DUP3 PUSH2 0x1AE8 JUMP JUMPDEST PUSH2 0x1B17 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1A42 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1B45 DUP3 SWAP5 PUSH2 0x1AE8 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1B63 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x19E5 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 PUSH0 PUSH1 0x1F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP4 DUP4 PUSH1 0x44 PUSH1 0x20 SWAP7 DUP5 DUP9 DUP3 ADD SWAP5 PUSH32 0xFA399F2A00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1C3C DUP2 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP12 PUSH1 0x4 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x24 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY DUP6 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x2E9 JUMPI PUSH2 0x1CBC JUMPI POP POP JUMP JUMPDEST RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x1CCB DUP2 DUP5 PUSH2 0x1A42 JUMP JUMPDEST DUP3 ADD SWAP2 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x2F4 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2F4 JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2F4 JUMPI DUP3 MLOAD SWAP1 PUSH2 0x1D02 DUP3 PUSH2 0x1B90 JUMP JUMPDEST SWAP1 PUSH2 0x1D10 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP3 DUP3 MSTORE DUP4 DUP4 DUP7 ADD ADD GT PUSH2 0x2F4 JUMPI DUP2 DUP4 PUSH0 SWAP6 ADD DUP5 DUP4 ADD MCOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP3 PUSH2 0x1D96 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1DC7 JUMPI JUMPDEST DUP2 PUSH2 0x1DB2 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2F4 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F4 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1DA5 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2F4 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x1DEA DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP4 PUSH2 0x1DF8 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1A42 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x2F4 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1E21 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1E13 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x6B4 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6B4 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x6B4 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x1E9A PUSH5 0x174876E800 SWAP3 DUP4 SWAP3 PUSH2 0x1E93 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP4 DUP4 SUB DUP4 DUP6 LT MUL PUSH2 0x1E5A JUMP JUMPDEST DIV SWAP1 PUSH2 0x1E30 JUMP JUMPDEST DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6B4 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x1F06 JUMPI CALLER SUB PUSH2 0x1ED7 JUMPI POP JUMP JUMPDEST PUSH32 0xFBECDBF400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH32 0x8BCBF35300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x1F3C DUP3 PUSH2 0x21C0 JUMP JUMPDEST SWAP3 SWAP1 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1F4E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x1F64 DUP4 DUP7 PUSH2 0x1B4F JUMP JUMPDEST MLOAD AND DUP2 DUP7 AND DUP1 PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP5 DUP6 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE DUP6 PUSH0 KECCAK256 SLOAD SWAP6 DUP7 PUSH2 0x1F96 JUMPI JUMPDEST POP POP POP POP POP POP POP ADD PUSH2 0x1F40 JUMP JUMPDEST PUSH32 0x938F3A3A03EE425CCC0F8010B0468938CBAFD3750FA43BBDF09C6F75E97E51F9 SWAP4 DUP6 PUSH0 MSTORE DUP4 MSTORE DUP1 PUSH0 KECCAK256 DUP7 PUSH0 MSTORE DUP4 MSTORE PUSH0 DUP2 DUP2 KECCAK256 SSTORE PUSH2 0x1FD5 DUP8 DUP14 DUP9 PUSH2 0x23CD JUMP JUMPDEST MLOAD SWAP6 DUP7 MSTORE DUP11 AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1F89 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x201B JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x205C JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x40 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH5 0x174876E800 DUP1 DUP3 DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6B4 JUMPI SUB PUSH2 0x20AC JUMPI JUMP JUMPDEST PUSH32 0x833FB3CE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2100 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2112 PUSH2 0x1D2B JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP2 PUSH2 0x2191 JUMPI JUMPDEST POP ISZERO PUSH2 0x2169 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x21B3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21B9 JUMPI JUMPDEST PUSH2 0x21AB DUP2 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24C5 JUMP JUMPDEST PUSH0 PUSH2 0x2161 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x21A1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x2E9 JUMPI PUSH0 SWAP4 PUSH2 0x2236 JUMPI JUMPDEST POP POP DUP2 MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2249 DUP2 DUP4 PUSH2 0x1A42 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 SWAP2 DUP3 DUP2 DUP4 SUB SLT PUSH2 0x2F4 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2F4 JUMPI ADD SWAP3 DUP2 PUSH1 0x1F DUP6 ADD SLT ISZERO PUSH2 0x2F4 JUMPI DUP4 MLOAD PUSH2 0x2281 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP5 PUSH2 0x228F PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x1A42 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP5 DUP1 DUP8 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP4 DUP5 GT PUSH2 0x2F4 JUMPI DUP5 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x22BC JUMPI POP POP POP POP POP SWAP1 PUSH0 DUP1 PUSH2 0x222F JUMP JUMPDEST DUP2 MLOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F4 JUMPI DUP2 MSTORE SWAP1 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x22A8 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP5 DUP2 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP5 DUP6 PUSH2 0x230D JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x2352 DUP8 PUSH32 0x1C2887FCB98F75E66BB9A36311F2D3D22FB204E6362106F30E9DF7EAF63131B5 SWAP6 PUSH1 0x20 SWAP6 DUP9 PUSH0 MSTORE PUSH1 0x7 DUP8 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP11 PUSH0 MSTORE DUP8 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x23CD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 MSTORE AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2305 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x2398 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x1E6D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x2398 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x1E6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP2 MSTORE SWAP3 PUSH2 0x2461 SWAP3 PUSH0 SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH2 0x242A PUSH1 0x64 DUP9 PUSH2 0x1A42 JUMP JUMPDEST AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x24BD JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2443 DUP3 PUSH2 0x1B90 JUMP JUMPDEST SWAP2 PUSH2 0x2451 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1A42 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST DUP4 PUSH2 0x24DD JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x24A2 JUMPI JUMPDEST POP POP PUSH2 0x2477 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x24B5 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x24C5 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0x246E JUMP JUMPDEST PUSH1 0x60 SWAP1 PUSH2 0x245B JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2F4 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x2F4 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x251A JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x24F2 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x2560 JUMPI JUMPDEST PUSH2 0x252B JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x2523 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 MLOAD MOD SDIV DUP4 0xCF PUSH23 0x43FCDD874660582A839F97643F6FCD6D62D3EB94E3475A 0xAD GASLIMIT PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"3090:25278:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;;;1525:73:35;;;:::i;:::-;4690:5:60;6787:55;;6783:127;;6941:20;;;:::i;:::-;7715:4;;;:::i;:::-;26199:39;;;:::i;:::-;3090:25278;;;;;;:::i;:::-;;;;;;;26156:129;;;3090:25278;21225:4;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;;;;;;26116:31;26156:129;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;26380:6;3090:25278;26426:54;;;;:::i;:::-;26380:101;;;;;3090:25278;;;26380:101;;-1:-1:-1;;;;;3090:25278:60;;;;;26380:101;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;-1:-1:-1;;26380:101:60;;;;;;;26497:68;26380:101;26156:129;26380:101;;;3090:25278;;;;;;;26497:68;3090:25278;26380:101;;;;:::i;:::-;3090:25278;26380:101;;;3090:25278;;;;;;;;;26380:101;3090:25278;;;6783:127;6865:34;3090:25278;6865:34;3090:25278;;6865:34;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;-1:-1:-1;;;;;8000:6:60;3090:25278;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;436:67:68;;:::i;:::-;3090:25278:60;;;8674:33;;-1:-1:-1;;;;;3090:25278:60;;;8674:33;;3090:25278;;8674:6;3090:25278;8674:6;;-1:-1:-1;;;;;8674:6:60;3090:25278;8674:33;;;;;;;3090:25278;;;8674:33;;;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;;;;;;;;;;;;10665:30;3090:25278;;;;;;10764:30;3090:25278;10828:28;;;;:57;;;;3090:25278;10895:199;;;3090:25278;11154:28;;;:::i;:::-;11197:13;;3090:25278;11212:13;;;;;;10420:20;;-1:-1:-1;;;;;3090:25278:60;;;;10521:32;3090:25278;;;;;;;;10619:134;3090:25278;;10716:31;3090:25278;;;;;;10764:30;3090:25278;10828:28;;;:57;;;;11192:1939;10895:199;;;11192:1939;11154:28;;;:::i;:::-;11197:13;;3090:25278;11212:13;;;;;;3090:25278;11227:3;11250:13;;;;:::i;:::-;3090:25278;11246:1875;;11227:3;3090:25278;;11197:13;;11246:1875;11302:13;-1:-1:-1;;;;;11302:13:60;;;;:::i;:::-;3090:25278;;11370:13;;;;;:::i;:::-;3090:25278;-1:-1:-1;;;;;8674:6:60;3090:25278;11334:50;;;;3090:25278;;11334:50;3090:25278;11334:50;;;3090:25278;11334:50;;3090:25278;11363:4;3090:25278;;;;;;;;8674:6;;3090:25278;8674:6;;-1:-1:-1;;;;;8674:6:60;3090:25278;11334:50;;;;;;;;;;;11246:1875;3090:25278;;;11559:240;3090:25278;11766:13;;;;;;:::i;:::-;3090:25278;;;;;;11727:53;3090:25278;-1:-1:-1;;;;;3090:25278:60;;11727:53;;11817:1290;;;;12423:13;;;;:::i;:::-;3090:25278;2004:6:47;;2000:58;;2153:5;;;:::i;:::-;3090:25278:60;465:4:47;1068:5;2560:120;;;;;;;;;;;;;;1068:5;:::i;:::-;1186:122;;;;;;;;;3090:25278:60;-1:-1:-1;;;;;3090:25278:60;;;;12583:19;3090:25278;;;;;;;;;;;;;12583:51;3090:25278;;;12583:51;:::i;:::-;3090:25278;;12695:13;;;;:::i;:::-;3090:25278;;;;;;;;;;;12656:70;3090:25278;-1:-1:-1;;;;;3090:25278:60;;;;12656:22;3090:25278;;;;;;;;;;;;;;;;;12656:70;:::i;:::-;3090:25278;;11817:1290;11246:1875;;;;3090:25278;;;;;;;;;;2000:58:47;2033:14;3090:25278:60;2033:14:47;3090:25278:60;;2033:14:47;11817:1290:60;3090:25278;;10828:28;;;12946:13;;;;:::i;:::-;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;;12910:19;3090:25278;;;;;;;;;;12910:49;3090:25278;;;;;;12910:49;:::i;:::-;3090:25278;;11817:1290;;12849:240;13053:13;;;;:::i;:::-;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;;13014:22;3090:25278;;;;;;;;;;13014:52;3090:25278;;;;;;13014:52;:::i;3090:25278::-;;;;;;;;;;11334:50;;;;:::i;:::-;3090:25278;;11334:50;;;;3090:25278;;;11334:50;3090:25278;;;;;;;;;11334:50;3090:25278;;;10895:199;11004:79;;;;;;:::i;:::-;10895:199;;;10828:57;10860:25;;;;-1:-1:-1;10828:57:60;;11227:3;11250:13;;;;:::i;:::-;3090:25278;11246:1875;;11227:3;3090:25278;;11197:13;;11246:1875;-1:-1:-1;;;;;11302:13:60;;;;:::i;:::-;3090:25278;;11370:13;;;;;:::i;:::-;3090:25278;-1:-1:-1;;;;;8674:6:60;3090:25278;11334:50;;;;3090:25278;;11334:50;3090:25278;11334:50;;;3090:25278;11334:50;;3090:25278;11363:4;3090:25278;;;;;;;;;8674:6;3090:25278;8674:6;;-1:-1:-1;;;;;8674:6:60;3090:25278;11334:50;;;;;;;;11246:1875;11661:13;;;11623:52;3090:25278;-1:-1:-1;;;;;11661:13:60;;;;:::i;:::-;3090:25278;;;;;;;;11623:52;;11817:1290;;;;12423:13;;;;:::i;:::-;3090:25278;2004:6:47;;2000:58;;2153:5;;;:::i;:::-;3090:25278:60;465:4:47;1068:5;2560:120;;;;;;;;;;;;;;1068:5;:::i;:::-;1186:122;;;;;;;;;3090:25278:60;-1:-1:-1;;;;;3090:25278:60;;;;12583:19;3090:25278;;;;;;;;;;;;;12583:51;3090:25278;;;12583:51;:::i;:::-;3090:25278;;12695:13;;;;:::i;:::-;3090:25278;;;;;;;;;;;12656:70;3090:25278;-1:-1:-1;;;;;3090:25278:60;;;;12656:22;3090:25278;;;;;;;;;;;;;;;;;12656:70;:::i;:::-;3090:25278;;11817:1290;11246:1875;;;;11817:1290;3090:25278;;10828:28;;;12946:13;;;;:::i;:::-;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;;12910:19;3090:25278;;;;;;;;;;12910:49;3090:25278;;;;;;12910:49;:::i;:::-;3090:25278;;11817:1290;;12849:240;13053:13;;;;:::i;:::-;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;;13014:22;3090:25278;;;;;;;;;;13014:52;3090:25278;;;;;;13014:52;:::i;11334:50::-;;;;:::i;:::-;;;;10895:199;11004:79;;;;;:::i;:::-;10895:199;;10828:57;10860:25;;;;-1:-1:-1;10828:57:60;;8674:33;;;;;;3090:25278;8674:33;;;;;;:::i;:::-;;;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8674:33;;;;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;24749:9;3090:25278;;:::i;:::-;;;:::i;:::-;6627:4;;;;:::i;:::-;24749:9;:::i;:::-;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;;;:::i;:::-;1525:73:35;;;:::i;:::-;23582:28:60;;;:::i;:::-;23626:13;3090:25278;23641:13;;;;;;3090:25278;23656:3;23690:13;23757:5;-1:-1:-1;;;;;23690:13:60;3090:25278;23690:13;;;:::i;:::-;3090:25278;;23757:5;;;:::i;:::-;3090:25278;23626:13;;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3090:25278:60;;;;;;;;;;1525:73:35;;;:::i;:::-;3090:25278:60;;;24039:52;;;;3090:25278;24039:52;;3090:25278;;;;24039:52;;3090:25278;;;;;24039:6;3090:25278;24039:52;;;;;;;;3090:25278;24140:5;;;;:::i;24039:52::-;3090:25278;24039:52;;3090:25278;24039:52;;;;;;3090:25278;24039:52;;;:::i;:::-;;;3090:25278;;;;24140:5;;-1:-1:-1;24039:52:60;;;;;-1:-1:-1;24039:52:60;;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;;;1525:73:35;;;:::i;:::-;4690:5:60;7120:57;;7116:130;;7277:21;;;:::i;:::-;7715:4;;;:::i;:::-;27232:40;;;:::i;:::-;3090:25278;;;;;;:::i;:::-;;;;;;;27189:130;;;3090:25278;21569:4;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;;;;;;27148:32;27189:130;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;27415:6;3090:25278;27462:55;;;;:::i;:::-;27415:103;;;;;3090:25278;;;27415:103;;-1:-1:-1;;;;;3090:25278:60;;;;;27415:103;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;-1:-1:-1;;27415:103:60;;;;;;;27534:70;27415:103;27189:130;27415:103;;;3090:25278;;;;;;27534:70;3090:25278;7116:130;7200:35;3090:25278;7200:35;3090:25278;;7200:35;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3090:25278:60;;;;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;4690:5;7120:57;;7116:130;;3090:25278;7277:21;;20822:70;7277:21;;:::i;:::-;1525:73:35;;:::i;:::-;3090:25278:60;;;;;;;;20822:70;3090:25278;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;14695:28;;;;:::i;:::-;14747:24;;;;:::i;:::-;14786:13;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;14781:124;14801:13;;;;;;3090:25278;;;;;;;:::i;:::-;;;;14816:3;3090:25278;;;;;14851:22;3090:25278;;;;;14880:13;;;;;:::i;:::-;3090:25278;;;;;;;;;;14835:59;;;;:::i;:::-;3090:25278;;14786:13;;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;14273:28;;;;:::i;:::-;14325:24;;;;:::i;:::-;14364:13;3090:25278;;-1:-1:-1;;;;;3090:25278:60;;;14359:121;14379:13;;;;;;3090:25278;;;;;;;:::i;14394:3::-;3090:25278;;;;;14429:19;3090:25278;;;;;14455:13;;;;;:::i;:::-;3090:25278;;;;;;;;;;14413:56;;;;:::i;:::-;3090:25278;;14364:13;;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;-1:-1:-1;;;;;1216:6:63;3090:25278:60;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;4690:5;6787:55;;6783:127;;3090:25278;6941:20;;20438:68;6941:20;;:::i;:::-;1525:73:35;;:::i;:::-;3090:25278:60;;;;;;;;20438:68;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;-1:-1:-1;;;;;3090:25278:60;;:::i;:::-;;;;13963:32;3090:25278;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;436:67:68;;;:::i;:::-;-1:-1:-1;;;;;3090:25278:60;;;;;;;;;;;;;;;;;;;;;;;;19167:56;;;;;3090:25278;19167:56;;19263:57;;;3090:25278;19263:57;;19851:37;;;:::i;:::-;3090:25278;;;;;:::i;:::-;;;;;;;19808:134;;;3090:25278;;;;;;;19768:31;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20036:38;;;:::i;:::-;3090:25278;;;;;;;;:::i;:::-;;;;19993:135;;;3090:25278;;;;;19952:32;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19263:57;19287:33;3090:25278;19263:57;;;19167:56;3090:25278;;19167:56;;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;7715:4;;;:::i;:::-;-1:-1:-1;;;;;3090:25278:60;;;;;;;;15398:31;3090:25278;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;15524:81;;;;3090:25278;15520:176;;;3090:25278;15520:176;26199:39;;;:::i;:::-;3090:25278;;;;;;;;:::i;:::-;;;;26156:129;;;3090:25278;;;;;;;15398:31;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;;26380:6;3090:25278;26426:54;;;;:::i;:::-;26380:101;;;;;3090:25278;;;26380:101;;-1:-1:-1;;;;;3090:25278:60;;;;;26380:101;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;-1:-1:-1;;26380:101:60;;;;;;;26497:68;26380:101;;;3090:25278;;;;;;26497:68;3090:25278;15524:81;15557:48;;;;;15524:81;;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;7715:4;;;:::i;:::-;-1:-1:-1;;;;;3090:25278:60;;;;;;;;15880:32;3090:25278;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;15961:33;3090:25278;16009:82;;;;3090:25278;16005:179;;;3090:25278;16005:179;27232:40;;;:::i;:::-;3090:25278;;;;;;;;:::i;:::-;;;;27189:130;;;3090:25278;;;;;;;15880:32;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;;27415:6;3090:25278;27462:55;;;;:::i;:::-;27415:103;;;;;3090:25278;;;27415:103;;-1:-1:-1;;;;;3090:25278:60;;;;;27415:103;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;-1:-1:-1;;27415:103:60;;;;;;;27534:70;27415:103;;;3090:25278;;;;;;27534:70;3090:25278;16009:82;16042:49;;;;;16009:82;;;3090:25278;;:::i;:::-;;;;;-1:-1:-1;;3090:25278:60;;;;;-1:-1:-1;;;;;3090:25278:60;;:::i;:::-;;;;13682:31;3090:25278;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;3090:25278:60;;;;;;13465:33;3090:25278;;;;;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;24912:19;3090:25278;;:::i;:::-;-1:-1:-1;;;;;3090:25278:60;;;;;;;;;;;;;24912:19;;:::i;3090:25278::-;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;;;6627:4;;;;:::i;:::-;4945:9;7407:56;;7403:127;;7715:4;;;:::i;:::-;-1:-1:-1;;;;;3090:25278:60;;;;;;;;23014:31;3090:25278;;;;;;;23180:6;3090:25278;23227:55;;;;:::i;:::-;23180:103;;;;;3090:25278;;;23180:103;;-1:-1:-1;;;;;3090:25278:60;;;;;23180:103;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;-1:-1:-1;;23180:103:60;;;;;;;23303:68;23180:103;3090:25278;23180:103;;;3090:25278;;;;;;23303:68;3090:25278;7403:127;7486:33;3090:25278;7486:33;3090:25278;;7486:33;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;4945:9;3090:25278;;;;;;;;-1:-1:-1;;3090:25278:60;;;;;;;:::i;:::-;;;6627:4;;;;:::i;:::-;4945:9;7407:56;;7403:127;;7715:4;;;:::i;:::-;-1:-1:-1;;;;;3090:25278:60;;;;;;;;22631:30;3090:25278;;;;;;;22795:6;3090:25278;22841:54;;;;:::i;:::-;22795:101;;;;;3090:25278;;;22795:101;;-1:-1:-1;;;;;3090:25278:60;;;;;22795:101;;3090:25278;;;;;;-1:-1:-1;;3090:25278:60;;;;;;-1:-1:-1;;22795:101:60;;;;;;;22916:67;22795:101;3090:25278;22795:101;;;3090:25278;;;;;;22916:67;3090:25278;22795:101;;;;:::i;:::-;;;;3090:25278;;;;;-1:-1:-1;;3090:25278:60;;;;;;15135:79;3090:25278;;;;15135:79;:::i;3090:25278::-;;;;-1:-1:-1;;;;;3090:25278:60;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;3090:25278:60;;;;;;:::o;:::-;;;;;-1:-1:-1;;3090:25278:60;;;;;;;;4690:5;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;1931:430:35:-;3090:25278:60;;;2303:50:35;;;2320:22;;3090:25278:60;;;;;;;2303:50:35;;;;;;:::i;:::-;3090:25278:60;2293:61:35;;1931:430;:::o;3090:25278:60:-;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;8062:151::-;8137:68;8062:151;-1:-1:-1;3090:25278:60;-1:-1:-1;;;;;3090:25278:60;;8137:68;;3090:25278;8137:68;;;;;;;;;;3090:25278;8137:68;;;3090:25278;8137:68;;;;;;:::i;:::-;3090:25278;;8123:83;;;;;;;3090:25278;8123:83;;;8137:68;8123:83;;3090:25278;;;;;8137:68;3090:25278;;;;;;;;;;;;;;;;;;8123:83;;:6;;3090:25278;8123:83;;;;;;;;8062:151;;:::o;8123:83::-;;;-1:-1:-1;8123:83:60;;;;;;:::i;:::-;;;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;3090:25278:60;;;;;;;;;8062:151::o;1366:109:63:-;3090:25278:60;;;1442:26:63;;-1:-1:-1;;;;;1442:26:63;3090:25278:60;1442:26:63;3090:25278:60;1216:6:63;3090:25278:60;;1442:26:63;;;;;;;;;;;1435:33;;1366:109;:::o;1442:26::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;3090:25278:60;;;;;;;;;;;;1366:109:63;:::o;1442:26::-;;;-1:-1:-1;1442:26:63;;3090:25278:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;19669:4:31:-;;465::47;19669::31;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;16903:1064:60:-;;17132:104;19669:4:31;5832:87:47;;;838:5;5832:87;;;;;;;;;838:5;:::i;:::-;19669:4:31;17132:104:60;;:::i;:::-;19669:4:31;;;;;;;;;;;;;;;16903:1064:60;:::o;17973:338::-;-1:-1:-1;;;;;3090:25278:60;;;;;-1:-1:-1;3090:25278:60;18069:13;3090:25278;;;-1:-1:-1;3090:25278:60;;;18103:25;;18099:93;;18221:10;18206:25;18202:103;;17973:338;:::o;18202:103::-;18254:40;-1:-1:-1;18254:40:60;18221:10;18069:13;3090:25278;;;;-1:-1:-1;18254:40:60;18099:93;18151:30;;-1:-1:-1;18151:30:60;18069:13;3090:25278;;-1:-1:-1;18151:30:60;24945:616;;25080:28;;;:::i;:::-;25124:13;;25136:1;25139:13;;;;;;24945:616;;;;;:::o;25154:3::-;3090:25278;;-1:-1:-1;;;;;25188:13:60;;;;;:::i;:::-;3090:25278;;;;;;25136:1;3090:25278;25243:22;3090:25278;;;;;;;25136:1;3090:25278;;25136:1;3090:25278;;;;25136:1;3090:25278;;25296:20;;25292:253;;25154:3;;;;;;;;3090:25278;25124:13;;25292:253;25464:66;3090:25278;;25136:1;3090:25278;;;;25136:1;3090:25278;;25136:1;3090:25278;;;25136:1;3090:25278;;;;25423:16;;;;;:::i;:::-;3090:25278;;;;;;25464:66;;25292:253;;;;;;;;;509:165:68;-1:-1:-1;;;;;586:6:68;3090:25278:60;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;3090:25278:60;;616:41:68;;13291:213:111;3090:25278:60;13369:24:111;;;;13365:103;;3090:25278:60;13291:213:111;:::o;13365:103::-;13416:41;;;13447:2;13416:41;3090:25278:60;;;;13416:41:111;;27617:749:60;19669:4:31;;;;;;;;;;;;;;;;;;28218:74:60;28214:146;;27617:749::o;28214:146::-;28315:34;-1:-1:-1;28315:34:60;;-1:-1:-1;28315:34:60;1688:201:35;1762:20;1774:7;;;;1762:20;:::i;:::-;1592:60:63;-1:-1:-1;;;;;1592:15:63;;:::i;:::-;3090:25278:60;;;;;1592:60:63;;;;3090:25278:60;1592:60:63;;;;;3090:25278:60;1820:10:35;3090:25278:60;;;;1646:4:63;3090:25278:60;;;;1592:60:63;;;;;;;1774:7:35;1592:60:63;;;1688:201:35;1797:34;;1793:90;;1688:201::o;1793:90::-;1854:18;1774:7;1854:18;1592:60:63;1774:7:35;1854:18;1592:60:63;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;18317:199:60;;-1:-1:-1;;;;;3090:25278:60;;;18448:26;3090:25278;18448:26;;3090:25278;18448:26;;;3090:25278;18448:26;:6;3090:25278;18448:6;;;3090:25278;18448:26;;;;;;;;;;;18317:199;18439:35;;;3090:25278;18317:199;:::o;18448:26::-;;;;;;;;;;;;;;:::i;:::-;;;3090:25278;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;18448:26;;;;;;;;;;3090:25278;;;;;;;;;;;;;;;;;;;;24159:403;;;-1:-1:-1;;;;;3090:25278:60;;;;;-1:-1:-1;3090:25278:60;24283:19;3090:25278;;;-1:-1:-1;3090:25278:60;;;;;;;-1:-1:-1;3090:25278:60;;;;-1:-1:-1;3090:25278:60;;24329:20;;24325:231;;24159:403;;;;;;;:::o;24325:231::-;3090:25278;24445:16;3090:25278;24482:63;3090:25278;;;;-1:-1:-1;3090:25278:60;24283:19;3090:25278;;;-1:-1:-1;3090:25278:60;;-1:-1:-1;3090:25278:60;;;-1:-1:-1;3090:25278:60;;;;24445:16;:::i;:::-;3090:25278;;;;;;24482:63;;24325:231;;;;;;;;16196:701;-1:-1:-1;;;;;3090:25278:60;16395:399;3090:25278;16653:32;3090:25278;;16811:79;3090:25278;;16395:399;3090:25278;;;16746:31;3090:25278;;;16395:399;3090:25278;;16811:79;;:::i;:::-;16196:701;:::o;:::-;-1:-1:-1;;;;;3090:25278:60;-1:-1:-1;3090:25278:60;;;;16811:79;3090:25278;;-1:-1:-1;3090:25278:60;;;16562:30;3090:25278;;;-1:-1:-1;3090:25278:60;;16811:79;;:::i;1303:160:98:-;3090:25278:60;;;1412:43:98;;;;;;-1:-1:-1;;;;;3090:25278:60;;;1412:43:98;;;3090:25278:60;;;;;;;;;1412:43:98;;;3090:25278:60;3510:55:99;;-1:-1:-1;;;;1412:43:98;3090:25278:60;1412:43:98;3090:25278:60;;1412:43:98;:::i;:::-;3090:25278:60;3462:31:99;;;;;;;3090:25278:60;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2847:1:99;1412:43:98;3090:25278:60;;;;3510:55:99;;:::i;:::-;3090:25278:60;;4551:22:98;;;;:57;;;;3090:25278:60;4547:135:98;;;;1303:160;:::o;4547:135::-;4631:40;2847:1:99;4631:40:98;;3090:25278:60;1412:43:98;2847:1:99;4631:40:98;4551:57;4578:30;;;1412:43;4578:30;;;;;;;;:::i;:::-;4577:31;4551:57;;;;3090:25278:60;;;;;;;;;;;;;;;;;;;;;;;:::o;4625:582:99:-;;4797:8;;-1:-1:-1;3090:25278:60;;5874:21:99;:17;;6046:142;;;;;;5870:383;6225:17;5894:1;6225:17;;5894:1;6225:17;4793:408;3090:25278:60;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;3090:25278:60;5121:24:99;3090:25278:60;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;"},"methodIdentifiers":{"MAX_CREATOR_FEE_PERCENTAGE()":"2e1d388d","MAX_PROTOCOL_SWAP_FEE_PERCENTAGE()":"2772d156","MAX_PROTOCOL_YIELD_FEE_PERCENTAGE()":"5e32e4e8","collectAggregateFees(address)":"8f4ab9ca","collectAggregateFeesHook(address)":"fa399f2a","computeAggregateFeePercentage(uint256,uint256)":"0ddd60c6","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGlobalProtocolSwapFeePercentage()":"7869ee18","getGlobalProtocolYieldFeePercentage()":"55fb76af","getPoolCreatorFeeAmounts(address)":"9e95f3fd","getPoolProtocolSwapFeeInfo(address)":"5c15a0b4","getPoolProtocolYieldFeeInfo(address)":"7a2b97dc","getProtocolFeeAmounts(address)":"8df44c54","getVault()":"8d928af8","registerPool(address,address,bool)":"77ff76e7","setGlobalProtocolSwapFeePercentage(uint256)":"8a3c5c69","setGlobalProtocolYieldFeePercentage(uint256)":"a93df2a4","setPoolCreatorSwapFeePercentage(address,uint256)":"1377c16c","setPoolCreatorYieldFeePercentage(address,uint256)":"3af52712","setProtocolSwapFeePercentage(address,uint256)":"fd267f39","setProtocolYieldFeePercentage(address,uint256)":"abaa3356","updateProtocolSwapFeePercentage(address)":"71ecc8fb","updateProtocolYieldFeePercentage(address)":"71447ea8","vault()":"fbfa77cf","withdrawPoolCreatorFees(address)":"52f125f0","withdrawPoolCreatorFees(address,address)":"f7061445","withdrawProtocolFees(address,address)":"cf7b287f","withdrawProtocolFeesForToken(address,address,address)":"b53a70b2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"CallerIsNotPoolCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolCreatorFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolSwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolYieldFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"GlobalProtocolSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"yieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"GlobalProtocolYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorFeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolCreatorSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolCreatorYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolSwapFeeCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolYieldFeeCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"yieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolYieldFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_CREATOR_FEE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PROTOCOL_SWAP_FEE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PROTOCOL_YIELD_FEE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFeesHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeAggregateFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalProtocolSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalProtocolYieldFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolCreatorFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolProtocolSwapFeeInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolProtocolYieldFeeInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getProtocolFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newProtocolSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setGlobalProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newProtocolYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setGlobalProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setPoolCreatorSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setPoolCreatorYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newProtocolSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newProtocolYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"updateProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"updateProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"withdrawPoolCreatorFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawPoolCreatorFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawProtocolFeesForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract stores global default protocol swap and yield fees, and also tracks the values of those fees for each pool (the `PoolFeeConfig` described below). Protocol fees can always be overwritten by governance, but pool creator fees are controlled by the registered poolCreator (see `PoolRoleAccounts`). The Vault stores a single aggregate percentage for swap and yield fees; only this `ProtocolFeeController` knows the component fee percentages, and how to compute the aggregate from the components. This is done for performance reasons, to minimize gas on the critical path, as this way the Vault simply applies a single \\\"cut\\\", and stores the fee amounts separately from the pool balances. The pool creator fees are \\\"net\\\" protocol fees, meaning the protocol fee is taken first, and the pool creator fee percentage is applied to the remainder. Essentially, the protocol is paid first, then the remainder is divided between the pool creator and the LPs. There is a permissionless function (`collectAggregateFees`) that transfers these tokens from the Vault to this contract, and distributes them between the protocol and pool creator, after which they can be withdrawn at any time by governance and the pool creator, respectively. Protocol fees can be zero in some cases (e.g., the token is registered as exempt), and pool creator fees are zero if there is no creator role address defined. Protocol fees are capped at a maximum percentage (50%); pool creator fees are computed \\\"net\\\" protocol fees, so they can be any value from 0 to 100%. Any combination is possible. A protocol-fee-exempt pool with a 100% pool creator fee would send all fees to the creator. If there is no pool creator, a pool with a 50% protocol fee would divide the fees evenly between the protocol and LPs. This contract is deployed with the Vault, but can be changed by governance.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"CallerIsNotPoolCreator(address,address)\":[{\"params\":{\"caller\":\"The account attempting to withdraw pool creator fees\",\"pool\":\"The pool the caller tried to withdraw from\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"PoolCreatorNotRegistered(address)\":[{\"params\":{\"pool\":\"The pool with no creator\"}}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol swap fee percentages.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol yield fee percentages.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"events\":{\"GlobalProtocolSwapFeePercentageChanged(uint256)\":{\"params\":{\"swapFeePercentage\":\"The updated protocol swap fee percentage\"}},\"GlobalProtocolYieldFeePercentageChanged(uint256)\":{\"params\":{\"yieldFeePercentage\":\"The updated protocol yield fee percentage\"}},\"PoolCreatorFeesWithdrawn(address,address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the fee token that was withdrawn\",\"pool\":\"The pool from which pool creator fees are being withdrawn\",\"recipient\":\"The recipient of the funds (the pool creator if permissionless, or another account)\",\"token\":\"The token being withdrawn\"}},\"PoolCreatorSwapFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose pool creator swap fee will be changed\",\"poolCreatorSwapFeePercentage\":\"The new pool creator swap fee percentage for the pool\"}},\"PoolCreatorYieldFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose pool creator yield fee will be changed\",\"poolCreatorYieldFeePercentage\":\"The new pool creator yield fee percentage for the pool\"}},\"ProtocolFeesWithdrawn(address,address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the fee token that was withdrawn\",\"pool\":\"The pool from which protocol fees are being withdrawn\",\"recipient\":\"The recipient of the funds\",\"token\":\"The token being withdrawn\"}},\"ProtocolSwapFeeCollected(address,address,uint256)\":{\"details\":\"Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection happens in the ProtocolFeeController, the swap fees reported here may encompass multiple operations.\",\"params\":{\"amount\":\"The amount of the token collected in fees\",\"pool\":\"The pool on which the swap fee was charged\",\"token\":\"The token in which the swap fee was charged\"}},\"ProtocolSwapFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose protocol swap fee will be changed\",\"swapFeePercentage\":\"The updated protocol swap fee percentage\"}},\"ProtocolYieldFeeCollected(address,address,uint256)\":{\"details\":\"Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection happens in the ProtocolFeeController, the yield fees reported here may encompass multiple operations.\",\"params\":{\"amount\":\"The amount of the token collected in fees\",\"pool\":\"The pool on which the yield fee was charged\",\"token\":\"The token in which the yield fee was charged\"}},\"ProtocolYieldFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose protocol yield fee will be changed\",\"yieldFeePercentage\":\"The updated protocol yield fee percentage\"}}},\"kind\":\"dev\",\"methods\":{\"collectAggregateFees(address)\":{\"params\":{\"pool\":\"The pool with aggregate fees\"}},\"collectAggregateFeesHook(address)\":{\"details\":\"Copy and zero out the `aggregateFeeAmounts` collected in the Vault accounting, supplying credit for each token. Then have the Vault transfer tokens to this contract, debiting each token for the amount transferred so that the transaction settles when the hook returns.\"},\"computeAggregateFeePercentage(uint256,uint256)\":{\"details\":\"Not tied to any particular pool; this just performs the low-level \\\"additive fee\\\" calculation. Note that pool creator fees are calculated based on creatorAndLpFees, and not in totalFees. Since aggregate fees are stored in the Vault with 24-bit precision, this will truncate any values that require greater precision. It is expected that pool creators will negotiate with the DAO and agree on reasonable values for these fee components, but the truncation ensures it will not revert for any valid set of fee percentages. See example below: tokenOutAmount = 10000; poolSwapFeePct = 10%; protocolFeePct = 40%; creatorFeePct = 60% totalFees = tokenOutAmount * poolSwapFeePct = 10000 * 10% = 1000 protocolFees = totalFees * protocolFeePct = 1000 * 40% = 400 creatorAndLpFees = totalFees - protocolFees = 1000 - 400 = 600 creatorFees = creatorAndLpFees * creatorFeePct = 600 * 60% = 360 lpFees (will stay in the pool) = creatorAndLpFees - creatorFees = 600 - 360 = 240\",\"params\":{\"poolCreatorFeePercentage\":\"The pool creator portion of the aggregate fee percentage\",\"protocolFeePercentage\":\"The protocol portion of the aggregate fee percentage\"},\"returns\":{\"_0\":\"The computed aggregate percentage\"}},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAuthorizer()\":{\"returns\":{\"_0\":\"authorizer An interface pointer to the Authorizer\"}},\"getGlobalProtocolSwapFeePercentage()\":{\"returns\":{\"_0\":\"The global protocol swap fee percentage\"}},\"getGlobalProtocolYieldFeePercentage()\":{\"returns\":{\"_0\":\"The global protocol yield fee percentage\"}},\"getPoolCreatorFeeAmounts(address)\":{\"details\":\"Includes both swap and yield fees.\",\"params\":{\"pool\":\"The address of the pool on which fees were collected\"},\"returns\":{\"feeAmounts\":\"The total amounts of each token available for withdrawal, sorted in token registration order\"}},\"getPoolProtocolSwapFeeInfo(address)\":{\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"_0\":\"The global protocol swap fee percentage\",\"_1\":\"True if the protocol fee has been overridden\"}},\"getPoolProtocolYieldFeeInfo(address)\":{\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"_0\":\"The global protocol yield fee percentage\",\"_1\":\"True if the protocol fee has been overridden\"}},\"getProtocolFeeAmounts(address)\":{\"details\":\"Includes both swap and yield fees.\",\"params\":{\"pool\":\"The address of the pool on which fees were collected\"},\"returns\":{\"feeAmounts\":\"The total amounts of each token available for withdrawal, sorted in token registration order\"}},\"getVault()\":{\"returns\":{\"_0\":\"vault An interface pointer to the Vault\"}},\"registerPool(address,address,bool)\":{\"details\":\"This must be called from the Vault during pool registration. It will initialize the pool to the global protocol fee percentage values (or 0, if the `protocolFeeExempt` flags is set), and return the initial aggregate fee percentages, based on an initial pool creator fee of 0.\",\"params\":{\"pool\":\"The address of the pool being registered\",\"poolCreator\":\"The address of the pool creator (or 0 if there won't be a pool creator fee)\",\"protocolFeeExempt\":\"If true, the pool is initially exempt from protocol fees\"},\"returns\":{\"aggregateSwapFeePercentage\":\"The initial aggregate swap fee percentage\",\"aggregateYieldFeePercentage\":\"The initial aggregate yield fee percentage\"}},\"setGlobalProtocolSwapFeePercentage(uint256)\":{\"params\":{\"newProtocolSwapFeePercentage\":\"The new protocol swap fee percentage\"}},\"setGlobalProtocolYieldFeePercentage(uint256)\":{\"params\":{\"newProtocolYieldFeePercentage\":\"The new protocol yield fee percentage\"}},\"setPoolCreatorSwapFeePercentage(address,uint256)\":{\"details\":\"Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to the \\\"net\\\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\",\"params\":{\"pool\":\"The address of the pool for which the pool creator fee will be changed\",\"poolCreatorSwapFeePercentage\":\"The new pool creator swap fee percentage to apply to the pool\"}},\"setPoolCreatorYieldFeePercentage(address,uint256)\":{\"details\":\"Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to the \\\"net\\\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\",\"params\":{\"pool\":\"The address of the pool for which the pool creator fee will be changed\",\"poolCreatorYieldFeePercentage\":\"The new pool creator yield fee percentage to apply to the pool\"}},\"setProtocolSwapFeePercentage(address,uint256)\":{\"params\":{\"newProtocolSwapFeePercentage\":\"The new protocol swap fee percentage for the pool\",\"pool\":\"The address of the pool for which we are setting the protocol swap fee\"}},\"setProtocolYieldFeePercentage(address,uint256)\":{\"params\":{\"newProtocolYieldFeePercentage\":\"The new protocol yield fee percentage for the pool\",\"pool\":\"The address of the pool for which we are setting the protocol yield fee\"}},\"updateProtocolSwapFeePercentage(address)\":{\"details\":\"This is a permissionless call, and will set the pool's fee to the current global fee, if it is different from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\",\"params\":{\"pool\":\"The pool for which we are setting the protocol swap fee\"}},\"updateProtocolYieldFeePercentage(address)\":{\"details\":\"This is a permissionless call, and will set the pool's fee to the current global fee, if it is different from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\",\"params\":{\"pool\":\"The pool for which we are setting the protocol yield fee\"}},\"vault()\":{\"returns\":{\"_0\":\"vault The Vault address\"}},\"withdrawPoolCreatorFees(address)\":{\"details\":\"Sends swap and yield pool creator fees to the registered poolCreator. Since this is a known and immutable value, this function is permissionless.\",\"params\":{\"pool\":\"The pool on which fees were collected\"}},\"withdrawPoolCreatorFees(address,address)\":{\"details\":\"Sends swap and yield pool creator fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\"}},\"withdrawProtocolFees(address,address)\":{\"details\":\"Sends swap and yield protocol fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\"}},\"withdrawProtocolFeesForToken(address,address,address)\":{\"details\":\"Sends swap and yield protocol fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\",\"token\":\"Token to withdraw\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"CallerIsNotPoolCreator(address,address)\":[{\"notice\":\"Error raised if the wrong account attempts to withdraw pool creator fees.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"PoolCreatorFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value.\"}],\"PoolCreatorNotRegistered(address)\":[{\"notice\":\"Error raised if there is no pool creator on a withdrawal attempt from the given pool.\"}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol swap fee percentage exceeds the maximum allowed value.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol yield fee percentage exceeds the maximum allowed value.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"events\":{\"GlobalProtocolSwapFeePercentageChanged(uint256)\":{\"notice\":\"Emitted when the protocol swap fee percentage is updated.\"},\"GlobalProtocolYieldFeePercentageChanged(uint256)\":{\"notice\":\"Emitted when the protocol yield fee percentage is updated.\"},\"PoolCreatorFeesWithdrawn(address,address,address,uint256)\":{\"notice\":\"Logs the withdrawal of pool creator fees in a specific token and amount.\"},\"PoolCreatorSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the pool creator swap fee percentage of a pool is updated.\"},\"PoolCreatorYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the pool creator yield fee percentage of a pool is updated.\"},\"ProtocolFeesWithdrawn(address,address,address,uint256)\":{\"notice\":\"Logs the withdrawal of protocol fees in a specific token and amount.\"},\"ProtocolSwapFeeCollected(address,address,uint256)\":{\"notice\":\"Logs the collection of protocol swap fees in a specific token and amount.\"},\"ProtocolSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the protocol swap fee percentage is updated for a specific pool.\"},\"ProtocolYieldFeeCollected(address,address,uint256)\":{\"notice\":\"Logs the collection of protocol yield fees in a specific token and amount.\"},\"ProtocolYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the protocol yield fee percentage is updated for a specific pool.\"}},\"kind\":\"user\",\"methods\":{\"collectAggregateFees(address)\":{\"notice\":\"Collects aggregate fees from the Vault for a given pool.\"},\"computeAggregateFeePercentage(uint256,uint256)\":{\"notice\":\"Returns a calculated aggregate percentage from protocol and pool creator fee percentages.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"notice\":\"Get the address of the Authorizer.\"},\"getGlobalProtocolSwapFeePercentage()\":{\"notice\":\"Getter for the current global protocol swap fee.\"},\"getGlobalProtocolYieldFeePercentage()\":{\"notice\":\"Getter for the current global protocol yield fee.\"},\"getPoolCreatorFeeAmounts(address)\":{\"notice\":\"Returns the amount of each pool token allocated to the pool creator for withdrawal.\"},\"getPoolProtocolSwapFeeInfo(address)\":{\"notice\":\"Getter for the current protocol swap fee for a given pool.\"},\"getPoolProtocolYieldFeeInfo(address)\":{\"notice\":\"Getter for the current protocol yield fee for a given pool.\"},\"getProtocolFeeAmounts(address)\":{\"notice\":\"Returns the amount of each pool token allocated to the protocol for withdrawal.\"},\"getVault()\":{\"notice\":\"Get the address of the Balancer Vault.\"},\"registerPool(address,address,bool)\":{\"notice\":\"Add pool-specific entries to the protocol swap and yield percentages.\"},\"setGlobalProtocolSwapFeePercentage(uint256)\":{\"notice\":\"Set the global protocol swap fee percentage, used by standard pools.\"},\"setGlobalProtocolYieldFeePercentage(uint256)\":{\"notice\":\"Set the global protocol yield fee percentage, used by standard pools.\"},\"setPoolCreatorSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new pool creator swap fee percentage to the specified pool.\"},\"setPoolCreatorYieldFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new pool creator yield fee percentage to the specified pool.\"},\"setProtocolSwapFeePercentage(address,uint256)\":{\"notice\":\"Override the protocol swap fee percentage for a specific pool.\"},\"setProtocolYieldFeePercentage(address,uint256)\":{\"notice\":\"Override the protocol yield fee percentage for a specific pool.\"},\"updateProtocolSwapFeePercentage(address)\":{\"notice\":\"Override the protocol swap fee percentage for a specific pool.\"},\"updateProtocolYieldFeePercentage(address)\":{\"notice\":\"Override the protocol yield fee percentage for a specific pool.\"},\"vault()\":{\"notice\":\"Get the address of the main Vault contract.\"},\"withdrawPoolCreatorFees(address)\":{\"notice\":\"Withdraw collected pool creator fees for a given pool.\"},\"withdrawPoolCreatorFees(address,address)\":{\"notice\":\"Withdraw collected pool creator fees for a given pool. This is a permissioned function.\"},\"withdrawProtocolFees(address,address)\":{\"notice\":\"Withdraw collected protocol fees for a given pool (all tokens). This is a permissioned function.\"},\"withdrawProtocolFeesForToken(address,address,address)\":{\"notice\":\"Withdraw collected protocol fees for a given pool and a given token. This is a permissioned function.\"}},\"notice\":\"Helper contract to manage protocol and creator fees outside the Vault.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol\":\"ProtocolFeeController\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol\":{\"keccak256\":\"0x12bb43b5300821288597dcf75bcc595989c88ccaed5e76352891acf498f218b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5eae6e50b6c806d0cdb2a7ed69235f238d508c45f009f84ff10e4ffd755163f3\",\"dweb:/ipfs/QmYJcHG5c69rGT4mHTNNAMgwjjfD1FgJKKgYDqoTDUdips\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/Router.sol":{"Router":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IWETH","name":"weth","type":"address"},{"internalType":"contract IPermit2","name":"permit2","type":"address"},{"internalType":"string","name":"routerVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.AddLiquidityHookParams","name":"params","type":"tuple"}],"name":"addLiquidityHook","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"donate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouter.InitializeHookParams","name":"params","type":"tuple"}],"name":"initializeHook","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.AddLiquidityHookParams","name":"params","type":"tuple"}],"name":"queryAddLiquidityHook","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquidityCustom","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.RemoveLiquidityHookParams","name":"params","type":"tuple"}],"name":"queryRemoveLiquidityHook","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"}],"name":"queryRemoveLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"}],"name":"queryRemoveLiquidityRecoveryHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGiven","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouter.SwapSingleTokenHookParams","name":"params","type":"tuple"}],"name":"querySwapHook","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapSingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountCalculated","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapSingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountCalculated","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquidityCustom","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.RemoveLiquidityHookParams","name":"params","type":"tuple"}],"name":"removeLiquidityHook","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecoveryHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapSingleTokenExactIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapSingleTokenExactOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGiven","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouter.SwapSingleTokenHookParams","name":"params","type":"tuple"}],"name":"swapSingleTokenHook","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"copy_literal_to_memory_ac010f60bd23a8b676a307440640b6fd2c7208b304d0b7c6e71f1b0f3dbf3924":{"entryPoint":1124,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":1089,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4066":{"entryPoint":1062,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateSlot":{"entryPoint":1164,"id":6537,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6101206040908082523461042257615f87803803809161001f8285610441565b83398101916080828403126104225781516001600160a01b039283821682036104225760209081810151928584168403610422578482015195861686036104225760608201516001600160401b0392838211610422570190601f9088828401121561042257825184811161040e57601f199388519a6100a4888787860116018d610441565b828c5287838301011161042257815f928c898080950191015e8b010152608052875192831161040e575f54916001928381811c91168015610404575b868210146103f0578281116103ad575b508491841160011461034e575082918291610186969798995f94610343575b50501b915f199060031b1c1916175f555b61014e61012b610464565b85519061013782610426565b600682526539b2b73232b960d11b8483015261048c565b60a052610159610464565b701a5cd4995d1d5c9b915d1a131bd8dad959607a1b85519261017a84610426565b6011845283015261048c565b60c05260e05261010091825251615a48918261053f83396080518281816102ff0152818161047601528181610604015281816107940152818161092801528181610b8501528181610d2901528181610e7b01528181610f930152818161129b015281816113790152818161165b01528181611b5e01528181611c9e01528181611db301528181612039015281816121e20152818161235e01528181612b2701528181612c8401528181612e3301528181612f00015281816130cb0152818161398701528181613c0401528181613c890152818161438c015281816152f10152818161549e0152818161565e015281816157220152615867015260a0518281816104d70152818161098801528181610bbc015281816111050152818161230401528181612ce4015281816151e901526153d1015260c0518281816151730152615392015260e0518281816022015281816117fa0152818161194601528181611d4b01528181611eeb0152818161218401528181612500015281816127ef01528181613e34015281816140f7015281816157aa0152615901015251818181612015015281816126a2015281816133df015281816134e10152613fa90152f35b015192505f8061010f565b83929316905f8052845f20915f5b818110610398575098836101869798999a10610380575b505050811b015f55610120565b01515f1960f88460031b161c191690555f8080610373565b8a83015184559285019291860191860161035c565b5f8052855f208380870160051c8201928888106103e7575b0160051c019084905b8281106103dc5750506100f0565b5f81550184906103ce565b925081926103c5565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e0565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b604081019081106001600160401b0382111761040e57604052565b601f909101601f19168101906001600160401b0382119082101761040e57604052565b6040519061047182610426565b600c82526b2937baba32b921b7b6b6b7b760a11b6020830152565b906104f9603a60209260405193849181808401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952805191829101603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a810184520182610441565b5190205f19810190811161052a5760405190602082019081526020825261051f82610426565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c8063026b3d95146141b9578063086fad6614613c6057806308c0479314613b425780630ca078ec14613aaa5780630f71088814613969578063175d44081461388a57806319c6989f1461323d5780631d56798d146130a257806323b3924114612ea05780633ebc54e514612d23578063452db95214612b9f5780635168275014612a8c57806353d0bb98146129d757806354fd4d501461289a5780635b343791146123355780635e01eb5a146122f05780635f9815ff146121ad57806368a24fe014611cdf578063724dba3314611bc657806372657d1714611a7b578063750283bc146119fe5780637b03c7ba1461163257806382bf2b241461155e57806382cd54fb1461131657806394e86ef81461118b5780639de9051814610f6c578063ac9650d814610f28578063b037ed3614610d97578063b24bd57114610c4d578063be5ae84114610bf8578063bf6ee3fd14610a5f578063c08bc851146109c7578063c330c7be14610800578063da001f7d1461066f578063e7326def1461051e578063ecb2182c146103805763efd85f140361000e573461037c5761021b36614614565b6102236152e7565b6001600160a01b039061023860208201614b70565b61024182614b70565b9261024f6040840184614b84565b9093608081013593600585101561037c57836102ba6102fb966060856102a55f9c9b61029599878f9e61028860c06102c19d0187614bd8565b9a909b6040519e8f6144d5565b168d521660208c0152369161452c565b60408901520135606087015260808601614d61565b36916145c3565b60a08201526040519485809481937f4af29ec400000000000000000000000000000000000000000000000000000000835260048301615099565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371575f905f925f91610347575b506103439060405193849384614708565b0390f35b9050610343925061036a91503d805f833e61036281836144f1565b810190614e24565b9092610332565b6040513d5f823e3d90fd5b5f80fd5b6104366103af5f6104288161047261039736614a6e565b97939a92999094916103a8336153cc565b9a83615450565b9790946001600160a01b039b8c96604051946103ca86614488565b33865260209e8f9116908601526040850152606084015260016080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008c84015260248301614f41565b03601f1981018352826144f1565b6040519586809481937f48c894910000000000000000000000000000000000000000000000000000000083528b600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610371576104c5926104bd915f916104fc575b50858082518301019101614f9f565b509050615085565b51906104d4575b604051908152f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d6104cc565b61051891503d805f833e61051081836144f1565b810190614b4a565b866104ae565b6104286105c45f8061060061054f61053536614a6e565b916105489b959b9a949691939a336153cc565b9a8c615450565b50916001600160a01b03956040519361056785614488565b3385528760209d168d8601526040850152606084015260026080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008b84015260248301614f41565b6040519485809481937f48c894910000000000000000000000000000000000000000000000000000000083528a600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157610646915f91610655575b50838082518301019101614f9f565b5050906104d457604051908152f35b61066991503d805f833e61051081836144f1565b84610637565b3461037c57608060031936011261037c5761068861441c565b67ffffffffffffffff60243581811161037c576106a990369060040161457a565b906106b261445e565b60643591821161037c576107905f92916104286107546106e06106da879636906004016145f9565b936153cc565b966001600160a01b0393604051916106f783614488565b3083528560209b168b8401526040830152866060830152600160808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008b84015260248301614da7565b6040519485809481937fedfa35680000000000000000000000000000000000000000000000000000000083528a600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371576107d6915f916107e6575b50838082518301019101614e24565b509190506104d457604051908152f35b6107fa91503d805f833e61051081836144f1565b846107c7565b3461037c5760a060031936011261037c5761081961441c565b67ffffffffffffffff60443581811161037c5761083a90369060040161457a565b91610843614432565b9160843590811161037c575f936104286108e7869461087261086c6109249636906004016145f9565b976153cc565b966001600160a01b0394856040519361088a85614488565b30855216602084015260408301526024356060830152600360808301528660a083015260c08201526040519283917fb24bd57100000000000000000000000000000000000000000000000000000000602084015260248301614f41565b6040519586809481937fedfa35680000000000000000000000000000000000000000000000000000000083526020600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19182156103715761034392610970915f916109ad575b5060208082518301019101614f9f565b90939192610985575b60405193849384614a43565b5f7f00000000000000000000000000000000000000000000000000000000000000005d610979565b6109c191503d805f833e61051081836144f1565b84610960565b6104286105c45f806107906109db36614679565b6109eb99939198929499336153cc565b986001600160a01b039560405193610a0285614488565b3385528760209d168d8601526040850152606084015260016080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008b84015260248301614da7565b608060031936011261037c57610a7361441c565b67ffffffffffffffff9060243582811161037c57610a9590369060040161457a565b906044359283151580940361037c5760643590811161037c575f92610428610b448594610ac9610b819536906004016145f9565b610ad2336153cc565b986001600160a01b03958660405194610aea86614488565b33865216602085015260408401528760608401526003608084015260a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301614da7565b6040519485809481937f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157610bde575b50610bb957005b5f7f00000000000000000000000000000000000000000000000000000000000000005d005b610bf1903d805f833e61051081836144f1565b5081610bb2565b3461037c576020610c20610c0b36614997565b610c136152ba565b610c1b6152e7565b61552a565b50505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b3461037c57610c5b36614614565b610c636152e7565b6001600160a01b03610c7760208301614b70565b610c8083614b70565b91610c8e6040850185614b84565b9490608082013593600485101561037c57836102ba610d2596610cdd610ceb955f9b606089878f9e61028860c0610cc69e0184614bd8565b168d521660208c0152013560408a0152369161452c565b606087015260808601614f28565b60a08201526040519485809481937f2145789700000000000000000000000000000000000000000000000000000000835260048301615109565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371575f905f925f91610d6d575b506103439060405193849384614a43565b90506103439250610d9091503d805f833e610d8881836144f1565b810190614f9f565b9092610d5c565b3461037c57604060031936011261037c57610db061441c565b6001600160a01b0360405190806020937f5f9815ff000000000000000000000000000000000000000000000000000000008585015216602483015230604483015260243560648301526064825260a082019082821067ffffffffffffffff831117610efb57815f91816040527fedfa35680000000000000000000000000000000000000000000000000000000082528560a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6087610e7660c48201826146e3565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af190811561037157610ebf925f92610ed4575b5050828082518301019101614d3b565b90610343604051928284938452830190614646565b610ef4925060a0903d90815f853e610eec82856144f1565b010190614b4a565b8380610eaf565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b602060031936011261037c5760043567ffffffffffffffff811161037c57610f60610f5a6103439236906004016147ef565b90615165565b6040519182918261484e565b3461037c57610f86610f7d36614731565b929193906153cc565b916001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691604051937fca4f280300000000000000000000000000000000000000000000000000000000855216928360048201525f81602481865afa908115610371575f91611169575b50519461100586614ef7565b955f5b8181106111445750505f926104286110868886956110c2956040519261102d84614488565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008a84015260248301614da7565b6040519485809481937fedfa356800000000000000000000000000000000000000000000000000000000835289600484015260248301906146e3565b03925af18015610371576110e6915f9161112a575b50828082518301019101614e24565b505091611102575b610343604051928284938452830190614646565b5f7f00000000000000000000000000000000000000000000000000000000000000005d6110ee565b61113e91503d805f833e61051081836144f1565b846110d7565b806fffffffffffffffffffffffffffffffff6111626001938b615085565b5201611008565b61118591503d805f833e61117d81836144f1565b810190614e6d565b86610ff9565b611194366149ca565b949095939193336111a4906153cc565b97604051996111b28b6144b8565b338b5260208b01600190526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e086015215156101008501523690611209926145c3565b6101208301526040517f68a24fe00000000000000000000000000000000000000000000000000000000060208201529182906112489060248301614ff4565b03601f198101835261125a90836144f1565b60405180927f48c89491000000000000000000000000000000000000000000000000000000008252600482016020905260248201611297916146e3565b03827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691815a5f948591f1918215610371575f926112fa575b5060208280518101031261037c57602080920151906104d457604051908152f35b61130f9192503d805f833e61051081836144f1565b90826112d9565b3461037c57608060031936011261037c5761132f61441c565b611337614448565b906064359067ffffffffffffffff821161037c5761135c6113d292369060040161457a565b906113656152ba565b61136d6152e7565b6001600160a01b035f817f00000000000000000000000000000000000000000000000000000000000000001693604051809681927fa07d60400000000000000000000000000000000000000000000000000000000083526044358a8860048601614cab565b038183875af1938415610371575f9461153a575b5080604051927fca4f28030000000000000000000000000000000000000000000000000000000084521660048301525f82602481865afa918215610371575f9261151e575b505f5b82518110156114da576114418186615085565b519081611453575b600191500161142e565b8261145e8286615085565b5116853b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908816602482015260448101929092525f8260648183895af1918215610371576001926114cb575b50611449565b6114d4906144a4565b876114c5565b610343856114e788615389565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190614646565b6115339192503d805f833e61117d81836144f1565b908561142b565b6115579194503d805f833e61154f81836144f1565b810190614d3b565b92856113e6565b5f610428816109246115f56115723661492e565b90611582989492959398336153cc565b986001600160a01b0396876040519561159a87614488565b3387521660208601526040850152606084015260036080840152151560a083015260c08201526040519283917f7b03c7ba00000000000000000000000000000000000000000000000000000000602084015260248301614f41565b6040519586809481937f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906146e3565b3461037c5761164036614614565b6116486152ba565b6116506152e7565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016602083019161168983614b70565b9061169385614b70565b916116a16040870187614b84565b919093608088013591600483101561037c57846102ba610cc694610cdd611711995f9860608f876116d99a61028860c0840184614bd8565b60a0820152604051809481927f2145789700000000000000000000000000000000000000000000000000000000835260048301615109565b038183875af1918215610371575f945f915f946119d7575b5061173390614b70565b9282604051947fca4f28030000000000000000000000000000000000000000000000000000000086521660048501526024915f85602481895afa948515610371575f956119bb575b50909560a0880191905f5b8651811015611976576117998184615085565b5190811561196d57866117ac828a615085565b51166117b786614c86565b80611942575b156118c05750883b1561037c57886040517fae6393290000000000000000000000000000000000000000000000000000000081525f81606481838d7f000000000000000000000000000000000000000000000000000000000000000016968760048401528d30908401528960448401525af18015610371576118b1575b50803b1561037c575f809188604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528860048401525af192831561037157886118968e61189c946001976118a2575b50614b70565b16615932565b01611786565b6118ab906144a4565b5f611890565b6118ba906144a4565b8c61183a565b6118c98c614b70565b8a3b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260448101929092525f82606481838d5af191821561037157600192611933575b5061189c565b61193c906144a4565b8b61192d565b50877f00000000000000000000000000000000000000000000000000000000000000001681146117bd565b6001915061189c565b506103438861198c6119878c614b70565b615389565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384614a43565b6119d09195503d805f833e61117d81836144f1565b938861177b565b90935061173395506119f391503d805f833e610d8881836144f1565b919590919390611729565b611a07366149ca565b94909593919333611a17906153cc565b9760405199611a258b6144b8565b338b5260208b015f90526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e086015215156101008501523690611209926145c3565b60c060031936011261037c57611a8f61441c565b611a97614448565b611a9f614598565b60a4359067ffffffffffffffff821161037c575f611b5a611ac5829436906004016145f9565b92610428610436611ae3611ad8336153cc565b98604435908b615450565b966001600160a01b039460405192611afa84614488565b3384528660209d168d8501526040840152606435606084015260026080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008c84015260248301614da7565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610371576104c592611ba5915f91611bac575b50858082518301019101614e24565b5050615085565b611bc091503d805f833e61051081836144f1565b86611b96565b610428611c5e5f80611c9a611bda36614679565b611beb9993919998929498336153cc565b996001600160a01b039560405193611c0285614488565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008a84015260248301614da7565b6040519485809481937f48c8949100000000000000000000000000000000000000000000000000000000835289600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371576110e6915f9161112a5750828082518301019101614e24565b3461037c57611ced36614997565b611cf56152ba565b611cfd6152e7565b611d068161552a565b611d14606085939501614b70565b90611d1e83614b70565b94610100840195611d2e87614c86565b80612178575b15611ff55750804710611fcd576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008181169291833b1561037c576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048187895af1801561037157611fbe575b507f0000000000000000000000000000000000000000000000000000000000000000169060405193611e445f80602097888101907fa9059cbb000000000000000000000000000000000000000000000000000000008252611e2f816104288b8b60248401602090939291936001600160a01b0360408201951681520152565b519082865af1611e3d61540e565b90836159ae565b805190868215159283611fa5575b505050611f7a57506040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0391909116600482015260248101929092528290829060449082905f905af1801561037157611f51575b5050602094611ee0915b611ec485614b70565b91611eda611ed460808801614b70565b91614c86565b92615702565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016911614611f3f575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b611987611f4b91614b70565b82611f13565b813d8311611f73575b611f6481836144f1565b8101031261037c578580611eb1565b503d611f5a565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b611fb59350820181019101614c93565b158b8681611e52565b611fc7906144a4565b89611db0565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b81612009575b5050602094611ee091611ebb565b6001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691807f0000000000000000000000000000000000000000000000000000000000000000169161206385615345565b93803b1561037c576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015294821660448601529187161660648401525f908390608490829084905af1908115610371575f9360209361212993612169575b506040519485809481937f15afd4090000000000000000000000000000000000000000000000000000000083528a60048401602090939291936001600160a01b0360408201951681520152565b03925af180156103715761213e575b80611ffb565b602090813d8311612162575b61215481836144f1565b8101031261037c5785612138565b503d61214a565b612172906144a4565b8a6120dc565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690851614611d34565b3461037c57606060031936011261037c576121c661441c565b6121ce614448565b6121d66152e7565b6001600160a01b0390817f000000000000000000000000000000000000000000000000000000000000000016604051927fca4f2803000000000000000000000000000000000000000000000000000000008452841660048401525f83602481845afa938415610371575f61225761229296829683916122d6575b5051614ef7565b93604051968795869485937fa07d60400000000000000000000000000000000000000000000000000000000085526044359160048601614cab565b03925af1801561037157610343915f916122bc575b50604051918291602083526020830190614646565b6122d091503d805f833e61154f81836144f1565b826122a7565b6122ea91503d8085833e61117d81836144f1565b88612250565b3461037c575f60031936011261037c5760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b3461037c5761234336614614565b61234b6152ba565b6123536152e7565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000166020918284019361238e85614b70565b9461239882614b70565b956123a66040840184614b84565b919097608085013591600583101561037c57866102ba6123ea946123f96124499d5f988e86612411996123dd8f60c0810190614bd8565b99909a6040519d8e6144d5565b168c5216908a0152369161452c565b60408701526060890135606087015260808601614d61565b60a0820152604051809881927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301615099565b038183885af1918215610371575f915f975f94612871575b5061246b90614b70565b84604051917fca4f28030000000000000000000000000000000000000000000000000000000083521660048201525f81602481895afa908115610371575f91612857575b50929660a0820193905f5b825181101561281657866124ce8285615085565b51166124da8287615085565b519081156127a9576124eb88614c86565b806127eb575b1561269e5750804710611fcd577f000000000000000000000000000000000000000000000000000000000000000088811691823b1561037c576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af18015610371576125ba948e92849261268f575b508d5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af19182156103715761261b938d93612664575b5060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af1908115610371578a9161263b575b50506001905b016124ba565b813d831161265d575b61264e81836144f1565b8101031261037c57888b61262f565b503d612644565b61268390843d8611612688575b61267b81836144f1565b810190614c93565b6125d0565b503d612671565b612698906144a4565b5f61256c565b90887f000000000000000000000000000000000000000000000000000000000000000016906126cc87614b70565b6126d582615345565b833b1561037c576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201528d831660248201529082166044820152908416606482015292915f908490608490829084905af191821561037157612795938d936127dc575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af1908115610371578a916127b3575b5050600190612635565b813d83116127d5575b6127c681836144f1565b8101031261037c57888b6127a9565b503d6127bc565b6127e5906144a4565b8e6125d0565b50887f00000000000000000000000000000000000000000000000000000000000000001681146124f1565b50836103438a61282861198787614b70565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384614708565b61286b91503d805f833e61117d81836144f1565b886124af565b90935061288e91975061246b92503d805f833e61036281836144f1565b97919290979390612461565b3461037c575f60031936011261037c576040515f80549060018260011c91600184169182156129cd575b60209485851084146129a05785879486865291825f14612962575050600114612909575b506128f5925003836144f1565b6103436040519282849384528301906146e3565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061294a5750506128f59350820101856128e8565b80548389018501528794508693909201918101612933565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858201526128f595151560051b85010192508791506128e89050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f16926128c4565b3461037c57612a08612a015f806106006107546104286129f6366148cf565b95939a9299906153cc565b988a615450565b506001600160a01b039360405191612a1f83614488565b3083528560209b168b84015260408301526fffffffffffffffffffffffffffffffff6060830152600260808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008b84015260248301614f41565b610428611c5e5f80612b23612aa03661492e565b612ab099939498929199336153cc565b996001600160a01b039560405193612ac785614488565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008a84015260248301614f41565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157612b69915f91612b85575b50828082518301019101614f9f565b5092905061110257610343604051928284938452830190614646565b612b9991503d805f833e61051081836144f1565b84612b5a565b3461037c5760a060031936011261037c57612bb861441c565b67ffffffffffffffff60243581811161037c57612bd990369060040161457a565b91612be2614432565b9160843590811161037c575f936104286108e78694612c0b61086c612c809636906004016145f9565b966001600160a01b03948560405193612c2385614488565b30855216602084015260408301526044356060830152600460808301528660a083015260c08201526040519283917fefd85f1400000000000000000000000000000000000000000000000000000000602084015260248301614da7565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19182156103715761034392612ccc915f91612d09575b5060208082518301019101614e24565b90939192612ce1575b60405193849384614708565b5f7f00000000000000000000000000000000000000000000000000000000000000005d612cd5565b612d1d91503d805f833e61051081836144f1565b84612cbc565b3461037c57612d3136614783565b90612d3f90949392946153cc565b936001600160a01b0380938160405196612d58886144b8565b3388528160209a8b8a015f905216604089015216606087015216608085015260a084015260c083015f905260e083016fffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae8410000000000000000000000000000000000000000000000000000000090526024820190612de191614ff4565b03601f1981018352612df390836144f1565b6040518080937fedfa356800000000000000000000000000000000000000000000000000000000825286600483015260248201612e2f916146e3565b03917f00000000000000000000000000000000000000000000000000000000000000001691815a5f948591f1908115610371575f91612e86575b50828180518101031261037c57820151906104d457604051908152f35b612e9a91503d805f833e61051081836144f1565b83612e69565b3461037c5760a060031936011261037c57612eb961441c565b612ec161445e565b90612eca614432565b60843567ffffffffffffffff811161037c57612eed612ef39136906004016145f9565b916153cc565b916001600160a01b0391827f0000000000000000000000000000000000000000000000000000000000000000169280604051937fc9c1661b0000000000000000000000000000000000000000000000000000000085521695866004850152166024830152604082604481865afa918215610371575f905f93613063575b505f93610428612fff8694612f8761303b95614ef7565b906001612f948984615085565b5260405191612fa283614488565b30835260209b8c84015260408301526024356060830152600160808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008c84015260248301614f41565b6040519586809481937fedfa35680000000000000000000000000000000000000000000000000000000083528b600484015260248301906146e3565b03925af1918215610371576104c5926104bd915f916104fc5750858082518301019101614f9f565b925050916040823d60401161309a575b81613080604093836144f1565b8101031261037c578151602090920151909290915f612f70565b3d9150613073565b3461037c576130be6130b3366148cf565b9294909391936153cc565b926001600160a01b0392837f0000000000000000000000000000000000000000000000000000000000000000169380604051947fc9c1661b0000000000000000000000000000000000000000000000000000000086521696876004860152166024840152604083604481875afa928315610371575f905f94613200575b5093610428612fff5f96946131d8946131548997614ef7565b916fffffffffffffffffffffffffffffffff6131708a85615085565b526040519261317e84614488565b30845260209c8d85015260408401526060830152600260808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008c84015260248301614da7565b03925af1918215610371576104c592611ba5915f91611bac5750858082518301019101614e24565b9350506040833d604011613235575b8161321c604093836144f1565b8101031261037c5782516020909301519261042861313b565b3d915061320f565b60a060031936011261037c5767ffffffffffffffff6004351161037c5736602360043501121561037c5767ffffffffffffffff600435600401351161037c5736602460c0600435600401350260043501011161037c5760243567ffffffffffffffff811161037c576132b39036906004016147ef565b67ffffffffffffffff6044351161037c5760606003196044353603011261037c5760643567ffffffffffffffff811161037c576132f4903690600401614820565b60843567ffffffffffffffff811161037c576133149036906004016147ef565b94909361331f6152ba565b806004356004013503613862575f5b6004356004013581106135af5750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030182121561037c57816044350160048101359067ffffffffffffffff821161037c5760248260071b360391011361037c576133d2575b610343610f6086865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d615165565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b1561037c57604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff60048301351161037c57600482013560071b3603851361037c5760606064890152600482013590529192869260e484019291905f905b600481013582106135315750505082915f946134d4926001600160a01b036134b2602460443501614474565b16608486015260448035013560a4860152600319858403016044860152614c29565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156103715761034393610f6093613522575b8294508193506133a2565b61352b906144a4565b84613517565b9195945091926001600160a01b0361354887614474565b168152602080870135916001600160a01b03831680930361037c576004926001928201526135786040890161543d565b65ffffffffffff809116604083015261359360608a0161543d565b1660608201526080809101970193019050889495939291613486565b6135bd6102ba8284866152a3565b60405180606081011067ffffffffffffffff606083011117610efb57606081016040525f81526020915f838301525f60408301528281015190606060408201519101515f1a91835283830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc818502600435013603011261037c576040519061364d826144d5565b613660602460c086026004350101614474565b808352613676604460c087026004350101614474565b90818585015261368f606460c088026004350101614474565b60408581019190915260043560c08802016084810135606087015260a4810135608087015260c4013560a086015283015183519386015160ff91909116926001600160a01b0383163b1561037c575f6001600160a01b03809460e4948b98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af19081613853575b506138495761376c61540e565b906001600160a01b0381511690836001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610371575f92613819575b5060600151036137e45750506001905b0161332e565b8051156137f15780519101fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091508381813d8311613842575b61383181836144f1565b8101031261037c57519060606137ce565b503d613827565b50506001906137de565b61385c906144a4565b8a61375f565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461037c5761389836614783565b906138a690949392946153cc565b936001600160a01b03809381604051966138bf886144b8565b3388528160209a8b8a016001905216604089015216606087015216608085015260a084015260c083016fffffffffffffffffffffffffffffffff905260e083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae8410000000000000000000000000000000000000000000000000000000090526024820190612de191614ff4565b3461037c5761397a610f7d36614731565b926001600160a01b0392837f00000000000000000000000000000000000000000000000000000000000000001693604051937fca4f280300000000000000000000000000000000000000000000000000000000855216938460048501525f84602481845afa938415610371576110865f9594613a6d94613a068897610428958991613a90575051614ef7565b9160405192613a1484614488565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008a84015260248301614f41565b03925af1801561037157612b69915f91612b855750828082518301019101614f9f565b613aa491503d808b833e61117d81836144f1565b8c612250565b5f61042881612c806115f5613abe36614679565b90613acf98949298959395336153cc565b986001600160a01b03968760405195613ae787614488565b3387521660208601526040850152606084015260046080840152151560a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301614da7565b606060031936011261037c57613b5661441c565b60443567ffffffffffffffff811161037c575f610428613bbd613b80613bf794369060040161457a565b6040519283916020977f82cd54fb000000000000000000000000000000000000000000000000000000008985015260243590339060248601614cab565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835286600484015260248301906146e3565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157610ebf915f91613c46575b50828082518301019101614d3b565b613c5a91503d805f833e61051081836144f1565b83613c37565b3461037c57613c6e36614614565b613c766152ba565b613c7e6152e7565b6001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690613cb660208401614b70565b92613cc081614b70565b906040810194613cd08683614b84565b91613cde6060850185614b84565b92909184613cef60c0880188614bd8565b9690928a6040519a7fba8a2be0000000000000000000000000000000000000000000000000000000008c528160c48d01931660048d01521660248b015260c060448b01525260e4880192905f5b818110614198575050506003198783030160648801528382527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841161037c5760209485889594613daf94879660051b8092848301370160808901356084870152601c8682030160a48701520191614c29565b03815f885af1918215610371575f92614164575b50909360a0820191905f5b613dd88284614b84565b905081101561412a57613dfd613df882613df28587614b84565b90614c49565b614b70565b613e0e82613df26060870187614b84565b3590811561412057613e1f86614c86565b806140f3575b15613fa65750804710611fcd577f000000000000000000000000000000000000000000000000000000000000000086811691823b1561037c576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af1801561037157613eef946020928492613f97575b508b5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af191821561037157613f5093602093612664575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af1801561037157613f6c575b506001905b01613dce565b602090813d8311613f90575b613f8281836144f1565b8101031261037c5787613f61565b503d613f78565b613fa0906144a4565b8d613ea1565b867f00000000000000000000000000000000000000000000000000000000000000001691613fd386614b70565b92613fdd82615345565b813b1561037c576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0395861660048201528b861660248201529085166044820152838a1690941660648501525f908490608490829084905af19182156103715761409f936020936140e4575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af18015610371576140b9575b50600190613f66565b602090813d83116140dd575b6140cf81836144f1565b8101031261037c57876140b0565b503d6140c5565b6140ed906144a4565b8b6125d0565b50867f00000000000000000000000000000000000000000000000000000000000000001687821614613e25565b5050600190613f66565b60208761413961198786614b70565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b9091506020813d602011614190575b81614180602093836144f1565b8101031261037c57519085613dc3565b3d9150614173565b9091936020806001928d6141ab89614474565b168152019501929101613d3c565b60c060031936011261037c576141cd61441c565b60243567ffffffffffffffff9182821161037c573660238301121561037c578160040135916141fb83614514565b9061420960405192836144f1565b83825260209360248584019160051b8301019136831161037c576024869101915b838310614404575050505060443584811161037c5761424d90369060040161457a565b614255614598565b9460a43590811161037c5761426e9036906004016145f9565b6001600160a01b03956040519261428484614488565b338452878785019616865260408401948552606084019081526080840194606435865260a08501921515835260c0850193845288604051977f086fad66000000000000000000000000000000000000000000000000000000008a8a01528960248a0152816101248a0197511660448a015251166064880152519360e0608488015284518091528761014488019501905f5b8181106143ee575050875f806143888c8b611c5e816104288e8e8e8e6143688f51937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc94858983030160a48a0152614ad1565b935160c487015251151560e48601525190848303016101048501526146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1908115610371575f916143d4575b50818180518101031261037c57810151604051908152f35b6143e891503d805f833e61051081836144f1565b826143bc565b82518b1687529589019591890191600101614315565b819061440f84614474565b815201910190859061422a565b600435906001600160a01b038216820361037c57565b606435906001600160a01b038216820361037c57565b602435906001600160a01b038216820361037c57565b604435906001600160a01b038216820361037c57565b35906001600160a01b038216820361037c57565b60e0810190811067ffffffffffffffff821117610efb57604052565b67ffffffffffffffff8111610efb57604052565b610140810190811067ffffffffffffffff821117610efb57604052565b60c0810190811067ffffffffffffffff821117610efb57604052565b90601f601f19910116810190811067ffffffffffffffff821117610efb57604052565b67ffffffffffffffff8111610efb5760051b60200190565b929161453782614514565b9161454560405193846144f1565b829481845260208094019160051b810192831161037c57905b82821061456b5750505050565b8135815290830190830161455e565b9080601f8301121561037c578160206145959335910161452c565b90565b60843590811515820361037c57565b67ffffffffffffffff8111610efb57601f01601f191660200190565b9291926145cf826145a7565b916145dd60405193846144f1565b82948184528183011161037c578281602093845f960137010152565b9080601f8301121561037c57816020614595933591016145c3565b6003199060208282011261037c576004359167ffffffffffffffff831161037c578260e09203011261037c5760040190565b9081518082526020808093019301915f5b828110614665575050505090565b835185529381019392810192600101614657565b9060a060031983011261037c576004356001600160a01b038116810361037c579167ffffffffffffffff9060243582811161037c57816146bb9160040161457a565b9260443592606435801515810361037c579260843591821161037c57614595916004016145f9565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b61471e6145959492606083526060830190614646565b92602082015260408184039101526146e3565b608060031982011261037c576001600160a01b0390600435828116810361037c579260243592604435908116810361037c57916064359067ffffffffffffffff821161037c57614595916004016145f9565b60c060031982011261037c576001600160a01b0391600435838116810361037c5792602435818116810361037c5792604435828116810361037c579260643592608435908116810361037c579160a4359067ffffffffffffffff821161037c57614595916004016145f9565b9181601f8401121561037c5782359167ffffffffffffffff831161037c576020808501948460051b01011161037c57565b9181601f8401121561037c5782359167ffffffffffffffff831161037c576020838186019501011161037c57565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106148835750505050505090565b90919293949584806148bf837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a516146e3565b9801930193019194939290614873565b9060a060031983011261037c576001600160a01b03600435818116810361037c5792602435828116810361037c579260443592606435908116810361037c57916084359067ffffffffffffffff821161037c57614595916004016145f9565b60a060031982011261037c576004356001600160a01b038116810361037c57916024359167ffffffffffffffff9160443583811161037c57826149739160040161457a565b92606435801515810361037c579260843591821161037c57614595916004016145f9565b6003199060208282011261037c576004359167ffffffffffffffff831161037c57826101409203011261037c5760040190565b61010060031982011261037c576001600160a01b0390600435828116810361037c5792602435838116810361037c5792604435908116810361037c5791606435916084359160a4359160c435801515810361037c579160e4359067ffffffffffffffff821161037c57614a3f91600401614820565b9091565b91614a609061459594928452606060208501526060840190614646565b9160408184039101526146e3565b60c060031982011261037c576001600160a01b0390600435828116810361037c579260243592604435908116810361037c579160643591608435801515810361037c579160a4359067ffffffffffffffff821161037c57614595916004016145f9565b9081518082526020808093019301915f5b828110614af0575050505090565b835185529381019392810192600101614ae2565b81601f8201121561037c57805190614b1b826145a7565b92614b2960405194856144f1565b8284526020838301011161037c57815f9260208093018386015e8301015290565b9060208282031261037c57815167ffffffffffffffff811161037c576145959201614b04565b356001600160a01b038116810361037c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561037c570180359067ffffffffffffffff821161037c57602001918160051b3603831361037c57565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561037c570180359067ffffffffffffffff821161037c5760200191813603831361037c57565b601f8260209493601f1993818652868601375f8582860101520116010190565b9190811015614c595760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b35801515810361037c5790565b9081602091031261037c5751801515810361037c5790565b909261459594936080936001600160a01b03809216845216602083015260408201528160608201520190614646565b9080601f8301121561037c57815190602091614cf581614514565b93614d0360405195866144f1565b81855260208086019260051b82010192831161037c57602001905b828210614d2c575050505090565b81518152908301908301614d1e565b9060208282031261037c57815167ffffffffffffffff811161037c576145959201614cda565b6005821015614d6d5752565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b906005821015614d6d5752565b9061459591602081526001600160a01b03808351166020830152602083015116604082015260c0614de8604084015160e06060850152610100840190614ad1565b9260608101516080840152614e05608082015160a0850190614d9a565b60a081015115158284015201519060e0601f19828503019101526146e3565b909160608284031261037c5781519167ffffffffffffffff9283811161037c5784614e50918301614cda565b93602082015193604083015190811161037c576145959201614b04565b602090818184031261037c5780519067ffffffffffffffff821161037c57019180601f8401121561037c578251614ea381614514565b93614eb160405195866144f1565b818552838086019260051b82010192831161037c578301905b828210614ed8575050505090565b81516001600160a01b038116810361037c578152908301908301614eca565b90614f0182614514565b614f0e60405191826144f1565b828152601f19614f1e8294614514565b0190602036910137565b6004821015614d6d5752565b906004821015614d6d5752565b9061459591602081526001600160a01b03808351166020830152602083015116604082015260c0614f82604084015160e06060850152610100840190614ad1565b9260608101516080840152614e05608082015160a0850190614f34565b9160608383031261037c5782519260208101519267ffffffffffffffff9384811161037c5781614fd0918401614cda565b93604083015190811161037c576145959201614b04565b906002821015614d6d5752565b61016061459592602083526001600160a01b0380825116602085015261502260208301516040860190614fe7565b80604083015116606085015280606083015116608085015260808201511660a084015260a081015160c084015260c081015160e084015260e0810151610100908185015281015190610120911515828501520151916101408082015201906146e3565b8051821015614c595760209160051b010190565b9061459591602081526001600160a01b03808351166020830152602083015116604082015260a06150d9604084015160c0606085015260e0840190614ad1565b92606081015160808401526150f5608082015183850190614d9a565b01519060c0601f19828503019101526146e3565b9061459591602081526001600160a01b0380835116602083015260208301511660408201526040820151606082015260a0615153606084015160c0608085015260e0840190614ad1565b926150f5608082015183850190614f34565b9190615170336153cc565b907f000000000000000000000000000000000000000000000000000000000000000093845c61527b576001906001865d6151a983614514565b926151b760405194856144f1565b808452601f196151c682614514565b015f5b81811061526a5750505f5b8181106152215750505050905f61521692945d7f0000000000000000000000000000000000000000000000000000000000000000805c91615218575b50615389565b565b5f905d5f615210565b8061524e5f806152366102ba8996888a6152a3565b602081519101305af461524761540e565b90306159ae565b6152588288615085565b526152638187615085565b50016151d4565b8060606020809389010152016151c9565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b90821015614c5957614a3f9160051b810190614bd8565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c61527b576001905d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361531957565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6001600160a01b0390818111615359571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b4780156153c8577f00000000000000000000000000000000000000000000000000000000000000005c6153c8576001600160a01b036152169216615932565b5050565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c1615615404575050565b909192505d600190565b3d15615438573d9061541f826145a7565b9161542d60405193846144f1565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361037c57565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa938415615520575f935f956154e9575b50506154e66154df8594614ef7565b9485615085565b52565b809295508194503d8311615519575b61550281836144f1565b8101031261037c5760208251920151925f806154d0565b503d6154f8565b83513d5f823e3d90fd5b60e081013542116156da576001600160a01b03602082013591600283101561037c5760409261555a828501614b70565b9280606094859384860161556d90614b70565b9561557a60808201614b70565b908461558a610120830183614bd8565b91908c519561559887614488565b8652816020870197168752818d87019b168b52818a870195168552608086019260a0850135845260a087019460c00135855236906155d5926145c3565b9360c08601948552818d519b8c9a8b998a997f2bfb780c000000000000000000000000000000000000000000000000000000008b5260048b016020905260248b0190519061562291614fe7565b5116604489015251166064870152511660848501525160a48401525160c48301525160e4820160e09052610104820161565a916146e3565b03917f0000000000000000000000000000000000000000000000000000000000000000165a905f91f1908115615520575f935f935f9361569d575b505050909192565b92509250809350813d83116156d3575b6156b781836144f1565b8101031261037c578151602083015191909201515f8080615695565b503d6156ad565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f9493831561592a57806158f5575b15615859576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af1801561037157615846575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b156158425781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af180156158375761581f575b5061521693945016615932565b61582986916144a4565b6158335784615812565b8480fd5b6040513d88823e3d90fd5b5080fd5b6158519195506144a4565b5f935f6157a5565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af18015610371576158ec5750565b615216906144a4565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614615711565b505050509050565b814710615982575f8080936001600160a01b038294165af161595261540e565b501561595a57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b906159c3575080511561595a57805190602001fd5b81511580615a09575b6159d4575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156159cc56fea2646970667358221220c3e85874e80a6e7776caed62d5c4f9d183ac00aa251e16acd89943cd6ea0fedb64736f6c634300081a0033","opcodes":"PUSH2 0x120 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x422 JUMPI PUSH2 0x5F87 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1F DUP3 DUP6 PUSH2 0x441 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SWAP2 PUSH1 0x80 DUP3 DUP5 SUB SLT PUSH2 0x422 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP3 AND DUP3 SUB PUSH2 0x422 JUMPI PUSH1 0x20 SWAP1 DUP2 DUP2 ADD MLOAD SWAP3 DUP6 DUP5 AND DUP5 SUB PUSH2 0x422 JUMPI DUP5 DUP3 ADD MLOAD SWAP6 DUP7 AND DUP7 SUB PUSH2 0x422 JUMPI PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 DUP4 DUP3 GT PUSH2 0x422 JUMPI ADD SWAP1 PUSH1 0x1F SWAP1 DUP9 DUP3 DUP5 ADD SLT ISZERO PUSH2 0x422 JUMPI DUP3 MLOAD DUP5 DUP2 GT PUSH2 0x40E JUMPI PUSH1 0x1F NOT SWAP4 DUP9 MLOAD SWAP11 PUSH2 0xA4 DUP9 DUP8 DUP8 DUP7 ADD AND ADD DUP14 PUSH2 0x441 JUMP JUMPDEST DUP3 DUP13 MSTORE DUP8 DUP4 DUP4 ADD ADD GT PUSH2 0x422 JUMPI DUP2 PUSH0 SWAP3 DUP13 DUP10 DUP1 DUP1 SWAP6 ADD SWAP2 ADD MCOPY DUP12 ADD ADD MSTORE PUSH1 0x80 MSTORE DUP8 MLOAD SWAP3 DUP4 GT PUSH2 0x40E JUMPI PUSH0 SLOAD SWAP2 PUSH1 0x1 SWAP3 DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x404 JUMPI JUMPDEST DUP7 DUP3 LT EQ PUSH2 0x3F0 JUMPI DUP3 DUP2 GT PUSH2 0x3AD JUMPI JUMPDEST POP DUP5 SWAP2 DUP5 GT PUSH1 0x1 EQ PUSH2 0x34E JUMPI POP DUP3 SWAP2 DUP3 SWAP2 PUSH2 0x186 SWAP7 SWAP8 SWAP9 SWAP10 PUSH0 SWAP5 PUSH2 0x343 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE JUMPDEST PUSH2 0x14E PUSH2 0x12B PUSH2 0x464 JUMP JUMPDEST DUP6 MLOAD SWAP1 PUSH2 0x137 DUP3 PUSH2 0x426 JUMP JUMPDEST PUSH1 0x6 DUP3 MSTORE PUSH6 0x39B2B73232B9 PUSH1 0xD1 SHL DUP5 DUP4 ADD MSTORE PUSH2 0x48C JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH2 0x159 PUSH2 0x464 JUMP JUMPDEST PUSH17 0x1A5CD4995D1D5C9B915D1A131BD8DAD959 PUSH1 0x7A SHL DUP6 MLOAD SWAP3 PUSH2 0x17A DUP5 PUSH2 0x426 JUMP JUMPDEST PUSH1 0x11 DUP5 MSTORE DUP4 ADD MSTORE PUSH2 0x48C JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP2 DUP3 MSTORE MLOAD PUSH2 0x5A48 SWAP2 DUP3 PUSH2 0x53F DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 DUP2 DUP2 PUSH2 0x2FF ADD MSTORE DUP2 DUP2 PUSH2 0x476 ADD MSTORE DUP2 DUP2 PUSH2 0x604 ADD MSTORE DUP2 DUP2 PUSH2 0x794 ADD MSTORE DUP2 DUP2 PUSH2 0x928 ADD MSTORE DUP2 DUP2 PUSH2 0xB85 ADD MSTORE DUP2 DUP2 PUSH2 0xD29 ADD MSTORE DUP2 DUP2 PUSH2 0xE7B ADD MSTORE DUP2 DUP2 PUSH2 0xF93 ADD MSTORE DUP2 DUP2 PUSH2 0x129B ADD MSTORE DUP2 DUP2 PUSH2 0x1379 ADD MSTORE DUP2 DUP2 PUSH2 0x165B ADD MSTORE DUP2 DUP2 PUSH2 0x1B5E ADD MSTORE DUP2 DUP2 PUSH2 0x1C9E ADD MSTORE DUP2 DUP2 PUSH2 0x1DB3 ADD MSTORE DUP2 DUP2 PUSH2 0x2039 ADD MSTORE DUP2 DUP2 PUSH2 0x21E2 ADD MSTORE DUP2 DUP2 PUSH2 0x235E ADD MSTORE DUP2 DUP2 PUSH2 0x2B27 ADD MSTORE DUP2 DUP2 PUSH2 0x2C84 ADD MSTORE DUP2 DUP2 PUSH2 0x2E33 ADD MSTORE DUP2 DUP2 PUSH2 0x2F00 ADD MSTORE DUP2 DUP2 PUSH2 0x30CB ADD MSTORE DUP2 DUP2 PUSH2 0x3987 ADD MSTORE DUP2 DUP2 PUSH2 0x3C04 ADD MSTORE DUP2 DUP2 PUSH2 0x3C89 ADD MSTORE DUP2 DUP2 PUSH2 0x438C ADD MSTORE DUP2 DUP2 PUSH2 0x52F1 ADD MSTORE DUP2 DUP2 PUSH2 0x549E ADD MSTORE DUP2 DUP2 PUSH2 0x565E ADD MSTORE DUP2 DUP2 PUSH2 0x5722 ADD MSTORE PUSH2 0x5867 ADD MSTORE PUSH1 0xA0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x4D7 ADD MSTORE DUP2 DUP2 PUSH2 0x988 ADD MSTORE DUP2 DUP2 PUSH2 0xBBC ADD MSTORE DUP2 DUP2 PUSH2 0x1105 ADD MSTORE DUP2 DUP2 PUSH2 0x2304 ADD MSTORE DUP2 DUP2 PUSH2 0x2CE4 ADD MSTORE DUP2 DUP2 PUSH2 0x51E9 ADD MSTORE PUSH2 0x53D1 ADD MSTORE PUSH1 0xC0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x5173 ADD MSTORE PUSH2 0x5392 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 DUP2 DUP2 PUSH1 0x22 ADD MSTORE DUP2 DUP2 PUSH2 0x17FA ADD MSTORE DUP2 DUP2 PUSH2 0x1946 ADD MSTORE DUP2 DUP2 PUSH2 0x1D4B ADD MSTORE DUP2 DUP2 PUSH2 0x1EEB ADD MSTORE DUP2 DUP2 PUSH2 0x2184 ADD MSTORE DUP2 DUP2 PUSH2 0x2500 ADD MSTORE DUP2 DUP2 PUSH2 0x27EF ADD MSTORE DUP2 DUP2 PUSH2 0x3E34 ADD MSTORE DUP2 DUP2 PUSH2 0x40F7 ADD MSTORE DUP2 DUP2 PUSH2 0x57AA ADD MSTORE PUSH2 0x5901 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x2015 ADD MSTORE DUP2 DUP2 PUSH2 0x26A2 ADD MSTORE DUP2 DUP2 PUSH2 0x33DF ADD MSTORE DUP2 DUP2 PUSH2 0x34E1 ADD MSTORE PUSH2 0x3FA9 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x10F JUMP JUMPDEST DUP4 SWAP3 SWAP4 AND SWAP1 PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x398 JUMPI POP SWAP9 DUP4 PUSH2 0x186 SWAP8 SWAP9 SWAP10 SWAP11 LT PUSH2 0x380 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH2 0x120 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x373 JUMP JUMPDEST DUP11 DUP4 ADD MLOAD DUP5 SSTORE SWAP3 DUP6 ADD SWAP3 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x35C JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP6 PUSH0 KECCAK256 DUP4 DUP1 DUP8 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP9 DUP9 LT PUSH2 0x3E7 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP5 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x3DC JUMPI POP POP PUSH2 0xF0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x3CE JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x3C5 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xE0 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x40E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x40E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x471 DUP3 PUSH2 0x426 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH12 0x2937BABA32B921B7B6B6B7B7 PUSH1 0xA1 SHL PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x4F9 PUSH1 0x3A PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 DUP2 DUP1 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x441 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x52A JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x51F DUP3 PUSH2 0x426 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26B3D95 EQ PUSH2 0x41B9 JUMPI DUP1 PUSH4 0x86FAD66 EQ PUSH2 0x3C60 JUMPI DUP1 PUSH4 0x8C04793 EQ PUSH2 0x3B42 JUMPI DUP1 PUSH4 0xCA078EC EQ PUSH2 0x3AAA JUMPI DUP1 PUSH4 0xF710888 EQ PUSH2 0x3969 JUMPI DUP1 PUSH4 0x175D4408 EQ PUSH2 0x388A JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x323D JUMPI DUP1 PUSH4 0x1D56798D EQ PUSH2 0x30A2 JUMPI DUP1 PUSH4 0x23B39241 EQ PUSH2 0x2EA0 JUMPI DUP1 PUSH4 0x3EBC54E5 EQ PUSH2 0x2D23 JUMPI DUP1 PUSH4 0x452DB952 EQ PUSH2 0x2B9F JUMPI DUP1 PUSH4 0x51682750 EQ PUSH2 0x2A8C JUMPI DUP1 PUSH4 0x53D0BB98 EQ PUSH2 0x29D7 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x289A JUMPI DUP1 PUSH4 0x5B343791 EQ PUSH2 0x2335 JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x22F0 JUMPI DUP1 PUSH4 0x5F9815FF EQ PUSH2 0x21AD JUMPI DUP1 PUSH4 0x68A24FE0 EQ PUSH2 0x1CDF JUMPI DUP1 PUSH4 0x724DBA33 EQ PUSH2 0x1BC6 JUMPI DUP1 PUSH4 0x72657D17 EQ PUSH2 0x1A7B JUMPI DUP1 PUSH4 0x750283BC EQ PUSH2 0x19FE JUMPI DUP1 PUSH4 0x7B03C7BA EQ PUSH2 0x1632 JUMPI DUP1 PUSH4 0x82BF2B24 EQ PUSH2 0x155E JUMPI DUP1 PUSH4 0x82CD54FB EQ PUSH2 0x1316 JUMPI DUP1 PUSH4 0x94E86EF8 EQ PUSH2 0x118B JUMPI DUP1 PUSH4 0x9DE90518 EQ PUSH2 0xF6C JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF28 JUMPI DUP1 PUSH4 0xB037ED36 EQ PUSH2 0xD97 JUMPI DUP1 PUSH4 0xB24BD571 EQ PUSH2 0xC4D JUMPI DUP1 PUSH4 0xBE5AE841 EQ PUSH2 0xBF8 JUMPI DUP1 PUSH4 0xBF6EE3FD EQ PUSH2 0xA5F JUMPI DUP1 PUSH4 0xC08BC851 EQ PUSH2 0x9C7 JUMPI DUP1 PUSH4 0xC330C7BE EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xDA001F7D EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0xE7326DEF EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0xECB2182C EQ PUSH2 0x380 JUMPI PUSH4 0xEFD85F14 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x21B CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x238 PUSH1 0x20 DUP3 ADD PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x241 DUP3 PUSH2 0x4B70 JUMP JUMPDEST SWAP3 PUSH2 0x24F PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4B84 JUMP JUMPDEST SWAP1 SWAP4 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0x5 DUP6 LT ISZERO PUSH2 0x37C JUMPI DUP4 PUSH2 0x2BA PUSH2 0x2FB SWAP7 PUSH1 0x60 DUP6 PUSH2 0x2A5 PUSH0 SWAP13 SWAP12 PUSH2 0x295 SWAP10 DUP8 DUP16 SWAP15 PUSH2 0x288 PUSH1 0xC0 PUSH2 0x2C1 SWAP14 ADD DUP8 PUSH2 0x4BD8 JUMP JUMPDEST SWAP11 SWAP1 SWAP12 PUSH1 0x40 MLOAD SWAP15 DUP16 PUSH2 0x44D5 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x452C JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MSTORE ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x4D61 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x45C3 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5099 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x347 JUMPI JUMPDEST POP PUSH2 0x343 SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4708 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 POP PUSH2 0x343 SWAP3 POP PUSH2 0x36A SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x362 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4E24 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x332 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x436 PUSH2 0x3AF PUSH0 PUSH2 0x428 DUP2 PUSH2 0x472 PUSH2 0x397 CALLDATASIZE PUSH2 0x4A6E JUMP JUMPDEST SWAP8 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 SWAP5 SWAP2 PUSH2 0x3A8 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP11 DUP4 PUSH2 0x5450 JUMP JUMPDEST SWAP8 SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP12 DUP13 SWAP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x3CA DUP7 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 SWAP15 DUP16 SWAP2 AND SWAP1 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x44F1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x4BD SWAP2 PUSH0 SWAP2 PUSH2 0x4FC JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST POP SWAP1 POP PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x4D4 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x518 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4B4A JUMP JUMPDEST DUP7 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x428 PUSH2 0x5C4 PUSH0 DUP1 PUSH2 0x600 PUSH2 0x54F PUSH2 0x535 CALLDATASIZE PUSH2 0x4A6E JUMP JUMPDEST SWAP2 PUSH2 0x548 SWAP12 SWAP6 SWAP12 SWAP11 SWAP5 SWAP7 SWAP2 SWAP4 SWAP11 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP11 DUP13 PUSH2 0x5450 JUMP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x567 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x646 SWAP2 PUSH0 SWAP2 PUSH2 0x655 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST POP POP SWAP1 PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x669 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x637 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x688 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x6A9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP1 PUSH2 0x6B2 PUSH2 0x445E JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x790 PUSH0 SWAP3 SWAP2 PUSH2 0x428 PUSH2 0x754 PUSH2 0x6E0 PUSH2 0x6DA DUP8 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP4 PUSH2 0x53CC JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x6F7 DUP4 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP7 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x7D6 SWAP2 PUSH0 SWAP2 PUSH2 0x7E6 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST POP SWAP2 SWAP1 POP PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x7FA SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x7C7 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x819 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x83A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP2 PUSH2 0x843 PUSH2 0x4432 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH0 SWAP4 PUSH2 0x428 PUSH2 0x8E7 DUP7 SWAP5 PUSH2 0x872 PUSH2 0x86C PUSH2 0x924 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP8 PUSH2 0x53CC JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x88A DUP6 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP3 PUSH2 0x970 SWAP2 PUSH0 SWAP2 PUSH2 0x9AD JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x985 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4A43 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x979 JUMP JUMPDEST PUSH2 0x9C1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x960 JUMP JUMPDEST PUSH2 0x428 PUSH2 0x5C4 PUSH0 DUP1 PUSH2 0x790 PUSH2 0x9DB CALLDATASIZE PUSH2 0x4679 JUMP JUMPDEST PUSH2 0x9EB SWAP10 SWAP4 SWAP2 SWAP9 SWAP3 SWAP5 SWAP10 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0xA02 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0xA73 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0xA95 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x37C JUMPI PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH0 SWAP3 PUSH2 0x428 PUSH2 0xB44 DUP6 SWAP5 PUSH2 0xAC9 PUSH2 0xB81 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH2 0xAD2 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xAEA DUP7 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP7 MSTORE AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE DUP8 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0xBDE JUMPI JUMPDEST POP PUSH2 0xBB9 JUMPI STOP JUMPDEST PUSH0 PUSH32 0x0 TSTORE STOP JUMPDEST PUSH2 0xBF1 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST POP DUP2 PUSH2 0xBB2 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x20 PUSH2 0xC20 PUSH2 0xC0B CALLDATASIZE PUSH2 0x4997 JUMP JUMPDEST PUSH2 0xC13 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0xC1B PUSH2 0x52E7 JUMP JUMPDEST PUSH2 0x552A JUMP JUMPDEST POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0xC5B CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0xC63 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC77 PUSH1 0x20 DUP4 ADD PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0xC80 DUP4 PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0xC8E PUSH1 0x40 DUP6 ADD DUP6 PUSH2 0x4B84 JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP4 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x37C JUMPI DUP4 PUSH2 0x2BA PUSH2 0xD25 SWAP7 PUSH2 0xCDD PUSH2 0xCEB SWAP6 PUSH0 SWAP12 PUSH1 0x60 DUP10 DUP8 DUP16 SWAP15 PUSH2 0x288 PUSH1 0xC0 PUSH2 0xCC6 SWAP15 ADD DUP5 PUSH2 0x4BD8 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE ADD CALLDATALOAD PUSH1 0x40 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x452C JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x4F28 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5109 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0xD6D JUMPI JUMPDEST POP PUSH2 0x343 SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4A43 JUMP JUMPDEST SWAP1 POP PUSH2 0x343 SWAP3 POP PUSH2 0xD90 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xD88 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4F9F JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0xD5C JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0xDB0 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x20 SWAP4 PUSH32 0x5F9815FF00000000000000000000000000000000000000000000000000000000 DUP6 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0xEFB JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP6 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0xE76 PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x46E3 JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH2 0xEBF SWAP3 PUSH0 SWAP3 PUSH2 0xED4 JUMPI JUMPDEST POP POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4D3B JUMP JUMPDEST SWAP1 PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0xEF4 SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xEEC DUP3 DUP6 PUSH2 0x44F1 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x4B4A JUMP JUMPDEST DUP4 DUP1 PUSH2 0xEAF JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0xF60 PUSH2 0xF5A PUSH2 0x343 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x47EF JUMP JUMPDEST SWAP1 PUSH2 0x5165 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x484E JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0xF86 PUSH2 0xF7D CALLDATASIZE PUSH2 0x4731 JUMP JUMPDEST SWAP3 SWAP2 SWAP4 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP3 DUP4 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x1169 JUMPI JUMPDEST POP MLOAD SWAP5 PUSH2 0x1005 DUP7 PUSH2 0x4EF7 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1144 JUMPI POP POP PUSH0 SWAP3 PUSH2 0x428 PUSH2 0x1086 DUP9 DUP7 SWAP6 PUSH2 0x10C2 SWAP6 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x102D DUP5 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x10E6 SWAP2 PUSH0 SWAP2 PUSH2 0x112A JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x1102 JUMPI JUMPDEST PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x113E SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x10D7 JUMP JUMPDEST DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1162 PUSH1 0x1 SWAP4 DUP12 PUSH2 0x5085 JUMP JUMPDEST MSTORE ADD PUSH2 0x1008 JUMP JUMPDEST PUSH2 0x1185 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4E6D JUMP JUMPDEST DUP7 PUSH2 0xFF9 JUMP JUMPDEST PUSH2 0x1194 CALLDATASIZE PUSH2 0x49CA JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x11A4 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x11B2 DUP12 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH1 0x1 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1209 SWAP3 PUSH2 0x45C3 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x68A24FE000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH2 0x1248 SWAP1 PUSH1 0x24 DUP4 ADD PUSH2 0x4FF4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x125A SWAP1 DUP4 PUSH2 0x44F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x1297 SWAP2 PUSH2 0x46E3 JUMP JUMPDEST SUB DUP3 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x12FA JUMPI JUMPDEST POP PUSH1 0x20 DUP3 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x37C JUMPI PUSH1 0x20 DUP1 SWAP3 ADD MLOAD SWAP1 PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x130F SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP1 DUP3 PUSH2 0x12D9 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x132F PUSH2 0x441C JUMP JUMPDEST PUSH2 0x1337 PUSH2 0x4448 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x135C PUSH2 0x13D2 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP1 PUSH2 0x1365 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x136D PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH0 DUP2 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x44 CALLDATALOAD DUP11 DUP9 PUSH1 0x4 DUP7 ADD PUSH2 0x4CAB JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP5 PUSH2 0x153A JUMPI JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x151E JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x14DA JUMPI PUSH2 0x1441 DUP2 DUP7 PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 DUP2 PUSH2 0x1453 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x142E JUMP JUMPDEST DUP3 PUSH2 0x145E DUP3 DUP7 PUSH2 0x5085 JUMP JUMPDEST MLOAD AND DUP6 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP10 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x14CB JUMPI JUMPDEST POP PUSH2 0x1449 JUMP JUMPDEST PUSH2 0x14D4 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP8 PUSH2 0x14C5 JUMP JUMPDEST PUSH2 0x343 DUP6 PUSH2 0x14E7 DUP9 PUSH2 0x5389 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0x1533 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP1 DUP6 PUSH2 0x142B JUMP JUMPDEST PUSH2 0x1557 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x154F DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4D3B JUMP JUMPDEST SWAP3 DUP6 PUSH2 0x13E6 JUMP JUMPDEST PUSH0 PUSH2 0x428 DUP2 PUSH2 0x924 PUSH2 0x15F5 PUSH2 0x1572 CALLDATASIZE PUSH2 0x492E JUMP JUMPDEST SWAP1 PUSH2 0x1582 SWAP9 SWAP5 SWAP3 SWAP6 SWAP4 SWAP9 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x159A DUP8 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x1640 CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x1648 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x1650 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD SWAP2 PUSH2 0x1689 DUP4 PUSH2 0x4B70 JUMP JUMPDEST SWAP1 PUSH2 0x1693 DUP6 PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0x16A1 PUSH1 0x40 DUP8 ADD DUP8 PUSH2 0x4B84 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x37C JUMPI DUP5 PUSH2 0x2BA PUSH2 0xCC6 SWAP5 PUSH2 0xCDD PUSH2 0x1711 SWAP10 PUSH0 SWAP9 PUSH1 0x60 DUP16 DUP8 PUSH2 0x16D9 SWAP11 PUSH2 0x288 PUSH1 0xC0 DUP5 ADD DUP5 PUSH2 0x4BD8 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5109 JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP5 PUSH0 SWAP2 PUSH0 SWAP5 PUSH2 0x19D7 JUMPI JUMPDEST POP PUSH2 0x1733 SWAP1 PUSH2 0x4B70 JUMP JUMPDEST SWAP3 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 SWAP2 PUSH0 DUP6 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP6 PUSH2 0x19BB JUMPI JUMPDEST POP SWAP1 SWAP6 PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1976 JUMPI PUSH2 0x1799 DUP2 DUP5 PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x196D JUMPI DUP7 PUSH2 0x17AC DUP3 DUP11 PUSH2 0x5085 JUMP JUMPDEST MLOAD AND PUSH2 0x17B7 DUP7 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x1942 JUMPI JUMPDEST ISZERO PUSH2 0x18C0 JUMPI POP DUP9 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 DUP14 PUSH32 0x0 AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE DUP14 ADDRESS SWAP1 DUP5 ADD MSTORE DUP10 PUSH1 0x44 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x18B1 JUMPI JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH0 DUP1 SWAP2 DUP9 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP9 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x371 JUMPI DUP9 PUSH2 0x1896 DUP15 PUSH2 0x189C SWAP5 PUSH1 0x1 SWAP8 PUSH2 0x18A2 JUMPI JUMPDEST POP PUSH2 0x4B70 JUMP JUMPDEST AND PUSH2 0x5932 JUMP JUMPDEST ADD PUSH2 0x1786 JUMP JUMPDEST PUSH2 0x18AB SWAP1 PUSH2 0x44A4 JUMP JUMPDEST PUSH0 PUSH2 0x1890 JUMP JUMPDEST PUSH2 0x18BA SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP13 PUSH2 0x183A JUMP JUMPDEST PUSH2 0x18C9 DUP13 PUSH2 0x4B70 JUMP JUMPDEST DUP11 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP14 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x1933 JUMPI JUMPDEST POP PUSH2 0x189C JUMP JUMPDEST PUSH2 0x193C SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP12 PUSH2 0x192D JUMP JUMPDEST POP DUP8 PUSH32 0x0 AND DUP2 EQ PUSH2 0x17BD JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x189C JUMP JUMPDEST POP PUSH2 0x343 DUP9 PUSH2 0x198C PUSH2 0x1987 DUP13 PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x5389 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4A43 JUMP JUMPDEST PUSH2 0x19D0 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP4 DUP9 PUSH2 0x177B JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x1733 SWAP6 POP PUSH2 0x19F3 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xD88 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP2 SWAP6 SWAP1 SWAP2 SWAP4 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x1A07 CALLDATASIZE PUSH2 0x49CA JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x1A17 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x1A25 DUP12 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH0 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1209 SWAP3 PUSH2 0x45C3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x1A8F PUSH2 0x441C JUMP JUMPDEST PUSH2 0x1A97 PUSH2 0x4448 JUMP JUMPDEST PUSH2 0x1A9F PUSH2 0x4598 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH0 PUSH2 0x1B5A PUSH2 0x1AC5 DUP3 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP3 PUSH2 0x428 PUSH2 0x436 PUSH2 0x1AE3 PUSH2 0x1AD8 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x44 CALLDATALOAD SWAP1 DUP12 PUSH2 0x5450 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1AFA DUP5 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP5 MSTORE DUP7 PUSH1 0x20 SWAP14 AND DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x1BA5 SWAP2 PUSH0 SWAP2 PUSH2 0x1BAC JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST POP POP PUSH2 0x5085 JUMP JUMPDEST PUSH2 0x1BC0 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP7 PUSH2 0x1B96 JUMP JUMPDEST PUSH2 0x428 PUSH2 0x1C5E PUSH0 DUP1 PUSH2 0x1C9A PUSH2 0x1BDA CALLDATASIZE PUSH2 0x4679 JUMP JUMPDEST PUSH2 0x1BEB SWAP10 SWAP4 SWAP2 SWAP10 SWAP9 SWAP3 SWAP5 SWAP9 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1C02 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x10E6 SWAP2 PUSH0 SWAP2 PUSH2 0x112A JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x1CED CALLDATASIZE PUSH2 0x4997 JUMP JUMPDEST PUSH2 0x1CF5 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x1CFD PUSH2 0x52E7 JUMP JUMPDEST PUSH2 0x1D06 DUP2 PUSH2 0x552A JUMP JUMPDEST PUSH2 0x1D14 PUSH1 0x60 DUP6 SWAP4 SWAP6 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP1 PUSH2 0x1D1E DUP4 PUSH2 0x4B70 JUMP JUMPDEST SWAP5 PUSH2 0x100 DUP5 ADD SWAP6 PUSH2 0x1D2E DUP8 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x2178 JUMPI JUMPDEST ISZERO PUSH2 0x1FF5 JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x1FCD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 DUP2 AND SWAP3 SWAP2 DUP4 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP8 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x1FBE JUMPI JUMPDEST POP PUSH32 0x0 AND SWAP1 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1E44 PUSH0 DUP1 PUSH1 0x20 SWAP8 DUP9 DUP2 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x1E2F DUP2 PUSH2 0x428 DUP12 DUP12 PUSH1 0x24 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x1E3D PUSH2 0x540E JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x59AE JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP7 DUP3 ISZERO ISZERO SWAP3 DUP4 PUSH2 0x1FA5 JUMPI JUMPDEST POP POP POP PUSH2 0x1F7A JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x1F51 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x1EE0 SWAP2 JUMPDEST PUSH2 0x1EC4 DUP6 PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0x1EDA PUSH2 0x1ED4 PUSH1 0x80 DUP9 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0x4C86 JUMP JUMPDEST SWAP3 PUSH2 0x5702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 AND EQ PUSH2 0x1F3F JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1987 PUSH2 0x1F4B SWAP2 PUSH2 0x4B70 JUMP JUMPDEST DUP3 PUSH2 0x1F13 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1F73 JUMPI JUMPDEST PUSH2 0x1F64 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP6 DUP1 PUSH2 0x1EB1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F5A JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1FB5 SWAP4 POP DUP3 ADD DUP2 ADD SWAP2 ADD PUSH2 0x4C93 JUMP JUMPDEST ISZERO DUP12 DUP7 DUP2 PUSH2 0x1E52 JUMP JUMPDEST PUSH2 0x1FC7 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP10 PUSH2 0x1DB0 JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x2009 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x1EE0 SWAP2 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x2063 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP3 AND PUSH1 0x44 DUP7 ADD MSTORE SWAP2 DUP8 AND AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x2129 SWAP4 PUSH2 0x2169 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x213E JUMPI JUMPDEST DUP1 PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2162 JUMPI JUMPDEST PUSH2 0x2154 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP6 PUSH2 0x2138 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x214A JUMP JUMPDEST PUSH2 0x2172 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP11 PUSH2 0x20DC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP6 AND EQ PUSH2 0x1D34 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x21C6 PUSH2 0x441C JUMP JUMPDEST PUSH2 0x21CE PUSH2 0x4448 JUMP JUMPDEST PUSH2 0x21D6 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP5 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x371 JUMPI PUSH0 PUSH2 0x2257 PUSH2 0x2292 SWAP7 DUP3 SWAP7 DUP4 SWAP2 PUSH2 0x22D6 JUMPI JUMPDEST POP MLOAD PUSH2 0x4EF7 JUMP JUMPDEST SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x4CAB JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP2 PUSH0 SWAP2 PUSH2 0x22BC JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0x22D0 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x154F DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP3 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x22EA SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP9 PUSH2 0x2250 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x2343 CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x234B PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x2353 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 SWAP2 DUP3 DUP5 ADD SWAP4 PUSH2 0x238E DUP6 PUSH2 0x4B70 JUMP JUMPDEST SWAP5 PUSH2 0x2398 DUP3 PUSH2 0x4B70 JUMP JUMPDEST SWAP6 PUSH2 0x23A6 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4B84 JUMP JUMPDEST SWAP2 SWAP1 SWAP8 PUSH1 0x80 DUP6 ADD CALLDATALOAD SWAP2 PUSH1 0x5 DUP4 LT ISZERO PUSH2 0x37C JUMPI DUP7 PUSH2 0x2BA PUSH2 0x23EA SWAP5 PUSH2 0x23F9 PUSH2 0x2449 SWAP14 PUSH0 SWAP9 DUP15 DUP7 PUSH2 0x2411 SWAP10 PUSH2 0x23DD DUP16 PUSH1 0xC0 DUP2 ADD SWAP1 PUSH2 0x4BD8 JUMP JUMPDEST SWAP10 SWAP1 SWAP11 PUSH1 0x40 MLOAD SWAP14 DUP15 PUSH2 0x44D5 JUMP JUMPDEST AND DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x452C JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x4D61 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5099 JUMP JUMPDEST SUB DUP2 DUP4 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH0 SWAP8 PUSH0 SWAP5 PUSH2 0x2871 JUMPI JUMPDEST POP PUSH2 0x246B SWAP1 PUSH2 0x4B70 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x2857 JUMPI JUMPDEST POP SWAP3 SWAP7 PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2816 JUMPI DUP7 PUSH2 0x24CE DUP3 DUP6 PUSH2 0x5085 JUMP JUMPDEST MLOAD AND PUSH2 0x24DA DUP3 DUP8 PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x27A9 JUMPI PUSH2 0x24EB DUP9 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x27EB JUMPI JUMPDEST ISZERO PUSH2 0x269E JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x1FCD JUMPI PUSH32 0x0 DUP9 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x25BA SWAP5 DUP15 SWAP3 DUP5 SWAP3 PUSH2 0x268F JUMPI JUMPDEST POP DUP14 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x261B SWAP4 DUP14 SWAP4 PUSH2 0x2664 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI DUP11 SWAP2 PUSH2 0x263B JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x24BA JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x265D JUMPI JUMPDEST PUSH2 0x264E DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP9 DUP12 PUSH2 0x262F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2644 JUMP JUMPDEST PUSH2 0x2683 SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x2688 JUMPI JUMPDEST PUSH2 0x267B DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH2 0x25D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2671 JUMP JUMPDEST PUSH2 0x2698 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST PUSH0 PUSH2 0x256C JUMP JUMPDEST SWAP1 DUP9 PUSH32 0x0 AND SWAP1 PUSH2 0x26CC DUP8 PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x26D5 DUP3 PUSH2 0x5345 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP14 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP3 SWAP2 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x2795 SWAP4 DUP14 SWAP4 PUSH2 0x27DC JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI DUP11 SWAP2 PUSH2 0x27B3 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x2635 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x27D5 JUMPI JUMPDEST PUSH2 0x27C6 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP9 DUP12 PUSH2 0x27A9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27BC JUMP JUMPDEST PUSH2 0x27E5 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP15 PUSH2 0x25D0 JUMP JUMPDEST POP DUP9 PUSH32 0x0 AND DUP2 EQ PUSH2 0x24F1 JUMP JUMPDEST POP DUP4 PUSH2 0x343 DUP11 PUSH2 0x2828 PUSH2 0x1987 DUP8 PUSH2 0x4B70 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4708 JUMP JUMPDEST PUSH2 0x286B SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP9 PUSH2 0x24AF JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x288E SWAP2 SWAP8 POP PUSH2 0x246B SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x362 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP8 SWAP2 SWAP3 SWAP1 SWAP8 SWAP4 SWAP1 PUSH2 0x2461 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x29CD JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x29A0 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x2962 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x2909 JUMPI JUMPDEST POP PUSH2 0x28F5 SWAP3 POP SUB DUP4 PUSH2 0x44F1 JUMP JUMPDEST PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x294A JUMPI POP POP PUSH2 0x28F5 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x28E8 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x2933 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x28F5 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x28E8 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x28C4 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x2A08 PUSH2 0x2A01 PUSH0 DUP1 PUSH2 0x600 PUSH2 0x754 PUSH2 0x428 PUSH2 0x29F6 CALLDATASIZE PUSH2 0x48CF JUMP JUMPDEST SWAP6 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP9 DUP11 PUSH2 0x5450 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2A1F DUP4 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH2 0x428 PUSH2 0x1C5E PUSH0 DUP1 PUSH2 0x2B23 PUSH2 0x2AA0 CALLDATASIZE PUSH2 0x492E JUMP JUMPDEST PUSH2 0x2AB0 SWAP10 SWAP4 SWAP5 SWAP9 SWAP3 SWAP2 SWAP10 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x2AC7 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x2B69 SWAP2 PUSH0 SWAP2 PUSH2 0x2B85 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST POP SWAP3 SWAP1 POP PUSH2 0x1102 JUMPI PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0x2B99 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x2B5A JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x2BB8 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x2BD9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP2 PUSH2 0x2BE2 PUSH2 0x4432 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH0 SWAP4 PUSH2 0x428 PUSH2 0x8E7 DUP7 SWAP5 PUSH2 0x2C0B PUSH2 0x86C PUSH2 0x2C80 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x2C23 DUP6 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP3 PUSH2 0x2CCC SWAP2 PUSH0 SWAP2 PUSH2 0x2D09 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x2CE1 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4708 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x2CD5 JUMP JUMPDEST PUSH2 0x2D1D SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x2CBC JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x2D31 CALLDATASIZE PUSH2 0x4783 JUMP JUMPDEST SWAP1 PUSH2 0x2D3F SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x53CC JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x2D58 DUP9 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH0 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x2DE1 SWAP2 PUSH2 0x4FF4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x2DF3 SWAP1 DUP4 PUSH2 0x44F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP7 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x2E2F SWAP2 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x2E86 JUMPI JUMPDEST POP DUP3 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP3 ADD MLOAD SWAP1 PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x2E9A SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP4 PUSH2 0x2E69 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x2EB9 PUSH2 0x441C JUMP JUMPDEST PUSH2 0x2EC1 PUSH2 0x445E JUMP JUMPDEST SWAP1 PUSH2 0x2ECA PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x2EED PUSH2 0x2EF3 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP2 PUSH2 0x53CC JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND SWAP3 DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP6 DUP7 PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x44 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP4 PUSH2 0x3063 JUMPI JUMPDEST POP PUSH0 SWAP4 PUSH2 0x428 PUSH2 0x2FFF DUP7 SWAP5 PUSH2 0x2F87 PUSH2 0x303B SWAP6 PUSH2 0x4EF7 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2F94 DUP10 DUP5 PUSH2 0x5085 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2FA2 DUP4 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP4 MSTORE PUSH1 0x20 SWAP12 DUP13 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x4BD SWAP2 PUSH0 SWAP2 PUSH2 0x4FC JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST SWAP3 POP POP SWAP2 PUSH1 0x40 DUP3 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x309A JUMPI JUMPDEST DUP2 PUSH2 0x3080 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 PUSH2 0x2F70 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3073 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x30BE PUSH2 0x30B3 CALLDATASIZE PUSH2 0x48CF JUMP JUMPDEST SWAP3 SWAP5 SWAP1 SWAP4 SWAP2 SWAP4 PUSH2 0x53CC JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 DUP1 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP7 ADD MSTORE AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 DUP4 PUSH1 0x44 DUP2 DUP8 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP5 PUSH2 0x3200 JUMPI JUMPDEST POP SWAP4 PUSH2 0x428 PUSH2 0x2FFF PUSH0 SWAP7 SWAP5 PUSH2 0x31D8 SWAP5 PUSH2 0x3154 DUP10 SWAP8 PUSH2 0x4EF7 JUMP JUMPDEST SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3170 DUP11 DUP6 PUSH2 0x5085 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP3 PUSH2 0x317E DUP5 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP13 DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x1BA5 SWAP2 PUSH0 SWAP2 PUSH2 0x1BAC JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP4 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x3235 JUMPI JUMPDEST DUP2 PUSH2 0x321C PUSH1 0x40 SWAP4 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP3 MLOAD PUSH1 0x20 SWAP1 SWAP4 ADD MLOAD SWAP3 PUSH2 0x428 PUSH2 0x313B JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x320F JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x37C JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x37C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x37C JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x37C JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x32B3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x47EF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x37C JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x32F4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4820 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x3314 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x47EF JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0x331F PUSH2 0x52BA JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x3862 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x35AF JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x37C JUMPI PUSH2 0x33D2 JUMPI JUMPDEST PUSH2 0x343 PUSH2 0xF60 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x5165 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x37C JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x37C JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x3531 JUMPI POP POP POP DUP3 SWAP2 PUSH0 SWAP5 PUSH2 0x34D4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x34B2 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x4474 JUMP JUMPDEST AND PUSH1 0x84 DUP7 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0x3 NOT DUP6 DUP5 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x4C29 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP4 PUSH2 0xF60 SWAP4 PUSH2 0x3522 JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0x352B SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP5 PUSH2 0x3517 JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3548 DUP8 PUSH2 0x4474 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x37C JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x3578 PUSH1 0x40 DUP10 ADD PUSH2 0x543D JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3593 PUSH1 0x60 DUP11 ADD PUSH2 0x543D JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0x3486 JUMP JUMPDEST PUSH2 0x35BD PUSH2 0x2BA DUP3 DUP5 DUP7 PUSH2 0x52A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP4 ADD GT OR PUSH2 0xEFB JUMPI PUSH1 0x60 DUP2 ADD PUSH1 0x40 MSTORE PUSH0 DUP2 MSTORE PUSH1 0x20 SWAP2 PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE DUP3 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x364D DUP3 PUSH2 0x44D5 JUMP JUMPDEST PUSH2 0x3660 PUSH1 0x24 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x4474 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x3676 PUSH1 0x44 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x4474 JUMP JUMPDEST SWAP1 DUP2 DUP6 DUP6 ADD MSTORE PUSH2 0x368F PUSH1 0x64 PUSH1 0xC0 DUP9 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x4474 JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP9 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP12 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x3853 JUMPI JUMPDEST POP PUSH2 0x3849 JUMPI PUSH2 0x376C PUSH2 0x540E JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x3819 JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x37E4 JUMPI POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x332E JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x37F1 JUMPI DUP1 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3842 JUMPI JUMPDEST PUSH2 0x3831 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x37CE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3827 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x37DE JUMP JUMPDEST PUSH2 0x385C SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP11 PUSH2 0x375F JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x3898 CALLDATASIZE PUSH2 0x4783 JUMP JUMPDEST SWAP1 PUSH2 0x38A6 SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x53CC JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x38BF DUP9 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH1 0x1 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x2DE1 SWAP2 PUSH2 0x4FF4 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x397A PUSH2 0xF7D CALLDATASIZE PUSH2 0x4731 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP4 DUP5 PUSH1 0x4 DUP6 ADD MSTORE PUSH0 DUP5 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x371 JUMPI PUSH2 0x1086 PUSH0 SWAP6 SWAP5 PUSH2 0x3A6D SWAP5 PUSH2 0x3A06 DUP9 SWAP8 PUSH2 0x428 SWAP6 DUP10 SWAP2 PUSH2 0x3A90 JUMPI POP MLOAD PUSH2 0x4EF7 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x3A14 DUP5 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x2B69 SWAP2 PUSH0 SWAP2 PUSH2 0x2B85 JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST PUSH2 0x3AA4 SWAP2 POP RETURNDATASIZE DUP1 DUP12 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP13 PUSH2 0x2250 JUMP JUMPDEST PUSH0 PUSH2 0x428 DUP2 PUSH2 0x2C80 PUSH2 0x15F5 PUSH2 0x3ABE CALLDATASIZE PUSH2 0x4679 JUMP JUMPDEST SWAP1 PUSH2 0x3ACF SWAP9 SWAP5 SWAP3 SWAP9 SWAP6 SWAP4 SWAP6 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x3AE7 DUP8 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x3B56 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH0 PUSH2 0x428 PUSH2 0x3BBD PUSH2 0x3B80 PUSH2 0x3BF7 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 SWAP8 PUSH32 0x82CD54FB00000000000000000000000000000000000000000000000000000000 DUP10 DUP6 ADD MSTORE PUSH1 0x24 CALLDATALOAD SWAP1 CALLER SWAP1 PUSH1 0x24 DUP7 ADD PUSH2 0x4CAB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP7 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0xEBF SWAP2 PUSH0 SWAP2 PUSH2 0x3C46 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4D3B JUMP JUMPDEST PUSH2 0x3C5A SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP4 PUSH2 0x3C37 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x3C6E CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x3C76 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x3C7E PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 PUSH2 0x3CB6 PUSH1 0x20 DUP5 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP3 PUSH2 0x3CC0 DUP2 PUSH2 0x4B70 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP2 ADD SWAP5 PUSH2 0x3CD0 DUP7 DUP4 PUSH2 0x4B84 JUMP JUMPDEST SWAP2 PUSH2 0x3CDE PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x4B84 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP5 PUSH2 0x3CEF PUSH1 0xC0 DUP9 ADD DUP9 PUSH2 0x4BD8 JUMP JUMPDEST SWAP7 SWAP1 SWAP3 DUP11 PUSH1 0x40 MLOAD SWAP11 PUSH32 0xBA8A2BE000000000000000000000000000000000000000000000000000000000 DUP13 MSTORE DUP2 PUSH1 0xC4 DUP14 ADD SWAP4 AND PUSH1 0x4 DUP14 ADD MSTORE AND PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0xC0 PUSH1 0x44 DUP12 ADD MSTORE MSTORE PUSH1 0xE4 DUP9 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4198 JUMPI POP POP POP PUSH1 0x3 NOT DUP8 DUP4 SUB ADD PUSH1 0x64 DUP9 ADD MSTORE DUP4 DUP3 MSTORE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x37C JUMPI PUSH1 0x20 SWAP5 DUP6 DUP9 SWAP6 SWAP5 PUSH2 0x3DAF SWAP5 DUP8 SWAP7 PUSH1 0x5 SHL DUP1 SWAP3 DUP5 DUP4 ADD CALLDATACOPY ADD PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0x1C DUP7 DUP3 SUB ADD PUSH1 0xA4 DUP8 ADD MSTORE ADD SWAP2 PUSH2 0x4C29 JUMP JUMPDEST SUB DUP2 PUSH0 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x4164 JUMPI JUMPDEST POP SWAP1 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP2 SWAP1 PUSH0 JUMPDEST PUSH2 0x3DD8 DUP3 DUP5 PUSH2 0x4B84 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x412A JUMPI PUSH2 0x3DFD PUSH2 0x3DF8 DUP3 PUSH2 0x3DF2 DUP6 DUP8 PUSH2 0x4B84 JUMP JUMPDEST SWAP1 PUSH2 0x4C49 JUMP JUMPDEST PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x3E0E DUP3 PUSH2 0x3DF2 PUSH1 0x60 DUP8 ADD DUP8 PUSH2 0x4B84 JUMP JUMPDEST CALLDATALOAD SWAP1 DUP2 ISZERO PUSH2 0x4120 JUMPI PUSH2 0x3E1F DUP7 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x40F3 JUMPI JUMPDEST ISZERO PUSH2 0x3FA6 JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x1FCD JUMPI PUSH32 0x0 DUP7 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x3EEF SWAP5 PUSH1 0x20 SWAP3 DUP5 SWAP3 PUSH2 0x3F97 JUMPI JUMPDEST POP DUP12 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x3F50 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x2664 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x3F6C JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3F90 JUMPI JUMPDEST PUSH2 0x3F82 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP8 PUSH2 0x3F61 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x3FA0 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP14 PUSH2 0x3EA1 JUMP JUMPDEST DUP7 PUSH32 0x0 AND SWAP2 PUSH2 0x3FD3 DUP7 PUSH2 0x4B70 JUMP JUMPDEST SWAP3 PUSH2 0x3FDD DUP3 PUSH2 0x5345 JUMP JUMPDEST DUP2 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE DUP12 DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE DUP4 DUP11 AND SWAP1 SWAP5 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x409F SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x40E4 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x40B9 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x3F66 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x40DD JUMPI JUMPDEST PUSH2 0x40CF DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP8 PUSH2 0x40B0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x40C5 JUMP JUMPDEST PUSH2 0x40ED SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP12 PUSH2 0x25D0 JUMP JUMPDEST POP DUP7 PUSH32 0x0 AND DUP8 DUP3 AND EQ PUSH2 0x3E25 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x3F66 JUMP JUMPDEST PUSH1 0x20 DUP8 PUSH2 0x4139 PUSH2 0x1987 DUP7 PUSH2 0x4B70 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4190 JUMPI JUMPDEST DUP2 PUSH2 0x4180 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI MLOAD SWAP1 DUP6 PUSH2 0x3DC3 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4173 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 DUP14 PUSH2 0x41AB DUP10 PUSH2 0x4474 JUMP JUMPDEST AND DUP2 MSTORE ADD SWAP6 ADD SWAP3 SWAP2 ADD PUSH2 0x3D3C JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x41CD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0x37C JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x41FB DUP4 PUSH2 0x4514 JUMP JUMPDEST SWAP1 PUSH2 0x4209 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP4 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x24 DUP6 DUP5 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x24 DUP7 SWAP2 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x4404 JUMPI POP POP POP POP PUSH1 0x44 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x424D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST PUSH2 0x4255 PUSH2 0x4598 JUMP JUMPDEST SWAP5 PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x426E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x4284 DUP5 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP5 MSTORE DUP8 DUP8 DUP6 ADD SWAP7 AND DUP7 MSTORE PUSH1 0x40 DUP5 ADD SWAP5 DUP6 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x80 DUP5 ADD SWAP5 PUSH1 0x64 CALLDATALOAD DUP7 MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP4 DUP5 MSTORE DUP9 PUSH1 0x40 MLOAD SWAP8 PUSH32 0x86FAD6600000000000000000000000000000000000000000000000000000000 DUP11 DUP11 ADD MSTORE DUP10 PUSH1 0x24 DUP11 ADD MSTORE DUP2 PUSH2 0x124 DUP11 ADD SWAP8 MLOAD AND PUSH1 0x44 DUP11 ADD MSTORE MLOAD AND PUSH1 0x64 DUP9 ADD MSTORE MLOAD SWAP4 PUSH1 0xE0 PUSH1 0x84 DUP9 ADD MSTORE DUP5 MLOAD DUP1 SWAP2 MSTORE DUP8 PUSH2 0x144 DUP9 ADD SWAP6 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x43EE JUMPI POP POP DUP8 PUSH0 DUP1 PUSH2 0x4388 DUP13 DUP12 PUSH2 0x1C5E DUP2 PUSH2 0x428 DUP15 DUP15 DUP15 DUP15 PUSH2 0x4368 DUP16 MLOAD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC SWAP5 DUP6 DUP10 DUP4 SUB ADD PUSH1 0xA4 DUP11 ADD MSTORE PUSH2 0x4AD1 JUMP JUMPDEST SWAP4 MLOAD PUSH1 0xC4 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xE4 DUP7 ADD MSTORE MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH2 0x104 DUP6 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x43D4 JUMPI JUMPDEST POP DUP2 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x43E8 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP3 PUSH2 0x43BC JUMP JUMPDEST DUP3 MLOAD DUP12 AND DUP8 MSTORE SWAP6 DUP10 ADD SWAP6 SWAP2 DUP10 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4315 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x440F DUP5 PUSH2 0x4474 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 DUP6 SWAP1 PUSH2 0x422A JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEFB JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x4537 DUP3 PUSH2 0x4514 JUMP JUMPDEST SWAP2 PUSH2 0x4545 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F1 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 SWAP5 ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP3 DUP4 GT PUSH2 0x37C JUMPI SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x456B JUMPI POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x20 PUSH2 0x4595 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x452C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEFB JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x45CF DUP3 PUSH2 0x45A7 JUMP JUMPDEST SWAP2 PUSH2 0x45DD PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F1 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x37C JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x20 PUSH2 0x4595 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x45C3 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI DUP3 PUSH1 0xE0 SWAP3 SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4665 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4657 JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x37C JUMPI DUP2 PUSH2 0x46BB SWAP2 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x471E PUSH2 0x4595 SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x37C JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x4883 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x48BF DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x46E3 JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x4873 JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x44 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x37C JUMPI DUP3 PUSH2 0x4973 SWAP2 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI DUP3 PUSH2 0x140 SWAP3 SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP2 PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4A3F SWAP2 PUSH1 0x4 ADD PUSH2 0x4820 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP2 PUSH2 0x4A60 SWAP1 PUSH2 0x4595 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4AF0 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4AE2 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP1 MLOAD SWAP1 PUSH2 0x4B1B DUP3 PUSH2 0x45A7 JUMP JUMPDEST SWAP3 PUSH2 0x4B29 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F1 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x37C JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4B04 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x37C JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x37C JUMPI JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x37C JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH1 0x20 SWAP5 SWAP4 PUSH1 0x1F NOT SWAP4 DUP2 DUP7 MSTORE DUP7 DUP7 ADD CALLDATACOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x4C59 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x37C JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x4595 SWAP5 SWAP4 PUSH1 0x80 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x4CF5 DUP2 PUSH2 0x4514 JUMP JUMPDEST SWAP4 PUSH2 0x4D03 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x44F1 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x4D2C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x4D1E JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4CDA JUMP JUMPDEST PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x4DE8 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x4E05 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x4D9A JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xE0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x37C JUMPI DUP5 PUSH2 0x4E50 SWAP2 DUP4 ADD PUSH2 0x4CDA JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4B04 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x37C JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP3 MLOAD PUSH2 0x4EA3 DUP2 PUSH2 0x4514 JUMP JUMPDEST SWAP4 PUSH2 0x4EB1 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x44F1 JUMP JUMPDEST DUP2 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x37C JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x4ED8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x4ECA JUMP JUMPDEST SWAP1 PUSH2 0x4F01 DUP3 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x4F0E PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x44F1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x4F1E DUP3 SWAP5 PUSH2 0x4514 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x4F82 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x4E05 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x4F34 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x37C JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x37C JUMPI DUP2 PUSH2 0x4FD0 SWAP2 DUP5 ADD PUSH2 0x4CDA JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4B04 JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST PUSH2 0x160 PUSH2 0x4595 SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x5022 PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x4FE7 JUMP JUMPDEST DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 PUSH1 0x60 DUP4 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD SWAP1 PUSH2 0x120 SWAP2 ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH2 0x140 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x4C59 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x50D9 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x50F5 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x4D9A JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x5153 PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH2 0x50F5 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x4F34 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5170 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x527B JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x51A9 DUP4 PUSH2 0x4514 JUMP JUMPDEST SWAP3 PUSH2 0x51B7 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x51C6 DUP3 PUSH2 0x4514 JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x526A JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x5221 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x5216 SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x5218 JUMPI JUMPDEST POP PUSH2 0x5389 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x5210 JUMP JUMPDEST DUP1 PUSH2 0x524E PUSH0 DUP1 PUSH2 0x5236 PUSH2 0x2BA DUP10 SWAP7 DUP9 DUP11 PUSH2 0x52A3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x5247 PUSH2 0x540E JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x59AE JUMP JUMPDEST PUSH2 0x5258 DUP3 DUP9 PUSH2 0x5085 JUMP JUMPDEST MSTORE PUSH2 0x5263 DUP2 DUP8 PUSH2 0x5085 JUMP JUMPDEST POP ADD PUSH2 0x51D4 JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x51C9 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x4C59 JUMPI PUSH2 0x4A3F SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x4BD8 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x527B JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x5319 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x5359 JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x53C8 JUMPI PUSH32 0x0 TLOAD PUSH2 0x53C8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x5216 SWAP3 AND PUSH2 0x5932 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x5404 JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x5438 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x541F DUP3 PUSH2 0x45A7 JUMP JUMPDEST SWAP2 PUSH2 0x542D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F1 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x5520 JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x54E9 JUMPI JUMPDEST POP POP PUSH2 0x54E6 PUSH2 0x54DF DUP6 SWAP5 PUSH2 0x4EF7 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x5085 JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x5519 JUMPI JUMPDEST PUSH2 0x5502 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x54D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x54F8 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x56DA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 SWAP3 PUSH2 0x555A DUP3 DUP6 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP3 DUP1 PUSH1 0x60 SWAP5 DUP6 SWAP4 DUP5 DUP7 ADD PUSH2 0x556D SWAP1 PUSH2 0x4B70 JUMP JUMPDEST SWAP6 PUSH2 0x557A PUSH1 0x80 DUP3 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP1 DUP5 PUSH2 0x558A PUSH2 0x120 DUP4 ADD DUP4 PUSH2 0x4BD8 JUMP JUMPDEST SWAP2 SWAP1 DUP13 MLOAD SWAP6 PUSH2 0x5598 DUP8 PUSH2 0x4488 JUMP JUMPDEST DUP7 MSTORE DUP2 PUSH1 0x20 DUP8 ADD SWAP8 AND DUP8 MSTORE DUP2 DUP14 DUP8 ADD SWAP12 AND DUP12 MSTORE DUP2 DUP11 DUP8 ADD SWAP6 AND DUP6 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 PUSH1 0xA0 DUP6 ADD CALLDATALOAD DUP5 MSTORE PUSH1 0xA0 DUP8 ADD SWAP5 PUSH1 0xC0 ADD CALLDATALOAD DUP6 MSTORE CALLDATASIZE SWAP1 PUSH2 0x55D5 SWAP3 PUSH2 0x45C3 JUMP JUMPDEST SWAP4 PUSH1 0xC0 DUP7 ADD SWAP5 DUP6 MSTORE DUP2 DUP14 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP10 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP12 MSTORE PUSH1 0x4 DUP12 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP12 ADD SWAP1 MLOAD SWAP1 PUSH2 0x5622 SWAP2 PUSH2 0x4FE7 JUMP JUMPDEST MLOAD AND PUSH1 0x44 DUP10 ADD MSTORE MLOAD AND PUSH1 0x64 DUP8 ADD MSTORE MLOAD AND PUSH1 0x84 DUP6 ADD MSTORE MLOAD PUSH1 0xA4 DUP5 ADD MSTORE MLOAD PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0xE4 DUP3 ADD PUSH1 0xE0 SWAP1 MSTORE PUSH2 0x104 DUP3 ADD PUSH2 0x565A SWAP2 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x5520 JUMPI PUSH0 SWAP4 PUSH0 SWAP4 PUSH0 SWAP4 PUSH2 0x569D JUMPI JUMPDEST POP POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST SWAP3 POP SWAP3 POP DUP1 SWAP4 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x56D3 JUMPI JUMPDEST PUSH2 0x56B7 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MLOAD PUSH0 DUP1 DUP1 PUSH2 0x5695 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x56AD JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x592A JUMPI DUP1 PUSH2 0x58F5 JUMPI JUMPDEST ISZERO PUSH2 0x5859 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x5846 JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x5842 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x5837 JUMPI PUSH2 0x581F JUMPI JUMPDEST POP PUSH2 0x5216 SWAP4 SWAP5 POP AND PUSH2 0x5932 JUMP JUMPDEST PUSH2 0x5829 DUP7 SWAP2 PUSH2 0x44A4 JUMP JUMPDEST PUSH2 0x5833 JUMPI DUP5 PUSH2 0x5812 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x5851 SWAP2 SWAP6 POP PUSH2 0x44A4 JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x57A5 JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x58EC JUMPI POP JUMP JUMPDEST PUSH2 0x5216 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x5711 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x5982 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x5952 PUSH2 0x540E JUMP JUMPDEST POP ISZERO PUSH2 0x595A JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x59C3 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x595A JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x5A09 JUMPI JUMPDEST PUSH2 0x59D4 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x59CC JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 0xE8 PC PUSH21 0xE80A6E7776CAED62D5C4F9D183AC00AA251E16ACD8 SWAP10 NUMBER 0xCD PUSH15 0xA0FEDB64736F6C634300081A003300 ","sourceMap":"1123:39322:61:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;409:14:68;1123:39322:61;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;2845:83:62;1123:39322:61;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;2651:72:62;2689:23;;:::i;:::-;1123:39322:61;;;;;;:::i;:::-;;;;-1:-1:-1;;;1123:39322:61;;;;2651:72:62;:::i;:::-;;;2883:23;;:::i;:::-;-1:-1:-1;;;1123:39322:61;;;;;;:::i;:::-;;;;;;;2845:83:62;:::i;:::-;;;7155:12;;7177:18;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:72:62;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2845:83:62;1123:39322:61;;;;;;;;;;7155:12:62;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;-1:-1:-1;1123:39322:61;;;-1:-1:-1;1123:39322:61;;-1:-1:-1;1123:39322:61;;;;;;;;;2845:83:62;1123:39322:61;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;-1:-1:-1;1123:39322:61;;-1:-1:-1;1123:39322:61;;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::o;:::-;;;;;-1:-1:-1;;1123:39322:61;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1123:39322:61;;;;:::o;1276:306:44:-;;1461:67;1123:39322:61;1461:67:44;1276:306;1123:39322:61;;1461:67:44;;;;;;;1123:39322:61;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:39322:61;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;1461:67:44;;;;;;;;;:::i;:::-;1123:39322:61;1451:78:44;;-1:-1:-1;;1123:39322:61;;;;;;;;;1432:103:44;1461:67;1432:103;;1123:39322:61;;;1461:67:44;1432:103;;;;;:::i;:::-;1123:39322:61;;1405:144:44;;-1:-1:-1;;1405:170:44;;1276:306::o;1123:39322:61:-;;;;-1:-1:-1;1123:39322:61;;;;;-1:-1:-1;1123:39322:61"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":17524,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_address_56152":{"entryPoint":17436,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_56175":{"entryPoint":17458,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_56192":{"entryPoint":17480,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_56232":{"entryPoint":17502,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_array_uint256_dynt_uint256t_boolt_bytes":{"entryPoint":18041,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_addresst_contract_IERC20t_contract_IERC20t_uint256t_addresst_bytes":{"entryPoint":18307,"id":null,"parameterSlots":1,"returnSlots":6},"abi_decode_addresst_contract_IERC20t_contract_IERC20t_uint256t_uint256t_uint256t_boolt_bytes_calldata":{"entryPoint":18890,"id":null,"parameterSlots":1,"returnSlots":9},"abi_decode_addresst_contract_IERC20t_uint256t_addresst_bytes":{"entryPoint":18639,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_addresst_uint256t_addresst_bytes":{"entryPoint":18225,"id":null,"parameterSlots":1,"returnSlots":4},"abi_decode_addresst_uint256t_array_uint256_dynt_boolt_bytes":{"entryPoint":18734,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_addresst_uint256t_contract_IERC20t_uint256t_boolt_bytes":{"entryPoint":19054,"id":null,"parameterSlots":1,"returnSlots":6},"abi_decode_array_bytes_calldata_dyn_calldata":{"entryPoint":18415,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_contract_IERC20_dyn_fromMemory":{"entryPoint":20077,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":17786,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":19771,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_memory_ptr_fromMemory":{"entryPoint":19674,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_uint256t_bytes_fromMemory":{"entryPoint":20004,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_available_length_array_uint256_dyn":{"entryPoint":17708,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":17859,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":17816,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":19603,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":17913,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":18464,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_fromMemory":{"entryPoint":19204,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_memory_ptr_fromMemory":{"entryPoint":19274,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_InitializeHookParams_calldata":{"entryPoint":17940,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SwapSingleTokenHookParams_calldata":{"entryPoint":18839,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint256t_array_uint256_dynt_bytes_fromMemory":{"entryPoint":20383,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint48":{"entryPoint":21565,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_uint160_address":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_address_uint256_array_uint256_dyn":{"entryPoint":19627,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_array_bytes_dyn":{"entryPoint":18510,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":17990,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_to_array_uint256_dyn":{"entryPoint":19153,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_bytes":{"entryPoint":18184,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bytes":{"entryPoint":18147,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":19497,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_contract_IERC20_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_contract_IERC20_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_enum_AddLiquidityKind":{"entryPoint":19866,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_RemoveLiquidityKind":{"entryPoint":20276,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_SwapKind":{"entryPoint":20455,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_AddLiquidityHookParams":{"entryPoint":19879,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_AddLiquidityParams":{"entryPoint":20633,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RemoveLiquidityHookParams":{"entryPoint":20289,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RemoveLiquidityParams":{"entryPoint":20745,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapSingleTokenHookParams":{"entryPoint":20468,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_bytes":{"entryPoint":19011,"id":null,"parameterSlots":4,"returnSlots":1},"access_calldata_tail_array_contract_IERC20_dyn_calldata":{"entryPoint":19332,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_bytes_calldata":{"entryPoint":19416,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":20215,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_contract_IERC20_dyn":{"entryPoint":17684,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":17831,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_bytes_calldata_dyn_calldata":{"entryPoint":21155,"id":null,"parameterSlots":3,"returnSlots":2},"calldata_array_index_access_contract_IERC20_dyn_calldata":{"entryPoint":19529,"id":null,"parameterSlots":3,"returnSlots":1},"extract_returndata":{"entryPoint":21518,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":17649,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_56154":{"entryPoint":17544,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_56156":{"entryPoint":17572,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_56164":{"entryPoint":17592,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_56166":{"entryPoint":17621,"id":null,"parameterSlots":1,"returnSlots":0},"fun_ensureOnlyVault":{"entryPoint":21223,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_getSingleInputArrayAndTokenIndex":{"entryPoint":21584,"id":18579,"parameterSlots":3,"returnSlots":2},"fun_nonReentrantBefore":{"entryPoint":21178,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_returnEth":{"entryPoint":21385,"id":18535,"parameterSlots":1,"returnSlots":0},"fun_saveSender":{"entryPoint":21452,"id":18193,"parameterSlots":1,"returnSlots":1},"fun_sendTokenOut":{"entryPoint":22274,"id":18725,"parameterSlots":4,"returnSlots":0},"fun_sendValue":{"entryPoint":22834,"id":39683,"parameterSlots":2,"returnSlots":0},"fun_swapHook":{"entryPoint":21802,"id":17193,"parameterSlots":1,"returnSlots":3},"fun_toUint160":{"entryPoint":21317,"id":42734,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":22958,"id":39838,"parameterSlots":3,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":20613,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_saveSenderAndManageEth":{"entryPoint":20837,"id":18160,"parameterSlots":2,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":19312,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_bool":{"entryPoint":19590,"id":null,"parameterSlots":1,"returnSlots":1},"write_to_memory_enum_AddLiquidityKind":{"entryPoint":19809,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_enum_RemoveLiquidityKind":{"entryPoint":20264,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"18063":[{"length":32,"start":1239},{"length":32,"start":2440},{"length":32,"start":3004},{"length":32,"start":4357},{"length":32,"start":8964},{"length":32,"start":11492},{"length":32,"start":20969},{"length":32,"start":21457}],"18073":[{"length":32,"start":20851},{"length":32,"start":21394}],"18092":[{"length":32,"start":34},{"length":32,"start":6138},{"length":32,"start":6470},{"length":32,"start":7499},{"length":32,"start":7915},{"length":32,"start":8580},{"length":32,"start":9472},{"length":32,"start":10223},{"length":32,"start":15924},{"length":32,"start":16631},{"length":32,"start":22442},{"length":32,"start":22785}],"18095":[{"length":32,"start":8213},{"length":32,"start":9890},{"length":32,"start":13279},{"length":32,"start":13537},{"length":32,"start":16297}],"27649":[{"length":32,"start":767},{"length":32,"start":1142},{"length":32,"start":1540},{"length":32,"start":1940},{"length":32,"start":2344},{"length":32,"start":2949},{"length":32,"start":3369},{"length":32,"start":3707},{"length":32,"start":3987},{"length":32,"start":4763},{"length":32,"start":4985},{"length":32,"start":5723},{"length":32,"start":7006},{"length":32,"start":7326},{"length":32,"start":7603},{"length":32,"start":8249},{"length":32,"start":8674},{"length":32,"start":9054},{"length":32,"start":11047},{"length":32,"start":11396},{"length":32,"start":11827},{"length":32,"start":12032},{"length":32,"start":12491},{"length":32,"start":14727},{"length":32,"start":15364},{"length":32,"start":15497},{"length":32,"start":17292},{"length":32,"start":21233},{"length":32,"start":21662},{"length":32,"start":22110},{"length":32,"start":22306},{"length":32,"start":22631}]},"linkReferences":{},"object":"60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c8063026b3d95146141b9578063086fad6614613c6057806308c0479314613b425780630ca078ec14613aaa5780630f71088814613969578063175d44081461388a57806319c6989f1461323d5780631d56798d146130a257806323b3924114612ea05780633ebc54e514612d23578063452db95214612b9f5780635168275014612a8c57806353d0bb98146129d757806354fd4d501461289a5780635b343791146123355780635e01eb5a146122f05780635f9815ff146121ad57806368a24fe014611cdf578063724dba3314611bc657806372657d1714611a7b578063750283bc146119fe5780637b03c7ba1461163257806382bf2b241461155e57806382cd54fb1461131657806394e86ef81461118b5780639de9051814610f6c578063ac9650d814610f28578063b037ed3614610d97578063b24bd57114610c4d578063be5ae84114610bf8578063bf6ee3fd14610a5f578063c08bc851146109c7578063c330c7be14610800578063da001f7d1461066f578063e7326def1461051e578063ecb2182c146103805763efd85f140361000e573461037c5761021b36614614565b6102236152e7565b6001600160a01b039061023860208201614b70565b61024182614b70565b9261024f6040840184614b84565b9093608081013593600585101561037c57836102ba6102fb966060856102a55f9c9b61029599878f9e61028860c06102c19d0187614bd8565b9a909b6040519e8f6144d5565b168d521660208c0152369161452c565b60408901520135606087015260808601614d61565b36916145c3565b60a08201526040519485809481937f4af29ec400000000000000000000000000000000000000000000000000000000835260048301615099565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371575f905f925f91610347575b506103439060405193849384614708565b0390f35b9050610343925061036a91503d805f833e61036281836144f1565b810190614e24565b9092610332565b6040513d5f823e3d90fd5b5f80fd5b6104366103af5f6104288161047261039736614a6e565b97939a92999094916103a8336153cc565b9a83615450565b9790946001600160a01b039b8c96604051946103ca86614488565b33865260209e8f9116908601526040850152606084015260016080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008c84015260248301614f41565b03601f1981018352826144f1565b6040519586809481937f48c894910000000000000000000000000000000000000000000000000000000083528b600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610371576104c5926104bd915f916104fc575b50858082518301019101614f9f565b509050615085565b51906104d4575b604051908152f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d6104cc565b61051891503d805f833e61051081836144f1565b810190614b4a565b866104ae565b6104286105c45f8061060061054f61053536614a6e565b916105489b959b9a949691939a336153cc565b9a8c615450565b50916001600160a01b03956040519361056785614488565b3385528760209d168d8601526040850152606084015260026080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008b84015260248301614f41565b6040519485809481937f48c894910000000000000000000000000000000000000000000000000000000083528a600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157610646915f91610655575b50838082518301019101614f9f565b5050906104d457604051908152f35b61066991503d805f833e61051081836144f1565b84610637565b3461037c57608060031936011261037c5761068861441c565b67ffffffffffffffff60243581811161037c576106a990369060040161457a565b906106b261445e565b60643591821161037c576107905f92916104286107546106e06106da879636906004016145f9565b936153cc565b966001600160a01b0393604051916106f783614488565b3083528560209b168b8401526040830152866060830152600160808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008b84015260248301614da7565b6040519485809481937fedfa35680000000000000000000000000000000000000000000000000000000083528a600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371576107d6915f916107e6575b50838082518301019101614e24565b509190506104d457604051908152f35b6107fa91503d805f833e61051081836144f1565b846107c7565b3461037c5760a060031936011261037c5761081961441c565b67ffffffffffffffff60443581811161037c5761083a90369060040161457a565b91610843614432565b9160843590811161037c575f936104286108e7869461087261086c6109249636906004016145f9565b976153cc565b966001600160a01b0394856040519361088a85614488565b30855216602084015260408301526024356060830152600360808301528660a083015260c08201526040519283917fb24bd57100000000000000000000000000000000000000000000000000000000602084015260248301614f41565b6040519586809481937fedfa35680000000000000000000000000000000000000000000000000000000083526020600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19182156103715761034392610970915f916109ad575b5060208082518301019101614f9f565b90939192610985575b60405193849384614a43565b5f7f00000000000000000000000000000000000000000000000000000000000000005d610979565b6109c191503d805f833e61051081836144f1565b84610960565b6104286105c45f806107906109db36614679565b6109eb99939198929499336153cc565b986001600160a01b039560405193610a0285614488565b3385528760209d168d8601526040850152606084015260016080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008b84015260248301614da7565b608060031936011261037c57610a7361441c565b67ffffffffffffffff9060243582811161037c57610a9590369060040161457a565b906044359283151580940361037c5760643590811161037c575f92610428610b448594610ac9610b819536906004016145f9565b610ad2336153cc565b986001600160a01b03958660405194610aea86614488565b33865216602085015260408401528760608401526003608084015260a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301614da7565b6040519485809481937f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157610bde575b50610bb957005b5f7f00000000000000000000000000000000000000000000000000000000000000005d005b610bf1903d805f833e61051081836144f1565b5081610bb2565b3461037c576020610c20610c0b36614997565b610c136152ba565b610c1b6152e7565b61552a565b50505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b3461037c57610c5b36614614565b610c636152e7565b6001600160a01b03610c7760208301614b70565b610c8083614b70565b91610c8e6040850185614b84565b9490608082013593600485101561037c57836102ba610d2596610cdd610ceb955f9b606089878f9e61028860c0610cc69e0184614bd8565b168d521660208c0152013560408a0152369161452c565b606087015260808601614f28565b60a08201526040519485809481937f2145789700000000000000000000000000000000000000000000000000000000835260048301615109565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371575f905f925f91610d6d575b506103439060405193849384614a43565b90506103439250610d9091503d805f833e610d8881836144f1565b810190614f9f565b9092610d5c565b3461037c57604060031936011261037c57610db061441c565b6001600160a01b0360405190806020937f5f9815ff000000000000000000000000000000000000000000000000000000008585015216602483015230604483015260243560648301526064825260a082019082821067ffffffffffffffff831117610efb57815f91816040527fedfa35680000000000000000000000000000000000000000000000000000000082528560a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6087610e7660c48201826146e3565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af190811561037157610ebf925f92610ed4575b5050828082518301019101614d3b565b90610343604051928284938452830190614646565b610ef4925060a0903d90815f853e610eec82856144f1565b010190614b4a565b8380610eaf565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b602060031936011261037c5760043567ffffffffffffffff811161037c57610f60610f5a6103439236906004016147ef565b90615165565b6040519182918261484e565b3461037c57610f86610f7d36614731565b929193906153cc565b916001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691604051937fca4f280300000000000000000000000000000000000000000000000000000000855216928360048201525f81602481865afa908115610371575f91611169575b50519461100586614ef7565b955f5b8181106111445750505f926104286110868886956110c2956040519261102d84614488565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008a84015260248301614da7565b6040519485809481937fedfa356800000000000000000000000000000000000000000000000000000000835289600484015260248301906146e3565b03925af18015610371576110e6915f9161112a575b50828082518301019101614e24565b505091611102575b610343604051928284938452830190614646565b5f7f00000000000000000000000000000000000000000000000000000000000000005d6110ee565b61113e91503d805f833e61051081836144f1565b846110d7565b806fffffffffffffffffffffffffffffffff6111626001938b615085565b5201611008565b61118591503d805f833e61117d81836144f1565b810190614e6d565b86610ff9565b611194366149ca565b949095939193336111a4906153cc565b97604051996111b28b6144b8565b338b5260208b01600190526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e086015215156101008501523690611209926145c3565b6101208301526040517f68a24fe00000000000000000000000000000000000000000000000000000000060208201529182906112489060248301614ff4565b03601f198101835261125a90836144f1565b60405180927f48c89491000000000000000000000000000000000000000000000000000000008252600482016020905260248201611297916146e3565b03827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691815a5f948591f1918215610371575f926112fa575b5060208280518101031261037c57602080920151906104d457604051908152f35b61130f9192503d805f833e61051081836144f1565b90826112d9565b3461037c57608060031936011261037c5761132f61441c565b611337614448565b906064359067ffffffffffffffff821161037c5761135c6113d292369060040161457a565b906113656152ba565b61136d6152e7565b6001600160a01b035f817f00000000000000000000000000000000000000000000000000000000000000001693604051809681927fa07d60400000000000000000000000000000000000000000000000000000000083526044358a8860048601614cab565b038183875af1938415610371575f9461153a575b5080604051927fca4f28030000000000000000000000000000000000000000000000000000000084521660048301525f82602481865afa918215610371575f9261151e575b505f5b82518110156114da576114418186615085565b519081611453575b600191500161142e565b8261145e8286615085565b5116853b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908816602482015260448101929092525f8260648183895af1918215610371576001926114cb575b50611449565b6114d4906144a4565b876114c5565b610343856114e788615389565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190614646565b6115339192503d805f833e61117d81836144f1565b908561142b565b6115579194503d805f833e61154f81836144f1565b810190614d3b565b92856113e6565b5f610428816109246115f56115723661492e565b90611582989492959398336153cc565b986001600160a01b0396876040519561159a87614488565b3387521660208601526040850152606084015260036080840152151560a083015260c08201526040519283917f7b03c7ba00000000000000000000000000000000000000000000000000000000602084015260248301614f41565b6040519586809481937f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906146e3565b3461037c5761164036614614565b6116486152ba565b6116506152e7565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016602083019161168983614b70565b9061169385614b70565b916116a16040870187614b84565b919093608088013591600483101561037c57846102ba610cc694610cdd611711995f9860608f876116d99a61028860c0840184614bd8565b60a0820152604051809481927f2145789700000000000000000000000000000000000000000000000000000000835260048301615109565b038183875af1918215610371575f945f915f946119d7575b5061173390614b70565b9282604051947fca4f28030000000000000000000000000000000000000000000000000000000086521660048501526024915f85602481895afa948515610371575f956119bb575b50909560a0880191905f5b8651811015611976576117998184615085565b5190811561196d57866117ac828a615085565b51166117b786614c86565b80611942575b156118c05750883b1561037c57886040517fae6393290000000000000000000000000000000000000000000000000000000081525f81606481838d7f000000000000000000000000000000000000000000000000000000000000000016968760048401528d30908401528960448401525af18015610371576118b1575b50803b1561037c575f809188604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528860048401525af192831561037157886118968e61189c946001976118a2575b50614b70565b16615932565b01611786565b6118ab906144a4565b5f611890565b6118ba906144a4565b8c61183a565b6118c98c614b70565b8a3b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260448101929092525f82606481838d5af191821561037157600192611933575b5061189c565b61193c906144a4565b8b61192d565b50877f00000000000000000000000000000000000000000000000000000000000000001681146117bd565b6001915061189c565b506103438861198c6119878c614b70565b615389565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384614a43565b6119d09195503d805f833e61117d81836144f1565b938861177b565b90935061173395506119f391503d805f833e610d8881836144f1565b919590919390611729565b611a07366149ca565b94909593919333611a17906153cc565b9760405199611a258b6144b8565b338b5260208b015f90526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e086015215156101008501523690611209926145c3565b60c060031936011261037c57611a8f61441c565b611a97614448565b611a9f614598565b60a4359067ffffffffffffffff821161037c575f611b5a611ac5829436906004016145f9565b92610428610436611ae3611ad8336153cc565b98604435908b615450565b966001600160a01b039460405192611afa84614488565b3384528660209d168d8501526040840152606435606084015260026080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008c84015260248301614da7565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610371576104c592611ba5915f91611bac575b50858082518301019101614e24565b5050615085565b611bc091503d805f833e61051081836144f1565b86611b96565b610428611c5e5f80611c9a611bda36614679565b611beb9993919998929498336153cc565b996001600160a01b039560405193611c0285614488565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008a84015260248301614da7565b6040519485809481937f48c8949100000000000000000000000000000000000000000000000000000000835289600484015260248301906146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610371576110e6915f9161112a5750828082518301019101614e24565b3461037c57611ced36614997565b611cf56152ba565b611cfd6152e7565b611d068161552a565b611d14606085939501614b70565b90611d1e83614b70565b94610100840195611d2e87614c86565b80612178575b15611ff55750804710611fcd576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008181169291833b1561037c576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048187895af1801561037157611fbe575b507f0000000000000000000000000000000000000000000000000000000000000000169060405193611e445f80602097888101907fa9059cbb000000000000000000000000000000000000000000000000000000008252611e2f816104288b8b60248401602090939291936001600160a01b0360408201951681520152565b519082865af1611e3d61540e565b90836159ae565b805190868215159283611fa5575b505050611f7a57506040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0391909116600482015260248101929092528290829060449082905f905af1801561037157611f51575b5050602094611ee0915b611ec485614b70565b91611eda611ed460808801614b70565b91614c86565b92615702565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016911614611f3f575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b611987611f4b91614b70565b82611f13565b813d8311611f73575b611f6481836144f1565b8101031261037c578580611eb1565b503d611f5a565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b611fb59350820181019101614c93565b158b8681611e52565b611fc7906144a4565b89611db0565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b81612009575b5050602094611ee091611ebb565b6001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691807f0000000000000000000000000000000000000000000000000000000000000000169161206385615345565b93803b1561037c576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015294821660448601529187161660648401525f908390608490829084905af1908115610371575f9360209361212993612169575b506040519485809481937f15afd4090000000000000000000000000000000000000000000000000000000083528a60048401602090939291936001600160a01b0360408201951681520152565b03925af180156103715761213e575b80611ffb565b602090813d8311612162575b61215481836144f1565b8101031261037c5785612138565b503d61214a565b612172906144a4565b8a6120dc565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690851614611d34565b3461037c57606060031936011261037c576121c661441c565b6121ce614448565b6121d66152e7565b6001600160a01b0390817f000000000000000000000000000000000000000000000000000000000000000016604051927fca4f2803000000000000000000000000000000000000000000000000000000008452841660048401525f83602481845afa938415610371575f61225761229296829683916122d6575b5051614ef7565b93604051968795869485937fa07d60400000000000000000000000000000000000000000000000000000000085526044359160048601614cab565b03925af1801561037157610343915f916122bc575b50604051918291602083526020830190614646565b6122d091503d805f833e61154f81836144f1565b826122a7565b6122ea91503d8085833e61117d81836144f1565b88612250565b3461037c575f60031936011261037c5760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b3461037c5761234336614614565b61234b6152ba565b6123536152e7565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000166020918284019361238e85614b70565b9461239882614b70565b956123a66040840184614b84565b919097608085013591600583101561037c57866102ba6123ea946123f96124499d5f988e86612411996123dd8f60c0810190614bd8565b99909a6040519d8e6144d5565b168c5216908a0152369161452c565b60408701526060890135606087015260808601614d61565b60a0820152604051809881927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301615099565b038183885af1918215610371575f915f975f94612871575b5061246b90614b70565b84604051917fca4f28030000000000000000000000000000000000000000000000000000000083521660048201525f81602481895afa908115610371575f91612857575b50929660a0820193905f5b825181101561281657866124ce8285615085565b51166124da8287615085565b519081156127a9576124eb88614c86565b806127eb575b1561269e5750804710611fcd577f000000000000000000000000000000000000000000000000000000000000000088811691823b1561037c576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af18015610371576125ba948e92849261268f575b508d5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af19182156103715761261b938d93612664575b5060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af1908115610371578a9161263b575b50506001905b016124ba565b813d831161265d575b61264e81836144f1565b8101031261037c57888b61262f565b503d612644565b61268390843d8611612688575b61267b81836144f1565b810190614c93565b6125d0565b503d612671565b612698906144a4565b5f61256c565b90887f000000000000000000000000000000000000000000000000000000000000000016906126cc87614b70565b6126d582615345565b833b1561037c576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201528d831660248201529082166044820152908416606482015292915f908490608490829084905af191821561037157612795938d936127dc575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af1908115610371578a916127b3575b5050600190612635565b813d83116127d5575b6127c681836144f1565b8101031261037c57888b6127a9565b503d6127bc565b6127e5906144a4565b8e6125d0565b50887f00000000000000000000000000000000000000000000000000000000000000001681146124f1565b50836103438a61282861198787614b70565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384614708565b61286b91503d805f833e61117d81836144f1565b886124af565b90935061288e91975061246b92503d805f833e61036281836144f1565b97919290979390612461565b3461037c575f60031936011261037c576040515f80549060018260011c91600184169182156129cd575b60209485851084146129a05785879486865291825f14612962575050600114612909575b506128f5925003836144f1565b6103436040519282849384528301906146e3565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061294a5750506128f59350820101856128e8565b80548389018501528794508693909201918101612933565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858201526128f595151560051b85010192508791506128e89050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f16926128c4565b3461037c57612a08612a015f806106006107546104286129f6366148cf565b95939a9299906153cc565b988a615450565b506001600160a01b039360405191612a1f83614488565b3083528560209b168b84015260408301526fffffffffffffffffffffffffffffffff6060830152600260808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008b84015260248301614f41565b610428611c5e5f80612b23612aa03661492e565b612ab099939498929199336153cc565b996001600160a01b039560405193612ac785614488565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008a84015260248301614f41565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157612b69915f91612b85575b50828082518301019101614f9f565b5092905061110257610343604051928284938452830190614646565b612b9991503d805f833e61051081836144f1565b84612b5a565b3461037c5760a060031936011261037c57612bb861441c565b67ffffffffffffffff60243581811161037c57612bd990369060040161457a565b91612be2614432565b9160843590811161037c575f936104286108e78694612c0b61086c612c809636906004016145f9565b966001600160a01b03948560405193612c2385614488565b30855216602084015260408301526044356060830152600460808301528660a083015260c08201526040519283917fefd85f1400000000000000000000000000000000000000000000000000000000602084015260248301614da7565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19182156103715761034392612ccc915f91612d09575b5060208082518301019101614e24565b90939192612ce1575b60405193849384614708565b5f7f00000000000000000000000000000000000000000000000000000000000000005d612cd5565b612d1d91503d805f833e61051081836144f1565b84612cbc565b3461037c57612d3136614783565b90612d3f90949392946153cc565b936001600160a01b0380938160405196612d58886144b8565b3388528160209a8b8a015f905216604089015216606087015216608085015260a084015260c083015f905260e083016fffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae8410000000000000000000000000000000000000000000000000000000090526024820190612de191614ff4565b03601f1981018352612df390836144f1565b6040518080937fedfa356800000000000000000000000000000000000000000000000000000000825286600483015260248201612e2f916146e3565b03917f00000000000000000000000000000000000000000000000000000000000000001691815a5f948591f1908115610371575f91612e86575b50828180518101031261037c57820151906104d457604051908152f35b612e9a91503d805f833e61051081836144f1565b83612e69565b3461037c5760a060031936011261037c57612eb961441c565b612ec161445e565b90612eca614432565b60843567ffffffffffffffff811161037c57612eed612ef39136906004016145f9565b916153cc565b916001600160a01b0391827f0000000000000000000000000000000000000000000000000000000000000000169280604051937fc9c1661b0000000000000000000000000000000000000000000000000000000085521695866004850152166024830152604082604481865afa918215610371575f905f93613063575b505f93610428612fff8694612f8761303b95614ef7565b906001612f948984615085565b5260405191612fa283614488565b30835260209b8c84015260408301526024356060830152600160808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008c84015260248301614f41565b6040519586809481937fedfa35680000000000000000000000000000000000000000000000000000000083528b600484015260248301906146e3565b03925af1918215610371576104c5926104bd915f916104fc5750858082518301019101614f9f565b925050916040823d60401161309a575b81613080604093836144f1565b8101031261037c578151602090920151909290915f612f70565b3d9150613073565b3461037c576130be6130b3366148cf565b9294909391936153cc565b926001600160a01b0392837f0000000000000000000000000000000000000000000000000000000000000000169380604051947fc9c1661b0000000000000000000000000000000000000000000000000000000086521696876004860152166024840152604083604481875afa928315610371575f905f94613200575b5093610428612fff5f96946131d8946131548997614ef7565b916fffffffffffffffffffffffffffffffff6131708a85615085565b526040519261317e84614488565b30845260209c8d85015260408401526060830152600260808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008c84015260248301614da7565b03925af1918215610371576104c592611ba5915f91611bac5750858082518301019101614e24565b9350506040833d604011613235575b8161321c604093836144f1565b8101031261037c5782516020909301519261042861313b565b3d915061320f565b60a060031936011261037c5767ffffffffffffffff6004351161037c5736602360043501121561037c5767ffffffffffffffff600435600401351161037c5736602460c0600435600401350260043501011161037c5760243567ffffffffffffffff811161037c576132b39036906004016147ef565b67ffffffffffffffff6044351161037c5760606003196044353603011261037c5760643567ffffffffffffffff811161037c576132f4903690600401614820565b60843567ffffffffffffffff811161037c576133149036906004016147ef565b94909361331f6152ba565b806004356004013503613862575f5b6004356004013581106135af5750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030182121561037c57816044350160048101359067ffffffffffffffff821161037c5760248260071b360391011361037c576133d2575b610343610f6086865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d615165565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b1561037c57604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff60048301351161037c57600482013560071b3603851361037c5760606064890152600482013590529192869260e484019291905f905b600481013582106135315750505082915f946134d4926001600160a01b036134b2602460443501614474565b16608486015260448035013560a4860152600319858403016044860152614c29565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156103715761034393610f6093613522575b8294508193506133a2565b61352b906144a4565b84613517565b9195945091926001600160a01b0361354887614474565b168152602080870135916001600160a01b03831680930361037c576004926001928201526135786040890161543d565b65ffffffffffff809116604083015261359360608a0161543d565b1660608201526080809101970193019050889495939291613486565b6135bd6102ba8284866152a3565b60405180606081011067ffffffffffffffff606083011117610efb57606081016040525f81526020915f838301525f60408301528281015190606060408201519101515f1a91835283830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc818502600435013603011261037c576040519061364d826144d5565b613660602460c086026004350101614474565b808352613676604460c087026004350101614474565b90818585015261368f606460c088026004350101614474565b60408581019190915260043560c08802016084810135606087015260a4810135608087015260c4013560a086015283015183519386015160ff91909116926001600160a01b0383163b1561037c575f6001600160a01b03809460e4948b98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af19081613853575b506138495761376c61540e565b906001600160a01b0381511690836001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610371575f92613819575b5060600151036137e45750506001905b0161332e565b8051156137f15780519101fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091508381813d8311613842575b61383181836144f1565b8101031261037c57519060606137ce565b503d613827565b50506001906137de565b61385c906144a4565b8a61375f565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461037c5761389836614783565b906138a690949392946153cc565b936001600160a01b03809381604051966138bf886144b8565b3388528160209a8b8a016001905216604089015216606087015216608085015260a084015260c083016fffffffffffffffffffffffffffffffff905260e083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae8410000000000000000000000000000000000000000000000000000000090526024820190612de191614ff4565b3461037c5761397a610f7d36614731565b926001600160a01b0392837f00000000000000000000000000000000000000000000000000000000000000001693604051937fca4f280300000000000000000000000000000000000000000000000000000000855216938460048501525f84602481845afa938415610371576110865f9594613a6d94613a068897610428958991613a90575051614ef7565b9160405192613a1484614488565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008a84015260248301614f41565b03925af1801561037157612b69915f91612b855750828082518301019101614f9f565b613aa491503d808b833e61117d81836144f1565b8c612250565b5f61042881612c806115f5613abe36614679565b90613acf98949298959395336153cc565b986001600160a01b03968760405195613ae787614488565b3387521660208601526040850152606084015260046080840152151560a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301614da7565b606060031936011261037c57613b5661441c565b60443567ffffffffffffffff811161037c575f610428613bbd613b80613bf794369060040161457a565b6040519283916020977f82cd54fb000000000000000000000000000000000000000000000000000000008985015260243590339060248601614cab565b604051809381927f48c8949100000000000000000000000000000000000000000000000000000000835286600484015260248301906146e3565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561037157610ebf915f91613c46575b50828082518301019101614d3b565b613c5a91503d805f833e61051081836144f1565b83613c37565b3461037c57613c6e36614614565b613c766152ba565b613c7e6152e7565b6001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690613cb660208401614b70565b92613cc081614b70565b906040810194613cd08683614b84565b91613cde6060850185614b84565b92909184613cef60c0880188614bd8565b9690928a6040519a7fba8a2be0000000000000000000000000000000000000000000000000000000008c528160c48d01931660048d01521660248b015260c060448b01525260e4880192905f5b818110614198575050506003198783030160648801528382527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841161037c5760209485889594613daf94879660051b8092848301370160808901356084870152601c8682030160a48701520191614c29565b03815f885af1918215610371575f92614164575b50909360a0820191905f5b613dd88284614b84565b905081101561412a57613dfd613df882613df28587614b84565b90614c49565b614b70565b613e0e82613df26060870187614b84565b3590811561412057613e1f86614c86565b806140f3575b15613fa65750804710611fcd577f000000000000000000000000000000000000000000000000000000000000000086811691823b1561037c576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af1801561037157613eef946020928492613f97575b508b5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af191821561037157613f5093602093612664575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af1801561037157613f6c575b506001905b01613dce565b602090813d8311613f90575b613f8281836144f1565b8101031261037c5787613f61565b503d613f78565b613fa0906144a4565b8d613ea1565b867f00000000000000000000000000000000000000000000000000000000000000001691613fd386614b70565b92613fdd82615345565b813b1561037c576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0395861660048201528b861660248201529085166044820152838a1690941660648501525f908490608490829084905af19182156103715761409f936020936140e4575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af18015610371576140b9575b50600190613f66565b602090813d83116140dd575b6140cf81836144f1565b8101031261037c57876140b0565b503d6140c5565b6140ed906144a4565b8b6125d0565b50867f00000000000000000000000000000000000000000000000000000000000000001687821614613e25565b5050600190613f66565b60208761413961198786614b70565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b9091506020813d602011614190575b81614180602093836144f1565b8101031261037c57519085613dc3565b3d9150614173565b9091936020806001928d6141ab89614474565b168152019501929101613d3c565b60c060031936011261037c576141cd61441c565b60243567ffffffffffffffff9182821161037c573660238301121561037c578160040135916141fb83614514565b9061420960405192836144f1565b83825260209360248584019160051b8301019136831161037c576024869101915b838310614404575050505060443584811161037c5761424d90369060040161457a565b614255614598565b9460a43590811161037c5761426e9036906004016145f9565b6001600160a01b03956040519261428484614488565b338452878785019616865260408401948552606084019081526080840194606435865260a08501921515835260c0850193845288604051977f086fad66000000000000000000000000000000000000000000000000000000008a8a01528960248a0152816101248a0197511660448a015251166064880152519360e0608488015284518091528761014488019501905f5b8181106143ee575050875f806143888c8b611c5e816104288e8e8e8e6143688f51937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc94858983030160a48a0152614ad1565b935160c487015251151560e48601525190848303016101048501526146e3565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1908115610371575f916143d4575b50818180518101031261037c57810151604051908152f35b6143e891503d805f833e61051081836144f1565b826143bc565b82518b1687529589019591890191600101614315565b819061440f84614474565b815201910190859061422a565b600435906001600160a01b038216820361037c57565b606435906001600160a01b038216820361037c57565b602435906001600160a01b038216820361037c57565b604435906001600160a01b038216820361037c57565b35906001600160a01b038216820361037c57565b60e0810190811067ffffffffffffffff821117610efb57604052565b67ffffffffffffffff8111610efb57604052565b610140810190811067ffffffffffffffff821117610efb57604052565b60c0810190811067ffffffffffffffff821117610efb57604052565b90601f601f19910116810190811067ffffffffffffffff821117610efb57604052565b67ffffffffffffffff8111610efb5760051b60200190565b929161453782614514565b9161454560405193846144f1565b829481845260208094019160051b810192831161037c57905b82821061456b5750505050565b8135815290830190830161455e565b9080601f8301121561037c578160206145959335910161452c565b90565b60843590811515820361037c57565b67ffffffffffffffff8111610efb57601f01601f191660200190565b9291926145cf826145a7565b916145dd60405193846144f1565b82948184528183011161037c578281602093845f960137010152565b9080601f8301121561037c57816020614595933591016145c3565b6003199060208282011261037c576004359167ffffffffffffffff831161037c578260e09203011261037c5760040190565b9081518082526020808093019301915f5b828110614665575050505090565b835185529381019392810192600101614657565b9060a060031983011261037c576004356001600160a01b038116810361037c579167ffffffffffffffff9060243582811161037c57816146bb9160040161457a565b9260443592606435801515810361037c579260843591821161037c57614595916004016145f9565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b61471e6145959492606083526060830190614646565b92602082015260408184039101526146e3565b608060031982011261037c576001600160a01b0390600435828116810361037c579260243592604435908116810361037c57916064359067ffffffffffffffff821161037c57614595916004016145f9565b60c060031982011261037c576001600160a01b0391600435838116810361037c5792602435818116810361037c5792604435828116810361037c579260643592608435908116810361037c579160a4359067ffffffffffffffff821161037c57614595916004016145f9565b9181601f8401121561037c5782359167ffffffffffffffff831161037c576020808501948460051b01011161037c57565b9181601f8401121561037c5782359167ffffffffffffffff831161037c576020838186019501011161037c57565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106148835750505050505090565b90919293949584806148bf837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a516146e3565b9801930193019194939290614873565b9060a060031983011261037c576001600160a01b03600435818116810361037c5792602435828116810361037c579260443592606435908116810361037c57916084359067ffffffffffffffff821161037c57614595916004016145f9565b60a060031982011261037c576004356001600160a01b038116810361037c57916024359167ffffffffffffffff9160443583811161037c57826149739160040161457a565b92606435801515810361037c579260843591821161037c57614595916004016145f9565b6003199060208282011261037c576004359167ffffffffffffffff831161037c57826101409203011261037c5760040190565b61010060031982011261037c576001600160a01b0390600435828116810361037c5792602435838116810361037c5792604435908116810361037c5791606435916084359160a4359160c435801515810361037c579160e4359067ffffffffffffffff821161037c57614a3f91600401614820565b9091565b91614a609061459594928452606060208501526060840190614646565b9160408184039101526146e3565b60c060031982011261037c576001600160a01b0390600435828116810361037c579260243592604435908116810361037c579160643591608435801515810361037c579160a4359067ffffffffffffffff821161037c57614595916004016145f9565b9081518082526020808093019301915f5b828110614af0575050505090565b835185529381019392810192600101614ae2565b81601f8201121561037c57805190614b1b826145a7565b92614b2960405194856144f1565b8284526020838301011161037c57815f9260208093018386015e8301015290565b9060208282031261037c57815167ffffffffffffffff811161037c576145959201614b04565b356001600160a01b038116810361037c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561037c570180359067ffffffffffffffff821161037c57602001918160051b3603831361037c57565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561037c570180359067ffffffffffffffff821161037c5760200191813603831361037c57565b601f8260209493601f1993818652868601375f8582860101520116010190565b9190811015614c595760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b35801515810361037c5790565b9081602091031261037c5751801515810361037c5790565b909261459594936080936001600160a01b03809216845216602083015260408201528160608201520190614646565b9080601f8301121561037c57815190602091614cf581614514565b93614d0360405195866144f1565b81855260208086019260051b82010192831161037c57602001905b828210614d2c575050505090565b81518152908301908301614d1e565b9060208282031261037c57815167ffffffffffffffff811161037c576145959201614cda565b6005821015614d6d5752565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b906005821015614d6d5752565b9061459591602081526001600160a01b03808351166020830152602083015116604082015260c0614de8604084015160e06060850152610100840190614ad1565b9260608101516080840152614e05608082015160a0850190614d9a565b60a081015115158284015201519060e0601f19828503019101526146e3565b909160608284031261037c5781519167ffffffffffffffff9283811161037c5784614e50918301614cda565b93602082015193604083015190811161037c576145959201614b04565b602090818184031261037c5780519067ffffffffffffffff821161037c57019180601f8401121561037c578251614ea381614514565b93614eb160405195866144f1565b818552838086019260051b82010192831161037c578301905b828210614ed8575050505090565b81516001600160a01b038116810361037c578152908301908301614eca565b90614f0182614514565b614f0e60405191826144f1565b828152601f19614f1e8294614514565b0190602036910137565b6004821015614d6d5752565b906004821015614d6d5752565b9061459591602081526001600160a01b03808351166020830152602083015116604082015260c0614f82604084015160e06060850152610100840190614ad1565b9260608101516080840152614e05608082015160a0850190614f34565b9160608383031261037c5782519260208101519267ffffffffffffffff9384811161037c5781614fd0918401614cda565b93604083015190811161037c576145959201614b04565b906002821015614d6d5752565b61016061459592602083526001600160a01b0380825116602085015261502260208301516040860190614fe7565b80604083015116606085015280606083015116608085015260808201511660a084015260a081015160c084015260c081015160e084015260e0810151610100908185015281015190610120911515828501520151916101408082015201906146e3565b8051821015614c595760209160051b010190565b9061459591602081526001600160a01b03808351166020830152602083015116604082015260a06150d9604084015160c0606085015260e0840190614ad1565b92606081015160808401526150f5608082015183850190614d9a565b01519060c0601f19828503019101526146e3565b9061459591602081526001600160a01b0380835116602083015260208301511660408201526040820151606082015260a0615153606084015160c0608085015260e0840190614ad1565b926150f5608082015183850190614f34565b9190615170336153cc565b907f000000000000000000000000000000000000000000000000000000000000000093845c61527b576001906001865d6151a983614514565b926151b760405194856144f1565b808452601f196151c682614514565b015f5b81811061526a5750505f5b8181106152215750505050905f61521692945d7f0000000000000000000000000000000000000000000000000000000000000000805c91615218575b50615389565b565b5f905d5f615210565b8061524e5f806152366102ba8996888a6152a3565b602081519101305af461524761540e565b90306159ae565b6152588288615085565b526152638187615085565b50016151d4565b8060606020809389010152016151c9565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b90821015614c5957614a3f9160051b810190614bd8565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c61527b576001905d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361531957565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6001600160a01b0390818111615359571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b4780156153c8577f00000000000000000000000000000000000000000000000000000000000000005c6153c8576001600160a01b036152169216615932565b5050565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c1615615404575050565b909192505d600190565b3d15615438573d9061541f826145a7565b9161542d60405193846144f1565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361037c57565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa938415615520575f935f956154e9575b50506154e66154df8594614ef7565b9485615085565b52565b809295508194503d8311615519575b61550281836144f1565b8101031261037c5760208251920151925f806154d0565b503d6154f8565b83513d5f823e3d90fd5b60e081013542116156da576001600160a01b03602082013591600283101561037c5760409261555a828501614b70565b9280606094859384860161556d90614b70565b9561557a60808201614b70565b908461558a610120830183614bd8565b91908c519561559887614488565b8652816020870197168752818d87019b168b52818a870195168552608086019260a0850135845260a087019460c00135855236906155d5926145c3565b9360c08601948552818d519b8c9a8b998a997f2bfb780c000000000000000000000000000000000000000000000000000000008b5260048b016020905260248b0190519061562291614fe7565b5116604489015251166064870152511660848501525160a48401525160c48301525160e4820160e09052610104820161565a916146e3565b03917f0000000000000000000000000000000000000000000000000000000000000000165a905f91f1908115615520575f935f935f9361569d575b505050909192565b92509250809350813d83116156d3575b6156b781836144f1565b8101031261037c578151602083015191909201515f8080615695565b503d6156ad565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f9493831561592a57806158f5575b15615859576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af1801561037157615846575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b156158425781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af180156158375761581f575b5061521693945016615932565b61582986916144a4565b6158335784615812565b8480fd5b6040513d88823e3d90fd5b5080fd5b6158519195506144a4565b5f935f6157a5565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561037c576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af18015610371576158ec5750565b615216906144a4565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614615711565b505050509050565b814710615982575f8080936001600160a01b038294165af161595261540e565b501561595a57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b906159c3575080511561595a57805190602001fd5b81511580615a09575b6159d4575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156159cc56fea2646970667358221220c3e85874e80a6e7776caed62d5c4f9d183ac00aa251e16acd89943cd6ea0fedb64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26B3D95 EQ PUSH2 0x41B9 JUMPI DUP1 PUSH4 0x86FAD66 EQ PUSH2 0x3C60 JUMPI DUP1 PUSH4 0x8C04793 EQ PUSH2 0x3B42 JUMPI DUP1 PUSH4 0xCA078EC EQ PUSH2 0x3AAA JUMPI DUP1 PUSH4 0xF710888 EQ PUSH2 0x3969 JUMPI DUP1 PUSH4 0x175D4408 EQ PUSH2 0x388A JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x323D JUMPI DUP1 PUSH4 0x1D56798D EQ PUSH2 0x30A2 JUMPI DUP1 PUSH4 0x23B39241 EQ PUSH2 0x2EA0 JUMPI DUP1 PUSH4 0x3EBC54E5 EQ PUSH2 0x2D23 JUMPI DUP1 PUSH4 0x452DB952 EQ PUSH2 0x2B9F JUMPI DUP1 PUSH4 0x51682750 EQ PUSH2 0x2A8C JUMPI DUP1 PUSH4 0x53D0BB98 EQ PUSH2 0x29D7 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x289A JUMPI DUP1 PUSH4 0x5B343791 EQ PUSH2 0x2335 JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x22F0 JUMPI DUP1 PUSH4 0x5F9815FF EQ PUSH2 0x21AD JUMPI DUP1 PUSH4 0x68A24FE0 EQ PUSH2 0x1CDF JUMPI DUP1 PUSH4 0x724DBA33 EQ PUSH2 0x1BC6 JUMPI DUP1 PUSH4 0x72657D17 EQ PUSH2 0x1A7B JUMPI DUP1 PUSH4 0x750283BC EQ PUSH2 0x19FE JUMPI DUP1 PUSH4 0x7B03C7BA EQ PUSH2 0x1632 JUMPI DUP1 PUSH4 0x82BF2B24 EQ PUSH2 0x155E JUMPI DUP1 PUSH4 0x82CD54FB EQ PUSH2 0x1316 JUMPI DUP1 PUSH4 0x94E86EF8 EQ PUSH2 0x118B JUMPI DUP1 PUSH4 0x9DE90518 EQ PUSH2 0xF6C JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xF28 JUMPI DUP1 PUSH4 0xB037ED36 EQ PUSH2 0xD97 JUMPI DUP1 PUSH4 0xB24BD571 EQ PUSH2 0xC4D JUMPI DUP1 PUSH4 0xBE5AE841 EQ PUSH2 0xBF8 JUMPI DUP1 PUSH4 0xBF6EE3FD EQ PUSH2 0xA5F JUMPI DUP1 PUSH4 0xC08BC851 EQ PUSH2 0x9C7 JUMPI DUP1 PUSH4 0xC330C7BE EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xDA001F7D EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0xE7326DEF EQ PUSH2 0x51E JUMPI DUP1 PUSH4 0xECB2182C EQ PUSH2 0x380 JUMPI PUSH4 0xEFD85F14 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x21B CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x238 PUSH1 0x20 DUP3 ADD PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x241 DUP3 PUSH2 0x4B70 JUMP JUMPDEST SWAP3 PUSH2 0x24F PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4B84 JUMP JUMPDEST SWAP1 SWAP4 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0x5 DUP6 LT ISZERO PUSH2 0x37C JUMPI DUP4 PUSH2 0x2BA PUSH2 0x2FB SWAP7 PUSH1 0x60 DUP6 PUSH2 0x2A5 PUSH0 SWAP13 SWAP12 PUSH2 0x295 SWAP10 DUP8 DUP16 SWAP15 PUSH2 0x288 PUSH1 0xC0 PUSH2 0x2C1 SWAP14 ADD DUP8 PUSH2 0x4BD8 JUMP JUMPDEST SWAP11 SWAP1 SWAP12 PUSH1 0x40 MLOAD SWAP15 DUP16 PUSH2 0x44D5 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x452C JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MSTORE ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x4D61 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x45C3 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5099 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x347 JUMPI JUMPDEST POP PUSH2 0x343 SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4708 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 POP PUSH2 0x343 SWAP3 POP PUSH2 0x36A SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x362 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4E24 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x332 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x436 PUSH2 0x3AF PUSH0 PUSH2 0x428 DUP2 PUSH2 0x472 PUSH2 0x397 CALLDATASIZE PUSH2 0x4A6E JUMP JUMPDEST SWAP8 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 SWAP5 SWAP2 PUSH2 0x3A8 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP11 DUP4 PUSH2 0x5450 JUMP JUMPDEST SWAP8 SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP12 DUP13 SWAP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x3CA DUP7 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 SWAP15 DUP16 SWAP2 AND SWAP1 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x44F1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x4BD SWAP2 PUSH0 SWAP2 PUSH2 0x4FC JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST POP SWAP1 POP PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x4D4 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x518 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4B4A JUMP JUMPDEST DUP7 PUSH2 0x4AE JUMP JUMPDEST PUSH2 0x428 PUSH2 0x5C4 PUSH0 DUP1 PUSH2 0x600 PUSH2 0x54F PUSH2 0x535 CALLDATASIZE PUSH2 0x4A6E JUMP JUMPDEST SWAP2 PUSH2 0x548 SWAP12 SWAP6 SWAP12 SWAP11 SWAP5 SWAP7 SWAP2 SWAP4 SWAP11 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP11 DUP13 PUSH2 0x5450 JUMP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x567 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x646 SWAP2 PUSH0 SWAP2 PUSH2 0x655 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST POP POP SWAP1 PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x669 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x637 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x688 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x6A9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP1 PUSH2 0x6B2 PUSH2 0x445E JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x790 PUSH0 SWAP3 SWAP2 PUSH2 0x428 PUSH2 0x754 PUSH2 0x6E0 PUSH2 0x6DA DUP8 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP4 PUSH2 0x53CC JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x6F7 DUP4 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP7 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x7D6 SWAP2 PUSH0 SWAP2 PUSH2 0x7E6 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST POP SWAP2 SWAP1 POP PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x7FA SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x7C7 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x819 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x83A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP2 PUSH2 0x843 PUSH2 0x4432 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH0 SWAP4 PUSH2 0x428 PUSH2 0x8E7 DUP7 SWAP5 PUSH2 0x872 PUSH2 0x86C PUSH2 0x924 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP8 PUSH2 0x53CC JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x88A DUP6 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP3 PUSH2 0x970 SWAP2 PUSH0 SWAP2 PUSH2 0x9AD JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x985 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4A43 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x979 JUMP JUMPDEST PUSH2 0x9C1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x960 JUMP JUMPDEST PUSH2 0x428 PUSH2 0x5C4 PUSH0 DUP1 PUSH2 0x790 PUSH2 0x9DB CALLDATASIZE PUSH2 0x4679 JUMP JUMPDEST PUSH2 0x9EB SWAP10 SWAP4 SWAP2 SWAP9 SWAP3 SWAP5 SWAP10 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0xA02 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0xA73 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0xA95 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x37C JUMPI PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH0 SWAP3 PUSH2 0x428 PUSH2 0xB44 DUP6 SWAP5 PUSH2 0xAC9 PUSH2 0xB81 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH2 0xAD2 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xAEA DUP7 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP7 MSTORE AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE DUP8 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0xBDE JUMPI JUMPDEST POP PUSH2 0xBB9 JUMPI STOP JUMPDEST PUSH0 PUSH32 0x0 TSTORE STOP JUMPDEST PUSH2 0xBF1 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST POP DUP2 PUSH2 0xBB2 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x20 PUSH2 0xC20 PUSH2 0xC0B CALLDATASIZE PUSH2 0x4997 JUMP JUMPDEST PUSH2 0xC13 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0xC1B PUSH2 0x52E7 JUMP JUMPDEST PUSH2 0x552A JUMP JUMPDEST POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0xC5B CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0xC63 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC77 PUSH1 0x20 DUP4 ADD PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0xC80 DUP4 PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0xC8E PUSH1 0x40 DUP6 ADD DUP6 PUSH2 0x4B84 JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP4 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x37C JUMPI DUP4 PUSH2 0x2BA PUSH2 0xD25 SWAP7 PUSH2 0xCDD PUSH2 0xCEB SWAP6 PUSH0 SWAP12 PUSH1 0x60 DUP10 DUP8 DUP16 SWAP15 PUSH2 0x288 PUSH1 0xC0 PUSH2 0xCC6 SWAP15 ADD DUP5 PUSH2 0x4BD8 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE ADD CALLDATALOAD PUSH1 0x40 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x452C JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x4F28 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5109 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0xD6D JUMPI JUMPDEST POP PUSH2 0x343 SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4A43 JUMP JUMPDEST SWAP1 POP PUSH2 0x343 SWAP3 POP PUSH2 0xD90 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xD88 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4F9F JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0xD5C JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0xDB0 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x20 SWAP4 PUSH32 0x5F9815FF00000000000000000000000000000000000000000000000000000000 DUP6 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0xEFB JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP6 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0xE76 PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x46E3 JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH2 0xEBF SWAP3 PUSH0 SWAP3 PUSH2 0xED4 JUMPI JUMPDEST POP POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4D3B JUMP JUMPDEST SWAP1 PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0xEF4 SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xEEC DUP3 DUP6 PUSH2 0x44F1 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x4B4A JUMP JUMPDEST DUP4 DUP1 PUSH2 0xEAF JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0xF60 PUSH2 0xF5A PUSH2 0x343 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x47EF JUMP JUMPDEST SWAP1 PUSH2 0x5165 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x484E JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0xF86 PUSH2 0xF7D CALLDATASIZE PUSH2 0x4731 JUMP JUMPDEST SWAP3 SWAP2 SWAP4 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP3 DUP4 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x1169 JUMPI JUMPDEST POP MLOAD SWAP5 PUSH2 0x1005 DUP7 PUSH2 0x4EF7 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1144 JUMPI POP POP PUSH0 SWAP3 PUSH2 0x428 PUSH2 0x1086 DUP9 DUP7 SWAP6 PUSH2 0x10C2 SWAP6 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x102D DUP5 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x10E6 SWAP2 PUSH0 SWAP2 PUSH2 0x112A JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x1102 JUMPI JUMPDEST PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x113E SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x10D7 JUMP JUMPDEST DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1162 PUSH1 0x1 SWAP4 DUP12 PUSH2 0x5085 JUMP JUMPDEST MSTORE ADD PUSH2 0x1008 JUMP JUMPDEST PUSH2 0x1185 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4E6D JUMP JUMPDEST DUP7 PUSH2 0xFF9 JUMP JUMPDEST PUSH2 0x1194 CALLDATASIZE PUSH2 0x49CA JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x11A4 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x11B2 DUP12 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH1 0x1 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1209 SWAP3 PUSH2 0x45C3 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x68A24FE000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH2 0x1248 SWAP1 PUSH1 0x24 DUP4 ADD PUSH2 0x4FF4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x125A SWAP1 DUP4 PUSH2 0x44F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x1297 SWAP2 PUSH2 0x46E3 JUMP JUMPDEST SUB DUP3 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x12FA JUMPI JUMPDEST POP PUSH1 0x20 DUP3 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x37C JUMPI PUSH1 0x20 DUP1 SWAP3 ADD MLOAD SWAP1 PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x130F SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP1 DUP3 PUSH2 0x12D9 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x132F PUSH2 0x441C JUMP JUMPDEST PUSH2 0x1337 PUSH2 0x4448 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x135C PUSH2 0x13D2 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP1 PUSH2 0x1365 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x136D PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH0 DUP2 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x44 CALLDATALOAD DUP11 DUP9 PUSH1 0x4 DUP7 ADD PUSH2 0x4CAB JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP5 PUSH2 0x153A JUMPI JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x151E JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x14DA JUMPI PUSH2 0x1441 DUP2 DUP7 PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 DUP2 PUSH2 0x1453 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x142E JUMP JUMPDEST DUP3 PUSH2 0x145E DUP3 DUP7 PUSH2 0x5085 JUMP JUMPDEST MLOAD AND DUP6 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP10 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x14CB JUMPI JUMPDEST POP PUSH2 0x1449 JUMP JUMPDEST PUSH2 0x14D4 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP8 PUSH2 0x14C5 JUMP JUMPDEST PUSH2 0x343 DUP6 PUSH2 0x14E7 DUP9 PUSH2 0x5389 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0x1533 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP1 DUP6 PUSH2 0x142B JUMP JUMPDEST PUSH2 0x1557 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x154F DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4D3B JUMP JUMPDEST SWAP3 DUP6 PUSH2 0x13E6 JUMP JUMPDEST PUSH0 PUSH2 0x428 DUP2 PUSH2 0x924 PUSH2 0x15F5 PUSH2 0x1572 CALLDATASIZE PUSH2 0x492E JUMP JUMPDEST SWAP1 PUSH2 0x1582 SWAP9 SWAP5 SWAP3 SWAP6 SWAP4 SWAP9 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x159A DUP8 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x1640 CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x1648 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x1650 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD SWAP2 PUSH2 0x1689 DUP4 PUSH2 0x4B70 JUMP JUMPDEST SWAP1 PUSH2 0x1693 DUP6 PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0x16A1 PUSH1 0x40 DUP8 ADD DUP8 PUSH2 0x4B84 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x37C JUMPI DUP5 PUSH2 0x2BA PUSH2 0xCC6 SWAP5 PUSH2 0xCDD PUSH2 0x1711 SWAP10 PUSH0 SWAP9 PUSH1 0x60 DUP16 DUP8 PUSH2 0x16D9 SWAP11 PUSH2 0x288 PUSH1 0xC0 DUP5 ADD DUP5 PUSH2 0x4BD8 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5109 JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP5 PUSH0 SWAP2 PUSH0 SWAP5 PUSH2 0x19D7 JUMPI JUMPDEST POP PUSH2 0x1733 SWAP1 PUSH2 0x4B70 JUMP JUMPDEST SWAP3 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 SWAP2 PUSH0 DUP6 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP6 PUSH2 0x19BB JUMPI JUMPDEST POP SWAP1 SWAP6 PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1976 JUMPI PUSH2 0x1799 DUP2 DUP5 PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x196D JUMPI DUP7 PUSH2 0x17AC DUP3 DUP11 PUSH2 0x5085 JUMP JUMPDEST MLOAD AND PUSH2 0x17B7 DUP7 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x1942 JUMPI JUMPDEST ISZERO PUSH2 0x18C0 JUMPI POP DUP9 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 DUP14 PUSH32 0x0 AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE DUP14 ADDRESS SWAP1 DUP5 ADD MSTORE DUP10 PUSH1 0x44 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x18B1 JUMPI JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH0 DUP1 SWAP2 DUP9 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP9 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x371 JUMPI DUP9 PUSH2 0x1896 DUP15 PUSH2 0x189C SWAP5 PUSH1 0x1 SWAP8 PUSH2 0x18A2 JUMPI JUMPDEST POP PUSH2 0x4B70 JUMP JUMPDEST AND PUSH2 0x5932 JUMP JUMPDEST ADD PUSH2 0x1786 JUMP JUMPDEST PUSH2 0x18AB SWAP1 PUSH2 0x44A4 JUMP JUMPDEST PUSH0 PUSH2 0x1890 JUMP JUMPDEST PUSH2 0x18BA SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP13 PUSH2 0x183A JUMP JUMPDEST PUSH2 0x18C9 DUP13 PUSH2 0x4B70 JUMP JUMPDEST DUP11 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP14 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x1933 JUMPI JUMPDEST POP PUSH2 0x189C JUMP JUMPDEST PUSH2 0x193C SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP12 PUSH2 0x192D JUMP JUMPDEST POP DUP8 PUSH32 0x0 AND DUP2 EQ PUSH2 0x17BD JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x189C JUMP JUMPDEST POP PUSH2 0x343 DUP9 PUSH2 0x198C PUSH2 0x1987 DUP13 PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x5389 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4A43 JUMP JUMPDEST PUSH2 0x19D0 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP4 DUP9 PUSH2 0x177B JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x1733 SWAP6 POP PUSH2 0x19F3 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xD88 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP2 SWAP6 SWAP1 SWAP2 SWAP4 SWAP1 PUSH2 0x1729 JUMP JUMPDEST PUSH2 0x1A07 CALLDATASIZE PUSH2 0x49CA JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x1A17 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x1A25 DUP12 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH0 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1209 SWAP3 PUSH2 0x45C3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x1A8F PUSH2 0x441C JUMP JUMPDEST PUSH2 0x1A97 PUSH2 0x4448 JUMP JUMPDEST PUSH2 0x1A9F PUSH2 0x4598 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH0 PUSH2 0x1B5A PUSH2 0x1AC5 DUP3 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP3 PUSH2 0x428 PUSH2 0x436 PUSH2 0x1AE3 PUSH2 0x1AD8 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x44 CALLDATALOAD SWAP1 DUP12 PUSH2 0x5450 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1AFA DUP5 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP5 MSTORE DUP7 PUSH1 0x20 SWAP14 AND DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x1BA5 SWAP2 PUSH0 SWAP2 PUSH2 0x1BAC JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST POP POP PUSH2 0x5085 JUMP JUMPDEST PUSH2 0x1BC0 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP7 PUSH2 0x1B96 JUMP JUMPDEST PUSH2 0x428 PUSH2 0x1C5E PUSH0 DUP1 PUSH2 0x1C9A PUSH2 0x1BDA CALLDATASIZE PUSH2 0x4679 JUMP JUMPDEST PUSH2 0x1BEB SWAP10 SWAP4 SWAP2 SWAP10 SWAP9 SWAP3 SWAP5 SWAP9 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1C02 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x10E6 SWAP2 PUSH0 SWAP2 PUSH2 0x112A JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x1CED CALLDATASIZE PUSH2 0x4997 JUMP JUMPDEST PUSH2 0x1CF5 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x1CFD PUSH2 0x52E7 JUMP JUMPDEST PUSH2 0x1D06 DUP2 PUSH2 0x552A JUMP JUMPDEST PUSH2 0x1D14 PUSH1 0x60 DUP6 SWAP4 SWAP6 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP1 PUSH2 0x1D1E DUP4 PUSH2 0x4B70 JUMP JUMPDEST SWAP5 PUSH2 0x100 DUP5 ADD SWAP6 PUSH2 0x1D2E DUP8 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x2178 JUMPI JUMPDEST ISZERO PUSH2 0x1FF5 JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x1FCD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 DUP2 AND SWAP3 SWAP2 DUP4 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP8 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x1FBE JUMPI JUMPDEST POP PUSH32 0x0 AND SWAP1 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1E44 PUSH0 DUP1 PUSH1 0x20 SWAP8 DUP9 DUP2 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x1E2F DUP2 PUSH2 0x428 DUP12 DUP12 PUSH1 0x24 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x1E3D PUSH2 0x540E JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x59AE JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP7 DUP3 ISZERO ISZERO SWAP3 DUP4 PUSH2 0x1FA5 JUMPI JUMPDEST POP POP POP PUSH2 0x1F7A JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x1F51 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x1EE0 SWAP2 JUMPDEST PUSH2 0x1EC4 DUP6 PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0x1EDA PUSH2 0x1ED4 PUSH1 0x80 DUP9 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP2 PUSH2 0x4C86 JUMP JUMPDEST SWAP3 PUSH2 0x5702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 AND EQ PUSH2 0x1F3F JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1987 PUSH2 0x1F4B SWAP2 PUSH2 0x4B70 JUMP JUMPDEST DUP3 PUSH2 0x1F13 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1F73 JUMPI JUMPDEST PUSH2 0x1F64 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP6 DUP1 PUSH2 0x1EB1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1F5A JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1FB5 SWAP4 POP DUP3 ADD DUP2 ADD SWAP2 ADD PUSH2 0x4C93 JUMP JUMPDEST ISZERO DUP12 DUP7 DUP2 PUSH2 0x1E52 JUMP JUMPDEST PUSH2 0x1FC7 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP10 PUSH2 0x1DB0 JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x2009 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x1EE0 SWAP2 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x2063 DUP6 PUSH2 0x5345 JUMP JUMPDEST SWAP4 DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP3 AND PUSH1 0x44 DUP7 ADD MSTORE SWAP2 DUP8 AND AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x2129 SWAP4 PUSH2 0x2169 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x213E JUMPI JUMPDEST DUP1 PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2162 JUMPI JUMPDEST PUSH2 0x2154 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP6 PUSH2 0x2138 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x214A JUMP JUMPDEST PUSH2 0x2172 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP11 PUSH2 0x20DC JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP6 AND EQ PUSH2 0x1D34 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x21C6 PUSH2 0x441C JUMP JUMPDEST PUSH2 0x21CE PUSH2 0x4448 JUMP JUMPDEST PUSH2 0x21D6 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP5 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x371 JUMPI PUSH0 PUSH2 0x2257 PUSH2 0x2292 SWAP7 DUP3 SWAP7 DUP4 SWAP2 PUSH2 0x22D6 JUMPI JUMPDEST POP MLOAD PUSH2 0x4EF7 JUMP JUMPDEST SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x4CAB JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP2 PUSH0 SWAP2 PUSH2 0x22BC JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0x22D0 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x154F DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP3 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0x22EA SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP9 PUSH2 0x2250 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x2343 CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x234B PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x2353 PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 SWAP2 DUP3 DUP5 ADD SWAP4 PUSH2 0x238E DUP6 PUSH2 0x4B70 JUMP JUMPDEST SWAP5 PUSH2 0x2398 DUP3 PUSH2 0x4B70 JUMP JUMPDEST SWAP6 PUSH2 0x23A6 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4B84 JUMP JUMPDEST SWAP2 SWAP1 SWAP8 PUSH1 0x80 DUP6 ADD CALLDATALOAD SWAP2 PUSH1 0x5 DUP4 LT ISZERO PUSH2 0x37C JUMPI DUP7 PUSH2 0x2BA PUSH2 0x23EA SWAP5 PUSH2 0x23F9 PUSH2 0x2449 SWAP14 PUSH0 SWAP9 DUP15 DUP7 PUSH2 0x2411 SWAP10 PUSH2 0x23DD DUP16 PUSH1 0xC0 DUP2 ADD SWAP1 PUSH2 0x4BD8 JUMP JUMPDEST SWAP10 SWAP1 SWAP11 PUSH1 0x40 MLOAD SWAP14 DUP15 PUSH2 0x44D5 JUMP JUMPDEST AND DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x452C JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x4D61 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5099 JUMP JUMPDEST SUB DUP2 DUP4 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH0 SWAP8 PUSH0 SWAP5 PUSH2 0x2871 JUMPI JUMPDEST POP PUSH2 0x246B SWAP1 PUSH2 0x4B70 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x2857 JUMPI JUMPDEST POP SWAP3 SWAP7 PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2816 JUMPI DUP7 PUSH2 0x24CE DUP3 DUP6 PUSH2 0x5085 JUMP JUMPDEST MLOAD AND PUSH2 0x24DA DUP3 DUP8 PUSH2 0x5085 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x27A9 JUMPI PUSH2 0x24EB DUP9 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x27EB JUMPI JUMPDEST ISZERO PUSH2 0x269E JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x1FCD JUMPI PUSH32 0x0 DUP9 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x25BA SWAP5 DUP15 SWAP3 DUP5 SWAP3 PUSH2 0x268F JUMPI JUMPDEST POP DUP14 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x261B SWAP4 DUP14 SWAP4 PUSH2 0x2664 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI DUP11 SWAP2 PUSH2 0x263B JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x24BA JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x265D JUMPI JUMPDEST PUSH2 0x264E DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP9 DUP12 PUSH2 0x262F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2644 JUMP JUMPDEST PUSH2 0x2683 SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x2688 JUMPI JUMPDEST PUSH2 0x267B DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4C93 JUMP JUMPDEST PUSH2 0x25D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2671 JUMP JUMPDEST PUSH2 0x2698 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST PUSH0 PUSH2 0x256C JUMP JUMPDEST SWAP1 DUP9 PUSH32 0x0 AND SWAP1 PUSH2 0x26CC DUP8 PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x26D5 DUP3 PUSH2 0x5345 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP14 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP3 SWAP2 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x2795 SWAP4 DUP14 SWAP4 PUSH2 0x27DC JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI DUP11 SWAP2 PUSH2 0x27B3 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x2635 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x27D5 JUMPI JUMPDEST PUSH2 0x27C6 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP9 DUP12 PUSH2 0x27A9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27BC JUMP JUMPDEST PUSH2 0x27E5 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP15 PUSH2 0x25D0 JUMP JUMPDEST POP DUP9 PUSH32 0x0 AND DUP2 EQ PUSH2 0x24F1 JUMP JUMPDEST POP DUP4 PUSH2 0x343 DUP11 PUSH2 0x2828 PUSH2 0x1987 DUP8 PUSH2 0x4B70 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4708 JUMP JUMPDEST PUSH2 0x286B SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP9 PUSH2 0x24AF JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x288E SWAP2 SWAP8 POP PUSH2 0x246B SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x362 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST SWAP8 SWAP2 SWAP3 SWAP1 SWAP8 SWAP4 SWAP1 PUSH2 0x2461 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x29CD JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x29A0 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x2962 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x2909 JUMPI JUMPDEST POP PUSH2 0x28F5 SWAP3 POP SUB DUP4 PUSH2 0x44F1 JUMP JUMPDEST PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x294A JUMPI POP POP PUSH2 0x28F5 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x28E8 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x2933 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x28F5 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x28E8 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x28C4 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x2A08 PUSH2 0x2A01 PUSH0 DUP1 PUSH2 0x600 PUSH2 0x754 PUSH2 0x428 PUSH2 0x29F6 CALLDATASIZE PUSH2 0x48CF JUMP JUMPDEST SWAP6 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 PUSH2 0x53CC JUMP JUMPDEST SWAP9 DUP11 PUSH2 0x5450 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2A1F DUP4 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH2 0x428 PUSH2 0x1C5E PUSH0 DUP1 PUSH2 0x2B23 PUSH2 0x2AA0 CALLDATASIZE PUSH2 0x492E JUMP JUMPDEST PUSH2 0x2AB0 SWAP10 SWAP4 SWAP5 SWAP9 SWAP3 SWAP2 SWAP10 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x2AC7 DUP6 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x2B69 SWAP2 PUSH0 SWAP2 PUSH2 0x2B85 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST POP SWAP3 SWAP1 POP PUSH2 0x1102 JUMPI PUSH2 0x343 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST PUSH2 0x2B99 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x2B5A JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x2BB8 PUSH2 0x441C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x2BD9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP2 PUSH2 0x2BE2 PUSH2 0x4432 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH0 SWAP4 PUSH2 0x428 PUSH2 0x8E7 DUP7 SWAP5 PUSH2 0x2C0B PUSH2 0x86C PUSH2 0x2C80 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x2C23 DUP6 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP3 PUSH2 0x2CCC SWAP2 PUSH0 SWAP2 PUSH2 0x2D09 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x2CE1 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4708 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x2CD5 JUMP JUMPDEST PUSH2 0x2D1D SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP5 PUSH2 0x2CBC JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x2D31 CALLDATASIZE PUSH2 0x4783 JUMP JUMPDEST SWAP1 PUSH2 0x2D3F SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x53CC JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x2D58 DUP9 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH0 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x2DE1 SWAP2 PUSH2 0x4FF4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x2DF3 SWAP1 DUP4 PUSH2 0x44F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP7 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x2E2F SWAP2 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x2E86 JUMPI JUMPDEST POP DUP3 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP3 ADD MLOAD SWAP1 PUSH2 0x4D4 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x2E9A SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP4 PUSH2 0x2E69 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x2EB9 PUSH2 0x441C JUMP JUMPDEST PUSH2 0x2EC1 PUSH2 0x445E JUMP JUMPDEST SWAP1 PUSH2 0x2ECA PUSH2 0x4432 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x2EED PUSH2 0x2EF3 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP2 PUSH2 0x53CC JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND SWAP3 DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP6 DUP7 PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x44 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP4 PUSH2 0x3063 JUMPI JUMPDEST POP PUSH0 SWAP4 PUSH2 0x428 PUSH2 0x2FFF DUP7 SWAP5 PUSH2 0x2F87 PUSH2 0x303B SWAP6 PUSH2 0x4EF7 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2F94 DUP10 DUP5 PUSH2 0x5085 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2FA2 DUP4 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP4 MSTORE PUSH1 0x20 SWAP12 DUP13 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x4BD SWAP2 PUSH0 SWAP2 PUSH2 0x4FC JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST SWAP3 POP POP SWAP2 PUSH1 0x40 DUP3 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x309A JUMPI JUMPDEST DUP2 PUSH2 0x3080 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 PUSH2 0x2F70 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3073 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x30BE PUSH2 0x30B3 CALLDATASIZE PUSH2 0x48CF JUMP JUMPDEST SWAP3 SWAP5 SWAP1 SWAP4 SWAP2 SWAP4 PUSH2 0x53CC JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 DUP1 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP7 ADD MSTORE AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 DUP4 PUSH1 0x44 DUP2 DUP8 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP1 PUSH0 SWAP5 PUSH2 0x3200 JUMPI JUMPDEST POP SWAP4 PUSH2 0x428 PUSH2 0x2FFF PUSH0 SWAP7 SWAP5 PUSH2 0x31D8 SWAP5 PUSH2 0x3154 DUP10 SWAP8 PUSH2 0x4EF7 JUMP JUMPDEST SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3170 DUP11 DUP6 PUSH2 0x5085 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP3 PUSH2 0x317E DUP5 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP13 DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x4C5 SWAP3 PUSH2 0x1BA5 SWAP2 PUSH0 SWAP2 PUSH2 0x1BAC JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4E24 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP4 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x3235 JUMPI JUMPDEST DUP2 PUSH2 0x321C PUSH1 0x40 SWAP4 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP3 MLOAD PUSH1 0x20 SWAP1 SWAP4 ADD MLOAD SWAP3 PUSH2 0x428 PUSH2 0x313B JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x320F JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x37C JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x37C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x37C JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x37C JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x32B3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x47EF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x37C JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x32F4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x4820 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x3314 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x47EF JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0x331F PUSH2 0x52BA JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x3862 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x35AF JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x37C JUMPI PUSH2 0x33D2 JUMPI JUMPDEST PUSH2 0x343 PUSH2 0xF60 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x5165 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x37C JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x37C JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x3531 JUMPI POP POP POP DUP3 SWAP2 PUSH0 SWAP5 PUSH2 0x34D4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x34B2 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x4474 JUMP JUMPDEST AND PUSH1 0x84 DUP7 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0x3 NOT DUP6 DUP5 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x4C29 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x343 SWAP4 PUSH2 0xF60 SWAP4 PUSH2 0x3522 JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0x352B SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP5 PUSH2 0x3517 JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3548 DUP8 PUSH2 0x4474 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x37C JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x3578 PUSH1 0x40 DUP10 ADD PUSH2 0x543D JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x3593 PUSH1 0x60 DUP11 ADD PUSH2 0x543D JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0x3486 JUMP JUMPDEST PUSH2 0x35BD PUSH2 0x2BA DUP3 DUP5 DUP7 PUSH2 0x52A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP4 ADD GT OR PUSH2 0xEFB JUMPI PUSH1 0x60 DUP2 ADD PUSH1 0x40 MSTORE PUSH0 DUP2 MSTORE PUSH1 0x20 SWAP2 PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE DUP3 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x364D DUP3 PUSH2 0x44D5 JUMP JUMPDEST PUSH2 0x3660 PUSH1 0x24 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x4474 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x3676 PUSH1 0x44 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x4474 JUMP JUMPDEST SWAP1 DUP2 DUP6 DUP6 ADD MSTORE PUSH2 0x368F PUSH1 0x64 PUSH1 0xC0 DUP9 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x4474 JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP9 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP12 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x3853 JUMPI JUMPDEST POP PUSH2 0x3849 JUMPI PUSH2 0x376C PUSH2 0x540E JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x3819 JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x37E4 JUMPI POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x332E JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x37F1 JUMPI DUP1 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3842 JUMPI JUMPDEST PUSH2 0x3831 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x37CE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3827 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x37DE JUMP JUMPDEST PUSH2 0x385C SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP11 PUSH2 0x375F JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x3898 CALLDATASIZE PUSH2 0x4783 JUMP JUMPDEST SWAP1 PUSH2 0x38A6 SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x53CC JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x38BF DUP9 PUSH2 0x44B8 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH1 0x1 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x2DE1 SWAP2 PUSH2 0x4FF4 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x397A PUSH2 0xF7D CALLDATASIZE PUSH2 0x4731 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP4 DUP5 PUSH1 0x4 DUP6 ADD MSTORE PUSH0 DUP5 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x371 JUMPI PUSH2 0x1086 PUSH0 SWAP6 SWAP5 PUSH2 0x3A6D SWAP5 PUSH2 0x3A06 DUP9 SWAP8 PUSH2 0x428 SWAP6 DUP10 SWAP2 PUSH2 0x3A90 JUMPI POP MLOAD PUSH2 0x4EF7 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x3A14 DUP5 PUSH2 0x4488 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4F41 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x2B69 SWAP2 PUSH0 SWAP2 PUSH2 0x2B85 JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4F9F JUMP JUMPDEST PUSH2 0x3AA4 SWAP2 POP RETURNDATASIZE DUP1 DUP12 DUP4 RETURNDATACOPY PUSH2 0x117D DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP13 PUSH2 0x2250 JUMP JUMPDEST PUSH0 PUSH2 0x428 DUP2 PUSH2 0x2C80 PUSH2 0x15F5 PUSH2 0x3ABE CALLDATASIZE PUSH2 0x4679 JUMP JUMPDEST SWAP1 PUSH2 0x3ACF SWAP9 SWAP5 SWAP3 SWAP9 SWAP6 SWAP4 SWAP6 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x3AE7 DUP8 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x4DA7 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x3B56 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH0 PUSH2 0x428 PUSH2 0x3BBD PUSH2 0x3B80 PUSH2 0x3BF7 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 SWAP8 PUSH32 0x82CD54FB00000000000000000000000000000000000000000000000000000000 DUP10 DUP6 ADD MSTORE PUSH1 0x24 CALLDATALOAD SWAP1 CALLER SWAP1 PUSH1 0x24 DUP7 ADD PUSH2 0x4CAB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP7 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0xEBF SWAP2 PUSH0 SWAP2 PUSH2 0x3C46 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x4D3B JUMP JUMPDEST PUSH2 0x3C5A SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP4 PUSH2 0x3C37 JUMP JUMPDEST CALLVALUE PUSH2 0x37C JUMPI PUSH2 0x3C6E CALLDATASIZE PUSH2 0x4614 JUMP JUMPDEST PUSH2 0x3C76 PUSH2 0x52BA JUMP JUMPDEST PUSH2 0x3C7E PUSH2 0x52E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 PUSH2 0x3CB6 PUSH1 0x20 DUP5 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP3 PUSH2 0x3CC0 DUP2 PUSH2 0x4B70 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP2 ADD SWAP5 PUSH2 0x3CD0 DUP7 DUP4 PUSH2 0x4B84 JUMP JUMPDEST SWAP2 PUSH2 0x3CDE PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x4B84 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP5 PUSH2 0x3CEF PUSH1 0xC0 DUP9 ADD DUP9 PUSH2 0x4BD8 JUMP JUMPDEST SWAP7 SWAP1 SWAP3 DUP11 PUSH1 0x40 MLOAD SWAP11 PUSH32 0xBA8A2BE000000000000000000000000000000000000000000000000000000000 DUP13 MSTORE DUP2 PUSH1 0xC4 DUP14 ADD SWAP4 AND PUSH1 0x4 DUP14 ADD MSTORE AND PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0xC0 PUSH1 0x44 DUP12 ADD MSTORE MSTORE PUSH1 0xE4 DUP9 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4198 JUMPI POP POP POP PUSH1 0x3 NOT DUP8 DUP4 SUB ADD PUSH1 0x64 DUP9 ADD MSTORE DUP4 DUP3 MSTORE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x37C JUMPI PUSH1 0x20 SWAP5 DUP6 DUP9 SWAP6 SWAP5 PUSH2 0x3DAF SWAP5 DUP8 SWAP7 PUSH1 0x5 SHL DUP1 SWAP3 DUP5 DUP4 ADD CALLDATACOPY ADD PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0x1C DUP7 DUP3 SUB ADD PUSH1 0xA4 DUP8 ADD MSTORE ADD SWAP2 PUSH2 0x4C29 JUMP JUMPDEST SUB DUP2 PUSH0 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP3 PUSH2 0x4164 JUMPI JUMPDEST POP SWAP1 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP2 SWAP1 PUSH0 JUMPDEST PUSH2 0x3DD8 DUP3 DUP5 PUSH2 0x4B84 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x412A JUMPI PUSH2 0x3DFD PUSH2 0x3DF8 DUP3 PUSH2 0x3DF2 DUP6 DUP8 PUSH2 0x4B84 JUMP JUMPDEST SWAP1 PUSH2 0x4C49 JUMP JUMPDEST PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x3E0E DUP3 PUSH2 0x3DF2 PUSH1 0x60 DUP8 ADD DUP8 PUSH2 0x4B84 JUMP JUMPDEST CALLDATALOAD SWAP1 DUP2 ISZERO PUSH2 0x4120 JUMPI PUSH2 0x3E1F DUP7 PUSH2 0x4C86 JUMP JUMPDEST DUP1 PUSH2 0x40F3 JUMPI JUMPDEST ISZERO PUSH2 0x3FA6 JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x1FCD JUMPI PUSH32 0x0 DUP7 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x3EEF SWAP5 PUSH1 0x20 SWAP3 DUP5 SWAP3 PUSH2 0x3F97 JUMPI JUMPDEST POP DUP12 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x3F50 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x2664 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x3F6C JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3F90 JUMPI JUMPDEST PUSH2 0x3F82 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP8 PUSH2 0x3F61 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3F78 JUMP JUMPDEST PUSH2 0x3FA0 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP14 PUSH2 0x3EA1 JUMP JUMPDEST DUP7 PUSH32 0x0 AND SWAP2 PUSH2 0x3FD3 DUP7 PUSH2 0x4B70 JUMP JUMPDEST SWAP3 PUSH2 0x3FDD DUP3 PUSH2 0x5345 JUMP JUMPDEST DUP2 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE DUP12 DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE DUP4 DUP11 AND SWAP1 SWAP5 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x371 JUMPI PUSH2 0x409F SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x40E4 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x40B9 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x3F66 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x40DD JUMPI JUMPDEST PUSH2 0x40CF DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP8 PUSH2 0x40B0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x40C5 JUMP JUMPDEST PUSH2 0x40ED SWAP1 PUSH2 0x44A4 JUMP JUMPDEST DUP12 PUSH2 0x25D0 JUMP JUMPDEST POP DUP7 PUSH32 0x0 AND DUP8 DUP3 AND EQ PUSH2 0x3E25 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x3F66 JUMP JUMPDEST PUSH1 0x20 DUP8 PUSH2 0x4139 PUSH2 0x1987 DUP7 PUSH2 0x4B70 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4190 JUMPI JUMPDEST DUP2 PUSH2 0x4180 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI MLOAD SWAP1 DUP6 PUSH2 0x3DC3 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4173 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 DUP14 PUSH2 0x41AB DUP10 PUSH2 0x4474 JUMP JUMPDEST AND DUP2 MSTORE ADD SWAP6 ADD SWAP3 SWAP2 ADD PUSH2 0x3D3C JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x37C JUMPI PUSH2 0x41CD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0x37C JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x41FB DUP4 PUSH2 0x4514 JUMP JUMPDEST SWAP1 PUSH2 0x4209 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP4 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x24 DUP6 DUP5 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x24 DUP7 SWAP2 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x4404 JUMPI POP POP POP POP PUSH1 0x44 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x424D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST PUSH2 0x4255 PUSH2 0x4598 JUMP JUMPDEST SWAP5 PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x426E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x4284 DUP5 PUSH2 0x4488 JUMP JUMPDEST CALLER DUP5 MSTORE DUP8 DUP8 DUP6 ADD SWAP7 AND DUP7 MSTORE PUSH1 0x40 DUP5 ADD SWAP5 DUP6 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x80 DUP5 ADD SWAP5 PUSH1 0x64 CALLDATALOAD DUP7 MSTORE PUSH1 0xA0 DUP6 ADD SWAP3 ISZERO ISZERO DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP4 DUP5 MSTORE DUP9 PUSH1 0x40 MLOAD SWAP8 PUSH32 0x86FAD6600000000000000000000000000000000000000000000000000000000 DUP11 DUP11 ADD MSTORE DUP10 PUSH1 0x24 DUP11 ADD MSTORE DUP2 PUSH2 0x124 DUP11 ADD SWAP8 MLOAD AND PUSH1 0x44 DUP11 ADD MSTORE MLOAD AND PUSH1 0x64 DUP9 ADD MSTORE MLOAD SWAP4 PUSH1 0xE0 PUSH1 0x84 DUP9 ADD MSTORE DUP5 MLOAD DUP1 SWAP2 MSTORE DUP8 PUSH2 0x144 DUP9 ADD SWAP6 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x43EE JUMPI POP POP DUP8 PUSH0 DUP1 PUSH2 0x4388 DUP13 DUP12 PUSH2 0x1C5E DUP2 PUSH2 0x428 DUP15 DUP15 DUP15 DUP15 PUSH2 0x4368 DUP16 MLOAD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC SWAP5 DUP6 DUP10 DUP4 SUB ADD PUSH1 0xA4 DUP11 ADD MSTORE PUSH2 0x4AD1 JUMP JUMPDEST SWAP4 MLOAD PUSH1 0xC4 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xE4 DUP7 ADD MSTORE MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH2 0x104 DUP6 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x371 JUMPI PUSH0 SWAP2 PUSH2 0x43D4 JUMPI JUMPDEST POP DUP2 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x43E8 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x510 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP3 PUSH2 0x43BC JUMP JUMPDEST DUP3 MLOAD DUP12 AND DUP8 MSTORE SWAP6 DUP10 ADD SWAP6 SWAP2 DUP10 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4315 JUMP JUMPDEST DUP2 SWAP1 PUSH2 0x440F DUP5 PUSH2 0x4474 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 DUP6 SWAP1 PUSH2 0x422A JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xEFB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEFB JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x4537 DUP3 PUSH2 0x4514 JUMP JUMPDEST SWAP2 PUSH2 0x4545 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F1 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 SWAP5 ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP3 DUP4 GT PUSH2 0x37C JUMPI SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x456B JUMPI POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x455E JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x20 PUSH2 0x4595 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x452C JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xEFB JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x45CF DUP3 PUSH2 0x45A7 JUMP JUMPDEST SWAP2 PUSH2 0x45DD PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F1 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x37C JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 PUSH1 0x20 PUSH2 0x4595 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x45C3 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI DUP3 PUSH1 0xE0 SWAP3 SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4665 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4657 JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x37C JUMPI DUP2 PUSH2 0x46BB SWAP2 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x471E PUSH2 0x4595 SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x37C JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x4883 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x48BF DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x46E3 JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x4873 JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x44 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x37C JUMPI DUP3 PUSH2 0x4973 SWAP2 PUSH1 0x4 ADD PUSH2 0x457A JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x37C JUMPI DUP3 PUSH2 0x140 SWAP3 SUB ADD SLT PUSH2 0x37C JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP2 PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4A3F SWAP2 PUSH1 0x4 ADD PUSH2 0x4820 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP2 PUSH2 0x4A60 SWAP1 PUSH2 0x4595 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x37C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP2 PUSH1 0x4 ADD PUSH2 0x45F9 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4AF0 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4AE2 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP1 MLOAD SWAP1 PUSH2 0x4B1B DUP3 PUSH2 0x45A7 JUMP JUMPDEST SWAP3 PUSH2 0x4B29 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F1 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x37C JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4B04 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x37C JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x37C JUMPI JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x37C JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x37C JUMPI JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH1 0x20 SWAP5 SWAP4 PUSH1 0x1F NOT SWAP4 DUP2 DUP7 MSTORE DUP7 DUP7 ADD CALLDATACOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x4C59 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x37C JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x37C JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x4595 SWAP5 SWAP4 PUSH1 0x80 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x4646 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x4CF5 DUP2 PUSH2 0x4514 JUMP JUMPDEST SWAP4 PUSH2 0x4D03 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x44F1 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x37C JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x4D2C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x4D1E JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4CDA JUMP JUMPDEST PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x4DE8 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x4E05 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x4D9A JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xE0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x37C JUMPI DUP5 PUSH2 0x4E50 SWAP2 DUP4 ADD PUSH2 0x4CDA JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4B04 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x37C JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x37C JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x37C JUMPI DUP3 MLOAD PUSH2 0x4EA3 DUP2 PUSH2 0x4514 JUMP JUMPDEST SWAP4 PUSH2 0x4EB1 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x44F1 JUMP JUMPDEST DUP2 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x37C JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x4ED8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x37C JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x4ECA JUMP JUMPDEST SWAP1 PUSH2 0x4F01 DUP3 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x4F0E PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x44F1 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x4F1E DUP3 SWAP5 PUSH2 0x4514 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x4F82 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x4E05 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x4F34 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x37C JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x37C JUMPI DUP2 PUSH2 0x4FD0 SWAP2 DUP5 ADD PUSH2 0x4CDA JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x37C JUMPI PUSH2 0x4595 SWAP3 ADD PUSH2 0x4B04 JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x4D6D JUMPI MSTORE JUMP JUMPDEST PUSH2 0x160 PUSH2 0x4595 SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x5022 PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x4FE7 JUMP JUMPDEST DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 PUSH1 0x60 DUP4 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD SWAP1 PUSH2 0x120 SWAP2 ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH2 0x140 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x46E3 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x4C59 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x50D9 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x50F5 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x4D9A JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x46E3 JUMP JUMPDEST SWAP1 PUSH2 0x4595 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x5153 PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x4AD1 JUMP JUMPDEST SWAP3 PUSH2 0x50F5 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x4F34 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x5170 CALLER PUSH2 0x53CC JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x527B JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x51A9 DUP4 PUSH2 0x4514 JUMP JUMPDEST SWAP3 PUSH2 0x51B7 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x44F1 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x51C6 DUP3 PUSH2 0x4514 JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x526A JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x5221 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x5216 SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x5218 JUMPI JUMPDEST POP PUSH2 0x5389 JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x5210 JUMP JUMPDEST DUP1 PUSH2 0x524E PUSH0 DUP1 PUSH2 0x5236 PUSH2 0x2BA DUP10 SWAP7 DUP9 DUP11 PUSH2 0x52A3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x5247 PUSH2 0x540E JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x59AE JUMP JUMPDEST PUSH2 0x5258 DUP3 DUP9 PUSH2 0x5085 JUMP JUMPDEST MSTORE PUSH2 0x5263 DUP2 DUP8 PUSH2 0x5085 JUMP JUMPDEST POP ADD PUSH2 0x51D4 JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x51C9 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x4C59 JUMPI PUSH2 0x4A3F SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x4BD8 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x527B JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x5319 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x5359 JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x53C8 JUMPI PUSH32 0x0 TLOAD PUSH2 0x53C8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x5216 SWAP3 AND PUSH2 0x5932 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x5404 JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x5438 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x541F DUP3 PUSH2 0x45A7 JUMP JUMPDEST SWAP2 PUSH2 0x542D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x44F1 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x37C JUMPI JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x5520 JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x54E9 JUMPI JUMPDEST POP POP PUSH2 0x54E6 PUSH2 0x54DF DUP6 SWAP5 PUSH2 0x4EF7 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x5085 JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x5519 JUMPI JUMPDEST PUSH2 0x5502 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x54D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x54F8 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x56DA JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 SWAP3 PUSH2 0x555A DUP3 DUP6 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP3 DUP1 PUSH1 0x60 SWAP5 DUP6 SWAP4 DUP5 DUP7 ADD PUSH2 0x556D SWAP1 PUSH2 0x4B70 JUMP JUMPDEST SWAP6 PUSH2 0x557A PUSH1 0x80 DUP3 ADD PUSH2 0x4B70 JUMP JUMPDEST SWAP1 DUP5 PUSH2 0x558A PUSH2 0x120 DUP4 ADD DUP4 PUSH2 0x4BD8 JUMP JUMPDEST SWAP2 SWAP1 DUP13 MLOAD SWAP6 PUSH2 0x5598 DUP8 PUSH2 0x4488 JUMP JUMPDEST DUP7 MSTORE DUP2 PUSH1 0x20 DUP8 ADD SWAP8 AND DUP8 MSTORE DUP2 DUP14 DUP8 ADD SWAP12 AND DUP12 MSTORE DUP2 DUP11 DUP8 ADD SWAP6 AND DUP6 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 PUSH1 0xA0 DUP6 ADD CALLDATALOAD DUP5 MSTORE PUSH1 0xA0 DUP8 ADD SWAP5 PUSH1 0xC0 ADD CALLDATALOAD DUP6 MSTORE CALLDATASIZE SWAP1 PUSH2 0x55D5 SWAP3 PUSH2 0x45C3 JUMP JUMPDEST SWAP4 PUSH1 0xC0 DUP7 ADD SWAP5 DUP6 MSTORE DUP2 DUP14 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP10 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP12 MSTORE PUSH1 0x4 DUP12 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP12 ADD SWAP1 MLOAD SWAP1 PUSH2 0x5622 SWAP2 PUSH2 0x4FE7 JUMP JUMPDEST MLOAD AND PUSH1 0x44 DUP10 ADD MSTORE MLOAD AND PUSH1 0x64 DUP8 ADD MSTORE MLOAD AND PUSH1 0x84 DUP6 ADD MSTORE MLOAD PUSH1 0xA4 DUP5 ADD MSTORE MLOAD PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0xE4 DUP3 ADD PUSH1 0xE0 SWAP1 MSTORE PUSH2 0x104 DUP3 ADD PUSH2 0x565A SWAP2 PUSH2 0x46E3 JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x5520 JUMPI PUSH0 SWAP4 PUSH0 SWAP4 PUSH0 SWAP4 PUSH2 0x569D JUMPI JUMPDEST POP POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST SWAP3 POP SWAP3 POP DUP1 SWAP4 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x56D3 JUMPI JUMPDEST PUSH2 0x56B7 DUP2 DUP4 PUSH2 0x44F1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x37C JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MLOAD PUSH0 DUP1 DUP1 PUSH2 0x5695 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x56AD JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x592A JUMPI DUP1 PUSH2 0x58F5 JUMPI JUMPDEST ISZERO PUSH2 0x5859 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x5846 JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x5842 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x5837 JUMPI PUSH2 0x581F JUMPI JUMPDEST POP PUSH2 0x5216 SWAP4 SWAP5 POP AND PUSH2 0x5932 JUMP JUMPDEST PUSH2 0x5829 DUP7 SWAP2 PUSH2 0x44A4 JUMP JUMPDEST PUSH2 0x5833 JUMPI DUP5 PUSH2 0x5812 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x5851 SWAP2 SWAP6 POP PUSH2 0x44A4 JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x57A5 JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x37C JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x371 JUMPI PUSH2 0x58EC JUMPI POP JUMP JUMPDEST PUSH2 0x5216 SWAP1 PUSH2 0x44A4 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x5711 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x5982 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x5952 PUSH2 0x540E JUMP JUMPDEST POP ISZERO PUSH2 0x595A JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x59C3 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x595A JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x5A09 JUMPI JUMPDEST PUSH2 0x59D4 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x59CC JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 0xE8 PC PUSH21 0xE80A6E7776CAED62D5C4F9D183AC00AA251E16ACD8 SWAP10 NUMBER 0xCD PUSH15 0xA0FEDB64736F6C634300081A003300 ","sourceMap":"1123:39322:61:-:0;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;-1:-1:-1;;;;;16367:5:62;1123:39322:61;16345:10:62;:28;16341:79;;1123:39322:61;16341:79:62;16396:13;;;1123:39322:61;16396:13:62;;1123:39322:61;;;;;;;;;;;;;;;3118:11;1123:39322;3118:11;;;1123:39322;;;;;;;;;;;;;;;39265:545;1123:39322;39265:545;;;1123:39322;;;;;27454:571;1123:39322;27454:571;;;1123:39322;;;;;38174:527;1123:39322;38174:527;;;1123:39322;;;;;;;;;;33509:574;1123:39322;33509:574;;;1123:39322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20942:539;1123:39322;20942:539;;;1123:39322;;;;;;;;;;;;;;;22099:540;1123:39322;22099:540;;;1123:39322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6141:387;1123:39322;6141:387;;;1123:39322;;;;;;;;;;14827:403;1123:39322;14827:403;;;1123:39322;13691:404;1123:39322;13691:404;1123:39322;;;;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;30103:11:61;;;;;;:::i;:::-;30136:13;;;:::i;:::-;30181:19;;1123:39322;30181:19;;;;:::i;:::-;30281:11;;;;;1123:39322;;;;;;;;30320:15;30060:290;30027:333;30320:15;1123:39322;30320:15;1123:39322;;30320:15;;1123:39322;30320:15;;;;;;1123:39322;30320:15;;;;:::i;:::-;1123:39322;;;;;;;;:::i;:::-;;;;;30103:11;30060:290;;1123:39322;;;;:::i;:::-;;30060:290;;1123:39322;30235:22;1123:39322;;30060:290;;1123:39322;30281:11;30060:290;;;:::i;:::-;1123:39322;;;:::i;:::-;30060:290;;;1123:39322;;;30027:333;;;;;;1123:39322;30027:333;;1123:39322;30027:333;;;:::i;:::-;;:6;;1123:39322;30027:333;;;;;;1123:39322;;;;;30027:333;;;1123:39322;;;;;;;;;;;:::i;:::-;;;;30027:333;;;1123:39322;30027:333;;;;;;;1123:39322;30027:333;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;1123:39322;;;;;;;;;;;;;;13607:506;13396:109;1123:39322;13607:506;1123:39322;;;;;:::i;:::-;13291:10;;;;;;;;5435:19:62;13291:10:61;5435:19:62;:::i;:::-;13396:109:61;;;:::i;:::-;1123:39322;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;:::i;:::-;13291:10;1123:39322;;13691:404;1123:39322;;;;13691:404;;;1123:39322;;13691:404;;1123:39322;13691:404;;;1123:39322;13941:41;13691:404;;;1123:39322;;;13691:404;;;1123:39322;13691:404;;;1123:39322;;;13607:506;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;13607:506:61;;;;;;:::i;:::-;1123:39322;;13576:551;;;;;;1123:39322;13576:551;;;1123:39322;13576:551;;1123:39322;13607:506;1123:39322;;;;:::i;:::-;13576:551;:6;;1123:39322;13576:551;;;;;;;14196:22;13576:551;13552:626;13576:551;1123:39322;13576:551;;;1123:39322;;;;;;13552:626;;;;;;:::i;:::-;14196:22;;;;:::i;:::-;1123:39322;6887:82:62;;;1123:39322:61;;;;;;;6887:82:62;1123:39322:61;16677:12:62;3051:52:52;6887:82:62;;13576:551:61;;;;;;1123:39322;13576:551;;;;;;:::i;:::-;;;;;:::i;:::-;;;;1123:39322;14743:505;;1123:39322;;;14592:65;1123:39322;;;:::i;:::-;14503:10;5435:19:62;14503:10:61;;;;;;;;;;5435:19:62;:::i;:::-;14592:65:61;;;:::i;:::-;1123:39322;;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;14503:10;1123:39322;;14827:403;;1123:39322;;14827:403;;;1123:39322;;14827:403;;1123:39322;14827:403;;;1123:39322;15075:42;14827:403;;;1123:39322;;;14827:403;;;1123:39322;14827:403;;;1123:39322;;;14743:505;;;;;;;;;;;;:::i;:::-;1123:39322;;14712:550;;;;;;1123:39322;14712:550;;;1123:39322;14712:550;;1123:39322;14743:505;1123:39322;;;;:::i;:::-;14712:550;:6;;1123:39322;14712:550;;;;;;14688:625;14712:550;1123:39322;14712:550;;;1123:39322;;;;;;14688:625;;;;;;:::i;:::-;6887:82:62;;;;;1123:39322:61;;;;;;14712:550;;;;;;1123:39322;14712:550;;;;;;:::i;:::-;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;26099:649;;5435:19:62;1123:39322:61;;;;;;;;:::i;:::-;5435:19:62;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;26423:4;1123:39322;;;;;;26185:545;;;1123:39322;;26185:545;;1123:39322;26185:545;1123:39322;26185:545;;1123:39322;26594:27;1123:39322;26185:545;;1123:39322;26185:545;;;;1123:39322;26185:545;;;1123:39322;;;26099:649;;;;;;;;1123:39322;26099:649;;;:::i;:::-;1123:39322;;26069:693;;;;;;1123:39322;26069:693;;;1123:39322;26069:693;;1123:39322;;;;;;:::i;:::-;26069:693;:6;;1123:39322;26069:693;;;;;;26045:768;26069:693;1123:39322;26069:693;;;1123:39322;;;;;;26045:768;;;;;;:::i;:::-;6887:82:62;;;;;;1123:39322:61;;;;;;26069:693;;;;;;1123:39322;26069:693;;;;;;:::i;:::-;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;34630:720;;1123:39322;;5435:19:62;1123:39322:61;;;;;;;;:::i;:::-;5435:19:62;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;:::i;:::-;34982:4;1123:39322;;;;34727:601;;1123:39322;;34727:601;;1123:39322;;;;34727:601;;1123:39322;35181:26;1123:39322;34727:601;;1123:39322;34727:601;1123:39322;34727:601;;1123:39322;34727:601;;;1123:39322;;;34630:720;;;;1123:39322;34630:720;;;1123:39322;34630:720;;;:::i;:::-;1123:39322;;34596:772;;;;;;1123:39322;34596:772;;1123:39322;;34596:772;;1123:39322;;;;;;:::i;:::-;34596:772;:6;;1123:39322;34596:772;;;;;;;1123:39322;34596:772;34568:859;34596:772;1123:39322;34596:772;;;1123:39322;;;;;;34568:859;;;;;;:::i;:::-;6887:82:62;;;;;;1123:39322:61;;;;;;;;:::i;6887:82:62:-;1123:39322:61;16677:12:62;3051:52:52;6887:82:62;;34596:772:61;;;;;;1123:39322;34596:772;;;;;;:::i;:::-;;;;1123:39322;6060:486;;1123:39322;;;;;;:::i;:::-;5435:19:62;5931:10:61;;;;;;;;5435:19:62;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;5931:10;1123:39322;;6141:387;;1123:39322;;6141:387;;;1123:39322;;6141:387;;1123:39322;6141:387;;;1123:39322;6388:27;6141:387;;;1123:39322;;;6141:387;;;1123:39322;6141:387;;;1123:39322;;;6060:486;;;;;;;;;;;;:::i;1123:39322::-;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;8058:421;;1123:39322;;;;;;;;;;:::i;:::-;5435:19:62;8009:10:61;5435:19:62;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;:::i;:::-;8009:10;1123:39322;;;;8131:334;;1123:39322;;8131:334;;1123:39322;8131:334;1123:39322;8131:334;;1123:39322;8339:25;1123:39322;8131:334;;1123:39322;8131:334;;;1123:39322;8131:334;;;1123:39322;;;8058:421;;;;1123:39322;8058:421;;;1123:39322;8058:421;;;:::i;:::-;1123:39322;;8031:458;;;;;;1123:39322;8031:458;;1123:39322;;8031:458;;1123:39322;;;;;;:::i;:::-;8031:458;:6;;1123:39322;8031:458;;;;;;;;1123:39322;6887:82:62;;;1123:39322:61;6887:82:62;1123:39322:61;16677:12:62;3051:52:52;1123:39322:61;8031:458;;;;;1123:39322;8031:458;;;;;;:::i;:::-;;;;;1123:39322;;;;;40385:17;1123:39322;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;40385:17:61;:::i;:::-;3051:52:52;;1123:39322:61;551:66:50;3051:52:52;1123:39322:61;;;;;;;;;;;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;36637:11:61;;;;;:::i;:::-;36676:13;;;:::i;:::-;36785:20;;1123:39322;36785:20;;;;:::i;:::-;36833:11;;;;;1123:39322;;;;;;;;36876:15;36587:323;36547:377;36876:15;1123:39322;;36876:15;1123:39322;36876:15;1123:39322;36876:15;;;;;;1123:39322;36876:15;;;;:::i;1123:39322::-;;;;;36637:11;36587:323;;1123:39322;36727:21;1123:39322;;36587:323;;1123:39322;;;;:::i;:::-;;36587:323;;1123:39322;36833:11;36587:323;;;:::i;1123:39322::-;36587:323;;;1123:39322;;;36547:377;;;;;;1123:39322;36547:377;;1123:39322;36547:377;;;:::i;:::-;;:6;;1123:39322;36547:377;;;;;;1123:39322;;;;;36547:377;;;1123:39322;;;;;;;;;;;:::i;36547:377::-;;;1123:39322;36547:377;;;;;;;1123:39322;36547:377;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:39322:61;;;;;35706:96;;;;;;1123:39322;;35706:96;;1123:39322;35777:4;1123:39322;;;;;;;;;;;35706:96;;1123:39322;;;;;;;;;;;;;;;;;;;;35672:148;;;;;;1123:39322;;;35672:148;1123:39322;;;;;;;:::i;:::-;35672:148;;:6;;1123:39322;35672:148;;;;;;;35644:219;35672:148;1123:39322;35672:148;;;1123:39322;;;;;;;35644:219;;;;;;:::i;:::-;1123:39322;;;;;;;;;;;;;;:::i;35672:148::-;;;;1123:39322;35672:148;;;;1123:39322;35672:148;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;1123:39322;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;11039:22:62;1123:39322:61;;;;;;;;:::i;:::-;11039:22:62;;:::i;:::-;1123:39322:61;;;;;;;:::i;:::-;;;;5435:19:62;1123:39322:61;;;:::i;:::-;5435:19:62;;;;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;24984:6:61;;;1123:39322;;;;15447:26:62;1123:39322:61;15447:26:62;;1123:39322:61;15447:26:62;;1123:39322:61;15447:26:62;;1123:39322:61;;15447:26:62;1123:39322:61;15447:26:62;;;;;;;;;1123:39322:61;15447:26:62;;;1123:39322:61;;;15502:24:62;;;;:::i;:::-;15541:13;1123:39322:61;15556:13:62;;;;;;1123:39322:61;;;;25014:674;;1123:39322;;;;;;;;;;;:::i;:::-;25338:4;1123:39322;;;25100:570;;;;1123:39322;;25100:570;;1123:39322;;25100:570;;1123:39322;25100:570;;;;1123:39322;25100:570;;;;1123:39322;25100:570;;;1123:39322;;;25014:674;;;;;;;;1123:39322;25014:674;;;:::i;:::-;1123:39322;;24984:718;;;;;;1123:39322;24984:718;;;1123:39322;24984:718;;1123:39322;;;;;;:::i;:::-;24984:718;;;;;;;;24960:793;24984:718;1123:39322;24984:718;;;15536:91:62;1123:39322:61;;;;;24960:793;;;;;;:::i;:::-;6887:82:62;;;;;15536:91;1123:39322:61;;;;;;;;;;;;;:::i;6887:82:62:-;1123:39322:61;16677:12:62;3051:52:52;6887:82:62;;24984:718:61;;;;;;1123:39322;24984:718;;;;;;:::i;:::-;;;;15571:3:62;15590:26;1123:39322:61;15590:26:62;1123:39322:61;15590:26:62;;;:::i;:::-;1123:39322:61;;15541:13:62;;15447:26;;;;;;1123:39322:61;15447:26:62;;;;;;:::i;:::-;;;;;:::i;:::-;;;;1123:39322:61;;;;:::i;:::-;21885:10;;;;;;;5435:19:62;;;:::i;:::-;1123:39322:61;;;;;;;:::i;:::-;21885:10;1123:39322;;22099:540;;;22209:18;3524:17:62;;-1:-1:-1;;;;;1123:39322:61;;22099:540;;1123:39322;-1:-1:-1;;;;;1123:39322:61;22099:540;;;1123:39322;-1:-1:-1;;;;;1123:39322:61;22099:540;;;1123:39322;22099:540;;;1123:39322;22099:540;;;1123:39322;;22099:540;;1123:39322;;;22099:540;;;1123:39322;;;;;;:::i;:::-;22099:540;;;1123:39322;;;22007:654;22099:540;22007:654;;;1123:39322;;;22007:654;;;;;;:::i;:::-;;-1:-1:-1;;22007:654:61;;;;;;;;:::i;:::-;1123:39322;;21972:707;;1123:39322;21972:707;;1123:39322;21972:707;;22099:540;1123:39322;;22007:654;1123:39322;;;;;:::i;:::-;21972:707;:6;;-1:-1:-1;;;;;1123:39322:61;21972:707;;;1123:39322;21972:707;;;;;;;;;1123:39322;21972:707;;;1123:39322;;22099:540;1123:39322;;;21944:776;;1123:39322;;;;22099:540;21944:776;;;1123:39322;6887:82:62;;;1123:39322:61;;;;;;21972:707;;;;;;;1123:39322;21972:707;;;;;;:::i;:::-;;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;19745:77;1123:39322;;;;;;:::i;:::-;1083:103:50;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;1123:39322:61;19745:6;;1123:39322;;;;19745:77;;;;1123:39322;19745:77;;1123:39322;;19745:77;;1123:39322;19745:77;;;:::i;:::-;;;;;;;;;;;;1123:39322;19745:77;;;1123:39322;;;;;19858:26;1123:39322;19858:26;;1123:39322;;19858:26;;1123:39322;;19858:26;1123:39322;19858:26;;;;;;;;;1123:39322;19858:26;;;1123:39322;19900:13;1123:39322;19934:3;1123:39322;;19915:17;;;;;19973:13;;;;:::i;:::-;1123:39322;20004:13;;20000:160;;19934:3;1123:39322;19934:3;;1123:39322;19900:13;;20000:160;20116:9;;;;;:::i;:::-;1123:39322;;20102:43;;;;;1123:39322;;;20102:43;;-1:-1:-1;;;;;1123:39322:61;;;;20102:43;;1123:39322;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;-1:-1:-1;20102:43:61;;;;;;;;1123:39322;20102:43;;;20000:160;;;;20102:43;;;;:::i;:::-;;;;19915:17;1123:39322;19915:17;20191:6;19915:17;20191:6;:::i;:::-;1123:39322;551:66:50;3051:52:52;1123:39322:61;;;;;;;;;;;;;:::i;19858:26::-;;;;;;;1123:39322;19858:26;;;;;;:::i;:::-;;;;;19745:77;;;;;;;1123:39322;19745:77;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;1123:39322;;15821:533;1123:39322;;15821:533;1123:39322;;;:::i;:::-;15621:10;5435:19:62;15621:10:61;;;;;;;5435:19:62;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;:::i;:::-;15621:10;1123:39322;;;15913:419;;;1123:39322;;15913:419;;1123:39322;;15913:419;;1123:39322;16181:26;15913:419;;;1123:39322;;;15913:419;;;1123:39322;15913:419;;;1123:39322;;;15821:533;;;;15913:419;15821:533;;;;;;;:::i;:::-;1123:39322;;15786:586;;;;;;1123:39322;15786:586;;15913:419;1123:39322;15786:586;;1123:39322;15821:533;1123:39322;;;;:::i;:::-;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;17624:6:61;;1123:39322;17706:11;;;;;;;:::i;:::-;17741:13;;;;:::i;:::-;17842:20;;1123:39322;17842:20;;;;:::i;:::-;17886:11;;;;;;1123:39322;;;;;;;;17925:15;17660:295;1123:39322;17925:15;1123:39322;17624:341;17925:15;1123:39322;17925:15;1123:39322;17925:15;;1123:39322;17925:15;;;;;;;:::i;1123:39322::-;17660:295;;;1123:39322;;;17624:341;;;;1123:39322;17624:341;;1123:39322;17624:341;;;:::i;:::-;;;;;;;;;;;;1123:39322;;;;;17624:341;;;1123:39322;18101:11;;;;:::i;:::-;1123:39322;;;;18080:33;1123:39322;18080:33;;1123:39322;;18080:33;;1123:39322;;18080:33;1123:39322;18080:33;1123:39322;18080:33;;;;;;;;;1123:39322;18080:33;;;1123:39322;-1:-1:-1;18129:13:61;;17660:295;18408:16;;;-1:-1:-1;1123:39322:61;18163:3;1123:39322;;18144:17;;;;;18202:13;;;;:::i;:::-;1123:39322;18233:14;;;18229:61;;18319:9;;;;;:::i;:::-;1123:39322;;18408:16;;;:::i;:::-;:52;;;18163:3;18404:490;;;18540:46;;;;;;1123:39322;;;;18540:46;;1123:39322;18554:5;1123:39322;18554:5;;;;1123:39322;18540:46;;1123:39322;18540:46;;1123:39322;18569:4;;1123:39322;;;;;;;;;18540:46;;;;;;;;18404:490;18604:25;;;;;;1123:39322;;;;;;18604:25;;;;1123:39322;18604:25;;;1123:39322;18604:25;;1123:39322;18604:25;;;;;;;;18694:13;18604:25;18719:9;18604:25;1123:39322;18604:25;;;18404:490;18694:13;;:::i;:::-;1123:39322;18719:9;:::i;:::-;1123:39322;18129:13;;18604:25;;;;:::i;:::-;;;;18540:46;;;;:::i;:::-;;;;18404:490;18854:13;;;:::i;:::-;18833:46;;;;;1123:39322;;;18833:46;;-1:-1:-1;;;;;1123:39322:61;;;;18833:46;;1123:39322;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;-1:-1:-1;18833:46:61;;;;;;;;1123:39322;18833:46;;;18404:490;;;;18833:46;;;;:::i;:::-;;;;18408:52;18454:5;;;1123:39322;18428:32;;18408:52;;18229:61;1123:39322;18267:8;;;;18144:17;;1123:39322;18144:17;18925:13;;18144:17;18925:13;:::i;:::-;;:::i;:::-;1123:39322;551:66:50;3051:52:52;1123:39322:61;;;;;;;:::i;18080:33::-;;;;;;;1123:39322;18080:33;;;;;;:::i;:::-;;;;;17624:341;;;;18101:11;17624:341;;;;;;;1123:39322;17624:341;;;;;;:::i;:::-;;;;;;;;;1123:39322;;;;:::i;:::-;20728:10;;;;;;;5435:19:62;;;:::i;:::-;1123:39322:61;;;;;;;:::i;:::-;20728:10;1123:39322;;20942:539;;;1123:39322;3524:17:62;;-1:-1:-1;;;;;1123:39322:61;;20942:539;;1123:39322;-1:-1:-1;;;;;1123:39322:61;20942:539;;;1123:39322;-1:-1:-1;;;;;1123:39322:61;20942:539;;;1123:39322;20942:539;;;1123:39322;20942:539;;;1123:39322;;20942:539;;1123:39322;;;20942:539;;;1123:39322;;;;;;:::i;:::-;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;6892:10;7203:498;;6995:107;5435:19:62;6892:10:61;5435:19:62;:::i;:::-;1123:39322:61;;;6995:107;;;:::i;:::-;1123:39322;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;6892:10;1123:39322;;;;;;7284:399;;;1123:39322;;7284:399;;1123:39322;;;;7284:399;;1123:39322;7531:39;1123:39322;7284:399;;1123:39322;;;;7284:399;;1123:39322;;7284:399;;1123:39322;;;7203:498;;;;;;;;1123:39322;7203:498;;;:::i;1123:39322::-;7172:543;:6;;1123:39322;7172:543;;;;;;;7784:21;7172:543;7148:618;7172:543;1123:39322;7172:543;;;1123:39322;;;;;;7148:618;;;;;;:::i;:::-;7784:21;;;:::i;7172:543::-;;;;;;1123:39322;7172:543;;;;;;:::i;:::-;;;;1123:39322;5120:488;;1123:39322;;;;;;:::i;:::-;5435:19:62;4988:10:61;;;;;;;;;5435:19:62;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;4988:10;1123:39322;;5201:389;;1123:39322;;5201:389;;;1123:39322;;5201:389;;1123:39322;;5201:389;;1123:39322;5201:389;;;;1123:39322;;;5201:389;;;1123:39322;5201:389;;;1123:39322;;;5120:488;;;;;;;;;;;;:::i;:::-;1123:39322;;5089:533;;;;;;1123:39322;5089:533;;;1123:39322;5089:533;;1123:39322;5120:488;1123:39322;;;;:::i;:::-;5089:533;:6;;1123:39322;5089:533;;;;;;5065:608;5089:533;1123:39322;5089:533;;;1123:39322;;;;;5065:608;;;;;;:::i;1123:39322::-;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;23246:17:61;;;:::i;:::-;23291:14;;;;;;;:::i;:::-;23329:13;;;;:::i;:::-;23363:16;;;;;;;;:::i;:::-;13940:29:62;;;1123:39322:61;13936:693:62;;;13989:21;;;:32;13985:95;;-1:-1:-1;;;;;14132:5:62;1123:39322:61;;;;;14132:34:62;;;;;1123:39322:61;;;14132:34:62;;1123:39322:61;14132:34:62;1123:39322:61;14132:34:62;;;;;;;;;;;13936:693;14242:6;;1123:39322:61;;;;1412:43:98;3510:55:99;1123:39322:61;1412:43:98;;;;;;;1123:39322:61;1412:43:98;;;;;;;;;;1123:39322:61;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;1412:43:98;3462:31:99;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;1123:39322:61;;4551:22:98;;;;;:57;;;;13936:693:62;4547:135:98;;;;;-1:-1:-1;1123:39322:61;;;14314:30:62;;-1:-1:-1;;;;;1123:39322:61;;;;;14314:30:62;;1123:39322:61;;;;;;;;;;;;;;;;-1:-1:-1;;14314:30:62;;;;;;;;13936:693;;;1123:39322:61;13936:693:62;23447:16:61;13936:693:62;;23404:13:61;;;:::i;:::-;23419:15;23447:16;23419:15;;;;;:::i;:::-;23447:16;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;23490:5:61;;1123:39322;;;23479:16;23475:120;;13936:693:62;3051:52:52;1123:39322:61;551:66:50;3051:52:52;1123:39322:61;;;;;;23475:120;23570:13;;;;:::i;:::-;23475:120;;;14314:30:62;;;;;;;;;;;;:::i;:::-;;;1123:39322:61;;;;14314:30:62;;;;;;;;;4547:135:98;4631:40;1123:39322:61;4631:40:98;1123:39322:61;;1412:43:98;1123:39322:61;4631:40:98;4551:57;4578:30;;-1:-1:-1;4578:30:98;;;;;;;:::i;:::-;4577:31;4551:57;;;;;14132:34:62;;;;:::i;:::-;;;;13985:95;14048:17;1123:39322:61;14048:17:62;1123:39322:61;;14048:17:62;13936:693;14379:12;14375:244;;13936:693;;;1123:39322:61;13936:693:62;23447:16:61;13936:693:62;;;14375:244;-1:-1:-1;;;;;14468:8:62;;;1123:39322:61;14506:6:62;;;1123:39322:61;14515:20:62;;;;:::i;:::-;14468:86;;;;;;1123:39322:61;;;14468:86:62;;-1:-1:-1;;;;;1123:39322:61;;;;14468:86:62;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;-1:-1:-1;;14468:86:62;;;;;;;1123:39322:61;14468:86:62;14572:32;14468:86;14572:32;14468:86;;;14375:244;1123:39322:61;;;14572:32:62;;;;;;1123:39322:61;14572:32:62;;;1123:39322:61;14572:32:62;;1123:39322:61;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;14572:32:62;;;;;;;;;;;14375:244;;;;14572:32;;;;;;;;;;;;;;:::i;:::-;;;1123:39322:61;;;;14572:32:62;;;;;;;;14468:86;;;;:::i;:::-;;;;13940:29;1123:39322:61;-1:-1:-1;;;;;13964:5:62;;1123:39322:61;;;;13953:16:62;13940:29;;1123:39322:61;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;37565:6:61;;;1123:39322;;;37565:26;1123:39322;37565:26;;1123:39322;;;37565:26;;1123:39322;;37565:26;1123:39322;37565:26;;;;;;;;;1123:39322;37551:48;37616:77;37565:26;;;;;;;1123:39322;;;37551:48;:::i;:::-;1123:39322;;;37616:77;;;;;;;1123:39322;37616:77;;1123:39322;;37616:77;1123:39322;37616:77;;;:::i;:::-;;;;;;;;;1123:39322;37616:77;1123:39322;37616:77;;;1123:39322;;;;;;;;;;;;;;;:::i;37616:77::-;;;;;;1123:39322;37616:77;;;;;;:::i;:::-;;;;37565:26;;;;;;;;;;;;;:::i;:::-;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;16677:12:62;2295:53:52;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;10267:6:61;;1123:39322;10343:11;;;;;;;;;:::i;:::-;10376:13;;;;:::i;:::-;10421:19;;1123:39322;10421:19;;;;:::i;:::-;10521:11;;;;;;1123:39322;;;;;;;;10560:15;10300:290;1123:39322;10560:15;1123:39322;10267:333;10560:15;1123:39322;10560:15;;;1123:39322;10560:15;;;;;;;;:::i;:::-;1123:39322;;;;;;;;:::i;:::-;;;;;10300:290;;;1123:39322;;;;:::i;:::-;;10300:290;;1123:39322;;10475:22;;1123:39322;;10300:290;;1123:39322;10521:11;10300:290;;;:::i;1123:39322::-;10300:290;;;1123:39322;;;10267:333;;;;1123:39322;10267:333;;1123:39322;10267:333;;;:::i;:::-;;;;;;;;;;;;1123:39322;;;;;10267:333;;;1123:39322;10735:11;;;;:::i;:::-;1123:39322;;;10714:33;1123:39322;10714:33;;1123:39322;;10714:33;;1123:39322;;10714:33;1123:39322;10714:33;;;;;;;;;1123:39322;10714:33;;;1123:39322;-1:-1:-1;10763:13:61;;10300:290;11039:16;;;-1:-1:-1;1123:39322:61;10797:3;1123:39322;;10778:17;;;;;10831:9;;;;;:::i;:::-;1123:39322;;10873:12;;;;:::i;:::-;1123:39322;10904:13;;;10900:60;;11039:16;;;:::i;:::-;:52;;;10797:3;11035:712;;;11115:21;;;:32;11111:103;;11232:5;1123:39322;;;11232:34;;;;;;1123:39322;;;11232:34;;1123:39322;11232:34;1123:39322;11232:34;;;;;;;;;11284:41;11232:34;;;;;;;11035:712;1123:39322;;;;;11284:41;;;;;;1123:39322;11284:41;;1123:39322;11284:41;;1123:39322;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;11284:41;;;;;;;;;;11343:30;11284:41;;;;;11035:712;1123:39322;;;11343:30;;;;;1123:39322;11343:30;;1123:39322;11343:30;;1123:39322;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;11343:30;;;1123:39322;11343:30;;;;;;;;;;;;11035:712;;;1123:39322;11035:712;;1123:39322;10763:13;;11343:30;;;;;;;;;;;;:::i;:::-;;;1123:39322;;;;11343:30;;;;;;;;;11284:41;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;11232:34;;;;:::i;:::-;;;;11035:712;11593:8;;;1123:39322;11615:13;;;;:::i;:::-;11647:20;;;:::i;:::-;11593:91;;;;;1123:39322;;;11593:91;;-1:-1:-1;;;;;1123:39322:61;;;;11593:91;;1123:39322;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;-1:-1:-1;;11593:91:61;;;;;;;11702:30;11593:91;;;;;1123:39322;;;11702:30;;;;;1123:39322;11702:30;;1123:39322;11702:30;;1123:39322;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;11702:30;;;1123:39322;11702:30;;;;;;;;;;;;11035:712;;;1123:39322;11035:712;;;11702:30;;;;;;;;;;;;:::i;:::-;;;1123:39322;;;;11702:30;;;;;;;;;11593:91;;;;:::i;:::-;;;;11039:52;11085:5;;;1123:39322;11059:32;;11039:52;;10778:17;;;1123:39322;10778:17;11821:13;;10778:17;11821:13;:::i;:::-;1123:39322;551:66:50;3051:52:52;1123:39322:61;;;;;;;:::i;10714:33::-;;;;;;1123:39322;10714:33;;;;;;:::i;:::-;;;;10267:333;;;;;;;;10735:11;10267:333;;;;1123:39322;10267:333;;;;;;:::i;:::-;;;;;;;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;-1:-1:-1;1123:39322:61;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;33270:65;5435:19:62;1123:39322:61;;;33420:681;;1123:39322;;;:::i;:::-;5435:19:62;;;;;;;:::i;:::-;33270:65:61;;;:::i;:::-;1123:39322;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;33752:4;1123:39322;;33509:574;;1123:39322;;33509:574;;;1123:39322;;33509:574;;1123:39322;;33509:574;;;1123:39322;33932:42;33509:574;;;1123:39322;33509:574;;;;1123:39322;33509:574;;;1123:39322;;;33420:681;;;;;;;;;;;;:::i;1123:39322::-;12445:497;;1123:39322;;;;;;:::i;:::-;5435:19:62;12311:10:61;;;;;;;;5435:19:62;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;12311:10;1123:39322;;12529:395;;1123:39322;;12529:395;;;1123:39322;;12529:395;;1123:39322;;12529:395;;1123:39322;12529:395;;;;1123:39322;;;12529:395;;;1123:39322;12529:395;;;1123:39322;;;12445:497;;;;;;;;;;;;:::i;1123:39322::-;12414:542;:6;;1123:39322;12414:542;;;;;;12390:617;12414:542;1123:39322;12414:542;;;1123:39322;;;;;;12390:617;;;;;;:::i;:::-;6887:82:62;;;;;;1123:39322:61;;;;;;;;;;;;;:::i;12414:542::-;;;;;;1123:39322;12414:542;;;;;;:::i;:::-;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;28579:709;;1123:39322;;5435:19:62;1123:39322:61;;;;;;;;:::i;5435:19:62:-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;:::i;:::-;28923:4;1123:39322;;;;28673:593;;1123:39322;;28673:593;;1123:39322;;;;28673:593;;1123:39322;;;28673:593;;1123:39322;28673:593;1123:39322;28673:593;;1123:39322;28673:593;;;1123:39322;;;28579:709;;;;1123:39322;28579:709;;;1123:39322;28579:709;;;:::i;1123:39322::-;28545:761;:6;;1123:39322;28545:761;;;;;;;1123:39322;28545:761;28517:848;28545:761;1123:39322;28545:761;;;1123:39322;;;;;;28517:848;;;;;;:::i;:::-;6887:82:62;;;;;;1123:39322:61;;;;;;;;:::i;6887:82:62:-;1123:39322:61;16677:12:62;3051:52:52;6887:82:62;;28545:761:61;;;;;;1123:39322;28545:761;;;;;;:::i;:::-;;;;1123:39322;;;;;;;:::i;:::-;5435:19:62;;;;;;;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;:::i;:::-;38238:10;1123:39322;;38174:527;;;;;;1123:39322;3524:17:62;;1123:39322:61;;38174:527;;1123:39322;;38174:527;;;1123:39322;;38174:527;;;1123:39322;38174:527;;;1123:39322;38174:527;;;1123:39322;;;;38174:527;;1123:39322;;;38174:527;;;1123:39322;;;38174:527;;;1123:39322;;;38088:635;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;38088:635:61;;;;;;;;:::i;:::-;1123:39322;;38054:687;;;1123:39322;38054:687;;;1123:39322;38054:687;;1123:39322;38088:635;1123:39322;;;;;:::i;:::-;38054:687;:6;;1123:39322;38054:687;;;1123:39322;38054:687;;;;;;;;;1123:39322;38054:687;;;1123:39322;;;;;;38026:756;;1123:39322;;;;38026:756;;1123:39322;6887:82:62;;;1123:39322:61;;;;;;38054:687;;;;;;1123:39322;38054:687;;;;;;:::i;:::-;;;;1123:39322;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;5435:19:62;1123:39322:61;;;;;;:::i;:::-;5435:19:62;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;13601:6:62;;;1123:39322:61;;;;;13601:52:62;1123:39322:61;13601:52:62;;1123:39322:61;13601:52:62;;1123:39322:61;13601:52:62;;1123:39322:61;;;;;;;13601:52:62;1123:39322:61;13601:52:62;;;;;;;;;1123:39322:61;;;13601:52:62;;;1123:39322:61;13678:24:62;1123:39322:61;13678:24:62;32145:685:61;;13678:24:62;;;1123:39322:61;13678:24:62;;:::i;:::-;13712:38;32042:1:61;13712:38:62;;;;:::i;:::-;1123:39322:61;;;;;;;:::i;:::-;32477:4;1123:39322;;;32234:578;;;;1123:39322;;32234:578;;1123:39322;;;;32234:578;;1123:39322;32042:1;1123:39322;32234:578;;1123:39322;32234:578;1123:39322;32234:578;;1123:39322;32234:578;;;1123:39322;;;32145:685;;;;;;;;1123:39322;32145:685;;;:::i;:::-;1123:39322;;32115:729;;;;;;1123:39322;32115:729;;;1123:39322;32115:729;;1123:39322;;;;;;:::i;:::-;32115:729;;;;;;;;;32913:22;32115:729;32091:804;32115:729;1123:39322;32115:729;;;1123:39322;;;;;32091:804;;;;;;:::i;13601:52:62:-;;;;;1123:39322:61;13601:52:62;;1123:39322:61;13601:52:62;;;;;;1123:39322:61;13601:52:62;;;:::i;:::-;;;1123:39322:61;;;;;;;;;;;;;;;;13601:52:62;;;;;-1:-1:-1;13601:52:62;;1123:39322:61;;;;5435:19:62;1123:39322:61;;;:::i;:::-;5435:19:62;;;;;;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;13601:6:62;;;1123:39322:61;;;;;13601:52:62;1123:39322:61;13601:52:62;;1123:39322:61;13601:52:62;;1123:39322:61;13601:52:62;;1123:39322:61;;;;;;;13601:52:62;1123:39322:61;13601:52:62;;;;;;;;;1123:39322:61;;;13601:52:62;;;1123:39322:61;13678:24:62;;27368:675:61;;1123:39322;13678:24:62;;1123:39322:61;13678:24:62;;;;;:::i;:::-;13712:38;1123:39322:61;13712:38:62;;;;:::i;:::-;1123:39322:61;;;;;;;:::i;:::-;27692:4;1123:39322;;27454:571;;;;;1123:39322;;27454:571;;1123:39322;27454:571;;;1123:39322;27877:39;27454:571;;;1123:39322;27454:571;;;;1123:39322;27454:571;;;1123:39322;;;27368:675;;;;;;;;1123:39322;27368:675;;;:::i;1123:39322::-;27338:719;;;;;;;;;28126:21;27338:719;27314:794;27338:719;1123:39322;27338:719;;;1123:39322;;;;;27314:794;;;;;;:::i;13601:52:62:-;;;;1123:39322:61;13601:52:62;;1123:39322:61;13601:52:62;;;;;;1123:39322:61;13601:52:62;;;:::i;:::-;;;1123:39322:61;;;;;;;;;;;;27368:675;13601:52:62;;;;;-1:-1:-1;13601:52:62;;1123:39322:61;;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;:::i;:::-;1123:39322:61;;;;;;1500:6:40;1496:65;;1123:39322:61;8604:22:62;1123:39322:61;;;;;8604:22:62;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10022:860:62;;8584:1371;1123:39322:61;11039:22:62;3051:52:52;;1123:39322:61;551:66:50;3051:52:52;11039:22:62;:::i;10022:860::-;-1:-1:-1;;;;;10812:8:62;;;;1123:39322:61;10812:59:62;;;;1123:39322:61;;10812:59:62;1123:39322:61;10812:59:62;;10828:10;1123:39322:61;10812:59:62;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;;:::i;:::-;10812:59:62;:8;;-1:-1:-1;;;;;10812:8:62;1123:39322:61;10812:59:62;;;;;;;1123:39322:61;10812:59:62;11039:22;10812:59;;;1123:39322:61;10022:860:62;;;;;;;;10812:59;;;;:::i;:::-;;;;1123:39322:61;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8628:3:62;1123:39322:61;8672:19:62;;;;;:::i;1123:39322:61:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11519:180:62;;;;;1123:39322:61;;11519:180:62;;;;;;1123:39322:61;11519:180:62;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;8876:338:62;;;;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;8876:338:62;;;;;1123:39322:61;8876:338:62;;1123:39322:61;;8876:338:62;;1123:39322:61;8989:4:62;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;;;8628:3;-1:-1:-1;8856:1089:62;;9341:604;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;9614:75:62;;;;1123:39322:61;9614:75:62;;1123:39322:61;9614:75:62;;1123:39322:61;8989:4:62;1123:39322:61;;;;9614:75:62;;;;;;;1123:39322:61;9614:75:62;;;8856:1089;1123:39322:61;;;;9614:100:62;9589:342;;8856:1089;;1123:39322:61;8856:1089:62;;1123:39322:61;8589:13:62;;9589:342;1123:39322:61;;1881:21:42;:17;;2008:160;;;;;1877:362;2205:23;1123:39322:61;2205:23:42;1123:39322:61;;2205:23:42;9614:75:62;;;;;;;;;;;;;;;;;:::i;:::-;;;1123:39322:61;;;;;;;9614:75:62;;;;;;;8856:1089;;;1123:39322:61;8856:1089:62;;;8876:338;;;;:::i;:::-;;;;1496:65:40;1529:21;1123:39322:61;1529:21:40;1123:39322:61;;1529:21:40;1123:39322:61;;;;;;;:::i;:::-;5435:19:62;;;;;;;;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;:::i;:::-;39329:10;1123:39322;;39265:545;;;;;;39375:18;3524:17:62;;1123:39322:61;;39265:545;;1123:39322;;39265:545;;;1123:39322;;39265:545;;;1123:39322;39265:545;;;1123:39322;39265:545;;;1123:39322;;;;39265:545;;39672:17;1123:39322;;39265:545;;;1123:39322;;;39265:545;;;1123:39322;;;39179:653;;;;;;;;;;;;;;;:::i;1123:39322::-;;;;5435:19:62;1123:39322:61;;;:::i;5435:19:62:-;1123:39322:61;-1:-1:-1;;;;;30683:6:61;;;1123:39322;;;;30683:26;1123:39322;30683:26;;1123:39322;30683:26;;1123:39322;30683:26;;1123:39322;;30683:26;1123:39322;30683:26;;;;;;;;;30800:676;1123:39322;30683:26;;1123:39322;30683:26;30669:48;30683:26;;30800:676;30683:26;;;;;1123:39322;;30669:48;:::i;:::-;1123:39322;;;;;;;:::i;:::-;31132:4;1123:39322;;;30889:569;;;;1123:39322;;30889:569;;1123:39322;;30889:569;;1123:39322;30889:569;;;;1123:39322;30889:569;;;;1123:39322;30889:569;;;1123:39322;;;30800:676;;;;;;;;1123:39322;30800:676;;;:::i;1123:39322::-;30770:720;;;;;;;;30746:795;30770:720;1123:39322;30770:720;;;1123:39322;;;;;30746:795;;;;;;:::i;30683:26::-;;;;;;;;;;;;;:::i;:::-;;;;1123:39322;;8965:524;1123:39322;;8965:524;1123:39322;;;:::i;:::-;8765:10;5435:19:62;8765:10:61;;;;;;;;5435:19:62;:::i;:::-;1123:39322:61;-1:-1:-1;;;;;1123:39322:61;;;;;;;;:::i;:::-;8765:10;1123:39322;;;9054:413;;;1123:39322;;9054:413;;1123:39322;;9054:413;;1123:39322;;9054:413;;;1123:39322;;;9054:413;;;1123:39322;9054:413;;;1123:39322;;;8965:524;;;;9054:413;8965:524;;;;;;;:::i;1123:39322::-;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;;;;;;;16740:103;;1123:39322;;;;;;;;:::i;:::-;;;;;;;16740:103;;;;;;1123:39322;;16798:10;;16740:103;1123:39322;16740:103;;;:::i;:::-;1123:39322;;16709:148;;;;1123:39322;16709:148;;;1123:39322;16709:148;;1123:39322;;;;;;:::i;:::-;16709:148;:6;;-1:-1:-1;;;;;16709:6:61;1123:39322;16709:148;;;;;;16685:207;16709:148;1123:39322;16709:148;;;1123:39322;;;;;;16685:207;;;;;;:::i;16709:148::-;;;;;;1123:39322;16709:148;;;;;;:::i;:::-;;;;1123:39322;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;3087:6:61;;1123:39322;3118:11;;;;;;:::i;:::-;3143:13;;;;:::i;:::-;3170;1123:39322;3170:13;;;;;;;:::i;:::-;3197:21;;;;;;;:::i;:::-;3268:15;;;;;;;;;;:::i;:::-;1123:39322;;;;;;3087:206;1123:39322;3087:206;;1123:39322;;;;;;;3087:206;;1123:39322;;;;;;3268:15;1123:39322;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;3118:11;1123:39322;;;;;;;;;;;;;;;;;;3232:22;;;1123:39322;;;;;;;;;;;;;;;;;:::i;:::-;3087:206;;1123:39322;3087:206;;;;;;;;1123:39322;3087:206;;;1123:39322;-1:-1:-1;3309:13:61;;1123:39322;3611:16;;;;1123:39322;3350:3;3328:13;;;;:::i;:::-;3324:24;;;;;;;3384:16;;:13;;;;;:::i;:::-;:16;;:::i;:::-;;:::i;:::-;3433:24;3197:21;3433;3197;;;3433;;:::i;:24::-;1123:39322;3476:13;;;3472:60;;3611:16;;;:::i;:::-;:52;;;3350:3;3607:836;;;3687:21;;;:32;3683:103;;3804:5;1123:39322;;;3804:34;;;;;;1123:39322;;;3804:34;;1123:39322;3804:34;1123:39322;3804:34;;;;;;;;;3919:41;3804:34;3118:11;3804:34;;;;;3607:836;1123:39322;;;;;3919:41;;;;;;1123:39322;3919:41;;1123:39322;3919:41;;1123:39322;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;3919:41;;;;;;;;;;3978:30;3919:41;3118:11;3919:41;;;1123:39322;;;3978:30;;;;;1123:39322;3978:30;;1123:39322;3978:30;;1123:39322;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;3978:30;;;1123:39322;3978:30;;;;;;;;;3607:836;;1123:39322;3607:836;;1123:39322;3309:13;;3978:30;3118:11;3978:30;;;;;;;;;;;;:::i;:::-;;;1123:39322;;;;3978:30;;;;;;;;3804:34;;;;:::i;:::-;;;;3607:836;4289:8;;1123:39322;4311:13;;;;:::i;:::-;4343:20;;;;:::i;:::-;4289:91;;;;;1123:39322;;;4289:91;;-1:-1:-1;;;;;1123:39322:61;;;;4289:91;;1123:39322;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;-1:-1:-1;;4289:91:61;;;;;;;4398:30;4289:91;3118:11;4289:91;;;1123:39322;;;4398:30;;;;;1123:39322;4398:30;;1123:39322;4398:30;;1123:39322;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;4398:30;;;1123:39322;4398:30;;;;;;;;;3607:836;;1123:39322;3607:836;;;4398:30;3118:11;4398:30;;;;;;;;;;;;:::i;:::-;;;1123:39322;;;;4398:30;;;;;;;;4289:91;;;;:::i;:::-;;;;3611:52;3657:5;;;1123:39322;;;;3631:32;3611:52;;3472:60;3509:8;;1123:39322;3509:8;;;3324:24;3118:11;3324:24;4502:13;;3324:24;4502:13;:::i;:::-;1123:39322;551:66:50;3051:52:52;1123:39322:61;;;;;;3087:206;;;;3118:11;3087:206;;3118:11;3087:206;;;;;;3118:11;3087:206;;;:::i;:::-;;;1123:39322;;;;;3087:206;;;;;;;-1:-1:-1;3087:206:61;;1123:39322;;;;3118:11;1123:39322;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::i;:::-;2225:10;1123:39322;;2166:400;;;;1123:39322;;;;;2166:400;;1123:39322;;;;2166:400;;1123:39322;;;;2166:400;;1123:39322;;;;;;2166:400;;1123:39322;;;;;;2166:400;;1123:39322;;;;;;2079:509;;;;;;;1123:39322;2079:509;;1123:39322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:509;1123:39322;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2044:562;:6;;1123:39322;2044:562;;;;;;;1123:39322;2044:562;;;1123:39322;;;;;;2016:631;;1123:39322;;;;2016:631;;1123:39322;;;;;;;2044:562;;;;;;1123:39322;2044:562;;;;;;:::i;:::-;;;;1123:39322;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1123:39322:61;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;3524:17:62;1123:39322:61;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1123:39322:61;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;1123:39322:61;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;1123:39322:61;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;1123:39322:61;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;1123:39322:61;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;-1:-1:-1;;1123:39322:61;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:39322:61;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;-1:-1:-1;1123:39322:61;;;;;-1:-1:-1;1123:39322:61;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;1123:39322:61;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;3524:17:62:-;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3524:17:62;;;1123:39322:61;3524:17:62;;;1123:39322:61;3524:17:62;;;;;;;;;;:::i;:::-;;;;;;1123:39322:61;3524:17:62;;;1123:39322:61;3524:17:62;;;;;1123:39322:61;3524:17:62;;;1123:39322:61;3524:17:62;;;;1123:39322:61;3524:17:62;;;1123:39322:61;3524:17:62;;;;;;;1123:39322:61;3524:17:62;;;;;;;1123:39322:61;3524:17:62;;;;;;;;;1123:39322:61;3524:17:62;;;;;1123:39322:61;;;3524:17:62;;;1123:39322:61;3524:17:62;;;;;;;;;;;:::i;1123:39322:61:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1123:39322:61;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;5703:590:62:-;;;5771:23;5783:10;5771:23;:::i;:::-;16826:26;;2806:53:52;;;5897:100:62;;6090:4;3051:52:52;6090:4:62;3051:52:52;;1123:39322:61;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1123:39322:61;;;:::i;:::-;;-1:-1:-1;1123:39322:61;;;;;;11122:13:62;;-1:-1:-1;11137:15:62;;;;;;6105:1;;;;;-1:-1:-1;6279:6:62;6105:1;3051:52:52;;16677:12:62;2295:53:52;;6887:82:62;;;11117:132;6279:6;;:::i;:::-;5703:590::o;6887:82::-;-1:-1:-1;3051:52:52;;6887:82:62;;;11154:3;11230:7;4297:55:99;-1:-1:-1;11230:7:62;1123:39322:61;11230:7:62;;;;;;:::i;1123:39322:61:-;;4255:25:99;;;;11223:4:62;4255:25:99;;;;:::i;:::-;11223:4:62;;4297:55:99;:::i;:::-;11173:65:62;;;;:::i;:::-;;;;;;:::i;:::-;;1123:39322:61;11122:13:62;;1123:39322:61;;;;;;;;;;;;;5897:100:62;5956:30;-1:-1:-1;5956:30:62;;-1:-1:-1;5956:30:62;1123:39322:61;;;;;;;;;;;;;;;:::i;1192:349:50:-;551:66;2295:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;509:165:68:-;-1:-1:-1;;;;;586:6:68;1123:39322:61;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;1123:39322:61;;616:41:68;;7223:218:111;-1:-1:-1;;;;;7303:25:111;;;;7299:105;;1123:39322:61;7223:218:111;:::o;7299:105::-;7351:42;;;7382:3;7351:42;1123:39322:61;;;;7351:42:111;;12478:584:62;12714:21;12749:11;;12745:48;;16826:26;2295:53:52;12943:69:62;;-1:-1:-1;;;;;13048:6:62;1123:39322:61;;13048:6:62;:::i;12943:69::-;12995:7;;:::o;6299:351::-;;1123:39322:61;16677:12:62;;-1:-1:-1;;;;;2295:53:52;;1123:39322:61;6524:25:62;6520:124;;6299:351;;:::o;6520:124::-;3051:52:52;;;;;6629:4:62;6520:124;6299:351::o;1123:39322:61:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1123:39322:61;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;13342:415:62:-;;1123:39322:61;13342:415:62;;;;-1:-1:-1;;;;;1123:39322:61;;;;;;;;13601:52:62;;;;;1123:39322:61;13601:52:62;;1123:39322:61;13601:52:62;;;1123:39322:61;;;;;;13601:6:62;1123:39322:61;13601:52:62;;;;;;;-1:-1:-1;;;13601:52:62;;;13342:415;13575:78;;13712:38;13678:24;13575:78;13678:24;;:::i;:::-;13712:38;;;:::i;:::-;1123:39322:61;13342:415:62:o;13601:52::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;1123:39322:61;;;;;;;;;;13601:52:62;;;;;;;;;;;1123:39322:61;;;-1:-1:-1;1123:39322:61;;;;;23641:818;23982:15;;;1123:39322;23964:15;:33;23960:85;;-1:-1:-1;;;;;24162:11:61;;;1123:39322;;;;;;;;24197:11;;;;;;;:::i;:::-;24235:14;;;;;;;;;;;;:::i;:::-;24277:15;;;;;;:::i;:::-;24412;;;;;;;;:::i;:::-;1123:39322;;;;;;;;:::i;:::-;3524:17:62;;24122:320:61;24162:11;24122:320;;1123:39322;;;;24122:320;;;;1123:39322;;;;24122:320;;;;1123:39322;;;;24277:15;24122:320;;24326:18;;;;1123:39322;;;24326:18;24122:320;;24372:12;;;1123:39322;;;;;;;;:::i;:::-;24122:320;24372:12;24122:320;;1123:39322;;;;;;24097:355;;;;;;;1123:39322;24097:355;;;;;24162:11;1123:39322;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23982:15;1123:39322;;;;;;;;:::i;:::-;24097:355;:6;;1123:39322;24097:355;;-1:-1:-1;24097:355:61;;;;;;;-1:-1:-1;;;;;24097:355:61;;;23641:818;24055:397;;;;;23641:818;:::o;24097:355::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1123:39322;;;;;;24162:11;1123:39322;;;;;;;;24097:355;;;;;;;;;;23960:85;24020:14;-1:-1:-1;24020:14:61;;-1:-1:-1;24020:14:61;14641:680:62;14768:1;;14641:680;14755:14;;14751:51;;14885:30;;;14641:680;14881:434;;;-1:-1:-1;;;;;14974:6:62;;;1123:39322:61;14974:49:62;;;;;1123:39322:61;;;14974:49:62;;-1:-1:-1;;;;;1123:39322:61;;;;14974:49:62;;;1123:39322:61;15006:4:62;1123:39322:61;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;-1:-1:-1;;14974:49:62;;;;;;;;14881:434;15074:5;;;;1123:39322:61;15074:25:62;;;;;1123:39322:61;;;;;15074:25:62;;;;1123:39322:61;15074:25:62;;;14974:49;15074:25;;1123:39322:61;15074:25:62;;;;;;;;14881:434;1123:39322:61;15174:9:62;1123:39322:61;;;;15174:9:62;:::i;15074:25::-;;;;;:::i;:::-;1123:39322:61;;15074:25:62;;;1123:39322:61;;;;15074:25:62;1123:39322:61;;;;;;;;;15074:25:62;1123:39322:61;;;14974:49:62;;;;;;:::i;:::-;14768:1;14974:49;;;;14881:434;15262:6;;;;-1:-1:-1;;;;;15262:6:62;1123:39322:61;15262:42:62;;;;;1123:39322:61;;;15262:42:62;;-1:-1:-1;;;;;1123:39322:61;;;15262:42:62;;;1123:39322:61;;;;;;;;;;;;;-1:-1:-1;;1123:39322:61;;;;;;-1:-1:-1;;15262:42:62;;;;;;;;14881:434;14641:680::o;15262:42::-;;;;:::i;14885:30::-;1123:39322:61;-1:-1:-1;;;;;14910:5:62;;1123:39322:61;;;;14898:17:62;14885:30;;14751:51;14785:7;;;;;;:::o;1531:331:99:-;1616:21;;:30;1612:109;;1750:33;1123:39322:61;;;-1:-1:-1;;;;;1123:39322:61;;;1750:33:99;;;;:::i;:::-;;1797:8;1793:63;;1531:331::o;1793:63::-;1828:17;1750:33;1828:17;;1750:33;1828:17;1612:109;1669:41;;;1624:4;1669:41;1123:39322:61;;1669:41:99;;4625:582;;4797:8;;-1:-1:-1;1123:39322:61;;5874:21:99;:17;;6046:142;;;;;;4793:408;1123:39322:61;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;1123:39322:61;5121:24:99;1123:39322:61;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;"},"methodIdentifiers":{"addLiquidityCustom(address,uint256[],uint256,bool,bytes)":"0ca078ec","addLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"5b343791","addLiquidityProportional(address,uint256[],uint256,bool,bytes)":"724dba33","addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)":"72657d17","addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)":"c08bc851","donate(address,uint256[],bool,bytes)":"bf6ee3fd","getSender()":"5e01eb5a","initialize(address,address[],uint256[],uint256,bool,bytes)":"026b3d95","initializeHook((address,address,address[],uint256[],uint256,bool,bytes))":"086fad66","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)":"452db952","queryAddLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"efd85f14","queryAddLiquidityProportional(address,uint256,address,bytes)":"9de90518","queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)":"1d56798d","queryAddLiquidityUnbalanced(address,uint256[],address,bytes)":"da001f7d","queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)":"c330c7be","queryRemoveLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"b24bd571","queryRemoveLiquidityProportional(address,uint256,address,bytes)":"0f710888","queryRemoveLiquidityRecovery(address,uint256)":"b037ed36","queryRemoveLiquidityRecoveryHook(address,address,uint256)":"5f9815ff","queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)":"23b39241","queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)":"53d0bb98","querySwapHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))":"be5ae841","querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)":"3ebc54e5","querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)":"175d4408","removeLiquidityCustom(address,uint256,uint256[],bool,bytes)":"82bf2b24","removeLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"7b03c7ba","removeLiquidityProportional(address,uint256,uint256[],bool,bytes)":"51682750","removeLiquidityRecovery(address,uint256,uint256[])":"08c04793","removeLiquidityRecoveryHook(address,address,uint256,uint256[])":"82cd54fb","removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)":"ecb2182c","removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)":"e7326def","swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)":"750283bc","swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)":"94e86ef8","swapSingleTokenHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))":"68a24fe0","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IWETH\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"routerVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.AddLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouter.InitializeHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"initializeHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.AddLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"queryAddLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.RemoveLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"queryRemoveLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityRecoveryHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGiven\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouter.SwapSingleTokenHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"querySwapHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapSingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapSingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.RemoveLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecoveryHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapSingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapSingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGiven\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouter.SwapSingleTokenHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"swapSingleTokenHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"The external API functions unlock the Vault, which calls back into the corresponding hook functions. These interact with the Vault, transfer tokens, settle accounting, and handle wrapping and unwrapping ETH.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"kind\":\"dev\",\"methods\":{\"addLiquidityCustom(address,uint256[],uint256,bool,bytes)\":{\"details\":\"The given maximum and minimum amounts given may be interpreted as exact depending on the pool type. In any case the caller can expect them to be hard boundaries for the request.\",\"params\":{\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Actual amounts of tokens added, sorted in token registration order\",\"bptAmountOut\":\"Actual amount of pool tokens received\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"addLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Add liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual amounts in required for the join\",\"bptAmountOut\":\"BPT amount minted in exchange for the input tokens\",\"returnData\":\"Arbitrary data with encoded response from the pool\"}},\"addLiquidityProportional(address,uint256[],uint256,bool,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Actual amounts of tokens added, sorted in token registration order\"}},\"addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"maxAmountIn\":\"Maximum amount of tokens to be added\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token used to add liquidity\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountIn\":\"Actual amount of tokens added\"}},\"addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountOut\":\"Actual amount of pool tokens received\"}},\"donate(address,uint256[],bool,bytes)\":{\"details\":\"To support donation, the pool config `enableDonation` flag must be set to true.\",\"params\":{\"amountsIn\":\"Amounts of tokens to be donated, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to donate liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"}},\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"initialize(address,address[],uint256[],uint256,bool,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokens\":\"Pool tokens, in token registration order\",\"userData\":\"Additional (optional) data sent with the request to add initial liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountOut\":\"Actual amount of pool tokens minted in exchange for initial liquidity\"}},\"initializeHook((address,address,address[],uint256[],uint256,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Initialization parameters (see IRouter for struct definition)\"},\"returns\":{\"bptAmountOut\":\"BPT amount minted in exchange for the input tokens\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)\":{\"params\":{\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Expected minimum amount of pool tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsIn\":\"Expected amounts of tokens to add, sorted in token registration order\",\"bptAmountOut\":\"Expected amount of pool tokens to receive\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryAddLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Add liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual token amounts in required as inputs\",\"bptAmountOut\":\"Expected pool tokens to be minted\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryAddLiquidityProportional(address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsIn\":\"Expected amounts of tokens to add, sorted in token registration order\"}},\"queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Expected exact amount of pool tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token used to add liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountIn\":\"Expected amount of tokens to add\"}},\"queryAddLiquidityUnbalanced(address,uint256[],address,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"bptAmountOut\":\"Expected amount of pool tokens to receive\"}},\"queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)\":{\"params\":{\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"minAmountsOut\":\"Expected minimum amounts of tokens to receive, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\",\"bptAmountIn\":\"Expected amount of pool tokens to burn\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryRemoveLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Remove liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsOut\":\"Expected token amounts to be transferred to the sender\",\"bptAmountIn\":\"Pool token amount to be burned for the output tokens\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryRemoveLiquidityProportional(address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\"}},\"queryRemoveLiquidityRecovery(address,uint256)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\"}},\"queryRemoveLiquidityRecoveryHook(address,address,uint256)\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"exactBptAmountIn\":\"Pool token amount to be burned for the output tokens\",\"pool\":\"The liquidity pool\",\"sender\":\"Account originating the remove liquidity operation\"},\"returns\":{\"amountsOut\":\"Expected token amounts to be transferred to the sender\"}},\"queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountOut\":\"Expected amount of tokens to receive\"}},\"queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountOut\":\"Expected exact amount of tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"bptAmountIn\":\"Expected amount of pool tokens to burn\"}},\"querySwapHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"details\":\"Can only be called by the Vault. Also handles native ETH.\",\"params\":{\"params\":\"Swap parameters (see IRouter for struct definition)\"},\"returns\":{\"_0\":\"amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)\"}},\"querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountIn\":\"Exact amounts of input tokens to send\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountCalculated\":\"Calculated amount of output tokens to be received in exchange for the given input tokens\"}},\"querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountOut\":\"Exact amounts of input tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountCalculated\":\"Calculated amount of input tokens to be sent in exchange for the requested output tokens\"}},\"removeLiquidityCustom(address,uint256,uint256[],bool,bytes)\":{\"details\":\"The given maximum and minimum amounts given may be interpreted as exact depending on the pool type. In any case the caller can expect them to be hard boundaries for the request.\",\"params\":{\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\",\"bptAmountIn\":\"Actual amount of pool tokens burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"removeLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Remove liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsOut\":\"Actual token amounts transferred in exchange for the BPT\",\"bptAmountIn\":\"BPT amount burned for the output tokens\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"removeLiquidityProportional(address,uint256,uint256[],bool,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\"}},\"removeLiquidityRecovery(address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\"}},\"removeLiquidityRecoveryHook(address,address,uint256,uint256[])\":{\"details\":\"Can only be called by the Vault, when the pool is in Recovery Mode.\",\"params\":{\"exactBptAmountIn\":\"BPT amount burned for the output tokens\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"Account originating the remove liquidity operation\"},\"returns\":{\"amountsOut\":\"Actual token amounts transferred in exchange for the BPT\"}},\"removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountOut\":\"Minimum amount of tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountOut\":\"Actual amount of tokens received\"}},\"removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)\":{\"params\":{\"exactAmountOut\":\"Exact amount of tokens to be received\",\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"pool\":\"Address of the liquidity pool\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountIn\":\"Actual amount of pool tokens burned\"}},\"swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"exactAmountIn\":\"Exact amounts of input tokens to send\",\"minAmountOut\":\"Minimum amount of tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the swap request\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"_0\":\"Calculated amount of output tokens to be received in exchange for the given input tokens\"}},\"swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"exactAmountOut\":\"Exact amounts of input tokens to receive\",\"maxAmountIn\":\"Maximum amount of tokens to be sent\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the swap request\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"_0\":\"Calculated amount of input tokens to be sent in exchange for the requested output tokens\"}},\"swapSingleTokenHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"details\":\"Can only be called by the Vault. Also handles native ETH.\",\"params\":{\"params\":\"Swap parameters (see IRouter for struct definition)\"},\"returns\":{\"_0\":\"amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}]},\"kind\":\"user\",\"methods\":{\"addLiquidityCustom(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with a custom request.\"},\"addLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for adding liquidity.\"},\"addLiquidityProportional(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with proportional token amounts, receiving an exact amount of pool tokens.\"},\"addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool in a single token, receiving an exact amount of pool tokens.\"},\"addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with arbitrary token amounts.\"},\"donate(address,uint256[],bool,bytes)\":{\"notice\":\"Adds liquidity to a pool by donating the amounts in (no BPT out).\"},\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"initialize(address,address[],uint256[],uint256,bool,bytes)\":{\"notice\":\"Initialize a liquidity pool.\"},\"initializeHook((address,address,address[],uint256[],uint256,bool,bytes))\":{\"notice\":\"Hook for initialization.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquidityCustom` operation without actually executing it.\"},\"queryAddLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for add liquidity queries.\"},\"queryAddLiquidityProportional(address,uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquidityProportional` operation without actually executing it.\"},\"queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquiditySingleTokenExactOut` operation without actually executing it.\"},\"queryAddLiquidityUnbalanced(address,uint256[],address,bytes)\":{\"notice\":\"Queries an `addLiquidityUnbalanced` operation without actually executing it.\"},\"queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)\":{\"notice\":\"Queries a `removeLiquidityCustom` operation without actually executing it.\"},\"queryRemoveLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for remove liquidity queries.\"},\"queryRemoveLiquidityProportional(address,uint256,address,bytes)\":{\"notice\":\"Queries a `removeLiquidityProportional` operation without actually executing it.\"},\"queryRemoveLiquidityRecovery(address,uint256)\":{\"notice\":\"Queries a `removeLiquidityRecovery` operation without actually executing it.\"},\"queryRemoveLiquidityRecoveryHook(address,address,uint256)\":{\"notice\":\"Hook for remove liquidity queries.\"},\"queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)\":{\"notice\":\"Queries a `removeLiquiditySingleTokenExactIn` operation without actually executing it.\"},\"queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"notice\":\"Queries a `removeLiquiditySingleTokenExactOut` operation without actually executing it.\"},\"querySwapHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"notice\":\"Hook for swap queries.\"},\"querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)\":{\"notice\":\"Queries a swap operation specifying an exact input token amount without actually executing it.\"},\"querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)\":{\"notice\":\"Queries a swap operation specifying an exact output token amount without actually executing it.\"},\"removeLiquidityCustom(address,uint256,uint256[],bool,bytes)\":{\"notice\":\"Removes liquidity from a pool with a custom request.\"},\"removeLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for removing liquidity.\"},\"removeLiquidityProportional(address,uint256,uint256[],bool,bytes)\":{\"notice\":\"Removes liquidity with proportional token amounts from a pool, burning an exact pool token amount.\"},\"removeLiquidityRecovery(address,uint256,uint256[])\":{\"notice\":\"Removes liquidity proportionally, burning an exact pool token amount. Only available in Recovery Mode.\"},\"removeLiquidityRecoveryHook(address,address,uint256,uint256[])\":{\"notice\":\"Hook for removing liquidity in Recovery Mode.\"},\"removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)\":{\"notice\":\"Removes liquidity from a pool via a single token, burning an exact pool token amount.\"},\"removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)\":{\"notice\":\"Removes liquidity from a pool via a single token, specifying the exact amount of tokens to receive.\"},\"swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation specifying an exact input token amount.\"},\"swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation specifying an exact output token amount.\"},\"swapSingleTokenHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"notice\":\"Hook for swaps.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Entrypoint for swaps, liquidity operations, and corresponding queries.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/Router.sol\":\"Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol\":{\"keccak256\":\"0x39a5cd3ee5c0bab644f068ad8ba617a0cf71a91610693b1c93c9536464151ee3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6a5f61af5cda44d8ef95e610c0b418f2cfb984e9c47a58fb1fa8c8bc949def75\",\"dweb:/ipfs/Qmby1D2D5Ym44jgBTTM8eTGnmNGCCKrb8ujpkhVPE6C6Cr\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/Router.sol\":{\"keccak256\":\"0x3acd5ac0dbf66746d6c9212f602ed27854b2a7184e9be4ca5ca7cb59d216bf80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3cdf174eb459eac070bcbea3b77abc492f92b2ad732787f2a3198db2c1f827be\",\"dweb:/ipfs/QmTyhZUkKSSaugv6Z7qaehyfpgjMNx2rtmeEK69ymC5KJ4\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/RouterCommon.sol":{"RouterCommon":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getSender()":"5e01eb5a","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Common functionality includes access to the sender (which would normally be obscured, since msg.sender in the Vault is the Router contract itself, not the account that invoked the Router), versioning, and the external invocation functions (`permitBatchAndCall` and `multicall`).\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}]},\"kind\":\"user\",\"methods\":{\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Abstract base contract for functions shared among all Routers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":\"RouterCommon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol":{"SingletonAuthentication":{"abi":[{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The disambiguator is the contract's own address. This is used in the construction of actionIds for permissioned functions, to avoid conflicts when multiple contracts (or multiple versions of the same contract) use the same function name.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAuthorizer()\":{\"returns\":{\"_0\":\"authorizer An interface pointer to the Authorizer\"}},\"getVault()\":{\"returns\":{\"_0\":\"vault An interface pointer to the Vault\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}]},\"kind\":\"user\",\"methods\":{\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"notice\":\"Get the address of the Authorizer.\"},\"getVault()\":{\"notice\":\"Get the address of the Balancer Vault.\"}},\"notice\":\"Base contract suitable for Singleton contracts (e.g., pool factories) that have permissioned functions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":\"SingletonAuthentication\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/Vault.sol":{"Vault":{"abi":[{"inputs":[{"internalType":"contract IVaultExtension","name":"vaultExtension","type":"address"},{"internalType":"contract IAuthorizer","name":"authorizer","type":"address"},{"internalType":"contract IProtocolFeeController","name":"protocolFeeController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AllZeroInputs","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BalanceOverflow","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"FailedInnerCall","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"maxInvariantRatio","type":"uint256"}],"name":"InvariantRatioAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"minInvariantRatio","type":"uint256"}],"name":"InvariantRatioBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"MultipleNonZeroInputs","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotStaticCall","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"}],"name":"addLiquidity","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"erc4626BufferWrapOrUnwrap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenCountAndIndexOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultExtension","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reentrancyGuardEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountHint","type":"uint256"}],"name":"settle","outputs":[{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountCalculated","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"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":"spender","type":"address"},{"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":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_contract_IVault_fromMemory":{"entryPoint":1268,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint32_fromMemory":{"entryPoint":1299,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1233,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_5262":{"entryPoint":1186,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateVaultStorageSlot":{"entryPoint":1327,"id":27922,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6101e06040908082523461036b57606081617105803803809161002282856104d1565b83398101031261036b5780516001600160a01b0380821680830361036b5760208085015194838616860361036b5786015183811680910361036b57610086875161006b816104a2565b600a8152691a5cd55b9b1bd8dad95960b21b8482015261052f565b60c0526100b98751610097816104a2565b60118152701b9bdb96995c9bd1195b1d1850dbdd5b9d607a1b8482015261052f565b60e0526100e687516100ca816104a2565b600b81526a746f6b656e44656c74617360a81b8482015261052f565b9661010097885261011e81516100fb816104a2565b6012815271185919131a5c5d5a591a5d1e50d85b1b195960721b8582015261052f565b9661012097885261014d8251610133816104a2565b60098152681cd95cdcda5bdb925960ba1b8682015261052f565b9261014093845282519663fbfa77cf60e01b9081895260049887818b818c5afa9081156103af575f91610485575b50813091160361047757845191825286828a81865afa9182156103e8575f92610448575b503091160361043a576101c0978852600a80546001600160a01b0319169190911790558151634546891d60e11b81529380858881895afa948515610430575f95610411575b506101609485528251631060fdbd60e11b815296818882818a5afa978815610376575f986103f2575b506101a0978852835163cd51c12f60e01b81529682888381845afa9788156103e8575f986103b9575b506101809788528451630716585d60e51b815283818481855afa9081156103af57908492915f91610380575b5060805285516329cab55160e11b815292839182905afa918215610376575f92610344575b505060a05260098054610100600160a81b03191660089290921b610100600160a81b031691909117905551616b029790969088610603893960805188615b67015260a05188613b18015260c05188818161131a015261166e015260e05188818161135b01528181614df50152614e3901525187614db501525186818161144501526126e90152518581816113870152818161141101526126b50152518450505183611b1a01525182611bc90152518181816109bc01526115bf0152f35b90809250813d831161036f575b61035b81836104d1565b8101031261036b57515f80610287565b5f80fd5b503d610351565b84513d5f823e3d90fd5b83819492503d83116103a8575b61039781836104d1565b8101031261036b578391515f610262565b503d61038d565b86513d5f823e3d90fd5b6103da919850833d85116103e1575b6103d281836104d1565b810190610513565b965f610236565b503d6103c8565b85513d5f823e3d90fd5b61040a919850823d84116103e1576103d281836104d1565b965f61020d565b816104299296503d87116103e1576103d281836104d1565b935f6101e4565b83513d5f823e3d90fd5b86631bbe95c760e01b5f525ffd5b610469919250873d8911610470575b61046181836104d1565b8101906104f4565b905f61019f565b503d610457565b886301ab9d9d60e41b5f525ffd5b61049c9150883d8a116104705761046181836104d1565b5f61017b565b604081019081106001600160401b038211176104bd57604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176104bd57604052565b9081602091031261036b57516001600160a01b038116810361036b5790565b9081602091031261036b575163ffffffff8116810361036b5790565b6040519061053c826104a2565b600c82526105bd603a602084016b5661756c7453746f7261676560a01b81526020604051948592828401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952518091603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a8101845201826104d1565b5190205f1981019081116105ee576040519060208201908152602082526105e3826104a2565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610018575b366115a857611580565b5f3560e01c806315afd409146100d757806315dacbea146100d257806321457897146100cd5780632bfb780c146100c857806343583be5146100c357806348c89491146100be5780634af29ec4146100b9578063ae639329146100b4578063b9a8effa146100af578063beabacc8146100aa578063c9c1661b146100a55763d2c725e00361000e57610b14565b610a16565b6109e0565b61099d565b61089a565b6107ca565b610731565b6106a5565b6105cd565b6104e8565b610228565b6100fe565b6001600160a01b038116036100ed57565b5f80fd5b35906100fc826100dc565b565b346100ed5760406003193601126100ed5760043561011b816100dc565b6024356101266115f2565b61012e61166c565b6001600160a01b0382165f818152600860209081526040918290205491517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919492829060249082905afa938415610223576101e6946101ba925f916101f4575b50806101b4856001600160a01b03165f52600860205260405f2090565b55610ba7565b918083116101ea575b50816101ce916116bd565b6101d6611647565b6040519081529081906020820190565b0390f35b91506101ce6101c3565b610216915060203d60201161021c575b61020e81836102ff565b810190610b52565b5f610197565b503d610204565b610b61565b346100ed5760806003193601126100ed57610276600435610248816100dc565b602435610254816100dc565b60443590610261826100dc565b610270606435809483336116fb565b336118df565b602060405160018152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff81116102c257604052565b610281565b60e0810190811067ffffffffffffffff8211176102c257604052565b6060810190811067ffffffffffffffff8211176102c257604052565b90601f601f19910116810190811067ffffffffffffffff8211176102c257604052565b6040519060c0820182811067ffffffffffffffff8211176102c257604052565b604051906100fc826102c7565b60405190610180820182811067ffffffffffffffff8211176102c257604052565b67ffffffffffffffff81116102c25760051b60200190565b9080601f830112156100ed5760209082356103a281610370565b936103b060405195866102ff565b81855260208086019260051b8201019283116100ed57602001905b8282106103d9575050505090565b813581529083019083016103cb565b359060048210156100ed57565b67ffffffffffffffff81116102c257601f01601f191660200190565b92919261041d826103f5565b9161042b60405193846102ff565b8294818452818301116100ed578281602093845f960137010152565b9080601f830112156100ed5781602061046293359101610411565b90565b9081518082526020808093019301915f5b828110610484575050505090565b835185529381019392810192600101610476565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b916104da9061046294928452606060208501526060840190610465565b916040818403910152610498565b346100ed576003196020813601126100ed5760043567ffffffffffffffff918282116100ed5760c09082360301126100ed57610522610322565b61052e826004016100f1565b815261053c602483016100f1565b60208201526044820135604082015260648201358381116100ed576105679060043691850101610388565b6060820152610578608483016103e8565b608082015260a48201359283116100ed5761059f6105a99260046101e69536920101610447565b60a0820152610bb4565b604093919351938493846104bd565b600211156100ed57565b35906100fc826105b8565b346100ed576003196020813601126100ed5760043567ffffffffffffffff918282116100ed5760e09082360301126100ed57610607610342565b610613826004016105c2565b8152610621602483016100f1565b6020820152610632604483016100f1565b6040820152610643606483016100f1565b60608201526084820135608082015260a482013560a082015260c48201359283116100ed5761067e6106889260046101e69536920101610447565b60c0820152610d3e565b604080519384526020840192909252908201529081906060820190565b346100ed5760a06003193601126100ed5760405160a0810181811067ffffffffffffffff8211176102c2576101e691610688916040526004356106e7816105b8565b81526024356106f5816105b8565b6020820152604435610706816100dc565b604082015260643560608201526084356080820152610fcd565b906020610462928181520190610498565b346100ed5760206003193601126100ed5767ffffffffffffffff6004358181116100ed57366023820112156100ed5780600401359182116100ed5736602483830101116100ed576101e6916024610788920161130f565b60405191829182610720565b359060058210156100ed57565b6107b76104629492606083526060830190610465565b9260208201526040818403910152610498565b346100ed576003196020813601126100ed5760043567ffffffffffffffff918282116100ed5760c09082360301126100ed57610804610322565b610810826004016100f1565b815261081e602483016100f1565b602082015260448201358381116100ed5761083f9060043691850101610388565b60408201526064820135606082015261085a60848301610794565b608082015260a48201359283116100ed5761088161088b9260046101e69536920101610447565b60a08201526113dc565b604093919351938493846107a1565b346100ed5760606003193601126100ed576004356108b7816100dc565b602435906108c4826100dc565b604435906108d06115f2565b6108d861166c565b6108ea6108e483614d50565b82614da5565b6001600160a01b0381165f52600860205260405f2080549383850394851161098e579390556040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b03909316602484015260448084019290925290825261096991906109646064836102ff565b6165a2565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b610b6c565b5f9103126100ed57565b346100ed575f6003193601126100ed5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ed5760606003193601126100ed57610276600435610a00816100dc565b602435610a0c816100dc565b60443591336118df565b346100ed5760406003193601126100ed57600435610a33816100dc565b60243590610a40826100dc565b6001600160a01b0380911691825f525f602052600192600160405f20541615610ae9575f93929352600360205260405f20926040519283602086549182815201955f5260205f20925f905b828210610abc5786610aa987610aa3838c03846102ff565b82614cea565b9051604080519182526020820192909252f35b90919280610add86998483985416906001600160a01b036020921681520190565b98019493920190610a8b565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346100ed575f6003193601126100ed5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b908160209103126100ed575190565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b905f19820191821161098e57565b9190820391821161098e57565b90610bbd61166c565b610bd06001600160a01b03835116611ac5565b610be9610be483516001600160a01b031690565b611b12565b610c02610bfd83516001600160a01b031690565b611c3a565b90610c56602083015151610c1d6060860191825151906120f7565b805160c0850190610c3782519160a0880192835191612198565b92610c47875160019060101c1690565b610ccf575b505050848461261c565b9490919586610c6a835160019060111c1690565b610c78575b50505050929190565b84975093610cc594610cbb610cae610c9785516001600160a01b031690565b6001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b9484513390612d88565b925f808080610c6f565b610cf7610d3694888a610cef610cae610c9783516001600160a01b031690565b9233906122a7565b610d2b610d25610d0e8a516001600160a01b031690565b6001600160a01b03165f52600560205260405f2090565b88612391565b519151905191612198565b5f8080610c4c565b90610d4761166c565b60208201906001600160a01b03610d6081845116611ac5565b610d74610be484516001600160a01b031690565b608084015115610f695760408401516001600160a01b031690610db0610da460608701516001600160a01b031690565b6001600160a01b031690565b911614610f4157610dcb610bfd83516001600160a01b031690565b92610dd68482612f42565b90610de2858383612fd9565b8551600c1c600116610ec6575b8551610e099190600b1c600116610e85575b868484613390565b9791979490978397610e208451600190600d1c1690565b610e50575b505050505051610e3481610fbe565b610e3d81610fbe565b610e48575081929190565b918093509190565b85985090610e6f610cae610c97610e7a9894516001600160a01b031690565b948451913392613847565b925f80808080610e25565b85516001600160a01b0316610ebf60608601918251610eb8610cae836001600160a01b03165f52600260205260405f2090565b9185613284565b9052610e01565b610eff90610edb86516001600160a01b031690565b610ef9610cae826001600160a01b03165f52600260205260405f2090565b91613110565b610f1c610f16610d0e86516001600160a01b031690565b86612391565b610f278286836131c9565b6040830152610e09610f3a868484612fd9565b9050610def565b7fa54b181d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f57a456b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60021115610fc857565b610f91565b610fd561166c565b600160075460021c166112d25760408101916001600160a01b03928381511693845f52600e6020528060405f205416156112a657600494506110156115f2565b602061102b610da484516001600160a01b031690565b604051968780927f38d52e0f0000000000000000000000000000000000000000000000000000000082525afa8015610223576080955f91611277575b50166110838161107e84516001600160a01b031690565b613abf565b81516001600160a01b03169061109f6060860192835190613b15565b600160208601516110af81610fbe565b6110b881610fbe565b0361120c576110e0918551916110cd83610fbe565b84516001600160a01b0316915192614005565b7feeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0829692979397968861113e611120610da489516001600160a01b031690565b94604051938493846040919493926060820195825260208201520152565b0390a25b805161114d81610fbe565b61115681610fbe565b6111c257015180841061118f575061118261117d91849283915b516001600160a01b031690565b613b15565b61118a611647565b929190565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b5ffd5b01518085116111dc575061118261117d9185928391611170565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600485905260245260445ffd5b61122f9185519161121c83610fbe565b84516001600160a01b0316915192613ba7565b7f3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b829692979397968861126f611120610da489516001600160a01b031690565b0390a2611142565b611299915060203d60201161129f575b61129181836102ff565b8101906112fa565b5f611067565b503d611287565b847f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b908160209103126100ed5751610462816100dc565b91909161135161134b7f000000000000000000000000000000000000000000000000000000000000000092835c1595866113d3575b3691610411565b33616056565b926113595750565b7f00000000000000000000000000000000000000000000000000000000000000005c6113ab575f905d6100fc7f000000000000000000000000000000000000000000000000000000000000000061436f565b7f20f1d86d000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001855d611344565b906113e561166c565b6113f86001600160a01b03835116611ac5565b61140c610be483516001600160a01b031690565b6114697f00000000000000000000000000000000000000000000000000000000000000005c61144284516001600160a01b031690565b907f0000000000000000000000000000000000000000000000000000000000000000614380565b61148261147d83516001600160a01b031690565b611ed2565b906114d660208301515161149d6040860191825151906120f7565b805160c08501906114b782519160a0880192835191614399565b926114c78751600190600e1c1690565b611529575b50505084846145da565b94909586846114ea8451600190600f1c1690565b6114f9575b5050505050929190565b61151f9550611515610cae610c9785516001600160a01b031690565b9484513390614b2f565b5f808086816114ef565b61155061157894888a611549610cae610c9783516001600160a01b031690565b9233614477565b61156d611567610d0e8a516001600160a01b031690565b886123fe565b519151905191614399565b5f80806114cc565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461158057365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e156115ee573d5ff35b3d5ffd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c61161f576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b7f00000000000000000000000000000000000000000000000000000000000000005c1561169557565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b906116c790614d50565b907f8000000000000000000000000000000000000000000000000000000000000000821461098e576100fc915f0390614da5565b9291909161170a828486614e66565b5f19810361171a575b5050505050565b8082116118a45703906001600160a01b039283811693841561186f5780831695861561183a578461177a8561176486611764866001600160a01b03165f52601060205260405f2090565b906001600160a01b03165f5260205260405f2090565b551692833b156100ed576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a6191611814915f8180606481015b038183895af1611821575b506040519081529081906020820190565b0390a45f80808080611713565b8061182e611834926102ae565b80610993565b5f611803565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b6001600160a01b03837ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b929091926001600160a01b0390818416918215611a9057808616918215611a5b5761191f86611764836001600160a01b03165f52600f60205260405f2090565b54808611611a1e5785900361194987611764846001600160a01b03165f52600f60205260405f2090565b5561196987611764836001600160a01b03165f52600f60205260405f2090565b8581540190551691827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806119a688829190602083019252565b0390a4803b156100ed576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290818381606481015b03925af1801561022357611a115750565b8061182e6100fc926102ae565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038716600452602452604485905260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03871660045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615611ae75750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b63ffffffff807f00000000000000000000000000000000000000000000000000000000000000001642111580611c2c575b611c04576001600160a01b0382165f525f60205260405f20549060018260021c1690611b6d605a90565b906028820180921161098e5782611bbe575b50509050611b8a5750565b7fd971f597000000000000000000000000000000000000000000000000000000005f526001600160a01b031660045260245ffd5b611bf09250611bf9937f0000000000000000000000000000000000000000000000000000000000000000921c16616ab4565b63ffffffff1690565b421115805f80611b7f565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c16611b43565b604090815191611c49836102c7565b5f8352826020810191606080845281830190808252808401908082526080936080860182815260a0870183815260c08801938452611c856115f2565b6001600160a01b038a165f526005602052825f20935f602052835f2054926004602052611cc1855f20946003602052865f209081549c52614eb2565b8b52611ccc8a614f09565b8852611cd78a612126565b8752611ce28a612126565b9052611cef898d51616612565b9052611cfa88612126565b81528a5191600199600184811c169384611ebe575b5083611eac575b5f5b8d8b8210611d76575050505050505050505050505080611d67611d4f611d6e936001600160a01b03165f52600560205260405f2090565b916001600160a01b03165f52600660205260405f2090565b9083614f96565b610462611647565b908a8d92828c8c8c611dd884611dc481611db6611db18f8f61117085611d9c9251612157565b6001600160a01b03165f5260205260405f2090565b614f57565b94905f5260205260405f2090565b54945183611dd28383612157565b52612157565b50611de2816150fa565b611ded858d51612157565b52611e0b6fffffffffffffffffffffffffffffffff841685876151ca565b878d8d15611e9f5782015115159182611e81575b5050611e32575b50505050505b01611d18565b82611e5592611e4c82611e45885161666e565b9451612157565b51961c85616691565b9283611e65575b8e93508c611e26565b611e7893611e7291610ba7565b916151ca565b5f8f8282611e5c565b90915051611e8e81610fbe565b611e9781610fbe565b14875f611e1f565b5050505050505050611e2c565b8c5190935060031c6001161592611d16565b611ec991945061666e565b1515925f611d0f565b604090815191611ee1836102c7565b5f8352826020810191606080845281830190808252808401908082526080936080860182815260a0870183815260c08801938452611f1d6115f2565b6001600160a01b038a165f526005602052825f20935f602052835f2054926004602052611f59855f20946003602052865f209081549c52614eb2565b8b52611f648a614f09565b8852611f6f8a612126565b8752611f7a8a612126565b9052611f87898d51616612565b9052611f9288612126565b81528a5191600199600184811c1693846120e3575b50836120d1575b5f5b8d8b8210611fe7575050505050505050505050505080611d67611d4f611d6e936001600160a01b03165f52600560205260405f2090565b908a8d92828c8c8c61200d84611dc481611db6611db18f8f61117085611d9c9251612157565b50612017816150fa565b612022858d51612157565b526120406fffffffffffffffffffffffffffffffff84168587615217565b878d8d156120c457820151151591826120a6575b5050612067575b50505050505b01611fb0565b8261207a92611e4c82611e45885161666e565b928361208a575b8e93508c61205b565b61209d9361209791610ba7565b91615217565b5f8f8282612081565b909150516120b381610fbe565b6120bc81610fbe565b14875f612054565b5050505050505050612061565b8c5190935060031c6001161592611fae565b6120ee91945061666e565b1515925f611fa7565b036120fe57565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b9061213082610370565b61213d60405191826102ff565b828152601f1961214d8294610370565b0190602036910137565b805182101561216b5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908251916121ab8251825190856150ab565b6121b483612126565b935f5b8481106121c657505050505090565b806121fb6121d660019385612157565b516121f66121e48489612157565b516121ef8589612157565b51926150e7565b61576d565b6122058289612157565b52016121b7565b60041115610fc857565b519081151582036100ed57565b908160209103126100ed5761046290612216565b906004821015610fc85752565b9592936122756122999561046299979361228b956001600160a01b038092168b521660208a01526040890190612237565b606087015260e0608087015260e0860190610465565b9084820360a0860152610465565b9160c0818403910152610498565b5f6001600160a01b03602095969361231f6122c987516001600160a01b031690565b946080880151976122d98961220c565b60a0608060408301519c0151910151916040519b8c9a8b998a977fba5f9f4000000000000000000000000000000000000000000000000000000000895260048901612244565b0393165af1908115610223575f91612362575b501561233a57565b7f2aaf8866000000000000000000000000000000000000000000000000000000005f5260045ffd5b612384915060203d60201161238a575b61237c81836102ff565b810190612223565b5f612332565b503d612372565b60208082015151925f5b8481106123a9575050505050565b6001906123f86fffffffffffffffffffffffffffffffff60406123d86123d285838b0151612157565b516150fa565b6123e68560a08b0151612157565b52835f528587525f20541682876151ca565b0161239b565b60208082015151925f5b848110612416575050505050565b60019061245f6fffffffffffffffffffffffffffffffff604061243f6123d285838b0151612157565b61244d8560a08b0151612157565b52835f528587525f2054168287615217565b01612408565b60405190612472826102e3565b5f6040838281528260208201520152565b9080601f830112156100ed5781519060209161249e81610370565b936124ac60405195866102ff565b81855260208086019260051b8201019283116100ed57602001905b8282106124d5575050505090565b815181529083019083016124c7565b81601f820112156100ed578051906124fb826103f5565b9261250960405194856102ff565b828452602083830101116100ed57815f9260208093018386015e8301015290565b6080818303126100ed5780519260208201519167ffffffffffffffff928381116100ed578461255a918301612483565b9360408201518481116100ed5781612573918401612483565b9360608301519081116100ed5761046292016124e4565b939061046295936125c8936001600160a01b036125ba93168752602087015260a0604087015260a0860190610465565b908482036060860152610465565b916080818403910152610498565b906001820180921161098e57565b9190820180921161098e57565b9161260e9061046294928452606060208501526060840190610465565b916040818403910152610465565b926126256115f2565b606091612630612465565b926020860190612644825151808752612126565b90608084019687516126558161220c565b61265e8161220c565b612a9357506040840151906126738751612126565b956126af8360808c01516126a96126918a516001600160a01b031690565b6001600160a01b03165f52601160205260405f205490565b9061571c565b926127207f00000000000000000000000000000000000000000000000000000000000000005c6126e689516001600160a01b031690565b907f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b612a16575b60408701518082116129e5575061273e819a999a61578f565b60208a01985f5b8b518110156128a0578c6127598288612157565b516127638161578f565b61276d838a612157565b5161288e57816127938460a061278a8260c061279a980151612157565b51930151612157565b51916157a0565b806127a5838a612157565b525b6127b5611170838b51612157565b60608b016127c4848251612157565b51831061284257508e83611e728f8f8f966128369161281e86612816818b60019e9d6127f38861283c9f6116bd565b61280f6128008489612157565b5191516001600160a01b031690565b908d6157cf565b875292612157565b5261282d856060880151612157565b519251906125e4565b90610ba7565b01612745565b91612851846111bf9451612157565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b505061289a8188612157565b516127a7565b509399509594509592986128c69197506128c185516001600160a01b031690565b6158f3565b7ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a56128f884516001600160a01b031690565b9261291a86602087019561291387516001600160a01b031690565b33916116fb565b612922615956565b6129ba575b61294d8661293c87516001600160a01b031690565b86516001600160a01b0316906159d6565b61298161269161297561296788516001600160a01b031690565b96516001600160a01b031690565b9451966111708861220c565b926129a96001600160a01b03926129978861220c565b8c8460405195869516981696846125f1565b0390a46129b4611647565b93929190565b6129e0866129cf87516001600160a01b031690565b86516001600160a01b03169061596b565b612927565b7f31d38e0b000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b989491612a298b97949995929b51615352565b9a5f5b8651811015612a8357808b612a7c8f93612a76612a658f8390612a5b600199612a55848a612157565b5161576d565b611dd28383612157565b51612a708386612157565b51610ba7565b92612157565b5201612a2c565b5091949893969a50919498612725565b949060018851612aa28161220c565b612aab8161220c565b03612b2f57612aba895161528f565b60408501519186928a612b29612b1f8b8a6040612ada60608301516152c3565b92019482865286608082015193612b19610da4612b0b612b0461269188516001600160a01b031690565b9551615352565b95516001600160a01b031690565b946155ec565b909251909a612157565b52612725565b60028896929651612b3f8161220c565b612b488161220c565b03612bdb57612b57895161528f565b612bd4826060870190612b7b612b6d83516152c3565b60408c019381855251612157565b51612b87835188612157565b528b612b9a608082015193518093612157565b51612bb9612bb26126918c516001600160a01b031690565b9251615352565b92612bce610da48c516001600160a01b031690565b946153a9565b9690612725565b509360038751612bea8161220c565b612bf38161220c565b03612cb457612c02885161525a565b5f612c1a610da4610da487516001600160a01b031690565b9560408601519660808b0151918360a089015199612c686040519b8c96879586947fab68e28c000000000000000000000000000000000000000000000000000000008652336004870161258a565b03925af1948515610223575f915f965f925f91612c89575b50919692612725565b9250509550612caa91503d805f833e612ca281836102ff565b81019061252a565b919690915f612c80565b7f137a9a39000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190916040818403126100ed57612cf281612216565b92602082015167ffffffffffffffff81116100ed576104629201612483565b969394610462989692612d7a96612d4b612d6c96612d5e95610100948d6001600160a01b0380931690521660208d015260408c0190612237565b60608a01528060808a0152880190610465565b9086820360a0880152610465565b9084820360c0860152610465565b9160e0818403910152610498565b949395929691908451612da1906001600160a01b031690565b90608086015192612db18461220c565b60808601518a60a0890151926040519b8c9788977f2754888d0000000000000000000000000000000000000000000000000000000089526004890197612df698612d11565b03916001600160a01b031691815a5f948591f1938415610223575f905f95612f1b575b50158015612f0f575b612ee7576001809360091c1615612e405792935090915f835b612e47575b5050505090565b8451811015612ee257612e5a8186612157565b516060840190612e6b838351612157565b5111612e7a5750830183612e3b565b612ea582612e9d81612e976111708b9760206111bf9a0151612157565b95612157565b519251612157565b517ffbd8a724000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b612e40565b7f1d3391d8000000000000000000000000000000000000000000000000000000005f5260045ffd5b50835185511415612e22565b9050612f3a9194503d805f833e612f3281836102ff565b810190612cdc565b93905f612e19565b6040519291608084019067ffffffffffffffff8211858310176102c257612fc9916040525f855260208501945f8652612fc160408201915f83528360608201965f88528299612fba60208401805190612faa6001600160a01b03928360408801511690614cea565b8752519060608501511690614cea565b90526131c9565b905251615352565b9052565b612fd682610fbe565b52565b919091606060c0604051612fec816102c7565b5f81525f60208201528260408201525f838201525f60808201525f60a0820152015280519261301a84610fbe565b6080604082015193015160c0602083519301519301519361304361303c610342565b9687612fcd565b60208601526040850152606084015260808301523360a083015260c082015290565b90612fd682610fbe565b919060e0810190835161308181610fbe565b8152602080850151602083015260408501519260e060408401528351809152602061010084019401915f5b8281106130fc575050505060c0846060610462959601516060840152608081015160808401526130ec60a082015160a08501906001600160a01b03169052565b01519060c0818403910152610498565b8351865294810194928101926001016130ac565b602091926131605f6001600160a01b038094604051978896879586937f5211fa7700000000000000000000000000000000000000000000000000000000855260406004860152604485019061306f565b911660248301520393165af1908115610223575f916131aa575b501561318257565b7fe91e17e7000000000000000000000000000000000000000000000000000000005f5260045ffd5b6131c3915060203d60201161238a5761237c81836102ff565b5f61317a565b91909180516131d781610fbe565b6131e081610fbe565b613225579061321c670de0b6b3a7640000936121ef60806132219501519360a061321060c0850151835190612157565b51930151905190612157565b6150e7565b0490565b6104629261326161325b60806121f69401519460a061324f602060c0870151930192835190612157565b51940151905190612157565b51615b41565b926150e7565b91908260409103126100ed57602061327e83612216565b92015190565b90926132d5604093946001600160a01b039384918651978896879586947fa0e8f5ac00000000000000000000000000000000000000000000000000000000865260606004870152606486019061306f565b9216602484015260448301520392165afa908115610223575f905f9261335e575b501561333657670de0b5cad2bef000811161330e5790565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613382915060403d604011613389575b61337a81836102ff565b810190613267565b905f6132f6565b503d613370565b5f949193929361339e6115f2565b6133a6612465565b9180516133b281610fbe565b6133bb81610fbe565b15613747575b6020918286016133d18151615b65565b83613426818501986133f0610da4610da48c516001600160a01b031690565b906040519c8d809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161376f565b03925af1988915610223575f99613728575b508861344381615b65565b835161344e81610fbe565b61345781610fbe565b6136b057506040820151905261349660c088015161348f61325b61348087860193845190612157565b519260a08c0151905190612157565b908a6157a0565b9360808301519685979860a085015180881061368057505b60408501948a86516134c6906001600160a01b031690565b906134d091614cd8565b606001958987516134e7906001600160a01b031690565b906134f1916116bd565b835183516001600160a01b031687516001600160a01b031687519161351693866157cf565b9190818601956040019283528552855160608401928d8285519061353991612157565b5190613544916125e4565b905161354f91610ba7565b61355991856151ca565b85019182518b8184519061356c91612157565b519061357791610ba7565b61358191836151ca565b83516001600160a01b03165f90815260056020526040902091805187516135a791612157565b519160800191825188516135ba91612157565b516135c491615c42565b87516135d89085905f5260205260405f2090565b555183516135e591612157565b51905183516135f391612157565b516135fd91615c42565b915161361091905f5260205260405f2090565b5551925193516060928301519151604080518b8152602081018b905290810193909352928201929092526001600160a01b039182169382169291909116907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a4939291906100fc611647565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600488905260245260445ffd5b90508198506136d760606136e0930151670de0b6b3a7640000818103908210029083615c0e565b908186526125e4565b9661370d6136f460c0890151835190612157565b5161370560a08a0151845190612157565b51908a615c2e565b93608083015196859860a085015180881161368057506134ae565b613740919950843d861161021c5761020e81836102ff565b975f613438565b6020850161376861375e825160608601519061576d565b8086528251610ba7565b90526133c1565b90602061046292818152019061306f565b6101a06104629260208352613799602084018251613065565b60208101516001600160a01b0316604084015260408101516001600160a01b0316606084015260608101516080840152608081015160a084015260a081015160c084015260c081015160e084015260e08101516101009081850152810151610120908185015281015161381a61014091828601906001600160a01b03169052565b8101519061383661016092838601906001600160a01b03169052565b015191610180808201520190610498565b939590919492865161385881610fbe565b61386181610fbe565b613ab05786604085015191845b82519461387a86610fbe565b604097889788860151613893906001600160a01b031690565b9660608701516138a9906001600160a01b031690565b9360800192835181516138bb91612157565b51935190602001516138cc91612157565b519360208801516138e3906001600160a01b031690565b9760c00151986138f161034f565b9a6138fc908c612fcd565b6001600160a01b031660208b01526001600160a01b0316898b01526060890152608088015260a087015260c086015260e085015261010084018890526001600160a01b03166101208401526001600160a01b0316610140830152610160820152815196878080937f18b6eb55000000000000000000000000000000000000000000000000000000008252600482019061399491613780565b03916001600160a01b03165a905f91f1948515610223575f915f96613a8c575b505015613a645760091c60011615613a5e575080516139d281610fbe565b6139db81610fbe565b1580613a51575b8015613a26575b6139f1575090565b60a001517fcc0e4a99000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b5060018151613a3481610fbe565b613a3d81610fbe565b1480156139e9575060a081015182116139e9565b5060a081015182106139e2565b91505090565b7f15a29dec000000000000000000000000000000000000000000000000000000005f5260045ffd5b613aa793965080919250903d106133895761337a81836102ff565b93905f806139b4565b8660408501519184929461386e565b6001600160a01b0380911690815f52600e6020528060405f2054169216809203613ae7575050565b7f36b18d09000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b907f000000000000000000000000000000000000000000000000000000000000000011613b3f5750565b6001600160a01b03907f18fe7385000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b81810392915f13801582851316918412161761098e57565b9190915f838201938412911290801582169115161761098e57565b939091613bb385610fbe565b84158015613f7557613c016020613bc987610b99565b604051809381927fef8b30f7000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa801561022357613c26915f91613f56575b50610b99565b94955b613c44836001600160a01b03165f52600b60205260405f2090565b5491613c4e615956565b613f4e57869288929091608083901c91858310613ccc5750505092613cc682613ca386613c9e6001600160a01b03966fffffffffffffffffffffffffffffffff896100fc9b60801c0393166125e4565b615c42565b9788613cc0856001600160a01b03165f52600b60205260405f2090565b55614cd8565b166116bd565b90929350613cdb919450610fbe565b15613df657613d03613cfe613cf08584615f08565b613cf98a614d50565b613b8c565b615d69565b926001600160a01b03811693613d1a818689615eb9565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526004810182905230602482015294602090869060449082905f905af1801561022357613ca38995613dd187613dc66001600160a01b038f96888f896100fc9f859e613dc08f613cc69f613dc696613dcb996fffffffffffffffffffffffffffffffff965f91613dd7575b509a8b935b1690613dbb8282615d9e565b615f9d565b166125e4565b610ba7565b946125e4565b90615c42565b613df0915060203d60201161021c5761020e81836102ff565b5f613daa565b9091613e16613cfe613e088385615ca6565b613e1189614d50565b613b74565b6040517fb3d7f6b9000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b038316936020939290918481602481895afa801561022357613e75915f91613f31575b50868a615eb9565b6040517f94bf804d00000000000000000000000000000000000000000000000000000000815260048101829052306024820152948490869060449082905f905af1918215610223576100fc96613dd18b613dc6858f966001600160a01b038f896fffffffffffffffffffffffffffffffff879f9a849f8f96613cc69f97613dc696613ca39f99613dcb9a613dc0955f92613f14575b5050988992613daf565b613f2a9250803d1061021c5761020e81836102ff565b5f80613f0a565b613f489150863d881161021c5761020e81836102ff565b5f613e6d565b509093505050565b613f6f915060203d60201161021c5761020e81836102ff565b5f613c20565b613fbb6020613f83876125d6565b604051809381927fb3d7f6b9000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa801561022357613fe0915f91613fe6575b506125d6565b95613c29565b613fff915060203d60201161021c5761020e81836102ff565b5f613fda565b939061401085610fbe565b84159485156142ff5761405f602061402787610b99565b604051809381927f4cdad506000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0389165afa801561022357614083915f91613f565750610b99565b94955b6140a1856001600160a01b03165f52600b60205260405f2090565b54916140ab615956565b613f4e5787938793909290916fffffffffffffffffffffffffffffffff918284169186831061412b57505050936001600160a01b0361410183866100fc986140f9866141269860801c6125e4565b921603615c42565b978861411e826001600160a01b03165f52600b60205260405f2090565b555b16614cd8565b6116bd565b91965092945061413b9150610fbe565b1561423957614150613cfe613cf08785615ca6565b6040517fba087652000000000000000000000000000000000000000000000000000000008152600481018290523060248201819052604482015293906020856064815f6001600160a01b038c165af18015610223576141f78995613dd184613dc68e6141ee8b8f6001600160a01b036100fc9f9c6141e98f9d6141269f94889f859f613dc6975f9161421a575b509586925b1690615fe2565b6125e4565b9460801c6125e4565b9788614214826001600160a01b03165f52600b60205260405f2090565b55614120565b614233915060203d60201161021c5761020e81836102ff565b5f6141dd565b614249613cfe613e088785615f08565b6040517fb460af940000000000000000000000000000000000000000000000000000000081526004810182905230602482018190526044820152906020826064815f6001600160a01b038c165af1918215610223576141f78995613dd16001600160a01b03613dc68e6141ee8b8f8a6100fc9f6141e98f936141269f9e889f958b9f96613dc6975f916142e0575b509b8c936141e2565b6142f9915060203d60201161021c5761020e81836102ff565b5f6142d7565b614345602061430d876125d6565b604051809381927f0a28a477000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0389165afa801561022357614369915f91613fe657506125d6565b95614086565b805c906001820180921161098e575d565b905f5260205260405f20905f52602052600160405f205d565b91908251916143ac8251825190856150ab565b6143b583612126565b935f5b8481106143c757505050505090565b80670de0b6b3a76400006143f96143e060019486612157565b5161321c6143ee858a612157565b516121ef868a612157565b046144048289612157565b52016143b8565b60051115610fc857565b906005821015610fc85752565b95919361445361046298969461446493612299976001600160a01b038092168b521660208a01526040890190614415565b60e0606088015260e0870190610465565b91608086015284820360a0860152610465565b925f6001600160a01b036020959693966144f161449b87516001600160a01b031690565b946080880151976144ab8961440b565b60a060806060830151930151910151916040519b8c9a8b998a977f45421ec700000000000000000000000000000000000000000000000000000000895260048901614422565b0393165af1908115610223575f91614534575b501561450c57565b7f0b2eb652000000000000000000000000000000000000000000000000000000005f5260045ffd5b61454d915060203d60201161238a5761237c81836102ff565b5f614504565b916080838303126100ed5782519067ffffffffffffffff918281116100ed578361457e918601612483565b9360208101519360408201518481116100ed5781612573918401612483565b936145c76125c8936001600160a01b0361046298969416875260a0602088015260a0870190610465565b9160408601528482036060860152610465565b91906145e46115f2565b60606145ee612465565b9160208501614601815151808652612126565b608083019586516146118161440b565b61461a8161440b565b61488b5750606083015161462e8651612126565b946146528260808b015161464c61269189516001600160a01b031690565b9061640d565b995b606086015180841061485b575061466d8399989961578f565b60208901975f5b8c8b5182101561479a578161468891612157565b516146928161578f565b61469c8288612157565b51614789576146c1908d6146ba8460a061278a8260c0860151612157565b5191615c2e565b806146cc8389612157565b525b6146dc611170838a51612157565b60408a016146eb848251612157565b51831161473d57508d83611e728e61472f8f968f9761471a86612816818b60019e9d6127f3886147379f614cd8565b52614729856060880151612157565b516125e4565b905190610ba7565b01614674565b9161474c846111bf9451612157565b517f8eda85e4000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b506147948187612157565b516146ce565b50509396945096509650966147ba906128c185516001600160a01b031690565b7fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca8716147ec84516001600160a01b031690565b9261480d89602087019561480787516001600160a01b031690565b90616454565b61483361269161482761296788516001600160a01b031690565b9451966111708861440b565b926129a96001600160a01b03926148498861440b565b888460405195869516981696846125f1565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b600387516148988161440b565b6148a18161440b565b036148c3576148b088516163d8565b6148ba8151612126565b945f9199614654565b97600187516148d18161440b565b6148da8161440b565b03614942576148e9885161528f565b61493a896148fb846040880151616174565b60808a01519061491561269188516001600160a01b031690565b61491f8c51615352565b91614934610da48a516001600160a01b031690565b9361618f565b959091614654565b9793600287516149518161440b565b61495a8161440b565b036149c65797879861496c895161528f565b60608501519161497b876152c3565b6149c06149b660408b0192808452898b9f886080820151936149b0610da4612b0b612b0461269188516001600160a01b031690565b946160a9565b9092519099612157565b52614654565b50600486516149d48161440b565b6149dd8161440b565b03614a9e576149ec8751616074565b5f614a04610da4610da486516001600160a01b031690565b60608501519060808a0151918360a088015198614a516040519a8b96879586947fe4c43663000000000000000000000000000000000000000000000000000000008652336004870161459d565b03925af1938415610223575f905f955f915f91614a73575b5090959199614654565b92505050614a949194503d805f833e614a8c81836102ff565b810190614553565b919592915f614a69565b7f6c02b395000000000000000000000000000000000000000000000000000000005f5260045ffd5b9692610462989694614b1c93614b00614b0e93612d7a9995610100938d6001600160a01b0380931690521660208d015260408c0190614415565b8060608b0152890190610465565b908782036080890152610465565b9160a086015284820360c0860152610465565b949391959296908451614b48906001600160a01b031690565b608086015191614b578361440b565b608086015160a0880151906040968c6040519c8d9788977f976907cc0000000000000000000000000000000000000000000000000000000089526004890197614b9f98614ac6565b03916001600160a01b031691815a5f948591f1948515610223575f905f96614cb9575b50158015614cad575b614c85576001809460091c1615614beb57909192809495505f905b614bf3575b505050505090565b8551811015614c8057614c068187612157565b5182850190614c16838351612157565b5110614c255750840184614be6565b8690614c4383612e9d81612e976111706111bf9860208c0151612157565b517fcefa3afa000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b614beb565b7fe1249165000000000000000000000000000000000000000000000000000000005f5260045ffd5b50845186511415614bcb565b9050614cd09195503d805f833e612f3281836102ff565b94905f614bc2565b614ce46100fc92614d50565b90614da5565b905f5b8251811015614d1b576001600160a01b0380614d098386612157565b511690831614613a5e57600101614ced565b6001600160a01b03827fddef98d7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111614d7a5790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8115614e62576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000009116805f5281602052614dec60405f205c9384613b8c565b9283614e3057507f0000000000000000000000000000000000000000000000000000000000000000805c905f19820191821161098e575d5b5f5260205260405f205d565b614e2457614e5d7f000000000000000000000000000000000000000000000000000000000000000061436f565b614e24565b5050565b6001600160a01b03929183811684841603614e8457505050505f1990565b614eae9361176492165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b5490565b90604051918281549182825260209260208301915f5260205f20935f905b828210614ee6575050506100fc925003836102ff565b85546001600160a01b031684526001958601958895509381019390910190614ed0565b90614f1382610370565b614f2060405191826102ff565b828152601f19614f308294610370565b01905f5b828110614f4057505050565b602090614f4b612465565b82828501015201614f34565b90604051614f64816102e3565b604060ff829454818116614f7781610fbe565b84526001600160a01b038160081c16602085015260a81c161515910152565b60608101805151935f5b858110614faf57505050505050565b80614fc36111706001936020880151612157565b614fee614fd88389905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b614ff9838751612157565b518111615040575b5050615027615011828651612157565b51615020836080890151612157565b5190615c42565b6150398288905f5260205260405f2090565b5501614fa0565b61508b6150a39161508561507c615068868a906001600160a01b03165f5260205260405f2090565b5492615075888c51612157565b5190610ba7565b8260801c6125e4565b906166e4565b9185906001600160a01b03165f5260205260405f2090565b555f80615001565b811480159291906150bf575b50506120fe57565b141590505f806150b7565b90670de0b6b3a76400009182810292818404149015171561098e57565b8181029291811591840414171561098e57565b805161510581610fbe565b61510e81610fbe565b80615121575050670de0b6b3a764000090565b8061512d600192610fbe565b036151a257602061514c610da48260049401516001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115610223575f91615189575090565b610462915060203d60201161021c5761020e81836102ff565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b91906080670de0b6b3a764000061520e612fd694806151ed8660608a0151612157565b5261321c6151ff8660c08a0151612157565b516121ef8760a08b0151612157565b04930151612157565b91906080615252612fd69380615231856060890151612157565b526121f66152438560c0890151612157565b516121ef8660a08a0151612157565b930151612157565b60061c6001161561526757565b7fcf0a95c0000000000000000000000000000000000000000000000000000000005f5260045ffd5b60041c60011661529b57565b7fd4f5779c000000000000000000000000000000000000000000000000000000005f5260045ffd5b80519081905f5b8281106153055750508110156152dd5790565b7f7e46bddc000000000000000000000000000000000000000000000000000000005f5260045ffd5b61530f8183612157565b5161531d575b6001016152ca565b92820361532a5782615315565b7f6b8c3be5000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff9060121c1664174876e8009081810291818304149015171561098e5790565b9190602061538c5f92604086526040860190610465565b930152565b9190602061538c600192604086526040860190610465565b90949291928151946153ba86612126565b945f5b8781106155a357506153d390612a708988612157565b6153dd8887612157565b52604051947f984de9e80000000000000000000000000000000000000000000000000000000092838752602087806154188860048301615375565b03816001600160a01b0385165afa968715610223575f97615582575b50604051948486526020868061544d8660048301615375565b03816001600160a01b0386165afa93841561022357613dc66154af8c6150756154a86154c5966154a18f6154916154fb9f9160209e88935f91615563575b50615bb5565b9261549c848d616700565b612157565b519061576d565b9188612157565b91670de0b6b3a764000081810391100282615bb5565b936154d485612a708c86612157565b6154de8b85612157565b526001600160a01b03604051809781958294835260048301615391565b0392165afa9081156102235761553795615531935f9361553a575b5061552361552a91612126565b9788612157565b5283610ba7565b90615c0e565b91565b61552a91935061555b6155239160203d60201161021c5761020e81836102ff565b939150615516565b602061557c92503d60201161021c5761020e81836102ff565b5f61548b565b61559c91975060203d60201161021c5761020e81836102ff565b955f615434565b806155b96155b360019388612157565b51610b99565b6155c3828a612157565b52016153bd565b6155e260409295949395606083526060830190610465565b9460208201520152565b90949183039183831161098e5760206156526001600160a01b03926156118787615bb5565b61561b8183616700565b6040519485809481937f16a0b3e00000000000000000000000000000000000000000000000000000000083528d8a600485016155ca565b0392165afa801561022357615537956121f68861569d936156a6986156ad965f926156b3575b5061568b82612a70613dc694958b612157565b986156968d8a612157565b5190615c0e565b93849251612126565b9586612157565b52610ba7565b613dc69250612a70936156d761568b9260203d60201161021c5761020e81836102ff565b93509350615678565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8115615717570490565b6156e0565b9092916157298251612126565b915f5b815181101561576657615749836157438385612157565b516150e7565b90861561571757866001920461575f8287612157565b520161572c565b5050509150565b90615777916150e7565b6001670de0b6b3a76400005f19830104019015150290565b806157975750565b6100fc90615b65565b916157aa916150e7565b90670de0b6b3a76400009081810291818304149015171561098e578115615717570490565b91949290945f955f95816157e4575050505050565b8497506127936157fd8260c06158099697980151612157565b519160a08a0151612157565b945160018160031c161561581f575b8080611713565b62ffffff91929450602a1c1664174876e8009081810291818304149015171561098e57615855670de0b6b3a764000091866150e7565b04928484116158cb57806117646158aa6158876158c294611764876001600160a01b03165f52600660205260405f2090565b546158a4886fffffffffffffffffffffffffffffffff83166125e4565b906167b7565b936001600160a01b03165f52600660205260405f2090565b555f8080615818565b7f4c69ac5d000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0390929192165f52602060056020526040805f205f5b6060860151805182101561594d579061593d61592e82600194612157565b516150208360808b0151612157565b815f52838652845f205501615910565b50505050509050565b3215806159605790565b506001600754161590565b90326159ae576001600160a01b0361599f92165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b805491820180921161098e5755565b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b90916001600160a01b03808416928315611a9057615a0985611764836001600160a01b03165f52600f60205260405f2090565b54808411615b0457839003615a3386611764846001600160a01b03165f52600f60205260405f2090565b55615a5983615a53836001600160a01b03165f52601160205260405f2090565b54610ba7565b615a62816167c5565b615a7d826001600160a01b03165f52601160205260405f2090565b551690813b156100ed576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f91615aff91868180606481016117f8565b0390a4565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b670de0b6b3a7640000808204028103615b575790565b6001810180911161098e5790565b7f000000000000000000000000000000000000000000000000000000000000000011615b8d57565b7f1ed4d118000000000000000000000000000000000000000000000000000000005f5260045ffd5b908015615be657670de0b6b3a76400009182810292818404149015171561098e576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8215615be657600191615c20916150e7565b915f19830104019015150290565b9061046292615c3c916150e7565b90615bb5565b906fffffffffffffffffffffffffffffffff808311908115615c9c575b50615c745760801b90810180911161098e5790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f615c5f565b90615cb38260801c614d50565b906fffffffffffffffffffffffffffffffff5f931680615ce0575b5050600291615cdc91613b74565b0590565b6001600160a01b03935090602460209260405195869384927f0a28a4770000000000000000000000000000000000000000000000000000000084526004840152165afa90811561022357615d41615cdc926002945f91615d4a575b50614d50565b92819250615cce565b615d63915060203d60201161021c5761020e81836102ff565b5f615d3b565b5f8112615d735790565b7fa8ce4432000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b03851660248401525f6044840152909391929183606481015b0391615dfd601f19938481018752866102ff565b5f806001600160a01b0386169287519082855af190615e1a616027565b82615e87575b5081615e7c575b5015615e34575050505050565b60405160208101959095526001600160a01b031660248501525f604485015260649081018452615e729361096491615e6c90826102ff565b826165a2565b5f80808080611713565b90503b15155f615e27565b80519192508115918215615e9f575b5050905f615e20565b615eb29250602080918301019101612223565b5f80615e96565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b038516602484015260448301959095529390928360648101615de9565b90615f246fffffffffffffffffffffffffffffffff8316614d50565b905f9260801c80615f3d575050600291615cdc91613b74565b6001600160a01b03935090602460209260405195869384927fb3d7f6b90000000000000000000000000000000000000000000000000000000084526004840152165afa90811561022357615d41615cdc926002945f91615d4a5750614d50565b9291906001600160a01b038085165f52600860205260405f205492830392831161098e5781165f52600860205260405f205492830180931161098e576100fc936167fd565b9291906001600160a01b038085165f52600860205260405f205492830180931161098e5781165f52600860205260405f205492830392831161098e576100fc936167fd565b3d15616051573d90616038826103f5565b9161604660405193846102ff565b82523d5f602084013e565b606090565b5f806104629360208151910182855af161606e616027565b91616984565b60051c6001161561608157565b7f4876c0bc000000000000000000000000000000000000000000000000000000005f5260045ffd5b90949160206160d86160c3866001600160a01b03946125e4565b946160ce8787615bb5565b61561b8183616a10565b0392165afa80156102235761553795613dc66154af8561569d946156a6998c998a616137995f9461613d575b509061612b61612461611d616132946128369798612157565b5187610ba7565b9c8c612157565b51906150e7565b61570d565b526125e4565b612836945061612461611d616132949361616861612b9460203d60201161021c5761020e81836102ff565b97509394505050616104565b9060208083516161858451826120f7565b60051b930191015e565b92919093835161619e81612126565b916161a882612126565b965f5b83811061639d5750506001600160a01b03811691604051957f984de9e800000000000000000000000000000000000000000000000000000000928388526020988989806161fb8460048301615375565b0381895afa988915610223575f9961637e575b506040518581528a81806162258b60048301615391565b03818a5afa908115610223578a61613261626093616259938f5f92616361575b9b999d9c9a989796959493929190506150ca565b8093616a10565b5f5b8981106162cf57505050506162869550604051809681948293835260048301615391565b03915afa9182156102235783616132936162ac92615537975f926162b2575b5050610ba7565b906150e7565b6162c89250803d1061021c5761020e81836102ff565b5f806162a5565b869899959750838d8394959698836162f36162ec82600198612157565b51896167a4565b806162fe8385612157565b511161631a575b505050505001908a9694989795939291616262565b818361633b61634c97616345946163348561507599612157565b510361576d565b611dd28388612157565b5192612157565b616356828b612157565b52848d8a835f616305565b6163779250803d1061021c5761020e81836102ff565b5f8f616245565b6163969199508a3d8c1161021c5761020e81836102ff565b975f61620e565b806163c76163c26163b06001948c612157565b516163bb8487612157565b51906125e4565b610b99565b6163d18288612157565b52016161ab565b60071c600116156163e557565b7fefe0265d000000000000000000000000000000000000000000000000000000005f5260045ffd5b92916164198451612126565b935f5b815181101561644e578061643d858561643760019587612157565b51615c0e565b6164478289612157565b520161641c565b50505050565b916001600160a01b0380831693841561656d5761648c83616486836001600160a01b03165f52601160205260405f2090565b546125e4565b6164ab85611764846001600160a01b03165f52600f60205260405f2090565b8481540190556164ba816167c5565b6164d5826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f6040518061650e87829190602083019252565b0390a4823b156100ed576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b039093166024820152604481019190915291829081838160648101611a00565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b6001600160a01b036165b691169182616056565b80519081151591826165f7575b50506165cc5750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61660a9250602080918301019101612223565b155f806165c3565b9064ffffffffff61662282612126565b92605a1c165f5b8281106166365750505090565b600580820290828204148215171561098e5782601f911c1690604d821161098e57600191600a0a6166678287612157565b5201616629565b62ffffff9060421c1664174876e8009081810291818304149015171561098e5790565b9093925f946166a4846080850151612157565b518181116166b3575050505050565b6166d9959650916166c891612793930361576d565b9260a061278a8260c0860151612157565b905f80808080611713565b906fffffffffffffffffffffffffffffffff6104629216615c42565b9060206001600160a01b03926004604051809581937fb677fa56000000000000000000000000000000000000000000000000000000008352165afa918215610223575f92616783575b50818110616755575050565b7fe31c95be000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61679d91925060203d60201161021c5761020e81836102ff565b905f616749565b670de0b6b3a764000091613221916150e7565b906104629160801c90615c42565b620f424081106167d25750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000808252306004830152602095939490926001600160a01b03929187836024818786165afa928315610223575f93616965575b508083106169205750616877906001600160a01b03165f52600860205260405f2090565b556040519182523060048301528316908481602481855afa948515610223575f95616901575b50508184106168c65750506168c3906001600160a01b03165f52600860205260405f2090565b55565b7f1149424d000000000000000000000000000000000000000000000000000000005f526001600160a01b03166004526024525060445260645ffd5b616918929550803d1061021c5761020e81836102ff565b925f8061689d565b90506111bf92867f1c6a5375000000000000000000000000000000000000000000000000000000005f52169291906001600160a01b0360649416600452602452604452565b61697d919350883d8a1161021c5761020e81836102ff565b915f616853565b906169c1575080511561699957805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580616a07575b6169d2575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156169ca565b9060206001600160a01b03926004604051809581937f273c1adf000000000000000000000000000000000000000000000000000000008352165afa918215610223575f92616a93575b50818111616a65575050565b7f3e8960dc000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b616aad91925060203d60201161021c5761020e81836102ff565b905f616a59565b91909163ffffffff8080941691160191821161098e5756fea26469706673582212200ab32216ead251979bead82c49668a68329180bc897ccca5b20a5d4dce33e35f64736f6c634300081a0033","opcodes":"PUSH2 0x1E0 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x36B JUMPI PUSH1 0x60 DUP2 PUSH2 0x7105 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x22 DUP3 DUP6 PUSH2 0x4D1 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x36B JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND DUP1 DUP4 SUB PUSH2 0x36B JUMPI PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP5 DUP4 DUP7 AND DUP7 SUB PUSH2 0x36B JUMPI DUP7 ADD MLOAD DUP4 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x36B JUMPI PUSH2 0x86 DUP8 MLOAD PUSH2 0x6B DUP2 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0xA DUP2 MSTORE PUSH10 0x1A5CD55B9B1BD8DAD959 PUSH1 0xB2 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x52F JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH2 0xB9 DUP8 MLOAD PUSH2 0x97 DUP2 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x1B9BDB96995C9BD1195B1D1850DBDD5B9D PUSH1 0x7A SHL DUP5 DUP3 ADD MSTORE PUSH2 0x52F JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH2 0xE6 DUP8 MLOAD PUSH2 0xCA DUP2 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0xB DUP2 MSTORE PUSH11 0x746F6B656E44656C746173 PUSH1 0xA8 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x52F JUMP JUMPDEST SWAP7 PUSH2 0x100 SWAP8 DUP9 MSTORE PUSH2 0x11E DUP2 MLOAD PUSH2 0xFB DUP2 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x185919131A5C5D5A591A5D1E50D85B1B1959 PUSH1 0x72 SHL DUP6 DUP3 ADD MSTORE PUSH2 0x52F JUMP JUMPDEST SWAP7 PUSH2 0x120 SWAP8 DUP9 MSTORE PUSH2 0x14D DUP3 MLOAD PUSH2 0x133 DUP2 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0x9 DUP2 MSTORE PUSH9 0x1CD95CDCDA5BDB9259 PUSH1 0xBA SHL DUP7 DUP3 ADD MSTORE PUSH2 0x52F JUMP JUMPDEST SWAP3 PUSH2 0x140 SWAP4 DUP5 MSTORE DUP3 MLOAD SWAP7 PUSH4 0xFBFA77CF PUSH1 0xE0 SHL SWAP1 DUP2 DUP10 MSTORE PUSH1 0x4 SWAP9 DUP8 DUP2 DUP12 DUP2 DUP13 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3AF JUMPI PUSH0 SWAP2 PUSH2 0x485 JUMPI JUMPDEST POP DUP2 ADDRESS SWAP2 AND SUB PUSH2 0x477 JUMPI DUP5 MLOAD SWAP2 DUP3 MSTORE DUP7 DUP3 DUP11 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3E8 JUMPI PUSH0 SWAP3 PUSH2 0x448 JUMPI JUMPDEST POP ADDRESS SWAP2 AND SUB PUSH2 0x43A JUMPI PUSH2 0x1C0 SWAP8 DUP9 MSTORE PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP2 MLOAD PUSH4 0x4546891D PUSH1 0xE1 SHL DUP2 MSTORE SWAP4 DUP1 DUP6 DUP9 DUP2 DUP10 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x430 JUMPI PUSH0 SWAP6 PUSH2 0x411 JUMPI JUMPDEST POP PUSH2 0x160 SWAP5 DUP6 MSTORE DUP3 MLOAD PUSH4 0x1060FDBD PUSH1 0xE1 SHL DUP2 MSTORE SWAP7 DUP2 DUP9 DUP3 DUP2 DUP11 GAS STATICCALL SWAP8 DUP9 ISZERO PUSH2 0x376 JUMPI PUSH0 SWAP9 PUSH2 0x3F2 JUMPI JUMPDEST POP PUSH2 0x1A0 SWAP8 DUP9 MSTORE DUP4 MLOAD PUSH4 0xCD51C12F PUSH1 0xE0 SHL DUP2 MSTORE SWAP7 DUP3 DUP9 DUP4 DUP2 DUP5 GAS STATICCALL SWAP8 DUP9 ISZERO PUSH2 0x3E8 JUMPI PUSH0 SWAP9 PUSH2 0x3B9 JUMPI JUMPDEST POP PUSH2 0x180 SWAP8 DUP9 MSTORE DUP5 MLOAD PUSH4 0x716585D PUSH1 0xE5 SHL DUP2 MSTORE DUP4 DUP2 DUP5 DUP2 DUP6 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x3AF JUMPI SWAP1 DUP5 SWAP3 SWAP2 PUSH0 SWAP2 PUSH2 0x380 JUMPI JUMPDEST POP PUSH1 0x80 MSTORE DUP6 MLOAD PUSH4 0x29CAB551 PUSH1 0xE1 SHL DUP2 MSTORE SWAP3 DUP4 SWAP2 DUP3 SWAP1 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x376 JUMPI PUSH0 SWAP3 PUSH2 0x344 JUMPI JUMPDEST POP POP PUSH1 0xA0 MSTORE PUSH1 0x9 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x8 SWAP3 SWAP1 SWAP3 SHL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD PUSH2 0x6B02 SWAP8 SWAP1 SWAP7 SWAP1 DUP9 PUSH2 0x603 DUP10 CODECOPY PUSH1 0x80 MLOAD DUP9 PUSH2 0x5B67 ADD MSTORE PUSH1 0xA0 MLOAD DUP9 PUSH2 0x3B18 ADD MSTORE PUSH1 0xC0 MLOAD DUP9 DUP2 DUP2 PUSH2 0x131A ADD MSTORE PUSH2 0x166E ADD MSTORE PUSH1 0xE0 MLOAD DUP9 DUP2 DUP2 PUSH2 0x135B ADD MSTORE DUP2 DUP2 PUSH2 0x4DF5 ADD MSTORE PUSH2 0x4E39 ADD MSTORE MLOAD DUP8 PUSH2 0x4DB5 ADD MSTORE MLOAD DUP7 DUP2 DUP2 PUSH2 0x1445 ADD MSTORE PUSH2 0x26E9 ADD MSTORE MLOAD DUP6 DUP2 DUP2 PUSH2 0x1387 ADD MSTORE DUP2 DUP2 PUSH2 0x1411 ADD MSTORE PUSH2 0x26B5 ADD MSTORE MLOAD DUP5 POP POP MLOAD DUP4 PUSH2 0x1B1A ADD MSTORE MLOAD DUP3 PUSH2 0x1BC9 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x9BC ADD MSTORE PUSH2 0x15BF ADD MSTORE RETURN JUMPDEST SWAP1 DUP1 SWAP3 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x36F JUMPI JUMPDEST PUSH2 0x35B DUP2 DUP4 PUSH2 0x4D1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x36B JUMPI MLOAD PUSH0 DUP1 PUSH2 0x287 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x351 JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP2 SWAP5 SWAP3 POP RETURNDATASIZE DUP4 GT PUSH2 0x3A8 JUMPI JUMPDEST PUSH2 0x397 DUP2 DUP4 PUSH2 0x4D1 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x36B JUMPI DUP4 SWAP2 MLOAD PUSH0 PUSH2 0x262 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x38D JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x3DA SWAP2 SWAP9 POP DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x3E1 JUMPI JUMPDEST PUSH2 0x3D2 DUP2 DUP4 PUSH2 0x4D1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x513 JUMP JUMPDEST SWAP7 PUSH0 PUSH2 0x236 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3C8 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x40A SWAP2 SWAP9 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x3E1 JUMPI PUSH2 0x3D2 DUP2 DUP4 PUSH2 0x4D1 JUMP JUMPDEST SWAP7 PUSH0 PUSH2 0x20D JUMP JUMPDEST DUP2 PUSH2 0x429 SWAP3 SWAP7 POP RETURNDATASIZE DUP8 GT PUSH2 0x3E1 JUMPI PUSH2 0x3D2 DUP2 DUP4 PUSH2 0x4D1 JUMP JUMPDEST SWAP4 PUSH0 PUSH2 0x1E4 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP7 PUSH4 0x1BBE95C7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH2 0x469 SWAP2 SWAP3 POP DUP8 RETURNDATASIZE DUP10 GT PUSH2 0x470 JUMPI JUMPDEST PUSH2 0x461 DUP2 DUP4 PUSH2 0x4D1 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4F4 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x19F JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x457 JUMP JUMPDEST DUP9 PUSH4 0x1AB9D9D PUSH1 0xE4 SHL PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH2 0x49C SWAP2 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x470 JUMPI PUSH2 0x461 DUP2 DUP4 PUSH2 0x4D1 JUMP JUMPDEST PUSH0 PUSH2 0x17B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x4BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x4BD JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x36B JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x36B JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x36B JUMPI MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x36B JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x53C DUP3 PUSH2 0x4A2 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH2 0x5BD PUSH1 0x3A PUSH1 0x20 DUP5 ADD PUSH12 0x5661756C7453746F72616765 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP3 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE MLOAD DUP1 SWAP2 PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x4D1 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x5EE JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x5E3 DUP3 PUSH2 0x4A2 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x15A8 JUMPI PUSH2 0x1580 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x15AFD409 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x15DACBEA EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0x21457897 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x2BFB780C EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x43583BE5 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x48C89491 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x4AF29EC4 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0xAE639329 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB9A8EFFA EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xC9C1661B EQ PUSH2 0xA5 JUMPI PUSH4 0xD2C725E0 SUB PUSH2 0xE JUMPI PUSH2 0xB14 JUMP JUMPDEST PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x99D JUMP JUMPDEST PUSH2 0x89A JUMP JUMPDEST PUSH2 0x7CA JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x4E8 JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0xED JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLDATALOAD SWAP1 PUSH2 0xFC DUP3 PUSH2 0xDC JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x11B DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x126 PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x12E PUSH2 0x166C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP3 DUP3 SWAP1 PUSH1 0x24 SWAP1 DUP3 SWAP1 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH2 0x1E6 SWAP5 PUSH2 0x1BA SWAP3 PUSH0 SWAP2 PUSH2 0x1F4 JUMPI JUMPDEST POP DUP1 PUSH2 0x1B4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0xBA7 JUMP JUMPDEST SWAP2 DUP1 DUP4 GT PUSH2 0x1EA JUMPI JUMPDEST POP DUP2 PUSH2 0x1CE SWAP2 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP2 POP PUSH2 0x1CE PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x216 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI JUMPDEST PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH0 PUSH2 0x197 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x204 JUMP JUMPDEST PUSH2 0xB61 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH2 0x276 PUSH1 0x4 CALLDATALOAD PUSH2 0x248 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x254 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x261 DUP3 PUSH2 0xDC JUMP JUMPDEST PUSH2 0x270 PUSH1 0x64 CALLDATALOAD DUP1 SWAP5 DUP4 CALLER PUSH2 0x16FB JUMP JUMPDEST CALLER PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x281 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0xFC DUP3 PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x180 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2C2 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xED JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x3A2 DUP2 PUSH2 0x370 JUMP JUMPDEST SWAP4 PUSH2 0x3B0 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2FF JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3D9 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x3CB JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0xED JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2C2 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x41D DUP3 PUSH2 0x3F5 JUMP JUMPDEST SWAP2 PUSH2 0x42B PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x2FF JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0xED JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xED JUMPI DUP2 PUSH1 0x20 PUSH2 0x462 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x411 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x484 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x476 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4DA SWAP1 PUSH2 0x462 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0xED JUMPI PUSH1 0xC0 SWAP1 DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xED JUMPI PUSH2 0x522 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x52E DUP3 PUSH1 0x4 ADD PUSH2 0xF1 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x53C PUSH1 0x24 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 DUP3 ADD CALLDATALOAD DUP4 DUP2 GT PUSH2 0xED JUMPI PUSH2 0x567 SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP6 ADD ADD PUSH2 0x388 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x578 PUSH1 0x84 DUP4 ADD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA4 DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH2 0x59F PUSH2 0x5A9 SWAP3 PUSH1 0x4 PUSH2 0x1E6 SWAP6 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0xBB4 JUMP JUMPDEST PUSH1 0x40 SWAP4 SWAP2 SWAP4 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4BD JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0xED JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0xFC DUP3 PUSH2 0x5B8 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0xED JUMPI PUSH1 0xE0 SWAP1 DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xED JUMPI PUSH2 0x607 PUSH2 0x342 JUMP JUMPDEST PUSH2 0x613 DUP3 PUSH1 0x4 ADD PUSH2 0x5C2 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x621 PUSH1 0x24 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x632 PUSH1 0x44 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x643 PUSH1 0x64 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x84 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA4 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC4 DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH2 0x67E PUSH2 0x688 SWAP3 PUSH1 0x4 PUSH2 0x1E6 SWAP6 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0xD3E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x60 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH2 0x1E6 SWAP2 PUSH2 0x688 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATALOAD PUSH2 0x6E7 DUP2 PUSH2 0x5B8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH2 0x6F5 DUP2 PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH2 0x706 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0xFCD JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x462 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x498 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0xED JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xED JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0xED JUMPI CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0xED JUMPI PUSH2 0x1E6 SWAP2 PUSH1 0x24 PUSH2 0x788 SWAP3 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x720 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0xED JUMPI JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0x462 SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0xED JUMPI PUSH1 0xC0 SWAP1 DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xED JUMPI PUSH2 0x804 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x810 DUP3 PUSH1 0x4 ADD PUSH2 0xF1 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x81E PUSH1 0x24 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 DUP3 ADD CALLDATALOAD DUP4 DUP2 GT PUSH2 0xED JUMPI PUSH2 0x83F SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP6 ADD ADD PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x85A PUSH1 0x84 DUP4 ADD PUSH2 0x794 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA4 DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH2 0x881 PUSH2 0x88B SWAP3 PUSH1 0x4 PUSH2 0x1E6 SWAP6 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x13DC JUMP JUMPDEST PUSH1 0x40 SWAP4 SWAP2 SWAP4 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x7A1 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x8B7 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x8C4 DUP3 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x8D0 PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x8D8 PUSH2 0x166C JUMP JUMPDEST PUSH2 0x8EA PUSH2 0x8E4 DUP4 PUSH2 0x4D50 JUMP JUMPDEST DUP3 PUSH2 0x4DA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP4 DUP6 SUB SWAP5 DUP6 GT PUSH2 0x98E JUMPI SWAP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 MSTORE PUSH2 0x969 SWAP2 SWAP1 PUSH2 0x964 PUSH1 0x64 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x65A2 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0xB6C JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xED JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH2 0x276 PUSH1 0x4 CALLDATALOAD PUSH2 0xA00 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0xA0C DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 CALLER PUSH2 0x18DF JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xA33 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xA40 DUP3 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 SWAP3 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0xAE9 JUMPI PUSH0 SWAP4 SWAP3 SWAP4 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH1 0x20 DUP7 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP6 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xABC JUMPI DUP7 PUSH2 0xAA9 DUP8 PUSH2 0xAA3 DUP4 DUP13 SUB DUP5 PUSH2 0x2FF JUMP JUMPDEST DUP3 PUSH2 0x4CEA JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST SWAP1 SWAP2 SWAP3 DUP1 PUSH2 0xADD DUP7 SWAP10 DUP5 DUP4 SWAP9 SLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP3 AND DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP9 ADD SWAP5 SWAP4 SWAP3 ADD SWAP1 PUSH2 0xA8B JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xED JUMPI MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP1 PUSH2 0xBBD PUSH2 0x166C JUMP JUMPDEST PUSH2 0xBD0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND PUSH2 0x1AC5 JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBE4 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1B12 JUMP JUMPDEST PUSH2 0xC02 PUSH2 0xBFD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1C3A JUMP JUMPDEST SWAP1 PUSH2 0xC56 PUSH1 0x20 DUP4 ADD MLOAD MLOAD PUSH2 0xC1D PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x20F7 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP6 ADD SWAP1 PUSH2 0xC37 DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP9 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0x2198 JUMP JUMPDEST SWAP3 PUSH2 0xC47 DUP8 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x10 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0xCCF JUMPI JUMPDEST POP POP POP DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST SWAP5 SWAP1 SWAP2 SWAP6 DUP7 PUSH2 0xC6A DUP4 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x11 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0xC78 JUMPI JUMPDEST POP POP POP POP SWAP3 SWAP2 SWAP1 JUMP JUMPDEST DUP5 SWAP8 POP SWAP4 PUSH2 0xCC5 SWAP5 PUSH2 0xCBB PUSH2 0xCAE PUSH2 0xC97 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0x2D88 JUMP JUMPDEST SWAP3 PUSH0 DUP1 DUP1 DUP1 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xCF7 PUSH2 0xD36 SWAP5 DUP9 DUP11 PUSH2 0xCEF PUSH2 0xCAE PUSH2 0xC97 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0xD2B PUSH2 0xD25 PUSH2 0xD0E DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP9 PUSH2 0x2391 JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x2198 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0xC4C JUMP JUMPDEST SWAP1 PUSH2 0xD47 PUSH2 0x166C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xD60 DUP2 DUP5 MLOAD AND PUSH2 0x1AC5 JUMP JUMPDEST PUSH2 0xD74 PUSH2 0xBE4 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP5 ADD MLOAD ISZERO PUSH2 0xF69 JUMPI PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xDB0 PUSH2 0xDA4 PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 AND EQ PUSH2 0xF41 JUMPI PUSH2 0xDCB PUSH2 0xBFD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0xDD6 DUP5 DUP3 PUSH2 0x2F42 JUMP JUMPDEST SWAP1 PUSH2 0xDE2 DUP6 DUP4 DUP4 PUSH2 0x2FD9 JUMP JUMPDEST DUP6 MLOAD PUSH1 0xC SHR PUSH1 0x1 AND PUSH2 0xEC6 JUMPI JUMPDEST DUP6 MLOAD PUSH2 0xE09 SWAP2 SWAP1 PUSH1 0xB SHR PUSH1 0x1 AND PUSH2 0xE85 JUMPI JUMPDEST DUP7 DUP5 DUP5 PUSH2 0x3390 JUMP JUMPDEST SWAP8 SWAP2 SWAP8 SWAP5 SWAP1 SWAP8 DUP4 SWAP8 PUSH2 0xE20 DUP5 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xD SHR AND SWAP1 JUMP JUMPDEST PUSH2 0xE50 JUMPI JUMPDEST POP POP POP POP POP MLOAD PUSH2 0xE34 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0xE3D DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0xE48 JUMPI POP DUP2 SWAP3 SWAP2 SWAP1 JUMP JUMPDEST SWAP2 DUP1 SWAP4 POP SWAP2 SWAP1 JUMP JUMPDEST DUP6 SWAP9 POP SWAP1 PUSH2 0xE6F PUSH2 0xCAE PUSH2 0xC97 PUSH2 0xE7A SWAP9 SWAP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD SWAP2 CALLER SWAP3 PUSH2 0x3847 JUMP JUMPDEST SWAP3 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0xE25 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEBF PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MLOAD PUSH2 0xEB8 PUSH2 0xCAE DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP6 PUSH2 0x3284 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0xE01 JUMP JUMPDEST PUSH2 0xEFF SWAP1 PUSH2 0xEDB DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xEF9 PUSH2 0xCAE DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x3110 JUMP JUMPDEST PUSH2 0xF1C PUSH2 0xF16 PUSH2 0xD0E DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0xF27 DUP3 DUP7 DUP4 PUSH2 0x31C9 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xE09 PUSH2 0xF3A DUP7 DUP5 DUP5 PUSH2 0x2FD9 JUMP JUMPDEST SWAP1 POP PUSH2 0xDEF JUMP JUMPDEST PUSH32 0xA54B181D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x57A456B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0xFC8 JUMPI JUMP JUMPDEST PUSH2 0xF91 JUMP JUMPDEST PUSH2 0xFD5 PUSH2 0x166C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH2 0x12D2 JUMPI PUSH1 0x40 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 MLOAD AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x12A6 JUMPI PUSH1 0x4 SWAP5 POP PUSH2 0x1015 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x102B PUSH2 0xDA4 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 DUP1 SWAP3 PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x80 SWAP6 PUSH0 SWAP2 PUSH2 0x1277 JUMPI JUMPDEST POP AND PUSH2 0x1083 DUP2 PUSH2 0x107E DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3ABF JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x109F PUSH1 0x60 DUP7 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x3B15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x10AF DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x10B8 DUP2 PUSH2 0xFBE JUMP JUMPDEST SUB PUSH2 0x120C JUMPI PUSH2 0x10E0 SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x10CD DUP4 PUSH2 0xFBE JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0x4005 JUMP JUMPDEST PUSH32 0xEEB740C90BF2B18C9532EB7D473137767036D893DFF3E009F32718F821B2A4C0 DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x113E PUSH2 0x1120 PUSH2 0xDA4 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 JUMPDEST DUP1 MLOAD PUSH2 0x114D DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x1156 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x11C2 JUMPI ADD MLOAD DUP1 DUP5 LT PUSH2 0x118F JUMPI POP PUSH2 0x1182 PUSH2 0x117D SWAP2 DUP5 SWAP3 DUP4 SWAP2 JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3B15 JUMP JUMPDEST PUSH2 0x118A PUSH2 0x1647 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 REVERT JUMPDEST ADD MLOAD DUP1 DUP6 GT PUSH2 0x11DC JUMPI POP PUSH2 0x1182 PUSH2 0x117D SWAP2 DUP6 SWAP3 DUP4 SWAP2 PUSH2 0x1170 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP6 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x122F SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x121C DUP4 PUSH2 0xFBE JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0x3BA7 JUMP JUMPDEST PUSH32 0x3771D13C67011E31E12031C54BB59B0BF544A80B81D280A3711E172AA8B7F47B DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x126F PUSH2 0x1120 PUSH2 0xDA4 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x1142 JUMP JUMPDEST PUSH2 0x1299 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x129F JUMPI JUMPDEST PUSH2 0x1291 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12FA JUMP JUMPDEST PUSH0 PUSH2 0x1067 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1287 JUMP JUMPDEST DUP5 PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xED JUMPI MLOAD PUSH2 0x462 DUP2 PUSH2 0xDC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x1351 PUSH2 0x134B PUSH32 0x0 SWAP3 DUP4 TLOAD ISZERO SWAP6 DUP7 PUSH2 0x13D3 JUMPI JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x411 JUMP JUMPDEST CALLER PUSH2 0x6056 JUMP JUMPDEST SWAP3 PUSH2 0x1359 JUMPI POP JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH2 0x13AB JUMPI PUSH0 SWAP1 TSTORE PUSH2 0xFC PUSH32 0x0 PUSH2 0x436F JUMP JUMPDEST PUSH32 0x20F1D86D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP6 TSTORE PUSH2 0x1344 JUMP JUMPDEST SWAP1 PUSH2 0x13E5 PUSH2 0x166C JUMP JUMPDEST PUSH2 0x13F8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND PUSH2 0x1AC5 JUMP JUMPDEST PUSH2 0x140C PUSH2 0xBE4 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1469 PUSH32 0x0 TLOAD PUSH2 0x1442 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0x4380 JUMP JUMPDEST PUSH2 0x1482 PUSH2 0x147D DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1ED2 JUMP JUMPDEST SWAP1 PUSH2 0x14D6 PUSH1 0x20 DUP4 ADD MLOAD MLOAD PUSH2 0x149D PUSH1 0x40 DUP7 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x20F7 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP6 ADD SWAP1 PUSH2 0x14B7 DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP9 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0x4399 JUMP JUMPDEST SWAP3 PUSH2 0x14C7 DUP8 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xE SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1529 JUMPI JUMPDEST POP POP POP DUP5 DUP5 PUSH2 0x45DA JUMP JUMPDEST SWAP5 SWAP1 SWAP6 DUP7 DUP5 PUSH2 0x14EA DUP5 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xF SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x14F9 JUMPI JUMPDEST POP POP POP POP POP SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x151F SWAP6 POP PUSH2 0x1515 PUSH2 0xCAE PUSH2 0xC97 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0x4B2F JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP7 DUP2 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0x1550 PUSH2 0x1578 SWAP5 DUP9 DUP11 PUSH2 0x1549 PUSH2 0xCAE PUSH2 0xC97 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER PUSH2 0x4477 JUMP JUMPDEST PUSH2 0x156D PUSH2 0x1567 PUSH2 0xD0E DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP9 PUSH2 0x23FE JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x4399 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x14CC JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x1580 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x15EE JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x161F JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x1695 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x16C7 SWAP1 PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x98E JUMPI PUSH2 0xFC SWAP2 PUSH0 SUB SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x170A DUP3 DUP5 DUP7 PUSH2 0x4E66 JUMP JUMPDEST PUSH0 NOT DUP2 SUB PUSH2 0x171A JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 GT PUSH2 0x18A4 JUMPI SUB SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x186F JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x183A JUMPI DUP5 PUSH2 0x177A DUP6 PUSH2 0x1764 DUP7 PUSH2 0x1764 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x1814 SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x1821 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST DUP1 PUSH2 0x182E PUSH2 0x1834 SWAP3 PUSH2 0x2AE JUMP JUMPDEST DUP1 PUSH2 0x993 JUMP JUMPDEST PUSH0 PUSH2 0x1803 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST SWAP3 SWAP1 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x1A90 JUMPI DUP1 DUP7 AND SWAP2 DUP3 ISZERO PUSH2 0x1A5B JUMPI PUSH2 0x191F DUP7 PUSH2 0x1764 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP7 GT PUSH2 0x1A1E JUMPI DUP6 SWAP1 SUB PUSH2 0x1949 DUP8 PUSH2 0x1764 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x1969 DUP8 PUSH2 0x1764 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP6 DUP2 SLOAD ADD SWAP1 SSTORE AND SWAP2 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x19A6 DUP9 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x1A11 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x182E PUSH2 0xFC SWAP3 PUSH2 0x2AE JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x1AE7 JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP1 PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x1C2C JUMPI JUMPDEST PUSH2 0x1C04 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x2 SHR AND SWAP1 PUSH2 0x1B6D PUSH1 0x5A SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI DUP3 PUSH2 0x1BBE JUMPI JUMPDEST POP POP SWAP1 POP PUSH2 0x1B8A JUMPI POP JUMP JUMPDEST PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1BF0 SWAP3 POP PUSH2 0x1BF9 SWAP4 PUSH32 0x0 SWAP3 SHR AND PUSH2 0x6AB4 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST TIMESTAMP GT ISZERO DUP1 PUSH0 DUP1 PUSH2 0x1B7F JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1C49 DUP4 PUSH2 0x2C7 JUMP JUMPDEST PUSH0 DUP4 MSTORE DUP3 PUSH1 0x20 DUP2 ADD SWAP2 PUSH1 0x60 DUP1 DUP5 MSTORE DUP2 DUP4 ADD SWAP1 DUP1 DUP3 MSTORE DUP1 DUP5 ADD SWAP1 DUP1 DUP3 MSTORE PUSH1 0x80 SWAP4 PUSH1 0x80 DUP7 ADD DUP3 DUP2 MSTORE PUSH1 0xA0 DUP8 ADD DUP4 DUP2 MSTORE PUSH1 0xC0 DUP9 ADD SWAP4 DUP5 MSTORE PUSH2 0x1C85 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP4 PUSH0 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SLOAD SWAP3 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x1CC1 DUP6 PUSH0 KECCAK256 SWAP5 PUSH1 0x3 PUSH1 0x20 MSTORE DUP7 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD SWAP13 MSTORE PUSH2 0x4EB2 JUMP JUMPDEST DUP12 MSTORE PUSH2 0x1CCC DUP11 PUSH2 0x4F09 JUMP JUMPDEST DUP9 MSTORE PUSH2 0x1CD7 DUP11 PUSH2 0x2126 JUMP JUMPDEST DUP8 MSTORE PUSH2 0x1CE2 DUP11 PUSH2 0x2126 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1CEF DUP10 DUP14 MLOAD PUSH2 0x6612 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1CFA DUP9 PUSH2 0x2126 JUMP JUMPDEST DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x1EBE JUMPI JUMPDEST POP DUP4 PUSH2 0x1EAC JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x1D76 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x1D67 PUSH2 0x1D4F PUSH2 0x1D6E SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x4F96 JUMP JUMPDEST PUSH2 0x462 PUSH2 0x1647 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x1DD8 DUP5 PUSH2 0x1DC4 DUP2 PUSH2 0x1DB6 PUSH2 0x1DB1 DUP16 DUP16 PUSH2 0x1170 DUP6 PUSH2 0x1D9C SWAP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4F57 JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x1DD2 DUP4 DUP4 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x2157 JUMP JUMPDEST POP PUSH2 0x1DE2 DUP2 PUSH2 0x50FA JUMP JUMPDEST PUSH2 0x1DED DUP6 DUP14 MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x1E0B PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x51CA JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x1E9F JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x1E81 JUMPI JUMPDEST POP POP PUSH2 0x1E32 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x1D18 JUMP JUMPDEST DUP3 PUSH2 0x1E55 SWAP3 PUSH2 0x1E4C DUP3 PUSH2 0x1E45 DUP9 MLOAD PUSH2 0x666E JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x6691 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x1E65 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x1E26 JUMP JUMPDEST PUSH2 0x1E78 SWAP4 PUSH2 0x1E72 SWAP2 PUSH2 0xBA7 JUMP JUMPDEST SWAP2 PUSH2 0x51CA JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x1E5C JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x1E8E DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x1E97 DUP2 PUSH2 0xFBE JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x1E1F JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x1E2C JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x1D16 JUMP JUMPDEST PUSH2 0x1EC9 SWAP2 SWAP5 POP PUSH2 0x666E JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1EE1 DUP4 PUSH2 0x2C7 JUMP JUMPDEST PUSH0 DUP4 MSTORE DUP3 PUSH1 0x20 DUP2 ADD SWAP2 PUSH1 0x60 DUP1 DUP5 MSTORE DUP2 DUP4 ADD SWAP1 DUP1 DUP3 MSTORE DUP1 DUP5 ADD SWAP1 DUP1 DUP3 MSTORE PUSH1 0x80 SWAP4 PUSH1 0x80 DUP7 ADD DUP3 DUP2 MSTORE PUSH1 0xA0 DUP8 ADD DUP4 DUP2 MSTORE PUSH1 0xC0 DUP9 ADD SWAP4 DUP5 MSTORE PUSH2 0x1F1D PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP4 PUSH0 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SLOAD SWAP3 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x1F59 DUP6 PUSH0 KECCAK256 SWAP5 PUSH1 0x3 PUSH1 0x20 MSTORE DUP7 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD SWAP13 MSTORE PUSH2 0x4EB2 JUMP JUMPDEST DUP12 MSTORE PUSH2 0x1F64 DUP11 PUSH2 0x4F09 JUMP JUMPDEST DUP9 MSTORE PUSH2 0x1F6F DUP11 PUSH2 0x2126 JUMP JUMPDEST DUP8 MSTORE PUSH2 0x1F7A DUP11 PUSH2 0x2126 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1F87 DUP10 DUP14 MLOAD PUSH2 0x6612 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1F92 DUP9 PUSH2 0x2126 JUMP JUMPDEST DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x20E3 JUMPI JUMPDEST POP DUP4 PUSH2 0x20D1 JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x1FE7 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x1D67 PUSH2 0x1D4F PUSH2 0x1D6E SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x200D DUP5 PUSH2 0x1DC4 DUP2 PUSH2 0x1DB6 PUSH2 0x1DB1 DUP16 DUP16 PUSH2 0x1170 DUP6 PUSH2 0x1D9C SWAP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST POP PUSH2 0x2017 DUP2 PUSH2 0x50FA JUMP JUMPDEST PUSH2 0x2022 DUP6 DUP14 MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x2040 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x5217 JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x20C4 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x20A6 JUMPI JUMPDEST POP POP PUSH2 0x2067 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x1FB0 JUMP JUMPDEST DUP3 PUSH2 0x207A SWAP3 PUSH2 0x1E4C DUP3 PUSH2 0x1E45 DUP9 MLOAD PUSH2 0x666E JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x208A JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x205B JUMP JUMPDEST PUSH2 0x209D SWAP4 PUSH2 0x2097 SWAP2 PUSH2 0xBA7 JUMP JUMPDEST SWAP2 PUSH2 0x5217 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x2081 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x20B3 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x20BC DUP2 PUSH2 0xFBE JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x2054 JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x2061 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x1FAE JUMP JUMPDEST PUSH2 0x20EE SWAP2 SWAP5 POP PUSH2 0x666E JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x1FA7 JUMP JUMPDEST SUB PUSH2 0x20FE JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2130 DUP3 PUSH2 0x370 JUMP JUMPDEST PUSH2 0x213D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2FF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x214D DUP3 SWAP5 PUSH2 0x370 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x216B JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0x21AB DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0x50AB JUMP JUMPDEST PUSH2 0x21B4 DUP4 PUSH2 0x2126 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x21C6 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x21FB PUSH2 0x21D6 PUSH1 0x1 SWAP4 DUP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21F6 PUSH2 0x21E4 DUP5 DUP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP6 DUP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x576D JUMP JUMPDEST PUSH2 0x2205 DUP3 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x21B7 JUMP JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0xFC8 JUMPI JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0xED JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xED JUMPI PUSH2 0x462 SWAP1 PUSH2 0x2216 JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0xFC8 JUMPI MSTORE JUMP JUMPDEST SWAP6 SWAP3 SWAP4 PUSH2 0x2275 PUSH2 0x2299 SWAP6 PUSH2 0x462 SWAP10 SWAP8 SWAP4 PUSH2 0x228B SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x2237 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 PUSH2 0x231F PUSH2 0x22C9 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0x22D9 DUP10 PUSH2 0x220C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x40 DUP4 ADD MLOAD SWAP13 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0xBA5F9F4000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x2244 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x2362 JUMPI JUMPDEST POP ISZERO PUSH2 0x233A JUMPI JUMP JUMPDEST PUSH32 0x2AAF886600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2384 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x238A JUMPI JUMPDEST PUSH2 0x237C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2223 JUMP JUMPDEST PUSH0 PUSH2 0x2332 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2372 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x23A9 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x23F8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x23D8 PUSH2 0x23D2 DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x50FA JUMP JUMPDEST PUSH2 0x23E6 DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x51CA JUMP JUMPDEST ADD PUSH2 0x239B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x2416 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x245F PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x243F PUSH2 0x23D2 DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x244D DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x5217 JUMP JUMPDEST ADD PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2472 DUP3 PUSH2 0x2E3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xED JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x249E DUP2 PUSH2 0x370 JUMP JUMPDEST SWAP4 PUSH2 0x24AC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2FF JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x24D5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x24C7 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xED JUMPI DUP1 MLOAD SWAP1 PUSH2 0x24FB DUP3 PUSH2 0x3F5 JUMP JUMPDEST SWAP3 PUSH2 0x2509 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2FF JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xED JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0xED JUMPI DUP1 MLOAD SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0xED JUMPI DUP5 PUSH2 0x255A SWAP2 DUP4 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0xED JUMPI DUP2 PUSH2 0x2573 SWAP2 DUP5 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0xED JUMPI PUSH2 0x462 SWAP3 ADD PUSH2 0x24E4 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x462 SWAP6 SWAP4 PUSH2 0x25C8 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x25BA SWAP4 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x260E SWAP1 PUSH2 0x462 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP3 PUSH2 0x2625 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x2630 PUSH2 0x2465 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x2644 DUP3 MLOAD MLOAD DUP1 DUP8 MSTORE PUSH2 0x2126 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP5 ADD SWAP7 DUP8 MLOAD PUSH2 0x2655 DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x265E DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2A93 JUMPI POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 PUSH2 0x2673 DUP8 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP6 PUSH2 0x26AF DUP4 PUSH1 0x80 DUP13 ADD MLOAD PUSH2 0x26A9 PUSH2 0x2691 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x571C JUMP JUMPDEST SWAP3 PUSH2 0x2720 PUSH32 0x0 TLOAD PUSH2 0x26E6 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2A16 JUMPI JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD DUP1 DUP3 GT PUSH2 0x29E5 JUMPI POP PUSH2 0x273E DUP2 SWAP11 SWAP10 SWAP11 PUSH2 0x578F JUMP JUMPDEST PUSH1 0x20 DUP11 ADD SWAP9 PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x28A0 JUMPI DUP13 PUSH2 0x2759 DUP3 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2763 DUP2 PUSH2 0x578F JUMP JUMPDEST PUSH2 0x276D DUP4 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x288E JUMPI DUP2 PUSH2 0x2793 DUP5 PUSH1 0xA0 PUSH2 0x278A DUP3 PUSH1 0xC0 PUSH2 0x279A SWAP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x57A0 JUMP JUMPDEST DUP1 PUSH2 0x27A5 DUP4 DUP11 PUSH2 0x2157 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x27B5 PUSH2 0x1170 DUP4 DUP12 MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x60 DUP12 ADD PUSH2 0x27C4 DUP5 DUP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP4 LT PUSH2 0x2842 JUMPI POP DUP15 DUP4 PUSH2 0x1E72 DUP16 DUP16 DUP16 SWAP7 PUSH2 0x2836 SWAP2 PUSH2 0x281E DUP7 PUSH2 0x2816 DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x27F3 DUP9 PUSH2 0x283C SWAP16 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x280F PUSH2 0x2800 DUP5 DUP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP14 PUSH2 0x57CF JUMP JUMPDEST DUP8 MSTORE SWAP3 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x282D DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP1 PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0xBA7 JUMP JUMPDEST ADD PUSH2 0x2745 JUMP JUMPDEST SWAP2 PUSH2 0x2851 DUP5 PUSH2 0x11BF SWAP5 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP PUSH2 0x289A DUP2 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x27A7 JUMP JUMPDEST POP SWAP4 SWAP10 POP SWAP6 SWAP5 POP SWAP6 SWAP3 SWAP9 PUSH2 0x28C6 SWAP2 SWAP8 POP PUSH2 0x28C1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x58F3 JUMP JUMPDEST PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 PUSH2 0x28F8 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x291A DUP7 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x2913 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP2 PUSH2 0x16FB JUMP JUMPDEST PUSH2 0x2922 PUSH2 0x5956 JUMP JUMPDEST PUSH2 0x29BA JUMPI JUMPDEST PUSH2 0x294D DUP7 PUSH2 0x293C DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x59D6 JUMP JUMPDEST PUSH2 0x2981 PUSH2 0x2691 PUSH2 0x2975 PUSH2 0x2967 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x1170 DUP9 PUSH2 0x220C JUMP JUMPDEST SWAP3 PUSH2 0x29A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x2997 DUP9 PUSH2 0x220C JUMP JUMPDEST DUP13 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x25F1 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x29B4 PUSH2 0x1647 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x29E0 DUP7 PUSH2 0x29CF DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH2 0x2927 JUMP JUMPDEST PUSH32 0x31D38E0B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP9 SWAP5 SWAP2 PUSH2 0x2A29 DUP12 SWAP8 SWAP5 SWAP10 SWAP6 SWAP3 SWAP12 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP11 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2A83 JUMPI DUP1 DUP12 PUSH2 0x2A7C DUP16 SWAP4 PUSH2 0x2A76 PUSH2 0x2A65 DUP16 DUP4 SWAP1 PUSH2 0x2A5B PUSH1 0x1 SWAP10 PUSH2 0x2A55 DUP5 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x576D JUMP JUMPDEST PUSH2 0x1DD2 DUP4 DUP4 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2A70 DUP4 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0xBA7 JUMP JUMPDEST SWAP3 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x2A2C JUMP JUMPDEST POP SWAP2 SWAP5 SWAP9 SWAP4 SWAP7 SWAP11 POP SWAP2 SWAP5 SWAP9 PUSH2 0x2725 JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x1 DUP9 MLOAD PUSH2 0x2AA2 DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2AAB DUP2 PUSH2 0x220C JUMP JUMPDEST SUB PUSH2 0x2B2F JUMPI PUSH2 0x2ABA DUP10 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP7 SWAP3 DUP11 PUSH2 0x2B29 PUSH2 0x2B1F DUP12 DUP11 PUSH1 0x40 PUSH2 0x2ADA PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x52C3 JUMP JUMPDEST SWAP3 ADD SWAP5 DUP3 DUP7 MSTORE DUP7 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x2B19 PUSH2 0xDA4 PUSH2 0x2B0B PUSH2 0x2B04 PUSH2 0x2691 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0x55EC JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP11 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x2725 JUMP JUMPDEST PUSH1 0x2 DUP9 SWAP7 SWAP3 SWAP7 MLOAD PUSH2 0x2B3F DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2B48 DUP2 PUSH2 0x220C JUMP JUMPDEST SUB PUSH2 0x2BDB JUMPI PUSH2 0x2B57 DUP10 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH2 0x2BD4 DUP3 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x2B7B PUSH2 0x2B6D DUP4 MLOAD PUSH2 0x52C3 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD SWAP4 DUP2 DUP6 MSTORE MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2B87 DUP4 MLOAD DUP9 PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP12 PUSH2 0x2B9A PUSH1 0x80 DUP3 ADD MLOAD SWAP4 MLOAD DUP1 SWAP4 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2BB9 PUSH2 0x2BB2 PUSH2 0x2691 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP3 PUSH2 0x2BCE PUSH2 0xDA4 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0x53A9 JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x2725 JUMP JUMPDEST POP SWAP4 PUSH1 0x3 DUP8 MLOAD PUSH2 0x2BEA DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2BF3 DUP2 PUSH2 0x220C JUMP JUMPDEST SUB PUSH2 0x2CB4 JUMPI PUSH2 0x2C02 DUP9 MLOAD PUSH2 0x525A JUMP JUMPDEST PUSH0 PUSH2 0x2C1A PUSH2 0xDA4 PUSH2 0xDA4 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP7 ADD MLOAD SWAP7 PUSH1 0x80 DUP12 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP10 ADD MLOAD SWAP10 PUSH2 0x2C68 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xAB68E28C00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x258A JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x2C89 JUMPI JUMPDEST POP SWAP2 SWAP7 SWAP3 PUSH2 0x2725 JUMP JUMPDEST SWAP3 POP POP SWAP6 POP PUSH2 0x2CAA SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2CA2 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x252A JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP2 PUSH0 PUSH2 0x2C80 JUMP JUMPDEST PUSH32 0x137A9A3900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0xED JUMPI PUSH2 0x2CF2 DUP2 PUSH2 0x2216 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xED JUMPI PUSH2 0x462 SWAP3 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP7 SWAP4 SWAP5 PUSH2 0x462 SWAP9 SWAP7 SWAP3 PUSH2 0x2D7A SWAP7 PUSH2 0x2D4B PUSH2 0x2D6C SWAP7 PUSH2 0x2D5E SWAP6 PUSH2 0x100 SWAP5 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x2237 JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MSTORE DUP1 PUSH1 0x80 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST SWAP5 SWAP4 SWAP6 SWAP3 SWAP7 SWAP2 SWAP1 DUP5 MLOAD PUSH2 0x2DA1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP3 PUSH2 0x2DB1 DUP5 PUSH2 0x220C JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP11 PUSH1 0xA0 DUP10 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP8 DUP9 SWAP8 PUSH32 0x2754888D00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0x2DF6 SWAP9 PUSH2 0x2D11 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH2 0x2F1B JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0x2F0F JUMPI JUMPDEST PUSH2 0x2EE7 JUMPI PUSH1 0x1 DUP1 SWAP4 PUSH1 0x9 SHR AND ISZERO PUSH2 0x2E40 JUMPI SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH0 DUP4 JUMPDEST PUSH2 0x2E47 JUMPI JUMPDEST POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2EE2 JUMPI PUSH2 0x2E5A DUP2 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x2E6B DUP4 DUP4 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD GT PUSH2 0x2E7A JUMPI POP DUP4 ADD DUP4 PUSH2 0x2E3B JUMP JUMPDEST PUSH2 0x2EA5 DUP3 PUSH2 0x2E9D DUP2 PUSH2 0x2E97 PUSH2 0x1170 DUP12 SWAP8 PUSH1 0x20 PUSH2 0x11BF SWAP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0xFBD8A72400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0x2E40 JUMP JUMPDEST PUSH32 0x1D3391D800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP4 MLOAD DUP6 MLOAD EQ ISZERO PUSH2 0x2E22 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F3A SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2F32 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2CDC JUMP JUMPDEST SWAP4 SWAP1 PUSH0 PUSH2 0x2E19 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 SWAP2 PUSH1 0x80 DUP5 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT DUP6 DUP4 LT OR PUSH2 0x2C2 JUMPI PUSH2 0x2FC9 SWAP2 PUSH1 0x40 MSTORE PUSH0 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP5 PUSH0 DUP7 MSTORE PUSH2 0x2FC1 PUSH1 0x40 DUP3 ADD SWAP2 PUSH0 DUP4 MSTORE DUP4 PUSH1 0x60 DUP3 ADD SWAP7 PUSH0 DUP9 MSTORE DUP3 SWAP10 PUSH2 0x2FBA PUSH1 0x20 DUP5 ADD DUP1 MLOAD SWAP1 PUSH2 0x2FAA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0x40 DUP9 ADD MLOAD AND SWAP1 PUSH2 0x4CEA JUMP JUMPDEST DUP8 MSTORE MLOAD SWAP1 PUSH1 0x60 DUP6 ADD MLOAD AND SWAP1 PUSH2 0x4CEA JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x31C9 JUMP JUMPDEST SWAP1 MSTORE MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2FD6 DUP3 PUSH2 0xFBE JUMP JUMPDEST MSTORE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 PUSH1 0xC0 PUSH1 0x40 MLOAD PUSH2 0x2FEC DUP2 PUSH2 0x2C7 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE DUP1 MLOAD SWAP3 PUSH2 0x301A DUP5 PUSH2 0xFBE JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 DUP3 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH2 0x3043 PUSH2 0x303C PUSH2 0x342 JUMP JUMPDEST SWAP7 DUP8 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE CALLER PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2FD6 DUP3 PUSH2 0xFBE JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xE0 DUP2 ADD SWAP1 DUP4 MLOAD PUSH2 0x3081 DUP2 PUSH2 0xFBE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP3 PUSH1 0xE0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH2 0x100 DUP5 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x30FC JUMPI POP POP POP POP PUSH1 0xC0 DUP5 PUSH1 0x60 PUSH2 0x462 SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x30EC PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST DUP4 MLOAD DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x30AC JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP3 PUSH2 0x3160 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x5211FA7700000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x306F JUMP JUMPDEST SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x31AA JUMPI JUMPDEST POP ISZERO PUSH2 0x3182 JUMPI JUMP JUMPDEST PUSH32 0xE91E17E700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x31C3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x238A JUMPI PUSH2 0x237C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x317A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 MLOAD PUSH2 0x31D7 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x31E0 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3225 JUMPI SWAP1 PUSH2 0x321C PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH2 0x21EF PUSH1 0x80 PUSH2 0x3221 SWAP6 ADD MLOAD SWAP4 PUSH1 0xA0 PUSH2 0x3210 PUSH1 0xC0 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x50E7 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH2 0x462 SWAP3 PUSH2 0x3261 PUSH2 0x325B PUSH1 0x80 PUSH2 0x21F6 SWAP5 ADD MLOAD SWAP5 PUSH1 0xA0 PUSH2 0x324F PUSH1 0x20 PUSH1 0xC0 DUP8 ADD MLOAD SWAP4 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP5 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5B41 JUMP JUMPDEST SWAP3 PUSH2 0x50E7 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0xED JUMPI PUSH1 0x20 PUSH2 0x327E DUP4 PUSH2 0x2216 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x32D5 PUSH1 0x40 SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 SWAP2 DUP7 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x306F JUMP JUMPDEST SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH2 0x335E JUMPI JUMPDEST POP ISZERO PUSH2 0x3336 JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x330E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH2 0x3382 SWAP2 POP PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x3389 JUMPI JUMPDEST PUSH2 0x337A DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3267 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x32F6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3370 JUMP JUMPDEST PUSH0 SWAP5 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x339E PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x33A6 PUSH2 0x2465 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH2 0x33B2 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x33BB DUP2 PUSH2 0xFBE JUMP JUMPDEST ISZERO PUSH2 0x3747 JUMPI JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP7 ADD PUSH2 0x33D1 DUP2 MLOAD PUSH2 0x5B65 JUMP JUMPDEST DUP4 PUSH2 0x3426 DUP2 DUP6 ADD SWAP9 PUSH2 0x33F0 PUSH2 0xDA4 PUSH2 0xDA4 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP13 DUP14 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x376F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP9 DUP10 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP10 PUSH2 0x3728 JUMPI JUMPDEST POP DUP9 PUSH2 0x3443 DUP2 PUSH2 0x5B65 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x344E DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3457 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x36B0 JUMPI POP PUSH1 0x40 DUP3 ADD MLOAD SWAP1 MSTORE PUSH2 0x3496 PUSH1 0xC0 DUP9 ADD MLOAD PUSH2 0x348F PUSH2 0x325B PUSH2 0x3480 DUP8 DUP7 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP13 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST SWAP1 DUP11 PUSH2 0x57A0 JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP8 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 LT PUSH2 0x3680 JUMPI POP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP5 DUP11 DUP7 MLOAD PUSH2 0x34C6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x34D0 SWAP2 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x60 ADD SWAP6 DUP10 DUP8 MLOAD PUSH2 0x34E7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x34F1 SWAP2 PUSH2 0x16BD JUMP JUMPDEST DUP4 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD SWAP2 PUSH2 0x3516 SWAP4 DUP7 PUSH2 0x57CF JUMP JUMPDEST SWAP2 SWAP1 DUP2 DUP7 ADD SWAP6 PUSH1 0x40 ADD SWAP3 DUP4 MSTORE DUP6 MSTORE DUP6 MLOAD PUSH1 0x60 DUP5 ADD SWAP3 DUP14 DUP3 DUP6 MLOAD SWAP1 PUSH2 0x3539 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3544 SWAP2 PUSH2 0x25E4 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x354F SWAP2 PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x3559 SWAP2 DUP6 PUSH2 0x51CA JUMP JUMPDEST DUP6 ADD SWAP2 DUP3 MLOAD DUP12 DUP2 DUP5 MLOAD SWAP1 PUSH2 0x356C SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3577 SWAP2 PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x3581 SWAP2 DUP4 PUSH2 0x51CA JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 DUP1 MLOAD DUP8 MLOAD PUSH2 0x35A7 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x80 ADD SWAP2 DUP3 MLOAD DUP9 MLOAD PUSH2 0x35BA SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x35C4 SWAP2 PUSH2 0x5C42 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x35D8 SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x35E5 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x35F3 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x35FD SWAP2 PUSH2 0x5C42 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x3610 SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP3 MLOAD SWAP4 MLOAD PUSH1 0x60 SWAP3 DUP4 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 DUP1 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE SWAP1 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFC PUSH2 0x1647 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP9 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 SWAP9 POP PUSH2 0x36D7 PUSH1 0x60 PUSH2 0x36E0 SWAP4 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0x5C0E JUMP JUMPDEST SWAP1 DUP2 DUP7 MSTORE PUSH2 0x25E4 JUMP JUMPDEST SWAP7 PUSH2 0x370D PUSH2 0x36F4 PUSH1 0xC0 DUP10 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x3705 PUSH1 0xA0 DUP11 ADD MLOAD DUP5 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 DUP11 PUSH2 0x5C2E JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 GT PUSH2 0x3680 JUMPI POP PUSH2 0x34AE JUMP JUMPDEST PUSH2 0x3740 SWAP2 SWAP10 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x3438 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD PUSH2 0x3768 PUSH2 0x375E DUP3 MLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP1 PUSH2 0x576D JUMP JUMPDEST DUP1 DUP7 MSTORE DUP3 MLOAD PUSH2 0xBA7 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x33C1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x462 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x306F JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x462 SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH2 0x3799 PUSH1 0x20 DUP5 ADD DUP3 MLOAD PUSH2 0x3065 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x120 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x381A PUSH2 0x140 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP2 ADD MLOAD SWAP1 PUSH2 0x3836 PUSH2 0x160 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD MLOAD SWAP2 PUSH2 0x180 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x498 JUMP JUMPDEST SWAP4 SWAP6 SWAP1 SWAP2 SWAP5 SWAP3 DUP7 MLOAD PUSH2 0x3858 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3861 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3AB0 JUMPI DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 JUMPDEST DUP3 MLOAD SWAP5 PUSH2 0x387A DUP7 PUSH2 0xFBE JUMP JUMPDEST PUSH1 0x40 SWAP8 DUP9 SWAP8 DUP9 DUP7 ADD MLOAD PUSH2 0x3893 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x38A9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD SWAP3 DUP4 MLOAD DUP2 MLOAD PUSH2 0x38BB SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP1 PUSH1 0x20 ADD MLOAD PUSH2 0x38CC SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x38E3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP8 PUSH1 0xC0 ADD MLOAD SWAP9 PUSH2 0x38F1 PUSH2 0x34F JUMP JUMPDEST SWAP11 PUSH2 0x38FC SWAP1 DUP13 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP12 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE DUP2 MLOAD SWAP7 DUP8 DUP1 DUP1 SWAP4 PUSH32 0x18B6EB5500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x3994 SWAP2 PUSH2 0x3780 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH2 0x3A8C JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3A64 JUMPI PUSH1 0x9 SHR PUSH1 0x1 AND ISZERO PUSH2 0x3A5E JUMPI POP DUP1 MLOAD PUSH2 0x39D2 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0xFBE JUMP JUMPDEST ISZERO DUP1 PUSH2 0x3A51 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x3A26 JUMPI JUMPDEST PUSH2 0x39F1 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0xA0 ADD MLOAD PUSH32 0xCC0E4A9900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 DUP2 MLOAD PUSH2 0x3A34 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3A3D DUP2 PUSH2 0xFBE JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x39E9 JUMPI POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 GT PUSH2 0x39E9 JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 LT PUSH2 0x39E2 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x15A29DEC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3AA7 SWAP4 SWAP7 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x3389 JUMPI PUSH2 0x337A DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP4 SWAP1 PUSH0 DUP1 PUSH2 0x39B4 JUMP JUMPDEST DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 SWAP3 SWAP5 PUSH2 0x386E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP3 AND DUP1 SWAP3 SUB PUSH2 0x3AE7 JUMPI POP POP JUMP JUMPDEST PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH32 0x0 GT PUSH2 0x3B3F JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x18FE738500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x3BB3 DUP6 PUSH2 0xFBE JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x3F75 JUMPI PUSH2 0x3C01 PUSH1 0x20 PUSH2 0x3BC9 DUP8 PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEF8B30F700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3C26 SWAP2 PUSH0 SWAP2 PUSH2 0x3F56 JUMPI JUMPDEST POP PUSH2 0xB99 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0x3C44 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x3C4E PUSH2 0x5956 JUMP JUMPDEST PUSH2 0x3F4E JUMPI DUP7 SWAP3 DUP9 SWAP3 SWAP1 SWAP2 PUSH1 0x80 DUP4 SWAP1 SHR SWAP2 DUP6 DUP4 LT PUSH2 0x3CCC JUMPI POP POP POP SWAP3 PUSH2 0x3CC6 DUP3 PUSH2 0x3CA3 DUP7 PUSH2 0x3C9E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 PUSH2 0xFC SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0x5C42 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x3CC0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x4CD8 JUMP JUMPDEST AND PUSH2 0x16BD JUMP JUMPDEST SWAP1 SWAP3 SWAP4 POP PUSH2 0x3CDB SWAP2 SWAP5 POP PUSH2 0xFBE JUMP JUMPDEST ISZERO PUSH2 0x3DF6 JUMPI PUSH2 0x3D03 PUSH2 0x3CFE PUSH2 0x3CF0 DUP6 DUP5 PUSH2 0x5F08 JUMP JUMPDEST PUSH2 0x3CF9 DUP11 PUSH2 0x4D50 JUMP JUMPDEST PUSH2 0x3B8C JUMP JUMPDEST PUSH2 0x5D69 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP4 PUSH2 0x3D1A DUP2 DUP7 DUP10 PUSH2 0x5EB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 PUSH1 0x20 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3CA3 DUP10 SWAP6 PUSH2 0x3DD1 DUP8 PUSH2 0x3DC6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 SWAP7 DUP9 DUP16 DUP10 PUSH2 0xFC SWAP16 DUP6 SWAP15 PUSH2 0x3DC0 DUP16 PUSH2 0x3CC6 SWAP16 PUSH2 0x3DC6 SWAP7 PUSH2 0x3DCB SWAP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH0 SWAP2 PUSH2 0x3DD7 JUMPI JUMPDEST POP SWAP11 DUP12 SWAP4 JUMPDEST AND SWAP1 PUSH2 0x3DBB DUP3 DUP3 PUSH2 0x5D9E JUMP JUMPDEST PUSH2 0x5F9D JUMP JUMPDEST AND PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0xBA7 JUMP JUMPDEST SWAP5 PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0x5C42 JUMP JUMPDEST PUSH2 0x3DF0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3DAA JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x3E16 PUSH2 0x3CFE PUSH2 0x3E08 DUP4 DUP6 PUSH2 0x5CA6 JUMP JUMPDEST PUSH2 0x3E11 DUP10 PUSH2 0x4D50 JUMP JUMPDEST PUSH2 0x3B74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP4 PUSH1 0x20 SWAP4 SWAP3 SWAP1 SWAP2 DUP5 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3E75 SWAP2 PUSH0 SWAP2 PUSH2 0x3F31 JUMPI JUMPDEST POP DUP7 DUP11 PUSH2 0x5EB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x94BF804D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP5 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH2 0xFC SWAP7 PUSH2 0x3DD1 DUP12 PUSH2 0x3DC6 DUP6 DUP16 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 SWAP16 SWAP11 DUP5 SWAP16 DUP16 SWAP7 PUSH2 0x3CC6 SWAP16 SWAP8 PUSH2 0x3DC6 SWAP7 PUSH2 0x3CA3 SWAP16 SWAP10 PUSH2 0x3DCB SWAP11 PUSH2 0x3DC0 SWAP6 PUSH0 SWAP3 PUSH2 0x3F14 JUMPI JUMPDEST POP POP SWAP9 DUP10 SWAP3 PUSH2 0x3DAF JUMP JUMPDEST PUSH2 0x3F2A SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x3F0A JUMP JUMPDEST PUSH2 0x3F48 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3E6D JUMP JUMPDEST POP SWAP1 SWAP4 POP POP POP JUMP JUMPDEST PUSH2 0x3F6F SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3C20 JUMP JUMPDEST PUSH2 0x3FBB PUSH1 0x20 PUSH2 0x3F83 DUP8 PUSH2 0x25D6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3FE0 SWAP2 PUSH0 SWAP2 PUSH2 0x3FE6 JUMPI JUMPDEST POP PUSH2 0x25D6 JUMP JUMPDEST SWAP6 PUSH2 0x3C29 JUMP JUMPDEST PUSH2 0x3FFF SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3FDA JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x4010 DUP6 PUSH2 0xFBE JUMP JUMPDEST DUP5 ISZERO SWAP5 DUP6 ISZERO PUSH2 0x42FF JUMPI PUSH2 0x405F PUSH1 0x20 PUSH2 0x4027 DUP8 PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x4083 SWAP2 PUSH0 SWAP2 PUSH2 0x3F56 JUMPI POP PUSH2 0xB99 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0x40A1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x40AB PUSH2 0x5956 JUMP JUMPDEST PUSH2 0x3F4E JUMPI DUP8 SWAP4 DUP8 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP2 DUP7 DUP4 LT PUSH2 0x412B JUMPI POP POP POP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4101 DUP4 DUP7 PUSH2 0xFC SWAP9 PUSH2 0x40F9 DUP7 PUSH2 0x4126 SWAP9 PUSH1 0x80 SHR PUSH2 0x25E4 JUMP JUMPDEST SWAP3 AND SUB PUSH2 0x5C42 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x411E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE JUMPDEST AND PUSH2 0x4CD8 JUMP JUMPDEST PUSH2 0x16BD JUMP JUMPDEST SWAP2 SWAP7 POP SWAP3 SWAP5 POP PUSH2 0x413B SWAP2 POP PUSH2 0xFBE JUMP JUMPDEST ISZERO PUSH2 0x4239 JUMPI PUSH2 0x4150 PUSH2 0x3CFE PUSH2 0x3CF0 DUP8 DUP6 PUSH2 0x5CA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP4 SWAP1 PUSH1 0x20 DUP6 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x41F7 DUP10 SWAP6 PUSH2 0x3DD1 DUP5 PUSH2 0x3DC6 DUP15 PUSH2 0x41EE DUP12 DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xFC SWAP16 SWAP13 PUSH2 0x41E9 DUP16 SWAP14 PUSH2 0x4126 SWAP16 SWAP5 DUP9 SWAP16 DUP6 SWAP16 PUSH2 0x3DC6 SWAP8 PUSH0 SWAP2 PUSH2 0x421A JUMPI JUMPDEST POP SWAP6 DUP7 SWAP3 JUMPDEST AND SWAP1 PUSH2 0x5FE2 JUMP JUMPDEST PUSH2 0x25E4 JUMP JUMPDEST SWAP5 PUSH1 0x80 SHR PUSH2 0x25E4 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x4214 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x4120 JUMP JUMPDEST PUSH2 0x4233 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x41DD JUMP JUMPDEST PUSH2 0x4249 PUSH2 0x3CFE PUSH2 0x3E08 DUP8 DUP6 PUSH2 0x5F08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB460AF9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 PUSH1 0x20 DUP3 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH2 0x41F7 DUP10 SWAP6 PUSH2 0x3DD1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3DC6 DUP15 PUSH2 0x41EE DUP12 DUP16 DUP11 PUSH2 0xFC SWAP16 PUSH2 0x41E9 DUP16 SWAP4 PUSH2 0x4126 SWAP16 SWAP15 DUP9 SWAP16 SWAP6 DUP12 SWAP16 SWAP7 PUSH2 0x3DC6 SWAP8 PUSH0 SWAP2 PUSH2 0x42E0 JUMPI JUMPDEST POP SWAP12 DUP13 SWAP4 PUSH2 0x41E2 JUMP JUMPDEST PUSH2 0x42F9 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x42D7 JUMP JUMPDEST PUSH2 0x4345 PUSH1 0x20 PUSH2 0x430D DUP8 PUSH2 0x25D6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x4369 SWAP2 PUSH0 SWAP2 PUSH2 0x3FE6 JUMPI POP PUSH2 0x25D6 JUMP JUMPDEST SWAP6 PUSH2 0x4086 JUMP JUMPDEST DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI TSTORE JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0x43AC DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0x50AB JUMP JUMPDEST PUSH2 0x43B5 DUP4 PUSH2 0x2126 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x43C7 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x43F9 PUSH2 0x43E0 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x321C PUSH2 0x43EE DUP6 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP7 DUP11 PUSH2 0x2157 JUMP JUMPDEST DIV PUSH2 0x4404 DUP3 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x43B8 JUMP JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0xFC8 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0xFC8 JUMPI MSTORE JUMP JUMPDEST SWAP6 SWAP2 SWAP4 PUSH2 0x4453 PUSH2 0x462 SWAP9 SWAP7 SWAP5 PUSH2 0x4464 SWAP4 PUSH2 0x2299 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x4415 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP3 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 SWAP7 PUSH2 0x44F1 PUSH2 0x449B DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0x44AB DUP10 PUSH2 0x440B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x60 DUP4 ADD MLOAD SWAP4 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0x45421EC700000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x4422 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x4534 JUMPI JUMPDEST POP ISZERO PUSH2 0x450C JUMPI JUMP JUMPDEST PUSH32 0xB2EB65200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x454D SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x238A JUMPI PUSH2 0x237C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x4504 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0xED JUMPI DUP3 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 GT PUSH2 0xED JUMPI DUP4 PUSH2 0x457E SWAP2 DUP7 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP2 ADD MLOAD SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0xED JUMPI DUP2 PUSH2 0x2573 SWAP2 DUP5 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH2 0x45C7 PUSH2 0x25C8 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x462 SWAP9 SWAP7 SWAP5 AND DUP8 MSTORE PUSH1 0xA0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x45E4 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x45EE PUSH2 0x2465 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP6 ADD PUSH2 0x4601 DUP2 MLOAD MLOAD DUP1 DUP7 MSTORE PUSH2 0x2126 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP6 DUP7 MLOAD PUSH2 0x4611 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x461A DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x488B JUMPI POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x462E DUP7 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP5 PUSH2 0x4652 DUP3 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x464C PUSH2 0x2691 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x640D JUMP JUMPDEST SWAP10 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 DUP5 LT PUSH2 0x485B JUMPI POP PUSH2 0x466D DUP4 SWAP10 SWAP9 SWAP10 PUSH2 0x578F JUMP JUMPDEST PUSH1 0x20 DUP10 ADD SWAP8 PUSH0 JUMPDEST DUP13 DUP12 MLOAD DUP3 LT ISZERO PUSH2 0x479A JUMPI DUP2 PUSH2 0x4688 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x4692 DUP2 PUSH2 0x578F JUMP JUMPDEST PUSH2 0x469C DUP3 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x4789 JUMPI PUSH2 0x46C1 SWAP1 DUP14 PUSH2 0x46BA DUP5 PUSH1 0xA0 PUSH2 0x278A DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x5C2E JUMP JUMPDEST DUP1 PUSH2 0x46CC DUP4 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x46DC PUSH2 0x1170 DUP4 DUP11 MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD PUSH2 0x46EB DUP5 DUP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP4 GT PUSH2 0x473D JUMPI POP DUP14 DUP4 PUSH2 0x1E72 DUP15 PUSH2 0x472F DUP16 SWAP7 DUP16 SWAP8 PUSH2 0x471A DUP7 PUSH2 0x2816 DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x27F3 DUP9 PUSH2 0x4737 SWAP16 PUSH2 0x4CD8 JUMP JUMPDEST MSTORE PUSH2 0x4729 DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x25E4 JUMP JUMPDEST SWAP1 MLOAD SWAP1 PUSH2 0xBA7 JUMP JUMPDEST ADD PUSH2 0x4674 JUMP JUMPDEST SWAP2 PUSH2 0x474C DUP5 PUSH2 0x11BF SWAP5 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x4794 DUP2 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x46CE JUMP JUMPDEST POP POP SWAP4 SWAP7 SWAP5 POP SWAP7 POP SWAP7 POP SWAP7 PUSH2 0x47BA SWAP1 PUSH2 0x28C1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 PUSH2 0x47EC DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x480D DUP10 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x4807 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6454 JUMP JUMPDEST PUSH2 0x4833 PUSH2 0x2691 PUSH2 0x4827 PUSH2 0x2967 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x1170 DUP9 PUSH2 0x440B JUMP JUMPDEST SWAP3 PUSH2 0x29A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x4849 DUP9 PUSH2 0x440B JUMP JUMPDEST DUP9 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x25F1 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x3 DUP8 MLOAD PUSH2 0x4898 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x48A1 DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x48C3 JUMPI PUSH2 0x48B0 DUP9 MLOAD PUSH2 0x63D8 JUMP JUMPDEST PUSH2 0x48BA DUP2 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP5 PUSH0 SWAP2 SWAP10 PUSH2 0x4654 JUMP JUMPDEST SWAP8 PUSH1 0x1 DUP8 MLOAD PUSH2 0x48D1 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x48DA DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x4942 JUMPI PUSH2 0x48E9 DUP9 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH2 0x493A DUP10 PUSH2 0x48FB DUP5 PUSH1 0x40 DUP9 ADD MLOAD PUSH2 0x6174 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD MLOAD SWAP1 PUSH2 0x4915 PUSH2 0x2691 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x491F DUP13 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP2 PUSH2 0x4934 PUSH2 0xDA4 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x618F JUMP JUMPDEST SWAP6 SWAP1 SWAP2 PUSH2 0x4654 JUMP JUMPDEST SWAP8 SWAP4 PUSH1 0x2 DUP8 MLOAD PUSH2 0x4951 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x495A DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x49C6 JUMPI SWAP8 DUP8 SWAP9 PUSH2 0x496C DUP10 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP2 PUSH2 0x497B DUP8 PUSH2 0x52C3 JUMP JUMPDEST PUSH2 0x49C0 PUSH2 0x49B6 PUSH1 0x40 DUP12 ADD SWAP3 DUP1 DUP5 MSTORE DUP10 DUP12 SWAP16 DUP9 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x49B0 PUSH2 0xDA4 PUSH2 0x2B0B PUSH2 0x2B04 PUSH2 0x2691 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0x60A9 JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x4654 JUMP JUMPDEST POP PUSH1 0x4 DUP7 MLOAD PUSH2 0x49D4 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x49DD DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x4A9E JUMPI PUSH2 0x49EC DUP8 MLOAD PUSH2 0x6074 JUMP JUMPDEST PUSH0 PUSH2 0x4A04 PUSH2 0xDA4 PUSH2 0xDA4 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP1 PUSH1 0x80 DUP11 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP9 ADD MLOAD SWAP9 PUSH2 0x4A51 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE4C4366300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x459D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x4A73 JUMPI JUMPDEST POP SWAP1 SWAP6 SWAP2 SWAP10 PUSH2 0x4654 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4A94 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x4A8C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4553 JUMP JUMPDEST SWAP2 SWAP6 SWAP3 SWAP2 PUSH0 PUSH2 0x4A69 JUMP JUMPDEST PUSH32 0x6C02B39500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP7 SWAP3 PUSH2 0x462 SWAP9 SWAP7 SWAP5 PUSH2 0x4B1C SWAP4 PUSH2 0x4B00 PUSH2 0x4B0E SWAP4 PUSH2 0x2D7A SWAP10 SWAP6 PUSH2 0x100 SWAP4 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x4415 JUMP JUMPDEST DUP1 PUSH1 0x60 DUP12 ADD MSTORE DUP10 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x80 DUP10 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP6 SWAP3 SWAP7 SWAP1 DUP5 MLOAD PUSH2 0x4B48 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD SWAP2 PUSH2 0x4B57 DUP4 PUSH2 0x440B JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 PUSH1 0x40 SWAP7 DUP13 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP8 DUP9 SWAP8 PUSH32 0x976907CC00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0x4B9F SWAP9 PUSH2 0x4AC6 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP7 PUSH2 0x4CB9 JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0x4CAD JUMPI JUMPDEST PUSH2 0x4C85 JUMPI PUSH1 0x1 DUP1 SWAP5 PUSH1 0x9 SHR AND ISZERO PUSH2 0x4BEB JUMPI SWAP1 SWAP2 SWAP3 DUP1 SWAP5 SWAP6 POP PUSH0 SWAP1 JUMPDEST PUSH2 0x4BF3 JUMPI JUMPDEST POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x4C80 JUMPI PUSH2 0x4C06 DUP2 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP3 DUP6 ADD SWAP1 PUSH2 0x4C16 DUP4 DUP4 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD LT PUSH2 0x4C25 JUMPI POP DUP5 ADD DUP5 PUSH2 0x4BE6 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x4C43 DUP4 PUSH2 0x2E9D DUP2 PUSH2 0x2E97 PUSH2 0x1170 PUSH2 0x11BF SWAP9 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0xCEFA3AFA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0x4BEB JUMP JUMPDEST PUSH32 0xE124916500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP5 MLOAD DUP7 MLOAD EQ ISZERO PUSH2 0x4BCB JUMP JUMPDEST SWAP1 POP PUSH2 0x4CD0 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2F32 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP5 SWAP1 PUSH0 PUSH2 0x4BC2 JUMP JUMPDEST PUSH2 0x4CE4 PUSH2 0xFC SWAP3 PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x4D1B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x4D09 DUP4 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD AND SWAP1 DUP4 AND EQ PUSH2 0x3A5E JUMPI PUSH1 0x1 ADD PUSH2 0x4CED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH32 0xDDEF98D700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4D7A JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x4E62 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 SWAP2 AND DUP1 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH2 0x4DEC PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP4 DUP5 PUSH2 0x3B8C JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x4E30 JUMPI POP PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x98E JUMPI TSTORE JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH2 0x4E24 JUMPI PUSH2 0x4E5D PUSH32 0x0 PUSH2 0x436F JUMP JUMPDEST PUSH2 0x4E24 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0x4E84 JUMPI POP POP POP POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0x4EAE SWAP4 PUSH2 0x1764 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x4EE6 JUMPI POP POP POP PUSH2 0xFC SWAP3 POP SUB DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4ED0 JUMP JUMPDEST SWAP1 PUSH2 0x4F13 DUP3 PUSH2 0x370 JUMP JUMPDEST PUSH2 0x4F20 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2FF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x4F30 DUP3 SWAP5 PUSH2 0x370 JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4F40 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x4F4B PUSH2 0x2465 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x4F34 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0x4F64 DUP2 PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0x4F77 DUP2 PUSH2 0xFBE JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP1 MLOAD MLOAD SWAP4 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x4FAF JUMPI POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x4FC3 PUSH2 0x1170 PUSH1 0x1 SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x4FEE PUSH2 0x4FD8 DUP4 DUP10 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4FF9 DUP4 DUP8 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP2 GT PUSH2 0x5040 JUMPI JUMPDEST POP POP PUSH2 0x5027 PUSH2 0x5011 DUP3 DUP7 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5020 DUP4 PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5C42 JUMP JUMPDEST PUSH2 0x5039 DUP3 DUP9 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x4FA0 JUMP JUMPDEST PUSH2 0x508B PUSH2 0x50A3 SWAP2 PUSH2 0x5085 PUSH2 0x507C PUSH2 0x5068 DUP7 DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 PUSH2 0x5075 DUP9 DUP13 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xBA7 JUMP JUMPDEST DUP3 PUSH1 0x80 SHR PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0x66E4 JUMP JUMPDEST SWAP2 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 PUSH2 0x5001 JUMP JUMPDEST DUP2 EQ DUP1 ISZERO SWAP3 SWAP2 SWAP1 PUSH2 0x50BF JUMPI JUMPDEST POP POP PUSH2 0x20FE JUMPI JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0x50B7 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x98E JUMPI JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5105 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x510E DUP2 PUSH2 0xFBE JUMP JUMPDEST DUP1 PUSH2 0x5121 JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x512D PUSH1 0x1 SWAP3 PUSH2 0xFBE JUMP JUMPDEST SUB PUSH2 0x51A2 JUMPI PUSH1 0x20 PUSH2 0x514C PUSH2 0xDA4 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x5189 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x462 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x520E PUSH2 0x2FD6 SWAP5 DUP1 PUSH2 0x51ED DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x321C PUSH2 0x51FF DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH2 0x5252 PUSH2 0x2FD6 SWAP4 DUP1 PUSH2 0x5231 DUP6 PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x21F6 PUSH2 0x5243 DUP6 PUSH1 0xC0 DUP10 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP7 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x6 SHR PUSH1 0x1 AND ISZERO PUSH2 0x5267 JUMPI JUMP JUMPDEST PUSH32 0xCF0A95C000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 SHR PUSH1 0x1 AND PUSH2 0x529B JUMPI JUMP JUMPDEST PUSH32 0xD4F5779C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD SWAP1 DUP2 SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x5305 JUMPI POP POP DUP2 LT ISZERO PUSH2 0x52DD JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x7E46BDDC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x530F DUP2 DUP4 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x531D JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x52CA JUMP JUMPDEST SWAP3 DUP3 SUB PUSH2 0x532A JUMPI DUP3 PUSH2 0x5315 JUMP JUMPDEST PUSH32 0x6B8C3BE500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x538C PUSH0 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x538C PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 SWAP5 SWAP3 SWAP2 SWAP3 DUP2 MLOAD SWAP5 PUSH2 0x53BA DUP7 PUSH2 0x2126 JUMP JUMPDEST SWAP5 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x55A3 JUMPI POP PUSH2 0x53D3 SWAP1 PUSH2 0x2A70 DUP10 DUP9 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x53DD DUP9 DUP8 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP5 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP8 MSTORE PUSH1 0x20 DUP8 DUP1 PUSH2 0x5418 DUP9 PUSH1 0x4 DUP4 ADD PUSH2 0x5375 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP8 PUSH2 0x5582 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP5 DUP7 MSTORE PUSH1 0x20 DUP7 DUP1 PUSH2 0x544D DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0x5375 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3DC6 PUSH2 0x54AF DUP13 PUSH2 0x5075 PUSH2 0x54A8 PUSH2 0x54C5 SWAP7 PUSH2 0x54A1 DUP16 PUSH2 0x5491 PUSH2 0x54FB SWAP16 SWAP2 PUSH1 0x20 SWAP15 DUP9 SWAP4 PUSH0 SWAP2 PUSH2 0x5563 JUMPI JUMPDEST POP PUSH2 0x5BB5 JUMP JUMPDEST SWAP3 PUSH2 0x549C DUP5 DUP14 PUSH2 0x6700 JUMP JUMPDEST PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x576D JUMP JUMPDEST SWAP2 DUP9 PUSH2 0x2157 JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL DUP3 PUSH2 0x5BB5 JUMP JUMPDEST SWAP4 PUSH2 0x54D4 DUP6 PUSH2 0x2A70 DUP13 DUP7 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x54DE DUP12 DUP6 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5391 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5537 SWAP6 PUSH2 0x5531 SWAP4 PUSH0 SWAP4 PUSH2 0x553A JUMPI JUMPDEST POP PUSH2 0x5523 PUSH2 0x552A SWAP2 PUSH2 0x2126 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP4 PUSH2 0xBA7 JUMP JUMPDEST SWAP1 PUSH2 0x5C0E JUMP JUMPDEST SWAP2 JUMP JUMPDEST PUSH2 0x552A SWAP2 SWAP4 POP PUSH2 0x555B PUSH2 0x5523 SWAP2 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP4 SWAP2 POP PUSH2 0x5516 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x557C SWAP3 POP RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x548B JUMP JUMPDEST PUSH2 0x559C SWAP2 SWAP8 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP6 PUSH0 PUSH2 0x5434 JUMP JUMPDEST DUP1 PUSH2 0x55B9 PUSH2 0x55B3 PUSH1 0x1 SWAP4 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x55C3 DUP3 DUP11 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x53BD JUMP JUMPDEST PUSH2 0x55E2 PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 SWAP5 SWAP2 DUP4 SUB SWAP2 DUP4 DUP4 GT PUSH2 0x98E JUMPI PUSH1 0x20 PUSH2 0x5652 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x5611 DUP8 DUP8 PUSH2 0x5BB5 JUMP JUMPDEST PUSH2 0x561B DUP2 DUP4 PUSH2 0x6700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP14 DUP11 PUSH1 0x4 DUP6 ADD PUSH2 0x55CA JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5537 SWAP6 PUSH2 0x21F6 DUP9 PUSH2 0x569D SWAP4 PUSH2 0x56A6 SWAP9 PUSH2 0x56AD SWAP7 PUSH0 SWAP3 PUSH2 0x56B3 JUMPI JUMPDEST POP PUSH2 0x568B DUP3 PUSH2 0x2A70 PUSH2 0x3DC6 SWAP5 SWAP6 DUP12 PUSH2 0x2157 JUMP JUMPDEST SWAP9 PUSH2 0x5696 DUP14 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5C0E JUMP JUMPDEST SWAP4 DUP5 SWAP3 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP6 DUP7 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x3DC6 SWAP3 POP PUSH2 0x2A70 SWAP4 PUSH2 0x56D7 PUSH2 0x568B SWAP3 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP4 POP SWAP4 POP PUSH2 0x5678 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x5717 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x56E0 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 PUSH2 0x5729 DUP3 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x5766 JUMPI PUSH2 0x5749 DUP4 PUSH2 0x5743 DUP4 DUP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x50E7 JUMP JUMPDEST SWAP1 DUP7 ISZERO PUSH2 0x5717 JUMPI DUP7 PUSH1 0x1 SWAP3 DIV PUSH2 0x575F DUP3 DUP8 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x572C JUMP JUMPDEST POP POP POP SWAP2 POP JUMP JUMPDEST SWAP1 PUSH2 0x5777 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5797 JUMPI POP JUMP JUMPDEST PUSH2 0xFC SWAP1 PUSH2 0x5B65 JUMP JUMPDEST SWAP2 PUSH2 0x57AA SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI DUP2 ISZERO PUSH2 0x5717 JUMPI DIV SWAP1 JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP1 SWAP5 PUSH0 SWAP6 PUSH0 SWAP6 DUP2 PUSH2 0x57E4 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP5 SWAP8 POP PUSH2 0x2793 PUSH2 0x57FD DUP3 PUSH1 0xC0 PUSH2 0x5809 SWAP7 SWAP8 SWAP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP5 MLOAD PUSH1 0x1 DUP2 PUSH1 0x3 SHR AND ISZERO PUSH2 0x581F JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP2 SWAP3 SWAP5 POP PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI PUSH2 0x5855 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP7 PUSH2 0x50E7 JUMP JUMPDEST DIV SWAP3 DUP5 DUP5 GT PUSH2 0x58CB JUMPI DUP1 PUSH2 0x1764 PUSH2 0x58AA PUSH2 0x5887 PUSH2 0x58C2 SWAP5 PUSH2 0x1764 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x58A4 DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0x67B7 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 DUP1 PUSH2 0x5818 JUMP JUMPDEST PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 SWAP2 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x594D JUMPI SWAP1 PUSH2 0x593D PUSH2 0x592E DUP3 PUSH1 0x1 SWAP5 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5020 DUP4 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP4 DUP7 MSTORE DUP5 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x5910 JUMP JUMPDEST POP POP POP POP POP SWAP1 POP JUMP JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0x5960 JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0x59AE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x599F SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI SSTORE JUMP JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x1A90 JUMPI PUSH2 0x5A09 DUP6 PUSH2 0x1764 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x5B04 JUMPI DUP4 SWAP1 SUB PUSH2 0x5A33 DUP7 PUSH2 0x1764 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x5A59 DUP4 PUSH2 0x5A53 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x5A62 DUP2 PUSH2 0x67C5 JUMP JUMPDEST PUSH2 0x5A7D DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x5AFF SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x17F8 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP1 DUP3 DIV MUL DUP2 SUB PUSH2 0x5B57 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x0 GT PUSH2 0x5B8D JUMPI JUMP JUMPDEST PUSH32 0x1ED4D11800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5BE6 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 ISZERO PUSH2 0x5BE6 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x5C20 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x462 SWAP3 PUSH2 0x5C3C SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 PUSH2 0x5BB5 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x5C9C JUMPI JUMPDEST POP PUSH2 0x5C74 JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x5C5F JUMP JUMPDEST SWAP1 PUSH2 0x5CB3 DUP3 PUSH1 0x80 SHR PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 SWAP4 AND DUP1 PUSH2 0x5CE0 JUMPI JUMPDEST POP POP PUSH1 0x2 SWAP2 PUSH2 0x5CDC SWAP2 PUSH2 0x3B74 JUMP JUMPDEST SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5D41 PUSH2 0x5CDC SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x5D4A JUMPI JUMPDEST POP PUSH2 0x4D50 JUMP JUMPDEST SWAP3 DUP2 SWAP3 POP PUSH2 0x5CCE JUMP JUMPDEST PUSH2 0x5D63 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x5D3B JUMP JUMPDEST PUSH0 DUP2 SLT PUSH2 0x5D73 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0xA8CE443200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH0 PUSH1 0x44 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 PUSH1 0x64 DUP2 ADD JUMPDEST SUB SWAP2 PUSH2 0x5DFD PUSH1 0x1F NOT SWAP4 DUP5 DUP2 ADD DUP8 MSTORE DUP7 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP3 DUP8 MLOAD SWAP1 DUP3 DUP6 GAS CALL SWAP1 PUSH2 0x5E1A PUSH2 0x6027 JUMP JUMPDEST DUP3 PUSH2 0x5E87 JUMPI JUMPDEST POP DUP2 PUSH2 0x5E7C JUMPI JUMPDEST POP ISZERO PUSH2 0x5E34 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 DUP6 ADD MSTORE PUSH0 PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 SWAP1 DUP2 ADD DUP5 MSTORE PUSH2 0x5E72 SWAP4 PUSH2 0x964 SWAP2 PUSH2 0x5E6C SWAP1 DUP3 PUSH2 0x2FF JUMP JUMPDEST DUP3 PUSH2 0x65A2 JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST SWAP1 POP EXTCODESIZE ISZERO ISZERO PUSH0 PUSH2 0x5E27 JUMP JUMPDEST DUP1 MLOAD SWAP2 SWAP3 POP DUP2 ISZERO SWAP2 DUP3 ISZERO PUSH2 0x5E9F JUMPI JUMPDEST POP POP SWAP1 PUSH0 PUSH2 0x5E20 JUMP JUMPDEST PUSH2 0x5EB2 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x2223 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5E96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP3 DUP4 PUSH1 0x64 DUP2 ADD PUSH2 0x5DE9 JUMP JUMPDEST SWAP1 PUSH2 0x5F24 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH1 0x80 SHR DUP1 PUSH2 0x5F3D JUMPI POP POP PUSH1 0x2 SWAP2 PUSH2 0x5CDC SWAP2 PUSH2 0x3B74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5D41 PUSH2 0x5CDC SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x5D4A JUMPI POP PUSH2 0x4D50 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x98E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x98E JUMPI PUSH2 0xFC SWAP4 PUSH2 0x67FD JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x98E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x98E JUMPI PUSH2 0xFC SWAP4 PUSH2 0x67FD JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x6051 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x6038 DUP3 PUSH2 0x3F5 JUMP JUMPDEST SWAP2 PUSH2 0x6046 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x2FF JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x462 SWAP4 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 DUP6 GAS CALL PUSH2 0x606E PUSH2 0x6027 JUMP JUMPDEST SWAP2 PUSH2 0x6984 JUMP JUMPDEST PUSH1 0x5 SHR PUSH1 0x1 AND ISZERO PUSH2 0x6081 JUMPI JUMP JUMPDEST PUSH32 0x4876C0BC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP5 SWAP2 PUSH1 0x20 PUSH2 0x60D8 PUSH2 0x60C3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x25E4 JUMP JUMPDEST SWAP5 PUSH2 0x60CE DUP8 DUP8 PUSH2 0x5BB5 JUMP JUMPDEST PUSH2 0x561B DUP2 DUP4 PUSH2 0x6A10 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5537 SWAP6 PUSH2 0x3DC6 PUSH2 0x54AF DUP6 PUSH2 0x569D SWAP5 PUSH2 0x56A6 SWAP10 DUP13 SWAP10 DUP11 PUSH2 0x6137 SWAP10 PUSH0 SWAP5 PUSH2 0x613D JUMPI JUMPDEST POP SWAP1 PUSH2 0x612B PUSH2 0x6124 PUSH2 0x611D PUSH2 0x6132 SWAP5 PUSH2 0x2836 SWAP8 SWAP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP8 PUSH2 0xBA7 JUMP JUMPDEST SWAP13 DUP13 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x570D JUMP JUMPDEST MSTORE PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0x2836 SWAP5 POP PUSH2 0x6124 PUSH2 0x611D PUSH2 0x6132 SWAP5 SWAP4 PUSH2 0x6168 PUSH2 0x612B SWAP5 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP8 POP SWAP4 SWAP5 POP POP POP PUSH2 0x6104 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD PUSH2 0x6185 DUP5 MLOAD DUP3 PUSH2 0x20F7 JUMP JUMPDEST PUSH1 0x5 SHL SWAP4 ADD SWAP2 ADD MCOPY JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP4 DUP4 MLOAD PUSH2 0x619E DUP2 PUSH2 0x2126 JUMP JUMPDEST SWAP2 PUSH2 0x61A8 DUP3 PUSH2 0x2126 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x639D JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x40 MLOAD SWAP6 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP9 MSTORE PUSH1 0x20 SWAP9 DUP10 DUP10 DUP1 PUSH2 0x61FB DUP5 PUSH1 0x4 DUP4 ADD PUSH2 0x5375 JUMP JUMPDEST SUB DUP2 DUP10 GAS STATICCALL SWAP9 DUP10 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP10 PUSH2 0x637E JUMPI JUMPDEST POP PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0x6225 DUP12 PUSH1 0x4 DUP4 ADD PUSH2 0x5391 JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI DUP11 PUSH2 0x6132 PUSH2 0x6260 SWAP4 PUSH2 0x6259 SWAP4 DUP16 PUSH0 SWAP3 PUSH2 0x6361 JUMPI JUMPDEST SWAP12 SWAP10 SWAP14 SWAP13 SWAP11 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 POP PUSH2 0x50CA JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x6A10 JUMP JUMPDEST PUSH0 JUMPDEST DUP10 DUP2 LT PUSH2 0x62CF JUMPI POP POP POP POP PUSH2 0x6286 SWAP6 POP PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP5 DUP3 SWAP4 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5391 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI DUP4 PUSH2 0x6132 SWAP4 PUSH2 0x62AC SWAP3 PUSH2 0x5537 SWAP8 PUSH0 SWAP3 PUSH2 0x62B2 JUMPI JUMPDEST POP POP PUSH2 0xBA7 JUMP JUMPDEST SWAP1 PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x62C8 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x62A5 JUMP JUMPDEST DUP7 SWAP9 SWAP10 SWAP6 SWAP8 POP DUP4 DUP14 DUP4 SWAP5 SWAP6 SWAP7 SWAP9 DUP4 PUSH2 0x62F3 PUSH2 0x62EC DUP3 PUSH1 0x1 SWAP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP10 PUSH2 0x67A4 JUMP JUMPDEST DUP1 PUSH2 0x62FE DUP4 DUP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD GT PUSH2 0x631A JUMPI JUMPDEST POP POP POP POP POP ADD SWAP1 DUP11 SWAP7 SWAP5 SWAP9 SWAP8 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0x6262 JUMP JUMPDEST DUP2 DUP4 PUSH2 0x633B PUSH2 0x634C SWAP8 PUSH2 0x6345 SWAP5 PUSH2 0x6334 DUP6 PUSH2 0x5075 SWAP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD SUB PUSH2 0x576D JUMP JUMPDEST PUSH2 0x1DD2 DUP4 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x6356 DUP3 DUP12 PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP5 DUP14 DUP11 DUP4 PUSH0 PUSH2 0x6305 JUMP JUMPDEST PUSH2 0x6377 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP16 PUSH2 0x6245 JUMP JUMPDEST PUSH2 0x6396 SWAP2 SWAP10 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x620E JUMP JUMPDEST DUP1 PUSH2 0x63C7 PUSH2 0x63C2 PUSH2 0x63B0 PUSH1 0x1 SWAP5 DUP13 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x63BB DUP5 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x63D1 DUP3 DUP9 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x61AB JUMP JUMPDEST PUSH1 0x7 SHR PUSH1 0x1 AND ISZERO PUSH2 0x63E5 JUMPI JUMP JUMPDEST PUSH32 0xEFE0265D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 PUSH2 0x6419 DUP5 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x644E JUMPI DUP1 PUSH2 0x643D DUP6 DUP6 PUSH2 0x6437 PUSH1 0x1 SWAP6 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5C0E JUMP JUMPDEST PUSH2 0x6447 DUP3 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x641C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0x656D JUMPI PUSH2 0x648C DUP4 PUSH2 0x6486 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0x64AB DUP6 PUSH2 0x1764 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x64BA DUP2 PUSH2 0x67C5 JUMP JUMPDEST PUSH2 0x64D5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x650E DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x1A00 JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x65B6 SWAP2 AND SWAP2 DUP3 PUSH2 0x6056 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x65F7 JUMPI JUMPDEST POP POP PUSH2 0x65CC JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x660A SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x2223 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0x65C3 JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0x6622 DUP3 PUSH2 0x2126 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x6636 JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP1 DUP3 MUL SWAP1 DUP3 DUP3 DIV EQ DUP3 ISZERO OR ISZERO PUSH2 0x98E JUMPI DUP3 PUSH1 0x1F SWAP2 SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x98E JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0x6667 DUP3 DUP8 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x6629 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x66A4 DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x66B3 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH2 0x66D9 SWAP6 SWAP7 POP SWAP2 PUSH2 0x66C8 SWAP2 PUSH2 0x2793 SWAP4 SUB PUSH2 0x576D JUMP JUMPDEST SWAP3 PUSH1 0xA0 PUSH2 0x278A DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x462 SWAP3 AND PUSH2 0x5C42 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xB677FA5600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP3 PUSH2 0x6783 JUMPI JUMPDEST POP DUP2 DUP2 LT PUSH2 0x6755 JUMPI POP POP JUMP JUMPDEST PUSH32 0xE31C95BE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x679D SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6749 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH2 0x3221 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 PUSH2 0x462 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x5C42 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0x67D2 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x20 SWAP6 SWAP4 SWAP5 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP8 DUP4 PUSH1 0x24 DUP2 DUP8 DUP7 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP4 PUSH2 0x6965 JUMPI JUMPDEST POP DUP1 DUP4 LT PUSH2 0x6920 JUMPI POP PUSH2 0x6877 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND SWAP1 DUP5 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP6 PUSH2 0x6901 JUMPI JUMPDEST POP POP DUP2 DUP5 LT PUSH2 0x68C6 JUMPI POP POP PUSH2 0x68C3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH32 0x1149424D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE POP PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH2 0x6918 SWAP3 SWAP6 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP3 PUSH0 DUP1 PUSH2 0x689D JUMP JUMPDEST SWAP1 POP PUSH2 0x11BF SWAP3 DUP7 PUSH32 0x1C6A537500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 SWAP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE JUMP JUMPDEST PUSH2 0x697D SWAP2 SWAP4 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x6853 JUMP JUMPDEST SWAP1 PUSH2 0x69C1 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x6999 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x6A07 JUMPI JUMPDEST PUSH2 0x69D2 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x69CA JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x273C1ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP3 PUSH2 0x6A93 JUMPI JUMPDEST POP DUP2 DUP2 GT PUSH2 0x6A65 JUMPI POP POP JUMP JUMPDEST PUSH32 0x3E8960DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x6AAD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6A59 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x98E JUMPI JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xB3 0x22 AND 0xEA 0xD2 MLOAD SWAP8 SWAP12 0xEA 0xD8 0x2C BLOBHASH PUSH7 0x8A68329180BC89 PUSH29 0xCCA5B20A5D4DCE33E35F64736F6C634300081A00330000000000000000 ","sourceMap":"2550:79546:64:-:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3400:40:69;2550:79546:64;;;;;:::i;:::-;;;;-1:-1:-1;;;2550:79546:64;;;;3400:40:69;:::i;:::-;;;3501:47;2550:79546:64;;;;;:::i;:::-;;;;-1:-1:-1;;;2550:79546:64;;;;3501:47:69;:::i;:::-;;;3601:41;2550:79546:64;;;;;:::i;:::-;;;;-1:-1:-1;;;2550:79546:64;;;;3601:41:69;:::i;:::-;;;;;;3703:48;2550:79546:64;;;;;:::i;:::-;;;;-1:-1:-1;;;2550:79546:64;;;;3703:48:69;:::i;:::-;;;;;;3802:39;2550:79546:64;;;;;:::i;:::-;;;;-1:-1:-1;;;2550:79546:64;;;;3802:39:69;:::i;:::-;;;;;;2550:79546:64;;;;;;3414:22;;;;;;;;;;;;;;;;;;-1:-1:-1;3414:22:64;;;-1:-1:-1;3449:4:64;;;2550:79546;;3406:48;3402:117;;2550:79546;;3541:29;;;;;;;;;;;;;;;-1:-1:-1;3541:29:64;;;-1:-1:-1;3449:4:64;;2550:79546;;3533:55;3529:131;;3670:32;;;;2550:79546;;;-1:-1:-1;;;;;;2550:79546:64;;;;;;;;;-1:-1:-1;;;3796:60:64;;2550:79546;;;3796:60;2550:79546;3796:60;;;;;;;;-1:-1:-1;3796:60:64;;;-1:-1:-1;;3769:87:64;;;;2550:79546;;-1:-1:-1;;;3895:62:64;;2550:79546;3895:62;2550:79546;;;3895:62;;;;;;;;-1:-1:-1;3895:62:64;;;-1:-1:-1;;3866:91:64;;;;2550:79546;;-1:-1:-1;;;3995:61:64;;2550:79546;3995:61;2550:79546;3995:61;2550:79546;;3995:61;;;;;;;-1:-1:-1;3995:61:64;;;-1:-1:-1;;3967:89:64;;;;2550:79546;;-1:-1:-1;;;4091:60:64;;;2550:79546;4091:60;2550:79546;4091:60;;;;;;;;;;;;-1:-1:-1;4091:60:64;;;-1:-1:-1;;4067:84:64;;2550:79546;;-1:-1:-1;;;4184:59:64;;2550:79546;;;;;4184:59;;;;;;;-1:-1:-1;4184:59:64;;;-1:-1:-1;;;4161:82:64;;2550:79546;;;-1:-1:-1;;;;;;2550:79546:64;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;;4067:84;2550:79546;;;;;4161:82;2550:79546;;;;;3400:40:69;2550:79546:64;;;;;;;;;;3501:47:69;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4184:59;;;;;;;;;;;;;;;;:::i;:::-;;;2550:79546;;;;;4184:59;;;;2550:79546;-1:-1:-1;2550:79546:64;;4184:59;;;;;;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;4091:60;;;;;;;;;;;;;;;;:::i;:::-;;;2550:79546;;;;;;;4091:60;;;;;;;;;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;3995:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;3895:62;;;;;;;;;;;;;;;:::i;:::-;;;;;3796:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;3529:131;3611:38;;;;-1:-1:-1;3611:38:64;-1:-1:-1;3611:38:64;3541:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3402:117;3477:31;;;;-1:-1:-1;3477:31:64;-1:-1:-1;3477:31:64;3414:22;;;;;;;;;;;;;;:::i;:::-;;;;2550:79546;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;2550:79546:64;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;9892:177:69:-;2550:79546:64;;;;;;:::i;:::-;;;;1461:67:44;2550:79546:64;;;;-1:-1:-1;;;2550:79546:64;;;;;1461:67:44;;;;;;2550:79546:64;;;;;;;;;;;;;;-1:-1:-1;;;2550:79546:64;;;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;;;1461:67:44;;;;;;;;;:::i;:::-;2550:79546:64;1451:78:44;;-1:-1:-1;;2550:79546:64;;;;;;;;;1432:103:44;2550:79546:64;1432:103:44;;2550:79546:64;;;;1432:103:44;;;;;:::i;:::-;2550:79546:64;;1405:144:44;;-1:-1:-1;;1405:170:44;;9892:177:69:o;2550:79546:64:-;;;;-1:-1:-1;2550:79546:64;;;;;-1:-1:-1;2550:79546:64"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":2451,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":4858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":904,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":9347,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_uint256t_array_uint256_dynt_bytes_fromMemory":{"entryPoint":17747,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_available_length_bytes":{"entryPoint":1041,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":8739,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_boolt_array_uint256_dyn_fromMemory":{"entryPoint":11484,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_boolt_uint256_fromMemory":{"entryPoint":12903,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes":{"entryPoint":1095,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":9444,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":241,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_enum_AddLiquidityKind":{"entryPoint":1940,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_enum_RemoveLiquidityKind":{"entryPoint":1000,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_enum_SwapKind":{"entryPoint":1474,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":8726,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":2898,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_array_uint256_dynt_array_uint256_dynt_bytes_fromMemory":{"entryPoint":9514,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encodeUpdatedPos_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_38631":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_enum_AddLiquidityKind_array_uint256_dyn_array_uint256_dyn_uint256_array_uint256_dyn_bytes":{"entryPoint":19142,"id":null,"parameterSlots":9,"returnSlots":1},"abi_encode_address_address_enum_AddLiquidityKind_array_uint256_dyn_uint256_array_uint256_dyn_bytes":{"entryPoint":17442,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_address_address_enum_RemoveLiquidityKind_uint256_array_uint256_dyn_array_uint256_dyn_array_uint256_dyn_bytes":{"entryPoint":11537,"id":null,"parameterSlots":9,"returnSlots":1},"abi_encode_address_address_enum_RemoveLiquidityKind_uint256_array_uint256_dyn_array_uint256_dyn_bytes":{"entryPoint":8772,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_38836":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_uint256_38855":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_array_uint256_dyn_uint256_array_uint256_dyn_bytes":{"entryPoint":17821,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_uint256_69121":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_uint256_array_uint256_dyn_array_uint256_dyn_bytes":{"entryPoint":9610,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":1125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_enum_Rounding":{"entryPoint":21393,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_enum_Rounding_38822":{"entryPoint":21365,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_bytes":{"entryPoint":1953,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_uint256":{"entryPoint":21962,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bytes":{"entryPoint":1824,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_memory_ptr":{"entryPoint":1176,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_enum_AddLiquidityKind":{"entryPoint":17429,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_RemoveLiquidityKind":{"entryPoint":8759,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_SwapKind":{"entryPoint":12389,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_AfterSwapParams":{"entryPoint":14208,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolSwapParams":{"entryPoint":12399,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolSwapParams_memory_ptr":{"entryPoint":14191,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint256_address_address":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_array_uint256_dyn":{"entryPoint":9713,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_bytes":{"entryPoint":1213,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint256_uint256_38577":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_uint256_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"allocate_and_zero_memory_array_array_struct_TokenInfo_dyn":{"entryPoint":20233,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":8486,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_LiquidityLocals":{"entryPoint":9317,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory":{"entryPoint":834,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_38490":{"entryPoint":802,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_38749":{"entryPoint":847,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":880,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":1013,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_int256":{"entryPoint":15244,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":9700,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256_38754":{"entryPoint":9686,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint32":{"entryPoint":27316,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":22285,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":20711,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_38848":{"entryPoint":20682,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_int256":{"entryPoint":15220,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":2983,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256_38756":{"entryPoint":2969,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"constant_AGGREGATE_YIELD_FEE_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_DECIMAL_SCALING_FACTORS_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"convert_uint32_to_uint256":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_contract_IERC20_dyn_ptr":{"entryPoint":20146,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_addLiquidity":{"entryPoint":1994,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_erc4626BufferWrapOrUnwrap":{"entryPoint":1701,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokenCountAndIndexOfToken":{"entryPoint":2582,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultExtension":{"entryPoint":2461,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reentrancyGuardEntered":{"entryPoint":2836,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removeLiquidity":{"entryPoint":1256,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_sendTo":{"entryPoint":2202,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_settle":{"entryPoint":254,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_swap":{"entryPoint":1485,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":2528,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":552,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unlock":{"entryPoint":1841,"id":null,"parameterSlots":0,"returnSlots":0},"extract_returndata":{"entryPoint":24615,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":767,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_38634":{"entryPoint":686,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_38650":{"entryPoint":711,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_38687":{"entryPoint":739,"id":null,"parameterSlots":1,"returnSlots":0},"fun":{"entryPoint":5544,"id":22335,"parameterSlots":0,"returnSlots":0},"fun_22317":{"entryPoint":5504,"id":22317,"parameterSlots":0,"returnSlots":0},"fun__removeLiquidity":{"entryPoint":9756,"id":21241,"parameterSlots":3,"returnSlots":4},"fun_accountDelta":{"entryPoint":19877,"id":24503,"parameterSlots":2,"returnSlots":0},"fun_addLiquidity":{"entryPoint":17882,"id":20585,"parameterSlots":3,"returnSlots":4},"fun_addLiquidity_20137":{"entryPoint":5084,"id":20137,"parameterSlots":1,"returnSlots":3},"fun_allowance":{"entryPoint":20070,"id":38353,"parameterSlots":3,"returnSlots":1},"fun_buildPoolSwapParams":{"entryPoint":12249,"id":19601,"parameterSlots":3,"returnSlots":1},"fun_burn":{"entryPoint":22998,"id":38621,"parameterSlots":3,"returnSlots":0},"fun_callAfterAddLiquidityHook":{"entryPoint":19247,"id":28795,"parameterSlots":8,"returnSlots":1},"fun_callAfterRemoveLiquidityHook":{"entryPoint":11656,"id":28955,"parameterSlots":8,"returnSlots":1},"fun_callAfterSwapHook":{"entryPoint":14407,"id":28635,"parameterSlots":8,"returnSlots":1},"fun_callBeforeAddLiquidityHook":{"entryPoint":17527,"id":28678,"parameterSlots":5,"returnSlots":0},"fun_callBeforeRemoveLiquidityHook":{"entryPoint":8871,"id":28838,"parameterSlots":5,"returnSlots":0},"fun_callBeforeSwapHook":{"entryPoint":12560,"id":28499,"parameterSlots":3,"returnSlots":0},"fun_callComputeDynamicSwapFeeHook":{"entryPoint":12932,"id":28472,"parameterSlots":4,"returnSlots":1},"fun_callOptionalReturn":{"entryPoint":26018,"id":39576,"parameterSlots":2,"returnSlots":0},"fun_computeAddLiquiditySingleTokenExactOut":{"entryPoint":24745,"id":11388,"parameterSlots":6,"returnSlots":2},"fun_computeAddLiquidityUnbalanced":{"entryPoint":24975,"id":11280,"parameterSlots":5,"returnSlots":2},"fun_computeAmountGivenScaled18":{"entryPoint":12745,"id":19654,"parameterSlots":3,"returnSlots":1},"fun_computeAndChargeAggregateSwapFees":{"entryPoint":22479,"id":21334,"parameterSlots":5,"returnSlots":2},"fun_computeProportionalAmountsIn":{"entryPoint":25613,"id":11049,"parameterSlots":3,"returnSlots":1},"fun_computeProportionalAmountsOut":{"entryPoint":22300,"id":11099,"parameterSlots":3,"returnSlots":1},"fun_computeRateRoundUp":{"entryPoint":23361,"id":6473,"parameterSlots":1,"returnSlots":1},"fun_computeRemoveLiquiditySingleTokenExactIn":{"entryPoint":21996,"id":11656,"parameterSlots":6,"returnSlots":2},"fun_computeRemoveLiquiditySingleTokenExactOut":{"entryPoint":21417,"id":11553,"parameterSlots":6,"returnSlots":2},"fun_computeYieldFeesDue":{"entryPoint":26257,"id":30569,"parameterSlots":4,"returnSlots":1},"fun_copyToArray":{"entryPoint":24948,"id":6180,"parameterSlots":2,"returnSlots":0},"fun_copyToScaled18ApplyRateRoundDownArray":{"entryPoint":17305,"id":6310,"parameterSlots":3,"returnSlots":1},"fun_copyToScaled18ApplyRateRoundUpArray":{"entryPoint":8600,"id":6440,"parameterSlots":3,"returnSlots":1},"fun_ensureCorrectBufferAsset":{"entryPoint":15039,"id":24796,"parameterSlots":2,"returnSlots":0},"fun_ensureInitializedPool":{"entryPoint":6853,"id":24722,"parameterSlots":1,"returnSlots":0},"fun_ensureInputLengthMatch":{"entryPoint":8439,"id":5611,"parameterSlots":2,"returnSlots":0},"fun_ensureInputLengthMatch_5633":{"entryPoint":20651,"id":5633,"parameterSlots":3,"returnSlots":0},"fun_ensureInvariantRatioAboveMinimumBound":{"entryPoint":26368,"id":11708,"parameterSlots":2,"returnSlots":0},"fun_ensureInvariantRatioBelowMaximumBound":{"entryPoint":27152,"id":11682,"parameterSlots":2,"returnSlots":0},"fun_ensurePoolMinimumTotalSupply":{"entryPoint":26565,"id":38473,"parameterSlots":1,"returnSlots":0},"fun_ensureUnlocked":{"entryPoint":5740,"id":24402,"parameterSlots":0,"returnSlots":0},"fun_ensureUnpaused":{"entryPoint":6930,"id":24537,"parameterSlots":1,"returnSlots":0},"fun_ensureValidSwapAmount":{"entryPoint":23397,"id":22287,"parameterSlots":1,"returnSlots":0},"fun_ensureValidTradeAmount":{"entryPoint":22415,"id":22273,"parameterSlots":1,"returnSlots":0},"fun_ensureValidWrapAmount":{"entryPoint":15125,"id":21602,"parameterSlots":2,"returnSlots":0},"fun_findTokenIndex":{"entryPoint":19690,"id":25085,"parameterSlots":2,"returnSlots":1},"fun_forceApprove":{"entryPoint":24249,"id":39534,"parameterSlots":3,"returnSlots":0},"fun_forceApprove_38760":{"entryPoint":23966,"id":39534,"parameterSlots":2,"returnSlots":0},"fun_functionCallWithValue":{"entryPoint":24662,"id":39746,"parameterSlots":2,"returnSlots":1},"fun_getAggregateYieldFeePercentage":{"entryPoint":26222,"id":29722,"parameterSlots":1,"returnSlots":1},"fun_getBalanceRaw":{"entryPoint":null,"id":5848,"parameterSlots":1,"returnSlots":1},"fun_getBufferUnderlyingImbalance":{"entryPoint":24328,"id":5389,"parameterSlots":2,"returnSlots":1},"fun_getBufferWrappedImbalance":{"entryPoint":23718,"id":5438,"parameterSlots":2,"returnSlots":1},"fun_getDecimalScalingFactors":{"entryPoint":26130,"id":29854,"parameterSlots":2,"returnSlots":1},"fun_getSingleInputIndex":{"entryPoint":21187,"id":5692,"parameterSlots":1,"returnSlots":1},"fun_getStaticSwapFeePercentage":{"entryPoint":21330,"id":29600,"parameterSlots":1,"returnSlots":1},"fun_getTokenRate":{"entryPoint":20730,"id":30455,"parameterSlots":1,"returnSlots":1},"fun_isPoolInRecoveryMode":{"entryPoint":null,"id":29305,"parameterSlots":1,"returnSlots":1},"fun_isQueryContext":{"entryPoint":22870,"id":25144,"parameterSlots":0,"returnSlots":1},"fun_loadPoolDataUpdatingBalancesAndYieldFees":{"entryPoint":7890,"id":24920,"parameterSlots":1,"returnSlots":1},"fun_loadPoolDataUpdatingBalancesAndYieldFees_38530":{"entryPoint":7226,"id":24920,"parameterSlots":1,"returnSlots":1},"fun_loadSwapState":{"entryPoint":12098,"id":19568,"parameterSlots":2,"returnSlots":1},"fun_mint":{"entryPoint":25684,"id":38458,"parameterSlots":3,"returnSlots":0},"fun_mulDivUp":{"entryPoint":23566,"id":7660,"parameterSlots":3,"returnSlots":1},"fun_mulDivUp_38824":{"entryPoint":23477,"id":7660,"parameterSlots":2,"returnSlots":1},"fun_mulDown":{"entryPoint":26532,"id":7579,"parameterSlots":2,"returnSlots":1},"fun_mulUp":{"entryPoint":22381,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":5703,"id":9554,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":5618,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_queryModeBalanceIncrease":{"entryPoint":22891,"id":38387,"parameterSlots":3,"returnSlots":0},"fun_reloadBalancesAndRates":{"entryPoint":9105,"id":30410,"parameterSlots":2,"returnSlots":0},"fun_reloadBalancesAndRates_38629":{"entryPoint":9214,"id":30410,"parameterSlots":2,"returnSlots":0},"fun_removeLiquidity":{"entryPoint":2996,"id":20735,"parameterSlots":1,"returnSlots":3},"fun_requireAddLiquidityCustomEnabled":{"entryPoint":24692,"id":29430,"parameterSlots":1,"returnSlots":0},"fun_requireDonationEnabled":{"entryPoint":25560,"id":29579,"parameterSlots":1,"returnSlots":0},"fun_requireRemoveLiquidityCustomEnabled":{"entryPoint":21082,"id":29492,"parameterSlots":1,"returnSlots":0},"fun_requireUnbalancedLiquidityEnabled":{"entryPoint":21135,"id":29368,"parameterSlots":1,"returnSlots":0},"fun_setBalanceDerived":{"entryPoint":26340,"id":5901,"parameterSlots":2,"returnSlots":1},"fun_setBalanceRaw":{"entryPoint":26551,"id":5883,"parameterSlots":2,"returnSlots":1},"fun_settleUnwrap":{"entryPoint":24546,"id":22179,"parameterSlots":4,"returnSlots":0},"fun_settleWrap":{"entryPoint":24477,"id":22141,"parameterSlots":4,"returnSlots":0},"fun_settleWrapUnwrap":{"entryPoint":26621,"id":22258,"parameterSlots":4,"returnSlots":0},"fun_shouldCallAfterAddLiquidity":{"entryPoint":null,"id":28261,"parameterSlots":1,"returnSlots":1},"fun_shouldCallAfterRemoveLiquidity":{"entryPoint":null,"id":28347,"parameterSlots":1,"returnSlots":1},"fun_shouldCallAfterSwap":{"entryPoint":null,"id":28175,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeAddLiquidity":{"entryPoint":null,"id":28218,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeRemoveLiquidity":{"entryPoint":null,"id":28304,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeSwap":{"entryPoint":null,"id":28132,"parameterSlots":1,"returnSlots":1},"fun_shouldCallComputeDynamicSwapFee":{"entryPoint":null,"id":28089,"parameterSlots":1,"returnSlots":1},"fun_spendAllowance":{"entryPoint":5883,"id":38827,"parameterSlots":4,"returnSlots":0},"fun_supplyCredit":{"entryPoint":5821,"id":24430,"parameterSlots":2,"returnSlots":0},"fun_syncPoolBalancesAndFees":{"entryPoint":20374,"id":30346,"parameterSlots":3,"returnSlots":0},"fun_tGet":{"entryPoint":null,"id":6669,"parameterSlots":3,"returnSlots":1},"fun_tIncrement":{"entryPoint":17263,"id":7050,"parameterSlots":1,"returnSlots":0},"fun_tSet":{"entryPoint":17280,"id":6699,"parameterSlots":3,"returnSlots":0},"fun_takeDebt":{"entryPoint":19672,"id":24447,"parameterSlots":2,"returnSlots":0},"fun_toInt256":{"entryPoint":19792,"id":44125,"parameterSlots":1,"returnSlots":1},"fun_toPackedBalance":{"entryPoint":23618,"id":5929,"parameterSlots":2,"returnSlots":1},"fun_toRawUndoRateRoundDown":{"entryPoint":22432,"id":6135,"parameterSlots":3,"returnSlots":1},"fun_toRawUndoRateRoundUp":{"entryPoint":23598,"id":6156,"parameterSlots":3,"returnSlots":1},"fun_toUint256":{"entryPoint":23913,"id":43289,"parameterSlots":1,"returnSlots":1},"fun_totalSupply":{"entryPoint":null,"id":38305,"parameterSlots":1,"returnSlots":1},"fun_transfer":{"entryPoint":6367,"id":38711,"parameterSlots":4,"returnSlots":0},"fun_unwrapWithBuffer":{"entryPoint":16389,"id":22103,"parameterSlots":4,"returnSlots":3},"fun_updateRawAndLiveBalance":{"entryPoint":20938,"id":30517,"parameterSlots":3,"returnSlots":0},"fun_updateRawAndLiveBalance_69105":{"entryPoint":21015,"id":30517,"parameterSlots":3,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":27012,"id":39838,"parameterSlots":3,"returnSlots":1},"fun_wrapWithBuffer":{"entryPoint":15271,"id":21867,"parameterSlots":4,"returnSlots":3},"fun_writePoolBalancesToStorage":{"entryPoint":22771,"id":24844,"parameterSlots":2,"returnSlots":0},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38486":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38531":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38532":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38633":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38637":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38653":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38758":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_contract_IERC20_uint256_of_contract_IERC20_38834":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bytes32_of_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":8535,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_nonReentrant":{"entryPoint":13200,"id":9523,"parameterSlots":4,"returnSlots":4},"modifier_onlyWhenUnlocked":{"entryPoint":3390,"id":24387,"parameterSlots":1,"returnSlots":3},"modifier_onlyWhenUnlocked_38500":{"entryPoint":4045,"id":24387,"parameterSlots":1,"returnSlots":3},"modifier_transient":{"entryPoint":4879,"id":19202,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":2924,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":22240,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":3985,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":641,"id":null,"parameterSlots":0,"returnSlots":0},"read_from_memoryt_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_reference_type_struct_TokenInfo":{"entryPoint":20311,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IHooks":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"revert_forward":{"entryPoint":2913,"id":null,"parameterSlots":0,"returnSlots":0},"validator_assert_enum_AddLiquidityKind":{"entryPoint":17419,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_enum_RemoveLiquidityKind":{"entryPoint":8716,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_enum_SwapKind":{"entryPoint":4030,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_contract_IERC20":{"entryPoint":220,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_enum_SwapKind":{"entryPoint":1464,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_enum_SwapKind":{"entryPoint":12237,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"19040":[{"length":32,"start":2492},{"length":32,"start":5567}],"27733":[{"length":32,"start":23399}],"27735":[{"length":32,"start":15128}],"27740":[{"length":32,"start":4890},{"length":32,"start":5742}],"27745":[{"length":32,"start":4955},{"length":32,"start":19957},{"length":32,"start":20025}],"27750":[{"length":32,"start":19893}],"27755":[{"length":32,"start":5189},{"length":32,"start":9961}],"27760":[{"length":32,"start":4999},{"length":32,"start":5137},{"length":32,"start":9909}],"27806":[{"length":32,"start":6938}],"27808":[{"length":32,"start":7113}]},"linkReferences":{},"object":"60806040526004361015610018575b366115a857611580565b5f3560e01c806315afd409146100d757806315dacbea146100d257806321457897146100cd5780632bfb780c146100c857806343583be5146100c357806348c89491146100be5780634af29ec4146100b9578063ae639329146100b4578063b9a8effa146100af578063beabacc8146100aa578063c9c1661b146100a55763d2c725e00361000e57610b14565b610a16565b6109e0565b61099d565b61089a565b6107ca565b610731565b6106a5565b6105cd565b6104e8565b610228565b6100fe565b6001600160a01b038116036100ed57565b5f80fd5b35906100fc826100dc565b565b346100ed5760406003193601126100ed5760043561011b816100dc565b6024356101266115f2565b61012e61166c565b6001600160a01b0382165f818152600860209081526040918290205491517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919492829060249082905afa938415610223576101e6946101ba925f916101f4575b50806101b4856001600160a01b03165f52600860205260405f2090565b55610ba7565b918083116101ea575b50816101ce916116bd565b6101d6611647565b6040519081529081906020820190565b0390f35b91506101ce6101c3565b610216915060203d60201161021c575b61020e81836102ff565b810190610b52565b5f610197565b503d610204565b610b61565b346100ed5760806003193601126100ed57610276600435610248816100dc565b602435610254816100dc565b60443590610261826100dc565b610270606435809483336116fb565b336118df565b602060405160018152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff81116102c257604052565b610281565b60e0810190811067ffffffffffffffff8211176102c257604052565b6060810190811067ffffffffffffffff8211176102c257604052565b90601f601f19910116810190811067ffffffffffffffff8211176102c257604052565b6040519060c0820182811067ffffffffffffffff8211176102c257604052565b604051906100fc826102c7565b60405190610180820182811067ffffffffffffffff8211176102c257604052565b67ffffffffffffffff81116102c25760051b60200190565b9080601f830112156100ed5760209082356103a281610370565b936103b060405195866102ff565b81855260208086019260051b8201019283116100ed57602001905b8282106103d9575050505090565b813581529083019083016103cb565b359060048210156100ed57565b67ffffffffffffffff81116102c257601f01601f191660200190565b92919261041d826103f5565b9161042b60405193846102ff565b8294818452818301116100ed578281602093845f960137010152565b9080601f830112156100ed5781602061046293359101610411565b90565b9081518082526020808093019301915f5b828110610484575050505090565b835185529381019392810192600101610476565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b916104da9061046294928452606060208501526060840190610465565b916040818403910152610498565b346100ed576003196020813601126100ed5760043567ffffffffffffffff918282116100ed5760c09082360301126100ed57610522610322565b61052e826004016100f1565b815261053c602483016100f1565b60208201526044820135604082015260648201358381116100ed576105679060043691850101610388565b6060820152610578608483016103e8565b608082015260a48201359283116100ed5761059f6105a99260046101e69536920101610447565b60a0820152610bb4565b604093919351938493846104bd565b600211156100ed57565b35906100fc826105b8565b346100ed576003196020813601126100ed5760043567ffffffffffffffff918282116100ed5760e09082360301126100ed57610607610342565b610613826004016105c2565b8152610621602483016100f1565b6020820152610632604483016100f1565b6040820152610643606483016100f1565b60608201526084820135608082015260a482013560a082015260c48201359283116100ed5761067e6106889260046101e69536920101610447565b60c0820152610d3e565b604080519384526020840192909252908201529081906060820190565b346100ed5760a06003193601126100ed5760405160a0810181811067ffffffffffffffff8211176102c2576101e691610688916040526004356106e7816105b8565b81526024356106f5816105b8565b6020820152604435610706816100dc565b604082015260643560608201526084356080820152610fcd565b906020610462928181520190610498565b346100ed5760206003193601126100ed5767ffffffffffffffff6004358181116100ed57366023820112156100ed5780600401359182116100ed5736602483830101116100ed576101e6916024610788920161130f565b60405191829182610720565b359060058210156100ed57565b6107b76104629492606083526060830190610465565b9260208201526040818403910152610498565b346100ed576003196020813601126100ed5760043567ffffffffffffffff918282116100ed5760c09082360301126100ed57610804610322565b610810826004016100f1565b815261081e602483016100f1565b602082015260448201358381116100ed5761083f9060043691850101610388565b60408201526064820135606082015261085a60848301610794565b608082015260a48201359283116100ed5761088161088b9260046101e69536920101610447565b60a08201526113dc565b604093919351938493846107a1565b346100ed5760606003193601126100ed576004356108b7816100dc565b602435906108c4826100dc565b604435906108d06115f2565b6108d861166c565b6108ea6108e483614d50565b82614da5565b6001600160a01b0381165f52600860205260405f2080549383850394851161098e579390556040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b03909316602484015260448084019290925290825261096991906109646064836102ff565b6165a2565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b610b6c565b5f9103126100ed57565b346100ed575f6003193601126100ed5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ed5760606003193601126100ed57610276600435610a00816100dc565b602435610a0c816100dc565b60443591336118df565b346100ed5760406003193601126100ed57600435610a33816100dc565b60243590610a40826100dc565b6001600160a01b0380911691825f525f602052600192600160405f20541615610ae9575f93929352600360205260405f20926040519283602086549182815201955f5260205f20925f905b828210610abc5786610aa987610aa3838c03846102ff565b82614cea565b9051604080519182526020820192909252f35b90919280610add86998483985416906001600160a01b036020921681520190565b98019493920190610a8b565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346100ed575f6003193601126100ed5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b908160209103126100ed575190565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b905f19820191821161098e57565b9190820391821161098e57565b90610bbd61166c565b610bd06001600160a01b03835116611ac5565b610be9610be483516001600160a01b031690565b611b12565b610c02610bfd83516001600160a01b031690565b611c3a565b90610c56602083015151610c1d6060860191825151906120f7565b805160c0850190610c3782519160a0880192835191612198565b92610c47875160019060101c1690565b610ccf575b505050848461261c565b9490919586610c6a835160019060111c1690565b610c78575b50505050929190565b84975093610cc594610cbb610cae610c9785516001600160a01b031690565b6001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b9484513390612d88565b925f808080610c6f565b610cf7610d3694888a610cef610cae610c9783516001600160a01b031690565b9233906122a7565b610d2b610d25610d0e8a516001600160a01b031690565b6001600160a01b03165f52600560205260405f2090565b88612391565b519151905191612198565b5f8080610c4c565b90610d4761166c565b60208201906001600160a01b03610d6081845116611ac5565b610d74610be484516001600160a01b031690565b608084015115610f695760408401516001600160a01b031690610db0610da460608701516001600160a01b031690565b6001600160a01b031690565b911614610f4157610dcb610bfd83516001600160a01b031690565b92610dd68482612f42565b90610de2858383612fd9565b8551600c1c600116610ec6575b8551610e099190600b1c600116610e85575b868484613390565b9791979490978397610e208451600190600d1c1690565b610e50575b505050505051610e3481610fbe565b610e3d81610fbe565b610e48575081929190565b918093509190565b85985090610e6f610cae610c97610e7a9894516001600160a01b031690565b948451913392613847565b925f80808080610e25565b85516001600160a01b0316610ebf60608601918251610eb8610cae836001600160a01b03165f52600260205260405f2090565b9185613284565b9052610e01565b610eff90610edb86516001600160a01b031690565b610ef9610cae826001600160a01b03165f52600260205260405f2090565b91613110565b610f1c610f16610d0e86516001600160a01b031690565b86612391565b610f278286836131c9565b6040830152610e09610f3a868484612fd9565b9050610def565b7fa54b181d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f57a456b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60021115610fc857565b610f91565b610fd561166c565b600160075460021c166112d25760408101916001600160a01b03928381511693845f52600e6020528060405f205416156112a657600494506110156115f2565b602061102b610da484516001600160a01b031690565b604051968780927f38d52e0f0000000000000000000000000000000000000000000000000000000082525afa8015610223576080955f91611277575b50166110838161107e84516001600160a01b031690565b613abf565b81516001600160a01b03169061109f6060860192835190613b15565b600160208601516110af81610fbe565b6110b881610fbe565b0361120c576110e0918551916110cd83610fbe565b84516001600160a01b0316915192614005565b7feeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0829692979397968861113e611120610da489516001600160a01b031690565b94604051938493846040919493926060820195825260208201520152565b0390a25b805161114d81610fbe565b61115681610fbe565b6111c257015180841061118f575061118261117d91849283915b516001600160a01b031690565b613b15565b61118a611647565b929190565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b5ffd5b01518085116111dc575061118261117d9185928391611170565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600485905260245260445ffd5b61122f9185519161121c83610fbe565b84516001600160a01b0316915192613ba7565b7f3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b829692979397968861126f611120610da489516001600160a01b031690565b0390a2611142565b611299915060203d60201161129f575b61129181836102ff565b8101906112fa565b5f611067565b503d611287565b847f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b908160209103126100ed5751610462816100dc565b91909161135161134b7f000000000000000000000000000000000000000000000000000000000000000092835c1595866113d3575b3691610411565b33616056565b926113595750565b7f00000000000000000000000000000000000000000000000000000000000000005c6113ab575f905d6100fc7f000000000000000000000000000000000000000000000000000000000000000061436f565b7f20f1d86d000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001855d611344565b906113e561166c565b6113f86001600160a01b03835116611ac5565b61140c610be483516001600160a01b031690565b6114697f00000000000000000000000000000000000000000000000000000000000000005c61144284516001600160a01b031690565b907f0000000000000000000000000000000000000000000000000000000000000000614380565b61148261147d83516001600160a01b031690565b611ed2565b906114d660208301515161149d6040860191825151906120f7565b805160c08501906114b782519160a0880192835191614399565b926114c78751600190600e1c1690565b611529575b50505084846145da565b94909586846114ea8451600190600f1c1690565b6114f9575b5050505050929190565b61151f9550611515610cae610c9785516001600160a01b031690565b9484513390614b2f565b5f808086816114ef565b61155061157894888a611549610cae610c9783516001600160a01b031690565b9233614477565b61156d611567610d0e8a516001600160a01b031690565b886123fe565b519151905191614399565b5f80806114cc565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461158057365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e156115ee573d5ff35b3d5ffd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c61161f576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b7f00000000000000000000000000000000000000000000000000000000000000005c1561169557565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b906116c790614d50565b907f8000000000000000000000000000000000000000000000000000000000000000821461098e576100fc915f0390614da5565b9291909161170a828486614e66565b5f19810361171a575b5050505050565b8082116118a45703906001600160a01b039283811693841561186f5780831695861561183a578461177a8561176486611764866001600160a01b03165f52601060205260405f2090565b906001600160a01b03165f5260205260405f2090565b551692833b156100ed576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a6191611814915f8180606481015b038183895af1611821575b506040519081529081906020820190565b0390a45f80808080611713565b8061182e611834926102ae565b80610993565b5f611803565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b6001600160a01b03837ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b929091926001600160a01b0390818416918215611a9057808616918215611a5b5761191f86611764836001600160a01b03165f52600f60205260405f2090565b54808611611a1e5785900361194987611764846001600160a01b03165f52600f60205260405f2090565b5561196987611764836001600160a01b03165f52600f60205260405f2090565b8581540190551691827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806119a688829190602083019252565b0390a4803b156100ed576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290818381606481015b03925af1801561022357611a115750565b8061182e6100fc926102ae565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038716600452602452604485905260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03871660045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615611ae75750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b63ffffffff807f00000000000000000000000000000000000000000000000000000000000000001642111580611c2c575b611c04576001600160a01b0382165f525f60205260405f20549060018260021c1690611b6d605a90565b906028820180921161098e5782611bbe575b50509050611b8a5750565b7fd971f597000000000000000000000000000000000000000000000000000000005f526001600160a01b031660045260245ffd5b611bf09250611bf9937f0000000000000000000000000000000000000000000000000000000000000000921c16616ab4565b63ffffffff1690565b421115805f80611b7f565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c16611b43565b604090815191611c49836102c7565b5f8352826020810191606080845281830190808252808401908082526080936080860182815260a0870183815260c08801938452611c856115f2565b6001600160a01b038a165f526005602052825f20935f602052835f2054926004602052611cc1855f20946003602052865f209081549c52614eb2565b8b52611ccc8a614f09565b8852611cd78a612126565b8752611ce28a612126565b9052611cef898d51616612565b9052611cfa88612126565b81528a5191600199600184811c169384611ebe575b5083611eac575b5f5b8d8b8210611d76575050505050505050505050505080611d67611d4f611d6e936001600160a01b03165f52600560205260405f2090565b916001600160a01b03165f52600660205260405f2090565b9083614f96565b610462611647565b908a8d92828c8c8c611dd884611dc481611db6611db18f8f61117085611d9c9251612157565b6001600160a01b03165f5260205260405f2090565b614f57565b94905f5260205260405f2090565b54945183611dd28383612157565b52612157565b50611de2816150fa565b611ded858d51612157565b52611e0b6fffffffffffffffffffffffffffffffff841685876151ca565b878d8d15611e9f5782015115159182611e81575b5050611e32575b50505050505b01611d18565b82611e5592611e4c82611e45885161666e565b9451612157565b51961c85616691565b9283611e65575b8e93508c611e26565b611e7893611e7291610ba7565b916151ca565b5f8f8282611e5c565b90915051611e8e81610fbe565b611e9781610fbe565b14875f611e1f565b5050505050505050611e2c565b8c5190935060031c6001161592611d16565b611ec991945061666e565b1515925f611d0f565b604090815191611ee1836102c7565b5f8352826020810191606080845281830190808252808401908082526080936080860182815260a0870183815260c08801938452611f1d6115f2565b6001600160a01b038a165f526005602052825f20935f602052835f2054926004602052611f59855f20946003602052865f209081549c52614eb2565b8b52611f648a614f09565b8852611f6f8a612126565b8752611f7a8a612126565b9052611f87898d51616612565b9052611f9288612126565b81528a5191600199600184811c1693846120e3575b50836120d1575b5f5b8d8b8210611fe7575050505050505050505050505080611d67611d4f611d6e936001600160a01b03165f52600560205260405f2090565b908a8d92828c8c8c61200d84611dc481611db6611db18f8f61117085611d9c9251612157565b50612017816150fa565b612022858d51612157565b526120406fffffffffffffffffffffffffffffffff84168587615217565b878d8d156120c457820151151591826120a6575b5050612067575b50505050505b01611fb0565b8261207a92611e4c82611e45885161666e565b928361208a575b8e93508c61205b565b61209d9361209791610ba7565b91615217565b5f8f8282612081565b909150516120b381610fbe565b6120bc81610fbe565b14875f612054565b5050505050505050612061565b8c5190935060031c6001161592611fae565b6120ee91945061666e565b1515925f611fa7565b036120fe57565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b9061213082610370565b61213d60405191826102ff565b828152601f1961214d8294610370565b0190602036910137565b805182101561216b5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908251916121ab8251825190856150ab565b6121b483612126565b935f5b8481106121c657505050505090565b806121fb6121d660019385612157565b516121f66121e48489612157565b516121ef8589612157565b51926150e7565b61576d565b6122058289612157565b52016121b7565b60041115610fc857565b519081151582036100ed57565b908160209103126100ed5761046290612216565b906004821015610fc85752565b9592936122756122999561046299979361228b956001600160a01b038092168b521660208a01526040890190612237565b606087015260e0608087015260e0860190610465565b9084820360a0860152610465565b9160c0818403910152610498565b5f6001600160a01b03602095969361231f6122c987516001600160a01b031690565b946080880151976122d98961220c565b60a0608060408301519c0151910151916040519b8c9a8b998a977fba5f9f4000000000000000000000000000000000000000000000000000000000895260048901612244565b0393165af1908115610223575f91612362575b501561233a57565b7f2aaf8866000000000000000000000000000000000000000000000000000000005f5260045ffd5b612384915060203d60201161238a575b61237c81836102ff565b810190612223565b5f612332565b503d612372565b60208082015151925f5b8481106123a9575050505050565b6001906123f86fffffffffffffffffffffffffffffffff60406123d86123d285838b0151612157565b516150fa565b6123e68560a08b0151612157565b52835f528587525f20541682876151ca565b0161239b565b60208082015151925f5b848110612416575050505050565b60019061245f6fffffffffffffffffffffffffffffffff604061243f6123d285838b0151612157565b61244d8560a08b0151612157565b52835f528587525f2054168287615217565b01612408565b60405190612472826102e3565b5f6040838281528260208201520152565b9080601f830112156100ed5781519060209161249e81610370565b936124ac60405195866102ff565b81855260208086019260051b8201019283116100ed57602001905b8282106124d5575050505090565b815181529083019083016124c7565b81601f820112156100ed578051906124fb826103f5565b9261250960405194856102ff565b828452602083830101116100ed57815f9260208093018386015e8301015290565b6080818303126100ed5780519260208201519167ffffffffffffffff928381116100ed578461255a918301612483565b9360408201518481116100ed5781612573918401612483565b9360608301519081116100ed5761046292016124e4565b939061046295936125c8936001600160a01b036125ba93168752602087015260a0604087015260a0860190610465565b908482036060860152610465565b916080818403910152610498565b906001820180921161098e57565b9190820180921161098e57565b9161260e9061046294928452606060208501526060840190610465565b916040818403910152610465565b926126256115f2565b606091612630612465565b926020860190612644825151808752612126565b90608084019687516126558161220c565b61265e8161220c565b612a9357506040840151906126738751612126565b956126af8360808c01516126a96126918a516001600160a01b031690565b6001600160a01b03165f52601160205260405f205490565b9061571c565b926127207f00000000000000000000000000000000000000000000000000000000000000005c6126e689516001600160a01b031690565b907f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b612a16575b60408701518082116129e5575061273e819a999a61578f565b60208a01985f5b8b518110156128a0578c6127598288612157565b516127638161578f565b61276d838a612157565b5161288e57816127938460a061278a8260c061279a980151612157565b51930151612157565b51916157a0565b806127a5838a612157565b525b6127b5611170838b51612157565b60608b016127c4848251612157565b51831061284257508e83611e728f8f8f966128369161281e86612816818b60019e9d6127f38861283c9f6116bd565b61280f6128008489612157565b5191516001600160a01b031690565b908d6157cf565b875292612157565b5261282d856060880151612157565b519251906125e4565b90610ba7565b01612745565b91612851846111bf9451612157565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b505061289a8188612157565b516127a7565b509399509594509592986128c69197506128c185516001600160a01b031690565b6158f3565b7ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a56128f884516001600160a01b031690565b9261291a86602087019561291387516001600160a01b031690565b33916116fb565b612922615956565b6129ba575b61294d8661293c87516001600160a01b031690565b86516001600160a01b0316906159d6565b61298161269161297561296788516001600160a01b031690565b96516001600160a01b031690565b9451966111708861220c565b926129a96001600160a01b03926129978861220c565b8c8460405195869516981696846125f1565b0390a46129b4611647565b93929190565b6129e0866129cf87516001600160a01b031690565b86516001600160a01b03169061596b565b612927565b7f31d38e0b000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b989491612a298b97949995929b51615352565b9a5f5b8651811015612a8357808b612a7c8f93612a76612a658f8390612a5b600199612a55848a612157565b5161576d565b611dd28383612157565b51612a708386612157565b51610ba7565b92612157565b5201612a2c565b5091949893969a50919498612725565b949060018851612aa28161220c565b612aab8161220c565b03612b2f57612aba895161528f565b60408501519186928a612b29612b1f8b8a6040612ada60608301516152c3565b92019482865286608082015193612b19610da4612b0b612b0461269188516001600160a01b031690565b9551615352565b95516001600160a01b031690565b946155ec565b909251909a612157565b52612725565b60028896929651612b3f8161220c565b612b488161220c565b03612bdb57612b57895161528f565b612bd4826060870190612b7b612b6d83516152c3565b60408c019381855251612157565b51612b87835188612157565b528b612b9a608082015193518093612157565b51612bb9612bb26126918c516001600160a01b031690565b9251615352565b92612bce610da48c516001600160a01b031690565b946153a9565b9690612725565b509360038751612bea8161220c565b612bf38161220c565b03612cb457612c02885161525a565b5f612c1a610da4610da487516001600160a01b031690565b9560408601519660808b0151918360a089015199612c686040519b8c96879586947fab68e28c000000000000000000000000000000000000000000000000000000008652336004870161258a565b03925af1948515610223575f915f965f925f91612c89575b50919692612725565b9250509550612caa91503d805f833e612ca281836102ff565b81019061252a565b919690915f612c80565b7f137a9a39000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190916040818403126100ed57612cf281612216565b92602082015167ffffffffffffffff81116100ed576104629201612483565b969394610462989692612d7a96612d4b612d6c96612d5e95610100948d6001600160a01b0380931690521660208d015260408c0190612237565b60608a01528060808a0152880190610465565b9086820360a0880152610465565b9084820360c0860152610465565b9160e0818403910152610498565b949395929691908451612da1906001600160a01b031690565b90608086015192612db18461220c565b60808601518a60a0890151926040519b8c9788977f2754888d0000000000000000000000000000000000000000000000000000000089526004890197612df698612d11565b03916001600160a01b031691815a5f948591f1938415610223575f905f95612f1b575b50158015612f0f575b612ee7576001809360091c1615612e405792935090915f835b612e47575b5050505090565b8451811015612ee257612e5a8186612157565b516060840190612e6b838351612157565b5111612e7a5750830183612e3b565b612ea582612e9d81612e976111708b9760206111bf9a0151612157565b95612157565b519251612157565b517ffbd8a724000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b612e40565b7f1d3391d8000000000000000000000000000000000000000000000000000000005f5260045ffd5b50835185511415612e22565b9050612f3a9194503d805f833e612f3281836102ff565b810190612cdc565b93905f612e19565b6040519291608084019067ffffffffffffffff8211858310176102c257612fc9916040525f855260208501945f8652612fc160408201915f83528360608201965f88528299612fba60208401805190612faa6001600160a01b03928360408801511690614cea565b8752519060608501511690614cea565b90526131c9565b905251615352565b9052565b612fd682610fbe565b52565b919091606060c0604051612fec816102c7565b5f81525f60208201528260408201525f838201525f60808201525f60a0820152015280519261301a84610fbe565b6080604082015193015160c0602083519301519301519361304361303c610342565b9687612fcd565b60208601526040850152606084015260808301523360a083015260c082015290565b90612fd682610fbe565b919060e0810190835161308181610fbe565b8152602080850151602083015260408501519260e060408401528351809152602061010084019401915f5b8281106130fc575050505060c0846060610462959601516060840152608081015160808401526130ec60a082015160a08501906001600160a01b03169052565b01519060c0818403910152610498565b8351865294810194928101926001016130ac565b602091926131605f6001600160a01b038094604051978896879586937f5211fa7700000000000000000000000000000000000000000000000000000000855260406004860152604485019061306f565b911660248301520393165af1908115610223575f916131aa575b501561318257565b7fe91e17e7000000000000000000000000000000000000000000000000000000005f5260045ffd5b6131c3915060203d60201161238a5761237c81836102ff565b5f61317a565b91909180516131d781610fbe565b6131e081610fbe565b613225579061321c670de0b6b3a7640000936121ef60806132219501519360a061321060c0850151835190612157565b51930151905190612157565b6150e7565b0490565b6104629261326161325b60806121f69401519460a061324f602060c0870151930192835190612157565b51940151905190612157565b51615b41565b926150e7565b91908260409103126100ed57602061327e83612216565b92015190565b90926132d5604093946001600160a01b039384918651978896879586947fa0e8f5ac00000000000000000000000000000000000000000000000000000000865260606004870152606486019061306f565b9216602484015260448301520392165afa908115610223575f905f9261335e575b501561333657670de0b5cad2bef000811161330e5790565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613382915060403d604011613389575b61337a81836102ff565b810190613267565b905f6132f6565b503d613370565b5f949193929361339e6115f2565b6133a6612465565b9180516133b281610fbe565b6133bb81610fbe565b15613747575b6020918286016133d18151615b65565b83613426818501986133f0610da4610da48c516001600160a01b031690565b906040519c8d809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161376f565b03925af1988915610223575f99613728575b508861344381615b65565b835161344e81610fbe565b61345781610fbe565b6136b057506040820151905261349660c088015161348f61325b61348087860193845190612157565b519260a08c0151905190612157565b908a6157a0565b9360808301519685979860a085015180881061368057505b60408501948a86516134c6906001600160a01b031690565b906134d091614cd8565b606001958987516134e7906001600160a01b031690565b906134f1916116bd565b835183516001600160a01b031687516001600160a01b031687519161351693866157cf565b9190818601956040019283528552855160608401928d8285519061353991612157565b5190613544916125e4565b905161354f91610ba7565b61355991856151ca565b85019182518b8184519061356c91612157565b519061357791610ba7565b61358191836151ca565b83516001600160a01b03165f90815260056020526040902091805187516135a791612157565b519160800191825188516135ba91612157565b516135c491615c42565b87516135d89085905f5260205260405f2090565b555183516135e591612157565b51905183516135f391612157565b516135fd91615c42565b915161361091905f5260205260405f2090565b5551925193516060928301519151604080518b8152602081018b905290810193909352928201929092526001600160a01b039182169382169291909116907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a4939291906100fc611647565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600488905260245260445ffd5b90508198506136d760606136e0930151670de0b6b3a7640000818103908210029083615c0e565b908186526125e4565b9661370d6136f460c0890151835190612157565b5161370560a08a0151845190612157565b51908a615c2e565b93608083015196859860a085015180881161368057506134ae565b613740919950843d861161021c5761020e81836102ff565b975f613438565b6020850161376861375e825160608601519061576d565b8086528251610ba7565b90526133c1565b90602061046292818152019061306f565b6101a06104629260208352613799602084018251613065565b60208101516001600160a01b0316604084015260408101516001600160a01b0316606084015260608101516080840152608081015160a084015260a081015160c084015260c081015160e084015260e08101516101009081850152810151610120908185015281015161381a61014091828601906001600160a01b03169052565b8101519061383661016092838601906001600160a01b03169052565b015191610180808201520190610498565b939590919492865161385881610fbe565b61386181610fbe565b613ab05786604085015191845b82519461387a86610fbe565b604097889788860151613893906001600160a01b031690565b9660608701516138a9906001600160a01b031690565b9360800192835181516138bb91612157565b51935190602001516138cc91612157565b519360208801516138e3906001600160a01b031690565b9760c00151986138f161034f565b9a6138fc908c612fcd565b6001600160a01b031660208b01526001600160a01b0316898b01526060890152608088015260a087015260c086015260e085015261010084018890526001600160a01b03166101208401526001600160a01b0316610140830152610160820152815196878080937f18b6eb55000000000000000000000000000000000000000000000000000000008252600482019061399491613780565b03916001600160a01b03165a905f91f1948515610223575f915f96613a8c575b505015613a645760091c60011615613a5e575080516139d281610fbe565b6139db81610fbe565b1580613a51575b8015613a26575b6139f1575090565b60a001517fcc0e4a99000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b5060018151613a3481610fbe565b613a3d81610fbe565b1480156139e9575060a081015182116139e9565b5060a081015182106139e2565b91505090565b7f15a29dec000000000000000000000000000000000000000000000000000000005f5260045ffd5b613aa793965080919250903d106133895761337a81836102ff565b93905f806139b4565b8660408501519184929461386e565b6001600160a01b0380911690815f52600e6020528060405f2054169216809203613ae7575050565b7f36b18d09000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b907f000000000000000000000000000000000000000000000000000000000000000011613b3f5750565b6001600160a01b03907f18fe7385000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b81810392915f13801582851316918412161761098e57565b9190915f838201938412911290801582169115161761098e57565b939091613bb385610fbe565b84158015613f7557613c016020613bc987610b99565b604051809381927fef8b30f7000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa801561022357613c26915f91613f56575b50610b99565b94955b613c44836001600160a01b03165f52600b60205260405f2090565b5491613c4e615956565b613f4e57869288929091608083901c91858310613ccc5750505092613cc682613ca386613c9e6001600160a01b03966fffffffffffffffffffffffffffffffff896100fc9b60801c0393166125e4565b615c42565b9788613cc0856001600160a01b03165f52600b60205260405f2090565b55614cd8565b166116bd565b90929350613cdb919450610fbe565b15613df657613d03613cfe613cf08584615f08565b613cf98a614d50565b613b8c565b615d69565b926001600160a01b03811693613d1a818689615eb9565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526004810182905230602482015294602090869060449082905f905af1801561022357613ca38995613dd187613dc66001600160a01b038f96888f896100fc9f859e613dc08f613cc69f613dc696613dcb996fffffffffffffffffffffffffffffffff965f91613dd7575b509a8b935b1690613dbb8282615d9e565b615f9d565b166125e4565b610ba7565b946125e4565b90615c42565b613df0915060203d60201161021c5761020e81836102ff565b5f613daa565b9091613e16613cfe613e088385615ca6565b613e1189614d50565b613b74565b6040517fb3d7f6b9000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b038316936020939290918481602481895afa801561022357613e75915f91613f31575b50868a615eb9565b6040517f94bf804d00000000000000000000000000000000000000000000000000000000815260048101829052306024820152948490869060449082905f905af1918215610223576100fc96613dd18b613dc6858f966001600160a01b038f896fffffffffffffffffffffffffffffffff879f9a849f8f96613cc69f97613dc696613ca39f99613dcb9a613dc0955f92613f14575b5050988992613daf565b613f2a9250803d1061021c5761020e81836102ff565b5f80613f0a565b613f489150863d881161021c5761020e81836102ff565b5f613e6d565b509093505050565b613f6f915060203d60201161021c5761020e81836102ff565b5f613c20565b613fbb6020613f83876125d6565b604051809381927fb3d7f6b9000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa801561022357613fe0915f91613fe6575b506125d6565b95613c29565b613fff915060203d60201161021c5761020e81836102ff565b5f613fda565b939061401085610fbe565b84159485156142ff5761405f602061402787610b99565b604051809381927f4cdad506000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0389165afa801561022357614083915f91613f565750610b99565b94955b6140a1856001600160a01b03165f52600b60205260405f2090565b54916140ab615956565b613f4e5787938793909290916fffffffffffffffffffffffffffffffff918284169186831061412b57505050936001600160a01b0361410183866100fc986140f9866141269860801c6125e4565b921603615c42565b978861411e826001600160a01b03165f52600b60205260405f2090565b555b16614cd8565b6116bd565b91965092945061413b9150610fbe565b1561423957614150613cfe613cf08785615ca6565b6040517fba087652000000000000000000000000000000000000000000000000000000008152600481018290523060248201819052604482015293906020856064815f6001600160a01b038c165af18015610223576141f78995613dd184613dc68e6141ee8b8f6001600160a01b036100fc9f9c6141e98f9d6141269f94889f859f613dc6975f9161421a575b509586925b1690615fe2565b6125e4565b9460801c6125e4565b9788614214826001600160a01b03165f52600b60205260405f2090565b55614120565b614233915060203d60201161021c5761020e81836102ff565b5f6141dd565b614249613cfe613e088785615f08565b6040517fb460af940000000000000000000000000000000000000000000000000000000081526004810182905230602482018190526044820152906020826064815f6001600160a01b038c165af1918215610223576141f78995613dd16001600160a01b03613dc68e6141ee8b8f8a6100fc9f6141e98f936141269f9e889f958b9f96613dc6975f916142e0575b509b8c936141e2565b6142f9915060203d60201161021c5761020e81836102ff565b5f6142d7565b614345602061430d876125d6565b604051809381927f0a28a477000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0389165afa801561022357614369915f91613fe657506125d6565b95614086565b805c906001820180921161098e575d565b905f5260205260405f20905f52602052600160405f205d565b91908251916143ac8251825190856150ab565b6143b583612126565b935f5b8481106143c757505050505090565b80670de0b6b3a76400006143f96143e060019486612157565b5161321c6143ee858a612157565b516121ef868a612157565b046144048289612157565b52016143b8565b60051115610fc857565b906005821015610fc85752565b95919361445361046298969461446493612299976001600160a01b038092168b521660208a01526040890190614415565b60e0606088015260e0870190610465565b91608086015284820360a0860152610465565b925f6001600160a01b036020959693966144f161449b87516001600160a01b031690565b946080880151976144ab8961440b565b60a060806060830151930151910151916040519b8c9a8b998a977f45421ec700000000000000000000000000000000000000000000000000000000895260048901614422565b0393165af1908115610223575f91614534575b501561450c57565b7f0b2eb652000000000000000000000000000000000000000000000000000000005f5260045ffd5b61454d915060203d60201161238a5761237c81836102ff565b5f614504565b916080838303126100ed5782519067ffffffffffffffff918281116100ed578361457e918601612483565b9360208101519360408201518481116100ed5781612573918401612483565b936145c76125c8936001600160a01b0361046298969416875260a0602088015260a0870190610465565b9160408601528482036060860152610465565b91906145e46115f2565b60606145ee612465565b9160208501614601815151808652612126565b608083019586516146118161440b565b61461a8161440b565b61488b5750606083015161462e8651612126565b946146528260808b015161464c61269189516001600160a01b031690565b9061640d565b995b606086015180841061485b575061466d8399989961578f565b60208901975f5b8c8b5182101561479a578161468891612157565b516146928161578f565b61469c8288612157565b51614789576146c1908d6146ba8460a061278a8260c0860151612157565b5191615c2e565b806146cc8389612157565b525b6146dc611170838a51612157565b60408a016146eb848251612157565b51831161473d57508d83611e728e61472f8f968f9761471a86612816818b60019e9d6127f3886147379f614cd8565b52614729856060880151612157565b516125e4565b905190610ba7565b01614674565b9161474c846111bf9451612157565b517f8eda85e4000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b506147948187612157565b516146ce565b50509396945096509650966147ba906128c185516001600160a01b031690565b7fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca8716147ec84516001600160a01b031690565b9261480d89602087019561480787516001600160a01b031690565b90616454565b61483361269161482761296788516001600160a01b031690565b9451966111708861440b565b926129a96001600160a01b03926148498861440b565b888460405195869516981696846125f1565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b600387516148988161440b565b6148a18161440b565b036148c3576148b088516163d8565b6148ba8151612126565b945f9199614654565b97600187516148d18161440b565b6148da8161440b565b03614942576148e9885161528f565b61493a896148fb846040880151616174565b60808a01519061491561269188516001600160a01b031690565b61491f8c51615352565b91614934610da48a516001600160a01b031690565b9361618f565b959091614654565b9793600287516149518161440b565b61495a8161440b565b036149c65797879861496c895161528f565b60608501519161497b876152c3565b6149c06149b660408b0192808452898b9f886080820151936149b0610da4612b0b612b0461269188516001600160a01b031690565b946160a9565b9092519099612157565b52614654565b50600486516149d48161440b565b6149dd8161440b565b03614a9e576149ec8751616074565b5f614a04610da4610da486516001600160a01b031690565b60608501519060808a0151918360a088015198614a516040519a8b96879586947fe4c43663000000000000000000000000000000000000000000000000000000008652336004870161459d565b03925af1938415610223575f905f955f915f91614a73575b5090959199614654565b92505050614a949194503d805f833e614a8c81836102ff565b810190614553565b919592915f614a69565b7f6c02b395000000000000000000000000000000000000000000000000000000005f5260045ffd5b9692610462989694614b1c93614b00614b0e93612d7a9995610100938d6001600160a01b0380931690521660208d015260408c0190614415565b8060608b0152890190610465565b908782036080890152610465565b9160a086015284820360c0860152610465565b949391959296908451614b48906001600160a01b031690565b608086015191614b578361440b565b608086015160a0880151906040968c6040519c8d9788977f976907cc0000000000000000000000000000000000000000000000000000000089526004890197614b9f98614ac6565b03916001600160a01b031691815a5f948591f1948515610223575f905f96614cb9575b50158015614cad575b614c85576001809460091c1615614beb57909192809495505f905b614bf3575b505050505090565b8551811015614c8057614c068187612157565b5182850190614c16838351612157565b5110614c255750840184614be6565b8690614c4383612e9d81612e976111706111bf9860208c0151612157565b517fcefa3afa000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b614beb565b7fe1249165000000000000000000000000000000000000000000000000000000005f5260045ffd5b50845186511415614bcb565b9050614cd09195503d805f833e612f3281836102ff565b94905f614bc2565b614ce46100fc92614d50565b90614da5565b905f5b8251811015614d1b576001600160a01b0380614d098386612157565b511690831614613a5e57600101614ced565b6001600160a01b03827fddef98d7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111614d7a5790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8115614e62576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000009116805f5281602052614dec60405f205c9384613b8c565b9283614e3057507f0000000000000000000000000000000000000000000000000000000000000000805c905f19820191821161098e575d5b5f5260205260405f205d565b614e2457614e5d7f000000000000000000000000000000000000000000000000000000000000000061436f565b614e24565b5050565b6001600160a01b03929183811684841603614e8457505050505f1990565b614eae9361176492165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b5490565b90604051918281549182825260209260208301915f5260205f20935f905b828210614ee6575050506100fc925003836102ff565b85546001600160a01b031684526001958601958895509381019390910190614ed0565b90614f1382610370565b614f2060405191826102ff565b828152601f19614f308294610370565b01905f5b828110614f4057505050565b602090614f4b612465565b82828501015201614f34565b90604051614f64816102e3565b604060ff829454818116614f7781610fbe565b84526001600160a01b038160081c16602085015260a81c161515910152565b60608101805151935f5b858110614faf57505050505050565b80614fc36111706001936020880151612157565b614fee614fd88389905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b614ff9838751612157565b518111615040575b5050615027615011828651612157565b51615020836080890151612157565b5190615c42565b6150398288905f5260205260405f2090565b5501614fa0565b61508b6150a39161508561507c615068868a906001600160a01b03165f5260205260405f2090565b5492615075888c51612157565b5190610ba7565b8260801c6125e4565b906166e4565b9185906001600160a01b03165f5260205260405f2090565b555f80615001565b811480159291906150bf575b50506120fe57565b141590505f806150b7565b90670de0b6b3a76400009182810292818404149015171561098e57565b8181029291811591840414171561098e57565b805161510581610fbe565b61510e81610fbe565b80615121575050670de0b6b3a764000090565b8061512d600192610fbe565b036151a257602061514c610da48260049401516001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115610223575f91615189575090565b610462915060203d60201161021c5761020e81836102ff565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b91906080670de0b6b3a764000061520e612fd694806151ed8660608a0151612157565b5261321c6151ff8660c08a0151612157565b516121ef8760a08b0151612157565b04930151612157565b91906080615252612fd69380615231856060890151612157565b526121f66152438560c0890151612157565b516121ef8660a08a0151612157565b930151612157565b60061c6001161561526757565b7fcf0a95c0000000000000000000000000000000000000000000000000000000005f5260045ffd5b60041c60011661529b57565b7fd4f5779c000000000000000000000000000000000000000000000000000000005f5260045ffd5b80519081905f5b8281106153055750508110156152dd5790565b7f7e46bddc000000000000000000000000000000000000000000000000000000005f5260045ffd5b61530f8183612157565b5161531d575b6001016152ca565b92820361532a5782615315565b7f6b8c3be5000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff9060121c1664174876e8009081810291818304149015171561098e5790565b9190602061538c5f92604086526040860190610465565b930152565b9190602061538c600192604086526040860190610465565b90949291928151946153ba86612126565b945f5b8781106155a357506153d390612a708988612157565b6153dd8887612157565b52604051947f984de9e80000000000000000000000000000000000000000000000000000000092838752602087806154188860048301615375565b03816001600160a01b0385165afa968715610223575f97615582575b50604051948486526020868061544d8660048301615375565b03816001600160a01b0386165afa93841561022357613dc66154af8c6150756154a86154c5966154a18f6154916154fb9f9160209e88935f91615563575b50615bb5565b9261549c848d616700565b612157565b519061576d565b9188612157565b91670de0b6b3a764000081810391100282615bb5565b936154d485612a708c86612157565b6154de8b85612157565b526001600160a01b03604051809781958294835260048301615391565b0392165afa9081156102235761553795615531935f9361553a575b5061552361552a91612126565b9788612157565b5283610ba7565b90615c0e565b91565b61552a91935061555b6155239160203d60201161021c5761020e81836102ff565b939150615516565b602061557c92503d60201161021c5761020e81836102ff565b5f61548b565b61559c91975060203d60201161021c5761020e81836102ff565b955f615434565b806155b96155b360019388612157565b51610b99565b6155c3828a612157565b52016153bd565b6155e260409295949395606083526060830190610465565b9460208201520152565b90949183039183831161098e5760206156526001600160a01b03926156118787615bb5565b61561b8183616700565b6040519485809481937f16a0b3e00000000000000000000000000000000000000000000000000000000083528d8a600485016155ca565b0392165afa801561022357615537956121f68861569d936156a6986156ad965f926156b3575b5061568b82612a70613dc694958b612157565b986156968d8a612157565b5190615c0e565b93849251612126565b9586612157565b52610ba7565b613dc69250612a70936156d761568b9260203d60201161021c5761020e81836102ff565b93509350615678565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8115615717570490565b6156e0565b9092916157298251612126565b915f5b815181101561576657615749836157438385612157565b516150e7565b90861561571757866001920461575f8287612157565b520161572c565b5050509150565b90615777916150e7565b6001670de0b6b3a76400005f19830104019015150290565b806157975750565b6100fc90615b65565b916157aa916150e7565b90670de0b6b3a76400009081810291818304149015171561098e578115615717570490565b91949290945f955f95816157e4575050505050565b8497506127936157fd8260c06158099697980151612157565b519160a08a0151612157565b945160018160031c161561581f575b8080611713565b62ffffff91929450602a1c1664174876e8009081810291818304149015171561098e57615855670de0b6b3a764000091866150e7565b04928484116158cb57806117646158aa6158876158c294611764876001600160a01b03165f52600660205260405f2090565b546158a4886fffffffffffffffffffffffffffffffff83166125e4565b906167b7565b936001600160a01b03165f52600660205260405f2090565b555f8080615818565b7f4c69ac5d000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0390929192165f52602060056020526040805f205f5b6060860151805182101561594d579061593d61592e82600194612157565b516150208360808b0151612157565b815f52838652845f205501615910565b50505050509050565b3215806159605790565b506001600754161590565b90326159ae576001600160a01b0361599f92165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b805491820180921161098e5755565b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b90916001600160a01b03808416928315611a9057615a0985611764836001600160a01b03165f52600f60205260405f2090565b54808411615b0457839003615a3386611764846001600160a01b03165f52600f60205260405f2090565b55615a5983615a53836001600160a01b03165f52601160205260405f2090565b54610ba7565b615a62816167c5565b615a7d826001600160a01b03165f52601160205260405f2090565b551690813b156100ed576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f91615aff91868180606481016117f8565b0390a4565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b670de0b6b3a7640000808204028103615b575790565b6001810180911161098e5790565b7f000000000000000000000000000000000000000000000000000000000000000011615b8d57565b7f1ed4d118000000000000000000000000000000000000000000000000000000005f5260045ffd5b908015615be657670de0b6b3a76400009182810292818404149015171561098e576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8215615be657600191615c20916150e7565b915f19830104019015150290565b9061046292615c3c916150e7565b90615bb5565b906fffffffffffffffffffffffffffffffff808311908115615c9c575b50615c745760801b90810180911161098e5790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f615c5f565b90615cb38260801c614d50565b906fffffffffffffffffffffffffffffffff5f931680615ce0575b5050600291615cdc91613b74565b0590565b6001600160a01b03935090602460209260405195869384927f0a28a4770000000000000000000000000000000000000000000000000000000084526004840152165afa90811561022357615d41615cdc926002945f91615d4a575b50614d50565b92819250615cce565b615d63915060203d60201161021c5761020e81836102ff565b5f615d3b565b5f8112615d735790565b7fa8ce4432000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b03851660248401525f6044840152909391929183606481015b0391615dfd601f19938481018752866102ff565b5f806001600160a01b0386169287519082855af190615e1a616027565b82615e87575b5081615e7c575b5015615e34575050505050565b60405160208101959095526001600160a01b031660248501525f604485015260649081018452615e729361096491615e6c90826102ff565b826165a2565b5f80808080611713565b90503b15155f615e27565b80519192508115918215615e9f575b5050905f615e20565b615eb29250602080918301019101612223565b5f80615e96565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b038516602484015260448301959095529390928360648101615de9565b90615f246fffffffffffffffffffffffffffffffff8316614d50565b905f9260801c80615f3d575050600291615cdc91613b74565b6001600160a01b03935090602460209260405195869384927fb3d7f6b90000000000000000000000000000000000000000000000000000000084526004840152165afa90811561022357615d41615cdc926002945f91615d4a5750614d50565b9291906001600160a01b038085165f52600860205260405f205492830392831161098e5781165f52600860205260405f205492830180931161098e576100fc936167fd565b9291906001600160a01b038085165f52600860205260405f205492830180931161098e5781165f52600860205260405f205492830392831161098e576100fc936167fd565b3d15616051573d90616038826103f5565b9161604660405193846102ff565b82523d5f602084013e565b606090565b5f806104629360208151910182855af161606e616027565b91616984565b60051c6001161561608157565b7f4876c0bc000000000000000000000000000000000000000000000000000000005f5260045ffd5b90949160206160d86160c3866001600160a01b03946125e4565b946160ce8787615bb5565b61561b8183616a10565b0392165afa80156102235761553795613dc66154af8561569d946156a6998c998a616137995f9461613d575b509061612b61612461611d616132946128369798612157565b5187610ba7565b9c8c612157565b51906150e7565b61570d565b526125e4565b612836945061612461611d616132949361616861612b9460203d60201161021c5761020e81836102ff565b97509394505050616104565b9060208083516161858451826120f7565b60051b930191015e565b92919093835161619e81612126565b916161a882612126565b965f5b83811061639d5750506001600160a01b03811691604051957f984de9e800000000000000000000000000000000000000000000000000000000928388526020988989806161fb8460048301615375565b0381895afa988915610223575f9961637e575b506040518581528a81806162258b60048301615391565b03818a5afa908115610223578a61613261626093616259938f5f92616361575b9b999d9c9a989796959493929190506150ca565b8093616a10565b5f5b8981106162cf57505050506162869550604051809681948293835260048301615391565b03915afa9182156102235783616132936162ac92615537975f926162b2575b5050610ba7565b906150e7565b6162c89250803d1061021c5761020e81836102ff565b5f806162a5565b869899959750838d8394959698836162f36162ec82600198612157565b51896167a4565b806162fe8385612157565b511161631a575b505050505001908a9694989795939291616262565b818361633b61634c97616345946163348561507599612157565b510361576d565b611dd28388612157565b5192612157565b616356828b612157565b52848d8a835f616305565b6163779250803d1061021c5761020e81836102ff565b5f8f616245565b6163969199508a3d8c1161021c5761020e81836102ff565b975f61620e565b806163c76163c26163b06001948c612157565b516163bb8487612157565b51906125e4565b610b99565b6163d18288612157565b52016161ab565b60071c600116156163e557565b7fefe0265d000000000000000000000000000000000000000000000000000000005f5260045ffd5b92916164198451612126565b935f5b815181101561644e578061643d858561643760019587612157565b51615c0e565b6164478289612157565b520161641c565b50505050565b916001600160a01b0380831693841561656d5761648c83616486836001600160a01b03165f52601160205260405f2090565b546125e4565b6164ab85611764846001600160a01b03165f52600f60205260405f2090565b8481540190556164ba816167c5565b6164d5826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f6040518061650e87829190602083019252565b0390a4823b156100ed576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b039093166024820152604481019190915291829081838160648101611a00565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b6001600160a01b036165b691169182616056565b80519081151591826165f7575b50506165cc5750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61660a9250602080918301019101612223565b155f806165c3565b9064ffffffffff61662282612126565b92605a1c165f5b8281106166365750505090565b600580820290828204148215171561098e5782601f911c1690604d821161098e57600191600a0a6166678287612157565b5201616629565b62ffffff9060421c1664174876e8009081810291818304149015171561098e5790565b9093925f946166a4846080850151612157565b518181116166b3575050505050565b6166d9959650916166c891612793930361576d565b9260a061278a8260c0860151612157565b905f80808080611713565b906fffffffffffffffffffffffffffffffff6104629216615c42565b9060206001600160a01b03926004604051809581937fb677fa56000000000000000000000000000000000000000000000000000000008352165afa918215610223575f92616783575b50818110616755575050565b7fe31c95be000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61679d91925060203d60201161021c5761020e81836102ff565b905f616749565b670de0b6b3a764000091613221916150e7565b906104629160801c90615c42565b620f424081106167d25750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000808252306004830152602095939490926001600160a01b03929187836024818786165afa928315610223575f93616965575b508083106169205750616877906001600160a01b03165f52600860205260405f2090565b556040519182523060048301528316908481602481855afa948515610223575f95616901575b50508184106168c65750506168c3906001600160a01b03165f52600860205260405f2090565b55565b7f1149424d000000000000000000000000000000000000000000000000000000005f526001600160a01b03166004526024525060445260645ffd5b616918929550803d1061021c5761020e81836102ff565b925f8061689d565b90506111bf92867f1c6a5375000000000000000000000000000000000000000000000000000000005f52169291906001600160a01b0360649416600452602452604452565b61697d919350883d8a1161021c5761020e81836102ff565b915f616853565b906169c1575080511561699957805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580616a07575b6169d2575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156169ca565b9060206001600160a01b03926004604051809581937f273c1adf000000000000000000000000000000000000000000000000000000008352165afa918215610223575f92616a93575b50818111616a65575050565b7f3e8960dc000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b616aad91925060203d60201161021c5761020e81836102ff565b905f616a59565b91909163ffffffff8080941691160191821161098e5756fea26469706673582212200ab32216ead251979bead82c49668a68329180bc897ccca5b20a5d4dce33e35f64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x15A8 JUMPI PUSH2 0x1580 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x15AFD409 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x15DACBEA EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0x21457897 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x2BFB780C EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0x43583BE5 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x48C89491 EQ PUSH2 0xBE JUMPI DUP1 PUSH4 0x4AF29EC4 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0xAE639329 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB9A8EFFA EQ PUSH2 0xAF JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xC9C1661B EQ PUSH2 0xA5 JUMPI PUSH4 0xD2C725E0 SUB PUSH2 0xE JUMPI PUSH2 0xB14 JUMP JUMPDEST PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x99D JUMP JUMPDEST PUSH2 0x89A JUMP JUMPDEST PUSH2 0x7CA JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x5CD JUMP JUMPDEST PUSH2 0x4E8 JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0xED JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLDATALOAD SWAP1 PUSH2 0xFC DUP3 PUSH2 0xDC JUMP JUMPDEST JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x11B DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x126 PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x12E PUSH2 0x166C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP3 DUP3 SWAP1 PUSH1 0x24 SWAP1 DUP3 SWAP1 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH2 0x1E6 SWAP5 PUSH2 0x1BA SWAP3 PUSH0 SWAP2 PUSH2 0x1F4 JUMPI JUMPDEST POP DUP1 PUSH2 0x1B4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0xBA7 JUMP JUMPDEST SWAP2 DUP1 DUP4 GT PUSH2 0x1EA JUMPI JUMPDEST POP DUP2 PUSH2 0x1CE SWAP2 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP2 POP PUSH2 0x1CE PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x216 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI JUMPDEST PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xB52 JUMP JUMPDEST PUSH0 PUSH2 0x197 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x204 JUMP JUMPDEST PUSH2 0xB61 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH2 0x276 PUSH1 0x4 CALLDATALOAD PUSH2 0x248 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x254 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x261 DUP3 PUSH2 0xDC JUMP JUMPDEST PUSH2 0x270 PUSH1 0x64 CALLDATALOAD DUP1 SWAP5 DUP4 CALLER PUSH2 0x16FB JUMP JUMPDEST CALLER PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x281 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0xFC DUP3 PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x180 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2C2 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xED JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x3A2 DUP2 PUSH2 0x370 JUMP JUMPDEST SWAP4 PUSH2 0x3B0 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2FF JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3D9 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x3CB JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0xED JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2C2 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x41D DUP3 PUSH2 0x3F5 JUMP JUMPDEST SWAP2 PUSH2 0x42B PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x2FF JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0xED JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xED JUMPI DUP2 PUSH1 0x20 PUSH2 0x462 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x411 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x484 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x476 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4DA SWAP1 PUSH2 0x462 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0xED JUMPI PUSH1 0xC0 SWAP1 DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xED JUMPI PUSH2 0x522 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x52E DUP3 PUSH1 0x4 ADD PUSH2 0xF1 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x53C PUSH1 0x24 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 DUP3 ADD CALLDATALOAD DUP4 DUP2 GT PUSH2 0xED JUMPI PUSH2 0x567 SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP6 ADD ADD PUSH2 0x388 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x578 PUSH1 0x84 DUP4 ADD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA4 DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH2 0x59F PUSH2 0x5A9 SWAP3 PUSH1 0x4 PUSH2 0x1E6 SWAP6 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0xBB4 JUMP JUMPDEST PUSH1 0x40 SWAP4 SWAP2 SWAP4 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x4BD JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0xED JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0xFC DUP3 PUSH2 0x5B8 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0xED JUMPI PUSH1 0xE0 SWAP1 DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xED JUMPI PUSH2 0x607 PUSH2 0x342 JUMP JUMPDEST PUSH2 0x613 DUP3 PUSH1 0x4 ADD PUSH2 0x5C2 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x621 PUSH1 0x24 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x632 PUSH1 0x44 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x643 PUSH1 0x64 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x84 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA4 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC4 DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH2 0x67E PUSH2 0x688 SWAP3 PUSH1 0x4 PUSH2 0x1E6 SWAP6 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0xD3E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x60 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2C2 JUMPI PUSH2 0x1E6 SWAP2 PUSH2 0x688 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATALOAD PUSH2 0x6E7 DUP2 PUSH2 0x5B8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH2 0x6F5 DUP2 PUSH2 0x5B8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH2 0x706 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0xFCD JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x462 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x498 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0xED JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xED JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0xED JUMPI CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0xED JUMPI PUSH2 0x1E6 SWAP2 PUSH1 0x24 PUSH2 0x788 SWAP3 ADD PUSH2 0x130F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x720 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0xED JUMPI JUMP JUMPDEST PUSH2 0x7B7 PUSH2 0x462 SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP3 GT PUSH2 0xED JUMPI PUSH1 0xC0 SWAP1 DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0xED JUMPI PUSH2 0x804 PUSH2 0x322 JUMP JUMPDEST PUSH2 0x810 DUP3 PUSH1 0x4 ADD PUSH2 0xF1 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x81E PUSH1 0x24 DUP4 ADD PUSH2 0xF1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 DUP3 ADD CALLDATALOAD DUP4 DUP2 GT PUSH2 0xED JUMPI PUSH2 0x83F SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP6 ADD ADD PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x85A PUSH1 0x84 DUP4 ADD PUSH2 0x794 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA4 DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH2 0x881 PUSH2 0x88B SWAP3 PUSH1 0x4 PUSH2 0x1E6 SWAP6 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x447 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x13DC JUMP JUMPDEST PUSH1 0x40 SWAP4 SWAP2 SWAP4 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x7A1 JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x8B7 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x8C4 DUP3 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x8D0 PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x8D8 PUSH2 0x166C JUMP JUMPDEST PUSH2 0x8EA PUSH2 0x8E4 DUP4 PUSH2 0x4D50 JUMP JUMPDEST DUP3 PUSH2 0x4DA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP4 DUP6 SUB SWAP5 DUP6 GT PUSH2 0x98E JUMPI SWAP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 MSTORE PUSH2 0x969 SWAP2 SWAP1 PUSH2 0x964 PUSH1 0x64 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH2 0x65A2 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0xB6C JUMP JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0xED JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH2 0x276 PUSH1 0x4 CALLDATALOAD PUSH2 0xA00 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0xA0C DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 CALLER PUSH2 0x18DF JUMP JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xA33 DUP2 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xA40 DUP3 PUSH2 0xDC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 SWAP3 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0xAE9 JUMPI PUSH0 SWAP4 SWAP3 SWAP4 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH1 0x20 DUP7 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP6 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xABC JUMPI DUP7 PUSH2 0xAA9 DUP8 PUSH2 0xAA3 DUP4 DUP13 SUB DUP5 PUSH2 0x2FF JUMP JUMPDEST DUP3 PUSH2 0x4CEA JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST SWAP1 SWAP2 SWAP3 DUP1 PUSH2 0xADD DUP7 SWAP10 DUP5 DUP4 SWAP9 SLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP3 AND DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP9 ADD SWAP5 SWAP4 SWAP3 ADD SWAP1 PUSH2 0xA8B JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0xED JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xED JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xED JUMPI MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP1 PUSH2 0xBBD PUSH2 0x166C JUMP JUMPDEST PUSH2 0xBD0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND PUSH2 0x1AC5 JUMP JUMPDEST PUSH2 0xBE9 PUSH2 0xBE4 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1B12 JUMP JUMPDEST PUSH2 0xC02 PUSH2 0xBFD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1C3A JUMP JUMPDEST SWAP1 PUSH2 0xC56 PUSH1 0x20 DUP4 ADD MLOAD MLOAD PUSH2 0xC1D PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x20F7 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP6 ADD SWAP1 PUSH2 0xC37 DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP9 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0x2198 JUMP JUMPDEST SWAP3 PUSH2 0xC47 DUP8 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x10 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0xCCF JUMPI JUMPDEST POP POP POP DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST SWAP5 SWAP1 SWAP2 SWAP6 DUP7 PUSH2 0xC6A DUP4 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x11 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0xC78 JUMPI JUMPDEST POP POP POP POP SWAP3 SWAP2 SWAP1 JUMP JUMPDEST DUP5 SWAP8 POP SWAP4 PUSH2 0xCC5 SWAP5 PUSH2 0xCBB PUSH2 0xCAE PUSH2 0xC97 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0x2D88 JUMP JUMPDEST SWAP3 PUSH0 DUP1 DUP1 DUP1 PUSH2 0xC6F JUMP JUMPDEST PUSH2 0xCF7 PUSH2 0xD36 SWAP5 DUP9 DUP11 PUSH2 0xCEF PUSH2 0xCAE PUSH2 0xC97 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0xD2B PUSH2 0xD25 PUSH2 0xD0E DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP9 PUSH2 0x2391 JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x2198 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0xC4C JUMP JUMPDEST SWAP1 PUSH2 0xD47 PUSH2 0x166C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xD60 DUP2 DUP5 MLOAD AND PUSH2 0x1AC5 JUMP JUMPDEST PUSH2 0xD74 PUSH2 0xBE4 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP5 ADD MLOAD ISZERO PUSH2 0xF69 JUMPI PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xDB0 PUSH2 0xDA4 PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 AND EQ PUSH2 0xF41 JUMPI PUSH2 0xDCB PUSH2 0xBFD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0xDD6 DUP5 DUP3 PUSH2 0x2F42 JUMP JUMPDEST SWAP1 PUSH2 0xDE2 DUP6 DUP4 DUP4 PUSH2 0x2FD9 JUMP JUMPDEST DUP6 MLOAD PUSH1 0xC SHR PUSH1 0x1 AND PUSH2 0xEC6 JUMPI JUMPDEST DUP6 MLOAD PUSH2 0xE09 SWAP2 SWAP1 PUSH1 0xB SHR PUSH1 0x1 AND PUSH2 0xE85 JUMPI JUMPDEST DUP7 DUP5 DUP5 PUSH2 0x3390 JUMP JUMPDEST SWAP8 SWAP2 SWAP8 SWAP5 SWAP1 SWAP8 DUP4 SWAP8 PUSH2 0xE20 DUP5 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xD SHR AND SWAP1 JUMP JUMPDEST PUSH2 0xE50 JUMPI JUMPDEST POP POP POP POP POP MLOAD PUSH2 0xE34 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0xE3D DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0xE48 JUMPI POP DUP2 SWAP3 SWAP2 SWAP1 JUMP JUMPDEST SWAP2 DUP1 SWAP4 POP SWAP2 SWAP1 JUMP JUMPDEST DUP6 SWAP9 POP SWAP1 PUSH2 0xE6F PUSH2 0xCAE PUSH2 0xC97 PUSH2 0xE7A SWAP9 SWAP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD SWAP2 CALLER SWAP3 PUSH2 0x3847 JUMP JUMPDEST SWAP3 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0xE25 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEBF PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MLOAD PUSH2 0xEB8 PUSH2 0xCAE DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP6 PUSH2 0x3284 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0xE01 JUMP JUMPDEST PUSH2 0xEFF SWAP1 PUSH2 0xEDB DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xEF9 PUSH2 0xCAE DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x3110 JUMP JUMPDEST PUSH2 0xF1C PUSH2 0xF16 PUSH2 0xD0E DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 PUSH2 0x2391 JUMP JUMPDEST PUSH2 0xF27 DUP3 DUP7 DUP4 PUSH2 0x31C9 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xE09 PUSH2 0xF3A DUP7 DUP5 DUP5 PUSH2 0x2FD9 JUMP JUMPDEST SWAP1 POP PUSH2 0xDEF JUMP JUMPDEST PUSH32 0xA54B181D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x57A456B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0xFC8 JUMPI JUMP JUMPDEST PUSH2 0xF91 JUMP JUMPDEST PUSH2 0xFD5 PUSH2 0x166C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH2 0x12D2 JUMPI PUSH1 0x40 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 MLOAD AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x12A6 JUMPI PUSH1 0x4 SWAP5 POP PUSH2 0x1015 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x102B PUSH2 0xDA4 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 DUP1 SWAP3 PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x80 SWAP6 PUSH0 SWAP2 PUSH2 0x1277 JUMPI JUMPDEST POP AND PUSH2 0x1083 DUP2 PUSH2 0x107E DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3ABF JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x109F PUSH1 0x60 DUP7 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x3B15 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x10AF DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x10B8 DUP2 PUSH2 0xFBE JUMP JUMPDEST SUB PUSH2 0x120C JUMPI PUSH2 0x10E0 SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x10CD DUP4 PUSH2 0xFBE JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0x4005 JUMP JUMPDEST PUSH32 0xEEB740C90BF2B18C9532EB7D473137767036D893DFF3E009F32718F821B2A4C0 DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x113E PUSH2 0x1120 PUSH2 0xDA4 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 JUMPDEST DUP1 MLOAD PUSH2 0x114D DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x1156 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x11C2 JUMPI ADD MLOAD DUP1 DUP5 LT PUSH2 0x118F JUMPI POP PUSH2 0x1182 PUSH2 0x117D SWAP2 DUP5 SWAP3 DUP4 SWAP2 JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3B15 JUMP JUMPDEST PUSH2 0x118A PUSH2 0x1647 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 REVERT JUMPDEST ADD MLOAD DUP1 DUP6 GT PUSH2 0x11DC JUMPI POP PUSH2 0x1182 PUSH2 0x117D SWAP2 DUP6 SWAP3 DUP4 SWAP2 PUSH2 0x1170 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP6 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x122F SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x121C DUP4 PUSH2 0xFBE JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0x3BA7 JUMP JUMPDEST PUSH32 0x3771D13C67011E31E12031C54BB59B0BF544A80B81D280A3711E172AA8B7F47B DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x126F PUSH2 0x1120 PUSH2 0xDA4 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x1142 JUMP JUMPDEST PUSH2 0x1299 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x129F JUMPI JUMPDEST PUSH2 0x1291 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x12FA JUMP JUMPDEST PUSH0 PUSH2 0x1067 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1287 JUMP JUMPDEST DUP5 PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xED JUMPI MLOAD PUSH2 0x462 DUP2 PUSH2 0xDC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x1351 PUSH2 0x134B PUSH32 0x0 SWAP3 DUP4 TLOAD ISZERO SWAP6 DUP7 PUSH2 0x13D3 JUMPI JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x411 JUMP JUMPDEST CALLER PUSH2 0x6056 JUMP JUMPDEST SWAP3 PUSH2 0x1359 JUMPI POP JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH2 0x13AB JUMPI PUSH0 SWAP1 TSTORE PUSH2 0xFC PUSH32 0x0 PUSH2 0x436F JUMP JUMPDEST PUSH32 0x20F1D86D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP6 TSTORE PUSH2 0x1344 JUMP JUMPDEST SWAP1 PUSH2 0x13E5 PUSH2 0x166C JUMP JUMPDEST PUSH2 0x13F8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND PUSH2 0x1AC5 JUMP JUMPDEST PUSH2 0x140C PUSH2 0xBE4 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1469 PUSH32 0x0 TLOAD PUSH2 0x1442 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0x4380 JUMP JUMPDEST PUSH2 0x1482 PUSH2 0x147D DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1ED2 JUMP JUMPDEST SWAP1 PUSH2 0x14D6 PUSH1 0x20 DUP4 ADD MLOAD MLOAD PUSH2 0x149D PUSH1 0x40 DUP7 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x20F7 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP6 ADD SWAP1 PUSH2 0x14B7 DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP9 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0x4399 JUMP JUMPDEST SWAP3 PUSH2 0x14C7 DUP8 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xE SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1529 JUMPI JUMPDEST POP POP POP DUP5 DUP5 PUSH2 0x45DA JUMP JUMPDEST SWAP5 SWAP1 SWAP6 DUP7 DUP5 PUSH2 0x14EA DUP5 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xF SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x14F9 JUMPI JUMPDEST POP POP POP POP POP SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x151F SWAP6 POP PUSH2 0x1515 PUSH2 0xCAE PUSH2 0xC97 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0x4B2F JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP7 DUP2 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0x1550 PUSH2 0x1578 SWAP5 DUP9 DUP11 PUSH2 0x1549 PUSH2 0xCAE PUSH2 0xC97 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER PUSH2 0x4477 JUMP JUMPDEST PUSH2 0x156D PUSH2 0x1567 PUSH2 0xD0E DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP9 PUSH2 0x23FE JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x4399 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x14CC JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x1580 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x15EE JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x161F JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x1695 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x16C7 SWAP1 PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x98E JUMPI PUSH2 0xFC SWAP2 PUSH0 SUB SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x170A DUP3 DUP5 DUP7 PUSH2 0x4E66 JUMP JUMPDEST PUSH0 NOT DUP2 SUB PUSH2 0x171A JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 GT PUSH2 0x18A4 JUMPI SUB SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x186F JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x183A JUMPI DUP5 PUSH2 0x177A DUP6 PUSH2 0x1764 DUP7 PUSH2 0x1764 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x1814 SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x1821 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST DUP1 PUSH2 0x182E PUSH2 0x1834 SWAP3 PUSH2 0x2AE JUMP JUMPDEST DUP1 PUSH2 0x993 JUMP JUMPDEST PUSH0 PUSH2 0x1803 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST SWAP3 SWAP1 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x1A90 JUMPI DUP1 DUP7 AND SWAP2 DUP3 ISZERO PUSH2 0x1A5B JUMPI PUSH2 0x191F DUP7 PUSH2 0x1764 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP7 GT PUSH2 0x1A1E JUMPI DUP6 SWAP1 SUB PUSH2 0x1949 DUP8 PUSH2 0x1764 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x1969 DUP8 PUSH2 0x1764 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP6 DUP2 SLOAD ADD SWAP1 SSTORE AND SWAP2 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x19A6 DUP9 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x1A11 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x182E PUSH2 0xFC SWAP3 PUSH2 0x2AE JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x1AE7 JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP1 PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x1C2C JUMPI JUMPDEST PUSH2 0x1C04 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x2 SHR AND SWAP1 PUSH2 0x1B6D PUSH1 0x5A SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI DUP3 PUSH2 0x1BBE JUMPI JUMPDEST POP POP SWAP1 POP PUSH2 0x1B8A JUMPI POP JUMP JUMPDEST PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x1BF0 SWAP3 POP PUSH2 0x1BF9 SWAP4 PUSH32 0x0 SWAP3 SHR AND PUSH2 0x6AB4 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST TIMESTAMP GT ISZERO DUP1 PUSH0 DUP1 PUSH2 0x1B7F JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x1B43 JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1C49 DUP4 PUSH2 0x2C7 JUMP JUMPDEST PUSH0 DUP4 MSTORE DUP3 PUSH1 0x20 DUP2 ADD SWAP2 PUSH1 0x60 DUP1 DUP5 MSTORE DUP2 DUP4 ADD SWAP1 DUP1 DUP3 MSTORE DUP1 DUP5 ADD SWAP1 DUP1 DUP3 MSTORE PUSH1 0x80 SWAP4 PUSH1 0x80 DUP7 ADD DUP3 DUP2 MSTORE PUSH1 0xA0 DUP8 ADD DUP4 DUP2 MSTORE PUSH1 0xC0 DUP9 ADD SWAP4 DUP5 MSTORE PUSH2 0x1C85 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP4 PUSH0 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SLOAD SWAP3 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x1CC1 DUP6 PUSH0 KECCAK256 SWAP5 PUSH1 0x3 PUSH1 0x20 MSTORE DUP7 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD SWAP13 MSTORE PUSH2 0x4EB2 JUMP JUMPDEST DUP12 MSTORE PUSH2 0x1CCC DUP11 PUSH2 0x4F09 JUMP JUMPDEST DUP9 MSTORE PUSH2 0x1CD7 DUP11 PUSH2 0x2126 JUMP JUMPDEST DUP8 MSTORE PUSH2 0x1CE2 DUP11 PUSH2 0x2126 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1CEF DUP10 DUP14 MLOAD PUSH2 0x6612 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1CFA DUP9 PUSH2 0x2126 JUMP JUMPDEST DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x1EBE JUMPI JUMPDEST POP DUP4 PUSH2 0x1EAC JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x1D76 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x1D67 PUSH2 0x1D4F PUSH2 0x1D6E SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x4F96 JUMP JUMPDEST PUSH2 0x462 PUSH2 0x1647 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x1DD8 DUP5 PUSH2 0x1DC4 DUP2 PUSH2 0x1DB6 PUSH2 0x1DB1 DUP16 DUP16 PUSH2 0x1170 DUP6 PUSH2 0x1D9C SWAP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4F57 JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x1DD2 DUP4 DUP4 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x2157 JUMP JUMPDEST POP PUSH2 0x1DE2 DUP2 PUSH2 0x50FA JUMP JUMPDEST PUSH2 0x1DED DUP6 DUP14 MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x1E0B PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x51CA JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x1E9F JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x1E81 JUMPI JUMPDEST POP POP PUSH2 0x1E32 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x1D18 JUMP JUMPDEST DUP3 PUSH2 0x1E55 SWAP3 PUSH2 0x1E4C DUP3 PUSH2 0x1E45 DUP9 MLOAD PUSH2 0x666E JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x6691 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x1E65 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x1E26 JUMP JUMPDEST PUSH2 0x1E78 SWAP4 PUSH2 0x1E72 SWAP2 PUSH2 0xBA7 JUMP JUMPDEST SWAP2 PUSH2 0x51CA JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x1E5C JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x1E8E DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x1E97 DUP2 PUSH2 0xFBE JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x1E1F JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x1E2C JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x1D16 JUMP JUMPDEST PUSH2 0x1EC9 SWAP2 SWAP5 POP PUSH2 0x666E JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x1D0F JUMP JUMPDEST PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH2 0x1EE1 DUP4 PUSH2 0x2C7 JUMP JUMPDEST PUSH0 DUP4 MSTORE DUP3 PUSH1 0x20 DUP2 ADD SWAP2 PUSH1 0x60 DUP1 DUP5 MSTORE DUP2 DUP4 ADD SWAP1 DUP1 DUP3 MSTORE DUP1 DUP5 ADD SWAP1 DUP1 DUP3 MSTORE PUSH1 0x80 SWAP4 PUSH1 0x80 DUP7 ADD DUP3 DUP2 MSTORE PUSH1 0xA0 DUP8 ADD DUP4 DUP2 MSTORE PUSH1 0xC0 DUP9 ADD SWAP4 DUP5 MSTORE PUSH2 0x1F1D PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP4 PUSH0 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SLOAD SWAP3 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x1F59 DUP6 PUSH0 KECCAK256 SWAP5 PUSH1 0x3 PUSH1 0x20 MSTORE DUP7 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD SWAP13 MSTORE PUSH2 0x4EB2 JUMP JUMPDEST DUP12 MSTORE PUSH2 0x1F64 DUP11 PUSH2 0x4F09 JUMP JUMPDEST DUP9 MSTORE PUSH2 0x1F6F DUP11 PUSH2 0x2126 JUMP JUMPDEST DUP8 MSTORE PUSH2 0x1F7A DUP11 PUSH2 0x2126 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1F87 DUP10 DUP14 MLOAD PUSH2 0x6612 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x1F92 DUP9 PUSH2 0x2126 JUMP JUMPDEST DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x20E3 JUMPI JUMPDEST POP DUP4 PUSH2 0x20D1 JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x1FE7 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x1D67 PUSH2 0x1D4F PUSH2 0x1D6E SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x200D DUP5 PUSH2 0x1DC4 DUP2 PUSH2 0x1DB6 PUSH2 0x1DB1 DUP16 DUP16 PUSH2 0x1170 DUP6 PUSH2 0x1D9C SWAP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST POP PUSH2 0x2017 DUP2 PUSH2 0x50FA JUMP JUMPDEST PUSH2 0x2022 DUP6 DUP14 MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x2040 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x5217 JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x20C4 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x20A6 JUMPI JUMPDEST POP POP PUSH2 0x2067 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x1FB0 JUMP JUMPDEST DUP3 PUSH2 0x207A SWAP3 PUSH2 0x1E4C DUP3 PUSH2 0x1E45 DUP9 MLOAD PUSH2 0x666E JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x208A JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x205B JUMP JUMPDEST PUSH2 0x209D SWAP4 PUSH2 0x2097 SWAP2 PUSH2 0xBA7 JUMP JUMPDEST SWAP2 PUSH2 0x5217 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x2081 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x20B3 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x20BC DUP2 PUSH2 0xFBE JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x2054 JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x2061 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x1FAE JUMP JUMPDEST PUSH2 0x20EE SWAP2 SWAP5 POP PUSH2 0x666E JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x1FA7 JUMP JUMPDEST SUB PUSH2 0x20FE JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x2130 DUP3 PUSH2 0x370 JUMP JUMPDEST PUSH2 0x213D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2FF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x214D DUP3 SWAP5 PUSH2 0x370 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x216B JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0x21AB DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0x50AB JUMP JUMPDEST PUSH2 0x21B4 DUP4 PUSH2 0x2126 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x21C6 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x21FB PUSH2 0x21D6 PUSH1 0x1 SWAP4 DUP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21F6 PUSH2 0x21E4 DUP5 DUP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP6 DUP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x576D JUMP JUMPDEST PUSH2 0x2205 DUP3 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x21B7 JUMP JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0xFC8 JUMPI JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0xED JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0xED JUMPI PUSH2 0x462 SWAP1 PUSH2 0x2216 JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0xFC8 JUMPI MSTORE JUMP JUMPDEST SWAP6 SWAP3 SWAP4 PUSH2 0x2275 PUSH2 0x2299 SWAP6 PUSH2 0x462 SWAP10 SWAP8 SWAP4 PUSH2 0x228B SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x2237 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 PUSH2 0x231F PUSH2 0x22C9 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0x22D9 DUP10 PUSH2 0x220C JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x40 DUP4 ADD MLOAD SWAP13 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0xBA5F9F4000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x2244 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x2362 JUMPI JUMPDEST POP ISZERO PUSH2 0x233A JUMPI JUMP JUMPDEST PUSH32 0x2AAF886600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2384 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x238A JUMPI JUMPDEST PUSH2 0x237C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2223 JUMP JUMPDEST PUSH0 PUSH2 0x2332 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2372 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x23A9 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x23F8 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x23D8 PUSH2 0x23D2 DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x50FA JUMP JUMPDEST PUSH2 0x23E6 DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x51CA JUMP JUMPDEST ADD PUSH2 0x239B JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x2416 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x245F PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x243F PUSH2 0x23D2 DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x244D DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x5217 JUMP JUMPDEST ADD PUSH2 0x2408 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2472 DUP3 PUSH2 0x2E3 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xED JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x249E DUP2 PUSH2 0x370 JUMP JUMPDEST SWAP4 PUSH2 0x24AC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2FF JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xED JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x24D5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x24C7 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0xED JUMPI DUP1 MLOAD SWAP1 PUSH2 0x24FB DUP3 PUSH2 0x3F5 JUMP JUMPDEST SWAP3 PUSH2 0x2509 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2FF JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0xED JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0xED JUMPI DUP1 MLOAD SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0xED JUMPI DUP5 PUSH2 0x255A SWAP2 DUP4 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0xED JUMPI DUP2 PUSH2 0x2573 SWAP2 DUP5 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0xED JUMPI PUSH2 0x462 SWAP3 ADD PUSH2 0x24E4 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x462 SWAP6 SWAP4 PUSH2 0x25C8 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x25BA SWAP4 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x260E SWAP1 PUSH2 0x462 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP3 PUSH2 0x2625 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x2630 PUSH2 0x2465 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x2644 DUP3 MLOAD MLOAD DUP1 DUP8 MSTORE PUSH2 0x2126 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP5 ADD SWAP7 DUP8 MLOAD PUSH2 0x2655 DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x265E DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2A93 JUMPI POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 PUSH2 0x2673 DUP8 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP6 PUSH2 0x26AF DUP4 PUSH1 0x80 DUP13 ADD MLOAD PUSH2 0x26A9 PUSH2 0x2691 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x571C JUMP JUMPDEST SWAP3 PUSH2 0x2720 PUSH32 0x0 TLOAD PUSH2 0x26E6 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2A16 JUMPI JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD DUP1 DUP3 GT PUSH2 0x29E5 JUMPI POP PUSH2 0x273E DUP2 SWAP11 SWAP10 SWAP11 PUSH2 0x578F JUMP JUMPDEST PUSH1 0x20 DUP11 ADD SWAP9 PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x28A0 JUMPI DUP13 PUSH2 0x2759 DUP3 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2763 DUP2 PUSH2 0x578F JUMP JUMPDEST PUSH2 0x276D DUP4 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x288E JUMPI DUP2 PUSH2 0x2793 DUP5 PUSH1 0xA0 PUSH2 0x278A DUP3 PUSH1 0xC0 PUSH2 0x279A SWAP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x57A0 JUMP JUMPDEST DUP1 PUSH2 0x27A5 DUP4 DUP11 PUSH2 0x2157 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x27B5 PUSH2 0x1170 DUP4 DUP12 MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x60 DUP12 ADD PUSH2 0x27C4 DUP5 DUP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP4 LT PUSH2 0x2842 JUMPI POP DUP15 DUP4 PUSH2 0x1E72 DUP16 DUP16 DUP16 SWAP7 PUSH2 0x2836 SWAP2 PUSH2 0x281E DUP7 PUSH2 0x2816 DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x27F3 DUP9 PUSH2 0x283C SWAP16 PUSH2 0x16BD JUMP JUMPDEST PUSH2 0x280F PUSH2 0x2800 DUP5 DUP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP14 PUSH2 0x57CF JUMP JUMPDEST DUP8 MSTORE SWAP3 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x282D DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP1 PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0xBA7 JUMP JUMPDEST ADD PUSH2 0x2745 JUMP JUMPDEST SWAP2 PUSH2 0x2851 DUP5 PUSH2 0x11BF SWAP5 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP PUSH2 0x289A DUP2 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x27A7 JUMP JUMPDEST POP SWAP4 SWAP10 POP SWAP6 SWAP5 POP SWAP6 SWAP3 SWAP9 PUSH2 0x28C6 SWAP2 SWAP8 POP PUSH2 0x28C1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x58F3 JUMP JUMPDEST PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 PUSH2 0x28F8 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x291A DUP7 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x2913 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP2 PUSH2 0x16FB JUMP JUMPDEST PUSH2 0x2922 PUSH2 0x5956 JUMP JUMPDEST PUSH2 0x29BA JUMPI JUMPDEST PUSH2 0x294D DUP7 PUSH2 0x293C DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x59D6 JUMP JUMPDEST PUSH2 0x2981 PUSH2 0x2691 PUSH2 0x2975 PUSH2 0x2967 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x1170 DUP9 PUSH2 0x220C JUMP JUMPDEST SWAP3 PUSH2 0x29A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x2997 DUP9 PUSH2 0x220C JUMP JUMPDEST DUP13 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x25F1 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x29B4 PUSH2 0x1647 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH2 0x29E0 DUP7 PUSH2 0x29CF DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x596B JUMP JUMPDEST PUSH2 0x2927 JUMP JUMPDEST PUSH32 0x31D38E0B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP9 SWAP5 SWAP2 PUSH2 0x2A29 DUP12 SWAP8 SWAP5 SWAP10 SWAP6 SWAP3 SWAP12 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP11 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2A83 JUMPI DUP1 DUP12 PUSH2 0x2A7C DUP16 SWAP4 PUSH2 0x2A76 PUSH2 0x2A65 DUP16 DUP4 SWAP1 PUSH2 0x2A5B PUSH1 0x1 SWAP10 PUSH2 0x2A55 DUP5 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x576D JUMP JUMPDEST PUSH2 0x1DD2 DUP4 DUP4 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2A70 DUP4 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0xBA7 JUMP JUMPDEST SWAP3 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x2A2C JUMP JUMPDEST POP SWAP2 SWAP5 SWAP9 SWAP4 SWAP7 SWAP11 POP SWAP2 SWAP5 SWAP9 PUSH2 0x2725 JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x1 DUP9 MLOAD PUSH2 0x2AA2 DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2AAB DUP2 PUSH2 0x220C JUMP JUMPDEST SUB PUSH2 0x2B2F JUMPI PUSH2 0x2ABA DUP10 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP7 SWAP3 DUP11 PUSH2 0x2B29 PUSH2 0x2B1F DUP12 DUP11 PUSH1 0x40 PUSH2 0x2ADA PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x52C3 JUMP JUMPDEST SWAP3 ADD SWAP5 DUP3 DUP7 MSTORE DUP7 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x2B19 PUSH2 0xDA4 PUSH2 0x2B0B PUSH2 0x2B04 PUSH2 0x2691 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0x55EC JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP11 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x2725 JUMP JUMPDEST PUSH1 0x2 DUP9 SWAP7 SWAP3 SWAP7 MLOAD PUSH2 0x2B3F DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2B48 DUP2 PUSH2 0x220C JUMP JUMPDEST SUB PUSH2 0x2BDB JUMPI PUSH2 0x2B57 DUP10 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH2 0x2BD4 DUP3 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x2B7B PUSH2 0x2B6D DUP4 MLOAD PUSH2 0x52C3 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD SWAP4 DUP2 DUP6 MSTORE MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2B87 DUP4 MLOAD DUP9 PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP12 PUSH2 0x2B9A PUSH1 0x80 DUP3 ADD MLOAD SWAP4 MLOAD DUP1 SWAP4 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x2BB9 PUSH2 0x2BB2 PUSH2 0x2691 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP3 PUSH2 0x2BCE PUSH2 0xDA4 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0x53A9 JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x2725 JUMP JUMPDEST POP SWAP4 PUSH1 0x3 DUP8 MLOAD PUSH2 0x2BEA DUP2 PUSH2 0x220C JUMP JUMPDEST PUSH2 0x2BF3 DUP2 PUSH2 0x220C JUMP JUMPDEST SUB PUSH2 0x2CB4 JUMPI PUSH2 0x2C02 DUP9 MLOAD PUSH2 0x525A JUMP JUMPDEST PUSH0 PUSH2 0x2C1A PUSH2 0xDA4 PUSH2 0xDA4 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP7 ADD MLOAD SWAP7 PUSH1 0x80 DUP12 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP10 ADD MLOAD SWAP10 PUSH2 0x2C68 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xAB68E28C00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x258A JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x2C89 JUMPI JUMPDEST POP SWAP2 SWAP7 SWAP3 PUSH2 0x2725 JUMP JUMPDEST SWAP3 POP POP SWAP6 POP PUSH2 0x2CAA SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2CA2 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x252A JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP2 PUSH0 PUSH2 0x2C80 JUMP JUMPDEST PUSH32 0x137A9A3900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0xED JUMPI PUSH2 0x2CF2 DUP2 PUSH2 0x2216 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xED JUMPI PUSH2 0x462 SWAP3 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP7 SWAP4 SWAP5 PUSH2 0x462 SWAP9 SWAP7 SWAP3 PUSH2 0x2D7A SWAP7 PUSH2 0x2D4B PUSH2 0x2D6C SWAP7 PUSH2 0x2D5E SWAP6 PUSH2 0x100 SWAP5 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x2237 JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MSTORE DUP1 PUSH1 0x80 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST SWAP5 SWAP4 SWAP6 SWAP3 SWAP7 SWAP2 SWAP1 DUP5 MLOAD PUSH2 0x2DA1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP3 PUSH2 0x2DB1 DUP5 PUSH2 0x220C JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP11 PUSH1 0xA0 DUP10 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP8 DUP9 SWAP8 PUSH32 0x2754888D00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0x2DF6 SWAP9 PUSH2 0x2D11 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH2 0x2F1B JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0x2F0F JUMPI JUMPDEST PUSH2 0x2EE7 JUMPI PUSH1 0x1 DUP1 SWAP4 PUSH1 0x9 SHR AND ISZERO PUSH2 0x2E40 JUMPI SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH0 DUP4 JUMPDEST PUSH2 0x2E47 JUMPI JUMPDEST POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2EE2 JUMPI PUSH2 0x2E5A DUP2 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x2E6B DUP4 DUP4 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD GT PUSH2 0x2E7A JUMPI POP DUP4 ADD DUP4 PUSH2 0x2E3B JUMP JUMPDEST PUSH2 0x2EA5 DUP3 PUSH2 0x2E9D DUP2 PUSH2 0x2E97 PUSH2 0x1170 DUP12 SWAP8 PUSH1 0x20 PUSH2 0x11BF SWAP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0xFBD8A72400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0x2E40 JUMP JUMPDEST PUSH32 0x1D3391D800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP4 MLOAD DUP6 MLOAD EQ ISZERO PUSH2 0x2E22 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F3A SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2F32 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2CDC JUMP JUMPDEST SWAP4 SWAP1 PUSH0 PUSH2 0x2E19 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 SWAP2 PUSH1 0x80 DUP5 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT DUP6 DUP4 LT OR PUSH2 0x2C2 JUMPI PUSH2 0x2FC9 SWAP2 PUSH1 0x40 MSTORE PUSH0 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP5 PUSH0 DUP7 MSTORE PUSH2 0x2FC1 PUSH1 0x40 DUP3 ADD SWAP2 PUSH0 DUP4 MSTORE DUP4 PUSH1 0x60 DUP3 ADD SWAP7 PUSH0 DUP9 MSTORE DUP3 SWAP10 PUSH2 0x2FBA PUSH1 0x20 DUP5 ADD DUP1 MLOAD SWAP1 PUSH2 0x2FAA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0x40 DUP9 ADD MLOAD AND SWAP1 PUSH2 0x4CEA JUMP JUMPDEST DUP8 MSTORE MLOAD SWAP1 PUSH1 0x60 DUP6 ADD MLOAD AND SWAP1 PUSH2 0x4CEA JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x31C9 JUMP JUMPDEST SWAP1 MSTORE MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2FD6 DUP3 PUSH2 0xFBE JUMP JUMPDEST MSTORE JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x60 PUSH1 0xC0 PUSH1 0x40 MLOAD PUSH2 0x2FEC DUP2 PUSH2 0x2C7 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE DUP1 MLOAD SWAP3 PUSH2 0x301A DUP5 PUSH2 0xFBE JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 DUP3 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH2 0x3043 PUSH2 0x303C PUSH2 0x342 JUMP JUMPDEST SWAP7 DUP8 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE CALLER PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2FD6 DUP3 PUSH2 0xFBE JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xE0 DUP2 ADD SWAP1 DUP4 MLOAD PUSH2 0x3081 DUP2 PUSH2 0xFBE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP3 PUSH1 0xE0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH2 0x100 DUP5 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x30FC JUMPI POP POP POP POP PUSH1 0xC0 DUP5 PUSH1 0x60 PUSH2 0x462 SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x30EC PUSH1 0xA0 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x498 JUMP JUMPDEST DUP4 MLOAD DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x30AC JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP3 PUSH2 0x3160 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x5211FA7700000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x306F JUMP JUMPDEST SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x31AA JUMPI JUMPDEST POP ISZERO PUSH2 0x3182 JUMPI JUMP JUMPDEST PUSH32 0xE91E17E700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x31C3 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x238A JUMPI PUSH2 0x237C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x317A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 MLOAD PUSH2 0x31D7 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x31E0 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3225 JUMPI SWAP1 PUSH2 0x321C PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH2 0x21EF PUSH1 0x80 PUSH2 0x3221 SWAP6 ADD MLOAD SWAP4 PUSH1 0xA0 PUSH2 0x3210 PUSH1 0xC0 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x50E7 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH2 0x462 SWAP3 PUSH2 0x3261 PUSH2 0x325B PUSH1 0x80 PUSH2 0x21F6 SWAP5 ADD MLOAD SWAP5 PUSH1 0xA0 PUSH2 0x324F PUSH1 0x20 PUSH1 0xC0 DUP8 ADD MLOAD SWAP4 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP5 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5B41 JUMP JUMPDEST SWAP3 PUSH2 0x50E7 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0xED JUMPI PUSH1 0x20 PUSH2 0x327E DUP4 PUSH2 0x2216 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x32D5 PUSH1 0x40 SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 SWAP2 DUP7 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x306F JUMP JUMPDEST SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH2 0x335E JUMPI JUMPDEST POP ISZERO PUSH2 0x3336 JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x330E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH2 0x3382 SWAP2 POP PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x3389 JUMPI JUMPDEST PUSH2 0x337A DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3267 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x32F6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3370 JUMP JUMPDEST PUSH0 SWAP5 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x339E PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x33A6 PUSH2 0x2465 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH2 0x33B2 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x33BB DUP2 PUSH2 0xFBE JUMP JUMPDEST ISZERO PUSH2 0x3747 JUMPI JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP7 ADD PUSH2 0x33D1 DUP2 MLOAD PUSH2 0x5B65 JUMP JUMPDEST DUP4 PUSH2 0x3426 DUP2 DUP6 ADD SWAP9 PUSH2 0x33F0 PUSH2 0xDA4 PUSH2 0xDA4 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP13 DUP14 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x376F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP9 DUP10 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP10 PUSH2 0x3728 JUMPI JUMPDEST POP DUP9 PUSH2 0x3443 DUP2 PUSH2 0x5B65 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x344E DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3457 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x36B0 JUMPI POP PUSH1 0x40 DUP3 ADD MLOAD SWAP1 MSTORE PUSH2 0x3496 PUSH1 0xC0 DUP9 ADD MLOAD PUSH2 0x348F PUSH2 0x325B PUSH2 0x3480 DUP8 DUP7 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP13 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST SWAP1 DUP11 PUSH2 0x57A0 JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP8 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 LT PUSH2 0x3680 JUMPI POP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP5 DUP11 DUP7 MLOAD PUSH2 0x34C6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x34D0 SWAP2 PUSH2 0x4CD8 JUMP JUMPDEST PUSH1 0x60 ADD SWAP6 DUP10 DUP8 MLOAD PUSH2 0x34E7 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x34F1 SWAP2 PUSH2 0x16BD JUMP JUMPDEST DUP4 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD SWAP2 PUSH2 0x3516 SWAP4 DUP7 PUSH2 0x57CF JUMP JUMPDEST SWAP2 SWAP1 DUP2 DUP7 ADD SWAP6 PUSH1 0x40 ADD SWAP3 DUP4 MSTORE DUP6 MSTORE DUP6 MLOAD PUSH1 0x60 DUP5 ADD SWAP3 DUP14 DUP3 DUP6 MLOAD SWAP1 PUSH2 0x3539 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3544 SWAP2 PUSH2 0x25E4 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x354F SWAP2 PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x3559 SWAP2 DUP6 PUSH2 0x51CA JUMP JUMPDEST DUP6 ADD SWAP2 DUP3 MLOAD DUP12 DUP2 DUP5 MLOAD SWAP1 PUSH2 0x356C SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3577 SWAP2 PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x3581 SWAP2 DUP4 PUSH2 0x51CA JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 DUP1 MLOAD DUP8 MLOAD PUSH2 0x35A7 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x80 ADD SWAP2 DUP3 MLOAD DUP9 MLOAD PUSH2 0x35BA SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x35C4 SWAP2 PUSH2 0x5C42 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x35D8 SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x35E5 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x35F3 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x35FD SWAP2 PUSH2 0x5C42 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x3610 SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP3 MLOAD SWAP4 MLOAD PUSH1 0x60 SWAP3 DUP4 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 DUP1 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE SWAP1 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFC PUSH2 0x1647 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP9 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 SWAP9 POP PUSH2 0x36D7 PUSH1 0x60 PUSH2 0x36E0 SWAP4 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0x5C0E JUMP JUMPDEST SWAP1 DUP2 DUP7 MSTORE PUSH2 0x25E4 JUMP JUMPDEST SWAP7 PUSH2 0x370D PUSH2 0x36F4 PUSH1 0xC0 DUP10 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x3705 PUSH1 0xA0 DUP11 ADD MLOAD DUP5 MLOAD SWAP1 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 DUP11 PUSH2 0x5C2E JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 GT PUSH2 0x3680 JUMPI POP PUSH2 0x34AE JUMP JUMPDEST PUSH2 0x3740 SWAP2 SWAP10 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x3438 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD PUSH2 0x3768 PUSH2 0x375E DUP3 MLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP1 PUSH2 0x576D JUMP JUMPDEST DUP1 DUP7 MSTORE DUP3 MLOAD PUSH2 0xBA7 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x33C1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x462 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x306F JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x462 SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH2 0x3799 PUSH1 0x20 DUP5 ADD DUP3 MLOAD PUSH2 0x3065 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x120 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x381A PUSH2 0x140 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP2 ADD MLOAD SWAP1 PUSH2 0x3836 PUSH2 0x160 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD MLOAD SWAP2 PUSH2 0x180 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x498 JUMP JUMPDEST SWAP4 SWAP6 SWAP1 SWAP2 SWAP5 SWAP3 DUP7 MLOAD PUSH2 0x3858 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3861 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3AB0 JUMPI DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 JUMPDEST DUP3 MLOAD SWAP5 PUSH2 0x387A DUP7 PUSH2 0xFBE JUMP JUMPDEST PUSH1 0x40 SWAP8 DUP9 SWAP8 DUP9 DUP7 ADD MLOAD PUSH2 0x3893 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x38A9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD SWAP3 DUP4 MLOAD DUP2 MLOAD PUSH2 0x38BB SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP1 PUSH1 0x20 ADD MLOAD PUSH2 0x38CC SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x38E3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP8 PUSH1 0xC0 ADD MLOAD SWAP9 PUSH2 0x38F1 PUSH2 0x34F JUMP JUMPDEST SWAP11 PUSH2 0x38FC SWAP1 DUP13 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP12 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE DUP2 MLOAD SWAP7 DUP8 DUP1 DUP1 SWAP4 PUSH32 0x18B6EB5500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x3994 SWAP2 PUSH2 0x3780 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH2 0x3A8C JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3A64 JUMPI PUSH1 0x9 SHR PUSH1 0x1 AND ISZERO PUSH2 0x3A5E JUMPI POP DUP1 MLOAD PUSH2 0x39D2 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x39DB DUP2 PUSH2 0xFBE JUMP JUMPDEST ISZERO DUP1 PUSH2 0x3A51 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x3A26 JUMPI JUMPDEST PUSH2 0x39F1 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0xA0 ADD MLOAD PUSH32 0xCC0E4A9900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 DUP2 MLOAD PUSH2 0x3A34 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x3A3D DUP2 PUSH2 0xFBE JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x39E9 JUMPI POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 GT PUSH2 0x39E9 JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 LT PUSH2 0x39E2 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x15A29DEC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3AA7 SWAP4 SWAP7 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x3389 JUMPI PUSH2 0x337A DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP4 SWAP1 PUSH0 DUP1 PUSH2 0x39B4 JUMP JUMPDEST DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 SWAP3 SWAP5 PUSH2 0x386E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP3 AND DUP1 SWAP3 SUB PUSH2 0x3AE7 JUMPI POP POP JUMP JUMPDEST PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH32 0x0 GT PUSH2 0x3B3F JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x18FE738500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x98E JUMPI JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x3BB3 DUP6 PUSH2 0xFBE JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x3F75 JUMPI PUSH2 0x3C01 PUSH1 0x20 PUSH2 0x3BC9 DUP8 PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEF8B30F700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3C26 SWAP2 PUSH0 SWAP2 PUSH2 0x3F56 JUMPI JUMPDEST POP PUSH2 0xB99 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0x3C44 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x3C4E PUSH2 0x5956 JUMP JUMPDEST PUSH2 0x3F4E JUMPI DUP7 SWAP3 DUP9 SWAP3 SWAP1 SWAP2 PUSH1 0x80 DUP4 SWAP1 SHR SWAP2 DUP6 DUP4 LT PUSH2 0x3CCC JUMPI POP POP POP SWAP3 PUSH2 0x3CC6 DUP3 PUSH2 0x3CA3 DUP7 PUSH2 0x3C9E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 PUSH2 0xFC SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0x5C42 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x3CC0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x4CD8 JUMP JUMPDEST AND PUSH2 0x16BD JUMP JUMPDEST SWAP1 SWAP3 SWAP4 POP PUSH2 0x3CDB SWAP2 SWAP5 POP PUSH2 0xFBE JUMP JUMPDEST ISZERO PUSH2 0x3DF6 JUMPI PUSH2 0x3D03 PUSH2 0x3CFE PUSH2 0x3CF0 DUP6 DUP5 PUSH2 0x5F08 JUMP JUMPDEST PUSH2 0x3CF9 DUP11 PUSH2 0x4D50 JUMP JUMPDEST PUSH2 0x3B8C JUMP JUMPDEST PUSH2 0x5D69 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP4 PUSH2 0x3D1A DUP2 DUP7 DUP10 PUSH2 0x5EB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 PUSH1 0x20 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3CA3 DUP10 SWAP6 PUSH2 0x3DD1 DUP8 PUSH2 0x3DC6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 SWAP7 DUP9 DUP16 DUP10 PUSH2 0xFC SWAP16 DUP6 SWAP15 PUSH2 0x3DC0 DUP16 PUSH2 0x3CC6 SWAP16 PUSH2 0x3DC6 SWAP7 PUSH2 0x3DCB SWAP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH0 SWAP2 PUSH2 0x3DD7 JUMPI JUMPDEST POP SWAP11 DUP12 SWAP4 JUMPDEST AND SWAP1 PUSH2 0x3DBB DUP3 DUP3 PUSH2 0x5D9E JUMP JUMPDEST PUSH2 0x5F9D JUMP JUMPDEST AND PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0xBA7 JUMP JUMPDEST SWAP5 PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0x5C42 JUMP JUMPDEST PUSH2 0x3DF0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3DAA JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x3E16 PUSH2 0x3CFE PUSH2 0x3E08 DUP4 DUP6 PUSH2 0x5CA6 JUMP JUMPDEST PUSH2 0x3E11 DUP10 PUSH2 0x4D50 JUMP JUMPDEST PUSH2 0x3B74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP4 PUSH1 0x20 SWAP4 SWAP3 SWAP1 SWAP2 DUP5 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3E75 SWAP2 PUSH0 SWAP2 PUSH2 0x3F31 JUMPI JUMPDEST POP DUP7 DUP11 PUSH2 0x5EB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x94BF804D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP5 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH2 0xFC SWAP7 PUSH2 0x3DD1 DUP12 PUSH2 0x3DC6 DUP6 DUP16 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 SWAP16 SWAP11 DUP5 SWAP16 DUP16 SWAP7 PUSH2 0x3CC6 SWAP16 SWAP8 PUSH2 0x3DC6 SWAP7 PUSH2 0x3CA3 SWAP16 SWAP10 PUSH2 0x3DCB SWAP11 PUSH2 0x3DC0 SWAP6 PUSH0 SWAP3 PUSH2 0x3F14 JUMPI JUMPDEST POP POP SWAP9 DUP10 SWAP3 PUSH2 0x3DAF JUMP JUMPDEST PUSH2 0x3F2A SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x3F0A JUMP JUMPDEST PUSH2 0x3F48 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3E6D JUMP JUMPDEST POP SWAP1 SWAP4 POP POP POP JUMP JUMPDEST PUSH2 0x3F6F SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3C20 JUMP JUMPDEST PUSH2 0x3FBB PUSH1 0x20 PUSH2 0x3F83 DUP8 PUSH2 0x25D6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3FE0 SWAP2 PUSH0 SWAP2 PUSH2 0x3FE6 JUMPI JUMPDEST POP PUSH2 0x25D6 JUMP JUMPDEST SWAP6 PUSH2 0x3C29 JUMP JUMPDEST PUSH2 0x3FFF SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x3FDA JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0x4010 DUP6 PUSH2 0xFBE JUMP JUMPDEST DUP5 ISZERO SWAP5 DUP6 ISZERO PUSH2 0x42FF JUMPI PUSH2 0x405F PUSH1 0x20 PUSH2 0x4027 DUP8 PUSH2 0xB99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x4083 SWAP2 PUSH0 SWAP2 PUSH2 0x3F56 JUMPI POP PUSH2 0xB99 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0x40A1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x40AB PUSH2 0x5956 JUMP JUMPDEST PUSH2 0x3F4E JUMPI DUP8 SWAP4 DUP8 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP2 DUP7 DUP4 LT PUSH2 0x412B JUMPI POP POP POP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4101 DUP4 DUP7 PUSH2 0xFC SWAP9 PUSH2 0x40F9 DUP7 PUSH2 0x4126 SWAP9 PUSH1 0x80 SHR PUSH2 0x25E4 JUMP JUMPDEST SWAP3 AND SUB PUSH2 0x5C42 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x411E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE JUMPDEST AND PUSH2 0x4CD8 JUMP JUMPDEST PUSH2 0x16BD JUMP JUMPDEST SWAP2 SWAP7 POP SWAP3 SWAP5 POP PUSH2 0x413B SWAP2 POP PUSH2 0xFBE JUMP JUMPDEST ISZERO PUSH2 0x4239 JUMPI PUSH2 0x4150 PUSH2 0x3CFE PUSH2 0x3CF0 DUP8 DUP6 PUSH2 0x5CA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP4 SWAP1 PUSH1 0x20 DUP6 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x41F7 DUP10 SWAP6 PUSH2 0x3DD1 DUP5 PUSH2 0x3DC6 DUP15 PUSH2 0x41EE DUP12 DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xFC SWAP16 SWAP13 PUSH2 0x41E9 DUP16 SWAP14 PUSH2 0x4126 SWAP16 SWAP5 DUP9 SWAP16 DUP6 SWAP16 PUSH2 0x3DC6 SWAP8 PUSH0 SWAP2 PUSH2 0x421A JUMPI JUMPDEST POP SWAP6 DUP7 SWAP3 JUMPDEST AND SWAP1 PUSH2 0x5FE2 JUMP JUMPDEST PUSH2 0x25E4 JUMP JUMPDEST SWAP5 PUSH1 0x80 SHR PUSH2 0x25E4 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x4214 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x4120 JUMP JUMPDEST PUSH2 0x4233 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x41DD JUMP JUMPDEST PUSH2 0x4249 PUSH2 0x3CFE PUSH2 0x3E08 DUP8 DUP6 PUSH2 0x5F08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB460AF9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 PUSH1 0x20 DUP3 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH2 0x41F7 DUP10 SWAP6 PUSH2 0x3DD1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3DC6 DUP15 PUSH2 0x41EE DUP12 DUP16 DUP11 PUSH2 0xFC SWAP16 PUSH2 0x41E9 DUP16 SWAP4 PUSH2 0x4126 SWAP16 SWAP15 DUP9 SWAP16 SWAP6 DUP12 SWAP16 SWAP7 PUSH2 0x3DC6 SWAP8 PUSH0 SWAP2 PUSH2 0x42E0 JUMPI JUMPDEST POP SWAP12 DUP13 SWAP4 PUSH2 0x41E2 JUMP JUMPDEST PUSH2 0x42F9 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x42D7 JUMP JUMPDEST PUSH2 0x4345 PUSH1 0x20 PUSH2 0x430D DUP8 PUSH2 0x25D6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x4369 SWAP2 PUSH0 SWAP2 PUSH2 0x3FE6 JUMPI POP PUSH2 0x25D6 JUMP JUMPDEST SWAP6 PUSH2 0x4086 JUMP JUMPDEST DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI TSTORE JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0x43AC DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0x50AB JUMP JUMPDEST PUSH2 0x43B5 DUP4 PUSH2 0x2126 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x43C7 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x43F9 PUSH2 0x43E0 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x321C PUSH2 0x43EE DUP6 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP7 DUP11 PUSH2 0x2157 JUMP JUMPDEST DIV PUSH2 0x4404 DUP3 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x43B8 JUMP JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0xFC8 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0xFC8 JUMPI MSTORE JUMP JUMPDEST SWAP6 SWAP2 SWAP4 PUSH2 0x4453 PUSH2 0x462 SWAP9 SWAP7 SWAP5 PUSH2 0x4464 SWAP4 PUSH2 0x2299 SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x4415 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP3 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 SWAP7 PUSH2 0x44F1 PUSH2 0x449B DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0x44AB DUP10 PUSH2 0x440B JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x60 DUP4 ADD MLOAD SWAP4 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0x45421EC700000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x4422 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x4534 JUMPI JUMPDEST POP ISZERO PUSH2 0x450C JUMPI JUMP JUMPDEST PUSH32 0xB2EB65200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x454D SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x238A JUMPI PUSH2 0x237C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x4504 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0xED JUMPI DUP3 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 GT PUSH2 0xED JUMPI DUP4 PUSH2 0x457E SWAP2 DUP7 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP2 ADD MLOAD SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0xED JUMPI DUP2 PUSH2 0x2573 SWAP2 DUP5 ADD PUSH2 0x2483 JUMP JUMPDEST SWAP4 PUSH2 0x45C7 PUSH2 0x25C8 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x462 SWAP9 SWAP7 SWAP5 AND DUP8 MSTORE PUSH1 0xA0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x45E4 PUSH2 0x15F2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x45EE PUSH2 0x2465 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP6 ADD PUSH2 0x4601 DUP2 MLOAD MLOAD DUP1 DUP7 MSTORE PUSH2 0x2126 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP6 DUP7 MLOAD PUSH2 0x4611 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x461A DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x488B JUMPI POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x462E DUP7 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP5 PUSH2 0x4652 DUP3 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x464C PUSH2 0x2691 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x640D JUMP JUMPDEST SWAP10 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 DUP5 LT PUSH2 0x485B JUMPI POP PUSH2 0x466D DUP4 SWAP10 SWAP9 SWAP10 PUSH2 0x578F JUMP JUMPDEST PUSH1 0x20 DUP10 ADD SWAP8 PUSH0 JUMPDEST DUP13 DUP12 MLOAD DUP3 LT ISZERO PUSH2 0x479A JUMPI DUP2 PUSH2 0x4688 SWAP2 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x4692 DUP2 PUSH2 0x578F JUMP JUMPDEST PUSH2 0x469C DUP3 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x4789 JUMPI PUSH2 0x46C1 SWAP1 DUP14 PUSH2 0x46BA DUP5 PUSH1 0xA0 PUSH2 0x278A DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x5C2E JUMP JUMPDEST DUP1 PUSH2 0x46CC DUP4 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x46DC PUSH2 0x1170 DUP4 DUP11 MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD PUSH2 0x46EB DUP5 DUP3 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP4 GT PUSH2 0x473D JUMPI POP DUP14 DUP4 PUSH2 0x1E72 DUP15 PUSH2 0x472F DUP16 SWAP7 DUP16 SWAP8 PUSH2 0x471A DUP7 PUSH2 0x2816 DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x27F3 DUP9 PUSH2 0x4737 SWAP16 PUSH2 0x4CD8 JUMP JUMPDEST MSTORE PUSH2 0x4729 DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x25E4 JUMP JUMPDEST SWAP1 MLOAD SWAP1 PUSH2 0xBA7 JUMP JUMPDEST ADD PUSH2 0x4674 JUMP JUMPDEST SWAP2 PUSH2 0x474C DUP5 PUSH2 0x11BF SWAP5 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x4794 DUP2 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x46CE JUMP JUMPDEST POP POP SWAP4 SWAP7 SWAP5 POP SWAP7 POP SWAP7 POP SWAP7 PUSH2 0x47BA SWAP1 PUSH2 0x28C1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 PUSH2 0x47EC DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x480D DUP10 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x4807 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x6454 JUMP JUMPDEST PUSH2 0x4833 PUSH2 0x2691 PUSH2 0x4827 PUSH2 0x2967 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x1170 DUP9 PUSH2 0x440B JUMP JUMPDEST SWAP3 PUSH2 0x29A9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x4849 DUP9 PUSH2 0x440B JUMP JUMPDEST DUP9 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x25F1 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x3 DUP8 MLOAD PUSH2 0x4898 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x48A1 DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x48C3 JUMPI PUSH2 0x48B0 DUP9 MLOAD PUSH2 0x63D8 JUMP JUMPDEST PUSH2 0x48BA DUP2 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP5 PUSH0 SWAP2 SWAP10 PUSH2 0x4654 JUMP JUMPDEST SWAP8 PUSH1 0x1 DUP8 MLOAD PUSH2 0x48D1 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x48DA DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x4942 JUMPI PUSH2 0x48E9 DUP9 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH2 0x493A DUP10 PUSH2 0x48FB DUP5 PUSH1 0x40 DUP9 ADD MLOAD PUSH2 0x6174 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD MLOAD SWAP1 PUSH2 0x4915 PUSH2 0x2691 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x491F DUP13 MLOAD PUSH2 0x5352 JUMP JUMPDEST SWAP2 PUSH2 0x4934 PUSH2 0xDA4 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x618F JUMP JUMPDEST SWAP6 SWAP1 SWAP2 PUSH2 0x4654 JUMP JUMPDEST SWAP8 SWAP4 PUSH1 0x2 DUP8 MLOAD PUSH2 0x4951 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x495A DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x49C6 JUMPI SWAP8 DUP8 SWAP9 PUSH2 0x496C DUP10 MLOAD PUSH2 0x528F JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP2 PUSH2 0x497B DUP8 PUSH2 0x52C3 JUMP JUMPDEST PUSH2 0x49C0 PUSH2 0x49B6 PUSH1 0x40 DUP12 ADD SWAP3 DUP1 DUP5 MSTORE DUP10 DUP12 SWAP16 DUP9 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x49B0 PUSH2 0xDA4 PUSH2 0x2B0B PUSH2 0x2B04 PUSH2 0x2691 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0x60A9 JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x4654 JUMP JUMPDEST POP PUSH1 0x4 DUP7 MLOAD PUSH2 0x49D4 DUP2 PUSH2 0x440B JUMP JUMPDEST PUSH2 0x49DD DUP2 PUSH2 0x440B JUMP JUMPDEST SUB PUSH2 0x4A9E JUMPI PUSH2 0x49EC DUP8 MLOAD PUSH2 0x6074 JUMP JUMPDEST PUSH0 PUSH2 0x4A04 PUSH2 0xDA4 PUSH2 0xDA4 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP1 PUSH1 0x80 DUP11 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP9 ADD MLOAD SWAP9 PUSH2 0x4A51 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE4C4366300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x459D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x4A73 JUMPI JUMPDEST POP SWAP1 SWAP6 SWAP2 SWAP10 PUSH2 0x4654 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x4A94 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x4A8C DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4553 JUMP JUMPDEST SWAP2 SWAP6 SWAP3 SWAP2 PUSH0 PUSH2 0x4A69 JUMP JUMPDEST PUSH32 0x6C02B39500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP7 SWAP3 PUSH2 0x462 SWAP9 SWAP7 SWAP5 PUSH2 0x4B1C SWAP4 PUSH2 0x4B00 PUSH2 0x4B0E SWAP4 PUSH2 0x2D7A SWAP10 SWAP6 PUSH2 0x100 SWAP4 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x4415 JUMP JUMPDEST DUP1 PUSH1 0x60 DUP12 ADD MSTORE DUP10 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x80 DUP10 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x465 JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP6 SWAP3 SWAP7 SWAP1 DUP5 MLOAD PUSH2 0x4B48 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD SWAP2 PUSH2 0x4B57 DUP4 PUSH2 0x440B JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 PUSH1 0x40 SWAP7 DUP13 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP8 DUP9 SWAP8 PUSH32 0x976907CC00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0x4B9F SWAP9 PUSH2 0x4AC6 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP1 PUSH0 SWAP7 PUSH2 0x4CB9 JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0x4CAD JUMPI JUMPDEST PUSH2 0x4C85 JUMPI PUSH1 0x1 DUP1 SWAP5 PUSH1 0x9 SHR AND ISZERO PUSH2 0x4BEB JUMPI SWAP1 SWAP2 SWAP3 DUP1 SWAP5 SWAP6 POP PUSH0 SWAP1 JUMPDEST PUSH2 0x4BF3 JUMPI JUMPDEST POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x4C80 JUMPI PUSH2 0x4C06 DUP2 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP3 DUP6 ADD SWAP1 PUSH2 0x4C16 DUP4 DUP4 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD LT PUSH2 0x4C25 JUMPI POP DUP5 ADD DUP5 PUSH2 0x4BE6 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x4C43 DUP4 PUSH2 0x2E9D DUP2 PUSH2 0x2E97 PUSH2 0x1170 PUSH2 0x11BF SWAP9 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH32 0xCEFA3AFA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0x4BEB JUMP JUMPDEST PUSH32 0xE124916500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP5 MLOAD DUP7 MLOAD EQ ISZERO PUSH2 0x4BCB JUMP JUMPDEST SWAP1 POP PUSH2 0x4CD0 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x2F32 DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP5 SWAP1 PUSH0 PUSH2 0x4BC2 JUMP JUMPDEST PUSH2 0x4CE4 PUSH2 0xFC SWAP3 PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x4D1B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x4D09 DUP4 DUP7 PUSH2 0x2157 JUMP JUMPDEST MLOAD AND SWAP1 DUP4 AND EQ PUSH2 0x3A5E JUMPI PUSH1 0x1 ADD PUSH2 0x4CED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH32 0xDDEF98D700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4D7A JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x4E62 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 SWAP2 AND DUP1 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH2 0x4DEC PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP4 DUP5 PUSH2 0x3B8C JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x4E30 JUMPI POP PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x98E JUMPI TSTORE JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH2 0x4E24 JUMPI PUSH2 0x4E5D PUSH32 0x0 PUSH2 0x436F JUMP JUMPDEST PUSH2 0x4E24 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0x4E84 JUMPI POP POP POP POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0x4EAE SWAP4 PUSH2 0x1764 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x4EE6 JUMPI POP POP POP PUSH2 0xFC SWAP3 POP SUB DUP4 PUSH2 0x2FF JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4ED0 JUMP JUMPDEST SWAP1 PUSH2 0x4F13 DUP3 PUSH2 0x370 JUMP JUMPDEST PUSH2 0x4F20 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2FF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x4F30 DUP3 SWAP5 PUSH2 0x370 JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4F40 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x4F4B PUSH2 0x2465 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x4F34 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0x4F64 DUP2 PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0x4F77 DUP2 PUSH2 0xFBE JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP1 MLOAD MLOAD SWAP4 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x4FAF JUMPI POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x4FC3 PUSH2 0x1170 PUSH1 0x1 SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x4FEE PUSH2 0x4FD8 DUP4 DUP10 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x4FF9 DUP4 DUP8 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP2 GT PUSH2 0x5040 JUMPI JUMPDEST POP POP PUSH2 0x5027 PUSH2 0x5011 DUP3 DUP7 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5020 DUP4 PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5C42 JUMP JUMPDEST PUSH2 0x5039 DUP3 DUP9 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x4FA0 JUMP JUMPDEST PUSH2 0x508B PUSH2 0x50A3 SWAP2 PUSH2 0x5085 PUSH2 0x507C PUSH2 0x5068 DUP7 DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 PUSH2 0x5075 DUP9 DUP13 MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xBA7 JUMP JUMPDEST DUP3 PUSH1 0x80 SHR PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0x66E4 JUMP JUMPDEST SWAP2 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 PUSH2 0x5001 JUMP JUMPDEST DUP2 EQ DUP1 ISZERO SWAP3 SWAP2 SWAP1 PUSH2 0x50BF JUMPI JUMPDEST POP POP PUSH2 0x20FE JUMPI JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0x50B7 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x98E JUMPI JUMP JUMPDEST DUP1 MLOAD PUSH2 0x5105 DUP2 PUSH2 0xFBE JUMP JUMPDEST PUSH2 0x510E DUP2 PUSH2 0xFBE JUMP JUMPDEST DUP1 PUSH2 0x5121 JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x512D PUSH1 0x1 SWAP3 PUSH2 0xFBE JUMP JUMPDEST SUB PUSH2 0x51A2 JUMPI PUSH1 0x20 PUSH2 0x514C PUSH2 0xDA4 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP2 PUSH2 0x5189 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x462 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x520E PUSH2 0x2FD6 SWAP5 DUP1 PUSH2 0x51ED DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x321C PUSH2 0x51FF DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH2 0x5252 PUSH2 0x2FD6 SWAP4 DUP1 PUSH2 0x5231 DUP6 PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0x21F6 PUSH2 0x5243 DUP6 PUSH1 0xC0 DUP10 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x21EF DUP7 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x6 SHR PUSH1 0x1 AND ISZERO PUSH2 0x5267 JUMPI JUMP JUMPDEST PUSH32 0xCF0A95C000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 SHR PUSH1 0x1 AND PUSH2 0x529B JUMPI JUMP JUMPDEST PUSH32 0xD4F5779C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD SWAP1 DUP2 SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x5305 JUMPI POP POP DUP2 LT ISZERO PUSH2 0x52DD JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x7E46BDDC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x530F DUP2 DUP4 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x531D JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x52CA JUMP JUMPDEST SWAP3 DUP3 SUB PUSH2 0x532A JUMPI DUP3 PUSH2 0x5315 JUMP JUMPDEST PUSH32 0x6B8C3BE500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x538C PUSH0 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x538C PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP1 SWAP5 SWAP3 SWAP2 SWAP3 DUP2 MLOAD SWAP5 PUSH2 0x53BA DUP7 PUSH2 0x2126 JUMP JUMPDEST SWAP5 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x55A3 JUMPI POP PUSH2 0x53D3 SWAP1 PUSH2 0x2A70 DUP10 DUP9 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x53DD DUP9 DUP8 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP5 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP8 MSTORE PUSH1 0x20 DUP8 DUP1 PUSH2 0x5418 DUP9 PUSH1 0x4 DUP4 ADD PUSH2 0x5375 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP8 PUSH2 0x5582 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP5 DUP7 MSTORE PUSH1 0x20 DUP7 DUP1 PUSH2 0x544D DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0x5375 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x223 JUMPI PUSH2 0x3DC6 PUSH2 0x54AF DUP13 PUSH2 0x5075 PUSH2 0x54A8 PUSH2 0x54C5 SWAP7 PUSH2 0x54A1 DUP16 PUSH2 0x5491 PUSH2 0x54FB SWAP16 SWAP2 PUSH1 0x20 SWAP15 DUP9 SWAP4 PUSH0 SWAP2 PUSH2 0x5563 JUMPI JUMPDEST POP PUSH2 0x5BB5 JUMP JUMPDEST SWAP3 PUSH2 0x549C DUP5 DUP14 PUSH2 0x6700 JUMP JUMPDEST PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x576D JUMP JUMPDEST SWAP2 DUP9 PUSH2 0x2157 JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL DUP3 PUSH2 0x5BB5 JUMP JUMPDEST SWAP4 PUSH2 0x54D4 DUP6 PUSH2 0x2A70 DUP13 DUP7 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x54DE DUP12 DUP6 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5391 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5537 SWAP6 PUSH2 0x5531 SWAP4 PUSH0 SWAP4 PUSH2 0x553A JUMPI JUMPDEST POP PUSH2 0x5523 PUSH2 0x552A SWAP2 PUSH2 0x2126 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP4 PUSH2 0xBA7 JUMP JUMPDEST SWAP1 PUSH2 0x5C0E JUMP JUMPDEST SWAP2 JUMP JUMPDEST PUSH2 0x552A SWAP2 SWAP4 POP PUSH2 0x555B PUSH2 0x5523 SWAP2 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP4 SWAP2 POP PUSH2 0x5516 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x557C SWAP3 POP RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x548B JUMP JUMPDEST PUSH2 0x559C SWAP2 SWAP8 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP6 PUSH0 PUSH2 0x5434 JUMP JUMPDEST DUP1 PUSH2 0x55B9 PUSH2 0x55B3 PUSH1 0x1 SWAP4 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x55C3 DUP3 DUP11 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x53BD JUMP JUMPDEST PUSH2 0x55E2 PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x465 JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 SWAP5 SWAP2 DUP4 SUB SWAP2 DUP4 DUP4 GT PUSH2 0x98E JUMPI PUSH1 0x20 PUSH2 0x5652 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x5611 DUP8 DUP8 PUSH2 0x5BB5 JUMP JUMPDEST PUSH2 0x561B DUP2 DUP4 PUSH2 0x6700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP14 DUP11 PUSH1 0x4 DUP6 ADD PUSH2 0x55CA JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5537 SWAP6 PUSH2 0x21F6 DUP9 PUSH2 0x569D SWAP4 PUSH2 0x56A6 SWAP9 PUSH2 0x56AD SWAP7 PUSH0 SWAP3 PUSH2 0x56B3 JUMPI JUMPDEST POP PUSH2 0x568B DUP3 PUSH2 0x2A70 PUSH2 0x3DC6 SWAP5 SWAP6 DUP12 PUSH2 0x2157 JUMP JUMPDEST SWAP9 PUSH2 0x5696 DUP14 DUP11 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5C0E JUMP JUMPDEST SWAP4 DUP5 SWAP3 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP6 DUP7 PUSH2 0x2157 JUMP JUMPDEST MSTORE PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x3DC6 SWAP3 POP PUSH2 0x2A70 SWAP4 PUSH2 0x56D7 PUSH2 0x568B SWAP3 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP4 POP SWAP4 POP PUSH2 0x5678 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x5717 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x56E0 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 PUSH2 0x5729 DUP3 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x5766 JUMPI PUSH2 0x5749 DUP4 PUSH2 0x5743 DUP4 DUP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x50E7 JUMP JUMPDEST SWAP1 DUP7 ISZERO PUSH2 0x5717 JUMPI DUP7 PUSH1 0x1 SWAP3 DIV PUSH2 0x575F DUP3 DUP8 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x572C JUMP JUMPDEST POP POP POP SWAP2 POP JUMP JUMPDEST SWAP1 PUSH2 0x5777 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5797 JUMPI POP JUMP JUMPDEST PUSH2 0xFC SWAP1 PUSH2 0x5B65 JUMP JUMPDEST SWAP2 PUSH2 0x57AA SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI DUP2 ISZERO PUSH2 0x5717 JUMPI DIV SWAP1 JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP1 SWAP5 PUSH0 SWAP6 PUSH0 SWAP6 DUP2 PUSH2 0x57E4 JUMPI POP POP POP POP POP JUMP JUMPDEST DUP5 SWAP8 POP PUSH2 0x2793 PUSH2 0x57FD DUP3 PUSH1 0xC0 PUSH2 0x5809 SWAP7 SWAP8 SWAP9 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP5 MLOAD PUSH1 0x1 DUP2 PUSH1 0x3 SHR AND ISZERO PUSH2 0x581F JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP2 SWAP3 SWAP5 POP PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI PUSH2 0x5855 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP7 PUSH2 0x50E7 JUMP JUMPDEST DIV SWAP3 DUP5 DUP5 GT PUSH2 0x58CB JUMPI DUP1 PUSH2 0x1764 PUSH2 0x58AA PUSH2 0x5887 PUSH2 0x58C2 SWAP5 PUSH2 0x1764 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x58A4 DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x25E4 JUMP JUMPDEST SWAP1 PUSH2 0x67B7 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 DUP1 PUSH2 0x5818 JUMP JUMPDEST PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 SWAP2 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x594D JUMPI SWAP1 PUSH2 0x593D PUSH2 0x592E DUP3 PUSH1 0x1 SWAP5 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5020 DUP4 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP4 DUP7 MSTORE DUP5 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x5910 JUMP JUMPDEST POP POP POP POP POP SWAP1 POP JUMP JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0x5960 JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0x59AE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x599F SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x98E JUMPI SSTORE JUMP JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x1A90 JUMPI PUSH2 0x5A09 DUP6 PUSH2 0x1764 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x5B04 JUMPI DUP4 SWAP1 SUB PUSH2 0x5A33 DUP7 PUSH2 0x1764 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x5A59 DUP4 PUSH2 0x5A53 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xBA7 JUMP JUMPDEST PUSH2 0x5A62 DUP2 PUSH2 0x67C5 JUMP JUMPDEST PUSH2 0x5A7D DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x5AFF SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x17F8 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP1 DUP3 DIV MUL DUP2 SUB PUSH2 0x5B57 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x0 GT PUSH2 0x5B8D JUMPI JUMP JUMPDEST PUSH32 0x1ED4D11800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5BE6 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 ISZERO PUSH2 0x5BE6 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x5C20 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x462 SWAP3 PUSH2 0x5C3C SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 PUSH2 0x5BB5 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x5C9C JUMPI JUMPDEST POP PUSH2 0x5C74 JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x5C5F JUMP JUMPDEST SWAP1 PUSH2 0x5CB3 DUP3 PUSH1 0x80 SHR PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 SWAP4 AND DUP1 PUSH2 0x5CE0 JUMPI JUMPDEST POP POP PUSH1 0x2 SWAP2 PUSH2 0x5CDC SWAP2 PUSH2 0x3B74 JUMP JUMPDEST SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5D41 PUSH2 0x5CDC SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x5D4A JUMPI JUMPDEST POP PUSH2 0x4D50 JUMP JUMPDEST SWAP3 DUP2 SWAP3 POP PUSH2 0x5CCE JUMP JUMPDEST PUSH2 0x5D63 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 PUSH2 0x5D3B JUMP JUMPDEST PUSH0 DUP2 SLT PUSH2 0x5D73 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0xA8CE443200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH0 PUSH1 0x44 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 PUSH1 0x64 DUP2 ADD JUMPDEST SUB SWAP2 PUSH2 0x5DFD PUSH1 0x1F NOT SWAP4 DUP5 DUP2 ADD DUP8 MSTORE DUP7 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP3 DUP8 MLOAD SWAP1 DUP3 DUP6 GAS CALL SWAP1 PUSH2 0x5E1A PUSH2 0x6027 JUMP JUMPDEST DUP3 PUSH2 0x5E87 JUMPI JUMPDEST POP DUP2 PUSH2 0x5E7C JUMPI JUMPDEST POP ISZERO PUSH2 0x5E34 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 DUP6 ADD MSTORE PUSH0 PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 SWAP1 DUP2 ADD DUP5 MSTORE PUSH2 0x5E72 SWAP4 PUSH2 0x964 SWAP2 PUSH2 0x5E6C SWAP1 DUP3 PUSH2 0x2FF JUMP JUMPDEST DUP3 PUSH2 0x65A2 JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST SWAP1 POP EXTCODESIZE ISZERO ISZERO PUSH0 PUSH2 0x5E27 JUMP JUMPDEST DUP1 MLOAD SWAP2 SWAP3 POP DUP2 ISZERO SWAP2 DUP3 ISZERO PUSH2 0x5E9F JUMPI JUMPDEST POP POP SWAP1 PUSH0 PUSH2 0x5E20 JUMP JUMPDEST PUSH2 0x5EB2 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x2223 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5E96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP3 DUP4 PUSH1 0x64 DUP2 ADD PUSH2 0x5DE9 JUMP JUMPDEST SWAP1 PUSH2 0x5F24 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x4D50 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH1 0x80 SHR DUP1 PUSH2 0x5F3D JUMPI POP POP PUSH1 0x2 SWAP2 PUSH2 0x5CDC SWAP2 PUSH2 0x3B74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5D41 PUSH2 0x5CDC SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x5D4A JUMPI POP PUSH2 0x4D50 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x98E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x98E JUMPI PUSH2 0xFC SWAP4 PUSH2 0x67FD JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x98E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x98E JUMPI PUSH2 0xFC SWAP4 PUSH2 0x67FD JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x6051 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x6038 DUP3 PUSH2 0x3F5 JUMP JUMPDEST SWAP2 PUSH2 0x6046 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x2FF JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x462 SWAP4 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 DUP6 GAS CALL PUSH2 0x606E PUSH2 0x6027 JUMP JUMPDEST SWAP2 PUSH2 0x6984 JUMP JUMPDEST PUSH1 0x5 SHR PUSH1 0x1 AND ISZERO PUSH2 0x6081 JUMPI JUMP JUMPDEST PUSH32 0x4876C0BC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP5 SWAP2 PUSH1 0x20 PUSH2 0x60D8 PUSH2 0x60C3 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x25E4 JUMP JUMPDEST SWAP5 PUSH2 0x60CE DUP8 DUP8 PUSH2 0x5BB5 JUMP JUMPDEST PUSH2 0x561B DUP2 DUP4 PUSH2 0x6A10 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x223 JUMPI PUSH2 0x5537 SWAP6 PUSH2 0x3DC6 PUSH2 0x54AF DUP6 PUSH2 0x569D SWAP5 PUSH2 0x56A6 SWAP10 DUP13 SWAP10 DUP11 PUSH2 0x6137 SWAP10 PUSH0 SWAP5 PUSH2 0x613D JUMPI JUMPDEST POP SWAP1 PUSH2 0x612B PUSH2 0x6124 PUSH2 0x611D PUSH2 0x6132 SWAP5 PUSH2 0x2836 SWAP8 SWAP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP8 PUSH2 0xBA7 JUMP JUMPDEST SWAP13 DUP13 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x570D JUMP JUMPDEST MSTORE PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0x2836 SWAP5 POP PUSH2 0x6124 PUSH2 0x611D PUSH2 0x6132 SWAP5 SWAP4 PUSH2 0x6168 PUSH2 0x612B SWAP5 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP8 POP SWAP4 SWAP5 POP POP POP PUSH2 0x6104 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD PUSH2 0x6185 DUP5 MLOAD DUP3 PUSH2 0x20F7 JUMP JUMPDEST PUSH1 0x5 SHL SWAP4 ADD SWAP2 ADD MCOPY JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP4 DUP4 MLOAD PUSH2 0x619E DUP2 PUSH2 0x2126 JUMP JUMPDEST SWAP2 PUSH2 0x61A8 DUP3 PUSH2 0x2126 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x639D JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x40 MLOAD SWAP6 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP9 MSTORE PUSH1 0x20 SWAP9 DUP10 DUP10 DUP1 PUSH2 0x61FB DUP5 PUSH1 0x4 DUP4 ADD PUSH2 0x5375 JUMP JUMPDEST SUB DUP2 DUP10 GAS STATICCALL SWAP9 DUP10 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP10 PUSH2 0x637E JUMPI JUMPDEST POP PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0x6225 DUP12 PUSH1 0x4 DUP4 ADD PUSH2 0x5391 JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x223 JUMPI DUP11 PUSH2 0x6132 PUSH2 0x6260 SWAP4 PUSH2 0x6259 SWAP4 DUP16 PUSH0 SWAP3 PUSH2 0x6361 JUMPI JUMPDEST SWAP12 SWAP10 SWAP14 SWAP13 SWAP11 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 POP PUSH2 0x50CA JUMP JUMPDEST DUP1 SWAP4 PUSH2 0x6A10 JUMP JUMPDEST PUSH0 JUMPDEST DUP10 DUP2 LT PUSH2 0x62CF JUMPI POP POP POP POP PUSH2 0x6286 SWAP6 POP PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP5 DUP3 SWAP4 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5391 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI DUP4 PUSH2 0x6132 SWAP4 PUSH2 0x62AC SWAP3 PUSH2 0x5537 SWAP8 PUSH0 SWAP3 PUSH2 0x62B2 JUMPI JUMPDEST POP POP PUSH2 0xBA7 JUMP JUMPDEST SWAP1 PUSH2 0x50E7 JUMP JUMPDEST PUSH2 0x62C8 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x62A5 JUMP JUMPDEST DUP7 SWAP9 SWAP10 SWAP6 SWAP8 POP DUP4 DUP14 DUP4 SWAP5 SWAP6 SWAP7 SWAP9 DUP4 PUSH2 0x62F3 PUSH2 0x62EC DUP3 PUSH1 0x1 SWAP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP10 PUSH2 0x67A4 JUMP JUMPDEST DUP1 PUSH2 0x62FE DUP4 DUP6 PUSH2 0x2157 JUMP JUMPDEST MLOAD GT PUSH2 0x631A JUMPI JUMPDEST POP POP POP POP POP ADD SWAP1 DUP11 SWAP7 SWAP5 SWAP9 SWAP8 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0x6262 JUMP JUMPDEST DUP2 DUP4 PUSH2 0x633B PUSH2 0x634C SWAP8 PUSH2 0x6345 SWAP5 PUSH2 0x6334 DUP6 PUSH2 0x5075 SWAP10 PUSH2 0x2157 JUMP JUMPDEST MLOAD SUB PUSH2 0x576D JUMP JUMPDEST PUSH2 0x1DD2 DUP4 DUP9 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2157 JUMP JUMPDEST PUSH2 0x6356 DUP3 DUP12 PUSH2 0x2157 JUMP JUMPDEST MSTORE DUP5 DUP14 DUP11 DUP4 PUSH0 PUSH2 0x6305 JUMP JUMPDEST PUSH2 0x6377 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST PUSH0 DUP16 PUSH2 0x6245 JUMP JUMPDEST PUSH2 0x6396 SWAP2 SWAP10 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x620E JUMP JUMPDEST DUP1 PUSH2 0x63C7 PUSH2 0x63C2 PUSH2 0x63B0 PUSH1 0x1 SWAP5 DUP13 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x63BB DUP5 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0xB99 JUMP JUMPDEST PUSH2 0x63D1 DUP3 DUP9 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x61AB JUMP JUMPDEST PUSH1 0x7 SHR PUSH1 0x1 AND ISZERO PUSH2 0x63E5 JUMPI JUMP JUMPDEST PUSH32 0xEFE0265D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 PUSH2 0x6419 DUP5 MLOAD PUSH2 0x2126 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x644E JUMPI DUP1 PUSH2 0x643D DUP6 DUP6 PUSH2 0x6437 PUSH1 0x1 SWAP6 DUP8 PUSH2 0x2157 JUMP JUMPDEST MLOAD PUSH2 0x5C0E JUMP JUMPDEST PUSH2 0x6447 DUP3 DUP10 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x641C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0x656D JUMPI PUSH2 0x648C DUP4 PUSH2 0x6486 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x25E4 JUMP JUMPDEST PUSH2 0x64AB DUP6 PUSH2 0x1764 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x64BA DUP2 PUSH2 0x67C5 JUMP JUMPDEST PUSH2 0x64D5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x650E DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0xED JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x1A00 JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x65B6 SWAP2 AND SWAP2 DUP3 PUSH2 0x6056 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x65F7 JUMPI JUMPDEST POP POP PUSH2 0x65CC JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x660A SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x2223 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0x65C3 JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0x6622 DUP3 PUSH2 0x2126 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x6636 JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP1 DUP3 MUL SWAP1 DUP3 DUP3 DIV EQ DUP3 ISZERO OR ISZERO PUSH2 0x98E JUMPI DUP3 PUSH1 0x1F SWAP2 SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x98E JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0x6667 DUP3 DUP8 PUSH2 0x2157 JUMP JUMPDEST MSTORE ADD PUSH2 0x6629 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x98E JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x66A4 DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x66B3 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH2 0x66D9 SWAP6 SWAP7 POP SWAP2 PUSH2 0x66C8 SWAP2 PUSH2 0x2793 SWAP4 SUB PUSH2 0x576D JUMP JUMPDEST SWAP3 PUSH1 0xA0 PUSH2 0x278A DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x2157 JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1713 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x462 SWAP3 AND PUSH2 0x5C42 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xB677FA5600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP3 PUSH2 0x6783 JUMPI JUMPDEST POP DUP2 DUP2 LT PUSH2 0x6755 JUMPI POP POP JUMP JUMPDEST PUSH32 0xE31C95BE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x679D SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6749 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH2 0x3221 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 PUSH2 0x462 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x5C42 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0x67D2 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x20 SWAP6 SWAP4 SWAP5 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP8 DUP4 PUSH1 0x24 DUP2 DUP8 DUP7 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP4 PUSH2 0x6965 JUMPI JUMPDEST POP DUP1 DUP4 LT PUSH2 0x6920 JUMPI POP PUSH2 0x6877 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND SWAP1 DUP5 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP6 PUSH2 0x6901 JUMPI JUMPDEST POP POP DUP2 DUP5 LT PUSH2 0x68C6 JUMPI POP POP PUSH2 0x68C3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH32 0x1149424D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE POP PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH2 0x6918 SWAP3 SWAP6 POP DUP1 RETURNDATASIZE LT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP3 PUSH0 DUP1 PUSH2 0x689D JUMP JUMPDEST SWAP1 POP PUSH2 0x11BF SWAP3 DUP7 PUSH32 0x1C6A537500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 SWAP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE JUMP JUMPDEST PUSH2 0x697D SWAP2 SWAP4 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x6853 JUMP JUMPDEST SWAP1 PUSH2 0x69C1 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x6999 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x6A07 JUMPI JUMPDEST PUSH2 0x69D2 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x69CA JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x273C1ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x223 JUMPI PUSH0 SWAP3 PUSH2 0x6A93 JUMPI JUMPDEST POP DUP2 DUP2 GT PUSH2 0x6A65 JUMPI POP POP JUMP JUMPDEST PUSH32 0x3E8960DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x6AAD SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x21C JUMPI PUSH2 0x20E DUP2 DUP4 PUSH2 0x2FF JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x6A59 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x98E JUMPI JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xB3 0x22 AND 0xEA 0xD2 MLOAD SWAP8 SWAP12 0xEA 0xD8 0x2C BLOBHASH PUSH7 0x8A68329180BC89 PUSH29 0xCCA5B20A5D4DCE33E35F64736F6C634300081A00330000000000000000 ","sourceMap":"2550:79546:64:-:0;;;;;;;;;-1:-1:-1;2550:79546:64;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;:::i;:::-;;;1083:103:50;;:::i;:::-;2707:73:66;;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;;-1:-1:-1;2550:79546:64;;;7242:11;2550:79546;;;;;;;;;;;;;7296:30;;7320:4;2550:79546;7296:30;;2550:79546;;;;;;;;;;7296:30;;;;;;;2550:79546;7296:30;7391:32;7296:30;-1:-1:-1;7296:30:64;;;2550:79546;7336:18;;;;-1:-1:-1;;;;;2550:79546:64;;;7242:11;2550:79546;;;;;;;7336:18;2550:79546;7391:32;:::i;:::-;7656:19;;;;7652:532;;2550:79546;8215:6;;;;;:::i;:::-;1148:1:50;;:::i;:::-;2550:79546:64;;;;;;;;;;;;;;;;;7652:532;;-1:-1:-1;8215:6:64;7652:532;;7296:30;;;;2550:79546;7296:30;2550:79546;7296:30;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2550:79546::-;;;;;-1:-1:-1;;2550:79546:64;;;;;54102:6;2550:79546;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;54053:6;2550:79546;;54026:10;;;;54053:6;:::i;:::-;54026:10;54102:6;:::i;:::-;2550:79546;;;54126:4;2550:79546;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;2550:79546:64;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;-1:-1:-1;2550:79546:64;;;:::o;:::-;;;;;;:::i;:::-;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10931:17;2550:79546;;;;;;;;;:::i;:::-;;;;;10931:17;:::i;:::-;2550:79546;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;54702:20;2550:79546;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;54702:20;:::i;2550:79546::-;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6980:19;2550:79546;;6980:19;:::i;:::-;2550:79546;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;1083:103:50;;;:::i;:::-;2707:73:66;;:::i;:::-;3891:15;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;;-1:-1:-1;2550:79546:64;8407:11;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;;;;;;;1412:43:98;;;-1:-1:-1;;;;;2550:79546:64;;;;1412:43:98;;2550:79546:64;;;;;;;;;1412:43:98;;;;;2550:79546:64;1412:43:98;2550:79546:64;;1412:43:98;:::i;:::-;;:::i;:::-;-1:-1:-1;551:66:50;3051:52:52;2550:79546:64;;;:::i;:::-;;;;;;;:::o;:::-;;;;;-1:-1:-1;;2550:79546:64;;;;;;;;-1:-1:-1;;;;;81346:15:64;2550:79546;;;;;;;;;-1:-1:-1;;2550:79546:64;;;;;53823:6;2550:79546;;;;;:::i;:::-;;;;;;:::i;:::-;;;53800:10;;53823:6;:::i;2550:79546::-;;;;;-1:-1:-1;;2550:79546:64;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;;;;;-1:-1:-1;2550:79546:64;-1:-1:-1;2550:79546:64;;7916:84:46;2550:79546:64;7916:84:46;2550:79546:64;-1:-1:-1;2550:79546:64;;7916:84:46;8984:24:66;8980:85;;-1:-1:-1;2550:79546:64;;;;53304:11;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;;;;;;;53348:34;2550:79546;;;;;;;:::i;:::-;53348:34;;:::i;:::-;2550:79546;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;;;8980:85:66;9031:23;-1:-1:-1;9031:23:66;2550:79546:64;;;-1:-1:-1;9031:23:66;2550:79546:64;;;;;-1:-1:-1;;2550:79546:64;;;;;;551:66:50;2806:53:52;2550:79546:64;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2550:79546:64;;;;;;;:::o;:::-;;;;;;;;;;:::o;37298:4015::-;;2707:73:66;;:::i;:::-;8882:4;-1:-1:-1;;;;;2550:79546:64;;;8882:4:66;:::i;:::-;37889:11:64;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;37889:11;:::i;:::-;38387:75;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;38387:75;:::i;:::-;38508:15;40511:103;38508:15;;;;2550:79546;38532:27;2550:79546;38532:20;;;;;2550:79546;38532:27;;:::i;:::-;38893:20;;38963:30;;;;38893:143;38963:30;;39007:19;;;;;;;38893:143;;:::i;:::-;2550:79546;39130:57;2550:79546;;2370:1:71;5866:205:70;958:1:71;7916:84:46;;5866:205:70;;39130:57:64;39126:897;;37298:4015;40511:103;;;;;;:::i;:::-;40451:163;;;;;40816:56;2550:79546;;7916:84:46;6405:203:70;958:1:71;7916:84:46;;6405:203:70;;40816:56:64;40812:495;;37298:4015;37524:23;;;;;;37298:4015;:::o;40812:495::-;2550:79546;;;;41028:268;2550:79546;40972:28;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;-1:-1:-1;;;;;2550:79546:64;;;39382:15;2550:79546;;;;;;;40972:28;2550:79546;-1:-1:-1;;;;;2550:79546:64;;;40972:28;2550:79546;;;41098:10;41028:268;;:::i;:::-;40812:495;;;;;;;39126:897;39382:28;39857:155;2550:79546;;;39382:28;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;39382:28;39304:10;;39382:28;;:::i;:::-;39715:19;39682:31;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;-1:-1:-1;;;;;2550:79546:64;;;39682:18;2550:79546;;;;;;;39682:31;39715:19;;:::i;:::-;39857:20;39931:30;;39979:19;;39857:155;;:::i;:::-;39126:897;;;;;2707:73:66;;;;:::i;:::-;10848:20:64;;;2550:79546;-1:-1:-1;;;;;8882:4:66;2550:79546:64;;;;8882:4:66;:::i;:::-;10980:20:64;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;10980:20;11016:30;;;2550:79546;11016:35;11012:90;;11116:23;;;2550:79546;-1:-1:-1;;;;;2550:79546:64;11143:24;11116:51;2550:79546;11143:24;;;2550:79546;-1:-1:-1;;;;;2550:79546:64;;;;-1:-1:-1;;;;;2550:79546:64;;;11116:51;2550:79546;;11116:51;11112:110;;11694:84;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;11694:84;11817:41;;;;;:::i;:::-;11907:58;;;;;;:::i;:::-;2550:79546;;958:1:71;7916:84:46;2042:1:71;7916:84:46;11976:992:64;;2707:73:66;2550:79546:64;;19097:20;;2550:79546;958:1:71;7916:84:46;;;13433:346:64;;2707:73:66;19097:20:64;;;;:::i;:::-;14060:185;;;;;;;2550:79546;14488:45;2550:79546;;7916:84:46;4435:180:70;958:1:71;7916:84:46;;4435:180:70;;14488:45:64;14484:507;;2707:73:66;2550:79546:64;;;;;;;;;:::i;:::-;;;;:::i;:::-;15005:41;;15062:28;;2772:1:66;;2707:73;:::o;15001:158:64:-;15121:27;;;;2772:1:66;2707:73;:::o;14484:507:64:-;2550:79546;;;;14633:37;;2550:79546;14704:276;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;14633:37;2550:79546;;;14839:10;;14704:276;;:::i;:::-;14484:507;;;;;;;;13433:346;2550:79546;;-1:-1:-1;;;;;2550:79546:64;13540:228;11143:24;13672:27;;2550:79546;;;13717:37;;;-1:-1:-1;;;;;2550:79546:64;;;39382:15;2550:79546;;;;;;;13717:37;13540:228;;;:::i;:::-;2550:79546;;13433:346;;11976:992;12163:37;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;;12163:37;;;-1:-1:-1;;;;;2550:79546:64;;;39382:15;2550:79546;;;;;;;12163:37;;;:::i;:::-;12617:19;12575:40;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;12575:40;12617:19;;:::i;:::-;12802:65;;;;;:::i;:::-;11116:23;12770:29;;2550:79546;19097:20;12899:58;;;;;:::i;:::-;11976:992;;;;11112:110;11190:21;-1:-1:-1;11190:21:64;;-1:-1:-1;11190:21:64;11012:90;11074:17;-1:-1:-1;11074:17:64;;-1:-1:-1;11074:17:64;2550:79546;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;;:::o;:::-;;:::i;2707:73:66:-;;;:::i;:::-;568:1:75;8248:15:66;2550:79546:64;;7916:84:46;;8244:95:66;;54593:19:64;;;2550:79546;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;10124:13:66;2550:79546:64;;;54593:19;2550:79546;;;;10124:41:66;10120:113;;54770:27:64;1083:103:50;;;;:::i;:::-;2550:79546:64;54770:25;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;54770:25;54593:19;2550:79546;54770:27;;;;2550:79546;54770:27;;;;;;;;55831:15;54770:27;2550:79546;54770:27;;;2707:73:66;2550:79546:64;;54855:24;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;;54855:24;:::i;:::-;2550:79546;;-1:-1:-1;;;;;2550:79546:64;54935:21;;;;;2550:79546;;;54935:21;;:::i;:::-;568:1:75;2550:79546:64;54972:16;;2550:79546;;;;:::i;:::-;;;;:::i;:::-;54972:44;568:1:75;;55114:169:64;2550:79546;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2550:79546:64;;;55114:169;;:::i;:::-;55302:70;55068:215;;;;;;;;55302:70;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;55302:70;2550:79546;54593:19;2550:79546;55302:70;;;;2550:79546;;;;;;;;;;;;;;;;;;55302:70;;;;54968:782;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;55764:32;;55831:15;2550:79546;55816:30;;;55812:116;;55941:34;56231:19;2550:79546;55941:34;;55760:417;;;;2550:79546;-1:-1:-1;;;;;2550:79546:64;;;;56231:19;:::i;:::-;1148:1:50;;:::i;:::-;2772::66;;2707:73;:::o;55812:116:64:-;55873:40;2550:79546;55873:40;54770:27;2550:79546;;;;;;;55873:40;;2550:79546;55873:40;55760:417;56024:15;2550:79546;56010:29;;;56006:114;;56133:33;56231:19;2550:79546;56133:33;;55760:417;;;;;56006:114;56066:39;2550:79546;56066:39;54770:27;2550:79546;;;;;;;55873:40;54968:782;55485:167;2550:79546;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2550:79546:64;;;55485:167;;:::i;:::-;55671:68;55439:213;;;;;;;;55671:68;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;55671:68;;;;54968:782;;54770:27;;;;2550:79546;54770:27;2550:79546;54770:27;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10120:113:66;10188:34;;2550:79546:64;10188:34:66;;2550:79546:64;;;10188:34:66;8244:95;8305:23;2550:79546:64;8305:23:66;;2550:79546:64;8305:23:66;2550:79546:64;;;;;;;;;;;;;:::i;5061:1817::-;;;;2811:38:99;2550:79546:64;9187:17:69;2806:53:52;;;2550:79546:64;5148:82;;;;5061:1817;2550:79546;;;:::i;:::-;7019:10;2811:38:99;:::i;:::-;5339:1533:64;;;5061:1817;:::o;5339:1533::-;9342:26:69;2806:53:52;5384:98:64;;-1:-1:-1;3051:52:52;;6832:27:64;9851:16:69;6832:27:64;:::i;5384:98::-;5448:19;-1:-1:-1;5448:19:64;;-1:-1:-1;5448:19:64;5148:82;2550:79546;3051:52:52;;5148:82:64;;25234:4237;;2707:73:66;;:::i;:::-;8882:4;-1:-1:-1;;;;;2550:79546:64;;;8882:4:66;:::i;:::-;25826:11:64;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;25826:11;25914:4;9851:16:69;2806:53:52;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;9702:26:69;;25914:4:64;:::i;:::-;26413:73;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;26413:73;:::i;:::-;26532:15;28685:99;26532:15;;;;2550:79546;26556:26;:19;;;;;;2550:79546;26556:26;;:::i;:::-;26981:19;;27052:30;;;;26981:144;27052:30;;27096:19;;;;;;;26981:144;;:::i;:::-;2550:79546;27140:54;2550:79546;;2191:1:71;4860:199:70;958:1:71;7916:84:46;;4860:199:70;;27140:54:64;27136:890;;25234:4237;28685:99;;;;;;:::i;:::-;28626:158;;;;;28982:53;2550:79546;;7916:84:46;5365:197:70;958:1:71;7916:84:46;;5365:197:70;;28982:53:64;28978:487;;25234:4237;25454:23;;;;;;;25234:4237;:::o;28978:487::-;29190:264;2550:79546;;29135:28;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;29135:28;2550:79546;;;29257:10;29190:264;;:::i;:::-;28978:487;;;;;;;27136:890;27385:28;27859:156;2550:79546;;;27385:28;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;27385:28;27269:10;;27385:28;:::i;:::-;27721:17;27688:31;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;27688:31;27721:17;;:::i;:::-;27859:19;27934:30;;27982:19;;27859:156;;:::i;:::-;27136:890;;;;;81600:69;81644:18;;;;;;81950:144;82001:9;81997:69;;1019:819:94;82013:1:64;1019:819:94;;82013:1:64;1019:819:94;;81346:15:64;-1:-1:-1;;;;;81346:15:64;2550:79546;1019:819:94;;;82013:1:64;1019:819:94;;;;;;82013:1:64;1019:819:94;;;82013:1:64;1019:819:94;1192:349:50;551:66;2806:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;1316:93::-;1368:30;-1:-1:-1;1368:30:50;;-1:-1:-1;1368:30:50;1547:106;1640:5;551:66;3051:52:52;1547:106:50:o;2786:145:66:-;9187:17:69;2806:53:52;2550:79546:64;2837:88:66;;2786:145::o;2837:88::-;2894:20;-1:-1:-1;2894:20:66;;-1:-1:-1;2894:20:66;3450:119;;3544:17;3450:119;3544:17;:::i;:::-;2550:79546:64;;;;;;3543:18:66;2550:79546:64;-1:-1:-1;2550:79546:64;3543:18:66;;:::i;8289:494:90:-;;;;;8422:32;;;;;:::i;:::-;-1:-1:-1;;8468:37:90;;8464:313;;8289:494;;;;;;:::o;8464:313::-;8525:25;;;8521:132;;2550:79546:64;;-1:-1:-1;;;;;2550:79546:64;;;;7477:19:90;;;7473:84;;2550:79546:64;;;7571:21:90;;;7567:87;;7664:17;:33;:17;:24;:17;;;-1:-1:-1;;;;;2550:79546:64;;;7664:11:90;2550:79546:64;;;;;;;7664:17:90;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;7664:33:90;2550:79546:64;;8004:60:90;;;;;;2550:79546:64;;;8004:60:90;;-1:-1:-1;;;;;2550:79546:64;;;8004:60:90;;;2550:79546:64;;;;;;;;;;;;;;;8238:38:90;;;;7494:1;2550:79546:64;;;;;8004:60:90;;;;;;;;;8464:313;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;8238:38:90;;;;8464:313;;;;;;;8004:60;;;;;;:::i;:::-;;;:::i;:::-;;;;7567:87;7615:28;7494:1;7615:28;-1:-1:-1;;;;;2550:79546:64;;7519:27:90;2550:79546:64;;;55873:40;7473:84:90;7519:27;7494:1;7519:27;-1:-1:-1;;;;;2550:79546:64;;7519:27:90;2550:79546:64;;;55873:40;8521:132:90;-1:-1:-1;;;;;8577:61:90;;;;2550:79546:64;8577:61:90;2550:79546:64;;;;;;8577:61:90;;6402:966;;;;;-1:-1:-1;;;;;2550:79546:64;;;;6500:18:90;;;6496:80;;2550:79546:64;;;6590:16:90;;;6586:78;;6696:21;:15;;;-1:-1:-1;;;;;2550:79546:64;;;6696:9:90;2550:79546:64;;;;;;;6696:21:90;2550:79546:64;6731:20:90;;;6727:109;;2550:79546:64;;;6870:21:90;:15;;;-1:-1:-1;;;;;2550:79546:64;;;6696:9:90;2550:79546:64;;;;;;;6870:21:90;2550:79546:64;7095:19:90;:15;;;-1:-1:-1;;;;;2550:79546:64;;;6696:9:90;2550:79546:64;;;;;;;7095:19:90;2550:79546:64;;;;;;;;;7150:32:90;2550:79546:64;;7150:32:90;;;;2550:79546:64;;;;;;;;7150:32:90;;;;7307:54;;;;;2550:79546:64;;;7307:54:90;;-1:-1:-1;;;;;2550:79546:64;;;7307:54:90;;;2550:79546:64;;;;;;;;;;;;;-1:-1:-1;;2550:79546:64;;;-1:-1:-1;2550:79546:64;;;;7307:54:90;;;;;;;;;;;6402:966;:::o;7307:54::-;;;;;;:::i;6727:109::-;6774:51;6516:1;6774:51;-1:-1:-1;;;;;2550:79546:64;;6774:51:90;2550:79546:64;;;;;;;;;55873:40;6586:78:90;6629:24;6516:1;6629:24;-1:-1:-1;;;;;2550:79546:64;;7519:27:90;2550:79546:64;;;55873:40;6496:80:90;6541:24;6516:1;6541:24;-1:-1:-1;;;;;2550:79546:64;;7519:27:90;2550:79546:64;;;55873:40;9293:163:66;-1:-1:-1;;;;;2550:79546:64;;9604:15:66;2550:79546:64;9604:15:66;2550:79546:64;;1038:1:71;2550:79546:64;9604:15:66;2550:79546:64;;7916:84:46;;;9367:25:66;9363:87;;9293:163;:::o;9363:87::-;9415:24;9604:15;9415:24;;2550:79546:64;;9604:15:66;9415:24;5894:129;2550:79546:64;6394:25:66;;2550:79546:64;6375:15:66;:44;;:79;;;5894:129;5751:67;;-1:-1:-1;;;;;2550:79546:64;;-1:-1:-1;2550:79546:64;-1:-1:-1;2550:79546:64;;;-1:-1:-1;2550:79546:64;;7916:84:46;;;958:1:71;7916:84:46;;2958:30:71;;2550:79546:64;2790:99:71;;2958:30;2550:79546:64;3212:2:71;2550:79546:64;;;;;;;7592:82:66;;;5894:129;6800:73;;;;;;5894:129;:::o;6800:73::-;6846:16;-1:-1:-1;6846:16:66;-1:-1:-1;;;;;2550:79546:64;7519:27:90;2550:79546:64;;;55873:40;7592:82:66;7627:47;7648:26;;7608:66;7648:26;;6019:108:46;;;7627:47:66;:::i;:::-;2550:79546:64;;;;7608:66:66;6375:15;7608:66;;7592:82;;;;;5751:67;5794:13;-1:-1:-1;5794:13:66;;-1:-1:-1;5794:13:66;6375:79;2550:79546:64;7916:84:46;6423:15:66;2550:79546:64;7916:84:46;;;6375:79:66;;13206:573;2550:79546:64;;;;;;;;:::i;:::-;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1083:103:50;;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;;-1:-1:-1;2550:79546:64;13497:18:66;2550:79546:64;;;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;;-1:-1:-1;2550:79546:64;;;13570:14:66;2550:79546:64;;;;-1:-1:-1;2550:79546:64;;13604:11:66;2550:79546:64;;;-1:-1:-1;2550:79546:64;;;;;;;:::i;:::-;1947:24:73;;2002:26;;;:::i;:::-;1981:47;;2061:24;;;:::i;:::-;2038:47;;2127:24;;;:::i;:::-;2095:56;;2194:74;2550:79546:64;;;2194:74:73;:::i;:::-;2161:107;;2300:24;;;:::i;:::-;2278:46;;2550:79546:64;;1038:1:71;;7916:84:46;1038:1:71;7916:84:46;;;;2365:119:73;;;;13206:573:66;2365:190:73;;;;13206:573:66;-1:-1:-1;2586:13:73;;;;;;;13719:24:66;;;;;;;;;;;;;;13745:26;13719:24;13745:26;13719:24;-1:-1:-1;;;;;2550:79546:64;;;39682:18;2550:79546;;;;;;;13719:24:66;13745:26;-1:-1:-1;;;;;2550:79546:64;;;13745:20:66;2550:79546:64;;;;;;;13745:26:66;;;;:::i;:::-;1148:1:50;;:::i;2601:3:73:-;2663:15;;;;;;;;2755:33;2663:15;2720:20;2663:15;2550:79546:64;2649:33:73;2663:15;;:18;:15;:18;:15;;:18;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;2649:33:73;2550:79546:64;:::i;:::-;2720:20:73;2550:79546:64;;;;;;;;;;2720:20:73;2550:79546:64;2755:18:73;;:33;;;;;:::i;:::-;;;:::i;:::-;;2827:23;;;:::i;:::-;2802:48;:19;;;:48;:::i;:::-;2550:79546:64;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;2550:79546:64;;;;3059:78:73;;3800:23;;2550:79546:64;;;3800:69:73;;;;2601:3;3977:660;;;;2601:3;;;;;;2571:13;2550:79546:64;2571:13:73;;3977:660;2550:79546:64;4236:195:73;2550:79546:64;4157:23:73;2550:79546:64;4062:56:73;2550:79546:64;;4062:56:73;:::i;:::-;4157:20;;:23;:::i;:::-;2550:79546:64;;;4236:195:73;;:::i;:::-;4454:30;;4450:173;;3977:660;;;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;:::i;:::-;4450:173;;;;;;3800:69;2550:79546:64;;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;;3059:78;3114:8;;;;;;;;;;2365:190;2550:79546:64;;;;-1:-1:-1;958:1:71;7916:84:46;1192:1:71;7916:84:46;2550:79546:64;2365:190:73;;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;13206:573:66;2550:79546:64;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1083:103:50;;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;;;;13497:18:66;2550:79546:64;;;;;;;;;;;;;;13570:14:66;2550:79546:64;;;;;;;13604:11:66;2550:79546:64;;;;;;;;;;;:::i;:::-;1947:24:73;;2002:26;;;:::i;:::-;1981:47;;2061:24;;;:::i;:::-;2038:47;;2127:24;;;:::i;:::-;2095:56;;2194:74;2550:79546:64;;;2194:74:73;:::i;:::-;2161:107;;2300:24;;;:::i;:::-;2278:46;;2550:79546:64;;1038:1:71;;7916:84:46;1038:1:71;7916:84:46;;;;2365:119:73;;;;13206:573:66;2365:190:73;;;;13206:573:66;2550:79546:64;2586:13:73;;;;;;;13719:24:66;;;;;;;;;;;;;;13745:26;13719:24;13745:26;13719:24;-1:-1:-1;;;;;2550:79546:64;;;39682:18;2550:79546;;;;;;;2601:3:73;2663:15;;;;;;;;2755:33;2663:15;2720:20;2663:15;2550:79546:64;2649:33:73;2663:15;;:18;:15;:18;:15;;:18;:::i;2755:33::-;;2827:23;;;:::i;:::-;2802:48;:19;;;:48;:::i;:::-;2550:79546:64;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;2550:79546:64;;;;3059:78:73;;3800:23;;2550:79546:64;;;3800:69:73;;;;2601:3;3977:660;;;;2601:3;;;;;;2571:13;2550:79546:64;2571:13:73;;3977:660;2550:79546:64;4236:195:73;2550:79546:64;4157:23:73;2550:79546:64;4062:56:73;2550:79546:64;;4062:56:73;:::i;4236:195::-;4454:30;;4450:173;;3977:660;;;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;:::i;:::-;4450:173;;;;;;3800:69;2550:79546:64;;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;;3059:78;3114:8;;;;;;;;;;2365:190;2550:79546:64;;;;-1:-1:-1;958:1:71;7916:84:46;1192:1:71;7916:84:46;2550:79546:64;2365:190:73;;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;1418:149:40;1500:6;1496:65;;1418:149::o;1496:65::-;1529:21;;;;;;2550:79546:64;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;2550:79546:64;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;8800:610:43;;;2550:79546:64;;;9122:17:43;2550:79546:64;;;;9122:17:43;;;:::i;:::-;9185:21;;;:::i;:::-;9222:13;9234:1;9237:10;;;;;;9381:22;;;;;8800:610;:::o;9249:3::-;9289:10;2688:41;9289:10;2550:79546:64;9289:10:43;;;:::i;:::-;2550:79546:64;2689:22:43;9327:17;;;;:::i;:::-;2550:79546:64;9346:13:43;;;;:::i;:::-;2550:79546:64;2689:22:43;;:::i;:::-;2688:41;:::i;:::-;9268:92;;;;:::i;:::-;2550:79546:64;;9222:13:43;;2550:79546:64;;-1:-1:-1;2550:79546:64;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;17171:657:70:-;-1:-1:-1;;;;;;17433:291:70;17171:657;;;17433:291;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;17541:11:70;;;;2550:79546:64;;;;;:::i;:::-;17695:15:70;17541:11;17570:21;;;2550:79546:64;17648:29:70;;;17695:15;;;2550:79546:64;17570:21:70;2550:79546:64;17433:291:70;;;;;;;2550:79546:64;17433:291:70;;;;;;:::i;:::-;;2550:79546:64;;17433:291:70;;;;;;;-1:-1:-1;17433:291:70;;;17171:657;2550:79546:64;;17416:406:70;;17171:657::o;17416:406::-;17765:46;-1:-1:-1;17765:46:70;17433:291;-1:-1:-1;17765:46:70;17433:291;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;6574:856:73;6819:15;;;;;2550:79546:64;7033:13:73;-1:-1:-1;7048:13:73;;;;;;6574:856;;;;;:::o;7063:3::-;38442:19:64;7120:18:73;7395:17;1237:14:41;7120:18:73;7107:35;7120:21;:18;;;;;:21;:::i;:::-;;7107:35;:::i;:::-;7082:60;:19;;;;;:60;:::i;:::-;2550:79546:64;;-1:-1:-1;2550:79546:64;;;;-1:-1:-1;2550:79546:64;;1460:31:41;7395:17:73;;;:::i;:::-;2550:79546:64;7033:13:73;;6574:856;6819:15;;;;;2550:79546:64;7033:13:73;2550:79546:64;7048:13:73;;;;;;6574:856;;;;;:::o;7063:3::-;2550:79546:64;7120:18:73;7395:17;1237:14:41;7120:18:73;7107:35;7120:21;:18;;;;;:21;:::i;7107:35::-;7082:60;:19;;;;;:60;:::i;:::-;2550:79546:64;;;;;;;;;;1460:31:41;7395:17:73;;;:::i;:::-;2550:79546:64;7033:13:73;;2550:79546:64;;;;;;;:::i;:::-;-1:-1:-1;2550:79546:64;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;58547:1;2550:79546;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;41784:8110::-;;1083:103:50;;:::i;:::-;2550:79546:64;;;;:::i;:::-;42243:15;;;;;42291:31;42243:15;;2550:79546;;;;42291:31;:::i;:::-;42432;42478:11;;;2550:79546;;;;;;:::i;:::-;;;;:::i;:::-;42478:47;;42555:21;;;;2550:79546;;42607:31;2550:79546;;42607:31;:::i;:::-;42733:29;42673:175;42733:29;42478:11;42733:29;;;42780:25;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;-1:-1:-1;;;;;2550:79546:64;-1:-1:-1;2550:79546:64;2487:14:90;2550:79546:64;;;-1:-1:-1;2550:79546:64;;2402:112:90;;42780:25:64;42673:175;;:::i;:::-;9851:16:69;43519:65:64;9851:16:69;2806:53:52;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;9702:26:69;;2574:386:44;-1:-1:-1;2550:79546:64;;;;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;;;-1:-1:-1;2550:79546:64;2806:53:52;2574:386:44;;43519:65:64;43515:419;;42474:3712;46214:21;;;2550:79546;46200:35;;;46196:128;;46358:11;;;;;;;:::i;:::-;42243:15;48028:32;;;2550:79546;46423:3;2550:79546;;46401:20;;;;;46567:21;;;;;:::i;:::-;2550:79546;46630:17;;;:::i;:::-;46755:16;;;;:::i;:::-;2550:79546;46755:16;;47076:30;47135:22;47076:30;47135:19;47076:33;:30;;47010:169;47076:30;;;:33;:::i;:::-;2550:79546;47135:19;;;:22;:::i;:::-;2550:79546;47010:169;;:::i;:::-;47201:31;;;;;:::i;:::-;2550:79546;46751:737;47531:18;;:15;;;:18;:::i;:::-;2550:79546;47630:20;;:23;:20;;;:23;:::i;:::-;2550:79546;47615:38;;47611:147;;47853:12;;;48673:75;47853:12;;;;48700:47;47853:12;48008:236;47853:12;48064:180;47853:12;;2550:79546;47853:12;;;;48766:19;47853:12;;:::i;:::-;2550:79546;48142:17;;;;:::i;:::-;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;48064:180;;;:::i;:::-;2550:79546;;;48008:236;:::i;:::-;2550:79546;48673:23;:20;2550:79546;48673:20;;;:23;:::i;:::-;2550:79546;;;48700:47;;:::i;:::-;48673:75;;:::i;48766:19::-;2550:79546;46386:13;;47611:147;47719:20;:23;:20;47680:63;47719:20;;:23;:::i;:::-;2550:79546;47680:63;2550:79546;47680:63;-1:-1:-1;;;;;2550:79546:64;;;6774:51:90;2550:79546:64;;;;;;;;46751:737;47453:16;;;;;;:::i;:::-;2550:79546;46751:737;;46401:20;;;;;;;;;;;48910:8;46401:20;;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;48910:8;:::i;:::-;49692:195;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;49084:11;49109;49084;42243:15;49084:11;;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;;49097:10;49109:11;;:::i;:::-;49136:17;;:::i;:::-;49132:189;;46381:2429;49632:11;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;-1:-1:-1;;;;;2550:79546:64;49632:11;;:::i;:::-;49797:25;2550:79546;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;:::i;49797:25::-;2550:79546;49692:195;-1:-1:-1;;;;;2550:79546:64;;;;:::i;:::-;;;46214:21;2550:79546;;;;;;;49692:195;;;:::i;:::-;;;;1148:1:50;;:::i;:::-;42137:23:64;;;41784:8110;:::o;49132:189::-;49298:11;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;-1:-1:-1;;;;;2550:79546:64;49298:11;;:::i;:::-;49132:189;;46196:128;46258:55;2550:79546;46258:55;54770:27;2550:79546;;;;;;;;55873:40;43515:419;2550:79546;;;43632:52;2550:79546;;;;;;;;43632:52;:::i;:::-;43707:13;2550:79546;43744:3;2550:79546;;43722:20;;;;;43791:21;;43859:42;43791:21;;43859:42;43884:17;43791:21;;;:46;2550:79546;43791:21;;;;;:::i;:::-;2550:79546;43791:46;:::i;:::-;43771:66;;;;:::i;43884:17::-;2550:79546;43859:42;;;;:::i;:::-;2550:79546;43859:42;:::i;:::-;;;:::i;:::-;2550:79546;;43707:13;;43722:20;;;;;;;;;;;;43515:419;;42474:3712;2550:79546;;43969:41;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;43954:56;43969:41;;44026:57;2550:79546;;44026:57;:::i;:::-;44113:21;;;2550:79546;44148:42;;44257:20;;44293:434;44351:376;44257:20;;44113:21;44224:54;2550:79546;44257:20;;;44224:54;:::i;:::-;44204:17;;2550:79546;;;;44443:29;42478:11;44443:29;;;2550:79546;44687:22;2550:79546;44613:52;44566:25;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;44566:25;2550:79546;;44613:52;:::i;:::-;2550:79546;;-1:-1:-1;;;;;2550:79546:64;;;44687:22;44351:376;;:::i;:::-;2550:79546;;;44293:434;;;:::i;:::-;2550:79546;42474:3712;;43950:2236;44763:42;2550:79546;;;;;;;;:::i;:::-;;;;:::i;:::-;44748:57;44763:42;;44821:57;2550:79546;;44821:57;:::i;:::-;45159:358;44894:42;2550:79546;45003:20;;;45073:39;44970:54;45003:20;;44970:54;:::i;:::-;44950:17;;;2550:79546;;;;45073:20;:39;:::i;:::-;2550:79546;45038:74;2550:79546;;45038:74;;:::i;:::-;2550:79546;45231:29;45313:37;42478:11;45231:29;;;2550:79546;;45313:37;;;:::i;:::-;2550:79546;45411:52;45368:25;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;45368:25;2550:79546;;45411:52;:::i;:::-;2550:79546;45481:22;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;45481:22;45159:358;;:::i;:::-;45127:390;;42474:3712;;44744:1442;2550:79546;;45553:26;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;45538:41;45553:26;;45595:59;2550:79546;;45595:59;:::i;:::-;2550:79546;45817:68;:27;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;45817:68;45939:21;;;;2550:79546;46025:29;42478:11;46025:29;;;46076:15;;;;;;2550:79546;45817:292;45939:21;2550:79546;45817:292;;;;;;;2550:79546;45817:292;;45907:10;45817:292;;;;:::i;:::-;;;;;;;;;;2550:79546;;;;;;;45817:292;;;45534:652;45753:356;;;;42474:3712;;45817:292;;;;;;;;;;;2550:79546;45817:292;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;45534:652;46147:28;2550:79546;46147:28;;2550:79546;46147:28;2550:79546;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;18837:1504:70:-;;;;;;;;2550:79546:64;;;;-1:-1:-1;;;;;2550:79546:64;;;;19361:11:70;;;;2550:79546:64;;;;;:::i;:::-;19361:11:70;19470:29;;;19513:15;;;;;2550:79546:64;;;19266:272:70;;;;;2550:79546:64;19266:272:70;;;;;;;;;:::i;:::-;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;19266:272:70;;;-1:-1:-1;19266:272:70;;;;;;;;;-1:-1:-1;;;19266:272:70;;;18837:1504;2550:79546:64;;;;19553:76:70;;18837:1504;19549:159;;7916:84:46;;;958:1:71;7916:84:46;;2550:79546:64;19806:94:70;;19915:13;;-1:-1:-1;19915:13:70;;-1:-1:-1;19915:13:70;7916:84:46;;;19910:382:70;20302:32;;;;18837:1504;:::o;19968:3::-;2550:79546:64;;19930:36:70;;;;;19991:28;;;;:::i;:::-;2550:79546:64;;20022:20:70;;;:23;:20;;;:23;:::i;:::-;2550:79546:64;-1:-1:-1;19987:295:70;;-1:-1:-1;2550:79546:64;;19968:3:70;19915:13;;19987:295;20226:23;20136:15;20176:28;20136:15;:18;;:15;;;20072:195;20136:15;;;:18;:::i;:::-;20176:28;;:::i;:::-;2550:79546:64;20226:20:70;;:23;:::i;:::-;2550:79546:64;20072:195:70;-1:-1:-1;20072:195:70;-1:-1:-1;;;;;2550:79546:64;;;6774:51:90;2550:79546:64;;;;;;;;19930:36:70;;;19549:159;19652:45;-1:-1:-1;19652:45:70;19266:272;-1:-1:-1;19652:45:70;19553:76;2550:79546:64;;;;;19573:56:70;;19553:76;;19266:272;;;;;;;;;-1:-1:-1;19266:272:70;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;15171:545:64;2550:79546;;;15171:545;2550:79546;;;;;;;;;;;;;15657:52;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;;-1:-1:-1;2550:79546:64;;15552:65;2550:79546;;;;-1:-1:-1;2550:79546:64;;;;;;;-1:-1:-1;2550:79546:64;;15305:26;15379:15;15451:58;2550:79546;15379:15;;;;2550:79546;15363:57;-1:-1:-1;;;;;15396:23:64;;2550:79546;15396:23;;2550:79546;;15363:57;;:::i;:::-;2550:79546;;15467:15;15484:24;2550:79546;15484:24;;2550:79546;;15451:58;;:::i;:::-;2550:79546;;15552:65;:::i;:::-;2550:79546;;;15657:52;:::i;:::-;2550:79546;;15171:545::o;2550:79546::-;;;;:::i;:::-;;:::o;15722:700::-;;;;2550:79546;;;;;;;:::i;:::-;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;;;;;;;;-1:-1:-1;2550:79546:64;;;;-1:-1:-1;2550:79546:64;;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;:::i;:::-;;;16128:29;;2550:79546;16193:29;;;2550:79546;;;;16294:18;;2550:79546;16376:24;;;2550:79546;16030:385;2550:79546;;:::i;:::-;16030:385;;;:::i;:::-;2550:79546;16030:385;;2550:79546;;16030:385;;2550:79546;;16030:385;;2550:79546;;16030:385;;2550:79546;16338:10;2550:79546;16030:385;;2550:79546;;16030:385;;2550:79546;15722:700;:::o;2550:79546::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;9557:350:70;9678:44;9557:350;;2550:79546:64;-1:-1:-1;;;;;;2550:79546:64;;;;9678:44:70;;;;;;;2550:79546:64;9678:44:70;;2550:79546:64;9678:44:70;;;2550:79546:64;;;;;;:::i;:::-;;;;;;;9678:44:70;2550:79546:64;;9678:44:70;;;;;;;-1:-1:-1;9678:44:70;;;9557:350;2550:79546:64;;9674:227:70;;9557:350::o;9674:227::-;9855:35;-1:-1:-1;9855:35:70;9678:44;-1:-1:-1;9855:35:70;9678:44;;;;;;;;;;;;;;:::i;:::-;;;;16599:1317:64;;;;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;17000:41;;17060:30;1946:22:43;465:4:47;17060:30:64;17212:38;17060:30;838:5:47;17060:30:64;;2550:79546;17141:30;17212:19;17141:49;:30;;;;2550:79546;;17141:49;;:::i;:::-;2550:79546;17212:19;;;2550:79546;;17212:38;;:::i;1946:22:43:-;838:5:47;:::i;:::-;2550:79546:64;16599:1317;:::o;17000:909::-;2688:41:43;17287:30:64;17831:60;:39;17287:30;2689:22:43;17287:30:64;;2550:79546;17366:30;17831:19;17366:50;17397:18;17366:30;;;;17397:18;;2550:79546;;;17366:50;;:::i;:::-;2550:79546;17831:19;;;2550:79546;;17831:39;;:::i;:::-;2550:79546;17831:60;:::i;:::-;2689:22:43;;:::i;2550:79546:64:-;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;8443:856:70:-;;;2550:79546:64;;8443:856:70;;-1:-1:-1;;;;;2550:79546:64;;;;;8709:136:70;;;;;;;2550:79546:64;8709:136:70;;2550:79546:64;8709:136:70;;;2550:79546:64;;;;;;:::i;:::-;;;;;;;;;;;8709:136:70;2550:79546:64;;8709:136:70;;;;;;;-1:-1:-1;;;8709:136:70;;;8443:856;2550:79546:64;;8856:93:70;;19917:10:31;9153:38:70;;9149:109;;8443:856;:::o;9149:109::-;9214:33;-1:-1:-1;9214:33:70;8709:136;-1:-1:-1;9214:33:70;8856:93;8899:39;-1:-1:-1;8899:39:70;8709:136;-1:-1:-1;8899:39:70;8709:136;;;;;;2550:79546:64;8709:136:70;2550:79546:64;8709:136:70;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1083:103:50;-1:-1:-1;1083:103:50;;;;;;;:::i;:::-;2550:79546:64;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;19189:41;19185:325;;1083:103:50;19543:34:64;;;;;;2550:79546;;19543:34;:::i;:::-;19743:20;19733:54;19743:20;;;2550:79546;19733:38;:31;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;19733:38;2550:79546;;;19733:54;;;;;;2550:79546;19733:54;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;19733:54:64;;;1083:103:50;19706:81:64;;19821:24;;;:::i;:::-;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;20225:41;;20502:29;2550:79546;20502:29;;2550:79546;;;20659:620;20724:30;;;;21205:60;:39;20724:50;20755:18;;;2550:79546;;;20724:50;;:::i;:::-;2550:79546;21205:19;;;;;2550:79546;;21205:39;;:::i;:60::-;20659:620;;;:::i;:::-;21325:30;;;;2550:79546;21294:83;;;21411:24;21205:19;21411:24;;2550:79546;21396:39;;;21392:134;;20221:2688;;2550:79546;22993:23;;2550:79546;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;23018:11;;;;:::i;:::-;23054:24;;2550:79546;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;23080:12;;;;:::i;:::-;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;23377:215;;;;;:::i;:::-;23315:28;;;;;23345;2550:79546;23345:28;2550:79546;;;;;;;23054:24;23724:20;;;;;;;:39;;;;:::i;:::-;2550:79546;23724:53;;;;:::i;:::-;2550:79546;;23724:84;;;:::i;:::-;23822:19;;;;:::i;:::-;23907:18;;2550:79546;;;23939:20;;;;:40;;;;:::i;:::-;2550:79546;23939:55;;;;:::i;:::-;24008:19;;;;:::i;:::-;2550:79546;;-1:-1:-1;;;;;2550:79546:64;;;;;39682:18;2550:79546;;;;;24356:20;;;2550:79546;;24356:39;;;:::i;:::-;2550:79546;24409:29;;;;;;2550:79546;;24409:48;;;:::i;:::-;2550:79546;24308:159;;;:::i;:::-;2550:79546;;24274:31;;;2550:79546;;;;;;;;;;24274:31;2550:79546;24560:20;2550:79546;;24560:40;;;:::i;:::-;2550:79546;24614:29;;2550:79546;;24614:49;;;:::i;:::-;2550:79546;24512:161;;;:::i;:::-;2550:79546;;24477:32;;2550:79546;;;;;;;;;;24477:32;2550:79546;;;;;;23054:24;24899:27;;;2550:79546;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;24721:257;;2550:79546;;24721:257;1148:1:50;;;;;;:::i;21392:134:64:-;21462:49;-1:-1:-1;21462:49:64;54770:27;2550:79546;;;;;;;55873:40;20221:2688;22169:27;;;;;22118:150;22169:27;22283:61;22169:27;;2550:79546;5832:87:47;;;;;;;;22118:150:64;;;:::i;:::-;2550:79546;;;;22283:61;:::i;:::-;22535:30;22472:182;22535:49;:30;;;;2550:79546;;22535:49;;:::i;:::-;2550:79546;22602:38;:19;;;;2550:79546;;22602:38;;:::i;:::-;2550:79546;22472:182;;;:::i;:::-;22721:30;;;;2550:79546;22669:83;;22785:24;22602:19;22785:24;;2550:79546;22771:38;;;22767:132;;20221:2688;;;19733:54;;;;;;;;;;;;;;;:::i;:::-;;;;;19185:325;19345:34;;;19428:71;19345:69;2550:79546;;19386:27;;;2550:79546;19345:69;;:::i;:::-;2550:79546;;;;;19428:71;:::i;:::-;2550:79546;;19185:325;;2550:79546;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;:::i;10826:2303:70:-;;;;;;;2550:79546:64;;;;;:::i;:::-;;;;:::i;:::-;11281:41:70;;11338:25;;;;2550:79546:64;11281:177:70;;;2550:79546:64;;;;;;:::i;:::-;11653:23:70;;;;;;;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;11704:24:70;;;;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;11876:29:70;;;;;;2550:79546:64;;11876:44:70;;;:::i;:::-;2550:79546:64;11963:29:70;;11993:14;;;2550:79546:64;11963:45:70;;;:::i;:::-;2550:79546:64;12190:20:70;11993:14;12190:20;;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;12238:24:70;;;;2550:79546:64;;;:::i;:::-;11566:711:70;;;;;:::i;:::-;-1:-1:-1;;;;;2550:79546:64;11993:14:70;11566:711;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;11566:711:70;;;2550:79546:64;11704:24:70;11566:711;;2550:79546:64;11876:29:70;11566:711;;2550:79546:64;11566:711:70;;;2550:79546:64;12238:24:70;11566:711;;2550:79546:64;11566:711:70;;;2550:79546:64;11566:711:70;;;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;11566:711:70;;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;11566:711:70;;;2550:79546:64;11566:711:70;;;2550:79546:64;;;11527:760:70;;;;;2550:79546:64;11527:760:70;;;;;;;;;:::i;:::-;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;11527:760:70;;2550:79546:64;11527:760:70;;;;;;;2550:79546:64;;;11527:760:70;;;11281:177;2550:79546:64;;;12298:188:70;;958:1:71;7916:84:46;;;2550:79546:64;12584:100:70;;2550:79546:64;;;;;;:::i;:::-;;;;:::i;:::-;12712:41:70;:103;;;11281:177;12711:227;;;;11281:177;12694:380;;13084:38;10826:2303;:::o;12694:380::-;11566:711;13038:24;2550:79546:64;12970:93:70;2550:79546:64;12970:93:70;54770:27:64;2550:79546;;;;;;;;55873:40;12711:227:70;2550:79546:64;7916:84:46;2550:79546:64;;;;;:::i;:::-;;;;:::i;:::-;12833:42:70;:104;;12711:227;12833:104;12913:24;11566:711;12913:24;;2550:79546:64;12879:58:70;;12711:227;;12712:103;12791:24;11566:711;12791:24;;2550:79546:64;12757:58:70;;12712:103;;12584:100;12647:26;;;;:::o;12298:188::-;12441:34;2550:79546:64;12441:34:70;11527:760;2550:79546:64;12441:34:70;11527:760;;;;;;;;;;;-1:-1:-1;11527:760:70;;;;;;:::i;:::-;;;;;;;11281:177;11432:25;;;;2550:79546:64;11281:177:70;;;;;;10464:315:66;-1:-1:-1;;;;;2550:79546:64;;;;;-1:-1:-1;2550:79546:64;10575:13:66;2550:79546:64;;;;-1:-1:-1;2550:79546:64;;;;;10575:46:66;;;10571:202;;10464:315;;:::o;10571:202::-;10711:51;-1:-1:-1;10711:51:66;;2550:79546:64;;;;-1:-1:-1;10711:51:66;56530:199:64;;56637:20;-1:-1:-1;56624:99:64;;56530:199;:::o;56624:99::-;-1:-1:-1;;;;;56680:32:64;;;;2550:79546;56680:32;2550:79546;;56680:32;;2550:79546;;;;;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;57131:8001::-;;;;2550:79546;;;:::i;:::-;57387:25;;;;;;57942:44;;57970:15;;;:::i;:::-;2550:79546;;57942:44;;;;2550:79546;57942:44;;;;;2550:79546;;;;;;;;57942:44;;2550:79546;-1:-1:-1;;;;;2550:79546:64;;57942:44;;;;;;:48;:44;2550:79546;57942:44;;;57383:1195;57942:48;;:::i;:::-;57887:104;57383:1195;;58605:34;;-1:-1:-1;;;;;2550:79546:64;;;58605:20;2550:79546;;;;;;;58605:34;2550:79546;58917:17;;;:::i;:::-;58913:109;;2550:79546;;;;;;1616:3:41;2550:79546:64;;;;59036:54;;;;;2550:79546;;;;65051:18;2550:79546;59472:152;2550:79546;59524:51;-1:-1:-1;;;;;2550:79546:64;1237:14:41;2550:79546:64;65080:45;2550:79546;1616:3:41;2550:79546:64;;1460:31:41;;59524:51:64;:::i;:::-;59472:152;:::i;:::-;59638:34;;;;-1:-1:-1;;;;;2550:79546:64;;;58605:20;2550:79546;;;;;;;59638:34;2550:79546;65051:18;:::i;:::-;2550:79546;65080:45;:::i;59032:5982::-;60076:32;;;;2550:79546;60076:32;;;2550:79546;:::i;:::-;60244:25;;;61317:71;61318:57;61215;;;;:::i;:::-;61318:29;;;:::i;:::-;:57;:::i;:::-;61317:71;:::i;:::-;2550:79546;-1:-1:-1;;;;;2550:79546:64;;61458:24;;;;;;:::i;:::-;2550:79546;;;61525:61;;;;;2550:79546;;;61580:4;2550:79546;;;;;61525:61;;2550:79546;;;;;;-1:-1:-1;;61525:61:64;;;;;;64699:239;61525:61;;64847:77;61525:61;64847:58;-1:-1:-1;;;;;61525:61:64;;;;;65080:45;61525:61;;;64063:21;61525:61;65051:18;61525:61;64751:51;61525:61;64751:78;61525:61;1237:14:41;61525:61:64;2550:79546;61525:61;;;60240:3221;61501:85;60240:3221;;;;2550:79546;63717:54;;;;;:::i;:::-;64063:21;:::i;:::-;1460:31:41;64751:51:64;:::i;:::-;:78;:::i;:::-;64847:58;;:::i;:77::-;64699:239;;:::i;61525:61::-;;;;;;;;;;;;;;:::i;:::-;;;;60240:3221;62502:54;;62598:66;62599:52;62502:54;;;;:::i;:::-;62599:27;;;:::i;:::-;:52;:::i;62598:66::-;2550:79546;;;62917:47;;;;;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;62917:47;;2550:79546;;;62917:47;2550:79546;;;;62917:47;;;;;;63320:24;62917:47;2550:79546;62917:47;;;60240:3221;63320:24;;;;:::i;:::-;2550:79546;;;63391:55;;62917:47;63391:55;;2550:79546;;;63440:4;2550:79546;;;;;;;;;;;;;-1:-1:-1;;63391:55:64;;;;;;;65080:45;63391:55;64847:77;63391:55;64847:58;63391:55;;;-1:-1:-1;;;;;63391:55:64;;1237:14:41;63391:55:64;;;;;;;65051:18;63391:55;;64751:51;63391:55;64699:239;63391:55;;64751:78;63391:55;64063:21;63391:55;2550:79546;63391:55;;;60240:3221;63364:82;;60240:3221;;;;;63391:55;;;;;;-1:-1:-1;63391:55:64;;;;;;:::i;:::-;;;;;62917:47;;;;;;;;;;;;;;:::i;:::-;;;;58913:109;-1:-1:-1;58950:61:64;;-1:-1:-1;;;58950:61:64:o;57942:44::-;;;;;;;;;;;;;;:::i;:::-;;;;57383:1195;58508:41;;58533:15;;;:::i;:::-;2550:79546;;58508:41;;;;2550:79546;58508:41;;;;;2550:79546;;;;;;;;58508:41;;2550:79546;-1:-1:-1;;;;;2550:79546:64;;58508:41;;;;;;:45;:41;2550:79546;58508:41;;;57383:1195;58508:45;;:::i;:::-;57383:1195;;;58508:41;;;;;;;;;;;;;;:::i;:::-;;;;65538:6987;;;2550:79546;;;:::i;:::-;65796:25;;;;;;;66347:43;;66374:15;;;:::i;:::-;2550:79546;;66347:43;;;;2550:79546;66347:43;;;;;2550:79546;;;;;;;;66347:43;;2550:79546;-1:-1:-1;;;;;2550:79546:64;;66347:43;;;;;;:47;:43;2550:79546;66347:43;;;:47;;:::i;:::-;66292:103;65792:1205;;67024:34;;-1:-1:-1;;;;;2550:79546:64;;;58605:20;2550:79546;;;;;;;67024:34;2550:79546;67334:17;;;:::i;:::-;67330:109;;1237:14:41;;;;;;;;;;1460:31;;;;67453:53:64;;;;;2550:79546;;;;-1:-1:-1;;;;;67878:149:64;2550:79546;;72498:19;2550:79546;67961:52;2550:79546;72417:40;2550:79546;1616:3:41;2550:79546:64;67961:52;:::i;:::-;1460:31:41;;2550:79546:64;67878:149;:::i;:::-;68041:34;;;;-1:-1:-1;;;;;2550:79546:64;;;58605:20;2550:79546;;;;;;;68041:34;2550:79546;67449:4958;2550:79546;72417:40;:::i;:::-;72498:19;:::i;67449:4958::-;68480:32;;;;;;2550:79546;68480:32;;2550:79546;:::i;:::-;68648:25;;;69682:65;69683:51;69586:54;;;;:::i;69682:65::-;2550:79546;;;69792:72;;;;;2550:79546;;;69843:4;2550:79546;;;;;;;;;;;;69792:72;2550:79546;;;-1:-1:-1;;;;;;2550:79546:64;;69792:72;;;;;;72092:239;69792:72;;72241:76;69792:72;72241:52;69792:72;72144:79;69792:72;;-1:-1:-1;;;;;72498:19:64;69792:72;;71421:21;69792:72;;72417:40;69792:72;;;;;;72144:57;69792:72;2550:79546;69792:72;;;68644:2484;69765:99;68644:2484;;;;2550:79546;71421:21;;:::i;:::-;72144:57;:::i;:79::-;2550:79546;1616:3:41;2550:79546:64;72241:52;:::i;72092:239::-;72345:34;;;;-1:-1:-1;;;;;2550:79546:64;;;58605:20;2550:79546;;;;;;;72345:34;2550:79546;67449:4958;;69792:72;;;;;;;;;;;;;;:::i;:::-;;;;68644:2484;70922:72;70923:58;70820:57;;;;:::i;70922:72::-;2550:79546;;;71036:77;;;;;2550:79546;;;71092:4;2550:79546;;;;;;;;;;;71036:77;2550:79546;;;-1:-1:-1;;;;;;2550:79546:64;;71036:77;;;;;;;72092:239;71036:77;;72241:76;-1:-1:-1;;;;;72241:52:64;71036:77;72144:79;71036:77;;;72498:19;71036:77;71421:21;71036:77;;72417:40;71036:77;;;;;;;;72144:57;71036:77;2550:79546;71036:77;;;68644:2484;71012:101;68644:2484;;;;;71036:77;;;;;;;;;;;;;;:::i;:::-;;;;65792:1205;66923:45;;66952:15;;;:::i;:::-;2550:79546;;66923:45;;;;2550:79546;66923:45;;;;;2550:79546;;;;;;;;66923:45;;2550:79546;-1:-1:-1;;;;;2550:79546:64;;66923:45;;;;;;:49;:45;2550:79546;66923:45;;;:49;;:::i;:::-;65792:1205;;;6697:118:44;3831:53:52;;2550:79546:64;6806:1:44;2550:79546:64;;;;;;;3051:52:52;6697:118:44:o;2966:315::-;;-1:-1:-1;2550:79546:64;;;;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;;25914:4;2550:79546;-1:-1:-1;2550:79546:64;3051:52:52;2966:315:44:o;6714:614:43:-;;;2550:79546:64;;;7038:17:43;2550:79546:64;;;;7038:17:43;;;:::i;:::-;7101:21;;;:::i;:::-;7138:13;7150:1;7153:10;;;;;;7299:22;;;;;6714:614;:::o;7165:3::-;7205:10;465:4:47;838:5;7205:10:43;2550:79546:64;7205:10:43;;;:::i;:::-;2550:79546:64;1946:22:43;7245:17;;;;:::i;:::-;2550:79546:64;7264:13:43;;;;:::i;838:5:47:-;2550:79546:64;7184:94:43;;;;:::i;:::-;2550:79546:64;;7138:13:43;;2550:79546:64;;-1:-1:-1;2550:79546:64;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;13587:644:70:-;;-1:-1:-1;;;;;;13842:288:70;13587:644;;;;13842:288;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;13947:11:70;;;;2550:79546:64;;;;;:::i;:::-;14101:15:70;13947:11;14014:22;;;2550:79546:64;14054:29:70;;;14101:15;;;2550:79546:64;;;13842:288:70;;;;;;;2550:79546:64;13842:288:70;;;;;;:::i;:::-;;2550:79546:64;;13842:288:70;;;;;;;-1:-1:-1;13842:288:70;;;13587:644;2550:79546:64;;13825:400:70;;13587:644::o;13825:400::-;14171:43;-1:-1:-1;14171:43:70;13842:288;-1:-1:-1;14171:43:70;13842:288;;;;;;;;;;;;;;:::i;:::-;;;;2550:79546:64;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;30165:6883::-;;;1083:103:50;;:::i;:::-;2550:79546:64;;;:::i;:::-;30616:15;;;;30663:31;30616:15;;2550:79546;;;;30663:31;:::i;:::-;30850:11;;;2550:79546;;;;;;:::i;:::-;;;;:::i;:::-;30850:44;;30925:22;2550:79546;30925:22;;2550:79546;31082:31;2550:79546;;31082:31;:::i;:::-;31207:29;31148:175;31207:29;30850:11;31207:29;;;31254:25;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;31254:25;31148:175;;:::i;:::-;30846:2980;;2550:79546;33915:22;;2550:79546;33900:37;;;33896:133;;34063:12;;;;;;;:::i;:::-;30616:15;35719:32;;;2550:79546;34129:3;2550:79546;;;34107:20;;;;;34148:19;34270:20;34148:19;34270:20;:::i;:::-;2550:79546;34332:16;;;:::i;:::-;34456:15;;;;:::i;:::-;2550:79546;34456:15;;34716:166;34779:30;;34838:22;34779:30;34838:19;34779:33;:30;;;;;:33;:::i;34838:22::-;2550:79546;34716:166;;:::i;:::-;34905:29;;;;;:::i;:::-;2550:79546;34452:735;35230:18;;:15;;;:18;:::i;:::-;35329:19;;;:22;:19;;;:22;:::i;:::-;2550:79546;35315:36;;35311:142;;35545:11;;;36311:72;35545:11;36311:37;35545:11;;;;35699:236;35545:11;35755:180;35545:11;;2550:79546;35545:11;;;;36401:19;35545:11;;:::i;35699:236::-;2550:79546;36311:23;:20;2550:79546;36311:20;;;:23;:::i;:::-;2550:79546;36311:37;:::i;:::-;2550:79546;;36311:72;;:::i;36401:19::-;2550:79546;34092:13;;35311:142;35415:19;:22;:19;35378:60;35415:19;;:22;:::i;:::-;2550:79546;35378:60;2550:79546;35378:60;-1:-1:-1;;;;;2550:79546:64;;;6774:51:90;2550:79546:64;;;;;;;;34452:735;35153:15;;;;;:::i;:::-;2550:79546;34452:735;;34107:20;;;;;;;;;;;;36545:8;34107:20;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;36545:8;36851:190;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;;36779:9;36790:12;36779:9;30616:15;36779:9;;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;;36790:12;;:::i;:::-;36952:25;2550:79546;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;:::i;36952:25::-;2550:79546;36851:190;-1:-1:-1;;;;;2550:79546:64;;;;:::i;:::-;;;35329:19;2550:79546;;;;;;;36851:190;;;:::i;33896:133::-;33960:58;2550:79546;33960:58;54770:27;2550:79546;;;;;;;55873:40;30846:2980;31359:25;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;31344:40;31359:25;;31400:46;2550:79546;;31400:46;:::i;:::-;31480:42;2550:79546;;31480:42;:::i;:::-;31536:16;2550:79546;31566:40;31340:2486;30846:2980;;31340:2486;2550:79546;31642:27;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;31627:42;31642:27;;31685:57;2550:79546;;31685:57;:::i;:::-;32083:294;31759:40;32022:12;32001:19;;;;;32022:12;:::i;:::-;30850:11;32143:29;;;2550:79546;32228:25;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;32228:25;32271:52;2550:79546;;32271:52;:::i;:::-;2550:79546;32341:22;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;32341:22;32083:294;;:::i;:::-;32050:327;;31623:2203;30846:2980;;31623:2203;2550:79546;;32413:39;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;32398:54;32413:39;;2550:79546;;;32468:57;2550:79546;;32468:57;:::i;:::-;2550:79546;32557:22;;2550:79546;32613:54;;;;:::i;:::-;32736:432;32793:375;32593:17;;;2550:79546;;;;32682:40;;32883:29;;30850:11;32883:29;;;2550:79546;33128:22;2550:79546;33054:52;33007:25;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;33128:22;32793:375;;:::i;:::-;2550:79546;;;32736:432;;;:::i;:::-;2550:79546;30846:2980;;32394:1432;2550:79546;33204:23;2550:79546;;;;;:::i;:::-;;;;:::i;:::-;33189:38;33204:23;;33243:56;2550:79546;;33243:56;:::i;:::-;2550:79546;33463:65;:27;2550:79546;;;-1:-1:-1;;;;;2550:79546:64;;;33463:65;2550:79546;33624:22;;2550:79546;33668:29;30850:11;33668:29;;;33719:15;;;;;;2550:79546;33463:289;2550:79546;;33463:289;;;;;;;2550:79546;33463:289;;33550:10;33204:23;33463:289;;;:::i;:::-;;;;;;;;;;2550:79546;;;;;;;33463:289;;;33185:641;33399:353;;;;33185:641;30846:2980;;33463:289;;;;;;;;;;;2550:79546;33463:289;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;33185:641;33790:25;2550:79546;33790:25;33204:23;2550:79546;33790:25;2550:79546;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;15237:1479:70:-;;;;;;;;2550:79546:64;;;;-1:-1:-1;;;;;2550:79546:64;;;;15750:11:70;;;2550:79546:64;;;;;:::i;:::-;15750:11:70;15858:29;;;15901:15;;;;2550:79546:64;;;;;;15658:268:70;;;;;2550:79546:64;15658:268:70;;;;;;;;;:::i;:::-;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;15658:268:70;;;-1:-1:-1;15658:268:70;;;;;;;;;-1:-1:-1;;;15658:268:70;;;15237:1479;2550:79546:64;;;;15941:74:70;;15237:1479;15937:154;;7916:84:46;;;958:1:71;7916:84:46;;2550:79546:64;16189:93:70;;16297:13;;;;;;;-1:-1:-1;16292:376:70;7916:84:46;;;16292:376:70;16678:31;;;;;15237:1479;:::o;16349:3::-;2550:79546:64;;16312:35:70;;;;;16372:27;;;;:::i;:::-;2550:79546:64;16402:19:70;;;;:22;:19;;;:22;:::i;:::-;2550:79546:64;-1:-1:-1;16368:290:70;;-1:-1:-1;2550:79546:64;;16349:3:70;16297:13;;16368:290;16514:15;;16603:22;16514:15;16554:27;16514:15;:18;;16451:192;16514:15;;;;;:18;:::i;16603:22::-;2550:79546:64;16451:192:70;-1:-1:-1;16451:192:70;-1:-1:-1;;;;;2550:79546:64;;;6774:51:90;2550:79546:64;;;;;;;;16312:35:70;;;15937:154;16038:42;-1:-1:-1;16038:42:70;15658:268;-1:-1:-1;16038:42:70;15941:74;2550:79546:64;;;;;15961:54:70;;15941:74;;15658:268;;;;;;;;;-1:-1:-1;15658:268:70;;;;;;:::i;:::-;;;;;;3804:110:66;3891:15;;3804:110;3891:15;:::i;:::-;;;:::i;15788:287::-;;2550:79546:64;15932:3:66;2550:79546:64;;15913:17:66;;;;;-1:-1:-1;;;;;15955:9:66;;;;;:::i;:::-;2550:79546:64;;;;;15955:18:66;15951:65;;2550:79546:64;;15898:13:66;;15913:17;-1:-1:-1;;;;;15913:17:66;16043:25;2550:79546:64;16043:25:66;2550:79546:64;16043:25:66;2550:79546:64;;;16043:25:66;34375:314:111;34568:16;34552:33;;34548:105;;34375:314;:::o;34548:105::-;34608:34;;;;2550:79546:64;;34608:34:111;;4346:904:66;4485:10;;4481:23;;-1:-1:-1;;;;;9520:18:69;2550:79546:64;;;4494:1:66;2550:79546:64;;;;4708:15:66;2550:79546:64;4494:1:66;2550:79546:64;2806:53:52;4708:15:66;;;:::i;:::-;4738:9;;;;9342:26:69;;3831:53:52;;2550:79546:64;-1:-1:-1;;2550:79546:64;;;;;;;3051:52:52;4734:423:66;4494:1;2550:79546:64;;;;4494:1:66;2550:79546:64;3051:52:52;4346:904:66:o;4734:423::-;;4940:217;5113:31;9342:26:69;5113:31:66;:::i;:::-;4734:423;;4481:23;4497:7;;:::o;2657:309:90:-;-1:-1:-1;;;;;2550:79546:64;2657:309:90;2550:79546:64;;;;;;2822:16:90;2550:79546:64;;2854:24:90;;;;-1:-1:-1;;2854:24:90;:::o;2818:142::-;2916:33;2550:79546:64;2916:24:90;2550:79546:64;;;;2916:11:90;2550:79546:64;;;;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;2916:33:90;2550:79546:64;2909:40:90;:::o;2550:79546:64:-;;;;;;;;;;;;;;;;;;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;2550:79546:64;;;;:::i;:::-;;;-1:-1:-1;2550:79546:64;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;:::o;4659:1499:73:-;4963:20;;;;;2550:79546:64;5006:13:73;-1:-1:-1;5021:13:73;;;;;;4659:1499;;;;;;:::o;5036:3::-;5070:15;:18;;2550:79546:64;5070:15:73;;;;;:18;:::i;:::-;5188:30;5127:20;;;2550:79546:64;;;;;;;;;;5127:20:73;2550:79546:64;1237:14:41;1460:31;1371:127;;5188:30:73;5423:23;:20;;;:23;:::i;:::-;2550:79546:64;5404:42:73;;5400:565;;5036:3;6054:20;;6002:139;6054:23;:20;;;:23;:::i;:::-;2550:79546:64;6095:32:73;:29;;;;;:32;:::i;:::-;2550:79546:64;6002:139:73;;:::i;:::-;5979:20;;;2550:79546:64;;;;;;;;;;5979:20:73;2550:79546:64;;5006:13:73;;5400:565;5777:173;5736:38;5680;5841:91;5889:42;5680:38;;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;5680:38:73;2550:79546:64;5908:20:73;:23;:20;;;:23;:::i;:::-;2550:79546:64;5889:42:73;;:::i;:::-;2550:79546:64;6095:29:73;2550:79546:64;5841:91:73;:::i;:::-;5777:173;;:::i;:::-;5736:38;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;5736:38:73;2550:79546:64;5400:565:73;;;;1573:170:40;1666:6;;;;;1573:170;;1666:16;;1573:170;1662:75;;;;1573:170::o;1666:16::-;1676:6;;;-1:-1:-1;1666:16:40;;;;2550:79546:64;;465:4:47;2550:79546:64;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;7436:424:73:-;2550:79546:64;;;;;:::i;:::-;;;;:::i;:::-;7589:31:73;;;7636:21;;465:4:47;7585:269:73;7436:424::o;7585:269::-;2550:79546:64;;7691:19:73;2550:79546:64;;:::i;:::-;7678:32:73;7691:19;;7733:22;:30;2550:79546:64;7733:22:73;:32;:22;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;;;7733:30:73;2550:79546:64;;7733:32:73;;;;2550:79546:64;7733:32:73;;;;;;;;;2550:79546:64;7733:32:73;;;7726:39;7674:180;7436:424::o;7733:32::-;;;;:22;:32;:22;:32;;;;;;;:::i;7674:180::-;7803:40;2550:79546:64;7803:40:73;;2550:79546:64;7803:40:73;7866:704;;;8372:29;465:4:47;838:5;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;2550:79546:64;1946:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;2550:79546:64;8522:31:73;:19;;;;;:31;:::i;838:5:47:-;2550:79546:64;8372:29:73;;;:191;:::i;7866:704::-;;;8372:29;2688:41:43;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;2550:79546:64;2689:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;2550:79546:64;8522:31:73;:19;;;;;:31;:::i;2688:41:43:-;8372:29:73;;;:191;:::i;5369:233:72:-;958:1:71;7916:84:46;;;2550:79546:64;5461:135:72;;5369:233::o;5461:135::-;5535:50;-1:-1:-1;5535:50:72;958:1:71;-1:-1:-1;5535:50:72;3666:227;958:1:71;7916:84:46;;;3756:131:72;;3666:227::o;3756:131::-;3828:48;-1:-1:-1;3828:48:72;958:1:71;-1:-1:-1;3828:48:72;1835:554:40;2550:79546:64;;1994:19:40;;2029:13;2041:1;2044:10;;;;;;2286:20;;;;;2282:73;;1835:554;:::o;2282:73::-;2329:15;2041:1;2329:15;;2041:1;2329:15;2056:3;2079:15;;;;:::i;:::-;2550:79546:64;2075:187:40;;2056:3;2550:79546:64;;2029:13:40;;2075:187;2123:20;;;2119:97;;2233:14;2075:187;;2119:97;2174:23;2041:1;2174:23;;2041:1;2174:23;6731:255:72;6019:108:46;6731:255:72;958:1:71;6019:108:46;;19669:4:31;2550:79546:64;;;;;;;;;;;;;;;6731:255:72;:::o;2550:79546:64:-;;;;;16942:1:56;2550:79546:64;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;17017:1:56;2550:79546:64;;;;;;;;;:::i;16306:3888:56:-;;;;;;2550:79546:64;;16842:24:56;;;;:::i;:::-;16930:13;16942:1;16945:13;;;;;;17136:26;:43;:26;;;;;:::i;:43::-;17107:72;;;;:::i;:::-;2550:79546:64;;;;;17730:57:56;;;;;;;;;;;;;:::i;:::-;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;;17730:57:56;;;;;;;16942:1;17730:57;;;16925:104;2550:79546:64;;;18181:53:56;;;;17730:57;18181:53;;;;17730:57;18181:53;;;:::i;:::-;;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;;18181:53:56;;;;;;;1744:19:47;18478:81:56;18181:53;18533:26;18478:52;18765:67;18181:53;18499:30;18181:53;1744:19:47;19124:55:56;18181:53;;17730:57;18181:53;;;16942:1;18181:53;;;16925:104;1744:19:47;;:::i;:::-;18313:14:56;;;;;:::i;:::-;18499:30;:::i;:::-;2550:79546:64;18478:52:56;;:::i;:::-;18533:26;;;:::i;18478:81::-;465:4:47;;5832:87;;;;;;1744:19;;:::i;18765:67:56:-;18921:26;:32;:26;;;;;:::i;:32::-;18892:61;;;;:::i;:::-;2550:79546:64;-1:-1:-1;;;;;2550:79546:64;;19124:55:56;;;;;;;;17730:57;19124:55;;;:::i;:::-;;2550:79546:64;;19124:55:56;;;;;;;20104:83;19124:55;20125:43;19124:55;16942:1;19124:55;;;16925:104;19282:24;;19316:35;19282:24;;:::i;:::-;19316:35;;;:::i;:::-;2550:79546:64;20125:43:56;;:::i;:::-;20104:83;;:::i;:::-;16306:3888;:::o;19124:55::-;19316:35;19124:55;;;;19282:24;19124:55;17730:57;19124:55;17730:57;19124:55;;;;;;;:::i;:::-;;;;;;18181:53;17730:57;18181:53;;;;17730:57;18181:53;;;;;;;:::i;:::-;;;;17730:57;;;;;;;;;;;;;;;:::i;:::-;;;;;16960:3;16996:18;:22;:18;17017:1;16996:18;;;:::i;:::-;2550:79546:64;16996:22:56;:::i;:::-;16979:39;;;;:::i;:::-;2550:79546:64;;16930:13:56;;2550:79546:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;21079:2229:56:-;;;;2550:79546:64;;;;;;;;22208:67:56;;-1:-1:-1;;;;;1744:19:47;;;;;:::i;:::-;21662:14:56;;;;:::i;:::-;2550:79546:64;;22208:67:56;;;;;;2550:79546:64;22208:67:56;;;;;;;;:::i;:::-;;2550:79546:64;;22208:67:56;;;;;;23286:15;22208:67;22859:32;22208:67;22973:38;22208:67;23114:37;22208:67;23161:35;22208:67;-1:-1:-1;22208:67:56;;;21079:2229;22367:30;:43;:30;;22648:63;22367:30;;;;:::i;:43::-;22667:30;;;;;:::i;:::-;2550:79546:64;22648:63:56;;:::i;22973:38::-;2550:79546:64;;;;23114:37:56;:::i;:::-;23161:35;;;:::i;:::-;2550:79546:64;23286:15:56;:::i;22208:67::-;22648:63;22208:67;;22367:30;22208:67;;22367:43;22208:67;;;;;;;;;;;:::i;:::-;;;;;;;2550:79546:64;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;4619:1444:56:-;;;;5749:30;2550:79546:64;;5749:30:56;:::i;:::-;5794:13;5806:1;5830:3;2550:79546:64;;5809:19:56;;;;;6003:25;:11;;;;;:::i;:::-;2550:79546:64;6003:25:56;:::i;:::-;2550:79546:64;;;;;;;;;5986:60:56;;;;:::i;:::-;2550:79546:64;;5794:13:56;;5809:19;;;;;;4619:1444::o;887:427:47:-;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;-1:-1:-1;;1186:122:47;;;;;;;;887:427;:::o;79656:166:64:-;79738:16;79734:82;;79656:166;:::o;79734:82::-;79793:11;;;:::i;3280:418:43:-;;3665:25;3280:418;3665:25;:::i;:::-;465:4:47;;2550:79546:64;;;;;;;;;;;;;;;;;;;;3280:418:43;:::o;50494:2352:64:-;;;;;;2550:79546;50738:33;2550:79546;50869:30;;50865:1975;;50494:2352;;;;;:::o;50865:1975::-;51290:30;;;51345:26;51290:37;:30;;51223:162;51290:30;;;;;:37;:::i;:::-;2550:79546;51345:19;;;;;:26;:::i;51223:162::-;2550:79546;;1192:1:71;7916:84:46;958:1:71;7916:84:46;;2550:79546:64;51576:1254;;50865:1975;;;;;51576:1254;6019:108:46;;;;;2550:79546:64;6019:108:46;;19669:4:31;2550:79546:64;;;;;;;;;;;;;;;838:5:47;465:4;838:5;;;:::i;:::-;2550:79546:64;52236:49;;;;52232:137;;52590:26;52641;52677:138;52590:33;52641;52590:26;;;-1:-1:-1;;;;;2550:79546:64;;;13745:20:66;2550:79546:64;;;;;;;52590:33;2550:79546;52733:64;1460:31:41;1237:14;1460:31;;52733:64:64;:::i;:::-;52677:138;;:::i;:::-;52641:26;-1:-1:-1;;;;;2550:79546:64;;;13745:20:66;2550:79546:64;;;;;;;52641:33;2550:79546;51576:1254;;;;;52232:137;52316:34;2550:79546;52316:34;;2550:79546;52316:34;11202:521:66;-1:-1:-1;;;;;11202:521:66;;;;2550:79546:64;-1:-1:-1;2550:79546:64;;11379:18:66;2550:79546:64;;;;-1:-1:-1;2550:79546:64;-1:-1:-1;11467:3:66;11438:20;;;;2550:79546:64;;11434:31:66;;;;;11619:23;11567:139;11619:23;;2550:79546:64;11619:23:66;;:::i;:::-;2550:79546:64;11660:32:66;:29;;;;;:32;:::i;11567:139::-;2550:79546:64;-1:-1:-1;2550:79546:64;;;;;-1:-1:-1;2550:79546:64;;;11419:13:66;;11434:31;;;;;;;;11202:521::o;17101:159::-;859:9:38;:23;17174:79:66;;;17101:159;:::o;17174:79::-;2550:79546:64;7916:84:46;17211:15:66;2550:79546:64;7916:84:46;2550:79546:64;17101:159:66;:::o;3162:428:90:-;;859:9:38;3337:114:90;;-1:-1:-1;;;;;3545:28:90;2550:79546:64;;3378:5:90;2550:79546:64;3545:9:90;2550:79546:64;;;3378:5:90;2550:79546:64;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;3545:28:90;2550:79546:64;;;;;;;;;;;3162:428:90:o;3337:114::-;3406:34;3378:5;3406:34;;3378:5;3406:34;5216:1180;;;-1:-1:-1;;;;;2550:79546:64;;;5298:18:90;;;5294:80;;5409:21;:15;;;-1:-1:-1;;;;;2550:79546:64;;;6696:9:90;2550:79546:64;;;;;;;5409:21:90;2550:79546:64;5444:23:90;;;5440:115;;2550:79546:64;;;5589:21:90;:15;;;-1:-1:-1;;;;;2550:79546:64;;;6696:9:90;2550:79546:64;;;;;;;5589:21:90;2550:79546:64;5681:29:90;:20;;;-1:-1:-1;;;;;2550:79546:64;;;5681:14:90;2550:79546:64;;;;;;;5681:20:90;2550:79546:64;5681:29:90;:::i;:::-;5751:14;;;:::i;:::-;5777:20;;-1:-1:-1;;;;;2550:79546:64;;;5681:14:90;2550:79546:64;;;;;;;5777:20:90;2550:79546:64;;6113:62:90;;;;;;2550:79546:64;;;6113:62:90;;-1:-1:-1;;;;;2550:79546:64;;;6113:62:90;;;2550:79546:64;5314:1:90;2550:79546:64;;;;;;;;;;;;5314:1:90;6349:40;;;;5314:1;2550:79546:64;;;;;6113:62:90;2550:79546:64;6349:40:90;;;;5216:1180::o;5440:115::-;5490:54;5314:1;5490:54;-1:-1:-1;;;;;2550:79546:64;;6774:51:90;2550:79546:64;;;;;;;;;55873:40;9930:461:43;465:4:47;2550:79546:64;;;;10347:19:43;;;;9930:461;:::o;10347:37::-;10383:1;2550:79546:64;;;;;;;9930:461:43;:::o;80577:177:64:-;80672:21;-1:-1:-1;80654:94:64;;80577:177::o;80654:94::-;80716:21;;;;;;1822:864:47;;2004:6;;2000:58;;465:4;2550:79546:64;;;;;;;;;;;;;;;2560:120:47;;-1:-1:-1;;2560:120:47;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;1822:864;2004:6;;2000:58;;2560:120;2153:5;;;;:::i;:::-;2560:120;-1:-1:-1;;2560:120:47;;;;;;;;1822:864;:::o;4238:414:43:-;;1744:19:47;4238:414:43;4619:25;4238:414;4619:25;:::i;:::-;1744:19:47;;:::i;2311:281:41:-;;1237:14;2426:25;;;:58;;;;;2311:281;2422:113;;;3080:3;2550:79546:64;;;;;;;;;2311:281:41;:::o;2422:113::-;2507:17;;;;;;2426:58;2455:29;;;;2426:58;;;3791:897:36;;3937:44;2550:79546:64;1616:3:41;2550:79546:64;3937:44:36;:::i;:::-;3992:37;1237:14:41;4028:1:36;1460:31:41;;4043:33:36;4039:476;;3791:897;4633:43;;4680:1;4633:43;;;;:::i;:::-;2550:79546:64;3791:897:36;:::o;4039:476::-;-1:-1:-1;;;;;2550:79546:64;;;;4434:59:36;2550:79546:64;;;4434:59:36;;;;;2550:79546:64;4434:59:36;;;;;2550:79546:64;;4434:59:36;;;;;;;:70;4633:43;4434:59;4680:1;4434:59;4028:1;4434:59;;;4039:476;4434:70;;:::i;:::-;4039:476;;;;;;4434:59;;;;;;;;;;;;;;:::i;:::-;;;;17166:193:111;17253:1;17245:9;;17241:81;;17166:193;:::o;17241:81::-;17277:34;17253:1;17277:34;;2550:79546:64;;17253:1:111;17277:34;3296:380:98;2550:79546:64;;;3411:47:98;;;;;;-1:-1:-1;;;;;2550:79546:64;;3411:47:98;;;2550:79546:64;;;;;;;;;;3411:47:98;2550:79546:64;;;;3411:47:98;;;;-1:-1:-1;;3411:47:98;;;;;;;;:::i;:::-;2550:79546:64;;-1:-1:-1;;;;;2550:79546:64;;5615:25:98;;;;;;;;;;;:::i;:::-;5657:69;;;3296:380;5657:103;;;;3296:380;3473:45;;3469:201;;3296:380;;;;;:::o;3469:201::-;2550:79546:64;;3411:47:98;3561:43;;;;;;-1:-1:-1;;;;;2550:79546:64;3411:47:98;3561:43;;2550:79546:64;-1:-1:-1;2550:79546:64;;;;;3561:43:98;;;;;3646:12;;3561:43;;;;2550:79546:64;3561:43:98;:::i;:::-;;;:::i;3646:12::-;3469:201;;;;;;;5657:103;5730:26;;;:30;;5657:103;;;:69;2550:79546:64;;;;-1:-1:-1;5669:22:98;;;:56;;;;5657:69;;;;;;;5669:56;5695:30;;;3411:47;5695:30;;;;;;;;:::i;:::-;5669:56;;;;3296:380;2550:79546:64;;;3411:47:98;;;;;;-1:-1:-1;;;;;2550:79546:64;;3411:47:98;;;2550:79546:64;;;;;;;;;;;;;;;3411:47:98;2550:79546:64;1644:900:36;;1796:40;1237:14:41;1460:31;;1796:40:36;:::i;:::-;1847:37;-1:-1:-1;2550:79546:64;1616:3:41;2550:79546:64;1898:37:36;1894:474;;2486:46;;4680:1;2486:46;;;;:::i;1894:474::-;-1:-1:-1;;;;;2550:79546:64;;;;2287:59:36;2550:79546:64;;;2287:59:36;;;;;2550:79546:64;2287:59:36;;;;;2550:79546:64;;2287:59:36;;;;;;;:70;2486:46;2287:59;4680:1;2287:59;-1:-1:-1;2287:59:36;;;:70;;:::i;73282:870:64:-;;;;-1:-1:-1;;;;;2550:79546:64;;;-1:-1:-1;2550:79546:64;73699:11;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;-1:-1:-1;2550:79546:64;73699:11;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;;;;;;74116:28;;;:::i;74887:878::-;;;;-1:-1:-1;;;;;2550:79546:64;;;-1:-1:-1;2550:79546:64;75304:11;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;;;;;;;;-1:-1:-1;2550:79546:64;75304:11;2550:79546;;;-1:-1:-1;2550:79546:64;;;;;;;;;;75729:28;;;:::i;2550:79546::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2550:79546:64;;;;:::o;:::-;;;:::o;3180:392:99:-;5172:5:64;3180:392:99;3510:55;3180:392;3462:31;;;;;;;;;;;:::i;:::-;3510:55;;:::i;4522:224:72:-;958:1:71;7916:84:46;1414:1:71;7916:84:46;2550:79546:64;4611:129:72;;4522:224::o;4611:129::-;4682:47;-1:-1:-1;4682:47:72;958:1:71;-1:-1:-1;4682:47:72;13430:2163:56;;;;14330:66;;13855:31;13430:2163;-1:-1:-1;;;;;13430:2163:56;13855:31;:::i;:::-;1744:19:47;;;;;:::i;:::-;14283:14:56;;;;:::i;14330:66::-;;2550:79546:64;;14330:66:56;;;;;;15572:14;14330:66;1744:19:47;15064:30:56;14330:66;15210:67;14330:66;15380:37;14330:66;;;;15427:34;14330:66;-1:-1:-1;14330:66:56;;;13430:2163;14500:29;;14849;14487:42;14500:29;14837:41;14500:29;14836:57;14500:29;;;:::i;:::-;2550:79546:64;14487:42:56;;:::i;:::-;14849:29;;;:::i;:::-;2550:79546:64;14837:41:56;;:::i;:::-;14836:57;:::i;15427:34::-;2550:79546:64;15572:14:56;:::i;14330:66::-;14836:57;14330:66;;14487:42;14500:29;14837:41;14330:66;;;14849:29;14330:66;;;;;;;;;;;:::i;:::-;;;;;;;;;;4873:359:43;;5121:105;2550:79546:64;;;5044:9:43;2550:79546:64;;5044:9:43;;:::i;:::-;5121:105;;;;;;;4873:359::o;7248:4946:56:-;;;;;2550:79546:64;;8498:24:56;;;:::i;:::-;8623;;;;:::i;:::-;8743:13;8755:1;8758:13;;;;;;2550:79546:64;;-1:-1:-1;;;;;2550:79546:64;;;;;;;9134:57:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;8755:1;9134:57;;;8738:165;2550:79546:64;;;9286:55:56;;;;;;;;9134:57;9286:55;;;:::i;:::-;;;;;;;;;;;;1511:7:47;9422:14:56;9286:55;1625:13:47;9286:55:56;;8755:1;9286:55;;;8738:165;1511:7:47;;;;;;;;;;;;;;;;:::i;1625:13::-;9422:14:56;;;:::i;:::-;8755:1;9531:13;;;;;;2550:79546:64;;;;11183:55:56;2550:79546:64;;;;11183:55:56;;;;;;;;9134:57;11183:55;;;:::i;:::-;;;;;;;;;;;12108:59;11183:55;12123:43;11183:55;12107:80;11183:55;8755:1;11183:55;;;9511:1375;12123:43;;;:::i;:::-;12108:59;;:::i;11183:55::-;;;;;;-1:-1:-1;11183:55:56;;;;;;:::i;:::-;;;;;9546:3;10047:18;;;;;;;;;;;;;;10024:42;10047:18;;8848:1;10047:18;;:::i;:::-;2550:79546:64;10024:42:56;;:::i;:::-;10084:14;;;;;:::i;:::-;2550:79546:64;10084:41:56;10080:796;;9546:3;;;;;;2550:79546:64;9516:13:56;;;;;;;;;;;;10080:796;10232:14;;10374:38;10827:34;10232:14;10827;10232;;;10844:17;10232:14;;:::i;:::-;2550:79546:64;;10374:38:56;:::i;:::-;10354:58;;;;:::i;10827:14::-;2550:79546:64;10844:17:56;;:::i;10827:34::-;10810:51;;;;:::i;:::-;2550:79546:64;10080:796:56;;;;;;;9286:55;;;;;;-1:-1:-1;9286:55:56;;;;;;:::i;:::-;;;;;9134:57;;;;;;;;;;;;;;;:::i;:::-;;;;;8773:3;8809:18;:40;:36;:18;8848:1;8809:18;;;:::i;:::-;2550:79546:64;8830:15:56;;;;:::i;:::-;2550:79546:64;8809:36:56;;:::i;:::-;:40;:::i;:::-;8792:57;;;;:::i;:::-;2550:79546:64;;8743:13:56;;6495:194:72;958:1:71;7916:84:46;1586:1:71;7916:84:46;2550:79546:64;6574:109:72;;6495:194::o;6574:109::-;6635:37;-1:-1:-1;6635:37:72;958:1:71;-1:-1:-1;6635:37:72;2420:1364:56;;;3468:30;2550:79546:64;;3468:30:56;:::i;:::-;3513:13;3525:1;3549:3;2550:79546:64;;3528:19:56;;;;;3717:11;:50;:11;;;2550:79546:64;3717:11:56;;;:::i;:::-;2550:79546:64;3717:50:56;:::i;:::-;3702:65;;;;:::i;:::-;2550:79546:64;;3513:13:56;;3528:19;;;;;2420:1364::o;3596:756:90:-;;-1:-1:-1;;;;;2550:79546:64;;;3676:16:90;;;3672:78;;3785:29;:20;;;-1:-1:-1;;;;;2550:79546:64;;;5681:14:90;2550:79546:64;;;;;;;3785:20:90;2550:79546:64;3785:29:90;:::i;:::-;3963:19;:15;;;-1:-1:-1;;;;;2550:79546:64;;;6696:9:90;2550:79546:64;;;;;;;3963:19:90;2550:79546:64;;;;;;4043:14:90;;;:::i;:::-;4069:20;;-1:-1:-1;;;;;2550:79546:64;;;5681:14:90;2550:79546:64;;;;;;;4069:20:90;2550:79546:64;;;3690:1:90;2550:79546:64;4122:38:90;2550:79546:64;;4122:38:90;;;;2550:79546:64;;;;;;;;4122:38:90;;;;4285:60;;;;;2550:79546:64;;;4285:60:90;;3690:1;4285:60;;;2550:79546:64;;;-1:-1:-1;;;;;2550:79546:64;;;;;;;;;;;;;;;;;;3690:1:90;2550:79546:64;;;;4285:60:90;2550:79546:64;3672:78:90;3715:24;3690:1;3715:24;-1:-1:-1;;;;;2550:79546:64;;7519:27:90;2550:79546:64;;;55873:40;4059:629:98;-1:-1:-1;;;;;2811:38:99;4059:629:98;2550:79546:64;2811:38:99;;;:::i;:::-;2550:79546:64;;4551:22:98;;;;:57;;;;4059:629;4547:135;;;;4059:629;:::o;4547:135::-;4631:40;2847:1:99;4631:40:98;;2550:79546:64;;2847:1:99;4631:40:98;4551:57;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;;;;9628:806:72;;2550:79546:64;9811:24:72;;;:::i;:::-;9470:46;2550:79546:64;6019:108:46;;-1:-1:-1;9952:13:72;;;;;;10406:21;;;9628:806;:::o;9967:3::-;2550:79546:64;;;;;;;;;;;;;;;6019:108:46;;;;;3267:1:71;;;;;;6019:108:46;3267:1:71;;;10348:37:72;;;;:::i;:::-;2550:79546:64;;9937:13:72;;8442:263;6019:108:46;;2550:79546:64;6019:108:46;;19669:4:31;2550:79546:64;;;;;;;;;;;;;;;8442:263:72;:::o;8641:1623:73:-;;;;2550:79546:64;8915:29:73;:41;:29;;;;;:41;:::i;:::-;2550:79546:64;9458:36:73;;;9454:804;;8641:1623;;;;;:::o;9454:804::-;10044:189;2550:79546:64;;;;9669:111:73;2550:79546:64;10184:31:73;2550:79546:64;;9669:111:73;:::i;:::-;10120:30;10184:19;10120:42;:30;;;;;:42;:::i;10044:189::-;9454:804;;;;;;;;2011:185:41;;1237:14;2131:58;2011:185;1460:31;2131:58;:::i;24291:315:56:-;;24430:31;-1:-1:-1;;;;;24291:315:56;24430:31;2550:79546:64;;24430:31:56;;;;2550:79546:64;24430:31:56;;2550:79546:64;24430:31:56;;;;;;;;;;;24291:315;24475:34;;;;24471:129;;24291:315;;:::o;24471:129::-;24532:57;24430:31;24532:57;24430:31;2550:79546:64;;;;24430:31:56;24532:57;24430:31;;;;;;;;;;;;;;;:::i;:::-;;;;;662:219:47;465:4;662:219;838:5;662:219;838:5;:::i;1736:177:41:-;;1848:58;1736:177;1616:3;2550:79546:64;1848:58:41;;:::i;4358:211:90:-;928:3;4449:43;;4445:118;;4358:211;:::o;4445:118::-;4515:37;;;;2550:79546:64;;4515:37:90;;76673:2695:64;2550:79546;;;76966:40;;;77000:4;76966:40;;;2550:79546;76966:40;;76673:2695;;2550:79546;;-1:-1:-1;;;;;2550:79546:64;;76966:40;2550:79546;;;;;;76966:40;;;;;;;-1:-1:-1;76966:40:64;;;76673:2695;77020:57;;;;77016:892;;78081:28;;;-1:-1:-1;;;;;2550:79546:64;;;7242:11;2550:79546;;;;;;;78081:28;2550:79546;;;78225:37;;;77000:4;76966:40;78225:37;;2550:79546;;;;77000:4;2550:79546;;;;78225:37;;;;;;;-1:-1:-1;78225:37:64;;;76673:2695;78276:51;;;;;78272:866;;79313:25;;;;-1:-1:-1;;;;;2550:79546:64;;;7242:11;2550:79546;;;;;;;79313:25;2550:79546;76673:2695::o;78272:866::-;78964:163;-1:-1:-1;78964:163:64;-1:-1:-1;;;;;2550:79546:64;6774:51:90;2550:79546:64;;;-1:-1:-1;2550:79546:64;;;;55873:40;78225:37;;;;;;;-1:-1:-1;78225:37:64;;;;;;:::i;:::-;;;;;;77016:892;77725:172;;;;;;-1:-1:-1;77725:172:64;2550:79546;;;;-1:-1:-1;;;;;2550:79546:64;;;6774:51:90;2550:79546:64;;;;;;76966:40;;;;;;;;;;;;;;;:::i;:::-;;;;;4625:582:99;;4797:8;;-1:-1:-1;2550:79546:64;;5874:21:99;:17;;6046:142;;;;;;5870:383;6225:17;5894:1;6225:17;;5894:1;6225:17;4793:408;2550:79546:64;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;2550:79546:64;5121:24:99;2550:79546:64;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;;23639:315:56;;23778:31;-1:-1:-1;;;;;23639:315:56;23778:31;2550:79546:64;;23778:31:56;;;;2550:79546:64;23778:31:56;;2550:79546:64;23778:31:56;;;;;;;;;;;23639:315;23823:34;;;;23819:129;;23639:315;;:::o;23819:129::-;23880:57;23778:31;23880:57;23778:31;2550:79546:64;;;;23778:31:56;23880:57;23778:31;;;;;;;;;;;;;;;:::i;:::-;;;;;2550:79546:64;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"addLiquidity((address,address,uint256[],uint256,uint8,bytes))":"4af29ec4","erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))":"43583be5","getPoolTokenCountAndIndexOfToken(address,address)":"c9c1661b","getVaultExtension()":"b9a8effa","reentrancyGuardEntered()":"d2c725e0","removeLiquidity((address,address,uint256,uint256[],uint8,bytes))":"21457897","sendTo(address,address,uint256)":"ae639329","settle(address,uint256)":"15afd409","swap((uint8,address,address,address,uint256,uint256,bytes))":"2bfb780c","transfer(address,address,uint256)":"beabacc8","transferFrom(address,address,address,uint256)":"15dacbea","unlock(bytes)":"48c89491"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVaultExtension\",\"name\":\"vaultExtension\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizer\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleNonZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"erc4626BufferWrapOrUnwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenCountAndIndexOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountHint\",\"type\":\"uint256\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"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\":\"spender\",\"type\":\"address\"},{\"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\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"AllZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have one non-zero value, corresponding to the token being added or removed. This error results if all entries are zero.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"InvariantRatioAboveMax(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"maxInvariantRatio\":\"The maximum allowed invariant ratio\"}}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"minInvariantRatio\":\"The minimum allowed invariant ratio\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"MultipleNonZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have only one non-zero value, corresponding to the token being added or removed. This error results if there are multiple non-zero entries.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"details\":\"Caution should be exercised when adding liquidity because the Vault has the capability to transfer tokens from any user, given that it holds all allowances.\",\"params\":{\"params\":\"Parameters for the add liquidity (see above for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual amounts of input tokens\",\"bptAmountOut\":\"Output pool token amount\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"details\":\"All parameters are given in raw token decimal encoding. It requires the buffer to be initialized, and uses the internal wrapped token buffer when it has enough liquidity to avoid external calls.\",\"params\":{\"params\":\"Parameters for the wrap/unwrap operation (see struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"details\":\"Reverts if the pool is not registered, or if the token does not belong to the pool.\",\"params\":{\"pool\":\"Address of the pool\",\"token\":\"Address of the token\"},\"returns\":{\"_0\":\"Number of tokens in the pool\",\"_1\":\"Index corresponding to the given token in the pool's token list\"}},\"getVaultExtension()\":{\"details\":\"Function is in the main Vault contract. The VaultExtension handles less critical or frequently used functions, since delegate calls through the Vault are more expensive than direct calls.\",\"returns\":{\"_0\":\"Address of the VaultExtension\"}},\"reentrancyGuardEntered()\":{\"returns\":{\"_0\":\"True if the Vault is currently executing a nonReentrant function\"}},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"details\":\"Trusted routers can burn pool tokens belonging to any user and require no prior approval from the user. Untrusted routers require prior approval from the user. This is the only function allowed to call _queryModeBalanceIncrease (and only in a query context).\",\"params\":{\"params\":\"Parameters for the remove liquidity (see above for struct definition)\"},\"returns\":{\"amountsOut\":\"Actual amounts of output tokens\",\"bptAmountIn\":\"Actual amount of BPT burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"sendTo(address,address,uint256)\":{\"details\":\"There is no inverse operation for this function. Transfer funds to the Vault and call `settle` to cancel debts.\",\"params\":{\"amount\":\"Amount of tokens to send\",\"to\":\"Recipient address\",\"token\":\"Address of the token\"}},\"settle(address,uint256)\":{\"details\":\"Protects the caller against leftover dust in the Vault for the token being settled. The caller should know in advance how many tokens were paid to the Vault, so it can provide it as a hint to discard any excess in the Vault balance. If the given hint is equal to or higher than the difference in reserves, the difference in reserves is given as credit to the caller. If it's higher, the caller sent fewer tokens than expected, so settlement would fail. If the given hint is lower than the difference in reserves, the hint is given as credit to the caller. In this case, the excess would be absorbed by the Vault (and reflected correctly in the reserves), but would not affect settlement. The credit supplied by the Vault can be calculated as `min(reserveDifference, amountHint)`, where the reserve difference equals current balance of the token minus existing reserves of the token when the function is called.\",\"params\":{\"amountHint\":\"Amount paid as reported by the caller\",\"token\":\"Address of the token\"},\"returns\":{\"credit\":\"Credit received in return of the payment\"}},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"details\":\"All parameters are given in raw token decimal encoding.\",\"params\":{\"vaultSwapParams\":\"Parameters for the swap (see above for struct definition)\"},\"returns\":{\"amountCalculated\":\"Calculated swap amount\",\"amountIn\":\"Amount of input tokens for the swap\",\"amountOut\":\"Amount of output tokens from the swap\"}},\"transfer(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"owner\":\"Address of the owner\",\"to\":\"Address of the recipient\"},\"returns\":{\"_0\":\"success True if successful, false otherwise\"}},\"transferFrom(address,address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"from\":\"Address of the sender\",\"spender\":\"Address allowed to perform the transfer\",\"to\":\"Address of the recipient\"},\"returns\":{\"_0\":\"True if successful, false otherwise\"}},\"unlock(bytes)\":{\"details\":\"Performs a callback on msg.sender with arguments provided in `data`. The Callback is `transient`, meaning all balances for the caller have to be settled at the end.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AllZeroInputs()\":[{\"notice\":\"No valid input was given for a single token operation.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BalanceOverflow()\":[{\"notice\":\"One of the balances is above the maximum value that can be stored.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"InvariantRatioAboveMax(uint256,uint256)\":[{\"notice\":\"An add liquidity operation increased the invariant above the limit.\"}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"notice\":\"A remove liquidity operation decreased the invariant below the limit.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"MultipleNonZeroInputs()\":[{\"notice\":\"More than one non-zero value was given for a single token operation.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotStaticCall()\":[{\"notice\":\"A state-changing transaction was initiated in a context that only allows static calls.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"notice\":\"Adds liquidity to a pool.\"},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"notice\":\"Wraps/unwraps tokens based on the parameters provided.\"},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"notice\":\"Gets the index of a token in a given pool.\"},\"getVaultExtension()\":{\"notice\":\"Returns the VaultExtension contract address.\"},\"reentrancyGuardEntered()\":{\"notice\":\"Expose the state of the Vault's reentrancy guard.\"},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"notice\":\"Removes liquidity from a pool.\"},\"sendTo(address,address,uint256)\":{\"notice\":\"Sends tokens to a recipient.\"},\"settle(address,uint256)\":{\"notice\":\"Settles deltas for a token; must be successful for the current lock to be released.\"},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"notice\":\"Swaps tokens based on provided parameters.\"},\"transfer(address,address,uint256)\":{\"notice\":\"Transfers pool token from owner to a recipient.\"},\"transferFrom(address,address,address,uint256)\":{\"notice\":\"Transfers pool token from a sender to a recipient using an allowance.\"},\"unlock(bytes)\":{\"notice\":\"Creates a context for a sequence of operations (i.e., \\\"unlocks\\\" the Vault).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/Vault.sol\":\"Vault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\":{\"keccak256\":\"0x0cdc0d3817887d0439c3c6f4c811bd37091ef75a855dd8b14c0e8f337e2799dd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ffd05df90ccdf19a35177fd6c6f78edc61ca2a37df7d0934932a3ad5a96f1e6\",\"dweb:/ipfs/QmaCmKktnMy4XXZn2FaKTjwQBGUhuXKikbxCbPX6K5PPgi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol\":{\"keccak256\":\"0x528ef10b3f14bb2b1d64043ec8c7d732a502147fe9d4e4bd3339f57e40fe3ce7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a71bd94d0c5ba098b04b2bc65a7842c1bb3b96d91dd6a95756efc468cd6dbc5\",\"dweb:/ipfs/QmPrHPMmrdpJjvny8UjWbWFJo5nWpBtmjxWGbX1zDbNx6Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":{\"keccak256\":\"0x28078c6fa4d55418c25505d4683642cb51fe55b2155ef7418db6c70631a30d6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://864b91fdc2b69725bcc07f06d9adebe87117561582fa58f1e4410d8928cd205c\",\"dweb:/ipfs/QmWCDsbTxtmEMLhorqfGF1LDMHMqqVnV9sk9mUTPR7eog8\"]},\"@balancer-labs/v3-vault/contracts/Vault.sol\":{\"keccak256\":\"0xd16a5648324b9ba577b3bdc1ef0e218dd341469972a1a08528ca1b75e659c7fc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3afd334b8d76848ff82ad3f3d77d691ed17c09a09599a9866e95f94564d4299e\",\"dweb:/ipfs/QmbpErGaJL2hMfJxyJCFuzh5dDHxP282B4Q1384yoKV5Fs\"]},\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":{\"keccak256\":\"0xad949728097754fb91dd82f46a4f3430f0caf092fe719f04c030325e623c59cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6ba4635b64181a08098f2b4bde9bc6ceb8580d24654ec39c3d38ac2c8082317\",\"dweb:/ipfs/QmbthXemuT8Qvs2jdTADdyzbcPuZaKWfZjRn7j8dWuwffs\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol\":{\"keccak256\":\"0xaf3a7b4bbc1427ffb36b89cab5e485494afbddaff7195e0533f9c29a88c217b3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c653115b697d1c2a340a485e37a1d1a7b18bd3da4304ef12480bf9dcb8f61dc8\",\"dweb:/ipfs/QmfPNVqSeuG6gJr2x4y41czE5ivBz8vLpZ3R97VVnbK1uT\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/VaultAdmin.sol":{"VaultAdmin":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"mainVault","type":"address"},{"internalType":"uint32","name":"pauseWindowDuration","type":"uint32"},{"internalType":"uint32","name":"bufferPeriodDuration","type":"uint32"},{"internalType":"uint256","name":"minTradeAmount","type":"uint256"},{"internalType":"uint256","name":"minWrapAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BalanceOverflow","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"CodecOverflow","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotStaticCall","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areBuffersPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[{"internalType":"uint256[]","name":"totalSwapFees","type":"uint256[]"},{"internalType":"uint256[]","name":"totalYieldFees","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQueryPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"enableRecoveryMode","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":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferAsset","outputs":[{"internalType":"address","name":"underlyingToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"token","type":"address"}],"name":"getBufferBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getBufferOwnerShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"token","type":"address"}],"name":"getBufferTotalShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumPoolTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumPoolTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumTradeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumWrapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getVaultPausedState","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isVaultPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"pausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reentrancyGuardEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOutRaw","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOutRaw","type":"uint256"}],"name":"removeLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOutRaw","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOutRaw","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"removeLiquidityFromBufferHook","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"setProtocolFeeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"setStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"unpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"updateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateYieldFeePercentage","type":"uint256"}],"name":"updateAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_uint32_fromMemory":{"entryPoint":961,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":926,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4621":{"entryPoint":879,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateVaultStorageSlot":{"entryPoint":978,"id":27922,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6102006040908082523461036b5760a081613fac8038038091610022828561039e565b83398101031261036b5780516001600160a01b03811680820361036b57602061004c8185016103c1565b6100578686016103c1565b91608060608701519601519561008c88516100718161036f565b600a8152691a5cd55b9b1bd8dad95960b21b848201526103d2565b60c0526100bf885161009d8161036f565b60118152701b9bdb96995c9bd1195b1d1850dbdd5b9d607a1b848201526103d2565b60e0526100ec88516100d08161036f565b600b81526a746f6b656e44656c74617360a81b848201526103d2565b9761010098895261012481516101018161036f565b6012815271185919131a5c5d5a591a5d1e50d85b1b195960721b858201526103d2565b9761012098895261015382516101398161036f565b60098152681cd95cdcda5bdb925960ba1b868201526103d2565b926101409384526101c09788526101e098895263ffffffff80961694630784ce00861161035c578688169562ed4e00871161034d5742019081421161032457878211610338575086166101608181526101a098895295019586116103245761018095865260805260a0525196613b1a98896104928a3960805189610728015260a05189612bb1015260c0518961347b015260e05189818161387701526138d70152518861382c0152518750505186505051858181611add01528181611ec60152611f3e0152518481816112ec01528181611f6501526133a201525183818161044101528181610e25015281816111fa01528181612b670152612d7201525182613185015251818181610281015281816102d401528181610328015281816104bd0152818161076401528181610a1601528181610b6501528181610c2801528181610cc301528181610d2101528181610f1101528181611330015281816119c201528181611a7501528181611bbd01528181611c1d01528181611f0001528181611ff40152818161206c015281816123f1015281816124ab015281816129bb01528181612a1201528181612bfa01528181612c9301528181612dab01528181612e7601528181612ed90152612f900152f35b634e487b7160e01b5f52601160045260245ffd5b6306dfcc6560e41b5f5260045260245260445ffd5b634f5277f760e11b5f5260045ffd5b63cc0e8fe560e01b5f5260045ffd5b5f80fd5b604081019081106001600160401b0382111761038a57604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b0382119082101761038a57604052565b519063ffffffff8216820361036b57565b604051906103df8261036f565b600c8252610460603a602084016b5661756c7453746f7261676560a01b81526020604051948592828401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952518091603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a81018452018261039e565b5190205f198101908111610324576040519060208201908152602082526104868261036f565b9051902060ff19169056fe6080604052600436101561009f575b361561007757346100775760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f803560e01c80630387587d14612f70578063058a628f14612eae578063098401f514612e615780630b7562be14612d9657806320c1fb7a14612d5657806326a8a99114612d3a5780632d77138914612c695780632e42f4d514612c4e5780634021fe0f14612bd457806353956aa214612b9a57806355aca1ec146129f457806355cba7fe146129a65780635dcacd64146124945780635e0b06f4146123ce578063653eb3b014612053578063821440f214611fde578063851c1bb314611f8c57806385c8c01514611eea5780638a8d123a14611ea95780638f4ab9ca14611bff5780639385e39a14611b855780639e0879c214611a5f578063a8175b2714611a43578063b9212b49146119ac578063bffb78b214611310578063cd51c12f146112cf578063d0965a6b146112b1578063d15126ba14610eef578063d2c725e014610eb0578063dc3f574e14610cfa578063de1a36a614610cad578063e085c5a814610c12578063e0d5560514610b4f578063e253670a146109f3578063e2a92b1a1461074b578063e2cb0ba014610710578063ebc7955c146104a1578063f21c38cd14610309578063f2784e07146102a85763fbfa77cf14610262575061000e565b346102a557806003193601126102a55760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346102a55760206003193601126102a55760406020916001600160a01b036102cf612fd3565b6102f87f0000000000000000000000000000000000000000000000000000000000000000613267565b168152600d83522054604051908152f35b50346102a55760206003193601126102a557610323612fd3565b61034c7f0000000000000000000000000000000000000000000000000000000000000000613267565b6103558161342e565b6103796001600160a01b039182811692835f52600160205260405f205416906137ab565b805f525f60205260405f205460018160021c1663ffffffff80836103a361039e605a90565b61313f565b1c168261043b575b50501561040f5760207f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5f91858352828452166040822055604051908152a280f35b507ffdcd6894000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161047457164211155f806103ab565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50346102a55760806003193601126102a5576104bb612fd3565b7f00000000000000000000000000000000000000000000000000000000000000006104e581613267565b6001600160a01b03906040519260209280848601927f5dcacd640000000000000000000000000000000000000000000000000000000084521660248601526024356044860152604435606486015260643560848601523360a486015260a4855260e085019067ffffffffffffffff92868310848411176106e357601f948389809460448b8496856040527f48c894910000000000000000000000000000000000000000000000000000000086528c60e4830152848251918261010485015282610124918286015e83830101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b018b168101030193165af19485156106d8578695610618575b5050505060408280518101031261061457604080935081830151920151908351928352820152f35b8280fd5b9091929394503d8087843e61062d81846130df565b810191858260e085019403126106d45751908382116106d457018160ff820112156106d05760e0810151916101009383116106a357908693929161067b8760405197601f86011601876130df565b82865283838301011161069f5785928291018386015e83010152905f8080806105ec565b8380fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8580fd5b8680fd5b6040513d88823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50346102a557806003193601126102a55760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102a55761075a36612fe9565b61078895919294957f0000000000000000000000000000000000000000000000000000000000000000613267565b610790613479565b6107986135b9565b6107a1866134ca565b6107a96133d9565b6001600160a01b0392838716916040517f38d52e0f0000000000000000000000000000000000000000000000000000000081526020958682600481885afa9182156106d85786926109c4575b50848652600e875280604087205416911680910361099457838552600b8652604085205497600d87526040862054916fffffffffffffffffffffffffffffffff8a169161085261084685888661372c565b9b60801c94878661372c565b99808c116109605750808a1161092c5750936108fd936108cd60409c946108c78c6108c18f6108df986108bc8e6108b37f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a99f6108ad866137c7565b9061381c565b6108ad866137c7565b61314d565b9261314d565b90613557565b93878952600b8a52848d8a2055613627565b8851918291888a846040919493926060820195825260208201520152565b0390a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d8351928352820152f35b876064918b897f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b886064918d857f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b84604491857f36b18d09000000000000000000000000000000000000000000000000000000008352600452602452fd5b6109e5919250873d89116109ec575b6109dd81836130df565b810190613120565b905f6107f5565b503d6109d3565b50346102a55760406003193601126102a557610a0d612fd3565b60243590610a3a7f0000000000000000000000000000000000000000000000000000000000000000613267565b610a438161342e565b670de0b6b3a76400008211610b27576001600160a01b039081600a54163303610aff571690818352826020526040832054670de0b5cad2bef0008211610ad7577f606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca591610ac2602092610ab3604290565b9064174876e800840490613950565b8486528583526040862055604051908152a280f35b6004847f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b6004837f4c69ac5d000000000000000000000000000000000000000000000000000000008152fd5b50346102a557806003193601126102a557610b897f0000000000000000000000000000000000000000000000000000000000000000613267565b610b916132a0565b60ff60095416610bea577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe600754166007557f91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f58180a180f35b807f069f8cbc0000000000000000000000000000000000000000000000000000000060049252fd5b50346102a557806003193601126102a557610c4c7f0000000000000000000000000000000000000000000000000000000000000000613267565b610c546132a0565b60047ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60075416176007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5602060405160018152a180f35b50346102a557806003193601126102a557610ce77f0000000000000000000000000000000000000000000000000000000000000000613267565b610cef6132a0565b610cf76136db565b80f35b50346102a55760206003193601126102a5576001600160a01b03610d1c612fd3565b610d457f0000000000000000000000000000000000000000000000000000000000000000613267565b610d4e8161342e565b16808252816020526001604083205460031c16610e855780825281602052604082205460018160021c169063ffffffff8091610d8b61039e605a90565b1c1682610e1f575b50501580610e10575b610e03575b805f525f60205260405f2060087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff78254161790557fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9602060405160018152a280f35b610e0b6132a0565b610da1565b50610e1961339b565b15610d9c565b908092507f00000000000000000000000000000000000000000000000000000000000000001601818111610e5857164211155f80610d93565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b7f346d7607000000000000000000000000000000000000000000000000000000008252600452602490fd5b50346102a557806003193601126102a55760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b50346102a55760406003193601126102a557610f09612fd3565b602435610f357f0000000000000000000000000000000000000000000000000000000000000000613267565b610f3e8261342e565b6001600160a01b0380831692838552602091600183526001604087200154169081155f1461128257610f709150613997565b610f7861339b565b61125a57828452838152604084205460018160021c169063ffffffff8091610fa161039e605a90565b1c16826111f4575b50506111c8576040517fce20ece70000000000000000000000000000000000000000000000000000000081528181600481875afa90811561116857859161119b575b508210611173576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481875afa908115611168578591611137575b50821161110f57828452838152604084205491670de0b5cad2bef00081116110e75764174876e8008104928360181c6110bf577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff7f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a19486885287855260121b9116176040862055604051908152a280f35b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b6004857f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f7f47834b000000000000000000000000000000000000000000000000000000008152fd5b90508181813d8311611161575b61114e81836130df565b8101031261115d57515f61102e565b5f80fd5b503d611144565b6040513d87823e3d90fd5b6004847fbfb20688000000000000000000000000000000000000000000000000000000008152fd5b90508181813d83116111c1575b6111b281836130df565b8101031261115d57515f610feb565b503d6111a8565b602484847fd971f597000000000000000000000000000000000000000000000000000000008252600452fd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161122d57164211155f80610fa9565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004847fda9f8b34000000000000000000000000000000000000000000000000000000008152fd5b503314610f70576004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b50346102a557806003193601126102a5576020604051620f42408152f35b50346102a557806003193601126102a557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102a55760206003193601126102a55761132a612fd3565b906113547f0000000000000000000000000000000000000000000000000000000000000000613267565b61135d8261342e565b6113656132a0565b6001600160a01b0382168152806020526001604082205460031c16156119785761138d6133d9565b6040519160e0830183811067ffffffffffffffff8211176106e3576040525f8352606060208401526060604084015260608084015260606080840152606060a0840152606060c08401526001600160a01b0381165f52600560205260405f205f60205260405f205490600460205260405f2090600360205260405f2080549387526040519060208286815201905f528160205f20915f5b8781106119555750611438925003826130df565b6020870152611446836131bf565b61145360405191826130df565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611480856131bf565b015f5b81811061192c575050604087015261149a836131d7565b60608701526114a8836131d7565b6080870152855164ffffffffff6114be856131d7565b91605a1c165f5b8581106118f057505060c08701526114dc836131d7565b60a0870152855191600183811c1692836118dc575b50826118cc575b5f5b8481106115ee578787876001600160a01b0381165f52600560205260405f20905f5b60608501518051821015611562579061155061153a82600194613226565b516115498360808a0151613226565b5190613557565b815f528460205260405f20550161151c565b84835f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6001600160a01b03165f8181526020818152604080832080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7169055519182527fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a991a280f35b6001600160a01b036116048260208b0151613226565b51165f528160205260405f20906040519161161e836130c3565b5460ff9081811661162e81613a2e565b84526001600160a01b038160081c16602085015260a81c1615156040830152805f528360205260405f2054916116748260408c01518361166e8383613226565b52613226565b50805161168081613a2e565b61168981613a2e565b806118055750670de0b6b3a76400005b6116a78360a08d0151613226565b526116c56fffffffffffffffffffffffffffffffff8416838c613a88565b85156117fb576040810151151590816117dd575b506116ea575b600191505b016114fa565b886116f58151613a65565b611703836060840151613226565b519360801c6117178460805f950151613226565b5181811161174e575b50505060019281611733575b50506116df565b61174791611740916130a2565b828b613a88565b5f8061172c565b611759935003613058565b91670de0b6b3a7640000926001847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83010401901515026117b88b6117b18560a06117a88260c0860151613226565b51930151613226565b5190613058565b8185810204851482151715610474576001946117d4920261306b565b90925f80611720565b60019150516117eb81613a2e565b6117f481613a2e565b145f6116d9565b50600191506116e4565b80611811600192613a2e565b036118a457600460206001600160a01b038184015116604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115611899575f91611867575b50611699565b90506020813d602011611891575b81611882602093836130df565b8101031261115d57515f611861565b3d9150611875565b6040513d5f823e3d90fd5b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b865160031c6001161592506114f8565b6118e7919350613a65565b1515915f6114f1565b60058102908082046005148115171561047457604d601f84841c161161047457601f836001931c16600a0a6119258286613226565b52016114c5565b60209060405161193b816130c3565b5f81525f838201525f604082015282828601015201611483565b91506001602081926001600160a01b038654168152019301910191839192611424565b6001600160a01b036024927fef029adf00000000000000000000000000000000000000000000000000000000835216600452fd5b50346102a557806003193601126102a5576119e67f0000000000000000000000000000000000000000000000000000000000000000613267565b6119ee6132a0565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600754166007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a560206040515f8152a180f35b50346102a557806003193601126102a557602060405160028152f35b50346102a557806003193601126102a557611a997f0000000000000000000000000000000000000000000000000000000000000000613267565b611aa16132a0565b611aa961339b565b15611ad6577fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421015611b5d5760027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416176007557fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02602060405160018152a180f35b7f0e4460b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b50346102a55760406003193601126102a557611b9f612fd3565b602435916001600160a01b0380841680940361115d57604092611be17f0000000000000000000000000000000000000000000000000000000000000000613267565b168152600c60205220905f52602052602060405f2054604051908152f35b50346102a557602080600319360112611ea557611c1a612fd3565b907f0000000000000000000000000000000000000000000000000000000000000000611c4581613267565b611c4d613479565b6001600160a01b039283600a54163303611e7d57938084602487611c71839961342e565b60405197889384927fca4f28030000000000000000000000000000000000000000000000000000000084521696876004840152165afa938415611e70578194611dd0575b50835192611ccb611cc5856131d7565b946131d7565b90825b8651811015611da2578088611ce56001938a613226565b511686865260069081855260408720815f5285526fffffffffffffffffffffffffffffffff60405f20548060801c611d1d868a613226565b5216611d29848b613226565b52611d34838a613226565b5115801590611d8f575b611d4b575b505001611cce565b611d8891888852855260408720815f5285528660405f2055611d82611d70848b613226565b51611d7b8589613226565b519061314d565b90613517565b5f80611d43565b50611d9a8387613226565b511515611d3e565b611dbf86611dcc8486604051948594604086526040860190613025565b9184830390850152613025565b0390f35b9093503d8085833e611de281836130df565b8101908381830312611e6c5780519067ffffffffffffffff82116106d057019080601f83011215611e6c578151611e18816131bf565b92611e2660405194856130df565b818452858085019260051b8201019283116106d4578501905b828210611e5057505050925f611cb5565b81518881168103611e68578152908501908501611e3f565b8780fd5b8480fd5b50604051903d90823e3d90fd5b6004857f23dada53000000000000000000000000000000000000000000000000000000008152fd5b5080fd5b50346102a557806003193601126102a557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102a557806003193601126102a557611f247f0000000000000000000000000000000000000000000000000000000000000000613267565b6060611f2e61339b565b604051901515815263ffffffff807f00000000000000000000000000000000000000000000000000000000000000001660208301527f0000000000000000000000000000000000000000000000000000000000000000166040820152f35b50346102a55760206003193601126102a557600435907fffffffff00000000000000000000000000000000000000000000000000000000821682036102a5576020611fd68361315a565b604051908152f35b50346102a557806003193601126102a5576120187f0000000000000000000000000000000000000000000000000000000000000000613267565b6120206132a0565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006009541617600955610cf76136db565b50346102a55761206236612fe9565b94926120909291927f0000000000000000000000000000000000000000000000000000000000000000613267565b612098613479565b6120a06135b9565b6120a86133d9565b6001600160a01b039586861693848652602097600e8952806040882054166123a2576040517f38d52e0f00000000000000000000000000000000000000000000000000000000815289816004818a5afa90811561234e578891612385575b501680156123595761214e90868852600e8a5260408820817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556108ad856137c7565b61216061215a856137c7565b8661381c565b61216a8484613557565b91858752600b89528260408820556040517f4cdad50600000000000000000000000000000000000000000000000000000000815285600482015289816024818a5afa801561234e578590899061231d575b6121c5925061314d565b976121cf896135f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f089019889116122f05761225291899189897fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec348e828452600d8152612710806040862055600c8252604085205f805282528060405f2055604051908152a3613627565b8087106122c05750604080519283526020830193909352918101919091527f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a990606090a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b85604491887fda0cb07e000000000000000000000000000000000000000000000000000000008352600452602452fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50508981813d8311612347575b61233481836130df565b8101031261115d57846121c591516121bb565b503d61232a565b6040513d8a823e3d90fd5b602487877fd407f9c5000000000000000000000000000000000000000000000000000000008252600452fd5b61239c91508a3d8c116109ec576109dd81836130df565b5f612106565b602487877f1690fa40000000000000000000000000000000000000000000000000000000008252600452fd5b50346102a55760406003193601126102a5576123e8612fd3565b602435906124157f0000000000000000000000000000000000000000000000000000000000000000613267565b61241e8161342e565b670de0b6b3a76400008211610b27576001600160a01b039081600a54163303610aff571690818352826020526040832054670de0b5cad2bef0008211610ad75781610ac260209264174876e8007fe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd735495049061390e565b503461115d576124a336612fe9565b9490929193947f00000000000000000000000000000000000000000000000000000000000000006124d381613267565b6001600160a01b038116330361297a576124eb613479565b6124f4876134ca565b3215808061296d575b612905575b506001600160a01b0387165f52600c60205260405f206001600160a01b0383165f5260205260405f205484116128dd576001600160a01b0387165f52600b60205260405f205495600d60205260405f20549661258a61257c89612577896fffffffffffffffffffffffffffffffff8616613058565b61306b565b98612577888460801c613058565b966001600160a01b038a165f52600e6020526001600160a01b0360405f20541692808a106128aa575080881061286e5750612605906125c98984613517565b6125dc886001600160a01b038c16613517565b6108c7886125fc8b6fffffffffffffffffffffffffffffffff85166130a2565b9260801c6130a2565b946001600160a01b0389165f52600b6020528560405f20556001600160a01b03841615612846576001600160a01b0389165f52600d60205261264b8160405f20546130a2565b612654816135f0565b6001600160a01b038a165f52600d60205260405f2055600c60205260405f206001600160a01b0385165f5260205260405f206126918282546130a2565b90556040519081526001600160a01b038416907f4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b60206001600160a01b038c1692a3866127c5575b5084612735575b5050604080518581526020810185905280820193909352946001600160a01b0316917f44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee51139150606090a282519182526020820152f35b6001600160a01b0381163b15610614576001600160a01b03606488858381958160405198899788967fae6393290000000000000000000000000000000000000000000000000000000088521660048701521660248501528a6044850152165af180156127ba576127a6575b806126e0565b6127b082916130af565b6102a557806127a0565b6040513d84823e3d90fd5b6001600160a01b0382163b1561115d57604051907fae63932900000000000000000000000000000000000000000000000000000000825260048201526001600160a01b03831660248201528660448201525f81606481836001600160a01b0387165af1801561189957156126d95761283e9193506130af565b5f915f6126d9565b7f586d06df000000000000000000000000000000000000000000000000000000005f5260045ffd5b876001600160a01b038b7f8eda85e4000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b89847f8eda85e4000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f98c5dbd6000000000000000000000000000000000000000000000000000000005f5260045ffd5b15612945576001600160a01b0387165f52600c60205260405f206001600160a01b0383165f5260205260405f2061293d85825461314d565b90555f612502565b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b50600160075416156124fd565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b3461115d575f60031936011261115d576129df7f0000000000000000000000000000000000000000000000000000000000000000613267565b6020600160075460021c166040519015158152f35b3461115d57602060031936011261115d57612a0d612fd3565b612a367f0000000000000000000000000000000000000000000000000000000000000000613267565b612a3f8161342e565b612a636001600160a01b039182811692835f52600160205260405f205416906137ab565b805f525f60205260405f205460018160021c1663ffffffff908183612a8961039e605a90565b1c1681612b62575b5015612ac357827fd971f597000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81612ace605a61313f565b1c16421015612b36577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600491835f525f602052161760405f20557f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7602060405160018152a2005b507feb5a1217000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9050817f0000000000000000000000000000000000000000000000000000000000000000160181811161047457811642111584612a91565b3461115d575f60031936011261115d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461115d57602060031936011261115d576001600160a01b03612bf5612fd3565b612c1e7f0000000000000000000000000000000000000000000000000000000000000000613267565b165f52600b6020526040805f20548151906fffffffffffffffffffffffffffffffff8116825260801c6020820152f35b3461115d575f60031936011261115d57602060405160088152f35b3461115d57602060031936011261115d576004356001600160a01b03811680910361115d57612cb77f0000000000000000000000000000000000000000000000000000000000000000613267565b612cbf6132a0565b612cc76133d9565b807fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a557f280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df05f80a25f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b3461115d575f60031936011261115d5760206040516127108152f35b3461115d575f60031936011261115d57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461115d575f60031936011261115d57612dcf7f0000000000000000000000000000000000000000000000000000000000000000613267565b612dd76132a0565b612ddf61339b565b15612e39577fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d0260205f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416600755604051908152a1005b7ff7ff4dca000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461115d575f60031936011261115d57612e9a7f0000000000000000000000000000000000000000000000000000000000000000613267565b6020612ea461339b565b6040519015158152f35b3461115d57602060031936011261115d576004356001600160a01b0381169081810361115d57612efd7f0000000000000000000000000000000000000000000000000000000000000000613267565b612f056132a0565b7fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006009549260081b169116176009557f94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef5f80a2005b3461115d57602060031936011261115d576020612f8b612fd3565b612fb47f0000000000000000000000000000000000000000000000000000000000000000613267565b6001600160a01b038091165f52600e825260405f205416604051908152f35b600435906001600160a01b038216820361115d57565b60031960a091011261115d576001600160a01b03600435818116810361115d5791602435916044359160643591608435908116810361115d5790565b9081518082526020808093019301915f5b828110613044575050505090565b835185529381019392810192600101613036565b8181029291811591840414171561047457565b8115613075570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190820391821161047457565b67ffffffffffffffff81116106e357604052565b6060810190811067ffffffffffffffff8211176106e357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106e357604052565b9081602091031261115d57516001600160a01b038116810361115d5790565b906028820180921161047457565b9190820180921161047457565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526131b9816130c3565b51902090565b67ffffffffffffffff81116106e35760051b60200190565b906131e1826131bf565b6131ee60405191826130df565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061321c82946131bf565b0190602036910137565b805182101561323a5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6001600160a01b0316300361327857565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b61332a60206132d17fffffffff000000000000000000000000000000000000000000000000000000005f351661315a565b6009546040517f9be2a88400000000000000000000000000000000000000000000000000000000815260048101929092523360248301523060448301529092839160081c6001600160a01b031690829081906064820190565b03915afa908115611899575f9161336c575b501561334457565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b61338e915060203d602011613394575b61338681836130df565b810190613793565b5f61333c565b503d61337c565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421115806133cd5790565b506001600754811c1690565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c613406576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0316805f525f602052600160405f2054161561344e5750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000005c156134a257565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0380911690815f52600e60205260405f205416156134ec5750565b7f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90613521906137c7565b907f8000000000000000000000000000000000000000000000000000000000000000821461047457613555915f039061381c565b565b6fffffffffffffffffffffffffffffffff8082119081156135af575b50613587576135849160801b61314d565b90565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905082115f613573565b600160075460021c166135c857565b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b61271081106135fc5750565b7f34bdbfaa000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b91906001600160a01b038091169283156136b3577fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34916020911692835f52600d82526136778160405f205461314d565b613680816135f0565b845f52600d835260405f2055600c825260405f20855f52825260405f206136a882825461314d565b9055604051908152a3565b7fdbe6b10e000000000000000000000000000000000000000000000000000000005f5260045ffd5b60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60075416176007557fbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc6255f80a1565b821561376b5760019161373e91613058565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b9081602091031261115d5751801515810361115d5790565b906001600160a01b031633146137c45761355590613997565b50565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116137f15790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b811561390a576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000009116805f528160205260405f205c8381019384125f821290801582169115161761047457836138d157507f0000000000000000000000000000000000000000000000000000000000000000805c907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610474575d5b5f5260205260405f205d565b6138c5577f0000000000000000000000000000000000000000000000000000000000000000805c9060018201809211610474575d6138c5565b5050565b908060181c6110bf57602a1b9062ffffff602a1b19161790565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b906101008084101561392857838103908111610474578060ff105f14613992575060ff5b601811613928578060181c6110bf5762ffffff90831b921b19161790565b613974565b602061332a916139c97fffffffff000000000000000000000000000000000000000000000000000000005f351661315a565b6001600160a01b0360095460081c16906040518095819482937f9be2a884000000000000000000000000000000000000000000000000000000008452339060048501916040919493606084019584526001600160a01b03809216602085015216910152565b60021115613a3857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b62ffffff9060421c1664174876e800908181029181830414901517156104745790565b91906080670de0b6b3a7640000613ad8613ae19480613aab8660608a0151613226565b52613ad3613abd8660c08a0151613226565b51613acc8760a08b0151613226565b5192613058565b613058565b04930151613226565b5256fea26469706673582212200717d3c1dc7d9474a1321c1a9923b0e4aaf9fcc273b0690517e6c96f18109fff64736f6c634300081a0033","opcodes":"PUSH2 0x200 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x36B JUMPI PUSH1 0xA0 DUP2 PUSH2 0x3FAC DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x22 DUP3 DUP6 PUSH2 0x39E JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x36B JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 DUP3 SUB PUSH2 0x36B JUMPI PUSH1 0x20 PUSH2 0x4C DUP2 DUP6 ADD PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0x57 DUP7 DUP7 ADD PUSH2 0x3C1 JUMP JUMPDEST SWAP2 PUSH1 0x80 PUSH1 0x60 DUP8 ADD MLOAD SWAP7 ADD MLOAD SWAP6 PUSH2 0x8C DUP9 MLOAD PUSH2 0x71 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0xA DUP2 MSTORE PUSH10 0x1A5CD55B9B1BD8DAD959 PUSH1 0xB2 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH2 0xBF DUP9 MLOAD PUSH2 0x9D DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x1B9BDB96995C9BD1195B1D1850DBDD5B9D PUSH1 0x7A SHL DUP5 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH2 0xEC DUP9 MLOAD PUSH2 0xD0 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0xB DUP2 MSTORE PUSH11 0x746F6B656E44656C746173 PUSH1 0xA8 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST SWAP8 PUSH2 0x100 SWAP9 DUP10 MSTORE PUSH2 0x124 DUP2 MLOAD PUSH2 0x101 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x185919131A5C5D5A591A5D1E50D85B1B1959 PUSH1 0x72 SHL DUP6 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST SWAP8 PUSH2 0x120 SWAP9 DUP10 MSTORE PUSH2 0x153 DUP3 MLOAD PUSH2 0x139 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0x9 DUP2 MSTORE PUSH9 0x1CD95CDCDA5BDB9259 PUSH1 0xBA SHL DUP7 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST SWAP3 PUSH2 0x140 SWAP4 DUP5 MSTORE PUSH2 0x1C0 SWAP8 DUP9 MSTORE PUSH2 0x1E0 SWAP9 DUP10 MSTORE PUSH4 0xFFFFFFFF DUP1 SWAP7 AND SWAP5 PUSH4 0x784CE00 DUP7 GT PUSH2 0x35C JUMPI DUP7 DUP9 AND SWAP6 PUSH3 0xED4E00 DUP8 GT PUSH2 0x34D JUMPI TIMESTAMP ADD SWAP1 DUP2 TIMESTAMP GT PUSH2 0x324 JUMPI DUP8 DUP3 GT PUSH2 0x338 JUMPI POP DUP7 AND PUSH2 0x160 DUP2 DUP2 MSTORE PUSH2 0x1A0 SWAP9 DUP10 MSTORE SWAP6 ADD SWAP6 DUP7 GT PUSH2 0x324 JUMPI PUSH2 0x180 SWAP6 DUP7 MSTORE PUSH1 0x80 MSTORE PUSH1 0xA0 MSTORE MLOAD SWAP7 PUSH2 0x3B1A SWAP9 DUP10 PUSH2 0x492 DUP11 CODECOPY PUSH1 0x80 MLOAD DUP10 PUSH2 0x728 ADD MSTORE PUSH1 0xA0 MLOAD DUP10 PUSH2 0x2BB1 ADD MSTORE PUSH1 0xC0 MLOAD DUP10 PUSH2 0x347B ADD MSTORE PUSH1 0xE0 MLOAD DUP10 DUP2 DUP2 PUSH2 0x3877 ADD MSTORE PUSH2 0x38D7 ADD MSTORE MLOAD DUP9 PUSH2 0x382C ADD MSTORE MLOAD DUP8 POP POP MLOAD DUP7 POP POP MLOAD DUP6 DUP2 DUP2 PUSH2 0x1ADD ADD MSTORE DUP2 DUP2 PUSH2 0x1EC6 ADD MSTORE PUSH2 0x1F3E ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x12EC ADD MSTORE DUP2 DUP2 PUSH2 0x1F65 ADD MSTORE PUSH2 0x33A2 ADD MSTORE MLOAD DUP4 DUP2 DUP2 PUSH2 0x441 ADD MSTORE DUP2 DUP2 PUSH2 0xE25 ADD MSTORE DUP2 DUP2 PUSH2 0x11FA ADD MSTORE DUP2 DUP2 PUSH2 0x2B67 ADD MSTORE PUSH2 0x2D72 ADD MSTORE MLOAD DUP3 PUSH2 0x3185 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x281 ADD MSTORE DUP2 DUP2 PUSH2 0x2D4 ADD MSTORE DUP2 DUP2 PUSH2 0x328 ADD MSTORE DUP2 DUP2 PUSH2 0x4BD ADD MSTORE DUP2 DUP2 PUSH2 0x764 ADD MSTORE DUP2 DUP2 PUSH2 0xA16 ADD MSTORE DUP2 DUP2 PUSH2 0xB65 ADD MSTORE DUP2 DUP2 PUSH2 0xC28 ADD MSTORE DUP2 DUP2 PUSH2 0xCC3 ADD MSTORE DUP2 DUP2 PUSH2 0xD21 ADD MSTORE DUP2 DUP2 PUSH2 0xF11 ADD MSTORE DUP2 DUP2 PUSH2 0x1330 ADD MSTORE DUP2 DUP2 PUSH2 0x19C2 ADD MSTORE DUP2 DUP2 PUSH2 0x1A75 ADD MSTORE DUP2 DUP2 PUSH2 0x1BBD ADD MSTORE DUP2 DUP2 PUSH2 0x1C1D ADD MSTORE DUP2 DUP2 PUSH2 0x1F00 ADD MSTORE DUP2 DUP2 PUSH2 0x1FF4 ADD MSTORE DUP2 DUP2 PUSH2 0x206C ADD MSTORE DUP2 DUP2 PUSH2 0x23F1 ADD MSTORE DUP2 DUP2 PUSH2 0x24AB ADD MSTORE DUP2 DUP2 PUSH2 0x29BB ADD MSTORE DUP2 DUP2 PUSH2 0x2A12 ADD MSTORE DUP2 DUP2 PUSH2 0x2BFA ADD MSTORE DUP2 DUP2 PUSH2 0x2C93 ADD MSTORE DUP2 DUP2 PUSH2 0x2DAB ADD MSTORE DUP2 DUP2 PUSH2 0x2E76 ADD MSTORE DUP2 DUP2 PUSH2 0x2ED9 ADD MSTORE PUSH2 0x2F90 ADD MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x6DFCC65 PUSH1 0xE4 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH4 0x4F5277F7 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xCC0E8FE5 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x38A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x38A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x36B JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x3DF DUP3 PUSH2 0x36F JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH2 0x460 PUSH1 0x3A PUSH1 0x20 DUP5 ADD PUSH12 0x5661756C7453746F72616765 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP3 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE MLOAD DUP1 SWAP2 PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x39E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 DUP3 PUSH2 0x36F JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x9F JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x77 JUMPI CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x387587D EQ PUSH2 0x2F70 JUMPI DUP1 PUSH4 0x58A628F EQ PUSH2 0x2EAE JUMPI DUP1 PUSH4 0x98401F5 EQ PUSH2 0x2E61 JUMPI DUP1 PUSH4 0xB7562BE EQ PUSH2 0x2D96 JUMPI DUP1 PUSH4 0x20C1FB7A EQ PUSH2 0x2D56 JUMPI DUP1 PUSH4 0x26A8A991 EQ PUSH2 0x2D3A JUMPI DUP1 PUSH4 0x2D771389 EQ PUSH2 0x2C69 JUMPI DUP1 PUSH4 0x2E42F4D5 EQ PUSH2 0x2C4E JUMPI DUP1 PUSH4 0x4021FE0F EQ PUSH2 0x2BD4 JUMPI DUP1 PUSH4 0x53956AA2 EQ PUSH2 0x2B9A JUMPI DUP1 PUSH4 0x55ACA1EC EQ PUSH2 0x29F4 JUMPI DUP1 PUSH4 0x55CBA7FE EQ PUSH2 0x29A6 JUMPI DUP1 PUSH4 0x5DCACD64 EQ PUSH2 0x2494 JUMPI DUP1 PUSH4 0x5E0B06F4 EQ PUSH2 0x23CE JUMPI DUP1 PUSH4 0x653EB3B0 EQ PUSH2 0x2053 JUMPI DUP1 PUSH4 0x821440F2 EQ PUSH2 0x1FDE JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1F8C JUMPI DUP1 PUSH4 0x85C8C015 EQ PUSH2 0x1EEA JUMPI DUP1 PUSH4 0x8A8D123A EQ PUSH2 0x1EA9 JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0x1BFF JUMPI DUP1 PUSH4 0x9385E39A EQ PUSH2 0x1B85 JUMPI DUP1 PUSH4 0x9E0879C2 EQ PUSH2 0x1A5F JUMPI DUP1 PUSH4 0xA8175B27 EQ PUSH2 0x1A43 JUMPI DUP1 PUSH4 0xB9212B49 EQ PUSH2 0x19AC JUMPI DUP1 PUSH4 0xBFFB78B2 EQ PUSH2 0x1310 JUMPI DUP1 PUSH4 0xCD51C12F EQ PUSH2 0x12CF JUMPI DUP1 PUSH4 0xD0965A6B EQ PUSH2 0x12B1 JUMPI DUP1 PUSH4 0xD15126BA EQ PUSH2 0xEEF JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0xEB0 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0xCFA JUMPI DUP1 PUSH4 0xDE1A36A6 EQ PUSH2 0xCAD JUMPI DUP1 PUSH4 0xE085C5A8 EQ PUSH2 0xC12 JUMPI DUP1 PUSH4 0xE0D55605 EQ PUSH2 0xB4F JUMPI DUP1 PUSH4 0xE253670A EQ PUSH2 0x9F3 JUMPI DUP1 PUSH4 0xE2A92B1A EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xE2CB0BA0 EQ PUSH2 0x710 JUMPI DUP1 PUSH4 0xEBC7955C EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0xF21C38CD EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xF2784E07 EQ PUSH2 0x2A8 JUMPI PUSH4 0xFBFA77CF EQ PUSH2 0x262 JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x20 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2CF PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2F8 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xD DUP4 MSTORE KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x323 PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x34C PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x355 DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH2 0x379 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x37AB JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 DUP4 PUSH2 0x3A3 PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST PUSH2 0x313F JUMP JUMPDEST SHR AND DUP3 PUSH2 0x43B JUMPI JUMPDEST POP POP ISZERO PUSH2 0x40F JUMPI PUSH1 0x20 PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH0 SWAP2 DUP6 DUP4 MSTORE DUP3 DUP5 MSTORE AND PUSH1 0x40 DUP3 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST POP PUSH32 0xFDCD689400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x474 JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0x3AB JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x4BB PUSH2 0x2FD3 JUMP JUMPDEST PUSH32 0x0 PUSH2 0x4E5 DUP2 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 SWAP3 DUP1 DUP5 DUP7 ADD SWAP3 PUSH32 0x5DCACD6400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x44 DUP7 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x84 DUP7 ADD MSTORE CALLER PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xA4 DUP6 MSTORE PUSH1 0xE0 DUP6 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP7 DUP4 LT DUP5 DUP5 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x1F SWAP5 DUP4 DUP10 DUP1 SWAP5 PUSH1 0x44 DUP12 DUP5 SWAP7 DUP6 PUSH1 0x40 MSTORE PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP13 PUSH1 0xE4 DUP4 ADD MSTORE DUP5 DUP3 MLOAD SWAP2 DUP3 PUSH2 0x104 DUP6 ADD MSTORE DUP3 PUSH2 0x124 SWAP2 DUP3 DUP7 ADD MCOPY DUP4 DUP4 ADD ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP12 ADD DUP12 AND DUP2 ADD SUB ADD SWAP4 AND GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x6D8 JUMPI DUP7 SWAP6 PUSH2 0x618 JUMPI JUMPDEST POP POP POP POP PUSH1 0x40 DUP3 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x614 JUMPI PUSH1 0x40 DUP1 SWAP4 POP DUP2 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 POP RETURNDATASIZE DUP1 DUP8 DUP5 RETURNDATACOPY PUSH2 0x62D DUP2 DUP5 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP2 DUP6 DUP3 PUSH1 0xE0 DUP6 ADD SWAP5 SUB SLT PUSH2 0x6D4 JUMPI MLOAD SWAP1 DUP4 DUP3 GT PUSH2 0x6D4 JUMPI ADD DUP2 PUSH1 0xFF DUP3 ADD SLT ISZERO PUSH2 0x6D0 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD SWAP2 PUSH2 0x100 SWAP4 DUP4 GT PUSH2 0x6A3 JUMPI SWAP1 DUP7 SWAP4 SWAP3 SWAP2 PUSH2 0x67B DUP8 PUSH1 0x40 MLOAD SWAP8 PUSH1 0x1F DUP7 ADD AND ADD DUP8 PUSH2 0x30DF JUMP JUMPDEST DUP3 DUP7 MSTORE DUP4 DUP4 DUP4 ADD ADD GT PUSH2 0x69F JUMPI DUP6 SWAP3 DUP3 SWAP2 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x5EC JUMP JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH1 0x24 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH2 0x75A CALLDATASIZE PUSH2 0x2FE9 JUMP JUMPDEST PUSH2 0x788 SWAP6 SWAP2 SWAP3 SWAP5 SWAP6 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x790 PUSH2 0x3479 JUMP JUMPDEST PUSH2 0x798 PUSH2 0x35B9 JUMP JUMPDEST PUSH2 0x7A1 DUP7 PUSH2 0x34CA JUMP JUMPDEST PUSH2 0x7A9 PUSH2 0x33D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP8 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP6 DUP7 DUP3 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x6D8 JUMPI DUP7 SWAP3 PUSH2 0x9C4 JUMPI JUMPDEST POP DUP5 DUP7 MSTORE PUSH1 0xE DUP8 MSTORE DUP1 PUSH1 0x40 DUP8 KECCAK256 SLOAD AND SWAP2 AND DUP1 SWAP2 SUB PUSH2 0x994 JUMPI DUP4 DUP6 MSTORE PUSH1 0xB DUP7 MSTORE PUSH1 0x40 DUP6 KECCAK256 SLOAD SWAP8 PUSH1 0xD DUP8 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP2 PUSH2 0x852 PUSH2 0x846 DUP6 DUP9 DUP7 PUSH2 0x372C JUMP JUMPDEST SWAP12 PUSH1 0x80 SHR SWAP5 DUP8 DUP7 PUSH2 0x372C JUMP JUMPDEST SWAP10 DUP1 DUP13 GT PUSH2 0x960 JUMPI POP DUP1 DUP11 GT PUSH2 0x92C JUMPI POP SWAP4 PUSH2 0x8FD SWAP4 PUSH2 0x8CD PUSH1 0x40 SWAP13 SWAP5 PUSH2 0x8C7 DUP13 PUSH2 0x8C1 DUP16 PUSH2 0x8DF SWAP9 PUSH2 0x8BC DUP15 PUSH2 0x8B3 PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP16 PUSH2 0x8AD DUP7 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 PUSH2 0x381C JUMP JUMPDEST PUSH2 0x8AD DUP7 PUSH2 0x37C7 JUMP JUMPDEST PUSH2 0x314D JUMP JUMPDEST SWAP3 PUSH2 0x314D JUMP JUMPDEST SWAP1 PUSH2 0x3557 JUMP JUMPDEST SWAP4 DUP8 DUP10 MSTORE PUSH1 0xB DUP11 MSTORE DUP5 DUP14 DUP11 KECCAK256 SSTORE PUSH2 0x3627 JUMP JUMPDEST DUP9 MLOAD SWAP2 DUP3 SWAP2 DUP9 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST DUP8 PUSH1 0x64 SWAP2 DUP12 DUP10 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP9 PUSH1 0x64 SWAP2 DUP14 DUP6 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP5 PUSH1 0x44 SWAP2 DUP6 PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH2 0x9E5 SWAP2 SWAP3 POP DUP8 RETURNDATASIZE DUP10 GT PUSH2 0x9EC JUMPI JUMPDEST PUSH2 0x9DD DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3120 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x7F5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x9D3 JUMP JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xA0D PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xA3A PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xA43 DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xB27 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xAFF JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xAD7 JUMPI PUSH32 0x606EB97D83164BD6B200D638CD49C14C65D94D4F2C674CFD85E24E0E202C3CA5 SWAP2 PUSH2 0xAC2 PUSH1 0x20 SWAP3 PUSH2 0xAB3 PUSH1 0x42 SWAP1 JUMP JUMPDEST SWAP1 PUSH5 0x174876E800 DUP5 DIV SWAP1 PUSH2 0x3950 JUMP JUMPDEST DUP5 DUP7 MSTORE DUP6 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xB89 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xB91 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH2 0xBEA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x91D7478835F2B5ADC315F5AAD920F4A7F0A02F7FDDF3042D17B2C80168EA17F5 DUP2 DUP1 LOG1 DUP1 RETURN JUMPDEST DUP1 PUSH32 0x69F8CBC00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xC4C PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xC54 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xCE7 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xCEF PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0xCF7 PUSH2 0x36DB JUMP JUMPDEST DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xD1C PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0xD45 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xD4E DUP2 PUSH2 0x342E JUMP JUMPDEST AND DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH2 0xE85 JUMPI DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0xD8B PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0xE1F JUMPI JUMPDEST POP POP ISZERO DUP1 PUSH2 0xE10 JUMPI JUMPDEST PUSH2 0xE03 JUMPI JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH2 0xE0B PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0xDA1 JUMP JUMPDEST POP PUSH2 0xE19 PUSH2 0x339B JUMP JUMPDEST ISZERO PUSH2 0xD9C JUMP JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0xE58 JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0xD93 JUMP JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH32 0x346D760700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xF09 PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0xF35 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xF3E DUP3 PUSH2 0x342E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP3 DUP4 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x40 DUP8 KECCAK256 ADD SLOAD AND SWAP1 DUP2 ISZERO PUSH0 EQ PUSH2 0x1282 JUMPI PUSH2 0xF70 SWAP2 POP PUSH2 0x3997 JUMP JUMPDEST PUSH2 0xF78 PUSH2 0x339B JUMP JUMPDEST PUSH2 0x125A JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0xFA1 PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x11F4 JUMPI JUMPDEST POP POP PUSH2 0x11C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1168 JUMPI DUP6 SWAP2 PUSH2 0x119B JUMPI JUMPDEST POP DUP3 LT PUSH2 0x1173 JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1168 JUMPI DUP6 SWAP2 PUSH2 0x1137 JUMPI JUMPDEST POP DUP3 GT PUSH2 0x110F JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD SWAP2 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x10E7 JUMPI PUSH5 0x174876E800 DUP2 DIV SWAP3 DUP4 PUSH1 0x18 SHR PUSH2 0x10BF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP5 DUP7 DUP9 MSTORE DUP8 DUP6 MSTORE PUSH1 0x12 SHL SWAP2 AND OR PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1161 JUMPI JUMPDEST PUSH2 0x114E DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH0 PUSH2 0x102E JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x1144 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP8 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x11C1 JUMPI JUMPDEST PUSH2 0x11B2 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH0 PUSH2 0xFEB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x11A8 JUMP JUMPDEST PUSH1 0x24 DUP5 DUP5 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x122D JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x24 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLER EQ PUSH2 0xF70 JUMPI PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x132A PUSH2 0x2FD3 JUMP JUMPDEST SWAP1 PUSH2 0x1354 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x135D DUP3 PUSH2 0x342E JUMP JUMPDEST PUSH2 0x1365 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 DUP3 KECCAK256 SLOAD PUSH1 0x3 SHR AND ISZERO PUSH2 0x1978 JUMPI PUSH2 0x138D PUSH2 0x33D9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0xE0 DUP4 ADD DUP4 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE PUSH0 DUP4 MSTORE PUSH1 0x60 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP8 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 DUP7 DUP2 MSTORE ADD SWAP1 PUSH0 MSTORE DUP2 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x1955 JUMPI POP PUSH2 0x1438 SWAP3 POP SUB DUP3 PUSH2 0x30DF JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x1446 DUP4 PUSH2 0x31BF JUMP JUMPDEST PUSH2 0x1453 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x30DF JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1480 DUP6 PUSH2 0x31BF JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x192C JUMPI POP POP PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x149A DUP4 PUSH2 0x31D7 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x14A8 DUP4 PUSH2 0x31D7 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE DUP6 MLOAD PUSH5 0xFFFFFFFFFF PUSH2 0x14BE DUP6 PUSH2 0x31D7 JUMP JUMPDEST SWAP2 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x18F0 JUMPI POP POP PUSH1 0xC0 DUP8 ADD MSTORE PUSH2 0x14DC DUP4 PUSH2 0x31D7 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MSTORE DUP6 MLOAD SWAP2 PUSH1 0x1 DUP4 DUP2 SHR AND SWAP3 DUP4 PUSH2 0x18DC JUMPI JUMPDEST POP DUP3 PUSH2 0x18CC JUMPI JUMPDEST PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x15EE JUMPI DUP8 DUP8 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1562 JUMPI SWAP1 PUSH2 0x1550 PUSH2 0x153A DUP3 PUSH1 0x1 SWAP5 PUSH2 0x3226 JUMP JUMPDEST MLOAD PUSH2 0x1549 DUP4 PUSH1 0x80 DUP11 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3557 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x151C JUMP JUMPDEST DUP5 DUP4 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 SWAP2 LOG2 DUP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1604 DUP3 PUSH1 0x20 DUP12 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x161E DUP4 PUSH2 0x30C3 JUMP JUMPDEST SLOAD PUSH1 0xFF SWAP1 DUP2 DUP2 AND PUSH2 0x162E DUP2 PUSH2 0x3A2E JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x1674 DUP3 PUSH1 0x40 DUP13 ADD MLOAD DUP4 PUSH2 0x166E DUP4 DUP4 PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x3226 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1680 DUP2 PUSH2 0x3A2E JUMP JUMPDEST PUSH2 0x1689 DUP2 PUSH2 0x3A2E JUMP JUMPDEST DUP1 PUSH2 0x1805 JUMPI POP PUSH8 0xDE0B6B3A7640000 JUMPDEST PUSH2 0x16A7 DUP4 PUSH1 0xA0 DUP14 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x16C5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP13 PUSH2 0x3A88 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x17FB JUMPI PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP2 PUSH2 0x17DD JUMPI JUMPDEST POP PUSH2 0x16EA JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x14FA JUMP JUMPDEST DUP9 PUSH2 0x16F5 DUP2 MLOAD PUSH2 0x3A65 JUMP JUMPDEST PUSH2 0x1703 DUP4 PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x80 SHR PUSH2 0x1717 DUP5 PUSH1 0x80 PUSH0 SWAP6 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x174E JUMPI JUMPDEST POP POP POP PUSH1 0x1 SWAP3 DUP2 PUSH2 0x1733 JUMPI JUMPDEST POP POP PUSH2 0x16DF JUMP JUMPDEST PUSH2 0x1747 SWAP2 PUSH2 0x1740 SWAP2 PUSH2 0x30A2 JUMP JUMPDEST DUP3 DUP12 PUSH2 0x3A88 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x1759 SWAP4 POP SUB PUSH2 0x3058 JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH1 0x1 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x17B8 DUP12 PUSH2 0x17B1 DUP6 PUSH1 0xA0 PUSH2 0x17A8 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3058 JUMP JUMPDEST DUP2 DUP6 DUP2 MUL DIV DUP6 EQ DUP3 ISZERO OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x1 SWAP5 PUSH2 0x17D4 SWAP3 MUL PUSH2 0x306B JUMP JUMPDEST SWAP1 SWAP3 PUSH0 DUP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x17EB DUP2 PUSH2 0x3A2E JUMP JUMPDEST PUSH2 0x17F4 DUP2 PUSH2 0x3A2E JUMP JUMPDEST EQ PUSH0 PUSH2 0x16D9 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x16E4 JUMP JUMPDEST DUP1 PUSH2 0x1811 PUSH1 0x1 SWAP3 PUSH2 0x3A2E JUMP JUMPDEST SUB PUSH2 0x18A4 JUMPI PUSH1 0x4 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP5 ADD MLOAD AND PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1899 JUMPI PUSH0 SWAP2 PUSH2 0x1867 JUMPI JUMPDEST POP PUSH2 0x1699 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1891 JUMPI JUMPDEST DUP2 PUSH2 0x1882 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH0 PUSH2 0x1861 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP7 MLOAD PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 POP PUSH2 0x14F8 JUMP JUMPDEST PUSH2 0x18E7 SWAP2 SWAP4 POP PUSH2 0x3A65 JUMP JUMPDEST ISZERO ISZERO SWAP2 PUSH0 PUSH2 0x14F1 JUMP JUMPDEST PUSH1 0x5 DUP2 MUL SWAP1 DUP1 DUP3 DIV PUSH1 0x5 EQ DUP2 ISZERO OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x4D PUSH1 0x1F DUP5 DUP5 SHR AND GT PUSH2 0x474 JUMPI PUSH1 0x1F DUP4 PUSH1 0x1 SWAP4 SHR AND PUSH1 0xA EXP PUSH2 0x1925 DUP3 DUP7 PUSH2 0x3226 JUMP JUMPDEST MSTORE ADD PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x193B DUP2 PUSH2 0x30C3 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x1483 JUMP JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 SLOAD AND DUP2 MSTORE ADD SWAP4 ADD SWAP2 ADD SWAP2 DUP4 SWAP2 SWAP3 PUSH2 0x1424 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 SWAP3 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x19E6 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x19EE PUSH2 0x32A0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x2 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x1A99 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x1AA1 PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0x1AA9 PUSH2 0x339B JUMP JUMPDEST ISZERO PUSH2 0x1AD6 JUMPI PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP LT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST PUSH32 0xE4460B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x1B9F PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP1 SWAP5 SUB PUSH2 0x115D JUMPI PUSH1 0x40 SWAP3 PUSH2 0x1BE1 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EA5 JUMPI PUSH2 0x1C1A PUSH2 0x2FD3 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0x1C45 DUP2 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x1C4D PUSH2 0x3479 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0x1E7D JUMPI SWAP4 DUP1 DUP5 PUSH1 0x24 DUP8 PUSH2 0x1C71 DUP4 SWAP10 PUSH2 0x342E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP4 DUP5 SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x1E70 JUMPI DUP2 SWAP5 PUSH2 0x1DD0 JUMPI JUMPDEST POP DUP4 MLOAD SWAP3 PUSH2 0x1CCB PUSH2 0x1CC5 DUP6 PUSH2 0x31D7 JUMP JUMPDEST SWAP5 PUSH2 0x31D7 JUMP JUMPDEST SWAP1 DUP3 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1DA2 JUMPI DUP1 DUP9 PUSH2 0x1CE5 PUSH1 0x1 SWAP4 DUP11 PUSH2 0x3226 JUMP JUMPDEST MLOAD AND DUP7 DUP7 MSTORE PUSH1 0x6 SWAP1 DUP2 DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH1 0x80 SHR PUSH2 0x1D1D DUP7 DUP11 PUSH2 0x3226 JUMP JUMPDEST MSTORE AND PUSH2 0x1D29 DUP5 DUP12 PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x1D34 DUP4 DUP11 PUSH2 0x3226 JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D8F JUMPI JUMPDEST PUSH2 0x1D4B JUMPI JUMPDEST POP POP ADD PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0x1D88 SWAP2 DUP9 DUP9 MSTORE DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE DUP7 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH2 0x1D82 PUSH2 0x1D70 DUP5 DUP12 PUSH2 0x3226 JUMP JUMPDEST MLOAD PUSH2 0x1D7B DUP6 DUP10 PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x314D JUMP JUMPDEST SWAP1 PUSH2 0x3517 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1D43 JUMP JUMPDEST POP PUSH2 0x1D9A DUP4 DUP8 PUSH2 0x3226 JUMP JUMPDEST MLOAD ISZERO ISZERO PUSH2 0x1D3E JUMP JUMPDEST PUSH2 0x1DBF DUP7 PUSH2 0x1DCC DUP5 DUP7 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x3025 JUMP JUMPDEST SWAP2 DUP5 DUP4 SUB SWAP1 DUP6 ADD MSTORE PUSH2 0x3025 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x1DE2 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP1 DUP4 DUP2 DUP4 SUB SLT PUSH2 0x1E6C JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6D0 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E6C JUMPI DUP2 MLOAD PUSH2 0x1E18 DUP2 PUSH2 0x31BF JUMP JUMPDEST SWAP3 PUSH2 0x1E26 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x30DF JUMP JUMPDEST DUP2 DUP5 MSTORE DUP6 DUP1 DUP6 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6D4 JUMPI DUP6 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1E50 JUMPI POP POP POP SWAP3 PUSH0 PUSH2 0x1CB5 JUMP JUMPDEST DUP2 MLOAD DUP9 DUP2 AND DUP2 SUB PUSH2 0x1E68 JUMPI DUP2 MSTORE SWAP1 DUP6 ADD SWAP1 DUP6 ADD PUSH2 0x1E3F JUMP JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x1F24 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F2E PUSH2 0x339B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH4 0xFFFFFFFF DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH2 0x1FD6 DUP4 PUSH2 0x315A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x2018 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2020 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD AND OR PUSH1 0x9 SSTORE PUSH2 0xCF7 PUSH2 0x36DB JUMP JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH2 0x2062 CALLDATASIZE PUSH2 0x2FE9 JUMP JUMPDEST SWAP5 SWAP3 PUSH2 0x2090 SWAP3 SWAP2 SWAP3 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2098 PUSH2 0x3479 JUMP JUMPDEST PUSH2 0x20A0 PUSH2 0x35B9 JUMP JUMPDEST PUSH2 0x20A8 PUSH2 0x33D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 DUP7 AND SWAP4 DUP5 DUP7 MSTORE PUSH1 0x20 SWAP8 PUSH1 0xE DUP10 MSTORE DUP1 PUSH1 0x40 DUP9 KECCAK256 SLOAD AND PUSH2 0x23A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP10 DUP2 PUSH1 0x4 DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x234E JUMPI DUP9 SWAP2 PUSH2 0x2385 JUMPI JUMPDEST POP AND DUP1 ISZERO PUSH2 0x2359 JUMPI PUSH2 0x214E SWAP1 DUP7 DUP9 MSTORE PUSH1 0xE DUP11 MSTORE PUSH1 0x40 DUP9 KECCAK256 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x8AD DUP6 PUSH2 0x37C7 JUMP JUMPDEST PUSH2 0x2160 PUSH2 0x215A DUP6 PUSH2 0x37C7 JUMP JUMPDEST DUP7 PUSH2 0x381C JUMP JUMPDEST PUSH2 0x216A DUP5 DUP5 PUSH2 0x3557 JUMP JUMPDEST SWAP2 DUP6 DUP8 MSTORE PUSH1 0xB DUP10 MSTORE DUP3 PUSH1 0x40 DUP9 KECCAK256 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP6 PUSH1 0x4 DUP3 ADD MSTORE DUP10 DUP2 PUSH1 0x24 DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0x234E JUMPI DUP6 SWAP1 DUP10 SWAP1 PUSH2 0x231D JUMPI JUMPDEST PUSH2 0x21C5 SWAP3 POP PUSH2 0x314D JUMP JUMPDEST SWAP8 PUSH2 0x21CF DUP10 PUSH2 0x35F0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8F0 DUP10 ADD SWAP9 DUP10 GT PUSH2 0x22F0 JUMPI PUSH2 0x2252 SWAP2 DUP10 SWAP2 DUP10 DUP10 PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 DUP15 DUP3 DUP5 MSTORE PUSH1 0xD DUP2 MSTORE PUSH2 0x2710 DUP1 PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 DUP6 KECCAK256 PUSH0 DUP1 MSTORE DUP3 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 PUSH2 0x3627 JUMP JUMPDEST DUP1 DUP8 LT PUSH2 0x22C0 JUMPI POP PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP1 PUSH1 0x60 SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP6 PUSH1 0x44 SWAP2 DUP9 PUSH32 0xDA0CB07E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH1 0x24 DUP9 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST POP POP DUP10 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2347 JUMPI JUMPDEST PUSH2 0x2334 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI DUP5 PUSH2 0x21C5 SWAP2 MLOAD PUSH2 0x21BB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP11 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0xD407F9C500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x239C SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x9EC JUMPI PUSH2 0x9DD DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST PUSH0 PUSH2 0x2106 JUMP JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0x1690FA4000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x23E8 PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x2415 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x241E DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xB27 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xAFF JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xAD7 JUMPI DUP2 PUSH2 0xAC2 PUSH1 0x20 SWAP3 PUSH5 0x174876E800 PUSH32 0xE4D371097BEEA42453A37406E2AEF4C04F3C548F84AC50E72578662C0DCD7354 SWAP6 DIV SWAP1 PUSH2 0x390E JUMP JUMPDEST POP CALLVALUE PUSH2 0x115D JUMPI PUSH2 0x24A3 CALLDATASIZE PUSH2 0x2FE9 JUMP JUMPDEST SWAP5 SWAP1 SWAP3 SWAP2 SWAP4 SWAP5 PUSH32 0x0 PUSH2 0x24D3 DUP2 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER SUB PUSH2 0x297A JUMPI PUSH2 0x24EB PUSH2 0x3479 JUMP JUMPDEST PUSH2 0x24F4 DUP8 PUSH2 0x34CA JUMP JUMPDEST ORIGIN ISZERO DUP1 DUP1 PUSH2 0x296D JUMPI JUMPDEST PUSH2 0x2905 JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH0 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP5 GT PUSH2 0x28DD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP6 PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP7 PUSH2 0x258A PUSH2 0x257C DUP10 PUSH2 0x2577 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x3058 JUMP JUMPDEST PUSH2 0x306B JUMP JUMPDEST SWAP9 PUSH2 0x2577 DUP9 DUP5 PUSH1 0x80 SHR PUSH2 0x3058 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP3 DUP1 DUP11 LT PUSH2 0x28AA JUMPI POP DUP1 DUP9 LT PUSH2 0x286E JUMPI POP PUSH2 0x2605 SWAP1 PUSH2 0x25C9 DUP10 DUP5 PUSH2 0x3517 JUMP JUMPDEST PUSH2 0x25DC DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH2 0x3517 JUMP JUMPDEST PUSH2 0x8C7 DUP9 PUSH2 0x25FC DUP12 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x30A2 JUMP JUMPDEST SWAP3 PUSH1 0x80 SHR PUSH2 0x30A2 JUMP JUMPDEST SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE DUP6 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x2846 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH2 0x264B DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x30A2 JUMP JUMPDEST PUSH2 0x2654 DUP2 PUSH2 0x35F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x2691 DUP3 DUP3 SLOAD PUSH2 0x30A2 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x4E09F7F7FC37CE2897800E2C2A9099565EDB0A133D19D84A6871B3530AF8846B PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP3 LOG3 DUP7 PUSH2 0x27C5 JUMPI JUMPDEST POP DUP5 PUSH2 0x2735 JUMPI JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH32 0x44D97B36E99B590B3D2875AAD3B167B1D7FB1E063F3F1325A1EEAC76CAEE5113 SWAP2 POP PUSH1 0x60 SWAP1 LOG2 DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH2 0x614 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 DUP9 DUP6 DUP4 DUP2 SWAP6 DUP2 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP9 MSTORE AND PUSH1 0x4 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 PUSH1 0x44 DUP6 ADD MSTORE AND GAS CALL DUP1 ISZERO PUSH2 0x27BA JUMPI PUSH2 0x27A6 JUMPI JUMPDEST DUP1 PUSH2 0x26E0 JUMP JUMPDEST PUSH2 0x27B0 DUP3 SWAP2 PUSH2 0x30AF JUMP JUMPDEST PUSH2 0x2A5 JUMPI DUP1 PUSH2 0x27A0 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x115D JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS CALL DUP1 ISZERO PUSH2 0x1899 JUMPI ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x283E SWAP2 SWAP4 POP PUSH2 0x30AF JUMP JUMPDEST PUSH0 SWAP2 PUSH0 PUSH2 0x26D9 JUMP JUMPDEST PUSH32 0x586D06DF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST DUP10 DUP5 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0x98C5DBD600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ISZERO PUSH2 0x2945 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH0 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x293D DUP6 DUP3 SLOAD PUSH2 0x314D JUMP JUMPDEST SWAP1 SSTORE PUSH0 PUSH2 0x2502 JUMP JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO PUSH2 0x24FD JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x29DF PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x2A0D PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2A36 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2A3F DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH2 0x2A63 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x37AB JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP4 PUSH2 0x2A89 PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP2 PUSH2 0x2B62 JUMPI JUMPDEST POP ISZERO PUSH2 0x2AC3 JUMPI DUP3 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x2ACE PUSH1 0x5A PUSH2 0x313F JUMP JUMPDEST SHR AND TIMESTAMP LT ISZERO PUSH2 0x2B36 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x4 SWAP2 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE AND OR PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 STOP JUMPDEST POP PUSH32 0xEB5A121700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x474 JUMPI DUP2 AND TIMESTAMP GT ISZERO DUP5 PUSH2 0x2A91 JUMP JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2BF5 PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2C1E PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 SLOAD DUP2 MLOAD SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x80 SHR PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x8 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 SWAP2 SUB PUSH2 0x115D JUMPI PUSH2 0x2CB7 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2CBF PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0x2CC7 PUSH2 0x33D9 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA SLOAD AND OR PUSH1 0xA SSTORE PUSH32 0x280A60B1E63C1774D397D35CCE80EB80E51408EAD755FB446E6F744CE98E5DF0 PUSH0 DUP1 LOG2 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2710 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x2DCF PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2DD7 PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0x2DDF PUSH2 0x339B JUMP JUMPDEST ISZERO PUSH2 0x2E39 JUMPI PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH32 0xF7FF4DCA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x2E9A PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2EA4 PUSH2 0x339B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x115D JUMPI PUSH2 0x2EFD PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2F05 PUSH2 0x32A0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH32 0x94B979B6831A51293E2641426F97747FEED46F17779FED9CD18D1ECEFCFE92EF PUSH0 DUP1 LOG2 STOP JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH2 0x2F8B PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2FB4 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x115D JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x115D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x115D JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x115D JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x3044 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x3036 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x474 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3075 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x474 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x115D JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x474 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x474 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x31B9 DUP2 PUSH2 0x30C3 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E3 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x31E1 DUP3 PUSH2 0x31BF JUMP JUMPDEST PUSH2 0x31EE PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x30DF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x321C DUP3 SWAP5 PUSH2 0x31BF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x323A JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS SUB PUSH2 0x3278 JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x332A PUSH1 0x20 PUSH2 0x32D1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x315A JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 PUSH1 0x8 SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1899 JUMPI PUSH0 SWAP2 PUSH2 0x336C JUMPI JUMPDEST POP ISZERO PUSH2 0x3344 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x338E SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3394 JUMPI JUMPDEST PUSH2 0x3386 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3793 JUMP JUMPDEST PUSH0 PUSH2 0x333C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x337C JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x33CD JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x3406 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x344E JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x34A2 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x34EC JUMPI POP JUMP JUMPDEST PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x3521 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x474 JUMPI PUSH2 0x3555 SWAP2 PUSH0 SUB SWAP1 PUSH2 0x381C JUMP JUMPDEST JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 GT SWAP1 DUP2 ISZERO PUSH2 0x35AF JUMPI JUMPDEST POP PUSH2 0x3587 JUMPI PUSH2 0x3584 SWAP2 PUSH1 0x80 SHL PUSH2 0x314D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP3 GT PUSH0 PUSH2 0x3573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH2 0x35C8 JUMPI JUMP JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x35FC JUMPI POP JUMP JUMPDEST PUSH32 0x34BDBFAA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x36B3 JUMPI PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 SWAP2 PUSH1 0x20 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0xD DUP3 MSTORE PUSH2 0x3677 DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x314D JUMP JUMPDEST PUSH2 0x3680 DUP2 PUSH2 0x35F0 JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x36A8 DUP3 DUP3 SLOAD PUSH2 0x314D JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH32 0xDBE6B10E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xBD204090FD387F08E3076528BF09B4FC99D8100D749EACE96C06002D3FEDC625 PUSH0 DUP1 LOG1 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x376B JUMPI PUSH1 0x1 SWAP2 PUSH2 0x373E SWAP2 PUSH2 0x3058 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x115D JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x115D JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x37C4 JUMPI PUSH2 0x3555 SWAP1 PUSH2 0x3997 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37F1 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x390A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 SWAP2 AND DUP1 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP4 DUP2 ADD SWAP4 DUP5 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x474 JUMPI DUP4 PUSH2 0x38D1 JUMPI POP PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD SWAP2 DUP3 GT PUSH2 0x474 JUMPI TSTORE JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH2 0x38C5 JUMPI PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x474 JUMPI TSTORE PUSH2 0x38C5 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x10BF JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x3928 JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x474 JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x3992 JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x3928 JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x10BF JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3974 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x332A SWAP2 PUSH2 0x39C9 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x315A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP5 DUP3 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER SWAP1 PUSH1 0x4 DUP6 ADD SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH1 0x60 DUP5 ADD SWAP6 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3A38 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x474 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3AD8 PUSH2 0x3AE1 SWAP5 DUP1 PUSH2 0x3AAB DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x3AD3 PUSH2 0x3ABD DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD PUSH2 0x3ACC DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x3058 JUMP JUMPDEST PUSH2 0x3058 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SMOD OR 0xD3 0xC1 0xDC PUSH30 0x9474A1321C1A9923B0E4AAF9FCC273B0690517E6C96F18109FFF64736F6C PUSH4 0x4300081A STOP CALLER ","sourceMap":"2072:32096:65:-:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;3400:40:69;2072:32096:65;;;;;:::i;:::-;;;;-1:-1:-1;;;2072:32096:65;;;;3400:40:69;:::i;:::-;;;3501:47;2072:32096:65;;;;;:::i;:::-;;;;-1:-1:-1;;;2072:32096:65;;;;3501:47:69;:::i;:::-;;;3601:41;2072:32096:65;;;;;:::i;:::-;;;;-1:-1:-1;;;2072:32096:65;;;;3601:41:69;:::i;:::-;;;;;;3703:48;2072:32096:65;;;;;:::i;:::-;;;;-1:-1:-1;;;2072:32096:65;;;;3703:48:69;:::i;:::-;;;;;;3802:39;2072:32096:65;;;;;:::i;:::-;;;;-1:-1:-1;;;2072:32096:65;;;;3802:39:69;:::i;:::-;;;;;;1347:46:35;;;;409:14:68;;;;2072:32096:65;;;;3503:48;2194:12:69;3503:48:65;;3499:120;;2072:32096;;;3632:50;2268:8:69;3632:50:65;;3628:123;;3844:15;2268:8:69;3844:15:65;;;2268:8:69;;;15369:24:111;;;15365:103;;-1:-1:-1;2072:32096:65;;3904:45;;;;3959:49;;;;2268:8:69;;;;;;;4018:69:65;;;;2072:32096;4098:38;2072:32096;4146:36;2072:32096;;;;;;;;;;;;;;;;;;;;3400:40:69;2072:32096:65;;;;;3501:47:69;2072:32096:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2268:8:69;;;;-1:-1:-1;2268:8:69;2072:32096:65;2268:8:69;;;-1:-1:-1;2268:8:69;15365:103:111;15416:41;;;-1:-1:-1;15416:41:111;;2072:32096:65;;;;-1:-1:-1;15416:41:111;3628:123:65;3705:35;;;-1:-1:-1;3705:35:65;;-1:-1:-1;3705:35:65;3499:120;3574:34;;;-1:-1:-1;3574:34:65;;-1:-1:-1;3574:34:65;2072:32096;-1:-1:-1;2072:32096:65;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;:::o;:::-;2268:8:69;;;2072:32096:65;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;9892:177:69:-;2072:32096:65;;;;;;:::i;:::-;;;;1461:67:44;2072:32096:65;;;;-1:-1:-1;;;2072:32096:65;;;;;1461:67:44;;;;;;2072:32096:65;;;;;;;;;;;;;;-1:-1:-1;;;2072:32096:65;;;;;;;;;;;;;;;-1:-1:-1;2072:32096:65;;;;1461:67:44;;;;;;;;;:::i;:::-;2072:32096:65;1451:78:44;;-1:-1:-1;;2072:32096:65;;;;;;;;;1432:103:44;2072:32096:65;1432:103:44;;2072:32096:65;;;;1432:103:44;;;;;:::i;:::-;2072:32096:65;;1405:144:44;;-1:-1:-1;;1405:170:44;;9892:177:69:o"},"deployedBytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":12576,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":14227,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC4626":{"entryPoint":12243,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_contract_IERC4626t_uint256t_uint256t_uint256t_address":{"entryPoint":12265,"id":null,"parameterSlots":1,"returnSlots":5},"abi_encode_array_uint256_dyn":{"entryPoint":12325,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_address_address":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_uint256_bytes32":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":12759,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_contract_IERC20_dyn":{"entryPoint":12735,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":12621,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256_50116":{"entryPoint":12607,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_uint256":{"entryPoint":12395,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":12376,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":12450,"id":null,"parameterSlots":2,"returnSlots":1},"constant_AGGREGATE_YIELD_FEE_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_DECIMAL_SCALING_FACTORS_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":12511,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_49837":{"entryPoint":12463,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_50103":{"entryPoint":12483,"id":null,"parameterSlots":1,"returnSlots":0},"fun_accountDelta":{"entryPoint":14364,"id":24503,"parameterSlots":2,"returnSlots":0},"fun_authenticateCaller":{"entryPoint":12960,"id":5298,"parameterSlots":0,"returnSlots":0},"fun_disableQuery":{"entryPoint":14043,"id":23264,"parameterSlots":0,"returnSlots":0},"fun_ensureAuthenticated":{"entryPoint":14743,"id":24242,"parameterSlots":1,"returnSlots":0},"fun_ensureAuthenticatedByRole":{"entryPoint":14251,"id":24185,"parameterSlots":2,"returnSlots":0},"fun_ensureBufferInitialized":{"entryPoint":13514,"id":24774,"parameterSlots":1,"returnSlots":0},"fun_ensureBufferMinimumTotalSupply":{"entryPoint":13808,"id":24145,"parameterSlots":1,"returnSlots":0},"fun_ensureRegisteredPool":{"entryPoint":13358,"id":24686,"parameterSlots":1,"returnSlots":0},"fun_ensureUnlocked":{"entryPoint":13433,"id":24402,"parameterSlots":0,"returnSlots":0},"fun_ensureVaultBuffersAreNotPaused":{"entryPoint":13753,"id":24648,"parameterSlots":0,"returnSlots":0},"fun_ensureVaultDelegateCall":{"entryPoint":12903,"id":30600,"parameterSlots":1,"returnSlots":0},"fun_getActionId":{"entryPoint":12634,"id":5316,"parameterSlots":1,"returnSlots":1},"fun_getAggregateYieldFeePercentage":{"entryPoint":14949,"id":29722,"parameterSlots":1,"returnSlots":1},"fun_insertUint":{"entryPoint":14606,"id":7149,"parameterSlots":2,"returnSlots":1},"fun_insertUint_49840":{"entryPoint":14672,"id":7149,"parameterSlots":3,"returnSlots":1},"fun_isVaultPaused":{"entryPoint":13211,"id":24553,"parameterSlots":0,"returnSlots":1},"fun_mintBufferShares":{"entryPoint":13863,"id":23731,"parameterSlots":3,"returnSlots":0},"fun_mulDivUp":{"entryPoint":14124,"id":7660,"parameterSlots":3,"returnSlots":1},"fun_nonReentrantBefore":{"entryPoint":13273,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_supplyCredit":{"entryPoint":13591,"id":24430,"parameterSlots":2,"returnSlots":0},"fun_toInt256":{"entryPoint":14279,"id":44125,"parameterSlots":1,"returnSlots":1},"fun_toPackedBalance":{"entryPoint":13655,"id":5929,"parameterSlots":2,"returnSlots":1},"fun_updateRawAndLiveBalance":{"entryPoint":14984,"id":30517,"parameterSlots":3,"returnSlots":0},"memory_array_index_access_contract_IERC20_dyn":{"entryPoint":12838,"id":null,"parameterSlots":2,"returnSlots":1},"validator_assert_enum_TokenType":{"entryPoint":14894,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"5256":[{"length":32,"start":12677}],"27649":[{"length":32,"start":641},{"length":32,"start":724},{"length":32,"start":808},{"length":32,"start":1213},{"length":32,"start":1892},{"length":32,"start":2582},{"length":32,"start":2917},{"length":32,"start":3112},{"length":32,"start":3267},{"length":32,"start":3361},{"length":32,"start":3857},{"length":32,"start":4912},{"length":32,"start":6594},{"length":32,"start":6773},{"length":32,"start":7101},{"length":32,"start":7197},{"length":32,"start":7936},{"length":32,"start":8180},{"length":32,"start":8300},{"length":32,"start":9201},{"length":32,"start":9387},{"length":32,"start":10683},{"length":32,"start":10770},{"length":32,"start":11258},{"length":32,"start":11411},{"length":32,"start":11691},{"length":32,"start":11894},{"length":32,"start":11993},{"length":32,"start":12176}],"27733":[{"length":32,"start":1832}],"27735":[{"length":32,"start":11185}],"27740":[{"length":32,"start":13435}],"27745":[{"length":32,"start":14455},{"length":32,"start":14551}],"27750":[{"length":32,"start":14380}],"27804":[{"length":32,"start":6877},{"length":32,"start":7878},{"length":32,"start":7998}],"27806":[{"length":32,"start":4844},{"length":32,"start":8037},{"length":32,"start":13218}],"27808":[{"length":32,"start":1089},{"length":32,"start":3621},{"length":32,"start":4602},{"length":32,"start":11111},{"length":32,"start":11634}]},"linkReferences":{},"object":"6080604052600436101561009f575b361561007757346100775760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f803560e01c80630387587d14612f70578063058a628f14612eae578063098401f514612e615780630b7562be14612d9657806320c1fb7a14612d5657806326a8a99114612d3a5780632d77138914612c695780632e42f4d514612c4e5780634021fe0f14612bd457806353956aa214612b9a57806355aca1ec146129f457806355cba7fe146129a65780635dcacd64146124945780635e0b06f4146123ce578063653eb3b014612053578063821440f214611fde578063851c1bb314611f8c57806385c8c01514611eea5780638a8d123a14611ea95780638f4ab9ca14611bff5780639385e39a14611b855780639e0879c214611a5f578063a8175b2714611a43578063b9212b49146119ac578063bffb78b214611310578063cd51c12f146112cf578063d0965a6b146112b1578063d15126ba14610eef578063d2c725e014610eb0578063dc3f574e14610cfa578063de1a36a614610cad578063e085c5a814610c12578063e0d5560514610b4f578063e253670a146109f3578063e2a92b1a1461074b578063e2cb0ba014610710578063ebc7955c146104a1578063f21c38cd14610309578063f2784e07146102a85763fbfa77cf14610262575061000e565b346102a557806003193601126102a55760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346102a55760206003193601126102a55760406020916001600160a01b036102cf612fd3565b6102f87f0000000000000000000000000000000000000000000000000000000000000000613267565b168152600d83522054604051908152f35b50346102a55760206003193601126102a557610323612fd3565b61034c7f0000000000000000000000000000000000000000000000000000000000000000613267565b6103558161342e565b6103796001600160a01b039182811692835f52600160205260405f205416906137ab565b805f525f60205260405f205460018160021c1663ffffffff80836103a361039e605a90565b61313f565b1c168261043b575b50501561040f5760207f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5f91858352828452166040822055604051908152a280f35b507ffdcd6894000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161047457164211155f806103ab565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50346102a55760806003193601126102a5576104bb612fd3565b7f00000000000000000000000000000000000000000000000000000000000000006104e581613267565b6001600160a01b03906040519260209280848601927f5dcacd640000000000000000000000000000000000000000000000000000000084521660248601526024356044860152604435606486015260643560848601523360a486015260a4855260e085019067ffffffffffffffff92868310848411176106e357601f948389809460448b8496856040527f48c894910000000000000000000000000000000000000000000000000000000086528c60e4830152848251918261010485015282610124918286015e83830101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b018b168101030193165af19485156106d8578695610618575b5050505060408280518101031261061457604080935081830151920151908351928352820152f35b8280fd5b9091929394503d8087843e61062d81846130df565b810191858260e085019403126106d45751908382116106d457018160ff820112156106d05760e0810151916101009383116106a357908693929161067b8760405197601f86011601876130df565b82865283838301011161069f5785928291018386015e83010152905f8080806105ec565b8380fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8580fd5b8680fd5b6040513d88823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b50346102a557806003193601126102a55760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102a55761075a36612fe9565b61078895919294957f0000000000000000000000000000000000000000000000000000000000000000613267565b610790613479565b6107986135b9565b6107a1866134ca565b6107a96133d9565b6001600160a01b0392838716916040517f38d52e0f0000000000000000000000000000000000000000000000000000000081526020958682600481885afa9182156106d85786926109c4575b50848652600e875280604087205416911680910361099457838552600b8652604085205497600d87526040862054916fffffffffffffffffffffffffffffffff8a169161085261084685888661372c565b9b60801c94878661372c565b99808c116109605750808a1161092c5750936108fd936108cd60409c946108c78c6108c18f6108df986108bc8e6108b37f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a99f6108ad866137c7565b9061381c565b6108ad866137c7565b61314d565b9261314d565b90613557565b93878952600b8a52848d8a2055613627565b8851918291888a846040919493926060820195825260208201520152565b0390a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d8351928352820152f35b876064918b897f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b886064918d857f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b84604491857f36b18d09000000000000000000000000000000000000000000000000000000008352600452602452fd5b6109e5919250873d89116109ec575b6109dd81836130df565b810190613120565b905f6107f5565b503d6109d3565b50346102a55760406003193601126102a557610a0d612fd3565b60243590610a3a7f0000000000000000000000000000000000000000000000000000000000000000613267565b610a438161342e565b670de0b6b3a76400008211610b27576001600160a01b039081600a54163303610aff571690818352826020526040832054670de0b5cad2bef0008211610ad7577f606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca591610ac2602092610ab3604290565b9064174876e800840490613950565b8486528583526040862055604051908152a280f35b6004847f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b6004837f4c69ac5d000000000000000000000000000000000000000000000000000000008152fd5b50346102a557806003193601126102a557610b897f0000000000000000000000000000000000000000000000000000000000000000613267565b610b916132a0565b60ff60095416610bea577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe600754166007557f91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f58180a180f35b807f069f8cbc0000000000000000000000000000000000000000000000000000000060049252fd5b50346102a557806003193601126102a557610c4c7f0000000000000000000000000000000000000000000000000000000000000000613267565b610c546132a0565b60047ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60075416176007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5602060405160018152a180f35b50346102a557806003193601126102a557610ce77f0000000000000000000000000000000000000000000000000000000000000000613267565b610cef6132a0565b610cf76136db565b80f35b50346102a55760206003193601126102a5576001600160a01b03610d1c612fd3565b610d457f0000000000000000000000000000000000000000000000000000000000000000613267565b610d4e8161342e565b16808252816020526001604083205460031c16610e855780825281602052604082205460018160021c169063ffffffff8091610d8b61039e605a90565b1c1682610e1f575b50501580610e10575b610e03575b805f525f60205260405f2060087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff78254161790557fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9602060405160018152a280f35b610e0b6132a0565b610da1565b50610e1961339b565b15610d9c565b908092507f00000000000000000000000000000000000000000000000000000000000000001601818111610e5857164211155f80610d93565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b7f346d7607000000000000000000000000000000000000000000000000000000008252600452602490fd5b50346102a557806003193601126102a55760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b50346102a55760406003193601126102a557610f09612fd3565b602435610f357f0000000000000000000000000000000000000000000000000000000000000000613267565b610f3e8261342e565b6001600160a01b0380831692838552602091600183526001604087200154169081155f1461128257610f709150613997565b610f7861339b565b61125a57828452838152604084205460018160021c169063ffffffff8091610fa161039e605a90565b1c16826111f4575b50506111c8576040517fce20ece70000000000000000000000000000000000000000000000000000000081528181600481875afa90811561116857859161119b575b508210611173576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481875afa908115611168578591611137575b50821161110f57828452838152604084205491670de0b5cad2bef00081116110e75764174876e8008104928360181c6110bf577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff7f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a19486885287855260121b9116176040862055604051908152a280f35b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b6004857f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f7f47834b000000000000000000000000000000000000000000000000000000008152fd5b90508181813d8311611161575b61114e81836130df565b8101031261115d57515f61102e565b5f80fd5b503d611144565b6040513d87823e3d90fd5b6004847fbfb20688000000000000000000000000000000000000000000000000000000008152fd5b90508181813d83116111c1575b6111b281836130df565b8101031261115d57515f610feb565b503d6111a8565b602484847fd971f597000000000000000000000000000000000000000000000000000000008252600452fd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161122d57164211155f80610fa9565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004847fda9f8b34000000000000000000000000000000000000000000000000000000008152fd5b503314610f70576004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b50346102a557806003193601126102a5576020604051620f42408152f35b50346102a557806003193601126102a557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102a55760206003193601126102a55761132a612fd3565b906113547f0000000000000000000000000000000000000000000000000000000000000000613267565b61135d8261342e565b6113656132a0565b6001600160a01b0382168152806020526001604082205460031c16156119785761138d6133d9565b6040519160e0830183811067ffffffffffffffff8211176106e3576040525f8352606060208401526060604084015260608084015260606080840152606060a0840152606060c08401526001600160a01b0381165f52600560205260405f205f60205260405f205490600460205260405f2090600360205260405f2080549387526040519060208286815201905f528160205f20915f5b8781106119555750611438925003826130df565b6020870152611446836131bf565b61145360405191826130df565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611480856131bf565b015f5b81811061192c575050604087015261149a836131d7565b60608701526114a8836131d7565b6080870152855164ffffffffff6114be856131d7565b91605a1c165f5b8581106118f057505060c08701526114dc836131d7565b60a0870152855191600183811c1692836118dc575b50826118cc575b5f5b8481106115ee578787876001600160a01b0381165f52600560205260405f20905f5b60608501518051821015611562579061155061153a82600194613226565b516115498360808a0151613226565b5190613557565b815f528460205260405f20550161151c565b84835f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6001600160a01b03165f8181526020818152604080832080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7169055519182527fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a991a280f35b6001600160a01b036116048260208b0151613226565b51165f528160205260405f20906040519161161e836130c3565b5460ff9081811661162e81613a2e565b84526001600160a01b038160081c16602085015260a81c1615156040830152805f528360205260405f2054916116748260408c01518361166e8383613226565b52613226565b50805161168081613a2e565b61168981613a2e565b806118055750670de0b6b3a76400005b6116a78360a08d0151613226565b526116c56fffffffffffffffffffffffffffffffff8416838c613a88565b85156117fb576040810151151590816117dd575b506116ea575b600191505b016114fa565b886116f58151613a65565b611703836060840151613226565b519360801c6117178460805f950151613226565b5181811161174e575b50505060019281611733575b50506116df565b61174791611740916130a2565b828b613a88565b5f8061172c565b611759935003613058565b91670de0b6b3a7640000926001847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83010401901515026117b88b6117b18560a06117a88260c0860151613226565b51930151613226565b5190613058565b8185810204851482151715610474576001946117d4920261306b565b90925f80611720565b60019150516117eb81613a2e565b6117f481613a2e565b145f6116d9565b50600191506116e4565b80611811600192613a2e565b036118a457600460206001600160a01b038184015116604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115611899575f91611867575b50611699565b90506020813d602011611891575b81611882602093836130df565b8101031261115d57515f611861565b3d9150611875565b6040513d5f823e3d90fd5b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b865160031c6001161592506114f8565b6118e7919350613a65565b1515915f6114f1565b60058102908082046005148115171561047457604d601f84841c161161047457601f836001931c16600a0a6119258286613226565b52016114c5565b60209060405161193b816130c3565b5f81525f838201525f604082015282828601015201611483565b91506001602081926001600160a01b038654168152019301910191839192611424565b6001600160a01b036024927fef029adf00000000000000000000000000000000000000000000000000000000835216600452fd5b50346102a557806003193601126102a5576119e67f0000000000000000000000000000000000000000000000000000000000000000613267565b6119ee6132a0565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600754166007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a560206040515f8152a180f35b50346102a557806003193601126102a557602060405160028152f35b50346102a557806003193601126102a557611a997f0000000000000000000000000000000000000000000000000000000000000000613267565b611aa16132a0565b611aa961339b565b15611ad6577fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421015611b5d5760027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416176007557fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02602060405160018152a180f35b7f0e4460b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b50346102a55760406003193601126102a557611b9f612fd3565b602435916001600160a01b0380841680940361115d57604092611be17f0000000000000000000000000000000000000000000000000000000000000000613267565b168152600c60205220905f52602052602060405f2054604051908152f35b50346102a557602080600319360112611ea557611c1a612fd3565b907f0000000000000000000000000000000000000000000000000000000000000000611c4581613267565b611c4d613479565b6001600160a01b039283600a54163303611e7d57938084602487611c71839961342e565b60405197889384927fca4f28030000000000000000000000000000000000000000000000000000000084521696876004840152165afa938415611e70578194611dd0575b50835192611ccb611cc5856131d7565b946131d7565b90825b8651811015611da2578088611ce56001938a613226565b511686865260069081855260408720815f5285526fffffffffffffffffffffffffffffffff60405f20548060801c611d1d868a613226565b5216611d29848b613226565b52611d34838a613226565b5115801590611d8f575b611d4b575b505001611cce565b611d8891888852855260408720815f5285528660405f2055611d82611d70848b613226565b51611d7b8589613226565b519061314d565b90613517565b5f80611d43565b50611d9a8387613226565b511515611d3e565b611dbf86611dcc8486604051948594604086526040860190613025565b9184830390850152613025565b0390f35b9093503d8085833e611de281836130df565b8101908381830312611e6c5780519067ffffffffffffffff82116106d057019080601f83011215611e6c578151611e18816131bf565b92611e2660405194856130df565b818452858085019260051b8201019283116106d4578501905b828210611e5057505050925f611cb5565b81518881168103611e68578152908501908501611e3f565b8780fd5b8480fd5b50604051903d90823e3d90fd5b6004857f23dada53000000000000000000000000000000000000000000000000000000008152fd5b5080fd5b50346102a557806003193601126102a557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102a557806003193601126102a557611f247f0000000000000000000000000000000000000000000000000000000000000000613267565b6060611f2e61339b565b604051901515815263ffffffff807f00000000000000000000000000000000000000000000000000000000000000001660208301527f0000000000000000000000000000000000000000000000000000000000000000166040820152f35b50346102a55760206003193601126102a557600435907fffffffff00000000000000000000000000000000000000000000000000000000821682036102a5576020611fd68361315a565b604051908152f35b50346102a557806003193601126102a5576120187f0000000000000000000000000000000000000000000000000000000000000000613267565b6120206132a0565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006009541617600955610cf76136db565b50346102a55761206236612fe9565b94926120909291927f0000000000000000000000000000000000000000000000000000000000000000613267565b612098613479565b6120a06135b9565b6120a86133d9565b6001600160a01b039586861693848652602097600e8952806040882054166123a2576040517f38d52e0f00000000000000000000000000000000000000000000000000000000815289816004818a5afa90811561234e578891612385575b501680156123595761214e90868852600e8a5260408820817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556108ad856137c7565b61216061215a856137c7565b8661381c565b61216a8484613557565b91858752600b89528260408820556040517f4cdad50600000000000000000000000000000000000000000000000000000000815285600482015289816024818a5afa801561234e578590899061231d575b6121c5925061314d565b976121cf896135f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f089019889116122f05761225291899189897fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec348e828452600d8152612710806040862055600c8252604085205f805282528060405f2055604051908152a3613627565b8087106122c05750604080519283526020830193909352918101919091527f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a990606090a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b85604491887fda0cb07e000000000000000000000000000000000000000000000000000000008352600452602452fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50508981813d8311612347575b61233481836130df565b8101031261115d57846121c591516121bb565b503d61232a565b6040513d8a823e3d90fd5b602487877fd407f9c5000000000000000000000000000000000000000000000000000000008252600452fd5b61239c91508a3d8c116109ec576109dd81836130df565b5f612106565b602487877f1690fa40000000000000000000000000000000000000000000000000000000008252600452fd5b50346102a55760406003193601126102a5576123e8612fd3565b602435906124157f0000000000000000000000000000000000000000000000000000000000000000613267565b61241e8161342e565b670de0b6b3a76400008211610b27576001600160a01b039081600a54163303610aff571690818352826020526040832054670de0b5cad2bef0008211610ad75781610ac260209264174876e8007fe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd735495049061390e565b503461115d576124a336612fe9565b9490929193947f00000000000000000000000000000000000000000000000000000000000000006124d381613267565b6001600160a01b038116330361297a576124eb613479565b6124f4876134ca565b3215808061296d575b612905575b506001600160a01b0387165f52600c60205260405f206001600160a01b0383165f5260205260405f205484116128dd576001600160a01b0387165f52600b60205260405f205495600d60205260405f20549661258a61257c89612577896fffffffffffffffffffffffffffffffff8616613058565b61306b565b98612577888460801c613058565b966001600160a01b038a165f52600e6020526001600160a01b0360405f20541692808a106128aa575080881061286e5750612605906125c98984613517565b6125dc886001600160a01b038c16613517565b6108c7886125fc8b6fffffffffffffffffffffffffffffffff85166130a2565b9260801c6130a2565b946001600160a01b0389165f52600b6020528560405f20556001600160a01b03841615612846576001600160a01b0389165f52600d60205261264b8160405f20546130a2565b612654816135f0565b6001600160a01b038a165f52600d60205260405f2055600c60205260405f206001600160a01b0385165f5260205260405f206126918282546130a2565b90556040519081526001600160a01b038416907f4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b60206001600160a01b038c1692a3866127c5575b5084612735575b5050604080518581526020810185905280820193909352946001600160a01b0316917f44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee51139150606090a282519182526020820152f35b6001600160a01b0381163b15610614576001600160a01b03606488858381958160405198899788967fae6393290000000000000000000000000000000000000000000000000000000088521660048701521660248501528a6044850152165af180156127ba576127a6575b806126e0565b6127b082916130af565b6102a557806127a0565b6040513d84823e3d90fd5b6001600160a01b0382163b1561115d57604051907fae63932900000000000000000000000000000000000000000000000000000000825260048201526001600160a01b03831660248201528660448201525f81606481836001600160a01b0387165af1801561189957156126d95761283e9193506130af565b5f915f6126d9565b7f586d06df000000000000000000000000000000000000000000000000000000005f5260045ffd5b876001600160a01b038b7f8eda85e4000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b89847f8eda85e4000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f98c5dbd6000000000000000000000000000000000000000000000000000000005f5260045ffd5b15612945576001600160a01b0387165f52600c60205260405f206001600160a01b0383165f5260205260405f2061293d85825461314d565b90555f612502565b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b50600160075416156124fd565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b3461115d575f60031936011261115d576129df7f0000000000000000000000000000000000000000000000000000000000000000613267565b6020600160075460021c166040519015158152f35b3461115d57602060031936011261115d57612a0d612fd3565b612a367f0000000000000000000000000000000000000000000000000000000000000000613267565b612a3f8161342e565b612a636001600160a01b039182811692835f52600160205260405f205416906137ab565b805f525f60205260405f205460018160021c1663ffffffff908183612a8961039e605a90565b1c1681612b62575b5015612ac357827fd971f597000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81612ace605a61313f565b1c16421015612b36577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600491835f525f602052161760405f20557f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7602060405160018152a2005b507feb5a1217000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9050817f0000000000000000000000000000000000000000000000000000000000000000160181811161047457811642111584612a91565b3461115d575f60031936011261115d5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461115d57602060031936011261115d576001600160a01b03612bf5612fd3565b612c1e7f0000000000000000000000000000000000000000000000000000000000000000613267565b165f52600b6020526040805f20548151906fffffffffffffffffffffffffffffffff8116825260801c6020820152f35b3461115d575f60031936011261115d57602060405160088152f35b3461115d57602060031936011261115d576004356001600160a01b03811680910361115d57612cb77f0000000000000000000000000000000000000000000000000000000000000000613267565b612cbf6132a0565b612cc76133d9565b807fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a557f280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df05f80a25f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b3461115d575f60031936011261115d5760206040516127108152f35b3461115d575f60031936011261115d57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461115d575f60031936011261115d57612dcf7f0000000000000000000000000000000000000000000000000000000000000000613267565b612dd76132a0565b612ddf61339b565b15612e39577fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d0260205f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416600755604051908152a1005b7ff7ff4dca000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461115d575f60031936011261115d57612e9a7f0000000000000000000000000000000000000000000000000000000000000000613267565b6020612ea461339b565b6040519015158152f35b3461115d57602060031936011261115d576004356001600160a01b0381169081810361115d57612efd7f0000000000000000000000000000000000000000000000000000000000000000613267565b612f056132a0565b7fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006009549260081b169116176009557f94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef5f80a2005b3461115d57602060031936011261115d576020612f8b612fd3565b612fb47f0000000000000000000000000000000000000000000000000000000000000000613267565b6001600160a01b038091165f52600e825260405f205416604051908152f35b600435906001600160a01b038216820361115d57565b60031960a091011261115d576001600160a01b03600435818116810361115d5791602435916044359160643591608435908116810361115d5790565b9081518082526020808093019301915f5b828110613044575050505090565b835185529381019392810192600101613036565b8181029291811591840414171561047457565b8115613075570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190820391821161047457565b67ffffffffffffffff81116106e357604052565b6060810190811067ffffffffffffffff8211176106e357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106e357604052565b9081602091031261115d57516001600160a01b038116810361115d5790565b906028820180921161047457565b9190820180921161047457565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526131b9816130c3565b51902090565b67ffffffffffffffff81116106e35760051b60200190565b906131e1826131bf565b6131ee60405191826130df565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061321c82946131bf565b0190602036910137565b805182101561323a5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6001600160a01b0316300361327857565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b61332a60206132d17fffffffff000000000000000000000000000000000000000000000000000000005f351661315a565b6009546040517f9be2a88400000000000000000000000000000000000000000000000000000000815260048101929092523360248301523060448301529092839160081c6001600160a01b031690829081906064820190565b03915afa908115611899575f9161336c575b501561334457565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b61338e915060203d602011613394575b61338681836130df565b810190613793565b5f61333c565b503d61337c565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421115806133cd5790565b506001600754811c1690565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c613406576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0316805f525f602052600160405f2054161561344e5750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000005c156134a257565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0380911690815f52600e60205260405f205416156134ec5750565b7f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90613521906137c7565b907f8000000000000000000000000000000000000000000000000000000000000000821461047457613555915f039061381c565b565b6fffffffffffffffffffffffffffffffff8082119081156135af575b50613587576135849160801b61314d565b90565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905082115f613573565b600160075460021c166135c857565b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b61271081106135fc5750565b7f34bdbfaa000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b91906001600160a01b038091169283156136b3577fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34916020911692835f52600d82526136778160405f205461314d565b613680816135f0565b845f52600d835260405f2055600c825260405f20855f52825260405f206136a882825461314d565b9055604051908152a3565b7fdbe6b10e000000000000000000000000000000000000000000000000000000005f5260045ffd5b60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60075416176007557fbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc6255f80a1565b821561376b5760019161373e91613058565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b9081602091031261115d5751801515810361115d5790565b906001600160a01b031633146137c45761355590613997565b50565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116137f15790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b811561390a576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000009116805f528160205260405f205c8381019384125f821290801582169115161761047457836138d157507f0000000000000000000000000000000000000000000000000000000000000000805c907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211610474575d5b5f5260205260405f205d565b6138c5577f0000000000000000000000000000000000000000000000000000000000000000805c9060018201809211610474575d6138c5565b5050565b908060181c6110bf57602a1b9062ffffff602a1b19161790565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b906101008084101561392857838103908111610474578060ff105f14613992575060ff5b601811613928578060181c6110bf5762ffffff90831b921b19161790565b613974565b602061332a916139c97fffffffff000000000000000000000000000000000000000000000000000000005f351661315a565b6001600160a01b0360095460081c16906040518095819482937f9be2a884000000000000000000000000000000000000000000000000000000008452339060048501916040919493606084019584526001600160a01b03809216602085015216910152565b60021115613a3857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b62ffffff9060421c1664174876e800908181029181830414901517156104745790565b91906080670de0b6b3a7640000613ad8613ae19480613aab8660608a0151613226565b52613ad3613abd8660c08a0151613226565b51613acc8760a08b0151613226565b5192613058565b613058565b04930151613226565b5256fea26469706673582212200717d3c1dc7d9474a1321c1a9923b0e4aaf9fcc273b0690517e6c96f18109fff64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x9F JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x77 JUMPI CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x387587D EQ PUSH2 0x2F70 JUMPI DUP1 PUSH4 0x58A628F EQ PUSH2 0x2EAE JUMPI DUP1 PUSH4 0x98401F5 EQ PUSH2 0x2E61 JUMPI DUP1 PUSH4 0xB7562BE EQ PUSH2 0x2D96 JUMPI DUP1 PUSH4 0x20C1FB7A EQ PUSH2 0x2D56 JUMPI DUP1 PUSH4 0x26A8A991 EQ PUSH2 0x2D3A JUMPI DUP1 PUSH4 0x2D771389 EQ PUSH2 0x2C69 JUMPI DUP1 PUSH4 0x2E42F4D5 EQ PUSH2 0x2C4E JUMPI DUP1 PUSH4 0x4021FE0F EQ PUSH2 0x2BD4 JUMPI DUP1 PUSH4 0x53956AA2 EQ PUSH2 0x2B9A JUMPI DUP1 PUSH4 0x55ACA1EC EQ PUSH2 0x29F4 JUMPI DUP1 PUSH4 0x55CBA7FE EQ PUSH2 0x29A6 JUMPI DUP1 PUSH4 0x5DCACD64 EQ PUSH2 0x2494 JUMPI DUP1 PUSH4 0x5E0B06F4 EQ PUSH2 0x23CE JUMPI DUP1 PUSH4 0x653EB3B0 EQ PUSH2 0x2053 JUMPI DUP1 PUSH4 0x821440F2 EQ PUSH2 0x1FDE JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1F8C JUMPI DUP1 PUSH4 0x85C8C015 EQ PUSH2 0x1EEA JUMPI DUP1 PUSH4 0x8A8D123A EQ PUSH2 0x1EA9 JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0x1BFF JUMPI DUP1 PUSH4 0x9385E39A EQ PUSH2 0x1B85 JUMPI DUP1 PUSH4 0x9E0879C2 EQ PUSH2 0x1A5F JUMPI DUP1 PUSH4 0xA8175B27 EQ PUSH2 0x1A43 JUMPI DUP1 PUSH4 0xB9212B49 EQ PUSH2 0x19AC JUMPI DUP1 PUSH4 0xBFFB78B2 EQ PUSH2 0x1310 JUMPI DUP1 PUSH4 0xCD51C12F EQ PUSH2 0x12CF JUMPI DUP1 PUSH4 0xD0965A6B EQ PUSH2 0x12B1 JUMPI DUP1 PUSH4 0xD15126BA EQ PUSH2 0xEEF JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0xEB0 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0xCFA JUMPI DUP1 PUSH4 0xDE1A36A6 EQ PUSH2 0xCAD JUMPI DUP1 PUSH4 0xE085C5A8 EQ PUSH2 0xC12 JUMPI DUP1 PUSH4 0xE0D55605 EQ PUSH2 0xB4F JUMPI DUP1 PUSH4 0xE253670A EQ PUSH2 0x9F3 JUMPI DUP1 PUSH4 0xE2A92B1A EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xE2CB0BA0 EQ PUSH2 0x710 JUMPI DUP1 PUSH4 0xEBC7955C EQ PUSH2 0x4A1 JUMPI DUP1 PUSH4 0xF21C38CD EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xF2784E07 EQ PUSH2 0x2A8 JUMPI PUSH4 0xFBFA77CF EQ PUSH2 0x262 JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x20 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2CF PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2F8 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xD DUP4 MSTORE KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x323 PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x34C PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x355 DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH2 0x379 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x37AB JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 DUP4 PUSH2 0x3A3 PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST PUSH2 0x313F JUMP JUMPDEST SHR AND DUP3 PUSH2 0x43B JUMPI JUMPDEST POP POP ISZERO PUSH2 0x40F JUMPI PUSH1 0x20 PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH0 SWAP2 DUP6 DUP4 MSTORE DUP3 DUP5 MSTORE AND PUSH1 0x40 DUP3 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST POP PUSH32 0xFDCD689400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x474 JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0x3AB JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x4BB PUSH2 0x2FD3 JUMP JUMPDEST PUSH32 0x0 PUSH2 0x4E5 DUP2 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 SWAP3 DUP1 DUP5 DUP7 ADD SWAP3 PUSH32 0x5DCACD6400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x44 DUP7 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x64 DUP7 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x84 DUP7 ADD MSTORE CALLER PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xA4 DUP6 MSTORE PUSH1 0xE0 DUP6 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP7 DUP4 LT DUP5 DUP5 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x1F SWAP5 DUP4 DUP10 DUP1 SWAP5 PUSH1 0x44 DUP12 DUP5 SWAP7 DUP6 PUSH1 0x40 MSTORE PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP13 PUSH1 0xE4 DUP4 ADD MSTORE DUP5 DUP3 MLOAD SWAP2 DUP3 PUSH2 0x104 DUP6 ADD MSTORE DUP3 PUSH2 0x124 SWAP2 DUP3 DUP7 ADD MCOPY DUP4 DUP4 ADD ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP12 ADD DUP12 AND DUP2 ADD SUB ADD SWAP4 AND GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x6D8 JUMPI DUP7 SWAP6 PUSH2 0x618 JUMPI JUMPDEST POP POP POP POP PUSH1 0x40 DUP3 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x614 JUMPI PUSH1 0x40 DUP1 SWAP4 POP DUP2 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST DUP3 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 POP RETURNDATASIZE DUP1 DUP8 DUP5 RETURNDATACOPY PUSH2 0x62D DUP2 DUP5 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP2 DUP6 DUP3 PUSH1 0xE0 DUP6 ADD SWAP5 SUB SLT PUSH2 0x6D4 JUMPI MLOAD SWAP1 DUP4 DUP3 GT PUSH2 0x6D4 JUMPI ADD DUP2 PUSH1 0xFF DUP3 ADD SLT ISZERO PUSH2 0x6D0 JUMPI PUSH1 0xE0 DUP2 ADD MLOAD SWAP2 PUSH2 0x100 SWAP4 DUP4 GT PUSH2 0x6A3 JUMPI SWAP1 DUP7 SWAP4 SWAP3 SWAP2 PUSH2 0x67B DUP8 PUSH1 0x40 MLOAD SWAP8 PUSH1 0x1F DUP7 ADD AND ADD DUP8 PUSH2 0x30DF JUMP JUMPDEST DUP3 DUP7 MSTORE DUP4 DUP4 DUP4 ADD ADD GT PUSH2 0x69F JUMPI DUP6 SWAP3 DUP3 SWAP2 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x5EC JUMP JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH1 0x24 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH2 0x75A CALLDATASIZE PUSH2 0x2FE9 JUMP JUMPDEST PUSH2 0x788 SWAP6 SWAP2 SWAP3 SWAP5 SWAP6 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x790 PUSH2 0x3479 JUMP JUMPDEST PUSH2 0x798 PUSH2 0x35B9 JUMP JUMPDEST PUSH2 0x7A1 DUP7 PUSH2 0x34CA JUMP JUMPDEST PUSH2 0x7A9 PUSH2 0x33D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP8 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP6 DUP7 DUP3 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x6D8 JUMPI DUP7 SWAP3 PUSH2 0x9C4 JUMPI JUMPDEST POP DUP5 DUP7 MSTORE PUSH1 0xE DUP8 MSTORE DUP1 PUSH1 0x40 DUP8 KECCAK256 SLOAD AND SWAP2 AND DUP1 SWAP2 SUB PUSH2 0x994 JUMPI DUP4 DUP6 MSTORE PUSH1 0xB DUP7 MSTORE PUSH1 0x40 DUP6 KECCAK256 SLOAD SWAP8 PUSH1 0xD DUP8 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP2 PUSH2 0x852 PUSH2 0x846 DUP6 DUP9 DUP7 PUSH2 0x372C JUMP JUMPDEST SWAP12 PUSH1 0x80 SHR SWAP5 DUP8 DUP7 PUSH2 0x372C JUMP JUMPDEST SWAP10 DUP1 DUP13 GT PUSH2 0x960 JUMPI POP DUP1 DUP11 GT PUSH2 0x92C JUMPI POP SWAP4 PUSH2 0x8FD SWAP4 PUSH2 0x8CD PUSH1 0x40 SWAP13 SWAP5 PUSH2 0x8C7 DUP13 PUSH2 0x8C1 DUP16 PUSH2 0x8DF SWAP9 PUSH2 0x8BC DUP15 PUSH2 0x8B3 PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP16 PUSH2 0x8AD DUP7 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 PUSH2 0x381C JUMP JUMPDEST PUSH2 0x8AD DUP7 PUSH2 0x37C7 JUMP JUMPDEST PUSH2 0x314D JUMP JUMPDEST SWAP3 PUSH2 0x314D JUMP JUMPDEST SWAP1 PUSH2 0x3557 JUMP JUMPDEST SWAP4 DUP8 DUP10 MSTORE PUSH1 0xB DUP11 MSTORE DUP5 DUP14 DUP11 KECCAK256 SSTORE PUSH2 0x3627 JUMP JUMPDEST DUP9 MLOAD SWAP2 DUP3 SWAP2 DUP9 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST DUP8 PUSH1 0x64 SWAP2 DUP12 DUP10 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP9 PUSH1 0x64 SWAP2 DUP14 DUP6 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP5 PUSH1 0x44 SWAP2 DUP6 PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH2 0x9E5 SWAP2 SWAP3 POP DUP8 RETURNDATASIZE DUP10 GT PUSH2 0x9EC JUMPI JUMPDEST PUSH2 0x9DD DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3120 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x7F5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x9D3 JUMP JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xA0D PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xA3A PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xA43 DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xB27 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xAFF JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xAD7 JUMPI PUSH32 0x606EB97D83164BD6B200D638CD49C14C65D94D4F2C674CFD85E24E0E202C3CA5 SWAP2 PUSH2 0xAC2 PUSH1 0x20 SWAP3 PUSH2 0xAB3 PUSH1 0x42 SWAP1 JUMP JUMPDEST SWAP1 PUSH5 0x174876E800 DUP5 DIV SWAP1 PUSH2 0x3950 JUMP JUMPDEST DUP5 DUP7 MSTORE DUP6 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xB89 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xB91 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH2 0xBEA JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x91D7478835F2B5ADC315F5AAD920F4A7F0A02F7FDDF3042D17B2C80168EA17F5 DUP2 DUP1 LOG1 DUP1 RETURN JUMPDEST DUP1 PUSH32 0x69F8CBC00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xC4C PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xC54 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xCE7 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xCEF PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0xCF7 PUSH2 0x36DB JUMP JUMPDEST DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xD1C PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0xD45 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xD4E DUP2 PUSH2 0x342E JUMP JUMPDEST AND DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH2 0xE85 JUMPI DUP1 DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0xD8B PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0xE1F JUMPI JUMPDEST POP POP ISZERO DUP1 PUSH2 0xE10 JUMPI JUMPDEST PUSH2 0xE03 JUMPI JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH2 0xE0B PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0xDA1 JUMP JUMPDEST POP PUSH2 0xE19 PUSH2 0x339B JUMP JUMPDEST ISZERO PUSH2 0xD9C JUMP JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0xE58 JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0xD93 JUMP JUMPDEST PUSH1 0x24 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH32 0x346D760700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0xF09 PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0xF35 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0xF3E DUP3 PUSH2 0x342E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP3 DUP4 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x40 DUP8 KECCAK256 ADD SLOAD AND SWAP1 DUP2 ISZERO PUSH0 EQ PUSH2 0x1282 JUMPI PUSH2 0xF70 SWAP2 POP PUSH2 0x3997 JUMP JUMPDEST PUSH2 0xF78 PUSH2 0x339B JUMP JUMPDEST PUSH2 0x125A JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0xFA1 PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x11F4 JUMPI JUMPDEST POP POP PUSH2 0x11C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1168 JUMPI DUP6 SWAP2 PUSH2 0x119B JUMPI JUMPDEST POP DUP3 LT PUSH2 0x1173 JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1168 JUMPI DUP6 SWAP2 PUSH2 0x1137 JUMPI JUMPDEST POP DUP3 GT PUSH2 0x110F JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD SWAP2 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x10E7 JUMPI PUSH5 0x174876E800 DUP2 DIV SWAP3 DUP4 PUSH1 0x18 SHR PUSH2 0x10BF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP5 DUP7 DUP9 MSTORE DUP8 DUP6 MSTORE PUSH1 0x12 SHL SWAP2 AND OR PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1161 JUMPI JUMPDEST PUSH2 0x114E DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH0 PUSH2 0x102E JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x1144 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP8 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x11C1 JUMPI JUMPDEST PUSH2 0x11B2 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH0 PUSH2 0xFEB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x11A8 JUMP JUMPDEST PUSH1 0x24 DUP5 DUP5 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x122D JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0xFA9 JUMP JUMPDEST PUSH1 0x24 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLER EQ PUSH2 0xF70 JUMPI PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x132A PUSH2 0x2FD3 JUMP JUMPDEST SWAP1 PUSH2 0x1354 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x135D DUP3 PUSH2 0x342E JUMP JUMPDEST PUSH2 0x1365 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 DUP3 KECCAK256 SLOAD PUSH1 0x3 SHR AND ISZERO PUSH2 0x1978 JUMPI PUSH2 0x138D PUSH2 0x33D9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0xE0 DUP4 ADD DUP4 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE PUSH0 DUP4 MSTORE PUSH1 0x60 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP8 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 DUP7 DUP2 MSTORE ADD SWAP1 PUSH0 MSTORE DUP2 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x1955 JUMPI POP PUSH2 0x1438 SWAP3 POP SUB DUP3 PUSH2 0x30DF JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x1446 DUP4 PUSH2 0x31BF JUMP JUMPDEST PUSH2 0x1453 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x30DF JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1480 DUP6 PUSH2 0x31BF JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x192C JUMPI POP POP PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x149A DUP4 PUSH2 0x31D7 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x14A8 DUP4 PUSH2 0x31D7 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE DUP6 MLOAD PUSH5 0xFFFFFFFFFF PUSH2 0x14BE DUP6 PUSH2 0x31D7 JUMP JUMPDEST SWAP2 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x18F0 JUMPI POP POP PUSH1 0xC0 DUP8 ADD MSTORE PUSH2 0x14DC DUP4 PUSH2 0x31D7 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MSTORE DUP6 MLOAD SWAP2 PUSH1 0x1 DUP4 DUP2 SHR AND SWAP3 DUP4 PUSH2 0x18DC JUMPI JUMPDEST POP DUP3 PUSH2 0x18CC JUMPI JUMPDEST PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x15EE JUMPI DUP8 DUP8 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1562 JUMPI SWAP1 PUSH2 0x1550 PUSH2 0x153A DUP3 PUSH1 0x1 SWAP5 PUSH2 0x3226 JUMP JUMPDEST MLOAD PUSH2 0x1549 DUP4 PUSH1 0x80 DUP11 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3557 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x151C JUMP JUMPDEST DUP5 DUP4 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 SWAP2 LOG2 DUP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1604 DUP3 PUSH1 0x20 DUP12 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x161E DUP4 PUSH2 0x30C3 JUMP JUMPDEST SLOAD PUSH1 0xFF SWAP1 DUP2 DUP2 AND PUSH2 0x162E DUP2 PUSH2 0x3A2E JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x1674 DUP3 PUSH1 0x40 DUP13 ADD MLOAD DUP4 PUSH2 0x166E DUP4 DUP4 PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x3226 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1680 DUP2 PUSH2 0x3A2E JUMP JUMPDEST PUSH2 0x1689 DUP2 PUSH2 0x3A2E JUMP JUMPDEST DUP1 PUSH2 0x1805 JUMPI POP PUSH8 0xDE0B6B3A7640000 JUMPDEST PUSH2 0x16A7 DUP4 PUSH1 0xA0 DUP14 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x16C5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP13 PUSH2 0x3A88 JUMP JUMPDEST DUP6 ISZERO PUSH2 0x17FB JUMPI PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP2 PUSH2 0x17DD JUMPI JUMPDEST POP PUSH2 0x16EA JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x14FA JUMP JUMPDEST DUP9 PUSH2 0x16F5 DUP2 MLOAD PUSH2 0x3A65 JUMP JUMPDEST PUSH2 0x1703 DUP4 PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x80 SHR PUSH2 0x1717 DUP5 PUSH1 0x80 PUSH0 SWAP6 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x174E JUMPI JUMPDEST POP POP POP PUSH1 0x1 SWAP3 DUP2 PUSH2 0x1733 JUMPI JUMPDEST POP POP PUSH2 0x16DF JUMP JUMPDEST PUSH2 0x1747 SWAP2 PUSH2 0x1740 SWAP2 PUSH2 0x30A2 JUMP JUMPDEST DUP3 DUP12 PUSH2 0x3A88 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x172C JUMP JUMPDEST PUSH2 0x1759 SWAP4 POP SUB PUSH2 0x3058 JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH1 0x1 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x17B8 DUP12 PUSH2 0x17B1 DUP6 PUSH1 0xA0 PUSH2 0x17A8 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3058 JUMP JUMPDEST DUP2 DUP6 DUP2 MUL DIV DUP6 EQ DUP3 ISZERO OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x1 SWAP5 PUSH2 0x17D4 SWAP3 MUL PUSH2 0x306B JUMP JUMPDEST SWAP1 SWAP3 PUSH0 DUP1 PUSH2 0x1720 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x17EB DUP2 PUSH2 0x3A2E JUMP JUMPDEST PUSH2 0x17F4 DUP2 PUSH2 0x3A2E JUMP JUMPDEST EQ PUSH0 PUSH2 0x16D9 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x16E4 JUMP JUMPDEST DUP1 PUSH2 0x1811 PUSH1 0x1 SWAP3 PUSH2 0x3A2E JUMP JUMPDEST SUB PUSH2 0x18A4 JUMPI PUSH1 0x4 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP5 ADD MLOAD AND PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1899 JUMPI PUSH0 SWAP2 PUSH2 0x1867 JUMPI JUMPDEST POP PUSH2 0x1699 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1891 JUMPI JUMPDEST DUP2 PUSH2 0x1882 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH0 PUSH2 0x1861 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1875 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP7 MLOAD PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 POP PUSH2 0x14F8 JUMP JUMPDEST PUSH2 0x18E7 SWAP2 SWAP4 POP PUSH2 0x3A65 JUMP JUMPDEST ISZERO ISZERO SWAP2 PUSH0 PUSH2 0x14F1 JUMP JUMPDEST PUSH1 0x5 DUP2 MUL SWAP1 DUP1 DUP3 DIV PUSH1 0x5 EQ DUP2 ISZERO OR ISZERO PUSH2 0x474 JUMPI PUSH1 0x4D PUSH1 0x1F DUP5 DUP5 SHR AND GT PUSH2 0x474 JUMPI PUSH1 0x1F DUP4 PUSH1 0x1 SWAP4 SHR AND PUSH1 0xA EXP PUSH2 0x1925 DUP3 DUP7 PUSH2 0x3226 JUMP JUMPDEST MSTORE ADD PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x193B DUP2 PUSH2 0x30C3 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x1483 JUMP JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 SLOAD AND DUP2 MSTORE ADD SWAP4 ADD SWAP2 ADD SWAP2 DUP4 SWAP2 SWAP3 PUSH2 0x1424 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 SWAP3 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x19E6 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x19EE PUSH2 0x32A0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x2 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x1A99 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x1AA1 PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0x1AA9 PUSH2 0x339B JUMP JUMPDEST ISZERO PUSH2 0x1AD6 JUMPI PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP LT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST PUSH32 0xE4460B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x1B9F PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP1 SWAP5 SUB PUSH2 0x115D JUMPI PUSH1 0x40 SWAP3 PUSH2 0x1BE1 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1EA5 JUMPI PUSH2 0x1C1A PUSH2 0x2FD3 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0x1C45 DUP2 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x1C4D PUSH2 0x3479 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0x1E7D JUMPI SWAP4 DUP1 DUP5 PUSH1 0x24 DUP8 PUSH2 0x1C71 DUP4 SWAP10 PUSH2 0x342E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP4 DUP5 SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x1E70 JUMPI DUP2 SWAP5 PUSH2 0x1DD0 JUMPI JUMPDEST POP DUP4 MLOAD SWAP3 PUSH2 0x1CCB PUSH2 0x1CC5 DUP6 PUSH2 0x31D7 JUMP JUMPDEST SWAP5 PUSH2 0x31D7 JUMP JUMPDEST SWAP1 DUP3 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1DA2 JUMPI DUP1 DUP9 PUSH2 0x1CE5 PUSH1 0x1 SWAP4 DUP11 PUSH2 0x3226 JUMP JUMPDEST MLOAD AND DUP7 DUP7 MSTORE PUSH1 0x6 SWAP1 DUP2 DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH1 0x80 SHR PUSH2 0x1D1D DUP7 DUP11 PUSH2 0x3226 JUMP JUMPDEST MSTORE AND PUSH2 0x1D29 DUP5 DUP12 PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x1D34 DUP4 DUP11 PUSH2 0x3226 JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1D8F JUMPI JUMPDEST PUSH2 0x1D4B JUMPI JUMPDEST POP POP ADD PUSH2 0x1CCE JUMP JUMPDEST PUSH2 0x1D88 SWAP2 DUP9 DUP9 MSTORE DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE DUP7 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH2 0x1D82 PUSH2 0x1D70 DUP5 DUP12 PUSH2 0x3226 JUMP JUMPDEST MLOAD PUSH2 0x1D7B DUP6 DUP10 PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x314D JUMP JUMPDEST SWAP1 PUSH2 0x3517 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1D43 JUMP JUMPDEST POP PUSH2 0x1D9A DUP4 DUP8 PUSH2 0x3226 JUMP JUMPDEST MLOAD ISZERO ISZERO PUSH2 0x1D3E JUMP JUMPDEST PUSH2 0x1DBF DUP7 PUSH2 0x1DCC DUP5 DUP7 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x3025 JUMP JUMPDEST SWAP2 DUP5 DUP4 SUB SWAP1 DUP6 ADD MSTORE PUSH2 0x3025 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x1DE2 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP1 DUP4 DUP2 DUP4 SUB SLT PUSH2 0x1E6C JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6D0 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E6C JUMPI DUP2 MLOAD PUSH2 0x1E18 DUP2 PUSH2 0x31BF JUMP JUMPDEST SWAP3 PUSH2 0x1E26 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x30DF JUMP JUMPDEST DUP2 DUP5 MSTORE DUP6 DUP1 DUP6 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6D4 JUMPI DUP6 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1E50 JUMPI POP POP POP SWAP3 PUSH0 PUSH2 0x1CB5 JUMP JUMPDEST DUP2 MLOAD DUP9 DUP2 AND DUP2 SUB PUSH2 0x1E68 JUMPI DUP2 MSTORE SWAP1 DUP6 ADD SWAP1 DUP6 ADD PUSH2 0x1E3F JUMP JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x1F24 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1F2E PUSH2 0x339B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH4 0xFFFFFFFF DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x2A5 JUMPI PUSH1 0x20 PUSH2 0x1FD6 DUP4 PUSH2 0x315A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x2018 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2020 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD AND OR PUSH1 0x9 SSTORE PUSH2 0xCF7 PUSH2 0x36DB JUMP JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH2 0x2062 CALLDATASIZE PUSH2 0x2FE9 JUMP JUMPDEST SWAP5 SWAP3 PUSH2 0x2090 SWAP3 SWAP2 SWAP3 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2098 PUSH2 0x3479 JUMP JUMPDEST PUSH2 0x20A0 PUSH2 0x35B9 JUMP JUMPDEST PUSH2 0x20A8 PUSH2 0x33D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 DUP7 AND SWAP4 DUP5 DUP7 MSTORE PUSH1 0x20 SWAP8 PUSH1 0xE DUP10 MSTORE DUP1 PUSH1 0x40 DUP9 KECCAK256 SLOAD AND PUSH2 0x23A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP10 DUP2 PUSH1 0x4 DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x234E JUMPI DUP9 SWAP2 PUSH2 0x2385 JUMPI JUMPDEST POP AND DUP1 ISZERO PUSH2 0x2359 JUMPI PUSH2 0x214E SWAP1 DUP7 DUP9 MSTORE PUSH1 0xE DUP11 MSTORE PUSH1 0x40 DUP9 KECCAK256 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x8AD DUP6 PUSH2 0x37C7 JUMP JUMPDEST PUSH2 0x2160 PUSH2 0x215A DUP6 PUSH2 0x37C7 JUMP JUMPDEST DUP7 PUSH2 0x381C JUMP JUMPDEST PUSH2 0x216A DUP5 DUP5 PUSH2 0x3557 JUMP JUMPDEST SWAP2 DUP6 DUP8 MSTORE PUSH1 0xB DUP10 MSTORE DUP3 PUSH1 0x40 DUP9 KECCAK256 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP6 PUSH1 0x4 DUP3 ADD MSTORE DUP10 DUP2 PUSH1 0x24 DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0x234E JUMPI DUP6 SWAP1 DUP10 SWAP1 PUSH2 0x231D JUMPI JUMPDEST PUSH2 0x21C5 SWAP3 POP PUSH2 0x314D JUMP JUMPDEST SWAP8 PUSH2 0x21CF DUP10 PUSH2 0x35F0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8F0 DUP10 ADD SWAP9 DUP10 GT PUSH2 0x22F0 JUMPI PUSH2 0x2252 SWAP2 DUP10 SWAP2 DUP10 DUP10 PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 DUP15 DUP3 DUP5 MSTORE PUSH1 0xD DUP2 MSTORE PUSH2 0x2710 DUP1 PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 DUP6 KECCAK256 PUSH0 DUP1 MSTORE DUP3 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 PUSH2 0x3627 JUMP JUMPDEST DUP1 DUP8 LT PUSH2 0x22C0 JUMPI POP PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP1 PUSH1 0x60 SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP6 PUSH1 0x44 SWAP2 DUP9 PUSH32 0xDA0CB07E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH1 0x24 DUP9 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST POP POP DUP10 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2347 JUMPI JUMPDEST PUSH2 0x2334 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x115D JUMPI DUP5 PUSH2 0x21C5 SWAP2 MLOAD PUSH2 0x21BB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x232A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP11 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0xD407F9C500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x239C SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x9EC JUMPI PUSH2 0x9DD DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST PUSH0 PUSH2 0x2106 JUMP JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0x1690FA4000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x2A5 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2A5 JUMPI PUSH2 0x23E8 PUSH2 0x2FD3 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x2415 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x241E DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xB27 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xAFF JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xAD7 JUMPI DUP2 PUSH2 0xAC2 PUSH1 0x20 SWAP3 PUSH5 0x174876E800 PUSH32 0xE4D371097BEEA42453A37406E2AEF4C04F3C548F84AC50E72578662C0DCD7354 SWAP6 DIV SWAP1 PUSH2 0x390E JUMP JUMPDEST POP CALLVALUE PUSH2 0x115D JUMPI PUSH2 0x24A3 CALLDATASIZE PUSH2 0x2FE9 JUMP JUMPDEST SWAP5 SWAP1 SWAP3 SWAP2 SWAP4 SWAP5 PUSH32 0x0 PUSH2 0x24D3 DUP2 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER SUB PUSH2 0x297A JUMPI PUSH2 0x24EB PUSH2 0x3479 JUMP JUMPDEST PUSH2 0x24F4 DUP8 PUSH2 0x34CA JUMP JUMPDEST ORIGIN ISZERO DUP1 DUP1 PUSH2 0x296D JUMPI JUMPDEST PUSH2 0x2905 JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH0 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP5 GT PUSH2 0x28DD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP6 PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP7 PUSH2 0x258A PUSH2 0x257C DUP10 PUSH2 0x2577 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x3058 JUMP JUMPDEST PUSH2 0x306B JUMP JUMPDEST SWAP9 PUSH2 0x2577 DUP9 DUP5 PUSH1 0x80 SHR PUSH2 0x3058 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP3 DUP1 DUP11 LT PUSH2 0x28AA JUMPI POP DUP1 DUP9 LT PUSH2 0x286E JUMPI POP PUSH2 0x2605 SWAP1 PUSH2 0x25C9 DUP10 DUP5 PUSH2 0x3517 JUMP JUMPDEST PUSH2 0x25DC DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH2 0x3517 JUMP JUMPDEST PUSH2 0x8C7 DUP9 PUSH2 0x25FC DUP12 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x30A2 JUMP JUMPDEST SWAP3 PUSH1 0x80 SHR PUSH2 0x30A2 JUMP JUMPDEST SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE DUP6 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x2846 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH2 0x264B DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x30A2 JUMP JUMPDEST PUSH2 0x2654 DUP2 PUSH2 0x35F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x2691 DUP3 DUP3 SLOAD PUSH2 0x30A2 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x4E09F7F7FC37CE2897800E2C2A9099565EDB0A133D19D84A6871B3530AF8846B PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP3 LOG3 DUP7 PUSH2 0x27C5 JUMPI JUMPDEST POP DUP5 PUSH2 0x2735 JUMPI JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH32 0x44D97B36E99B590B3D2875AAD3B167B1D7FB1E063F3F1325A1EEAC76CAEE5113 SWAP2 POP PUSH1 0x60 SWAP1 LOG2 DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH2 0x614 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 DUP9 DUP6 DUP4 DUP2 SWAP6 DUP2 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP9 MSTORE AND PUSH1 0x4 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 PUSH1 0x44 DUP6 ADD MSTORE AND GAS CALL DUP1 ISZERO PUSH2 0x27BA JUMPI PUSH2 0x27A6 JUMPI JUMPDEST DUP1 PUSH2 0x26E0 JUMP JUMPDEST PUSH2 0x27B0 DUP3 SWAP2 PUSH2 0x30AF JUMP JUMPDEST PUSH2 0x2A5 JUMPI DUP1 PUSH2 0x27A0 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x115D JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS CALL DUP1 ISZERO PUSH2 0x1899 JUMPI ISZERO PUSH2 0x26D9 JUMPI PUSH2 0x283E SWAP2 SWAP4 POP PUSH2 0x30AF JUMP JUMPDEST PUSH0 SWAP2 PUSH0 PUSH2 0x26D9 JUMP JUMPDEST PUSH32 0x586D06DF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST DUP10 DUP5 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0x98C5DBD600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ISZERO PUSH2 0x2945 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH0 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x293D DUP6 DUP3 SLOAD PUSH2 0x314D JUMP JUMPDEST SWAP1 SSTORE PUSH0 PUSH2 0x2502 JUMP JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO PUSH2 0x24FD JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x29DF PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x2A0D PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2A36 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2A3F DUP2 PUSH2 0x342E JUMP JUMPDEST PUSH2 0x2A63 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x37AB JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP4 PUSH2 0x2A89 PUSH2 0x39E PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP2 PUSH2 0x2B62 JUMPI JUMPDEST POP ISZERO PUSH2 0x2AC3 JUMPI DUP3 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x2ACE PUSH1 0x5A PUSH2 0x313F JUMP JUMPDEST SHR AND TIMESTAMP LT ISZERO PUSH2 0x2B36 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x4 SWAP2 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE AND OR PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 STOP JUMPDEST POP PUSH32 0xEB5A121700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x474 JUMPI DUP2 AND TIMESTAMP GT ISZERO DUP5 PUSH2 0x2A91 JUMP JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2BF5 PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2C1E PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 SLOAD DUP2 MLOAD SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x80 SHR PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x8 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 SWAP2 SUB PUSH2 0x115D JUMPI PUSH2 0x2CB7 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2CBF PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0x2CC7 PUSH2 0x33D9 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA SLOAD AND OR PUSH1 0xA SSTORE PUSH32 0x280A60B1E63C1774D397D35CCE80EB80E51408EAD755FB446E6F744CE98E5DF0 PUSH0 DUP1 LOG2 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2710 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x2DCF PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2DD7 PUSH2 0x32A0 JUMP JUMPDEST PUSH2 0x2DDF PUSH2 0x339B JUMP JUMPDEST ISZERO PUSH2 0x2E39 JUMPI PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH32 0xF7FF4DCA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH2 0x2E9A PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2EA4 PUSH2 0x339B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x115D JUMPI PUSH2 0x2EFD PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x2F05 PUSH2 0x32A0 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH32 0x94B979B6831A51293E2641426F97747FEED46F17779FED9CD18D1ECEFCFE92EF PUSH0 DUP1 LOG2 STOP JUMPDEST CALLVALUE PUSH2 0x115D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x115D JUMPI PUSH1 0x20 PUSH2 0x2F8B PUSH2 0x2FD3 JUMP JUMPDEST PUSH2 0x2FB4 PUSH32 0x0 PUSH2 0x3267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x115D JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x115D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x115D JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x115D JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x3044 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x3036 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x474 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3075 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x474 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x6E3 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x115D JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x115D JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x474 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x474 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x31B9 DUP2 PUSH2 0x30C3 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6E3 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x31E1 DUP3 PUSH2 0x31BF JUMP JUMPDEST PUSH2 0x31EE PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x30DF JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x321C DUP3 SWAP5 PUSH2 0x31BF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x323A JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS SUB PUSH2 0x3278 JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x332A PUSH1 0x20 PUSH2 0x32D1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x315A JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 PUSH1 0x8 SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1899 JUMPI PUSH0 SWAP2 PUSH2 0x336C JUMPI JUMPDEST POP ISZERO PUSH2 0x3344 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x338E SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3394 JUMPI JUMPDEST PUSH2 0x3386 DUP2 DUP4 PUSH2 0x30DF JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3793 JUMP JUMPDEST PUSH0 PUSH2 0x333C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x337C JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x33CD JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x3406 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x344E JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x34A2 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x34EC JUMPI POP JUMP JUMPDEST PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x3521 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x474 JUMPI PUSH2 0x3555 SWAP2 PUSH0 SUB SWAP1 PUSH2 0x381C JUMP JUMPDEST JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 GT SWAP1 DUP2 ISZERO PUSH2 0x35AF JUMPI JUMPDEST POP PUSH2 0x3587 JUMPI PUSH2 0x3584 SWAP2 PUSH1 0x80 SHL PUSH2 0x314D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP3 GT PUSH0 PUSH2 0x3573 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH2 0x35C8 JUMPI JUMP JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x35FC JUMPI POP JUMP JUMPDEST PUSH32 0x34BDBFAA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x36B3 JUMPI PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 SWAP2 PUSH1 0x20 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0xD DUP3 MSTORE PUSH2 0x3677 DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x314D JUMP JUMPDEST PUSH2 0x3680 DUP2 PUSH2 0x35F0 JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x36A8 DUP3 DUP3 SLOAD PUSH2 0x314D JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH32 0xDBE6B10E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xBD204090FD387F08E3076528BF09B4FC99D8100D749EACE96C06002D3FEDC625 PUSH0 DUP1 LOG1 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x376B JUMPI PUSH1 0x1 SWAP2 PUSH2 0x373E SWAP2 PUSH2 0x3058 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x115D JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x115D JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x37C4 JUMPI PUSH2 0x3555 SWAP1 PUSH2 0x3997 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x37F1 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x390A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 SWAP2 AND DUP1 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP4 DUP2 ADD SWAP4 DUP5 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x474 JUMPI DUP4 PUSH2 0x38D1 JUMPI POP PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD SWAP2 DUP3 GT PUSH2 0x474 JUMPI TSTORE JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH2 0x38C5 JUMPI PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x474 JUMPI TSTORE PUSH2 0x38C5 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x10BF JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x3928 JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x474 JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x3992 JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x3928 JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x10BF JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x3974 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x332A SWAP2 PUSH2 0x39C9 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x315A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP5 DUP3 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER SWAP1 PUSH1 0x4 DUP6 ADD SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH1 0x60 DUP5 ADD SWAP6 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3A38 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x474 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3AD8 PUSH2 0x3AE1 SWAP5 DUP1 PUSH2 0x3AAB DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MSTORE PUSH2 0x3AD3 PUSH2 0x3ABD DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD PUSH2 0x3ACC DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x3058 JUMP JUMPDEST PUSH2 0x3058 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x3226 JUMP JUMPDEST MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SMOD OR 0xD3 0xC1 0xDC PUSH30 0x9474A1321C1A9923B0E4AAF9FCC273B0690517E6C96F18109FFF64736F6C PUSH4 0x4300081A STOP CALLER ","sourceMap":"2072:32096:65:-:0;;;;;;;;;-1:-1:-1;2072:32096:65;;;;34059:9;34055:69;;2072:32096;;;34134:25;;;2072:32096;;34134:25;;2072:32096;;;;;;;;;;;34134:25;34055:69;34095:18;34071:1;34095:18;2072:32096;34071:1;34095:18;2072:32096;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;-1:-1:-1;;;;;4519:6:65;2072:32096;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;:::i;:::-;2666:30;:6;:30;:::i;:::-;2072:32096;;;31121:18;2072:32096;;;;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;2666:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;8759:36:65;-1:-1:-1;;;;;2072:32096:65;;;;;;;;8759:17;2072:32096;;;;;;;8759:36;;:::i;:::-;2072:32096;;;;;;;;;;8759:17;7916:84:46;958:1:71;7916:84:46;;2072:32096:65;2958:30:71;;:62;:30;2072:32096:65;2790:99:71;;2958:30;:62;:::i;:::-;6019:108:46;;7592:82:66;;;2072:32096:65;-1:-1:-1;;8867:19:65;;;2072:32096;9892:37;8902:140;8470:156:46;2072:32096:65;8863:916;2072:32096;;;;;;8470:156:46;2072:32096:65;;;;;;;;;9892:37;2072:32096;;8863:916;9735:19;;2072:32096;9735:19;2072:32096;;;;9735:19;7592:82:66;7648:26;;;;;2072:32096:65;;;;;;;;7608:15:66;:66;;7592:82;;;;2072:32096:65;;;;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;2666:6;:30;;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;;;;24572:221;;;;;;;;;2072:32096;;24572:221;;2072:32096;;;;;;;;;;;;;;;;;;;24760:10;2072:32096;;;;;24572:221;;2072:32096;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24537:274;;;;;;2072:32096;;;;;;;;;;;;;;;;;;;;;;24572:221;;2072:32096;;;;;24537:274;;;2072:32096;24537:274;;;;;;;;;;;2072:32096;;;;;;;;;24509:352;;2072:32096;;;;;24509:352;;;;;;2072:32096;;;;;;;;;;;;;;;;;;24537:274;;;;;;;;;;;;;;;;:::i;:::-;;;;;;2072:32096;24537:274;;2072:32096;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;24537:274;;;;;;;2072:32096;;;;;;;;;;;;;;;;;;;;;;24537:274;2072:32096;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;5700:21;2072:32096;;;;;;;;;;;:::i;:::-;2666:30;:6;;;;;;:30;:::i;:::-;2707:73:66;;:::i;:::-;8020:101;;:::i;:::-;10002:12;;;:::i;:::-;1083:103:50;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;;;;;;;20895:20;;;;;;2072:32096;20895:20;;;;;;;;;;;;;2072:32096;;;;;10575:13:66;2072:32096:65;;;;;;;;;;10575:46:66;;;10571:202;;2072:32096:65;;;21017:20;2072:32096;;;;;;;21632:18;2072:32096;;;;;;1460:31:41;1237:14;1460:31;;21696:72:65;21797:76;21696:72;;;;;:::i;:::-;2072:32096;1616:3:41;2072:32096:65;21797:76;;;;:::i;:::-;21888:46;;;;21884:172;;22070:40;;;;22066:157;;3891:15:66;;22878:91:65;3891:15:66;22508:177:65;2072:32096;3891:15:66;;22622:53:65;3891:15:66;22556:52:65;3891:15:66;22843:18:65;3891:15:66;;;;22878:91:65;3891:15:66;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;22556:52:65;:::i;:::-;22622:53;;:::i;:::-;22508:177;;:::i;:::-;2072:32096;;;;21017:20;2072:32096;;;;;;;22843:18;:::i;:::-;2072:32096;;22878:91;;;;;;2072:32096;;;;;;;;;;;;;;;;;;22878:91;;;;551:66:50;3051:52:52;2072:32096:65;;;;;;;;;22066:157;22133:79;2072:32096;22133:79;;;;;;2072:32096;;;;;;22133:79;21884:172;21957:88;2072:32096;21957:88;;;;;;2072:32096;;;;;;21957:88;10571:202:66;10711:51;2072:32096:65;10711:51:66;;;;;2072:32096:65;;;;10711:51:66;20895:20:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;;;2666:6;:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;465::47;3098:36:65;;3094:108;;-1:-1:-1;;;;;2072:32096:65;;2877:22;2072:32096;;2855:10;:45;2851:101;;2072:32096;;;;;;;;;;;;19917:10:31;8864:26:72;;8860:97;;12581:72:65;9149:42:72;9060:184;2072:32096:65;9149:42:72;;2072:32096:65;2690:94:71;;9149:42:72;2072:32096:65;19669:4:31;2072:32096:65;;9060:184:72;;:::i;:::-;2072:32096:65;;;;;;;;;;;;;;;12581:72;2072:32096;;8860:97:72;2072:32096:65;8913:33:72;;;;;2851:101:65;2072:32096;2923:18;;;;;3094:108;2072:32096;3157:34;;;;;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;2072:32096:65;16609:27;2072:32096;;16605:93;;8470:156:46;16736:15:65;2072:32096;8470:156:46;16736:15:65;2072:32096;16862:21;;;;2072:32096;;16605:93;16659:28;;2072:32096;16659:28;;;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;2072:32096:65;8470:156:46;17707:15:65;2072:32096;8470:156:46;;17707:15:65;2072:32096;17834:38;2072:32096;;;17433:4;2072:32096;;17834:38;2072:32096;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;15965:100:65;;:::i;:::-;2072:32096;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;-1:-1:-1;;;;;2072:32096:65;;:::i;:::-;2666:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;2072:32096:65;;;;;;;1192:1:71;2072:32096:65;;;;958:1:71;7916:84:46;;14143:89:65;;2072:32096;;;;;;;;;;1192:1:71;7916:84:46;958:1:71;7916:84:46;;2072:32096:65;;2958:30:71;;:62;:30;2072:32096:65;2790:99:71;;2958:62;6019:108:46;;7592:82:66;;;2072:32096:65;;;;13501:57;;;2072:32096;13497:177;;2072:32096;;;;;;;;;;8470:156:46;;2072:32096:65;;8470:156:46;;2072:32096:65;;15164:48;2072:32096;;;1192:1:71;2072:32096:65;;15164:48;2072:32096;;13497:177;;;:::i;:::-;;;13501:57;13533:16;;;:::i;:::-;2072:32096;13501:57;;7592:82:66;7648:26;;;;;2072:32096:65;;;;;;;;7608:15:66;:66;;7592:82;;;;2072:32096:65;;;;;;;;;;14143:89;14197:24;;;2072:32096;;;;14197:24;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;;551:66:50;2806:53:52;2072:32096:65;;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;;;2666:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;;;;10398:38;2072:32096;;32650:25;;;32646:225;32650:25;;;32768:4;;;;:::i;:::-;5755:16:66;;:::i;:::-;5751:67;;2072:32096:65;;;;;;;;;;;7916:84:46;958:1:71;7916:84:46;;2072:32096:65;;2958:30:71;;:62;:30;2072:32096:65;2790:99:71;;2958:62;6019:108:46;;7592:82:66;;;32646:225:65;6800:73:66;;;;2072:32096:65;;;15152:60:66;;;;2072:32096:65;15152:60:66;;;;;;;;;;;;;32646:225:65;15132:80:66;;;15128:143;;2072:32096:65;;;15305:60:66;;;;2072:32096:65;15305:60:66;;;;;;;;;;;;;32646:225:65;15285:80:66;;;15281:144;;2072:32096:65;;;;;;;;;;7292:26:72;19917:10:31;7292:26:72;;7288:97;;19669:4:31;2072:32096:65;;;;19627:2:31;2072:32096:65;9400:76:46;;2539:209;15647:49:66;2072:32096:65;;;;;;;;2539:209:46;;;;2072:32096:65;;;;;;;;;15647:49:66;2072:32096:65;;9400:76:46;9450:15;2072:32096:65;9450:15:46;2072:32096:65;;9450:15:46;7288:97:72;2072:32096:65;7341:33:72;;;;;15281:144:66;2072:32096:65;15388:26:66;;;;;15305:60;;;;;;;;;;;;;;;;:::i;:::-;;;2072:32096:65;;;;;15305:60:66;;;2072:32096:65;;;;15305:60:66;;;;;;2072:32096:65;;;;;;;;;15128:143:66;2072:32096:65;15235:25:66;;;;;15152:60;;;;;;;;;;;;;;;;:::i;:::-;;;2072:32096:65;;;;;15152:60:66;;;;;;;;6800:73;2072:32096:65;6846:16:66;;;;;2072:32096:65;;6846:16:66;7592:82;7648:26;;;;;2072:32096:65;;;;;;;;7608:15:66;:66;;7592:82;;;;2072:32096:65;;;;;;;;;;5751:67:66;2072:32096:65;5794:13:66;;;;;32646:225:65;-1:-1:-1;32794:10:65;32790:81;32646:225;32790:81;2072:32096;32842:18;;;;;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;928:3:90;2072:32096:65;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;;4956:25;2072:32096;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;2666:6;:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;1525:73:35;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;;;;;;1192:1:71;2072:32096:65;;;;958:1:71;7916:84:46;;16646:28:66;16642:93;;1083:103:50;;:::i;:::-;2072:32096:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;12587:18:66;2072:32096:65;;;;;;;;;;;;;;;;;;;;958:1:71;2072:32096:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1947:24:73;2072:32096:65;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;1981:47:73;2061:24;;;:::i;:::-;2072:32096:65;;;2038:47:73;2127:24;;;:::i;:::-;2072:32096:65;;;2095:56:73;2072:32096:65;;;9811:24:72;;;:::i;:::-;9470:46;2072:32096:65;6019:108:46;;2072:32096:65;9952:13:72;;;;;;2072:32096:65;;;;;2161:107:73;2300:24;;;:::i;:::-;2072:32096:65;;;2278:46:73;2072:32096:65;;7916:84:46;1192:1:71;7916:84:46;;;;2365:119:73;;;;9932:464:72;2365:190:73;;;;9932:464:72;2072:32096:65;2586:13:73;;;;;;2072:32096:65;;;-1:-1:-1;;;;;2072:32096:65;;;;12587:18:66;2072:32096:65;;;;;11419:13:66;2072:32096:65;11467:3:66;2072:32096:65;;;11438:20:66;2072:32096:65;;11434:31:66;;;;;11619:23;11567:139;11619:23;;1192:1:71;11619:23:66;;:::i;:::-;2072:32096:65;11660:32:66;2072:32096:65;;;;11660:29:66;:32;:::i;:::-;2072:32096:65;11567:139:66;;:::i;:::-;2072:32096:65;;;;;;;;;;;11419:13:66;;11434:31;;;2072:32096:65;551:66:50;3051:52:52;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;;;8470:156:46;;2072:32096:65;;;;;;15164:48;;;2072:32096;;2601:3:73;-1:-1:-1;;;;;2663:18:73;2072:32096:65;;;;2663:15:73;:18;:::i;:::-;2072:32096:65;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;2755:33:73;2072:32096:65;;;;2755:18:73;:33;;;;;:::i;:::-;;;:::i;:::-;;2072:32096:65;;;;;:::i;:::-;;;;:::i;:::-;7589:31:73;;;7636:21;465:4:47;7585:269:73;2802:48;2072:32096:65;;;;2802:19:73;:48;:::i;:::-;2072:32096:65;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;2072:32096:65;;3059:78:73;;2072:32096:65;;;;;;3800:69:73;;;;7585:269;3977:660;;;7585:269;1192:1:71;2601:3:73;;2571:13;2072:32096:65;2571:13:73;;3977:660;2072:32096:65;4062:56:73;2072:32096:65;;4062:56:73;:::i;:::-;4157:23;2072:32096:65;;;;4157:20:73;:23;:::i;:::-;2072:32096:65;;;;8915:41:73;4236:195;2072:32096:65;;;;8915:29:73;:41;:::i;:::-;2072:32096:65;9458:36:73;;;9454:804;;3977:660;4454:30;;;1192:1:71;4454:30:73;;4450:173;;3977:660;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;;:::i;:::-;4450:173;;;;9454:804;1068:5:47;2072:32096:65;;;1068:5:47;:::i;:::-;1186:122;;;1192:1:71;1186:122:47;;;;;;;;;;3665:25:43;2072:32096:65;10184:31:73;2072:32096:65;;10120:42:73;2072:32096:65;;;;10120:30:73;:42;:::i;:::-;2072:32096:65;;;10184:19:73;:31;:::i;:::-;2072:32096:65;3665:25:43;;:::i;:::-;2072:32096:65;;;;;;;;;;;;;1192:1:71;2072:32096:65;1625:13:47;2072:32096:65;;1625:13:47;:::i;:::-;9454:804:73;;;;;;3800:69;1192:1:71;2072:32096:65;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;3059:78;3114:8;1192:1:71;3114:8:73;;;;7585:269;2072:32096:65;;1192:1:71;2072:32096:65;;:::i;:::-;7678:32:73;1192:1:71;;2072:32096:65;;-1:-1:-1;;;;;2072:32096:65;;;;;;;7733:32:73;;;;2072:32096:65;7733:32:73;;;;;;;;;2072:32096:65;7733:32:73;;;7674:180;7726:39;7585:269;;7733:32;;;2072:32096:65;7733:32:73;;2072:32096:65;7733:32:73;;;;;;2072:32096:65;7733:32:73;;;:::i;:::-;;;2072:32096:65;;;;;7733:32:73;;;;;;-1:-1:-1;7733:32:73;;;2072:32096:65;;;;;;;;;7674:180:73;7803:40;2072:32096:65;7803:40:73;2072:32096:65;;7803:40:73;2365:190;2072:32096:65;;958:1:71;7916:84:46;1192:1:71;7916:84:46;2072:32096:65;;-1:-1:-1;2365:190:73;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;9967:3:72;12587:18:66;2072:32096:65;;;;;;12587:18:66;2072:32096:65;;;;;;;3267:1:71;6019:108:46;;;;;3267:1:71;;;6019:108:46;;1192:1:71;6019:108:46;;;3267:1:71;;10348:37:72;;;;:::i;:::-;2072:32096:65;;9937:13:72;;2072:32096:65;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;1192:1:71;2072:32096:65;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;;;;16642:93:66;-1:-1:-1;;;;;2072:32096:65;16697:27:66;;;;2072:32096:65;;;16697:27:66;2072:32096:65;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;8470:156:46;17707:15:65;2072:32096;8470:156:46;17707:15:65;2072:32096;17834:38;2072:32096;;;;;;17834:38;2072:32096;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;1746:1:69;2072:32096:65;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;6986:16:65;;:::i;:::-;;;;7127:13;2072:32096;7127:13;2072:32096;;7127:13;6982:900;2072:32096;7634:24;2072:32096;7615:15;:43;;7611:122;;8470:156:46;;7920:15:65;2072:32096;8470:156:46;;7920:15:65;2072:32096;8046:32;2072:32096;;;6610:4;2072:32096;;8046:32;2072:32096;;7611:122;7689:25;2072:32096;7689:25;2072:32096;;7689:25;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;2666:6;:30;:6;:30;:::i;:::-;2072:32096;;;30924:15;2072:32096;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;2666:6;;:30;;;:::i;:::-;2707:73:66;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;2877:22;2072:32096;;2855:10;:45;2851:101;;8718:4:66;;;2072:32096:65;8718:4:66;;;;;:::i;:::-;2072:32096:65;;10896:26;;;;;2072:32096;10896:26;;2072:32096;10896:26;;2072:32096;10896:26;;2072:32096;;10896:26;;;;;;;;;;;2072:32096;;;;10996:24;11047;10996;;;:::i;:::-;11047;;:::i;:::-;11087:13;;11125:3;2072:32096;;11102:21;;;;;11159:13;;;2072:32096;11159:13;;;:::i;:::-;2072:32096;;;;;11227:20;2072:32096;;;;;;;;;;;;1237:14:41;2072:32096:65;;;;;1616:3:41;2072:32096:65;11187:93;;;;:::i;:::-;2072:32096;1460:31:41;11187:93:65;;;;:::i;:::-;2072:32096;11299:16;;;;:::i;:::-;2072:32096;11299:20;;;:45;;;11125:3;11295:260;;11125:3;;;2072:32096;11087:13;;11295:260;11503:36;2072:32096;;;;;;;;;;;;;;;;;;;11503:36;:16;;;;:::i;:::-;2072:32096;11522:17;;;;:::i;:::-;2072:32096;11503:36;;:::i;:::-;;;:::i;:::-;11295:260;;;;11299:45;11323:17;;;;;:::i;:::-;2072:32096;11323:21;;11299:45;;11102:21;2072:32096;11102:21;2072:32096;11102:21;;2072:32096;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;10896:26;;;;;;;;;;;;;:::i;:::-;;;2072:32096;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;10896:26;;;;;;;2072:32096;;;;;;;;;;;;;;;;;;;;;;;;;;;;10896:26;2072:32096;;;;;;;;;;;2851:101;2072:32096;2923:18;;;;;2072:32096;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;;4651:24;2072:32096;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;2072:32096;6403:16;;:::i;:::-;2072:32096;;;;;;;;6421:24;;2072:32096;;;;;6447:25;2072:32096;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;16222:4:65;2072:32096;16192:34;2072:32096;;;16192:34;2072:32096;16192:34;;:::i;2072:32096::-;;;;;;;;:::i;:::-;2666:6;;:30;:6;;;;:30;:::i;:::-;2707:73:66;;:::i;:::-;8020:101;;:::i;:::-;1083:103:50;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;18298:13;2072:32096;;;;;;;;18294:117;;2072:32096;;;18447:20;;;;2072:32096;18447:20;;;;;;;;;;;;;2072:32096;;;18482:29;;18478:272;;3891:15:66;2072:32096:65;;;;18298:13;2072:32096;;;;;;;;;;;;;3891:15:66;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;19100:73:65;;;;:::i;:::-;2072:32096;;;;19183:20;2072:32096;;;;;;;;;;19570:44;;;2072:32096;19570:44;;2072:32096;19570:44;;2072:32096;19570:44;;;;;;;;;;;;;;2072:32096;19570:66;;;;:::i;:::-;19678:12;;;;:::i;:::-;2072:32096;;;;;;;;20054:12;2072:32096;;;;;23226:74;2072:32096;;;;23065:18;2072:32096;;2529:3;2072:32096;;;;;23138:15;2072:32096;;;;;;;;;;;;;;;;;;;;23226:74;20054:12;:::i;:::-;20082:30;;;20078:119;;-1:-1:-1;2072:32096:65;;;;;;;;;;;;;;;;;;;;20212:91;;2072:32096;;20212:91;551:66:50;3051:52:52;2072:32096:65;;;;;;20078:119;20135:51;2072:32096;20135:51;;;;;2072:32096;;;;20135:51;2072:32096;;;;;;;;;;19570:44;;;;;;;;;;;;;;;;:::i;:::-;;;2072:32096;;;;;19570:66;2072:32096;;19570:44;;;;;;;;2072:32096;;;;;;;;;18478:272;2072:32096;18703:36;;;;;2072:32096;;18703:36;18447:20;;;;;;;;;;;;;;:::i;:::-;;;;18294:117;2072:32096;18362:38;;;;;2072:32096;;18362:38;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;;;2666:6;:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;465::47;3098:36:65;;3094:108;;-1:-1:-1;;;;;2072:32096:65;;2877:22;2072:32096;;2855:10;:45;2851:101;;2072:32096;;;;;;;;;;;;19917:10:31;8036:26:72;;8032:97;;2072:32096:65;8232:183:72;2072:32096:65;;19669:4:31;12035:70:65;2072:32096;;8232:183:72;;:::i;2072:32096:65:-;;;;;;;;:::i;:::-;2666:6;;;;;;;:30;;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;564:10:68;:29;560:108;;2707:73:66;;:::i;:::-;10002:12;;;:::i;:::-;859:9:38;:23;;;17174:79:66;;2072:32096:65;26600:241;;2072:32096;;-1:-1:-1;;;;;2072:32096:65;;;;26872:15;2072:32096;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;26855:59;;26851:120;;-1:-1:-1;;;;;2072:32096:65;;;;27006:20;2072:32096;;;;;;;27072:18;2072:32096;;;;;;1460:31:41;27245:67:65;27145:63;1460:31:41;27146:47:65;1460:31:41;1237:14;1460:31;;27146:47:65;:::i;:::-;27145:63;:::i;:::-;2072:32096;27246:51;2072:32096;;1616:3:41;2072:32096:65;27246:51;:::i;27245:67::-;2072:32096;-1:-1:-1;;;;;2072:32096:65;;;;27776:13;2072:32096;;-1:-1:-1;;;;;2072:32096:65;;;;;27819:55;;;;27815:190;;28019:49;;;;28015:175;;28231:27;28350:193;28231:27;;;;;:::i;:::-;28269:53;2072:32096;-1:-1:-1;;;;;2072:32096:65;;28269:53;:::i;:::-;28472:61;1460:31:41;28398:60:65;1460:31:41;1237:14;1460:31;;28398:60:65;:::i;:::-;2072:32096;1616:3:41;2072:32096:65;28472:61;:::i;28350:193::-;2072:32096;-1:-1:-1;;;;;2072:32096:65;;;;27006:20;2072:32096;;;;;;;-1:-1:-1;;;;;2072:32096:65;;29494:18;29490:82;;-1:-1:-1;;;;;2072:32096:65;;;;27072:18;2072:32096;;29607:41;2072:32096;;;;;29607:41;:::i;:::-;29778:14;;;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;;;27072:18;2072:32096;;;;;;26872:15;2072:32096;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;29863:45;2072:32096;;;29863:45;:::i;:::-;2072:32096;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;29924:46;2072:32096;-1:-1:-1;;;;;2072:32096:65;;29924:46;;28930:31;28926:134;;2072:32096;29073:28;;29069:125;;2072:32096;-1:-1:-1;;2072:32096:65;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;29209:169;;-1:-1:-1;2072:32096:65;;29209:169;2072:32096;;;;;;;;;;29069:125;-1:-1:-1;;;;;2072:32096:65;;29117:66;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;29117:66;;;;;2072:32096;29117:66;;2072:32096;;29117:66;;2072:32096;;;;;;;;;;;;29117:66;;;;;;;;29069:125;;;;29117:66;;;;;:::i;:::-;2072:32096;;29117:66;;;;2072:32096;;;;;;;;;28926:134;-1:-1:-1;;;;;2072:32096:65;;28977:72;;;;2072:32096;;28977:72;2072:32096;28977:72;;2072:32096;28977:72;;2072:32096;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;28977:72;;;;;;;28926:134;28977:72;;;;;;:::i;:::-;2072:32096;28977:72;;28926:134;;29490:82;29535:26;2072:32096;29535:26;2072:32096;;29535:26;28015:175;28091:88;-1:-1:-1;;;;;28091:88:65;;2072:32096;28091:88;2072:32096;;;;;;;;;28091:88;27815:190;27897:97;;;2072:32096;27897:97;2072:32096;;;;;;;;27897:97;26851:120;26937:23;2072:32096;26937:23;2072:32096;;26937:23;26600:241;2072:32096;30248:114;;-1:-1:-1;;;;;2072:32096:65;;;;30456:15;2072:32096;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;30456:43;2072:32096;;;30456:43;:::i;:::-;2072:32096;;26600:241;;;30248:114;30317:34;2072:32096;30317:34;2072:32096;;30317:34;17174:79:66;2072:32096:65;7916:84:46;17211:15:66;2072:32096:65;7916:84:46;2072:32096:65;17174:79:66;;560:108:68;616:41;2072:32096:65;616:41:68;564:10;2072:32096:65;;;;616:41:68;2072:32096:65;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;2072:32096;7916:84:46;17245:15:65;2072:32096;;7916:84:46;;2072:32096:65;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;:::i;:::-;2666:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;8759:36:65;-1:-1:-1;;;;;2072:32096:65;;;;;;;;8464:4;2072:32096;;;;;;;8759:36;;:::i;:::-;2072:32096;;;;;;;;;;8464:4;7916:84:46;958:1:71;7916:84:46;;2072:32096:65;2958:30:71;;;:62;:30;2072:32096:65;2790:99:71;;2958:62;6019:108:46;;7592:82:66;;;2072:32096:65;-1:-1:-1;8867:19:65;;;9011:16;;2072:32096;9011:16;2072:32096;;;;9011:16;8863:916;2958:30:71;:62;2072:32096:65;2958:62:71;:::i;:::-;6019:108:46;;9500:15:65;:49;;9496:131;;8470:156:46;2072:32096:65;8863:916;2072:32096;;;;;;8470:156:46;;2072:32096:65;;;;9892:37;2072:32096;;;8464:4;2072:32096;;9892:37;2072:32096;9496:131;9580:28;;2072:32096;9580:28;2072:32096;;;;9580:28;7592:82:66;7648:26;;;;2072:32096:65;;;;;;;;;7608:15:66;:66;;7592:82;;;2072:32096:65;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;5847:20;2072:32096;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;-1:-1:-1;;;;;2072:32096:65;;:::i;:::-;2666:30;:6;:30;:::i;:::-;2072:32096;;;31391:20;2072:32096;;;;;;;;;1460:31:41;1237:14;1460:31;;2072:32096:65;;1616:3:41;2072:32096:65;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;1913:1:69;2072:32096:65;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;1083:103:50;;:::i;:::-;2072:32096:65;;12862:49;2072:32096;;;12862:49;2072:32096;12927:54;2072:32096;12927:54;;2072:32096;551:66:50;3051:52:52;2072:32096:65;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;2529:3;2072:32096;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;;4803:26;2072:32096;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;6986:16:65;;:::i;:::-;;;;8046:32;2072:32096;;8470:156:46;7920:15:65;2072:32096;8470:156:46;7920:15:65;2072:32096;;;;;;8046:32;2072:32096;6982:900;7841:16;2072:32096;7841:16;2072:32096;;7841:16;2072:32096;;;;;-1:-1:-1;;2072:32096:65;;;;;2666:30;:6;:30;:::i;:::-;2072:32096;6226:16;;:::i;:::-;2072:32096;;;;;;;;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;2666:30;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;2072:32096:65;;32073:27;2072:32096;;;;;;;;32073:27;2072:32096;32116:32;2072:32096;32116:32;;2072:32096;;;;;;-1:-1:-1;;2072:32096:65;;;;;;;;:::i;:::-;2666:30;:6;:30;:::i;:::-;-1:-1:-1;;;;;2072:32096:65;;;;;30692:13;2072:32096;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;:::o;:::-;-1:-1:-1;;2072:32096:65;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;2072:32096:65;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;1931:430:35:-;2072:32096:65;;;2303:50:35;;;2320:22;;2072:32096:65;;;;;;;2303:50:35;;;;;;:::i;:::-;2072:32096:65;2293:61:35;;1931:430;:::o;2072:32096:65:-;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;930:316:74;-1:-1:-1;;;;;2072:32096:65;1148:4:74;1140:31;1136:104;;930:316::o;1136:104::-;1194:35;;;;;;1688:201:35;33336:53:65;;1762:20:35;1774:7;;;;1762:20;:::i;:::-;33336:11:65;2072:32096;;;;33336:53;;;;;2072:32096;;;;1820:10:35;2072:32096:65;;;;33383:4;2072:32096;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;33336:53;;;;;;;;;;1774:7:35;33336:53:65;;;1688:201:35;1797:34;;1793:90;;1688:201::o;1793:90::-;1854:18;1774:7;1854:18;33336:53:65;1774:7:35;1854:18;33336:53:65;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;6249:212:66;2072:32096:65;6394:25:66;2072:32096:65;6375:15:66;:44;;:79;;;6249:212;:::o;6375:79::-;2072:32096:65;7916:84:46;6423:15:66;2072:32096:65;7916:84:46;;;6249:212:66;:::o;1192:349:50:-;551:66;2806:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;1316:93::-;1368:30;-1:-1:-1;1368:30:50;;-1:-1:-1;1368:30:50;8911:160:66;-1:-1:-1;;;;;2072:32096:65;;9217:15:66;2072:32096:65;9217:15:66;2072:32096:65;;7916:84:46;2072:32096:65;9217:15:66;2072:32096:65;;7916:84:46;8984:24:66;8980:85;;8911:160;:::o;8980:85::-;9031:23;9217:15;9031:23;;2072:32096:65;;9217:15:66;9031:23;2786:145;9187:17:69;2806:53:52;2072:32096:65;2837:88:66;;2786:145::o;2837:88::-;2894:20;-1:-1:-1;2894:20:66;;-1:-1:-1;2894:20:66;10039:200;-1:-1:-1;;;;;2072:32096:65;;;;;-1:-1:-1;2072:32096:65;10124:13:66;2072:32096:65;;;-1:-1:-1;2072:32096:65;;;10124:41:66;10120:113;;10039:200;:::o;10120:113::-;10188:34;-1:-1:-1;10188:34:66;;2072:32096:65;;-1:-1:-1;10188:34:66;3450:119;;3544:17;3450:119;3544:17;:::i;:::-;2072:32096:65;;;;;;3543:18:66;2072:32096:65;-1:-1:-1;2072:32096:65;3543:18:66;;:::i;:::-;3450:119::o;2311:281:41:-;1237:14;2426:25;;;:58;;;;;2311:281;2422:113;;;3060:43;2072:32096:65;3080:3:41;2072:32096:65;3060:43:41;:::i;:::-;2311:281;:::o;2422:113::-;2507:17;;;;;;2426:58;2455:29;;;;2426:58;;;8177:168:66;7916:84:46;8248:15:66;2072:32096:65;;7916:84:46;;8244:95:66;;8177:168::o;8244:95::-;8305:23;-1:-1:-1;8305:23:66;;-1:-1:-1;8305:23:66;31497:216:65;2529:3;31589:45;;31585:122;;31497:216;:::o;31585:122::-;31657:39;;;;2072:32096;;31657:39;;23313:831;;;-1:-1:-1;;;;;2072:32096:65;;;23414:16;;;23410:83;;24093:44;2072:32096;;;;;;23428:1;2072:32096;23528:18;2072:32096;;23528:41;2072:32096;;23428:1;2072:32096;;23528:41;:::i;:::-;23949:14;;;:::i;:::-;2072:32096;23428:1;2072:32096;23528:18;2072:32096;;;23428:1;2072:32096;;24034:15;2072:32096;;;23428:1;2072:32096;;23428:1;2072:32096;;;;23428:1;2072:32096;24034:43;2072:32096;;;24034:43;:::i;:::-;2072:32096;;;;;;;24093:44;23313:831::o;23410:83::-;23453:29;23428:1;23453:29;;23428:1;23453:29;16264:226;16402:4;8470:156:46;16336:15:65;2072:32096;8470:156:46;;16336:15:65;2072:32096;16461:22;-1:-1:-1;16461:22:65;;16264:226::o;1822:864:47:-;2004:6;;2000:58;;2560:120;2153:5;;;;:::i;:::-;2560:120;;;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;2072:32096:65;;;;;;;;;;;;;;;;;;:::o;32241:199::-;;-1:-1:-1;;;;;2072:32096:65;32339:10;:25;32335:62;;32428:4;;;:::i;32335:62::-;32380:7;:::o;34375:314:111:-;34568:16;34552:33;;34548:105;;34375:314;:::o;34548:105::-;34608:34;;;;2072:32096:65;;34608:34:111;;4346:904:66;4485:10;;4481:23;;-1:-1:-1;;;;;9520:18:69;2072:32096:65;;;4494:1:66;2072:32096:65;;;;;4494:1:66;2072:32096:65;2806:53:52;2072:32096:65;;;;;;4494:1:66;2072:32096:65;;;;;;;;;;;;;4738:9:66;;;9342:26:69;;3831:53:52;;2072:32096:65;;;;;;;;;3051:52:52;4734:423:66;4494:1;2072:32096:65;;;;4494:1:66;2072:32096:65;3051:52:52;4346:904:66:o;4734:423::-;;4940:217;9342:26:69;3831:53:52;;2072:32096:65;6806:1:44;2072:32096:65;;;;;;;3051:52:52;4734:423:66;;4481:23;4497:7;;:::o;2097:657:46:-;;2072:32096:65;19627:2:31;2072:32096:65;9400:76:46;;2072:32096:65;2539:209:46;;;2072:32096:65;2539:209:46;;;;2097:657;:::o;9180:112::-;9268:13;9186:14;9268:13;;9186:14;9268:13;2097:657;;8966:3;8956:13;;;;8952:64;;2072:32096:65;;;;;;;;2641:5:110;9226:3:46;2641:5:110;:13;:5;;;:13;9226:3:46;2641:13:110;19627:2:31;9204:40:46;9180:112;;2072:32096:65;19627:2:31;2072:32096:65;9400:76:46;;2539:209;;;;;;;;;2097:657;:::o;2641:13:110:-;;;32935:227:65;33615:45;;32935:227;33021:20;33033:7;;;;33021:20;:::i;:::-;-1:-1:-1;;;;;33615:11:65;2072:32096;;;;;;;33615:45;;;;;;2072:32096;33615:45;;33078:10;33615:45;;;;2072:32096;;;;;;;;;;;-1:-1:-1;;;;;2072:32096:65;;;;;;;;;;;;;;-1:-1:-1;2072:32096:65;;;:::o;:::-;;;;;;;;;;8442:263:72;6019:108:46;;2072:32096:65;6019:108:46;;19669:4:31;2072:32096:65;;;;;;;;;;;;;;;8442:263:72;:::o;7866:704:73:-;;;8372:29;465:4:47;838:5;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;2072:32096:65;1946:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;2072:32096:65;8522:31:73;:19;;;;;:31;:::i;:::-;2072:32096:65;1946:22:43;;:::i;:::-;838:5:47;:::i;:::-;2072:32096:65;8372:29:73;;;:191;:::i;:::-;2072:32096:65;7866:704:73:o"},"methodIdentifiers":{"addLiquidityToBuffer(address,uint256,uint256,uint256,address)":"e2a92b1a","areBuffersPaused()":"55cba7fe","collectAggregateFees(address)":"8f4ab9ca","disableQuery()":"de1a36a6","disableQueryPermanently()":"821440f2","disableRecoveryMode(address)":"bffb78b2","enableQuery()":"e0d55605","enableRecoveryMode(address)":"dc3f574e","getActionId(bytes4)":"851c1bb3","getBufferAsset(address)":"0387587d","getBufferBalance(address)":"4021fe0f","getBufferMinimumTotalSupply()":"26a8a991","getBufferOwnerShares(address,address)":"9385e39a","getBufferPeriodDuration()":"20c1fb7a","getBufferPeriodEndTime()":"cd51c12f","getBufferTotalShares(address)":"f2784e07","getMaximumPoolTokens()":"2e42f4d5","getMinimumPoolTokens()":"a8175b27","getMinimumTradeAmount()":"e2cb0ba0","getMinimumWrapAmount()":"53956aa2","getPauseWindowEndTime()":"8a8d123a","getPoolMinimumTotalSupply()":"d0965a6b","getVaultPausedState()":"85c8c015","initializeBuffer(address,uint256,uint256,uint256,address)":"653eb3b0","isVaultPaused()":"098401f5","pausePool(address)":"55aca1ec","pauseVault()":"9e0879c2","pauseVaultBuffers()":"e085c5a8","reentrancyGuardEntered()":"d2c725e0","removeLiquidityFromBuffer(address,uint256,uint256,uint256)":"ebc7955c","removeLiquidityFromBufferHook(address,uint256,uint256,uint256,address)":"5dcacd64","setAuthorizer(address)":"058a628f","setProtocolFeeController(address)":"2d771389","setStaticSwapFeePercentage(address,uint256)":"d15126ba","unpausePool(address)":"f21c38cd","unpauseVault()":"0b7562be","unpauseVaultBuffers()":"b9212b49","updateAggregateSwapFeePercentage(address,uint256)":"5e0b06f4","updateAggregateYieldFeePercentage(address,uint256)":"e253670a","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"mainVault\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"minTradeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minWrapAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodecOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"areBuffersPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"totalSwapFees\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"totalYieldFees\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQueryPermanently\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"enableRecoveryMode\",\"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\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBufferBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getBufferOwnerShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBufferTotalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumTradeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumWrapAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isVaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOutRaw\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"removeLiquidityFromBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"unpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Bytecode extension for the Vault containing permissioned functions. Complementary to `VaultExtension`, it has access to the same storage layout as the main vault. The functions in this contract are not meant to be called directly. They must only be called by the Vault via delegate calls, so that any state modifications produced by this contract's code will actually target the main Vault's state. The storage of this contract is in practice unused.\",\"errors\":{\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"details\":\"The buffer needs to be initialized beforehand.\",\"params\":{\"exactSharesToIssue\":\"The value in underlying tokens that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingInRaw\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedInRaw\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens deposited into the buffer\"}},\"areBuffersPaused()\":{\"details\":\"When buffers are paused, all buffer operations (i.e., calls on the Router with `isBuffer` true) will revert. Pausing buffers is reversible. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `isVaultPaused` to check the pause state of the Vault.\",\"returns\":{\"_0\":\"True if the Vault buffers are paused\"}},\"collectAggregateFees(address)\":{\"details\":\"Fees are sent to the ProtocolFeeController address.\",\"params\":{\"pool\":\"The pool on which all aggregate fees should be collected\"},\"returns\":{\"totalSwapFees\":\"An array with the total swap fees collected, sorted in token registration order\",\"totalYieldFees\":\"An array with the total yield fees collected, sorted in token registration order\"}},\"disableQuery()\":{\"details\":\"The query functions rely on a specific EVM feature to detect static calls. Query operations are exempt from settlement constraints, so it's critical that no state changes can occur. We retain the ability to disable queries in the unlikely event that EVM changes violate its assumptions (perhaps on an L2). This function can be acted upon as an emergency measure in ambiguous contexts where it's not 100% clear whether disabling queries is completely necessary; queries can still be re-enabled after this call.\"},\"disableQueryPermanently()\":{\"details\":\"Shall only be used when there is no doubt that queries pose a fundamental threat to the system.\"},\"disableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It re-syncs live balances (which could not be updated during Recovery Mode), forfeiting any yield fees that accrued while enabled. It makes external calls, and could potentially fail if there is an issue with any associated Rate Providers.\",\"params\":{\"pool\":\"The address of the pool\"}},\"enableQuery()\":{\"details\":\"Only works if queries are not permanently disabled.\"},\"enableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It enables a safe proportional withdrawal, with no external calls. Since there are no external calls, ensuring that entering Recovery Mode cannot fail, we cannot compute and so must forfeit any yield fees between the last operation and enabling Recovery Mode. For the same reason, live balances cannot be updated while in Recovery Mode, as doing so might cause withdrawals to fail.\",\"params\":{\"pool\":\"The address of the pool\"}},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getBufferAsset(address)\":{\"details\":\"The asset can never change after buffer initialization.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingToken\":\"Address of the underlying token registered for the wrapper; `address(0)` if the buffer has not been initialized.\"}},\"getBufferBalance(address)\":{\"details\":\"All values are in native token decimals of the wrapped or underlying tokens.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"_0\":\"Amount of underlying tokens deposited into the buffer, in native token decimals\",\"_1\":\"Amount of wrapped tokens deposited into the buffer, in native token decimals\"}},\"getBufferMinimumTotalSupply()\":{\"details\":\"This prevents buffers from being completely drained. When the buffer is initialized, this minimum number of shares is added to the shares resulting from the initial deposit. Buffer total supply accounting is internal to the Vault, as buffers are not tokenized.\",\"returns\":{\"_0\":\"The minimum total supply a buffer can have after initialization\"}},\"getBufferOwnerShares(address,address)\":{\"params\":{\"liquidityOwner\":\"Address of the user that owns liquidity in the wrapped token's buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"shares\":\"Amount of shares allocated to the liquidity owner, in native underlying token decimals\"}},\"getBufferPeriodDuration()\":{\"details\":\"This value is immutable. It represents the period during which, if paused, the Vault will remain paused. This ensures there is time available to address whatever issue caused the Vault to be paused. Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"The length of the buffer period in seconds\"}},\"getBufferPeriodEndTime()\":{\"details\":\"This value is immutable. If already paused, the Vault can be unpaused until this timestamp. Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"The timestamp after which the Vault remains permanently unpaused\"}},\"getBufferTotalShares(address)\":{\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"shares\":\"Amount of supply shares of the buffer, in native underlying token decimals\"}},\"getMaximumPoolTokens()\":{\"returns\":{\"_0\":\"The maximum token count of a pool\"}},\"getMinimumPoolTokens()\":{\"details\":\"We expect the vast majority of pools to be 2-token.\",\"returns\":{\"_0\":\"The minimum token count of a pool\"}},\"getMinimumTradeAmount()\":{\"details\":\"This limit is applied to the 18-decimal \\\"upscaled\\\" amount in any operation (swap, add/remove liquidity).\",\"returns\":{\"_0\":\"The minimum trade amount as an 18-decimal floating point number\"}},\"getMinimumWrapAmount()\":{\"details\":\"This limit is applied to the wrap operation amount, in native underlying token decimals.\",\"returns\":{\"_0\":\"The minimum wrap amount in native underlying token decimals\"}},\"getPauseWindowEndTime()\":{\"details\":\"This value is immutable, and represents the timestamp after which the Vault can no longer be paused by governance. Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"The timestamp when the Vault's pause window ends\"}},\"getPoolMinimumTotalSupply()\":{\"details\":\"This prevents pools from being completely drained. When the pool is initialized, this minimum amount of BPT is minted to the zero address. This is an 18-decimal floating point number; BPT are always 18 decimals.\",\"returns\":{\"_0\":\"The minimum total supply a pool can have after initialization\"}},\"getVaultPausedState()\":{\"details\":\"Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"True if the Vault is paused\",\"_1\":\"The timestamp of the end of the Vault's pause window\",\"_2\":\"The timestamp of the end of the Vault's buffer period\"}},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"params\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens that will be deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts. (it is the BPT of an internal ERC4626 buffer). It is expressed in underlying token native decimals.\"}},\"isVaultPaused()\":{\"details\":\"If the Vault is paused, all non-Recovery Mode state-changing operations on pools will revert. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `areBuffersPaused` to check the pause state of the buffers.\",\"returns\":{\"_0\":\"True if the Vault is paused\"}},\"pausePool(address)\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during pool factory deployment.\",\"params\":{\"pool\":\"The pool being paused\"}},\"pauseVault()\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during deployment. Note that ERC4626 buffer operations have an independent pause mechanism, which is not affected by pausing the Vault. Custom routers could still wrap/unwrap using buffers while the Vault is paused, unless buffers are also paused (with `pauseVaultBuffers`).\"},\"pauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. Currently it's not possible to pause vault buffers individually. This is a permissioned call, and is reversible (see `unpauseVaultBuffers`). Note that the Vault has a separate and independent pausing mechanism. It is possible to pause the Vault (i.e. pool operations), without affecting buffers, and vice versa.\"},\"reentrancyGuardEntered()\":{\"returns\":{\"_0\":\"True if the Vault is currently executing a nonReentrant function\"}},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Only proportional exits are supported, and the sender has to be the owner of the shares. This function unlocks the Vault just for this operation; it does not work with a Router as an entrypoint. Pre-conditions: - The buffer needs to be initialized. - sharesOwner is the original msg.sender, it needs to be checked in the Router. That's why this call is authenticated; only routers approved by the DAO can remove the liquidity of a buffer. - The buffer needs to have some liquidity and have its asset registered in `_bufferAssets` storage.\",\"params\":{\"minAmountUnderlyingOutRaw\":\"Minimum amount of underlying tokens to receive from the buffer. It is expressed in underlying token native decimals\",\"minAmountWrappedOutRaw\":\"Minimum amount of wrapped tokens to receive from the buffer. It is expressed in wrapped token native decimals\",\"sharesToRemove\":\"Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's total shares. It is expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceRaw\":\"Amount of underlying tokens returned to the user\",\"removedWrappedBalanceRaw\":\"Amount of wrapped tokens returned to the user\"}},\"removeLiquidityFromBufferHook(address,uint256,uint256,uint256,address)\":{\"details\":\"Internal hook for `removeLiquidityFromBuffer`. Can only be called by the Vault itself via `removeLiquidityFromBuffer`, which correctly forwards the real sender as the `sharesOwner`. This function must be reentrant because it calls the nonReentrant function `sendTo`. However, since `sendTo` is the only function that makes external calls, `removeLiquidityFromBufferHook` cannot reenter the Vault.\",\"params\":{\"minAmountUnderlyingOutRaw\":\"Minimum amount of underlying tokens to receive from the buffer. It is expressed in underlying token native decimals\",\"minAmountWrappedOutRaw\":\"Minimum amount of wrapped tokens to receive from the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Owner of the shares (`msg.sender` for `removeLiquidityFromBuffer` entrypoint)\",\"sharesToRemove\":\"Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's total shares\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceRaw\":\"Amount of underlying tokens returned to the user\",\"removedWrappedBalanceRaw\":\"Amount of wrapped tokens returned to the user\"}},\"setAuthorizer(address)\":{\"details\":\"This is a permissioned call. Emits an `AuthorizerChanged` event.\",\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"setProtocolFeeController(address)\":{\"details\":\"This is a permissioned call. Emits a `ProtocolFeeControllerChanged` event.\",\"params\":{\"newProtocolFeeController\":\"The address of the new Protocol Fee Controller\"}},\"setStaticSwapFeePercentage(address,uint256)\":{\"details\":\"This is a permissioned function, disabled if the pool is paused. The swap fee percentage must be within the bounds specified by the pool's implementation of `ISwapFeePercentageBounds`. Emits the SwapFeePercentageChanged event.\",\"params\":{\"pool\":\"The address of the pool for which the static swap fee will be changed\",\"swapFeePercentage\":\"The new swap fee percentage to apply to the pool\"}},\"unpausePool(address)\":{\"details\":\"This is a permissioned function that will only work on a paused Pool within the Buffer Period set during deployment. Note that the Pool will automatically unpause after the Buffer Period expires.\",\"params\":{\"pool\":\"The pool being unpaused\"}},\"unpauseVault()\":{\"details\":\"This is a permissioned function that will only work on a paused Vault within the Buffer Period set during deployment. Note that the Vault will automatically unpause after the Buffer Period expires. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing the Vault does not reverse `pauseVaultBuffers`. If buffers were also paused, they will remain in that state until explicitly unpaused.\"},\"unpauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing buffers does not reverse `pauseVault`. If the Vault was also paused, it will remain in that state until explicitly unpaused. This is a permissioned call.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateSwapFeePercentageChanged` event.\",\"params\":{\"newAggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose swap fee percentage will be updated\"}},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateYieldFeePercentageChanged` event.\",\"params\":{\"newAggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose yield fee percentage will be updated\"}},\"vault()\":{\"details\":\"The main Vault contains the entrypoint and main liquidity operation implementations.\",\"returns\":{\"_0\":\"vault The address of the main Vault\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BalanceOverflow()\":[{\"notice\":\"One of the balances is above the maximum value that can be stored.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"CodecOverflow()\":[{\"notice\":\"Function called with an invalid value.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotStaticCall()\":[{\"notice\":\"A state-changing transaction was initiated in a context that only allows static calls.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"OutOfBounds()\":[{\"notice\":\"Function called with an invalid bitLength or offset.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Adds liquidity to an internal ERC4626 buffer in the Vault, proportionally.\"},\"areBuffersPaused()\":{\"notice\":\"Indicates whether the Vault buffers are paused.\"},\"collectAggregateFees(address)\":{\"notice\":\"Collects accumulated aggregate swap and yield fees for the specified pool.\"},\"disableQuery()\":{\"notice\":\"Disables query functionality on the Vault. Can only be called by governance.\"},\"disableQueryPermanently()\":{\"notice\":\"Disables query functionality permanently on the Vault. Can only be called by governance.\"},\"disableRecoveryMode(address)\":{\"notice\":\"Disable recovery mode for a pool.\"},\"enableQuery()\":{\"notice\":\"Enables query functionality on the Vault. Can only be called by governance.\"},\"enableRecoveryMode(address)\":{\"notice\":\"Enable recovery mode for a pool.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getBufferAsset(address)\":{\"notice\":\"Returns the asset registered for a given wrapped token.\"},\"getBufferBalance(address)\":{\"notice\":\"Returns the amount of underlying and wrapped tokens deposited in the internal buffer of the Vault.\"},\"getBufferMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of an ERC4626 wrapped token buffer in the Vault.\"},\"getBufferOwnerShares(address,address)\":{\"notice\":\"Returns the shares (internal buffer BPT) of a liquidity owner: a user that deposited assets in the buffer.\"},\"getBufferPeriodDuration()\":{\"notice\":\"Returns the Vault's buffer period duration.\"},\"getBufferPeriodEndTime()\":{\"notice\":\"Returns the Vault's buffer period end time.\"},\"getBufferTotalShares(address)\":{\"notice\":\"Returns the supply shares (internal buffer BPT) of the ERC4626 buffer.\"},\"getMaximumPoolTokens()\":{\"notice\":\"Get the maximum number of tokens in a pool.\"},\"getMinimumPoolTokens()\":{\"notice\":\"Get the minimum number of tokens in a pool.\"},\"getMinimumTradeAmount()\":{\"notice\":\"Get the minimum trade amount in a pool operation.\"},\"getMinimumWrapAmount()\":{\"notice\":\"Get the minimum wrap amount in a buffer operation.\"},\"getPauseWindowEndTime()\":{\"notice\":\"Returns the Vault's pause window end time.\"},\"getPoolMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of pool tokens (BPT) for an initialized pool.\"},\"getVaultPausedState()\":{\"notice\":\"Returns the paused status, and end times of the Vault's pause window and buffer period.\"},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Initializes buffer for the given wrapped token.\"},\"isVaultPaused()\":{\"notice\":\"Indicates whether the Vault is paused.\"},\"pausePool(address)\":{\"notice\":\"Pause the Pool: an emergency action which disables all pool functions.\"},\"pauseVault()\":{\"notice\":\"Pause the Vault: an emergency action which disables all operational state-changing functions on pools.\"},\"pauseVaultBuffers()\":{\"notice\":\"Pauses native vault buffers globally.\"},\"reentrancyGuardEntered()\":{\"notice\":\"Expose the state of the Vault's reentrancy guard.\"},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Removes liquidity from an internal ERC4626 buffer in the Vault.\"},\"setAuthorizer(address)\":{\"notice\":\"Sets a new Authorizer for the Vault.\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets a new Protocol Fee Controller for the Vault.\"},\"setStaticSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new static swap fee percentage to the specified pool.\"},\"unpausePool(address)\":{\"notice\":\"Reverse a `pause` operation, and restore the Pool to normal functionality.\"},\"unpauseVault()\":{\"notice\":\"Reverse a `pause` operation, and restore Vault pool operations to normal functionality.\"},\"unpauseVaultBuffers()\":{\"notice\":\"Unpauses native vault buffers globally.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate swap fee percentage.\"},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate yield fee percentage.\"},\"vault()\":{\"notice\":\"Returns the main Vault address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/VaultAdmin.sol\":\"VaultAdmin\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultAdmin.sol\":{\"keccak256\":\"0x4867fd0bb2efe3fd6de41c7ba17e31fa2b8f8a9fdc085c03f45c5504c3a95d3c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8cb23e3dda5ef46a0f11861ac8a1a0e787c33df7241899208291d6fef1fec7fe\",\"dweb:/ipfs/QmVLLgjmomkgg6t2mB3PjDLhkAZ9x9gLSqU6kH22J3gwRu\"]},\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":{\"keccak256\":\"0xad949728097754fb91dd82f46a4f3430f0caf092fe719f04c030325e623c59cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6ba4635b64181a08098f2b4bde9bc6ceb8580d24654ec39c3d38ac2c8082317\",\"dweb:/ipfs/QmbthXemuT8Qvs2jdTADdyzbcPuZaKWfZjRn7j8dWuwffs\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol\":{\"keccak256\":\"0xf17a6fb82ff8eac940260544aa041e2cf8b826c0f7e205b4d52a4c5394a7ee38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c88893eba6593f2f7ef05e3ffeb61416b6cc630eaad2efa90e77262f3282ab81\",\"dweb:/ipfs/QmX9XhQix9yKT7buiT77igy8Bf1jvwwYGxpmTr4e5mWnQD\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/VaultCommon.sol":{"VaultCommon":{"abi":[{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"inputs":[],"name":"reentrancyGuardEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"reentrancyGuardEntered()":"d2c725e0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract contains common utilities in the inheritance chain that require storage to work, and will be required in both the main Vault and its extensions.\",\"errors\":{\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"reentrancyGuardEntered()\":{\"returns\":{\"_0\":\"True if the Vault is currently executing a nonReentrant function\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"reentrancyGuardEntered()\":{\"notice\":\"Expose the state of the Vault's reentrancy guard.\"}},\"notice\":\"Functions and modifiers shared between the main Vault and its extension contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":\"VaultCommon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":{\"keccak256\":\"0xad949728097754fb91dd82f46a4f3430f0caf092fe719f04c030325e623c59cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6ba4635b64181a08098f2b4bde9bc6ceb8580d24654ec39c3d38ac2c8082317\",\"dweb:/ipfs/QmbthXemuT8Qvs2jdTADdyzbcPuZaKWfZjRn7j8dWuwffs\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/VaultExtension.sol":{"VaultExtension":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"mainVault","type":"address"},{"internalType":"contract IVaultAdmin","name":"vaultAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BalanceOverflow","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"CodecOverflow","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotStaticCall","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"Result","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TokensNotSorted","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"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":"owner","type":"address"},{"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":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"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":"swapParams","type":"tuple"}],"name":"computeDynamicSwapFeePercentage","outputs":[{"internalType":"uint256","name":"dynamicSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"emitAuxiliaryEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getAddLiquidityCalledFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getBptRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getERC4626BufferAsset","outputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getHooksConfig","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNonzeroDeltaCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolConfig","outputs":[{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolPausedState","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolRoleAccounts","outputs":[{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenInfo","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":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenRates","outputs":[{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getReservesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getStaticSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenDelta","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"isERC4626BufferInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabledPermanently","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quote","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quoteAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reentrancyGuardEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_contract_IVault_fromMemory":{"entryPoint":981,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint32_fromMemory":{"entryPoint":1001,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":946,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4298":{"entryPoint":899,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateVaultStorageSlot":{"entryPoint":1029,"id":27922,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6102006040908082523461036e578181615e5e803803809161002182856103b2565b83398101031261036e57610034816103d5565b6020918201516001600160a01b03929091908383169081840361036e5761007a865161005f81610383565b600a8152691a5cd55b9b1bd8dad95960b21b83820152610405565b60c0526100ad865161008b81610383565b60118152701b9bdb96995c9bd1195b1d1850dbdd5b9d607a1b83820152610405565b60e0526100da86516100be81610383565b600b81526a746f6b656e44656c74617360a81b83820152610405565b9561010096875261011281516100ef81610383565b6012815271185919131a5c5d5a591a5d1e50d85b1b195960721b84820152610405565b95610120968752610141825161012781610383565b60098152681cd95cdcda5bdb925960ba1b85820152610405565b610140908152825163fbfa77cf60e01b815290918482600481895afa918215610379575f9261033e575b5080871691160361032f578151634546891d60e11b8152918383600481885afa928315610325575f93610306575b506101609283528051631060fdbd60e11b8152948486600481845afa9586156102d8575f966102e2575b50846004916101a097885283519283809263cd51c12f60e01b82525afa9485156102d8575f956102a9575b50506101809384526101c09586526101e0968752519661598598896104d98a3960805189505060a05189505060c05189818161110e015281816130bf015261337d015260e051898181611ce60152818161517401526151db015251888181611290015261511a015251878181611476015261180001525186818161145401526117de01525185505051846140520152518381816105dd0152612eea0152518281816122860152612bac01525181818161065d0152612b6f0152f35b6102c9929550803d106102d1575b6102c181836103b2565b8101906103e9565b925f806101ee565b503d6102b7565b82513d5f823e3d90fd5b60049196506102fe8691823d84116102d1576102c181836103b2565b9691506101c3565b61031e919350843d86116102d1576102c181836103b2565b915f610199565b50513d5f823e3d90fd5b634166145b60e11b5f5260045ffd5b9091508481813d8311610372575b61035681836103b2565b8101031261036e57610367906103d5565b905f61016b565b5f80fd5b503d61034c565b84513d5f823e3d90fd5b604081019081106001600160401b0382111761039e57604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b0382119082101761039e57604052565b51906001600160a01b038216820361036e57565b9081602091031261036e575163ffffffff8116810361036e5790565b6040519061041282610383565b600c8252610493603a602084016b5661756c7453746f7261676560a01b81526020604051948592828401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952518091603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a8101845201826103b2565b5190205f1981019081116104c4576040519060208201908152602082526104b982610383565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610018575b36612b5857612b30565b5f3560e01c8062fdfa13146102b657806313d21cdf146102b157806313ef8a5d146102ac57806315e32046146102a75780631ba0ae45146102a25780634afbaf5a1461029d5780634d472bdd146102985780634f037ee714610293578063532cec7c1461028e578063535cfd8a1461028957806367e0e076146102845780636844846b1461027f5780636c9bc7321461027a578063757d64b3146102755780637e361bde146102705780638380edb71461026b57806385e0b9991461026657806385f2dbd414610261578063927da1051461025c57806396787092146102575780639e825ff514610252578063a07d60401461024d578063aaabadc514610248578063ace9b89b14610243578063b45090f91461023e578063b4aef0ab14610239578063ba8a2be014610234578063be7d628a1461022f578063c673bdaf1461022a578063c808824714610225578063ca4f280314610220578063ce8630d41461021b578063d2c725e014610216578063db81718714610211578063e1f21c671461020c578063e4dc2aa414610207578063e9ddeb2614610202578063edfa3568146101fd578063eeec802f146101f8578063f29486a1146101f3578063f7888aec146101ee5763fbfa77cf0361000e57612267565b6121fe565b612164565b611f70565b611e8a565b611dce565b611d57565b611d0e565b611cca565b611c8c565b611b94565b611ae6565b611a3e565b6119f6565b6119a2565b6118b7565b61188d565b611841565b6117b2565b611781565b6112c6565b611264565b611220565b6111d0565b6111a2565b611138565b6110f2565b610fd2565b610e7c565b610ddc565b610d94565b610c3e565b610b38565b610ad4565b6109d2565b6108f0565b610681565b61063e565b61059c565b610572565b610483565b610313565b6001600160a01b038116036102cc57565b5f80fd5b61010435906102de826102bb565b565b35906102de826102bb565b60031960409101126102cc57600435610303816102bb565b90602435610310816102bb565b90565b346102cc5760206103626001600160a01b0361032e366102eb565b9190610338612ba2565b61034181612bfc565b165f526006835260405f20906001600160a01b03165f5260205260405f2090565b5460801c604051908152f35b9081518082526020808093019301915f5b82811061038d575050505090565b83516001600160a01b03168552938101939281019260010161037f565b600211156103b457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90604060609280516103f2816103aa565b83526001600160a01b0360208201511660208401520151151560408201520190565b9081518082526020808093019301915f5b828110610433575050505090565b909192938261044560019287516103e1565b950193929101610425565b9081518082526020808093019301915f5b82811061046f575050505090565b835185529381019392810192600101610461565b346102cc5760206003193601126102cc576105646104c56004356104a6816102bb565b6104ae6122aa565b506104b7612ba2565b6104c081612c47565b612c94565b60405191829160208352805160208401526104f0602082015160e0604086015261010085019061036e565b60c061055261053f61052b610517604087015195601f1996878b83030160608c0152610414565b6060870151868a83030160808b0152610450565b6080860151858983030160a08a0152610450565b60a0850151848883030184890152610450565b920151908483030160e0850152610450565b0390f35b5f9103126102cc57565b346102cc575f6003193601126102cc5761058a612ba2565b602060ff600954166040519015158152f35b346102cc5760206003193601126102cc5760806004356105bb816102bb565b6105c3612ba2565b6105cc81612bfc565b6105d581612eab565b6106029291927f00000000000000000000000000000000000000000000000000000000000000008261230e565b916001600160a01b038091165f52600160205260405f20541691604051931515845263ffffffff80921660208501521660408301526060820152f35b346102cc575f6003193601126102cc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102cc5760206003193601126102cc5760206004356106a0816102bb565b6106a8612ba2565b6001600160a01b038091165f52600e825260405f205416604051908152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761071057604052565b6106c7565b6080810190811067ffffffffffffffff82111761071057604052565b610140810190811067ffffffffffffffff82111761071057604052565b60e0810190811067ffffffffffffffff82111761071057604052565b67ffffffffffffffff811161071057604052565b90601f601f19910116810190811067ffffffffffffffff82111761071057604052565b604051906102de8261074e565b604051906102de82610715565b604051906102de82610731565b60405190610160820182811067ffffffffffffffff82111761071057604052565b604051906102de826106f4565b600211156102cc57565b35906102de826107f6565b67ffffffffffffffff81116107105760051b60200190565b9080601f830112156102cc57602090823561083d8161080b565b9361084b604051958661077e565b81855260208086019260051b8201019283116102cc57602001905b828210610874575050505090565b81358152908301908301610866565b67ffffffffffffffff811161071057601f01601f191660200190565b9291926108ab82610883565b916108b9604051938461077e565b8294818452818301116102cc578281602093845f960137010152565b9080601f830112156102cc578160206103109335910161089f565b346102cc576003196040813601126102cc5760043561090e816102bb565b6024359067ffffffffffffffff928383116102cc5760e09083360301126102cc576109376107a1565b9061094483600401610800565b82526024830135602083015260448301358481116102cc5761096c9060043691860101610823565b6040830152606483013560608301526084830135608083015261099160a484016102e0565b60a083015260c48301359384116102cc576109b86109c293600461056496369201016108d5565b60c083015261232b565b6040519081529081906020820190565b346102cc5760206003193601126102cc576004356109ef816102bb565b6109f7612ba2565b610a0081612c47565b610a4d60206080610a1084612c94565b0151604051809381927f984de9e8000000000000000000000000000000000000000000000000000000008352604060048401526044830190610450565b6001602483015203816001600160a01b0386165afa8015610acf57610564926109c2925f92610a9a575b50610a93906001600160a01b03165f52601160205260405f2090565b5490613088565b610a93919250610ac19060203d602011610ac8575b610ab9818361077e565b810190612457565b9190610a77565b503d610aaf565b612483565b346102cc5760206003193601126102cc576001600160a01b03600435610af9816102bb565b610b01612ba2565b610b0a81612bfc565b165f525f6020526020600160405f2054811c166040519015158152f35b906020610310928181520190610450565b346102cc5760206003193601126102cc576105646080610b6e600435610b5d816102bb565b610b65612ba2565b6104c081612bfc565b0151604051918291602083526020830190610450565b9081518082526020808093019301915f5b828110610ba3575050505090565b83516001600160a01b031685529381019392810192600101610b95565b9290610bd89095949295608085526080850190610b84565b6020908481036020860152602080885192838152019701915f5b828110610c21575050505084610c1391846103109697036040860152610450565b916060818403910152610450565b9091929782610c336001928b516103e1565b990193929101610bf2565b346102cc5760206003193601126102cc57600435610c5b816102bb565b610c63612ba2565b610c6c81612bfc565b6001600160a01b0381165f52600560205260405f20610ca4610c9f836001600160a01b03165f52600360205260405f2090565b61248e565b90815192610cb184612503565b93610cbb81612551565b91610cc582612551565b935f5b838110610ce0576040518061056488888c8c85610bc0565b80610cf560019284905f5260205260405f2090565b54610d4c610d478a610d32610d2586610d1f8b6001600160a01b03165f52600460205260405f2090565b936125af565b516001600160a01b031690565b6001600160a01b03165f5260205260405f2090565b6125d4565b610d56838c6125af565b52610d61828b6125af565b506fffffffffffffffffffffffffffffffff8116610d7f83896125af565b5260801c610d8d82896125af565b5201610cc8565b346102cc5760206003193601126102cc576020600435610db3816102bb565b610dbb612ba2565b6001600160a01b038091165f52600e825260405f2054161515604051908152f35b346102cc5760206003193601126102cc576020610e14600435610dfe816102bb565b610e06612ba2565b610e0f81612bfc565b612eab565b506040519015158152f35b9181601f840112156102cc5782359167ffffffffffffffff83116102cc57602083818601950101116102cc57565b60206003198201126102cc576004359067ffffffffffffffff82116102cc57610e7891600401610e1f565b9091565b346102cc575f80610e8c36610e4d565b90610e956130ac565b610e9d612ba2565b8160405192839283378101838152039082335af1610eb9612613565b908015610f065790610ecf81610f029333613140565b506040519182917f5ab64fb800000000000000000000000000000000000000000000000000000000835260048301611e79565b0390fd5b506004815110610f85577f5ab64fb8000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060208301511603613131577f28f95541000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091610fc461031093604084526040840190610450565b916020818403910152610450565b346102cc5760206003193601126102cc57600435610fef816102bb565b610ff7612ba2565b61100081612bfc565b6001600160a01b038082165f525f60205260405f2054600360205260405f209160405180938491602082549182815201915f5260205f20935f905b8282106110ca575050506110519250038361077e565b61105d825180926131cc565b9161106782612551565b935f5b8381106110805760405180610564888883610fad565b6001906110b96110b4610d476110a7866001600160a01b03165f52600460205260405f2090565b610d32610d25868a6125af565b61321e565b6110c382896125af565b520161106a565b85546001600160a01b039082161684526001958601958895506020909401939091019061103b565b346102cc575f6003193601126102cc5761110a612ba2565b60207f00000000000000000000000000000000000000000000000000000000000000005c6040519015158152f35b346102cc5760206fffffffffffffffffffffffffffffffff6111986001600160a01b03611164366102eb565b919061116e612ba2565b61117781612bfc565b165f526006845260405f20906001600160a01b03165f5260205260405f2090565b5416604051908152f35b346102cc575f6003193601126102cc576111ba612ba2565b60206001600160a01b03600a5416604051908152f35b346102cc5760606003193601126102cc5760206112186004356111f2816102bb565b6024356111fe816102bb565b6044359161120b836102bb565b611213612ba2565b6132fa565b604051908152f35b346102cc5760206003193601126102cc576001600160a01b03600435611245816102bb565b61124d612ba2565b165f526008602052602060405f2054604051908152f35b346102cc5760206003193601126102cc576020611218600435611286816102bb565b61128e612ba2565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03165f5260205260405f205c90565b346102cc5760806003193601126102cc576004356112e3816102bb565b6024356112ef816102bb565b6044359060643567ffffffffffffffff81116102cc57611313903690600401610823565b61131b612ba2565b61132361337b565b61132b6133cc565b61133484612c47565b6001600160a01b039384811691825f526020905f60205261135d60405f205460019060031c1690565b156117555761137d836001600160a01b03165f52600560205260405f2090565b96611386612642565b926113a5610c9f866001600160a01b03165f52600360205260405f2090565b80855251966113ba6040860198808a52612551565b97608086019889525f5b815181101561140d57806113fb6113e56001938f905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b611406828d516125af565b52016113c4565b50899896979861143b8189516114348c6001600160a01b03165f52601160205260405f2090565b5490613446565b996114468351612551565b95606089019687526114ad8b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b151560a08a018181529590611728575b5f5b855181101561160d576114e9818f8a8e838e6114db8e51151590565b6115bd575b505050506125af565b516114f4828c6125af565b511161155457808c8f826115478f8261154d9461152e61151d610d2560019b61153396516125af565b61152784846125af565b51906134d6565b6125af565b5193519361154183866125af565b516126b2565b926125af565b52016114bf565b8d8a61157d836115768f95611570610d25826115ba99516125af565b956125af565b51926125af565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b5ffd5b6115dc6115ee936115f9956115d285896125af565b5191015190613495565b6115e78383516125af565b52516125af565b5161154184846125af565b61160383836125af565b528a8e838e6114e0565b508a95509187918d938d611632816001600160a01b03165f52600560205260405f2090565b965f5b8951811015611683578061166a8c6116638361165b6001968f905f5260205260405f2090565b5492516125af565b5190613514565b61167c828c905f5260205260405f2090565b5501611635565b610564885f89897ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a58a8a6117016116ef8c6116d88d6116c481338886613522565b6116cc6135bd565b611718575b8583613622565b6001600160a01b03165f52601160205260405f2090565b549551886040519485941697846126bf565b0390a461170c613421565b60405191829182610b27565b6117238187856135df565b6116d1565b61174b6117458d6001600160a01b03165f525f60205260405f2090565b54612f52565b60208b01526114bd565b837fef029adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102cc575f6003193601126102cc57611799612ba2565b60206001600160a01b0360095460081c16604051908152f35b346102cc5760206003193601126102cc5760206118376004356117d4816102bb565b6117dc612ba2565b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b6040519015158152f35b346102cc5760206003193601126102cc576001600160a01b03600435611866816102bb565b61186e612ba2565b61187781612bfc565b165f525f602052602061121860405f2054612f52565b346102cc575f6003193601126102cc576118a5612ba2565b60206001600754166040519015158152f35b346102cc5760c06003193601126102cc576004356118d4816102bb565b602435906118e1826102bb565b6044359167ffffffffffffffff918284116102cc57366023850112156102cc57836004013561190f8161080b565b9461191d604051968761077e565b8186526020916024602088019160051b830101913683116102cc57602401905b82821061198957505050506064358381116102cc57611960903690600401610823565b60a4359384116102cc576105649461197f6109c29536906004016108d5565b93608435936126ea565b8380918335611997816102bb565b81520191019061193d565b346102cc5760206003193601126102cc576001600160a01b036004356119c7816102bb565b6119cf612ba2565b6119d881612bfc565b165f525f6020526020600160405f205460031c166040519015158152f35b346102cc5760206003193601126102cc576001600160a01b03600435611a1b816102bb565b611a23612ba2565b165f525f6020526020600160405f2054166040519015158152f35b346102cc5760406003193601126102cc5760243567ffffffffffffffff81116102cc57611a6f903690600401610e1f565b611a77612ba2565b611a8033612bfc565b80604051926020845281602085015260408401375f604082840101527f4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d8585642860043592604081601f19601f339601168101030190a3005b906020610310928181520190610b84565b346102cc5760206003193601126102cc57600435611b03816102bb565b611b0b612ba2565b611b1481612bfc565b6001600160a01b038091165f52600360205260405f20906040519081602084549182815201935f5260205f20915f905b828210611b675761056485611b5b8189038261077e565b60405191829182611ad5565b909192946001611b89819284895416906001600160a01b036020921681520190565b960193920190611b44565b346102cc5760206003193601126102cc57610160611bf9600435611bb7816102bb565b611bbf612891565b50611bc8612ba2565b611bd181612bfc565b6001600160a01b038091165f525f60205260405f205490600260205260405f20541690613ddd565b611c8a604051809280511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565bf35b346102cc575f6003193601126102cc5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b346102cc575f6003193601126102cc57611ce2612ba2565b60207f00000000000000000000000000000000000000000000000000000000000000005c604051908152f35b346102cc5760606003193601126102cc57611d4c600435611d2e816102bb565b602435611d3a816102bb565b611d42612ba2565b6044359133613f1b565b602060405160018152f35b346102cc5760206003193601126102cc576001600160a01b03600435611d7c816102bb565b611d84612ba2565b165f526011602052602060405f2054604051908152f35b6102de909291926060810193604090816001600160a01b0391828151168552826020820151166020860152015116910152565b346102cc5760206003193601126102cc57610564600435611dee816102bb565b611df66124e5565b50611dff612ba2565b611e0881612bfc565b6001600160a01b038091165f52600160205260405f2090600260405192611e2e846106f4565b828154168452826001820154166020850152015416604082015260405191829182611d9b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b906020610310928181520190611e54565b346102cc57610564611ed35f80611eba611ea336610e4d565b611eab6130ac565b611eb3612ba2565b369161089f565b60208151910182335af1611ecc612613565b9033613140565b604051918291602083526020830190611e54565b801515036102cc57565b608435906102de82611ee7565b6064359063ffffffff821682036102cc57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c60609101126102cc5760a490565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc60809101126102cc5761012490565b346102cc576101a06003193601126102cc57600435611f8e816102bb565b60243567ffffffffffffffff81116102cc57366023820112156102cc57806004013591611fba8361080b565b91604093611fcb604051948561077e565b8084526020906024602086019160071b840101923684116102cc57602401905b83821061202f5761202d8686611fff611efe565b612007611ef1565b61201036611f11565b916120196102d0565b9361202336611f40565b95604435916128f4565b005b6080823603126102cc5782608091885161204881610715565b8435612053816102bb565b815282850135612062816107f6565b8382015289850135612073816102bb565b8a8201526060808601359061208782611ee7565b820152815201910190611feb565b6102de909291926101806101a08201946120d68382516060809180511515845260208101511515602085015260408101511515604085015201511515910152565b60208101516080840152604081015160a0840152606081015160c084015261210c608082015160e085019064ffffffffff169052565b60a081015190612127610100928386019063ffffffff169052565b61215b60c082015192612141610120948588019015159052565b60e083015115156101408701528201511515610160860152565b01511515910152565b346102cc5760206003193601126102cc576105646121f2600435612187816102bb565b5f61012060405161219781610731565b6040516121a381610715565b83815283602082015283604082015283606082015281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201520152612a1a565b60405191829182612095565b346102cc5760406003193601126102cc57602061225e600435612220816102bb565b6001600160a01b0360243591612235836102bb565b61223d612ba2565b165f52600f835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b346102cc575f6003193601126102cc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604051906122b78261074e565b815f815260c060609182602082015282604082015282808201528260808201528260a08201520152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91909163ffffffff8080941691160191821161232657565b6122e1565b6123a891612337612ba2565b61234082612c47565b6001600160a01b039081831690815f525f6020526040938493612365855f2054612f52565b935f526002602052845f205416918451968794859384937fa0e8f5ac00000000000000000000000000000000000000000000000000000000855260048501612f9f565b03915afa918215610acf575f915f93612425575b5050156123fd57670de0b5cad2bef00081116123d55790565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b612448935080919250903d10612450575b612440818361077e565b810190612f80565b905f806123bc565b503d612436565b908160209103126102cc575190565b9190602061247e600192604086526040860190610450565b930152565b6040513d5f823e3d90fd5b90604051918281549182825260209260208301915f5260205f20935f905b8282106124c2575050506102de9250038361077e565b85546001600160a01b0316845260019586019588955093810193909101906124ac565b604051906124f2826106f4565b5f6040838281528260208201520152565b9061250d8261080b565b61251a604051918261077e565b828152601f1961252a829461080b565b01905f5b82811061253a57505050565b6020906125456124e5565b8282850101520161252e565b9061255b8261080b565b612568604051918261077e565b828152601f19612578829461080b565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80518210156125c35760209160051b010190565b612582565b6125d1826103aa565b52565b906040516125e1816106f4565b604060ff8294548181166125f4816103aa565b84526001600160a01b038160081c16602085015260a81c161515910152565b3d1561263d573d9061262482610883565b91612632604051938461077e565b82523d5f602084013e565b606090565b6040519060c0820182811067ffffffffffffffff821117610710576040525f60a08360608152826020820152826040820152606080820152606060808201520152565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0820191821161232657565b9190820391821161232657565b916126dc9061031094928452606060208501526060840190610450565b916040818403910152610450565b93959491959290926126fa612ba2565b61270261337b565b61270b85612bfc565b6127136133cc565b61271c856137f3565b61272585612c94565b916127348351600190811c1690565b61285c5761279d969761274e602085015151835190613841565b60c0840195865161276660a087019182519086613870565b9789612777885160019060081c1690565b6127eb575b899492508791509261278f969593613a59565b94859151600190600a1c1690565b6127ae575b50505050610310613421565b6127dc6127cf6127e2956001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b92613d11565b5f8080836127a2565b9161284f91612821899b8b61281b6127cf61278f9c9b999a986001600160a01b03165f52600260205260405f2090565b91613916565b61284561283f8d6001600160a01b03165f52600560205260405f2090565b8a6139ec565b5190519084613870565b978193929495508961277c565b7f218e3747000000000000000000000000000000000000000000000000000000005f526001600160a01b03861660045260245ffd5b60405190610160820182811067ffffffffffffffff821117610710576040525f610140838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201520152565b94969263ffffffff91969492612908612ba2565b6129106133cc565b61291861404b565b604051976129258961074e565b88526020880152166040860152151560608501526060853603126102cc576129a16129a8926129b296604080519161295c836106f4565b8035612967816102bb565b83526020810135612977816102bb565b60208401520135612987816102bb565b604082015260808701526001600160a01b031660a0860152565b36906129ba565b60c0830152614537565b6102de613421565b91908260809103126102cc576040516129d281610715565b606080829480356129e281611ee7565b845260208101356129f281611ee7565b60208501526040810135612a0581611ee7565b6040850152013591612a1683611ee7565b0152565b612a4590612a26612ba2565b612a2f81612bfc565b6001600160a01b03165f525f60205260405f2090565b546103106001612a5483612f52565b92612afd612a618261501f565b612af0612a6d84615042565b64ffffffffff85605a1c169063ffffffff86612a87608290565b1c1693612a926107ae565b600488901c89161515815299600588901c8916151560208c0152600688901c8916151560408c0152600788901c8916151560608c0152612ad06107bb565b9a8b5260208b015260408a0152606089015264ffffffffff166080880152565b63ffffffff1660a0860152565b808216151560c085015280821c8216151560e0850152600281901c8216151561010085015260031c161515610120830152565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b34612b3057365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e15612b9e573d5ff35b3d5ffd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003612bd457565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0316805f525f602052600160405f20541615612c1c5750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615612c695750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001600160a01b03612ca56122aa565b92165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f20938454938752612ce06020880195615065565b8552612ceb84612503565b91818801928352612cfb85612551565b9160608901928352612d0c86612551565b9460809560808b0152612d20878b516131cc565b60c08b0152612d2e87612551565b60a08b019081528a5191600199600184811c169384612e97575b5083612e85575b8c5f5b8b8110612d685750505050505050505050505050565b8a8d92828c8c8c612daf84612d9b81612d8d610d478f8f610d2585610d3292516125af565b94905f5260205260405f2090565b54945183612da983836125af565b526125af565b50612db98161321e565b612dc4858d516125af565b52612de26fffffffffffffffffffffffffffffffff841685876152b4565b878d8d15612e785782015115159182612e5a575b5050612e0b575b50505050505b018d90612d52565b82612e2e92612e2582612e1e8851615042565b94516125af565b51961c8561581f565b9283612e3e575b8e93508c612dfd565b612e5193612e4b916126b2565b916152b4565b5f8f8282612e35565b90915051612e67816103aa565b612e70816103aa565b14875f612df6565b5050505050505050612e03565b8c5190935060031c6001161592612d4f565b612ea2919450615042565b1515925f612d48565b6001600160a01b03165f525f60205260405f20549060018260021c1663ffffffff8093612ed6608290565b1c169281612ee357509190565b9050612f0f7f00000000000000000000000000000000000000000000000000000000000000008461230e565b164211159190565b60ff60019116019060ff821161232657565b9060058202918083046005149015171561232657565b8181029291811591840414171561232657565b62ffffff9060121c1664174876e800908181029181830414901517156123265790565b51906102de82611ee7565b91908260409103126102cc5760208251612f9981611ee7565b92015190565b612a1661303f60409396959496606084528051612fbb816103aa565b60608501526020810151608085015260c0612fe58683015160e060a0880152610140870190610450565b91606081015182870152608081015160e08701526001600160a01b0360a08201511661010087015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa085830301610120860152611e54565b6001600160a01b039096166020830152565b811561305b570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90670de0b6b3a7640000918281029281840414901517156123265761031091613051565b32613109576001600754166130e15760017f00000000000000000000000000000000000000000000000000000000000000005d565b7f7a198886000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b805115610f8557805190602001fd5b9061317d575080511561315557805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806131c3575b61318e575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15613186565b9064ffffffffff6131dc82612551565b92605a1c165f5b8281106131f05750505090565b601f826131fc83612f29565b1c1690604d821161232657600191600a0a61321782876125af565b52016131e3565b8051613229816103aa565b613232816103aa565b80613245575050670de0b6b3a764000090565b806132516001926103aa565b036132d257602061327c6132708260049401516001600160a01b031690565b6001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115610acf575f916132b9575090565b610310915060203d602011610ac857610ab9818361077e565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0392918381168484160361333757505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b6133779361336192165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b906001600160a01b03165f5260205260405f2090565b5490565b7f00000000000000000000000000000000000000000000000000000000000000005c156133a457565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6133f9576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b92916134528451612551565b935f5b815181101561348f578061347e8561347986613473600196886125af565b51612f3f565b613051565b61348882896125af565b5201613455565b50505050565b9061349f91612f3f565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b906134e0906150bc565b907f80000000000000000000000000000000000000000000000000000000000000008214612326576102de915f0390615111565b906103109160801c90615218565b91909392936135328282856132fa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103613562575b505050509050565b808611613580579461357694950392613f1b565b805f80808061355a565b85906001600160a01b03847ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b3215806135c75790565b506001600754161590565b9190820180921161232657565b9032613109576001600160a01b0361361392165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b80549182018092116123265755565b90916001600160a01b038084169283156137be5761365585613361836001600160a01b03165f52600f60205260405f2090565b548084116137815783900361367f86613361846001600160a01b03165f52600f60205260405f2090565b556136a58361369f836001600160a01b03165f52601160205260405f2090565b546126b2565b6136ae8161527c565b6136c9826001600160a01b03165f52601160205260405f2090565b551690813b156102cc576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f9161376391868180606481015b038183895af1613768575b506040519081529081906020820190565b0390a4565b8061377561377b9261076a565b80610568565b5f613752565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b6137fb61404b565b61380481612eab565b5061380c5750565b6001600160a01b03907fd971f597000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b0361384857565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b919082519181518151818514918215926138f6575b50506138485761389483612551565b935f5b8481106138a657505050505090565b80670de0b6b3a76400006138e46138bf600194866125af565b516138df6138cd858a6125af565b516138d8868a6125af565b5192612f3f565b612f3f565b046138ef82896125af565b5201613897565b141590505f80613885565b908160209103126102cc575161031081611ee7565b9061397a926139685f6001600160a01b03602095604051978896879586937f1c149e28000000000000000000000000000000000000000000000000000000008552604060048601526044850190610450565b90600319848303016024850152611e54565b0393165af1908115610acf575f916139bd575b501561399557565b7f60612925000000000000000000000000000000000000000000000000000000005f5260045ffd5b6139df915060203d6020116139e5575b6139d7818361077e565b810190613901565b5f61398d565b503d6139cd565b60208082015151925f5b848110613a04575050505050565b600190613a536fffffffffffffffffffffffffffffffff6040613a33613a2d85838b01516125af565b5161321e565b613a418560a08b01516125af565b52835f528587525f20541682876152b4565b016139f6565b929195969496613a7a846001600160a01b03165f52600560205260405f2090565b955f5b60208901518051821015613b5857610d2582613a98926125af565b613aa8613270610d2584896125af565b6001600160a01b038216908103613b04575090613ad2600192613acb838b6125af565b5190615301565b613aeb8b613ae483611576818d6125af565b5190615218565b613afd828b905f5260205260405f2090565b5501613a7d565b6115ba9088613b19613270610d25878c6125af565b7fffe261a1000000000000000000000000000000000000000000000000000000005f526001600160a01b03918216600452811660245216604452606490565b50509694919250969450613b9084517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd600291161790565b808552613bad846001600160a01b03165f525f60205260405f2090565b556001600160a01b0392613bf3602085831697604051809381927f984de9e800000000000000000000000000000000000000000000000000000000835260048301612466565b03818a5afa8015610acf57613c18915f91613cf2575b50613c138161527c565b612685565b97613c2282615313565b613c2d898584615423565b808910613cc25750928592613c997fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca87193613c8a6020613c8060019a996001600160a01b03165f52601160205260405f2090565b5498015151612551565b906040519485941697846126bf565b0390a47fcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f35f80a2565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600489905260245260445ffd5b613d0b915060203d602011610ac857610ab9818361077e565b5f613c09565b92613d645f6001600160a01b036020959496613d7b604051988997889687947f38be241d000000000000000000000000000000000000000000000000000000008652606060048701526064860190610450565b916024850152600319848303016044850152611e54565b0393165af1908115610acf575f91613dbe575b5015613d9657565b7f0f23dbc6000000000000000000000000000000000000000000000000000000005f5260045ffd5b613dd7915060203d6020116139e5576139d7818361077e565b5f613d8e565b90613de6612891565b5060ff6001808483613df8600c612f17565b613e0190612f17565b161c16818584613e11600c612f17565b613e1a90612f17565b613e2390612f17565b161c1690828685613e34600c612f17565b613e3d90612f17565b613e4690612f17565b613e4f90612f17565b161c1692808786613e60600c612f17565b613e6990612f17565b613e7290612f17565b613e7b90612f17565b613e8490612f17565b161c16948188818184600c161c1692600c613e9e90612f17565b161c1691613eaa6107c8565b60098a901c82161515815298600881901c8216151560208b0152600a81901c8216151560408b0152600b1c161515606089015215156080880152151560a0870152151560c0860152151560e0850152151561010084015215156101208301526001600160a01b031661014082015290565b9290916001600160a01b039283811693841561401657808316958615613fe15784613f5f8561336186613361866001600160a01b03165f52601060205260405f2090565b551692833b156102cc576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a6191613763915f818060648101613747565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421115806140a9575b61408157565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c1661407b565b908051906140c4826103aa565b6140cd826103aa565b82546020820151604092909201517fffffffffffffffffffff0000000000000000000000000000000000000000000090911660ff939093169290921760089190911b74ffffffffffffffffffffffffffffffffffffffff00161790151560a81b75ff00000000000000000000000000000000000000000016179055565b908160209103126102cc575160ff811681036102cc5790565b80546801000000000000000081101561071057600181018083558110156125c3576001600160a01b03915f5260205f200191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b815181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039182161782556102de926002919060409061423f8360208301511660018701906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b0151169101906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b91908260409103126102cc576020825192015190565b9081518082526020808093019301915f5b8281106142ac575050505090565b9091929382608060019287516001600160a01b03808251168352848201516142d3816103aa565b83860152604082810151909116908301526060908101511515908201520195019392910161429e565b9493916102de9360609261432e926001600160a01b03809216895216602088015260e0604088015260e087019061428d565b9401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b90816101409103126102cc576143706107bb565b9061437a81612f75565b825261438860208201612f75565b602083015261439960408201612f75565b60408301526143aa60608201612f75565b60608301526143bb60808201612f75565b60808301526143cc60a08201612f75565b60a08301526143dd60c08201612f75565b60c08301526143ee60e08201612f75565b60e0830152610100614401818301612f75565b90830152614413610120809201612f75565b9082015290565b919695939461447c6102de9663ffffffff6102209661444461450a966102a0808a5289019061428d565b9b60208801521660408601526060850190604090816001600160a01b0391828151168552826020820151166020860152015116910152565b60c083019080511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565b01906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b9061455c614555836001600160a01b03165f525f60205260405f2090565b5460011690565b614fea5780515160028110614fc25760088111614f9a5792919061457f84612551565b5f945f5b818110614c8d57505061464f9293945060808201916145bd83516145b8876001600160a01b03165f52600160205260405f2090565b6141bf565b6145d2613270600a546001600160a01b031690565b604080916145eb828751016001600160a01b0390511690565b906145f96060860151151590565b83517f77ff76e70000000000000000000000000000000000000000000000000000000081526001600160a01b03808c166004830152909316602484015215156044830152909687919082905f9082906064820190565b03925af18015610acf575f955f91614c5a575b5061477b60c084019161477661474584519761472e61472861468a8b51151560041b60011790565b9a60606146f86146c760209e8f85015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf9060051b91161790565b8c84015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9060061b91161790565b91015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f9060071b91161790565b91615571565b90605a9164ffffffffff908116831b921b19161790565b986147718688019a61475b8c5163ffffffff1690565b9060829163ffffffff908116831b921b19161790565b615641565b615661565b9360a08401906001600160a01b0395898761479d85516001600160a01b031690565b168061489e575b50906147c28193926001600160a01b03165f525f60205260405f2090565b5582516001600160a01b03166001600160a01b03166147f28b6001600160a01b03165f52600260205260405f2090565b9061482a91906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b8501948551614839908b615685565b519451975163ffffffff16965191516001600160a01b03166001600160a01b031661486391613ddd565b9151925195869533991697614878958761441a565b037fbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad91a3565b6148e091849189515f8951938b51968795869485937f0b89f18200000000000000000000000000000000000000000000000000000000855233600486016142fc565b03925af1908115610acf575f91614c3d575b5015614c285761490f61327061327085516001600160a01b031690565b90855180927fd77153a70000000000000000000000000000000000000000000000000000000082528160046101409586935afa928315610acf575f93614bf9575b50508151151580614bdf575b614b8c5790614b5a6101206149c6614b27614af5614ac3614a91614a5f614a2d8e614a026149f98c8f614b859f906149c66149ce9261499b8551151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff9060091b91161790565b920151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff9060081b91161790565b918c0151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff90600a1b91161790565b60608a015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff90600b1b91161790565b608089015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefff90600c1b91161790565b60a088015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff90600d1b91161790565b60c087015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfff90600e1b91161790565b60e086015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff90600f1b91161790565b61010085015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff9060101b91161790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff9060111b91161790565b895f6147a4565b6115ba8b614ba186516001600160a01b031690565b7ffa93d814000000000000000000000000000000000000000000000000000000005f526001600160a01b039081166004521660245233604452606490565b50614bf3614bee865151151590565b151590565b1561495c565b614c19929350803d10614c21575b614c11818361077e565b81019061435c565b905f80614950565b503d614c07565b6115ba8a614ba185516001600160a01b031690565b614c549150833d85116139e5576139d7818361077e565b5f6148f2565b905081614c7d9296503d8711614c86575b614c75818361077e565b810190614277565b9490945f614662565b503d614c6b565b614c988185516125af565b5196614cab88516001600160a01b031690565b906001600160a01b038083169182158015614f8f575b614f675716808210614f3f578114614f0a57604090818a01998a51614cec906001600160a01b031690565b6001600160a01b0316159060209b8c8201908d825191614d0b836103aa565b516001600160a01b031693606001938451614d2590151590565b91614d2e6107e9565b93614d3990856125c8565b6001600160a01b039091169083015215158187015286614d6a8d6001600160a01b03165f52600460205260405f2090565b90614d8591906001600160a01b03165f5260205260405f2090565b90614d8f916140b7565b8051614d9a816103aa565b614da3816103aa565b614ebb5750811591614eb0575b506132d25789915b51998a80927f313ce56700000000000000000000000000000000000000000000000000000000825260049c8d915afa918215610acf575f92614e83575b505060129060ff9180838316115f14614e2f578a7f686d3607000000000000000000000000000000000000000000000000000000005f525ffd5b60019495969798999a5090614e5392910316614e4b85886125af565b9060ff169052565b614e7781614e72896001600160a01b03165f52600360205260405f2090565b614163565b96959493929101614583565b614ea29250803d10614ea9575b614e9a818361077e565b81019061414a565b5f80614df5565b503d614e90565b51151590505f614db0565b6001915051614ec9816103aa565b614ed2816103aa565b03614ee2576132d2578991614db8565b7fa1e9dd9d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4f4b634e000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b7f6e8f1947000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b508189168314614cc1565b7f707bdf58000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f5ed4ba8f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdb771c80000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b62ffffff90602a1c1664174876e800908181029181830414901517156123265790565b62ffffff9060421c1664174876e800908181029181830414901517156123265790565b90604051918281549182825260209260208301915f5260205f20935f905b828210615099575050506102de9250038361077e565b85546001600160a01b031684526001958601958895509381019390910190615083565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116150e65790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908015615214577f0000000000000000000000000000000000000000000000000000000000000000916151568184906001600160a01b03165f5260205260405f205c90565b8281019283125f821290801582169115161761232657826151ca57507f000000000000000000000000000000000000000000000000000000000000000092835c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111612326576102de945d61588d565b156151d9575b6102de9261588d565b7f000000000000000000000000000000000000000000000000000000000000000092835c60018101809111612326576102de945d92506151d0565b5050565b906fffffffffffffffffffffffffffffffff808311908115615272575b5061524a5760801b9081018091116123265790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f615235565b620f424081106152895750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b91906080670de0b6b3a76400006152f86125d194806152d78660608a01516125af565b526138df6152e98660c08a01516125af565b516138d88760a08b01516125af565b049301516125af565b61530d6102de926150bc565b90615111565b61532e816001600160a01b03165f52601160205260405f2090565b908154620f424090818101809111612326576001600160a01b039355615365826001600160a01b03165f52600f60205260405f2090565b5f805260205260405f20908154019055165f80827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806153af8190620f4240602083019252565b0390a4803b156102cc575f60405180927f23de66510000000000000000000000000000000000000000000000000000000082528183816154056004820190620f4240604060608401935f81525f60208201520152565b03925af18015610acf576154165750565b806137756102de9261076a565b916001600160a01b0380831693841561553c5761545b83615455836001600160a01b03165f52601160205260405f2090565b546135d2565b61547a85613361846001600160a01b03165f52600f60205260405f2090565b8481540190556154898161527c565b6154a4826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806154dd87829190602083019252565b0390a4823b156102cc576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b039093166024820152604481019190915291829081838160648101615405565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b5f9190825b81518410156156355761558984836125af565b5160ff9161559686612f29565b91610100808410156156085783810390811161232657808510156156305750835b600590811161560857816007911c166155e057600193601f9116831b921b191617930192615576565b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b6155b7565b64ffffffffff16925050565b670de0b5cad2bef00082116123d55764174876e8006103109204906158a3565b90670de0b5cad2bef00081116123d5576103109164174876e80060429204906158bd565b906001600160a01b038216916040517fce20ece70000000000000000000000000000000000000000000000000000000081526020908181600481885afa908115610acf575f91615802575b5083106157da576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481885afa918215610acf575f926157bd575b5050821161579557818161577f6157687f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a195615762615790966001600160a01b03165f525f60205260405f2090565b54615904565b916001600160a01b03165f525f60205260405f2090565b556040519081529081906020820190565b0390a2565b7f7f47834b000000000000000000000000000000000000000000000000000000005f5260045ffd5b6157d39250803d10610ac857610ab9818361077e565b5f80615713565b7fbfb20688000000000000000000000000000000000000000000000000000000005f5260045ffd5b6158199150823d8411610ac857610ab9818361077e565b5f6156d0565b9093925f946158328460808501516125af565b51818111615842575b5050505050565b61588295965061587c93926158759261585b9203613495565b9360a061586c8260c08601516125af565b519301516125af565b5190612f3f565b90613088565b905f8080808061583b565b906001600160a01b03165f5260205260405f205d565b908060181c6155e057602a1b9062ffffff602a1b19161790565b906101008084101561560857838103908111612326578060ff105f146158ff575060ff5b601811615608578060181c6155e05762ffffff90831b921b19161790565b6158e1565b90670de0b5cad2bef00081116123d55764174876e80090048060181c6155e0577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff9060121b9116179056fea264697066735822122097e8fe09a26a403c37967f36e22ede1ac0c7b1e719543f28dfa924e75c4b44ea64736f6c634300081a0033","opcodes":"PUSH2 0x200 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x36E JUMPI DUP2 DUP2 PUSH2 0x5E5E DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x21 DUP3 DUP6 PUSH2 0x3B2 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x36E JUMPI PUSH2 0x34 DUP2 PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP2 SWAP1 DUP4 DUP4 AND SWAP1 DUP2 DUP5 SUB PUSH2 0x36E JUMPI PUSH2 0x7A DUP7 MLOAD PUSH2 0x5F DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0xA DUP2 MSTORE PUSH10 0x1A5CD55B9B1BD8DAD959 PUSH1 0xB2 SHL DUP4 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH2 0xAD DUP7 MLOAD PUSH2 0x8B DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x1B9BDB96995C9BD1195B1D1850DBDD5B9D PUSH1 0x7A SHL DUP4 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH2 0xDA DUP7 MLOAD PUSH2 0xBE DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0xB DUP2 MSTORE PUSH11 0x746F6B656E44656C746173 PUSH1 0xA8 SHL DUP4 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST SWAP6 PUSH2 0x100 SWAP7 DUP8 MSTORE PUSH2 0x112 DUP2 MLOAD PUSH2 0xEF DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x185919131A5C5D5A591A5D1E50D85B1B1959 PUSH1 0x72 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST SWAP6 PUSH2 0x120 SWAP7 DUP8 MSTORE PUSH2 0x141 DUP3 MLOAD PUSH2 0x127 DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x9 DUP2 MSTORE PUSH9 0x1CD95CDCDA5BDB9259 PUSH1 0xBA SHL DUP6 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST PUSH2 0x140 SWAP1 DUP2 MSTORE DUP3 MLOAD PUSH4 0xFBFA77CF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 DUP5 DUP3 PUSH1 0x4 DUP2 DUP10 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x379 JUMPI PUSH0 SWAP3 PUSH2 0x33E JUMPI JUMPDEST POP DUP1 DUP8 AND SWAP2 AND SUB PUSH2 0x32F JUMPI DUP2 MLOAD PUSH4 0x4546891D PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP4 DUP4 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x325 JUMPI PUSH0 SWAP4 PUSH2 0x306 JUMPI JUMPDEST POP PUSH2 0x160 SWAP3 DUP4 MSTORE DUP1 MLOAD PUSH4 0x1060FDBD PUSH1 0xE1 SHL DUP2 MSTORE SWAP5 DUP5 DUP7 PUSH1 0x4 DUP2 DUP5 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x2D8 JUMPI PUSH0 SWAP7 PUSH2 0x2E2 JUMPI JUMPDEST POP DUP5 PUSH1 0x4 SWAP2 PUSH2 0x1A0 SWAP8 DUP9 MSTORE DUP4 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH4 0xCD51C12F PUSH1 0xE0 SHL DUP3 MSTORE GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x2D8 JUMPI PUSH0 SWAP6 PUSH2 0x2A9 JUMPI JUMPDEST POP POP PUSH2 0x180 SWAP4 DUP5 MSTORE PUSH2 0x1C0 SWAP6 DUP7 MSTORE PUSH2 0x1E0 SWAP7 DUP8 MSTORE MLOAD SWAP7 PUSH2 0x5985 SWAP9 DUP10 PUSH2 0x4D9 DUP11 CODECOPY PUSH1 0x80 MLOAD DUP10 POP POP PUSH1 0xA0 MLOAD DUP10 POP POP PUSH1 0xC0 MLOAD DUP10 DUP2 DUP2 PUSH2 0x110E ADD MSTORE DUP2 DUP2 PUSH2 0x30BF ADD MSTORE PUSH2 0x337D ADD MSTORE PUSH1 0xE0 MLOAD DUP10 DUP2 DUP2 PUSH2 0x1CE6 ADD MSTORE DUP2 DUP2 PUSH2 0x5174 ADD MSTORE PUSH2 0x51DB ADD MSTORE MLOAD DUP9 DUP2 DUP2 PUSH2 0x1290 ADD MSTORE PUSH2 0x511A ADD MSTORE MLOAD DUP8 DUP2 DUP2 PUSH2 0x1476 ADD MSTORE PUSH2 0x1800 ADD MSTORE MLOAD DUP7 DUP2 DUP2 PUSH2 0x1454 ADD MSTORE PUSH2 0x17DE ADD MSTORE MLOAD DUP6 POP POP MLOAD DUP5 PUSH2 0x4052 ADD MSTORE MLOAD DUP4 DUP2 DUP2 PUSH2 0x5DD ADD MSTORE PUSH2 0x2EEA ADD MSTORE MLOAD DUP3 DUP2 DUP2 PUSH2 0x2286 ADD MSTORE PUSH2 0x2BAC ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x65D ADD MSTORE PUSH2 0x2B6F ADD MSTORE RETURN JUMPDEST PUSH2 0x2C9 SWAP3 SWAP6 POP DUP1 RETURNDATASIZE LT PUSH2 0x2D1 JUMPI JUMPDEST PUSH2 0x2C1 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3E9 JUMP JUMPDEST SWAP3 PUSH0 DUP1 PUSH2 0x1EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B7 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 SWAP2 SWAP7 POP PUSH2 0x2FE DUP7 SWAP2 DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x2D1 JUMPI PUSH2 0x2C1 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST SWAP7 SWAP2 POP PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x31E SWAP2 SWAP4 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x2D1 JUMPI PUSH2 0x2C1 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x199 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0x4166145B PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP5 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x372 JUMPI JUMPDEST PUSH2 0x356 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x36E JUMPI PUSH2 0x367 SWAP1 PUSH2 0x3D5 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x16B JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x34C JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x39E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x39E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x36E JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x36E JUMPI MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x36E JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x412 DUP3 PUSH2 0x383 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH2 0x493 PUSH1 0x3A PUSH1 0x20 DUP5 ADD PUSH12 0x5661756C7453746F72616765 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP3 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE MLOAD DUP1 SWAP2 PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x3B2 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x4C4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x4B9 DUP3 PUSH2 0x383 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x2B58 JUMPI PUSH2 0x2B30 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDFA13 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x13D21CDF EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x13EF8A5D EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x15E32046 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x1BA0AE45 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x4AFBAF5A EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x4D472BDD EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x4F037EE7 EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0x532CEC7C EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x535CFD8A EQ PUSH2 0x289 JUMPI DUP1 PUSH4 0x67E0E076 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x6844846B EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x6C9BC732 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x757D64B3 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x7E361BDE EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x8380EDB7 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x85E0B999 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x85F2DBD4 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x96787092 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x9E825FF5 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xA07D6040 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0xACE9B89B EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0xB45090F9 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xB4AEF0AB EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0xBA8A2BE0 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0xBE7D628A EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xC673BDAF EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xC8088247 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xCA4F2803 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xCE8630D4 EQ PUSH2 0x21B JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xDB817187 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xE1F21C67 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0xE4DC2AA4 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0xE9DDEB26 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xEDFA3568 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0xEEEC802F EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xF29486A1 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0xF7888AEC EQ PUSH2 0x1EE JUMPI PUSH4 0xFBFA77CF SUB PUSH2 0xE JUMPI PUSH2 0x2267 JUMP JUMPDEST PUSH2 0x21FE JUMP JUMPDEST PUSH2 0x2164 JUMP JUMPDEST PUSH2 0x1F70 JUMP JUMPDEST PUSH2 0x1E8A JUMP JUMPDEST PUSH2 0x1DCE JUMP JUMPDEST PUSH2 0x1D57 JUMP JUMPDEST PUSH2 0x1D0E JUMP JUMPDEST PUSH2 0x1CCA JUMP JUMPDEST PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1AE6 JUMP JUMPDEST PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x19F6 JUMP JUMPDEST PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x18B7 JUMP JUMPDEST PUSH2 0x188D JUMP JUMPDEST PUSH2 0x1841 JUMP JUMPDEST PUSH2 0x17B2 JUMP JUMPDEST PUSH2 0x1781 JUMP JUMPDEST PUSH2 0x12C6 JUMP JUMPDEST PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x11D0 JUMP JUMPDEST PUSH2 0x11A2 JUMP JUMPDEST PUSH2 0x1138 JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0xFD2 JUMP JUMPDEST PUSH2 0xE7C JUMP JUMPDEST PUSH2 0xDDC JUMP JUMPDEST PUSH2 0xD94 JUMP JUMPDEST PUSH2 0xC3E JUMP JUMPDEST PUSH2 0xB38 JUMP JUMPDEST PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x8F0 JUMP JUMPDEST PUSH2 0x681 JUMP JUMPDEST PUSH2 0x63E JUMP JUMPDEST PUSH2 0x59C JUMP JUMPDEST PUSH2 0x572 JUMP JUMPDEST PUSH2 0x483 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x2BB JUMP JUMPDEST JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x303 DUP2 PUSH2 0x2BB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x310 DUP2 PUSH2 0x2BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x362 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x32E CALLDATASIZE PUSH2 0x2EB JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x338 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x341 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x38D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x37F JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3B4 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x60 SWAP3 DUP1 MLOAD PUSH2 0x3F2 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x433 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH2 0x445 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH2 0x3E1 JUMP JUMPDEST SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x425 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x46F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x461 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH2 0x4C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x4A6 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x4AE PUSH2 0x22AA JUMP JUMPDEST POP PUSH2 0x4B7 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x4C0 DUP2 PUSH2 0x2C47 JUMP JUMPDEST PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE DUP1 MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x4F0 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0xE0 PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP1 PUSH2 0x36E JUMP JUMPDEST PUSH1 0xC0 PUSH2 0x552 PUSH2 0x53F PUSH2 0x52B PUSH2 0x517 PUSH1 0x40 DUP8 ADD MLOAD SWAP6 PUSH1 0x1F NOT SWAP7 DUP8 DUP12 DUP4 SUB ADD PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x414 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD DUP7 DUP11 DUP4 SUB ADD PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP6 DUP10 DUP4 SUB ADD PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD DUP5 DUP9 DUP4 SUB ADD DUP5 DUP10 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x2CC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x58A PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x80 PUSH1 0x4 CALLDATALOAD PUSH2 0x5BB DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x5C3 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x5CC DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH2 0x5D5 DUP2 PUSH2 0x2EAB JUMP JUMPDEST PUSH2 0x602 SWAP3 SWAP2 SWAP3 PUSH32 0x0 DUP3 PUSH2 0x230E JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP2 PUSH1 0x40 MLOAD SWAP4 ISZERO ISZERO DUP5 MSTORE PUSH4 0xFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0x6A0 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x74E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x715 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x2CC JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x7F6 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x83D DUP2 PUSH2 0x80B JUMP JUMPDEST SWAP4 PUSH2 0x84B PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x77E JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x874 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x866 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x8AB DUP3 PUSH2 0x883 JUMP JUMPDEST SWAP2 PUSH2 0x8B9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x77E JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2CC JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP2 PUSH1 0x20 PUSH2 0x310 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x89F JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x3 NOT PUSH1 0x40 DUP2 CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x90E DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0xE0 SWAP1 DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x937 PUSH2 0x7A1 JUMP JUMPDEST SWAP1 PUSH2 0x944 DUP4 PUSH1 0x4 ADD PUSH2 0x800 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x24 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x44 DUP4 ADD CALLDATALOAD DUP5 DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x96C SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP7 ADD ADD PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x64 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x84 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x991 PUSH1 0xA4 DUP5 ADD PUSH2 0x2E0 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC4 DUP4 ADD CALLDATALOAD SWAP4 DUP5 GT PUSH2 0x2CC JUMPI PUSH2 0x9B8 PUSH2 0x9C2 SWAP4 PUSH1 0x4 PUSH2 0x564 SWAP7 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x232B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x9EF DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x9F7 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xA00 DUP2 PUSH2 0x2C47 JUMP JUMPDEST PUSH2 0xA4D PUSH1 0x20 PUSH1 0x80 PUSH2 0xA10 DUP5 PUSH2 0x2C94 JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x40 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x24 DUP4 ADD MSTORE SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH2 0x564 SWAP3 PUSH2 0x9C2 SWAP3 PUSH0 SWAP3 PUSH2 0xA9A JUMPI JUMPDEST POP PUSH2 0xA93 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x3088 JUMP JUMPDEST PUSH2 0xA93 SWAP2 SWAP3 POP PUSH2 0xAC1 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAC8 JUMPI JUMPDEST PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2457 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xA77 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x2483 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0xAF9 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xB01 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xB0A DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x310 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH1 0x80 PUSH2 0xB6E PUSH1 0x4 CALLDATALOAD PUSH2 0xB5D DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xB65 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x4C0 DUP2 PUSH2 0x2BFC JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xBA3 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xB95 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0xBD8 SWAP1 SWAP6 SWAP5 SWAP3 SWAP6 PUSH1 0x80 DUP6 MSTORE PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP5 DUP2 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x20 DUP1 DUP9 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP8 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xC21 JUMPI POP POP POP POP DUP5 PUSH2 0xC13 SWAP2 DUP5 PUSH2 0x310 SWAP7 SWAP8 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP8 DUP3 PUSH2 0xC33 PUSH1 0x1 SWAP3 DUP12 MLOAD PUSH2 0x3E1 JUMP JUMPDEST SWAP10 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0xBF2 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xC5B DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xC63 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xC6C DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0xCA4 PUSH2 0xC9F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x248E JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP3 PUSH2 0xCB1 DUP5 PUSH2 0x2503 JUMP JUMPDEST SWAP4 PUSH2 0xCBB DUP2 PUSH2 0x2551 JUMP JUMPDEST SWAP2 PUSH2 0xCC5 DUP3 PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xCE0 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x564 DUP9 DUP9 DUP13 DUP13 DUP6 PUSH2 0xBC0 JUMP JUMPDEST DUP1 PUSH2 0xCF5 PUSH1 0x1 SWAP3 DUP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xD4C PUSH2 0xD47 DUP11 PUSH2 0xD32 PUSH2 0xD25 DUP7 PUSH2 0xD1F DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x25D4 JUMP JUMPDEST PUSH2 0xD56 DUP4 DUP13 PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0xD61 DUP3 DUP12 PUSH2 0x25AF JUMP JUMPDEST POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD7F DUP4 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH1 0x80 SHR PUSH2 0xD8D DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0xCC8 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0xDB3 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xDBB PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO ISZERO PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0xE14 PUSH1 0x4 CALLDATALOAD PUSH2 0xDFE DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xE06 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xE0F DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH2 0x2EAB JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2CC JUMPI PUSH2 0xE78 SWAP2 PUSH1 0x4 ADD PUSH2 0xE1F JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 DUP1 PUSH2 0xE8C CALLDATASIZE PUSH2 0xE4D JUMP JUMPDEST SWAP1 PUSH2 0xE95 PUSH2 0x30AC JUMP JUMPDEST PUSH2 0xE9D PUSH2 0x2BA2 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP4 DUP2 MSTORE SUB SWAP1 DUP3 CALLER GAS CALL PUSH2 0xEB9 PUSH2 0x2613 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xF06 JUMPI SWAP1 PUSH2 0xECF DUP2 PUSH2 0xF02 SWAP4 CALLER PUSH2 0x3140 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E79 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x4 DUP2 MLOAD LT PUSH2 0xF85 JUMPI PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MLOAD AND SUB PUSH2 0x3131 JUMPI PUSH32 0x28F9554100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH2 0xFC4 PUSH2 0x310 SWAP4 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xFEF DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xFF7 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1000 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x10CA JUMPI POP POP POP PUSH2 0x1051 SWAP3 POP SUB DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH2 0x105D DUP3 MLOAD DUP1 SWAP3 PUSH2 0x31CC JUMP JUMPDEST SWAP2 PUSH2 0x1067 DUP3 PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x1080 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x564 DUP9 DUP9 DUP4 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x10B9 PUSH2 0x10B4 PUSH2 0xD47 PUSH2 0x10A7 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xD32 PUSH2 0xD25 DUP7 DUP11 PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x321E JUMP JUMPDEST PUSH2 0x10C3 DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x106A JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP3 AND AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP PUSH1 0x20 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x110A PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1198 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1164 CALLDATASIZE PUSH2 0x2EB JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x116E PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1177 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x11BA PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x1218 PUSH1 0x4 CALLDATALOAD PUSH2 0x11F2 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x11FE DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x120B DUP4 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1213 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1245 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x124D PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x1218 PUSH1 0x4 CALLDATALOAD PUSH2 0x1286 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x128E PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x12E3 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x12EF DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x1313 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x823 JUMP JUMPDEST PUSH2 0x131B PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1323 PUSH2 0x337B JUMP JUMPDEST PUSH2 0x132B PUSH2 0x33CC JUMP JUMPDEST PUSH2 0x1334 DUP5 PUSH2 0x2C47 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH0 PUSH1 0x20 MSTORE PUSH2 0x135D PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x3 SHR AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1755 JUMPI PUSH2 0x137D DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH2 0x1386 PUSH2 0x2642 JUMP JUMPDEST SWAP3 PUSH2 0x13A5 PUSH2 0xC9F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE MLOAD SWAP7 PUSH2 0x13BA PUSH1 0x40 DUP7 ADD SWAP9 DUP1 DUP11 MSTORE PUSH2 0x2551 JUMP JUMPDEST SWAP8 PUSH1 0x80 DUP7 ADD SWAP9 DUP10 MSTORE PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x140D JUMPI DUP1 PUSH2 0x13FB PUSH2 0x13E5 PUSH1 0x1 SWAP4 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1406 DUP3 DUP14 MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x13C4 JUMP JUMPDEST POP DUP10 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x143B DUP2 DUP10 MLOAD PUSH2 0x1434 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x3446 JUMP JUMPDEST SWAP10 PUSH2 0x1446 DUP4 MLOAD PUSH2 0x2551 JUMP JUMPDEST SWAP6 PUSH1 0x60 DUP10 ADD SWAP7 DUP8 MSTORE PUSH2 0x14AD DUP12 PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST ISZERO ISZERO PUSH1 0xA0 DUP11 ADD DUP2 DUP2 MSTORE SWAP6 SWAP1 PUSH2 0x1728 JUMPI JUMPDEST PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x160D JUMPI PUSH2 0x14E9 DUP2 DUP16 DUP11 DUP15 DUP4 DUP15 PUSH2 0x14DB DUP15 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x15BD JUMPI JUMPDEST POP POP POP POP PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x14F4 DUP3 DUP13 PUSH2 0x25AF JUMP JUMPDEST MLOAD GT PUSH2 0x1554 JUMPI DUP1 DUP13 DUP16 DUP3 PUSH2 0x1547 DUP16 DUP3 PUSH2 0x154D SWAP5 PUSH2 0x152E PUSH2 0x151D PUSH2 0xD25 PUSH1 0x1 SWAP12 PUSH2 0x1533 SWAP7 MLOAD PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x1527 DUP5 DUP5 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x34D6 JUMP JUMPDEST PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP4 PUSH2 0x1541 DUP4 DUP7 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x26B2 JUMP JUMPDEST SWAP3 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x14BF JUMP JUMPDEST DUP14 DUP11 PUSH2 0x157D DUP4 PUSH2 0x1576 DUP16 SWAP6 PUSH2 0x1570 PUSH2 0xD25 DUP3 PUSH2 0x15BA SWAP10 MLOAD PUSH2 0x25AF JUMP JUMPDEST SWAP6 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH0 REVERT JUMPDEST PUSH2 0x15DC PUSH2 0x15EE SWAP4 PUSH2 0x15F9 SWAP6 PUSH2 0x15D2 DUP6 DUP10 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP2 ADD MLOAD SWAP1 PUSH2 0x3495 JUMP JUMPDEST PUSH2 0x15E7 DUP4 DUP4 MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x1541 DUP5 DUP5 PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x1603 DUP4 DUP4 PUSH2 0x25AF JUMP JUMPDEST MSTORE DUP11 DUP15 DUP4 DUP15 PUSH2 0x14E0 JUMP JUMPDEST POP DUP11 SWAP6 POP SWAP2 DUP8 SWAP2 DUP14 SWAP4 DUP14 PUSH2 0x1632 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x1683 JUMPI DUP1 PUSH2 0x166A DUP13 PUSH2 0x1663 DUP4 PUSH2 0x165B PUSH1 0x1 SWAP7 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3514 JUMP JUMPDEST PUSH2 0x167C DUP3 DUP13 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x564 DUP9 PUSH0 DUP10 DUP10 PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 DUP11 DUP11 PUSH2 0x1701 PUSH2 0x16EF DUP13 PUSH2 0x16D8 DUP14 PUSH2 0x16C4 DUP2 CALLER DUP9 DUP7 PUSH2 0x3522 JUMP JUMPDEST PUSH2 0x16CC PUSH2 0x35BD JUMP JUMPDEST PUSH2 0x1718 JUMPI JUMPDEST DUP6 DUP4 PUSH2 0x3622 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 MLOAD DUP9 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x26BF JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x170C PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB27 JUMP JUMPDEST PUSH2 0x1723 DUP2 DUP8 DUP6 PUSH2 0x35DF JUMP JUMPDEST PUSH2 0x16D1 JUMP JUMPDEST PUSH2 0x174B PUSH2 0x1745 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MSTORE PUSH2 0x14BD JUMP JUMPDEST DUP4 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x1799 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x1837 PUSH1 0x4 CALLDATALOAD PUSH2 0x17D4 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x17DC PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1866 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x186E PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1877 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x1218 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x2F52 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x18A5 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x18D4 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x18E1 DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x2CC JUMPI CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP4 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x190F DUP2 PUSH2 0x80B JUMP JUMPDEST SWAP5 PUSH2 0x191D PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x77E JUMP JUMPDEST DUP2 DUP7 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x24 PUSH1 0x20 DUP9 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1989 JUMPI POP POP POP POP PUSH1 0x64 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x1960 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x823 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP4 DUP5 GT PUSH2 0x2CC JUMPI PUSH2 0x564 SWAP5 PUSH2 0x197F PUSH2 0x9C2 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x8D5 JUMP JUMPDEST SWAP4 PUSH1 0x84 CALLDATALOAD SWAP4 PUSH2 0x26EA JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x1997 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x193D JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x19C7 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x19CF PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x19D8 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1A1B DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1A23 PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x1A6F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xE1F JUMP JUMPDEST PUSH2 0x1A77 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1A80 CALLER PUSH2 0x2BFC JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 MSTORE DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATACOPY PUSH0 PUSH1 0x40 DUP3 DUP5 ADD ADD MSTORE PUSH32 0x4BC4412E210115456903C65B5277D299A505E79F2EB852B92B1CA52D85856428 PUSH1 0x4 CALLDATALOAD SWAP3 PUSH1 0x40 DUP2 PUSH1 0x1F NOT PUSH1 0x1F CALLER SWAP7 ADD AND DUP2 ADD SUB ADD SWAP1 LOG3 STOP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x310 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xB84 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1B03 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1B0B PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1B14 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP5 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1B67 JUMPI PUSH2 0x564 DUP6 PUSH2 0x1B5B DUP2 DUP10 SUB DUP3 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1AD5 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP5 PUSH1 0x1 PUSH2 0x1B89 DUP2 SWAP3 DUP5 DUP10 SLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP3 AND DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP7 ADD SWAP4 SWAP3 ADD SWAP1 PUSH2 0x1B44 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x160 PUSH2 0x1BF9 PUSH1 0x4 CALLDATALOAD PUSH2 0x1BB7 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1BBF PUSH2 0x2891 JUMP JUMPDEST POP PUSH2 0x1BC8 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1BD1 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x3DDD JUMP JUMPDEST PUSH2 0x1C8A PUSH1 0x40 MLOAD DUP1 SWAP3 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x1CE2 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x1D4C PUSH1 0x4 CALLDATALOAD PUSH2 0x1D2E DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1D3A DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1D42 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 CALLER PUSH2 0x3F1B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1D7C DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1D84 PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x2DE SWAP1 SWAP3 SWAP2 SWAP3 PUSH1 0x60 DUP2 ADD SWAP4 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH1 0x4 CALLDATALOAD PUSH2 0x1DEE DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1DF6 PUSH2 0x24E5 JUMP JUMPDEST POP PUSH2 0x1DFF PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1E08 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1E2E DUP5 PUSH2 0x6F4 JUMP JUMPDEST DUP3 DUP2 SLOAD AND DUP5 MSTORE DUP3 PUSH1 0x1 DUP3 ADD SLOAD AND PUSH1 0x20 DUP6 ADD MSTORE ADD SLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9B JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x310 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x1E54 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH2 0x1ED3 PUSH0 DUP1 PUSH2 0x1EBA PUSH2 0x1EA3 CALLDATASIZE PUSH2 0xE4D JUMP JUMPDEST PUSH2 0x1EAB PUSH2 0x30AC JUMP JUMPDEST PUSH2 0x1EB3 PUSH2 0x2BA2 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x89F JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 CALLER GAS CALL PUSH2 0x1ECC PUSH2 0x2613 JUMP JUMPDEST SWAP1 CALLER PUSH2 0x3140 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E54 JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x2CC JUMPI PUSH1 0xA4 SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDC PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x124 SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH2 0x1A0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1F8E DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2CC JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x1FBA DUP4 PUSH2 0x80B JUMP JUMPDEST SWAP2 PUSH1 0x40 SWAP4 PUSH2 0x1FCB PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x77E JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x24 PUSH1 0x20 DUP7 ADD SWAP2 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 CALLDATASIZE DUP5 GT PUSH2 0x2CC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x202F JUMPI PUSH2 0x202D DUP7 DUP7 PUSH2 0x1FFF PUSH2 0x1EFE JUMP JUMPDEST PUSH2 0x2007 PUSH2 0x1EF1 JUMP JUMPDEST PUSH2 0x2010 CALLDATASIZE PUSH2 0x1F11 JUMP JUMPDEST SWAP2 PUSH2 0x2019 PUSH2 0x2D0 JUMP JUMPDEST SWAP4 PUSH2 0x2023 CALLDATASIZE PUSH2 0x1F40 JUMP JUMPDEST SWAP6 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x28F4 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x80 DUP3 CALLDATASIZE SUB SLT PUSH2 0x2CC JUMPI DUP3 PUSH1 0x80 SWAP2 DUP9 MLOAD PUSH2 0x2048 DUP2 PUSH2 0x715 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2053 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP6 ADD CALLDATALOAD PUSH2 0x2062 DUP2 PUSH2 0x7F6 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP10 DUP6 ADD CALLDATALOAD PUSH2 0x2073 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD CALLDATALOAD SWAP1 PUSH2 0x2087 DUP3 PUSH2 0x1EE7 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1FEB JUMP JUMPDEST PUSH2 0x2DE SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x180 PUSH2 0x1A0 DUP3 ADD SWAP5 PUSH2 0x20D6 DUP4 DUP3 MLOAD PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x210C PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xE0 DUP6 ADD SWAP1 PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD SWAP1 PUSH2 0x2127 PUSH2 0x100 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x215B PUSH1 0xC0 DUP3 ADD MLOAD SWAP3 PUSH2 0x2141 PUSH2 0x120 SWAP5 DUP6 DUP9 ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP8 ADD MSTORE DUP3 ADD MLOAD ISZERO ISZERO PUSH2 0x160 DUP7 ADD MSTORE JUMP JUMPDEST ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH2 0x21F2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2187 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x2197 DUP2 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A3 DUP2 PUSH2 0x715 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH2 0x2A1A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2095 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x225E PUSH1 0x4 CALLDATALOAD PUSH2 0x2220 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x2235 DUP4 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x223D PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xF DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x22B7 DUP3 PUSH2 0x74E JUMP JUMPDEST DUP2 PUSH0 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x60 SWAP2 DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST PUSH2 0x22E1 JUMP JUMPDEST PUSH2 0x23A8 SWAP2 PUSH2 0x2337 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2340 DUP3 PUSH2 0x2C47 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP4 PUSH2 0x2365 DUP6 PUSH0 KECCAK256 SLOAD PUSH2 0x2F52 JUMP JUMPDEST SWAP4 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP5 PUSH0 KECCAK256 SLOAD AND SWAP2 DUP5 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2F9F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH0 SWAP4 PUSH2 0x2425 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x23FD JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x23D5 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2448 SWAP4 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x2450 JUMPI JUMPDEST PUSH2 0x2440 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F80 JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x23BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2436 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2CC JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x247E PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x24C2 JUMPI POP POP POP PUSH2 0x2DE SWAP3 POP SUB DUP4 PUSH2 0x77E JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x24F2 DUP3 PUSH2 0x6F4 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x250D DUP3 PUSH2 0x80B JUMP JUMPDEST PUSH2 0x251A PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x77E JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x252A DUP3 SWAP5 PUSH2 0x80B JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x253A JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x2545 PUSH2 0x24E5 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x252E JUMP JUMPDEST SWAP1 PUSH2 0x255B DUP3 PUSH2 0x80B JUMP JUMPDEST PUSH2 0x2568 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x77E JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x2578 DUP3 SWAP5 PUSH2 0x80B JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x25C3 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2582 JUMP JUMPDEST PUSH2 0x25D1 DUP3 PUSH2 0x3AA JUMP JUMPDEST MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0x25E1 DUP2 PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0x25F4 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x263D JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2624 DUP3 PUSH2 0x883 JUMP JUMPDEST SWAP2 PUSH2 0x2632 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x77E JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0xA0 DUP4 PUSH1 0x60 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BDC0 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x26DC SWAP1 PUSH2 0x310 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP4 SWAP6 SWAP5 SWAP2 SWAP6 SWAP3 SWAP1 SWAP3 PUSH2 0x26FA PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2702 PUSH2 0x337B JUMP JUMPDEST PUSH2 0x270B DUP6 PUSH2 0x2BFC JUMP JUMPDEST PUSH2 0x2713 PUSH2 0x33CC JUMP JUMPDEST PUSH2 0x271C DUP6 PUSH2 0x37F3 JUMP JUMPDEST PUSH2 0x2725 DUP6 PUSH2 0x2C94 JUMP JUMPDEST SWAP2 PUSH2 0x2734 DUP4 MLOAD PUSH1 0x1 SWAP1 DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x285C JUMPI PUSH2 0x279D SWAP7 SWAP8 PUSH2 0x274E PUSH1 0x20 DUP6 ADD MLOAD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x3841 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD SWAP6 DUP7 MLOAD PUSH2 0x2766 PUSH1 0xA0 DUP8 ADD SWAP2 DUP3 MLOAD SWAP1 DUP7 PUSH2 0x3870 JUMP JUMPDEST SWAP8 DUP10 PUSH2 0x2777 DUP9 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x8 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x27EB JUMPI JUMPDEST DUP10 SWAP5 SWAP3 POP DUP8 SWAP2 POP SWAP3 PUSH2 0x278F SWAP7 SWAP6 SWAP4 PUSH2 0x3A59 JUMP JUMPDEST SWAP5 DUP6 SWAP2 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xA SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x27AE JUMPI JUMPDEST POP POP POP POP PUSH2 0x310 PUSH2 0x3421 JUMP JUMPDEST PUSH2 0x27DC PUSH2 0x27CF PUSH2 0x27E2 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x3D11 JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP4 PUSH2 0x27A2 JUMP JUMPDEST SWAP2 PUSH2 0x284F SWAP2 PUSH2 0x2821 DUP10 SWAP12 DUP12 PUSH2 0x281B PUSH2 0x27CF PUSH2 0x278F SWAP13 SWAP12 SWAP10 SWAP11 SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x3916 JUMP JUMPDEST PUSH2 0x2845 PUSH2 0x283F DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP11 PUSH2 0x39EC JUMP JUMPDEST MLOAD SWAP1 MLOAD SWAP1 DUP5 PUSH2 0x3870 JUMP JUMPDEST SWAP8 DUP2 SWAP4 SWAP3 SWAP5 SWAP6 POP DUP10 PUSH2 0x277C JUMP JUMPDEST PUSH32 0x218E374700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH2 0x140 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE DUP3 PUSH2 0x120 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP5 SWAP7 SWAP3 PUSH4 0xFFFFFFFF SWAP2 SWAP7 SWAP5 SWAP3 PUSH2 0x2908 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2910 PUSH2 0x33CC JUMP JUMPDEST PUSH2 0x2918 PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 PUSH2 0x2925 DUP10 PUSH2 0x74E JUMP JUMPDEST DUP9 MSTORE PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x60 DUP6 CALLDATASIZE SUB SLT PUSH2 0x2CC JUMPI PUSH2 0x29A1 PUSH2 0x29A8 SWAP3 PUSH2 0x29B2 SWAP7 PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0x295C DUP4 PUSH2 0x6F4 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2967 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x2977 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE ADD CALLDATALOAD PUSH2 0x2987 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x4537 JUMP JUMPDEST PUSH2 0x2DE PUSH2 0x3421 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x80 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH2 0x29D2 DUP2 PUSH2 0x715 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 SWAP5 DUP1 CALLDATALOAD PUSH2 0x29E2 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x29F2 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH2 0x2A05 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 PUSH2 0x2A16 DUP4 PUSH2 0x1EE7 JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH2 0x2A45 SWAP1 PUSH2 0x2A26 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2A2F DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x310 PUSH1 0x1 PUSH2 0x2A54 DUP4 PUSH2 0x2F52 JUMP JUMPDEST SWAP3 PUSH2 0x2AFD PUSH2 0x2A61 DUP3 PUSH2 0x501F JUMP JUMPDEST PUSH2 0x2AF0 PUSH2 0x2A6D DUP5 PUSH2 0x5042 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF DUP6 PUSH1 0x5A SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP7 PUSH2 0x2A87 PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP4 PUSH2 0x2A92 PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x4 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO DUP2 MSTORE SWAP10 PUSH1 0x5 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x20 DUP13 ADD MSTORE PUSH1 0x6 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x7 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x2AD0 PUSH2 0x7BB JUMP JUMPDEST SWAP11 DUP12 MSTORE PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x40 DUP11 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x80 DUP9 ADD MSTORE JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST DUP1 DUP3 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP1 DUP3 SHR DUP3 AND ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x2 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE PUSH1 0x3 SHR AND ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2B30 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x2B9E JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2BD4 JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2C1C JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x2C69 JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2CA5 PUSH2 0x22AA JUMP JUMPDEST SWAP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x2CE0 PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0x5065 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x2CEB DUP5 PUSH2 0x2503 JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x2CFB DUP6 PUSH2 0x2551 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x2D0C DUP7 PUSH2 0x2551 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x2D20 DUP8 DUP12 MLOAD PUSH2 0x31CC JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x2D2E DUP8 PUSH2 0x2551 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x2E97 JUMPI JUMPDEST POP DUP4 PUSH2 0x2E85 JUMPI JUMPDEST DUP13 PUSH0 JUMPDEST DUP12 DUP2 LT PUSH2 0x2D68 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x2DAF DUP5 PUSH2 0x2D9B DUP2 PUSH2 0x2D8D PUSH2 0xD47 DUP16 DUP16 PUSH2 0xD25 DUP6 PUSH2 0xD32 SWAP3 MLOAD PUSH2 0x25AF JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x2DA9 DUP4 DUP4 PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0x25AF JUMP JUMPDEST POP PUSH2 0x2DB9 DUP2 PUSH2 0x321E JUMP JUMPDEST PUSH2 0x2DC4 DUP6 DUP14 MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0x2DE2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x52B4 JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x2E78 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x2E5A JUMPI JUMPDEST POP POP PUSH2 0x2E0B JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD DUP14 SWAP1 PUSH2 0x2D52 JUMP JUMPDEST DUP3 PUSH2 0x2E2E SWAP3 PUSH2 0x2E25 DUP3 PUSH2 0x2E1E DUP9 MLOAD PUSH2 0x5042 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x581F JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x2E3E JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x2DFD JUMP JUMPDEST PUSH2 0x2E51 SWAP4 PUSH2 0x2E4B SWAP2 PUSH2 0x26B2 JUMP JUMPDEST SWAP2 PUSH2 0x52B4 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x2E35 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x2E67 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x2E70 DUP2 PUSH2 0x3AA JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x2DF6 JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x2E03 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x2D4F JUMP JUMPDEST PUSH2 0x2EA2 SWAP2 SWAP5 POP PUSH2 0x5042 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x2D48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 SWAP4 PUSH2 0x2ED6 PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP3 DUP2 PUSH2 0x2EE3 JUMPI POP SWAP2 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F0F PUSH32 0x0 DUP5 PUSH2 0x230E JUMP JUMPDEST AND TIMESTAMP GT ISZERO SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1 SWAP2 AND ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 MUL SWAP2 DUP1 DUP4 DIV PUSH1 0x5 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2326 JUMPI JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x1EE7 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH1 0x20 DUP3 MLOAD PUSH2 0x2F99 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2A16 PUSH2 0x303F PUSH1 0x40 SWAP4 SWAP7 SWAP6 SWAP5 SWAP7 PUSH1 0x60 DUP5 MSTORE DUP1 MLOAD PUSH2 0x2FBB DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xC0 PUSH2 0x2FE5 DUP7 DUP4 ADD MLOAD PUSH1 0xE0 PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0x140 DUP8 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 ADD MLOAD DUP3 DUP8 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xE0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA0 DUP3 ADD MLOAD AND PUSH2 0x100 DUP8 ADD MSTORE ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP6 DUP4 SUB ADD PUSH2 0x120 DUP7 ADD MSTORE PUSH2 0x1E54 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST DUP2 ISZERO PUSH2 0x305B JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI PUSH2 0x310 SWAP2 PUSH2 0x3051 JUMP JUMPDEST ORIGIN PUSH2 0x3109 JUMPI PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH2 0x30E1 JUMPI PUSH1 0x1 PUSH32 0x0 TSTORE JUMP JUMPDEST PUSH32 0x7A19888600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xF85 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST SWAP1 PUSH2 0x317D JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x3155 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x31C3 JUMPI JUMPDEST PUSH2 0x318E JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x3186 JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0x31DC DUP3 PUSH2 0x2551 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x31F0 JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH2 0x31FC DUP4 PUSH2 0x2F29 JUMP JUMPDEST SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x2326 JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0x3217 DUP3 DUP8 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x31E3 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3229 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x3232 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP1 PUSH2 0x3245 JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3251 PUSH1 0x1 SWAP3 PUSH2 0x3AA JUMP JUMPDEST SUB PUSH2 0x32D2 JUMPI PUSH1 0x20 PUSH2 0x327C PUSH2 0x3270 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x32B9 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x310 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0x3337 JUMPI POP POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 JUMP JUMPDEST PUSH2 0x3377 SWAP4 PUSH2 0x3361 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x33A4 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x33F9 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x3452 DUP5 MLOAD PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x348F JUMPI DUP1 PUSH2 0x347E DUP6 PUSH2 0x3479 DUP7 PUSH2 0x3473 PUSH1 0x1 SWAP7 DUP9 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x2F3F JUMP JUMPDEST PUSH2 0x3051 JUMP JUMPDEST PUSH2 0x3488 DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x3455 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 PUSH2 0x349F SWAP2 PUSH2 0x2F3F JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x34E0 SWAP1 PUSH2 0x50BC JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x2326 JUMPI PUSH2 0x2DE SWAP2 PUSH0 SUB SWAP1 PUSH2 0x5111 JUMP JUMPDEST SWAP1 PUSH2 0x310 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x5218 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 SWAP3 SWAP4 PUSH2 0x3532 DUP3 DUP3 DUP6 PUSH2 0x32FA JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SUB PUSH2 0x3562 JUMPI JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x3580 JUMPI SWAP5 PUSH2 0x3576 SWAP5 SWAP6 SUB SWAP3 PUSH2 0x3F1B JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x355A JUMP JUMPDEST DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0x35C7 JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0x3109 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3613 SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2326 JUMPI SSTORE JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x37BE JUMPI PUSH2 0x3655 DUP6 PUSH2 0x3361 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x3781 JUMPI DUP4 SWAP1 SUB PUSH2 0x367F DUP7 PUSH2 0x3361 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x36A5 DUP4 PUSH2 0x369F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x26B2 JUMP JUMPDEST PUSH2 0x36AE DUP2 PUSH2 0x527C JUMP JUMPDEST PUSH2 0x36C9 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x3763 SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x3768 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST DUP1 PUSH2 0x3775 PUSH2 0x377B SWAP3 PUSH2 0x76A JUMP JUMPDEST DUP1 PUSH2 0x568 JUMP JUMPDEST PUSH0 PUSH2 0x3752 JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x37FB PUSH2 0x404B JUMP JUMPDEST PUSH2 0x3804 DUP2 PUSH2 0x2EAB JUMP JUMPDEST POP PUSH2 0x380C JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SUB PUSH2 0x3848 JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 DUP2 MLOAD DUP2 MLOAD DUP2 DUP6 EQ SWAP2 DUP3 ISZERO SWAP3 PUSH2 0x38F6 JUMPI JUMPDEST POP POP PUSH2 0x3848 JUMPI PUSH2 0x3894 DUP4 PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x38A6 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x38E4 PUSH2 0x38BF PUSH1 0x1 SWAP5 DUP7 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x38DF PUSH2 0x38CD DUP6 DUP11 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x38D8 DUP7 DUP11 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2F3F JUMP JUMPDEST PUSH2 0x2F3F JUMP JUMPDEST DIV PUSH2 0x38EF DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x3897 JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0x3885 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2CC JUMPI MLOAD PUSH2 0x310 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST SWAP1 PUSH2 0x397A SWAP3 PUSH2 0x3968 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x1C149E2800000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x24 DUP6 ADD MSTORE PUSH2 0x1E54 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x39BD JUMPI JUMPDEST POP ISZERO PUSH2 0x3995 JUMPI JUMP JUMPDEST PUSH32 0x6061292500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x39DF SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x39E5 JUMPI JUMPDEST PUSH2 0x39D7 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3901 JUMP JUMPDEST PUSH0 PUSH2 0x398D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x39CD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3A04 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x3A53 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x3A33 PUSH2 0x3A2D DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x321E JUMP JUMPDEST PUSH2 0x3A41 DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x52B4 JUMP JUMPDEST ADD PUSH2 0x39F6 JUMP JUMPDEST SWAP3 SWAP2 SWAP6 SWAP7 SWAP5 SWAP7 PUSH2 0x3A7A DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3B58 JUMPI PUSH2 0xD25 DUP3 PUSH2 0x3A98 SWAP3 PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x3AA8 PUSH2 0x3270 PUSH2 0xD25 DUP5 DUP10 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 DUP2 SUB PUSH2 0x3B04 JUMPI POP SWAP1 PUSH2 0x3AD2 PUSH1 0x1 SWAP3 PUSH2 0x3ACB DUP4 DUP12 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5301 JUMP JUMPDEST PUSH2 0x3AEB DUP12 PUSH2 0x3AE4 DUP4 PUSH2 0x1576 DUP2 DUP14 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5218 JUMP JUMPDEST PUSH2 0x3AFD DUP3 DUP12 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x3A7D JUMP JUMPDEST PUSH2 0x15BA SWAP1 DUP9 PUSH2 0x3B19 PUSH2 0x3270 PUSH2 0xD25 DUP8 DUP13 PUSH2 0x25AF JUMP JUMPDEST PUSH32 0xFFE261A100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 MSTORE DUP2 AND PUSH1 0x24 MSTORE AND PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP SWAP7 SWAP5 SWAP2 SWAP3 POP SWAP7 SWAP5 POP PUSH2 0x3B90 DUP5 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x2 SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE PUSH2 0x3BAD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x3BF3 PUSH1 0x20 DUP6 DUP4 AND SWAP8 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2466 JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH2 0x3C18 SWAP2 PUSH0 SWAP2 PUSH2 0x3CF2 JUMPI JUMPDEST POP PUSH2 0x3C13 DUP2 PUSH2 0x527C JUMP JUMPDEST PUSH2 0x2685 JUMP JUMPDEST SWAP8 PUSH2 0x3C22 DUP3 PUSH2 0x5313 JUMP JUMPDEST PUSH2 0x3C2D DUP10 DUP6 DUP5 PUSH2 0x5423 JUMP JUMPDEST DUP1 DUP10 LT PUSH2 0x3CC2 JUMPI POP SWAP3 DUP6 SWAP3 PUSH2 0x3C99 PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 SWAP4 PUSH2 0x3C8A PUSH1 0x20 PUSH2 0x3C80 PUSH1 0x1 SWAP11 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP9 ADD MLOAD MLOAD PUSH2 0x2551 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x26BF JUMP JUMPDEST SUB SWAP1 LOG4 PUSH32 0xCAD8C9D32507393B6508CA4A888B81979919B477510585BDE8488F153072D6F3 PUSH0 DUP1 LOG2 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP10 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x3D0B SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x3C09 JUMP JUMPDEST SWAP3 PUSH2 0x3D64 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP5 SWAP7 PUSH2 0x3D7B PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x38BE241D00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x44 DUP6 ADD MSTORE PUSH2 0x1E54 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x3DBE JUMPI JUMPDEST POP ISZERO PUSH2 0x3D96 JUMPI JUMP JUMPDEST PUSH32 0xF23DBC600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3DD7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x39E5 JUMPI PUSH2 0x39D7 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x3D8E JUMP JUMPDEST SWAP1 PUSH2 0x3DE6 PUSH2 0x2891 JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x1 DUP1 DUP5 DUP4 PUSH2 0x3DF8 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E01 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND DUP2 DUP6 DUP5 PUSH2 0x3E11 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E1A SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E23 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP1 DUP3 DUP7 DUP6 PUSH2 0x3E34 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E3D SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E46 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E4F SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP3 DUP1 DUP8 DUP7 PUSH2 0x3E60 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E69 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E72 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E7B SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E84 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP5 DUP2 DUP9 DUP2 DUP2 DUP5 PUSH1 0xC AND SHR AND SWAP3 PUSH1 0xC PUSH2 0x3E9E SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP2 PUSH2 0x3EAA PUSH2 0x7C8 JUMP JUMPDEST PUSH1 0x9 DUP11 SWAP1 SHR DUP3 AND ISZERO ISZERO DUP2 MSTORE SWAP9 PUSH1 0x8 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0xA DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0xB SHR AND ISZERO ISZERO PUSH1 0x60 DUP10 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP8 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x4016 JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x3FE1 JUMPI DUP5 PUSH2 0x3F5F DUP6 PUSH2 0x3361 DUP7 PUSH2 0x3361 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x3763 SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x3747 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x40A9 JUMPI JUMPDEST PUSH2 0x4081 JUMPI JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x407B JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP1 PUSH2 0x40C4 DUP3 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x40CD DUP3 PUSH2 0x3AA JUMP JUMPDEST DUP3 SLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 SWAP1 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 SWAP1 SWAP2 AND PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHL PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND OR SWAP1 ISZERO ISZERO PUSH1 0xA8 SHL PUSH22 0xFF000000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2CC JUMPI MLOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x2CC JUMPI SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x710 JUMPI PUSH1 0x1 DUP2 ADD DUP1 DUP4 SSTORE DUP2 LT ISZERO PUSH2 0x25C3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP2 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND OR DUP3 SSTORE PUSH2 0x2DE SWAP3 PUSH1 0x2 SWAP2 SWAP1 PUSH1 0x40 SWAP1 PUSH2 0x423F DUP4 PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x1 DUP8 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD AND SWAP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x42AC JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP5 DUP3 ADD MLOAD PUSH2 0x42D3 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP4 DUP7 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x429E JUMP JUMPDEST SWAP5 SWAP4 SWAP2 PUSH2 0x2DE SWAP4 PUSH1 0x60 SWAP3 PUSH2 0x432E SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP10 MSTORE AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x428D JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x140 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH2 0x4370 PUSH2 0x7BB JUMP JUMPDEST SWAP1 PUSH2 0x437A DUP2 PUSH2 0x2F75 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x4388 PUSH1 0x20 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4399 PUSH1 0x40 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x43AA PUSH1 0x60 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x43BB PUSH1 0x80 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x43CC PUSH1 0xA0 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x43DD PUSH1 0xC0 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x43EE PUSH1 0xE0 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 PUSH2 0x4401 DUP2 DUP4 ADD PUSH2 0x2F75 JUMP JUMPDEST SWAP1 DUP4 ADD MSTORE PUSH2 0x4413 PUSH2 0x120 DUP1 SWAP3 ADD PUSH2 0x2F75 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP7 SWAP6 SWAP4 SWAP5 PUSH2 0x447C PUSH2 0x2DE SWAP7 PUSH4 0xFFFFFFFF PUSH2 0x220 SWAP7 PUSH2 0x4444 PUSH2 0x450A SWAP7 PUSH2 0x2A0 DUP1 DUP11 MSTORE DUP10 ADD SWAP1 PUSH2 0x428D JUMP JUMPDEST SWAP12 PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD SWAP1 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x455C PUSH2 0x4555 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 AND SWAP1 JUMP JUMPDEST PUSH2 0x4FEA JUMPI DUP1 MLOAD MLOAD PUSH1 0x2 DUP2 LT PUSH2 0x4FC2 JUMPI PUSH1 0x8 DUP2 GT PUSH2 0x4F9A JUMPI SWAP3 SWAP2 SWAP1 PUSH2 0x457F DUP5 PUSH2 0x2551 JUMP JUMPDEST PUSH0 SWAP5 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4C8D JUMPI POP POP PUSH2 0x464F SWAP3 SWAP4 SWAP5 POP PUSH1 0x80 DUP3 ADD SWAP2 PUSH2 0x45BD DUP4 MLOAD PUSH2 0x45B8 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x41BF JUMP JUMPDEST PUSH2 0x45D2 PUSH2 0x3270 PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 SWAP2 PUSH2 0x45EB DUP3 DUP8 MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x45F9 PUSH1 0x60 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH32 0x77FF76E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP7 DUP8 SWAP2 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP6 PUSH0 SWAP2 PUSH2 0x4C5A JUMPI JUMPDEST POP PUSH2 0x477B PUSH1 0xC0 DUP5 ADD SWAP2 PUSH2 0x4776 PUSH2 0x4745 DUP5 MLOAD SWAP8 PUSH2 0x472E PUSH2 0x4728 PUSH2 0x468A DUP12 MLOAD ISZERO ISZERO PUSH1 0x4 SHL PUSH1 0x1 OR SWAP1 JUMP JUMPDEST SWAP11 PUSH1 0x60 PUSH2 0x46F8 PUSH2 0x46C7 PUSH1 0x20 SWAP15 DUP16 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF SWAP1 PUSH1 0x5 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP13 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF SWAP1 PUSH1 0x6 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F SWAP1 PUSH1 0x7 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5571 JUMP JUMPDEST SWAP1 PUSH1 0x5A SWAP2 PUSH5 0xFFFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP9 PUSH2 0x4771 DUP7 DUP9 ADD SWAP11 PUSH2 0x475B DUP13 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x82 SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x5641 JUMP JUMPDEST PUSH2 0x5661 JUMP JUMPDEST SWAP4 PUSH1 0xA0 DUP5 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP10 DUP8 PUSH2 0x479D DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST AND DUP1 PUSH2 0x489E JUMPI JUMPDEST POP SWAP1 PUSH2 0x47C2 DUP2 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47F2 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x482A SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP6 ADD SWAP5 DUP6 MLOAD PUSH2 0x4839 SWAP1 DUP12 PUSH2 0x5685 JUMP JUMPDEST MLOAD SWAP5 MLOAD SWAP8 MLOAD PUSH4 0xFFFFFFFF AND SWAP7 MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4863 SWAP2 PUSH2 0x3DDD JUMP JUMPDEST SWAP2 MLOAD SWAP3 MLOAD SWAP6 DUP7 SWAP6 CALLER SWAP10 AND SWAP8 PUSH2 0x4878 SWAP6 DUP8 PUSH2 0x441A JUMP JUMPDEST SUB PUSH32 0xBC1561EEAB9F40962E2FB827A7FF9C7CDB47A9D7C84CAEEFA4ED90E043842DAD SWAP2 LOG3 JUMP JUMPDEST PUSH2 0x48E0 SWAP2 DUP5 SWAP2 DUP10 MLOAD PUSH0 DUP10 MLOAD SWAP4 DUP12 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xB89F18200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x42FC JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x4C3D JUMPI JUMPDEST POP ISZERO PUSH2 0x4C28 JUMPI PUSH2 0x490F PUSH2 0x3270 PUSH2 0x3270 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP6 MLOAD DUP1 SWAP3 PUSH32 0xD77153A700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 PUSH1 0x4 PUSH2 0x140 SWAP6 DUP7 SWAP4 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP4 PUSH2 0x4BF9 JUMPI JUMPDEST POP POP DUP2 MLOAD ISZERO ISZERO DUP1 PUSH2 0x4BDF JUMPI JUMPDEST PUSH2 0x4B8C JUMPI SWAP1 PUSH2 0x4B5A PUSH2 0x120 PUSH2 0x49C6 PUSH2 0x4B27 PUSH2 0x4AF5 PUSH2 0x4AC3 PUSH2 0x4A91 PUSH2 0x4A5F PUSH2 0x4A2D DUP15 PUSH2 0x4A02 PUSH2 0x49F9 DUP13 DUP16 PUSH2 0x4B85 SWAP16 SWAP1 PUSH2 0x49C6 PUSH2 0x49CE SWAP3 PUSH2 0x499B DUP6 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF SWAP1 PUSH1 0x9 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP3 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF SWAP1 PUSH1 0x8 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 DUP13 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFF SWAP1 PUSH1 0xA SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF SWAP1 PUSH1 0xB SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFF SWAP1 PUSH1 0xC SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFF SWAP1 PUSH1 0xD SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xC0 DUP8 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF SWAP1 PUSH1 0xE SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP7 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFF SWAP1 PUSH1 0xF SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF SWAP1 PUSH1 0x10 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF SWAP1 PUSH1 0x11 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP10 PUSH0 PUSH2 0x47A4 JUMP JUMPDEST PUSH2 0x15BA DUP12 PUSH2 0x4BA1 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xFA93D81400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x4 MSTORE AND PUSH1 0x24 MSTORE CALLER PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x4BF3 PUSH2 0x4BEE DUP7 MLOAD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x495C JUMP JUMPDEST PUSH2 0x4C19 SWAP3 SWAP4 POP DUP1 RETURNDATASIZE LT PUSH2 0x4C21 JUMPI JUMPDEST PUSH2 0x4C11 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x435C JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x4950 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C07 JUMP JUMPDEST PUSH2 0x15BA DUP11 PUSH2 0x4BA1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x4C54 SWAP2 POP DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x39E5 JUMPI PUSH2 0x39D7 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x48F2 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x4C7D SWAP3 SWAP7 POP RETURNDATASIZE DUP8 GT PUSH2 0x4C86 JUMPI JUMPDEST PUSH2 0x4C75 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4277 JUMP JUMPDEST SWAP5 SWAP1 SWAP5 PUSH0 PUSH2 0x4662 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C6B JUMP JUMPDEST PUSH2 0x4C98 DUP2 DUP6 MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP7 PUSH2 0x4CAB DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 DUP3 ISZERO DUP1 ISZERO PUSH2 0x4F8F JUMPI JUMPDEST PUSH2 0x4F67 JUMPI AND DUP1 DUP3 LT PUSH2 0x4F3F JUMPI DUP2 EQ PUSH2 0x4F0A JUMPI PUSH1 0x40 SWAP1 DUP2 DUP11 ADD SWAP10 DUP11 MLOAD PUSH2 0x4CEC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 PUSH1 0x20 SWAP12 DUP13 DUP3 ADD SWAP1 DUP14 DUP3 MLOAD SWAP2 PUSH2 0x4D0B DUP4 PUSH2 0x3AA JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 PUSH1 0x60 ADD SWAP4 DUP5 MLOAD PUSH2 0x4D25 SWAP1 ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4D2E PUSH2 0x7E9 JUMP JUMPDEST SWAP4 PUSH2 0x4D39 SWAP1 DUP6 PUSH2 0x25C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE ISZERO ISZERO DUP2 DUP8 ADD MSTORE DUP7 PUSH2 0x4D6A DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4D85 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4D8F SWAP2 PUSH2 0x40B7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x4D9A DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x4DA3 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x4EBB JUMPI POP DUP2 ISZERO SWAP2 PUSH2 0x4EB0 JUMPI JUMPDEST POP PUSH2 0x32D2 JUMPI DUP10 SWAP2 JUMPDEST MLOAD SWAP10 DUP11 DUP1 SWAP3 PUSH32 0x313CE56700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 SWAP13 DUP14 SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP3 PUSH2 0x4E83 JUMPI JUMPDEST POP POP PUSH1 0x12 SWAP1 PUSH1 0xFF SWAP2 DUP1 DUP4 DUP4 AND GT PUSH0 EQ PUSH2 0x4E2F JUMPI DUP11 PUSH32 0x686D360700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 SWAP11 POP SWAP1 PUSH2 0x4E53 SWAP3 SWAP2 SUB AND PUSH2 0x4E4B DUP6 DUP9 PUSH2 0x25AF JUMP JUMPDEST SWAP1 PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x4E77 DUP2 PUSH2 0x4E72 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4163 JUMP JUMPDEST SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 ADD PUSH2 0x4583 JUMP JUMPDEST PUSH2 0x4EA2 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x4EA9 JUMPI JUMPDEST PUSH2 0x4E9A DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x4DF5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E90 JUMP JUMPDEST MLOAD ISZERO ISZERO SWAP1 POP PUSH0 PUSH2 0x4DB0 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x4EC9 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x4ED2 DUP2 PUSH2 0x3AA JUMP JUMPDEST SUB PUSH2 0x4EE2 JUMPI PUSH2 0x32D2 JUMPI DUP10 SWAP2 PUSH2 0x4DB8 JUMP JUMPDEST PUSH32 0xA1E9DD9D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4F4B634E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x6E8F194700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP2 DUP10 AND DUP4 EQ PUSH2 0x4CC1 JUMP JUMPDEST PUSH32 0x707BDF5800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x5ED4BA8F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xDB771C8000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5099 JUMPI POP POP POP PUSH2 0x2DE SWAP3 POP SUB DUP4 PUSH2 0x77E JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x5083 JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x50E6 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5214 JUMPI PUSH32 0x0 SWAP2 PUSH2 0x5156 DUP2 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST DUP3 DUP2 ADD SWAP3 DUP4 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x2326 JUMPI DUP3 PUSH2 0x51CA JUMPI POP PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2326 JUMPI PUSH2 0x2DE SWAP5 TSTORE PUSH2 0x588D JUMP JUMPDEST ISZERO PUSH2 0x51D9 JUMPI JUMPDEST PUSH2 0x2DE SWAP3 PUSH2 0x588D JUMP JUMPDEST PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2326 JUMPI PUSH2 0x2DE SWAP5 TSTORE SWAP3 POP PUSH2 0x51D0 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x5272 JUMPI JUMPDEST POP PUSH2 0x524A JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x5235 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0x5289 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x52F8 PUSH2 0x25D1 SWAP5 DUP1 PUSH2 0x52D7 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0x38DF PUSH2 0x52E9 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x38D8 DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x530D PUSH2 0x2DE SWAP3 PUSH2 0x50BC JUMP JUMPDEST SWAP1 PUSH2 0x5111 JUMP JUMPDEST PUSH2 0x532E DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP2 SLOAD PUSH3 0xF4240 SWAP1 DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2326 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SSTORE PUSH2 0x5365 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 DUP1 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH0 DUP1 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x53AF DUP2 SWAP1 PUSH3 0xF4240 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP4 DUP2 PUSH2 0x5405 PUSH1 0x4 DUP3 ADD SWAP1 PUSH3 0xF4240 PUSH1 0x40 PUSH1 0x60 DUP5 ADD SWAP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH2 0x5416 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x3775 PUSH2 0x2DE SWAP3 PUSH2 0x76A JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0x553C JUMPI PUSH2 0x545B DUP4 PUSH2 0x5455 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x35D2 JUMP JUMPDEST PUSH2 0x547A DUP6 PUSH2 0x3361 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x5489 DUP2 PUSH2 0x527C JUMP JUMPDEST PUSH2 0x54A4 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x54DD DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x5405 JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 SWAP2 SWAP1 DUP3 JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x5635 JUMPI PUSH2 0x5589 DUP5 DUP4 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH1 0xFF SWAP2 PUSH2 0x5596 DUP7 PUSH2 0x2F29 JUMP JUMPDEST SWAP2 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x5608 JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2326 JUMPI DUP1 DUP6 LT ISZERO PUSH2 0x5630 JUMPI POP DUP4 JUMPDEST PUSH1 0x5 SWAP1 DUP2 GT PUSH2 0x5608 JUMPI DUP2 PUSH1 0x7 SWAP2 SHR AND PUSH2 0x55E0 JUMPI PUSH1 0x1 SWAP4 PUSH1 0x1F SWAP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP4 ADD SWAP3 PUSH2 0x5576 JUMP JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x55B7 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP3 POP POP JUMP JUMPDEST PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0x23D5 JUMPI PUSH5 0x174876E800 PUSH2 0x310 SWAP3 DIV SWAP1 PUSH2 0x58A3 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x23D5 JUMPI PUSH2 0x310 SWAP2 PUSH5 0x174876E800 PUSH1 0x42 SWAP3 DIV SWAP1 PUSH2 0x58BD JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x5802 JUMPI JUMPDEST POP DUP4 LT PUSH2 0x57DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP3 PUSH2 0x57BD JUMPI JUMPDEST POP POP DUP3 GT PUSH2 0x5795 JUMPI DUP2 DUP2 PUSH2 0x577F PUSH2 0x5768 PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP6 PUSH2 0x5762 PUSH2 0x5790 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x5904 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x57D3 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5713 JUMP JUMPDEST PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x5819 SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x56D0 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5832 DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x5842 JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5882 SWAP6 SWAP7 POP PUSH2 0x587C SWAP4 SWAP3 PUSH2 0x5875 SWAP3 PUSH2 0x585B SWAP3 SUB PUSH2 0x3495 JUMP JUMPDEST SWAP4 PUSH1 0xA0 PUSH2 0x586C DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2F3F JUMP JUMPDEST SWAP1 PUSH2 0x3088 JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x583B JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x55E0 JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x5608 JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2326 JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x58FF JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x5608 JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x55E0 JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x58E1 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x23D5 JUMPI PUSH5 0x174876E800 SWAP1 DIV DUP1 PUSH1 0x18 SHR PUSH2 0x55E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF SWAP1 PUSH1 0x12 SHL SWAP2 AND OR SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xE8 INVALID MULMOD LOG2 PUSH11 0x403C37967F36E22EDE1AC0 0xC7 0xB1 0xE7 NOT SLOAD EXTCODEHASH 0x28 0xDF 0xA9 0x24 0xE7 TLOAD 0x4B PREVRANDAO 0xEA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"3171:37276:67:-:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;3400:40:69;3171:37276:67;;;;;:::i;:::-;;;;-1:-1:-1;;;3171:37276:67;;;;3400:40:69;:::i;:::-;;;3501:47;3171:37276:67;;;;;:::i;:::-;;;;-1:-1:-1;;;3171:37276:67;;;;3501:47:69;:::i;:::-;;;3601:41;3171:37276:67;;;;;:::i;:::-;;;;-1:-1:-1;;;3171:37276:67;;;;3601:41:69;:::i;:::-;;;;;;3703:48;3171:37276:67;;;;;:::i;:::-;;;;-1:-1:-1;;;3171:37276:67;;;;3703:48:69;:::i;:::-;;;;;;3802:39;3171:37276:67;;;;;:::i;:::-;;;;-1:-1:-1;;;3171:37276:67;;;;3802:39:69;:::i;:::-;;;;;3171:37276:67;;-1:-1:-1;;;4174:18:67;;3802:39:69;;4174:18:67;3171:37276;4174:18;3171:37276;4174:18;;;;;;;;-1:-1:-1;4174:18:67;;;-1:-1:-1;3171:37276:67;;;;;;4174:31;4170:96;;3171:37276;;-1:-1:-1;;;4303:34:67;;3171:37276;4303:34;3171:37276;4174:18;3171:37276;4303:34;;;;;;;;-1:-1:-1;4303:34:67;;;-1:-1:-1;;4276:61:67;;;;3171:37276;;-1:-1:-1;;;4376:36:67;;3171:37276;4376:36;3171:37276;4174:18;3171:37276;;4376:36;;;;;;;-1:-1:-1;4376:36:67;;;-1:-1:-1;4347:65:67;;4174:18;4347:65;;;;;3171:37276;;;;;;;;;4450:35;;;;;;;;;-1:-1:-1;4450:35:67;;;-1:-1:-1;4422:63:67;;;;;;4496:18;;;;4524:24;;;;3171:37276;;;;;;;;;;;;;;;;;;3400:40:69;3171:37276:67;;;;;;;;;;;;;;;3501:47:69;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4450:35;;;;;;;-1:-1:-1;4450:35:67;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;4376:36;4174:18;4376:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;4303:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;4170:96;4228:27;;;-1:-1:-1;4228:27:67;4174:18;-1:-1:-1;4228:27:67;4174:18;;;;;;;;;;;;;;;;;:::i;:::-;;;3171:37276;;;;;;;:::i;:::-;4174:18;;;;3171:37276;-1:-1:-1;3171:37276:67;;4174:18;;;;;;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;3171:37276:67;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;9892:177:69:-;3171:37276:67;;;;;;:::i;:::-;;;;1461:67:44;3171:37276:67;;;;-1:-1:-1;;;3171:37276:67;;;;;1461:67:44;;;;;;3171:37276:67;;;;;;;;;;;;;;-1:-1:-1;;;3171:37276:67;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;1461:67:44;;;;;;;;;:::i;:::-;3171:37276:67;1451:78:44;;-1:-1:-1;;3171:37276:67;;;;;;;;;1432:103:44;3171:37276:67;1432:103:44;;3171:37276:67;;;;1432:103:44;;;;;:::i;:::-;3171:37276:67;;1405:144:44;;-1:-1:-1;;1405:170:44;;9892:177:69:o;3171:37276:67:-;;;;-1:-1:-1;3171:37276:67;;;;;-1:-1:-1;3171:37276:67"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1384,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":736,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_address_34053":{"entryPoint":720,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_contract_IERC20":{"entryPoint":747,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":2083,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":2207,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":7921,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":14593,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_boolt_uint256_fromMemory":{"entryPoint":12160,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes":{"entryPoint":2261,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3615,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata_34027":{"entryPoint":3661,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_enum_SwapKind":{"entryPoint":2048,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_HookFlags_fromMemory":{"entryPoint":17244,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_LiquidityManagement":{"entryPoint":10682,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_LiquidityManagement_calldata":{"entryPoint":8000,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_PoolRoleAccounts_calldata":{"entryPoint":7953,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":12149,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":9303,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_uint256_fromMemory":{"entryPoint":17015,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint32":{"entryPoint":7934,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":16714,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_TokenInfo":{"entryPoint":993,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_array_struct_TokenConfig_dyn_struct_LiquidityManagement":{"entryPoint":17148,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_address_bool":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_34246":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_uint256_34290":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_uint256_34296":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn":{"entryPoint":2948,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn_array_struct_TokenInfo_dyn_array_uint256_dyn_array_uint256_dyn":{"entryPoint":3008,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn_memory_ptr":{"entryPoint":6869,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn_to_array_address_dyn":{"entryPoint":878,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_TokenConfig_dyn":{"entryPoint":17037,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_TokenConfig_dyn_uint256_uint32_struct_PoolRoleAccounts_struct_HooksConfig_struct_LiquidityManagement":{"entryPoint":17434,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_array_struct_TokenInfo_dyn":{"entryPoint":1044,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":2855,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_array_uint256_dyn":{"entryPoint":4013,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn_enum_Rounding":{"entryPoint":9318,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_to_array_uint256_dyn":{"entryPoint":1104,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes":{"entryPoint":7801,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_memory_ptr":{"entryPoint":7764,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IERC20_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_struct_HooksConfig":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_LiquidityManagement":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_PoolConfig":{"entryPoint":8341,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolRoleAccounts":{"entryPoint":7579,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolRoleAccounts_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_PoolSwapParams_address_uint256":{"entryPoint":12191,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_34289":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_array_uint256_dyn":{"entryPoint":9919,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint40":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_struct_TokenInfo_dyn":{"entryPoint":9475,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":9553,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_HooksConfig":{"entryPoint":10385,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_PoolData":{"entryPoint":8874,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_RecoveryLocals":{"entryPoint":9794,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_TokenInfo":{"entryPoint":9445,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory":{"entryPoint":1953,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_34199":{"entryPoint":1966,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_34200":{"entryPoint":1979,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_34258":{"entryPoint":1992,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_34268":{"entryPoint":2025,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":2059,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":2179,"id":null,"parameterSlots":1,"returnSlots":1},"array_push_from_contract_IERC20_to_array_contract_IERC20_dyn_storage_ptr":{"entryPoint":16739,"id":null,"parameterSlots":2,"returnSlots":0},"checked_add_uint256":{"entryPoint":13778,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint32":{"entryPoint":8974,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint8":{"entryPoint":12055,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint8_129758":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_129759":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_129760":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_129761":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_129762":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_129763":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_div_uint256":{"entryPoint":12369,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":12095,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_34237":{"entryPoint":12073,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":9906,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256_34254":{"entryPoint":9861,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"constant_AGGREGATE_YIELD_FEE_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_DECIMAL_SCALING_FACTORS_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_PAUSE_WINDOW_END_TIME_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"copy_array_from_storage_to_memory_array_contract_IERC20_dyn":{"entryPoint":9358,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_contract_IERC20_dyn_ptr":{"entryPoint":20581,"id":null,"parameterSlots":1,"returnSlots":1},"copy_struct_to_storage_from_struct_PoolRoleAccounts_to_struct_PoolRoleAccounts":{"entryPoint":16831,"id":null,"parameterSlots":2,"returnSlots":0},"copy_struct_to_storage_from_struct_TokenInfo_to_struct_TokenInfo":{"entryPoint":16567,"id":null,"parameterSlots":2,"returnSlots":0},"external_fun_allowance":{"entryPoint":4560,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":7438,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":8702,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_computeDynamicSwapFeePercentage":{"entryPoint":2288,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_emitAuxiliaryEvent":{"entryPoint":6718,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAddLiquidityCalledFlag":{"entryPoint":6066,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAggregateSwapFeeAmount":{"entryPoint":4408,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAggregateYieldFeeAmount":{"entryPoint":787,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAuthorizer":{"entryPoint":6017,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBptRate":{"entryPoint":2514,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getCurrentLiveBalances":{"entryPoint":2872,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getERC4626BufferAsset":{"entryPoint":1665,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getHooksConfig":{"entryPoint":7060,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getNonzeroDeltaCount":{"entryPoint":7370,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolConfig":{"entryPoint":8548,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolData":{"entryPoint":1155,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolPausedState":{"entryPoint":1436,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolRoleAccounts":{"entryPoint":7630,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokenInfo":{"entryPoint":3134,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokenRates":{"entryPoint":4050,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokens":{"entryPoint":6886,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getProtocolFeeController":{"entryPoint":4514,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getReservesOf":{"entryPoint":4640,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getStaticSwapFeePercentage":{"entryPoint":6209,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getTokenDelta":{"entryPoint":4708,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultAdmin":{"entryPoint":1598,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":6327,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isERC4626BufferInitialized":{"entryPoint":3476,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolInRecoveryMode":{"entryPoint":6562,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolInitialized":{"entryPoint":2772,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolPaused":{"entryPoint":3548,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolRegistered":{"entryPoint":6646,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isQueryDisabled":{"entryPoint":6285,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isQueryDisabledPermanently":{"entryPoint":1394,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isUnlocked":{"entryPoint":4338,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quote":{"entryPoint":7818,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quoteAndRevert":{"entryPoint":3708,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reentrancyGuardEntered":{"entryPoint":7308,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registerPool":{"entryPoint":8048,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removeLiquidityRecovery":{"entryPoint":4806,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":7511,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_vault":{"entryPoint":8807,"id":null,"parameterSlots":0,"returnSlots":0},"extract_returndata":{"entryPoint":9747,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":1918,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_34042":{"entryPoint":1780,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_34048":{"entryPoint":1813,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_34055":{"entryPoint":1841,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_34057":{"entryPoint":1870,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_34247":{"entryPoint":1898,"id":null,"parameterSlots":1,"returnSlots":0},"fun":{"entryPoint":11096,"id":27638,"parameterSlots":0,"returnSlots":0},"fun_27620":{"entryPoint":11056,"id":27620,"parameterSlots":0,"returnSlots":0},"fun_accountDelta":{"entryPoint":20753,"id":24503,"parameterSlots":2,"returnSlots":0},"fun_allowance":{"entryPoint":13050,"id":38353,"parameterSlots":3,"returnSlots":1},"fun_approve":{"entryPoint":16155,"id":38777,"parameterSlots":4,"returnSlots":0},"fun_bubbleUpRevert":{"entryPoint":12593,"id":6059,"parameterSlots":1,"returnSlots":0},"fun_burn":{"entryPoint":13858,"id":38621,"parameterSlots":3,"returnSlots":0},"fun_callAfterInitializeHook":{"entryPoint":15633,"id":29012,"parameterSlots":4,"returnSlots":0},"fun_callBeforeInitializeHook":{"entryPoint":14614,"id":28982,"parameterSlots":3,"returnSlots":0},"fun_computeProportionalAmountsOut":{"entryPoint":13382,"id":11099,"parameterSlots":3,"returnSlots":1},"fun_computeYieldFeesDue":{"entryPoint":22559,"id":30569,"parameterSlots":4,"returnSlots":1},"fun_copyToScaled18ApplyRateRoundDownArray":{"entryPoint":14448,"id":6310,"parameterSlots":3,"returnSlots":1},"fun_divDown":{"entryPoint":12424,"id":7616,"parameterSlots":2,"returnSlots":1},"fun_ensureInitializedPool":{"entryPoint":11335,"id":24722,"parameterSlots":1,"returnSlots":0},"fun_ensureInputLengthMatch":{"entryPoint":14401,"id":5611,"parameterSlots":2,"returnSlots":0},"fun_ensurePoolMinimumTotalSupply":{"entryPoint":21116,"id":38473,"parameterSlots":1,"returnSlots":0},"fun_ensureRegisteredPool":{"entryPoint":11260,"id":24686,"parameterSlots":1,"returnSlots":0},"fun_ensureUnlocked":{"entryPoint":13179,"id":24402,"parameterSlots":0,"returnSlots":0},"fun_ensureUnpaused":{"entryPoint":14323,"id":24537,"parameterSlots":1,"returnSlots":0},"fun_ensureVaultDelegateCall":{"entryPoint":11170,"id":25279,"parameterSlots":0,"returnSlots":0},"fun_ensureVaultNotPaused":{"entryPoint":16459,"id":24523,"parameterSlots":0,"returnSlots":0},"fun_getAggregateSwapFeePercentage":{"entryPoint":20511,"id":29661,"parameterSlots":1,"returnSlots":1},"fun_getAggregateYieldFeePercentage":{"entryPoint":20546,"id":29722,"parameterSlots":1,"returnSlots":1},"fun_getBalanceRaw":{"entryPoint":null,"id":5848,"parameterSlots":1,"returnSlots":1},"fun_getDecimalScalingFactors":{"entryPoint":12748,"id":29854,"parameterSlots":2,"returnSlots":1},"fun_getPoolPausedState":{"entryPoint":11947,"id":24627,"parameterSlots":1,"returnSlots":2},"fun_getStaticSwapFeePercentage":{"entryPoint":12114,"id":29600,"parameterSlots":1,"returnSlots":1},"fun_getTokenRate":{"entryPoint":12830,"id":30455,"parameterSlots":1,"returnSlots":1},"fun_initialize":{"entryPoint":14937,"id":26349,"parameterSlots":7,"returnSlots":1},"fun_insertBool":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_101845":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_101846":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_108948":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_108949":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_115968":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_115969":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_72426":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_79933":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_79934":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_87356":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_87357":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_94654":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertUint":{"entryPoint":22717,"id":7149,"parameterSlots":3,"returnSlots":1},"fun_insertUint_129764":{"entryPoint":22691,"id":7149,"parameterSlots":2,"returnSlots":1},"fun_isPoolInRecoveryMode":{"entryPoint":null,"id":29305,"parameterSlots":1,"returnSlots":1},"fun_isPoolInitialized":{"entryPoint":null,"id":29219,"parameterSlots":1,"returnSlots":1},"fun_isPoolRegistered":{"entryPoint":null,"id":29176,"parameterSlots":1,"returnSlots":1},"fun_isQueryContext":{"entryPoint":13757,"id":25144,"parameterSlots":0,"returnSlots":1},"fun_loadPoolData":{"entryPoint":11412,"id":24875,"parameterSlots":1,"returnSlots":1},"fun_mint":{"entryPoint":21539,"id":38458,"parameterSlots":3,"returnSlots":0},"fun_mintMinimumSupplyReserve":{"entryPoint":21267,"id":38525,"parameterSlots":1,"returnSlots":0},"fun_mulUp":{"entryPoint":13461,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":13345,"id":9554,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":13260,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_queryModeBalanceIncrease":{"entryPoint":13791,"id":38387,"parameterSlots":3,"returnSlots":0},"fun_registerPool":{"entryPoint":17719,"id":26002,"parameterSlots":2,"returnSlots":0},"fun_reloadBalancesAndRates":{"entryPoint":14828,"id":30410,"parameterSlots":2,"returnSlots":0},"fun_setAggregateSwapFeePercentage":{"entryPoint":22081,"id":29701,"parameterSlots":2,"returnSlots":1},"fun_setAggregateYieldFeePercentage":{"entryPoint":22113,"id":29762,"parameterSlots":2,"returnSlots":1},"fun_setBalanceRaw":{"entryPoint":13588,"id":5883,"parameterSlots":2,"returnSlots":1},"fun_setDisableUnbalancedLiquidity":{"entryPoint":null,"id":29393,"parameterSlots":1,"returnSlots":1},"fun_setPauseWindowEndTime":{"entryPoint":null,"id":29931,"parameterSlots":2,"returnSlots":1},"fun_setPoolInitialized":{"entryPoint":null,"id":29244,"parameterSlots":1,"returnSlots":1},"fun_setStaticSwapFeePercentage":{"entryPoint":22149,"id":25045,"parameterSlots":2,"returnSlots":0},"fun_setStaticSwapFeePercentage_29640":{"entryPoint":22788,"id":29640,"parameterSlots":2,"returnSlots":1},"fun_setTokenDecimalDiffs":{"entryPoint":null,"id":29881,"parameterSlots":2,"returnSlots":1},"fun_setupQuery":{"entryPoint":12460,"id":27458,"parameterSlots":0,"returnSlots":0},"fun_shouldCallAfterInitialize":{"entryPoint":null,"id":28046,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeInitialize":{"entryPoint":null,"id":28003,"parameterSlots":1,"returnSlots":1},"fun_spendAllowance":{"entryPoint":13602,"id":38827,"parameterSlots":4,"returnSlots":0},"fun_supplyCredit":{"entryPoint":13526,"id":24430,"parameterSlots":2,"returnSlots":0},"fun_tGet":{"entryPoint":null,"id":6564,"parameterSlots":2,"returnSlots":1},"fun_tGet_6669":{"entryPoint":null,"id":6669,"parameterSlots":3,"returnSlots":1},"fun_tSet":{"entryPoint":22669,"id":6593,"parameterSlots":3,"returnSlots":0},"fun_takeDebt":{"entryPoint":21249,"id":24447,"parameterSlots":2,"returnSlots":0},"fun_toHooksConfig":{"entryPoint":15837,"id":28422,"parameterSlots":2,"returnSlots":1},"fun_toInt256":{"entryPoint":20668,"id":44125,"parameterSlots":1,"returnSlots":1},"fun_toPackedBalance":{"entryPoint":21016,"id":5929,"parameterSlots":2,"returnSlots":1},"fun_toTokenDecimalDiffs":{"entryPoint":21873,"id":29979,"parameterSlots":1,"returnSlots":1},"fun_updateRawAndLiveBalance":{"entryPoint":21172,"id":30517,"parameterSlots":3,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":12608,"id":39838,"parameterSlots":3,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34023":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34025":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34026":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34031":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34034":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34147":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34241":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34261":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_34273":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bytes32_of_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_contract_IERC20_dyn":{"entryPoint":9647,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_onlyVaultDelegateCall":{"entryPoint":10484,"id":25270,"parameterSlots":8,"returnSlots":0},"modifier_onlyVaultDelegateCall_26639":{"entryPoint":10778,"id":25270,"parameterSlots":1,"returnSlots":1},"modifier_onlyVaultDelegateCall_34020":{"entryPoint":9003,"id":25270,"parameterSlots":2,"returnSlots":1},"modifier_onlyVaultDelegateCall_34040":{"entryPoint":9962,"id":25270,"parameterSlots":6,"returnSlots":1},"panic_error_0x11":{"entryPoint":8929,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":9602,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1735,"id":null,"parameterSlots":0,"returnSlots":0},"read_from_memoryt_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_reference_type_struct_TokenInfo":{"entryPoint":9684,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IHooks":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"revert_forward":{"entryPoint":9347,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"validator_assert_enum_TokenType":{"entryPoint":938,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_address":{"entryPoint":699,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":7911,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_enum_SwapKind":{"entryPoint":2038,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_contract_IRateProvider":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_enum_TokenType":{"entryPoint":9672,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint40":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint8":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"25259":[{"length":32,"start":8838},{"length":32,"start":11180}],"25262":[{"length":32,"start":1629},{"length":32,"start":11119}],"27740":[{"length":32,"start":4366},{"length":32,"start":12479},{"length":32,"start":13181}],"27745":[{"length":32,"start":7398},{"length":32,"start":20852},{"length":32,"start":20955}],"27750":[{"length":32,"start":4752},{"length":32,"start":20762}],"27755":[{"length":32,"start":5238},{"length":32,"start":6144}],"27760":[{"length":32,"start":5204},{"length":32,"start":6110}],"27806":[{"length":32,"start":16466}],"27808":[{"length":32,"start":1501},{"length":32,"start":12010}]},"linkReferences":{},"object":"60806040526004361015610018575b36612b5857612b30565b5f3560e01c8062fdfa13146102b657806313d21cdf146102b157806313ef8a5d146102ac57806315e32046146102a75780631ba0ae45146102a25780634afbaf5a1461029d5780634d472bdd146102985780634f037ee714610293578063532cec7c1461028e578063535cfd8a1461028957806367e0e076146102845780636844846b1461027f5780636c9bc7321461027a578063757d64b3146102755780637e361bde146102705780638380edb71461026b57806385e0b9991461026657806385f2dbd414610261578063927da1051461025c57806396787092146102575780639e825ff514610252578063a07d60401461024d578063aaabadc514610248578063ace9b89b14610243578063b45090f91461023e578063b4aef0ab14610239578063ba8a2be014610234578063be7d628a1461022f578063c673bdaf1461022a578063c808824714610225578063ca4f280314610220578063ce8630d41461021b578063d2c725e014610216578063db81718714610211578063e1f21c671461020c578063e4dc2aa414610207578063e9ddeb2614610202578063edfa3568146101fd578063eeec802f146101f8578063f29486a1146101f3578063f7888aec146101ee5763fbfa77cf0361000e57612267565b6121fe565b612164565b611f70565b611e8a565b611dce565b611d57565b611d0e565b611cca565b611c8c565b611b94565b611ae6565b611a3e565b6119f6565b6119a2565b6118b7565b61188d565b611841565b6117b2565b611781565b6112c6565b611264565b611220565b6111d0565b6111a2565b611138565b6110f2565b610fd2565b610e7c565b610ddc565b610d94565b610c3e565b610b38565b610ad4565b6109d2565b6108f0565b610681565b61063e565b61059c565b610572565b610483565b610313565b6001600160a01b038116036102cc57565b5f80fd5b61010435906102de826102bb565b565b35906102de826102bb565b60031960409101126102cc57600435610303816102bb565b90602435610310816102bb565b90565b346102cc5760206103626001600160a01b0361032e366102eb565b9190610338612ba2565b61034181612bfc565b165f526006835260405f20906001600160a01b03165f5260205260405f2090565b5460801c604051908152f35b9081518082526020808093019301915f5b82811061038d575050505090565b83516001600160a01b03168552938101939281019260010161037f565b600211156103b457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90604060609280516103f2816103aa565b83526001600160a01b0360208201511660208401520151151560408201520190565b9081518082526020808093019301915f5b828110610433575050505090565b909192938261044560019287516103e1565b950193929101610425565b9081518082526020808093019301915f5b82811061046f575050505090565b835185529381019392810192600101610461565b346102cc5760206003193601126102cc576105646104c56004356104a6816102bb565b6104ae6122aa565b506104b7612ba2565b6104c081612c47565b612c94565b60405191829160208352805160208401526104f0602082015160e0604086015261010085019061036e565b60c061055261053f61052b610517604087015195601f1996878b83030160608c0152610414565b6060870151868a83030160808b0152610450565b6080860151858983030160a08a0152610450565b60a0850151848883030184890152610450565b920151908483030160e0850152610450565b0390f35b5f9103126102cc57565b346102cc575f6003193601126102cc5761058a612ba2565b602060ff600954166040519015158152f35b346102cc5760206003193601126102cc5760806004356105bb816102bb565b6105c3612ba2565b6105cc81612bfc565b6105d581612eab565b6106029291927f00000000000000000000000000000000000000000000000000000000000000008261230e565b916001600160a01b038091165f52600160205260405f20541691604051931515845263ffffffff80921660208501521660408301526060820152f35b346102cc575f6003193601126102cc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102cc5760206003193601126102cc5760206004356106a0816102bb565b6106a8612ba2565b6001600160a01b038091165f52600e825260405f205416604051908152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761071057604052565b6106c7565b6080810190811067ffffffffffffffff82111761071057604052565b610140810190811067ffffffffffffffff82111761071057604052565b60e0810190811067ffffffffffffffff82111761071057604052565b67ffffffffffffffff811161071057604052565b90601f601f19910116810190811067ffffffffffffffff82111761071057604052565b604051906102de8261074e565b604051906102de82610715565b604051906102de82610731565b60405190610160820182811067ffffffffffffffff82111761071057604052565b604051906102de826106f4565b600211156102cc57565b35906102de826107f6565b67ffffffffffffffff81116107105760051b60200190565b9080601f830112156102cc57602090823561083d8161080b565b9361084b604051958661077e565b81855260208086019260051b8201019283116102cc57602001905b828210610874575050505090565b81358152908301908301610866565b67ffffffffffffffff811161071057601f01601f191660200190565b9291926108ab82610883565b916108b9604051938461077e565b8294818452818301116102cc578281602093845f960137010152565b9080601f830112156102cc578160206103109335910161089f565b346102cc576003196040813601126102cc5760043561090e816102bb565b6024359067ffffffffffffffff928383116102cc5760e09083360301126102cc576109376107a1565b9061094483600401610800565b82526024830135602083015260448301358481116102cc5761096c9060043691860101610823565b6040830152606483013560608301526084830135608083015261099160a484016102e0565b60a083015260c48301359384116102cc576109b86109c293600461056496369201016108d5565b60c083015261232b565b6040519081529081906020820190565b346102cc5760206003193601126102cc576004356109ef816102bb565b6109f7612ba2565b610a0081612c47565b610a4d60206080610a1084612c94565b0151604051809381927f984de9e8000000000000000000000000000000000000000000000000000000008352604060048401526044830190610450565b6001602483015203816001600160a01b0386165afa8015610acf57610564926109c2925f92610a9a575b50610a93906001600160a01b03165f52601160205260405f2090565b5490613088565b610a93919250610ac19060203d602011610ac8575b610ab9818361077e565b810190612457565b9190610a77565b503d610aaf565b612483565b346102cc5760206003193601126102cc576001600160a01b03600435610af9816102bb565b610b01612ba2565b610b0a81612bfc565b165f525f6020526020600160405f2054811c166040519015158152f35b906020610310928181520190610450565b346102cc5760206003193601126102cc576105646080610b6e600435610b5d816102bb565b610b65612ba2565b6104c081612bfc565b0151604051918291602083526020830190610450565b9081518082526020808093019301915f5b828110610ba3575050505090565b83516001600160a01b031685529381019392810192600101610b95565b9290610bd89095949295608085526080850190610b84565b6020908481036020860152602080885192838152019701915f5b828110610c21575050505084610c1391846103109697036040860152610450565b916060818403910152610450565b9091929782610c336001928b516103e1565b990193929101610bf2565b346102cc5760206003193601126102cc57600435610c5b816102bb565b610c63612ba2565b610c6c81612bfc565b6001600160a01b0381165f52600560205260405f20610ca4610c9f836001600160a01b03165f52600360205260405f2090565b61248e565b90815192610cb184612503565b93610cbb81612551565b91610cc582612551565b935f5b838110610ce0576040518061056488888c8c85610bc0565b80610cf560019284905f5260205260405f2090565b54610d4c610d478a610d32610d2586610d1f8b6001600160a01b03165f52600460205260405f2090565b936125af565b516001600160a01b031690565b6001600160a01b03165f5260205260405f2090565b6125d4565b610d56838c6125af565b52610d61828b6125af565b506fffffffffffffffffffffffffffffffff8116610d7f83896125af565b5260801c610d8d82896125af565b5201610cc8565b346102cc5760206003193601126102cc576020600435610db3816102bb565b610dbb612ba2565b6001600160a01b038091165f52600e825260405f2054161515604051908152f35b346102cc5760206003193601126102cc576020610e14600435610dfe816102bb565b610e06612ba2565b610e0f81612bfc565b612eab565b506040519015158152f35b9181601f840112156102cc5782359167ffffffffffffffff83116102cc57602083818601950101116102cc57565b60206003198201126102cc576004359067ffffffffffffffff82116102cc57610e7891600401610e1f565b9091565b346102cc575f80610e8c36610e4d565b90610e956130ac565b610e9d612ba2565b8160405192839283378101838152039082335af1610eb9612613565b908015610f065790610ecf81610f029333613140565b506040519182917f5ab64fb800000000000000000000000000000000000000000000000000000000835260048301611e79565b0390fd5b506004815110610f85577f5ab64fb8000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060208301511603613131577f28f95541000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091610fc461031093604084526040840190610450565b916020818403910152610450565b346102cc5760206003193601126102cc57600435610fef816102bb565b610ff7612ba2565b61100081612bfc565b6001600160a01b038082165f525f60205260405f2054600360205260405f209160405180938491602082549182815201915f5260205f20935f905b8282106110ca575050506110519250038361077e565b61105d825180926131cc565b9161106782612551565b935f5b8381106110805760405180610564888883610fad565b6001906110b96110b4610d476110a7866001600160a01b03165f52600460205260405f2090565b610d32610d25868a6125af565b61321e565b6110c382896125af565b520161106a565b85546001600160a01b039082161684526001958601958895506020909401939091019061103b565b346102cc575f6003193601126102cc5761110a612ba2565b60207f00000000000000000000000000000000000000000000000000000000000000005c6040519015158152f35b346102cc5760206fffffffffffffffffffffffffffffffff6111986001600160a01b03611164366102eb565b919061116e612ba2565b61117781612bfc565b165f526006845260405f20906001600160a01b03165f5260205260405f2090565b5416604051908152f35b346102cc575f6003193601126102cc576111ba612ba2565b60206001600160a01b03600a5416604051908152f35b346102cc5760606003193601126102cc5760206112186004356111f2816102bb565b6024356111fe816102bb565b6044359161120b836102bb565b611213612ba2565b6132fa565b604051908152f35b346102cc5760206003193601126102cc576001600160a01b03600435611245816102bb565b61124d612ba2565b165f526008602052602060405f2054604051908152f35b346102cc5760206003193601126102cc576020611218600435611286816102bb565b61128e612ba2565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03165f5260205260405f205c90565b346102cc5760806003193601126102cc576004356112e3816102bb565b6024356112ef816102bb565b6044359060643567ffffffffffffffff81116102cc57611313903690600401610823565b61131b612ba2565b61132361337b565b61132b6133cc565b61133484612c47565b6001600160a01b039384811691825f526020905f60205261135d60405f205460019060031c1690565b156117555761137d836001600160a01b03165f52600560205260405f2090565b96611386612642565b926113a5610c9f866001600160a01b03165f52600360205260405f2090565b80855251966113ba6040860198808a52612551565b97608086019889525f5b815181101561140d57806113fb6113e56001938f905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b611406828d516125af565b52016113c4565b50899896979861143b8189516114348c6001600160a01b03165f52601160205260405f2090565b5490613446565b996114468351612551565b95606089019687526114ad8b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b151560a08a018181529590611728575b5f5b855181101561160d576114e9818f8a8e838e6114db8e51151590565b6115bd575b505050506125af565b516114f4828c6125af565b511161155457808c8f826115478f8261154d9461152e61151d610d2560019b61153396516125af565b61152784846125af565b51906134d6565b6125af565b5193519361154183866125af565b516126b2565b926125af565b52016114bf565b8d8a61157d836115768f95611570610d25826115ba99516125af565b956125af565b51926125af565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b5ffd5b6115dc6115ee936115f9956115d285896125af565b5191015190613495565b6115e78383516125af565b52516125af565b5161154184846125af565b61160383836125af565b528a8e838e6114e0565b508a95509187918d938d611632816001600160a01b03165f52600560205260405f2090565b965f5b8951811015611683578061166a8c6116638361165b6001968f905f5260205260405f2090565b5492516125af565b5190613514565b61167c828c905f5260205260405f2090565b5501611635565b610564885f89897ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a58a8a6117016116ef8c6116d88d6116c481338886613522565b6116cc6135bd565b611718575b8583613622565b6001600160a01b03165f52601160205260405f2090565b549551886040519485941697846126bf565b0390a461170c613421565b60405191829182610b27565b6117238187856135df565b6116d1565b61174b6117458d6001600160a01b03165f525f60205260405f2090565b54612f52565b60208b01526114bd565b837fef029adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102cc575f6003193601126102cc57611799612ba2565b60206001600160a01b0360095460081c16604051908152f35b346102cc5760206003193601126102cc5760206118376004356117d4816102bb565b6117dc612ba2565b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b6040519015158152f35b346102cc5760206003193601126102cc576001600160a01b03600435611866816102bb565b61186e612ba2565b61187781612bfc565b165f525f602052602061121860405f2054612f52565b346102cc575f6003193601126102cc576118a5612ba2565b60206001600754166040519015158152f35b346102cc5760c06003193601126102cc576004356118d4816102bb565b602435906118e1826102bb565b6044359167ffffffffffffffff918284116102cc57366023850112156102cc57836004013561190f8161080b565b9461191d604051968761077e565b8186526020916024602088019160051b830101913683116102cc57602401905b82821061198957505050506064358381116102cc57611960903690600401610823565b60a4359384116102cc576105649461197f6109c29536906004016108d5565b93608435936126ea565b8380918335611997816102bb565b81520191019061193d565b346102cc5760206003193601126102cc576001600160a01b036004356119c7816102bb565b6119cf612ba2565b6119d881612bfc565b165f525f6020526020600160405f205460031c166040519015158152f35b346102cc5760206003193601126102cc576001600160a01b03600435611a1b816102bb565b611a23612ba2565b165f525f6020526020600160405f2054166040519015158152f35b346102cc5760406003193601126102cc5760243567ffffffffffffffff81116102cc57611a6f903690600401610e1f565b611a77612ba2565b611a8033612bfc565b80604051926020845281602085015260408401375f604082840101527f4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d8585642860043592604081601f19601f339601168101030190a3005b906020610310928181520190610b84565b346102cc5760206003193601126102cc57600435611b03816102bb565b611b0b612ba2565b611b1481612bfc565b6001600160a01b038091165f52600360205260405f20906040519081602084549182815201935f5260205f20915f905b828210611b675761056485611b5b8189038261077e565b60405191829182611ad5565b909192946001611b89819284895416906001600160a01b036020921681520190565b960193920190611b44565b346102cc5760206003193601126102cc57610160611bf9600435611bb7816102bb565b611bbf612891565b50611bc8612ba2565b611bd181612bfc565b6001600160a01b038091165f525f60205260405f205490600260205260405f20541690613ddd565b611c8a604051809280511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565bf35b346102cc575f6003193601126102cc5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b346102cc575f6003193601126102cc57611ce2612ba2565b60207f00000000000000000000000000000000000000000000000000000000000000005c604051908152f35b346102cc5760606003193601126102cc57611d4c600435611d2e816102bb565b602435611d3a816102bb565b611d42612ba2565b6044359133613f1b565b602060405160018152f35b346102cc5760206003193601126102cc576001600160a01b03600435611d7c816102bb565b611d84612ba2565b165f526011602052602060405f2054604051908152f35b6102de909291926060810193604090816001600160a01b0391828151168552826020820151166020860152015116910152565b346102cc5760206003193601126102cc57610564600435611dee816102bb565b611df66124e5565b50611dff612ba2565b611e0881612bfc565b6001600160a01b038091165f52600160205260405f2090600260405192611e2e846106f4565b828154168452826001820154166020850152015416604082015260405191829182611d9b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b906020610310928181520190611e54565b346102cc57610564611ed35f80611eba611ea336610e4d565b611eab6130ac565b611eb3612ba2565b369161089f565b60208151910182335af1611ecc612613565b9033613140565b604051918291602083526020830190611e54565b801515036102cc57565b608435906102de82611ee7565b6064359063ffffffff821682036102cc57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c60609101126102cc5760a490565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc60809101126102cc5761012490565b346102cc576101a06003193601126102cc57600435611f8e816102bb565b60243567ffffffffffffffff81116102cc57366023820112156102cc57806004013591611fba8361080b565b91604093611fcb604051948561077e565b8084526020906024602086019160071b840101923684116102cc57602401905b83821061202f5761202d8686611fff611efe565b612007611ef1565b61201036611f11565b916120196102d0565b9361202336611f40565b95604435916128f4565b005b6080823603126102cc5782608091885161204881610715565b8435612053816102bb565b815282850135612062816107f6565b8382015289850135612073816102bb565b8a8201526060808601359061208782611ee7565b820152815201910190611feb565b6102de909291926101806101a08201946120d68382516060809180511515845260208101511515602085015260408101511515604085015201511515910152565b60208101516080840152604081015160a0840152606081015160c084015261210c608082015160e085019064ffffffffff169052565b60a081015190612127610100928386019063ffffffff169052565b61215b60c082015192612141610120948588019015159052565b60e083015115156101408701528201511515610160860152565b01511515910152565b346102cc5760206003193601126102cc576105646121f2600435612187816102bb565b5f61012060405161219781610731565b6040516121a381610715565b83815283602082015283604082015283606082015281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201520152612a1a565b60405191829182612095565b346102cc5760406003193601126102cc57602061225e600435612220816102bb565b6001600160a01b0360243591612235836102bb565b61223d612ba2565b165f52600f835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b346102cc575f6003193601126102cc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604051906122b78261074e565b815f815260c060609182602082015282604082015282808201528260808201528260a08201520152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91909163ffffffff8080941691160191821161232657565b6122e1565b6123a891612337612ba2565b61234082612c47565b6001600160a01b039081831690815f525f6020526040938493612365855f2054612f52565b935f526002602052845f205416918451968794859384937fa0e8f5ac00000000000000000000000000000000000000000000000000000000855260048501612f9f565b03915afa918215610acf575f915f93612425575b5050156123fd57670de0b5cad2bef00081116123d55790565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b612448935080919250903d10612450575b612440818361077e565b810190612f80565b905f806123bc565b503d612436565b908160209103126102cc575190565b9190602061247e600192604086526040860190610450565b930152565b6040513d5f823e3d90fd5b90604051918281549182825260209260208301915f5260205f20935f905b8282106124c2575050506102de9250038361077e565b85546001600160a01b0316845260019586019588955093810193909101906124ac565b604051906124f2826106f4565b5f6040838281528260208201520152565b9061250d8261080b565b61251a604051918261077e565b828152601f1961252a829461080b565b01905f5b82811061253a57505050565b6020906125456124e5565b8282850101520161252e565b9061255b8261080b565b612568604051918261077e565b828152601f19612578829461080b565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80518210156125c35760209160051b010190565b612582565b6125d1826103aa565b52565b906040516125e1816106f4565b604060ff8294548181166125f4816103aa565b84526001600160a01b038160081c16602085015260a81c161515910152565b3d1561263d573d9061262482610883565b91612632604051938461077e565b82523d5f602084013e565b606090565b6040519060c0820182811067ffffffffffffffff821117610710576040525f60a08360608152826020820152826040820152606080820152606060808201520152565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0820191821161232657565b9190820391821161232657565b916126dc9061031094928452606060208501526060840190610450565b916040818403910152610450565b93959491959290926126fa612ba2565b61270261337b565b61270b85612bfc565b6127136133cc565b61271c856137f3565b61272585612c94565b916127348351600190811c1690565b61285c5761279d969761274e602085015151835190613841565b60c0840195865161276660a087019182519086613870565b9789612777885160019060081c1690565b6127eb575b899492508791509261278f969593613a59565b94859151600190600a1c1690565b6127ae575b50505050610310613421565b6127dc6127cf6127e2956001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b92613d11565b5f8080836127a2565b9161284f91612821899b8b61281b6127cf61278f9c9b999a986001600160a01b03165f52600260205260405f2090565b91613916565b61284561283f8d6001600160a01b03165f52600560205260405f2090565b8a6139ec565b5190519084613870565b978193929495508961277c565b7f218e3747000000000000000000000000000000000000000000000000000000005f526001600160a01b03861660045260245ffd5b60405190610160820182811067ffffffffffffffff821117610710576040525f610140838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201520152565b94969263ffffffff91969492612908612ba2565b6129106133cc565b61291861404b565b604051976129258961074e565b88526020880152166040860152151560608501526060853603126102cc576129a16129a8926129b296604080519161295c836106f4565b8035612967816102bb565b83526020810135612977816102bb565b60208401520135612987816102bb565b604082015260808701526001600160a01b031660a0860152565b36906129ba565b60c0830152614537565b6102de613421565b91908260809103126102cc576040516129d281610715565b606080829480356129e281611ee7565b845260208101356129f281611ee7565b60208501526040810135612a0581611ee7565b6040850152013591612a1683611ee7565b0152565b612a4590612a26612ba2565b612a2f81612bfc565b6001600160a01b03165f525f60205260405f2090565b546103106001612a5483612f52565b92612afd612a618261501f565b612af0612a6d84615042565b64ffffffffff85605a1c169063ffffffff86612a87608290565b1c1693612a926107ae565b600488901c89161515815299600588901c8916151560208c0152600688901c8916151560408c0152600788901c8916151560608c0152612ad06107bb565b9a8b5260208b015260408a0152606089015264ffffffffff166080880152565b63ffffffff1660a0860152565b808216151560c085015280821c8216151560e0850152600281901c8216151561010085015260031c161515610120830152565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b34612b3057365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e15612b9e573d5ff35b3d5ffd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003612bd457565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0316805f525f602052600160405f20541615612c1c5750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615612c695750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001600160a01b03612ca56122aa565b92165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f20938454938752612ce06020880195615065565b8552612ceb84612503565b91818801928352612cfb85612551565b9160608901928352612d0c86612551565b9460809560808b0152612d20878b516131cc565b60c08b0152612d2e87612551565b60a08b019081528a5191600199600184811c169384612e97575b5083612e85575b8c5f5b8b8110612d685750505050505050505050505050565b8a8d92828c8c8c612daf84612d9b81612d8d610d478f8f610d2585610d3292516125af565b94905f5260205260405f2090565b54945183612da983836125af565b526125af565b50612db98161321e565b612dc4858d516125af565b52612de26fffffffffffffffffffffffffffffffff841685876152b4565b878d8d15612e785782015115159182612e5a575b5050612e0b575b50505050505b018d90612d52565b82612e2e92612e2582612e1e8851615042565b94516125af565b51961c8561581f565b9283612e3e575b8e93508c612dfd565b612e5193612e4b916126b2565b916152b4565b5f8f8282612e35565b90915051612e67816103aa565b612e70816103aa565b14875f612df6565b5050505050505050612e03565b8c5190935060031c6001161592612d4f565b612ea2919450615042565b1515925f612d48565b6001600160a01b03165f525f60205260405f20549060018260021c1663ffffffff8093612ed6608290565b1c169281612ee357509190565b9050612f0f7f00000000000000000000000000000000000000000000000000000000000000008461230e565b164211159190565b60ff60019116019060ff821161232657565b9060058202918083046005149015171561232657565b8181029291811591840414171561232657565b62ffffff9060121c1664174876e800908181029181830414901517156123265790565b51906102de82611ee7565b91908260409103126102cc5760208251612f9981611ee7565b92015190565b612a1661303f60409396959496606084528051612fbb816103aa565b60608501526020810151608085015260c0612fe58683015160e060a0880152610140870190610450565b91606081015182870152608081015160e08701526001600160a01b0360a08201511661010087015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa085830301610120860152611e54565b6001600160a01b039096166020830152565b811561305b570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90670de0b6b3a7640000918281029281840414901517156123265761031091613051565b32613109576001600754166130e15760017f00000000000000000000000000000000000000000000000000000000000000005d565b7f7a198886000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b805115610f8557805190602001fd5b9061317d575080511561315557805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806131c3575b61318e575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15613186565b9064ffffffffff6131dc82612551565b92605a1c165f5b8281106131f05750505090565b601f826131fc83612f29565b1c1690604d821161232657600191600a0a61321782876125af565b52016131e3565b8051613229816103aa565b613232816103aa565b80613245575050670de0b6b3a764000090565b806132516001926103aa565b036132d257602061327c6132708260049401516001600160a01b031690565b6001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115610acf575f916132b9575090565b610310915060203d602011610ac857610ab9818361077e565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0392918381168484160361333757505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b6133779361336192165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b906001600160a01b03165f5260205260405f2090565b5490565b7f00000000000000000000000000000000000000000000000000000000000000005c156133a457565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6133f9576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b92916134528451612551565b935f5b815181101561348f578061347e8561347986613473600196886125af565b51612f3f565b613051565b61348882896125af565b5201613455565b50505050565b9061349f91612f3f565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b906134e0906150bc565b907f80000000000000000000000000000000000000000000000000000000000000008214612326576102de915f0390615111565b906103109160801c90615218565b91909392936135328282856132fa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103613562575b505050509050565b808611613580579461357694950392613f1b565b805f80808061355a565b85906001600160a01b03847ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b3215806135c75790565b506001600754161590565b9190820180921161232657565b9032613109576001600160a01b0361361392165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b80549182018092116123265755565b90916001600160a01b038084169283156137be5761365585613361836001600160a01b03165f52600f60205260405f2090565b548084116137815783900361367f86613361846001600160a01b03165f52600f60205260405f2090565b556136a58361369f836001600160a01b03165f52601160205260405f2090565b546126b2565b6136ae8161527c565b6136c9826001600160a01b03165f52601160205260405f2090565b551690813b156102cc576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f9161376391868180606481015b038183895af1613768575b506040519081529081906020820190565b0390a4565b8061377561377b9261076a565b80610568565b5f613752565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b6137fb61404b565b61380481612eab565b5061380c5750565b6001600160a01b03907fd971f597000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b0361384857565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b919082519181518151818514918215926138f6575b50506138485761389483612551565b935f5b8481106138a657505050505090565b80670de0b6b3a76400006138e46138bf600194866125af565b516138df6138cd858a6125af565b516138d8868a6125af565b5192612f3f565b612f3f565b046138ef82896125af565b5201613897565b141590505f80613885565b908160209103126102cc575161031081611ee7565b9061397a926139685f6001600160a01b03602095604051978896879586937f1c149e28000000000000000000000000000000000000000000000000000000008552604060048601526044850190610450565b90600319848303016024850152611e54565b0393165af1908115610acf575f916139bd575b501561399557565b7f60612925000000000000000000000000000000000000000000000000000000005f5260045ffd5b6139df915060203d6020116139e5575b6139d7818361077e565b810190613901565b5f61398d565b503d6139cd565b60208082015151925f5b848110613a04575050505050565b600190613a536fffffffffffffffffffffffffffffffff6040613a33613a2d85838b01516125af565b5161321e565b613a418560a08b01516125af565b52835f528587525f20541682876152b4565b016139f6565b929195969496613a7a846001600160a01b03165f52600560205260405f2090565b955f5b60208901518051821015613b5857610d2582613a98926125af565b613aa8613270610d2584896125af565b6001600160a01b038216908103613b04575090613ad2600192613acb838b6125af565b5190615301565b613aeb8b613ae483611576818d6125af565b5190615218565b613afd828b905f5260205260405f2090565b5501613a7d565b6115ba9088613b19613270610d25878c6125af565b7fffe261a1000000000000000000000000000000000000000000000000000000005f526001600160a01b03918216600452811660245216604452606490565b50509694919250969450613b9084517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd600291161790565b808552613bad846001600160a01b03165f525f60205260405f2090565b556001600160a01b0392613bf3602085831697604051809381927f984de9e800000000000000000000000000000000000000000000000000000000835260048301612466565b03818a5afa8015610acf57613c18915f91613cf2575b50613c138161527c565b612685565b97613c2282615313565b613c2d898584615423565b808910613cc25750928592613c997fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca87193613c8a6020613c8060019a996001600160a01b03165f52601160205260405f2090565b5498015151612551565b906040519485941697846126bf565b0390a47fcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f35f80a2565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600489905260245260445ffd5b613d0b915060203d602011610ac857610ab9818361077e565b5f613c09565b92613d645f6001600160a01b036020959496613d7b604051988997889687947f38be241d000000000000000000000000000000000000000000000000000000008652606060048701526064860190610450565b916024850152600319848303016044850152611e54565b0393165af1908115610acf575f91613dbe575b5015613d9657565b7f0f23dbc6000000000000000000000000000000000000000000000000000000005f5260045ffd5b613dd7915060203d6020116139e5576139d7818361077e565b5f613d8e565b90613de6612891565b5060ff6001808483613df8600c612f17565b613e0190612f17565b161c16818584613e11600c612f17565b613e1a90612f17565b613e2390612f17565b161c1690828685613e34600c612f17565b613e3d90612f17565b613e4690612f17565b613e4f90612f17565b161c1692808786613e60600c612f17565b613e6990612f17565b613e7290612f17565b613e7b90612f17565b613e8490612f17565b161c16948188818184600c161c1692600c613e9e90612f17565b161c1691613eaa6107c8565b60098a901c82161515815298600881901c8216151560208b0152600a81901c8216151560408b0152600b1c161515606089015215156080880152151560a0870152151560c0860152151560e0850152151561010084015215156101208301526001600160a01b031661014082015290565b9290916001600160a01b039283811693841561401657808316958615613fe15784613f5f8561336186613361866001600160a01b03165f52601060205260405f2090565b551692833b156102cc576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a6191613763915f818060648101613747565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421115806140a9575b61408157565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c1661407b565b908051906140c4826103aa565b6140cd826103aa565b82546020820151604092909201517fffffffffffffffffffff0000000000000000000000000000000000000000000090911660ff939093169290921760089190911b74ffffffffffffffffffffffffffffffffffffffff00161790151560a81b75ff00000000000000000000000000000000000000000016179055565b908160209103126102cc575160ff811681036102cc5790565b80546801000000000000000081101561071057600181018083558110156125c3576001600160a01b03915f5260205f200191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b815181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039182161782556102de926002919060409061423f8360208301511660018701906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b0151169101906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b91908260409103126102cc576020825192015190565b9081518082526020808093019301915f5b8281106142ac575050505090565b9091929382608060019287516001600160a01b03808251168352848201516142d3816103aa565b83860152604082810151909116908301526060908101511515908201520195019392910161429e565b9493916102de9360609261432e926001600160a01b03809216895216602088015260e0604088015260e087019061428d565b9401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b90816101409103126102cc576143706107bb565b9061437a81612f75565b825261438860208201612f75565b602083015261439960408201612f75565b60408301526143aa60608201612f75565b60608301526143bb60808201612f75565b60808301526143cc60a08201612f75565b60a08301526143dd60c08201612f75565b60c08301526143ee60e08201612f75565b60e0830152610100614401818301612f75565b90830152614413610120809201612f75565b9082015290565b919695939461447c6102de9663ffffffff6102209661444461450a966102a0808a5289019061428d565b9b60208801521660408601526060850190604090816001600160a01b0391828151168552826020820151166020860152015116910152565b60c083019080511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565b01906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b9061455c614555836001600160a01b03165f525f60205260405f2090565b5460011690565b614fea5780515160028110614fc25760088111614f9a5792919061457f84612551565b5f945f5b818110614c8d57505061464f9293945060808201916145bd83516145b8876001600160a01b03165f52600160205260405f2090565b6141bf565b6145d2613270600a546001600160a01b031690565b604080916145eb828751016001600160a01b0390511690565b906145f96060860151151590565b83517f77ff76e70000000000000000000000000000000000000000000000000000000081526001600160a01b03808c166004830152909316602484015215156044830152909687919082905f9082906064820190565b03925af18015610acf575f955f91614c5a575b5061477b60c084019161477661474584519761472e61472861468a8b51151560041b60011790565b9a60606146f86146c760209e8f85015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf9060051b91161790565b8c84015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9060061b91161790565b91015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f9060071b91161790565b91615571565b90605a9164ffffffffff908116831b921b19161790565b986147718688019a61475b8c5163ffffffff1690565b9060829163ffffffff908116831b921b19161790565b615641565b615661565b9360a08401906001600160a01b0395898761479d85516001600160a01b031690565b168061489e575b50906147c28193926001600160a01b03165f525f60205260405f2090565b5582516001600160a01b03166001600160a01b03166147f28b6001600160a01b03165f52600260205260405f2090565b9061482a91906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b8501948551614839908b615685565b519451975163ffffffff16965191516001600160a01b03166001600160a01b031661486391613ddd565b9151925195869533991697614878958761441a565b037fbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad91a3565b6148e091849189515f8951938b51968795869485937f0b89f18200000000000000000000000000000000000000000000000000000000855233600486016142fc565b03925af1908115610acf575f91614c3d575b5015614c285761490f61327061327085516001600160a01b031690565b90855180927fd77153a70000000000000000000000000000000000000000000000000000000082528160046101409586935afa928315610acf575f93614bf9575b50508151151580614bdf575b614b8c5790614b5a6101206149c6614b27614af5614ac3614a91614a5f614a2d8e614a026149f98c8f614b859f906149c66149ce9261499b8551151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff9060091b91161790565b920151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff9060081b91161790565b918c0151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff90600a1b91161790565b60608a015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff90600b1b91161790565b608089015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefff90600c1b91161790565b60a088015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff90600d1b91161790565b60c087015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfff90600e1b91161790565b60e086015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff90600f1b91161790565b61010085015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff9060101b91161790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff9060111b91161790565b895f6147a4565b6115ba8b614ba186516001600160a01b031690565b7ffa93d814000000000000000000000000000000000000000000000000000000005f526001600160a01b039081166004521660245233604452606490565b50614bf3614bee865151151590565b151590565b1561495c565b614c19929350803d10614c21575b614c11818361077e565b81019061435c565b905f80614950565b503d614c07565b6115ba8a614ba185516001600160a01b031690565b614c549150833d85116139e5576139d7818361077e565b5f6148f2565b905081614c7d9296503d8711614c86575b614c75818361077e565b810190614277565b9490945f614662565b503d614c6b565b614c988185516125af565b5196614cab88516001600160a01b031690565b906001600160a01b038083169182158015614f8f575b614f675716808210614f3f578114614f0a57604090818a01998a51614cec906001600160a01b031690565b6001600160a01b0316159060209b8c8201908d825191614d0b836103aa565b516001600160a01b031693606001938451614d2590151590565b91614d2e6107e9565b93614d3990856125c8565b6001600160a01b039091169083015215158187015286614d6a8d6001600160a01b03165f52600460205260405f2090565b90614d8591906001600160a01b03165f5260205260405f2090565b90614d8f916140b7565b8051614d9a816103aa565b614da3816103aa565b614ebb5750811591614eb0575b506132d25789915b51998a80927f313ce56700000000000000000000000000000000000000000000000000000000825260049c8d915afa918215610acf575f92614e83575b505060129060ff9180838316115f14614e2f578a7f686d3607000000000000000000000000000000000000000000000000000000005f525ffd5b60019495969798999a5090614e5392910316614e4b85886125af565b9060ff169052565b614e7781614e72896001600160a01b03165f52600360205260405f2090565b614163565b96959493929101614583565b614ea29250803d10614ea9575b614e9a818361077e565b81019061414a565b5f80614df5565b503d614e90565b51151590505f614db0565b6001915051614ec9816103aa565b614ed2816103aa565b03614ee2576132d2578991614db8565b7fa1e9dd9d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4f4b634e000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b7f6e8f1947000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b508189168314614cc1565b7f707bdf58000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f5ed4ba8f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdb771c80000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b62ffffff90602a1c1664174876e800908181029181830414901517156123265790565b62ffffff9060421c1664174876e800908181029181830414901517156123265790565b90604051918281549182825260209260208301915f5260205f20935f905b828210615099575050506102de9250038361077e565b85546001600160a01b031684526001958601958895509381019390910190615083565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116150e65790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908015615214577f0000000000000000000000000000000000000000000000000000000000000000916151568184906001600160a01b03165f5260205260405f205c90565b8281019283125f821290801582169115161761232657826151ca57507f000000000000000000000000000000000000000000000000000000000000000092835c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111612326576102de945d61588d565b156151d9575b6102de9261588d565b7f000000000000000000000000000000000000000000000000000000000000000092835c60018101809111612326576102de945d92506151d0565b5050565b906fffffffffffffffffffffffffffffffff808311908115615272575b5061524a5760801b9081018091116123265790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f615235565b620f424081106152895750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b91906080670de0b6b3a76400006152f86125d194806152d78660608a01516125af565b526138df6152e98660c08a01516125af565b516138d88760a08b01516125af565b049301516125af565b61530d6102de926150bc565b90615111565b61532e816001600160a01b03165f52601160205260405f2090565b908154620f424090818101809111612326576001600160a01b039355615365826001600160a01b03165f52600f60205260405f2090565b5f805260205260405f20908154019055165f80827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806153af8190620f4240602083019252565b0390a4803b156102cc575f60405180927f23de66510000000000000000000000000000000000000000000000000000000082528183816154056004820190620f4240604060608401935f81525f60208201520152565b03925af18015610acf576154165750565b806137756102de9261076a565b916001600160a01b0380831693841561553c5761545b83615455836001600160a01b03165f52601160205260405f2090565b546135d2565b61547a85613361846001600160a01b03165f52600f60205260405f2090565b8481540190556154898161527c565b6154a4826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806154dd87829190602083019252565b0390a4823b156102cc576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b039093166024820152604481019190915291829081838160648101615405565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b5f9190825b81518410156156355761558984836125af565b5160ff9161559686612f29565b91610100808410156156085783810390811161232657808510156156305750835b600590811161560857816007911c166155e057600193601f9116831b921b191617930192615576565b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b6155b7565b64ffffffffff16925050565b670de0b5cad2bef00082116123d55764174876e8006103109204906158a3565b90670de0b5cad2bef00081116123d5576103109164174876e80060429204906158bd565b906001600160a01b038216916040517fce20ece70000000000000000000000000000000000000000000000000000000081526020908181600481885afa908115610acf575f91615802575b5083106157da576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481885afa918215610acf575f926157bd575b5050821161579557818161577f6157687f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a195615762615790966001600160a01b03165f525f60205260405f2090565b54615904565b916001600160a01b03165f525f60205260405f2090565b556040519081529081906020820190565b0390a2565b7f7f47834b000000000000000000000000000000000000000000000000000000005f5260045ffd5b6157d39250803d10610ac857610ab9818361077e565b5f80615713565b7fbfb20688000000000000000000000000000000000000000000000000000000005f5260045ffd5b6158199150823d8411610ac857610ab9818361077e565b5f6156d0565b9093925f946158328460808501516125af565b51818111615842575b5050505050565b61588295965061587c93926158759261585b9203613495565b9360a061586c8260c08601516125af565b519301516125af565b5190612f3f565b90613088565b905f8080808061583b565b906001600160a01b03165f5260205260405f205d565b908060181c6155e057602a1b9062ffffff602a1b19161790565b906101008084101561560857838103908111612326578060ff105f146158ff575060ff5b601811615608578060181c6155e05762ffffff90831b921b19161790565b6158e1565b90670de0b5cad2bef00081116123d55764174876e80090048060181c6155e0577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff9060121b9116179056fea264697066735822122097e8fe09a26a403c37967f36e22ede1ac0c7b1e719543f28dfa924e75c4b44ea64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x2B58 JUMPI PUSH2 0x2B30 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDFA13 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x13D21CDF EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x13EF8A5D EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0x15E32046 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x1BA0AE45 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x4AFBAF5A EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x4D472BDD EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x4F037EE7 EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0x532CEC7C EQ PUSH2 0x28E JUMPI DUP1 PUSH4 0x535CFD8A EQ PUSH2 0x289 JUMPI DUP1 PUSH4 0x67E0E076 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x6844846B EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x6C9BC732 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x757D64B3 EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x7E361BDE EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x8380EDB7 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x85E0B999 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x85F2DBD4 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x96787092 EQ PUSH2 0x257 JUMPI DUP1 PUSH4 0x9E825FF5 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xA07D6040 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0xACE9B89B EQ PUSH2 0x243 JUMPI DUP1 PUSH4 0xB45090F9 EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0xB4AEF0AB EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0xBA8A2BE0 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0xBE7D628A EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0xC673BDAF EQ PUSH2 0x22A JUMPI DUP1 PUSH4 0xC8088247 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xCA4F2803 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xCE8630D4 EQ PUSH2 0x21B JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xDB817187 EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xE1F21C67 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0xE4DC2AA4 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0xE9DDEB26 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xEDFA3568 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0xEEEC802F EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xF29486A1 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0xF7888AEC EQ PUSH2 0x1EE JUMPI PUSH4 0xFBFA77CF SUB PUSH2 0xE JUMPI PUSH2 0x2267 JUMP JUMPDEST PUSH2 0x21FE JUMP JUMPDEST PUSH2 0x2164 JUMP JUMPDEST PUSH2 0x1F70 JUMP JUMPDEST PUSH2 0x1E8A JUMP JUMPDEST PUSH2 0x1DCE JUMP JUMPDEST PUSH2 0x1D57 JUMP JUMPDEST PUSH2 0x1D0E JUMP JUMPDEST PUSH2 0x1CCA JUMP JUMPDEST PUSH2 0x1C8C JUMP JUMPDEST PUSH2 0x1B94 JUMP JUMPDEST PUSH2 0x1AE6 JUMP JUMPDEST PUSH2 0x1A3E JUMP JUMPDEST PUSH2 0x19F6 JUMP JUMPDEST PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x18B7 JUMP JUMPDEST PUSH2 0x188D JUMP JUMPDEST PUSH2 0x1841 JUMP JUMPDEST PUSH2 0x17B2 JUMP JUMPDEST PUSH2 0x1781 JUMP JUMPDEST PUSH2 0x12C6 JUMP JUMPDEST PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x1220 JUMP JUMPDEST PUSH2 0x11D0 JUMP JUMPDEST PUSH2 0x11A2 JUMP JUMPDEST PUSH2 0x1138 JUMP JUMPDEST PUSH2 0x10F2 JUMP JUMPDEST PUSH2 0xFD2 JUMP JUMPDEST PUSH2 0xE7C JUMP JUMPDEST PUSH2 0xDDC JUMP JUMPDEST PUSH2 0xD94 JUMP JUMPDEST PUSH2 0xC3E JUMP JUMPDEST PUSH2 0xB38 JUMP JUMPDEST PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x9D2 JUMP JUMPDEST PUSH2 0x8F0 JUMP JUMPDEST PUSH2 0x681 JUMP JUMPDEST PUSH2 0x63E JUMP JUMPDEST PUSH2 0x59C JUMP JUMPDEST PUSH2 0x572 JUMP JUMPDEST PUSH2 0x483 JUMP JUMPDEST PUSH2 0x313 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x2BB JUMP JUMPDEST JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x303 DUP2 PUSH2 0x2BB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x310 DUP2 PUSH2 0x2BB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x362 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x32E CALLDATASIZE PUSH2 0x2EB JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x338 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x341 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x38D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x37F JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3B4 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x60 SWAP3 DUP1 MLOAD PUSH2 0x3F2 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x433 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH2 0x445 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH2 0x3E1 JUMP JUMPDEST SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x425 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x46F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x461 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH2 0x4C5 PUSH1 0x4 CALLDATALOAD PUSH2 0x4A6 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x4AE PUSH2 0x22AA JUMP JUMPDEST POP PUSH2 0x4B7 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x4C0 DUP2 PUSH2 0x2C47 JUMP JUMPDEST PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE DUP1 MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x4F0 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0xE0 PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP1 PUSH2 0x36E JUMP JUMPDEST PUSH1 0xC0 PUSH2 0x552 PUSH2 0x53F PUSH2 0x52B PUSH2 0x517 PUSH1 0x40 DUP8 ADD MLOAD SWAP6 PUSH1 0x1F NOT SWAP7 DUP8 DUP12 DUP4 SUB ADD PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x414 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD DUP7 DUP11 DUP4 SUB ADD PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP6 DUP10 DUP4 SUB ADD PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD DUP5 DUP9 DUP4 SUB ADD DUP5 DUP10 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x2CC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x58A PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x80 PUSH1 0x4 CALLDATALOAD PUSH2 0x5BB DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x5C3 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x5CC DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH2 0x5D5 DUP2 PUSH2 0x2EAB JUMP JUMPDEST PUSH2 0x602 SWAP3 SWAP2 SWAP3 PUSH32 0x0 DUP3 PUSH2 0x230E JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP2 PUSH1 0x40 MLOAD SWAP4 ISZERO ISZERO DUP5 MSTORE PUSH4 0xFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0x6A0 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x74E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x715 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x2CC JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x7F6 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2CC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x83D DUP2 PUSH2 0x80B JUMP JUMPDEST SWAP4 PUSH2 0x84B PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x77E JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x874 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x866 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x8AB DUP3 PUSH2 0x883 JUMP JUMPDEST SWAP2 PUSH2 0x8B9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x77E JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2CC JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP2 PUSH1 0x20 PUSH2 0x310 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x89F JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x3 NOT PUSH1 0x40 DUP2 CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x90E DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0xE0 SWAP1 DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x937 PUSH2 0x7A1 JUMP JUMPDEST SWAP1 PUSH2 0x944 DUP4 PUSH1 0x4 ADD PUSH2 0x800 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x24 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x44 DUP4 ADD CALLDATALOAD DUP5 DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x96C SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP7 ADD ADD PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x64 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x84 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x991 PUSH1 0xA4 DUP5 ADD PUSH2 0x2E0 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC4 DUP4 ADD CALLDATALOAD SWAP4 DUP5 GT PUSH2 0x2CC JUMPI PUSH2 0x9B8 PUSH2 0x9C2 SWAP4 PUSH1 0x4 PUSH2 0x564 SWAP7 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x232B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x9EF DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x9F7 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xA00 DUP2 PUSH2 0x2C47 JUMP JUMPDEST PUSH2 0xA4D PUSH1 0x20 PUSH1 0x80 PUSH2 0xA10 DUP5 PUSH2 0x2C94 JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x40 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x24 DUP4 ADD MSTORE SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH2 0x564 SWAP3 PUSH2 0x9C2 SWAP3 PUSH0 SWAP3 PUSH2 0xA9A JUMPI JUMPDEST POP PUSH2 0xA93 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x3088 JUMP JUMPDEST PUSH2 0xA93 SWAP2 SWAP3 POP PUSH2 0xAC1 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAC8 JUMPI JUMPDEST PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2457 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xA77 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xAAF JUMP JUMPDEST PUSH2 0x2483 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0xAF9 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xB01 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xB0A DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x310 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH1 0x80 PUSH2 0xB6E PUSH1 0x4 CALLDATALOAD PUSH2 0xB5D DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xB65 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x4C0 DUP2 PUSH2 0x2BFC JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xBA3 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xB95 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0xBD8 SWAP1 SWAP6 SWAP5 SWAP3 SWAP6 PUSH1 0x80 DUP6 MSTORE PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0xB84 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP5 DUP2 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x20 DUP1 DUP9 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP8 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xC21 JUMPI POP POP POP POP DUP5 PUSH2 0xC13 SWAP2 DUP5 PUSH2 0x310 SWAP7 SWAP8 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP8 DUP3 PUSH2 0xC33 PUSH1 0x1 SWAP3 DUP12 MLOAD PUSH2 0x3E1 JUMP JUMPDEST SWAP10 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0xBF2 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xC5B DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xC63 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xC6C DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0xCA4 PUSH2 0xC9F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x248E JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP3 PUSH2 0xCB1 DUP5 PUSH2 0x2503 JUMP JUMPDEST SWAP4 PUSH2 0xCBB DUP2 PUSH2 0x2551 JUMP JUMPDEST SWAP2 PUSH2 0xCC5 DUP3 PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xCE0 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x564 DUP9 DUP9 DUP13 DUP13 DUP6 PUSH2 0xBC0 JUMP JUMPDEST DUP1 PUSH2 0xCF5 PUSH1 0x1 SWAP3 DUP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xD4C PUSH2 0xD47 DUP11 PUSH2 0xD32 PUSH2 0xD25 DUP7 PUSH2 0xD1F DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x25D4 JUMP JUMPDEST PUSH2 0xD56 DUP4 DUP13 PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0xD61 DUP3 DUP12 PUSH2 0x25AF JUMP JUMPDEST POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD7F DUP4 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH1 0x80 SHR PUSH2 0xD8D DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0xCC8 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0xDB3 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xDBB PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO ISZERO PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0xE14 PUSH1 0x4 CALLDATALOAD PUSH2 0xDFE DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xE06 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0xE0F DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH2 0x2EAB JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x2CC JUMPI PUSH2 0xE78 SWAP2 PUSH1 0x4 ADD PUSH2 0xE1F JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 DUP1 PUSH2 0xE8C CALLDATASIZE PUSH2 0xE4D JUMP JUMPDEST SWAP1 PUSH2 0xE95 PUSH2 0x30AC JUMP JUMPDEST PUSH2 0xE9D PUSH2 0x2BA2 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP4 DUP2 MSTORE SUB SWAP1 DUP3 CALLER GAS CALL PUSH2 0xEB9 PUSH2 0x2613 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xF06 JUMPI SWAP1 PUSH2 0xECF DUP2 PUSH2 0xF02 SWAP4 CALLER PUSH2 0x3140 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E79 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x4 DUP2 MLOAD LT PUSH2 0xF85 JUMPI PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MLOAD AND SUB PUSH2 0x3131 JUMPI PUSH32 0x28F9554100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH2 0xFC4 PUSH2 0x310 SWAP4 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xFEF DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0xFF7 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1000 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x10CA JUMPI POP POP POP PUSH2 0x1051 SWAP3 POP SUB DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH2 0x105D DUP3 MLOAD DUP1 SWAP3 PUSH2 0x31CC JUMP JUMPDEST SWAP2 PUSH2 0x1067 DUP3 PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x1080 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x564 DUP9 DUP9 DUP4 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x10B9 PUSH2 0x10B4 PUSH2 0xD47 PUSH2 0x10A7 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xD32 PUSH2 0xD25 DUP7 DUP11 PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x321E JUMP JUMPDEST PUSH2 0x10C3 DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x106A JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP3 AND AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP PUSH1 0x20 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x103B JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x110A PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1198 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x1164 CALLDATASIZE PUSH2 0x2EB JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x116E PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1177 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x11BA PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x1218 PUSH1 0x4 CALLDATALOAD PUSH2 0x11F2 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x11FE DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x120B DUP4 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1213 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x32FA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1245 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x124D PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x1218 PUSH1 0x4 CALLDATALOAD PUSH2 0x1286 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x128E PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x12E3 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x12EF DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x1313 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x823 JUMP JUMPDEST PUSH2 0x131B PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1323 PUSH2 0x337B JUMP JUMPDEST PUSH2 0x132B PUSH2 0x33CC JUMP JUMPDEST PUSH2 0x1334 DUP5 PUSH2 0x2C47 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH0 PUSH1 0x20 MSTORE PUSH2 0x135D PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x3 SHR AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1755 JUMPI PUSH2 0x137D DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH2 0x1386 PUSH2 0x2642 JUMP JUMPDEST SWAP3 PUSH2 0x13A5 PUSH2 0xC9F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE MLOAD SWAP7 PUSH2 0x13BA PUSH1 0x40 DUP7 ADD SWAP9 DUP1 DUP11 MSTORE PUSH2 0x2551 JUMP JUMPDEST SWAP8 PUSH1 0x80 DUP7 ADD SWAP9 DUP10 MSTORE PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x140D JUMPI DUP1 PUSH2 0x13FB PUSH2 0x13E5 PUSH1 0x1 SWAP4 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1406 DUP3 DUP14 MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x13C4 JUMP JUMPDEST POP DUP10 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x143B DUP2 DUP10 MLOAD PUSH2 0x1434 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x3446 JUMP JUMPDEST SWAP10 PUSH2 0x1446 DUP4 MLOAD PUSH2 0x2551 JUMP JUMPDEST SWAP6 PUSH1 0x60 DUP10 ADD SWAP7 DUP8 MSTORE PUSH2 0x14AD DUP12 PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST ISZERO ISZERO PUSH1 0xA0 DUP11 ADD DUP2 DUP2 MSTORE SWAP6 SWAP1 PUSH2 0x1728 JUMPI JUMPDEST PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x160D JUMPI PUSH2 0x14E9 DUP2 DUP16 DUP11 DUP15 DUP4 DUP15 PUSH2 0x14DB DUP15 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x15BD JUMPI JUMPDEST POP POP POP POP PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x14F4 DUP3 DUP13 PUSH2 0x25AF JUMP JUMPDEST MLOAD GT PUSH2 0x1554 JUMPI DUP1 DUP13 DUP16 DUP3 PUSH2 0x1547 DUP16 DUP3 PUSH2 0x154D SWAP5 PUSH2 0x152E PUSH2 0x151D PUSH2 0xD25 PUSH1 0x1 SWAP12 PUSH2 0x1533 SWAP7 MLOAD PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x1527 DUP5 DUP5 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x34D6 JUMP JUMPDEST PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP4 PUSH2 0x1541 DUP4 DUP7 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x26B2 JUMP JUMPDEST SWAP3 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x14BF JUMP JUMPDEST DUP14 DUP11 PUSH2 0x157D DUP4 PUSH2 0x1576 DUP16 SWAP6 PUSH2 0x1570 PUSH2 0xD25 DUP3 PUSH2 0x15BA SWAP10 MLOAD PUSH2 0x25AF JUMP JUMPDEST SWAP6 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH0 REVERT JUMPDEST PUSH2 0x15DC PUSH2 0x15EE SWAP4 PUSH2 0x15F9 SWAP6 PUSH2 0x15D2 DUP6 DUP10 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP2 ADD MLOAD SWAP1 PUSH2 0x3495 JUMP JUMPDEST PUSH2 0x15E7 DUP4 DUP4 MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x1541 DUP5 DUP5 PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x1603 DUP4 DUP4 PUSH2 0x25AF JUMP JUMPDEST MSTORE DUP11 DUP15 DUP4 DUP15 PUSH2 0x14E0 JUMP JUMPDEST POP DUP11 SWAP6 POP SWAP2 DUP8 SWAP2 DUP14 SWAP4 DUP14 PUSH2 0x1632 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x1683 JUMPI DUP1 PUSH2 0x166A DUP13 PUSH2 0x1663 DUP4 PUSH2 0x165B PUSH1 0x1 SWAP7 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3514 JUMP JUMPDEST PUSH2 0x167C DUP3 DUP13 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x1635 JUMP JUMPDEST PUSH2 0x564 DUP9 PUSH0 DUP10 DUP10 PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 DUP11 DUP11 PUSH2 0x1701 PUSH2 0x16EF DUP13 PUSH2 0x16D8 DUP14 PUSH2 0x16C4 DUP2 CALLER DUP9 DUP7 PUSH2 0x3522 JUMP JUMPDEST PUSH2 0x16CC PUSH2 0x35BD JUMP JUMPDEST PUSH2 0x1718 JUMPI JUMPDEST DUP6 DUP4 PUSH2 0x3622 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 MLOAD DUP9 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x26BF JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x170C PUSH2 0x3421 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB27 JUMP JUMPDEST PUSH2 0x1723 DUP2 DUP8 DUP6 PUSH2 0x35DF JUMP JUMPDEST PUSH2 0x16D1 JUMP JUMPDEST PUSH2 0x174B PUSH2 0x1745 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MSTORE PUSH2 0x14BD JUMP JUMPDEST DUP4 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x1799 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x1837 PUSH1 0x4 CALLDATALOAD PUSH2 0x17D4 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x17DC PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1866 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x186E PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1877 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x1218 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x2F52 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x18A5 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x18D4 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x18E1 DUP3 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x2CC JUMPI CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP4 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x190F DUP2 PUSH2 0x80B JUMP JUMPDEST SWAP5 PUSH2 0x191D PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x77E JUMP JUMPDEST DUP2 DUP7 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x24 PUSH1 0x20 DUP9 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x2CC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1989 JUMPI POP POP POP POP PUSH1 0x64 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x1960 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x823 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP4 DUP5 GT PUSH2 0x2CC JUMPI PUSH2 0x564 SWAP5 PUSH2 0x197F PUSH2 0x9C2 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x8D5 JUMP JUMPDEST SWAP4 PUSH1 0x84 CALLDATALOAD SWAP4 PUSH2 0x26EA JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x1997 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x193D JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x19C7 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x19CF PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x19D8 DUP2 PUSH2 0x2BFC JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1A1B DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1A23 PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2CC JUMPI PUSH2 0x1A6F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xE1F JUMP JUMPDEST PUSH2 0x1A77 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1A80 CALLER PUSH2 0x2BFC JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 MSTORE DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATACOPY PUSH0 PUSH1 0x40 DUP3 DUP5 ADD ADD MSTORE PUSH32 0x4BC4412E210115456903C65B5277D299A505E79F2EB852B92B1CA52D85856428 PUSH1 0x4 CALLDATALOAD SWAP3 PUSH1 0x40 DUP2 PUSH1 0x1F NOT PUSH1 0x1F CALLER SWAP7 ADD AND DUP2 ADD SUB ADD SWAP1 LOG3 STOP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x310 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xB84 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1B03 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1B0B PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1B14 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP5 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1B67 JUMPI PUSH2 0x564 DUP6 PUSH2 0x1B5B DUP2 DUP10 SUB DUP3 PUSH2 0x77E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1AD5 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP5 PUSH1 0x1 PUSH2 0x1B89 DUP2 SWAP3 DUP5 DUP10 SLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP3 AND DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP7 ADD SWAP4 SWAP3 ADD SWAP1 PUSH2 0x1B44 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x160 PUSH2 0x1BF9 PUSH1 0x4 CALLDATALOAD PUSH2 0x1BB7 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1BBF PUSH2 0x2891 JUMP JUMPDEST POP PUSH2 0x1BC8 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1BD1 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x3DDD JUMP JUMPDEST PUSH2 0x1C8A PUSH1 0x40 MLOAD DUP1 SWAP3 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x1CE2 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x1D4C PUSH1 0x4 CALLDATALOAD PUSH2 0x1D2E DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1D3A DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1D42 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 CALLER PUSH2 0x3F1B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1D7C DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1D84 PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x2DE SWAP1 SWAP3 SWAP2 SWAP3 PUSH1 0x60 DUP2 ADD SWAP4 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH1 0x4 CALLDATALOAD PUSH2 0x1DEE DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x1DF6 PUSH2 0x24E5 JUMP JUMPDEST POP PUSH2 0x1DFF PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x1E08 DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1E2E DUP5 PUSH2 0x6F4 JUMP JUMPDEST DUP3 DUP2 SLOAD AND DUP5 MSTORE DUP3 PUSH1 0x1 DUP3 ADD SLOAD AND PUSH1 0x20 DUP6 ADD MSTORE ADD SLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1D9B JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x310 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x1E54 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH2 0x1ED3 PUSH0 DUP1 PUSH2 0x1EBA PUSH2 0x1EA3 CALLDATASIZE PUSH2 0xE4D JUMP JUMPDEST PUSH2 0x1EAB PUSH2 0x30AC JUMP JUMPDEST PUSH2 0x1EB3 PUSH2 0x2BA2 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x89F JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 CALLER GAS CALL PUSH2 0x1ECC PUSH2 0x2613 JUMP JUMPDEST SWAP1 CALLER PUSH2 0x3140 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E54 JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2CC JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x2CC JUMPI PUSH1 0xA4 SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDC PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x124 SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH2 0x1A0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1F8E DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2CC JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x2CC JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x1FBA DUP4 PUSH2 0x80B JUMP JUMPDEST SWAP2 PUSH1 0x40 SWAP4 PUSH2 0x1FCB PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x77E JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x24 PUSH1 0x20 DUP7 ADD SWAP2 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 CALLDATASIZE DUP5 GT PUSH2 0x2CC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x202F JUMPI PUSH2 0x202D DUP7 DUP7 PUSH2 0x1FFF PUSH2 0x1EFE JUMP JUMPDEST PUSH2 0x2007 PUSH2 0x1EF1 JUMP JUMPDEST PUSH2 0x2010 CALLDATASIZE PUSH2 0x1F11 JUMP JUMPDEST SWAP2 PUSH2 0x2019 PUSH2 0x2D0 JUMP JUMPDEST SWAP4 PUSH2 0x2023 CALLDATASIZE PUSH2 0x1F40 JUMP JUMPDEST SWAP6 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x28F4 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x80 DUP3 CALLDATASIZE SUB SLT PUSH2 0x2CC JUMPI DUP3 PUSH1 0x80 SWAP2 DUP9 MLOAD PUSH2 0x2048 DUP2 PUSH2 0x715 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2053 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP6 ADD CALLDATALOAD PUSH2 0x2062 DUP2 PUSH2 0x7F6 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP10 DUP6 ADD CALLDATALOAD PUSH2 0x2073 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD CALLDATALOAD SWAP1 PUSH2 0x2087 DUP3 PUSH2 0x1EE7 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1FEB JUMP JUMPDEST PUSH2 0x2DE SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x180 PUSH2 0x1A0 DUP3 ADD SWAP5 PUSH2 0x20D6 DUP4 DUP3 MLOAD PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x210C PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xE0 DUP6 ADD SWAP1 PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD SWAP1 PUSH2 0x2127 PUSH2 0x100 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x215B PUSH1 0xC0 DUP3 ADD MLOAD SWAP3 PUSH2 0x2141 PUSH2 0x120 SWAP5 DUP6 DUP9 ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP8 ADD MSTORE DUP3 ADD MLOAD ISZERO ISZERO PUSH2 0x160 DUP7 ADD MSTORE JUMP JUMPDEST ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH2 0x564 PUSH2 0x21F2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2187 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x2197 DUP2 PUSH2 0x731 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21A3 DUP2 PUSH2 0x715 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH2 0x2A1A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2095 JUMP JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH2 0x225E PUSH1 0x4 CALLDATALOAD PUSH2 0x2220 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x2235 DUP4 PUSH2 0x2BB JUMP JUMPDEST PUSH2 0x223D PUSH2 0x2BA2 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xF DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2CC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x22B7 DUP3 PUSH2 0x74E JUMP JUMPDEST DUP2 PUSH0 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x60 SWAP2 DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST PUSH2 0x22E1 JUMP JUMPDEST PUSH2 0x23A8 SWAP2 PUSH2 0x2337 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2340 DUP3 PUSH2 0x2C47 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP4 PUSH2 0x2365 DUP6 PUSH0 KECCAK256 SLOAD PUSH2 0x2F52 JUMP JUMPDEST SWAP4 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP5 PUSH0 KECCAK256 SLOAD AND SWAP2 DUP5 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x2F9F JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH0 SWAP4 PUSH2 0x2425 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x23FD JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x23D5 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2448 SWAP4 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x2450 JUMPI JUMPDEST PUSH2 0x2440 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F80 JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x23BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2436 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2CC JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x247E PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x24C2 JUMPI POP POP POP PUSH2 0x2DE SWAP3 POP SUB DUP4 PUSH2 0x77E JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x24AC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x24F2 DUP3 PUSH2 0x6F4 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x250D DUP3 PUSH2 0x80B JUMP JUMPDEST PUSH2 0x251A PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x77E JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x252A DUP3 SWAP5 PUSH2 0x80B JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x253A JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x2545 PUSH2 0x24E5 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x252E JUMP JUMPDEST SWAP1 PUSH2 0x255B DUP3 PUSH2 0x80B JUMP JUMPDEST PUSH2 0x2568 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x77E JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x2578 DUP3 SWAP5 PUSH2 0x80B JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x25C3 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2582 JUMP JUMPDEST PUSH2 0x25D1 DUP3 PUSH2 0x3AA JUMP JUMPDEST MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0x25E1 DUP2 PUSH2 0x6F4 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0x25F4 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x263D JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2624 DUP3 PUSH2 0x883 JUMP JUMPDEST SWAP2 PUSH2 0x2632 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x77E JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0xA0 DUP4 PUSH1 0x60 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BDC0 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x26DC SWAP1 PUSH2 0x310 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x450 JUMP JUMPDEST SWAP4 SWAP6 SWAP5 SWAP2 SWAP6 SWAP3 SWAP1 SWAP3 PUSH2 0x26FA PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2702 PUSH2 0x337B JUMP JUMPDEST PUSH2 0x270B DUP6 PUSH2 0x2BFC JUMP JUMPDEST PUSH2 0x2713 PUSH2 0x33CC JUMP JUMPDEST PUSH2 0x271C DUP6 PUSH2 0x37F3 JUMP JUMPDEST PUSH2 0x2725 DUP6 PUSH2 0x2C94 JUMP JUMPDEST SWAP2 PUSH2 0x2734 DUP4 MLOAD PUSH1 0x1 SWAP1 DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x285C JUMPI PUSH2 0x279D SWAP7 SWAP8 PUSH2 0x274E PUSH1 0x20 DUP6 ADD MLOAD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x3841 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD SWAP6 DUP7 MLOAD PUSH2 0x2766 PUSH1 0xA0 DUP8 ADD SWAP2 DUP3 MLOAD SWAP1 DUP7 PUSH2 0x3870 JUMP JUMPDEST SWAP8 DUP10 PUSH2 0x2777 DUP9 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x8 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x27EB JUMPI JUMPDEST DUP10 SWAP5 SWAP3 POP DUP8 SWAP2 POP SWAP3 PUSH2 0x278F SWAP7 SWAP6 SWAP4 PUSH2 0x3A59 JUMP JUMPDEST SWAP5 DUP6 SWAP2 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xA SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x27AE JUMPI JUMPDEST POP POP POP POP PUSH2 0x310 PUSH2 0x3421 JUMP JUMPDEST PUSH2 0x27DC PUSH2 0x27CF PUSH2 0x27E2 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x3D11 JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP4 PUSH2 0x27A2 JUMP JUMPDEST SWAP2 PUSH2 0x284F SWAP2 PUSH2 0x2821 DUP10 SWAP12 DUP12 PUSH2 0x281B PUSH2 0x27CF PUSH2 0x278F SWAP13 SWAP12 SWAP10 SWAP11 SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x3916 JUMP JUMPDEST PUSH2 0x2845 PUSH2 0x283F DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP11 PUSH2 0x39EC JUMP JUMPDEST MLOAD SWAP1 MLOAD SWAP1 DUP5 PUSH2 0x3870 JUMP JUMPDEST SWAP8 DUP2 SWAP4 SWAP3 SWAP5 SWAP6 POP DUP10 PUSH2 0x277C JUMP JUMPDEST PUSH32 0x218E374700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH2 0x140 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE DUP3 PUSH2 0x120 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP5 SWAP7 SWAP3 PUSH4 0xFFFFFFFF SWAP2 SWAP7 SWAP5 SWAP3 PUSH2 0x2908 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2910 PUSH2 0x33CC JUMP JUMPDEST PUSH2 0x2918 PUSH2 0x404B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 PUSH2 0x2925 DUP10 PUSH2 0x74E JUMP JUMPDEST DUP9 MSTORE PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x60 DUP6 CALLDATASIZE SUB SLT PUSH2 0x2CC JUMPI PUSH2 0x29A1 PUSH2 0x29A8 SWAP3 PUSH2 0x29B2 SWAP7 PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0x295C DUP4 PUSH2 0x6F4 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2967 DUP2 PUSH2 0x2BB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x2977 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE ADD CALLDATALOAD PUSH2 0x2987 DUP2 PUSH2 0x2BB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 PUSH2 0x29BA JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x4537 JUMP JUMPDEST PUSH2 0x2DE PUSH2 0x3421 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x80 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH2 0x29D2 DUP2 PUSH2 0x715 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 SWAP5 DUP1 CALLDATALOAD PUSH2 0x29E2 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x29F2 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH2 0x2A05 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 PUSH2 0x2A16 DUP4 PUSH2 0x1EE7 JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH2 0x2A45 SWAP1 PUSH2 0x2A26 PUSH2 0x2BA2 JUMP JUMPDEST PUSH2 0x2A2F DUP2 PUSH2 0x2BFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x310 PUSH1 0x1 PUSH2 0x2A54 DUP4 PUSH2 0x2F52 JUMP JUMPDEST SWAP3 PUSH2 0x2AFD PUSH2 0x2A61 DUP3 PUSH2 0x501F JUMP JUMPDEST PUSH2 0x2AF0 PUSH2 0x2A6D DUP5 PUSH2 0x5042 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF DUP6 PUSH1 0x5A SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP7 PUSH2 0x2A87 PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP4 PUSH2 0x2A92 PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x4 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO DUP2 MSTORE SWAP10 PUSH1 0x5 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x20 DUP13 ADD MSTORE PUSH1 0x6 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x7 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x2AD0 PUSH2 0x7BB JUMP JUMPDEST SWAP11 DUP12 MSTORE PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x40 DUP11 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x80 DUP9 ADD MSTORE JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST DUP1 DUP3 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP1 DUP3 SHR DUP3 AND ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x2 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE PUSH1 0x3 SHR AND ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2B30 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x2B9E JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2BD4 JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2C1C JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x2C69 JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2CA5 PUSH2 0x22AA JUMP JUMPDEST SWAP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x2CE0 PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0x5065 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x2CEB DUP5 PUSH2 0x2503 JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x2CFB DUP6 PUSH2 0x2551 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x2D0C DUP7 PUSH2 0x2551 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x2D20 DUP8 DUP12 MLOAD PUSH2 0x31CC JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x2D2E DUP8 PUSH2 0x2551 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x2E97 JUMPI JUMPDEST POP DUP4 PUSH2 0x2E85 JUMPI JUMPDEST DUP13 PUSH0 JUMPDEST DUP12 DUP2 LT PUSH2 0x2D68 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x2DAF DUP5 PUSH2 0x2D9B DUP2 PUSH2 0x2D8D PUSH2 0xD47 DUP16 DUP16 PUSH2 0xD25 DUP6 PUSH2 0xD32 SWAP3 MLOAD PUSH2 0x25AF JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x2DA9 DUP4 DUP4 PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0x25AF JUMP JUMPDEST POP PUSH2 0x2DB9 DUP2 PUSH2 0x321E JUMP JUMPDEST PUSH2 0x2DC4 DUP6 DUP14 MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0x2DE2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x52B4 JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x2E78 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x2E5A JUMPI JUMPDEST POP POP PUSH2 0x2E0B JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD DUP14 SWAP1 PUSH2 0x2D52 JUMP JUMPDEST DUP3 PUSH2 0x2E2E SWAP3 PUSH2 0x2E25 DUP3 PUSH2 0x2E1E DUP9 MLOAD PUSH2 0x5042 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x581F JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x2E3E JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x2DFD JUMP JUMPDEST PUSH2 0x2E51 SWAP4 PUSH2 0x2E4B SWAP2 PUSH2 0x26B2 JUMP JUMPDEST SWAP2 PUSH2 0x52B4 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x2E35 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x2E67 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x2E70 DUP2 PUSH2 0x3AA JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x2DF6 JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x2E03 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x2D4F JUMP JUMPDEST PUSH2 0x2EA2 SWAP2 SWAP5 POP PUSH2 0x5042 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x2D48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 SWAP4 PUSH2 0x2ED6 PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP3 DUP2 PUSH2 0x2EE3 JUMPI POP SWAP2 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2F0F PUSH32 0x0 DUP5 PUSH2 0x230E JUMP JUMPDEST AND TIMESTAMP GT ISZERO SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1 SWAP2 AND ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 MUL SWAP2 DUP1 DUP4 DIV PUSH1 0x5 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2326 JUMPI JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2DE DUP3 PUSH2 0x1EE7 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH1 0x20 DUP3 MLOAD PUSH2 0x2F99 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2A16 PUSH2 0x303F PUSH1 0x40 SWAP4 SWAP7 SWAP6 SWAP5 SWAP7 PUSH1 0x60 DUP5 MSTORE DUP1 MLOAD PUSH2 0x2FBB DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xC0 PUSH2 0x2FE5 DUP7 DUP4 ADD MLOAD PUSH1 0xE0 PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0x140 DUP8 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 ADD MLOAD DUP3 DUP8 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xE0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA0 DUP3 ADD MLOAD AND PUSH2 0x100 DUP8 ADD MSTORE ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP6 DUP4 SUB ADD PUSH2 0x120 DUP7 ADD MSTORE PUSH2 0x1E54 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST DUP2 ISZERO PUSH2 0x305B JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI PUSH2 0x310 SWAP2 PUSH2 0x3051 JUMP JUMPDEST ORIGIN PUSH2 0x3109 JUMPI PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH2 0x30E1 JUMPI PUSH1 0x1 PUSH32 0x0 TSTORE JUMP JUMPDEST PUSH32 0x7A19888600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xF85 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST SWAP1 PUSH2 0x317D JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x3155 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x31C3 JUMPI JUMPDEST PUSH2 0x318E JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x3186 JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0x31DC DUP3 PUSH2 0x2551 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x31F0 JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH2 0x31FC DUP4 PUSH2 0x2F29 JUMP JUMPDEST SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x2326 JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0x3217 DUP3 DUP8 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x31E3 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3229 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x3232 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP1 PUSH2 0x3245 JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3251 PUSH1 0x1 SWAP3 PUSH2 0x3AA JUMP JUMPDEST SUB PUSH2 0x32D2 JUMPI PUSH1 0x20 PUSH2 0x327C PUSH2 0x3270 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x32B9 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x310 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0x3337 JUMPI POP POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 JUMP JUMPDEST PUSH2 0x3377 SWAP4 PUSH2 0x3361 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x33A4 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x33F9 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x3452 DUP5 MLOAD PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x348F JUMPI DUP1 PUSH2 0x347E DUP6 PUSH2 0x3479 DUP7 PUSH2 0x3473 PUSH1 0x1 SWAP7 DUP9 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x2F3F JUMP JUMPDEST PUSH2 0x3051 JUMP JUMPDEST PUSH2 0x3488 DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x3455 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 PUSH2 0x349F SWAP2 PUSH2 0x2F3F JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x34E0 SWAP1 PUSH2 0x50BC JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x2326 JUMPI PUSH2 0x2DE SWAP2 PUSH0 SUB SWAP1 PUSH2 0x5111 JUMP JUMPDEST SWAP1 PUSH2 0x310 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x5218 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 SWAP3 SWAP4 PUSH2 0x3532 DUP3 DUP3 DUP6 PUSH2 0x32FA JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SUB PUSH2 0x3562 JUMPI JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x3580 JUMPI SWAP5 PUSH2 0x3576 SWAP5 SWAP6 SUB SWAP3 PUSH2 0x3F1B JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x355A JUMP JUMPDEST DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0x35C7 JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2326 JUMPI JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0x3109 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3613 SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2326 JUMPI SSTORE JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x37BE JUMPI PUSH2 0x3655 DUP6 PUSH2 0x3361 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x3781 JUMPI DUP4 SWAP1 SUB PUSH2 0x367F DUP7 PUSH2 0x3361 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x36A5 DUP4 PUSH2 0x369F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x26B2 JUMP JUMPDEST PUSH2 0x36AE DUP2 PUSH2 0x527C JUMP JUMPDEST PUSH2 0x36C9 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x3763 SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x3768 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST DUP1 PUSH2 0x3775 PUSH2 0x377B SWAP3 PUSH2 0x76A JUMP JUMPDEST DUP1 PUSH2 0x568 JUMP JUMPDEST PUSH0 PUSH2 0x3752 JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x37FB PUSH2 0x404B JUMP JUMPDEST PUSH2 0x3804 DUP2 PUSH2 0x2EAB JUMP JUMPDEST POP PUSH2 0x380C JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SUB PUSH2 0x3848 JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 DUP2 MLOAD DUP2 MLOAD DUP2 DUP6 EQ SWAP2 DUP3 ISZERO SWAP3 PUSH2 0x38F6 JUMPI JUMPDEST POP POP PUSH2 0x3848 JUMPI PUSH2 0x3894 DUP4 PUSH2 0x2551 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x38A6 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x38E4 PUSH2 0x38BF PUSH1 0x1 SWAP5 DUP7 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x38DF PUSH2 0x38CD DUP6 DUP11 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x38D8 DUP7 DUP11 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2F3F JUMP JUMPDEST PUSH2 0x2F3F JUMP JUMPDEST DIV PUSH2 0x38EF DUP3 DUP10 PUSH2 0x25AF JUMP JUMPDEST MSTORE ADD PUSH2 0x3897 JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0x3885 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2CC JUMPI MLOAD PUSH2 0x310 DUP2 PUSH2 0x1EE7 JUMP JUMPDEST SWAP1 PUSH2 0x397A SWAP3 PUSH2 0x3968 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x1C149E2800000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x24 DUP6 ADD MSTORE PUSH2 0x1E54 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x39BD JUMPI JUMPDEST POP ISZERO PUSH2 0x3995 JUMPI JUMP JUMPDEST PUSH32 0x6061292500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x39DF SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x39E5 JUMPI JUMPDEST PUSH2 0x39D7 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3901 JUMP JUMPDEST PUSH0 PUSH2 0x398D JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x39CD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3A04 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x3A53 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x3A33 PUSH2 0x3A2D DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x321E JUMP JUMPDEST PUSH2 0x3A41 DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x52B4 JUMP JUMPDEST ADD PUSH2 0x39F6 JUMP JUMPDEST SWAP3 SWAP2 SWAP6 SWAP7 SWAP5 SWAP7 PUSH2 0x3A7A DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3B58 JUMPI PUSH2 0xD25 DUP3 PUSH2 0x3A98 SWAP3 PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x3AA8 PUSH2 0x3270 PUSH2 0xD25 DUP5 DUP10 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 DUP2 SUB PUSH2 0x3B04 JUMPI POP SWAP1 PUSH2 0x3AD2 PUSH1 0x1 SWAP3 PUSH2 0x3ACB DUP4 DUP12 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5301 JUMP JUMPDEST PUSH2 0x3AEB DUP12 PUSH2 0x3AE4 DUP4 PUSH2 0x1576 DUP2 DUP14 PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5218 JUMP JUMPDEST PUSH2 0x3AFD DUP3 DUP12 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x3A7D JUMP JUMPDEST PUSH2 0x15BA SWAP1 DUP9 PUSH2 0x3B19 PUSH2 0x3270 PUSH2 0xD25 DUP8 DUP13 PUSH2 0x25AF JUMP JUMPDEST PUSH32 0xFFE261A100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 MSTORE DUP2 AND PUSH1 0x24 MSTORE AND PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP SWAP7 SWAP5 SWAP2 SWAP3 POP SWAP7 SWAP5 POP PUSH2 0x3B90 DUP5 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x2 SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE PUSH2 0x3BAD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x3BF3 PUSH1 0x20 DUP6 DUP4 AND SWAP8 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2466 JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH2 0x3C18 SWAP2 PUSH0 SWAP2 PUSH2 0x3CF2 JUMPI JUMPDEST POP PUSH2 0x3C13 DUP2 PUSH2 0x527C JUMP JUMPDEST PUSH2 0x2685 JUMP JUMPDEST SWAP8 PUSH2 0x3C22 DUP3 PUSH2 0x5313 JUMP JUMPDEST PUSH2 0x3C2D DUP10 DUP6 DUP5 PUSH2 0x5423 JUMP JUMPDEST DUP1 DUP10 LT PUSH2 0x3CC2 JUMPI POP SWAP3 DUP6 SWAP3 PUSH2 0x3C99 PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 SWAP4 PUSH2 0x3C8A PUSH1 0x20 PUSH2 0x3C80 PUSH1 0x1 SWAP11 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP9 ADD MLOAD MLOAD PUSH2 0x2551 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x26BF JUMP JUMPDEST SUB SWAP1 LOG4 PUSH32 0xCAD8C9D32507393B6508CA4A888B81979919B477510585BDE8488F153072D6F3 PUSH0 DUP1 LOG2 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP10 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x3D0B SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x3C09 JUMP JUMPDEST SWAP3 PUSH2 0x3D64 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP5 SWAP7 PUSH2 0x3D7B PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x38BE241D00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x450 JUMP JUMPDEST SWAP2 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x44 DUP6 ADD MSTORE PUSH2 0x1E54 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x3DBE JUMPI JUMPDEST POP ISZERO PUSH2 0x3D96 JUMPI JUMP JUMPDEST PUSH32 0xF23DBC600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3DD7 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x39E5 JUMPI PUSH2 0x39D7 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x3D8E JUMP JUMPDEST SWAP1 PUSH2 0x3DE6 PUSH2 0x2891 JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x1 DUP1 DUP5 DUP4 PUSH2 0x3DF8 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E01 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND DUP2 DUP6 DUP5 PUSH2 0x3E11 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E1A SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E23 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP1 DUP3 DUP7 DUP6 PUSH2 0x3E34 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E3D SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E46 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E4F SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP3 DUP1 DUP8 DUP7 PUSH2 0x3E60 PUSH1 0xC PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E69 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E72 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E7B SWAP1 PUSH2 0x2F17 JUMP JUMPDEST PUSH2 0x3E84 SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP5 DUP2 DUP9 DUP2 DUP2 DUP5 PUSH1 0xC AND SHR AND SWAP3 PUSH1 0xC PUSH2 0x3E9E SWAP1 PUSH2 0x2F17 JUMP JUMPDEST AND SHR AND SWAP2 PUSH2 0x3EAA PUSH2 0x7C8 JUMP JUMPDEST PUSH1 0x9 DUP11 SWAP1 SHR DUP3 AND ISZERO ISZERO DUP2 MSTORE SWAP9 PUSH1 0x8 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0xA DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0xB SHR AND ISZERO ISZERO PUSH1 0x60 DUP10 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP8 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x4016 JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x3FE1 JUMPI DUP5 PUSH2 0x3F5F DUP6 PUSH2 0x3361 DUP7 PUSH2 0x3361 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x3763 SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x3747 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x40A9 JUMPI JUMPDEST PUSH2 0x4081 JUMPI JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x407B JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP1 PUSH2 0x40C4 DUP3 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x40CD DUP3 PUSH2 0x3AA JUMP JUMPDEST DUP3 SLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 SWAP1 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 SWAP1 SWAP2 AND PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHL PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND OR SWAP1 ISZERO ISZERO PUSH1 0xA8 SHL PUSH22 0xFF000000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x2CC JUMPI MLOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x2CC JUMPI SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x710 JUMPI PUSH1 0x1 DUP2 ADD DUP1 DUP4 SSTORE DUP2 LT ISZERO PUSH2 0x25C3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP2 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND OR DUP3 SSTORE PUSH2 0x2DE SWAP3 PUSH1 0x2 SWAP2 SWAP1 PUSH1 0x40 SWAP1 PUSH2 0x423F DUP4 PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x1 DUP8 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD AND SWAP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x42AC JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP5 DUP3 ADD MLOAD PUSH2 0x42D3 DUP2 PUSH2 0x3AA JUMP JUMPDEST DUP4 DUP7 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x429E JUMP JUMPDEST SWAP5 SWAP4 SWAP2 PUSH2 0x2DE SWAP4 PUSH1 0x60 SWAP3 PUSH2 0x432E SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP10 MSTORE AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x428D JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x140 SWAP2 SUB SLT PUSH2 0x2CC JUMPI PUSH2 0x4370 PUSH2 0x7BB JUMP JUMPDEST SWAP1 PUSH2 0x437A DUP2 PUSH2 0x2F75 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x4388 PUSH1 0x20 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4399 PUSH1 0x40 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x43AA PUSH1 0x60 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x43BB PUSH1 0x80 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x43CC PUSH1 0xA0 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x43DD PUSH1 0xC0 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x43EE PUSH1 0xE0 DUP3 ADD PUSH2 0x2F75 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 PUSH2 0x4401 DUP2 DUP4 ADD PUSH2 0x2F75 JUMP JUMPDEST SWAP1 DUP4 ADD MSTORE PUSH2 0x4413 PUSH2 0x120 DUP1 SWAP3 ADD PUSH2 0x2F75 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP7 SWAP6 SWAP4 SWAP5 PUSH2 0x447C PUSH2 0x2DE SWAP7 PUSH4 0xFFFFFFFF PUSH2 0x220 SWAP7 PUSH2 0x4444 PUSH2 0x450A SWAP7 PUSH2 0x2A0 DUP1 DUP11 MSTORE DUP10 ADD SWAP1 PUSH2 0x428D JUMP JUMPDEST SWAP12 PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD SWAP1 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x455C PUSH2 0x4555 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 AND SWAP1 JUMP JUMPDEST PUSH2 0x4FEA JUMPI DUP1 MLOAD MLOAD PUSH1 0x2 DUP2 LT PUSH2 0x4FC2 JUMPI PUSH1 0x8 DUP2 GT PUSH2 0x4F9A JUMPI SWAP3 SWAP2 SWAP1 PUSH2 0x457F DUP5 PUSH2 0x2551 JUMP JUMPDEST PUSH0 SWAP5 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4C8D JUMPI POP POP PUSH2 0x464F SWAP3 SWAP4 SWAP5 POP PUSH1 0x80 DUP3 ADD SWAP2 PUSH2 0x45BD DUP4 MLOAD PUSH2 0x45B8 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x41BF JUMP JUMPDEST PUSH2 0x45D2 PUSH2 0x3270 PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 SWAP2 PUSH2 0x45EB DUP3 DUP8 MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x45F9 PUSH1 0x60 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH32 0x77FF76E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP7 DUP8 SWAP2 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP6 PUSH0 SWAP2 PUSH2 0x4C5A JUMPI JUMPDEST POP PUSH2 0x477B PUSH1 0xC0 DUP5 ADD SWAP2 PUSH2 0x4776 PUSH2 0x4745 DUP5 MLOAD SWAP8 PUSH2 0x472E PUSH2 0x4728 PUSH2 0x468A DUP12 MLOAD ISZERO ISZERO PUSH1 0x4 SHL PUSH1 0x1 OR SWAP1 JUMP JUMPDEST SWAP11 PUSH1 0x60 PUSH2 0x46F8 PUSH2 0x46C7 PUSH1 0x20 SWAP15 DUP16 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF SWAP1 PUSH1 0x5 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP13 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF SWAP1 PUSH1 0x6 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F SWAP1 PUSH1 0x7 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5571 JUMP JUMPDEST SWAP1 PUSH1 0x5A SWAP2 PUSH5 0xFFFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP9 PUSH2 0x4771 DUP7 DUP9 ADD SWAP11 PUSH2 0x475B DUP13 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x82 SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x5641 JUMP JUMPDEST PUSH2 0x5661 JUMP JUMPDEST SWAP4 PUSH1 0xA0 DUP5 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP10 DUP8 PUSH2 0x479D DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST AND DUP1 PUSH2 0x489E JUMPI JUMPDEST POP SWAP1 PUSH2 0x47C2 DUP2 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x47F2 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x482A SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP6 ADD SWAP5 DUP6 MLOAD PUSH2 0x4839 SWAP1 DUP12 PUSH2 0x5685 JUMP JUMPDEST MLOAD SWAP5 MLOAD SWAP8 MLOAD PUSH4 0xFFFFFFFF AND SWAP7 MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4863 SWAP2 PUSH2 0x3DDD JUMP JUMPDEST SWAP2 MLOAD SWAP3 MLOAD SWAP6 DUP7 SWAP6 CALLER SWAP10 AND SWAP8 PUSH2 0x4878 SWAP6 DUP8 PUSH2 0x441A JUMP JUMPDEST SUB PUSH32 0xBC1561EEAB9F40962E2FB827A7FF9C7CDB47A9D7C84CAEEFA4ED90E043842DAD SWAP2 LOG3 JUMP JUMPDEST PUSH2 0x48E0 SWAP2 DUP5 SWAP2 DUP10 MLOAD PUSH0 DUP10 MLOAD SWAP4 DUP12 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xB89F18200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x42FC JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x4C3D JUMPI JUMPDEST POP ISZERO PUSH2 0x4C28 JUMPI PUSH2 0x490F PUSH2 0x3270 PUSH2 0x3270 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP6 MLOAD DUP1 SWAP3 PUSH32 0xD77153A700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 PUSH1 0x4 PUSH2 0x140 SWAP6 DUP7 SWAP4 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP4 PUSH2 0x4BF9 JUMPI JUMPDEST POP POP DUP2 MLOAD ISZERO ISZERO DUP1 PUSH2 0x4BDF JUMPI JUMPDEST PUSH2 0x4B8C JUMPI SWAP1 PUSH2 0x4B5A PUSH2 0x120 PUSH2 0x49C6 PUSH2 0x4B27 PUSH2 0x4AF5 PUSH2 0x4AC3 PUSH2 0x4A91 PUSH2 0x4A5F PUSH2 0x4A2D DUP15 PUSH2 0x4A02 PUSH2 0x49F9 DUP13 DUP16 PUSH2 0x4B85 SWAP16 SWAP1 PUSH2 0x49C6 PUSH2 0x49CE SWAP3 PUSH2 0x499B DUP6 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF SWAP1 PUSH1 0x9 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP3 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF SWAP1 PUSH1 0x8 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 DUP13 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFF SWAP1 PUSH1 0xA SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF SWAP1 PUSH1 0xB SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFF SWAP1 PUSH1 0xC SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFF SWAP1 PUSH1 0xD SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xC0 DUP8 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF SWAP1 PUSH1 0xE SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP7 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFF SWAP1 PUSH1 0xF SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF SWAP1 PUSH1 0x10 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF SWAP1 PUSH1 0x11 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP10 PUSH0 PUSH2 0x47A4 JUMP JUMPDEST PUSH2 0x15BA DUP12 PUSH2 0x4BA1 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xFA93D81400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x4 MSTORE AND PUSH1 0x24 MSTORE CALLER PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x4BF3 PUSH2 0x4BEE DUP7 MLOAD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x495C JUMP JUMPDEST PUSH2 0x4C19 SWAP3 SWAP4 POP DUP1 RETURNDATASIZE LT PUSH2 0x4C21 JUMPI JUMPDEST PUSH2 0x4C11 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x435C JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x4950 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C07 JUMP JUMPDEST PUSH2 0x15BA DUP11 PUSH2 0x4BA1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x4C54 SWAP2 POP DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x39E5 JUMPI PUSH2 0x39D7 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x48F2 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x4C7D SWAP3 SWAP7 POP RETURNDATASIZE DUP8 GT PUSH2 0x4C86 JUMPI JUMPDEST PUSH2 0x4C75 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x4277 JUMP JUMPDEST SWAP5 SWAP1 SWAP5 PUSH0 PUSH2 0x4662 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4C6B JUMP JUMPDEST PUSH2 0x4C98 DUP2 DUP6 MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP7 PUSH2 0x4CAB DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 DUP3 ISZERO DUP1 ISZERO PUSH2 0x4F8F JUMPI JUMPDEST PUSH2 0x4F67 JUMPI AND DUP1 DUP3 LT PUSH2 0x4F3F JUMPI DUP2 EQ PUSH2 0x4F0A JUMPI PUSH1 0x40 SWAP1 DUP2 DUP11 ADD SWAP10 DUP11 MLOAD PUSH2 0x4CEC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 PUSH1 0x20 SWAP12 DUP13 DUP3 ADD SWAP1 DUP14 DUP3 MLOAD SWAP2 PUSH2 0x4D0B DUP4 PUSH2 0x3AA JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 PUSH1 0x60 ADD SWAP4 DUP5 MLOAD PUSH2 0x4D25 SWAP1 ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x4D2E PUSH2 0x7E9 JUMP JUMPDEST SWAP4 PUSH2 0x4D39 SWAP1 DUP6 PUSH2 0x25C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE ISZERO ISZERO DUP2 DUP8 ADD MSTORE DUP7 PUSH2 0x4D6A DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4D85 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4D8F SWAP2 PUSH2 0x40B7 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x4D9A DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x4DA3 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x4EBB JUMPI POP DUP2 ISZERO SWAP2 PUSH2 0x4EB0 JUMPI JUMPDEST POP PUSH2 0x32D2 JUMPI DUP10 SWAP2 JUMPDEST MLOAD SWAP10 DUP11 DUP1 SWAP3 PUSH32 0x313CE56700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 SWAP13 DUP14 SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP3 PUSH2 0x4E83 JUMPI JUMPDEST POP POP PUSH1 0x12 SWAP1 PUSH1 0xFF SWAP2 DUP1 DUP4 DUP4 AND GT PUSH0 EQ PUSH2 0x4E2F JUMPI DUP11 PUSH32 0x686D360700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 SWAP11 POP SWAP1 PUSH2 0x4E53 SWAP3 SWAP2 SUB AND PUSH2 0x4E4B DUP6 DUP9 PUSH2 0x25AF JUMP JUMPDEST SWAP1 PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x4E77 DUP2 PUSH2 0x4E72 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4163 JUMP JUMPDEST SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 ADD PUSH2 0x4583 JUMP JUMPDEST PUSH2 0x4EA2 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x4EA9 JUMPI JUMPDEST PUSH2 0x4E9A DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x414A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x4DF5 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4E90 JUMP JUMPDEST MLOAD ISZERO ISZERO SWAP1 POP PUSH0 PUSH2 0x4DB0 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x4EC9 DUP2 PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x4ED2 DUP2 PUSH2 0x3AA JUMP JUMPDEST SUB PUSH2 0x4EE2 JUMPI PUSH2 0x32D2 JUMPI DUP10 SWAP2 PUSH2 0x4DB8 JUMP JUMPDEST PUSH32 0xA1E9DD9D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4F4B634E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x6E8F194700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP2 DUP10 AND DUP4 EQ PUSH2 0x4CC1 JUMP JUMPDEST PUSH32 0x707BDF5800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x5ED4BA8F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xDB771C8000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5099 JUMPI POP POP POP PUSH2 0x2DE SWAP3 POP SUB DUP4 PUSH2 0x77E JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x5083 JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x50E6 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5214 JUMPI PUSH32 0x0 SWAP2 PUSH2 0x5156 DUP2 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST DUP3 DUP2 ADD SWAP3 DUP4 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x2326 JUMPI DUP3 PUSH2 0x51CA JUMPI POP PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2326 JUMPI PUSH2 0x2DE SWAP5 TSTORE PUSH2 0x588D JUMP JUMPDEST ISZERO PUSH2 0x51D9 JUMPI JUMPDEST PUSH2 0x2DE SWAP3 PUSH2 0x588D JUMP JUMPDEST PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2326 JUMPI PUSH2 0x2DE SWAP5 TSTORE SWAP3 POP PUSH2 0x51D0 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x5272 JUMPI JUMPDEST POP PUSH2 0x524A JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2326 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x5235 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0x5289 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x52F8 PUSH2 0x25D1 SWAP5 DUP1 PUSH2 0x52D7 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MSTORE PUSH2 0x38DF PUSH2 0x52E9 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH2 0x38D8 DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST PUSH2 0x530D PUSH2 0x2DE SWAP3 PUSH2 0x50BC JUMP JUMPDEST SWAP1 PUSH2 0x5111 JUMP JUMPDEST PUSH2 0x532E DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP2 SLOAD PUSH3 0xF4240 SWAP1 DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2326 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SSTORE PUSH2 0x5365 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 DUP1 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH0 DUP1 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x53AF DUP2 SWAP1 PUSH3 0xF4240 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP4 DUP2 PUSH2 0x5405 PUSH1 0x4 DUP3 ADD SWAP1 PUSH3 0xF4240 PUSH1 0x40 PUSH1 0x60 DUP5 ADD SWAP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xACF JUMPI PUSH2 0x5416 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x3775 PUSH2 0x2DE SWAP3 PUSH2 0x76A JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0x553C JUMPI PUSH2 0x545B DUP4 PUSH2 0x5455 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x35D2 JUMP JUMPDEST PUSH2 0x547A DUP6 PUSH2 0x3361 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x5489 DUP2 PUSH2 0x527C JUMP JUMPDEST PUSH2 0x54A4 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x54DD DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0x2CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x5405 JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 SWAP2 SWAP1 DUP3 JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x5635 JUMPI PUSH2 0x5589 DUP5 DUP4 PUSH2 0x25AF JUMP JUMPDEST MLOAD PUSH1 0xFF SWAP2 PUSH2 0x5596 DUP7 PUSH2 0x2F29 JUMP JUMPDEST SWAP2 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x5608 JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2326 JUMPI DUP1 DUP6 LT ISZERO PUSH2 0x5630 JUMPI POP DUP4 JUMPDEST PUSH1 0x5 SWAP1 DUP2 GT PUSH2 0x5608 JUMPI DUP2 PUSH1 0x7 SWAP2 SHR AND PUSH2 0x55E0 JUMPI PUSH1 0x1 SWAP4 PUSH1 0x1F SWAP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP4 ADD SWAP3 PUSH2 0x5576 JUMP JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x55B7 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP3 POP POP JUMP JUMPDEST PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0x23D5 JUMPI PUSH5 0x174876E800 PUSH2 0x310 SWAP3 DIV SWAP1 PUSH2 0x58A3 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x23D5 JUMPI PUSH2 0x310 SWAP2 PUSH5 0x174876E800 PUSH1 0x42 SWAP3 DIV SWAP1 PUSH2 0x58BD JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP2 PUSH2 0x5802 JUMPI JUMPDEST POP DUP4 LT PUSH2 0x57DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xACF JUMPI PUSH0 SWAP3 PUSH2 0x57BD JUMPI JUMPDEST POP POP DUP3 GT PUSH2 0x5795 JUMPI DUP2 DUP2 PUSH2 0x577F PUSH2 0x5768 PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP6 PUSH2 0x5762 PUSH2 0x5790 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x5904 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x57D3 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5713 JUMP JUMPDEST PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x5819 SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0xAC8 JUMPI PUSH2 0xAB9 DUP2 DUP4 PUSH2 0x77E JUMP JUMPDEST PUSH0 PUSH2 0x56D0 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5832 DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x5842 JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5882 SWAP6 SWAP7 POP PUSH2 0x587C SWAP4 SWAP3 PUSH2 0x5875 SWAP3 PUSH2 0x585B SWAP3 SUB PUSH2 0x3495 JUMP JUMPDEST SWAP4 PUSH1 0xA0 PUSH2 0x586C DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x25AF JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2F3F JUMP JUMPDEST SWAP1 PUSH2 0x3088 JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x583B JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x55E0 JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x5608 JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2326 JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x58FF JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x5608 JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x55E0 JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x58E1 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x23D5 JUMPI PUSH5 0x174876E800 SWAP1 DIV DUP1 PUSH1 0x18 SHR PUSH2 0x55E0 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF SWAP1 PUSH1 0x12 SHL SWAP2 AND OR SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xE8 INVALID MULMOD LOG2 PUSH11 0x403C37967F36E22EDE1AC0 0xC7 0xB1 0xE7 NOT SLOAD EXTCODEHASH 0x28 0xDF 0xA9 0x24 0xE7 TLOAD 0x4B PREVRANDAO 0xEA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"3171:37276:67:-:0;;;;;;;;;-1:-1:-1;3171:37276:67;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;-1:-1:-1;;3171:37276:67;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;29973:33;-1:-1:-1;;;;;3171:37276:67;;;:::i;:::-;3908:87;;;;:::i;:::-;8718:4:66;;;:::i;:::-;3171:37276:67;-1:-1:-1;3171:37276:67;29973:20;3171:37276;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;29973:33;3171:37276;1616:3:41;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;22690:40;3171:37276;;;;;:::i;:::-;;;:::i;:::-;;3908:87;;:::i;:::-;8882:4:66;;;:::i;:::-;22690:40:67;:::i;:::-;3171:37276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;3171:37276:67;;;;;3908:87;;:::i;:::-;3171:37276;;38573:27;3171:37276;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;28077:25:67;;;:::i;:::-;28186:47;28207:26;;;;28186:47;;:::i;:::-;3171:37276;-1:-1:-1;;;;;3171:37276:67;;;-1:-1:-1;3171:37276:67;28247:17;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;-1:-1:-1;;;;;39438:11:67;3171:37276;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;-1:-1:-1;3171:37276:67;28912:13;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;-1:-1:-1;3171:37276:67;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;30797:32;3171:37276;;;;;;;;;:::i;:::-;;;;;30797:32;:::i;:::-;3171:37276;;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;8882:4:66;;;:::i;:::-;3171:37276:67;;26213:29;26110:40;;;:::i;:::-;26213:29;;3171:37276;;26180:84;;;;3171:37276;26180:84;;3171:37276;;26180:84;;3171:37276;;;;;;:::i;:::-;26130:19;3171:37276;;;;26180:84;3171:37276;-1:-1:-1;;;;;3171:37276:67;;26180:84;;;;;;3171:37276;26180:84;26282:37;26180:84;-1:-1:-1;26180:84:67;;;3171:37276;2487:20:90;;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;2487:20:90;3171:37276:67;26282:37;;:::i;26180:84::-;2487:20:90;26180:84:67;;;;;3171:37276;26180:84;3171:37276;26180:84;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;3171:37276::-;;;;;-1:-1:-1;;3171:37276:67;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;1038:1:71;3171:37276:67;-1:-1:-1;3171:37276:67;;7916:84:46;;;3171:37276:67;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;3171:37276:67;;;;;;24124:61;:40;3171:37276;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;24124:40:67:-;:61;;3171:37276;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;-1:-1:-1;3171:37276:67;23313:18;3171:37276;;;-1:-1:-1;3171:37276:67;;23356:17;;-1:-1:-1;;;;;3171:37276:67;;;23356:11;3171:37276;;;;;;;23356:17;3171:37276;:::i;:::-;;;;23438:26;;;;:::i;:::-;23488:24;;;;:::i;:::-;23549;;;;:::i;:::-;23589:13;-1:-1:-1;23604:13:67;;;;;;3171:37276;;;;;;;;;;:::i;23619:3::-;23662:20;;3171:37276;23662:20;;3171:37276;;;;;;;;;;23662:20;3171:37276;;23711:31;:20;23732:9;;23711:20;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;23711:20;23732:9;;:::i;:::-;3171:37276;-1:-1:-1;;;;;3171:37276:67;;;23732:9;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;23711:31;3171:37276;:::i;:::-;23696:46;;;;:::i;:::-;;;;;;:::i;:::-;;1237:14:41;1460:31;;23756:46:67;;;;:::i;:::-;3171:37276;1616:3:41;3171:37276:67;23816:63;;;;:::i;:::-;3171:37276;;23589:13;;3171:37276;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;-1:-1:-1;3171:37276:67;28691:13;3171:37276;;;-1:-1:-1;3171:37276:67;;;28691:41;;3171:37276;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;7067:25:66;3171:37276:67;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;7067:25;:::i;:::-;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;37491:23;3171:37276;;;;:::i;:::-;36425:58;;;:::i;:::-;3908:87;;:::i;:::-;3171:37276;;;;;;;;;;;;;37491:23;37492:10;;;37491:23;;;;:::i;:::-;37524:718;;;;;37492:10;37639:63;37492:10;37768:26;37492:10;;37639:63;:::i;:::-;;3171:37276;;37768:26;;;;;;3171:37276;37768:26;;;:::i;:::-;;;;37524:718;3171:37276;;;;1443:21:42;1439:82;;38028:27:67;3171:37276;1530:151:42;;;;3171:37276:67;38011:44;38224:6;38007:110;38082:20;37491:23;38082:20;3171:37276;37491:23;38082:20;1439:82:42;1487:23;37491::67;1487::42;3171:37276:67;37491:23;1487::42;3171:37276:67;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;22085:11;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;:::i;:::-;22179:61;3171:37276;;22179:61;;;:::i;:::-;22263:24;;;;:::i;:::-;22303:13;-1:-1:-1;22318:13:67;;;;;;3171:37276;;;;;;;;:::i;22333:3::-;3171:37276;22381:20;22442:35;3171:37276;22381:31;:20;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;22381:20;22402:9;;;;;:::i;3171:37276::-;22442:35;:::i;:::-;22426:51;;;;:::i;:::-;3171:37276;;22303:13;;3171:37276;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;3908:87;;:::i;:::-;3171:37276;9187:17:69;2806:53:52;3171:37276:67;;;;;;;;;;;;;1237:14:41;29693:33:67;-1:-1:-1;;;;;3171:37276:67;;;:::i;:::-;3908:87;;;;:::i;:::-;8718:4:66;;;:::i;:::-;3171:37276:67;-1:-1:-1;3171:37276:67;29693:20;3171:37276;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;29693:33;3171:37276;1460:31:41;3171:37276:67;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;3908:87;;:::i;:::-;3171:37276;-1:-1:-1;;;;;31246:22:67;3171:37276;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;27132:33;3171:37276;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;3908:87;;:::i;:::-;27132:33;:::i;:::-;3171:37276;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;:::i;:::-;3908:87;;:::i;:::-;3171:37276;-1:-1:-1;3171:37276:67;5935:11;3171:37276;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;5752:26;3171:37276;;;;;:::i;:::-;3908:87;;:::i;:::-;9520:18:69;1796:196:44;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;2806:53:52;1796:196:44;;3171:37276:67;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;2707:73:66;;:::i;:::-;1083:103:50;;:::i;:::-;8882:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;;;;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;17044:44:66;3171:37276:67;-1:-1:-1;3171:37276:67;;1192:1:71;2788:189:72;958:1:71;7916:84:46;;2788:189:72;;17044:44:66;16646:28;16642:93;;32579:24:67;;-1:-1:-1;;;;;3171:37276:67;;;32579:18;3171:37276;;;;;;;32579:24;3171:37276;;;:::i;:::-;32769:17;3171:37276;32769:17;;-1:-1:-1;;;;;3171:37276:67;;;23356:11;3171:37276;;;;;;;;32753:33;;;3171:37276;32796:16;32867:31;3171:37276;32796:16;;3171:37276;;;;32867:31;:::i;:::-;32846:18;3171:37276;32846:18;;:52;;;-1:-1:-1;32983:3:67;3171:37276;;32961:20;;;;;33026;:36;:20;3171:37276;33026:20;;3171:37276;;;;;;;;;;33026:20;3171:37276;1237:14:41;1460:31;1371:127;;33026:36:67;33002:60;:18;;;:60;:::i;:::-;3171:37276;;32946:13;;32961:20;;;;;;;33099:146;33155:18;;;2487:20:90;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;2487:20:90;3171:37276:67;33099:146;;:::i;:::-;3171:37276;33658:31;3171:37276;;33658:31;:::i;:::-;33631:24;3171:37276;33631:24;;:58;;;33727;9851:16:69;;2806:53:52;9702:26:69;2574:386:44;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;2806:53:52;2574:386:44;;33727:58:67;3171:37276;;33699:25;;;3171:37276;;;33699:25;;33866:133;;32941:132;-1:-1:-1;34051:3:67;3171:37276;;34029:20;;;;;34295:16;3171:37276;;;;;;;;;;;;;;34070:207;;34051:3;34295:16;;;;;:::i;:::-;3171:37276;34314:16;;;;:::i;:::-;3171:37276;-1:-1:-1;34291:152:67;;34517:13;;;;34702:41;34517:13;;34702:41;34517:13;34535:16;34517;;3171:37276;34517:13;34727:16;34517:13;;:16;:::i;:::-;34535;;;;:::i;:::-;3171:37276;34535:16;;:::i;:::-;34727;:::i;:::-;3171:37276;34702:18;;:41;;;;;:::i;:::-;3171:37276;34702:41;:::i;:::-;;;:::i;:::-;3171:37276;;34014:13;;34291:152;34375:13;;34411:16;34375:13;34393:16;34375:13;;:16;;:13;34357:71;34375:13;;:16;:::i;:::-;34393;;:::i;:::-;3171:37276;34411:16;;:::i;:::-;3171:37276;34357:71;-1:-1:-1;34357:71:67;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;34357:71;-1:-1:-1;34357:71:67;34070:207;34149:48;34235:27;34149:16;34215:47;34149:16;;;;;:::i;:::-;3171:37276;34172:24;;3171:37276;34149:48;;:::i;:::-;34119:78;:24;;;:78;:::i;:::-;3171:37276;34235:24;:27;:::i;:::-;3171:37276;34215:47;;;;:::i;:::-;;;;;:::i;:::-;3171:37276;34070:207;;;;;;34029:20;;;;;;;;;;;35092:24;;-1:-1:-1;;;;;3171:37276:67;;;32579:18;3171:37276;;;;;;;35092:24;35132:13;-1:-1:-1;35169:3:67;3171:37276;;35147:20;;;;;35205:15;35252:51;35205:15;35281:21;35205:15;;3171:37276;35205:15;;3171:37276;;;;;;;;;;35205:15;3171:37276;35281:18;;:21;:::i;:::-;3171:37276;35252:51;;:::i;:::-;35234:15;;;3171:37276;;;;;;;;;;35234:15;3171:37276;;35132:13;;35147:20;3171:37276;35147:20;-1:-1:-1;35147:20:67;;35899:205;35147:20;;35899:205;2487:20:90;35147::67;35866:16;35147:20;35364:16;35352:10;;35364:16;;;:::i;:::-;35396:17;;:::i;:::-;35392:180;;35127:187;35866:16;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;2487:20:90;3171:37276:67;36070:24;;3171:37276;;;;;;;35899:205;;;:::i;:::-;;;;1148:1:50;;:::i;:::-;3171:37276:67;;;;;;;:::i;35392:180::-;35544:16;;;;;:::i;:::-;35392:180;;33866:133;33938:50;:21;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;33938:21;3171:37276;33938:50;:::i;:::-;3171:37276;33911:24;;3171:37276;33866:133;;16642:93:66;16697:27;;-1:-1:-1;16697:27:66;3171:37276:67;;;-1:-1:-1;16697:27:66;3171:37276:67;;;;;-1:-1:-1;;3171:37276:67;;;;;3908:87;;:::i;:::-;3171:37276;-1:-1:-1;;;;;38971:11:67;3171:37276;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;6119:58;3171:37276;;;;;:::i;:::-;3908:87;;:::i;:::-;9851:16:69;2806:53:52;9702:26:69;2574:386:44;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;2806:53:52;2574:386:44;;6119:58:67;3171:37276;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;30290:35;3171:37276;-1:-1:-1;3171:37276:67;;30290:35;:::i;3171:37276::-;;;;;-1:-1:-1;;3171:37276:67;;;;;3908:87;;:::i;:::-;3171:37276;7916:84:46;38385:15:67;3171:37276;7916:84:46;3171:37276:67;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;16384:20;3171:37276;;;;;;:::i;:::-;;;;16384:20;;:::i;3171:37276::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;1192:1:71;3171:37276:67;-1:-1:-1;3171:37276:67;;958:1:71;7916:84:46;;3171:37276:67;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;:::i;:::-;3908:87;;:::i;:::-;3171:37276;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;7916:84:46;3171:37276:67;-1:-1:-1;3171:37276:67;;7916:84:46;3171:37276:67;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;39643:10:67;8718:4:66;:::i;:::-;3171:37276:67;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;39670:47;3171:37276;;39643:10;3171:37276;39643:10;-1:-1:-1;;3171:37276:67;39643:10;3171:37276;;;;;39670:47;;;;3171:37276;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;:::i;:::-;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;-1:-1:-1;3171:37276:67;21601:11;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;25833:58;3171:37276;;;;;:::i;:::-;;;:::i;:::-;;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;25869:15;3171:37276;;;-1:-1:-1;3171:37276:67;;;25833:58;;:::i;:::-;3171:37276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;551:66:50;2806:53:52;3171:37276:67;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;3908:87;;:::i;:::-;3171:37276;9342:26:69;2806:53:52;3171:37276:67;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;27372:6;3171:37276;;;;;:::i;:::-;;;;;;:::i;:::-;3908:87;;:::i;:::-;3171:37276;;27344:10;;27372:6;:::i;:::-;3171:37276;;;27396:4;3171:37276;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;:::i;:::-;3908:87;;:::i;:::-;3171:37276;-1:-1:-1;3171:37276:67;2487:14:90;3171:37276:67;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;3908:87;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;-1:-1:-1;3171:37276:67;30543:17;3171:37276;;;-1:-1:-1;3171:37276:67;;;;;;;;;:::i;:::-;;;;;;;;30543:17;3171:37276;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;3171:37276:67;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;3510:55:99;-1:-1:-1;3171:37276:67;;;;;:::i;:::-;36425:58;;:::i;:::-;3908:87;;:::i;:::-;3171:37276;;;:::i;:::-;3462:31:99;;;;;37142:10:67;;3462:31:99;;;;:::i;:::-;37142:10:67;;3510:55:99;:::i;:::-;3171:37276:67;;;;;3462:31:99;3171:37276:67;;3462:31:99;3171:37276:67;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6754:870;3171:37276;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;6754:870;;:::i;:::-;3171:37276;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;24355:17;3171:37276;;;;;:::i;:::-;-1:-1:-1;3171:37276:67;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24355:17;:::i;:::-;3171:37276;;;;;;;:::i;:::-;;;;;-1:-1:-1;;3171:37276:67;;;;;;2620:24:90;3171:37276:67;;;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;;;;:::i;:::-;3908:87;;:::i;:::-;3171:37276;-1:-1:-1;3171:37276:67;2620:9:90;3171:37276:67;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;2620:24:90;3171:37276:67;;;;;;;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;-1:-1:-1;;;;;4888:6:67;3171:37276;;;;;;;;;;;:::i;:::-;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3908:87::-;8709:136:70;3908:87:67;;;:::i;:::-;8882:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;30972:50;3171:37276;;;;30972:50;:::i;:::-;3171:37276;;;31040:15;3171:37276;;;;;;;;;;8709:136:70;;;;;;;3171:37276:67;8709:136:70;;;;;;:::i;:::-;;;;;;;;;;3171:37276:67;;;8709:136:70;;;3908:87:67;3171:37276;;;8856:93:70;;19917:10:31;9153:38:70;;9149:109;;3908:87:67;:::o;9149:109:70:-;9214:33;3171:37276:67;9214:33:70;8709:136;3171:37276:67;9214:33:70;8856:93;8899:39;3171:37276:67;8899:39:70;8709:136;3171:37276:67;8899:39:70;8709:136;;;;;;;;;;-1:-1:-1;8709:136:70;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;3171:37276:67;;;;;;;;;;;:::o;:::-;;;;;19596:4;3171:37276;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3171:37276:67;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;3171:37276:67;;;;:::i;:::-;;;-1:-1:-1;3171:37276:67;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;3171:37276:67;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;3171:37276:67;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;3908:87::-;;;;;;;;;;;:::i;:::-;2707:73:66;;:::i;:::-;8718:4;;;:::i;:::-;1083:103:50;;:::i;:::-;16436:4:67;;;:::i;:::-;16596:40;;;:::i;:::-;3171:37276;16651:43;3171:37276;;1038:1:71;1904:184:72;7916:84:46;;;1904:184:72;;16651:43:67;16647:109;;18155:51;16785:15;;16865:21;16785:15;;;;3171:37276;;;16865:21;;:::i;:::-;17146:30;;;;;;17080:139;17190:19;;;;;;17080:139;;;:::i;:::-;3171:37276;;17234:52;3171:37276;;7916:84:46;2495:194:70;958:1:71;7916:84:46;;2495:194:70;;17234:52:67;17230:789;;3908:87;18044:96;;;;;;;;;;;;;:::i;:::-;3171:37276;;;;7916:84:46;2990:192:70;958:1:71;7916:84:46;;2990:192:70;;18155:51:67;18151:303;;3908:87;1148:1:50;;;;;;:::i;18151:303:67:-;18306:21;;18429:13;18306:21;-1:-1:-1;;;;;3171:37276:67;;;17376:15;3171:37276;;;;;;;18306:21;3171:37276;-1:-1:-1;;;;;3171:37276:67;;;18306:21;18429:13;;:::i;:::-;18151:303;;;;;;17230:789;17376:21;17857:151;17376:21;;;;;;;18044:96;17376:21;;;;;-1:-1:-1;;;;;3171:37276:67;;;17376:15;3171:37276;;;;;;;17376:21;;;:::i;:::-;17706:19;17680:24;;-1:-1:-1;;;;;3171:37276:67;;;32579:18;3171:37276;;;;;;;17680:24;17706:19;;:::i;:::-;17927:30;17975:19;;17857:151;;;:::i;:::-;17230:789;;;;;;;;;;16647:109;16717:28;3171:37276;16717:28;-1:-1:-1;;;;;3171:37276:67;;16717:28;3171:37276;;-1:-1:-1;34357:71:67;3171:37276;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3908:87::-;;;;3171:37276;3908:87;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;5562:81:66;;:::i;:::-;3171:37276:67;;;;;;:::i;:::-;;;7207:400;;;3171:37276;;;7207:400;;3171:37276;;;7207:400;;;3171:37276;7207:400;3171:37276;;;;;;7207:400;3171:37276;;7207:400;3171:37276;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;7207:400;3171:37276;;;;;;:::i;:::-;7207:400;3171:37276;;;;;;;;:::i;:::-;;;;;7207:400;;;3171:37276;-1:-1:-1;;;;;3171:37276:67;7207:400;;;3171:37276;;7207:400;3171:37276;;;:::i;:::-;7207:400;;;3171:37276;7207:400;:::i;:::-;1148:1:50;;:::i;3171:37276:67:-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::o;3908:87::-;24408:21;3908:87;;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;24408:21;3171:37276;24459:1166;7916:84:46;24759:35:67;;;:::i;:::-;24840:38;24459:1166;24840:38;;;:::i;:::-;24459:1166;24925:39;;;:::i;:::-;3171:37276;9470:46:72;3171:37276:67;6019:108:46;;11059:44:72;3171:37276:67;11059:44:72;;3171:37276:67;2895:125:71;;11059:44:72;6019:108:46;;3171:37276:67;;;:::i;:::-;958:1:71;7916:84:46;;;;;3567:86:72;25319:37:67;3171:37276;;7916:84:46;958:1:71;7916:84:46;;;;;3171:37276:67;;25137:473;;;3171:37276;958:1:71;7916:84:46;;;;;3171:37276:67;;25137:473;;;3171:37276;958:1:71;7916:84:46;;;;;3171:37276:67;;25137:473;;;3171:37276;;;:::i;:::-;;;;25137:473;24459:1166;;3171:37276;25137:473;24459:1166;;3171:37276;25137:473;24459:1166;;3171:37276;;;;24459:1166;;3171:37276;;24459:1166;3171:37276;;24459:1166;;;3171:37276;;24459:1166;7916:84:46;;;3171:37276:67;;24459:1166;;;3171:37276;7916:84:46;;;;;3171:37276:67;;24459:1166;;;3171:37276;958:1:71;7916:84:46;;;;;3171:37276:67;;24459:1166;;;3171:37276;958:1:71;7916:84:46;;3171:37276:67;;24459:1166;;;3171:37276;;39955:69;39999:18;;;;;;40301:144;40352:9;40348:69;;1019:819:94;40364:1:67;1019:819:94;;40364:1:67;1019:819:94;;39438:11:67;-1:-1:-1;;;;;39438:11:67;3171:37276;1019:819:94;;;40364:1:67;1019:819:94;;;;;;40364:1:67;1019:819:94;;;40364:1:67;1019:819:94;4001:99:67;-1:-1:-1;;;;;4061:6:67;3171:37276;1148:4:74;1140:31;1136:104;;4001:99:67:o;1136:104:74:-;1194:35;;;;;;8911:160:66;-1:-1:-1;;;;;3171:37276:67;;9217:15:66;3171:37276:67;9217:15:66;3171:37276:67;;7916:84:46;3171:37276:67;9217:15:66;3171:37276:67;;7916:84:46;8984:24:66;8980:85;;8911:160;:::o;8980:85::-;9031:23;9217:15;9031:23;;3171:37276:67;;9217:15:66;9031:23;9293:163;-1:-1:-1;;;;;3171:37276:67;;9604:15:66;3171:37276:67;9604:15:66;3171:37276:67;;1038:1:71;3171:37276:67;9604:15:66;3171:37276:67;;7916:84:46;;;9367:25:66;9363:87;;9293:163;:::o;9363:87::-;9415:24;9604:15;9415:24;;3171:37276:67;;9604:15:66;9415:24;12436:323;;-1:-1:-1;;;;;3171:37276:67;;:::i;:::-;;;-1:-1:-1;3171:37276:67;12587:18:66;3171:37276:67;;;;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;12660:14:66;3171:37276:67;;;-1:-1:-1;3171:37276:67;;12694:11:66;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;;;;;;;1947:15:73;;3171:37276:67;;:::i;:::-;1947:24:73;;2002:26;;;:::i;:::-;1981:18;;;;:47;;;2061:24;;;:::i;:::-;2038:20;;;;:47;;;2127:24;;;:::i;:::-;2095:29;;;;;;:56;2194:74;3171:37276:67;;;2194:74:73;:::i;:::-;2161:30;;;:107;2300:24;;;:::i;:::-;2278:19;;;:46;;;3171:37276:67;;1038:1:71;;7916:84:46;1038:1:71;7916:84:46;;;;2365:119:73;;;;12436:323:66;2365:190:73;;;;12436:323:66;2571:13:73;-1:-1:-1;2586:13:73;;;;;;12436:323:66;;;;;;;;;;;;;:::o;2601:3:73:-;2663:15;;;;;;;2755:33;2663:15;2720:20;2663:15;3171:37276:67;2649:33:73;2663:15;;:18;:15;:18;:15;;:18;:::i;3171:37276:67:-;2720:20:73;3171:37276:67;;;;;;;;;;2720:20:73;3171:37276:67;2755:18:73;;:33;;;;;:::i;:::-;;;:::i;:::-;;2827:23;;;:::i;:::-;2802:48;:19;;;:48;:::i;:::-;3171:37276:67;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;3171:37276:67;;;;3059:78:73;;3800:23;;3171:37276:67;;;3800:69:73;;;;2601:3;3977:660;;;;2601:3;;;;;;2571:13;3171:37276:67;2571:13:73;;;;3977:660;3171:37276:67;4236:195:73;3171:37276:67;4157:23:73;3171:37276:67;4062:56:73;3171:37276:67;;4062:56:73;:::i;:::-;4157:20;;:23;:::i;:::-;3171:37276:67;;;4236:195:73;;:::i;:::-;4454:30;;4450:173;;3977:660;;;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;:::i;:::-;4450:173;;;;;;3800:69;3171:37276:67;;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;;3059:78;3114:8;;;;;;;;;;2365:190;3171:37276:67;;;;-1:-1:-1;958:1:71;7916:84:46;1192:1:71;7916:84:46;3171:37276:67;2365:190:73;;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;7222:480:66;-1:-1:-1;;;;;3171:37276:67;7336:15:66;3171:37276:67;7336:15:66;3171:37276:67;;;7336:15:66;3171:37276:67;;7916:84:46;;;958:1:71;7916:84:46;;3171:37276:67;11059:44:72;;;3171:37276:67;2895:125:71;;11059:44:72;6019:108:46;;7592:82:66;;;;7584:111;;7222:480;:::o;7592:82::-;7648:26;;7627:47;7648:26;7627:47;;:::i;:::-;3171:37276:67;7608:15:66;:66;;7584:111;7222:480;:::o;958:1:71:-;3171:37276:67;;958:1:71;3171:37276:67;958:1:71;;3171:37276:67;958:1:71;;;;:::o;19669:4:31:-;;3171:37276:67;19669:4:31;;;;;;3171:37276:67;19669:4:31;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;6731:255:72:-;6019:108:46;6731:255:72;958:1:71;6019:108:46;;19669:4:31;;;;;;;;;;;;;;;;6731:255:72;:::o;3171:37276:67:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;;;;;;465:4:47;;;;;;;:::o;:::-;;;;;;;;;;1320:325;;465:4;19669::31;;;;;;;;;;;;;;;1625:13:47;;;:::i;36489:409:67:-;859:9:38;36531:114:67;;3171:37276;36679:15;3171:37276;7916:84:46;36722:71:67;;3171:37276;9187:17:69;3051:52:52;36489:409:67:o;36722:71::-;36765:17;36572:5;36765:17;;36572:5;36765:17;36531:114;36600:34;36572:5;36600:34;;36572:5;36600:34;1741:504:42;3171:37276:67;;1881:21:42;:17;;2008:160;;;;;;4625:582:99;;4797:8;;-1:-1:-1;3171:37276:67;;5874:21:99;:17;;6046:142;;;;;;5870:383;6225:17;5894:1;6225:17;;5894:1;6225:17;4793:408;3171:37276:67;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;3171:37276:67;5121:24:99;3171:37276:67;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;;9628:806:72;;3171:37276:67;9811:24:72;;;:::i;:::-;9470:46;3171:37276:67;6019:108:46;;-1:-1:-1;9952:13:72;;;;;;10406:21;;;9628:806;:::o;9967:3::-;6019:108:46;10054:42:72;;;;:::i;:::-;6019:108:46;;3267:1:71;;;;;;3171:37276:67;3267:1:71;;;10348:37:72;;;;:::i;:::-;3171:37276:67;;9937:13:72;;7436:424:73;3171:37276:67;;;;;:::i;:::-;;;;:::i;:::-;7589:31:73;;;7636:21;;465:4:47;7585:269:73;7436:424::o;7585:269::-;3171:37276:67;;7691:19:73;3171:37276:67;;:::i;:::-;7678:32:73;7691:19;;7733:22;:30;3171:37276:67;7733:22:73;:32;:22;;3171:37276:67;-1:-1:-1;;;;;3171:37276:67;;;;-1:-1:-1;;;;;3171:37276:67;;;7733:30:73;3171:37276:67;;7733:32:73;;;;3171:37276:67;7733:32:73;;;;;;;;;3171:37276:67;7733:32:73;;;7726:39;7674:180;7436:424::o;7733:32::-;;;;:22;:32;:22;:32;;;;;;;:::i;7674:180::-;7803:40;3171:37276:67;7803:40:73;;3171:37276:67;7803:40:73;2657:309:90;-1:-1:-1;;;;;3171:37276:67;2657:309:90;3171:37276:67;;;;;;2822:16:90;3171:37276:67;;2854:24:90;;;;2861:17;2854:24;:::o;2818:142::-;2916:33;3171:37276:67;2916:24:90;3171:37276:67;;;;2916:11:90;3171:37276:67;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;2916:24:90;3171:37276:67;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;2916:33:90;3171:37276:67;2909:40:90;:::o;2786:145:66:-;9187:17:69;2806:53:52;3171:37276:67;2837:88:66;;2786:145::o;2837:88::-;2894:20;-1:-1:-1;2894:20:66;;-1:-1:-1;2894:20:66;1192:349:50;551:66;2806:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;1316:93::-;1368:30;-1:-1:-1;1368:30:50;;-1:-1:-1;1368:30:50;1547:106;1640:5;551:66;3051:52:52;1547:106:50:o;4619:1444:56:-;;;5749:30;3171:37276:67;;5749:30:56;:::i;:::-;5794:13;5806:1;5830:3;3171:37276:67;;5809:19:56;;;;;6003:11;6002:44;6003:11;:25;:11;;3171:37276:67;6003:11:56;;;:::i;:::-;3171:37276:67;6003:25:56;:::i;:::-;6002:44;:::i;:::-;5986:60;;;;:::i;:::-;3171:37276:67;;5794:13:56;;5809:19;;;;;4619:1444::o;887:427:47:-;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;;;;;;;;;;887:427;:::o;3450:119:66:-;;3544:17;3450:119;3544:17;:::i;:::-;3171:37276:67;;;;;;3543:18:66;3171:37276:67;-1:-1:-1;3171:37276:67;3543:18:66;;:::i;1736:177:41:-;;1848:58;1736:177;1616:3;3171:37276:67;1848:58:41;;:::i;8289:494:90:-;;;;;;8422:32;;;;;:::i;:::-;8488:17;8468:37;;8464:313;;8289:494;;;;;;;:::o;8464:313::-;8525:25;;;8521:132;;3171:37276:67;8726:25:90;3171:37276:67;;;8726:25:90;;:::i;:::-;8464:313;;;;;;;8521:132;8577:61;;-1:-1:-1;;;;;8577:61:90;;;;3171:37276:67;8577:61:90;3171:37276:67;;;;;;8577:61:90;;17101:159:66;859:9:38;:23;17174:79:66;;;17101:159;:::o;17174:79::-;3171:37276:67;7916:84:46;17211:15:66;3171:37276:67;7916:84:46;3171:37276:67;17101:159:66;:::o;3171:37276:67:-;;;;;;;;;;:::o;3162:428:90:-;;859:9:38;3337:114:90;;-1:-1:-1;;;;;3545:28:90;3171:37276:67;;3378:5:90;3171:37276:67;3545:9:90;3171:37276:67;;;3378:5:90;3171:37276:67;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;3545:28:90;3171:37276:67;;;;;;;;;;;3162:428:90:o;5216:1180::-;;;-1:-1:-1;;;;;3171:37276:67;;;5298:18:90;;;5294:80;;5409:21;:15;;;-1:-1:-1;;;;;3171:37276:67;;;5409:9:90;3171:37276:67;;;;;;;5409:21:90;3171:37276:67;5444:23:90;;;5440:115;;3171:37276:67;;;5589:21:90;:15;;;-1:-1:-1;;;;;3171:37276:67;;;5409:9:90;3171:37276:67;;;;;;;5589:21:90;3171:37276:67;5681:29:90;:20;;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;5681:20:90;3171:37276:67;5681:29:90;:::i;:::-;5751:14;;;:::i;:::-;5777:20;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;5777:20:90;3171:37276:67;;6113:62:90;;;;;;3171:37276:67;;;6113:62:90;;-1:-1:-1;;;;;3171:37276:67;;;6113:62:90;;;3171:37276:67;5314:1:90;3171:37276:67;;;;;;;;;;;;5314:1:90;6349:40;;;;5314:1;3171:37276:67;;;;;6113:62:90;;;;;;;;;5216:1180;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;6349:40:90;;;;5216:1180::o;6113:62::-;;;;;;:::i;:::-;;;:::i;:::-;;;;5440:115;5490:54;5314:1;5490:54;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;-1:-1:-1;34357:71:67;5294:80:90;5339:24;5314:1;5339:24;-1:-1:-1;;;;;3171:37276:67;;16717:28;3171:37276;;-1:-1:-1;34357:71:67;5894:129:66;;;:::i;:::-;7067:25;;;:::i;:::-;6800:73;;;5894:129;:::o;6800:73::-;-1:-1:-1;;;;;6846:16:66;;-1:-1:-1;6846:16:66;3171:37276:67;6846:16:66;3171:37276:67;;-1:-1:-1;6846:16:66;1418:149:40;1500:6;1496:65;;1418:149::o;1496:65::-;1529:21;;;;;;6714:614:43;;;3171:37276:67;;;;;;;1666:6:40;;;;;;:16;;;6714:614:43;1662:75:40;;;;7101:21:43;;;:::i;:::-;7138:13;7150:1;7153:10;;;;;;7299:22;;;;;6714:614;:::o;7165:3::-;7205:10;465:4:47;838:5;7205:10:43;3171:37276:67;7205:10:43;;;:::i;:::-;3171:37276:67;1946:22:43;7245:17;;;;:::i;:::-;3171:37276:67;7264:13:43;;;;:::i;:::-;3171:37276:67;1946:22:43;;:::i;:::-;838:5:47;:::i;:::-;465:4;7184:94:43;;;;:::i;:::-;3171:37276:67;;7138:13:43;;1666:16:40;1676:6;;;-1:-1:-1;1666:16:40;;;;3171:37276:67;;;;;;;;;;;;;:::i;20684:329:70:-;;3171:37276:67;20684:329:70;3171:37276:67;-1:-1:-1;;;;;;20857:66:70;20684:329;3171:37276:67;;20857:66:70;;;;;;;3171:37276:67;20857:66:70;;3171:37276:67;20857:66:70;;;3171:37276:67;;;;;;:::i;:::-;;-1:-1:-1;;3171:37276:67;;;;;;;;;:::i;:::-;20857:66:70;3171:37276:67;;20857:66:70;;;;;;;-1:-1:-1;20857:66:70;;;20684:329;3171:37276:67;;20853:154:70;;20684:329::o;20853:154::-;20955:41;-1:-1:-1;20955:41:70;20857:66;-1:-1:-1;20955:41:70;20857:66;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;6574:856:73;6819:15;;;;;3171:37276:67;7033:13:73;-1:-1:-1;7048:13:73;;;;;;6574:856;;;;;:::o;7063:3::-;16616:19:67;7120:18:73;7395:17;1237:14:41;7120:18:73;7107:35;7120:21;:18;;;;;:21;:::i;:::-;;7107:35;:::i;:::-;7082:60;:19;;;;;:60;:::i;:::-;3171:37276:67;;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;;1460:31:41;7395:17:73;;;:::i;:::-;3171:37276:67;7033:13:73;;18466:2486:67;;;;;;;18855:24;;-1:-1:-1;;;;;3171:37276:67;;;32579:18;3171:37276;;;;;;;18855:24;18895:13;18907:1;18938:3;18914:15;;;;3171:37276;;18910:26;;;;;18978:18;;;;;:::i;:::-;19089:24;19104:9;;;;;:::i;19089:24::-;-1:-1:-1;;;;;3171:37276:67;;19089:24;;;19085:132;;19298:17;;;3171:37276;19298:17;;;;;:::i;:::-;3171:37276;19298:17;;:::i;:::-;19426:80;19461:17;19480:25;19461:17;;;;;:::i;19480:25::-;3171:37276;19426:80;;:::i;:::-;19408:15;;;3171:37276;;;;;;;;;;19408:15;3171:37276;;18895:13;;19085:132;19140:62;19169:9;;19161:18;19169:9;;;;;:::i;19161:18::-;19140:62;18907:1;19140:62;-1:-1:-1;;;;;3171:37276:67;;;19140:62;3171:37276;;;;;;;;;;;18910:26;;;;;;;;;;;19553:48;3171:37276;;8470:156:46;;2094:277:72;8470:156:46;;2094:277:72;;19553:48:67;3171:37276;;;19670:21;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;19670:21;3171:37276;-1:-1:-1;;;;;3171:37276:67;19788:77;18914:15;3171:37276;;;;;;19788:77;;;;3171:37276;19788:77;;;;;;:::i;:::-;;;;;;;;;;20037:42;19788:77;18907:1;19788:77;;;18890:627;19906:12;;;;:::i;:::-;20037:42;:::i;:::-;20374:13;;;;:::i;:::-;20423:12;;;;;:::i;:::-;20511:30;;;20507:119;;2487:20:90;;;;20641:210:67;;2487:20:90;20804:37:67;18914:15;2487:20:90;3171:37276:67;2487:20:90;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;2487:20:90;3171:37276:67;20818:15;;;3171:37276;20804:37;:::i;:::-;3171:37276;;;;;;;20641:210;;;:::i;:::-;;;;20924:21;18907:1;20924:21;;18466:2486::o;20507:119::-;20564:51;18907:1;20564:51;19788:77;3171:37276;;;928:3:90;3171:37276:67;928:3:90;-1:-1:-1;34357:71:67;19788:77;;;;18914:15;19788:77;18914:15;19788:77;;;;;;;:::i;:::-;;;;21457:370:70;;3171:37276:67;-1:-1:-1;;;;;;21659:79:70;21457:370;;;3171:37276:67;;;21659:79:70;;;;;;;3171:37276:67;21659:79:70;;3171:37276:67;21659:79:70;;;3171:37276:67;;;;;;:::i;:::-;;;;;;-1:-1:-1;;3171:37276:67;;;;;;;;;:::i;:::-;21659:79:70;3171:37276:67;;21659:79:70;;;;;;;-1:-1:-1;21659:79:70;;;21457:370;3171:37276:67;;21655:166:70;;21457:370::o;21655:166::-;21770:40;-1:-1:-1;21770:40:70;21659:79;-1:-1:-1;21770:40:70;21659:79;;;;;;;;;;;;;;:::i;:::-;;;;6940:1043;;3171:37276:67;;:::i;:::-;-1:-1:-1;3171:37276:67;1792:1:71;;2016:27;3171:37276:67;2091:22:71;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;3171:37276:67;7916:84:46;;2016:27:71;;;2091:22;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;2249:31;;;:::i;:::-;3171:37276:67;7916:84:46;;;2016:27:71;;;2091:22;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;2249:31;;;:::i;:::-;2341:30;;;:::i;:::-;3171:37276:67;7916:84:46;;;;2016:27:71;;2091:22;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;2249:31;;;:::i;:::-;2341:30;;;:::i;:::-;2431:34;;;:::i;:::-;3171:37276:67;7916:84:46;;;2016:27:71;;;;;958:1;3171:37276:67;7916:84:46;;;958:1:71;2091:22;;;:::i;:::-;3171:37276:67;7916:84:46;;3171:37276:67;;;:::i;:::-;958:1:71;7916:84:46;;;;;3171:37276:67;;;;7916:84:46;958:1:71;7916:84:46;;;;;3171:37276:67;;7080:896:70;;;3171:37276:67;958:1:71;7916:84:46;;;;;3171:37276:67;;7080:896:70;;;3171:37276:67;958:1:71;7916:84:46;;3171:37276:67;;7080:896:70;;;3171:37276:67;;;7080:896:70;;;3171:37276:67;;;7080:896:70;;;3171:37276:67;;;7080:896:70;;;3171:37276:67;;;7080:896:70;;;3171:37276:67;;;7080:896:70;;;3171:37276:67;;;7080:896:70;;;3171:37276:67;-1:-1:-1;;;;;3171:37276:67;7080:896:70;;;3171:37276:67;;:::o;7374:909:90:-;;;;-1:-1:-1;;;;;3171:37276:67;;;;7477:19:90;;;7473:84;;3171:37276:67;;;7571:21:90;;;7567:87;;7664:17;:33;:17;:24;:17;;;-1:-1:-1;;;;;3171:37276:67;;;7664:11:90;3171:37276:67;;;;;;;7664:33:90;3171:37276:67;;8004:60:90;;;;;;3171:37276:67;;;8004:60:90;;-1:-1:-1;;;;;3171:37276:67;;;8004:60:90;;;3171:37276:67;;;;;;;;;;;;;;;8238:38:90;;;;7494:1;3171:37276:67;;;;;8004:60:90;3171:37276:67;7567:87:90;7615:28;7494:1;7615:28;-1:-1:-1;;;;;3171:37276:67;;16717:28;3171:37276;;-1:-1:-1;34357:71:67;7473:84:90;7519:27;7494:1;7519:27;-1:-1:-1;;;;;3171:37276:67;;16717:28;3171:37276;;-1:-1:-1;34357:71:67;5694:130:66;3171:37276:67;6394:25:66;3171:37276:67;6375:15:66;:44;;:79;;;5694:130;5751:67;;5694:130::o;5751:67::-;5794:13;-1:-1:-1;5794:13:66;;-1:-1:-1;5794:13:66;6375:79;3171:37276:67;568:1:75;6423:15:66;3171:37276:67;7916:84:46;;;6375:79:66;;1913:1:69;;3171:37276:67;;;;;;:::i;:::-;;;;:::i;:::-;1913:1:69;;;;;3171:37276:67;1913:1:69;;;;;3171:37276:67;1913:1:69;;;;;;;;;;;;;;;;;;;;;3171:37276:67;;;1913:1:69;;;;;;;:::o;:::-;;;;;;;;;;3171:37276:67;;;1913:1:69;;;;;:::o;2080:2::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;2080:2:69;3171:37276:67;;2080:2:69;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;2080:2:69;;;;;;;3171:37276:67;2080:2:69;;;;;;;;3171:37276:67;2080:2:69;;;;-1:-1:-1;;;;;3171:37276:67;2080:2:69;;;;;;;;;;;3171:37276:67;2080:2:69;;;-1:-1:-1;;;;;3171:37276:67;2080:2:69;;;;;;;;;;;;;;;;;;;3171:37276:67;;2080:2:69;;3171:37276:67;2080:2:69;:::o;:::-;;3171:37276:67;;;;;;;;;;;;2080:2:69;-1:-1:-1;2080:2:69;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2080:2:69;;;3171:37276:67;;;2080:2:69;;;;3171:37276:67;;;:::i;:::-;2080:2:69;;;3171:37276:67;2080:2:69;;;;;3171:37276:67;;;2080:2:69;;;3171:37276:67;2080:2:69;;;;;3171:37276:67;;2080:2:69;;;3171:37276:67;2080:2:69;;3171:37276:67;;2080:2:69;;;;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;;2080:2:69;;;3171:37276:67;2080:2:69;;;;;;;;;;:::i;:::-;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2080:2:69;;;;;;;;;;;:::i;:::-;3171:37276:67;;;;:::i;:::-;2080:2:69;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;;3171:37276:67;2080:2:69;;;3171:37276:67;:::i;:::-;2080:2:69;;;;3171:37276:67;2080:2:69;;;;3171:37276:67;:::i;:::-;2080:2:69;;;;;:::o;:::-;;;;;;;;;3171:37276:67;2080:2:69;;;;;;;;;;;;;:::i;:::-;;;;;3171:37276:67;;2080:2:69;;;3171:37276:67;2080:2:69;;;;3171:37276:67;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;2080:2:69;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;;;;2080:2:69;;;3171:37276:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7951:7863;;9255:25:66;9217:21;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;9217:21:66;3171:37276:67;7916:84:46;;1435:182:72;;9255:25:66;8098:88:67;;8216:18;;3171:37276;1746:1:69;8255:23:67;;8251:72;;1913:1:69;8336:23:67;;8332:72;;8449:22;;;;;;:::i;:::-;9217:15:66;8517:13:67;9217:15:66;8532:13:67;;;;;;10645:19;;10970:117;10645:19;;;;;;;;2080:2:69;10645:19:67;;10619:23;;-1:-1:-1;;;;;3171:37276:67;;;10619:17;3171:37276;;;;;;;10619:23;2080:2:69;:::i;:::-;10970:52:67;3171:37276;10970:22;3171:37276;-1:-1:-1;;;;;3171:37276:67;;;10970:52;9210:22;11029:19;;:31;:19;;;:31;-1:-1:-1;;;;;3171:37276:67;;;;;11029:31;11062:24;3171:37276;9451:23;11062:24;;3171:37276;;;;;;;;;10970:117;;-1:-1:-1;;;;;3171:37276:67;;;9276:14;10970:117;;3171:37276;;;;2080:2:69;;;3171:37276:67;;;2080:2:69;;;3171:37276:67;;;;;-1:-1:-1;3171:37276:67;;9217:15:66;;3171:37276:67;;2080:2:69;;;;;10970:117:67;;;;;;;;;9217:15:66;;;10970:117:67;;;8512:2038;11250:26;12041:74;11250:26;;;;11938:72;11724:89;11250:26;;3171:37276;11760:52;6379:89:72;11188:129:67;3171:37276;;;;958:1:71;8470:156:46;10619:17:67;8470:156:46;3899:414:72;;11188:129:67;9345:19;9451:23;5826:175:72;4964:169;9345:19:67;11385:51;;;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;4964:169:72;11525:54:67;;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;5826:175:72;11651:41:67;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;6379:89:72;11760:52:67;;:::i;:::-;11724:89;3171:37276;;;;;;2539:209:46;;;;;;;10440:413:72;;11724:89:67;11881:25;11844:63;11881:25;;;2080:2:69;;;;3171:37276:67;;;;2080:2:69;11844:63:67;3171:37276;;;;;;2539:209:46;;;;;;;11205:402:72;;11844:63:67;11938:72;:::i;:::-;12041:74;:::i;:::-;12134:24;;;;3171:37276;-1:-1:-1;;;;;2080:2:69;;;;;;-1:-1:-1;;;;;3171:37276:67;;;2080:2:69;3171:37276:67;12134:38;12130:2933;;8512:2038;15077:21;;;;;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;15077:21;3171:37276;2080:2:69;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;;;;;3171:37276:67;15129:21;;-1:-1:-1;;;;;3171:37276:67;;;17376:15;3171:37276;;;;;;;15129:21;:56;;;2080:2:69;-1:-1:-1;;;;;3171:37276:67;2080:2:69;;;;;;;;15129:56:67;15345:24;;3171:37276;;;15345:24;;;;:::i;:::-;15553:18;3171:37276;;2080:2:69;;3171:37276:67;;15662:19;;2080:2:69;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;;;;;3171:37276:67;15695:62;;;:::i;:::-;15771:26;;3171:37276;;15529:10;;;;3171:37276;;15483:324;;;;;:::i;:::-;;;;;7951:7863::o;12130:2933::-;12311:227;12446:18;;;;;9217:15:66;12490:26:67;;3171:37276;;;12311:227;;;;;;;3171:37276;12311:227;;12380:10;9276:14;12311:227;;;:::i;:::-;;;;;;;;;;9217:15:66;12311:227:67;;;12130:2933;3171:37276;;12286:394;;12904:45;:32;2080:2:69;;;-1:-1:-1;;;;;3171:37276:67;;;12904:45;3171:37276;;;12904:47;;3171:37276;12904:47;;;9276:14;12904:47;;;;;;;;;;;9217:15:66;12904:47:67;;;12130:2933;-1:-1:-1;;3171:37276:67;;;;13512:121;;;12130:2933;13487:279;;3171:37276;;14990:40;6283:95:70;5748:91;5246:92;4764:82;4338:83;3891:88;3366;3171:37276:67;;2874:89:70;3171:37276:67;;6819:94:70;3171:37276:67;;2368:100:70;3171:37276:67;;;;;;;;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;2368:100:70;13955:36:67;;3171:37276;;;;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;2874:89:70;14071:35:67;;;3171:37276;;;;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;3366:88:70;9451:23:67;14213:41;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;3891:88:70;10645:19:67;14346:30;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;4338:83:70;12134:24:67;14450:29;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;4764:82:70;11250:26:67;14562:38;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;5246:92:70;3171:37276:67;14682:37;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;5748:91:70;14826:41:67;;;3171:37276;;;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;3171:37276:67;8470:156:46;8160:472;3171:37276:67;8470:156:46;;;;8160:472;;6819:94:70;12130:2933:67;;;;13487:279;13681:66;2080:2:69;;;;-1:-1:-1;;;;;3171:37276:67;;;2080:2:69;13681:66:67;9217:15:66;13681:66:67;-1:-1:-1;;;;;3171:37276:67;;;19140:62;3171:37276;;;;12380:10;3171:37276;;;;;13512:121;13571:26;:62;:53;:26;;3171:37276;;;;;13571:53;3171:37276;;;;13571:62;;13512:121;;12904:47;;;;;;;-1:-1:-1;12904:47:67;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;12286:394;12595:66;2080:2:69;;;;-1:-1:-1;;;;;3171:37276:67;;;12311:227;;;;;;;;;;;;;;:::i;:::-;;;;10970:117;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;8547:3;8597:21;:18;;;:21;:::i;:::-;;3171:37276;;;;-1:-1:-1;;;;;3171:37276:67;;;;;-1:-1:-1;;;;;3171:37276:67;;;8736:28;;;:54;;;;8547:3;8732:114;;3171:37276;8969:21;;;8965:97;;9080:22;;9076:97;;9210:22;;;;;3171:37276;;;;;-1:-1:-1;;;;;3171:37276:67;;;;-1:-1:-1;;;;;3171:37276:67;9210:51;9345:19;;;;;;3171:37276;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;3171:37276:67;9451:23;;;3171:37276;;;;;;;;;;;;;:::i;:::-;9306:183;;;;;:::i;:::-;-1:-1:-1;;;;;3171:37276:67;;;9306:183;;;3171:37276;;;9306:183;;;3171:37276;9276:20;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;9276:20;:27;;;3171:37276;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;9276:27;1913:1:69;;;;:::i;:::-;3171:37276:67;;;;;:::i;:::-;;;;:::i;:::-;9508:41;;9210:51;;;9573:42;;;9504:457;9569:123;;;9504:457;;;3171:37276;10099:41;;;;3171:37276;10099:41;;9276:14;10099:41;;;;;;;;;;9217:15:66;10099:41:67;;;9504:457;2080:2:69;;;3171:37276:67;;;;;;;10159:35;10155:250;2080:2:69;;;10221:22:67;;9217:15:66;10221:22:67;9217:15:66;10221:22:67;10155:250;3171:37276;2080:2:69;;;;;;;;;10314:58:67;2080:2:69;;;3171:37276:67;10314:58;;;;:::i;:::-;2080:2:69;3171:37276:67;;2080:2:69;;;10314:58:67;10475:29;:17;;;-1:-1:-1;;;;;3171:37276:67;;;23356:11;3171:37276;;;;;;;10475:17;:29;:::i;:::-;8547:3;8517:13;;;;;3171:37276;8517:13;;10099:41;;;;;;-1:-1:-1;10099:41:67;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;9573:42;3171:37276;;;;-1:-1:-1;9573:42:67;;;9504:457;3171:37276;;;;;;;:::i;:::-;;;;:::i;:::-;9716:42;3171:37276;;9778:105;;9712:249;;9504:457;;9712:249;9928:18;9217:15:66;9928:18:67;9276:14;9217:15:66;9928:18:67;9076:97;9129:29;9217:15:66;9129:29:67;-1:-1:-1;;;;;3171:37276:67;;16717:28;3171:37276;;-1:-1:-1;34357:71:67;8965:97;9017:30;9217:15:66;9017:30:67;9276:14;9217:15:66;9017:30:67;8732:114;8817:14;9217:15:66;8817:14:67;9276;9217:15:66;8817:14:67;8736:54;3171:37276;;;;8768:22;;8736:54;;8332:72;8382:11;9217:15:66;8382:11:67;;9217:15:66;8382:11:67;8251:72;8301:11;9217:15:66;8301:11:67;;9217:15:66;8301:11:67;8098:88;8148:27;9217:15:66;8148:27:67;-1:-1:-1;;;;;3171:37276:67;;16717:28;3171:37276;;-1:-1:-1;34357:71:67;7617:261:72;6019:108:46;7617:261:72;3171:37276:67;6019:108:46;;19669:4:31;;;;;;;;;;;;;;;;7617:261:72;:::o;8442:263::-;6019:108:46;;3171:37276:67;6019:108:46;;19669:4:31;;;;;;;;;;;;;;;;8442:263:72;:::o;3171:37276:67:-;;;;;;;;;;;;;;;;;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;-1:-1:-1;3171:37276:67;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;-1:-1:-1;3171:37276:67;;;;;;;;;;34375:314:111;34568:16;34552:33;;34548:105;;34375:314;:::o;34548:105::-;34608:34;;;;3171:37276:67;;34608:34:111;;4346:904:66;;4485:10;;4481:23;;9520:18:69;4589:26:66;;;;1796:196:44;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;2806:53:52;1796:196:44;;4589:26:66;3171:37276:67;;;;;;4494:1:66;3171:37276:67;;;;;;;;;;;;;4738:9:66;;;9342:26:69;;3831:53:52;;;3171:37276:67;;;;;;;;5238:4:66;3051:52:52;;5238:4:66;:::i;4734:423::-;4944:12;4940:217;;4734:423;5238:4;4734:423;5238:4;:::i;4940:217::-;9342:26:69;3831:53:52;;;6806:1:44;3171:37276:67;;;;;;;5238:4:66;3051:52:52;;4940:217:66;;;;4481:23;4497:7;;:::o;2311:281:41:-;;1237:14;2426:25;;;:58;;;;;2311:281;2422:113;;;3080:3;2080:2:69;3171:37276:67;;;;;;;;2311:281:41;:::o;2422:113::-;2507:17;;;;;;2426:58;2455:29;;;;2426:58;;;4358:211:90;928:3;4449:43;;4445:118;;4358:211;:::o;4445:118::-;4515:37;;;;3171:37276:67;;4515:37:90;;7866:704:73;;;8372:29;465:4:47;838:5;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;3171:37276:67;1946:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;3171:37276:67;8522:31:73;:19;;;;;:31;:::i;838:5:47:-;465:4;8372:29:73;;;:191;:::i;3804:110:66:-;3891:15;;3804:110;3891:15;:::i;:::-;;;:::i;4575:635:90:-;4643:20;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;4643:20:90;3171:37276:67;;;928:3:90;3171:37276:67;;;;;;;;;-1:-1:-1;;;;;3171:37276:67;;4842:15:90;;-1:-1:-1;;;;;3171:37276:67;;;5409:9:90;3171:37276:67;;;;;;;4842:15:90;-1:-1:-1;3171:37276:67;;;;;-1:-1:-1;3171:37276:67;;;;;;;;-1:-1:-1;3171:37276:67;;4924:66:90;3171:37276:67;;4924:66:90;;;3171:37276:67;928:3:90;3171:37276:67;;;;;;4924:66:90;;;;5115:88;;;;;-1:-1:-1;3171:37276:67;;5115:88:90;;3171:37276:67;5115:88:90;;;;;;;;;3171:37276:67;928:3:90;3171:37276:67;;;;;;;;;;;;;;;;5115:88:90;;;;;;;;;;;4575:635;:::o;5115:88::-;;;;;;:::i;3596:756::-;;-1:-1:-1;;;;;3171:37276:67;;;3676:16:90;;;3672:78;;3785:29;:20;;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;3785:20:90;3171:37276:67;3785:29:90;:::i;:::-;3963:19;:15;;;-1:-1:-1;;;;;3171:37276:67;;;5409:9:90;3171:37276:67;;;;;;;3963:19:90;3171:37276:67;;;;;;4043:14:90;;;:::i;:::-;4069:20;;-1:-1:-1;;;;;3171:37276:67;;;2487:14:90;3171:37276:67;;;;;;;4069:20:90;3171:37276:67;;;3690:1:90;3171:37276:67;4122:38:90;3171:37276:67;;4122:38:90;;;;3171:37276:67;;;;;;;;4122:38:90;;;;4285:60;;;;;3171:37276:67;;;4285:60:90;;3690:1;4285:60;;;3171:37276:67;;;-1:-1:-1;;;;;3171:37276:67;;;;;;;;;;;;;;;;;;3690:1:90;3171:37276:67;;;;4285:60:90;3171:37276:67;3672:78:90;3715:24;3690:1;3715:24;-1:-1:-1;;;;;3171:37276:67;;16717:28;3171:37276;;-1:-1:-1;34357:71:67;11721:446:72;3171:37276:67;;11721:446:72;3171:37276:67;11899:3:72;3171:37276:67;;11869:28:72;;;;;11960:20;;;;:::i;:::-;3171:37276:67;;11998:42:72;;;;:::i;:::-;8966:3:46;;8956:13;;;;8952:64;;3171:37276:67;;;;;;;;2641:5:110;;;;;;:13;;;3171:37276:67;9204:40:46;;;9180:112;;3171:37276:67;;;;;9400:76:46;;3171:37276:67;;2539:209:46;3171:37276:67;;2539:209:46;;;;;;;11899:3:72;3171:37276:67;11854:13:72;;;9400:76:46;9450:15;3171:37276:67;9450:15:46;;3171:37276:67;9450:15:46;9180:112;9268:13;3171:37276:67;9268:13:46;;3171:37276:67;9268:13:46;2641::110;;;11869:28:72;3171:37276:67;;;-1:-1:-1;;11721:446:72:o;7884:552::-;19917:10:31;8036:26:72;;8032:97;;19669:4:31;8232:183:72;465:4:47;;8232:183:72;;:::i;8711:554::-;;19917:10:31;8864:26:72;;8860:97;;9060:184;;19669:4:31;3171:37276:67;465:4:47;;9060:184:72;;:::i;14924:779:66:-;;-1:-1:-1;;;;;3171:37276:67;;;;;;15152:60:66;;;;;;;;;;;;;;;;;;;;14924:779;15132:80;;;15128:143;;3171:37276:67;;;15305:60:66;;;;15152;15305;;;;;;;;;15152;15305;;;14924:779;15285:80;;;;15281:144;;15564:21;;15540;15564:67;15647:49;15564:21;;15647:49;15564:21;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;15564:21:66;3171:37276:67;15564:67:66;:::i;:::-;15540:21;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;-1:-1:-1;3171:37276:67;;;-1:-1:-1;3171:37276:67;;;15540:21:66;3171:37276:67;;;;;;;;;;;;;;15647:49:66;;;;14924:779::o;15281:144::-;15388:26;15152:60;15388:26;15152:60;;15388:26;15305:60;;;;;;-1:-1:-1;15305:60:66;;;;;;:::i;:::-;;;;;15128:143;15235:25;15152:60;15235:25;15152:60;;15235:25;15152:60;;;;;;;;;;;;;;:::i;:::-;;;;8641:1623:73;;;;3171:37276:67;8915:29:73;:41;:29;;;;;:41;:::i;:::-;3171:37276:67;9458:36:73;;;9454:804;;8641:1623;;;;;;:::o;9454:804::-;3638:53:43;3171:37276:67;;;3665:25:43;3171:37276:67;;10184:31:73;3171:37276:67;9669:111:73;3171:37276:67;;9669:111:73;:::i;:::-;10120:30;10184:19;10120:42;:30;;;;;:42;:::i;:::-;3171:37276:67;10184:19:73;;;:31;:::i;:::-;3171:37276:67;3665:25:43;;:::i;:::-;3638:53;;:::i;:::-;9454:804:73;;;;;;;;1998:187:44;;-1:-1:-1;;;;;3171:37276:67;-1:-1:-1;3171:37276:67;;;;-1:-1:-1;3171:37276:67;3051:52:52;1998:187:44:o;2097:657:46:-;;3171:37276:67;19627:2:31;3171:37276:67;9400:76:46;;3171:37276:67;2539:209:46;;;3171:37276:67;2539:209:46;;;;2097:657;:::o;:::-;;8966:3;8956:13;;;;8952:64;;3171:37276:67;;;;;;;;2641:5:110;9226:3:46;2641:5:110;:13;:5;;;:13;9226:3:46;2641:13:110;19627:2:31;9204:40:46;9180:112;;3171:37276:67;19627:2:31;3171:37276:67;9400:76:46;;2539:209;;;;;;;;;2097:657;:::o;2641:13:110:-;;;6992:619:72;;19917:10:31;7292:26:72;;7288:97;;19669:4:31;465::47;;3171:37276:67;19627:2:31;3171:37276:67;9400:76:46;;2539:209;;3171:37276:67;2539:209:46;;;;6992:619:72;:::o"},"methodIdentifiers":{"allowance(address,address,address)":"927da105","approve(address,address,uint256)":"e1f21c67","balanceOf(address,address)":"f7888aec","computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))":"4d472bdd","emitAuxiliaryEvent(bytes32,bytes)":"c8088247","getAddLiquidityCalledFlag(address)":"ace9b89b","getAggregateSwapFeeAmount(address,address)":"85e0b999","getAggregateYieldFeeAmount(address,address)":"00fdfa13","getAuthorizer()":"aaabadc5","getBptRate(address)":"4f037ee7","getCurrentLiveBalances(address)":"535cfd8a","getERC4626BufferAsset(address)":"4afbaf5a","getHooksConfig(address)":"ce8630d4","getNonzeroDeltaCount()":"db817187","getPoolConfig(address)":"f29486a1","getPoolData(address)":"13d21cdf","getPoolPausedState(address)":"15e32046","getPoolRoleAccounts(address)":"e9ddeb26","getPoolTokenInfo(address)":"67e0e076","getPoolTokenRates(address)":"7e361bde","getPoolTokens(address)":"ca4f2803","getProtocolFeeController()":"85f2dbd4","getReservesOf(address)":"96787092","getStaticSwapFeePercentage(address)":"b45090f9","getTokenDelta(address)":"9e825ff5","getVaultAdmin()":"1ba0ae45","initialize(address,address,address[],uint256[],uint256,bytes)":"ba8a2be0","isERC4626BufferInitialized(address)":"6844846b","isPoolInRecoveryMode(address)":"be7d628a","isPoolInitialized(address)":"532cec7c","isPoolPaused(address)":"6c9bc732","isPoolRegistered(address)":"c673bdaf","isQueryDisabled()":"b4aef0ab","isQueryDisabledPermanently()":"13ef8a5d","isUnlocked()":"8380edb7","quote(bytes)":"edfa3568","quoteAndRevert(bytes)":"757d64b3","reentrancyGuardEntered()":"d2c725e0","registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"eeec802f","removeLiquidityRecovery(address,address,uint256,uint256[])":"a07d6040","totalSupply(address)":"e4dc2aa4","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"mainVault\",\"type\":\"address\"},{\"internalType\":\"contract IVaultAdmin\",\"name\":\"vaultAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodecOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"Result\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokensNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"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\":\"owner\",\"type\":\"address\"},{\"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\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"swapParams\",\"type\":\"tuple\"}],\"name\":\"computeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"emitAuxiliaryEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getAddLiquidityCalledFlag\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getBptRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getERC4626BufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getHooksConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolRoleAccounts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"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\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenRates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getReservesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getStaticSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"isERC4626BufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabledPermanently\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quoteAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"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).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"Result(bytes)\":[{\"params\":{\"result\":\"The result of the query operation\"}}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"TokensNotSorted()\":[{\"details\":\"Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can predict the token order without having to query the Vault. (It is also legacy v2 behavior.)\"}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address,address)\":{\"params\":{\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\",\"token\":\"Address of the token\"},\"returns\":{\"_0\":\"Amount of tokens the spender is allowed to spend\"}},\"approve(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to approve\",\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\"},\"returns\":{\"_0\":\"True if successful, false otherwise\"}},\"balanceOf(address,address)\":{\"params\":{\"account\":\"Address of the account\",\"token\":\"Address of the token\"},\"returns\":{\"_0\":\"Token balance of the account\"}},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"details\":\"Reverts if the hook doesn't return the success flag set to `true`.\",\"params\":{\"pool\":\"The pool\",\"swapParams\":\"The swap parameters used to compute the fee\"},\"returns\":{\"dynamicSwapFeePercentage\":\"The dynamic swap fee percentage\"}},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\"}},\"getAddLiquidityCalledFlag(address)\":{\"details\":\"Taxing remove liquidity proportional whenever liquidity was added in the same `unlock` call adds an extra layer of security, discouraging operations that try to undo others for profit. Remove liquidity proportional is the only standard way to exit a position without fees, and this flag is used to enable fees in that case. It also discourages indirect swaps via unbalanced add and remove proportional, as they are expected to be worse than a simple swap for every pool type.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if liquidity has been added to this pool in the current transaction Note that there is no `sessionId` argument; it always returns the value for the current (i.e., latest) session.\"}},\"getAggregateSwapFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"_0\":\"The total amount of fees accumulated in the specified token\"}},\"getAggregateYieldFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"_0\":\"The total amount of fees accumulated in the specified token\"}},\"getAuthorizer()\":{\"details\":\"The authorizer holds the permissions granted by governance. It is set on Vault deployment, and can be changed through a permissioned call.\",\"returns\":{\"_0\":\"Address of the authorizer contract\"}},\"getBptRate(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"rate\":\"BPT rate\"}},\"getCurrentLiveBalances(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getERC4626BufferAsset(address)\":{\"details\":\"To avoid malicious wrappers (e.g., that might potentially change their asset after deployment), routers should never call `wrapper.asset()` directly, at least without checking it against the asset registered with the Vault on initialization.\",\"params\":{\"wrappedToken\":\"The wrapped token specifying the buffer\"},\"returns\":{\"asset\":\"The underlying asset of the wrapped token\"}},\"getHooksConfig(address)\":{\"details\":\"The `HooksConfig` contains flags indicating which pool hooks are implemented.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"_0\":\"The hooks configuration as a `HooksConfig` struct\"}},\"getNonzeroDeltaCount()\":{\"returns\":{\"_0\":\"The current value of `_nonzeroDeltaCount`\"}},\"getPoolConfig(address)\":{\"details\":\"The `PoolConfig` contains liquidity management and other state flags, fee percentages, the pause window.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"_0\":\"The pool configuration as a `PoolConfig` struct\"}},\"getPoolData(address)\":{\"details\":\"This contains the pool configuration (flags), tokens and token types, rates, scaling factors, and balances.\",\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"_0\":\"The `PoolData` result\"}},\"getPoolPausedState(address)\":{\"details\":\"Note that even when set to a paused state, the pool will automatically unpause at the end of the buffer period. Balancer timestamps are 32 bits.\",\"params\":{\"pool\":\"The pool whose data is requested\"},\"returns\":{\"_0\":\"True if the Pool is paused\",\"_1\":\"The timestamp of the end of the Pool's pause window\",\"_2\":\"The timestamp after which the Pool unpauses itself (if paused)\",\"_3\":\"The pause manager, or the zero address\"}},\"getPoolRoleAccounts(address)\":{\"params\":{\"pool\":\"The address of the pool whose roles are being queried\"},\"returns\":{\"_0\":\"A struct containing the role accounts for the pool (or 0 if unassigned)\"}},\"getPoolTokenInfo(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"The pool tokens, sorted in registration order\"}},\"getPoolTokenRates(address)\":{\"details\":\"This function performs external calls if tokens are yield-bearing. All returned arrays are in token registration order.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"decimalScalingFactors\":\"Conversion factor used to adjust for token decimals for uniform precision in calculations. FP(1) for 18-decimal tokens\",\"tokenRates\":\"18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\"}},\"getPoolTokens(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"tokens\":\"List of tokens in the pool\"}},\"getProtocolFeeController()\":{\"returns\":{\"_0\":\"Address of the ProtocolFeeController\"}},\"getReservesOf(address)\":{\"params\":{\"token\":\"The token for which to retrieve the reserve\"},\"returns\":{\"_0\":\"The amount of reserves for the given token\"}},\"getStaticSwapFeePercentage(address)\":{\"params\":{\"pool\":\"The address of the pool whose static swap fee percentage is being queried\"},\"returns\":{\"_0\":\"The current static swap fee percentage for the specified pool\"}},\"getTokenDelta(address)\":{\"details\":\"This function allows reading the value from the `_tokenDeltas` mapping.\",\"params\":{\"token\":\"The token for which the delta is being fetched\"},\"returns\":{\"_0\":\"The delta of the specified token\"}},\"getVaultAdmin()\":{\"details\":\"The VaultAdmin contract mostly implements permissioned functions.\",\"returns\":{\"_0\":\"The address of the Vault admin\"}},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"pool\":\"Address of the pool to initialize\",\"to\":\"Address that will receive the output BPT\",\"tokens\":\"Tokens used to seed the pool (must match the registered tokens)\",\"userData\":\"Additional (optional) data required for adding initial liquidity\"},\"returns\":{\"bptAmountOut\":\"Output pool token amount\"}},\"isERC4626BufferInitialized(address)\":{\"details\":\"An initialized buffer should have an asset registered in the Vault.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"_0\":\"True if the ERC4626 buffer is initialized\"}},\"isPoolInRecoveryMode(address)\":{\"details\":\"Recovery Mode enables a safe proportional withdrawal path, with no external calls.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if the pool is in Recovery Mode, false otherwise\"}},\"isPoolInitialized(address)\":{\"details\":\"An initialized pool can be considered registered as well.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if the pool is initialized, false otherwise\"}},\"isPoolPaused(address)\":{\"details\":\"If a pool is paused, all non-Recovery Mode state-changing operations will revert.\",\"params\":{\"pool\":\"The pool to be checked\"},\"returns\":{\"_0\":\"True if the pool is paused\"}},\"isPoolRegistered(address)\":{\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if the pool is registered, false otherwise\"}},\"isQueryDisabled()\":{\"details\":\"If true, queries might either be disabled temporarily or permanently.\",\"returns\":{\"_0\":\"True if query functionality is reversibly disabled\"}},\"isQueryDisabledPermanently()\":{\"details\":\"This is a one-way switch. Once queries are disabled permanently, they can never be re-enabled.\",\"returns\":{\"_0\":\"True if query functionality is permanently disabled\"}},\"isUnlocked()\":{\"details\":\"The Vault must be unlocked to perform state-changing liquidity operations.\",\"returns\":{\"_0\":\"True if the Vault is unlocked, false otherwise\"}},\"quote(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}},\"quoteAndRevert(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled. This call always reverts, returning the result in the revert reason.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"}},\"reentrancyGuardEntered()\":{\"returns\":{\"_0\":\"True if the Vault is currently executing a nonReentrant function\"}},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"details\":\"A pool can opt-out of pausing by providing a zero value for the pause window, or allow pausing indefinitely by providing a large value. (Pool pause windows are not limited by the Vault maximums.) The vault defines an additional buffer period during which a paused pool will stay paused. After the buffer period passes, a paused pool will automatically unpause. Balancer timestamps are 32 bits. A pool can opt out of Balancer governance pausing by providing a custom `pauseManager`. This might be a multi-sig contract or an arbitrary smart contract with its own access controls, that forwards calls to the Vault. If the zero address is provided for the `pauseManager`, permissions for pausing the pool will default to the authorizer.\",\"params\":{\"liquidityManagement\":\"Liquidity management flags with implemented methods\",\"pauseWindowEndTime\":\"The timestamp after which it is no longer possible to pause the pool\",\"pool\":\"The address of the pool being registered\",\"poolHooksContract\":\"Contract that implements the hooks for the pool\",\"protocolFeeExempt\":\"If true, the pool's initial aggregate fees will be set to 0\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The initial static swap fee percentage of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Input pool token amount\",\"from\":\"Address of user to burn pool tokens from\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the pool\"},\"returns\":{\"amountsOutRaw\":\"Actual calculated amounts of output tokens, sorted in token registration order\"}},\"totalSupply(address)\":{\"params\":{\"token\":\"The token address\"},\"returns\":{\"_0\":\"Total supply of the token\"}},\"vault()\":{\"details\":\"The main Vault contains the entrypoint and main liquidity operation implementations.\",\"returns\":{\"_0\":\"vault The address of the main Vault\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BalanceOverflow()\":[{\"notice\":\"One of the balances is above the maximum value that can be stored.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"CodecOverflow()\":[{\"notice\":\"Function called with an invalid value.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotStaticCall()\":[{\"notice\":\"A state-changing transaction was initiated in a context that only allows static calls.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"OutOfBounds()\":[{\"notice\":\"Function called with an invalid bitLength or offset.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"Result(bytes)\":[{\"notice\":\"On success of the primary operation in a `quoteAndRevert`, this error is thrown with the return data.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TokensNotSorted()\":[{\"notice\":\"The tokens supplied to an array argument were not sorted in numerical order.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,address)\":{\"notice\":\"Gets the allowance of a spender for a given ERC20 token and owner.\"},\"approve(address,address,uint256)\":{\"notice\":\"Approves a spender to spend pool tokens on behalf of sender.\"},\"balanceOf(address,address)\":{\"notice\":\"Gets the balance of an account for a given ERC20 token.\"},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Query the current dynamic swap fee percentage of a pool, given a set of swap parameters.\"},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"getAddLiquidityCalledFlag(address)\":{\"notice\":\"This flag is used to detect and tax \\\"round-trip\\\" interactions (adding and removing liquidity in the same pool).\"},\"getAggregateSwapFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated swap fees (including aggregate fees) in `token` collected by the pool.\"},\"getAggregateYieldFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated yield fees (including aggregate fees) in `token` collected by the pool.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer address.\"},\"getBptRate(address)\":{\"notice\":\"The current rate of a pool token (BPT) = invariant / totalSupply.\"},\"getCurrentLiveBalances(address)\":{\"notice\":\"Gets current live balances of a given pool (fixed-point, 18 decimals), corresponding to its tokens in registration order.\"},\"getERC4626BufferAsset(address)\":{\"notice\":\"Gets the registered asset for a given buffer.\"},\"getHooksConfig(address)\":{\"notice\":\"Gets the hooks configuration parameters of a pool.\"},\"getNonzeroDeltaCount()\":{\"notice\":\"Returns the count of non-zero deltas.\"},\"getPoolConfig(address)\":{\"notice\":\"Gets the configuration parameters of a pool.\"},\"getPoolData(address)\":{\"notice\":\"Returns comprehensive pool data for the given pool.\"},\"getPoolPausedState(address)\":{\"notice\":\"Returns the paused status, and end times of the Pool's pause window and buffer period.\"},\"getPoolRoleAccounts(address)\":{\"notice\":\"Fetches the role accounts for a given pool (pause manager, swap manager, pool creator)\"},\"getPoolTokenInfo(address)\":{\"notice\":\"Gets the raw data for a pool: tokens, raw balances, scaling factors.\"},\"getPoolTokenRates(address)\":{\"notice\":\"Gets pool token rates.\"},\"getPoolTokens(address)\":{\"notice\":\"Gets the tokens registered to a pool.\"},\"getProtocolFeeController()\":{\"notice\":\"Returns the Protocol Fee Controller address.\"},\"getReservesOf(address)\":{\"notice\":\"Retrieves the reserve (i.e., total Vault balance) of a given token.\"},\"getStaticSwapFeePercentage(address)\":{\"notice\":\"Fetches the static swap fee percentage for a given pool.\"},\"getTokenDelta(address)\":{\"notice\":\"Retrieves the token delta for a specific token.\"},\"getVaultAdmin()\":{\"notice\":\"Returns the VaultAdmin contract address.\"},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"notice\":\"Initializes a registered pool by adding liquidity; mints BPT tokens for the first time in exchange.\"},\"isERC4626BufferInitialized(address)\":{\"notice\":\"Checks if the wrapped token has an initialized buffer in the Vault.\"},\"isPoolInRecoveryMode(address)\":{\"notice\":\"Checks whether a pool is in Recovery Mode.\"},\"isPoolInitialized(address)\":{\"notice\":\"Checks whether a pool is initialized.\"},\"isPoolPaused(address)\":{\"notice\":\"Indicates whether a pool is paused.\"},\"isPoolRegistered(address)\":{\"notice\":\"Checks whether a pool is registered.\"},\"isQueryDisabled()\":{\"notice\":\"Returns true if queries are disabled on the Vault.\"},\"isQueryDisabledPermanently()\":{\"notice\":\"Returns true if queries are disabled permanently; false if they are enabled.\"},\"isUnlocked()\":{\"notice\":\"Returns whether the Vault is unlocked (i.e., executing an operation).\"},\"quote(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"quoteAndRevert(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"reentrancyGuardEntered()\":{\"notice\":\"Expose the state of the Vault's reentrancy guard.\"},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"notice\":\"Registers a pool, associating it with its factory and the tokens it manages.\"},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"notice\":\"Remove liquidity from a pool specifying exact pool tokens in, with proportional token amounts out. The request is implemented by the Vault without any interaction with the pool, ensuring that it works the same for all pools, and cannot be disabled by a new pool type.\"},\"totalSupply(address)\":{\"notice\":\"Gets the total supply of a given ERC20 token.\"},\"vault()\":{\"notice\":\"Returns the main Vault address.\"}},\"notice\":\"Bytecode extension for the Vault containing permissionless functions outside the critical path. It has access to the same storage layout as the main vault. The functions in this contract are not meant to be called directly. They must only be called by the Vault via delegate calls, so that any state modifications produced by this contract's code will actually target the main Vault's state. The storage of this contract is in practice unused.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/VaultExtension.sol\":\"VaultExtension\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":{\"keccak256\":\"0x28078c6fa4d55418c25505d4683642cb51fe55b2155ef7418db6c70631a30d6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://864b91fdc2b69725bcc07f06d9adebe87117561582fa58f1e4410d8928cd205c\",\"dweb:/ipfs/QmWCDsbTxtmEMLhorqfGF1LDMHMqqVnV9sk9mUTPR7eog8\"]},\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":{\"keccak256\":\"0xad949728097754fb91dd82f46a4f3430f0caf092fe719f04c030325e623c59cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6ba4635b64181a08098f2b4bde9bc6ceb8580d24654ec39c3d38ac2c8082317\",\"dweb:/ipfs/QmbthXemuT8Qvs2jdTADdyzbcPuZaKWfZjRn7j8dWuwffs\"]},\"@balancer-labs/v3-vault/contracts/VaultExtension.sol\":{\"keccak256\":\"0x40490c1c492b44a3fbc04a9642abb41c86b124a0e510aedbee2886040058a5a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b7d969f2f08bb32524e3678ef1b9cbdd3d9630b0cee495527a42a0ca640cd94\",\"dweb:/ipfs/QmSpqFru9X2V1SD3cE63jcdNiHLZdTvXXGw6suCbzHnqxM\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol\":{\"keccak256\":\"0xaf3a7b4bbc1427ffb36b89cab5e485494afbddaff7195e0533f9c29a88c217b3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c653115b697d1c2a340a485e37a1d1a7b18bd3da4304ef12480bf9dcb8f61dc8\",\"dweb:/ipfs/QmfPNVqSeuG6gJr2x4y41czE5ivBz8vLpZ3R97VVnbK1uT\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol\":{\"keccak256\":\"0xf17a6fb82ff8eac940260544aa041e2cf8b826c0f7e205b4d52a4c5394a7ee38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c88893eba6593f2f7ef05e3ffeb61416b6cc630eaad2efa90e77262f3282ab81\",\"dweb:/ipfs/QmX9XhQix9yKT7buiT77igy8Bf1jvwwYGxpmTr4e5mWnQD\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/VaultGuard.sol":{"VaultGuard":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a034606057601f60b238819003918201601f19168301916001600160401b03831184841017606457808492602094604052833981010312606057516001600160a01b03811681036060576080526040516039908160798239608051815050f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe5f80fdfea264697066735822122032fab82eac6ccaf4463e321d4c4c34b98abf24774ae44fd1275407cfa3ef3b6b64736f6c634300081a0033","opcodes":"PUSH1 0xA0 CALLVALUE PUSH1 0x60 JUMPI PUSH1 0x1F PUSH1 0xB2 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH1 0x64 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH1 0x60 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH1 0x60 JUMPI PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH1 0x39 SWAP1 DUP2 PUSH1 0x79 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN STATICCALL 0xB8 0x2E 0xAC PUSH13 0xCAF4463E321D4C4C34B98ABF24 PUSH24 0x4AE44FD1275407CFA3EF3B6B64736F6C634300081A003300 ","sourceMap":"308:368:68:-:0;;;;;;;;;;;;;-1:-1:-1;;308:368:68;;;;-1:-1:-1;;;;;308:368:68;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;308:368:68;;;;;;409:14;;308:368;;;;;;;;409:14;308:368;;;;;;-1:-1:-1;308:368:68;;;;;;-1:-1:-1;308:368:68;;;;;-1:-1:-1;308:368:68"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122032fab82eac6ccaf4463e321d4c4c34b98abf24774ae44fd1275407cfa3ef3b6b64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN STATICCALL 0xB8 0x2E 0xAC PUSH13 0xCAF4463E321D4C4C34B98ABF24 PUSH24 0x4AE44FD1275407CFA3EF3B6B64736F6C634300081A003300 ","sourceMap":"308:368:68:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract that shares the modifier `onlyVault`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":\"VaultGuard\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/VaultStorage.sol":{"VaultStorage":{"abi":[],"evm":{"bytecode":{"functionDebugData":{"finalize_allocation":{"entryPoint":338,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateVaultStorageSlot":{"entryPoint":385,"id":27922,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6101c06040908082523461014e578061001a61003692610152565b600a8152691a5cd55b9b1bd8dad95960b21b6020820152610181565b60c05261006a815161004781610152565b60118152701b9bdb96995c9bd1195b1d1850dbdd5b9d607a1b6020820152610181565b60e052610098815161007b81610152565b600b81526a746f6b656e44656c74617360a81b6020820152610181565b906101009182526100d181516100ad81610152565b6012815271185919131a5c5d5a591a5d1e50d85b1b195960721b6020820152610181565b9061012091825261010181516100e681610152565b60098152681cd95cdcda5bdb925960ba1b6020820152610181565b90610140918252519160399384610266853960805184505060a05184505060c05184505060e05184505051835050518250505181505061016051815050610180518150506101a051815050f35b5f80fd5b604081019081106001600160401b0382111761016d57604052565b634e487b7160e01b5f52604160045260245ffd5b60405161018d81610152565b600c8152602081016b5661756c7453746f7261676560a01b81526020604051938492828401947f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008652518091603986015e830190601760f91b6039830152805192839101603a83015e015f603a82015203601a810183526059601f1991011682019180831060018060401b0384111761016d57826040525190205f19810190811161025157602082019081526020825261024682610152565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe5f80fdfea2646970667358221220bf811d2069441c1d8c27856a08648f840836323042767a92fa8aa43b38e46ed564736f6c634300081a0033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x14E JUMPI DUP1 PUSH2 0x1A PUSH2 0x36 SWAP3 PUSH2 0x152 JUMP JUMPDEST PUSH1 0xA DUP2 MSTORE PUSH10 0x1A5CD55B9B1BD8DAD959 PUSH1 0xB2 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x181 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH2 0x6A DUP2 MLOAD PUSH2 0x47 DUP2 PUSH2 0x152 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x1B9BDB96995C9BD1195B1D1850DBDD5B9D PUSH1 0x7A SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x181 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH2 0x98 DUP2 MLOAD PUSH2 0x7B DUP2 PUSH2 0x152 JUMP JUMPDEST PUSH1 0xB DUP2 MSTORE PUSH11 0x746F6B656E44656C746173 PUSH1 0xA8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x181 JUMP JUMPDEST SWAP1 PUSH2 0x100 SWAP2 DUP3 MSTORE PUSH2 0xD1 DUP2 MLOAD PUSH2 0xAD DUP2 PUSH2 0x152 JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x185919131A5C5D5A591A5D1E50D85B1B1959 PUSH1 0x72 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x181 JUMP JUMPDEST SWAP1 PUSH2 0x120 SWAP2 DUP3 MSTORE PUSH2 0x101 DUP2 MLOAD PUSH2 0xE6 DUP2 PUSH2 0x152 JUMP JUMPDEST PUSH1 0x9 DUP2 MSTORE PUSH9 0x1CD95CDCDA5BDB9259 PUSH1 0xBA SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x181 JUMP JUMPDEST SWAP1 PUSH2 0x140 SWAP2 DUP3 MSTORE MLOAD SWAP2 PUSH1 0x39 SWAP4 DUP5 PUSH2 0x266 DUP6 CODECOPY PUSH1 0x80 MLOAD DUP5 POP POP PUSH1 0xA0 MLOAD DUP5 POP POP PUSH1 0xC0 MLOAD DUP5 POP POP PUSH1 0xE0 MLOAD DUP5 POP POP MLOAD DUP4 POP POP MLOAD DUP3 POP POP MLOAD DUP2 POP POP PUSH2 0x160 MLOAD DUP2 POP POP PUSH2 0x180 MLOAD DUP2 POP POP PUSH2 0x1A0 MLOAD DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x16D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18D DUP2 PUSH2 0x152 JUMP JUMPDEST PUSH1 0xC DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH12 0x5661756C7453746F72616765 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP3 DUP5 ADD SWAP5 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP7 MSTORE MLOAD DUP1 SWAP2 PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x3A DUP4 ADD MCOPY ADD PUSH0 PUSH1 0x3A DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP4 MSTORE PUSH1 0x59 PUSH1 0x1F NOT SWAP2 ADD AND DUP3 ADD SWAP2 DUP1 DUP4 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP5 GT OR PUSH2 0x16D JUMPI DUP3 PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x251 JUMPI PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x246 DUP3 PUSH2 0x152 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF DUP2 SAR KECCAK256 PUSH10 0x441C1D8C27856A08648F DUP5 ADDMOD CALLDATASIZE ORIGIN ADDRESS TIMESTAMP PUSH23 0x7A92FA8AA43B38E46ED564736F6C634300081A00330000 ","sourceMap":"1377:8694:69:-:0;;;;;;;;;;;3400:40;1377:8694;;:::i;:::-;;;;-1:-1:-1;;;1377:8694:69;;;;3400:40;:::i;:::-;;;3501:47;1377:8694;;;;;:::i;:::-;;;;-1:-1:-1;;;1377:8694:69;;;;3501:47;:::i;:::-;;;3601:41;1377:8694;;;;;:::i;:::-;;;;-1:-1:-1;;;1377:8694:69;;;;3601:41;:::i;:::-;;;;;;3703:48;1377:8694;;;;;:::i;:::-;;;;-1:-1:-1;;;1377:8694:69;;;;3703:48;:::i;:::-;;;;;;3802:39;1377:8694;;;;;:::i;:::-;;;;-1:-1:-1;;;1377:8694:69;;;;3802:39;:::i;:::-;;;;;;1377:8694;;;;;;;;;;;;;;;;;;3400:40;1377:8694;;;;3501:47;1377:8694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1377:8694:69;;;;;;;:::o;:::-;;;;;;;;;;;;9892:177;1377:8694;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;1377:8694:69;;;;;1461:67:44;;;;;;1377:8694:69;;;;;;;;;;;;;;-1:-1:-1;;;1377:8694:69;;;;;;;;;;;;;;;-1:-1:-1;1377:8694:69;;;;1461:67:44;;;;;;1377:8694:69;;;;;;;;;;;;;;;;;;;;;;;;;;1451:78:44;;1377:8694:69;;;;;;;;;;1432:103:44;;1377:8694:69;;;;1432:103:44;;;;;:::i;:::-;1377:8694:69;;1405:144:44;;-1:-1:-1;;1405:170:44;;9892:177:69:o;1377:8694::-;;;;-1:-1:-1;1377:8694:69;;;;;-1:-1:-1;1377:8694:69"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220bf811d2069441c1d8c27856a08648f840836323042767a92fa8aa43b38e46ed564736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF DUP2 SAR KECCAK256 PUSH10 0x441C1D8C27856A08648F DUP5 ADDMOD CALLDATASIZE ORIGIN ADDRESS TIMESTAMP PUSH23 0x7A92FA8AA43B38E46ED564736F6C634300081A00330000 ","sourceMap":"1377:8694:69:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This contract has no code, but is inherited by all three Vault contracts. In order to ensure that *only* the Vault contract's storage is actually used, calls to the extension contracts must be delegate calls made through the main Vault.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_queriesDisabledPermanently\":{\"details\":\"Flag that prevents re-enabling queries.\"},\"_reservesOf\":{\"details\":\"Represents the total reserve of each ERC20 token. It should be always equal to `token.balanceOf(vault)`, except during `unlock`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Storage layout for the Vault.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":\"VaultStorage\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol":{"HooksConfigLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ef02d6e8e1f3e06fee25820dab98b57579f4985f9777bfae2f44f857f8d4efe364736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF MUL 0xD6 0xE8 0xE1 RETURN 0xE0 PUSH16 0xEE25820DAB98B57579F4985F9777BFAE 0x2F PREVRANDAO 0xF8 JUMPI 0xF8 0xD4 0xEF 0xE3 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1878:19951:70:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220ef02d6e8e1f3e06fee25820dab98b57579f4985f9777bfae2f44f857f8d4efe364736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF MUL 0xD6 0xE8 0xE1 RETURN 0xE0 PUSH16 0xEE25820DAB98B57579F4985F9777BFAE 0x2F PREVRANDAO 0xF8 JUMPI 0xF8 0xD4 0xEF 0xE3 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1878:19951:70:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This library has two additional functions. `toHooksConfig` constructs a `HooksConfig` structure from the PoolConfig and the hooks contract address. Also, there are `call` functions that forward the arguments to the corresponding functions in the hook contract, then validate and return the results. Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool). This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e., offsets for each data field) is specified in `PoolConfigConst`. There are two libraries for interpreting these data. This one parses fields related to hooks, and also contains helpers for the struct building and hooks contract forwarding functions described above. `PoolConfigLib` contains helpers related to the non-hook-related flags, along with aggregate fee percentages and other data associated with pools. The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token configuration, scaling factors, and dynamic information such as current balances and rates. The hooks contract addresses themselves are stored in a separate `_hooksContracts` mapping.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper functions to read and write the packed hook configuration flags stored in `_poolConfigBits`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol\":\"HooksConfigLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol\":{\"keccak256\":\"0xaf3a7b4bbc1427ffb36b89cab5e485494afbddaff7195e0533f9c29a88c217b3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c653115b697d1c2a340a485e37a1d1a7b18bd3da4304ef12480bf9dcb8f61dc8\",\"dweb:/ipfs/QmfPNVqSeuG6gJr2x4y41czE5ivBz8vLpZ3R97VVnbK1uT\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol":{"PoolConfigConst":{"abi":[{"inputs":[],"name":"ADD_LIQUIDITY_CUSTOM_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AFTER_ADD_LIQUIDITY_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AFTER_INITIALIZE_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AFTER_REMOVE_LIQUIDITY_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AFTER_SWAP_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AGGREGATE_SWAP_FEE_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AGGREGATE_YIELD_FEE_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BEFORE_ADD_LIQUIDITY_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BEFORE_INITIALIZE_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BEFORE_REMOVE_LIQUIDITY_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BEFORE_SWAP_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMAL_DIFF_BITLENGTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMAL_SCALING_FACTORS_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DONATION_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DYNAMIC_SWAP_FEE_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_WINDOW_END_TIME_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_INITIALIZED_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_PAUSED_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_RECOVERY_MODE_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_REGISTERED_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REMOVE_LIQUIDITY_CUSTOM_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STATIC_SWAP_FEE_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMESTAMP_BITLENGTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_DECIMAL_DIFFS_BITLENGTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNBALANCED_LIQUIDITY_OFFSET","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460195761039a908161001e823930815050f35b5f80fdfe60806040908082526004361015610014575f80fd5b5f3560e01c9081631294794b1461035057508063185186281461033a57806328b161ce146102075780632d6724e1146103245780633dc52c431461030e5780633f60345a146102f8578063547acb16146102e25780636801b442146102cd57806368aa2524146102b75780637e3edbf1146102a15780637ea0cde91461028b57806380b1c55b1461027557806384efbfd51461025f578063a22425b614610249578063aa6cda9114610233578063af815f041461021d578063b2cb247c14610207578063bc848769146101f1578063bdefaf71146101db578063d9827217146101c5578063d9cebbd9146101ac578063dde7b13f14610196578063df9d385b14610181578063e2ce6c6c1461016b578063fab86870146101555763fd5da0101461013c575f80fd5b5f600319360112610151576020905160128152f35b5f80fd5b505f600319360112610151576020905160098152f35b505f600319360112610151576020905160078152f35b505f6003193601126101515760209051818152f35b505f6003193601126101515760209051600e8152f35b505f6003193601126101515760209060425b9051908152f35b505f600319360112610151576020905160048152f35b505f6003193601126101515760209051600d8152f35b505f600319360112610151576020905160108152f35b505f600319360112610151576020905160058152f35b505f600319360112610151576020905160028152f35b505f6003193601126101515760209051600f8152f35b505f6003193601126101515760209051600c8152f35b505f6003193601126101515760209051600b8152f35b505f600319360112610151576020905160118152f35b505f600319360112610151576020905160288152f35b505f600319360112610151576020905160068152f35b505f600319360112610151575160828152602090f35b505f60031936011261015157602090515f8152f35b505f600319360112610151576020905160088152f35b505f6003193601126101515760209051600a8152f35b505f60031936011261015157602090605a6101be565b505f600319360112610151576020905160038152f35b505f600319360112610151576020905160018152f35b5f6003193601126101515780602a60209252f3fea26469706673582212201d3837215e59227e320f492aaa36b4de16eaddfcad8bb231cc1b90b38dea38c964736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x19 JUMPI PUSH2 0x39A SWAP1 DUP2 PUSH2 0x1E DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1294794B EQ PUSH2 0x350 JUMPI POP DUP1 PUSH4 0x18518628 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x28B161CE EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x2D6724E1 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x3DC52C43 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x3F60345A EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x547ACB16 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6801B442 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x68AA2524 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x7E3EDBF1 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x7EA0CDE9 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x80B1C55B EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x84EFBFD5 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xA22425B6 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xAA6CDA91 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xAF815F04 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0xB2CB247C EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0xBC848769 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0xBDEFAF71 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xD9827217 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xD9CEBBD9 EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0xDDE7B13F EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0xDF9D385B EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xE2CE6C6C EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0xFAB86870 EQ PUSH2 0x155 JUMPI PUSH4 0xFD5DA010 EQ PUSH2 0x13C JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x9 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x7 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD DUP2 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xE DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x42 JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x4 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xD DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x10 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x5 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x2 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xF DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xC DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xB DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x11 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x28 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x6 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI MLOAD PUSH1 0x82 DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x8 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xA DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x5A PUSH2 0x1BE JUMP JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x3 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI DUP1 PUSH1 0x2A PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR CODESIZE CALLDATACOPY 0x21 MCOPY MSIZE 0x22 PUSH31 0x320F492AAA36B4DE16EADDFCAD8BB231CC1B90B38DEA38C964736F6C634300 ADDMOD BYTE STOP CALLER ","sourceMap":"831:2493:71:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"constant_AGGREGATE_YIELD_FEE_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_DECIMAL_SCALING_FACTORS_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60806040908082526004361015610014575f80fd5b5f3560e01c9081631294794b1461035057508063185186281461033a57806328b161ce146102075780632d6724e1146103245780633dc52c431461030e5780633f60345a146102f8578063547acb16146102e25780636801b442146102cd57806368aa2524146102b75780637e3edbf1146102a15780637ea0cde91461028b57806380b1c55b1461027557806384efbfd51461025f578063a22425b614610249578063aa6cda9114610233578063af815f041461021d578063b2cb247c14610207578063bc848769146101f1578063bdefaf71146101db578063d9827217146101c5578063d9cebbd9146101ac578063dde7b13f14610196578063df9d385b14610181578063e2ce6c6c1461016b578063fab86870146101555763fd5da0101461013c575f80fd5b5f600319360112610151576020905160128152f35b5f80fd5b505f600319360112610151576020905160098152f35b505f600319360112610151576020905160078152f35b505f6003193601126101515760209051818152f35b505f6003193601126101515760209051600e8152f35b505f6003193601126101515760209060425b9051908152f35b505f600319360112610151576020905160048152f35b505f6003193601126101515760209051600d8152f35b505f600319360112610151576020905160108152f35b505f600319360112610151576020905160058152f35b505f600319360112610151576020905160028152f35b505f6003193601126101515760209051600f8152f35b505f6003193601126101515760209051600c8152f35b505f6003193601126101515760209051600b8152f35b505f600319360112610151576020905160118152f35b505f600319360112610151576020905160288152f35b505f600319360112610151576020905160068152f35b505f600319360112610151575160828152602090f35b505f60031936011261015157602090515f8152f35b505f600319360112610151576020905160088152f35b505f6003193601126101515760209051600a8152f35b505f60031936011261015157602090605a6101be565b505f600319360112610151576020905160038152f35b505f600319360112610151576020905160018152f35b5f6003193601126101515780602a60209252f3fea26469706673582212201d3837215e59227e320f492aaa36b4de16eaddfcad8bb231cc1b90b38dea38c964736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x14 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x1294794B EQ PUSH2 0x350 JUMPI POP DUP1 PUSH4 0x18518628 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x28B161CE EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x2D6724E1 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x3DC52C43 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x3F60345A EQ PUSH2 0x2F8 JUMPI DUP1 PUSH4 0x547ACB16 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x6801B442 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x68AA2524 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x7E3EDBF1 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x7EA0CDE9 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x80B1C55B EQ PUSH2 0x275 JUMPI DUP1 PUSH4 0x84EFBFD5 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0xA22425B6 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xAA6CDA91 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xAF815F04 EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0xB2CB247C EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0xBC848769 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0xBDEFAF71 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xD9827217 EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xD9CEBBD9 EQ PUSH2 0x1AC JUMPI DUP1 PUSH4 0xDDE7B13F EQ PUSH2 0x196 JUMPI DUP1 PUSH4 0xDF9D385B EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0xE2CE6C6C EQ PUSH2 0x16B JUMPI DUP1 PUSH4 0xFAB86870 EQ PUSH2 0x155 JUMPI PUSH4 0xFD5DA010 EQ PUSH2 0x13C JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x9 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x7 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD DUP2 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xE DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x42 JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x4 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xD DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x10 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x5 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x2 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xF DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xC DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xB DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x11 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x28 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x6 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI MLOAD PUSH1 0x82 DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x8 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0xA DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x5A PUSH2 0x1BE JUMP JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x3 DUP2 MSTORE RETURN JUMPDEST POP PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x151 JUMPI DUP1 PUSH1 0x2A PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR CODESIZE CALLDATACOPY 0x21 MCOPY MSIZE 0x22 PUSH31 0x320F492AAA36B4DE16EADDFCAD8BB231CC1B90B38DEA38C964736F6C634300 ADDMOD BYTE STOP CALLER ","sourceMap":"831:2493:71:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3319:2;831:2493;3319:2;;;831:2493;;;;;;;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;3319:2;831:2493;;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;19627:2:31;2690:94:71;831:2493;;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;3212:2;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;19627:2:31;831:2493:71;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;19627:2:31;2790:99:71;;831:2493;;;-1:-1:-1;;831:2493:71;;;;;;;;958:1;831:2493;;;;;;-1:-1:-1;;831:2493:71;;;;;;;;;;;;;;-1:-1:-1;;831:2493:71;;;;;;19627:2:31;831:2493:71;;;"},"methodIdentifiers":{"ADD_LIQUIDITY_CUSTOM_OFFSET()":"b2cb247c","AFTER_ADD_LIQUIDITY_OFFSET()":"aa6cda91","AFTER_INITIALIZE_OFFSET()":"3f60345a","AFTER_REMOVE_LIQUIDITY_OFFSET()":"80b1c55b","AFTER_SWAP_OFFSET()":"bdefaf71","AGGREGATE_SWAP_FEE_OFFSET()":"1294794b","AGGREGATE_YIELD_FEE_OFFSET()":"d9cebbd9","BEFORE_ADD_LIQUIDITY_OFFSET()":"dde7b13f","BEFORE_INITIALIZE_OFFSET()":"547acb16","BEFORE_REMOVE_LIQUIDITY_OFFSET()":"bc848769","BEFORE_SWAP_OFFSET()":"a22425b6","DECIMAL_DIFF_BITLENGTH()":"28b161ce","DECIMAL_SCALING_FACTORS_OFFSET()":"3dc52c43","DONATION_OFFSET()":"e2ce6c6c","DYNAMIC_SWAP_FEE_OFFSET()":"84efbfd5","ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET()":"fab86870","PAUSE_WINDOW_END_TIME_OFFSET()":"68aa2524","POOL_INITIALIZED_OFFSET()":"18518628","POOL_PAUSED_OFFSET()":"af815f04","POOL_RECOVERY_MODE_OFFSET()":"2d6724e1","POOL_REGISTERED_OFFSET()":"6801b442","REMOVE_LIQUIDITY_CUSTOM_OFFSET()":"7e3edbf1","STATIC_SWAP_FEE_OFFSET()":"fd5da010","TIMESTAMP_BITLENGTH()":"df9d385b","TOKEN_DECIMAL_DIFFS_BITLENGTH()":"7ea0cde9","UNBALANCED_LIQUIDITY_OFFSET()":"d9827217"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ADD_LIQUIDITY_CUSTOM_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"AFTER_ADD_LIQUIDITY_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"AFTER_INITIALIZE_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"AFTER_REMOVE_LIQUIDITY_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"AFTER_SWAP_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"AGGREGATE_SWAP_FEE_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"AGGREGATE_YIELD_FEE_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEFORE_ADD_LIQUIDITY_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEFORE_INITIALIZE_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEFORE_REMOVE_LIQUIDITY_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEFORE_SWAP_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DECIMAL_DIFF_BITLENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DECIMAL_SCALING_FACTORS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DONATION_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DYNAMIC_SWAP_FEE_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ENABLE_HOOK_ADJUSTED_AMOUNTS_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSE_WINDOW_END_TIME_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_INITIALIZED_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_PAUSED_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_RECOVERY_MODE_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOL_REGISTERED_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOVE_LIQUIDITY_CUSTOM_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STATIC_SWAP_FEE_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIMESTAMP_BITLENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_DECIMAL_DIFFS_BITLENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNBALANCED_LIQUIDITY_OFFSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool). This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e., offsets for each data field) is specified here. There are two libraries for interpreting these data. `HooksConfigLib` parses fields related to hooks, while `PoolConfigLib` contains helpers related to the non-hook-related flags, along with aggregate fee percentages and other data associated with pools.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper functions to read and write the packed configuration flags stored in `_poolConfigBits`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":\"PoolConfigConst\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol":{"PoolConfigLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220dab68a15f572045aa07d6e7b0b451a54cacaf27fdd17312f021b7be189e79eea64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0xB6 DUP11 ISZERO CREATE2 PUSH19 0x45AA07D6E7B0B451A54CACAF27FDD17312F02 SHL PUSH28 0xE189E79EEA64736F6C634300081A0033000000000000000000000000 ","sourceMap":"1279:10890:72:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220dab68a15f572045aa07d6e7b0b451a54cacaf27fdd17312f021b7be189e79eea64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0xB6 DUP11 ISZERO CREATE2 PUSH19 0x45AA07D6E7B0B451A54CACAF27FDD17312F02 SHL PUSH28 0xE189E79EEA64736F6C634300081A0033000000000000000000000000 ","sourceMap":"1279:10890:72:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool). This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e., offsets for each data field) is specified in `PoolConfigConst`. There are two libraries for interpreting these data. `HooksConfigLib` parses fields related to hooks, while this one contains helpers related to the non-hook-related flags, along with aggregate fee percentages and other data associated with pools. The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token configuration, scaling factors, and dynamic information such as current balances and rates.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper functions to read and write the packed hook configuration flags stored in `_poolConfigBits`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":\"PoolConfigLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol":{"PoolDataLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122020b5133652da199cceba5ee49d13a2b4dfd53b260f5b73d2558944fff72bb30564736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 0xB5 SGT CALLDATASIZE MSTORE 0xDA NOT SWAP13 0xCE 0xBA MCOPY 0xE4 SWAP14 SGT LOG2 0xB4 0xDF 0xD5 EXTCODESIZE 0x26 0xF JUMPDEST PUSH20 0xD2558944FFF72BB30564736F6C634300081A0033 ","sourceMap":"1321:8945:73:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122020b5133652da199cceba5ee49d13a2b4dfd53b260f5b73d2558944fff72bb30564736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 0xB5 SGT CALLDATASIZE MSTORE 0xDA NOT SWAP13 0xCE 0xBA MCOPY 0xE4 SWAP14 SGT LOG2 0xB4 0xDF 0xD5 EXTCODESIZE 0x26 0xF JUMPDEST PUSH20 0xD2558944FFF72BB30564736F6C634300081A0033 ","sourceMap":"1321:8945:73:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Note that the entire configuration of each pool is stored in the `_poolConfigBits` mapping (one slot per pool). This includes the data in the `PoolConfig` struct, plus the data in the `HookFlags` struct. The layout (i.e., offsets for each data field) is specified in `PoolConfigConst`. The `PoolData` struct contains the raw bitmap with the entire pool state (`PoolConfigBits`), plus the token configuration, scaling factors, and dynamic information such as current balances and rates.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper functions to read/write a `PoolData` struct.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":\"PoolDataLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol":{"VaultExtensionsLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220a9456a9620cc550162d8e68d6d56998fa4ac91d2ff8023f65414a3e342dcbb2264736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA9 GASLIMIT PUSH11 0x9620CC550162D8E68D6D56 SWAP10 DUP16 LOG4 0xAC SWAP2 0xD2 SELFDESTRUCT DUP1 0x23 0xF6 SLOAD EQ LOG3 0xE3 TIMESTAMP 0xDC 0xBB 0x22 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"897:351:74:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220a9456a9620cc550162d8e68d6d56998fa4ac91d2ff8023f65414a3e342dcbb2264736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA9 GASLIMIT PUSH11 0x9620CC550162D8E68D6D56 SWAP10 DUP16 LOG4 0xAC SWAP2 0xD2 SELFDESTRUCT DUP1 0x23 0xF6 SLOAD EQ LOG3 0xE3 TIMESTAMP 0xDC 0xBB 0x22 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"897:351:74:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"The Vault is composed of three contracts, using the Proxy pattern from OpenZeppelin. `ensureVaultDelegateCall` can be called on the locally stored Vault address by modifiers in extension contracts to ensure that their functions can only be called through the main Vault. Because the storage *layout* is shared (through inheritance of `VaultStorage`), but each contract actually has its own storage, we need to make sure we are always calling in the main Vault context, to avoid referencing storage in the extension contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Ensure functions in extension contracts can only be called through the main Vault.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol\":\"VaultExtensionsLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol\":{\"keccak256\":\"0xf17a6fb82ff8eac940260544aa041e2cf8b826c0f7e205b4d52a4c5394a7ee38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c88893eba6593f2f7ef05e3ffeb61416b6cc630eaad2efa90e77262f3282ab81\",\"dweb:/ipfs/QmX9XhQix9yKT7buiT77igy8Bf1jvwwYGxpmTr4e5mWnQD\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol":{"VaultStateLib":{"abi":[{"inputs":[],"name":"BUFFER_PAUSED_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUERY_DISABLED_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VAULT_PAUSED_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601957610109908161001e823930815050f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c908163227e492d1460a2575080632577aa9014606f5763434e60ca146039575f80fd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112606b5760206040515f8152f35b5f80fd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112606b57602060405160018152f35b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112606b5780600260209252f3fea2646970667358221220bde09b7fb8885246c513cb3600edded70bf3e7e0cee10605618817a603e4dc3864736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x19 JUMPI PUSH2 0x109 SWAP1 DUP2 PUSH2 0x1E DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x227E492D EQ PUSH1 0xA2 JUMPI POP DUP1 PUSH4 0x2577AA90 EQ PUSH1 0x6F JUMPI PUSH4 0x434E60CA EQ PUSH1 0x39 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x6B JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x6B JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x6B JUMPI DUP1 PUSH1 0x2 PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD 0xE0 SWAP12 PUSH32 0xB8885246C513CB3600EDDED70BF3E7E0CEE10605618817A603E4DC3864736F6C PUSH4 0x4300081A STOP CALLER ","sourceMap":"335:1477:75:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260043610156011575f80fd5b5f3560e01c908163227e492d1460a2575080632577aa9014606f5763434e60ca146039575f80fd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112606b5760206040515f8152f35b5f80fd5b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112606b57602060405160018152f35b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112606b5780600260209252f3fea2646970667358221220bde09b7fb8885246c513cb3600edded70bf3e7e0cee10605618817a603e4dc3864736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x227E492D EQ PUSH1 0xA2 JUMPI POP DUP1 PUSH4 0x2577AA90 EQ PUSH1 0x6F JUMPI PUSH4 0x434E60CA EQ PUSH1 0x39 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x6B JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x6B JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x6B JUMPI DUP1 PUSH1 0x2 PUSH1 0x20 SWAP3 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBD 0xE0 SWAP12 PUSH32 0xB8885246C513CB3600EDDED70BF3E7E0CEE10605618817A603E4DC3864736F6C PUSH4 0x4300081A STOP CALLER ","sourceMap":"335:1477:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;568:1;335:1477;;;;;;;;;;;;491:1;335:1477;;;"},"methodIdentifiers":{"BUFFER_PAUSED_OFFSET()":"227e492d","QUERY_DISABLED_OFFSET()":"434e60ca","VAULT_PAUSED_OFFSET()":"2577aa90"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BUFFER_PAUSED_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"QUERY_DISABLED_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_PAUSED_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper functions for reading and writing the `VaultState` struct.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":\"VaultStateLib\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol":{"BasePoolMathMock":{"abi":[{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"maxInvariantRatio","type":"uint256"}],"name":"InvariantRatioAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"minInvariantRatio","type":"uint256"}],"name":"InvariantRatioBelowMin","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256","name":"tokenInIndex","type":"uint256"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeAddLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountInWithFee","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256[]","name":"exactAmounts","type":"uint256[]"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeAddLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","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":"balances","type":"uint256[]"},{"internalType":"enum Rounding","name":"","type":"uint8"}],"name":"computeInvariant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"bptTotalSupply","type":"uint256"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"name":"computeProportionalAmountsIn","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"bptTotalSupply","type":"uint256"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"name":"computeProportionalAmountsOut","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256","name":"tokenOutIndex","type":"uint256"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeRemoveLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOutWithFee","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256","name":"tokenOutIndex","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeRemoveLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","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":[{"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":"","type":"tuple"}],"name":"onSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"computeAddLiquiditySingleTokenExactOut(uint256[],uint256,uint256,uint256,uint256)":"85d5261a","computeAddLiquidityUnbalanced(uint256[],uint256[],uint256,uint256)":"d9c7cc7a","computeBalance(uint256[],uint256,uint256)":"16a0b3e0","computeInvariant(uint256[],uint8)":"984de9e8","computeProportionalAmountsIn(uint256[],uint256,uint256)":"c548e4d8","computeProportionalAmountsOut(uint256[],uint256,uint256)":"da317980","computeRemoveLiquiditySingleTokenExactIn(uint256[],uint256,uint256,uint256,uint256)":"3ab05915","computeRemoveLiquiditySingleTokenExactOut(uint256[],uint256,uint256,uint256,uint256)":"9a87ffbf","getMaximumInvariantRatio()":"273c1adf","getMaximumSwapFeePercentage()":"654cf15d","getMinimumInvariantRatio()":"b677fa56","getMinimumSwapFeePercentage()":"ce20ece7","onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))":"72c98186"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeAddLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInWithFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeAddLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"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\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"computeInvariant\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"name\":\"computeProportionalAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"name\":\"computeProportionalAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeRemoveLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutWithFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeRemoveLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"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\":[{\"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\":\"\",\"type\":\"tuple\"}],\"name\":\"onSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvariantRatioAboveMax(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"maxInvariantRatio\":\"The maximum allowed invariant ratio\"}}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"minInvariantRatio\":\"The minimum allowed invariant ratio\"}}]},\"kind\":\"dev\",\"methods\":{\"getMaximumInvariantRatio()\":{\"returns\":{\"_0\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMaximumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"_0\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The minimum swap fee percentage for a pool\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"InvariantRatioAboveMax(uint256,uint256)\":[{\"notice\":\"An add liquidity operation increased the invariant above the limit.\"}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"notice\":\"A remove liquidity operation decreased the invariant below the limit.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol\":\"BasePoolMathMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":{\"keccak256\":\"0x28078c6fa4d55418c25505d4683642cb51fe55b2155ef7418db6c70631a30d6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://864b91fdc2b69725bcc07f06d9adebe87117561582fa58f1e4410d8928cd205c\",\"dweb:/ipfs/QmWCDsbTxtmEMLhorqfGF1LDMHMqqVnV9sk9mUTPR7eog8\"]},\"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol\":{\"keccak256\":\"0x8d03867c2d8a32b4d3407df0b8e0bc8997eb838c6bc8339e5bbd5fd41cf82910\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://379bc567783a42259380747ad96e284f7fa9264a75bbe6dc1a277959bc9ff0ae\",\"dweb:/ipfs/QmdVAwsacp2tbXGtGdTSnd6FTHKvUYWWdpdvSnyD4zJqnq\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol":{"BasicAuthorizerMock":{"abi":[{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"grantSpecificRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"hasSpecificRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"revokeSpecificRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601557610458908161001a8239f35b5f80fdfe6040608081526004361015610012575f80fd5b5f3560e01c80632f2ff15d14610311578063686c7a1d146102a457806391d14854146102345780639be2a884146101b6578063b7cfddf614610165578063d547741f146100da5763f5407f7714610067575f80fd5b346100d657610075366103c2565b915f526001602052825f2073ffffffffffffffffffffffffffffffffffffffff8092165f52602052825f2091165f526020525f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f80f35b5f80fd5b50346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d65761011161039f565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff825f2091165f526020525f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690555f80f35b50346100d657602090610177366103c2565b915f5260018452825f2073ffffffffffffffffffffffffffffffffffffffff8092165f528452825f2091165f52825260ff815f20541690519015158152f35b50346100d6576101c5366103c2565b9290825f5260209360018552825f209173ffffffffffffffffffffffffffffffffffffffff80911692835f528652835f2091165f52845260ff825f205416928315610215575b5050519015158152f35b5f9081528085528281209181529084528181205460ff1692508061020b565b50346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d65760209061026e61039f565b6004355f525f835273ffffffffffffffffffffffffffffffffffffffff825f2091165f52825260ff815f20541690519015158152f35b50346100d6576102b3366103c2565b915f526001602052825f2073ffffffffffffffffffffffffffffffffffffffff8092165f52602052825f2091165f526020525f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690555f80f35b50346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d65761034861039f565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff825f2091165f526020525f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f80f35b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100d657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126100d6576004359073ffffffffffffffffffffffffffffffffffffffff9060243582811681036100d6579160443590811681036100d6579056fea2646970667358221220273119ff9b55db89767c9a2dc12b8e4d25c4de0646a0fb16ec0f6d1db0c877bf64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x458 SWAP1 DUP2 PUSH2 0x1A DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x686C7A1D EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x9BE2A884 EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0xB7CFDDF6 EQ PUSH2 0x165 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xDA JUMPI PUSH4 0xF5407F77 EQ PUSH2 0x67 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xD6 JUMPI PUSH2 0x75 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP2 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH2 0x111 PUSH2 0x39F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x177 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP2 PUSH0 MSTORE PUSH1 0x1 DUP5 MSTORE DUP3 PUSH0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH0 MSTORE DUP5 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE DUP3 MSTORE PUSH1 0xFF DUP2 PUSH0 KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI PUSH2 0x1C5 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP3 SWAP1 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 DUP6 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE DUP7 MSTORE DUP4 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0xFF DUP3 PUSH0 KECCAK256 SLOAD AND SWAP3 DUP4 ISZERO PUSH2 0x215 JUMPI JUMPDEST POP POP MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP1 DUP6 MSTORE DUP3 DUP2 KECCAK256 SWAP2 DUP2 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP3 POP DUP1 PUSH2 0x20B JUMP JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x26E PUSH2 0x39F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE DUP3 MSTORE PUSH1 0xFF DUP2 PUSH0 KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI PUSH2 0x2B3 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP2 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH2 0x348 PUSH2 0x39F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xD6 JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0x60 SWAP2 ADD SLT PUSH2 0xD6 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0xD6 JUMPI SWAP2 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0xD6 JUMPI SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 BALANCE NOT SELFDESTRUCT SWAP12 SSTORE 0xDB DUP10 PUSH23 0x7C9A2DC12B8E4D25C4DE0646A0FB16EC0F6D1DB0C877BF PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"165:1474:77:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":927,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bytes32t_addresst_address":{"entryPoint":962,"id":null,"parameterSlots":1,"returnSlots":3}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6040608081526004361015610012575f80fd5b5f3560e01c80632f2ff15d14610311578063686c7a1d146102a457806391d14854146102345780639be2a884146101b6578063b7cfddf614610165578063d547741f146100da5763f5407f7714610067575f80fd5b346100d657610075366103c2565b915f526001602052825f2073ffffffffffffffffffffffffffffffffffffffff8092165f52602052825f2091165f526020525f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f80f35b5f80fd5b50346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d65761011161039f565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff825f2091165f526020525f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690555f80f35b50346100d657602090610177366103c2565b915f5260018452825f2073ffffffffffffffffffffffffffffffffffffffff8092165f528452825f2091165f52825260ff815f20541690519015158152f35b50346100d6576101c5366103c2565b9290825f5260209360018552825f209173ffffffffffffffffffffffffffffffffffffffff80911692835f528652835f2091165f52845260ff825f205416928315610215575b5050519015158152f35b5f9081528085528281209181529084528181205460ff1692508061020b565b50346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d65760209061026e61039f565b6004355f525f835273ffffffffffffffffffffffffffffffffffffffff825f2091165f52825260ff815f20541690519015158152f35b50346100d6576102b3366103c2565b915f526001602052825f2073ffffffffffffffffffffffffffffffffffffffff8092165f52602052825f2091165f526020525f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690555f80f35b50346100d657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d65761034861039f565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff825f2091165f526020525f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790555f80f35b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100d657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126100d6576004359073ffffffffffffffffffffffffffffffffffffffff9060243582811681036100d6579160443590811681036100d6579056fea2646970667358221220273119ff9b55db89767c9a2dc12b8e4d25c4de0646a0fb16ec0f6d1db0c877bf64736f6c634300081a0033","opcodes":"PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0x686C7A1D EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x234 JUMPI DUP1 PUSH4 0x9BE2A884 EQ PUSH2 0x1B6 JUMPI DUP1 PUSH4 0xB7CFDDF6 EQ PUSH2 0x165 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xDA JUMPI PUSH4 0xF5407F77 EQ PUSH2 0x67 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xD6 JUMPI PUSH2 0x75 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP2 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH2 0x111 PUSH2 0x39F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x177 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP2 PUSH0 MSTORE PUSH1 0x1 DUP5 MSTORE DUP3 PUSH0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH0 MSTORE DUP5 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE DUP3 MSTORE PUSH1 0xFF DUP2 PUSH0 KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI PUSH2 0x1C5 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP3 SWAP1 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 DUP6 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE DUP7 MSTORE DUP4 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0xFF DUP3 PUSH0 KECCAK256 SLOAD AND SWAP3 DUP4 ISZERO PUSH2 0x215 JUMPI JUMPDEST POP POP MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP1 DUP6 MSTORE DUP3 DUP2 KECCAK256 SWAP2 DUP2 MSTORE SWAP1 DUP5 MSTORE DUP2 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP3 POP DUP1 PUSH2 0x20B JUMP JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x26E PUSH2 0x39F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE DUP3 MSTORE PUSH1 0xFF DUP2 PUSH0 KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI PUSH2 0x2B3 CALLDATASIZE PUSH2 0x3C2 JUMP JUMPDEST SWAP2 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0xD6 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xD6 JUMPI PUSH2 0x348 PUSH2 0x39F JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH0 KECCAK256 SWAP2 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH0 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0xD6 JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0x60 SWAP2 ADD SLT PUSH2 0xD6 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0xD6 JUMPI SWAP2 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0xD6 JUMPI SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 BALANCE NOT SELFDESTRUCT SWAP12 SSTORE 0xDB DUP10 PUSH23 0x7C9A2DC12B8E4D25C4DE0646A0FB16EC0F6D1DB0C877BF PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"165:1474:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1312:4;165:1474;;;;;;;;;;;;;;;;;;;;;;;;1312:4;165:1474;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1594:14;165:1474;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;1594:14;165:1474;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;714:63;;;;;165:1474;;;;;;;;;;714:63;165:1474;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;165:1474:77;714:63;;165:1474;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1422:14;165:1474;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884","grantRole(bytes32,address)":"2f2ff15d","grantSpecificRole(bytes32,address,address)":"f5407f77","hasRole(bytes32,address)":"91d14854","hasSpecificRole(bytes32,address,address)":"b7cfddf6","revokeRole(bytes32,address)":"d547741f","revokeSpecificRole(bytes32,address,address)":"686c7a1d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"grantSpecificRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"hasSpecificRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"revokeSpecificRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"params\":{\"account\":\"Account trying to perform the action\",\"actionId\":\"Identifier for the action to be performed\",\"where\":\"Target contract for the action\"},\"returns\":{\"_0\":\"True if the action is permitted\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"notice\":\"Returns true if `account` can perform the action described by `actionId` in the contract `where`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol\":\"BasicAuthorizerMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-vault/contracts/test/BasicAuthorizerMock.sol\":{\"keccak256\":\"0xf9b2b8c4e606a02c03daf9e80a2db6c68b4da516d6f665b37ac4356cb6e4960b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eb2e3afc61b6e6edca07092d61f1b0e9eba3a87121f0a604d9a5ac0f8d9add99\",\"dweb:/ipfs/QmVGKbJdCVog3Um8ai9KGW9aLWjine4s9hjM2u8TDfoQN6\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol":{"BatchRouterMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IWETH","name":"weth","type":"address"},{"internalType":"contract IPermit2","name":"permit2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[],"name":"TransientIndexOutOfBounds","type":"error"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetCurrentSwapTokenInAmounts","outputs":[{"internalType":"AddressToUintMappingSlot","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetCurrentSwapTokenOutAmounts","outputs":[{"internalType":"AddressToUintMappingSlot","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetCurrentSwapTokensInSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetCurrentSwapTokensOutSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetSettledTokenAmounts","outputs":[{"internalType":"AddressToUintMappingSlot","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactInHookParams","name":"params","type":"tuple"}],"name":"querySwapExactInHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactOutHookParams","name":"params","type":"tuple"}],"name":"querySwapExactOutHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapExactIn","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountIn[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactInHookParams","name":"params","type":"tuple"}],"name":"swapExactInHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsOut","type":"uint256[]"},{"internalType":"address[]","name":"tokensOut","type":"address[]"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapExactOut","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"bool","name":"isBuffer","type":"bool"}],"internalType":"struct IBatchRouter.SwapPathStep[]","name":"steps","type":"tuple[]"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"}],"internalType":"struct IBatchRouter.SwapPathExactAmountOut[]","name":"paths","type":"tuple[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IBatchRouter.SwapExactOutHookParams","name":"params","type":"tuple"}],"name":"swapExactOutHook","outputs":[{"internalType":"uint256[]","name":"pathAmountsIn","type":"uint256[]"},{"internalType":"address[]","name":"tokensIn","type":"address[]"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"finalize_allocation":{"entryPoint":1678,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_7750":{"entryPoint":1651,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateSlot":{"entryPoint":1713,"id":6537,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6101c060408181523461066f57606082614d5e8038038091610021828561068e565b83398101031261066f5781516001600160a01b0392909190838316830361066f576020928382015191858316830361066f57830151948516850361066f5782519061006b82610673565b601382527f4d6f636b204261746368526f75746572207631000000000000000000000000008583015260805280516001600160401b03811161065b575f54916001928381811c91168015610651575b8782101461063d57601f81116105f7575b508590601f8311600114610598579282939183925f9461058d575b50501b915f199060031b1c1916175f555b81519061010382610673565b600c82526101436b2937baba32b921b7b6b6b7b760a11b92838682015284519061012c82610673565b600682526539b2b73232b960d11b878301526106b1565b60a05282519161015283610673565b600c83528483015261018c835161016881610673565b601193848252701a5cd4995d1d5c9b915d1a131bd8dad959607a1b878301526106b1565b60c05260e0526101009384528151906101a482610673565b601382527f63757272656e7453776170546f6b656e73496e00000000000000000000000000848301526101ff8351926101dc84610673565b828452702130ba31b42937baba32b921b7b6b6b7b760791b9384878201526106b1565b93610120948552610356610258855161021781610673565b601481527f63757272656e7453776170546f6b656e734f757400000000000000000000000084820152865161024b81610673565b85815286858201526106b1565b916101409283526102ae865161026d81610673565b601981527f63757272656e7453776170546f6b656e496e416d6f756e7473000000000000008382015287516102a181610673565b86815287848201526106b1565b9361016094855261030487516102c381610673565b601a81527f63757272656e7453776170546f6b656e4f7574416d6f756e74730000000000008482015288516102f781610673565b83815288858201526106b1565b9561018096875287519261031784610673565b601384527f736574746c6564546f6b656e416d6f756e7473000000000000000000000000008185015288519261034c84610673565b83528201526106b1565b936101a094855251946145fa9687610764883960805187818161027d01528181611ad501528181611d3901528181611f7b015281816121d20152818161236b0152818161247c0152818161250a015281816125cc01528181612c0601528181612de501528181612e2d01528181612eab01528181612f5201528181613060015281816130dd01528181613372015281816134a10152818161353e0152818161360401528181613cc501528181613dea015281816140290152818161416e01526143ca015260a0518781816102e10152818161061a015281816119780152612a17015260c0518781816119020152613813015260e051878181602201528181613c5701528181613f3d015281816140b10152614208015251868181610b0f01528181610c23015281816120c70152818161214d015281816131d20152613dc6015251858181610588015281816126c2015281816128a901528181612ab301526137310152518481816103cc01528181611d9c01528181611fe8015281816123ce01528181612630015281816127270152818161288501528181612c6b01526137010152518381816107c801528181611e9c015281816126ee015281816128d5015281816133e7015281816136620152613784015251828181610fd301528181611dc5015281816120190152818161265a0152818161277a0152818161290d01528181612caa015261342901525181818161034e015281816123f80152818161275801528181612cdb01528181612faf01526137620152f35b015192505f806100e6565b90601f198316915f805283885f20935f5b8a888383106105e057505050106105c8575b505050811b015f556100f7565b01515f1960f88460031b161c191690555f80806105bb565b8686015188559096019594850194879350016105a9565b5f8052865f20601f840160051c810191888510610633575b601f0160051c019084905b8281106106285750506100cb565b5f815501849061061a565b909150819061060f565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100ba565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b604081019081106001600160401b0382111761065b57604052565b601f909101601f19168101906001600160401b0382119082101761065b57604052565b9061071e603a60209260405193849181808401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952805191829101603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a81018452018261068e565b5190205f19810190811161074f5760405190602082019081526020825261074482610673565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c806308a465f614610ff65780630f8fb1cc14610fbc57806319c6989f1461096d578063286f580d146108d65780632950286e146107eb57806348bbd869146107b157806354fd4d50146106745780635a3c39871461064b5780635e01eb5a146106065780638a12a08c146105ab5780638c824cd9146105715780638eb1b65e1461046a578063945ed33f146103ef57806396123406146103b5578063ac9650d814610371578063cd791ccc146103375763e3b5dff40361000e5734610333576060806003193601126103335767ffffffffffffffff6004358181116103335761016490369060040161141d565b61016c6112fa565b6044359283116103335761018761018f933690600401611126565b939091612a12565b905f5b83518110156101b357805f876101aa600194886117ea565b51015201610192565b50610227610235610270946101ed5f9488604051936101d185611273565b30855260208501525f19604085015286606085015236916114da565b60808201526040519283917f8a12a08c00000000000000000000000000000000000000000000000000000000602084015260248301611597565b03601f1981018352826112ab565b604051809481927fedfa3568000000000000000000000000000000000000000000000000000000008352602060048401526024830190611154565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215610328576102da926102c5915f91610306575b506020808251830101910161172d565b909391926102de575b60405193849384611088565b0390f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d6102ce565b61032291503d805f833e61031a81836112ab565b8101906116a6565b846102b5565b6040513d5f823e3d90fd5b5f80fd5b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b60206003193601126103335760043567ffffffffffffffff8111610333576103a96103a36102da9236906004016110f5565b906118f4565b60405191829182611179565b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610333576103fd36611023565b610405611a9e565b61040d611acb565b61043b6102da61041c83612a54565b91939094610435606061042e8361149d565b92016114b1565b90612882565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384611088565b60806003193601126103335767ffffffffffffffff6004358181116103335761049790369060040161141d565b906104a0611310565b9060643590811161033357610227610536610270946104fc6104c75f953690600401611126565b6104d033612a12565b97604051946104de86611273565b338652602086015260243560408601521515606085015236916114da565b60808201526040519283917f945ed33f0000000000000000000000000000000000000000000000000000000060208401526024830161182b565b604051809481927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190611154565b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610333576102da6105d46105bf36611023565b6105c7611a9e565b6105cf611acb565b611b94565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009492945d60405193849384611088565b34610333575f6003193601126103335760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b34610333576102da6105d461065f36611023565b610667611a9e565b61066f611acb565b612a54565b34610333575f600319360112610333576040515f80549060018260011c91600184169182156107a7575b602094858510841461077a5785879486865291825f1461073c5750506001146106e3575b506106cf925003836112ab565b6102da604051928284938452830190611154565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8583106107245750506106cf9350820101856106c2565b8054838901850152879450869390920191810161070d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858201526106cf95151560051b85010192508791506106c29050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f169261069e565b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103335760606003193601126103335767ffffffffffffffff6004358181116103335761081d90369060040161141d565b906108266112fa565b60443591821161033357610841610849923690600401611126565b929091612a12565b905f5b845181101561087e57806fffffffffffffffffffffffffffffffff6040610875600194896117ea565b5101520161084c565b506102276102358561089c5f9461027097604051936101d185611273565b60808201526040519283917f5a3c39870000000000000000000000000000000000000000000000000000000060208401526024830161182b565b60806003193601126103335767ffffffffffffffff6004358181116103335761090390369060040161141d565b9061090c611310565b9060643590811161033357610227610536610270946109336104c75f953690600401611126565b60808201526040519283917f08a465f600000000000000000000000000000000000000000000000000000000602084015260248301611597565b60a06003193601126103335767ffffffffffffffff60043511610333573660236004350112156103335767ffffffffffffffff60043560040135116103335736602460c060043560040135026004350101116103335760243567ffffffffffffffff8111610333576109e39036906004016110f5565b67ffffffffffffffff60443511610333576060600319604435360301126103335760643567ffffffffffffffff811161033357610a24903690600401611126565b60843567ffffffffffffffff811161033357610a449036906004016110f5565b949093610a4f611a9e565b806004356004013503610f94575f5b600435600401358110610cf15750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030182121561033357816044350160048101359067ffffffffffffffff82116103335760248260071b360391011361033357610b02575b6102da6103a986865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6118f4565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b1561033357604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff60048301351161033357600482013560071b360385136103335760606064890152600482013590529192869260e484019291905f905b60048101358210610c7357505050602091601f19601f865f9787956001600160a01b03610be76024604435016112e6565b16608488015260448035013560a48801526003198787030160448801528186528786013787868286010152011601030181836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215610328576102da936103a993610c64575b829450819350610ad2565b610c6d9061125f565b84610c59565b9195945091926001600160a01b03610c8a876112e6565b168152602080870135916001600160a01b03831680930361033357600492600192820152610cba604089016129ff565b65ffffffffffff8091166040830152610cd560608a016129ff565b1660608201526080809101970193019050889495939291610bb6565b610d06610cff828486611a83565b36916114da565b604051610d12816111fa565b5f81526020915f838301525f60408301528281015190606060408201519101515f1a91835283830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc81850260043501360301126103335760405190610d7f82611243565b610d92602460c0860260043501016112e6565b808352610da8604460c0870260043501016112e6565b908185850152610dc1606460c0880260043501016112e6565b60408581019190915260043560c08802016084810135606087015260a4810135608087015260c4013560a086015283015183519386015160ff91909116926001600160a01b0383163b15610333575f6001600160a01b03809460e4948b98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af19081610f85575b50610f7b57610e9e6129d0565b906001600160a01b0381511690836001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610328575f92610f4b575b506060015103610f165750506001905b01610a5e565b805115610f235780519101fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091508381813d8311610f74575b610f6381836112ab565b810103126103335751906060610f00565b503d610f59565b5050600190610f10565b610f8e9061125f565b8a610e91565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103335761100436611023565b61100c611a9e565b611014611acb565b61043b6102da61041c83611b94565b60031990602082820112610333576004359167ffffffffffffffff8311610333578260a0920301126103335760040190565b9081518082526020808093019301915f5b828110611074575050505090565b835185529381019392810192600101611066565b93929061109d90606086526060860190611055565b936020948181036020830152602080855192838152019401905f5b8181106110d8575050506110d59394506040818403910152611055565b90565b82516001600160a01b0316865294870194918701916001016110b8565b9181601f840112156103335782359167ffffffffffffffff8311610333576020808501948460051b01011161033357565b9181601f840112156103335782359167ffffffffffffffff8311610333576020838186019501011161033357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106111ae5750505050505090565b90919293949584806111ea837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a51611154565b980193019301919493929061119e565b6060810190811067ffffffffffffffff82111761121657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60c0810190811067ffffffffffffffff82111761121657604052565b67ffffffffffffffff811161121657604052565b60a0810190811067ffffffffffffffff82111761121657604052565b60e0810190811067ffffffffffffffff82111761121657604052565b90601f601f19910116810190811067ffffffffffffffff82111761121657604052565b67ffffffffffffffff81116112165760051b60200190565b35906001600160a01b038216820361033357565b602435906001600160a01b038216820361033357565b60443590811515820361033357565b91909160808184031261033357604090815191608083019467ffffffffffffffff95848110878211176112165782528395611359846112e6565b85526020908185013590811161033357840182601f8201121561033357803590611382826112ce565b9361138f865195866112ab565b8285528385019084606080950284010192818411610333578501915b8383106113cd5750505050508401528181013590830152606090810135910152565b8483830312610333578751906113e2826111fa565b6113eb846112e6565b82526113f88785016112e6565b8783015288840135908115158203610333578288928b899501528152019201916113ab565b81601f8201121561033357803591602091611437846112ce565b9361144560405195866112ab565b808552838086019160051b8301019280841161033357848301915b8483106114705750505050505090565b823567ffffffffffffffff81116103335786916114928484809489010161131f565b815201920191611460565b356001600160a01b03811681036103335790565b3580151581036103335790565b67ffffffffffffffff811161121657601f01601f191660200190565b9291926114e6826114be565b916114f460405193846112ab565b829481845281830111610333578281602093845f960137010152565b9060808101916001600160a01b03808251168352602093848301519460808186015285518092528060a086019601925f905b8382106115645750505050506060816040829301516040850152015191015290565b84518051821689528084015182168985015260409081015115159089015260609097019693820193600190910190611542565b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b83821061161657505050505060808460406110d5959601516060840152606081015115158284015201519060a0601f1982850301910152611154565b90919293958380611651837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a51611510565b980192019201909392916115da565b81601f8201121561033357805190611677826114be565b9261168560405194856112ab565b8284526020838301011161033357815f9260208093018386015e8301015290565b9060208282031261033357815167ffffffffffffffff8111610333576110d59201611660565b9080601f83011215610333578151906020916116e7816112ce565b936116f560405195866112ab565b81855260208086019260051b82010192831161033357602001905b82821061171e575050505090565b81518152908301908301611710565b90916060828403126103335781519167ffffffffffffffff9283811161033357846117599183016116cc565b936020808301518581116103335783019082601f8301121561033357815191611781836112ce565b9261178f60405194856112ab565b808452828085019160051b83010191858311610333578301905b8282106117cb5750505050936040830151908111610333576110d592016116cc565b81516001600160a01b03811681036103335781529083019083016117a9565b80518210156117fe5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b8382106118aa57505050505060808460406110d5959601516060840152606081015115158284015201519060a0601f1982850301910152611154565b909192939583806118e5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a51611510565b9801920192019093929161186e565b91906118ff33612a12565b907f000000000000000000000000000000000000000000000000000000000000000093845c611a0a576001906001865d611938836112ce565b9261194660405194856112ab565b808452601f19611955826112ce565b015f5b8181106119f95750505f5b8181106119b05750505050905f6119a592945d7f0000000000000000000000000000000000000000000000000000000000000000805c916119a7575b5061380a565b565b5f905d5f61199f565b806119dd5f806119c5610cff8996888a611a83565b602081519101305af46119d66129d0565b90306142b5565b6119e782886117ea565b526119f281876117ea565b5001611963565b806060602080938901015201611958565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610333570180359067ffffffffffffffff82116103335760200191813603831361033357565b908210156117fe57611a9a9160051b810190611a32565b9091565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c611a0a576001905d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303611afd57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b90611b33826112ce565b611b4060405191826112ab565b828152601f19611b5082946112ce565b0190602036910137565b91908201809211611b6757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6040810135421161281c5790611bb7611bb0602084018461384d565b9050611b29565b915f5b611bc7602083018361384d565b905081101561272057611bf181611bec611be4602086018661384d565b3693916138a1565b61131f565b936040850151936001600160a01b038651169060208701518051156117fe576020015160400151151580612717575b156126bc57611c45611c318661149d565b8784611c3f60608a016114b1565b92613c36565b5f5b6020880151518110156126ac57611c5c6138e1565b6020890151515f198101908111611b67578214806020830152821582525f146126a5576060890151905b611c948360208c01516117ea565b51604081015190919015611e4757611d2c6001600160a01b03835116936001600160a01b03881685145f14611e40576001945b60405195611cd487611273565b5f8752611ce081613917565b6020870152604086015260609485918d838301526080820152604051809381927f43583be500000000000000000000000000000000000000000000000000000000835260048301613b7b565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f94611e09575b50506020015115611def57816001600160a01b036020611de99360019695611d918c8c6117ea565b5201611dc0828251167f0000000000000000000000000000000000000000000000000000000000000000614319565b5051167f0000000000000000000000000000000000000000000000000000000000000000614363565b01611c47565b602001519097506001600160a01b03169250600190611de9565b60209294509081611e2e92903d10611e39575b611e2681836112ab565b81019061394e565b91505092905f611d69565b503d611e1c565b5f94611cc7565b888a6001600160a01b038495945116806001600160a01b038a16145f1461228b57505081511590506121c757888a801515806121ac575b6120a6575b6001600160a01b03939291611f3682611f6e978b5f95897f0000000000000000000000000000000000000000000000000000000000000000921680885282602052604088205c612095575b5050505b6001611ef58983511660208401998b8b51169080158a1461208f5750839161437c565b999092511694611f0a60809182810190611a32565b93909460405197611f1a89611243565b88523060208901526040880152606087015285015236916114da565b60a0820152604051809681927f2145789700000000000000000000000000000000000000000000000000000000835260048301613b0a565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f94612065575b5060200151156120425791612015826001600160a01b0360019695611fd361203d96866117ea565b51611fde8d8d6117ea565b5261200c828251167f0000000000000000000000000000000000000000000000000000000000000000614319565b505116926117ea565b51907f0000000000000000000000000000000000000000000000000000000000000000614363565b611de9565b9850600192945061205b906001600160a01b03926117ea565b5197511692611de9565b6020919450612085903d805f833e61207d81836112ab565b810190613ac2565b5094919050611fab565b9161437c565b61209e9261449a565b5f8281611ece565b506120b39092919261149d565b916120bd8b614456565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610333576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039485166004820152306024820152908416604482015292871660648401525f8380608481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610328578a611f368d611f6e976001600160a01b03975f9561219d575b50975092505091929350611e83565b6121a69061125f565b5f61218e565b506121b68261149d565b6001600160a01b0316301415611e7e565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916001600160a01b0384511692803b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03949094166004850152306024850152604484018c90525f908490606490829084905af18015610328578a611f368d611f6e976001600160a01b03975f9561227c575b50611ed2565b6122859061125f565b5f612276565b6001600160a01b0360208796949701511690898183145f1461253057612326925061235e97915060016122cc5f96956001600160a01b0393848b511661437c565b50928289511695602089015115158814612507576122e98261149d565b945b6122fa60809384810190611a32565b9590966040519961230a8b611243565b8a521660208901526040880152606087015285015236916114da565b60a0820152604051809581927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301613a51565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315610328575f936124dd575b50602001511561241c57816001600160a01b03602061203d93600196956123c28c8c6117ea565b526123f28383830151167f0000000000000000000000000000000000000000000000000000000000000000614319565b500151167f0000000000000000000000000000000000000000000000000000000000000000614363565b60208181015191516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101859052939a50909116945081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610328576124b2575b50600190611de9565b602090813d83116124d6575b6124c881836112ab565b81010312610333575f6124a9565b503d6124be565b60209193506124fd903d805f833e6124f581836112ab565b8101906139d5565b509391905061239b565b837f000000000000000000000000000000000000000000000000000000000000000016946122eb565b6001600160a01b036125bf9561258793949561255160809b8c810190611a32565b939094604051976125618961128f565b5f8952602089015216604087015260609a8b978888015286015260a085015236916114da565b60c0820152604051809381927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613969565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f9461267e575b50506020015115611def57816001600160a01b03602061203d93600196956126248c8c6117ea565b526126548383830151167f0000000000000000000000000000000000000000000000000000000000000000614319565b500151167f0000000000000000000000000000000000000000000000000000000000000000614363565b6020929450908161269a92903d10611e3957611e2681836112ab565b91505092905f6125fc565b5f90611c86565b5091955090935050600101611bba565b6126e6827f0000000000000000000000000000000000000000000000000000000000000000614319565b5061271286837f0000000000000000000000000000000000000000000000000000000000000000614363565b611c45565b50321515611c20565b505061274b7f0000000000000000000000000000000000000000000000000000000000000000613bca565b916127568351611b29565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b8651811015612813576001906001600160a01b03806127bc838b6117ea565b51165f52856020526127ea60405f205c826127d7858d6117ea565b51165f528860205260405f205c90611b5a565b6127f483876117ea565b526127ff828a6117ea565b51165f52856020525f604081205d0161279d565b50949391509150565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f198201918213600116611b6757565b7f80000000000000000000000000000000000000000000000000000000000000008114611b67575f190190565b907f000000000000000000000000000000000000000000000000000000000000000090815c7f00000000000000000000000000000000000000000000000000000000000000006128d2815c612844565b907f0000000000000000000000000000000000000000000000000000000000000000915b5f8112156129935750505061290a90612844565b917f0000000000000000000000000000000000000000000000000000000000000000925b5f81121561294357505050506119a59061380a565b61298e90825f5261298860205f83828220015c918282528881528860409161297b8a8d8587205c906001600160a01b03891690614009565b8484525281205d84613f66565b50612855565b61292e565b6129cb90825f5261298860205f8a8785848420015c9384845281815261297b8c6040948587205c906001600160a01b03891690613c36565b6128f6565b3d156129fa573d906129e1826114be565b916129ef60405193846112ab565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361033357565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c1615612a4a575050565b909192505d600190565b906040820135421161281c57612a70611bb0602084018461384d565b915f5b612a80602083018361384d565b905081101561372a57612a9d81611bec611be4602086018661384d565b606081015190612ad76001600160a01b038251167f0000000000000000000000000000000000000000000000000000000000000000614319565b506020810151515f198101908111611b67575b5f811215612afd57505050600101612a73565b612b0b8160208401516117ea565b51612b146138e1565b9082156020830152602084015151805f19810111611b67575f190183148083526136e8575b6020820151156136ad5760408401516001600160a01b03855116915b604081015115612d765783916001600160a01b036060926020612bf9970151151580612d6d575b612d46575b5116906001600160a01b0385168203612d3f576001915b60405192612ba584611273565b60018452612bb281613917565b6020840152604083015288838301526080820152604051809581927f43583be500000000000000000000000000000000000000000000000000000000835260048301613b7b565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156103285787918b915f95612d18575b506020015115612d0957612cff9284612c5b612d04979694612cce946117ea565b52612c8f6001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000614319565b506001600160a01b03612ca68460408a015161390a565b91167f0000000000000000000000000000000000000000000000000000000000000000614363565b6001600160a01b038551167f0000000000000000000000000000000000000000000000000000000000000000614363565b612855565b612aea565b505050612d0491935092612855565b6020919550612d359060603d606011611e3957611e2681836112ab565b5095919050612c3a565b5f91612b98565b612d68612d528d61149d565b8d8b611c3f8860408884511693015193016114b1565b612b81565b50321515612b7c565b906001600160a01b03825116806001600160a01b038516145f14613290575060208401516131a25750604051927f967870920000000000000000000000000000000000000000000000000000000084526001600160a01b03831660048501526020846024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa938415610328575f9461316e575b5083916001600160a01b038151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015230602482015260448101959095525f8580606481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561032857612f45955f9261315f575b505b611f366001600160a01b03612f018b82855116836020870151169061437c565b50925116918c6002612f1860809283810190611a32565b92909360405196612f2888611243565b8752306020880152896040880152606087015285015236916114da565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f9461313c575b50602001511561302857908291612d049493612f9e898d6117ea565b52612fd3836001600160a01b0384167f0000000000000000000000000000000000000000000000000000000000000000614363565b8083108061300d575b612fe9575b505050612855565b612fff61300593612ff98b61149d565b9261390a565b916144af565b5f8080612fe1565b50306001600160a01b036130208b61149d565b161415612fdc565b9450908094808210613041575b505050612d0490612855565b916130516020926130d09461390a565b90613086826001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836144af565b60405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561032857613111575b8080613035565b602090813d8311613135575b61312781836112ab565b81010312610333575f61310a565b503d61311d565b6020919450613154903d805f833e61207d81836112ab565b509094919050612f82565b6131689061125f565b5f612edf565b9093506020813d60201161319a575b8161318a602093836112ab565b810103126103335751925f612e15565b3d915061317d565b90926131ad8961149d565b6001600160a01b03309116036131c8575b5f612f4594612ee1565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016936131fc8a61149d565b61320584614456565b90863b15610333576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152306024820152918116604483015285166064820152945f908690608490829084905af190811561032857612f45955f92613281575b509450506131be565b61328a9061125f565b5f613278565b6001600160a01b036020849695940151168a8282145f14613564575050506133656132c75f92846001600160a01b0388511661437c565b929061332d8c6001600160a01b03808a511693895115158614613538576132fc6132f08461149d565b935b6080810190611a32565b9290936040519661330c88611243565b875216602086015260408501528c60608501526002608085015236916114da565b60a0820152604051809381927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301613a51565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115610328575f9161351d575b5060208401518c908a90156135035783836001600160a01b03936133dc6133e2946133d58f9c9b9a989961340b9a6117ea565b51926117ea565b526117ea565b5191167f0000000000000000000000000000000000000000000000000000000000000000614363565b511561344d57612d0492916001600160a01b036020612cff930151167f000000000000000000000000000000000000000000000000000000000000000061449a565b516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024810191909152602081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610328576134d8575b50612d0490612855565b602090813d83116134fc575b6134ee81836112ab565b81010312610333575f6134ce565b503d6134e4565b5050909150613514929396506117ea565b5193849161340b565b61353191503d805f833e6124f581836112ab565b90506133a2565b6132fc827f000000000000000000000000000000000000000000000000000000000000000016936132f2565b6135f79650906135bf916060948b61358460809998999384810190611a32565b939094604051976135948961128f565b6001895260208901526001600160a01b038b1660408901528888015286015260a085015236916114da565b60c0820152604051809581927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613969565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156103285787918b915f95613686575b506020015115612d0957612cff928461365e612d049796946001600160a01b03946117ea565b52167f0000000000000000000000000000000000000000000000000000000000000000614363565b60209195506136a39060603d606011611e3957611e2681836112ab565b5095919050613638565b6fffffffffffffffffffffffffffffffff6001600160a01b0360206136de818801516136d888612844565b906117ea565b5101511691612b55565b613725856001600160a01b0360208401611dc0828251167f0000000000000000000000000000000000000000000000000000000000000000614319565b612b39565b50506137557f0000000000000000000000000000000000000000000000000000000000000000613bca565b916137608351611b29565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b8651811015612813576001906001600160a01b03806137c6838b6117ea565b51165f52856020526137e160405f205c826127d7858d6117ea565b6137eb83876117ea565b526137f6828a6117ea565b51165f52856020525f604081205d016137a7565b478015613849577f00000000000000000000000000000000000000000000000000000000000000005c613849576001600160a01b036119a59216614239565b5050565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610333570180359067ffffffffffffffff821161033357602001918160051b3603831361033357565b91908110156117fe5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181360301821215610333570190565b604051906040820182811067ffffffffffffffff821117611216576040525f6020838281520152565b91908203918211611b6757565b6002111561392157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90816060910312610333578051916040602083015192015190565b61010060c06110d59360208452805161398181613917565b602085015260208101516001600160a01b0380911660408601528060408301511660608601526060820151166080850152608081015160a085015260a08101518285015201519160e0808201520190611154565b90916060828403126103335781519167ffffffffffffffff928381116103335784613a019183016116cc565b936020820151936040830151908111610333576110d59201611660565b9081518082526020808093019301915f5b828110613a3d575050505090565b835185529381019392810192600101613a2f565b602081526001600160a01b038083511660208301526020830151166040820152613a8a604083015160c0606084015260e0830190613a1e565b906060830151608082015260808301516005811015613921576110d59360a0918284015201519060c0601f1982850301910152611154565b916060838303126103335782519260208101519267ffffffffffffffff938481116103335781613af39184016116cc565b936040830151908111610333576110d59201611660565b602081526001600160a01b03808351166020830152602083015116604082015260408201516060820152613b4d606083015160c0608084015260e0830190613a1e565b9060808301516004811015613921576110d59360a0918284015201519060c0601f1982850301910152611154565b91909160808060a08301948051613b9181613917565b84526020810151613ba181613917565b60208501526001600160a01b036040820151166040850152606081015160608501520151910152565b90815c613bd6816112ce565b613be360405191826112ab565b818152613bef826112ce565b601f196020910136602084013781945f5b848110613c0e575050505050565b600190825f5280845f20015c6001600160a01b03613c2c83886117ea565b9116905201613c00565b919280613f31575b15613daa575050804710613d82576001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001691823b1561033357604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f915f8160048185895af1801561032857613d6b575b506044602092937f00000000000000000000000000000000000000000000000000000000000000001694613cf18387836144af565b8460405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115613d5f5750613d385750565b602090813d8311613d58575b613d4e81836112ab565b8101031261033357565b503d613d44565b604051903d90823e3d90fd5b60209250613d789061125f565b60445f9250613cbc565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b90915f9080613dba575b50505050565b6001600160a01b0393847f00000000000000000000000000000000000000000000000000000000000000001694807f00000000000000000000000000000000000000000000000000000000000000001691613e1484614456565b96803b15610333576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015297821660448901529186161660648701525f908690608490829084905af194851561032857613ed995613f1d575b5082936020936040518097819582947f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af1908115613d5f5750613ef2575b808080613db4565b602090813d8311613f16575b613f0881836112ab565b81010312610333575f613eea565b503d613efe565b60209350613f2a9061125f565b5f92613e88565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690821614613c3e565b6001810191805f5260209183835260405f205c8015155f14614000575f1990818101835c8380820191828403613fc3575b5050505050815c81810192818411611b67575f93815d835284832001015d5f52525f604081205d600190565b613fd0613fe09388614593565b865f52885f2001015c9185614593565b835f52808383885f2001015d5f5285855260405f205d5f80808381613f97565b50505050505f90565b5f9493831561423157806141fc575b15614160576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af180156103285761414d575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b156141495781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af1801561413e57614126575b506119a593945016614239565b614130869161125f565b61413a5784614119565b8480fd5b6040513d88823e3d90fd5b5080fd5b61415891955061125f565b5f935f6140ac565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af18015610328576141f35750565b6119a59061125f565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614614018565b505050509050565b814710614289575f8080936001600160a01b038294165af16142596129d0565b501561426157565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b906142ca575080511561426157805190602001fd5b81511580614310575b6142db575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156142d3565b6001810190825f528160205260405f205c155f1461435c57805c815f52838160205f20015d60018101809111611b6757815d5c915f5260205260405f205d600190565b5050505f90565b905f5260205261437860405f2091825c611b5a565b905d565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa93841561444c575f935f95614415575b505061441261440b8594611b29565b94856117ea565b52565b809295508194503d8311614445575b61442e81836112ab565b810103126103335760208251920151925f806143fc565b503d614424565b83513d5f823e3d90fd5b6001600160a01b039081811161446a571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b905f5260205261437860405f2091825c61390a565b6040519260208401907fa9059cbb0000000000000000000000000000000000000000000000000000000082526001600160a01b038094166024860152604485015260448452608084019084821067ffffffffffffffff8311176112165761452e935f9384936040521694519082865af16145276129d0565b90836142b5565b805190811515918261456f575b50506145445750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81925090602091810103126103335760200151801590811503610333575f8061453b565b5c111561459c57565b7f0f4ae0e4000000000000000000000000000000000000000000000000000000005f5260045ffdfea264697066735822122031fc7f06ca6189cdad3818ad909aa309478670bbcc4e4508a1cdfdabf84556c464736f6c634300081a0033","opcodes":"PUSH2 0x1C0 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH2 0x66F JUMPI PUSH1 0x60 DUP3 PUSH2 0x4D5E DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x21 DUP3 DUP6 PUSH2 0x68E JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x66F JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP2 SWAP1 DUP4 DUP4 AND DUP4 SUB PUSH2 0x66F JUMPI PUSH1 0x20 SWAP3 DUP4 DUP3 ADD MLOAD SWAP2 DUP6 DUP4 AND DUP4 SUB PUSH2 0x66F JUMPI DUP4 ADD MLOAD SWAP5 DUP6 AND DUP6 SUB PUSH2 0x66F JUMPI DUP3 MLOAD SWAP1 PUSH2 0x6B DUP3 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x13 DUP3 MSTORE PUSH32 0x4D6F636B204261746368526F7574657220763100000000000000000000000000 DUP6 DUP4 ADD MSTORE PUSH1 0x80 MSTORE DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x65B JUMPI PUSH0 SLOAD SWAP2 PUSH1 0x1 SWAP3 DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x651 JUMPI JUMPDEST DUP8 DUP3 LT EQ PUSH2 0x63D JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x5F7 JUMPI JUMPDEST POP DUP6 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x598 JUMPI SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0x58D JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE JUMPDEST DUP2 MLOAD SWAP1 PUSH2 0x103 DUP3 PUSH2 0x673 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH2 0x143 PUSH12 0x2937BABA32B921B7B6B6B7B7 PUSH1 0xA1 SHL SWAP3 DUP4 DUP7 DUP3 ADD MSTORE DUP5 MLOAD SWAP1 PUSH2 0x12C DUP3 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x6 DUP3 MSTORE PUSH6 0x39B2B73232B9 PUSH1 0xD1 SHL DUP8 DUP4 ADD MSTORE PUSH2 0x6B1 JUMP JUMPDEST PUSH1 0xA0 MSTORE DUP3 MLOAD SWAP2 PUSH2 0x152 DUP4 PUSH2 0x673 JUMP JUMPDEST PUSH1 0xC DUP4 MSTORE DUP5 DUP4 ADD MSTORE PUSH2 0x18C DUP4 MLOAD PUSH2 0x168 DUP2 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x11 SWAP4 DUP5 DUP3 MSTORE PUSH17 0x1A5CD4995D1D5C9B915D1A131BD8DAD959 PUSH1 0x7A SHL DUP8 DUP4 ADD MSTORE PUSH2 0x6B1 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP4 DUP5 MSTORE DUP2 MLOAD SWAP1 PUSH2 0x1A4 DUP3 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x13 DUP3 MSTORE PUSH32 0x63757272656E7453776170546F6B656E73496E00000000000000000000000000 DUP5 DUP4 ADD MSTORE PUSH2 0x1FF DUP4 MLOAD SWAP3 PUSH2 0x1DC DUP5 PUSH2 0x673 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH17 0x2130BA31B42937BABA32B921B7B6B6B7B7 PUSH1 0x79 SHL SWAP4 DUP5 DUP8 DUP3 ADD MSTORE PUSH2 0x6B1 JUMP JUMPDEST SWAP4 PUSH2 0x120 SWAP5 DUP6 MSTORE PUSH2 0x356 PUSH2 0x258 DUP6 MLOAD PUSH2 0x217 DUP2 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x14 DUP2 MSTORE PUSH32 0x63757272656E7453776170546F6B656E734F7574000000000000000000000000 DUP5 DUP3 ADD MSTORE DUP7 MLOAD PUSH2 0x24B DUP2 PUSH2 0x673 JUMP JUMPDEST DUP6 DUP2 MSTORE DUP7 DUP6 DUP3 ADD MSTORE PUSH2 0x6B1 JUMP JUMPDEST SWAP2 PUSH2 0x140 SWAP3 DUP4 MSTORE PUSH2 0x2AE DUP7 MLOAD PUSH2 0x26D DUP2 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x19 DUP2 MSTORE PUSH32 0x63757272656E7453776170546F6B656E496E416D6F756E747300000000000000 DUP4 DUP3 ADD MSTORE DUP8 MLOAD PUSH2 0x2A1 DUP2 PUSH2 0x673 JUMP JUMPDEST DUP7 DUP2 MSTORE DUP8 DUP5 DUP3 ADD MSTORE PUSH2 0x6B1 JUMP JUMPDEST SWAP4 PUSH2 0x160 SWAP5 DUP6 MSTORE PUSH2 0x304 DUP8 MLOAD PUSH2 0x2C3 DUP2 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x1A DUP2 MSTORE PUSH32 0x63757272656E7453776170546F6B656E4F7574416D6F756E7473000000000000 DUP5 DUP3 ADD MSTORE DUP9 MLOAD PUSH2 0x2F7 DUP2 PUSH2 0x673 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP9 DUP6 DUP3 ADD MSTORE PUSH2 0x6B1 JUMP JUMPDEST SWAP6 PUSH2 0x180 SWAP7 DUP8 MSTORE DUP8 MLOAD SWAP3 PUSH2 0x317 DUP5 PUSH2 0x673 JUMP JUMPDEST PUSH1 0x13 DUP5 MSTORE PUSH32 0x736574746C6564546F6B656E416D6F756E747300000000000000000000000000 DUP2 DUP6 ADD MSTORE DUP9 MLOAD SWAP3 PUSH2 0x34C DUP5 PUSH2 0x673 JUMP JUMPDEST DUP4 MSTORE DUP3 ADD MSTORE PUSH2 0x6B1 JUMP JUMPDEST SWAP4 PUSH2 0x1A0 SWAP5 DUP6 MSTORE MLOAD SWAP5 PUSH2 0x45FA SWAP7 DUP8 PUSH2 0x764 DUP9 CODECOPY PUSH1 0x80 MLOAD DUP8 DUP2 DUP2 PUSH2 0x27D ADD MSTORE DUP2 DUP2 PUSH2 0x1AD5 ADD MSTORE DUP2 DUP2 PUSH2 0x1D39 ADD MSTORE DUP2 DUP2 PUSH2 0x1F7B ADD MSTORE DUP2 DUP2 PUSH2 0x21D2 ADD MSTORE DUP2 DUP2 PUSH2 0x236B ADD MSTORE DUP2 DUP2 PUSH2 0x247C ADD MSTORE DUP2 DUP2 PUSH2 0x250A ADD MSTORE DUP2 DUP2 PUSH2 0x25CC ADD MSTORE DUP2 DUP2 PUSH2 0x2C06 ADD MSTORE DUP2 DUP2 PUSH2 0x2DE5 ADD MSTORE DUP2 DUP2 PUSH2 0x2E2D ADD MSTORE DUP2 DUP2 PUSH2 0x2EAB ADD MSTORE DUP2 DUP2 PUSH2 0x2F52 ADD MSTORE DUP2 DUP2 PUSH2 0x3060 ADD MSTORE DUP2 DUP2 PUSH2 0x30DD ADD MSTORE DUP2 DUP2 PUSH2 0x3372 ADD MSTORE DUP2 DUP2 PUSH2 0x34A1 ADD MSTORE DUP2 DUP2 PUSH2 0x353E ADD MSTORE DUP2 DUP2 PUSH2 0x3604 ADD MSTORE DUP2 DUP2 PUSH2 0x3CC5 ADD MSTORE DUP2 DUP2 PUSH2 0x3DEA ADD MSTORE DUP2 DUP2 PUSH2 0x4029 ADD MSTORE DUP2 DUP2 PUSH2 0x416E ADD MSTORE PUSH2 0x43CA ADD MSTORE PUSH1 0xA0 MLOAD DUP8 DUP2 DUP2 PUSH2 0x2E1 ADD MSTORE DUP2 DUP2 PUSH2 0x61A ADD MSTORE DUP2 DUP2 PUSH2 0x1978 ADD MSTORE PUSH2 0x2A17 ADD MSTORE PUSH1 0xC0 MLOAD DUP8 DUP2 DUP2 PUSH2 0x1902 ADD MSTORE PUSH2 0x3813 ADD MSTORE PUSH1 0xE0 MLOAD DUP8 DUP2 DUP2 PUSH1 0x22 ADD MSTORE DUP2 DUP2 PUSH2 0x3C57 ADD MSTORE DUP2 DUP2 PUSH2 0x3F3D ADD MSTORE DUP2 DUP2 PUSH2 0x40B1 ADD MSTORE PUSH2 0x4208 ADD MSTORE MLOAD DUP7 DUP2 DUP2 PUSH2 0xB0F ADD MSTORE DUP2 DUP2 PUSH2 0xC23 ADD MSTORE DUP2 DUP2 PUSH2 0x20C7 ADD MSTORE DUP2 DUP2 PUSH2 0x214D ADD MSTORE DUP2 DUP2 PUSH2 0x31D2 ADD MSTORE PUSH2 0x3DC6 ADD MSTORE MLOAD DUP6 DUP2 DUP2 PUSH2 0x588 ADD MSTORE DUP2 DUP2 PUSH2 0x26C2 ADD MSTORE DUP2 DUP2 PUSH2 0x28A9 ADD MSTORE DUP2 DUP2 PUSH2 0x2AB3 ADD MSTORE PUSH2 0x3731 ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x3CC ADD MSTORE DUP2 DUP2 PUSH2 0x1D9C ADD MSTORE DUP2 DUP2 PUSH2 0x1FE8 ADD MSTORE DUP2 DUP2 PUSH2 0x23CE ADD MSTORE DUP2 DUP2 PUSH2 0x2630 ADD MSTORE DUP2 DUP2 PUSH2 0x2727 ADD MSTORE DUP2 DUP2 PUSH2 0x2885 ADD MSTORE DUP2 DUP2 PUSH2 0x2C6B ADD MSTORE PUSH2 0x3701 ADD MSTORE MLOAD DUP4 DUP2 DUP2 PUSH2 0x7C8 ADD MSTORE DUP2 DUP2 PUSH2 0x1E9C ADD MSTORE DUP2 DUP2 PUSH2 0x26EE ADD MSTORE DUP2 DUP2 PUSH2 0x28D5 ADD MSTORE DUP2 DUP2 PUSH2 0x33E7 ADD MSTORE DUP2 DUP2 PUSH2 0x3662 ADD MSTORE PUSH2 0x3784 ADD MSTORE MLOAD DUP3 DUP2 DUP2 PUSH2 0xFD3 ADD MSTORE DUP2 DUP2 PUSH2 0x1DC5 ADD MSTORE DUP2 DUP2 PUSH2 0x2019 ADD MSTORE DUP2 DUP2 PUSH2 0x265A ADD MSTORE DUP2 DUP2 PUSH2 0x277A ADD MSTORE DUP2 DUP2 PUSH2 0x290D ADD MSTORE DUP2 DUP2 PUSH2 0x2CAA ADD MSTORE PUSH2 0x3429 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x34E ADD MSTORE DUP2 DUP2 PUSH2 0x23F8 ADD MSTORE DUP2 DUP2 PUSH2 0x2758 ADD MSTORE DUP2 DUP2 PUSH2 0x2CDB ADD MSTORE DUP2 DUP2 PUSH2 0x2FAF ADD MSTORE PUSH2 0x3762 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xE6 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP2 PUSH0 DUP1 MSTORE DUP4 DUP9 PUSH0 KECCAK256 SWAP4 PUSH0 JUMPDEST DUP11 DUP9 DUP4 DUP4 LT PUSH2 0x5E0 JUMPI POP POP POP LT PUSH2 0x5C8 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH2 0xF7 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x5BB JUMP JUMPDEST DUP7 DUP7 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP ADD PUSH2 0x5A9 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP7 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 DUP9 DUP6 LT PUSH2 0x633 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 DUP5 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x628 JUMPI POP POP PUSH2 0xCB JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x61A JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x60F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xBA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x65B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x65B JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x71E PUSH1 0x3A PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 DUP2 DUP1 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x68E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x74F JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x744 DUP3 PUSH2 0x673 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A465F6 EQ PUSH2 0xFF6 JUMPI DUP1 PUSH4 0xF8FB1CC EQ PUSH2 0xFBC JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x96D JUMPI DUP1 PUSH4 0x286F580D EQ PUSH2 0x8D6 JUMPI DUP1 PUSH4 0x2950286E EQ PUSH2 0x7EB JUMPI DUP1 PUSH4 0x48BBD869 EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0x5A3C3987 EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x606 JUMPI DUP1 PUSH4 0x8A12A08C EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0x8C824CD9 EQ PUSH2 0x571 JUMPI DUP1 PUSH4 0x8EB1B65E EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x945ED33F EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0x96123406 EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0xCD791CCC EQ PUSH2 0x337 JUMPI PUSH4 0xE3B5DFF4 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x333 JUMPI PUSH1 0x60 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x164 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST PUSH2 0x16C PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x333 JUMPI PUSH2 0x187 PUSH2 0x18F SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x2A12 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP1 PUSH0 DUP8 PUSH2 0x1AA PUSH1 0x1 SWAP5 DUP9 PUSH2 0x17EA JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x192 JUMP JUMPDEST POP PUSH2 0x227 PUSH2 0x235 PUSH2 0x270 SWAP5 PUSH2 0x1ED PUSH0 SWAP5 DUP9 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1D1 DUP6 PUSH2 0x1273 JUMP JUMPDEST ADDRESS DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH0 NOT PUSH1 0x40 DUP6 ADD MSTORE DUP7 PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A12A08C00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x1597 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x12AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2DA SWAP3 PUSH2 0x2C5 SWAP2 PUSH0 SWAP2 PUSH2 0x306 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x172D JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x2DE JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x1088 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x2CE JUMP JUMPDEST PUSH2 0x322 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x31A DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x16A6 JUMP JUMPDEST DUP5 PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x3A9 PUSH2 0x3A3 PUSH2 0x2DA SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x10F5 JUMP JUMPDEST SWAP1 PUSH2 0x18F4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1179 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x3FD CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x405 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x40D PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x43B PUSH2 0x2DA PUSH2 0x41C DUP4 PUSH2 0x2A54 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP5 PUSH2 0x435 PUSH1 0x60 PUSH2 0x42E DUP4 PUSH2 0x149D JUMP JUMPDEST SWAP3 ADD PUSH2 0x14B1 JUMP JUMPDEST SWAP1 PUSH2 0x2882 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x497 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST SWAP1 PUSH2 0x4A0 PUSH2 0x1310 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x227 PUSH2 0x536 PUSH2 0x270 SWAP5 PUSH2 0x4FC PUSH2 0x4C7 PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH2 0x4D0 CALLER PUSH2 0x2A12 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x4DE DUP7 PUSH2 0x1273 JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x945ED33F00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x182B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x2DA PUSH2 0x5D4 PUSH2 0x5BF CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x5C7 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x5CF PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1B94 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP5 SWAP3 SWAP5 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x1088 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x2DA PUSH2 0x5D4 PUSH2 0x65F CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x667 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x66F PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x2A54 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x7A7 JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x77A JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x73C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x6E3 JUMPI JUMPDEST POP PUSH2 0x6CF SWAP3 POP SUB DUP4 PUSH2 0x12AB JUMP JUMPDEST PUSH2 0x2DA PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x724 JUMPI POP POP PUSH2 0x6CF SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x6C2 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x70D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x6CF SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x6C2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x69E JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x81D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST SWAP1 PUSH2 0x826 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x333 JUMPI PUSH2 0x841 PUSH2 0x849 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0x2A12 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x87E JUMPI DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x875 PUSH1 0x1 SWAP5 DUP10 PUSH2 0x17EA JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x84C JUMP JUMPDEST POP PUSH2 0x227 PUSH2 0x235 DUP6 PUSH2 0x89C PUSH0 SWAP5 PUSH2 0x270 SWAP8 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1D1 DUP6 PUSH2 0x1273 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5A3C398700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x182B JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x903 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST SWAP1 PUSH2 0x90C PUSH2 0x1310 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x227 PUSH2 0x536 PUSH2 0x270 SWAP5 PUSH2 0x933 PUSH2 0x4C7 PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A465F600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x1597 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x333 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x333 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x333 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x9E3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x10F5 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x333 JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x333 JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0xA24 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0xA44 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x10F5 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0xA4F PUSH2 0x1A9E JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0xF94 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0xCF1 JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x333 JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x333 JUMPI PUSH2 0xB02 JUMPI JUMPDEST PUSH2 0x2DA PUSH2 0x3A9 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x18F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x333 JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x333 JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0xC73 JUMPI POP POP POP PUSH1 0x20 SWAP2 PUSH1 0x1F NOT PUSH1 0x1F DUP7 PUSH0 SWAP8 DUP8 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xBE7 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x12E6 JUMP JUMPDEST AND PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP9 ADD MSTORE PUSH1 0x3 NOT DUP8 DUP8 SUB ADD PUSH1 0x44 DUP9 ADD MSTORE DUP2 DUP7 MSTORE DUP8 DUP7 ADD CALLDATACOPY DUP8 DUP7 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD SUB ADD DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2DA SWAP4 PUSH2 0x3A9 SWAP4 PUSH2 0xC64 JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0xC6D SWAP1 PUSH2 0x125F JUMP JUMPDEST DUP5 PUSH2 0xC59 JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC8A DUP8 PUSH2 0x12E6 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x333 JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0xCBA PUSH1 0x40 DUP10 ADD PUSH2 0x29FF JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xCD5 PUSH1 0x60 DUP11 ADD PUSH2 0x29FF JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0xBB6 JUMP JUMPDEST PUSH2 0xD06 PUSH2 0xCFF DUP3 DUP5 DUP7 PUSH2 0x1A83 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD12 DUP2 PUSH2 0x11FA JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH1 0x20 SWAP2 PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE DUP3 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0xD7F DUP3 PUSH2 0x1243 JUMP JUMPDEST PUSH2 0xD92 PUSH1 0x24 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x12E6 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0xDA8 PUSH1 0x44 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x12E6 JUMP JUMPDEST SWAP1 DUP2 DUP6 DUP6 ADD MSTORE PUSH2 0xDC1 PUSH1 0x64 PUSH1 0xC0 DUP9 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP9 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP12 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0xF85 JUMPI JUMPDEST POP PUSH2 0xF7B JUMPI PUSH2 0xE9E PUSH2 0x29D0 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP3 PUSH2 0xF4B JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0xF16 JUMPI POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0xA5E JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xF23 JUMPI DUP1 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0xF74 JUMPI JUMPDEST PUSH2 0xF63 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0xF00 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF59 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0xF10 JUMP JUMPDEST PUSH2 0xF8E SWAP1 PUSH2 0x125F JUMP JUMPDEST DUP11 PUSH2 0xE91 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x1004 CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x100C PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x1014 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x43B PUSH2 0x2DA PUSH2 0x41C DUP4 PUSH2 0x1B94 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x333 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x333 JUMPI DUP3 PUSH1 0xA0 SWAP3 SUB ADD SLT PUSH2 0x333 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1074 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1066 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0x109D SWAP1 PUSH1 0x60 DUP7 MSTORE PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1055 JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP5 DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP1 DUP6 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x10D8 JUMPI POP POP POP PUSH2 0x10D5 SWAP4 SWAP5 POP PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x1055 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 MSTORE SWAP5 DUP8 ADD SWAP5 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x10B8 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x333 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x333 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x11AE JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x11EA DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x1154 JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1216 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SLT PUSH2 0x333 JUMPI PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF SWAP6 DUP5 DUP2 LT DUP8 DUP3 GT OR PUSH2 0x1216 JUMPI DUP3 MSTORE DUP4 SWAP6 PUSH2 0x1359 DUP5 PUSH2 0x12E6 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI DUP5 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1382 DUP3 PUSH2 0x12CE JUMP JUMPDEST SWAP4 PUSH2 0x138F DUP7 MLOAD SWAP6 DUP7 PUSH2 0x12AB JUMP JUMPDEST DUP3 DUP6 MSTORE DUP4 DUP6 ADD SWAP1 DUP5 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP2 DUP5 GT PUSH2 0x333 JUMPI DUP6 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x13CD JUMPI POP POP POP POP POP DUP5 ADD MSTORE DUP2 DUP2 ADD CALLDATALOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST DUP5 DUP4 DUP4 SUB SLT PUSH2 0x333 JUMPI DUP8 MLOAD SWAP1 PUSH2 0x13E2 DUP3 PUSH2 0x11FA JUMP JUMPDEST PUSH2 0x13EB DUP5 PUSH2 0x12E6 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x13F8 DUP8 DUP6 ADD PUSH2 0x12E6 JUMP JUMPDEST DUP8 DUP4 ADD MSTORE DUP9 DUP5 ADD CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x333 JUMPI DUP3 DUP9 SWAP3 DUP12 DUP10 SWAP6 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x13AB JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x1437 DUP5 PUSH2 0x12CE JUMP JUMPDEST SWAP4 PUSH2 0x1445 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x12AB JUMP JUMPDEST DUP1 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP3 DUP1 DUP5 GT PUSH2 0x333 JUMPI DUP5 DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1470 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI DUP7 SWAP2 PUSH2 0x1492 DUP5 DUP5 DUP1 SWAP5 DUP10 ADD ADD PUSH2 0x131F JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1460 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x333 JUMPI SWAP1 JUMP JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x333 JUMPI SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1216 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x14E6 DUP3 PUSH2 0x14BE JUMP JUMPDEST SWAP2 PUSH2 0x14F4 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x12AB JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x333 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 DUP4 ADD MLOAD SWAP5 PUSH1 0x80 DUP2 DUP7 ADD MSTORE DUP6 MLOAD DUP1 SWAP3 MSTORE DUP1 PUSH1 0xA0 DUP7 ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1564 JUMPI POP POP POP POP POP PUSH1 0x60 DUP2 PUSH1 0x40 DUP3 SWAP4 ADD MLOAD PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP1 MLOAD DUP3 AND DUP10 MSTORE DUP1 DUP5 ADD MLOAD DUP3 AND DUP10 DUP6 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP10 ADD MSTORE PUSH1 0x60 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1616 JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0x10D5 SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x1651 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x1510 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x15DA JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1677 DUP3 PUSH2 0x14BE JUMP JUMPDEST SWAP3 PUSH2 0x1685 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x12AB JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x333 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x333 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x1660 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x16E7 DUP2 PUSH2 0x12CE JUMP JUMPDEST SWAP4 PUSH2 0x16F5 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x12AB JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x333 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x171E JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1710 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x333 JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x333 JUMPI DUP5 PUSH2 0x1759 SWAP2 DUP4 ADD PUSH2 0x16CC JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP6 DUP2 GT PUSH2 0x333 JUMPI DUP4 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP2 MLOAD SWAP2 PUSH2 0x1781 DUP4 PUSH2 0x12CE JUMP JUMPDEST SWAP3 PUSH2 0x178F PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x12AB JUMP JUMPDEST DUP1 DUP5 MSTORE DUP3 DUP1 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x333 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x17CB JUMPI POP POP POP POP SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x16CC JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x333 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x17A9 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x17FE JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x18AA JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0x10D5 SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x18E5 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x1510 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x186E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x18FF CALLER PUSH2 0x2A12 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x1A0A JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x1938 DUP4 PUSH2 0x12CE JUMP JUMPDEST SWAP3 PUSH2 0x1946 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x12AB JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x1955 DUP3 PUSH2 0x12CE JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x19F9 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x19B0 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x19A5 SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x19A7 JUMPI JUMPDEST POP PUSH2 0x380A JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x199F JUMP JUMPDEST DUP1 PUSH2 0x19DD PUSH0 DUP1 PUSH2 0x19C5 PUSH2 0xCFF DUP10 SWAP7 DUP9 DUP11 PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x19D6 PUSH2 0x29D0 JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x42B5 JUMP JUMPDEST PUSH2 0x19E7 DUP3 DUP9 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x19F2 DUP2 DUP8 PUSH2 0x17EA JUMP JUMPDEST POP ADD PUSH2 0x1963 JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x1958 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x333 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x17FE JUMPI PUSH2 0x1A9A SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x1A0A JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x1AFD JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x1B33 DUP3 PUSH2 0x12CE JUMP JUMPDEST PUSH2 0x1B40 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x12AB JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x1B50 DUP3 SWAP5 PUSH2 0x12CE JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1B67 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x281C JUMPI SWAP1 PUSH2 0x1BB7 PUSH2 0x1BB0 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x384D JUMP JUMPDEST SWAP1 POP PUSH2 0x1B29 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x1BC7 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x384D JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x2720 JUMPI PUSH2 0x1BF1 DUP2 PUSH2 0x1BEC PUSH2 0x1BE4 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x384D JUMP JUMPDEST CALLDATASIZE SWAP4 SWAP2 PUSH2 0x38A1 JUMP JUMPDEST PUSH2 0x131F JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP6 ADD MLOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 MLOAD AND SWAP1 PUSH1 0x20 DUP8 ADD MLOAD DUP1 MLOAD ISZERO PUSH2 0x17FE JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x2717 JUMPI JUMPDEST ISZERO PUSH2 0x26BC JUMPI PUSH2 0x1C45 PUSH2 0x1C31 DUP7 PUSH2 0x149D JUMP JUMPDEST DUP8 DUP5 PUSH2 0x1C3F PUSH1 0x60 DUP11 ADD PUSH2 0x14B1 JUMP JUMPDEST SWAP3 PUSH2 0x3C36 JUMP JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x26AC JUMPI PUSH2 0x1C5C PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1B67 JUMPI DUP3 EQ DUP1 PUSH1 0x20 DUP4 ADD MSTORE DUP3 ISZERO DUP3 MSTORE PUSH0 EQ PUSH2 0x26A5 JUMPI PUSH1 0x60 DUP10 ADD MLOAD SWAP1 JUMPDEST PUSH2 0x1C94 DUP4 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x17EA JUMP JUMPDEST MLOAD PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 SWAP1 ISZERO PUSH2 0x1E47 JUMPI PUSH2 0x1D2C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 EQ PUSH0 EQ PUSH2 0x1E40 JUMPI PUSH1 0x1 SWAP5 JUMPDEST PUSH1 0x40 MLOAD SWAP6 PUSH2 0x1CD4 DUP8 PUSH2 0x1273 JUMP JUMPDEST PUSH0 DUP8 MSTORE PUSH2 0x1CE0 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 SWAP5 DUP6 SWAP2 DUP14 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3B7B JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x1E09 JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1DEF JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1DE9 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1D91 DUP13 DUP13 PUSH2 0x17EA JUMP JUMPDEST MSTORE ADD PUSH2 0x1DC0 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST ADD PUSH2 0x1C47 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH1 0x1 SWAP1 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x1E2E SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1E39 JUMPI JUMPDEST PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x394E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x1D69 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E1C JUMP JUMPDEST PUSH0 SWAP5 PUSH2 0x1CC7 JUMP JUMPDEST DUP9 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 SWAP6 SWAP5 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND EQ PUSH0 EQ PUSH2 0x228B JUMPI POP POP DUP2 MLOAD ISZERO SWAP1 POP PUSH2 0x21C7 JUMPI DUP9 DUP11 DUP1 ISZERO ISZERO DUP1 PUSH2 0x21AC JUMPI JUMPDEST PUSH2 0x20A6 JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP3 SWAP2 PUSH2 0x1F36 DUP3 PUSH2 0x1F6E SWAP8 DUP12 PUSH0 SWAP6 DUP10 PUSH32 0x0 SWAP3 AND DUP1 DUP9 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP9 KECCAK256 TLOAD PUSH2 0x2095 JUMPI JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH2 0x1EF5 DUP10 DUP4 MLOAD AND PUSH1 0x20 DUP5 ADD SWAP10 DUP12 DUP12 MLOAD AND SWAP1 DUP1 ISZERO DUP11 EQ PUSH2 0x208F JUMPI POP DUP4 SWAP2 PUSH2 0x437C JUMP JUMPDEST SWAP10 SWAP1 SWAP3 MLOAD AND SWAP5 PUSH2 0x1F0A PUSH1 0x80 SWAP2 DUP3 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x1F1A DUP10 PUSH2 0x1243 JUMP JUMPDEST DUP9 MSTORE ADDRESS PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3B0A JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x2065 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2042 JUMPI SWAP2 PUSH2 0x2015 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1FD3 PUSH2 0x203D SWAP7 DUP7 PUSH2 0x17EA JUMP JUMPDEST MLOAD PUSH2 0x1FDE DUP14 DUP14 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x200C DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP MLOAD AND SWAP3 PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP1 PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x1DE9 JUMP JUMPDEST SWAP9 POP PUSH1 0x1 SWAP3 SWAP5 POP PUSH2 0x205B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP8 MLOAD AND SWAP3 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x2085 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x207D DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3AC2 JUMP JUMPDEST POP SWAP5 SWAP2 SWAP1 POP PUSH2 0x1FAB JUMP JUMPDEST SWAP2 PUSH2 0x437C JUMP JUMPDEST PUSH2 0x209E SWAP3 PUSH2 0x449A JUMP JUMPDEST PUSH0 DUP3 DUP2 PUSH2 0x1ECE JUMP JUMPDEST POP PUSH2 0x20B3 SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x149D JUMP JUMPDEST SWAP2 PUSH2 0x20BD DUP12 PUSH2 0x4456 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP3 DUP8 AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 DUP4 DUP1 PUSH1 0x84 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI DUP11 PUSH2 0x1F36 DUP14 PUSH2 0x1F6E SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x219D JUMPI JUMPDEST POP SWAP8 POP SWAP3 POP POP SWAP2 SWAP3 SWAP4 POP PUSH2 0x1E83 JUMP JUMPDEST PUSH2 0x21A6 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x218E JUMP JUMPDEST POP PUSH2 0x21B6 DUP3 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS EQ ISZERO PUSH2 0x1E7E JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 MLOAD AND SWAP3 DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE ADDRESS PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP13 SWAP1 MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI DUP11 PUSH2 0x1F36 DUP14 PUSH2 0x1F6E SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x227C JUMPI JUMPDEST POP PUSH2 0x1ED2 JUMP JUMPDEST PUSH2 0x2285 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x2276 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP8 SWAP7 SWAP5 SWAP8 ADD MLOAD AND SWAP1 DUP10 DUP2 DUP4 EQ PUSH0 EQ PUSH2 0x2530 JUMPI PUSH2 0x2326 SWAP3 POP PUSH2 0x235E SWAP8 SWAP2 POP PUSH1 0x1 PUSH2 0x22CC PUSH0 SWAP7 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP12 MLOAD AND PUSH2 0x437C JUMP JUMPDEST POP SWAP3 DUP3 DUP10 MLOAD AND SWAP6 PUSH1 0x20 DUP10 ADD MLOAD ISZERO ISZERO DUP9 EQ PUSH2 0x2507 JUMPI PUSH2 0x22E9 DUP3 PUSH2 0x149D JUMP JUMPDEST SWAP5 JUMPDEST PUSH2 0x22FA PUSH1 0x80 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP6 SWAP1 SWAP7 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x230A DUP12 PUSH2 0x1243 JUMP JUMPDEST DUP11 MSTORE AND PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A51 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP4 PUSH2 0x24DD JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x241C JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x203D SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x23C2 DUP13 DUP13 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x23F2 DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP4 SWAP11 POP SWAP1 SWAP2 AND SWAP5 POP DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x24B2 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x24D6 JUMPI JUMPDEST PUSH2 0x24C8 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x24A9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x24BE JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP PUSH2 0x24FD SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x24F5 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x39D5 JUMP JUMPDEST POP SWAP4 SWAP2 SWAP1 POP PUSH2 0x239B JUMP JUMPDEST DUP4 PUSH32 0x0 AND SWAP5 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x25BF SWAP6 PUSH2 0x2587 SWAP4 SWAP5 SWAP6 PUSH2 0x2551 PUSH1 0x80 SWAP12 DUP13 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x2561 DUP10 PUSH2 0x128F JUMP JUMPDEST PUSH0 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 SWAP11 DUP12 SWAP8 DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3969 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x267E JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1DEF JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x203D SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x2624 DUP13 DUP13 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x2654 DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x269A SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1E39 JUMPI PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x25FC JUMP JUMPDEST PUSH0 SWAP1 PUSH2 0x1C86 JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP PUSH1 0x1 ADD PUSH2 0x1BBA JUMP JUMPDEST PUSH2 0x26E6 DUP3 PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP PUSH2 0x2712 DUP7 DUP4 PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x1C45 JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x1C20 JUMP JUMPDEST POP POP PUSH2 0x274B PUSH32 0x0 PUSH2 0x3BCA JUMP JUMPDEST SWAP2 PUSH2 0x2756 DUP4 MLOAD PUSH2 0x1B29 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2813 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x27BC DUP4 DUP12 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x27EA PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x27D7 DUP6 DUP14 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP9 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 PUSH2 0x1B5A JUMP JUMPDEST PUSH2 0x27F4 DUP4 DUP8 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x27FF DUP3 DUP11 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x279D JUMP JUMPDEST POP SWAP5 SWAP4 SWAP2 POP SWAP2 POP JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x1B67 JUMPI JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 EQ PUSH2 0x1B67 JUMPI PUSH0 NOT ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 DUP2 TLOAD PUSH32 0x0 PUSH2 0x28D2 DUP2 TLOAD PUSH2 0x2844 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP2 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x2993 JUMPI POP POP POP PUSH2 0x290A SWAP1 PUSH2 0x2844 JUMP JUMPDEST SWAP2 PUSH32 0x0 SWAP3 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x2943 JUMPI POP POP POP POP PUSH2 0x19A5 SWAP1 PUSH2 0x380A JUMP JUMPDEST PUSH2 0x298E SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x2988 PUSH1 0x20 PUSH0 DUP4 DUP3 DUP3 KECCAK256 ADD TLOAD SWAP2 DUP3 DUP3 MSTORE DUP9 DUP2 MSTORE DUP9 PUSH1 0x40 SWAP2 PUSH2 0x297B DUP11 DUP14 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x4009 JUMP JUMPDEST DUP5 DUP5 MSTORE MSTORE DUP2 KECCAK256 TSTORE DUP5 PUSH2 0x3F66 JUMP JUMPDEST POP PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x292E JUMP JUMPDEST PUSH2 0x29CB SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x2988 PUSH1 0x20 PUSH0 DUP11 DUP8 DUP6 DUP5 DUP5 KECCAK256 ADD TLOAD SWAP4 DUP5 DUP5 MSTORE DUP2 DUP2 MSTORE PUSH2 0x297B DUP13 PUSH1 0x40 SWAP5 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x3C36 JUMP JUMPDEST PUSH2 0x28F6 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x29FA JUMPI RETURNDATASIZE SWAP1 PUSH2 0x29E1 DUP3 PUSH2 0x14BE JUMP JUMPDEST SWAP2 PUSH2 0x29EF PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x12AB JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x2A4A JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP3 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x281C JUMPI PUSH2 0x2A70 PUSH2 0x1BB0 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x384D JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x2A80 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x384D JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x372A JUMPI PUSH2 0x2A9D DUP2 PUSH2 0x1BEC PUSH2 0x1BE4 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x384D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH2 0x2AD7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1B67 JUMPI JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x2AFD JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x2A73 JUMP JUMPDEST PUSH2 0x2B0B DUP2 PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x17EA JUMP JUMPDEST MLOAD PUSH2 0x2B14 PUSH2 0x38E1 JUMP JUMPDEST SWAP1 DUP3 ISZERO PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP5 ADD MLOAD MLOAD DUP1 PUSH0 NOT DUP2 ADD GT PUSH2 0x1B67 JUMPI PUSH0 NOT ADD DUP4 EQ DUP1 DUP4 MSTORE PUSH2 0x36E8 JUMPI JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD ISZERO PUSH2 0x36AD JUMPI PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP2 JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD ISZERO PUSH2 0x2D76 JUMPI DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x60 SWAP3 PUSH1 0x20 PUSH2 0x2BF9 SWAP8 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x2D6D JUMPI JUMPDEST PUSH2 0x2D46 JUMPI JUMPDEST MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 SUB PUSH2 0x2D3F JUMPI PUSH1 0x1 SWAP2 JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH2 0x2BA5 DUP5 PUSH2 0x1273 JUMP JUMPDEST PUSH1 0x1 DUP5 MSTORE PUSH2 0x2BB2 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP9 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3B7B JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x328 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x2D18 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2D09 JUMPI PUSH2 0x2CFF SWAP3 DUP5 PUSH2 0x2C5B PUSH2 0x2D04 SWAP8 SWAP7 SWAP5 PUSH2 0x2CCE SWAP5 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x2C8F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2CA6 DUP5 PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x390A JUMP JUMPDEST SWAP2 AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x2AEA JUMP JUMPDEST POP POP POP PUSH2 0x2D04 SWAP2 SWAP4 POP SWAP3 PUSH2 0x2855 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x2D35 SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1E39 JUMPI PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x2C3A JUMP JUMPDEST PUSH0 SWAP2 PUSH2 0x2B98 JUMP JUMPDEST PUSH2 0x2D68 PUSH2 0x2D52 DUP14 PUSH2 0x149D JUMP JUMPDEST DUP14 DUP12 PUSH2 0x1C3F DUP9 PUSH1 0x40 DUP9 DUP5 MLOAD AND SWAP4 ADD MLOAD SWAP4 ADD PUSH2 0x14B1 JUMP JUMPDEST PUSH2 0x2B81 JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x2B7C JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH0 EQ PUSH2 0x3290 JUMPI POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x31A2 JUMPI POP PUSH1 0x40 MLOAD SWAP3 PUSH32 0x9678709200000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x20 DUP5 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x316E JUMPI JUMPDEST POP DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH0 DUP6 DUP1 PUSH1 0x64 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2F45 SWAP6 PUSH0 SWAP3 PUSH2 0x315F JUMPI JUMPDEST POP JUMPDEST PUSH2 0x1F36 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2F01 DUP12 DUP3 DUP6 MLOAD AND DUP4 PUSH1 0x20 DUP8 ADD MLOAD AND SWAP1 PUSH2 0x437C JUMP JUMPDEST POP SWAP3 MLOAD AND SWAP2 DUP13 PUSH1 0x2 PUSH2 0x2F18 PUSH1 0x80 SWAP3 DUP4 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x2F28 DUP9 PUSH2 0x1243 JUMP JUMPDEST DUP8 MSTORE ADDRESS PUSH1 0x20 DUP9 ADD MSTORE DUP10 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x313C JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x3028 JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x2D04 SWAP5 SWAP4 PUSH2 0x2F9E DUP10 DUP14 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x2FD3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST DUP1 DUP4 LT DUP1 PUSH2 0x300D JUMPI JUMPDEST PUSH2 0x2FE9 JUMPI JUMPDEST POP POP POP PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x2FFF PUSH2 0x3005 SWAP4 PUSH2 0x2FF9 DUP12 PUSH2 0x149D JUMP JUMPDEST SWAP3 PUSH2 0x390A JUMP JUMPDEST SWAP2 PUSH2 0x44AF JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x2FE1 JUMP JUMPDEST POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3020 DUP12 PUSH2 0x149D JUMP JUMPDEST AND EQ ISZERO PUSH2 0x2FDC JUMP JUMPDEST SWAP5 POP SWAP1 DUP1 SWAP5 DUP1 DUP3 LT PUSH2 0x3041 JUMPI JUMPDEST POP POP POP PUSH2 0x2D04 SWAP1 PUSH2 0x2855 JUMP JUMPDEST SWAP2 PUSH2 0x3051 PUSH1 0x20 SWAP3 PUSH2 0x30D0 SWAP5 PUSH2 0x390A JUMP JUMPDEST SWAP1 PUSH2 0x3086 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH2 0x44AF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x3111 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x3035 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3135 JUMPI JUMPDEST PUSH2 0x3127 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x310A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x311D JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x3154 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x207D DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST POP SWAP1 SWAP5 SWAP2 SWAP1 POP PUSH2 0x2F82 JUMP JUMPDEST PUSH2 0x3168 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x2EDF JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x319A JUMPI JUMPDEST DUP2 PUSH2 0x318A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI MLOAD SWAP3 PUSH0 PUSH2 0x2E15 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x317D JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x31AD DUP10 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB ADDRESS SWAP2 AND SUB PUSH2 0x31C8 JUMPI JUMPDEST PUSH0 PUSH2 0x2F45 SWAP5 PUSH2 0x2EE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 PUSH2 0x31FC DUP11 PUSH2 0x149D JUMP JUMPDEST PUSH2 0x3205 DUP5 PUSH2 0x4456 JUMP JUMPDEST SWAP1 DUP7 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP2 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP5 PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2F45 SWAP6 PUSH0 SWAP3 PUSH2 0x3281 JUMPI JUMPDEST POP SWAP5 POP POP PUSH2 0x31BE JUMP JUMPDEST PUSH2 0x328A SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x3278 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 SWAP7 SWAP6 SWAP5 ADD MLOAD AND DUP11 DUP3 DUP3 EQ PUSH0 EQ PUSH2 0x3564 JUMPI POP POP POP PUSH2 0x3365 PUSH2 0x32C7 PUSH0 SWAP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 MLOAD AND PUSH2 0x437C JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x332D DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 MLOAD AND SWAP4 DUP10 MLOAD ISZERO ISZERO DUP7 EQ PUSH2 0x3538 JUMPI PUSH2 0x32FC PUSH2 0x32F0 DUP5 PUSH2 0x149D JUMP JUMPDEST SWAP4 JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x330C DUP9 PUSH2 0x1243 JUMP JUMPDEST DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE DUP13 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A51 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP2 PUSH2 0x351D JUMPI JUMPDEST POP PUSH1 0x20 DUP5 ADD MLOAD DUP13 SWAP1 DUP11 SWAP1 ISZERO PUSH2 0x3503 JUMPI DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x33DC PUSH2 0x33E2 SWAP5 PUSH2 0x33D5 DUP16 SWAP13 SWAP12 SWAP11 SWAP9 SWAP10 PUSH2 0x340B SWAP11 PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP2 AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST MLOAD ISZERO PUSH2 0x344D JUMPI PUSH2 0x2D04 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x2CFF SWAP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x449A JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x34D8 JUMPI JUMPDEST POP PUSH2 0x2D04 SWAP1 PUSH2 0x2855 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x34FC JUMPI JUMPDEST PUSH2 0x34EE DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x34CE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34E4 JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH2 0x3514 SWAP3 SWAP4 SWAP7 POP PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP4 DUP5 SWAP2 PUSH2 0x340B JUMP JUMPDEST PUSH2 0x3531 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x24F5 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST SWAP1 POP PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0x32FC DUP3 PUSH32 0x0 AND SWAP4 PUSH2 0x32F2 JUMP JUMPDEST PUSH2 0x35F7 SWAP7 POP SWAP1 PUSH2 0x35BF SWAP2 PUSH1 0x60 SWAP5 DUP12 PUSH2 0x3584 PUSH1 0x80 SWAP10 SWAP9 SWAP10 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x3594 DUP10 PUSH2 0x128F JUMP JUMPDEST PUSH1 0x1 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x40 DUP10 ADD MSTORE DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3969 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x328 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x3686 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2D09 JUMPI PUSH2 0x2CFF SWAP3 DUP5 PUSH2 0x365E PUSH2 0x2D04 SWAP8 SWAP7 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x17EA JUMP JUMPDEST MSTORE AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x36A3 SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1E39 JUMPI PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x3638 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x36DE DUP2 DUP9 ADD MLOAD PUSH2 0x36D8 DUP9 PUSH2 0x2844 JUMP JUMPDEST SWAP1 PUSH2 0x17EA JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP2 PUSH2 0x2B55 JUMP JUMPDEST PUSH2 0x3725 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 ADD PUSH2 0x1DC0 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST PUSH2 0x2B39 JUMP JUMPDEST POP POP PUSH2 0x3755 PUSH32 0x0 PUSH2 0x3BCA JUMP JUMPDEST SWAP2 PUSH2 0x3760 DUP4 MLOAD PUSH2 0x1B29 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2813 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x37C6 DUP4 DUP12 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x37E1 PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x27D7 DUP6 DUP14 PUSH2 0x17EA JUMP JUMPDEST PUSH2 0x37EB DUP4 DUP8 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x37F6 DUP3 DUP11 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x37A7 JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x3849 JUMPI PUSH32 0x0 TLOAD PUSH2 0x3849 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x19A5 SWAP3 AND PUSH2 0x4239 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x333 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x17FE JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1B67 JUMPI JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3921 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x333 JUMPI DUP1 MLOAD SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0xC0 PUSH2 0x10D5 SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH2 0x3981 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0xE0 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x333 JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x333 JUMPI DUP5 PUSH2 0x3A01 SWAP2 DUP4 ADD PUSH2 0x16CC JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x1660 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x3A3D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x3A2F JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3A8A PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x3921 JUMPI PUSH2 0x10D5 SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x333 JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x333 JUMPI DUP2 PUSH2 0x3AF3 SWAP2 DUP5 ADD PUSH2 0x16CC JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x1660 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3B4D PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x3921 JUMPI PUSH2 0x10D5 SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP1 PUSH1 0xA0 DUP4 ADD SWAP5 DUP1 MLOAD PUSH2 0x3B91 DUP2 PUSH2 0x3917 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x3BA1 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 TLOAD PUSH2 0x3BD6 DUP2 PUSH2 0x12CE JUMP JUMPDEST PUSH2 0x3BE3 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x12AB JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH2 0x3BEF DUP3 PUSH2 0x12CE JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 SWAP2 ADD CALLDATASIZE PUSH1 0x20 DUP5 ADD CALLDATACOPY DUP2 SWAP5 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3C0E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH0 MSTORE DUP1 DUP5 PUSH0 KECCAK256 ADD TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3C2C DUP4 DUP9 PUSH2 0x17EA JUMP JUMPDEST SWAP2 AND SWAP1 MSTORE ADD PUSH2 0x3C00 JUMP JUMPDEST SWAP2 SWAP3 DUP1 PUSH2 0x3F31 JUMPI JUMPDEST ISZERO PUSH2 0x3DAA JUMPI POP POP DUP1 SELFBALANCE LT PUSH2 0x3D82 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH0 SWAP2 PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x3D6B JUMPI JUMPDEST POP PUSH1 0x44 PUSH1 0x20 SWAP3 SWAP4 PUSH32 0x0 AND SWAP5 PUSH2 0x3CF1 DUP4 DUP8 DUP4 PUSH2 0x44AF JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3D5F JUMPI POP PUSH2 0x3D38 JUMPI POP JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3D58 JUMPI JUMPDEST PUSH2 0x3D4E DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D44 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x3D78 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x3CBC JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x3DBA JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 PUSH32 0x0 AND SWAP5 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x3E14 DUP5 PUSH2 0x4456 JUMP JUMPDEST SWAP7 DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP8 DUP3 AND PUSH1 0x44 DUP10 ADD MSTORE SWAP2 DUP7 AND AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x328 JUMPI PUSH2 0x3ED9 SWAP6 PUSH2 0x3F1D JUMPI JUMPDEST POP DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3D5F JUMPI POP PUSH2 0x3EF2 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x3DB4 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3F16 JUMPI JUMPDEST PUSH2 0x3F08 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x3EEA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3EFE JUMP JUMPDEST PUSH1 0x20 SWAP4 POP PUSH2 0x3F2A SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 SWAP3 PUSH2 0x3E88 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP3 AND EQ PUSH2 0x3C3E JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP2 DUP1 PUSH0 MSTORE PUSH1 0x20 SWAP2 DUP4 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x4000 JUMPI PUSH0 NOT SWAP1 DUP2 DUP2 ADD DUP4 TLOAD DUP4 DUP1 DUP3 ADD SWAP2 DUP3 DUP5 SUB PUSH2 0x3FC3 JUMPI JUMPDEST POP POP POP POP POP DUP2 TLOAD DUP2 DUP2 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1B67 JUMPI PUSH0 SWAP4 DUP2 TSTORE DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x3FD0 PUSH2 0x3FE0 SWAP4 DUP9 PUSH2 0x4593 JUMP JUMPDEST DUP7 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 ADD ADD TLOAD SWAP2 DUP6 PUSH2 0x4593 JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP1 DUP4 DUP4 DUP9 PUSH0 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE DUP6 DUP6 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH0 DUP1 DUP1 DUP4 DUP2 PUSH2 0x3F97 JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x4231 JUMPI DUP1 PUSH2 0x41FC JUMPI JUMPDEST ISZERO PUSH2 0x4160 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x414D JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x4149 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x413E JUMPI PUSH2 0x4126 JUMPI JUMPDEST POP PUSH2 0x19A5 SWAP4 SWAP5 POP AND PUSH2 0x4239 JUMP JUMPDEST PUSH2 0x4130 DUP7 SWAP2 PUSH2 0x125F JUMP JUMPDEST PUSH2 0x413A JUMPI DUP5 PUSH2 0x4119 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x4158 SWAP2 SWAP6 POP PUSH2 0x125F JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x40AC JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x41F3 JUMPI POP JUMP JUMPDEST PUSH2 0x19A5 SWAP1 PUSH2 0x125F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x4018 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x4289 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x4259 PUSH2 0x29D0 JUMP JUMPDEST POP ISZERO PUSH2 0x4261 JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x42CA JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x4261 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x4310 JUMPI JUMPDEST PUSH2 0x42DB JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x42D3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD ISZERO PUSH0 EQ PUSH2 0x435C JUMPI DUP1 TLOAD DUP2 PUSH0 MSTORE DUP4 DUP2 PUSH1 0x20 PUSH0 KECCAK256 ADD TSTORE PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1B67 JUMPI DUP2 TSTORE TLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x4378 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x1B5A JUMP JUMPDEST SWAP1 TSTORE JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x444C JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x4415 JUMPI JUMPDEST POP POP PUSH2 0x4412 PUSH2 0x440B DUP6 SWAP5 PUSH2 0x1B29 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x17EA JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x4445 JUMPI JUMPDEST PUSH2 0x442E DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x43FC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4424 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x446A JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x4378 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x390A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x44 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x1216 JUMPI PUSH2 0x452E SWAP4 PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x40 MSTORE AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x4527 PUSH2 0x29D0 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x42B5 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x456F JUMPI JUMPDEST POP POP PUSH2 0x4544 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 SWAP3 POP SWAP1 PUSH1 0x20 SWAP2 DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH1 0x20 ADD MLOAD DUP1 ISZERO SWAP1 DUP2 ISZERO SUB PUSH2 0x333 JUMPI PUSH0 DUP1 PUSH2 0x453B JUMP JUMPDEST TLOAD GT ISZERO PUSH2 0x459C JUMPI JUMP JUMPDEST PUSH32 0xF4AE0E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xFC PUSH32 0x6CA6189CDAD3818AD909AA309478670BBCC4E4508A1CDFDABF84556C464736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"690:1294:78:-:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;409:14:68;;690:1294:78;;-1:-1:-1;;;;;690:1294:78;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;:::i;:::-;;;;2651:72:62;-1:-1:-1;;;690:1294:78;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;690:1294:78;;;;2651:72:62;:::i;:::-;;;690:1294:78;;;;;;:::i;:::-;;;;;;;;2845:83:62;690:1294:78;;;;;:::i;:::-;;;;;;-1:-1:-1;;;690:1294:78;;;;2845:83:62;:::i;:::-;;;7155:12;;7177:18;;;;690:1294:78;;;;;;:::i;:::-;;;;;;;;;4235:72:58;690:1294:78;;;;;;:::i;:::-;;;;-1:-1:-1;;;690:1294:78;;;;;;4235:72:58;:::i;:::-;1422:55;;;;;4235:72;;690:1294:78;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;4235:72:58;:::i;:::-;1540:56;;;;;4235:72;690:1294:78;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;4235:72:58;:::i;:::-;1674:61;;;;;4235:72;690:1294:78;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;4235:72:58;:::i;:::-;1814:62;;;;;690:1294:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;4235:72:58;:::i;:::-;1938:55;;;;;690:1294:78;;;;;;;;409:14:68;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:72:62;690:1294:78;;;;;;;;;;;;;;;;;;;;2845:83:62;690:1294:78;;;;;;;;;;7155:12:62;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;-1:-1:-1;690:1294:78;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;-1:-1:-1;690:1294:78;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;-1:-1:-1;690:1294:78;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;-1:-1:-1;690:1294:78;;-1:-1:-1;690:1294:78;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;:::o;:::-;;;;;-1:-1:-1;;690:1294:78;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;:::o;1276:306:44:-;;1461:67;690:1294:78;1461:67:44;1276:306;690:1294:78;;1461:67:44;;;;;;;690:1294:78;;;;;;;;;;;;;;;;;-1:-1:-1;;;690:1294:78;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;1461:67:44;;;;;;;;;:::i;:::-;690:1294:78;1451:78:44;;-1:-1:-1;;690:1294:78;;;;;;;;;1432:103:44;1461:67;1432:103;;690:1294:78;;;1461:67:44;1432:103;;;;;:::i;:::-;690:1294:78;;1405:144:44;;-1:-1:-1;;1405:170:44;;1276:306::o;690:1294:78:-;;;;-1:-1:-1;690:1294:78;;;;;-1:-1:-1;690:1294:78"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":4858,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_bytes_calldata_dyn_calldata":{"entryPoint":4341,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_struct_SwapPathExactAmountIn_dyn":{"entryPoint":5149,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":5836,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_array_address_dynt_array_uint256_dyn_fromMemory":{"entryPoint":5933,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_array_uint256_dynt_uint256t_bytes_fromMemory":{"entryPoint":14805,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_available_length_bytes":{"entryPoint":5338,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":4880,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":4390,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_fromMemory":{"entryPoint":5728,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_memory_ptr_fromMemory":{"entryPoint":5798,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":4838,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SwapExactInHookParams_calldata":{"entryPoint":4131,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SwapPathExactAmountIn":{"entryPoint":4895,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_array_uint256_dynt_bytes_fromMemory":{"entryPoint":15042,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint256t_uint256t_uint256_fromMemory":{"entryPoint":14670,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint48":{"entryPoint":10751,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_uint160_address":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_array_bytes_dyn":{"entryPoint":4473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":4181,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_array_address_dyn_array_uint256_dyn":{"entryPoint":4232,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_uint256_dyn_memory_ptr":{"entryPoint":14878,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":4436,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IERC20_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_contract_IERC20_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_struct_AddLiquidityParams":{"entryPoint":14929,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_BufferWrapOrUnwrapParams":{"entryPoint":15227,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RemoveLiquidityParams":{"entryPoint":15114,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapExactInHookParams":{"entryPoint":5527,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapExactOutHookParams":{"entryPoint":6187,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapPathExactAmountIn":{"entryPoint":5392,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_VaultSwapParams":{"entryPoint":14697,"id":null,"parameterSlots":2,"returnSlots":1},"access_calldata_tail_array_struct_SwapPathExactAmountIn_calldata_dyn_calldata":{"entryPoint":14413,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_bytes_calldata":{"entryPoint":6706,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":6953,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_SwapStepLocals":{"entryPoint":14561,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_SwapPathExactAmountIn_dyn":{"entryPoint":4814,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":5310,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_bytes_calldata_dyn_calldata":{"entryPoint":6787,"id":null,"parameterSlots":3,"returnSlots":2},"calldata_array_index_access_struct_SwapPathExactAmountIn_calldata_dyn_calldata":{"entryPoint":14497,"id":null,"parameterSlots":3,"returnSlots":1},"checked_add_uint256":{"entryPoint":7002,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_int256":{"entryPoint":10308,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":14602,"id":null,"parameterSlots":2,"returnSlots":1},"decrement_int256":{"entryPoint":10325,"id":null,"parameterSlots":1,"returnSlots":1},"extract_returndata":{"entryPoint":10704,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":4779,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_33193":{"entryPoint":4602,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_33194":{"entryPoint":4675,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_33195":{"entryPoint":4703,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_33199":{"entryPoint":4723,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_33255":{"entryPoint":4751,"id":null,"parameterSlots":1,"returnSlots":0},"fun_add":{"entryPoint":17177,"id":9983,"parameterSlots":2,"returnSlots":1},"fun_ensureIndexWithinBounds":{"entryPoint":17811,"id":6867,"parameterSlots":2,"returnSlots":0},"fun_ensureOnlyVault":{"entryPoint":6859,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_getSingleInputArrayAndTokenIndex":{"entryPoint":17276,"id":18579,"parameterSlots":3,"returnSlots":2},"fun_nonReentrantBefore":{"entryPoint":6814,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_remove":{"entryPoint":16230,"id":10081,"parameterSlots":2,"returnSlots":1},"fun_returnEth":{"entryPoint":14346,"id":18535,"parameterSlots":1,"returnSlots":0},"fun_safeTransfer":{"entryPoint":17583,"id":39386,"parameterSlots":3,"returnSlots":0},"fun_saveSender":{"entryPoint":10770,"id":18193,"parameterSlots":1,"returnSlots":1},"fun_sendTokenOut":{"entryPoint":16393,"id":18725,"parameterSlots":4,"returnSlots":0},"fun_sendValue":{"entryPoint":16953,"id":39683,"parameterSlots":2,"returnSlots":0},"fun_settlePaths":{"entryPoint":10370,"id":13832,"parameterSlots":2,"returnSlots":0},"fun_swapExactInHook":{"entryPoint":7060,"id":12025,"parameterSlots":1,"returnSlots":3},"fun_swapExactOutHook":{"entryPoint":10836,"id":12712,"parameterSlots":1,"returnSlots":3},"fun_tAdd":{"entryPoint":17251,"id":6729,"parameterSlots":3,"returnSlots":0},"fun_tSub":{"entryPoint":17562,"id":6759,"parameterSlots":3,"returnSlots":0},"fun_takeTokenIn":{"entryPoint":15414,"id":18665,"parameterSlots":4,"returnSlots":0},"fun_toUint160":{"entryPoint":17494,"id":42734,"parameterSlots":1,"returnSlots":1},"fun_values":{"entryPoint":15306,"id":10281,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":17077,"id":39838,"parameterSlots":3,"returnSlots":1},"memory_array_index_access_struct_SwapPathExactAmountOut_dyn":{"entryPoint":6122,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_saveSenderAndManageEth":{"entryPoint":6388,"id":18160,"parameterSlots":2,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":5277,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_bool":{"entryPoint":5297,"id":null,"parameterSlots":1,"returnSlots":1},"validator_assert_enum_SwapKind":{"entryPoint":14615,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"13573":[{"length":32,"start":1416},{"length":32,"start":9922},{"length":32,"start":10409},{"length":32,"start":10931},{"length":32,"start":14129}],"13578":[{"length":32,"start":972},{"length":32,"start":7580},{"length":32,"start":8168},{"length":32,"start":9166},{"length":32,"start":9776},{"length":32,"start":10023},{"length":32,"start":10373},{"length":32,"start":11371},{"length":32,"start":14081}],"13583":[{"length":32,"start":1992},{"length":32,"start":7836},{"length":32,"start":9966},{"length":32,"start":10453},{"length":32,"start":13287},{"length":32,"start":13922},{"length":32,"start":14212}],"13588":[{"length":32,"start":4051},{"length":32,"start":7621},{"length":32,"start":8217},{"length":32,"start":9818},{"length":32,"start":10106},{"length":32,"start":10509},{"length":32,"start":11434},{"length":32,"start":13353}],"13593":[{"length":32,"start":846},{"length":32,"start":9208},{"length":32,"start":10072},{"length":32,"start":11483},{"length":32,"start":12207},{"length":32,"start":14178}],"18063":[{"length":32,"start":737},{"length":32,"start":1562},{"length":32,"start":6520},{"length":32,"start":10775}],"18073":[{"length":32,"start":6402},{"length":32,"start":14355}],"18092":[{"length":32,"start":34},{"length":32,"start":15447},{"length":32,"start":16189},{"length":32,"start":16561},{"length":32,"start":16904}],"18095":[{"length":32,"start":2831},{"length":32,"start":3107},{"length":32,"start":8391},{"length":32,"start":8525},{"length":32,"start":12754},{"length":32,"start":15814}],"27649":[{"length":32,"start":637},{"length":32,"start":6869},{"length":32,"start":7481},{"length":32,"start":8059},{"length":32,"start":8658},{"length":32,"start":9067},{"length":32,"start":9340},{"length":32,"start":9482},{"length":32,"start":9676},{"length":32,"start":11270},{"length":32,"start":11749},{"length":32,"start":11821},{"length":32,"start":11947},{"length":32,"start":12114},{"length":32,"start":12384},{"length":32,"start":12509},{"length":32,"start":13170},{"length":32,"start":13473},{"length":32,"start":13630},{"length":32,"start":13828},{"length":32,"start":15557},{"length":32,"start":15850},{"length":32,"start":16425},{"length":32,"start":16750},{"length":32,"start":17354}]},"linkReferences":{},"object":"60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c806308a465f614610ff65780630f8fb1cc14610fbc57806319c6989f1461096d578063286f580d146108d65780632950286e146107eb57806348bbd869146107b157806354fd4d50146106745780635a3c39871461064b5780635e01eb5a146106065780638a12a08c146105ab5780638c824cd9146105715780638eb1b65e1461046a578063945ed33f146103ef57806396123406146103b5578063ac9650d814610371578063cd791ccc146103375763e3b5dff40361000e5734610333576060806003193601126103335767ffffffffffffffff6004358181116103335761016490369060040161141d565b61016c6112fa565b6044359283116103335761018761018f933690600401611126565b939091612a12565b905f5b83518110156101b357805f876101aa600194886117ea565b51015201610192565b50610227610235610270946101ed5f9488604051936101d185611273565b30855260208501525f19604085015286606085015236916114da565b60808201526040519283917f8a12a08c00000000000000000000000000000000000000000000000000000000602084015260248301611597565b03601f1981018352826112ab565b604051809481927fedfa3568000000000000000000000000000000000000000000000000000000008352602060048401526024830190611154565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215610328576102da926102c5915f91610306575b506020808251830101910161172d565b909391926102de575b60405193849384611088565b0390f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d6102ce565b61032291503d805f833e61031a81836112ab565b8101906116a6565b846102b5565b6040513d5f823e3d90fd5b5f80fd5b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b60206003193601126103335760043567ffffffffffffffff8111610333576103a96103a36102da9236906004016110f5565b906118f4565b60405191829182611179565b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610333576103fd36611023565b610405611a9e565b61040d611acb565b61043b6102da61041c83612a54565b91939094610435606061042e8361149d565b92016114b1565b90612882565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d60405193849384611088565b60806003193601126103335767ffffffffffffffff6004358181116103335761049790369060040161141d565b906104a0611310565b9060643590811161033357610227610536610270946104fc6104c75f953690600401611126565b6104d033612a12565b97604051946104de86611273565b338652602086015260243560408601521515606085015236916114da565b60808201526040519283917f945ed33f0000000000000000000000000000000000000000000000000000000060208401526024830161182b565b604051809481927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190611154565b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610333576102da6105d46105bf36611023565b6105c7611a9e565b6105cf611acb565b611b94565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f009492945d60405193849384611088565b34610333575f6003193601126103335760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b34610333576102da6105d461065f36611023565b610667611a9e565b61066f611acb565b612a54565b34610333575f600319360112610333576040515f80549060018260011c91600184169182156107a7575b602094858510841461077a5785879486865291825f1461073c5750506001146106e3575b506106cf925003836112ab565b6102da604051928284938452830190611154565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8583106107245750506106cf9350820101856106c2565b8054838901850152879450869390920191810161070d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858201526106cf95151560051b85010192508791506106c29050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f169261069e565b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103335760606003193601126103335767ffffffffffffffff6004358181116103335761081d90369060040161141d565b906108266112fa565b60443591821161033357610841610849923690600401611126565b929091612a12565b905f5b845181101561087e57806fffffffffffffffffffffffffffffffff6040610875600194896117ea565b5101520161084c565b506102276102358561089c5f9461027097604051936101d185611273565b60808201526040519283917f5a3c39870000000000000000000000000000000000000000000000000000000060208401526024830161182b565b60806003193601126103335767ffffffffffffffff6004358181116103335761090390369060040161141d565b9061090c611310565b9060643590811161033357610227610536610270946109336104c75f953690600401611126565b60808201526040519283917f08a465f600000000000000000000000000000000000000000000000000000000602084015260248301611597565b60a06003193601126103335767ffffffffffffffff60043511610333573660236004350112156103335767ffffffffffffffff60043560040135116103335736602460c060043560040135026004350101116103335760243567ffffffffffffffff8111610333576109e39036906004016110f5565b67ffffffffffffffff60443511610333576060600319604435360301126103335760643567ffffffffffffffff811161033357610a24903690600401611126565b60843567ffffffffffffffff811161033357610a449036906004016110f5565b949093610a4f611a9e565b806004356004013503610f94575f5b600435600401358110610cf15750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030182121561033357816044350160048101359067ffffffffffffffff82116103335760248260071b360391011361033357610b02575b6102da6103a986865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6118f4565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b1561033357604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff60048301351161033357600482013560071b360385136103335760606064890152600482013590529192869260e484019291905f905b60048101358210610c7357505050602091601f19601f865f9787956001600160a01b03610be76024604435016112e6565b16608488015260448035013560a48801526003198787030160448801528186528786013787868286010152011601030181836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215610328576102da936103a993610c64575b829450819350610ad2565b610c6d9061125f565b84610c59565b9195945091926001600160a01b03610c8a876112e6565b168152602080870135916001600160a01b03831680930361033357600492600192820152610cba604089016129ff565b65ffffffffffff8091166040830152610cd560608a016129ff565b1660608201526080809101970193019050889495939291610bb6565b610d06610cff828486611a83565b36916114da565b604051610d12816111fa565b5f81526020915f838301525f60408301528281015190606060408201519101515f1a91835283830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc81850260043501360301126103335760405190610d7f82611243565b610d92602460c0860260043501016112e6565b808352610da8604460c0870260043501016112e6565b908185850152610dc1606460c0880260043501016112e6565b60408581019190915260043560c08802016084810135606087015260a4810135608087015260c4013560a086015283015183519386015160ff91909116926001600160a01b0383163b15610333575f6001600160a01b03809460e4948b98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af19081610f85575b50610f7b57610e9e6129d0565b906001600160a01b0381511690836001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610328575f92610f4b575b506060015103610f165750506001905b01610a5e565b805115610f235780519101fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091508381813d8311610f74575b610f6381836112ab565b810103126103335751906060610f00565b503d610f59565b5050600190610f10565b610f8e9061125f565b8a610e91565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610333575f6003193601126103335760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346103335761100436611023565b61100c611a9e565b611014611acb565b61043b6102da61041c83611b94565b60031990602082820112610333576004359167ffffffffffffffff8311610333578260a0920301126103335760040190565b9081518082526020808093019301915f5b828110611074575050505090565b835185529381019392810192600101611066565b93929061109d90606086526060860190611055565b936020948181036020830152602080855192838152019401905f5b8181106110d8575050506110d59394506040818403910152611055565b90565b82516001600160a01b0316865294870194918701916001016110b8565b9181601f840112156103335782359167ffffffffffffffff8311610333576020808501948460051b01011161033357565b9181601f840112156103335782359167ffffffffffffffff8311610333576020838186019501011161033357565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106111ae5750505050505090565b90919293949584806111ea837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a51611154565b980193019301919493929061119e565b6060810190811067ffffffffffffffff82111761121657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60c0810190811067ffffffffffffffff82111761121657604052565b67ffffffffffffffff811161121657604052565b60a0810190811067ffffffffffffffff82111761121657604052565b60e0810190811067ffffffffffffffff82111761121657604052565b90601f601f19910116810190811067ffffffffffffffff82111761121657604052565b67ffffffffffffffff81116112165760051b60200190565b35906001600160a01b038216820361033357565b602435906001600160a01b038216820361033357565b60443590811515820361033357565b91909160808184031261033357604090815191608083019467ffffffffffffffff95848110878211176112165782528395611359846112e6565b85526020908185013590811161033357840182601f8201121561033357803590611382826112ce565b9361138f865195866112ab565b8285528385019084606080950284010192818411610333578501915b8383106113cd5750505050508401528181013590830152606090810135910152565b8483830312610333578751906113e2826111fa565b6113eb846112e6565b82526113f88785016112e6565b8783015288840135908115158203610333578288928b899501528152019201916113ab565b81601f8201121561033357803591602091611437846112ce565b9361144560405195866112ab565b808552838086019160051b8301019280841161033357848301915b8483106114705750505050505090565b823567ffffffffffffffff81116103335786916114928484809489010161131f565b815201920191611460565b356001600160a01b03811681036103335790565b3580151581036103335790565b67ffffffffffffffff811161121657601f01601f191660200190565b9291926114e6826114be565b916114f460405193846112ab565b829481845281830111610333578281602093845f960137010152565b9060808101916001600160a01b03808251168352602093848301519460808186015285518092528060a086019601925f905b8382106115645750505050506060816040829301516040850152015191015290565b84518051821689528084015182168985015260409081015115159089015260609097019693820193600190910190611542565b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b83821061161657505050505060808460406110d5959601516060840152606081015115158284015201519060a0601f1982850301910152611154565b90919293958380611651837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a51611510565b980192019201909392916115da565b81601f8201121561033357805190611677826114be565b9261168560405194856112ab565b8284526020838301011161033357815f9260208093018386015e8301015290565b9060208282031261033357815167ffffffffffffffff8111610333576110d59201611660565b9080601f83011215610333578151906020916116e7816112ce565b936116f560405195866112ab565b81855260208086019260051b82010192831161033357602001905b82821061171e575050505090565b81518152908301908301611710565b90916060828403126103335781519167ffffffffffffffff9283811161033357846117599183016116cc565b936020808301518581116103335783019082601f8301121561033357815191611781836112ce565b9261178f60405194856112ab565b808452828085019160051b83010191858311610333578301905b8282106117cb5750505050936040830151908111610333576110d592016116cc565b81516001600160a01b03811681036103335781529083019083016117a9565b80518210156117fe5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91909160209081815260c08101916001600160a01b0385511681830152808501519260a06040840152835180915260e08301918060e08360051b8601019501925f905b8382106118aa57505050505060808460406110d5959601516060840152606081015115158284015201519060a0601f1982850301910152611154565b909192939583806118e5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a600196030186528a51611510565b9801920192019093929161186e565b91906118ff33612a12565b907f000000000000000000000000000000000000000000000000000000000000000093845c611a0a576001906001865d611938836112ce565b9261194660405194856112ab565b808452601f19611955826112ce565b015f5b8181106119f95750505f5b8181106119b05750505050905f6119a592945d7f0000000000000000000000000000000000000000000000000000000000000000805c916119a7575b5061380a565b565b5f905d5f61199f565b806119dd5f806119c5610cff8996888a611a83565b602081519101305af46119d66129d0565b90306142b5565b6119e782886117ea565b526119f281876117ea565b5001611963565b806060602080938901015201611958565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610333570180359067ffffffffffffffff82116103335760200191813603831361033357565b908210156117fe57611a9a9160051b810190611a32565b9091565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c611a0a576001905d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303611afd57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b90611b33826112ce565b611b4060405191826112ab565b828152601f19611b5082946112ce565b0190602036910137565b91908201809211611b6757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6040810135421161281c5790611bb7611bb0602084018461384d565b9050611b29565b915f5b611bc7602083018361384d565b905081101561272057611bf181611bec611be4602086018661384d565b3693916138a1565b61131f565b936040850151936001600160a01b038651169060208701518051156117fe576020015160400151151580612717575b156126bc57611c45611c318661149d565b8784611c3f60608a016114b1565b92613c36565b5f5b6020880151518110156126ac57611c5c6138e1565b6020890151515f198101908111611b67578214806020830152821582525f146126a5576060890151905b611c948360208c01516117ea565b51604081015190919015611e4757611d2c6001600160a01b03835116936001600160a01b03881685145f14611e40576001945b60405195611cd487611273565b5f8752611ce081613917565b6020870152604086015260609485918d838301526080820152604051809381927f43583be500000000000000000000000000000000000000000000000000000000835260048301613b7b565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f94611e09575b50506020015115611def57816001600160a01b036020611de99360019695611d918c8c6117ea565b5201611dc0828251167f0000000000000000000000000000000000000000000000000000000000000000614319565b5051167f0000000000000000000000000000000000000000000000000000000000000000614363565b01611c47565b602001519097506001600160a01b03169250600190611de9565b60209294509081611e2e92903d10611e39575b611e2681836112ab565b81019061394e565b91505092905f611d69565b503d611e1c565b5f94611cc7565b888a6001600160a01b038495945116806001600160a01b038a16145f1461228b57505081511590506121c757888a801515806121ac575b6120a6575b6001600160a01b03939291611f3682611f6e978b5f95897f0000000000000000000000000000000000000000000000000000000000000000921680885282602052604088205c612095575b5050505b6001611ef58983511660208401998b8b51169080158a1461208f5750839161437c565b999092511694611f0a60809182810190611a32565b93909460405197611f1a89611243565b88523060208901526040880152606087015285015236916114da565b60a0820152604051809681927f2145789700000000000000000000000000000000000000000000000000000000835260048301613b0a565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f94612065575b5060200151156120425791612015826001600160a01b0360019695611fd361203d96866117ea565b51611fde8d8d6117ea565b5261200c828251167f0000000000000000000000000000000000000000000000000000000000000000614319565b505116926117ea565b51907f0000000000000000000000000000000000000000000000000000000000000000614363565b611de9565b9850600192945061205b906001600160a01b03926117ea565b5197511692611de9565b6020919450612085903d805f833e61207d81836112ab565b810190613ac2565b5094919050611fab565b9161437c565b61209e9261449a565b5f8281611ece565b506120b39092919261149d565b916120bd8b614456565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610333576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039485166004820152306024820152908416604482015292871660648401525f8380608481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610328578a611f368d611f6e976001600160a01b03975f9561219d575b50975092505091929350611e83565b6121a69061125f565b5f61218e565b506121b68261149d565b6001600160a01b0316301415611e7e565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916001600160a01b0384511692803b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03949094166004850152306024850152604484018c90525f908490606490829084905af18015610328578a611f368d611f6e976001600160a01b03975f9561227c575b50611ed2565b6122859061125f565b5f612276565b6001600160a01b0360208796949701511690898183145f1461253057612326925061235e97915060016122cc5f96956001600160a01b0393848b511661437c565b50928289511695602089015115158814612507576122e98261149d565b945b6122fa60809384810190611a32565b9590966040519961230a8b611243565b8a521660208901526040880152606087015285015236916114da565b60a0820152604051809581927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301613a51565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315610328575f936124dd575b50602001511561241c57816001600160a01b03602061203d93600196956123c28c8c6117ea565b526123f28383830151167f0000000000000000000000000000000000000000000000000000000000000000614319565b500151167f0000000000000000000000000000000000000000000000000000000000000000614363565b60208181015191516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101859052939a50909116945081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610328576124b2575b50600190611de9565b602090813d83116124d6575b6124c881836112ab565b81010312610333575f6124a9565b503d6124be565b60209193506124fd903d805f833e6124f581836112ab565b8101906139d5565b509391905061239b565b837f000000000000000000000000000000000000000000000000000000000000000016946122eb565b6001600160a01b036125bf9561258793949561255160809b8c810190611a32565b939094604051976125618961128f565b5f8952602089015216604087015260609a8b978888015286015260a085015236916114da565b60c0820152604051809381927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613969565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f9461267e575b50506020015115611def57816001600160a01b03602061203d93600196956126248c8c6117ea565b526126548383830151167f0000000000000000000000000000000000000000000000000000000000000000614319565b500151167f0000000000000000000000000000000000000000000000000000000000000000614363565b6020929450908161269a92903d10611e3957611e2681836112ab565b91505092905f6125fc565b5f90611c86565b5091955090935050600101611bba565b6126e6827f0000000000000000000000000000000000000000000000000000000000000000614319565b5061271286837f0000000000000000000000000000000000000000000000000000000000000000614363565b611c45565b50321515611c20565b505061274b7f0000000000000000000000000000000000000000000000000000000000000000613bca565b916127568351611b29565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b8651811015612813576001906001600160a01b03806127bc838b6117ea565b51165f52856020526127ea60405f205c826127d7858d6117ea565b51165f528860205260405f205c90611b5a565b6127f483876117ea565b526127ff828a6117ea565b51165f52856020525f604081205d0161279d565b50949391509150565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f198201918213600116611b6757565b7f80000000000000000000000000000000000000000000000000000000000000008114611b67575f190190565b907f000000000000000000000000000000000000000000000000000000000000000090815c7f00000000000000000000000000000000000000000000000000000000000000006128d2815c612844565b907f0000000000000000000000000000000000000000000000000000000000000000915b5f8112156129935750505061290a90612844565b917f0000000000000000000000000000000000000000000000000000000000000000925b5f81121561294357505050506119a59061380a565b61298e90825f5261298860205f83828220015c918282528881528860409161297b8a8d8587205c906001600160a01b03891690614009565b8484525281205d84613f66565b50612855565b61292e565b6129cb90825f5261298860205f8a8785848420015c9384845281815261297b8c6040948587205c906001600160a01b03891690613c36565b6128f6565b3d156129fa573d906129e1826114be565b916129ef60405193846112ab565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361033357565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c1615612a4a575050565b909192505d600190565b906040820135421161281c57612a70611bb0602084018461384d565b915f5b612a80602083018361384d565b905081101561372a57612a9d81611bec611be4602086018661384d565b606081015190612ad76001600160a01b038251167f0000000000000000000000000000000000000000000000000000000000000000614319565b506020810151515f198101908111611b67575b5f811215612afd57505050600101612a73565b612b0b8160208401516117ea565b51612b146138e1565b9082156020830152602084015151805f19810111611b67575f190183148083526136e8575b6020820151156136ad5760408401516001600160a01b03855116915b604081015115612d765783916001600160a01b036060926020612bf9970151151580612d6d575b612d46575b5116906001600160a01b0385168203612d3f576001915b60405192612ba584611273565b60018452612bb281613917565b6020840152604083015288838301526080820152604051809581927f43583be500000000000000000000000000000000000000000000000000000000835260048301613b7b565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156103285787918b915f95612d18575b506020015115612d0957612cff9284612c5b612d04979694612cce946117ea565b52612c8f6001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000614319565b506001600160a01b03612ca68460408a015161390a565b91167f0000000000000000000000000000000000000000000000000000000000000000614363565b6001600160a01b038551167f0000000000000000000000000000000000000000000000000000000000000000614363565b612855565b612aea565b505050612d0491935092612855565b6020919550612d359060603d606011611e3957611e2681836112ab565b5095919050612c3a565b5f91612b98565b612d68612d528d61149d565b8d8b611c3f8860408884511693015193016114b1565b612b81565b50321515612b7c565b906001600160a01b03825116806001600160a01b038516145f14613290575060208401516131a25750604051927f967870920000000000000000000000000000000000000000000000000000000084526001600160a01b03831660048501526020846024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa938415610328575f9461316e575b5083916001600160a01b038151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015230602482015260448101959095525f8580606481010381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af190811561032857612f45955f9261315f575b505b611f366001600160a01b03612f018b82855116836020870151169061437c565b50925116918c6002612f1860809283810190611a32565b92909360405196612f2888611243565b8752306020880152896040880152606087015285015236916114da565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1938415610328575f9461313c575b50602001511561302857908291612d049493612f9e898d6117ea565b52612fd3836001600160a01b0384167f0000000000000000000000000000000000000000000000000000000000000000614363565b8083108061300d575b612fe9575b505050612855565b612fff61300593612ff98b61149d565b9261390a565b916144af565b5f8080612fe1565b50306001600160a01b036130208b61149d565b161415612fdc565b9450908094808210613041575b505050612d0490612855565b916130516020926130d09461390a565b90613086826001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836144af565b60405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561032857613111575b8080613035565b602090813d8311613135575b61312781836112ab565b81010312610333575f61310a565b503d61311d565b6020919450613154903d805f833e61207d81836112ab565b509094919050612f82565b6131689061125f565b5f612edf565b9093506020813d60201161319a575b8161318a602093836112ab565b810103126103335751925f612e15565b3d915061317d565b90926131ad8961149d565b6001600160a01b03309116036131c8575b5f612f4594612ee1565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016936131fc8a61149d565b61320584614456565b90863b15610333576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152306024820152918116604483015285166064820152945f908690608490829084905af190811561032857612f45955f92613281575b509450506131be565b61328a9061125f565b5f613278565b6001600160a01b036020849695940151168a8282145f14613564575050506133656132c75f92846001600160a01b0388511661437c565b929061332d8c6001600160a01b03808a511693895115158614613538576132fc6132f08461149d565b935b6080810190611a32565b9290936040519661330c88611243565b875216602086015260408501528c60608501526002608085015236916114da565b60a0820152604051809381927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301613a51565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115610328575f9161351d575b5060208401518c908a90156135035783836001600160a01b03936133dc6133e2946133d58f9c9b9a989961340b9a6117ea565b51926117ea565b526117ea565b5191167f0000000000000000000000000000000000000000000000000000000000000000614363565b511561344d57612d0492916001600160a01b036020612cff930151167f000000000000000000000000000000000000000000000000000000000000000061449a565b516040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024810191909152602081806044810103815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610328576134d8575b50612d0490612855565b602090813d83116134fc575b6134ee81836112ab565b81010312610333575f6134ce565b503d6134e4565b5050909150613514929396506117ea565b5193849161340b565b61353191503d805f833e6124f581836112ab565b90506133a2565b6132fc827f000000000000000000000000000000000000000000000000000000000000000016936132f2565b6135f79650906135bf916060948b61358460809998999384810190611a32565b939094604051976135948961128f565b6001895260208901526001600160a01b038b1660408901528888015286015260a085015236916114da565b60c0820152604051809581927f2bfb780c00000000000000000000000000000000000000000000000000000000835260048301613969565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156103285787918b915f95613686575b506020015115612d0957612cff928461365e612d049796946001600160a01b03946117ea565b52167f0000000000000000000000000000000000000000000000000000000000000000614363565b60209195506136a39060603d606011611e3957611e2681836112ab565b5095919050613638565b6fffffffffffffffffffffffffffffffff6001600160a01b0360206136de818801516136d888612844565b906117ea565b5101511691612b55565b613725856001600160a01b0360208401611dc0828251167f0000000000000000000000000000000000000000000000000000000000000000614319565b612b39565b50506137557f0000000000000000000000000000000000000000000000000000000000000000613bca565b916137608351611b29565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091905f5b8651811015612813576001906001600160a01b03806137c6838b6117ea565b51165f52856020526137e160405f205c826127d7858d6117ea565b6137eb83876117ea565b526137f6828a6117ea565b51165f52856020525f604081205d016137a7565b478015613849577f00000000000000000000000000000000000000000000000000000000000000005c613849576001600160a01b036119a59216614239565b5050565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610333570180359067ffffffffffffffff821161033357602001918160051b3603831361033357565b91908110156117fe5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181360301821215610333570190565b604051906040820182811067ffffffffffffffff821117611216576040525f6020838281520152565b91908203918211611b6757565b6002111561392157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90816060910312610333578051916040602083015192015190565b61010060c06110d59360208452805161398181613917565b602085015260208101516001600160a01b0380911660408601528060408301511660608601526060820151166080850152608081015160a085015260a08101518285015201519160e0808201520190611154565b90916060828403126103335781519167ffffffffffffffff928381116103335784613a019183016116cc565b936020820151936040830151908111610333576110d59201611660565b9081518082526020808093019301915f5b828110613a3d575050505090565b835185529381019392810192600101613a2f565b602081526001600160a01b038083511660208301526020830151166040820152613a8a604083015160c0606084015260e0830190613a1e565b906060830151608082015260808301516005811015613921576110d59360a0918284015201519060c0601f1982850301910152611154565b916060838303126103335782519260208101519267ffffffffffffffff938481116103335781613af39184016116cc565b936040830151908111610333576110d59201611660565b602081526001600160a01b03808351166020830152602083015116604082015260408201516060820152613b4d606083015160c0608084015260e0830190613a1e565b9060808301516004811015613921576110d59360a0918284015201519060c0601f1982850301910152611154565b91909160808060a08301948051613b9181613917565b84526020810151613ba181613917565b60208501526001600160a01b036040820151166040850152606081015160608501520151910152565b90815c613bd6816112ce565b613be360405191826112ab565b818152613bef826112ce565b601f196020910136602084013781945f5b848110613c0e575050505050565b600190825f5280845f20015c6001600160a01b03613c2c83886117ea565b9116905201613c00565b919280613f31575b15613daa575050804710613d82576001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001691823b1561033357604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f915f8160048185895af1801561032857613d6b575b506044602092937f00000000000000000000000000000000000000000000000000000000000000001694613cf18387836144af565b8460405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115613d5f5750613d385750565b602090813d8311613d58575b613d4e81836112ab565b8101031261033357565b503d613d44565b604051903d90823e3d90fd5b60209250613d789061125f565b60445f9250613cbc565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b90915f9080613dba575b50505050565b6001600160a01b0393847f00000000000000000000000000000000000000000000000000000000000000001694807f00000000000000000000000000000000000000000000000000000000000000001691613e1484614456565b96803b15610333576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015297821660448901529186161660648701525f908690608490829084905af194851561032857613ed995613f1d575b5082936020936040518097819582947f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af1908115613d5f5750613ef2575b808080613db4565b602090813d8311613f16575b613f0881836112ab565b81010312610333575f613eea565b503d613efe565b60209350613f2a9061125f565b5f92613e88565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690821614613c3e565b6001810191805f5260209183835260405f205c8015155f14614000575f1990818101835c8380820191828403613fc3575b5050505050815c81810192818411611b67575f93815d835284832001015d5f52525f604081205d600190565b613fd0613fe09388614593565b865f52885f2001015c9185614593565b835f52808383885f2001015d5f5285855260405f205d5f80808381613f97565b50505050505f90565b5f9493831561423157806141fc575b15614160576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af180156103285761414d575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b156141495781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af1801561413e57614126575b506119a593945016614239565b614130869161125f565b61413a5784614119565b8480fd5b6040513d88823e3d90fd5b5080fd5b61415891955061125f565b5f935f6140ac565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610333576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af18015610328576141f35750565b6119a59061125f565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614614018565b505050509050565b814710614289575f8080936001600160a01b038294165af16142596129d0565b501561426157565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b906142ca575080511561426157805190602001fd5b81511580614310575b6142db575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156142d3565b6001810190825f528160205260405f205c155f1461435c57805c815f52838160205f20015d60018101809111611b6757815d5c915f5260205260405f205d600190565b5050505f90565b905f5260205261437860405f2091825c611b5a565b905d565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa93841561444c575f935f95614415575b505061441261440b8594611b29565b94856117ea565b52565b809295508194503d8311614445575b61442e81836112ab565b810103126103335760208251920151925f806143fc565b503d614424565b83513d5f823e3d90fd5b6001600160a01b039081811161446a571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b905f5260205261437860405f2091825c61390a565b6040519260208401907fa9059cbb0000000000000000000000000000000000000000000000000000000082526001600160a01b038094166024860152604485015260448452608084019084821067ffffffffffffffff8311176112165761452e935f9384936040521694519082865af16145276129d0565b90836142b5565b805190811515918261456f575b50506145445750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81925090602091810103126103335760200151801590811503610333575f8061453b565b5c111561459c57565b7f0f4ae0e4000000000000000000000000000000000000000000000000000000005f5260045ffdfea264697066735822122031fc7f06ca6189cdad3818ad909aa309478670bbcc4e4508a1cdfdabf84556c464736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8A465F6 EQ PUSH2 0xFF6 JUMPI DUP1 PUSH4 0xF8FB1CC EQ PUSH2 0xFBC JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x96D JUMPI DUP1 PUSH4 0x286F580D EQ PUSH2 0x8D6 JUMPI DUP1 PUSH4 0x2950286E EQ PUSH2 0x7EB JUMPI DUP1 PUSH4 0x48BBD869 EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0x5A3C3987 EQ PUSH2 0x64B JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x606 JUMPI DUP1 PUSH4 0x8A12A08C EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0x8C824CD9 EQ PUSH2 0x571 JUMPI DUP1 PUSH4 0x8EB1B65E EQ PUSH2 0x46A JUMPI DUP1 PUSH4 0x945ED33F EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0x96123406 EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0xCD791CCC EQ PUSH2 0x337 JUMPI PUSH4 0xE3B5DFF4 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x333 JUMPI PUSH1 0x60 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x164 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST PUSH2 0x16C PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x333 JUMPI PUSH2 0x187 PUSH2 0x18F SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x2A12 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP1 PUSH0 DUP8 PUSH2 0x1AA PUSH1 0x1 SWAP5 DUP9 PUSH2 0x17EA JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x192 JUMP JUMPDEST POP PUSH2 0x227 PUSH2 0x235 PUSH2 0x270 SWAP5 PUSH2 0x1ED PUSH0 SWAP5 DUP9 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1D1 DUP6 PUSH2 0x1273 JUMP JUMPDEST ADDRESS DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH0 NOT PUSH1 0x40 DUP6 ADD MSTORE DUP7 PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A12A08C00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x1597 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x12AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2DA SWAP3 PUSH2 0x2C5 SWAP2 PUSH0 SWAP2 PUSH2 0x306 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x172D JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x2DE JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x1088 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x2CE JUMP JUMPDEST PUSH2 0x322 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x31A DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x16A6 JUMP JUMPDEST DUP5 PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x3A9 PUSH2 0x3A3 PUSH2 0x2DA SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x10F5 JUMP JUMPDEST SWAP1 PUSH2 0x18F4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1179 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x3FD CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x405 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x40D PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x43B PUSH2 0x2DA PUSH2 0x41C DUP4 PUSH2 0x2A54 JUMP JUMPDEST SWAP2 SWAP4 SWAP1 SWAP5 PUSH2 0x435 PUSH1 0x60 PUSH2 0x42E DUP4 PUSH2 0x149D JUMP JUMPDEST SWAP3 ADD PUSH2 0x14B1 JUMP JUMPDEST SWAP1 PUSH2 0x2882 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x497 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST SWAP1 PUSH2 0x4A0 PUSH2 0x1310 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x227 PUSH2 0x536 PUSH2 0x270 SWAP5 PUSH2 0x4FC PUSH2 0x4C7 PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH2 0x4D0 CALLER PUSH2 0x2A12 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x4DE DUP7 PUSH2 0x1273 JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x945ED33F00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x182B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x2DA PUSH2 0x5D4 PUSH2 0x5BF CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x5C7 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x5CF PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x1B94 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP5 SWAP3 SWAP5 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x1088 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x2DA PUSH2 0x5D4 PUSH2 0x65F CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x667 PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x66F PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x2A54 JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x7A7 JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x77A JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x73C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x6E3 JUMPI JUMPDEST POP PUSH2 0x6CF SWAP3 POP SUB DUP4 PUSH2 0x12AB JUMP JUMPDEST PUSH2 0x2DA PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x724 JUMPI POP POP PUSH2 0x6CF SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x6C2 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x70D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x6CF SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x6C2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x69E JUMP JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x81D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST SWAP1 PUSH2 0x826 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x333 JUMPI PUSH2 0x841 PUSH2 0x849 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0x2A12 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x87E JUMPI DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x875 PUSH1 0x1 SWAP5 DUP10 PUSH2 0x17EA JUMP JUMPDEST MLOAD ADD MSTORE ADD PUSH2 0x84C JUMP JUMPDEST POP PUSH2 0x227 PUSH2 0x235 DUP6 PUSH2 0x89C PUSH0 SWAP5 PUSH2 0x270 SWAP8 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x1D1 DUP6 PUSH2 0x1273 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5A3C398700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x182B JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x903 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x141D JUMP JUMPDEST SWAP1 PUSH2 0x90C PUSH2 0x1310 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x227 PUSH2 0x536 PUSH2 0x270 SWAP5 PUSH2 0x933 PUSH2 0x4C7 PUSH0 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x8A465F600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x1597 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x333 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x333 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x333 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x333 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x9E3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x10F5 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x333 JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x333 JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0xA24 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1126 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0xA44 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x10F5 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0xA4F PUSH2 0x1A9E JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0xF94 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0xCF1 JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x333 JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x333 JUMPI PUSH2 0xB02 JUMPI JUMPDEST PUSH2 0x2DA PUSH2 0x3A9 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x18F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x333 JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x333 JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0xC73 JUMPI POP POP POP PUSH1 0x20 SWAP2 PUSH1 0x1F NOT PUSH1 0x1F DUP7 PUSH0 SWAP8 DUP8 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xBE7 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x12E6 JUMP JUMPDEST AND PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP9 ADD MSTORE PUSH1 0x3 NOT DUP8 DUP8 SUB ADD PUSH1 0x44 DUP9 ADD MSTORE DUP2 DUP7 MSTORE DUP8 DUP7 ADD CALLDATACOPY DUP8 DUP7 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD SUB ADD DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2DA SWAP4 PUSH2 0x3A9 SWAP4 PUSH2 0xC64 JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0xAD2 JUMP JUMPDEST PUSH2 0xC6D SWAP1 PUSH2 0x125F JUMP JUMPDEST DUP5 PUSH2 0xC59 JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC8A DUP8 PUSH2 0x12E6 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x333 JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0xCBA PUSH1 0x40 DUP10 ADD PUSH2 0x29FF JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xCD5 PUSH1 0x60 DUP11 ADD PUSH2 0x29FF JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0xBB6 JUMP JUMPDEST PUSH2 0xD06 PUSH2 0xCFF DUP3 DUP5 DUP7 PUSH2 0x1A83 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD12 DUP2 PUSH2 0x11FA JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH1 0x20 SWAP2 PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE DUP3 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE DUP4 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0xD7F DUP3 PUSH2 0x1243 JUMP JUMPDEST PUSH2 0xD92 PUSH1 0x24 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x12E6 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0xDA8 PUSH1 0x44 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x12E6 JUMP JUMPDEST SWAP1 DUP2 DUP6 DUP6 ADD MSTORE PUSH2 0xDC1 PUSH1 0x64 PUSH1 0xC0 DUP9 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP9 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP12 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0xF85 JUMPI JUMPDEST POP PUSH2 0xF7B JUMPI PUSH2 0xE9E PUSH2 0x29D0 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP3 PUSH2 0xF4B JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0xF16 JUMPI POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0xA5E JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0xF23 JUMPI DUP1 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP4 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0xF74 JUMPI JUMPDEST PUSH2 0xF63 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0xF00 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xF59 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0xF10 JUMP JUMPDEST PUSH2 0xF8E SWAP1 PUSH2 0x125F JUMP JUMPDEST DUP11 PUSH2 0xE91 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x333 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x333 JUMPI PUSH2 0x1004 CALLDATASIZE PUSH2 0x1023 JUMP JUMPDEST PUSH2 0x100C PUSH2 0x1A9E JUMP JUMPDEST PUSH2 0x1014 PUSH2 0x1ACB JUMP JUMPDEST PUSH2 0x43B PUSH2 0x2DA PUSH2 0x41C DUP4 PUSH2 0x1B94 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x333 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x333 JUMPI DUP3 PUSH1 0xA0 SWAP3 SUB ADD SLT PUSH2 0x333 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1074 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1066 JUMP JUMPDEST SWAP4 SWAP3 SWAP1 PUSH2 0x109D SWAP1 PUSH1 0x60 DUP7 MSTORE PUSH1 0x60 DUP7 ADD SWAP1 PUSH2 0x1055 JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP5 DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP1 DUP6 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x10D8 JUMPI POP POP POP PUSH2 0x10D5 SWAP4 SWAP5 POP PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x1055 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 MSTORE SWAP5 DUP8 ADD SWAP5 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x10B8 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x333 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x333 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x11AE JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x11EA DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x1154 JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1216 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SLT PUSH2 0x333 JUMPI PUSH1 0x40 SWAP1 DUP2 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF SWAP6 DUP5 DUP2 LT DUP8 DUP3 GT OR PUSH2 0x1216 JUMPI DUP3 MSTORE DUP4 SWAP6 PUSH2 0x1359 DUP5 PUSH2 0x12E6 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI DUP5 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x1382 DUP3 PUSH2 0x12CE JUMP JUMPDEST SWAP4 PUSH2 0x138F DUP7 MLOAD SWAP6 DUP7 PUSH2 0x12AB JUMP JUMPDEST DUP3 DUP6 MSTORE DUP4 DUP6 ADD SWAP1 DUP5 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP2 DUP5 GT PUSH2 0x333 JUMPI DUP6 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x13CD JUMPI POP POP POP POP POP DUP5 ADD MSTORE DUP2 DUP2 ADD CALLDATALOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST DUP5 DUP4 DUP4 SUB SLT PUSH2 0x333 JUMPI DUP8 MLOAD SWAP1 PUSH2 0x13E2 DUP3 PUSH2 0x11FA JUMP JUMPDEST PUSH2 0x13EB DUP5 PUSH2 0x12E6 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x13F8 DUP8 DUP6 ADD PUSH2 0x12E6 JUMP JUMPDEST DUP8 DUP4 ADD MSTORE DUP9 DUP5 ADD CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x333 JUMPI DUP3 DUP9 SWAP3 DUP12 DUP10 SWAP6 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x13AB JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP1 CALLDATALOAD SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x1437 DUP5 PUSH2 0x12CE JUMP JUMPDEST SWAP4 PUSH2 0x1445 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x12AB JUMP JUMPDEST DUP1 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP3 DUP1 DUP5 GT PUSH2 0x333 JUMPI DUP5 DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1470 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI DUP7 SWAP2 PUSH2 0x1492 DUP5 DUP5 DUP1 SWAP5 DUP10 ADD ADD PUSH2 0x131F JUMP JUMPDEST DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1460 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x333 JUMPI SWAP1 JUMP JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x333 JUMPI SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1216 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x14E6 DUP3 PUSH2 0x14BE JUMP JUMPDEST SWAP2 PUSH2 0x14F4 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x12AB JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x333 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 DUP4 ADD MLOAD SWAP5 PUSH1 0x80 DUP2 DUP7 ADD MSTORE DUP6 MLOAD DUP1 SWAP3 MSTORE DUP1 PUSH1 0xA0 DUP7 ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1564 JUMPI POP POP POP POP POP PUSH1 0x60 DUP2 PUSH1 0x40 DUP3 SWAP4 ADD MLOAD PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP1 MLOAD DUP3 AND DUP10 MSTORE DUP1 DUP5 ADD MLOAD DUP3 AND DUP10 DUP6 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP10 ADD MSTORE PUSH1 0x60 SWAP1 SWAP8 ADD SWAP7 SWAP4 DUP3 ADD SWAP4 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x1616 JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0x10D5 SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x1651 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x1510 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x15DA JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1677 DUP3 PUSH2 0x14BE JUMP JUMPDEST SWAP3 PUSH2 0x1685 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x12AB JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x333 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x333 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x1660 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x16E7 DUP2 PUSH2 0x12CE JUMP JUMPDEST SWAP4 PUSH2 0x16F5 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x12AB JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x333 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x171E JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1710 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x333 JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x333 JUMPI DUP5 PUSH2 0x1759 SWAP2 DUP4 ADD PUSH2 0x16CC JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP6 DUP2 GT PUSH2 0x333 JUMPI DUP4 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x333 JUMPI DUP2 MLOAD SWAP2 PUSH2 0x1781 DUP4 PUSH2 0x12CE JUMP JUMPDEST SWAP3 PUSH2 0x178F PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x12AB JUMP JUMPDEST DUP1 DUP5 MSTORE DUP3 DUP1 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x333 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x17CB JUMPI POP POP POP POP SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x16CC JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x333 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x17A9 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x17FE JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x20 SWAP1 DUP2 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND DUP2 DUP4 ADD MSTORE DUP1 DUP6 ADD MLOAD SWAP3 PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 DUP1 PUSH1 0xE0 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP6 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x18AA JUMPI POP POP POP POP POP PUSH1 0x80 DUP5 PUSH1 0x40 PUSH2 0x10D5 SWAP6 SWAP7 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP6 DUP4 DUP1 PUSH2 0x18E5 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 DUP11 PUSH1 0x1 SWAP7 SUB ADD DUP7 MSTORE DUP11 MLOAD PUSH2 0x1510 JUMP JUMPDEST SWAP9 ADD SWAP3 ADD SWAP3 ADD SWAP1 SWAP4 SWAP3 SWAP2 PUSH2 0x186E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x18FF CALLER PUSH2 0x2A12 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x1A0A JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x1938 DUP4 PUSH2 0x12CE JUMP JUMPDEST SWAP3 PUSH2 0x1946 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x12AB JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x1955 DUP3 PUSH2 0x12CE JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x19F9 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x19B0 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x19A5 SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x19A7 JUMPI JUMPDEST POP PUSH2 0x380A JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x199F JUMP JUMPDEST DUP1 PUSH2 0x19DD PUSH0 DUP1 PUSH2 0x19C5 PUSH2 0xCFF DUP10 SWAP7 DUP9 DUP11 PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x19D6 PUSH2 0x29D0 JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x42B5 JUMP JUMPDEST PUSH2 0x19E7 DUP3 DUP9 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x19F2 DUP2 DUP8 PUSH2 0x17EA JUMP JUMPDEST POP ADD PUSH2 0x1963 JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x1958 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x333 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x17FE JUMPI PUSH2 0x1A9A SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x1A0A JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x1AFD JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x1B33 DUP3 PUSH2 0x12CE JUMP JUMPDEST PUSH2 0x1B40 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x12AB JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x1B50 DUP3 SWAP5 PUSH2 0x12CE JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1B67 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x281C JUMPI SWAP1 PUSH2 0x1BB7 PUSH2 0x1BB0 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x384D JUMP JUMPDEST SWAP1 POP PUSH2 0x1B29 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x1BC7 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x384D JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x2720 JUMPI PUSH2 0x1BF1 DUP2 PUSH2 0x1BEC PUSH2 0x1BE4 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x384D JUMP JUMPDEST CALLDATASIZE SWAP4 SWAP2 PUSH2 0x38A1 JUMP JUMPDEST PUSH2 0x131F JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP6 ADD MLOAD SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 MLOAD AND SWAP1 PUSH1 0x20 DUP8 ADD MLOAD DUP1 MLOAD ISZERO PUSH2 0x17FE JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x2717 JUMPI JUMPDEST ISZERO PUSH2 0x26BC JUMPI PUSH2 0x1C45 PUSH2 0x1C31 DUP7 PUSH2 0x149D JUMP JUMPDEST DUP8 DUP5 PUSH2 0x1C3F PUSH1 0x60 DUP11 ADD PUSH2 0x14B1 JUMP JUMPDEST SWAP3 PUSH2 0x3C36 JUMP JUMPDEST PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x26AC JUMPI PUSH2 0x1C5C PUSH2 0x38E1 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1B67 JUMPI DUP3 EQ DUP1 PUSH1 0x20 DUP4 ADD MSTORE DUP3 ISZERO DUP3 MSTORE PUSH0 EQ PUSH2 0x26A5 JUMPI PUSH1 0x60 DUP10 ADD MLOAD SWAP1 JUMPDEST PUSH2 0x1C94 DUP4 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x17EA JUMP JUMPDEST MLOAD PUSH1 0x40 DUP2 ADD MLOAD SWAP1 SWAP2 SWAP1 ISZERO PUSH2 0x1E47 JUMPI PUSH2 0x1D2C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 MLOAD AND SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP6 EQ PUSH0 EQ PUSH2 0x1E40 JUMPI PUSH1 0x1 SWAP5 JUMPDEST PUSH1 0x40 MLOAD SWAP6 PUSH2 0x1CD4 DUP8 PUSH2 0x1273 JUMP JUMPDEST PUSH0 DUP8 MSTORE PUSH2 0x1CE0 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 SWAP5 DUP6 SWAP2 DUP14 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3B7B JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x1E09 JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1DEF JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x1DE9 SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1D91 DUP13 DUP13 PUSH2 0x17EA JUMP JUMPDEST MSTORE ADD PUSH2 0x1DC0 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST ADD PUSH2 0x1C47 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 POP PUSH1 0x1 SWAP1 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x1E2E SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1E39 JUMPI JUMPDEST PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x394E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x1D69 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E1C JUMP JUMPDEST PUSH0 SWAP5 PUSH2 0x1CC7 JUMP JUMPDEST DUP9 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 SWAP6 SWAP5 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND EQ PUSH0 EQ PUSH2 0x228B JUMPI POP POP DUP2 MLOAD ISZERO SWAP1 POP PUSH2 0x21C7 JUMPI DUP9 DUP11 DUP1 ISZERO ISZERO DUP1 PUSH2 0x21AC JUMPI JUMPDEST PUSH2 0x20A6 JUMPI JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP3 SWAP2 PUSH2 0x1F36 DUP3 PUSH2 0x1F6E SWAP8 DUP12 PUSH0 SWAP6 DUP10 PUSH32 0x0 SWAP3 AND DUP1 DUP9 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP9 KECCAK256 TLOAD PUSH2 0x2095 JUMPI JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH2 0x1EF5 DUP10 DUP4 MLOAD AND PUSH1 0x20 DUP5 ADD SWAP10 DUP12 DUP12 MLOAD AND SWAP1 DUP1 ISZERO DUP11 EQ PUSH2 0x208F JUMPI POP DUP4 SWAP2 PUSH2 0x437C JUMP JUMPDEST SWAP10 SWAP1 SWAP3 MLOAD AND SWAP5 PUSH2 0x1F0A PUSH1 0x80 SWAP2 DUP3 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x1F1A DUP10 PUSH2 0x1243 JUMP JUMPDEST DUP9 MSTORE ADDRESS PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3B0A JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x2065 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2042 JUMPI SWAP2 PUSH2 0x2015 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x1FD3 PUSH2 0x203D SWAP7 DUP7 PUSH2 0x17EA JUMP JUMPDEST MLOAD PUSH2 0x1FDE DUP14 DUP14 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x200C DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP MLOAD AND SWAP3 PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP1 PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x1DE9 JUMP JUMPDEST SWAP9 POP PUSH1 0x1 SWAP3 SWAP5 POP PUSH2 0x205B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP8 MLOAD AND SWAP3 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x2085 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x207D DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3AC2 JUMP JUMPDEST POP SWAP5 SWAP2 SWAP1 POP PUSH2 0x1FAB JUMP JUMPDEST SWAP2 PUSH2 0x437C JUMP JUMPDEST PUSH2 0x209E SWAP3 PUSH2 0x449A JUMP JUMPDEST PUSH0 DUP3 DUP2 PUSH2 0x1ECE JUMP JUMPDEST POP PUSH2 0x20B3 SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x149D JUMP JUMPDEST SWAP2 PUSH2 0x20BD DUP12 PUSH2 0x4456 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP3 DUP8 AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 DUP4 DUP1 PUSH1 0x84 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI DUP11 PUSH2 0x1F36 DUP14 PUSH2 0x1F6E SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x219D JUMPI JUMPDEST POP SWAP8 POP SWAP3 POP POP SWAP2 SWAP3 SWAP4 POP PUSH2 0x1E83 JUMP JUMPDEST PUSH2 0x21A6 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x218E JUMP JUMPDEST POP PUSH2 0x21B6 DUP3 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS EQ ISZERO PUSH2 0x1E7E JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 MLOAD AND SWAP3 DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE ADDRESS PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP13 SWAP1 MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI DUP11 PUSH2 0x1F36 DUP14 PUSH2 0x1F6E SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 PUSH0 SWAP6 PUSH2 0x227C JUMPI JUMPDEST POP PUSH2 0x1ED2 JUMP JUMPDEST PUSH2 0x2285 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x2276 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP8 SWAP7 SWAP5 SWAP8 ADD MLOAD AND SWAP1 DUP10 DUP2 DUP4 EQ PUSH0 EQ PUSH2 0x2530 JUMPI PUSH2 0x2326 SWAP3 POP PUSH2 0x235E SWAP8 SWAP2 POP PUSH1 0x1 PUSH2 0x22CC PUSH0 SWAP7 SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP12 MLOAD AND PUSH2 0x437C JUMP JUMPDEST POP SWAP3 DUP3 DUP10 MLOAD AND SWAP6 PUSH1 0x20 DUP10 ADD MLOAD ISZERO ISZERO DUP9 EQ PUSH2 0x2507 JUMPI PUSH2 0x22E9 DUP3 PUSH2 0x149D JUMP JUMPDEST SWAP5 JUMPDEST PUSH2 0x22FA PUSH1 0x80 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP6 SWAP1 SWAP7 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x230A DUP12 PUSH2 0x1243 JUMP JUMPDEST DUP11 MSTORE AND PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A51 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP4 PUSH2 0x24DD JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x241C JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x203D SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x23C2 DUP13 DUP13 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x23F2 DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE SWAP4 SWAP11 POP SWAP1 SWAP2 AND SWAP5 POP DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x24B2 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x1DE9 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x24D6 JUMPI JUMPDEST PUSH2 0x24C8 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x24A9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x24BE JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP PUSH2 0x24FD SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x24F5 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x39D5 JUMP JUMPDEST POP SWAP4 SWAP2 SWAP1 POP PUSH2 0x239B JUMP JUMPDEST DUP4 PUSH32 0x0 AND SWAP5 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x25BF SWAP6 PUSH2 0x2587 SWAP4 SWAP5 SWAP6 PUSH2 0x2551 PUSH1 0x80 SWAP12 DUP13 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x2561 DUP10 PUSH2 0x128F JUMP JUMPDEST PUSH0 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE AND PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 SWAP11 DUP12 SWAP8 DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3969 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x267E JUMPI JUMPDEST POP POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1DEF JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x203D SWAP4 PUSH1 0x1 SWAP7 SWAP6 PUSH2 0x2624 DUP13 DUP13 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x2654 DUP4 DUP4 DUP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP ADD MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x20 SWAP3 SWAP5 POP SWAP1 DUP2 PUSH2 0x269A SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1E39 JUMPI PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP1 PUSH0 PUSH2 0x25FC JUMP JUMPDEST PUSH0 SWAP1 PUSH2 0x1C86 JUMP JUMPDEST POP SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP PUSH1 0x1 ADD PUSH2 0x1BBA JUMP JUMPDEST PUSH2 0x26E6 DUP3 PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP PUSH2 0x2712 DUP7 DUP4 PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x1C45 JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x1C20 JUMP JUMPDEST POP POP PUSH2 0x274B PUSH32 0x0 PUSH2 0x3BCA JUMP JUMPDEST SWAP2 PUSH2 0x2756 DUP4 MLOAD PUSH2 0x1B29 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2813 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x27BC DUP4 DUP12 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x27EA PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x27D7 DUP6 DUP14 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP9 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 PUSH2 0x1B5A JUMP JUMPDEST PUSH2 0x27F4 DUP4 DUP8 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x27FF DUP3 DUP11 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x279D JUMP JUMPDEST POP SWAP5 SWAP4 SWAP2 POP SWAP2 POP JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 SGT PUSH1 0x1 AND PUSH2 0x1B67 JUMPI JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP2 EQ PUSH2 0x1B67 JUMPI PUSH0 NOT ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 DUP2 TLOAD PUSH32 0x0 PUSH2 0x28D2 DUP2 TLOAD PUSH2 0x2844 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP2 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x2993 JUMPI POP POP POP PUSH2 0x290A SWAP1 PUSH2 0x2844 JUMP JUMPDEST SWAP2 PUSH32 0x0 SWAP3 JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x2943 JUMPI POP POP POP POP PUSH2 0x19A5 SWAP1 PUSH2 0x380A JUMP JUMPDEST PUSH2 0x298E SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x2988 PUSH1 0x20 PUSH0 DUP4 DUP3 DUP3 KECCAK256 ADD TLOAD SWAP2 DUP3 DUP3 MSTORE DUP9 DUP2 MSTORE DUP9 PUSH1 0x40 SWAP2 PUSH2 0x297B DUP11 DUP14 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x4009 JUMP JUMPDEST DUP5 DUP5 MSTORE MSTORE DUP2 KECCAK256 TSTORE DUP5 PUSH2 0x3F66 JUMP JUMPDEST POP PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x292E JUMP JUMPDEST PUSH2 0x29CB SWAP1 DUP3 PUSH0 MSTORE PUSH2 0x2988 PUSH1 0x20 PUSH0 DUP11 DUP8 DUP6 DUP5 DUP5 KECCAK256 ADD TLOAD SWAP4 DUP5 DUP5 MSTORE DUP2 DUP2 MSTORE PUSH2 0x297B DUP13 PUSH1 0x40 SWAP5 DUP6 DUP8 KECCAK256 TLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH2 0x3C36 JUMP JUMPDEST PUSH2 0x28F6 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x29FA JUMPI RETURNDATASIZE SWAP1 PUSH2 0x29E1 DUP3 PUSH2 0x14BE JUMP JUMPDEST SWAP2 PUSH2 0x29EF PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x12AB JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x2A4A JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP3 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x281C JUMPI PUSH2 0x2A70 PUSH2 0x1BB0 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x384D JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST PUSH2 0x2A80 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x384D JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x372A JUMPI PUSH2 0x2A9D DUP2 PUSH2 0x1BEC PUSH2 0x1BE4 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x384D JUMP JUMPDEST PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH2 0x2AD7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1B67 JUMPI JUMPDEST PUSH0 DUP2 SLT ISZERO PUSH2 0x2AFD JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x2A73 JUMP JUMPDEST PUSH2 0x2B0B DUP2 PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x17EA JUMP JUMPDEST MLOAD PUSH2 0x2B14 PUSH2 0x38E1 JUMP JUMPDEST SWAP1 DUP3 ISZERO PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP5 ADD MLOAD MLOAD DUP1 PUSH0 NOT DUP2 ADD GT PUSH2 0x1B67 JUMPI PUSH0 NOT ADD DUP4 EQ DUP1 DUP4 MSTORE PUSH2 0x36E8 JUMPI JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD ISZERO PUSH2 0x36AD JUMPI PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP2 JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD ISZERO PUSH2 0x2D76 JUMPI DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x60 SWAP3 PUSH1 0x20 PUSH2 0x2BF9 SWAP8 ADD MLOAD ISZERO ISZERO DUP1 PUSH2 0x2D6D JUMPI JUMPDEST PUSH2 0x2D46 JUMPI JUMPDEST MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 SUB PUSH2 0x2D3F JUMPI PUSH1 0x1 SWAP2 JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH2 0x2BA5 DUP5 PUSH2 0x1273 JUMP JUMPDEST PUSH1 0x1 DUP5 MSTORE PUSH2 0x2BB2 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP9 DUP4 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3B7B JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x328 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x2D18 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2D09 JUMPI PUSH2 0x2CFF SWAP3 DUP5 PUSH2 0x2C5B PUSH2 0x2D04 SWAP8 SWAP7 SWAP5 PUSH2 0x2CCE SWAP5 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x2C8F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2CA6 DUP5 PUSH1 0x40 DUP11 ADD MLOAD PUSH2 0x390A JUMP JUMPDEST SWAP2 AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x2AEA JUMP JUMPDEST POP POP POP PUSH2 0x2D04 SWAP2 SWAP4 POP SWAP3 PUSH2 0x2855 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x2D35 SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1E39 JUMPI PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x2C3A JUMP JUMPDEST PUSH0 SWAP2 PUSH2 0x2B98 JUMP JUMPDEST PUSH2 0x2D68 PUSH2 0x2D52 DUP14 PUSH2 0x149D JUMP JUMPDEST DUP14 DUP12 PUSH2 0x1C3F DUP9 PUSH1 0x40 DUP9 DUP5 MLOAD AND SWAP4 ADD MLOAD SWAP4 ADD PUSH2 0x14B1 JUMP JUMPDEST PUSH2 0x2B81 JUMP JUMPDEST POP ORIGIN ISZERO ISZERO PUSH2 0x2B7C JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH0 EQ PUSH2 0x3290 JUMPI POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x31A2 JUMPI POP PUSH1 0x40 MLOAD SWAP3 PUSH32 0x9678709200000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x20 DUP5 PUSH1 0x24 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x316E JUMPI JUMPDEST POP DUP4 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH0 DUP6 DUP1 PUSH1 0x64 DUP2 ADD SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2F45 SWAP6 PUSH0 SWAP3 PUSH2 0x315F JUMPI JUMPDEST POP JUMPDEST PUSH2 0x1F36 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2F01 DUP12 DUP3 DUP6 MLOAD AND DUP4 PUSH1 0x20 DUP8 ADD MLOAD AND SWAP1 PUSH2 0x437C JUMP JUMPDEST POP SWAP3 MLOAD AND SWAP2 DUP13 PUSH1 0x2 PUSH2 0x2F18 PUSH1 0x80 SWAP3 DUP4 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x2F28 DUP9 PUSH2 0x1243 JUMP JUMPDEST DUP8 MSTORE ADDRESS PUSH1 0x20 DUP9 ADD MSTORE DUP10 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP5 PUSH2 0x313C JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x3028 JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x2D04 SWAP5 SWAP4 PUSH2 0x2F9E DUP10 DUP14 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x2FD3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST DUP1 DUP4 LT DUP1 PUSH2 0x300D JUMPI JUMPDEST PUSH2 0x2FE9 JUMPI JUMPDEST POP POP POP PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x2FFF PUSH2 0x3005 SWAP4 PUSH2 0x2FF9 DUP12 PUSH2 0x149D JUMP JUMPDEST SWAP3 PUSH2 0x390A JUMP JUMPDEST SWAP2 PUSH2 0x44AF JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x2FE1 JUMP JUMPDEST POP ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3020 DUP12 PUSH2 0x149D JUMP JUMPDEST AND EQ ISZERO PUSH2 0x2FDC JUMP JUMPDEST SWAP5 POP SWAP1 DUP1 SWAP5 DUP1 DUP3 LT PUSH2 0x3041 JUMPI JUMPDEST POP POP POP PUSH2 0x2D04 SWAP1 PUSH2 0x2855 JUMP JUMPDEST SWAP2 PUSH2 0x3051 PUSH1 0x20 SWAP3 PUSH2 0x30D0 SWAP5 PUSH2 0x390A JUMP JUMPDEST SWAP1 PUSH2 0x3086 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP4 PUSH2 0x44AF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x3111 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x3035 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3135 JUMPI JUMPDEST PUSH2 0x3127 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x310A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x311D JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP5 POP PUSH2 0x3154 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x207D DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST POP SWAP1 SWAP5 SWAP2 SWAP1 POP PUSH2 0x2F82 JUMP JUMPDEST PUSH2 0x3168 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x2EDF JUMP JUMPDEST SWAP1 SWAP4 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x319A JUMPI JUMPDEST DUP2 PUSH2 0x318A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI MLOAD SWAP3 PUSH0 PUSH2 0x2E15 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x317D JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x31AD DUP10 PUSH2 0x149D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB ADDRESS SWAP2 AND SUB PUSH2 0x31C8 JUMPI JUMPDEST PUSH0 PUSH2 0x2F45 SWAP5 PUSH2 0x2EE1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 PUSH2 0x31FC DUP11 PUSH2 0x149D JUMP JUMPDEST PUSH2 0x3205 DUP5 PUSH2 0x4456 JUMP JUMPDEST SWAP1 DUP7 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP2 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP5 PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x328 JUMPI PUSH2 0x2F45 SWAP6 PUSH0 SWAP3 PUSH2 0x3281 JUMPI JUMPDEST POP SWAP5 POP POP PUSH2 0x31BE JUMP JUMPDEST PUSH2 0x328A SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 PUSH2 0x3278 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 SWAP7 SWAP6 SWAP5 ADD MLOAD AND DUP11 DUP3 DUP3 EQ PUSH0 EQ PUSH2 0x3564 JUMPI POP POP POP PUSH2 0x3365 PUSH2 0x32C7 PUSH0 SWAP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 MLOAD AND PUSH2 0x437C JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0x332D DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 MLOAD AND SWAP4 DUP10 MLOAD ISZERO ISZERO DUP7 EQ PUSH2 0x3538 JUMPI PUSH2 0x32FC PUSH2 0x32F0 DUP5 PUSH2 0x149D JUMP JUMPDEST SWAP4 JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP3 SWAP1 SWAP4 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x330C DUP9 PUSH2 0x1243 JUMP JUMPDEST DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE DUP13 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3A51 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x328 JUMPI PUSH0 SWAP2 PUSH2 0x351D JUMPI JUMPDEST POP PUSH1 0x20 DUP5 ADD MLOAD DUP13 SWAP1 DUP11 SWAP1 ISZERO PUSH2 0x3503 JUMPI DUP4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x33DC PUSH2 0x33E2 SWAP5 PUSH2 0x33D5 DUP16 SWAP13 SWAP12 SWAP11 SWAP9 SWAP10 PUSH2 0x340B SWAP11 PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP2 AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST MLOAD ISZERO PUSH2 0x344D JUMPI PUSH2 0x2D04 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x2CFF SWAP4 ADD MLOAD AND PUSH32 0x0 PUSH2 0x449A JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 DUP1 PUSH1 0x44 DUP2 ADD SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x34D8 JUMPI JUMPDEST POP PUSH2 0x2D04 SWAP1 PUSH2 0x2855 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x34FC JUMPI JUMPDEST PUSH2 0x34EE DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x34CE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34E4 JUMP JUMPDEST POP POP SWAP1 SWAP2 POP PUSH2 0x3514 SWAP3 SWAP4 SWAP7 POP PUSH2 0x17EA JUMP JUMPDEST MLOAD SWAP4 DUP5 SWAP2 PUSH2 0x340B JUMP JUMPDEST PUSH2 0x3531 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x24F5 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST SWAP1 POP PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0x32FC DUP3 PUSH32 0x0 AND SWAP4 PUSH2 0x32F2 JUMP JUMPDEST PUSH2 0x35F7 SWAP7 POP SWAP1 PUSH2 0x35BF SWAP2 PUSH1 0x60 SWAP5 DUP12 PUSH2 0x3584 PUSH1 0x80 SWAP10 SWAP9 SWAP10 SWAP4 DUP5 DUP2 ADD SWAP1 PUSH2 0x1A32 JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x3594 DUP10 PUSH2 0x128F JUMP JUMPDEST PUSH1 0x1 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x40 DUP10 ADD MSTORE DUP9 DUP9 ADD MSTORE DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x14DA JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP3 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x3969 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x328 JUMPI DUP8 SWAP2 DUP12 SWAP2 PUSH0 SWAP6 PUSH2 0x3686 JUMPI JUMPDEST POP PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2D09 JUMPI PUSH2 0x2CFF SWAP3 DUP5 PUSH2 0x365E PUSH2 0x2D04 SWAP8 SWAP7 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x17EA JUMP JUMPDEST MSTORE AND PUSH32 0x0 PUSH2 0x4363 JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP6 POP PUSH2 0x36A3 SWAP1 PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x1E39 JUMPI PUSH2 0x1E26 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST POP SWAP6 SWAP2 SWAP1 POP PUSH2 0x3638 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 PUSH2 0x36DE DUP2 DUP9 ADD MLOAD PUSH2 0x36D8 DUP9 PUSH2 0x2844 JUMP JUMPDEST SWAP1 PUSH2 0x17EA JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP2 PUSH2 0x2B55 JUMP JUMPDEST PUSH2 0x3725 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 ADD PUSH2 0x1DC0 DUP3 DUP3 MLOAD AND PUSH32 0x0 PUSH2 0x4319 JUMP JUMPDEST PUSH2 0x2B39 JUMP JUMPDEST POP POP PUSH2 0x3755 PUSH32 0x0 PUSH2 0x3BCA JUMP JUMPDEST SWAP2 PUSH2 0x3760 DUP4 MLOAD PUSH2 0x1B29 JUMP JUMPDEST PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2813 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x37C6 DUP4 DUP12 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH2 0x37E1 PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP3 PUSH2 0x27D7 DUP6 DUP14 PUSH2 0x17EA JUMP JUMPDEST PUSH2 0x37EB DUP4 DUP8 PUSH2 0x17EA JUMP JUMPDEST MSTORE PUSH2 0x37F6 DUP3 DUP11 PUSH2 0x17EA JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP6 PUSH1 0x20 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE ADD PUSH2 0x37A7 JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x3849 JUMPI PUSH32 0x0 TLOAD PUSH2 0x3849 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x19A5 SWAP3 AND PUSH2 0x4239 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x333 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x333 JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x17FE JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x333 JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x40 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1216 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0x20 DUP4 DUP3 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1B67 JUMPI JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3921 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x333 JUMPI DUP1 MLOAD SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0xC0 PUSH2 0x10D5 SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH2 0x3981 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0xE0 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x1154 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x333 JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x333 JUMPI DUP5 PUSH2 0x3A01 SWAP2 DUP4 ADD PUSH2 0x16CC JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x1660 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x3A3D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x3A2F JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3A8A PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x3921 JUMPI PUSH2 0x10D5 SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x333 JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x333 JUMPI DUP2 PUSH2 0x3AF3 SWAP2 DUP5 ADD PUSH2 0x16CC JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x333 JUMPI PUSH2 0x10D5 SWAP3 ADD PUSH2 0x1660 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x3B4D PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xE0 DUP4 ADD SWAP1 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x3921 JUMPI PUSH2 0x10D5 SWAP4 PUSH1 0xA0 SWAP2 DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x1154 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x80 DUP1 PUSH1 0xA0 DUP4 ADD SWAP5 DUP1 MLOAD PUSH2 0x3B91 DUP2 PUSH2 0x3917 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x3BA1 DUP2 PUSH2 0x3917 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP6 ADD MSTORE ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 TLOAD PUSH2 0x3BD6 DUP2 PUSH2 0x12CE JUMP JUMPDEST PUSH2 0x3BE3 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x12AB JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH2 0x3BEF DUP3 PUSH2 0x12CE JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 SWAP2 ADD CALLDATASIZE PUSH1 0x20 DUP5 ADD CALLDATACOPY DUP2 SWAP5 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3C0E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH0 MSTORE DUP1 DUP5 PUSH0 KECCAK256 ADD TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3C2C DUP4 DUP9 PUSH2 0x17EA JUMP JUMPDEST SWAP2 AND SWAP1 MSTORE ADD PUSH2 0x3C00 JUMP JUMPDEST SWAP2 SWAP3 DUP1 PUSH2 0x3F31 JUMPI JUMPDEST ISZERO PUSH2 0x3DAA JUMPI POP POP DUP1 SELFBALANCE LT PUSH2 0x3D82 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH0 SWAP2 PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x3D6B JUMPI JUMPDEST POP PUSH1 0x44 PUSH1 0x20 SWAP3 SWAP4 PUSH32 0x0 AND SWAP5 PUSH2 0x3CF1 DUP4 DUP8 DUP4 PUSH2 0x44AF JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3D5F JUMPI POP PUSH2 0x3D38 JUMPI POP JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3D58 JUMPI JUMPDEST PUSH2 0x3D4E DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D44 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x3D78 SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x3CBC JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x3DBA JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 PUSH32 0x0 AND SWAP5 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x3E14 DUP5 PUSH2 0x4456 JUMP JUMPDEST SWAP7 DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP8 DUP3 AND PUSH1 0x44 DUP10 ADD MSTORE SWAP2 DUP7 AND AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 SWAP1 DUP7 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x328 JUMPI PUSH2 0x3ED9 SWAP6 PUSH2 0x3F1D JUMPI JUMPDEST POP DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x3D5F JUMPI POP PUSH2 0x3EF2 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x3DB4 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3F16 JUMPI JUMPDEST PUSH2 0x3F08 DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH0 PUSH2 0x3EEA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3EFE JUMP JUMPDEST PUSH1 0x20 SWAP4 POP PUSH2 0x3F2A SWAP1 PUSH2 0x125F JUMP JUMPDEST PUSH0 SWAP3 PUSH2 0x3E88 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP3 AND EQ PUSH2 0x3C3E JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP2 DUP1 PUSH0 MSTORE PUSH1 0x20 SWAP2 DUP4 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP1 ISZERO ISZERO PUSH0 EQ PUSH2 0x4000 JUMPI PUSH0 NOT SWAP1 DUP2 DUP2 ADD DUP4 TLOAD DUP4 DUP1 DUP3 ADD SWAP2 DUP3 DUP5 SUB PUSH2 0x3FC3 JUMPI JUMPDEST POP POP POP POP POP DUP2 TLOAD DUP2 DUP2 ADD SWAP3 DUP2 DUP5 GT PUSH2 0x1B67 JUMPI PUSH0 SWAP4 DUP2 TSTORE DUP4 MSTORE DUP5 DUP4 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x3FD0 PUSH2 0x3FE0 SWAP4 DUP9 PUSH2 0x4593 JUMP JUMPDEST DUP7 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 ADD ADD TLOAD SWAP2 DUP6 PUSH2 0x4593 JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP1 DUP4 DUP4 DUP9 PUSH0 KECCAK256 ADD ADD TSTORE PUSH0 MSTORE DUP6 DUP6 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH0 DUP1 DUP1 DUP4 DUP2 PUSH2 0x3F97 JUMP JUMPDEST POP POP POP POP POP PUSH0 SWAP1 JUMP JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x4231 JUMPI DUP1 PUSH2 0x41FC JUMPI JUMPDEST ISZERO PUSH2 0x4160 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x414D JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x4149 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x413E JUMPI PUSH2 0x4126 JUMPI JUMPDEST POP PUSH2 0x19A5 SWAP4 SWAP5 POP AND PUSH2 0x4239 JUMP JUMPDEST PUSH2 0x4130 DUP7 SWAP2 PUSH2 0x125F JUMP JUMPDEST PUSH2 0x413A JUMPI DUP5 PUSH2 0x4119 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x4158 SWAP2 SWAP6 POP PUSH2 0x125F JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x40AC JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x333 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x328 JUMPI PUSH2 0x41F3 JUMPI POP JUMP JUMPDEST PUSH2 0x19A5 SWAP1 PUSH2 0x125F JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x4018 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x4289 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x4259 PUSH2 0x29D0 JUMP JUMPDEST POP ISZERO PUSH2 0x4261 JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x42CA JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x4261 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x4310 JUMPI JUMPDEST PUSH2 0x42DB JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x42D3 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD ISZERO PUSH0 EQ PUSH2 0x435C JUMPI DUP1 TLOAD DUP2 PUSH0 MSTORE DUP4 DUP2 PUSH1 0x20 PUSH0 KECCAK256 ADD TSTORE PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1B67 JUMPI DUP2 TSTORE TLOAD SWAP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x4378 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x1B5A JUMP JUMPDEST SWAP1 TSTORE JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x444C JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x4415 JUMPI JUMPDEST POP POP PUSH2 0x4412 PUSH2 0x440B DUP6 SWAP5 PUSH2 0x1B29 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x17EA JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x4445 JUMPI JUMPDEST PUSH2 0x442E DUP2 DUP4 PUSH2 0x12AB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x43FC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4424 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x446A JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x4378 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 TLOAD PUSH2 0x390A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 AND PUSH1 0x24 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x44 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x1216 JUMPI PUSH2 0x452E SWAP4 PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x40 MSTORE AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x4527 PUSH2 0x29D0 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x42B5 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x456F JUMPI JUMPDEST POP POP PUSH2 0x4544 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 SWAP3 POP SWAP1 PUSH1 0x20 SWAP2 DUP2 ADD SUB SLT PUSH2 0x333 JUMPI PUSH1 0x20 ADD MLOAD DUP1 ISZERO SWAP1 DUP2 ISZERO SUB PUSH2 0x333 JUMPI PUSH0 DUP1 PUSH2 0x453B JUMP JUMPDEST TLOAD GT ISZERO PUSH2 0x459C JUMPI JUMP JUMPDEST PUSH32 0xF4AE0E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE 0xFC PUSH32 0x6CA6189CDAD3818AD909AA309478670BBCC4E4508A1CDFDABF84556C464736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"690:1294:78:-:0;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;-1:-1:-1;;;;;16367:5:62;690:1294:78;16345:10:62;:28;16341:79;;690:1294:78;16341:79:62;16396:13;;;690:1294:78;16396:13:62;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;5435:19:62;690:1294:78;;;;;;:::i;:::-;5435:19:62;;;;:::i;:::-;31554:13:57;690:1294:78;31587:3:57;690:1294:78;;31569:16:57;;;;;31606:8;690:1294:78;31606:8:57;;690:1294:78;31606:8:57;;;:::i;:::-;;:21;690:1294:78;;31554:13:57;;31569:16;;31733:413;;690:1294:78;31569:16:57;690:1294:78;;31569:16:57;;690:1294:78;;;;;;:::i;:::-;31899:4:57;690:1294:78;;;31831:293:57;;690:1294:78;-1:-1:-1;;690:1294:78;31831:293:57;;690:1294:78;31831:293:57;690:1294:78;31831:293:57;;690:1294:78;;;;:::i;:::-;31831:293:57;;;690:1294:78;;;31733:413:57;;;;690:1294:78;31733:413:57;;;690:1294:78;31733:413:57;;;:::i;:::-;;-1:-1:-1;;31733:413:57;;;;;;:::i;:::-;690:1294:78;;31699:465:57;;;;690:1294:78;31699:465:57;;690:1294:78;;31699:465:57;;690:1294:78;;;;;;:::i;:::-;31699:465:57;:6;;-1:-1:-1;;;;;31699:6:57;690:1294:78;31699:465:57;;;;;;;690:1294:78;31699:465:57;31671:558;31699:465;690:1294:78;31699:465:57;;;31549:93;690:1294:78;;;;;31671:558:57;;;;;;:::i;:::-;6887:82:62;;;;;;31549:93:57;690:1294:78;;;;;;;:::i;:::-;;;;6887:82:62;690:1294:78;16677:12:62;3051:52:52;6887:82:62;;31699:465:57;;;;;;690:1294:78;31699:465:57;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;690:1294:78;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;4084:27:58;690:1294:78;;;;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;11039:22:62;690:1294:78;;;;;;;;:::i;:::-;11039:22:62;;:::i;:::-;690:1294:78;;;;;;;:::i;:::-;;;;;-1:-1:-1;;690:1294:78;;;;;;;;2875:28:58;690:1294:78;;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;17491:16:57;690:1294:78;17427:25:57;;;:::i;:::-;17476:13;;;;17491:16;690:1294:78;17476:13:57;;;:::i;:::-;17491:16;;;:::i;:::-;;;:::i;:::-;690:1294:78;551:66:50;3051:52:52;690:1294:78;;;;;;;:::i;:::-;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;3911:402:57;;690:1294:78;;;;;;;;;;;:::i;:::-;5435:19:62;3699:10:57;5435:19:62;:::i;:::-;690:1294:78;;;;;;;:::i;:::-;3699:10:57;690:1294:78;;;4005:286:57;;690:1294:78;;;;4005:286:57;;690:1294:78;;;;4005:286:57;;690:1294:78;;;;:::i;:::-;;4005:286:57;;690:1294:78;;;3911:402:57;;;;690:1294:78;3911:402:57;;;690:1294:78;3911:402:57;;;:::i;:::-;690:1294:78;;3876:455:57;;;;690:1294:78;3876:455:57;;690:1294:78;;3876:455:57;;690:1294:78;;;;;;:::i;:::-;;;;;-1:-1:-1;;690:1294:78;;;;;;;;2613:27:58;690:1294:78;;;;;;;;33580:24:57;690:1294:78;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;33580:24:57;:::i;:::-;690:1294:78;551:66:50;3051:52:52;;;;690:1294:78;;;;;;;:::i;:::-;;;;;-1:-1:-1;;690:1294:78;;;;;;16677:12:62;2295:53:52;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;33915:25:57;690:1294:78;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;33915:25:57;:::i;690:1294:78:-;;;;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;-1:-1:-1;690:1294:78;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;3211:35:58;690:1294:78;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;5435:19:62;690:1294:78;;;;;;:::i;:::-;5435:19:62;;;;:::i;:::-;32579:13:57;690:1294:78;32612:3:57;690:1294:78;;32594:16:57;;;;;32631:8;690:1294:78;;32631:8:57;690:1294:78;32631:8:57;;;:::i;:::-;;:20;690:1294:78;;32579:13:57;;32594:16;;32767:415;;32594:16;690:1294:78;;32594:16:57;690:1294:78;32594:16:57;690:1294:78;;;;;;:::i;:::-;32866:294:57;;;690:1294:78;;;32767:415:57;;;;690:1294:78;32767:415:57;;;690:1294:78;32767:415:57;;;:::i;690:1294:78:-;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;2960:400:57;;690:1294:78;;;;;;;;;;;:::i;:::-;;3053:285:57;;690:1294:78;;;2960:400:57;;;;690:1294:78;2960:400:57;;;690:1294:78;2960:400:57;;;:::i;690:1294:78:-;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;:::i;:::-;690:1294:78;;;;;;1500:6:40;1496:65;;690:1294:78;8604:22:62;690:1294:78;;;;;8604:22:62;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10022:860:62;;8584:1371;690:1294:78;11039:22:62;3051:52:52;;690:1294:78;551:66:50;3051:52:52;11039:22:62;:::i;10022:860::-;-1:-1:-1;;;;;10812:8:62;;;;690:1294:78;10812:59:62;;;;690:1294:78;;10812:59:62;690:1294:78;10812:59:62;;10828:10;690:1294:78;10812:59:62;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;10812:59:62;;:8;;-1:-1:-1;;;;;10812:8:62;690:1294:78;10812:59:62;;;;;;;690:1294:78;10812:59:62;11039:22;10812:59;;;690:1294:78;10022:860:62;;;;;;;;10812:59;;;;:::i;:::-;;;;690:1294:78;;;;;;;-1:-1:-1;;;;;690:1294:78;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8628:3:62;690:1294:78;8672:19:62;;;;;:::i;:::-;690:1294:78;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11519:180:62;;;;;690:1294:78;;11519:180:62;;;;;;690:1294:78;11519:180:62;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;8876:338:62;;;;690:1294:78;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;8876:338:62;;;;;690:1294:78;8876:338:62;;690:1294:78;;8876:338:62;;690:1294:78;8989:4:62;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;;;8628:3;-1:-1:-1;8856:1089:62;;9341:604;;:::i;:::-;690:1294:78;-1:-1:-1;;;;;690:1294:78;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;9614:75:62;;;;690:1294:78;9614:75:62;;690:1294:78;9614:75:62;;690:1294:78;8989:4:62;690:1294:78;;;;9614:75:62;;;;;;;690:1294:78;9614:75:62;;;8856:1089;690:1294:78;;;;9614:100:62;9589:342;;8856:1089;;690:1294:78;8856:1089:62;;690:1294:78;8589:13:62;;9589:342;690:1294:78;;1881:21:42;:17;;2008:160;;;;;1877:362;2205:23;690:1294:78;2205:23:42;690:1294:78;;2205:23:42;9614:75:62;;;;;;;;;;;;;;;;;:::i;:::-;;;690:1294:78;;;;;;;9614:75:62;;;;;;;8856:1089;;;690:1294:78;8856:1089:62;;;8876:338;;;;:::i;:::-;;;;1496:65:40;1529:21;690:1294:78;1529:21:40;690:1294:78;;1529:21:40;690:1294:78;;;;;-1:-1:-1;;690:1294:78;;;;;;;;3474:36:58;690:1294:78;;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;4769:16:57;690:1294:78;4706:24:57;;;:::i;690:1294:78:-;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;690:1294:78;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;690:1294:78;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;690:1294:78;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;690:1294:78;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;3524:17:62;690:1294:78;;3524:17:62;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3524:17:62;;690:1294:78;3524:17:62;;;690:1294:78;3524:17:62;;;;;;;;;;690:1294:78;;;;;;;;3524:17:62;;690:1294:78;3524:17:62;;;;;;690:1294:78;;3524:17:62;;;;;;;;;;;;;;;;;;;;;;;;;690:1294:78;3524:17:62;;;;690:1294:78;;3524:17:62;;;690:1294:78;3524:17:62;;;;-1:-1:-1;;3524:17:62;;;;;;;;:::i;:::-;;;;;;;;690:1294:78;3524:17:62;;;;;;;;;;;690:1294:78;:::i;:::-;;;3524:17:62;;;;;;;;;;5703:590;;;5771:23;5783:10;5771:23;:::i;:::-;16826:26;;2806:53:52;;;5897:100:62;;6090:4;3051:52:52;6090:4:62;3051:52:52;;690:1294:78;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;690:1294:78;;;:::i;:::-;;-1:-1:-1;690:1294:78;;;;;;11122:13:62;;-1:-1:-1;11137:15:62;;;;;;6105:1;;;;;-1:-1:-1;6279:6:62;6105:1;3051:52:52;;16677:12:62;2295:53:52;;6887:82:62;;;11117:132;6279:6;;:::i;:::-;5703:590::o;6887:82::-;-1:-1:-1;3051:52:52;;6887:82:62;;;11154:3;11230:7;4297:55:99;-1:-1:-1;11230:7:62;690:1294:78;11230:7:62;;;;;;:::i;690:1294:78:-;;4255:25:99;;;;11223:4:62;4255:25:99;;;;:::i;:::-;11223:4:62;;4297:55:99;:::i;:::-;11173:65:62;;;;:::i;:::-;;;;;;:::i;:::-;;690:1294:78;11122:13:62;;690:1294:78;;;;;;;;;;;;;5897:100:62;5956:30;-1:-1:-1;5956:30:62;;-1:-1:-1;5956:30:62;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;1192:349:50:-;551:66;2295:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;509:165:68:-;-1:-1:-1;;;;;586:6:68;690:1294:78;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;690:1294:78;;616:41:68;;690:1294:78;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;690:1294:78;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;4799:1054:57;5170:15;;;690:1294:78;5152:15:57;:33;5148:85;;6036:12;6022:34;6036:12;;;;;;:::i;:::-;6022:34;;;:::i;:::-;6072:13;-1:-1:-1;6112:3:57;6091:12;6036;;;6091;;:::i;:::-;6087:23;;;;;;;690:1294:78;6036:12:57;6167:15;:12;6036;;;6167;;:::i;:::-;690:1294:78;;;6167:15:57;:::i;:::-;690:1294:78;:::i;:::-;6429:18:57;5170:15;6429:18;;690:1294:78;;-1:-1:-1;;;;;690:1294:78;;;6513:10:57;6036:12;6513:10;;;690:1294:78;;3524:17:62;;;6036:12:57;3524:17:62;6513:13:57;5170:15;6513:22;690:1294:78;;;;6513:68:57;;6112:3;6509:776;;;6763:16;6716:13;;;:::i;:::-;6763:16;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;7342:3:57;6036:12;6513:10;;7323;690:1294:78;7319:21:57;;;;;690:1294:78;;:::i;:::-;6036:12:57;6513:10;;7445;690:1294:78;-1:-1:-1;;690:1294:78;;;;;;;7440:26:57;;7415:21;6036:12;7415:21;;690:1294:78;7511:6:57;;690:1294:78;;7638:163:57;690:1294:78;;;7702:17:57;;;690:1294:78;7638:163:57;;7846:13;6513:10;6036:12;6513:10;;7846;:13;:::i;:::-;;5170:15;7882:13;;690:1294:78;7846:13:57;;7882;690:1294:78;5170:15:57;;7945:553;-1:-1:-1;;;;;690:1294:78;;;8122:149:57;-1:-1:-1;;;;;690:1294:78;;8122:33:57;;:149;690:1294:78;;;;8122:149:57;;5170:15;690:1294:78;;;;;:::i;:::-;-1:-1:-1;690:1294:78;;;;;:::i;:::-;6036:12:57;8003:473;;690:1294:78;5170:15:57;8003:473;;690:1294:78;8003:473:57;;;;;;;;690:1294:78;8003:473:57;;;690:1294:78;5170:15:57;690:1294:78;7945:553:57;;;;690:1294:78;7945:553:57;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;7945:6:57;690:1294:78;7945:553:57;;;;;;;-1:-1:-1;7945:553:57;;;8122:149;-1:-1:-1;;6036:12:57;7415:21;690:1294:78;;6036:12:57;;8787:29;-1:-1:-1;;;;;6036:12:57;8978:9;8787:29;690:1294:78;8787:29:57;;;;;;:::i;:::-;690:1294:78;8878:13:57;8842:51;690:1294:78;;;;2875:28:58;8842:51:57;:::i;:::-;;690:1294:78;;3474:36:58;8978:9:57;:::i;:::-;690:1294:78;7304:13:57;;8521:801;6036:12;9286:13;690:1294:78;9121:29:57;;-1:-1:-1;;;;;;690:1294:78;;-1:-1:-1;690:1294:78;;8521:801:57;;7945:553;6036:12;7945:553;;;;;;;;;-1:-1:-1;7945:553:57;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;8122:149;-1:-1:-1;8122:149:57;;;7878:9220;690:1294:78;;-1:-1:-1;;;;;690:1294:78;;;;;;-1:-1:-1;;;;;690:1294:78;;9350:33:57;9346:7752;9350:33;;;-1:-1:-1;;690:1294:78;;;;-1:-1:-1;9803:22:57;;9857:21;;;;;:55;;;9799:1644;9853:914;;9799:1644;-1:-1:-1;;;;;3211:35:58;;;690:1294:78;3211:35:58;12242:463:57;3211:35:58;;-1:-1:-1;3211:35:58;;;690:1294:78;;2870:125:51;;;;6036:12:57;2870:125:51;5170:15:57;2870:125:51;;2295:53:52;10885:196:57;;9799:1644;;;;;690:1294:78;11690:191:57;690:1294:78;;;;6036:12:57;11784:13;;690:1294:78;;;;;11823:36:57;:17;;;;;;:36;;;11690:191;:::i;:::-;690:1294:78;;;;;12641:15:57;;;;;;;;;:::i;:::-;690:1294:78;;;5170:15:57;690:1294:78;;;;;:::i;:::-;;;12401:4:57;6036:12;12290:393;;690:1294:78;5170:15:57;12290:393;;690:1294:78;12290:393:57;;;690:1294:78;12290:393:57;;690:1294:78;;;;:::i;:::-;12290:393:57;;;690:1294:78;5170:15:57;690:1294:78;12242:463:57;;;;690:1294:78;12242:463:57;;690:1294:78;12242:463:57;;;:::i;:::-;;:6;;-1:-1:-1;;;;;12242:6:57;690:1294:78;12242:463:57;;;;;;;-1:-1:-1;;12242:463:57;;11823:36;-1:-1:-1;6036:12:57;7415:21;690:1294:78;;6036:12:57;;13014:22;13198;13014;-1:-1:-1;;;;;690:1294:78;13014:22:57;;;13198;13014;;;:::i;:::-;690:1294:78;12994:42:57;;;;:::i;:::-;690:1294:78;13062:51:57;690:1294:78;;;;2875:28:58;13062:51:57;:::i;:::-;;690:1294:78;;13198:22:57;;:::i;:::-;690:1294:78;3474:36:58;;13198:22:57;:::i;:::-;7878:9220;;12728:840;13374:22;;690:1294:78;13374:22:57;;;;;-1:-1:-1;;;;;13374:22:57;;:::i;:::-;690:1294:78;;;;12728:840:57;7878:9220;;12242:463;6036:12;12242:463;;;;;;;-1:-1:-1;12242:463:57;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;12242:463:57;;;-1:-1:-1;12242:463:57;;11823:36;;11690:191;:::i;10885:196::-;11036:17;;;:::i;:::-;10885:196;;;;;9853:914;10533:13;;;;;;;:::i;:::-;10627:29;;;;:::i;:::-;-1:-1:-1;;;;;10478:8:57;690:1294:78;10478:262:57;;;;5170:15;690:1294:78;;10478:262:57;;-1:-1:-1;;;;;690:1294:78;;;10478:262:57;;;690:1294:78;10588:4:57;690:1294:78;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;10478:262:57;:8;;-1:-1:-1;;;;;10478:8:57;690:1294:78;10478:262:57;;;;;;;690:1294:78;10478:262:57;12242:463;10478:262;-1:-1:-1;;;;;10478:262:57;-1:-1:-1;10478:262:57;;;9853:914;;;;;;;;;;;;;10478:262;;;;:::i;:::-;;;;9857:55;9882:13;;;;:::i;:::-;-1:-1:-1;;;;;690:1294:78;9907:4:57;9882:30;;9857:55;;9799:1644;11354:6;-1:-1:-1;;;;;11354:6:57;690:1294:78;;-1:-1:-1;;;;;690:1294:78;;;11354:66:57;;;;;;5170:15;690:1294:78;;11354:66:57;;-1:-1:-1;;;;;690:1294:78;;;;11354:66:57;;;690:1294:78;11395:4:57;690:1294:78;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;-1:-1:-1;;11354:66:57;;;;;;;690:1294:78;11354:66:57;12242:463;11354:66;-1:-1:-1;;;;;11354:66:57;-1:-1:-1;11354:66:57;;;9799:1644;;;;11354:66;;;;:::i;:::-;;;;9346:7752;-1:-1:-1;;;;;6036:12:57;13604:13;;;;;690:1294:78;;13596:35:57;;;;;13592:3506;13596:35;;;690:1294:78;;;14008:482:57;690:1294:78;;;;13786:170:57;-1:-1:-1;690:1294:78;;-1:-1:-1;;;;;690:1294:78;;;;;13786:170:57;:::i;:::-;690:1294:78;;;;;;7415:21:57;6036:12;7415:21;;690:1294:78;;;14151:55:57;;;;14175:13;;;:::i;:::-;14151:55;;14426:15;;;;;;;;:::i;:::-;690:1294:78;;;5170:15:57;690:1294:78;;;;;:::i;:::-;;;;6036:12:57;14053:415;;690:1294:78;5170:15:57;14053:415;;690:1294:78;14053:415:57;;;690:1294:78;14053:415:57;;690:1294:78;;;;:::i;:::-;14053:415:57;;;690:1294:78;5170:15:57;690:1294:78;14008:482:57;;;;690:1294:78;14008:482:57;;;;;;:::i;:::-;;:6;;-1:-1:-1;;;;;14008:6:57;690:1294:78;14008:482:57;;;;;;;-1:-1:-1;;14008:482:57;;14151:55;-1:-1:-1;6036:12:57;7415:21;690:1294:78;;6036:12:57;;14908:32;-1:-1:-1;;;;;6036:12:57;15095;14908:32;690:1294:78;14908:32:57;;;;;;:::i;:::-;690:1294:78;14966:51:57;13604:13;;;;690:1294:78;;2875:28:58;14966:51:57;:::i;:::-;;13604:13;690:1294:78;;4084:27:58;15095:12:57;:::i;14513:1118::-;6036:12;13604:13;;;690:1294:78;;;5170:15:57;690:1294:78;;15562:46:57;;-1:-1:-1;;;;;690:1294:78;;;14008:482:57;15562:46;;690:1294:78;;;;;;;;;-1:-1:-1;690:1294:78;;;;-1:-1:-1;690:1294:78;;;;;15562:46:57;14008:6;-1:-1:-1;;;;;;14008:6:57;690:1294:78;15562:46:57;;;;;;;;14513:1118;;690:1294:78;14513:1118:57;7878:9220;;15562:46;6036:12;15562:46;;;;;;;;;;;;:::i;:::-;;;690:1294:78;;;;15562:46:57;;;;;;;;14008:482;6036:12;14008:482;;;;;;;-1:-1:-1;14008:482:57;;;;;;:::i;:::-;;;;;:::i;:::-;-1:-1:-1;14008:482:57;;;-1:-1:-1;14008:482:57;;14151:55;14008:6;;690:1294:78;14151:55:57;;;13592:3506;-1:-1:-1;;;;;15783:473:57;16192:15;690:1294:78;16192:15:57;;;;;;;;;;;:::i;:::-;690:1294:78;;;5170:15:57;690:1294:78;;;;;:::i;:::-;-1:-1:-1;690:1294:78;;6036:12:57;15820:414;;690:1294:78;;5170:15:57;15820:414;;690:1294:78;15820:414:57;;;;;;;690:1294:78;15820:414:57;;690:1294:78;15820:414:57;;;690:1294:78;;;;:::i;:::-;15820:414:57;;;690:1294:78;5170:15:57;690:1294:78;15783:473:57;;;;690:1294:78;15783:473:57;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;15783:6:57;690:1294:78;15783:473:57;;;;;;;-1:-1:-1;15783:473:57;;;13592:3506;-1:-1:-1;;6036:12:57;7415:21;690:1294:78;;6036:12:57;;16545:29;-1:-1:-1;;;;;6036:12:57;16736:9;16545:29;690:1294:78;16545:29:57;;;;;;:::i;:::-;690:1294:78;16600:51:57;13604:13;;;;690:1294:78;;2875:28:58;16600:51:57;:::i;:::-;;13604:13;690:1294:78;;3474:36:58;16736:9:57;:::i;15783:473::-;6036:12;15783:473;;;;;;;;;-1:-1:-1;15783:473:57;;;;;;:::i;:::-;;;;;;;;;7638:163;-1:-1:-1;7638:163:57;;;7319:21;-1:-1:-1;7319:21:57;;-1:-1:-1;7319:21:57;;-1:-1:-1;;690:1294:78;;6072:13:57;;6509:776;7130:48;2613:27:58;;7130:48:57;:::i;:::-;;7252:17;3211:35:58;;;7252:17:57;:::i;:::-;6509:776;;6513:68;859:9:38;;:23;690:1294:78;6513:68:57;;6087:23;;;5481:32;2875:28:58;5481:32:57;:::i;:::-;690:1294:78;5536:31:57;690:1294:78;;5536:31:57;:::i;:::-;4084:27:58;;3474:36;;5582:13:57;-1:-1:-1;5619:3:57;690:1294:78;;5597:20:57;;;;;690:1294:78;;-1:-1:-1;;;;;5705:12:57;;;;;:::i;:::-;690:1294:78;;-1:-1:-1;2870:125:51;;6036:12:57;2870:125:51;5670:108:57;5170:15;-1:-1:-1;2870:125:51;2295:53:52;5765:12:57;;;;;:::i;:::-;690:1294:78;;-1:-1:-1;2870:125:51;;6036:12:57;2870:125:51;5170:15:57;-1:-1:-1;2870:125:51;2295:53:52;5670:108:57;;:::i;:::-;5638:140;;;;:::i;:::-;690:1294:78;5820:12:57;;;;:::i;:::-;690:1294:78;;-1:-1:-1;2870:125:51;;6036:12:57;2870:125:51;-1:-1:-1;5170:15:57;2870:125:51;;3051:52:52;690:1294:78;5582:13:57;;5597:20;;;;;;;;4799:1054::o;5148:85::-;5208:14;-1:-1:-1;5208:14:57;;-1:-1:-1;5208:14:57;690:1294:78;;-1:-1:-1;;690:1294:78;;;;;5475:1:58;690:1294:78;;;:::o;:::-;;;;;;-1:-1:-1;;690:1294:78;;:::o;4643:1836:58:-;;2875:28;;2295:53:52;;2613:27:58;5461:15;2295:53:52;;5461:15:58;:::i;:::-;3211:35;;5438:470;5479:6;-1:-1:-1;5479:6:58;;;;;5941:16;;;;;;:::i;:::-;3474:36;;5918:481;5960:6;-1:-1:-1;5960:6:58;;;;;6465;;;;;;;:::i;5968:3::-;;690:1294:78;;-1:-1:-1;690:1294:78;6348:40:58;690:1294:78;-1:-1:-1;690:1294:78;;;;;2295:53:52;2870:125:51;;;;;;;;;;6154:9:58;2870:125:51;;;;;2295:53:52;690:1294:78;-1:-1:-1;;;;;690:1294:78;;6154:9:58;;:::i;:::-;2870:125:51;;;;;;3051:52:52;6348:40:58;;:::i;:::-;;5968:3;:::i;:::-;5923:35;;5487:3;;690:1294:78;;-1:-1:-1;690:1294:78;5859:38:58;690:1294:78;-1:-1:-1;690:1294:78;;;;;;;2295:53:52;2870:125:51;;;;;;;5667:9:58;2870:125:51;;;;;;2295:53:52;690:1294:78;-1:-1:-1;;;;;690:1294:78;;5667:9:58;;:::i;5487:3::-;5443:34;;690:1294:78;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;690:1294:78;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;6299:351:62:-;;690:1294:78;16677:12:62;;-1:-1:-1;;;;;2295:53:52;;690:1294:78;6524:25:62;6520:124;;6299:351;;:::o;6520:124::-;3051:52:52;;;;;6629:4:62;6520:124;6299:351::o;17521:1044:57:-;;17891:15;;;690:1294:78;17873:15:57;:33;17869:85;;18924:34;18938:12;;;;;;:::i;18924:34::-;18974:13;-1:-1:-1;19014:3:57;18993:12;18938;;;18993;;:::i;:::-;18989:23;;;;;;;690:1294:78;18938:12:57;19070:15;:12;18938;;;19070;;:::i;690:1294:78:-;19324:19:57;;;690:1294:78;;19859:49:57;-1:-1:-1;;;;;690:1294:78;;;2613:27:58;19859:49:57;:::i;:::-;;18938:12;20160:10;;;690:1294:78;-1:-1:-1;;690:1294:78;;;;;;;20184:6:57;-1:-1:-1;20184:6:57;;;;;19014:3;;;690:1294:78;;18974:13:57;;20192:3;20242:22;20160:10;18938:12;20160:10;;20242;:22;:::i;:::-;;690:1294:78;;:::i;:::-;20357:6:57;;;18938:12;20332:21;;690:1294:78;18938:12:57;20160:10;;20422;690:1294:78;;-1:-1:-1;;690:1294:78;;;;;-1:-1:-1;;690:1294:78;20408:35:57;;690:1294:78;;;20705:510:57;;20192:3;18938:12;20332:21;;690:1294:78;;18938:12:57;;17891:15;21474:16;;690:1294:78;-1:-1:-1;;;;;690:1294:78;;;21233:748:57;;17891:15;22003:13;;690:1294:78;;17891:15:57;;20332:21;;-1:-1:-1;;;;;19324:19:57;20332:21;18938:12;22398:558;20332:21;;690:1294:78;;;22044:67:57;;;21999:8973;22040:311;;21999:8973;690:1294:78;;;-1:-1:-1;;;;;690:1294:78;;22576:33:57;;690:1294:78;;;22576:149:57;;17891:15;690:1294:78;;;;;:::i;:::-;;;;;;;:::i;:::-;18938:12:57;22456:478;;690:1294:78;17891:15:57;22456:478;;690:1294:78;22456:478:57;;;;690:1294:78;22456:478:57;;;690:1294:78;17891:15:57;690:1294:78;22398:558:57;;;;690:1294:78;22398:558:57;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;22398:6:57;690:1294:78;22398:558:57;;;;;;;;;;;-1:-1:-1;;22398:558:57;;22576:149;-1:-1:-1;18938:12:57;20332:21;690:1294:78;;18938:12:57;;23745:8;23032:27;;;20192:3;23032:27;;;23374;23032;;:::i;:::-;690:1294:78;23242:49:57;-1:-1:-1;;;;;690:1294:78;;2875:28:58;23242:49:57;:::i;:::-;;-1:-1:-1;;;;;23374:27:57;:16;17891:15;23374:16;;690:1294:78;23374:27:57;:::i;:::-;690:1294:78;;3474:36:58;23374:27:57;:::i;:::-;-1:-1:-1;;;;;690:1294:78;;;4084:27:58;23745:8:57;:::i;:::-;20192:3;:::i;:::-;20142:40;;22979:882;23809:29;;;20192:3;23809:29;;;22979:882;20192:3;:::i;22398:558::-;18938:12;22398:558;;;;;19324:19;22398:558;19324:19;22398:558;;;;;;;:::i;:::-;-1:-1:-1;22398:558:57;;;-1:-1:-1;22398:558:57;;22576:149;-1:-1:-1;22576:149:57;;;22040:311;22311:16;22264:13;;;:::i;:::-;690:1294:78;;22311:16:57;690:1294:78;17891:15:57;690:1294:78;;;;22293:16:57;;690:1294:78;22311:16:57;;;:::i;:::-;22040:311;;22044:67;859:9:38;;:23;690:1294:78;22044:67:57;;21999:8973;690:1294:78;-1:-1:-1;;;;;690:1294:78;;;;-1:-1:-1;;;;;690:1294:78;;23889:33:57;23885:7087;23889:33;;;-1:-1:-1;18938:12:57;20332:21;;690:1294:78;18938:12:57;;690:1294:78;17891:15:57;690:1294:78;24688:33:57;690:1294:78;24688:33:57;;-1:-1:-1;;;;;690:1294:78;;24688:33:57;;;690:1294:78;18938:12:57;24688:6;690:1294:78;24688:6:57;-1:-1:-1;;;;;24688:6:57;690:1294:78;24688:33:57;;;;;;;-1:-1:-1;24688:33:57;;;24608:1046;24670:51;;690:1294:78;-1:-1:-1;;;;;690:1294:78;;;-1:-1:-1;;;;;24688:6:57;690:1294:78;24747:64:57;;;;17891:15;690:1294:78;;24747:64:57;;-1:-1:-1;;;;;690:1294:78;;;24688:33:57;24747:64;;690:1294:78;24788:4:57;690:1294:78;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;24747:64:57;24688:6;;-1:-1:-1;;;;;24688:6:57;690:1294:78;24747:64:57;;;;;;;26143:467;24747:64;-1:-1:-1;24747:64:57;;;24608:1046;;;690:1294:78;-1:-1:-1;;;;;25715:173:57;690:1294:78;;;;;25809:13:57;18938:12;25809:13;;690:1294:78;;25715:173:57;;:::i;:::-;690:1294:78;;;;26546:15:57;;26464:42;26546:15;;;;;;;;:::i;:::-;690:1294:78;;;17891:15:57;690:1294:78;;;;;:::i;:::-;;;26302:4:57;18938:12;26191:397;;690:1294:78;26191:397:57;17891:15;26191:397;;690:1294:78;19324:19:57;26191:397;;690:1294:78;26191:397:57;;690:1294:78;;;;:::i;26143:467:57:-;;:6;;-1:-1:-1;;;;;26143:6:57;690:1294:78;26143:467:57;;;;;;;-1:-1:-1;;26143:467:57;;24608:1046;-1:-1:-1;18938:12:57;20332:21;690:1294:78;;18938:12:57;;26798:30;;;20192:3;26798:30;;;;;;:::i;:::-;690:1294:78;26904:11:57;690:1294:78;-1:-1:-1;;;;;690:1294:78;;4084:27:58;26904:11:57;:::i;:::-;27021:29;;;:63;;;26633:1183;27017:205;;26633:1183;;;;20192:3;:::i;27017:205::-;27165:29;;27149:13;;;;:::i;:::-;27165:29;;:::i;:::-;;;:::i;:::-;27017:205;;;;;27021:63;26302:4;;-1:-1:-1;;;;;27054:13:57;;;:::i;:::-;690:1294:78;27054:30:57;;27021:63;;26633:1183;27357:32;;;;27499:29;;;;27495:299;;26633:1183;;;;20192:3;26633:1183;20192:3;:::i;27495:299::-;27583:29;;18938:12;27583:29;27727:40;27583:29;;:::i;:::-;26143:6;27684:12;26143:6;-1:-1:-1;;;;;26143:6:57;690:1294:78;27684:12:57;;:::i;:::-;17891:15;690:1294:78;27727:40:57;;;;;690:1294:78;27727:40:57;;690:1294:78;27727:40:57;;690:1294:78;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;27727:40:57;;26143:6;-1:-1:-1;;;;;;26143:6:57;690:1294:78;27727:40:57;;;;;;;;27495:299;;;;;27727:40;18938:12;27727:40;;;;;;;;;;;;:::i;:::-;;;690:1294:78;;;;27727:40:57;;;;;;;;26143:467;18938:12;26143:467;;;;;;;-1:-1:-1;26143:467:57;;;;;;:::i;:::-;-1:-1:-1;26143:467:57;;;;-1:-1:-1;26143:467:57;;24747:64;;;;:::i;:::-;;;;24688:33;;;;18938:12;24688:33;;18938:12;24688:33;;;;;;18938:12;24688:33;;;:::i;:::-;;;690:1294:78;;;;;24688:33:57;;;;;;;-1:-1:-1;24688:33:57;;24608:1046;24844:13;;;;;:::i;:::-;-1:-1:-1;;;;;24869:4:57;690:1294:78;;24844:30:57;24840:814;;24608:1046;-1:-1:-1;26143:467:57;24608:1046;;;24840:814;-1:-1:-1;;;;;25391:8:57;690:1294:78;25442:13:57;;;;:::i;:::-;25528:27;;;:::i;:::-;25391:240;;;;;;17891:15;690:1294:78;;25391:240:57;;-1:-1:-1;;;;;690:1294:78;;;25391:240:57;;;690:1294:78;24869:4:57;690:1294:78;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;-1:-1:-1;;25391:240:57;;;;;;;26143:467;25391:240;-1:-1:-1;25391:240:57;;;24840:814;;;;;;;25391:240;;;;:::i;:::-;;;;23885:7087;-1:-1:-1;;;;;18938:12:57;27852:13;;;;;690:1294:78;;27844:35:57;;;;27840:3132;27844:35;;;690:1294:78;;;28366:500:57;28039:168;-1:-1:-1;690:1294:78;;-1:-1:-1;;;;;690:1294:78;;;28039:168:57;:::i;:::-;690:1294:78;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;28509:56:57;;;;28802:15;28534:13;;;:::i;:::-;28509:56;;28802:15;;;;;:::i;:::-;690:1294:78;;;17891:15:57;690:1294:78;;;;;:::i;:::-;;;;18938:12:57;28411:433;;690:1294:78;17891:15:57;28411:433;;690:1294:78;28411:433:57;19324:19;28411:433;;690:1294:78;28723:39:57;28802:15;28411:433;;690:1294:78;;;;:::i;:::-;28411:433:57;;;690:1294:78;17891:15:57;690:1294:78;28366:500:57;;;;690:1294:78;28366:500:57;;;;;;:::i;:::-;;:6;;-1:-1:-1;;;;;28366:6:57;690:1294:78;28366:500:57;;;;;;;-1:-1:-1;;28366:500:57;;28509:56;-1:-1:-1;18938:12:57;20332:21;;690:1294:78;20332:21:57;;;;690:1294:78;18938:12:57;;29074:25;;-1:-1:-1;;;;;29074:25:57;29055:44;29181:25;29074;;;;;;;;29181;29074;;:::i;:::-;690:1294:78;29055:44:57;;:::i;:::-;690:1294:78;29181:25:57;:::i;:::-;690:1294:78;;;3211:35:58;29181:25:57;:::i;:::-;690:1294:78;;29466:22:57;;20192:3;27852:13;;-1:-1:-1;;;;;18938:12:57;29765:18;27852:13;;690:1294:78;;3474:36:58;29765:18:57;:::i;29462:561::-;690:1294:78;17891:15:57;690:1294:78;;29948:52:57;;-1:-1:-1;;;;;690:1294:78;;;28366:500:57;29948:52;;690:1294:78;;;;;;;;18938:12:57;690:1294:78;;;;;29948:52:57;28366:6;-1:-1:-1;;;;;;28366:6:57;690:1294:78;29948:52:57;;;;;;;;29462:561;;20192:3;29462:561;20192:3;:::i;29948:52::-;18938:12;29948:52;;;;;;;;;;;;:::i;:::-;;;690:1294:78;;;;29948:52:57;;;;;;;;28889:442;29283:25;;;;;;;;;;;:::i;:::-;690:1294:78;28889:442:57;;;;;28366:500;;;;;;-1:-1:-1;28366:500:57;;;;;;:::i;:::-;;;;;28509:56;28802:15;28366:6;;690:1294:78;28509:56:57;;;27840:3132;30175:478;30589:15;;;690:1294:78;30589:15:57;19324:19;30589:15;;;;;;;;;;;;;:::i;:::-;690:1294:78;;;17891:15:57;690:1294:78;;;;;:::i;:::-;;;;18938:12:57;30212:419;;690:1294:78;-1:-1:-1;;;;;690:1294:78;;17891:15:57;30212:419;;690:1294:78;30212:419:57;;;690:1294:78;30212:419:57;;690:1294:78;30212:419:57;;;690:1294:78;;;;:::i;:::-;30212:419:57;;;690:1294:78;17891:15:57;690:1294:78;30175:478:57;;;;690:1294:78;30175:478:57;;;;;;:::i;:::-;;:6;-1:-1:-1;;;;;;30175:6:57;690:1294:78;30175:478:57;;;;;;;;;;;-1:-1:-1;;30175:478:57;;27840:3132;-1:-1:-1;18938:12:57;20332:21;690:1294:78;;18938:12:57;;30838:8;30729:27;;;20192:3;30729:27;;;-1:-1:-1;;;;;30729:27:57;;:::i;:::-;690:1294:78;;3211:35:58;30838:8:57;:::i;30175:478::-;18938:12;30175:478;;;;;19324:19;30175:478;19324:19;30175:478;;;;;;;:::i;:::-;-1:-1:-1;30175:478:57;;;-1:-1:-1;30175:478:57;;21233:748;690:1294:78;-1:-1:-1;;;;;18938:12:57;21927:26;20160:10;;;21927;21946:5;;;:::i;:::-;21927:26;;:::i;:::-;;:35;690:1294:78;;21233:748:57;;;20705:510;21177:18;21081:13;-1:-1:-1;;;;;18938:12:57;21081:13;;21045:51;690:1294:78;;;;2875:28:58;21045:51:57;:::i;21177:18::-;20705:510;;18989:23;;;18198:31;2613:27:58;18198:31:57;:::i;:::-;690:1294:78;18287:30:57;690:1294:78;;18287:30:57;:::i;:::-;4084:27:58;;3211:35;;18332:13:57;-1:-1:-1;18368:3:57;690:1294:78;;18347:19:57;;;;;690:1294:78;;-1:-1:-1;;;;;18436:11:57;;;;;:::i;:::-;690:1294:78;;-1:-1:-1;2870:125:51;;18938:12:57;2870:125:51;18402:89:57;17891:15;-1:-1:-1;2870:125:51;2295:53:52;18479:11:57;;;;;:::i;18402:89::-;18387:104;;;;:::i;:::-;690:1294:78;18533:11:57;;;;:::i;:::-;690:1294:78;;-1:-1:-1;2870:125:51;;18938:12:57;2870:125:51;-1:-1:-1;17891:15:57;2870:125:51;;3051:52:52;690:1294:78;18332:13:57;;12478:584:62;12714:21;12749:11;;12745:48;;16826:26;2295:53:52;12943:69:62;;-1:-1:-1;;;;;13048:6:62;690:1294:78;;13048:6:62;:::i;12943:69::-;12995:7;;:::o;690:1294:78:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;690:1294:78;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;690:1294:78;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;:::o;7103:296:53:-;;2295:53:52;;690:1294:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;690:1294:78;;;;;;;;7250:30:53;7296:13;-1:-1:-1;7311:7:53;;;;;;7103:296;;;;;:::o;7320:3::-;690:1294:78;;;-1:-1:-1;690:1294:78;;;-1:-1:-1;690:1294:78;;2295:53:52;-1:-1:-1;;;;;7339:43:53;;;;:::i;:::-;690:1294:78;;;;;7296:13:53;;13763:872:62;;;13940:29;;;13763:872;13936:693;;;13989:21;;;;:32;13985:95;;-1:-1:-1;;;;;14132:5:62;;690:1294:78;14132:34:62;;;;;;690:1294:78;;14132:34:62;690:1294:78;14132:34:62;;;;;;;;;;;;;;;;;;13936:693;14242:6;690:1294:78;14314:30:62;14242:6;;;690:1294:78;14251:8:62;;;;;;:::i;:::-;690:1294:78;;;14314:30:62;;;;;690:1294:78;14314:30:62;;14132:34;14314:30;;690:1294:78;;;;;14314:30:62;;;;;;;;;;13936:693;13763:872::o;14314:30::-;;;;;;;;;;;;;;:::i;:::-;;;690:1294:78;;;;13763:872:62:o;14314:30::-;;;;;;690:1294:78;;;;;;;;;;14132:34:62;14314:30;14132:34;;;;;:::i;:::-;690:1294:78;14132:34:62;;;;;13985:95;14048:17;;;;;;13936:693;14390:1;;;14379:12;;14375:244;;13936:693;;;;;13763:872::o;14375:244::-;-1:-1:-1;;;;;14468:8:62;;;690:1294:78;14506:6:62;;;690:1294:78;14515:20:62;;;;:::i;:::-;14468:86;;;;;;690:1294:78;;;14468:86:62;;-1:-1:-1;;;;;690:1294:78;;;14468:86:62;;;690:1294:78;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;-1:-1:-1;;14468:86:62;;;;;;;14572:32;14468:86;;;14375:244;690:1294:78;;;14572:32:62;690:1294:78;;;14572:32:62;;;;;;690:1294:78;14572:32:62;;14468:86;14572:32;;690:1294:78;;;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;;;14572:32:62;;;;;;;;;;;;;14375:244;;;;;;14572:32;;;;;;;;;;;;;;:::i;:::-;;;690:1294:78;;;;14572:32:62;;;;;;;;14468:86;14572:32;14468:86;;;;;:::i;:::-;14390:1;14468:86;;;13940:29;690:1294:78;-1:-1:-1;;;;;13964:5:62;;690:1294:78;;;;13953:16:62;13940:29;;2887:1758:53;7863:13;;;2870:125:51;;690:1294:78;2870:125:51;;;;;;;690:1294:78;2870:125:51;2295:53:52;3138:15:53;;;3134:1505;3138:15;;;-1:-1:-1;;690:1294:78;;;;2295:53:52;;690:1294:78;;;;3802:26:53;;;;3798:415;;3134:1505;3831:53:52;;;;;;;690:1294:78;;;;;;;;;;3051:52:52;;;690:1294:78;;;;;;;3051:52:52;690:1294:78;2870:125:51;;690:1294:78;2870:125:51;;;3051:52:52;7863:13:53;4574:11;:::o;3798:415::-;4255:5:44;4493;4255;;;:::i;:::-;690:1294:78;;;;;;;;2295:53:52;4493:5:44;;;:::i;:::-;690:1294:78;;;;;;;;;;;3051:52:52;690:1294:78;2870:125:51;;;;;690:1294:78;2870:125:51;3051:52:52;3798:415:53;;;;;;;3134:1505;4616:12;;;;;690:1294:78;4616:12:53;:::o;14641:680:62:-;14768:1;;14641:680;14755:14;;14751:51;;14885:30;;;14641:680;14881:434;;;-1:-1:-1;;;;;14974:6:62;;;690:1294:78;14974:49:62;;;;;690:1294:78;;;14974:49:62;;-1:-1:-1;;;;;690:1294:78;;;;14974:49:62;;;690:1294:78;15006:4:62;690:1294:78;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;-1:-1:-1;;14974:49:62;;;;;;;;14881:434;15074:5;;;;690:1294:78;15074:25:62;;;;;690:1294:78;;;;;15074:25:62;;;;690:1294:78;15074:25:62;;;14974:49;15074:25;;690:1294:78;15074:25:62;;;;;;;;14881:434;690:1294:78;15174:9:62;690:1294:78;;;;15174:9:62;:::i;15074:25::-;;;;;:::i;:::-;690:1294:78;;15074:25:62;;;690:1294:78;;;;15074:25:62;690:1294:78;;;;;;;;;15074:25:62;690:1294:78;;;14974:49:62;;;;;;:::i;:::-;14768:1;14974:49;;;;14881:434;15262:6;;;;-1:-1:-1;;;;;15262:6:62;690:1294:78;15262:42:62;;;;;690:1294:78;;;15262:42:62;;-1:-1:-1;;;;;690:1294:78;;;15262:42:62;;;690:1294:78;;;;;;;;;;;;;-1:-1:-1;;690:1294:78;;;;;;-1:-1:-1;;15262:42:62;;;;;;;;14881:434;14641:680::o;15262:42::-;;;;:::i;14885:30::-;690:1294:78;-1:-1:-1;;;;;14910:5:62;;690:1294:78;;;;14898:17:62;14885:30;;14751:51;14785:7;;;;;;:::o;1531:331:99:-;1616:21;;:30;1612:109;;1750:33;690:1294:78;;;-1:-1:-1;;;;;690:1294:78;;;1750:33:99;;;;:::i;:::-;;1797:8;1793:63;;1531:331::o;1793:63::-;1828:17;1750:33;1828:17;;1750:33;1828:17;1612:109;1669:41;;;1624:4;1669:41;690:1294:78;;1669:41:99;;4625:582;;4797:8;;-1:-1:-1;690:1294:78;;5874:21:99;:17;;6046:142;;;;;;4793:408;690:1294:78;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;690:1294:78;5121:24:99;690:1294:78;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;;2304:424:53;7863:13;;;2870:125:51;;690:1294:78;2870:125:51;;;;;690:1294:78;2870:125:51;2295:53:52;4814:30:53;2390:332;2870:125:51;;;3831:53:52;;690:1294:78;;;;;2870:125:51;690:1294:78;;;3051:52:52;7863:13:53;690:1294:78;;;;;;;3051:52:52;;2295:53;2870:125:51;690:1294:78;2870:125:51;;;;690:1294:78;2870:125:51;3051:52:52;7863:13:53;2657:11;:::o;2390:332::-;2699:12;;;690:1294:78;2699:12:53;:::o;3350:199:44:-;;-1:-1:-1;2870:125:51;;;3518:23:44;2870:125:51;-1:-1:-1;2870:125:51;2295:53:52;;;3518:23:44;:::i;:::-;3051:52:52;;3350:199:44:o;13342:415:62:-;;690:1294:78;13342:415:62;;;;-1:-1:-1;;;;;690:1294:78;;;;;;;;13601:52:62;;;;;690:1294:78;13601:52:62;;690:1294:78;13601:52:62;;;690:1294:78;;;;;;13601:6:62;690:1294:78;13601:52:62;;;;;;;-1:-1:-1;;;13601:52:62;;;13342:415;13575:78;;13712:38;13678:24;13575:78;13678:24;;:::i;:::-;13712:38;;;:::i;:::-;690:1294:78;13342:415:62:o;13601:52::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;690:1294:78;;;;;;;;;;13601:52:62;;;;;;;;;;;690:1294:78;;;-1:-1:-1;690:1294:78;;;;;7223:218:111;-1:-1:-1;;;;;7303:25:111;;;;7299:105;;690:1294:78;7223:218:111;:::o;7299:105::-;7351:42;;;7382:3;7351:42;690:1294:78;;;;7351:42:111;;3555:199:44;;-1:-1:-1;2870:125:51;;;3723:23:44;2870:125:51;-1:-1:-1;2870:125:51;2295:53:52;;;3723:23:44;:::i;1303:160:98:-;690:1294:78;;1412:43:98;;;;;690:1294:78;1412:43:98;;-1:-1:-1;;;;;690:1294:78;;;1412:43:98;;;690:1294:78;;;;;;1412:43:98;;690:1294:78;;;;;;;;;;;;;3510:55:99;690:1294:78;-1:-1:-1;690:1294:78;;;;;;3462:31:99;;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;690:1294:78;;4551:22:98;;;;:57;;;;1303:160;4547:135;;;;1303:160;:::o;4547:135::-;4631:40;-1:-1:-1;4631:40:98;;690:1294:78;1412:43:98;-1:-1:-1;4631:40:98;4551:57;4578:30;;;;1412:43;4578:30;;;690:1294:78;;;;1412:43:98;4578:30;690:1294:78;;;;;;;;;4551:57:98;;;;4609:265:44;3831:53:52;-1:-1:-1;4792:15:44;4788:80;;4609:265::o;4788:80::-;4830:27;-1:-1:-1;4830:27:44;;-1:-1:-1;4830:27:44"},"methodIdentifiers":{"getSender()":"5e01eb5a","manualGetCurrentSwapTokenInAmounts()":"48bbd869","manualGetCurrentSwapTokenOutAmounts()":"0f8fb1cc","manualGetCurrentSwapTokensInSlot()":"8c824cd9","manualGetCurrentSwapTokensOutSlot()":"96123406","manualGetSettledTokenAmounts()":"cd791ccc","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"e3b5dff4","querySwapExactInHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"8a12a08c","querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)":"2950286e","querySwapExactOutHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"5a3c3987","swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"286f580d","swapExactInHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"08a465f6","swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)":"8eb1b65e","swapExactOutHook((address,(address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes))":"945ed33f","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IWETH\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransientIndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetCurrentSwapTokenInAmounts\",\"outputs\":[{\"internalType\":\"AddressToUintMappingSlot\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetCurrentSwapTokenOutAmounts\",\"outputs\":[{\"internalType\":\"AddressToUintMappingSlot\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetCurrentSwapTokensInSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetCurrentSwapTokensOutSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetSettledTokenAmounts\",\"outputs\":[{\"internalType\":\"AddressToUintMappingSlot\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactInHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"querySwapExactInHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactOutHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"querySwapExactOutHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountIn[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactInHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"swapExactInHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensOut\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapExactOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isBuffer\",\"type\":\"bool\"}],\"internalType\":\"struct IBatchRouter.SwapPathStep[]\",\"name\":\"steps\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct IBatchRouter.SwapPathExactAmountOut[]\",\"name\":\"paths\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IBatchRouter.SwapExactOutHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"swapExactOutHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pathAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tokensIn\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"kind\":\"dev\",\"methods\":{\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"details\":\"Min amounts out specified in the paths are ignored.\",\"params\":{\"paths\":\"Swap paths from token in to token out, specifying exact amounts in\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data required for the query\"},\"returns\":{\"amountsOut\":\"Calculated amounts of output tokens to be received, ordered by output token address\",\"pathAmountsOut\":\"Calculated amounts of output tokens corresponding to the last step of each given path\",\"tokensOut\":\"Output token addresses\"}},\"querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"details\":\"Max amounts in specified in the paths are ignored.\",\"params\":{\"paths\":\"Swap paths from token in to token out, specifying exact amounts out\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data required for the query\"},\"returns\":{\"amountsIn\":\"Calculated amounts of input tokens to be received, ordered by input token address\",\"pathAmountsIn\":\"Calculated amounts of input tokens corresponding to the last step of each given path\",\"tokensIn\":\"Input token addresses\"}},\"swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"paths\":\"Swap paths from token in to token out, specifying exact amounts in\",\"userData\":\"Additional (optional) data required for the swap\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Calculated amounts of output tokens, ordered by output token address\",\"pathAmountsOut\":\"Calculated amounts of output tokens corresponding to the last step of each given path\",\"tokensOut\":\"Output token addresses\"}},\"swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap\",\"paths\":\"Swap paths from token in to token out, specifying exact amounts out\",\"userData\":\"Additional (optional) data required for the swap\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Calculated amounts of input tokens, ordered by input token address\",\"pathAmountsIn\":\"Calculated amounts of input tokens corresponding to the first step of each given path\",\"tokensIn\":\"Input token addresses\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}],\"TransientIndexOutOfBounds()\":[{\"notice\":\"An index is out of bounds on an array operation (e.g., at).\"}]},\"kind\":\"user\",\"methods\":{\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"querySwapExactIn((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"notice\":\"Queries a swap operation involving multiple paths (steps), specifying exact input token amounts.\"},\"querySwapExactOut((address,(address,address,bool)[],uint256,uint256)[],address,bytes)\":{\"notice\":\"Queries a swap operation involving multiple paths (steps), specifying exact output token amounts.\"},\"swapExactIn((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation involving multiple paths (steps), specifying exact input token amounts.\"},\"swapExactOut((address,(address,address,bool)[],uint256,uint256)[],uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation involving multiple paths (steps), specifying exact output token amounts.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol\":\"BatchRouterMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBatchRouter.sol\":{\"keccak256\":\"0x700bec0606b05dd5e2799eeb01d5fc63149d84cddf349f75b43df241dd828798\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d18022dc7acd83fc7b37526f63bdd4d7cc11d9ab8cbe273a5a24e5e32c4df7db\",\"dweb:/ipfs/QmR9jWC8iY1nAXhhm9jj2UqvJdK9Coi7S3QVzGmayJcmpw\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/TransientEnumerableSet.sol\":{\"keccak256\":\"0x1b77bbe902f863cb148ed28ae055841f77fc245b44f878932d0b8e3f2efba7f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1925829096d14d87eacbf2b7d42866128e2b43e1ff4249742a74f62e372ad247\",\"dweb:/ipfs/QmbFmGn45eoiHZHFGhXRqKSzg53j2Lz2XGQqaw6pkSjRxq\"]},\"@balancer-labs/v3-vault/contracts/BatchRouter.sol\":{\"keccak256\":\"0x1bfa17be2b1221e762f442d8d70ba20f47813c44feffb9ab1afa1ad13883abca\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32fc58bb361c2b084a4fbc594881a9f7a1a74de0a9a8a6ab1d6323bc68cb5bcb\",\"dweb:/ipfs/QmUEzgjg1H2HXrXyFyinsHR4WL1wBRHhAY7p7UfaEd3r4n\"]},\"@balancer-labs/v3-vault/contracts/BatchRouterCommon.sol\":{\"keccak256\":\"0x2e823b86db98c526a3ae859eeee2280dbd8db385e2f70fd41a32072dea0b2567\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://83e33ceaf6b9737c2bc83dc045c06aa67f4e563c106f5d7862f975c3493438fd\",\"dweb:/ipfs/QmQmYzzUCT8mmRenu6kGu81fk7GViYob4mhTuAi1zsYBnr\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/test/BatchRouterMock.sol\":{\"keccak256\":\"0xaf99aea96a806f65978ba30010082dd6ca34b037fe107fc87df476f2bbf9e388\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://19b28029dcef4b4a455d71749cf1599dbc98835a018f99d3d3017fe4bfcdec7e\",\"dweb:/ipfs/QmZmdoBPYxEzX9Z3HJtWJ1wBzgp7U5c4PVYbXCQaJ8zwCT\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol":{"BufferRouterMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IWETH","name":"weth","type":"address"},{"internalType":"contract IPermit2","name":"permit2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"MockErrorCode","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"addLiquidityToBufferHook","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"initializeBufferHook","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancyAddLiquidityToBufferHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancyInitializeBufferHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"queryAddLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"}],"name":"queryAddLiquidityToBufferHook","outputs":[{"internalType":"uint256","name":"amountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"amountWrappedIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"}],"name":"queryInitializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactAmountUnderlyingIn","type":"uint256"},{"internalType":"uint256","name":"exactAmountWrappedIn","type":"uint256"}],"name":"queryInitializeBufferHook","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToRemove","type":"uint256"}],"name":"queryRemoveLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceOut","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"exactSharesToRemove","type":"uint256"}],"name":"queryRemoveLiquidityFromBufferHook","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceOut","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"finalize_allocation":{"entryPoint":798,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4714":{"entryPoint":771,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateSlot":{"entryPoint":833,"id":6537,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"610120604090808252346102ff576060816124628038038091610022828561031e565b8339810103126102ff578051916001600160a01b039182841684036102ff576020808201519184831683036102ff5783015193841684036102ff5782519461006986610303565b600e86526d4d6f636b20526f7574657220763160901b828701526080528451946001600160401b0386116102eb575f54906001918281811c911680156102e1575b848210146102cd57601f8111610287575b508290601f881160011461022557968092819261017c969798995f9461021a575b50501b915f199060031b1c1916175f555b83516100f881610303565b600c81526101386b2937baba32b921b7b6b6b7b760a11b91828482015286519061012182610303565b600682526539b2b73232b960d11b85830152610341565b60a05284519061014782610303565b600c825282820152701a5cd4995d1d5c9b915d1a131bd8dad959607a1b85519261017084610303565b60118452830152610341565b60c05260e0526101009182525161206e91826103f4833960805182818161021f0152818161035a0152818161050c0152818161074f0152818161088c01528181610aac01528181610db201528181610f6701528181611d100152611daf015260a051828181610b2d0152611a3e015260c051828181611a7e0152611f16015260e05182603101525181818161119e015281816112c50152611d8c0152f35b015192505f806100dc565b9690601f198216905f8052845f20915f5b8181106102725750988361017c9798999a1061025a575b505050811b015f556100ed565b01515f1960f88460031b161c191690555f808061024d565b8a830151845592850192918601918601610236565b5f8052835f20601f890160051c810191858a106102c3575b601f0160051c019083905b8281106102b85750506100bb565b5f81550183906102aa565b909150819061029f565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100aa565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b604081019081106001600160401b038211176102eb57604052565b601f909101601f19168101906001600160401b038211908210176102eb57604052565b906103ae603a60209260405193849181808401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952805191829101603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a81018452018261031e565b5190205f1981019081116103df576040519060208201908152602082526103d482610303565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe6080806040526004361015610081575b50361561001a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361005957005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c90816313f7bb4d146116f35750806319c6989f14610fcb578063400f230d14610ec55780634fe56ed614610d28578063502383f414610ca857806354fd4d5014610b6b5780635e01eb5a14610b19578063662727cc146109da5780638afe5c381461091c578063a390260414610805578063ac9650d8146107bd578063b365a3c21461066c578063bc48e97f146105a0578063d96af07014610480578063d9f70869146102cf5763e0fefe351461013d575f61000f565b3461026c5761014b36611909565b73ffffffffffffffffffffffffffffffffffffffff9182604051947fa3902604000000000000000000000000000000000000000000000000000000006020870152166024850152604484015260648301526064825260a082019082821067ffffffffffffffff8311176102a257815f91816040527fedfa3568000000000000000000000000000000000000000000000000000000008252602060a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608761021a60c48201826117df565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610297575f92610270575b505060208180518101031261026c57602080910151604051908152f35b5f80fd5b610290925060a0903d90815f853e6102888285611954565b010190611993565b5f8061024f565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3461026c576102dd36611885565b91906102ea949394611ccc565b6102f2611cf9565b6040517f653eb3b000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201879052604482018490526064820192909252838216608482015260209591937f00000000000000000000000000000000000000000000000000000000000000008516929091878160a4815f885af19687156102975788915f9861044d575b50908692916024604051809581937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216978860048301525afa958615610297576103f5966103f0935f91610420575b501683611d64565b611d64565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b61044091508a3d8c11610446575b6104388183611954565b810190611a0c565b8a6103e8565b503d61042e565b828194939299503d8311610479575b6104668183611954565b8101031261026c57905195879086610397565b503d61045c565b3461026c57604060031936011261026c576084604061049d61176a565b6104a5611ccc565b6104ad611cf9565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937febc7955c00000000000000000000000000000000000000000000000000000000855216600484015260243560248401528160448401528160648401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610297576040915f915f91610571575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b90506105939150823d8411610599575b61058b8183611954565b8101906119f6565b83610541565b503d610581565b3461026c575f60031936011261026c576105b8611ccc565b6040517fd9f708690000000000000000000000000000000000000000000000000000000081526020818061060b60048201905f608060a08401938281528260208201528260408201528260608201520152565b03815f305af1801561029757610641575b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b602090813d8311610665575b6106578183611954565b8101031261026c578061061c565b503d61064d565b3461026c576107355f6106ec6106fa610684366118ce565b6040517fd9f7086900000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b03601f198101835282611954565b604051809381927f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906117df565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610297575f9161079b575b5060208180518101031261026c57602080910151604051908152f35b6107b791503d805f833e6107af8183611954565b810190611993565b8161077f565b602060031936011261026c5760043567ffffffffffffffff811161026c576107f56107ef6108019236906004016117ae565b90611a38565b60405191829182611804565b0390f35b3461026c5760a4602061081736611909565b91610823949194611ccc565b61082b611cf9565b5f73ffffffffffffffffffffffffffffffffffffffff809460405197889687957f653eb3b0000000000000000000000000000000000000000000000000000000008752166004860152602485015260448401528160648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af18015610297575f906108e9575b6020905f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b506020813d602011610914575b8161090360209383611954565b8101031261026c57602090516108bb565b3d91506108f6565b3461026c575f60031936011261026c57610934611ccc565b6040517f4fe56ed60000000000000000000000000000000000000000000000000000000081526040818061098760048201905f608060a08401938281528260208201528260408201528260608201520152565b03815f305af18015610297576109bc575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b6109d49060403d6040116105995761058b8183611954565b5061061c565b3461026c57604060031936011261026c57610a925f6106ec610a576109fd61176a565b6040517f400f230d00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9091166024808301919091523560448201529182906064820190565b604051809381927fedfa35680000000000000000000000000000000000000000000000000000000083526020600484015260248301906117df565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190811561029757604091610af3915f91610aff575b50602080825183010191016119f6565b82519182526020820152f35b610b1391503d805f833e6107af8183611954565b83610ae3565b3461026c575f60031936011261026c5760207f00000000000000000000000000000000000000000000000000000000000000005c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461026c575f60031936011261026c576040515f80549060018260011c9160018416918215610c9e575b6020948585108414610c715785879486865291825f14610c33575050600114610bda575b50610bc692500383611954565b6108016040519282849384528301906117df565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b858310610c1b575050610bc6935082010185610bb9565b80548389018501528794508693909201918101610c04565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152610bc695151560051b8501019250879150610bb99050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f1692610b95565b3461026c57610a925f6106ec6106fa610cc0366118ce565b6040517f4fe56ed600000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b3461026c57610d3636611885565b93919092610d42611ccc565b610d4a611cf9565b604080517fe2a92b1a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482019390935260448101939093526064830194909452848116608483015290927f00000000000000000000000000000000000000000000000000000000000000008216908460a4815f855af1928315610297575f945f94610e98575b5090602083926024604051809681937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216948560048301525afa958615610297576103f0868694604099610e4a975f91610e7957501683611d64565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b610e92915060203d602011610446576104388183611954565b8b6103e8565b602095508392919450610eb99060403d6040116105995761058b8183611954565b95909594919250610dec565b3461026c57604060031936011261026c5760a46040610ee261176a565b610eea611ccc565b610ef2611cf9565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937fe2a92b1a0000000000000000000000000000000000000000000000000000000085521660048401526fffffffffffffffffffffffffffffffff806024850152604484015260243560648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610297576040915f915f9161057157505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b60a060031936011261026c5767ffffffffffffffff6004351161026c5736602360043501121561026c5767ffffffffffffffff600435600401351161026c5736602460c0600435600401350260043501011161026c5760243567ffffffffffffffff811161026c576110419036906004016117ae565b67ffffffffffffffff6044351161026c5760606003196044353603011261026c5767ffffffffffffffff6064351161026c5736602360643501121561026c5767ffffffffffffffff606435600401351161026c573660246064356004013560643501011161026c5760843567ffffffffffffffff811161026c576110c99036906004016117ae565b9290916110d4611ccc565b8060043560040135036116cb575f5b6004356004013581106113bc57505050604435600401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030181121561026c57806044350160048101359067ffffffffffffffff821161026c5760248260071b360391011361026c57611186575b6108016107f584845f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d611a38565b9173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561026c57604051927f2a2d80d10000000000000000000000000000000000000000000000000000000084523360048501526060602485015260c484019060443501602481019167ffffffffffffffff60048301351161026c57600482013560071b3603831361026c576060606487015260048201359052849160e48301915f905b6004810135821061132857505050906020815f9373ffffffffffffffffffffffffffffffffffffffff61127860246044350161178d565b1660848301526044803581013560a4840152600319838303019083015260643560048101358083529060240184830137600460643501358181018401869052601f01601f191601030181837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165af191821561029757610801936107f593611319575b50915091611156565b61132290611940565b84611310565b9193509173ffffffffffffffffffffffffffffffffffffffff61134a8561178d565b1681526020808501359173ffffffffffffffffffffffffffffffffffffffff831680930361026c5760049260019282015261138760408701611cb9565b65ffffffffffff80911660408301526113a260608801611cb9565b166060820152608080910195019301905086939291611241565b6113d16113ca828486611bb3565b3691611c40565b6040519081606081011067ffffffffffffffff6060840111176102a257606082016040525f82525f60208301525f6040830152602081015190606060408201519101515f1a9183526020830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc818402600435013603011261026c57604051908160c081011067ffffffffffffffff60c0840111176102a25760c0820160405261148c602460c08502600435010161178d565b8083526114a2604460c08602600435010161178d565b908160208501526114bc606460c08702600435010161178d565b60408581019190915260043560c08702016084810135606087015260a4810135608087015260c4013560a0860152830151835160209094015160ff919091169273ffffffffffffffffffffffffffffffffffffffff83163b1561026c575f73ffffffffffffffffffffffffffffffffffffffff809460e4948a98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af190816116bc575b506116b3576115b5611c8a565b9073ffffffffffffffffffffffffffffffffffffffff81511690602073ffffffffffffffffffffffffffffffffffffffff81830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610297575f9261167e575b50606001510361164757506001905b016110e3565b80511561165657805190602001fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091506020813d6020116116ab575b8161169a60209383611954565b8101031261026c5751906060611632565b3d915061168d565b50600190611641565b6116c590611940565b876115a8565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461026c57604060031936011261026c575f81610a57610a92936106ec61171861176a565b7fd96af07000000000000000000000000000000000000000000000000000000000602084015273ffffffffffffffffffffffffffffffffffffffff166024808401919091523560448301526064820190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361026c57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361026c57565b9181601f8401121561026c5782359167ffffffffffffffff831161026c576020808501948460051b01011161026c57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106118395750505050505090565b9091929394958480611875837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a516117df565b9801930193019194939290611829565b60031960a091011261026c5773ffffffffffffffffffffffffffffffffffffffff600435818116810361026c5791602435916044359160643591608435908116810361026c5790565b600319608091011261026c5760043573ffffffffffffffffffffffffffffffffffffffff8116810361026c5790602435906044359060643590565b600319606091011261026c5760043573ffffffffffffffffffffffffffffffffffffffff8116810361026c57906024359060443590565b67ffffffffffffffff81116102a257604052565b90601f601f19910116810190811067ffffffffffffffff8211176102a257604052565b67ffffffffffffffff81116102a257601f01601f191660200190565b60208183031261026c5780519067ffffffffffffffff821161026c570181601f8201121561026c578051906119c782611977565b926119d56040519485611954565b8284526020838301011161026c57815f9260208093018386015e8301015290565b919082604091031261026c576020825192015190565b9081602091031261026c575173ffffffffffffffffffffffffffffffffffffffff8116810361026c5790565b91905f907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff825c1615611b8e575b7f000000000000000000000000000000000000000000000000000000000000000094855c611b66576001906001875d611ab483611b9b565b92611ac26040519485611954565b808452601f19611ad182611b9b565b015f5b818110611b555750505f5b818110611b0c5750505050905f611b019392955d805c91611b03575b50611f0c565b565b5f905d5f611afb565b80611b395f80611b216113ca8996888a611bb3565b602081519101305af4611b32611c8a565b9030611fc7565b611b438288611c76565b52611b4e8187611c76565b5001611adf565b806060602080938901015201611ad4565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b915033815d600191611a7c565b67ffffffffffffffff81116102a25760051b60200190565b9190811015611c135760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561026c57019081359167ffffffffffffffff831161026c57602001823603811361026c579190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b929192611c4c82611977565b91611c5a6040519384611954565b82948184528183011161026c578281602093845f960137010152565b8051821015611c135760209160051b010190565b3d15611cb4573d90611c9b82611977565b91611ca96040519384611954565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361026c57565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c611b66576001905d565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611d3857565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b90915f9080611d74575b50505050565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016817f00000000000000000000000000000000000000000000000000000000000000001695828411611edb57821694813b1561026c57608483915f809460405196879586947f36c785160000000000000000000000000000000000000000000000000000000086521660048501528b6024850152881660448401528960648401525af1801561029757611ec4575b506044829360209360405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115611eb85750611e8d575b808080611d6e565b602090813d8311611eb1575b611ea38183611954565b8101031261026c575f611e85565b503d611e99565b604051903d90823e3d90fd5b60209250611ed190611940565b60445f9250611e39565b837f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b47908115611fc3577f00000000000000000000000000000000000000000000000000000000000000005c611fc357814710611f97575f80809373ffffffffffffffffffffffffffffffffffffffff8294165af1611f67611c8a565b5015611f6f57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b5050565b90611fdc5750805115611f6f57805190602001fd5b8151158061202f575b611fed575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15611fe556fea264697066735822122083809b9d5846a655e6307e338af25369f406cc3b7f30bd4dcd522f39d6d2e37564736f6c634300081a0033","opcodes":"PUSH2 0x120 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x2FF JUMPI PUSH1 0x60 DUP2 PUSH2 0x2462 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x22 DUP3 DUP6 PUSH2 0x31E JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x2FF JUMPI DUP1 MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP5 AND DUP5 SUB PUSH2 0x2FF JUMPI PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP2 DUP5 DUP4 AND DUP4 SUB PUSH2 0x2FF JUMPI DUP4 ADD MLOAD SWAP4 DUP5 AND DUP5 SUB PUSH2 0x2FF JUMPI DUP3 MLOAD SWAP5 PUSH2 0x69 DUP7 PUSH2 0x303 JUMP JUMPDEST PUSH1 0xE DUP7 MSTORE PUSH14 0x4D6F636B20526F75746572207631 PUSH1 0x90 SHL DUP3 DUP8 ADD MSTORE PUSH1 0x80 MSTORE DUP5 MLOAD SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 GT PUSH2 0x2EB JUMPI PUSH0 SLOAD SWAP1 PUSH1 0x1 SWAP2 DUP3 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x2E1 JUMPI JUMPDEST DUP5 DUP3 LT EQ PUSH2 0x2CD JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x287 JUMPI JUMPDEST POP DUP3 SWAP1 PUSH1 0x1F DUP9 GT PUSH1 0x1 EQ PUSH2 0x225 JUMPI SWAP7 DUP1 SWAP3 DUP2 SWAP3 PUSH2 0x17C SWAP7 SWAP8 SWAP9 SWAP10 PUSH0 SWAP5 PUSH2 0x21A JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE JUMPDEST DUP4 MLOAD PUSH2 0xF8 DUP2 PUSH2 0x303 JUMP JUMPDEST PUSH1 0xC DUP2 MSTORE PUSH2 0x138 PUSH12 0x2937BABA32B921B7B6B6B7B7 PUSH1 0xA1 SHL SWAP2 DUP3 DUP5 DUP3 ADD MSTORE DUP7 MLOAD SWAP1 PUSH2 0x121 DUP3 PUSH2 0x303 JUMP JUMPDEST PUSH1 0x6 DUP3 MSTORE PUSH6 0x39B2B73232B9 PUSH1 0xD1 SHL DUP6 DUP4 ADD MSTORE PUSH2 0x341 JUMP JUMPDEST PUSH1 0xA0 MSTORE DUP5 MLOAD SWAP1 PUSH2 0x147 DUP3 PUSH2 0x303 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE DUP3 DUP3 ADD MSTORE PUSH17 0x1A5CD4995D1D5C9B915D1A131BD8DAD959 PUSH1 0x7A SHL DUP6 MLOAD SWAP3 PUSH2 0x170 DUP5 PUSH2 0x303 JUMP JUMPDEST PUSH1 0x11 DUP5 MSTORE DUP4 ADD MSTORE PUSH2 0x341 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP2 DUP3 MSTORE MLOAD PUSH2 0x206E SWAP2 DUP3 PUSH2 0x3F4 DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 DUP2 DUP2 PUSH2 0x21F ADD MSTORE DUP2 DUP2 PUSH2 0x35A ADD MSTORE DUP2 DUP2 PUSH2 0x50C ADD MSTORE DUP2 DUP2 PUSH2 0x74F ADD MSTORE DUP2 DUP2 PUSH2 0x88C ADD MSTORE DUP2 DUP2 PUSH2 0xAAC ADD MSTORE DUP2 DUP2 PUSH2 0xDB2 ADD MSTORE DUP2 DUP2 PUSH2 0xF67 ADD MSTORE DUP2 DUP2 PUSH2 0x1D10 ADD MSTORE PUSH2 0x1DAF ADD MSTORE PUSH1 0xA0 MLOAD DUP3 DUP2 DUP2 PUSH2 0xB2D ADD MSTORE PUSH2 0x1A3E ADD MSTORE PUSH1 0xC0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x1A7E ADD MSTORE PUSH2 0x1F16 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 PUSH1 0x31 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x119E ADD MSTORE DUP2 DUP2 PUSH2 0x12C5 ADD MSTORE PUSH2 0x1D8C ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xDC JUMP JUMPDEST SWAP7 SWAP1 PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x272 JUMPI POP SWAP9 DUP4 PUSH2 0x17C SWAP8 SWAP9 SWAP10 SWAP11 LT PUSH2 0x25A JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH2 0xED JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x24D JUMP JUMPDEST DUP11 DUP4 ADD MLOAD DUP5 SSTORE SWAP3 DUP6 ADD SWAP3 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x236 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP4 PUSH0 KECCAK256 PUSH1 0x1F DUP10 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 DUP6 DUP11 LT PUSH2 0x2C3 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 DUP4 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x2B8 JUMPI POP POP PUSH2 0xBB JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP4 SWAP1 PUSH2 0x2AA JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x29F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xAA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x2EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x2EB JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x3AE PUSH1 0x3A PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 DUP2 DUP1 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x31E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x3DF JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x3D4 DUP3 PUSH2 0x303 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x81 JUMPI JUMPDEST POP CALLDATASIZE ISZERO PUSH2 0x1A JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x59 JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x13F7BB4D EQ PUSH2 0x16F3 JUMPI POP DUP1 PUSH4 0x19C6989F EQ PUSH2 0xFCB JUMPI DUP1 PUSH4 0x400F230D EQ PUSH2 0xEC5 JUMPI DUP1 PUSH4 0x4FE56ED6 EQ PUSH2 0xD28 JUMPI DUP1 PUSH4 0x502383F4 EQ PUSH2 0xCA8 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xB6B JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0xB19 JUMPI DUP1 PUSH4 0x662727CC EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0x8AFE5C38 EQ PUSH2 0x91C JUMPI DUP1 PUSH4 0xA3902604 EQ PUSH2 0x805 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0xB365A3C2 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xBC48E97F EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xD96AF070 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xD9F70869 EQ PUSH2 0x2CF JUMPI PUSH4 0xE0FEFE35 EQ PUSH2 0x13D JUMPI PUSH0 PUSH2 0xF JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0x14B CALLDATASIZE PUSH2 0x1909 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xA390260400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x2A2 JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0x21A PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x17DF JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP3 PUSH2 0x270 JUMPI JUMPDEST POP POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x290 SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0x288 DUP3 DUP6 PUSH2 0x1954 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0x2DD CALLDATASIZE PUSH2 0x1885 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2EA SWAP5 SWAP4 SWAP5 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x1CF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 DUP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x20 SWAP6 SWAP2 SWAP4 PUSH32 0x0 DUP6 AND SWAP3 SWAP1 SWAP2 DUP8 DUP2 PUSH1 0xA4 DUP2 PUSH0 DUP9 GAS CALL SWAP7 DUP8 ISZERO PUSH2 0x297 JUMPI DUP9 SWAP2 PUSH0 SWAP9 PUSH2 0x44D JUMPI JUMPDEST POP SWAP1 DUP7 SWAP3 SWAP2 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP8 DUP9 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x297 JUMPI PUSH2 0x3F5 SWAP7 PUSH2 0x3F0 SWAP4 PUSH0 SWAP2 PUSH2 0x420 JUMPI JUMPDEST POP AND DUP4 PUSH2 0x1D64 JUMP JUMPDEST PUSH2 0x1D64 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x440 SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x446 JUMPI JUMPDEST PUSH2 0x438 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A0C JUMP JUMPDEST DUP11 PUSH2 0x3E8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x42E JUMP JUMPDEST DUP3 DUP2 SWAP5 SWAP4 SWAP3 SWAP10 POP RETURNDATASIZE DUP4 GT PUSH2 0x479 JUMPI JUMPDEST PUSH2 0x466 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI SWAP1 MLOAD SWAP6 DUP8 SWAP1 DUP7 PUSH2 0x397 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x45C JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x84 PUSH1 0x40 PUSH2 0x49D PUSH2 0x176A JUMP JUMPDEST PUSH2 0x4A5 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0x4AD PUSH2 0x1CF9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xEBC7955C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x24 DUP5 ADD MSTORE DUP2 PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x571 JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 POP PUSH2 0x593 SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x599 JUMPI JUMPDEST PUSH2 0x58B DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x19F6 JUMP JUMPDEST DUP4 PUSH2 0x541 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x581 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH2 0x5B8 PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9F7086900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 DUP2 DUP1 PUSH2 0x60B PUSH1 0x4 DUP3 ADD SWAP1 PUSH0 PUSH1 0x80 PUSH1 0xA0 DUP5 ADD SWAP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH2 0x641 JUMPI JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x665 JUMPI JUMPDEST PUSH2 0x657 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI DUP1 PUSH2 0x61C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x64D JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0x735 PUSH0 PUSH2 0x6EC PUSH2 0x6FA PUSH2 0x684 CALLDATASIZE PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9F7086900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1954 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x17DF JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP2 PUSH2 0x79B JUMPI JUMPDEST POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x7B7 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x7AF DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST DUP2 PUSH2 0x77F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x26C JUMPI PUSH2 0x7F5 PUSH2 0x7EF PUSH2 0x801 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x17AE JUMP JUMPDEST SWAP1 PUSH2 0x1A38 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1804 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0xA4 PUSH1 0x20 PUSH2 0x817 CALLDATASIZE PUSH2 0x1909 JUMP JUMPDEST SWAP2 PUSH2 0x823 SWAP5 SWAP2 SWAP5 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0x82B PUSH2 0x1CF9 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP1 PUSH2 0x8E9 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x914 JUMPI JUMPDEST DUP2 PUSH2 0x903 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH2 0x8BB JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x8F6 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH2 0x934 PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FE56ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x40 DUP2 DUP1 PUSH2 0x987 PUSH1 0x4 DUP3 ADD SWAP1 PUSH0 PUSH1 0x80 PUSH1 0xA0 DUP5 ADD SWAP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH2 0x9BC JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x9D4 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x599 JUMPI PUSH2 0x58B DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST POP PUSH2 0x61C JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH2 0xA92 PUSH0 PUSH2 0x6EC PUSH2 0xA57 PUSH2 0x9FD PUSH2 0x176A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x400F230D00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x17DF JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 SWAP2 PUSH2 0xAF3 SWAP2 PUSH0 SWAP2 PUSH2 0xAFF JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x19F6 JUMP JUMPDEST DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0xB13 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x7AF DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP4 PUSH2 0xAE3 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0xC9E JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0xC71 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0xC33 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xBDA JUMPI JUMPDEST POP PUSH2 0xBC6 SWAP3 POP SUB DUP4 PUSH2 0x1954 JUMP JUMPDEST PUSH2 0x801 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x17DF JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0xC1B JUMPI POP POP PUSH2 0xBC6 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xBB9 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xC04 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0xBC6 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0xBB9 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0xB95 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0xA92 PUSH0 PUSH2 0x6EC PUSH2 0x6FA PUSH2 0xCC0 CALLDATASIZE PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FE56ED600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0xD36 CALLDATASIZE PUSH2 0x1885 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 PUSH2 0xD42 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0xD4A PUSH2 0x1CF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP1 SWAP3 PUSH32 0x0 DUP3 AND SWAP1 DUP5 PUSH1 0xA4 DUP2 PUSH0 DUP6 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP5 PUSH0 SWAP5 PUSH2 0xE98 JUMPI JUMPDEST POP SWAP1 PUSH1 0x20 DUP4 SWAP3 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP5 DUP6 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x297 JUMPI PUSH2 0x3F0 DUP7 DUP7 SWAP5 PUSH1 0x40 SWAP10 PUSH2 0xE4A SWAP8 PUSH0 SWAP2 PUSH2 0xE79 JUMPI POP AND DUP4 PUSH2 0x1D64 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0xE92 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x446 JUMPI PUSH2 0x438 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP12 PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x20 SWAP6 POP DUP4 SWAP3 SWAP2 SWAP5 POP PUSH2 0xEB9 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x599 JUMPI PUSH2 0x58B DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP3 POP PUSH2 0xDEC JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0xA4 PUSH1 0x40 PUSH2 0xEE2 PUSH2 0x176A JUMP JUMPDEST PUSH2 0xEEA PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0xEF2 PUSH2 0x1CF9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x571 JUMPI POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x26C JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x26C JUMPI PUSH2 0x1041 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x17AE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x26C JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x64 CALLDATALOAD ADD SLT ISZERO PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH1 0x64 CALLDATALOAD ADD ADD GT PUSH2 0x26C JUMPI PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x26C JUMPI PUSH2 0x10C9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x17AE JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0x10D4 PUSH2 0x1CCC JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x16CB JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x13BC JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x26C JUMPI DUP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x26C JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x26C JUMPI PUSH2 0x1186 JUMPI JUMPDEST PUSH2 0x801 PUSH2 0x7F5 DUP5 DUP5 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x1A38 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x26C JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0xC4 DUP5 ADD SWAP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x26C JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x26C JUMPI PUSH1 0x60 PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE DUP5 SWAP2 PUSH1 0xE4 DUP4 ADD SWAP2 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x1328 JUMPI POP POP POP SWAP1 PUSH1 0x20 DUP2 PUSH0 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1278 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x178D JUMP JUMPDEST AND PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD DUP2 ADD CALLDATALOAD PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0x3 NOT DUP4 DUP4 SUB ADD SWAP1 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 PUSH1 0x24 ADD DUP5 DUP4 ADD CALLDATACOPY PUSH1 0x4 PUSH1 0x64 CALLDATALOAD ADD CALLDATALOAD DUP2 DUP2 ADD DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD SUB ADD DUP2 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x297 JUMPI PUSH2 0x801 SWAP4 PUSH2 0x7F5 SWAP4 PUSH2 0x1319 JUMPI JUMPDEST POP SWAP2 POP SWAP2 PUSH2 0x1156 JUMP JUMPDEST PUSH2 0x1322 SWAP1 PUSH2 0x1940 JUMP JUMPDEST DUP5 PUSH2 0x1310 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x134A DUP6 PUSH2 0x178D JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP1 SWAP4 SUB PUSH2 0x26C JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x1387 PUSH1 0x40 DUP8 ADD PUSH2 0x1CB9 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x13A2 PUSH1 0x60 DUP9 ADD PUSH2 0x1CB9 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP6 ADD SWAP4 ADD SWAP1 POP DUP7 SWAP4 SWAP3 SWAP2 PUSH2 0x1241 JUMP JUMPDEST PUSH2 0x13D1 PUSH2 0x13CA DUP3 DUP5 DUP7 PUSH2 0x1BB3 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1C40 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP5 ADD GT OR PUSH2 0x2A2 JUMPI PUSH1 0x60 DUP3 ADD PUSH1 0x40 MSTORE PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP5 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x26C JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0xC0 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0xC0 DUP5 ADD GT OR PUSH2 0x2A2 JUMPI PUSH1 0xC0 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x148C PUSH1 0x24 PUSH1 0xC0 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x178D JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x14A2 PUSH1 0x44 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x178D JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x14BC PUSH1 0x64 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x178D JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP8 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 SWAP1 SWAP5 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0x26C JUMPI PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP11 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x16BC JUMPI JUMPDEST POP PUSH2 0x16B3 JUMPI PUSH2 0x15B5 PUSH2 0x1C8A JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP3 PUSH2 0x167E JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x1647 JUMPI POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x10E3 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1656 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x16AB JUMPI JUMPDEST DUP2 PUSH2 0x169A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x1632 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x168D JUMP JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH2 0x16C5 SWAP1 PUSH2 0x1940 JUMP JUMPDEST DUP8 PUSH2 0x15A8 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH0 DUP2 PUSH2 0xA57 PUSH2 0xA92 SWAP4 PUSH2 0x6EC PUSH2 0x1718 PUSH2 0x176A JUMP JUMPDEST PUSH32 0xD96AF07000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x24 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x26C JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x26C JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x26C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x26C JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x26C JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1839 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x1875 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x17DF JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x26C JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x26C JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x26C JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2A2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A2 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x26C JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x26C JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x26C JUMPI DUP1 MLOAD SWAP1 PUSH2 0x19C7 DUP3 PUSH2 0x1977 JUMP JUMPDEST SWAP3 PUSH2 0x19D5 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1954 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x26C JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x26C JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH0 SWAP1 PUSH32 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 TLOAD AND ISZERO PUSH2 0x1B8E JUMPI JUMPDEST PUSH32 0x0 SWAP5 DUP6 TLOAD PUSH2 0x1B66 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP8 TSTORE PUSH2 0x1AB4 DUP4 PUSH2 0x1B9B JUMP JUMPDEST SWAP3 PUSH2 0x1AC2 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1954 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x1AD1 DUP3 PUSH2 0x1B9B JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1B55 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1B0C JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x1B01 SWAP4 SWAP3 SWAP6 TSTORE DUP1 TLOAD SWAP2 PUSH2 0x1B03 JUMPI JUMPDEST POP PUSH2 0x1F0C JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x1AFB JUMP JUMPDEST DUP1 PUSH2 0x1B39 PUSH0 DUP1 PUSH2 0x1B21 PUSH2 0x13CA DUP10 SWAP7 DUP9 DUP11 PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x1B32 PUSH2 0x1C8A JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x1FC7 JUMP JUMPDEST PUSH2 0x1B43 DUP3 DUP9 PUSH2 0x1C76 JUMP JUMPDEST MSTORE PUSH2 0x1B4E DUP2 DUP8 PUSH2 0x1C76 JUMP JUMPDEST POP ADD PUSH2 0x1ADF JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x1AD4 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 POP CALLER DUP2 TSTORE PUSH1 0x1 SWAP2 PUSH2 0x1A7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A2 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1C13 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x26C JUMPI ADD SWAP1 DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x26C JUMPI PUSH1 0x20 ADD DUP3 CALLDATASIZE SUB DUP2 SGT PUSH2 0x26C JUMPI SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1C4C DUP3 PUSH2 0x1977 JUMP JUMPDEST SWAP2 PUSH2 0x1C5A PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1954 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x26C JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1C13 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1CB4 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x1C9B DUP3 PUSH2 0x1977 JUMP JUMPDEST SWAP2 PUSH2 0x1CA9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1954 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x26C JUMPI JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x1B66 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x1D38 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x1D74 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND DUP2 PUSH32 0x0 AND SWAP6 DUP3 DUP5 GT PUSH2 0x1EDB JUMPI DUP3 AND SWAP5 DUP2 EXTCODESIZE ISZERO PUSH2 0x26C JUMPI PUSH1 0x84 DUP4 SWAP2 PUSH0 DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE DUP12 PUSH1 0x24 DUP6 ADD MSTORE DUP9 AND PUSH1 0x44 DUP5 ADD MSTORE DUP10 PUSH1 0x64 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH2 0x1EC4 JUMPI JUMPDEST POP PUSH1 0x44 DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1EB8 JUMPI POP PUSH2 0x1E8D JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x1D6E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1EB1 JUMPI JUMPDEST PUSH2 0x1EA3 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH0 PUSH2 0x1E85 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E99 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x1ED1 SWAP1 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x1E39 JUMP JUMPDEST DUP4 PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE SWAP1 DUP2 ISZERO PUSH2 0x1FC3 JUMPI PUSH32 0x0 TLOAD PUSH2 0x1FC3 JUMPI DUP2 SELFBALANCE LT PUSH2 0x1F97 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SWAP5 AND GAS CALL PUSH2 0x1F67 PUSH2 0x1C8A JUMP JUMPDEST POP ISZERO PUSH2 0x1F6F JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH2 0x1FDC JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x1F6F JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x202F JUMPI JUMPDEST PUSH2 0x1FED JUMPI POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x1FE5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 DUP1 SWAP12 SWAP14 PC CHAINID 0xA6 SSTORE 0xE6 ADDRESS PUSH31 0x338AF25369F406CC3B7F30BD4DCD522F39D6D2E37564736F6C634300081A00 CALLER ","sourceMap":"507:667:79:-:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;507:667:79;;;;409:14:68;;507:667:79;;;-1:-1:-1;;;;;507:667:79;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;;2845:83:62;507:667:79;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;:::i;:::-;;;;2651:72:62;-1:-1:-1;;;507:667:79;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;507:667:79;;;;2651:72:62;:::i;:::-;;;507:667:79;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;507:667:79;;;;;;:::i;:::-;;;;;;;2845:83:62;:::i;:::-;;;7155:12;;7177:18;;;;507:667:79;;;;;;;409:14:68;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:72:62;507:667:79;;;;;;;;;;2845:83:62;507:667:79;;;;;;;;;;7155:12:62;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;-1:-1:-1;507:667:79;;;-1:-1:-1;507:667:79;;-1:-1:-1;507:667:79;;;;;;;;;2845:83:62;507:667:79;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;-1:-1:-1;507:667:79;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;-1:-1:-1;507:667:79;;-1:-1:-1;507:667:79;;;;;;;;;-1:-1:-1;;;;;507:667:79;;;;;;;:::o;:::-;;;;;-1:-1:-1;;507:667:79;;;;-1:-1:-1;;;;;507:667:79;;;;;;;;;;:::o;1276:306:44:-;;1461:67;507:667:79;1461:67:44;1276:306;507:667:79;;1461:67:44;;;;;;;507:667:79;;;;;;;;;;;;;;;;;-1:-1:-1;;;507:667:79;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;1461:67:44;;;;;;;;;:::i;:::-;507:667:79;1451:78:44;;-1:-1:-1;;507:667:79;;;;;;;;;1432:103:44;1461:67;1432:103;;507:667:79;;;1461:67:44;1432:103;;;;;:::i;:::-;507:667:79;;1405:144:44;;-1:-1:-1;;1405:170:44;;1276:306::o;507:667:79:-;;;;-1:-1:-1;507:667:79;;;;;-1:-1:-1;507:667:79"},"deployedBytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":6668,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_bytes_calldata_dyn_calldata":{"entryPoint":6062,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_available_length_bytes":{"entryPoint":7232,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":6547,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC4626":{"entryPoint":6029,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_contract_IERC4626_19739":{"entryPoint":5994,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_contract_IERC4626t_uint256t_uint256":{"entryPoint":6409,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_contract_IERC4626t_uint256t_uint256t_uint256":{"entryPoint":6350,"id":null,"parameterSlots":1,"returnSlots":4},"abi_decode_contract_IERC4626t_uint256t_uint256t_uint256t_address":{"entryPoint":6277,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_uint256t_uint256_fromMemory":{"entryPoint":6646,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint48":{"entryPoint":7353,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_array_bytes_dyn":{"entryPoint":6148,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes":{"entryPoint":6111,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IERC4626_rational_by_rational_by_rational_by_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_contract_IERC4626_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_contract_IERC4626_uint256_uint256_uint256_address":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"array_allocation_size_array_bytes_dyn":{"entryPoint":7067,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":6519,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_bytes_calldata_dyn_calldata":{"entryPoint":7091,"id":null,"parameterSlots":3,"returnSlots":2},"extract_returndata":{"entryPoint":7306,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":6484,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_19742":{"entryPoint":6464,"id":null,"parameterSlots":1,"returnSlots":0},"fun_ensureOnlyVault":{"entryPoint":7417,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":7372,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_returnEth":{"entryPoint":7948,"id":18535,"parameterSlots":1,"returnSlots":0},"fun_takeTokenIn":{"entryPoint":7524,"id":18665,"parameterSlots":3,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":8135,"id":39838,"parameterSlots":3,"returnSlots":1},"memory_array_index_access_bytes_dyn":{"entryPoint":7286,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_saveSenderAndManageEth":{"entryPoint":6712,"id":18160,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"18063":[{"length":32,"start":2861},{"length":32,"start":6718}],"18073":[{"length":32,"start":6782},{"length":32,"start":7958}],"18092":[{"length":32,"start":49}],"18095":[{"length":32,"start":4510},{"length":32,"start":4805},{"length":32,"start":7564}],"27649":[{"length":32,"start":543},{"length":32,"start":858},{"length":32,"start":1292},{"length":32,"start":1871},{"length":32,"start":2188},{"length":32,"start":2732},{"length":32,"start":3506},{"length":32,"start":3943},{"length":32,"start":7440},{"length":32,"start":7599}]},"linkReferences":{},"object":"6080806040526004361015610081575b50361561001a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361005957005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c90816313f7bb4d146116f35750806319c6989f14610fcb578063400f230d14610ec55780634fe56ed614610d28578063502383f414610ca857806354fd4d5014610b6b5780635e01eb5a14610b19578063662727cc146109da5780638afe5c381461091c578063a390260414610805578063ac9650d8146107bd578063b365a3c21461066c578063bc48e97f146105a0578063d96af07014610480578063d9f70869146102cf5763e0fefe351461013d575f61000f565b3461026c5761014b36611909565b73ffffffffffffffffffffffffffffffffffffffff9182604051947fa3902604000000000000000000000000000000000000000000000000000000006020870152166024850152604484015260648301526064825260a082019082821067ffffffffffffffff8311176102a257815f91816040527fedfa3568000000000000000000000000000000000000000000000000000000008252602060a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608761021a60c48201826117df565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af1918215610297575f92610270575b505060208180518101031261026c57602080910151604051908152f35b5f80fd5b610290925060a0903d90815f853e6102888285611954565b010190611993565b5f8061024f565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3461026c576102dd36611885565b91906102ea949394611ccc565b6102f2611cf9565b6040517f653eb3b000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201879052604482018490526064820192909252838216608482015260209591937f00000000000000000000000000000000000000000000000000000000000000008516929091878160a4815f885af19687156102975788915f9861044d575b50908692916024604051809581937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216978860048301525afa958615610297576103f5966103f0935f91610420575b501683611d64565b611d64565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b61044091508a3d8c11610446575b6104388183611954565b810190611a0c565b8a6103e8565b503d61042e565b828194939299503d8311610479575b6104668183611954565b8101031261026c57905195879086610397565b503d61045c565b3461026c57604060031936011261026c576084604061049d61176a565b6104a5611ccc565b6104ad611cf9565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937febc7955c00000000000000000000000000000000000000000000000000000000855216600484015260243560248401528160448401528160648401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610297576040915f915f91610571575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b90506105939150823d8411610599575b61058b8183611954565b8101906119f6565b83610541565b503d610581565b3461026c575f60031936011261026c576105b8611ccc565b6040517fd9f708690000000000000000000000000000000000000000000000000000000081526020818061060b60048201905f608060a08401938281528260208201528260408201528260608201520152565b03815f305af1801561029757610641575b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b602090813d8311610665575b6106578183611954565b8101031261026c578061061c565b503d61064d565b3461026c576107355f6106ec6106fa610684366118ce565b6040517fd9f7086900000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b03601f198101835282611954565b604051809381927f48c894910000000000000000000000000000000000000000000000000000000083526020600484015260248301906117df565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610297575f9161079b575b5060208180518101031261026c57602080910151604051908152f35b6107b791503d805f833e6107af8183611954565b810190611993565b8161077f565b602060031936011261026c5760043567ffffffffffffffff811161026c576107f56107ef6108019236906004016117ae565b90611a38565b60405191829182611804565b0390f35b3461026c5760a4602061081736611909565b91610823949194611ccc565b61082b611cf9565b5f73ffffffffffffffffffffffffffffffffffffffff809460405197889687957f653eb3b0000000000000000000000000000000000000000000000000000000008752166004860152602485015260448401528160648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af18015610297575f906108e9575b6020905f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b506020813d602011610914575b8161090360209383611954565b8101031261026c57602090516108bb565b3d91506108f6565b3461026c575f60031936011261026c57610934611ccc565b6040517f4fe56ed60000000000000000000000000000000000000000000000000000000081526040818061098760048201905f608060a08401938281528260208201528260408201528260608201520152565b03815f305af18015610297576109bc575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b6109d49060403d6040116105995761058b8183611954565b5061061c565b3461026c57604060031936011261026c57610a925f6106ec610a576109fd61176a565b6040517f400f230d00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9091166024808301919091523560448201529182906064820190565b604051809381927fedfa35680000000000000000000000000000000000000000000000000000000083526020600484015260248301906117df565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190811561029757604091610af3915f91610aff575b50602080825183010191016119f6565b82519182526020820152f35b610b1391503d805f833e6107af8183611954565b83610ae3565b3461026c575f60031936011261026c5760207f00000000000000000000000000000000000000000000000000000000000000005c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461026c575f60031936011261026c576040515f80549060018260011c9160018416918215610c9e575b6020948585108414610c715785879486865291825f14610c33575050600114610bda575b50610bc692500383611954565b6108016040519282849384528301906117df565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b858310610c1b575050610bc6935082010185610bb9565b80548389018501528794508693909201918101610c04565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152610bc695151560051b8501019250879150610bb99050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f1692610b95565b3461026c57610a925f6106ec6106fa610cc0366118ce565b6040517f4fe56ed600000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff90941660248501526044840192909252606483015260848201523360a482015291829060c4820190565b3461026c57610d3636611885565b93919092610d42611ccc565b610d4a611cf9565b604080517fe2a92b1a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482019390935260448101939093526064830194909452848116608483015290927f00000000000000000000000000000000000000000000000000000000000000008216908460a4815f855af1928315610297575f945f94610e98575b5090602083926024604051809681937f4afbaf5a00000000000000000000000000000000000000000000000000000000835216948560048301525afa958615610297576103f0868694604099610e4a975f91610e7957501683611d64565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b610e92915060203d602011610446576104388183611954565b8b6103e8565b602095508392919450610eb99060403d6040116105995761058b8183611954565b95909594919250610dec565b3461026c57604060031936011261026c5760a46040610ee261176a565b610eea611ccc565b610ef2611cf9565b73ffffffffffffffffffffffffffffffffffffffff9283915f845195869485937fe2a92b1a0000000000000000000000000000000000000000000000000000000085521660048401526fffffffffffffffffffffffffffffffff806024850152604484015260243560648401523060848401527f0000000000000000000000000000000000000000000000000000000000000000165af1908115610297576040915f915f9161057157505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d82519182526020820152f35b60a060031936011261026c5767ffffffffffffffff6004351161026c5736602360043501121561026c5767ffffffffffffffff600435600401351161026c5736602460c0600435600401350260043501011161026c5760243567ffffffffffffffff811161026c576110419036906004016117ae565b67ffffffffffffffff6044351161026c5760606003196044353603011261026c5767ffffffffffffffff6064351161026c5736602360643501121561026c5767ffffffffffffffff606435600401351161026c573660246064356004013560643501011161026c5760843567ffffffffffffffff811161026c576110c99036906004016117ae565b9290916110d4611ccc565b8060043560040135036116cb575f5b6004356004013581106113bc57505050604435600401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030181121561026c57806044350160048101359067ffffffffffffffff821161026c5760248260071b360391011361026c57611186575b6108016107f584845f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d611a38565b9173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561026c57604051927f2a2d80d10000000000000000000000000000000000000000000000000000000084523360048501526060602485015260c484019060443501602481019167ffffffffffffffff60048301351161026c57600482013560071b3603831361026c576060606487015260048201359052849160e48301915f905b6004810135821061132857505050906020815f9373ffffffffffffffffffffffffffffffffffffffff61127860246044350161178d565b1660848301526044803581013560a4840152600319838303019083015260643560048101358083529060240184830137600460643501358181018401869052601f01601f191601030181837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165af191821561029757610801936107f593611319575b50915091611156565b61132290611940565b84611310565b9193509173ffffffffffffffffffffffffffffffffffffffff61134a8561178d565b1681526020808501359173ffffffffffffffffffffffffffffffffffffffff831680930361026c5760049260019282015261138760408701611cb9565b65ffffffffffff80911660408301526113a260608801611cb9565b166060820152608080910195019301905086939291611241565b6113d16113ca828486611bb3565b3691611c40565b6040519081606081011067ffffffffffffffff6060840111176102a257606082016040525f82525f60208301525f6040830152602081015190606060408201519101515f1a9183526020830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc818402600435013603011261026c57604051908160c081011067ffffffffffffffff60c0840111176102a25760c0820160405261148c602460c08502600435010161178d565b8083526114a2604460c08602600435010161178d565b908160208501526114bc606460c08702600435010161178d565b60408581019190915260043560c08702016084810135606087015260a4810135608087015260c4013560a0860152830151835160209094015160ff919091169273ffffffffffffffffffffffffffffffffffffffff83163b1561026c575f73ffffffffffffffffffffffffffffffffffffffff809460e4948a98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af190816116bc575b506116b3576115b5611c8a565b9073ffffffffffffffffffffffffffffffffffffffff81511690602073ffffffffffffffffffffffffffffffffffffffff81830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa918215610297575f9261167e575b50606001510361164757506001905b016110e3565b80511561165657805190602001fd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b9091506020813d6020116116ab575b8161169a60209383611954565b8101031261026c5751906060611632565b3d915061168d565b50600190611641565b6116c590611940565b876115a8565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461026c57604060031936011261026c575f81610a57610a92936106ec61171861176a565b7fd96af07000000000000000000000000000000000000000000000000000000000602084015273ffffffffffffffffffffffffffffffffffffffff166024808401919091523560448301526064820190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361026c57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361026c57565b9181601f8401121561026c5782359167ffffffffffffffff831161026c576020808501948460051b01011161026c57565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106118395750505050505090565b9091929394958480611875837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a516117df565b9801930193019194939290611829565b60031960a091011261026c5773ffffffffffffffffffffffffffffffffffffffff600435818116810361026c5791602435916044359160643591608435908116810361026c5790565b600319608091011261026c5760043573ffffffffffffffffffffffffffffffffffffffff8116810361026c5790602435906044359060643590565b600319606091011261026c5760043573ffffffffffffffffffffffffffffffffffffffff8116810361026c57906024359060443590565b67ffffffffffffffff81116102a257604052565b90601f601f19910116810190811067ffffffffffffffff8211176102a257604052565b67ffffffffffffffff81116102a257601f01601f191660200190565b60208183031261026c5780519067ffffffffffffffff821161026c570181601f8201121561026c578051906119c782611977565b926119d56040519485611954565b8284526020838301011161026c57815f9260208093018386015e8301015290565b919082604091031261026c576020825192015190565b9081602091031261026c575173ffffffffffffffffffffffffffffffffffffffff8116810361026c5790565b91905f907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff825c1615611b8e575b7f000000000000000000000000000000000000000000000000000000000000000094855c611b66576001906001875d611ab483611b9b565b92611ac26040519485611954565b808452601f19611ad182611b9b565b015f5b818110611b555750505f5b818110611b0c5750505050905f611b019392955d805c91611b03575b50611f0c565b565b5f905d5f611afb565b80611b395f80611b216113ca8996888a611bb3565b602081519101305af4611b32611c8a565b9030611fc7565b611b438288611c76565b52611b4e8187611c76565b5001611adf565b806060602080938901015201611ad4565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b915033815d600191611a7c565b67ffffffffffffffff81116102a25760051b60200190565b9190811015611c135760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561026c57019081359167ffffffffffffffff831161026c57602001823603811361026c579190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b929192611c4c82611977565b91611c5a6040519384611954565b82948184528183011161026c578281602093845f960137010152565b8051821015611c135760209160051b010190565b3d15611cb4573d90611c9b82611977565b91611ca96040519384611954565b82523d5f602084013e565b606090565b359065ffffffffffff8216820361026c57565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c611b66576001905d565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611d3857565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b90915f9080611d74575b50505050565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016817f00000000000000000000000000000000000000000000000000000000000000001695828411611edb57821694813b1561026c57608483915f809460405196879586947f36c785160000000000000000000000000000000000000000000000000000000086521660048501528b6024850152881660448401528960648401525af1801561029757611ec4575b506044829360209360405196879485937f15afd409000000000000000000000000000000000000000000000000000000008552600485015260248401525af1908115611eb85750611e8d575b808080611d6e565b602090813d8311611eb1575b611ea38183611954565b8101031261026c575f611e85565b503d611e99565b604051903d90823e3d90fd5b60209250611ed190611940565b60445f9250611e39565b837f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b47908115611fc3577f00000000000000000000000000000000000000000000000000000000000000005c611fc357814710611f97575f80809373ffffffffffffffffffffffffffffffffffffffff8294165af1611f67611c8a565b5015611f6f57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b5050565b90611fdc5750805115611f6f57805190602001fd5b8151158061202f575b611fed575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15611fe556fea264697066735822122083809b9d5846a655e6307e338af25369f406cc3b7f30bd4dcd522f39d6d2e37564736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x81 JUMPI JUMPDEST POP CALLDATASIZE ISZERO PUSH2 0x1A JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x59 JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x13F7BB4D EQ PUSH2 0x16F3 JUMPI POP DUP1 PUSH4 0x19C6989F EQ PUSH2 0xFCB JUMPI DUP1 PUSH4 0x400F230D EQ PUSH2 0xEC5 JUMPI DUP1 PUSH4 0x4FE56ED6 EQ PUSH2 0xD28 JUMPI DUP1 PUSH4 0x502383F4 EQ PUSH2 0xCA8 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xB6B JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0xB19 JUMPI DUP1 PUSH4 0x662727CC EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0x8AFE5C38 EQ PUSH2 0x91C JUMPI DUP1 PUSH4 0xA3902604 EQ PUSH2 0x805 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0xB365A3C2 EQ PUSH2 0x66C JUMPI DUP1 PUSH4 0xBC48E97F EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0xD96AF070 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xD9F70869 EQ PUSH2 0x2CF JUMPI PUSH4 0xE0FEFE35 EQ PUSH2 0x13D JUMPI PUSH0 PUSH2 0xF JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0x14B CALLDATASIZE PUSH2 0x1909 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xA390260400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x2A2 JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0x21A PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x17DF JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP3 PUSH2 0x270 JUMPI JUMPDEST POP POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x290 SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0x288 DUP3 DUP6 PUSH2 0x1954 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0x2DD CALLDATASIZE PUSH2 0x1885 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x2EA SWAP5 SWAP4 SWAP5 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0x2F2 PUSH2 0x1CF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP4 DUP3 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x20 SWAP6 SWAP2 SWAP4 PUSH32 0x0 DUP6 AND SWAP3 SWAP1 SWAP2 DUP8 DUP2 PUSH1 0xA4 DUP2 PUSH0 DUP9 GAS CALL SWAP7 DUP8 ISZERO PUSH2 0x297 JUMPI DUP9 SWAP2 PUSH0 SWAP9 PUSH2 0x44D JUMPI JUMPDEST POP SWAP1 DUP7 SWAP3 SWAP2 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP8 DUP9 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x297 JUMPI PUSH2 0x3F5 SWAP7 PUSH2 0x3F0 SWAP4 PUSH0 SWAP2 PUSH2 0x420 JUMPI JUMPDEST POP AND DUP4 PUSH2 0x1D64 JUMP JUMPDEST PUSH2 0x1D64 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x440 SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x446 JUMPI JUMPDEST PUSH2 0x438 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1A0C JUMP JUMPDEST DUP11 PUSH2 0x3E8 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x42E JUMP JUMPDEST DUP3 DUP2 SWAP5 SWAP4 SWAP3 SWAP10 POP RETURNDATASIZE DUP4 GT PUSH2 0x479 JUMPI JUMPDEST PUSH2 0x466 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI SWAP1 MLOAD SWAP6 DUP8 SWAP1 DUP7 PUSH2 0x397 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x45C JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x84 PUSH1 0x40 PUSH2 0x49D PUSH2 0x176A JUMP JUMPDEST PUSH2 0x4A5 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0x4AD PUSH2 0x1CF9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xEBC7955C00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x24 DUP5 ADD MSTORE DUP2 PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x571 JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 POP PUSH2 0x593 SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x599 JUMPI JUMPDEST PUSH2 0x58B DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x19F6 JUMP JUMPDEST DUP4 PUSH2 0x541 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x581 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH2 0x5B8 PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9F7086900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 DUP2 DUP1 PUSH2 0x60B PUSH1 0x4 DUP3 ADD SWAP1 PUSH0 PUSH1 0x80 PUSH1 0xA0 DUP5 ADD SWAP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH2 0x641 JUMPI JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x665 JUMPI JUMPDEST PUSH2 0x657 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI DUP1 PUSH2 0x61C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x64D JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0x735 PUSH0 PUSH2 0x6EC PUSH2 0x6FA PUSH2 0x684 CALLDATASIZE PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9F7086900000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x1954 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x17DF JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP2 PUSH2 0x79B JUMPI JUMPDEST POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 DUP1 SWAP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x7B7 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x7AF DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST DUP2 PUSH2 0x77F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x26C JUMPI PUSH2 0x7F5 PUSH2 0x7EF PUSH2 0x801 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x17AE JUMP JUMPDEST SWAP1 PUSH2 0x1A38 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1804 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0xA4 PUSH1 0x20 PUSH2 0x817 CALLDATASIZE PUSH2 0x1909 JUMP JUMPDEST SWAP2 PUSH2 0x823 SWAP5 SWAP2 SWAP5 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0x82B PUSH2 0x1CF9 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE DUP2 PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP1 PUSH2 0x8E9 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x914 JUMPI JUMPDEST DUP2 PUSH2 0x903 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH2 0x8BB JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x8F6 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH2 0x934 PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FE56ED600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x40 DUP2 DUP1 PUSH2 0x987 PUSH1 0x4 DUP3 ADD SWAP1 PUSH0 PUSH1 0x80 PUSH1 0xA0 DUP5 ADD SWAP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH2 0x9BC JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x9D4 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x599 JUMPI PUSH2 0x58B DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST POP PUSH2 0x61C JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH2 0xA92 PUSH0 PUSH2 0x6EC PUSH2 0xA57 PUSH2 0x9FD PUSH2 0x176A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x400F230D00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x17DF JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 SWAP2 PUSH2 0xAF3 SWAP2 PUSH0 SWAP2 PUSH2 0xAFF JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x19F6 JUMP JUMPDEST DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0xB13 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x7AF DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP4 PUSH2 0xAE3 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0xC9E JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0xC71 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0xC33 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xBDA JUMPI JUMPDEST POP PUSH2 0xBC6 SWAP3 POP SUB DUP4 PUSH2 0x1954 JUMP JUMPDEST PUSH2 0x801 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x17DF JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0xC1B JUMPI POP POP PUSH2 0xBC6 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xBB9 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xC04 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0xBC6 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0xBB9 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0xB95 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0xA92 PUSH0 PUSH2 0x6EC PUSH2 0x6FA PUSH2 0xCC0 CALLDATASIZE PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FE56ED600000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD MSTORE CALLER PUSH1 0xA4 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH1 0xC4 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH2 0xD36 CALLDATASIZE PUSH2 0x1885 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 SWAP3 PUSH2 0xD42 PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0xD4A PUSH2 0x1CF9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x44 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP1 SWAP3 PUSH32 0x0 DUP3 AND SWAP1 DUP5 PUSH1 0xA4 DUP2 PUSH0 DUP6 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP5 PUSH0 SWAP5 PUSH2 0xE98 JUMPI JUMPDEST POP SWAP1 PUSH1 0x20 DUP4 SWAP3 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x4AFBAF5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND SWAP5 DUP6 PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x297 JUMPI PUSH2 0x3F0 DUP7 DUP7 SWAP5 PUSH1 0x40 SWAP10 PUSH2 0xE4A SWAP8 PUSH0 SWAP2 PUSH2 0xE79 JUMPI POP AND DUP4 PUSH2 0x1D64 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0xE92 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x446 JUMPI PUSH2 0x438 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP12 PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x20 SWAP6 POP DUP4 SWAP3 SWAP2 SWAP5 POP PUSH2 0xEB9 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x599 JUMPI PUSH2 0x58B DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST SWAP6 SWAP1 SWAP6 SWAP5 SWAP2 SWAP3 POP PUSH2 0xDEC JUMP JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH1 0xA4 PUSH1 0x40 PUSH2 0xEE2 PUSH2 0x176A JUMP JUMPDEST PUSH2 0xEEA PUSH2 0x1CCC JUMP JUMPDEST PUSH2 0xEF2 PUSH2 0x1CF9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 SWAP2 PUSH0 DUP5 MLOAD SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP5 ADD MSTORE ADDRESS PUSH1 0x84 DUP5 ADD MSTORE PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x297 JUMPI PUSH1 0x40 SWAP2 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x571 JUMPI POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x26C JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x26C JUMPI PUSH2 0x1041 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x17AE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x26C JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x64 CALLDATALOAD ADD SLT ISZERO PUSH2 0x26C JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x26C JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0x64 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH1 0x64 CALLDATALOAD ADD ADD GT PUSH2 0x26C JUMPI PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x26C JUMPI PUSH2 0x10C9 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x17AE JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH2 0x10D4 PUSH2 0x1CCC JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x16CB JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x13BC JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x26C JUMPI DUP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x26C JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x26C JUMPI PUSH2 0x1186 JUMPI JUMPDEST PUSH2 0x801 PUSH2 0x7F5 DUP5 DUP5 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x1A38 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x26C JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0xC4 DUP5 ADD SWAP1 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x26C JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x26C JUMPI PUSH1 0x60 PUSH1 0x64 DUP8 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE DUP5 SWAP2 PUSH1 0xE4 DUP4 ADD SWAP2 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x1328 JUMPI POP POP POP SWAP1 PUSH1 0x20 DUP2 PUSH0 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1278 PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x178D JUMP JUMPDEST AND PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD DUP2 ADD CALLDATALOAD PUSH1 0xA4 DUP5 ADD MSTORE PUSH1 0x3 NOT DUP4 DUP4 SUB ADD SWAP1 DUP4 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP1 DUP4 MSTORE SWAP1 PUSH1 0x24 ADD DUP5 DUP4 ADD CALLDATACOPY PUSH1 0x4 PUSH1 0x64 CALLDATALOAD ADD CALLDATALOAD DUP2 DUP2 ADD DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD SUB ADD DUP2 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x297 JUMPI PUSH2 0x801 SWAP4 PUSH2 0x7F5 SWAP4 PUSH2 0x1319 JUMPI JUMPDEST POP SWAP2 POP SWAP2 PUSH2 0x1156 JUMP JUMPDEST PUSH2 0x1322 SWAP1 PUSH2 0x1940 JUMP JUMPDEST DUP5 PUSH2 0x1310 JUMP JUMPDEST SWAP2 SWAP4 POP SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x134A DUP6 PUSH2 0x178D JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP1 SWAP4 SUB PUSH2 0x26C JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x1387 PUSH1 0x40 DUP8 ADD PUSH2 0x1CB9 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x13A2 PUSH1 0x60 DUP9 ADD PUSH2 0x1CB9 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP6 ADD SWAP4 ADD SWAP1 POP DUP7 SWAP4 SWAP3 SWAP2 PUSH2 0x1241 JUMP JUMPDEST PUSH2 0x13D1 PUSH2 0x13CA DUP3 DUP5 DUP7 PUSH2 0x1BB3 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x1C40 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP5 ADD GT OR PUSH2 0x2A2 JUMPI PUSH1 0x60 DUP3 ADD PUSH1 0x40 MSTORE PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP5 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x26C JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0xC0 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0xC0 DUP5 ADD GT OR PUSH2 0x2A2 JUMPI PUSH1 0xC0 DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x148C PUSH1 0x24 PUSH1 0xC0 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x178D JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x14A2 PUSH1 0x44 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x178D JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x14BC PUSH1 0x64 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x178D JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP8 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 SWAP1 SWAP5 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0x26C JUMPI PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP11 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x16BC JUMPI JUMPDEST POP PUSH2 0x16B3 JUMPI PUSH2 0x15B5 PUSH2 0x1C8A JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x297 JUMPI PUSH0 SWAP3 PUSH2 0x167E JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x1647 JUMPI POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x10E3 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1656 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x16AB JUMPI JUMPDEST DUP2 PUSH2 0x169A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x1632 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x168D JUMP JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH2 0x16C5 SWAP1 PUSH2 0x1940 JUMP JUMPDEST DUP8 PUSH2 0x15A8 JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x26C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x26C JUMPI PUSH0 DUP2 PUSH2 0xA57 PUSH2 0xA92 SWAP4 PUSH2 0x6EC PUSH2 0x1718 PUSH2 0x176A JUMP JUMPDEST PUSH32 0xD96AF07000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x24 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x26C JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x26C JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x26C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x26C JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x26C JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1839 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x1875 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x17DF JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x26C JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x26C JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x26C JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2A2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A2 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x26C JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x26C JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x26C JUMPI DUP1 MLOAD SWAP1 PUSH2 0x19C7 DUP3 PUSH2 0x1977 JUMP JUMPDEST SWAP3 PUSH2 0x19D5 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1954 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x26C JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x26C JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x26C JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x26C JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH0 SWAP1 PUSH32 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 TLOAD AND ISZERO PUSH2 0x1B8E JUMPI JUMPDEST PUSH32 0x0 SWAP5 DUP6 TLOAD PUSH2 0x1B66 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP8 TSTORE PUSH2 0x1AB4 DUP4 PUSH2 0x1B9B JUMP JUMPDEST SWAP3 PUSH2 0x1AC2 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x1954 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x1AD1 DUP3 PUSH2 0x1B9B JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1B55 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1B0C JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x1B01 SWAP4 SWAP3 SWAP6 TSTORE DUP1 TLOAD SWAP2 PUSH2 0x1B03 JUMPI JUMPDEST POP PUSH2 0x1F0C JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x1AFB JUMP JUMPDEST DUP1 PUSH2 0x1B39 PUSH0 DUP1 PUSH2 0x1B21 PUSH2 0x13CA DUP10 SWAP7 DUP9 DUP11 PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x1B32 PUSH2 0x1C8A JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x1FC7 JUMP JUMPDEST PUSH2 0x1B43 DUP3 DUP9 PUSH2 0x1C76 JUMP JUMPDEST MSTORE PUSH2 0x1B4E DUP2 DUP8 PUSH2 0x1C76 JUMP JUMPDEST POP ADD PUSH2 0x1ADF JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x1AD4 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 POP CALLER DUP2 TSTORE PUSH1 0x1 SWAP2 PUSH2 0x1A7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2A2 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x1C13 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x26C JUMPI ADD SWAP1 DUP2 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x26C JUMPI PUSH1 0x20 ADD DUP3 CALLDATASIZE SUB DUP2 SGT PUSH2 0x26C JUMPI SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x1C4C DUP3 PUSH2 0x1977 JUMP JUMPDEST SWAP2 PUSH2 0x1C5A PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1954 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x26C JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1C13 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x1CB4 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x1C9B DUP3 PUSH2 0x1977 JUMP JUMPDEST SWAP2 PUSH2 0x1CA9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1954 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x26C JUMPI JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x1B66 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x1D38 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH0 SWAP1 DUP1 PUSH2 0x1D74 JUMPI JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND DUP2 PUSH32 0x0 AND SWAP6 DUP3 DUP5 GT PUSH2 0x1EDB JUMPI DUP3 AND SWAP5 DUP2 EXTCODESIZE ISZERO PUSH2 0x26C JUMPI PUSH1 0x84 DUP4 SWAP2 PUSH0 DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE DUP12 PUSH1 0x24 DUP6 ADD MSTORE DUP9 AND PUSH1 0x44 DUP5 ADD MSTORE DUP10 PUSH1 0x64 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x297 JUMPI PUSH2 0x1EC4 JUMPI JUMPDEST POP PUSH1 0x44 DUP3 SWAP4 PUSH1 0x20 SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 DUP5 ADD MSTORE GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1EB8 JUMPI POP PUSH2 0x1E8D JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x1D6E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1EB1 JUMPI JUMPDEST PUSH2 0x1EA3 DUP2 DUP4 PUSH2 0x1954 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x26C JUMPI PUSH0 PUSH2 0x1E85 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1E99 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x1ED1 SWAP1 PUSH2 0x1940 JUMP JUMPDEST PUSH1 0x44 PUSH0 SWAP3 POP PUSH2 0x1E39 JUMP JUMPDEST DUP4 PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE SWAP1 DUP2 ISZERO PUSH2 0x1FC3 JUMPI PUSH32 0x0 TLOAD PUSH2 0x1FC3 JUMPI DUP2 SELFBALANCE LT PUSH2 0x1F97 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SWAP5 AND GAS CALL PUSH2 0x1F67 PUSH2 0x1C8A JUMP JUMPDEST POP ISZERO PUSH2 0x1F6F JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH2 0x1FDC JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x1F6F JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x202F JUMPI JUMPDEST PUSH2 0x1FED JUMPI POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x1FE5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP4 DUP1 SWAP12 SWAP14 PC CHAINID 0xA6 SSTORE 0xE6 ADDRESS PUSH31 0x338AF25369F406CC3B7F30BD4DCD522F39D6D2E37564736F6C634300081A00 CALLER ","sourceMap":"507:667:79:-:0;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;16367:5:62;507:667:79;16345:10:62;:28;16341:79;;507:667:79;16341:79:62;16396:13;;;507:667:79;16396:13:62;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7582:172:59;507:667:79;7582:172:59;;;507:667:79;;;;;2047:392:59;507:667:79;2047:392:59;;;507:667:79;;;;;;;;;;;3670:184:59;;;507:667:79;;;;;;;;;;:::i;:::-;;;;;;7084:187:59;;;;;;507:667:79;7084:187:59;;;507:667:79;;;;;;;;;;7084:187:59;;507:667:79;;;;;;;;;;;;;;;;;;;;7050:239:59;;7084:187;7050:239;;;507:667:79;;;7050:239:59;507:667:79;;;;;;;:::i;:::-;7050:239:59;;:6;;507:667:79;7050:239:59;;;;;;;507:667:79;7050:239:59;;;507:667:79;;;7084:187:59;507:667:79;;;7022:308:59;;507:667:79;;;;7084:187:59;7022:308;;;507:667:79;;;;;;;;;;;7050:239:59;;;;507:667:79;7050:239:59;;;;507:667:79;7050:239:59;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;507:667:79;;;;;;;;;;;;;;;;7084:187:59;507:667:79;;;;;;;;;:::i;:::-;1083:103:50;;;;;;;:::i;:::-;436:67:68;;:::i;:::-;507:667:79;;;3670:184:59;;507:667:79;;;;;3670:184:59;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;3670:184:59;;507:667:79;;3670:6:59;507:667:79;;;;;3670:184:59;507:667:79;;;-1:-1:-1;507:667:79;3670:184:59;;;;;;;;;507:667:79;3670:184:59;;;507:667:79;;;;;;;;;3881:42:59;;;;507:667:79;3881:42:59;;507:667:79;3881:42:59;;507:667:79;3881:42:59;;507:667:79;3881:42:59;;;;;;;4094:5;3881:42;3999:5;3881:42;507:667:79;3881:42:59;;;507:667:79;;;3999:5:59;;:::i;:::-;4094;:::i;:::-;507:667:79;551:66:50;3051:52:52;507:667:79;;;;;;3881:42:59;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3670:184;;;;;;;;;;;;;;;;;;:::i;:::-;;;507:667:79;;;;;;;;;;3670:184:59;;;;;;;507:667:79;;;;;-1:-1:-1;;507:667:79;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;507:667:79;;;;;;;9455:73:59;;;;;507:667:79;9455:73:59;;507:667:79;;9455:73:59;;507:667:79;;;;;;;;;;;;;;;;;9455:6:59;507:667:79;9455:73:59;;;;;;;507:667:79;9455:73:59;507:667:79;;;9455:73:59;;;507:667:79;3051:52:52;507:667:79;551:66:50;3051:52:52;507:667:79;;;;;;;;;;9455:73:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;507:667:79;;;;;-1:-1:-1;;507:667:79;;;;;1083:103:50;;:::i;:::-;507:667:79;;;1074:91;;;;;;507:667;1074:91;;507:667;;;;;;;;;;;;;;;;;;;;;;;;;;;;1074:91;;1095:4;507:667;1095:4;1074:91;;;;;;;;507:667;;551:66:50;3051:52:52;507:667:79;1074:91;;;;;;;;;;;;;;:::i;:::-;;;507:667;;;;1074:91;;;;;;;;507:667;;;;;;2047:392:59;;507:667:79;;;:::i;:::-;;;2047:392:59;;;;;507:667:79;;;;2047:392:59;;;507:667:79;;;;;;;;;;;;;;;;2366:10:59;507:667:79;;;;;;;;;;;;2047:392:59;;-1:-1:-1;;2047:392:59;;;;;;:::i;:::-;507:667:79;;2012:445:59;;;;507:667:79;2012:445:59;;2047:392;507:667:79;2012:445:59;;507:667:79;2047:392:59;507:667:79;;;;:::i;:::-;2012:445:59;:6;;507:667:79;2012:6:59;507:667:79;2012:445:59;;;;;;;507:667:79;2012:445:59;;;507:667:79;;2047:392:59;507:667:79;;;1984:514:59;;507:667:79;;;;2047:392:59;1984:514;;;507:667:79;;;;;;;2012:445:59;;;;;;507:667:79;2012:445:59;;;;;;:::i;:::-;;;;;:::i;:::-;;;;507:667:79;;-1:-1:-1;;507:667:79;;;;;;;;;;;;11039:22:62;507:667:79;;;;;;;;:::i;:::-;11039:22:62;;:::i;:::-;507:667:79;;;;;;;:::i;:::-;;;;;;;;;7582:172:59;507:667:79;;;:::i;:::-;1083:103:50;;;;;;:::i;:::-;436:67:68;;:::i;:::-;507:667:79;;;;;;7582:172:59;;;;;507:667:79;7582:172:59;;507:667:79;;7582:172:59;;507:667:79;;;;;;;;;;;;;;7739:4:59;507:667:79;;;;7582:6:59;507:667:79;7582:172:59;;;;;;507:667:79;7582:172:59;;;507:667:79;7582:172:59;3051:52:52;507:667:79;551:66:50;3051:52:52;507:667:79;;;;;;7582:172:59;;;;;;;;;;;;;;;;:::i;:::-;;;507:667:79;;;;7582:172:59;507:667:79;;7582:172:59;;;;;-1:-1:-1;7582:172:59;;507:667:79;;;;;-1:-1:-1;;507:667:79;;;;;1083:103:50;;:::i;:::-;507:667:79;;;886:95;;507:667;886:95;;;507:667;886:95;;507:667;;;;;;;;;;;;;;;;;;;;;;;;;;;;886:95;;907:4;507:667;907:4;886:95;;;;;;;;507:667;551:66:50;3051:52:52;507:667:79;886:95;;;507:667;886:95;507:667;886:95;;;;;;;:::i;:::-;;;;507:667;;;;;-1:-1:-1;;507:667:79;;;;;;;8071:94:59;;507:667:79;;:::i;:::-;;;8071:94:59;507:667:79;8071:94:59;;;507:667:79;;;;;8071:94:59;;;507:667:79;;;;;;;;;;;;;;;;;8071:94:59;507:667:79;;8037:146:59;;;;507:667:79;8037:146:59;;507:667:79;;8037:146:59;;507:667:79;;;;;;:::i;:::-;8037:146:59;:6;;507:667:79;8037:6:59;507:667:79;8037:146:59;;;;;;;507:667:79;8037:146:59;8009:224;8037:146;507:667:79;8037:146:59;;;507:667:79;;;;;;8009:224:59;;;;;;:::i;:::-;507:667:79;;;;;;;;;;8037:146:59;;;;;;507:667:79;8037:146:59;;;;;;:::i;:::-;;;;507:667:79;;;;;-1:-1:-1;;507:667:79;;;;;;16677:12:62;2295:53:52;507:667:79;;;;;;;;;;;;;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;-1:-1:-1;507:667:79;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;4488:395:59;;507:667:79;;;:::i;:::-;;;4488:395:59;;;;;507:667:79;;;;4488:395:59;;;507:667:79;;;;;;;;;;;;;;;;4810:10:59;507:667:79;;;;;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;;:::i;:::-;436:67:68;;:::i;:::-;507:667:79;;;;6336:187:59;;507:667:79;;;;;6336:187:59;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6336:6:59;507:667:79;;;;;;-1:-1:-1;507:667:79;6336:187:59;;;;;;;507:667:79;;;6336:187:59;;;507:667:79;;;6550:42:59;507:667:79;;;;;6550:42:59;;;;507:667:79;6550:42:59;;507:667:79;6550:42:59;;507:667:79;6550:42:59;;507:667:79;6550:42:59;;;;;;;6663:5;6550:42;;;507:667:79;6550:42:59;6753:5;6550:42;507:667:79;6550:42:59;;;507:667:79;;6663:5:59;;:::i;6753:::-;507:667:79;551:66:50;3051:52:52;507:667:79;;;;;6550:42:59;507:667:79;;;;6550:42:59;;;;;;;;;;;;;;:::i;:::-;;;;6336:187;6550:42;6336:187;;;;;;;;;507:667:79;6336:187:59;507:667:79;6336:187:59;;;;;;;:::i;:::-;;;;;;;;;;507:667:79;;;;;-1:-1:-1;;507:667:79;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;507:667:79;;;;;;;8502:184:59;;;;;507:667:79;8502:184:59;;507:667:79;;8502:184:59;;507:667:79;8569:17:59;507:667:79;;;;;;;;;;;;;;;8671:4:59;507:667:79;;;;8502:6:59;507:667:79;8502:184:59;;;;;;;507:667:79;8502:184:59;507:667:79;;;8502:184:59;;;3051:52:52;507:667:79;551:66:50;3051:52:52;507:667:79;;;;;;;;;;;;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;:::i;:::-;507:667:79;;;;;;1500:6:40;1496:65;;507:667:79;8604:22:62;507:667:79;;;;;8604:22:62;;;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10022:860:62;;8584:1371;507:667:79;11039:22:62;3051:52:52;;507:667:79;551:66:50;3051:52:52;11039:22:62;:::i;10022:860::-;10812:8;507:667:79;10812:8:62;507:667:79;10812:59:62;;;;507:667:79;;10812:59:62;507:667:79;10812:59:62;;10828:10;507:667:79;10812:59:62;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;507:667:79;;10812:59:62;;:8;507:667:79;10812:8:62;507:667:79;;10812:59:62;;;;;;;507:667:79;10812:59:62;11039:22;10812:59;;;507:667:79;10022:860:62;;;;;;10812:59;;;;:::i;:::-;;;;507:667:79;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;8628:3:62;507:667:79;8672:19:62;;;;;:::i;:::-;507:667:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11519:180:62;;;;507:667:79;;11519:180:62;;;;;;507:667:79;11519:180:62;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;507:667:79;;;;;;;;;;;;;;8876:338:62;;;;;507:667:79;8876:338:62;;507:667:79;;8876:338:62;;507:667:79;8989:4:62;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;;;8628:3;-1:-1:-1;8856:1089:62;;9341:604;;:::i;:::-;507:667:79;;;;;;;;;;;;;;;;9614:75:62;;;;507:667:79;9614:75:62;;507:667:79;9614:75:62;;507:667:79;8989:4:62;507:667:79;;;;9614:75:62;;;;;;;507:667:79;9614:75:62;;;8856:1089;507:667:79;;;;9614:100:62;9589:342;;8856:1089;507:667:79;8856:1089:62;;507:667:79;8589:13:62;;9589:342;507:667:79;;1881:21:42;:17;;2008:160;;;507:667:79;2008:160:42;;1877:362;2205:23;507:667:79;2205:23:42;507:667:79;;2205:23:42;9614:75:62;;;;507:667:79;9614:75:62;;507:667:79;9614:75:62;;;;;;507:667:79;9614:75:62;;;:::i;:::-;;;507:667:79;;;;;;;9614:75:62;;;;;-1:-1:-1;9614:75:62;;8856:1089;;507:667:79;8856:1089:62;;;8876:338;;;;:::i;:::-;;;;1496:65:40;1529:21;507:667:79;1529:21:40;507:667:79;;1529:21:40;507:667:79;;;;;-1:-1:-1;;507:667:79;;;;;;;9027:100:59;507:667:79;;9027:100:59;507:667:79;;:::i;:::-;9027:100:59;507:667:79;9027:100:59;;;507:667:79;;;9027:100:59;;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;-1:-1:-1;;507:667:79;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;507:667:79;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;5703:590:62:-;;;-1:-1:-1;16677:12:62;;2295:53:52;507:667:79;2295:53:52;;507:667:79;6524:25:62;6520:124;;5703:590;16826:26;2806:53:52;;;5897:100:62;;6090:4;3051:52:52;6090:4:62;3051:52:52;;507:667:79;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;507:667:79;;;:::i;:::-;;-1:-1:-1;507:667:79;;;;;;11122:13:62;;-1:-1:-1;11137:15:62;;;;;;6105:1;;;;;-1:-1:-1;6279:6:62;6105:1;;3051:52:52;;2295:53;;6887:82:62;;;11117:132;6279:6;;:::i;:::-;5703:590::o;6887:82::-;-1:-1:-1;3051:52:52;;6887:82:62;;;11154:3;11230:7;4297:55:99;-1:-1:-1;11230:7:62;507:667:79;11230:7:62;;;;;;:::i;507:667:79:-;;4255:25:99;;;;11223:4:62;4255:25:99;;;;:::i;:::-;11223:4:62;;4297:55:99;:::i;:::-;11173:65:62;;;;:::i;:::-;;;;;;:::i;:::-;;507:667:79;11122:13:62;;507:667:79;;;;;;;;;;;;;5897:100:62;5956:30;-1:-1:-1;5956:30:62;;-1:-1:-1;5956:30:62;6520:124;5783:10;;;3051:52:52;;6629:4:62;6520:124;;;507:667:79;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;507:667:79;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;507:667:79;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;1192:349:50:-;551:66;2295:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;509:165:68:-;507:667:79;586:6:68;507:667:79;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;507:667:79;;616:41:68;;13763:872:62;;;507:667:79;14379:12:62;;14375:244;;13763:872;;;;;:::o;14375:244::-;507:667:79;14468:8:62;;507:667:79;14506:6:62;;507:667:79;7303:25:111;;;;7299:105;;507:667:79;;14468:86:62;;;;;;507:667:79;;;;;;;;14468:86:62;;;;;507:667:79;14468:86:62;;507:667:79;14468:86:62;;;507:667:79;;;;;;;;;;;;;;;;;14468:86:62;;;;;;;;14375:244;507:667:79;;;;;;;;14572:32:62;;;;;507:667:79;14572:32:62;;14468:86;14572:32;;507:667:79;;;;;14572:32:62;;;;;;;;;;14375:244;;;;;;14572:32;507:667:79;14572:32:62;;;;;;;;;;;;:::i;:::-;;;507:667:79;;;;14572:32:62;;;;;;;;;507:667:79;;;;;;;;;;14468:86:62;507:667:79;14468:86:62;;;;;:::i;:::-;507:667:79;;14468:86:62;;;;7299:105:111;7351:42;;507:667:79;7351:42:111;7382:3;7351:42;507:667:79;;;;;7351:42:111;12478:584:62;12714:21;12749:11;;;12745:48;;16826:26;2295:53:52;12943:69:62;;1616:21:99;;:30;1612:109;;12759:1:62;507:667:79;;;;;;;1750:33:99;;;;:::i;:::-;;1797:8;1793:63;;12478:584:62:o;1793:63:99:-;1828:17;12759:1:62;1828:17:99;;12759:1:62;1828:17:99;1612:109;1669:41;12759:1:62;1669:41:99;12722:4:62;1669:41:99;507:667:79;;12759:1:62;1669:41:99;12943:69:62;12995:7;;:::o;4625:582:99:-;;4797:8;;-1:-1:-1;507:667:79;;5874:21:99;:17;;6046:142;;;;;;4793:408;507:667:79;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;507:667:79;5121:24:99;;5066:1;5121:24;507:667:79;5121:24:99;507:667:79;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;"},"methodIdentifiers":{"addLiquidityToBuffer(address,uint256,uint256,uint256)":"502383f4","addLiquidityToBufferHook(address,uint256,uint256,uint256,address)":"4fe56ed6","getSender()":"5e01eb5a","initializeBuffer(address,uint256,uint256,uint256)":"b365a3c2","initializeBufferHook(address,uint256,uint256,uint256,address)":"d9f70869","manualReentrancyAddLiquidityToBufferHook()":"8afe5c38","manualReentrancyInitializeBufferHook()":"bc48e97f","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","queryAddLiquidityToBuffer(address,uint256)":"662727cc","queryAddLiquidityToBufferHook(address,uint256)":"400f230d","queryInitializeBuffer(address,uint256,uint256)":"e0fefe35","queryInitializeBufferHook(address,uint256,uint256)":"a3902604","queryRemoveLiquidityFromBuffer(address,uint256)":"13f7bb4d","queryRemoveLiquidityFromBufferHook(address,uint256)":"d96af070","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IWETH\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MockErrorCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"addLiquidityToBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"initializeBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancyAddLiquidityToBufferHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancyInitializeBufferHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"queryAddLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"}],\"name\":\"queryAddLiquidityToBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"}],\"name\":\"queryInitializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountUnderlyingIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountWrappedIn\",\"type\":\"uint256\"}],\"name\":\"queryInitializeBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToRemove\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToRemove\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityFromBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"kind\":\"dev\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Requires the buffer to be initialized beforehand. Restricting adds to proportional simplifies the Vault code, avoiding rounding issues and minimum amount checks. It is possible to add unbalanced by interacting with the wrapper contract directly.\",\"params\":{\"exactSharesToIssue\":\"The amount of shares that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingIn\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedIn\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens deposited into the buffer\"}},\"addLiquidityToBufferHook(address,uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"exactSharesToIssue\":\"The value in underlying tokens that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingIn\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedIn\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens deposited into the buffer\"}},\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"initializeBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Calling this method binds the wrapped token to its underlying asset internally; the asset in the wrapper cannot change afterwards, or every other operation on that wrapper (add / remove / wrap / unwrap) will fail. To avoid unexpected behavior, always initialize buffers before creating or initializing any pools that contain the wrapped tokens to be used with them.\",\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that will be deposited into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, denominated in underlying tokens (This is the BPT of the Vault's internal ERC4626 buffer.)\"}},\"initializeBufferHook(address,uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the Vault. Buffers must be initialized before use.\",\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that will be deposited into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive, in underlying token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts. (This is the BPT of an internal ERC4626 buffer)\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"queryAddLiquidityToBuffer(address,uint256)\":{\"params\":{\"exactSharesToIssue\":\"The amount of shares that would be minted, in underlying token decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingIn\":\"Amount of underlying tokens that would be deposited into the buffer\",\"amountWrappedIn\":\"Amount of wrapped tokens that would be deposited into the buffer\"}},\"queryInitializeBuffer(address,uint256,uint256)\":{\"params\":{\"exactAmountUnderlyingIn\":\"Amount of underlying tokens that the sender wishes to deposit into the buffer\",\"exactAmountWrappedIn\":\"Amount of wrapped tokens that the sender wishes to deposit into the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"The amount of shares that would be minted, in underlying token decimals\"}},\"queryRemoveLiquidityFromBuffer(address,uint256)\":{\"params\":{\"exactSharesToRemove\":\"The amount of shares that would be burned, in underlying token decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceOut\":\"Amount of underlying tokens that would be removed from the buffer\",\"removedWrappedBalanceOut\":\"Amount of wrapped tokens that would be removed from the buffer\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}]},\"kind\":\"user\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Adds liquidity proportionally to an internal ERC4626 buffer in the Vault.\"},\"addLiquidityToBufferHook(address,uint256,uint256,uint256,address)\":{\"notice\":\"Hook for adding liquidity to vault buffers. The Vault will enforce that the buffer is initialized.\"},\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"initializeBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Adds liquidity for the first time to an internal ERC4626 buffer in the Vault.\"},\"initializeBufferHook(address,uint256,uint256,uint256,address)\":{\"notice\":\"Hook for initializing a vault buffer.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"queryAddLiquidityToBuffer(address,uint256)\":{\"notice\":\"Queries an `addLiquidityToBuffer` operation without actually executing it.\"},\"queryInitializeBuffer(address,uint256,uint256)\":{\"notice\":\"Queries an `initializeBuffer` operation without actually executing it.\"},\"queryRemoveLiquidityFromBuffer(address,uint256)\":{\"notice\":\"Queries an `removeLiquidityFromBuffer` operation without actually executing it.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol\":\"BufferRouterMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBufferRouter.sol\":{\"keccak256\":\"0xcef9acd5d8cf67d7e126da0961fef2f7dac4e9b24ae13385dfd17d2313536cd9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e1bf4ede1c5055ea3a57536a6804bd3ca984017a738be03a2a7673eaec0c5ed\",\"dweb:/ipfs/QmYyfLkUeTj17JuDnzzKfqtFK9kEjfbs3XWEsdh83kNt1Z\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BufferRouter.sol\":{\"keccak256\":\"0x86ed9d1f9e5a54d2f4213e88f070e25b6a746222c26653de4638b9f619111bd2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://78b8b3026d22679c0697dca993c35cab0de0dcfc6e47781f4b90e3455fb341e9\",\"dweb:/ipfs/QmaEQrJmeHQTA4kWJnaHYJmpe7nKL424henYhBQHrbe3sa\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/test/BufferRouterMock.sol\":{\"keccak256\":\"0xfea36bacd089ddfbb0d2aa9435e56baa6c0ad97fa043577fb8bfa81767b87ebb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://278fb71abbd42e396207a1460958c557faef5837d1fa48fddc820ff2d2d7665b\",\"dweb:/ipfs/QmPguaMx1JsqwEaZr3CpVkMFW8vvUsDg8XKUk7roa6NBM5\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol":{"InputHelpersMock":{"abi":[{"inputs":[],"name":"TokensNotSorted","type":"error"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"ensureSortedTokens","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"name":"sortTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"sortTokens","outputs":[{"internalType":"contract IERC20[]","name":"","type":"address[]"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601557610705908161001a8239f35b5f80fdfe604060808152600480361015610013575f80fd5b5f3560e01c8063136deb1c146103cd578063a3aef0b8146103215763bb4ad7d51461003c575f80fd5b3461030b57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030b5780359267ffffffffffffffff9081851161030b573660238601121561030b57848301356024956100a461009f836105b1565b610559565b938685848152019088829460071b8401019236841161030b579497948901915b83831061028257505050505f915b8351957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96878101908111610270578410156101da575f5b610115858751610686565b8881019081116101c8578110156101ba5773ffffffffffffffffffffffffffffffffffffffff8061014683896106a7565b51511660018301918284116101a857908291610165600195948b6106a7565b51511610610175575b500161010a565b61017f81896106a7565b519061019661018e848b6106a7565b51918a6106a7565b526101a182896106a7565b525f61016e565b8b60118b634e487b7160e01b5f52525ffd5b5095506001909201916100d2565b89601189634e487b7160e01b5f52525ffd5b805182815285518184018190529092838301925f9089908c5b8584106102005787870388f35b909192939495885173ffffffffffffffffffffffffffffffffffffffff80825116835287820151600281101561025e5788840152848201511684830152606090810151151590820152978501976080019594936001019291906101f3565b84602188634e487b7160e01b5f52525ffd5b88601188634e487b7160e01b5f52525ffd5b608098959890818436031261030b5786519182018281108482111761030f5787526102ac846105c9565b825289840135600281101561030b578a8301528684013573ffffffffffffffffffffffffffffffffffffffff8116810361030b57878301526060908185013592831515840361030b576080938c938201528152019201919794976100c4565b5f80fd5b8b60418b634e487b7160e01b5f52525ffd5b503461030b57610330366105ea565b8051156103ba5773ffffffffffffffffffffffffffffffffffffffff918260208301511690600180936001915b61036357005b80518210156103b85785938461037984846106a7565b5116968791161161039157848096920191939561035d565b827f6e8f1947000000000000000000000000000000000000000000000000000000005f525ffd5b005b603282634e487b7160e01b5f525260245ffd5b50903461030b576103dd366105ea565b915f5b8351927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848101908111610546578210156104eb575f5b610423838751610686565b8581019081116104d8578110156104cd5773ffffffffffffffffffffffffffffffffffffffff8061045483896106a7565b511660018301908184116104ba5790829160019493610473838c6106a7565b511610610483575b505001610418565b6104a782610491838c6106a7565b51169261049e858c6106a7565b5116918a6106a7565b526104b282896106a7565b525f8061047b565b601187634e487b7160e01b5f525260245ffd5b5092506001016103e0565b601185634e487b7160e01b5f525260245ffd5b84908051918291602090602080850191818652845180935285019301915f5b82811061051957505050500390f35b835173ffffffffffffffffffffffffffffffffffffffff168552869550938101939281019260010161050a565b601184634e487b7160e01b5f525260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761059d57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161059d5760051b60200190565b359073ffffffffffffffffffffffffffffffffffffffff8216820361030b57565b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261030b576004359167ffffffffffffffff831161030b578060238401121561030b57826004013561064461009f826105b1565b936024602086848152019260051b82010192831161030b57602401905b82821061066f575050505090565b83809161067b846105c9565b815201910190610661565b9190820391821161069357565b634e487b7160e01b5f52601160045260245ffd5b80518210156106bb5760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122037f5aad753306e2d728751a97041c71608d77cf33fbd4d553153a231a29a004464736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x705 SWAP1 DUP2 PUSH2 0x1A DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x136DEB1C EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0xA3AEF0B8 EQ PUSH2 0x321 JUMPI PUSH4 0xBB4AD7D5 EQ PUSH2 0x3C JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x30B JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x30B JUMPI DUP1 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP6 GT PUSH2 0x30B JUMPI CALLDATASIZE PUSH1 0x23 DUP7 ADD SLT ISZERO PUSH2 0x30B JUMPI DUP5 DUP4 ADD CALLDATALOAD PUSH1 0x24 SWAP6 PUSH2 0xA4 PUSH2 0x9F DUP4 PUSH2 0x5B1 JUMP JUMPDEST PUSH2 0x559 JUMP JUMPDEST SWAP4 DUP7 DUP6 DUP5 DUP2 MSTORE ADD SWAP1 DUP9 DUP3 SWAP5 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 CALLDATASIZE DUP5 GT PUSH2 0x30B JUMPI SWAP5 SWAP8 SWAP5 DUP10 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x282 JUMPI POP POP POP POP PUSH0 SWAP2 JUMPDEST DUP4 MLOAD SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x270 JUMPI DUP5 LT ISZERO PUSH2 0x1DA JUMPI PUSH0 JUMPDEST PUSH2 0x115 DUP6 DUP8 MLOAD PUSH2 0x686 JUMP JUMPDEST DUP9 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1C8 JUMPI DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x146 DUP4 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD MLOAD AND PUSH1 0x1 DUP4 ADD SWAP2 DUP3 DUP5 GT PUSH2 0x1A8 JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x165 PUSH1 0x1 SWAP6 SWAP5 DUP12 PUSH2 0x6A7 JUMP JUMPDEST MLOAD MLOAD AND LT PUSH2 0x175 JUMPI JUMPDEST POP ADD PUSH2 0x10A JUMP JUMPDEST PUSH2 0x17F DUP2 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x196 PUSH2 0x18E DUP5 DUP12 PUSH2 0x6A7 JUMP JUMPDEST MLOAD SWAP2 DUP11 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH2 0x1A1 DUP3 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH0 PUSH2 0x16E JUMP JUMPDEST DUP12 PUSH1 0x11 DUP12 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP SWAP6 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xD2 JUMP JUMPDEST DUP10 PUSH1 0x11 DUP10 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 DUP2 MSTORE DUP6 MLOAD DUP2 DUP5 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP3 DUP4 DUP4 ADD SWAP3 PUSH0 SWAP1 DUP10 SWAP1 DUP13 JUMPDEST DUP6 DUP5 LT PUSH2 0x200 JUMPI DUP8 DUP8 SUB DUP9 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP9 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP8 DUP3 ADD MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x25E JUMPI DUP9 DUP5 ADD MSTORE DUP5 DUP3 ADD MLOAD AND DUP5 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE SWAP8 DUP6 ADD SWAP8 PUSH1 0x80 ADD SWAP6 SWAP5 SWAP4 PUSH1 0x1 ADD SWAP3 SWAP2 SWAP1 PUSH2 0x1F3 JUMP JUMPDEST DUP5 PUSH1 0x21 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST DUP9 PUSH1 0x11 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST PUSH1 0x80 SWAP9 SWAP6 SWAP9 SWAP1 DUP2 DUP5 CALLDATASIZE SUB SLT PUSH2 0x30B JUMPI DUP7 MLOAD SWAP2 DUP3 ADD DUP3 DUP2 LT DUP5 DUP3 GT OR PUSH2 0x30F JUMPI DUP8 MSTORE PUSH2 0x2AC DUP5 PUSH2 0x5C9 JUMP JUMPDEST DUP3 MSTORE DUP10 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x30B JUMPI DUP11 DUP4 ADD MSTORE DUP7 DUP5 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x30B JUMPI DUP8 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x30B JUMPI PUSH1 0x80 SWAP4 DUP13 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 SWAP8 SWAP5 SWAP8 PUSH2 0xC4 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP12 PUSH1 0x41 DUP12 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30B JUMPI PUSH2 0x330 CALLDATASIZE PUSH2 0x5EA JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3BA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x20 DUP4 ADD MLOAD AND SWAP1 PUSH1 0x1 DUP1 SWAP4 PUSH1 0x1 SWAP2 JUMPDEST PUSH2 0x363 JUMPI STOP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3B8 JUMPI DUP6 SWAP4 DUP5 PUSH2 0x379 DUP5 DUP5 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP7 DUP8 SWAP2 AND GT PUSH2 0x391 JUMPI DUP5 DUP1 SWAP7 SWAP3 ADD SWAP2 SWAP4 SWAP6 PUSH2 0x35D JUMP JUMPDEST DUP3 PUSH32 0x6E8F194700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x32 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x30B JUMPI PUSH2 0x3DD CALLDATASIZE PUSH2 0x5EA JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP4 MLOAD SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x546 JUMPI DUP3 LT ISZERO PUSH2 0x4EB JUMPI PUSH0 JUMPDEST PUSH2 0x423 DUP4 DUP8 MLOAD PUSH2 0x686 JUMP JUMPDEST DUP6 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x4D8 JUMPI DUP2 LT ISZERO PUSH2 0x4CD JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x454 DUP4 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND PUSH1 0x1 DUP4 ADD SWAP1 DUP2 DUP5 GT PUSH2 0x4BA JUMPI SWAP1 DUP3 SWAP2 PUSH1 0x1 SWAP5 SWAP4 PUSH2 0x473 DUP4 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND LT PUSH2 0x483 JUMPI JUMPDEST POP POP ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0x4A7 DUP3 PUSH2 0x491 DUP4 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP3 PUSH2 0x49E DUP6 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP2 DUP11 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH2 0x4B2 DUP3 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH0 DUP1 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x11 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 POP PUSH1 0x1 ADD PUSH2 0x3E0 JUMP JUMPDEST PUSH1 0x11 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 SWAP1 DUP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 SWAP1 PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP2 DUP7 MSTORE DUP5 MLOAD DUP1 SWAP4 MSTORE DUP6 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x519 JUMPI POP POP POP POP SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x59D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x59D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x30B JUMPI JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP4 ADD SLT PUSH2 0x30B JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x30B JUMPI DUP1 PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x30B JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x644 PUSH2 0x9F DUP3 PUSH2 0x5B1 JUMP JUMPDEST SWAP4 PUSH1 0x24 PUSH1 0x20 DUP7 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x30B JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x66F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 PUSH2 0x67B DUP5 PUSH2 0x5C9 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x693 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY CREATE2 0xAA 0xD7 MSTORE8 ADDRESS PUSH15 0x2D728751A97041C71608D77CF33FBD 0x4D SSTORE BALANCE MSTORE8 LOG2 BALANCE LOG2 SWAP11 STOP PREVRANDAO PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"339:842:80:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_array_contract_IERC20_dyn":{"entryPoint":1514,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":1481,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":1369,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_contract_IERC20_dyn":{"entryPoint":1457,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":1670,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_struct_TokenConfig_dyn":{"entryPoint":1703,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"604060808152600480361015610013575f80fd5b5f3560e01c8063136deb1c146103cd578063a3aef0b8146103215763bb4ad7d51461003c575f80fd5b3461030b57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030b5780359267ffffffffffffffff9081851161030b573660238601121561030b57848301356024956100a461009f836105b1565b610559565b938685848152019088829460071b8401019236841161030b579497948901915b83831061028257505050505f915b8351957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96878101908111610270578410156101da575f5b610115858751610686565b8881019081116101c8578110156101ba5773ffffffffffffffffffffffffffffffffffffffff8061014683896106a7565b51511660018301918284116101a857908291610165600195948b6106a7565b51511610610175575b500161010a565b61017f81896106a7565b519061019661018e848b6106a7565b51918a6106a7565b526101a182896106a7565b525f61016e565b8b60118b634e487b7160e01b5f52525ffd5b5095506001909201916100d2565b89601189634e487b7160e01b5f52525ffd5b805182815285518184018190529092838301925f9089908c5b8584106102005787870388f35b909192939495885173ffffffffffffffffffffffffffffffffffffffff80825116835287820151600281101561025e5788840152848201511684830152606090810151151590820152978501976080019594936001019291906101f3565b84602188634e487b7160e01b5f52525ffd5b88601188634e487b7160e01b5f52525ffd5b608098959890818436031261030b5786519182018281108482111761030f5787526102ac846105c9565b825289840135600281101561030b578a8301528684013573ffffffffffffffffffffffffffffffffffffffff8116810361030b57878301526060908185013592831515840361030b576080938c938201528152019201919794976100c4565b5f80fd5b8b60418b634e487b7160e01b5f52525ffd5b503461030b57610330366105ea565b8051156103ba5773ffffffffffffffffffffffffffffffffffffffff918260208301511690600180936001915b61036357005b80518210156103b85785938461037984846106a7565b5116968791161161039157848096920191939561035d565b827f6e8f1947000000000000000000000000000000000000000000000000000000005f525ffd5b005b603282634e487b7160e01b5f525260245ffd5b50903461030b576103dd366105ea565b915f5b8351927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848101908111610546578210156104eb575f5b610423838751610686565b8581019081116104d8578110156104cd5773ffffffffffffffffffffffffffffffffffffffff8061045483896106a7565b511660018301908184116104ba5790829160019493610473838c6106a7565b511610610483575b505001610418565b6104a782610491838c6106a7565b51169261049e858c6106a7565b5116918a6106a7565b526104b282896106a7565b525f8061047b565b601187634e487b7160e01b5f525260245ffd5b5092506001016103e0565b601185634e487b7160e01b5f525260245ffd5b84908051918291602090602080850191818652845180935285019301915f5b82811061051957505050500390f35b835173ffffffffffffffffffffffffffffffffffffffff168552869550938101939281019260010161050a565b601184634e487b7160e01b5f525260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761059d57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161059d5760051b60200190565b359073ffffffffffffffffffffffffffffffffffffffff8216820361030b57565b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261030b576004359167ffffffffffffffff831161030b578060238401121561030b57826004013561064461009f826105b1565b936024602086848152019260051b82010192831161030b57602401905b82821061066f575050505090565b83809161067b846105c9565b815201910190610661565b9190820391821161069357565b634e487b7160e01b5f52601160045260245ffd5b80518210156106bb5760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122037f5aad753306e2d728751a97041c71608d77cf33fbd4d553153a231a29a004464736f6c634300081a0033","opcodes":"PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x136DEB1C EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0xA3AEF0B8 EQ PUSH2 0x321 JUMPI PUSH4 0xBB4AD7D5 EQ PUSH2 0x3C JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x30B JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x30B JUMPI DUP1 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP6 GT PUSH2 0x30B JUMPI CALLDATASIZE PUSH1 0x23 DUP7 ADD SLT ISZERO PUSH2 0x30B JUMPI DUP5 DUP4 ADD CALLDATALOAD PUSH1 0x24 SWAP6 PUSH2 0xA4 PUSH2 0x9F DUP4 PUSH2 0x5B1 JUMP JUMPDEST PUSH2 0x559 JUMP JUMPDEST SWAP4 DUP7 DUP6 DUP5 DUP2 MSTORE ADD SWAP1 DUP9 DUP3 SWAP5 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 CALLDATASIZE DUP5 GT PUSH2 0x30B JUMPI SWAP5 SWAP8 SWAP5 DUP10 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x282 JUMPI POP POP POP POP PUSH0 SWAP2 JUMPDEST DUP4 MLOAD SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x270 JUMPI DUP5 LT ISZERO PUSH2 0x1DA JUMPI PUSH0 JUMPDEST PUSH2 0x115 DUP6 DUP8 MLOAD PUSH2 0x686 JUMP JUMPDEST DUP9 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1C8 JUMPI DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x146 DUP4 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD MLOAD AND PUSH1 0x1 DUP4 ADD SWAP2 DUP3 DUP5 GT PUSH2 0x1A8 JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x165 PUSH1 0x1 SWAP6 SWAP5 DUP12 PUSH2 0x6A7 JUMP JUMPDEST MLOAD MLOAD AND LT PUSH2 0x175 JUMPI JUMPDEST POP ADD PUSH2 0x10A JUMP JUMPDEST PUSH2 0x17F DUP2 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x196 PUSH2 0x18E DUP5 DUP12 PUSH2 0x6A7 JUMP JUMPDEST MLOAD SWAP2 DUP11 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH2 0x1A1 DUP3 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH0 PUSH2 0x16E JUMP JUMPDEST DUP12 PUSH1 0x11 DUP12 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP SWAP6 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xD2 JUMP JUMPDEST DUP10 PUSH1 0x11 DUP10 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 DUP2 MSTORE DUP6 MLOAD DUP2 DUP5 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP3 DUP4 DUP4 ADD SWAP3 PUSH0 SWAP1 DUP10 SWAP1 DUP13 JUMPDEST DUP6 DUP5 LT PUSH2 0x200 JUMPI DUP8 DUP8 SUB DUP9 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP9 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP8 DUP3 ADD MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x25E JUMPI DUP9 DUP5 ADD MSTORE DUP5 DUP3 ADD MLOAD AND DUP5 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE SWAP8 DUP6 ADD SWAP8 PUSH1 0x80 ADD SWAP6 SWAP5 SWAP4 PUSH1 0x1 ADD SWAP3 SWAP2 SWAP1 PUSH2 0x1F3 JUMP JUMPDEST DUP5 PUSH1 0x21 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST DUP9 PUSH1 0x11 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST PUSH1 0x80 SWAP9 SWAP6 SWAP9 SWAP1 DUP2 DUP5 CALLDATASIZE SUB SLT PUSH2 0x30B JUMPI DUP7 MLOAD SWAP2 DUP3 ADD DUP3 DUP2 LT DUP5 DUP3 GT OR PUSH2 0x30F JUMPI DUP8 MSTORE PUSH2 0x2AC DUP5 PUSH2 0x5C9 JUMP JUMPDEST DUP3 MSTORE DUP10 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x30B JUMPI DUP11 DUP4 ADD MSTORE DUP7 DUP5 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x30B JUMPI DUP8 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x30B JUMPI PUSH1 0x80 SWAP4 DUP13 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 SWAP8 SWAP5 SWAP8 PUSH2 0xC4 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP12 PUSH1 0x41 DUP12 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30B JUMPI PUSH2 0x330 CALLDATASIZE PUSH2 0x5EA JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3BA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x20 DUP4 ADD MLOAD AND SWAP1 PUSH1 0x1 DUP1 SWAP4 PUSH1 0x1 SWAP2 JUMPDEST PUSH2 0x363 JUMPI STOP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3B8 JUMPI DUP6 SWAP4 DUP5 PUSH2 0x379 DUP5 DUP5 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP7 DUP8 SWAP2 AND GT PUSH2 0x391 JUMPI DUP5 DUP1 SWAP7 SWAP3 ADD SWAP2 SWAP4 SWAP6 PUSH2 0x35D JUMP JUMPDEST DUP3 PUSH32 0x6E8F194700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x32 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x30B JUMPI PUSH2 0x3DD CALLDATASIZE PUSH2 0x5EA JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP4 MLOAD SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x546 JUMPI DUP3 LT ISZERO PUSH2 0x4EB JUMPI PUSH0 JUMPDEST PUSH2 0x423 DUP4 DUP8 MLOAD PUSH2 0x686 JUMP JUMPDEST DUP6 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x4D8 JUMPI DUP2 LT ISZERO PUSH2 0x4CD JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x454 DUP4 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND PUSH1 0x1 DUP4 ADD SWAP1 DUP2 DUP5 GT PUSH2 0x4BA JUMPI SWAP1 DUP3 SWAP2 PUSH1 0x1 SWAP5 SWAP4 PUSH2 0x473 DUP4 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND LT PUSH2 0x483 JUMPI JUMPDEST POP POP ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0x4A7 DUP3 PUSH2 0x491 DUP4 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP3 PUSH2 0x49E DUP6 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP2 DUP11 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH2 0x4B2 DUP3 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH0 DUP1 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x11 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 POP PUSH1 0x1 ADD PUSH2 0x3E0 JUMP JUMPDEST PUSH1 0x11 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 SWAP1 DUP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 SWAP1 PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP2 DUP7 MSTORE DUP5 MLOAD DUP1 SWAP4 MSTORE DUP6 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x519 JUMPI POP POP POP POP SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x59D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x59D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x30B JUMPI JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP4 ADD SLT PUSH2 0x30B JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x30B JUMPI DUP1 PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x30B JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x644 PUSH2 0x9F DUP3 PUSH2 0x5B1 JUMP JUMPDEST SWAP4 PUSH1 0x24 PUSH1 0x20 DUP7 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x30B JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x66F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 PUSH2 0x67B DUP5 PUSH2 0x5C9 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x693 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY CREATE2 0xAA 0xD7 MSTORE8 ADDRESS PUSH15 0x2D728751A97041C71608D77CF33FBD 0x4D SSTORE BALANCE MSTORE8 LOG2 BALANCE LOG2 SWAP11 STOP PREVRANDAO PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"339:842:80:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;761:13;;;;339:842;756:388;804:3;339:842;;;;;;;;;;;;;776:26;;;;;339:842;875:3;847:22;339:842;;;847:22;:::i;:::-;339:842;;;;;;;;843:30;;;;;339:842;902:14;;;;;:::i;:::-;;339:842;;801:1;339:842;;;;;;;;925:18;;;;801:1;925:18;;;;:::i;:::-;;339:842;;-1:-1:-1;898:222:80;;875:3;;339:842;828:13;;898:222;1066:18;;;;:::i;:::-;;1086:14;1026:75;1086:14;;;;:::i;:::-;;1026:75;;;:::i;:::-;;;;;;:::i;:::-;;898:222;;;339:842;;;;-1:-1:-1;;;339:842:80;;;;;843:30;-1:-1:-1;843:30:80;-1:-1:-1;801:1:80;339:842;;;;761:13;;339:842;;;;-1:-1:-1;;;339:842:80;;;;;776:26;339:842;;;;;;;;;;;;;;;;;;;;;776:26;;;339:842;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;801:1;339:842;;;;;;;;;;-1:-1:-1;;;339:842:80;;;;;;;;;-1:-1:-1;;;339:842:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;339:842:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3739:13:40;3751:1;3739:13;;3751:1;3734:223;3751:1;;;339:842:80;3773:3:40;339:842:80;;3754:17:40;;;;;3809:9;;;;;;;:::i;:::-;339:842:80;;;;;;3837:18:40;3833:81;;3928:18;;;3773:3;339:842:80;3739:13:40;;;;;3833:81;3882:17;;339:842:80;3882:17:40;339:842:80;3882:17:40;3754;339:842:80;;;;-1:-1:-1;;;339:842:80;;;;;;;;;;;;;;;:::i;:::-;3153:13:40;339:842:80;3191:3:40;339:842:80;;;;;;;;;;;;;3168:21:40;;;;;339:842:80;3257:3:40;3234:17;339:842:80;;;3234:17:40;:::i;:::-;339:842:80;;;;;;;;3230:25:40;;;;;339:842:80;3284:9:40;;;;;:::i;:::-;339:842:80;;3188:1:40;339:842:80;;;;;;;;3296:13:40;;;3188:1;3296:13;;;;;;:::i;:::-;339:842:80;;-1:-1:-1;3280:180:40;;3257:3;;;339:842:80;3215:13:40;;3280:180;3386:55;3416:13;;;;;:::i;:::-;339:842:80;;3431:9:40;;;;;:::i;:::-;339:842:80;;3386:55:40;;;:::i;:::-;339:842:80;3386:55:40;;;;:::i;:::-;339:842:80;3280:180:40;;;;339:842:80;;;-1:-1:-1;;;339:842:80;;;;;;3230:25:40;;;;3188:1;339:842:80;3153:13:40;;339:842:80;;;-1:-1:-1;;;339:842:80;;;;;;3168:21:40;;;339:842:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;339:842:80;;;;;;;;3188:1:40;339:842:80;;;;;;-1:-1:-1;;;339:842:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;339:842:80;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;339:842:80;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;339:842:80;;;;;;;"},"methodIdentifiers":{"ensureSortedTokens(address[])":"a3aef0b8","sortTokenConfig((address,uint8,address,bool)[])":"bb4ad7d5","sortTokens(address[])":"136deb1c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"TokensNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"ensureSortedTokens\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"name\":\"sortTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"sortTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"TokensNotSorted()\":[{\"details\":\"Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can predict the token order without having to query the Vault. (It is also legacy v2 behavior.)\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"TokensNotSorted()\":[{\"notice\":\"The tokens supplied to an array argument were not sorted in numerical order.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol\":\"InputHelpersMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol\":{\"keccak256\":\"0xe3cff486fec0d86b1feed821a1ae1d9bd69bd5c5a0a9a61f6eb8ce238637241b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f7338c0826abdde07c9de03ab44f2509582697b2a68062c66f20294bb9038ec\",\"dweb:/ipfs/QmNPZwFRhWqxbAGkZvp16r4qMLvignbgiDcZdUZtXC1MSm\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol":{"PoolFactoryMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"uint32","name":"pauseWindowDuration","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Disabled","type":"error"},{"inputs":[],"name":"IndexOutOfBounds","type":"error"},{"inputs":[],"name":"PoolPauseWindowDurationOverflow","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"createPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disable","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":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"constructorArgs","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"getDeploymentAddress","outputs":[{"internalType":"address","name":"deployAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNewPoolPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOriginalPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"getPoolsInRange","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFee","type":"uint256"},{"internalType":"uint32","name":"pauseWindowDuration","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"}],"name":"registerGeneralTestPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint32","name":"timestamp","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPoolAtTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPoolWithSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"name":"registerTestPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"name":"registerTestPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"address","name":"poolHooksContract","type":"address"}],"name":"registerTestPool","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6101203461012757601f61489838819003918201601f19168301916001600160401b0383118484101761012b578084926040948552833981010312610127578051906001600160a01b0382168203610127576020015163ffffffff9081811680820361012757306080528360a052420190814211610113578282116101045760c0521660e052610100908152604051614758918261014083396080518261179b015260a0518281816107a10152611818015260c05182610a76015260e051828181610324015261189301525181818161019c0152818161046601528181610605015281816107360152818161090501528181610b1a01528181610d0f01526111830152f35b6368755a1160e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe604060808152600480361015610013575f80fd5b5f915f358060e01c9081630e0677ab1461107e5781632f2770db14610f0a5750806344f6fec714610e1357806353a72f7e14610dfe5780635ea81a3214610c855780636634b75314610c3d578063673a2a1f1461075f57838163675d605014610abe575080636c57f5a914610a9a57806378da80cb14610a595780637a0b2e8d14610816578063851c1bb3146107c55780638d928af8146107745780638eec5d701461075f57838163a7a4b711146106c357508063aaabadc51461069157838163c7c90a51146105a257508063d396a66614610376578063db035ebc1461034c578063e9d56e19146103075763ed05beaf1461010d575f80fd5b3461030357610100600319360112610303576101276112c0565b9060243567ffffffffffffffff81116102ff5761014790369085016113e3565b61014f611306565b9360807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102fb57610182611692565b9473ffffffffffffffffffffffffffffffffffffffff91827f000000000000000000000000000000000000000000000000000000000000000016966101c5611891565b94883b156102f75761021963ffffffff9161026794878a519b7feeec802f000000000000000000000000000000000000000000000000000000008d5216908b01526101a060248b01526101a48a0190611542565b9560443560448a01521660648801525f608488015260a48701906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b166101048401526084358015158091036102f35761012484015260a4358015158091036102f35761014484015260c4358015158091036102f35761016484015260e435908115158092036102f35785948486818094829661018483015203925af19081156102ea57506102d75750f35b6102e090611329565b6102e75780f35b80fd5b513d84823e3d90fd5b5f80fd5b8980fd5b8580fd5b8480fd5b8280fd5b8382346103485781600319360112610348576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b83823461034857816003193601126103485760209063ffffffff61036e611891565b915191168152f35b503461030357610140600319360112610303576103916112c0565b9060243567ffffffffffffffff81116102ff576103b190369085016113e3565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc3601126102f35781516103e681611386565b73ffffffffffffffffffffffffffffffffffffffff9160443583811681036102f357825260643583811681036102f357602083015260843583811681036102f3578483015260a435918383168093036102f35760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261059e57837f0000000000000000000000000000000000000000000000000000000000000000169661048f611891565b94883b156102f75761052f9363ffffffff926104e39289519a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b945f60448901521660648701525f608487015260a48601906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b61010490818501526101249060c4358015158091036102f3578286015260e4358015158091036102f357610144860152358015158091036102f35761016485015235908115158092036102f35785948486818094829661018483015203925af19081156102ea57506102d75750f35b8780fd5b8084843461068d57606060031936011261068d576105be6112c0565b60243567ffffffffffffffff81116102ff576105dd90369085016113e3565b6105e56112e3565b6105ed611692565b9273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169161062e611891565b96610637611920565b95843b156102f7578996879361067a928a519b8c998a9889977feeec802f00000000000000000000000000000000000000000000000000000000895288016116b0565b03925af19081156102ea57506102d75750f35b5050fd5b83823461034857816003193601126103485760209073ffffffffffffffffffffffffffffffffffffffff61036e6117d5565b8084843461068d57608060031936011261068d576106df6112c0565b60243567ffffffffffffffff81116102ff576106fe90369085016113e3565b6107066112e3565b61070e611306565b92610717611692565b9373ffffffffffffffffffffffffffffffffffffffff809116868601527f0000000000000000000000000000000000000000000000000000000000000000169161062e611891565b83346102e75780600319360112156115f15780fd5b8382346103485781600319360112610348576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5090346103035760206003193601126103035735917fffffffff00000000000000000000000000000000000000000000000000000000831683036102e7575061080f602092611770565b9051908152f35b5082903461034857610120600319360112610348576108336112c0565b9060243567ffffffffffffffff8111610a555761085390369086016113e3565b916064359463ffffffff958681168091036102f357608435928315158094036102f35760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c3601126102f3578451976108ac89611386565b73ffffffffffffffffffffffffffffffffffffffff9160a43583811681036102f3578a5260c43583811681036102f35760208b015260e43583811681036102f357878b0152610104998a35908482168092036102f357847f000000000000000000000000000000000000000000000000000000000000000016958442160191848311610a29578b9c61093c611920565b92883b15610a25578d9a8b978d519e8f9c8d9b8c9a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a0152602489016101a090526101a4890161099091611542565b9660443560448a0152166064880152608487015260a486016109e0916040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b840152805115156101248401526020810151151561014484015288810151151561016484015260600151151561018483015203925af19081156102ea57506102d75750f35b8d80fd5b60248c60118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8380fd5b8382346103485781600319360112610348576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b83823461034857816003193601126103485760209060ff6001541690519015158152f35b8084843461068d578060031936011261068d57610ad96112c0565b60243567ffffffffffffffff81116102ff57610af890369085016113e3565b92610b01611692565b9173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691610b43611891565b90610b4c611920565b91843b156102f75760608a9793610bf6899563ffffffff610baa8d519e8f9c8d9b8c9a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b955f60448901521660648701525f608487015260a48601906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b5f61010485015280511515610124850152602081015115156101448501528981015115156101648501520151151561018483015203925af19081156102ea57506102d75750f35b8382346103485760206003193601126103485760ff8160209373ffffffffffffffffffffffffffffffffffffffff610c736112c0565b16815280855220541690519015158152f35b50903461030357816003193601126103035767ffffffffffffffff9080358281116102ff57610cb79036908301611524565b916024358181116102fb57610ccf9036908401611524565b73ffffffffffffffffffffffffffffffffffffffff93855193612de0908186019486861090861117610dd2575091610d42859492610d4f946119438739877f000000000000000000000000000000000000000000000000000000000000000016845260606020850152606084019061164f565b918781840391015261164f565b039084f08015610dc657917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc916020949316918291610d8c6118c8565b82855284865280852060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055519380a28152f35b505051903d90823e3d90fd5b8860416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83823461034857600319360112156115f15780fd5b509034610303578160031936011261030357803567ffffffffffffffff8111610a555736602382011215610a5557600b610e6d73ffffffffffffffffffffffffffffffffffffffff938360246055953693013591016114c0565b94612de095610ec560208098885194610e88838301876113a2565b818652828601916119438339828a51958693828501985180918a5e840190828201848152815193849201905e0190838201520380845201826113a2565b5190208451868101903382524687820152602435606082015260608152610eeb8161136a565b51902085519186830152868201523081520160ff815320915191168152f35b905034610a555783600319360112610a55577fffffffff00000000000000000000000000000000000000000000000000000000610f479116611770565b602073ffffffffffffffffffffffffffffffffffffffff610f666117d5565b169160648451809481937f9be2a884000000000000000000000000000000000000000000000000000000008352888301523360248301523060448301525afa9182156110755750839161103a575b50156110145750610fc36118c8565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416176001557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d508180a180f35b907f23dada53000000000000000000000000000000000000000000000000000000008152fd5b90506020813d60201161106d575b81611055602093836113a2565b8101031261030357518015158103610303575f610fb4565b3d9150611048565b513d85823e3d90fd5b5050346102f3576101606003193601126102f35761109a6112c0565b9160243567ffffffffffffffff81116102f3576110ba90369083016113e3565b906044359063ffffffff82168092036102f35760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102f35783519061110382611386565b73ffffffffffffffffffffffffffffffffffffffff9160643583811681036102f357815260843583811681036102f357602082015260a43583811681036102f3578682015260c435928084168094036102f35760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c3601126102f357807f00000000000000000000000000000000000000000000000000000000000000001695863b156102f35761123c936111f19289519a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b935f604489015260648801525f608488015260a48701906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b61010490818601526101249060e4358015158091036102f3578287015235908115158092036102f3576101449182870152358015158091036102f35761016486015235918215158093036102f357845f818094829661018483015203925af19081156112b757506112ab575080f35b6112b59150611329565b005b513d5f823e3d90fd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b6064359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b67ffffffffffffffff811161133d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff82111761133d57604052565b6060810190811067ffffffffffffffff82111761133d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761133d57604052565b81601f820112156102f357803590602067ffffffffffffffff831161133d5760409260405194611418838360051b01876113a2565b818652828087019260071b850101938185116102f3578301915b8483106114425750505050505090565b6080838303126102f3578551906114588261136a565b73ffffffffffffffffffffffffffffffffffffffff843581811681036102f35783528585013560028110156102f357868401528785013590811681036102f35787830152606090818501359283151584036102f3576080938793820152815201920191611432565b92919267ffffffffffffffff821161133d576040519161150860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846113a2565b8294818452818301116102f3578281602093845f960137010152565b9080601f830112156102f35781602061153f933591016114c0565b90565b9081518082526020808093019301915f5b828110611561575050505090565b9091929384519073ffffffffffffffffffffffffffffffffffffffff90818351168152848301519060028210156115c457600193869360809385840152604090818301511690830152606080910151151590820152019501910192919092611553565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6040519061169f82611386565b5f6040838281528260208201520152565b9461173c6101809563ffffffff6116f16060979b9a966101a073ffffffffffffffffffffffffffffffffffffffff8098168c528060208d01528b0190611542565b9a5f60408b015216868901525f608089015260a08801906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b1661010085015280511515610120850152602081015115156101408501526040810151151561016085015201511515910152565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526117cf81611386565b51902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa918215611886575f9261184d57505090565b9091506020813d60201161187e575b81611869602093836113a2565b810103126102f3575190811681036102f35790565b3d915061185c565b6040513d5f823e3d90fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81164210156118c35790565b505f90565b60ff600154166118d457565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b604051906119098261136a565b5f6060838281528260208201528260408201520152565b6119286118fc565b506119316118fc565b60016020820152600160408201529056fe6101e060408181523461048357612de0803803809161001e8286610487565b8439820190606083830312610483578251906001600160a01b03821682036104835760208481015190946001600160401b039182811161048357856100649183016104aa565b94838201518381116104835761007a92016104aa565b938251958387018781108482111761039a578452600180885281880193603160f81b85526100a7846104ff565b976101209889526100b78a610682565b956101409687528551858701209a8b60e052519020996101009a808c524660a052885190868201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528a83015260608201524660808201523060a082015260a0815260c081018181108582111761039a5789525190206080523060c0526101609488865280519183831161039a576003928354928684811c94168015610479575b88851014610465578190601f94858111610417575b5088908583116001146103b9575f926103ae575b50505f1982861b1c191690861b1783555b805193841161039a5760049586548681811c91168015610390575b8282101461037d5783811161033a575b50809285116001146102d557509383949184925f956102ca575b50501b925f19911b1c19161790555b610180913383526101a0938585526101c0958652670de0b6b3a7640000600555519561262797886107b98939608051886121c7015260a05188612293015260c05188612198015260e051886122160152518761223c015251866110560152518561108001525184818161031101528181610554015281816107e201528181610d9301528181610f84015281816114b40152818161157d015281816117430152818161190c0152818161199c015261212d01525183610ff0015251825050518181816106930152818161072a0152818161092a01528181610c6701526111920152f35b015193505f806101d9565b92919084601f198116885f52855f20955f905b898383106103205750505010610307575b50505050811b0190556101e8565b01519060f8845f19921b161c191690555f8080806102f9565b8587015189559097019694850194889350908101906102e8565b875f52815f208480880160051c820192848910610374575b0160051c019087905b8281106103695750506101bf565b5f815501879061035b565b92508192610352565b602288634e487b7160e01b5f525260245ffd5b90607f16906101af565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610183565b90889350601f19831691875f528a5f20925f5b8c82821061040157505084116103ea575b505050811b018355610194565b01515f1983881b60f8161c191690555f80806103dd565b8385015186558c979095019493840193016103cc565b909150855f52885f208580850160051c8201928b861061045c575b918a91869594930160051c01915b82811061044e57505061016f565b5f81558594508a9101610440565b92508192610432565b634e487b7160e01b5f52602260045260245ffd5b93607f169361015a565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761039a57604052565b81601f82011215610483578051906001600160401b03821161039a57604051926104de601f8401601f191660200185610487565b8284526020838301011161048357815f9260208093018386015e8301015290565b8051602090818110156105755750601f825111610537578082519201519080831061052957501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03821161039a575f54926001938481811c91168015610678575b8382101461046557601f8111610645575b5081601f84116001146105e357509282939183925f946105d8575b50501b915f199060031b1c1916175f5560ff90565b015192505f806105c3565b919083601f1981165f8052845f20945f905b8883831061062b5750505010610613575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610606565b8587015188559096019594850194879350908101906105f5565b5f805284601f845f20920160051c820191601f860160051c015b82811061066d5750506105a8565b5f815501859061065f565b90607f1690610597565b8051602090818110156106ac5750601f825111610537578082519201519080831061052957501790565b9192916001600160401b03811161039a5760019182548381811c911680156107ae575b8282101461046557601f811161077b575b5080601f831160011461071b5750819293945f92610710575b50505f19600383901b1c191690821b17905560ff90565b015190505f806106f9565b90601f19831695845f52825f20925f905b888210610764575050838596971061074c575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808061073f565b80878596829496860151815501950193019061072c565b835f5283601f835f20920160051c820191601f850160051c015b8281106107a35750506106e0565b5f8155018490610795565b90607f16906106cf56fe6080604090808252600480361015610015575f80fd5b5f9160e05f35811c91826301ffc9a714611bd25750816306fdde0314611ae2578163095ea7b314611a6457816316a0b3e0146119d557816318160ddd1461194257816323b872dd1461189a57816323de665114611868578163273c1adf1461183d57816330adf81f14611803578163313ce567146117e8578163360c340f146116ea5781633644e515146116ce5781634cfe8d1a146116b65781635687f2b814611657578163627cdcb91461162e578163641579a614611616578163654cf15d146115f4578163679aefce1461151a57816370a082311461144657816372c981861461137c5781637ecebe001461133857816381fa807c1461113557816384b0196e1461103e578163851c1bb314610fa85781638d928af814610f5857816395d89b4114610e52578163984de9e814610e04578163a9059cbb14610cfb578163aa6ca80814610c0e578163ab68e28c14610b66578163abb1dc44146108cf578163b0e2e403146107b7578163b156aa0a146106d0578163b677fa56146106cb578163ce20ece7146106cb578163d335b0cf14610638578163d505accf1461038e57508063dd62ed3e146102955763e4c43663146101d0575f80fd5b3461028d5760a060031936011261028d576101e9611c7c565b5067ffffffffffffffff6024358181116102915761020a9036908401611d4b565b9260643582811161028d576102229036908501611d4b565b5060843591821161028a5750926102786102456102869361026396369101611e69565b916102508551612004565b8151968796608088526080880190611ded565b91604435602088015286830390870152611ded565b908382036060850152611c39565b0390f35b80fd5b5080fd5b8380fd5b50913461028d578060031936011261028d5760206102b1611c7c565b60646102bb611c9f565b9573ffffffffffffffffffffffffffffffffffffffff8080988751998a9687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a575b6020925051908152f35b90506020823d60201161037b575b8161036560209383611cf2565b81010312610377576020915190610340565b5f80fd5b3d9150610358565b9051903d90823e3d90fd5b91939050346106345781600319360112610634576103aa611c7c565b916103b3611c9f565b90604435936064359160843560ff8116810361063057834211610605576104018373ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b91865160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835273ffffffffffffffffffffffffffffffffffffffff9687871695868b850152888a1660608501528b608085015260a084015260c083015260c08252810181811067ffffffffffffffff8211176105f257926104de926104d59288958b52519020610494612181565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a43592206124ac565b90929192612546565b168181036105c5575050858495969761055060209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156105bc5750610586575080f35b6020813d6020116105b4575b8161059f60209383611cf2565b8101031261028d576105b090611f4d565b5080f35b3d9150610592565b513d84823e3d90fd5b7f4b800e460000000000000000000000000000000000000000000000000000000088528852602452604486fd5b60418c634e487b7160e01b5f525260245ffd5b602488858b7f6279130200000000000000000000000000000000000000000000000000000000835252fd5b8780fd5b8280fd5b5050913461028d578160031936011261028d578051927fb45090f9000000000000000000000000000000000000000000000000000000008452309084015260208360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a576020925051908152f35b611efb565b5050913461028d578160031936011261028d578051927f535cfd8a0000000000000000000000000000000000000000000000000000000084523090840152818360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561038357809261076f575b81516020808252819061028690820186611ded565b9091503d8082853e6107818185611cf2565b83019260208185031261028d5780519167ffffffffffffffff831161028a5750926107b0916102869401611fa3565b905f61075a565b505082346103775760206003193601126103775773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691815192813560208501526020845261081a84611cc2565b803b15610377576108895f9491859285519687809481937fc80882470000000000000000000000000000000000000000000000000000000083527f546573744576656e740000000000000000000000000000000000000000000000898401528960248401526044830190611c39565b03925af180156108c55761089b578380f35b9091925067ffffffffffffffff83116108b2575052005b604190634e487b7160e01b5f525260245ffd5b82513d5f823e3d90fd5b828534610377575f6003193601126103775780517f67e0e076000000000000000000000000000000000000000000000000000000008152308382015273ffffffffffffffffffffffffffffffffffffffff916024905f8383817f000000000000000000000000000000000000000000000000000000000000000088165afa938415610b5c575f955f945f945f97610a08575b5050509061098095949392918151968796608088526080880190611e20565b6020878203818901528080875193848152019601925f905b8382106109c457898803868b015289806102868b6109b68c8c611ded565b908382036060850152611ded565b91849899506060869798600193959783975180516109e181611edd565b83528685820151168584015201511515898201520198019201899897969594929391610998565b94509450945094503d805f853e610a1f8185611cf2565b8301926080818503126103775780519367ffffffffffffffff948581116103775781610a4c918401612085565b936020808401518781116103775784019083601f8301121561037757815192610a7484611d33565b99610a8188519b8c611cf2565b848b52828b019183606080970286010194878611610377579b9c9b8401925b858410610ae95750505050505050828201518581116103775781610ac5918401611fa3565b94606083015190811161037757610adc9201611fa3565b9194929193868080610961565b86849d9e9d890312610377578951908782018d811183821017610b4a578b528451906002821015610377578f91835286860151918216820361037757828792838b950152610b388d8801611f4d565b8d8201528152019301929c9b9c610aa0565b83604186634e487b7160e01b5f52525ffd5b50513d5f823e3d90fd5b8285346103775760a060031936011261037757610b81611c7c565b5067ffffffffffffffff60443581811161037757610ba29036908501611d4b565b9160643582811161037757610bba9036908601611d4b565b5060843591821161037757610278610bdb610c019561028694369101611e69565b91610be68551612004565b81519687966024358852608060208901526080880190611ded565b9186830390870152611ded565b828534610377575f600319360112610377578051917fca4f280300000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f91610cae575b610286925051918291602083526020830190611e20565b90503d805f843e610cbf8184611cf2565b8201916020818403126103775780519267ffffffffffffffff84116103775761028693610cec9201612085565b90610c97565b513d5f823e3d90fd5b8285346103775780600319360112610377576020610d7992610d1b611c7c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca575b6020905160018152f35b6020823d602011610dfc575b81610de360209383611cf2565b8101031261037757610df6602092611f4d565b50610dc0565b3d9150610dd6565b84833461037757816003193601126103775780359067ffffffffffffffff821161037757610e3491369101611d4b565b906002602435101561037757610e4b602092612053565b9051908152f35b848334610377575f60031936011261037757815191825f8354610e7481611f15565b90818452602095600191876001821691825f14610f13575050600114610eb7575b5050506102869291610ea8910385611cf2565b51928284938452830190611c39565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610efb5750505082010181610ea8610286610e95565b8054848a018601528895508794909301928101610ee2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610ea891506102869050610e95565b8434610377575f600319360112610377576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8483346103775760206003193601126103775780357fffffffff00000000000000000000000000000000000000000000000000000000811680910361037757825160208101917f000000000000000000000000000000000000000000000000000000000000000083528482015260248152606081019281841067ffffffffffffffff8511176108b2575082602094525190208152f35b92505034610377575f6003193601126103775761107a7f00000000000000000000000000000000000000000000000000000000000000006122b9565b926110a47f00000000000000000000000000000000000000000000000000000000000000006123ee565b815192602084019084821067ffffffffffffffff8311176108b257509161111591610286949382525f845261110882519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611c39565b9186830390870152611c39565b904660608501523060808501525f60a085015283820360c0850152611ded565b92505034610377575f6003193601126103775782517ff29486a100000000000000000000000000000000000000000000000000000000815230828201526101a092838260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa93841561132e575f946111d9575b858560608282015191015182519182526020820152f35b909180939450813d8311611327575b6111f28183611cf2565b8101039281841261037757855194610140948587019167ffffffffffffffff918884108385111761131457608013610377576101c08801918211838310176108b25750875261124082611f4d565b815261124e60208301611f4d565b906101609182880152611262888401611f4d565b93610180948589015261127760608501611f4d565b9088015286526080820151602087015260a08201518787015260c082015160608701528382015164ffffffffff8116810361037757608087015261010090818301519063ffffffff8216820361037757611307956112fd9260a08a01526112f2610120986112e68a8801611f4d565b60c08c01528601611f4d565b908901528301611f4d565b9086015201611f4d565b908201525f8080806111c2565b604182634e487b7160e01b5f525260245ffd5b503d6111e8565b85513d5f823e3d90fd5b84346103775760206003193601126103775760209073ffffffffffffffffffffffffffffffffffffffff61136a611c7c565b165f5260028252805f20549051908152f35b84833461037757600319926020843601126103775781359367ffffffffffffffff851161037757843603011261037757828101356002811015610377576113c281611edd565b6113ec5750670de0b6b3a76400006113e36020936024600554910135612103565b04905b51908152f35b916024013560055490670de0b6b3a764000090818102918183041490151715611433578115611420576020935004906113e6565b601284634e487b7160e01b5f525260245ffd5b601184634e487b7160e01b5f525260245ffd5b84833461037757602091826003193601126103775782611464611c7c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610b5c575f926114eb575b5051908152f35b9091508281813d8311611513575b6115038183611cf2565b81010312610377575190836114e4565b503d6114f9565b828534610377575f60031936011261037757600654806115ea57508051917f4f037ee7000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610b5c575f906115b7575b602092509051908152f35b506020823d6020116115e2575b816115d160209383611cf2565b8101031261037757602091516115ac565b3d91506115c4565b60209250906113e6565b8434610377575f6003193601126103775760209051670de0b6b3a76400008152f35b82346103775760206003193601126103775735600555005b34610377575f60031936011261037757335f908152600260205260409020805460018101909155005b84346103775760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561168936611dab565b939194611694612116565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b82346103775760206003193601126103775735600655005b8434610377575f60031936011261037757602090610e4b612181565b828534610377575f600319360112610377578051917f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161178a575b610286925051918291602083526020830190611ded565b90503d805f843e61179b8184611cf2565b82019080838303126103775782519267ffffffffffffffff9384811161037757836117c7918301611fa3565b92602082015194851161037757610286946117e29201611fa3565b50611773565b8434610377575f600319360112610377576020905160128152f35b8434610377575f60031936011261037757602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b8434610377575f6003193601126103775760209051701d6329f1c35ca4bfabb9f56100000000008152f35b84346103775760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61168936611dab565b8285346103775760205f60846118af36611dab565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca576020905160018152f35b828534610377575f600319360112610377578051917fe4dc2aa4000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161034a576020925051908152f35b82853461037757606060031936011261037757813567ffffffffffffffff811161037757611a069036908401611d4b565b90611a3d611a20611a1684612053565b9360243590611f5a565b51670de0b6b3a7640000611a3660443586612103565b0490611f82565b918203918211611a51576020925051908152f35b601183634e487b7160e01b5f525260245ffd5b8285346103775780600319360112610377576020610d7992611a84611c7c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b8434610377575f6003193601126103775780516003549091825f611b0584611f15565b808352602094600190866001821691825f14611b92575050600114611b37575b50506102869291610ea8910385611cf2565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611b7a5750505082010181610ea8611b25565b8054848a018601528895508794909301928101611b64565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150610ea89050611b25565b83346103775760206003193601126103775735907fffffffff000000000000000000000000000000000000000000000000000000008216809203610377577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6040810190811067ffffffffffffffff821117611cde57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611cde57604052565b67ffffffffffffffff8111611cde5760051b60200190565b9080601f83011215610377576020908235611d6581611d33565b93611d736040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611d9c575050505090565b81358152908301908301611d8e565b60031960609101126103775773ffffffffffffffffffffffffffffffffffffffff90600435828116810361037757916024359081168103610377579060443590565b9081518082526020808093019301915f5b828110611e0c575050505090565b835185529381019392810192600101611dfe565b9081518082526020808093019301915f5b828110611e3f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611e31565b81601f820112156103775780359067ffffffffffffffff8211611cde5760405192611ebc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185611cf2565b8284526020838301011161037757815f926020809301838601378301015290565b60021115611ee757565b634e487b7160e01b5f52602160045260245ffd5b34610377575f6003193601126103775760206040515f8152f35b90600182811c92168015611f43575b6020831014611f2f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611f24565b5190811515820361037757565b8051821015611f6e5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b91908201809211611f8f57565b634e487b7160e01b5f52601160045260245ffd5b9080601f8301121561037757815190602091611fbe81611d33565b93611fcc6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611ff5575050505090565b81518152908301908301611fe7565b9061200e82611d33565b61201b6040519182611cf2565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120498294611d33565b0190602036910137565b5f90815b815183101561207f576120776001916120708585611f5a565b5190611f82565b920191612057565b91505090565b9080601f83011215610377578151906020916120a081611d33565b936120ae6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b8282106120d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036103775781529083019083016120c9565b81810292918115918404141715611f8f57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361215557565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612290575b156121e9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611cde5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146121c0565b60ff811461230d5760ff811690601f82116122e557604051916122db83611cc2565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f549161231f83611f15565b808352926020906001908181169081156123ab575060011461234d575b505061234a92500382611cf2565b90565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612393575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612378565b90506020935061234a9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f8061233c565b60ff81146124105760ff811690601f82116122e557604051916122db83611cc2565b506040515f8160019160015461242581611f15565b80845293602091600181169081156123ab575060011461244d57505061234a92500382611cf2565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612494575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612479565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161253b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612530575f5173ffffffffffffffffffffffffffffffffffffffff81161561252657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b6004811015611ee75780612558575050565b60018103612588577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b600281036125bc57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146125c65750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffdfea2646970667358221220031608d4fc5bbc7ccbc38dfb1adf85e117593d892ff034148dc3f4aab1e26d9864736f6c634300081a0033a26469706673582212203c8b24882ad13941716cf9ec8211685110fd8068212bf7aef715a6365744b8ba64736f6c634300081a0033","opcodes":"PUSH2 0x120 CALLVALUE PUSH2 0x127 JUMPI PUSH1 0x1F PUSH2 0x4898 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x12B JUMPI DUP1 DUP5 SWAP3 PUSH1 0x40 SWAP5 DUP6 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x127 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x127 JUMPI PUSH1 0x20 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 AND DUP1 DUP3 SUB PUSH2 0x127 JUMPI ADDRESS PUSH1 0x80 MSTORE DUP4 PUSH1 0xA0 MSTORE TIMESTAMP ADD SWAP1 DUP2 TIMESTAMP GT PUSH2 0x113 JUMPI DUP3 DUP3 GT PUSH2 0x104 JUMPI PUSH1 0xC0 MSTORE AND PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0x4758 SWAP2 DUP3 PUSH2 0x140 DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 PUSH2 0x179B ADD MSTORE PUSH1 0xA0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x7A1 ADD MSTORE PUSH2 0x1818 ADD MSTORE PUSH1 0xC0 MLOAD DUP3 PUSH2 0xA76 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x324 ADD MSTORE PUSH2 0x1893 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x19C ADD MSTORE DUP2 DUP2 PUSH2 0x466 ADD MSTORE DUP2 DUP2 PUSH2 0x605 ADD MSTORE DUP2 DUP2 PUSH2 0x736 ADD MSTORE DUP2 DUP2 PUSH2 0x905 ADD MSTORE DUP2 DUP2 PUSH2 0xB1A ADD MSTORE DUP2 DUP2 PUSH2 0xD0F ADD MSTORE PUSH2 0x1183 ADD MSTORE RETURN JUMPDEST PUSH4 0x68755A11 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH0 CALLDATALOAD DUP1 PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0xE0677AB EQ PUSH2 0x107E JUMPI DUP2 PUSH4 0x2F2770DB EQ PUSH2 0xF0A JUMPI POP DUP1 PUSH4 0x44F6FEC7 EQ PUSH2 0xE13 JUMPI DUP1 PUSH4 0x53A72F7E EQ PUSH2 0xDFE JUMPI DUP1 PUSH4 0x5EA81A32 EQ PUSH2 0xC85 JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0xC3D JUMPI DUP1 PUSH4 0x673A2A1F EQ PUSH2 0x75F JUMPI DUP4 DUP2 PUSH4 0x675D6050 EQ PUSH2 0xABE JUMPI POP DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0xA9A JUMPI DUP1 PUSH4 0x78DA80CB EQ PUSH2 0xA59 JUMPI DUP1 PUSH4 0x7A0B2E8D EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x7C5 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0x8EEC5D70 EQ PUSH2 0x75F JUMPI DUP4 DUP2 PUSH4 0xA7A4B711 EQ PUSH2 0x6C3 JUMPI POP DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x691 JUMPI DUP4 DUP2 PUSH4 0xC7C90A51 EQ PUSH2 0x5A2 JUMPI POP DUP1 PUSH4 0xD396A666 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xDB035EBC EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xE9D56E19 EQ PUSH2 0x307 JUMPI PUSH4 0xED05BEAF EQ PUSH2 0x10D JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x303 JUMPI PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH2 0x127 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x147 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1306 JUMP JUMPDEST SWAP4 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x2FB JUMPI PUSH2 0x182 PUSH2 0x1692 JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH32 0x0 AND SWAP7 PUSH2 0x1C5 PUSH2 0x1891 JUMP JUMPDEST SWAP5 DUP9 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH2 0x219 PUSH4 0xFFFFFFFF SWAP2 PUSH2 0x267 SWAP5 DUP8 DUP11 MLOAD SWAP12 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP14 MSTORE AND SWAP1 DUP12 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP12 ADD MSTORE PUSH2 0x1A4 DUP11 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP6 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE PUSH0 PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST AND PUSH2 0x104 DUP5 ADD MSTORE PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x124 DUP5 ADD MSTORE PUSH1 0xA4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 DUP5 ADD MSTORE PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP5 ADD MSTORE PUSH1 0xE4 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP6 SWAP5 DUP5 DUP7 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST PUSH2 0x2E0 SWAP1 PUSH2 0x1329 JUMP JUMPDEST PUSH2 0x2E7 JUMPI DUP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP10 DUP1 REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x36E PUSH2 0x1891 JUMP JUMPDEST SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x303 JUMPI PUSH2 0x140 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH2 0x391 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x3B1 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP2 MLOAD PUSH2 0x3E6 DUP2 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x44 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP3 MSTORE PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x84 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP5 DUP4 ADD MSTORE PUSH1 0xA4 CALLDATALOAD SWAP2 DUP4 DUP4 AND DUP1 SWAP4 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C CALLDATASIZE ADD SLT PUSH2 0x59E JUMPI DUP4 PUSH32 0x0 AND SWAP7 PUSH2 0x48F PUSH2 0x1891 JUMP JUMPDEST SWAP5 DUP9 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH2 0x52F SWAP4 PUSH4 0xFFFFFFFF SWAP3 PUSH2 0x4E3 SWAP3 DUP10 MLOAD SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP5 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x104 SWAP1 DUP2 DUP6 ADD MSTORE PUSH2 0x124 SWAP1 PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI DUP3 DUP7 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 DUP7 ADD MSTORE CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP6 ADD MSTORE CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP6 SWAP5 DUP5 DUP7 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0x5BE PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x5DD SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x12E3 JUMP JUMPDEST PUSH2 0x5ED PUSH2 0x1692 JUMP JUMPDEST SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x62E PUSH2 0x1891 JUMP JUMPDEST SWAP7 PUSH2 0x637 PUSH2 0x1920 JUMP JUMPDEST SWAP6 DUP5 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI DUP10 SWAP7 DUP8 SWAP4 PUSH2 0x67A SWAP3 DUP11 MLOAD SWAP12 DUP13 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP9 ADD PUSH2 0x16B0 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST POP POP REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x36E PUSH2 0x17D5 JUMP JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0x6DF PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x6FE SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x706 PUSH2 0x12E3 JUMP JUMPDEST PUSH2 0x70E PUSH2 0x1306 JUMP JUMPDEST SWAP3 PUSH2 0x717 PUSH2 0x1692 JUMP JUMPDEST SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND DUP7 DUP7 ADD MSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x62E PUSH2 0x1891 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x2E7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT ISZERO PUSH2 0x15F1 JUMPI DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI CALLDATALOAD SWAP2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND DUP4 SUB PUSH2 0x2E7 JUMPI POP PUSH2 0x80F PUSH1 0x20 SWAP3 PUSH2 0x1770 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x348 JUMPI PUSH2 0x120 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH2 0x833 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA55 JUMPI PUSH2 0x853 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP5 PUSH4 0xFFFFFFFF SWAP6 DUP7 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x84 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP5 MLOAD SWAP8 PUSH2 0x8AC DUP10 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0xA4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP11 MSTORE PUSH1 0xC4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP8 DUP12 ADD MSTORE PUSH2 0x104 SWAP10 DUP11 CALLDATALOAD SWAP1 DUP5 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP5 PUSH32 0x0 AND SWAP6 DUP5 TIMESTAMP AND ADD SWAP2 DUP5 DUP4 GT PUSH2 0xA29 JUMPI DUP12 SWAP13 PUSH2 0x93C PUSH2 0x1920 JUMP JUMPDEST SWAP3 DUP9 EXTCODESIZE ISZERO PUSH2 0xA25 JUMPI DUP14 SWAP11 DUP12 SWAP8 DUP14 MLOAD SWAP15 DUP16 SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH1 0x24 DUP10 ADD PUSH2 0x1A0 SWAP1 MSTORE PUSH2 0x1A4 DUP10 ADD PUSH2 0x990 SWAP2 PUSH2 0x1542 JUMP JUMPDEST SWAP7 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD PUSH2 0x9E0 SWAP2 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST DUP5 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x124 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP5 ADD MSTORE DUP9 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x164 DUP5 ADD MSTORE PUSH1 0x60 ADD MLOAD ISZERO ISZERO PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP14 DUP1 REVERT JUMPDEST PUSH1 0x24 DUP13 PUSH1 0x11 DUP11 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x1 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0xAD9 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0xAF8 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP3 PUSH2 0xB01 PUSH2 0x1692 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0xB43 PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0xB4C PUSH2 0x1920 JUMP JUMPDEST SWAP2 DUP5 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x60 DUP11 SWAP8 SWAP4 PUSH2 0xBF6 DUP10 SWAP6 PUSH4 0xFFFFFFFF PUSH2 0xBAA DUP14 MLOAD SWAP15 DUP16 SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP6 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x104 DUP6 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x124 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP6 ADD MSTORE DUP10 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x164 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0xFF DUP2 PUSH1 0x20 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xC73 PUSH2 0x12C0 JUMP JUMPDEST AND DUP2 MSTORE DUP1 DUP6 MSTORE KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0xCB7 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1524 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FB JUMPI PUSH2 0xCCF SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1524 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP6 MLOAD SWAP4 PUSH2 0x2DE0 SWAP1 DUP2 DUP7 ADD SWAP5 DUP7 DUP7 LT SWAP1 DUP7 GT OR PUSH2 0xDD2 JUMPI POP SWAP2 PUSH2 0xD42 DUP6 SWAP5 SWAP3 PUSH2 0xD4F SWAP5 PUSH2 0x1943 DUP8 CODECOPY DUP8 PUSH32 0x0 AND DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST SWAP2 DUP8 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x164F JUMP JUMPDEST SUB SWAP1 DUP5 CREATE DUP1 ISZERO PUSH2 0xDC6 JUMPI SWAP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC SWAP2 PUSH1 0x20 SWAP5 SWAP4 AND SWAP2 DUP3 SWAP2 PUSH2 0xD8C PUSH2 0x18C8 JUMP JUMPDEST DUP3 DUP6 MSTORE DUP5 DUP7 MSTORE DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE MLOAD SWAP4 DUP1 LOG2 DUP2 MSTORE RETURN JUMPDEST POP POP MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP9 PUSH1 0x41 PUSH1 0x24 SWAP3 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT ISZERO PUSH2 0x15F1 JUMPI DUP1 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA55 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xA55 JUMPI PUSH1 0xB PUSH2 0xE6D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP4 PUSH1 0x24 PUSH1 0x55 SWAP6 CALLDATASIZE SWAP4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x14C0 JUMP JUMPDEST SWAP5 PUSH2 0x2DE0 SWAP6 PUSH2 0xEC5 PUSH1 0x20 DUP1 SWAP9 DUP9 MLOAD SWAP5 PUSH2 0xE88 DUP4 DUP4 ADD DUP8 PUSH2 0x13A2 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP7 ADD SWAP2 PUSH2 0x1943 DUP4 CODECOPY DUP3 DUP11 MLOAD SWAP6 DUP7 SWAP4 DUP3 DUP6 ADD SWAP9 MLOAD DUP1 SWAP2 DUP11 MCOPY DUP5 ADD SWAP1 DUP3 DUP3 ADD DUP5 DUP2 MSTORE DUP2 MLOAD SWAP4 DUP5 SWAP3 ADD SWAP1 MCOPY ADD SWAP1 DUP4 DUP3 ADD MSTORE SUB DUP1 DUP5 MSTORE ADD DUP3 PUSH2 0x13A2 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP5 MLOAD DUP7 DUP2 ADD SWAP1 CALLER DUP3 MSTORE CHAINID DUP8 DUP3 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0xEEB DUP2 PUSH2 0x136A JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP6 MLOAD SWAP2 DUP7 DUP4 ADD MSTORE DUP7 DUP3 ADD MSTORE ADDRESS DUP2 MSTORE ADD PUSH1 0xFF DUP2 MSTORE8 KECCAK256 SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0xA55 JUMPI DUP4 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xA55 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xF47 SWAP2 AND PUSH2 0x1770 JUMP JUMPDEST PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xF66 PUSH2 0x17D5 JUMP JUMPDEST AND SWAP2 PUSH1 0x64 DUP5 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP9 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1075 JUMPI POP DUP4 SWAP2 PUSH2 0x103A JUMPI JUMPDEST POP ISZERO PUSH2 0x1014 JUMPI POP PUSH2 0xFC3 PUSH2 0x18C8 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND OR PUSH1 0x1 SSTORE PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 DUP2 DUP1 LOG1 DUP1 RETURN JUMPDEST SWAP1 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x106D JUMPI JUMPDEST DUP2 PUSH2 0x1055 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x303 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x303 JUMPI PUSH0 PUSH2 0xFB4 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1048 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP CALLVALUE PUSH2 0x2F3 JUMPI PUSH2 0x160 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI PUSH2 0x109A PUSH2 0x12C0 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2F3 JUMPI PUSH2 0x10BA SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP4 MLOAD SWAP1 PUSH2 0x1103 DUP3 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP2 MSTORE PUSH1 0x84 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP7 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP3 DUP1 DUP5 AND DUP1 SWAP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP1 PUSH32 0x0 AND SWAP6 DUP7 EXTCODESIZE ISZERO PUSH2 0x2F3 JUMPI PUSH2 0x123C SWAP4 PUSH2 0x11F1 SWAP3 DUP10 MLOAD SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP4 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE PUSH1 0x64 DUP9 ADD MSTORE PUSH0 PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x104 SWAP1 DUP2 DUP7 ADD MSTORE PUSH2 0x124 SWAP1 PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI DUP3 DUP8 ADD MSTORE CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 SWAP2 DUP3 DUP8 ADD MSTORE CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP7 ADD MSTORE CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x2F3 JUMPI DUP5 PUSH0 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x12B7 JUMPI POP PUSH2 0x12AB JUMPI POP DUP1 RETURN JUMPDEST PUSH2 0x12B5 SWAP2 POP PUSH2 0x1329 JUMP JUMPDEST STOP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2F3 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x133D JUMPI PUSH1 0x40 SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x1418 DUP4 DUP4 PUSH1 0x5 SHL ADD DUP8 PUSH2 0x13A2 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP1 DUP8 ADD SWAP3 PUSH1 0x7 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x2F3 JUMPI DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1442 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x2F3 JUMPI DUP6 MLOAD SWAP1 PUSH2 0x1458 DUP3 PUSH2 0x136A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP4 MSTORE DUP6 DUP6 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI DUP7 DUP5 ADD MSTORE DUP8 DUP6 ADD CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP8 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 SWAP4 DUP8 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1432 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x133D JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1508 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD DUP5 PUSH2 0x13A2 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2F3 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2F3 JUMPI DUP2 PUSH1 0x20 PUSH2 0x153F SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x14C0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1561 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP5 MLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 MLOAD AND DUP2 MSTORE DUP5 DUP4 ADD MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x15C4 JUMPI PUSH1 0x1 SWAP4 DUP7 SWAP4 PUSH1 0x80 SWAP4 DUP6 DUP5 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 DUP4 ADD MLOAD AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 SWAP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP2 ADD SWAP3 SWAP2 SWAP1 SWAP3 PUSH2 0x1553 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x169F DUP3 PUSH2 0x1386 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP5 PUSH2 0x173C PUSH2 0x180 SWAP6 PUSH4 0xFFFFFFFF PUSH2 0x16F1 PUSH1 0x60 SWAP8 SWAP12 SWAP11 SWAP7 PUSH2 0x1A0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP9 AND DUP13 MSTORE DUP1 PUSH1 0x20 DUP14 ADD MSTORE DUP12 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP11 PUSH0 PUSH1 0x40 DUP12 ADD MSTORE AND DUP7 DUP10 ADD MSTORE PUSH0 PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST AND PUSH2 0x100 DUP6 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x160 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x17CF DUP2 PUSH2 0x1386 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1886 JUMPI PUSH0 SWAP3 PUSH2 0x184D JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x187E JUMPI JUMPDEST DUP2 PUSH2 0x1869 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2F3 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x185C JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x18C3 JUMPI SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1 SLOAD AND PUSH2 0x18D4 JUMPI JUMP JUMPDEST PUSH32 0x75884CDA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1909 DUP3 PUSH2 0x136A JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1928 PUSH2 0x18FC JUMP JUMPDEST POP PUSH2 0x1931 PUSH2 0x18FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x40 DUP3 ADD MSTORE SWAP1 JUMP INVALID PUSH2 0x1E0 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH2 0x483 JUMPI PUSH2 0x2DE0 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1E DUP3 DUP7 PUSH2 0x487 JUMP JUMPDEST DUP5 CODECOPY DUP3 ADD SWAP1 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x483 JUMPI DUP3 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x483 JUMPI PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 DUP2 GT PUSH2 0x483 JUMPI DUP6 PUSH2 0x64 SWAP2 DUP4 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP5 DUP4 DUP3 ADD MLOAD DUP4 DUP2 GT PUSH2 0x483 JUMPI PUSH2 0x7A SWAP3 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP4 DUP3 MLOAD SWAP6 DUP4 DUP8 ADD DUP8 DUP2 LT DUP5 DUP3 GT OR PUSH2 0x39A JUMPI DUP5 MSTORE PUSH1 0x1 DUP1 DUP9 MSTORE DUP2 DUP9 ADD SWAP4 PUSH1 0x31 PUSH1 0xF8 SHL DUP6 MSTORE PUSH2 0xA7 DUP5 PUSH2 0x4FF JUMP JUMPDEST SWAP8 PUSH2 0x120 SWAP9 DUP10 MSTORE PUSH2 0xB7 DUP11 PUSH2 0x682 JUMP JUMPDEST SWAP6 PUSH2 0x140 SWAP7 DUP8 MSTORE DUP6 MLOAD DUP6 DUP8 ADD KECCAK256 SWAP11 DUP12 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 SWAP10 PUSH2 0x100 SWAP11 DUP1 DUP13 MSTORE CHAINID PUSH1 0xA0 MSTORE DUP9 MLOAD SWAP1 DUP7 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE DUP11 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR PUSH2 0x39A JUMPI DUP10 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 SWAP5 DUP9 DUP7 MSTORE DUP1 MLOAD SWAP2 DUP4 DUP4 GT PUSH2 0x39A JUMPI PUSH1 0x3 SWAP3 DUP4 SLOAD SWAP3 DUP7 DUP5 DUP2 SHR SWAP5 AND DUP1 ISZERO PUSH2 0x479 JUMPI JUMPDEST DUP9 DUP6 LT EQ PUSH2 0x465 JUMPI DUP2 SWAP1 PUSH1 0x1F SWAP5 DUP6 DUP2 GT PUSH2 0x417 JUMPI JUMPDEST POP DUP9 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x3B9 JUMPI PUSH0 SWAP3 PUSH2 0x3AE JUMPI JUMPDEST POP POP PUSH0 NOT DUP3 DUP7 SHL SHR NOT AND SWAP1 DUP7 SHL OR DUP4 SSTORE JUMPDEST DUP1 MLOAD SWAP4 DUP5 GT PUSH2 0x39A JUMPI PUSH1 0x4 SWAP6 DUP7 SLOAD DUP7 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x390 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x37D JUMPI DUP4 DUP2 GT PUSH2 0x33A JUMPI JUMPDEST POP DUP1 SWAP3 DUP6 GT PUSH1 0x1 EQ PUSH2 0x2D5 JUMPI POP SWAP4 DUP4 SWAP5 SWAP2 DUP5 SWAP3 PUSH0 SWAP6 PUSH2 0x2CA JUMPI JUMPDEST POP POP SHL SWAP3 PUSH0 NOT SWAP2 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x180 SWAP2 CALLER DUP4 MSTORE PUSH2 0x1A0 SWAP4 DUP6 DUP6 MSTORE PUSH2 0x1C0 SWAP6 DUP7 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x5 SSTORE MLOAD SWAP6 PUSH2 0x2627 SWAP8 DUP9 PUSH2 0x7B9 DUP10 CODECOPY PUSH1 0x80 MLOAD DUP9 PUSH2 0x21C7 ADD MSTORE PUSH1 0xA0 MLOAD DUP9 PUSH2 0x2293 ADD MSTORE PUSH1 0xC0 MLOAD DUP9 PUSH2 0x2198 ADD MSTORE PUSH1 0xE0 MLOAD DUP9 PUSH2 0x2216 ADD MSTORE MLOAD DUP8 PUSH2 0x223C ADD MSTORE MLOAD DUP7 PUSH2 0x1056 ADD MSTORE MLOAD DUP6 PUSH2 0x1080 ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x311 ADD MSTORE DUP2 DUP2 PUSH2 0x554 ADD MSTORE DUP2 DUP2 PUSH2 0x7E2 ADD MSTORE DUP2 DUP2 PUSH2 0xD93 ADD MSTORE DUP2 DUP2 PUSH2 0xF84 ADD MSTORE DUP2 DUP2 PUSH2 0x14B4 ADD MSTORE DUP2 DUP2 PUSH2 0x157D ADD MSTORE DUP2 DUP2 PUSH2 0x1743 ADD MSTORE DUP2 DUP2 PUSH2 0x190C ADD MSTORE DUP2 DUP2 PUSH2 0x199C ADD MSTORE PUSH2 0x212D ADD MSTORE MLOAD DUP4 PUSH2 0xFF0 ADD MSTORE MLOAD DUP3 POP POP MLOAD DUP2 DUP2 DUP2 PUSH2 0x693 ADD MSTORE DUP2 DUP2 PUSH2 0x72A ADD MSTORE DUP2 DUP2 PUSH2 0x92A ADD MSTORE DUP2 DUP2 PUSH2 0xC67 ADD MSTORE PUSH2 0x1192 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP4 POP PUSH0 DUP1 PUSH2 0x1D9 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1F NOT DUP2 AND DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP6 PUSH0 SWAP1 JUMPDEST DUP10 DUP4 DUP4 LT PUSH2 0x320 JUMPI POP POP POP LT PUSH2 0x307 JUMPI JUMPDEST POP POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x1E8 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xF8 DUP5 PUSH0 NOT SWAP3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2F9 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP10 SSTORE SWAP1 SWAP8 ADD SWAP7 SWAP5 DUP6 ADD SWAP5 DUP9 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x2E8 JUMP JUMPDEST DUP8 PUSH0 MSTORE DUP2 PUSH0 KECCAK256 DUP5 DUP1 DUP9 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP5 DUP10 LT PUSH2 0x374 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP8 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x369 JUMPI POP POP PUSH2 0x1BF JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP8 SWAP1 PUSH2 0x35B JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x352 JUMP JUMPDEST PUSH1 0x22 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x1AF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x183 JUMP JUMPDEST SWAP1 DUP9 SWAP4 POP PUSH1 0x1F NOT DUP4 AND SWAP2 DUP8 PUSH0 MSTORE DUP11 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP13 DUP3 DUP3 LT PUSH2 0x401 JUMPI POP POP DUP5 GT PUSH2 0x3EA JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP4 SSTORE PUSH2 0x194 JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP9 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x3DD JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE DUP13 SWAP8 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x3CC JUMP JUMPDEST SWAP1 SWAP2 POP DUP6 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 DUP6 DUP1 DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP12 DUP7 LT PUSH2 0x45C JUMPI JUMPDEST SWAP2 DUP11 SWAP2 DUP7 SWAP6 SWAP5 SWAP4 ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x44E JUMPI POP POP PUSH2 0x16F JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP DUP11 SWAP2 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x432 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP4 PUSH1 0x7F AND SWAP4 PUSH2 0x15A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x39A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x483 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x4DE PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x487 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x483 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x575 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x678 JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x645 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x5E3 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5D8 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x5C3 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0x62B JUMPI POP POP POP LT PUSH2 0x613 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x606 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x5F5 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x66D JUMPI POP POP PUSH2 0x5A8 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0x65F JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x597 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x6AC JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x39A JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7AE JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x77B JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x71B JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x710 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x6F9 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0x764 JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0x74C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x73F JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x72C JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x7A3 JUMPI POP POP PUSH2 0x6E0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x795 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x6CF JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP2 DUP3 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BD2 JUMPI POP DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1A64 JUMPI DUP2 PUSH4 0x16A0B3E0 EQ PUSH2 0x19D5 JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x1942 JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x189A JUMPI DUP2 PUSH4 0x23DE6651 EQ PUSH2 0x1868 JUMPI DUP2 PUSH4 0x273C1ADF EQ PUSH2 0x183D JUMPI DUP2 PUSH4 0x30ADF81F EQ PUSH2 0x1803 JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x17E8 JUMPI DUP2 PUSH4 0x360C340F EQ PUSH2 0x16EA JUMPI DUP2 PUSH4 0x3644E515 EQ PUSH2 0x16CE JUMPI DUP2 PUSH4 0x4CFE8D1A EQ PUSH2 0x16B6 JUMPI DUP2 PUSH4 0x5687F2B8 EQ PUSH2 0x1657 JUMPI DUP2 PUSH4 0x627CDCB9 EQ PUSH2 0x162E JUMPI DUP2 PUSH4 0x641579A6 EQ PUSH2 0x1616 JUMPI DUP2 PUSH4 0x654CF15D EQ PUSH2 0x15F4 JUMPI DUP2 PUSH4 0x679AEFCE EQ PUSH2 0x151A JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x1446 JUMPI DUP2 PUSH4 0x72C98186 EQ PUSH2 0x137C JUMPI DUP2 PUSH4 0x7ECEBE00 EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x81FA807C EQ PUSH2 0x1135 JUMPI DUP2 PUSH4 0x84B0196E EQ PUSH2 0x103E JUMPI DUP2 PUSH4 0x851C1BB3 EQ PUSH2 0xFA8 JUMPI DUP2 PUSH4 0x8D928AF8 EQ PUSH2 0xF58 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xE52 JUMPI DUP2 PUSH4 0x984DE9E8 EQ PUSH2 0xE04 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCFB JUMPI DUP2 PUSH4 0xAA6CA808 EQ PUSH2 0xC0E JUMPI DUP2 PUSH4 0xAB68E28C EQ PUSH2 0xB66 JUMPI DUP2 PUSH4 0xABB1DC44 EQ PUSH2 0x8CF JUMPI DUP2 PUSH4 0xB0E2E403 EQ PUSH2 0x7B7 JUMPI DUP2 PUSH4 0xB156AA0A EQ PUSH2 0x6D0 JUMPI DUP2 PUSH4 0xB677FA56 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xCE20ECE7 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xD335B0CF EQ PUSH2 0x638 JUMPI DUP2 PUSH4 0xD505ACCF EQ PUSH2 0x38E JUMPI POP DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x295 JUMPI PUSH4 0xE4C43663 EQ PUSH2 0x1D0 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x28D JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH2 0x1E9 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x291 JUMPI PUSH2 0x20A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x28D JUMPI PUSH2 0x222 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x278 PUSH2 0x245 PUSH2 0x286 SWAP4 PUSH2 0x263 SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0x250 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP9 ADD MSTORE DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH1 0x20 PUSH2 0x2B1 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x2BB PUSH2 0x1C9F JUMP JUMPDEST SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP9 DUP8 MLOAD SWAP10 DUP11 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x37B JUMPI JUMPDEST DUP2 PUSH2 0x365 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x340 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x358 JUMP JUMPDEST SWAP1 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 POP CALLVALUE PUSH2 0x634 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x634 JUMPI PUSH2 0x3AA PUSH2 0x1C7C JUMP JUMPDEST SWAP2 PUSH2 0x3B3 PUSH2 0x1C9F JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x630 JUMPI DUP4 TIMESTAMP GT PUSH2 0x605 JUMPI PUSH2 0x401 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP7 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP8 AND SWAP6 DUP7 DUP12 DUP6 ADD MSTORE DUP9 DUP11 AND PUSH1 0x60 DUP6 ADD MSTORE DUP12 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 MSTORE DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x5F2 JUMPI SWAP3 PUSH2 0x4DE SWAP3 PUSH2 0x4D5 SWAP3 DUP9 SWAP6 DUP12 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0x494 PUSH2 0x2181 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x24AC JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2546 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x5C5 JUMPI POP POP DUP6 DUP5 SWAP6 SWAP7 SWAP8 PUSH2 0x550 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x5BC JUMPI POP PUSH2 0x586 JUMPI POP DUP1 RETURN JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x5B4 JUMPI JUMPDEST DUP2 PUSH2 0x59F PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x28D JUMPI PUSH2 0x5B0 SWAP1 PUSH2 0x1F4D JUMP JUMPDEST POP DUP1 RETURN JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x592 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 DUP9 MSTORE DUP9 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP7 REVERT JUMPDEST PUSH1 0x41 DUP13 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x24 DUP9 DUP6 DUP12 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE PUSH1 0x20 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1EFB JUMP JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE DUP2 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI DUP1 SWAP3 PUSH2 0x76F JUMPI JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 ADD DUP7 PUSH2 0x1DED JUMP JUMPDEST SWAP1 SWAP2 POP RETURNDATASIZE DUP1 DUP3 DUP6 RETURNDATACOPY PUSH2 0x781 DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x20 DUP2 DUP6 SUB SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x7B0 SWAP2 PUSH2 0x286 SWAP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x75A JUMP JUMPDEST POP POP DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 DUP2 MLOAD SWAP3 DUP2 CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP5 MSTORE PUSH2 0x81A DUP5 PUSH2 0x1CC2 JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x377 JUMPI PUSH2 0x889 PUSH0 SWAP5 SWAP2 DUP6 SWAP3 DUP6 MLOAD SWAP7 DUP8 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xC808824700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH32 0x546573744576656E740000000000000000000000000000000000000000000000 DUP10 DUP5 ADD MSTORE DUP10 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x8C5 JUMPI PUSH2 0x89B JUMPI DUP4 DUP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x8B2 JUMPI POP MSTORE STOP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 SWAP1 PUSH0 DUP4 DUP4 DUP2 PUSH32 0x0 DUP9 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP6 PUSH0 SWAP5 PUSH0 SWAP5 PUSH0 SWAP8 PUSH2 0xA08 JUMPI JUMPDEST POP POP POP SWAP1 PUSH2 0x980 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x9C4 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x286 DUP12 PUSH2 0x9B6 DUP13 DUP13 PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0x9E1 DUP2 PUSH2 0x1EDD JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0x998 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xA1F DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xA4C SWAP2 DUP5 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP5 ADD MLOAD DUP8 DUP2 GT PUSH2 0x377 JUMPI DUP5 ADD SWAP1 DUP4 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP3 PUSH2 0xA74 DUP5 PUSH2 0x1D33 JUMP JUMPDEST SWAP10 PUSH2 0xA81 DUP9 MLOAD SWAP12 DUP13 PUSH2 0x1CF2 JUMP JUMPDEST DUP5 DUP12 MSTORE DUP3 DUP12 ADD SWAP2 DUP4 PUSH1 0x60 DUP1 SWAP8 MUL DUP7 ADD ADD SWAP5 DUP8 DUP7 GT PUSH2 0x377 JUMPI SWAP12 SWAP13 SWAP12 DUP5 ADD SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0xAE9 JUMPI POP POP POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xAC5 SWAP2 DUP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xADC SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 DUP1 DUP1 PUSH2 0x961 JUMP JUMPDEST DUP7 DUP5 SWAP14 SWAP15 SWAP14 DUP10 SUB SLT PUSH2 0x377 JUMPI DUP10 MLOAD SWAP1 DUP8 DUP3 ADD DUP14 DUP2 GT DUP4 DUP3 LT OR PUSH2 0xB4A JUMPI DUP12 MSTORE DUP5 MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x377 JUMPI DUP16 SWAP2 DUP4 MSTORE DUP7 DUP7 ADD MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI DUP3 DUP8 SWAP3 DUP4 DUP12 SWAP6 ADD MSTORE PUSH2 0xB38 DUP14 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST DUP14 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 SWAP13 SWAP12 SWAP13 PUSH2 0xAA0 JUMP JUMPDEST DUP4 PUSH1 0x41 DUP7 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0xB81 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBA2 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBBA SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x377 JUMPI PUSH2 0x278 PUSH2 0xBDB PUSH2 0xC01 SWAP6 PUSH2 0x286 SWAP5 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0xBE6 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x24 CALLDATALOAD DUP9 MSTORE PUSH1 0x80 PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0xCAE JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0xCBF DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP4 PUSH2 0xCEC SWAP3 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP1 PUSH2 0xC97 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0xD1B PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDFC JUMPI JUMPDEST DUP2 PUSH2 0xDE3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH2 0xDF6 PUSH1 0x20 SWAP3 PUSH2 0x1F4D JUMP JUMPDEST POP PUSH2 0xDC0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDD6 JUMP JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x377 JUMPI PUSH2 0xE34 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH1 0x2 PUSH1 0x24 CALLDATALOAD LT ISZERO PUSH2 0x377 JUMPI PUSH2 0xE4B PUSH1 0x20 SWAP3 PUSH2 0x2053 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xE74 DUP2 PUSH2 0x1F15 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xF13 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xEB7 JUMPI JUMPDEST POP POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xEFB JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x286 PUSH2 0xE95 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xEE2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0xEA8 SWAP2 POP PUSH2 0x286 SWAP1 POP PUSH2 0xE95 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x377 JUMPI DUP3 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x0 DUP4 MSTORE DUP5 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x60 DUP2 ADD SWAP3 DUP2 DUP5 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT OR PUSH2 0x8B2 JUMPI POP DUP3 PUSH1 0x20 SWAP5 MSTORE MLOAD SWAP1 KECCAK256 DUP2 MSTORE RETURN JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0x107A PUSH32 0x0 PUSH2 0x22B9 JUMP JUMPDEST SWAP3 PUSH2 0x10A4 PUSH32 0x0 PUSH2 0x23EE JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x8B2 JUMPI POP SWAP2 PUSH2 0x1115 SWAP2 PUSH2 0x286 SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x1108 DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 MLOAD PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP3 DUP4 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x132E JUMPI PUSH0 SWAP5 PUSH2 0x11D9 JUMPI JUMPDEST DUP6 DUP6 PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 DUP1 SWAP4 SWAP5 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1327 JUMPI JUMPDEST PUSH2 0x11F2 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SWAP3 DUP2 DUP5 SLT PUSH2 0x377 JUMPI DUP6 MLOAD SWAP5 PUSH2 0x140 SWAP5 DUP6 DUP8 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP9 DUP5 LT DUP4 DUP6 GT OR PUSH2 0x1314 JUMPI PUSH1 0x80 SGT PUSH2 0x377 JUMPI PUSH2 0x1C0 DUP9 ADD SWAP2 DUP3 GT DUP4 DUP4 LT OR PUSH2 0x8B2 JUMPI POP DUP8 MSTORE PUSH2 0x1240 DUP3 PUSH2 0x1F4D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x124E PUSH1 0x20 DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 PUSH2 0x160 SWAP2 DUP3 DUP9 ADD MSTORE PUSH2 0x1262 DUP9 DUP5 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP4 PUSH2 0x180 SWAP5 DUP6 DUP10 ADD MSTORE PUSH2 0x1277 PUSH1 0x60 DUP6 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP9 ADD MSTORE DUP7 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP8 DUP8 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP8 ADD MSTORE DUP4 DUP3 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0x100 SWAP1 DUP2 DUP4 ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI PUSH2 0x1307 SWAP6 PUSH2 0x12FD SWAP3 PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x12F2 PUSH2 0x120 SWAP9 PUSH2 0x12E6 DUP11 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST PUSH1 0xC0 DUP13 ADD MSTORE DUP7 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x41 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x11E8 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x136A PUSH2 0x1C7C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x3 NOT SWAP3 PUSH1 0x20 DUP5 CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT PUSH2 0x377 JUMPI DUP5 CALLDATASIZE SUB ADD SLT PUSH2 0x377 JUMPI DUP3 DUP2 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x377 JUMPI PUSH2 0x13C2 DUP2 PUSH2 0x1EDD JUMP JUMPDEST PUSH2 0x13EC JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x13E3 PUSH1 0x20 SWAP4 PUSH1 0x24 PUSH1 0x5 SLOAD SWAP2 ADD CALLDATALOAD PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP2 PUSH1 0x24 ADD CALLDATALOAD PUSH1 0x5 SLOAD SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1433 JUMPI DUP2 ISZERO PUSH2 0x1420 JUMPI PUSH1 0x20 SWAP4 POP DIV SWAP1 PUSH2 0x13E6 JUMP JUMPDEST PUSH1 0x12 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 PUSH2 0x1464 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP3 PUSH2 0x14EB JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1513 JUMPI JUMPDEST PUSH2 0x1503 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14E4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F9 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x6 SLOAD DUP1 PUSH2 0x15EA JUMPI POP DUP1 MLOAD SWAP2 PUSH32 0x4F037EE700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP1 PUSH2 0x15B7 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x15E2 JUMPI JUMPDEST DUP2 PUSH2 0x15D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD PUSH2 0x15AC JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x15C4 JUMP JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0x13E6 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x5 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x1694 PUSH2 0x2116 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x6 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE4B PUSH2 0x2181 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x178A JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x179B DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP1 DUP1 DUP4 DUP4 SUB SLT PUSH2 0x377 JUMPI DUP3 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x377 JUMPI DUP4 PUSH2 0x17C7 SWAP2 DUP4 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP5 DUP6 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP5 PUSH2 0x17E2 SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST POP PUSH2 0x1773 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x18AF CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x377 JUMPI PUSH2 0x1A06 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH2 0x1A3D PUSH2 0x1A20 PUSH2 0x1A16 DUP5 PUSH2 0x2053 JUMP JUMPDEST SWAP4 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1F5A JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A36 PUSH1 0x44 CALLDATALOAD DUP7 PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP2 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1A51 JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x11 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0x1A84 PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1B05 DUP5 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x1B92 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1B37 JUMPI JUMPDEST POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1B7A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x1B25 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0xEA8 SWAP1 POP PUSH2 0x1B25 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x377 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1CDE JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1D65 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1D73 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1D9C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1D8E JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E0C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1DFE JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E3F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1E31 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1CDE JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1EBC PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x377 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x1EE7 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1F43 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1F2F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1F24 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1F6E JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x1FBE DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1FCC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1FF5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1FE7 JUMP JUMPDEST SWAP1 PUSH2 0x200E DUP3 PUSH2 0x1D33 JUMP JUMPDEST PUSH2 0x201B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x2049 DUP3 SWAP5 PUSH2 0x1D33 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH0 SWAP1 DUP2 JUMPDEST DUP2 MLOAD DUP4 LT ISZERO PUSH2 0x207F JUMPI PUSH2 0x2077 PUSH1 0x1 SWAP2 PUSH2 0x2070 DUP6 DUP6 PUSH2 0x1F5A JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x2057 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x20A0 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x20AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x20D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x20C9 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2155 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x2290 JUMPI JUMPDEST ISZERO PUSH2 0x21E9 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x21C0 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x230D JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x231F DUP4 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x234D JUMPI JUMPDEST POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2393 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2378 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x234A SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2410 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2425 DUP2 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x244D JUMPI POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2494 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2479 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x253B JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x2530 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2526 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x1EE7 JUMPI DUP1 PUSH2 0x2558 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2588 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x25BC JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x25C6 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB AND ADDMOD 0xD4 0xFC JUMPDEST 0xBC PUSH29 0xCBC38DFB1ADF85E117593D892FF034148DC3F4AAB1E26D9864736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY DUP12 0x24 DUP9 0x2A 0xD1 CODECOPY COINBASE PUSH18 0x6CF9EC8211685110FD8068212BF7AEF715A6 CALLDATASIZE JUMPI PREVRANDAO 0xB8 0xBA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"636:6646:81:-:0;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;-1:-1:-1;;;;;636:6646:81;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;636:6646:81;;;;;;;;;;;;;;;;;;;978:4:63;1347:46:35;;998:14:63;;;1461:15:39;636:6646:81;1461:15:39;;;636:6646:81;;;1513:35:39;;;1509:106;;1625:42;;636:6646:81;1735:53:39;;1155:14:81;;;;636:6646;;;;;;;;1347:46:35;636:6646:81;;;;;998:14:63;636:6646:81;;;;;;;;;;1625:42:39;636:6646:81;;;;;1735:53:39;636:6646:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:106:39;1571:33;;;-1:-1:-1;1571:33:39;;-1:-1:-1;1571:33:39;636:6646:81;;;;-1:-1:-1;636:6646:81;;;;;-1:-1:-1;636:6646:81;;-1:-1:-1;636:6646:81;;;;;;-1:-1:-1;636:6646:81;;;;;-1:-1:-1;636:6646:81"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":4835,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_8134":{"entryPoint":4800,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_8152":{"entryPoint":4870,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_struct_TokenConfig_dyn":{"entryPoint":5091,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":5312,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_string":{"entryPoint":5412,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_array_struct_TokenConfig_dyn_uint256_uint32_bool_struct_PoolRoleAccounts_address_struct_LiquidityManagement":{"entryPoint":5808,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_array_struct_TokenConfig_dyn":{"entryPoint":5442,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":5711,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolRoleAccounts":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_struct_struct_LiquidityManagement":{"entryPoint":6396,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_PoolRoleAccounts":{"entryPoint":5778,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":5026,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_8139":{"entryPoint":4905,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_8170":{"entryPoint":4970,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_8171":{"entryPoint":4998,"id":null,"parameterSlots":1,"returnSlots":0},"fun_ensureEnabled":{"entryPoint":6344,"id":31997,"parameterSlots":0,"returnSlots":0},"fun_getActionId":{"entryPoint":6000,"id":5316,"parameterSlots":1,"returnSlots":1},"fun_getAuthorizer":{"entryPoint":6101,"id":18883,"parameterSlots":0,"returnSlots":1},"fun_getDefaultLiquidityManagement":{"entryPoint":6432,"id":31848,"parameterSlots":0,"returnSlots":1},"fun_getNewPoolPauseWindowEndTime":{"entryPoint":6289,"id":5576,"parameterSlots":0,"returnSlots":1},"fun_getPoolsInRange":{"entryPoint":5617,"id":31897,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"5256":[{"length":32,"start":6043}],"5505":[{"length":32,"start":2678}],"5507":[{"length":32,"start":804},{"length":32,"start":6291}],"18834":[{"length":32,"start":1953},{"length":32,"start":6168}],"31517":[{"length":32,"start":412},{"length":32,"start":1126},{"length":32,"start":1541},{"length":32,"start":1846},{"length":32,"start":2309},{"length":32,"start":2842},{"length":32,"start":3343},{"length":32,"start":4483}]},"linkReferences":{},"object":"604060808152600480361015610013575f80fd5b5f915f358060e01c9081630e0677ab1461107e5781632f2770db14610f0a5750806344f6fec714610e1357806353a72f7e14610dfe5780635ea81a3214610c855780636634b75314610c3d578063673a2a1f1461075f57838163675d605014610abe575080636c57f5a914610a9a57806378da80cb14610a595780637a0b2e8d14610816578063851c1bb3146107c55780638d928af8146107745780638eec5d701461075f57838163a7a4b711146106c357508063aaabadc51461069157838163c7c90a51146105a257508063d396a66614610376578063db035ebc1461034c578063e9d56e19146103075763ed05beaf1461010d575f80fd5b3461030357610100600319360112610303576101276112c0565b9060243567ffffffffffffffff81116102ff5761014790369085016113e3565b61014f611306565b9360807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102fb57610182611692565b9473ffffffffffffffffffffffffffffffffffffffff91827f000000000000000000000000000000000000000000000000000000000000000016966101c5611891565b94883b156102f75761021963ffffffff9161026794878a519b7feeec802f000000000000000000000000000000000000000000000000000000008d5216908b01526101a060248b01526101a48a0190611542565b9560443560448a01521660648801525f608488015260a48701906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b166101048401526084358015158091036102f35761012484015260a4358015158091036102f35761014484015260c4358015158091036102f35761016484015260e435908115158092036102f35785948486818094829661018483015203925af19081156102ea57506102d75750f35b6102e090611329565b6102e75780f35b80fd5b513d84823e3d90fd5b5f80fd5b8980fd5b8580fd5b8480fd5b8280fd5b8382346103485781600319360112610348576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b83823461034857816003193601126103485760209063ffffffff61036e611891565b915191168152f35b503461030357610140600319360112610303576103916112c0565b9060243567ffffffffffffffff81116102ff576103b190369085016113e3565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc3601126102f35781516103e681611386565b73ffffffffffffffffffffffffffffffffffffffff9160443583811681036102f357825260643583811681036102f357602083015260843583811681036102f3578483015260a435918383168093036102f35760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261059e57837f0000000000000000000000000000000000000000000000000000000000000000169661048f611891565b94883b156102f75761052f9363ffffffff926104e39289519a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b945f60448901521660648701525f608487015260a48601906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b61010490818501526101249060c4358015158091036102f3578286015260e4358015158091036102f357610144860152358015158091036102f35761016485015235908115158092036102f35785948486818094829661018483015203925af19081156102ea57506102d75750f35b8780fd5b8084843461068d57606060031936011261068d576105be6112c0565b60243567ffffffffffffffff81116102ff576105dd90369085016113e3565b6105e56112e3565b6105ed611692565b9273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169161062e611891565b96610637611920565b95843b156102f7578996879361067a928a519b8c998a9889977feeec802f00000000000000000000000000000000000000000000000000000000895288016116b0565b03925af19081156102ea57506102d75750f35b5050fd5b83823461034857816003193601126103485760209073ffffffffffffffffffffffffffffffffffffffff61036e6117d5565b8084843461068d57608060031936011261068d576106df6112c0565b60243567ffffffffffffffff81116102ff576106fe90369085016113e3565b6107066112e3565b61070e611306565b92610717611692565b9373ffffffffffffffffffffffffffffffffffffffff809116868601527f0000000000000000000000000000000000000000000000000000000000000000169161062e611891565b83346102e75780600319360112156115f15780fd5b8382346103485781600319360112610348576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5090346103035760206003193601126103035735917fffffffff00000000000000000000000000000000000000000000000000000000831683036102e7575061080f602092611770565b9051908152f35b5082903461034857610120600319360112610348576108336112c0565b9060243567ffffffffffffffff8111610a555761085390369086016113e3565b916064359463ffffffff958681168091036102f357608435928315158094036102f35760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c3601126102f3578451976108ac89611386565b73ffffffffffffffffffffffffffffffffffffffff9160a43583811681036102f3578a5260c43583811681036102f35760208b015260e43583811681036102f357878b0152610104998a35908482168092036102f357847f000000000000000000000000000000000000000000000000000000000000000016958442160191848311610a29578b9c61093c611920565b92883b15610a25578d9a8b978d519e8f9c8d9b8c9a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a0152602489016101a090526101a4890161099091611542565b9660443560448a0152166064880152608487015260a486016109e0916040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b840152805115156101248401526020810151151561014484015288810151151561016484015260600151151561018483015203925af19081156102ea57506102d75750f35b8d80fd5b60248c60118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8380fd5b8382346103485781600319360112610348576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b83823461034857816003193601126103485760209060ff6001541690519015158152f35b8084843461068d578060031936011261068d57610ad96112c0565b60243567ffffffffffffffff81116102ff57610af890369085016113e3565b92610b01611692565b9173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691610b43611891565b90610b4c611920565b91843b156102f75760608a9793610bf6899563ffffffff610baa8d519e8f9c8d9b8c9a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b955f60448901521660648701525f608487015260a48601906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b5f61010485015280511515610124850152602081015115156101448501528981015115156101648501520151151561018483015203925af19081156102ea57506102d75750f35b8382346103485760206003193601126103485760ff8160209373ffffffffffffffffffffffffffffffffffffffff610c736112c0565b16815280855220541690519015158152f35b50903461030357816003193601126103035767ffffffffffffffff9080358281116102ff57610cb79036908301611524565b916024358181116102fb57610ccf9036908401611524565b73ffffffffffffffffffffffffffffffffffffffff93855193612de0908186019486861090861117610dd2575091610d42859492610d4f946119438739877f000000000000000000000000000000000000000000000000000000000000000016845260606020850152606084019061164f565b918781840391015261164f565b039084f08015610dc657917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc916020949316918291610d8c6118c8565b82855284865280852060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055519380a28152f35b505051903d90823e3d90fd5b8860416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83823461034857600319360112156115f15780fd5b509034610303578160031936011261030357803567ffffffffffffffff8111610a555736602382011215610a5557600b610e6d73ffffffffffffffffffffffffffffffffffffffff938360246055953693013591016114c0565b94612de095610ec560208098885194610e88838301876113a2565b818652828601916119438339828a51958693828501985180918a5e840190828201848152815193849201905e0190838201520380845201826113a2565b5190208451868101903382524687820152602435606082015260608152610eeb8161136a565b51902085519186830152868201523081520160ff815320915191168152f35b905034610a555783600319360112610a55577fffffffff00000000000000000000000000000000000000000000000000000000610f479116611770565b602073ffffffffffffffffffffffffffffffffffffffff610f666117d5565b169160648451809481937f9be2a884000000000000000000000000000000000000000000000000000000008352888301523360248301523060448301525afa9182156110755750839161103a575b50156110145750610fc36118c8565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416176001557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d508180a180f35b907f23dada53000000000000000000000000000000000000000000000000000000008152fd5b90506020813d60201161106d575b81611055602093836113a2565b8101031261030357518015158103610303575f610fb4565b3d9150611048565b513d85823e3d90fd5b5050346102f3576101606003193601126102f35761109a6112c0565b9160243567ffffffffffffffff81116102f3576110ba90369083016113e3565b906044359063ffffffff82168092036102f35760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102f35783519061110382611386565b73ffffffffffffffffffffffffffffffffffffffff9160643583811681036102f357815260843583811681036102f357602082015260a43583811681036102f3578682015260c435928084168094036102f35760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c3601126102f357807f00000000000000000000000000000000000000000000000000000000000000001695863b156102f35761123c936111f19289519a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b935f604489015260648801525f608488015260a48701906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b61010490818601526101249060e4358015158091036102f3578287015235908115158092036102f3576101449182870152358015158091036102f35761016486015235918215158093036102f357845f818094829661018483015203925af19081156112b757506112ab575080f35b6112b59150611329565b005b513d5f823e3d90fd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b6064359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b67ffffffffffffffff811161133d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff82111761133d57604052565b6060810190811067ffffffffffffffff82111761133d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761133d57604052565b81601f820112156102f357803590602067ffffffffffffffff831161133d5760409260405194611418838360051b01876113a2565b818652828087019260071b850101938185116102f3578301915b8483106114425750505050505090565b6080838303126102f3578551906114588261136a565b73ffffffffffffffffffffffffffffffffffffffff843581811681036102f35783528585013560028110156102f357868401528785013590811681036102f35787830152606090818501359283151584036102f3576080938793820152815201920191611432565b92919267ffffffffffffffff821161133d576040519161150860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846113a2565b8294818452818301116102f3578281602093845f960137010152565b9080601f830112156102f35781602061153f933591016114c0565b90565b9081518082526020808093019301915f5b828110611561575050505090565b9091929384519073ffffffffffffffffffffffffffffffffffffffff90818351168152848301519060028210156115c457600193869360809385840152604090818301511690830152606080910151151590820152019501910192919092611553565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6040519061169f82611386565b5f6040838281528260208201520152565b9461173c6101809563ffffffff6116f16060979b9a966101a073ffffffffffffffffffffffffffffffffffffffff8098168c528060208d01528b0190611542565b9a5f60408b015216868901525f608089015260a08801906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b1661010085015280511515610120850152602081015115156101408501526040810151151561016085015201511515910152565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526117cf81611386565b51902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa918215611886575f9261184d57505090565b9091506020813d60201161187e575b81611869602093836113a2565b810103126102f3575190811681036102f35790565b3d915061185c565b6040513d5f823e3d90fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81164210156118c35790565b505f90565b60ff600154166118d457565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b604051906119098261136a565b5f6060838281528260208201528260408201520152565b6119286118fc565b506119316118fc565b60016020820152600160408201529056fe6101e060408181523461048357612de0803803809161001e8286610487565b8439820190606083830312610483578251906001600160a01b03821682036104835760208481015190946001600160401b039182811161048357856100649183016104aa565b94838201518381116104835761007a92016104aa565b938251958387018781108482111761039a578452600180885281880193603160f81b85526100a7846104ff565b976101209889526100b78a610682565b956101409687528551858701209a8b60e052519020996101009a808c524660a052885190868201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528a83015260608201524660808201523060a082015260a0815260c081018181108582111761039a5789525190206080523060c0526101609488865280519183831161039a576003928354928684811c94168015610479575b88851014610465578190601f94858111610417575b5088908583116001146103b9575f926103ae575b50505f1982861b1c191690861b1783555b805193841161039a5760049586548681811c91168015610390575b8282101461037d5783811161033a575b50809285116001146102d557509383949184925f956102ca575b50501b925f19911b1c19161790555b610180913383526101a0938585526101c0958652670de0b6b3a7640000600555519561262797886107b98939608051886121c7015260a05188612293015260c05188612198015260e051886122160152518761223c015251866110560152518561108001525184818161031101528181610554015281816107e201528181610d9301528181610f84015281816114b40152818161157d015281816117430152818161190c0152818161199c015261212d01525183610ff0015251825050518181816106930152818161072a0152818161092a01528181610c6701526111920152f35b015193505f806101d9565b92919084601f198116885f52855f20955f905b898383106103205750505010610307575b50505050811b0190556101e8565b01519060f8845f19921b161c191690555f8080806102f9565b8587015189559097019694850194889350908101906102e8565b875f52815f208480880160051c820192848910610374575b0160051c019087905b8281106103695750506101bf565b5f815501879061035b565b92508192610352565b602288634e487b7160e01b5f525260245ffd5b90607f16906101af565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610183565b90889350601f19831691875f528a5f20925f5b8c82821061040157505084116103ea575b505050811b018355610194565b01515f1983881b60f8161c191690555f80806103dd565b8385015186558c979095019493840193016103cc565b909150855f52885f208580850160051c8201928b861061045c575b918a91869594930160051c01915b82811061044e57505061016f565b5f81558594508a9101610440565b92508192610432565b634e487b7160e01b5f52602260045260245ffd5b93607f169361015a565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761039a57604052565b81601f82011215610483578051906001600160401b03821161039a57604051926104de601f8401601f191660200185610487565b8284526020838301011161048357815f9260208093018386015e8301015290565b8051602090818110156105755750601f825111610537578082519201519080831061052957501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03821161039a575f54926001938481811c91168015610678575b8382101461046557601f8111610645575b5081601f84116001146105e357509282939183925f946105d8575b50501b915f199060031b1c1916175f5560ff90565b015192505f806105c3565b919083601f1981165f8052845f20945f905b8883831061062b5750505010610613575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610606565b8587015188559096019594850194879350908101906105f5565b5f805284601f845f20920160051c820191601f860160051c015b82811061066d5750506105a8565b5f815501859061065f565b90607f1690610597565b8051602090818110156106ac5750601f825111610537578082519201519080831061052957501790565b9192916001600160401b03811161039a5760019182548381811c911680156107ae575b8282101461046557601f811161077b575b5080601f831160011461071b5750819293945f92610710575b50505f19600383901b1c191690821b17905560ff90565b015190505f806106f9565b90601f19831695845f52825f20925f905b888210610764575050838596971061074c575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808061073f565b80878596829496860151815501950193019061072c565b835f5283601f835f20920160051c820191601f850160051c015b8281106107a35750506106e0565b5f8155018490610795565b90607f16906106cf56fe6080604090808252600480361015610015575f80fd5b5f9160e05f35811c91826301ffc9a714611bd25750816306fdde0314611ae2578163095ea7b314611a6457816316a0b3e0146119d557816318160ddd1461194257816323b872dd1461189a57816323de665114611868578163273c1adf1461183d57816330adf81f14611803578163313ce567146117e8578163360c340f146116ea5781633644e515146116ce5781634cfe8d1a146116b65781635687f2b814611657578163627cdcb91461162e578163641579a614611616578163654cf15d146115f4578163679aefce1461151a57816370a082311461144657816372c981861461137c5781637ecebe001461133857816381fa807c1461113557816384b0196e1461103e578163851c1bb314610fa85781638d928af814610f5857816395d89b4114610e52578163984de9e814610e04578163a9059cbb14610cfb578163aa6ca80814610c0e578163ab68e28c14610b66578163abb1dc44146108cf578163b0e2e403146107b7578163b156aa0a146106d0578163b677fa56146106cb578163ce20ece7146106cb578163d335b0cf14610638578163d505accf1461038e57508063dd62ed3e146102955763e4c43663146101d0575f80fd5b3461028d5760a060031936011261028d576101e9611c7c565b5067ffffffffffffffff6024358181116102915761020a9036908401611d4b565b9260643582811161028d576102229036908501611d4b565b5060843591821161028a5750926102786102456102869361026396369101611e69565b916102508551612004565b8151968796608088526080880190611ded565b91604435602088015286830390870152611ded565b908382036060850152611c39565b0390f35b80fd5b5080fd5b8380fd5b50913461028d578060031936011261028d5760206102b1611c7c565b60646102bb611c9f565b9573ffffffffffffffffffffffffffffffffffffffff8080988751998a9687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a575b6020925051908152f35b90506020823d60201161037b575b8161036560209383611cf2565b81010312610377576020915190610340565b5f80fd5b3d9150610358565b9051903d90823e3d90fd5b91939050346106345781600319360112610634576103aa611c7c565b916103b3611c9f565b90604435936064359160843560ff8116810361063057834211610605576104018373ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b91865160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835273ffffffffffffffffffffffffffffffffffffffff9687871695868b850152888a1660608501528b608085015260a084015260c083015260c08252810181811067ffffffffffffffff8211176105f257926104de926104d59288958b52519020610494612181565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a43592206124ac565b90929192612546565b168181036105c5575050858495969761055060209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156105bc5750610586575080f35b6020813d6020116105b4575b8161059f60209383611cf2565b8101031261028d576105b090611f4d565b5080f35b3d9150610592565b513d84823e3d90fd5b7f4b800e460000000000000000000000000000000000000000000000000000000088528852602452604486fd5b60418c634e487b7160e01b5f525260245ffd5b602488858b7f6279130200000000000000000000000000000000000000000000000000000000835252fd5b8780fd5b8280fd5b5050913461028d578160031936011261028d578051927fb45090f9000000000000000000000000000000000000000000000000000000008452309084015260208360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a576020925051908152f35b611efb565b5050913461028d578160031936011261028d578051927f535cfd8a0000000000000000000000000000000000000000000000000000000084523090840152818360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561038357809261076f575b81516020808252819061028690820186611ded565b9091503d8082853e6107818185611cf2565b83019260208185031261028d5780519167ffffffffffffffff831161028a5750926107b0916102869401611fa3565b905f61075a565b505082346103775760206003193601126103775773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691815192813560208501526020845261081a84611cc2565b803b15610377576108895f9491859285519687809481937fc80882470000000000000000000000000000000000000000000000000000000083527f546573744576656e740000000000000000000000000000000000000000000000898401528960248401526044830190611c39565b03925af180156108c55761089b578380f35b9091925067ffffffffffffffff83116108b2575052005b604190634e487b7160e01b5f525260245ffd5b82513d5f823e3d90fd5b828534610377575f6003193601126103775780517f67e0e076000000000000000000000000000000000000000000000000000000008152308382015273ffffffffffffffffffffffffffffffffffffffff916024905f8383817f000000000000000000000000000000000000000000000000000000000000000088165afa938415610b5c575f955f945f945f97610a08575b5050509061098095949392918151968796608088526080880190611e20565b6020878203818901528080875193848152019601925f905b8382106109c457898803868b015289806102868b6109b68c8c611ded565b908382036060850152611ded565b91849899506060869798600193959783975180516109e181611edd565b83528685820151168584015201511515898201520198019201899897969594929391610998565b94509450945094503d805f853e610a1f8185611cf2565b8301926080818503126103775780519367ffffffffffffffff948581116103775781610a4c918401612085565b936020808401518781116103775784019083601f8301121561037757815192610a7484611d33565b99610a8188519b8c611cf2565b848b52828b019183606080970286010194878611610377579b9c9b8401925b858410610ae95750505050505050828201518581116103775781610ac5918401611fa3565b94606083015190811161037757610adc9201611fa3565b9194929193868080610961565b86849d9e9d890312610377578951908782018d811183821017610b4a578b528451906002821015610377578f91835286860151918216820361037757828792838b950152610b388d8801611f4d565b8d8201528152019301929c9b9c610aa0565b83604186634e487b7160e01b5f52525ffd5b50513d5f823e3d90fd5b8285346103775760a060031936011261037757610b81611c7c565b5067ffffffffffffffff60443581811161037757610ba29036908501611d4b565b9160643582811161037757610bba9036908601611d4b565b5060843591821161037757610278610bdb610c019561028694369101611e69565b91610be68551612004565b81519687966024358852608060208901526080880190611ded565b9186830390870152611ded565b828534610377575f600319360112610377578051917fca4f280300000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f91610cae575b610286925051918291602083526020830190611e20565b90503d805f843e610cbf8184611cf2565b8201916020818403126103775780519267ffffffffffffffff84116103775761028693610cec9201612085565b90610c97565b513d5f823e3d90fd5b8285346103775780600319360112610377576020610d7992610d1b611c7c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca575b6020905160018152f35b6020823d602011610dfc575b81610de360209383611cf2565b8101031261037757610df6602092611f4d565b50610dc0565b3d9150610dd6565b84833461037757816003193601126103775780359067ffffffffffffffff821161037757610e3491369101611d4b565b906002602435101561037757610e4b602092612053565b9051908152f35b848334610377575f60031936011261037757815191825f8354610e7481611f15565b90818452602095600191876001821691825f14610f13575050600114610eb7575b5050506102869291610ea8910385611cf2565b51928284938452830190611c39565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610efb5750505082010181610ea8610286610e95565b8054848a018601528895508794909301928101610ee2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610ea891506102869050610e95565b8434610377575f600319360112610377576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8483346103775760206003193601126103775780357fffffffff00000000000000000000000000000000000000000000000000000000811680910361037757825160208101917f000000000000000000000000000000000000000000000000000000000000000083528482015260248152606081019281841067ffffffffffffffff8511176108b2575082602094525190208152f35b92505034610377575f6003193601126103775761107a7f00000000000000000000000000000000000000000000000000000000000000006122b9565b926110a47f00000000000000000000000000000000000000000000000000000000000000006123ee565b815192602084019084821067ffffffffffffffff8311176108b257509161111591610286949382525f845261110882519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611c39565b9186830390870152611c39565b904660608501523060808501525f60a085015283820360c0850152611ded565b92505034610377575f6003193601126103775782517ff29486a100000000000000000000000000000000000000000000000000000000815230828201526101a092838260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa93841561132e575f946111d9575b858560608282015191015182519182526020820152f35b909180939450813d8311611327575b6111f28183611cf2565b8101039281841261037757855194610140948587019167ffffffffffffffff918884108385111761131457608013610377576101c08801918211838310176108b25750875261124082611f4d565b815261124e60208301611f4d565b906101609182880152611262888401611f4d565b93610180948589015261127760608501611f4d565b9088015286526080820151602087015260a08201518787015260c082015160608701528382015164ffffffffff8116810361037757608087015261010090818301519063ffffffff8216820361037757611307956112fd9260a08a01526112f2610120986112e68a8801611f4d565b60c08c01528601611f4d565b908901528301611f4d565b9086015201611f4d565b908201525f8080806111c2565b604182634e487b7160e01b5f525260245ffd5b503d6111e8565b85513d5f823e3d90fd5b84346103775760206003193601126103775760209073ffffffffffffffffffffffffffffffffffffffff61136a611c7c565b165f5260028252805f20549051908152f35b84833461037757600319926020843601126103775781359367ffffffffffffffff851161037757843603011261037757828101356002811015610377576113c281611edd565b6113ec5750670de0b6b3a76400006113e36020936024600554910135612103565b04905b51908152f35b916024013560055490670de0b6b3a764000090818102918183041490151715611433578115611420576020935004906113e6565b601284634e487b7160e01b5f525260245ffd5b601184634e487b7160e01b5f525260245ffd5b84833461037757602091826003193601126103775782611464611c7c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610b5c575f926114eb575b5051908152f35b9091508281813d8311611513575b6115038183611cf2565b81010312610377575190836114e4565b503d6114f9565b828534610377575f60031936011261037757600654806115ea57508051917f4f037ee7000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610b5c575f906115b7575b602092509051908152f35b506020823d6020116115e2575b816115d160209383611cf2565b8101031261037757602091516115ac565b3d91506115c4565b60209250906113e6565b8434610377575f6003193601126103775760209051670de0b6b3a76400008152f35b82346103775760206003193601126103775735600555005b34610377575f60031936011261037757335f908152600260205260409020805460018101909155005b84346103775760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561168936611dab565b939194611694612116565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b82346103775760206003193601126103775735600655005b8434610377575f60031936011261037757602090610e4b612181565b828534610377575f600319360112610377578051917f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161178a575b610286925051918291602083526020830190611ded565b90503d805f843e61179b8184611cf2565b82019080838303126103775782519267ffffffffffffffff9384811161037757836117c7918301611fa3565b92602082015194851161037757610286946117e29201611fa3565b50611773565b8434610377575f600319360112610377576020905160128152f35b8434610377575f60031936011261037757602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b8434610377575f6003193601126103775760209051701d6329f1c35ca4bfabb9f56100000000008152f35b84346103775760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61168936611dab565b8285346103775760205f60846118af36611dab565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca576020905160018152f35b828534610377575f600319360112610377578051917fe4dc2aa4000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161034a576020925051908152f35b82853461037757606060031936011261037757813567ffffffffffffffff811161037757611a069036908401611d4b565b90611a3d611a20611a1684612053565b9360243590611f5a565b51670de0b6b3a7640000611a3660443586612103565b0490611f82565b918203918211611a51576020925051908152f35b601183634e487b7160e01b5f525260245ffd5b8285346103775780600319360112610377576020610d7992611a84611c7c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b8434610377575f6003193601126103775780516003549091825f611b0584611f15565b808352602094600190866001821691825f14611b92575050600114611b37575b50506102869291610ea8910385611cf2565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611b7a5750505082010181610ea8611b25565b8054848a018601528895508794909301928101611b64565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150610ea89050611b25565b83346103775760206003193601126103775735907fffffffff000000000000000000000000000000000000000000000000000000008216809203610377577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6040810190811067ffffffffffffffff821117611cde57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611cde57604052565b67ffffffffffffffff8111611cde5760051b60200190565b9080601f83011215610377576020908235611d6581611d33565b93611d736040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611d9c575050505090565b81358152908301908301611d8e565b60031960609101126103775773ffffffffffffffffffffffffffffffffffffffff90600435828116810361037757916024359081168103610377579060443590565b9081518082526020808093019301915f5b828110611e0c575050505090565b835185529381019392810192600101611dfe565b9081518082526020808093019301915f5b828110611e3f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611e31565b81601f820112156103775780359067ffffffffffffffff8211611cde5760405192611ebc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185611cf2565b8284526020838301011161037757815f926020809301838601378301015290565b60021115611ee757565b634e487b7160e01b5f52602160045260245ffd5b34610377575f6003193601126103775760206040515f8152f35b90600182811c92168015611f43575b6020831014611f2f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611f24565b5190811515820361037757565b8051821015611f6e5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b91908201809211611f8f57565b634e487b7160e01b5f52601160045260245ffd5b9080601f8301121561037757815190602091611fbe81611d33565b93611fcc6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611ff5575050505090565b81518152908301908301611fe7565b9061200e82611d33565b61201b6040519182611cf2565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120498294611d33565b0190602036910137565b5f90815b815183101561207f576120776001916120708585611f5a565b5190611f82565b920191612057565b91505090565b9080601f83011215610377578151906020916120a081611d33565b936120ae6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b8282106120d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036103775781529083019083016120c9565b81810292918115918404141715611f8f57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361215557565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612290575b156121e9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611cde5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146121c0565b60ff811461230d5760ff811690601f82116122e557604051916122db83611cc2565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f549161231f83611f15565b808352926020906001908181169081156123ab575060011461234d575b505061234a92500382611cf2565b90565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612393575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612378565b90506020935061234a9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f8061233c565b60ff81146124105760ff811690601f82116122e557604051916122db83611cc2565b506040515f8160019160015461242581611f15565b80845293602091600181169081156123ab575060011461244d57505061234a92500382611cf2565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612494575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612479565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161253b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612530575f5173ffffffffffffffffffffffffffffffffffffffff81161561252657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b6004811015611ee75780612558575050565b60018103612588577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b600281036125bc57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146125c65750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffdfea2646970667358221220031608d4fc5bbc7ccbc38dfb1adf85e117593d892ff034148dc3f4aab1e26d9864736f6c634300081a0033a26469706673582212203c8b24882ad13941716cf9ec8211685110fd8068212bf7aef715a6365744b8ba64736f6c634300081a0033","opcodes":"PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH0 CALLDATALOAD DUP1 PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0xE0677AB EQ PUSH2 0x107E JUMPI DUP2 PUSH4 0x2F2770DB EQ PUSH2 0xF0A JUMPI POP DUP1 PUSH4 0x44F6FEC7 EQ PUSH2 0xE13 JUMPI DUP1 PUSH4 0x53A72F7E EQ PUSH2 0xDFE JUMPI DUP1 PUSH4 0x5EA81A32 EQ PUSH2 0xC85 JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0xC3D JUMPI DUP1 PUSH4 0x673A2A1F EQ PUSH2 0x75F JUMPI DUP4 DUP2 PUSH4 0x675D6050 EQ PUSH2 0xABE JUMPI POP DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0xA9A JUMPI DUP1 PUSH4 0x78DA80CB EQ PUSH2 0xA59 JUMPI DUP1 PUSH4 0x7A0B2E8D EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x7C5 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0x8EEC5D70 EQ PUSH2 0x75F JUMPI DUP4 DUP2 PUSH4 0xA7A4B711 EQ PUSH2 0x6C3 JUMPI POP DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x691 JUMPI DUP4 DUP2 PUSH4 0xC7C90A51 EQ PUSH2 0x5A2 JUMPI POP DUP1 PUSH4 0xD396A666 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xDB035EBC EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xE9D56E19 EQ PUSH2 0x307 JUMPI PUSH4 0xED05BEAF EQ PUSH2 0x10D JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x303 JUMPI PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH2 0x127 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x147 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1306 JUMP JUMPDEST SWAP4 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x2FB JUMPI PUSH2 0x182 PUSH2 0x1692 JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH32 0x0 AND SWAP7 PUSH2 0x1C5 PUSH2 0x1891 JUMP JUMPDEST SWAP5 DUP9 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH2 0x219 PUSH4 0xFFFFFFFF SWAP2 PUSH2 0x267 SWAP5 DUP8 DUP11 MLOAD SWAP12 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP14 MSTORE AND SWAP1 DUP12 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP12 ADD MSTORE PUSH2 0x1A4 DUP11 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP6 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE PUSH0 PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST AND PUSH2 0x104 DUP5 ADD MSTORE PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x124 DUP5 ADD MSTORE PUSH1 0xA4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 DUP5 ADD MSTORE PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP5 ADD MSTORE PUSH1 0xE4 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP6 SWAP5 DUP5 DUP7 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST PUSH2 0x2E0 SWAP1 PUSH2 0x1329 JUMP JUMPDEST PUSH2 0x2E7 JUMPI DUP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP10 DUP1 REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x36E PUSH2 0x1891 JUMP JUMPDEST SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x303 JUMPI PUSH2 0x140 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH2 0x391 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x3B1 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP2 MLOAD PUSH2 0x3E6 DUP2 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x44 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP3 MSTORE PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x84 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP5 DUP4 ADD MSTORE PUSH1 0xA4 CALLDATALOAD SWAP2 DUP4 DUP4 AND DUP1 SWAP4 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C CALLDATASIZE ADD SLT PUSH2 0x59E JUMPI DUP4 PUSH32 0x0 AND SWAP7 PUSH2 0x48F PUSH2 0x1891 JUMP JUMPDEST SWAP5 DUP9 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH2 0x52F SWAP4 PUSH4 0xFFFFFFFF SWAP3 PUSH2 0x4E3 SWAP3 DUP10 MLOAD SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP5 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x104 SWAP1 DUP2 DUP6 ADD MSTORE PUSH2 0x124 SWAP1 PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI DUP3 DUP7 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 DUP7 ADD MSTORE CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP6 ADD MSTORE CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP6 SWAP5 DUP5 DUP7 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0x5BE PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x5DD SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x12E3 JUMP JUMPDEST PUSH2 0x5ED PUSH2 0x1692 JUMP JUMPDEST SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x62E PUSH2 0x1891 JUMP JUMPDEST SWAP7 PUSH2 0x637 PUSH2 0x1920 JUMP JUMPDEST SWAP6 DUP5 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI DUP10 SWAP7 DUP8 SWAP4 PUSH2 0x67A SWAP3 DUP11 MLOAD SWAP12 DUP13 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP9 ADD PUSH2 0x16B0 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST POP POP REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x36E PUSH2 0x17D5 JUMP JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0x6DF PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x6FE SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x706 PUSH2 0x12E3 JUMP JUMPDEST PUSH2 0x70E PUSH2 0x1306 JUMP JUMPDEST SWAP3 PUSH2 0x717 PUSH2 0x1692 JUMP JUMPDEST SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND DUP7 DUP7 ADD MSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x62E PUSH2 0x1891 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x2E7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT ISZERO PUSH2 0x15F1 JUMPI DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI CALLDATALOAD SWAP2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND DUP4 SUB PUSH2 0x2E7 JUMPI POP PUSH2 0x80F PUSH1 0x20 SWAP3 PUSH2 0x1770 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x348 JUMPI PUSH2 0x120 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH2 0x833 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA55 JUMPI PUSH2 0x853 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP5 PUSH4 0xFFFFFFFF SWAP6 DUP7 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x84 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP5 MLOAD SWAP8 PUSH2 0x8AC DUP10 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0xA4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP11 MSTORE PUSH1 0xC4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP8 DUP12 ADD MSTORE PUSH2 0x104 SWAP10 DUP11 CALLDATALOAD SWAP1 DUP5 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP5 PUSH32 0x0 AND SWAP6 DUP5 TIMESTAMP AND ADD SWAP2 DUP5 DUP4 GT PUSH2 0xA29 JUMPI DUP12 SWAP13 PUSH2 0x93C PUSH2 0x1920 JUMP JUMPDEST SWAP3 DUP9 EXTCODESIZE ISZERO PUSH2 0xA25 JUMPI DUP14 SWAP11 DUP12 SWAP8 DUP14 MLOAD SWAP15 DUP16 SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH1 0x24 DUP10 ADD PUSH2 0x1A0 SWAP1 MSTORE PUSH2 0x1A4 DUP10 ADD PUSH2 0x990 SWAP2 PUSH2 0x1542 JUMP JUMPDEST SWAP7 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD PUSH2 0x9E0 SWAP2 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST DUP5 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x124 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP5 ADD MSTORE DUP9 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x164 DUP5 ADD MSTORE PUSH1 0x60 ADD MLOAD ISZERO ISZERO PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP14 DUP1 REVERT JUMPDEST PUSH1 0x24 DUP13 PUSH1 0x11 DUP11 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x1 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0xAD9 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0xAF8 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP3 PUSH2 0xB01 PUSH2 0x1692 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0xB43 PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0xB4C PUSH2 0x1920 JUMP JUMPDEST SWAP2 DUP5 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x60 DUP11 SWAP8 SWAP4 PUSH2 0xBF6 DUP10 SWAP6 PUSH4 0xFFFFFFFF PUSH2 0xBAA DUP14 MLOAD SWAP15 DUP16 SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP6 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x104 DUP6 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x124 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP6 ADD MSTORE DUP10 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x164 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0xFF DUP2 PUSH1 0x20 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xC73 PUSH2 0x12C0 JUMP JUMPDEST AND DUP2 MSTORE DUP1 DUP6 MSTORE KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0xCB7 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1524 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FB JUMPI PUSH2 0xCCF SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1524 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP6 MLOAD SWAP4 PUSH2 0x2DE0 SWAP1 DUP2 DUP7 ADD SWAP5 DUP7 DUP7 LT SWAP1 DUP7 GT OR PUSH2 0xDD2 JUMPI POP SWAP2 PUSH2 0xD42 DUP6 SWAP5 SWAP3 PUSH2 0xD4F SWAP5 PUSH2 0x1943 DUP8 CODECOPY DUP8 PUSH32 0x0 AND DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST SWAP2 DUP8 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x164F JUMP JUMPDEST SUB SWAP1 DUP5 CREATE DUP1 ISZERO PUSH2 0xDC6 JUMPI SWAP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC SWAP2 PUSH1 0x20 SWAP5 SWAP4 AND SWAP2 DUP3 SWAP2 PUSH2 0xD8C PUSH2 0x18C8 JUMP JUMPDEST DUP3 DUP6 MSTORE DUP5 DUP7 MSTORE DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE MLOAD SWAP4 DUP1 LOG2 DUP2 MSTORE RETURN JUMPDEST POP POP MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP9 PUSH1 0x41 PUSH1 0x24 SWAP3 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT ISZERO PUSH2 0x15F1 JUMPI DUP1 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA55 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xA55 JUMPI PUSH1 0xB PUSH2 0xE6D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP4 PUSH1 0x24 PUSH1 0x55 SWAP6 CALLDATASIZE SWAP4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x14C0 JUMP JUMPDEST SWAP5 PUSH2 0x2DE0 SWAP6 PUSH2 0xEC5 PUSH1 0x20 DUP1 SWAP9 DUP9 MLOAD SWAP5 PUSH2 0xE88 DUP4 DUP4 ADD DUP8 PUSH2 0x13A2 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP7 ADD SWAP2 PUSH2 0x1943 DUP4 CODECOPY DUP3 DUP11 MLOAD SWAP6 DUP7 SWAP4 DUP3 DUP6 ADD SWAP9 MLOAD DUP1 SWAP2 DUP11 MCOPY DUP5 ADD SWAP1 DUP3 DUP3 ADD DUP5 DUP2 MSTORE DUP2 MLOAD SWAP4 DUP5 SWAP3 ADD SWAP1 MCOPY ADD SWAP1 DUP4 DUP3 ADD MSTORE SUB DUP1 DUP5 MSTORE ADD DUP3 PUSH2 0x13A2 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP5 MLOAD DUP7 DUP2 ADD SWAP1 CALLER DUP3 MSTORE CHAINID DUP8 DUP3 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0xEEB DUP2 PUSH2 0x136A JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP6 MLOAD SWAP2 DUP7 DUP4 ADD MSTORE DUP7 DUP3 ADD MSTORE ADDRESS DUP2 MSTORE ADD PUSH1 0xFF DUP2 MSTORE8 KECCAK256 SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0xA55 JUMPI DUP4 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xA55 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xF47 SWAP2 AND PUSH2 0x1770 JUMP JUMPDEST PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xF66 PUSH2 0x17D5 JUMP JUMPDEST AND SWAP2 PUSH1 0x64 DUP5 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP9 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1075 JUMPI POP DUP4 SWAP2 PUSH2 0x103A JUMPI JUMPDEST POP ISZERO PUSH2 0x1014 JUMPI POP PUSH2 0xFC3 PUSH2 0x18C8 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND OR PUSH1 0x1 SSTORE PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 DUP2 DUP1 LOG1 DUP1 RETURN JUMPDEST SWAP1 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x106D JUMPI JUMPDEST DUP2 PUSH2 0x1055 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x303 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x303 JUMPI PUSH0 PUSH2 0xFB4 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1048 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP CALLVALUE PUSH2 0x2F3 JUMPI PUSH2 0x160 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI PUSH2 0x109A PUSH2 0x12C0 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2F3 JUMPI PUSH2 0x10BA SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP4 MLOAD SWAP1 PUSH2 0x1103 DUP3 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP2 MSTORE PUSH1 0x84 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP7 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP3 DUP1 DUP5 AND DUP1 SWAP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP1 PUSH32 0x0 AND SWAP6 DUP7 EXTCODESIZE ISZERO PUSH2 0x2F3 JUMPI PUSH2 0x123C SWAP4 PUSH2 0x11F1 SWAP3 DUP10 MLOAD SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP4 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE PUSH1 0x64 DUP9 ADD MSTORE PUSH0 PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x104 SWAP1 DUP2 DUP7 ADD MSTORE PUSH2 0x124 SWAP1 PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI DUP3 DUP8 ADD MSTORE CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 SWAP2 DUP3 DUP8 ADD MSTORE CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP7 ADD MSTORE CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x2F3 JUMPI DUP5 PUSH0 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x12B7 JUMPI POP PUSH2 0x12AB JUMPI POP DUP1 RETURN JUMPDEST PUSH2 0x12B5 SWAP2 POP PUSH2 0x1329 JUMP JUMPDEST STOP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2F3 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x133D JUMPI PUSH1 0x40 SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x1418 DUP4 DUP4 PUSH1 0x5 SHL ADD DUP8 PUSH2 0x13A2 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP1 DUP8 ADD SWAP3 PUSH1 0x7 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x2F3 JUMPI DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1442 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x2F3 JUMPI DUP6 MLOAD SWAP1 PUSH2 0x1458 DUP3 PUSH2 0x136A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP4 MSTORE DUP6 DUP6 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI DUP7 DUP5 ADD MSTORE DUP8 DUP6 ADD CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP8 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 SWAP4 DUP8 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1432 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x133D JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1508 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD DUP5 PUSH2 0x13A2 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2F3 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2F3 JUMPI DUP2 PUSH1 0x20 PUSH2 0x153F SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x14C0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1561 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP5 MLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 MLOAD AND DUP2 MSTORE DUP5 DUP4 ADD MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x15C4 JUMPI PUSH1 0x1 SWAP4 DUP7 SWAP4 PUSH1 0x80 SWAP4 DUP6 DUP5 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 DUP4 ADD MLOAD AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 SWAP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP2 ADD SWAP3 SWAP2 SWAP1 SWAP3 PUSH2 0x1553 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x169F DUP3 PUSH2 0x1386 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP5 PUSH2 0x173C PUSH2 0x180 SWAP6 PUSH4 0xFFFFFFFF PUSH2 0x16F1 PUSH1 0x60 SWAP8 SWAP12 SWAP11 SWAP7 PUSH2 0x1A0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP9 AND DUP13 MSTORE DUP1 PUSH1 0x20 DUP14 ADD MSTORE DUP12 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP11 PUSH0 PUSH1 0x40 DUP12 ADD MSTORE AND DUP7 DUP10 ADD MSTORE PUSH0 PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST AND PUSH2 0x100 DUP6 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x160 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x17CF DUP2 PUSH2 0x1386 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1886 JUMPI PUSH0 SWAP3 PUSH2 0x184D JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x187E JUMPI JUMPDEST DUP2 PUSH2 0x1869 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2F3 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x185C JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x18C3 JUMPI SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1 SLOAD AND PUSH2 0x18D4 JUMPI JUMP JUMPDEST PUSH32 0x75884CDA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1909 DUP3 PUSH2 0x136A JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1928 PUSH2 0x18FC JUMP JUMPDEST POP PUSH2 0x1931 PUSH2 0x18FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x40 DUP3 ADD MSTORE SWAP1 JUMP INVALID PUSH2 0x1E0 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH2 0x483 JUMPI PUSH2 0x2DE0 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1E DUP3 DUP7 PUSH2 0x487 JUMP JUMPDEST DUP5 CODECOPY DUP3 ADD SWAP1 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x483 JUMPI DUP3 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x483 JUMPI PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 DUP2 GT PUSH2 0x483 JUMPI DUP6 PUSH2 0x64 SWAP2 DUP4 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP5 DUP4 DUP3 ADD MLOAD DUP4 DUP2 GT PUSH2 0x483 JUMPI PUSH2 0x7A SWAP3 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP4 DUP3 MLOAD SWAP6 DUP4 DUP8 ADD DUP8 DUP2 LT DUP5 DUP3 GT OR PUSH2 0x39A JUMPI DUP5 MSTORE PUSH1 0x1 DUP1 DUP9 MSTORE DUP2 DUP9 ADD SWAP4 PUSH1 0x31 PUSH1 0xF8 SHL DUP6 MSTORE PUSH2 0xA7 DUP5 PUSH2 0x4FF JUMP JUMPDEST SWAP8 PUSH2 0x120 SWAP9 DUP10 MSTORE PUSH2 0xB7 DUP11 PUSH2 0x682 JUMP JUMPDEST SWAP6 PUSH2 0x140 SWAP7 DUP8 MSTORE DUP6 MLOAD DUP6 DUP8 ADD KECCAK256 SWAP11 DUP12 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 SWAP10 PUSH2 0x100 SWAP11 DUP1 DUP13 MSTORE CHAINID PUSH1 0xA0 MSTORE DUP9 MLOAD SWAP1 DUP7 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE DUP11 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR PUSH2 0x39A JUMPI DUP10 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 SWAP5 DUP9 DUP7 MSTORE DUP1 MLOAD SWAP2 DUP4 DUP4 GT PUSH2 0x39A JUMPI PUSH1 0x3 SWAP3 DUP4 SLOAD SWAP3 DUP7 DUP5 DUP2 SHR SWAP5 AND DUP1 ISZERO PUSH2 0x479 JUMPI JUMPDEST DUP9 DUP6 LT EQ PUSH2 0x465 JUMPI DUP2 SWAP1 PUSH1 0x1F SWAP5 DUP6 DUP2 GT PUSH2 0x417 JUMPI JUMPDEST POP DUP9 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x3B9 JUMPI PUSH0 SWAP3 PUSH2 0x3AE JUMPI JUMPDEST POP POP PUSH0 NOT DUP3 DUP7 SHL SHR NOT AND SWAP1 DUP7 SHL OR DUP4 SSTORE JUMPDEST DUP1 MLOAD SWAP4 DUP5 GT PUSH2 0x39A JUMPI PUSH1 0x4 SWAP6 DUP7 SLOAD DUP7 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x390 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x37D JUMPI DUP4 DUP2 GT PUSH2 0x33A JUMPI JUMPDEST POP DUP1 SWAP3 DUP6 GT PUSH1 0x1 EQ PUSH2 0x2D5 JUMPI POP SWAP4 DUP4 SWAP5 SWAP2 DUP5 SWAP3 PUSH0 SWAP6 PUSH2 0x2CA JUMPI JUMPDEST POP POP SHL SWAP3 PUSH0 NOT SWAP2 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x180 SWAP2 CALLER DUP4 MSTORE PUSH2 0x1A0 SWAP4 DUP6 DUP6 MSTORE PUSH2 0x1C0 SWAP6 DUP7 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x5 SSTORE MLOAD SWAP6 PUSH2 0x2627 SWAP8 DUP9 PUSH2 0x7B9 DUP10 CODECOPY PUSH1 0x80 MLOAD DUP9 PUSH2 0x21C7 ADD MSTORE PUSH1 0xA0 MLOAD DUP9 PUSH2 0x2293 ADD MSTORE PUSH1 0xC0 MLOAD DUP9 PUSH2 0x2198 ADD MSTORE PUSH1 0xE0 MLOAD DUP9 PUSH2 0x2216 ADD MSTORE MLOAD DUP8 PUSH2 0x223C ADD MSTORE MLOAD DUP7 PUSH2 0x1056 ADD MSTORE MLOAD DUP6 PUSH2 0x1080 ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x311 ADD MSTORE DUP2 DUP2 PUSH2 0x554 ADD MSTORE DUP2 DUP2 PUSH2 0x7E2 ADD MSTORE DUP2 DUP2 PUSH2 0xD93 ADD MSTORE DUP2 DUP2 PUSH2 0xF84 ADD MSTORE DUP2 DUP2 PUSH2 0x14B4 ADD MSTORE DUP2 DUP2 PUSH2 0x157D ADD MSTORE DUP2 DUP2 PUSH2 0x1743 ADD MSTORE DUP2 DUP2 PUSH2 0x190C ADD MSTORE DUP2 DUP2 PUSH2 0x199C ADD MSTORE PUSH2 0x212D ADD MSTORE MLOAD DUP4 PUSH2 0xFF0 ADD MSTORE MLOAD DUP3 POP POP MLOAD DUP2 DUP2 DUP2 PUSH2 0x693 ADD MSTORE DUP2 DUP2 PUSH2 0x72A ADD MSTORE DUP2 DUP2 PUSH2 0x92A ADD MSTORE DUP2 DUP2 PUSH2 0xC67 ADD MSTORE PUSH2 0x1192 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP4 POP PUSH0 DUP1 PUSH2 0x1D9 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1F NOT DUP2 AND DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP6 PUSH0 SWAP1 JUMPDEST DUP10 DUP4 DUP4 LT PUSH2 0x320 JUMPI POP POP POP LT PUSH2 0x307 JUMPI JUMPDEST POP POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x1E8 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xF8 DUP5 PUSH0 NOT SWAP3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2F9 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP10 SSTORE SWAP1 SWAP8 ADD SWAP7 SWAP5 DUP6 ADD SWAP5 DUP9 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x2E8 JUMP JUMPDEST DUP8 PUSH0 MSTORE DUP2 PUSH0 KECCAK256 DUP5 DUP1 DUP9 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP5 DUP10 LT PUSH2 0x374 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP8 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x369 JUMPI POP POP PUSH2 0x1BF JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP8 SWAP1 PUSH2 0x35B JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x352 JUMP JUMPDEST PUSH1 0x22 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x1AF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x183 JUMP JUMPDEST SWAP1 DUP9 SWAP4 POP PUSH1 0x1F NOT DUP4 AND SWAP2 DUP8 PUSH0 MSTORE DUP11 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP13 DUP3 DUP3 LT PUSH2 0x401 JUMPI POP POP DUP5 GT PUSH2 0x3EA JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP4 SSTORE PUSH2 0x194 JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP9 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x3DD JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE DUP13 SWAP8 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x3CC JUMP JUMPDEST SWAP1 SWAP2 POP DUP6 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 DUP6 DUP1 DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP12 DUP7 LT PUSH2 0x45C JUMPI JUMPDEST SWAP2 DUP11 SWAP2 DUP7 SWAP6 SWAP5 SWAP4 ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x44E JUMPI POP POP PUSH2 0x16F JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP DUP11 SWAP2 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x432 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP4 PUSH1 0x7F AND SWAP4 PUSH2 0x15A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x39A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x483 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x4DE PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x487 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x483 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x575 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x678 JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x645 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x5E3 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5D8 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x5C3 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0x62B JUMPI POP POP POP LT PUSH2 0x613 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x606 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x5F5 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x66D JUMPI POP POP PUSH2 0x5A8 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0x65F JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x597 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x6AC JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x39A JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7AE JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x77B JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x71B JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x710 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x6F9 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0x764 JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0x74C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x73F JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x72C JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x7A3 JUMPI POP POP PUSH2 0x6E0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x795 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x6CF JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP2 DUP3 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BD2 JUMPI POP DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1A64 JUMPI DUP2 PUSH4 0x16A0B3E0 EQ PUSH2 0x19D5 JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x1942 JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x189A JUMPI DUP2 PUSH4 0x23DE6651 EQ PUSH2 0x1868 JUMPI DUP2 PUSH4 0x273C1ADF EQ PUSH2 0x183D JUMPI DUP2 PUSH4 0x30ADF81F EQ PUSH2 0x1803 JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x17E8 JUMPI DUP2 PUSH4 0x360C340F EQ PUSH2 0x16EA JUMPI DUP2 PUSH4 0x3644E515 EQ PUSH2 0x16CE JUMPI DUP2 PUSH4 0x4CFE8D1A EQ PUSH2 0x16B6 JUMPI DUP2 PUSH4 0x5687F2B8 EQ PUSH2 0x1657 JUMPI DUP2 PUSH4 0x627CDCB9 EQ PUSH2 0x162E JUMPI DUP2 PUSH4 0x641579A6 EQ PUSH2 0x1616 JUMPI DUP2 PUSH4 0x654CF15D EQ PUSH2 0x15F4 JUMPI DUP2 PUSH4 0x679AEFCE EQ PUSH2 0x151A JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x1446 JUMPI DUP2 PUSH4 0x72C98186 EQ PUSH2 0x137C JUMPI DUP2 PUSH4 0x7ECEBE00 EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x81FA807C EQ PUSH2 0x1135 JUMPI DUP2 PUSH4 0x84B0196E EQ PUSH2 0x103E JUMPI DUP2 PUSH4 0x851C1BB3 EQ PUSH2 0xFA8 JUMPI DUP2 PUSH4 0x8D928AF8 EQ PUSH2 0xF58 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xE52 JUMPI DUP2 PUSH4 0x984DE9E8 EQ PUSH2 0xE04 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCFB JUMPI DUP2 PUSH4 0xAA6CA808 EQ PUSH2 0xC0E JUMPI DUP2 PUSH4 0xAB68E28C EQ PUSH2 0xB66 JUMPI DUP2 PUSH4 0xABB1DC44 EQ PUSH2 0x8CF JUMPI DUP2 PUSH4 0xB0E2E403 EQ PUSH2 0x7B7 JUMPI DUP2 PUSH4 0xB156AA0A EQ PUSH2 0x6D0 JUMPI DUP2 PUSH4 0xB677FA56 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xCE20ECE7 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xD335B0CF EQ PUSH2 0x638 JUMPI DUP2 PUSH4 0xD505ACCF EQ PUSH2 0x38E JUMPI POP DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x295 JUMPI PUSH4 0xE4C43663 EQ PUSH2 0x1D0 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x28D JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH2 0x1E9 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x291 JUMPI PUSH2 0x20A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x28D JUMPI PUSH2 0x222 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x278 PUSH2 0x245 PUSH2 0x286 SWAP4 PUSH2 0x263 SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0x250 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP9 ADD MSTORE DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH1 0x20 PUSH2 0x2B1 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x2BB PUSH2 0x1C9F JUMP JUMPDEST SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP9 DUP8 MLOAD SWAP10 DUP11 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x37B JUMPI JUMPDEST DUP2 PUSH2 0x365 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x340 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x358 JUMP JUMPDEST SWAP1 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 POP CALLVALUE PUSH2 0x634 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x634 JUMPI PUSH2 0x3AA PUSH2 0x1C7C JUMP JUMPDEST SWAP2 PUSH2 0x3B3 PUSH2 0x1C9F JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x630 JUMPI DUP4 TIMESTAMP GT PUSH2 0x605 JUMPI PUSH2 0x401 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP7 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP8 AND SWAP6 DUP7 DUP12 DUP6 ADD MSTORE DUP9 DUP11 AND PUSH1 0x60 DUP6 ADD MSTORE DUP12 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 MSTORE DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x5F2 JUMPI SWAP3 PUSH2 0x4DE SWAP3 PUSH2 0x4D5 SWAP3 DUP9 SWAP6 DUP12 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0x494 PUSH2 0x2181 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x24AC JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2546 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x5C5 JUMPI POP POP DUP6 DUP5 SWAP6 SWAP7 SWAP8 PUSH2 0x550 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x5BC JUMPI POP PUSH2 0x586 JUMPI POP DUP1 RETURN JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x5B4 JUMPI JUMPDEST DUP2 PUSH2 0x59F PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x28D JUMPI PUSH2 0x5B0 SWAP1 PUSH2 0x1F4D JUMP JUMPDEST POP DUP1 RETURN JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x592 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 DUP9 MSTORE DUP9 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP7 REVERT JUMPDEST PUSH1 0x41 DUP13 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x24 DUP9 DUP6 DUP12 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE PUSH1 0x20 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1EFB JUMP JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE DUP2 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI DUP1 SWAP3 PUSH2 0x76F JUMPI JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 ADD DUP7 PUSH2 0x1DED JUMP JUMPDEST SWAP1 SWAP2 POP RETURNDATASIZE DUP1 DUP3 DUP6 RETURNDATACOPY PUSH2 0x781 DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x20 DUP2 DUP6 SUB SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x7B0 SWAP2 PUSH2 0x286 SWAP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x75A JUMP JUMPDEST POP POP DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 DUP2 MLOAD SWAP3 DUP2 CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP5 MSTORE PUSH2 0x81A DUP5 PUSH2 0x1CC2 JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x377 JUMPI PUSH2 0x889 PUSH0 SWAP5 SWAP2 DUP6 SWAP3 DUP6 MLOAD SWAP7 DUP8 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xC808824700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH32 0x546573744576656E740000000000000000000000000000000000000000000000 DUP10 DUP5 ADD MSTORE DUP10 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x8C5 JUMPI PUSH2 0x89B JUMPI DUP4 DUP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x8B2 JUMPI POP MSTORE STOP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 SWAP1 PUSH0 DUP4 DUP4 DUP2 PUSH32 0x0 DUP9 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP6 PUSH0 SWAP5 PUSH0 SWAP5 PUSH0 SWAP8 PUSH2 0xA08 JUMPI JUMPDEST POP POP POP SWAP1 PUSH2 0x980 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x9C4 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x286 DUP12 PUSH2 0x9B6 DUP13 DUP13 PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0x9E1 DUP2 PUSH2 0x1EDD JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0x998 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xA1F DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xA4C SWAP2 DUP5 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP5 ADD MLOAD DUP8 DUP2 GT PUSH2 0x377 JUMPI DUP5 ADD SWAP1 DUP4 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP3 PUSH2 0xA74 DUP5 PUSH2 0x1D33 JUMP JUMPDEST SWAP10 PUSH2 0xA81 DUP9 MLOAD SWAP12 DUP13 PUSH2 0x1CF2 JUMP JUMPDEST DUP5 DUP12 MSTORE DUP3 DUP12 ADD SWAP2 DUP4 PUSH1 0x60 DUP1 SWAP8 MUL DUP7 ADD ADD SWAP5 DUP8 DUP7 GT PUSH2 0x377 JUMPI SWAP12 SWAP13 SWAP12 DUP5 ADD SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0xAE9 JUMPI POP POP POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xAC5 SWAP2 DUP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xADC SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 DUP1 DUP1 PUSH2 0x961 JUMP JUMPDEST DUP7 DUP5 SWAP14 SWAP15 SWAP14 DUP10 SUB SLT PUSH2 0x377 JUMPI DUP10 MLOAD SWAP1 DUP8 DUP3 ADD DUP14 DUP2 GT DUP4 DUP3 LT OR PUSH2 0xB4A JUMPI DUP12 MSTORE DUP5 MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x377 JUMPI DUP16 SWAP2 DUP4 MSTORE DUP7 DUP7 ADD MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI DUP3 DUP8 SWAP3 DUP4 DUP12 SWAP6 ADD MSTORE PUSH2 0xB38 DUP14 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST DUP14 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 SWAP13 SWAP12 SWAP13 PUSH2 0xAA0 JUMP JUMPDEST DUP4 PUSH1 0x41 DUP7 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0xB81 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBA2 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBBA SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x377 JUMPI PUSH2 0x278 PUSH2 0xBDB PUSH2 0xC01 SWAP6 PUSH2 0x286 SWAP5 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0xBE6 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x24 CALLDATALOAD DUP9 MSTORE PUSH1 0x80 PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0xCAE JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0xCBF DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP4 PUSH2 0xCEC SWAP3 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP1 PUSH2 0xC97 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0xD1B PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDFC JUMPI JUMPDEST DUP2 PUSH2 0xDE3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH2 0xDF6 PUSH1 0x20 SWAP3 PUSH2 0x1F4D JUMP JUMPDEST POP PUSH2 0xDC0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDD6 JUMP JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x377 JUMPI PUSH2 0xE34 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH1 0x2 PUSH1 0x24 CALLDATALOAD LT ISZERO PUSH2 0x377 JUMPI PUSH2 0xE4B PUSH1 0x20 SWAP3 PUSH2 0x2053 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xE74 DUP2 PUSH2 0x1F15 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xF13 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xEB7 JUMPI JUMPDEST POP POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xEFB JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x286 PUSH2 0xE95 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xEE2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0xEA8 SWAP2 POP PUSH2 0x286 SWAP1 POP PUSH2 0xE95 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x377 JUMPI DUP3 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x0 DUP4 MSTORE DUP5 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x60 DUP2 ADD SWAP3 DUP2 DUP5 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT OR PUSH2 0x8B2 JUMPI POP DUP3 PUSH1 0x20 SWAP5 MSTORE MLOAD SWAP1 KECCAK256 DUP2 MSTORE RETURN JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0x107A PUSH32 0x0 PUSH2 0x22B9 JUMP JUMPDEST SWAP3 PUSH2 0x10A4 PUSH32 0x0 PUSH2 0x23EE JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x8B2 JUMPI POP SWAP2 PUSH2 0x1115 SWAP2 PUSH2 0x286 SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x1108 DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 MLOAD PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP3 DUP4 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x132E JUMPI PUSH0 SWAP5 PUSH2 0x11D9 JUMPI JUMPDEST DUP6 DUP6 PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 DUP1 SWAP4 SWAP5 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1327 JUMPI JUMPDEST PUSH2 0x11F2 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SWAP3 DUP2 DUP5 SLT PUSH2 0x377 JUMPI DUP6 MLOAD SWAP5 PUSH2 0x140 SWAP5 DUP6 DUP8 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP9 DUP5 LT DUP4 DUP6 GT OR PUSH2 0x1314 JUMPI PUSH1 0x80 SGT PUSH2 0x377 JUMPI PUSH2 0x1C0 DUP9 ADD SWAP2 DUP3 GT DUP4 DUP4 LT OR PUSH2 0x8B2 JUMPI POP DUP8 MSTORE PUSH2 0x1240 DUP3 PUSH2 0x1F4D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x124E PUSH1 0x20 DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 PUSH2 0x160 SWAP2 DUP3 DUP9 ADD MSTORE PUSH2 0x1262 DUP9 DUP5 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP4 PUSH2 0x180 SWAP5 DUP6 DUP10 ADD MSTORE PUSH2 0x1277 PUSH1 0x60 DUP6 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP9 ADD MSTORE DUP7 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP8 DUP8 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP8 ADD MSTORE DUP4 DUP3 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0x100 SWAP1 DUP2 DUP4 ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI PUSH2 0x1307 SWAP6 PUSH2 0x12FD SWAP3 PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x12F2 PUSH2 0x120 SWAP9 PUSH2 0x12E6 DUP11 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST PUSH1 0xC0 DUP13 ADD MSTORE DUP7 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x41 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x11E8 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x136A PUSH2 0x1C7C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x3 NOT SWAP3 PUSH1 0x20 DUP5 CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT PUSH2 0x377 JUMPI DUP5 CALLDATASIZE SUB ADD SLT PUSH2 0x377 JUMPI DUP3 DUP2 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x377 JUMPI PUSH2 0x13C2 DUP2 PUSH2 0x1EDD JUMP JUMPDEST PUSH2 0x13EC JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x13E3 PUSH1 0x20 SWAP4 PUSH1 0x24 PUSH1 0x5 SLOAD SWAP2 ADD CALLDATALOAD PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP2 PUSH1 0x24 ADD CALLDATALOAD PUSH1 0x5 SLOAD SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1433 JUMPI DUP2 ISZERO PUSH2 0x1420 JUMPI PUSH1 0x20 SWAP4 POP DIV SWAP1 PUSH2 0x13E6 JUMP JUMPDEST PUSH1 0x12 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 PUSH2 0x1464 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP3 PUSH2 0x14EB JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1513 JUMPI JUMPDEST PUSH2 0x1503 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14E4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F9 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x6 SLOAD DUP1 PUSH2 0x15EA JUMPI POP DUP1 MLOAD SWAP2 PUSH32 0x4F037EE700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP1 PUSH2 0x15B7 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x15E2 JUMPI JUMPDEST DUP2 PUSH2 0x15D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD PUSH2 0x15AC JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x15C4 JUMP JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0x13E6 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x5 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x1694 PUSH2 0x2116 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x6 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE4B PUSH2 0x2181 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x178A JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x179B DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP1 DUP1 DUP4 DUP4 SUB SLT PUSH2 0x377 JUMPI DUP3 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x377 JUMPI DUP4 PUSH2 0x17C7 SWAP2 DUP4 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP5 DUP6 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP5 PUSH2 0x17E2 SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST POP PUSH2 0x1773 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x18AF CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x377 JUMPI PUSH2 0x1A06 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH2 0x1A3D PUSH2 0x1A20 PUSH2 0x1A16 DUP5 PUSH2 0x2053 JUMP JUMPDEST SWAP4 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1F5A JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A36 PUSH1 0x44 CALLDATALOAD DUP7 PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP2 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1A51 JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x11 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0x1A84 PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1B05 DUP5 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x1B92 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1B37 JUMPI JUMPDEST POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1B7A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x1B25 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0xEA8 SWAP1 POP PUSH2 0x1B25 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x377 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1CDE JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1D65 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1D73 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1D9C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1D8E JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E0C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1DFE JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E3F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1E31 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1CDE JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1EBC PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x377 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x1EE7 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1F43 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1F2F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1F24 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1F6E JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x1FBE DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1FCC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1FF5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1FE7 JUMP JUMPDEST SWAP1 PUSH2 0x200E DUP3 PUSH2 0x1D33 JUMP JUMPDEST PUSH2 0x201B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x2049 DUP3 SWAP5 PUSH2 0x1D33 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH0 SWAP1 DUP2 JUMPDEST DUP2 MLOAD DUP4 LT ISZERO PUSH2 0x207F JUMPI PUSH2 0x2077 PUSH1 0x1 SWAP2 PUSH2 0x2070 DUP6 DUP6 PUSH2 0x1F5A JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x2057 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x20A0 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x20AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x20D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x20C9 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2155 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x2290 JUMPI JUMPDEST ISZERO PUSH2 0x21E9 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x21C0 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x230D JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x231F DUP4 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x234D JUMPI JUMPDEST POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2393 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2378 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x234A SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2410 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2425 DUP2 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x244D JUMPI POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2494 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2479 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x253B JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x2530 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2526 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x1EE7 JUMPI DUP1 PUSH2 0x2558 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2588 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x25BC JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x25C6 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB AND ADDMOD 0xD4 0xFC JUMPDEST 0xBC PUSH29 0xCBC38DFB1ADF85E117593D892FF034148DC3F4AAB1E26D9864736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY DUP12 0x24 DUP9 0x2A 0xD1 CODECOPY COINBASE PUSH18 0x6CF9EC8211685110FD8068212BF7AEF715A6 CALLDATASIZE JUMPI PREVRANDAO 0xB8 0xBA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"636:6646:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;4296:6;;;636:6646;4403:30;;;:::i;:::-;4296:256;;;;;;780:1;636:6646;;780:1;636:6646;;;;4296:256;780:1;4296:256;;636:6646;4296:256;;;636:6646;780:1;636:6646;780:1;;;;;;;;:::i;:::-;636:6646;;;;780:1;;636:6646;;780:1;;;636:6646;;780:1;;;636:6646;780:1;;;;;;636:6646;;780:1;;;;636:6646;;;780:1;;;;;636:6646;780:1;;;636:6646;780:1;;636:6646;780:1;;636:6646;780:1;;636:6646;780:1;;;636:6646;780:1;636:6646;;;;;;;;;780:1;;;636:6646;780:1;636:6646;;;;;;;;;780:1;;;636:6646;780:1;636:6646;;;;;;;;;780:1;;;636:6646;780:1;636:6646;;;;;;;;;;780:1;;;;;;;;;;;;636:6646;4296:256;;;;;;;;;;;;636:6646;;4296:256;;;;:::i;:::-;636:6646;;4296:256;636:6646;;;;4296:256;636:6646;780:1;636:6646;;780:1;;;;636:6646;;;;4296:256;636:6646;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;2369:24:39;636:6646:81;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3731:6;;636:6646;3837:30;;;:::i;:::-;3731:255;;;;;;780:1;636:6646;;;780:1;636:6646;;;3731:255;780:1;3731:255;;636:6646;3731:255;;;636:6646;780:1;636:6646;780:1;;;;;;;;:::i;:::-;;636:6646;;780:1;;636:6646;;;780:1;;636:6646;;;780:1;;636:6646;;780:1;;;;;636:6646;;780:1;;;;636:6646;;;780:1;;;;;636:6646;780:1;;;636:6646;780:1;;636:6646;780:1;;636:6646;780:1;;;;;;;636:6646;780:1;636:6646;;;;;;;;;;;780:1;;;636:6646;780:1;636:6646;;;;;;;;;780:1;;;636:6646;;;;;;;;;;780:1;;;636:6646;;;;;;;;;;;780:1;;;;;;;;;;;;636:6646;3731:255;;;;;;;;;;;;636:6646;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;2050:6;636:6646;2050:6;636:6646;2156:30;;;:::i;:::-;2276:32;;;:::i;:::-;2050:268;;;;;;636:6646;;;;2050:268;636:6646;;;2050:268;;;;;;;780:1;2050:268;;;;;:::i;:::-;;;;;;;;;;;;;636:6646;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;2556:24;;;636:6646;2605:6;636:6646;2711:30;;;:::i;636:6646::-;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;1216:6:63;636:6646:81;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3182:6;;636:6646;3286:15;;;636:6646;;;;;;;;3426:32;;;;:::i;:::-;3182:286;;;;;;636:6646;;;;;;3182:286;;;;;;;780:1;3182:286;;636:6646;3182:286;;;636:6646;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;780:1;;636:6646;;780:1;;;;636:6646;;;780:1;;;;;636:6646;780:1;;;636:6646;780:1;;636:6646;780:1;;636:6646;780:1;636:6646;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3182:286;;;;;;;;;;;;636:6646;;3182:286;636:6646;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;2073:20:39;636:6646:81;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;6095:9;636:6646;;;;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;1589:6;;636:6646;1695:30;;;:::i;:::-;1828:32;;;:::i;:::-;1589:281;;;;;;636:6646;;;;;;;;;;;1589:281;;;;;;;780:1;1589:281;;636:6646;1589:281;;;636:6646;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;780:1;;636:6646;;780:1;;;;636:6646;;;780:1;;;;;636:6646;780:1;;;636:6646;780:1;;636:6646;780:1;;636:6646;780:1;636:6646;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1589:281;;;;;;;;;;;;636:6646;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;1300:51;;;;;;;;;;;;;;;;;;636:6646;1300:51;;;636:6646;1300:51;;;;1328:6;;636:6646;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;1300:51;;;;;;;;636:6646;6930:17;636:6646;;;;;6781:173;;;;;:::i;:::-;636:6646;;;;;;;;;6910:4;636:6646;;;;;;;;6930:17;;;636:6646;;;1300:51;636:6646;;;780:1;;;;;;;;1300:51;636:6646;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;;;;;;;;;;;;;;2766:1598:100;636:6646:81;;;;;2766:1598:100;636:6646:81;;;;;;;;:::i;:::-;6349:27;;636:6646;6332:62;636:6646;;;;;6349:27;636:6646;6349:27;;;636:6646;;:::i;:::-;6349:27;;;;;;;;;;636:6646;;;6332:62;;;;;;636:6646;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6332:62;;;;;;;:::i;:::-;636:6646;6431:23;;636:6646;;7229:43;;;7240:10;;636:6646;;7252:13;636:6646;;;;;;;;;;;7229:43;;;;;:::i;:::-;636:6646;7219:54;;2766:1598:100;;;;;;;;;;;6585:4:81;2766:1598:100;;;;;;;636:6646:81;;;;;;;;;;;;;;-1:-1:-1;;636:6646:81;;;;;1774:7:35;1762:20;1774:7;;1762:20;:::i;:::-;1592:60:63;636:6646:81;1592:15:63;;:::i;:::-;636:6646:81;;;;;1592:60:63;;;;780:1:81;1592:60:63;;;;;636:6646:81;1820:10:35;636:6646:81;;;;1646:4:63;636:6646:81;;;;1592:60:63;;;;;;;;;;;;636:6646:81;1797:34:35;;1793:90;;6641:134:81;;;:::i;:::-;6731:4;636:6646;;;;;6731:4;636:6646;6751:17;;;;636:6646;;1793:90:35;1854:18;;;;;1592:60:63;;;;;;;;;;;;;;;;;:::i;:::-;;;636:6646:81;;;;;;;;;;;;1592:60:63;;;;;;-1:-1:-1;1592:60:63;;;636:6646:81;780:1;636:6646;;780:1;;;;636:6646;;;;;;;-1:-1:-1;;636:6646:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4917:6;;636:6646;4917:234;;;;;;780:1;636:6646;780:1;636:6646;;;4917:234;780:1;4917:234;;636:6646;4917:234;;;636:6646;780:1;636:6646;780:1;;;;;;;;:::i;:::-;;636:6646;;780:1;;636:6646;;780:1;;636:6646;;;780:1;;636:6646;;780:1;;;;;636:6646;;780:1;;;;636:6646;;;780:1;;;;;636:6646;780:1;;;636:6646;780:1;;636:6646;780:1;;636:6646;780:1;;;;;;;636:6646;780:1;636:6646;;;;;;;;;;;780:1;;;636:6646;;;;;;;;;;;780:1;;;;;636:6646;;;;;;;;;;780:1;;;636:6646;;;;;;;;;;;780:1;636:6646;780:1;;;;;;;;636:6646;4917:234;;;;;;;;;;;;636:6646;;;4917:234;;;;;:::i;:::-;636:6646;4917:234;636:6646;780:1;636:6646;780:1;;;;;636:6646;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;636:6646:81;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;780:1::-;;636:6646;;;;;;;;;;;;780:1;-1:-1:-1;780:1:81;;;;;;;;;;;:::o;:::-;;;;;;;636:6646;;780:1;;;;636:6646;;;780:1;;;;;;;;;;;;;;;;;;;;;;;;;;;636:6646;780:1;;;636:6646;780:1;;;;;636:6646;;780:1;;;636:6646;780:1;636:6646;;780:1;;;;;;;;;;-1:-1:-1;780:1:81;;;;;-1:-1:-1;780:1:81;5860:126;636:6646;;;5954:25;;;636:6646;5954:25;;;636:6646;;;;;;;;;;;5954:25;636:6646;;;;;;;;;;;;;;;;;;;;-1:-1:-1;636:6646:81;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;636:6646:81;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;780:1;;636:6646;;780:1;;;;636:6646;;;780:1;;;;;636:6646;780:1;;;636:6646;780:1;;636:6646;780:1;;636:6646;780:1;636:6646;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1931:430:35:-;636:6646:81;;;2303:50:35;;;2320:22;;636:6646:81;;;;;;;2303:50:35;;;;;;:::i;:::-;636:6646:81;2293:61:35;;1931:430;:::o;1366:109:63:-;636:6646:81;;780:1;1442:26:63;;636:6646:81;1442:26:63;636:6646:81;1442:26:63;636:6646:81;1216:6:63;636:6646:81;;1442:26:63;;;;;;;;;;;1435:33;;1366:109;:::o;1442:26::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;636:6646:81;;;;;;;;;;;;1366:109:63;:::o;1442:26::-;;;-1:-1:-1;1442:26:63;;;636:6646:81;;780:1;1442:26:63;780:1:81;;;;;2922:332:39;3191:24;636:6646:81;;;3173:15:39;:42;636:6646:81;;;2922:332:39;:::o;3172:75::-;;-1:-1:-1;2922:332:39;:::o;6999:116:81:-;636:6646;6095:9;636:6646;;7049:60;;6999:116::o;7049:60::-;7088:10;-1:-1:-1;7088:10:81;;-1:-1:-1;7088:10:81;636:6646;;;;;;;:::i;:::-;-1:-1:-1;636:6646:81;;;;;;;;;;;;;;;;;:::o;5164:316::-;636:6646;;:::i;:::-;;;;:::i;:::-;5369:4;5322:44;;;636:6646;5369:4;5383:47;;;636:6646;5164:316;:::o"},"methodIdentifiers":{"createPool(string,string)":"5ea81a32","disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDeploymentAddress(bytes,bytes32)":"44f6fec7","getNewPoolPauseWindowEndTime()":"db035ebc","getOriginalPauseWindowEndTime()":"e9d56e19","getPauseWindowDuration()":"78da80cb","getPoolCount()":"8eec5d70","getPools()":"673a2a1f","getPoolsInRange(uint256,uint256)":"53a72f7e","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753","registerGeneralTestPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address)":"7a0b2e8d","registerPool(address,(address,uint8,address,bool)[],(address,address,address),address,(bool,bool,bool,bool))":"d396a666","registerPoolAtTimestamp(address,(address,uint8,address,bool)[],uint32,(address,address,address),address,(bool,bool,bool,bool))":"0e0677ab","registerPoolWithSwapFee(address,(address,uint8,address,bool)[],uint256,address,(bool,bool,bool,bool))":"ed05beaf","registerTestPool(address,(address,uint8,address,bool)[])":"675d6050","registerTestPool(address,(address,uint8,address,bool)[],address)":"c7c90a51","registerTestPool(address,(address,uint8,address,bool)[],address,address)":"a7a4b711"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowDuration\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Disabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolPauseWindowDurationOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"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\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeploymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNewPoolPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOriginalPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolsInRange\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowDuration\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"}],\"name\":\"registerGeneralTestPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPoolAtTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPoolWithSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"name\":\"registerTestPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"name\":\"registerTestPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"}],\"name\":\"registerTestPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"PoolCreated(address)\":{\"params\":{\"pool\":\"The address of the new pool\"}}},\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAuthorizer()\":{\"returns\":{\"_0\":\"authorizer An interface pointer to the Authorizer\"}},\"getDeploymentAddress(bytes,bytes32)\":{\"params\":{\"constructorArgs\":\"The arguments used to create the pool\",\"salt\":\"The salt used to deploy the pool\"},\"returns\":{\"deployAddress\":\"The predicted address of the pool, given the salt\"}},\"getNewPoolPauseWindowEndTime()\":{\"details\":\"We intend for all pools deployed by this factory to have the same pause window end time (i.e., after this date, all future pools will be unpausable). This function will return `_poolsPauseWindowEndTime` until it passes, after which it will return 0.\",\"returns\":{\"_0\":\"pauseWindowEndTime The resolved pause window end time (0 indicating it's no longer pausable)\"}},\"getOriginalPauseWindowEndTime()\":{\"returns\":{\"_0\":\"pauseWindowEndTime The end time as a timestamp\"}},\"getPauseWindowDuration()\":{\"returns\":{\"_0\":\"pauseWindowDuration The duration in seconds\"}},\"getPoolCount()\":{\"details\":\"This can then be used to \\\"paginate\\\" calls to `getPools` to control gas costs.\",\"returns\":{\"_0\":\"The number of pools deployed by this factory\"}},\"getPools()\":{\"returns\":{\"_0\":\"The list of pools deployed by this factory\"}},\"getVault()\":{\"returns\":{\"_0\":\"vault An interface pointer to the Vault\"}},\"isDisabled()\":{\"returns\":{\"_0\":\"True if this factory was disabled\"}},\"isPoolFromFactory(address)\":{\"params\":{\"pool\":\"The pool to check\"},\"returns\":{\"_0\":\"True if `pool` was created by this factory\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Disabled()\":[{\"notice\":\"Attempted pool creation after the factory was disabled.\"}],\"IndexOutOfBounds()\":[{\"notice\":\"A pool index is beyond the current bounds of the array.\"}],\"PoolPauseWindowDurationOverflow()\":[{\"notice\":\"The factory deployer gave a duration that would overflow the Unix timestamp.\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}]},\"events\":{\"FactoryDisabled()\":{\"notice\":\"The factory was disabled by governance.\"},\"PoolCreated(address)\":{\"notice\":\"A pool was deployed.\"}},\"kind\":\"user\",\"methods\":{\"disable()\":{\"notice\":\"Disable the factory, preventing the creation of more pools.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"notice\":\"Get the address of the Authorizer.\"},\"getDeploymentAddress(bytes,bytes32)\":{\"notice\":\"Return the address where a new pool will be deployed, based on the factory address and salt.\"},\"getNewPoolPauseWindowEndTime()\":{\"notice\":\"Returns the current pauseWindowEndTime that will be applied to Pools created by this factory.\"},\"getOriginalPauseWindowEndTime()\":{\"notice\":\"Returns the original factory pauseWindowEndTime, regardless of the current time.\"},\"getPauseWindowDuration()\":{\"notice\":\"Return the pause window duration. This is the time pools will be pausable after factory deployment.\"},\"getPoolCount()\":{\"notice\":\"Return the total number of pools deployed by this factory.\"},\"getPools()\":{\"notice\":\"Return the complete list of pools deployed by this factory.\"},\"getVault()\":{\"notice\":\"Get the address of the Balancer Vault.\"},\"isDisabled()\":{\"notice\":\"Check whether this factory has been disabled by governance.\"},\"isPoolFromFactory(address)\":{\"notice\":\"Check whether a pool was deployed by this factory.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol\":\"PoolFactoryMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\":{\"keccak256\":\"0x6f8c558b0520faae0c4576f30225b5a97821a4cd210878a0ba10c102a2f753f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b40aa7a5ee39fa2e297c684fd29ad45d866f1fc61cd997120a417b02a4d908aa\",\"dweb:/ipfs/QmYP5pQAF7SDLgy3aerqfnc4VwdmfQix2jcQUNL3o83BY9\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\":{\"keccak256\":\"0x0cdc0d3817887d0439c3c6f4c811bd37091ef75a855dd8b14c0e8f337e2799dd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ffd05df90ccdf19a35177fd6c6f78edc61ca2a37df7d0934932a3ad5a96f1e6\",\"dweb:/ipfs/QmaCmKktnMy4XXZn2FaKTjwQBGUhuXKikbxCbPX6K5PPgi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol\":{\"keccak256\":\"0xd810b5deb6053f485a0fc6dfde4894e7a0c90e5d31db3a61144f62c399cd8a26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cdb0e9331a4fe3320355bac37376a0698d36b10347d90d2c4224a787e065622\",\"dweb:/ipfs/QmTsu2bGVhfPyF9X6NCmhRLYyBHBpjRKndKLvTagJGUKE3\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9594d2dc75aa8c92bb39d30cd76d3bfbb203fe17c4ae35b6f8d882ed4ac868d4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a43d706d34c9f071bed27372100fedaeb12ec4c5c3529e150c8684444c4a619\",\"dweb:/ipfs/QmYUnJ2CtjJY2XktSzamExryTNbAYjesnymMpqTvQuXUka\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol\":{\"keccak256\":\"0xac5944d8912e0282de68a46ae52ddff55c28f9ff7c3634161f6aa1518afd2dcf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://44ec26aa9b94ebb6e1296d8d614330d016d28386fba24bba646a53aa804b8412\",\"dweb:/ipfs/QmSzKCxR3pQQu2fTmrSYXLT1EfE1rBSCab22xjYSJyxEcv\"]},\"@balancer-labs/v3-vault/contracts/test/PoolMock.sol\":{\"keccak256\":\"0xcd2e8d9d618bfb81a9696acb2419a33d04f48f0b548402c0b32e16d2e8708c3d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01e7508e239ab908574226d9c009a0f0af5759d941e59a3d7362735ddd859980\",\"dweb:/ipfs/QmQDAS3tugJ1kRFgUsnyKJbMhEtD7464jfTqjYWZc2tQz2\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol":{"PoolHooksMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"addLiquidityHookDiscountPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityHookFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"allowFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changePoolBalancesOnBeforeAddLiquidityHook","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePoolBalancesOnBeforeRemoveLiquidityHook","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePoolBalancesOnBeforeSwapHook","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeTokenRateOnBeforeAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeTokenRateOnBeforeInitialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeTokenRateOnBeforeRemoveLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeTokenRateOnBeforeSwapHook","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"denyFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableForcedHookAdjustedAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"hookAdjustedAmountsLiquidity","type":"uint256[]"}],"name":"enableForcedHookAdjustedAmountsLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"failOnAfterAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnAfterInitialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnAfterRemoveLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnAfterSwapHook","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnBeforeAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnBeforeInitialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnBeforeRemoveLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnBeforeSwapHook","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failOnComputeDynamicSwapFeeHook","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"forcedHookAdjustedAmountsLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHookFlags","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"}],"internalType":"struct HookFlags","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSavedSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hookSwapDiscountPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hookSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum AddLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsInRaw","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onAfterAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256[]","name":"hookAdjustedAmountsInRaw","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onAfterInitialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum RemoveLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onAfterRemoveLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256[]","name":"hookAdjustedAmountsOutRaw","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountInScaled18","type":"uint256"},{"internalType":"uint256","name":"amountOutScaled18","type":"uint256"},{"internalType":"uint256","name":"tokenInBalanceScaled18","type":"uint256"},{"internalType":"uint256","name":"tokenOutBalanceScaled18","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AfterSwapParams","name":"params","type":"tuple"}],"name":"onAfterSwap","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum AddLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onBeforeAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onBeforeInitialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum RemoveLiquidityKind","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onBeforeRemoveLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"params","type":"tuple"},{"internalType":"address","name":"","type":"address"}],"name":"onBeforeSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"params","type":"tuple"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"onComputeDynamicSwapFeePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"","type":"tuple[]"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"","type":"tuple"}],"name":"onRegister","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidityHookDiscountPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidityHookFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"hookDiscountPercentage","type":"uint256"}],"name":"setAddLiquidityHookDiscountPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hookFeePercentage","type":"uint256"}],"name":"setAddLiquidityHookFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"changeBalances","type":"bool"},{"internalType":"uint256[]","name":"newBalancesRaw","type":"uint256[]"}],"name":"setChangePoolBalancesOnBeforeAddLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"changeBalances","type":"bool"},{"internalType":"uint256[]","name":"newBalancesRaw","type":"uint256[]"}],"name":"setChangePoolBalancesOnBeforeRemoveLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"changeBalances","type":"bool"},{"internalType":"uint256[]","name":"newBalancesRaw","type":"uint256[]"}],"name":"setChangePoolBalancesOnBeforeSwapHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"changeRate","type":"bool"},{"internalType":"contract RateProviderMock","name":"rateProvider","type":"address"},{"internalType":"uint256","name":"newTokenRate","type":"uint256"}],"name":"setChangeTokenRateOnBeforeAddLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"changeRate","type":"bool"},{"internalType":"contract RateProviderMock","name":"rateProvider","type":"address"},{"internalType":"uint256","name":"newTokenRate","type":"uint256"}],"name":"setChangeTokenRateOnBeforeInitializeHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"changeRate","type":"bool"},{"internalType":"contract RateProviderMock","name":"rateProvider","type":"address"},{"internalType":"uint256","name":"newTokenRate","type":"uint256"}],"name":"setChangeTokenRateOnBeforeRemoveLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"changeRate","type":"bool"},{"internalType":"contract RateProviderMock","name":"rateProvider","type":"address"},{"internalType":"uint256","name":"newTokenRate","type":"uint256"}],"name":"setChangeTokenRateOnBeforeSwapHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dynamicSwapFee","type":"uint256"}],"name":"setDynamicSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnAfterAddLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnAfterInitializeHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnAfterRemoveLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnAfterSwapHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnBeforeAddLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnBeforeInitializeHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnBeforeRemoveLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnBeforeSwapHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"fail","type":"bool"}],"name":"setFailOnComputeDynamicSwapFeeHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"}],"internalType":"struct HookFlags","name":"hookFlags","type":"tuple"}],"name":"setHookFlags","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"discountPercentage","type":"uint256"}],"name":"setHookSwapDiscountPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feePercentage","type":"uint256"}],"name":"setHookSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hookDiscountPercentage","type":"uint256"}],"name":"setRemoveLiquidityHookDiscountPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hookFeePercentage","type":"uint256"}],"name":"setRemoveLiquidityHookFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setShouldIgnoreSavedSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldSettleDiscountFlag","type":"bool"}],"name":"setShouldSettleDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"setSpecialSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"hookContract","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setSwapReentrancyHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapReentrancyHookActive","type":"bool"}],"name":"setSwapReentrancyHookActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldForceHookAdjustedAmounts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shouldIgnoreSavedSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shouldSettleDiscount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapReentrancyHookActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a034609657601f613d9138819003918201601f19168301916001600160401b03831184841017609a57808492602094604052833981010312609657516001600160a01b038116810360965760805267010000000000000067ff00000000000000196002541617600255604051613ce290816100af8239608051818181612927015281816131c20152818161360b0152613aab0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060409080825260049182361015610016575f80fd5b60e05f35811c9283625b449c1461235c57508262d332fd146123365782630227346714612318578263039388ba146122c35782630b89f182146121355782630c54b1de146120285782631064dfdd14611fcc57826318b6eb5514611f715782631c149e2814611efa578263214ff4c514611ee2578263232b59f714611ea95782632352c2ed14611e8c5782632754888d14611de75782632e55a84114611dcf57826331378f4f14611dac578263335d412614611d215782633478db7314611cca57826334a168ec14611cb257826334e3a8c314611bb957826335f7290e14611b9457826338be241d14611b3a5782633d05719a14611b1457826340dc21d414611aef578263423ef816146118d45782634392312a146118b65782634437152a1461185a57826345421ec7146116c35782634f036756146116a05782635211fa77146113435782635351b2301461131e5782635991de93146112945782635cd0074614611272578263677db20e1461124d57826368c6db6a1461121f5782636a9a0611146111e85782636e7d75e51461119457826371eff9d21461109b5782637b695d101461104957826380c554c11461102357826382fb5d2114610fd057826387ac569114610f805782638f5fae6214610f3957826393c4b28614610e15578263976907cc14610d625782639f94c52214610d3c578263a0e8f5ac14610c31578263a5098f1014610c0e578263a55e47be14610bbe578263a975dda014610b9b578263af72105d14610b75578263b127e38514610b49578263b298157b14610b26578263b3a763b914610ad5578263b445fbe714610abd578263ba5f9f401461090d578263bd825f6b146108ef578263c25dade814610888578263d3fca63714610839578263d4f83182146107e4578263d77153a71461069c57508163da09aacf14610684578163dc7776ca14610641578163dda1c15b14610629578163e326f03a14610605578163e4c593d7146105e2578163e5e3b67e146105b4578163e62eecdd14610528578163e908e85d1461050b578163e9f7c591146103c4578163eb499270146103a7578163f5279d9c14610383578163f8b5ef851461035f575063fc6e0f5914610344575f80fd5b3461035b57602060031936011261035b5780359055005b5f80fd5b3461035b575f60031936011261035b5760209060ff5f5460481c1690519015158152f35b3461035b575f60031936011261035b5760209060ff5f5460081c1690519015158152f35b3461035b575f60031936011261035b576020906007549051908152f35b3461035b5761014060031936011261035b576103e081516123d3565b6103e861237e565b9060243580151580910361035b5760443580151580910361035b5760643580151580910361035b5760843580151580910361035b5760a4359081151580920361035b5760c4359283151580940361035b5760e4359485151580960361035b57610104359687151580980361035b576101243580151580910361035b576013549060481b69ff000000000000000000169a151560ff16907fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000016179060081b61ff0016179060101b62ff000016179060181b63ff00000016179060201b64ff0000000016179060281b65ff000000000016179060301b66ff00000000000016179060381b67ff000000000000001617911b68ff00000000000000001617176013555f80f35b3461035b575f60031936011261035b576020906006549051908152f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff61054b366125ad565b92917fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff63ff00000060025492151560181b16911617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b3461035b57602060031936011261035b576105cd61237e565b151560ff60ff19600954169116176009555f80f35b3461035b575f60031936011261035b576002549051602091821c60ff1615158152f35b3461035b575f60031936011261035b5760209060ff5f5460101c1690519015158152f35b823461035b57602060031936011261035b5735600655005b3461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff61066f61238d565b165f908152601260205220805460ff19169055005b823461035b57602060031936011261035b5735600355005b903461035b575f60031936011261035b578051610140926106bc826123d3565b5f82525f60208301525f838301525f60608301525f60808301525f60a08301525f60c08301525f818301526101005f818401525f61012080940152835193610703856123d3565b6013549283809281838660ff9384841615159b8c8152602081019c8d878760081c1615159052868d84840193828960101c1615158552826060820197818b60181c161515895281608084019a818d60201c1615158c5260a085019c8d838260281c161515905260c086019e8f9160301c161515905284019d60381c1615158d5282019d871c1615158d52019c60481c1615158c52602083519e8f928352511515910152511515908c015251151560608b015251151560808a015251151560a089015251151560c0880152511515908601525115159084015251151590820152f35b3461035b57602060031936011261035b576107fd61237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff67ff000000000000005f549260381b169116175f555f80f35b3461035b57602060031936011261035b5761085261237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff005f549260081b169116175f555f80f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff6108ab366125ad565b929160ff60ff19600254169115151617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b503461035b575f60031936011261035b576020906008549051908152f35b9091503461035b5760031936011261035b5761092761238d565b916109306123b0565b5080604435101561035b5767ffffffffffffffff60843581811161035b5761095b903690840161248a565b5060a43581811161035b57610973903690840161248a565b5060c43590811161035b5761098b9036908301612524565b506011549060ff8216156109e6575b50506020915060ff60025460181c166109d9575b60ff60025460301c166109cc575b60ff5f5460381c16159051908152f35b6109d4613a93565b6109bc565b6109e16139bc565b6109ae565b73ffffffffffffffffffffffffffffffffffffffff936020918451809681937f5e01eb5a000000000000000000000000000000000000000000000000000000008352165afa928315610ab35774ffffffffffffffffffffffffffffffffffffffff006020947fffffffffffffffffffffff0000000000000000000000000000000000000000ff925f91610a86575b5060081b169116176011555f8061099a565b610aa69150863d8811610aac575b610a9e8183612431565b8101906135b7565b5f610a74565b503d610a94565b82513d5f823e3d90fd5b833461035b57602060031936011261035b5735600755005b3461035b57602060031936011261035b57610aee61237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff63ff0000005f549260181b169116175f555f80f35b503461035b575f60031936011261035b5760209060ff6002541690519015158152f35b3461035b57602060031936011261035b57610b6261237e565b151560ff60ff195f54169116175f555f80f35b503461035b575f60031936011261035b5760209060ff60025460101c1690519015158152f35b503461035b575f60031936011261035b575f548151911c60ff1615158152602090f35b50823461035b57602060031936011261035b57359060015482101561035b5760209160015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601549051908152f35b503461035b575f60031936011261035b575f549051602091821c60ff1615158152f35b9091503461035b576003199060608236011261035b5783359167ffffffffffffffff831161035b57823603011261035b57610c6a6123b0565b50600d549273ffffffffffffffffffffffffffffffffffffffff9081600f54169283610cb1575b5f54855160109190911c60ff1615815260208101879052604090f35b0390f35b82610cc060a46020930161267f565b168551928380927f5e01eb5a0000000000000000000000000000000000000000000000000000000082525afa908115610d32575f91610d13575b501614610d0b575b5f808080610c91565b5f9150610d02565b610d2c915060203d602011610aac57610a9e8183612431565b5f610cfa565b84513d5f823e3d90fd5b503461035b575f60031936011261035b5760209060ff60025460181c1690519015158152f35b83823461035b5761010060031936011261035b57610d7e61238d565b50610d876123b0565b916005604435101561035b5767ffffffffffffffff9260643584811161035b57610db4903690840161248a565b5060843584811161035b57610dcc903690840161248a565b9060c43585811161035b57610de4903690850161248a565b5060e43594851161035b57610e02610e0893610cad96369101612524565b506135e3565b929091519283928361256a565b833461035b57610e24366125ed565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff65ff000000000060025492151560281b1691161760025581519067ffffffffffffffff8211610f0d57680100000000000000008211610f0d575060105481601055808210610ed7575b50602080920160105f525f5b828110610ea557005b81517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67282015590830190600101610e9c565b610f0790827f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729182019101612669565b82610e90565b6041907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b503461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff610f6861238d565b165f908152601260205220805460ff19166001179055005b3461035b57602060031936011261035b57610f9961237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff62ff00005f549260101b169116175f555f80f35b3461035b57602060031936011261035b57610fe961237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff65ff00000000005f549260281b169116175f555f80f35b503461035b575f60031936011261035b5760209060ff60025460381c1690519015158152f35b3461035b57602060031936011261035b5761106261237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff64ff000000005f549260201b169116175f555f80f35b833461035b576110aa366125ed565b91907fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff00000000000060025492151560301b1691161760025581519067ffffffffffffffff8211610f0d57680100000000000000008211610f0d57506010548160105580821061115e575b50602080920160105f525f5b82811061112c57005b81517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67282015590830190600101611123565b61118e90827f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729182019101612669565b82611117565b3461035b57602060031936011261035b576111ad61237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000005f549260301b169116175f555f80f35b503461035b575f60031936011261035b5760209073ffffffffffffffffffffffffffffffffffffffff60115460081c169051908152f35b3461035b57602060031936011261035b5761123861237e565b151560ff60ff19601154169116176011555f80f35b503461035b575f60031936011261035b5760209060ff5f5460381c1690519015158152f35b503461035b575f60031936011261035b5760209060ff5f541690519015158152f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff6112b7366125ad565b92917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0060025492151560081b16911617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b503461035b575f60031936011261035b5760209060ff5f5460181c1690519015158152f35b9091503461035b5760031990828236011261035b5783359167ffffffffffffffff831161035b57823603011261035b5761137b6123b0565b50826011549160ff8316156115ce575b50505060ff600254166115c1575b6002549160ff602093841c166115b4575b6009549060ff82166113c9575b505060ff5f5460181c16159051908152f35b73ffffffffffffffffffffffffffffffffffffffff8260081c1691821561155857600a54916113f783613566565b156114fc575060ff19809116600955835190855f9161141585613566565b90818552828501956001916001821691825f146114e357505060011461148e575b50505061147e93928261144d5f9485940382612431565b519082855af13d15611486573d91611464836124ea565b9261147186519485612431565b83523d5f8785013e613c13565b505f806113b7565b606091613c13565b600a5f9081529293507fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8284106114d057505050820101858261144d611436565b80548685018601529284019281016114b9565b1687525050151560051b8301019050858261144d611436565b606490868651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601660248201527f486f6f6b2063616c6c6461746120697320656d707479000000000000000000006044820152fd5b606482868651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f486f6f6b20636f6e7472616374206e6f742073657400000000000000000000006044820152fd5b6115bc613a93565b6113aa565b6115c96139bc565b611399565b73ffffffffffffffffffffffffffffffffffffffff6115f160a46020930161267f565b168451928380927f5e01eb5a0000000000000000000000000000000000000000000000000000000082525afa908115611696577fffffffffffffffffffffff0000000000000000000000000000000000000000ff9174ffffffffffffffffffffffffffffffffffffffff00915f91611677575b5060081b169116176011555f828161138b565b611690915060203d602011610aac57610a9e8183612431565b5f611664565b83513d5f823e3d90fd5b503461035b575f60031936011261035b5760209060ff6011541690519015158152f35b9091503461035b5760031936011261035b576116dd61238d565b916116e66123b0565b506005604435101561035b5767ffffffffffffffff60643581811161035b57611712903690840161248a565b5060a43581811161035b5761172a903690840161248a565b5060c43590811161035b576117429036908301612524565b506011549060ff82161561179d575b50506020915060ff60025460101c16611790575b60ff60025460281c16611783575b60ff5f5460281c16159051908152f35b61178b613a93565b611773565b6117986139bc565b611765565b73ffffffffffffffffffffffffffffffffffffffff936020918451809681937f5e01eb5a000000000000000000000000000000000000000000000000000000008352165afa928315610ab35774ffffffffffffffffffffffffffffffffffffffff006020947fffffffffffffffffffffff0000000000000000000000000000000000000000ff925f9161183d575b5060081b169116176011555f80611751565b6118549150863d8811610aac57610a9e8183612431565b5f61182b565b3461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff61188861238d565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600e541617600e555f80f35b503461035b575f60031936011261035b576020906003549051908152f35b83823461035b5760031936011261035b576118ed61238d565b60249167ffffffffffffffff9183359183831161035b573660238401121561035b5782013592831161035b57366024848401011161035b577fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006009549260081b16911617600955611975600a54613566565b601f8111611a9a575b505f92601f83116001146119db57509181925f926119cd575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617600a555f80f35b602492500101358280611997565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316937fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8925f905b868210611a7e5750508360019510611a43575b505050811b01600a55005b01602401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c19169055828080611a38565b9091936020600181928488880101358155019501920190611a25565b611adf907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8601f850160051c81019160208610611ae5575b601f0160051c0190612669565b8361197e565b9091508190611ad2565b503461035b575f60031936011261035b5760209060ff5f5460301c1690519015158152f35b503461035b575f60031936011261035b5760209060ff60025460081c1690519015158152f35b83823461035b57606060031936011261035b5767ffffffffffffffff823581811161035b57611b6c903690850161248a565b5060443590811161035b57602092611b8691369101612524565b5060ff5f5416159051908152f35b503461035b575f60031936011261035b5760209060ff5f5460281c1690519015158152f35b833461035b57611bc8366125ed565b6002929192547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff64ff00000000602095151560201b1691161760025580519167ffffffffffffffff8311610f0d57680100000000000000008311610f0d575060209060105483601055808410611c7c575b500160105f525f5b828110611c4a57005b81517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67282015590830190600101611c41565b611cac90847f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729182019101612669565b84611c39565b833461035b57602060031936011261035b5735600855005b3461035b57602060031936011261035b57611ce361237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff67ff000000000000006002549260381b169116176002555f80f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff611d44366125ad565b92917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff62ff000060025492151560101b16911617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b503461035b575f60031936011261035b5760209060ff6009541690519015158152f35b833461035b57602060031936011261035b5735600555005b83823461035b5761010060031936011261035b57611e0361238d565b50611e0c6123b0565b9180604435101561035b5767ffffffffffffffff9260843584811161035b57611e38903690840161248a565b5060a43584811161035b57611e50903690840161248a565b9060c43585811161035b57611e68903690850161248a565b5060e43594851161035b57611e86610e0893610cad96369101612524565b5061319a565b83823461035b575f60031936011261035b57602091549051908152f35b3461035b575f60031936011261035b575f80547fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff169055005b833461035b57602060031936011261035b5735600d55005b83823461035b578060031936011261035b5767ffffffffffffffff823581811161035b57611f2b903690850161248a565b5060243590811161035b57602092611f4591369101612524565b5060ff60025460081c16611f64575b60ff5f5460081c16159051908152f35b611f6c6139bc565b611f54565b83823461035b576003199160208336011261035b5780359267ffffffffffffffff841161035b5761018090843603011261035b57610cad92611fb3910161290c565b9151901515815260208101919091529081906040820190565b3461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff611ffa61238d565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600f541617600f555f80f35b833461035b5760208060031936011261035b5767ffffffffffffffff90823582811161035b5761205b903690850161248a565b9269010000000000000000007fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff5f5416175f558351928311610f0d57680100000000000000008311610f0d57506020600193600154846001558085106120ff575b50019060015f525f5b8381106120ce57005b82517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68201559181019184016120c5565b61212f90857fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69182019101612669565b856120bc565b9091503461035b5760031936011261035b5761214f61238d565b6121576123b0565b5067ffffffffffffffff9260443584811161035b573660238201121561035b578082013560249561218782612472565b9661219487519889612431565b828852602460208099019360071b8501019336851161035b57602401925b8484106122125788888860807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c36011261035b5773ffffffffffffffffffffffffffffffffffffffff165f526012825260ff815f20541690519015158152f35b608090818536031261035b5788519182018281108582111761229857895273ffffffffffffffffffffffffffffffffffffffff8535818116810361035b5783528a860135600281101561035b578b84015289860135908116810361035b57898301526060908186013592831515840361035b576080938c938201528152019301926121b2565b836041897f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b503461035b57602060031936011261035b577fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff68ff000000000000000061230861237e565b15155f54931b169116175f555f80f35b503461035b575f60031936011261035b576020906005549051908152f35b503461035b575f60031936011261035b5760209060ff60025460301c1690519015158152f35b3461035b575f60031936011261035b5760209060ff60025460281c1615158152f35b60043590811515820361035b57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361035b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361035b57565b610140810190811067ffffffffffffffff8211176123f057604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff81116123f057604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176123f057604052565b67ffffffffffffffff81116123f05760051b60200190565b9080601f8301121561035b5760209082356124a481612472565b936124b26040519586612431565b81855260208086019260051b82010192831161035b57602001905b8282106124db575050505090565b813581529083019083016124cd565b67ffffffffffffffff81116123f057601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561035b5780359061253b826124ea565b926125496040519485612431565b8284526020838301011161035b57815f926020809301838601378301015290565b906040820190151582526020606081936040838201528551809452019301915f5b828110612599575050505090565b83518552938101939281019260010161258b565b600319606091011261035b57600435801515810361035b579060243573ffffffffffffffffffffffffffffffffffffffff8116810361035b579060443590565b90604060031983011261035b57600435801515810361035b57916024359067ffffffffffffffff821161035b576126269160040161248a565b90565b8181029291811591840414171561263c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818110612674575050565b5f8155600101612669565b3573ffffffffffffffffffffffffffffffffffffffff8116810361035b5790565b9080601f8301121561035b578151906020916126bb81612472565b936126c96040519586612431565b81855260208086019260051b82010192831161035b57602001905b8282106126f2575050505090565b815173ffffffffffffffffffffffffffffffffffffffff8116810361035b5781529083019083016126e4565b5190811515820361035b57565b9080601f8301121561035b5781519060209161274681612472565b936127546040519586612431565b81855260208086019260051b82010192831161035b57602001905b82821061277d575050505090565b8151815290830190830161276f565b9160808383031261035b5782519067ffffffffffffffff9182811161035b57836127b79186016126a0565b936020938482015184811161035b57820181601f8201121561035b5780516127de81612472565b916040976127ee89519485612431565b8284528084018160608095028401019286841161035b578201905b8382106128435750505050509482015184811161035b578161282c91840161272b565b93606083015190811161035b57612626920161272b565b848288031261035b578a51908582018281108c8211176123f0578c528251600281101561035b578252838301519073ffffffffffffffffffffffffffffffffffffffff8216820361035b5782859283899501528d6128a281870161271e565b90820152815201910190612809565b80518210156128c55760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9190820391821161263c57565b9190820180921161263c57565b905f9073ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016926101408501906129578261267f565b9060408051947f67e0e0760000000000000000000000000000000000000000000000000000000086528060049416848701525f866024818b5afa958615610ab3575f905f97613101575b506129ab8661267f565b95828451977f535cfd8a00000000000000000000000000000000000000000000000000000000895216868801525f876024818d5afa968715610d32575f976130bb575b506129f89061267f565b93828451957f7e361bde00000000000000000000000000000000000000000000000000000000875216868601525f856024818d5afa958615610d32575f955f9761305e575b505f5b8351811015612b4e578c85612a64602082612a5b868a6128b1565b5116930161267f565b1603612ae55760a08d0135612a79828b6128b1565b518103612acf57612aa090612a8e838a6128b1565b51612a99848c6128b1565b5191613960565b612aaa828c6128b1565b5103612aba576001905b01612a40565b505f9b61010001359a50505050505050505050565b505f9c61010001359b5050505050505050505050565b8c85612af68882612a5b868a6128b1565b1614612b05575b600190612ab4565b60c08d0135612b14828b6128b1565b518103612acf57612b2990612a8e838a6128b1565b612b33828c6128b1565b5114612afd57505f9b61010001359a50505050505050505050565b509650979893505097945091506101008401359660035415155f14612d435750670de0b6b3a7640000612b8360035489612629565b049081612bb0575b5050505060e0905b013515159081612ba257509190565b60ff91505460201c16159190565b909192968435600281101561035b57612c895782612bcd916128f2565b96612bd984860161267f565b823b15612c855784517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191825230602083015260408201939093529192918591849182908490829060600103925af1908115612c7c5750908391612c64575b505060e0905b905f8080612b8b565b612c6d9061241d565b612c7857815f612c55565b5080fd5b513d85823e3d90fd5b8680fd5b82612c9791989493986128ff565b96612ca46020860161267f565b91803b1561035b5783517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316948301948552306020860152604085019190915290925f91849182908490829060600103925af1908115612d3a5750612d26575b5060e090612c5b565b612d3191925061241d565b5f9060e0612d1d565b513d5f823e3d90fd5b909291825480612d5b575b505050505060e090612b93565b612d6e670de0b6b3a7640000918a612629565b048015612d4e5790919293978535600281101561035b578290612f2957612d94916128ff565b9760ff60025460381c16612db6575b505050505060e0905b905f808080612d4e565b82860193612dc38561267f565b1694835180967fa9059cbb0000000000000000000000000000000000000000000000000000000082526020978891815f81612e248a8a8a84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af18015612f1f57908794939291612ee0575b505f612e47612e9e9761267f565b918651978895869485937f15afd40900000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af1908115612d3a5750612eb7575b808080612da3565b813d8311612ed9575b612eca8183612431565b8101031261035b575f80612eaf565b503d612ec0565b9384813d8311612f18575b612ef58183612431565b8101031261035b575f612e47612e9e97612f0f8a9761271e565b50975050612e39565b503d612eeb565b85513d5f823e3d90fd5b612f32916128f2565b9760ff60025460381c16612f4e575b505050505060e090612dac565b60209485870194612f5e8661267f565b1686855180927fa9059cbb000000000000000000000000000000000000000000000000000000008252815f81612fba8a8a8a84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af18015612f1f5790879493929161301f575b505f612e47612fdd9761267f565b03925af1908115612d3a5750612ff6575b808080612f41565b813d8311613018575b6130098183612431565b8101031261035b575f80612fee565b503d612fff565b9384813d8311613057575b6130348183612431565b8101031261035b575f612e47612fdd9761304e8a9761271e565b50975050612fcf565b503d61302a565b955095503d805f873e6130718187612431565b850194848187031261035b5780519567ffffffffffffffff9687811161035b578161309d91840161272b565b96602083015190811161035b576130b4920161272b565b955f612a3d565b9096503d805f833e6130cd8183612431565b81019060208183031261035b5780519167ffffffffffffffff831161035b576129f8926130fa920161272b565b96906129ee565b90506131209196503d805f833e6131188183612431565b81019061278c565b97929150966129a1565b60405190816001805490818352602090602084019260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b82821061318257505050505090613180910383612431565b565b84548652889650948501949383019390830190613168565b91909160ff5f5460481c166135595773ffffffffffffffffffffffffffffffffffffffff92837f0000000000000000000000000000000000000000000000000000000000000000169060409485517f67e0e076000000000000000000000000000000000000000000000000000000008152816004951660048201525f81602481875afa90811561354f575f91613533575b506007805415613349575f5b845181101561333357670de0b6b3a764000061325f61325683886128b1565b51845490612629565b049081613271575b6001915001613237565b6132858261327f83896128b1565b516128f2565b61328f82886128b1565b528461329b82866128b1565b5116873b1561035b578a517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116818a019081523060208201526040810193909352915f90839081906060010381838b5af19182156133295760019261331a575b50613267565b6133239061241d565b5f613314565b8a513d5f823e3d90fd5b5050505093905060ff91505b5f54901c16159190565b5091949395929060088054613368575b5050505060ff9192935061333f565b5f9795975b875181101561351c5783670de0b6b3a764000061339661338d848c6128b1565b51855490612629565b04846133a284896128b1565b5116816133b5575b50505060010161336d565b88517fa9059cbb0000000000000000000000000000000000000000000000000000000081528a818061341086602098899584016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561332957908492916134e9575b508b6134458661343f8661343983866128b1565b516128ff565b926128b1565b528a61349e8b5194859384937f15afd40900000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f8a5af180156134df576134b6575b85916133aa565b813d83116134d8575b6134c98183612431565b8101031261035b575f806134af565b503d6134bf565b88513d5f823e3d90fd5b9182813d8311613515575b6134fe8183612431565b8101031261035b57613510849261271e565b613425565b503d6134f4565b505050505060ff91509291928392915f8080613359565b61354791503d805f833e6131188183612431565b91505061322b565b87513d5f823e3d90fd5b506001915061262661312a565b90600182811c921680156135ad575b602083101461358057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613575565b9081602091031261035b575173ffffffffffffffffffffffffffffffffffffffff8116810361035b5790565b91909160ff5f5460481c166135595773ffffffffffffffffffffffffffffffffffffffff92837f0000000000000000000000000000000000000000000000000000000000000000169060409485517f67e0e076000000000000000000000000000000000000000000000000000000008152816004951660048201525f81602481875afa90811561354f575f91613944575b506005805415613779575f5b845181101561376357670de0b6b3a764000061369f61325683886128b1565b0490816136b1575b6001915001613680565b6136bf8261343983896128b1565b6136c982886128b1565b52846136d582866128b1565b5116873b1561035b578a517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116818a019081523060208201526040810193909352915f90839081906060010381838b5af191821561332957600192613754575b506136a7565b61375d9061241d565b5f61374e565b50505050935050505b60ff5f5460301c16159190565b509194959290600692600654613796575b5050505050509061376c565b5f5b87518110156139325783836137ad83856128b1565b5116670de0b6b3a76400006137ce6137c5858d6128b1565b51895490612629565b0490816137e1575b505050600101613798565b88517fa9059cbb0000000000000000000000000000000000000000000000000000000081528a818061383c86602098899584016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561332957908492916138ff575b508b6138658661343f8661327f83866128b1565b528a6138be8b5194859384937f15afd40900000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f8a5af180156134df576138d6575b85916137d6565b813d83116138f8575b6138e98183612431565b8101031261035b575f806138cf565b503d6138df565b9182813d831161392b575b6139148183612431565b8101031261035b57613926849261271e565b613851565b503d61390a565b505050505050505f808080808061378a565b61395891503d805f833e6131188183612431565b915050613674565b9161396a91612629565b90670de0b6b3a76400009081810291818304149015171561263c57811561398f570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff600b5416600c54813b1561035b575f916024839260405194859384927fa1cfa04100000000000000000000000000000000000000000000000000000000845260048401525af18015613a2d57613a245750565b6131809061241d565b6040513d5f823e3d90fd5b6010549081815260208091019160105f527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672915f905b828210613a7c575050505090565b835485529384019360019384019390910190613a6e565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001681600e541691604051927fca4f28030000000000000000000000000000000000000000000000000000000084528060048501525f84602481865afa938415613a2d575f94613bd3575b50823b1561035b5790926040519384927fd8f4cf3c0000000000000000000000000000000000000000000000000000000084526084840190600485015260806024850152825180915260a48401926020809101925f905b838210613bb657505050505091815f81613ba58296613b966003199182858203016044860152613a38565b90838203016064840152613a38565b03925af18015613a2d57613a245750565b845181168652889650948201949382019360019190910190613b6b565b9093503d805f833e613be58183612431565b810160208282031261035b57815167ffffffffffffffff811161035b57613c0c92016126a0565b925f613b14565b90613c505750805115613c2857805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580613ca3575b613c61575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15613c5956fea26469706673582212200b7a14bcd3cc77a998290237c5d5bffc1b5778f64e5caf1ac09a2607fc11517564736f6c634300081a0033","opcodes":"PUSH1 0xA0 CALLVALUE PUSH1 0x96 JUMPI PUSH1 0x1F PUSH2 0x3D91 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH1 0x9A JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH1 0x96 JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH1 0x96 JUMPI PUSH1 0x80 MSTORE PUSH8 0x100000000000000 PUSH8 0xFF00000000000000 NOT PUSH1 0x2 SLOAD AND OR PUSH1 0x2 SSTORE PUSH1 0x40 MLOAD PUSH2 0x3CE2 SWAP1 DUP2 PUSH2 0xAF DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2927 ADD MSTORE DUP2 DUP2 PUSH2 0x31C2 ADD MSTORE DUP2 DUP2 PUSH2 0x360B ADD MSTORE PUSH2 0x3AAB ADD MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x16 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH3 0x5B449C EQ PUSH2 0x235C JUMPI POP DUP3 PUSH3 0xD332FD EQ PUSH2 0x2336 JUMPI DUP3 PUSH4 0x2273467 EQ PUSH2 0x2318 JUMPI DUP3 PUSH4 0x39388BA EQ PUSH2 0x22C3 JUMPI DUP3 PUSH4 0xB89F182 EQ PUSH2 0x2135 JUMPI DUP3 PUSH4 0xC54B1DE EQ PUSH2 0x2028 JUMPI DUP3 PUSH4 0x1064DFDD EQ PUSH2 0x1FCC JUMPI DUP3 PUSH4 0x18B6EB55 EQ PUSH2 0x1F71 JUMPI DUP3 PUSH4 0x1C149E28 EQ PUSH2 0x1EFA JUMPI DUP3 PUSH4 0x214FF4C5 EQ PUSH2 0x1EE2 JUMPI DUP3 PUSH4 0x232B59F7 EQ PUSH2 0x1EA9 JUMPI DUP3 PUSH4 0x2352C2ED EQ PUSH2 0x1E8C JUMPI DUP3 PUSH4 0x2754888D EQ PUSH2 0x1DE7 JUMPI DUP3 PUSH4 0x2E55A841 EQ PUSH2 0x1DCF JUMPI DUP3 PUSH4 0x31378F4F EQ PUSH2 0x1DAC JUMPI DUP3 PUSH4 0x335D4126 EQ PUSH2 0x1D21 JUMPI DUP3 PUSH4 0x3478DB73 EQ PUSH2 0x1CCA JUMPI DUP3 PUSH4 0x34A168EC EQ PUSH2 0x1CB2 JUMPI DUP3 PUSH4 0x34E3A8C3 EQ PUSH2 0x1BB9 JUMPI DUP3 PUSH4 0x35F7290E EQ PUSH2 0x1B94 JUMPI DUP3 PUSH4 0x38BE241D EQ PUSH2 0x1B3A JUMPI DUP3 PUSH4 0x3D05719A EQ PUSH2 0x1B14 JUMPI DUP3 PUSH4 0x40DC21D4 EQ PUSH2 0x1AEF JUMPI DUP3 PUSH4 0x423EF816 EQ PUSH2 0x18D4 JUMPI DUP3 PUSH4 0x4392312A EQ PUSH2 0x18B6 JUMPI DUP3 PUSH4 0x4437152A EQ PUSH2 0x185A JUMPI DUP3 PUSH4 0x45421EC7 EQ PUSH2 0x16C3 JUMPI DUP3 PUSH4 0x4F036756 EQ PUSH2 0x16A0 JUMPI DUP3 PUSH4 0x5211FA77 EQ PUSH2 0x1343 JUMPI DUP3 PUSH4 0x5351B230 EQ PUSH2 0x131E JUMPI DUP3 PUSH4 0x5991DE93 EQ PUSH2 0x1294 JUMPI DUP3 PUSH4 0x5CD00746 EQ PUSH2 0x1272 JUMPI DUP3 PUSH4 0x677DB20E EQ PUSH2 0x124D JUMPI DUP3 PUSH4 0x68C6DB6A EQ PUSH2 0x121F JUMPI DUP3 PUSH4 0x6A9A0611 EQ PUSH2 0x11E8 JUMPI DUP3 PUSH4 0x6E7D75E5 EQ PUSH2 0x1194 JUMPI DUP3 PUSH4 0x71EFF9D2 EQ PUSH2 0x109B JUMPI DUP3 PUSH4 0x7B695D10 EQ PUSH2 0x1049 JUMPI DUP3 PUSH4 0x80C554C1 EQ PUSH2 0x1023 JUMPI DUP3 PUSH4 0x82FB5D21 EQ PUSH2 0xFD0 JUMPI DUP3 PUSH4 0x87AC5691 EQ PUSH2 0xF80 JUMPI DUP3 PUSH4 0x8F5FAE62 EQ PUSH2 0xF39 JUMPI DUP3 PUSH4 0x93C4B286 EQ PUSH2 0xE15 JUMPI DUP3 PUSH4 0x976907CC EQ PUSH2 0xD62 JUMPI DUP3 PUSH4 0x9F94C522 EQ PUSH2 0xD3C JUMPI DUP3 PUSH4 0xA0E8F5AC EQ PUSH2 0xC31 JUMPI DUP3 PUSH4 0xA5098F10 EQ PUSH2 0xC0E JUMPI DUP3 PUSH4 0xA55E47BE EQ PUSH2 0xBBE JUMPI DUP3 PUSH4 0xA975DDA0 EQ PUSH2 0xB9B JUMPI DUP3 PUSH4 0xAF72105D EQ PUSH2 0xB75 JUMPI DUP3 PUSH4 0xB127E385 EQ PUSH2 0xB49 JUMPI DUP3 PUSH4 0xB298157B EQ PUSH2 0xB26 JUMPI DUP3 PUSH4 0xB3A763B9 EQ PUSH2 0xAD5 JUMPI DUP3 PUSH4 0xB445FBE7 EQ PUSH2 0xABD JUMPI DUP3 PUSH4 0xBA5F9F40 EQ PUSH2 0x90D JUMPI DUP3 PUSH4 0xBD825F6B EQ PUSH2 0x8EF JUMPI DUP3 PUSH4 0xC25DADE8 EQ PUSH2 0x888 JUMPI DUP3 PUSH4 0xD3FCA637 EQ PUSH2 0x839 JUMPI DUP3 PUSH4 0xD4F83182 EQ PUSH2 0x7E4 JUMPI DUP3 PUSH4 0xD77153A7 EQ PUSH2 0x69C JUMPI POP DUP2 PUSH4 0xDA09AACF EQ PUSH2 0x684 JUMPI DUP2 PUSH4 0xDC7776CA EQ PUSH2 0x641 JUMPI DUP2 PUSH4 0xDDA1C15B EQ PUSH2 0x629 JUMPI DUP2 PUSH4 0xE326F03A EQ PUSH2 0x605 JUMPI DUP2 PUSH4 0xE4C593D7 EQ PUSH2 0x5E2 JUMPI DUP2 PUSH4 0xE5E3B67E EQ PUSH2 0x5B4 JUMPI DUP2 PUSH4 0xE62EECDD EQ PUSH2 0x528 JUMPI DUP2 PUSH4 0xE908E85D EQ PUSH2 0x50B JUMPI DUP2 PUSH4 0xE9F7C591 EQ PUSH2 0x3C4 JUMPI DUP2 PUSH4 0xEB499270 EQ PUSH2 0x3A7 JUMPI DUP2 PUSH4 0xF5279D9C EQ PUSH2 0x383 JUMPI DUP2 PUSH4 0xF8B5EF85 EQ PUSH2 0x35F JUMPI POP PUSH4 0xFC6E0F59 EQ PUSH2 0x344 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP1 CALLDATALOAD SWAP1 SSTORE STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x48 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x8 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x7 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x140 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x3E0 DUP2 MLOAD PUSH2 0x23D3 JUMP JUMPDEST PUSH2 0x3E8 PUSH2 0x237E JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x44 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x35B JUMPI PUSH1 0xC4 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x35B JUMPI PUSH1 0xE4 CALLDATALOAD SWAP5 DUP6 ISZERO ISZERO DUP1 SWAP7 SUB PUSH2 0x35B JUMPI PUSH2 0x104 CALLDATALOAD SWAP7 DUP8 ISZERO ISZERO DUP1 SWAP9 SUB PUSH2 0x35B JUMPI PUSH2 0x124 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x13 SLOAD SWAP1 PUSH1 0x48 SHL PUSH10 0xFF000000000000000000 AND SWAP11 ISZERO ISZERO PUSH1 0xFF AND SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 AND OR SWAP1 PUSH1 0x8 SHL PUSH2 0xFF00 AND OR SWAP1 PUSH1 0x10 SHL PUSH3 0xFF0000 AND OR SWAP1 PUSH1 0x18 SHL PUSH4 0xFF000000 AND OR SWAP1 PUSH1 0x20 SHL PUSH5 0xFF00000000 AND OR SWAP1 PUSH1 0x28 SHL PUSH6 0xFF0000000000 AND OR SWAP1 PUSH1 0x30 SHL PUSH7 0xFF000000000000 AND OR SWAP1 PUSH1 0x38 SHL PUSH8 0xFF00000000000000 AND OR SWAP2 SHL PUSH9 0xFF0000000000000000 AND OR OR PUSH1 0x13 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x6 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x54B CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF PUSH4 0xFF000000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x18 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x5CD PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH1 0xFF PUSH1 0xFF NOT PUSH1 0x9 SLOAD AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x2 SLOAD SWAP1 MLOAD PUSH1 0x20 SWAP2 DUP3 SHR PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x10 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x6 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x66F PUSH2 0x238D JUMP JUMPDEST AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE STOP JUMPDEST DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x3 SSTORE STOP JUMPDEST SWAP1 CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP1 MLOAD PUSH2 0x140 SWAP3 PUSH2 0x6BC DUP3 PUSH2 0x23D3 JUMP JUMPDEST PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x60 DUP4 ADD MSTORE PUSH0 PUSH1 0x80 DUP4 ADD MSTORE PUSH0 PUSH1 0xA0 DUP4 ADD MSTORE PUSH0 PUSH1 0xC0 DUP4 ADD MSTORE PUSH0 DUP2 DUP4 ADD MSTORE PUSH2 0x100 PUSH0 DUP2 DUP5 ADD MSTORE PUSH0 PUSH2 0x120 DUP1 SWAP5 ADD MSTORE DUP4 MLOAD SWAP4 PUSH2 0x703 DUP6 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x13 SLOAD SWAP3 DUP4 DUP1 SWAP3 DUP2 DUP4 DUP7 PUSH1 0xFF SWAP4 DUP5 DUP5 AND ISZERO ISZERO SWAP12 DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP13 DUP14 DUP8 DUP8 PUSH1 0x8 SHR AND ISZERO ISZERO SWAP1 MSTORE DUP7 DUP14 DUP5 DUP5 ADD SWAP4 DUP3 DUP10 PUSH1 0x10 SHR AND ISZERO ISZERO DUP6 MSTORE DUP3 PUSH1 0x60 DUP3 ADD SWAP8 DUP2 DUP12 PUSH1 0x18 SHR AND ISZERO ISZERO DUP10 MSTORE DUP2 PUSH1 0x80 DUP5 ADD SWAP11 DUP2 DUP14 PUSH1 0x20 SHR AND ISZERO ISZERO DUP13 MSTORE PUSH1 0xA0 DUP6 ADD SWAP13 DUP14 DUP4 DUP3 PUSH1 0x28 SHR AND ISZERO ISZERO SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP15 DUP16 SWAP2 PUSH1 0x30 SHR AND ISZERO ISZERO SWAP1 MSTORE DUP5 ADD SWAP14 PUSH1 0x38 SHR AND ISZERO ISZERO DUP14 MSTORE DUP3 ADD SWAP14 DUP8 SHR AND ISZERO ISZERO DUP14 MSTORE ADD SWAP13 PUSH1 0x48 SHR AND ISZERO ISZERO DUP13 MSTORE PUSH1 0x20 DUP4 MLOAD SWAP15 DUP16 SWAP3 DUP4 MSTORE MLOAD ISZERO ISZERO SWAP2 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP13 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0x80 DUP11 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP10 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP9 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP5 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x7FD PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF PUSH8 0xFF00000000000000 PUSH0 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x852 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH2 0xFF00 PUSH0 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x8AB CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0xFF PUSH1 0xFF NOT PUSH1 0x2 SLOAD AND SWAP2 ISZERO ISZERO AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x8 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x927 PUSH2 0x238D JUMP JUMPDEST SWAP2 PUSH2 0x930 PUSH2 0x23B0 JUMP JUMPDEST POP DUP1 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x84 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x95B SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xA4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x973 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xC4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x98B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0x11 SLOAD SWAP1 PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x9E6 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP2 POP PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x18 SHR AND PUSH2 0x9D9 JUMPI JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x30 SHR AND PUSH2 0x9CC JUMPI JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x38 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x9D4 PUSH2 0x3A93 JUMP JUMPDEST PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x9E1 PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x9AE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x20 SWAP2 DUP5 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xAB3 JUMPI PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x20 SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP3 PUSH0 SWAP2 PUSH2 0xA86 JUMPI JUMPDEST POP PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP1 PUSH2 0x99A JUMP JUMPDEST PUSH2 0xAA6 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0xAAC JUMPI JUMPDEST PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x35B7 JUMP JUMPDEST PUSH0 PUSH2 0xA74 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xA94 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x7 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xAEE PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF PUSH4 0xFF000000 PUSH0 SLOAD SWAP3 PUSH1 0x18 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xB62 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH1 0xFF PUSH1 0xFF NOT PUSH0 SLOAD AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x10 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH0 SLOAD DUP2 MLOAD SWAP2 SHR PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD SWAP1 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x35B JUMPI PUSH1 0x20 SWAP2 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 ADD SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH0 SLOAD SWAP1 MLOAD PUSH1 0x20 SWAP2 DUP3 SHR PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT SWAP1 PUSH1 0x60 DUP3 CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x35B JUMPI DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x35B JUMPI PUSH2 0xC6A PUSH2 0x23B0 JUMP JUMPDEST POP PUSH1 0xD SLOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0xF SLOAD AND SWAP3 DUP4 PUSH2 0xCB1 JUMPI JUMPDEST PUSH0 SLOAD DUP6 MLOAD PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR PUSH1 0xFF AND ISZERO DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 RETURN JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP3 PUSH2 0xCC0 PUSH1 0xA4 PUSH1 0x20 SWAP4 ADD PUSH2 0x267F JUMP JUMPDEST AND DUP6 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xD32 JUMPI PUSH0 SWAP2 PUSH2 0xD13 JUMPI JUMPDEST POP AND EQ PUSH2 0xD0B JUMPI JUMPDEST PUSH0 DUP1 DUP1 DUP1 PUSH2 0xC91 JUMP JUMPDEST PUSH0 SWAP2 POP PUSH2 0xD02 JUMP JUMPDEST PUSH2 0xD2C SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAAC JUMPI PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST PUSH0 PUSH2 0xCFA JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x18 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xD7E PUSH2 0x238D JUMP JUMPDEST POP PUSH2 0xD87 PUSH2 0x23B0 JUMP JUMPDEST SWAP2 PUSH1 0x5 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x64 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0xDB4 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0xDCC SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST SWAP1 PUSH1 0xC4 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0xDE4 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xE4 CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x35B JUMPI PUSH2 0xE02 PUSH2 0xE08 SWAP4 PUSH2 0xCAD SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH2 0x35E3 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 MLOAD SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x256A JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0xE24 CALLDATASIZE PUSH2 0x25ED JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH6 0xFF0000000000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x28 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE DUP2 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xF0D JUMPI POP PUSH1 0x10 SLOAD DUP2 PUSH1 0x10 SSTORE DUP1 DUP3 LT PUSH2 0xED7 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 SWAP3 ADD PUSH1 0x10 PUSH0 MSTORE PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xEA5 JUMPI STOP JUMPDEST DUP2 MLOAD PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 DUP3 ADD SSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xF07 SWAP1 DUP3 PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP3 PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xF68 PUSH2 0x238D JUMP JUMPDEST AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xF99 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF PUSH3 0xFF0000 PUSH0 SLOAD SWAP3 PUSH1 0x10 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xFE9 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH6 0xFF0000000000 PUSH0 SLOAD SWAP3 PUSH1 0x28 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x38 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1062 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH5 0xFF00000000 PUSH0 SLOAD SWAP3 PUSH1 0x20 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x10AA CALLDATASIZE PUSH2 0x25ED JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x30 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE DUP2 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xF0D JUMPI POP PUSH1 0x10 SLOAD DUP2 PUSH1 0x10 SSTORE DUP1 DUP3 LT PUSH2 0x115E JUMPI JUMPDEST POP PUSH1 0x20 DUP1 SWAP3 ADD PUSH1 0x10 PUSH0 MSTORE PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x112C JUMPI STOP JUMPDEST DUP2 MLOAD PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 DUP3 ADD SSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x118E SWAP1 DUP3 PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP3 PUSH2 0x1117 JUMP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x11AD PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH0 SLOAD SWAP3 PUSH1 0x30 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x11 SLOAD PUSH1 0x8 SHR AND SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1238 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH1 0xFF PUSH1 0xFF NOT PUSH1 0x11 SLOAD AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x38 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x12B7 CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH2 0xFF00 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x18 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT SWAP1 DUP3 DUP3 CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x35B JUMPI DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x35B JUMPI PUSH2 0x137B PUSH2 0x23B0 JUMP JUMPDEST POP DUP3 PUSH1 0x11 SLOAD SWAP2 PUSH1 0xFF DUP4 AND ISZERO PUSH2 0x15CE JUMPI JUMPDEST POP POP POP PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH2 0x15C1 JUMPI JUMPDEST PUSH1 0x2 SLOAD SWAP2 PUSH1 0xFF PUSH1 0x20 SWAP4 DUP5 SHR AND PUSH2 0x15B4 JUMPI JUMPDEST PUSH1 0x9 SLOAD SWAP1 PUSH1 0xFF DUP3 AND PUSH2 0x13C9 JUMPI JUMPDEST POP POP PUSH1 0xFF PUSH0 SLOAD PUSH1 0x18 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x8 SHR AND SWAP2 DUP3 ISZERO PUSH2 0x1558 JUMPI PUSH1 0xA SLOAD SWAP2 PUSH2 0x13F7 DUP4 PUSH2 0x3566 JUMP JUMPDEST ISZERO PUSH2 0x14FC JUMPI POP PUSH1 0xFF NOT DUP1 SWAP2 AND PUSH1 0x9 SSTORE DUP4 MLOAD SWAP1 DUP6 PUSH0 SWAP2 PUSH2 0x1415 DUP6 PUSH2 0x3566 JUMP JUMPDEST SWAP1 DUP2 DUP6 MSTORE DUP3 DUP6 ADD SWAP6 PUSH1 0x1 SWAP2 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x14E3 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x148E JUMPI JUMPDEST POP POP POP PUSH2 0x147E SWAP4 SWAP3 DUP3 PUSH2 0x144D PUSH0 SWAP5 DUP6 SWAP5 SUB DUP3 PUSH2 0x2431 JUMP JUMPDEST MLOAD SWAP1 DUP3 DUP6 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x1486 JUMPI RETURNDATASIZE SWAP2 PUSH2 0x1464 DUP4 PUSH2 0x24EA JUMP JUMPDEST SWAP3 PUSH2 0x1471 DUP7 MLOAD SWAP5 DUP6 PUSH2 0x2431 JUMP JUMPDEST DUP4 MSTORE RETURNDATASIZE PUSH0 DUP8 DUP6 ADD RETURNDATACOPY PUSH2 0x3C13 JUMP JUMPDEST POP PUSH0 DUP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x3C13 JUMP JUMPDEST PUSH1 0xA PUSH0 SWAP1 DUP2 MSTORE SWAP3 SWAP4 POP PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 JUMPDEST DUP3 DUP5 LT PUSH2 0x14D0 JUMPI POP POP POP DUP3 ADD ADD DUP6 DUP3 PUSH2 0x144D PUSH2 0x1436 JUMP JUMPDEST DUP1 SLOAD DUP7 DUP6 ADD DUP7 ADD MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x14B9 JUMP JUMPDEST AND DUP8 MSTORE POP POP ISZERO ISZERO PUSH1 0x5 SHL DUP4 ADD ADD SWAP1 POP DUP6 DUP3 PUSH2 0x144D PUSH2 0x1436 JUMP JUMPDEST PUSH1 0x64 SWAP1 DUP7 DUP7 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x486F6F6B2063616C6C6461746120697320656D70747900000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 DUP3 DUP7 DUP7 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x486F6F6B20636F6E7472616374206E6F74207365740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x15BC PUSH2 0x3A93 JUMP JUMPDEST PUSH2 0x13AA JUMP JUMPDEST PUSH2 0x15C9 PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x1399 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x15F1 PUSH1 0xA4 PUSH1 0x20 SWAP4 ADD PUSH2 0x267F JUMP JUMPDEST AND DUP5 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1696 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP2 PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 PUSH0 SWAP2 PUSH2 0x1677 JUMPI JUMPDEST POP PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP3 DUP2 PUSH2 0x138B JUMP JUMPDEST PUSH2 0x1690 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAAC JUMPI PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST PUSH0 PUSH2 0x1664 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x11 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x16DD PUSH2 0x238D JUMP JUMPDEST SWAP2 PUSH2 0x16E6 PUSH2 0x23B0 JUMP JUMPDEST POP PUSH1 0x5 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1712 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xA4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x172A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xC4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1742 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0x11 SLOAD SWAP1 PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x179D JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP2 POP PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x10 SHR AND PUSH2 0x1790 JUMPI JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x28 SHR AND PUSH2 0x1783 JUMPI JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x28 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x178B PUSH2 0x3A93 JUMP JUMPDEST PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x1798 PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x20 SWAP2 DUP5 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xAB3 JUMPI PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x20 SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP3 PUSH0 SWAP2 PUSH2 0x183D JUMPI JUMPDEST POP PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP1 PUSH2 0x1751 JUMP JUMPDEST PUSH2 0x1854 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0xAAC JUMPI PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST PUSH0 PUSH2 0x182B JUMP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1888 PUSH2 0x238D JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xE SLOAD AND OR PUSH1 0xE SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x3 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x18ED PUSH2 0x238D JUMP JUMPDEST PUSH1 0x24 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP4 CALLDATALOAD SWAP2 DUP4 DUP4 GT PUSH2 0x35B JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x35B JUMPI CALLDATASIZE PUSH1 0x24 DUP5 DUP5 ADD ADD GT PUSH2 0x35B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH2 0x1975 PUSH1 0xA SLOAD PUSH2 0x3566 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x1A9A JUMPI JUMPDEST POP PUSH0 SWAP3 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x19DB JUMPI POP SWAP2 DUP2 SWAP3 PUSH0 SWAP3 PUSH2 0x19CD JUMPI JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0xA SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH1 0x24 SWAP3 POP ADD ADD CALLDATALOAD DUP3 DUP1 PUSH2 0x1997 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP4 PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 SWAP3 PUSH0 SWAP1 JUMPDEST DUP7 DUP3 LT PUSH2 0x1A7E JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 LT PUSH2 0x1A43 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0xA SSTORE STOP JUMPDEST ADD PUSH1 0x24 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP5 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE DUP3 DUP1 DUP1 PUSH2 0x1A38 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP5 DUP9 DUP9 ADD ADD CALLDATALOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD SWAP1 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x1ADF SWAP1 PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP7 LT PUSH2 0x1AE5 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x2669 JUMP JUMPDEST DUP4 PUSH2 0x197E JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x1AD2 JUMP JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x30 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x8 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1B6C SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1B86 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0xFF PUSH0 SLOAD AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x28 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x1BC8 CALLDATASIZE PUSH2 0x25ED JUMP JUMPDEST PUSH1 0x2 SWAP3 SWAP2 SWAP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH5 0xFF00000000 PUSH1 0x20 SWAP6 ISZERO ISZERO PUSH1 0x20 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0xF0D JUMPI POP PUSH1 0x20 SWAP1 PUSH1 0x10 SLOAD DUP4 PUSH1 0x10 SSTORE DUP1 DUP5 LT PUSH2 0x1C7C JUMPI JUMPDEST POP ADD PUSH1 0x10 PUSH0 MSTORE PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1C4A JUMPI STOP JUMPDEST DUP2 MLOAD PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 DUP3 ADD SSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1C41 JUMP JUMPDEST PUSH2 0x1CAC SWAP1 DUP5 PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP5 PUSH2 0x1C39 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x8 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1CE3 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF PUSH8 0xFF00000000000000 PUSH1 0x2 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1D44 CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF PUSH3 0xFF0000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x10 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x9 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x5 SSTORE STOP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1E03 PUSH2 0x238D JUMP JUMPDEST POP PUSH2 0x1E0C PUSH2 0x23B0 JUMP JUMPDEST SWAP2 DUP1 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x84 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1E38 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xA4 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1E50 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST SWAP1 PUSH1 0xC4 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1E68 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xE4 CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x35B JUMPI PUSH2 0x1E86 PUSH2 0xE08 SWAP4 PUSH2 0xCAD SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH2 0x319A JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP2 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0xD SSTORE STOP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1F2B SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1F45 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x8 SHR AND PUSH2 0x1F64 JUMPI JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x8 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1F6C PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x1F54 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT SWAP2 PUSH1 0x20 DUP4 CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP1 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x35B JUMPI PUSH2 0x180 SWAP1 DUP5 CALLDATASIZE SUB ADD SLT PUSH2 0x35B JUMPI PUSH2 0xCAD SWAP3 PUSH2 0x1FB3 SWAP2 ADD PUSH2 0x290C JUMP JUMPDEST SWAP2 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x40 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1FFA PUSH2 0x238D JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xF SLOAD AND OR PUSH1 0xF SSTORE PUSH0 DUP1 RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP3 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x205B SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST SWAP3 PUSH10 0x1000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF PUSH0 SLOAD AND OR PUSH0 SSTORE DUP4 MLOAD SWAP3 DUP4 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0xF0D JUMPI POP PUSH1 0x20 PUSH1 0x1 SWAP4 PUSH1 0x1 SLOAD DUP5 PUSH1 0x1 SSTORE DUP1 DUP6 LT PUSH2 0x20FF JUMPI JUMPDEST POP ADD SWAP1 PUSH1 0x1 PUSH0 MSTORE PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x20CE JUMPI STOP JUMPDEST DUP3 MLOAD PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 DUP3 ADD SSTORE SWAP2 DUP2 ADD SWAP2 DUP5 ADD PUSH2 0x20C5 JUMP JUMPDEST PUSH2 0x212F SWAP1 DUP6 PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP6 PUSH2 0x20BC JUMP JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x214F PUSH2 0x238D JUMP JUMPDEST PUSH2 0x2157 PUSH2 0x23B0 JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x44 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP1 DUP3 ADD CALLDATALOAD PUSH1 0x24 SWAP6 PUSH2 0x2187 DUP3 PUSH2 0x2472 JUMP JUMPDEST SWAP7 PUSH2 0x2194 DUP8 MLOAD SWAP9 DUP10 PUSH2 0x2431 JUMP JUMPDEST DUP3 DUP9 MSTORE PUSH1 0x24 PUSH1 0x20 DUP1 SWAP10 ADD SWAP4 PUSH1 0x7 SHL DUP6 ADD ADD SWAP4 CALLDATASIZE DUP6 GT PUSH2 0x35B JUMPI PUSH1 0x24 ADD SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x2212 JUMPI DUP9 DUP9 DUP9 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x12 DUP3 MSTORE PUSH1 0xFF DUP2 PUSH0 KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x80 SWAP1 DUP2 DUP6 CALLDATASIZE SUB SLT PUSH2 0x35B JUMPI DUP9 MLOAD SWAP2 DUP3 ADD DUP3 DUP2 LT DUP6 DUP3 GT OR PUSH2 0x2298 JUMPI DUP10 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI DUP4 MSTORE DUP11 DUP7 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI DUP12 DUP5 ADD MSTORE DUP10 DUP7 ADD CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI DUP10 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP7 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x35B JUMPI PUSH1 0x80 SWAP4 DUP13 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x21B2 JUMP JUMPDEST DUP4 PUSH1 0x41 DUP10 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF PUSH9 0xFF0000000000000000 PUSH2 0x2308 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH0 SLOAD SWAP4 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x5 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x30 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x28 SHR AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x23F0 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x23F0 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x23F0 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x23F0 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x24A4 DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP4 PUSH2 0x24B2 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2431 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x35B JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x24DB JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x24CD JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x23F0 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x253B DUP3 PUSH2 0x24EA JUMP JUMPDEST SWAP3 PUSH2 0x2549 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2431 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x35B JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP3 ADD SWAP1 ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 PUSH1 0x60 DUP2 SWAP4 PUSH1 0x40 DUP4 DUP3 ADD MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2599 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x258B JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x35B JUMPI PUSH1 0x4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x35B JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x35B JUMPI PUSH1 0x4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x35B JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x35B JUMPI PUSH2 0x2626 SWAP2 PUSH1 0x4 ADD PUSH2 0x248A JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x263C JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 LT PUSH2 0x2674 JUMPI POP POP JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2669 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x26BB DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP4 PUSH2 0x26C9 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2431 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x35B JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x26F2 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x26E4 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2746 DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP4 PUSH2 0x2754 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2431 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x35B JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x277D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x276F JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x35B JUMPI DUP3 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 GT PUSH2 0x35B JUMPI DUP4 PUSH2 0x27B7 SWAP2 DUP7 ADD PUSH2 0x26A0 JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP4 DUP5 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP1 MLOAD PUSH2 0x27DE DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP2 PUSH1 0x40 SWAP8 PUSH2 0x27EE DUP10 MLOAD SWAP5 DUP6 PUSH2 0x2431 JUMP JUMPDEST DUP3 DUP5 MSTORE DUP1 DUP5 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP7 DUP5 GT PUSH2 0x35B JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x2843 JUMPI POP POP POP POP POP SWAP5 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI DUP2 PUSH2 0x282C SWAP2 DUP5 ADD PUSH2 0x272B JUMP JUMPDEST SWAP4 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x2626 SWAP3 ADD PUSH2 0x272B JUMP JUMPDEST DUP5 DUP3 DUP9 SUB SLT PUSH2 0x35B JUMPI DUP11 MLOAD SWAP1 DUP6 DUP3 ADD DUP3 DUP2 LT DUP13 DUP3 GT OR PUSH2 0x23F0 JUMPI DUP13 MSTORE DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x35B JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE DUP14 PUSH2 0x28A2 DUP2 DUP8 ADD PUSH2 0x271E JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x2809 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x28C5 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x263C JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x263C JUMPI JUMP JUMPDEST SWAP1 PUSH0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND SWAP3 PUSH2 0x140 DUP6 ADD SWAP1 PUSH2 0x2957 DUP3 PUSH2 0x267F JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP1 MLOAD SWAP5 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP1 PUSH1 0x4 SWAP5 AND DUP5 DUP8 ADD MSTORE PUSH0 DUP7 PUSH1 0x24 DUP2 DUP12 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0xAB3 JUMPI PUSH0 SWAP1 PUSH0 SWAP8 PUSH2 0x3101 JUMPI JUMPDEST POP PUSH2 0x29AB DUP7 PUSH2 0x267F JUMP JUMPDEST SWAP6 DUP3 DUP5 MLOAD SWAP8 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE AND DUP7 DUP9 ADD MSTORE PUSH0 DUP8 PUSH1 0x24 DUP2 DUP14 GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0xD32 JUMPI PUSH0 SWAP8 PUSH2 0x30BB JUMPI JUMPDEST POP PUSH2 0x29F8 SWAP1 PUSH2 0x267F JUMP JUMPDEST SWAP4 DUP3 DUP5 MLOAD SWAP6 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND DUP7 DUP7 ADD MSTORE PUSH0 DUP6 PUSH1 0x24 DUP2 DUP14 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0xD32 JUMPI PUSH0 SWAP6 PUSH0 SWAP8 PUSH2 0x305E JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2B4E JUMPI DUP13 DUP6 PUSH2 0x2A64 PUSH1 0x20 DUP3 PUSH2 0x2A5B DUP7 DUP11 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND SWAP4 ADD PUSH2 0x267F JUMP JUMPDEST AND SUB PUSH2 0x2AE5 JUMPI PUSH1 0xA0 DUP14 ADD CALLDATALOAD PUSH2 0x2A79 DUP3 DUP12 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP2 SUB PUSH2 0x2ACF JUMPI PUSH2 0x2AA0 SWAP1 PUSH2 0x2A8E DUP4 DUP11 PUSH2 0x28B1 JUMP JUMPDEST MLOAD PUSH2 0x2A99 DUP5 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x3960 JUMP JUMPDEST PUSH2 0x2AAA DUP3 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD SUB PUSH2 0x2ABA JUMPI PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x2A40 JUMP JUMPDEST POP PUSH0 SWAP12 PUSH2 0x100 ADD CALLDATALOAD SWAP11 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP PUSH0 SWAP13 PUSH2 0x100 ADD CALLDATALOAD SWAP12 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP13 DUP6 PUSH2 0x2AF6 DUP9 DUP3 PUSH2 0x2A5B DUP7 DUP11 PUSH2 0x28B1 JUMP JUMPDEST AND EQ PUSH2 0x2B05 JUMPI JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x2AB4 JUMP JUMPDEST PUSH1 0xC0 DUP14 ADD CALLDATALOAD PUSH2 0x2B14 DUP3 DUP12 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP2 SUB PUSH2 0x2ACF JUMPI PUSH2 0x2B29 SWAP1 PUSH2 0x2A8E DUP4 DUP11 PUSH2 0x28B1 JUMP JUMPDEST PUSH2 0x2B33 DUP3 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD EQ PUSH2 0x2AFD JUMPI POP PUSH0 SWAP12 PUSH2 0x100 ADD CALLDATALOAD SWAP11 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP SWAP7 POP SWAP8 SWAP9 SWAP4 POP POP SWAP8 SWAP5 POP SWAP2 POP PUSH2 0x100 DUP5 ADD CALLDATALOAD SWAP7 PUSH1 0x3 SLOAD ISZERO ISZERO PUSH0 EQ PUSH2 0x2D43 JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2B83 PUSH1 0x3 SLOAD DUP10 PUSH2 0x2629 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x2BB0 JUMPI JUMPDEST POP POP POP POP PUSH1 0xE0 SWAP1 JUMPDEST ADD CALLDATALOAD ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2BA2 JUMPI POP SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 POP SLOAD PUSH1 0x20 SHR AND ISZERO SWAP2 SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP7 DUP5 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI PUSH2 0x2C89 JUMPI DUP3 PUSH2 0x2BCD SWAP2 PUSH2 0x28F2 JUMP JUMPDEST SWAP7 PUSH2 0x2BD9 DUP5 DUP7 ADD PUSH2 0x267F JUMP JUMPDEST DUP3 EXTCODESIZE ISZERO PUSH2 0x2C85 JUMPI DUP5 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP2 DUP3 MSTORE ADDRESS PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 SWAP3 SWAP2 DUP6 SWAP2 DUP5 SWAP2 DUP3 SWAP1 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x60 ADD SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2C7C JUMPI POP SWAP1 DUP4 SWAP2 PUSH2 0x2C64 JUMPI JUMPDEST POP POP PUSH1 0xE0 SWAP1 JUMPDEST SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x2B8B JUMP JUMPDEST PUSH2 0x2C6D SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH2 0x2C78 JUMPI DUP2 PUSH0 PUSH2 0x2C55 JUMP JUMPDEST POP DUP1 REVERT JUMPDEST MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST DUP3 PUSH2 0x2C97 SWAP2 SWAP9 SWAP5 SWAP4 SWAP9 PUSH2 0x28FF JUMP JUMPDEST SWAP7 PUSH2 0x2CA4 PUSH1 0x20 DUP7 ADD PUSH2 0x267F JUMP JUMPDEST SWAP2 DUP1 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP5 DUP4 ADD SWAP5 DUP6 MSTORE ADDRESS PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP3 PUSH0 SWAP2 DUP5 SWAP2 DUP3 SWAP1 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x60 ADD SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D3A JUMPI POP PUSH2 0x2D26 JUMPI JUMPDEST POP PUSH1 0xE0 SWAP1 PUSH2 0x2C5B JUMP JUMPDEST PUSH2 0x2D31 SWAP2 SWAP3 POP PUSH2 0x241D JUMP JUMPDEST PUSH0 SWAP1 PUSH1 0xE0 PUSH2 0x2D1D JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 DUP3 SLOAD DUP1 PUSH2 0x2D5B JUMPI JUMPDEST POP POP POP POP POP PUSH1 0xE0 SWAP1 PUSH2 0x2B93 JUMP JUMPDEST PUSH2 0x2D6E PUSH8 0xDE0B6B3A7640000 SWAP2 DUP11 PUSH2 0x2629 JUMP JUMPDEST DIV DUP1 ISZERO PUSH2 0x2D4E JUMPI SWAP1 SWAP2 SWAP3 SWAP4 SWAP8 DUP6 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI DUP3 SWAP1 PUSH2 0x2F29 JUMPI PUSH2 0x2D94 SWAP2 PUSH2 0x28FF JUMP JUMPDEST SWAP8 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x38 SHR AND PUSH2 0x2DB6 JUMPI JUMPDEST POP POP POP POP POP PUSH1 0xE0 SWAP1 JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2D4E JUMP JUMPDEST DUP3 DUP7 ADD SWAP4 PUSH2 0x2DC3 DUP6 PUSH2 0x267F JUMP JUMPDEST AND SWAP5 DUP4 MLOAD DUP1 SWAP7 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 SWAP8 DUP9 SWAP2 DUP2 PUSH0 DUP2 PUSH2 0x2E24 DUP11 DUP11 DUP11 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2F1F JUMPI SWAP1 DUP8 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x2EE0 JUMPI JUMPDEST POP PUSH0 PUSH2 0x2E47 PUSH2 0x2E9E SWAP8 PUSH2 0x267F JUMP JUMPDEST SWAP2 DUP7 MLOAD SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D3A JUMPI POP PUSH2 0x2EB7 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x2DA3 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2ED9 JUMPI JUMPDEST PUSH2 0x2ECA DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x2EAF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2EC0 JUMP JUMPDEST SWAP4 DUP5 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2F18 JUMPI JUMPDEST PUSH2 0x2EF5 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 PUSH2 0x2E47 PUSH2 0x2E9E SWAP8 PUSH2 0x2F0F DUP11 SWAP8 PUSH2 0x271E JUMP JUMPDEST POP SWAP8 POP POP PUSH2 0x2E39 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2EEB JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x2F32 SWAP2 PUSH2 0x28F2 JUMP JUMPDEST SWAP8 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x38 SHR AND PUSH2 0x2F4E JUMPI JUMPDEST POP POP POP POP POP PUSH1 0xE0 SWAP1 PUSH2 0x2DAC JUMP JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP8 ADD SWAP5 PUSH2 0x2F5E DUP7 PUSH2 0x267F JUMP JUMPDEST AND DUP7 DUP6 MLOAD DUP1 SWAP3 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 PUSH0 DUP2 PUSH2 0x2FBA DUP11 DUP11 DUP11 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2F1F JUMPI SWAP1 DUP8 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x301F JUMPI JUMPDEST POP PUSH0 PUSH2 0x2E47 PUSH2 0x2FDD SWAP8 PUSH2 0x267F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D3A JUMPI POP PUSH2 0x2FF6 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x2F41 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3018 JUMPI JUMPDEST PUSH2 0x3009 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x2FEE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FFF JUMP JUMPDEST SWAP4 DUP5 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3057 JUMPI JUMPDEST PUSH2 0x3034 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 PUSH2 0x2E47 PUSH2 0x2FDD SWAP8 PUSH2 0x304E DUP11 SWAP8 PUSH2 0x271E JUMP JUMPDEST POP SWAP8 POP POP PUSH2 0x2FCF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x302A JUMP JUMPDEST SWAP6 POP SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP8 RETURNDATACOPY PUSH2 0x3071 DUP2 DUP8 PUSH2 0x2431 JUMP JUMPDEST DUP6 ADD SWAP5 DUP5 DUP2 DUP8 SUB SLT PUSH2 0x35B JUMPI DUP1 MLOAD SWAP6 PUSH8 0xFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP2 GT PUSH2 0x35B JUMPI DUP2 PUSH2 0x309D SWAP2 DUP5 ADD PUSH2 0x272B JUMP JUMPDEST SWAP7 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x30B4 SWAP3 ADD PUSH2 0x272B JUMP JUMPDEST SWAP6 PUSH0 PUSH2 0x2A3D JUMP JUMPDEST SWAP1 SWAP7 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x30CD DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x35B JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x35B JUMPI PUSH2 0x29F8 SWAP3 PUSH2 0x30FA SWAP3 ADD PUSH2 0x272B JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x29EE JUMP JUMPDEST SWAP1 POP PUSH2 0x3120 SWAP2 SWAP7 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3118 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x278C JUMP JUMPDEST SWAP8 SWAP3 SWAP2 POP SWAP7 PUSH2 0x29A1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x1 DUP1 SLOAD SWAP1 DUP2 DUP4 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x20 DUP5 ADD SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP3 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3182 JUMPI POP POP POP POP POP SWAP1 PUSH2 0x3180 SWAP2 SUB DUP4 PUSH2 0x2431 JUMP JUMPDEST JUMP JUMPDEST DUP5 SLOAD DUP7 MSTORE DUP9 SWAP7 POP SWAP5 DUP6 ADD SWAP5 SWAP4 DUP4 ADD SWAP4 SWAP1 DUP4 ADD SWAP1 PUSH2 0x3168 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x48 SHR AND PUSH2 0x3559 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 PUSH32 0x0 AND SWAP1 PUSH1 0x40 SWAP5 DUP6 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x4 SWAP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x354F JUMPI PUSH0 SWAP2 PUSH2 0x3533 JUMPI JUMPDEST POP PUSH1 0x7 DUP1 SLOAD ISZERO PUSH2 0x3349 JUMPI PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x3333 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x325F PUSH2 0x3256 DUP4 DUP9 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP5 SLOAD SWAP1 PUSH2 0x2629 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x3271 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x3237 JUMP JUMPDEST PUSH2 0x3285 DUP3 PUSH2 0x327F DUP4 DUP10 PUSH2 0x28B1 JUMP JUMPDEST MLOAD PUSH2 0x28F2 JUMP JUMPDEST PUSH2 0x328F DUP3 DUP9 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP5 PUSH2 0x329B DUP3 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND DUP8 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI DUP11 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 DUP11 ADD SWAP1 DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB DUP2 DUP4 DUP12 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3329 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x331A JUMPI JUMPDEST POP PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x3323 SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH0 PUSH2 0x3314 JUMP JUMPDEST DUP11 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP POP SWAP4 SWAP1 POP PUSH1 0xFF SWAP2 POP JUMPDEST PUSH0 SLOAD SWAP1 SHR AND ISZERO SWAP2 SWAP1 JUMP JUMPDEST POP SWAP2 SWAP5 SWAP4 SWAP6 SWAP3 SWAP1 PUSH1 0x8 DUP1 SLOAD PUSH2 0x3368 JUMPI JUMPDEST POP POP POP POP PUSH1 0xFF SWAP2 SWAP3 SWAP4 POP PUSH2 0x333F JUMP JUMPDEST PUSH0 SWAP8 SWAP6 SWAP8 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x351C JUMPI DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3396 PUSH2 0x338D DUP5 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP6 SLOAD SWAP1 PUSH2 0x2629 JUMP JUMPDEST DIV DUP5 PUSH2 0x33A2 DUP5 DUP10 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND DUP2 PUSH2 0x33B5 JUMPI JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x336D JUMP JUMPDEST DUP9 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0x3410 DUP7 PUSH1 0x20 SWAP9 DUP10 SWAP6 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP7 GAS CALL DUP1 ISZERO PUSH2 0x3329 JUMPI SWAP1 DUP5 SWAP3 SWAP2 PUSH2 0x34E9 JUMPI JUMPDEST POP DUP12 PUSH2 0x3445 DUP7 PUSH2 0x343F DUP7 PUSH2 0x3439 DUP4 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MLOAD PUSH2 0x28FF JUMP JUMPDEST SWAP3 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP11 PUSH2 0x349E DUP12 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP11 GAS CALL DUP1 ISZERO PUSH2 0x34DF JUMPI PUSH2 0x34B6 JUMPI JUMPDEST DUP6 SWAP2 PUSH2 0x33AA JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x34D8 JUMPI JUMPDEST PUSH2 0x34C9 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x34AF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34BF JUMP JUMPDEST DUP9 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 DUP3 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3515 JUMPI JUMPDEST PUSH2 0x34FE DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH2 0x3510 DUP5 SWAP3 PUSH2 0x271E JUMP JUMPDEST PUSH2 0x3425 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34F4 JUMP JUMPDEST POP POP POP POP POP PUSH1 0xFF SWAP2 POP SWAP3 SWAP2 SWAP3 DUP4 SWAP3 SWAP2 PUSH0 DUP1 DUP1 PUSH2 0x3359 JUMP JUMPDEST PUSH2 0x3547 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3118 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x322B JUMP JUMPDEST DUP8 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x2626 PUSH2 0x312A JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x35AD JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x3580 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x3575 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x35B JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x48 SHR AND PUSH2 0x3559 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 PUSH32 0x0 AND SWAP1 PUSH1 0x40 SWAP5 DUP6 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x4 SWAP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x354F JUMPI PUSH0 SWAP2 PUSH2 0x3944 JUMPI JUMPDEST POP PUSH1 0x5 DUP1 SLOAD ISZERO PUSH2 0x3779 JUMPI PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x3763 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x369F PUSH2 0x3256 DUP4 DUP9 PUSH2 0x28B1 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x36B1 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x3680 JUMP JUMPDEST PUSH2 0x36BF DUP3 PUSH2 0x3439 DUP4 DUP10 PUSH2 0x28B1 JUMP JUMPDEST PUSH2 0x36C9 DUP3 DUP9 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP5 PUSH2 0x36D5 DUP3 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND DUP8 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI DUP11 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 DUP11 ADD SWAP1 DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB DUP2 DUP4 DUP12 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3329 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3754 JUMPI JUMPDEST POP PUSH2 0x36A7 JUMP JUMPDEST PUSH2 0x375D SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH0 PUSH2 0x374E JUMP JUMPDEST POP POP POP POP SWAP4 POP POP POP JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x30 SHR AND ISZERO SWAP2 SWAP1 JUMP JUMPDEST POP SWAP2 SWAP5 SWAP6 SWAP3 SWAP1 PUSH1 0x6 SWAP3 PUSH1 0x6 SLOAD PUSH2 0x3796 JUMPI JUMPDEST POP POP POP POP POP POP SWAP1 PUSH2 0x376C JUMP JUMPDEST PUSH0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x3932 JUMPI DUP4 DUP4 PUSH2 0x37AD DUP4 DUP6 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND PUSH8 0xDE0B6B3A7640000 PUSH2 0x37CE PUSH2 0x37C5 DUP6 DUP14 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP10 SLOAD SWAP1 PUSH2 0x2629 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x37E1 JUMPI JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x3798 JUMP JUMPDEST DUP9 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0x383C DUP7 PUSH1 0x20 SWAP9 DUP10 SWAP6 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP7 GAS CALL DUP1 ISZERO PUSH2 0x3329 JUMPI SWAP1 DUP5 SWAP3 SWAP2 PUSH2 0x38FF JUMPI JUMPDEST POP DUP12 PUSH2 0x3865 DUP7 PUSH2 0x343F DUP7 PUSH2 0x327F DUP4 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP11 PUSH2 0x38BE DUP12 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP11 GAS CALL DUP1 ISZERO PUSH2 0x34DF JUMPI PUSH2 0x38D6 JUMPI JUMPDEST DUP6 SWAP2 PUSH2 0x37D6 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x38F8 JUMPI JUMPDEST PUSH2 0x38E9 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x38CF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x38DF JUMP JUMPDEST SWAP2 DUP3 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x392B JUMPI JUMPDEST PUSH2 0x3914 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH2 0x3926 DUP5 SWAP3 PUSH2 0x271E JUMP JUMPDEST PUSH2 0x3851 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x390A JUMP JUMPDEST POP POP POP POP POP POP POP PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x378A JUMP JUMPDEST PUSH2 0x3958 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3118 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3674 JUMP JUMPDEST SWAP2 PUSH2 0x396A SWAP2 PUSH2 0x2629 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x263C JUMPI DUP2 ISZERO PUSH2 0x398F JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xB SLOAD AND PUSH1 0xC SLOAD DUP2 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI PUSH0 SWAP2 PUSH1 0x24 DUP4 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH32 0xA1CFA04100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x3A2D JUMPI PUSH2 0x3A24 JUMPI POP JUMP JUMPDEST PUSH2 0x3180 SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x10 SLOAD SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 DUP1 SWAP2 ADD SWAP2 PUSH1 0x10 PUSH0 MSTORE PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3A7C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 SLOAD DUP6 MSTORE SWAP4 DUP5 ADD SWAP4 PUSH1 0x1 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3A6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND DUP2 PUSH1 0xE SLOAD AND SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP1 PUSH1 0x4 DUP6 ADD MSTORE PUSH0 DUP5 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x3A2D JUMPI PUSH0 SWAP5 PUSH2 0x3BD3 JUMPI JUMPDEST POP DUP3 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI SWAP1 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH32 0xD8F4CF3C00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x84 DUP5 ADD SWAP1 PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x24 DUP6 ADD MSTORE DUP3 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xA4 DUP5 ADD SWAP3 PUSH1 0x20 DUP1 SWAP2 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x3BB6 JUMPI POP POP POP POP POP SWAP2 DUP2 PUSH0 DUP2 PUSH2 0x3BA5 DUP3 SWAP7 PUSH2 0x3B96 PUSH1 0x3 NOT SWAP2 DUP3 DUP6 DUP3 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x3A38 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB ADD PUSH1 0x64 DUP5 ADD MSTORE PUSH2 0x3A38 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3A2D JUMPI PUSH2 0x3A24 JUMPI POP JUMP JUMPDEST DUP5 MLOAD DUP2 AND DUP7 MSTORE DUP9 SWAP7 POP SWAP5 DUP3 ADD SWAP5 SWAP4 DUP3 ADD SWAP4 PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3B6B JUMP JUMPDEST SWAP1 SWAP4 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3BE5 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x35B JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x3C0C SWAP3 ADD PUSH2 0x26A0 JUMP JUMPDEST SWAP3 PUSH0 PUSH2 0x3B14 JUMP JUMPDEST SWAP1 PUSH2 0x3C50 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x3C28 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x3CA3 JUMPI JUMPDEST PUSH2 0x3C61 JUMPI POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x3C59 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND PUSH27 0x14BCD3CC77A998290237C5D5BFFC1B5778F64E5CAF1AC09A2607FC GT MLOAD PUSH22 0x64736F6C634300081A00330000000000000000000000 ","sourceMap":"905:18485:82:-:0;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;-1:-1:-1;;;;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;905:18485:82;;;;;;409:14:68;;905:18485:82;;;2931:27;905:18485;;;2931:27;905:18485;;;;;;;;;409:14:68;905:18485:82;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;905:18485:82;;;;;;-1:-1:-1;905:18485:82;;;;;-1:-1:-1;905:18485:82"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":9101,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_25934":{"entryPoint":9136,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":13751,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IERC20_dyn_fromMemory":{"entryPoint":9888,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IERC20_dynt_array_struct_TokenInfo_dynt_array_uint256_dynt_array_uint256_dyn_fromMemory":{"entryPoint":10124,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_array_uint256_dyn":{"entryPoint":9354,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":10027,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool":{"entryPoint":9086,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":10014,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_boolt_array_uint256_dyn":{"entryPoint":9709,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_boolt_contract_RateProviderMockt_uint256":{"entryPoint":9645,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_bytes":{"entryPoint":9508,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn_storage":{"entryPoint":14904,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bool_array_uint256_dyn":{"entryPoint":9578,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_bool_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_contract_IERC20_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"array_allocation_size_array_struct_TokenConfig_dyn":{"entryPoint":9330,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":9450,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":10495,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":9769,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":10482,"id":null,"parameterSlots":2,"returnSlots":1},"clear_storage_range_uint256":{"entryPoint":9833,"id":null,"parameterSlots":2,"returnSlots":0},"copy_array_from_storage_to_memory_array_uint256_dyn":{"entryPoint":12586,"id":null,"parameterSlots":0,"returnSlots":1},"extract_byte_array_length":{"entryPoint":13670,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":9265,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_25975":{"entryPoint":9171,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_26081":{"entryPoint":9245,"id":null,"parameterSlots":1,"returnSlots":0},"fun_onAfterAddLiquidity":{"entryPoint":13795,"id":32936,"parameterSlots":2,"returnSlots":2},"fun_onAfterRemoveLiquidity":{"entryPoint":12698,"id":33105,"parameterSlots":2,"returnSlots":2},"fun_onAfterSwap":{"entryPoint":10508,"id":32663,"parameterSlots":1,"returnSlots":2},"fun_setBalancesInVault":{"entryPoint":14995,"id":33566,"parameterSlots":0,"returnSlots":0},"fun_toRawUndoRateRoundDown":{"entryPoint":14688,"id":6135,"parameterSlots":3,"returnSlots":1},"fun_updateTokenRate":{"entryPoint":14780,"id":33539,"parameterSlots":0,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":15379,"id":39838,"parameterSlots":3,"returnSlots":1},"memory_array_index_access_contract_IERC20_dyn":{"entryPoint":10417,"id":null,"parameterSlots":2,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":9855,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"27649":[{"length":32,"start":10535},{"length":32,"start":12738},{"length":32,"start":13835},{"length":32,"start":15019}]},"linkReferences":{},"object":"608060409080825260049182361015610016575f80fd5b60e05f35811c9283625b449c1461235c57508262d332fd146123365782630227346714612318578263039388ba146122c35782630b89f182146121355782630c54b1de146120285782631064dfdd14611fcc57826318b6eb5514611f715782631c149e2814611efa578263214ff4c514611ee2578263232b59f714611ea95782632352c2ed14611e8c5782632754888d14611de75782632e55a84114611dcf57826331378f4f14611dac578263335d412614611d215782633478db7314611cca57826334a168ec14611cb257826334e3a8c314611bb957826335f7290e14611b9457826338be241d14611b3a5782633d05719a14611b1457826340dc21d414611aef578263423ef816146118d45782634392312a146118b65782634437152a1461185a57826345421ec7146116c35782634f036756146116a05782635211fa77146113435782635351b2301461131e5782635991de93146112945782635cd0074614611272578263677db20e1461124d57826368c6db6a1461121f5782636a9a0611146111e85782636e7d75e51461119457826371eff9d21461109b5782637b695d101461104957826380c554c11461102357826382fb5d2114610fd057826387ac569114610f805782638f5fae6214610f3957826393c4b28614610e15578263976907cc14610d625782639f94c52214610d3c578263a0e8f5ac14610c31578263a5098f1014610c0e578263a55e47be14610bbe578263a975dda014610b9b578263af72105d14610b75578263b127e38514610b49578263b298157b14610b26578263b3a763b914610ad5578263b445fbe714610abd578263ba5f9f401461090d578263bd825f6b146108ef578263c25dade814610888578263d3fca63714610839578263d4f83182146107e4578263d77153a71461069c57508163da09aacf14610684578163dc7776ca14610641578163dda1c15b14610629578163e326f03a14610605578163e4c593d7146105e2578163e5e3b67e146105b4578163e62eecdd14610528578163e908e85d1461050b578163e9f7c591146103c4578163eb499270146103a7578163f5279d9c14610383578163f8b5ef851461035f575063fc6e0f5914610344575f80fd5b3461035b57602060031936011261035b5780359055005b5f80fd5b3461035b575f60031936011261035b5760209060ff5f5460481c1690519015158152f35b3461035b575f60031936011261035b5760209060ff5f5460081c1690519015158152f35b3461035b575f60031936011261035b576020906007549051908152f35b3461035b5761014060031936011261035b576103e081516123d3565b6103e861237e565b9060243580151580910361035b5760443580151580910361035b5760643580151580910361035b5760843580151580910361035b5760a4359081151580920361035b5760c4359283151580940361035b5760e4359485151580960361035b57610104359687151580980361035b576101243580151580910361035b576013549060481b69ff000000000000000000169a151560ff16907fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000016179060081b61ff0016179060101b62ff000016179060181b63ff00000016179060201b64ff0000000016179060281b65ff000000000016179060301b66ff00000000000016179060381b67ff000000000000001617911b68ff00000000000000001617176013555f80f35b3461035b575f60031936011261035b576020906006549051908152f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff61054b366125ad565b92917fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff63ff00000060025492151560181b16911617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b3461035b57602060031936011261035b576105cd61237e565b151560ff60ff19600954169116176009555f80f35b3461035b575f60031936011261035b576002549051602091821c60ff1615158152f35b3461035b575f60031936011261035b5760209060ff5f5460101c1690519015158152f35b823461035b57602060031936011261035b5735600655005b3461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff61066f61238d565b165f908152601260205220805460ff19169055005b823461035b57602060031936011261035b5735600355005b903461035b575f60031936011261035b578051610140926106bc826123d3565b5f82525f60208301525f838301525f60608301525f60808301525f60a08301525f60c08301525f818301526101005f818401525f61012080940152835193610703856123d3565b6013549283809281838660ff9384841615159b8c8152602081019c8d878760081c1615159052868d84840193828960101c1615158552826060820197818b60181c161515895281608084019a818d60201c1615158c5260a085019c8d838260281c161515905260c086019e8f9160301c161515905284019d60381c1615158d5282019d871c1615158d52019c60481c1615158c52602083519e8f928352511515910152511515908c015251151560608b015251151560808a015251151560a089015251151560c0880152511515908601525115159084015251151590820152f35b3461035b57602060031936011261035b576107fd61237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff67ff000000000000005f549260381b169116175f555f80f35b3461035b57602060031936011261035b5761085261237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff005f549260081b169116175f555f80f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff6108ab366125ad565b929160ff60ff19600254169115151617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b503461035b575f60031936011261035b576020906008549051908152f35b9091503461035b5760031936011261035b5761092761238d565b916109306123b0565b5080604435101561035b5767ffffffffffffffff60843581811161035b5761095b903690840161248a565b5060a43581811161035b57610973903690840161248a565b5060c43590811161035b5761098b9036908301612524565b506011549060ff8216156109e6575b50506020915060ff60025460181c166109d9575b60ff60025460301c166109cc575b60ff5f5460381c16159051908152f35b6109d4613a93565b6109bc565b6109e16139bc565b6109ae565b73ffffffffffffffffffffffffffffffffffffffff936020918451809681937f5e01eb5a000000000000000000000000000000000000000000000000000000008352165afa928315610ab35774ffffffffffffffffffffffffffffffffffffffff006020947fffffffffffffffffffffff0000000000000000000000000000000000000000ff925f91610a86575b5060081b169116176011555f8061099a565b610aa69150863d8811610aac575b610a9e8183612431565b8101906135b7565b5f610a74565b503d610a94565b82513d5f823e3d90fd5b833461035b57602060031936011261035b5735600755005b3461035b57602060031936011261035b57610aee61237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff63ff0000005f549260181b169116175f555f80f35b503461035b575f60031936011261035b5760209060ff6002541690519015158152f35b3461035b57602060031936011261035b57610b6261237e565b151560ff60ff195f54169116175f555f80f35b503461035b575f60031936011261035b5760209060ff60025460101c1690519015158152f35b503461035b575f60031936011261035b575f548151911c60ff1615158152602090f35b50823461035b57602060031936011261035b57359060015482101561035b5760209160015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601549051908152f35b503461035b575f60031936011261035b575f549051602091821c60ff1615158152f35b9091503461035b576003199060608236011261035b5783359167ffffffffffffffff831161035b57823603011261035b57610c6a6123b0565b50600d549273ffffffffffffffffffffffffffffffffffffffff9081600f54169283610cb1575b5f54855160109190911c60ff1615815260208101879052604090f35b0390f35b82610cc060a46020930161267f565b168551928380927f5e01eb5a0000000000000000000000000000000000000000000000000000000082525afa908115610d32575f91610d13575b501614610d0b575b5f808080610c91565b5f9150610d02565b610d2c915060203d602011610aac57610a9e8183612431565b5f610cfa565b84513d5f823e3d90fd5b503461035b575f60031936011261035b5760209060ff60025460181c1690519015158152f35b83823461035b5761010060031936011261035b57610d7e61238d565b50610d876123b0565b916005604435101561035b5767ffffffffffffffff9260643584811161035b57610db4903690840161248a565b5060843584811161035b57610dcc903690840161248a565b9060c43585811161035b57610de4903690850161248a565b5060e43594851161035b57610e02610e0893610cad96369101612524565b506135e3565b929091519283928361256a565b833461035b57610e24366125ed565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff65ff000000000060025492151560281b1691161760025581519067ffffffffffffffff8211610f0d57680100000000000000008211610f0d575060105481601055808210610ed7575b50602080920160105f525f5b828110610ea557005b81517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67282015590830190600101610e9c565b610f0790827f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729182019101612669565b82610e90565b6041907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b503461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff610f6861238d565b165f908152601260205220805460ff19166001179055005b3461035b57602060031936011261035b57610f9961237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff62ff00005f549260101b169116175f555f80f35b3461035b57602060031936011261035b57610fe961237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff65ff00000000005f549260281b169116175f555f80f35b503461035b575f60031936011261035b5760209060ff60025460381c1690519015158152f35b3461035b57602060031936011261035b5761106261237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff64ff000000005f549260201b169116175f555f80f35b833461035b576110aa366125ed565b91907fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff00000000000060025492151560301b1691161760025581519067ffffffffffffffff8211610f0d57680100000000000000008211610f0d57506010548160105580821061115e575b50602080920160105f525f5b82811061112c57005b81517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67282015590830190600101611123565b61118e90827f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729182019101612669565b82611117565b3461035b57602060031936011261035b576111ad61237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff66ff0000000000005f549260301b169116175f555f80f35b503461035b575f60031936011261035b5760209073ffffffffffffffffffffffffffffffffffffffff60115460081c169051908152f35b3461035b57602060031936011261035b5761123861237e565b151560ff60ff19601154169116176011555f80f35b503461035b575f60031936011261035b5760209060ff5f5460381c1690519015158152f35b503461035b575f60031936011261035b5760209060ff5f541690519015158152f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff6112b7366125ad565b92917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0060025492151560081b16911617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b503461035b575f60031936011261035b5760209060ff5f5460181c1690519015158152f35b9091503461035b5760031990828236011261035b5783359167ffffffffffffffff831161035b57823603011261035b5761137b6123b0565b50826011549160ff8316156115ce575b50505060ff600254166115c1575b6002549160ff602093841c166115b4575b6009549060ff82166113c9575b505060ff5f5460181c16159051908152f35b73ffffffffffffffffffffffffffffffffffffffff8260081c1691821561155857600a54916113f783613566565b156114fc575060ff19809116600955835190855f9161141585613566565b90818552828501956001916001821691825f146114e357505060011461148e575b50505061147e93928261144d5f9485940382612431565b519082855af13d15611486573d91611464836124ea565b9261147186519485612431565b83523d5f8785013e613c13565b505f806113b7565b606091613c13565b600a5f9081529293507fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8284106114d057505050820101858261144d611436565b80548685018601529284019281016114b9565b1687525050151560051b8301019050858261144d611436565b606490868651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601660248201527f486f6f6b2063616c6c6461746120697320656d707479000000000000000000006044820152fd5b606482868651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f486f6f6b20636f6e7472616374206e6f742073657400000000000000000000006044820152fd5b6115bc613a93565b6113aa565b6115c96139bc565b611399565b73ffffffffffffffffffffffffffffffffffffffff6115f160a46020930161267f565b168451928380927f5e01eb5a0000000000000000000000000000000000000000000000000000000082525afa908115611696577fffffffffffffffffffffff0000000000000000000000000000000000000000ff9174ffffffffffffffffffffffffffffffffffffffff00915f91611677575b5060081b169116176011555f828161138b565b611690915060203d602011610aac57610a9e8183612431565b5f611664565b83513d5f823e3d90fd5b503461035b575f60031936011261035b5760209060ff6011541690519015158152f35b9091503461035b5760031936011261035b576116dd61238d565b916116e66123b0565b506005604435101561035b5767ffffffffffffffff60643581811161035b57611712903690840161248a565b5060a43581811161035b5761172a903690840161248a565b5060c43590811161035b576117429036908301612524565b506011549060ff82161561179d575b50506020915060ff60025460101c16611790575b60ff60025460281c16611783575b60ff5f5460281c16159051908152f35b61178b613a93565b611773565b6117986139bc565b611765565b73ffffffffffffffffffffffffffffffffffffffff936020918451809681937f5e01eb5a000000000000000000000000000000000000000000000000000000008352165afa928315610ab35774ffffffffffffffffffffffffffffffffffffffff006020947fffffffffffffffffffffff0000000000000000000000000000000000000000ff925f9161183d575b5060081b169116176011555f80611751565b6118549150863d8811610aac57610a9e8183612431565b5f61182b565b3461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff61188861238d565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600e541617600e555f80f35b503461035b575f60031936011261035b576020906003549051908152f35b83823461035b5760031936011261035b576118ed61238d565b60249167ffffffffffffffff9183359183831161035b573660238401121561035b5782013592831161035b57366024848401011161035b577fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006009549260081b16911617600955611975600a54613566565b601f8111611a9a575b505f92601f83116001146119db57509181925f926119cd575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617600a555f80f35b602492500101358280611997565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316937fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8925f905b868210611a7e5750508360019510611a43575b505050811b01600a55005b01602401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c19169055828080611a38565b9091936020600181928488880101358155019501920190611a25565b611adf907fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8601f850160051c81019160208610611ae5575b601f0160051c0190612669565b8361197e565b9091508190611ad2565b503461035b575f60031936011261035b5760209060ff5f5460301c1690519015158152f35b503461035b575f60031936011261035b5760209060ff60025460081c1690519015158152f35b83823461035b57606060031936011261035b5767ffffffffffffffff823581811161035b57611b6c903690850161248a565b5060443590811161035b57602092611b8691369101612524565b5060ff5f5416159051908152f35b503461035b575f60031936011261035b5760209060ff5f5460281c1690519015158152f35b833461035b57611bc8366125ed565b6002929192547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff64ff00000000602095151560201b1691161760025580519167ffffffffffffffff8311610f0d57680100000000000000008311610f0d575060209060105483601055808410611c7c575b500160105f525f5b828110611c4a57005b81517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67282015590830190600101611c41565b611cac90847f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6729182019101612669565b84611c39565b833461035b57602060031936011261035b5735600855005b3461035b57602060031936011261035b57611ce361237e565b15157fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff67ff000000000000006002549260381b169116176002555f80f35b3461035b5773ffffffffffffffffffffffffffffffffffffffff611d44366125ad565b92917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff62ff000060025492151560101b16911617600255167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55600c555f80f35b503461035b575f60031936011261035b5760209060ff6009541690519015158152f35b833461035b57602060031936011261035b5735600555005b83823461035b5761010060031936011261035b57611e0361238d565b50611e0c6123b0565b9180604435101561035b5767ffffffffffffffff9260843584811161035b57611e38903690840161248a565b5060a43584811161035b57611e50903690840161248a565b9060c43585811161035b57611e68903690850161248a565b5060e43594851161035b57611e86610e0893610cad96369101612524565b5061319a565b83823461035b575f60031936011261035b57602091549051908152f35b3461035b575f60031936011261035b575f80547fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff169055005b833461035b57602060031936011261035b5735600d55005b83823461035b578060031936011261035b5767ffffffffffffffff823581811161035b57611f2b903690850161248a565b5060243590811161035b57602092611f4591369101612524565b5060ff60025460081c16611f64575b60ff5f5460081c16159051908152f35b611f6c6139bc565b611f54565b83823461035b576003199160208336011261035b5780359267ffffffffffffffff841161035b5761018090843603011261035b57610cad92611fb3910161290c565b9151901515815260208101919091529081906040820190565b3461035b57602060031936011261035b5773ffffffffffffffffffffffffffffffffffffffff611ffa61238d565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600f541617600f555f80f35b833461035b5760208060031936011261035b5767ffffffffffffffff90823582811161035b5761205b903690850161248a565b9269010000000000000000007fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff5f5416175f558351928311610f0d57680100000000000000008311610f0d57506020600193600154846001558085106120ff575b50019060015f525f5b8381106120ce57005b82517fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68201559181019184016120c5565b61212f90857fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69182019101612669565b856120bc565b9091503461035b5760031936011261035b5761214f61238d565b6121576123b0565b5067ffffffffffffffff9260443584811161035b573660238201121561035b578082013560249561218782612472565b9661219487519889612431565b828852602460208099019360071b8501019336851161035b57602401925b8484106122125788888860807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c36011261035b5773ffffffffffffffffffffffffffffffffffffffff165f526012825260ff815f20541690519015158152f35b608090818536031261035b5788519182018281108582111761229857895273ffffffffffffffffffffffffffffffffffffffff8535818116810361035b5783528a860135600281101561035b578b84015289860135908116810361035b57898301526060908186013592831515840361035b576080938c938201528152019301926121b2565b836041897f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b503461035b57602060031936011261035b577fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff68ff000000000000000061230861237e565b15155f54931b169116175f555f80f35b503461035b575f60031936011261035b576020906005549051908152f35b503461035b575f60031936011261035b5760209060ff60025460301c1690519015158152f35b3461035b575f60031936011261035b5760209060ff60025460281c1615158152f35b60043590811515820361035b57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361035b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361035b57565b610140810190811067ffffffffffffffff8211176123f057604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff81116123f057604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176123f057604052565b67ffffffffffffffff81116123f05760051b60200190565b9080601f8301121561035b5760209082356124a481612472565b936124b26040519586612431565b81855260208086019260051b82010192831161035b57602001905b8282106124db575050505090565b813581529083019083016124cd565b67ffffffffffffffff81116123f057601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561035b5780359061253b826124ea565b926125496040519485612431565b8284526020838301011161035b57815f926020809301838601378301015290565b906040820190151582526020606081936040838201528551809452019301915f5b828110612599575050505090565b83518552938101939281019260010161258b565b600319606091011261035b57600435801515810361035b579060243573ffffffffffffffffffffffffffffffffffffffff8116810361035b579060443590565b90604060031983011261035b57600435801515810361035b57916024359067ffffffffffffffff821161035b576126269160040161248a565b90565b8181029291811591840414171561263c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818110612674575050565b5f8155600101612669565b3573ffffffffffffffffffffffffffffffffffffffff8116810361035b5790565b9080601f8301121561035b578151906020916126bb81612472565b936126c96040519586612431565b81855260208086019260051b82010192831161035b57602001905b8282106126f2575050505090565b815173ffffffffffffffffffffffffffffffffffffffff8116810361035b5781529083019083016126e4565b5190811515820361035b57565b9080601f8301121561035b5781519060209161274681612472565b936127546040519586612431565b81855260208086019260051b82010192831161035b57602001905b82821061277d575050505090565b8151815290830190830161276f565b9160808383031261035b5782519067ffffffffffffffff9182811161035b57836127b79186016126a0565b936020938482015184811161035b57820181601f8201121561035b5780516127de81612472565b916040976127ee89519485612431565b8284528084018160608095028401019286841161035b578201905b8382106128435750505050509482015184811161035b578161282c91840161272b565b93606083015190811161035b57612626920161272b565b848288031261035b578a51908582018281108c8211176123f0578c528251600281101561035b578252838301519073ffffffffffffffffffffffffffffffffffffffff8216820361035b5782859283899501528d6128a281870161271e565b90820152815201910190612809565b80518210156128c55760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9190820391821161263c57565b9190820180921161263c57565b905f9073ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016926101408501906129578261267f565b9060408051947f67e0e0760000000000000000000000000000000000000000000000000000000086528060049416848701525f866024818b5afa958615610ab3575f905f97613101575b506129ab8661267f565b95828451977f535cfd8a00000000000000000000000000000000000000000000000000000000895216868801525f876024818d5afa968715610d32575f976130bb575b506129f89061267f565b93828451957f7e361bde00000000000000000000000000000000000000000000000000000000875216868601525f856024818d5afa958615610d32575f955f9761305e575b505f5b8351811015612b4e578c85612a64602082612a5b868a6128b1565b5116930161267f565b1603612ae55760a08d0135612a79828b6128b1565b518103612acf57612aa090612a8e838a6128b1565b51612a99848c6128b1565b5191613960565b612aaa828c6128b1565b5103612aba576001905b01612a40565b505f9b61010001359a50505050505050505050565b505f9c61010001359b5050505050505050505050565b8c85612af68882612a5b868a6128b1565b1614612b05575b600190612ab4565b60c08d0135612b14828b6128b1565b518103612acf57612b2990612a8e838a6128b1565b612b33828c6128b1565b5114612afd57505f9b61010001359a50505050505050505050565b509650979893505097945091506101008401359660035415155f14612d435750670de0b6b3a7640000612b8360035489612629565b049081612bb0575b5050505060e0905b013515159081612ba257509190565b60ff91505460201c16159190565b909192968435600281101561035b57612c895782612bcd916128f2565b96612bd984860161267f565b823b15612c855784517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691810191825230602083015260408201939093529192918591849182908490829060600103925af1908115612c7c5750908391612c64575b505060e0905b905f8080612b8b565b612c6d9061241d565b612c7857815f612c55565b5080fd5b513d85823e3d90fd5b8680fd5b82612c9791989493986128ff565b96612ca46020860161267f565b91803b1561035b5783517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316948301948552306020860152604085019190915290925f91849182908490829060600103925af1908115612d3a5750612d26575b5060e090612c5b565b612d3191925061241d565b5f9060e0612d1d565b513d5f823e3d90fd5b909291825480612d5b575b505050505060e090612b93565b612d6e670de0b6b3a7640000918a612629565b048015612d4e5790919293978535600281101561035b578290612f2957612d94916128ff565b9760ff60025460381c16612db6575b505050505060e0905b905f808080612d4e565b82860193612dc38561267f565b1694835180967fa9059cbb0000000000000000000000000000000000000000000000000000000082526020978891815f81612e248a8a8a84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af18015612f1f57908794939291612ee0575b505f612e47612e9e9761267f565b918651978895869485937f15afd40900000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af1908115612d3a5750612eb7575b808080612da3565b813d8311612ed9575b612eca8183612431565b8101031261035b575f80612eaf565b503d612ec0565b9384813d8311612f18575b612ef58183612431565b8101031261035b575f612e47612e9e97612f0f8a9761271e565b50975050612e39565b503d612eeb565b85513d5f823e3d90fd5b612f32916128f2565b9760ff60025460381c16612f4e575b505050505060e090612dac565b60209485870194612f5e8661267f565b1686855180927fa9059cbb000000000000000000000000000000000000000000000000000000008252815f81612fba8a8a8a84016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af18015612f1f5790879493929161301f575b505f612e47612fdd9761267f565b03925af1908115612d3a5750612ff6575b808080612f41565b813d8311613018575b6130098183612431565b8101031261035b575f80612fee565b503d612fff565b9384813d8311613057575b6130348183612431565b8101031261035b575f612e47612fdd9761304e8a9761271e565b50975050612fcf565b503d61302a565b955095503d805f873e6130718187612431565b850194848187031261035b5780519567ffffffffffffffff9687811161035b578161309d91840161272b565b96602083015190811161035b576130b4920161272b565b955f612a3d565b9096503d805f833e6130cd8183612431565b81019060208183031261035b5780519167ffffffffffffffff831161035b576129f8926130fa920161272b565b96906129ee565b90506131209196503d805f833e6131188183612431565b81019061278c565b97929150966129a1565b60405190816001805490818352602090602084019260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b82821061318257505050505090613180910383612431565b565b84548652889650948501949383019390830190613168565b91909160ff5f5460481c166135595773ffffffffffffffffffffffffffffffffffffffff92837f0000000000000000000000000000000000000000000000000000000000000000169060409485517f67e0e076000000000000000000000000000000000000000000000000000000008152816004951660048201525f81602481875afa90811561354f575f91613533575b506007805415613349575f5b845181101561333357670de0b6b3a764000061325f61325683886128b1565b51845490612629565b049081613271575b6001915001613237565b6132858261327f83896128b1565b516128f2565b61328f82886128b1565b528461329b82866128b1565b5116873b1561035b578a517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116818a019081523060208201526040810193909352915f90839081906060010381838b5af19182156133295760019261331a575b50613267565b6133239061241d565b5f613314565b8a513d5f823e3d90fd5b5050505093905060ff91505b5f54901c16159190565b5091949395929060088054613368575b5050505060ff9192935061333f565b5f9795975b875181101561351c5783670de0b6b3a764000061339661338d848c6128b1565b51855490612629565b04846133a284896128b1565b5116816133b5575b50505060010161336d565b88517fa9059cbb0000000000000000000000000000000000000000000000000000000081528a818061341086602098899584016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561332957908492916134e9575b508b6134458661343f8661343983866128b1565b516128ff565b926128b1565b528a61349e8b5194859384937f15afd40900000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f8a5af180156134df576134b6575b85916133aa565b813d83116134d8575b6134c98183612431565b8101031261035b575f806134af565b503d6134bf565b88513d5f823e3d90fd5b9182813d8311613515575b6134fe8183612431565b8101031261035b57613510849261271e565b613425565b503d6134f4565b505050505060ff91509291928392915f8080613359565b61354791503d805f833e6131188183612431565b91505061322b565b87513d5f823e3d90fd5b506001915061262661312a565b90600182811c921680156135ad575b602083101461358057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613575565b9081602091031261035b575173ffffffffffffffffffffffffffffffffffffffff8116810361035b5790565b91909160ff5f5460481c166135595773ffffffffffffffffffffffffffffffffffffffff92837f0000000000000000000000000000000000000000000000000000000000000000169060409485517f67e0e076000000000000000000000000000000000000000000000000000000008152816004951660048201525f81602481875afa90811561354f575f91613944575b506005805415613779575f5b845181101561376357670de0b6b3a764000061369f61325683886128b1565b0490816136b1575b6001915001613680565b6136bf8261343983896128b1565b6136c982886128b1565b52846136d582866128b1565b5116873b1561035b578a517fae63932900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116818a019081523060208201526040810193909352915f90839081906060010381838b5af191821561332957600192613754575b506136a7565b61375d9061241d565b5f61374e565b50505050935050505b60ff5f5460301c16159190565b509194959290600692600654613796575b5050505050509061376c565b5f5b87518110156139325783836137ad83856128b1565b5116670de0b6b3a76400006137ce6137c5858d6128b1565b51895490612629565b0490816137e1575b505050600101613798565b88517fa9059cbb0000000000000000000000000000000000000000000000000000000081528a818061383c86602098899584016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f865af1801561332957908492916138ff575b508b6138658661343f8661327f83866128b1565b528a6138be8b5194859384937f15afd40900000000000000000000000000000000000000000000000000000000855284016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03815f8a5af180156134df576138d6575b85916137d6565b813d83116138f8575b6138e98183612431565b8101031261035b575f806138cf565b503d6138df565b9182813d831161392b575b6139148183612431565b8101031261035b57613926849261271e565b613851565b503d61390a565b505050505050505f808080808061378a565b61395891503d805f833e6131188183612431565b915050613674565b9161396a91612629565b90670de0b6b3a76400009081810291818304149015171561263c57811561398f570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff600b5416600c54813b1561035b575f916024839260405194859384927fa1cfa04100000000000000000000000000000000000000000000000000000000845260048401525af18015613a2d57613a245750565b6131809061241d565b6040513d5f823e3d90fd5b6010549081815260208091019160105f527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672915f905b828210613a7c575050505090565b835485529384019360019384019390910190613a6e565b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001681600e541691604051927fca4f28030000000000000000000000000000000000000000000000000000000084528060048501525f84602481865afa938415613a2d575f94613bd3575b50823b1561035b5790926040519384927fd8f4cf3c0000000000000000000000000000000000000000000000000000000084526084840190600485015260806024850152825180915260a48401926020809101925f905b838210613bb657505050505091815f81613ba58296613b966003199182858203016044860152613a38565b90838203016064840152613a38565b03925af18015613a2d57613a245750565b845181168652889650948201949382019360019190910190613b6b565b9093503d805f833e613be58183612431565b810160208282031261035b57815167ffffffffffffffff811161035b57613c0c92016126a0565b925f613b14565b90613c505750805115613c2857805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580613ca3575b613c61575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15613c5956fea26469706673582212200b7a14bcd3cc77a998290237c5d5bffc1b5778f64e5caf1ac09a2607fc11517564736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 SWAP2 DUP3 CALLDATASIZE LT ISZERO PUSH2 0x16 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH3 0x5B449C EQ PUSH2 0x235C JUMPI POP DUP3 PUSH3 0xD332FD EQ PUSH2 0x2336 JUMPI DUP3 PUSH4 0x2273467 EQ PUSH2 0x2318 JUMPI DUP3 PUSH4 0x39388BA EQ PUSH2 0x22C3 JUMPI DUP3 PUSH4 0xB89F182 EQ PUSH2 0x2135 JUMPI DUP3 PUSH4 0xC54B1DE EQ PUSH2 0x2028 JUMPI DUP3 PUSH4 0x1064DFDD EQ PUSH2 0x1FCC JUMPI DUP3 PUSH4 0x18B6EB55 EQ PUSH2 0x1F71 JUMPI DUP3 PUSH4 0x1C149E28 EQ PUSH2 0x1EFA JUMPI DUP3 PUSH4 0x214FF4C5 EQ PUSH2 0x1EE2 JUMPI DUP3 PUSH4 0x232B59F7 EQ PUSH2 0x1EA9 JUMPI DUP3 PUSH4 0x2352C2ED EQ PUSH2 0x1E8C JUMPI DUP3 PUSH4 0x2754888D EQ PUSH2 0x1DE7 JUMPI DUP3 PUSH4 0x2E55A841 EQ PUSH2 0x1DCF JUMPI DUP3 PUSH4 0x31378F4F EQ PUSH2 0x1DAC JUMPI DUP3 PUSH4 0x335D4126 EQ PUSH2 0x1D21 JUMPI DUP3 PUSH4 0x3478DB73 EQ PUSH2 0x1CCA JUMPI DUP3 PUSH4 0x34A168EC EQ PUSH2 0x1CB2 JUMPI DUP3 PUSH4 0x34E3A8C3 EQ PUSH2 0x1BB9 JUMPI DUP3 PUSH4 0x35F7290E EQ PUSH2 0x1B94 JUMPI DUP3 PUSH4 0x38BE241D EQ PUSH2 0x1B3A JUMPI DUP3 PUSH4 0x3D05719A EQ PUSH2 0x1B14 JUMPI DUP3 PUSH4 0x40DC21D4 EQ PUSH2 0x1AEF JUMPI DUP3 PUSH4 0x423EF816 EQ PUSH2 0x18D4 JUMPI DUP3 PUSH4 0x4392312A EQ PUSH2 0x18B6 JUMPI DUP3 PUSH4 0x4437152A EQ PUSH2 0x185A JUMPI DUP3 PUSH4 0x45421EC7 EQ PUSH2 0x16C3 JUMPI DUP3 PUSH4 0x4F036756 EQ PUSH2 0x16A0 JUMPI DUP3 PUSH4 0x5211FA77 EQ PUSH2 0x1343 JUMPI DUP3 PUSH4 0x5351B230 EQ PUSH2 0x131E JUMPI DUP3 PUSH4 0x5991DE93 EQ PUSH2 0x1294 JUMPI DUP3 PUSH4 0x5CD00746 EQ PUSH2 0x1272 JUMPI DUP3 PUSH4 0x677DB20E EQ PUSH2 0x124D JUMPI DUP3 PUSH4 0x68C6DB6A EQ PUSH2 0x121F JUMPI DUP3 PUSH4 0x6A9A0611 EQ PUSH2 0x11E8 JUMPI DUP3 PUSH4 0x6E7D75E5 EQ PUSH2 0x1194 JUMPI DUP3 PUSH4 0x71EFF9D2 EQ PUSH2 0x109B JUMPI DUP3 PUSH4 0x7B695D10 EQ PUSH2 0x1049 JUMPI DUP3 PUSH4 0x80C554C1 EQ PUSH2 0x1023 JUMPI DUP3 PUSH4 0x82FB5D21 EQ PUSH2 0xFD0 JUMPI DUP3 PUSH4 0x87AC5691 EQ PUSH2 0xF80 JUMPI DUP3 PUSH4 0x8F5FAE62 EQ PUSH2 0xF39 JUMPI DUP3 PUSH4 0x93C4B286 EQ PUSH2 0xE15 JUMPI DUP3 PUSH4 0x976907CC EQ PUSH2 0xD62 JUMPI DUP3 PUSH4 0x9F94C522 EQ PUSH2 0xD3C JUMPI DUP3 PUSH4 0xA0E8F5AC EQ PUSH2 0xC31 JUMPI DUP3 PUSH4 0xA5098F10 EQ PUSH2 0xC0E JUMPI DUP3 PUSH4 0xA55E47BE EQ PUSH2 0xBBE JUMPI DUP3 PUSH4 0xA975DDA0 EQ PUSH2 0xB9B JUMPI DUP3 PUSH4 0xAF72105D EQ PUSH2 0xB75 JUMPI DUP3 PUSH4 0xB127E385 EQ PUSH2 0xB49 JUMPI DUP3 PUSH4 0xB298157B EQ PUSH2 0xB26 JUMPI DUP3 PUSH4 0xB3A763B9 EQ PUSH2 0xAD5 JUMPI DUP3 PUSH4 0xB445FBE7 EQ PUSH2 0xABD JUMPI DUP3 PUSH4 0xBA5F9F40 EQ PUSH2 0x90D JUMPI DUP3 PUSH4 0xBD825F6B EQ PUSH2 0x8EF JUMPI DUP3 PUSH4 0xC25DADE8 EQ PUSH2 0x888 JUMPI DUP3 PUSH4 0xD3FCA637 EQ PUSH2 0x839 JUMPI DUP3 PUSH4 0xD4F83182 EQ PUSH2 0x7E4 JUMPI DUP3 PUSH4 0xD77153A7 EQ PUSH2 0x69C JUMPI POP DUP2 PUSH4 0xDA09AACF EQ PUSH2 0x684 JUMPI DUP2 PUSH4 0xDC7776CA EQ PUSH2 0x641 JUMPI DUP2 PUSH4 0xDDA1C15B EQ PUSH2 0x629 JUMPI DUP2 PUSH4 0xE326F03A EQ PUSH2 0x605 JUMPI DUP2 PUSH4 0xE4C593D7 EQ PUSH2 0x5E2 JUMPI DUP2 PUSH4 0xE5E3B67E EQ PUSH2 0x5B4 JUMPI DUP2 PUSH4 0xE62EECDD EQ PUSH2 0x528 JUMPI DUP2 PUSH4 0xE908E85D EQ PUSH2 0x50B JUMPI DUP2 PUSH4 0xE9F7C591 EQ PUSH2 0x3C4 JUMPI DUP2 PUSH4 0xEB499270 EQ PUSH2 0x3A7 JUMPI DUP2 PUSH4 0xF5279D9C EQ PUSH2 0x383 JUMPI DUP2 PUSH4 0xF8B5EF85 EQ PUSH2 0x35F JUMPI POP PUSH4 0xFC6E0F59 EQ PUSH2 0x344 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP1 CALLDATALOAD SWAP1 SSTORE STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x48 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x8 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x7 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x140 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x3E0 DUP2 MLOAD PUSH2 0x23D3 JUMP JUMPDEST PUSH2 0x3E8 PUSH2 0x237E JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x44 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0xA4 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x35B JUMPI PUSH1 0xC4 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x35B JUMPI PUSH1 0xE4 CALLDATALOAD SWAP5 DUP6 ISZERO ISZERO DUP1 SWAP7 SUB PUSH2 0x35B JUMPI PUSH2 0x104 CALLDATALOAD SWAP7 DUP8 ISZERO ISZERO DUP1 SWAP9 SUB PUSH2 0x35B JUMPI PUSH2 0x124 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x35B JUMPI PUSH1 0x13 SLOAD SWAP1 PUSH1 0x48 SHL PUSH10 0xFF000000000000000000 AND SWAP11 ISZERO ISZERO PUSH1 0xFF AND SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 AND OR SWAP1 PUSH1 0x8 SHL PUSH2 0xFF00 AND OR SWAP1 PUSH1 0x10 SHL PUSH3 0xFF0000 AND OR SWAP1 PUSH1 0x18 SHL PUSH4 0xFF000000 AND OR SWAP1 PUSH1 0x20 SHL PUSH5 0xFF00000000 AND OR SWAP1 PUSH1 0x28 SHL PUSH6 0xFF0000000000 AND OR SWAP1 PUSH1 0x30 SHL PUSH7 0xFF000000000000 AND OR SWAP1 PUSH1 0x38 SHL PUSH8 0xFF00000000000000 AND OR SWAP2 SHL PUSH9 0xFF0000000000000000 AND OR OR PUSH1 0x13 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x6 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x54B CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF PUSH4 0xFF000000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x18 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x5CD PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH1 0xFF PUSH1 0xFF NOT PUSH1 0x9 SLOAD AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x2 SLOAD SWAP1 MLOAD PUSH1 0x20 SWAP2 DUP3 SHR PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x10 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x6 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x66F PUSH2 0x238D JUMP JUMPDEST AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE STOP JUMPDEST DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x3 SSTORE STOP JUMPDEST SWAP1 CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP1 MLOAD PUSH2 0x140 SWAP3 PUSH2 0x6BC DUP3 PUSH2 0x23D3 JUMP JUMPDEST PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 DUP4 DUP4 ADD MSTORE PUSH0 PUSH1 0x60 DUP4 ADD MSTORE PUSH0 PUSH1 0x80 DUP4 ADD MSTORE PUSH0 PUSH1 0xA0 DUP4 ADD MSTORE PUSH0 PUSH1 0xC0 DUP4 ADD MSTORE PUSH0 DUP2 DUP4 ADD MSTORE PUSH2 0x100 PUSH0 DUP2 DUP5 ADD MSTORE PUSH0 PUSH2 0x120 DUP1 SWAP5 ADD MSTORE DUP4 MLOAD SWAP4 PUSH2 0x703 DUP6 PUSH2 0x23D3 JUMP JUMPDEST PUSH1 0x13 SLOAD SWAP3 DUP4 DUP1 SWAP3 DUP2 DUP4 DUP7 PUSH1 0xFF SWAP4 DUP5 DUP5 AND ISZERO ISZERO SWAP12 DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP13 DUP14 DUP8 DUP8 PUSH1 0x8 SHR AND ISZERO ISZERO SWAP1 MSTORE DUP7 DUP14 DUP5 DUP5 ADD SWAP4 DUP3 DUP10 PUSH1 0x10 SHR AND ISZERO ISZERO DUP6 MSTORE DUP3 PUSH1 0x60 DUP3 ADD SWAP8 DUP2 DUP12 PUSH1 0x18 SHR AND ISZERO ISZERO DUP10 MSTORE DUP2 PUSH1 0x80 DUP5 ADD SWAP11 DUP2 DUP14 PUSH1 0x20 SHR AND ISZERO ISZERO DUP13 MSTORE PUSH1 0xA0 DUP6 ADD SWAP13 DUP14 DUP4 DUP3 PUSH1 0x28 SHR AND ISZERO ISZERO SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD SWAP15 DUP16 SWAP2 PUSH1 0x30 SHR AND ISZERO ISZERO SWAP1 MSTORE DUP5 ADD SWAP14 PUSH1 0x38 SHR AND ISZERO ISZERO DUP14 MSTORE DUP3 ADD SWAP14 DUP8 SHR AND ISZERO ISZERO DUP14 MSTORE ADD SWAP13 PUSH1 0x48 SHR AND ISZERO ISZERO DUP13 MSTORE PUSH1 0x20 DUP4 MLOAD SWAP15 DUP16 SWAP3 DUP4 MSTORE MLOAD ISZERO ISZERO SWAP2 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP13 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0x60 DUP12 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0x80 DUP11 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP10 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP9 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP7 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP5 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x7FD PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF PUSH8 0xFF00000000000000 PUSH0 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x852 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH2 0xFF00 PUSH0 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x8AB CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0xFF PUSH1 0xFF NOT PUSH1 0x2 SLOAD AND SWAP2 ISZERO ISZERO AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x8 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x927 PUSH2 0x238D JUMP JUMPDEST SWAP2 PUSH2 0x930 PUSH2 0x23B0 JUMP JUMPDEST POP DUP1 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x84 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x95B SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xA4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x973 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xC4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x98B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0x11 SLOAD SWAP1 PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x9E6 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP2 POP PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x18 SHR AND PUSH2 0x9D9 JUMPI JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x30 SHR AND PUSH2 0x9CC JUMPI JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x38 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x9D4 PUSH2 0x3A93 JUMP JUMPDEST PUSH2 0x9BC JUMP JUMPDEST PUSH2 0x9E1 PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x9AE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x20 SWAP2 DUP5 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xAB3 JUMPI PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x20 SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP3 PUSH0 SWAP2 PUSH2 0xA86 JUMPI JUMPDEST POP PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP1 PUSH2 0x99A JUMP JUMPDEST PUSH2 0xAA6 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0xAAC JUMPI JUMPDEST PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x35B7 JUMP JUMPDEST PUSH0 PUSH2 0xA74 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xA94 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x7 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xAEE PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF PUSH4 0xFF000000 PUSH0 SLOAD SWAP3 PUSH1 0x18 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xB62 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH1 0xFF PUSH1 0xFF NOT PUSH0 SLOAD AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x10 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH0 SLOAD DUP2 MLOAD SWAP2 SHR PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST POP DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD SWAP1 PUSH1 0x1 SLOAD DUP3 LT ISZERO PUSH2 0x35B JUMPI PUSH1 0x20 SWAP2 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 ADD SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH0 SLOAD SWAP1 MLOAD PUSH1 0x20 SWAP2 DUP3 SHR PUSH1 0xFF AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT SWAP1 PUSH1 0x60 DUP3 CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x35B JUMPI DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x35B JUMPI PUSH2 0xC6A PUSH2 0x23B0 JUMP JUMPDEST POP PUSH1 0xD SLOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 PUSH1 0xF SLOAD AND SWAP3 DUP4 PUSH2 0xCB1 JUMPI JUMPDEST PUSH0 SLOAD DUP6 MLOAD PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR PUSH1 0xFF AND ISZERO DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 RETURN JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP3 PUSH2 0xCC0 PUSH1 0xA4 PUSH1 0x20 SWAP4 ADD PUSH2 0x267F JUMP JUMPDEST AND DUP6 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xD32 JUMPI PUSH0 SWAP2 PUSH2 0xD13 JUMPI JUMPDEST POP AND EQ PUSH2 0xD0B JUMPI JUMPDEST PUSH0 DUP1 DUP1 DUP1 PUSH2 0xC91 JUMP JUMPDEST PUSH0 SWAP2 POP PUSH2 0xD02 JUMP JUMPDEST PUSH2 0xD2C SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAAC JUMPI PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST PUSH0 PUSH2 0xCFA JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x18 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xD7E PUSH2 0x238D JUMP JUMPDEST POP PUSH2 0xD87 PUSH2 0x23B0 JUMP JUMPDEST SWAP2 PUSH1 0x5 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x64 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0xDB4 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0xDCC SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST SWAP1 PUSH1 0xC4 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0xDE4 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xE4 CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x35B JUMPI PUSH2 0xE02 PUSH2 0xE08 SWAP4 PUSH2 0xCAD SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH2 0x35E3 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 MLOAD SWAP3 DUP4 SWAP3 DUP4 PUSH2 0x256A JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0xE24 CALLDATASIZE PUSH2 0x25ED JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH6 0xFF0000000000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x28 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE DUP2 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xF0D JUMPI POP PUSH1 0x10 SLOAD DUP2 PUSH1 0x10 SSTORE DUP1 DUP3 LT PUSH2 0xED7 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 SWAP3 ADD PUSH1 0x10 PUSH0 MSTORE PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xEA5 JUMPI STOP JUMPDEST DUP2 MLOAD PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 DUP3 ADD SSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xF07 SWAP1 DUP3 PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP3 PUSH2 0xE90 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xF68 PUSH2 0x238D JUMP JUMPDEST AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xF99 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF PUSH3 0xFF0000 PUSH0 SLOAD SWAP3 PUSH1 0x10 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0xFE9 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF PUSH6 0xFF0000000000 PUSH0 SLOAD SWAP3 PUSH1 0x28 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x38 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1062 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH5 0xFF00000000 PUSH0 SLOAD SWAP3 PUSH1 0x20 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x10AA CALLDATASIZE PUSH2 0x25ED JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x30 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE DUP2 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP3 GT PUSH2 0xF0D JUMPI POP PUSH1 0x10 SLOAD DUP2 PUSH1 0x10 SSTORE DUP1 DUP3 LT PUSH2 0x115E JUMPI JUMPDEST POP PUSH1 0x20 DUP1 SWAP3 ADD PUSH1 0x10 PUSH0 MSTORE PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x112C JUMPI STOP JUMPDEST DUP2 MLOAD PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 DUP3 ADD SSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x118E SWAP1 DUP3 PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP3 PUSH2 0x1117 JUMP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x11AD PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF PUSH7 0xFF000000000000 PUSH0 SLOAD SWAP3 PUSH1 0x30 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x11 SLOAD PUSH1 0x8 SHR AND SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1238 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH1 0xFF PUSH1 0xFF NOT PUSH1 0x11 SLOAD AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x38 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x12B7 CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF PUSH2 0xFF00 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x18 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT SWAP1 DUP3 DUP3 CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x35B JUMPI DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x35B JUMPI PUSH2 0x137B PUSH2 0x23B0 JUMP JUMPDEST POP DUP3 PUSH1 0x11 SLOAD SWAP2 PUSH1 0xFF DUP4 AND ISZERO PUSH2 0x15CE JUMPI JUMPDEST POP POP POP PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH2 0x15C1 JUMPI JUMPDEST PUSH1 0x2 SLOAD SWAP2 PUSH1 0xFF PUSH1 0x20 SWAP4 DUP5 SHR AND PUSH2 0x15B4 JUMPI JUMPDEST PUSH1 0x9 SLOAD SWAP1 PUSH1 0xFF DUP3 AND PUSH2 0x13C9 JUMPI JUMPDEST POP POP PUSH1 0xFF PUSH0 SLOAD PUSH1 0x18 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x8 SHR AND SWAP2 DUP3 ISZERO PUSH2 0x1558 JUMPI PUSH1 0xA SLOAD SWAP2 PUSH2 0x13F7 DUP4 PUSH2 0x3566 JUMP JUMPDEST ISZERO PUSH2 0x14FC JUMPI POP PUSH1 0xFF NOT DUP1 SWAP2 AND PUSH1 0x9 SSTORE DUP4 MLOAD SWAP1 DUP6 PUSH0 SWAP2 PUSH2 0x1415 DUP6 PUSH2 0x3566 JUMP JUMPDEST SWAP1 DUP2 DUP6 MSTORE DUP3 DUP6 ADD SWAP6 PUSH1 0x1 SWAP2 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x14E3 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x148E JUMPI JUMPDEST POP POP POP PUSH2 0x147E SWAP4 SWAP3 DUP3 PUSH2 0x144D PUSH0 SWAP5 DUP6 SWAP5 SUB DUP3 PUSH2 0x2431 JUMP JUMPDEST MLOAD SWAP1 DUP3 DUP6 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x1486 JUMPI RETURNDATASIZE SWAP2 PUSH2 0x1464 DUP4 PUSH2 0x24EA JUMP JUMPDEST SWAP3 PUSH2 0x1471 DUP7 MLOAD SWAP5 DUP6 PUSH2 0x2431 JUMP JUMPDEST DUP4 MSTORE RETURNDATASIZE PUSH0 DUP8 DUP6 ADD RETURNDATACOPY PUSH2 0x3C13 JUMP JUMPDEST POP PUSH0 DUP1 PUSH2 0x13B7 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x3C13 JUMP JUMPDEST PUSH1 0xA PUSH0 SWAP1 DUP2 MSTORE SWAP3 SWAP4 POP PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 JUMPDEST DUP3 DUP5 LT PUSH2 0x14D0 JUMPI POP POP POP DUP3 ADD ADD DUP6 DUP3 PUSH2 0x144D PUSH2 0x1436 JUMP JUMPDEST DUP1 SLOAD DUP7 DUP6 ADD DUP7 ADD MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x14B9 JUMP JUMPDEST AND DUP8 MSTORE POP POP ISZERO ISZERO PUSH1 0x5 SHL DUP4 ADD ADD SWAP1 POP DUP6 DUP3 PUSH2 0x144D PUSH2 0x1436 JUMP JUMPDEST PUSH1 0x64 SWAP1 DUP7 DUP7 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x486F6F6B2063616C6C6461746120697320656D70747900000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x64 DUP3 DUP7 DUP7 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x486F6F6B20636F6E7472616374206E6F74207365740000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH2 0x15BC PUSH2 0x3A93 JUMP JUMPDEST PUSH2 0x13AA JUMP JUMPDEST PUSH2 0x15C9 PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x1399 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x15F1 PUSH1 0xA4 PUSH1 0x20 SWAP4 ADD PUSH2 0x267F JUMP JUMPDEST AND DUP5 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1696 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP2 PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 PUSH0 SWAP2 PUSH2 0x1677 JUMPI JUMPDEST POP PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP3 DUP2 PUSH2 0x138B JUMP JUMPDEST PUSH2 0x1690 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xAAC JUMPI PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST PUSH0 PUSH2 0x1664 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x11 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x16DD PUSH2 0x238D JUMP JUMPDEST SWAP2 PUSH2 0x16E6 PUSH2 0x23B0 JUMP JUMPDEST POP PUSH1 0x5 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x64 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1712 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xA4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x172A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xC4 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1742 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0x11 SLOAD SWAP1 PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x179D JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP2 POP PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x10 SHR AND PUSH2 0x1790 JUMPI JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x28 SHR AND PUSH2 0x1783 JUMPI JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x28 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x178B PUSH2 0x3A93 JUMP JUMPDEST PUSH2 0x1773 JUMP JUMPDEST PUSH2 0x1798 PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x1765 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 PUSH1 0x20 SWAP2 DUP5 MLOAD DUP1 SWAP7 DUP2 SWAP4 PUSH32 0x5E01EB5A00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xAB3 JUMPI PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x20 SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF SWAP3 PUSH0 SWAP2 PUSH2 0x183D JUMPI JUMPDEST POP PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x11 SSTORE PUSH0 DUP1 PUSH2 0x1751 JUMP JUMPDEST PUSH2 0x1854 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0xAAC JUMPI PUSH2 0xA9E DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST PUSH0 PUSH2 0x182B JUMP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1888 PUSH2 0x238D JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xE SLOAD AND OR PUSH1 0xE SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x3 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x18ED PUSH2 0x238D JUMP JUMPDEST PUSH1 0x24 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP4 CALLDATALOAD SWAP2 DUP4 DUP4 GT PUSH2 0x35B JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP3 ADD CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x35B JUMPI CALLDATASIZE PUSH1 0x24 DUP5 DUP5 ADD ADD GT PUSH2 0x35B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH2 0x1975 PUSH1 0xA SLOAD PUSH2 0x3566 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x1A9A JUMPI JUMPDEST POP PUSH0 SWAP3 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x19DB JUMPI POP SWAP2 DUP2 SWAP3 PUSH0 SWAP3 PUSH2 0x19CD JUMPI JUMPDEST POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH1 0x1 SHL SWAP3 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0xA SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH1 0x24 SWAP3 POP ADD ADD CALLDATALOAD DUP3 DUP1 PUSH2 0x1997 JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP4 AND SWAP4 PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 SWAP3 PUSH0 SWAP1 JUMPDEST DUP7 DUP3 LT PUSH2 0x1A7E JUMPI POP POP DUP4 PUSH1 0x1 SWAP6 LT PUSH2 0x1A43 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0xA SSTORE STOP JUMPDEST ADD PUSH1 0x24 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x3 DUP5 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE DUP3 DUP1 DUP1 PUSH2 0x1A38 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP5 DUP9 DUP9 ADD ADD CALLDATALOAD DUP2 SSTORE ADD SWAP6 ADD SWAP3 ADD SWAP1 PUSH2 0x1A25 JUMP JUMPDEST PUSH2 0x1ADF SWAP1 PUSH32 0xC65A7BB8D6351C1CF70C95A316CC6A92839C986682D98BC35F958F4883F9D2A8 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP7 LT PUSH2 0x1AE5 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x2669 JUMP JUMPDEST DUP4 PUSH2 0x197E JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x1AD2 JUMP JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x30 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x8 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1B6C SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1B86 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0xFF PUSH0 SLOAD AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x28 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x1BC8 CALLDATASIZE PUSH2 0x25ED JUMP JUMPDEST PUSH1 0x2 SWAP3 SWAP2 SWAP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF PUSH5 0xFF00000000 PUSH1 0x20 SWAP6 ISZERO ISZERO PUSH1 0x20 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0xF0D JUMPI POP PUSH1 0x20 SWAP1 PUSH1 0x10 SLOAD DUP4 PUSH1 0x10 SSTORE DUP1 DUP5 LT PUSH2 0x1C7C JUMPI JUMPDEST POP ADD PUSH1 0x10 PUSH0 MSTORE PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1C4A JUMPI STOP JUMPDEST DUP2 MLOAD PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 DUP3 ADD SSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1C41 JUMP JUMPDEST PUSH2 0x1CAC SWAP1 DUP5 PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP5 PUSH2 0x1C39 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x8 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1CE3 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF PUSH8 0xFF00000000000000 PUSH1 0x2 SLOAD SWAP3 PUSH1 0x38 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1D44 CALLDATASIZE PUSH2 0x25AD JUMP JUMPDEST SWAP3 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF PUSH3 0xFF0000 PUSH1 0x2 SLOAD SWAP3 ISZERO ISZERO PUSH1 0x10 SHL AND SWAP2 AND OR PUSH1 0x2 SSTORE AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xB SLOAD AND OR PUSH1 0xB SSTORE PUSH1 0xC SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x9 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0x5 SSTORE STOP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x1E03 PUSH2 0x238D JUMP JUMPDEST POP PUSH2 0x1E0C PUSH2 0x23B0 JUMP JUMPDEST SWAP2 DUP1 PUSH1 0x44 CALLDATALOAD LT ISZERO PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x84 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1E38 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xA4 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1E50 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x248A JUMP JUMPDEST SWAP1 PUSH1 0xC4 CALLDATALOAD DUP6 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1E68 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0xE4 CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x35B JUMPI PUSH2 0x1E86 PUSH2 0xE08 SWAP4 PUSH2 0xCAD SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH2 0x319A JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP2 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI CALLDATALOAD PUSH1 0xD SSTORE STOP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x1F2B SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST POP PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP3 PUSH2 0x1F45 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x2524 JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x8 SHR AND PUSH2 0x1F64 JUMPI JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x8 SHR AND ISZERO SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1F6C PUSH2 0x39BC JUMP JUMPDEST PUSH2 0x1F54 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT SWAP2 PUSH1 0x20 DUP4 CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI DUP1 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x35B JUMPI PUSH2 0x180 SWAP1 DUP5 CALLDATASIZE SUB ADD SLT PUSH2 0x35B JUMPI PUSH2 0xCAD SWAP3 PUSH2 0x1FB3 SWAP2 ADD PUSH2 0x290C JUMP JUMPDEST SWAP2 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x40 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1FFA PUSH2 0x238D JUMP JUMPDEST AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xF SLOAD AND OR PUSH1 0xF SSTORE PUSH0 DUP1 RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP3 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x205B SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x248A JUMP JUMPDEST SWAP3 PUSH10 0x1000000000000000000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF PUSH0 SLOAD AND OR PUSH0 SSTORE DUP4 MLOAD SWAP3 DUP4 GT PUSH2 0xF0D JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0xF0D JUMPI POP PUSH1 0x20 PUSH1 0x1 SWAP4 PUSH1 0x1 SLOAD DUP5 PUSH1 0x1 SSTORE DUP1 DUP6 LT PUSH2 0x20FF JUMPI JUMPDEST POP ADD SWAP1 PUSH1 0x1 PUSH0 MSTORE PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x20CE JUMPI STOP JUMPDEST DUP3 MLOAD PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 DUP3 ADD SSTORE SWAP2 DUP2 ADD SWAP2 DUP5 ADD PUSH2 0x20C5 JUMP JUMPDEST PUSH2 0x212F SWAP1 DUP6 PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2669 JUMP JUMPDEST DUP6 PUSH2 0x20BC JUMP JUMPDEST SWAP1 SWAP2 POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH2 0x214F PUSH2 0x238D JUMP JUMPDEST PUSH2 0x2157 PUSH2 0x23B0 JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x44 CALLDATALOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP1 DUP3 ADD CALLDATALOAD PUSH1 0x24 SWAP6 PUSH2 0x2187 DUP3 PUSH2 0x2472 JUMP JUMPDEST SWAP7 PUSH2 0x2194 DUP8 MLOAD SWAP9 DUP10 PUSH2 0x2431 JUMP JUMPDEST DUP3 DUP9 MSTORE PUSH1 0x24 PUSH1 0x20 DUP1 SWAP10 ADD SWAP4 PUSH1 0x7 SHL DUP6 ADD ADD SWAP4 CALLDATASIZE DUP6 GT PUSH2 0x35B JUMPI PUSH1 0x24 ADD SWAP3 JUMPDEST DUP5 DUP5 LT PUSH2 0x2212 JUMPI DUP9 DUP9 DUP9 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x12 DUP3 MSTORE PUSH1 0xFF DUP2 PUSH0 KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x80 SWAP1 DUP2 DUP6 CALLDATASIZE SUB SLT PUSH2 0x35B JUMPI DUP9 MLOAD SWAP2 DUP3 ADD DUP3 DUP2 LT DUP6 DUP3 GT OR PUSH2 0x2298 JUMPI DUP10 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI DUP4 MSTORE DUP11 DUP7 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI DUP12 DUP5 ADD MSTORE DUP10 DUP7 ADD CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI DUP10 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP7 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x35B JUMPI PUSH1 0x80 SWAP4 DUP13 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x21B2 JUMP JUMPDEST DUP4 PUSH1 0x41 DUP10 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF PUSH9 0xFF0000000000000000 PUSH2 0x2308 PUSH2 0x237E JUMP JUMPDEST ISZERO ISZERO PUSH0 SLOAD SWAP4 SHL AND SWAP2 AND OR PUSH0 SSTORE PUSH0 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0x5 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x30 SHR AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x35B JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x28 SHR AND ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x23F0 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x23F0 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x23F0 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x23F0 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x24A4 DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP4 PUSH2 0x24B2 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2431 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x35B JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x24DB JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x24CD JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x23F0 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0x253B DUP3 PUSH2 0x24EA JUMP JUMPDEST SWAP3 PUSH2 0x2549 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2431 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x35B JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP3 ADD SWAP1 ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 PUSH1 0x60 DUP2 SWAP4 PUSH1 0x40 DUP4 DUP3 ADD MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2599 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x258B JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x35B JUMPI PUSH1 0x4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x35B JUMPI SWAP1 PUSH1 0x24 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x35B JUMPI PUSH1 0x4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x35B JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x35B JUMPI PUSH2 0x2626 SWAP2 PUSH1 0x4 ADD PUSH2 0x248A JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x263C JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 LT PUSH2 0x2674 JUMPI POP POP JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2669 JUMP JUMPDEST CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x26BB DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP4 PUSH2 0x26C9 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2431 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x35B JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x26F2 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x26E4 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x35B JUMPI JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2746 DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP4 PUSH2 0x2754 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2431 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x35B JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x277D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x276F JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x35B JUMPI DUP3 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 GT PUSH2 0x35B JUMPI DUP4 PUSH2 0x27B7 SWAP2 DUP7 ADD PUSH2 0x26A0 JUMP JUMPDEST SWAP4 PUSH1 0x20 SWAP4 DUP5 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x35B JUMPI DUP1 MLOAD PUSH2 0x27DE DUP2 PUSH2 0x2472 JUMP JUMPDEST SWAP2 PUSH1 0x40 SWAP8 PUSH2 0x27EE DUP10 MLOAD SWAP5 DUP6 PUSH2 0x2431 JUMP JUMPDEST DUP3 DUP5 MSTORE DUP1 DUP5 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP7 DUP5 GT PUSH2 0x35B JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x2843 JUMPI POP POP POP POP POP SWAP5 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x35B JUMPI DUP2 PUSH2 0x282C SWAP2 DUP5 ADD PUSH2 0x272B JUMP JUMPDEST SWAP4 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x2626 SWAP3 ADD PUSH2 0x272B JUMP JUMPDEST DUP5 DUP3 DUP9 SUB SLT PUSH2 0x35B JUMPI DUP11 MLOAD SWAP1 DUP6 DUP3 ADD DUP3 DUP2 LT DUP13 DUP3 GT OR PUSH2 0x23F0 JUMPI DUP13 MSTORE DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x35B JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE DUP14 PUSH2 0x28A2 DUP2 DUP8 ADD PUSH2 0x271E JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x2809 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x28C5 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x263C JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x263C JUMPI JUMP JUMPDEST SWAP1 PUSH0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND SWAP3 PUSH2 0x140 DUP6 ADD SWAP1 PUSH2 0x2957 DUP3 PUSH2 0x267F JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP1 MLOAD SWAP5 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP1 PUSH1 0x4 SWAP5 AND DUP5 DUP8 ADD MSTORE PUSH0 DUP7 PUSH1 0x24 DUP2 DUP12 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0xAB3 JUMPI PUSH0 SWAP1 PUSH0 SWAP8 PUSH2 0x3101 JUMPI JUMPDEST POP PUSH2 0x29AB DUP7 PUSH2 0x267F JUMP JUMPDEST SWAP6 DUP3 DUP5 MLOAD SWAP8 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE AND DUP7 DUP9 ADD MSTORE PUSH0 DUP8 PUSH1 0x24 DUP2 DUP14 GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0xD32 JUMPI PUSH0 SWAP8 PUSH2 0x30BB JUMPI JUMPDEST POP PUSH2 0x29F8 SWAP1 PUSH2 0x267F JUMP JUMPDEST SWAP4 DUP3 DUP5 MLOAD SWAP6 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND DUP7 DUP7 ADD MSTORE PUSH0 DUP6 PUSH1 0x24 DUP2 DUP14 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0xD32 JUMPI PUSH0 SWAP6 PUSH0 SWAP8 PUSH2 0x305E JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2B4E JUMPI DUP13 DUP6 PUSH2 0x2A64 PUSH1 0x20 DUP3 PUSH2 0x2A5B DUP7 DUP11 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND SWAP4 ADD PUSH2 0x267F JUMP JUMPDEST AND SUB PUSH2 0x2AE5 JUMPI PUSH1 0xA0 DUP14 ADD CALLDATALOAD PUSH2 0x2A79 DUP3 DUP12 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP2 SUB PUSH2 0x2ACF JUMPI PUSH2 0x2AA0 SWAP1 PUSH2 0x2A8E DUP4 DUP11 PUSH2 0x28B1 JUMP JUMPDEST MLOAD PUSH2 0x2A99 DUP5 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x3960 JUMP JUMPDEST PUSH2 0x2AAA DUP3 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD SUB PUSH2 0x2ABA JUMPI PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x2A40 JUMP JUMPDEST POP PUSH0 SWAP12 PUSH2 0x100 ADD CALLDATALOAD SWAP11 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP PUSH0 SWAP13 PUSH2 0x100 ADD CALLDATALOAD SWAP12 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP13 DUP6 PUSH2 0x2AF6 DUP9 DUP3 PUSH2 0x2A5B DUP7 DUP11 PUSH2 0x28B1 JUMP JUMPDEST AND EQ PUSH2 0x2B05 JUMPI JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x2AB4 JUMP JUMPDEST PUSH1 0xC0 DUP14 ADD CALLDATALOAD PUSH2 0x2B14 DUP3 DUP12 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP2 SUB PUSH2 0x2ACF JUMPI PUSH2 0x2B29 SWAP1 PUSH2 0x2A8E DUP4 DUP11 PUSH2 0x28B1 JUMP JUMPDEST PUSH2 0x2B33 DUP3 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD EQ PUSH2 0x2AFD JUMPI POP PUSH0 SWAP12 PUSH2 0x100 ADD CALLDATALOAD SWAP11 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP SWAP7 POP SWAP8 SWAP9 SWAP4 POP POP SWAP8 SWAP5 POP SWAP2 POP PUSH2 0x100 DUP5 ADD CALLDATALOAD SWAP7 PUSH1 0x3 SLOAD ISZERO ISZERO PUSH0 EQ PUSH2 0x2D43 JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x2B83 PUSH1 0x3 SLOAD DUP10 PUSH2 0x2629 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x2BB0 JUMPI JUMPDEST POP POP POP POP PUSH1 0xE0 SWAP1 JUMPDEST ADD CALLDATALOAD ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2BA2 JUMPI POP SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 POP SLOAD PUSH1 0x20 SHR AND ISZERO SWAP2 SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP7 DUP5 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI PUSH2 0x2C89 JUMPI DUP3 PUSH2 0x2BCD SWAP2 PUSH2 0x28F2 JUMP JUMPDEST SWAP7 PUSH2 0x2BD9 DUP5 DUP7 ADD PUSH2 0x267F JUMP JUMPDEST DUP3 EXTCODESIZE ISZERO PUSH2 0x2C85 JUMPI DUP5 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP2 DUP3 MSTORE ADDRESS PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 SWAP3 SWAP2 DUP6 SWAP2 DUP5 SWAP2 DUP3 SWAP1 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x60 ADD SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2C7C JUMPI POP SWAP1 DUP4 SWAP2 PUSH2 0x2C64 JUMPI JUMPDEST POP POP PUSH1 0xE0 SWAP1 JUMPDEST SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x2B8B JUMP JUMPDEST PUSH2 0x2C6D SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH2 0x2C78 JUMPI DUP2 PUSH0 PUSH2 0x2C55 JUMP JUMPDEST POP DUP1 REVERT JUMPDEST MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST DUP3 PUSH2 0x2C97 SWAP2 SWAP9 SWAP5 SWAP4 SWAP9 PUSH2 0x28FF JUMP JUMPDEST SWAP7 PUSH2 0x2CA4 PUSH1 0x20 DUP7 ADD PUSH2 0x267F JUMP JUMPDEST SWAP2 DUP1 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI DUP4 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP5 DUP4 ADD SWAP5 DUP6 MSTORE ADDRESS PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 SWAP3 PUSH0 SWAP2 DUP5 SWAP2 DUP3 SWAP1 DUP5 SWAP1 DUP3 SWAP1 PUSH1 0x60 ADD SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D3A JUMPI POP PUSH2 0x2D26 JUMPI JUMPDEST POP PUSH1 0xE0 SWAP1 PUSH2 0x2C5B JUMP JUMPDEST PUSH2 0x2D31 SWAP2 SWAP3 POP PUSH2 0x241D JUMP JUMPDEST PUSH0 SWAP1 PUSH1 0xE0 PUSH2 0x2D1D JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 DUP3 SLOAD DUP1 PUSH2 0x2D5B JUMPI JUMPDEST POP POP POP POP POP PUSH1 0xE0 SWAP1 PUSH2 0x2B93 JUMP JUMPDEST PUSH2 0x2D6E PUSH8 0xDE0B6B3A7640000 SWAP2 DUP11 PUSH2 0x2629 JUMP JUMPDEST DIV DUP1 ISZERO PUSH2 0x2D4E JUMPI SWAP1 SWAP2 SWAP3 SWAP4 SWAP8 DUP6 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x35B JUMPI DUP3 SWAP1 PUSH2 0x2F29 JUMPI PUSH2 0x2D94 SWAP2 PUSH2 0x28FF JUMP JUMPDEST SWAP8 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x38 SHR AND PUSH2 0x2DB6 JUMPI JUMPDEST POP POP POP POP POP PUSH1 0xE0 SWAP1 JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2D4E JUMP JUMPDEST DUP3 DUP7 ADD SWAP4 PUSH2 0x2DC3 DUP6 PUSH2 0x267F JUMP JUMPDEST AND SWAP5 DUP4 MLOAD DUP1 SWAP7 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x20 SWAP8 DUP9 SWAP2 DUP2 PUSH0 DUP2 PUSH2 0x2E24 DUP11 DUP11 DUP11 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2F1F JUMPI SWAP1 DUP8 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x2EE0 JUMPI JUMPDEST POP PUSH0 PUSH2 0x2E47 PUSH2 0x2E9E SWAP8 PUSH2 0x267F JUMP JUMPDEST SWAP2 DUP7 MLOAD SWAP8 DUP9 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D3A JUMPI POP PUSH2 0x2EB7 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x2DA3 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2ED9 JUMPI JUMPDEST PUSH2 0x2ECA DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x2EAF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2EC0 JUMP JUMPDEST SWAP4 DUP5 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2F18 JUMPI JUMPDEST PUSH2 0x2EF5 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 PUSH2 0x2E47 PUSH2 0x2E9E SWAP8 PUSH2 0x2F0F DUP11 SWAP8 PUSH2 0x271E JUMP JUMPDEST POP SWAP8 POP POP PUSH2 0x2E39 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2EEB JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x2F32 SWAP2 PUSH2 0x28F2 JUMP JUMPDEST SWAP8 PUSH1 0xFF PUSH1 0x2 SLOAD PUSH1 0x38 SHR AND PUSH2 0x2F4E JUMPI JUMPDEST POP POP POP POP POP PUSH1 0xE0 SWAP1 PUSH2 0x2DAC JUMP JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP8 ADD SWAP5 PUSH2 0x2F5E DUP7 PUSH2 0x267F JUMP JUMPDEST AND DUP7 DUP6 MLOAD DUP1 SWAP3 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 PUSH0 DUP2 PUSH2 0x2FBA DUP11 DUP11 DUP11 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x2F1F JUMPI SWAP1 DUP8 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x301F JUMPI JUMPDEST POP PUSH0 PUSH2 0x2E47 PUSH2 0x2FDD SWAP8 PUSH2 0x267F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2D3A JUMPI POP PUSH2 0x2FF6 JUMPI JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x2F41 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3018 JUMPI JUMPDEST PUSH2 0x3009 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x2FEE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2FFF JUMP JUMPDEST SWAP4 DUP5 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3057 JUMPI JUMPDEST PUSH2 0x3034 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 PUSH2 0x2E47 PUSH2 0x2FDD SWAP8 PUSH2 0x304E DUP11 SWAP8 PUSH2 0x271E JUMP JUMPDEST POP SWAP8 POP POP PUSH2 0x2FCF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x302A JUMP JUMPDEST SWAP6 POP SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP8 RETURNDATACOPY PUSH2 0x3071 DUP2 DUP8 PUSH2 0x2431 JUMP JUMPDEST DUP6 ADD SWAP5 DUP5 DUP2 DUP8 SUB SLT PUSH2 0x35B JUMPI DUP1 MLOAD SWAP6 PUSH8 0xFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP2 GT PUSH2 0x35B JUMPI DUP2 PUSH2 0x309D SWAP2 DUP5 ADD PUSH2 0x272B JUMP JUMPDEST SWAP7 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x30B4 SWAP3 ADD PUSH2 0x272B JUMP JUMPDEST SWAP6 PUSH0 PUSH2 0x2A3D JUMP JUMPDEST SWAP1 SWAP7 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x30CD DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x35B JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x35B JUMPI PUSH2 0x29F8 SWAP3 PUSH2 0x30FA SWAP3 ADD PUSH2 0x272B JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x29EE JUMP JUMPDEST SWAP1 POP PUSH2 0x3120 SWAP2 SWAP7 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3118 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x278C JUMP JUMPDEST SWAP8 SWAP3 SWAP2 POP SWAP7 PUSH2 0x29A1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x1 DUP1 SLOAD SWAP1 DUP2 DUP4 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x20 DUP5 ADD SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP3 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3182 JUMPI POP POP POP POP POP SWAP1 PUSH2 0x3180 SWAP2 SUB DUP4 PUSH2 0x2431 JUMP JUMPDEST JUMP JUMPDEST DUP5 SLOAD DUP7 MSTORE DUP9 SWAP7 POP SWAP5 DUP6 ADD SWAP5 SWAP4 DUP4 ADD SWAP4 SWAP1 DUP4 ADD SWAP1 PUSH2 0x3168 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x48 SHR AND PUSH2 0x3559 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 PUSH32 0x0 AND SWAP1 PUSH1 0x40 SWAP5 DUP6 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x4 SWAP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x354F JUMPI PUSH0 SWAP2 PUSH2 0x3533 JUMPI JUMPDEST POP PUSH1 0x7 DUP1 SLOAD ISZERO PUSH2 0x3349 JUMPI PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x3333 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x325F PUSH2 0x3256 DUP4 DUP9 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP5 SLOAD SWAP1 PUSH2 0x2629 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x3271 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x3237 JUMP JUMPDEST PUSH2 0x3285 DUP3 PUSH2 0x327F DUP4 DUP10 PUSH2 0x28B1 JUMP JUMPDEST MLOAD PUSH2 0x28F2 JUMP JUMPDEST PUSH2 0x328F DUP3 DUP9 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP5 PUSH2 0x329B DUP3 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND DUP8 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI DUP11 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 DUP11 ADD SWAP1 DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB DUP2 DUP4 DUP12 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3329 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x331A JUMPI JUMPDEST POP PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x3323 SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH0 PUSH2 0x3314 JUMP JUMPDEST DUP11 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP POP SWAP4 SWAP1 POP PUSH1 0xFF SWAP2 POP JUMPDEST PUSH0 SLOAD SWAP1 SHR AND ISZERO SWAP2 SWAP1 JUMP JUMPDEST POP SWAP2 SWAP5 SWAP4 SWAP6 SWAP3 SWAP1 PUSH1 0x8 DUP1 SLOAD PUSH2 0x3368 JUMPI JUMPDEST POP POP POP POP PUSH1 0xFF SWAP2 SWAP3 SWAP4 POP PUSH2 0x333F JUMP JUMPDEST PUSH0 SWAP8 SWAP6 SWAP8 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x351C JUMPI DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3396 PUSH2 0x338D DUP5 DUP13 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP6 SLOAD SWAP1 PUSH2 0x2629 JUMP JUMPDEST DIV DUP5 PUSH2 0x33A2 DUP5 DUP10 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND DUP2 PUSH2 0x33B5 JUMPI JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x336D JUMP JUMPDEST DUP9 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0x3410 DUP7 PUSH1 0x20 SWAP9 DUP10 SWAP6 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP7 GAS CALL DUP1 ISZERO PUSH2 0x3329 JUMPI SWAP1 DUP5 SWAP3 SWAP2 PUSH2 0x34E9 JUMPI JUMPDEST POP DUP12 PUSH2 0x3445 DUP7 PUSH2 0x343F DUP7 PUSH2 0x3439 DUP4 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MLOAD PUSH2 0x28FF JUMP JUMPDEST SWAP3 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP11 PUSH2 0x349E DUP12 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP11 GAS CALL DUP1 ISZERO PUSH2 0x34DF JUMPI PUSH2 0x34B6 JUMPI JUMPDEST DUP6 SWAP2 PUSH2 0x33AA JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x34D8 JUMPI JUMPDEST PUSH2 0x34C9 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x34AF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34BF JUMP JUMPDEST DUP9 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 DUP3 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3515 JUMPI JUMPDEST PUSH2 0x34FE DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH2 0x3510 DUP5 SWAP3 PUSH2 0x271E JUMP JUMPDEST PUSH2 0x3425 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x34F4 JUMP JUMPDEST POP POP POP POP POP PUSH1 0xFF SWAP2 POP SWAP3 SWAP2 SWAP3 DUP4 SWAP3 SWAP2 PUSH0 DUP1 DUP1 PUSH2 0x3359 JUMP JUMPDEST PUSH2 0x3547 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3118 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x322B JUMP JUMPDEST DUP8 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x2626 PUSH2 0x312A JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x35AD JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x3580 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x3575 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x35B JUMPI MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x35B JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xFF PUSH0 SLOAD PUSH1 0x48 SHR AND PUSH2 0x3559 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 PUSH32 0x0 AND SWAP1 PUSH1 0x40 SWAP5 DUP6 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 PUSH1 0x4 SWAP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x354F JUMPI PUSH0 SWAP2 PUSH2 0x3944 JUMPI JUMPDEST POP PUSH1 0x5 DUP1 SLOAD ISZERO PUSH2 0x3779 JUMPI PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x3763 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x369F PUSH2 0x3256 DUP4 DUP9 PUSH2 0x28B1 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x36B1 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x3680 JUMP JUMPDEST PUSH2 0x36BF DUP3 PUSH2 0x3439 DUP4 DUP10 PUSH2 0x28B1 JUMP JUMPDEST PUSH2 0x36C9 DUP3 DUP9 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP5 PUSH2 0x36D5 DUP3 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND DUP8 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI DUP11 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 DUP11 ADD SWAP1 DUP2 MSTORE ADDRESS PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 DUP2 SWAP1 PUSH1 0x60 ADD SUB DUP2 DUP4 DUP12 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x3329 JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3754 JUMPI JUMPDEST POP PUSH2 0x36A7 JUMP JUMPDEST PUSH2 0x375D SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH0 PUSH2 0x374E JUMP JUMPDEST POP POP POP POP SWAP4 POP POP POP JUMPDEST PUSH1 0xFF PUSH0 SLOAD PUSH1 0x30 SHR AND ISZERO SWAP2 SWAP1 JUMP JUMPDEST POP SWAP2 SWAP5 SWAP6 SWAP3 SWAP1 PUSH1 0x6 SWAP3 PUSH1 0x6 SLOAD PUSH2 0x3796 JUMPI JUMPDEST POP POP POP POP POP POP SWAP1 PUSH2 0x376C JUMP JUMPDEST PUSH0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x3932 JUMPI DUP4 DUP4 PUSH2 0x37AD DUP4 DUP6 PUSH2 0x28B1 JUMP JUMPDEST MLOAD AND PUSH8 0xDE0B6B3A7640000 PUSH2 0x37CE PUSH2 0x37C5 DUP6 DUP14 PUSH2 0x28B1 JUMP JUMPDEST MLOAD DUP10 SLOAD SWAP1 PUSH2 0x2629 JUMP JUMPDEST DIV SWAP1 DUP2 PUSH2 0x37E1 JUMPI JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x3798 JUMP JUMPDEST DUP9 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0x383C DUP7 PUSH1 0x20 SWAP9 DUP10 SWAP6 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP7 GAS CALL DUP1 ISZERO PUSH2 0x3329 JUMPI SWAP1 DUP5 SWAP3 SWAP2 PUSH2 0x38FF JUMPI JUMPDEST POP DUP12 PUSH2 0x3865 DUP7 PUSH2 0x343F DUP7 PUSH2 0x327F DUP4 DUP7 PUSH2 0x28B1 JUMP JUMPDEST MSTORE DUP11 PUSH2 0x38BE DUP12 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP11 GAS CALL DUP1 ISZERO PUSH2 0x34DF JUMPI PUSH2 0x38D6 JUMPI JUMPDEST DUP6 SWAP2 PUSH2 0x37D6 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x38F8 JUMPI JUMPDEST PUSH2 0x38E9 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH0 DUP1 PUSH2 0x38CF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x38DF JUMP JUMPDEST SWAP2 DUP3 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x392B JUMPI JUMPDEST PUSH2 0x3914 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x35B JUMPI PUSH2 0x3926 DUP5 SWAP3 PUSH2 0x271E JUMP JUMPDEST PUSH2 0x3851 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x390A JUMP JUMPDEST POP POP POP POP POP POP POP PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x378A JUMP JUMPDEST PUSH2 0x3958 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3118 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3674 JUMP JUMPDEST SWAP2 PUSH2 0x396A SWAP2 PUSH2 0x2629 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x263C JUMPI DUP2 ISZERO PUSH2 0x398F JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xB SLOAD AND PUSH1 0xC SLOAD DUP2 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI PUSH0 SWAP2 PUSH1 0x24 DUP4 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH32 0xA1CFA04100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x3A2D JUMPI PUSH2 0x3A24 JUMPI POP JUMP JUMPDEST PUSH2 0x3180 SWAP1 PUSH2 0x241D JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x10 SLOAD SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 DUP1 SWAP2 ADD SWAP2 PUSH1 0x10 PUSH0 MSTORE PUSH32 0x1B6847DC741A1B0CD08D278845F9D819D87B734759AFB55FE2DE5CB82A9AE672 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x3A7C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 SLOAD DUP6 MSTORE SWAP4 DUP5 ADD SWAP4 PUSH1 0x1 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3A6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND DUP2 PUSH1 0xE SLOAD AND SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP1 PUSH1 0x4 DUP6 ADD MSTORE PUSH0 DUP5 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x3A2D JUMPI PUSH0 SWAP5 PUSH2 0x3BD3 JUMPI JUMPDEST POP DUP3 EXTCODESIZE ISZERO PUSH2 0x35B JUMPI SWAP1 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 PUSH32 0xD8F4CF3C00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x84 DUP5 ADD SWAP1 PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x24 DUP6 ADD MSTORE DUP3 MLOAD DUP1 SWAP2 MSTORE PUSH1 0xA4 DUP5 ADD SWAP3 PUSH1 0x20 DUP1 SWAP2 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x3BB6 JUMPI POP POP POP POP POP SWAP2 DUP2 PUSH0 DUP2 PUSH2 0x3BA5 DUP3 SWAP7 PUSH2 0x3B96 PUSH1 0x3 NOT SWAP2 DUP3 DUP6 DUP3 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x3A38 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB ADD PUSH1 0x64 DUP5 ADD MSTORE PUSH2 0x3A38 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x3A2D JUMPI PUSH2 0x3A24 JUMPI POP JUMP JUMPDEST DUP5 MLOAD DUP2 AND DUP7 MSTORE DUP9 SWAP7 POP SWAP5 DUP3 ADD SWAP5 SWAP4 DUP3 ADD SWAP4 PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x3B6B JUMP JUMPDEST SWAP1 SWAP4 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x3BE5 DUP2 DUP4 PUSH2 0x2431 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x35B JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x35B JUMPI PUSH2 0x3C0C SWAP3 ADD PUSH2 0x26A0 JUMP JUMPDEST SWAP3 PUSH0 PUSH2 0x3B14 JUMP JUMPDEST SWAP1 PUSH2 0x3C50 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x3C28 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x3CA3 JUMPI JUMPDEST PUSH2 0x3C61 JUMPI POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x3C59 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND PUSH27 0x14BCD3CC77A998290237C5D5BFFC1B5778F64E5CAF1AC09A2607FC GT MLOAD PUSH22 0x64736F6C634300081A00330000000000000000000000 ","sourceMap":"905:18485:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;2132:47;905:18485;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3380:22;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3380:22;905:18485;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;2077:49;905:18485;;;;;;;;;;;;;;;:::i;:::-;;;;;16199:51;905:18485;;;;;;;;;;16199:51;905:18485;;;16260:28;905:18485;;;16260:28;905:18485;16298:28;905:18485;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;-1:-1:-1;;16427:52:82;905:18485;;;;;16427:52;905:18485;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;1724:46;905:18485;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;17620:59;905:18485;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;:::i;:::-;;;;;;18532:17;905:18485;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;17180:37;905:18485;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3288:10;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;15584:44:82;905:18485;;;;;;;15584:44;905:18485;;;15638:28;905:18485;;;15638:28;905:18485;15676:28;905:18485;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;2185:52;905:18485;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;9339:23;905:18485;;;;;;9335:111;;905:18485;;;;;;;9460:38;905:18485;;;;9456:87;;905:18485;;9460:38;905:18485;;;;9553:97;;905:18485;;;;;;;9667:28;905:18485;;;;;;9553:97;;;:::i;:::-;;;9456:87;;;:::i;:::-;;;9335:111;905:18485;;;;;;9402:33;;;;905:18485;9402:33;;905:18485;9402:33;;;;;;;905:18485;;9402:33;905:18485;9402:33;905:18485;9402:33;;;9335:111;905:18485;;;;;;;9339:23;905:18485;9335:111;;;;9402:33;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;905:18485;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;17781:52;905:18485;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;1514:43;905:18485;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;1614:47;905:18485;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;1456:51;;;;;905:18485;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4008:15;905:18485;;;;;4038:14;905:18485;;4038:28;;4034:243;;905:18485;;;;;;;;;;;;4295:32;905:18485;;;;;;;;;;;;;;;4034:243;4147:13;;;905:18485;4147:13;;;:::i;:::-;905:18485;;;4133:40;;;;905:18485;4133:40;;;;;;;;;905:18485;4133:40;;;4034:243;905:18485;;4191:25;4187:80;;4034:243;;;;;;;4187:80;905:18485;;-1:-1:-1;4187:80:82;;4133:40;;;;905:18485;4133:40;905:18485;4133:40;;;;;;;:::i;:::-;;;;;905:18485;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;1667:50;905:18485;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9708:1619;905:18485;;;;;;;:::i;:::-;;9708:1619;:::i;:::-;905:18485;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;14733:59;905:18485;;;;;;;;;;14733:59;905:18485;;;;;;;;;;;;;;;14802:32;905:18485;;14802:32;905:18485;;;;;;;;;;;;14802:32;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;:::i;:::-;;;;;;18429:17;905:18485;;;;;-1:-1:-1;;905:18485:82;18458:4;905:18485;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;1900:32;905:18485;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;15000:62;905:18485;;;;;;;;;;15000:62;905:18485;;;;;;;;;;;;;;;15072:32;905:18485;;15072:32;905:18485;;;;;;;;;;;;15072:32;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;18765:12;905:18485;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;-1:-1:-1;;18646:31:82;905:18485;;;;;18646:31;905:18485;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;15286:46;905:18485;;;;;;;;;;15286:46;905:18485;;;15342:28;905:18485;;;15342:28;905:18485;15380:28;905:18485;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4463:23;905:18485;;;;;;4459:118;;905:18485;;;;;4591:31;905:18485;;4587:80;;905:18485;4591:31;905:18485;;;;;;;;4677:86;;905:18485;4777:24;905:18485;;;;;4773:316;;905:18485;;;;;;;;;5106:21;905:18485;;;;;;4773:316;905:18485;;;;;4825:31;;;905:18485;;4904:17;905:18485;;;;;:::i;:::-;4904:29;905:18485;;;-1:-1:-1;;905:18485:82;;;4777:24;905:18485;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3510:55:99;905:18485:82;;;;;;;;;;;:::i;:::-;3462:31:99;;;;;;905:18485:82;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;3510:55:99;:::i;:::-;;4773:316:82;;;;905:18485;;;3510:55:99;:::i;905:18485:82:-;4904:17;905:18485;;;;;;-1:-1:-1;905:18485:82;;;;;;;-1:-1:-1;;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;-1:-1:-1;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4677:86;;;:::i;:::-;;;4587:80;;;:::i;:::-;;;4459:118;905:18485;4540:13;;905:18485;4540:13;;;:::i;:::-;905:18485;;;4526:40;;;;905:18485;4526:40;;;;;;;;;905:18485;4526:40;905:18485;4526:40;905:18485;4526:40;;;4459:118;905:18485;;;;;;;4463:23;905:18485;4459:118;;;;;4526:40;;;;905:18485;4526:40;905:18485;4526:40;;;;;;;:::i;:::-;;;;;905:18485;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;2690:35;905:18485;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;8734:23;905:18485;;;;;;8730:111;;905:18485;;;;;;;8855:35;905:18485;;;;8851:84;;905:18485;;8855:35;905:18485;;;;8945:94;;905:18485;;;;;;;9056:25;905:18485;;;;;;8945:94;;;:::i;:::-;;;8851:84;;;:::i;:::-;;;8730:111;905:18485;;;;;;8797:33;;;;905:18485;8797:33;;905:18485;8797:33;;;;;;;905:18485;;8797:33;905:18485;8797:33;905:18485;8797:33;;;8730:111;905:18485;;;;;;;8734:23;905:18485;8730:111;;;;8797:33;;;;;;;;;;;;;;:::i;:::-;;;;905:18485;;;;;-1:-1:-1;;905:18485:82;;;;;;;;:::i;:::-;;;16936:12;905:18485;;;16936:12;905:18485;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;1938:36;905:18485;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16585:32;905:18485;;;;;;;;16585:32;905:18485;;16627:24;905:18485;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16627:24;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;905:18485:82;;;16627:24;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;905:18485:82;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;1563:45;905:18485;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3772:22;905:18485;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14477:51;905:18485;;;;;;;;;;;;;;;;14477:51;905:18485;;;;;;;;;;;;;;;;;14538:32;905:18485;;14538:32;905:18485;;;;;;;;;14538:32;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;17945:62;905:18485;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;;17044:47;905:18485;;;;;;;;17044:47;905:18485;;;;;;;;;;;;:::i;:::-;;;;;15888:48;905:18485;;;;;;;;;;15888:48;905:18485;;;15946:28;905:18485;;;15946:28;905:18485;15984:28;905:18485;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;2244:36;905:18485;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;17462:49;905:18485;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11333:1651;905:18485;;;;;;;:::i;:::-;;11333:1651;:::i;905:18485::-;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;16841:32;905:18485;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;3520:33;905:18485;;;;3516:82;;905:18485;;;;;;;3615:23;905:18485;;;;;;3516:82;;;:::i;:::-;;;905:18485;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;:::i;:::-;;;16725:23;905:18485;;;16725:23;905:18485;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;18167:4;905:18485;18167:4;905:18485;18167:4;905:18485;;18167:4;905:18485;;;;;;;;;;18167:4;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3160:17;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;2027:44;905:18485;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;1836:57;905:18485;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;1776:54;905:18485;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;905:18485:82;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;5140:3315::-;;905:18485;;;5355:6;;905:18485;5379:11;;;;;;;;:::i;:::-;905:18485;;;;5355:36;905:18485;5355:36;;;;905:18485;;5355:36;;;905:18485;;5355:36;905:18485;5355:36;;;;;;;;;905:18485;;;;5355:36;;5140:3315;5492:11;;;;:::i;:::-;905:18485;;;;5441:63;905:18485;5441:63;;905:18485;5441:63;;;905:18485;;5441:63;905:18485;5441:63;;;;;;;;;905:18485;5441:63;;;5140:3315;5600:11;;;;:::i;:::-;905:18485;;;;5575:37;905:18485;5575:37;;905:18485;5575:37;;;905:18485;;5575:37;905:18485;5575:37;;;;;;;;;905:18485;;;5575:37;;;5140:3315;5628:13;905:18485;5662:3;905:18485;;5643:17;;;;;5685:9;;5698:14;905:18485;5685:9;;;;;:::i;:::-;905:18485;;5698:14;;;:::i;:::-;905:18485;5685:27;905:18485;;5736:29;;;905:18485;5769:22;;;;:::i;:::-;905:18485;5736:55;;5732:144;;5929:139;6003:17;;;;;:::i;:::-;905:18485;6042:8;;;;:::i;:::-;905:18485;5929:139;;:::i;:::-;6119:14;;;;:::i;:::-;905:18485;6090:43;6086:132;;905:18485;5681:1113;;905:18485;5628:13;;6086:132;-1:-1:-1;905:18485:82;;6172:26;;905:18485;;-1:-1:-1;;;;;;;;;;6157:42:82:o;5732:144::-;-1:-1:-1;905:18485:82;;5830:26;;905:18485;;-1:-1:-1;;;;;;;;;;;5815:42:82:o;5681:1113::-;6242:9;;6255:15;6242:9;;;;;;:::i;6255:15::-;905:18485;6242:28;6238:556;;5681:1113;905:18485;5681:1113;;;6238:556;6294:30;;;905:18485;6328:22;;;;:::i;:::-;905:18485;6294:56;;6290:145;;6489:140;6564:17;;;;;:::i;6489:140::-;6681:14;;;;:::i;:::-;905:18485;6651:44;6238:556;6647:133;-1:-1:-1;905:18485:82;;6734:26;;905:18485;;-1:-1:-1;;;;;;;;;;6719:42:82:o;5643:17::-;;;;;;;;;;;;;;6856:26;;;905:18485;;6896:21;905:18485;6896:25;;6892:1445;6896:21;;;905:18485;465:4:47;838:5;6896:21:82;905:18485;838:5:47;;:::i;:::-;465:4;7035:11:82;;7031:410;;6892:1445;;;;;905:18485;6892:1445;;8355:31;905:18485;8355:35;;:59;;;;8347:101;;5140:3315;:::o;8355:59::-;905:18485;;;;;;;8394:20;8347:101;5140:3315;:::o;7031:410::-;905:18485;;;;;;;;;;;;7070:32;;7126:42;;;;:::i;:::-;7204:15;;;;;;:::i;:::-;7190:54;;;;;905:18485;;;7190:54;;905:18485;;;;7190:54;;;905:18485;;;7229:4;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;;7190:54;;;;;;;;;;;;;;;7066:361;;;905:18485;7066:361;;7031:410;;;;;;7190:54;;;;:::i;:::-;905:18485;;7190:54;;;;905:18485;;;;7190:54;905:18485;;;;;;;;7190:54;905:18485;;;7066:361;7291:42;;;;;;;;:::i;:::-;7369:14;;905:18485;7369:14;;;:::i;:::-;7355:53;;;;;;905:18485;;;7355:53;;905:18485;;;;7355:53;;;905:18485;;;7393:4;905:18485;;;;;;;;;;;;;;;;;;;;;;;;;7355:53;;;;;;;;;;;;7066:361;;905:18485;7066:361;;;7355:53;;;;;;:::i;:::-;905:18485;;;7355:53;;;905:18485;;;;;;;;6892:1445;905:18485;;;;;7461:30;7457:880;;6892:1445;;;;;;905:18485;6892:1445;;;7457:880;838:5:47;465:4;838:5;;;:::i;:::-;465:4;7615:16:82;7611:716;7457:880;7611:716;905:18485;;;;;;;;;;;;;7655:32;;;;7711:47;;;:::i;:::-;905:18485;;;;;;;7781:200;;7651:662;;;;;;905:18485;7651:662;;7611:716;;;;;7457:880;;7781:200;7833:15;;;;;;;:::i;:::-;905:18485;;;;7833:55;;905:18485;7833:55;;905:18485;7833:55;;;;905:18485;7833:55;;;;;;;905:18485;;;;;;;;;;;;;;;;;7833:55;;;;;;;;;;;;;;;;;7781:200;7928:15;905:18485;7928:15;7914:44;7928:15;;:::i;:::-;905:18485;;;7914:44;;;;;;;905:18485;7914:44;;;;905:18485;;;;;;;;;;;;;;;;;7914:44;;;;;;;;;;;;;7781:200;;;;;;7914:44;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;7914:44;;;;;;;;;7833:55;;;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;;7928:15;7914:44;905:18485;;;;;:::i;:::-;7833:55;;;;;;;;;;;;905:18485;;;;;;;;;7651:662;8027:47;;;:::i;:::-;905:18485;;;;;;;8097:198;;7651:662;;;;;;905:18485;7651:662;;;8097:198;905:18485;8149:14;;;;;;;;:::i;:::-;905:18485;;;;8149:54;;905:18485;8149:54;;;905:18485;8149:54;;;;;;;905:18485;;;;;;;;;;;;;;;;;8149:54;;;;;;;;;;;;;;;;;8097:198;8243:14;905:18485;8243:14;8229:43;8243:14;;:::i;8229:43::-;;;;;;;;;;;;;8097:198;;;;;;8229:43;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;8229:43;;;;;;;;;8149:54;;;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;;8243:14;8229:43;905:18485;;;;;:::i;:::-;8149:54;;;;;;;;;;;5575:37;;;;;;;905:18485;5575:37;;;;;;:::i;:::-;;;905:18485;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5575:37;;;;5441:63;;;;;;905:18485;5441:63;;;;;;:::i;:::-;;;905:18485;;;;;;;;;;;;;;;;5600:11;905:18485;;;;;:::i;:::-;5441:63;;;;5355:36;;;;;;;;;905:18485;5355:36;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;905:18485;;;;11771:4;;;905:18485;;;;;;;;;;;11771:4;-1:-1:-1;905:18485:82;;;-1:-1:-1;905:18485:82;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;-1:-1:-1;905:18485:82;;;;;;;;;;;;;;11333:1651;;;;905:18485;;;;;;11713:110;;905:18485;11866:6;;;905:18485;;;;;;;11866:29;;;;905:18485;;11866:29;;;905:18485;;11866:29;905:18485;11866:29;;;;;;;;;905:18485;;11866:29;;11333:1651;-1:-1:-1;11961:32:82;905:18485;;11961:36;:32;;905:18485;12059:3;905:18485;;12033:24;;;;;465:4:47;838:5;12100:16:82;;;;:::i;:::-;905:18485;;;838:5:47;;:::i;:::-;465:4;12180:11:82;;12176:167;;12059:3;905:18485;12059:3;;905:18485;12018:13;;12176:167;12215:39;;;;;;:::i;:::-;905:18485;12215:39;:::i;:::-;;;;;:::i;:::-;905:18485;12290:9;;;;;:::i;:::-;905:18485;;12276:48;;;;;905:18485;;;12276:48;;905:18485;;;;12276:48;;;905:18485;;;12309:4;905:18485;;;;;;;;;;;;;;;;;;;;12276:48;;;;;;;;;;;905:18485;12276:48;;;12176:167;;;;12276:48;;;;:::i;:::-;;;;;905:18485;;;;;;;;;12033:24;;;;;;;;905:18485;12033:24;;11957:947;905:18485;;;;;12922:27;12914:63;11333:1651;:::o;11957:947::-;12377:37;;;;;;;;;905:18485;12373:531;;11957:947;;;;;905:18485;11957:947;;;;;;12373:531;905:18485;12439:13;;;12480:3;905:18485;;12454:24;;;;;12526:16;465:4:47;838:5;12526:16:82;;;;:::i;:::-;905:18485;;;838:5:47;;:::i;:::-;465:4;12622:9:82;;;;;:::i;:::-;905:18485;;12654:16;12650:230;;12480:3;;;;905:18485;;12439:13;;12650:230;905:18485;;;12694:45;;905:18485;;;12694:45;905:18485;;12694:45;;;;;905:18485;;;;;;;;;;;;;;;;;12694:45;;;905:18485;12694:45;;;;;;;;;;;;;12650:230;12761:44;;;;;;;;;;:::i;:::-;905:18485;12761:44;:::i;:::-;;;:::i;:::-;905:18485;;12827:34;905:18485;;12827:34;;;;;905:18485;12827:34;;;;905:18485;;;;;;;;;;;;;;;;;12827:34;;;905:18485;12827:34;;;;;;;;;12650:230;;;;;12827:34;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;12827:34;;;;;;;;;;905:18485;;;;;;;;;12694:45;;;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;;;;;:::i;:::-;12694:45;;;;;;;12454:24;;;;;;905:18485;12454:24;;;;;12373:531;;;;;;;;11866:29;;;;;;905:18485;11866:29;;;;;;:::i;:::-;;;;;;;905:18485;;;;;;;;;11713:110;-1:-1:-1;11771:4:82;;-1:-1:-1;905:18485:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9708:1619::-;;;;905:18485;;;;;;10080:110;;905:18485;10233:6;;;905:18485;;;;;;;10233:29;;;;905:18485;;10233:29;;;905:18485;;10233:29;905:18485;10233:29;;;;;;;;;905:18485;;10233:29;;9708:1619;-1:-1:-1;10326:29:82;905:18485;;10326:33;:29;;905:18485;10420:3;905:18485;;10395:23;;;;;465:4:47;838:5;10461:15:82;;;;:::i;838:5:47:-;465:4;10537:11:82;;10533:166;;10420:3;905:18485;10420:3;;905:18485;10380:13;;10533:166;10572:38;;;;;;:::i;:::-;;;;;:::i;:::-;905:18485;10646:9;;;;;:::i;:::-;905:18485;;10632:48;;;;;905:18485;;;10632:48;;905:18485;;;;10632:48;;;905:18485;;;10665:4;905:18485;;;;;;;;;;;;;;;;;;;;10632:48;;;;;;;;;;;905:18485;10632:48;;;10533:166;;;;10632:48;;;;:::i;:::-;;;;10395:23;;;;;;;;;10322:929;905:18485;;;;;;11269:24;11261:59;9708:1619;:::o;10322:929::-;10733:34;;;;;;;905:18485;10733:34;905:18485;10729:522;;10322:929;;;;;;;;;;10729:522;905:18485;10832:3;905:18485;;10807:23;;;;;10870:9;;;;;;:::i;:::-;905:18485;;465:4:47;838:5;10921:15:82;;;;:::i;:::-;905:18485;;;838:5:47;;:::i;:::-;465:4;11002:16:82;;10998:229;;10832:3;;;;905:18485;;10792:13;;10998:229;905:18485;;;11042:45;;905:18485;;;11042:45;905:18485;;11042:45;;;;;905:18485;;;;;;;;;;;;;;;;;11042:45;;;905:18485;11042:45;;;;;;;;;;;;;10998:229;11109:43;;;;;;;;;;:::i;:::-;905:18485;;11174:34;905:18485;;11174:34;;;;;905:18485;11174:34;;;;905:18485;;;;;;;;;;;;;;;;;11174:34;;;905:18485;11174:34;;;;;;;;;10998:229;;;;;11174:34;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;11174:34;;;;;;;;;11042:45;;;;;;;;;;;;;;:::i;:::-;;;905:18485;;;;;;;;:::i;:::-;11042:45;;;;;;;10807:23;;;;;;;;10729:522;;;;;;;;10233:29;;;;;;905:18485;10233:29;;;;;;:::i;:::-;;;;;;3280:418:43;;3665:25;3280:418;3665:25;:::i;:::-;465:4:47;;905:18485:82;;;;;;;;;;;;;;;465:4:47;;;;;3280:418:43;:::o;465:4:47:-;;-1:-1:-1;465:4:47;;;;;-1:-1:-1;465:4:47;18965:90:82;905:18485;19011:13;905:18485;;19034:13;905:18485;19011:37;;;;;-1:-1:-1;905:18485:82;;;;;;19011:37;;;;;905:18485;19011:37;;;;;905:18485;19011:37;;;;;;;;18965:90;:::o;19011:37::-;;;;:::i;:::-;905:18485;;;-1:-1:-1;905:18485:82;;;;;;19348:15;905:18485;;;;;;;;;;19348:15;-1:-1:-1;905:18485:82;;;-1:-1:-1;905:18485:82;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;19061:327;905:18485;19139:6;;905:18485;;19160:5;905:18485;;;;;19139:27;905:18485;19139:27;;;;;;905:18485;-1:-1:-1;19139:27:82;905:18485;19139:27;;;;;;;;;-1:-1:-1;19139:27:82;;;19061:327;19270:111;;;;;;905:18485;;;;19270:111;;;905:18485;19270:111;;905:18485;;;19270:111;19139:27;19270:111;;905:18485;;;;;;;;;;;;;;;;;;;;-1:-1:-1;905:18485:82;;;;;;;;;;;;;;-1:-1:-1;905:18485:82;;;;;-1:-1:-1;;905:18485:82;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;19270:111;;;;;;;;;;19061:327;:::o;905:18485::-;;;;;;;;;-1:-1:-1;905:18485:82;;;;;;;;;;;;;;;;19139:27;;;;;;-1:-1:-1;19139:27:82;;;;;;:::i;:::-;;;905:18485;;;;;;;;;;;;;;;;;;:::i;:::-;19139:27;;;;4625:582:99;;4797:8;;-1:-1:-1;905:18485:82;;5874:21:99;:17;;6046:142;;;;;;5870:383;6225:17;5894:1;6225:17;;5894:1;6225:17;4793:408;905:18485:82;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;905:18485:82;5121:24:99;;5066:1;5121:24;905:18485:82;5121:24:99;905:18485:82;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;"},"methodIdentifiers":{"addLiquidityHookDiscountPercentage()":"e908e85d","addLiquidityHookFeePercentage()":"02273467","allowFactory(address)":"8f5fae62","changePoolBalancesOnBeforeAddLiquidityHook()":"005b449c","changePoolBalancesOnBeforeRemoveLiquidityHook()":"00d332fd","changePoolBalancesOnBeforeSwapHook()":"e4c593d7","changeTokenRateOnBeforeAddLiquidity()":"af72105d","changeTokenRateOnBeforeInitialize()":"3d05719a","changeTokenRateOnBeforeRemoveLiquidity()":"9f94c522","changeTokenRateOnBeforeSwapHook()":"b298157b","denyFactory(address)":"dc7776ca","disableForcedHookAdjustedAmounts()":"232b59f7","enableForcedHookAdjustedAmountsLiquidity(uint256[])":"0c54b1de","failOnAfterAddLiquidity()":"40dc21d4","failOnAfterInitialize()":"5cd00746","failOnAfterRemoveLiquidity()":"a975dda0","failOnAfterSwapHook()":"a5098f10","failOnBeforeAddLiquidity()":"35f7290e","failOnBeforeInitialize()":"f5279d9c","failOnBeforeRemoveLiquidity()":"677db20e","failOnBeforeSwapHook()":"5351b230","failOnComputeDynamicSwapFeeHook()":"e326f03a","forcedHookAdjustedAmountsLiquidity(uint256)":"a55e47be","getHookFlags()":"d77153a7","getSavedSender()":"6a9a0611","hookSwapDiscountPercentage()":"2352c2ed","hookSwapFeePercentage()":"4392312a","onAfterAddLiquidity(address,address,uint8,uint256[],uint256[],uint256,uint256[],bytes)":"976907cc","onAfterInitialize(uint256[],uint256,bytes)":"38be241d","onAfterRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],uint256[],bytes)":"2754888d","onAfterSwap((uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,bytes))":"18b6eb55","onBeforeAddLiquidity(address,address,uint8,uint256[],uint256,uint256[],bytes)":"45421ec7","onBeforeInitialize(uint256[],bytes)":"1c149e28","onBeforeRemoveLiquidity(address,address,uint8,uint256,uint256[],uint256[],bytes)":"ba5f9f40","onBeforeSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes),address)":"5211fa77","onComputeDynamicSwapFeePercentage((uint8,uint256,uint256[],uint256,uint256,address,bytes),address,uint256)":"a0e8f5ac","onRegister(address,address,(address,uint8,address,bool)[],(bool,bool,bool,bool))":"0b89f182","removeLiquidityHookDiscountPercentage()":"bd825f6b","removeLiquidityHookFeePercentage()":"eb499270","setAddLiquidityHookDiscountPercentage(uint256)":"dda1c15b","setAddLiquidityHookFeePercentage(uint256)":"2e55a841","setChangePoolBalancesOnBeforeAddLiquidityHook(bool,uint256[])":"93c4b286","setChangePoolBalancesOnBeforeRemoveLiquidityHook(bool,uint256[])":"71eff9d2","setChangePoolBalancesOnBeforeSwapHook(bool,uint256[])":"34e3a8c3","setChangeTokenRateOnBeforeAddLiquidityHook(bool,address,uint256)":"335d4126","setChangeTokenRateOnBeforeInitializeHook(bool,address,uint256)":"5991de93","setChangeTokenRateOnBeforeRemoveLiquidityHook(bool,address,uint256)":"e62eecdd","setChangeTokenRateOnBeforeSwapHook(bool,address,uint256)":"c25dade8","setDynamicSwapFeePercentage(uint256)":"214ff4c5","setFailOnAfterAddLiquidityHook(bool)":"6e7d75e5","setFailOnAfterInitializeHook(bool)":"b127e385","setFailOnAfterRemoveLiquidityHook(bool)":"039388ba","setFailOnAfterSwapHook(bool)":"7b695d10","setFailOnBeforeAddLiquidityHook(bool)":"82fb5d21","setFailOnBeforeInitializeHook(bool)":"d3fca637","setFailOnBeforeRemoveLiquidityHook(bool)":"d4f83182","setFailOnBeforeSwapHook(bool)":"b3a763b9","setFailOnComputeDynamicSwapFeeHook(bool)":"87ac5691","setHookFlags((bool,bool,bool,bool,bool,bool,bool,bool,bool,bool))":"e9f7c591","setHookSwapDiscountPercentage(uint256)":"fc6e0f59","setHookSwapFeePercentage(uint256)":"da09aacf","setPool(address)":"4437152a","setRemoveLiquidityHookDiscountPercentage(uint256)":"34a168ec","setRemoveLiquidityHookFeePercentage(uint256)":"b445fbe7","setShouldIgnoreSavedSender(bool)":"68c6db6a","setShouldSettleDiscount(bool)":"3478db73","setSpecialSender(address)":"1064dfdd","setSwapReentrancyHook(address,bytes)":"423ef816","setSwapReentrancyHookActive(bool)":"e5e3b67e","shouldForceHookAdjustedAmounts()":"f8b5ef85","shouldIgnoreSavedSender()":"4f036756","shouldSettleDiscount()":"80c554c1","swapReentrancyHookActive()":"31378f4f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"addLiquidityHookDiscountPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addLiquidityHookFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"allowFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changePoolBalancesOnBeforeAddLiquidityHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changePoolBalancesOnBeforeRemoveLiquidityHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changePoolBalancesOnBeforeSwapHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changeTokenRateOnBeforeAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changeTokenRateOnBeforeInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changeTokenRateOnBeforeRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"changeTokenRateOnBeforeSwapHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"denyFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableForcedHookAdjustedAmounts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"hookAdjustedAmountsLiquidity\",\"type\":\"uint256[]\"}],\"name\":\"enableForcedHookAdjustedAmountsLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnAfterAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnAfterInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnAfterRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnAfterSwapHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnBeforeAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnBeforeInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnBeforeRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnBeforeSwapHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failOnComputeDynamicSwapFeeHook\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"forcedHookAdjustedAmountsLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHookFlags\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"}],\"internalType\":\"struct HookFlags\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSavedSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hookSwapDiscountPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hookSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onAfterAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"hookAdjustedAmountsInRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onAfterInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onAfterRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"hookAdjustedAmountsOutRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenInBalanceScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenOutBalanceScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AfterSwapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"onAfterSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onBeforeAddLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onBeforeInitialize\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onBeforeRemoveLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"onBeforeSwap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onComputeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"onRegister\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLiquidityHookDiscountPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLiquidityHookFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"hookDiscountPercentage\",\"type\":\"uint256\"}],\"name\":\"setAddLiquidityHookDiscountPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"hookFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setAddLiquidityHookFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"changeBalances\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"newBalancesRaw\",\"type\":\"uint256[]\"}],\"name\":\"setChangePoolBalancesOnBeforeAddLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"changeBalances\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"newBalancesRaw\",\"type\":\"uint256[]\"}],\"name\":\"setChangePoolBalancesOnBeforeRemoveLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"changeBalances\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"newBalancesRaw\",\"type\":\"uint256[]\"}],\"name\":\"setChangePoolBalancesOnBeforeSwapHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"changeRate\",\"type\":\"bool\"},{\"internalType\":\"contract RateProviderMock\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newTokenRate\",\"type\":\"uint256\"}],\"name\":\"setChangeTokenRateOnBeforeAddLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"changeRate\",\"type\":\"bool\"},{\"internalType\":\"contract RateProviderMock\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newTokenRate\",\"type\":\"uint256\"}],\"name\":\"setChangeTokenRateOnBeforeInitializeHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"changeRate\",\"type\":\"bool\"},{\"internalType\":\"contract RateProviderMock\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newTokenRate\",\"type\":\"uint256\"}],\"name\":\"setChangeTokenRateOnBeforeRemoveLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"changeRate\",\"type\":\"bool\"},{\"internalType\":\"contract RateProviderMock\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newTokenRate\",\"type\":\"uint256\"}],\"name\":\"setChangeTokenRateOnBeforeSwapHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFee\",\"type\":\"uint256\"}],\"name\":\"setDynamicSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnAfterAddLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnAfterInitializeHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnAfterRemoveLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnAfterSwapHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnBeforeAddLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnBeforeInitializeHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnBeforeRemoveLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnBeforeSwapHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"fail\",\"type\":\"bool\"}],\"name\":\"setFailOnComputeDynamicSwapFeeHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"}],\"internalType\":\"struct HookFlags\",\"name\":\"hookFlags\",\"type\":\"tuple\"}],\"name\":\"setHookFlags\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"discountPercentage\",\"type\":\"uint256\"}],\"name\":\"setHookSwapDiscountPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feePercentage\",\"type\":\"uint256\"}],\"name\":\"setHookSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"setPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"hookDiscountPercentage\",\"type\":\"uint256\"}],\"name\":\"setRemoveLiquidityHookDiscountPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"hookFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setRemoveLiquidityHookFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setShouldIgnoreSavedSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"shouldSettleDiscountFlag\",\"type\":\"bool\"}],\"name\":\"setShouldSettleDiscount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"setSpecialSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hookContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setSwapReentrancyHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_swapReentrancyHookActive\",\"type\":\"bool\"}],\"name\":\"setSwapReentrancyHookActive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldForceHookAdjustedAmounts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldIgnoreSavedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shouldSettleDiscount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapReentrancyHookActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{\"getHookFlags()\":{\"details\":\"The Vault will only call hooks the pool says it supports, and of course only if a hooks contract is defined (i.e., the `poolHooksContract` in `PoolRegistrationParams` is non-zero). `onRegister` is the only \\\"mandatory\\\" hook.\",\"returns\":{\"_0\":\"Flags indicating which hooks the contract supports\"}},\"onAfterInitialize(uint256[],uint256,bytes)\":{\"details\":\"Called if the `shouldCallAfterInitialize` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"bptAmountOut\":\"Amount of pool tokens minted during initialization\",\"exactAmountsIn\":\"Exact amounts of input tokens\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"_0\":\"True if the pool accepts the initialization results\"}},\"onBeforeInitialize(uint256[],bytes)\":{\"details\":\"Called if the `shouldCallBeforeInitialize` flag is set in the configuration. Hook contracts should use the `onlyVault` modifier to guarantee this is only called by the Vault.\",\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"userData\":\"Optional, arbitrary data sent with the encoded request\"},\"returns\":{\"_0\":\"True if the pool wishes to proceed with initialization\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getHookFlags()\":{\"notice\":\"Return the set of hooks implemented by the contract.\"},\"onAfterInitialize(uint256[],uint256,bytes)\":{\"notice\":\"Hook to be executed after pool initialization.\"},\"onBeforeInitialize(uint256[],bytes)\":{\"notice\":\"Hook executed before pool initialization.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol\":\"PoolHooksMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol\":{\"keccak256\":\"0x51d1502369f0bb1fec58b7aa848f20e6ea3ddcb4866471e2fdbe96f0f6783fb5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ab9f73ec13f137f3103edf9caa8edc4752db585393cc7db6c62f85a1efdbfb5e\",\"dweb:/ipfs/QmXBoBF18c1f33NYqPmrJ3cqULMak55uznBvzfpf1bHpDd\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol\":{\"keccak256\":\"0x18c434c91bbcd260bd305f2cdc01684a3040bc633c1b185f95cb323a336ac76c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://270260ba29c81dc6d862a0830ccbbdcd81b4543bd9c9b54228493a92568532d4\",\"dweb:/ipfs/QmTHp7v5dGwLujPRaWkoEM22Loy3MuspodMGcm4syAPUvk\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol\":{\"keccak256\":\"0x086e3fda1fa00d50747c9f88711024e107a894904b9ff996fade91f8da326baa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8712c4f68cc951446482c289250ee6ea15c0028bb9b9d82c69d6793aa8dd1ae2\",\"dweb:/ipfs/QmSmz5XkvCDQ4NZ32evpxCvGkYnGbygCn5BP2xwvz2hQgi\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol\":{\"keccak256\":\"0x66a706de1a8eb2836d3a6f41ce8b05b244169c42ff5f947affd885b34c722bd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://88e094f387cf6886b7f9764acaf37b3aa278a1a1fb2dc748d29a791b9fe742d9\",\"dweb:/ipfs/QmdaNH3JjqcpgjvNKG4XVbEbJC9wuhH6gwtv8nifGsBmi4\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol\":{\"keccak256\":\"0xb59762a929624826418e57ef85207703bedfbab512eeb422fd16d40520ab05d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f6363f3ac816ff34ac5b78a564ed0febc9772d1dc130674e73db0a63b29273d\",\"dweb:/ipfs/QmSbmTTFb4vGqHSGQu974CHu146pCfzJRGFMxyN8ujopf7\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BaseHooks.sol\":{\"keccak256\":\"0xe987f0806641ac62fc66a6f3b0c6b58a44832c01a1c95f349eb880b00529756a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f8fc15c0fc44dd7032aa5ece3f281d1d83076719ef9b6f6442be79a62e2c1848\",\"dweb:/ipfs/QmVAZSVhzg6fb3ChkCeAPtLLwqnwmxdkxrenvJaf83trNC\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/test/PoolHooksMock.sol\":{\"keccak256\":\"0xfa03911cad90869dc35062b2d3013541fc57bff075a87b9ff456f79f66d126bd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1e45f871b7c24ae9911eac5d2a190da81d302219250dbaa1a73b90db325a90ec\",\"dweb:/ipfs/QmX7tnpxq7TMSviQgtoqcadULKFhP1otvBrnfHLn9bQVWK\"]},\"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol\":{\"keccak256\":\"0x15772ae4aae0383c40b50689c0bd27af685aaf858758400cf17aba4b87ebafc2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://910e0274c07b8a0fe96d60a2a31a5381dbe29a8d1643dfb7f7e143d070970055\",\"dweb:/ipfs/QmWnLEEdpxSjroaDj3YtD2wcrvMXpnVk2jV59yi4MmyLCK\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/PoolMock.sol":{"PoolMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","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":[],"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":"balances","type":"uint256[]"},{"internalType":"uint256","name":"tokenInIndex","type":"uint256"},{"internalType":"uint256","name":"invariantRatio","type":"uint256"}],"name":"computeBalance","outputs":[{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"enum Rounding","name":"","type":"uint8"}],"name":"computeInvariant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDecimalScalingFactors","outputs":[{"internalType":"uint256[]","name":"scalingFactors","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumInvariantRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","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":"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":"incrementNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"testValue","type":"uint256"}],"name":"mockEventFunction","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onAddLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onRemoveLiquidityCustom","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","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":"params","type":"tuple"}],"name":"onSwap","outputs":[{"internalType":"uint256","name":"amountCalculated","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":"mockRate","type":"uint256"}],"name":"setMockRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"setMultiplier","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"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_string_fromMemory":{"entryPoint":1194,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1159,"id":null,"parameterSlots":2,"returnSlots":0},"fun_toShortStringWithFallback":{"entryPoint":1279,"id":40208,"parameterSlots":1,"returnSlots":1},"fun_toShortStringWithFallback_7637":{"entryPoint":1666,"id":40208,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6101e060408181523461048357612de0803803809161001e8286610487565b8439820190606083830312610483578251906001600160a01b03821682036104835760208481015190946001600160401b039182811161048357856100649183016104aa565b94838201518381116104835761007a92016104aa565b938251958387018781108482111761039a578452600180885281880193603160f81b85526100a7846104ff565b976101209889526100b78a610682565b956101409687528551858701209a8b60e052519020996101009a808c524660a052885190868201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528a83015260608201524660808201523060a082015260a0815260c081018181108582111761039a5789525190206080523060c0526101609488865280519183831161039a576003928354928684811c94168015610479575b88851014610465578190601f94858111610417575b5088908583116001146103b9575f926103ae575b50505f1982861b1c191690861b1783555b805193841161039a5760049586548681811c91168015610390575b8282101461037d5783811161033a575b50809285116001146102d557509383949184925f956102ca575b50501b925f19911b1c19161790555b610180913383526101a0938585526101c0958652670de0b6b3a7640000600555519561262797886107b98939608051886121c7015260a05188612293015260c05188612198015260e051886122160152518761223c015251866110560152518561108001525184818161031101528181610554015281816107e201528181610d9301528181610f84015281816114b40152818161157d015281816117430152818161190c0152818161199c015261212d01525183610ff0015251825050518181816106930152818161072a0152818161092a01528181610c6701526111920152f35b015193505f806101d9565b92919084601f198116885f52855f20955f905b898383106103205750505010610307575b50505050811b0190556101e8565b01519060f8845f19921b161c191690555f8080806102f9565b8587015189559097019694850194889350908101906102e8565b875f52815f208480880160051c820192848910610374575b0160051c019087905b8281106103695750506101bf565b5f815501879061035b565b92508192610352565b602288634e487b7160e01b5f525260245ffd5b90607f16906101af565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610183565b90889350601f19831691875f528a5f20925f5b8c82821061040157505084116103ea575b505050811b018355610194565b01515f1983881b60f8161c191690555f80806103dd565b8385015186558c979095019493840193016103cc565b909150855f52885f208580850160051c8201928b861061045c575b918a91869594930160051c01915b82811061044e57505061016f565b5f81558594508a9101610440565b92508192610432565b634e487b7160e01b5f52602260045260245ffd5b93607f169361015a565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761039a57604052565b81601f82011215610483578051906001600160401b03821161039a57604051926104de601f8401601f191660200185610487565b8284526020838301011161048357815f9260208093018386015e8301015290565b8051602090818110156105755750601f825111610537578082519201519080831061052957501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03821161039a575f54926001938481811c91168015610678575b8382101461046557601f8111610645575b5081601f84116001146105e357509282939183925f946105d8575b50501b915f199060031b1c1916175f5560ff90565b015192505f806105c3565b919083601f1981165f8052845f20945f905b8883831061062b5750505010610613575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610606565b8587015188559096019594850194879350908101906105f5565b5f805284601f845f20920160051c820191601f860160051c015b82811061066d5750506105a8565b5f815501859061065f565b90607f1690610597565b8051602090818110156106ac5750601f825111610537578082519201519080831061052957501790565b9192916001600160401b03811161039a5760019182548381811c911680156107ae575b8282101461046557601f811161077b575b5080601f831160011461071b5750819293945f92610710575b50505f19600383901b1c191690821b17905560ff90565b015190505f806106f9565b90601f19831695845f52825f20925f905b888210610764575050838596971061074c575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808061073f565b80878596829496860151815501950193019061072c565b835f5283601f835f20920160051c820191601f850160051c015b8281106107a35750506106e0565b5f8155018490610795565b90607f16906106cf56fe6080604090808252600480361015610015575f80fd5b5f9160e05f35811c91826301ffc9a714611bd25750816306fdde0314611ae2578163095ea7b314611a6457816316a0b3e0146119d557816318160ddd1461194257816323b872dd1461189a57816323de665114611868578163273c1adf1461183d57816330adf81f14611803578163313ce567146117e8578163360c340f146116ea5781633644e515146116ce5781634cfe8d1a146116b65781635687f2b814611657578163627cdcb91461162e578163641579a614611616578163654cf15d146115f4578163679aefce1461151a57816370a082311461144657816372c981861461137c5781637ecebe001461133857816381fa807c1461113557816384b0196e1461103e578163851c1bb314610fa85781638d928af814610f5857816395d89b4114610e52578163984de9e814610e04578163a9059cbb14610cfb578163aa6ca80814610c0e578163ab68e28c14610b66578163abb1dc44146108cf578163b0e2e403146107b7578163b156aa0a146106d0578163b677fa56146106cb578163ce20ece7146106cb578163d335b0cf14610638578163d505accf1461038e57508063dd62ed3e146102955763e4c43663146101d0575f80fd5b3461028d5760a060031936011261028d576101e9611c7c565b5067ffffffffffffffff6024358181116102915761020a9036908401611d4b565b9260643582811161028d576102229036908501611d4b565b5060843591821161028a5750926102786102456102869361026396369101611e69565b916102508551612004565b8151968796608088526080880190611ded565b91604435602088015286830390870152611ded565b908382036060850152611c39565b0390f35b80fd5b5080fd5b8380fd5b50913461028d578060031936011261028d5760206102b1611c7c565b60646102bb611c9f565b9573ffffffffffffffffffffffffffffffffffffffff8080988751998a9687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a575b6020925051908152f35b90506020823d60201161037b575b8161036560209383611cf2565b81010312610377576020915190610340565b5f80fd5b3d9150610358565b9051903d90823e3d90fd5b91939050346106345781600319360112610634576103aa611c7c565b916103b3611c9f565b90604435936064359160843560ff8116810361063057834211610605576104018373ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b91865160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835273ffffffffffffffffffffffffffffffffffffffff9687871695868b850152888a1660608501528b608085015260a084015260c083015260c08252810181811067ffffffffffffffff8211176105f257926104de926104d59288958b52519020610494612181565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a43592206124ac565b90929192612546565b168181036105c5575050858495969761055060209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156105bc5750610586575080f35b6020813d6020116105b4575b8161059f60209383611cf2565b8101031261028d576105b090611f4d565b5080f35b3d9150610592565b513d84823e3d90fd5b7f4b800e460000000000000000000000000000000000000000000000000000000088528852602452604486fd5b60418c634e487b7160e01b5f525260245ffd5b602488858b7f6279130200000000000000000000000000000000000000000000000000000000835252fd5b8780fd5b8280fd5b5050913461028d578160031936011261028d578051927fb45090f9000000000000000000000000000000000000000000000000000000008452309084015260208360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a576020925051908152f35b611efb565b5050913461028d578160031936011261028d578051927f535cfd8a0000000000000000000000000000000000000000000000000000000084523090840152818360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561038357809261076f575b81516020808252819061028690820186611ded565b9091503d8082853e6107818185611cf2565b83019260208185031261028d5780519167ffffffffffffffff831161028a5750926107b0916102869401611fa3565b905f61075a565b505082346103775760206003193601126103775773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691815192813560208501526020845261081a84611cc2565b803b15610377576108895f9491859285519687809481937fc80882470000000000000000000000000000000000000000000000000000000083527f546573744576656e740000000000000000000000000000000000000000000000898401528960248401526044830190611c39565b03925af180156108c55761089b578380f35b9091925067ffffffffffffffff83116108b2575052005b604190634e487b7160e01b5f525260245ffd5b82513d5f823e3d90fd5b828534610377575f6003193601126103775780517f67e0e076000000000000000000000000000000000000000000000000000000008152308382015273ffffffffffffffffffffffffffffffffffffffff916024905f8383817f000000000000000000000000000000000000000000000000000000000000000088165afa938415610b5c575f955f945f945f97610a08575b5050509061098095949392918151968796608088526080880190611e20565b6020878203818901528080875193848152019601925f905b8382106109c457898803868b015289806102868b6109b68c8c611ded565b908382036060850152611ded565b91849899506060869798600193959783975180516109e181611edd565b83528685820151168584015201511515898201520198019201899897969594929391610998565b94509450945094503d805f853e610a1f8185611cf2565b8301926080818503126103775780519367ffffffffffffffff948581116103775781610a4c918401612085565b936020808401518781116103775784019083601f8301121561037757815192610a7484611d33565b99610a8188519b8c611cf2565b848b52828b019183606080970286010194878611610377579b9c9b8401925b858410610ae95750505050505050828201518581116103775781610ac5918401611fa3565b94606083015190811161037757610adc9201611fa3565b9194929193868080610961565b86849d9e9d890312610377578951908782018d811183821017610b4a578b528451906002821015610377578f91835286860151918216820361037757828792838b950152610b388d8801611f4d565b8d8201528152019301929c9b9c610aa0565b83604186634e487b7160e01b5f52525ffd5b50513d5f823e3d90fd5b8285346103775760a060031936011261037757610b81611c7c565b5067ffffffffffffffff60443581811161037757610ba29036908501611d4b565b9160643582811161037757610bba9036908601611d4b565b5060843591821161037757610278610bdb610c019561028694369101611e69565b91610be68551612004565b81519687966024358852608060208901526080880190611ded565b9186830390870152611ded565b828534610377575f600319360112610377578051917fca4f280300000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f91610cae575b610286925051918291602083526020830190611e20565b90503d805f843e610cbf8184611cf2565b8201916020818403126103775780519267ffffffffffffffff84116103775761028693610cec9201612085565b90610c97565b513d5f823e3d90fd5b8285346103775780600319360112610377576020610d7992610d1b611c7c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca575b6020905160018152f35b6020823d602011610dfc575b81610de360209383611cf2565b8101031261037757610df6602092611f4d565b50610dc0565b3d9150610dd6565b84833461037757816003193601126103775780359067ffffffffffffffff821161037757610e3491369101611d4b565b906002602435101561037757610e4b602092612053565b9051908152f35b848334610377575f60031936011261037757815191825f8354610e7481611f15565b90818452602095600191876001821691825f14610f13575050600114610eb7575b5050506102869291610ea8910385611cf2565b51928284938452830190611c39565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610efb5750505082010181610ea8610286610e95565b8054848a018601528895508794909301928101610ee2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610ea891506102869050610e95565b8434610377575f600319360112610377576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8483346103775760206003193601126103775780357fffffffff00000000000000000000000000000000000000000000000000000000811680910361037757825160208101917f000000000000000000000000000000000000000000000000000000000000000083528482015260248152606081019281841067ffffffffffffffff8511176108b2575082602094525190208152f35b92505034610377575f6003193601126103775761107a7f00000000000000000000000000000000000000000000000000000000000000006122b9565b926110a47f00000000000000000000000000000000000000000000000000000000000000006123ee565b815192602084019084821067ffffffffffffffff8311176108b257509161111591610286949382525f845261110882519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611c39565b9186830390870152611c39565b904660608501523060808501525f60a085015283820360c0850152611ded565b92505034610377575f6003193601126103775782517ff29486a100000000000000000000000000000000000000000000000000000000815230828201526101a092838260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa93841561132e575f946111d9575b858560608282015191015182519182526020820152f35b909180939450813d8311611327575b6111f28183611cf2565b8101039281841261037757855194610140948587019167ffffffffffffffff918884108385111761131457608013610377576101c08801918211838310176108b25750875261124082611f4d565b815261124e60208301611f4d565b906101609182880152611262888401611f4d565b93610180948589015261127760608501611f4d565b9088015286526080820151602087015260a08201518787015260c082015160608701528382015164ffffffffff8116810361037757608087015261010090818301519063ffffffff8216820361037757611307956112fd9260a08a01526112f2610120986112e68a8801611f4d565b60c08c01528601611f4d565b908901528301611f4d565b9086015201611f4d565b908201525f8080806111c2565b604182634e487b7160e01b5f525260245ffd5b503d6111e8565b85513d5f823e3d90fd5b84346103775760206003193601126103775760209073ffffffffffffffffffffffffffffffffffffffff61136a611c7c565b165f5260028252805f20549051908152f35b84833461037757600319926020843601126103775781359367ffffffffffffffff851161037757843603011261037757828101356002811015610377576113c281611edd565b6113ec5750670de0b6b3a76400006113e36020936024600554910135612103565b04905b51908152f35b916024013560055490670de0b6b3a764000090818102918183041490151715611433578115611420576020935004906113e6565b601284634e487b7160e01b5f525260245ffd5b601184634e487b7160e01b5f525260245ffd5b84833461037757602091826003193601126103775782611464611c7c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610b5c575f926114eb575b5051908152f35b9091508281813d8311611513575b6115038183611cf2565b81010312610377575190836114e4565b503d6114f9565b828534610377575f60031936011261037757600654806115ea57508051917f4f037ee7000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610b5c575f906115b7575b602092509051908152f35b506020823d6020116115e2575b816115d160209383611cf2565b8101031261037757602091516115ac565b3d91506115c4565b60209250906113e6565b8434610377575f6003193601126103775760209051670de0b6b3a76400008152f35b82346103775760206003193601126103775735600555005b34610377575f60031936011261037757335f908152600260205260409020805460018101909155005b84346103775760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561168936611dab565b939194611694612116565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b82346103775760206003193601126103775735600655005b8434610377575f60031936011261037757602090610e4b612181565b828534610377575f600319360112610377578051917f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161178a575b610286925051918291602083526020830190611ded565b90503d805f843e61179b8184611cf2565b82019080838303126103775782519267ffffffffffffffff9384811161037757836117c7918301611fa3565b92602082015194851161037757610286946117e29201611fa3565b50611773565b8434610377575f600319360112610377576020905160128152f35b8434610377575f60031936011261037757602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b8434610377575f6003193601126103775760209051701d6329f1c35ca4bfabb9f56100000000008152f35b84346103775760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61168936611dab565b8285346103775760205f60846118af36611dab565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca576020905160018152f35b828534610377575f600319360112610377578051917fe4dc2aa4000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161034a576020925051908152f35b82853461037757606060031936011261037757813567ffffffffffffffff811161037757611a069036908401611d4b565b90611a3d611a20611a1684612053565b9360243590611f5a565b51670de0b6b3a7640000611a3660443586612103565b0490611f82565b918203918211611a51576020925051908152f35b601183634e487b7160e01b5f525260245ffd5b8285346103775780600319360112610377576020610d7992611a84611c7c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b8434610377575f6003193601126103775780516003549091825f611b0584611f15565b808352602094600190866001821691825f14611b92575050600114611b37575b50506102869291610ea8910385611cf2565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611b7a5750505082010181610ea8611b25565b8054848a018601528895508794909301928101611b64565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150610ea89050611b25565b83346103775760206003193601126103775735907fffffffff000000000000000000000000000000000000000000000000000000008216809203610377577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6040810190811067ffffffffffffffff821117611cde57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611cde57604052565b67ffffffffffffffff8111611cde5760051b60200190565b9080601f83011215610377576020908235611d6581611d33565b93611d736040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611d9c575050505090565b81358152908301908301611d8e565b60031960609101126103775773ffffffffffffffffffffffffffffffffffffffff90600435828116810361037757916024359081168103610377579060443590565b9081518082526020808093019301915f5b828110611e0c575050505090565b835185529381019392810192600101611dfe565b9081518082526020808093019301915f5b828110611e3f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611e31565b81601f820112156103775780359067ffffffffffffffff8211611cde5760405192611ebc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185611cf2565b8284526020838301011161037757815f926020809301838601378301015290565b60021115611ee757565b634e487b7160e01b5f52602160045260245ffd5b34610377575f6003193601126103775760206040515f8152f35b90600182811c92168015611f43575b6020831014611f2f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611f24565b5190811515820361037757565b8051821015611f6e5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b91908201809211611f8f57565b634e487b7160e01b5f52601160045260245ffd5b9080601f8301121561037757815190602091611fbe81611d33565b93611fcc6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611ff5575050505090565b81518152908301908301611fe7565b9061200e82611d33565b61201b6040519182611cf2565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120498294611d33565b0190602036910137565b5f90815b815183101561207f576120776001916120708585611f5a565b5190611f82565b920191612057565b91505090565b9080601f83011215610377578151906020916120a081611d33565b936120ae6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b8282106120d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036103775781529083019083016120c9565b81810292918115918404141715611f8f57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361215557565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612290575b156121e9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611cde5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146121c0565b60ff811461230d5760ff811690601f82116122e557604051916122db83611cc2565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f549161231f83611f15565b808352926020906001908181169081156123ab575060011461234d575b505061234a92500382611cf2565b90565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612393575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612378565b90506020935061234a9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f8061233c565b60ff81146124105760ff811690601f82116122e557604051916122db83611cc2565b506040515f8160019160015461242581611f15565b80845293602091600181169081156123ab575060011461244d57505061234a92500382611cf2565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612494575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612479565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161253b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612530575f5173ffffffffffffffffffffffffffffffffffffffff81161561252657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b6004811015611ee75780612558575050565b60018103612588577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b600281036125bc57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146125c65750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffdfea2646970667358221220031608d4fc5bbc7ccbc38dfb1adf85e117593d892ff034148dc3f4aab1e26d9864736f6c634300081a0033","opcodes":"PUSH2 0x1E0 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH2 0x483 JUMPI PUSH2 0x2DE0 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1E DUP3 DUP7 PUSH2 0x487 JUMP JUMPDEST DUP5 CODECOPY DUP3 ADD SWAP1 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x483 JUMPI DUP3 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x483 JUMPI PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 DUP2 GT PUSH2 0x483 JUMPI DUP6 PUSH2 0x64 SWAP2 DUP4 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP5 DUP4 DUP3 ADD MLOAD DUP4 DUP2 GT PUSH2 0x483 JUMPI PUSH2 0x7A SWAP3 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP4 DUP3 MLOAD SWAP6 DUP4 DUP8 ADD DUP8 DUP2 LT DUP5 DUP3 GT OR PUSH2 0x39A JUMPI DUP5 MSTORE PUSH1 0x1 DUP1 DUP9 MSTORE DUP2 DUP9 ADD SWAP4 PUSH1 0x31 PUSH1 0xF8 SHL DUP6 MSTORE PUSH2 0xA7 DUP5 PUSH2 0x4FF JUMP JUMPDEST SWAP8 PUSH2 0x120 SWAP9 DUP10 MSTORE PUSH2 0xB7 DUP11 PUSH2 0x682 JUMP JUMPDEST SWAP6 PUSH2 0x140 SWAP7 DUP8 MSTORE DUP6 MLOAD DUP6 DUP8 ADD KECCAK256 SWAP11 DUP12 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 SWAP10 PUSH2 0x100 SWAP11 DUP1 DUP13 MSTORE CHAINID PUSH1 0xA0 MSTORE DUP9 MLOAD SWAP1 DUP7 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE DUP11 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR PUSH2 0x39A JUMPI DUP10 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 SWAP5 DUP9 DUP7 MSTORE DUP1 MLOAD SWAP2 DUP4 DUP4 GT PUSH2 0x39A JUMPI PUSH1 0x3 SWAP3 DUP4 SLOAD SWAP3 DUP7 DUP5 DUP2 SHR SWAP5 AND DUP1 ISZERO PUSH2 0x479 JUMPI JUMPDEST DUP9 DUP6 LT EQ PUSH2 0x465 JUMPI DUP2 SWAP1 PUSH1 0x1F SWAP5 DUP6 DUP2 GT PUSH2 0x417 JUMPI JUMPDEST POP DUP9 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x3B9 JUMPI PUSH0 SWAP3 PUSH2 0x3AE JUMPI JUMPDEST POP POP PUSH0 NOT DUP3 DUP7 SHL SHR NOT AND SWAP1 DUP7 SHL OR DUP4 SSTORE JUMPDEST DUP1 MLOAD SWAP4 DUP5 GT PUSH2 0x39A JUMPI PUSH1 0x4 SWAP6 DUP7 SLOAD DUP7 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x390 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x37D JUMPI DUP4 DUP2 GT PUSH2 0x33A JUMPI JUMPDEST POP DUP1 SWAP3 DUP6 GT PUSH1 0x1 EQ PUSH2 0x2D5 JUMPI POP SWAP4 DUP4 SWAP5 SWAP2 DUP5 SWAP3 PUSH0 SWAP6 PUSH2 0x2CA JUMPI JUMPDEST POP POP SHL SWAP3 PUSH0 NOT SWAP2 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x180 SWAP2 CALLER DUP4 MSTORE PUSH2 0x1A0 SWAP4 DUP6 DUP6 MSTORE PUSH2 0x1C0 SWAP6 DUP7 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x5 SSTORE MLOAD SWAP6 PUSH2 0x2627 SWAP8 DUP9 PUSH2 0x7B9 DUP10 CODECOPY PUSH1 0x80 MLOAD DUP9 PUSH2 0x21C7 ADD MSTORE PUSH1 0xA0 MLOAD DUP9 PUSH2 0x2293 ADD MSTORE PUSH1 0xC0 MLOAD DUP9 PUSH2 0x2198 ADD MSTORE PUSH1 0xE0 MLOAD DUP9 PUSH2 0x2216 ADD MSTORE MLOAD DUP8 PUSH2 0x223C ADD MSTORE MLOAD DUP7 PUSH2 0x1056 ADD MSTORE MLOAD DUP6 PUSH2 0x1080 ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x311 ADD MSTORE DUP2 DUP2 PUSH2 0x554 ADD MSTORE DUP2 DUP2 PUSH2 0x7E2 ADD MSTORE DUP2 DUP2 PUSH2 0xD93 ADD MSTORE DUP2 DUP2 PUSH2 0xF84 ADD MSTORE DUP2 DUP2 PUSH2 0x14B4 ADD MSTORE DUP2 DUP2 PUSH2 0x157D ADD MSTORE DUP2 DUP2 PUSH2 0x1743 ADD MSTORE DUP2 DUP2 PUSH2 0x190C ADD MSTORE DUP2 DUP2 PUSH2 0x199C ADD MSTORE PUSH2 0x212D ADD MSTORE MLOAD DUP4 PUSH2 0xFF0 ADD MSTORE MLOAD DUP3 POP POP MLOAD DUP2 DUP2 DUP2 PUSH2 0x693 ADD MSTORE DUP2 DUP2 PUSH2 0x72A ADD MSTORE DUP2 DUP2 PUSH2 0x92A ADD MSTORE DUP2 DUP2 PUSH2 0xC67 ADD MSTORE PUSH2 0x1192 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP4 POP PUSH0 DUP1 PUSH2 0x1D9 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1F NOT DUP2 AND DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP6 PUSH0 SWAP1 JUMPDEST DUP10 DUP4 DUP4 LT PUSH2 0x320 JUMPI POP POP POP LT PUSH2 0x307 JUMPI JUMPDEST POP POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x1E8 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xF8 DUP5 PUSH0 NOT SWAP3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2F9 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP10 SSTORE SWAP1 SWAP8 ADD SWAP7 SWAP5 DUP6 ADD SWAP5 DUP9 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x2E8 JUMP JUMPDEST DUP8 PUSH0 MSTORE DUP2 PUSH0 KECCAK256 DUP5 DUP1 DUP9 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP5 DUP10 LT PUSH2 0x374 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP8 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x369 JUMPI POP POP PUSH2 0x1BF JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP8 SWAP1 PUSH2 0x35B JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x352 JUMP JUMPDEST PUSH1 0x22 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x1AF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x183 JUMP JUMPDEST SWAP1 DUP9 SWAP4 POP PUSH1 0x1F NOT DUP4 AND SWAP2 DUP8 PUSH0 MSTORE DUP11 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP13 DUP3 DUP3 LT PUSH2 0x401 JUMPI POP POP DUP5 GT PUSH2 0x3EA JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP4 SSTORE PUSH2 0x194 JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP9 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x3DD JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE DUP13 SWAP8 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x3CC JUMP JUMPDEST SWAP1 SWAP2 POP DUP6 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 DUP6 DUP1 DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP12 DUP7 LT PUSH2 0x45C JUMPI JUMPDEST SWAP2 DUP11 SWAP2 DUP7 SWAP6 SWAP5 SWAP4 ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x44E JUMPI POP POP PUSH2 0x16F JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP DUP11 SWAP2 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x432 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP4 PUSH1 0x7F AND SWAP4 PUSH2 0x15A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x39A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x483 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x4DE PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x487 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x483 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x575 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x678 JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x645 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x5E3 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5D8 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x5C3 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0x62B JUMPI POP POP POP LT PUSH2 0x613 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x606 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x5F5 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x66D JUMPI POP POP PUSH2 0x5A8 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0x65F JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x597 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x6AC JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x39A JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7AE JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x77B JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x71B JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x710 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x6F9 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0x764 JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0x74C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x73F JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x72C JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x7A3 JUMPI POP POP PUSH2 0x6E0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x795 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x6CF JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP2 DUP3 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BD2 JUMPI POP DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1A64 JUMPI DUP2 PUSH4 0x16A0B3E0 EQ PUSH2 0x19D5 JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x1942 JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x189A JUMPI DUP2 PUSH4 0x23DE6651 EQ PUSH2 0x1868 JUMPI DUP2 PUSH4 0x273C1ADF EQ PUSH2 0x183D JUMPI DUP2 PUSH4 0x30ADF81F EQ PUSH2 0x1803 JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x17E8 JUMPI DUP2 PUSH4 0x360C340F EQ PUSH2 0x16EA JUMPI DUP2 PUSH4 0x3644E515 EQ PUSH2 0x16CE JUMPI DUP2 PUSH4 0x4CFE8D1A EQ PUSH2 0x16B6 JUMPI DUP2 PUSH4 0x5687F2B8 EQ PUSH2 0x1657 JUMPI DUP2 PUSH4 0x627CDCB9 EQ PUSH2 0x162E JUMPI DUP2 PUSH4 0x641579A6 EQ PUSH2 0x1616 JUMPI DUP2 PUSH4 0x654CF15D EQ PUSH2 0x15F4 JUMPI DUP2 PUSH4 0x679AEFCE EQ PUSH2 0x151A JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x1446 JUMPI DUP2 PUSH4 0x72C98186 EQ PUSH2 0x137C JUMPI DUP2 PUSH4 0x7ECEBE00 EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x81FA807C EQ PUSH2 0x1135 JUMPI DUP2 PUSH4 0x84B0196E EQ PUSH2 0x103E JUMPI DUP2 PUSH4 0x851C1BB3 EQ PUSH2 0xFA8 JUMPI DUP2 PUSH4 0x8D928AF8 EQ PUSH2 0xF58 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xE52 JUMPI DUP2 PUSH4 0x984DE9E8 EQ PUSH2 0xE04 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCFB JUMPI DUP2 PUSH4 0xAA6CA808 EQ PUSH2 0xC0E JUMPI DUP2 PUSH4 0xAB68E28C EQ PUSH2 0xB66 JUMPI DUP2 PUSH4 0xABB1DC44 EQ PUSH2 0x8CF JUMPI DUP2 PUSH4 0xB0E2E403 EQ PUSH2 0x7B7 JUMPI DUP2 PUSH4 0xB156AA0A EQ PUSH2 0x6D0 JUMPI DUP2 PUSH4 0xB677FA56 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xCE20ECE7 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xD335B0CF EQ PUSH2 0x638 JUMPI DUP2 PUSH4 0xD505ACCF EQ PUSH2 0x38E JUMPI POP DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x295 JUMPI PUSH4 0xE4C43663 EQ PUSH2 0x1D0 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x28D JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH2 0x1E9 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x291 JUMPI PUSH2 0x20A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x28D JUMPI PUSH2 0x222 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x278 PUSH2 0x245 PUSH2 0x286 SWAP4 PUSH2 0x263 SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0x250 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP9 ADD MSTORE DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH1 0x20 PUSH2 0x2B1 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x2BB PUSH2 0x1C9F JUMP JUMPDEST SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP9 DUP8 MLOAD SWAP10 DUP11 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x37B JUMPI JUMPDEST DUP2 PUSH2 0x365 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x340 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x358 JUMP JUMPDEST SWAP1 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 POP CALLVALUE PUSH2 0x634 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x634 JUMPI PUSH2 0x3AA PUSH2 0x1C7C JUMP JUMPDEST SWAP2 PUSH2 0x3B3 PUSH2 0x1C9F JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x630 JUMPI DUP4 TIMESTAMP GT PUSH2 0x605 JUMPI PUSH2 0x401 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP7 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP8 AND SWAP6 DUP7 DUP12 DUP6 ADD MSTORE DUP9 DUP11 AND PUSH1 0x60 DUP6 ADD MSTORE DUP12 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 MSTORE DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x5F2 JUMPI SWAP3 PUSH2 0x4DE SWAP3 PUSH2 0x4D5 SWAP3 DUP9 SWAP6 DUP12 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0x494 PUSH2 0x2181 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x24AC JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2546 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x5C5 JUMPI POP POP DUP6 DUP5 SWAP6 SWAP7 SWAP8 PUSH2 0x550 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x5BC JUMPI POP PUSH2 0x586 JUMPI POP DUP1 RETURN JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x5B4 JUMPI JUMPDEST DUP2 PUSH2 0x59F PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x28D JUMPI PUSH2 0x5B0 SWAP1 PUSH2 0x1F4D JUMP JUMPDEST POP DUP1 RETURN JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x592 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 DUP9 MSTORE DUP9 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP7 REVERT JUMPDEST PUSH1 0x41 DUP13 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x24 DUP9 DUP6 DUP12 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE PUSH1 0x20 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1EFB JUMP JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE DUP2 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI DUP1 SWAP3 PUSH2 0x76F JUMPI JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 ADD DUP7 PUSH2 0x1DED JUMP JUMPDEST SWAP1 SWAP2 POP RETURNDATASIZE DUP1 DUP3 DUP6 RETURNDATACOPY PUSH2 0x781 DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x20 DUP2 DUP6 SUB SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x7B0 SWAP2 PUSH2 0x286 SWAP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x75A JUMP JUMPDEST POP POP DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 DUP2 MLOAD SWAP3 DUP2 CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP5 MSTORE PUSH2 0x81A DUP5 PUSH2 0x1CC2 JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x377 JUMPI PUSH2 0x889 PUSH0 SWAP5 SWAP2 DUP6 SWAP3 DUP6 MLOAD SWAP7 DUP8 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xC808824700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH32 0x546573744576656E740000000000000000000000000000000000000000000000 DUP10 DUP5 ADD MSTORE DUP10 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x8C5 JUMPI PUSH2 0x89B JUMPI DUP4 DUP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x8B2 JUMPI POP MSTORE STOP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 SWAP1 PUSH0 DUP4 DUP4 DUP2 PUSH32 0x0 DUP9 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP6 PUSH0 SWAP5 PUSH0 SWAP5 PUSH0 SWAP8 PUSH2 0xA08 JUMPI JUMPDEST POP POP POP SWAP1 PUSH2 0x980 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x9C4 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x286 DUP12 PUSH2 0x9B6 DUP13 DUP13 PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0x9E1 DUP2 PUSH2 0x1EDD JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0x998 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xA1F DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xA4C SWAP2 DUP5 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP5 ADD MLOAD DUP8 DUP2 GT PUSH2 0x377 JUMPI DUP5 ADD SWAP1 DUP4 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP3 PUSH2 0xA74 DUP5 PUSH2 0x1D33 JUMP JUMPDEST SWAP10 PUSH2 0xA81 DUP9 MLOAD SWAP12 DUP13 PUSH2 0x1CF2 JUMP JUMPDEST DUP5 DUP12 MSTORE DUP3 DUP12 ADD SWAP2 DUP4 PUSH1 0x60 DUP1 SWAP8 MUL DUP7 ADD ADD SWAP5 DUP8 DUP7 GT PUSH2 0x377 JUMPI SWAP12 SWAP13 SWAP12 DUP5 ADD SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0xAE9 JUMPI POP POP POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xAC5 SWAP2 DUP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xADC SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 DUP1 DUP1 PUSH2 0x961 JUMP JUMPDEST DUP7 DUP5 SWAP14 SWAP15 SWAP14 DUP10 SUB SLT PUSH2 0x377 JUMPI DUP10 MLOAD SWAP1 DUP8 DUP3 ADD DUP14 DUP2 GT DUP4 DUP3 LT OR PUSH2 0xB4A JUMPI DUP12 MSTORE DUP5 MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x377 JUMPI DUP16 SWAP2 DUP4 MSTORE DUP7 DUP7 ADD MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI DUP3 DUP8 SWAP3 DUP4 DUP12 SWAP6 ADD MSTORE PUSH2 0xB38 DUP14 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST DUP14 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 SWAP13 SWAP12 SWAP13 PUSH2 0xAA0 JUMP JUMPDEST DUP4 PUSH1 0x41 DUP7 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0xB81 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBA2 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBBA SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x377 JUMPI PUSH2 0x278 PUSH2 0xBDB PUSH2 0xC01 SWAP6 PUSH2 0x286 SWAP5 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0xBE6 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x24 CALLDATALOAD DUP9 MSTORE PUSH1 0x80 PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0xCAE JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0xCBF DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP4 PUSH2 0xCEC SWAP3 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP1 PUSH2 0xC97 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0xD1B PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDFC JUMPI JUMPDEST DUP2 PUSH2 0xDE3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH2 0xDF6 PUSH1 0x20 SWAP3 PUSH2 0x1F4D JUMP JUMPDEST POP PUSH2 0xDC0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDD6 JUMP JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x377 JUMPI PUSH2 0xE34 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH1 0x2 PUSH1 0x24 CALLDATALOAD LT ISZERO PUSH2 0x377 JUMPI PUSH2 0xE4B PUSH1 0x20 SWAP3 PUSH2 0x2053 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xE74 DUP2 PUSH2 0x1F15 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xF13 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xEB7 JUMPI JUMPDEST POP POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xEFB JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x286 PUSH2 0xE95 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xEE2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0xEA8 SWAP2 POP PUSH2 0x286 SWAP1 POP PUSH2 0xE95 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x377 JUMPI DUP3 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x0 DUP4 MSTORE DUP5 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x60 DUP2 ADD SWAP3 DUP2 DUP5 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT OR PUSH2 0x8B2 JUMPI POP DUP3 PUSH1 0x20 SWAP5 MSTORE MLOAD SWAP1 KECCAK256 DUP2 MSTORE RETURN JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0x107A PUSH32 0x0 PUSH2 0x22B9 JUMP JUMPDEST SWAP3 PUSH2 0x10A4 PUSH32 0x0 PUSH2 0x23EE JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x8B2 JUMPI POP SWAP2 PUSH2 0x1115 SWAP2 PUSH2 0x286 SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x1108 DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 MLOAD PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP3 DUP4 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x132E JUMPI PUSH0 SWAP5 PUSH2 0x11D9 JUMPI JUMPDEST DUP6 DUP6 PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 DUP1 SWAP4 SWAP5 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1327 JUMPI JUMPDEST PUSH2 0x11F2 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SWAP3 DUP2 DUP5 SLT PUSH2 0x377 JUMPI DUP6 MLOAD SWAP5 PUSH2 0x140 SWAP5 DUP6 DUP8 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP9 DUP5 LT DUP4 DUP6 GT OR PUSH2 0x1314 JUMPI PUSH1 0x80 SGT PUSH2 0x377 JUMPI PUSH2 0x1C0 DUP9 ADD SWAP2 DUP3 GT DUP4 DUP4 LT OR PUSH2 0x8B2 JUMPI POP DUP8 MSTORE PUSH2 0x1240 DUP3 PUSH2 0x1F4D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x124E PUSH1 0x20 DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 PUSH2 0x160 SWAP2 DUP3 DUP9 ADD MSTORE PUSH2 0x1262 DUP9 DUP5 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP4 PUSH2 0x180 SWAP5 DUP6 DUP10 ADD MSTORE PUSH2 0x1277 PUSH1 0x60 DUP6 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP9 ADD MSTORE DUP7 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP8 DUP8 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP8 ADD MSTORE DUP4 DUP3 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0x100 SWAP1 DUP2 DUP4 ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI PUSH2 0x1307 SWAP6 PUSH2 0x12FD SWAP3 PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x12F2 PUSH2 0x120 SWAP9 PUSH2 0x12E6 DUP11 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST PUSH1 0xC0 DUP13 ADD MSTORE DUP7 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x41 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x11E8 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x136A PUSH2 0x1C7C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x3 NOT SWAP3 PUSH1 0x20 DUP5 CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT PUSH2 0x377 JUMPI DUP5 CALLDATASIZE SUB ADD SLT PUSH2 0x377 JUMPI DUP3 DUP2 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x377 JUMPI PUSH2 0x13C2 DUP2 PUSH2 0x1EDD JUMP JUMPDEST PUSH2 0x13EC JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x13E3 PUSH1 0x20 SWAP4 PUSH1 0x24 PUSH1 0x5 SLOAD SWAP2 ADD CALLDATALOAD PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP2 PUSH1 0x24 ADD CALLDATALOAD PUSH1 0x5 SLOAD SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1433 JUMPI DUP2 ISZERO PUSH2 0x1420 JUMPI PUSH1 0x20 SWAP4 POP DIV SWAP1 PUSH2 0x13E6 JUMP JUMPDEST PUSH1 0x12 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 PUSH2 0x1464 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP3 PUSH2 0x14EB JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1513 JUMPI JUMPDEST PUSH2 0x1503 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14E4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F9 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x6 SLOAD DUP1 PUSH2 0x15EA JUMPI POP DUP1 MLOAD SWAP2 PUSH32 0x4F037EE700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP1 PUSH2 0x15B7 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x15E2 JUMPI JUMPDEST DUP2 PUSH2 0x15D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD PUSH2 0x15AC JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x15C4 JUMP JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0x13E6 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x5 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x1694 PUSH2 0x2116 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x6 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE4B PUSH2 0x2181 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x178A JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x179B DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP1 DUP1 DUP4 DUP4 SUB SLT PUSH2 0x377 JUMPI DUP3 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x377 JUMPI DUP4 PUSH2 0x17C7 SWAP2 DUP4 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP5 DUP6 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP5 PUSH2 0x17E2 SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST POP PUSH2 0x1773 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x18AF CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x377 JUMPI PUSH2 0x1A06 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH2 0x1A3D PUSH2 0x1A20 PUSH2 0x1A16 DUP5 PUSH2 0x2053 JUMP JUMPDEST SWAP4 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1F5A JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A36 PUSH1 0x44 CALLDATALOAD DUP7 PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP2 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1A51 JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x11 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0x1A84 PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1B05 DUP5 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x1B92 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1B37 JUMPI JUMPDEST POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1B7A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x1B25 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0xEA8 SWAP1 POP PUSH2 0x1B25 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x377 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1CDE JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1D65 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1D73 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1D9C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1D8E JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E0C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1DFE JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E3F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1E31 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1CDE JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1EBC PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x377 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x1EE7 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1F43 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1F2F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1F24 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1F6E JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x1FBE DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1FCC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1FF5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1FE7 JUMP JUMPDEST SWAP1 PUSH2 0x200E DUP3 PUSH2 0x1D33 JUMP JUMPDEST PUSH2 0x201B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x2049 DUP3 SWAP5 PUSH2 0x1D33 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH0 SWAP1 DUP2 JUMPDEST DUP2 MLOAD DUP4 LT ISZERO PUSH2 0x207F JUMPI PUSH2 0x2077 PUSH1 0x1 SWAP2 PUSH2 0x2070 DUP6 DUP6 PUSH2 0x1F5A JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x2057 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x20A0 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x20AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x20D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x20C9 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2155 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x2290 JUMPI JUMPDEST ISZERO PUSH2 0x21E9 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x21C0 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x230D JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x231F DUP4 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x234D JUMPI JUMPDEST POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2393 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2378 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x234A SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2410 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2425 DUP2 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x244D JUMPI POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2494 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2479 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x253B JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x2530 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2526 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x1EE7 JUMPI DUP1 PUSH2 0x2558 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2588 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x25BC JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x25C6 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB AND ADDMOD 0xD4 0xFC JUMPDEST 0xBC PUSH29 0xCBC38DFB1ADF85E117593D892FF034148DC3F4AAB1E26D9864736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"757:3716:83:-:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;757:3716:83;;;;;;;;;;;;;-1:-1:-1;;;;;757:3716:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;757:3716:83;;3401:45:106;;;:::i;:::-;3393:53;;;;;3467:51;;;:::i;:::-;3456:62;;;;;757:3716:83;;;;;3542:22:106;3528:36;;;;757:3716:83;3591:25:106;;3574:42;;;;;;3644:13;3627:30;;757:3716:83;;4204:80:106;;;;2079:95;;;;;;;;757:3716:83;2079:95:106;;;3644:13;2079:95;;;;4278:4;3627:30;2079:95;;;3627:30;4204:80;;2079:95;757:3716:83;;;;;;;;;;;;;;4194:91:106;;2079:95;3667:48;4278:4;2079:95;3725:27;409:14:68;;;;;757:3716:83;;;;;;;;2265:18:54;757:3716:83;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;-1:-1:-1;757:3716:83;;;;-1:-1:-1;;;;757:3716:83;;;;;;;;;;;;;;;;;;;;2293:22:54;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;1347:46:35;1350:10:83;;1347:46:35;;772:14:32;;;;;750::34;;;;465:4:47;1011:14:83;465:4:47;757:3716:83;;;;;;;;2079:95:106;757:3716:83;;;;;3627:30:106;757:3716:83;;;;;2079:95:106;757:3716:83;;;;;3528:36:106;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;4204:80:106;;;;;;757:3716:83;;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;-1:-1:-1;757:3716:83;;2293:22:54;757:3716:83;;-1:-1:-1;757:3716:83;;;;;-1:-1:-1;757:3716:83;;;;;4204:80:106;;;;;;757:3716:83;;;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;-1:-1:-1;757:3716:83;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;-1:-1:-1;;757:3716:83;;;;-1:-1:-1;;;;;757:3716:83;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;757:3716:83;;;;;;;;4204:80:106;757:3716:83;;-1:-1:-1;;757:3716:83;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;:::o;2914:340:102:-;757:3716:83;;3059:2:102;;3037:24;;;3059:2;;;757:3716:83;1854:2:102;757:3716:83;;1840:16:102;1836:72;;757:3716:83;;;;;2079:95:106;757:3716:83;;;;;;1949:36:102;;3077:27;:::o;757:3716:83:-;;;;;;;;;;1949:36:102;3077:27;:::o;1836:72::-;757:3716:83;;;;1879:18:102;;;;;;;;;;;;757:3716:83;;;;;;;;;;;;;;;;3432:13:106;757:3716:83;;;;;;1854:2:102;757:3716:83;-1:-1:-1;;757:3716:83;;;1879:18:102;;;;3033:215;757:3716:83;-1:-1:-1;;;;;757:3716:83;;;;3432:13:106;757:3716:83;;;;;;;;;;;;;;3033:215:102;757:3716:83;;;;;;;;;;;3033:215:102;757:3716:83;;;;;;;;;;;;;;;;3432:13:106;757:3716:83;;;;;;;;;;;;;;;;;3432:13:106;757:3716:83;1390:66:102;3195:42;:::o;757:3716:83:-;;;;-1:-1:-1;757:3716:83;;;;;4204:80:106;;;;;757:3716:83;;3432:13:106;757:3716:83;;;3432:13:106;757:3716:83;;3432:13:106;757:3716:83;;;;;;;;;;;;;;;;;;;;;3432:13:106;757:3716:83;1390:66:102;3195:42;:::o;757:3716:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;3432:13:106;757:3716:83;;;;;3432:13:106;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;3432:13:106;757:3716:83;;;;;;;;;;;;;;2914:340:102;757:3716:83;;3059:2:102;;3037:24;;;3059:2;;;757:3716:83;1854:2:102;757:3716:83;;1840:16:102;1836:72;;757:3716:83;;;;;2079:95:106;757:3716:83;;;;;;1949:36:102;;3077:27;:::o;3033:215::-;757:3716:83;;;-1:-1:-1;;;;;757:3716:83;;;;;;;;;;;;;;;;;;3033:215:102;757:3716:83;;;;;;;;;;;3033:215:102;757:3716:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;757:3716:83;;;;;;;;;;;;;1390:66:102;;3195:42::o;757:3716:83:-;;;;-1:-1:-1;757:3716:83;;;;;4204:80:106;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;3195:42;:::o;757:3716:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":7327,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_16454":{"entryPoint":7292,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_addresst_uint256":{"entryPoint":7595,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_array_contract_IERC20_dyn_fromMemory":{"entryPoint":8325,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":7499,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":8099,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":8013,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":7785,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn":{"entryPoint":7712,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":7661,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":7225,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":8196,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":7475,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":8066,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":8451,"id":null,"parameterSlots":2,"returnSlots":1},"external_fun_getMinimumInvariantRatio":{"entryPoint":7931,"id":null,"parameterSlots":0,"returnSlots":0},"extract_byte_array_length":{"entryPoint":7957,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":7410,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_22995":{"entryPoint":7362,"id":null,"parameterSlots":1,"returnSlots":0},"fun_computeInvariant":{"entryPoint":8275,"id":33663,"parameterSlots":1,"returnSlots":1},"fun_domainSeparatorV4":{"entryPoint":8577,"id":41103,"parameterSlots":0,"returnSlots":1},"fun_ensureOnlyVault":{"entryPoint":8470,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_throwError":{"entryPoint":9542,"id":40979,"parameterSlots":2,"returnSlots":0},"fun_toStringWithFallback":{"entryPoint":8889,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_toStringWithFallback_16464":{"entryPoint":9198,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_tryRecover":{"entryPoint":9388,"id":40894,"parameterSlots":4,"returnSlots":3},"fun_useNonce":{"entryPoint":null,"id":40024,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":8026,"id":null,"parameterSlots":2,"returnSlots":1},"validator_assert_enum_TokenType":{"entryPoint":7901,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"5129":[{"length":32,"start":1683},{"length":32,"start":1834},{"length":32,"start":2346},{"length":32,"start":3175},{"length":32,"start":4498}],"5256":[{"length":32,"start":4080}],"27649":[{"length":32,"start":785},{"length":32,"start":1364},{"length":32,"start":2018},{"length":32,"start":3475},{"length":32,"start":3972},{"length":32,"start":5300},{"length":32,"start":5501},{"length":32,"start":5955},{"length":32,"start":6412},{"length":32,"start":6556},{"length":32,"start":8493}],"41001":[{"length":32,"start":8647}],"41003":[{"length":32,"start":8851}],"41005":[{"length":32,"start":8600}],"41007":[{"length":32,"start":8726}],"41009":[{"length":32,"start":8764}],"41012":[{"length":32,"start":4182}],"41015":[{"length":32,"start":4224}]},"linkReferences":{},"object":"6080604090808252600480361015610015575f80fd5b5f9160e05f35811c91826301ffc9a714611bd25750816306fdde0314611ae2578163095ea7b314611a6457816316a0b3e0146119d557816318160ddd1461194257816323b872dd1461189a57816323de665114611868578163273c1adf1461183d57816330adf81f14611803578163313ce567146117e8578163360c340f146116ea5781633644e515146116ce5781634cfe8d1a146116b65781635687f2b814611657578163627cdcb91461162e578163641579a614611616578163654cf15d146115f4578163679aefce1461151a57816370a082311461144657816372c981861461137c5781637ecebe001461133857816381fa807c1461113557816384b0196e1461103e578163851c1bb314610fa85781638d928af814610f5857816395d89b4114610e52578163984de9e814610e04578163a9059cbb14610cfb578163aa6ca80814610c0e578163ab68e28c14610b66578163abb1dc44146108cf578163b0e2e403146107b7578163b156aa0a146106d0578163b677fa56146106cb578163ce20ece7146106cb578163d335b0cf14610638578163d505accf1461038e57508063dd62ed3e146102955763e4c43663146101d0575f80fd5b3461028d5760a060031936011261028d576101e9611c7c565b5067ffffffffffffffff6024358181116102915761020a9036908401611d4b565b9260643582811161028d576102229036908501611d4b565b5060843591821161028a5750926102786102456102869361026396369101611e69565b916102508551612004565b8151968796608088526080880190611ded565b91604435602088015286830390870152611ded565b908382036060850152611c39565b0390f35b80fd5b5080fd5b8380fd5b50913461028d578060031936011261028d5760206102b1611c7c565b60646102bb611c9f565b9573ffffffffffffffffffffffffffffffffffffffff8080988751998a9687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a575b6020925051908152f35b90506020823d60201161037b575b8161036560209383611cf2565b81010312610377576020915190610340565b5f80fd5b3d9150610358565b9051903d90823e3d90fd5b91939050346106345781600319360112610634576103aa611c7c565b916103b3611c9f565b90604435936064359160843560ff8116810361063057834211610605576104018373ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b91865160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835273ffffffffffffffffffffffffffffffffffffffff9687871695868b850152888a1660608501528b608085015260a084015260c083015260c08252810181811067ffffffffffffffff8211176105f257926104de926104d59288958b52519020610494612181565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a43592206124ac565b90929192612546565b168181036105c5575050858495969761055060209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156105bc5750610586575080f35b6020813d6020116105b4575b8161059f60209383611cf2565b8101031261028d576105b090611f4d565b5080f35b3d9150610592565b513d84823e3d90fd5b7f4b800e460000000000000000000000000000000000000000000000000000000088528852602452604486fd5b60418c634e487b7160e01b5f525260245ffd5b602488858b7f6279130200000000000000000000000000000000000000000000000000000000835252fd5b8780fd5b8280fd5b5050913461028d578160031936011261028d578051927fb45090f9000000000000000000000000000000000000000000000000000000008452309084015260208360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a576020925051908152f35b611efb565b5050913461028d578160031936011261028d578051927f535cfd8a0000000000000000000000000000000000000000000000000000000084523090840152818360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561038357809261076f575b81516020808252819061028690820186611ded565b9091503d8082853e6107818185611cf2565b83019260208185031261028d5780519167ffffffffffffffff831161028a5750926107b0916102869401611fa3565b905f61075a565b505082346103775760206003193601126103775773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691815192813560208501526020845261081a84611cc2565b803b15610377576108895f9491859285519687809481937fc80882470000000000000000000000000000000000000000000000000000000083527f546573744576656e740000000000000000000000000000000000000000000000898401528960248401526044830190611c39565b03925af180156108c55761089b578380f35b9091925067ffffffffffffffff83116108b2575052005b604190634e487b7160e01b5f525260245ffd5b82513d5f823e3d90fd5b828534610377575f6003193601126103775780517f67e0e076000000000000000000000000000000000000000000000000000000008152308382015273ffffffffffffffffffffffffffffffffffffffff916024905f8383817f000000000000000000000000000000000000000000000000000000000000000088165afa938415610b5c575f955f945f945f97610a08575b5050509061098095949392918151968796608088526080880190611e20565b6020878203818901528080875193848152019601925f905b8382106109c457898803868b015289806102868b6109b68c8c611ded565b908382036060850152611ded565b91849899506060869798600193959783975180516109e181611edd565b83528685820151168584015201511515898201520198019201899897969594929391610998565b94509450945094503d805f853e610a1f8185611cf2565b8301926080818503126103775780519367ffffffffffffffff948581116103775781610a4c918401612085565b936020808401518781116103775784019083601f8301121561037757815192610a7484611d33565b99610a8188519b8c611cf2565b848b52828b019183606080970286010194878611610377579b9c9b8401925b858410610ae95750505050505050828201518581116103775781610ac5918401611fa3565b94606083015190811161037757610adc9201611fa3565b9194929193868080610961565b86849d9e9d890312610377578951908782018d811183821017610b4a578b528451906002821015610377578f91835286860151918216820361037757828792838b950152610b388d8801611f4d565b8d8201528152019301929c9b9c610aa0565b83604186634e487b7160e01b5f52525ffd5b50513d5f823e3d90fd5b8285346103775760a060031936011261037757610b81611c7c565b5067ffffffffffffffff60443581811161037757610ba29036908501611d4b565b9160643582811161037757610bba9036908601611d4b565b5060843591821161037757610278610bdb610c019561028694369101611e69565b91610be68551612004565b81519687966024358852608060208901526080880190611ded565b9186830390870152611ded565b828534610377575f600319360112610377578051917fca4f280300000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f91610cae575b610286925051918291602083526020830190611e20565b90503d805f843e610cbf8184611cf2565b8201916020818403126103775780519267ffffffffffffffff84116103775761028693610cec9201612085565b90610c97565b513d5f823e3d90fd5b8285346103775780600319360112610377576020610d7992610d1b611c7c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca575b6020905160018152f35b6020823d602011610dfc575b81610de360209383611cf2565b8101031261037757610df6602092611f4d565b50610dc0565b3d9150610dd6565b84833461037757816003193601126103775780359067ffffffffffffffff821161037757610e3491369101611d4b565b906002602435101561037757610e4b602092612053565b9051908152f35b848334610377575f60031936011261037757815191825f8354610e7481611f15565b90818452602095600191876001821691825f14610f13575050600114610eb7575b5050506102869291610ea8910385611cf2565b51928284938452830190611c39565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610efb5750505082010181610ea8610286610e95565b8054848a018601528895508794909301928101610ee2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610ea891506102869050610e95565b8434610377575f600319360112610377576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8483346103775760206003193601126103775780357fffffffff00000000000000000000000000000000000000000000000000000000811680910361037757825160208101917f000000000000000000000000000000000000000000000000000000000000000083528482015260248152606081019281841067ffffffffffffffff8511176108b2575082602094525190208152f35b92505034610377575f6003193601126103775761107a7f00000000000000000000000000000000000000000000000000000000000000006122b9565b926110a47f00000000000000000000000000000000000000000000000000000000000000006123ee565b815192602084019084821067ffffffffffffffff8311176108b257509161111591610286949382525f845261110882519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611c39565b9186830390870152611c39565b904660608501523060808501525f60a085015283820360c0850152611ded565b92505034610377575f6003193601126103775782517ff29486a100000000000000000000000000000000000000000000000000000000815230828201526101a092838260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa93841561132e575f946111d9575b858560608282015191015182519182526020820152f35b909180939450813d8311611327575b6111f28183611cf2565b8101039281841261037757855194610140948587019167ffffffffffffffff918884108385111761131457608013610377576101c08801918211838310176108b25750875261124082611f4d565b815261124e60208301611f4d565b906101609182880152611262888401611f4d565b93610180948589015261127760608501611f4d565b9088015286526080820151602087015260a08201518787015260c082015160608701528382015164ffffffffff8116810361037757608087015261010090818301519063ffffffff8216820361037757611307956112fd9260a08a01526112f2610120986112e68a8801611f4d565b60c08c01528601611f4d565b908901528301611f4d565b9086015201611f4d565b908201525f8080806111c2565b604182634e487b7160e01b5f525260245ffd5b503d6111e8565b85513d5f823e3d90fd5b84346103775760206003193601126103775760209073ffffffffffffffffffffffffffffffffffffffff61136a611c7c565b165f5260028252805f20549051908152f35b84833461037757600319926020843601126103775781359367ffffffffffffffff851161037757843603011261037757828101356002811015610377576113c281611edd565b6113ec5750670de0b6b3a76400006113e36020936024600554910135612103565b04905b51908152f35b916024013560055490670de0b6b3a764000090818102918183041490151715611433578115611420576020935004906113e6565b601284634e487b7160e01b5f525260245ffd5b601184634e487b7160e01b5f525260245ffd5b84833461037757602091826003193601126103775782611464611c7c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610b5c575f926114eb575b5051908152f35b9091508281813d8311611513575b6115038183611cf2565b81010312610377575190836114e4565b503d6114f9565b828534610377575f60031936011261037757600654806115ea57508051917f4f037ee7000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610b5c575f906115b7575b602092509051908152f35b506020823d6020116115e2575b816115d160209383611cf2565b8101031261037757602091516115ac565b3d91506115c4565b60209250906113e6565b8434610377575f6003193601126103775760209051670de0b6b3a76400008152f35b82346103775760206003193601126103775735600555005b34610377575f60031936011261037757335f908152600260205260409020805460018101909155005b84346103775760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561168936611dab565b939194611694612116565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b82346103775760206003193601126103775735600655005b8434610377575f60031936011261037757602090610e4b612181565b828534610377575f600319360112610377578051917f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161178a575b610286925051918291602083526020830190611ded565b90503d805f843e61179b8184611cf2565b82019080838303126103775782519267ffffffffffffffff9384811161037757836117c7918301611fa3565b92602082015194851161037757610286946117e29201611fa3565b50611773565b8434610377575f600319360112610377576020905160128152f35b8434610377575f60031936011261037757602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b8434610377575f6003193601126103775760209051701d6329f1c35ca4bfabb9f56100000000008152f35b84346103775760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61168936611dab565b8285346103775760205f60846118af36611dab565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca576020905160018152f35b828534610377575f600319360112610377578051917fe4dc2aa4000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161034a576020925051908152f35b82853461037757606060031936011261037757813567ffffffffffffffff811161037757611a069036908401611d4b565b90611a3d611a20611a1684612053565b9360243590611f5a565b51670de0b6b3a7640000611a3660443586612103565b0490611f82565b918203918211611a51576020925051908152f35b601183634e487b7160e01b5f525260245ffd5b8285346103775780600319360112610377576020610d7992611a84611c7c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b8434610377575f6003193601126103775780516003549091825f611b0584611f15565b808352602094600190866001821691825f14611b92575050600114611b37575b50506102869291610ea8910385611cf2565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611b7a5750505082010181610ea8611b25565b8054848a018601528895508794909301928101611b64565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150610ea89050611b25565b83346103775760206003193601126103775735907fffffffff000000000000000000000000000000000000000000000000000000008216809203610377577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6040810190811067ffffffffffffffff821117611cde57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611cde57604052565b67ffffffffffffffff8111611cde5760051b60200190565b9080601f83011215610377576020908235611d6581611d33565b93611d736040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611d9c575050505090565b81358152908301908301611d8e565b60031960609101126103775773ffffffffffffffffffffffffffffffffffffffff90600435828116810361037757916024359081168103610377579060443590565b9081518082526020808093019301915f5b828110611e0c575050505090565b835185529381019392810192600101611dfe565b9081518082526020808093019301915f5b828110611e3f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611e31565b81601f820112156103775780359067ffffffffffffffff8211611cde5760405192611ebc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185611cf2565b8284526020838301011161037757815f926020809301838601378301015290565b60021115611ee757565b634e487b7160e01b5f52602160045260245ffd5b34610377575f6003193601126103775760206040515f8152f35b90600182811c92168015611f43575b6020831014611f2f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611f24565b5190811515820361037757565b8051821015611f6e5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b91908201809211611f8f57565b634e487b7160e01b5f52601160045260245ffd5b9080601f8301121561037757815190602091611fbe81611d33565b93611fcc6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611ff5575050505090565b81518152908301908301611fe7565b9061200e82611d33565b61201b6040519182611cf2565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120498294611d33565b0190602036910137565b5f90815b815183101561207f576120776001916120708585611f5a565b5190611f82565b920191612057565b91505090565b9080601f83011215610377578151906020916120a081611d33565b936120ae6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b8282106120d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036103775781529083019083016120c9565b81810292918115918404141715611f8f57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361215557565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612290575b156121e9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611cde5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146121c0565b60ff811461230d5760ff811690601f82116122e557604051916122db83611cc2565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f549161231f83611f15565b808352926020906001908181169081156123ab575060011461234d575b505061234a92500382611cf2565b90565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612393575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612378565b90506020935061234a9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f8061233c565b60ff81146124105760ff811690601f82116122e557604051916122db83611cc2565b506040515f8160019160015461242581611f15565b80845293602091600181169081156123ab575060011461244d57505061234a92500382611cf2565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612494575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612479565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161253b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612530575f5173ffffffffffffffffffffffffffffffffffffffff81161561252657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b6004811015611ee75780612558575050565b60018103612588577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b600281036125bc57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146125c65750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffdfea2646970667358221220031608d4fc5bbc7ccbc38dfb1adf85e117593d892ff034148dc3f4aab1e26d9864736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP2 DUP3 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BD2 JUMPI POP DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1A64 JUMPI DUP2 PUSH4 0x16A0B3E0 EQ PUSH2 0x19D5 JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x1942 JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x189A JUMPI DUP2 PUSH4 0x23DE6651 EQ PUSH2 0x1868 JUMPI DUP2 PUSH4 0x273C1ADF EQ PUSH2 0x183D JUMPI DUP2 PUSH4 0x30ADF81F EQ PUSH2 0x1803 JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x17E8 JUMPI DUP2 PUSH4 0x360C340F EQ PUSH2 0x16EA JUMPI DUP2 PUSH4 0x3644E515 EQ PUSH2 0x16CE JUMPI DUP2 PUSH4 0x4CFE8D1A EQ PUSH2 0x16B6 JUMPI DUP2 PUSH4 0x5687F2B8 EQ PUSH2 0x1657 JUMPI DUP2 PUSH4 0x627CDCB9 EQ PUSH2 0x162E JUMPI DUP2 PUSH4 0x641579A6 EQ PUSH2 0x1616 JUMPI DUP2 PUSH4 0x654CF15D EQ PUSH2 0x15F4 JUMPI DUP2 PUSH4 0x679AEFCE EQ PUSH2 0x151A JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x1446 JUMPI DUP2 PUSH4 0x72C98186 EQ PUSH2 0x137C JUMPI DUP2 PUSH4 0x7ECEBE00 EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x81FA807C EQ PUSH2 0x1135 JUMPI DUP2 PUSH4 0x84B0196E EQ PUSH2 0x103E JUMPI DUP2 PUSH4 0x851C1BB3 EQ PUSH2 0xFA8 JUMPI DUP2 PUSH4 0x8D928AF8 EQ PUSH2 0xF58 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xE52 JUMPI DUP2 PUSH4 0x984DE9E8 EQ PUSH2 0xE04 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCFB JUMPI DUP2 PUSH4 0xAA6CA808 EQ PUSH2 0xC0E JUMPI DUP2 PUSH4 0xAB68E28C EQ PUSH2 0xB66 JUMPI DUP2 PUSH4 0xABB1DC44 EQ PUSH2 0x8CF JUMPI DUP2 PUSH4 0xB0E2E403 EQ PUSH2 0x7B7 JUMPI DUP2 PUSH4 0xB156AA0A EQ PUSH2 0x6D0 JUMPI DUP2 PUSH4 0xB677FA56 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xCE20ECE7 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xD335B0CF EQ PUSH2 0x638 JUMPI DUP2 PUSH4 0xD505ACCF EQ PUSH2 0x38E JUMPI POP DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x295 JUMPI PUSH4 0xE4C43663 EQ PUSH2 0x1D0 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x28D JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH2 0x1E9 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x291 JUMPI PUSH2 0x20A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x28D JUMPI PUSH2 0x222 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x278 PUSH2 0x245 PUSH2 0x286 SWAP4 PUSH2 0x263 SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0x250 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP9 ADD MSTORE DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH1 0x20 PUSH2 0x2B1 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x2BB PUSH2 0x1C9F JUMP JUMPDEST SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP9 DUP8 MLOAD SWAP10 DUP11 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x37B JUMPI JUMPDEST DUP2 PUSH2 0x365 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x340 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x358 JUMP JUMPDEST SWAP1 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 POP CALLVALUE PUSH2 0x634 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x634 JUMPI PUSH2 0x3AA PUSH2 0x1C7C JUMP JUMPDEST SWAP2 PUSH2 0x3B3 PUSH2 0x1C9F JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x630 JUMPI DUP4 TIMESTAMP GT PUSH2 0x605 JUMPI PUSH2 0x401 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP7 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP8 AND SWAP6 DUP7 DUP12 DUP6 ADD MSTORE DUP9 DUP11 AND PUSH1 0x60 DUP6 ADD MSTORE DUP12 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 MSTORE DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x5F2 JUMPI SWAP3 PUSH2 0x4DE SWAP3 PUSH2 0x4D5 SWAP3 DUP9 SWAP6 DUP12 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0x494 PUSH2 0x2181 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x24AC JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2546 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x5C5 JUMPI POP POP DUP6 DUP5 SWAP6 SWAP7 SWAP8 PUSH2 0x550 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x5BC JUMPI POP PUSH2 0x586 JUMPI POP DUP1 RETURN JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x5B4 JUMPI JUMPDEST DUP2 PUSH2 0x59F PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x28D JUMPI PUSH2 0x5B0 SWAP1 PUSH2 0x1F4D JUMP JUMPDEST POP DUP1 RETURN JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x592 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 DUP9 MSTORE DUP9 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP7 REVERT JUMPDEST PUSH1 0x41 DUP13 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x24 DUP9 DUP6 DUP12 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE PUSH1 0x20 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1EFB JUMP JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE DUP2 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI DUP1 SWAP3 PUSH2 0x76F JUMPI JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 ADD DUP7 PUSH2 0x1DED JUMP JUMPDEST SWAP1 SWAP2 POP RETURNDATASIZE DUP1 DUP3 DUP6 RETURNDATACOPY PUSH2 0x781 DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x20 DUP2 DUP6 SUB SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x7B0 SWAP2 PUSH2 0x286 SWAP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x75A JUMP JUMPDEST POP POP DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 DUP2 MLOAD SWAP3 DUP2 CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP5 MSTORE PUSH2 0x81A DUP5 PUSH2 0x1CC2 JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x377 JUMPI PUSH2 0x889 PUSH0 SWAP5 SWAP2 DUP6 SWAP3 DUP6 MLOAD SWAP7 DUP8 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xC808824700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH32 0x546573744576656E740000000000000000000000000000000000000000000000 DUP10 DUP5 ADD MSTORE DUP10 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x8C5 JUMPI PUSH2 0x89B JUMPI DUP4 DUP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x8B2 JUMPI POP MSTORE STOP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 SWAP1 PUSH0 DUP4 DUP4 DUP2 PUSH32 0x0 DUP9 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP6 PUSH0 SWAP5 PUSH0 SWAP5 PUSH0 SWAP8 PUSH2 0xA08 JUMPI JUMPDEST POP POP POP SWAP1 PUSH2 0x980 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x9C4 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x286 DUP12 PUSH2 0x9B6 DUP13 DUP13 PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0x9E1 DUP2 PUSH2 0x1EDD JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0x998 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xA1F DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xA4C SWAP2 DUP5 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP5 ADD MLOAD DUP8 DUP2 GT PUSH2 0x377 JUMPI DUP5 ADD SWAP1 DUP4 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP3 PUSH2 0xA74 DUP5 PUSH2 0x1D33 JUMP JUMPDEST SWAP10 PUSH2 0xA81 DUP9 MLOAD SWAP12 DUP13 PUSH2 0x1CF2 JUMP JUMPDEST DUP5 DUP12 MSTORE DUP3 DUP12 ADD SWAP2 DUP4 PUSH1 0x60 DUP1 SWAP8 MUL DUP7 ADD ADD SWAP5 DUP8 DUP7 GT PUSH2 0x377 JUMPI SWAP12 SWAP13 SWAP12 DUP5 ADD SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0xAE9 JUMPI POP POP POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xAC5 SWAP2 DUP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xADC SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 DUP1 DUP1 PUSH2 0x961 JUMP JUMPDEST DUP7 DUP5 SWAP14 SWAP15 SWAP14 DUP10 SUB SLT PUSH2 0x377 JUMPI DUP10 MLOAD SWAP1 DUP8 DUP3 ADD DUP14 DUP2 GT DUP4 DUP3 LT OR PUSH2 0xB4A JUMPI DUP12 MSTORE DUP5 MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x377 JUMPI DUP16 SWAP2 DUP4 MSTORE DUP7 DUP7 ADD MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI DUP3 DUP8 SWAP3 DUP4 DUP12 SWAP6 ADD MSTORE PUSH2 0xB38 DUP14 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST DUP14 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 SWAP13 SWAP12 SWAP13 PUSH2 0xAA0 JUMP JUMPDEST DUP4 PUSH1 0x41 DUP7 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0xB81 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBA2 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBBA SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x377 JUMPI PUSH2 0x278 PUSH2 0xBDB PUSH2 0xC01 SWAP6 PUSH2 0x286 SWAP5 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0xBE6 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x24 CALLDATALOAD DUP9 MSTORE PUSH1 0x80 PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0xCAE JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0xCBF DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP4 PUSH2 0xCEC SWAP3 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP1 PUSH2 0xC97 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0xD1B PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDFC JUMPI JUMPDEST DUP2 PUSH2 0xDE3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH2 0xDF6 PUSH1 0x20 SWAP3 PUSH2 0x1F4D JUMP JUMPDEST POP PUSH2 0xDC0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDD6 JUMP JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x377 JUMPI PUSH2 0xE34 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH1 0x2 PUSH1 0x24 CALLDATALOAD LT ISZERO PUSH2 0x377 JUMPI PUSH2 0xE4B PUSH1 0x20 SWAP3 PUSH2 0x2053 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xE74 DUP2 PUSH2 0x1F15 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xF13 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xEB7 JUMPI JUMPDEST POP POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xEFB JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x286 PUSH2 0xE95 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xEE2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0xEA8 SWAP2 POP PUSH2 0x286 SWAP1 POP PUSH2 0xE95 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x377 JUMPI DUP3 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x0 DUP4 MSTORE DUP5 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x60 DUP2 ADD SWAP3 DUP2 DUP5 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT OR PUSH2 0x8B2 JUMPI POP DUP3 PUSH1 0x20 SWAP5 MSTORE MLOAD SWAP1 KECCAK256 DUP2 MSTORE RETURN JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0x107A PUSH32 0x0 PUSH2 0x22B9 JUMP JUMPDEST SWAP3 PUSH2 0x10A4 PUSH32 0x0 PUSH2 0x23EE JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x8B2 JUMPI POP SWAP2 PUSH2 0x1115 SWAP2 PUSH2 0x286 SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x1108 DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 MLOAD PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP3 DUP4 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x132E JUMPI PUSH0 SWAP5 PUSH2 0x11D9 JUMPI JUMPDEST DUP6 DUP6 PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 DUP1 SWAP4 SWAP5 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1327 JUMPI JUMPDEST PUSH2 0x11F2 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SWAP3 DUP2 DUP5 SLT PUSH2 0x377 JUMPI DUP6 MLOAD SWAP5 PUSH2 0x140 SWAP5 DUP6 DUP8 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP9 DUP5 LT DUP4 DUP6 GT OR PUSH2 0x1314 JUMPI PUSH1 0x80 SGT PUSH2 0x377 JUMPI PUSH2 0x1C0 DUP9 ADD SWAP2 DUP3 GT DUP4 DUP4 LT OR PUSH2 0x8B2 JUMPI POP DUP8 MSTORE PUSH2 0x1240 DUP3 PUSH2 0x1F4D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x124E PUSH1 0x20 DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 PUSH2 0x160 SWAP2 DUP3 DUP9 ADD MSTORE PUSH2 0x1262 DUP9 DUP5 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP4 PUSH2 0x180 SWAP5 DUP6 DUP10 ADD MSTORE PUSH2 0x1277 PUSH1 0x60 DUP6 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP9 ADD MSTORE DUP7 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP8 DUP8 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP8 ADD MSTORE DUP4 DUP3 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0x100 SWAP1 DUP2 DUP4 ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI PUSH2 0x1307 SWAP6 PUSH2 0x12FD SWAP3 PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x12F2 PUSH2 0x120 SWAP9 PUSH2 0x12E6 DUP11 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST PUSH1 0xC0 DUP13 ADD MSTORE DUP7 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x41 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x11E8 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x136A PUSH2 0x1C7C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x3 NOT SWAP3 PUSH1 0x20 DUP5 CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT PUSH2 0x377 JUMPI DUP5 CALLDATASIZE SUB ADD SLT PUSH2 0x377 JUMPI DUP3 DUP2 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x377 JUMPI PUSH2 0x13C2 DUP2 PUSH2 0x1EDD JUMP JUMPDEST PUSH2 0x13EC JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x13E3 PUSH1 0x20 SWAP4 PUSH1 0x24 PUSH1 0x5 SLOAD SWAP2 ADD CALLDATALOAD PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP2 PUSH1 0x24 ADD CALLDATALOAD PUSH1 0x5 SLOAD SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1433 JUMPI DUP2 ISZERO PUSH2 0x1420 JUMPI PUSH1 0x20 SWAP4 POP DIV SWAP1 PUSH2 0x13E6 JUMP JUMPDEST PUSH1 0x12 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 PUSH2 0x1464 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP3 PUSH2 0x14EB JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1513 JUMPI JUMPDEST PUSH2 0x1503 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14E4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F9 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x6 SLOAD DUP1 PUSH2 0x15EA JUMPI POP DUP1 MLOAD SWAP2 PUSH32 0x4F037EE700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP1 PUSH2 0x15B7 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x15E2 JUMPI JUMPDEST DUP2 PUSH2 0x15D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD PUSH2 0x15AC JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x15C4 JUMP JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0x13E6 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x5 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x1694 PUSH2 0x2116 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x6 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE4B PUSH2 0x2181 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x178A JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x179B DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP1 DUP1 DUP4 DUP4 SUB SLT PUSH2 0x377 JUMPI DUP3 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x377 JUMPI DUP4 PUSH2 0x17C7 SWAP2 DUP4 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP5 DUP6 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP5 PUSH2 0x17E2 SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST POP PUSH2 0x1773 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x18AF CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x377 JUMPI PUSH2 0x1A06 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH2 0x1A3D PUSH2 0x1A20 PUSH2 0x1A16 DUP5 PUSH2 0x2053 JUMP JUMPDEST SWAP4 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1F5A JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A36 PUSH1 0x44 CALLDATALOAD DUP7 PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP2 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1A51 JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x11 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0x1A84 PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1B05 DUP5 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x1B92 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1B37 JUMPI JUMPDEST POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1B7A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x1B25 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0xEA8 SWAP1 POP PUSH2 0x1B25 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x377 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1CDE JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1D65 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1D73 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1D9C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1D8E JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E0C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1DFE JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E3F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1E31 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1CDE JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1EBC PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x377 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x1EE7 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1F43 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1F2F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1F24 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1F6E JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x1FBE DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1FCC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1FF5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1FE7 JUMP JUMPDEST SWAP1 PUSH2 0x200E DUP3 PUSH2 0x1D33 JUMP JUMPDEST PUSH2 0x201B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x2049 DUP3 SWAP5 PUSH2 0x1D33 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH0 SWAP1 DUP2 JUMPDEST DUP2 MLOAD DUP4 LT ISZERO PUSH2 0x207F JUMPI PUSH2 0x2077 PUSH1 0x1 SWAP2 PUSH2 0x2070 DUP6 DUP6 PUSH2 0x1F5A JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x2057 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x20A0 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x20AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x20D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x20C9 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2155 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x2290 JUMPI JUMPDEST ISZERO PUSH2 0x21E9 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x21C0 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x230D JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x231F DUP4 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x234D JUMPI JUMPDEST POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2393 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2378 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x234A SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2410 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2425 DUP2 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x244D JUMPI POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2494 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2479 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x253B JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x2530 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2526 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x1EE7 JUMPI DUP1 PUSH2 0x2558 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2588 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x25BC JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x25C6 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB AND ADDMOD 0xD4 0xFC JUMPDEST 0xBC PUSH29 0xCBC38DFB1ADF85E117593D892FF034148DC3F4AAB1E26D9864736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER ","sourceMap":"757:3716:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2839:33:54;757:3716:83;2839:33:54;;;4124:49;757:3716:83;4124:49:54;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1615:50:34;757:3716:83;1615:50:34;;;757:3716:83;;;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;:::i;:::-;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2883:42;757:3716;;2883:42;:::i;:::-;757:3716;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;3545:47:54;;;;;757:3716:83;3545:47:54;;3570:4;3545:47;;;757:3716:83;;;;;;;;;;;3545:6:54;757:3716:83;3545:47:54;;;;;;;;;;757:3716:83;;;;;;;;;3545:47:54;;;757:3716:83;3545:47:54;;757:3716:83;3545:47:54;;;;;;757:3716:83;3545:47:54;;;:::i;:::-;;;757:3716:83;;;;;;;3545:47:54;;;757:3716:83;;;;3545:47:54;;;-1:-1:-1;3545:47:54;;;757:3716:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;5510:15:54;;:26;5506:97;;5696:16;;757:3716:83;;-1:-1:-1;757:3716:83;1121:7:101;757:3716:83;;;-1:-1:-1;757:3716:83;;;;;;;;;759:395:101;;5696:16:54;757:3716:83;;;;5644:79:54;;757:3716:83;1443:95:54;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5644:79:54;;757:3716:83;;;;;;;;;;;;7021:8:105;757:3716:83;6967:25:105;757:3716:83;;;;;;5634:90:54;;5053:20:106;;:::i;:::-;3515:233:107;;;;;;;;;;;;;;;757:3716:83;;;3515:233:107;757:3716:83;;3515:233:107;;6967:25:105;:::i;:::-;7021:8;;;;;:::i;:::-;757:3716:83;5848:15:54;;;5844:88;;757:3716:83;;;;;;;5942:38:54;757:3716:83;;;5942:38:54;;;;;;;757:3716:83;5942:38:54;;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;5942:38:54;;:6;;757:3716:83;5942:38:54;;;;;;;;;;757:3716:83;;;5942:38:54;757:3716:83;5942:38:54;;757:3716:83;5942:38:54;;;;;;757:3716:83;5942:38:54;;;:::i;:::-;;;757:3716:83;;;;;;;:::i;:::-;;;;5942:38:54;;;-1:-1:-1;5942:38:54;;;757:3716:83;;;;;;;;5844:88:54;5886:35;;;757:3716:83;;;;;5886:35:54;;757:3716:83;;;-1:-1:-1;;;757:3716:83;;;;;;5506:97:54;757:3716:83;5559:33:54;;;;;;757:3716:83;5559:33:54;757:3716:83;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;1615:50:34;757:3716:83;1615:50:34;;1658:4;1615:50;;;757:3716:83;1615:50:34;:6;757:3716:83;1615:6:34;757:3716:83;1615:6:34;757:3716:83;1615:50:34;;;;;;;;;;;757:3716:83;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;1441:44:34;757:3716:83;1441:44:34;;1479:4;1441:44;;;757:3716:83;1441:6:34;;757:3716:83;1441:6:34;757:3716:83;1441:6:34;757:3716:83;1441:44:34;;;;;;;;;;;757:3716:83;;;;;;;;;;;;;;;:::i;1441:44:34:-;;;;;;;;;;;;;:::i;:::-;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1441:44:34;;;;757:3716:83;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;3398:6;757:3716;;;;;;;;3437:21;;757:3716;;3437:21;;;;;:::i;:::-;3398:61;;;;;757:3716;;;;;;;;3398:61;;;;;;757:3716;3398:61;;757:3716;3398:61;;;757:3716;;;;;;;;;;;:::i;:::-;3398:61;;;;;;;;;;757:3716;;;3398:61;757:3716;;;;;;;;;-1:-1:-1;757:3716:83;;;;;-1:-1:-1;;;757:3716:83;;;;;;3398:61;757:3716;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;1247:38:34;;1279:4;1247:38;;;757:3716:83;;;;;;;;;1247:6:34;757:3716:83;;1247:38:34;;;;;;;757:3716:83;;;;;;;1247:38:34;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:38:34;;;;;;;;;;;757:3716:83;1247:38:34;;;;;;:::i;:::-;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1247:38:34;;;;;;;;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;757:3716:83;;;;;1247:38:34;757:3716:83;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;:::i;:::-;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;3274:35;757:3716;;3274:35;:::i;:::-;757:3716;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;892:35:34;757:3716:83;892:35:34;;921:4;892:35;;;757:3716:83;;892:6:34;757:3716:83;892:6:34;757:3716:83;892:6:34;757:3716:83;892:35:34;;;;;;;757:3716:83;892:35:34;;;757:3716:83;;;;;;;;;;;;;;;;:::i;892:35:34:-;;;;;757:3716:83;892:35:34;;;;;;:::i;:::-;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;892:35:34;;;;757:3716:83;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;3345:39:54;757:3716:83;;;:::i;:::-;;;;3345:39:54;;3361:10;3345:39;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:39:54;;:6;757:3716:83;;3345:6:54;757:3716:83;3345:39:54;;;;;;;;757:3716:83;;;;;;;;3345:39:54;757:3716:83;3345:39:54;;757:3716:83;3345:39:54;;;;;;757:3716:83;3345:39:54;;;:::i;:::-;;;757:3716:83;;;;;;;;:::i;:::-;3345:39:54;;;;;;-1:-1:-1;3345:39:54;;757:3716:83;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;2951:6:54;757:3716:83;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;;;;2303:50:35;;2320:22;;757:3716:83;;;;;;2303:50:35;;;757:3716:83;;;;;;;;;;;;;;;;;;;2293:61:35;;757:3716:83;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;6099:41:106;:5;:41;:::i;:::-;6554:8;:47;:8;:47;:::i;:::-;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:106;;757:3716:83;;;;5625:4:106;757:3716:83;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;1911:35:34;;1940:4;1911:35;;;757:3716:83;1911:35:34;:6;;;757:3716:83;1911:6:34;757:3716:83;1911:6:34;757:3716:83;1911:35:34;;;;;;;757:3716:83;1911:35:34;;;757:3716:83;1986:37:34;;2063:38;1986:37;;;757:3716:83;2063:38:34;;757:3716:83;;;;;;;;;;;1911:35:34;;;;;;;;;;;;;;;;;;:::i;:::-;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1911:35:34;;;;;;757:3716:83;;;-1:-1:-1;;;757:3716:83;;;;;;1911:35:34;;;;;;757:3716:83;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;:::i;:::-;;;;624:7:101;757:3716:83;;;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2368:32;;757:3716;465:4:47;838:5;757:3716:83;;2419:26;2454:11;757:3716;2419:26;;757:3716;838:5:47;:::i;:::-;757:3716:83;2368:164;;757:3716;;;;;2368:164;2485:26;;;757:3716;2520:11;757:3716;465:4:47;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;2368:164;;;757:3716;;;-1:-1:-1;;;757:3716:83;;;2485:26;757:3716;;;;;-1:-1:-1;;;757:3716:83;;;2485:26;757:3716;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;:::i;:::-;;;;;;;3082:40:54;;;;;757:3716:83;3082:40:54;;3107:4;3082:40;;;757:3716:83;;;;;;3082:6:54;757:3716:83;3082:40:54;;;;;;;757:3716:83;3082:40:54;;;757:3716:83;;;;;;;3082:40:54;;;;;;;;;;;;;;;;;:::i;:::-;;;757:3716:83;;;;;3082:40:54;;;;;;;;;757:3716:83;;;;;;;-1:-1:-1;;757:3716:83;;;;;4420:9;757:3716;4420:14;;;757:3716;;;6973:36:54;757:3716:83;6973:36:54;;7003:4;6973:36;;;757:3716:83;6973:36:54;2951:6;757:3716:83;2951:6:54;757:3716:83;2951:6:54;757:3716:83;6973:36:54;;;;;;757:3716:83;6973:36:54;;;4420:44:83;757:3716;4420:44;;;757:3716;;;;;6973:36:54;;;;;;;;;;;;;;;;:::i;:::-;;;757:3716:83;;;;;;;6973:36:54;;;;;-1:-1:-1;6973:36:54;;4420:44:83;757:3716;4420:44;;;;;757:3716;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;465:4:47;757:3716:83;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;2193:27;757:3716;;;;;;;-1:-1:-1;;757:3716:83;;;;;6339:10:54;-1:-1:-1;757:3716:83;;;1121:7:101;757:3716:83;;;;;;;;;;;;;;;;;;;;5175:32:54;757:3716:83;;;:::i;:::-;436:67:68;;;;;:::i;:::-;757:3716:83;;;;;;;;;;;5175:32:54;757:3716:83;;;;;;;-1:-1:-1;;757:3716:83;;;;;;4312:20;757:3716;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;6533:20:54;;;:::i;757:3716:83:-;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;3683:39;757:3716;3683:39;;3716:4;3683:39;;;757:3716;;3683:6;757:3716;3683:6;757:3716;3683:6;757:3716;3683:39;;;;;;;757:3716;;3683:39;;757:3716;;;;;;;;;;;;;;;;:::i;3683:39::-;;;;;757:3716;3683:39;;;;;;:::i;:::-;;;757:3716;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;3683:39;;;757:3716;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;2727:2:54;757:3716:83;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;1443:95:54;757:3716:83;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;4188:4;757:3716;;;;;;;;;4942:26:54;757:3716:83;;;:::i;:::-;;;;;;4124:49:54;757:3716:83;;;;;:::i;:::-;;;;4124:49:54;;4144:10;4124:49;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:6:54;757:3716:83;4124:49:54;;;;;;;;;757:3716:83;;4190:4:54;757:3716:83;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;2839:33:54;757:3716:83;2839:33:54;;2866:4;2839:33;;;757:3716:83;2839:33:54;:6;757:3716:83;2839:6:54;757:3716:83;2839:6:54;757:3716:83;2839:33:54;;;;;;;757:3716:83;2839:33:54;;;;757:3716:83;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;;;;;:::i;:::-;1979:47;2044:58;:22;1979:47;;;:::i;:::-;757:3716;;;2044:22;;:::i;:::-;757:3716;465:4:47;838:5;757:3716:83;;838:5:47;;:::i;:::-;757:3716:83;2044:58;;:::i;:::-;757:3716;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;3819:43:54;757:3716:83;;;:::i;:::-;;;;3819:43:54;;3834:10;3819:43;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;2434:8:54;757:3716:83;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2434:8:54;757:3716:83;;;;;;;;;;;;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;-1:-1:-1;757:3716:83;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;876:25:108;757:3716:83;861:40:108;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;757:3716:83;;;:::o;:::-;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;-1:-1:-1;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;1440:280::-;757:3716;;;1634:3;757:3716;;1613:19;;;;;1653:24;757:3716;1666:11;;;;;:::i;:::-;757:3716;1653:24;;:::i;:::-;1634:3;757:3716;1598:13;;;1613:19;;;;1440:280;:::o;757:3716::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;509:165:68:-;757:3716:83;586:6:68;757:3716:83;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;757:3716:83;;616:41:68;;3845:262:106;757:3716:83;3938:11:106;757:3716:83;3929:4:106;3921:28;:63;;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;757:3716:83;;4204:80:106;;;757:3716:83;2079:95:106;757:3716:83;;4226:11:106;757:3716:83;2079:95:106;;757:3716:83;4239:14:106;2079:95;;;757:3716:83;4255:13:106;2079:95;;;757:3716:83;3929:4:106;2079:95;;;757:3716:83;2079:95:106;4204:80;;2079:95;757:3716:83;;;;;;;;;;;;;;4194:91:106;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;3385:267:102;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;757:3716:83;;;;;;:::i;:::-;2367:90:102;;2311:2;757:3716:83;;2367:90:102;3570:22;:::o;2702:69::-;2740:20;757:3716:83;2740:20:102;;757:3716:83;2740:20:102;3504:142;757:3716:83;;;-1:-1:-1;757:3716:83;-1:-1:-1;757:3716:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;;;;;;;;:::i;:::-;3623:12;:::o;757:3716:83:-;;;;-1:-1:-1;757:3716:83;;;;-1:-1:-1;757:3716:83;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;;;;;;;1390:66:102;757:3716:83;;;;;;;;;;;;;;;;;;;;;;3385:267:102;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;757:3716:83;;;;;;:::i;3504:142:102:-;757:3716:83;;;-1:-1:-1;6584:16:106;;757:3716:83;6584:16:106;757:3716:83;;;;:::i;:::-;;;;;;;6584:16:106;757:3716:83;;;6584:16:106;;;;757:3716:83;;;;;1390:66:102;;;;;;;;:::i;757:3716:83:-;;;;6584:16:106;-1:-1:-1;757:3716:83;;;-1:-1:-1;757:3716:83;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:3716:83;;;;;;5140:1530:105;;;6199:66;6186:79;;6182:164;;757:3716:83;;;;;;;;;;;;;;;;;;;;;;;;;;6457:24:105;;;;;;;;;757:3716:83;6457:24:105;757:3716:83;;;6495:20:105;6491:113;;6614:49;757:3716:83;6614:49:105;757:3716:83;5140:1530:105;:::o;6491:113::-;6531:62;757:3716:83;6531:62:105;6457:24;6531:62;757:3716:83;6531:62:105;:::o;6457:24::-;757:3716:83;;;;;;;;;6182:164:105;6281:54;;;757:3716:83;6281:54:105;6301:30;6281:54;;:::o;7196:532::-;757:3716:83;;;;;;7282:29:105;;;7327:7;;:::o;7278:444::-;757:3716:83;7378:38:105;;757:3716:83;;7439:23:105;-1:-1:-1;7439:23:105;757:3716:83;-1:-1:-1;7439:23:105;7374:348;7492:35;7483:44;;7492:35;;7550:46;;-1:-1:-1;7550:46:105;757:3716:83;;;-1:-1:-1;7550:46:105;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;-1:-1:-1;7679:32:105;757:3716:83;;;-1:-1:-1;7679:32:105"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","computeBalance(uint256[],uint256,uint256)":"16a0b3e0","computeInvariant(uint256[],uint8)":"984de9e8","decimals()":"313ce567","eip712Domain()":"84b0196e","emitApproval(address,address,uint256)":"5687f2b8","emitTransfer(address,address,uint256)":"23de6651","getActionId(bytes4)":"851c1bb3","getAggregateFeePercentages()":"81fa807c","getCurrentLiveBalances()":"b156aa0a","getDecimalScalingFactors()":"360c340f","getMaximumInvariantRatio()":"273c1adf","getMaximumSwapFeePercentage()":"654cf15d","getMinimumInvariantRatio()":"b677fa56","getMinimumSwapFeePercentage()":"ce20ece7","getRate()":"679aefce","getStaticSwapFeePercentage()":"d335b0cf","getTokenInfo()":"abb1dc44","getTokens()":"aa6ca808","getVault()":"8d928af8","incrementNonce()":"627cdcb9","mockEventFunction(uint256)":"b0e2e403","name()":"06fdde03","nonces(address)":"7ecebe00","onAddLiquidityCustom(address,uint256[],uint256,uint256[],bytes)":"e4c43663","onRemoveLiquidityCustom(address,uint256,uint256[],uint256[],bytes)":"ab68e28c","onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))":"72c98186","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","setMockRate(uint256)":"4cfe8d1a","setMultiplier(uint256)":"641579a6","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"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\":[],\"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\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"}],\"name\":\"computeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"computeInvariant\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"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\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDecimalScalingFactors\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"scalingFactors\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumInvariantRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"view\",\"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\":\"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\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"testValue\",\"type\":\"uint256\"}],\"name\":\"mockEventFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onAddLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onRemoveLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"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\":\"params\",\"type\":\"tuple\"}],\"name\":\"onSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"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\":\"mockRate\",\"type\":\"uint256\"}],\"name\":\"setMockRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMultiplier\",\"type\":\"uint256\"}],\"name\":\"setMultiplier\",\"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\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC2612ExpiredSignature(uint256)\":[{\"params\":{\"deadline\":\"The permit deadline that expired\"}}],\"ERC2612InvalidSigner(address,address)\":[{\"params\":{\"owner\":\"The address of the owner (expected value of the signature provider)\",\"signer\":\"The address corresponding to the signature provider\"}}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"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.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"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`.\"},\"computeBalance(uint256[],uint256,uint256)\":{\"details\":\"Similar to V2's `_getTokenBalanceGivenInvariantAndAllOtherBalances` in StableMath. The pool must round up for the Vault to round in the protocol's favor when calling this function.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"tokenInIndex\":\"The index of the token we're computing the balance for, sorted in token registration order\"},\"returns\":{\"newBalance\":\"The new balance of the selected token, after the operation\"}},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"emitApproval(address,address,uint256)\":{\"details\":\"Emit the Approval event. This function can only be called by the MultiToken.\"},\"emitTransfer(address,address,uint256)\":{\"details\":\"Emit the Transfer event. This function can only be called by the MultiToken.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAggregateFeePercentages()\":{\"details\":\"These are determined by the current protocol and pool creator fees, set in the `ProtocolFeeController`.\",\"returns\":{\"aggregateSwapFeePercentage\":\"The aggregate percentage fee applied to swaps\",\"aggregateYieldFeePercentage\":\"The aggregate percentage fee applied to yield\"}},\"getCurrentLiveBalances()\":{\"details\":\"Note that live balances will not necessarily be accurate if the pool is in Recovery Mode. Withdrawals in Recovery Mode do not make external calls (including those necessary for updating live balances), so if there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\",\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getDecimalScalingFactors()\":{\"details\":\"Even though pools do not handle scaling, we still need this for the tests.\"},\"getMaximumInvariantRatio()\":{\"returns\":{\"_0\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMaximumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"_0\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The minimum swap fee percentage for a pool\"}},\"getRate()\":{\"details\":\"The VaultExtension contract defines a default implementation (`getBptRate`) to calculate the rate of any given pool, which should be sufficient in nearly all cases.\",\"returns\":{\"_0\":\"rate Rate of the pool's BPT\"}},\"getStaticSwapFeePercentage()\":{\"returns\":{\"_0\":\"18-decimal FP value of the static swap fee percentage\"}},\"getTokenInfo()\":{\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"Pool tokens, sorted in token registration order\"}},\"getTokens()\":{\"returns\":{\"tokens\":\"List of tokens in the pool, sorted in registration order\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"params\":{\"params\":\"Swap parameters (see above for struct definition)\"},\"returns\":{\"amountCalculated\":\"Calculated amount for the swap operation\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"errors\":{\"ERC2612ExpiredSignature(uint256)\":[{\"notice\":\"Operation failed due to an expired permit signature.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"notice\":\"Operation failed due to a non-matching signature.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}]},\"kind\":\"user\",\"methods\":{\"computeBalance(uint256[],uint256,uint256)\":{\"notice\":\"Computes a new token balance, given the invariant growth ratio and all other balances.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAggregateFeePercentages()\":{\"notice\":\"Gets the aggregate swap and yield fee percentages for a pool.\"},\"getCurrentLiveBalances()\":{\"notice\":\"Gets the current live balances of the pool as fixed point, 18-decimal numbers.\"},\"getRate()\":{\"notice\":\"Get the BPT rate, which is defined as: pool invariant/total supply.\"},\"getStaticSwapFeePercentage()\":{\"notice\":\"Fetches the static swap fee percentage for the pool.\"},\"getTokenInfo()\":{\"notice\":\"Gets the raw data for the pool: tokens, token info, raw balances, and last live balances.\"},\"getTokens()\":{\"notice\":\"Gets the tokens registered in the pool.\"},\"incrementNonce()\":{\"notice\":\"Increment the sender's nonce to revoke any currently granted (but not yet executed) `permit`.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Execute a swap in the pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/PoolMock.sol\":\"PoolMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\":{\"keccak256\":\"0x0cdc0d3817887d0439c3c6f4c811bd37091ef75a855dd8b14c0e8f337e2799dd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ffd05df90ccdf19a35177fd6c6f78edc61ca2a37df7d0934932a3ad5a96f1e6\",\"dweb:/ipfs/QmaCmKktnMy4XXZn2FaKTjwQBGUhuXKikbxCbPX6K5PPgi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol\":{\"keccak256\":\"0xd810b5deb6053f485a0fc6dfde4894e7a0c90e5d31db3a61144f62c399cd8a26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cdb0e9331a4fe3320355bac37376a0698d36b10347d90d2c4224a787e065622\",\"dweb:/ipfs/QmTsu2bGVhfPyF9X6NCmhRLYyBHBpjRKndKLvTagJGUKE3\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/test/PoolMock.sol\":{\"keccak256\":\"0xcd2e8d9d618bfb81a9696acb2419a33d04f48f0b548402c0b32e16d2e8708c3d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01e7508e239ab908574226d9c009a0f0af5759d941e59a3d7362735ddd859980\",\"dweb:/ipfs/QmQDAS3tugJ1kRFgUsnyKJbMhEtD7464jfTqjYWZc2tQz2\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol":{"ProtocolFeeControllerMock":{"abi":[{"inputs":[{"internalType":"contract IVaultMock","name":"vault_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"name":"CallerIsNotPoolCreator","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[],"name":"PoolCreatorFeePercentageTooHigh","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreatorNotRegistered","type":"error"},{"inputs":[],"name":"ProtocolSwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"ProtocolYieldFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"GlobalProtocolSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"yieldFeePercentage","type":"uint256"}],"name":"GlobalProtocolYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PoolCreatorFeesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolCreatorSwapFeePercentage","type":"uint256"}],"name":"PoolCreatorSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolCreatorYieldFeePercentage","type":"uint256"}],"name":"PoolCreatorYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolFeesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolSwapFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"ProtocolSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProtocolYieldFeeCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"yieldFeePercentage","type":"uint256"}],"name":"ProtocolYieldFeePercentageChanged","type":"event"},{"inputs":[],"name":"MAX_CREATOR_FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PROTOCOL_YIELD_FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFeesHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"protocolFeePercentage","type":"uint256"},{"internalType":"uint256","name":"poolCreatorFeePercentage","type":"uint256"}],"name":"computeAggregateFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalProtocolSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalProtocolYieldFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolCreatorFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolCreatorInfo","outputs":[{"internalType":"address","name":"poolCreator","type":"address"},{"internalType":"uint256","name":"creatorSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"creatorYieldFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProtocolSwapFeeInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolProtocolYieldFeeInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokensAndCount","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"numTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getProtocolFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"name":"manualSetPoolCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolCreatorSwapFeePercentage","type":"uint256"}],"name":"manualSetPoolCreatorSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"}],"name":"registerPool","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProtocolSwapFeePercentage","type":"uint256"}],"name":"setGlobalProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProtocolYieldFeePercentage","type":"uint256"}],"name":"setGlobalProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolCreatorSwapFeePercentage","type":"uint256"}],"name":"setPoolCreatorSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"poolCreatorYieldFeePercentage","type":"uint256"}],"name":"setPoolCreatorYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newProtocolSwapFeePercentage","type":"uint256"}],"name":"setProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newProtocolYieldFeePercentage","type":"uint256"}],"name":"setProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"updateProtocolSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"updateProtocolYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"withdrawPoolCreatorFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawPoolCreatorFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawProtocolFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawProtocolFeesForToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60e0346100fd57601f61293338819003918201601f19168301916001600160401b03831184841017610101578084926020946040528339810103126100fd57516001600160a01b038116908190036100fd57306080528060a05260c05260405161281d9081610116823960805181611d2c015260a0518181816111f90152611fdf015260c05181818161025101528181610371015281816103fc0152818161051e0152818161058c01528181610868015281816108d601528181610c8701528181610d9901528181610ecf0152818161162a015281816117cf0152818161197f01528181611ad901528181611f0a01528181612271015261247d0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f803560e01c80630ddd60c614611b9d5780631377c16c14611a7e5780632772d1561461188c5780632e1d388d14611a5c5780633af527121461192457806352f125f0146118ea57806355fb76af146118cd5780635c15a0b4146118915780635e32e4e81461188c57806371447ea8146116e757806371ecc8fb1461154357806377ff76e7146113e55780637869ee18146113c957806379a2c0ac146113645780637a2b97dc146112f9578063851c1bb3146112a95780638a3c5c691461121d5780638d928af8146111da5780638df44c54146111525780638f4ab9ca146111315780639e95f3fd146110a5578063a93df2a414611040578063aa9fea8714610fe7578063aaabadc514610fbc578063abaa335614610e03578063b53a70b214610d1c578063b8abccd114610c51578063cf7b287f14610be7578063f29aaa5814610b76578063f706144514610b3f578063fa399f2a14610395578063fbfa77cf146103515763fd267f3914610185575f80fd5b3461034e57604060031936011261034e5761019e611bbe565b602435906101aa612352565b6706f05b59d3b200008211610326576101c28261230a565b6101cb81611e48565b6101d4826122c5565b916040516101e181611c47565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600260205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f0000000000000000000000000000000000000000000000000000000000000000169161027b816125e4565b833b15610322576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e92602092610308575b50604051908152a280f35b61031190611c90565b5f6102fd565b6040513d5f823e3d90fd5b5f80fd5b6004837f7e6eb7fb000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461034e578060031936011261034e5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461034e57602060031936011261034e576103af611bbe565b6103b7612267565b6040517f8f4ab9ca0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528281602481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115610b345783908492610acf575b506001600160a01b0383165f52600260205267ffffffffffffffff60405f20541690600560205260405f2054905f928215159384610ac5575b84610ab5575b6104768761243e565b94905f5b868110610826578a8a8a6001600160a01b0382165f52600360205267ffffffffffffffff60405f205416905f92600660205260405f2054925f841515948561081c575b8561080a575b6104cc8461243e565b96905f5b8881106104db578a80f35b6104e58189611dcd565b516104f3575b6001016104d0565b986001600160a01b036105068b84611dcd565b5116906105138b8a611dcd565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561080657604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201528181606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156107fb579082916107e7575b506107ba57505f99816105cf828b611dcd565b516040519081527fe505e41b0d437b47350a9990142ccf38acb11ffa0e5af8f973b9e172f3d5d5e260206001600160a01b038c1692a3831561073f57610615818a611dcd565b51861561071757610625906120bb565b6001670de0b6b3a76400006106668a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848c8783010401901515026120d8565b928301040190151502916001600160a01b0389165f52600760205260405f20815f5260205260405f2061069a8482546120ae565b90556106a6828b611dcd565b519081848103116106ea576001936106e0916001600160a01b038c165f52600860205260405f20905f5260205260405f20920382546120ae565b90555b90506104eb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001918561078457610751828b611dcd565b51906001600160a01b038a165f52600760205260405f20905f5260205261077d60405f209182546120ae565b90556106e3565b61078e828b611dcd565b51906001600160a01b038a165f52600860205260405f20905f5260205261077d60405f209182546120ae565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6107f090611c90565b61034e57808d6105bc565b6040513d84823e3d90fd5b5080fd5b905061081681836120eb565b906104c3565b82151595506104bd565b6108308187611dcd565b5161083e575b60010161047a565b6001600160a01b036108508284611dcd565b51169061085d8188611dcd565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561032257604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201525f81606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561031757610aa6575b50818b7fae7ebad9fc3d1d17965f063fa520d393595e2ef6c8e22ae8413b60900444e19f60206001600160a01b0361093b868d611dcd565b51936040519485521692a38815610a2b576109568188611dcd565b51851561071757610966906120bb565b6001670de0b6b3a76400006109a7897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848b8783010401901515026120d8565b928301040190151502916001600160a01b038c165f52600760205260405f20815f5260205260405f206109db8482546120ae565b90556109e78289611dcd565b519081848103116106ea57600193610a21916001600160a01b038f165f52600860205260405f20905f5260205260405f20920382546120ae565b90555b9050610836565b60019184610a7057610a3d8289611dcd565b51906001600160a01b038d165f52600760205260405f20905f52602052610a6960405f209182546120ae565b9055610a24565b610a7a8289611dcd565b51906001600160a01b038d165f52600860205260405f20905f52602052610a6960405f209182546120ae565b610aaf90611c90565b5f610903565b50610ac083826120eb565b61046d565b8115159450610467565b9150503d8084833e610ae18183611cc0565b810190604081830312610b305780519167ffffffffffffffff92838111610b2c5781610b0e91840161204d565b926020830151908111610b2c57610b25920161204d565b905f61042e565b8580fd5b8380fd5b6040513d85823e3d90fd5b503461034e57604060031936011261034e57610b73610b5c611bbe565b610b64611bd4565b90610b6e8161212c565b6121b0565b80f35b503461034e5760208060031936011261080657610b99610b94611bbe565b61243e565b926040519260408401906040855283518092526020606086019401925b828110610bca578580868960208301520390f35b83516001600160a01b031685529381019392810192600101610bb6565b503461034e57604060031936011261034e57610c01611bbe565b610c09611bd4565b90610c12612352565b610c1b8161243e565b9290845b848110610c2a578580f35b80610c4b6001600160a01b03610c4260019486611dcd565b51168587612552565b01610c1f565b503461032257604060031936011261032257610c6b611bbe565b6001600160a01b038082165f52600560205260243560405f20557f00000000000000000000000000000000000000000000000000000000000000001690610cb1816125e4565b823b15610322576040517fa03b23ef0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152905f908290604490829084905af1801561031757610d10575080f35b610d1a9150611c90565b005b3461032257606060031936011261032257610d35611bbe565b610d3d611bd4565b604435906001600160a01b039283831680840361032257604090610d5f612352565b60448251809781937fc9c1661b000000000000000000000000000000000000000000000000000000008352818716600484015260248301527f0000000000000000000000000000000000000000000000000000000000000000165afa801561031757610dd0575b610d1a9350612552565b6040843d604011610dfb575b81610de960409383611cc0565b8101031261032257610d1a9350610dc6565b3d9150610ddc565b3461032257604060031936011261032257610e1c611bbe565b60243590610e28612352565b6706f05b59d3b200008211610f9457610e408261230a565b610e4981611e48565b610e52826122c5565b91604051610e5f81611c47565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600360205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f00000000000000000000000000000000000000000000000000000000000000001691610ef981612619565b833b15610322576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd92602092610f85575b50604051908152a2005b610f8e90611c90565b5f610f7b565b7fa7849e8e000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610322575f600319360112610322576020610fd6611fa9565b6001600160a01b0360405191168152f35b346103225760206003193601126103225760606001600160a01b038061100b611bbe565b165f52600460205260405f205416600560205260405f2054600660205260405f20549060405192835260208301526040820152f35b34610322576020600319360112610322576004356706f05b59d3b200008111610f94576020816110907f48c5c3ccec54c4e0ea08d83d838fa9bb725eb0b52c591cb00bd6e63bca8c44f69361230a565b611098612352565b80600155604051908152a1005b3461032257602080600319360112610322576110bf611bbe565b906110c98261243e565b906110d382611d7e565b925f946001600160a01b03809116955b8481106110fc57604051806110f88882611c0c565b0390f35b600190875f526008845260405f20836111158388611dcd565b51165f52845260405f205461112a8289611dcd565b52016110e3565b3461032257602060031936011261032257610d1a61114d611bbe565b611e48565b34610322576020806003193601126103225761116c611bbe565b906111768261243e565b9061118082611d7e565b925f946001600160a01b03809116955b8481106111a557604051806110f88882611c0c565b600190875f526007845260405f20836111be8388611dcd565b51165f52845260405f20546111d38289611dcd565b5201611190565b34610322575f6003193601126103225760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610322576020600319360112610322576004356706f05b59d3b2000081116112815760208161126d7fbf5ac0fc89bbf8819be79f280146b65ea2af2a9705cd9cfe0c9d93f6e87f307d9361230a565b611275612352565b805f55604051908152a1005b7f7e6eb7fb000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610322576020600319360112610322576004357fffffffff0000000000000000000000000000000000000000000000000000000081168103610322576112f1602091611d01565b604051908152f35b34610322576020600319360112610322576001600160a01b0361131a611bbe565b165f526003602052602060405f206040519061133582611c47565b5467ffffffffffffffff811680835260ff604092831c1615159390920183905280519182526020820192909252f35b346103225760406003193601126103225761137d611bbe565b611385611bd4565b906001600160a01b038091165f52600460205260405f2091167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555f80f35b34610322575f6003193601126103225760205f54604051908152f35b34610322576060600319360112610322576113fe611bbe565b611406611bd4565b90604435908115159081830361032257604093611421612267565b6001600160a01b0380921690815f5260209260048452865f2091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055835f1461153b575f935b15611532575f925b61147e856122c5565b865161148981611c47565b67ffffffffffffffff809216815284810191838352845f526002865280895f20925116918054935115158a1b937fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000938468ff00000000000000008097169216171790556114f5876122c5565b94818a519661150388611c47565b1686528686019485525f5260038652885f2094511691845493511515891b169216171790558351928352820152f35b60015492611475565b5f549361146d565b34610322576020806003193601126103225761155d611bbe565b61156681611e48565b6001600160a01b039182821692835f526002825260405f20906040519161158c83611c47565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101525f5493816116dc575b506115bd57005b6115c6836122c5565b9080604051926115d584611c47565b168252848201905f8252875f526002865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f00000000000000000000000000000000000000000000000000000000000000001692611654816125e4565b843b15610322576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af1928315610317577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e93610f855750604051908152a2005b9050831415876115b6565b346103225760208060031936011261032257611701611bbe565b61170a81611e48565b6001600160a01b039182821692835f526003825260405f20906040519161173083611c47565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101526001549381611881575b5061176257005b61176b836122c5565b90806040519261177a84611c47565b168252848201905f8252875f526003865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f000000000000000000000000000000000000000000000000000000000000000016926117f981612619565b843b15610322576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af1928315610317577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd93610f855750604051908152a2005b90508314158761175b565b611bea565b34610322576020600319360112610322576001600160a01b036118b2611bbe565b165f526002602052602060405f206040519061133582611c47565b34610322575f600319360112610322576020600154604051908152f35b3461032257602060031936011261032257610d1a611906611bbe565b6001600160a01b038082165f52600460205260405f205416906121b0565b346103225760406003193601126103225761193d611bbe565b6024359061194a8161212c565b670de0ad9b58f160008211611a345761196281611e48565b6001600160a01b039182821692835f5260066020528160405f20557f000000000000000000000000000000000000000000000000000000000000000016916119a981612619565b833b15610322576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577f47f70ddbc624c299cef7841aaea0a86b677c800203e953104e958c9ec9bdab3492602092610f855750604051908152a2005b7f0370da74000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610322575f600319360112610322576020604051670de0ad9b58f160008152f35b3461032257604060031936011261032257611a97611bbe565b60243590611aa48161212c565b670de0ad9b58f160008211611a3457611abc81611e48565b6001600160a01b039182821692835f5260056020528160405f20557f00000000000000000000000000000000000000000000000000000000000000001691611b03816125e4565b833b15610322576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577fb7cf36369623c01ed7b2eafc4025224e924a2836d5fb49428a0f65417586bf5c92602092611b8e5750604051908152a2005b611b9790611c90565b84610f7b565b346103225760406003193601126103225760206112f16024356004356120eb565b600435906001600160a01b038216820361032257565b602435906001600160a01b038216820361032257565b34610322575f6003193601126103225760206040516706f05b59d3b200008152f35b60209060206040818301928281528551809452019301915f5b828110611c33575050505090565b835185529381019392810192600101611c25565b6040810190811067ffffffffffffffff821117611c6357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff8111611c6357604052565b6060810190811067ffffffffffffffff821117611c6357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611c6357604052565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f0000000000000000000000000000000000000000000000000000000000000000845216604082015260248152611d6081611ca4565b51902090565b67ffffffffffffffff8111611c635760051b60200190565b90611d8882611d66565b611d956040519182611cc0565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611dc38294611d66565b0190602036910137565b8051821015611de15760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b67ffffffffffffffff8111611c6357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0905f601f6001600160a01b036040519383604460209684888201947ffa399f2a00000000000000000000000000000000000000000000000000000000865216602482015260248152611eba81611ca4565b604051988996879586937f48c894910000000000000000000000000000000000000000000000000000000085528b60048601525180918160248701528686015e85858286010152011681010301927f0000000000000000000000000000000000000000000000000000000000000000165af1801561031757611f3a575050565b3d805f843e611f498184611cc0565b82019181818403126103225780519067ffffffffffffffff821161032257019180601f8401121561032257825190611f8082611e0e565b90611f8e6040519283611cc0565b8282528383860101116103225781835f95018483015e010152565b6040517faaabadc50000000000000000000000000000000000000000000000000000000081526001600160a01b036020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610317575f9261201457505090565b9091506020813d602011612045575b8161203060209383611cc0565b81010312610322575190811681036103225790565b3d9150612023565b9080601f830112156103225781519060209161206881611d66565b936120766040519586611cc0565b81855260208086019260051b82010192831161032257602001905b82821061209f575050505090565b81518152908301908301612091565b919082018092116106ea57565b90670de0b6b3a7640000918281029281840414901517156106ea57565b818102929181159184041417156106ea57565b9061211864174876e800928392612111670de0b6b3a764000091838303838510026120d8565b04906120ae565b048181029181830414901517156106ea5790565b6001600160a01b0380911690815f52600460205260405f20541680156121845733036121555750565b7ffbecdbf4000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b507f8bcbf353000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906121ba8261243e565b92905f5b8481106121cc575050505050565b6001906001600160a01b03806121e28386611dcd565b5116818616805f5260086020818152604094855f20855f528252855f20549586612214575b50505050505050016121be565b7f938f3a3a03ee425ccc0f8010b0468938cbafd3750fa43bbdf09c6f75e97e51f993855f528352805f20865f5283525f81812055612253878d8861264b565b519586528a1694a45f808080808080612207565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361229957565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b67ffffffffffffffff908181116122da571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52604060045260245260445ffd5b64174876e8008082048181029181830414901517156106ea570361232a57565b7f833fb3ce000000000000000000000000000000000000000000000000000000005f5260045ffd5b61237e7fffffffff000000000000000000000000000000000000000000000000000000005f3516611d01565b60206001600160a01b03612390611fa9565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa908115610317575f9161240f575b50156123e757565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b612431915060203d602011612437575b6124298183611cc0565b810190612743565b5f6123df565b503d61241f565b906001600160a01b0380604051937fca4f28030000000000000000000000000000000000000000000000000000000085521660048401525f83602481847f0000000000000000000000000000000000000000000000000000000000000000165afa928315610317575f936124b4575b5050815190565b909192503d805f833e6124c78183611cc0565b810160209182818303126103225780519067ffffffffffffffff821161032257019281601f850112156103225783516124ff81611d66565b9461250d6040519687611cc0565b818652848087019260051b820101938411610322578401905b83821061253a575050505050905f806124ad565b81518381168103610322578152908401908401612526565b91906001600160a01b0380931690815f52600760205260405f209284811693845f5260205260405f2054948561258b575b505050505050565b826125d0877f1c2887fcb98f75e66bb9a36311f2d3d22fb204e6362106f30e9df7eaf63131b595602095885f526007875260405f208a5f5287525f604081205561264b565b6040519687521694a45f8080808080612583565b6001600160a01b03165f52600260205261261667ffffffffffffffff60405f205416600560205260405f2054906120eb565b90565b6001600160a01b03165f52600360205261261667ffffffffffffffff60405f205416600660205260405f2054906120eb565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082019081526001600160a01b039384166024830152604480830195909552938152926126df925f92839291906126a8606488611cc0565b1694519082865af13d1561273b573d906126c182611e0e565b916126cf6040519384611cc0565b82523d5f602084013e5b8361275b565b8051908115159182612720575b50506126f55750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6127339250602080918301019101612743565b155f806126ec565b6060906126d9565b90816020910312610322575180151581036103225790565b90612798575080511561277057805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806127de575b6127a9575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156127a156fea264697066735822122033e08da4137f4cd8d7eee489d526ebca88d5563e48c18ce310b7909c8e79761864736f6c634300081a0033","opcodes":"PUSH1 0xE0 CALLVALUE PUSH2 0xFD JUMPI PUSH1 0x1F PUSH2 0x2933 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x101 JUMPI DUP1 DUP5 SWAP3 PUSH1 0x20 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0xFD JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 SWAP1 SUB PUSH2 0xFD JUMPI ADDRESS PUSH1 0x80 MSTORE DUP1 PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x281D SWAP1 DUP2 PUSH2 0x116 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x1D2C ADD MSTORE PUSH1 0xA0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x11F9 ADD MSTORE PUSH2 0x1FDF ADD MSTORE PUSH1 0xC0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x251 ADD MSTORE DUP2 DUP2 PUSH2 0x371 ADD MSTORE DUP2 DUP2 PUSH2 0x3FC ADD MSTORE DUP2 DUP2 PUSH2 0x51E ADD MSTORE DUP2 DUP2 PUSH2 0x58C ADD MSTORE DUP2 DUP2 PUSH2 0x868 ADD MSTORE DUP2 DUP2 PUSH2 0x8D6 ADD MSTORE DUP2 DUP2 PUSH2 0xC87 ADD MSTORE DUP2 DUP2 PUSH2 0xD99 ADD MSTORE DUP2 DUP2 PUSH2 0xECF ADD MSTORE DUP2 DUP2 PUSH2 0x162A ADD MSTORE DUP2 DUP2 PUSH2 0x17CF ADD MSTORE DUP2 DUP2 PUSH2 0x197F ADD MSTORE DUP2 DUP2 PUSH2 0x1AD9 ADD MSTORE DUP2 DUP2 PUSH2 0x1F0A ADD MSTORE DUP2 DUP2 PUSH2 0x2271 ADD MSTORE PUSH2 0x247D ADD MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDDD60C6 EQ PUSH2 0x1B9D JUMPI DUP1 PUSH4 0x1377C16C EQ PUSH2 0x1A7E JUMPI DUP1 PUSH4 0x2772D156 EQ PUSH2 0x188C JUMPI DUP1 PUSH4 0x2E1D388D EQ PUSH2 0x1A5C JUMPI DUP1 PUSH4 0x3AF52712 EQ PUSH2 0x1924 JUMPI DUP1 PUSH4 0x52F125F0 EQ PUSH2 0x18EA JUMPI DUP1 PUSH4 0x55FB76AF EQ PUSH2 0x18CD JUMPI DUP1 PUSH4 0x5C15A0B4 EQ PUSH2 0x1891 JUMPI DUP1 PUSH4 0x5E32E4E8 EQ PUSH2 0x188C JUMPI DUP1 PUSH4 0x71447EA8 EQ PUSH2 0x16E7 JUMPI DUP1 PUSH4 0x71ECC8FB EQ PUSH2 0x1543 JUMPI DUP1 PUSH4 0x77FF76E7 EQ PUSH2 0x13E5 JUMPI DUP1 PUSH4 0x7869EE18 EQ PUSH2 0x13C9 JUMPI DUP1 PUSH4 0x79A2C0AC EQ PUSH2 0x1364 JUMPI DUP1 PUSH4 0x7A2B97DC EQ PUSH2 0x12F9 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x12A9 JUMPI DUP1 PUSH4 0x8A3C5C69 EQ PUSH2 0x121D JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x11DA JUMPI DUP1 PUSH4 0x8DF44C54 EQ PUSH2 0x1152 JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0x1131 JUMPI DUP1 PUSH4 0x9E95F3FD EQ PUSH2 0x10A5 JUMPI DUP1 PUSH4 0xA93DF2A4 EQ PUSH2 0x1040 JUMPI DUP1 PUSH4 0xAA9FEA87 EQ PUSH2 0xFE7 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xFBC JUMPI DUP1 PUSH4 0xABAA3356 EQ PUSH2 0xE03 JUMPI DUP1 PUSH4 0xB53A70B2 EQ PUSH2 0xD1C JUMPI DUP1 PUSH4 0xB8ABCCD1 EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xCF7B287F EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xF29AAA58 EQ PUSH2 0xB76 JUMPI DUP1 PUSH4 0xF7061445 EQ PUSH2 0xB3F JUMPI DUP1 PUSH4 0xFA399F2A EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0x351 JUMPI PUSH4 0xFD267F39 EQ PUSH2 0x185 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0x19E PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1AA PUSH2 0x2352 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0x326 JUMPI PUSH2 0x1C2 DUP3 PUSH2 0x230A JUMP JUMPDEST PUSH2 0x1CB DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH2 0x1D4 DUP3 PUSH2 0x22C5 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0x1E1 DUP2 PUSH2 0x1C47 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x27B DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x308 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH2 0x311 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH0 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x7E6EB7FB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0x3AF PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x3B7 PUSH2 0x2267 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8F4AB9CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE DUP3 DUP2 PUSH1 0x24 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB34 JUMPI DUP4 SWAP1 DUP5 SWAP3 PUSH2 0xACF JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH0 SWAP3 DUP3 ISZERO ISZERO SWAP4 DUP5 PUSH2 0xAC5 JUMPI JUMPDEST DUP5 PUSH2 0xAB5 JUMPI JUMPDEST PUSH2 0x476 DUP8 PUSH2 0x243E JUMP JUMPDEST SWAP5 SWAP1 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x826 JUMPI DUP11 DUP11 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH0 SWAP3 PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 PUSH0 DUP5 ISZERO ISZERO SWAP5 DUP6 PUSH2 0x81C JUMPI JUMPDEST DUP6 PUSH2 0x80A JUMPI JUMPDEST PUSH2 0x4CC DUP5 PUSH2 0x243E JUMP JUMPDEST SWAP7 SWAP1 PUSH0 JUMPDEST DUP9 DUP2 LT PUSH2 0x4DB JUMPI DUP11 DUP1 RETURN JUMPDEST PUSH2 0x4E5 DUP2 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH2 0x4F3 JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x4D0 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x506 DUP12 DUP5 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x513 DUP12 DUP11 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x806 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x7FB JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x7E7 JUMPI JUMPDEST POP PUSH2 0x7BA JUMPI POP PUSH0 SWAP10 DUP2 PUSH2 0x5CF DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xE505E41B0D437B47350A9990142CCF38ACB11FFA0E5AF8F973B9E172F3D5D5E2 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP3 LOG3 DUP4 ISZERO PUSH2 0x73F JUMPI PUSH2 0x615 DUP2 DUP11 PUSH2 0x1DCD JUMP JUMPDEST MLOAD DUP7 ISZERO PUSH2 0x717 JUMPI PUSH2 0x625 SWAP1 PUSH2 0x20BB JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x666 DUP11 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP13 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x20D8 JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x69A DUP5 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x6A6 DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6EA JUMPI PUSH1 0x1 SWAP4 PUSH2 0x6E0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x4EB JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP2 DUP6 PUSH2 0x784 JUMPI PUSH2 0x751 DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x77D PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x78E DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x77D PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST DUP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 SWAP3 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x7F0 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH2 0x34E JUMPI DUP1 DUP14 PUSH2 0x5BC JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST SWAP1 POP PUSH2 0x816 DUP2 DUP4 PUSH2 0x20EB JUMP JUMPDEST SWAP1 PUSH2 0x4C3 JUMP JUMPDEST DUP3 ISZERO ISZERO SWAP6 POP PUSH2 0x4BD JUMP JUMPDEST PUSH2 0x830 DUP2 DUP8 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH2 0x83E JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x47A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x850 DUP3 DUP5 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x85D DUP2 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0xAA6 JUMPI JUMPDEST POP DUP2 DUP12 PUSH32 0xAE7EBAD9FC3D1D17965F063FA520D393595E2EF6C8E22AE8413B60900444E19F PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x93B DUP7 DUP14 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND SWAP3 LOG3 DUP9 ISZERO PUSH2 0xA2B JUMPI PUSH2 0x956 DUP2 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD DUP6 ISZERO PUSH2 0x717 JUMPI PUSH2 0x966 SWAP1 PUSH2 0x20BB JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A7 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP12 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x20D8 JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x9DB DUP5 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x9E7 DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6EA JUMPI PUSH1 0x1 SWAP4 PUSH2 0xA21 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x836 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP5 PUSH2 0xA70 JUMPI PUSH2 0xA3D DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA69 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0xA24 JUMP JUMPDEST PUSH2 0xA7A DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA69 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST PUSH2 0xAAF SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH0 PUSH2 0x903 JUMP JUMPDEST POP PUSH2 0xAC0 DUP4 DUP3 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0x46D JUMP JUMPDEST DUP2 ISZERO ISZERO SWAP5 POP PUSH2 0x467 JUMP JUMPDEST SWAP2 POP POP RETURNDATASIZE DUP1 DUP5 DUP4 RETURNDATACOPY PUSH2 0xAE1 DUP2 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0xB30 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0xB2C JUMPI DUP2 PUSH2 0xB0E SWAP2 DUP5 ADD PUSH2 0x204D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0xB2C JUMPI PUSH2 0xB25 SWAP3 ADD PUSH2 0x204D JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x42E JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0xB73 PUSH2 0xB5C PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0xB64 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH2 0xB6E DUP2 PUSH2 0x212C JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x806 JUMPI PUSH2 0xB99 PUSH2 0xB94 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x243E JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x40 DUP5 ADD SWAP1 PUSH1 0x40 DUP6 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x60 DUP7 ADD SWAP5 ADD SWAP3 JUMPDEST DUP3 DUP2 LT PUSH2 0xBCA JUMPI DUP6 DUP1 DUP7 DUP10 PUSH1 0x20 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xBB6 JUMP JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0xC01 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0xC09 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH2 0xC12 PUSH2 0x2352 JUMP JUMPDEST PUSH2 0xC1B DUP2 PUSH2 0x243E JUMP JUMPDEST SWAP3 SWAP1 DUP5 JUMPDEST DUP5 DUP2 LT PUSH2 0xC2A JUMPI DUP6 DUP1 RETURN JUMPDEST DUP1 PUSH2 0xC4B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC42 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND DUP6 DUP8 PUSH2 0x2552 JUMP JUMPDEST ADD PUSH2 0xC1F JUMP JUMPDEST POP CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xC6B PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP1 PUSH2 0xCB1 DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP3 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA03B23EF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP1 PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0xD10 JUMPI POP DUP1 RETURN JUMPDEST PUSH2 0xD1A SWAP2 POP PUSH2 0x1C90 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xD35 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0xD3D PUSH2 0x1BD4 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP4 AND DUP1 DUP5 SUB PUSH2 0x322 JUMPI PUSH1 0x40 SWAP1 PUSH2 0xD5F PUSH2 0x2352 JUMP JUMPDEST PUSH1 0x44 DUP3 MLOAD DUP1 SWAP8 DUP2 SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP8 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0xDD0 JUMPI JUMPDEST PUSH2 0xD1A SWAP4 POP PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 DUP5 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0xDFB JUMPI JUMPDEST DUP2 PUSH2 0xDE9 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x322 JUMPI PUSH2 0xD1A SWAP4 POP PUSH2 0xDC6 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDDC JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xE1C PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xE28 PUSH2 0x2352 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0xF94 JUMPI PUSH2 0xE40 DUP3 PUSH2 0x230A JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH2 0xE52 DUP3 PUSH2 0x22C5 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0xE5F DUP2 PUSH2 0x1C47 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0xEF9 DUP2 PUSH2 0x2619 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP3 PUSH1 0x20 SWAP3 PUSH2 0xF85 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0xF8E SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH0 PUSH2 0xF7B JUMP JUMPDEST PUSH32 0xA7849E8E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH2 0xFD6 PUSH2 0x1FA9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x100B PUSH2 0x1BBE JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0xF94 JUMPI PUSH1 0x20 DUP2 PUSH2 0x1090 PUSH32 0x48C5C3CCEC54C4E0EA08D83D838FA9BB725EB0B52C591CB00BD6E63BCA8C44F6 SWAP4 PUSH2 0x230A JUMP JUMPDEST PUSH2 0x1098 PUSH2 0x2352 JUMP JUMPDEST DUP1 PUSH1 0x1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x10BF PUSH2 0x1BBE JUMP JUMPDEST SWAP1 PUSH2 0x10C9 DUP3 PUSH2 0x243E JUMP JUMPDEST SWAP1 PUSH2 0x10D3 DUP3 PUSH2 0x1D7E JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0x10FC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x10F8 DUP9 DUP3 PUSH2 0x1C0C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x8 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0x1115 DUP4 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x112A DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MSTORE ADD PUSH2 0x10E3 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xD1A PUSH2 0x114D PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1E48 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x116C PUSH2 0x1BBE JUMP JUMPDEST SWAP1 PUSH2 0x1176 DUP3 PUSH2 0x243E JUMP JUMPDEST SWAP1 PUSH2 0x1180 DUP3 PUSH2 0x1D7E JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0x11A5 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x10F8 DUP9 DUP3 PUSH2 0x1C0C JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x7 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0x11BE DUP4 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x11D3 DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MSTORE ADD PUSH2 0x1190 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0x1281 JUMPI PUSH1 0x20 DUP2 PUSH2 0x126D PUSH32 0xBF5AC0FC89BBF8819BE79F280146B65EA2AF2A9705CD9CFE0C9D93F6E87F307D SWAP4 PUSH2 0x230A JUMP JUMPDEST PUSH2 0x1275 PUSH2 0x2352 JUMP JUMPDEST DUP1 PUSH0 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH32 0x7E6EB7FB00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x322 JUMPI PUSH2 0x12F1 PUSH1 0x20 SWAP2 PUSH2 0x1D01 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x131A PUSH2 0x1BBE JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1335 DUP3 PUSH2 0x1C47 JUMP JUMPDEST SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0xFF PUSH1 0x40 SWAP3 DUP4 SHR AND ISZERO ISZERO SWAP4 SWAP1 SWAP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x137D PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1385 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x13FE PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1406 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO SWAP1 DUP2 DUP4 SUB PUSH2 0x322 JUMPI PUSH1 0x40 SWAP4 PUSH2 0x1421 PUSH2 0x2267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x4 DUP5 MSTORE DUP7 PUSH0 KECCAK256 SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 PUSH0 EQ PUSH2 0x153B JUMPI PUSH0 SWAP4 JUMPDEST ISZERO PUSH2 0x1532 JUMPI PUSH0 SWAP3 JUMPDEST PUSH2 0x147E DUP6 PUSH2 0x22C5 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x1489 DUP2 PUSH2 0x1C47 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP2 MSTORE DUP5 DUP2 ADD SWAP2 DUP4 DUP4 MSTORE DUP5 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE DUP1 DUP10 PUSH0 KECCAK256 SWAP3 MLOAD AND SWAP2 DUP1 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP11 SHL SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 SWAP4 DUP5 PUSH9 0xFF0000000000000000 DUP1 SWAP8 AND SWAP3 AND OR OR SWAP1 SSTORE PUSH2 0x14F5 DUP8 PUSH2 0x22C5 JUMP JUMPDEST SWAP5 DUP2 DUP11 MLOAD SWAP7 PUSH2 0x1503 DUP9 PUSH2 0x1C47 JUMP JUMPDEST AND DUP7 MSTORE DUP7 DUP7 ADD SWAP5 DUP6 MSTORE PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE DUP9 PUSH0 KECCAK256 SWAP5 MLOAD AND SWAP2 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP10 SHL AND SWAP3 AND OR OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 SLOAD SWAP3 PUSH2 0x1475 JUMP JUMPDEST PUSH0 SLOAD SWAP4 PUSH2 0x146D JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x155D PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1566 DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x158C DUP4 PUSH2 0x1C47 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH0 SLOAD SWAP4 DUP2 PUSH2 0x16DC JUMPI JUMPDEST POP PUSH2 0x15BD JUMPI STOP JUMPDEST PUSH2 0x15C6 DUP4 PUSH2 0x22C5 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x15D5 DUP5 PUSH2 0x1C47 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x1654 DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x317 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP4 PUSH2 0xF85 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x15B6 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x1701 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x170A DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x3 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1730 DUP4 PUSH2 0x1C47 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH1 0x1 SLOAD SWAP4 DUP2 PUSH2 0x1881 JUMPI JUMPDEST POP PUSH2 0x1762 JUMPI STOP JUMPDEST PUSH2 0x176B DUP4 PUSH2 0x22C5 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x177A DUP5 PUSH2 0x1C47 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x17F9 DUP2 PUSH2 0x2619 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x317 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP4 PUSH2 0xF85 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x175B JUMP JUMPDEST PUSH2 0x1BEA JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x18B2 PUSH2 0x1BBE JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1335 DUP3 PUSH2 0x1C47 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xD1A PUSH2 0x1906 PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x21B0 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x193D PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x194A DUP2 PUSH2 0x212C JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x1A34 JUMPI PUSH2 0x1962 DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x19A9 DUP2 PUSH2 0x2619 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0x47F70DDBC624C299CEF7841AAEA0A86B677C800203E953104E958C9EC9BDAB34 SWAP3 PUSH1 0x20 SWAP3 PUSH2 0xF85 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH32 0x370DA7400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0xDE0AD9B58F16000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x1A97 PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1AA4 DUP2 PUSH2 0x212C JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x1A34 JUMPI PUSH2 0x1ABC DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x1B03 DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0xB7CF36369623C01ED7B2EAFC4025224E924A2836D5FB49428A0F65417586BF5C SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x1B8E JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0x1B97 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST DUP5 PUSH2 0xF7B JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH2 0x12F1 PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x322 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x322 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0x6F05B59D3B20000 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1C33 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1C25 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1D60 DUP2 PUSH2 0x1CA4 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C63 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1D88 DUP3 PUSH2 0x1D66 JUMP JUMPDEST PUSH2 0x1D95 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1DC3 DUP3 SWAP5 PUSH2 0x1D66 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1DE1 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C63 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 PUSH0 PUSH1 0x1F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP4 DUP4 PUSH1 0x44 PUSH1 0x20 SWAP7 DUP5 DUP9 DUP3 ADD SWAP5 PUSH32 0xFA399F2A00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1EBA DUP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP12 PUSH1 0x4 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x24 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY DUP6 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0x1F3A JUMPI POP POP JUMP JUMPDEST RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x1F49 DUP2 DUP5 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 ADD SWAP2 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x322 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x322 JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x322 JUMPI DUP3 MLOAD SWAP1 PUSH2 0x1F80 DUP3 PUSH2 0x1E0E JUMP JUMPDEST SWAP1 PUSH2 0x1F8E PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 DUP3 MSTORE DUP4 DUP4 DUP7 ADD ADD GT PUSH2 0x322 JUMPI DUP2 DUP4 PUSH0 SWAP6 ADD DUP5 DUP4 ADD MCOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x317 JUMPI PUSH0 SWAP3 PUSH2 0x2014 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2045 JUMPI JUMPDEST DUP2 PUSH2 0x2030 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x322 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x322 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2023 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x322 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2068 DUP2 PUSH2 0x1D66 JUMP JUMPDEST SWAP4 PUSH2 0x2076 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x322 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x209F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2091 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x6EA JUMPI JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6EA JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x6EA JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2118 PUSH5 0x174876E800 SWAP3 DUP4 SWAP3 PUSH2 0x2111 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP4 DUP4 SUB DUP4 DUP6 LT MUL PUSH2 0x20D8 JUMP JUMPDEST DIV SWAP1 PUSH2 0x20AE JUMP JUMPDEST DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6EA JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x2184 JUMPI CALLER SUB PUSH2 0x2155 JUMPI POP JUMP JUMPDEST PUSH32 0xFBECDBF400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH32 0x8BCBF35300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x21BA DUP3 PUSH2 0x243E JUMP JUMPDEST SWAP3 SWAP1 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x21CC JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x21E2 DUP4 DUP7 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND DUP2 DUP7 AND DUP1 PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP5 DUP6 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE DUP6 PUSH0 KECCAK256 SLOAD SWAP6 DUP7 PUSH2 0x2214 JUMPI JUMPDEST POP POP POP POP POP POP POP ADD PUSH2 0x21BE JUMP JUMPDEST PUSH32 0x938F3A3A03EE425CCC0F8010B0468938CBAFD3750FA43BBDF09C6F75E97E51F9 SWAP4 DUP6 PUSH0 MSTORE DUP4 MSTORE DUP1 PUSH0 KECCAK256 DUP7 PUSH0 MSTORE DUP4 MSTORE PUSH0 DUP2 DUP2 KECCAK256 SSTORE PUSH2 0x2253 DUP8 DUP14 DUP9 PUSH2 0x264B JUMP JUMPDEST MLOAD SWAP6 DUP7 MSTORE DUP11 AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2207 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x2299 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x22DA JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x40 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH5 0x174876E800 DUP1 DUP3 DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6EA JUMPI SUB PUSH2 0x232A JUMPI JUMP JUMPDEST PUSH32 0x833FB3CE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x237E PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x1D01 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2390 PUSH2 0x1FA9 JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH0 SWAP2 PUSH2 0x240F JUMPI JUMPDEST POP ISZERO PUSH2 0x23E7 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2431 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2437 JUMPI JUMPDEST PUSH2 0x2429 DUP2 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2743 JUMP JUMPDEST PUSH0 PUSH2 0x23DF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x241F JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x317 JUMPI PUSH0 SWAP4 PUSH2 0x24B4 JUMPI JUMPDEST POP POP DUP2 MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x24C7 DUP2 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 SWAP2 DUP3 DUP2 DUP4 SUB SLT PUSH2 0x322 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x322 JUMPI ADD SWAP3 DUP2 PUSH1 0x1F DUP6 ADD SLT ISZERO PUSH2 0x322 JUMPI DUP4 MLOAD PUSH2 0x24FF DUP2 PUSH2 0x1D66 JUMP JUMPDEST SWAP5 PUSH2 0x250D PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP5 DUP1 DUP8 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP4 DUP5 GT PUSH2 0x322 JUMPI DUP5 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x253A JUMPI POP POP POP POP POP SWAP1 PUSH0 DUP1 PUSH2 0x24AD JUMP JUMPDEST DUP2 MLOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x322 JUMPI DUP2 MSTORE SWAP1 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x2526 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP5 DUP2 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP5 DUP6 PUSH2 0x258B JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x25D0 DUP8 PUSH32 0x1C2887FCB98F75E66BB9A36311F2D3D22FB204E6362106F30E9DF7EAF63131B5 SWAP6 PUSH1 0x20 SWAP6 DUP9 PUSH0 MSTORE PUSH1 0x7 DUP8 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP11 PUSH0 MSTORE DUP8 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x264B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 MSTORE AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2583 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x2616 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x20EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x2616 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP2 MSTORE SWAP3 PUSH2 0x26DF SWAP3 PUSH0 SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26A8 PUSH1 0x64 DUP9 PUSH2 0x1CC0 JUMP JUMPDEST AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x273B JUMPI RETURNDATASIZE SWAP1 PUSH2 0x26C1 DUP3 PUSH2 0x1E0E JUMP JUMPDEST SWAP2 PUSH2 0x26CF PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST DUP4 PUSH2 0x275B JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x2720 JUMPI JUMPDEST POP POP PUSH2 0x26F5 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x2733 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x2743 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0x26EC JUMP JUMPDEST PUSH1 0x60 SWAP1 PUSH2 0x26D9 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x322 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x322 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2798 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x2770 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x27DE JUMPI JUMPDEST PUSH2 0x27A9 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x27A1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER 0xE0 DUP14 LOG4 SGT PUSH32 0x4CD8D7EEE489D526EBCA88D5563E48C18CE310B7909C8E79761864736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"307:1520:84:-:0;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;307:1520:84;;;;;;;;978:4:63;1347:46:35;;998:14:63;;;409::68;;307:1520:84;;;;;;;;1347:46:35;307:1520:84;;;;;998:14:63;307:1520:84;;;;;;;;;;409:14:68;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;307:1520:84;;;;;;-1:-1:-1;307:1520:84;;;;;-1:-1:-1;307:1520:84"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":7102,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_16493":{"entryPoint":7124,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":8269,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":10051,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":7180,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_bool":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":7550,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":7526,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":7694,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":8366,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":8408,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_16628":{"entryPoint":8379,"id":null,"parameterSlots":1,"returnSlots":1},"external_fun_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE":{"entryPoint":7146,"id":null,"parameterSlots":0,"returnSlots":0},"finalize_allocation":{"entryPoint":7360,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_16485":{"entryPoint":7239,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_16510":{"entryPoint":7312,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_41138":{"entryPoint":7332,"id":null,"parameterSlots":1,"returnSlots":0},"fun_authenticateCaller":{"entryPoint":9042,"id":5298,"parameterSlots":0,"returnSlots":0},"fun_collectAggregateFees":{"entryPoint":7752,"id":14500,"parameterSlots":1,"returnSlots":0},"fun_computeAggregateFeePercentage":{"entryPoint":8427,"id":15108,"parameterSlots":2,"returnSlots":1},"fun_ensureCallerIsPoolCreator":{"entryPoint":8492,"id":15144,"parameterSlots":1,"returnSlots":0},"fun_ensureOnlyVault":{"entryPoint":8807,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_ensureValidPrecision":{"entryPoint":8970,"id":15746,"parameterSlots":1,"returnSlots":0},"fun_getActionId":{"entryPoint":7425,"id":5316,"parameterSlots":1,"returnSlots":1},"fun_getAggregateFeePercentage":{"entryPoint":9700,"id":15078,"parameterSlots":1,"returnSlots":1},"fun_getAggregateFeePercentage_16615":{"entryPoint":9753,"id":15078,"parameterSlots":1,"returnSlots":1},"fun_getAuthorizer":{"entryPoint":8105,"id":18883,"parameterSlots":0,"returnSlots":1},"fun_getPoolTokensAndCount":{"entryPoint":9278,"id":15168,"parameterSlots":1,"returnSlots":2},"fun_safeTransfer":{"entryPoint":9803,"id":39386,"parameterSlots":3,"returnSlots":0},"fun_toUint64":{"entryPoint":8901,"id":43070,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":10075,"id":39838,"parameterSlots":3,"returnSlots":1},"fun_withdrawPoolCreatorFees":{"entryPoint":8624,"id":15649,"parameterSlots":2,"returnSlots":0},"fun_withdrawProtocolFees":{"entryPoint":9554,"id":15545,"parameterSlots":3,"returnSlots":0},"memory_array_index_access_contract_IERC20_dyn":{"entryPoint":7629,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"5256":[{"length":32,"start":7468}],"18834":[{"length":32,"start":4601},{"length":32,"start":8159}],"27649":[{"length":32,"start":593},{"length":32,"start":881},{"length":32,"start":1020},{"length":32,"start":1310},{"length":32,"start":1420},{"length":32,"start":2152},{"length":32,"start":2262},{"length":32,"start":3207},{"length":32,"start":3481},{"length":32,"start":3791},{"length":32,"start":5674},{"length":32,"start":6095},{"length":32,"start":6527},{"length":32,"start":6873},{"length":32,"start":7946},{"length":32,"start":8817},{"length":32,"start":9341}]},"linkReferences":{},"object":"60806040526004361015610011575f80fd5b5f803560e01c80630ddd60c614611b9d5780631377c16c14611a7e5780632772d1561461188c5780632e1d388d14611a5c5780633af527121461192457806352f125f0146118ea57806355fb76af146118cd5780635c15a0b4146118915780635e32e4e81461188c57806371447ea8146116e757806371ecc8fb1461154357806377ff76e7146113e55780637869ee18146113c957806379a2c0ac146113645780637a2b97dc146112f9578063851c1bb3146112a95780638a3c5c691461121d5780638d928af8146111da5780638df44c54146111525780638f4ab9ca146111315780639e95f3fd146110a5578063a93df2a414611040578063aa9fea8714610fe7578063aaabadc514610fbc578063abaa335614610e03578063b53a70b214610d1c578063b8abccd114610c51578063cf7b287f14610be7578063f29aaa5814610b76578063f706144514610b3f578063fa399f2a14610395578063fbfa77cf146103515763fd267f3914610185575f80fd5b3461034e57604060031936011261034e5761019e611bbe565b602435906101aa612352565b6706f05b59d3b200008211610326576101c28261230a565b6101cb81611e48565b6101d4826122c5565b916040516101e181611c47565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600260205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f0000000000000000000000000000000000000000000000000000000000000000169161027b816125e4565b833b15610322576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e92602092610308575b50604051908152a280f35b61031190611c90565b5f6102fd565b6040513d5f823e3d90fd5b5f80fd5b6004837f7e6eb7fb000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461034e578060031936011261034e5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461034e57602060031936011261034e576103af611bbe565b6103b7612267565b6040517f8f4ab9ca0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528281602481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115610b345783908492610acf575b506001600160a01b0383165f52600260205267ffffffffffffffff60405f20541690600560205260405f2054905f928215159384610ac5575b84610ab5575b6104768761243e565b94905f5b868110610826578a8a8a6001600160a01b0382165f52600360205267ffffffffffffffff60405f205416905f92600660205260405f2054925f841515948561081c575b8561080a575b6104cc8461243e565b96905f5b8881106104db578a80f35b6104e58189611dcd565b516104f3575b6001016104d0565b986001600160a01b036105068b84611dcd565b5116906105138b8a611dcd565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561080657604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201528181606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156107fb579082916107e7575b506107ba57505f99816105cf828b611dcd565b516040519081527fe505e41b0d437b47350a9990142ccf38acb11ffa0e5af8f973b9e172f3d5d5e260206001600160a01b038c1692a3831561073f57610615818a611dcd565b51861561071757610625906120bb565b6001670de0b6b3a76400006106668a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848c8783010401901515026120d8565b928301040190151502916001600160a01b0389165f52600760205260405f20815f5260205260405f2061069a8482546120ae565b90556106a6828b611dcd565b519081848103116106ea576001936106e0916001600160a01b038c165f52600860205260405f20905f5260205260405f20920382546120ae565b90555b90506104eb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001918561078457610751828b611dcd565b51906001600160a01b038a165f52600760205260405f20905f5260205261077d60405f209182546120ae565b90556106e3565b61078e828b611dcd565b51906001600160a01b038a165f52600860205260405f20905f5260205261077d60405f209182546120ae565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6107f090611c90565b61034e57808d6105bc565b6040513d84823e3d90fd5b5080fd5b905061081681836120eb565b906104c3565b82151595506104bd565b6108308187611dcd565b5161083e575b60010161047a565b6001600160a01b036108508284611dcd565b51169061085d8188611dcd565b516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561032257604051907fae63932900000000000000000000000000000000000000000000000000000000825283600483015230602483015260448201525f81606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561031757610aa6575b50818b7fae7ebad9fc3d1d17965f063fa520d393595e2ef6c8e22ae8413b60900444e19f60206001600160a01b0361093b868d611dcd565b51936040519485521692a38815610a2b576109568188611dcd565b51851561071757610966906120bb565b6001670de0b6b3a76400006109a7897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff94848b8783010401901515026120d8565b928301040190151502916001600160a01b038c165f52600760205260405f20815f5260205260405f206109db8482546120ae565b90556109e78289611dcd565b519081848103116106ea57600193610a21916001600160a01b038f165f52600860205260405f20905f5260205260405f20920382546120ae565b90555b9050610836565b60019184610a7057610a3d8289611dcd565b51906001600160a01b038d165f52600760205260405f20905f52602052610a6960405f209182546120ae565b9055610a24565b610a7a8289611dcd565b51906001600160a01b038d165f52600860205260405f20905f52602052610a6960405f209182546120ae565b610aaf90611c90565b5f610903565b50610ac083826120eb565b61046d565b8115159450610467565b9150503d8084833e610ae18183611cc0565b810190604081830312610b305780519167ffffffffffffffff92838111610b2c5781610b0e91840161204d565b926020830151908111610b2c57610b25920161204d565b905f61042e565b8580fd5b8380fd5b6040513d85823e3d90fd5b503461034e57604060031936011261034e57610b73610b5c611bbe565b610b64611bd4565b90610b6e8161212c565b6121b0565b80f35b503461034e5760208060031936011261080657610b99610b94611bbe565b61243e565b926040519260408401906040855283518092526020606086019401925b828110610bca578580868960208301520390f35b83516001600160a01b031685529381019392810192600101610bb6565b503461034e57604060031936011261034e57610c01611bbe565b610c09611bd4565b90610c12612352565b610c1b8161243e565b9290845b848110610c2a578580f35b80610c4b6001600160a01b03610c4260019486611dcd565b51168587612552565b01610c1f565b503461032257604060031936011261032257610c6b611bbe565b6001600160a01b038082165f52600560205260243560405f20557f00000000000000000000000000000000000000000000000000000000000000001690610cb1816125e4565b823b15610322576040517fa03b23ef0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152905f908290604490829084905af1801561031757610d10575080f35b610d1a9150611c90565b005b3461032257606060031936011261032257610d35611bbe565b610d3d611bd4565b604435906001600160a01b039283831680840361032257604090610d5f612352565b60448251809781937fc9c1661b000000000000000000000000000000000000000000000000000000008352818716600484015260248301527f0000000000000000000000000000000000000000000000000000000000000000165afa801561031757610dd0575b610d1a9350612552565b6040843d604011610dfb575b81610de960409383611cc0565b8101031261032257610d1a9350610dc6565b3d9150610ddc565b3461032257604060031936011261032257610e1c611bbe565b60243590610e28612352565b6706f05b59d3b200008211610f9457610e408261230a565b610e4981611e48565b610e52826122c5565b91604051610e5f81611c47565b67ffffffffffffffff80941681526020810190600182526001600160a01b039182851695865f52600360205260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f00000000000000000000000000000000000000000000000000000000000000001691610ef981612619565b833b15610322576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd92602092610f85575b50604051908152a2005b610f8e90611c90565b5f610f7b565b7fa7849e8e000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610322575f600319360112610322576020610fd6611fa9565b6001600160a01b0360405191168152f35b346103225760206003193601126103225760606001600160a01b038061100b611bbe565b165f52600460205260405f205416600560205260405f2054600660205260405f20549060405192835260208301526040820152f35b34610322576020600319360112610322576004356706f05b59d3b200008111610f94576020816110907f48c5c3ccec54c4e0ea08d83d838fa9bb725eb0b52c591cb00bd6e63bca8c44f69361230a565b611098612352565b80600155604051908152a1005b3461032257602080600319360112610322576110bf611bbe565b906110c98261243e565b906110d382611d7e565b925f946001600160a01b03809116955b8481106110fc57604051806110f88882611c0c565b0390f35b600190875f526008845260405f20836111158388611dcd565b51165f52845260405f205461112a8289611dcd565b52016110e3565b3461032257602060031936011261032257610d1a61114d611bbe565b611e48565b34610322576020806003193601126103225761116c611bbe565b906111768261243e565b9061118082611d7e565b925f946001600160a01b03809116955b8481106111a557604051806110f88882611c0c565b600190875f526007845260405f20836111be8388611dcd565b51165f52845260405f20546111d38289611dcd565b5201611190565b34610322575f6003193601126103225760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610322576020600319360112610322576004356706f05b59d3b2000081116112815760208161126d7fbf5ac0fc89bbf8819be79f280146b65ea2af2a9705cd9cfe0c9d93f6e87f307d9361230a565b611275612352565b805f55604051908152a1005b7f7e6eb7fb000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610322576020600319360112610322576004357fffffffff0000000000000000000000000000000000000000000000000000000081168103610322576112f1602091611d01565b604051908152f35b34610322576020600319360112610322576001600160a01b0361131a611bbe565b165f526003602052602060405f206040519061133582611c47565b5467ffffffffffffffff811680835260ff604092831c1615159390920183905280519182526020820192909252f35b346103225760406003193601126103225761137d611bbe565b611385611bd4565b906001600160a01b038091165f52600460205260405f2091167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790555f80f35b34610322575f6003193601126103225760205f54604051908152f35b34610322576060600319360112610322576113fe611bbe565b611406611bd4565b90604435908115159081830361032257604093611421612267565b6001600160a01b0380921690815f5260209260048452865f2091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055835f1461153b575f935b15611532575f925b61147e856122c5565b865161148981611c47565b67ffffffffffffffff809216815284810191838352845f526002865280895f20925116918054935115158a1b937fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000938468ff00000000000000008097169216171790556114f5876122c5565b94818a519661150388611c47565b1686528686019485525f5260038652885f2094511691845493511515891b169216171790558351928352820152f35b60015492611475565b5f549361146d565b34610322576020806003193601126103225761155d611bbe565b61156681611e48565b6001600160a01b039182821692835f526002825260405f20906040519161158c83611c47565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101525f5493816116dc575b506115bd57005b6115c6836122c5565b9080604051926115d584611c47565b168252848201905f8252875f526002865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f00000000000000000000000000000000000000000000000000000000000000001692611654816125e4565b843b15610322576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af1928315610317577f97cff4b6e6d80e307faab8b730d9f69264e860f2e0e10cfb8cdaf8a2f44e839e93610f855750604051908152a2005b9050831415876115b6565b346103225760208060031936011261032257611701611bbe565b61170a81611e48565b6001600160a01b039182821692835f526003825260405f20906040519161173083611c47565b549167ffffffffffffffff9060ff8285169485835260401c1615908582159101526001549381611881575b5061176257005b61176b836122c5565b90806040519261177a84611c47565b168252848201905f8252875f526003865260405f209251167fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000068ff000000000000000084549351151560401b169216171790557f000000000000000000000000000000000000000000000000000000000000000016926117f981612619565b843b15610322576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152925f908490604490829084905af1928315610317577faf47449d1c3597ccc9f5ec3acad03cef57aa90a719000441b320687087948efd93610f855750604051908152a2005b90508314158761175b565b611bea565b34610322576020600319360112610322576001600160a01b036118b2611bbe565b165f526002602052602060405f206040519061133582611c47565b34610322575f600319360112610322576020600154604051908152f35b3461032257602060031936011261032257610d1a611906611bbe565b6001600160a01b038082165f52600460205260405f205416906121b0565b346103225760406003193601126103225761193d611bbe565b6024359061194a8161212c565b670de0ad9b58f160008211611a345761196281611e48565b6001600160a01b039182821692835f5260066020528160405f20557f000000000000000000000000000000000000000000000000000000000000000016916119a981612619565b833b15610322576040517fe253670a0000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577f47f70ddbc624c299cef7841aaea0a86b677c800203e953104e958c9ec9bdab3492602092610f855750604051908152a2005b7f0370da74000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610322575f600319360112610322576020604051670de0ad9b58f160008152f35b3461032257604060031936011261032257611a97611bbe565b60243590611aa48161212c565b670de0ad9b58f160008211611a3457611abc81611e48565b6001600160a01b039182821692835f5260056020528160405f20557f00000000000000000000000000000000000000000000000000000000000000001691611b03816125e4565b833b15610322576040517f5e0b06f40000000000000000000000000000000000000000000000000000000081526001600160a01b039290921660048301526024820152915f908390604490829084905af1908115610317577fb7cf36369623c01ed7b2eafc4025224e924a2836d5fb49428a0f65417586bf5c92602092611b8e5750604051908152a2005b611b9790611c90565b84610f7b565b346103225760406003193601126103225760206112f16024356004356120eb565b600435906001600160a01b038216820361032257565b602435906001600160a01b038216820361032257565b34610322575f6003193601126103225760206040516706f05b59d3b200008152f35b60209060206040818301928281528551809452019301915f5b828110611c33575050505090565b835185529381019392810192600101611c25565b6040810190811067ffffffffffffffff821117611c6357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff8111611c6357604052565b6060810190811067ffffffffffffffff821117611c6357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611c6357604052565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f0000000000000000000000000000000000000000000000000000000000000000845216604082015260248152611d6081611ca4565b51902090565b67ffffffffffffffff8111611c635760051b60200190565b90611d8882611d66565b611d956040519182611cc0565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611dc38294611d66565b0190602036910137565b8051821015611de15760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b67ffffffffffffffff8111611c6357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0905f601f6001600160a01b036040519383604460209684888201947ffa399f2a00000000000000000000000000000000000000000000000000000000865216602482015260248152611eba81611ca4565b604051988996879586937f48c894910000000000000000000000000000000000000000000000000000000085528b60048601525180918160248701528686015e85858286010152011681010301927f0000000000000000000000000000000000000000000000000000000000000000165af1801561031757611f3a575050565b3d805f843e611f498184611cc0565b82019181818403126103225780519067ffffffffffffffff821161032257019180601f8401121561032257825190611f8082611e0e565b90611f8e6040519283611cc0565b8282528383860101116103225781835f95018483015e010152565b6040517faaabadc50000000000000000000000000000000000000000000000000000000081526001600160a01b036020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610317575f9261201457505090565b9091506020813d602011612045575b8161203060209383611cc0565b81010312610322575190811681036103225790565b3d9150612023565b9080601f830112156103225781519060209161206881611d66565b936120766040519586611cc0565b81855260208086019260051b82010192831161032257602001905b82821061209f575050505090565b81518152908301908301612091565b919082018092116106ea57565b90670de0b6b3a7640000918281029281840414901517156106ea57565b818102929181159184041417156106ea57565b9061211864174876e800928392612111670de0b6b3a764000091838303838510026120d8565b04906120ae565b048181029181830414901517156106ea5790565b6001600160a01b0380911690815f52600460205260405f20541680156121845733036121555750565b7ffbecdbf4000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b507f8bcbf353000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906121ba8261243e565b92905f5b8481106121cc575050505050565b6001906001600160a01b03806121e28386611dcd565b5116818616805f5260086020818152604094855f20855f528252855f20549586612214575b50505050505050016121be565b7f938f3a3a03ee425ccc0f8010b0468938cbafd3750fa43bbdf09c6f75e97e51f993855f528352805f20865f5283525f81812055612253878d8861264b565b519586528a1694a45f808080808080612207565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361229957565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b67ffffffffffffffff908181116122da571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52604060045260245260445ffd5b64174876e8008082048181029181830414901517156106ea570361232a57565b7f833fb3ce000000000000000000000000000000000000000000000000000000005f5260045ffd5b61237e7fffffffff000000000000000000000000000000000000000000000000000000005f3516611d01565b60206001600160a01b03612390611fa9565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa908115610317575f9161240f575b50156123e757565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b612431915060203d602011612437575b6124298183611cc0565b810190612743565b5f6123df565b503d61241f565b906001600160a01b0380604051937fca4f28030000000000000000000000000000000000000000000000000000000085521660048401525f83602481847f0000000000000000000000000000000000000000000000000000000000000000165afa928315610317575f936124b4575b5050815190565b909192503d805f833e6124c78183611cc0565b810160209182818303126103225780519067ffffffffffffffff821161032257019281601f850112156103225783516124ff81611d66565b9461250d6040519687611cc0565b818652848087019260051b820101938411610322578401905b83821061253a575050505050905f806124ad565b81518381168103610322578152908401908401612526565b91906001600160a01b0380931690815f52600760205260405f209284811693845f5260205260405f2054948561258b575b505050505050565b826125d0877f1c2887fcb98f75e66bb9a36311f2d3d22fb204e6362106f30e9df7eaf63131b595602095885f526007875260405f208a5f5287525f604081205561264b565b6040519687521694a45f8080808080612583565b6001600160a01b03165f52600260205261261667ffffffffffffffff60405f205416600560205260405f2054906120eb565b90565b6001600160a01b03165f52600360205261261667ffffffffffffffff60405f205416600660205260405f2054906120eb565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082019081526001600160a01b039384166024830152604480830195909552938152926126df925f92839291906126a8606488611cc0565b1694519082865af13d1561273b573d906126c182611e0e565b916126cf6040519384611cc0565b82523d5f602084013e5b8361275b565b8051908115159182612720575b50506126f55750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6127339250602080918301019101612743565b155f806126ec565b6060906126d9565b90816020910312610322575180151581036103225790565b90612798575080511561277057805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806127de575b6127a9575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b156127a156fea264697066735822122033e08da4137f4cd8d7eee489d526ebca88d5563e48c18ce310b7909c8e79761864736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDDD60C6 EQ PUSH2 0x1B9D JUMPI DUP1 PUSH4 0x1377C16C EQ PUSH2 0x1A7E JUMPI DUP1 PUSH4 0x2772D156 EQ PUSH2 0x188C JUMPI DUP1 PUSH4 0x2E1D388D EQ PUSH2 0x1A5C JUMPI DUP1 PUSH4 0x3AF52712 EQ PUSH2 0x1924 JUMPI DUP1 PUSH4 0x52F125F0 EQ PUSH2 0x18EA JUMPI DUP1 PUSH4 0x55FB76AF EQ PUSH2 0x18CD JUMPI DUP1 PUSH4 0x5C15A0B4 EQ PUSH2 0x1891 JUMPI DUP1 PUSH4 0x5E32E4E8 EQ PUSH2 0x188C JUMPI DUP1 PUSH4 0x71447EA8 EQ PUSH2 0x16E7 JUMPI DUP1 PUSH4 0x71ECC8FB EQ PUSH2 0x1543 JUMPI DUP1 PUSH4 0x77FF76E7 EQ PUSH2 0x13E5 JUMPI DUP1 PUSH4 0x7869EE18 EQ PUSH2 0x13C9 JUMPI DUP1 PUSH4 0x79A2C0AC EQ PUSH2 0x1364 JUMPI DUP1 PUSH4 0x7A2B97DC EQ PUSH2 0x12F9 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x12A9 JUMPI DUP1 PUSH4 0x8A3C5C69 EQ PUSH2 0x121D JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x11DA JUMPI DUP1 PUSH4 0x8DF44C54 EQ PUSH2 0x1152 JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0x1131 JUMPI DUP1 PUSH4 0x9E95F3FD EQ PUSH2 0x10A5 JUMPI DUP1 PUSH4 0xA93DF2A4 EQ PUSH2 0x1040 JUMPI DUP1 PUSH4 0xAA9FEA87 EQ PUSH2 0xFE7 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xFBC JUMPI DUP1 PUSH4 0xABAA3356 EQ PUSH2 0xE03 JUMPI DUP1 PUSH4 0xB53A70B2 EQ PUSH2 0xD1C JUMPI DUP1 PUSH4 0xB8ABCCD1 EQ PUSH2 0xC51 JUMPI DUP1 PUSH4 0xCF7B287F EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xF29AAA58 EQ PUSH2 0xB76 JUMPI DUP1 PUSH4 0xF7061445 EQ PUSH2 0xB3F JUMPI DUP1 PUSH4 0xFA399F2A EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0x351 JUMPI PUSH4 0xFD267F39 EQ PUSH2 0x185 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0x19E PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1AA PUSH2 0x2352 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0x326 JUMPI PUSH2 0x1C2 DUP3 PUSH2 0x230A JUMP JUMPDEST PUSH2 0x1CB DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH2 0x1D4 DUP3 PUSH2 0x22C5 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0x1E1 DUP2 PUSH2 0x1C47 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x27B DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x308 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH2 0x311 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH0 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x7E6EB7FB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0x3AF PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x3B7 PUSH2 0x2267 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8F4AB9CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE DUP3 DUP2 PUSH1 0x24 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB34 JUMPI DUP4 SWAP1 DUP5 SWAP3 PUSH2 0xACF JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH0 SWAP3 DUP3 ISZERO ISZERO SWAP4 DUP5 PUSH2 0xAC5 JUMPI JUMPDEST DUP5 PUSH2 0xAB5 JUMPI JUMPDEST PUSH2 0x476 DUP8 PUSH2 0x243E JUMP JUMPDEST SWAP5 SWAP1 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x826 JUMPI DUP11 DUP11 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH0 SWAP3 PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 PUSH0 DUP5 ISZERO ISZERO SWAP5 DUP6 PUSH2 0x81C JUMPI JUMPDEST DUP6 PUSH2 0x80A JUMPI JUMPDEST PUSH2 0x4CC DUP5 PUSH2 0x243E JUMP JUMPDEST SWAP7 SWAP1 PUSH0 JUMPDEST DUP9 DUP2 LT PUSH2 0x4DB JUMPI DUP11 DUP1 RETURN JUMPDEST PUSH2 0x4E5 DUP2 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH2 0x4F3 JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x4D0 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x506 DUP12 DUP5 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x513 DUP12 DUP11 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x806 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE DUP2 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x7FB JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x7E7 JUMPI JUMPDEST POP PUSH2 0x7BA JUMPI POP PUSH0 SWAP10 DUP2 PUSH2 0x5CF DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xE505E41B0D437B47350A9990142CCF38ACB11FFA0E5AF8F973B9E172F3D5D5E2 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP3 LOG3 DUP4 ISZERO PUSH2 0x73F JUMPI PUSH2 0x615 DUP2 DUP11 PUSH2 0x1DCD JUMP JUMPDEST MLOAD DUP7 ISZERO PUSH2 0x717 JUMPI PUSH2 0x625 SWAP1 PUSH2 0x20BB JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x666 DUP11 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP13 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x20D8 JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x69A DUP5 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x6A6 DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6EA JUMPI PUSH1 0x1 SWAP4 PUSH2 0x6E0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x4EB JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP2 DUP6 PUSH2 0x784 JUMPI PUSH2 0x751 DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x77D PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x78E DUP3 DUP12 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0x77D PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST DUP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x24 SWAP3 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x7F0 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH2 0x34E JUMPI DUP1 DUP14 PUSH2 0x5BC JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST SWAP1 POP PUSH2 0x816 DUP2 DUP4 PUSH2 0x20EB JUMP JUMPDEST SWAP1 PUSH2 0x4C3 JUMP JUMPDEST DUP3 ISZERO ISZERO SWAP6 POP PUSH2 0x4BD JUMP JUMPDEST PUSH2 0x830 DUP2 DUP8 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH2 0x83E JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0x47A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x850 DUP3 DUP5 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x85D DUP2 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP4 PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0xAA6 JUMPI JUMPDEST POP DUP2 DUP12 PUSH32 0xAE7EBAD9FC3D1D17965F063FA520D393595E2EF6C8E22AE8413B60900444E19F PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x93B DUP7 DUP14 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND SWAP3 LOG3 DUP9 ISZERO PUSH2 0xA2B JUMPI PUSH2 0x956 DUP2 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD DUP6 ISZERO PUSH2 0x717 JUMPI PUSH2 0x966 SWAP1 PUSH2 0x20BB JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A7 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP5 DUP12 DUP8 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x20D8 JUMP JUMPDEST SWAP3 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x9DB DUP5 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x9E7 DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 DUP2 DUP5 DUP2 SUB GT PUSH2 0x6EA JUMPI PUSH1 0x1 SWAP4 PUSH2 0xA21 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 SUB DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE JUMPDEST SWAP1 POP PUSH2 0x836 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP5 PUSH2 0xA70 JUMPI PUSH2 0xA3D DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA69 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST SWAP1 SSTORE PUSH2 0xA24 JUMP JUMPDEST PUSH2 0xA7A DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH2 0xA69 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x20AE JUMP JUMPDEST PUSH2 0xAAF SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH0 PUSH2 0x903 JUMP JUMPDEST POP PUSH2 0xAC0 DUP4 DUP3 PUSH2 0x20EB JUMP JUMPDEST PUSH2 0x46D JUMP JUMPDEST DUP2 ISZERO ISZERO SWAP5 POP PUSH2 0x467 JUMP JUMPDEST SWAP2 POP POP RETURNDATASIZE DUP1 DUP5 DUP4 RETURNDATACOPY PUSH2 0xAE1 DUP2 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH1 0x40 DUP2 DUP4 SUB SLT PUSH2 0xB30 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0xB2C JUMPI DUP2 PUSH2 0xB0E SWAP2 DUP5 ADD PUSH2 0x204D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0xB2C JUMPI PUSH2 0xB25 SWAP3 ADD PUSH2 0x204D JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x42E JUMP JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0xB73 PUSH2 0xB5C PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0xB64 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH2 0xB6E DUP2 PUSH2 0x212C JUMP JUMPDEST PUSH2 0x21B0 JUMP JUMPDEST DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x806 JUMPI PUSH2 0xB99 PUSH2 0xB94 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x243E JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x40 DUP5 ADD SWAP1 PUSH1 0x40 DUP6 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x20 PUSH1 0x60 DUP7 ADD SWAP5 ADD SWAP3 JUMPDEST DUP3 DUP2 LT PUSH2 0xBCA JUMPI DUP6 DUP1 DUP7 DUP10 PUSH1 0x20 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xBB6 JUMP JUMPDEST POP CALLVALUE PUSH2 0x34E JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x34E JUMPI PUSH2 0xC01 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0xC09 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH2 0xC12 PUSH2 0x2352 JUMP JUMPDEST PUSH2 0xC1B DUP2 PUSH2 0x243E JUMP JUMPDEST SWAP3 SWAP1 DUP5 JUMPDEST DUP5 DUP2 LT PUSH2 0xC2A JUMPI DUP6 DUP1 RETURN JUMPDEST DUP1 PUSH2 0xC4B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC42 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND DUP6 DUP8 PUSH2 0x2552 JUMP JUMPDEST ADD PUSH2 0xC1F JUMP JUMPDEST POP CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xC6B PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP1 PUSH2 0xCB1 DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP3 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA03B23EF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP1 PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0xD10 JUMPI POP DUP1 RETURN JUMPDEST PUSH2 0xD1A SWAP2 POP PUSH2 0x1C90 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xD35 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0xD3D PUSH2 0x1BD4 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP4 AND DUP1 DUP5 SUB PUSH2 0x322 JUMPI PUSH1 0x40 SWAP1 PUSH2 0xD5F PUSH2 0x2352 JUMP JUMPDEST PUSH1 0x44 DUP3 MLOAD DUP1 SWAP8 DUP2 SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP2 DUP8 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0xDD0 JUMPI JUMPDEST PUSH2 0xD1A SWAP4 POP PUSH2 0x2552 JUMP JUMPDEST PUSH1 0x40 DUP5 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0xDFB JUMPI JUMPDEST DUP2 PUSH2 0xDE9 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x322 JUMPI PUSH2 0xD1A SWAP4 POP PUSH2 0xDC6 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDDC JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xE1C PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xE28 PUSH2 0x2352 JUMP JUMPDEST PUSH8 0x6F05B59D3B20000 DUP3 GT PUSH2 0xF94 JUMPI PUSH2 0xE40 DUP3 PUSH2 0x230A JUMP JUMPDEST PUSH2 0xE49 DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH2 0xE52 DUP3 PUSH2 0x22C5 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD PUSH2 0xE5F DUP2 PUSH2 0x1C47 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 PUSH1 0x1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP6 AND SWAP6 DUP7 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0xEF9 DUP2 PUSH2 0x2619 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP3 PUSH1 0x20 SWAP3 PUSH2 0xF85 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0xF8E SWAP1 PUSH2 0x1C90 JUMP JUMPDEST PUSH0 PUSH2 0xF7B JUMP JUMPDEST PUSH32 0xA7849E8E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH2 0xFD6 PUSH2 0x1FA9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x100B PUSH2 0x1BBE JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0xF94 JUMPI PUSH1 0x20 DUP2 PUSH2 0x1090 PUSH32 0x48C5C3CCEC54C4E0EA08D83D838FA9BB725EB0B52C591CB00BD6E63BCA8C44F6 SWAP4 PUSH2 0x230A JUMP JUMPDEST PUSH2 0x1098 PUSH2 0x2352 JUMP JUMPDEST DUP1 PUSH1 0x1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x10BF PUSH2 0x1BBE JUMP JUMPDEST SWAP1 PUSH2 0x10C9 DUP3 PUSH2 0x243E JUMP JUMPDEST SWAP1 PUSH2 0x10D3 DUP3 PUSH2 0x1D7E JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0x10FC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x10F8 DUP9 DUP3 PUSH2 0x1C0C JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x8 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0x1115 DUP4 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x112A DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MSTORE ADD PUSH2 0x10E3 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xD1A PUSH2 0x114D PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1E48 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x116C PUSH2 0x1BBE JUMP JUMPDEST SWAP1 PUSH2 0x1176 DUP3 PUSH2 0x243E JUMP JUMPDEST SWAP1 PUSH2 0x1180 DUP3 PUSH2 0x1D7E JUMP JUMPDEST SWAP3 PUSH0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP6 JUMPDEST DUP5 DUP2 LT PUSH2 0x11A5 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x10F8 DUP9 DUP3 PUSH2 0x1C0C JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP8 PUSH0 MSTORE PUSH1 0x7 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP4 PUSH2 0x11BE DUP4 DUP9 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x11D3 DUP3 DUP10 PUSH2 0x1DCD JUMP JUMPDEST MSTORE ADD PUSH2 0x1190 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0x6F05B59D3B20000 DUP2 GT PUSH2 0x1281 JUMPI PUSH1 0x20 DUP2 PUSH2 0x126D PUSH32 0xBF5AC0FC89BBF8819BE79F280146B65EA2AF2A9705CD9CFE0C9D93F6E87F307D SWAP4 PUSH2 0x230A JUMP JUMPDEST PUSH2 0x1275 PUSH2 0x2352 JUMP JUMPDEST DUP1 PUSH0 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 STOP JUMPDEST PUSH32 0x7E6EB7FB00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x322 JUMPI PUSH2 0x12F1 PUSH1 0x20 SWAP2 PUSH2 0x1D01 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x131A PUSH2 0x1BBE JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1335 DUP3 PUSH2 0x1C47 JUMP JUMPDEST SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0xFF PUSH1 0x40 SWAP3 DUP4 SHR AND ISZERO ISZERO SWAP4 SWAP1 SWAP3 ADD DUP4 SWAP1 MSTORE DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x137D PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1385 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x13FE PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1406 PUSH2 0x1BD4 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO SWAP1 DUP2 DUP4 SUB PUSH2 0x322 JUMPI PUSH1 0x40 SWAP4 PUSH2 0x1421 PUSH2 0x2267 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x4 DUP5 MSTORE DUP7 PUSH0 KECCAK256 SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE DUP4 PUSH0 EQ PUSH2 0x153B JUMPI PUSH0 SWAP4 JUMPDEST ISZERO PUSH2 0x1532 JUMPI PUSH0 SWAP3 JUMPDEST PUSH2 0x147E DUP6 PUSH2 0x22C5 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x1489 DUP2 PUSH2 0x1C47 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP2 MSTORE DUP5 DUP2 ADD SWAP2 DUP4 DUP4 MSTORE DUP5 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE DUP1 DUP10 PUSH0 KECCAK256 SWAP3 MLOAD AND SWAP2 DUP1 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP11 SHL SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 SWAP4 DUP5 PUSH9 0xFF0000000000000000 DUP1 SWAP8 AND SWAP3 AND OR OR SWAP1 SSTORE PUSH2 0x14F5 DUP8 PUSH2 0x22C5 JUMP JUMPDEST SWAP5 DUP2 DUP11 MLOAD SWAP7 PUSH2 0x1503 DUP9 PUSH2 0x1C47 JUMP JUMPDEST AND DUP7 MSTORE DUP7 DUP7 ADD SWAP5 DUP6 MSTORE PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE DUP9 PUSH0 KECCAK256 SWAP5 MLOAD AND SWAP2 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO DUP10 SHL AND SWAP3 AND OR OR SWAP1 SSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 SLOAD SWAP3 PUSH2 0x1475 JUMP JUMPDEST PUSH0 SLOAD SWAP4 PUSH2 0x146D JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x155D PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x1566 DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x158C DUP4 PUSH2 0x1C47 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH0 SLOAD SWAP4 DUP2 PUSH2 0x16DC JUMPI JUMPDEST POP PUSH2 0x15BD JUMPI STOP JUMPDEST PUSH2 0x15C6 DUP4 PUSH2 0x22C5 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x15D5 DUP5 PUSH2 0x1C47 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x2 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x1654 DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x317 JUMPI PUSH32 0x97CFF4B6E6D80E307FAAB8B730D9F69264E860F2E0E10CFB8CDAF8A2F44E839E SWAP4 PUSH2 0xF85 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x15B6 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x1701 PUSH2 0x1BBE JUMP JUMPDEST PUSH2 0x170A DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x3 DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1730 DUP4 PUSH2 0x1C47 JUMP JUMPDEST SLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0xFF DUP3 DUP6 AND SWAP5 DUP6 DUP4 MSTORE PUSH1 0x40 SHR AND ISZERO SWAP1 DUP6 DUP3 ISZERO SWAP2 ADD MSTORE PUSH1 0x1 SLOAD SWAP4 DUP2 PUSH2 0x1881 JUMPI JUMPDEST POP PUSH2 0x1762 JUMPI STOP JUMPDEST PUSH2 0x176B DUP4 PUSH2 0x22C5 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x177A DUP5 PUSH2 0x1C47 JUMP JUMPDEST AND DUP3 MSTORE DUP5 DUP3 ADD SWAP1 PUSH0 DUP3 MSTORE DUP8 PUSH0 MSTORE PUSH1 0x3 DUP7 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 MLOAD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 PUSH9 0xFF0000000000000000 DUP5 SLOAD SWAP4 MLOAD ISZERO ISZERO PUSH1 0x40 SHL AND SWAP3 AND OR OR SWAP1 SSTORE PUSH32 0x0 AND SWAP3 PUSH2 0x17F9 DUP2 PUSH2 0x2619 JUMP JUMPDEST DUP5 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP3 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x317 JUMPI PUSH32 0xAF47449D1C3597CCC9F5EC3ACAD03CEF57AA90A719000441B320687087948EFD SWAP4 PUSH2 0xF85 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST SWAP1 POP DUP4 EQ ISZERO DUP8 PUSH2 0x175B JUMP JUMPDEST PUSH2 0x1BEA JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x18B2 PUSH2 0x1BBE JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1335 DUP3 PUSH2 0x1C47 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0xD1A PUSH2 0x1906 PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x21B0 JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x193D PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x194A DUP2 PUSH2 0x212C JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x1A34 JUMPI PUSH2 0x1962 DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x19A9 DUP2 PUSH2 0x2619 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE253670A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0x47F70DDBC624C299CEF7841AAEA0A86B677C800203E953104E958C9EC9BDAB34 SWAP3 PUSH1 0x20 SWAP3 PUSH2 0xF85 JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH32 0x370DA7400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0xDE0AD9B58F16000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH2 0x1A97 PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1AA4 DUP2 PUSH2 0x212C JUMP JUMPDEST PUSH8 0xDE0AD9B58F16000 DUP3 GT PUSH2 0x1A34 JUMPI PUSH2 0x1ABC DUP2 PUSH2 0x1E48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP3 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x1B03 DUP2 PUSH2 0x25E4 JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH32 0x5E0B06F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE SWAP2 PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH32 0xB7CF36369623C01ED7B2EAFC4025224E924A2836D5FB49428A0F65417586BF5C SWAP3 PUSH1 0x20 SWAP3 PUSH2 0x1B8E JUMPI POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 STOP JUMPDEST PUSH2 0x1B97 SWAP1 PUSH2 0x1C90 JUMP JUMPDEST DUP5 PUSH2 0xF7B JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH2 0x12F1 PUSH1 0x24 CALLDATALOAD PUSH1 0x4 CALLDATALOAD PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x322 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x322 JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x322 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x322 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH8 0x6F05B59D3B20000 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1C33 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1C25 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1C63 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1D60 DUP2 PUSH2 0x1CA4 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C63 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1D88 DUP3 PUSH2 0x1D66 JUMP JUMPDEST PUSH2 0x1D95 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x1DC3 DUP3 SWAP5 PUSH2 0x1D66 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1DE1 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1C63 JUMPI PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 PUSH0 PUSH1 0x1F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP4 DUP4 PUSH1 0x44 PUSH1 0x20 SWAP7 DUP5 DUP9 DUP3 ADD SWAP5 PUSH32 0xFA399F2A00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1EBA DUP2 PUSH2 0x1CA4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP6 MSTORE DUP12 PUSH1 0x4 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x24 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY DUP6 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x317 JUMPI PUSH2 0x1F3A JUMPI POP POP JUMP JUMPDEST RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x1F49 DUP2 DUP5 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 ADD SWAP2 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x322 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x322 JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x322 JUMPI DUP3 MLOAD SWAP1 PUSH2 0x1F80 DUP3 PUSH2 0x1E0E JUMP JUMPDEST SWAP1 PUSH2 0x1F8E PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 DUP3 MSTORE DUP4 DUP4 DUP7 ADD ADD GT PUSH2 0x322 JUMPI DUP2 DUP4 PUSH0 SWAP6 ADD DUP5 DUP4 ADD MCOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x317 JUMPI PUSH0 SWAP3 PUSH2 0x2014 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2045 JUMPI JUMPDEST DUP2 PUSH2 0x2030 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x322 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x322 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2023 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x322 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2068 DUP2 PUSH2 0x1D66 JUMP JUMPDEST SWAP4 PUSH2 0x2076 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x322 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x209F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2091 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x6EA JUMPI JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6EA JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x6EA JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2118 PUSH5 0x174876E800 SWAP3 DUP4 SWAP3 PUSH2 0x2111 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP4 DUP4 SUB DUP4 DUP6 LT MUL PUSH2 0x20D8 JUMP JUMPDEST DIV SWAP1 PUSH2 0x20AE JUMP JUMPDEST DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6EA JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND DUP1 ISZERO PUSH2 0x2184 JUMPI CALLER SUB PUSH2 0x2155 JUMPI POP JUMP JUMPDEST PUSH32 0xFBECDBF400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH32 0x8BCBF35300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x21BA DUP3 PUSH2 0x243E JUMP JUMPDEST SWAP3 SWAP1 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x21CC JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0x21E2 DUP4 DUP7 PUSH2 0x1DCD JUMP JUMPDEST MLOAD AND DUP2 DUP7 AND DUP1 PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP5 DUP6 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE DUP6 PUSH0 KECCAK256 SLOAD SWAP6 DUP7 PUSH2 0x2214 JUMPI JUMPDEST POP POP POP POP POP POP POP ADD PUSH2 0x21BE JUMP JUMPDEST PUSH32 0x938F3A3A03EE425CCC0F8010B0468938CBAFD3750FA43BBDF09C6F75E97E51F9 SWAP4 DUP6 PUSH0 MSTORE DUP4 MSTORE DUP1 PUSH0 KECCAK256 DUP7 PUSH0 MSTORE DUP4 MSTORE PUSH0 DUP2 DUP2 KECCAK256 SSTORE PUSH2 0x2253 DUP8 DUP14 DUP9 PUSH2 0x264B JUMP JUMPDEST MLOAD SWAP6 DUP7 MSTORE DUP11 AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2207 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x2299 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x22DA JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x40 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH5 0x174876E800 DUP1 DUP3 DIV DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x6EA JUMPI SUB PUSH2 0x232A JUMPI JUMP JUMPDEST PUSH32 0x833FB3CE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x237E PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x1D01 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2390 PUSH2 0x1FA9 JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x317 JUMPI PUSH0 SWAP2 PUSH2 0x240F JUMPI JUMPDEST POP ISZERO PUSH2 0x23E7 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2431 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2437 JUMPI JUMPDEST PUSH2 0x2429 DUP2 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2743 JUMP JUMPDEST PUSH0 PUSH2 0x23DF JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x241F JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x317 JUMPI PUSH0 SWAP4 PUSH2 0x24B4 JUMPI JUMPDEST POP POP DUP2 MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x24C7 DUP2 DUP4 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 SWAP2 DUP3 DUP2 DUP4 SUB SLT PUSH2 0x322 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x322 JUMPI ADD SWAP3 DUP2 PUSH1 0x1F DUP6 ADD SLT ISZERO PUSH2 0x322 JUMPI DUP4 MLOAD PUSH2 0x24FF DUP2 PUSH2 0x1D66 JUMP JUMPDEST SWAP5 PUSH2 0x250D PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x1CC0 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP5 DUP1 DUP8 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP4 DUP5 GT PUSH2 0x322 JUMPI DUP5 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x253A JUMPI POP POP POP POP POP SWAP1 PUSH0 DUP1 PUSH2 0x24AD JUMP JUMPDEST DUP2 MLOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x322 JUMPI DUP2 MSTORE SWAP1 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x2526 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP5 DUP2 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP5 DUP6 PUSH2 0x258B JUMPI JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH2 0x25D0 DUP8 PUSH32 0x1C2887FCB98F75E66BB9A36311F2D3D22FB204E6362106F30E9DF7EAF63131B5 SWAP6 PUSH1 0x20 SWAP6 DUP9 PUSH0 MSTORE PUSH1 0x7 DUP8 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP11 PUSH0 MSTORE DUP8 MSTORE PUSH0 PUSH1 0x40 DUP2 KECCAK256 SSTORE PUSH2 0x264B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 MSTORE AND SWAP5 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x2583 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH2 0x2616 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x20EB JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x2616 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP2 MSTORE SWAP3 PUSH2 0x26DF SWAP3 PUSH0 SWAP3 DUP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26A8 PUSH1 0x64 DUP9 PUSH2 0x1CC0 JUMP JUMPDEST AND SWAP5 MLOAD SWAP1 DUP3 DUP7 GAS CALL RETURNDATASIZE ISZERO PUSH2 0x273B JUMPI RETURNDATASIZE SWAP1 PUSH2 0x26C1 DUP3 PUSH2 0x1E0E JUMP JUMPDEST SWAP2 PUSH2 0x26CF PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x1CC0 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMPDEST DUP4 PUSH2 0x275B JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0x2720 JUMPI JUMPDEST POP POP PUSH2 0x26F5 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x2733 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x2743 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0x26EC JUMP JUMPDEST PUSH1 0x60 SWAP1 PUSH2 0x26D9 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x322 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x322 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2798 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x2770 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x27DE JUMPI JUMPDEST PUSH2 0x27A9 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x27A1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER 0xE0 DUP14 LOG4 SGT PUSH32 0x4CD8D7EEE489D526EBCA88D5563E48C18CE310B7909C8E79761864736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"307:1520:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;1525:73:35;;;:::i;:::-;4690:5:60;6787:55;;6783:127;;6941:20;;;:::i;:::-;7715:4;;;:::i;:::-;26199:39;;;:::i;:::-;307:1520:84;;;;;;:::i;:::-;;;;;;;26156:129:60;;;307:1520:84;21225:4:60;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;;;;;;26116:31:60;26156:129;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;26380:6:60;307:1520:84;26426:54:60;;;;:::i;:::-;26380:101;;;;;307:1520:84;;;26380:101:60;;-1:-1:-1;;;;;307:1520:84;;;;;26380:101:60;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;26380:101:60;;;;;;;26497:68;26380:101;26156:129;26380:101;;;307:1520:84;;;;;;;26497:68:60;307:1520:84;;26380:101:60;;;;:::i;:::-;307:1520:84;26380:101:60;;;307:1520:84;;;;;;;;;26380:101:60;307:1520:84;;;6783:127:60;307:1520:84;6865:34:60;;;;;307:1520:84;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;;-1:-1:-1;;;;;8000:6:60;307:1520:84;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;436:67:68;;:::i;:::-;307:1520:84;;;8674:33:60;;-1:-1:-1;;;;;307:1520:84;;;8674:33:60;;307:1520:84;8674:6:60;;307:1520:84;8674:6:60;;-1:-1:-1;;;;;8674:6:60;307:1520:84;8674:33:60;;;;;;;;;;;;;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;;;;;10665:30:60;307:1520:84;;;;;;10764:30:60;307:1520:84;10828:28:60;;;;:57;;;;307:1520:84;10895:199:60;;;307:1520:84;11154:28:60;;;:::i;:::-;11197:13;;307:1520:84;11212:13:60;;;;;;10420:20;;;-1:-1:-1;;;;;307:1520:84;;;;10521:32:60;307:1520:84;;;;;;;;10619:134:60;307:1520:84;;10716:31:60;307:1520:84;;;;;;10764:30:60;307:1520:84;10828:28:60;;;:57;;;;11192:1939;10895:199;;;11192:1939;11154:28;;;:::i;:::-;11197:13;;307:1520:84;11212:13:60;;;;;;307:1520:84;;;11227:3:60;11250:13;;;;:::i;:::-;307:1520:84;11246:1875:60;;11227:3;307:1520:84;;11197:13:60;;11246:1875;11302:13;-1:-1:-1;;;;;11302:13:60;;;;:::i;:::-;307:1520:84;;11370:13:60;;;;;:::i;:::-;307:1520:84;-1:-1:-1;;;;;8674:6:60;307:1520:84;11334:50:60;;;;307:1520:84;;11334:50:60;307:1520:84;11334:50:60;;;307:1520:84;11334:50:60;;307:1520:84;11363:4:60;307:1520:84;;;;;;;;8674:6:60;;307:1520:84;8674:6:60;;-1:-1:-1;;;;;8674:6:60;307:1520:84;11334:50:60;;;;;;;;;;;11246:1875;307:1520:84;;;11559:240:60;307:1520:84;11766:13:60;;;;;;:::i;:::-;307:1520:84;;;;;;11727:53:60;307:1520:84;-1:-1:-1;;;;;307:1520:84;;11727:53:60;;11817:1290;;;;12423:13;;;;:::i;:::-;307:1520:84;2004:6:47;;2000:58;;2153:5;;;:::i;:::-;307:1520:84;465:4:47;1068:5;2560:120;;;;;;;;;;;;;;1068:5;:::i;:::-;1186:122;;;;;;;;;307:1520:84;-1:-1:-1;;;;;307:1520:84;;;;12583:19:60;307:1520:84;;;;;;;;;;;;;12583:51:60;307:1520:84;;;12583:51:60;:::i;:::-;307:1520:84;;12695:13:60;;;;:::i;:::-;307:1520:84;;;;;;;;;;;12656:70:60;307:1520:84;-1:-1:-1;;;;;307:1520:84;;;;12656:22:60;307:1520:84;;;;;;;;;;;;;;;;;12656:70:60;:::i;:::-;307:1520:84;;11817:1290:60;11246:1875;;;;307:1520:84;;;;;;;;;;2000:58:47;2033:14;307:1520:84;2033:14:47;307:1520:84;;2033:14:47;11817:1290:60;307:1520:84;;10828:28:60;;;12946:13;;;;:::i;:::-;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;;12910:19:60;307:1520:84;;;;;;;;;;12910:49:60;307:1520:84;;;;;;12910:49:60;:::i;:::-;307:1520:84;;11817:1290:60;;12849:240;13053:13;;;;:::i;:::-;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;;13014:22:60;307:1520:84;;;;;;;;;;13014:52:60;307:1520:84;;;;;;13014:52:60;:::i;307:1520:84:-;;;;;;;;;;11334:50:60;;;;:::i;:::-;307:1520:84;;11334:50:60;;;;;307:1520:84;;;;;;;;;11334:50:60;307:1520:84;;;10895:199:60;11004:79;;;;;;:::i;:::-;10895:199;;;10828:57;10860:25;;;;-1:-1:-1;10828:57:60;;11227:3;11250:13;;;;:::i;:::-;307:1520:84;11246:1875:60;;11227:3;307:1520:84;;11197:13:60;;11246:1875;-1:-1:-1;;;;;11302:13:60;;;;:::i;:::-;307:1520:84;;11370:13:60;;;;;:::i;:::-;307:1520:84;-1:-1:-1;;;;;8674:6:60;307:1520:84;11334:50:60;;;;307:1520:84;;11334:50:60;307:1520:84;11334:50:60;;;307:1520:84;11334:50:60;;307:1520:84;11363:4:60;307:1520:84;;;;;;;;;8674:6:60;307:1520:84;8674:6:60;;-1:-1:-1;;;;;8674:6:60;307:1520:84;11334:50:60;;;;;;;;11246:1875;11661:13;;;11623:52;307:1520:84;-1:-1:-1;;;;;11661:13:60;;;;:::i;:::-;307:1520:84;;;;;;;;11623:52:60;;11817:1290;;;;12423:13;;;;:::i;:::-;307:1520:84;2004:6:47;;2000:58;;2153:5;;;:::i;:::-;307:1520:84;465:4:47;1068:5;2560:120;;;;;;;;;;;;;;1068:5;:::i;:::-;1186:122;;;;;;;;;307:1520:84;-1:-1:-1;;;;;307:1520:84;;;;12583:19:60;307:1520:84;;;;;;;;;;;;;12583:51:60;307:1520:84;;;12583:51:60;:::i;:::-;307:1520:84;;12695:13:60;;;;:::i;:::-;307:1520:84;;;;;;;;;;;12656:70:60;307:1520:84;-1:-1:-1;;;;;307:1520:84;;;;12656:22:60;307:1520:84;;;;;;;;;;;;;;;;;12656:70:60;:::i;:::-;307:1520:84;;11817:1290:60;11246:1875;;;;11817:1290;307:1520:84;;10828:28:60;;;12946:13;;;;:::i;:::-;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;;12910:19:60;307:1520:84;;;;;;;;;;12910:49:60;307:1520:84;;;;;;12910:49:60;:::i;:::-;307:1520:84;;11817:1290:60;;12849:240;13053:13;;;;:::i;:::-;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;;13014:22:60;307:1520:84;;;;;;;;;;13014:52:60;307:1520:84;;;;;;13014:52:60;:::i;11334:50::-;;;;:::i;:::-;;;;10895:199;11004:79;;;;;:::i;:::-;10895:199;;10828:57;10860:25;;;;-1:-1:-1;10828:57:60;;8674:33;;;;;;;;;;;;;:::i;:::-;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8674:33:60;;;;307:1520:84;;;;;;;;8674:33:60;307:1520:84;;;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;24749:9:60;307:1520:84;;:::i;:::-;;;:::i;:::-;6627:4:60;;;;:::i;:::-;24749:9;:::i;:::-;307:1520:84;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;632:28;307:1520;;:::i;:::-;632:28;:::i;:::-;307:1520;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;:::i;:::-;1525:73:35;;;:::i;:::-;23582:28:60;;;:::i;:::-;23626:13;;;23641;;;;;;307:1520:84;;;23656:3:60;23690:13;23757:5;-1:-1:-1;;;;;23690:13:60;307:1520:84;23690:13:60;;;:::i;:::-;307:1520:84;;23757:5:60;;;:::i;:::-;307:1520:84;23626:13:60;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;1579:30;307:1520;;;;;;;;1675:6;307:1520;1754:54;;;;:::i;:::-;1656:162;;;;;307:1520;;;1656:162;;-1:-1:-1;;;;;307:1520:84;;;;;1656:162;;307:1520;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;1656:162:84;;;;;;;;307:1520;;;1656:162;;;;;:::i;:::-;307:1520;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;1525:73:35;;;:::i;:::-;307:1520:84;;;24039:52:60;;;;307:1520:84;24039:52:60;;307:1520:84;;;;24039:52:60;;307:1520:84;;;;;24039:6:60;307:1520:84;24039:52:60;;;;;;;;307:1520:84;24140:5:60;;;;:::i;24039:52::-;307:1520:84;24039:52:60;;307:1520:84;24039:52:60;;;;;;307:1520:84;24039:52:60;;;:::i;:::-;;;307:1520:84;;;;24140:5:60;;-1:-1:-1;24039:52:60;;;;;-1:-1:-1;24039:52:60;;307:1520:84;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;1525:73:35;;;:::i;:::-;4690:5:60;7120:57;;7116:130;;7277:21;;;:::i;:::-;7715:4;;;:::i;:::-;27232:40;;;:::i;:::-;307:1520:84;;;;;;:::i;:::-;;;;;;;27189:130:60;;;307:1520:84;21569:4:60;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;;;;;;27148:32:60;27189:130;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;27415:6:60;307:1520:84;27462:55:60;;;;:::i;:::-;27415:103;;;;;307:1520:84;;;27415:103:60;;-1:-1:-1;;;;;307:1520:84;;;;;27415:103:60;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;27415:103:60;;;;;;;27534:70;27415:103;27189:130;27415:103;;;307:1520:84;;;;;;;27534:70:60;307:1520:84;27415:103:60;;;;:::i;:::-;307:1520:84;27415:103:60;;7116:130;7200:35;307:1520:84;7200:35:60;307:1520:84;;7200:35:60;307:1520:84;;;;;-1:-1:-1;;307:1520:84;;;;;;;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;;;;307:1520:84;;;:::i;:::-;;;;;;;;;;;;881:30;307:1520;;;;;;919:31;307:1520;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;4690:5:60;7120:57;;7116:130;;307:1520:84;7277:21:60;;20822:70;7277:21;;:::i;:::-;1525:73:35;;:::i;:::-;307:1520:84;;;;;;;;20822:70:60;307:1520:84;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;14695:28:60;;;;:::i;:::-;14747:24;;;;:::i;:::-;14786:13;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;14781:124:60;14801:13;;;;;;307:1520:84;;;;;;;:::i;:::-;;;;14816:3:60;307:1520:84;;;;;14851:22:60;307:1520:84;;;;;14880:13:60;;;;;:::i;:::-;307:1520:84;;;;;;;;;;14835:59:60;;;;:::i;:::-;307:1520:84;;14786:13:60;;307:1520:84;;;;;-1:-1:-1;;307:1520:84;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;14273:28:60;;;;:::i;:::-;14325:24;;;;:::i;:::-;14364:13;307:1520:84;;-1:-1:-1;;;;;307:1520:84;;;14359:121:60;14379:13;;;;;;307:1520:84;;;;;;;:::i;14394:3:60:-;307:1520:84;;;;;14429:19:60;307:1520:84;;;;;14455:13:60;;;;;:::i;:::-;307:1520:84;;;;;;;;;;14413:56:60;;;;:::i;:::-;307:1520:84;;14364:13:60;;307:1520:84;;;;;-1:-1:-1;;307:1520:84;;;;;;;;-1:-1:-1;;;;;1216:6:63;307:1520:84;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;4690:5:60;6787:55;;6783:127;;307:1520:84;6941:20:60;;20438:68;6941:20;;:::i;:::-;1525:73:35;;:::i;:::-;307:1520:84;;;;;;;;20438:68:60;307:1520:84;6783:127:60;6865:34;307:1520:84;6865:34:60;307:1520:84;;6865:34:60;307:1520:84;;;;;-1:-1:-1;;307:1520:84;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;-1:-1:-1;;;;;307:1520:84;;:::i;:::-;;;;13963:32:60;307:1520:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;:::i;:::-;;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;436:67:68;;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;19167:56:60;;;;;307:1520:84;19167:56:60;;19263:57;;;307:1520:84;19263:57:60;;19851:37;;;:::i;:::-;307:1520:84;;;;;:::i;:::-;;;;;;;19808:134:60;;;307:1520:84;;;;;;;19768:31:60;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20036:38:60;;;:::i;:::-;307:1520:84;;;;;;;;:::i;:::-;;;;19993:135:60;;;307:1520:84;;;;;19952:32:60;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19263:57:60;19287:33;307:1520:84;19263:57:60;;;19167:56;307:1520:84;;19167:56:60;;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;7715:4:60;;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;;;;15398:31:60;307:1520:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;15524:81:60;;;;307:1520:84;15520:176:60;;;307:1520:84;15520:176:60;26199:39;;;:::i;:::-;307:1520:84;;;;;;;;:::i;:::-;;;;26156:129:60;;;307:1520:84;;;;;;;15398:31:60;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;26380:6:60;307:1520:84;26426:54:60;;;;:::i;:::-;26380:101;;;;;307:1520:84;;;26380:101:60;;-1:-1:-1;;;;;307:1520:84;;;;;26380:101:60;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;26380:101:60;;;;;;;26497:68;26380:101;;;307:1520:84;;;;;;26497:68:60;307:1520:84;15524:81:60;15557:48;;;;;15524:81;;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;7715:4:60;;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;;;;15880:32:60;307:1520:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;15961:33:60;307:1520:84;16009:82:60;;;;307:1520:84;16005:179:60;;;307:1520:84;16005:179:60;27232:40;;;:::i;:::-;307:1520:84;;;;;;;;:::i;:::-;;;;27189:130:60;;;307:1520:84;;;;;;;15880:32:60;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;27415:6:60;307:1520:84;27462:55:60;;;;:::i;:::-;27415:103;;;;;307:1520:84;;;27415:103:60;;-1:-1:-1;;;;;307:1520:84;;;;;27415:103:60;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;27415:103:60;;;;;;;27534:70;27415:103;;;307:1520:84;;;;;;27534:70:60;307:1520:84;16009:82:60;16042:49;;;;;16009:82;;;307:1520:84;;:::i;:::-;;;;;-1:-1:-1;;307:1520:84;;;;;-1:-1:-1;;;;;307:1520:84;;:::i;:::-;;;;13682:31:60;307:1520:84;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;307:1520:84;;;;;;13465:33:60;307:1520:84;;;;;;;;;;;;-1:-1:-1;;307:1520:84;;;;;24912:19:60;307:1520:84;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;;;;;;;;;24912:19:60;;:::i;307:1520:84:-;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;6627:4:60;;;;:::i;:::-;4945:9;7407:56;;7403:127;;7715:4;;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;;;;23014:31:60;307:1520:84;;;;;;;23180:6:60;307:1520:84;23227:55:60;;;;:::i;:::-;23180:103;;;;;307:1520:84;;;23180:103:60;;-1:-1:-1;;;;;307:1520:84;;;;;23180:103:60;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;23180:103:60;;;;;;;23303:68;23180:103;307:1520:84;23180:103:60;;;307:1520:84;;;;;;23303:68:60;307:1520:84;7403:127:60;7486:33;307:1520:84;7486:33:60;307:1520:84;;7486:33:60;307:1520:84;;;;;-1:-1:-1;;307:1520:84;;;;;;;;4945:9:60;307:1520:84;;;;;;;;-1:-1:-1;;307:1520:84;;;;;;;:::i;:::-;;;6627:4:60;;;;:::i;:::-;4945:9;7407:56;;7403:127;;7715:4;;;:::i;:::-;-1:-1:-1;;;;;307:1520:84;;;;;;;;22631:30:60;307:1520:84;;;;;;;22795:6:60;307:1520:84;22841:54:60;;;;:::i;:::-;22795:101;;;;;307:1520:84;;;22795:101:60;;-1:-1:-1;;;;;307:1520:84;;;;;22795:101:60;;307:1520:84;;;;;;-1:-1:-1;;307:1520:84;;;;;;-1:-1:-1;;22795:101:60;;;;;;;22916:67;22795:101;307:1520:84;22795:101:60;;;307:1520:84;;;;;;22916:67:60;307:1520:84;22795:101:60;;;;:::i;:::-;;;;307:1520:84;;;;;-1:-1:-1;;307:1520:84;;;;;;15135:79:60;307:1520:84;;;;15135:79:60;:::i;307:1520:84:-;;;;-1:-1:-1;;;;;307:1520:84;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;307:1520:84;;;;;;:::o;:::-;;;;;-1:-1:-1;;307:1520:84;;;;;;;;4690:5:60;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;1931:430:35:-;307:1520:84;;;2303:50:35;;;2320:22;;307:1520:84;;;;;;;2303:50:35;;;;;;:::i;:::-;307:1520:84;2293:61:35;;1931:430;:::o;307:1520:84:-;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;8062:151:60:-;8137:68;8062:151;-1:-1:-1;307:1520:84;-1:-1:-1;;;;;307:1520:84;;8137:68:60;;307:1520:84;8137:68:60;;;;;;;;;;307:1520:84;8137:68:60;;;307:1520:84;8137:68:60;;;;;;:::i;:::-;307:1520:84;;8123:83:60;;;;;;;307:1520:84;8123:83:60;;;8137:68;8123:83;;307:1520:84;;;;;8137:68:60;307:1520:84;;;;;;;;;;;;;;;;;;8123:83:60;;:6;;307:1520:84;8123:83:60;;;;;;;;8062:151;;:::o;8123:83::-;;;-1:-1:-1;8123:83:60;;;;;;:::i;:::-;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;307:1520:84;;;;;;;;;8062:151:60:o;1366:109:63:-;307:1520:84;;;1442:26:63;;-1:-1:-1;;;;;1442:26:63;307:1520:84;1442:26:63;307:1520:84;1216:6:63;307:1520:84;;1442:26:63;;;;;;;;;;;1435:33;;1366:109;:::o;1442:26::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;307:1520:84;;;;;;;;;;;;1366:109:63;:::o;1442:26::-;;;-1:-1:-1;1442:26:63;;307:1520:84;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;19669:4:31:-;;465::47;19669::31;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;16903:1064:60:-;;17132:104;19669:4:31;5832:87:47;;;838:5;5832:87;;;;;;;;;838:5;:::i;:::-;19669:4:31;17132:104:60;;:::i;:::-;19669:4:31;;;;;;;;;;;;;;;16903:1064:60;:::o;17973:338::-;-1:-1:-1;;;;;307:1520:84;;;;;-1:-1:-1;307:1520:84;18069:13:60;307:1520:84;;;-1:-1:-1;307:1520:84;;;18103:25:60;;18099:93;;18221:10;18206:25;18202:103;;17973:338;:::o;18202:103::-;18254:40;-1:-1:-1;18254:40:60;18221:10;18069:13;307:1520:84;;;;-1:-1:-1;18254:40:60;18099:93;18151:30;;-1:-1:-1;18151:30:60;18069:13;307:1520:84;;-1:-1:-1;18151:30:60;24945:616;;25080:28;;;:::i;:::-;25124:13;;25136:1;25139:13;;;;;;24945:616;;;;;:::o;25154:3::-;307:1520:84;;-1:-1:-1;;;;;25188:13:60;;;;;:::i;:::-;307:1520:84;;;;;;25136:1:60;307:1520:84;25243:22:60;307:1520:84;;;;;;;25136:1:60;307:1520:84;;25136:1:60;307:1520:84;;;;25136:1:60;307:1520:84;;25296:20:60;;25292:253;;25154:3;;;;;;;;307:1520:84;25124:13:60;;25292:253;25464:66;307:1520:84;;25136:1:60;307:1520:84;;;;25136:1:60;307:1520:84;;25136:1:60;307:1520:84;;;25136:1:60;307:1520:84;;;;25423:16:60;;;;;:::i;:::-;307:1520:84;;;;;;25464:66:60;;25292:253;;;;;;;;;509:165:68;-1:-1:-1;;;;;586:6:68;307:1520:84;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;307:1520:84;;616:41:68;;13291:213:111;307:1520:84;13369:24:111;;;;13365:103;;307:1520:84;13291:213:111;:::o;13365:103::-;13416:41;;;13447:2;13416:41;307:1520:84;;;;13416:41:111;;27617:749:60;19669:4:31;;;;;;;;;;;;;;;;;;28218:74:60;28214:146;;27617:749::o;28214:146::-;28315:34;-1:-1:-1;28315:34:60;;-1:-1:-1;28315:34:60;1688:201:35;1762:20;1774:7;;;;1762:20;:::i;:::-;1592:60:63;-1:-1:-1;;;;;1592:15:63;;:::i;:::-;307:1520:84;;;;;1592:60:63;;;;307:1520:84;1592:60:63;;;;;307:1520:84;1820:10:35;307:1520:84;;;;1646:4:63;307:1520:84;;;;1592:60:63;;;;;;;1774:7:35;1592:60:63;;;1688:201:35;1797:34;;1793:90;;1688:201::o;1793:90::-;1854:18;1774:7;1854:18;1592:60:63;1774:7:35;1854:18;1592:60:63;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;18317:199:60;;-1:-1:-1;;;;;307:1520:84;;;18448:26:60;307:1520:84;18448:26:60;;307:1520:84;18448:26:60;;;307:1520:84;18448:26:60;:6;307:1520:84;18448:6:60;;;307:1520:84;18448:26:60;;;;;;;;;;;18317:199;18439:35;;;307:1520:84;18317:199:60;:::o;18448:26::-;;;;;;;;;;;;;;:::i;:::-;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;18448:26:60;;;;;;;;;;307:1520:84;;;;;;;;;;;;;;;;;;;;24159:403:60;;;-1:-1:-1;;;;;307:1520:84;;;;;-1:-1:-1;307:1520:84;24283:19:60;307:1520:84;;;-1:-1:-1;307:1520:84;;;;;;;-1:-1:-1;307:1520:84;;;;-1:-1:-1;307:1520:84;;24329:20:60;;24325:231;;24159:403;;;;;;;:::o;24325:231::-;307:1520:84;24445:16:60;307:1520:84;24482:63:60;307:1520:84;;;;-1:-1:-1;307:1520:84;24283:19:60;307:1520:84;;;-1:-1:-1;307:1520:84;;-1:-1:-1;307:1520:84;;;-1:-1:-1;307:1520:84;;;;24445:16:60;:::i;:::-;307:1520:84;;;;;;24482:63:60;;24325:231;;;;;;;;16196:701;-1:-1:-1;;;;;307:1520:84;-1:-1:-1;307:1520:84;;;;16811:79:60;307:1520:84;;-1:-1:-1;307:1520:84;;;16562:30:60;307:1520:84;;;-1:-1:-1;307:1520:84;;16811:79:60;;:::i;:::-;16196:701;:::o;:::-;-1:-1:-1;;;;;307:1520:84;16395:399:60;307:1520:84;16653:32:60;307:1520:84;;16811:79:60;307:1520:84;;16395:399:60;307:1520:84;;;16746:31:60;307:1520:84;;;16395:399:60;307:1520:84;;16811:79:60;;:::i;1303:160:98:-;307:1520:84;;;1412:43:98;;;;;;-1:-1:-1;;;;;307:1520:84;;;1412:43:98;;;307:1520:84;;;;;;;;;1412:43:98;;;307:1520:84;3510:55:99;;-1:-1:-1;;;;1412:43:98;307:1520:84;1412:43:98;307:1520:84;;1412:43:98;:::i;:::-;307:1520:84;3462:31:99;;;;;;;307:1520:84;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;2847:1:99;1412:43:98;307:1520:84;;;;3510:55:99;;:::i;:::-;307:1520:84;;4551:22:98;;;;:57;;;;307:1520:84;4547:135:98;;;;1303:160;:::o;4547:135::-;4631:40;2847:1:99;4631:40:98;;307:1520:84;1412:43:98;2847:1:99;4631:40:98;4551:57;4578:30;;;1412:43;4578:30;;;;;;;;:::i;:::-;4577:31;4551:57;;;;307:1520:84;;;;;;;;;;;;;;;;;;;;;;;:::o;4625:582:99:-;;4797:8;;-1:-1:-1;307:1520:84;;5874:21:99;:17;;6046:142;;;;;;5870:383;6225:17;5894:1;6225:17;;5894:1;6225:17;4793:408;307:1520:84;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;307:1520:84;5121:24:99;307:1520:84;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;"},"methodIdentifiers":{"MAX_CREATOR_FEE_PERCENTAGE()":"2e1d388d","MAX_PROTOCOL_SWAP_FEE_PERCENTAGE()":"2772d156","MAX_PROTOCOL_YIELD_FEE_PERCENTAGE()":"5e32e4e8","collectAggregateFees(address)":"8f4ab9ca","collectAggregateFeesHook(address)":"fa399f2a","computeAggregateFeePercentage(uint256,uint256)":"0ddd60c6","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getGlobalProtocolSwapFeePercentage()":"7869ee18","getGlobalProtocolYieldFeePercentage()":"55fb76af","getPoolCreatorFeeAmounts(address)":"9e95f3fd","getPoolCreatorInfo(address)":"aa9fea87","getPoolProtocolSwapFeeInfo(address)":"5c15a0b4","getPoolProtocolYieldFeeInfo(address)":"7a2b97dc","getPoolTokensAndCount(address)":"f29aaa58","getProtocolFeeAmounts(address)":"8df44c54","getVault()":"8d928af8","manualSetPoolCreator(address,address)":"79a2c0ac","manualSetPoolCreatorSwapFeePercentage(address,uint256)":"b8abccd1","registerPool(address,address,bool)":"77ff76e7","setGlobalProtocolSwapFeePercentage(uint256)":"8a3c5c69","setGlobalProtocolYieldFeePercentage(uint256)":"a93df2a4","setPoolCreatorSwapFeePercentage(address,uint256)":"1377c16c","setPoolCreatorYieldFeePercentage(address,uint256)":"3af52712","setProtocolSwapFeePercentage(address,uint256)":"fd267f39","setProtocolYieldFeePercentage(address,uint256)":"abaa3356","updateProtocolSwapFeePercentage(address)":"71ecc8fb","updateProtocolYieldFeePercentage(address)":"71447ea8","vault()":"fbfa77cf","withdrawPoolCreatorFees(address)":"52f125f0","withdrawPoolCreatorFees(address,address)":"f7061445","withdrawProtocolFees(address,address)":"cf7b287f","withdrawProtocolFeesForToken(address,address,address)":"b53a70b2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVaultMock\",\"name\":\"vault_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"CallerIsNotPoolCreator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolCreatorFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolSwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolYieldFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"GlobalProtocolSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"yieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"GlobalProtocolYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorFeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolCreatorSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolCreatorYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolCreatorYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolSwapFeeCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ProtocolYieldFeeCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"yieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolYieldFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_CREATOR_FEE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PROTOCOL_SWAP_FEE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PROTOCOL_YIELD_FEE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFeesHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeAggregateFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalProtocolSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGlobalProtocolYieldFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolCreatorFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolCreatorInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creatorSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creatorYieldFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolProtocolSwapFeeInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolProtocolYieldFeeInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokensAndCount\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"numTokens\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getProtocolFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"name\":\"manualSetPoolCreator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manualSetPoolCreatorSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newProtocolSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setGlobalProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newProtocolYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setGlobalProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setPoolCreatorSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"poolCreatorYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setPoolCreatorYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newProtocolSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newProtocolYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"updateProtocolSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"updateProtocolYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"withdrawPoolCreatorFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawPoolCreatorFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawProtocolFeesForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"CallerIsNotPoolCreator(address,address)\":[{\"params\":{\"caller\":\"The account attempting to withdraw pool creator fees\",\"pool\":\"The pool the caller tried to withdraw from\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"PoolCreatorNotRegistered(address)\":[{\"params\":{\"pool\":\"The pool with no creator\"}}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol swap fee percentages.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"details\":\"Note that this is checked for both the global and pool-specific protocol yield fee percentages.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"events\":{\"GlobalProtocolSwapFeePercentageChanged(uint256)\":{\"params\":{\"swapFeePercentage\":\"The updated protocol swap fee percentage\"}},\"GlobalProtocolYieldFeePercentageChanged(uint256)\":{\"params\":{\"yieldFeePercentage\":\"The updated protocol yield fee percentage\"}},\"PoolCreatorFeesWithdrawn(address,address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the fee token that was withdrawn\",\"pool\":\"The pool from which pool creator fees are being withdrawn\",\"recipient\":\"The recipient of the funds (the pool creator if permissionless, or another account)\",\"token\":\"The token being withdrawn\"}},\"PoolCreatorSwapFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose pool creator swap fee will be changed\",\"poolCreatorSwapFeePercentage\":\"The new pool creator swap fee percentage for the pool\"}},\"PoolCreatorYieldFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose pool creator yield fee will be changed\",\"poolCreatorYieldFeePercentage\":\"The new pool creator yield fee percentage for the pool\"}},\"ProtocolFeesWithdrawn(address,address,address,uint256)\":{\"params\":{\"amount\":\"The amount of the fee token that was withdrawn\",\"pool\":\"The pool from which protocol fees are being withdrawn\",\"recipient\":\"The recipient of the funds\",\"token\":\"The token being withdrawn\"}},\"ProtocolSwapFeeCollected(address,address,uint256)\":{\"details\":\"Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection happens in the ProtocolFeeController, the swap fees reported here may encompass multiple operations.\",\"params\":{\"amount\":\"The amount of the token collected in fees\",\"pool\":\"The pool on which the swap fee was charged\",\"token\":\"The token in which the swap fee was charged\"}},\"ProtocolSwapFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose protocol swap fee will be changed\",\"swapFeePercentage\":\"The updated protocol swap fee percentage\"}},\"ProtocolYieldFeeCollected(address,address,uint256)\":{\"details\":\"Note that since charging protocol fees (i.e., distributing tokens between pool and fee balances) occurs in the Vault, but fee collection happens in the ProtocolFeeController, the yield fees reported here may encompass multiple operations.\",\"params\":{\"amount\":\"The amount of the token collected in fees\",\"pool\":\"The pool on which the yield fee was charged\",\"token\":\"The token in which the yield fee was charged\"}},\"ProtocolYieldFeePercentageChanged(address,uint256)\":{\"params\":{\"pool\":\"The pool whose protocol yield fee will be changed\",\"yieldFeePercentage\":\"The updated protocol yield fee percentage\"}}},\"kind\":\"dev\",\"methods\":{\"collectAggregateFees(address)\":{\"params\":{\"pool\":\"The pool with aggregate fees\"}},\"collectAggregateFeesHook(address)\":{\"details\":\"Copy and zero out the `aggregateFeeAmounts` collected in the Vault accounting, supplying credit for each token. Then have the Vault transfer tokens to this contract, debiting each token for the amount transferred so that the transaction settles when the hook returns.\"},\"computeAggregateFeePercentage(uint256,uint256)\":{\"details\":\"Not tied to any particular pool; this just performs the low-level \\\"additive fee\\\" calculation. Note that pool creator fees are calculated based on creatorAndLpFees, and not in totalFees. Since aggregate fees are stored in the Vault with 24-bit precision, this will truncate any values that require greater precision. It is expected that pool creators will negotiate with the DAO and agree on reasonable values for these fee components, but the truncation ensures it will not revert for any valid set of fee percentages. See example below: tokenOutAmount = 10000; poolSwapFeePct = 10%; protocolFeePct = 40%; creatorFeePct = 60% totalFees = tokenOutAmount * poolSwapFeePct = 10000 * 10% = 1000 protocolFees = totalFees * protocolFeePct = 1000 * 40% = 400 creatorAndLpFees = totalFees - protocolFees = 1000 - 400 = 600 creatorFees = creatorAndLpFees * creatorFeePct = 600 * 60% = 360 lpFees (will stay in the pool) = creatorAndLpFees - creatorFees = 600 - 360 = 240\",\"params\":{\"poolCreatorFeePercentage\":\"The pool creator portion of the aggregate fee percentage\",\"protocolFeePercentage\":\"The protocol portion of the aggregate fee percentage\"},\"returns\":{\"_0\":\"The computed aggregate percentage\"}},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAuthorizer()\":{\"returns\":{\"_0\":\"authorizer An interface pointer to the Authorizer\"}},\"getGlobalProtocolSwapFeePercentage()\":{\"returns\":{\"_0\":\"The global protocol swap fee percentage\"}},\"getGlobalProtocolYieldFeePercentage()\":{\"returns\":{\"_0\":\"The global protocol yield fee percentage\"}},\"getPoolCreatorFeeAmounts(address)\":{\"details\":\"Includes both swap and yield fees.\",\"params\":{\"pool\":\"The address of the pool on which fees were collected\"},\"returns\":{\"feeAmounts\":\"The total amounts of each token available for withdrawal, sorted in token registration order\"}},\"getPoolProtocolSwapFeeInfo(address)\":{\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"_0\":\"The global protocol swap fee percentage\",\"_1\":\"True if the protocol fee has been overridden\"}},\"getPoolProtocolYieldFeeInfo(address)\":{\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"_0\":\"The global protocol yield fee percentage\",\"_1\":\"True if the protocol fee has been overridden\"}},\"getProtocolFeeAmounts(address)\":{\"details\":\"Includes both swap and yield fees.\",\"params\":{\"pool\":\"The address of the pool on which fees were collected\"},\"returns\":{\"feeAmounts\":\"The total amounts of each token available for withdrawal, sorted in token registration order\"}},\"getVault()\":{\"returns\":{\"_0\":\"vault An interface pointer to the Vault\"}},\"manualSetPoolCreator(address,address)\":{\"details\":\"Standard Balancer Pools specifically disallow pool creators to be passed in through PoolRoleAccounts; otherwise, this wouldn't be necessary.\"},\"manualSetPoolCreatorSwapFeePercentage(address,uint256)\":{\"details\":\"Set pool creator swap fee percentage without any constraints.\"},\"registerPool(address,address,bool)\":{\"details\":\"This must be called from the Vault during pool registration. It will initialize the pool to the global protocol fee percentage values (or 0, if the `protocolFeeExempt` flags is set), and return the initial aggregate fee percentages, based on an initial pool creator fee of 0.\",\"params\":{\"pool\":\"The address of the pool being registered\",\"poolCreator\":\"The address of the pool creator (or 0 if there won't be a pool creator fee)\",\"protocolFeeExempt\":\"If true, the pool is initially exempt from protocol fees\"},\"returns\":{\"aggregateSwapFeePercentage\":\"The initial aggregate swap fee percentage\",\"aggregateYieldFeePercentage\":\"The initial aggregate yield fee percentage\"}},\"setGlobalProtocolSwapFeePercentage(uint256)\":{\"params\":{\"newProtocolSwapFeePercentage\":\"The new protocol swap fee percentage\"}},\"setGlobalProtocolYieldFeePercentage(uint256)\":{\"params\":{\"newProtocolYieldFeePercentage\":\"The new protocol yield fee percentage\"}},\"setPoolCreatorSwapFeePercentage(address,uint256)\":{\"details\":\"Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to the \\\"net\\\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\",\"params\":{\"pool\":\"The address of the pool for which the pool creator fee will be changed\",\"poolCreatorSwapFeePercentage\":\"The new pool creator swap fee percentage to apply to the pool\"}},\"setPoolCreatorYieldFeePercentage(address,uint256)\":{\"details\":\"Fees are divided between the protocol, pool creator, and LPs. The pool creator percentage is applied to the \\\"net\\\" amount after protocol fees, and divides the remainder between the pool creator and LPs. If the pool creator fee is near 100%, almost none of the fee amount remains in the pool for LPs.\",\"params\":{\"pool\":\"The address of the pool for which the pool creator fee will be changed\",\"poolCreatorYieldFeePercentage\":\"The new pool creator yield fee percentage to apply to the pool\"}},\"setProtocolSwapFeePercentage(address,uint256)\":{\"params\":{\"newProtocolSwapFeePercentage\":\"The new protocol swap fee percentage for the pool\",\"pool\":\"The address of the pool for which we are setting the protocol swap fee\"}},\"setProtocolYieldFeePercentage(address,uint256)\":{\"params\":{\"newProtocolYieldFeePercentage\":\"The new protocol yield fee percentage for the pool\",\"pool\":\"The address of the pool for which we are setting the protocol yield fee\"}},\"updateProtocolSwapFeePercentage(address)\":{\"details\":\"This is a permissionless call, and will set the pool's fee to the current global fee, if it is different from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\",\"params\":{\"pool\":\"The pool for which we are setting the protocol swap fee\"}},\"updateProtocolYieldFeePercentage(address)\":{\"details\":\"This is a permissionless call, and will set the pool's fee to the current global fee, if it is different from the current value, and the fee is not controlled by governance (i.e., has never been overridden).\",\"params\":{\"pool\":\"The pool for which we are setting the protocol yield fee\"}},\"vault()\":{\"returns\":{\"_0\":\"vault The Vault address\"}},\"withdrawPoolCreatorFees(address)\":{\"details\":\"Sends swap and yield pool creator fees to the registered poolCreator. Since this is a known and immutable value, this function is permissionless.\",\"params\":{\"pool\":\"The pool on which fees were collected\"}},\"withdrawPoolCreatorFees(address,address)\":{\"details\":\"Sends swap and yield pool creator fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\"}},\"withdrawProtocolFees(address,address)\":{\"details\":\"Sends swap and yield protocol fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\"}},\"withdrawProtocolFeesForToken(address,address,address)\":{\"details\":\"Sends swap and yield protocol fees to the recipient.\",\"params\":{\"pool\":\"The pool on which fees were collected\",\"recipient\":\"Address to send the tokens\",\"token\":\"Token to withdraw\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"CallerIsNotPoolCreator(address,address)\":[{\"notice\":\"Error raised if the wrong account attempts to withdraw pool creator fees.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"PoolCreatorFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the pool creator swap or yield fee percentage exceeds the maximum allowed value.\"}],\"PoolCreatorNotRegistered(address)\":[{\"notice\":\"Error raised if there is no pool creator on a withdrawal attempt from the given pool.\"}],\"ProtocolSwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol swap fee percentage exceeds the maximum allowed value.\"}],\"ProtocolYieldFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the protocol yield fee percentage exceeds the maximum allowed value.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"events\":{\"GlobalProtocolSwapFeePercentageChanged(uint256)\":{\"notice\":\"Emitted when the protocol swap fee percentage is updated.\"},\"GlobalProtocolYieldFeePercentageChanged(uint256)\":{\"notice\":\"Emitted when the protocol yield fee percentage is updated.\"},\"PoolCreatorFeesWithdrawn(address,address,address,uint256)\":{\"notice\":\"Logs the withdrawal of pool creator fees in a specific token and amount.\"},\"PoolCreatorSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the pool creator swap fee percentage of a pool is updated.\"},\"PoolCreatorYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the pool creator yield fee percentage of a pool is updated.\"},\"ProtocolFeesWithdrawn(address,address,address,uint256)\":{\"notice\":\"Logs the withdrawal of protocol fees in a specific token and amount.\"},\"ProtocolSwapFeeCollected(address,address,uint256)\":{\"notice\":\"Logs the collection of protocol swap fees in a specific token and amount.\"},\"ProtocolSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the protocol swap fee percentage is updated for a specific pool.\"},\"ProtocolYieldFeeCollected(address,address,uint256)\":{\"notice\":\"Logs the collection of protocol yield fees in a specific token and amount.\"},\"ProtocolYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the protocol yield fee percentage is updated for a specific pool.\"}},\"kind\":\"user\",\"methods\":{\"collectAggregateFees(address)\":{\"notice\":\"Collects aggregate fees from the Vault for a given pool.\"},\"computeAggregateFeePercentage(uint256,uint256)\":{\"notice\":\"Returns a calculated aggregate percentage from protocol and pool creator fee percentages.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"notice\":\"Get the address of the Authorizer.\"},\"getGlobalProtocolSwapFeePercentage()\":{\"notice\":\"Getter for the current global protocol swap fee.\"},\"getGlobalProtocolYieldFeePercentage()\":{\"notice\":\"Getter for the current global protocol yield fee.\"},\"getPoolCreatorFeeAmounts(address)\":{\"notice\":\"Returns the amount of each pool token allocated to the pool creator for withdrawal.\"},\"getPoolProtocolSwapFeeInfo(address)\":{\"notice\":\"Getter for the current protocol swap fee for a given pool.\"},\"getPoolProtocolYieldFeeInfo(address)\":{\"notice\":\"Getter for the current protocol yield fee for a given pool.\"},\"getProtocolFeeAmounts(address)\":{\"notice\":\"Returns the amount of each pool token allocated to the protocol for withdrawal.\"},\"getVault()\":{\"notice\":\"Get the address of the Balancer Vault.\"},\"manualSetPoolCreator(address,address)\":{\"notice\":\"Sets the pool creator address, allowing the address to change the pool creator fee percentage.\"},\"registerPool(address,address,bool)\":{\"notice\":\"Add pool-specific entries to the protocol swap and yield percentages.\"},\"setGlobalProtocolSwapFeePercentage(uint256)\":{\"notice\":\"Set the global protocol swap fee percentage, used by standard pools.\"},\"setGlobalProtocolYieldFeePercentage(uint256)\":{\"notice\":\"Set the global protocol yield fee percentage, used by standard pools.\"},\"setPoolCreatorSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new pool creator swap fee percentage to the specified pool.\"},\"setPoolCreatorYieldFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new pool creator yield fee percentage to the specified pool.\"},\"setProtocolSwapFeePercentage(address,uint256)\":{\"notice\":\"Override the protocol swap fee percentage for a specific pool.\"},\"setProtocolYieldFeePercentage(address,uint256)\":{\"notice\":\"Override the protocol yield fee percentage for a specific pool.\"},\"updateProtocolSwapFeePercentage(address)\":{\"notice\":\"Override the protocol swap fee percentage for a specific pool.\"},\"updateProtocolYieldFeePercentage(address)\":{\"notice\":\"Override the protocol yield fee percentage for a specific pool.\"},\"vault()\":{\"notice\":\"Get the address of the main Vault contract.\"},\"withdrawPoolCreatorFees(address)\":{\"notice\":\"Withdraw collected pool creator fees for a given pool.\"},\"withdrawPoolCreatorFees(address,address)\":{\"notice\":\"Withdraw collected pool creator fees for a given pool. This is a permissioned function.\"},\"withdrawProtocolFees(address,address)\":{\"notice\":\"Withdraw collected protocol fees for a given pool (all tokens). This is a permissioned function.\"},\"withdrawProtocolFeesForToken(address,address,address)\":{\"notice\":\"Withdraw collected protocol fees for a given pool and a given token. This is a permissioned function.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol\":\"ProtocolFeeControllerMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol\":{\"keccak256\":\"0x51d1502369f0bb1fec58b7aa848f20e6ea3ddcb4866471e2fdbe96f0f6783fb5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ab9f73ec13f137f3103edf9caa8edc4752db585393cc7db6c62f85a1efdbfb5e\",\"dweb:/ipfs/QmXBoBF18c1f33NYqPmrJ3cqULMak55uznBvzfpf1bHpDd\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol\":{\"keccak256\":\"0x18c434c91bbcd260bd305f2cdc01684a3040bc633c1b185f95cb323a336ac76c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://270260ba29c81dc6d862a0830ccbbdcd81b4543bd9c9b54228493a92568532d4\",\"dweb:/ipfs/QmTHp7v5dGwLujPRaWkoEM22Loy3MuspodMGcm4syAPUvk\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol\":{\"keccak256\":\"0x086e3fda1fa00d50747c9f88711024e107a894904b9ff996fade91f8da326baa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8712c4f68cc951446482c289250ee6ea15c0028bb9b9d82c69d6793aa8dd1ae2\",\"dweb:/ipfs/QmSmz5XkvCDQ4NZ32evpxCvGkYnGbygCn5BP2xwvz2hQgi\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMock.sol\":{\"keccak256\":\"0x66a706de1a8eb2836d3a6f41ce8b05b244169c42ff5f947affd885b34c722bd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://88e094f387cf6886b7f9764acaf37b3aa278a1a1fb2dc748d29a791b9fe742d9\",\"dweb:/ipfs/QmdaNH3JjqcpgjvNKG4XVbEbJC9wuhH6gwtv8nifGsBmi4\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultStorageMock.sol\":{\"keccak256\":\"0xb59762a929624826418e57ef85207703bedfbab512eeb422fd16d40520ab05d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f6363f3ac816ff34ac5b78a564ed0febc9772d1dc130674e73db0a63b29273d\",\"dweb:/ipfs/QmSbmTTFb4vGqHSGQu974CHu146pCfzJRGFMxyN8ujopf7\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/ProtocolFeeController.sol\":{\"keccak256\":\"0x12bb43b5300821288597dcf75bcc595989c88ccaed5e76352891acf498f218b8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5eae6e50b6c806d0cdb2a7ed69235f238d508c45f009f84ff10e4ffd755163f3\",\"dweb:/ipfs/QmYJcHG5c69rGT4mHTNNAMgwjjfD1FgJKKgYDqoTDUdips\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/test/ProtocolFeeControllerMock.sol\":{\"keccak256\":\"0xbdb5219938cbfba738bcb3563949b0bc14d1b74b150f7593d5fa4652b075bfdb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://58f366f8cd11552fd95a4c4ae311efdb16b1c6bfa56d135f792e4f5095b796a7\",\"dweb:/ipfs/QmQv6Dm4MFjhDErYQxZN7JYQEma9uFUxyF6EMdTHF5eZwv\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol":{"RateProviderMock":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"mockRate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601e57670de0b6b3a76400005f5560d2908160238239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c908163679aefce146067575063a1cfa04114602f575f80fd5b3460635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126063576004355f55005b5f80fd5b346063575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126063576020905f548152f3fea2646970667358221220ec68880d7b5ed9bee596a0dbf6a04c752f5ba2698aece234a713b7eea452065a64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x1E JUMPI PUSH8 0xDE0B6B3A7640000 PUSH0 SSTORE PUSH1 0xD2 SWAP1 DUP2 PUSH1 0x23 DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x679AEFCE EQ PUSH1 0x67 JUMPI POP PUSH4 0xA1CFA041 EQ PUSH1 0x2F JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x63 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x63 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 SSTORE STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x63 JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x63 JUMPI PUSH1 0x20 SWAP1 PUSH0 SLOAD DUP2 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC PUSH9 0x880D7B5ED9BEE596A0 0xDB 0xF6 LOG0 0x4C PUSH22 0x2F5BA2698AECE234A713B7EEA452065A64736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"280:344:85:-:0;;;;;;;465:4:47;382:22:85;465:4:47;280:344:85;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"60808060405260043610156011575f80fd5b5f3560e01c908163679aefce146067575063a1cfa04114602f575f80fd5b3460635760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126063576004355f55005b5f80fd5b346063575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126063576020905f548152f3fea2646970667358221220ec68880d7b5ed9bee596a0dbf6a04c752f5ba2698aece234a713b7eea452065a64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH1 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x679AEFCE EQ PUSH1 0x67 JUMPI POP PUSH4 0xA1CFA041 EQ PUSH1 0x2F JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x63 JUMPI PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x63 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 SSTORE STOP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH1 0x63 JUMPI PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH1 0x63 JUMPI PUSH1 0x20 SWAP1 PUSH0 SLOAD DUP2 MSTORE RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC PUSH9 0x880D7B5ED9BEE596A0 0xDB 0xF6 LOG0 0x4C PUSH22 0x2F5BA2698AECE234A713B7EEA452065A64736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"280:344:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"methodIdentifiers":{"getRate()":"679aefce","mockRate(uint256)":"a1cfa041"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"}],\"name\":\"mockRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRate()\":{\"details\":\"The meaning of this rate depends on the context. Note that there may be an error associated with a token rate, and the caller might require a certain rounding direction to ensure correctness. This (legacy) interface does not take a rounding direction or return an error, so great care must be taken when interpreting and using rates in downstream computations.\",\"returns\":{\"_0\":\"The current token rate\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getRate()\":{\"notice\":\"An 18 decimal fixed point number representing the exchange rate of one token to another related token.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol\":\"RateProviderMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-vault/contracts/test/RateProviderMock.sol\":{\"keccak256\":\"0x15772ae4aae0383c40b50689c0bd27af685aaf858758400cf17aba4b87ebafc2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://910e0274c07b8a0fe96d60a2a31a5381dbe29a8d1643dfb7f7e143d070970055\",\"dweb:/ipfs/QmWnLEEdpxSjroaDj3YtD2wcrvMXpnVk2jV59yi4MmyLCK\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/RouterMock.sol":{"RouterMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IWETH","name":"weth","type":"address"},{"internalType":"contract IPermit2","name":"permit2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"EthTransfer","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InsufficientEth","type":"error"},{"inputs":[],"name":"MockErrorCode","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"Result","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapDeadline","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.AddLiquidityHookParams","name":"params","type":"tuple"}],"name":"addLiquidityHook","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"addLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"donate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountGiven","type":"uint256"}],"name":"getSingleInputArrayAndTokenIndex","outputs":[{"internalType":"uint256[]","name":"amountsGiven","type":"uint256[]"},{"internalType":"uint256","name":"tokenIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouter.InitializeHookParams","name":"params","type":"tuple"}],"name":"initializeHook","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"}],"internalType":"struct RouterMock.ManualAddRemoveLiquidityParams","name":"params","type":"tuple"}],"name":"manualAddAndRemoveLiquidity","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"}],"internalType":"struct RouterMock.ManualAddRemoveLiquidityParams","name":"params","type":"tuple"}],"name":"manualAddAndRemoveLiquidityHook","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancyAddLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancyInitializeHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancyQuerySwapHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancyRemoveLiquidityHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancyRemoveLiquidityRecoveryHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualReentrancySwapSingleTokenHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct IRouterCommon.PermitApproval[]","name":"permitBatch","type":"tuple[]"},{"internalType":"bytes[]","name":"permitSignatures","type":"bytes[]"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permit2Batch","type":"tuple"},{"internalType":"bytes","name":"permit2Signature","type":"bytes"},{"internalType":"bytes[]","name":"multicallData","type":"bytes[]"}],"name":"permitBatchAndCall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityCustom","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.AddLiquidityHookParams","name":"params","type":"tuple"}],"name":"queryAddLiquidityHook","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryAddLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquidityCustom","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.RemoveLiquidityHookParams","name":"params","type":"tuple"}],"name":"queryRemoveLiquidityHook","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"}],"name":"queryRemoveLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"}],"name":"queryRemoveLiquidityRecoveryHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryRemoveLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"queryRevertErrorCode","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"queryRevertErrorCodeHook","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"queryRevertLegacy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"queryRevertLegacyHook","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"queryRevertNoReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"queryRevertNoReasonHook","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"queryRevertPanic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"queryRevertPanicHook","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"querySpoof","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"querySpoofHook","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGiven","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouter.SwapSingleTokenHookParams","name":"params","type":"tuple"}],"name":"querySwapHook","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapSingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountCalculated","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapSingleTokenExactInAndRevert","outputs":[{"internalType":"uint256","name":"amountCalculated","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"querySwapSingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountCalculated","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquidityCustom","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouterCommon.RemoveLiquidityHookParams","name":"params","type":"tuple"}],"name":"removeLiquidityHook","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquidityProportional","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecoveryHook","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"removeLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountIn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapSingleTokenExactIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"swapSingleTokenExactOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGiven","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"wethIsEth","type":"bool"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IRouter.SwapSingleTokenHookParams","name":"params","type":"tuple"}],"name":"swapSingleTokenHook","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"finalize_allocation":{"entryPoint":1155,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4714":{"entryPoint":1128,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateSlot":{"entryPoint":1190,"id":6537,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"610120604090808252346104645760608161737380380380916100228285610483565b833981010312610464578051916001600160a01b03918284168403610464576020808201519184831683036104645783015193841684036104645782519461006986610468565b600e86526d4d6f636b20526f7574657220763160901b828701526080528451946001600160401b038611610450575f54906001918281811c91168015610446575b8482101461043257601f81116103ec575b508290601f881160011461038a57968092819261017c969798995f9461037f575b50501b915f199060031b1c1916175f555b83516100f881610468565b600c81526101386b2937baba32b921b7b6b6b7b760a11b91828482015286519061012182610468565b600682526539b2b73232b960d11b858301526104a6565b60a05284519061014782610468565b600c825282820152701a5cd4995d1d5c9b915d1a131bd8dad959607a1b85519261017084610468565b601184528301526104a6565b60c05260e05261010091825251616e1a918261055983396080518281816103db01528181610552015281816106e0015281816108be01528181610b4801528181610da5015281816110d101528181611223015281816113ce015281816116d6015281816117ce01528181611aa801528181611fc5015281816121050152818161228901528181612437015281816126bd015281816128be01528181612a3a0152818161326c0152818161349f0152818161364e015281816136d801528181613c5d01528181613e960152818161472a01528181614a4601528181614acb015281816151130152818161602801528181616242015281816162ec0152818161634c015281816163ac0152818161654e01528181616647015281816167c501528181616a2101528181616ae50152616c2a015260a0518281816105b301528181610ba801528181610ddc0152818161154001528181612322015281816129e0015281816134ff015281816164610152616727015260c0518281816163eb01526166e8015260e051828181602201528181611c4701528181611d93015281816123cf0152818161256f0152818161280801528181612bdc01528181612ecb01528181614c4a01528181614f0d01528181616b6d0152616cc401525181818161269901528181612d7e01528181613807015281816141aa015281816142ac0152614dbf0152f35b015192505f806100dc565b9690601f198216905f8052845f20915f5b8181106103d75750988361017c9798999a106103bf575b505050811b015f556100ed565b01515f1960f88460031b161c191690555f80806103b2565b8a83015184559285019291860191860161039b565b5f8052835f20601f890160051c810191858a10610428575b601f0160051c019083905b82811061041d5750506100bb565b5f815501839061040f565b9091508190610404565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100aa565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b604081019081106001600160401b0382111761045057604052565b601f909101601f19168101906001600160401b0382119082101761045057604052565b90610513603a60209260405193849181808401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952805191829101603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a810184520182610483565b5190205f1981019081116105445760405190602082019081526020825261053982610468565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c8063026b3d9514614fd9578063086fad6614614aa257806308c04793146149845780630c3b846f146148e55780630ca078ec1461484d5780630f7108881461470c578063175d44081461462d57806319c6989f146140085780631d56798d14613e6d57806322717db214613dff57806323b3924114613bfd578063339f383814613be35780633a1b05de146136bb5780633ebc54e51461353e578063452db952146133ba57806345d132fe146133825780634aeecca9146133685780634b59d17c146132e457806351682750146131d157806353d0bb981461311c57806354fd4d5014612fdf57806358307e4414612f765780635b34379114612a115780635e01eb5a146129cc5780635f9815ff1461288957806364c907071461283157806368a24fe01461236357806368d5e16a14612146578063724dba331461202d57806372657d1714611ee2578063750283bc14611e655780637ae3096014611e4b5780637b03c7ba14611a7f57806382bf2b24146119ab57806382cd54fb1461176b57806390aa9f761461175157806394e86ef8146115c65780639de90518146113a7578063aaf51ea31461138d578063ac9650d814611349578063ad6d59f3146112a3578063b037ed361461113f578063b24bd57114610ff5578063b29a62a714610f99578063b3b0a7a714610f85578063be5ae84114610f30578063beb91feb14610e18578063bf6ee3fd14610c7f578063c08bc85114610be7578063c330c7be14610a20578063c3ec0efc14610967578063d3a5152a1461092a578063da001f7d14610799578063e178073e1461074b578063e7326def146105fa578063ecb2182c1461045c5763efd85f140361000e5734610458576102f7366153bc565b6102ff61663d565b6001600160a01b039061031460208201615a2e565b61031d82615a2e565b9261032b6040840184615a42565b9093608081013593600585101561045857836103966103d7966060856103815f9c9b61037199878f9e61036460c061039d9d0187615a96565b9a909b6040519e8f615245565b168d521660208c015236916152d4565b60408901520135606087015260808601615d92565b369161536b565b60a08201526040519485809481937f4af29ec400000000000000000000000000000000000000000000000000000000835260048301616147565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d575f905f925f91610423575b5061041f90604051938493846154b0565b0390f35b905061041f925061044691503d805f833e61043e8183615299565b810190615c92565b909261040e565b6040513d5f823e3d90fd5b5f80fd5b61051261048b5f6105048161054e61047336615879565b97939a929990949161048433616722565b9a83616777565b9790946001600160a01b039b8c96604051946104a6866151f8565b33865260209e8f9116908601526040850152606084015260016080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008c84015260248301615e72565b03601f198101835282615299565b6040519586809481937f48c894910000000000000000000000000000000000000000000000000000000083528b6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d576105a192610599915f916105d8575b50858082518301019101615ed0565b509050615fb6565b51906105b0575b604051908152f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d6105a8565b6105f491503d805f833e6105ec8183615299565b810190615a08565b8661058a565b6105046106a05f806106dc61062b61061136615879565b916106249b959b9a949691939a33616722565b9a8c616777565b50916001600160a01b039560405193610643856151f8565b3385528760209d168d8601526040850152606084015260026080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008b84015260248301615e72565b6040519485809481937f48c894910000000000000000000000000000000000000000000000000000000083528a6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57610722915f91610731575b50838082518301019101615ed0565b5050906105b057604051908152f35b61074591503d805f833e6105ec8183615299565b84610713565b346104585760606003193601126104585761078f61077b61076a61518c565b6107726151b8565b60443591616777565b6040519283926040845260408401906153ee565b9060208301520390f35b34610458576080600319360112610458576107b261518c565b67ffffffffffffffff602435818111610458576107d3903690600401615322565b906107dc6151ce565b606435918211610458576108ba5f929161050461087e61080a610804879636906004016153a1565b93616722565b966001600160a01b039360405191610821836151f8565b3083528560209b168b8401526040830152866060830152600160808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008b84015260248301615d15565b6040519485809481937fedfa35680000000000000000000000000000000000000000000000000000000083528a6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57610900915f91610910575b50838082518301019101615c92565b509190506105b057604051908152f35b61092491503d805f833e6105ec8183615299565b846108f1565b34610458575f600319360112610458577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b34610458575f6003193601126104585761097f616610565b6109bf602061098c616273565b604051809381927f68a24fe000000000000000000000000000000000000000000000000000000000835260048301615f25565b03815f305af1801561044d576109f5575b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b602090813d8311610a19575b610a0b8183615299565b8101031261045857806109d0565b503d610a01565b346104585760a060031936011261045857610a3961518c565b67ffffffffffffffff60443581811161045857610a5a903690600401615322565b91610a636151a2565b91608435908111610458575f93610504610b078694610a92610a8c610b449636906004016153a1565b97616722565b966001600160a01b03948560405193610aaa856151f8565b30855216602084015260408301526024356060830152600360808301528660a083015260c08201526040519283917fb24bd57100000000000000000000000000000000000000000000000000000000602084015260248301615e72565b6040519586809481937fedfa356800000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d5761041f92610b90915f91610bcd575b5060208082518301019101615ed0565b90939192610ba5575b6040519384938461584e565b5f7f00000000000000000000000000000000000000000000000000000000000000005d610b99565b610be191503d805f833e6105ec8183615299565b84610b80565b6105046106a05f806108ba610bfb36615421565b610c0b9993919892949933616722565b986001600160a01b039560405193610c22856151f8565b3385528760209d168d8601526040850152606084015260016080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008b84015260248301615d15565b608060031936011261045857610c9361518c565b67ffffffffffffffff9060243582811161045857610cb5903690600401615322565b906044359283151580940361045857606435908111610458575f92610504610d648594610ce9610da19536906004016153a1565b610cf233616722565b986001600160a01b03958660405194610d0a866151f8565b33865216602085015260408401528760608401526003608084015260a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301615d15565b6040519485809481937f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57610dfe575b50610dd957005b5f7f00000000000000000000000000000000000000000000000000000000000000005d005b610e11903d805f833e6105ec8183615299565b5081610dd2565b34610458575f60031936011261045857610e30616610565b6040516060810181811067ffffffffffffffff821117610f0357610eac915f91604052600281526040366020830137604051809381927f82cd54fb0000000000000000000000000000000000000000000000000000000083528460048401528460248401528460448401526080606484015260848301906153ee565b038183305af1801561044d57610ee1575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b610efc903d805f833e610ef48183615299565b810190615c36565b50806109d0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610458576020610f58610f43366157a2565b610f4b616610565b610f5361663d565b6168ed565b50505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b34610458575f600319360112610458575f80fd5b346104585760a060031936011261045857610fb261518c565b610fba6151b8565b610fc26151ce565b6084359167ffffffffffffffff831161045857602093610fe96105a89436906004016155c8565b93909260643592616532565b3461045857611003366153bc565b61100b61663d565b6001600160a01b0361101f60208301615a2e565b61102883615a2e565b916110366040850185615a42565b9490608082013593600485101561045857836103966110cd96611085611093955f9b606089878f9e61036460c061106e9e0184615a96565b168d521660208c0152013560408a015236916152d4565b606087015260808601615e59565b60a08201526040519485809481937f21457897000000000000000000000000000000000000000000000000000000008352600483016161b7565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d575f905f925f91611115575b5061041f906040519384938461584e565b905061041f925061113891503d805f833e6111308183615299565b810190615ed0565b9092611104565b346104585760406003193601126104585761115861518c565b6001600160a01b0360405190806020937f5f9815ff000000000000000000000000000000000000000000000000000000008585015216602483015230604483015260243560648301526064825260a082019082821067ffffffffffffffff831117610f0357815f91816040527fedfa35680000000000000000000000000000000000000000000000000000000082528560a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608761121e60c482018261548b565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af190811561044d57611267925f9261127c575b5050828082518301019101615c36565b9061041f6040519282849384528301906153ee565b61129c925060a0903d90815f853e6112948285615299565b010190615a08565b8380611257565b34610458575f600319360112610458576112bb616610565b6112fa5f6112c7615c5c565b604051809381927f7b03c7ba00000000000000000000000000000000000000000000000000000000835260048301615e72565b038183305af1801561044d5761132f575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b611342903d805f833e6111308183615299565b50506109d0565b60206003193601126104585760043567ffffffffffffffff81116104585761138161137b61041f923690600401615597565b906163dd565b604051918291826155f6565b34610458575f6003193601126104585760206105a861637d565b34610458576113c16113b8366154d9565b92919390616722565b916001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691604051937fca4f280300000000000000000000000000000000000000000000000000000000855216928360048201525f81602481865afa90811561044d575f916115a4575b50519461144086615e28565b955f5b81811061157f5750505f926105046114c18886956114fd9560405192611468846151f8565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008a84015260248301615d15565b6040519485809481937fedfa3568000000000000000000000000000000000000000000000000000000008352896004840152602483019061548b565b03925af1801561044d57611521915f91611565575b50828082518301019101615c92565b50509161153d575b61041f6040519282849384528301906153ee565b5f7f00000000000000000000000000000000000000000000000000000000000000005d611529565b61157991503d805f833e6105ec8183615299565b84611512565b806fffffffffffffffffffffffffffffffff61159d6001938b615fb6565b5201611443565b6115c091503d805f833e6115b88183615299565b810190615d9e565b86611434565b6115cf366157d5565b949095939193336115df90616722565b97604051996115ed8b615228565b338b5260208b01600190526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e0860152151561010085015236906116449261536b565b6101208301526040517f68a24fe00000000000000000000000000000000000000000000000000000000060208201529182906116839060248301615f25565b03601f19810183526116959083615299565b60405180927f48c894910000000000000000000000000000000000000000000000000000000082526004820160209052602482016116d29161548b565b03827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691815a5f948591f191821561044d575f92611735575b5060208280518101031261045857602080920151906105b057604051908152f35b61174a9192503d805f833e6105ec8183615299565b9082611714565b34610458575f6003193601126104585760206105a861631d565b346104585760806003193601126104585761178461518c565b61178c6151b8565b906064359067ffffffffffffffff8211610458576117b1611827923690600401615322565b906117ba616610565b6117c261663d565b6001600160a01b035f817f00000000000000000000000000000000000000000000000000000000000000001693604051809681927fa07d60400000000000000000000000000000000000000000000000000000000083526044358a8860048601615ba6565b038183875af193841561044d575f9461198f575b5080604051927fca4f28030000000000000000000000000000000000000000000000000000000084521660048301525f82602481865afa91821561044d575f92611973575b505f5b825181101561192f576118968186615fb6565b5190816118a8575b6001915001611883565b826118b38286615fb6565b5116853b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908816602482015260448101929092525f8260648183895af191821561044d57600192611920575b5061189e565b61192990615214565b8761191a565b61041f8561193c886166df565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6040519182916020835260208301906153ee565b6119889192503d805f833e6115b88183615299565b9085611880565b6119a49194503d805f833e610ef48183615299565b928561183b565b5f61050481610b44611a426119bf36615739565b906119cf98949295939833616722565b986001600160a01b039687604051956119e7876151f8565b3387521660208601526040850152606084015260036080840152151560a083015260c08201526040519283917f7b03c7ba00000000000000000000000000000000000000000000000000000000602084015260248301615e72565b6040519586809481937f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b3461045857611a8d366153bc565b611a95616610565b611a9d61663d565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000166020830191611ad683615a2e565b90611ae085615a2e565b91611aee6040870187615a42565b9190936080880135916004831015610458578461039661106e94611085611b5e995f9860608f87611b269a61036460c0840184615a96565b60a0820152604051809481927f21457897000000000000000000000000000000000000000000000000000000008352600483016161b7565b038183875af191821561044d575f945f915f94611e24575b50611b8090615a2e565b9282604051947fca4f28030000000000000000000000000000000000000000000000000000000086521660048501526024915f85602481895afa94851561044d575f95611e08575b50909560a0880191905f5b8651811015611dc357611be68184615fb6565b51908115611dba5786611bf9828a615fb6565b5116611c0486615b81565b80611d8f575b15611d0d5750883b1561045857886040517fae6393290000000000000000000000000000000000000000000000000000000081525f81606481838d7f000000000000000000000000000000000000000000000000000000000000000016968760048401528d30908401528960448401525af1801561044d57611cfe575b50803b15610458575f809188604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528860048401525af192831561044d5788611ce38e611ce994600197611cef575b50615a2e565b16616cf5565b01611bd3565b611cf890615214565b5f611cdd565b611d0790615214565b8c611c87565b611d168c615a2e565b8a3b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260448101929092525f82606481838d5af191821561044d57600192611d80575b50611ce9565b611d8990615214565b8b611d7a565b50877f0000000000000000000000000000000000000000000000000000000000000000168114611c0a565b60019150611ce9565b5061041f88611dd9611dd48c615a2e565b6166df565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6040519384938461584e565b611e1d9195503d805f833e6115b88183615299565b9388611bc8565b909350611b809550611e4091503d805f833e6111308183615299565b919590919390611b76565b34610458575f6003193601126104585760206105a86162bd565b611e6e366157d5565b94909593919333611e7e90616722565b9760405199611e8c8b615228565b338b5260208b015f90526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e0860152151561010085015236906116449261536b565b60c060031936011261045857611ef661518c565b611efe6151b8565b611f06615340565b60a4359067ffffffffffffffff8211610458575f611fc1611f2c829436906004016153a1565b92610504610512611f4a611f3f33616722565b98604435908b616777565b966001600160a01b039460405192611f61846151f8565b3384528660209d168d8501526040840152606435606084015260026080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008c84015260248301615d15565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d576105a19261200c915f91612013575b50858082518301019101615c92565b5050615fb6565b61202791503d805f833e6105ec8183615299565b86611ffd565b6105046120c55f8061210161204136615421565b612052999391999892949833616722565b996001600160a01b039560405193612069856151f8565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008a84015260248301615d15565b6040519485809481937f48c89491000000000000000000000000000000000000000000000000000000008352896004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57611521915f916115655750828082518301019101615c92565b3461045857612154366156d6565b61215d33616722565b6001600160a01b0390604051906020937f3a1b05de0000000000000000000000000000000000000000000000000000000085840152846024840152836121a2826151e4565b166044840152836121b48683016151e4565b16606484015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104585781019085823592019467ffffffffffffffff94858411610458578360051b3603871361045857612249816122859460606122335f9b8c996080608487015260c4860191615ae7565b91013560a483015203601f198101835282615299565b6040519687809481937f48c894910000000000000000000000000000000000000000000000000000000083528b6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af192831561044d575f93612347575b50825183019360808482870196031261045857808401518381116104585785826122e592870101615bd5565b9360408101519560608201519260808301519586116104585761041f9561230d930101615bd5565b9161231f575b60405194859485615708565b5f7f00000000000000000000000000000000000000000000000000000000000000005d612313565b61235c9193503d805f833e6105ec8183615299565b91846122b9565b3461045857612371366157a2565b612379616610565b61238161663d565b61238a816168ed565b612398606085939501615a2e565b906123a283615a2e565b946101008401956123b287615b81565b806127fc575b156126795750804710612651576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008181169291833b15610458576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048187895af1801561044d57612642575b507f00000000000000000000000000000000000000000000000000000000000000001690604051936124c85f80602097888101907fa9059cbb0000000000000000000000000000000000000000000000000000000082526124b3816105048b8b60248401602090939291936001600160a01b0360408201951681520152565b519082865af16124c1615fca565b9083616d80565b805190868215159283612629575b5050506125fe57506040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0391909116600482015260248101929092528290829060449082905f905af1801561044d576125d5575b5050602094612564915b61254885615a2e565b9161255e61255860808801615a2e565b91615b81565b92616ac5565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000169116146125c3575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b611dd46125cf91615a2e565b82612597565b813d83116125f7575b6125e88183615299565b81010312610458578580612535565b503d6125de565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6126399350820181019101615b8e565b158b86816124d6565b61264b90615214565b89612434565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b8161268d575b50506020946125649161253f565b6001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691807f000000000000000000000000000000000000000000000000000000000000000016916126e78561669b565b93803b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015294821660448601529187161660648401525f908390608490829084905af190811561044d575f936020936127ad936127ed575b506040519485809481937f15afd4090000000000000000000000000000000000000000000000000000000083528a60048401602090939291936001600160a01b0360408201951681520152565b03925af1801561044d576127c2575b8061267f565b602090813d83116127e6575b6127d88183615299565b8101031261045857856127bc565b503d6127ce565b6127f690615214565b8a612760565b506001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016908516146123b8565b34610458575f60031936011261045857612849616610565b6109bf6020612856616273565b604051809381927fbe5ae84100000000000000000000000000000000000000000000000000000000835260048301615f25565b34610458576060600319360112610458576128a261518c565b6128aa6151b8565b6128b261663d565b6001600160a01b0390817f000000000000000000000000000000000000000000000000000000000000000016604051927fca4f2803000000000000000000000000000000000000000000000000000000008452841660048401525f83602481845afa93841561044d575f61293361296e96829683916129b2575b5051615e28565b93604051968795869485937fa07d60400000000000000000000000000000000000000000000000000000000085526044359160048601615ba6565b03925af1801561044d5761041f915f91612998575b506040519182916020835260208301906153ee565b6129ac91503d805f833e610ef48183615299565b82612983565b6129c691503d8085833e6115b88183615299565b8861292c565b34610458575f6003193601126104585760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b3461045857612a1f366153bc565b612a27616610565b612a2f61663d565b6001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001660209182840193612a6a85615a2e565b94612a7482615a2e565b95612a826040840184615a42565b91909760808501359160058310156104585786610396612ac694612ad5612b259d5f988e86612aed99612ab98f60c0810190615a96565b99909a6040519d8e615245565b168c5216908a015236916152d4565b60408701526060890135606087015260808601615d92565b60a0820152604051809881927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301616147565b038183885af191821561044d575f915f975f94612f4d575b50612b4790615a2e565b84604051917fca4f28030000000000000000000000000000000000000000000000000000000083521660048201525f81602481895afa90811561044d575f91612f33575b50929660a0820193905f5b8251811015612ef25786612baa8285615fb6565b5116612bb68287615fb6565b51908115612e8557612bc788615b81565b80612ec7575b15612d7a5750804710612651577f000000000000000000000000000000000000000000000000000000000000000088811691823b15610458576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af1801561044d57612c96948e928492612d6b575b508d5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af191821561044d57612cf7938d93612d40575b5060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af190811561044d578a91612d17575b50506001905b01612b96565b813d8311612d39575b612d2a8183615299565b8101031261045857888b612d0b565b503d612d20565b612d5f90843d8611612d64575b612d578183615299565b810190615b8e565b612cac565b503d612d4d565b612d7490615214565b5f612c48565b90887f00000000000000000000000000000000000000000000000000000000000000001690612da887615a2e565b612db18261669b565b833b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201528d831660248201529082166044820152908416606482015292915f908490608490829084905af191821561044d57612e71938d93612eb8575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af190811561044d578a91612e8f575b5050600190612d11565b813d8311612eb1575b612ea28183615299565b8101031261045857888b612e85565b503d612e98565b612ec190615214565b8e612cac565b50887f0000000000000000000000000000000000000000000000000000000000000000168114612bcd565b508361041f8a612f04611dd487615a2e565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051938493846154b0565b612f4791503d805f833e6115b88183615299565b88612b8b565b909350612f6a919750612b4792503d805f833e61043e8183615299565b97919290979390612b3d565b34610458575f60031936011261045857612fdb6040516104d2602082015260208152612fa18161527d565b6040519182917f5ab64fb800000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b0390fd5b34610458575f600319360112610458576040515f80549060018260011c9160018416918215613112575b60209485851084146130e55785879486865291825f146130a757505060011461304e575b5061303a92500383615299565b61041f60405192828493845283019061548b565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061308f57505061303a93508201018561302d565b80548389018501528794508693909201918101613078565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168582015261303a95151560051b850101925087915061302d9050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f1692613009565b346104585761314d6131465f806106dc61087e61050461313b36615677565b95939a929990616722565b988a616777565b506001600160a01b039360405191613164836151f8565b3083528560209b168b84015260408301526fffffffffffffffffffffffffffffffff6060830152600260808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008b84015260248301615e72565b6105046120c55f806132686131e536615739565b6131f59993949892919933616722565b996001600160a01b03956040519361320c856151f8565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008a84015260248301615e72565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d576132ae915f916132ca575b50828082518301019101615ed0565b5092905061153d5761041f6040519282849384528301906153ee565b6132de91503d805f833e6105ec8183615299565b8461329f565b34610458575f600319360112610458576132fc616610565b6109bf602060405161330d816151f8565b5f81525f82820152606060408201526060808201525f60808201525f60a0820152606060c0820152604051809381927f086fad660000000000000000000000000000000000000000000000000000000083526004830161590f565b34610458575f6003193601126104585760206105a8616213565b34610458575f600319360112610458577ff5ab33e5000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104585760a0600319360112610458576133d361518c565b67ffffffffffffffff602435818111610458576133f4903690600401615322565b916133fd6151a2565b91608435908111610458575f93610504610b078694613426610a8c61349b9636906004016153a1565b966001600160a01b0394856040519361343e856151f8565b30855216602084015260408301526044356060830152600460808301528660a083015260c08201526040519283917fefd85f1400000000000000000000000000000000000000000000000000000000602084015260248301615d15565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d5761041f926134e7915f91613524575b5060208082518301019101615c92565b909391926134fc575b604051938493846154b0565b5f7f00000000000000000000000000000000000000000000000000000000000000005d6134f0565b61353891503d805f833e6105ec8183615299565b846134d7565b346104585761354c3661552b565b9061355a9094939294616722565b936001600160a01b038093816040519661357388615228565b3388528160209a8b8a015f905216604089015216606087015216608085015260a084015260c083015f905260e083016fffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae84100000000000000000000000000000000000000000000000000000000905260248201906135fc91615f25565b03601f198101835261360e9083615299565b6040518080937fedfa35680000000000000000000000000000000000000000000000000000000082528660048301526024820161364a9161548b565b03917f00000000000000000000000000000000000000000000000000000000000000001691815a5f948591f190811561044d575f916136a1575b50828180518101031261045857820151906105b057604051908152f35b6136b591503d805f833e6105ec8183615299565b83613684565b34610458576136c9366156d6565b6001600160a01b039061379e827f0000000000000000000000000000000000000000000000000000000000000000169161370281615a2e565b6020935f8584019261371384615a2e565b6137516137236040880188615a42565b8b6040519461373186615261565b878652816040519761374289615245565b168752168b86015236916152d4565b60408301526060860135606083015282608083015260a0820152604051809681927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301616147565b038183855af195861561044d575f945f97613bc1575b506137be84615a2e565b81604051917fca4f28030000000000000000000000000000000000000000000000000000000083521660048201525f81602481865afa90811561044d575f91613ba7575b5093967f0000000000000000000000000000000000000000000000000000000000000000821694905f5b825181101561397657836138408285615fb6565b511661384c828a615fb6565b51801561396c5761385c88615a2e565b906138668161669b565b918a3b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015289821660248201529281166044840152831660648301529091905f83608481838e5af191821561044d57613923938d93612eb8575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8a5af190811561044d578a91613943575b50506001905b0161382c565b813d8311613965575b6139568183615299565b8101031261045857888b613937565b503d61394c565b505060019061393d565b5091939450919661398681615a2e565b908461399a61399488615a2e565b92615a2e565b16888660246139a88a615a2e565b60405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa90811561044d575f91613b72575b5090613a6c985f93926139fc8751615e28565b918860405194613a0b86615261565b8786528160405197613a1c89615245565b16875216908501526040840152606083015282608083015260a0820152604051809881927f21457897000000000000000000000000000000000000000000000000000000008352600483016161b7565b0381838b5af194851561044d575f965f96613b50575b505f5b8351811015613b3e5784613a998286615fb6565b511690613aa68189615fb6565b518015613b3457613ab688615a2e565b908b3b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03948516600482015291909316602482015260448101929092525f82606481838e5af191821561044d57600192613b25575b505b01613a85565b613b2e90615214565b8a613b1d565b5060019150613b1f565b5061041f868860405194859485615708565b909650613b689195503d805f833e6111308183615299565b9591969095613a82565b929190508883813d8311613ba0575b613b8b8183615299565b81010312610458579151909190613a6c6139e9565b503d613b81565b613bbb91503d805f833e6115b88183615299565b88613802565b909450613bd99196503d805f833e61043e8183615299565b96919490966137b4565b34610458575f6003193601126104585760206105a8615ff9565b346104585760a060031936011261045857613c1661518c565b613c1e6151ce565b90613c276151a2565b60843567ffffffffffffffff811161045857613c4a613c509136906004016153a1565b91616722565b916001600160a01b0391827f0000000000000000000000000000000000000000000000000000000000000000169280604051937fc9c1661b0000000000000000000000000000000000000000000000000000000085521695866004850152166024830152604082604481865afa91821561044d575f905f93613dc0575b505f93610504613d5c8694613ce4613d9895615e28565b906001613cf18984615fb6565b5260405191613cff836151f8565b30835260209b8c84015260408301526024356060830152600160808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008c84015260248301615e72565b6040519586809481937fedfa35680000000000000000000000000000000000000000000000000000000083528b6004840152602483019061548b565b03925af191821561044d576105a192610599915f916105d85750858082518301019101615ed0565b925050916040823d604011613df7575b81613ddd60409383615299565b81010312610458578151602090920151909290915f613ccd565b3d9150613dd0565b34610458575f6003193601126104585760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c65676163792072657665727420726561736f6e0000000000000000000000006044820152fd5b3461045857613e89613e7e36615677565b929490939193616722565b926001600160a01b0392837f0000000000000000000000000000000000000000000000000000000000000000169380604051947fc9c1661b0000000000000000000000000000000000000000000000000000000086521696876004860152166024840152604083604481875afa92831561044d575f905f94613fcb575b5093610504613d5c5f9694613fa394613f1f8997615e28565b916fffffffffffffffffffffffffffffffff613f3b8a85615fb6565b5260405192613f49846151f8565b30845260209c8d85015260408401526060830152600260808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008c84015260248301615d15565b03925af191821561044d576105a19261200c915f916120135750858082518301019101615c92565b9350506040833d604011614000575b81613fe760409383615299565b8101031261045857825160209093015192610504613f06565b3d9150613fda565b60a06003193601126104585767ffffffffffffffff60043511610458573660236004350112156104585767ffffffffffffffff60043560040135116104585736602460c060043560040135026004350101116104585760243567ffffffffffffffff81116104585761407e903690600401615597565b67ffffffffffffffff60443511610458576060600319604435360301126104585760643567ffffffffffffffff8111610458576140bf9036906004016155c8565b60843567ffffffffffffffff8111610458576140df903690600401615597565b9490936140ea616610565b806004356004013503614605575f5b60043560040135811061437a5750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030182121561045857816044350160048101359067ffffffffffffffff82116104585760248260071b36039101136104585761419d575b61041f61138186865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6163dd565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b1561045857604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff60048301351161045857600482013560071b360385136104585760606064890152600482013590529192869260e484019291905f905b600481013582106142fc5750505082915f9461429f926001600160a01b0361427d6024604435016151e4565b16608486015260448035013560a4860152600319858403016044860152615b24565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d5761041f93611381936142ed575b82945081935061416d565b6142f690615214565b846142e2565b9195945091926001600160a01b03614313876151e4565b168152602080870135916001600160a01b0383168093036104585760049260019282015261434360408901616764565b65ffffffffffff809116604083015261435e60608a01616764565b1660608201526080809101970193019050889495939291614251565b61438861039682848661651b565b6040519081606081011067ffffffffffffffff606084011117610f0357606082016040525f82525f60208301525f6040830152602081015190606060408201519101515f1a9183526020830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8184026004350136030112610458576040519061441982615245565b61442c602460c0850260043501016151e4565b808352614442604460c0860260043501016151e4565b9081602085015261445c606460c0870260043501016151e4565b60408581019190915260043560c08702016084810135606087015260a4810135608087015260c4013560a0860152830151835160209094015160ff91909116926001600160a01b0383163b15610458575f6001600160a01b03809460e4948a98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af190816145f6575b506145ed5761453b615fca565b906001600160a01b038151169060206001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa91821561044d575f926145b8575b5060600151036145b357506001905b016140f9565b616d71565b9091506020813d6020116145e5575b816145d460209383615299565b81010312610458575190606061459e565b3d91506145c7565b506001906145ad565b6145ff90615214565b8961452e565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104585761463b3661552b565b906146499094939294616722565b936001600160a01b038093816040519661466288615228565b3388528160209a8b8a016001905216604089015216606087015216608085015260a084015260c083016fffffffffffffffffffffffffffffffff905260e083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae84100000000000000000000000000000000000000000000000000000000905260248201906135fc91615f25565b346104585761471d6113b8366154d9565b926001600160a01b0392837f00000000000000000000000000000000000000000000000000000000000000001693604051937fca4f280300000000000000000000000000000000000000000000000000000000855216938460048501525f84602481845afa93841561044d576114c15f9594614810946147a98897610504958991614833575051615e28565b91604051926147b7846151f8565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008a84015260248301615e72565b03925af1801561044d576132ae915f916132ca5750828082518301019101615ed0565b61484791503d808b833e6115b88183615299565b8c61292c565b5f6105048161349b611a4261486136615421565b906148729894929895939533616722565b986001600160a01b0396876040519561488a876151f8565b3387521660208601526040850152606084015260046080840152151560a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301615d15565b34610458575f600319360112610458576148fd616610565b61493c5f614909615c5c565b604051809381927f5b34379100000000000000000000000000000000000000000000000000000000835260048301615d15565b038183305af1801561044d57614971575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b611342903d805f833e61043e8183615299565b60606003193601126104585761499861518c565b60443567ffffffffffffffff8111610458575f6105046149ff6149c2614a39943690600401615322565b6040519283916020977f82cd54fb000000000000000000000000000000000000000000000000000000008985015260243590339060248601615ba6565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352866004840152602483019061548b565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57611267915f91614a88575b50828082518301019101615c36565b614a9c91503d805f833e6105ec8183615299565b83614a79565b3461045857614ab0366153bc565b614ab8616610565b614ac061663d565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000169080614af960208501615a2e565b93614b0381615a2e565b946040820195614b138784615a42565b9092614b226060860186615a42565b83614b3360c0899894980189615a96565b9590946040519a8b987fba8a2be0000000000000000000000000000000000000000000000000000000008a528160c48b01931660048b015216602489015260c060448901525260e4860192905f5b818110614fae5750505092614bc592614bac60209793879660031995868984030160648a0152615ae7565b92608089013560848701528584030160a4860152615b24565b03815f885af191821561044d575f92614f7a575b50909360a0820191905f5b614bee8284615a42565b9050811015614f4057614c13614c0e82614c088587615a42565b90615b44565b615a2e565b614c2482614c086060870187615a42565b35908115614f3657614c3586615b81565b80614f09575b15614dbc5750804710612651577f000000000000000000000000000000000000000000000000000000000000000086811691823b15610458576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af1801561044d57614d05946020928492614dad575b508b5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af191821561044d57614d6693602093612d40575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af1801561044d57614d82575b506001905b01614be4565b602090813d8311614da6575b614d988183615299565b810103126104585787614d77565b503d614d8e565b614db690615214565b8d614cb7565b867f00000000000000000000000000000000000000000000000000000000000000001691614de986615a2e565b92614df38261669b565b813b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0395861660048201528b861660248201529085166044820152838a1690941660648501525f908490608490829084905af191821561044d57614eb593602093614efa575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af1801561044d57614ecf575b50600190614d7c565b602090813d8311614ef3575b614ee58183615299565b810103126104585787614ec6565b503d614edb565b614f0390615214565b8b612cac565b50867f00000000000000000000000000000000000000000000000000000000000000001687821614614c3b565b5050600190614d7c565b602087614f4f611dd486615a2e565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b9091506020813d602011614fa6575b81614f9660209383615299565b8101031261045857519085614bd9565b3d9150614f89565b919495965091926020806001928d614fc5896151e4565b168152019501910191899695949392614b81565b60c060031936011261045857614fed61518c565b6024359067ffffffffffffffff90818311610458573660238401121561045857826004013561501b816152bc565b906150296040519283615299565b80825260209460248684019260051b82010191368311610458576024879201905b83821061517557505050506044358381116104585761506d903690600401615322565b90615076615340565b60a435948511610458576120c55f959461510f946105049361509d899836906004016153a1565b916001600160a01b039687604051956150b5876151f8565b338752168c860152604085015260608401526064356080840152151560a083015260c08201526040519283917f086fad66000000000000000000000000000000000000000000000000000000008a8401526024830161590f565b03927f0000000000000000000000000000000000000000000000000000000000000000165af190811561044d575f9161515b575b50818180518101031261045857810151604051908152f35b61516f91503d805f833e6105ec8183615299565b82615143565b828091615181846151e4565b81520191019061504a565b600435906001600160a01b038216820361045857565b606435906001600160a01b038216820361045857565b602435906001600160a01b038216820361045857565b604435906001600160a01b038216820361045857565b35906001600160a01b038216820361045857565b60e0810190811067ffffffffffffffff821117610f0357604052565b67ffffffffffffffff8111610f0357604052565b610140810190811067ffffffffffffffff821117610f0357604052565b60c0810190811067ffffffffffffffff821117610f0357604052565b6020810190811067ffffffffffffffff821117610f0357604052565b6040810190811067ffffffffffffffff821117610f0357604052565b90601f601f19910116810190811067ffffffffffffffff821117610f0357604052565b67ffffffffffffffff8111610f035760051b60200190565b92916152df826152bc565b916152ed6040519384615299565b829481845260208094019160051b810192831161045857905b8282106153135750505050565b81358152908301908301615306565b9080601f830112156104585781602061533d933591016152d4565b90565b60843590811515820361045857565b67ffffffffffffffff8111610f0357601f01601f191660200190565b9291926153778261534f565b916153856040519384615299565b829481845281830111610458578281602093845f960137010152565b9080601f830112156104585781602061533d9335910161536b565b60031990602082820112610458576004359167ffffffffffffffff8311610458578260e0920301126104585760040190565b9081518082526020808093019301915f5b82811061540d575050505090565b8351855293810193928101926001016153ff565b9060a0600319830112610458576004356001600160a01b0381168103610458579167ffffffffffffffff90602435828111610458578161546391600401615322565b9260443592606435801515810361045857926084359182116104585761533d916004016153a1565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6154c661533d94926060835260608301906153ee565b926020820152604081840391015261548b565b6080600319820112610458576001600160a01b03906004358281168103610458579260243592604435908116810361045857916064359067ffffffffffffffff82116104585761533d916004016153a1565b60c0600319820112610458576001600160a01b0391600435838116810361045857926024358181168103610458579260443582811681036104585792606435926084359081168103610458579160a4359067ffffffffffffffff82116104585761533d916004016153a1565b9181601f840112156104585782359167ffffffffffffffff8311610458576020808501948460051b01011161045857565b9181601f840112156104585782359167ffffffffffffffff8311610458576020838186019501011161045857565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b84831061562b5750505050505090565b9091929394958480615667837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a5161548b565b980193019301919493929061561b565b9060a0600319830112610458576001600160a01b03600435818116810361045857926024358281168103610458579260443592606435908116810361045857916084359067ffffffffffffffff82116104585761533d916004016153a1565b60031990602082820112610458576004359167ffffffffffffffff831161045857826080920301126104585760040190565b909261572161533d9593946080845260808401906153ee565b936020830152604082015260608184039101526153ee565b60a0600319820112610458576004356001600160a01b038116810361045857916024359167ffffffffffffffff91604435838111610458578261577e91600401615322565b92606435801515810361045857926084359182116104585761533d916004016153a1565b60031990602082820112610458576004359167ffffffffffffffff83116104585782610140920301126104585760040190565b610100600319820112610458576001600160a01b0390600435828116810361045857926024358381168103610458579260443590811681036104585791606435916084359160a4359160c4358015158103610458579160e4359067ffffffffffffffff82116104585761584a916004016155c8565b9091565b9161586b9061533d949284526060602085015260608401906153ee565b91604081840391015261548b565b60c0600319820112610458576001600160a01b0390600435828116810361045857926024359260443590811681036104585791606435916084358015158103610458579160a4359067ffffffffffffffff82116104585761533d916004016153a1565b9081518082526020808093019301915f5b8281106158fb575050505090565b8351855293810193928101926001016158ed565b91906020928381526101008101906001600160a01b03948584511681830152858185015116604083015260408401519260e0606084015283518091528161012084019401915f5b8281106159ac575050505061533d93945060e060c0615987606086015194601f1995868683030160808701526158dc565b94608081015160a085015260a08101511515828501520151928285030191015261548b565b8351891686529481019492810192600101615956565b81601f82011215610458578051906159d98261534f565b926159e76040519485615299565b8284526020838301011161045857815f9260208093018386015e8301015290565b9060208282031261045857815167ffffffffffffffff81116104585761533d92016159c2565b356001600160a01b03811681036104585790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610458570180359067ffffffffffffffff821161045857602001918160051b3603831361045857565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610458570180359067ffffffffffffffff82116104585760200191813603831361045857565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104585760209260051b809284830137010190565b601f8260209493601f1993818652868601375f8582860101520116010190565b9190811015615b545760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b3580151581036104585790565b90816020910312610458575180151581036104585790565b909261533d94936080936001600160a01b038092168452166020830152604082015281606082015201906153ee565b9080601f8301121561045857815190602091615bf0816152bc565b93615bfe6040519586615299565b81855260208086019260051b82010192831161045857602001905b828210615c27575050505090565b81518152908301908301615c19565b9060208282031261045857815167ffffffffffffffff81116104585761533d9201615bd5565b60405190615c69826151f8565b606060c0835f81525f60208201528260408201525f838201525f60808201525f60a08201520152565b90916060828403126104585781519167ffffffffffffffff928381116104585784615cbe918301615bd5565b9360208201519360408301519081116104585761533d92016159c2565b906005821015615ce85752565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9061533d91602081526001600160a01b03808351166020830152602083015116604082015260c0615d56604084015160e060608501526101008401906158dc565b9260608101516080840152615d73608082015160a0850190615cdb565b60a081015115158284015201519060e0601f198285030191015261548b565b6005821015615ce85752565b60209081818403126104585780519067ffffffffffffffff821161045857019180601f84011215610458578251615dd4816152bc565b93615de26040519586615299565b818552838086019260051b820101928311610458578301905b828210615e09575050505090565b81516001600160a01b0381168103610458578152908301908301615dfb565b90615e32826152bc565b615e3f6040519182615299565b828152601f19615e4f82946152bc565b0190602036910137565b6004821015615ce85752565b906004821015615ce85752565b9061533d91602081526001600160a01b03808351166020830152602083015116604082015260c0615eb3604084015160e060608501526101008401906158dc565b9260608101516080840152615d73608082015160a0850190615e65565b916060838303126104585782519260208101519267ffffffffffffffff938481116104585781615f01918401615bd5565b9360408301519081116104585761533d92016159c2565b906002821015615ce85752565b61016061533d92602083526001600160a01b03808251166020850152615f5360208301516040860190615f18565b80604083015116606085015280606083015116608085015260808201511660a084015260a081015160c084015260c081015160e084015260e08101516101009081850152810151906101209115158285015201519161014080820152019061548b565b8051821015615b545760209160051b010190565b3d15615ff4573d90615fdb8261534f565b91615fe96040519384615299565b82523d5f602084013e565b606090565b6040517f22717db2000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b803b15610458576160a55f929183926040519485809481937f757d64b300000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b03925af19081616138575b506160d9576160c56160c0615fca565b616851565b602081805181010312610458576020015190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e6578706563746564207375636365737300000000000000000000000000006044820152606490fd5b61614190615214565b5f6160b0565b9061533d91602081526001600160a01b03808351166020830152602083015116604082015260a0616187604084015160c0606085015260e08401906158dc565b92606081015160808401526161a3608082015183850190615cdb565b01519060c0601f198285030191015261548b565b9061533d91602081526001600160a01b0380835116602083015260208301511660408201526040820151606082015260a0616201606084015160c0608085015260e08401906158dc565b926161a3608082015183850190615e65565b6040517f58307e44000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b6040519061628082615228565b6060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b6040517f45d132fe000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b6040517fb3b0a7a7000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b6040517fd3a5152a000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b91906163e833616722565b907f000000000000000000000000000000000000000000000000000000000000000093845c6164f3576001906001865d616421836152bc565b9261642f6040519485615299565b808452601f1961643e826152bc565b015f5b8181106164e25750505f5b8181106164995750505050905f61648e92945d7f0000000000000000000000000000000000000000000000000000000000000000805c91616490575b506166df565b565b5f905d5f616488565b806164c65f806164ae6103968996888a61651b565b602081519101305af46164bf615fca565b9030616d80565b6164d08288615fb6565b526164db8187615fb6565b500161644c565b806060602080938901015201616441565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b90821015615b545761584a9160051b810190615a96565b919361660295616059946165c793966001600160a01b039081807f00000000000000000000000000000000000000000000000000000000000000001699816040519961657d8b615228565b338b525f60208c01521660408a015216606088015216608086015260a08501525f60c08501526fffffffffffffffffffffffffffffffff60e08501525f610100850152369161536b565b6101208201526040519384917fbe5ae84100000000000000000000000000000000000000000000000000000000602084015260248301615f25565b03601f198101845283615299565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6164f3576001905d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361666f57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6001600160a01b03908181116166af571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b47801561671e577f00000000000000000000000000000000000000000000000000000000000000005c61671e576001600160a01b0361648e9216616cf5565b5050565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c161561675a575050565b909192505d600190565b359065ffffffffffff8216820361045857565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa938415616847575f935f95616810575b505061680d6168068594615e28565b9485615fb6565b52565b809295508194503d8311616840575b6168298183615299565b810103126104585760208251920151925f806167f7565b503d61681f565b83513d5f823e3d90fd5b60048151106168c5577f5ab64fb8000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000602083015116036145b357806024602061533d9351600319810160048501528301019101615a08565b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b60e08101354211616a9d576001600160a01b0360208201359160028310156104585760409261691d828501615a2e565b9280606094859384860161693090615a2e565b9561693d60808201615a2e565b908461694d610120830183615a96565b91908c519561695b876151f8565b8652816020870197168752818d87019b168b52818a870195168552608086019260a0850135845260a087019460c00135855236906169989261536b565b9360c08601948552818d519b8c9a8b998a997f2bfb780c000000000000000000000000000000000000000000000000000000008b5260048b016020905260248b019051906169e591615f18565b5116604489015251166064870152511660848501525160a48401525160c48301525160e4820160e090526101048201616a1d9161548b565b03917f0000000000000000000000000000000000000000000000000000000000000000165a905f91f1908115616847575f935f935f93616a60575b505050909192565b92509250809350813d8311616a96575b616a7a8183615299565b81010312610458578151602083015191909201515f8080616a58565b503d616a70565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f94938315616ced5780616cb8575b15616c1c576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af1801561044d57616c09575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b15616c055781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af18015616bfa57616be2575b5061648e93945016616cf5565b616bec8691615214565b616bf65784616bd5565b8480fd5b6040513d88823e3d90fd5b5080fd5b616c14919550615214565b5f935f616b68565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af1801561044d57616caf5750565b61648e90615214565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614616ad4565b505050509050565b814710616d45575f8080936001600160a01b038294165af1616d15615fca565b5015616d1d57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b8051156168c557805190602001fd5b90616d955750805115616d1d57805190602001fd5b81511580616ddb575b616da6575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15616d9e56fea2646970667358221220983e2c797d40b453a59b2b23b23a9e996591654be1b95ef19be7c44ec8f2c98664736f6c634300081a0033","opcodes":"PUSH2 0x120 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x464 JUMPI PUSH1 0x60 DUP2 PUSH2 0x7373 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x22 DUP3 DUP6 PUSH2 0x483 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x464 JUMPI DUP1 MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP5 AND DUP5 SUB PUSH2 0x464 JUMPI PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP2 DUP5 DUP4 AND DUP4 SUB PUSH2 0x464 JUMPI DUP4 ADD MLOAD SWAP4 DUP5 AND DUP5 SUB PUSH2 0x464 JUMPI DUP3 MLOAD SWAP5 PUSH2 0x69 DUP7 PUSH2 0x468 JUMP JUMPDEST PUSH1 0xE DUP7 MSTORE PUSH14 0x4D6F636B20526F75746572207631 PUSH1 0x90 SHL DUP3 DUP8 ADD MSTORE PUSH1 0x80 MSTORE DUP5 MLOAD SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 GT PUSH2 0x450 JUMPI PUSH0 SLOAD SWAP1 PUSH1 0x1 SWAP2 DUP3 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x446 JUMPI JUMPDEST DUP5 DUP3 LT EQ PUSH2 0x432 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x3EC JUMPI JUMPDEST POP DUP3 SWAP1 PUSH1 0x1F DUP9 GT PUSH1 0x1 EQ PUSH2 0x38A JUMPI SWAP7 DUP1 SWAP3 DUP2 SWAP3 PUSH2 0x17C SWAP7 SWAP8 SWAP9 SWAP10 PUSH0 SWAP5 PUSH2 0x37F JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE JUMPDEST DUP4 MLOAD PUSH2 0xF8 DUP2 PUSH2 0x468 JUMP JUMPDEST PUSH1 0xC DUP2 MSTORE PUSH2 0x138 PUSH12 0x2937BABA32B921B7B6B6B7B7 PUSH1 0xA1 SHL SWAP2 DUP3 DUP5 DUP3 ADD MSTORE DUP7 MLOAD SWAP1 PUSH2 0x121 DUP3 PUSH2 0x468 JUMP JUMPDEST PUSH1 0x6 DUP3 MSTORE PUSH6 0x39B2B73232B9 PUSH1 0xD1 SHL DUP6 DUP4 ADD MSTORE PUSH2 0x4A6 JUMP JUMPDEST PUSH1 0xA0 MSTORE DUP5 MLOAD SWAP1 PUSH2 0x147 DUP3 PUSH2 0x468 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE DUP3 DUP3 ADD MSTORE PUSH17 0x1A5CD4995D1D5C9B915D1A131BD8DAD959 PUSH1 0x7A SHL DUP6 MLOAD SWAP3 PUSH2 0x170 DUP5 PUSH2 0x468 JUMP JUMPDEST PUSH1 0x11 DUP5 MSTORE DUP4 ADD MSTORE PUSH2 0x4A6 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP2 DUP3 MSTORE MLOAD PUSH2 0x6E1A SWAP2 DUP3 PUSH2 0x559 DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 DUP2 DUP2 PUSH2 0x3DB ADD MSTORE DUP2 DUP2 PUSH2 0x552 ADD MSTORE DUP2 DUP2 PUSH2 0x6E0 ADD MSTORE DUP2 DUP2 PUSH2 0x8BE ADD MSTORE DUP2 DUP2 PUSH2 0xB48 ADD MSTORE DUP2 DUP2 PUSH2 0xDA5 ADD MSTORE DUP2 DUP2 PUSH2 0x10D1 ADD MSTORE DUP2 DUP2 PUSH2 0x1223 ADD MSTORE DUP2 DUP2 PUSH2 0x13CE ADD MSTORE DUP2 DUP2 PUSH2 0x16D6 ADD MSTORE DUP2 DUP2 PUSH2 0x17CE ADD MSTORE DUP2 DUP2 PUSH2 0x1AA8 ADD MSTORE DUP2 DUP2 PUSH2 0x1FC5 ADD MSTORE DUP2 DUP2 PUSH2 0x2105 ADD MSTORE DUP2 DUP2 PUSH2 0x2289 ADD MSTORE DUP2 DUP2 PUSH2 0x2437 ADD MSTORE DUP2 DUP2 PUSH2 0x26BD ADD MSTORE DUP2 DUP2 PUSH2 0x28BE ADD MSTORE DUP2 DUP2 PUSH2 0x2A3A ADD MSTORE DUP2 DUP2 PUSH2 0x326C ADD MSTORE DUP2 DUP2 PUSH2 0x349F ADD MSTORE DUP2 DUP2 PUSH2 0x364E ADD MSTORE DUP2 DUP2 PUSH2 0x36D8 ADD MSTORE DUP2 DUP2 PUSH2 0x3C5D ADD MSTORE DUP2 DUP2 PUSH2 0x3E96 ADD MSTORE DUP2 DUP2 PUSH2 0x472A ADD MSTORE DUP2 DUP2 PUSH2 0x4A46 ADD MSTORE DUP2 DUP2 PUSH2 0x4ACB ADD MSTORE DUP2 DUP2 PUSH2 0x5113 ADD MSTORE DUP2 DUP2 PUSH2 0x6028 ADD MSTORE DUP2 DUP2 PUSH2 0x6242 ADD MSTORE DUP2 DUP2 PUSH2 0x62EC ADD MSTORE DUP2 DUP2 PUSH2 0x634C ADD MSTORE DUP2 DUP2 PUSH2 0x63AC ADD MSTORE DUP2 DUP2 PUSH2 0x654E ADD MSTORE DUP2 DUP2 PUSH2 0x6647 ADD MSTORE DUP2 DUP2 PUSH2 0x67C5 ADD MSTORE DUP2 DUP2 PUSH2 0x6A21 ADD MSTORE DUP2 DUP2 PUSH2 0x6AE5 ADD MSTORE PUSH2 0x6C2A ADD MSTORE PUSH1 0xA0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x5B3 ADD MSTORE DUP2 DUP2 PUSH2 0xBA8 ADD MSTORE DUP2 DUP2 PUSH2 0xDDC ADD MSTORE DUP2 DUP2 PUSH2 0x1540 ADD MSTORE DUP2 DUP2 PUSH2 0x2322 ADD MSTORE DUP2 DUP2 PUSH2 0x29E0 ADD MSTORE DUP2 DUP2 PUSH2 0x34FF ADD MSTORE DUP2 DUP2 PUSH2 0x6461 ADD MSTORE PUSH2 0x6727 ADD MSTORE PUSH1 0xC0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x63EB ADD MSTORE PUSH2 0x66E8 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 DUP2 DUP2 PUSH1 0x22 ADD MSTORE DUP2 DUP2 PUSH2 0x1C47 ADD MSTORE DUP2 DUP2 PUSH2 0x1D93 ADD MSTORE DUP2 DUP2 PUSH2 0x23CF ADD MSTORE DUP2 DUP2 PUSH2 0x256F ADD MSTORE DUP2 DUP2 PUSH2 0x2808 ADD MSTORE DUP2 DUP2 PUSH2 0x2BDC ADD MSTORE DUP2 DUP2 PUSH2 0x2ECB ADD MSTORE DUP2 DUP2 PUSH2 0x4C4A ADD MSTORE DUP2 DUP2 PUSH2 0x4F0D ADD MSTORE DUP2 DUP2 PUSH2 0x6B6D ADD MSTORE PUSH2 0x6CC4 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x2699 ADD MSTORE DUP2 DUP2 PUSH2 0x2D7E ADD MSTORE DUP2 DUP2 PUSH2 0x3807 ADD MSTORE DUP2 DUP2 PUSH2 0x41AA ADD MSTORE DUP2 DUP2 PUSH2 0x42AC ADD MSTORE PUSH2 0x4DBF ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xDC JUMP JUMPDEST SWAP7 SWAP1 PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x3D7 JUMPI POP SWAP9 DUP4 PUSH2 0x17C SWAP8 SWAP9 SWAP10 SWAP11 LT PUSH2 0x3BF JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH2 0xED JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x3B2 JUMP JUMPDEST DUP11 DUP4 ADD MLOAD DUP5 SSTORE SWAP3 DUP6 ADD SWAP3 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x39B JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP4 PUSH0 KECCAK256 PUSH1 0x1F DUP10 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 DUP6 DUP11 LT PUSH2 0x428 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 DUP4 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x41D JUMPI POP POP PUSH2 0xBB JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP4 SWAP1 PUSH2 0x40F JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x404 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xAA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x450 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x450 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x513 PUSH1 0x3A PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 DUP2 DUP1 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x483 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x544 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x539 DUP3 PUSH2 0x468 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26B3D95 EQ PUSH2 0x4FD9 JUMPI DUP1 PUSH4 0x86FAD66 EQ PUSH2 0x4AA2 JUMPI DUP1 PUSH4 0x8C04793 EQ PUSH2 0x4984 JUMPI DUP1 PUSH4 0xC3B846F EQ PUSH2 0x48E5 JUMPI DUP1 PUSH4 0xCA078EC EQ PUSH2 0x484D JUMPI DUP1 PUSH4 0xF710888 EQ PUSH2 0x470C JUMPI DUP1 PUSH4 0x175D4408 EQ PUSH2 0x462D JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x4008 JUMPI DUP1 PUSH4 0x1D56798D EQ PUSH2 0x3E6D JUMPI DUP1 PUSH4 0x22717DB2 EQ PUSH2 0x3DFF JUMPI DUP1 PUSH4 0x23B39241 EQ PUSH2 0x3BFD JUMPI DUP1 PUSH4 0x339F3838 EQ PUSH2 0x3BE3 JUMPI DUP1 PUSH4 0x3A1B05DE EQ PUSH2 0x36BB JUMPI DUP1 PUSH4 0x3EBC54E5 EQ PUSH2 0x353E JUMPI DUP1 PUSH4 0x452DB952 EQ PUSH2 0x33BA JUMPI DUP1 PUSH4 0x45D132FE EQ PUSH2 0x3382 JUMPI DUP1 PUSH4 0x4AEECCA9 EQ PUSH2 0x3368 JUMPI DUP1 PUSH4 0x4B59D17C EQ PUSH2 0x32E4 JUMPI DUP1 PUSH4 0x51682750 EQ PUSH2 0x31D1 JUMPI DUP1 PUSH4 0x53D0BB98 EQ PUSH2 0x311C JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x2FDF JUMPI DUP1 PUSH4 0x58307E44 EQ PUSH2 0x2F76 JUMPI DUP1 PUSH4 0x5B343791 EQ PUSH2 0x2A11 JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x29CC JUMPI DUP1 PUSH4 0x5F9815FF EQ PUSH2 0x2889 JUMPI DUP1 PUSH4 0x64C90707 EQ PUSH2 0x2831 JUMPI DUP1 PUSH4 0x68A24FE0 EQ PUSH2 0x2363 JUMPI DUP1 PUSH4 0x68D5E16A EQ PUSH2 0x2146 JUMPI DUP1 PUSH4 0x724DBA33 EQ PUSH2 0x202D JUMPI DUP1 PUSH4 0x72657D17 EQ PUSH2 0x1EE2 JUMPI DUP1 PUSH4 0x750283BC EQ PUSH2 0x1E65 JUMPI DUP1 PUSH4 0x7AE30960 EQ PUSH2 0x1E4B JUMPI DUP1 PUSH4 0x7B03C7BA EQ PUSH2 0x1A7F JUMPI DUP1 PUSH4 0x82BF2B24 EQ PUSH2 0x19AB JUMPI DUP1 PUSH4 0x82CD54FB EQ PUSH2 0x176B JUMPI DUP1 PUSH4 0x90AA9F76 EQ PUSH2 0x1751 JUMPI DUP1 PUSH4 0x94E86EF8 EQ PUSH2 0x15C6 JUMPI DUP1 PUSH4 0x9DE90518 EQ PUSH2 0x13A7 JUMPI DUP1 PUSH4 0xAAF51EA3 EQ PUSH2 0x138D JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x1349 JUMPI DUP1 PUSH4 0xAD6D59F3 EQ PUSH2 0x12A3 JUMPI DUP1 PUSH4 0xB037ED36 EQ PUSH2 0x113F JUMPI DUP1 PUSH4 0xB24BD571 EQ PUSH2 0xFF5 JUMPI DUP1 PUSH4 0xB29A62A7 EQ PUSH2 0xF99 JUMPI DUP1 PUSH4 0xB3B0A7A7 EQ PUSH2 0xF85 JUMPI DUP1 PUSH4 0xBE5AE841 EQ PUSH2 0xF30 JUMPI DUP1 PUSH4 0xBEB91FEB EQ PUSH2 0xE18 JUMPI DUP1 PUSH4 0xBF6EE3FD EQ PUSH2 0xC7F JUMPI DUP1 PUSH4 0xC08BC851 EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xC330C7BE EQ PUSH2 0xA20 JUMPI DUP1 PUSH4 0xC3EC0EFC EQ PUSH2 0x967 JUMPI DUP1 PUSH4 0xD3A5152A EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0xDA001F7D EQ PUSH2 0x799 JUMPI DUP1 PUSH4 0xE178073E EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xE7326DEF EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0xECB2182C EQ PUSH2 0x45C JUMPI PUSH4 0xEFD85F14 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2F7 CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x2FF PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x314 PUSH1 0x20 DUP3 ADD PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x31D DUP3 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 PUSH2 0x32B PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 SWAP4 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0x5 DUP6 LT ISZERO PUSH2 0x458 JUMPI DUP4 PUSH2 0x396 PUSH2 0x3D7 SWAP7 PUSH1 0x60 DUP6 PUSH2 0x381 PUSH0 SWAP13 SWAP12 PUSH2 0x371 SWAP10 DUP8 DUP16 SWAP15 PUSH2 0x364 PUSH1 0xC0 PUSH2 0x39D SWAP14 ADD DUP8 PUSH2 0x5A96 JUMP JUMPDEST SWAP11 SWAP1 SWAP12 PUSH1 0x40 MLOAD SWAP15 DUP16 PUSH2 0x5245 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MSTORE ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x5D92 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x536B JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x6147 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x423 JUMPI JUMPDEST POP PUSH2 0x41F SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x54B0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 POP PUSH2 0x41F SWAP3 POP PUSH2 0x446 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5C92 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x512 PUSH2 0x48B PUSH0 PUSH2 0x504 DUP2 PUSH2 0x54E PUSH2 0x473 CALLDATASIZE PUSH2 0x5879 JUMP JUMPDEST SWAP8 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 SWAP5 SWAP2 PUSH2 0x484 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP11 DUP4 PUSH2 0x6777 JUMP JUMPDEST SWAP8 SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP12 DUP13 SWAP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x4A6 DUP7 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 SWAP15 DUP16 SWAP2 AND SWAP1 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x599 SWAP2 PUSH0 SWAP2 PUSH2 0x5D8 JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5B0 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x5A8 JUMP JUMPDEST PUSH2 0x5F4 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5A08 JUMP JUMPDEST DUP7 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x504 PUSH2 0x6A0 PUSH0 DUP1 PUSH2 0x6DC PUSH2 0x62B PUSH2 0x611 CALLDATASIZE PUSH2 0x5879 JUMP JUMPDEST SWAP2 PUSH2 0x624 SWAP12 SWAP6 SWAP12 SWAP11 SWAP5 SWAP7 SWAP2 SWAP4 SWAP11 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP11 DUP13 PUSH2 0x6777 JUMP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x643 DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x722 SWAP2 PUSH0 SWAP2 PUSH2 0x731 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST POP POP SWAP1 PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x745 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x713 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x78F PUSH2 0x77B PUSH2 0x76A PUSH2 0x518C JUMP JUMPDEST PUSH2 0x772 PUSH2 0x51B8 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x6777 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x7B2 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x7D3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH2 0x7DC PUSH2 0x51CE JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x8BA PUSH0 SWAP3 SWAP2 PUSH2 0x504 PUSH2 0x87E PUSH2 0x80A PUSH2 0x804 DUP8 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP4 PUSH2 0x6722 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x821 DUP4 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP7 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x900 SWAP2 PUSH0 SWAP2 PUSH2 0x910 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST POP SWAP2 SWAP1 POP PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x924 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x8F1 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x97F PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x9BF PUSH1 0x20 PUSH2 0x98C PUSH2 0x6273 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x68A24FE000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x9F5 JUMPI JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0xA19 JUMPI JUMPDEST PUSH2 0xA0B DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP1 PUSH2 0x9D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xA01 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xA39 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0xA5A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP2 PUSH2 0xA63 PUSH2 0x51A2 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH0 SWAP4 PUSH2 0x504 PUSH2 0xB07 DUP7 SWAP5 PUSH2 0xA92 PUSH2 0xA8C PUSH2 0xB44 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP8 PUSH2 0x6722 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0xAAA DUP6 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP3 PUSH2 0xB90 SWAP2 PUSH0 SWAP2 PUSH2 0xBCD JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0xBA5 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x584E JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0xB99 JUMP JUMPDEST PUSH2 0xBE1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x6A0 PUSH0 DUP1 PUSH2 0x8BA PUSH2 0xBFB CALLDATASIZE PUSH2 0x5421 JUMP JUMPDEST PUSH2 0xC0B SWAP10 SWAP4 SWAP2 SWAP9 SWAP3 SWAP5 SWAP10 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0xC22 DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xC93 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0xCB5 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x458 JUMPI PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH0 SWAP3 PUSH2 0x504 PUSH2 0xD64 DUP6 SWAP5 PUSH2 0xCE9 PUSH2 0xDA1 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH2 0xCF2 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xD0A DUP7 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP7 MSTORE AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE DUP8 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0xDFE JUMPI JUMPDEST POP PUSH2 0xDD9 JUMPI STOP JUMPDEST PUSH0 PUSH32 0x0 TSTORE STOP JUMPDEST PUSH2 0xE11 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST POP DUP2 PUSH2 0xDD2 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xE30 PUSH2 0x6610 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH2 0xEAC SWAP2 PUSH0 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH1 0x40 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x82CD54FB00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP5 PUSH1 0x4 DUP5 ADD MSTORE DUP5 PUSH1 0x24 DUP5 ADD MSTORE DUP5 PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0xEE1 JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0xEFC SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xEF4 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5C36 JUMP JUMPDEST POP DUP1 PUSH2 0x9D0 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0xF58 PUSH2 0xF43 CALLDATASIZE PUSH2 0x57A2 JUMP JUMPDEST PUSH2 0xF4B PUSH2 0x6610 JUMP JUMPDEST PUSH2 0xF53 PUSH2 0x663D JUMP JUMPDEST PUSH2 0x68ED JUMP JUMPDEST POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xFB2 PUSH2 0x518C JUMP JUMPDEST PUSH2 0xFBA PUSH2 0x51B8 JUMP JUMPDEST PUSH2 0xFC2 PUSH2 0x51CE JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 SWAP4 PUSH2 0xFE9 PUSH2 0x5A8 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x55C8 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH2 0x6532 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x1003 CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x100B PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x101F PUSH1 0x20 DUP4 ADD PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x1028 DUP4 PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x1036 PUSH1 0x40 DUP6 ADD DUP6 PUSH2 0x5A42 JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP4 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x458 JUMPI DUP4 PUSH2 0x396 PUSH2 0x10CD SWAP7 PUSH2 0x1085 PUSH2 0x1093 SWAP6 PUSH0 SWAP12 PUSH1 0x60 DUP10 DUP8 DUP16 SWAP15 PUSH2 0x364 PUSH1 0xC0 PUSH2 0x106E SWAP15 ADD DUP5 PUSH2 0x5A96 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE ADD CALLDATALOAD PUSH1 0x40 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x5E59 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61B7 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x1115 JUMPI JUMPDEST POP PUSH2 0x41F SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x584E JUMP JUMPDEST SWAP1 POP PUSH2 0x41F SWAP3 POP PUSH2 0x1138 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5ED0 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x1104 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x1158 PUSH2 0x518C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x20 SWAP4 PUSH32 0x5F9815FF00000000000000000000000000000000000000000000000000000000 DUP6 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0xF03 JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP6 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0x121E PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x548B JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1267 SWAP3 PUSH0 SWAP3 PUSH2 0x127C JUMPI JUMPDEST POP POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C36 JUMP JUMPDEST SWAP1 PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x129C SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0x1294 DUP3 DUP6 PUSH2 0x5299 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x5A08 JUMP JUMPDEST DUP4 DUP1 PUSH2 0x1257 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x12BB PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x12FA PUSH0 PUSH2 0x12C7 PUSH2 0x5C5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x132F JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x1342 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST POP POP PUSH2 0x9D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x1381 PUSH2 0x137B PUSH2 0x41F SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5597 JUMP JUMPDEST SWAP1 PUSH2 0x63DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55F6 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x637D JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x13C1 PUSH2 0x13B8 CALLDATASIZE PUSH2 0x54D9 JUMP JUMPDEST SWAP3 SWAP2 SWAP4 SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP3 DUP4 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x15A4 JUMPI JUMPDEST POP MLOAD SWAP5 PUSH2 0x1440 DUP7 PUSH2 0x5E28 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x157F JUMPI POP POP PUSH0 SWAP3 PUSH2 0x504 PUSH2 0x14C1 DUP9 DUP7 SWAP6 PUSH2 0x14FD SWAP6 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1468 DUP5 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1521 SWAP2 PUSH0 SWAP2 PUSH2 0x1565 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x153D JUMPI JUMPDEST PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x1529 JUMP JUMPDEST PUSH2 0x1579 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x1512 JUMP JUMPDEST DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x159D PUSH1 0x1 SWAP4 DUP12 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE ADD PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x15C0 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5D9E JUMP JUMPDEST DUP7 PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x15CF CALLDATASIZE PUSH2 0x57D5 JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x15DF SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x15ED DUP12 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH1 0x1 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1644 SWAP3 PUSH2 0x536B JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x68A24FE000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH2 0x1683 SWAP1 PUSH1 0x24 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x1695 SWAP1 DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x16D2 SWAP2 PUSH2 0x548B JUMP JUMPDEST SUB DUP3 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x1735 JUMPI JUMPDEST POP PUSH1 0x20 DUP3 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI PUSH1 0x20 DUP1 SWAP3 ADD MLOAD SWAP1 PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x174A SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP1 DUP3 PUSH2 0x1714 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x631D JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x1784 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x178C PUSH2 0x51B8 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x17B1 PUSH2 0x1827 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH2 0x17BA PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x17C2 PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH0 DUP2 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x44 CALLDATALOAD DUP11 DUP9 PUSH1 0x4 DUP7 ADD PUSH2 0x5BA6 JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP5 PUSH2 0x198F JUMPI JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x1973 JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x192F JUMPI PUSH2 0x1896 DUP2 DUP7 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 DUP2 PUSH2 0x18A8 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x1883 JUMP JUMPDEST DUP3 PUSH2 0x18B3 DUP3 DUP7 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND DUP6 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP10 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH1 0x1 SWAP3 PUSH2 0x1920 JUMPI JUMPDEST POP PUSH2 0x189E JUMP JUMPDEST PUSH2 0x1929 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP8 PUSH2 0x191A JUMP JUMPDEST PUSH2 0x41F DUP6 PUSH2 0x193C DUP9 PUSH2 0x66DF JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x1988 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP1 DUP6 PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x19A4 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xEF4 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP3 DUP6 PUSH2 0x183B JUMP JUMPDEST PUSH0 PUSH2 0x504 DUP2 PUSH2 0xB44 PUSH2 0x1A42 PUSH2 0x19BF CALLDATASIZE PUSH2 0x5739 JUMP JUMPDEST SWAP1 PUSH2 0x19CF SWAP9 SWAP5 SWAP3 SWAP6 SWAP4 SWAP9 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x19E7 DUP8 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x1A8D CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x1A95 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x1A9D PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD SWAP2 PUSH2 0x1AD6 DUP4 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 PUSH2 0x1AE0 DUP6 PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x1AEE PUSH1 0x40 DUP8 ADD DUP8 PUSH2 0x5A42 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x458 JUMPI DUP5 PUSH2 0x396 PUSH2 0x106E SWAP5 PUSH2 0x1085 PUSH2 0x1B5E SWAP10 PUSH0 SWAP9 PUSH1 0x60 DUP16 DUP8 PUSH2 0x1B26 SWAP11 PUSH2 0x364 PUSH1 0xC0 DUP5 ADD DUP5 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61B7 JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP5 PUSH0 SWAP2 PUSH0 SWAP5 PUSH2 0x1E24 JUMPI JUMPDEST POP PUSH2 0x1B80 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 SWAP2 PUSH0 DUP6 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP6 PUSH2 0x1E08 JUMPI JUMPDEST POP SWAP1 SWAP6 PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1DC3 JUMPI PUSH2 0x1BE6 DUP2 DUP5 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x1DBA JUMPI DUP7 PUSH2 0x1BF9 DUP3 DUP11 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND PUSH2 0x1C04 DUP7 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x1D8F JUMPI JUMPDEST ISZERO PUSH2 0x1D0D JUMPI POP DUP9 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 DUP14 PUSH32 0x0 AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE DUP14 ADDRESS SWAP1 DUP5 ADD MSTORE DUP10 PUSH1 0x44 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1CFE JUMPI JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH0 DUP1 SWAP2 DUP9 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP9 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x44D JUMPI DUP9 PUSH2 0x1CE3 DUP15 PUSH2 0x1CE9 SWAP5 PUSH1 0x1 SWAP8 PUSH2 0x1CEF JUMPI JUMPDEST POP PUSH2 0x5A2E JUMP JUMPDEST AND PUSH2 0x6CF5 JUMP JUMPDEST ADD PUSH2 0x1BD3 JUMP JUMPDEST PUSH2 0x1CF8 SWAP1 PUSH2 0x5214 JUMP JUMPDEST PUSH0 PUSH2 0x1CDD JUMP JUMPDEST PUSH2 0x1D07 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP13 PUSH2 0x1C87 JUMP JUMPDEST PUSH2 0x1D16 DUP13 PUSH2 0x5A2E JUMP JUMPDEST DUP11 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP14 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH1 0x1 SWAP3 PUSH2 0x1D80 JUMPI JUMPDEST POP PUSH2 0x1CE9 JUMP JUMPDEST PUSH2 0x1D89 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP12 PUSH2 0x1D7A JUMP JUMPDEST POP DUP8 PUSH32 0x0 AND DUP2 EQ PUSH2 0x1C0A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x1CE9 JUMP JUMPDEST POP PUSH2 0x41F DUP9 PUSH2 0x1DD9 PUSH2 0x1DD4 DUP13 PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x66DF JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x584E JUMP JUMPDEST PUSH2 0x1E1D SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP4 DUP9 PUSH2 0x1BC8 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x1B80 SWAP6 POP PUSH2 0x1E40 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP2 SWAP6 SWAP1 SWAP2 SWAP4 SWAP1 PUSH2 0x1B76 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x62BD JUMP JUMPDEST PUSH2 0x1E6E CALLDATASIZE PUSH2 0x57D5 JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x1E7E SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x1E8C DUP12 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH0 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1644 SWAP3 PUSH2 0x536B JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x1EF6 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x1EFE PUSH2 0x51B8 JUMP JUMPDEST PUSH2 0x1F06 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH0 PUSH2 0x1FC1 PUSH2 0x1F2C DUP3 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP3 PUSH2 0x504 PUSH2 0x512 PUSH2 0x1F4A PUSH2 0x1F3F CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x44 CALLDATALOAD SWAP1 DUP12 PUSH2 0x6777 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1F61 DUP5 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP5 MSTORE DUP7 PUSH1 0x20 SWAP14 AND DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x200C SWAP2 PUSH0 SWAP2 PUSH2 0x2013 JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST POP POP PUSH2 0x5FB6 JUMP JUMPDEST PUSH2 0x2027 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP7 PUSH2 0x1FFD JUMP JUMPDEST PUSH2 0x504 PUSH2 0x20C5 PUSH0 DUP1 PUSH2 0x2101 PUSH2 0x2041 CALLDATASIZE PUSH2 0x5421 JUMP JUMPDEST PUSH2 0x2052 SWAP10 SWAP4 SWAP2 SWAP10 SWAP9 SWAP3 SWAP5 SWAP9 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x2069 DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1521 SWAP2 PUSH0 SWAP2 PUSH2 0x1565 JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2154 CALLDATASIZE PUSH2 0x56D6 JUMP JUMPDEST PUSH2 0x215D CALLER PUSH2 0x6722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 SWAP4 PUSH32 0x3A1B05DE00000000000000000000000000000000000000000000000000000000 DUP6 DUP5 ADD MSTORE DUP5 PUSH1 0x24 DUP5 ADD MSTORE DUP4 PUSH2 0x21A2 DUP3 PUSH2 0x51E4 JUMP JUMPDEST AND PUSH1 0x44 DUP5 ADD MSTORE DUP4 PUSH2 0x21B4 DUP7 DUP4 ADD PUSH2 0x51E4 JUMP JUMPDEST AND PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP3 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x458 JUMPI DUP2 ADD SWAP1 DUP6 DUP3 CALLDATALOAD SWAP3 ADD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP5 GT PUSH2 0x458 JUMPI DUP4 PUSH1 0x5 SHL CALLDATASIZE SUB DUP8 SGT PUSH2 0x458 JUMPI PUSH2 0x2249 DUP2 PUSH2 0x2285 SWAP5 PUSH1 0x60 PUSH2 0x2233 PUSH0 SWAP12 DUP13 SWAP10 PUSH1 0x80 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP2 PUSH2 0x5AE7 JUMP JUMPDEST SWAP2 ADD CALLDATALOAD PUSH1 0xA4 DUP4 ADD MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP4 PUSH2 0x2347 JUMPI JUMPDEST POP DUP3 MLOAD DUP4 ADD SWAP4 PUSH1 0x80 DUP5 DUP3 DUP8 ADD SWAP7 SUB SLT PUSH2 0x458 JUMPI DUP1 DUP5 ADD MLOAD DUP4 DUP2 GT PUSH2 0x458 JUMPI DUP6 DUP3 PUSH2 0x22E5 SWAP3 DUP8 ADD ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP2 ADD MLOAD SWAP6 PUSH1 0x60 DUP3 ADD MLOAD SWAP3 PUSH1 0x80 DUP4 ADD MLOAD SWAP6 DUP7 GT PUSH2 0x458 JUMPI PUSH2 0x41F SWAP6 PUSH2 0x230D SWAP4 ADD ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP2 PUSH2 0x231F JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x5708 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x2313 JUMP JUMPDEST PUSH2 0x235C SWAP2 SWAP4 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP2 DUP5 PUSH2 0x22B9 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2371 CALLDATASIZE PUSH2 0x57A2 JUMP JUMPDEST PUSH2 0x2379 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x2381 PUSH2 0x663D JUMP JUMPDEST PUSH2 0x238A DUP2 PUSH2 0x68ED JUMP JUMPDEST PUSH2 0x2398 PUSH1 0x60 DUP6 SWAP4 SWAP6 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP1 PUSH2 0x23A2 DUP4 PUSH2 0x5A2E JUMP JUMPDEST SWAP5 PUSH2 0x100 DUP5 ADD SWAP6 PUSH2 0x23B2 DUP8 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x27FC JUMPI JUMPDEST ISZERO PUSH2 0x2679 JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x2651 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 DUP2 AND SWAP3 SWAP2 DUP4 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP8 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2642 JUMPI JUMPDEST POP PUSH32 0x0 AND SWAP1 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x24C8 PUSH0 DUP1 PUSH1 0x20 SWAP8 DUP9 DUP2 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x24B3 DUP2 PUSH2 0x504 DUP12 DUP12 PUSH1 0x24 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x24C1 PUSH2 0x5FCA JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x6D80 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP7 DUP3 ISZERO ISZERO SWAP3 DUP4 PUSH2 0x2629 JUMPI JUMPDEST POP POP POP PUSH2 0x25FE JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x25D5 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x2564 SWAP2 JUMPDEST PUSH2 0x2548 DUP6 PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x255E PUSH2 0x2558 PUSH1 0x80 DUP9 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x5B81 JUMP JUMPDEST SWAP3 PUSH2 0x6AC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 AND EQ PUSH2 0x25C3 JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1DD4 PUSH2 0x25CF SWAP2 PUSH2 0x5A2E JUMP JUMPDEST DUP3 PUSH2 0x2597 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x25F7 JUMPI JUMPDEST PUSH2 0x25E8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP6 DUP1 PUSH2 0x2535 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25DE JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x2639 SWAP4 POP DUP3 ADD DUP2 ADD SWAP2 ADD PUSH2 0x5B8E JUMP JUMPDEST ISZERO DUP12 DUP7 DUP2 PUSH2 0x24D6 JUMP JUMPDEST PUSH2 0x264B SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP10 PUSH2 0x2434 JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x268D JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x2564 SWAP2 PUSH2 0x253F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x26E7 DUP6 PUSH2 0x669B JUMP JUMPDEST SWAP4 DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP3 AND PUSH1 0x44 DUP7 ADD MSTORE SWAP2 DUP8 AND AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x27AD SWAP4 PUSH2 0x27ED JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x27C2 JUMPI JUMPDEST DUP1 PUSH2 0x267F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x27E6 JUMPI JUMPDEST PUSH2 0x27D8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP6 PUSH2 0x27BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27CE JUMP JUMPDEST PUSH2 0x27F6 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP11 PUSH2 0x2760 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP6 AND EQ PUSH2 0x23B8 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x2849 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x9BF PUSH1 0x20 PUSH2 0x2856 PUSH2 0x6273 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x28A2 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x28AA PUSH2 0x51B8 JUMP JUMPDEST PUSH2 0x28B2 PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP5 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x44D JUMPI PUSH0 PUSH2 0x2933 PUSH2 0x296E SWAP7 DUP3 SWAP7 DUP4 SWAP2 PUSH2 0x29B2 JUMPI JUMPDEST POP MLOAD PUSH2 0x5E28 JUMP JUMPDEST SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x5BA6 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP2 PUSH0 SWAP2 PUSH2 0x2998 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x29AC SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xEF4 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP3 PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x29C6 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP9 PUSH2 0x292C JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2A1F CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x2A27 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x2A2F PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 SWAP2 DUP3 DUP5 ADD SWAP4 PUSH2 0x2A6A DUP6 PUSH2 0x5A2E JUMP JUMPDEST SWAP5 PUSH2 0x2A74 DUP3 PUSH2 0x5A2E JUMP JUMPDEST SWAP6 PUSH2 0x2A82 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP2 SWAP1 SWAP8 PUSH1 0x80 DUP6 ADD CALLDATALOAD SWAP2 PUSH1 0x5 DUP4 LT ISZERO PUSH2 0x458 JUMPI DUP7 PUSH2 0x396 PUSH2 0x2AC6 SWAP5 PUSH2 0x2AD5 PUSH2 0x2B25 SWAP14 PUSH0 SWAP9 DUP15 DUP7 PUSH2 0x2AED SWAP10 PUSH2 0x2AB9 DUP16 PUSH1 0xC0 DUP2 ADD SWAP1 PUSH2 0x5A96 JUMP JUMPDEST SWAP10 SWAP1 SWAP11 PUSH1 0x40 MLOAD SWAP14 DUP15 PUSH2 0x5245 JUMP JUMPDEST AND DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x6147 JUMP JUMPDEST SUB DUP2 DUP4 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH0 SWAP8 PUSH0 SWAP5 PUSH2 0x2F4D JUMPI JUMPDEST POP PUSH2 0x2B47 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x2F33 JUMPI JUMPDEST POP SWAP3 SWAP7 PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2EF2 JUMPI DUP7 PUSH2 0x2BAA DUP3 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND PUSH2 0x2BB6 DUP3 DUP8 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x2E85 JUMPI PUSH2 0x2BC7 DUP9 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x2EC7 JUMPI JUMPDEST ISZERO PUSH2 0x2D7A JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x2651 JUMPI PUSH32 0x0 DUP9 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2C96 SWAP5 DUP15 SWAP3 DUP5 SWAP3 PUSH2 0x2D6B JUMPI JUMPDEST POP DUP14 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2CF7 SWAP4 DUP14 SWAP4 PUSH2 0x2D40 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI DUP11 SWAP2 PUSH2 0x2D17 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x2B96 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2D39 JUMPI JUMPDEST PUSH2 0x2D2A DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP9 DUP12 PUSH2 0x2D0B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D20 JUMP JUMPDEST PUSH2 0x2D5F SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x2D64 JUMPI JUMPDEST PUSH2 0x2D57 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5B8E JUMP JUMPDEST PUSH2 0x2CAC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D4D JUMP JUMPDEST PUSH2 0x2D74 SWAP1 PUSH2 0x5214 JUMP JUMPDEST PUSH0 PUSH2 0x2C48 JUMP JUMPDEST SWAP1 DUP9 PUSH32 0x0 AND SWAP1 PUSH2 0x2DA8 DUP8 PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x2DB1 DUP3 PUSH2 0x669B JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP14 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP3 SWAP2 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2E71 SWAP4 DUP14 SWAP4 PUSH2 0x2EB8 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI DUP11 SWAP2 PUSH2 0x2E8F JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x2D11 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2EB1 JUMPI JUMPDEST PUSH2 0x2EA2 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP9 DUP12 PUSH2 0x2E85 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E98 JUMP JUMPDEST PUSH2 0x2EC1 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP15 PUSH2 0x2CAC JUMP JUMPDEST POP DUP9 PUSH32 0x0 AND DUP2 EQ PUSH2 0x2BCD JUMP JUMPDEST POP DUP4 PUSH2 0x41F DUP11 PUSH2 0x2F04 PUSH2 0x1DD4 DUP8 PUSH2 0x5A2E JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x54B0 JUMP JUMPDEST PUSH2 0x2F47 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP9 PUSH2 0x2B8B JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x2F6A SWAP2 SWAP8 POP PUSH2 0x2B47 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP8 SWAP2 SWAP3 SWAP1 SWAP8 SWAP4 SWAP1 PUSH2 0x2B3D JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x2FDB PUSH1 0x40 MLOAD PUSH2 0x4D2 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x2FA1 DUP2 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x3112 JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x30E5 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x30A7 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x304E JUMPI JUMPDEST POP PUSH2 0x303A SWAP3 POP SUB DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x308F JUMPI POP POP PUSH2 0x303A SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x302D JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x3078 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x303A SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x302D SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x3009 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x314D PUSH2 0x3146 PUSH0 DUP1 PUSH2 0x6DC PUSH2 0x87E PUSH2 0x504 PUSH2 0x313B CALLDATASIZE PUSH2 0x5677 JUMP JUMPDEST SWAP6 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP9 DUP11 PUSH2 0x6777 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3164 DUP4 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x20C5 PUSH0 DUP1 PUSH2 0x3268 PUSH2 0x31E5 CALLDATASIZE PUSH2 0x5739 JUMP JUMPDEST PUSH2 0x31F5 SWAP10 SWAP4 SWAP5 SWAP9 SWAP3 SWAP2 SWAP10 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x320C DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x32AE SWAP2 PUSH0 SWAP2 PUSH2 0x32CA JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST POP SWAP3 SWAP1 POP PUSH2 0x153D JUMPI PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x32DE SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x329F JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x32FC PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x9BF PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x330D DUP2 PUSH2 0x51F8 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP3 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x86FAD6600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x590F JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x6213 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH32 0xF5AB33E500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x33D3 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x33F4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP2 PUSH2 0x33FD PUSH2 0x51A2 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH0 SWAP4 PUSH2 0x504 PUSH2 0xB07 DUP7 SWAP5 PUSH2 0x3426 PUSH2 0xA8C PUSH2 0x349B SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x343E DUP6 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP3 PUSH2 0x34E7 SWAP2 PUSH0 SWAP2 PUSH2 0x3524 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x34FC JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x54B0 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x34F0 JUMP JUMPDEST PUSH2 0x3538 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x34D7 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x354C CALLDATASIZE PUSH2 0x552B JUMP JUMPDEST SWAP1 PUSH2 0x355A SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x6722 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x3573 DUP9 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH0 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x35FC SWAP2 PUSH2 0x5F25 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x360E SWAP1 DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP7 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x364A SWAP2 PUSH2 0x548B JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x36A1 JUMPI JUMPDEST POP DUP3 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP3 ADD MLOAD SWAP1 PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x36B5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP4 PUSH2 0x3684 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x36C9 CALLDATASIZE PUSH2 0x56D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x379E DUP3 PUSH32 0x0 AND SWAP2 PUSH2 0x3702 DUP2 PUSH2 0x5A2E JUMP JUMPDEST PUSH1 0x20 SWAP4 PUSH0 DUP6 DUP5 ADD SWAP3 PUSH2 0x3713 DUP5 PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x3751 PUSH2 0x3723 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x5A42 JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x3731 DUP7 PUSH2 0x5261 JUMP JUMPDEST DUP8 DUP7 MSTORE DUP2 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x3742 DUP10 PUSH2 0x5245 JUMP JUMPDEST AND DUP8 MSTORE AND DUP12 DUP7 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x6147 JUMP JUMPDEST SUB DUP2 DUP4 DUP6 GAS CALL SWAP6 DUP7 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP5 PUSH0 SWAP8 PUSH2 0x3BC1 JUMPI JUMPDEST POP PUSH2 0x37BE DUP5 PUSH2 0x5A2E JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x3BA7 JUMPI JUMPDEST POP SWAP4 SWAP7 PUSH32 0x0 DUP3 AND SWAP5 SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x3976 JUMPI DUP4 PUSH2 0x3840 DUP3 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND PUSH2 0x384C DUP3 DUP11 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x396C JUMPI PUSH2 0x385C DUP9 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 PUSH2 0x3866 DUP2 PUSH2 0x669B JUMP JUMPDEST SWAP2 DUP11 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE DUP10 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 DUP2 AND PUSH1 0x44 DUP5 ADD MSTORE DUP4 AND PUSH1 0x64 DUP4 ADD MSTORE SWAP1 SWAP2 SWAP1 PUSH0 DUP4 PUSH1 0x84 DUP2 DUP4 DUP15 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x3923 SWAP4 DUP14 SWAP4 PUSH2 0x2EB8 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP11 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI DUP11 SWAP2 PUSH2 0x3943 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x382C JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3965 JUMPI JUMPDEST PUSH2 0x3956 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP9 DUP12 PUSH2 0x3937 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x394C JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x393D JUMP JUMPDEST POP SWAP2 SWAP4 SWAP5 POP SWAP2 SWAP7 PUSH2 0x3986 DUP2 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 DUP5 PUSH2 0x399A PUSH2 0x3994 DUP9 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 PUSH2 0x5A2E JUMP JUMPDEST AND DUP9 DUP7 PUSH1 0x24 PUSH2 0x39A8 DUP11 PUSH2 0x5A2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x3B72 JUMPI JUMPDEST POP SWAP1 PUSH2 0x3A6C SWAP9 PUSH0 SWAP4 SWAP3 PUSH2 0x39FC DUP8 MLOAD PUSH2 0x5E28 JUMP JUMPDEST SWAP2 DUP9 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x3A0B DUP7 PUSH2 0x5261 JUMP JUMPDEST DUP8 DUP7 MSTORE DUP2 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x3A1C DUP10 PUSH2 0x5245 JUMP JUMPDEST AND DUP8 MSTORE AND SWAP1 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61B7 JUMP JUMPDEST SUB DUP2 DUP4 DUP12 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP7 PUSH0 SWAP7 PUSH2 0x3B50 JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3B3E JUMPI DUP5 PUSH2 0x3A99 DUP3 DUP7 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x3AA6 DUP2 DUP10 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x3B34 JUMPI PUSH2 0x3AB6 DUP9 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 DUP12 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP15 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3B25 JUMPI JUMPDEST POP JUMPDEST ADD PUSH2 0x3A85 JUMP JUMPDEST PUSH2 0x3B2E SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP11 PUSH2 0x3B1D JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x3B1F JUMP JUMPDEST POP PUSH2 0x41F DUP7 DUP9 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x5708 JUMP JUMPDEST SWAP1 SWAP7 POP PUSH2 0x3B68 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP6 SWAP2 SWAP7 SWAP1 SWAP6 PUSH2 0x3A82 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 POP DUP9 DUP4 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3BA0 JUMPI JUMPDEST PUSH2 0x3B8B DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x3A6C PUSH2 0x39E9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3B81 JUMP JUMPDEST PUSH2 0x3BBB SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP9 PUSH2 0x3802 JUMP JUMPDEST SWAP1 SWAP5 POP PUSH2 0x3BD9 SWAP2 SWAP7 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP7 SWAP2 SWAP5 SWAP1 SWAP7 PUSH2 0x37B4 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x5FF9 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x3C16 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x3C1E PUSH2 0x51CE JUMP JUMPDEST SWAP1 PUSH2 0x3C27 PUSH2 0x51A2 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x3C4A PUSH2 0x3C50 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP2 PUSH2 0x6722 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND SWAP3 DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP6 DUP7 PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x44 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP4 PUSH2 0x3DC0 JUMPI JUMPDEST POP PUSH0 SWAP4 PUSH2 0x504 PUSH2 0x3D5C DUP7 SWAP5 PUSH2 0x3CE4 PUSH2 0x3D98 SWAP6 PUSH2 0x5E28 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x3CF1 DUP10 DUP5 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3CFF DUP4 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP4 MSTORE PUSH1 0x20 SWAP12 DUP13 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x599 SWAP2 PUSH0 SWAP2 PUSH2 0x5D8 JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST SWAP3 POP POP SWAP2 PUSH1 0x40 DUP3 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x3DF7 JUMPI JUMPDEST DUP2 PUSH2 0x3DDD PUSH1 0x40 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 PUSH2 0x3CCD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3DD0 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C65676163792072657665727420726561736F6E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x3E89 PUSH2 0x3E7E CALLDATASIZE PUSH2 0x5677 JUMP JUMPDEST SWAP3 SWAP5 SWAP1 SWAP4 SWAP2 SWAP4 PUSH2 0x6722 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 DUP1 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP7 ADD MSTORE AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 DUP4 PUSH1 0x44 DUP2 DUP8 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP5 PUSH2 0x3FCB JUMPI JUMPDEST POP SWAP4 PUSH2 0x504 PUSH2 0x3D5C PUSH0 SWAP7 SWAP5 PUSH2 0x3FA3 SWAP5 PUSH2 0x3F1F DUP10 SWAP8 PUSH2 0x5E28 JUMP JUMPDEST SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3F3B DUP11 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP3 PUSH2 0x3F49 DUP5 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP13 DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x200C SWAP2 PUSH0 SWAP2 PUSH2 0x2013 JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP4 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x4000 JUMPI JUMPDEST DUP2 PUSH2 0x3FE7 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP3 MLOAD PUSH1 0x20 SWAP1 SWAP4 ADD MLOAD SWAP3 PUSH2 0x504 PUSH2 0x3F06 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3FDA JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x458 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x458 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x458 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x458 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x407E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5597 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x40BF SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x55C8 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x40DF SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5597 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0x40EA PUSH2 0x6610 JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x4605 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x437A JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x458 JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x458 JUMPI PUSH2 0x419D JUMPI JUMPDEST PUSH2 0x41F PUSH2 0x1381 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x63DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x458 JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x42FC JUMPI POP POP POP DUP3 SWAP2 PUSH0 SWAP5 PUSH2 0x429F SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x427D PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x51E4 JUMP JUMPDEST AND PUSH1 0x84 DUP7 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0x3 NOT DUP6 DUP5 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x5B24 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP4 PUSH2 0x1381 SWAP4 PUSH2 0x42ED JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x416D JUMP JUMPDEST PUSH2 0x42F6 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP5 PUSH2 0x42E2 JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4313 DUP8 PUSH2 0x51E4 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x458 JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x4343 PUSH1 0x40 DUP10 ADD PUSH2 0x6764 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x435E PUSH1 0x60 DUP11 ADD PUSH2 0x6764 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x4388 PUSH2 0x396 DUP3 DUP5 DUP7 PUSH2 0x651B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP5 ADD GT OR PUSH2 0xF03 JUMPI PUSH1 0x60 DUP3 ADD PUSH1 0x40 MSTORE PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP5 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x4419 DUP3 PUSH2 0x5245 JUMP JUMPDEST PUSH2 0x442C PUSH1 0x24 PUSH1 0xC0 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x51E4 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x4442 PUSH1 0x44 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x51E4 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x445C PUSH1 0x64 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP8 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 SWAP1 SWAP5 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP11 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x45F6 JUMPI JUMPDEST POP PUSH2 0x45ED JUMPI PUSH2 0x453B PUSH2 0x5FCA JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x45B8 JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x45B3 JUMPI POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x40F9 JUMP JUMPDEST PUSH2 0x6D71 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x45E5 JUMPI JUMPDEST DUP2 PUSH2 0x45D4 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x459E JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x45C7 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x45AD JUMP JUMPDEST PUSH2 0x45FF SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP10 PUSH2 0x452E JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x463B CALLDATASIZE PUSH2 0x552B JUMP JUMPDEST SWAP1 PUSH2 0x4649 SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x6722 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x4662 DUP9 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH1 0x1 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x35FC SWAP2 PUSH2 0x5F25 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x471D PUSH2 0x13B8 CALLDATASIZE PUSH2 0x54D9 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP4 DUP5 PUSH1 0x4 DUP6 ADD MSTORE PUSH0 DUP5 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x44D JUMPI PUSH2 0x14C1 PUSH0 SWAP6 SWAP5 PUSH2 0x4810 SWAP5 PUSH2 0x47A9 DUP9 SWAP8 PUSH2 0x504 SWAP6 DUP10 SWAP2 PUSH2 0x4833 JUMPI POP MLOAD PUSH2 0x5E28 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x47B7 DUP5 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x32AE SWAP2 PUSH0 SWAP2 PUSH2 0x32CA JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST PUSH2 0x4847 SWAP2 POP RETURNDATASIZE DUP1 DUP12 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP13 PUSH2 0x292C JUMP JUMPDEST PUSH0 PUSH2 0x504 DUP2 PUSH2 0x349B PUSH2 0x1A42 PUSH2 0x4861 CALLDATASIZE PUSH2 0x5421 JUMP JUMPDEST SWAP1 PUSH2 0x4872 SWAP9 SWAP5 SWAP3 SWAP9 SWAP6 SWAP4 SWAP6 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x488A DUP8 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x48FD PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x493C PUSH0 PUSH2 0x4909 PUSH2 0x5C5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4971 JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x1342 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x4998 PUSH2 0x518C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH0 PUSH2 0x504 PUSH2 0x49FF PUSH2 0x49C2 PUSH2 0x4A39 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 SWAP8 PUSH32 0x82CD54FB00000000000000000000000000000000000000000000000000000000 DUP10 DUP6 ADD MSTORE PUSH1 0x24 CALLDATALOAD SWAP1 CALLER SWAP1 PUSH1 0x24 DUP7 ADD PUSH2 0x5BA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP7 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1267 SWAP2 PUSH0 SWAP2 PUSH2 0x4A88 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C36 JUMP JUMPDEST PUSH2 0x4A9C SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP4 PUSH2 0x4A79 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x4AB0 CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x4AB8 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x4AC0 PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP1 PUSH2 0x4AF9 PUSH1 0x20 DUP6 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP4 PUSH2 0x4B03 DUP2 PUSH2 0x5A2E JUMP JUMPDEST SWAP5 PUSH1 0x40 DUP3 ADD SWAP6 PUSH2 0x4B13 DUP8 DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x4B22 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x5A42 JUMP JUMPDEST DUP4 PUSH2 0x4B33 PUSH1 0xC0 DUP10 SWAP9 SWAP5 SWAP9 ADD DUP10 PUSH2 0x5A96 JUMP JUMPDEST SWAP6 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP9 PUSH32 0xBA8A2BE000000000000000000000000000000000000000000000000000000000 DUP11 MSTORE DUP2 PUSH1 0xC4 DUP12 ADD SWAP4 AND PUSH1 0x4 DUP12 ADD MSTORE AND PUSH1 0x24 DUP10 ADD MSTORE PUSH1 0xC0 PUSH1 0x44 DUP10 ADD MSTORE MSTORE PUSH1 0xE4 DUP7 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4FAE JUMPI POP POP POP SWAP3 PUSH2 0x4BC5 SWAP3 PUSH2 0x4BAC PUSH1 0x20 SWAP8 SWAP4 DUP8 SWAP7 PUSH1 0x3 NOT SWAP6 DUP7 DUP10 DUP5 SUB ADD PUSH1 0x64 DUP11 ADD MSTORE PUSH2 0x5AE7 JUMP JUMPDEST SWAP3 PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x84 DUP8 ADD MSTORE DUP6 DUP5 SUB ADD PUSH1 0xA4 DUP7 ADD MSTORE PUSH2 0x5B24 JUMP JUMPDEST SUB DUP2 PUSH0 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x4F7A JUMPI JUMPDEST POP SWAP1 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP2 SWAP1 PUSH0 JUMPDEST PUSH2 0x4BEE DUP3 DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x4F40 JUMPI PUSH2 0x4C13 PUSH2 0x4C0E DUP3 PUSH2 0x4C08 DUP6 DUP8 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x4C24 DUP3 PUSH2 0x4C08 PUSH1 0x60 DUP8 ADD DUP8 PUSH2 0x5A42 JUMP JUMPDEST CALLDATALOAD SWAP1 DUP2 ISZERO PUSH2 0x4F36 JUMPI PUSH2 0x4C35 DUP7 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x4F09 JUMPI JUMPDEST ISZERO PUSH2 0x4DBC JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x2651 JUMPI PUSH32 0x0 DUP7 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4D05 SWAP5 PUSH1 0x20 SWAP3 DUP5 SWAP3 PUSH2 0x4DAD JUMPI JUMPDEST POP DUP12 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4D66 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x2D40 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4D82 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x4DA6 JUMPI JUMPDEST PUSH2 0x4D98 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP8 PUSH2 0x4D77 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D8E JUMP JUMPDEST PUSH2 0x4DB6 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP14 PUSH2 0x4CB7 JUMP JUMPDEST DUP7 PUSH32 0x0 AND SWAP2 PUSH2 0x4DE9 DUP7 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 PUSH2 0x4DF3 DUP3 PUSH2 0x669B JUMP JUMPDEST DUP2 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE DUP12 DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE DUP4 DUP11 AND SWAP1 SWAP5 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4EB5 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x4EFA JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4ECF JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x4D7C JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x4EF3 JUMPI JUMPDEST PUSH2 0x4EE5 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP8 PUSH2 0x4EC6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EDB JUMP JUMPDEST PUSH2 0x4F03 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP12 PUSH2 0x2CAC JUMP JUMPDEST POP DUP7 PUSH32 0x0 AND DUP8 DUP3 AND EQ PUSH2 0x4C3B JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x4D7C JUMP JUMPDEST PUSH1 0x20 DUP8 PUSH2 0x4F4F PUSH2 0x1DD4 DUP7 PUSH2 0x5A2E JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4FA6 JUMPI JUMPDEST DUP2 PUSH2 0x4F96 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI MLOAD SWAP1 DUP6 PUSH2 0x4BD9 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4F89 JUMP JUMPDEST SWAP2 SWAP5 SWAP6 SWAP7 POP SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 DUP14 PUSH2 0x4FC5 DUP10 PUSH2 0x51E4 JUMP JUMPDEST AND DUP2 MSTORE ADD SWAP6 ADD SWAP2 ADD SWAP2 DUP10 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 PUSH2 0x4B81 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x4FED PUSH2 0x518C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 GT PUSH2 0x458 JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x501B DUP2 PUSH2 0x52BC JUMP JUMPDEST SWAP1 PUSH2 0x5029 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x24 DUP7 DUP5 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x24 DUP8 SWAP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x5175 JUMPI POP POP POP POP PUSH1 0x44 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x506D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH2 0x5076 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x458 JUMPI PUSH2 0x20C5 PUSH0 SWAP6 SWAP5 PUSH2 0x510F SWAP5 PUSH2 0x504 SWAP4 PUSH2 0x509D DUP10 SWAP9 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x50B5 DUP8 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP8 MSTORE AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x86FAD6600000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x590F JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x515B JUMPI JUMPDEST POP DUP2 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x516F SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP3 PUSH2 0x5143 JUMP JUMPDEST DUP3 DUP1 SWAP2 PUSH2 0x5181 DUP5 PUSH2 0x51E4 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x504A JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xF03 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x52DF DUP3 PUSH2 0x52BC JUMP JUMPDEST SWAP2 PUSH2 0x52ED PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x5299 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 SWAP5 ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP3 DUP4 GT PUSH2 0x458 JUMPI SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5313 JUMPI POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x5306 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP2 PUSH1 0x20 PUSH2 0x533D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x52D4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xF03 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x5377 DUP3 PUSH2 0x534F JUMP JUMPDEST SWAP2 PUSH2 0x5385 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x5299 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x458 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP2 PUSH1 0x20 PUSH2 0x533D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI DUP3 PUSH1 0xE0 SWAP3 SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x540D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x53FF JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x458 JUMPI DUP2 PUSH2 0x5463 SWAP2 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x54C6 PUSH2 0x533D SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x562B JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x5667 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x548B JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x561B JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI DUP3 PUSH1 0x80 SWAP3 SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x5721 PUSH2 0x533D SWAP6 SWAP4 SWAP5 PUSH1 0x80 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x53EE JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x44 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x458 JUMPI DUP3 PUSH2 0x577E SWAP2 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI DUP3 PUSH2 0x140 SWAP3 SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP2 PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x584A SWAP2 PUSH1 0x4 ADD PUSH2 0x55C8 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP2 PUSH2 0x586B SWAP1 PUSH2 0x533D SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x58FB JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x58ED JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 SWAP3 DUP4 DUP2 MSTORE PUSH2 0x100 DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 DUP5 MLOAD AND DUP2 DUP4 ADD MSTORE DUP6 DUP2 DUP6 ADD MLOAD AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD SWAP3 PUSH1 0xE0 PUSH1 0x60 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH2 0x120 DUP5 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x59AC JUMPI POP POP POP POP PUSH2 0x533D SWAP4 SWAP5 POP PUSH1 0xE0 PUSH1 0xC0 PUSH2 0x5987 PUSH1 0x60 DUP7 ADD MLOAD SWAP5 PUSH1 0x1F NOT SWAP6 DUP7 DUP7 DUP4 SUB ADD PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0x58DC JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP3 DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST DUP4 MLOAD DUP10 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x5956 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x59D9 DUP3 PUSH2 0x534F JUMP JUMPDEST SWAP3 PUSH2 0x59E7 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5299 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x458 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x59C2 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x458 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x458 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP1 SWAP2 DUP3 DUP2 MSTORE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x5 SHL DUP1 SWAP3 DUP5 DUP4 ADD CALLDATACOPY ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH1 0x20 SWAP5 SWAP4 PUSH1 0x1F NOT SWAP4 DUP2 DUP7 MSTORE DUP7 DUP7 ADD CALLDATACOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x5B54 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x458 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x533D SWAP5 SWAP4 PUSH1 0x80 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x5BF0 DUP2 PUSH2 0x52BC JUMP JUMPDEST SWAP4 PUSH2 0x5BFE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x5299 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5C27 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x5C19 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x5BD5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5C69 DUP3 PUSH2 0x51F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC0 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x458 JUMPI DUP5 PUSH2 0x5CBE SWAP2 DUP4 ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x59C2 JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x5D56 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5D73 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x5CDB JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xE0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x458 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 MLOAD PUSH2 0x5DD4 DUP2 PUSH2 0x52BC JUMP JUMPDEST SWAP4 PUSH2 0x5DE2 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x5299 JUMP JUMPDEST DUP2 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x458 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5E09 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x5DFB JUMP JUMPDEST SWAP1 PUSH2 0x5E32 DUP3 PUSH2 0x52BC JUMP JUMPDEST PUSH2 0x5E3F PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x5299 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x5E4F DUP3 SWAP5 PUSH2 0x52BC JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x5EB3 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5D73 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x5E65 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x458 JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x458 JUMPI DUP2 PUSH2 0x5F01 SWAP2 DUP5 ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x59C2 JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST PUSH2 0x160 PUSH2 0x533D SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x5F53 PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x5F18 JUMP JUMPDEST DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 PUSH1 0x60 DUP4 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD SWAP1 PUSH2 0x120 SWAP2 ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH2 0x140 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x5B54 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x5FF4 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x5FDB DUP3 PUSH2 0x534F JUMP JUMPDEST SWAP2 PUSH2 0x5FE9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x5299 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x22717DB200000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH2 0x60A5 PUSH0 SWAP3 SWAP2 DUP4 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x757D64B300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 PUSH2 0x6138 JUMPI JUMPDEST POP PUSH2 0x60D9 JUMPI PUSH2 0x60C5 PUSH2 0x60C0 PUSH2 0x5FCA JUMP JUMPDEST PUSH2 0x6851 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E657870656374656420737563636573730000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x6141 SWAP1 PUSH2 0x5214 JUMP JUMPDEST PUSH0 PUSH2 0x60B0 JUMP JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x6187 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x61A3 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x5CDB JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x6201 PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH2 0x61A3 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x5E65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x58307E4400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x6280 DUP3 PUSH2 0x5228 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x120 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH0 PUSH1 0xC0 DUP3 ADD MSTORE PUSH0 PUSH1 0xE0 DUP3 ADD MSTORE PUSH0 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x45D132FE00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3B0A7A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD3A5152A00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x63E8 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x64F3 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x6421 DUP4 PUSH2 0x52BC JUMP JUMPDEST SWAP3 PUSH2 0x642F PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5299 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x643E DUP3 PUSH2 0x52BC JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x64E2 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x6499 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x648E SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x6490 JUMPI JUMPDEST POP PUSH2 0x66DF JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x6488 JUMP JUMPDEST DUP1 PUSH2 0x64C6 PUSH0 DUP1 PUSH2 0x64AE PUSH2 0x396 DUP10 SWAP7 DUP9 DUP11 PUSH2 0x651B JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x64BF PUSH2 0x5FCA JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x6D80 JUMP JUMPDEST PUSH2 0x64D0 DUP3 DUP9 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE PUSH2 0x64DB DUP2 DUP8 PUSH2 0x5FB6 JUMP JUMPDEST POP ADD PUSH2 0x644C JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x6441 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x5B54 JUMPI PUSH2 0x584A SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x5A96 JUMP JUMPDEST SWAP2 SWAP4 PUSH2 0x6602 SWAP6 PUSH2 0x6059 SWAP5 PUSH2 0x65C7 SWAP4 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP1 PUSH32 0x0 AND SWAP10 DUP2 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x657D DUP12 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH0 PUSH1 0x20 DUP13 ADD MSTORE AND PUSH1 0x40 DUP11 ADD MSTORE AND PUSH1 0x60 DUP9 ADD MSTORE AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH0 PUSH1 0xC0 DUP6 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xE0 DUP6 ADD MSTORE PUSH0 PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x536B JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x64F3 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x666F JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x66AF JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x671E JUMPI PUSH32 0x0 TLOAD PUSH2 0x671E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x648E SWAP3 AND PUSH2 0x6CF5 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x675A JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x6847 JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x6810 JUMPI JUMPDEST POP POP PUSH2 0x680D PUSH2 0x6806 DUP6 SWAP5 PUSH2 0x5E28 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x6840 JUMPI JUMPDEST PUSH2 0x6829 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x67F7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x681F JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP2 MLOAD LT PUSH2 0x68C5 JUMPI PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MLOAD AND SUB PUSH2 0x45B3 JUMPI DUP1 PUSH1 0x24 PUSH1 0x20 PUSH2 0x533D SWAP4 MLOAD PUSH1 0x3 NOT DUP2 ADD PUSH1 0x4 DUP6 ADD MSTORE DUP4 ADD ADD SWAP2 ADD PUSH2 0x5A08 JUMP JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x6A9D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 SWAP3 PUSH2 0x691D DUP3 DUP6 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP3 DUP1 PUSH1 0x60 SWAP5 DUP6 SWAP4 DUP5 DUP7 ADD PUSH2 0x6930 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST SWAP6 PUSH2 0x693D PUSH1 0x80 DUP3 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP1 DUP5 PUSH2 0x694D PUSH2 0x120 DUP4 ADD DUP4 PUSH2 0x5A96 JUMP JUMPDEST SWAP2 SWAP1 DUP13 MLOAD SWAP6 PUSH2 0x695B DUP8 PUSH2 0x51F8 JUMP JUMPDEST DUP7 MSTORE DUP2 PUSH1 0x20 DUP8 ADD SWAP8 AND DUP8 MSTORE DUP2 DUP14 DUP8 ADD SWAP12 AND DUP12 MSTORE DUP2 DUP11 DUP8 ADD SWAP6 AND DUP6 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 PUSH1 0xA0 DUP6 ADD CALLDATALOAD DUP5 MSTORE PUSH1 0xA0 DUP8 ADD SWAP5 PUSH1 0xC0 ADD CALLDATALOAD DUP6 MSTORE CALLDATASIZE SWAP1 PUSH2 0x6998 SWAP3 PUSH2 0x536B JUMP JUMPDEST SWAP4 PUSH1 0xC0 DUP7 ADD SWAP5 DUP6 MSTORE DUP2 DUP14 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP10 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP12 MSTORE PUSH1 0x4 DUP12 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP12 ADD SWAP1 MLOAD SWAP1 PUSH2 0x69E5 SWAP2 PUSH2 0x5F18 JUMP JUMPDEST MLOAD AND PUSH1 0x44 DUP10 ADD MSTORE MLOAD AND PUSH1 0x64 DUP8 ADD MSTORE MLOAD AND PUSH1 0x84 DUP6 ADD MSTORE MLOAD PUSH1 0xA4 DUP5 ADD MSTORE MLOAD PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0xE4 DUP3 ADD PUSH1 0xE0 SWAP1 MSTORE PUSH2 0x104 DUP3 ADD PUSH2 0x6A1D SWAP2 PUSH2 0x548B JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x6847 JUMPI PUSH0 SWAP4 PUSH0 SWAP4 PUSH0 SWAP4 PUSH2 0x6A60 JUMPI JUMPDEST POP POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST SWAP3 POP SWAP3 POP DUP1 SWAP4 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x6A96 JUMPI JUMPDEST PUSH2 0x6A7A DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MLOAD PUSH0 DUP1 DUP1 PUSH2 0x6A58 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6A70 JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x6CED JUMPI DUP1 PUSH2 0x6CB8 JUMPI JUMPDEST ISZERO PUSH2 0x6C1C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x6C09 JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x6C05 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x6BFA JUMPI PUSH2 0x6BE2 JUMPI JUMPDEST POP PUSH2 0x648E SWAP4 SWAP5 POP AND PUSH2 0x6CF5 JUMP JUMPDEST PUSH2 0x6BEC DUP7 SWAP2 PUSH2 0x5214 JUMP JUMPDEST PUSH2 0x6BF6 JUMPI DUP5 PUSH2 0x6BD5 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x6C14 SWAP2 SWAP6 POP PUSH2 0x5214 JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x6B68 JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x6CAF JUMPI POP JUMP JUMPDEST PUSH2 0x648E SWAP1 PUSH2 0x5214 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x6AD4 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x6D45 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x6D15 PUSH2 0x5FCA JUMP JUMPDEST POP ISZERO PUSH2 0x6D1D JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x68C5 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST SWAP1 PUSH2 0x6D95 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x6D1D JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x6DDB JUMPI JUMPDEST PUSH2 0x6DA6 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x6D9E JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 RETURNDATACOPY 0x2C PUSH26 0x7D40B453A59B2B23B23A9E996591654BE1B95EF19BE7C44EC8F2 0xC9 DUP7 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"978:7807:86:-:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;978:7807:86;;;;409:14:68;;978:7807:86;;;-1:-1:-1;;;;;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;;2845:83:62;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;:::i;:::-;;;;2651:72:62;-1:-1:-1;;;978:7807:86;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;978:7807:86;;;;2651:72:62;:::i;:::-;;;978:7807:86;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;978:7807:86;;;;;;:::i;:::-;;;;;;;2845:83:62;:::i;:::-;;;7155:12;;7177:18;;;;978:7807:86;;;;;;;409:14:68;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:72:62;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2845:83:62;978:7807:86;;;;;;;;;;7155:12:62;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;-1:-1:-1;978:7807:86;;-1:-1:-1;978:7807:86;;;;;;;;;2845:83:62;978:7807:86;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;-1:-1:-1;978:7807:86;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;-1:-1:-1;978:7807:86;;-1:-1:-1;978:7807:86;;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;:::o;:::-;;;;;-1:-1:-1;;978:7807:86;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;:::o;1276:306:44:-;;1461:67;978:7807:86;1461:67:44;1276:306;978:7807:86;;1461:67:44;;;;;;;978:7807:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;978:7807:86;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;1461:67:44;;;;;;;;;:::i;:::-;978:7807:86;1451:78:44;;-1:-1:-1;;978:7807:86;;;;;;;;;1432:103:44;1461:67;1432:103;;978:7807:86;;;1461:67:44;1432:103;;;;;:::i;:::-;978:7807:86;;1405:144:44;;-1:-1:-1;;1405:170:44;;1276:306::o;978:7807:86:-;;;;-1:-1:-1;978:7807:86;;;;;-1:-1:-1;978:7807:86"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":20964,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_address_64823":{"entryPoint":20876,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_64846":{"entryPoint":20898,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_64871":{"entryPoint":20920,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_64917":{"entryPoint":20942,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_array_uint256_dynt_uint256t_boolt_bytes":{"entryPoint":21537,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_addresst_contract_IERC20t_contract_IERC20t_uint256t_addresst_bytes":{"entryPoint":21803,"id":null,"parameterSlots":1,"returnSlots":6},"abi_decode_addresst_contract_IERC20t_contract_IERC20t_uint256t_uint256t_uint256t_boolt_bytes_calldata":{"entryPoint":22485,"id":null,"parameterSlots":1,"returnSlots":9},"abi_decode_addresst_contract_IERC20t_uint256t_addresst_bytes":{"entryPoint":22135,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_addresst_uint256t_addresst_bytes":{"entryPoint":21721,"id":null,"parameterSlots":1,"returnSlots":4},"abi_decode_addresst_uint256t_array_uint256_dynt_boolt_bytes":{"entryPoint":22329,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_addresst_uint256t_contract_IERC20t_uint256t_boolt_bytes":{"entryPoint":22649,"id":null,"parameterSlots":1,"returnSlots":6},"abi_decode_array_bytes_calldata_dyn_calldata":{"entryPoint":21911,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_contract_IERC20_dyn_fromMemory":{"entryPoint":23966,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":21282,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":23606,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_memory_ptr_fromMemory":{"entryPoint":23509,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_uint256t_bytes_fromMemory":{"entryPoint":23698,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_available_length_array_uint256_dyn":{"entryPoint":21204,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":21355,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":21312,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":23438,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":21409,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":21960,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_fromMemory":{"entryPoint":22978,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_memory_ptr_fromMemory":{"entryPoint":23048,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_InitializeHookParams_calldata":{"entryPoint":21436,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_ManualAddRemoveLiquidityParams_calldata":{"entryPoint":22230,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_SwapSingleTokenHookParams_calldata":{"entryPoint":22434,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint256t_array_uint256_dynt_bytes_fromMemory":{"entryPoint":24272,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint48":{"entryPoint":26468,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_uint160_address":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_address_uint256_array_uint256_dyn":{"entryPoint":23462,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_array_bytes_dyn":{"entryPoint":22006,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":21486,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_calldata":{"entryPoint":23271,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn_to_array_uint256_dyn":{"entryPoint":22748,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_bytes":{"entryPoint":21680,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_uint256_array_uint256_dyn":{"entryPoint":22280,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_bytes":{"entryPoint":21643,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":23332,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_contract_IERC20_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_contract_IERC20_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_enum_AddLiquidityKind":{"entryPoint":23771,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_RemoveLiquidityKind":{"entryPoint":24165,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_SwapKind":{"entryPoint":24344,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_stringliteral_52cc":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_struct_AddLiquidityHookParams":{"entryPoint":23829,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_AddLiquidityParams":{"entryPoint":24903,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_InitializeHookParams":{"entryPoint":22799,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RemoveLiquidityHookParams":{"entryPoint":24178,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RemoveLiquidityParams":{"entryPoint":25015,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapSingleTokenHookParams":{"entryPoint":24357,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_bytes":{"entryPoint":22606,"id":null,"parameterSlots":4,"returnSlots":1},"access_calldata_tail_array_contract_IERC20_dyn_calldata":{"entryPoint":23106,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_bytes_calldata":{"entryPoint":23190,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":24104,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_AddLiquidityHookParams":{"entryPoint":23644,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_SwapSingleTokenHookParams":{"entryPoint":25203,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_contract_IERC20_dyn":{"entryPoint":21180,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":21327,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_access_bytes_calldata_dyn_calldata":{"entryPoint":25883,"id":null,"parameterSlots":3,"returnSlots":2},"calldata_array_index_access_contract_IERC20_dyn_calldata":{"entryPoint":23364,"id":null,"parameterSlots":3,"returnSlots":1},"extract_returndata":{"entryPoint":24522,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":21145,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_64825":{"entryPoint":20984,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_64827":{"entryPoint":21012,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_64835":{"entryPoint":21032,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_64837":{"entryPoint":21061,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_88258":{"entryPoint":21089,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_88260":{"entryPoint":21117,"id":null,"parameterSlots":1,"returnSlots":0},"fun_bubbleUpRevert":{"entryPoint":28017,"id":6059,"parameterSlots":1,"returnSlots":0},"fun_catchEncodedResult":{"entryPoint":26705,"id":6022,"parameterSlots":1,"returnSlots":1},"fun_ensureOnlyVault":{"entryPoint":26173,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_getSingleInputArrayAndTokenIndex":{"entryPoint":26487,"id":18579,"parameterSlots":3,"returnSlots":2},"fun_nonReentrantBefore":{"entryPoint":26128,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_queryRevertErrorCode":{"entryPoint":25277,"id":34417,"parameterSlots":0,"returnSlots":1},"fun_queryRevertLegacy":{"entryPoint":24569,"id":34462,"parameterSlots":0,"returnSlots":1},"fun_queryRevertNoReason":{"entryPoint":25373,"id":34564,"parameterSlots":0,"returnSlots":1},"fun_queryRevertPanic":{"entryPoint":25469,"id":34508,"parameterSlots":0,"returnSlots":1},"fun_querySpoof":{"entryPoint":25107,"id":34363,"parameterSlots":0,"returnSlots":1},"fun_querySwapSingleTokenExactInAndRevert":{"entryPoint":25906,"id":34325,"parameterSlots":6,"returnSlots":1},"fun_returnEth":{"entryPoint":26335,"id":18535,"parameterSlots":1,"returnSlots":0},"fun_saveSender":{"entryPoint":26402,"id":18193,"parameterSlots":1,"returnSlots":1},"fun_sendTokenOut":{"entryPoint":27333,"id":18725,"parameterSlots":4,"returnSlots":0},"fun_sendValue":{"entryPoint":27893,"id":39683,"parameterSlots":2,"returnSlots":0},"fun_swapHook":{"entryPoint":26861,"id":17193,"parameterSlots":1,"returnSlots":3},"fun_toUint160":{"entryPoint":26267,"id":42734,"parameterSlots":1,"returnSlots":1},"fun_verifyCallResultFromTarget":{"entryPoint":28032,"id":39838,"parameterSlots":3,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":24502,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_saveSenderAndManageEth":{"entryPoint":25565,"id":18160,"parameterSlots":2,"returnSlots":1},"read_from_calldatat_address":{"entryPoint":23086,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_calldatat_bool":{"entryPoint":23425,"id":null,"parameterSlots":1,"returnSlots":1},"write_to_memory_enum_AddLiquidityKind":{"entryPoint":23954,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_enum_RemoveLiquidityKind":{"entryPoint":24153,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"18063":[{"length":32,"start":1459},{"length":32,"start":2984},{"length":32,"start":3548},{"length":32,"start":5440},{"length":32,"start":8994},{"length":32,"start":10720},{"length":32,"start":13567},{"length":32,"start":25697},{"length":32,"start":26407}],"18073":[{"length":32,"start":25579},{"length":32,"start":26344}],"18092":[{"length":32,"start":34},{"length":32,"start":7239},{"length":32,"start":7571},{"length":32,"start":9167},{"length":32,"start":9583},{"length":32,"start":10248},{"length":32,"start":11228},{"length":32,"start":11979},{"length":32,"start":19530},{"length":32,"start":20237},{"length":32,"start":27501},{"length":32,"start":27844}],"18095":[{"length":32,"start":9881},{"length":32,"start":11646},{"length":32,"start":14343},{"length":32,"start":16810},{"length":32,"start":17068},{"length":32,"start":19903}],"27649":[{"length":32,"start":987},{"length":32,"start":1362},{"length":32,"start":1760},{"length":32,"start":2238},{"length":32,"start":2888},{"length":32,"start":3493},{"length":32,"start":4305},{"length":32,"start":4643},{"length":32,"start":5070},{"length":32,"start":5846},{"length":32,"start":6094},{"length":32,"start":6824},{"length":32,"start":8133},{"length":32,"start":8453},{"length":32,"start":8841},{"length":32,"start":9271},{"length":32,"start":9917},{"length":32,"start":10430},{"length":32,"start":10810},{"length":32,"start":12908},{"length":32,"start":13471},{"length":32,"start":13902},{"length":32,"start":14040},{"length":32,"start":15453},{"length":32,"start":16022},{"length":32,"start":18218},{"length":32,"start":19014},{"length":32,"start":19147},{"length":32,"start":20755},{"length":32,"start":24616},{"length":32,"start":25154},{"length":32,"start":25324},{"length":32,"start":25420},{"length":32,"start":25516},{"length":32,"start":25934},{"length":32,"start":26183},{"length":32,"start":26565},{"length":32,"start":27169},{"length":32,"start":27365},{"length":32,"start":27690}]},"linkReferences":{},"object":"60806040526004361015610072575b3615610018575f80fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361004a57005b7f0540ddf6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f3560e01c8063026b3d9514614fd9578063086fad6614614aa257806308c04793146149845780630c3b846f146148e55780630ca078ec1461484d5780630f7108881461470c578063175d44081461462d57806319c6989f146140085780631d56798d14613e6d57806322717db214613dff57806323b3924114613bfd578063339f383814613be35780633a1b05de146136bb5780633ebc54e51461353e578063452db952146133ba57806345d132fe146133825780634aeecca9146133685780634b59d17c146132e457806351682750146131d157806353d0bb981461311c57806354fd4d5014612fdf57806358307e4414612f765780635b34379114612a115780635e01eb5a146129cc5780635f9815ff1461288957806364c907071461283157806368a24fe01461236357806368d5e16a14612146578063724dba331461202d57806372657d1714611ee2578063750283bc14611e655780637ae3096014611e4b5780637b03c7ba14611a7f57806382bf2b24146119ab57806382cd54fb1461176b57806390aa9f761461175157806394e86ef8146115c65780639de90518146113a7578063aaf51ea31461138d578063ac9650d814611349578063ad6d59f3146112a3578063b037ed361461113f578063b24bd57114610ff5578063b29a62a714610f99578063b3b0a7a714610f85578063be5ae84114610f30578063beb91feb14610e18578063bf6ee3fd14610c7f578063c08bc85114610be7578063c330c7be14610a20578063c3ec0efc14610967578063d3a5152a1461092a578063da001f7d14610799578063e178073e1461074b578063e7326def146105fa578063ecb2182c1461045c5763efd85f140361000e5734610458576102f7366153bc565b6102ff61663d565b6001600160a01b039061031460208201615a2e565b61031d82615a2e565b9261032b6040840184615a42565b9093608081013593600585101561045857836103966103d7966060856103815f9c9b61037199878f9e61036460c061039d9d0187615a96565b9a909b6040519e8f615245565b168d521660208c015236916152d4565b60408901520135606087015260808601615d92565b369161536b565b60a08201526040519485809481937f4af29ec400000000000000000000000000000000000000000000000000000000835260048301616147565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d575f905f925f91610423575b5061041f90604051938493846154b0565b0390f35b905061041f925061044691503d805f833e61043e8183615299565b810190615c92565b909261040e565b6040513d5f823e3d90fd5b5f80fd5b61051261048b5f6105048161054e61047336615879565b97939a929990949161048433616722565b9a83616777565b9790946001600160a01b039b8c96604051946104a6866151f8565b33865260209e8f9116908601526040850152606084015260016080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008c84015260248301615e72565b03601f198101835282615299565b6040519586809481937f48c894910000000000000000000000000000000000000000000000000000000083528b6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d576105a192610599915f916105d8575b50858082518301019101615ed0565b509050615fb6565b51906105b0575b604051908152f35b5f7f00000000000000000000000000000000000000000000000000000000000000005d6105a8565b6105f491503d805f833e6105ec8183615299565b810190615a08565b8661058a565b6105046106a05f806106dc61062b61061136615879565b916106249b959b9a949691939a33616722565b9a8c616777565b50916001600160a01b039560405193610643856151f8565b3385528760209d168d8601526040850152606084015260026080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008b84015260248301615e72565b6040519485809481937f48c894910000000000000000000000000000000000000000000000000000000083528a6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57610722915f91610731575b50838082518301019101615ed0565b5050906105b057604051908152f35b61074591503d805f833e6105ec8183615299565b84610713565b346104585760606003193601126104585761078f61077b61076a61518c565b6107726151b8565b60443591616777565b6040519283926040845260408401906153ee565b9060208301520390f35b34610458576080600319360112610458576107b261518c565b67ffffffffffffffff602435818111610458576107d3903690600401615322565b906107dc6151ce565b606435918211610458576108ba5f929161050461087e61080a610804879636906004016153a1565b93616722565b966001600160a01b039360405191610821836151f8565b3083528560209b168b8401526040830152866060830152600160808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008b84015260248301615d15565b6040519485809481937fedfa35680000000000000000000000000000000000000000000000000000000083528a6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57610900915f91610910575b50838082518301019101615c92565b509190506105b057604051908152f35b61092491503d805f833e6105ec8183615299565b846108f1565b34610458575f600319360112610458577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b34610458575f6003193601126104585761097f616610565b6109bf602061098c616273565b604051809381927f68a24fe000000000000000000000000000000000000000000000000000000000835260048301615f25565b03815f305af1801561044d576109f5575b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b602090813d8311610a19575b610a0b8183615299565b8101031261045857806109d0565b503d610a01565b346104585760a060031936011261045857610a3961518c565b67ffffffffffffffff60443581811161045857610a5a903690600401615322565b91610a636151a2565b91608435908111610458575f93610504610b078694610a92610a8c610b449636906004016153a1565b97616722565b966001600160a01b03948560405193610aaa856151f8565b30855216602084015260408301526024356060830152600360808301528660a083015260c08201526040519283917fb24bd57100000000000000000000000000000000000000000000000000000000602084015260248301615e72565b6040519586809481937fedfa356800000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d5761041f92610b90915f91610bcd575b5060208082518301019101615ed0565b90939192610ba5575b6040519384938461584e565b5f7f00000000000000000000000000000000000000000000000000000000000000005d610b99565b610be191503d805f833e6105ec8183615299565b84610b80565b6105046106a05f806108ba610bfb36615421565b610c0b9993919892949933616722565b986001600160a01b039560405193610c22856151f8565b3385528760209d168d8601526040850152606084015260016080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008b84015260248301615d15565b608060031936011261045857610c9361518c565b67ffffffffffffffff9060243582811161045857610cb5903690600401615322565b906044359283151580940361045857606435908111610458575f92610504610d648594610ce9610da19536906004016153a1565b610cf233616722565b986001600160a01b03958660405194610d0a866151f8565b33865216602085015260408401528760608401526003608084015260a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301615d15565b6040519485809481937f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57610dfe575b50610dd957005b5f7f00000000000000000000000000000000000000000000000000000000000000005d005b610e11903d805f833e6105ec8183615299565b5081610dd2565b34610458575f60031936011261045857610e30616610565b6040516060810181811067ffffffffffffffff821117610f0357610eac915f91604052600281526040366020830137604051809381927f82cd54fb0000000000000000000000000000000000000000000000000000000083528460048401528460248401528460448401526080606484015260848301906153ee565b038183305af1801561044d57610ee1575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b610efc903d805f833e610ef48183615299565b810190615c36565b50806109d0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b34610458576020610f58610f43366157a2565b610f4b616610565b610f5361663d565b6168ed565b50505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b34610458575f600319360112610458575f80fd5b346104585760a060031936011261045857610fb261518c565b610fba6151b8565b610fc26151ce565b6084359167ffffffffffffffff831161045857602093610fe96105a89436906004016155c8565b93909260643592616532565b3461045857611003366153bc565b61100b61663d565b6001600160a01b0361101f60208301615a2e565b61102883615a2e565b916110366040850185615a42565b9490608082013593600485101561045857836103966110cd96611085611093955f9b606089878f9e61036460c061106e9e0184615a96565b168d521660208c0152013560408a015236916152d4565b606087015260808601615e59565b60a08201526040519485809481937f21457897000000000000000000000000000000000000000000000000000000008352600483016161b7565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d575f905f925f91611115575b5061041f906040519384938461584e565b905061041f925061113891503d805f833e6111308183615299565b810190615ed0565b9092611104565b346104585760406003193601126104585761115861518c565b6001600160a01b0360405190806020937f5f9815ff000000000000000000000000000000000000000000000000000000008585015216602483015230604483015260243560648301526064825260a082019082821067ffffffffffffffff831117610f0357815f91816040527fedfa35680000000000000000000000000000000000000000000000000000000082528560a486015281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608761121e60c482018261548b565b0301927f0000000000000000000000000000000000000000000000000000000000000000165af190811561044d57611267925f9261127c575b5050828082518301019101615c36565b9061041f6040519282849384528301906153ee565b61129c925060a0903d90815f853e6112948285615299565b010190615a08565b8380611257565b34610458575f600319360112610458576112bb616610565b6112fa5f6112c7615c5c565b604051809381927f7b03c7ba00000000000000000000000000000000000000000000000000000000835260048301615e72565b038183305af1801561044d5761132f575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b611342903d805f833e6111308183615299565b50506109d0565b60206003193601126104585760043567ffffffffffffffff81116104585761138161137b61041f923690600401615597565b906163dd565b604051918291826155f6565b34610458575f6003193601126104585760206105a861637d565b34610458576113c16113b8366154d9565b92919390616722565b916001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691604051937fca4f280300000000000000000000000000000000000000000000000000000000855216928360048201525f81602481865afa90811561044d575f916115a4575b50519461144086615e28565b955f5b81811061157f5750505f926105046114c18886956114fd9560405192611468846151f8565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008a84015260248301615d15565b6040519485809481937fedfa3568000000000000000000000000000000000000000000000000000000008352896004840152602483019061548b565b03925af1801561044d57611521915f91611565575b50828082518301019101615c92565b50509161153d575b61041f6040519282849384528301906153ee565b5f7f00000000000000000000000000000000000000000000000000000000000000005d611529565b61157991503d805f833e6105ec8183615299565b84611512565b806fffffffffffffffffffffffffffffffff61159d6001938b615fb6565b5201611443565b6115c091503d805f833e6115b88183615299565b810190615d9e565b86611434565b6115cf366157d5565b949095939193336115df90616722565b97604051996115ed8b615228565b338b5260208b01600190526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e0860152151561010085015236906116449261536b565b6101208301526040517f68a24fe00000000000000000000000000000000000000000000000000000000060208201529182906116839060248301615f25565b03601f19810183526116959083615299565b60405180927f48c894910000000000000000000000000000000000000000000000000000000082526004820160209052602482016116d29161548b565b03827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691815a5f948591f191821561044d575f92611735575b5060208280518101031261045857602080920151906105b057604051908152f35b61174a9192503d805f833e6105ec8183615299565b9082611714565b34610458575f6003193601126104585760206105a861631d565b346104585760806003193601126104585761178461518c565b61178c6151b8565b906064359067ffffffffffffffff8211610458576117b1611827923690600401615322565b906117ba616610565b6117c261663d565b6001600160a01b035f817f00000000000000000000000000000000000000000000000000000000000000001693604051809681927fa07d60400000000000000000000000000000000000000000000000000000000083526044358a8860048601615ba6565b038183875af193841561044d575f9461198f575b5080604051927fca4f28030000000000000000000000000000000000000000000000000000000084521660048301525f82602481865afa91821561044d575f92611973575b505f5b825181101561192f576118968186615fb6565b5190816118a8575b6001915001611883565b826118b38286615fb6565b5116853b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152908816602482015260448101929092525f8260648183895af191821561044d57600192611920575b5061189e565b61192990615214565b8761191a565b61041f8561193c886166df565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6040519182916020835260208301906153ee565b6119889192503d805f833e6115b88183615299565b9085611880565b6119a49194503d805f833e610ef48183615299565b928561183b565b5f61050481610b44611a426119bf36615739565b906119cf98949295939833616722565b986001600160a01b039687604051956119e7876151f8565b3387521660208601526040850152606084015260036080840152151560a083015260c08201526040519283917f7b03c7ba00000000000000000000000000000000000000000000000000000000602084015260248301615e72565b6040519586809481937f48c8949100000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b3461045857611a8d366153bc565b611a95616610565b611a9d61663d565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000166020830191611ad683615a2e565b90611ae085615a2e565b91611aee6040870187615a42565b9190936080880135916004831015610458578461039661106e94611085611b5e995f9860608f87611b269a61036460c0840184615a96565b60a0820152604051809481927f21457897000000000000000000000000000000000000000000000000000000008352600483016161b7565b038183875af191821561044d575f945f915f94611e24575b50611b8090615a2e565b9282604051947fca4f28030000000000000000000000000000000000000000000000000000000086521660048501526024915f85602481895afa94851561044d575f95611e08575b50909560a0880191905f5b8651811015611dc357611be68184615fb6565b51908115611dba5786611bf9828a615fb6565b5116611c0486615b81565b80611d8f575b15611d0d5750883b1561045857886040517fae6393290000000000000000000000000000000000000000000000000000000081525f81606481838d7f000000000000000000000000000000000000000000000000000000000000000016968760048401528d30908401528960448401525af1801561044d57611cfe575b50803b15610458575f809188604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528860048401525af192831561044d5788611ce38e611ce994600197611cef575b50615a2e565b16616cf5565b01611bd3565b611cf890615214565b5f611cdd565b611d0790615214565b8c611c87565b611d168c615a2e565b8a3b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529116602482015260448101929092525f82606481838d5af191821561044d57600192611d80575b50611ce9565b611d8990615214565b8b611d7a565b50877f0000000000000000000000000000000000000000000000000000000000000000168114611c0a565b60019150611ce9565b5061041f88611dd9611dd48c615a2e565b6166df565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6040519384938461584e565b611e1d9195503d805f833e6115b88183615299565b9388611bc8565b909350611b809550611e4091503d805f833e6111308183615299565b919590919390611b76565b34610458575f6003193601126104585760206105a86162bd565b611e6e366157d5565b94909593919333611e7e90616722565b9760405199611e8c8b615228565b338b5260208b015f90526001600160a01b031660408b01526001600160a01b031660608a01526001600160a01b0316608089015260a088015260c087015260e0860152151561010085015236906116449261536b565b60c060031936011261045857611ef661518c565b611efe6151b8565b611f06615340565b60a4359067ffffffffffffffff8211610458575f611fc1611f2c829436906004016153a1565b92610504610512611f4a611f3f33616722565b98604435908b616777565b966001600160a01b039460405192611f61846151f8565b3384528660209d168d8501526040840152606435606084015260026080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008c84015260248301615d15565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d576105a19261200c915f91612013575b50858082518301019101615c92565b5050615fb6565b61202791503d805f833e6105ec8183615299565b86611ffd565b6105046120c55f8061210161204136615421565b612052999391999892949833616722565b996001600160a01b039560405193612069856151f8565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f5b343791000000000000000000000000000000000000000000000000000000008a84015260248301615d15565b6040519485809481937f48c89491000000000000000000000000000000000000000000000000000000008352896004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57611521915f916115655750828082518301019101615c92565b3461045857612154366156d6565b61215d33616722565b6001600160a01b0390604051906020937f3a1b05de0000000000000000000000000000000000000000000000000000000085840152846024840152836121a2826151e4565b166044840152836121b48683016151e4565b16606484015260408101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104585781019085823592019467ffffffffffffffff94858411610458578360051b3603871361045857612249816122859460606122335f9b8c996080608487015260c4860191615ae7565b91013560a483015203601f198101835282615299565b6040519687809481937f48c894910000000000000000000000000000000000000000000000000000000083528b6004840152602483019061548b565b03927f0000000000000000000000000000000000000000000000000000000000000000165af192831561044d575f93612347575b50825183019360808482870196031261045857808401518381116104585785826122e592870101615bd5565b9360408101519560608201519260808301519586116104585761041f9561230d930101615bd5565b9161231f575b60405194859485615708565b5f7f00000000000000000000000000000000000000000000000000000000000000005d612313565b61235c9193503d805f833e6105ec8183615299565b91846122b9565b3461045857612371366157a2565b612379616610565b61238161663d565b61238a816168ed565b612398606085939501615a2e565b906123a283615a2e565b946101008401956123b287615b81565b806127fc575b156126795750804710612651576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008181169291833b15610458576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048187895af1801561044d57612642575b507f00000000000000000000000000000000000000000000000000000000000000001690604051936124c85f80602097888101907fa9059cbb0000000000000000000000000000000000000000000000000000000082526124b3816105048b8b60248401602090939291936001600160a01b0360408201951681520152565b519082865af16124c1615fca565b9083616d80565b805190868215159283612629575b5050506125fe57506040517f15afd4090000000000000000000000000000000000000000000000000000000081526001600160a01b0391909116600482015260248101929092528290829060449082905f905af1801561044d576125d5575b5050602094612564915b61254885615a2e565b9161255e61255860808801615a2e565b91615b81565b92616ac5565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000169116146125c3575b505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b611dd46125cf91615a2e565b82612597565b813d83116125f7575b6125e88183615299565b81010312610458578580612535565b503d6125de565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6126399350820181019101615b8e565b158b86816124d6565b61264b90615214565b89612434565b7fa01a9df6000000000000000000000000000000000000000000000000000000005f5260045ffd5b8161268d575b50506020946125649161253f565b6001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691807f000000000000000000000000000000000000000000000000000000000000000016916126e78561669b565b93803b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152848316602482015294821660448601529187161660648401525f908390608490829084905af190811561044d575f936020936127ad936127ed575b506040519485809481937f15afd4090000000000000000000000000000000000000000000000000000000083528a60048401602090939291936001600160a01b0360408201951681520152565b03925af1801561044d576127c2575b8061267f565b602090813d83116127e6575b6127d88183615299565b8101031261045857856127bc565b503d6127ce565b6127f690615214565b8a612760565b506001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016908516146123b8565b34610458575f60031936011261045857612849616610565b6109bf6020612856616273565b604051809381927fbe5ae84100000000000000000000000000000000000000000000000000000000835260048301615f25565b34610458576060600319360112610458576128a261518c565b6128aa6151b8565b6128b261663d565b6001600160a01b0390817f000000000000000000000000000000000000000000000000000000000000000016604051927fca4f2803000000000000000000000000000000000000000000000000000000008452841660048401525f83602481845afa93841561044d575f61293361296e96829683916129b2575b5051615e28565b93604051968795869485937fa07d60400000000000000000000000000000000000000000000000000000000085526044359160048601615ba6565b03925af1801561044d5761041f915f91612998575b506040519182916020835260208301906153ee565b6129ac91503d805f833e610ef48183615299565b82612983565b6129c691503d8085833e6115b88183615299565b8861292c565b34610458575f6003193601126104585760207f00000000000000000000000000000000000000000000000000000000000000005c6001600160a01b0360405191168152f35b3461045857612a1f366153bc565b612a27616610565b612a2f61663d565b6001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001660209182840193612a6a85615a2e565b94612a7482615a2e565b95612a826040840184615a42565b91909760808501359160058310156104585786610396612ac694612ad5612b259d5f988e86612aed99612ab98f60c0810190615a96565b99909a6040519d8e615245565b168c5216908a015236916152d4565b60408701526060890135606087015260808601615d92565b60a0820152604051809881927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301616147565b038183885af191821561044d575f915f975f94612f4d575b50612b4790615a2e565b84604051917fca4f28030000000000000000000000000000000000000000000000000000000083521660048201525f81602481895afa90811561044d575f91612f33575b50929660a0820193905f5b8251811015612ef25786612baa8285615fb6565b5116612bb68287615fb6565b51908115612e8557612bc788615b81565b80612ec7575b15612d7a5750804710612651577f000000000000000000000000000000000000000000000000000000000000000088811691823b15610458576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af1801561044d57612c96948e928492612d6b575b508d5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af191821561044d57612cf7938d93612d40575b5060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af190811561044d578a91612d17575b50506001905b01612b96565b813d8311612d39575b612d2a8183615299565b8101031261045857888b612d0b565b503d612d20565b612d5f90843d8611612d64575b612d578183615299565b810190615b8e565b612cac565b503d612d4d565b612d7490615214565b5f612c48565b90887f00000000000000000000000000000000000000000000000000000000000000001690612da887615a2e565b612db18261669b565b833b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201528d831660248201529082166044820152908416606482015292915f908490608490829084905af191821561044d57612e71938d93612eb8575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8d5af190811561044d578a91612e8f575b5050600190612d11565b813d8311612eb1575b612ea28183615299565b8101031261045857888b612e85565b503d612e98565b612ec190615214565b8e612cac565b50887f0000000000000000000000000000000000000000000000000000000000000000168114612bcd565b508361041f8a612f04611dd487615a2e565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051938493846154b0565b612f4791503d805f833e6115b88183615299565b88612b8b565b909350612f6a919750612b4792503d805f833e61043e8183615299565b97919290979390612b3d565b34610458575f60031936011261045857612fdb6040516104d2602082015260208152612fa18161527d565b6040519182917f5ab64fb800000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b0390fd5b34610458575f600319360112610458576040515f80549060018260011c9160018416918215613112575b60209485851084146130e55785879486865291825f146130a757505060011461304e575b5061303a92500383615299565b61041f60405192828493845283019061548b565b5f808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061308f57505061303a93508201018561302d565b80548389018501528794508693909201918101613078565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168582015261303a95151560051b850101925087915061302d9050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b92607f1692613009565b346104585761314d6131465f806106dc61087e61050461313b36615677565b95939a929990616722565b988a616777565b506001600160a01b039360405191613164836151f8565b3083528560209b168b84015260408301526fffffffffffffffffffffffffffffffff6060830152600260808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008b84015260248301615e72565b6105046120c55f806132686131e536615739565b6131f59993949892919933616722565b996001600160a01b03956040519361320c856151f8565b3385528760209c168c86015260408501526060840152876080840152151560a083015260c08201526040519283917f7b03c7ba000000000000000000000000000000000000000000000000000000008a84015260248301615e72565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d576132ae915f916132ca575b50828082518301019101615ed0565b5092905061153d5761041f6040519282849384528301906153ee565b6132de91503d805f833e6105ec8183615299565b8461329f565b34610458575f600319360112610458576132fc616610565b6109bf602060405161330d816151f8565b5f81525f82820152606060408201526060808201525f60808201525f60a0820152606060c0820152604051809381927f086fad660000000000000000000000000000000000000000000000000000000083526004830161590f565b34610458575f6003193601126104585760206105a8616213565b34610458575f600319360112610458577ff5ab33e5000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104585760a0600319360112610458576133d361518c565b67ffffffffffffffff602435818111610458576133f4903690600401615322565b916133fd6151a2565b91608435908111610458575f93610504610b078694613426610a8c61349b9636906004016153a1565b966001600160a01b0394856040519361343e856151f8565b30855216602084015260408301526044356060830152600460808301528660a083015260c08201526040519283917fefd85f1400000000000000000000000000000000000000000000000000000000602084015260248301615d15565b03927f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d5761041f926134e7915f91613524575b5060208082518301019101615c92565b909391926134fc575b604051938493846154b0565b5f7f00000000000000000000000000000000000000000000000000000000000000005d6134f0565b61353891503d805f833e6105ec8183615299565b846134d7565b346104585761354c3661552b565b9061355a9094939294616722565b936001600160a01b038093816040519661357388615228565b3388528160209a8b8a015f905216604089015216606087015216608085015260a084015260c083015f905260e083016fffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae84100000000000000000000000000000000000000000000000000000000905260248201906135fc91615f25565b03601f198101835261360e9083615299565b6040518080937fedfa35680000000000000000000000000000000000000000000000000000000082528660048301526024820161364a9161548b565b03917f00000000000000000000000000000000000000000000000000000000000000001691815a5f948591f190811561044d575f916136a1575b50828180518101031261045857820151906105b057604051908152f35b6136b591503d805f833e6105ec8183615299565b83613684565b34610458576136c9366156d6565b6001600160a01b039061379e827f0000000000000000000000000000000000000000000000000000000000000000169161370281615a2e565b6020935f8584019261371384615a2e565b6137516137236040880188615a42565b8b6040519461373186615261565b878652816040519761374289615245565b168752168b86015236916152d4565b60408301526060860135606083015282608083015260a0820152604051809681927f4af29ec400000000000000000000000000000000000000000000000000000000835260048301616147565b038183855af195861561044d575f945f97613bc1575b506137be84615a2e565b81604051917fca4f28030000000000000000000000000000000000000000000000000000000083521660048201525f81602481865afa90811561044d575f91613ba7575b5093967f0000000000000000000000000000000000000000000000000000000000000000821694905f5b825181101561397657836138408285615fb6565b511661384c828a615fb6565b51801561396c5761385c88615a2e565b906138668161669b565b918a3b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015289821660248201529281166044840152831660648301529091905f83608481838e5af191821561044d57613923938d93612eb8575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8a5af190811561044d578a91613943575b50506001905b0161382c565b813d8311613965575b6139568183615299565b8101031261045857888b613937565b503d61394c565b505060019061393d565b5091939450919661398681615a2e565b908461399a61399488615a2e565b92615a2e565b16888660246139a88a615a2e565b60405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa90811561044d575f91613b72575b5090613a6c985f93926139fc8751615e28565b918860405194613a0b86615261565b8786528160405197613a1c89615245565b16875216908501526040840152606083015282608083015260a0820152604051809881927f21457897000000000000000000000000000000000000000000000000000000008352600483016161b7565b0381838b5af194851561044d575f965f96613b50575b505f5b8351811015613b3e5784613a998286615fb6565b511690613aa68189615fb6565b518015613b3457613ab688615a2e565b908b3b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03948516600482015291909316602482015260448101929092525f82606481838e5af191821561044d57600192613b25575b505b01613a85565b613b2e90615214565b8a613b1d565b5060019150613b1f565b5061041f868860405194859485615708565b909650613b689195503d805f833e6111308183615299565b9591969095613a82565b929190508883813d8311613ba0575b613b8b8183615299565b81010312610458579151909190613a6c6139e9565b503d613b81565b613bbb91503d805f833e6115b88183615299565b88613802565b909450613bd99196503d805f833e61043e8183615299565b96919490966137b4565b34610458575f6003193601126104585760206105a8615ff9565b346104585760a060031936011261045857613c1661518c565b613c1e6151ce565b90613c276151a2565b60843567ffffffffffffffff811161045857613c4a613c509136906004016153a1565b91616722565b916001600160a01b0391827f0000000000000000000000000000000000000000000000000000000000000000169280604051937fc9c1661b0000000000000000000000000000000000000000000000000000000085521695866004850152166024830152604082604481865afa91821561044d575f905f93613dc0575b505f93610504613d5c8694613ce4613d9895615e28565b906001613cf18984615fb6565b5260405191613cff836151f8565b30835260209b8c84015260408301526024356060830152600160808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008c84015260248301615e72565b6040519586809481937fedfa35680000000000000000000000000000000000000000000000000000000083528b6004840152602483019061548b565b03925af191821561044d576105a192610599915f916105d85750858082518301019101615ed0565b925050916040823d604011613df7575b81613ddd60409383615299565b81010312610458578151602090920151909290915f613ccd565b3d9150613dd0565b34610458575f6003193601126104585760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c65676163792072657665727420726561736f6e0000000000000000000000006044820152fd5b3461045857613e89613e7e36615677565b929490939193616722565b926001600160a01b0392837f0000000000000000000000000000000000000000000000000000000000000000169380604051947fc9c1661b0000000000000000000000000000000000000000000000000000000086521696876004860152166024840152604083604481875afa92831561044d575f905f94613fcb575b5093610504613d5c5f9694613fa394613f1f8997615e28565b916fffffffffffffffffffffffffffffffff613f3b8a85615fb6565b5260405192613f49846151f8565b30845260209c8d85015260408401526060830152600260808301528660a083015260c08201526040519283917fefd85f14000000000000000000000000000000000000000000000000000000008c84015260248301615d15565b03925af191821561044d576105a19261200c915f916120135750858082518301019101615c92565b9350506040833d604011614000575b81613fe760409383615299565b8101031261045857825160209093015192610504613f06565b3d9150613fda565b60a06003193601126104585767ffffffffffffffff60043511610458573660236004350112156104585767ffffffffffffffff60043560040135116104585736602460c060043560040135026004350101116104585760243567ffffffffffffffff81116104585761407e903690600401615597565b67ffffffffffffffff60443511610458576060600319604435360301126104585760643567ffffffffffffffff8111610458576140bf9036906004016155c8565b60843567ffffffffffffffff8111610458576140df903690600401615597565b9490936140ea616610565b806004356004013503614605575f5b60043560040135811061437a5750505060443560040135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd60443536030182121561045857816044350160048101359067ffffffffffffffff82116104585760248260071b36039101136104585761419d575b61041f61138186865f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6163dd565b6001600160a01b039492947f0000000000000000000000000000000000000000000000000000000000000000163b1561045857604051947f2a2d80d10000000000000000000000000000000000000000000000000000000086523360048701526060602487015260c486019260443501602481019367ffffffffffffffff60048301351161045857600482013560071b360385136104585760606064890152600482013590529192869260e484019291905f905b600481013582106142fc5750505082915f9461429f926001600160a01b0361427d6024604435016151e4565b16608486015260448035013560a4860152600319858403016044860152615b24565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af191821561044d5761041f93611381936142ed575b82945081935061416d565b6142f690615214565b846142e2565b9195945091926001600160a01b03614313876151e4565b168152602080870135916001600160a01b0383168093036104585760049260019282015261434360408901616764565b65ffffffffffff809116604083015261435e60608a01616764565b1660608201526080809101970193019050889495939291614251565b61438861039682848661651b565b6040519081606081011067ffffffffffffffff606084011117610f0357606082016040525f82525f60208301525f6040830152602081015190606060408201519101515f1a9183526020830152604082015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8184026004350136030112610458576040519061441982615245565b61442c602460c0850260043501016151e4565b808352614442604460c0860260043501016151e4565b9081602085015261445c606460c0870260043501016151e4565b60408581019190915260043560c08702016084810135606087015260a4810135608087015260c4013560a0860152830151835160209094015160ff91909116926001600160a01b0383163b15610458575f6001600160a01b03809460e4948a98849860c460c06040519c8d9b8c9a7fd505accf000000000000000000000000000000000000000000000000000000008c521660048b01523060248b0152608482820260043501013560448b0152026004350101356064880152608487015260a486015260c4850152165af190816145f6575b506145ed5761453b615fca565b906001600160a01b038151169060206001600160a01b0381830151166044604051809581937fdd62ed3e00000000000000000000000000000000000000000000000000000000835260048301523060248301525afa91821561044d575f926145b8575b5060600151036145b357506001905b016140f9565b616d71565b9091506020813d6020116145e5575b816145d460209383615299565b81010312610458575190606061459e565b3d91506145c7565b506001906145ad565b6145ff90615214565b8961452e565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b346104585761463b3661552b565b906146499094939294616722565b936001600160a01b038093816040519661466288615228565b3388528160209a8b8a016001905216604089015216606087015216608085015260a084015260c083016fffffffffffffffffffffffffffffffff905260e083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905261010083015f905261012083015260405180928582017fbe5ae84100000000000000000000000000000000000000000000000000000000905260248201906135fc91615f25565b346104585761471d6113b8366154d9565b926001600160a01b0392837f00000000000000000000000000000000000000000000000000000000000000001693604051937fca4f280300000000000000000000000000000000000000000000000000000000855216938460048501525f84602481845afa93841561044d576114c15f9594614810946147a98897610504958991614833575051615e28565b91604051926147b7846151f8565b30845260209a8b850152604084015260608301528660808301528660a083015260c08201526040519283917fb24bd571000000000000000000000000000000000000000000000000000000008a84015260248301615e72565b03925af1801561044d576132ae915f916132ca5750828082518301019101615ed0565b61484791503d808b833e6115b88183615299565b8c61292c565b5f6105048161349b611a4261486136615421565b906148729894929895939533616722565b986001600160a01b0396876040519561488a876151f8565b3387521660208601526040850152606084015260046080840152151560a083015260c08201526040519283917f5b34379100000000000000000000000000000000000000000000000000000000602084015260248301615d15565b34610458575f600319360112610458576148fd616610565b61493c5f614909615c5c565b604051809381927f5b34379100000000000000000000000000000000000000000000000000000000835260048301615d15565b038183305af1801561044d57614971575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b611342903d805f833e61043e8183615299565b60606003193601126104585761499861518c565b60443567ffffffffffffffff8111610458575f6105046149ff6149c2614a39943690600401615322565b6040519283916020977f82cd54fb000000000000000000000000000000000000000000000000000000008985015260243590339060248601615ba6565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352866004840152602483019061548b565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561044d57611267915f91614a88575b50828082518301019101615c36565b614a9c91503d805f833e6105ec8183615299565b83614a79565b3461045857614ab0366153bc565b614ab8616610565b614ac061663d565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000169080614af960208501615a2e565b93614b0381615a2e565b946040820195614b138784615a42565b9092614b226060860186615a42565b83614b3360c0899894980189615a96565b9590946040519a8b987fba8a2be0000000000000000000000000000000000000000000000000000000008a528160c48b01931660048b015216602489015260c060448901525260e4860192905f5b818110614fae5750505092614bc592614bac60209793879660031995868984030160648a0152615ae7565b92608089013560848701528584030160a4860152615b24565b03815f885af191821561044d575f92614f7a575b50909360a0820191905f5b614bee8284615a42565b9050811015614f4057614c13614c0e82614c088587615a42565b90615b44565b615a2e565b614c2482614c086060870187615a42565b35908115614f3657614c3586615b81565b80614f09575b15614dbc5750804710612651577f000000000000000000000000000000000000000000000000000000000000000086811691823b15610458576040517fd0e30db00000000000000000000000000000000000000000000000000000000081525f8160048185885af1801561044d57614d05946020928492614dad575b508b5f6040518098819582947fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03925af191821561044d57614d6693602093612d40575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af1801561044d57614d82575b506001905b01614be4565b602090813d8311614da6575b614d988183615299565b810103126104585787614d77565b503d614d8e565b614db690615214565b8d614cb7565b867f00000000000000000000000000000000000000000000000000000000000000001691614de986615a2e565b92614df38261669b565b813b15610458576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0395861660048201528b861660248201529085166044820152838a1690941660648501525f908490608490829084905af191821561044d57614eb593602093614efa575060405193849283927f15afd40900000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b03815f8b5af1801561044d57614ecf575b50600190614d7c565b602090813d8311614ef3575b614ee58183615299565b810103126104585787614ec6565b503d614edb565b614f0390615214565b8b612cac565b50867f00000000000000000000000000000000000000000000000000000000000000001687821614614c3b565b5050600190614d7c565b602087614f4f611dd486615a2e565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b9091506020813d602011614fa6575b81614f9660209383615299565b8101031261045857519085614bd9565b3d9150614f89565b919495965091926020806001928d614fc5896151e4565b168152019501910191899695949392614b81565b60c060031936011261045857614fed61518c565b6024359067ffffffffffffffff90818311610458573660238401121561045857826004013561501b816152bc565b906150296040519283615299565b80825260209460248684019260051b82010191368311610458576024879201905b83821061517557505050506044358381116104585761506d903690600401615322565b90615076615340565b60a435948511610458576120c55f959461510f946105049361509d899836906004016153a1565b916001600160a01b039687604051956150b5876151f8565b338752168c860152604085015260608401526064356080840152151560a083015260c08201526040519283917f086fad66000000000000000000000000000000000000000000000000000000008a8401526024830161590f565b03927f0000000000000000000000000000000000000000000000000000000000000000165af190811561044d575f9161515b575b50818180518101031261045857810151604051908152f35b61516f91503d805f833e6105ec8183615299565b82615143565b828091615181846151e4565b81520191019061504a565b600435906001600160a01b038216820361045857565b606435906001600160a01b038216820361045857565b602435906001600160a01b038216820361045857565b604435906001600160a01b038216820361045857565b35906001600160a01b038216820361045857565b60e0810190811067ffffffffffffffff821117610f0357604052565b67ffffffffffffffff8111610f0357604052565b610140810190811067ffffffffffffffff821117610f0357604052565b60c0810190811067ffffffffffffffff821117610f0357604052565b6020810190811067ffffffffffffffff821117610f0357604052565b6040810190811067ffffffffffffffff821117610f0357604052565b90601f601f19910116810190811067ffffffffffffffff821117610f0357604052565b67ffffffffffffffff8111610f035760051b60200190565b92916152df826152bc565b916152ed6040519384615299565b829481845260208094019160051b810192831161045857905b8282106153135750505050565b81358152908301908301615306565b9080601f830112156104585781602061533d933591016152d4565b90565b60843590811515820361045857565b67ffffffffffffffff8111610f0357601f01601f191660200190565b9291926153778261534f565b916153856040519384615299565b829481845281830111610458578281602093845f960137010152565b9080601f830112156104585781602061533d9335910161536b565b60031990602082820112610458576004359167ffffffffffffffff8311610458578260e0920301126104585760040190565b9081518082526020808093019301915f5b82811061540d575050505090565b8351855293810193928101926001016153ff565b9060a0600319830112610458576004356001600160a01b0381168103610458579167ffffffffffffffff90602435828111610458578161546391600401615322565b9260443592606435801515810361045857926084359182116104585761533d916004016153a1565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6154c661533d94926060835260608301906153ee565b926020820152604081840391015261548b565b6080600319820112610458576001600160a01b03906004358281168103610458579260243592604435908116810361045857916064359067ffffffffffffffff82116104585761533d916004016153a1565b60c0600319820112610458576001600160a01b0391600435838116810361045857926024358181168103610458579260443582811681036104585792606435926084359081168103610458579160a4359067ffffffffffffffff82116104585761533d916004016153a1565b9181601f840112156104585782359167ffffffffffffffff8311610458576020808501948460051b01011161045857565b9181601f840112156104585782359167ffffffffffffffff8311610458576020838186019501011161045857565b6020808201906020835283518092526040830192602060408460051b8301019501935f915b84831061562b5750505050505090565b9091929394958480615667837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528a5161548b565b980193019301919493929061561b565b9060a0600319830112610458576001600160a01b03600435818116810361045857926024358281168103610458579260443592606435908116810361045857916084359067ffffffffffffffff82116104585761533d916004016153a1565b60031990602082820112610458576004359167ffffffffffffffff831161045857826080920301126104585760040190565b909261572161533d9593946080845260808401906153ee565b936020830152604082015260608184039101526153ee565b60a0600319820112610458576004356001600160a01b038116810361045857916024359167ffffffffffffffff91604435838111610458578261577e91600401615322565b92606435801515810361045857926084359182116104585761533d916004016153a1565b60031990602082820112610458576004359167ffffffffffffffff83116104585782610140920301126104585760040190565b610100600319820112610458576001600160a01b0390600435828116810361045857926024358381168103610458579260443590811681036104585791606435916084359160a4359160c4358015158103610458579160e4359067ffffffffffffffff82116104585761584a916004016155c8565b9091565b9161586b9061533d949284526060602085015260608401906153ee565b91604081840391015261548b565b60c0600319820112610458576001600160a01b0390600435828116810361045857926024359260443590811681036104585791606435916084358015158103610458579160a4359067ffffffffffffffff82116104585761533d916004016153a1565b9081518082526020808093019301915f5b8281106158fb575050505090565b8351855293810193928101926001016158ed565b91906020928381526101008101906001600160a01b03948584511681830152858185015116604083015260408401519260e0606084015283518091528161012084019401915f5b8281106159ac575050505061533d93945060e060c0615987606086015194601f1995868683030160808701526158dc565b94608081015160a085015260a08101511515828501520151928285030191015261548b565b8351891686529481019492810192600101615956565b81601f82011215610458578051906159d98261534f565b926159e76040519485615299565b8284526020838301011161045857815f9260208093018386015e8301015290565b9060208282031261045857815167ffffffffffffffff81116104585761533d92016159c2565b356001600160a01b03811681036104585790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610458570180359067ffffffffffffffff821161045857602001918160051b3603831361045857565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610458570180359067ffffffffffffffff82116104585760200191813603831361045857565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104585760209260051b809284830137010190565b601f8260209493601f1993818652868601375f8582860101520116010190565b9190811015615b545760051b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b3580151581036104585790565b90816020910312610458575180151581036104585790565b909261533d94936080936001600160a01b038092168452166020830152604082015281606082015201906153ee565b9080601f8301121561045857815190602091615bf0816152bc565b93615bfe6040519586615299565b81855260208086019260051b82010192831161045857602001905b828210615c27575050505090565b81518152908301908301615c19565b9060208282031261045857815167ffffffffffffffff81116104585761533d9201615bd5565b60405190615c69826151f8565b606060c0835f81525f60208201528260408201525f838201525f60808201525f60a08201520152565b90916060828403126104585781519167ffffffffffffffff928381116104585784615cbe918301615bd5565b9360208201519360408301519081116104585761533d92016159c2565b906005821015615ce85752565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9061533d91602081526001600160a01b03808351166020830152602083015116604082015260c0615d56604084015160e060608501526101008401906158dc565b9260608101516080840152615d73608082015160a0850190615cdb565b60a081015115158284015201519060e0601f198285030191015261548b565b6005821015615ce85752565b60209081818403126104585780519067ffffffffffffffff821161045857019180601f84011215610458578251615dd4816152bc565b93615de26040519586615299565b818552838086019260051b820101928311610458578301905b828210615e09575050505090565b81516001600160a01b0381168103610458578152908301908301615dfb565b90615e32826152bc565b615e3f6040519182615299565b828152601f19615e4f82946152bc565b0190602036910137565b6004821015615ce85752565b906004821015615ce85752565b9061533d91602081526001600160a01b03808351166020830152602083015116604082015260c0615eb3604084015160e060608501526101008401906158dc565b9260608101516080840152615d73608082015160a0850190615e65565b916060838303126104585782519260208101519267ffffffffffffffff938481116104585781615f01918401615bd5565b9360408301519081116104585761533d92016159c2565b906002821015615ce85752565b61016061533d92602083526001600160a01b03808251166020850152615f5360208301516040860190615f18565b80604083015116606085015280606083015116608085015260808201511660a084015260a081015160c084015260c081015160e084015260e08101516101009081850152810151906101209115158285015201519161014080820152019061548b565b8051821015615b545760209160051b010190565b3d15615ff4573d90615fdb8261534f565b91615fe96040519384615299565b82523d5f602084013e565b606090565b6040517f22717db2000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b803b15610458576160a55f929183926040519485809481937f757d64b300000000000000000000000000000000000000000000000000000000835260206004840152602483019061548b565b03925af19081616138575b506160d9576160c56160c0615fca565b616851565b602081805181010312610458576020015190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e6578706563746564207375636365737300000000000000000000000000006044820152606490fd5b61614190615214565b5f6160b0565b9061533d91602081526001600160a01b03808351166020830152602083015116604082015260a0616187604084015160c0606085015260e08401906158dc565b92606081015160808401526161a3608082015183850190615cdb565b01519060c0601f198285030191015261548b565b9061533d91602081526001600160a01b0380835116602083015260208301511660408201526040820151606082015260a0616201606084015160c0608085015260e08401906158dc565b926161a3608082015183850190615e65565b6040517f58307e44000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b6040519061628082615228565b6060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b6040517f45d132fe000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b6040517fb3b0a7a7000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b6040517fd3a5152a000000000000000000000000000000000000000000000000000000006020820152600481527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166160598261527d565b91906163e833616722565b907f000000000000000000000000000000000000000000000000000000000000000093845c6164f3576001906001865d616421836152bc565b9261642f6040519485615299565b808452601f1961643e826152bc565b015f5b8181106164e25750505f5b8181106164995750505050905f61648e92945d7f0000000000000000000000000000000000000000000000000000000000000000805c91616490575b506166df565b565b5f905d5f616488565b806164c65f806164ae6103968996888a61651b565b602081519101305af46164bf615fca565b9030616d80565b6164d08288615fb6565b526164db8187615fb6565b500161644c565b806060602080938901015201616441565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b90821015615b545761584a9160051b810190615a96565b919361660295616059946165c793966001600160a01b039081807f00000000000000000000000000000000000000000000000000000000000000001699816040519961657d8b615228565b338b525f60208c01521660408a015216606088015216608086015260a08501525f60c08501526fffffffffffffffffffffffffffffffff60e08501525f610100850152369161536b565b6101208201526040519384917fbe5ae84100000000000000000000000000000000000000000000000000000000602084015260248301615f25565b03601f198101845283615299565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6164f3576001905d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361666f57565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6001600160a01b03908181116166af571690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f5260a060045260245260445ffd5b47801561671e577f00000000000000000000000000000000000000000000000000000000000000005c61671e576001600160a01b0361648e9216616cf5565b5050565b905f917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03815c161561675a575050565b909192505d600190565b359065ffffffffffff8216820361045857565b916044929391936001600160a01b03604094859282808551998a9586947fc9c1661b0000000000000000000000000000000000000000000000000000000086521660048501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa938415616847575f935f95616810575b505061680d6168068594615e28565b9485615fb6565b52565b809295508194503d8311616840575b6168298183615299565b810103126104585760208251920151925f806167f7565b503d61681f565b83513d5f823e3d90fd5b60048151106168c5577f5ab64fb8000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000602083015116036145b357806024602061533d9351600319810160048501528301019101615a08565b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b60e08101354211616a9d576001600160a01b0360208201359160028310156104585760409261691d828501615a2e565b9280606094859384860161693090615a2e565b9561693d60808201615a2e565b908461694d610120830183615a96565b91908c519561695b876151f8565b8652816020870197168752818d87019b168b52818a870195168552608086019260a0850135845260a087019460c00135855236906169989261536b565b9360c08601948552818d519b8c9a8b998a997f2bfb780c000000000000000000000000000000000000000000000000000000008b5260048b016020905260248b019051906169e591615f18565b5116604489015251166064870152511660848501525160a48401525160c48301525160e4820160e090526101048201616a1d9161548b565b03917f0000000000000000000000000000000000000000000000000000000000000000165a905f91f1908115616847575f935f935f93616a60575b505050909192565b92509250809350813d8311616a96575b616a7a8183615299565b81010312610458578151602083015191909201515f8080616a58565b503d616a70565b7fe08b8af0000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f94938315616ced5780616cb8575b15616c1c576001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016803b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152306024830152604482018590525f908290606490829084905af1801561044d57616c09575b5084827f000000000000000000000000000000000000000000000000000000000000000016803b15616c055781906024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af18015616bfa57616be2575b5061648e93945016616cf5565b616bec8691615214565b616bf65784616bd5565b8480fd5b6040513d88823e3d90fd5b5080fd5b616c14919550615214565b5f935f616b68565b929350906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610458576040517fae6393290000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f908290606490829084905af1801561044d57616caf5750565b61648e90615214565b506001600160a01b03807f00000000000000000000000000000000000000000000000000000000000000001690831614616ad4565b505050509050565b814710616d45575f8080936001600160a01b038294165af1616d15615fca565b5015616d1d57565b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fcd786059000000000000000000000000000000000000000000000000000000005f523060045260245ffd5b8051156168c557805190602001fd5b90616d955750805115616d1d57805190602001fd5b81511580616ddb575b616da6575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15616d9e56fea2646970667358221220983e2c797d40b453a59b2b23b23a9e996591654be1b95ef19be7c44ec8f2c98664736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x72 JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x18 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x4A JUMPI STOP JUMPDEST PUSH32 0x540DDF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26B3D95 EQ PUSH2 0x4FD9 JUMPI DUP1 PUSH4 0x86FAD66 EQ PUSH2 0x4AA2 JUMPI DUP1 PUSH4 0x8C04793 EQ PUSH2 0x4984 JUMPI DUP1 PUSH4 0xC3B846F EQ PUSH2 0x48E5 JUMPI DUP1 PUSH4 0xCA078EC EQ PUSH2 0x484D JUMPI DUP1 PUSH4 0xF710888 EQ PUSH2 0x470C JUMPI DUP1 PUSH4 0x175D4408 EQ PUSH2 0x462D JUMPI DUP1 PUSH4 0x19C6989F EQ PUSH2 0x4008 JUMPI DUP1 PUSH4 0x1D56798D EQ PUSH2 0x3E6D JUMPI DUP1 PUSH4 0x22717DB2 EQ PUSH2 0x3DFF JUMPI DUP1 PUSH4 0x23B39241 EQ PUSH2 0x3BFD JUMPI DUP1 PUSH4 0x339F3838 EQ PUSH2 0x3BE3 JUMPI DUP1 PUSH4 0x3A1B05DE EQ PUSH2 0x36BB JUMPI DUP1 PUSH4 0x3EBC54E5 EQ PUSH2 0x353E JUMPI DUP1 PUSH4 0x452DB952 EQ PUSH2 0x33BA JUMPI DUP1 PUSH4 0x45D132FE EQ PUSH2 0x3382 JUMPI DUP1 PUSH4 0x4AEECCA9 EQ PUSH2 0x3368 JUMPI DUP1 PUSH4 0x4B59D17C EQ PUSH2 0x32E4 JUMPI DUP1 PUSH4 0x51682750 EQ PUSH2 0x31D1 JUMPI DUP1 PUSH4 0x53D0BB98 EQ PUSH2 0x311C JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x2FDF JUMPI DUP1 PUSH4 0x58307E44 EQ PUSH2 0x2F76 JUMPI DUP1 PUSH4 0x5B343791 EQ PUSH2 0x2A11 JUMPI DUP1 PUSH4 0x5E01EB5A EQ PUSH2 0x29CC JUMPI DUP1 PUSH4 0x5F9815FF EQ PUSH2 0x2889 JUMPI DUP1 PUSH4 0x64C90707 EQ PUSH2 0x2831 JUMPI DUP1 PUSH4 0x68A24FE0 EQ PUSH2 0x2363 JUMPI DUP1 PUSH4 0x68D5E16A EQ PUSH2 0x2146 JUMPI DUP1 PUSH4 0x724DBA33 EQ PUSH2 0x202D JUMPI DUP1 PUSH4 0x72657D17 EQ PUSH2 0x1EE2 JUMPI DUP1 PUSH4 0x750283BC EQ PUSH2 0x1E65 JUMPI DUP1 PUSH4 0x7AE30960 EQ PUSH2 0x1E4B JUMPI DUP1 PUSH4 0x7B03C7BA EQ PUSH2 0x1A7F JUMPI DUP1 PUSH4 0x82BF2B24 EQ PUSH2 0x19AB JUMPI DUP1 PUSH4 0x82CD54FB EQ PUSH2 0x176B JUMPI DUP1 PUSH4 0x90AA9F76 EQ PUSH2 0x1751 JUMPI DUP1 PUSH4 0x94E86EF8 EQ PUSH2 0x15C6 JUMPI DUP1 PUSH4 0x9DE90518 EQ PUSH2 0x13A7 JUMPI DUP1 PUSH4 0xAAF51EA3 EQ PUSH2 0x138D JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x1349 JUMPI DUP1 PUSH4 0xAD6D59F3 EQ PUSH2 0x12A3 JUMPI DUP1 PUSH4 0xB037ED36 EQ PUSH2 0x113F JUMPI DUP1 PUSH4 0xB24BD571 EQ PUSH2 0xFF5 JUMPI DUP1 PUSH4 0xB29A62A7 EQ PUSH2 0xF99 JUMPI DUP1 PUSH4 0xB3B0A7A7 EQ PUSH2 0xF85 JUMPI DUP1 PUSH4 0xBE5AE841 EQ PUSH2 0xF30 JUMPI DUP1 PUSH4 0xBEB91FEB EQ PUSH2 0xE18 JUMPI DUP1 PUSH4 0xBF6EE3FD EQ PUSH2 0xC7F JUMPI DUP1 PUSH4 0xC08BC851 EQ PUSH2 0xBE7 JUMPI DUP1 PUSH4 0xC330C7BE EQ PUSH2 0xA20 JUMPI DUP1 PUSH4 0xC3EC0EFC EQ PUSH2 0x967 JUMPI DUP1 PUSH4 0xD3A5152A EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0xDA001F7D EQ PUSH2 0x799 JUMPI DUP1 PUSH4 0xE178073E EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xE7326DEF EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0xECB2182C EQ PUSH2 0x45C JUMPI PUSH4 0xEFD85F14 SUB PUSH2 0xE JUMPI CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2F7 CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x2FF PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x314 PUSH1 0x20 DUP3 ADD PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x31D DUP3 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 PUSH2 0x32B PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 SWAP4 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0x5 DUP6 LT ISZERO PUSH2 0x458 JUMPI DUP4 PUSH2 0x396 PUSH2 0x3D7 SWAP7 PUSH1 0x60 DUP6 PUSH2 0x381 PUSH0 SWAP13 SWAP12 PUSH2 0x371 SWAP10 DUP8 DUP16 SWAP15 PUSH2 0x364 PUSH1 0xC0 PUSH2 0x39D SWAP14 ADD DUP8 PUSH2 0x5A96 JUMP JUMPDEST SWAP11 SWAP1 SWAP12 PUSH1 0x40 MLOAD SWAP15 DUP16 PUSH2 0x5245 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MSTORE ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x5D92 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x536B JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x6147 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x423 JUMPI JUMPDEST POP PUSH2 0x41F SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x54B0 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 POP PUSH2 0x41F SWAP3 POP PUSH2 0x446 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5C92 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x512 PUSH2 0x48B PUSH0 PUSH2 0x504 DUP2 PUSH2 0x54E PUSH2 0x473 CALLDATASIZE PUSH2 0x5879 JUMP JUMPDEST SWAP8 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 SWAP5 SWAP2 PUSH2 0x484 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP11 DUP4 PUSH2 0x6777 JUMP JUMPDEST SWAP8 SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP12 DUP13 SWAP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x4A6 DUP7 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP7 MSTORE PUSH1 0x20 SWAP15 DUP16 SWAP2 AND SWAP1 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x599 SWAP2 PUSH0 SWAP2 PUSH2 0x5D8 JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5B0 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x5A8 JUMP JUMPDEST PUSH2 0x5F4 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5A08 JUMP JUMPDEST DUP7 PUSH2 0x58A JUMP JUMPDEST PUSH2 0x504 PUSH2 0x6A0 PUSH0 DUP1 PUSH2 0x6DC PUSH2 0x62B PUSH2 0x611 CALLDATASIZE PUSH2 0x5879 JUMP JUMPDEST SWAP2 PUSH2 0x624 SWAP12 SWAP6 SWAP12 SWAP11 SWAP5 SWAP7 SWAP2 SWAP4 SWAP11 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP11 DUP13 PUSH2 0x6777 JUMP JUMPDEST POP SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x643 DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x722 SWAP2 PUSH0 SWAP2 PUSH2 0x731 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST POP POP SWAP1 PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x745 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x713 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x78F PUSH2 0x77B PUSH2 0x76A PUSH2 0x518C JUMP JUMPDEST PUSH2 0x772 PUSH2 0x51B8 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x6777 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x7B2 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x7D3 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH2 0x7DC PUSH2 0x51CE JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x8BA PUSH0 SWAP3 SWAP2 PUSH2 0x504 PUSH2 0x87E PUSH2 0x80A PUSH2 0x804 DUP8 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP4 PUSH2 0x6722 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x821 DUP4 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE DUP7 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x900 SWAP2 PUSH0 SWAP2 PUSH2 0x910 JUMPI JUMPDEST POP DUP4 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST POP SWAP2 SWAP1 POP PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x924 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x8F1 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x97F PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x9BF PUSH1 0x20 PUSH2 0x98C PUSH2 0x6273 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x68A24FE000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x9F5 JUMPI JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0xA19 JUMPI JUMPDEST PUSH2 0xA0B DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP1 PUSH2 0x9D0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xA01 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xA39 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0xA5A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP2 PUSH2 0xA63 PUSH2 0x51A2 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH0 SWAP4 PUSH2 0x504 PUSH2 0xB07 DUP7 SWAP5 PUSH2 0xA92 PUSH2 0xA8C PUSH2 0xB44 SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP8 PUSH2 0x6722 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0xAAA DUP6 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP3 PUSH2 0xB90 SWAP2 PUSH0 SWAP2 PUSH2 0xBCD JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0xBA5 JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x584E JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0xB99 JUMP JUMPDEST PUSH2 0xBE1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0xB80 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x6A0 PUSH0 DUP1 PUSH2 0x8BA PUSH2 0xBFB CALLDATASIZE PUSH2 0x5421 JUMP JUMPDEST PUSH2 0xC0B SWAP10 SWAP4 SWAP2 SWAP9 SWAP3 SWAP5 SWAP10 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0xC22 DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP14 AND DUP14 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xC93 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0xCB5 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x458 JUMPI PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH0 SWAP3 PUSH2 0x504 PUSH2 0xD64 DUP6 SWAP5 PUSH2 0xCE9 PUSH2 0xDA1 SWAP6 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH2 0xCF2 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xD0A DUP7 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP7 MSTORE AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE DUP8 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0xDFE JUMPI JUMPDEST POP PUSH2 0xDD9 JUMPI STOP JUMPDEST PUSH0 PUSH32 0x0 TSTORE STOP JUMPDEST PUSH2 0xE11 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST POP DUP2 PUSH2 0xDD2 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xE30 PUSH2 0x6610 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH2 0xEAC SWAP2 PUSH0 SWAP2 PUSH1 0x40 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH1 0x40 CALLDATASIZE PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x82CD54FB00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP5 PUSH1 0x4 DUP5 ADD MSTORE DUP5 PUSH1 0x24 DUP5 ADD MSTORE DUP5 PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x80 PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x84 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0xEE1 JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0xEFC SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xEF4 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5C36 JUMP JUMPDEST POP DUP1 PUSH2 0x9D0 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0xF58 PUSH2 0xF43 CALLDATASIZE PUSH2 0x57A2 JUMP JUMPDEST PUSH2 0xF4B PUSH2 0x6610 JUMP JUMPDEST PUSH2 0xF53 PUSH2 0x663D JUMP JUMPDEST PUSH2 0x68ED JUMP JUMPDEST POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0xFB2 PUSH2 0x518C JUMP JUMPDEST PUSH2 0xFBA PUSH2 0x51B8 JUMP JUMPDEST PUSH2 0xFC2 PUSH2 0x51CE JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 SWAP4 PUSH2 0xFE9 PUSH2 0x5A8 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x55C8 JUMP JUMPDEST SWAP4 SWAP1 SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH2 0x6532 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x1003 CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x100B PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x101F PUSH1 0x20 DUP4 ADD PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x1028 DUP4 PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x1036 PUSH1 0x40 DUP6 ADD DUP6 PUSH2 0x5A42 JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP4 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x458 JUMPI DUP4 PUSH2 0x396 PUSH2 0x10CD SWAP7 PUSH2 0x1085 PUSH2 0x1093 SWAP6 PUSH0 SWAP12 PUSH1 0x60 DUP10 DUP8 DUP16 SWAP15 PUSH2 0x364 PUSH1 0xC0 PUSH2 0x106E SWAP15 ADD DUP5 PUSH2 0x5A96 JUMP JUMPDEST AND DUP14 MSTORE AND PUSH1 0x20 DUP13 ADD MSTORE ADD CALLDATALOAD PUSH1 0x40 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x5E59 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61B7 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x1115 JUMPI JUMPDEST POP PUSH2 0x41F SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x584E JUMP JUMPDEST SWAP1 POP PUSH2 0x41F SWAP3 POP PUSH2 0x1138 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5ED0 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x1104 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x1158 PUSH2 0x518C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP1 DUP1 PUSH1 0x20 SWAP4 PUSH32 0x5F9815FF00000000000000000000000000000000000000000000000000000000 DUP6 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x64 DUP3 MSTORE PUSH1 0xA0 DUP3 ADD SWAP1 DUP3 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0xF03 JUMPI DUP2 PUSH0 SWAP2 DUP2 PUSH1 0x40 MSTORE PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP6 PUSH1 0xA4 DUP7 ADD MSTORE DUP2 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP8 PUSH2 0x121E PUSH1 0xC4 DUP3 ADD DUP3 PUSH2 0x548B JUMP JUMPDEST SUB ADD SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1267 SWAP3 PUSH0 SWAP3 PUSH2 0x127C JUMPI JUMPDEST POP POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C36 JUMP JUMPDEST SWAP1 PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x129C SWAP3 POP PUSH1 0xA0 SWAP1 RETURNDATASIZE SWAP1 DUP2 PUSH0 DUP6 RETURNDATACOPY PUSH2 0x1294 DUP3 DUP6 PUSH2 0x5299 JUMP JUMPDEST ADD ADD SWAP1 PUSH2 0x5A08 JUMP JUMPDEST DUP4 DUP1 PUSH2 0x1257 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x12BB PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x12FA PUSH0 PUSH2 0x12C7 PUSH2 0x5C5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x132F JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x1342 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST POP POP PUSH2 0x9D0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x1381 PUSH2 0x137B PUSH2 0x41F SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5597 JUMP JUMPDEST SWAP1 PUSH2 0x63DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55F6 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x637D JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x13C1 PUSH2 0x13B8 CALLDATASIZE PUSH2 0x54D9 JUMP JUMPDEST SWAP3 SWAP2 SWAP4 SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP3 DUP4 PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x15A4 JUMPI JUMPDEST POP MLOAD SWAP5 PUSH2 0x1440 DUP7 PUSH2 0x5E28 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x157F JUMPI POP POP PUSH0 SWAP3 PUSH2 0x504 PUSH2 0x14C1 DUP9 DUP7 SWAP6 PUSH2 0x14FD SWAP6 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1468 DUP5 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1521 SWAP2 PUSH0 SWAP2 PUSH2 0x1565 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST POP POP SWAP2 PUSH2 0x153D JUMPI JUMPDEST PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x1529 JUMP JUMPDEST PUSH2 0x1579 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x1512 JUMP JUMPDEST DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x159D PUSH1 0x1 SWAP4 DUP12 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE ADD PUSH2 0x1443 JUMP JUMPDEST PUSH2 0x15C0 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5D9E JUMP JUMPDEST DUP7 PUSH2 0x1434 JUMP JUMPDEST PUSH2 0x15CF CALLDATASIZE PUSH2 0x57D5 JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x15DF SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x15ED DUP12 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH1 0x1 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1644 SWAP3 PUSH2 0x536B JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x68A24FE000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 DUP3 SWAP1 PUSH2 0x1683 SWAP1 PUSH1 0x24 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x1695 SWAP1 DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x16D2 SWAP2 PUSH2 0x548B JUMP JUMPDEST SUB DUP3 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x1735 JUMPI JUMPDEST POP PUSH1 0x20 DUP3 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI PUSH1 0x20 DUP1 SWAP3 ADD MLOAD SWAP1 PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x174A SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP1 DUP3 PUSH2 0x1714 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x631D JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x1784 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x178C PUSH2 0x51B8 JUMP JUMPDEST SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x17B1 PUSH2 0x1827 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH2 0x17BA PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x17C2 PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH0 DUP2 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x44 CALLDATALOAD DUP11 DUP9 PUSH1 0x4 DUP7 ADD PUSH2 0x5BA6 JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP5 PUSH2 0x198F JUMPI JUMPDEST POP DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x1973 JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x192F JUMPI PUSH2 0x1896 DUP2 DUP7 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 DUP2 PUSH2 0x18A8 JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP ADD PUSH2 0x1883 JUMP JUMPDEST DUP3 PUSH2 0x18B3 DUP3 DUP7 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND DUP6 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP9 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP10 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH1 0x1 SWAP3 PUSH2 0x1920 JUMPI JUMPDEST POP PUSH2 0x189E JUMP JUMPDEST PUSH2 0x1929 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP8 PUSH2 0x191A JUMP JUMPDEST PUSH2 0x41F DUP6 PUSH2 0x193C DUP9 PUSH2 0x66DF JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x1988 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP1 DUP6 PUSH2 0x1880 JUMP JUMPDEST PUSH2 0x19A4 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xEF4 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP3 DUP6 PUSH2 0x183B JUMP JUMPDEST PUSH0 PUSH2 0x504 DUP2 PUSH2 0xB44 PUSH2 0x1A42 PUSH2 0x19BF CALLDATASIZE PUSH2 0x5739 JUMP JUMPDEST SWAP1 PUSH2 0x19CF SWAP9 SWAP5 SWAP3 SWAP6 SWAP4 SWAP9 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x19E7 DUP8 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x3 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x1A8D CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x1A95 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x1A9D PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD SWAP2 PUSH2 0x1AD6 DUP4 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 PUSH2 0x1AE0 DUP6 PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x1AEE PUSH1 0x40 DUP8 ADD DUP8 PUSH2 0x5A42 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 PUSH1 0x4 DUP4 LT ISZERO PUSH2 0x458 JUMPI DUP5 PUSH2 0x396 PUSH2 0x106E SWAP5 PUSH2 0x1085 PUSH2 0x1B5E SWAP10 PUSH0 SWAP9 PUSH1 0x60 DUP16 DUP8 PUSH2 0x1B26 SWAP11 PUSH2 0x364 PUSH1 0xC0 DUP5 ADD DUP5 PUSH2 0x5A96 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61B7 JUMP JUMPDEST SUB DUP2 DUP4 DUP8 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP5 PUSH0 SWAP2 PUSH0 SWAP5 PUSH2 0x1E24 JUMPI JUMPDEST POP PUSH2 0x1B80 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 DUP3 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE PUSH1 0x24 SWAP2 PUSH0 DUP6 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP6 PUSH2 0x1E08 JUMPI JUMPDEST POP SWAP1 SWAP6 PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1DC3 JUMPI PUSH2 0x1BE6 DUP2 DUP5 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x1DBA JUMPI DUP7 PUSH2 0x1BF9 DUP3 DUP11 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND PUSH2 0x1C04 DUP7 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x1D8F JUMPI JUMPDEST ISZERO PUSH2 0x1D0D JUMPI POP DUP9 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 DUP14 PUSH32 0x0 AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE DUP14 ADDRESS SWAP1 DUP5 ADD MSTORE DUP10 PUSH1 0x44 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1CFE JUMPI JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH0 DUP1 SWAP2 DUP9 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP9 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x44D JUMPI DUP9 PUSH2 0x1CE3 DUP15 PUSH2 0x1CE9 SWAP5 PUSH1 0x1 SWAP8 PUSH2 0x1CEF JUMPI JUMPDEST POP PUSH2 0x5A2E JUMP JUMPDEST AND PUSH2 0x6CF5 JUMP JUMPDEST ADD PUSH2 0x1BD3 JUMP JUMPDEST PUSH2 0x1CF8 SWAP1 PUSH2 0x5214 JUMP JUMPDEST PUSH0 PUSH2 0x1CDD JUMP JUMPDEST PUSH2 0x1D07 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP13 PUSH2 0x1C87 JUMP JUMPDEST PUSH2 0x1D16 DUP13 PUSH2 0x5A2E JUMP JUMPDEST DUP11 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP14 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH1 0x1 SWAP3 PUSH2 0x1D80 JUMPI JUMPDEST POP PUSH2 0x1CE9 JUMP JUMPDEST PUSH2 0x1D89 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP12 PUSH2 0x1D7A JUMP JUMPDEST POP DUP8 PUSH32 0x0 AND DUP2 EQ PUSH2 0x1C0A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x1CE9 JUMP JUMPDEST POP PUSH2 0x41F DUP9 PUSH2 0x1DD9 PUSH2 0x1DD4 DUP13 PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x66DF JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x584E JUMP JUMPDEST PUSH2 0x1E1D SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP4 DUP9 PUSH2 0x1BC8 JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x1B80 SWAP6 POP PUSH2 0x1E40 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP2 SWAP6 SWAP1 SWAP2 SWAP4 SWAP1 PUSH2 0x1B76 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x62BD JUMP JUMPDEST PUSH2 0x1E6E CALLDATASIZE PUSH2 0x57D5 JUMP JUMPDEST SWAP5 SWAP1 SWAP6 SWAP4 SWAP2 SWAP4 CALLER PUSH2 0x1E7E SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP8 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x1E8C DUP12 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH1 0x20 DUP12 ADD PUSH0 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP1 PUSH2 0x1644 SWAP3 PUSH2 0x536B JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x1EF6 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x1EFE PUSH2 0x51B8 JUMP JUMPDEST PUSH2 0x1F06 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH0 PUSH2 0x1FC1 PUSH2 0x1F2C DUP3 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP3 PUSH2 0x504 PUSH2 0x512 PUSH2 0x1F4A PUSH2 0x1F3F CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x44 CALLDATALOAD SWAP1 DUP12 PUSH2 0x6777 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1F61 DUP5 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP5 MSTORE DUP7 PUSH1 0x20 SWAP14 AND DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x200C SWAP2 PUSH0 SWAP2 PUSH2 0x2013 JUMPI JUMPDEST POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST POP POP PUSH2 0x5FB6 JUMP JUMPDEST PUSH2 0x2027 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP7 PUSH2 0x1FFD JUMP JUMPDEST PUSH2 0x504 PUSH2 0x20C5 PUSH0 DUP1 PUSH2 0x2101 PUSH2 0x2041 CALLDATASIZE PUSH2 0x5421 JUMP JUMPDEST PUSH2 0x2052 SWAP10 SWAP4 SWAP2 SWAP10 SWAP9 SWAP3 SWAP5 SWAP9 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x2069 DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1521 SWAP2 PUSH0 SWAP2 PUSH2 0x1565 JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2154 CALLDATASIZE PUSH2 0x56D6 JUMP JUMPDEST PUSH2 0x215D CALLER PUSH2 0x6722 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 SWAP4 PUSH32 0x3A1B05DE00000000000000000000000000000000000000000000000000000000 DUP6 DUP5 ADD MSTORE DUP5 PUSH1 0x24 DUP5 ADD MSTORE DUP4 PUSH2 0x21A2 DUP3 PUSH2 0x51E4 JUMP JUMPDEST AND PUSH1 0x44 DUP5 ADD MSTORE DUP4 PUSH2 0x21B4 DUP7 DUP4 ADD PUSH2 0x51E4 JUMP JUMPDEST AND PUSH1 0x64 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP3 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x458 JUMPI DUP2 ADD SWAP1 DUP6 DUP3 CALLDATALOAD SWAP3 ADD SWAP5 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP5 GT PUSH2 0x458 JUMPI DUP4 PUSH1 0x5 SHL CALLDATASIZE SUB DUP8 SGT PUSH2 0x458 JUMPI PUSH2 0x2249 DUP2 PUSH2 0x2285 SWAP5 PUSH1 0x60 PUSH2 0x2233 PUSH0 SWAP12 DUP13 SWAP10 PUSH1 0x80 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP2 PUSH2 0x5AE7 JUMP JUMPDEST SWAP2 ADD CALLDATALOAD PUSH1 0xA4 DUP4 ADD MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP4 PUSH2 0x2347 JUMPI JUMPDEST POP DUP3 MLOAD DUP4 ADD SWAP4 PUSH1 0x80 DUP5 DUP3 DUP8 ADD SWAP7 SUB SLT PUSH2 0x458 JUMPI DUP1 DUP5 ADD MLOAD DUP4 DUP2 GT PUSH2 0x458 JUMPI DUP6 DUP3 PUSH2 0x22E5 SWAP3 DUP8 ADD ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP2 ADD MLOAD SWAP6 PUSH1 0x60 DUP3 ADD MLOAD SWAP3 PUSH1 0x80 DUP4 ADD MLOAD SWAP6 DUP7 GT PUSH2 0x458 JUMPI PUSH2 0x41F SWAP6 PUSH2 0x230D SWAP4 ADD ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP2 PUSH2 0x231F JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x5708 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x2313 JUMP JUMPDEST PUSH2 0x235C SWAP2 SWAP4 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP2 DUP5 PUSH2 0x22B9 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2371 CALLDATASIZE PUSH2 0x57A2 JUMP JUMPDEST PUSH2 0x2379 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x2381 PUSH2 0x663D JUMP JUMPDEST PUSH2 0x238A DUP2 PUSH2 0x68ED JUMP JUMPDEST PUSH2 0x2398 PUSH1 0x60 DUP6 SWAP4 SWAP6 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP1 PUSH2 0x23A2 DUP4 PUSH2 0x5A2E JUMP JUMPDEST SWAP5 PUSH2 0x100 DUP5 ADD SWAP6 PUSH2 0x23B2 DUP8 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x27FC JUMPI JUMPDEST ISZERO PUSH2 0x2679 JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x2651 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 DUP2 AND SWAP3 SWAP2 DUP4 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP8 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2642 JUMPI JUMPDEST POP PUSH32 0x0 AND SWAP1 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x24C8 PUSH0 DUP1 PUSH1 0x20 SWAP8 DUP9 DUP2 ADD SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x24B3 DUP2 PUSH2 0x504 DUP12 DUP12 PUSH1 0x24 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST MLOAD SWAP1 DUP3 DUP7 GAS CALL PUSH2 0x24C1 PUSH2 0x5FCA JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x6D80 JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP7 DUP3 ISZERO ISZERO SWAP3 DUP4 PUSH2 0x2629 JUMPI JUMPDEST POP POP POP PUSH2 0x25FE JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 SWAP1 DUP3 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x25D5 JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x2564 SWAP2 JUMPDEST PUSH2 0x2548 DUP6 PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x255E PUSH2 0x2558 PUSH1 0x80 DUP9 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP2 PUSH2 0x5B81 JUMP JUMPDEST SWAP3 PUSH2 0x6AC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP2 AND EQ PUSH2 0x25C3 JUMPI JUMPDEST POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1DD4 PUSH2 0x25CF SWAP2 PUSH2 0x5A2E JUMP JUMPDEST DUP3 PUSH2 0x2597 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x25F7 JUMPI JUMPDEST PUSH2 0x25E8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP6 DUP1 PUSH2 0x2535 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x25DE JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x2639 SWAP4 POP DUP3 ADD DUP2 ADD SWAP2 ADD PUSH2 0x5B8E JUMP JUMPDEST ISZERO DUP12 DUP7 DUP2 PUSH2 0x24D6 JUMP JUMPDEST PUSH2 0x264B SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP10 PUSH2 0x2434 JUMP JUMPDEST PUSH32 0xA01A9DF600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x268D JUMPI JUMPDEST POP POP PUSH1 0x20 SWAP5 PUSH2 0x2564 SWAP2 PUSH2 0x253F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND SWAP2 DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0x26E7 DUP6 PUSH2 0x669B JUMP JUMPDEST SWAP4 DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP5 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP3 AND PUSH1 0x44 DUP7 ADD MSTORE SWAP2 DUP8 AND AND PUSH1 0x64 DUP5 ADD MSTORE PUSH0 SWAP1 DUP4 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x27AD SWAP4 PUSH2 0x27ED JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP11 PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x27C2 JUMPI JUMPDEST DUP1 PUSH2 0x267F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x27E6 JUMPI JUMPDEST PUSH2 0x27D8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP6 PUSH2 0x27BC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x27CE JUMP JUMPDEST PUSH2 0x27F6 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP11 PUSH2 0x2760 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP6 AND EQ PUSH2 0x23B8 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x2849 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x9BF PUSH1 0x20 PUSH2 0x2856 PUSH2 0x6273 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x28A2 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x28AA PUSH2 0x51B8 JUMP JUMPDEST PUSH2 0x28B2 PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH32 0x0 AND PUSH1 0x40 MLOAD SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE DUP5 AND PUSH1 0x4 DUP5 ADD MSTORE PUSH0 DUP4 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x44D JUMPI PUSH0 PUSH2 0x2933 PUSH2 0x296E SWAP7 DUP3 SWAP7 DUP4 SWAP2 PUSH2 0x29B2 JUMPI JUMPDEST POP MLOAD PUSH2 0x5E28 JUMP JUMPDEST SWAP4 PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xA07D604000000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x4 DUP7 ADD PUSH2 0x5BA6 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP2 PUSH0 SWAP2 PUSH2 0x2998 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x29AC SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xEF4 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP3 PUSH2 0x2983 JUMP JUMPDEST PUSH2 0x29C6 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP9 PUSH2 0x292C JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x2A1F CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x2A27 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x2A2F PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND PUSH1 0x20 SWAP2 DUP3 DUP5 ADD SWAP4 PUSH2 0x2A6A DUP6 PUSH2 0x5A2E JUMP JUMPDEST SWAP5 PUSH2 0x2A74 DUP3 PUSH2 0x5A2E JUMP JUMPDEST SWAP6 PUSH2 0x2A82 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP2 SWAP1 SWAP8 PUSH1 0x80 DUP6 ADD CALLDATALOAD SWAP2 PUSH1 0x5 DUP4 LT ISZERO PUSH2 0x458 JUMPI DUP7 PUSH2 0x396 PUSH2 0x2AC6 SWAP5 PUSH2 0x2AD5 PUSH2 0x2B25 SWAP14 PUSH0 SWAP9 DUP15 DUP7 PUSH2 0x2AED SWAP10 PUSH2 0x2AB9 DUP16 PUSH1 0xC0 DUP2 ADD SWAP1 PUSH2 0x5A96 JUMP JUMPDEST SWAP10 SWAP1 SWAP11 PUSH1 0x40 MLOAD SWAP14 DUP15 PUSH2 0x5245 JUMP JUMPDEST AND DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0x80 DUP7 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x6147 JUMP JUMPDEST SUB DUP2 DUP4 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH0 SWAP8 PUSH0 SWAP5 PUSH2 0x2F4D JUMPI JUMPDEST POP PUSH2 0x2B47 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x2F33 JUMPI JUMPDEST POP SWAP3 SWAP7 PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2EF2 JUMPI DUP7 PUSH2 0x2BAA DUP3 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND PUSH2 0x2BB6 DUP3 DUP8 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO PUSH2 0x2E85 JUMPI PUSH2 0x2BC7 DUP9 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x2EC7 JUMPI JUMPDEST ISZERO PUSH2 0x2D7A JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x2651 JUMPI PUSH32 0x0 DUP9 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2C96 SWAP5 DUP15 SWAP3 DUP5 SWAP3 PUSH2 0x2D6B JUMPI JUMPDEST POP DUP14 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2CF7 SWAP4 DUP14 SWAP4 PUSH2 0x2D40 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI DUP11 SWAP2 PUSH2 0x2D17 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x2B96 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2D39 JUMPI JUMPDEST PUSH2 0x2D2A DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP9 DUP12 PUSH2 0x2D0B JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D20 JUMP JUMPDEST PUSH2 0x2D5F SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x2D64 JUMPI JUMPDEST PUSH2 0x2D57 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5B8E JUMP JUMPDEST PUSH2 0x2CAC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2D4D JUMP JUMPDEST PUSH2 0x2D74 SWAP1 PUSH2 0x5214 JUMP JUMPDEST PUSH0 PUSH2 0x2C48 JUMP JUMPDEST SWAP1 DUP9 PUSH32 0x0 AND SWAP1 PUSH2 0x2DA8 DUP8 PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x2DB1 DUP3 PUSH2 0x669B JUMP JUMPDEST DUP4 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE DUP14 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE SWAP1 DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE SWAP3 SWAP2 PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x2E71 SWAP4 DUP14 SWAP4 PUSH2 0x2EB8 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP14 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI DUP11 SWAP2 PUSH2 0x2E8F JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x2D11 JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2EB1 JUMPI JUMPDEST PUSH2 0x2EA2 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP9 DUP12 PUSH2 0x2E85 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2E98 JUMP JUMPDEST PUSH2 0x2EC1 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP15 PUSH2 0x2CAC JUMP JUMPDEST POP DUP9 PUSH32 0x0 AND DUP2 EQ PUSH2 0x2BCD JUMP JUMPDEST POP DUP4 PUSH2 0x41F DUP11 PUSH2 0x2F04 PUSH2 0x1DD4 DUP8 PUSH2 0x5A2E JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x54B0 JUMP JUMPDEST PUSH2 0x2F47 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP9 PUSH2 0x2B8B JUMP JUMPDEST SWAP1 SWAP4 POP PUSH2 0x2F6A SWAP2 SWAP8 POP PUSH2 0x2B47 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP8 SWAP2 SWAP3 SWAP1 SWAP8 SWAP4 SWAP1 PUSH2 0x2B3D JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x2FDB PUSH1 0x40 MLOAD PUSH2 0x4D2 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP2 MSTORE PUSH2 0x2FA1 DUP2 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH0 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x1 SHR SWAP2 PUSH1 0x1 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x3112 JUMPI JUMPDEST PUSH1 0x20 SWAP5 DUP6 DUP6 LT DUP5 EQ PUSH2 0x30E5 JUMPI DUP6 DUP8 SWAP5 DUP7 DUP7 MSTORE SWAP2 DUP3 PUSH0 EQ PUSH2 0x30A7 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x304E JUMPI JUMPDEST POP PUSH2 0x303A SWAP3 POP SUB DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST PUSH0 DUP1 DUP1 MSTORE DUP6 SWAP3 POP SWAP1 PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 JUMPDEST DUP6 DUP4 LT PUSH2 0x308F JUMPI POP POP PUSH2 0x303A SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x302D JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x3078 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP6 DUP3 ADD MSTORE PUSH2 0x303A SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x302D SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 PUSH1 0x7F AND SWAP3 PUSH2 0x3009 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x314D PUSH2 0x3146 PUSH0 DUP1 PUSH2 0x6DC PUSH2 0x87E PUSH2 0x504 PUSH2 0x313B CALLDATASIZE PUSH2 0x5677 JUMP JUMPDEST SWAP6 SWAP4 SWAP11 SWAP3 SWAP10 SWAP1 PUSH2 0x6722 JUMP JUMPDEST SWAP9 DUP11 PUSH2 0x6777 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3164 DUP4 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP4 MSTORE DUP6 PUSH1 0x20 SWAP12 AND DUP12 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP12 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x20C5 PUSH0 DUP1 PUSH2 0x3268 PUSH2 0x31E5 CALLDATASIZE PUSH2 0x5739 JUMP JUMPDEST PUSH2 0x31F5 SWAP10 SWAP4 SWAP5 SWAP9 SWAP3 SWAP2 SWAP10 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x320C DUP6 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP6 MSTORE DUP8 PUSH1 0x20 SWAP13 AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE DUP8 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x7B03C7BA00000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x32AE SWAP2 PUSH0 SWAP2 PUSH2 0x32CA JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST POP SWAP3 SWAP1 POP PUSH2 0x153D JUMPI PUSH2 0x41F PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST PUSH2 0x32DE SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x329F JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x32FC PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x9BF PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x330D DUP2 PUSH2 0x51F8 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP3 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x86FAD6600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x590F JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x6213 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH32 0xF5AB33E500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x33D3 PUSH2 0x518C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x33F4 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP2 PUSH2 0x33FD PUSH2 0x51A2 JUMP JUMPDEST SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH0 SWAP4 PUSH2 0x504 PUSH2 0xB07 DUP7 SWAP5 PUSH2 0x3426 PUSH2 0xA8C PUSH2 0x349B SWAP7 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x343E DUP6 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP6 MSTORE AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP3 PUSH2 0x34E7 SWAP2 PUSH0 SWAP2 PUSH2 0x3524 JUMPI JUMPDEST POP PUSH1 0x20 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST SWAP1 SWAP4 SWAP2 SWAP3 PUSH2 0x34FC JUMPI JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x54B0 JUMP JUMPDEST PUSH0 PUSH32 0x0 TSTORE PUSH2 0x34F0 JUMP JUMPDEST PUSH2 0x3538 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP5 PUSH2 0x34D7 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x354C CALLDATASIZE PUSH2 0x552B JUMP JUMPDEST SWAP1 PUSH2 0x355A SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x6722 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x3573 DUP9 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH0 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x35FC SWAP2 PUSH2 0x5F25 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE PUSH2 0x360E SWAP1 DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP7 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD PUSH2 0x364A SWAP2 PUSH2 0x548B JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x36A1 JUMPI JUMPDEST POP DUP3 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP3 ADD MLOAD SWAP1 PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x36B5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP4 PUSH2 0x3684 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x36C9 CALLDATASIZE PUSH2 0x56D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x379E DUP3 PUSH32 0x0 AND SWAP2 PUSH2 0x3702 DUP2 PUSH2 0x5A2E JUMP JUMPDEST PUSH1 0x20 SWAP4 PUSH0 DUP6 DUP5 ADD SWAP3 PUSH2 0x3713 DUP5 PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x3751 PUSH2 0x3723 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x5A42 JUMP JUMPDEST DUP12 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x3731 DUP7 PUSH2 0x5261 JUMP JUMPDEST DUP8 DUP7 MSTORE DUP2 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x3742 DUP10 PUSH2 0x5245 JUMP JUMPDEST AND DUP8 MSTORE AND DUP12 DUP7 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x52D4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP3 PUSH32 0x4AF29EC400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x6147 JUMP JUMPDEST SUB DUP2 DUP4 DUP6 GAS CALL SWAP6 DUP7 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP5 PUSH0 SWAP8 PUSH2 0x3BC1 JUMPI JUMPDEST POP PUSH2 0x37BE DUP5 PUSH2 0x5A2E JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x3BA7 JUMPI JUMPDEST POP SWAP4 SWAP7 PUSH32 0x0 DUP3 AND SWAP5 SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x3976 JUMPI DUP4 PUSH2 0x3840 DUP3 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND PUSH2 0x384C DUP3 DUP11 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x396C JUMPI PUSH2 0x385C DUP9 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 PUSH2 0x3866 DUP2 PUSH2 0x669B JUMP JUMPDEST SWAP2 DUP11 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE DUP10 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 DUP2 AND PUSH1 0x44 DUP5 ADD MSTORE DUP4 AND PUSH1 0x64 DUP4 ADD MSTORE SWAP1 SWAP2 SWAP1 PUSH0 DUP4 PUSH1 0x84 DUP2 DUP4 DUP15 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x3923 SWAP4 DUP14 SWAP4 PUSH2 0x2EB8 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP11 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI DUP11 SWAP2 PUSH2 0x3943 JUMPI JUMPDEST POP POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x382C JUMP JUMPDEST DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3965 JUMPI JUMPDEST PUSH2 0x3956 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP9 DUP12 PUSH2 0x3937 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x394C JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x393D JUMP JUMPDEST POP SWAP2 SWAP4 SWAP5 POP SWAP2 SWAP7 PUSH2 0x3986 DUP2 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 DUP5 PUSH2 0x399A PUSH2 0x3994 DUP9 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 PUSH2 0x5A2E JUMP JUMPDEST AND DUP9 DUP7 PUSH1 0x24 PUSH2 0x39A8 DUP11 PUSH2 0x5A2E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP3 PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND PUSH1 0x4 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x3B72 JUMPI JUMPDEST POP SWAP1 PUSH2 0x3A6C SWAP9 PUSH0 SWAP4 SWAP3 PUSH2 0x39FC DUP8 MLOAD PUSH2 0x5E28 JUMP JUMPDEST SWAP2 DUP9 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x3A0B DUP7 PUSH2 0x5261 JUMP JUMPDEST DUP8 DUP7 MSTORE DUP2 PUSH1 0x40 MLOAD SWAP8 PUSH2 0x3A1C DUP10 PUSH2 0x5245 JUMP JUMPDEST AND DUP8 MSTORE AND SWAP1 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP3 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP3 PUSH32 0x2145789700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x61B7 JUMP JUMPDEST SUB DUP2 DUP4 DUP12 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP7 PUSH0 SWAP7 PUSH2 0x3B50 JUMPI JUMPDEST POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3B3E JUMPI DUP5 PUSH2 0x3A99 DUP3 DUP7 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD AND SWAP1 PUSH2 0x3AA6 DUP2 DUP10 PUSH2 0x5FB6 JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x3B34 JUMPI PUSH2 0x3AB6 DUP9 PUSH2 0x5A2E JUMP JUMPDEST SWAP1 DUP12 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH0 DUP3 PUSH1 0x64 DUP2 DUP4 DUP15 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH1 0x1 SWAP3 PUSH2 0x3B25 JUMPI JUMPDEST POP JUMPDEST ADD PUSH2 0x3A85 JUMP JUMPDEST PUSH2 0x3B2E SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP11 PUSH2 0x3B1D JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x3B1F JUMP JUMPDEST POP PUSH2 0x41F DUP7 DUP9 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 DUP6 PUSH2 0x5708 JUMP JUMPDEST SWAP1 SWAP7 POP PUSH2 0x3B68 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1130 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP6 SWAP2 SWAP7 SWAP1 SWAP6 PUSH2 0x3A82 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 POP DUP9 DUP4 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3BA0 JUMPI JUMPDEST PUSH2 0x3B8B DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x3A6C PUSH2 0x39E9 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3B81 JUMP JUMPDEST PUSH2 0x3BBB SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP9 PUSH2 0x3802 JUMP JUMPDEST SWAP1 SWAP5 POP PUSH2 0x3BD9 SWAP2 SWAP7 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST SWAP7 SWAP2 SWAP5 SWAP1 SWAP7 PUSH2 0x37B4 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x20 PUSH2 0x5A8 PUSH2 0x5FF9 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x3C16 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x3C1E PUSH2 0x51CE JUMP JUMPDEST SWAP1 PUSH2 0x3C27 PUSH2 0x51A2 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x3C4A PUSH2 0x3C50 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP2 PUSH2 0x6722 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND SWAP3 DUP1 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP6 DUP7 PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x44 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP4 PUSH2 0x3DC0 JUMPI JUMPDEST POP PUSH0 SWAP4 PUSH2 0x504 PUSH2 0x3D5C DUP7 SWAP5 PUSH2 0x3CE4 PUSH2 0x3D98 SWAP6 PUSH2 0x5E28 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x3CF1 DUP10 DUP5 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP2 PUSH2 0x3CFF DUP4 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP4 MSTORE PUSH1 0x20 SWAP12 DUP13 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xEDFA356800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP12 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x599 SWAP2 PUSH0 SWAP2 PUSH2 0x5D8 JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST SWAP3 POP POP SWAP2 PUSH1 0x40 DUP3 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x3DF7 JUMPI JUMPDEST DUP2 PUSH2 0x3DDD PUSH1 0x40 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH1 0x20 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 PUSH0 PUSH2 0x3CCD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3DD0 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C65676163792072657665727420726561736F6E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x3E89 PUSH2 0x3E7E CALLDATASIZE PUSH2 0x5677 JUMP JUMPDEST SWAP3 SWAP5 SWAP1 SWAP4 SWAP2 SWAP4 PUSH2 0x6722 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 DUP1 PUSH1 0x40 MLOAD SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP7 ADD MSTORE AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 DUP4 PUSH1 0x44 DUP2 DUP8 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP1 PUSH0 SWAP5 PUSH2 0x3FCB JUMPI JUMPDEST POP SWAP4 PUSH2 0x504 PUSH2 0x3D5C PUSH0 SWAP7 SWAP5 PUSH2 0x3FA3 SWAP5 PUSH2 0x3F1F DUP10 SWAP8 PUSH2 0x5E28 JUMP JUMPDEST SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3F3B DUP11 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP3 PUSH2 0x3F49 DUP5 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP13 DUP14 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xEFD85F1400000000000000000000000000000000000000000000000000000000 DUP13 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x5A1 SWAP3 PUSH2 0x200C SWAP2 PUSH0 SWAP2 PUSH2 0x2013 JUMPI POP DUP6 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C92 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP4 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x4000 JUMPI JUMPDEST DUP2 PUSH2 0x3FE7 PUSH1 0x40 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP3 MLOAD PUSH1 0x20 SWAP1 SWAP4 ADD MLOAD SWAP3 PUSH2 0x504 PUSH2 0x3F06 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3FDA JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD GT PUSH2 0x458 JUMPI CALLDATASIZE PUSH1 0x23 PUSH1 0x4 CALLDATALOAD ADD SLT ISZERO PUSH2 0x458 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD GT PUSH2 0x458 JUMPI CALLDATASIZE PUSH1 0x24 PUSH1 0xC0 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD MUL PUSH1 0x4 CALLDATALOAD ADD ADD GT PUSH2 0x458 JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x407E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5597 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD GT PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x3 NOT PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x40BF SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x55C8 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x40DF SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5597 JUMP JUMPDEST SWAP5 SWAP1 SWAP4 PUSH2 0x40EA PUSH2 0x6610 JUMP JUMPDEST DUP1 PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SUB PUSH2 0x4605 JUMPI PUSH0 JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD DUP2 LT PUSH2 0x437A JUMPI POP POP POP PUSH1 0x44 CALLDATALOAD PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD PUSH1 0x44 CALLDATALOAD CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x458 JUMPI DUP2 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x4 DUP2 ADD CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH1 0x24 DUP3 PUSH1 0x7 SHL CALLDATASIZE SUB SWAP2 ADD SGT PUSH2 0x458 JUMPI PUSH2 0x419D JUMPI JUMPDEST PUSH2 0x41F PUSH2 0x1381 DUP7 DUP7 PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH2 0x63DD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP3 SWAP5 PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD SWAP5 PUSH32 0x2A2D80D100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x60 PUSH1 0x24 DUP8 ADD MSTORE PUSH1 0xC4 DUP7 ADD SWAP3 PUSH1 0x44 CALLDATALOAD ADD PUSH1 0x24 DUP2 ADD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 DUP4 ADD CALLDATALOAD GT PUSH2 0x458 JUMPI PUSH1 0x4 DUP3 ADD CALLDATALOAD PUSH1 0x7 SHL CALLDATASIZE SUB DUP6 SGT PUSH2 0x458 JUMPI PUSH1 0x60 PUSH1 0x64 DUP10 ADD MSTORE PUSH1 0x4 DUP3 ADD CALLDATALOAD SWAP1 MSTORE SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0xE4 DUP5 ADD SWAP3 SWAP2 SWAP1 PUSH0 SWAP1 JUMPDEST PUSH1 0x4 DUP2 ADD CALLDATALOAD DUP3 LT PUSH2 0x42FC JUMPI POP POP POP DUP3 SWAP2 PUSH0 SWAP5 PUSH2 0x429F SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x427D PUSH1 0x24 PUSH1 0x44 CALLDATALOAD ADD PUSH2 0x51E4 JUMP JUMPDEST AND PUSH1 0x84 DUP7 ADD MSTORE PUSH1 0x44 DUP1 CALLDATALOAD ADD CALLDATALOAD PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0x3 NOT DUP6 DUP5 SUB ADD PUSH1 0x44 DUP7 ADD MSTORE PUSH2 0x5B24 JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x41F SWAP4 PUSH2 0x1381 SWAP4 PUSH2 0x42ED JUMPI JUMPDEST DUP3 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x416D JUMP JUMPDEST PUSH2 0x42F6 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP5 PUSH2 0x42E2 JUMP JUMPDEST SWAP2 SWAP6 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4313 DUP8 PUSH2 0x51E4 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP8 ADD CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 SWAP4 SUB PUSH2 0x458 JUMPI PUSH1 0x4 SWAP3 PUSH1 0x1 SWAP3 DUP3 ADD MSTORE PUSH2 0x4343 PUSH1 0x40 DUP10 ADD PUSH2 0x6764 JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP1 SWAP2 AND PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x435E PUSH1 0x60 DUP11 ADD PUSH2 0x6764 JUMP JUMPDEST AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP1 SWAP2 ADD SWAP8 ADD SWAP4 ADD SWAP1 POP DUP9 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0x4251 JUMP JUMPDEST PUSH2 0x4388 PUSH2 0x396 DUP3 DUP5 DUP7 PUSH2 0x651B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x60 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x60 DUP5 ADD GT OR PUSH2 0xF03 JUMPI PUSH1 0x60 DUP3 ADD PUSH1 0x40 MSTORE PUSH0 DUP3 MSTORE PUSH0 PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP3 ADD MLOAD SWAP2 ADD MLOAD PUSH0 BYTE SWAP2 DUP4 MSTORE PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP2 DUP5 MUL PUSH1 0x4 CALLDATALOAD ADD CALLDATASIZE SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x4419 DUP3 PUSH2 0x5245 JUMP JUMPDEST PUSH2 0x442C PUSH1 0x24 PUSH1 0xC0 DUP6 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x51E4 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH2 0x4442 PUSH1 0x44 PUSH1 0xC0 DUP7 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x51E4 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x445C PUSH1 0x64 PUSH1 0xC0 DUP8 MUL PUSH1 0x4 CALLDATALOAD ADD ADD PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x40 DUP6 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x4 CALLDATALOAD PUSH1 0xC0 DUP8 MUL ADD PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xC4 ADD CALLDATALOAD PUSH1 0xA0 DUP7 ADD MSTORE DUP4 ADD MLOAD DUP4 MLOAD PUSH1 0x20 SWAP1 SWAP5 ADD MLOAD PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0xE4 SWAP5 DUP11 SWAP9 DUP5 SWAP9 PUSH1 0xC4 PUSH1 0xC0 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND PUSH1 0x4 DUP12 ADD MSTORE ADDRESS PUSH1 0x24 DUP12 ADD MSTORE PUSH1 0x84 DUP3 DUP3 MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x44 DUP12 ADD MSTORE MUL PUSH1 0x4 CALLDATALOAD ADD ADD CALLDATALOAD PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD MSTORE PUSH1 0xC4 DUP6 ADD MSTORE AND GAS CALL SWAP1 DUP2 PUSH2 0x45F6 JUMPI JUMPDEST POP PUSH2 0x45ED JUMPI PUSH2 0x453B PUSH2 0x5FCA JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 MLOAD AND SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP4 ADD MLOAD AND PUSH1 0x44 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x45B8 JUMPI JUMPDEST POP PUSH1 0x60 ADD MLOAD SUB PUSH2 0x45B3 JUMPI POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x40F9 JUMP JUMPDEST PUSH2 0x6D71 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x45E5 JUMPI JUMPDEST DUP2 PUSH2 0x45D4 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI MLOAD SWAP1 PUSH1 0x60 PUSH2 0x459E JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x45C7 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x45AD JUMP JUMPDEST PUSH2 0x45FF SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP10 PUSH2 0x452E JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x463B CALLDATASIZE PUSH2 0x552B JUMP JUMPDEST SWAP1 PUSH2 0x4649 SWAP1 SWAP5 SWAP4 SWAP3 SWAP5 PUSH2 0x6722 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 DUP2 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x4662 DUP9 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP9 MSTORE DUP2 PUSH1 0x20 SWAP11 DUP12 DUP11 ADD PUSH1 0x1 SWAP1 MSTORE AND PUSH1 0x40 DUP10 ADD MSTORE AND PUSH1 0x60 DUP8 ADD MSTORE AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 MSTORE PUSH2 0x100 DUP4 ADD PUSH0 SWAP1 MSTORE PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP3 DUP6 DUP3 ADD PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD SWAP1 PUSH2 0x35FC SWAP2 PUSH2 0x5F25 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x471D PUSH2 0x13B8 CALLDATASIZE PUSH2 0x54D9 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH32 0x0 AND SWAP4 PUSH1 0x40 MLOAD SWAP4 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND SWAP4 DUP5 PUSH1 0x4 DUP6 ADD MSTORE PUSH0 DUP5 PUSH1 0x24 DUP2 DUP5 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x44D JUMPI PUSH2 0x14C1 PUSH0 SWAP6 SWAP5 PUSH2 0x4810 SWAP5 PUSH2 0x47A9 DUP9 SWAP8 PUSH2 0x504 SWAP6 DUP10 SWAP2 PUSH2 0x4833 JUMPI POP MLOAD PUSH2 0x5E28 JUMP JUMPDEST SWAP2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x47B7 DUP5 PUSH2 0x51F8 JUMP JUMPDEST ADDRESS DUP5 MSTORE PUSH1 0x20 SWAP11 DUP12 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE DUP7 PUSH1 0x80 DUP4 ADD MSTORE DUP7 PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0xB24BD57100000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5E72 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x32AE SWAP2 PUSH0 SWAP2 PUSH2 0x32CA JUMPI POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5ED0 JUMP JUMPDEST PUSH2 0x4847 SWAP2 POP RETURNDATASIZE DUP1 DUP12 DUP4 RETURNDATACOPY PUSH2 0x15B8 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP13 PUSH2 0x292C JUMP JUMPDEST PUSH0 PUSH2 0x504 DUP2 PUSH2 0x349B PUSH2 0x1A42 PUSH2 0x4861 CALLDATASIZE PUSH2 0x5421 JUMP JUMPDEST SWAP1 PUSH2 0x4872 SWAP9 SWAP5 SWAP3 SWAP9 SWAP6 SWAP4 SWAP6 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x488A DUP8 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP8 MSTORE AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x48FD PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x493C PUSH0 PUSH2 0x4909 PUSH2 0x5C5C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x5B34379100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x5D15 JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4971 JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x1342 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x43E DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x4998 PUSH2 0x518C JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH0 PUSH2 0x504 PUSH2 0x49FF PUSH2 0x49C2 PUSH2 0x4A39 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 SWAP8 PUSH32 0x82CD54FB00000000000000000000000000000000000000000000000000000000 DUP10 DUP6 ADD MSTORE PUSH1 0x24 CALLDATALOAD SWAP1 CALLER SWAP1 PUSH1 0x24 DUP7 ADD PUSH2 0x5BA6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP7 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x1267 SWAP2 PUSH0 SWAP2 PUSH2 0x4A88 JUMPI JUMPDEST POP DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x5C36 JUMP JUMPDEST PUSH2 0x4A9C SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP4 PUSH2 0x4A79 JUMP JUMPDEST CALLVALUE PUSH2 0x458 JUMPI PUSH2 0x4AB0 CALLDATASIZE PUSH2 0x53BC JUMP JUMPDEST PUSH2 0x4AB8 PUSH2 0x6610 JUMP JUMPDEST PUSH2 0x4AC0 PUSH2 0x663D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP1 PUSH2 0x4AF9 PUSH1 0x20 DUP6 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP4 PUSH2 0x4B03 DUP2 PUSH2 0x5A2E JUMP JUMPDEST SWAP5 PUSH1 0x40 DUP3 ADD SWAP6 PUSH2 0x4B13 DUP8 DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x4B22 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x5A42 JUMP JUMPDEST DUP4 PUSH2 0x4B33 PUSH1 0xC0 DUP10 SWAP9 SWAP5 SWAP9 ADD DUP10 PUSH2 0x5A96 JUMP JUMPDEST SWAP6 SWAP1 SWAP5 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP9 PUSH32 0xBA8A2BE000000000000000000000000000000000000000000000000000000000 DUP11 MSTORE DUP2 PUSH1 0xC4 DUP12 ADD SWAP4 AND PUSH1 0x4 DUP12 ADD MSTORE AND PUSH1 0x24 DUP10 ADD MSTORE PUSH1 0xC0 PUSH1 0x44 DUP10 ADD MSTORE MSTORE PUSH1 0xE4 DUP7 ADD SWAP3 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4FAE JUMPI POP POP POP SWAP3 PUSH2 0x4BC5 SWAP3 PUSH2 0x4BAC PUSH1 0x20 SWAP8 SWAP4 DUP8 SWAP7 PUSH1 0x3 NOT SWAP6 DUP7 DUP10 DUP5 SUB ADD PUSH1 0x64 DUP11 ADD MSTORE PUSH2 0x5AE7 JUMP JUMPDEST SWAP3 PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x84 DUP8 ADD MSTORE DUP6 DUP5 SUB ADD PUSH1 0xA4 DUP7 ADD MSTORE PUSH2 0x5B24 JUMP JUMPDEST SUB DUP2 PUSH0 DUP9 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP3 PUSH2 0x4F7A JUMPI JUMPDEST POP SWAP1 SWAP4 PUSH1 0xA0 DUP3 ADD SWAP2 SWAP1 PUSH0 JUMPDEST PUSH2 0x4BEE DUP3 DUP5 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x4F40 JUMPI PUSH2 0x4C13 PUSH2 0x4C0E DUP3 PUSH2 0x4C08 DUP6 DUP8 PUSH2 0x5A42 JUMP JUMPDEST SWAP1 PUSH2 0x5B44 JUMP JUMPDEST PUSH2 0x5A2E JUMP JUMPDEST PUSH2 0x4C24 DUP3 PUSH2 0x4C08 PUSH1 0x60 DUP8 ADD DUP8 PUSH2 0x5A42 JUMP JUMPDEST CALLDATALOAD SWAP1 DUP2 ISZERO PUSH2 0x4F36 JUMPI PUSH2 0x4C35 DUP7 PUSH2 0x5B81 JUMP JUMPDEST DUP1 PUSH2 0x4F09 JUMPI JUMPDEST ISZERO PUSH2 0x4DBC JUMPI POP DUP1 SELFBALANCE LT PUSH2 0x2651 JUMPI PUSH32 0x0 DUP7 DUP2 AND SWAP2 DUP3 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD0E30DB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 PUSH1 0x4 DUP2 DUP6 DUP9 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4D05 SWAP5 PUSH1 0x20 SWAP3 DUP5 SWAP3 PUSH2 0x4DAD JUMPI JUMPDEST POP DUP12 PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP9 DUP2 SWAP6 DUP3 SWAP5 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4D66 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x2D40 JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4D82 JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 JUMPDEST ADD PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x4DA6 JUMPI JUMPDEST PUSH2 0x4D98 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP8 PUSH2 0x4D77 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4D8E JUMP JUMPDEST PUSH2 0x4DB6 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP14 PUSH2 0x4CB7 JUMP JUMPDEST DUP7 PUSH32 0x0 AND SWAP2 PUSH2 0x4DE9 DUP7 PUSH2 0x5A2E JUMP JUMPDEST SWAP3 PUSH2 0x4DF3 DUP3 PUSH2 0x669B JUMP JUMPDEST DUP2 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x36C7851600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x4 DUP3 ADD MSTORE DUP12 DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x44 DUP3 ADD MSTORE DUP4 DUP11 AND SWAP1 SWAP5 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH0 SWAP1 DUP5 SWAP1 PUSH1 0x84 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4EB5 SWAP4 PUSH1 0x20 SWAP4 PUSH2 0x4EFA JUMPI POP PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP3 DUP4 SWAP3 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB DUP2 PUSH0 DUP12 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x4ECF JUMPI JUMPDEST POP PUSH1 0x1 SWAP1 PUSH2 0x4D7C JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x4EF3 JUMPI JUMPDEST PUSH2 0x4EE5 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP8 PUSH2 0x4EC6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4EDB JUMP JUMPDEST PUSH2 0x4F03 SWAP1 PUSH2 0x5214 JUMP JUMPDEST DUP12 PUSH2 0x2CAC JUMP JUMPDEST POP DUP7 PUSH32 0x0 AND DUP8 DUP3 AND EQ PUSH2 0x4C3B JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 PUSH2 0x4D7C JUMP JUMPDEST PUSH1 0x20 DUP8 PUSH2 0x4F4F PUSH2 0x1DD4 DUP7 PUSH2 0x5A2E JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4FA6 JUMPI JUMPDEST DUP2 PUSH2 0x4F96 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI MLOAD SWAP1 DUP6 PUSH2 0x4BD9 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4F89 JUMP JUMPDEST SWAP2 SWAP5 SWAP6 SWAP7 POP SWAP2 SWAP3 PUSH1 0x20 DUP1 PUSH1 0x1 SWAP3 DUP14 PUSH2 0x4FC5 DUP10 PUSH2 0x51E4 JUMP JUMPDEST AND DUP2 MSTORE ADD SWAP6 ADD SWAP2 ADD SWAP2 DUP10 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 PUSH2 0x4B81 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x458 JUMPI PUSH2 0x4FED PUSH2 0x518C JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 GT PUSH2 0x458 JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x501B DUP2 PUSH2 0x52BC JUMP JUMPDEST SWAP1 PUSH2 0x5029 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x24 DUP7 DUP5 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x24 DUP8 SWAP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x5175 JUMPI POP POP POP POP PUSH1 0x44 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x506D SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP1 PUSH2 0x5076 PUSH2 0x5340 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP5 DUP6 GT PUSH2 0x458 JUMPI PUSH2 0x20C5 PUSH0 SWAP6 SWAP5 PUSH2 0x510F SWAP5 PUSH2 0x504 SWAP4 PUSH2 0x509D DUP10 SWAP9 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x50B5 DUP8 PUSH2 0x51F8 JUMP JUMPDEST CALLER DUP8 MSTORE AND DUP13 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH32 0x86FAD6600000000000000000000000000000000000000000000000000000000 DUP11 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x590F JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x44D JUMPI PUSH0 SWAP2 PUSH2 0x515B JUMPI JUMPDEST POP DUP2 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP2 ADD MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x516F SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x5EC DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP3 PUSH2 0x5143 JUMP JUMPDEST DUP3 DUP1 SWAP2 PUSH2 0x5181 DUP5 PUSH2 0x51E4 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x504A JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xF03 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xF03 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x52DF DUP3 PUSH2 0x52BC JUMP JUMPDEST SWAP2 PUSH2 0x52ED PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x5299 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 SWAP5 ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP3 DUP4 GT PUSH2 0x458 JUMPI SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5313 JUMPI POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x5306 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP2 PUSH1 0x20 PUSH2 0x533D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x52D4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xF03 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x5377 DUP3 PUSH2 0x534F JUMP JUMPDEST SWAP2 PUSH2 0x5385 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x5299 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x458 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP2 PUSH1 0x20 PUSH2 0x533D SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x536B JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI DUP3 PUSH1 0xE0 SWAP3 SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x540D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x53FF JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x458 JUMPI DUP2 PUSH2 0x5463 SWAP2 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x54C6 PUSH2 0x533D SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST PUSH1 0x80 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x458 JUMPI JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD SWAP1 PUSH1 0x20 DUP4 MSTORE DUP4 MLOAD DUP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP3 PUSH1 0x20 PUSH1 0x40 DUP5 PUSH1 0x5 SHL DUP4 ADD ADD SWAP6 ADD SWAP4 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x562B JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP5 DUP1 PUSH2 0x5667 DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP7 PUSH1 0x1 SWAP7 SUB ADD DUP8 MSTORE DUP11 MLOAD PUSH2 0x548B JUMP JUMPDEST SWAP9 ADD SWAP4 ADD SWAP4 ADD SWAP2 SWAP5 SWAP4 SWAP3 SWAP1 PUSH2 0x561B JUMP JUMPDEST SWAP1 PUSH1 0xA0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI DUP3 PUSH1 0x80 SWAP3 SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x5721 PUSH2 0x533D SWAP6 SWAP4 SWAP5 PUSH1 0x80 DUP5 MSTORE PUSH1 0x80 DUP5 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x53EE JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x44 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x458 JUMPI DUP3 PUSH2 0x577E SWAP2 PUSH1 0x4 ADD PUSH2 0x5322 JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST PUSH1 0x3 NOT SWAP1 PUSH1 0x20 DUP3 DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI DUP3 PUSH2 0x140 SWAP3 SUB ADD SLT PUSH2 0x458 JUMPI PUSH1 0x4 ADD SWAP1 JUMP JUMPDEST PUSH2 0x100 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP2 PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x584A SWAP2 PUSH1 0x4 ADD PUSH2 0x55C8 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST SWAP2 PUSH2 0x586B SWAP1 PUSH2 0x533D SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x458 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP3 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP2 PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP2 PUSH1 0x4 ADD PUSH2 0x53A1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x58FB JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x58ED JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 SWAP3 DUP4 DUP2 MSTORE PUSH2 0x100 DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 DUP5 MLOAD AND DUP2 DUP4 ADD MSTORE DUP6 DUP2 DUP6 ADD MLOAD AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD SWAP3 PUSH1 0xE0 PUSH1 0x60 DUP5 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH2 0x120 DUP5 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x59AC JUMPI POP POP POP POP PUSH2 0x533D SWAP4 SWAP5 POP PUSH1 0xE0 PUSH1 0xC0 PUSH2 0x5987 PUSH1 0x60 DUP7 ADD MLOAD SWAP5 PUSH1 0x1F NOT SWAP6 DUP7 DUP7 DUP4 SUB ADD PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0x58DC JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP3 DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST DUP4 MLOAD DUP10 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x5956 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x59D9 DUP3 PUSH2 0x534F JUMP JUMPDEST SWAP3 PUSH2 0x59E7 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5299 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x458 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x59C2 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x458 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x458 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 CALLDATASIZE SUB DUP4 SGT PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP1 SWAP2 DUP3 DUP2 MSTORE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x5 SHL DUP1 SWAP3 DUP5 DUP4 ADD CALLDATACOPY ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH1 0x20 SWAP5 SWAP4 PUSH1 0x1F NOT SWAP4 DUP2 DUP7 MSTORE DUP7 DUP7 ADD CALLDATACOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x5B54 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x458 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x458 JUMPI SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x533D SWAP5 SWAP4 PUSH1 0x80 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP5 MSTORE AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE DUP2 PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x53EE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x5BF0 DUP2 PUSH2 0x52BC JUMP JUMPDEST SWAP4 PUSH2 0x5BFE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x5299 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x458 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5C27 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x5C19 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x5BD5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5C69 DUP3 PUSH2 0x51F8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC0 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x60 DUP3 DUP5 SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x458 JUMPI DUP5 PUSH2 0x5CBE SWAP2 DUP4 ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP3 ADD MLOAD SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x59C2 JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x5D56 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5D73 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x5CDB JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xE0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 DUP2 DUP5 SUB SLT PUSH2 0x458 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x458 JUMPI ADD SWAP2 DUP1 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x458 JUMPI DUP3 MLOAD PUSH2 0x5DD4 DUP2 PUSH2 0x52BC JUMP JUMPDEST SWAP4 PUSH2 0x5DE2 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x5299 JUMP JUMPDEST DUP2 DUP6 MSTORE DUP4 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x458 JUMPI DUP4 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x5E09 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x458 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x5DFB JUMP JUMPDEST SWAP1 PUSH2 0x5E32 DUP3 PUSH2 0x52BC JUMP JUMPDEST PUSH2 0x5E3F PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x5299 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x5E4F DUP3 SWAP5 PUSH2 0x52BC JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x5EB3 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5D73 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xA0 DUP6 ADD SWAP1 PUSH2 0x5E65 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x458 JUMPI DUP3 MLOAD SWAP3 PUSH1 0x20 DUP2 ADD MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x458 JUMPI DUP2 PUSH2 0x5F01 SWAP2 DUP5 ADD PUSH2 0x5BD5 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x458 JUMPI PUSH2 0x533D SWAP3 ADD PUSH2 0x59C2 JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x5CE8 JUMPI MSTORE JUMP JUMPDEST PUSH2 0x160 PUSH2 0x533D SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x5F53 PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x5F18 JUMP JUMPDEST DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 PUSH1 0x60 DUP4 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD SWAP1 PUSH2 0x120 SWAP2 ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH2 0x140 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x5B54 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x5FF4 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x5FDB DUP3 PUSH2 0x534F JUMP JUMPDEST SWAP2 PUSH2 0x5FE9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x5299 JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x22717DB200000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH2 0x60A5 PUSH0 SWAP3 SWAP2 DUP4 SWAP3 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x757D64B300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x20 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x548B JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 PUSH2 0x6138 JUMPI JUMPDEST POP PUSH2 0x60D9 JUMPI PUSH2 0x60C5 PUSH2 0x60C0 PUSH2 0x5FCA JUMP JUMPDEST PUSH2 0x6851 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x458 JUMPI PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E657870656374656420737563636573730000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x6141 SWAP1 PUSH2 0x5214 JUMP JUMPDEST PUSH0 PUSH2 0x60B0 JUMP JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x6187 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x61A3 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x5CDB JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x548B JUMP JUMPDEST SWAP1 PUSH2 0x533D SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x6201 PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0x58DC JUMP JUMPDEST SWAP3 PUSH2 0x61A3 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x5E65 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x58307E4400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x6280 DUP3 PUSH2 0x5228 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x120 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH0 PUSH1 0xC0 DUP3 ADD MSTORE PUSH0 PUSH1 0xE0 DUP3 ADD MSTORE PUSH0 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x45D132FE00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3B0A7A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD3A5152A00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x4 DUP2 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6059 DUP3 PUSH2 0x527D JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x63E8 CALLER PUSH2 0x6722 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP4 DUP5 TLOAD PUSH2 0x64F3 JUMPI PUSH1 0x1 SWAP1 PUSH1 0x1 DUP7 TSTORE PUSH2 0x6421 DUP4 PUSH2 0x52BC JUMP JUMPDEST SWAP3 PUSH2 0x642F PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5299 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x643E DUP3 PUSH2 0x52BC JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x64E2 JUMPI POP POP PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x6499 JUMPI POP POP POP POP SWAP1 PUSH0 PUSH2 0x648E SWAP3 SWAP5 TSTORE PUSH32 0x0 DUP1 TLOAD SWAP2 PUSH2 0x6490 JUMPI JUMPDEST POP PUSH2 0x66DF JUMP JUMPDEST JUMP JUMPDEST PUSH0 SWAP1 TSTORE PUSH0 PUSH2 0x6488 JUMP JUMPDEST DUP1 PUSH2 0x64C6 PUSH0 DUP1 PUSH2 0x64AE PUSH2 0x396 DUP10 SWAP7 DUP9 DUP11 PUSH2 0x651B JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD ADDRESS GAS DELEGATECALL PUSH2 0x64BF PUSH2 0x5FCA JUMP JUMPDEST SWAP1 ADDRESS PUSH2 0x6D80 JUMP JUMPDEST PUSH2 0x64D0 DUP3 DUP9 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE PUSH2 0x64DB DUP2 DUP8 PUSH2 0x5FB6 JUMP JUMPDEST POP ADD PUSH2 0x644C JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP10 ADD ADD MSTORE ADD PUSH2 0x6441 JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP3 LT ISZERO PUSH2 0x5B54 JUMPI PUSH2 0x584A SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP1 PUSH2 0x5A96 JUMP JUMPDEST SWAP2 SWAP4 PUSH2 0x6602 SWAP6 PUSH2 0x6059 SWAP5 PUSH2 0x65C7 SWAP4 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP1 PUSH32 0x0 AND SWAP10 DUP2 PUSH1 0x40 MLOAD SWAP10 PUSH2 0x657D DUP12 PUSH2 0x5228 JUMP JUMPDEST CALLER DUP12 MSTORE PUSH0 PUSH1 0x20 DUP13 ADD MSTORE AND PUSH1 0x40 DUP11 ADD MSTORE AND PUSH1 0x60 DUP9 ADD MSTORE AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD MSTORE PUSH0 PUSH1 0xC0 DUP6 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xE0 DUP6 ADD MSTORE PUSH0 PUSH2 0x100 DUP6 ADD MSTORE CALLDATASIZE SWAP2 PUSH2 0x536B JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP2 PUSH32 0xBE5AE84100000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD PUSH2 0x5F25 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0x5299 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x64F3 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER SUB PUSH2 0x666F JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP2 GT PUSH2 0x66AF JUMPI AND SWAP1 JUMP JUMPDEST PUSH32 0x6DFCC65000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0xA0 PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x671E JUMPI PUSH32 0x0 TLOAD PUSH2 0x671E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x648E SWAP3 AND PUSH2 0x6CF5 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH0 SWAP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 TLOAD AND ISZERO PUSH2 0x675A JUMPI POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP TSTORE PUSH1 0x1 SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH6 0xFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x458 JUMPI JUMP JUMPDEST SWAP2 PUSH1 0x44 SWAP3 SWAP4 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 SWAP5 DUP6 SWAP3 DUP3 DUP1 DUP6 MLOAD SWAP10 DUP11 SWAP6 DUP7 SWAP5 PUSH32 0xC9C1661B00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x6847 JUMPI PUSH0 SWAP4 PUSH0 SWAP6 PUSH2 0x6810 JUMPI JUMPDEST POP POP PUSH2 0x680D PUSH2 0x6806 DUP6 SWAP5 PUSH2 0x5E28 JUMP JUMPDEST SWAP5 DUP6 PUSH2 0x5FB6 JUMP JUMPDEST MSTORE JUMP JUMPDEST DUP1 SWAP3 SWAP6 POP DUP2 SWAP5 POP RETURNDATASIZE DUP4 GT PUSH2 0x6840 JUMPI JUMPDEST PUSH2 0x6829 DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP3 PUSH0 DUP1 PUSH2 0x67F7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x681F JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP2 MLOAD LT PUSH2 0x68C5 JUMPI PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MLOAD AND SUB PUSH2 0x45B3 JUMPI DUP1 PUSH1 0x24 PUSH1 0x20 PUSH2 0x533D SWAP4 MLOAD PUSH1 0x3 NOT DUP2 ADD PUSH1 0x4 DUP6 ADD MSTORE DUP4 ADD ADD SWAP2 ADD PUSH2 0x5A08 JUMP JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD CALLDATALOAD TIMESTAMP GT PUSH2 0x6A9D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 SWAP3 PUSH2 0x691D DUP3 DUP6 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP3 DUP1 PUSH1 0x60 SWAP5 DUP6 SWAP4 DUP5 DUP7 ADD PUSH2 0x6930 SWAP1 PUSH2 0x5A2E JUMP JUMPDEST SWAP6 PUSH2 0x693D PUSH1 0x80 DUP3 ADD PUSH2 0x5A2E JUMP JUMPDEST SWAP1 DUP5 PUSH2 0x694D PUSH2 0x120 DUP4 ADD DUP4 PUSH2 0x5A96 JUMP JUMPDEST SWAP2 SWAP1 DUP13 MLOAD SWAP6 PUSH2 0x695B DUP8 PUSH2 0x51F8 JUMP JUMPDEST DUP7 MSTORE DUP2 PUSH1 0x20 DUP8 ADD SWAP8 AND DUP8 MSTORE DUP2 DUP14 DUP8 ADD SWAP12 AND DUP12 MSTORE DUP2 DUP11 DUP8 ADD SWAP6 AND DUP6 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 PUSH1 0xA0 DUP6 ADD CALLDATALOAD DUP5 MSTORE PUSH1 0xA0 DUP8 ADD SWAP5 PUSH1 0xC0 ADD CALLDATALOAD DUP6 MSTORE CALLDATASIZE SWAP1 PUSH2 0x6998 SWAP3 PUSH2 0x536B JUMP JUMPDEST SWAP4 PUSH1 0xC0 DUP7 ADD SWAP5 DUP6 MSTORE DUP2 DUP14 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP10 PUSH32 0x2BFB780C00000000000000000000000000000000000000000000000000000000 DUP12 MSTORE PUSH1 0x4 DUP12 ADD PUSH1 0x20 SWAP1 MSTORE PUSH1 0x24 DUP12 ADD SWAP1 MLOAD SWAP1 PUSH2 0x69E5 SWAP2 PUSH2 0x5F18 JUMP JUMPDEST MLOAD AND PUSH1 0x44 DUP10 ADD MSTORE MLOAD AND PUSH1 0x64 DUP8 ADD MSTORE MLOAD AND PUSH1 0x84 DUP6 ADD MSTORE MLOAD PUSH1 0xA4 DUP5 ADD MSTORE MLOAD PUSH1 0xC4 DUP4 ADD MSTORE MLOAD PUSH1 0xE4 DUP3 ADD PUSH1 0xE0 SWAP1 MSTORE PUSH2 0x104 DUP3 ADD PUSH2 0x6A1D SWAP2 PUSH2 0x548B JUMP JUMPDEST SUB SWAP2 PUSH32 0x0 AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP1 DUP2 ISZERO PUSH2 0x6847 JUMPI PUSH0 SWAP4 PUSH0 SWAP4 PUSH0 SWAP4 PUSH2 0x6A60 JUMPI JUMPDEST POP POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST SWAP3 POP SWAP3 POP DUP1 SWAP4 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x6A96 JUMPI JUMPDEST PUSH2 0x6A7A DUP2 DUP4 PUSH2 0x5299 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x458 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MLOAD PUSH0 DUP1 DUP1 PUSH2 0x6A58 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6A70 JUMP JUMPDEST PUSH32 0xE08B8AF000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 SWAP5 SWAP4 DUP4 ISZERO PUSH2 0x6CED JUMPI DUP1 PUSH2 0x6CB8 JUMPI JUMPDEST ISZERO PUSH2 0x6C1C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP6 SWAP1 MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x6C09 JUMPI JUMPDEST POP DUP5 DUP3 PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x6C05 JUMPI DUP2 SWAP1 PUSH1 0x24 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP10 PUSH1 0x4 DUP5 ADD MSTORE GAS CALL DUP1 ISZERO PUSH2 0x6BFA JUMPI PUSH2 0x6BE2 JUMPI JUMPDEST POP PUSH2 0x648E SWAP4 SWAP5 POP AND PUSH2 0x6CF5 JUMP JUMPDEST PUSH2 0x6BEC DUP7 SWAP2 PUSH2 0x5214 JUMP JUMPDEST PUSH2 0x6BF6 JUMPI DUP5 PUSH2 0x6BD5 JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST PUSH2 0x6C14 SWAP2 SWAP6 POP PUSH2 0x5214 JUMP JUMPDEST PUSH0 SWAP4 PUSH0 PUSH2 0x6B68 JUMP JUMPDEST SWAP3 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP1 EXTCODESIZE ISZERO PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP5 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x44D JUMPI PUSH2 0x6CAF JUMPI POP JUMP JUMPDEST PUSH2 0x648E SWAP1 PUSH2 0x5214 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH32 0x0 AND SWAP1 DUP4 AND EQ PUSH2 0x6AD4 JUMP JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP2 SELFBALANCE LT PUSH2 0x6D45 JUMPI PUSH0 DUP1 DUP1 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 SWAP5 AND GAS CALL PUSH2 0x6D15 PUSH2 0x5FCA JUMP JUMPDEST POP ISZERO PUSH2 0x6D1D JUMPI JUMP JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xCD78605900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE ADDRESS PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x68C5 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST SWAP1 PUSH2 0x6D95 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x6D1D JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x6DDB JUMPI JUMPDEST PUSH2 0x6DA6 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x6D9E JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP9 RETURNDATACOPY 0x2C PUSH26 0x7D40B453A59B2B23B23A9E996591654BE1B95EF19BE7C44EC8F2 0xC9 DUP7 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"978:7807:86:-:0;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;-1:-1:-1;;;;;16367:5:62;978:7807:86;16345:10:62;:28;16341:79;;978:7807:86;16341:79:62;16396:13;;;978:7807:86;16396:13:62;;978:7807:86;;;;;;;;;;;;;;;3118:11:61;978:7807:86;3118:11:61;;;978:7807:86;;;;;;;;;;;;;;;;;;;;39265:545:61;978:7807:86;39265:545:61;;;978:7807:86;;;;;27454:571:61;978:7807:86;27454:571:61;;;978:7807:86;;;;;;;;;;;;;;;;;;;;38174:527:61;978:7807:86;38174:527:61;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;33509:574:61;978:7807:86;33509:574:61;;;978:7807:86;;;;;4143:45;978:7807;4143:45;;;978:7807;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20942:539:61;978:7807:86;20942:539:61;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;22099:540:61;978:7807:86;22099:540:61;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6141:387:61;978:7807:86;6141:387:61;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;14827:403:61;978:7807:86;14827:403:61;;;978:7807:86;13691:404:61;978:7807:86;13691:404:61;978:7807:86;;;;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;30103:11:61;;;;;;:::i;:::-;30136:13;;;:::i;:::-;30181:19;;978:7807:86;30181:19:61;;;;:::i;:::-;30281:11;;;;;978:7807:86;;;;;;;;30320:15:61;30060:290;30027:333;30320:15;978:7807:86;30320:15:61;978:7807:86;;30320:15:61;;978:7807:86;30320:15:61;;;;;;978:7807:86;30320:15:61;;;;:::i;:::-;978:7807:86;;;;;;;;:::i;:::-;;;;;30103:11:61;30060:290;;978:7807:86;;;;:::i;:::-;;30060:290:61;;978:7807:86;30235:22:61;978:7807:86;;30060:290:61;;978:7807:86;30281:11:61;30060:290;;;:::i;:::-;978:7807:86;;;:::i;:::-;30060:290:61;;;978:7807:86;;;30027:333:61;;;;;;978:7807:86;30027:333:61;;978:7807:86;30027:333:61;;;:::i;:::-;;:6;;978:7807:86;30027:333:61;;;;;;978:7807:86;;;;;30027:333:61;;;978:7807:86;;;;;;;;;;;:::i;:::-;;;;30027:333:61;;;978:7807:86;30027:333:61;;;;;;;978:7807:86;30027:333:61;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;978:7807:86;;;;;;;;;;;;;;13607:506:61;13396:109;978:7807:86;13607:506:61;978:7807:86;;;;;:::i;:::-;13291:10:61;;;;;;;;5435:19:62;13291:10:61;5435:19:62;:::i;:::-;13396:109:61;;;:::i;:::-;978:7807:86;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;:::i;:::-;13291:10:61;978:7807:86;;13691:404:61;978:7807:86;;;;13691:404:61;;;978:7807:86;;13691:404:61;;978:7807:86;13691:404:61;;;978:7807:86;13941:41:61;13691:404;;;978:7807:86;;;13691:404:61;;;978:7807:86;13691:404:61;;;978:7807:86;;;13607:506:61;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;13607:506:61;;;;;;:::i;:::-;978:7807:86;;13576:551:61;;;;;;978:7807:86;13576:551:61;;;978:7807:86;13576:551:61;;978:7807:86;13607:506:61;978:7807:86;;;;:::i;:::-;13576:551:61;:6;;978:7807:86;13576:551:61;;;;;;;14196:22;13576:551;13552:626;13576:551;978:7807:86;13576:551:61;;;978:7807:86;;;;;;13552:626:61;;;;;;:::i;:::-;14196:22;;;;:::i;:::-;978:7807:86;6887:82:62;;;978:7807:86;;;;;;;6887:82:62;978:7807:86;16677:12:62;3051:52:52;6887:82:62;;13576:551:61;;;;;;978:7807:86;13576:551:61;;;;;;:::i;:::-;;;;;:::i;:::-;;;;978:7807:86;14743:505:61;;978:7807:86;;;14592:65:61;978:7807:86;;;:::i;:::-;14503:10:61;5435:19:62;14503:10:61;;;;;;;;;;5435:19:62;:::i;:::-;14592:65:61;;;:::i;:::-;978:7807:86;;-1:-1:-1;;;;;978:7807:86;;;;;;;:::i;:::-;14503:10:61;978:7807:86;;14827:403:61;;978:7807:86;;14827:403:61;;;978:7807:86;;14827:403:61;;978:7807:86;14827:403:61;;;978:7807:86;15075:42:61;14827:403;;;978:7807:86;;;14827:403:61;;;978:7807:86;14827:403:61;;;978:7807:86;;;14743:505:61;;;;;;;;;;;;:::i;:::-;978:7807:86;;14712:550:61;;;;;;978:7807:86;14712:550:61;;;978:7807:86;14712:550:61;;978:7807:86;14743:505:61;978:7807:86;;;;:::i;:::-;14712:550:61;:6;;978:7807:86;14712:550:61;;;;;;14688:625;14712:550;978:7807:86;14712:550:61;;;978:7807:86;;;;;;14688:625:61;;;;;;:::i;:::-;6887:82:62;;;;;978:7807:86;;;;;;14712:550:61;;;;;;978:7807:86;14712:550:61;;;;;;:::i;:::-;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;2597:59;978:7807;;:::i;:::-;;;:::i;:::-;;;2597:59;;:::i;:::-;978:7807;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;26099:649:61;;5435:19:62;978:7807:86;;;;;;;;:::i;:::-;5435:19:62;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;:::i;:::-;26423:4:61;978:7807:86;;;;;;26185:545:61;;;978:7807:86;;26185:545:61;;978:7807:86;26185:545:61;978:7807:86;26185:545:61;;978:7807:86;26594:27:61;978:7807:86;26185:545:61;;978:7807:86;26185:545:61;;;;978:7807:86;26185:545:61;;;978:7807:86;;;26099:649:61;;;;;;;;978:7807:86;26099:649:61;;;:::i;:::-;978:7807:86;;26069:693:61;;;;;;978:7807:86;26069:693:61;;;978:7807:86;26069:693:61;;978:7807:86;;;;;;:::i;:::-;26069:693:61;:6;;978:7807:86;26069:693:61;;;;;;26045:768;26069:693;978:7807:86;26069:693:61;;;978:7807:86;;;;;;26045:768:61;;;;;;:::i;:::-;6887:82:62;;;;;;978:7807:86;;;;;;26069:693:61;;;;;;978:7807:86;26069:693:61;;;;;;:::i;:::-;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;1083:103:50;;:::i;:::-;2137:49:86;;978:7807;;:::i;:::-;;;2137:49;;;;978:7807;2137:49;;978:7807;2137:49;;;:::i;:::-;;2152:4;978:7807;2152:4;2137:49;;;;;;;;978:7807;;551:66:50;3051:52:52;978:7807:86;2137:49;;;;;;;;;;;;;;:::i;:::-;;;978:7807;;;;2137:49;;;;;;;;978:7807;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;34630:720:61;;978:7807:86;;5435:19:62;978:7807:86;;;;;;;;:::i;:::-;5435:19:62;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;:::i;:::-;34982:4:61;978:7807:86;;;;34727:601:61;;978:7807:86;;34727:601:61;;978:7807:86;;;;34727:601:61;;978:7807:86;35181:26:61;978:7807:86;34727:601:61;;978:7807:86;34727:601:61;978:7807:86;34727:601:61;;978:7807:86;34727:601:61;;;978:7807:86;;;34630:720:61;;;;978:7807:86;34630:720:61;;;978:7807:86;34630:720:61;;;:::i;:::-;978:7807:86;;34596:772:61;;;;;;978:7807:86;34596:772:61;;978:7807:86;;34596:772:61;;978:7807:86;;;;;;:::i;:::-;34596:772:61;:6;;978:7807:86;34596:772:61;;;;;;;978:7807:86;34596:772:61;34568:859;34596:772;978:7807:86;34596:772:61;;;978:7807:86;;;;;;34568:859:61;;;;;;:::i;:::-;6887:82:62;;;;;;978:7807:86;;;;;;;;:::i;6887:82:62:-;978:7807:86;16677:12:62;3051:52:52;6887:82:62;;34596:772:61;;;;;;978:7807:86;34596:772:61;;;;;;:::i;:::-;;;;978:7807:86;6060:486:61;;978:7807:86;;;;;;:::i;:::-;5435:19:62;5931:10:61;;;;;;;;5435:19:62;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;:::i;:::-;5931:10:61;978:7807:86;;6141:387:61;;978:7807:86;;6141:387:61;;;978:7807:86;;6141:387:61;;978:7807:86;6141:387:61;;;978:7807:86;6388:27:61;6141:387;;;978:7807:86;;;6141:387:61;;;978:7807:86;6141:387:61;;;978:7807:86;;;6060:486:61;;;;;;;;;;;;:::i;978:7807:86:-;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;8058:421:61;;978:7807:86;;;;;;;;;;:::i;:::-;5435:19:62;8009:10:61;5435:19:62;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;:::i;:::-;8009:10:61;978:7807:86;;;;8131:334:61;;978:7807:86;;8131:334:61;;978:7807:86;8131:334:61;978:7807:86;8131:334:61;;978:7807:86;8339:25:61;978:7807:86;8131:334:61;;978:7807:86;8131:334:61;;;978:7807:86;8131:334:61;;;978:7807:86;;;8058:421:61;;;;978:7807:86;8058:421:61;;;978:7807:86;8058:421:61;;;:::i;:::-;978:7807:86;;8031:458:61;;;;;;978:7807:86;8031:458:61;;978:7807:86;;8031:458:61;;978:7807:86;;;;;;:::i;:::-;8031:458:61;:6;;978:7807:86;8031:458:61;;;;;;;;978:7807:86;6887:82:62;;;978:7807:86;6887:82:62;978:7807:86;16677:12:62;3051:52:52;978:7807:86;8031:458:61;;;;;978:7807:86;8031:458:61;;;;;;:::i;:::-;;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;1083:103:50;;:::i;:::-;978:7807:86;;;;;;;;;;;;;;;;;;;;1985:1;978:7807;;;;;;;;;;1894:94;;;;978:7807;1894:94;;;978:7807;1894:94;;978:7807;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1894:94;1909:4;;;1894:94;;;;;;;;978:7807;551:66:50;3051:52:52;978:7807:86;1894:94;;;;;978:7807;1894:94;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;978:7807;;;;;;;;;;;;;;;40385:17:61;978:7807:86;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;40385:17:61;:::i;:::-;3051:52:52;;978:7807:86;551:66:50;3051:52:52;978:7807:86;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;6011:8;;978:7807;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;36637:11:61;;;;;:::i;:::-;36676:13;;;:::i;:::-;36785:20;;978:7807:86;36785:20:61;;;;:::i;:::-;36833:11;;;;;978:7807:86;;;;;;;;36876:15:61;36587:323;36547:377;36876:15;978:7807:86;;36876:15:61;978:7807:86;36876:15:61;978:7807:86;36876:15:61;;;;;;978:7807:86;36876:15:61;;;;:::i;978:7807:86:-;;;;;36637:11:61;36587:323;;978:7807:86;36727:21:61;978:7807:86;;36587:323:61;;978:7807:86;;;;:::i;:::-;;36587:323:61;;978:7807:86;36833:11:61;36587:323;;;:::i;978:7807:86:-;36587:323:61;;;978:7807:86;;;36547:377:61;;;;;;978:7807:86;36547:377:61;;978:7807:86;36547:377:61;;;:::i;:::-;;:6;;978:7807:86;36547:377:61;;;;;;978:7807:86;;;;;36547:377:61;;;978:7807:86;;;;;;;;;;;:::i;36547:377:61:-;;;978:7807:86;36547:377:61;;;;;;;978:7807:86;36547:377:61;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;-1:-1:-1;;;;;978:7807:86;;;;;35706:96:61;;;;;;978:7807:86;;35706:96:61;;978:7807:86;35777:4:61;978:7807:86;;;;;;;;;;;35706:96:61;;978:7807:86;;;;;;;;;;;;;;;;;;;;35672:148:61;;;;;;978:7807:86;;;35672:148:61;978:7807:86;;;;;;;:::i;:::-;35672:148:61;;:6;;978:7807:86;35672:148:61;;;;;;;35644:219;35672:148;978:7807:86;35672:148:61;;;978:7807:86;;;;;;;35644:219:61;;;;;;:::i;:::-;978:7807:86;;;;;;;;;;;;;;:::i;35672:148:61:-;;;;978:7807:86;35672:148:61;;;;978:7807:86;35672:148:61;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;1083:103:50;;:::i;:::-;1745:49:86;978:7807;;;:::i;:::-;;;1745:49;;;;978:7807;1745:49;;978:7807;1745:49;;;:::i;:::-;;1760:4;;;1745:49;;;;;;;;978:7807;551:66:50;3051:52:52;978:7807:86;1745:49;;;;;978:7807;1745:49;;;;;;:::i;:::-;;;;;978:7807;;-1:-1:-1;;978:7807:86;;;;;;;;;;;;11039:22:62;978:7807:86;;;;;;;;:::i;:::-;11039:22:62;;:::i;:::-;978:7807:86;;;;;;;:::i;:::-;;;;;-1:-1:-1;;978:7807:86;;;;;;;;:::i;:::-;;;;5435:19:62;978:7807:86;;;:::i;:::-;5435:19:62;;;;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;24984:6:61;;;978:7807:86;;;;15447:26:62;978:7807:86;15447:26:62;;978:7807:86;15447:26:62;;978:7807:86;15447:26:62;;978:7807:86;;15447:26:62;978:7807:86;15447:26:62;;;;;;;;;978:7807:86;15447:26:62;;;978:7807:86;;;15502:24:62;;;;:::i;:::-;15541:13;978:7807:86;15556:13:62;;;;;;978:7807:86;;;;25014:674:61;;978:7807:86;;;;;;;;;;;:::i;:::-;25338:4:61;978:7807:86;;;25100:570:61;;;;978:7807:86;;25100:570:61;;978:7807:86;;25100:570:61;;978:7807:86;25100:570:61;;;;978:7807:86;25100:570:61;;;;978:7807:86;25100:570:61;;;978:7807:86;;;25014:674:61;;;;;;;;978:7807:86;25014:674:61;;;:::i;:::-;978:7807:86;;24984:718:61;;;;;;978:7807:86;24984:718:61;;;978:7807:86;24984:718:61;;978:7807:86;;;;;;:::i;:::-;24984:718:61;;;;;;;;24960:793;24984:718;978:7807:86;24984:718:61;;;15536:91:62;978:7807:86;;;;;24960:793:61;;;;;;:::i;:::-;6887:82:62;;;;;15536:91;978:7807:86;;;;;;;;;;;;;:::i;6887:82:62:-;978:7807:86;16677:12:62;3051:52:52;6887:82:62;;24984:718:61;;;;;;978:7807:86;24984:718:61;;;;;;:::i;:::-;;;;15571:3:62;15590:26;978:7807:86;15590:26:62;978:7807:86;15590:26:62;;;:::i;:::-;978:7807:86;;15541:13:62;;15447:26;;;;;;978:7807:86;15447:26:62;;;;;;:::i;:::-;;;;;:::i;:::-;;;;978:7807:86;;;;:::i;:::-;21885:10:61;;;;;;;5435:19:62;;;:::i;:::-;978:7807:86;;;;;;;:::i;:::-;21885:10:61;978:7807:86;;22099:540:61;;;22209:18;3524:17:62;;-1:-1:-1;;;;;978:7807:86;;22099:540:61;;978:7807:86;-1:-1:-1;;;;;978:7807:86;22099:540:61;;;978:7807:86;-1:-1:-1;;;;;978:7807:86;22099:540:61;;;978:7807:86;22099:540:61;;;978:7807:86;22099:540:61;;;978:7807:86;;22099:540:61;;978:7807:86;;;22099:540:61;;;978:7807:86;;;;;;:::i;:::-;22099:540:61;;;978:7807:86;;;22007:654:61;22099:540;22007:654;;;978:7807:86;;;22007:654:61;;;;;;:::i;:::-;;-1:-1:-1;;22007:654:61;;;;;;;;:::i;:::-;978:7807:86;;21972:707:61;;978:7807:86;21972:707:61;;978:7807:86;21972:707:61;;22099:540;978:7807:86;;22007:654:61;978:7807:86;;;;;:::i;:::-;21972:707:61;:6;;-1:-1:-1;;;;;978:7807:86;21972:707:61;;;978:7807:86;21972:707:61;;;;;;;;;978:7807:86;21972:707:61;;;978:7807:86;;22099:540:61;978:7807:86;;;21944:776:61;;978:7807:86;;;;22099:540:61;21944:776;;;978:7807:86;6887:82:62;;;978:7807:86;;;;;;21972:707:61;;;;;;;978:7807:86;21972:707:61;;;;;;:::i;:::-;;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;19745:77:61;978:7807:86;;;;;;:::i;:::-;1083:103:50;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;978:7807:86;19745:6:61;;978:7807:86;;;;19745:77:61;;;;978:7807:86;19745:77:61;;978:7807:86;;19745:77:61;;978:7807:86;19745:77:61;;;:::i;:::-;;;;;;;;;;;;978:7807:86;19745:77:61;;;978:7807:86;;;;;19858:26:61;978:7807:86;19858:26:61;;978:7807:86;;19858:26:61;;978:7807:86;;19858:26:61;978:7807:86;19858:26:61;;;;;;;;;978:7807:86;19858:26:61;;;978:7807:86;19900:13:61;978:7807:86;19934:3:61;978:7807:86;;19915:17:61;;;;;19973:13;;;;:::i;:::-;978:7807:86;20004:13:61;;20000:160;;19934:3;978:7807:86;19934:3:61;;978:7807:86;19900:13:61;;20000:160;20116:9;;;;;:::i;:::-;978:7807:86;;20102:43:61;;;;;978:7807:86;;;20102:43:61;;-1:-1:-1;;;;;978:7807:86;;;;20102:43:61;;978:7807:86;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;-1:-1:-1;20102:43:61;;;;;;;;978:7807:86;20102:43:61;;;20000:160;;;;20102:43;;;;:::i;:::-;;;;19915:17;978:7807:86;19915:17:61;20191:6;19915:17;20191:6;:::i;:::-;978:7807:86;551:66:50;3051:52:52;978:7807:86;;;;;;;;;;;;;:::i;19858:26:61:-;;;;;;;978:7807:86;19858:26:61;;;;;;:::i;:::-;;;;;19745:77;;;;;;;978:7807:86;19745:77:61;;;;;;:::i;:::-;;;;;978:7807:86;;15821:533:61;978:7807:86;;15821:533:61;978:7807:86;;;:::i;:::-;15621:10:61;5435:19:62;15621:10:61;;;;;;;5435:19:62;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;:::i;:::-;15621:10:61;978:7807:86;;;15913:419:61;;;978:7807:86;;15913:419:61;;978:7807:86;;15913:419:61;;978:7807:86;16181:26:61;15913:419;;;978:7807:86;;;15913:419:61;;;978:7807:86;15913:419:61;;;978:7807:86;;;15821:533:61;;;;15913:419;15821:533;;;;;;;:::i;:::-;978:7807:86;;15786:586:61;;;;;;978:7807:86;15786:586:61;;15913:419;978:7807:86;15786:586:61;;978:7807:86;15821:533:61;978:7807:86;;;;:::i;:::-;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;17624:6:61;;978:7807:86;17706:11:61;;;;;;;:::i;:::-;17741:13;;;;:::i;:::-;17842:20;;978:7807:86;17842:20:61;;;;:::i;:::-;17886:11;;;;;;978:7807:86;;;;;;;;17925:15:61;17660:295;978:7807:86;17925:15:61;978:7807:86;17624:341:61;17925:15;978:7807:86;17925:15:61;978:7807:86;17925:15:61;;978:7807:86;17925:15:61;;;;;;;:::i;978:7807:86:-;17660:295:61;;;978:7807:86;;;17624:341:61;;;;978:7807:86;17624:341:61;;978:7807:86;17624:341:61;;;:::i;:::-;;;;;;;;;;;;978:7807:86;;;;;17624:341:61;;;978:7807:86;18101:11:61;;;;:::i;:::-;978:7807:86;;;;18080:33:61;978:7807:86;18080:33:61;;978:7807:86;;18080:33:61;;978:7807:86;;18080:33:61;978:7807:86;18080:33:61;978:7807:86;18080:33:61;;;;;;;;;978:7807:86;18080:33:61;;;978:7807:86;-1:-1:-1;18129:13:61;;17660:295;18408:16;;;-1:-1:-1;978:7807:86;18163:3:61;978:7807:86;;18144:17:61;;;;;18202:13;;;;:::i;:::-;978:7807:86;18233:14:61;;;18229:61;;18319:9;;;;;:::i;:::-;978:7807:86;;18408:16:61;;;:::i;:::-;:52;;;18163:3;18404:490;;;18540:46;;;;;;978:7807:86;;;;18540:46:61;;978:7807:86;18554:5:61;978:7807:86;18554:5:61;;;;978:7807:86;18540:46:61;;978:7807:86;18540:46:61;;978:7807:86;18569:4:61;;978:7807:86;;;;;;;;;18540:46:61;;;;;;;;18404:490;18604:25;;;;;;978:7807:86;;;;;;18604:25:61;;;;978:7807:86;18604:25:61;;;978:7807:86;18604:25:61;;978:7807:86;18604:25:61;;;;;;;;18694:13;18604:25;18719:9;18604:25;978:7807:86;18604:25:61;;;18404:490;18694:13;;:::i;:::-;978:7807:86;18719:9:61;:::i;:::-;978:7807:86;18129:13:61;;18604:25;;;;:::i;:::-;;;;18540:46;;;;:::i;:::-;;;;18404:490;18854:13;;;:::i;:::-;18833:46;;;;;978:7807:86;;;18833:46:61;;-1:-1:-1;;;;;978:7807:86;;;;18833:46:61;;978:7807:86;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;-1:-1:-1;18833:46:61;;;;;;;;978:7807:86;18833:46:61;;;18404:490;;;;18833:46;;;;:::i;:::-;;;;18408:52;18454:5;;;978:7807:86;18428:32:61;;18408:52;;18229:61;978:7807:86;18267:8:61;;;;18144:17;;978:7807:86;18144:17:61;18925:13;;18144:17;18925:13;:::i;:::-;;:::i;:::-;978:7807:86;551:66:50;3051:52:52;978:7807:86;;;;;;;:::i;18080:33:61:-;;;;;;;978:7807:86;18080:33:61;;;;;;:::i;:::-;;;;;17624:341;;;;18101:11;17624:341;;;;;;;978:7807:86;17624:341:61;;;;;;:::i;:::-;;;;;;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;;;:::i;:::-;;;;:::i;:::-;20728:10:61;;;;;;;5435:19:62;;;:::i;:::-;978:7807:86;;;;;;;:::i;:::-;20728:10:61;978:7807:86;;20942:539:61;;;978:7807:86;3524:17:62;;-1:-1:-1;;;;;978:7807:86;;20942:539:61;;978:7807:86;-1:-1:-1;;;;;978:7807:86;20942:539:61;;;978:7807:86;-1:-1:-1;;;;;978:7807:86;20942:539:61;;;978:7807:86;20942:539:61;;;978:7807:86;20942:539:61;;;978:7807:86;;20942:539:61;;978:7807:86;;;20942:539:61;;;978:7807:86;;;;;;:::i;:::-;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;6892:10:61;7203:498;;6995:107;5435:19:62;6892:10:61;5435:19:62;:::i;:::-;978:7807:86;;;6995:107:61;;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;:::i;:::-;6892:10:61;978:7807:86;;;;;;7284:399:61;;;978:7807:86;;7284:399:61;;978:7807:86;;;;7284:399:61;;978:7807:86;7531:39:61;978:7807:86;7284:399:61;;978:7807:86;;;;7284:399:61;;978:7807:86;;7284:399:61;;978:7807:86;;;7203:498:61;;;;;;;;978:7807:86;7203:498:61;;;:::i;978:7807:86:-;7172:543:61;:6;;978:7807:86;7172:543:61;;;;;;;7784:21;7172:543;7148:618;7172:543;978:7807:86;7172:543:61;;;978:7807:86;;;;;;7148:618:61;;;;;;:::i;:::-;7784:21;;;:::i;7172:543::-;;;;;;978:7807:86;7172:543:61;;;;;;:::i;:::-;;;;978:7807:86;5120:488:61;;978:7807:86;;;;;;:::i;:::-;5435:19:62;4988:10:61;;;;;;;;;5435:19:62;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;:::i;:::-;4988:10:61;978:7807:86;;5201:389:61;;978:7807:86;;5201:389:61;;;978:7807:86;;5201:389:61;;978:7807:86;;5201:389:61;;978:7807:86;5201:389:61;;;;978:7807:86;;;5201:389:61;;;978:7807:86;5201:389:61;;;978:7807:86;;;5120:488:61;;;;;;;;;;;;:::i;:::-;978:7807:86;;5089:533:61;;;;;;978:7807:86;5089:533:61;;;978:7807:86;5089:533:61;;978:7807:86;5120:488:61;978:7807:86;;;;:::i;:::-;5089:533:61;:6;;978:7807:86;5089:533:61;;;;;;5065:608;5089:533;978:7807:86;5089:533:61;;;978:7807:86;;;;;5065:608:61;;;;;;:::i;978:7807:86:-;;;;;;;:::i;:::-;5435:19:62;6329:10:86;5435:19:62;:::i;:::-;-1:-1:-1;;;;;978:7807:86;;;6533:66;;;;;;;;;;;;978:7807;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6533:66;978:7807;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;6533:66;-1:-1:-1;;6533:66:86;;;;;;:::i;:::-;978:7807;;6519:81;;;;;;978:7807;6519:81;;;978:7807;6519:81;;978:7807;6533:66;978:7807;;;;:::i;:::-;6519:81;:6;;978:7807;6519:81;;;;;;;978:7807;6519:81;;;978:7807;;;;6491:181;;;978:7807;6491:181;;;;978:7807;;;;;6491:181;;;978:7807;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6887:82:62;;;978:7807:86;;;;;;;;:::i;6887:82:62:-;978:7807:86;16677:12:62;3051:52:52;6887:82:62;;6519:81:86;;;;;;;978:7807;6519:81;;;;;;:::i;:::-;;;;;978:7807;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;23246:17:61;;;:::i;:::-;23291:14;;;;;;;:::i;:::-;23329:13;;;;:::i;:::-;23363:16;;;;;;;;:::i;:::-;13940:29:62;;;978:7807:86;13936:693:62;;;13989:21;;;:32;13985:95;;-1:-1:-1;;;;;14132:5:62;978:7807:86;;;;;14132:34:62;;;;;978:7807:86;;;14132:34:62;;978:7807:86;14132:34:62;978:7807:86;14132:34:62;;;;;;;;;;;13936:693;14242:6;;978:7807:86;;;;1412:43:98;3510:55:99;978:7807:86;1412:43:98;;;;;;;978:7807:86;1412:43:98;;;;;;;;;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;1412:43:98;3462:31:99;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;978:7807:86;;4551:22:98;;;;;:57;;;;13936:693:62;4547:135:98;;;;;-1:-1:-1;978:7807:86;;;14314:30:62;;-1:-1:-1;;;;;978:7807:86;;;;;14314:30:62;;978:7807:86;;;;;;;;;;;;;;;;-1:-1:-1;;14314:30:62;;;;;;;;13936:693;;;978:7807:86;13936:693:62;23447:16:61;13936:693:62;;23404:13:61;;;:::i;:::-;23419:15;23447:16;23419:15;;;;;:::i;:::-;23447:16;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;23490:5:61;;978:7807:86;;;23479:16:61;23475:120;;13936:693:62;3051:52:52;978:7807:86;551:66:50;3051:52:52;978:7807:86;;;;;;23475:120:61;23570:13;;;;:::i;:::-;23475:120;;;14314:30:62;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;14314:30:62;;;;;;;;;4547:135:98;4631:40;978:7807:86;4631:40:98;978:7807:86;;1412:43:98;978:7807:86;4631:40:98;4551:57;4578:30;;-1:-1:-1;4578:30:98;;;;;;;:::i;:::-;4577:31;4551:57;;;;;14132:34:62;;;;:::i;:::-;;;;13985:95;14048:17;978:7807:86;14048:17:62;978:7807:86;;14048:17:62;13936:693;14379:12;14375:244;;13936:693;;;978:7807:86;13936:693:62;23447:16:61;13936:693:62;;;14375:244;-1:-1:-1;;;;;14468:8:62;;;978:7807:86;14506:6:62;;;978:7807:86;14515:20:62;;;;:::i;:::-;14468:86;;;;;;978:7807:86;;;14468:86:62;;-1:-1:-1;;;;;978:7807:86;;;;14468:86:62;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;-1:-1:-1;;14468:86:62;;;;;;;978:7807:86;14468:86:62;14572:32;14468:86;14572:32;14468:86;;;14375:244;978:7807:86;;;14572:32:62;;;;;;978:7807:86;14572:32:62;;;978:7807:86;14572:32:62;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;14572:32:62;;;;;;;;;;;14375:244;;;;14572:32;;;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;14572:32:62;;;;;;;;14468:86;;;;:::i;:::-;;;;13940:29;978:7807:86;-1:-1:-1;;;;;13964:5:62;;978:7807:86;;;;13953:16:62;13940:29;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;1083:103:50;;:::i;:::-;2329:43:86;;978:7807;;:::i;:::-;;;2329:43;;;;978:7807;2329:43;;978:7807;2329:43;;;:::i;978:7807::-;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;37565:6:61;;;978:7807:86;;;37565:26:61;978:7807:86;37565:26:61;;978:7807:86;;;37565:26:61;;978:7807:86;;37565:26:61;978:7807:86;37565:26:61;;;;;;;;;978:7807:86;37551:48:61;37616:77;37565:26;;;;;;;978:7807:86;;;37551:48:61;:::i;:::-;978:7807:86;;;37616:77:61;;;;;;;978:7807:86;37616:77:61;;978:7807:86;;37616:77:61;978:7807:86;37616:77:61;;;:::i;:::-;;;;;;;;;978:7807:86;37616:77:61;978:7807:86;37616:77:61;;;978:7807:86;;;;;;;;;;;;;;;:::i;37616:77:61:-;;;;;;978:7807:86;37616:77:61;;;;;;:::i;:::-;;;;37565:26;;;;;;;;;;;;;:::i;:::-;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;16677:12:62;2295:53:52;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;10267:6:61;;978:7807:86;10343:11:61;;;;;;;;;:::i;:::-;10376:13;;;;:::i;:::-;10421:19;;978:7807:86;10421:19:61;;;;:::i;:::-;10521:11;;;;;;978:7807:86;;;;;;;;10560:15:61;10300:290;978:7807:86;10560:15:61;978:7807:86;10267:333:61;10560:15;978:7807:86;10560:15:61;;;978:7807:86;10560:15:61;;;;;;;;:::i;:::-;978:7807:86;;;;;;;;:::i;:::-;;;;;10300:290:61;;;978:7807:86;;;;:::i;:::-;;10300:290:61;;978:7807:86;;10475:22:61;;978:7807:86;;10300:290:61;;978:7807:86;10521:11:61;10300:290;;;:::i;978:7807:86:-;10300:290:61;;;978:7807:86;;;10267:333:61;;;;978:7807:86;10267:333:61;;978:7807:86;10267:333:61;;;:::i;:::-;;;;;;;;;;;;978:7807:86;;;;;10267:333:61;;;978:7807:86;10735:11:61;;;;:::i;:::-;978:7807:86;;;10714:33:61;978:7807:86;10714:33:61;;978:7807:86;;10714:33:61;;978:7807:86;;10714:33:61;978:7807:86;10714:33:61;;;;;;;;;978:7807:86;10714:33:61;;;978:7807:86;-1:-1:-1;10763:13:61;;10300:290;11039:16;;;-1:-1:-1;978:7807:86;10797:3:61;978:7807:86;;10778:17:61;;;;;10831:9;;;;;:::i;:::-;978:7807:86;;10873:12:61;;;;:::i;:::-;978:7807:86;10904:13:61;;;10900:60;;11039:16;;;:::i;:::-;:52;;;10797:3;11035:712;;;11115:21;;;:32;11111:103;;11232:5;978:7807:86;;;11232:34:61;;;;;;978:7807:86;;;11232:34:61;;978:7807:86;11232:34:61;978:7807:86;11232:34:61;;;;;;;;;11284:41;11232:34;;;;;;;11035:712;978:7807:86;;;;;11284:41:61;;;;;;978:7807:86;11284:41:61;;978:7807:86;11284:41:61;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;11284:41:61;;;;;;;;;;11343:30;11284:41;;;;;11035:712;978:7807:86;;;11343:30:61;;;;;978:7807:86;11343:30:61;;978:7807:86;11343:30:61;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;11343:30:61;;;978:7807:86;11343:30:61;;;;;;;;;;;;11035:712;;;978:7807:86;11035:712:61;;978:7807:86;10763:13:61;;11343:30;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;11343:30:61;;;;;;;;;11284:41;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;11232:34;;;;:::i;:::-;;;;11035:712;11593:8;;;978:7807:86;11615:13:61;;;;:::i;:::-;11647:20;;;:::i;:::-;11593:91;;;;;978:7807:86;;;11593:91:61;;-1:-1:-1;;;;;978:7807:86;;;;11593:91:61;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;-1:-1:-1;;11593:91:61;;;;;;;11702:30;11593:91;;;;;978:7807:86;;;11702:30:61;;;;;978:7807:86;11702:30:61;;978:7807:86;11702:30:61;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;11702:30:61;;;978:7807:86;11702:30:61;;;;;;;;;;;;11035:712;;;978:7807:86;11035:712:61;;;11702:30;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;11702:30:61;;;;;;;;;11593:91;;;;:::i;:::-;;;;11039:52;11085:5;;;978:7807:86;11059:32:61;;11039:52;;10778:17;;;978:7807:86;10778:17:61;11821:13;;10778:17;11821:13;:::i;:::-;978:7807:86;551:66:50;3051:52:52;978:7807:86;;;;;;;:::i;10714:33:61:-;;;;;;978:7807:86;10714:33:61;;;;;;:::i;:::-;;;;10267:333;;;;;;;;10735:11;10267:333;;;;978:7807:86;10267:333:61;;;;;;:::i;:::-;;;;;;;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;;;4181:4;4162:25;;;978:7807;4162:25;;;;;;:::i;:::-;978:7807;;4143:45;;;;;;4162:25;978:7807;4143:45;;978:7807;;;;;;:::i;:::-;4143:45;;;978:7807;;;;;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;-1:-1:-1;978:7807:86;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;;;;;;;;;33270:65:61;5435:19:62;978:7807:86;;;33420:681:61;;978:7807:86;;;:::i;:::-;5435:19:62;;;;;;;:::i;:::-;33270:65:61;;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;:::i;:::-;33752:4:61;978:7807:86;;33509:574:61;;978:7807:86;;33509:574:61;;;978:7807:86;;33509:574:61;;978:7807:86;;33509:574:61;;;978:7807:86;33932:42:61;33509:574;;;978:7807:86;33509:574:61;;;;978:7807:86;33509:574:61;;;978:7807:86;;;33420:681:61;;;;;;;;;;;;:::i;978:7807:86:-;12445:497:61;;978:7807:86;;;;;;:::i;:::-;5435:19:62;12311:10:61;;;;;;;;5435:19:62;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;:::i;:::-;12311:10:61;978:7807:86;;12529:395:61;;978:7807:86;;12529:395:61;;;978:7807:86;;12529:395:61;;978:7807:86;;12529:395:61;;978:7807:86;12529:395:61;;;;978:7807:86;;;12529:395:61;;;978:7807:86;12529:395:61;;;978:7807:86;;;12445:497:61;;;;;;;;;;;;:::i;978:7807:86:-;12414:542:61;:6;;978:7807:86;12414:542:61;;;;;;12390:617;12414:542;978:7807:86;12414:542:61;;;978:7807:86;;;;;;12390:617:61;;;;;;:::i;:::-;6887:82:62;;;;;;978:7807:86;;;;;;;;;;;;;:::i;12414:542:61:-;;;;;;978:7807:86;12414:542:61;;;;;;:::i;:::-;;;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;1083:103:50;;:::i;:::-;1375:48:86;978:7807;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1375:48;;;;978:7807;1375:48;;978:7807;1375:48;;;:::i;978:7807::-;;;;;-1:-1:-1;;978:7807:86;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;978:7807:86;;;;;4620:15;978:7807;4620:15;978:7807;;4620:15;978:7807;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;28579:709:61;;978:7807:86;;5435:19:62;978:7807:86;;;;;;;;:::i;5435:19:62:-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;:::i;:::-;28923:4:61;978:7807:86;;;;28673:593:61;;978:7807:86;;28673:593:61;;978:7807:86;;;;28673:593:61;;978:7807:86;;;28673:593:61;;978:7807:86;28673:593:61;978:7807:86;28673:593:61;;978:7807:86;28673:593:61;;;978:7807:86;;;28579:709:61;;;;978:7807:86;28579:709:61;;;978:7807:86;28579:709:61;;;:::i;978:7807:86:-;28545:761:61;:6;;978:7807:86;28545:761:61;;;;;;;978:7807:86;28545:761:61;28517:848;28545:761;978:7807:86;28545:761:61;;;978:7807:86;;;;;;28517:848:61;;;;;;:::i;:::-;6887:82:62;;;;;;978:7807:86;;;;;;;;:::i;6887:82:62:-;978:7807:86;16677:12:62;3051:52:52;6887:82:62;;28545:761:61;;;;;;978:7807:86;28545:761:61;;;;;;:::i;:::-;;;;978:7807:86;;;;;;;:::i;:::-;5435:19:62;;;;;;;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;;:::i;:::-;38238:10:61;978:7807:86;;38174:527:61;;;;;;978:7807:86;3524:17:62;;978:7807:86;;38174:527:61;;978:7807:86;;38174:527:61;;;978:7807:86;;38174:527:61;;;978:7807:86;38174:527:61;;;978:7807:86;38174:527:61;;;978:7807:86;;;;38174:527:61;;978:7807:86;;;38174:527:61;;;978:7807:86;;;38174:527:61;;;978:7807:86;;;38088:635:61;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;38088:635:61;;;;;;;;:::i;:::-;978:7807:86;;38054:687:61;;;978:7807:86;38054:687:61;;;978:7807:86;38054:687:61;;978:7807:86;38088:635:61;978:7807:86;;;;;:::i;:::-;38054:687:61;:6;;978:7807:86;38054:687:61;;;978:7807:86;38054:687:61;;;;;;;;;978:7807:86;38054:687:61;;;978:7807:86;;;;;;38026:756:61;;978:7807:86;;;;38026:756:61;;978:7807:86;6887:82:62;;;978:7807:86;;;;;;38054:687:61;;;;;;978:7807:86;38054:687:61;;;;;;:::i;:::-;;;;978:7807:86;;;;;;;:::i;:::-;-1:-1:-1;;;;;6966:6:86;:345;:6;;978:7807;7042:11;;;;:::i;:::-;7075:13;;978:7807;7075:13;;;;;;;:::i;:::-;978:7807;7120:19;978:7807;7120:19;;;;:::i;:::-;978:7807;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;6999:302;;;978:7807;;;;:::i;:::-;;6999:302;;978:7807;7174:22;;;978:7807;7174:22;6999:302;;978:7807;6999:302;;;;978:7807;6999:302;;;978:7807;;;6966:345;;;;978:7807;6966:345;;978:7807;6966:345;;;:::i;:::-;;;;;;;;;;;;978:7807;;;;6966:345;;978:7807;7446:11;;;;:::i;:::-;978:7807;;;7425:33;978:7807;7425:33;;978:7807;;7425:33;;978:7807;;7425:33;978:7807;7425:33;;;;;;;;;978:7807;7425:33;;;978:7807;-1:-1:-1;7474:13:86;;7857:8;978:7807;;;-1:-1:-1;978:7807:86;7508:3;978:7807;;7489:17;;;;;7542:9;;;;;:::i;:::-;978:7807;;7584:12;;;;:::i;:::-;978:7807;7614:13;;7610:60;;7879:13;;;:::i;:::-;7911:20;;;;:::i;:::-;7857:91;;;;;;978:7807;;;7857:91;;-1:-1:-1;;;;;978:7807:86;;;;7857:91;;978:7807;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;-1:-1:-1;978:7807:86;7857:91;;;;;;;7962:30;7857:91;;;;;978:7807;;;7962:30;;;;;978:7807;7962:30;;978:7807;7962:30;;978:7807;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;7962:30;;;978:7807;7962:30;;;;;;;;;;;;7508:3;;;978:7807;7508:3;7474:13;978:7807;7474:13;;7962:30;;;;;;;;;;;;:::i;:::-;;;978:7807;;;;7962:30;;;;;;;;;7610:60;7647:8;;978:7807;7647:8;;;7489:17;;;;;;;;8125:11;;;:::i;:::-;8160:13;;8214:11;8160:13;;;:::i;:::-;8214:11;;:::i;:::-;978:7807;8237:13;;978:7807;8237:13;;;:::i;:::-;978:7807;;8207:44;;;;;978:7807;8207:44;;978:7807;;8207:44;;978:7807;8207:44;;;;;;;978:7807;8207:44;;;7469:534;978:7807;;8043:387;978:7807;;;;8284:28;978:7807;;8284:28;:::i;:::-;978:7807;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;8079:341;;;978:7807;;8079:341;;978:7807;7174:22;8079:341;;978:7807;8079:341;6999:302;8079:341;;978:7807;6999:302;8079:341;;978:7807;;;8043:387;;;;978:7807;8043:387;;978:7807;8043:387;;;:::i;:::-;;;;;;;;;;;;978:7807;;;;8043:387;;7469:534;8446:13;978:7807;8480:3;978:7807;;8461:17;;;;;8514:9;;;;;:::i;:::-;978:7807;;8557:13;;;;;:::i;:::-;978:7807;8588:14;;8584:61;;8741:13;;;:::i;:::-;8720:46;;;;;;978:7807;;;8720:46;;-1:-1:-1;;;;;978:7807:86;;;;8720:46;;978:7807;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;-1:-1:-1;978:7807:86;8720:46;;;;;;;978:7807;8720:46;;;8480:3;;8446:13;978:7807;8446:13;;8720:46;;;;:::i;:::-;;;;8584:61;8622:8;978:7807;8622:8;;;;8461:17;;978:7807;8461:17;;978:7807;;;;;;;:::i;8043:387::-;;;;;;;;;;978:7807;8043:387;;;;;;:::i;:::-;;;;;;;;8207:44;;;;;;;;;;;;;;;;;;:::i;:::-;;;978:7807;;;;;;8207:44;;;8043:387;8207:44;;;;;;;7425:33;;;;;;978:7807;7425:33;;;;;;:::i;:::-;;;;6966:345;;;;;;;;;;978:7807;6966:345;;;;;;:::i;:::-;;;;;;;;978:7807;;;;;-1:-1:-1;;978:7807:86;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;5435:19:62;978:7807:86;;;;;;:::i;:::-;5435:19:62;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;13601:6:62;;;978:7807:86;;;;;13601:52:62;978:7807:86;13601:52:62;;978:7807:86;13601:52:62;;978:7807:86;13601:52:62;;978:7807:86;;;;;;;13601:52:62;978:7807:86;13601:52:62;;;;;;;;;978:7807:86;;;13601:52:62;;;978:7807:86;13678:24:62;978:7807:86;13678:24:62;32145:685:61;;13678:24:62;;;978:7807:86;13678:24:62;;:::i;:::-;13712:38;32042:1:61;13712:38:62;;;;:::i;:::-;978:7807:86;;;;;;;:::i;:::-;32477:4:61;978:7807:86;;;32234:578:61;;;;978:7807:86;;32234:578:61;;978:7807:86;;;;32234:578:61;;978:7807:86;32042:1:61;978:7807:86;32234:578:61;;978:7807:86;32234:578:61;978:7807:86;32234:578:61;;978:7807:86;32234:578:61;;;978:7807:86;;;32145:685:61;;;;;;;;978:7807:86;32145:685:61;;;:::i;:::-;978:7807:86;;32115:729:61;;;;;;978:7807:86;32115:729:61;;;978:7807:86;32115:729:61;;978:7807:86;;;;;;:::i;:::-;32115:729:61;;;;;;;;;32913:22;32115:729;32091:804;32115:729;978:7807:86;32115:729:61;;;978:7807:86;;;;;32091:804:61;;;;;;:::i;13601:52:62:-;;;;;978:7807:86;13601:52:62;;978:7807:86;13601:52:62;;;;;;978:7807:86;13601:52:62;;;:::i;:::-;;;978:7807:86;;;;;;;;;;;;;;;;13601:52:62;;;;;-1:-1:-1;13601:52:62;;978:7807:86;;;;;-1:-1:-1;;978:7807:86;;;;;;;;5051:30;;;978:7807;;5051:30;;978:7807;;;;;;;;;;;5051:30;978:7807;;;;5435:19:62;978:7807:86;;;:::i;:::-;5435:19:62;;;;;;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;13601:6:62;;;978:7807:86;;;;;13601:52:62;978:7807:86;13601:52:62;;978:7807:86;13601:52:62;;978:7807:86;13601:52:62;;978:7807:86;;;;;;;13601:52:62;978:7807:86;13601:52:62;;;;;;;;;978:7807:86;;;13601:52:62;;;978:7807:86;13678:24:62;;27368:675:61;;978:7807:86;13678:24:62;;978:7807:86;13678:24:62;;;;;:::i;:::-;13712:38;978:7807:86;13712:38:62;;;;:::i;:::-;978:7807:86;;;;;;;:::i;:::-;27692:4:61;978:7807:86;;27454:571:61;;;;;978:7807:86;;27454:571:61;;978:7807:86;27454:571:61;;;978:7807:86;27877:39:61;27454:571;;;978:7807:86;27454:571:61;;;;978:7807:86;27454:571:61;;;978:7807:86;;;27368:675:61;;;;;;;;978:7807:86;27368:675:61;;;:::i;978:7807:86:-;27338:719:61;;;;;;;;;28126:21;27338:719;27314:794;27338:719;978:7807:86;27338:719:61;;;978:7807:86;;;;;27314:794:61;;;;;;:::i;13601:52:62:-;;;;978:7807:86;13601:52:62;;978:7807:86;13601:52:62;;;;;;978:7807:86;13601:52:62;;;:::i;:::-;;;978:7807:86;;;;;;;;;;;;27368:675:61;13601:52:62;;;;;-1:-1:-1;13601:52:62;;978:7807:86;;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;:::i;:::-;978:7807:86;;;;;;1500:6:40;1496:65;;978:7807:86;8604:22:62;978:7807:86;;;;;8604:22:62;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10022:860:62;;8584:1371;978:7807:86;11039:22:62;3051:52:52;;978:7807:86;551:66:50;3051:52:52;11039:22:62;:::i;10022:860::-;-1:-1:-1;;;;;10812:8:62;;;;978:7807:86;10812:59:62;;;;978:7807:86;;10812:59:62;978:7807:86;10812:59:62;;10828:10;978:7807:86;10812:59:62;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;;;;:::i;:::-;10812:59:62;:8;;-1:-1:-1;;;;;10812:8:62;978:7807:86;10812:59:62;;;;;;;978:7807:86;10812:59:62;11039:22;10812:59;;;978:7807:86;10022:860:62;;;;;;;;10812:59;;;;:::i;:::-;;;;978:7807:86;;;;;;;-1:-1:-1;;;;;978:7807:86;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8628:3:62;978:7807:86;8672:19:62;;;;;:::i;978:7807:86:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11519:180:62;;;;978:7807:86;;11519:180:62;;;;;;978:7807:86;11519:180:62;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;978:7807:86;;8876:338:62;;;;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;8876:338:62;;;;;978:7807:86;8876:338:62;;978:7807:86;;8876:338:62;;978:7807:86;8989:4:62;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8876:338:62;;;;;;8628:3;-1:-1:-1;8856:1089:62;;9341:604;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;9614:75:62;;;;978:7807:86;9614:75:62;;978:7807:86;9614:75:62;;978:7807:86;8989:4:62;978:7807:86;;;;9614:75:62;;;;;;;978:7807:86;9614:75:62;;;8856:1089;978:7807:86;;;;9614:100:62;9589:342;;8856:1089;978:7807:86;8856:1089:62;;978:7807:86;8589:13:62;;9589:342;9901:10;:::i;9614:75::-;;;;978:7807:86;9614:75:62;;978:7807:86;9614:75:62;;;;;;978:7807:86;9614:75:62;;;:::i;:::-;;;978:7807:86;;;;;;;9614:75:62;;;;;-1:-1:-1;9614:75:62;;8856:1089;;978:7807:86;8856:1089:62;;;8876:338;;;;:::i;:::-;;;;1496:65:40;1529:21;978:7807:86;1529:21:40;978:7807:86;;1529:21:40;978:7807:86;;;;;;;:::i;:::-;5435:19:62;;;;;;;;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;;:::i;:::-;39329:10:61;978:7807:86;;39265:545:61;;;;;;39375:18;3524:17:62;;978:7807:86;;39265:545:61;;978:7807:86;;39265:545:61;;;978:7807:86;;39265:545:61;;;978:7807:86;39265:545:61;;;978:7807:86;39265:545:61;;;978:7807:86;;;;39265:545:61;;39672:17;978:7807:86;;39265:545:61;;;978:7807:86;;;39265:545:61;;;978:7807:86;;;39179:653:61;;;;;;;;;;;;;;;:::i;978:7807:86:-;;;;5435:19:62;978:7807:86;;;:::i;5435:19:62:-;978:7807:86;-1:-1:-1;;;;;30683:6:61;;;978:7807:86;;;;30683:26:61;978:7807:86;30683:26:61;;978:7807:86;30683:26:61;;978:7807:86;30683:26:61;;978:7807:86;;30683:26:61;978:7807:86;30683:26:61;;;;;;;;;30800:676;978:7807:86;30683:26:61;;978:7807:86;30683:26:61;30669:48;30683:26;;30800:676;30683:26;;;;;978:7807:86;;30669:48:61;:::i;:::-;978:7807:86;;;;;;;:::i;:::-;31132:4:61;978:7807:86;;;30889:569:61;;;;978:7807:86;;30889:569:61;;978:7807:86;;30889:569:61;;978:7807:86;30889:569:61;;;;978:7807:86;30889:569:61;;;;978:7807:86;30889:569:61;;;978:7807:86;;;30800:676:61;;;;;;;;978:7807:86;30800:676:61;;;:::i;978:7807:86:-;30770:720:61;;;;;;;;30746:795;30770:720;978:7807:86;30770:720:61;;;978:7807:86;;;;;30746:795:61;;;;;;:::i;30683:26::-;;;;;;;;;;;;;:::i;:::-;;;;978:7807:86;;8965:524:61;978:7807:86;;8965:524:61;978:7807:86;;;:::i;:::-;8765:10:61;5435:19:62;8765:10:61;;;;;;;;5435:19:62;:::i;:::-;978:7807:86;-1:-1:-1;;;;;978:7807:86;;;;;;;;:::i;:::-;8765:10:61;978:7807:86;;;9054:413:61;;;978:7807:86;;9054:413:61;;978:7807:86;;9054:413:61;;978:7807:86;;9054:413:61;;;978:7807:86;;;9054:413:61;;;978:7807:86;9054:413:61;;;978:7807:86;;;8965:524:61;;;;9054:413;8965:524;;;;;;;:::i;978:7807:86:-;;;;;-1:-1:-1;;978:7807:86;;;;;1083:103:50;;:::i;:::-;1558:46:86;978:7807;;;:::i;:::-;;;1558:46;;;;978:7807;1558:46;;978:7807;1558:46;;;:::i;:::-;;1573:4;;;1558:46;;;;;;;;978:7807;551:66:50;3051:52:52;978:7807:86;1558:46;;;;;978:7807;1558:46;;;;;;:::i;978:7807::-;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;16740:103:61;;978:7807:86;;;;;;;;:::i;:::-;;;;;;;16740:103:61;;;;;;978:7807:86;;16798:10:61;;16740:103;978:7807:86;16740:103:61;;;:::i;:::-;978:7807:86;;16709:148:61;;;;978:7807:86;16709:148:61;;;978:7807:86;16709:148:61;;978:7807:86;;;;;;:::i;:::-;16709:148:61;:6;;-1:-1:-1;;;;;16709:6:61;978:7807:86;16709:148:61;;;;;;16685:207;16709:148;978:7807:86;16709:148:61;;;978:7807:86;;;;;;16685:207:61;;;;;;:::i;16709:148::-;;;;;;978:7807:86;16709:148:61;;;;;;:::i;:::-;;;;978:7807:86;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;436:67:68;;:::i;:::-;-1:-1:-1;;;;;3087:6:61;;978:7807:86;3118:11:61;;;;;;;:::i;:::-;3143:13;;;;:::i;:::-;3170;978:7807:86;3170:13:61;;;;;;;:::i;:::-;3197:21;;;;;;;;:::i;:::-;3268:15;;;;;;;;;;:::i;:::-;978:7807:86;;;;;3087:206:61;;;978:7807:86;3087:206:61;;978:7807:86;;;;;;;3087:206:61;;978:7807:86;;;;;;3268:15:61;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;3118:11:61;978:7807:86;;;;-1:-1:-1;;978:7807:86;;;;;;;;;;;:::i;:::-;3232:22:61;;;;978:7807:86;;;;;;;;;;;;;;:::i;:::-;3087:206:61;;978:7807:86;3087:206:61;;;;;;;;978:7807:86;3087:206:61;;;978:7807:86;-1:-1:-1;3309:13:61;;978:7807:86;3611:16:61;;;;978:7807:86;3350:3:61;3328:13;;;;:::i;:::-;3324:24;;;;;;;3384:16;;:13;;;;;:::i;:::-;:16;;:::i;:::-;;:::i;:::-;3433:24;3197:21;3433;3197;;;3433;;:::i;:24::-;978:7807:86;3476:13:61;;;3472:60;;3611:16;;;:::i;:::-;:52;;;3350:3;3607:836;;;3687:21;;;:32;3683:103;;3804:5;978:7807:86;;;3804:34:61;;;;;;978:7807:86;;;3804:34:61;;978:7807:86;3804:34:61;978:7807:86;3804:34:61;;;;;;;;;3919:41;3804:34;3118:11;3804:34;;;;;3607:836;978:7807:86;;;;;3919:41:61;;;;;;978:7807:86;3919:41:61;;978:7807:86;3919:41:61;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;3919:41:61;;;;;;;;;;3978:30;3919:41;3118:11;3919:41;;;978:7807:86;;;3978:30:61;;;;;978:7807:86;3978:30:61;;978:7807:86;3978:30:61;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;3978:30:61;;;978:7807:86;3978:30:61;;;;;;;;;3607:836;;978:7807:86;3607:836:61;;978:7807:86;3309:13:61;;3978:30;3118:11;3978:30;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;3978:30:61;;;;;;;;3804:34;;;;:::i;:::-;;;;3607:836;4289:8;;978:7807:86;4311:13:61;;;;:::i;:::-;4343:20;;;;:::i;:::-;4289:91;;;;;978:7807:86;;;4289:91:61;;-1:-1:-1;;;;;978:7807:86;;;;4289:91:61;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;-1:-1:-1;;4289:91:61;;;;;;;4398:30;4289:91;3118:11;4289:91;;;978:7807:86;;;4398:30:61;;;;;978:7807:86;4398:30:61;;978:7807:86;4398:30:61;;978:7807:86;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;4398:30:61;;;978:7807:86;4398:30:61;;;;;;;;;3607:836;;978:7807:86;3607:836:61;;;4398:30;3118:11;4398:30;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;4398:30:61;;;;;;;;4289:91;;;;:::i;:::-;;;;3611:52;3657:5;;;978:7807:86;;;;3631:32:61;3611:52;;3472:60;3509:8;;978:7807:86;3509:8:61;;;3324:24;3118:11;3324:24;4502:13;;3324:24;4502:13;:::i;:::-;978:7807:86;551:66:50;3051:52:52;978:7807:86;;;;;;3087:206:61;;;;3118:11;3087:206;;3118:11;3087:206;;;;;;3118:11;3087:206;;;:::i;:::-;;;978:7807:86;;;;;3087:206:61;;;;;;;-1:-1:-1;3087:206:61;;978:7807:86;;;;;;;;3118:11:61;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;2079:509:61;978:7807:86;;;;;2079:509:61;978:7807:86;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;978:7807:86;;;;;;;;:::i;:::-;2225:10:61;978:7807:86;;;2166:400:61;;;978:7807:86;;2166:400:61;;978:7807:86;;2166:400:61;;978:7807:86;;;;2166:400:61;;978:7807:86;;;;2166:400:61;;978:7807:86;;2166:400:61;;978:7807:86;;;2079:509:61;;;;;;;;978:7807:86;2079:509:61;;;:::i;978:7807:86:-;2044:562:61;:6;;978:7807:86;2044:562:61;;;;;;;978:7807:86;2044:562:61;;;978:7807:86;;;;;;2016:631:61;;978:7807:86;;;;2016:631:61;;978:7807:86;;;;;;;2044:562:61;;;;;;978:7807:86;2044:562:61;;;;;;:::i;:::-;;;;978:7807:86;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;978:7807:86;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;978:7807:86;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;978:7807:86;;;;;;:::o;:::-;;;-1:-1:-1;;;;;978:7807:86;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;3524:17:62;978:7807:86;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;7075:13;978:7807;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;978:7807:86;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;978:7807:86;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;978:7807:86;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;978:7807:86;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;978:7807:86;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;-1:-1:-1;;978:7807:86;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;978:7807:86;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;978:7807:86;;;;;;;;-1:-1:-1;978:7807:86;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;978:7807:86;;-1:-1:-1;978:7807:86;;;;;;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;-1:-1:-1;978:7807:86;;;;;-1:-1:-1;978:7807:86;;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;978:7807:86;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;3524:17:62:-;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;3524:17:62;;;978:7807:86;3524:17:62;;;978:7807:86;3524:17:62;;;;;;;;;;:::i;:::-;;;;;;978:7807:86;3524:17:62;;;978:7807:86;3524:17:62;;;;;978:7807:86;3524:17:62;;;978:7807:86;3524:17:62;;;;978:7807:86;3524:17:62;;;978:7807:86;3524:17:62;;;;;;;978:7807:86;3524:17:62;;;;;;;978:7807:86;3524:17:62;;;;;;;;;978:7807:86;3524:17:62;;;;;978:7807:86;;;3524:17:62;;;978:7807:86;3524:17:62;;;;;;;;;;;:::i;978:7807:86:-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;978:7807:86;;;;:::o;:::-;;;:::o;4648:340::-;978:7807;;4763:41;4740:65;;;;;;;4718:6;-1:-1:-1;;;;;978:7807:86;4740:65;978:7807;4740:65;:::i;:::-;4718:88;;;;;978:7807;4740:65;978:7807;;;;;;4718:88;;;;;;978:7807;4718:88;;4740:65;;4718:88;;978:7807;4740:65;978:7807;;;;:::i;:::-;4718:88;;;;;;;;4648:340;-1:-1:-1;4714:268:86;;4921:38;4861:121;;:::i;:::-;4921:38;:::i;:::-;4740:65;978:7807;;;4910:61;;978:7807;;;;4740:65;4910:61;978:7807;4903:68;:::o;4714:268::-;978:7807;;4821:28;;;978:7807;4740:65;4821:28;;978:7807;;;;;;;;;;;;;4143:45;4718:88;;;;:::i;:::-;4740:65;4718:88;;978:7807;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;978:7807:86;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;3754:326::-;978:7807;;3862:34;3839:58;;;;;;;3817:6;-1:-1:-1;;;;;978:7807:86;3839:58;978:7807;3839:58;:::i;978:7807::-;;;;;;;:::i;:::-;;;;-1:-1:-1;978:7807:86;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;-1:-1:-1;978:7807:86;;;;;;:::o;4201:346::-;978:7807;;4319:44;4296:68;;;;;;;4274:6;-1:-1:-1;;;;;978:7807:86;4296:68;978:7807;4296:68;:::i;5584:344::-;978:7807;;5701:43;5678:67;;;;;;;5656:6;-1:-1:-1;;;;;978:7807:86;5678:67;978:7807;5678:67;:::i;5094:338::-;978:7807;;5208:40;5185:64;;;;;;;5163:6;-1:-1:-1;;;;;978:7807:86;5185:64;978:7807;5185:64;:::i;5703:590:62:-;;;5771:23;5783:10;5771:23;:::i;:::-;16826:26;;2806:53:52;;;5897:100:62;;6090:4;3051:52:52;6090:4:62;3051:52:52;;978:7807:86;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;978:7807:86;;;:::i;:::-;;-1:-1:-1;978:7807:86;;;;;;11122:13:62;;-1:-1:-1;11137:15:62;;;;;;6105:1;;;;;-1:-1:-1;6279:6:62;6105:1;3051:52:52;;16677:12:62;2295:53:52;;6887:82:62;;;11117:132;6279:6;;:::i;:::-;5703:590::o;6887:82::-;-1:-1:-1;3051:52:52;;6887:82:62;;;11154:3;11230:7;4297:55:99;-1:-1:-1;11230:7:62;978:7807:86;11230:7:62;;;;;;:::i;978:7807:86:-;;4255:25:99;;;;11223:4:62;4255:25:99;;;;:::i;:::-;11223:4:62;;4297:55:99;:::i;:::-;11173:65:62;;;;:::i;:::-;;;;;;:::i;:::-;;978:7807:86;11122:13:62;;978:7807:86;;;;;;;;;;;;;5897:100:62;5956:30;-1:-1:-1;5956:30:62;;-1:-1:-1;5956:30:62;978:7807:86;;;;;;;;;;;;;;;:::i;2669:1079::-;;;2965:579;2669:1079;2965:579;2669:1079;978:7807;2669:1079;;-1:-1:-1;;;;;2926:6:86;;;;978:7807;3524:17:62;978:7807:86;;;;;;;:::i;:::-;3103:10;978:7807;;-1:-1:-1;3043:483:86;;;3524:17:62;978:7807:86;;3043:483;;978:7807;;3043:483;;;978:7807;;3043:483;;;978:7807;3043:483;;;978:7807;-1:-1:-1;3043:483:86;;;978:7807;;3043:483;;;978:7807;-1:-1:-1;3043:483:86;;;978:7807;;;;:::i;:::-;3043:483;;;978:7807;;;2965:579;;;;3043:483;2965:579;;;;;;;:::i;:::-;;-1:-1:-1;;2965:579:86;;;;;;:::i;1192:349:50:-;551:66;2295:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;509:165:68:-;-1:-1:-1;;;;;586:6:68;978:7807:86;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;978:7807:86;;616:41:68;;7223:218:111;-1:-1:-1;;;;;7303:25:111;;;;7299:105;;978:7807:86;7223:218:111;:::o;7299:105::-;7351:42;;;7382:3;7351:42;978:7807:86;;;;7351:42:111;;12478:584:62;12714:21;12749:11;;12745:48;;16826:26;2295:53:52;12943:69:62;;-1:-1:-1;;;;;13048:6:62;978:7807:86;;13048:6:62;:::i;12943:69::-;12995:7;;:::o;6299:351::-;;978:7807:86;16677:12:62;;-1:-1:-1;;;;;2295:53:52;;978:7807:86;6524:25:62;6520:124;;6299:351;;:::o;6520:124::-;3051:52:52;;;;;6629:4:62;6520:124;6299:351::o;978:7807:86:-;;;;;;;;;;:::o;13342:415:62:-;;978:7807:86;13342:415:62;;;;-1:-1:-1;;;;;978:7807:86;;;;;;;;13601:52:62;;;;;978:7807:86;13601:52:62;;978:7807:86;13601:52:62;;;978:7807:86;;;;;;13601:6:62;978:7807:86;13601:52:62;;;;;;;-1:-1:-1;;;13601:52:62;;;13342:415;13575:78;;13712:38;13678:24;13575:78;13678:24;;:::i;:::-;13712:38;;;:::i;:::-;978:7807:86;13342:415:62:o;13601:52::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;;;;;;;13601:52:62;;;;;;;;;;;978:7807:86;;;-1:-1:-1;978:7807:86;;;;;598:648:42;1463:1;978:7807:86;;1443:21:42;1439:82;;787:15;978:7807:86;1530:151:42;;;;978:7807:86;770:32:42;766:185;;978:7807:86;1209:30:42;1530:151;1209:30;978:7807:86;;-1:-1:-1;;1013:179:42;;1463:1;1013:179;;;1209:30;;;;;;:::i;1439:82::-;1487:23;-1:-1:-1;1487:23:42;1463:1;-1:-1:-1;1487:23:42;23641:818:61;23982:15;;;978:7807:86;23964:15:61;:33;23960:85;;-1:-1:-1;;;;;24162:11:61;;;978:7807:86;;;;;;;;24197:11:61;;;;;;;:::i;:::-;24235:14;;;;;;;;;;;;:::i;:::-;24277:15;;;;;;:::i;:::-;24412;;;;;;;;:::i;:::-;978:7807:86;;;;;;;;:::i;:::-;3524:17:62;;24122:320:61;24162:11;24122:320;;978:7807:86;;;;24122:320:61;;;;978:7807:86;;;;24122:320:61;;;;978:7807:86;;;;24277:15:61;24122:320;;24326:18;;;;978:7807:86;;;24326:18:61;24122:320;;24372:12;;;978:7807:86;;;;;;;;:::i;:::-;24122:320:61;24372:12;24122:320;;978:7807:86;;;;;;24097:355:61;;;;;;;978:7807:86;24097:355:61;;;;;24162:11;978:7807:86;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23982:15:61;978:7807:86;;;;;;;;:::i;:::-;24097:355:61;:6;;978:7807:86;24097:355:61;;-1:-1:-1;24097:355:61;;;;;;;-1:-1:-1;;;;;24097:355:61;;;23641:818;24055:397;;;;;23641:818;:::o;24097:355::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;978:7807:86;;;;;;24162:11:61;978:7807:86;;;;;;;;24097:355:61;;;;;;;;;;23960:85;24020:14;-1:-1:-1;24020:14:61;;-1:-1:-1;24020:14:61;14641:680:62;14768:1;;14641:680;14755:14;;14751:51;;14885:30;;;14641:680;14881:434;;;-1:-1:-1;;;;;14974:6:62;;;978:7807:86;14974:49:62;;;;;978:7807:86;;;14974:49:62;;-1:-1:-1;;;;;978:7807:86;;;;14974:49:62;;;978:7807:86;15006:4:62;978:7807:86;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;-1:-1:-1;;14974:49:62;;;;;;;;14881:434;15074:5;;;;978:7807:86;15074:25:62;;;;;978:7807:86;;;;;15074:25:62;;;;978:7807:86;15074:25:62;;;14974:49;15074:25;;978:7807:86;15074:25:62;;;;;;;;14881:434;978:7807:86;15174:9:62;978:7807:86;;;;15174:9:62;:::i;15074:25::-;;;;;:::i;:::-;978:7807:86;;15074:25:62;;;978:7807:86;;;;15074:25:62;978:7807:86;;;;;;;;;15074:25:62;978:7807:86;;;14974:49:62;;;;;;:::i;:::-;14768:1;14974:49;;;;14881:434;15262:6;;;;-1:-1:-1;;;;;15262:6:62;978:7807:86;15262:42:62;;;;;978:7807:86;;;15262:42:62;;-1:-1:-1;;;;;978:7807:86;;;15262:42:62;;;978:7807:86;;;;;;;;;;;;;-1:-1:-1;;978:7807:86;;;;;;-1:-1:-1;;15262:42:62;;;;;;;;14881:434;14641:680::o;15262:42::-;;;;:::i;14885:30::-;978:7807:86;-1:-1:-1;;;;;14910:5:62;;978:7807:86;;;;14898:17:62;14885:30;;14751:51;14785:7;;;;;;:::o;1531:331:99:-;1616:21;;:30;1612:109;;1750:33;978:7807:86;;;-1:-1:-1;;;;;978:7807:86;;;1750:33:99;;;;:::i;:::-;;1797:8;1793:63;;1531:331::o;1793:63::-;1828:17;1750:33;1828:17;;1750:33;1828:17;1612:109;1669:41;;;1624:4;1669:41;978:7807:86;;1669:41:99;;1741:504:42;978:7807:86;;1881:21:42;:17;;2008:160;;;;;;4625:582:99;;4797:8;;-1:-1:-1;978:7807:86;;5874:21:99;:17;;6046:142;;;;;;4793:408;978:7807:86;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;978:7807:86;5121:24:99;978:7807:86;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;"},"methodIdentifiers":{"addLiquidityCustom(address,uint256[],uint256,bool,bytes)":"0ca078ec","addLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"5b343791","addLiquidityProportional(address,uint256[],uint256,bool,bytes)":"724dba33","addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)":"72657d17","addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)":"c08bc851","donate(address,uint256[],bool,bytes)":"bf6ee3fd","getSender()":"5e01eb5a","getSingleInputArrayAndTokenIndex(address,address,uint256)":"e178073e","initialize(address,address[],uint256[],uint256,bool,bytes)":"026b3d95","initializeHook((address,address,address[],uint256[],uint256,bool,bytes))":"086fad66","manualAddAndRemoveLiquidity((address,address,uint256[],uint256))":"68d5e16a","manualAddAndRemoveLiquidityHook((address,address,uint256[],uint256))":"3a1b05de","manualReentrancyAddLiquidityHook()":"0c3b846f","manualReentrancyInitializeHook()":"4b59d17c","manualReentrancyQuerySwapHook()":"64c90707","manualReentrancyRemoveLiquidityHook()":"ad6d59f3","manualReentrancyRemoveLiquidityRecoveryHook()":"beb91feb","manualReentrancySwapSingleTokenHook()":"c3ec0efc","multicall(bytes[])":"ac9650d8","permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])":"19c6989f","queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)":"452db952","queryAddLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"efd85f14","queryAddLiquidityProportional(address,uint256,address,bytes)":"9de90518","queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)":"1d56798d","queryAddLiquidityUnbalanced(address,uint256[],address,bytes)":"da001f7d","queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)":"c330c7be","queryRemoveLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"b24bd571","queryRemoveLiquidityProportional(address,uint256,address,bytes)":"0f710888","queryRemoveLiquidityRecovery(address,uint256)":"b037ed36","queryRemoveLiquidityRecoveryHook(address,address,uint256)":"5f9815ff","queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)":"23b39241","queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)":"53d0bb98","queryRevertErrorCode()":"7ae30960","queryRevertErrorCodeHook()":"45d132fe","queryRevertLegacy()":"339f3838","queryRevertLegacyHook()":"22717db2","queryRevertNoReason()":"90aa9f76","queryRevertNoReasonHook()":"b3b0a7a7","queryRevertPanic()":"aaf51ea3","queryRevertPanicHook()":"d3a5152a","querySpoof()":"4aeecca9","querySpoofHook()":"58307e44","querySwapHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))":"be5ae841","querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)":"3ebc54e5","querySwapSingleTokenExactInAndRevert(address,address,address,uint256,bytes)":"b29a62a7","querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)":"175d4408","removeLiquidityCustom(address,uint256,uint256[],bool,bytes)":"82bf2b24","removeLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))":"7b03c7ba","removeLiquidityProportional(address,uint256,uint256[],bool,bytes)":"51682750","removeLiquidityRecovery(address,uint256,uint256[])":"08c04793","removeLiquidityRecoveryHook(address,address,uint256,uint256[])":"82cd54fb","removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)":"ecb2182c","removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)":"e7326def","swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)":"750283bc","swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)":"94e86ef8","swapSingleTokenHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))":"68a24fe0","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IWETH\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EthTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MockErrorCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"Result\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapDeadline\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.AddLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"addLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGiven\",\"type\":\"uint256\"}],\"name\":\"getSingleInputArrayAndTokenIndex\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsGiven\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouter.InitializeHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"initializeHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct RouterMock.ManualAddRemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"manualAddAndRemoveLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct RouterMock.ManualAddRemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"manualAddAndRemoveLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancyAddLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancyInitializeHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancyQuerySwapHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancyRemoveLiquidityHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancyRemoveLiquidityRecoveryHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualReentrancySwapSingleTokenHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouterCommon.PermitApproval[]\",\"name\":\"permitBatch\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"permitSignatures\",\"type\":\"bytes[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permit2Batch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"permit2Signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"multicallData\",\"type\":\"bytes[]\"}],\"name\":\"permitBatchAndCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.AddLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"queryAddLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryAddLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.RemoveLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"queryRemoveLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"}],\"name\":\"queryRemoveLiquidityRecoveryHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryRemoveLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertErrorCode\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertErrorCodeHook\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertLegacy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertLegacyHook\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertNoReason\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertNoReasonHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertPanic\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queryRevertPanicHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"querySpoof\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"querySpoofHook\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGiven\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouter.SwapSingleTokenHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"querySwapHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapSingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapSingleTokenExactInAndRevert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"querySwapSingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquidityCustom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouterCommon.RemoveLiquidityHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidityHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquidityProportional\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecoveryHook\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"removeLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapSingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"swapSingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGiven\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"wethIsEth\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IRouter.SwapSingleTokenHookParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"swapSingleTokenHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"Result(bytes)\":[{\"params\":{\"result\":\"The result of the query operation\"}}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}]},\"kind\":\"dev\",\"methods\":{\"addLiquidityCustom(address,uint256[],uint256,bool,bytes)\":{\"details\":\"The given maximum and minimum amounts given may be interpreted as exact depending on the pool type. In any case the caller can expect them to be hard boundaries for the request.\",\"params\":{\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Actual amounts of tokens added, sorted in token registration order\",\"bptAmountOut\":\"Actual amount of pool tokens received\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"addLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Add liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual amounts in required for the join\",\"bptAmountOut\":\"BPT amount minted in exchange for the input tokens\",\"returnData\":\"Arbitrary data with encoded response from the pool\"}},\"addLiquidityProportional(address,uint256[],uint256,bool,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsIn\":\"Actual amounts of tokens added, sorted in token registration order\"}},\"addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"maxAmountIn\":\"Maximum amount of tokens to be added\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token used to add liquidity\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountIn\":\"Actual amount of tokens added\"}},\"addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to add liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountOut\":\"Actual amount of pool tokens received\"}},\"donate(address,uint256[],bool,bytes)\":{\"details\":\"To support donation, the pool config `enableDonation` flag must be set to true.\",\"params\":{\"amountsIn\":\"Amounts of tokens to be donated, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to donate liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"}},\"getSender()\":{\"returns\":{\"_0\":\"The address of the sender\"}},\"initialize(address,address[],uint256[],uint256,bool,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Minimum amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokens\":\"Pool tokens, in token registration order\",\"userData\":\"Additional (optional) data sent with the request to add initial liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountOut\":\"Actual amount of pool tokens minted in exchange for initial liquidity\"}},\"initializeHook((address,address,address[],uint256[],uint256,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Initialization parameters (see IRouter for struct definition)\"},\"returns\":{\"bptAmountOut\":\"BPT amount minted in exchange for the input tokens\"}},\"multicall(bytes[])\":{\"params\":{\"data\":\"Encoded function calls to be executed in the batch.\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed.\"}},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"params\":{\"multicallData\":\"An array of bytes arrays, each representing an encoded function call on this contract\",\"permit2Batch\":\"A batch of permit2 approvals\",\"permit2Signature\":\"A permit2 signature for the batch approval\",\"permitBatch\":\"An array of `PermitApproval` structs, each representing an ERC20 permit request\",\"permitSignatures\":\"An array of bytes, corresponding to the permit request signature in `permitBatch`\"},\"returns\":{\"results\":\"Array of bytes arrays, each representing the return data from each function call executed\"}},\"queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)\":{\"params\":{\"maxAmountsIn\":\"Maximum amounts of tokens to be added, sorted in token registration order\",\"minBptAmountOut\":\"Expected minimum amount of pool tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsIn\":\"Expected amounts of tokens to add, sorted in token registration order\",\"bptAmountOut\":\"Expected amount of pool tokens to receive\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryAddLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Add liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual token amounts in required as inputs\",\"bptAmountOut\":\"Expected pool tokens to be minted\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryAddLiquidityProportional(address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Exact amount of pool tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsIn\":\"Expected amounts of tokens to add, sorted in token registration order\"}},\"queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountOut\":\"Expected exact amount of pool tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token used to add liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountIn\":\"Expected amount of tokens to add\"}},\"queryAddLiquidityUnbalanced(address,uint256[],address,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of tokens to be added, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"bptAmountOut\":\"Expected amount of pool tokens to receive\"}},\"queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)\":{\"params\":{\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"minAmountsOut\":\"Expected minimum amounts of tokens to receive, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\",\"bptAmountIn\":\"Expected amount of pool tokens to burn\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryRemoveLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Remove liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsOut\":\"Expected token amounts to be transferred to the sender\",\"bptAmountIn\":\"Pool token amount to be burned for the output tokens\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"queryRemoveLiquidityProportional(address,uint256,address,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\"}},\"queryRemoveLiquidityRecovery(address,uint256)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\"},\"returns\":{\"amountsOut\":\"Expected amounts of tokens to receive, sorted in token registration order\"}},\"queryRemoveLiquidityRecoveryHook(address,address,uint256)\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"exactBptAmountIn\":\"Pool token amount to be burned for the output tokens\",\"pool\":\"The liquidity pool\",\"sender\":\"Account originating the remove liquidity operation\"},\"returns\":{\"amountsOut\":\"Expected token amounts to be transferred to the sender\"}},\"queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided for the query\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountOut\":\"Expected amount of tokens to receive\"}},\"queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountOut\":\"Expected exact amount of tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"bptAmountIn\":\"Expected amount of pool tokens to burn\"}},\"querySwapHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"details\":\"Can only be called by the Vault. Also handles native ETH.\",\"params\":{\"params\":\"Swap parameters (see IRouter for struct definition)\"},\"returns\":{\"_0\":\"amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)\"}},\"querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountIn\":\"Exact amounts of input tokens to send\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountCalculated\":\"Calculated amount of output tokens to be received in exchange for the given input tokens\"}},\"querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)\":{\"params\":{\"exactAmountOut\":\"Exact amounts of input tokens to receive\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"The sender passed to the operation. It can influence results (e.g., with user-dependent hooks)\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the query request\"},\"returns\":{\"amountCalculated\":\"Calculated amount of input tokens to be sent in exchange for the requested output tokens\"}},\"removeLiquidityCustom(address,uint256,uint256[],bool,bytes)\":{\"details\":\"The given maximum and minimum amounts given may be interpreted as exact depending on the pool type. In any case the caller can expect them to be hard boundaries for the request.\",\"params\":{\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\",\"bptAmountIn\":\"Actual amount of pool tokens burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"removeLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"details\":\"Can only be called by the Vault.\",\"params\":{\"params\":\"Remove liquidity parameters (see IRouter for struct definition)\"},\"returns\":{\"amountsOut\":\"Actual token amounts transferred in exchange for the BPT\",\"bptAmountIn\":\"BPT amount burned for the output tokens\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"removeLiquidityProportional(address,uint256,uint256[],bool,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\"}},\"removeLiquidityRecovery(address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\"},\"returns\":{\"amountsOut\":\"Actual amounts of tokens received, sorted in token registration order\"}},\"removeLiquidityRecoveryHook(address,address,uint256,uint256[])\":{\"details\":\"Can only be called by the Vault, when the pool is in Recovery Mode.\",\"params\":{\"exactBptAmountIn\":\"BPT amount burned for the output tokens\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the liquidity pool\",\"sender\":\"Account originating the remove liquidity operation\"},\"returns\":{\"amountsOut\":\"Actual token amounts transferred in exchange for the BPT\"}},\"removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)\":{\"params\":{\"exactBptAmountIn\":\"Exact amount of pool tokens provided\",\"minAmountOut\":\"Minimum amount of tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"amountOut\":\"Actual amount of tokens received\"}},\"removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)\":{\"params\":{\"exactAmountOut\":\"Exact amount of tokens to be received\",\"maxBptAmountIn\":\"Maximum amount of pool tokens provided\",\"pool\":\"Address of the liquidity pool\",\"tokenOut\":\"Token used to remove liquidity\",\"userData\":\"Additional (optional) data sent with the request to remove liquidity\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"bptAmountIn\":\"Actual amount of pool tokens burned\"}},\"swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"exactAmountIn\":\"Exact amounts of input tokens to send\",\"minAmountOut\":\"Minimum amount of tokens to be received\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the swap request\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"_0\":\"Calculated amount of output tokens to be received in exchange for the given input tokens\"}},\"swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"params\":{\"deadline\":\"Deadline for the swap, after which it will revert\",\"exactAmountOut\":\"Exact amounts of input tokens to receive\",\"maxAmountIn\":\"Maximum amount of tokens to be sent\",\"pool\":\"Address of the liquidity pool\",\"tokenIn\":\"Token to be swapped from\",\"tokenOut\":\"Token to be swapped to\",\"userData\":\"Additional (optional) data sent with the swap request\",\"wethIsEth\":\"If true, incoming ETH will be wrapped to WETH and outgoing WETH will be unwrapped to ETH\"},\"returns\":{\"_0\":\"Calculated amount of input tokens to be sent in exchange for the requested output tokens\"}},\"swapSingleTokenHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"details\":\"Can only be called by the Vault. Also handles native ETH.\",\"params\":{\"params\":\"Swap parameters (see IRouter for struct definition)\"},\"returns\":{\"_0\":\"amountCalculated Token amount calculated by the pool math (e.g., amountOut for a exact in swap)\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"EthTransfer()\":[{\"notice\":\"Incoming ETH transfer from an address that is not WETH.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InsufficientEth()\":[{\"notice\":\"The amount of ETH paid is insufficient to complete this operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"Result(bytes)\":[{\"notice\":\"On success of the primary operation in a `quoteAndRevert`, this error is thrown with the return data.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapDeadline()\":[{\"notice\":\"The swap transaction was not validated before the specified deadline timestamp.\"}]},\"kind\":\"user\",\"methods\":{\"addLiquidityCustom(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with a custom request.\"},\"addLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for adding liquidity.\"},\"addLiquidityProportional(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with proportional token amounts, receiving an exact amount of pool tokens.\"},\"addLiquiditySingleTokenExactOut(address,address,uint256,uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool in a single token, receiving an exact amount of pool tokens.\"},\"addLiquidityUnbalanced(address,uint256[],uint256,bool,bytes)\":{\"notice\":\"Adds liquidity to a pool with arbitrary token amounts.\"},\"donate(address,uint256[],bool,bytes)\":{\"notice\":\"Adds liquidity to a pool by donating the amounts in (no BPT out).\"},\"getSender()\":{\"notice\":\"Get the first sender which initialized the call to Router.\"},\"initialize(address,address[],uint256[],uint256,bool,bytes)\":{\"notice\":\"Initialize a liquidity pool.\"},\"initializeHook((address,address,address[],uint256[],uint256,bool,bytes))\":{\"notice\":\"Hook for initialization.\"},\"multicall(bytes[])\":{\"notice\":\"Executes a batch of function calls on this contract.\"},\"permitBatchAndCall((address,address,address,uint256,uint256,uint256)[],bytes[],((address,uint160,uint48,uint48)[],address,uint256),bytes,bytes[])\":{\"notice\":\"Permits multiple allowances and executes a batch of function calls on this contract.\"},\"queryAddLiquidityCustom(address,uint256[],uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquidityCustom` operation without actually executing it.\"},\"queryAddLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for add liquidity queries.\"},\"queryAddLiquidityProportional(address,uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquidityProportional` operation without actually executing it.\"},\"queryAddLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"notice\":\"Queries an `addLiquiditySingleTokenExactOut` operation without actually executing it.\"},\"queryAddLiquidityUnbalanced(address,uint256[],address,bytes)\":{\"notice\":\"Queries an `addLiquidityUnbalanced` operation without actually executing it.\"},\"queryRemoveLiquidityCustom(address,uint256,uint256[],address,bytes)\":{\"notice\":\"Queries a `removeLiquidityCustom` operation without actually executing it.\"},\"queryRemoveLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for remove liquidity queries.\"},\"queryRemoveLiquidityProportional(address,uint256,address,bytes)\":{\"notice\":\"Queries a `removeLiquidityProportional` operation without actually executing it.\"},\"queryRemoveLiquidityRecovery(address,uint256)\":{\"notice\":\"Queries a `removeLiquidityRecovery` operation without actually executing it.\"},\"queryRemoveLiquidityRecoveryHook(address,address,uint256)\":{\"notice\":\"Hook for remove liquidity queries.\"},\"queryRemoveLiquiditySingleTokenExactIn(address,uint256,address,address,bytes)\":{\"notice\":\"Queries a `removeLiquiditySingleTokenExactIn` operation without actually executing it.\"},\"queryRemoveLiquiditySingleTokenExactOut(address,address,uint256,address,bytes)\":{\"notice\":\"Queries a `removeLiquiditySingleTokenExactOut` operation without actually executing it.\"},\"querySwapHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"notice\":\"Hook for swap queries.\"},\"querySwapSingleTokenExactIn(address,address,address,uint256,address,bytes)\":{\"notice\":\"Queries a swap operation specifying an exact input token amount without actually executing it.\"},\"querySwapSingleTokenExactOut(address,address,address,uint256,address,bytes)\":{\"notice\":\"Queries a swap operation specifying an exact output token amount without actually executing it.\"},\"removeLiquidityCustom(address,uint256,uint256[],bool,bytes)\":{\"notice\":\"Removes liquidity from a pool with a custom request.\"},\"removeLiquidityHook((address,address,uint256[],uint256,uint8,bool,bytes))\":{\"notice\":\"Hook for removing liquidity.\"},\"removeLiquidityProportional(address,uint256,uint256[],bool,bytes)\":{\"notice\":\"Removes liquidity with proportional token amounts from a pool, burning an exact pool token amount.\"},\"removeLiquidityRecovery(address,uint256,uint256[])\":{\"notice\":\"Removes liquidity proportionally, burning an exact pool token amount. Only available in Recovery Mode.\"},\"removeLiquidityRecoveryHook(address,address,uint256,uint256[])\":{\"notice\":\"Hook for removing liquidity in Recovery Mode.\"},\"removeLiquiditySingleTokenExactIn(address,uint256,address,uint256,bool,bytes)\":{\"notice\":\"Removes liquidity from a pool via a single token, burning an exact pool token amount.\"},\"removeLiquiditySingleTokenExactOut(address,uint256,address,uint256,bool,bytes)\":{\"notice\":\"Removes liquidity from a pool via a single token, specifying the exact amount of tokens to receive.\"},\"swapSingleTokenExactIn(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation specifying an exact input token amount.\"},\"swapSingleTokenExactOut(address,address,address,uint256,uint256,uint256,bool,bytes)\":{\"notice\":\"Executes a swap operation specifying an exact output token amount.\"},\"swapSingleTokenHook((address,uint8,address,address,address,uint256,uint256,uint256,bool,bytes))\":{\"notice\":\"Hook for swaps.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/RouterMock.sol\":\"RouterMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x75d5964b2f92dba9b9254e0052de28a9378e6759b1b28ccbb51db0bc80024176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ec9c862929ccff2be994d0296c0a4de3ddc19bb5a7aae3d4df0887dc7b29c8e\",\"dweb:/ipfs/QmSNr2fkNM2VyAo3B1DG1cuRh41t4A6mJZqeUu6vvYb97G\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouter.sol\":{\"keccak256\":\"0x39a5cd3ee5c0bab644f068ad8ba617a0cf71a91610693b1c93c9536464151ee3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6a5f61af5cda44d8ef95e610c0b418f2cfb984e9c47a58fb1fa8c8bc949def75\",\"dweb:/ipfs/Qmby1D2D5Ym44jgBTTM8eTGnmNGCCKrb8ujpkhVPE6C6Cr\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IRouterCommon.sol\":{\"keccak256\":\"0xe8fcc05f5c71f60db8e056f798edb99c0a30118124742a9594f8d6ade6d20d80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7bf553873c28c8fd28c9a47f789cd1adedc5832bdb6d9a16a99524f18795a5e3\",\"dweb:/ipfs/QmPZHPv5W4JEbP7ByYtxMJbNXG1tm4QCLninJAHZhmRgzq\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/Router.sol\":{\"keccak256\":\"0x3acd5ac0dbf66746d6c9212f602ed27854b2a7184e9be4ca5ca7cb59d216bf80\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3cdf174eb459eac070bcbea3b77abc492f92b2ad732787f2a3198db2c1f827be\",\"dweb:/ipfs/QmTyhZUkKSSaugv6Z7qaehyfpgjMNx2rtmeEK69ymC5KJ4\"]},\"@balancer-labs/v3-vault/contracts/RouterCommon.sol\":{\"keccak256\":\"0x9a800edef90bf11dca4e9f8dbd20bfe7d44db57846f3375834175ba1059b8a5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1f3a904030eac88451e9430451b0277bb38d03ba80ca345ea711bdc41b65b22\",\"dweb:/ipfs/QmWMLpWka1mEfRCCCiiYVEPBTrys5Zn8oE2cUb6JW7qrMa\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/test/RouterMock.sol\":{\"keccak256\":\"0xe00906d83a5b5cdee1e8da4bbeb80d632179f9ae70eed1a4f927d126f117e206\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://16f02931798e5974c3bc766cfd7fde340019826a9f12443e1192b0e75ceadb5f\",\"dweb:/ipfs/QmUDd7D7JbGfnmrCRfnSqWqMU7JaZycWP3iTpRB1xNx99y\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol":{"VaultAdminMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"mainVault","type":"address"},{"internalType":"uint32","name":"pauseWindowDuration","type":"uint32"},{"internalType":"uint32","name":"bufferPeriodDuration","type":"uint32"},{"internalType":"uint256","name":"minTradeAmount","type":"uint256"},{"internalType":"uint256","name":"minWrapAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BalanceOverflow","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"CodecOverflow","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotStaticCall","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"addLiquidityToBuffer","outputs":[{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"uint256","name":"wrappedAmount","type":"uint256"}],"name":"addLiquidityToBufferUnbalancedForTests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areBuffersPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"collectAggregateFees","outputs":[{"internalType":"uint256[]","name":"totalSwapFees","type":"uint256[]"},{"internalType":"uint256[]","name":"totalYieldFees","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableQueryPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"enableRecoveryMode","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":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferAsset","outputs":[{"internalType":"address","name":"underlyingToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"token","type":"address"}],"name":"getBufferBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getBufferOwnerShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBufferPeriodEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"token","type":"address"}],"name":"getBufferTotalShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumPoolTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumPoolTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumTradeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumWrapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolMinimumTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getVaultPausedState","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlyingRaw","type":"uint256"},{"internalType":"uint256","name":"amountWrappedRaw","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"initializeBuffer","outputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isVaultPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurnBufferShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualDisableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualEnableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualMintBufferShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"manualMintMinimumBufferSupplyReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualPausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualPauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"maxAmountUnderlyingInRaw","type":"uint256"},{"internalType":"uint256","name":"maxAmountWrappedInRaw","type":"uint256"},{"internalType":"uint256","name":"exactSharesToIssue","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyAddLiquidityToBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualReentrancyDisableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyInitializeBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOut","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOut","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"manualReentrancyRemoveLiquidityFromBufferHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualUnpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualUnpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"mockEnsurePoolNotInRecoveryMode","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"mockWithValidPercentage","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"pausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reentrancyGuardEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOutRaw","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOutRaw","type":"uint256"}],"name":"removeLiquidityFromBuffer","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"sharesToRemove","type":"uint256"},{"internalType":"uint256","name":"minAmountUnderlyingOutRaw","type":"uint256"},{"internalType":"uint256","name":"minAmountWrappedOutRaw","type":"uint256"},{"internalType":"address","name":"sharesOwner","type":"address"}],"name":"removeLiquidityFromBufferHook","outputs":[{"internalType":"uint256","name":"removedUnderlyingBalanceRaw","type":"uint256"},{"internalType":"uint256","name":"removedWrappedBalanceRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"setProtocolFeeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"setStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"unpausePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseVaultBuffers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"updateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateYieldFeePercentage","type":"uint256"}],"name":"updateAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_uint32_fromMemory":{"entryPoint":961,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":926,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4982":{"entryPoint":879,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateVaultStorageSlot":{"entryPoint":978,"id":27922,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6102006040908082523461036b5760a0816149318038038091610022828561039e565b83398101031261036b5780516001600160a01b03811680820361036b57602061004c8185016103c1565b6100578686016103c1565b91608060608701519601519561008c88516100718161036f565b600a8152691a5cd55b9b1bd8dad95960b21b848201526103d2565b60c0526100bf885161009d8161036f565b60118152701b9bdb96995c9bd1195b1d1850dbdd5b9d607a1b848201526103d2565b60e0526100ec88516100d08161036f565b600b81526a746f6b656e44656c74617360a81b848201526103d2565b9761010098895261012481516101018161036f565b6012815271185919131a5c5d5a591a5d1e50d85b1b195960721b858201526103d2565b9761012098895261015382516101398161036f565b60098152681cd95cdcda5bdb925960ba1b868201526103d2565b926101409384526101c09788526101e098895263ffffffff80961694630784ce00861161035c578688169562ed4e00871161034d5742019081421161032457878211610338575086166101608181526101a098895295019586116103245761018095865260805260a052519661449f98896104928a396080518961069a015260a05189612414015260c05189613d76015260e0518981816141fc015261425c015251886141b101525187505051865050518581816118fb015281816119c101526137d80152518481816111dc015281816119e80152613910015251838181610d3a015281816110ea0152818161266001528181613abc0152613bd50152518261358001525181818161033101528181610384015281816103db01528181610430015281816106d60152818161099301528181610ae201528181610ba501528181610c4001528181610c9401528181610e0101528181611322015281816113720152818161150901528181611575015281816116560152818161198301528181611a7701528181611b2401528181611e6401528181611f1e0152818161236f015281816123ca015281816124c10152818161255801528181612b2601528181612b6f01528181612bea0152612ca10152f35b634e487b7160e01b5f52601160045260245ffd5b6306dfcc6560e41b5f5260045260245260445ffd5b634f5277f760e11b5f5260045ffd5b63cc0e8fe560e01b5f5260045ffd5b5f80fd5b604081019081106001600160401b0382111761038a57604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b0382119082101761038a57604052565b519063ffffffff8216820361036b57565b604051906103df8261036f565b600c8252610460603a602084016b5661756c7453746f7261676560a01b81526020604051948592828401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952518091603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a81018452018261039e565b5190205f198101908111610324576040519060208201908152602082526104868261036f565b9051902060ff19169056fe6080604052600436101561009f575b361561007757346100775760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f803560e01c80630387587d14612c81578063058a628f14612bbf578063071d8a0214612ba7578063098401f514612b5a5780630b7562be14612b115780630b9df1f614612af05780631558356e14612a9057806316df26cb146129dc5780631f568ea31461268457806320c1fb7a1461264357806326a8a9911461262657806327521d0c146126005780632d7713891461252d5780632e42f4d5146125115780634021fe0f1461249657806352b9e33d1461243757806353956aa2146123fc57806355aca1ec146123a857806355cba7fe146123595780635dcacd6414611f075780635e0b06f414611e41578063653eb3b014611b0b5780636b23029114611af35780637578abb914611ad6578063821440f214611a61578063851c1bb314611a0f57806385c8c0151461196d57806388e5101a1461191f5780638a8d123a146118de5780638f4ab9ca146116385780639260d920146115b75780639385e39a1461153d5780639e0879c2146114f3578063a8175b27146114d7578063b61398cd146113f3578063b9212b491461135c578063bffb78b214611300578063c7b3b3a914611219578063cc671ff714611200578063cd51c12f146111bf578063d0965a6b146111a1578063d15126ba14610ddf578063d2c725e014610da0578063dc3f574e14610c74578063de1a36a614610c2a578063e085c5a814610b8f578063e0d5560514610acc578063e253670a14610970578063e2a92b1a146106bd578063e2cb0ba014610682578063e83388941461066a578063e99ac9a314610648578063ebc7955c14610410578063f21c38cd146103b9578063f2784e07146103585763fbfa77cf14610312575061000e565b3461035557806003193601126103555760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346103555760206003193601126103555760406020916001600160a01b0361037f612ce4565b6103a87f0000000000000000000000000000000000000000000000000000000000000000613678565b168152600d83522054604051908152f35b50346103555760206003193601126103555761040d6103d6612ce4565b6103ff7f0000000000000000000000000000000000000000000000000000000000000000613678565b61040881613d29565b613aef565b80f35b503461035557608060031936011261035557601f9061042d612ce4565b907f00000000000000000000000000000000000000000000000000000000000000009161045983613678565b6040517f5dcacd640000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b039390931660248084019190915235604480840191909152356064808401919091523560848301523360a480840191909152825291937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09284929091906104f460c482612dfb565b836001600160a01b03604489886040519c8d98899788947f48c8949100000000000000000000000000000000000000000000000000000000865260048601525180918160248701528686015e8685828601015201168101030193165af193841561063d578294610580575b60408461057487828082518301019101613662565b90918351928352820152f35b909193503d8085833e6105938183612dfb565b8101838282031261060457815167ffffffffffffffff9283821161063957019080601f83011215610635578151928311610608576105db8560405195601f8601160185612dfb565b82845284838301011161060457938382610574949382604098018386015e83010152925f61055f565b8480fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8580fd5b8680fd5b6040513d84823e3d90fd5b50346103555760206003193601126103555761040d610665612ce4565b613f74565b50346103555761040d61067c36612d36565b91613e52565b503461035557806003193601126103555760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5034610355576106cc36612cfa565b6106fa95919294957f0000000000000000000000000000000000000000000000000000000000000000613678565b610702613d74565b61070a613f06565b61071386613dc5565b61071b613c08565b6001600160a01b0392838716916040517f38d52e0f0000000000000000000000000000000000000000000000000000000081526020958682600481885afa918215610965578692610936575b50848652600e875280604087205416911680910361090657838552600b8652604085205497600d87526040862054916fffffffffffffffffffffffffffffffff8a16916107c46107b88588866140c9565b9b60801c9487866140c9565b99808c116108d25750808a1161089e57509361086f9361083f60409c946108398c6108338f6108519861082e8e6108257f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a99f61081f8661414c565b906141a1565b61081f8661414c565b612eae565b92612eae565b90613c5d565b93878952600b8a52848d8a2055613fcf565b8851918291888a846040919493926060820195825260208201520152565b0390a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d8351928352820152f35b876064918b897f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b886064918d857f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b84604491857f36b18d09000000000000000000000000000000000000000000000000000000008352600452602452fd5b610957919250873d891161095e575b61094f8183612dfb565b810190612e3c565b905f610767565b503d610945565b6040513d88823e3d90fd5b50346103555760406003193601126103555761098a612ce4565b602435906109b77f0000000000000000000000000000000000000000000000000000000000000000613678565b6109c081613d29565b670de0b6b3a76400008211610aa4576001600160a01b039081600a54163303610a7c571690818352826020526040832054670de0b5cad2bef0008211610a54577f606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca591610a3f602092610a30604290565b9064174876e8008404906142d5565b8486528583526040862055604051908152a280f35b6004847f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b6004837f4c69ac5d000000000000000000000000000000000000000000000000000000008152fd5b5034610355578060031936011261035557610b067f0000000000000000000000000000000000000000000000000000000000000000613678565b610b0e6136b1565b60ff60095416610b67577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe600754166007557f91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f58180a180f35b807f069f8cbc0000000000000000000000000000000000000000000000000000000060049252fd5b5034610355578060031936011261035557610bc97f0000000000000000000000000000000000000000000000000000000000000000613678565b610bd16136b1565b60047ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60075416176007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5602060405160018152a180f35b5034610355578060031936011261035557610c647f0000000000000000000000000000000000000000000000000000000000000000613678565b610c6c6136b1565b61040d614078565b503461035557602060031936011261035557610c8e612ce4565b90610cb87f0000000000000000000000000000000000000000000000000000000000000000613678565b610cc182613d29565b610cca82613947565b6001600160a01b03821681528060205260408120549160018360021c1663ffffffff8094610cfe610cf9605a90565b612e73565b1c1681610d35575b5061040d9293501580610d26575b15613cbf57610d216136b1565b613cbf565b50610d2f613909565b15610d14565b9050837f0000000000000000000000000000000000000000000000000000000000000000160192808411610d735761040d9293164211158392610d06565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b503461035557806003193601126103555760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b503461035557604060031936011261035557610df9612ce4565b602435610e257f0000000000000000000000000000000000000000000000000000000000000000613678565b610e2e82613d29565b6001600160a01b0380831692838552602091600183526001604087200154169081155f1461117257610e60915061431c565b610e68613909565b61114a57828452838152604084205460018160021c169063ffffffff8091610e91610cf9605a90565b1c16826110e4575b50506110b8576040517fce20ece70000000000000000000000000000000000000000000000000000000081528181600481875afa90811561105857859161108b575b508210611063576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481875afa908115611058578591611027575b508211610fff57828452838152604084205491670de0b5cad2bef0008111610fd75764174876e8008104928360181c610faf577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff7f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a19486885287855260121b9116176040862055604051908152a280f35b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b6004857f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f7f47834b000000000000000000000000000000000000000000000000000000008152fd5b90508181813d8311611051575b61103e8183612dfb565b8101031261104d57515f610f1e565b5f80fd5b503d611034565b6040513d87823e3d90fd5b6004847fbfb20688000000000000000000000000000000000000000000000000000000008152fd5b90508181813d83116110b1575b6110a28183612dfb565b8101031261104d57515f610edb565b503d611098565b602484847fd971f597000000000000000000000000000000000000000000000000000000008252600452fd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161111d57164211155f80610e99565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004847fda9f8b34000000000000000000000000000000000000000000000000000000008152fd5b503314610e60576004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b50346103555780600319360112610355576020604051620f42408152f35b5034610355578060031936011261035557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461035557806003193601126103555761040d61387f565b50346103555761129a604061122d36612cfa565b9061123c969296949394613c08565b855196879586957f5dcacd640000000000000000000000000000000000000000000000000000000087526004870193608093969591929660a08601976001600160a01b03809516875260208701526040860152606085015216910152565b038185305af1801561063d576112d2575b50807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b6112f39060403d6040116112f9575b6112eb8183612dfb565b810190613662565b506112ab565b503d6112e1565b50346103555760206003193601126103555761040d61131d612ce4565b6113467f0000000000000000000000000000000000000000000000000000000000000000613678565b61134f81613d29565b6113576136b1565b612f12565b50346103555780600319360112610355576113967f0000000000000000000000000000000000000000000000000000000000000000613678565b61139e6136b1565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600754166007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a560206040515f8152a180f35b503461035557611475602061140736612cfa565b90611416969296949394613c08565b60405196879586957f653eb3b00000000000000000000000000000000000000000000000000000000087526004870193608093969591929660a08601976001600160a01b03809516875260208701526040860152606085015216910152565b038185305af1801561063d576114ac5750807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b602090813d83116114d0575b6114c28183612dfb565b8101031261104d575f6112ab565b503d6114b8565b5034610355578060031936011261035557602060405160028152f35b503461035557806003193601126103555761152d7f0000000000000000000000000000000000000000000000000000000000000000613678565b6115356136b1565b61040d61379c565b503461035557604060031936011261035557611557612ce4565b602435916001600160a01b0380841680940361104d576040926115997f0000000000000000000000000000000000000000000000000000000000000000613678565b168152600c60205220905f52602052602060405f2054604051908152f35b50346103555761129a60406115cb36612cfa565b906115da969296949394613c08565b855196879586957fe2a92b1a0000000000000000000000000000000000000000000000000000000087526004870193608093969591929660a08601976001600160a01b03809516875260208701526040860152606085015216910152565b5034610355576020806003193601126118da57611653612ce4565b907f000000000000000000000000000000000000000000000000000000000000000061167e81613678565b611686613d74565b6001600160a01b039283600a541633036118b2579380846024876116aa8399613d29565b60405197889384927fca4f28030000000000000000000000000000000000000000000000000000000084521696876004840152165afa9384156118a5578194611809575b508351926117046116fe856135d2565b946135d2565b90825b86518110156117db57808861171e6001938a613621565b511686865260069081855260408720815f5285526fffffffffffffffffffffffffffffffff60405f20548060801c611756868a613621565b5216611762848b613621565b5261176d838a613621565b51158015906117c8575b611784575b505001611707565b6117c191888852855260408720815f5285528660405f20556117bb6117a9848b613621565b516117b48589613621565b5190612eae565b90613e12565b5f8061177c565b506117d38387613621565b511515611777565b6117f8866118058486604051948594604086526040860190612d6b565b9184830390850152612d6b565b0390f35b9093503d8085833e61181b8183612dfb565b81019083818303126106045780519067ffffffffffffffff821161063557019080601f83011215610604578151611851816135ba565b9261185f6040519485612dfb565b818452858085019260051b820101928311610639578501905b82821061188957505050925f6116ee565b815188811681036118a1578152908501908501611878565b8780fd5b50604051903d90823e3d90fd5b6004857f23dada53000000000000000000000000000000000000000000000000000000008152fd5b5080fd5b5034610355578060031936011261035557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461035557602060031936011261035557670de0b6b3a7640000600435116119455780f35b807f4c69ac5d0000000000000000000000000000000000000000000000000000000060049252fd5b50346103555780600319360112610355576119a77f0000000000000000000000000000000000000000000000000000000000000000613678565b60606119b1613909565b604051901515815263ffffffff807f00000000000000000000000000000000000000000000000000000000000000001660208301527f0000000000000000000000000000000000000000000000000000000000000000166040820152f35b503461035557602060031936011261035557600435907fffffffff0000000000000000000000000000000000000000000000000000000082168203610355576020611a5983613555565b604051908152f35b5034610355578060031936011261035557611a9b7f0000000000000000000000000000000000000000000000000000000000000000613678565b611aa36136b1565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00600954161760095561040d614078565b50346103555760206003193601126103555761040d611357612ce4565b50346103555761040d611b0536612d36565b91613fcf565b503461035557611b1a36612cfa565b9492611b489291927f0000000000000000000000000000000000000000000000000000000000000000613678565b611b50613d74565b611b58613f06565b611b60613c08565b6001600160a01b039586861693848652602097600e895280604088205416611e15576040517f38d52e0f00000000000000000000000000000000000000000000000000000000815289816004818a5afa908115611dc1578891611df8575b50168015611dcc57611c0690868852600e8a5260408820817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905561081f8561414c565b611c18611c128561414c565b866141a1565b611c228484613c5d565b91858752600b89528260408820556040517f4cdad50600000000000000000000000000000000000000000000000000000000815285600482015289816024818a5afa8015611dc15785908990611d90575b611c7d9250612eae565b97611c8789613f3d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f08901988911611d6357611cc59181611cc08b93613f74565b613fcf565b808710611d335750604080519283526020830193909352918101919091527f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a990606090a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b85604491887fda0cb07e000000000000000000000000000000000000000000000000000000008352600452602452fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50508981813d8311611dba575b611da78183612dfb565b8101031261104d5784611c7d9151611c73565b503d611d9d565b6040513d8a823e3d90fd5b602487877fd407f9c5000000000000000000000000000000000000000000000000000000008252600452fd5b611e0f91508a3d8c1161095e5761094f8183612dfb565b5f611bbe565b602487877f1690fa40000000000000000000000000000000000000000000000000000000008252600452fd5b503461035557604060031936011261035557611e5b612ce4565b60243590611e887f0000000000000000000000000000000000000000000000000000000000000000613678565b611e9181613d29565b670de0b6b3a76400008211610aa4576001600160a01b039081600a54163303610a7c571690818352826020526040832054670de0b5cad2bef0008211610a545781610a3f60209264174876e8007fe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354950490614293565b503461035557611f1636612cfa565b9490929193947f0000000000000000000000000000000000000000000000000000000000000000611f4681613678565b6001600160a01b038116330361232d57611f5e613d74565b611f6787613dc5565b32158080612320575b6122b8575b506001600160a01b0387168352600c602052604083206001600160a01b0383165f5260205260405f20548411612290576001600160a01b0387168352600b602052604083205495600d602052604084205496611ffd611fef89611fea896fffffffffffffffffffffffffffffffff8616612ebb565b612ece565b98611fea888460801c612ebb565b966001600160a01b038a168652600e6020526001600160a01b0360408720541692808a1061225c575080881061221f575061207b61209a9161203f8a85613e12565b612052896001600160a01b038d16613e12565b610839896120728c6fffffffffffffffffffffffffffffffff8516612f05565b9260801c612f05565b956001600160a01b038a168652600b602052866040872055848a613e52565b86612185575b50846120fc575b5050604080518581526020810185905280820193909352946001600160a01b0316917f44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee51139150606090a282519182526020820152f35b6001600160a01b0381163b15612181576001600160a01b03606488858381958160405198899788967fae6393290000000000000000000000000000000000000000000000000000000088521660048701521660248501528a6044850152165af1801561063d5761216d575b806120a7565b6121778291612d9e565b6103555780612167565b8280fd5b6001600160a01b0382163b1561221b57604051907fae63932900000000000000000000000000000000000000000000000000000000825260048201526001600160a01b03831660248201528660448201528381606481836001600160a01b0387165af18015612210579084916121fc575b506120a0565b61220590612d9e565b61218157825f6121f6565b6040513d86823e3d90fd5b8380fd5b85606491896001600160a01b038d7f8eda85e400000000000000000000000000000000000000000000000000000000855216600452602452604452fd5b866064918b867f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b6004837f98c5dbd6000000000000000000000000000000000000000000000000000000008152fd5b156122f8576001600160a01b0387168352600c602052604083206001600160a01b0383165f5260205260405f206122f0858254612eae565b90555f611f75565b6004837f67f84ab2000000000000000000000000000000000000000000000000000000008152fd5b5060016007541615611f70565b6024837f089676d500000000000000000000000000000000000000000000000000000000815233600452fd5b50346103555780600319360112610355576123937f0000000000000000000000000000000000000000000000000000000000000000613678565b6020600160075460021c166040519015158152f35b50346103555760206003193601126103555761040d6123c5612ce4565b6123ee7f0000000000000000000000000000000000000000000000000000000000000000613678565b6123f781613d29565b613994565b503461035557806003193601126103555760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346103555760206003193601126103555761040d612454612ce4565b6001600160a01b0381168352600160205260408320337fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055613aef565b503461035557602060031936011261035557604080916001600160a01b036124bc612ce4565b6124e57f0000000000000000000000000000000000000000000000000000000000000000613678565b168152600b60205220548151906fffffffffffffffffffffffffffffffff8116825260801c6020820152f35b5034610355578060031936011261035557602060405160088152f35b5034610355576020600319360112610355576004356001600160a01b0381168091036118da5761257c7f0000000000000000000000000000000000000000000000000000000000000000613678565b6125846136b1565b61258c613c08565b807fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a557f280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df08280a2807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b50346103555760206003193601126103555761040d61261d612ce4565b610d2181613947565b503461035557806003193601126103555760206040516127108152f35b5034610355578060031936011261035557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346103555760606003193601126103555761269e612ce4565b602435604435906001600160a01b0380931692838552602091600b835260408620549181612872575b5083612709575b90610839600b946126f46126fd946fffffffffffffffffffffffffffffffff8516612eae565b9260801c612eae565b92845252604082205580f35b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905283816064818a8a5af1801561283a57612845575b50848652600883526040862061276d858254612eae565b90556040517f4cdad5060000000000000000000000000000000000000000000000000000000081528460048201528381602481895afa90811561283a578791612806575b50600b946126f46126fd949361083993898b52600d885260408b206127d7828254612eae565b9055898b52600c885260408b20335f5288526127f860405f20918254612eae565b9055939450509450506126ce565b929190508383813d8311612833575b61281f8183612dfb565b8101031261104d579151909190600b6127b1565b503d612815565b6040513d89823e3d90fd5b61286490843d861161286b575b61285c8183612dfb565b810190612e5b565b505f612756565b503d612852565b6040517f38d52e0f000000000000000000000000000000000000000000000000000000009081815285816004818b5afa9081156129b45789916129bf575b506040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101859052908690829060649082908d9088165af180156129b457612997575b5060405190815284816004818a5afa908115611dc157889161297a575b501686526008835260408620612939828254612eae565b9055848652600d835260408620612951828254612eae565b9055848652600c835260408620335f52835260405f20612972828254612eae565b90555f6126c7565b6129919150853d871161095e5761094f8183612dfb565b5f612922565b6129ad90863d881161286b5761285c8183612dfb565b505f612905565b6040513d8b823e3d90fd5b6129d69150863d881161095e5761094f8183612dfb565b5f6128b0565b503461104d57602060031936011261104d576129f6612ce4565b6129fe613c08565b303b1561104d576001600160a01b03604051917fbffb78b20000000000000000000000000000000000000000000000000000000083521660048201525f8160248183305af18015612a8557612a745750807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b612a7e9150612d9e565b5f806112ab565b6040513d5f823e3d90fd5b3461104d57602060031936011261104d57612aee612aac612ce4565b6001600160a01b0381165f52600160205260405f20337fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055613994565b005b3461104d57602060031936011261104d57612aee612b0c612ce4565b613947565b3461104d575f60031936011261104d57612b4a7f0000000000000000000000000000000000000000000000000000000000000000613678565b612b526136b1565b612aee61387f565b3461104d575f60031936011261104d57612b937f0000000000000000000000000000000000000000000000000000000000000000613678565b6020612b9d613909565b6040519015158152f35b3461104d575f60031936011261104d57612aee61379c565b3461104d57602060031936011261104d576004356001600160a01b0381169081810361104d57612c0e7f0000000000000000000000000000000000000000000000000000000000000000613678565b612c166136b1565b7fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006009549260081b169116176009557f94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef5f80a2005b3461104d57602060031936011261104d576020612c9c612ce4565b612cc57f0000000000000000000000000000000000000000000000000000000000000000613678565b6001600160a01b038091165f52600e825260405f205416604051908152f35b600435906001600160a01b038216820361104d57565b60031960a091011261104d576001600160a01b03600435818116810361104d5791602435916044359160643591608435908116810361104d5790565b600319606091011261104d576001600160a01b0390600435828116810361104d5791602435908116810361104d579060443590565b9081518082526020808093019301915f5b828110612d8a575050505090565b835185529381019392810192600101612d7c565b67ffffffffffffffff8111612db257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff821117612db257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612db257604052565b9081602091031261104d57516001600160a01b038116810361104d5790565b9081602091031261104d5751801515810361104d5790565b9060288201809211612e8157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612e8157565b81810292918115918404141715612e8157565b8115612ed8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b91908203918211612e8157565b906001600160a01b0382165f525f602052600160405f205460031c161561352057612f3b613c08565b6040519160e0830183811067ffffffffffffffff821117612db2576040525f8352606060208401526060604084015260608084015260606080840152606060a0840152606060c08401526001600160a01b0381165f52600560205260405f205f60205260405f205490600460205260405f2090600360205260405f2080549387526040519060208286815201905f528160205f20915f5b8781106134fd5750612fe692500382612dfb565b6020870152612ff4836135ba565b6130016040519182612dfb565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061302e856135ba565b015f5b8181106134d45750506040870152613048836135d2565b6060870152613056836135d2565b6080870152855164ffffffffff61306c856135d2565b91605a1c165f5b85811061349857505060c087015261308a836135d2565b60a0870152855191600183811c169283613484575b5082613474575b5f5b8481106131a15750505050506001600160a01b0381165f52600560205260405f20905f5b6060850151805182101561311257906131006130ea82600194613621565b516130f98360808a0151613621565b5190613c5d565b815f528460205260405f2055016130cc565b5050919250505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6001600160a01b03165f8181526020818152604080832080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7169055519182527fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a991a2565b6001600160a01b036131b78260208b0151613621565b51165f528160205260405f2090604051916131d183612ddf565b5460ff908181166131e1816143b3565b84526001600160a01b038160081c16602085015260a81c1615156040830152805f528360205260405f2054916132278260408c0151836132218383613621565b52613621565b508051613233816143b3565b61323c816143b3565b806133b85750670de0b6b3a76400005b61325a8360a08d0151613621565b526132786fffffffffffffffffffffffffffffffff8416838c61440d565b85156133ae57604081015115159081613390575b5061329d575b600191505b016130a8565b886132a881516143ea565b6132b6836060840151613621565b519360801c6132ca8460805f950151613621565b51818111613301575b505050600192816132e6575b5050613292565b6132fa916132f391612f05565b828b61440d565b5f806132df565b61330c935003612ebb565b91670de0b6b3a7640000926001847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150261336b8b6133648560a061335b8260c0860151613621565b51930151613621565b5190612ebb565b8185810204851482151715612e81576001946133879202612ece565b90925f806132d3565b600191505161339e816143b3565b6133a7816143b3565b145f61328c565b5060019150613297565b806133c46001926143b3565b0361344c57600460206001600160a01b038184015116604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115612a85575f9161341a575b5061324c565b90506020813d602011613444575b8161343560209383612dfb565b8101031261104d57515f613414565b3d9150613428565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b865160031c6001161592506130a6565b61348f9193506143ea565b1515915f61309f565b600581029080820460051481151715612e8157604d601f84841c1611612e8157601f836001931c16600a0a6134cd8286613621565b5201613073565b6020906040516134e381612ddf565b5f81525f838201525f604082015282828601015201613031565b91506001602081926001600160a01b038654168152019301910191839192612fd2565b6001600160a01b03827fef029adf000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526135b481612ddf565b51902090565b67ffffffffffffffff8111612db25760051b60200190565b906135dc826135ba565b6135e96040519182612dfb565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061361782946135ba565b0190602036910137565b80518210156136355760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082604091031261104d576020825192015190565b6001600160a01b0316300361368957565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b61373b60206136e27fffffffff000000000000000000000000000000000000000000000000000000005f3516613555565b6009546040517f9be2a88400000000000000000000000000000000000000000000000000000000815260048101929092523360248301523060448301529092839160081c6001600160a01b031690829081906064820190565b03915afa908115612a85575f9161377d575b501561375557565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b613796915060203d60201161286b5761285c8183612dfb565b5f61374d565b6137a4613909565b156137d1577fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164210156138575760027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416176007557fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02602060405160018152a1565b7f0e4460b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b613887613909565b156138e1577fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d0260205f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416600755604051908152a1565b7ff7ff4dca000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164211158061393b5790565b506001600754811c1690565b6001600160a01b0316805f525f602052600160405f205460031c166139695750565b7f346d7607000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6139b86001600160a01b039182811692835f52600160205260405f20541690614130565b805f525f60205260405f205460018160021c1663ffffffff9081836139de610cf9605a90565b1c1681613ab7575b5015613a1857827fd971f597000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81613a23605a612e73565b1c16421015613a8b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600491835f525f602052161760405f20557f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7602060405160018152a2565b507feb5a1217000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9050817f00000000000000000000000000000000000000000000000000000000000000001601818111612e815781164211155f6139e6565b613b136001600160a01b039182811692835f52600160205260405f20541690614130565b805f525f60205260405f205460018160021c1663ffffffff8083613b38610cf9605a90565b1c1682613bcf575b505015613ba35760207f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5f91858352828452166040822055604051908152a2565b507ffdcd6894000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908092507f00000000000000000000000000000000000000000000000000000000000000001601818111612e8157164211155f80613b40565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c613c35576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b6fffffffffffffffffffffffffffffffff808211908115613cb5575b50613c8d57613c8a9160801b612eae565b90565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905082115f613c79565b6001600160a01b0316805f525f60205260405f2060087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff78254161790557fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9602060405160018152a2565b6001600160a01b0316805f525f602052600160405f20541615613d495750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000005c15613d9d57565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0380911690815f52600e60205260405f20541615613de75750565b7f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90613e1c9061414c565b907f80000000000000000000000000000000000000000000000000000000000000008214612e8157613e50915f03906141a1565b565b91906001600160a01b03809116928315613ede577f4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b916020911692835f52600d8252613ea28160405f2054612f05565b613eab81613f3d565b845f52600d835260405f2055600c825260405f20855f52825260405f20613ed3828254612f05565b9055604051908152a3565b7f586d06df000000000000000000000000000000000000000000000000000000005f5260045ffd5b600160075460021c16613f1557565b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b6127108110613f495750565b7f34bdbfaa000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b035f9116808252600d6020527fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec346020612710806040862055600c8252604085208580528252806040862055604051908152a3565b91906001600160a01b03809116928315614050577fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34916020911692835f52600d825261401f8160405f2054612eae565b61402881613f3d565b845f52600d835260405f2055600c825260405f20855f52825260405f20613ed3828254612eae565b7fdbe6b10e000000000000000000000000000000000000000000000000000000005f5260045ffd5b60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60075416176007557fbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc6255f80a1565b8215614108576001916140db91612ebb565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b0316331461414957613e509061431c565b50565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116141765790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b811561428f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000009116805f528160205260405f205c8381019384125f8212908015821691151617612e81578361425657507f0000000000000000000000000000000000000000000000000000000000000000805c907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211612e81575d5b5f5260205260405f205d565b61424a577f0000000000000000000000000000000000000000000000000000000000000000805c9060018201809211612e81575d61424a565b5050565b908060181c610faf57602a1b9062ffffff602a1b19161790565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b90610100808410156142ad57838103908111612e81578060ff105f14614317575060ff5b6018116142ad578060181c610faf5762ffffff90831b921b19161790565b6142f9565b602061373b9161434e7fffffffff000000000000000000000000000000000000000000000000000000005f3516613555565b6001600160a01b0360095460081c16906040518095819482937f9be2a884000000000000000000000000000000000000000000000000000000008452339060048501916040919493606084019584526001600160a01b03809216602085015216910152565b600211156143bd57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b62ffffff9060421c1664174876e80090818102918183041490151715612e815790565b91906080670de0b6b3a764000061445d61446694806144308660608a0151613621565b526144586144428660c08a0151613621565b516144518760a08b0151613621565b5192612ebb565b612ebb565b04930151613621565b5256fea2646970667358221220f0cdce6fa55260c39d9b5268d492dfe7039adbc30eba8b1d95665eb1778fb6a064736f6c634300081a0033","opcodes":"PUSH2 0x200 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x36B JUMPI PUSH1 0xA0 DUP2 PUSH2 0x4931 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x22 DUP3 DUP6 PUSH2 0x39E JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x36B JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 DUP3 SUB PUSH2 0x36B JUMPI PUSH1 0x20 PUSH2 0x4C DUP2 DUP6 ADD PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0x57 DUP7 DUP7 ADD PUSH2 0x3C1 JUMP JUMPDEST SWAP2 PUSH1 0x80 PUSH1 0x60 DUP8 ADD MLOAD SWAP7 ADD MLOAD SWAP6 PUSH2 0x8C DUP9 MLOAD PUSH2 0x71 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0xA DUP2 MSTORE PUSH10 0x1A5CD55B9B1BD8DAD959 PUSH1 0xB2 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH2 0xBF DUP9 MLOAD PUSH2 0x9D DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x1B9BDB96995C9BD1195B1D1850DBDD5B9D PUSH1 0x7A SHL DUP5 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH2 0xEC DUP9 MLOAD PUSH2 0xD0 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0xB DUP2 MSTORE PUSH11 0x746F6B656E44656C746173 PUSH1 0xA8 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST SWAP8 PUSH2 0x100 SWAP9 DUP10 MSTORE PUSH2 0x124 DUP2 MLOAD PUSH2 0x101 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x185919131A5C5D5A591A5D1E50D85B1B1959 PUSH1 0x72 SHL DUP6 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST SWAP8 PUSH2 0x120 SWAP9 DUP10 MSTORE PUSH2 0x153 DUP3 MLOAD PUSH2 0x139 DUP2 PUSH2 0x36F JUMP JUMPDEST PUSH1 0x9 DUP2 MSTORE PUSH9 0x1CD95CDCDA5BDB9259 PUSH1 0xBA SHL DUP7 DUP3 ADD MSTORE PUSH2 0x3D2 JUMP JUMPDEST SWAP3 PUSH2 0x140 SWAP4 DUP5 MSTORE PUSH2 0x1C0 SWAP8 DUP9 MSTORE PUSH2 0x1E0 SWAP9 DUP10 MSTORE PUSH4 0xFFFFFFFF DUP1 SWAP7 AND SWAP5 PUSH4 0x784CE00 DUP7 GT PUSH2 0x35C JUMPI DUP7 DUP9 AND SWAP6 PUSH3 0xED4E00 DUP8 GT PUSH2 0x34D JUMPI TIMESTAMP ADD SWAP1 DUP2 TIMESTAMP GT PUSH2 0x324 JUMPI DUP8 DUP3 GT PUSH2 0x338 JUMPI POP DUP7 AND PUSH2 0x160 DUP2 DUP2 MSTORE PUSH2 0x1A0 SWAP9 DUP10 MSTORE SWAP6 ADD SWAP6 DUP7 GT PUSH2 0x324 JUMPI PUSH2 0x180 SWAP6 DUP7 MSTORE PUSH1 0x80 MSTORE PUSH1 0xA0 MSTORE MLOAD SWAP7 PUSH2 0x449F SWAP9 DUP10 PUSH2 0x492 DUP11 CODECOPY PUSH1 0x80 MLOAD DUP10 PUSH2 0x69A ADD MSTORE PUSH1 0xA0 MLOAD DUP10 PUSH2 0x2414 ADD MSTORE PUSH1 0xC0 MLOAD DUP10 PUSH2 0x3D76 ADD MSTORE PUSH1 0xE0 MLOAD DUP10 DUP2 DUP2 PUSH2 0x41FC ADD MSTORE PUSH2 0x425C ADD MSTORE MLOAD DUP9 PUSH2 0x41B1 ADD MSTORE MLOAD DUP8 POP POP MLOAD DUP7 POP POP MLOAD DUP6 DUP2 DUP2 PUSH2 0x18FB ADD MSTORE DUP2 DUP2 PUSH2 0x19C1 ADD MSTORE PUSH2 0x37D8 ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x11DC ADD MSTORE DUP2 DUP2 PUSH2 0x19E8 ADD MSTORE PUSH2 0x3910 ADD MSTORE MLOAD DUP4 DUP2 DUP2 PUSH2 0xD3A ADD MSTORE DUP2 DUP2 PUSH2 0x10EA ADD MSTORE DUP2 DUP2 PUSH2 0x2660 ADD MSTORE DUP2 DUP2 PUSH2 0x3ABC ADD MSTORE PUSH2 0x3BD5 ADD MSTORE MLOAD DUP3 PUSH2 0x3580 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x331 ADD MSTORE DUP2 DUP2 PUSH2 0x384 ADD MSTORE DUP2 DUP2 PUSH2 0x3DB ADD MSTORE DUP2 DUP2 PUSH2 0x430 ADD MSTORE DUP2 DUP2 PUSH2 0x6D6 ADD MSTORE DUP2 DUP2 PUSH2 0x993 ADD MSTORE DUP2 DUP2 PUSH2 0xAE2 ADD MSTORE DUP2 DUP2 PUSH2 0xBA5 ADD MSTORE DUP2 DUP2 PUSH2 0xC40 ADD MSTORE DUP2 DUP2 PUSH2 0xC94 ADD MSTORE DUP2 DUP2 PUSH2 0xE01 ADD MSTORE DUP2 DUP2 PUSH2 0x1322 ADD MSTORE DUP2 DUP2 PUSH2 0x1372 ADD MSTORE DUP2 DUP2 PUSH2 0x1509 ADD MSTORE DUP2 DUP2 PUSH2 0x1575 ADD MSTORE DUP2 DUP2 PUSH2 0x1656 ADD MSTORE DUP2 DUP2 PUSH2 0x1983 ADD MSTORE DUP2 DUP2 PUSH2 0x1A77 ADD MSTORE DUP2 DUP2 PUSH2 0x1B24 ADD MSTORE DUP2 DUP2 PUSH2 0x1E64 ADD MSTORE DUP2 DUP2 PUSH2 0x1F1E ADD MSTORE DUP2 DUP2 PUSH2 0x236F ADD MSTORE DUP2 DUP2 PUSH2 0x23CA ADD MSTORE DUP2 DUP2 PUSH2 0x24C1 ADD MSTORE DUP2 DUP2 PUSH2 0x2558 ADD MSTORE DUP2 DUP2 PUSH2 0x2B26 ADD MSTORE DUP2 DUP2 PUSH2 0x2B6F ADD MSTORE DUP2 DUP2 PUSH2 0x2BEA ADD MSTORE PUSH2 0x2CA1 ADD MSTORE RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x6DFCC65 PUSH1 0xE4 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH4 0x4F5277F7 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xCC0E8FE5 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x38A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x38A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x36B JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x3DF DUP3 PUSH2 0x36F JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH2 0x460 PUSH1 0x3A PUSH1 0x20 DUP5 ADD PUSH12 0x5661756C7453746F72616765 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP3 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE MLOAD DUP1 SWAP2 PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x39E JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x324 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 DUP3 PUSH2 0x36F JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x9F JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x77 JUMPI CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x387587D EQ PUSH2 0x2C81 JUMPI DUP1 PUSH4 0x58A628F EQ PUSH2 0x2BBF JUMPI DUP1 PUSH4 0x71D8A02 EQ PUSH2 0x2BA7 JUMPI DUP1 PUSH4 0x98401F5 EQ PUSH2 0x2B5A JUMPI DUP1 PUSH4 0xB7562BE EQ PUSH2 0x2B11 JUMPI DUP1 PUSH4 0xB9DF1F6 EQ PUSH2 0x2AF0 JUMPI DUP1 PUSH4 0x1558356E EQ PUSH2 0x2A90 JUMPI DUP1 PUSH4 0x16DF26CB EQ PUSH2 0x29DC JUMPI DUP1 PUSH4 0x1F568EA3 EQ PUSH2 0x2684 JUMPI DUP1 PUSH4 0x20C1FB7A EQ PUSH2 0x2643 JUMPI DUP1 PUSH4 0x26A8A991 EQ PUSH2 0x2626 JUMPI DUP1 PUSH4 0x27521D0C EQ PUSH2 0x2600 JUMPI DUP1 PUSH4 0x2D771389 EQ PUSH2 0x252D JUMPI DUP1 PUSH4 0x2E42F4D5 EQ PUSH2 0x2511 JUMPI DUP1 PUSH4 0x4021FE0F EQ PUSH2 0x2496 JUMPI DUP1 PUSH4 0x52B9E33D EQ PUSH2 0x2437 JUMPI DUP1 PUSH4 0x53956AA2 EQ PUSH2 0x23FC JUMPI DUP1 PUSH4 0x55ACA1EC EQ PUSH2 0x23A8 JUMPI DUP1 PUSH4 0x55CBA7FE EQ PUSH2 0x2359 JUMPI DUP1 PUSH4 0x5DCACD64 EQ PUSH2 0x1F07 JUMPI DUP1 PUSH4 0x5E0B06F4 EQ PUSH2 0x1E41 JUMPI DUP1 PUSH4 0x653EB3B0 EQ PUSH2 0x1B0B JUMPI DUP1 PUSH4 0x6B230291 EQ PUSH2 0x1AF3 JUMPI DUP1 PUSH4 0x7578ABB9 EQ PUSH2 0x1AD6 JUMPI DUP1 PUSH4 0x821440F2 EQ PUSH2 0x1A61 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1A0F JUMPI DUP1 PUSH4 0x85C8C015 EQ PUSH2 0x196D JUMPI DUP1 PUSH4 0x88E5101A EQ PUSH2 0x191F JUMPI DUP1 PUSH4 0x8A8D123A EQ PUSH2 0x18DE JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0x1638 JUMPI DUP1 PUSH4 0x9260D920 EQ PUSH2 0x15B7 JUMPI DUP1 PUSH4 0x9385E39A EQ PUSH2 0x153D JUMPI DUP1 PUSH4 0x9E0879C2 EQ PUSH2 0x14F3 JUMPI DUP1 PUSH4 0xA8175B27 EQ PUSH2 0x14D7 JUMPI DUP1 PUSH4 0xB61398CD EQ PUSH2 0x13F3 JUMPI DUP1 PUSH4 0xB9212B49 EQ PUSH2 0x135C JUMPI DUP1 PUSH4 0xBFFB78B2 EQ PUSH2 0x1300 JUMPI DUP1 PUSH4 0xC7B3B3A9 EQ PUSH2 0x1219 JUMPI DUP1 PUSH4 0xCC671FF7 EQ PUSH2 0x1200 JUMPI DUP1 PUSH4 0xCD51C12F EQ PUSH2 0x11BF JUMPI DUP1 PUSH4 0xD0965A6B EQ PUSH2 0x11A1 JUMPI DUP1 PUSH4 0xD15126BA EQ PUSH2 0xDDF JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0xDA0 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0xC74 JUMPI DUP1 PUSH4 0xDE1A36A6 EQ PUSH2 0xC2A JUMPI DUP1 PUSH4 0xE085C5A8 EQ PUSH2 0xB8F JUMPI DUP1 PUSH4 0xE0D55605 EQ PUSH2 0xACC JUMPI DUP1 PUSH4 0xE253670A EQ PUSH2 0x970 JUMPI DUP1 PUSH4 0xE2A92B1A EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xE2CB0BA0 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0xE8338894 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xE99AC9A3 EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0xEBC7955C EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0xF21C38CD EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0xF2784E07 EQ PUSH2 0x358 JUMPI PUSH4 0xFBFA77CF EQ PUSH2 0x312 JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x20 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x37F PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3A8 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xD DUP4 MSTORE KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x3D6 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3FF PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x408 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x3AEF JUMP JUMPDEST DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x1F SWAP1 PUSH2 0x42D PUSH2 0x2CE4 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP2 PUSH2 0x459 DUP4 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5DCACD6400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x24 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x64 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x84 DUP4 ADD MSTORE CALLER PUSH1 0xA4 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MSTORE SWAP2 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP5 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x4F4 PUSH1 0xC4 DUP3 PUSH2 0x2DFB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x44 DUP10 DUP9 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP9 DUP10 SWAP8 DUP9 SWAP5 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x24 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY DUP7 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP4 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x63D JUMPI DUP3 SWAP5 PUSH2 0x580 JUMPI JUMPDEST PUSH1 0x40 DUP5 PUSH2 0x574 DUP8 DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x3662 JUMP JUMPDEST SWAP1 SWAP2 DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 SWAP4 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x593 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD DUP4 DUP3 DUP3 SUB SLT PUSH2 0x604 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP3 GT PUSH2 0x639 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x635 JUMPI DUP2 MLOAD SWAP3 DUP4 GT PUSH2 0x608 JUMPI PUSH2 0x5DB DUP6 PUSH1 0x40 MLOAD SWAP6 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0x2DFB JUMP JUMPDEST DUP3 DUP5 MSTORE DUP5 DUP4 DUP4 ADD ADD GT PUSH2 0x604 JUMPI SWAP4 DUP4 DUP3 PUSH2 0x574 SWAP5 SWAP4 DUP3 PUSH1 0x40 SWAP9 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP3 PUSH0 PUSH2 0x55F JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x24 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x665 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3F74 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x67C CALLDATASIZE PUSH2 0x2D36 JUMP JUMPDEST SWAP2 PUSH2 0x3E52 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x6CC CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST PUSH2 0x6FA SWAP6 SWAP2 SWAP3 SWAP5 SWAP6 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x702 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x70A PUSH2 0x3F06 JUMP JUMPDEST PUSH2 0x713 DUP7 PUSH2 0x3DC5 JUMP JUMPDEST PUSH2 0x71B PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP8 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP6 DUP7 DUP3 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x965 JUMPI DUP7 SWAP3 PUSH2 0x936 JUMPI JUMPDEST POP DUP5 DUP7 MSTORE PUSH1 0xE DUP8 MSTORE DUP1 PUSH1 0x40 DUP8 KECCAK256 SLOAD AND SWAP2 AND DUP1 SWAP2 SUB PUSH2 0x906 JUMPI DUP4 DUP6 MSTORE PUSH1 0xB DUP7 MSTORE PUSH1 0x40 DUP6 KECCAK256 SLOAD SWAP8 PUSH1 0xD DUP8 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP2 PUSH2 0x7C4 PUSH2 0x7B8 DUP6 DUP9 DUP7 PUSH2 0x40C9 JUMP JUMPDEST SWAP12 PUSH1 0x80 SHR SWAP5 DUP8 DUP7 PUSH2 0x40C9 JUMP JUMPDEST SWAP10 DUP1 DUP13 GT PUSH2 0x8D2 JUMPI POP DUP1 DUP11 GT PUSH2 0x89E JUMPI POP SWAP4 PUSH2 0x86F SWAP4 PUSH2 0x83F PUSH1 0x40 SWAP13 SWAP5 PUSH2 0x839 DUP13 PUSH2 0x833 DUP16 PUSH2 0x851 SWAP9 PUSH2 0x82E DUP15 PUSH2 0x825 PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP16 PUSH2 0x81F DUP7 PUSH2 0x414C JUMP JUMPDEST SWAP1 PUSH2 0x41A1 JUMP JUMPDEST PUSH2 0x81F DUP7 PUSH2 0x414C JUMP JUMPDEST PUSH2 0x2EAE JUMP JUMPDEST SWAP3 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 PUSH2 0x3C5D JUMP JUMPDEST SWAP4 DUP8 DUP10 MSTORE PUSH1 0xB DUP11 MSTORE DUP5 DUP14 DUP11 KECCAK256 SSTORE PUSH2 0x3FCF JUMP JUMPDEST DUP9 MLOAD SWAP2 DUP3 SWAP2 DUP9 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST DUP8 PUSH1 0x64 SWAP2 DUP12 DUP10 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP9 PUSH1 0x64 SWAP2 DUP14 DUP6 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP5 PUSH1 0x44 SWAP2 DUP6 PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH2 0x957 SWAP2 SWAP3 POP DUP8 RETURNDATASIZE DUP10 GT PUSH2 0x95E JUMPI JUMPDEST PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2E3C JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x767 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x945 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x98A PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x9B7 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x9C0 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xAA4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xA7C JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xA54 JUMPI PUSH32 0x606EB97D83164BD6B200D638CD49C14C65D94D4F2C674CFD85E24E0E202C3CA5 SWAP2 PUSH2 0xA3F PUSH1 0x20 SWAP3 PUSH2 0xA30 PUSH1 0x42 SWAP1 JUMP JUMPDEST SWAP1 PUSH5 0x174876E800 DUP5 DIV SWAP1 PUSH2 0x42D5 JUMP JUMPDEST DUP5 DUP7 MSTORE DUP6 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xB06 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xB0E PUSH2 0x36B1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH2 0xB67 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x91D7478835F2B5ADC315F5AAD920F4A7F0A02F7FDDF3042D17B2C80168EA17F5 DUP2 DUP1 LOG1 DUP1 RETURN JUMPDEST DUP1 PUSH32 0x69F8CBC00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xBC9 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xBD1 PUSH2 0x36B1 JUMP JUMPDEST PUSH1 0x4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xC64 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xC6C PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x40D PUSH2 0x4078 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xC8E PUSH2 0x2CE4 JUMP JUMPDEST SWAP1 PUSH2 0xCB8 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xCC1 DUP3 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0xCCA DUP3 PUSH2 0x3947 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 PUSH1 0x1 DUP4 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 SWAP5 PUSH2 0xCFE PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST PUSH2 0x2E73 JUMP JUMPDEST SHR AND DUP2 PUSH2 0xD35 JUMPI JUMPDEST POP PUSH2 0x40D SWAP3 SWAP4 POP ISZERO DUP1 PUSH2 0xD26 JUMPI JUMPDEST ISZERO PUSH2 0x3CBF JUMPI PUSH2 0xD21 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x3CBF JUMP JUMPDEST POP PUSH2 0xD2F PUSH2 0x3909 JUMP JUMPDEST ISZERO PUSH2 0xD14 JUMP JUMPDEST SWAP1 POP DUP4 PUSH32 0x0 AND ADD SWAP3 DUP1 DUP5 GT PUSH2 0xD73 JUMPI PUSH2 0x40D SWAP3 SWAP4 AND TIMESTAMP GT ISZERO DUP4 SWAP3 PUSH2 0xD06 JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xDF9 PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0xE25 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xE2E DUP3 PUSH2 0x3D29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP3 DUP4 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x40 DUP8 KECCAK256 ADD SLOAD AND SWAP1 DUP2 ISZERO PUSH0 EQ PUSH2 0x1172 JUMPI PUSH2 0xE60 SWAP2 POP PUSH2 0x431C JUMP JUMPDEST PUSH2 0xE68 PUSH2 0x3909 JUMP JUMPDEST PUSH2 0x114A JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0xE91 PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x10E4 JUMPI JUMPDEST POP POP PUSH2 0x10B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1058 JUMPI DUP6 SWAP2 PUSH2 0x108B JUMPI JUMPDEST POP DUP3 LT PUSH2 0x1063 JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1058 JUMPI DUP6 SWAP2 PUSH2 0x1027 JUMPI JUMPDEST POP DUP3 GT PUSH2 0xFFF JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD SWAP2 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0xFD7 JUMPI PUSH5 0x174876E800 DUP2 DIV SWAP3 DUP4 PUSH1 0x18 SHR PUSH2 0xFAF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP5 DUP7 DUP9 MSTORE DUP8 DUP6 MSTORE PUSH1 0x12 SHL SWAP2 AND OR PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1051 JUMPI JUMPDEST PUSH2 0x103E DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH0 PUSH2 0xF1E JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP8 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x10B1 JUMPI JUMPDEST PUSH2 0x10A2 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH0 PUSH2 0xEDB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1098 JUMP JUMPDEST PUSH1 0x24 DUP5 DUP5 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x111D JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0xE99 JUMP JUMPDEST PUSH1 0x24 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLER EQ PUSH2 0xE60 JUMPI PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x387F JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x129A PUSH1 0x40 PUSH2 0x122D CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP1 PUSH2 0x123C SWAP7 SWAP3 SWAP7 SWAP5 SWAP4 SWAP5 PUSH2 0x3C08 JUMP JUMPDEST DUP6 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH32 0x5DCACD6400000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD SWAP4 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP2 SWAP3 SWAP7 PUSH1 0xA0 DUP7 ADD SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP6 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP6 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x63D JUMPI PUSH2 0x12D2 JUMPI JUMPDEST POP DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST PUSH2 0x12F3 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x12F9 JUMPI JUMPDEST PUSH2 0x12EB DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3662 JUMP JUMPDEST POP PUSH2 0x12AB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x12E1 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x131D PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x1346 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x134F DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x1357 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x2F12 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1396 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x139E PUSH2 0x36B1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x1475 PUSH1 0x20 PUSH2 0x1407 CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP1 PUSH2 0x1416 SWAP7 SWAP3 SWAP7 SWAP5 SWAP4 SWAP5 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD SWAP4 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP2 SWAP3 SWAP7 PUSH1 0xA0 DUP7 ADD SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP6 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP6 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x63D JUMPI PUSH2 0x14AC JUMPI POP DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x14D0 JUMPI JUMPDEST PUSH2 0x14C2 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI PUSH0 PUSH2 0x12AB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14B8 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x2 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x152D PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1535 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x40D PUSH2 0x379C JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1557 PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP1 SWAP5 SUB PUSH2 0x104D JUMPI PUSH1 0x40 SWAP3 PUSH2 0x1599 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x129A PUSH1 0x40 PUSH2 0x15CB CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP1 PUSH2 0x15DA SWAP7 SWAP3 SWAP7 SWAP5 SWAP4 SWAP5 PUSH2 0x3C08 JUMP JUMPDEST DUP6 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD SWAP4 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP2 SWAP3 SWAP7 PUSH1 0xA0 DUP7 ADD SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP6 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x18DA JUMPI PUSH2 0x1653 PUSH2 0x2CE4 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0x167E DUP2 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1686 PUSH2 0x3D74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0x18B2 JUMPI SWAP4 DUP1 DUP5 PUSH1 0x24 DUP8 PUSH2 0x16AA DUP4 SWAP10 PUSH2 0x3D29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP4 DUP5 SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x18A5 JUMPI DUP2 SWAP5 PUSH2 0x1809 JUMPI JUMPDEST POP DUP4 MLOAD SWAP3 PUSH2 0x1704 PUSH2 0x16FE DUP6 PUSH2 0x35D2 JUMP JUMPDEST SWAP5 PUSH2 0x35D2 JUMP JUMPDEST SWAP1 DUP3 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x17DB JUMPI DUP1 DUP9 PUSH2 0x171E PUSH1 0x1 SWAP4 DUP11 PUSH2 0x3621 JUMP JUMPDEST MLOAD AND DUP7 DUP7 MSTORE PUSH1 0x6 SWAP1 DUP2 DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH1 0x80 SHR PUSH2 0x1756 DUP7 DUP11 PUSH2 0x3621 JUMP JUMPDEST MSTORE AND PUSH2 0x1762 DUP5 DUP12 PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x176D DUP4 DUP11 PUSH2 0x3621 JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x17C8 JUMPI JUMPDEST PUSH2 0x1784 JUMPI JUMPDEST POP POP ADD PUSH2 0x1707 JUMP JUMPDEST PUSH2 0x17C1 SWAP2 DUP9 DUP9 MSTORE DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE DUP7 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH2 0x17BB PUSH2 0x17A9 DUP5 DUP12 PUSH2 0x3621 JUMP JUMPDEST MLOAD PUSH2 0x17B4 DUP6 DUP10 PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 PUSH2 0x3E12 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x177C JUMP JUMPDEST POP PUSH2 0x17D3 DUP4 DUP8 PUSH2 0x3621 JUMP JUMPDEST MLOAD ISZERO ISZERO PUSH2 0x1777 JUMP JUMPDEST PUSH2 0x17F8 DUP7 PUSH2 0x1805 DUP5 DUP7 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x2D6B JUMP JUMPDEST SWAP2 DUP5 DUP4 SUB SWAP1 DUP6 ADD MSTORE PUSH2 0x2D6B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x181B DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 DUP4 DUP2 DUP4 SUB SLT PUSH2 0x604 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x635 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x604 JUMPI DUP2 MLOAD PUSH2 0x1851 DUP2 PUSH2 0x35BA JUMP JUMPDEST SWAP3 PUSH2 0x185F PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2DFB JUMP JUMPDEST DUP2 DUP5 MSTORE DUP6 DUP1 DUP6 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x639 JUMPI DUP6 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1889 JUMPI POP POP POP SWAP3 PUSH0 PUSH2 0x16EE JUMP JUMPDEST DUP2 MLOAD DUP9 DUP2 AND DUP2 SUB PUSH2 0x18A1 JUMPI DUP2 MSTORE SWAP1 DUP6 ADD SWAP1 DUP6 ADD PUSH2 0x1878 JUMP JUMPDEST DUP8 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH1 0x4 CALLDATALOAD GT PUSH2 0x1945 JUMPI DUP1 RETURN JUMPDEST DUP1 PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x19A7 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x19B1 PUSH2 0x3909 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH4 0xFFFFFFFF DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x355 JUMPI PUSH1 0x20 PUSH2 0x1A59 DUP4 PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1A9B PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1AA3 PUSH2 0x36B1 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD AND OR PUSH1 0x9 SSTORE PUSH2 0x40D PUSH2 0x4078 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x1357 PUSH2 0x2CE4 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x1B05 CALLDATASIZE PUSH2 0x2D36 JUMP JUMPDEST SWAP2 PUSH2 0x3FCF JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x1B1A CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP5 SWAP3 PUSH2 0x1B48 SWAP3 SWAP2 SWAP3 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1B50 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x1B58 PUSH2 0x3F06 JUMP JUMPDEST PUSH2 0x1B60 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 DUP7 AND SWAP4 DUP5 DUP7 MSTORE PUSH1 0x20 SWAP8 PUSH1 0xE DUP10 MSTORE DUP1 PUSH1 0x40 DUP9 KECCAK256 SLOAD AND PUSH2 0x1E15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP10 DUP2 PUSH1 0x4 DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1DC1 JUMPI DUP9 SWAP2 PUSH2 0x1DF8 JUMPI JUMPDEST POP AND DUP1 ISZERO PUSH2 0x1DCC JUMPI PUSH2 0x1C06 SWAP1 DUP7 DUP9 MSTORE PUSH1 0xE DUP11 MSTORE PUSH1 0x40 DUP9 KECCAK256 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x81F DUP6 PUSH2 0x414C JUMP JUMPDEST PUSH2 0x1C18 PUSH2 0x1C12 DUP6 PUSH2 0x414C JUMP JUMPDEST DUP7 PUSH2 0x41A1 JUMP JUMPDEST PUSH2 0x1C22 DUP5 DUP5 PUSH2 0x3C5D JUMP JUMPDEST SWAP2 DUP6 DUP8 MSTORE PUSH1 0xB DUP10 MSTORE DUP3 PUSH1 0x40 DUP9 KECCAK256 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP6 PUSH1 0x4 DUP3 ADD MSTORE DUP10 DUP2 PUSH1 0x24 DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0x1DC1 JUMPI DUP6 SWAP1 DUP10 SWAP1 PUSH2 0x1D90 JUMPI JUMPDEST PUSH2 0x1C7D SWAP3 POP PUSH2 0x2EAE JUMP JUMPDEST SWAP8 PUSH2 0x1C87 DUP10 PUSH2 0x3F3D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8F0 DUP10 ADD SWAP9 DUP10 GT PUSH2 0x1D63 JUMPI PUSH2 0x1CC5 SWAP2 DUP2 PUSH2 0x1CC0 DUP12 SWAP4 PUSH2 0x3F74 JUMP JUMPDEST PUSH2 0x3FCF JUMP JUMPDEST DUP1 DUP8 LT PUSH2 0x1D33 JUMPI POP PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP1 PUSH1 0x60 SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP6 PUSH1 0x44 SWAP2 DUP9 PUSH32 0xDA0CB07E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH1 0x24 DUP9 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST POP POP DUP10 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1DBA JUMPI JUMPDEST PUSH2 0x1DA7 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI DUP5 PUSH2 0x1C7D SWAP2 MLOAD PUSH2 0x1C73 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D9D JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP11 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0xD407F9C500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x1E0F SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x95E JUMPI PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0x1690FA4000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1E5B PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1E88 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1E91 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xAA4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xA7C JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xA54 JUMPI DUP2 PUSH2 0xA3F PUSH1 0x20 SWAP3 PUSH5 0x174876E800 PUSH32 0xE4D371097BEEA42453A37406E2AEF4C04F3C548F84AC50E72578662C0DCD7354 SWAP6 DIV SWAP1 PUSH2 0x4293 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x1F16 CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP5 SWAP1 SWAP3 SWAP2 SWAP4 SWAP5 PUSH32 0x0 PUSH2 0x1F46 DUP2 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER SUB PUSH2 0x232D JUMPI PUSH2 0x1F5E PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x1F67 DUP8 PUSH2 0x3DC5 JUMP JUMPDEST ORIGIN ISZERO DUP1 DUP1 PUSH2 0x2320 JUMPI JUMPDEST PUSH2 0x22B8 JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP4 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP5 GT PUSH2 0x2290 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP4 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD SWAP6 PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD SWAP7 PUSH2 0x1FFD PUSH2 0x1FEF DUP10 PUSH2 0x1FEA DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x2EBB JUMP JUMPDEST PUSH2 0x2ECE JUMP JUMPDEST SWAP9 PUSH2 0x1FEA DUP9 DUP5 PUSH1 0x80 SHR PUSH2 0x2EBB JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP7 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP8 KECCAK256 SLOAD AND SWAP3 DUP1 DUP11 LT PUSH2 0x225C JUMPI POP DUP1 DUP9 LT PUSH2 0x221F JUMPI POP PUSH2 0x207B PUSH2 0x209A SWAP2 PUSH2 0x203F DUP11 DUP6 PUSH2 0x3E12 JUMP JUMPDEST PUSH2 0x2052 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH2 0x3E12 JUMP JUMPDEST PUSH2 0x839 DUP10 PUSH2 0x2072 DUP13 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x2F05 JUMP JUMPDEST SWAP3 PUSH1 0x80 SHR PUSH2 0x2F05 JUMP JUMPDEST SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP7 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE DUP7 PUSH1 0x40 DUP8 KECCAK256 SSTORE DUP5 DUP11 PUSH2 0x3E52 JUMP JUMPDEST DUP7 PUSH2 0x2185 JUMPI JUMPDEST POP DUP5 PUSH2 0x20FC JUMPI JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH32 0x44D97B36E99B590B3D2875AAD3B167B1D7FB1E063F3F1325A1EEAC76CAEE5113 SWAP2 POP PUSH1 0x60 SWAP1 LOG2 DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH2 0x2181 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 DUP9 DUP6 DUP4 DUP2 SWAP6 DUP2 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP9 MSTORE AND PUSH1 0x4 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 PUSH1 0x44 DUP6 ADD MSTORE AND GAS CALL DUP1 ISZERO PUSH2 0x63D JUMPI PUSH2 0x216D JUMPI JUMPDEST DUP1 PUSH2 0x20A7 JUMP JUMPDEST PUSH2 0x2177 DUP3 SWAP2 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x355 JUMPI DUP1 PUSH2 0x2167 JUMP JUMPDEST DUP3 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x221B JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 PUSH1 0x44 DUP3 ADD MSTORE DUP4 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS CALL DUP1 ISZERO PUSH2 0x2210 JUMPI SWAP1 DUP5 SWAP2 PUSH2 0x21FC JUMPI JUMPDEST POP PUSH2 0x20A0 JUMP JUMPDEST PUSH2 0x2205 SWAP1 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x2181 JUMPI DUP3 PUSH0 PUSH2 0x21F6 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP7 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x64 SWAP2 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP7 PUSH1 0x64 SWAP2 DUP12 DUP7 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x98C5DBD600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST ISZERO PUSH2 0x22F8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP4 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x22F0 DUP6 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE PUSH0 PUSH2 0x1F75 JUMP JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO PUSH2 0x1F70 JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x2393 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x23C5 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x23EE PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x23F7 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x3994 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x2454 PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x3AEF JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x40 DUP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x24BC PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x24E5 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE KECCAK256 SLOAD DUP2 MLOAD SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x80 SHR PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x8 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 SWAP2 SUB PUSH2 0x18DA JUMPI PUSH2 0x257C PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x2584 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x258C PUSH2 0x3C08 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA SLOAD AND OR PUSH1 0xA SSTORE PUSH32 0x280A60B1E63C1774D397D35CCE80EB80E51408EAD755FB446E6F744CE98E5DF0 DUP3 DUP1 LOG2 DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x261D PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0xD21 DUP2 PUSH2 0x3947 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2710 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x269E PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP3 DUP4 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0xB DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD SWAP2 DUP2 PUSH2 0x2872 JUMPI JUMPDEST POP DUP4 PUSH2 0x2709 JUMPI JUMPDEST SWAP1 PUSH2 0x839 PUSH1 0xB SWAP5 PUSH2 0x26F4 PUSH2 0x26FD SWAP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x2EAE JUMP JUMPDEST SWAP3 PUSH1 0x80 SHR PUSH2 0x2EAE JUMP JUMPDEST SWAP3 DUP5 MSTORE MSTORE PUSH1 0x40 DUP3 KECCAK256 SSTORE DUP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 DUP2 PUSH1 0x64 DUP2 DUP11 DUP11 GAS CALL DUP1 ISZERO PUSH2 0x283A JUMPI PUSH2 0x2845 JUMPI JUMPDEST POP DUP5 DUP7 MSTORE PUSH1 0x8 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 PUSH2 0x276D DUP6 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP5 PUSH1 0x4 DUP3 ADD MSTORE DUP4 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x283A JUMPI DUP8 SWAP2 PUSH2 0x2806 JUMPI JUMPDEST POP PUSH1 0xB SWAP5 PUSH2 0x26F4 PUSH2 0x26FD SWAP5 SWAP4 PUSH2 0x839 SWAP4 DUP10 DUP12 MSTORE PUSH1 0xD DUP9 MSTORE PUSH1 0x40 DUP12 KECCAK256 PUSH2 0x27D7 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE DUP10 DUP12 MSTORE PUSH1 0xC DUP9 MSTORE PUSH1 0x40 DUP12 KECCAK256 CALLER PUSH0 MSTORE DUP9 MSTORE PUSH2 0x27F8 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE SWAP4 SWAP5 POP POP SWAP5 POP POP PUSH2 0x26CE JUMP JUMPDEST SWAP3 SWAP2 SWAP1 POP DUP4 DUP4 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2833 JUMPI JUMPDEST PUSH2 0x281F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0xB PUSH2 0x27B1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2815 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP10 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x2864 SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x286B JUMPI JUMPDEST PUSH2 0x285C DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2E5B JUMP JUMPDEST POP PUSH0 PUSH2 0x2756 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2852 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 DUP2 MSTORE DUP6 DUP2 PUSH1 0x4 DUP2 DUP12 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x29B4 JUMPI DUP10 SWAP2 PUSH2 0x29BF JUMPI JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP7 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP14 SWAP1 DUP9 AND GAS CALL DUP1 ISZERO PUSH2 0x29B4 JUMPI PUSH2 0x2997 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE DUP5 DUP2 PUSH1 0x4 DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1DC1 JUMPI DUP9 SWAP2 PUSH2 0x297A JUMPI JUMPDEST POP AND DUP7 MSTORE PUSH1 0x8 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 PUSH2 0x2939 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE DUP5 DUP7 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 PUSH2 0x2951 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE DUP5 DUP7 MSTORE PUSH1 0xC DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 CALLER PUSH0 MSTORE DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x2972 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE PUSH0 PUSH2 0x26C7 JUMP JUMPDEST PUSH2 0x2991 SWAP2 POP DUP6 RETURNDATASIZE DUP8 GT PUSH2 0x95E JUMPI PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x2922 JUMP JUMPDEST PUSH2 0x29AD SWAP1 DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x286B JUMPI PUSH2 0x285C DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST POP PUSH0 PUSH2 0x2905 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP12 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x29D6 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x95E JUMPI PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x28B0 JUMP JUMPDEST POP CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x29F6 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x29FE PUSH2 0x3C08 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO PUSH2 0x104D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 PUSH32 0xBFFB78B200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2A85 JUMPI PUSH2 0x2A74 JUMPI POP DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST PUSH2 0x2A7E SWAP2 POP PUSH2 0x2D9E JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12AB JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2AEE PUSH2 0x2AAC PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x3994 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2AEE PUSH2 0x2B0C PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3947 JUMP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2B4A PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x2B52 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x2AEE PUSH2 0x387F JUMP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2B93 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2B9D PUSH2 0x3909 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2AEE PUSH2 0x379C JUMP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x104D JUMPI PUSH2 0x2C0E PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x2C16 PUSH2 0x36B1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH32 0x94B979B6831A51293E2641426F97747FEED46F17779FED9CD18D1ECEFCFE92EF PUSH0 DUP1 LOG2 STOP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH1 0x20 PUSH2 0x2C9C PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x2CC5 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x104D JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x104D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x104D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2D8A JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x2D7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x104D JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x104D JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2E81 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2E81 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2E81 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2ED8 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2E81 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND ISZERO PUSH2 0x3520 JUMPI PUSH2 0x2F3B PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0xE0 DUP4 ADD DUP4 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE PUSH0 DUP4 MSTORE PUSH1 0x60 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP8 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 DUP7 DUP2 MSTORE ADD SWAP1 PUSH0 MSTORE DUP2 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x34FD JUMPI POP PUSH2 0x2FE6 SWAP3 POP SUB DUP3 PUSH2 0x2DFB JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x2FF4 DUP4 PUSH2 0x35BA JUMP JUMPDEST PUSH2 0x3001 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2DFB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x302E DUP6 PUSH2 0x35BA JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x34D4 JUMPI POP POP PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x3048 DUP4 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x3056 DUP4 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE DUP6 MLOAD PUSH5 0xFFFFFFFFFF PUSH2 0x306C DUP6 PUSH2 0x35D2 JUMP JUMPDEST SWAP2 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x3498 JUMPI POP POP PUSH1 0xC0 DUP8 ADD MSTORE PUSH2 0x308A DUP4 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MSTORE DUP6 MLOAD SWAP2 PUSH1 0x1 DUP4 DUP2 SHR AND SWAP3 DUP4 PUSH2 0x3484 JUMPI JUMPDEST POP DUP3 PUSH2 0x3474 JUMPI JUMPDEST PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x31A1 JUMPI POP POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3112 JUMPI SWAP1 PUSH2 0x3100 PUSH2 0x30EA DUP3 PUSH1 0x1 SWAP5 PUSH2 0x3621 JUMP JUMPDEST MLOAD PUSH2 0x30F9 DUP4 PUSH1 0x80 DUP11 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3C5D JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x30CC JUMP JUMPDEST POP POP SWAP2 SWAP3 POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x31B7 DUP3 PUSH1 0x20 DUP12 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x31D1 DUP4 PUSH2 0x2DDF JUMP JUMPDEST SLOAD PUSH1 0xFF SWAP1 DUP2 DUP2 AND PUSH2 0x31E1 DUP2 PUSH2 0x43B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x3227 DUP3 PUSH1 0x40 DUP13 ADD MLOAD DUP4 PUSH2 0x3221 DUP4 DUP4 PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x3621 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x3233 DUP2 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x323C DUP2 PUSH2 0x43B3 JUMP JUMPDEST DUP1 PUSH2 0x33B8 JUMPI POP PUSH8 0xDE0B6B3A7640000 JUMPDEST PUSH2 0x325A DUP4 PUSH1 0xA0 DUP14 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x3278 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP13 PUSH2 0x440D JUMP JUMPDEST DUP6 ISZERO PUSH2 0x33AE JUMPI PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP2 PUSH2 0x3390 JUMPI JUMPDEST POP PUSH2 0x329D JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x30A8 JUMP JUMPDEST DUP9 PUSH2 0x32A8 DUP2 MLOAD PUSH2 0x43EA JUMP JUMPDEST PUSH2 0x32B6 DUP4 PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x80 SHR PUSH2 0x32CA DUP5 PUSH1 0x80 PUSH0 SWAP6 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x3301 JUMPI JUMPDEST POP POP POP PUSH1 0x1 SWAP3 DUP2 PUSH2 0x32E6 JUMPI JUMPDEST POP POP PUSH2 0x3292 JUMP JUMPDEST PUSH2 0x32FA SWAP2 PUSH2 0x32F3 SWAP2 PUSH2 0x2F05 JUMP JUMPDEST DUP3 DUP12 PUSH2 0x440D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x32DF JUMP JUMPDEST PUSH2 0x330C SWAP4 POP SUB PUSH2 0x2EBB JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH1 0x1 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x336B DUP12 PUSH2 0x3364 DUP6 PUSH1 0xA0 PUSH2 0x335B DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2EBB JUMP JUMPDEST DUP2 DUP6 DUP2 MUL DIV DUP6 EQ DUP3 ISZERO OR ISZERO PUSH2 0x2E81 JUMPI PUSH1 0x1 SWAP5 PUSH2 0x3387 SWAP3 MUL PUSH2 0x2ECE JUMP JUMPDEST SWAP1 SWAP3 PUSH0 DUP1 PUSH2 0x32D3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x339E DUP2 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x33A7 DUP2 PUSH2 0x43B3 JUMP JUMPDEST EQ PUSH0 PUSH2 0x328C JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x3297 JUMP JUMPDEST DUP1 PUSH2 0x33C4 PUSH1 0x1 SWAP3 PUSH2 0x43B3 JUMP JUMPDEST SUB PUSH2 0x344C JUMPI PUSH1 0x4 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP5 ADD MLOAD AND PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2A85 JUMPI PUSH0 SWAP2 PUSH2 0x341A JUMPI JUMPDEST POP PUSH2 0x324C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3444 JUMPI JUMPDEST DUP2 PUSH2 0x3435 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH0 PUSH2 0x3414 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3428 JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP7 MLOAD PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 POP PUSH2 0x30A6 JUMP JUMPDEST PUSH2 0x348F SWAP2 SWAP4 POP PUSH2 0x43EA JUMP JUMPDEST ISZERO ISZERO SWAP2 PUSH0 PUSH2 0x309F JUMP JUMPDEST PUSH1 0x5 DUP2 MUL SWAP1 DUP1 DUP3 DIV PUSH1 0x5 EQ DUP2 ISZERO OR ISZERO PUSH2 0x2E81 JUMPI PUSH1 0x4D PUSH1 0x1F DUP5 DUP5 SHR AND GT PUSH2 0x2E81 JUMPI PUSH1 0x1F DUP4 PUSH1 0x1 SWAP4 SHR AND PUSH1 0xA EXP PUSH2 0x34CD DUP3 DUP7 PUSH2 0x3621 JUMP JUMPDEST MSTORE ADD PUSH2 0x3073 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x34E3 DUP2 PUSH2 0x2DDF JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x3031 JUMP JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 SLOAD AND DUP2 MSTORE ADD SWAP4 ADD SWAP2 ADD SWAP2 DUP4 SWAP2 SWAP3 PUSH2 0x2FD2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x35B4 DUP2 PUSH2 0x2DDF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2DB2 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x35DC DUP3 PUSH2 0x35BA JUMP JUMPDEST PUSH2 0x35E9 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2DFB JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x3617 DUP3 SWAP5 PUSH2 0x35BA JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3635 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x104D JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS SUB PUSH2 0x3689 JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x373B PUSH1 0x20 PUSH2 0x36E2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 PUSH1 0x8 SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2A85 JUMPI PUSH0 SWAP2 PUSH2 0x377D JUMPI JUMPDEST POP ISZERO PUSH2 0x3755 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3796 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x286B JUMPI PUSH2 0x285C DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x374D JUMP JUMPDEST PUSH2 0x37A4 PUSH2 0x3909 JUMP JUMPDEST ISZERO PUSH2 0x37D1 JUMPI PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP LT ISZERO PUSH2 0x3857 JUMPI PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 JUMP JUMPDEST PUSH32 0xE4460B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3887 PUSH2 0x3909 JUMP JUMPDEST ISZERO PUSH2 0x38E1 JUMPI PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 JUMP JUMPDEST PUSH32 0xF7FF4DCA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x393B JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH2 0x3969 JUMPI POP JUMP JUMPDEST PUSH32 0x346D760700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x39B8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x4130 JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP4 PUSH2 0x39DE PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP2 PUSH2 0x3AB7 JUMPI JUMPDEST POP ISZERO PUSH2 0x3A18 JUMPI DUP3 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x3A23 PUSH1 0x5A PUSH2 0x2E73 JUMP JUMPDEST SHR AND TIMESTAMP LT ISZERO PUSH2 0x3A8B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x4 SWAP2 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE AND OR PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 JUMP JUMPDEST POP PUSH32 0xEB5A121700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x2E81 JUMPI DUP2 AND TIMESTAMP GT ISZERO PUSH0 PUSH2 0x39E6 JUMP JUMPDEST PUSH2 0x3B13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x4130 JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 DUP4 PUSH2 0x3B38 PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x3BCF JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3BA3 JUMPI PUSH1 0x20 PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH0 SWAP2 DUP6 DUP4 MSTORE DUP3 DUP5 MSTORE AND PUSH1 0x40 DUP3 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 JUMP JUMPDEST POP PUSH32 0xFDCD689400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x2E81 JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0x3B40 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x3C35 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 GT SWAP1 DUP2 ISZERO PUSH2 0x3CB5 JUMPI JUMPDEST POP PUSH2 0x3C8D JUMPI PUSH2 0x3C8A SWAP2 PUSH1 0x80 SHL PUSH2 0x2EAE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP3 GT PUSH0 PUSH2 0x3C79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x3D49 JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x3D9D JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x3DE7 JUMPI POP JUMP JUMPDEST PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x3E1C SWAP1 PUSH2 0x414C JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x2E81 JUMPI PUSH2 0x3E50 SWAP2 PUSH0 SUB SWAP1 PUSH2 0x41A1 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x3EDE JUMPI PUSH32 0x4E09F7F7FC37CE2897800E2C2A9099565EDB0A133D19D84A6871B3530AF8846B SWAP2 PUSH1 0x20 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0xD DUP3 MSTORE PUSH2 0x3EA2 DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x2F05 JUMP JUMPDEST PUSH2 0x3EAB DUP2 PUSH2 0x3F3D JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x3ED3 DUP3 DUP3 SLOAD PUSH2 0x2F05 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH32 0x586D06DF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH2 0x3F15 JUMPI JUMP JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x3F49 JUMPI POP JUMP JUMPDEST PUSH32 0x34BDBFAA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH0 SWAP2 AND DUP1 DUP3 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 PUSH1 0x20 PUSH2 0x2710 DUP1 PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 DUP6 KECCAK256 DUP6 DUP1 MSTORE DUP3 MSTORE DUP1 PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x4050 JUMPI PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 SWAP2 PUSH1 0x20 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0xD DUP3 MSTORE PUSH2 0x401F DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x2EAE JUMP JUMPDEST PUSH2 0x4028 DUP2 PUSH2 0x3F3D JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x3ED3 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST PUSH32 0xDBE6B10E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xBD204090FD387F08E3076528BF09B4FC99D8100D749EACE96C06002D3FEDC625 PUSH0 DUP1 LOG1 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x4108 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x40DB SWAP2 PUSH2 0x2EBB JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4149 JUMPI PUSH2 0x3E50 SWAP1 PUSH2 0x431C JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4176 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x428F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 SWAP2 AND DUP1 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP4 DUP2 ADD SWAP4 DUP5 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x2E81 JUMPI DUP4 PUSH2 0x4256 JUMPI POP PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2E81 JUMPI TSTORE JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH2 0x424A JUMPI PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2E81 JUMPI TSTORE PUSH2 0x424A JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0xFAF JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x42AD JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2E81 JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x4317 JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x42AD JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0xFAF JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x42F9 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x373B SWAP2 PUSH2 0x434E PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP5 DUP3 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER SWAP1 PUSH1 0x4 DUP6 ADD SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH1 0x60 DUP5 ADD SWAP6 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x43BD JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2E81 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x445D PUSH2 0x4466 SWAP5 DUP1 PUSH2 0x4430 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x4458 PUSH2 0x4442 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD PUSH2 0x4451 DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2EBB JUMP JUMPDEST PUSH2 0x2EBB JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE 0xCD 0xCE PUSH16 0xA55260C39D9B5268D492DFE7039ADBC3 0xE 0xBA DUP12 SAR SWAP6 PUSH7 0x5EB1778FB6A064 PUSH20 0x6F6C634300081A00330000000000000000000000 ","sourceMap":"566:4899:87:-:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;3400:40:69;566:4899:87;;;;;:::i;:::-;;;;-1:-1:-1;;;566:4899:87;;;;3400:40:69;:::i;:::-;;;3501:47;566:4899:87;;;;;:::i;:::-;;;;-1:-1:-1;;;566:4899:87;;;;3501:47:69;:::i;:::-;;;3601:41;566:4899:87;;;;;:::i;:::-;;;;-1:-1:-1;;;566:4899:87;;;;3601:41:69;:::i;:::-;;;;;;3703:48;566:4899:87;;;;;:::i;:::-;;;;-1:-1:-1;;;566:4899:87;;;;3703:48:69;:::i;:::-;;;;;;3802:39;566:4899:87;;;;;:::i;:::-;;;;-1:-1:-1;;;566:4899:87;;;;3802:39:69;:::i;:::-;;;;;;1347:46:35;;;;409:14:68;;;;566:4899:87;;;;3503:48:65;2194:12:69;3503:48:65;;3499:120;;566:4899:87;;;3632:50:65;2268:8:69;3632:50:65;;3628:123;;3844:15;2268:8:69;3844:15:65;;;2268:8:69;;;15369:24:111;;;15365:103;;-1:-1:-1;566:4899:87;;3904:45:65;;;;3959:49;;;;2268:8:69;;;;;;;4018:69:65;;;;566:4899:87;4098:38:65;566:4899:87;4146:36:65;566:4899:87;;;;;;;;;;;;;;;;;;;;3400:40:69;566:4899:87;;;;;3501:47:69;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2268:8:69;;;;-1:-1:-1;2268:8:69;566:4899:87;2268:8:69;;;-1:-1:-1;2268:8:69;15365:103:111;15416:41;;;-1:-1:-1;15416:41:111;;566:4899:87;;;;-1:-1:-1;15416:41:111;3628:123:65;3705:35;;;-1:-1:-1;3705:35:65;;-1:-1:-1;3705:35:65;3499:120;3574:34;;;-1:-1:-1;3574:34:65;;-1:-1:-1;3574:34:65;566:4899:87;-1:-1:-1;566:4899:87;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;:::o;:::-;2268:8:69;;;566:4899:87;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;9892:177:69:-;566:4899:87;;;;;;:::i;:::-;;;;1461:67:44;566:4899:87;;;;-1:-1:-1;;;566:4899:87;;;;;1461:67:44;;;;;;566:4899:87;;;;;;;;;;;;;;-1:-1:-1;;;566:4899:87;;;;;;;;;;;;;;;-1:-1:-1;566:4899:87;;;;1461:67:44;;;;;;;;;:::i;:::-;566:4899:87;1451:78:44;;-1:-1:-1;;566:4899:87;;;;;;;;;1432:103:44;566:4899:87;1432:103:44;;566:4899:87;;;;1432:103:44;;;;;:::i;:::-;566:4899:87;;1405:144:44;;-1:-1:-1;;1405:170:44;;9892:177:69:o"},"deployedBytecode":{"functionDebugData":{"abi_decode_address_fromMemory":{"entryPoint":11836,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":11867,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC4626":{"entryPoint":11492,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_contract_IERC4626t_addresst_uint256":{"entryPoint":11574,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_contract_IERC4626t_uint256t_uint256t_uint256t_address":{"entryPoint":11514,"id":null,"parameterSlots":1,"returnSlots":5},"abi_decode_uint256t_uint256_fromMemory":{"entryPoint":13922,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":11627,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes32_address_address":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_contract_IERC4626_uint256_uint256_uint256_address":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_uint256_uint256_bytes32":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":13778,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_contract_IERC20_dyn":{"entryPoint":13754,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":11950,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256_51362":{"entryPoint":11891,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_uint256":{"entryPoint":11982,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":11963,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":12037,"id":null,"parameterSlots":2,"returnSlots":1},"constant_AGGREGATE_YIELD_FEE_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_DECIMAL_SCALING_FACTORS_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":11771,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_51053":{"entryPoint":11678,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_51208":{"entryPoint":11743,"id":null,"parameterSlots":1,"returnSlots":0},"fun__setVaultPaused":{"entryPoint":14463,"id":22738,"parameterSlots":0,"returnSlots":0},"fun_accountDelta":{"entryPoint":16801,"id":24503,"parameterSlots":2,"returnSlots":0},"fun_authenticateCaller":{"entryPoint":14001,"id":5298,"parameterSlots":0,"returnSlots":0},"fun_burnBufferShares":{"entryPoint":15954,"id":24020,"parameterSlots":3,"returnSlots":0},"fun_disableQuery":{"entryPoint":16504,"id":23264,"parameterSlots":0,"returnSlots":0},"fun_ensureAuthenticated":{"entryPoint":17180,"id":24242,"parameterSlots":1,"returnSlots":0},"fun_ensureAuthenticatedByRole":{"entryPoint":16688,"id":24185,"parameterSlots":2,"returnSlots":0},"fun_ensureBufferInitialized":{"entryPoint":15813,"id":24774,"parameterSlots":1,"returnSlots":0},"fun_ensureBufferMinimumTotalSupply":{"entryPoint":16189,"id":24145,"parameterSlots":1,"returnSlots":0},"fun_ensurePoolNotInRecoveryMode":{"entryPoint":14663,"id":23161,"parameterSlots":1,"returnSlots":0},"fun_ensureRegisteredPool":{"entryPoint":15657,"id":24686,"parameterSlots":1,"returnSlots":0},"fun_ensureUnlocked":{"entryPoint":15732,"id":24402,"parameterSlots":0,"returnSlots":0},"fun_ensureVaultBuffersAreNotPaused":{"entryPoint":16134,"id":24648,"parameterSlots":0,"returnSlots":0},"fun_ensureVaultDelegateCall":{"entryPoint":13944,"id":30600,"parameterSlots":1,"returnSlots":0},"fun_getActionId":{"entryPoint":13653,"id":5316,"parameterSlots":1,"returnSlots":1},"fun_getAggregateYieldFeePercentage":{"entryPoint":17386,"id":29722,"parameterSlots":1,"returnSlots":1},"fun_insertUint":{"entryPoint":17043,"id":7149,"parameterSlots":2,"returnSlots":1},"fun_insertUint_51066":{"entryPoint":17109,"id":7149,"parameterSlots":3,"returnSlots":1},"fun_isVaultPaused":{"entryPoint":14601,"id":24553,"parameterSlots":0,"returnSlots":1},"fun_manualDisableRecoveryMode":{"entryPoint":12050,"id":34940,"parameterSlots":1,"returnSlots":0},"fun_mintBufferShares":{"entryPoint":16335,"id":23731,"parameterSlots":3,"returnSlots":0},"fun_mintMinimumBufferSupplyReserve":{"entryPoint":16244,"id":23677,"parameterSlots":1,"returnSlots":0},"fun_mulDivUp":{"entryPoint":16585,"id":7660,"parameterSlots":3,"returnSlots":1},"fun_nonReentrantBefore":{"entryPoint":15368,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_setPoolPaused":{"entryPoint":15087,"id":22842,"parameterSlots":1,"returnSlots":0},"fun_setPoolPaused_51051":{"entryPoint":14740,"id":22842,"parameterSlots":1,"returnSlots":0},"fun_setPoolRecoveryMode":{"entryPoint":15551,"id":23195,"parameterSlots":1,"returnSlots":0},"fun_setVaultPaused":{"entryPoint":14236,"id":22738,"parameterSlots":0,"returnSlots":0},"fun_supplyCredit":{"entryPoint":15890,"id":24430,"parameterSlots":2,"returnSlots":0},"fun_toInt256":{"entryPoint":16716,"id":44125,"parameterSlots":1,"returnSlots":1},"fun_toPackedBalance":{"entryPoint":15453,"id":5929,"parameterSlots":2,"returnSlots":1},"fun_updateRawAndLiveBalance":{"entryPoint":17421,"id":30517,"parameterSlots":3,"returnSlots":0},"memory_array_index_access_contract_IERC20_dyn":{"entryPoint":13857,"id":null,"parameterSlots":2,"returnSlots":1},"validator_assert_enum_TokenType":{"entryPoint":17331,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"5256":[{"length":32,"start":13696}],"27649":[{"length":32,"start":817},{"length":32,"start":900},{"length":32,"start":987},{"length":32,"start":1072},{"length":32,"start":1750},{"length":32,"start":2451},{"length":32,"start":2786},{"length":32,"start":2981},{"length":32,"start":3136},{"length":32,"start":3220},{"length":32,"start":3585},{"length":32,"start":4898},{"length":32,"start":4978},{"length":32,"start":5385},{"length":32,"start":5493},{"length":32,"start":5718},{"length":32,"start":6531},{"length":32,"start":6775},{"length":32,"start":6948},{"length":32,"start":7780},{"length":32,"start":7966},{"length":32,"start":9071},{"length":32,"start":9162},{"length":32,"start":9409},{"length":32,"start":9560},{"length":32,"start":11046},{"length":32,"start":11119},{"length":32,"start":11242},{"length":32,"start":11425}],"27733":[{"length":32,"start":1690}],"27735":[{"length":32,"start":9236}],"27740":[{"length":32,"start":15734}],"27745":[{"length":32,"start":16892},{"length":32,"start":16988}],"27750":[{"length":32,"start":16817}],"27804":[{"length":32,"start":6395},{"length":32,"start":6593},{"length":32,"start":14296}],"27806":[{"length":32,"start":4572},{"length":32,"start":6632},{"length":32,"start":14608}],"27808":[{"length":32,"start":3386},{"length":32,"start":4330},{"length":32,"start":9824},{"length":32,"start":15036},{"length":32,"start":15317}]},"linkReferences":{},"object":"6080604052600436101561009f575b361561007757346100775760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f803560e01c80630387587d14612c81578063058a628f14612bbf578063071d8a0214612ba7578063098401f514612b5a5780630b7562be14612b115780630b9df1f614612af05780631558356e14612a9057806316df26cb146129dc5780631f568ea31461268457806320c1fb7a1461264357806326a8a9911461262657806327521d0c146126005780632d7713891461252d5780632e42f4d5146125115780634021fe0f1461249657806352b9e33d1461243757806353956aa2146123fc57806355aca1ec146123a857806355cba7fe146123595780635dcacd6414611f075780635e0b06f414611e41578063653eb3b014611b0b5780636b23029114611af35780637578abb914611ad6578063821440f214611a61578063851c1bb314611a0f57806385c8c0151461196d57806388e5101a1461191f5780638a8d123a146118de5780638f4ab9ca146116385780639260d920146115b75780639385e39a1461153d5780639e0879c2146114f3578063a8175b27146114d7578063b61398cd146113f3578063b9212b491461135c578063bffb78b214611300578063c7b3b3a914611219578063cc671ff714611200578063cd51c12f146111bf578063d0965a6b146111a1578063d15126ba14610ddf578063d2c725e014610da0578063dc3f574e14610c74578063de1a36a614610c2a578063e085c5a814610b8f578063e0d5560514610acc578063e253670a14610970578063e2a92b1a146106bd578063e2cb0ba014610682578063e83388941461066a578063e99ac9a314610648578063ebc7955c14610410578063f21c38cd146103b9578063f2784e07146103585763fbfa77cf14610312575061000e565b3461035557806003193601126103555760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346103555760206003193601126103555760406020916001600160a01b0361037f612ce4565b6103a87f0000000000000000000000000000000000000000000000000000000000000000613678565b168152600d83522054604051908152f35b50346103555760206003193601126103555761040d6103d6612ce4565b6103ff7f0000000000000000000000000000000000000000000000000000000000000000613678565b61040881613d29565b613aef565b80f35b503461035557608060031936011261035557601f9061042d612ce4565b907f00000000000000000000000000000000000000000000000000000000000000009161045983613678565b6040517f5dcacd640000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b039390931660248084019190915235604480840191909152356064808401919091523560848301523360a480840191909152825291937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09284929091906104f460c482612dfb565b836001600160a01b03604489886040519c8d98899788947f48c8949100000000000000000000000000000000000000000000000000000000865260048601525180918160248701528686015e8685828601015201168101030193165af193841561063d578294610580575b60408461057487828082518301019101613662565b90918351928352820152f35b909193503d8085833e6105938183612dfb565b8101838282031261060457815167ffffffffffffffff9283821161063957019080601f83011215610635578151928311610608576105db8560405195601f8601160185612dfb565b82845284838301011161060457938382610574949382604098018386015e83010152925f61055f565b8480fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8580fd5b8680fd5b6040513d84823e3d90fd5b50346103555760206003193601126103555761040d610665612ce4565b613f74565b50346103555761040d61067c36612d36565b91613e52565b503461035557806003193601126103555760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5034610355576106cc36612cfa565b6106fa95919294957f0000000000000000000000000000000000000000000000000000000000000000613678565b610702613d74565b61070a613f06565b61071386613dc5565b61071b613c08565b6001600160a01b0392838716916040517f38d52e0f0000000000000000000000000000000000000000000000000000000081526020958682600481885afa918215610965578692610936575b50848652600e875280604087205416911680910361090657838552600b8652604085205497600d87526040862054916fffffffffffffffffffffffffffffffff8a16916107c46107b88588866140c9565b9b60801c9487866140c9565b99808c116108d25750808a1161089e57509361086f9361083f60409c946108398c6108338f6108519861082e8e6108257f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a99f61081f8661414c565b906141a1565b61081f8661414c565b612eae565b92612eae565b90613c5d565b93878952600b8a52848d8a2055613fcf565b8851918291888a846040919493926060820195825260208201520152565b0390a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d8351928352820152f35b876064918b897f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b886064918d857f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b84604491857f36b18d09000000000000000000000000000000000000000000000000000000008352600452602452fd5b610957919250873d891161095e575b61094f8183612dfb565b810190612e3c565b905f610767565b503d610945565b6040513d88823e3d90fd5b50346103555760406003193601126103555761098a612ce4565b602435906109b77f0000000000000000000000000000000000000000000000000000000000000000613678565b6109c081613d29565b670de0b6b3a76400008211610aa4576001600160a01b039081600a54163303610a7c571690818352826020526040832054670de0b5cad2bef0008211610a54577f606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca591610a3f602092610a30604290565b9064174876e8008404906142d5565b8486528583526040862055604051908152a280f35b6004847f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b6004837f4c69ac5d000000000000000000000000000000000000000000000000000000008152fd5b5034610355578060031936011261035557610b067f0000000000000000000000000000000000000000000000000000000000000000613678565b610b0e6136b1565b60ff60095416610b67577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe600754166007557f91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f58180a180f35b807f069f8cbc0000000000000000000000000000000000000000000000000000000060049252fd5b5034610355578060031936011261035557610bc97f0000000000000000000000000000000000000000000000000000000000000000613678565b610bd16136b1565b60047ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb60075416176007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5602060405160018152a180f35b5034610355578060031936011261035557610c647f0000000000000000000000000000000000000000000000000000000000000000613678565b610c6c6136b1565b61040d614078565b503461035557602060031936011261035557610c8e612ce4565b90610cb87f0000000000000000000000000000000000000000000000000000000000000000613678565b610cc182613d29565b610cca82613947565b6001600160a01b03821681528060205260408120549160018360021c1663ffffffff8094610cfe610cf9605a90565b612e73565b1c1681610d35575b5061040d9293501580610d26575b15613cbf57610d216136b1565b613cbf565b50610d2f613909565b15610d14565b9050837f0000000000000000000000000000000000000000000000000000000000000000160192808411610d735761040d9293164211158392610d06565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b503461035557806003193601126103555760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b503461035557604060031936011261035557610df9612ce4565b602435610e257f0000000000000000000000000000000000000000000000000000000000000000613678565b610e2e82613d29565b6001600160a01b0380831692838552602091600183526001604087200154169081155f1461117257610e60915061431c565b610e68613909565b61114a57828452838152604084205460018160021c169063ffffffff8091610e91610cf9605a90565b1c16826110e4575b50506110b8576040517fce20ece70000000000000000000000000000000000000000000000000000000081528181600481875afa90811561105857859161108b575b508210611063576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481875afa908115611058578591611027575b508211610fff57828452838152604084205491670de0b5cad2bef0008111610fd75764174876e8008104928360181c610faf577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff7f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a19486885287855260121b9116176040862055604051908152a280f35b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b6004857f746e5940000000000000000000000000000000000000000000000000000000008152fd5b6004847f7f47834b000000000000000000000000000000000000000000000000000000008152fd5b90508181813d8311611051575b61103e8183612dfb565b8101031261104d57515f610f1e565b5f80fd5b503d611034565b6040513d87823e3d90fd5b6004847fbfb20688000000000000000000000000000000000000000000000000000000008152fd5b90508181813d83116110b1575b6110a28183612dfb565b8101031261104d57515f610edb565b503d611098565b602484847fd971f597000000000000000000000000000000000000000000000000000000008252600452fd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161111d57164211155f80610e99565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004847fda9f8b34000000000000000000000000000000000000000000000000000000008152fd5b503314610e60576004847f23dada53000000000000000000000000000000000000000000000000000000008152fd5b50346103555780600319360112610355576020604051620f42408152f35b5034610355578060031936011261035557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461035557806003193601126103555761040d61387f565b50346103555761129a604061122d36612cfa565b9061123c969296949394613c08565b855196879586957f5dcacd640000000000000000000000000000000000000000000000000000000087526004870193608093969591929660a08601976001600160a01b03809516875260208701526040860152606085015216910152565b038185305af1801561063d576112d2575b50807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b6112f39060403d6040116112f9575b6112eb8183612dfb565b810190613662565b506112ab565b503d6112e1565b50346103555760206003193601126103555761040d61131d612ce4565b6113467f0000000000000000000000000000000000000000000000000000000000000000613678565b61134f81613d29565b6113576136b1565b612f12565b50346103555780600319360112610355576113967f0000000000000000000000000000000000000000000000000000000000000000613678565b61139e6136b1565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600754166007557f300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a560206040515f8152a180f35b503461035557611475602061140736612cfa565b90611416969296949394613c08565b60405196879586957f653eb3b00000000000000000000000000000000000000000000000000000000087526004870193608093969591929660a08601976001600160a01b03809516875260208701526040860152606085015216910152565b038185305af1801561063d576114ac5750807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b602090813d83116114d0575b6114c28183612dfb565b8101031261104d575f6112ab565b503d6114b8565b5034610355578060031936011261035557602060405160028152f35b503461035557806003193601126103555761152d7f0000000000000000000000000000000000000000000000000000000000000000613678565b6115356136b1565b61040d61379c565b503461035557604060031936011261035557611557612ce4565b602435916001600160a01b0380841680940361104d576040926115997f0000000000000000000000000000000000000000000000000000000000000000613678565b168152600c60205220905f52602052602060405f2054604051908152f35b50346103555761129a60406115cb36612cfa565b906115da969296949394613c08565b855196879586957fe2a92b1a0000000000000000000000000000000000000000000000000000000087526004870193608093969591929660a08601976001600160a01b03809516875260208701526040860152606085015216910152565b5034610355576020806003193601126118da57611653612ce4565b907f000000000000000000000000000000000000000000000000000000000000000061167e81613678565b611686613d74565b6001600160a01b039283600a541633036118b2579380846024876116aa8399613d29565b60405197889384927fca4f28030000000000000000000000000000000000000000000000000000000084521696876004840152165afa9384156118a5578194611809575b508351926117046116fe856135d2565b946135d2565b90825b86518110156117db57808861171e6001938a613621565b511686865260069081855260408720815f5285526fffffffffffffffffffffffffffffffff60405f20548060801c611756868a613621565b5216611762848b613621565b5261176d838a613621565b51158015906117c8575b611784575b505001611707565b6117c191888852855260408720815f5285528660405f20556117bb6117a9848b613621565b516117b48589613621565b5190612eae565b90613e12565b5f8061177c565b506117d38387613621565b511515611777565b6117f8866118058486604051948594604086526040860190612d6b565b9184830390850152612d6b565b0390f35b9093503d8085833e61181b8183612dfb565b81019083818303126106045780519067ffffffffffffffff821161063557019080601f83011215610604578151611851816135ba565b9261185f6040519485612dfb565b818452858085019260051b820101928311610639578501905b82821061188957505050925f6116ee565b815188811681036118a1578152908501908501611878565b8780fd5b50604051903d90823e3d90fd5b6004857f23dada53000000000000000000000000000000000000000000000000000000008152fd5b5080fd5b5034610355578060031936011261035557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461035557602060031936011261035557670de0b6b3a7640000600435116119455780f35b807f4c69ac5d0000000000000000000000000000000000000000000000000000000060049252fd5b50346103555780600319360112610355576119a77f0000000000000000000000000000000000000000000000000000000000000000613678565b60606119b1613909565b604051901515815263ffffffff807f00000000000000000000000000000000000000000000000000000000000000001660208301527f0000000000000000000000000000000000000000000000000000000000000000166040820152f35b503461035557602060031936011261035557600435907fffffffff0000000000000000000000000000000000000000000000000000000082168203610355576020611a5983613555565b604051908152f35b5034610355578060031936011261035557611a9b7f0000000000000000000000000000000000000000000000000000000000000000613678565b611aa36136b1565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00600954161760095561040d614078565b50346103555760206003193601126103555761040d611357612ce4565b50346103555761040d611b0536612d36565b91613fcf565b503461035557611b1a36612cfa565b9492611b489291927f0000000000000000000000000000000000000000000000000000000000000000613678565b611b50613d74565b611b58613f06565b611b60613c08565b6001600160a01b039586861693848652602097600e895280604088205416611e15576040517f38d52e0f00000000000000000000000000000000000000000000000000000000815289816004818a5afa908115611dc1578891611df8575b50168015611dcc57611c0690868852600e8a5260408820817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905561081f8561414c565b611c18611c128561414c565b866141a1565b611c228484613c5d565b91858752600b89528260408820556040517f4cdad50600000000000000000000000000000000000000000000000000000000815285600482015289816024818a5afa8015611dc15785908990611d90575b611c7d9250612eae565b97611c8789613f3d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f08901988911611d6357611cc59181611cc08b93613f74565b613fcf565b808710611d335750604080519283526020830193909352918101919091527f75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a990606090a27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051908152f35b85604491887fda0cb07e000000000000000000000000000000000000000000000000000000008352600452602452fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b50508981813d8311611dba575b611da78183612dfb565b8101031261104d5784611c7d9151611c73565b503d611d9d565b6040513d8a823e3d90fd5b602487877fd407f9c5000000000000000000000000000000000000000000000000000000008252600452fd5b611e0f91508a3d8c1161095e5761094f8183612dfb565b5f611bbe565b602487877f1690fa40000000000000000000000000000000000000000000000000000000008252600452fd5b503461035557604060031936011261035557611e5b612ce4565b60243590611e887f0000000000000000000000000000000000000000000000000000000000000000613678565b611e9181613d29565b670de0b6b3a76400008211610aa4576001600160a01b039081600a54163303610a7c571690818352826020526040832054670de0b5cad2bef0008211610a545781610a3f60209264174876e8007fe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354950490614293565b503461035557611f1636612cfa565b9490929193947f0000000000000000000000000000000000000000000000000000000000000000611f4681613678565b6001600160a01b038116330361232d57611f5e613d74565b611f6787613dc5565b32158080612320575b6122b8575b506001600160a01b0387168352600c602052604083206001600160a01b0383165f5260205260405f20548411612290576001600160a01b0387168352600b602052604083205495600d602052604084205496611ffd611fef89611fea896fffffffffffffffffffffffffffffffff8616612ebb565b612ece565b98611fea888460801c612ebb565b966001600160a01b038a168652600e6020526001600160a01b0360408720541692808a1061225c575080881061221f575061207b61209a9161203f8a85613e12565b612052896001600160a01b038d16613e12565b610839896120728c6fffffffffffffffffffffffffffffffff8516612f05565b9260801c612f05565b956001600160a01b038a168652600b602052866040872055848a613e52565b86612185575b50846120fc575b5050604080518581526020810185905280820193909352946001600160a01b0316917f44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee51139150606090a282519182526020820152f35b6001600160a01b0381163b15612181576001600160a01b03606488858381958160405198899788967fae6393290000000000000000000000000000000000000000000000000000000088521660048701521660248501528a6044850152165af1801561063d5761216d575b806120a7565b6121778291612d9e565b6103555780612167565b8280fd5b6001600160a01b0382163b1561221b57604051907fae63932900000000000000000000000000000000000000000000000000000000825260048201526001600160a01b03831660248201528660448201528381606481836001600160a01b0387165af18015612210579084916121fc575b506120a0565b61220590612d9e565b61218157825f6121f6565b6040513d86823e3d90fd5b8380fd5b85606491896001600160a01b038d7f8eda85e400000000000000000000000000000000000000000000000000000000855216600452602452604452fd5b866064918b867f8eda85e4000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b6004837f98c5dbd6000000000000000000000000000000000000000000000000000000008152fd5b156122f8576001600160a01b0387168352600c602052604083206001600160a01b0383165f5260205260405f206122f0858254612eae565b90555f611f75565b6004837f67f84ab2000000000000000000000000000000000000000000000000000000008152fd5b5060016007541615611f70565b6024837f089676d500000000000000000000000000000000000000000000000000000000815233600452fd5b50346103555780600319360112610355576123937f0000000000000000000000000000000000000000000000000000000000000000613678565b6020600160075460021c166040519015158152f35b50346103555760206003193601126103555761040d6123c5612ce4565b6123ee7f0000000000000000000000000000000000000000000000000000000000000000613678565b6123f781613d29565b613994565b503461035557806003193601126103555760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346103555760206003193601126103555761040d612454612ce4565b6001600160a01b0381168352600160205260408320337fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055613aef565b503461035557602060031936011261035557604080916001600160a01b036124bc612ce4565b6124e57f0000000000000000000000000000000000000000000000000000000000000000613678565b168152600b60205220548151906fffffffffffffffffffffffffffffffff8116825260801c6020820152f35b5034610355578060031936011261035557602060405160088152f35b5034610355576020600319360112610355576004356001600160a01b0381168091036118da5761257c7f0000000000000000000000000000000000000000000000000000000000000000613678565b6125846136b1565b61258c613c08565b807fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a557f280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df08280a2807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b50346103555760206003193601126103555761040d61261d612ce4565b610d2181613947565b503461035557806003193601126103555760206040516127108152f35b5034610355578060031936011261035557602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346103555760606003193601126103555761269e612ce4565b602435604435906001600160a01b0380931692838552602091600b835260408620549181612872575b5083612709575b90610839600b946126f46126fd946fffffffffffffffffffffffffffffffff8516612eae565b9260801c612eae565b92845252604082205580f35b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905283816064818a8a5af1801561283a57612845575b50848652600883526040862061276d858254612eae565b90556040517f4cdad5060000000000000000000000000000000000000000000000000000000081528460048201528381602481895afa90811561283a578791612806575b50600b946126f46126fd949361083993898b52600d885260408b206127d7828254612eae565b9055898b52600c885260408b20335f5288526127f860405f20918254612eae565b9055939450509450506126ce565b929190508383813d8311612833575b61281f8183612dfb565b8101031261104d579151909190600b6127b1565b503d612815565b6040513d89823e3d90fd5b61286490843d861161286b575b61285c8183612dfb565b810190612e5b565b505f612756565b503d612852565b6040517f38d52e0f000000000000000000000000000000000000000000000000000000009081815285816004818b5afa9081156129b45789916129bf575b506040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101859052908690829060649082908d9088165af180156129b457612997575b5060405190815284816004818a5afa908115611dc157889161297a575b501686526008835260408620612939828254612eae565b9055848652600d835260408620612951828254612eae565b9055848652600c835260408620335f52835260405f20612972828254612eae565b90555f6126c7565b6129919150853d871161095e5761094f8183612dfb565b5f612922565b6129ad90863d881161286b5761285c8183612dfb565b505f612905565b6040513d8b823e3d90fd5b6129d69150863d881161095e5761094f8183612dfb565b5f6128b0565b503461104d57602060031936011261104d576129f6612ce4565b6129fe613c08565b303b1561104d576001600160a01b03604051917fbffb78b20000000000000000000000000000000000000000000000000000000083521660048201525f8160248183305af18015612a8557612a745750807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b612a7e9150612d9e565b5f806112ab565b6040513d5f823e3d90fd5b3461104d57602060031936011261104d57612aee612aac612ce4565b6001600160a01b0381165f52600160205260405f20337fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055613994565b005b3461104d57602060031936011261104d57612aee612b0c612ce4565b613947565b3461104d575f60031936011261104d57612b4a7f0000000000000000000000000000000000000000000000000000000000000000613678565b612b526136b1565b612aee61387f565b3461104d575f60031936011261104d57612b937f0000000000000000000000000000000000000000000000000000000000000000613678565b6020612b9d613909565b6040519015158152f35b3461104d575f60031936011261104d57612aee61379c565b3461104d57602060031936011261104d576004356001600160a01b0381169081810361104d57612c0e7f0000000000000000000000000000000000000000000000000000000000000000613678565b612c166136b1565b7fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006009549260081b169116176009557f94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef5f80a2005b3461104d57602060031936011261104d576020612c9c612ce4565b612cc57f0000000000000000000000000000000000000000000000000000000000000000613678565b6001600160a01b038091165f52600e825260405f205416604051908152f35b600435906001600160a01b038216820361104d57565b60031960a091011261104d576001600160a01b03600435818116810361104d5791602435916044359160643591608435908116810361104d5790565b600319606091011261104d576001600160a01b0390600435828116810361104d5791602435908116810361104d579060443590565b9081518082526020808093019301915f5b828110612d8a575050505090565b835185529381019392810192600101612d7c565b67ffffffffffffffff8111612db257604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff821117612db257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612db257604052565b9081602091031261104d57516001600160a01b038116810361104d5790565b9081602091031261104d5751801515810361104d5790565b9060288201809211612e8157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91908201809211612e8157565b81810292918115918404141715612e8157565b8115612ed8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b91908203918211612e8157565b906001600160a01b0382165f525f602052600160405f205460031c161561352057612f3b613c08565b6040519160e0830183811067ffffffffffffffff821117612db2576040525f8352606060208401526060604084015260608084015260606080840152606060a0840152606060c08401526001600160a01b0381165f52600560205260405f205f60205260405f205490600460205260405f2090600360205260405f2080549387526040519060208286815201905f528160205f20915f5b8781106134fd5750612fe692500382612dfb565b6020870152612ff4836135ba565b6130016040519182612dfb565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061302e856135ba565b015f5b8181106134d45750506040870152613048836135d2565b6060870152613056836135d2565b6080870152855164ffffffffff61306c856135d2565b91605a1c165f5b85811061349857505060c087015261308a836135d2565b60a0870152855191600183811c169283613484575b5082613474575b5f5b8481106131a15750505050506001600160a01b0381165f52600560205260405f20905f5b6060850151805182101561311257906131006130ea82600194613621565b516130f98360808a0151613621565b5190613c5d565b815f528460205260405f2055016130cc565b5050919250505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6001600160a01b03165f8181526020818152604080832080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7169055519182527fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a991a2565b6001600160a01b036131b78260208b0151613621565b51165f528160205260405f2090604051916131d183612ddf565b5460ff908181166131e1816143b3565b84526001600160a01b038160081c16602085015260a81c1615156040830152805f528360205260405f2054916132278260408c0151836132218383613621565b52613621565b508051613233816143b3565b61323c816143b3565b806133b85750670de0b6b3a76400005b61325a8360a08d0151613621565b526132786fffffffffffffffffffffffffffffffff8416838c61440d565b85156133ae57604081015115159081613390575b5061329d575b600191505b016130a8565b886132a881516143ea565b6132b6836060840151613621565b519360801c6132ca8460805f950151613621565b51818111613301575b505050600192816132e6575b5050613292565b6132fa916132f391612f05565b828b61440d565b5f806132df565b61330c935003612ebb565b91670de0b6b3a7640000926001847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150261336b8b6133648560a061335b8260c0860151613621565b51930151613621565b5190612ebb565b8185810204851482151715612e81576001946133879202612ece565b90925f806132d3565b600191505161339e816143b3565b6133a7816143b3565b145f61328c565b5060019150613297565b806133c46001926143b3565b0361344c57600460206001600160a01b038184015116604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115612a85575f9161341a575b5061324c565b90506020813d602011613444575b8161343560209383612dfb565b8101031261104d57515f613414565b3d9150613428565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b865160031c6001161592506130a6565b61348f9193506143ea565b1515915f61309f565b600581029080820460051481151715612e8157604d601f84841c1611612e8157601f836001931c16600a0a6134cd8286613621565b5201613073565b6020906040516134e381612ddf565b5f81525f838201525f604082015282828601015201613031565b91506001602081926001600160a01b038654168152019301910191839192612fd2565b6001600160a01b03827fef029adf000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526135b481612ddf565b51902090565b67ffffffffffffffff8111612db25760051b60200190565b906135dc826135ba565b6135e96040519182612dfb565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061361782946135ba565b0190602036910137565b80518210156136355760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082604091031261104d576020825192015190565b6001600160a01b0316300361368957565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b61373b60206136e27fffffffff000000000000000000000000000000000000000000000000000000005f3516613555565b6009546040517f9be2a88400000000000000000000000000000000000000000000000000000000815260048101929092523360248301523060448301529092839160081c6001600160a01b031690829081906064820190565b03915afa908115612a85575f9161377d575b501561375557565b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b613796915060203d60201161286b5761285c8183612dfb565b5f61374d565b6137a4613909565b156137d1577fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164210156138575760027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416176007557fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02602060405160018152a1565b7f0e4460b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b613887613909565b156138e1577fe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d0260205f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60075416600755604051908152a1565b7ff7ff4dca000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164211158061393b5790565b506001600754811c1690565b6001600160a01b0316805f525f602052600160405f205460031c166139695750565b7f346d7607000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6139b86001600160a01b039182811692835f52600160205260405f20541690614130565b805f525f60205260405f205460018160021c1663ffffffff9081836139de610cf9605a90565b1c1681613ab7575b5015613a1857827fd971f597000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b81613a23605a612e73565b1c16421015613a8b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb600491835f525f602052161760405f20557f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7602060405160018152a2565b507feb5a1217000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9050817f00000000000000000000000000000000000000000000000000000000000000001601818111612e815781164211155f6139e6565b613b136001600160a01b039182811692835f52600160205260405f20541690614130565b805f525f60205260405f205460018160021c1663ffffffff8083613b38610cf9605a90565b1c1682613bcf575b505015613ba35760207f57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb5f91858352828452166040822055604051908152a2565b507ffdcd6894000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908092507f00000000000000000000000000000000000000000000000000000000000000001601818111612e8157164211155f80613b40565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c613c35576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b6fffffffffffffffffffffffffffffffff808211908115613cb5575b50613c8d57613c8a9160801b612eae565b90565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905082115f613c79565b6001600160a01b0316805f525f60205260405f2060087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff78254161790557fc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9602060405160018152a2565b6001600160a01b0316805f525f602052600160405f20541615613d495750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000005c15613d9d57565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0380911690815f52600e60205260405f20541615613de75750565b7f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b90613e1c9061414c565b907f80000000000000000000000000000000000000000000000000000000000000008214612e8157613e50915f03906141a1565b565b91906001600160a01b03809116928315613ede577f4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b916020911692835f52600d8252613ea28160405f2054612f05565b613eab81613f3d565b845f52600d835260405f2055600c825260405f20855f52825260405f20613ed3828254612f05565b9055604051908152a3565b7f586d06df000000000000000000000000000000000000000000000000000000005f5260045ffd5b600160075460021c16613f1557565b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b6127108110613f495750565b7f34bdbfaa000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b035f9116808252600d6020527fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec346020612710806040862055600c8252604085208580528252806040862055604051908152a3565b91906001600160a01b03809116928315614050577fd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34916020911692835f52600d825261401f8160405f2054612eae565b61402881613f3d565b845f52600d835260405f2055600c825260405f20855f52825260405f20613ed3828254612eae565b7fdbe6b10e000000000000000000000000000000000000000000000000000000005f5260045ffd5b60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60075416176007557fbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc6255f80a1565b8215614108576001916140db91612ebb565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b0316331461414957613e509061431c565b50565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116141765790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b811561428f576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000009116805f528160205260405f205c8381019384125f8212908015821691151617612e81578361425657507f0000000000000000000000000000000000000000000000000000000000000000805c907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211612e81575d5b5f5260205260405f205d565b61424a577f0000000000000000000000000000000000000000000000000000000000000000805c9060018201809211612e81575d61424a565b5050565b908060181c610faf57602a1b9062ffffff602a1b19161790565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b90610100808410156142ad57838103908111612e81578060ff105f14614317575060ff5b6018116142ad578060181c610faf5762ffffff90831b921b19161790565b6142f9565b602061373b9161434e7fffffffff000000000000000000000000000000000000000000000000000000005f3516613555565b6001600160a01b0360095460081c16906040518095819482937f9be2a884000000000000000000000000000000000000000000000000000000008452339060048501916040919493606084019584526001600160a01b03809216602085015216910152565b600211156143bd57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b62ffffff9060421c1664174876e80090818102918183041490151715612e815790565b91906080670de0b6b3a764000061445d61446694806144308660608a0151613621565b526144586144428660c08a0151613621565b516144518760a08b0151613621565b5192612ebb565b612ebb565b04930151613621565b5256fea2646970667358221220f0cdce6fa55260c39d9b5268d492dfe7039adbc30eba8b1d95665eb1778fb6a064736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x9F JUMPI JUMPDEST CALLDATASIZE ISZERO PUSH2 0x77 JUMPI CALLVALUE PUSH2 0x77 JUMPI PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x387587D EQ PUSH2 0x2C81 JUMPI DUP1 PUSH4 0x58A628F EQ PUSH2 0x2BBF JUMPI DUP1 PUSH4 0x71D8A02 EQ PUSH2 0x2BA7 JUMPI DUP1 PUSH4 0x98401F5 EQ PUSH2 0x2B5A JUMPI DUP1 PUSH4 0xB7562BE EQ PUSH2 0x2B11 JUMPI DUP1 PUSH4 0xB9DF1F6 EQ PUSH2 0x2AF0 JUMPI DUP1 PUSH4 0x1558356E EQ PUSH2 0x2A90 JUMPI DUP1 PUSH4 0x16DF26CB EQ PUSH2 0x29DC JUMPI DUP1 PUSH4 0x1F568EA3 EQ PUSH2 0x2684 JUMPI DUP1 PUSH4 0x20C1FB7A EQ PUSH2 0x2643 JUMPI DUP1 PUSH4 0x26A8A991 EQ PUSH2 0x2626 JUMPI DUP1 PUSH4 0x27521D0C EQ PUSH2 0x2600 JUMPI DUP1 PUSH4 0x2D771389 EQ PUSH2 0x252D JUMPI DUP1 PUSH4 0x2E42F4D5 EQ PUSH2 0x2511 JUMPI DUP1 PUSH4 0x4021FE0F EQ PUSH2 0x2496 JUMPI DUP1 PUSH4 0x52B9E33D EQ PUSH2 0x2437 JUMPI DUP1 PUSH4 0x53956AA2 EQ PUSH2 0x23FC JUMPI DUP1 PUSH4 0x55ACA1EC EQ PUSH2 0x23A8 JUMPI DUP1 PUSH4 0x55CBA7FE EQ PUSH2 0x2359 JUMPI DUP1 PUSH4 0x5DCACD64 EQ PUSH2 0x1F07 JUMPI DUP1 PUSH4 0x5E0B06F4 EQ PUSH2 0x1E41 JUMPI DUP1 PUSH4 0x653EB3B0 EQ PUSH2 0x1B0B JUMPI DUP1 PUSH4 0x6B230291 EQ PUSH2 0x1AF3 JUMPI DUP1 PUSH4 0x7578ABB9 EQ PUSH2 0x1AD6 JUMPI DUP1 PUSH4 0x821440F2 EQ PUSH2 0x1A61 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1A0F JUMPI DUP1 PUSH4 0x85C8C015 EQ PUSH2 0x196D JUMPI DUP1 PUSH4 0x88E5101A EQ PUSH2 0x191F JUMPI DUP1 PUSH4 0x8A8D123A EQ PUSH2 0x18DE JUMPI DUP1 PUSH4 0x8F4AB9CA EQ PUSH2 0x1638 JUMPI DUP1 PUSH4 0x9260D920 EQ PUSH2 0x15B7 JUMPI DUP1 PUSH4 0x9385E39A EQ PUSH2 0x153D JUMPI DUP1 PUSH4 0x9E0879C2 EQ PUSH2 0x14F3 JUMPI DUP1 PUSH4 0xA8175B27 EQ PUSH2 0x14D7 JUMPI DUP1 PUSH4 0xB61398CD EQ PUSH2 0x13F3 JUMPI DUP1 PUSH4 0xB9212B49 EQ PUSH2 0x135C JUMPI DUP1 PUSH4 0xBFFB78B2 EQ PUSH2 0x1300 JUMPI DUP1 PUSH4 0xC7B3B3A9 EQ PUSH2 0x1219 JUMPI DUP1 PUSH4 0xCC671FF7 EQ PUSH2 0x1200 JUMPI DUP1 PUSH4 0xCD51C12F EQ PUSH2 0x11BF JUMPI DUP1 PUSH4 0xD0965A6B EQ PUSH2 0x11A1 JUMPI DUP1 PUSH4 0xD15126BA EQ PUSH2 0xDDF JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0xDA0 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0xC74 JUMPI DUP1 PUSH4 0xDE1A36A6 EQ PUSH2 0xC2A JUMPI DUP1 PUSH4 0xE085C5A8 EQ PUSH2 0xB8F JUMPI DUP1 PUSH4 0xE0D55605 EQ PUSH2 0xACC JUMPI DUP1 PUSH4 0xE253670A EQ PUSH2 0x970 JUMPI DUP1 PUSH4 0xE2A92B1A EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xE2CB0BA0 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0xE8338894 EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0xE99AC9A3 EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0xEBC7955C EQ PUSH2 0x410 JUMPI DUP1 PUSH4 0xF21C38CD EQ PUSH2 0x3B9 JUMPI DUP1 PUSH4 0xF2784E07 EQ PUSH2 0x358 JUMPI PUSH4 0xFBFA77CF EQ PUSH2 0x312 JUMPI POP PUSH2 0xE JUMP JUMPDEST CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x20 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x37F PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3A8 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xD DUP4 MSTORE KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x3D6 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3FF PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x408 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x3AEF JUMP JUMPDEST DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x1F SWAP1 PUSH2 0x42D PUSH2 0x2CE4 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP2 PUSH2 0x459 DUP4 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5DCACD6400000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x24 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x64 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLDATALOAD PUSH1 0x84 DUP4 ADD MSTORE CALLER PUSH1 0xA4 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MSTORE SWAP2 SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP3 DUP5 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x4F4 PUSH1 0xC4 DUP3 PUSH2 0x2DFB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x44 DUP10 DUP9 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP9 DUP10 SWAP8 DUP9 SWAP5 PUSH32 0x48C8949100000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x24 DUP8 ADD MSTORE DUP7 DUP7 ADD MCOPY DUP7 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND DUP2 ADD SUB ADD SWAP4 AND GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x63D JUMPI DUP3 SWAP5 PUSH2 0x580 JUMPI JUMPDEST PUSH1 0x40 DUP5 PUSH2 0x574 DUP8 DUP3 DUP1 DUP3 MLOAD DUP4 ADD ADD SWAP2 ADD PUSH2 0x3662 JUMP JUMPDEST SWAP1 SWAP2 DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 SWAP4 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x593 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD DUP4 DUP3 DUP3 SUB SLT PUSH2 0x604 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP3 GT PUSH2 0x639 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x635 JUMPI DUP2 MLOAD SWAP3 DUP4 GT PUSH2 0x608 JUMPI PUSH2 0x5DB DUP6 PUSH1 0x40 MLOAD SWAP6 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0x2DFB JUMP JUMPDEST DUP3 DUP5 MSTORE DUP5 DUP4 DUP4 ADD ADD GT PUSH2 0x604 JUMPI SWAP4 DUP4 DUP3 PUSH2 0x574 SWAP5 SWAP4 DUP3 PUSH1 0x40 SWAP9 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP3 PUSH0 PUSH2 0x55F JUMP JUMPDEST DUP5 DUP1 REVERT JUMPDEST PUSH1 0x24 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP7 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x665 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3F74 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x67C CALLDATASIZE PUSH2 0x2D36 JUMP JUMPDEST SWAP2 PUSH2 0x3E52 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x6CC CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST PUSH2 0x6FA SWAP6 SWAP2 SWAP3 SWAP5 SWAP6 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x702 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x70A PUSH2 0x3F06 JUMP JUMPDEST PUSH2 0x713 DUP7 PUSH2 0x3DC5 JUMP JUMPDEST PUSH2 0x71B PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP8 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP6 DUP7 DUP3 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x965 JUMPI DUP7 SWAP3 PUSH2 0x936 JUMPI JUMPDEST POP DUP5 DUP7 MSTORE PUSH1 0xE DUP8 MSTORE DUP1 PUSH1 0x40 DUP8 KECCAK256 SLOAD AND SWAP2 AND DUP1 SWAP2 SUB PUSH2 0x906 JUMPI DUP4 DUP6 MSTORE PUSH1 0xB DUP7 MSTORE PUSH1 0x40 DUP6 KECCAK256 SLOAD SWAP8 PUSH1 0xD DUP8 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP2 PUSH2 0x7C4 PUSH2 0x7B8 DUP6 DUP9 DUP7 PUSH2 0x40C9 JUMP JUMPDEST SWAP12 PUSH1 0x80 SHR SWAP5 DUP8 DUP7 PUSH2 0x40C9 JUMP JUMPDEST SWAP10 DUP1 DUP13 GT PUSH2 0x8D2 JUMPI POP DUP1 DUP11 GT PUSH2 0x89E JUMPI POP SWAP4 PUSH2 0x86F SWAP4 PUSH2 0x83F PUSH1 0x40 SWAP13 SWAP5 PUSH2 0x839 DUP13 PUSH2 0x833 DUP16 PUSH2 0x851 SWAP9 PUSH2 0x82E DUP15 PUSH2 0x825 PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP16 PUSH2 0x81F DUP7 PUSH2 0x414C JUMP JUMPDEST SWAP1 PUSH2 0x41A1 JUMP JUMPDEST PUSH2 0x81F DUP7 PUSH2 0x414C JUMP JUMPDEST PUSH2 0x2EAE JUMP JUMPDEST SWAP3 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 PUSH2 0x3C5D JUMP JUMPDEST SWAP4 DUP8 DUP10 MSTORE PUSH1 0xB DUP11 MSTORE DUP5 DUP14 DUP11 KECCAK256 SSTORE PUSH2 0x3FCF JUMP JUMPDEST DUP9 MLOAD SWAP2 DUP3 SWAP2 DUP9 DUP11 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP4 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD MSTORE RETURN JUMPDEST DUP8 PUSH1 0x64 SWAP2 DUP12 DUP10 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP9 PUSH1 0x64 SWAP2 DUP14 DUP6 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP5 PUSH1 0x44 SWAP2 DUP6 PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH2 0x957 SWAP2 SWAP3 POP DUP8 RETURNDATASIZE DUP10 GT PUSH2 0x95E JUMPI JUMPDEST PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2E3C JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x767 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x945 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP9 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x98A PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x9B7 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x9C0 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xAA4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xA7C JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xA54 JUMPI PUSH32 0x606EB97D83164BD6B200D638CD49C14C65D94D4F2C674CFD85E24E0E202C3CA5 SWAP2 PUSH2 0xA3F PUSH1 0x20 SWAP3 PUSH2 0xA30 PUSH1 0x42 SWAP1 JUMP JUMPDEST SWAP1 PUSH5 0x174876E800 DUP5 DIV SWAP1 PUSH2 0x42D5 JUMP JUMPDEST DUP5 DUP7 MSTORE DUP6 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xB06 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xB0E PUSH2 0x36B1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH2 0xB67 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x91D7478835F2B5ADC315F5AAD920F4A7F0A02F7FDDF3042D17B2C80168EA17F5 DUP2 DUP1 LOG1 DUP1 RETURN JUMPDEST DUP1 PUSH32 0x69F8CBC00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xBC9 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xBD1 PUSH2 0x36B1 JUMP JUMPDEST PUSH1 0x4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xC64 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xC6C PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x40D PUSH2 0x4078 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xC8E PUSH2 0x2CE4 JUMP JUMPDEST SWAP1 PUSH2 0xCB8 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xCC1 DUP3 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0xCCA DUP3 PUSH2 0x3947 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 PUSH1 0x1 DUP4 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 SWAP5 PUSH2 0xCFE PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST PUSH2 0x2E73 JUMP JUMPDEST SHR AND DUP2 PUSH2 0xD35 JUMPI JUMPDEST POP PUSH2 0x40D SWAP3 SWAP4 POP ISZERO DUP1 PUSH2 0xD26 JUMPI JUMPDEST ISZERO PUSH2 0x3CBF JUMPI PUSH2 0xD21 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x3CBF JUMP JUMPDEST POP PUSH2 0xD2F PUSH2 0x3909 JUMP JUMPDEST ISZERO PUSH2 0xD14 JUMP JUMPDEST SWAP1 POP DUP4 PUSH32 0x0 AND ADD SWAP3 DUP1 DUP5 GT PUSH2 0xD73 JUMPI PUSH2 0x40D SWAP3 SWAP4 AND TIMESTAMP GT ISZERO DUP4 SWAP3 PUSH2 0xD06 JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0xDF9 PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0xE25 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0xE2E DUP3 PUSH2 0x3D29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP3 DUP4 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x40 DUP8 KECCAK256 ADD SLOAD AND SWAP1 DUP2 ISZERO PUSH0 EQ PUSH2 0x1172 JUMPI PUSH2 0xE60 SWAP2 POP PUSH2 0x431C JUMP JUMPDEST PUSH2 0xE68 PUSH2 0x3909 JUMP JUMPDEST PUSH2 0x114A JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0xE91 PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x10E4 JUMPI JUMPDEST POP POP PUSH2 0x10B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1058 JUMPI DUP6 SWAP2 PUSH2 0x108B JUMPI JUMPDEST POP DUP3 LT PUSH2 0x1063 JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1058 JUMPI DUP6 SWAP2 PUSH2 0x1027 JUMPI JUMPDEST POP DUP3 GT PUSH2 0xFFF JUMPI DUP3 DUP5 MSTORE DUP4 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD SWAP2 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0xFD7 JUMPI PUSH5 0x174876E800 DUP2 DIV SWAP3 DUP4 PUSH1 0x18 SHR PUSH2 0xFAF JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP5 DUP7 DUP9 MSTORE DUP8 DUP6 MSTORE PUSH1 0x12 SHL SWAP2 AND OR PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 DUP1 RETURN JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1051 JUMPI JUMPDEST PUSH2 0x103E DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH0 PUSH2 0xF1E JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x1034 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP8 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP DUP2 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x10B1 JUMPI JUMPDEST PUSH2 0x10A2 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH0 PUSH2 0xEDB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1098 JUMP JUMPDEST PUSH1 0x24 DUP5 DUP5 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x111D JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0xE99 JUMP JUMPDEST PUSH1 0x24 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLER EQ PUSH2 0xE60 JUMPI PUSH1 0x4 DUP5 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH3 0xF4240 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x387F JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x129A PUSH1 0x40 PUSH2 0x122D CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP1 PUSH2 0x123C SWAP7 SWAP3 SWAP7 SWAP5 SWAP4 SWAP5 PUSH2 0x3C08 JUMP JUMPDEST DUP6 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH32 0x5DCACD6400000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD SWAP4 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP2 SWAP3 SWAP7 PUSH1 0xA0 DUP7 ADD SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP6 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP6 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x63D JUMPI PUSH2 0x12D2 JUMPI JUMPDEST POP DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST PUSH2 0x12F3 SWAP1 PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x12F9 JUMPI JUMPDEST PUSH2 0x12EB DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3662 JUMP JUMPDEST POP PUSH2 0x12AB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x12E1 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x131D PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x1346 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x134F DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x1357 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x2F12 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1396 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x139E PUSH2 0x36B1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH32 0x300C7CA619EB846386AA0A6E5916AC2A41406448B0A2E99BA9CCAFEB899015A5 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE LOG1 DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x1475 PUSH1 0x20 PUSH2 0x1407 CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP1 PUSH2 0x1416 SWAP7 SWAP3 SWAP7 SWAP5 SWAP4 SWAP5 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH32 0x653EB3B000000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD SWAP4 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP2 SWAP3 SWAP7 PUSH1 0xA0 DUP7 ADD SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP6 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP6 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x63D JUMPI PUSH2 0x14AC JUMPI POP DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST PUSH1 0x20 SWAP1 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x14D0 JUMPI JUMPDEST PUSH2 0x14C2 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI PUSH0 PUSH2 0x12AB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14B8 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x2 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x152D PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1535 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x40D PUSH2 0x379C JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1557 PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND DUP1 SWAP5 SUB PUSH2 0x104D JUMPI PUSH1 0x40 SWAP3 PUSH2 0x1599 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x129A PUSH1 0x40 PUSH2 0x15CB CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP1 PUSH2 0x15DA SWAP7 SWAP3 SWAP7 SWAP5 SWAP4 SWAP5 PUSH2 0x3C08 JUMP JUMPDEST DUP6 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP6 PUSH32 0xE2A92B1A00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE PUSH1 0x4 DUP8 ADD SWAP4 PUSH1 0x80 SWAP4 SWAP7 SWAP6 SWAP2 SWAP3 SWAP7 PUSH1 0xA0 DUP7 ADD SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP6 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x18DA JUMPI PUSH2 0x1653 PUSH2 0x2CE4 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0x167E DUP2 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1686 PUSH2 0x3D74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0x18B2 JUMPI SWAP4 DUP1 DUP5 PUSH1 0x24 DUP8 PUSH2 0x16AA DUP4 SWAP10 PUSH2 0x3D29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP4 DUP5 SWAP3 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP5 MSTORE AND SWAP7 DUP8 PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x18A5 JUMPI DUP2 SWAP5 PUSH2 0x1809 JUMPI JUMPDEST POP DUP4 MLOAD SWAP3 PUSH2 0x1704 PUSH2 0x16FE DUP6 PUSH2 0x35D2 JUMP JUMPDEST SWAP5 PUSH2 0x35D2 JUMP JUMPDEST SWAP1 DUP3 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x17DB JUMPI DUP1 DUP9 PUSH2 0x171E PUSH1 0x1 SWAP4 DUP11 PUSH2 0x3621 JUMP JUMPDEST MLOAD AND DUP7 DUP7 MSTORE PUSH1 0x6 SWAP1 DUP2 DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP1 PUSH1 0x80 SHR PUSH2 0x1756 DUP7 DUP11 PUSH2 0x3621 JUMP JUMPDEST MSTORE AND PUSH2 0x1762 DUP5 DUP12 PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x176D DUP4 DUP11 PUSH2 0x3621 JUMP JUMPDEST MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0x17C8 JUMPI JUMPDEST PUSH2 0x1784 JUMPI JUMPDEST POP POP ADD PUSH2 0x1707 JUMP JUMPDEST PUSH2 0x17C1 SWAP2 DUP9 DUP9 MSTORE DUP6 MSTORE PUSH1 0x40 DUP8 KECCAK256 DUP2 PUSH0 MSTORE DUP6 MSTORE DUP7 PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH2 0x17BB PUSH2 0x17A9 DUP5 DUP12 PUSH2 0x3621 JUMP JUMPDEST MLOAD PUSH2 0x17B4 DUP6 DUP10 PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2EAE JUMP JUMPDEST SWAP1 PUSH2 0x3E12 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x177C JUMP JUMPDEST POP PUSH2 0x17D3 DUP4 DUP8 PUSH2 0x3621 JUMP JUMPDEST MLOAD ISZERO ISZERO PUSH2 0x1777 JUMP JUMPDEST PUSH2 0x17F8 DUP7 PUSH2 0x1805 DUP5 DUP7 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x2D6B JUMP JUMPDEST SWAP2 DUP5 DUP4 SUB SWAP1 DUP6 ADD MSTORE PUSH2 0x2D6B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0x181B DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 DUP4 DUP2 DUP4 SUB SLT PUSH2 0x604 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x635 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x604 JUMPI DUP2 MLOAD PUSH2 0x1851 DUP2 PUSH2 0x35BA JUMP JUMPDEST SWAP3 PUSH2 0x185F PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x2DFB JUMP JUMPDEST DUP2 DUP5 MSTORE DUP6 DUP1 DUP6 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x639 JUMPI DUP6 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1889 JUMPI POP POP POP SWAP3 PUSH0 PUSH2 0x16EE JUMP JUMPDEST DUP2 MLOAD DUP9 DUP2 AND DUP2 SUB PUSH2 0x18A1 JUMPI DUP2 MSTORE SWAP1 DUP6 ADD SWAP1 DUP6 ADD PUSH2 0x1878 JUMP JUMPDEST DUP8 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP6 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH1 0x4 CALLDATALOAD GT PUSH2 0x1945 JUMPI DUP1 RETURN JUMPDEST DUP1 PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 PUSH1 0x4 SWAP3 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x19A7 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x19B1 PUSH2 0x3909 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH4 0xFFFFFFFF DUP1 PUSH32 0x0 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x355 JUMPI PUSH1 0x20 PUSH2 0x1A59 DUP4 PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1A9B PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1AA3 PUSH2 0x36B1 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD AND OR PUSH1 0x9 SSTORE PUSH2 0x40D PUSH2 0x4078 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x1357 PUSH2 0x2CE4 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x1B05 CALLDATASIZE PUSH2 0x2D36 JUMP JUMPDEST SWAP2 PUSH2 0x3FCF JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x1B1A CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP5 SWAP3 PUSH2 0x1B48 SWAP3 SWAP2 SWAP3 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1B50 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x1B58 PUSH2 0x3F06 JUMP JUMPDEST PUSH2 0x1B60 PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 DUP7 AND SWAP4 DUP5 DUP7 MSTORE PUSH1 0x20 SWAP8 PUSH1 0xE DUP10 MSTORE DUP1 PUSH1 0x40 DUP9 KECCAK256 SLOAD AND PUSH2 0x1E15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP10 DUP2 PUSH1 0x4 DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1DC1 JUMPI DUP9 SWAP2 PUSH2 0x1DF8 JUMPI JUMPDEST POP AND DUP1 ISZERO PUSH2 0x1DCC JUMPI PUSH2 0x1C06 SWAP1 DUP7 DUP9 MSTORE PUSH1 0xE DUP11 MSTORE PUSH1 0x40 DUP9 KECCAK256 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x81F DUP6 PUSH2 0x414C JUMP JUMPDEST PUSH2 0x1C18 PUSH2 0x1C12 DUP6 PUSH2 0x414C JUMP JUMPDEST DUP7 PUSH2 0x41A1 JUMP JUMPDEST PUSH2 0x1C22 DUP5 DUP5 PUSH2 0x3C5D JUMP JUMPDEST SWAP2 DUP6 DUP8 MSTORE PUSH1 0xB DUP10 MSTORE DUP3 PUSH1 0x40 DUP9 KECCAK256 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP6 PUSH1 0x4 DUP3 ADD MSTORE DUP10 DUP2 PUSH1 0x24 DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0x1DC1 JUMPI DUP6 SWAP1 DUP10 SWAP1 PUSH2 0x1D90 JUMPI JUMPDEST PUSH2 0x1C7D SWAP3 POP PUSH2 0x2EAE JUMP JUMPDEST SWAP8 PUSH2 0x1C87 DUP10 PUSH2 0x3F3D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8F0 DUP10 ADD SWAP9 DUP10 GT PUSH2 0x1D63 JUMPI PUSH2 0x1CC5 SWAP2 DUP2 PUSH2 0x1CC0 DUP12 SWAP4 PUSH2 0x3F74 JUMP JUMPDEST PUSH2 0x3FCF JUMP JUMPDEST DUP1 DUP8 LT PUSH2 0x1D33 JUMPI POP PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x75C4DC5F23640EEBA7D404D9165F515FC3D9E23A5C8B6E2D09B4B9DA56FF00A9 SWAP1 PUSH1 0x60 SWAP1 LOG2 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP6 PUSH1 0x44 SWAP2 DUP9 PUSH32 0xDA0CB07E00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE REVERT JUMPDEST PUSH1 0x24 DUP9 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST POP POP DUP10 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1DBA JUMPI JUMPDEST PUSH2 0x1DA7 DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI DUP5 PUSH2 0x1C7D SWAP2 MLOAD PUSH2 0x1C73 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1D9D JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP11 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0xD407F9C500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH2 0x1E0F SWAP2 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x95E JUMPI PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x24 DUP8 DUP8 PUSH32 0x1690FA4000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x1E5B PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1E88 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x1E91 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP3 GT PUSH2 0xAA4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 PUSH1 0xA SLOAD AND CALLER SUB PUSH2 0xA7C JUMPI AND SWAP1 DUP2 DUP4 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0xA54 JUMPI DUP2 PUSH2 0xA3F PUSH1 0x20 SWAP3 PUSH5 0x174876E800 PUSH32 0xE4D371097BEEA42453A37406E2AEF4C04F3C548F84AC50E72578662C0DCD7354 SWAP6 DIV SWAP1 PUSH2 0x4293 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH2 0x1F16 CALLDATASIZE PUSH2 0x2CFA JUMP JUMPDEST SWAP5 SWAP1 SWAP3 SWAP2 SWAP4 SWAP5 PUSH32 0x0 PUSH2 0x1F46 DUP2 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER SUB PUSH2 0x232D JUMPI PUSH2 0x1F5E PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x1F67 DUP8 PUSH2 0x3DC5 JUMP JUMPDEST ORIGIN ISZERO DUP1 DUP1 PUSH2 0x2320 JUMPI JUMPDEST PUSH2 0x22B8 JUMPI JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP4 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP5 GT PUSH2 0x2290 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP4 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 SLOAD SWAP6 PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x40 DUP5 KECCAK256 SLOAD SWAP7 PUSH2 0x1FFD PUSH2 0x1FEF DUP10 PUSH2 0x1FEA DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x2EBB JUMP JUMPDEST PUSH2 0x2ECE JUMP JUMPDEST SWAP9 PUSH2 0x1FEA DUP9 DUP5 PUSH1 0x80 SHR PUSH2 0x2EBB JUMP JUMPDEST SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP7 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP8 KECCAK256 SLOAD AND SWAP3 DUP1 DUP11 LT PUSH2 0x225C JUMPI POP DUP1 DUP9 LT PUSH2 0x221F JUMPI POP PUSH2 0x207B PUSH2 0x209A SWAP2 PUSH2 0x203F DUP11 DUP6 PUSH2 0x3E12 JUMP JUMPDEST PUSH2 0x2052 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND PUSH2 0x3E12 JUMP JUMPDEST PUSH2 0x839 DUP10 PUSH2 0x2072 DUP13 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x2F05 JUMP JUMPDEST SWAP3 PUSH1 0x80 SHR PUSH2 0x2F05 JUMP JUMPDEST SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP7 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE DUP7 PUSH1 0x40 DUP8 KECCAK256 SSTORE DUP5 DUP11 PUSH2 0x3E52 JUMP JUMPDEST DUP7 PUSH2 0x2185 JUMPI JUMPDEST POP DUP5 PUSH2 0x20FC JUMPI JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH32 0x44D97B36E99B590B3D2875AAD3B167B1D7FB1E063F3F1325A1EEAC76CAEE5113 SWAP2 POP PUSH1 0x60 SWAP1 LOG2 DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND EXTCODESIZE ISZERO PUSH2 0x2181 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 DUP9 DUP6 DUP4 DUP2 SWAP6 DUP2 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP9 MSTORE AND PUSH1 0x4 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE DUP11 PUSH1 0x44 DUP6 ADD MSTORE AND GAS CALL DUP1 ISZERO PUSH2 0x63D JUMPI PUSH2 0x216D JUMPI JUMPDEST DUP1 PUSH2 0x20A7 JUMP JUMPDEST PUSH2 0x2177 DUP3 SWAP2 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x355 JUMPI DUP1 PUSH2 0x2167 JUMP JUMPDEST DUP3 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x221B JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP7 PUSH1 0x44 DUP3 ADD MSTORE DUP4 DUP2 PUSH1 0x64 DUP2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS CALL DUP1 ISZERO PUSH2 0x2210 JUMPI SWAP1 DUP5 SWAP2 PUSH2 0x21FC JUMPI JUMPDEST POP PUSH2 0x20A0 JUMP JUMPDEST PUSH2 0x2205 SWAP1 PUSH2 0x2D9E JUMP JUMPDEST PUSH2 0x2181 JUMPI DUP3 PUSH0 PUSH2 0x21F6 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP7 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x64 SWAP2 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP6 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST DUP7 PUSH1 0x64 SWAP2 DUP12 DUP7 PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x98C5DBD600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST ISZERO PUSH2 0x22F8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP4 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x22F0 DUP6 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE PUSH0 PUSH2 0x1F75 JUMP JUMPDEST PUSH1 0x4 DUP4 PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO PUSH2 0x1F70 JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x2393 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x23C5 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x23EE PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x23F7 DUP2 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x3994 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x2454 PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 KECCAK256 CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x3AEF JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x40 DUP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x24BC PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x24E5 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE KECCAK256 SLOAD DUP2 MLOAD SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x80 SHR PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x8 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP1 SWAP2 SUB PUSH2 0x18DA JUMPI PUSH2 0x257C PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x2584 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x258C PUSH2 0x3C08 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 PUSH1 0xA SLOAD AND OR PUSH1 0xA SSTORE PUSH32 0x280A60B1E63C1774D397D35CCE80EB80E51408EAD755FB446E6F744CE98E5DF0 DUP3 DUP1 LOG2 DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x40D PUSH2 0x261D PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0xD21 DUP2 PUSH2 0x3947 JUMP JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH2 0x2710 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x355 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x355 JUMPI PUSH2 0x269E PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP3 DUP4 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0xB DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 SLOAD SWAP2 DUP2 PUSH2 0x2872 JUMPI JUMPDEST POP DUP4 PUSH2 0x2709 JUMPI JUMPDEST SWAP1 PUSH2 0x839 PUSH1 0xB SWAP5 PUSH2 0x26F4 PUSH2 0x26FD SWAP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x2EAE JUMP JUMPDEST SWAP3 PUSH1 0x80 SHR PUSH2 0x2EAE JUMP JUMPDEST SWAP3 DUP5 MSTORE MSTORE PUSH1 0x40 DUP3 KECCAK256 SSTORE DUP1 RETURN JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 DUP2 PUSH1 0x64 DUP2 DUP11 DUP11 GAS CALL DUP1 ISZERO PUSH2 0x283A JUMPI PUSH2 0x2845 JUMPI JUMPDEST POP DUP5 DUP7 MSTORE PUSH1 0x8 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 PUSH2 0x276D DUP6 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP5 PUSH1 0x4 DUP3 ADD MSTORE DUP4 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x283A JUMPI DUP8 SWAP2 PUSH2 0x2806 JUMPI JUMPDEST POP PUSH1 0xB SWAP5 PUSH2 0x26F4 PUSH2 0x26FD SWAP5 SWAP4 PUSH2 0x839 SWAP4 DUP10 DUP12 MSTORE PUSH1 0xD DUP9 MSTORE PUSH1 0x40 DUP12 KECCAK256 PUSH2 0x27D7 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE DUP10 DUP12 MSTORE PUSH1 0xC DUP9 MSTORE PUSH1 0x40 DUP12 KECCAK256 CALLER PUSH0 MSTORE DUP9 MSTORE PUSH2 0x27F8 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE SWAP4 SWAP5 POP POP SWAP5 POP POP PUSH2 0x26CE JUMP JUMPDEST SWAP3 SWAP2 SWAP1 POP DUP4 DUP4 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2833 JUMPI JUMPDEST PUSH2 0x281F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0xB PUSH2 0x27B1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2815 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP10 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x2864 SWAP1 DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x286B JUMPI JUMPDEST PUSH2 0x285C DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2E5B JUMP JUMPDEST POP PUSH0 PUSH2 0x2756 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2852 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 SWAP1 DUP2 DUP2 MSTORE DUP6 DUP2 PUSH1 0x4 DUP2 DUP12 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x29B4 JUMPI DUP10 SWAP2 PUSH2 0x29BF JUMPI JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP7 SWAP1 DUP3 SWAP1 PUSH1 0x64 SWAP1 DUP3 SWAP1 DUP14 SWAP1 DUP9 AND GAS CALL DUP1 ISZERO PUSH2 0x29B4 JUMPI PUSH2 0x2997 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE DUP5 DUP2 PUSH1 0x4 DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1DC1 JUMPI DUP9 SWAP2 PUSH2 0x297A JUMPI JUMPDEST POP AND DUP7 MSTORE PUSH1 0x8 DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 PUSH2 0x2939 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE DUP5 DUP7 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 PUSH2 0x2951 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE DUP5 DUP7 MSTORE PUSH1 0xC DUP4 MSTORE PUSH1 0x40 DUP7 KECCAK256 CALLER PUSH0 MSTORE DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x2972 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST SWAP1 SSTORE PUSH0 PUSH2 0x26C7 JUMP JUMPDEST PUSH2 0x2991 SWAP2 POP DUP6 RETURNDATASIZE DUP8 GT PUSH2 0x95E JUMPI PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x2922 JUMP JUMPDEST PUSH2 0x29AD SWAP1 DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x286B JUMPI PUSH2 0x285C DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST POP PUSH0 PUSH2 0x2905 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE DUP12 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x29D6 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x95E JUMPI PUSH2 0x94F DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x28B0 JUMP JUMPDEST POP CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x29F6 PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x29FE PUSH2 0x3C08 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO PUSH2 0x104D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 PUSH32 0xBFFB78B200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x2A85 JUMPI PUSH2 0x2A74 JUMPI POP DUP1 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE DUP1 RETURN JUMPDEST PUSH2 0x2A7E SWAP2 POP PUSH2 0x2D9E JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12AB JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2AEE PUSH2 0x2AAC PUSH2 0x2CE4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH2 0x3994 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2AEE PUSH2 0x2B0C PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x3947 JUMP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2B4A PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x2B52 PUSH2 0x36B1 JUMP JUMPDEST PUSH2 0x2AEE PUSH2 0x387F JUMP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2B93 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2B9D PUSH2 0x3909 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH2 0x2AEE PUSH2 0x379C JUMP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x104D JUMPI PUSH2 0x2C0E PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH2 0x2C16 PUSH2 0x36B1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FF PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 PUSH1 0x9 SLOAD SWAP3 PUSH1 0x8 SHL AND SWAP2 AND OR PUSH1 0x9 SSTORE PUSH32 0x94B979B6831A51293E2641426F97747FEED46F17779FED9CD18D1ECEFCFE92EF PUSH0 DUP1 LOG2 STOP JUMPDEST CALLVALUE PUSH2 0x104D JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x104D JUMPI PUSH1 0x20 PUSH2 0x2C9C PUSH2 0x2CE4 JUMP JUMPDEST PUSH2 0x2CC5 PUSH32 0x0 PUSH2 0x3678 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x104D JUMPI JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x104D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x104D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2D8A JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x2D7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x104D JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x104D JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x104D JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x28 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2E81 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2E81 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2E81 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2ED8 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x2E81 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND ISZERO PUSH2 0x3520 JUMPI PUSH2 0x2F3B PUSH2 0x3C08 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0xE0 DUP4 ADD DUP4 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2DB2 JUMPI PUSH1 0x40 MSTORE PUSH0 DUP4 MSTORE PUSH1 0x60 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP8 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 DUP7 DUP2 MSTORE ADD SWAP1 PUSH0 MSTORE DUP2 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x34FD JUMPI POP PUSH2 0x2FE6 SWAP3 POP SUB DUP3 PUSH2 0x2DFB JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x2FF4 DUP4 PUSH2 0x35BA JUMP JUMPDEST PUSH2 0x3001 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2DFB JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x302E DUP6 PUSH2 0x35BA JUMP JUMPDEST ADD PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x34D4 JUMPI POP POP PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x3048 DUP4 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x3056 DUP4 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE DUP6 MLOAD PUSH5 0xFFFFFFFFFF PUSH2 0x306C DUP6 PUSH2 0x35D2 JUMP JUMPDEST SWAP2 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x3498 JUMPI POP POP PUSH1 0xC0 DUP8 ADD MSTORE PUSH2 0x308A DUP4 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MSTORE DUP6 MLOAD SWAP2 PUSH1 0x1 DUP4 DUP2 SHR AND SWAP3 DUP4 PUSH2 0x3484 JUMPI JUMPDEST POP DUP3 PUSH2 0x3474 JUMPI JUMPDEST PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x31A1 JUMPI POP POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3112 JUMPI SWAP1 PUSH2 0x3100 PUSH2 0x30EA DUP3 PUSH1 0x1 SWAP5 PUSH2 0x3621 JUMP JUMPDEST MLOAD PUSH2 0x30F9 DUP4 PUSH1 0x80 DUP11 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3C5D JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x30CC JUMP JUMPDEST POP POP SWAP2 SWAP3 POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 AND SWAP1 SSTORE MLOAD SWAP2 DUP3 MSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 SWAP2 LOG2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x31B7 DUP3 PUSH1 0x20 DUP12 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD AND PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x31D1 DUP4 PUSH2 0x2DDF JUMP JUMPDEST SLOAD PUSH1 0xFF SWAP1 DUP2 DUP2 AND PUSH2 0x31E1 DUP2 PUSH2 0x43B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE DUP1 PUSH0 MSTORE DUP4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x3227 DUP3 PUSH1 0x40 DUP13 ADD MLOAD DUP4 PUSH2 0x3221 DUP4 DUP4 PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x3621 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x3233 DUP2 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x323C DUP2 PUSH2 0x43B3 JUMP JUMPDEST DUP1 PUSH2 0x33B8 JUMPI POP PUSH8 0xDE0B6B3A7640000 JUMPDEST PUSH2 0x325A DUP4 PUSH1 0xA0 DUP14 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x3278 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP13 PUSH2 0x440D JUMP JUMPDEST DUP6 ISZERO PUSH2 0x33AE JUMPI PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP2 PUSH2 0x3390 JUMPI JUMPDEST POP PUSH2 0x329D JUMPI JUMPDEST PUSH1 0x1 SWAP2 POP JUMPDEST ADD PUSH2 0x30A8 JUMP JUMPDEST DUP9 PUSH2 0x32A8 DUP2 MLOAD PUSH2 0x43EA JUMP JUMPDEST PUSH2 0x32B6 DUP4 PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x80 SHR PUSH2 0x32CA DUP5 PUSH1 0x80 PUSH0 SWAP6 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x3301 JUMPI JUMPDEST POP POP POP PUSH1 0x1 SWAP3 DUP2 PUSH2 0x32E6 JUMPI JUMPDEST POP POP PUSH2 0x3292 JUMP JUMPDEST PUSH2 0x32FA SWAP2 PUSH2 0x32F3 SWAP2 PUSH2 0x2F05 JUMP JUMPDEST DUP3 DUP12 PUSH2 0x440D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x32DF JUMP JUMPDEST PUSH2 0x330C SWAP4 POP SUB PUSH2 0x2EBB JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH1 0x1 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH2 0x336B DUP12 PUSH2 0x3364 DUP6 PUSH1 0xA0 PUSH2 0x335B DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2EBB JUMP JUMPDEST DUP2 DUP6 DUP2 MUL DIV DUP6 EQ DUP3 ISZERO OR ISZERO PUSH2 0x2E81 JUMPI PUSH1 0x1 SWAP5 PUSH2 0x3387 SWAP3 MUL PUSH2 0x2ECE JUMP JUMPDEST SWAP1 SWAP3 PUSH0 DUP1 PUSH2 0x32D3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x339E DUP2 PUSH2 0x43B3 JUMP JUMPDEST PUSH2 0x33A7 DUP2 PUSH2 0x43B3 JUMP JUMPDEST EQ PUSH0 PUSH2 0x328C JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP PUSH2 0x3297 JUMP JUMPDEST DUP1 PUSH2 0x33C4 PUSH1 0x1 SWAP3 PUSH2 0x43B3 JUMP JUMPDEST SUB PUSH2 0x344C JUMPI PUSH1 0x4 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP5 ADD MLOAD AND PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2A85 JUMPI PUSH0 SWAP2 PUSH2 0x341A JUMPI JUMPDEST POP PUSH2 0x324C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3444 JUMPI JUMPDEST DUP2 PUSH2 0x3435 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2DFB JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x104D JUMPI MLOAD PUSH0 PUSH2 0x3414 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3428 JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP7 MLOAD PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 POP PUSH2 0x30A6 JUMP JUMPDEST PUSH2 0x348F SWAP2 SWAP4 POP PUSH2 0x43EA JUMP JUMPDEST ISZERO ISZERO SWAP2 PUSH0 PUSH2 0x309F JUMP JUMPDEST PUSH1 0x5 DUP2 MUL SWAP1 DUP1 DUP3 DIV PUSH1 0x5 EQ DUP2 ISZERO OR ISZERO PUSH2 0x2E81 JUMPI PUSH1 0x4D PUSH1 0x1F DUP5 DUP5 SHR AND GT PUSH2 0x2E81 JUMPI PUSH1 0x1F DUP4 PUSH1 0x1 SWAP4 SHR AND PUSH1 0xA EXP PUSH2 0x34CD DUP3 DUP7 PUSH2 0x3621 JUMP JUMPDEST MSTORE ADD PUSH2 0x3073 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x34E3 DUP2 PUSH2 0x2DDF JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x3031 JUMP JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x20 DUP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 SLOAD AND DUP2 MSTORE ADD SWAP4 ADD SWAP2 ADD SWAP2 DUP4 SWAP2 SWAP3 PUSH2 0x2FD2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x35B4 DUP2 PUSH2 0x2DDF JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2DB2 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x35DC DUP3 PUSH2 0x35BA JUMP JUMPDEST PUSH2 0x35E9 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x2DFB JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x3617 DUP3 SWAP5 PUSH2 0x35BA JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3635 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x104D JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ADDRESS SUB PUSH2 0x3689 JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x373B PUSH1 0x20 PUSH2 0x36E2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP3 DUP4 SWAP2 PUSH1 0x8 SHR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 SWAP1 DUP2 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2A85 JUMPI PUSH0 SWAP2 PUSH2 0x377D JUMPI JUMPDEST POP ISZERO PUSH2 0x3755 JUMPI JUMP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3796 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x286B JUMPI PUSH2 0x285C DUP2 DUP4 PUSH2 0x2DFB JUMP JUMPDEST PUSH0 PUSH2 0x374D JUMP JUMPDEST PUSH2 0x37A4 PUSH2 0x3909 JUMP JUMPDEST ISZERO PUSH2 0x37D1 JUMPI PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP LT ISZERO PUSH2 0x3857 JUMPI PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG1 JUMP JUMPDEST PUSH32 0xE4460B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3887 PUSH2 0x3909 JUMP JUMPDEST ISZERO PUSH2 0x38E1 JUMPI PUSH32 0xE0629FE656E45AD7FD63A24B899DA368690024C07043B88E57AEE5095B1D3D02 PUSH1 0x20 PUSH0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND PUSH1 0x7 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG1 JUMP JUMPDEST PUSH32 0xF7FF4DCA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x393B JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH2 0x3969 JUMPI POP JUMP JUMPDEST PUSH32 0x346D760700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x39B8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x4130 JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP4 PUSH2 0x39DE PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP2 PUSH2 0x3AB7 JUMPI JUMPDEST POP ISZERO PUSH2 0x3A18 JUMPI DUP3 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x3A23 PUSH1 0x5A PUSH2 0x2E73 JUMP JUMPDEST SHR AND TIMESTAMP LT ISZERO PUSH2 0x3A8B JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH1 0x4 SWAP2 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE AND OR PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 JUMP JUMPDEST POP PUSH32 0xEB5A121700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x2E81 JUMPI DUP2 AND TIMESTAMP GT ISZERO PUSH0 PUSH2 0x39E6 JUMP JUMPDEST PUSH2 0x3B13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x4130 JUMP JUMPDEST DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 DUP4 PUSH2 0x3B38 PUSH2 0xCF9 PUSH1 0x5A SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x3BCF JUMPI JUMPDEST POP POP ISZERO PUSH2 0x3BA3 JUMPI PUSH1 0x20 PUSH32 0x57E20448028297190122571BE7CB6C1B1EF85730C673F7C72F533C8662419AA7 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB PUSH0 SWAP2 DUP6 DUP4 MSTORE DUP3 DUP5 MSTORE AND PUSH1 0x40 DUP3 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG2 JUMP JUMPDEST POP PUSH32 0xFDCD689400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x2E81 JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0x3B40 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x3C35 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 GT SWAP1 DUP2 ISZERO PUSH2 0x3CB5 JUMPI JUMPDEST POP PUSH2 0x3C8D JUMPI PUSH2 0x3C8A SWAP2 PUSH1 0x80 SHL PUSH2 0x2EAE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP3 GT PUSH0 PUSH2 0x3C79 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x8 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 DUP3 SLOAD AND OR SWAP1 SSTORE PUSH32 0xC2354CC2F78EA57777E55DDD43A7F22B112CE98868596880EDAEB22B4F9C73A9 PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE LOG2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x3D49 JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x3D9D JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x3DE7 JUMPI POP JUMP JUMPDEST PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x3E1C SWAP1 PUSH2 0x414C JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x2E81 JUMPI PUSH2 0x3E50 SWAP2 PUSH0 SUB SWAP1 PUSH2 0x41A1 JUMP JUMPDEST JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x3EDE JUMPI PUSH32 0x4E09F7F7FC37CE2897800E2C2A9099565EDB0A133D19D84A6871B3530AF8846B SWAP2 PUSH1 0x20 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0xD DUP3 MSTORE PUSH2 0x3EA2 DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x2F05 JUMP JUMPDEST PUSH2 0x3EAB DUP2 PUSH2 0x3F3D JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x3ED3 DUP3 DUP3 SLOAD PUSH2 0x2F05 JUMP JUMPDEST SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH32 0x586D06DF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 SLOAD PUSH1 0x2 SHR AND PUSH2 0x3F15 JUMPI JUMP JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x3F49 JUMPI POP JUMP JUMPDEST PUSH32 0x34BDBFAA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH0 SWAP2 AND DUP1 DUP3 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 PUSH1 0x20 PUSH2 0x2710 DUP1 PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 DUP6 KECCAK256 DUP6 DUP1 MSTORE DUP3 MSTORE DUP1 PUSH1 0x40 DUP7 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP3 DUP4 ISZERO PUSH2 0x4050 JUMPI PUSH32 0xD66F031D33381C6408F0B32C884461E5DE3DF8808399B6F3A3D86B1368F8EC34 SWAP2 PUSH1 0x20 SWAP2 AND SWAP3 DUP4 PUSH0 MSTORE PUSH1 0xD DUP3 MSTORE PUSH2 0x401F DUP2 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x2EAE JUMP JUMPDEST PUSH2 0x4028 DUP2 PUSH2 0x3F3D JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0xD DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH1 0xC DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP6 PUSH0 MSTORE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x3ED3 DUP3 DUP3 SLOAD PUSH2 0x2EAE JUMP JUMPDEST PUSH32 0xDBE6B10E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD AND OR PUSH1 0x7 SSTORE PUSH32 0xBD204090FD387F08E3076528BF09B4FC99D8100D749EACE96C06002D3FEDC625 PUSH0 DUP1 LOG1 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x4108 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x40DB SWAP2 PUSH2 0x2EBB JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4149 JUMPI PUSH2 0x3E50 SWAP1 PUSH2 0x431C JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x4176 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x428F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 SWAP2 AND DUP1 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD DUP4 DUP2 ADD SWAP4 DUP5 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x2E81 JUMPI DUP4 PUSH2 0x4256 JUMPI POP PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD SWAP2 DUP3 GT PUSH2 0x2E81 JUMPI TSTORE JUMPDEST PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH2 0x424A JUMPI PUSH32 0x0 DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2E81 JUMPI TSTORE PUSH2 0x424A JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0xFAF JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x42AD JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x2E81 JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x4317 JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x42AD JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0xFAF JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x42F9 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x373B SWAP2 PUSH2 0x434E PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH0 CALLDATALOAD AND PUSH2 0x3555 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP5 DUP3 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP5 MSTORE CALLER SWAP1 PUSH1 0x4 DUP6 ADD SWAP2 PUSH1 0x40 SWAP2 SWAP5 SWAP4 PUSH1 0x60 DUP5 ADD SWAP6 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x43BD JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2E81 JUMPI SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x445D PUSH2 0x4466 SWAP5 DUP1 PUSH2 0x4430 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MSTORE PUSH2 0x4458 PUSH2 0x4442 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD PUSH2 0x4451 DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2EBB JUMP JUMPDEST PUSH2 0x2EBB JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x3621 JUMP JUMPDEST MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE 0xCD 0xCE PUSH16 0xA55260C39D9B5268D492DFE7039ADBC3 0xE 0xBA DUP12 SAR SWAP6 PUSH7 0x5EB1778FB6A064 PUSH20 0x6F6C634300081A00330000000000000000000000 ","sourceMap":"566:4899:87:-:0;;;;;;;;;-1:-1:-1;566:4899:87;;;;34059:9:65;34055:69;;566:4899:87;;;34134:25:65;;;566:4899:87;;34134:25:65;;566:4899:87;;;;;;;;;;;34134:25:65;34055:69;34095:18;34071:1;34095:18;566:4899:87;34071:1:65;34095:18;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;-1:-1:-1;;;;;4519:6:65;566:4899:87;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;-1:-1:-1;;;;;566:4899:87;;:::i;:::-;2666:30:65;:6;:30;:::i;:::-;566:4899:87;;;31121:18:65;566:4899:87;;;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;8636:5:65;566:4899:87;;:::i;:::-;2666:30:65;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;8636:5:65;:::i;:::-;566:4899:87;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;;:::i;:::-;2666:6:65;;:30;;;;:::i;:::-;566:4899:87;;24572:221:65;566:4899:87;24572:221:65;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;24572:221:65;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;24760:10:65;566:4899:87;;;;;;;;24572:221:65;;566:4899:87;;-1:-1:-1;;566:4899:87;;24572:221:65;;566:4899:87;24572:221:65;566:4899:87;;24572:221:65;:::i;:::-;566:4899:87;-1:-1:-1;;;;;566:4899:87;;;;;24537:274:65;;;;;;;566:4899:87;24537:274:65;;566:4899:87;24537:274:65;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;24537:274:65;;566:4899:87;;24537:274:65;;;;;;;;;;;566:4899:87;;;24509:352:65;566:4899:87;;;;;24509:352:65;;;;;;:::i;:::-;566:4899:87;;;;;;;;;;;24537:274:65;;;;;;;;;;;;;;:::i;:::-;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;24509:352:65;566:4899:87;;;;;;;;;;;;;;24537:274:65;;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;24537:274:65;566:4899:87;;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;5443:12;566:4899;;:::i;:::-;5443:12;:::i;566:4899::-;;;;;5303:6;566:4899;;;:::i;:::-;5303:6;;:::i;566:4899::-;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;5700:21:65;566:4899:87;;;;;;;;;;;:::i;:::-;2666:30:65;:6;;;;;;:30;:::i;:::-;2707:73:66;;:::i;:::-;8020:101;;:::i;:::-;10002:12;;;:::i;:::-;1083:103:50;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;;;;;;;20895:20:65;;;;;;566:4899:87;20895:20:65;;;;;;;;;;;;;566:4899:87;;;;;10575:13:66;566:4899:87;;;;;;;;;;10575:46:66;;;10571:202;;566:4899:87;;;21017:20:65;566:4899:87;;;;;;;21632:18:65;566:4899:87;;;;;;1460:31:41;1237:14;1460:31;;21696:72:65;21797:76;21696:72;;;;;:::i;:::-;566:4899:87;1616:3:41;566:4899:87;21797:76:65;;;;:::i;:::-;21888:46;;;;21884:172;;22070:40;;;;22066:157;;3891:15:66;;22878:91:65;3891:15:66;22508:177:65;566:4899:87;3891:15:66;;22622:53:65;3891:15:66;22556:52:65;3891:15:66;22843:18:65;3891:15:66;;;;22878:91:65;3891:15:66;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;22556:52:65;:::i;:::-;22622:53;;:::i;:::-;22508:177;;:::i;:::-;566:4899:87;;;;21017:20:65;566:4899:87;;;;;;;22843:18:65;:::i;:::-;566:4899:87;;22878:91:65;;;;;;566:4899:87;;;;;;;;;;;;;;;;;;22878:91:65;;;;551:66:50;3051:52:52;566:4899:87;;;;;;;;;22066:157:65;22133:79;566:4899:87;22133:79:65;;;;;;566:4899:87;;;;;;22133:79:65;21884:172;21957:88;566:4899:87;21957:88:65;;;;;;566:4899:87;;;;;;21957:88:65;10571:202:66;10711:51;566:4899:87;10711:51:66;;;;;566:4899:87;;;;10711:51:66;20895:20:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;566:4899:87;;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;;;2666:6:65;:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;465::47;3098:36:65;;3094:108;;-1:-1:-1;;;;;566:4899:87;;2877:22:65;566:4899:87;;2855:10:65;:45;2851:101;;566:4899:87;;;;;;;;;;;;19917:10:31;8864:26:72;;8860:97;;12581:72:65;9149:42:72;9060:184;566:4899:87;9149:42:72;;566:4899:87;2690:94:71;;9149:42:72;566:4899:87;19669:4:31;566:4899:87;;9060:184:72;;:::i;:::-;566:4899:87;;;;;;;;;;;;;;;12581:72:65;566:4899:87;;8860:97:72;566:4899:87;8913:33:72;;;;;2851:101:65;566:4899:87;2923:18:65;;;;;3094:108;566:4899:87;3157:34:65;;;;;566:4899:87;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;566:4899:87;16609:27:65;566:4899:87;;16605:93:65;;8470:156:46;16736:15:65;566:4899:87;8470:156:46;16736:15:65;566:4899:87;16862:21:65;;;;566:4899:87;;16605:93:65;16659:28;;566:4899:87;16659:28:65;;;566:4899:87;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;566:4899:87;8470:156:46;17707:15:65;566:4899:87;8470:156:46;;17707:15:65;566:4899:87;17834:38:65;566:4899:87;;;17433:4:65;566:4899:87;;17834:38:65;566:4899:87;;;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;15965:100:65;;:::i;566:4899:87:-;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;2666:6:65;:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;13384::65;;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;7916:84:46;;;958:1:71;7916:84:46;;566:4899:87;2958:30:71;;:62;:30;566:4899:87;2790:99:71;;2958:30;:62;:::i;:::-;6019:108:46;;7592:82:66;;;566:4899:87;;13711:4:65;566:4899:87;;;;13501:57:65;;;566:4899:87;13497:177:65;13711:4;13497:177;;;:::i;:::-;13711:4;:::i;13501:57::-;13533:16;;;:::i;:::-;566:4899:87;13501:57:65;;7592:82:66;7648:26;;;;566:4899:87;;;;;;;;13711:4:65;566:4899:87;;;7608:15:66;:66;;7592:82;;;;566:4899:87;;;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;551:66:50;2806:53:52;566:4899:87;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;;;2666:30:65;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;10398:38:65;566:4899:87;;32650:25:65;;;32646:225;32650:25;;;32768:4;;;;:::i;:::-;5755:16:66;;:::i;:::-;5751:67;;566:4899:87;;;;;;;;;;;7916:84:46;958:1:71;7916:84:46;;566:4899:87;;2958:30:71;;:62;:30;566:4899:87;2790:99:71;;2958:62;6019:108:46;;7592:82:66;;;32646:225:65;6800:73:66;;;;566:4899:87;;;15152:60:66;;;;566:4899:87;15152:60:66;;;;;;;;;;;;;32646:225:65;15132:80:66;;;15128:143;;566:4899:87;;;15305:60:66;;;;566:4899:87;15305:60:66;;;;;;;;;;;;;32646:225:65;15285:80:66;;;15281:144;;566:4899:87;;;;;;;;;;7292:26:72;19917:10:31;7292:26:72;;7288:97;;19669:4:31;566:4899:87;;;;19627:2:31;566:4899:87;9400:76:46;;2539:209;15647:49:66;566:4899:87;;;;;;;;2539:209:46;;;;566:4899:87;;;;;;;;;15647:49:66;566:4899:87;;9400:76:46;9450:15;566:4899:87;9450:15:46;566:4899:87;;9450:15:46;7288:97:72;566:4899:87;7341:33:72;;;;;15281:144:66;566:4899:87;15388:26:66;;;;;15305:60;;;;;;;;;;;;;;;;:::i;:::-;;;566:4899:87;;;;;15305:60:66;;;566:4899:87;;;;15305:60:66;;;;;;566:4899:87;;;;;;;;;15128:143:66;566:4899:87;15235:25:66;;;;;15152:60;;;;;;;;;;;;;;;;:::i;:::-;;;566:4899:87;;;;;15152:60:66;;;;;;;;6800:73;566:4899:87;6846:16:66;;;;;566:4899:87;;6846:16:66;7592:82;7648:26;;;;;566:4899:87;;;;;;;;7608:15:66;:66;;7592:82;;;;566:4899:87;;;;;;;;;;5751:67:66;566:4899:87;5794:13:66;;;;;32646:225:65;-1:-1:-1;32794:10:65;32790:81;32646:225;32790:81;566:4899:87;32842:18:65;;;;;566:4899:87;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;928:3:90;566:4899:87;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;;4956:25:65;566:4899:87;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;6754:5:65;;:::i;566:4899:87:-;;;;;4369:192;566:4899;;;;:::i;:::-;1083:103:50;;;;;;;;;:::i;:::-;566:4899:87;;4369:192;;;;;566:4899;4369:192;;566:4899;4369:192;;566:4899;;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;4369:192;;:4;;;:192;;;;;;;;566:4899;3051:52:52;;551:66:50;3051:52:52;566:4899:87;;4369:192;;;566:4899;4369:192;566:4899;4369:192;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;566:4899;;;;;;-1:-1:-1;;566:4899:87;;;;;1590:1:35;566:4899:87;;:::i;:::-;2666:30:65;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;1525:73:35;;:::i;:::-;1590:1;:::i;566:4899:87:-;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;8470:156:46;17707:15:65;566:4899:87;8470:156:46;17707:15:65;566:4899:87;17834:38:65;566:4899:87;;;;;;17834:38:65;566:4899:87;;;;;;;1983:185;;566:4899;;;:::i;:::-;1083:103:50;;;;;;;;;:::i;:::-;566:4899:87;;1983:185;;;;;566:4899;1983:185;;566:4899;1983:185;;566:4899;;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;1983:185;;1998:4;;;1983:185;;;;;;;;3051:52:52;;551:66:50;3051:52:52;566:4899:87;;1983:185;;;;;;;;;;;;;;:::i;:::-;;;566:4899;;;;1983:185;;;;;;;;566:4899;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;1746:1:69;566:4899:87;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;1017:4:87;;:::i;566:4899::-;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;2666:6:65;:30;:6;:30;:::i;:::-;566:4899:87;;;30924:15:65;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;3886:208;566:4899;;;;:::i;:::-;1083:103:50;;;;;;;;;:::i;:::-;566:4899:87;;3886:208;;;;;566:4899;3886:208;;566:4899;3886:208;;566:4899;;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;2666:6:65;;:30;;;:::i;:::-;2707:73:66;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;2877:22:65;566:4899:87;;2855:10:65;:45;2851:101;;8718:4:66;;;566:4899:87;8718:4:66;;;;;:::i;:::-;566:4899:87;;10896:26:65;;;;;566:4899:87;10896:26:65;;566:4899:87;10896:26:65;;566:4899:87;10896:26:65;;566:4899:87;;10896:26:65;;;;;;;;;;;566:4899:87;;;;10996:24:65;11047;10996;;;:::i;:::-;11047;;:::i;:::-;11087:13;;11125:3;566:4899:87;;11102:21:65;;;;;11159:13;;;566:4899:87;11159:13:65;;;:::i;:::-;566:4899:87;;;;;11227:20:65;566:4899:87;;;;;;;;;;;;1237:14:41;566:4899:87;;;;;1616:3:41;566:4899:87;11187:93:65;;;;:::i;:::-;566:4899:87;1460:31:41;11187:93:65;;;;:::i;:::-;566:4899:87;11299:16:65;;;;:::i;:::-;566:4899:87;11299:20:65;;;:45;;;11125:3;11295:260;;11125:3;;;566:4899:87;11087:13:65;;11295:260;11503:36;566:4899:87;;;;;;;;;;;;;;;;;;;11503:36:65;:16;;;;:::i;:::-;566:4899:87;11522:17:65;;;;:::i;:::-;566:4899:87;11503:36:65;;:::i;:::-;;;:::i;:::-;11295:260;;;;11299:45;11323:17;;;;;:::i;:::-;566:4899:87;11323:21:65;;11299:45;;11102:21;566:4899:87;11102:21:65;566:4899:87;11102:21:65;;566:4899:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;10896:26:65;;;;;;;;;;;;;:::i;:::-;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;10896:26:65;;;;;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;10896:26:65;566:4899:87;;;;;;;;;;;2851:101:65;566:4899:87;2923:18:65;;;;;566:4899:87;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;;4651:24:65;566:4899:87;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;465:4:47;566:4899:87;;3098:36:65;3094:108;;566:4899:87;;3094:108:65;3157:34;;566:4899:87;3157:34:65;;;566:4899:87;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;566:4899:87;6403:16:65;;:::i;:::-;566:4899:87;;;;;;;;6421:24:65;;566:4899:87;;;;;6447:25:65;566:4899:87;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;16222:4:65;566:4899:87;16192:34:65;566:4899:87;;;16192:34:65;566:4899:87;16192:34:65;;:::i;566:4899:87:-;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;:::i;:::-;;;;;5141:6;566:4899;;;:::i;:::-;5141:6;;:::i;566:4899::-;;;;;;;;:::i;:::-;2666:6:65;;:30;:6;;;;:30;:::i;:::-;2707:73:66;;:::i;:::-;8020:101;;:::i;:::-;1083:103:50;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;18298:13:65;566:4899:87;;;;;;;;18294:117:65;;566:4899:87;;;18447:20:65;;;;566:4899:87;18447:20:65;;;;;;;;;;;;;566:4899:87;;;18482:29:65;;18478:272;;3891:15:66;566:4899:87;;;;18298:13:65;566:4899:87;;;;;;;;;;;;;3891:15:66;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;19100:73:65;;;;:::i;:::-;566:4899:87;;;;19183:20:65;566:4899:87;;;;;;;;;;19570:44:65;;;566:4899:87;19570:44:65;;566:4899:87;19570:44:65;;566:4899:87;19570:44:65;;;;;;;;;;;;;;566:4899:87;19570:66:65;;;;:::i;:::-;19678:12;;;;:::i;:::-;566:4899:87;;;;;;;;20054:12:65;19986;;;;;;:::i;:::-;20054;:::i;:::-;20082:30;;;20078:119;;-1:-1:-1;566:4899:87;;;;;;;;;;;;;;;;;;;;20212:91:65;;566:4899:87;;20212:91:65;551:66:50;3051:52:52;566:4899:87;;;;;;20078:119:65;20135:51;566:4899:87;20135:51:65;;;;;566:4899:87;;;;20135:51:65;566:4899:87;;;;;;;;;;19570:44:65;;;;;;;;;;;;;;;;:::i;:::-;;;566:4899:87;;;;;19570:66:65;566:4899:87;;19570:44:65;;;;;;;;566:4899:87;;;;;;;;;18478:272:65;566:4899:87;18703:36:65;;;;;566:4899:87;;18703:36:65;18447:20;;;;;;;;;;;;;;:::i;:::-;;;;18294:117;566:4899:87;18362:38:65;;;;;566:4899:87;;18362:38:65;566:4899:87;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;;;2666:6:65;:30;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;465::47;3098:36:65;;3094:108;;-1:-1:-1;;;;;566:4899:87;;2877:22:65;566:4899:87;;2855:10:65;:45;2851:101;;566:4899:87;;;;;;;;;;;;19917:10:31;8036:26:72;;8032:97;;566:4899:87;8232:183:72;566:4899:87;;19669:4:31;12035:70:65;566:4899:87;;8232:183:72;;:::i;566:4899:87:-;;;;;;;;:::i;:::-;2666:6:65;;;;;;;:30;;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;564:10:68;:29;560:108;;2707:73:66;;:::i;:::-;10002:12;;;:::i;:::-;859:9:38;:23;;;17174:79:66;;566:4899:87;26600:241:65;;566:4899:87;;-1:-1:-1;;;;;566:4899:87;;;;26872:15:65;566:4899:87;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;26855:59:65;;26851:120;;-1:-1:-1;;;;;566:4899:87;;;;27006:20:65;566:4899:87;;;;;;;27072:18:65;566:4899:87;;;;;;1460:31:41;27245:67:65;27145:63;1460:31:41;27146:47:65;1460:31:41;1237:14;1460:31;;27146:47:65;:::i;:::-;27145:63;:::i;:::-;566:4899:87;27246:51:65;566:4899:87;;1616:3:41;566:4899:87;27246:51:65;:::i;27245:67::-;566:4899:87;-1:-1:-1;;;;;566:4899:87;;;;27776:13:65;566:4899:87;;-1:-1:-1;;;;;566:4899:87;;;;;27819:55:65;;;;27815:190;;28019:49;;;;28015:175;;28231:27;28350:193;28725:14;28231:27;;;;;:::i;:::-;28269:53;566:4899:87;-1:-1:-1;;;;;566:4899:87;;28269:53:65;:::i;:::-;28472:61;1460:31:41;28398:60:65;1460:31:41;1237:14;1460:31;;28398:60:65;:::i;:::-;566:4899:87;1616:3:41;566:4899:87;28472:61:65;:::i;28350:193::-;566:4899:87;-1:-1:-1;;;;;566:4899:87;;;;27006:20:65;566:4899:87;;;;;;;28725:14:65;;;:::i;:::-;28930:31;28926:134;;566:4899:87;29073:28:65;;29069:125;;566:4899:87;-1:-1:-1;;566:4899:87;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;29209:169:65;;-1:-1:-1;566:4899:87;;29209:169:65;566:4899:87;;;;;;;;;;29069:125:65;-1:-1:-1;;;;;566:4899:87;;29117:66:65;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;29117:66:65;;;;;566:4899:87;29117:66:65;;566:4899:87;;29117:66:65;;566:4899:87;;;;;;;;;;;;29117:66:65;;;;;;;;29069:125;;;;29117:66;;;;;:::i;:::-;566:4899:87;;29117:66:65;;;;566:4899:87;;;28926:134:65;-1:-1:-1;;;;;566:4899:87;;28977:72:65;;;;566:4899:87;;28977:72:65;566:4899:87;28977:72:65;;566:4899:87;28977:72:65;;566:4899:87;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;28977:72:65;;;;;;;;;;;28926:134;;;;28977:72;;;;:::i;:::-;566:4899:87;;28977:72:65;;;;;566:4899:87;;;;;;;;;28977:72:65;566:4899:87;;;28015:175:65;28091:88;566:4899:87;28091:88:65;;-1:-1:-1;;;;;28091:88:65;;;;566:4899:87;;;;;;;28091:88:65;27815:190;27897:97;566:4899:87;27897:97:65;;;;;;566:4899:87;;;;;;27897:97:65;26851:120;566:4899:87;26937:23:65;;;;;26600:241;566:4899:87;30248:114:65;;-1:-1:-1;;;;;566:4899:87;;;;30456:15:65;566:4899:87;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;30456:43:65;566:4899:87;;;30456:43:65;:::i;:::-;566:4899:87;;26600:241:65;;;30248:114;566:4899:87;30317:34:65;;;;;17174:79:66;566:4899:87;7916:84:46;17211:15:66;566:4899:87;7916:84:46;566:4899:87;17174:79:66;;560:108:68;566:4899:87;616:41:68;;;;564:10;566:4899:87;;616:41:68;566:4899:87;;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;566:4899:87;7916:84:46;17245:15:65;566:4899:87;;7916:84:46;;566:4899:87;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;8464:4:65;566:4899:87;;:::i;:::-;2666:30:65;:6;:30;:::i;:::-;8718:4:66;;;:::i;:::-;8464::65;:::i;566:4899:87:-;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;5847:20:65;566:4899:87;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;1415:5;566:4899;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;;;1335:17;566:4899;;;;;1374:10;566:4899;;;;;;;1415:5;:::i;566:4899::-;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;-1:-1:-1;;;;;566:4899:87;;:::i;:::-;2666:30:65;:6;:30;:::i;:::-;566:4899:87;;;31391:20:65;566:4899:87;;;;;;1460:31:41;1237:14;1460:31;;566:4899:87;;1616:3:41;566:4899:87;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;1913:1:69;566:4899:87;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;1083:103:50;;:::i;:::-;566:4899:87;;12862:49:65;566:4899:87;;;12862:49:65;566:4899:87;12927:54:65;;;;3051:52:52;551:66:50;3051:52:52;566:4899:87;;;;;;;;-1:-1:-1;;566:4899:87;;;;;1572:4;566:4899;;:::i;:::-;1530:4;;;:::i;566:4899::-;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;2529:3:65;566:4899:87;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;;4803:26:65;566:4899:87;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;2455:20;566:4899;;;;;;2504:20;;2500:410;;566:4899;2923:17;;2919:434;;566:4899;1460:31:41;3491:50:87;2455:20;1460:31:41;3428:49:87;3380:171;1460:31:41;1237:14;1460:31;;3428:49:87;:::i;:::-;566:4899;1616:3:41;566:4899:87;3491:50;:::i;3380:171::-;566:4899;;;;;;;;;;2919:434;566:4899;;;2956:84;;2999:10;566:4899;2956:84;;566:4899;3019:4;566:4899;;;;;;;;;;3019:4;566:4899;;;2956:84;;;;;;;;;;2919:434;566:4899;;;;3054:11;566:4899;;;;;3054:59;566:4899;;;3054:59;:::i;:::-;566:4899;;;;;3156:41;;;566:4899;3156:41;;566:4899;3156:41;;566:4899;3156:41;;;;;;;;;;;;;2919:434;566:4899;2455:20;566:4899;3428:49;3380:171;566:4899;;3491:50;566:4899;;;;3211:18;566:4899;;;;;3211:54;566:4899;;;3211:54;:::i;:::-;566:4899;;;;;3279:15;566:4899;;;;;2999:10;566:4899;;;;3279:63;566:4899;;;;;;3279:63;:::i;:::-;566:4899;;2919:434;;;;;;;;;3156:41;;;;;;;;;;;;;;;;;;:::i;:::-;;;566:4899;;;;;;3156:41;;566:4899;2455:20;3156:41;;;;;;;;566:4899;;;;;;;;;2956:84;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2500:410;566:4899;;;2547:20;;;;;;566:4899;2547:20;;;;;;;;;;;;;2500:410;-1:-1:-1;566:4899:87;;;2540:86;;2582:10;566:4899;2540:86;;566:4899;2602:4;566:4899;;;;;;;;;;;;;;;;;;;2602:4;;566:4899;;2540:86;;;;;;;;2500:410;566:4899;;;2659:20;;;;;566:4899;2659:20;;;;;;;;;;;;;2500:410;566:4899;;;;2640:11;566:4899;;;;;2640:61;566:4899;;;2640:61;:::i;:::-;566:4899;;;;;2772:18;566:4899;;;;;2772:52;566:4899;;;2772:52;:::i;:::-;566:4899;;;;;2838:15;566:4899;;;;;2582:10;566:4899;;;;;;;2838:61;566:4899;;;2838:61;:::i;:::-;566:4899;;2500:410;;;2659:20;;;;;;;;;;;;;;:::i;:::-;;;;2540:86;;;;;;;;;;;;;:::i;:::-;;;;;;566:4899;;;;;;;;;2547:20;;;;;;;;;;;;;;:::i;:::-;;;;566:4899;;;;;;-1:-1:-1;;566:4899:87;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;4665:4:87;:30;;;;-1:-1:-1;;;;;566:4899:87;;4665:30;566:4899;4665:30;;566:4899;;4665:30;;566:4899;;4665:4;566:4899;4665:4;;;:30;;;;;;;;3051:52:52;;551:66:50;3051:52:52;566:4899:87;;4665:30;;;;;:::i;:::-;566:4899;4665:30;;;;566:4899;;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;1257:4;566:4899;;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;;;1177:17;566:4899;;;;;1216:10;566:4899;;;;;;;1257:4;:::i;:::-;566:4899;;;;;;-1:-1:-1;;566:4899:87;;;;;4985:4;566:4899;;:::i;:::-;4985:4;:::i;566:4899::-;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;6754:5:65;;:::i;566:4899:87:-;;;;;-1:-1:-1;;566:4899:87;;;;;2666:30:65;:6;:30;:::i;:::-;566:4899:87;6226:16:65;;:::i;:::-;566:4899:87;;;;;;;;;;;;;-1:-1:-1;;566:4899:87;;;;;1017:4;;:::i;566:4899::-;;;;;-1:-1:-1;;566:4899:87;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;2666:30:65;:6;:30;:::i;:::-;1525:73:35;;:::i;:::-;566:4899:87;;32073:27:65;566:4899:87;;;;;;;;32073:27:65;566:4899:87;32116:32:65;566:4899:87;32116:32:65;;566:4899:87;;;;;;-1:-1:-1;;566:4899:87;;;;;;;;:::i;:::-;2666:30:65;:6;:30;:::i;:::-;-1:-1:-1;;;;;566:4899:87;;;;;30692:13:65;566:4899:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;:::o;:::-;-1:-1:-1;;566:4899:87;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;566:4899:87;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;566:4899:87;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;1590:149::-;;-1:-1:-1;;;;;566:4899:87;;17044:15:66;566:4899:87;17044:15:66;566:4899:87;;1192:1:71;566:4899:87;17044:15:66;566:4899:87;;958:1:71;7916:84:46;;16646:28:66;16642:93;;1083:103:50;;:::i;:::-;566:4899:87;;;;;;;;;;;;;;;;;17044:15:66;566:4899:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;17044:15:66;566:4899:87;12587:18:66;566:4899:87;;;17044:15:66;566:4899:87;17044:15:66;566:4899:87;;;17044:15:66;566:4899:87;;;12660:14:66;566:4899:87;;;17044:15:66;566:4899:87;;958:1:71;566:4899:87;;;17044:15:66;566:4899:87;;;;;;;;;;;;;;;;17044:15:66;566:4899:87;;;17044:15:66;566:4899:87;;17044:15:66;566:4899:87;;;;;;;;;;;;;:::i;:::-;;;;1947:24:73;566:4899:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;17044:15:66;566:4899:87;;;;;;;;;;;1981:47:73;2061:24;;;:::i;:::-;566:4899:87;;;2038:47:73;2127:24;;;:::i;:::-;566:4899:87;;;2095:56:73;566:4899:87;;;9811:24:72;;;:::i;:::-;9470:46;566:4899:87;6019:108:46;;17044:15:66;9952:13:72;;;;;;566:4899:87;;;;;2161:107:73;2300:24;;;:::i;:::-;566:4899:87;;;2278:46:73;566:4899:87;;7916:84:46;1192:1:71;7916:84:46;;;;2365:119:73;;;;9932:464:72;2365:190:73;;;;9932:464:72;17044:15:66;2586:13:73;;;;;;566:4899:87;;;;;-1:-1:-1;;;;;566:4899:87;;17044:15:66;566:4899:87;12587:18:66;566:4899:87;;;17044:15:66;566:4899:87;11419:13:66;17044:15;11467:3;566:4899:87;;;11438:20:66;566:4899:87;;11434:31:66;;;;;11619:23;11567:139;11619:23;;1192:1:71;11619:23:66;;:::i;:::-;566:4899:87;11660:32:66;566:4899:87;;;;11660:29:66;:32;:::i;:::-;566:4899:87;11567:139:66;;:::i;:::-;566:4899:87;17044:15:66;566:4899:87;;;;;17044:15:66;566:4899:87;;;11419:13:66;;11434:31;;;;;;;17044:15;551:66:50;3051:52:52;-1:-1:-1;;;;;566:4899:87;17044:15:66;566:4899:87;;;;;;;;;;;;;8470:156:46;;566:4899:87;;;;;;15164:48:65;;;1590:149:87:o;2601:3:73:-;-1:-1:-1;;;;;2663:18:73;566:4899:87;;;;2663:15:73;:18;:::i;:::-;566:4899:87;;17044:15:66;566:4899:87;;;;;17044:15:66;566:4899:87;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;;;17044:15:66;566:4899:87;;;;;17044:15:66;566:4899:87;;;2755:33:73;566:4899:87;;;;2755:18:73;:33;;;;;:::i;:::-;;;:::i;:::-;;566:4899:87;;;;;:::i;:::-;;;;:::i;:::-;7589:31:73;;;7636:21;465:4:47;7585:269:73;2802:48;566:4899:87;;;;2802:19:73;:48;:::i;:::-;566:4899:87;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;566:4899:87;;3059:78:73;;566:4899:87;;;;;;3800:69:73;;;;7585:269;3977:660;;;7585:269;1192:1:71;2601:3:73;;2571:13;566:4899:87;2571:13:73;;3977:660;566:4899:87;4062:56:73;566:4899:87;;4062:56:73;:::i;:::-;4157:23;566:4899:87;;;;4157:20:73;:23;:::i;:::-;566:4899:87;;;;8915:41:73;4236:195;566:4899:87;17044:15:66;566:4899:87;;8915:29:73;:41;:::i;:::-;566:4899:87;9458:36:73;;;9454:804;;3977:660;4454:30;;;1192:1:71;4454:30:73;;4450:173;;3977:660;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;;:::i;:::-;4450:173;;;;9454:804;1068:5:47;566:4899:87;;;1068:5:47;:::i;:::-;1186:122;;;1192:1:71;1186:122:47;;;;;;;;;;3665:25:43;566:4899:87;10184:31:73;566:4899:87;;10120:42:73;566:4899:87;;;;10120:30:73;:42;:::i;:::-;566:4899:87;;;10184:19:73;:31;:::i;:::-;566:4899:87;3665:25:43;;:::i;:::-;566:4899:87;;;;;;;;;;;;;1192:1:71;566:4899:87;1625:13:47;566:4899:87;;1625:13:47;:::i;:::-;9454:804:73;;;;;;3800:69;1192:1:71;566:4899:87;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;3059:78;3114:8;1192:1:71;3114:8:73;;;;7585:269;566:4899:87;;1192:1:71;566:4899:87;;:::i;:::-;7678:32:73;1192:1:71;;12660:14:66;566:4899:87;-1:-1:-1;;;;;566:4899:87;;;;;;;7733:32:73;;;;566:4899:87;7733:32:73;;;;;;;;;17044:15:66;7733:32:73;;;7674:180;7726:39;7585:269;;7733:32;;;566:4899:87;7733:32:73;;566:4899:87;7733:32:73;;;;;;566:4899:87;7733:32:73;;;:::i;:::-;;;566:4899:87;;;;;7733:32:73;;;;;;-1:-1:-1;7733:32:73;;7674:180;7803:40;17044:15:66;7803:40:73;12660:14:66;17044:15;7803:40:73;2365:190;566:4899:87;;958:1:71;7916:84:46;1192:1:71;7916:84:46;566:4899:87;;-1:-1:-1;2365:190:73;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;9967:3:72;12587:18:66;566:4899:87;;;;;;12587:18:66;566:4899:87;;;;;;;3267:1:71;6019:108:46;;;;;3267:1:71;;;6019:108:46;;1192:1:71;6019:108:46;;;3267:1:71;;10348:37:72;;;;:::i;:::-;566:4899:87;;9937:13:72;;566:4899:87;;;;;;;;:::i;:::-;17044:15:66;566:4899:87;;17044:15:66;566:4899:87;;;;17044:15:66;566:4899:87;;;;;;;;;;;;;;;;1192:1:71;566:4899:87;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;;;16642:93:66;-1:-1:-1;;;;;16697:27:66;;17044:15;16697:27;566:4899:87;16697:27:66;566:4899:87;;17044:15:66;16697:27;1931:430:35;566:4899:87;;;2303:50:35;;;2320:22;;566:4899:87;;;;;;;2303:50:35;;;;;;:::i;:::-;566:4899:87;2293:61:35;;1931:430;:::o;566:4899:87:-;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;930:316:74:-;-1:-1:-1;;;;;566:4899:87;1148:4:74;1140:31;1136:104;;930:316::o;1136:104::-;1194:35;;;;;;1688:201:35;33336:53:65;;1762:20:35;1774:7;;;;1762:20;:::i;:::-;33336:11:65;566:4899:87;;;;33336:53:65;;;;;566:4899:87;;;;1820:10:35;566:4899:87;;;;33383:4:65;566:4899:87;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;33336:53:65;;;;;;;;;;1774:7:35;33336:53:65;;;1688:201:35;1797:34;;1793:90;;1688:201::o;1793:90::-;1854:18;1774:7;1854:18;33336:53:65;1774:7:35;1854:18;33336:53:65;;;;;;;;;;;;;;:::i;:::-;;;;6924:1161;6986:16;;:::i;:::-;;;;7127:13;;;;;;6982:900;566:4899:87;7634:24:65;566:4899:87;7615:15:65;:43;;7611:122;;8470:156:46;;7920:15:65;566:4899:87;8470:156:46;;7920:15:65;566:4899:87;8046:32:65;566:4899:87;;;1017:4;566:4899;;8046:32:65;6924:1161::o;7611:122::-;7689:25;;;;;;6924:1161;6986:16;;:::i;:::-;;;;8046:32;566:4899:87;;8470:156:46;7920:15:65;566:4899:87;8470:156:46;7920:15:65;566:4899:87;;;;;;8046:32:65;6924:1161::o;6982:900::-;7841:16;566:4899:87;7841:16:65;;566:4899:87;7841:16:65;6249:212:66;566:4899:87;6394:25:66;566:4899:87;6375:15:66;:44;;:79;;;6249:212;:::o;6375:79::-;566:4899:87;7916:84:46;6423:15:66;566:4899:87;7916:84:46;;;6249:212:66;:::o;14067:171:65:-;-1:-1:-1;;;;;566:4899:87;;17044:15:66;566:4899:87;17044:15:66;566:4899:87;;1192:1:71;566:4899:87;17044:15:66;566:4899:87;;958:1:71;7916:84:46;;14143:89:65;;14067:171;:::o;14143:89::-;14197:24;17044:15:66;14197:24:65;;566:4899:87;;17044:15:66;14197:24:65;8655:1281;8759:36;-1:-1:-1;;;;;566:4899:87;;;;;;-1:-1:-1;566:4899:87;1177:17;566:4899;;;-1:-1:-1;566:4899:87;;;8759:36:65;;:::i;:::-;566:4899:87;-1:-1:-1;566:4899:87;-1:-1:-1;566:4899:87;;;-1:-1:-1;566:4899:87;;1177:17;7916:84:46;958:1:71;7916:84:46;;566:4899:87;2958:30:71;;;:62;:30;566:4899:87;2790:99:71;;2958:62;6019:108:46;;7592:82:66;;;8655:1281:65;-1:-1:-1;8867:19:65;;;9011:16;;-1:-1:-1;9011:16:65;;566:4899:87;;-1:-1:-1;9011:16:65;8863:916;2958:30:71;:62;566:4899:87;2958:62:71;:::i;:::-;6019:108:46;;9500:15:65;:49;;9496:131;;8470:156:46;;8863:916:65;566:4899:87;-1:-1:-1;566:4899:87;-1:-1:-1;566:4899:87;;8470:156:46;;566:4899:87;-1:-1:-1;566:4899:87;;9892:37:65;566:4899:87;;;1177:17;566:4899;;9892:37:65;8655:1281::o;9496:131::-;9580:28;;-1:-1:-1;9580:28:65;;566:4899:87;;-1:-1:-1;9580:28:65;7592:82:66;7648:26;;;;566:4899:87;;;;;;;;;7608:15:66;:66;;7592:82;;;8655:1281:65;8759:36;-1:-1:-1;;;;;566:4899:87;;;;;;;;8759:17:65;566:4899:87;;;;;;;8759:36:65;;:::i;:::-;566:4899:87;;;;;;;;;;8759:17:65;7916:84:46;958:1:71;7916:84:46;;566:4899:87;2958:30:71;;:62;:30;566:4899:87;2790:99:71;;2958:62;6019:108:46;;7592:82:66;;;8655:1281:65;-1:-1:-1;;8867:19:65;;;566:4899:87;9892:37:65;8902:140;8470:156:46;566:4899:87;8863:916:65;566:4899:87;;;;;;8470:156:46;566:4899:87;;;;;;;;;9892:37:65;8655:1281::o;8863:916::-;9735:19;;566:4899:87;9735:19:65;;566:4899:87;;;9735:19:65;7592:82:66;7648:26;;;;;566:4899:87;;;;;;;;7608:15:66;:66;;7592:82;;;;1192:349:50;551:66;2806:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;1316:93::-;1368:30;-1:-1:-1;1368:30:50;;-1:-1:-1;1368:30:50;2311:281:41;1237:14;2426:25;;;:58;;;;;2311:281;2422:113;;;3060:43;566:4899:87;3080:3:41;566:4899:87;3060:43:41;:::i;:::-;2311:281;:::o;2422:113::-;2507:17;;;;;;2426:58;2455:29;;;;2426:58;;;14536:683:65;-1:-1:-1;;;;;566:4899:87;;14638:5:65;566:4899:87;14638:5:65;566:4899:87;;;14638:5:65;566:4899:87;8470:156:46;;566:4899:87;;8470:156:46;;566:4899:87;;15164:48:65;566:4899:87;;;1572:4;566:4899;;15164:48:65;14536:683::o;8911:160:66:-;-1:-1:-1;;;;;566:4899:87;;9217:15:66;566:4899:87;9217:15:66;566:4899:87;;7916:84:46;566:4899:87;9217:15:66;566:4899:87;;7916:84:46;8984:24:66;8980:85;;8911:160;:::o;8980:85::-;9031:23;9217:15;9031:23;;566:4899:87;;9217:15:66;9031:23;2786:145;9187:17:69;2806:53:52;566:4899:87;2837:88:66;;2786:145::o;2837:88::-;2894:20;-1:-1:-1;2894:20:66;;-1:-1:-1;2894:20:66;10039:200;-1:-1:-1;;;;;566:4899:87;;;;;-1:-1:-1;566:4899:87;10124:13:66;566:4899:87;;;-1:-1:-1;566:4899:87;;;10124:41:66;10120:113;;10039:200;:::o;10120:113::-;10188:34;-1:-1:-1;10188:34:66;;566:4899:87;;-1:-1:-1;10188:34:66;3450:119;;3544:17;3450:119;3544:17;:::i;:::-;566:4899:87;;;;;;3543:18:66;566:4899:87;-1:-1:-1;566:4899:87;3543:18:66;;:::i;:::-;3450:119::o;29391:586:65:-;;;-1:-1:-1;;;;;566:4899:87;;;29494:18:65;;;29490:82;;29924:46;566:4899:87;;;;;;29510:1:65;566:4899:87;29607:18:65;566:4899:87;;29607:41:65;566:4899:87;;29510:1:65;566:4899:87;;29607:41:65;:::i;:::-;29778:14;;;:::i;:::-;566:4899:87;29510:1:65;566:4899:87;29607:18:65;566:4899:87;;;29510:1:65;566:4899:87;;29863:15:65;566:4899:87;;;29510:1:65;566:4899:87;;29510:1:65;566:4899:87;;;;29510:1:65;566:4899:87;29863:45:65;566:4899:87;;;29863:45:65;:::i;:::-;566:4899:87;;;;;;;29924:46:65;29391:586::o;29490:82::-;29535:26;29510:1;29535:26;;29510:1;29535:26;8177:168:66;7916:84:46;8248:15:66;566:4899:87;;7916:84:46;;8244:95:66;;8177:168::o;8244:95::-;8305:23;-1:-1:-1;8305:23:66;;-1:-1:-1;8305:23:66;31497:216:65;2529:3;31589:45;;31585:122;;31497:216;:::o;31585:122::-;31657:39;;;;566:4899:87;;31657:39:65;;22982:325;-1:-1:-1;;;;;;22982:325:65;566:4899:87;;;;23065:18:65;566:4899:87;;23226:74:65;566:4899:87;2529:3:65;566:4899:87;;;;;23138:15:65;566:4899:87;;;;;;;;;;;;;;;;;;;;23226:74:65;22982:325::o;23313:831::-;;;-1:-1:-1;;;;;566:4899:87;;;23414:16:65;;;23410:83;;24093:44;566:4899:87;;;;;;23428:1:65;566:4899:87;23528:18:65;566:4899:87;;23528:41:65;566:4899:87;;23428:1:65;566:4899:87;;23528:41:65;:::i;:::-;23949:14;;;:::i;:::-;566:4899:87;23428:1:65;566:4899:87;23528:18:65;566:4899:87;;;23428:1:65;566:4899:87;;24034:15:65;566:4899:87;;;23428:1:65;566:4899:87;;23428:1:65;566:4899:87;;;;23428:1:65;566:4899:87;24034:43:65;566:4899:87;;;24034:43:65;:::i;23410:83::-;23453:29;23428:1;23453:29;;23428:1;23453:29;16264:226;16402:4;8470:156:46;16336:15:65;566:4899:87;8470:156:46;;16336:15:65;566:4899:87;16461:22:65;-1:-1:-1;16461:22:65;;16264:226::o;1822:864:47:-;2004:6;;2000:58;;2560:120;2153:5;;;;:::i;:::-;2560:120;;;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;32241:199:65;;-1:-1:-1;;;;;566:4899:87;32339:10:65;:25;32335:62;;32428:4;;;:::i;32335:62::-;32380:7;:::o;34375:314:111:-;34568:16;34552:33;;34548:105;;34375:314;:::o;34548:105::-;34608:34;;;;566:4899:87;;34608:34:111;;4346:904:66;4485:10;;4481:23;;-1:-1:-1;;;;;9520:18:69;566:4899:87;;;4494:1:66;566:4899:87;;;;;4494:1:66;566:4899:87;2806:53:52;566:4899:87;;;;;;4494:1:66;566:4899:87;;;;;;;;;;;;;4738:9:66;;;9342:26:69;;3831:53:52;;566:4899:87;;;;;;;;;3051:52:52;4734:423:66;4494:1;566:4899:87;;;;4494:1:66;566:4899:87;3051:52:52;4346:904:66:o;4734:423::-;;4940:217;9342:26:69;3831:53:52;;566:4899:87;6806:1:44;566:4899:87;;;;;;;3051:52:52;4734:423:66;;4481:23;4497:7;;:::o;2097:657:46:-;;566:4899:87;19627:2:31;566:4899:87;9400:76:46;;566:4899:87;2539:209:46;;;566:4899:87;2539:209:46;;;;2097:657;:::o;9180:112::-;9268:13;9186:14;9268:13;;9186:14;9268:13;2097:657;;8966:3;8956:13;;;;8952:64;;566:4899:87;;;;;;;;2641:5:110;9226:3:46;2641:5:110;:13;:5;;;:13;9226:3:46;2641:13:110;19627:2:31;9204:40:46;9180:112;;566:4899:87;19627:2:31;566:4899:87;9400:76:46;;2539:209;;;;;;;;;2097:657;:::o;2641:13:110:-;;;32935:227:65;33615:45;;32935:227;33021:20;33033:7;;;;33021:20;:::i;:::-;-1:-1:-1;;;;;33615:11:65;566:4899:87;;;;;;;33615:45:65;;;;;;566:4899:87;33615:45:65;;33078:10;33615:45;;;;566:4899:87;;;;;;;;;;;-1:-1:-1;;;;;566:4899:87;;;;;;;;;;;;;;-1:-1:-1;566:4899:87;;;:::o;:::-;;;;;;;;;;8442:263:72;6019:108:46;;566:4899:87;6019:108:46;;19669:4:31;566:4899:87;;;;;;;;;;;;;;;8442:263:72;:::o;7866:704:73:-;;;8372:29;465:4:47;838:5;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;566:4899:87;1946:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;566:4899:87;8522:31:73;:19;;;;;:31;:::i;:::-;566:4899:87;1946:22:43;;:::i;:::-;838:5:47;:::i;:::-;566:4899:87;8372:29:73;;;:191;:::i;:::-;566:4899:87;7866:704:73:o"},"methodIdentifiers":{"addLiquidityToBuffer(address,uint256,uint256,uint256,address)":"e2a92b1a","addLiquidityToBufferUnbalancedForTests(address,uint256,uint256)":"1f568ea3","areBuffersPaused()":"55cba7fe","collectAggregateFees(address)":"8f4ab9ca","disableQuery()":"de1a36a6","disableQueryPermanently()":"821440f2","disableRecoveryMode(address)":"bffb78b2","enableQuery()":"e0d55605","enableRecoveryMode(address)":"dc3f574e","getActionId(bytes4)":"851c1bb3","getBufferAsset(address)":"0387587d","getBufferBalance(address)":"4021fe0f","getBufferMinimumTotalSupply()":"26a8a991","getBufferOwnerShares(address,address)":"9385e39a","getBufferPeriodDuration()":"20c1fb7a","getBufferPeriodEndTime()":"cd51c12f","getBufferTotalShares(address)":"f2784e07","getMaximumPoolTokens()":"2e42f4d5","getMinimumPoolTokens()":"a8175b27","getMinimumTradeAmount()":"e2cb0ba0","getMinimumWrapAmount()":"53956aa2","getPauseWindowEndTime()":"8a8d123a","getPoolMinimumTotalSupply()":"d0965a6b","getVaultPausedState()":"85c8c015","initializeBuffer(address,uint256,uint256,uint256,address)":"653eb3b0","isVaultPaused()":"098401f5","manualBurnBufferShares(address,address,uint256)":"e8338894","manualDisableRecoveryMode(address)":"7578abb9","manualEnableRecoveryMode(address)":"27521d0c","manualMintBufferShares(address,address,uint256)":"6b230291","manualMintMinimumBufferSupplyReserve(address)":"e99ac9a3","manualPausePool(address)":"1558356e","manualPauseVault()":"071d8a02","manualReentrancyAddLiquidityToBuffer(address,uint256,uint256,uint256,address)":"9260d920","manualReentrancyDisableRecoveryMode(address)":"16df26cb","manualReentrancyInitializeBuffer(address,uint256,uint256,uint256,address)":"b61398cd","manualReentrancyRemoveLiquidityFromBufferHook(address,uint256,uint256,uint256,address)":"c7b3b3a9","manualUnpausePool(address)":"52b9e33d","manualUnpauseVault()":"cc671ff7","mockEnsurePoolNotInRecoveryMode(address)":"0b9df1f6","mockWithValidPercentage(uint256)":"88e5101a","pausePool(address)":"55aca1ec","pauseVault()":"9e0879c2","pauseVaultBuffers()":"e085c5a8","reentrancyGuardEntered()":"d2c725e0","removeLiquidityFromBuffer(address,uint256,uint256,uint256)":"ebc7955c","removeLiquidityFromBufferHook(address,uint256,uint256,uint256,address)":"5dcacd64","setAuthorizer(address)":"058a628f","setProtocolFeeController(address)":"2d771389","setStaticSwapFeePercentage(address,uint256)":"d15126ba","unpausePool(address)":"f21c38cd","unpauseVault()":"0b7562be","unpauseVaultBuffers()":"b9212b49","updateAggregateSwapFeePercentage(address,uint256)":"5e0b06f4","updateAggregateYieldFeePercentage(address,uint256)":"e253670a","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"mainVault\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"minTradeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minWrapAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodecOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"addLiquidityToBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"}],\"name\":\"addLiquidityToBufferUnbalancedForTests\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"areBuffersPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"collectAggregateFees\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"totalSwapFees\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"totalYieldFees\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableQueryPermanently\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableQuery\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"enableRecoveryMode\",\"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\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBufferBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getBufferOwnerShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBufferPeriodEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getBufferTotalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumPoolTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumTradeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumWrapAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolMinimumTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlyingRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrappedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"initializeBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isVaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualBurnBufferShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualDisableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualEnableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualMintBufferShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"manualMintMinimumBufferSupplyReserve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualPausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualPauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountUnderlyingInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountWrappedInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactSharesToIssue\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyAddLiquidityToBuffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualReentrancyDisableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyInitializeBuffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"manualReentrancyRemoveLiquidityFromBufferHook\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualUnpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualUnpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"mockEnsurePoolNotInRecoveryMode\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"mockWithValidPercentage\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"pausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOutRaw\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityFromBuffer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sharesToRemove\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountUnderlyingOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountWrappedOutRaw\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sharesOwner\",\"type\":\"address\"}],\"name\":\"removeLiquidityFromBufferHook\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"removedUnderlyingBalanceRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"removedWrappedBalanceRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"unpausePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpauseVaultBuffers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"updateAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"details\":\"The buffer needs to be initialized beforehand.\",\"params\":{\"exactSharesToIssue\":\"The value in underlying tokens that `sharesOwner` wants to add to the buffer, in underlying token decimals\",\"maxAmountUnderlyingInRaw\":\"Maximum amount of underlying tokens to add to the buffer. It is expressed in underlying token native decimals\",\"maxAmountWrappedInRaw\":\"Maximum amount of wrapped tokens to add to the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens deposited into the buffer\"}},\"addLiquidityToBufferUnbalancedForTests(address,uint256,uint256)\":{\"details\":\"Adds liquidity to buffer unbalanced, so it can unbalance the buffer.\"},\"areBuffersPaused()\":{\"details\":\"When buffers are paused, all buffer operations (i.e., calls on the Router with `isBuffer` true) will revert. Pausing buffers is reversible. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `isVaultPaused` to check the pause state of the Vault.\",\"returns\":{\"_0\":\"True if the Vault buffers are paused\"}},\"collectAggregateFees(address)\":{\"details\":\"Fees are sent to the ProtocolFeeController address.\",\"params\":{\"pool\":\"The pool on which all aggregate fees should be collected\"},\"returns\":{\"totalSwapFees\":\"An array with the total swap fees collected, sorted in token registration order\",\"totalYieldFees\":\"An array with the total yield fees collected, sorted in token registration order\"}},\"disableQuery()\":{\"details\":\"The query functions rely on a specific EVM feature to detect static calls. Query operations are exempt from settlement constraints, so it's critical that no state changes can occur. We retain the ability to disable queries in the unlikely event that EVM changes violate its assumptions (perhaps on an L2). This function can be acted upon as an emergency measure in ambiguous contexts where it's not 100% clear whether disabling queries is completely necessary; queries can still be re-enabled after this call.\"},\"disableQueryPermanently()\":{\"details\":\"Shall only be used when there is no doubt that queries pose a fundamental threat to the system.\"},\"disableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It re-syncs live balances (which could not be updated during Recovery Mode), forfeiting any yield fees that accrued while enabled. It makes external calls, and could potentially fail if there is an issue with any associated Rate Providers.\",\"params\":{\"pool\":\"The address of the pool\"}},\"enableQuery()\":{\"details\":\"Only works if queries are not permanently disabled.\"},\"enableRecoveryMode(address)\":{\"details\":\"This is a permissioned function. It enables a safe proportional withdrawal, with no external calls. Since there are no external calls, ensuring that entering Recovery Mode cannot fail, we cannot compute and so must forfeit any yield fees between the last operation and enabling Recovery Mode. For the same reason, live balances cannot be updated while in Recovery Mode, as doing so might cause withdrawals to fail.\",\"params\":{\"pool\":\"The address of the pool\"}},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getBufferAsset(address)\":{\"details\":\"The asset can never change after buffer initialization.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"underlyingToken\":\"Address of the underlying token registered for the wrapper; `address(0)` if the buffer has not been initialized.\"}},\"getBufferBalance(address)\":{\"details\":\"All values are in native token decimals of the wrapped or underlying tokens.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"_0\":\"Amount of underlying tokens deposited into the buffer, in native token decimals\",\"_1\":\"Amount of wrapped tokens deposited into the buffer, in native token decimals\"}},\"getBufferMinimumTotalSupply()\":{\"details\":\"This prevents buffers from being completely drained. When the buffer is initialized, this minimum number of shares is added to the shares resulting from the initial deposit. Buffer total supply accounting is internal to the Vault, as buffers are not tokenized.\",\"returns\":{\"_0\":\"The minimum total supply a buffer can have after initialization\"}},\"getBufferOwnerShares(address,address)\":{\"params\":{\"liquidityOwner\":\"Address of the user that owns liquidity in the wrapped token's buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"shares\":\"Amount of shares allocated to the liquidity owner, in native underlying token decimals\"}},\"getBufferPeriodDuration()\":{\"details\":\"This value is immutable. It represents the period during which, if paused, the Vault will remain paused. This ensures there is time available to address whatever issue caused the Vault to be paused. Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"The length of the buffer period in seconds\"}},\"getBufferPeriodEndTime()\":{\"details\":\"This value is immutable. If already paused, the Vault can be unpaused until this timestamp. Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"The timestamp after which the Vault remains permanently unpaused\"}},\"getBufferTotalShares(address)\":{\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"shares\":\"Amount of supply shares of the buffer, in native underlying token decimals\"}},\"getMaximumPoolTokens()\":{\"returns\":{\"_0\":\"The maximum token count of a pool\"}},\"getMinimumPoolTokens()\":{\"details\":\"We expect the vast majority of pools to be 2-token.\",\"returns\":{\"_0\":\"The minimum token count of a pool\"}},\"getMinimumTradeAmount()\":{\"details\":\"This limit is applied to the 18-decimal \\\"upscaled\\\" amount in any operation (swap, add/remove liquidity).\",\"returns\":{\"_0\":\"The minimum trade amount as an 18-decimal floating point number\"}},\"getMinimumWrapAmount()\":{\"details\":\"This limit is applied to the wrap operation amount, in native underlying token decimals.\",\"returns\":{\"_0\":\"The minimum wrap amount in native underlying token decimals\"}},\"getPauseWindowEndTime()\":{\"details\":\"This value is immutable, and represents the timestamp after which the Vault can no longer be paused by governance. Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"The timestamp when the Vault's pause window ends\"}},\"getPoolMinimumTotalSupply()\":{\"details\":\"This prevents pools from being completely drained. When the pool is initialized, this minimum amount of BPT is minted to the zero address. This is an 18-decimal floating point number; BPT are always 18 decimals.\",\"returns\":{\"_0\":\"The minimum total supply a pool can have after initialization\"}},\"getVaultPausedState()\":{\"details\":\"Balancer timestamps are 32 bits.\",\"returns\":{\"_0\":\"True if the Vault is paused\",\"_1\":\"The timestamp of the end of the Vault's pause window\",\"_2\":\"The timestamp of the end of the Vault's buffer period\"}},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"params\":{\"amountUnderlyingRaw\":\"Amount of underlying tokens that will be deposited into the buffer\",\"amountWrappedRaw\":\"Amount of wrapped tokens that will be deposited into the buffer\",\"minIssuedShares\":\"Minimum amount of shares to receive from the buffer, expressed in underlying token native decimals\",\"sharesOwner\":\"Address that will own the deposited liquidity. Only this address will be able to remove liquidity from the buffer\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"issuedShares\":\"the amount of tokens sharesOwner has in the buffer, expressed in underlying token amounts. (it is the BPT of an internal ERC4626 buffer). It is expressed in underlying token native decimals.\"}},\"isVaultPaused()\":{\"details\":\"If the Vault is paused, all non-Recovery Mode state-changing operations on pools will revert. Note that ERC4626 buffers and the Vault have separate and independent pausing mechanisms. Pausing the Vault does not also pause buffers (though we anticipate they would likely be paused and unpaused together). Call `areBuffersPaused` to check the pause state of the buffers.\",\"returns\":{\"_0\":\"True if the Vault is paused\"}},\"pausePool(address)\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during pool factory deployment.\",\"params\":{\"pool\":\"The pool being paused\"}},\"pauseVault()\":{\"details\":\"This is a permissioned function that will only work during the Pause Window set during deployment. Note that ERC4626 buffer operations have an independent pause mechanism, which is not affected by pausing the Vault. Custom routers could still wrap/unwrap using buffers while the Vault is paused, unless buffers are also paused (with `pauseVaultBuffers`).\"},\"pauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. Currently it's not possible to pause vault buffers individually. This is a permissioned call, and is reversible (see `unpauseVaultBuffers`). Note that the Vault has a separate and independent pausing mechanism. It is possible to pause the Vault (i.e. pool operations), without affecting buffers, and vice versa.\"},\"reentrancyGuardEntered()\":{\"returns\":{\"_0\":\"True if the Vault is currently executing a nonReentrant function\"}},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"details\":\"Only proportional exits are supported, and the sender has to be the owner of the shares. This function unlocks the Vault just for this operation; it does not work with a Router as an entrypoint. Pre-conditions: - The buffer needs to be initialized. - sharesOwner is the original msg.sender, it needs to be checked in the Router. That's why this call is authenticated; only routers approved by the DAO can remove the liquidity of a buffer. - The buffer needs to have some liquidity and have its asset registered in `_bufferAssets` storage.\",\"params\":{\"minAmountUnderlyingOutRaw\":\"Minimum amount of underlying tokens to receive from the buffer. It is expressed in underlying token native decimals\",\"minAmountWrappedOutRaw\":\"Minimum amount of wrapped tokens to receive from the buffer. It is expressed in wrapped token native decimals\",\"sharesToRemove\":\"Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's total shares. It is expressed in underlying token native decimals\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceRaw\":\"Amount of underlying tokens returned to the user\",\"removedWrappedBalanceRaw\":\"Amount of wrapped tokens returned to the user\"}},\"removeLiquidityFromBufferHook(address,uint256,uint256,uint256,address)\":{\"details\":\"Internal hook for `removeLiquidityFromBuffer`. Can only be called by the Vault itself via `removeLiquidityFromBuffer`, which correctly forwards the real sender as the `sharesOwner`. This function must be reentrant because it calls the nonReentrant function `sendTo`. However, since `sendTo` is the only function that makes external calls, `removeLiquidityFromBufferHook` cannot reenter the Vault.\",\"params\":{\"minAmountUnderlyingOutRaw\":\"Minimum amount of underlying tokens to receive from the buffer. It is expressed in underlying token native decimals\",\"minAmountWrappedOutRaw\":\"Minimum amount of wrapped tokens to receive from the buffer. It is expressed in wrapped token native decimals\",\"sharesOwner\":\"Owner of the shares (`msg.sender` for `removeLiquidityFromBuffer` entrypoint)\",\"sharesToRemove\":\"Amount of shares to remove from the buffer. Cannot be greater than sharesOwner's total shares\",\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"removedUnderlyingBalanceRaw\":\"Amount of underlying tokens returned to the user\",\"removedWrappedBalanceRaw\":\"Amount of wrapped tokens returned to the user\"}},\"setAuthorizer(address)\":{\"details\":\"This is a permissioned call. Emits an `AuthorizerChanged` event.\",\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"setProtocolFeeController(address)\":{\"details\":\"This is a permissioned call. Emits a `ProtocolFeeControllerChanged` event.\",\"params\":{\"newProtocolFeeController\":\"The address of the new Protocol Fee Controller\"}},\"setStaticSwapFeePercentage(address,uint256)\":{\"details\":\"This is a permissioned function, disabled if the pool is paused. The swap fee percentage must be within the bounds specified by the pool's implementation of `ISwapFeePercentageBounds`. Emits the SwapFeePercentageChanged event.\",\"params\":{\"pool\":\"The address of the pool for which the static swap fee will be changed\",\"swapFeePercentage\":\"The new swap fee percentage to apply to the pool\"}},\"unpausePool(address)\":{\"details\":\"This is a permissioned function that will only work on a paused Pool within the Buffer Period set during deployment. Note that the Pool will automatically unpause after the Buffer Period expires.\",\"params\":{\"pool\":\"The pool being unpaused\"}},\"unpauseVault()\":{\"details\":\"This is a permissioned function that will only work on a paused Vault within the Buffer Period set during deployment. Note that the Vault will automatically unpause after the Buffer Period expires. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing the Vault does not reverse `pauseVaultBuffers`. If buffers were also paused, they will remain in that state until explicitly unpaused.\"},\"unpauseVaultBuffers()\":{\"details\":\"When buffers are paused, it's not possible to add liquidity or wrap/unwrap tokens using the Vault's `erc4626BufferWrapOrUnwrap` primitive. However, it's still possible to remove liquidity. As noted above, ERC4626 buffers and Vault operations on pools are independent. Unpausing buffers does not reverse `pauseVault`. If the Vault was also paused, it will remain in that state until explicitly unpaused. This is a permissioned call.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateSwapFeePercentageChanged` event.\",\"params\":{\"newAggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose swap fee percentage will be updated\"}},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"details\":\"Can only be called by the current protocol fee controller. Called when governance overrides a protocol fee for a specific pool, or to permissionlessly update a pool to a changed global protocol fee value (if the pool's fee has not previously been set by governance). Ensures the aggregate percentage <= FixedPoint.ONE, and also that the final value does not lose precision when stored in 24 bits (see `FEE_BITLENGTH` in VaultTypes.sol). Emits an `AggregateYieldFeePercentageChanged` event.\",\"params\":{\"newAggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose yield fee percentage will be updated\"}},\"vault()\":{\"details\":\"The main Vault contains the entrypoint and main liquidity operation implementations.\",\"returns\":{\"_0\":\"vault The address of the main Vault\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BalanceOverflow()\":[{\"notice\":\"One of the balances is above the maximum value that can be stored.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"CodecOverflow()\":[{\"notice\":\"Function called with an invalid value.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotStaticCall()\":[{\"notice\":\"A state-changing transaction was initiated in a context that only allows static calls.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"OutOfBounds()\":[{\"notice\":\"Function called with an invalid bitLength or offset.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"addLiquidityToBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Adds liquidity to an internal ERC4626 buffer in the Vault, proportionally.\"},\"areBuffersPaused()\":{\"notice\":\"Indicates whether the Vault buffers are paused.\"},\"collectAggregateFees(address)\":{\"notice\":\"Collects accumulated aggregate swap and yield fees for the specified pool.\"},\"disableQuery()\":{\"notice\":\"Disables query functionality on the Vault. Can only be called by governance.\"},\"disableQueryPermanently()\":{\"notice\":\"Disables query functionality permanently on the Vault. Can only be called by governance.\"},\"disableRecoveryMode(address)\":{\"notice\":\"Disable recovery mode for a pool.\"},\"enableQuery()\":{\"notice\":\"Enables query functionality on the Vault. Can only be called by governance.\"},\"enableRecoveryMode(address)\":{\"notice\":\"Enable recovery mode for a pool.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getBufferAsset(address)\":{\"notice\":\"Returns the asset registered for a given wrapped token.\"},\"getBufferBalance(address)\":{\"notice\":\"Returns the amount of underlying and wrapped tokens deposited in the internal buffer of the Vault.\"},\"getBufferMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of an ERC4626 wrapped token buffer in the Vault.\"},\"getBufferOwnerShares(address,address)\":{\"notice\":\"Returns the shares (internal buffer BPT) of a liquidity owner: a user that deposited assets in the buffer.\"},\"getBufferPeriodDuration()\":{\"notice\":\"Returns the Vault's buffer period duration.\"},\"getBufferPeriodEndTime()\":{\"notice\":\"Returns the Vault's buffer period end time.\"},\"getBufferTotalShares(address)\":{\"notice\":\"Returns the supply shares (internal buffer BPT) of the ERC4626 buffer.\"},\"getMaximumPoolTokens()\":{\"notice\":\"Get the maximum number of tokens in a pool.\"},\"getMinimumPoolTokens()\":{\"notice\":\"Get the minimum number of tokens in a pool.\"},\"getMinimumTradeAmount()\":{\"notice\":\"Get the minimum trade amount in a pool operation.\"},\"getMinimumWrapAmount()\":{\"notice\":\"Get the minimum wrap amount in a buffer operation.\"},\"getPauseWindowEndTime()\":{\"notice\":\"Returns the Vault's pause window end time.\"},\"getPoolMinimumTotalSupply()\":{\"notice\":\"Get the minimum total supply of pool tokens (BPT) for an initialized pool.\"},\"getVaultPausedState()\":{\"notice\":\"Returns the paused status, and end times of the Vault's pause window and buffer period.\"},\"initializeBuffer(address,uint256,uint256,uint256,address)\":{\"notice\":\"Initializes buffer for the given wrapped token.\"},\"isVaultPaused()\":{\"notice\":\"Indicates whether the Vault is paused.\"},\"pausePool(address)\":{\"notice\":\"Pause the Pool: an emergency action which disables all pool functions.\"},\"pauseVault()\":{\"notice\":\"Pause the Vault: an emergency action which disables all operational state-changing functions on pools.\"},\"pauseVaultBuffers()\":{\"notice\":\"Pauses native vault buffers globally.\"},\"reentrancyGuardEntered()\":{\"notice\":\"Expose the state of the Vault's reentrancy guard.\"},\"removeLiquidityFromBuffer(address,uint256,uint256,uint256)\":{\"notice\":\"Removes liquidity from an internal ERC4626 buffer in the Vault.\"},\"setAuthorizer(address)\":{\"notice\":\"Sets a new Authorizer for the Vault.\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets a new Protocol Fee Controller for the Vault.\"},\"setStaticSwapFeePercentage(address,uint256)\":{\"notice\":\"Assigns a new static swap fee percentage to the specified pool.\"},\"unpausePool(address)\":{\"notice\":\"Reverse a `pause` operation, and restore the Pool to normal functionality.\"},\"unpauseVault()\":{\"notice\":\"Reverse a `pause` operation, and restore Vault pool operations to normal functionality.\"},\"unpauseVaultBuffers()\":{\"notice\":\"Unpauses native vault buffers globally.\"},\"updateAggregateSwapFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate swap fee percentage.\"},\"updateAggregateYieldFeePercentage(address,uint256)\":{\"notice\":\"Update an aggregate yield fee percentage.\"},\"vault()\":{\"notice\":\"Returns the main Vault address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol\":\"VaultAdminMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultAdminMock.sol\":{\"keccak256\":\"0x51d1502369f0bb1fec58b7aa848f20e6ea3ddcb4866471e2fdbe96f0f6783fb5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ab9f73ec13f137f3103edf9caa8edc4752db585393cc7db6c62f85a1efdbfb5e\",\"dweb:/ipfs/QmXBoBF18c1f33NYqPmrJ3cqULMak55uznBvzfpf1bHpDd\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultAdmin.sol\":{\"keccak256\":\"0x4867fd0bb2efe3fd6de41c7ba17e31fa2b8f8a9fdc085c03f45c5504c3a95d3c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8cb23e3dda5ef46a0f11861ac8a1a0e787c33df7241899208291d6fef1fec7fe\",\"dweb:/ipfs/QmVLLgjmomkgg6t2mB3PjDLhkAZ9x9gLSqU6kH22J3gwRu\"]},\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":{\"keccak256\":\"0xad949728097754fb91dd82f46a4f3430f0caf092fe719f04c030325e623c59cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6ba4635b64181a08098f2b4bde9bc6ceb8580d24654ec39c3d38ac2c8082317\",\"dweb:/ipfs/QmbthXemuT8Qvs2jdTADdyzbcPuZaKWfZjRn7j8dWuwffs\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol\":{\"keccak256\":\"0xf17a6fb82ff8eac940260544aa041e2cf8b826c0f7e205b4d52a4c5394a7ee38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c88893eba6593f2f7ef05e3ffeb61416b6cc630eaad2efa90e77262f3282ab81\",\"dweb:/ipfs/QmX9XhQix9yKT7buiT77igy8Bf1jvwwYGxpmTr4e5mWnQD\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@balancer-labs/v3-vault/contracts/test/VaultAdminMock.sol\":{\"keccak256\":\"0x498564ebac09c742fa0cda4321317f01a87b874f28123cf83eca91db4e955708\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f9b73a9366ec68b8dc5b9e9c947151c8a28fe452127187bdf2b0eaeb1f05b0ed\",\"dweb:/ipfs/QmSLjY6DuDRgXXCJAQ8xDgouN3Z2EpP41xZLAynQ4358J6\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol":{"VaultExtensionMock":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IVaultAdmin","name":"vaultAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BalanceOverflow","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"CodecOverflow","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"ErrorSelectorNotFound","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotStaticCall","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"Result","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TokensNotSorted","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"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":"owner","type":"address"},{"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":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"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":"swapParams","type":"tuple"}],"name":"computeDynamicSwapFeePercentage","outputs":[{"internalType":"uint256","name":"dynamicSwapFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"emitAuxiliaryEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getAddLiquidityCalledFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getBptRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getERC4626BufferAsset","outputs":[{"internalType":"address","name":"asset","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getHooksConfig","outputs":[{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNonzeroDeltaCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolConfig","outputs":[{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolPausedState","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolRoleAccounts","outputs":[{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenInfo","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":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokenRates","outputs":[{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getReservesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getStaticSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getTokenDelta","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"initialize","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"isERC4626BufferInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isQueryDisabledPermanently","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"exactAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"manualInitializePoolReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"manualRegisterPoolReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newSwapFee","type":"uint256"}],"name":"manuallySetSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"input","type":"bytes"}],"name":"mockExtensionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quote","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quoteAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reentrancyGuardEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"protocolFeeExempt","type":"bool"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"}],"name":"removeLiquidityRecovery","outputs":[{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_contract_IVault_fromMemory":{"entryPoint":981,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint32_fromMemory":{"entryPoint":1001,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":946,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_4756":{"entryPoint":899,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateVaultStorageSlot":{"entryPoint":1029,"id":27922,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6102006040908082523461036e57818161613f803803809161002182856103b2565b83398101031261036e57610034816103d5565b6020918201516001600160a01b03929091908383169081840361036e5761007a865161005f81610383565b600a8152691a5cd55b9b1bd8dad95960b21b83820152610405565b60c0526100ad865161008b81610383565b60118152701b9bdb96995c9bd1195b1d1850dbdd5b9d607a1b83820152610405565b60e0526100da86516100be81610383565b600b81526a746f6b656e44656c74617360a81b83820152610405565b9561010096875261011281516100ef81610383565b6012815271185919131a5c5d5a591a5d1e50d85b1b195960721b84820152610405565b95610120968752610141825161012781610383565b60098152681cd95cdcda5bdb925960ba1b85820152610405565b610140908152825163fbfa77cf60e01b815290918482600481895afa918215610379575f9261033e575b5080871691160361032f578151634546891d60e11b8152918383600481885afa928315610325575f93610306575b506101609283528051631060fdbd60e11b8152948486600481845afa9586156102d8575f966102e2575b50846004916101a097885283519283809263cd51c12f60e01b82525afa9485156102d8575f956102a9575b50506101809384526101c09586526101e09687525196615c6698896104d98a3960805189505060a05189505060c05189818161136f0152818161348801526137c0015260e0518981816120110152818161555101526155b80152518881816114f101526154f70152518781816116d70152611a610152518681816116b50152611a3f015251855050518461441501525183818161061d015261324001525182818161278b0152612f0201525181818161069d0152612ec50152f35b6102c9929550803d106102d1575b6102c181836103b2565b8101906103e9565b925f806101ee565b503d6102b7565b82513d5f823e3d90fd5b60049196506102fe8691823d84116102d1576102c181836103b2565b9691506101c3565b61031e919350843d86116102d1576102c181836103b2565b915f610199565b50513d5f823e3d90fd5b634166145b60e11b5f5260045ffd5b9091508481813d8311610372575b61035681836103b2565b8101031261036e57610367906103d5565b905f61016b565b5f80fd5b503d61034c565b84513d5f823e3d90fd5b604081019081106001600160401b0382111761039e57604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b0382119082101761039e57604052565b51906001600160a01b038216820361036e57565b9081602091031261036e575163ffffffff8116810361036e5790565b6040519061041282610383565b600c8252610493603a602084016b5661756c7453746f7261676560a01b81526020604051948592828401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952518091603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a8101845201826103b2565b5190205f1981019081116104c4576040519060208201908152602082526104b982610383565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610018575b36612eae57612e86565b5f3560e01c8062fdfa13146102f657806313d21cdf146102f157806313ef8a5d146102ec57806315e32046146102e75780631ba0ae45146102e25780634afbaf5a146102dd5780634d472bdd146102d85780634f037ee7146102d3578063532cec7c146102ce578063535cfd8a146102c9578063590e8145146102c457806367e0e076146102bf5780636844846b146102ba5780636c9bc732146102b557806370600089146102b0578063757d64b3146102ab5780637e361bde146102a6578063809846d1146102a15780638380edb71461029c57806385e0b9991461029757806385f2dbd414610292578063927da1051461028d57806396787092146102885780639e825ff514610283578063a07d60401461027e578063aaabadc514610279578063ace9b89b14610274578063b45090f91461026f578063b4aef0ab1461026a578063ba8a2be014610265578063be7d628a14610260578063c673bdaf1461025b578063c808824714610256578063ca4f280314610251578063ce8630d41461024c578063d2c725e014610247578063db81718714610242578063e1f21c671461023d578063e4dc2aa414610238578063e68010c614610233578063e9ddeb261461022e578063edfa356814610229578063eeec802f14610224578063f29486a11461021f578063f7888aec1461021a5763fbfa77cf0361000e5761276c565b612703565b612669565b6124cc565b612476565b6123ba565b61226a565b612082565b612039565b611ff5565b611fb7565b611ebf565b611e11565b611d69565b611d21565b611ccd565b611b18565b611aee565b611aa2565b611a13565b6119e2565b611527565b6114c5565b611481565b611431565b611403565b611399565b611353565b61127a565b611082565b610f2c565b610edf565b610e9c565b610e54565b610cfe565b610c21565b610b78565b610b14565b610a12565b610930565b6106c1565b61067e565b6105dc565b6105b2565b6104c3565b610353565b6001600160a01b0381160361030c57565b5f80fd5b610104359061031e826102fb565b565b359061031e826102fb565b600319604091011261030c57600435610343816102fb565b90602435610350816102fb565b90565b3461030c5760206103a26001600160a01b0361036e3661032b565b9190610378612ef8565b61038181612f52565b165f526006835260405f20906001600160a01b03165f5260205260405f2090565b5460801c604051908152f35b9081518082526020808093019301915f5b8281106103cd575050505090565b83516001600160a01b0316855293810193928101926001016103bf565b600211156103f457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9060406060928051610432816103ea565b83526001600160a01b0360208201511660208401520151151560408201520190565b9081518082526020808093019301915f5b828110610473575050505090565b90919293826104856001928751610421565b950193929101610465565b9081518082526020808093019301915f5b8281106104af575050505090565b8351855293810193928101926001016104a1565b3461030c57602060031936011261030c576105a46105056004356104e6816102fb565b6104ee6127af565b506104f7612ef8565b61050081612f9d565b612fea565b6040519182916020835280516020840152610530602082015160e060408601526101008501906103ae565b60c061059261057f61056b610557604087015195601f1996878b83030160608c0152610454565b6060870151868a83030160808b0152610490565b6080860151858983030160a08a0152610490565b60a0850151848883030184890152610490565b920151908483030160e0850152610490565b0390f35b5f91031261030c57565b3461030c575f60031936011261030c576105ca612ef8565b602060ff600954166040519015158152f35b3461030c57602060031936011261030c5760806004356105fb816102fb565b610603612ef8565b61060c81612f52565b61061581613201565b6106429291927f000000000000000000000000000000000000000000000000000000000000000082612813565b916001600160a01b038091165f52600160205260405f20541691604051931515845263ffffffff80921660208501521660408301526060820152f35b3461030c575f60031936011261030c5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461030c57602060031936011261030c5760206004356106e0816102fb565b6106e8612ef8565b6001600160a01b038091165f52600e825260405f205416604051908152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff82111761075057604052565b610707565b67ffffffffffffffff811161075057604052565b6060810190811067ffffffffffffffff82111761075057604052565b60e0810190811067ffffffffffffffff82111761075057604052565b610140810190811067ffffffffffffffff82111761075057604052565b90601f601f19910116810190811067ffffffffffffffff82111761075057604052565b6040519061031e82610785565b6040519061031e82610734565b6040519061031e826107a1565b60405190610160820182811067ffffffffffffffff82111761075057604052565b6040519061031e82610769565b6002111561030c57565b359061031e82610836565b67ffffffffffffffff81116107505760051b60200190565b9080601f8301121561030c57602090823561087d8161084b565b9361088b60405195866107be565b81855260208086019260051b82010192831161030c57602001905b8282106108b4575050505090565b813581529083019083016108a6565b67ffffffffffffffff811161075057601f01601f191660200190565b9291926108eb826108c3565b916108f960405193846107be565b82948184528183011161030c578281602093845f960137010152565b9080601f8301121561030c57816020610350933591016108df565b3461030c5760031960408136011261030c5760043561094e816102fb565b6024359067ffffffffffffffff9283831161030c5760e090833603011261030c576109776107e1565b9061098483600401610840565b825260248301356020830152604483013584811161030c576109ac9060043691860101610863565b604083015260648301356060830152608483013560808301526109d160a48401610320565b60a083015260c483013593841161030c576109f8610a029360046105a49636920101610915565b60c0830152612830565b6040519081529081906020820190565b3461030c57602060031936011261030c57600435610a2f816102fb565b610a37612ef8565b610a4081612f9d565b610a8d60206080610a5084612fea565b0151604051809381927f984de9e8000000000000000000000000000000000000000000000000000000008352604060048401526044830190610490565b6001602483015203816001600160a01b0386165afa8015610b0f576105a492610a02925f92610ada575b50610ad3906001600160a01b03165f52601160205260405f2090565b54906133de565b610ad3919250610b019060203d602011610b08575b610af981836107be565b81019061295c565b9190610ab7565b503d610aef565b612988565b3461030c57602060031936011261030c576001600160a01b03600435610b39816102fb565b610b41612ef8565b610b4a81612f52565b165f525f6020526020600160405f2054811c166040519015158152f35b906020610350928181520190610490565b3461030c57602060031936011261030c576105a46080610bae600435610b9d816102fb565b610ba5612ef8565b61050081612f52565b0151604051918291602083526020830190610490565b9181601f8401121561030c5782359167ffffffffffffffff831161030c576020838186019501011161030c57565b602060031982011261030c576004359067ffffffffffffffff821161030c57610c1d91600401610bc4565b9091565b6020610c36610c2f36610bf2565b36916108df565b818151910120604051908152f35b9081518082526020808093019301915f5b828110610c63575050505090565b83516001600160a01b031685529381019392810192600101610c55565b9290610c989095949295608085526080850190610c44565b6020908481036020860152602080885192838152019701915f5b828110610ce1575050505084610cd391846103509697036040860152610490565b916060818403910152610490565b9091929782610cf36001928b51610421565b990193929101610cb2565b3461030c57602060031936011261030c57600435610d1b816102fb565b610d23612ef8565b610d2c81612f52565b6001600160a01b0381165f52600560205260405f20610d64610d5f836001600160a01b03165f52600360205260405f2090565b612993565b90815192610d7184612a08565b93610d7b81612a56565b91610d8582612a56565b935f5b838110610da057604051806105a488888c8c85610c80565b80610db560019284905f5260205260405f2090565b54610e0c610e078a610df2610de586610ddf8b6001600160a01b03165f52600460205260405f2090565b93612ab4565b516001600160a01b031690565b6001600160a01b03165f5260205260405f2090565b612ad9565b610e16838c612ab4565b52610e21828b612ab4565b506fffffffffffffffffffffffffffffffff8116610e3f8389612ab4565b5260801c610e4d8289612ab4565b5201610d88565b3461030c57602060031936011261030c576020600435610e73816102fb565b610e7b612ef8565b6001600160a01b038091165f52600e825260405f2054161515604051908152f35b3461030c57602060031936011261030c576020610ed4600435610ebe816102fb565b610ec6612ef8565b610ecf81612f52565b613201565b506040519015158152f35b3461030c57604060031936011261030c576001600160a01b03600435610f04816102fb565b16805f525f602052610f1c60243560405f2054613402565b905f525f60205260405f20555f80f35b3461030c575f80610f3c36610bf2565b90610f45613475565b610f4d612ef8565b8160405192839283378101838152039082335af1610f69612b18565b908015610fb65790610f7f81610fb29333613509565b506040519182917f5ab64fb800000000000000000000000000000000000000000000000000000000835260048301612465565b0390fd5b506004815110611035577f5ab64fb8000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000602083015116036134fa577f28f95541000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b909161107461035093604084526040840190610490565b916020818403910152610490565b3461030c57602060031936011261030c5760043561109f816102fb565b6110a7612ef8565b6110b081612f52565b6001600160a01b038082165f525f60205260405f2054600360205260405f209160405180938491602082549182815201915f5260205f20935f905b82821061117a57505050611101925003836107be565b61110d82518092613595565b9161111782612a56565b935f5b83811061113057604051806105a488888361105d565b600190611169611164610e07611157866001600160a01b03165f52600460205260405f2090565b610df2610de5868a612ab4565b6135e7565b6111738289612ab4565b520161111a565b85546001600160a01b03908216168452600195860195889550602090940193909101906110eb565b60c060031982011261030c576004356111ba816102fb565b916024356111c7816102fb565b9167ffffffffffffffff9060443582811161030c578160238201121561030c5780600401356111f58161084b565b9161120360405193846107be565b8183526020916024602085019160051b8301019185831161030c57602401905b82821061126157505050509260643583811161030c578261124691600401610863565b926084359260a43591821161030c5761035091600401610915565b838091833561126f816102fb565b815201910190611223565b3461030c57611319602061128d366111a2565b909161129a9793976136c3565b6113056112f2604051998a9889987fba8a2be0000000000000000000000000000000000000000000000000000000008a526001600160a01b0380921660048b015216602489015260c0604489015260c4880190610c44565b6003199283888303016064890152610490565b9260848601528483030160a4850152612440565b03815f305af18015610b0f57611334575b611332613718565b005b61134c9060203d602011610b0857610af981836107be565b505f61132a565b3461030c575f60031936011261030c5761136b612ef8565b60207f00000000000000000000000000000000000000000000000000000000000000005c6040519015158152f35b3461030c5760206fffffffffffffffffffffffffffffffff6113f96001600160a01b036113c53661032b565b91906113cf612ef8565b6113d881612f52565b165f526006845260405f20906001600160a01b03165f5260205260405f2090565b5416604051908152f35b3461030c575f60031936011261030c5761141b612ef8565b60206001600160a01b03600a5416604051908152f35b3461030c57606060031936011261030c576020611479600435611453816102fb565b60243561145f816102fb565b6044359161146c836102fb565b611474612ef8565b61373d565b604051908152f35b3461030c57602060031936011261030c576001600160a01b036004356114a6816102fb565b6114ae612ef8565b165f526008602052602060405f2054604051908152f35b3461030c57602060031936011261030c5760206114796004356114e7816102fb565b6114ef612ef8565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03165f5260205260405f205c90565b3461030c57608060031936011261030c57600435611544816102fb565b602435611550816102fb565b6044359060643567ffffffffffffffff811161030c57611574903690600401610863565b61157c612ef8565b6115846137be565b61158c6136c3565b61159584612f9d565b6001600160a01b039384811691825f526020905f6020526115be60405f205460019060031c1690565b156119b6576115de836001600160a01b03165f52600560205260405f2090565b966115e7612b47565b92611606610d5f866001600160a01b03165f52600360205260405f2090565b808552519661161b6040860198808a52612a56565b97608086019889525f5b815181101561166e578061165c6116466001938f905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b611667828d51612ab4565b5201611625565b50899896979861169c8189516116958c6001600160a01b03165f52601160205260405f2090565b549061380f565b996116a78351612a56565b956060890196875261170e8b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b151560a08a018181529590611989575b5f5b855181101561186e5761174a818f8a8e838e61173c8e51151590565b61181e575b50505050612ab4565b51611755828c612ab4565b51116117b557808c8f826117a88f826117ae9461178f61177e610de560019b6117949651612ab4565b6117888484612ab4565b519061389f565b612ab4565b519351936117a28386612ab4565b51612bb7565b92612ab4565b5201611720565b8d8a6117de836117d78f956117d1610de58261181b9951612ab4565b95612ab4565b5192612ab4565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b5ffd5b61183d61184f9361185a956118338589612ab4565b519101519061385e565b611848838351612ab4565b5251612ab4565b516117a28484612ab4565b6118648383612ab4565b528a8e838e611741565b508a95509187918d938d611893816001600160a01b03165f52600560205260405f2090565b965f5b89518110156118e457806118cb8c6118c4836118bc6001968f905f5260205260405f2090565b549251612ab4565b51906138dd565b6118dd828c905f5260205260405f2090565b5501611896565b6105a4885f89897ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a58a8a6119626119508c6119398d611925813388866138eb565b61192d613986565b611979575b85836139eb565b6001600160a01b03165f52601160205260405f2090565b54955188604051948594169784612bc4565b0390a461196d613718565b60405191829182610b67565b6119848187856139a8565b611932565b6119ac6119a68d6001600160a01b03165f525f60205260405f2090565b546132a8565b60208b015261171e565b837fef029adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461030c575f60031936011261030c576119fa612ef8565b60206001600160a01b0360095460081c16604051908152f35b3461030c57602060031936011261030c576020611a98600435611a35816102fb565b611a3d612ef8565b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b6040519015158152f35b3461030c57602060031936011261030c576001600160a01b03600435611ac7816102fb565b611acf612ef8565b611ad881612f52565b165f525f602052602061147960405f20546132a8565b3461030c575f60031936011261030c57611b06612ef8565b60206001600754166040519015158152f35b3461030c57611b26366111a2565b9291611b30612ef8565b611b386137be565b611b4186612f52565b611b496136c3565b611b5286613bb6565b611b5b86612fea565b92611b6a8451600190811c1690565b611c98579183916105a4979593611b8c6020611bdb9997015151835190613c04565b60c08401958651611ba460a087019182519086613c33565b9789611bb5885160019060081c1690565b611c27575b8994925087915092611bcd969593613e1c565b94859151600190600a1c1690565b611bea575b8590610a02613718565b611c18611c0b611c1e956001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b926140d4565b5f808083611be0565b91611c8b91611c5d899b8b611c57611c0b611bcd9c9b999a986001600160a01b03165f52600260205260405f2090565b91613cd9565b611c81611c7b8d6001600160a01b03165f52600560205260405f2090565b8a613daf565b5190519084613c33565b9781939294955089611bba565b7f218e3747000000000000000000000000000000000000000000000000000000005f526001600160a01b03871660045260245ffd5b3461030c57602060031936011261030c576001600160a01b03600435611cf2816102fb565b611cfa612ef8565b611d0381612f52565b165f525f6020526020600160405f205460031c166040519015158152f35b3461030c57602060031936011261030c576001600160a01b03600435611d46816102fb565b611d4e612ef8565b165f525f6020526020600160405f2054166040519015158152f35b3461030c57604060031936011261030c5760243567ffffffffffffffff811161030c57611d9a903690600401610bc4565b611da2612ef8565b611dab33612f52565b80604051926020845281602085015260408401375f604082840101527f4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d8585642860043592604081601f19601f339601168101030190a3005b906020610350928181520190610c44565b3461030c57602060031936011261030c57600435611e2e816102fb565b611e36612ef8565b611e3f81612f52565b6001600160a01b038091165f52600360205260405f20906040519081602084549182815201935f5260205f20915f905b828210611e92576105a485611e86818903826107be565b60405191829182611e00565b909192946001611eb4819284895416906001600160a01b036020921681520190565b960193920190611e6f565b3461030c57602060031936011261030c57610160611f24600435611ee2816102fb565b611eea612bef565b50611ef3612ef8565b611efc81612f52565b6001600160a01b038091165f525f60205260405f205490600260205260405f205416906141a0565b611fb5604051809280511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565bf35b3461030c575f60031936011261030c5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b3461030c575f60031936011261030c5761200d612ef8565b60207f00000000000000000000000000000000000000000000000000000000000000005c604051908152f35b3461030c57606060031936011261030c57612077600435612059816102fb565b602435612065816102fb565b61206d612ef8565b60443591336142de565b602060405160018152f35b3461030c57602060031936011261030c576001600160a01b036004356120a7816102fb565b6120af612ef8565b165f526011602052602060405f2054604051908152f35b8015150361030c57565b6084359061031e826120c6565b6064359063ffffffff8216820361030c57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c606091011261030c5760a490565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc608091011261030c5761012490565b906101a060031983011261030c57600435612169816102fb565b9160243567ffffffffffffffff811161030c578160238201121561030c5780600401356121958161084b565b916040916121a660405194856107be565b8084526020906024602086019160071b8401019286841161030c57602401905b83821061220457505050505091604435916121df6120dd565b916121e86120d0565b916121f2816120f0565b916103506121fe610310565b9261211f565b60808288031261030c5782608091865161221d81610734565b8435612228816102fb565b81528285013561223781610836565b8382015287850135612248816102fb565b888201526060808601359061225c826120c6565b8201528152019101906121c6565b3461030c576122783661214f565b90969594926122856136c3565b303b1561030c576122ef975f9760406123569561234b9463ffffffff6101a49a84519e8f9d8e9d8e7feeec802f0000000000000000000000000000000000000000000000000000000081526001600160a01b03809a1660048201526101a060248201520190612c52565b9a60448d01521660648b0152151560848a015282813561230e816102fb565b1660a48a0152826020820135612323816102fb565b1660c48a01520135612334816102fb565b1660e48701526001600160a01b0316610104860152565b610124840190612cc1565b038183305af18015610b0f5761236e57611332613718565b8061237b61238192610755565b806105a8565b5f61132a565b61031e909291926060810193604090816001600160a01b0391828151168552826020820151166020860152015116910152565b3461030c57602060031936011261030c576105a46004356123da816102fb565b6123e26129ea565b506123eb612ef8565b6123f481612f52565b6001600160a01b038091165f52600160205260405f209060026040519261241a84610769565b828154168452826001820154166020850152015416604082015260405191829182612387565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b906020610350928181520190612440565b3461030c576105a46124b85f8061249f61248f36610bf2565b612497613475565b610c2f612ef8565b60208151910182335af16124b1612b18565b9033613509565b604051918291602083526020830190612440565b3461030c5763ffffffff6124df3661214f565b9390946124f0989298979697612ef8565b6124f86136c3565b61250061440e565b6040519761250d89610785565b885260208801521660408601521515606085015260608536031261030c576125896125909261132a96604080519161254483610769565b803561254f816102fb565b8352602081013561255f816102fb565b6020840152013561256f816102fb565b604082015260808701526001600160a01b031660a0860152565b3690612d10565b60c083015261488b565b61031e909291926101806101a08201946125db8382516060809180511515845260208101511515602085015260408101511515604085015201511515910152565b60208101516080840152604081015160a0840152606081015160c0840152612611608082015160e085019064ffffffffff169052565b60a08101519061262c610100928386019063ffffffff169052565b61266060c082015192612646610120948588019015159052565b60e083015115156101408701528201511515610160860152565b01511515910152565b3461030c57602060031936011261030c576105a46126f760043561268c816102fb565b5f61012060405161269c816107a1565b6040516126a881610734565b83815283602082015283604082015283606082015281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201520152612d70565b6040519182918261259a565b3461030c57604060031936011261030c576020612763600435612725816102fb565b6001600160a01b036024359161273a836102fb565b612742612ef8565b165f52600f835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461030c575f60031936011261030c5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604051906127bc82610785565b815f815260c060609182602082015282604082015282808201528260808201528260a08201520152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91909163ffffffff8080941691160191821161282b57565b6127e6565b6128ad9161283c612ef8565b61284582612f9d565b6001600160a01b039081831690815f525f602052604093849361286a855f20546132a8565b935f526002602052845f205416918451968794859384937fa0e8f5ac000000000000000000000000000000000000000000000000000000008552600485016132f5565b03915afa918215610b0f575f915f9361292a575b50501561290257670de0b5cad2bef00081116128da5790565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b61294d935080919250903d10612955575b61294581836107be565b8101906132d6565b905f806128c1565b503d61293b565b9081602091031261030c575190565b91906020612983600192604086526040860190610490565b930152565b6040513d5f823e3d90fd5b90604051918281549182825260209260208301915f5260205f20935f905b8282106129c75750505061031e925003836107be565b85546001600160a01b0316845260019586019588955093810193909101906129b1565b604051906129f782610769565b5f6040838281528260208201520152565b90612a128261084b565b612a1f60405191826107be565b828152601f19612a2f829461084b565b01905f5b828110612a3f57505050565b602090612a4a6129ea565b82828501015201612a33565b90612a608261084b565b612a6d60405191826107be565b828152601f19612a7d829461084b565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051821015612ac85760209160051b010190565b612a87565b612ad6826103ea565b52565b90604051612ae681610769565b604060ff829454818116612af9816103ea565b84526001600160a01b038160081c16602085015260a81c161515910152565b3d15612b42573d90612b29826108c3565b91612b3760405193846107be565b82523d5f602084013e565b606090565b6040519060c0820182811067ffffffffffffffff821117610750576040525f60a08360608152826020820152826040820152606080820152606060808201520152565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0820191821161282b57565b9190820391821161282b57565b91612be19061035094928452606060208501526060840190610490565b916040818403910152610490565b60405190610160820182811067ffffffffffffffff821117610750576040525f610140838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201520152565b9081518082526020808093019301915f5b828110612c71575050505090565b9091929382608060019287516001600160a01b0380825116835284820151612c98816103ea565b838601526040828101519091169083015260609081015115159082015201950193929101612c63565b606080918035612cd0816120c6565b151584526020810135612ce2816120c6565b151560208501526040810135612cf7816120c6565b151560408501520135612d09816120c6565b1515910152565b919082608091031261030c57604051612d2881610734565b60608082948035612d38816120c6565b84526020810135612d48816120c6565b60208501526040810135612d5b816120c6565b6040850152013591612d6c836120c6565b0152565b612d9b90612d7c612ef8565b612d8581612f52565b6001600160a01b03165f525f60205260405f2090565b546103506001612daa836132a8565b92612e53612db782615373565b612e46612dc384615396565b64ffffffffff85605a1c169063ffffffff86612ddd608290565b1c1693612de86107ee565b600488901c89161515815299600588901c8916151560208c0152600688901c8916151560408c0152600788901c8916151560608c0152612e266107fb565b9a8b5260208b015260408a0152606089015264ffffffffff166080880152565b63ffffffff1660a0860152565b808216151560c085015280821c8216151560e0850152600281901c8216151561010085015260031c161515610120830152565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b34612e8657365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e15612ef4573d5ff35b3d5ffd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003612f2a57565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0316805f525f602052600160405f20541615612f725750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615612fbf5750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001600160a01b03612ffb6127af565b92165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f2093845493875261303660208801956153b9565b855261304184612a08565b9181880192835261305185612a56565b916060890192835261306286612a56565b9460809560808b0152613076878b51613595565b60c08b015261308487612a56565b60a08b019081528a5191600199600184811c1693846131ed575b50836131db575b8c5f5b8b81106130be5750505050505050505050505050565b8a8d92828c8c8c613105846130f1816130e3610e078f8f610de585610df29251612ab4565b94905f5260205260405f2090565b549451836130ff8383612ab4565b52612ab4565b5061310f816135e7565b61311a858d51612ab4565b526131386fffffffffffffffffffffffffffffffff84168587615691565b878d8d156131ce57820151151591826131b0575b5050613161575b50505050505b018d906130a8565b826131849261317b826131748851615396565b9451612ab4565b51961c85615bac565b9283613194575b8e93508c613153565b6131a7936131a191612bb7565b91615691565b5f8f828261318b565b909150516131bd816103ea565b6131c6816103ea565b14875f61314c565b5050505050505050613159565b8c5190935060031c60011615926130a5565b6131f8919450615396565b1515925f61309e565b6001600160a01b03165f525f60205260405f20549060018260021c1663ffffffff809361322c608290565b1c16928161323957509190565b90506132657f000000000000000000000000000000000000000000000000000000000000000084612813565b164211159190565b60ff60019116019060ff821161282b57565b9060058202918083046005149015171561282b57565b8181029291811591840414171561282b57565b62ffffff9060121c1664174876e8009081810291818304149015171561282b5790565b519061031e826120c6565b919082604091031261030c57602082516132ef816120c6565b92015190565b612d6c61339560409396959496606084528051613311816103ea565b60608501526020810151608085015260c061333b8683015160e060a0880152610140870190610490565b91606081015182870152608081015160e08701526001600160a01b0360a08201511661010087015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa085830301610120860152612440565b6001600160a01b039096166020830152565b81156133b1570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90670de0b6b3a76400009182810292818404149015171561282b57610350916133a7565b90670de0b5cad2bef00081116128da5764174876e80090048060181c61344d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff9060121b91161790565b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b326134d2576001600754166134aa5760017f00000000000000000000000000000000000000000000000000000000000000005d565b7f7a198886000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b80511561103557805190602001fd5b90613546575080511561351e57805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061358c575b613557575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561354f565b9064ffffffffff6135a582612a56565b92605a1c165f5b8281106135b95750505090565b601f826135c58361327f565b1c1690604d821161282b57600191600a0a6135e08287612ab4565b52016135ac565b80516135f2816103ea565b6135fb816103ea565b8061360e575050670de0b6b3a764000090565b8061361a6001926103ea565b0361369b5760206136456136398260049401516001600160a01b031690565b6001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115610b0f575f91613682575090565b610350915060203d602011610b0857610af981836107be565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6136f0576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b6001600160a01b0392918381168484160361377a57505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b6137ba936137a492165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b906001600160a01b03165f5260205260405f2090565b5490565b7f00000000000000000000000000000000000000000000000000000000000000005c156137e757565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b929161381b8451612a56565b935f5b81518110156138585780613847856138428661383c60019688612ab4565b51613295565b6133a7565b6138518289612ab4565b520161381e565b50505050565b9061386891613295565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b906138a990615499565b907f8000000000000000000000000000000000000000000000000000000000000000821461282b5761031e915f03906154ee565b906103509160801c906155f5565b91909392936138fb82828561373d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810361392b575b505050509050565b808611613949579461393f949503926142de565b805f808080613923565b85906001600160a01b03847ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b3215806139905790565b506001600754161590565b9190820180921161282b57565b90326134d2576001600160a01b036139dc92165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b805491820180921161282b5755565b90916001600160a01b03808416928315613b8157613a1e856137a4836001600160a01b03165f52600f60205260405f2090565b54808411613b4457839003613a48866137a4846001600160a01b03165f52600f60205260405f2090565b55613a6e83613a68836001600160a01b03165f52601160205260405f2090565b54612bb7565b613a7781615659565b613a92826001600160a01b03165f52601160205260405f2090565b551690813b1561030c576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f91613b2c91868180606481015b038183895af1613b31575b506040519081529081906020820190565b0390a4565b8061237b613b3e92610755565b5f613b1b565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b613bbe61440e565b613bc781613201565b50613bcf5750565b6001600160a01b03907fd971f597000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b03613c0b57565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908251918151815181851491821592613cb9575b5050613c0b57613c5783612a56565b935f5b848110613c6957505050505090565b80670de0b6b3a7640000613ca7613c8260019486612ab4565b51613ca2613c90858a612ab4565b51613c9b868a612ab4565b5192613295565b613295565b04613cb28289612ab4565b5201613c5a565b141590505f80613c48565b9081602091031261030c5751610350816120c6565b90613d3d92613d2b5f6001600160a01b03602095604051978896879586937f1c149e28000000000000000000000000000000000000000000000000000000008552604060048601526044850190610490565b90600319848303016024850152612440565b0393165af1908115610b0f575f91613d80575b5015613d5857565b7f60612925000000000000000000000000000000000000000000000000000000005f5260045ffd5b613da2915060203d602011613da8575b613d9a81836107be565b810190613cc4565b5f613d50565b503d613d90565b60208082015151925f5b848110613dc7575050505050565b600190613e166fffffffffffffffffffffffffffffffff6040613df6613df085838b0151612ab4565b516135e7565b613e048560a08b0151612ab4565b52835f528587525f2054168287615691565b01613db9565b929195969496613e3d846001600160a01b03165f52600560205260405f2090565b955f5b60208901518051821015613f1b57610de582613e5b92612ab4565b613e6b613639610de58489612ab4565b6001600160a01b038216908103613ec7575090613e95600192613e8e838b612ab4565b51906156de565b613eae8b613ea7836117d7818d612ab4565b51906155f5565b613ec0828b905f5260205260405f2090565b5501613e40565b61181b9088613edc613639610de5878c612ab4565b7fffe261a1000000000000000000000000000000000000000000000000000000005f526001600160a01b03918216600452811660245216604452606490565b50509694919250969450613f5384517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd600291161790565b808552613f70846001600160a01b03165f525f60205260405f2090565b556001600160a01b0392613fb6602085831697604051809381927f984de9e80000000000000000000000000000000000000000000000000000000083526004830161296b565b03818a5afa8015610b0f57613fdb915f916140b5575b50613fd681615659565b612b8a565b97613fe5826156f0565b613ff0898584615800565b808910614085575092859261405c7fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca8719361404d602061404360019a996001600160a01b03165f52601160205260405f2090565b5498015151612a56565b90604051948594169784612bc4565b0390a47fcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f35f80a2565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600489905260245260445ffd5b6140ce915060203d602011610b0857610af981836107be565b5f613fcc565b926141275f6001600160a01b03602095949661413e604051988997889687947f38be241d000000000000000000000000000000000000000000000000000000008652606060048701526064860190610490565b916024850152600319848303016044850152612440565b0393165af1908115610b0f575f91614181575b501561415957565b7f0f23dbc6000000000000000000000000000000000000000000000000000000005f5260045ffd5b61419a915060203d602011613da857613d9a81836107be565b5f614151565b906141a9612bef565b5060ff60018084836141bb600c61326d565b6141c49061326d565b161c168185846141d4600c61326d565b6141dd9061326d565b6141e69061326d565b161c16908286856141f7600c61326d565b6142009061326d565b6142099061326d565b6142129061326d565b161c1692808786614223600c61326d565b61422c9061326d565b6142359061326d565b61423e9061326d565b6142479061326d565b161c16948188818184600c161c1692600c6142619061326d565b161c169161426d610808565b60098a901c82161515815298600881901c8216151560208b0152600a81901c8216151560408b0152600b1c161515606089015215156080880152151560a0870152151560c0860152151560e0850152151561010084015215156101208301526001600160a01b031661014082015290565b9290916001600160a01b03928381169384156143d9578083169586156143a45784614322856137a4866137a4866001600160a01b03165f52601060205260405f2090565b551692833b1561030c576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a6191613b2c915f818060648101613b10565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164211158061446c575b61444457565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c1661443e565b90805190614487826103ea565b614490826103ea565b82546020820151604092909201517fffffffffffffffffffff0000000000000000000000000000000000000000000090911660ff939093169290921760089190911b74ffffffffffffffffffffffffffffffffffffffff00161790151560a81b75ff00000000000000000000000000000000000000000016179055565b9081602091031261030c575160ff8116810361030c5790565b8054680100000000000000008110156107505760018101808355811015612ac8576001600160a01b03915f5260205f200191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b815181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391821617825561031e92600291906040906146028360208301511660018701906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b0151169101906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b919082604091031261030c576020825192015190565b94939161031e93606092614682926001600160a01b03809216895216602088015260e0604088015260e0870190612c52565b9401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b908161014091031261030c576146c46107fb565b906146ce816132cb565b82526146dc602082016132cb565b60208301526146ed604082016132cb565b60408301526146fe606082016132cb565b606083015261470f608082016132cb565b608083015261472060a082016132cb565b60a083015261473160c082016132cb565b60c083015261474260e082016132cb565b60e08301526101006147558183016132cb565b908301526147676101208092016132cb565b9082015290565b91969593946147d061031e9663ffffffff6102209661479861485e966102a0808a52890190612c52565b9b60208801521660408601526060850190604090816001600160a01b0391828151168552826020820151166020860152015116910152565b60c083019080511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565b01906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b906148b06148a9836001600160a01b03165f525f60205260405f2090565b5460011690565b61533e578051516002811061531657600881116152ee579291906148d384612a56565b5f945f5b818110614fe15750506149a3929394506080820191614911835161490c876001600160a01b03165f52600160205260405f2090565b614582565b614926613639600a546001600160a01b031690565b6040809161493f828751016001600160a01b0390511690565b9061494d6060860151151590565b83517f77ff76e70000000000000000000000000000000000000000000000000000000081526001600160a01b03808c166004830152909316602484015215156044830152909687919082905f9082906064820190565b03925af18015610b0f575f955f91614fae575b50614acf60c0840191614aca614a99845197614a82614a7c6149de8b51151560041b60011790565b9a6060614a4c614a1b60209e8f85015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf9060051b91161790565b8c84015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9060061b91161790565b91015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f9060071b91161790565b9161594e565b90605a9164ffffffffff908116831b921b19161790565b98614ac58688019a614aaf8c5163ffffffff1690565b9060829163ffffffff908116831b921b19161790565b6159ce565b6159ee565b9360a08401906001600160a01b03958987614af185516001600160a01b031690565b1680614bf2575b5090614b168193926001600160a01b03165f525f60205260405f2090565b5582516001600160a01b03166001600160a01b0316614b468b6001600160a01b03165f52600260205260405f2090565b90614b7e91906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b8501948551614b8d908b615a12565b519451975163ffffffff16965191516001600160a01b03166001600160a01b0316614bb7916141a0565b9151925195869533991697614bcc958761476e565b037fbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad91a3565b614c3491849189515f8951938b51968795869485937f0b89f1820000000000000000000000000000000000000000000000000000000085523360048601614650565b03925af1908115610b0f575f91614f91575b5015614f7c57614c6361363961363985516001600160a01b031690565b90855180927fd77153a70000000000000000000000000000000000000000000000000000000082528160046101409586935afa928315610b0f575f93614f4d575b50508151151580614f33575b614ee05790614eae610120614d1a614e7b614e49614e17614de5614db3614d818e614d56614d4d8c8f614ed99f90614d1a614d2292614cef8551151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff9060091b91161790565b920151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff9060081b91161790565b918c0151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff90600a1b91161790565b60608a015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff90600b1b91161790565b608089015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefff90600c1b91161790565b60a088015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff90600d1b91161790565b60c087015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfff90600e1b91161790565b60e086015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff90600f1b91161790565b61010085015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff9060101b91161790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff9060111b91161790565b895f614af8565b61181b8b614ef586516001600160a01b031690565b7ffa93d814000000000000000000000000000000000000000000000000000000005f526001600160a01b039081166004521660245233604452606490565b50614f47614f42865151151590565b151590565b15614cb0565b614f6d929350803d10614f75575b614f6581836107be565b8101906146b0565b905f80614ca4565b503d614f5b565b61181b8a614ef585516001600160a01b031690565b614fa89150833d8511613da857613d9a81836107be565b5f614c46565b905081614fd19296503d8711614fda575b614fc981836107be565b81019061463a565b9490945f6149b6565b503d614fbf565b614fec818551612ab4565b5196614fff88516001600160a01b031690565b906001600160a01b0380831691821580156152e3575b6152bb571680821061529357811461525e57604090818a01998a51615040906001600160a01b031690565b6001600160a01b0316159060209b8c8201908d82519161505f836103ea565b516001600160a01b03169360600193845161507990151590565b91615082610829565b9361508d9085612acd565b6001600160a01b0390911690830152151581870152866150be8d6001600160a01b03165f52600460205260405f2090565b906150d991906001600160a01b03165f5260205260405f2090565b906150e39161447a565b80516150ee816103ea565b6150f7816103ea565b61520f5750811591615204575b5061369b5789915b51998a80927f313ce56700000000000000000000000000000000000000000000000000000000825260049c8d915afa918215610b0f575f926151d7575b505060129060ff9180838316115f14615183578a7f686d3607000000000000000000000000000000000000000000000000000000005f525ffd5b60019495969798999a50906151a79291031661519f8588612ab4565b9060ff169052565b6151cb816151c6896001600160a01b03165f52600360205260405f2090565b614526565b969594939291016148d7565b6151f69250803d106151fd575b6151ee81836107be565b81019061450d565b5f80615149565b503d6151e4565b51151590505f615104565b600191505161521d816103ea565b615226816103ea565b036152365761369b57899161510c565b7fa1e9dd9d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4f4b634e000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b7f6e8f1947000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b508189168314615015565b7f707bdf58000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f5ed4ba8f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdb771c80000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b62ffffff90602a1c1664174876e8009081810291818304149015171561282b5790565b62ffffff9060421c1664174876e8009081810291818304149015171561282b5790565b90604051918281549182825260209260208301915f5260205f20935f905b8282106153ed5750505061031e925003836107be565b85546001600160a01b0316845260019586019588955093810193909101906153d7565b908060181c61344d57602a1b9062ffffff602a1b19161790565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b906101008084101561542a5783810390811161282b578060ff105f14615494575060ff5b60181161542a578060181c61344d5762ffffff90831b921b19161790565b615476565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116154c35790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156155f1577f0000000000000000000000000000000000000000000000000000000000000000916155338184906001600160a01b03165f5260205260405f205c90565b8281019283125f821290801582169115161761282b57826155a757507f000000000000000000000000000000000000000000000000000000000000000092835c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811161282b5761031e945d615c1a565b156155b6575b61031e92615c1a565b7f000000000000000000000000000000000000000000000000000000000000000092835c6001810180911161282b5761031e945d92506155ad565b5050565b906fffffffffffffffffffffffffffffffff80831190811561564f575b506156275760801b90810180911161282b5790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f615612565b620f424081106156665750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b91906080670de0b6b3a76400006156d5612ad694806156b48660608a0151612ab4565b52613ca26156c68660c08a0151612ab4565b51613c9b8760a08b0151612ab4565b04930151612ab4565b6156ea61031e92615499565b906154ee565b61570b816001600160a01b03165f52601160205260405f2090565b908154620f42409081810180911161282b576001600160a01b039355615742826001600160a01b03165f52600f60205260405f2090565b5f805260205260405f20908154019055165f80827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f6040518061578c8190620f4240602083019252565b0390a4803b1561030c575f60405180927f23de66510000000000000000000000000000000000000000000000000000000082528183816157e26004820190620f4240604060608401935f81525f60208201520152565b03925af18015610b0f576157f35750565b8061237b61031e92610755565b916001600160a01b038083169384156159195761583883615832836001600160a01b03165f52601160205260405f2090565b5461399b565b615857856137a4846001600160a01b03165f52600f60205260405f2090565b84815401905561586681615659565b615881826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806158ba87829190602083019252565b0390a4823b1561030c576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b0390931660248201526044810191909152918290818381606481016157e2565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b5f9190825b81518410156159c2576159668483612ab4565b5160ff916159738661327f565b916101008084101561542a5783810390811161282b57808510156159bd5750835b600590811161542a57816007911c1661344d57600193601f9116831b921b191617930192615953565b615994565b64ffffffffff16925050565b670de0b5cad2bef00082116128da5764174876e800610350920490615410565b90670de0b5cad2bef00081116128da576103509164174876e8006042920490615452565b906001600160a01b038216916040517fce20ece70000000000000000000000000000000000000000000000000000000081526020908181600481885afa908115610b0f575f91615b8f575b508310615b67576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481885afa918215610b0f575f92615b4a575b50508211615b22578181615b0c615af57f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a195615aef615b1d966001600160a01b03165f525f60205260405f2090565b54613402565b916001600160a01b03165f525f60205260405f2090565b556040519081529081906020820190565b0390a2565b7f7f47834b000000000000000000000000000000000000000000000000000000005f5260045ffd5b615b609250803d10610b0857610af981836107be565b5f80615aa0565b7fbfb20688000000000000000000000000000000000000000000000000000000005f5260045ffd5b615ba69150823d8411610b0857610af981836107be565b5f615a5d565b9093925f94615bbf846080850151612ab4565b51818111615bcf575b5050505050565b615c0f959650615c099392615c0292615be8920361385e565b9360a0615bf98260c0860151612ab4565b51930151612ab4565b5190613295565b906133de565b905f80808080615bc8565b906001600160a01b03165f5260205260405f205d56fea26469706673582212204e38198ecf1b26f9c0f7d2efa0b7525460ef8771c838c3a90520bba7b26bcab764736f6c634300081a0033","opcodes":"PUSH2 0x200 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE CALLVALUE PUSH2 0x36E JUMPI DUP2 DUP2 PUSH2 0x613F DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x21 DUP3 DUP6 PUSH2 0x3B2 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x36E JUMPI PUSH2 0x34 DUP2 PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP2 SWAP1 DUP4 DUP4 AND SWAP1 DUP2 DUP5 SUB PUSH2 0x36E JUMPI PUSH2 0x7A DUP7 MLOAD PUSH2 0x5F DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0xA DUP2 MSTORE PUSH10 0x1A5CD55B9B1BD8DAD959 PUSH1 0xB2 SHL DUP4 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH2 0xAD DUP7 MLOAD PUSH2 0x8B DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x1B9BDB96995C9BD1195B1D1850DBDD5B9D PUSH1 0x7A SHL DUP4 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH2 0xDA DUP7 MLOAD PUSH2 0xBE DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0xB DUP2 MSTORE PUSH11 0x746F6B656E44656C746173 PUSH1 0xA8 SHL DUP4 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST SWAP6 PUSH2 0x100 SWAP7 DUP8 MSTORE PUSH2 0x112 DUP2 MLOAD PUSH2 0xEF DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x185919131A5C5D5A591A5D1E50D85B1B1959 PUSH1 0x72 SHL DUP5 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST SWAP6 PUSH2 0x120 SWAP7 DUP8 MSTORE PUSH2 0x141 DUP3 MLOAD PUSH2 0x127 DUP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x9 DUP2 MSTORE PUSH9 0x1CD95CDCDA5BDB9259 PUSH1 0xBA SHL DUP6 DUP3 ADD MSTORE PUSH2 0x405 JUMP JUMPDEST PUSH2 0x140 SWAP1 DUP2 MSTORE DUP3 MLOAD PUSH4 0xFBFA77CF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 DUP5 DUP3 PUSH1 0x4 DUP2 DUP10 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x379 JUMPI PUSH0 SWAP3 PUSH2 0x33E JUMPI JUMPDEST POP DUP1 DUP8 AND SWAP2 AND SUB PUSH2 0x32F JUMPI DUP2 MLOAD PUSH4 0x4546891D PUSH1 0xE1 SHL DUP2 MSTORE SWAP2 DUP4 DUP4 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x325 JUMPI PUSH0 SWAP4 PUSH2 0x306 JUMPI JUMPDEST POP PUSH2 0x160 SWAP3 DUP4 MSTORE DUP1 MLOAD PUSH4 0x1060FDBD PUSH1 0xE1 SHL DUP2 MSTORE SWAP5 DUP5 DUP7 PUSH1 0x4 DUP2 DUP5 GAS STATICCALL SWAP6 DUP7 ISZERO PUSH2 0x2D8 JUMPI PUSH0 SWAP7 PUSH2 0x2E2 JUMPI JUMPDEST POP DUP5 PUSH1 0x4 SWAP2 PUSH2 0x1A0 SWAP8 DUP9 MSTORE DUP4 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH4 0xCD51C12F PUSH1 0xE0 SHL DUP3 MSTORE GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x2D8 JUMPI PUSH0 SWAP6 PUSH2 0x2A9 JUMPI JUMPDEST POP POP PUSH2 0x180 SWAP4 DUP5 MSTORE PUSH2 0x1C0 SWAP6 DUP7 MSTORE PUSH2 0x1E0 SWAP7 DUP8 MSTORE MLOAD SWAP7 PUSH2 0x5C66 SWAP9 DUP10 PUSH2 0x4D9 DUP11 CODECOPY PUSH1 0x80 MLOAD DUP10 POP POP PUSH1 0xA0 MLOAD DUP10 POP POP PUSH1 0xC0 MLOAD DUP10 DUP2 DUP2 PUSH2 0x136F ADD MSTORE DUP2 DUP2 PUSH2 0x3488 ADD MSTORE PUSH2 0x37C0 ADD MSTORE PUSH1 0xE0 MLOAD DUP10 DUP2 DUP2 PUSH2 0x2011 ADD MSTORE DUP2 DUP2 PUSH2 0x5551 ADD MSTORE PUSH2 0x55B8 ADD MSTORE MLOAD DUP9 DUP2 DUP2 PUSH2 0x14F1 ADD MSTORE PUSH2 0x54F7 ADD MSTORE MLOAD DUP8 DUP2 DUP2 PUSH2 0x16D7 ADD MSTORE PUSH2 0x1A61 ADD MSTORE MLOAD DUP7 DUP2 DUP2 PUSH2 0x16B5 ADD MSTORE PUSH2 0x1A3F ADD MSTORE MLOAD DUP6 POP POP MLOAD DUP5 PUSH2 0x4415 ADD MSTORE MLOAD DUP4 DUP2 DUP2 PUSH2 0x61D ADD MSTORE PUSH2 0x3240 ADD MSTORE MLOAD DUP3 DUP2 DUP2 PUSH2 0x278B ADD MSTORE PUSH2 0x2F02 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x69D ADD MSTORE PUSH2 0x2EC5 ADD MSTORE RETURN JUMPDEST PUSH2 0x2C9 SWAP3 SWAP6 POP DUP1 RETURNDATASIZE LT PUSH2 0x2D1 JUMPI JUMPDEST PUSH2 0x2C1 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3E9 JUMP JUMPDEST SWAP3 PUSH0 DUP1 PUSH2 0x1EE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2B7 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 SWAP2 SWAP7 POP PUSH2 0x2FE DUP7 SWAP2 DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x2D1 JUMPI PUSH2 0x2C1 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST SWAP7 SWAP2 POP PUSH2 0x1C3 JUMP JUMPDEST PUSH2 0x31E SWAP2 SWAP4 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x2D1 JUMPI PUSH2 0x2C1 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x199 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH4 0x4166145B PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP5 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x372 JUMPI JUMPDEST PUSH2 0x356 DUP2 DUP4 PUSH2 0x3B2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x36E JUMPI PUSH2 0x367 SWAP1 PUSH2 0x3D5 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x16B JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x34C JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x39E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x39E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x36E JUMPI JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x36E JUMPI MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x36E JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x412 DUP3 PUSH2 0x383 JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH2 0x493 PUSH1 0x3A PUSH1 0x20 DUP5 ADD PUSH12 0x5661756C7453746F72616765 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP3 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE MLOAD DUP1 SWAP2 PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x3B2 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x4C4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x4B9 DUP3 PUSH2 0x383 JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x2EAE JUMPI PUSH2 0x2E86 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDFA13 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x13D21CDF EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x13EF8A5D EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x15E32046 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x1BA0AE45 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x4AFBAF5A EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0x4D472BDD EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x4F037EE7 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x532CEC7C EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x535CFD8A EQ PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x590E8145 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x67E0E076 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x6844846B EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x6C9BC732 EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x70600089 EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x757D64B3 EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x7E361BDE EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x809846D1 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x8380EDB7 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x85E0B999 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x85F2DBD4 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x96787092 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x9E825FF5 EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0xA07D6040 EQ PUSH2 0x27E JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xACE9B89B EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0xB45090F9 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xB4AEF0AB EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0xBA8A2BE0 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xBE7D628A EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0xC673BDAF EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xC8088247 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xCA4F2803 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xCE8630D4 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xDB817187 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xE1F21C67 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xE4DC2AA4 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xE68010C6 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xE9DDEB26 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xEDFA3568 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0xEEEC802F EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xF29486A1 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xF7888AEC EQ PUSH2 0x21A JUMPI PUSH4 0xFBFA77CF SUB PUSH2 0xE JUMPI PUSH2 0x276C JUMP JUMPDEST PUSH2 0x2703 JUMP JUMPDEST PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x24CC JUMP JUMPDEST PUSH2 0x2476 JUMP JUMPDEST PUSH2 0x23BA JUMP JUMPDEST PUSH2 0x226A JUMP JUMPDEST PUSH2 0x2082 JUMP JUMPDEST PUSH2 0x2039 JUMP JUMPDEST PUSH2 0x1FF5 JUMP JUMPDEST PUSH2 0x1FB7 JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST PUSH2 0x1E11 JUMP JUMPDEST PUSH2 0x1D69 JUMP JUMPDEST PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x1CCD JUMP JUMPDEST PUSH2 0x1B18 JUMP JUMPDEST PUSH2 0x1AEE JUMP JUMPDEST PUSH2 0x1AA2 JUMP JUMPDEST PUSH2 0x1A13 JUMP JUMPDEST PUSH2 0x19E2 JUMP JUMPDEST PUSH2 0x1527 JUMP JUMPDEST PUSH2 0x14C5 JUMP JUMPDEST PUSH2 0x1481 JUMP JUMPDEST PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x1399 JUMP JUMPDEST PUSH2 0x1353 JUMP JUMPDEST PUSH2 0x127A JUMP JUMPDEST PUSH2 0x1082 JUMP JUMPDEST PUSH2 0xF2C JUMP JUMPDEST PUSH2 0xEDF JUMP JUMPDEST PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH2 0xCFE JUMP JUMPDEST PUSH2 0xC21 JUMP JUMPDEST PUSH2 0xB78 JUMP JUMPDEST PUSH2 0xB14 JUMP JUMPDEST PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST PUSH2 0x6C1 JUMP JUMPDEST PUSH2 0x67E JUMP JUMPDEST PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x2FB JUMP JUMPDEST JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x343 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x350 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x3A2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x36E CALLDATASIZE PUSH2 0x32B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x378 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x381 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x3CD JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x3BF JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3F4 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x60 SWAP3 DUP1 MLOAD PUSH2 0x432 DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x473 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH2 0x485 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH2 0x421 JUMP JUMPDEST SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4AF JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4A1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH2 0x505 PUSH1 0x4 CALLDATALOAD PUSH2 0x4E6 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x27AF JUMP JUMPDEST POP PUSH2 0x4F7 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x500 DUP2 PUSH2 0x2F9D JUMP JUMPDEST PUSH2 0x2FEA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE DUP1 MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x530 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0xE0 PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0xC0 PUSH2 0x592 PUSH2 0x57F PUSH2 0x56B PUSH2 0x557 PUSH1 0x40 DUP8 ADD MLOAD SWAP6 PUSH1 0x1F NOT SWAP7 DUP8 DUP12 DUP4 SUB ADD PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x454 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD DUP7 DUP11 DUP4 SUB ADD PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP6 DUP10 DUP4 SUB ADD PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD DUP5 DUP9 DUP4 SUB ADD DUP5 DUP10 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x30C JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5CA PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x80 PUSH1 0x4 CALLDATALOAD PUSH2 0x5FB DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x603 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x60C DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x615 DUP2 PUSH2 0x3201 JUMP JUMPDEST PUSH2 0x642 SWAP3 SWAP2 SWAP3 PUSH32 0x0 DUP3 PUSH2 0x2813 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP2 PUSH1 0x40 MLOAD SWAP4 ISZERO ISZERO DUP5 MSTORE PUSH4 0xFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0x6E0 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x6E8 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x769 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x30C JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x836 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x750 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x30C JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x87D DUP2 PUSH2 0x84B JUMP JUMPDEST SWAP4 PUSH2 0x88B PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x7BE JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x30C JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x8B4 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x8A6 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x750 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x8EB DUP3 PUSH2 0x8C3 JUMP JUMPDEST SWAP2 PUSH2 0x8F9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x7BE JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x30C JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP2 PUSH1 0x20 PUSH2 0x350 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x8DF JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x3 NOT PUSH1 0x40 DUP2 CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x94E DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP4 GT PUSH2 0x30C JUMPI PUSH1 0xE0 SWAP1 DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x30C JUMPI PUSH2 0x977 PUSH2 0x7E1 JUMP JUMPDEST SWAP1 PUSH2 0x984 DUP4 PUSH1 0x4 ADD PUSH2 0x840 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x24 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x44 DUP4 ADD CALLDATALOAD DUP5 DUP2 GT PUSH2 0x30C JUMPI PUSH2 0x9AC SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP7 ADD ADD PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x64 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x84 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x9D1 PUSH1 0xA4 DUP5 ADD PUSH2 0x320 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC4 DUP4 ADD CALLDATALOAD SWAP4 DUP5 GT PUSH2 0x30C JUMPI PUSH2 0x9F8 PUSH2 0xA02 SWAP4 PUSH1 0x4 PUSH2 0x5A4 SWAP7 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x915 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x2830 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xA2F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xA37 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xA40 DUP2 PUSH2 0x2F9D JUMP JUMPDEST PUSH2 0xA8D PUSH1 0x20 PUSH1 0x80 PUSH2 0xA50 DUP5 PUSH2 0x2FEA JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x40 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x24 DUP4 ADD MSTORE SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x5A4 SWAP3 PUSH2 0xA02 SWAP3 PUSH0 SWAP3 PUSH2 0xADA JUMPI JUMPDEST POP PUSH2 0xAD3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x33DE JUMP JUMPDEST PUSH2 0xAD3 SWAP2 SWAP3 POP PUSH2 0xB01 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI JUMPDEST PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x295C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAB7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x2988 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0xB39 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xB41 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xB4A DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x350 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH1 0x80 PUSH2 0xBAE PUSH1 0x4 CALLDATALOAD PUSH2 0xB9D DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xBA5 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x500 DUP2 PUSH2 0x2F52 JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x30C JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x30C JUMPI PUSH2 0xC1D SWAP2 PUSH1 0x4 ADD PUSH2 0xBC4 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xC36 PUSH2 0xC2F CALLDATASIZE PUSH2 0xBF2 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x8DF JUMP JUMPDEST DUP2 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xC63 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xC55 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0xC98 SWAP1 SWAP6 SWAP5 SWAP3 SWAP6 PUSH1 0x80 DUP6 MSTORE PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0xC44 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP5 DUP2 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x20 DUP1 DUP9 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP8 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xCE1 JUMPI POP POP POP POP DUP5 PUSH2 0xCD3 SWAP2 DUP5 PUSH2 0x350 SWAP7 SWAP8 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP8 DUP3 PUSH2 0xCF3 PUSH1 0x1 SWAP3 DUP12 MLOAD PUSH2 0x421 JUMP JUMPDEST SWAP10 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0xCB2 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xD1B DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xD23 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xD2C DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0xD64 PUSH2 0xD5F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2993 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP3 PUSH2 0xD71 DUP5 PUSH2 0x2A08 JUMP JUMPDEST SWAP4 PUSH2 0xD7B DUP2 PUSH2 0x2A56 JUMP JUMPDEST SWAP2 PUSH2 0xD85 DUP3 PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xDA0 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x5A4 DUP9 DUP9 DUP13 DUP13 DUP6 PUSH2 0xC80 JUMP JUMPDEST DUP1 PUSH2 0xDB5 PUSH1 0x1 SWAP3 DUP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xE0C PUSH2 0xE07 DUP11 PUSH2 0xDF2 PUSH2 0xDE5 DUP7 PUSH2 0xDDF DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2AD9 JUMP JUMPDEST PUSH2 0xE16 DUP4 DUP13 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0xE21 DUP3 DUP12 PUSH2 0x2AB4 JUMP JUMPDEST POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE3F DUP4 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH1 0x80 SHR PUSH2 0xE4D DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0xD88 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0xE73 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xE7B PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO ISZERO PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0xED4 PUSH1 0x4 CALLDATALOAD PUSH2 0xEBE DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xEC6 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xECF DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x3201 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0xF04 DUP2 PUSH2 0x2FB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0xF1C PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x3402 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 DUP1 PUSH2 0xF3C CALLDATASIZE PUSH2 0xBF2 JUMP JUMPDEST SWAP1 PUSH2 0xF45 PUSH2 0x3475 JUMP JUMPDEST PUSH2 0xF4D PUSH2 0x2EF8 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP4 DUP2 MSTORE SUB SWAP1 DUP3 CALLER GAS CALL PUSH2 0xF69 PUSH2 0x2B18 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xFB6 JUMPI SWAP1 PUSH2 0xF7F DUP2 PUSH2 0xFB2 SWAP4 CALLER PUSH2 0x3509 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2465 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x4 DUP2 MLOAD LT PUSH2 0x1035 JUMPI PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MLOAD AND SUB PUSH2 0x34FA JUMPI PUSH32 0x28F9554100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH2 0x1074 PUSH2 0x350 SWAP4 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x109F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x10A7 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x10B0 DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x117A JUMPI POP POP POP PUSH2 0x1101 SWAP3 POP SUB DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH2 0x110D DUP3 MLOAD DUP1 SWAP3 PUSH2 0x3595 JUMP JUMPDEST SWAP2 PUSH2 0x1117 DUP3 PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x1130 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x5A4 DUP9 DUP9 DUP4 PUSH2 0x105D JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x1169 PUSH2 0x1164 PUSH2 0xE07 PUSH2 0x1157 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xDF2 PUSH2 0xDE5 DUP7 DUP11 PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x35E7 JUMP JUMPDEST PUSH2 0x1173 DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x111A JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP3 AND AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP PUSH1 0x20 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x10EB JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x11BA DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH2 0x11C7 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x30C JUMPI DUP2 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x11F5 DUP2 PUSH2 0x84B JUMP JUMPDEST SWAP2 PUSH2 0x1203 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x7BE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x24 PUSH1 0x20 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x30C JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1261 JUMPI POP POP POP POP SWAP3 PUSH1 0x64 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x30C JUMPI DUP3 PUSH2 0x1246 SWAP2 PUSH1 0x4 ADD PUSH2 0x863 JUMP JUMPDEST SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0xA4 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x30C JUMPI PUSH2 0x350 SWAP2 PUSH1 0x4 ADD PUSH2 0x915 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x126F DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1223 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x1319 PUSH1 0x20 PUSH2 0x128D CALLDATASIZE PUSH2 0x11A2 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x129A SWAP8 SWAP4 SWAP8 PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x1305 PUSH2 0x12F2 PUSH1 0x40 MLOAD SWAP10 DUP11 SWAP9 DUP10 SWAP9 PUSH32 0xBA8A2BE000000000000000000000000000000000000000000000000000000000 DUP11 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x4 DUP12 ADD MSTORE AND PUSH1 0x24 DUP10 ADD MSTORE PUSH1 0xC0 PUSH1 0x44 DUP10 ADD MSTORE PUSH1 0xC4 DUP9 ADD SWAP1 PUSH2 0xC44 JUMP JUMPDEST PUSH1 0x3 NOT SWAP3 DUP4 DUP9 DUP4 SUB ADD PUSH1 0x64 DUP10 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP3 PUSH1 0x84 DUP7 ADD MSTORE DUP5 DUP4 SUB ADD PUSH1 0xA4 DUP6 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x1334 JUMPI JUMPDEST PUSH2 0x1332 PUSH2 0x3718 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134C SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST POP PUSH0 PUSH2 0x132A JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x136B PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x13F9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x13C5 CALLDATASIZE PUSH2 0x32B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x13CF PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x13D8 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x141B PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x1479 PUSH1 0x4 CALLDATALOAD PUSH2 0x1453 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x145F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x146C DUP4 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1474 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x373D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x14A6 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x14AE PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x1479 PUSH1 0x4 CALLDATALOAD PUSH2 0x14E7 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x14EF PUSH2 0x2EF8 JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1544 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1550 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x30C JUMPI PUSH2 0x1574 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x863 JUMP JUMPDEST PUSH2 0x157C PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1584 PUSH2 0x37BE JUMP JUMPDEST PUSH2 0x158C PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x1595 DUP5 PUSH2 0x2F9D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH0 PUSH1 0x20 MSTORE PUSH2 0x15BE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x3 SHR AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x19B6 JUMPI PUSH2 0x15DE DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH2 0x15E7 PUSH2 0x2B47 JUMP JUMPDEST SWAP3 PUSH2 0x1606 PUSH2 0xD5F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE MLOAD SWAP7 PUSH2 0x161B PUSH1 0x40 DUP7 ADD SWAP9 DUP1 DUP11 MSTORE PUSH2 0x2A56 JUMP JUMPDEST SWAP8 PUSH1 0x80 DUP7 ADD SWAP9 DUP10 MSTORE PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP1 PUSH2 0x165C PUSH2 0x1646 PUSH1 0x1 SWAP4 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1667 DUP3 DUP14 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x1625 JUMP JUMPDEST POP DUP10 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x169C DUP2 DUP10 MLOAD PUSH2 0x1695 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x380F JUMP JUMPDEST SWAP10 PUSH2 0x16A7 DUP4 MLOAD PUSH2 0x2A56 JUMP JUMPDEST SWAP6 PUSH1 0x60 DUP10 ADD SWAP7 DUP8 MSTORE PUSH2 0x170E DUP12 PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST ISZERO ISZERO PUSH1 0xA0 DUP11 ADD DUP2 DUP2 MSTORE SWAP6 SWAP1 PUSH2 0x1989 JUMPI JUMPDEST PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x186E JUMPI PUSH2 0x174A DUP2 DUP16 DUP11 DUP15 DUP4 DUP15 PUSH2 0x173C DUP15 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x181E JUMPI JUMPDEST POP POP POP POP PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x1755 DUP3 DUP13 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD GT PUSH2 0x17B5 JUMPI DUP1 DUP13 DUP16 DUP3 PUSH2 0x17A8 DUP16 DUP3 PUSH2 0x17AE SWAP5 PUSH2 0x178F PUSH2 0x177E PUSH2 0xDE5 PUSH1 0x1 SWAP12 PUSH2 0x1794 SWAP7 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x1788 DUP5 DUP5 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x389F JUMP JUMPDEST PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP4 PUSH2 0x17A2 DUP4 DUP7 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x2BB7 JUMP JUMPDEST SWAP3 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x1720 JUMP JUMPDEST DUP14 DUP11 PUSH2 0x17DE DUP4 PUSH2 0x17D7 DUP16 SWAP6 PUSH2 0x17D1 PUSH2 0xDE5 DUP3 PUSH2 0x181B SWAP10 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST SWAP6 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH0 REVERT JUMPDEST PUSH2 0x183D PUSH2 0x184F SWAP4 PUSH2 0x185A SWAP6 PUSH2 0x1833 DUP6 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP2 ADD MLOAD SWAP1 PUSH2 0x385E JUMP JUMPDEST PUSH2 0x1848 DUP4 DUP4 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x17A2 DUP5 DUP5 PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x1864 DUP4 DUP4 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE DUP11 DUP15 DUP4 DUP15 PUSH2 0x1741 JUMP JUMPDEST POP DUP11 SWAP6 POP SWAP2 DUP8 SWAP2 DUP14 SWAP4 DUP14 PUSH2 0x1893 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x18E4 JUMPI DUP1 PUSH2 0x18CB DUP13 PUSH2 0x18C4 DUP4 PUSH2 0x18BC PUSH1 0x1 SWAP7 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x38DD JUMP JUMPDEST PUSH2 0x18DD DUP3 DUP13 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x1896 JUMP JUMPDEST PUSH2 0x5A4 DUP9 PUSH0 DUP10 DUP10 PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 DUP11 DUP11 PUSH2 0x1962 PUSH2 0x1950 DUP13 PUSH2 0x1939 DUP14 PUSH2 0x1925 DUP2 CALLER DUP9 DUP7 PUSH2 0x38EB JUMP JUMPDEST PUSH2 0x192D PUSH2 0x3986 JUMP JUMPDEST PUSH2 0x1979 JUMPI JUMPDEST DUP6 DUP4 PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 MLOAD DUP9 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x2BC4 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x196D PUSH2 0x3718 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0x1984 DUP2 DUP8 DUP6 PUSH2 0x39A8 JUMP JUMPDEST PUSH2 0x1932 JUMP JUMPDEST PUSH2 0x19AC PUSH2 0x19A6 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x32A8 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MSTORE PUSH2 0x171E JUMP JUMPDEST DUP4 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x19FA PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x1A98 PUSH1 0x4 CALLDATALOAD PUSH2 0x1A35 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1A3D PUSH2 0x2EF8 JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1AC7 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1ACF PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1AD8 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x1479 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x32A8 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x1B06 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x1B26 CALLDATASIZE PUSH2 0x11A2 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x1B30 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1B38 PUSH2 0x37BE JUMP JUMPDEST PUSH2 0x1B41 DUP7 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x1B49 PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x1B52 DUP7 PUSH2 0x3BB6 JUMP JUMPDEST PUSH2 0x1B5B DUP7 PUSH2 0x2FEA JUMP JUMPDEST SWAP3 PUSH2 0x1B6A DUP5 MLOAD PUSH1 0x1 SWAP1 DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1C98 JUMPI SWAP2 DUP4 SWAP2 PUSH2 0x5A4 SWAP8 SWAP6 SWAP4 PUSH2 0x1B8C PUSH1 0x20 PUSH2 0x1BDB SWAP10 SWAP8 ADD MLOAD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x3C04 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD SWAP6 DUP7 MLOAD PUSH2 0x1BA4 PUSH1 0xA0 DUP8 ADD SWAP2 DUP3 MLOAD SWAP1 DUP7 PUSH2 0x3C33 JUMP JUMPDEST SWAP8 DUP10 PUSH2 0x1BB5 DUP9 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x8 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1C27 JUMPI JUMPDEST DUP10 SWAP5 SWAP3 POP DUP8 SWAP2 POP SWAP3 PUSH2 0x1BCD SWAP7 SWAP6 SWAP4 PUSH2 0x3E1C JUMP JUMPDEST SWAP5 DUP6 SWAP2 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xA SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1BEA JUMPI JUMPDEST DUP6 SWAP1 PUSH2 0xA02 PUSH2 0x3718 JUMP JUMPDEST PUSH2 0x1C18 PUSH2 0x1C0B PUSH2 0x1C1E SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x40D4 JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP4 PUSH2 0x1BE0 JUMP JUMPDEST SWAP2 PUSH2 0x1C8B SWAP2 PUSH2 0x1C5D DUP10 SWAP12 DUP12 PUSH2 0x1C57 PUSH2 0x1C0B PUSH2 0x1BCD SWAP13 SWAP12 SWAP10 SWAP11 SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x3CD9 JUMP JUMPDEST PUSH2 0x1C81 PUSH2 0x1C7B DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP11 PUSH2 0x3DAF JUMP JUMPDEST MLOAD SWAP1 MLOAD SWAP1 DUP5 PUSH2 0x3C33 JUMP JUMPDEST SWAP8 DUP2 SWAP4 SWAP3 SWAP5 SWAP6 POP DUP10 PUSH2 0x1BBA JUMP JUMPDEST PUSH32 0x218E374700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1CF2 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1CFA PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1D03 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1D46 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1D4E PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x30C JUMPI PUSH2 0x1D9A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x1DA2 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1DAB CALLER PUSH2 0x2F52 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 MSTORE DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATACOPY PUSH0 PUSH1 0x40 DUP3 DUP5 ADD ADD MSTORE PUSH32 0x4BC4412E210115456903C65B5277D299A505E79F2EB852B92B1CA52D85856428 PUSH1 0x4 CALLDATALOAD SWAP3 PUSH1 0x40 DUP2 PUSH1 0x1F NOT PUSH1 0x1F CALLER SWAP7 ADD AND DUP2 ADD SUB ADD SWAP1 LOG3 STOP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x350 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xC44 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1E2E DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1E36 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1E3F DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP5 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1E92 JUMPI PUSH2 0x5A4 DUP6 PUSH2 0x1E86 DUP2 DUP10 SUB DUP3 PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E00 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP5 PUSH1 0x1 PUSH2 0x1EB4 DUP2 SWAP3 DUP5 DUP10 SLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP3 AND DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP7 ADD SWAP4 SWAP3 ADD SWAP1 PUSH2 0x1E6F JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x160 PUSH2 0x1F24 PUSH1 0x4 CALLDATALOAD PUSH2 0x1EE2 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1EEA PUSH2 0x2BEF JUMP JUMPDEST POP PUSH2 0x1EF3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1EFC DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x41A0 JUMP JUMPDEST PUSH2 0x1FB5 PUSH1 0x40 MLOAD DUP1 SWAP3 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x200D PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x2077 PUSH1 0x4 CALLDATALOAD PUSH2 0x2059 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x2065 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x206D PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 CALLER PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x20A7 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x20AF PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x30C JUMPI PUSH1 0xA4 SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDC PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x30C JUMPI PUSH2 0x124 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x2169 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x30C JUMPI DUP2 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x2195 DUP2 PUSH2 0x84B JUMP JUMPDEST SWAP2 PUSH1 0x40 SWAP2 PUSH2 0x21A6 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x7BE JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x24 PUSH1 0x20 DUP7 ADD SWAP2 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 DUP7 DUP5 GT PUSH2 0x30C JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x2204 JUMPI POP POP POP POP POP SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x21DF PUSH2 0x20DD JUMP JUMPDEST SWAP2 PUSH2 0x21E8 PUSH2 0x20D0 JUMP JUMPDEST SWAP2 PUSH2 0x21F2 DUP2 PUSH2 0x20F0 JUMP JUMPDEST SWAP2 PUSH2 0x350 PUSH2 0x21FE PUSH2 0x310 JUMP JUMPDEST SWAP3 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x80 DUP3 DUP9 SUB SLT PUSH2 0x30C JUMPI DUP3 PUSH1 0x80 SWAP2 DUP7 MLOAD PUSH2 0x221D DUP2 PUSH2 0x734 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2228 DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP6 ADD CALLDATALOAD PUSH2 0x2237 DUP2 PUSH2 0x836 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP8 DUP6 ADD CALLDATALOAD PUSH2 0x2248 DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP9 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD CALLDATALOAD SWAP1 PUSH2 0x225C DUP3 PUSH2 0x20C6 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x21C6 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x2278 CALLDATASIZE PUSH2 0x214F JUMP JUMPDEST SWAP1 SWAP7 SWAP6 SWAP5 SWAP3 PUSH2 0x2285 PUSH2 0x36C3 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH2 0x22EF SWAP8 PUSH0 SWAP8 PUSH1 0x40 PUSH2 0x2356 SWAP6 PUSH2 0x234B SWAP5 PUSH4 0xFFFFFFFF PUSH2 0x1A4 SWAP11 DUP5 MLOAD SWAP15 DUP16 SWAP14 DUP15 SWAP14 DUP15 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP11 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x2C52 JUMP JUMPDEST SWAP11 PUSH1 0x44 DUP14 ADD MSTORE AND PUSH1 0x64 DUP12 ADD MSTORE ISZERO ISZERO PUSH1 0x84 DUP11 ADD MSTORE DUP3 DUP2 CALLDATALOAD PUSH2 0x230E DUP2 PUSH2 0x2FB JUMP JUMPDEST AND PUSH1 0xA4 DUP11 ADD MSTORE DUP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x2323 DUP2 PUSH2 0x2FB JUMP JUMPDEST AND PUSH1 0xC4 DUP11 ADD MSTORE ADD CALLDATALOAD PUSH2 0x2334 DUP2 PUSH2 0x2FB JUMP JUMPDEST AND PUSH1 0xE4 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x104 DUP7 ADD MSTORE JUMP JUMPDEST PUSH2 0x124 DUP5 ADD SWAP1 PUSH2 0x2CC1 JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x236E JUMPI PUSH2 0x1332 PUSH2 0x3718 JUMP JUMPDEST DUP1 PUSH2 0x237B PUSH2 0x2381 SWAP3 PUSH2 0x755 JUMP JUMPDEST DUP1 PUSH2 0x5A8 JUMP JUMPDEST PUSH0 PUSH2 0x132A JUMP JUMPDEST PUSH2 0x31E SWAP1 SWAP3 SWAP2 SWAP3 PUSH1 0x60 DUP2 ADD SWAP4 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH1 0x4 CALLDATALOAD PUSH2 0x23DA DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x23E2 PUSH2 0x29EA JUMP JUMPDEST POP PUSH2 0x23EB PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x23F4 DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x241A DUP5 PUSH2 0x769 JUMP JUMPDEST DUP3 DUP2 SLOAD AND DUP5 MSTORE DUP3 PUSH1 0x1 DUP3 ADD SLOAD AND PUSH1 0x20 DUP6 ADD MSTORE ADD SLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2387 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x350 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x2440 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH2 0x24B8 PUSH0 DUP1 PUSH2 0x249F PUSH2 0x248F CALLDATASIZE PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0x2497 PUSH2 0x3475 JUMP JUMPDEST PUSH2 0xC2F PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 CALLER GAS CALL PUSH2 0x24B1 PUSH2 0x2B18 JUMP JUMPDEST SWAP1 CALLER PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2440 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH4 0xFFFFFFFF PUSH2 0x24DF CALLDATASIZE PUSH2 0x214F JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH2 0x24F0 SWAP9 SWAP3 SWAP9 SWAP8 SWAP7 SWAP8 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x24F8 PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x2500 PUSH2 0x440E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 PUSH2 0x250D DUP10 PUSH2 0x785 JUMP JUMPDEST DUP9 MSTORE PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x60 DUP6 CALLDATASIZE SUB SLT PUSH2 0x30C JUMPI PUSH2 0x2589 PUSH2 0x2590 SWAP3 PUSH2 0x132A SWAP7 PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0x2544 DUP4 PUSH2 0x769 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x254F DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x255F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE ADD CALLDATALOAD PUSH2 0x256F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 PUSH2 0x2D10 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x488B JUMP JUMPDEST PUSH2 0x31E SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x180 PUSH2 0x1A0 DUP3 ADD SWAP5 PUSH2 0x25DB DUP4 DUP3 MLOAD PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2611 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xE0 DUP6 ADD SWAP1 PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD SWAP1 PUSH2 0x262C PUSH2 0x100 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2660 PUSH1 0xC0 DUP3 ADD MLOAD SWAP3 PUSH2 0x2646 PUSH2 0x120 SWAP5 DUP6 DUP9 ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP8 ADD MSTORE DUP3 ADD MLOAD ISZERO ISZERO PUSH2 0x160 DUP7 ADD MSTORE JUMP JUMPDEST ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH2 0x26F7 PUSH1 0x4 CALLDATALOAD PUSH2 0x268C DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x269C DUP2 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26A8 DUP2 PUSH2 0x734 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x259A JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x2763 PUSH1 0x4 CALLDATALOAD PUSH2 0x2725 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x273A DUP4 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x2742 PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xF DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x27BC DUP3 PUSH2 0x785 JUMP JUMPDEST DUP2 PUSH0 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x60 SWAP2 DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST PUSH2 0x27E6 JUMP JUMPDEST PUSH2 0x28AD SWAP2 PUSH2 0x283C PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x2845 DUP3 PUSH2 0x2F9D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP4 PUSH2 0x286A DUP6 PUSH0 KECCAK256 SLOAD PUSH2 0x32A8 JUMP JUMPDEST SWAP4 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP5 PUSH0 KECCAK256 SLOAD AND SWAP2 DUP5 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x32F5 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH0 SWAP4 PUSH2 0x292A JUMPI JUMPDEST POP POP ISZERO PUSH2 0x2902 JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x28DA JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x294D SWAP4 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x2955 JUMPI JUMPDEST PUSH2 0x2945 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x32D6 JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x28C1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x293B JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x30C JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x2983 PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x29C7 JUMPI POP POP POP PUSH2 0x31E SWAP3 POP SUB DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x29B1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x29F7 DUP3 PUSH2 0x769 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x2A12 DUP3 PUSH2 0x84B JUMP JUMPDEST PUSH2 0x2A1F PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x7BE JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x2A2F DUP3 SWAP5 PUSH2 0x84B JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2A3F JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x2A4A PUSH2 0x29EA JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x2A33 JUMP JUMPDEST SWAP1 PUSH2 0x2A60 DUP3 PUSH2 0x84B JUMP JUMPDEST PUSH2 0x2A6D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x7BE JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x2A7D DUP3 SWAP5 PUSH2 0x84B JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2AC8 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2A87 JUMP JUMPDEST PUSH2 0x2AD6 DUP3 PUSH2 0x3EA JUMP JUMPDEST MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0x2AE6 DUP2 PUSH2 0x769 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0x2AF9 DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x2B42 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2B29 DUP3 PUSH2 0x8C3 JUMP JUMPDEST SWAP2 PUSH2 0x2B37 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x7BE JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0xA0 DUP4 PUSH1 0x60 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BDC0 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x2BE1 SWAP1 PUSH2 0x350 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH2 0x140 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE DUP3 PUSH2 0x120 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2C71 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP5 DUP3 ADD MLOAD PUSH2 0x2C98 DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP4 DUP7 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x2C63 JUMP JUMPDEST PUSH1 0x60 DUP1 SWAP2 DUP1 CALLDATALOAD PUSH2 0x2CD0 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x2CE2 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH2 0x2CF7 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD CALLDATALOAD PUSH2 0x2D09 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x80 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH2 0x2D28 DUP2 PUSH2 0x734 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 SWAP5 DUP1 CALLDATALOAD PUSH2 0x2D38 DUP2 PUSH2 0x20C6 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x2D48 DUP2 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH2 0x2D5B DUP2 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 PUSH2 0x2D6C DUP4 PUSH2 0x20C6 JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH2 0x2D9B SWAP1 PUSH2 0x2D7C PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x2D85 DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x350 PUSH1 0x1 PUSH2 0x2DAA DUP4 PUSH2 0x32A8 JUMP JUMPDEST SWAP3 PUSH2 0x2E53 PUSH2 0x2DB7 DUP3 PUSH2 0x5373 JUMP JUMPDEST PUSH2 0x2E46 PUSH2 0x2DC3 DUP5 PUSH2 0x5396 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF DUP6 PUSH1 0x5A SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP7 PUSH2 0x2DDD PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP4 PUSH2 0x2DE8 PUSH2 0x7EE JUMP JUMPDEST PUSH1 0x4 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO DUP2 MSTORE SWAP10 PUSH1 0x5 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x20 DUP13 ADD MSTORE PUSH1 0x6 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x7 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x2E26 PUSH2 0x7FB JUMP JUMPDEST SWAP11 DUP12 MSTORE PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x40 DUP11 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x80 DUP9 ADD MSTORE JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST DUP1 DUP3 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP1 DUP3 SHR DUP3 AND ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x2 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE PUSH1 0x3 SHR AND ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2E86 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x2EF4 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2F2A JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2F72 JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x2FBF JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2FFB PUSH2 0x27AF JUMP JUMPDEST SWAP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x3036 PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0x53B9 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x3041 DUP5 PUSH2 0x2A08 JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x3051 DUP6 PUSH2 0x2A56 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x3062 DUP7 PUSH2 0x2A56 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x3076 DUP8 DUP12 MLOAD PUSH2 0x3595 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x3084 DUP8 PUSH2 0x2A56 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x31ED JUMPI JUMPDEST POP DUP4 PUSH2 0x31DB JUMPI JUMPDEST DUP13 PUSH0 JUMPDEST DUP12 DUP2 LT PUSH2 0x30BE JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x3105 DUP5 PUSH2 0x30F1 DUP2 PUSH2 0x30E3 PUSH2 0xE07 DUP16 DUP16 PUSH2 0xDE5 DUP6 PUSH2 0xDF2 SWAP3 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x30FF DUP4 DUP4 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0x2AB4 JUMP JUMPDEST POP PUSH2 0x310F DUP2 PUSH2 0x35E7 JUMP JUMPDEST PUSH2 0x311A DUP6 DUP14 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0x3138 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x5691 JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x31CE JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x31B0 JUMPI JUMPDEST POP POP PUSH2 0x3161 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD DUP14 SWAP1 PUSH2 0x30A8 JUMP JUMPDEST DUP3 PUSH2 0x3184 SWAP3 PUSH2 0x317B DUP3 PUSH2 0x3174 DUP9 MLOAD PUSH2 0x5396 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x5BAC JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x3194 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x3153 JUMP JUMPDEST PUSH2 0x31A7 SWAP4 PUSH2 0x31A1 SWAP2 PUSH2 0x2BB7 JUMP JUMPDEST SWAP2 PUSH2 0x5691 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x318B JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x31BD DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x31C6 DUP2 PUSH2 0x3EA JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x314C JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x3159 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x30A5 JUMP JUMPDEST PUSH2 0x31F8 SWAP2 SWAP5 POP PUSH2 0x5396 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x309E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 SWAP4 PUSH2 0x322C PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP3 DUP2 PUSH2 0x3239 JUMPI POP SWAP2 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3265 PUSH32 0x0 DUP5 PUSH2 0x2813 JUMP JUMPDEST AND TIMESTAMP GT ISZERO SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1 SWAP2 AND ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 MUL SWAP2 DUP1 DUP4 DIV PUSH1 0x5 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x282B JUMPI JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x20C6 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH1 0x20 DUP3 MLOAD PUSH2 0x32EF DUP2 PUSH2 0x20C6 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2D6C PUSH2 0x3395 PUSH1 0x40 SWAP4 SWAP7 SWAP6 SWAP5 SWAP7 PUSH1 0x60 DUP5 MSTORE DUP1 MLOAD PUSH2 0x3311 DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xC0 PUSH2 0x333B DUP7 DUP4 ADD MLOAD PUSH1 0xE0 PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0x140 DUP8 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 ADD MLOAD DUP3 DUP8 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xE0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA0 DUP3 ADD MLOAD AND PUSH2 0x100 DUP8 ADD MSTORE ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP6 DUP4 SUB ADD PUSH2 0x120 DUP7 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST DUP2 ISZERO PUSH2 0x33B1 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI PUSH2 0x350 SWAP2 PUSH2 0x33A7 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x28DA JUMPI PUSH5 0x174876E800 SWAP1 DIV DUP1 PUSH1 0x18 SHR PUSH2 0x344D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF SWAP1 PUSH1 0x12 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ORIGIN PUSH2 0x34D2 JUMPI PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH2 0x34AA JUMPI PUSH1 0x1 PUSH32 0x0 TSTORE JUMP JUMPDEST PUSH32 0x7A19888600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1035 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST SWAP1 PUSH2 0x3546 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x351E JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x358C JUMPI JUMPDEST PUSH2 0x3557 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x354F JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0x35A5 DUP3 PUSH2 0x2A56 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x35B9 JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH2 0x35C5 DUP4 PUSH2 0x327F JUMP JUMPDEST SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x282B JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0x35E0 DUP3 DUP8 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x35AC JUMP JUMPDEST DUP1 MLOAD PUSH2 0x35F2 DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x35FB DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP1 PUSH2 0x360E JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x361A PUSH1 0x1 SWAP3 PUSH2 0x3EA JUMP JUMPDEST SUB PUSH2 0x369B JUMPI PUSH1 0x20 PUSH2 0x3645 PUSH2 0x3639 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x3682 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x350 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x36F0 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0x377A JUMPI POP POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 JUMP JUMPDEST PUSH2 0x37BA SWAP4 PUSH2 0x37A4 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x37E7 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 PUSH2 0x381B DUP5 MLOAD PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x3858 JUMPI DUP1 PUSH2 0x3847 DUP6 PUSH2 0x3842 DUP7 PUSH2 0x383C PUSH1 0x1 SWAP7 DUP9 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3295 JUMP JUMPDEST PUSH2 0x33A7 JUMP JUMPDEST PUSH2 0x3851 DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x381E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 PUSH2 0x3868 SWAP2 PUSH2 0x3295 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38A9 SWAP1 PUSH2 0x5499 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x282B JUMPI PUSH2 0x31E SWAP2 PUSH0 SUB SWAP1 PUSH2 0x54EE JUMP JUMPDEST SWAP1 PUSH2 0x350 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x55F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 SWAP3 SWAP4 PUSH2 0x38FB DUP3 DUP3 DUP6 PUSH2 0x373D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SUB PUSH2 0x392B JUMPI JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x3949 JUMPI SWAP5 PUSH2 0x393F SWAP5 SWAP6 SUB SWAP3 PUSH2 0x42DE JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x3923 JUMP JUMPDEST DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0x3990 JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0x34D2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x39DC SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x282B JUMPI SSTORE JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x3B81 JUMPI PUSH2 0x3A1E DUP6 PUSH2 0x37A4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x3B44 JUMPI DUP4 SWAP1 SUB PUSH2 0x3A48 DUP7 PUSH2 0x37A4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x3A6E DUP4 PUSH2 0x3A68 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x2BB7 JUMP JUMPDEST PUSH2 0x3A77 DUP2 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x3A92 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x3B2C SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x3B31 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST DUP1 PUSH2 0x237B PUSH2 0x3B3E SWAP3 PUSH2 0x755 JUMP JUMPDEST PUSH0 PUSH2 0x3B1B JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x3BBE PUSH2 0x440E JUMP JUMPDEST PUSH2 0x3BC7 DUP2 PUSH2 0x3201 JUMP JUMPDEST POP PUSH2 0x3BCF JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SUB PUSH2 0x3C0B JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 DUP2 MLOAD DUP2 MLOAD DUP2 DUP6 EQ SWAP2 DUP3 ISZERO SWAP3 PUSH2 0x3CB9 JUMPI JUMPDEST POP POP PUSH2 0x3C0B JUMPI PUSH2 0x3C57 DUP4 PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3C69 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3CA7 PUSH2 0x3C82 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3CA2 PUSH2 0x3C90 DUP6 DUP11 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3C9B DUP7 DUP11 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x3295 JUMP JUMPDEST PUSH2 0x3295 JUMP JUMPDEST DIV PUSH2 0x3CB2 DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x3C5A JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0x3C48 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x30C JUMPI MLOAD PUSH2 0x350 DUP2 PUSH2 0x20C6 JUMP JUMPDEST SWAP1 PUSH2 0x3D3D SWAP3 PUSH2 0x3D2B PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x1C149E2800000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x24 DUP6 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x3D80 JUMPI JUMPDEST POP ISZERO PUSH2 0x3D58 JUMPI JUMP JUMPDEST PUSH32 0x6061292500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3DA2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3DA8 JUMPI JUMPDEST PUSH2 0x3D9A DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3CC4 JUMP JUMPDEST PUSH0 PUSH2 0x3D50 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3DC7 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x3E16 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x3DF6 PUSH2 0x3DF0 DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x35E7 JUMP JUMPDEST PUSH2 0x3E04 DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x5691 JUMP JUMPDEST ADD PUSH2 0x3DB9 JUMP JUMPDEST SWAP3 SWAP2 SWAP6 SWAP7 SWAP5 SWAP7 PUSH2 0x3E3D DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3F1B JUMPI PUSH2 0xDE5 DUP3 PUSH2 0x3E5B SWAP3 PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x3E6B PUSH2 0x3639 PUSH2 0xDE5 DUP5 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 DUP2 SUB PUSH2 0x3EC7 JUMPI POP SWAP1 PUSH2 0x3E95 PUSH1 0x1 SWAP3 PUSH2 0x3E8E DUP4 DUP12 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x56DE JUMP JUMPDEST PUSH2 0x3EAE DUP12 PUSH2 0x3EA7 DUP4 PUSH2 0x17D7 DUP2 DUP14 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x55F5 JUMP JUMPDEST PUSH2 0x3EC0 DUP3 DUP12 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x3E40 JUMP JUMPDEST PUSH2 0x181B SWAP1 DUP9 PUSH2 0x3EDC PUSH2 0x3639 PUSH2 0xDE5 DUP8 DUP13 PUSH2 0x2AB4 JUMP JUMPDEST PUSH32 0xFFE261A100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 MSTORE DUP2 AND PUSH1 0x24 MSTORE AND PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP SWAP7 SWAP5 SWAP2 SWAP3 POP SWAP7 SWAP5 POP PUSH2 0x3F53 DUP5 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x2 SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE PUSH2 0x3F70 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x3FB6 PUSH1 0x20 DUP6 DUP4 AND SWAP8 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x296B JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x3FDB SWAP2 PUSH0 SWAP2 PUSH2 0x40B5 JUMPI JUMPDEST POP PUSH2 0x3FD6 DUP2 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x2B8A JUMP JUMPDEST SWAP8 PUSH2 0x3FE5 DUP3 PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0x3FF0 DUP10 DUP6 DUP5 PUSH2 0x5800 JUMP JUMPDEST DUP1 DUP10 LT PUSH2 0x4085 JUMPI POP SWAP3 DUP6 SWAP3 PUSH2 0x405C PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 SWAP4 PUSH2 0x404D PUSH1 0x20 PUSH2 0x4043 PUSH1 0x1 SWAP11 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP9 ADD MLOAD MLOAD PUSH2 0x2A56 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x2BC4 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH32 0xCAD8C9D32507393B6508CA4A888B81979919B477510585BDE8488F153072D6F3 PUSH0 DUP1 LOG2 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP10 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x40CE SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x3FCC JUMP JUMPDEST SWAP3 PUSH2 0x4127 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP5 SWAP7 PUSH2 0x413E PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x38BE241D00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x44 DUP6 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x4181 JUMPI JUMPDEST POP ISZERO PUSH2 0x4159 JUMPI JUMP JUMPDEST PUSH32 0xF23DBC600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x419A SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3DA8 JUMPI PUSH2 0x3D9A DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x4151 JUMP JUMPDEST SWAP1 PUSH2 0x41A9 PUSH2 0x2BEF JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x1 DUP1 DUP5 DUP4 PUSH2 0x41BB PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x41C4 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND DUP2 DUP6 DUP5 PUSH2 0x41D4 PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x41DD SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x41E6 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP1 DUP3 DUP7 DUP6 PUSH2 0x41F7 PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4200 SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4209 SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4212 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP3 DUP1 DUP8 DUP7 PUSH2 0x4223 PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x422C SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4235 SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x423E SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4247 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP5 DUP2 DUP9 DUP2 DUP2 DUP5 PUSH1 0xC AND SHR AND SWAP3 PUSH1 0xC PUSH2 0x4261 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP2 PUSH2 0x426D PUSH2 0x808 JUMP JUMPDEST PUSH1 0x9 DUP11 SWAP1 SHR DUP3 AND ISZERO ISZERO DUP2 MSTORE SWAP9 PUSH1 0x8 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0xA DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0xB SHR AND ISZERO ISZERO PUSH1 0x60 DUP10 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP8 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x43D9 JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x43A4 JUMPI DUP5 PUSH2 0x4322 DUP6 PUSH2 0x37A4 DUP7 PUSH2 0x37A4 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x3B2C SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x3B10 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x446C JUMPI JUMPDEST PUSH2 0x4444 JUMPI JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x443E JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP1 PUSH2 0x4487 DUP3 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x4490 DUP3 PUSH2 0x3EA JUMP JUMPDEST DUP3 SLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 SWAP1 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 SWAP1 SWAP2 AND PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHL PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND OR SWAP1 ISZERO ISZERO PUSH1 0xA8 SHL PUSH22 0xFF000000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x30C JUMPI MLOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x30C JUMPI SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x750 JUMPI PUSH1 0x1 DUP2 ADD DUP1 DUP4 SSTORE DUP2 LT ISZERO PUSH2 0x2AC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP2 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND OR DUP3 SSTORE PUSH2 0x31E SWAP3 PUSH1 0x2 SWAP2 SWAP1 PUSH1 0x40 SWAP1 PUSH2 0x4602 DUP4 PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x1 DUP8 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD AND SWAP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP5 SWAP4 SWAP2 PUSH2 0x31E SWAP4 PUSH1 0x60 SWAP3 PUSH2 0x4682 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP10 MSTORE AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x2C52 JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x140 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH2 0x46C4 PUSH2 0x7FB JUMP JUMPDEST SWAP1 PUSH2 0x46CE DUP2 PUSH2 0x32CB JUMP JUMPDEST DUP3 MSTORE PUSH2 0x46DC PUSH1 0x20 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x46ED PUSH1 0x40 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x46FE PUSH1 0x60 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x470F PUSH1 0x80 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4720 PUSH1 0xA0 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x4731 PUSH1 0xC0 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x4742 PUSH1 0xE0 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 PUSH2 0x4755 DUP2 DUP4 ADD PUSH2 0x32CB JUMP JUMPDEST SWAP1 DUP4 ADD MSTORE PUSH2 0x4767 PUSH2 0x120 DUP1 SWAP3 ADD PUSH2 0x32CB JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP7 SWAP6 SWAP4 SWAP5 PUSH2 0x47D0 PUSH2 0x31E SWAP7 PUSH4 0xFFFFFFFF PUSH2 0x220 SWAP7 PUSH2 0x4798 PUSH2 0x485E SWAP7 PUSH2 0x2A0 DUP1 DUP11 MSTORE DUP10 ADD SWAP1 PUSH2 0x2C52 JUMP JUMPDEST SWAP12 PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD SWAP1 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x48B0 PUSH2 0x48A9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 AND SWAP1 JUMP JUMPDEST PUSH2 0x533E JUMPI DUP1 MLOAD MLOAD PUSH1 0x2 DUP2 LT PUSH2 0x5316 JUMPI PUSH1 0x8 DUP2 GT PUSH2 0x52EE JUMPI SWAP3 SWAP2 SWAP1 PUSH2 0x48D3 DUP5 PUSH2 0x2A56 JUMP JUMPDEST PUSH0 SWAP5 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4FE1 JUMPI POP POP PUSH2 0x49A3 SWAP3 SWAP4 SWAP5 POP PUSH1 0x80 DUP3 ADD SWAP2 PUSH2 0x4911 DUP4 MLOAD PUSH2 0x490C DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4582 JUMP JUMPDEST PUSH2 0x4926 PUSH2 0x3639 PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 SWAP2 PUSH2 0x493F DUP3 DUP8 MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x494D PUSH1 0x60 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH32 0x77FF76E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP7 DUP8 SWAP2 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP6 PUSH0 SWAP2 PUSH2 0x4FAE JUMPI JUMPDEST POP PUSH2 0x4ACF PUSH1 0xC0 DUP5 ADD SWAP2 PUSH2 0x4ACA PUSH2 0x4A99 DUP5 MLOAD SWAP8 PUSH2 0x4A82 PUSH2 0x4A7C PUSH2 0x49DE DUP12 MLOAD ISZERO ISZERO PUSH1 0x4 SHL PUSH1 0x1 OR SWAP1 JUMP JUMPDEST SWAP11 PUSH1 0x60 PUSH2 0x4A4C PUSH2 0x4A1B PUSH1 0x20 SWAP15 DUP16 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF SWAP1 PUSH1 0x5 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP13 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF SWAP1 PUSH1 0x6 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F SWAP1 PUSH1 0x7 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x594E JUMP JUMPDEST SWAP1 PUSH1 0x5A SWAP2 PUSH5 0xFFFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP9 PUSH2 0x4AC5 DUP7 DUP9 ADD SWAP11 PUSH2 0x4AAF DUP13 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x82 SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x59CE JUMP JUMPDEST PUSH2 0x59EE JUMP JUMPDEST SWAP4 PUSH1 0xA0 DUP5 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP10 DUP8 PUSH2 0x4AF1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST AND DUP1 PUSH2 0x4BF2 JUMPI JUMPDEST POP SWAP1 PUSH2 0x4B16 DUP2 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B46 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4B7E SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP6 ADD SWAP5 DUP6 MLOAD PUSH2 0x4B8D SWAP1 DUP12 PUSH2 0x5A12 JUMP JUMPDEST MLOAD SWAP5 MLOAD SWAP8 MLOAD PUSH4 0xFFFFFFFF AND SWAP7 MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BB7 SWAP2 PUSH2 0x41A0 JUMP JUMPDEST SWAP2 MLOAD SWAP3 MLOAD SWAP6 DUP7 SWAP6 CALLER SWAP10 AND SWAP8 PUSH2 0x4BCC SWAP6 DUP8 PUSH2 0x476E JUMP JUMPDEST SUB PUSH32 0xBC1561EEAB9F40962E2FB827A7FF9C7CDB47A9D7C84CAEEFA4ED90E043842DAD SWAP2 LOG3 JUMP JUMPDEST PUSH2 0x4C34 SWAP2 DUP5 SWAP2 DUP10 MLOAD PUSH0 DUP10 MLOAD SWAP4 DUP12 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xB89F18200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x4650 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x4F91 JUMPI JUMPDEST POP ISZERO PUSH2 0x4F7C JUMPI PUSH2 0x4C63 PUSH2 0x3639 PUSH2 0x3639 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP6 MLOAD DUP1 SWAP3 PUSH32 0xD77153A700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 PUSH1 0x4 PUSH2 0x140 SWAP6 DUP7 SWAP4 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP4 PUSH2 0x4F4D JUMPI JUMPDEST POP POP DUP2 MLOAD ISZERO ISZERO DUP1 PUSH2 0x4F33 JUMPI JUMPDEST PUSH2 0x4EE0 JUMPI SWAP1 PUSH2 0x4EAE PUSH2 0x120 PUSH2 0x4D1A PUSH2 0x4E7B PUSH2 0x4E49 PUSH2 0x4E17 PUSH2 0x4DE5 PUSH2 0x4DB3 PUSH2 0x4D81 DUP15 PUSH2 0x4D56 PUSH2 0x4D4D DUP13 DUP16 PUSH2 0x4ED9 SWAP16 SWAP1 PUSH2 0x4D1A PUSH2 0x4D22 SWAP3 PUSH2 0x4CEF DUP6 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF SWAP1 PUSH1 0x9 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP3 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF SWAP1 PUSH1 0x8 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 DUP13 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFF SWAP1 PUSH1 0xA SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF SWAP1 PUSH1 0xB SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFF SWAP1 PUSH1 0xC SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFF SWAP1 PUSH1 0xD SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xC0 DUP8 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF SWAP1 PUSH1 0xE SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP7 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFF SWAP1 PUSH1 0xF SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF SWAP1 PUSH1 0x10 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF SWAP1 PUSH1 0x11 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP10 PUSH0 PUSH2 0x4AF8 JUMP JUMPDEST PUSH2 0x181B DUP12 PUSH2 0x4EF5 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xFA93D81400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x4 MSTORE AND PUSH1 0x24 MSTORE CALLER PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x4F47 PUSH2 0x4F42 DUP7 MLOAD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4CB0 JUMP JUMPDEST PUSH2 0x4F6D SWAP3 SWAP4 POP DUP1 RETURNDATASIZE LT PUSH2 0x4F75 JUMPI JUMPDEST PUSH2 0x4F65 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x46B0 JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x4CA4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F5B JUMP JUMPDEST PUSH2 0x181B DUP11 PUSH2 0x4EF5 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x4FA8 SWAP2 POP DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x3DA8 JUMPI PUSH2 0x3D9A DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x4C46 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x4FD1 SWAP3 SWAP7 POP RETURNDATASIZE DUP8 GT PUSH2 0x4FDA JUMPI JUMPDEST PUSH2 0x4FC9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x463A JUMP JUMPDEST SWAP5 SWAP1 SWAP5 PUSH0 PUSH2 0x49B6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4FBF JUMP JUMPDEST PUSH2 0x4FEC DUP2 DUP6 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP7 PUSH2 0x4FFF DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 DUP3 ISZERO DUP1 ISZERO PUSH2 0x52E3 JUMPI JUMPDEST PUSH2 0x52BB JUMPI AND DUP1 DUP3 LT PUSH2 0x5293 JUMPI DUP2 EQ PUSH2 0x525E JUMPI PUSH1 0x40 SWAP1 DUP2 DUP11 ADD SWAP10 DUP11 MLOAD PUSH2 0x5040 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 PUSH1 0x20 SWAP12 DUP13 DUP3 ADD SWAP1 DUP14 DUP3 MLOAD SWAP2 PUSH2 0x505F DUP4 PUSH2 0x3EA JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 PUSH1 0x60 ADD SWAP4 DUP5 MLOAD PUSH2 0x5079 SWAP1 ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5082 PUSH2 0x829 JUMP JUMPDEST SWAP4 PUSH2 0x508D SWAP1 DUP6 PUSH2 0x2ACD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE ISZERO ISZERO DUP2 DUP8 ADD MSTORE DUP7 PUSH2 0x50BE DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x50D9 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x50E3 SWAP2 PUSH2 0x447A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x50EE DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x50F7 DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x520F JUMPI POP DUP2 ISZERO SWAP2 PUSH2 0x5204 JUMPI JUMPDEST POP PUSH2 0x369B JUMPI DUP10 SWAP2 JUMPDEST MLOAD SWAP10 DUP11 DUP1 SWAP3 PUSH32 0x313CE56700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 SWAP13 DUP14 SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP3 PUSH2 0x51D7 JUMPI JUMPDEST POP POP PUSH1 0x12 SWAP1 PUSH1 0xFF SWAP2 DUP1 DUP4 DUP4 AND GT PUSH0 EQ PUSH2 0x5183 JUMPI DUP11 PUSH32 0x686D360700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 SWAP11 POP SWAP1 PUSH2 0x51A7 SWAP3 SWAP2 SUB AND PUSH2 0x519F DUP6 DUP9 PUSH2 0x2AB4 JUMP JUMPDEST SWAP1 PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x51CB DUP2 PUSH2 0x51C6 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4526 JUMP JUMPDEST SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 ADD PUSH2 0x48D7 JUMP JUMPDEST PUSH2 0x51F6 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x51FD JUMPI JUMPDEST PUSH2 0x51EE DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x450D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5149 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x51E4 JUMP JUMPDEST MLOAD ISZERO ISZERO SWAP1 POP PUSH0 PUSH2 0x5104 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x521D DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x5226 DUP2 PUSH2 0x3EA JUMP JUMPDEST SUB PUSH2 0x5236 JUMPI PUSH2 0x369B JUMPI DUP10 SWAP2 PUSH2 0x510C JUMP JUMPDEST PUSH32 0xA1E9DD9D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4F4B634E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x6E8F194700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP2 DUP10 AND DUP4 EQ PUSH2 0x5015 JUMP JUMPDEST PUSH32 0x707BDF5800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x5ED4BA8F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xDB771C8000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x53ED JUMPI POP POP POP PUSH2 0x31E SWAP3 POP SUB DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x53D7 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x344D JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x542A JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x282B JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x5494 JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x542A JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x344D JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x5476 JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x54C3 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x55F1 JUMPI PUSH32 0x0 SWAP2 PUSH2 0x5533 DUP2 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST DUP3 DUP2 ADD SWAP3 DUP4 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x282B JUMPI DUP3 PUSH2 0x55A7 JUMPI POP PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 GT PUSH2 0x282B JUMPI PUSH2 0x31E SWAP5 TSTORE PUSH2 0x5C1A JUMP JUMPDEST ISZERO PUSH2 0x55B6 JUMPI JUMPDEST PUSH2 0x31E SWAP3 PUSH2 0x5C1A JUMP JUMPDEST PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x282B JUMPI PUSH2 0x31E SWAP5 TSTORE SWAP3 POP PUSH2 0x55AD JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x564F JUMPI JUMPDEST POP PUSH2 0x5627 JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x5612 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0x5666 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x56D5 PUSH2 0x2AD6 SWAP5 DUP1 PUSH2 0x56B4 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0x3CA2 PUSH2 0x56C6 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3C9B DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x56EA PUSH2 0x31E SWAP3 PUSH2 0x5499 JUMP JUMPDEST SWAP1 PUSH2 0x54EE JUMP JUMPDEST PUSH2 0x570B DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP2 SLOAD PUSH3 0xF4240 SWAP1 DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x282B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SSTORE PUSH2 0x5742 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 DUP1 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH0 DUP1 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x578C DUP2 SWAP1 PUSH3 0xF4240 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP4 DUP2 PUSH2 0x57E2 PUSH1 0x4 DUP3 ADD SWAP1 PUSH3 0xF4240 PUSH1 0x40 PUSH1 0x60 DUP5 ADD SWAP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x57F3 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x237B PUSH2 0x31E SWAP3 PUSH2 0x755 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0x5919 JUMPI PUSH2 0x5838 DUP4 PUSH2 0x5832 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x399B JUMP JUMPDEST PUSH2 0x5857 DUP6 PUSH2 0x37A4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x5866 DUP2 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5881 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x58BA DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x57E2 JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 SWAP2 SWAP1 DUP3 JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x59C2 JUMPI PUSH2 0x5966 DUP5 DUP4 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH1 0xFF SWAP2 PUSH2 0x5973 DUP7 PUSH2 0x327F JUMP JUMPDEST SWAP2 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x542A JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x282B JUMPI DUP1 DUP6 LT ISZERO PUSH2 0x59BD JUMPI POP DUP4 JUMPDEST PUSH1 0x5 SWAP1 DUP2 GT PUSH2 0x542A JUMPI DUP2 PUSH1 0x7 SWAP2 SHR AND PUSH2 0x344D JUMPI PUSH1 0x1 SWAP4 PUSH1 0x1F SWAP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP4 ADD SWAP3 PUSH2 0x5953 JUMP JUMPDEST PUSH2 0x5994 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP3 POP POP JUMP JUMPDEST PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0x28DA JUMPI PUSH5 0x174876E800 PUSH2 0x350 SWAP3 DIV SWAP1 PUSH2 0x5410 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x28DA JUMPI PUSH2 0x350 SWAP2 PUSH5 0x174876E800 PUSH1 0x42 SWAP3 DIV SWAP1 PUSH2 0x5452 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x5B8F JUMPI JUMPDEST POP DUP4 LT PUSH2 0x5B67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP3 PUSH2 0x5B4A JUMPI JUMPDEST POP POP DUP3 GT PUSH2 0x5B22 JUMPI DUP2 DUP2 PUSH2 0x5B0C PUSH2 0x5AF5 PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP6 PUSH2 0x5AEF PUSH2 0x5B1D SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x3402 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x5B60 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5AA0 JUMP JUMPDEST PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x5BA6 SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x5A5D JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5BBF DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x5BCF JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5C0F SWAP6 SWAP7 POP PUSH2 0x5C09 SWAP4 SWAP3 PUSH2 0x5C02 SWAP3 PUSH2 0x5BE8 SWAP3 SUB PUSH2 0x385E JUMP JUMPDEST SWAP4 PUSH1 0xA0 PUSH2 0x5BF9 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3295 JUMP JUMPDEST SWAP1 PUSH2 0x33DE JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x5BC8 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E CODESIZE NOT DUP15 0xCF SHL 0x26 0xF9 0xC0 0xF7 0xD2 0xEF LOG0 0xB7 MSTORE SLOAD PUSH1 0xEF DUP8 PUSH18 0xC838C3A90520BBA7B26BCAB764736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"701:1544:88:-:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;3400:40:69;701:1544:88;;;;;:::i;:::-;;;;-1:-1:-1;;;701:1544:88;;;;3400:40:69;:::i;:::-;;;3501:47;701:1544:88;;;;;:::i;:::-;;;;-1:-1:-1;;;701:1544:88;;;;3501:47:69;:::i;:::-;;;3601:41;701:1544:88;;;;;:::i;:::-;;;;-1:-1:-1;;;701:1544:88;;;;3601:41:69;:::i;:::-;;;;;;3703:48;701:1544:88;;;;;:::i;:::-;;;;-1:-1:-1;;;701:1544:88;;;;3703:48:69;:::i;:::-;;;;;;3802:39;701:1544:88;;;;;:::i;:::-;;;;-1:-1:-1;;;701:1544:88;;;;3802:39:69;:::i;:::-;;;;;701:1544:88;;-1:-1:-1;;;4174:18:67;;3802:39:69;;4174:18:67;701:1544:88;4174:18:67;701:1544:88;4174:18:67;;;;;;;;-1:-1:-1;4174:18:67;;;-1:-1:-1;701:1544:88;;;;;;4174:31:67;4170:96;;701:1544:88;;-1:-1:-1;;;4303:34:67;;701:1544:88;4303:34:67;701:1544:88;4174:18:67;701:1544:88;4303:34:67;;;;;;;;-1:-1:-1;4303:34:67;;;-1:-1:-1;;4276:61:67;;;;701:1544:88;;-1:-1:-1;;;4376:36:67;;701:1544:88;4376:36:67;701:1544:88;4174:18:67;701:1544:88;;4376:36:67;;;;;;;-1:-1:-1;4376:36:67;;;-1:-1:-1;4347:65:67;;4174:18;4347:65;;;;;701:1544:88;;;;;;;;;4450:35:67;;;;;;;;;-1:-1:-1;4450:35:67;;;-1:-1:-1;4422:63:67;;;;;;4496:18;;;;4524:24;;;;701:1544:88;;;;;;;;;;;;;;;;;;3400:40:69;701:1544:88;;;;;;;;;;;;;;;3501:47:69;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4450:35:67;;;;;;;-1:-1:-1;4450:35:67;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;4376:36:67;4174:18;4376:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;4303:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;4170:96:67;4228:27;;;-1:-1:-1;4228:27:67;4174:18;-1:-1:-1;4228:27:67;4174:18;;;;;;;;;;;;;;;;;:::i;:::-;;;701:1544:88;;;;;;;:::i;:::-;4174:18:67;;;;701:1544:88;-1:-1:-1;701:1544:88;;4174:18:67;;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;701:1544:88;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;9892:177:69:-;701:1544:88;;;;;;:::i;:::-;;;;1461:67:44;701:1544:88;;;;-1:-1:-1;;;701:1544:88;;;;;1461:67:44;;;;;;701:1544:88;;;;;;;;;;;;;;-1:-1:-1;;;701:1544:88;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;1461:67:44;;;;;;;;;:::i;:::-;701:1544:88;1451:78:44;;-1:-1:-1;;701:1544:88;;;;;;;;;1432:103:44;701:1544:88;1432:103:44;;701:1544:88;;;;1432:103:44;;;;;:::i;:::-;701:1544:88;;1405:144:44;;-1:-1:-1;;1405:170:44;;9892:177:69:o;701:1544:88:-;;;;-1:-1:-1;701:1544:88;;;;;-1:-1:-1;701:1544:88"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":1448,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":800,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_address_59013":{"entryPoint":784,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_addresst_array_contract_IERC20_dynt_array_uint256_dynt_uint256t_bytes":{"entryPoint":4514,"id":null,"parameterSlots":1,"returnSlots":6},"abi_decode_addresst_array_struct_TokenConfig_dynt_uint256t_uint32t_boolt_struct_PoolRoleAccounts_calldatat_addresst_struct_LiquidityManagement_calldata":{"entryPoint":8527,"id":null,"parameterSlots":1,"returnSlots":8},"abi_decode_addresst_contract_IERC20":{"entryPoint":811,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":2147,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":2271,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":8400,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":15556,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_boolt_uint256_fromMemory":{"entryPoint":13014,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes":{"entryPoint":2325,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3012,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata_35422":{"entryPoint":3058,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_enum_SwapKind":{"entryPoint":2112,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_HookFlags_fromMemory":{"entryPoint":18096,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_LiquidityManagement":{"entryPoint":11536,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_LiquidityManagement_calldata":{"entryPoint":8479,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_PoolRoleAccounts_calldata":{"entryPoint":8432,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":13003,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":10588,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_uint256_fromMemory":{"entryPoint":17978,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint32":{"entryPoint":8413,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint8_fromMemory":{"entryPoint":17677,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_struct_TokenInfo":{"entryPoint":1057,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_address_address_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_array_struct_TokenConfig_dyn_struct_LiquidityManagement":{"entryPoint":18000,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_address_bool":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_35653":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_uint256_35697":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_uint256_35703":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn":{"entryPoint":3140,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn_array_struct_TokenInfo_dyn_array_uint256_dyn_array_uint256_dyn":{"entryPoint":3200,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn_memory_ptr":{"entryPoint":7680,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn_to_array_address_dyn":{"entryPoint":942,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_TokenConfig_dyn":{"entryPoint":11346,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_TokenConfig_dyn_uint256_uint32_struct_PoolRoleAccounts_struct_HooksConfig_struct_LiquidityManagement":{"entryPoint":18286,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_array_struct_TokenInfo_dyn":{"entryPoint":1108,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":2919,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_array_uint256_dyn":{"entryPoint":4189,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_array_uint256_dyn_enum_Rounding":{"entryPoint":10603,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_to_array_uint256_dyn":{"entryPoint":1168,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_bytes":{"entryPoint":9317,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_memory_ptr":{"entryPoint":9280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IERC20_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_struct_HooksConfig":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_LiquidityManagement":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_LiquidityManagement_calldata":{"entryPoint":11457,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_PoolConfig":{"entryPoint":9626,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolRoleAccounts":{"entryPoint":9095,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolRoleAccounts_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_PoolSwapParams_address_uint256":{"entryPoint":13045,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_35696":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_array_uint256_dyn":{"entryPoint":11204,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint40":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_array_array_struct_TokenInfo_dyn":{"entryPoint":10760,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":10838,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_HooksConfig":{"entryPoint":11247,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_PoolData":{"entryPoint":10159,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_RecoveryLocals":{"entryPoint":11079,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_TokenInfo":{"entryPoint":10730,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory":{"entryPoint":2089,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_35416":{"entryPoint":2017,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_35605":{"entryPoint":2030,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_35606":{"entryPoint":2043,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_35665":{"entryPoint":2056,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":2123,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":2243,"id":null,"parameterSlots":1,"returnSlots":1},"array_push_from_contract_IERC20_to_array_contract_IERC20_dyn_storage_ptr":{"entryPoint":17702,"id":null,"parameterSlots":2,"returnSlots":0},"checked_add_uint256":{"entryPoint":14747,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint32":{"entryPoint":10259,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint8":{"entryPoint":12909,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint8_135159":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_135160":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_135161":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_135162":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_135163":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_add_uint8_135164":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"checked_div_uint256":{"entryPoint":13223,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":12949,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_35644":{"entryPoint":12927,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":11191,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256_35661":{"entryPoint":11146,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"constant_AGGREGATE_YIELD_FEE_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_DECIMAL_SCALING_FACTORS_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_PAUSE_WINDOW_END_TIME_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"copy_array_from_storage_to_memory_array_contract_IERC20_dyn":{"entryPoint":10643,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_contract_IERC20_dyn_ptr":{"entryPoint":21433,"id":null,"parameterSlots":1,"returnSlots":1},"copy_struct_to_storage_from_struct_PoolRoleAccounts_to_struct_PoolRoleAccounts":{"entryPoint":17794,"id":null,"parameterSlots":2,"returnSlots":0},"copy_struct_to_storage_from_struct_TokenInfo_to_struct_TokenInfo":{"entryPoint":17530,"id":null,"parameterSlots":2,"returnSlots":0},"external_fun_allowance":{"entryPoint":5169,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_approve":{"entryPoint":8249,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_balanceOf":{"entryPoint":9987,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_computeDynamicSwapFeePercentage":{"entryPoint":2352,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_emitAuxiliaryEvent":{"entryPoint":7529,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAddLiquidityCalledFlag":{"entryPoint":6675,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAggregateSwapFeeAmount":{"entryPoint":5017,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAggregateYieldFeeAmount":{"entryPoint":851,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getAuthorizer":{"entryPoint":6626,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBptRate":{"entryPoint":2578,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getCurrentLiveBalances":{"entryPoint":2936,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getERC4626BufferAsset":{"entryPoint":1729,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getHooksConfig":{"entryPoint":7871,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getNonzeroDeltaCount":{"entryPoint":8181,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolConfig":{"entryPoint":9833,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolData":{"entryPoint":1219,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolPausedState":{"entryPoint":1500,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolRoleAccounts":{"entryPoint":9146,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokenInfo":{"entryPoint":3326,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokenRates":{"entryPoint":4226,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokens":{"entryPoint":7697,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getProtocolFeeController":{"entryPoint":5123,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getReservesOf":{"entryPoint":5249,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getStaticSwapFeePercentage":{"entryPoint":6818,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getTokenDelta":{"entryPoint":5317,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultAdmin":{"entryPoint":1662,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_initialize":{"entryPoint":6936,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isERC4626BufferInitialized":{"entryPoint":3668,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolInRecoveryMode":{"entryPoint":7373,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolInitialized":{"entryPoint":2836,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolPaused":{"entryPoint":3740,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isPoolRegistered":{"entryPoint":7457,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isQueryDisabled":{"entryPoint":6894,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isQueryDisabledPermanently":{"entryPoint":1458,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_isUnlocked":{"entryPoint":4947,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualInitializePoolReentrancy":{"entryPoint":4730,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualRegisterPoolReentrancy":{"entryPoint":8810,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manuallySetSwapFee":{"entryPoint":3807,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mockExtensionHash":{"entryPoint":3105,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quote":{"entryPoint":9334,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_quoteAndRevert":{"entryPoint":3884,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reentrancyGuardEntered":{"entryPoint":8119,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_registerPool":{"entryPoint":9420,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removeLiquidityRecovery":{"entryPoint":5415,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_totalSupply":{"entryPoint":8322,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_vault":{"entryPoint":10092,"id":null,"parameterSlots":0,"returnSlots":0},"extract_returndata":{"entryPoint":11032,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":1982,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_35450":{"entryPoint":1844,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_35452":{"entryPoint":1877,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_35453":{"entryPoint":1897,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_35456":{"entryPoint":1925,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_35458":{"entryPoint":1953,"id":null,"parameterSlots":1,"returnSlots":0},"fun":{"entryPoint":11950,"id":27638,"parameterSlots":0,"returnSlots":0},"fun_27620":{"entryPoint":11910,"id":27620,"parameterSlots":0,"returnSlots":0},"fun_accountDelta":{"entryPoint":21742,"id":24503,"parameterSlots":2,"returnSlots":0},"fun_allowance":{"entryPoint":14141,"id":38353,"parameterSlots":3,"returnSlots":1},"fun_approve":{"entryPoint":17118,"id":38777,"parameterSlots":4,"returnSlots":0},"fun_bubbleUpRevert":{"entryPoint":13562,"id":6059,"parameterSlots":1,"returnSlots":0},"fun_burn":{"entryPoint":14827,"id":38621,"parameterSlots":3,"returnSlots":0},"fun_callAfterInitializeHook":{"entryPoint":16596,"id":29012,"parameterSlots":4,"returnSlots":0},"fun_callBeforeInitializeHook":{"entryPoint":15577,"id":28982,"parameterSlots":3,"returnSlots":0},"fun_computeProportionalAmountsOut":{"entryPoint":14351,"id":11099,"parameterSlots":3,"returnSlots":1},"fun_computeYieldFeesDue":{"entryPoint":23468,"id":30569,"parameterSlots":4,"returnSlots":1},"fun_copyToScaled18ApplyRateRoundDownArray":{"entryPoint":15411,"id":6310,"parameterSlots":3,"returnSlots":1},"fun_divDown":{"entryPoint":13278,"id":7616,"parameterSlots":2,"returnSlots":1},"fun_ensureInitializedPool":{"entryPoint":12189,"id":24722,"parameterSlots":1,"returnSlots":0},"fun_ensureInputLengthMatch":{"entryPoint":15364,"id":5611,"parameterSlots":2,"returnSlots":0},"fun_ensurePoolMinimumTotalSupply":{"entryPoint":22105,"id":38473,"parameterSlots":1,"returnSlots":0},"fun_ensureRegisteredPool":{"entryPoint":12114,"id":24686,"parameterSlots":1,"returnSlots":0},"fun_ensureUnlocked":{"entryPoint":14270,"id":24402,"parameterSlots":0,"returnSlots":0},"fun_ensureUnpaused":{"entryPoint":15286,"id":24537,"parameterSlots":1,"returnSlots":0},"fun_ensureVaultDelegateCall":{"entryPoint":12024,"id":25279,"parameterSlots":0,"returnSlots":0},"fun_ensureVaultNotPaused":{"entryPoint":17422,"id":24523,"parameterSlots":0,"returnSlots":0},"fun_getAggregateSwapFeePercentage":{"entryPoint":21363,"id":29661,"parameterSlots":1,"returnSlots":1},"fun_getAggregateYieldFeePercentage":{"entryPoint":21398,"id":29722,"parameterSlots":1,"returnSlots":1},"fun_getBalanceRaw":{"entryPoint":null,"id":5848,"parameterSlots":1,"returnSlots":1},"fun_getDecimalScalingFactors":{"entryPoint":13717,"id":29854,"parameterSlots":2,"returnSlots":1},"fun_getPoolPausedState":{"entryPoint":12801,"id":24627,"parameterSlots":1,"returnSlots":2},"fun_getStaticSwapFeePercentage":{"entryPoint":12968,"id":29600,"parameterSlots":1,"returnSlots":1},"fun_getTokenRate":{"entryPoint":13799,"id":30455,"parameterSlots":1,"returnSlots":1},"fun_initialize":{"entryPoint":15900,"id":26349,"parameterSlots":7,"returnSlots":1},"fun_insertBool":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_106363":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_113687":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_113688":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_120928":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_120929":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_76060":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_83788":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_83789":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_91432":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_91433":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_98951":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_98952":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertUint":{"entryPoint":21586,"id":7149,"parameterSlots":3,"returnSlots":1},"fun_insertUint_135165":{"entryPoint":21520,"id":7149,"parameterSlots":2,"returnSlots":1},"fun_isPoolInRecoveryMode":{"entryPoint":null,"id":29305,"parameterSlots":1,"returnSlots":1},"fun_isPoolInitialized":{"entryPoint":null,"id":29219,"parameterSlots":1,"returnSlots":1},"fun_isPoolRegistered":{"entryPoint":null,"id":29176,"parameterSlots":1,"returnSlots":1},"fun_isQueryContext":{"entryPoint":14726,"id":25144,"parameterSlots":0,"returnSlots":1},"fun_loadPoolData":{"entryPoint":12266,"id":24875,"parameterSlots":1,"returnSlots":1},"fun_mint":{"entryPoint":22528,"id":38458,"parameterSlots":3,"returnSlots":0},"fun_mintMinimumSupplyReserve":{"entryPoint":22256,"id":38525,"parameterSlots":1,"returnSlots":0},"fun_mulUp":{"entryPoint":14430,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":14104,"id":9554,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":14019,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_queryModeBalanceIncrease":{"entryPoint":14760,"id":38387,"parameterSlots":3,"returnSlots":0},"fun_registerPool":{"entryPoint":18571,"id":26002,"parameterSlots":2,"returnSlots":0},"fun_reloadBalancesAndRates":{"entryPoint":15791,"id":30410,"parameterSlots":2,"returnSlots":0},"fun_setAggregateSwapFeePercentage":{"entryPoint":22990,"id":29701,"parameterSlots":2,"returnSlots":1},"fun_setAggregateYieldFeePercentage":{"entryPoint":23022,"id":29762,"parameterSlots":2,"returnSlots":1},"fun_setBalanceRaw":{"entryPoint":14557,"id":5883,"parameterSlots":2,"returnSlots":1},"fun_setDisableUnbalancedLiquidity":{"entryPoint":null,"id":29393,"parameterSlots":1,"returnSlots":1},"fun_setPauseWindowEndTime":{"entryPoint":null,"id":29931,"parameterSlots":2,"returnSlots":1},"fun_setPoolInitialized":{"entryPoint":null,"id":29244,"parameterSlots":1,"returnSlots":1},"fun_setStaticSwapFeePercentage":{"entryPoint":23058,"id":25045,"parameterSlots":2,"returnSlots":0},"fun_setStaticSwapFeePercentage_29640":{"entryPoint":13314,"id":29640,"parameterSlots":2,"returnSlots":1},"fun_setTokenDecimalDiffs":{"entryPoint":null,"id":29881,"parameterSlots":2,"returnSlots":1},"fun_setupQuery":{"entryPoint":13429,"id":27458,"parameterSlots":0,"returnSlots":0},"fun_shouldCallAfterInitialize":{"entryPoint":null,"id":28046,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeInitialize":{"entryPoint":null,"id":28003,"parameterSlots":1,"returnSlots":1},"fun_spendAllowance":{"entryPoint":14571,"id":38827,"parameterSlots":4,"returnSlots":0},"fun_supplyCredit":{"entryPoint":14495,"id":24430,"parameterSlots":2,"returnSlots":0},"fun_tGet":{"entryPoint":null,"id":6564,"parameterSlots":2,"returnSlots":1},"fun_tGet_6669":{"entryPoint":null,"id":6669,"parameterSlots":3,"returnSlots":1},"fun_tSet":{"entryPoint":23578,"id":6593,"parameterSlots":3,"returnSlots":0},"fun_takeDebt":{"entryPoint":22238,"id":24447,"parameterSlots":2,"returnSlots":0},"fun_toHooksConfig":{"entryPoint":16800,"id":28422,"parameterSlots":2,"returnSlots":1},"fun_toInt256":{"entryPoint":21657,"id":44125,"parameterSlots":1,"returnSlots":1},"fun_toPackedBalance":{"entryPoint":22005,"id":5929,"parameterSlots":2,"returnSlots":1},"fun_toTokenDecimalDiffs":{"entryPoint":22862,"id":29979,"parameterSlots":1,"returnSlots":1},"fun_updateRawAndLiveBalance":{"entryPoint":22161,"id":30517,"parameterSlots":3,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":13577,"id":39838,"parameterSlots":3,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35420":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35423":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35424":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35431":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35434":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35442":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35648":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35668":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_mapping_contract_IERC20_bytes32_of_address_35680":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bytes32_of_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_contract_IERC20_dyn":{"entryPoint":10932,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_onlyVaultDelegateCall":{"entryPoint":11632,"id":25270,"parameterSlots":1,"returnSlots":1},"modifier_onlyVaultDelegateCall_35417":{"entryPoint":10288,"id":25270,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":10214,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":10887,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":1799,"id":null,"parameterSlots":0,"returnSlots":0},"read_from_memoryt_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_reference_type_struct_TokenInfo":{"entryPoint":10969,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IHooks":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"revert_forward":{"entryPoint":10632,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"validator_assert_enum_TokenType":{"entryPoint":1002,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_address":{"entryPoint":763,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":8390,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_enum_SwapKind":{"entryPoint":2102,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_contract_IRateProvider":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_enum_TokenType":{"entryPoint":10957,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint40":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_uint8":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"25259":[{"length":32,"start":10123},{"length":32,"start":12034}],"25262":[{"length":32,"start":1693},{"length":32,"start":11973}],"27740":[{"length":32,"start":4975},{"length":32,"start":13448},{"length":32,"start":14272}],"27745":[{"length":32,"start":8209},{"length":32,"start":21841},{"length":32,"start":21944}],"27750":[{"length":32,"start":5361},{"length":32,"start":21751}],"27755":[{"length":32,"start":5847},{"length":32,"start":6753}],"27760":[{"length":32,"start":5813},{"length":32,"start":6719}],"27806":[{"length":32,"start":17429}],"27808":[{"length":32,"start":1565},{"length":32,"start":12864}]},"linkReferences":{},"object":"60806040526004361015610018575b36612eae57612e86565b5f3560e01c8062fdfa13146102f657806313d21cdf146102f157806313ef8a5d146102ec57806315e32046146102e75780631ba0ae45146102e25780634afbaf5a146102dd5780634d472bdd146102d85780634f037ee7146102d3578063532cec7c146102ce578063535cfd8a146102c9578063590e8145146102c457806367e0e076146102bf5780636844846b146102ba5780636c9bc732146102b557806370600089146102b0578063757d64b3146102ab5780637e361bde146102a6578063809846d1146102a15780638380edb71461029c57806385e0b9991461029757806385f2dbd414610292578063927da1051461028d57806396787092146102885780639e825ff514610283578063a07d60401461027e578063aaabadc514610279578063ace9b89b14610274578063b45090f91461026f578063b4aef0ab1461026a578063ba8a2be014610265578063be7d628a14610260578063c673bdaf1461025b578063c808824714610256578063ca4f280314610251578063ce8630d41461024c578063d2c725e014610247578063db81718714610242578063e1f21c671461023d578063e4dc2aa414610238578063e68010c614610233578063e9ddeb261461022e578063edfa356814610229578063eeec802f14610224578063f29486a11461021f578063f7888aec1461021a5763fbfa77cf0361000e5761276c565b612703565b612669565b6124cc565b612476565b6123ba565b61226a565b612082565b612039565b611ff5565b611fb7565b611ebf565b611e11565b611d69565b611d21565b611ccd565b611b18565b611aee565b611aa2565b611a13565b6119e2565b611527565b6114c5565b611481565b611431565b611403565b611399565b611353565b61127a565b611082565b610f2c565b610edf565b610e9c565b610e54565b610cfe565b610c21565b610b78565b610b14565b610a12565b610930565b6106c1565b61067e565b6105dc565b6105b2565b6104c3565b610353565b6001600160a01b0381160361030c57565b5f80fd5b610104359061031e826102fb565b565b359061031e826102fb565b600319604091011261030c57600435610343816102fb565b90602435610350816102fb565b90565b3461030c5760206103a26001600160a01b0361036e3661032b565b9190610378612ef8565b61038181612f52565b165f526006835260405f20906001600160a01b03165f5260205260405f2090565b5460801c604051908152f35b9081518082526020808093019301915f5b8281106103cd575050505090565b83516001600160a01b0316855293810193928101926001016103bf565b600211156103f457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9060406060928051610432816103ea565b83526001600160a01b0360208201511660208401520151151560408201520190565b9081518082526020808093019301915f5b828110610473575050505090565b90919293826104856001928751610421565b950193929101610465565b9081518082526020808093019301915f5b8281106104af575050505090565b8351855293810193928101926001016104a1565b3461030c57602060031936011261030c576105a46105056004356104e6816102fb565b6104ee6127af565b506104f7612ef8565b61050081612f9d565b612fea565b6040519182916020835280516020840152610530602082015160e060408601526101008501906103ae565b60c061059261057f61056b610557604087015195601f1996878b83030160608c0152610454565b6060870151868a83030160808b0152610490565b6080860151858983030160a08a0152610490565b60a0850151848883030184890152610490565b920151908483030160e0850152610490565b0390f35b5f91031261030c57565b3461030c575f60031936011261030c576105ca612ef8565b602060ff600954166040519015158152f35b3461030c57602060031936011261030c5760806004356105fb816102fb565b610603612ef8565b61060c81612f52565b61061581613201565b6106429291927f000000000000000000000000000000000000000000000000000000000000000082612813565b916001600160a01b038091165f52600160205260405f20541691604051931515845263ffffffff80921660208501521660408301526060820152f35b3461030c575f60031936011261030c5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461030c57602060031936011261030c5760206004356106e0816102fb565b6106e8612ef8565b6001600160a01b038091165f52600e825260405f205416604051908152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff82111761075057604052565b610707565b67ffffffffffffffff811161075057604052565b6060810190811067ffffffffffffffff82111761075057604052565b60e0810190811067ffffffffffffffff82111761075057604052565b610140810190811067ffffffffffffffff82111761075057604052565b90601f601f19910116810190811067ffffffffffffffff82111761075057604052565b6040519061031e82610785565b6040519061031e82610734565b6040519061031e826107a1565b60405190610160820182811067ffffffffffffffff82111761075057604052565b6040519061031e82610769565b6002111561030c57565b359061031e82610836565b67ffffffffffffffff81116107505760051b60200190565b9080601f8301121561030c57602090823561087d8161084b565b9361088b60405195866107be565b81855260208086019260051b82010192831161030c57602001905b8282106108b4575050505090565b813581529083019083016108a6565b67ffffffffffffffff811161075057601f01601f191660200190565b9291926108eb826108c3565b916108f960405193846107be565b82948184528183011161030c578281602093845f960137010152565b9080601f8301121561030c57816020610350933591016108df565b3461030c5760031960408136011261030c5760043561094e816102fb565b6024359067ffffffffffffffff9283831161030c5760e090833603011261030c576109776107e1565b9061098483600401610840565b825260248301356020830152604483013584811161030c576109ac9060043691860101610863565b604083015260648301356060830152608483013560808301526109d160a48401610320565b60a083015260c483013593841161030c576109f8610a029360046105a49636920101610915565b60c0830152612830565b6040519081529081906020820190565b3461030c57602060031936011261030c57600435610a2f816102fb565b610a37612ef8565b610a4081612f9d565b610a8d60206080610a5084612fea565b0151604051809381927f984de9e8000000000000000000000000000000000000000000000000000000008352604060048401526044830190610490565b6001602483015203816001600160a01b0386165afa8015610b0f576105a492610a02925f92610ada575b50610ad3906001600160a01b03165f52601160205260405f2090565b54906133de565b610ad3919250610b019060203d602011610b08575b610af981836107be565b81019061295c565b9190610ab7565b503d610aef565b612988565b3461030c57602060031936011261030c576001600160a01b03600435610b39816102fb565b610b41612ef8565b610b4a81612f52565b165f525f6020526020600160405f2054811c166040519015158152f35b906020610350928181520190610490565b3461030c57602060031936011261030c576105a46080610bae600435610b9d816102fb565b610ba5612ef8565b61050081612f52565b0151604051918291602083526020830190610490565b9181601f8401121561030c5782359167ffffffffffffffff831161030c576020838186019501011161030c57565b602060031982011261030c576004359067ffffffffffffffff821161030c57610c1d91600401610bc4565b9091565b6020610c36610c2f36610bf2565b36916108df565b818151910120604051908152f35b9081518082526020808093019301915f5b828110610c63575050505090565b83516001600160a01b031685529381019392810192600101610c55565b9290610c989095949295608085526080850190610c44565b6020908481036020860152602080885192838152019701915f5b828110610ce1575050505084610cd391846103509697036040860152610490565b916060818403910152610490565b9091929782610cf36001928b51610421565b990193929101610cb2565b3461030c57602060031936011261030c57600435610d1b816102fb565b610d23612ef8565b610d2c81612f52565b6001600160a01b0381165f52600560205260405f20610d64610d5f836001600160a01b03165f52600360205260405f2090565b612993565b90815192610d7184612a08565b93610d7b81612a56565b91610d8582612a56565b935f5b838110610da057604051806105a488888c8c85610c80565b80610db560019284905f5260205260405f2090565b54610e0c610e078a610df2610de586610ddf8b6001600160a01b03165f52600460205260405f2090565b93612ab4565b516001600160a01b031690565b6001600160a01b03165f5260205260405f2090565b612ad9565b610e16838c612ab4565b52610e21828b612ab4565b506fffffffffffffffffffffffffffffffff8116610e3f8389612ab4565b5260801c610e4d8289612ab4565b5201610d88565b3461030c57602060031936011261030c576020600435610e73816102fb565b610e7b612ef8565b6001600160a01b038091165f52600e825260405f2054161515604051908152f35b3461030c57602060031936011261030c576020610ed4600435610ebe816102fb565b610ec6612ef8565b610ecf81612f52565b613201565b506040519015158152f35b3461030c57604060031936011261030c576001600160a01b03600435610f04816102fb565b16805f525f602052610f1c60243560405f2054613402565b905f525f60205260405f20555f80f35b3461030c575f80610f3c36610bf2565b90610f45613475565b610f4d612ef8565b8160405192839283378101838152039082335af1610f69612b18565b908015610fb65790610f7f81610fb29333613509565b506040519182917f5ab64fb800000000000000000000000000000000000000000000000000000000835260048301612465565b0390fd5b506004815110611035577f5ab64fb8000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000602083015116036134fa577f28f95541000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fa7285689000000000000000000000000000000000000000000000000000000005f5260045ffd5b909161107461035093604084526040840190610490565b916020818403910152610490565b3461030c57602060031936011261030c5760043561109f816102fb565b6110a7612ef8565b6110b081612f52565b6001600160a01b038082165f525f60205260405f2054600360205260405f209160405180938491602082549182815201915f5260205f20935f905b82821061117a57505050611101925003836107be565b61110d82518092613595565b9161111782612a56565b935f5b83811061113057604051806105a488888361105d565b600190611169611164610e07611157866001600160a01b03165f52600460205260405f2090565b610df2610de5868a612ab4565b6135e7565b6111738289612ab4565b520161111a565b85546001600160a01b03908216168452600195860195889550602090940193909101906110eb565b60c060031982011261030c576004356111ba816102fb565b916024356111c7816102fb565b9167ffffffffffffffff9060443582811161030c578160238201121561030c5780600401356111f58161084b565b9161120360405193846107be565b8183526020916024602085019160051b8301019185831161030c57602401905b82821061126157505050509260643583811161030c578261124691600401610863565b926084359260a43591821161030c5761035091600401610915565b838091833561126f816102fb565b815201910190611223565b3461030c57611319602061128d366111a2565b909161129a9793976136c3565b6113056112f2604051998a9889987fba8a2be0000000000000000000000000000000000000000000000000000000008a526001600160a01b0380921660048b015216602489015260c0604489015260c4880190610c44565b6003199283888303016064890152610490565b9260848601528483030160a4850152612440565b03815f305af18015610b0f57611334575b611332613718565b005b61134c9060203d602011610b0857610af981836107be565b505f61132a565b3461030c575f60031936011261030c5761136b612ef8565b60207f00000000000000000000000000000000000000000000000000000000000000005c6040519015158152f35b3461030c5760206fffffffffffffffffffffffffffffffff6113f96001600160a01b036113c53661032b565b91906113cf612ef8565b6113d881612f52565b165f526006845260405f20906001600160a01b03165f5260205260405f2090565b5416604051908152f35b3461030c575f60031936011261030c5761141b612ef8565b60206001600160a01b03600a5416604051908152f35b3461030c57606060031936011261030c576020611479600435611453816102fb565b60243561145f816102fb565b6044359161146c836102fb565b611474612ef8565b61373d565b604051908152f35b3461030c57602060031936011261030c576001600160a01b036004356114a6816102fb565b6114ae612ef8565b165f526008602052602060405f2054604051908152f35b3461030c57602060031936011261030c5760206114796004356114e7816102fb565b6114ef612ef8565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03165f5260205260405f205c90565b3461030c57608060031936011261030c57600435611544816102fb565b602435611550816102fb565b6044359060643567ffffffffffffffff811161030c57611574903690600401610863565b61157c612ef8565b6115846137be565b61158c6136c3565b61159584612f9d565b6001600160a01b039384811691825f526020905f6020526115be60405f205460019060031c1690565b156119b6576115de836001600160a01b03165f52600560205260405f2090565b966115e7612b47565b92611606610d5f866001600160a01b03165f52600360205260405f2090565b808552519661161b6040860198808a52612a56565b97608086019889525f5b815181101561166e578061165c6116466001938f905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b611667828d51612ab4565b5201611625565b50899896979861169c8189516116958c6001600160a01b03165f52601160205260405f2090565b549061380f565b996116a78351612a56565b956060890196875261170e8b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b151560a08a018181529590611989575b5f5b855181101561186e5761174a818f8a8e838e61173c8e51151590565b61181e575b50505050612ab4565b51611755828c612ab4565b51116117b557808c8f826117a88f826117ae9461178f61177e610de560019b6117949651612ab4565b6117888484612ab4565b519061389f565b612ab4565b519351936117a28386612ab4565b51612bb7565b92612ab4565b5201611720565b8d8a6117de836117d78f956117d1610de58261181b9951612ab4565b95612ab4565b5192612ab4565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b5ffd5b61183d61184f9361185a956118338589612ab4565b519101519061385e565b611848838351612ab4565b5251612ab4565b516117a28484612ab4565b6118648383612ab4565b528a8e838e611741565b508a95509187918d938d611893816001600160a01b03165f52600560205260405f2090565b965f5b89518110156118e457806118cb8c6118c4836118bc6001968f905f5260205260405f2090565b549251612ab4565b51906138dd565b6118dd828c905f5260205260405f2090565b5501611896565b6105a4885f89897ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a58a8a6119626119508c6119398d611925813388866138eb565b61192d613986565b611979575b85836139eb565b6001600160a01b03165f52601160205260405f2090565b54955188604051948594169784612bc4565b0390a461196d613718565b60405191829182610b67565b6119848187856139a8565b611932565b6119ac6119a68d6001600160a01b03165f525f60205260405f2090565b546132a8565b60208b015261171e565b837fef029adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b3461030c575f60031936011261030c576119fa612ef8565b60206001600160a01b0360095460081c16604051908152f35b3461030c57602060031936011261030c576020611a98600435611a35816102fb565b611a3d612ef8565b7f00000000000000000000000000000000000000000000000000000000000000005c7f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b6040519015158152f35b3461030c57602060031936011261030c576001600160a01b03600435611ac7816102fb565b611acf612ef8565b611ad881612f52565b165f525f602052602061147960405f20546132a8565b3461030c575f60031936011261030c57611b06612ef8565b60206001600754166040519015158152f35b3461030c57611b26366111a2565b9291611b30612ef8565b611b386137be565b611b4186612f52565b611b496136c3565b611b5286613bb6565b611b5b86612fea565b92611b6a8451600190811c1690565b611c98579183916105a4979593611b8c6020611bdb9997015151835190613c04565b60c08401958651611ba460a087019182519086613c33565b9789611bb5885160019060081c1690565b611c27575b8994925087915092611bcd969593613e1c565b94859151600190600a1c1690565b611bea575b8590610a02613718565b611c18611c0b611c1e956001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b926140d4565b5f808083611be0565b91611c8b91611c5d899b8b611c57611c0b611bcd9c9b999a986001600160a01b03165f52600260205260405f2090565b91613cd9565b611c81611c7b8d6001600160a01b03165f52600560205260405f2090565b8a613daf565b5190519084613c33565b9781939294955089611bba565b7f218e3747000000000000000000000000000000000000000000000000000000005f526001600160a01b03871660045260245ffd5b3461030c57602060031936011261030c576001600160a01b03600435611cf2816102fb565b611cfa612ef8565b611d0381612f52565b165f525f6020526020600160405f205460031c166040519015158152f35b3461030c57602060031936011261030c576001600160a01b03600435611d46816102fb565b611d4e612ef8565b165f525f6020526020600160405f2054166040519015158152f35b3461030c57604060031936011261030c5760243567ffffffffffffffff811161030c57611d9a903690600401610bc4565b611da2612ef8565b611dab33612f52565b80604051926020845281602085015260408401375f604082840101527f4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d8585642860043592604081601f19601f339601168101030190a3005b906020610350928181520190610c44565b3461030c57602060031936011261030c57600435611e2e816102fb565b611e36612ef8565b611e3f81612f52565b6001600160a01b038091165f52600360205260405f20906040519081602084549182815201935f5260205f20915f905b828210611e92576105a485611e86818903826107be565b60405191829182611e00565b909192946001611eb4819284895416906001600160a01b036020921681520190565b960193920190611e6f565b3461030c57602060031936011261030c57610160611f24600435611ee2816102fb565b611eea612bef565b50611ef3612ef8565b611efc81612f52565b6001600160a01b038091165f525f60205260405f205490600260205260405f205416906141a0565b611fb5604051809280511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565bf35b3461030c575f60031936011261030c5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b3461030c575f60031936011261030c5761200d612ef8565b60207f00000000000000000000000000000000000000000000000000000000000000005c604051908152f35b3461030c57606060031936011261030c57612077600435612059816102fb565b602435612065816102fb565b61206d612ef8565b60443591336142de565b602060405160018152f35b3461030c57602060031936011261030c576001600160a01b036004356120a7816102fb565b6120af612ef8565b165f526011602052602060405f2054604051908152f35b8015150361030c57565b6084359061031e826120c6565b6064359063ffffffff8216820361030c57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c606091011261030c5760a490565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc608091011261030c5761012490565b906101a060031983011261030c57600435612169816102fb565b9160243567ffffffffffffffff811161030c578160238201121561030c5780600401356121958161084b565b916040916121a660405194856107be565b8084526020906024602086019160071b8401019286841161030c57602401905b83821061220457505050505091604435916121df6120dd565b916121e86120d0565b916121f2816120f0565b916103506121fe610310565b9261211f565b60808288031261030c5782608091865161221d81610734565b8435612228816102fb565b81528285013561223781610836565b8382015287850135612248816102fb565b888201526060808601359061225c826120c6565b8201528152019101906121c6565b3461030c576122783661214f565b90969594926122856136c3565b303b1561030c576122ef975f9760406123569561234b9463ffffffff6101a49a84519e8f9d8e9d8e7feeec802f0000000000000000000000000000000000000000000000000000000081526001600160a01b03809a1660048201526101a060248201520190612c52565b9a60448d01521660648b0152151560848a015282813561230e816102fb565b1660a48a0152826020820135612323816102fb565b1660c48a01520135612334816102fb565b1660e48701526001600160a01b0316610104860152565b610124840190612cc1565b038183305af18015610b0f5761236e57611332613718565b8061237b61238192610755565b806105a8565b5f61132a565b61031e909291926060810193604090816001600160a01b0391828151168552826020820151166020860152015116910152565b3461030c57602060031936011261030c576105a46004356123da816102fb565b6123e26129ea565b506123eb612ef8565b6123f481612f52565b6001600160a01b038091165f52600160205260405f209060026040519261241a84610769565b828154168452826001820154166020850152015416604082015260405191829182612387565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b906020610350928181520190612440565b3461030c576105a46124b85f8061249f61248f36610bf2565b612497613475565b610c2f612ef8565b60208151910182335af16124b1612b18565b9033613509565b604051918291602083526020830190612440565b3461030c5763ffffffff6124df3661214f565b9390946124f0989298979697612ef8565b6124f86136c3565b61250061440e565b6040519761250d89610785565b885260208801521660408601521515606085015260608536031261030c576125896125909261132a96604080519161254483610769565b803561254f816102fb565b8352602081013561255f816102fb565b6020840152013561256f816102fb565b604082015260808701526001600160a01b031660a0860152565b3690612d10565b60c083015261488b565b61031e909291926101806101a08201946125db8382516060809180511515845260208101511515602085015260408101511515604085015201511515910152565b60208101516080840152604081015160a0840152606081015160c0840152612611608082015160e085019064ffffffffff169052565b60a08101519061262c610100928386019063ffffffff169052565b61266060c082015192612646610120948588019015159052565b60e083015115156101408701528201511515610160860152565b01511515910152565b3461030c57602060031936011261030c576105a46126f760043561268c816102fb565b5f61012060405161269c816107a1565b6040516126a881610734565b83815283602082015283604082015283606082015281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201520152612d70565b6040519182918261259a565b3461030c57604060031936011261030c576020612763600435612725816102fb565b6001600160a01b036024359161273a836102fb565b612742612ef8565b165f52600f835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461030c575f60031936011261030c5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604051906127bc82610785565b815f815260c060609182602082015282604082015282808201528260808201528260a08201520152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b91909163ffffffff8080941691160191821161282b57565b6127e6565b6128ad9161283c612ef8565b61284582612f9d565b6001600160a01b039081831690815f525f602052604093849361286a855f20546132a8565b935f526002602052845f205416918451968794859384937fa0e8f5ac000000000000000000000000000000000000000000000000000000008552600485016132f5565b03915afa918215610b0f575f915f9361292a575b50501561290257670de0b5cad2bef00081116128da5790565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b61294d935080919250903d10612955575b61294581836107be565b8101906132d6565b905f806128c1565b503d61293b565b9081602091031261030c575190565b91906020612983600192604086526040860190610490565b930152565b6040513d5f823e3d90fd5b90604051918281549182825260209260208301915f5260205f20935f905b8282106129c75750505061031e925003836107be565b85546001600160a01b0316845260019586019588955093810193909101906129b1565b604051906129f782610769565b5f6040838281528260208201520152565b90612a128261084b565b612a1f60405191826107be565b828152601f19612a2f829461084b565b01905f5b828110612a3f57505050565b602090612a4a6129ea565b82828501015201612a33565b90612a608261084b565b612a6d60405191826107be565b828152601f19612a7d829461084b565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051821015612ac85760209160051b010190565b612a87565b612ad6826103ea565b52565b90604051612ae681610769565b604060ff829454818116612af9816103ea565b84526001600160a01b038160081c16602085015260a81c161515910152565b3d15612b42573d90612b29826108c3565b91612b3760405193846107be565b82523d5f602084013e565b606090565b6040519060c0820182811067ffffffffffffffff821117610750576040525f60a08360608152826020820152826040820152606080820152606060808201520152565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0820191821161282b57565b9190820391821161282b57565b91612be19061035094928452606060208501526060840190610490565b916040818403910152610490565b60405190610160820182811067ffffffffffffffff821117610750576040525f610140838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201520152565b9081518082526020808093019301915f5b828110612c71575050505090565b9091929382608060019287516001600160a01b0380825116835284820151612c98816103ea565b838601526040828101519091169083015260609081015115159082015201950193929101612c63565b606080918035612cd0816120c6565b151584526020810135612ce2816120c6565b151560208501526040810135612cf7816120c6565b151560408501520135612d09816120c6565b1515910152565b919082608091031261030c57604051612d2881610734565b60608082948035612d38816120c6565b84526020810135612d48816120c6565b60208501526040810135612d5b816120c6565b6040850152013591612d6c836120c6565b0152565b612d9b90612d7c612ef8565b612d8581612f52565b6001600160a01b03165f525f60205260405f2090565b546103506001612daa836132a8565b92612e53612db782615373565b612e46612dc384615396565b64ffffffffff85605a1c169063ffffffff86612ddd608290565b1c1693612de86107ee565b600488901c89161515815299600588901c8916151560208c0152600688901c8916151560408c0152600788901c8916151560608c0152612e266107fb565b9a8b5260208b015260408a0152606089015264ffffffffff166080880152565b63ffffffff1660a0860152565b808216151560c085015280821c8216151560e0850152600281901c8216151561010085015260031c161515610120830152565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b34612e8657365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e15612ef4573d5ff35b3d5ffd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003612f2a57565b7f9fd25b36000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b0316805f525f602052600160405f20541615612f725750565b7f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615612fbf5750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b906001600160a01b03612ffb6127af565b92165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f2093845493875261303660208801956153b9565b855261304184612a08565b9181880192835261305185612a56565b916060890192835261306286612a56565b9460809560808b0152613076878b51613595565b60c08b015261308487612a56565b60a08b019081528a5191600199600184811c1693846131ed575b50836131db575b8c5f5b8b81106130be5750505050505050505050505050565b8a8d92828c8c8c613105846130f1816130e3610e078f8f610de585610df29251612ab4565b94905f5260205260405f2090565b549451836130ff8383612ab4565b52612ab4565b5061310f816135e7565b61311a858d51612ab4565b526131386fffffffffffffffffffffffffffffffff84168587615691565b878d8d156131ce57820151151591826131b0575b5050613161575b50505050505b018d906130a8565b826131849261317b826131748851615396565b9451612ab4565b51961c85615bac565b9283613194575b8e93508c613153565b6131a7936131a191612bb7565b91615691565b5f8f828261318b565b909150516131bd816103ea565b6131c6816103ea565b14875f61314c565b5050505050505050613159565b8c5190935060031c60011615926130a5565b6131f8919450615396565b1515925f61309e565b6001600160a01b03165f525f60205260405f20549060018260021c1663ffffffff809361322c608290565b1c16928161323957509190565b90506132657f000000000000000000000000000000000000000000000000000000000000000084612813565b164211159190565b60ff60019116019060ff821161282b57565b9060058202918083046005149015171561282b57565b8181029291811591840414171561282b57565b62ffffff9060121c1664174876e8009081810291818304149015171561282b5790565b519061031e826120c6565b919082604091031261030c57602082516132ef816120c6565b92015190565b612d6c61339560409396959496606084528051613311816103ea565b60608501526020810151608085015260c061333b8683015160e060a0880152610140870190610490565b91606081015182870152608081015160e08701526001600160a01b0360a08201511661010087015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa085830301610120860152612440565b6001600160a01b039096166020830152565b81156133b1570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90670de0b6b3a76400009182810292818404149015171561282b57610350916133a7565b90670de0b5cad2bef00081116128da5764174876e80090048060181c61344d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff9060121b91161790565b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b326134d2576001600754166134aa5760017f00000000000000000000000000000000000000000000000000000000000000005d565b7f7a198886000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b80511561103557805190602001fd5b90613546575080511561351e57805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061358c575b613557575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561354f565b9064ffffffffff6135a582612a56565b92605a1c165f5b8281106135b95750505090565b601f826135c58361327f565b1c1690604d821161282b57600191600a0a6135e08287612ab4565b52016135ac565b80516135f2816103ea565b6135fb816103ea565b8061360e575050670de0b6b3a764000090565b8061361a6001926103ea565b0361369b5760206136456136398260049401516001600160a01b031690565b6001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa908115610b0f575f91613682575090565b610350915060203d602011610b0857610af981836107be565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6136f0576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b6001600160a01b0392918381168484160361377a57505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b6137ba936137a492165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b906001600160a01b03165f5260205260405f2090565b5490565b7f00000000000000000000000000000000000000000000000000000000000000005c156137e757565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b929161381b8451612a56565b935f5b81518110156138585780613847856138428661383c60019688612ab4565b51613295565b6133a7565b6138518289612ab4565b520161381e565b50505050565b9061386891613295565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b906138a990615499565b907f8000000000000000000000000000000000000000000000000000000000000000821461282b5761031e915f03906154ee565b906103509160801c906155f5565b91909392936138fb82828561373d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810361392b575b505050509050565b808611613949579461393f949503926142de565b805f808080613923565b85906001600160a01b03847ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b3215806139905790565b506001600754161590565b9190820180921161282b57565b90326134d2576001600160a01b036139dc92165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b805491820180921161282b5755565b90916001600160a01b03808416928315613b8157613a1e856137a4836001600160a01b03165f52600f60205260405f2090565b54808411613b4457839003613a48866137a4846001600160a01b03165f52600f60205260405f2090565b55613a6e83613a68836001600160a01b03165f52601160205260405f2090565b54612bb7565b613a7781615659565b613a92826001600160a01b03165f52601160205260405f2090565b551690813b1561030c576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f91613b2c91868180606481015b038183895af1613b31575b506040519081529081906020820190565b0390a4565b8061237b613b3e92610755565b5f613b1b565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b613bbe61440e565b613bc781613201565b50613bcf5750565b6001600160a01b03907fd971f597000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b03613c0b57565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908251918151815181851491821592613cb9575b5050613c0b57613c5783612a56565b935f5b848110613c6957505050505090565b80670de0b6b3a7640000613ca7613c8260019486612ab4565b51613ca2613c90858a612ab4565b51613c9b868a612ab4565b5192613295565b613295565b04613cb28289612ab4565b5201613c5a565b141590505f80613c48565b9081602091031261030c5751610350816120c6565b90613d3d92613d2b5f6001600160a01b03602095604051978896879586937f1c149e28000000000000000000000000000000000000000000000000000000008552604060048601526044850190610490565b90600319848303016024850152612440565b0393165af1908115610b0f575f91613d80575b5015613d5857565b7f60612925000000000000000000000000000000000000000000000000000000005f5260045ffd5b613da2915060203d602011613da8575b613d9a81836107be565b810190613cc4565b5f613d50565b503d613d90565b60208082015151925f5b848110613dc7575050505050565b600190613e166fffffffffffffffffffffffffffffffff6040613df6613df085838b0151612ab4565b516135e7565b613e048560a08b0151612ab4565b52835f528587525f2054168287615691565b01613db9565b929195969496613e3d846001600160a01b03165f52600560205260405f2090565b955f5b60208901518051821015613f1b57610de582613e5b92612ab4565b613e6b613639610de58489612ab4565b6001600160a01b038216908103613ec7575090613e95600192613e8e838b612ab4565b51906156de565b613eae8b613ea7836117d7818d612ab4565b51906155f5565b613ec0828b905f5260205260405f2090565b5501613e40565b61181b9088613edc613639610de5878c612ab4565b7fffe261a1000000000000000000000000000000000000000000000000000000005f526001600160a01b03918216600452811660245216604452606490565b50509694919250969450613f5384517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd600291161790565b808552613f70846001600160a01b03165f525f60205260405f2090565b556001600160a01b0392613fb6602085831697604051809381927f984de9e80000000000000000000000000000000000000000000000000000000083526004830161296b565b03818a5afa8015610b0f57613fdb915f916140b5575b50613fd681615659565b612b8a565b97613fe5826156f0565b613ff0898584615800565b808910614085575092859261405c7fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca8719361404d602061404360019a996001600160a01b03165f52601160205260405f2090565b5498015151612a56565b90604051948594169784612bc4565b0390a47fcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f35f80a2565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600489905260245260445ffd5b6140ce915060203d602011610b0857610af981836107be565b5f613fcc565b926141275f6001600160a01b03602095949661413e604051988997889687947f38be241d000000000000000000000000000000000000000000000000000000008652606060048701526064860190610490565b916024850152600319848303016044850152612440565b0393165af1908115610b0f575f91614181575b501561415957565b7f0f23dbc6000000000000000000000000000000000000000000000000000000005f5260045ffd5b61419a915060203d602011613da857613d9a81836107be565b5f614151565b906141a9612bef565b5060ff60018084836141bb600c61326d565b6141c49061326d565b161c168185846141d4600c61326d565b6141dd9061326d565b6141e69061326d565b161c16908286856141f7600c61326d565b6142009061326d565b6142099061326d565b6142129061326d565b161c1692808786614223600c61326d565b61422c9061326d565b6142359061326d565b61423e9061326d565b6142479061326d565b161c16948188818184600c161c1692600c6142619061326d565b161c169161426d610808565b60098a901c82161515815298600881901c8216151560208b0152600a81901c8216151560408b0152600b1c161515606089015215156080880152151560a0870152151560c0860152151560e0850152151561010084015215156101208301526001600160a01b031661014082015290565b9290916001600160a01b03928381169384156143d9578083169586156143a45784614322856137a4866137a4866001600160a01b03165f52601060205260405f2090565b551692833b1561030c576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a6191613b2c915f818060648101613b10565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164211158061446c575b61444457565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c1661443e565b90805190614487826103ea565b614490826103ea565b82546020820151604092909201517fffffffffffffffffffff0000000000000000000000000000000000000000000090911660ff939093169290921760089190911b74ffffffffffffffffffffffffffffffffffffffff00161790151560a81b75ff00000000000000000000000000000000000000000016179055565b9081602091031261030c575160ff8116810361030c5790565b8054680100000000000000008110156107505760018101808355811015612ac8576001600160a01b03915f5260205f200191167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b815181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0391821617825561031e92600291906040906146028360208301511660018701906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b0151169101906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b919082604091031261030c576020825192015190565b94939161031e93606092614682926001600160a01b03809216895216602088015260e0604088015260e0870190612c52565b9401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b908161014091031261030c576146c46107fb565b906146ce816132cb565b82526146dc602082016132cb565b60208301526146ed604082016132cb565b60408301526146fe606082016132cb565b606083015261470f608082016132cb565b608083015261472060a082016132cb565b60a083015261473160c082016132cb565b60c083015261474260e082016132cb565b60e08301526101006147558183016132cb565b908301526147676101208092016132cb565b9082015290565b91969593946147d061031e9663ffffffff6102209661479861485e966102a0808a52890190612c52565b9b60208801521660408601526060850190604090816001600160a01b0391828151168552826020820151166020860152015116910152565b60c083019080511515825260208082015115159083015260408082015115159083015260608082015115159083015260808082015115159083015260a08082015115159083015260c08082015115159083015260e0808201511515908301526101008082015115159083015261012080820151151590830152610140908101516001600160a01b0316910152565b01906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b906148b06148a9836001600160a01b03165f525f60205260405f2090565b5460011690565b61533e578051516002811061531657600881116152ee579291906148d384612a56565b5f945f5b818110614fe15750506149a3929394506080820191614911835161490c876001600160a01b03165f52600160205260405f2090565b614582565b614926613639600a546001600160a01b031690565b6040809161493f828751016001600160a01b0390511690565b9061494d6060860151151590565b83517f77ff76e70000000000000000000000000000000000000000000000000000000081526001600160a01b03808c166004830152909316602484015215156044830152909687919082905f9082906064820190565b03925af18015610b0f575f955f91614fae575b50614acf60c0840191614aca614a99845197614a82614a7c6149de8b51151560041b60011790565b9a6060614a4c614a1b60209e8f85015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf9060051b91161790565b8c84015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9060061b91161790565b91015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f9060071b91161790565b9161594e565b90605a9164ffffffffff908116831b921b19161790565b98614ac58688019a614aaf8c5163ffffffff1690565b9060829163ffffffff908116831b921b19161790565b6159ce565b6159ee565b9360a08401906001600160a01b03958987614af185516001600160a01b031690565b1680614bf2575b5090614b168193926001600160a01b03165f525f60205260405f2090565b5582516001600160a01b03166001600160a01b0316614b468b6001600160a01b03165f52600260205260405f2090565b90614b7e91906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b8501948551614b8d908b615a12565b519451975163ffffffff16965191516001600160a01b03166001600160a01b0316614bb7916141a0565b9151925195869533991697614bcc958761476e565b037fbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad91a3565b614c3491849189515f8951938b51968795869485937f0b89f1820000000000000000000000000000000000000000000000000000000085523360048601614650565b03925af1908115610b0f575f91614f91575b5015614f7c57614c6361363961363985516001600160a01b031690565b90855180927fd77153a70000000000000000000000000000000000000000000000000000000082528160046101409586935afa928315610b0f575f93614f4d575b50508151151580614f33575b614ee05790614eae610120614d1a614e7b614e49614e17614de5614db3614d818e614d56614d4d8c8f614ed99f90614d1a614d2292614cef8551151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff9060091b91161790565b920151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff9060081b91161790565b918c0151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff90600a1b91161790565b60608a015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff90600b1b91161790565b608089015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefff90600c1b91161790565b60a088015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff90600d1b91161790565b60c087015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfff90600e1b91161790565b60e086015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff90600f1b91161790565b61010085015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff9060101b91161790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff9060111b91161790565b895f614af8565b61181b8b614ef586516001600160a01b031690565b7ffa93d814000000000000000000000000000000000000000000000000000000005f526001600160a01b039081166004521660245233604452606490565b50614f47614f42865151151590565b151590565b15614cb0565b614f6d929350803d10614f75575b614f6581836107be565b8101906146b0565b905f80614ca4565b503d614f5b565b61181b8a614ef585516001600160a01b031690565b614fa89150833d8511613da857613d9a81836107be565b5f614c46565b905081614fd19296503d8711614fda575b614fc981836107be565b81019061463a565b9490945f6149b6565b503d614fbf565b614fec818551612ab4565b5196614fff88516001600160a01b031690565b906001600160a01b0380831691821580156152e3575b6152bb571680821061529357811461525e57604090818a01998a51615040906001600160a01b031690565b6001600160a01b0316159060209b8c8201908d82519161505f836103ea565b516001600160a01b03169360600193845161507990151590565b91615082610829565b9361508d9085612acd565b6001600160a01b0390911690830152151581870152866150be8d6001600160a01b03165f52600460205260405f2090565b906150d991906001600160a01b03165f5260205260405f2090565b906150e39161447a565b80516150ee816103ea565b6150f7816103ea565b61520f5750811591615204575b5061369b5789915b51998a80927f313ce56700000000000000000000000000000000000000000000000000000000825260049c8d915afa918215610b0f575f926151d7575b505060129060ff9180838316115f14615183578a7f686d3607000000000000000000000000000000000000000000000000000000005f525ffd5b60019495969798999a50906151a79291031661519f8588612ab4565b9060ff169052565b6151cb816151c6896001600160a01b03165f52600360205260405f2090565b614526565b969594939291016148d7565b6151f69250803d106151fd575b6151ee81836107be565b81019061450d565b5f80615149565b503d6151e4565b51151590505f615104565b600191505161521d816103ea565b615226816103ea565b036152365761369b57899161510c565b7fa1e9dd9d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4f4b634e000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b7f6e8f1947000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b508189168314615015565b7f707bdf58000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f5ed4ba8f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdb771c80000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b62ffffff90602a1c1664174876e8009081810291818304149015171561282b5790565b62ffffff9060421c1664174876e8009081810291818304149015171561282b5790565b90604051918281549182825260209260208301915f5260205f20935f905b8282106153ed5750505061031e925003836107be565b85546001600160a01b0316845260019586019588955093810193909101906153d7565b908060181c61344d57602a1b9062ffffff602a1b19161790565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b906101008084101561542a5783810390811161282b578060ff105f14615494575060ff5b60181161542a578060181c61344d5762ffffff90831b921b19161790565b615476565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116154c35790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156155f1577f0000000000000000000000000000000000000000000000000000000000000000916155338184906001600160a01b03165f5260205260405f205c90565b8281019283125f821290801582169115161761282b57826155a757507f000000000000000000000000000000000000000000000000000000000000000092835c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811161282b5761031e945d615c1a565b156155b6575b61031e92615c1a565b7f000000000000000000000000000000000000000000000000000000000000000092835c6001810180911161282b5761031e945d92506155ad565b5050565b906fffffffffffffffffffffffffffffffff80831190811561564f575b506156275760801b90810180911161282b5790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f615612565b620f424081106156665750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b91906080670de0b6b3a76400006156d5612ad694806156b48660608a0151612ab4565b52613ca26156c68660c08a0151612ab4565b51613c9b8760a08b0151612ab4565b04930151612ab4565b6156ea61031e92615499565b906154ee565b61570b816001600160a01b03165f52601160205260405f2090565b908154620f42409081810180911161282b576001600160a01b039355615742826001600160a01b03165f52600f60205260405f2090565b5f805260205260405f20908154019055165f80827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f6040518061578c8190620f4240602083019252565b0390a4803b1561030c575f60405180927f23de66510000000000000000000000000000000000000000000000000000000082528183816157e26004820190620f4240604060608401935f81525f60208201520152565b03925af18015610b0f576157f35750565b8061237b61031e92610755565b916001600160a01b038083169384156159195761583883615832836001600160a01b03165f52601160205260405f2090565b5461399b565b615857856137a4846001600160a01b03165f52600f60205260405f2090565b84815401905561586681615659565b615881826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f604051806158ba87829190602083019252565b0390a4823b1561030c576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b0390931660248201526044810191909152918290818381606481016157e2565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b5f9190825b81518410156159c2576159668483612ab4565b5160ff916159738661327f565b916101008084101561542a5783810390811161282b57808510156159bd5750835b600590811161542a57816007911c1661344d57600193601f9116831b921b191617930192615953565b615994565b64ffffffffff16925050565b670de0b5cad2bef00082116128da5764174876e800610350920490615410565b90670de0b5cad2bef00081116128da576103509164174876e8006042920490615452565b906001600160a01b038216916040517fce20ece70000000000000000000000000000000000000000000000000000000081526020908181600481885afa908115610b0f575f91615b8f575b508310615b67576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481885afa918215610b0f575f92615b4a575b50508211615b22578181615b0c615af57f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a195615aef615b1d966001600160a01b03165f525f60205260405f2090565b54613402565b916001600160a01b03165f525f60205260405f2090565b556040519081529081906020820190565b0390a2565b7f7f47834b000000000000000000000000000000000000000000000000000000005f5260045ffd5b615b609250803d10610b0857610af981836107be565b5f80615aa0565b7fbfb20688000000000000000000000000000000000000000000000000000000005f5260045ffd5b615ba69150823d8411610b0857610af981836107be565b5f615a5d565b9093925f94615bbf846080850151612ab4565b51818111615bcf575b5050505050565b615c0f959650615c099392615c0292615be8920361385e565b9360a0615bf98260c0860151612ab4565b51930151612ab4565b5190613295565b906133de565b905f80808080615bc8565b906001600160a01b03165f5260205260405f205d56fea26469706673582212204e38198ecf1b26f9c0f7d2efa0b7525460ef8771c838c3a90520bba7b26bcab764736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x2EAE JUMPI PUSH2 0x2E86 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xFDFA13 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x13D21CDF EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0x13EF8A5D EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0x15E32046 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x1BA0AE45 EQ PUSH2 0x2E2 JUMPI DUP1 PUSH4 0x4AFBAF5A EQ PUSH2 0x2DD JUMPI DUP1 PUSH4 0x4D472BDD EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0x4F037EE7 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x532CEC7C EQ PUSH2 0x2CE JUMPI DUP1 PUSH4 0x535CFD8A EQ PUSH2 0x2C9 JUMPI DUP1 PUSH4 0x590E8145 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x67E0E076 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x6844846B EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x6C9BC732 EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x70600089 EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x757D64B3 EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0x7E361BDE EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x809846D1 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x8380EDB7 EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0x85E0B999 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x85F2DBD4 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x927DA105 EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x96787092 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x9E825FF5 EQ PUSH2 0x283 JUMPI DUP1 PUSH4 0xA07D6040 EQ PUSH2 0x27E JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xACE9B89B EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0xB45090F9 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xB4AEF0AB EQ PUSH2 0x26A JUMPI DUP1 PUSH4 0xBA8A2BE0 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xBE7D628A EQ PUSH2 0x260 JUMPI DUP1 PUSH4 0xC673BDAF EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xC8088247 EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0xCA4F2803 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xCE8630D4 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xDB817187 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xE1F21C67 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0xE4DC2AA4 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xE68010C6 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xE9DDEB26 EQ PUSH2 0x22E JUMPI DUP1 PUSH4 0xEDFA3568 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0xEEEC802F EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xF29486A1 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0xF7888AEC EQ PUSH2 0x21A JUMPI PUSH4 0xFBFA77CF SUB PUSH2 0xE JUMPI PUSH2 0x276C JUMP JUMPDEST PUSH2 0x2703 JUMP JUMPDEST PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x24CC JUMP JUMPDEST PUSH2 0x2476 JUMP JUMPDEST PUSH2 0x23BA JUMP JUMPDEST PUSH2 0x226A JUMP JUMPDEST PUSH2 0x2082 JUMP JUMPDEST PUSH2 0x2039 JUMP JUMPDEST PUSH2 0x1FF5 JUMP JUMPDEST PUSH2 0x1FB7 JUMP JUMPDEST PUSH2 0x1EBF JUMP JUMPDEST PUSH2 0x1E11 JUMP JUMPDEST PUSH2 0x1D69 JUMP JUMPDEST PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x1CCD JUMP JUMPDEST PUSH2 0x1B18 JUMP JUMPDEST PUSH2 0x1AEE JUMP JUMPDEST PUSH2 0x1AA2 JUMP JUMPDEST PUSH2 0x1A13 JUMP JUMPDEST PUSH2 0x19E2 JUMP JUMPDEST PUSH2 0x1527 JUMP JUMPDEST PUSH2 0x14C5 JUMP JUMPDEST PUSH2 0x1481 JUMP JUMPDEST PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x1399 JUMP JUMPDEST PUSH2 0x1353 JUMP JUMPDEST PUSH2 0x127A JUMP JUMPDEST PUSH2 0x1082 JUMP JUMPDEST PUSH2 0xF2C JUMP JUMPDEST PUSH2 0xEDF JUMP JUMPDEST PUSH2 0xE9C JUMP JUMPDEST PUSH2 0xE54 JUMP JUMPDEST PUSH2 0xCFE JUMP JUMPDEST PUSH2 0xC21 JUMP JUMPDEST PUSH2 0xB78 JUMP JUMPDEST PUSH2 0xB14 JUMP JUMPDEST PUSH2 0xA12 JUMP JUMPDEST PUSH2 0x930 JUMP JUMPDEST PUSH2 0x6C1 JUMP JUMPDEST PUSH2 0x67E JUMP JUMPDEST PUSH2 0x5DC JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x2FB JUMP JUMPDEST JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x343 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x350 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x3A2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x36E CALLDATASIZE PUSH2 0x32B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x378 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x381 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x3CD JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x3BF JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x3F4 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x60 SWAP3 DUP1 MLOAD PUSH2 0x432 DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x473 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH2 0x485 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH2 0x421 JUMP JUMPDEST SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x465 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4AF JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4A1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH2 0x505 PUSH1 0x4 CALLDATALOAD PUSH2 0x4E6 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x27AF JUMP JUMPDEST POP PUSH2 0x4F7 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x500 DUP2 PUSH2 0x2F9D JUMP JUMPDEST PUSH2 0x2FEA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE DUP1 MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x530 PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0xE0 PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP1 PUSH2 0x3AE JUMP JUMPDEST PUSH1 0xC0 PUSH2 0x592 PUSH2 0x57F PUSH2 0x56B PUSH2 0x557 PUSH1 0x40 DUP8 ADD MLOAD SWAP6 PUSH1 0x1F NOT SWAP7 DUP8 DUP12 DUP4 SUB ADD PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x454 JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD DUP7 DUP11 DUP4 SUB ADD PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP6 DUP10 DUP4 SUB ADD PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD DUP5 DUP9 DUP4 SUB ADD DUP5 DUP10 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x30C JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5CA PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF PUSH1 0x9 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x80 PUSH1 0x4 CALLDATALOAD PUSH2 0x5FB DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x603 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x60C DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x615 DUP2 PUSH2 0x3201 JUMP JUMPDEST PUSH2 0x642 SWAP3 SWAP2 SWAP3 PUSH32 0x0 DUP3 PUSH2 0x2813 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP2 PUSH1 0x40 MLOAD SWAP4 ISZERO ISZERO DUP5 MSTORE PUSH4 0xFFFFFFFF DUP1 SWAP3 AND PUSH1 0x20 DUP6 ADD MSTORE AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0x6E0 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x6E8 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x769 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x30C JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x836 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x750 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x30C JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x87D DUP2 PUSH2 0x84B JUMP JUMPDEST SWAP4 PUSH2 0x88B PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x7BE JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x30C JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x8B4 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x8A6 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x750 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x8EB DUP3 PUSH2 0x8C3 JUMP JUMPDEST SWAP2 PUSH2 0x8F9 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x7BE JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x30C JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP2 PUSH1 0x20 PUSH2 0x350 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x8DF JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x3 NOT PUSH1 0x40 DUP2 CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x94E DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP4 GT PUSH2 0x30C JUMPI PUSH1 0xE0 SWAP1 DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x30C JUMPI PUSH2 0x977 PUSH2 0x7E1 JUMP JUMPDEST SWAP1 PUSH2 0x984 DUP4 PUSH1 0x4 ADD PUSH2 0x840 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x24 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x44 DUP4 ADD CALLDATALOAD DUP5 DUP2 GT PUSH2 0x30C JUMPI PUSH2 0x9AC SWAP1 PUSH1 0x4 CALLDATASIZE SWAP2 DUP7 ADD ADD PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x64 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x84 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x9D1 PUSH1 0xA4 DUP5 ADD PUSH2 0x320 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC4 DUP4 ADD CALLDATALOAD SWAP4 DUP5 GT PUSH2 0x30C JUMPI PUSH2 0x9F8 PUSH2 0xA02 SWAP4 PUSH1 0x4 PUSH2 0x5A4 SWAP7 CALLDATASIZE SWAP3 ADD ADD PUSH2 0x915 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x2830 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xA2F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xA37 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xA40 DUP2 PUSH2 0x2F9D JUMP JUMPDEST PUSH2 0xA8D PUSH1 0x20 PUSH1 0x80 PUSH2 0xA50 DUP5 PUSH2 0x2FEA JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x40 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x24 DUP4 ADD MSTORE SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x5A4 SWAP3 PUSH2 0xA02 SWAP3 PUSH0 SWAP3 PUSH2 0xADA JUMPI JUMPDEST POP PUSH2 0xAD3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x33DE JUMP JUMPDEST PUSH2 0xAD3 SWAP2 SWAP3 POP PUSH2 0xB01 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI JUMPDEST PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x295C JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAB7 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0xAEF JUMP JUMPDEST PUSH2 0x2988 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0xB39 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xB41 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xB4A DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x350 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH1 0x80 PUSH2 0xBAE PUSH1 0x4 CALLDATALOAD PUSH2 0xB9D DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xBA5 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x500 DUP2 PUSH2 0x2F52 JUMP JUMPDEST ADD MLOAD PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x30C JUMPI PUSH1 0x20 DUP4 DUP2 DUP7 ADD SWAP6 ADD ADD GT PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x30C JUMPI PUSH2 0xC1D SWAP2 PUSH1 0x4 ADD PUSH2 0xBC4 JUMP JUMPDEST SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xC36 PUSH2 0xC2F CALLDATASIZE PUSH2 0xBF2 JUMP JUMPDEST CALLDATASIZE SWAP2 PUSH2 0x8DF JUMP JUMPDEST DUP2 DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xC63 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xC55 JUMP JUMPDEST SWAP3 SWAP1 PUSH2 0xC98 SWAP1 SWAP6 SWAP5 SWAP3 SWAP6 PUSH1 0x80 DUP6 MSTORE PUSH1 0x80 DUP6 ADD SWAP1 PUSH2 0xC44 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP5 DUP2 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x20 DUP1 DUP9 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP8 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xCE1 JUMPI POP POP POP POP DUP5 PUSH2 0xCD3 SWAP2 DUP5 PUSH2 0x350 SWAP7 SWAP8 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP8 DUP3 PUSH2 0xCF3 PUSH1 0x1 SWAP3 DUP12 MLOAD PUSH2 0x421 JUMP JUMPDEST SWAP10 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0xCB2 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0xD1B DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xD23 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xD2C DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0xD64 PUSH2 0xD5F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2993 JUMP JUMPDEST SWAP1 DUP2 MLOAD SWAP3 PUSH2 0xD71 DUP5 PUSH2 0x2A08 JUMP JUMPDEST SWAP4 PUSH2 0xD7B DUP2 PUSH2 0x2A56 JUMP JUMPDEST SWAP2 PUSH2 0xD85 DUP3 PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xDA0 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x5A4 DUP9 DUP9 DUP13 DUP13 DUP6 PUSH2 0xC80 JUMP JUMPDEST DUP1 PUSH2 0xDB5 PUSH1 0x1 SWAP3 DUP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xE0C PUSH2 0xE07 DUP11 PUSH2 0xDF2 PUSH2 0xDE5 DUP7 PUSH2 0xDDF DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x2AD9 JUMP JUMPDEST PUSH2 0xE16 DUP4 DUP13 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0xE21 DUP3 DUP12 PUSH2 0x2AB4 JUMP JUMPDEST POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE3F DUP4 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH1 0x80 SHR PUSH2 0xE4D DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0xD88 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x4 CALLDATALOAD PUSH2 0xE73 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xE7B PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0xE DUP3 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO ISZERO PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0xED4 PUSH1 0x4 CALLDATALOAD PUSH2 0xEBE DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0xEC6 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0xECF DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x3201 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0xF04 DUP2 PUSH2 0x2FB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0xF1C PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x3402 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 DUP1 PUSH2 0xF3C CALLDATASIZE PUSH2 0xBF2 JUMP JUMPDEST SWAP1 PUSH2 0xF45 PUSH2 0x3475 JUMP JUMPDEST PUSH2 0xF4D PUSH2 0x2EF8 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP3 DUP4 CALLDATACOPY DUP2 ADD DUP4 DUP2 MSTORE SUB SWAP1 DUP3 CALLER GAS CALL PUSH2 0xF69 PUSH2 0x2B18 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xFB6 JUMPI SWAP1 PUSH2 0xF7F DUP2 PUSH2 0xFB2 SWAP4 CALLER PUSH2 0x3509 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x2465 JUMP JUMPDEST SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x4 DUP2 MLOAD LT PUSH2 0x1035 JUMPI PUSH32 0x5AB64FB800000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MLOAD AND SUB PUSH2 0x34FA JUMPI PUSH32 0x28F9554100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xA728568900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH2 0x1074 PUSH2 0x350 SWAP4 PUSH1 0x40 DUP5 MSTORE PUSH1 0x40 DUP5 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x109F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x10A7 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x10B0 DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP5 SWAP2 PUSH1 0x20 DUP3 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x117A JUMPI POP POP POP PUSH2 0x1101 SWAP3 POP SUB DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH2 0x110D DUP3 MLOAD DUP1 SWAP3 PUSH2 0x3595 JUMP JUMPDEST SWAP2 PUSH2 0x1117 DUP3 PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x1130 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x5A4 DUP9 DUP9 DUP4 PUSH2 0x105D JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x1169 PUSH2 0x1164 PUSH2 0xE07 PUSH2 0x1157 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xDF2 PUSH2 0xDE5 DUP7 DUP11 PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x35E7 JUMP JUMPDEST PUSH2 0x1173 DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x111A JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP3 AND AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP PUSH1 0x20 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x10EB JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x11BA DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH2 0x11C7 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x30C JUMPI DUP2 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x11F5 DUP2 PUSH2 0x84B JUMP JUMPDEST SWAP2 PUSH2 0x1203 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x7BE JUMP JUMPDEST DUP2 DUP4 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x24 PUSH1 0x20 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x30C JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1261 JUMPI POP POP POP POP SWAP3 PUSH1 0x64 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x30C JUMPI DUP3 PUSH2 0x1246 SWAP2 PUSH1 0x4 ADD PUSH2 0x863 JUMP JUMPDEST SWAP3 PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0xA4 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x30C JUMPI PUSH2 0x350 SWAP2 PUSH1 0x4 ADD PUSH2 0x915 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x126F DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1223 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x1319 PUSH1 0x20 PUSH2 0x128D CALLDATASIZE PUSH2 0x11A2 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x129A SWAP8 SWAP4 SWAP8 PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x1305 PUSH2 0x12F2 PUSH1 0x40 MLOAD SWAP10 DUP11 SWAP9 DUP10 SWAP9 PUSH32 0xBA8A2BE000000000000000000000000000000000000000000000000000000000 DUP11 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x4 DUP12 ADD MSTORE AND PUSH1 0x24 DUP10 ADD MSTORE PUSH1 0xC0 PUSH1 0x44 DUP10 ADD MSTORE PUSH1 0xC4 DUP9 ADD SWAP1 PUSH2 0xC44 JUMP JUMPDEST PUSH1 0x3 NOT SWAP3 DUP4 DUP9 DUP4 SUB ADD PUSH1 0x64 DUP10 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST SWAP3 PUSH1 0x84 DUP7 ADD MSTORE DUP5 DUP4 SUB ADD PUSH1 0xA4 DUP6 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST SUB DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x1334 JUMPI JUMPDEST PUSH2 0x1332 PUSH2 0x3718 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x134C SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST POP PUSH0 PUSH2 0x132A JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x136B PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x13F9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x13C5 CALLDATASIZE PUSH2 0x32B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x13CF PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x13D8 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x141B PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x1479 PUSH1 0x4 CALLDATALOAD PUSH2 0x1453 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x145F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x146C DUP4 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1474 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x373D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x14A6 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x14AE PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x1479 PUSH1 0x4 CALLDATALOAD PUSH2 0x14E7 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x14EF PUSH2 0x2EF8 JUMP JUMPDEST PUSH32 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1544 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x1550 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x30C JUMPI PUSH2 0x1574 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x863 JUMP JUMPDEST PUSH2 0x157C PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1584 PUSH2 0x37BE JUMP JUMPDEST PUSH2 0x158C PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x1595 DUP5 PUSH2 0x2F9D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 DUP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH0 PUSH1 0x20 MSTORE PUSH2 0x15BE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 SWAP1 PUSH1 0x3 SHR AND SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x19B6 JUMPI PUSH2 0x15DE DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH2 0x15E7 PUSH2 0x2B47 JUMP JUMPDEST SWAP3 PUSH2 0x1606 PUSH2 0xD5F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE MLOAD SWAP7 PUSH2 0x161B PUSH1 0x40 DUP7 ADD SWAP9 DUP1 DUP11 MSTORE PUSH2 0x2A56 JUMP JUMPDEST SWAP8 PUSH1 0x80 DUP7 ADD SWAP9 DUP10 MSTORE PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP1 PUSH2 0x165C PUSH2 0x1646 PUSH1 0x1 SWAP4 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0x1667 DUP3 DUP14 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x1625 JUMP JUMPDEST POP DUP10 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x169C DUP2 DUP10 MLOAD PUSH2 0x1695 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 PUSH2 0x380F JUMP JUMPDEST SWAP10 PUSH2 0x16A7 DUP4 MLOAD PUSH2 0x2A56 JUMP JUMPDEST SWAP6 PUSH1 0x60 DUP10 ADD SWAP7 DUP8 MSTORE PUSH2 0x170E DUP12 PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST ISZERO ISZERO PUSH1 0xA0 DUP11 ADD DUP2 DUP2 MSTORE SWAP6 SWAP1 PUSH2 0x1989 JUMPI JUMPDEST PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x186E JUMPI PUSH2 0x174A DUP2 DUP16 DUP11 DUP15 DUP4 DUP15 PUSH2 0x173C DUP15 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x181E JUMPI JUMPDEST POP POP POP POP PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x1755 DUP3 DUP13 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD GT PUSH2 0x17B5 JUMPI DUP1 DUP13 DUP16 DUP3 PUSH2 0x17A8 DUP16 DUP3 PUSH2 0x17AE SWAP5 PUSH2 0x178F PUSH2 0x177E PUSH2 0xDE5 PUSH1 0x1 SWAP12 PUSH2 0x1794 SWAP7 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x1788 DUP5 DUP5 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x389F JUMP JUMPDEST PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP4 PUSH2 0x17A2 DUP4 DUP7 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x2BB7 JUMP JUMPDEST SWAP3 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x1720 JUMP JUMPDEST DUP14 DUP11 PUSH2 0x17DE DUP4 PUSH2 0x17D7 DUP16 SWAP6 PUSH2 0x17D1 PUSH2 0xDE5 DUP3 PUSH2 0x181B SWAP10 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST SWAP6 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH0 REVERT JUMPDEST PUSH2 0x183D PUSH2 0x184F SWAP4 PUSH2 0x185A SWAP6 PUSH2 0x1833 DUP6 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP2 ADD MLOAD SWAP1 PUSH2 0x385E JUMP JUMPDEST PUSH2 0x1848 DUP4 DUP4 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x17A2 DUP5 DUP5 PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x1864 DUP4 DUP4 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE DUP11 DUP15 DUP4 DUP15 PUSH2 0x1741 JUMP JUMPDEST POP DUP11 SWAP6 POP SWAP2 DUP8 SWAP2 DUP14 SWAP4 DUP14 PUSH2 0x1893 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP10 MLOAD DUP2 LT ISZERO PUSH2 0x18E4 JUMPI DUP1 PUSH2 0x18CB DUP13 PUSH2 0x18C4 DUP4 PUSH2 0x18BC PUSH1 0x1 SWAP7 DUP16 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x38DD JUMP JUMPDEST PUSH2 0x18DD DUP3 DUP13 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x1896 JUMP JUMPDEST PUSH2 0x5A4 DUP9 PUSH0 DUP10 DUP10 PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 DUP11 DUP11 PUSH2 0x1962 PUSH2 0x1950 DUP13 PUSH2 0x1939 DUP14 PUSH2 0x1925 DUP2 CALLER DUP9 DUP7 PUSH2 0x38EB JUMP JUMPDEST PUSH2 0x192D PUSH2 0x3986 JUMP JUMPDEST PUSH2 0x1979 JUMPI JUMPDEST DUP6 DUP4 PUSH2 0x39EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 MLOAD DUP9 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x2BC4 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x196D PUSH2 0x3718 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0xB67 JUMP JUMPDEST PUSH2 0x1984 DUP2 DUP8 DUP6 PUSH2 0x39A8 JUMP JUMPDEST PUSH2 0x1932 JUMP JUMPDEST PUSH2 0x19AC PUSH2 0x19A6 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x32A8 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MSTORE PUSH2 0x171E JUMP JUMPDEST DUP4 PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x19FA PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x9 SLOAD PUSH1 0x8 SHR AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x1A98 PUSH1 0x4 CALLDATALOAD PUSH2 0x1A35 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1A3D PUSH2 0x2EF8 JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1AC7 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1ACF PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1AD8 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH2 0x1479 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x32A8 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x1B06 PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x1B26 CALLDATASIZE PUSH2 0x11A2 JUMP JUMPDEST SWAP3 SWAP2 PUSH2 0x1B30 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1B38 PUSH2 0x37BE JUMP JUMPDEST PUSH2 0x1B41 DUP7 PUSH2 0x2F52 JUMP JUMPDEST PUSH2 0x1B49 PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x1B52 DUP7 PUSH2 0x3BB6 JUMP JUMPDEST PUSH2 0x1B5B DUP7 PUSH2 0x2FEA JUMP JUMPDEST SWAP3 PUSH2 0x1B6A DUP5 MLOAD PUSH1 0x1 SWAP1 DUP2 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1C98 JUMPI SWAP2 DUP4 SWAP2 PUSH2 0x5A4 SWAP8 SWAP6 SWAP4 PUSH2 0x1B8C PUSH1 0x20 PUSH2 0x1BDB SWAP10 SWAP8 ADD MLOAD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x3C04 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD SWAP6 DUP7 MLOAD PUSH2 0x1BA4 PUSH1 0xA0 DUP8 ADD SWAP2 DUP3 MLOAD SWAP1 DUP7 PUSH2 0x3C33 JUMP JUMPDEST SWAP8 DUP10 PUSH2 0x1BB5 DUP9 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x8 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1C27 JUMPI JUMPDEST DUP10 SWAP5 SWAP3 POP DUP8 SWAP2 POP SWAP3 PUSH2 0x1BCD SWAP7 SWAP6 SWAP4 PUSH2 0x3E1C JUMP JUMPDEST SWAP5 DUP6 SWAP2 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xA SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1BEA JUMPI JUMPDEST DUP6 SWAP1 PUSH2 0xA02 PUSH2 0x3718 JUMP JUMPDEST PUSH2 0x1C18 PUSH2 0x1C0B PUSH2 0x1C1E SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x40D4 JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP4 PUSH2 0x1BE0 JUMP JUMPDEST SWAP2 PUSH2 0x1C8B SWAP2 PUSH2 0x1C5D DUP10 SWAP12 DUP12 PUSH2 0x1C57 PUSH2 0x1C0B PUSH2 0x1BCD SWAP13 SWAP12 SWAP10 SWAP11 SWAP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x3CD9 JUMP JUMPDEST PUSH2 0x1C81 PUSH2 0x1C7B DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP11 PUSH2 0x3DAF JUMP JUMPDEST MLOAD SWAP1 MLOAD SWAP1 DUP5 PUSH2 0x3C33 JUMP JUMPDEST SWAP8 DUP2 SWAP4 SWAP3 SWAP5 SWAP6 POP DUP10 PUSH2 0x1BBA JUMP JUMPDEST PUSH32 0x218E374700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1CF2 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1CFA PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1D03 DUP2 PUSH2 0x2F52 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x1D46 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1D4E PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x30C JUMPI PUSH2 0x1D9A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBC4 JUMP JUMPDEST PUSH2 0x1DA2 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1DAB CALLER PUSH2 0x2F52 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD SWAP3 PUSH1 0x20 DUP5 MSTORE DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATACOPY PUSH0 PUSH1 0x40 DUP3 DUP5 ADD ADD MSTORE PUSH32 0x4BC4412E210115456903C65B5277D299A505E79F2EB852B92B1CA52D85856428 PUSH1 0x4 CALLDATALOAD SWAP3 PUSH1 0x40 DUP2 PUSH1 0x1F NOT PUSH1 0x1F CALLER SWAP7 ADD AND DUP2 ADD SUB ADD SWAP1 LOG3 STOP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x350 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xC44 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1E2E DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1E36 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1E3F DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 PUSH1 0x20 DUP5 SLOAD SWAP2 DUP3 DUP2 MSTORE ADD SWAP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1E92 JUMPI PUSH2 0x5A4 DUP6 PUSH2 0x1E86 DUP2 DUP10 SUB DUP3 PUSH2 0x7BE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E00 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP5 PUSH1 0x1 PUSH2 0x1EB4 DUP2 SWAP3 DUP5 DUP10 SLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP3 AND DUP2 MSTORE ADD SWAP1 JUMP JUMPDEST SWAP7 ADD SWAP4 SWAP3 ADD SWAP1 PUSH2 0x1E6F JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x160 PUSH2 0x1F24 PUSH1 0x4 CALLDATALOAD PUSH2 0x1EE2 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x1EEA PUSH2 0x2BEF JUMP JUMPDEST POP PUSH2 0x1EF3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1EFC DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP1 PUSH2 0x41A0 JUMP JUMPDEST PUSH2 0x1FB5 PUSH1 0x40 MLOAD DUP1 SWAP3 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x200D PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x2077 PUSH1 0x4 CALLDATALOAD PUSH2 0x2059 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x2065 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x206D PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 CALLER PUSH2 0x42DE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x20A7 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x20AF PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x30C JUMPI JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x30C JUMPI PUSH1 0xA4 SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDC PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x30C JUMPI PUSH2 0x124 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A0 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x30C JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x2169 DUP2 PUSH2 0x2FB JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x30C JUMPI DUP2 PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x30C JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x2195 DUP2 PUSH2 0x84B JUMP JUMPDEST SWAP2 PUSH1 0x40 SWAP2 PUSH2 0x21A6 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x7BE JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x24 PUSH1 0x20 DUP7 ADD SWAP2 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 DUP7 DUP5 GT PUSH2 0x30C JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x2204 JUMPI POP POP POP POP POP SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x21DF PUSH2 0x20DD JUMP JUMPDEST SWAP2 PUSH2 0x21E8 PUSH2 0x20D0 JUMP JUMPDEST SWAP2 PUSH2 0x21F2 DUP2 PUSH2 0x20F0 JUMP JUMPDEST SWAP2 PUSH2 0x350 PUSH2 0x21FE PUSH2 0x310 JUMP JUMPDEST SWAP3 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x80 DUP3 DUP9 SUB SLT PUSH2 0x30C JUMPI DUP3 PUSH1 0x80 SWAP2 DUP7 MLOAD PUSH2 0x221D DUP2 PUSH2 0x734 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2228 DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP6 ADD CALLDATALOAD PUSH2 0x2237 DUP2 PUSH2 0x836 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP8 DUP6 ADD CALLDATALOAD PUSH2 0x2248 DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP9 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD CALLDATALOAD SWAP1 PUSH2 0x225C DUP3 PUSH2 0x20C6 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x21C6 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x2278 CALLDATASIZE PUSH2 0x214F JUMP JUMPDEST SWAP1 SWAP7 SWAP6 SWAP5 SWAP3 PUSH2 0x2285 PUSH2 0x36C3 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH2 0x22EF SWAP8 PUSH0 SWAP8 PUSH1 0x40 PUSH2 0x2356 SWAP6 PUSH2 0x234B SWAP5 PUSH4 0xFFFFFFFF PUSH2 0x1A4 SWAP11 DUP5 MLOAD SWAP15 DUP16 SWAP14 DUP15 SWAP14 DUP15 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP11 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x2C52 JUMP JUMPDEST SWAP11 PUSH1 0x44 DUP14 ADD MSTORE AND PUSH1 0x64 DUP12 ADD MSTORE ISZERO ISZERO PUSH1 0x84 DUP11 ADD MSTORE DUP3 DUP2 CALLDATALOAD PUSH2 0x230E DUP2 PUSH2 0x2FB JUMP JUMPDEST AND PUSH1 0xA4 DUP11 ADD MSTORE DUP3 PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x2323 DUP2 PUSH2 0x2FB JUMP JUMPDEST AND PUSH1 0xC4 DUP11 ADD MSTORE ADD CALLDATALOAD PUSH2 0x2334 DUP2 PUSH2 0x2FB JUMP JUMPDEST AND PUSH1 0xE4 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x104 DUP7 ADD MSTORE JUMP JUMPDEST PUSH2 0x124 DUP5 ADD SWAP1 PUSH2 0x2CC1 JUMP JUMPDEST SUB DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x236E JUMPI PUSH2 0x1332 PUSH2 0x3718 JUMP JUMPDEST DUP1 PUSH2 0x237B PUSH2 0x2381 SWAP3 PUSH2 0x755 JUMP JUMPDEST DUP1 PUSH2 0x5A8 JUMP JUMPDEST PUSH0 PUSH2 0x132A JUMP JUMPDEST PUSH2 0x31E SWAP1 SWAP3 SWAP2 SWAP3 PUSH1 0x60 DUP2 ADD SWAP4 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH1 0x4 CALLDATALOAD PUSH2 0x23DA DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x23E2 PUSH2 0x29EA JUMP JUMPDEST POP PUSH2 0x23EB PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x23F4 DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x241A DUP5 PUSH2 0x769 JUMP JUMPDEST DUP3 DUP2 SLOAD AND DUP5 MSTORE DUP3 PUSH1 0x1 DUP3 ADD SLOAD AND PUSH1 0x20 DUP6 ADD MSTORE ADD SLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x2387 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0x350 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x2440 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH2 0x24B8 PUSH0 DUP1 PUSH2 0x249F PUSH2 0x248F CALLDATASIZE PUSH2 0xBF2 JUMP JUMPDEST PUSH2 0x2497 PUSH2 0x3475 JUMP JUMPDEST PUSH2 0xC2F PUSH2 0x2EF8 JUMP JUMPDEST PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 CALLER GAS CALL PUSH2 0x24B1 PUSH2 0x2B18 JUMP JUMPDEST SWAP1 CALLER PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2440 JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH4 0xFFFFFFFF PUSH2 0x24DF CALLDATASIZE PUSH2 0x214F JUMP JUMPDEST SWAP4 SWAP1 SWAP5 PUSH2 0x24F0 SWAP9 SWAP3 SWAP9 SWAP8 SWAP7 SWAP8 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x24F8 PUSH2 0x36C3 JUMP JUMPDEST PUSH2 0x2500 PUSH2 0x440E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP8 PUSH2 0x250D DUP10 PUSH2 0x785 JUMP JUMPDEST DUP9 MSTORE PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x60 DUP6 CALLDATASIZE SUB SLT PUSH2 0x30C JUMPI PUSH2 0x2589 PUSH2 0x2590 SWAP3 PUSH2 0x132A SWAP7 PUSH1 0x40 DUP1 MLOAD SWAP2 PUSH2 0x2544 DUP4 PUSH2 0x769 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x254F DUP2 PUSH2 0x2FB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x255F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE ADD CALLDATALOAD PUSH2 0x256F DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST CALLDATASIZE SWAP1 PUSH2 0x2D10 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x488B JUMP JUMPDEST PUSH2 0x31E SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x180 PUSH2 0x1A0 DUP3 ADD SWAP5 PUSH2 0x25DB DUP4 DUP3 MLOAD PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2611 PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0xE0 DUP6 ADD SWAP1 PUSH5 0xFFFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD SWAP1 PUSH2 0x262C PUSH2 0x100 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x2660 PUSH1 0xC0 DUP3 ADD MLOAD SWAP3 PUSH2 0x2646 PUSH2 0x120 SWAP5 DUP6 DUP9 ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP8 ADD MSTORE DUP3 ADD MLOAD ISZERO ISZERO PUSH2 0x160 DUP7 ADD MSTORE JUMP JUMPDEST ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH2 0x5A4 PUSH2 0x26F7 PUSH1 0x4 CALLDATALOAD PUSH2 0x268C DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH0 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x269C DUP2 PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26A8 DUP2 PUSH2 0x734 JUMP JUMPDEST DUP4 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP4 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE PUSH2 0x2D70 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x259A JUMP JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH2 0x2763 PUSH1 0x4 CALLDATALOAD PUSH2 0x2725 DUP2 PUSH2 0x2FB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x273A DUP4 PUSH2 0x2FB JUMP JUMPDEST PUSH2 0x2742 PUSH2 0x2EF8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xF DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x30C JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x30C JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x27BC DUP3 PUSH2 0x785 JUMP JUMPDEST DUP2 PUSH0 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x60 SWAP2 DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP5 AND SWAP2 AND ADD SWAP2 DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST PUSH2 0x27E6 JUMP JUMPDEST PUSH2 0x28AD SWAP2 PUSH2 0x283C PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x2845 DUP3 PUSH2 0x2F9D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP4 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP4 DUP5 SWAP4 PUSH2 0x286A DUP6 PUSH0 KECCAK256 SLOAD PUSH2 0x32A8 JUMP JUMPDEST SWAP4 PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE DUP5 PUSH0 KECCAK256 SLOAD AND SWAP2 DUP5 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 DUP5 SWAP4 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x4 DUP6 ADD PUSH2 0x32F5 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH0 SWAP4 PUSH2 0x292A JUMPI JUMPDEST POP POP ISZERO PUSH2 0x2902 JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x28DA JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x294D SWAP4 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x2955 JUMPI JUMPDEST PUSH2 0x2945 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x32D6 JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x28C1 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x293B JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x30C JUMPI MLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x2983 PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x29C7 JUMPI POP POP POP PUSH2 0x31E SWAP3 POP SUB DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x29B1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x29F7 DUP3 PUSH2 0x769 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x2A12 DUP3 PUSH2 0x84B JUMP JUMPDEST PUSH2 0x2A1F PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x7BE JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x2A2F DUP3 SWAP5 PUSH2 0x84B JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2A3F JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x2A4A PUSH2 0x29EA JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x2A33 JUMP JUMPDEST SWAP1 PUSH2 0x2A60 DUP3 PUSH2 0x84B JUMP JUMPDEST PUSH2 0x2A6D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x7BE JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x2A7D DUP3 SWAP5 PUSH2 0x84B JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2AC8 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH2 0x2A87 JUMP JUMPDEST PUSH2 0x2AD6 DUP3 PUSH2 0x3EA JUMP JUMPDEST MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0x2AE6 DUP2 PUSH2 0x769 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0x2AF9 DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x2B42 JUMPI RETURNDATASIZE SWAP1 PUSH2 0x2B29 DUP3 PUSH2 0x8C3 JUMP JUMPDEST SWAP2 PUSH2 0x2B37 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x7BE JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH1 0xA0 DUP4 PUSH1 0x60 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BDC0 DUP3 ADD SWAP2 DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x2BE1 SWAP1 PUSH2 0x350 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x750 JUMPI PUSH1 0x40 MSTORE PUSH0 PUSH2 0x140 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 PUSH1 0xC0 DUP3 ADD MSTORE DUP3 PUSH1 0xE0 DUP3 ADD MSTORE DUP3 PUSH2 0x100 DUP3 ADD MSTORE DUP3 PUSH2 0x120 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x2C71 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP5 DUP3 ADD MLOAD PUSH2 0x2C98 DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP4 DUP7 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x2C63 JUMP JUMPDEST PUSH1 0x60 DUP1 SWAP2 DUP1 CALLDATALOAD PUSH2 0x2CD0 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x2CE2 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH2 0x2CF7 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD CALLDATALOAD PUSH2 0x2D09 DUP2 PUSH2 0x20C6 JUMP JUMPDEST ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x80 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH2 0x2D28 DUP2 PUSH2 0x734 JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 SWAP5 DUP1 CALLDATALOAD PUSH2 0x2D38 DUP2 PUSH2 0x20C6 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH2 0x2D48 DUP2 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD PUSH2 0x2D5B DUP2 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 PUSH2 0x2D6C DUP4 PUSH2 0x20C6 JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH2 0x2D9B SWAP1 PUSH2 0x2D7C PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x2D85 DUP2 PUSH2 0x2F52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x350 PUSH1 0x1 PUSH2 0x2DAA DUP4 PUSH2 0x32A8 JUMP JUMPDEST SWAP3 PUSH2 0x2E53 PUSH2 0x2DB7 DUP3 PUSH2 0x5373 JUMP JUMPDEST PUSH2 0x2E46 PUSH2 0x2DC3 DUP5 PUSH2 0x5396 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF DUP6 PUSH1 0x5A SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP7 PUSH2 0x2DDD PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP4 PUSH2 0x2DE8 PUSH2 0x7EE JUMP JUMPDEST PUSH1 0x4 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO DUP2 MSTORE SWAP10 PUSH1 0x5 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x20 DUP13 ADD MSTORE PUSH1 0x6 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x7 DUP9 SWAP1 SHR DUP10 AND ISZERO ISZERO PUSH1 0x60 DUP13 ADD MSTORE PUSH2 0x2E26 PUSH2 0x7FB JUMP JUMPDEST SWAP11 DUP12 MSTORE PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x40 DUP11 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH5 0xFFFFFFFFFF AND PUSH1 0x80 DUP9 ADD MSTORE JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH1 0xA0 DUP7 ADD MSTORE JUMP JUMPDEST DUP1 DUP3 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP1 DUP3 SHR DUP3 AND ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x2 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE PUSH1 0x3 SHR AND ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x2E86 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x2EF4 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x2F2A JUMPI JUMP JUMPDEST PUSH32 0x9FD25B3600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x2F72 JUMPI POP JUMP JUMPDEST PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x2FBF JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2FFB PUSH2 0x27AF JUMP JUMPDEST SWAP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x3036 PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0x53B9 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x3041 DUP5 PUSH2 0x2A08 JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x3051 DUP6 PUSH2 0x2A56 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x3062 DUP7 PUSH2 0x2A56 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x3076 DUP8 DUP12 MLOAD PUSH2 0x3595 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x3084 DUP8 PUSH2 0x2A56 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x31ED JUMPI JUMPDEST POP DUP4 PUSH2 0x31DB JUMPI JUMPDEST DUP13 PUSH0 JUMPDEST DUP12 DUP2 LT PUSH2 0x30BE JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x3105 DUP5 PUSH2 0x30F1 DUP2 PUSH2 0x30E3 PUSH2 0xE07 DUP16 DUP16 PUSH2 0xDE5 DUP6 PUSH2 0xDF2 SWAP3 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x30FF DUP4 DUP4 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0x2AB4 JUMP JUMPDEST POP PUSH2 0x310F DUP2 PUSH2 0x35E7 JUMP JUMPDEST PUSH2 0x311A DUP6 DUP14 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0x3138 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0x5691 JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x31CE JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x31B0 JUMPI JUMPDEST POP POP PUSH2 0x3161 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD DUP14 SWAP1 PUSH2 0x30A8 JUMP JUMPDEST DUP3 PUSH2 0x3184 SWAP3 PUSH2 0x317B DUP3 PUSH2 0x3174 DUP9 MLOAD PUSH2 0x5396 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x5BAC JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x3194 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x3153 JUMP JUMPDEST PUSH2 0x31A7 SWAP4 PUSH2 0x31A1 SWAP2 PUSH2 0x2BB7 JUMP JUMPDEST SWAP2 PUSH2 0x5691 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x318B JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x31BD DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x31C6 DUP2 PUSH2 0x3EA JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x314C JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x3159 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x30A5 JUMP JUMPDEST PUSH2 0x31F8 SWAP2 SWAP5 POP PUSH2 0x5396 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x309E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x1 DUP3 PUSH1 0x2 SHR AND PUSH4 0xFFFFFFFF DUP1 SWAP4 PUSH2 0x322C PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND SWAP3 DUP2 PUSH2 0x3239 JUMPI POP SWAP2 SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3265 PUSH32 0x0 DUP5 PUSH2 0x2813 JUMP JUMPDEST AND TIMESTAMP GT ISZERO SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1 SWAP2 AND ADD SWAP1 PUSH1 0xFF DUP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 MUL SWAP2 DUP1 DUP4 DIV PUSH1 0x5 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x282B JUMPI JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x31E DUP3 PUSH2 0x20C6 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH1 0x20 DUP3 MLOAD PUSH2 0x32EF DUP2 PUSH2 0x20C6 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2D6C PUSH2 0x3395 PUSH1 0x40 SWAP4 SWAP7 SWAP6 SWAP5 SWAP7 PUSH1 0x60 DUP5 MSTORE DUP1 MLOAD PUSH2 0x3311 DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xC0 PUSH2 0x333B DUP7 DUP4 ADD MLOAD PUSH1 0xE0 PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0x140 DUP8 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP2 ADD MLOAD DUP3 DUP8 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xE0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA0 DUP3 ADD MLOAD AND PUSH2 0x100 DUP8 ADD MSTORE ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP6 DUP4 SUB ADD PUSH2 0x120 DUP7 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST DUP2 ISZERO PUSH2 0x33B1 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI PUSH2 0x350 SWAP2 PUSH2 0x33A7 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x28DA JUMPI PUSH5 0x174876E800 SWAP1 DIV DUP1 PUSH1 0x18 SHR PUSH2 0x344D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF SWAP1 PUSH1 0x12 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ORIGIN PUSH2 0x34D2 JUMPI PUSH1 0x1 PUSH1 0x7 SLOAD AND PUSH2 0x34AA JUMPI PUSH1 0x1 PUSH32 0x0 TSTORE JUMP JUMPDEST PUSH32 0x7A19888600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1035 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST SWAP1 PUSH2 0x3546 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0x351E JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0x358C JUMPI JUMPDEST PUSH2 0x3557 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0x354F JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0x35A5 DUP3 PUSH2 0x2A56 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x35B9 JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 PUSH2 0x35C5 DUP4 PUSH2 0x327F JUMP JUMPDEST SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x282B JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0x35E0 DUP3 DUP8 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x35AC JUMP JUMPDEST DUP1 MLOAD PUSH2 0x35F2 DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x35FB DUP2 PUSH2 0x3EA JUMP JUMPDEST DUP1 PUSH2 0x360E JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x361A PUSH1 0x1 SWAP3 PUSH2 0x3EA JUMP JUMPDEST SUB PUSH2 0x369B JUMPI PUSH1 0x20 PUSH2 0x3645 PUSH2 0x3639 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x3682 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x350 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x36F0 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0x377A JUMPI POP POP POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 JUMP JUMPDEST PUSH2 0x37BA SWAP4 PUSH2 0x37A4 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x37E7 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 PUSH2 0x381B DUP5 MLOAD PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x3858 JUMPI DUP1 PUSH2 0x3847 DUP6 PUSH2 0x3842 DUP7 PUSH2 0x383C PUSH1 0x1 SWAP7 DUP9 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3295 JUMP JUMPDEST PUSH2 0x33A7 JUMP JUMPDEST PUSH2 0x3851 DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x381E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 PUSH2 0x3868 SWAP2 PUSH2 0x3295 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x38A9 SWAP1 PUSH2 0x5499 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x282B JUMPI PUSH2 0x31E SWAP2 PUSH0 SUB SWAP1 PUSH2 0x54EE JUMP JUMPDEST SWAP1 PUSH2 0x350 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x55F5 JUMP JUMPDEST SWAP2 SWAP1 SWAP4 SWAP3 SWAP4 PUSH2 0x38FB DUP3 DUP3 DUP6 PUSH2 0x373D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 SUB PUSH2 0x392B JUMPI JUMPDEST POP POP POP POP SWAP1 POP JUMP JUMPDEST DUP1 DUP7 GT PUSH2 0x3949 JUMPI SWAP5 PUSH2 0x393F SWAP5 SWAP6 SUB SWAP3 PUSH2 0x42DE JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP1 DUP1 PUSH2 0x3923 JUMP JUMPDEST DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0x3990 JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x282B JUMPI JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0x34D2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x39DC SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x282B JUMPI SSTORE JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x3B81 JUMPI PUSH2 0x3A1E DUP6 PUSH2 0x37A4 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x3B44 JUMPI DUP4 SWAP1 SUB PUSH2 0x3A48 DUP7 PUSH2 0x37A4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x3A6E DUP4 PUSH2 0x3A68 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x2BB7 JUMP JUMPDEST PUSH2 0x3A77 DUP2 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x3A92 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x3B2C SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x3B31 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST DUP1 PUSH2 0x237B PUSH2 0x3B3E SWAP3 PUSH2 0x755 JUMP JUMPDEST PUSH0 PUSH2 0x3B1B JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x3BBE PUSH2 0x440E JUMP JUMPDEST PUSH2 0x3BC7 DUP2 PUSH2 0x3201 JUMP JUMPDEST POP PUSH2 0x3BCF JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SUB PUSH2 0x3C0B JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 DUP2 MLOAD DUP2 MLOAD DUP2 DUP6 EQ SWAP2 DUP3 ISZERO SWAP3 PUSH2 0x3CB9 JUMPI JUMPDEST POP POP PUSH2 0x3C0B JUMPI PUSH2 0x3C57 DUP4 PUSH2 0x2A56 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3C69 JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3CA7 PUSH2 0x3C82 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3CA2 PUSH2 0x3C90 DUP6 DUP11 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3C9B DUP7 DUP11 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x3295 JUMP JUMPDEST PUSH2 0x3295 JUMP JUMPDEST DIV PUSH2 0x3CB2 DUP3 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST MSTORE ADD PUSH2 0x3C5A JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0x3C48 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x30C JUMPI MLOAD PUSH2 0x350 DUP2 PUSH2 0x20C6 JUMP JUMPDEST SWAP1 PUSH2 0x3D3D SWAP3 PUSH2 0x3D2B PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x1C149E2800000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP1 PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x24 DUP6 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x3D80 JUMPI JUMPDEST POP ISZERO PUSH2 0x3D58 JUMPI JUMP JUMPDEST PUSH32 0x6061292500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x3DA2 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3DA8 JUMPI JUMPDEST PUSH2 0x3D9A DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x3CC4 JUMP JUMPDEST PUSH0 PUSH2 0x3D50 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x3DC7 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x3E16 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 PUSH2 0x3DF6 PUSH2 0x3DF0 DUP6 DUP4 DUP12 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x35E7 JUMP JUMPDEST PUSH2 0x3E04 DUP6 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE DUP4 PUSH0 MSTORE DUP6 DUP8 MSTORE PUSH0 KECCAK256 SLOAD AND DUP3 DUP8 PUSH2 0x5691 JUMP JUMPDEST ADD PUSH2 0x3DB9 JUMP JUMPDEST SWAP3 SWAP2 SWAP6 SWAP7 SWAP5 SWAP7 PUSH2 0x3E3D DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP6 PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3F1B JUMPI PUSH2 0xDE5 DUP3 PUSH2 0x3E5B SWAP3 PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x3E6B PUSH2 0x3639 PUSH2 0xDE5 DUP5 DUP10 PUSH2 0x2AB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 DUP2 SUB PUSH2 0x3EC7 JUMPI POP SWAP1 PUSH2 0x3E95 PUSH1 0x1 SWAP3 PUSH2 0x3E8E DUP4 DUP12 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x56DE JUMP JUMPDEST PUSH2 0x3EAE DUP12 PUSH2 0x3EA7 DUP4 PUSH2 0x17D7 DUP2 DUP14 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x55F5 JUMP JUMPDEST PUSH2 0x3EC0 DUP3 DUP12 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x3E40 JUMP JUMPDEST PUSH2 0x181B SWAP1 DUP9 PUSH2 0x3EDC PUSH2 0x3639 PUSH2 0xDE5 DUP8 DUP13 PUSH2 0x2AB4 JUMP JUMPDEST PUSH32 0xFFE261A100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 MSTORE DUP2 AND PUSH1 0x24 MSTORE AND PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP SWAP7 SWAP5 SWAP2 SWAP3 POP SWAP7 SWAP5 POP PUSH2 0x3F53 DUP5 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x2 SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP1 DUP6 MSTORE PUSH2 0x3F70 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x3FB6 PUSH1 0x20 DUP6 DUP4 AND SWAP8 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x296B JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x3FDB SWAP2 PUSH0 SWAP2 PUSH2 0x40B5 JUMPI JUMPDEST POP PUSH2 0x3FD6 DUP2 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x2B8A JUMP JUMPDEST SWAP8 PUSH2 0x3FE5 DUP3 PUSH2 0x56F0 JUMP JUMPDEST PUSH2 0x3FF0 DUP10 DUP6 DUP5 PUSH2 0x5800 JUMP JUMPDEST DUP1 DUP10 LT PUSH2 0x4085 JUMPI POP SWAP3 DUP6 SWAP3 PUSH2 0x405C PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 SWAP4 PUSH2 0x404D PUSH1 0x20 PUSH2 0x4043 PUSH1 0x1 SWAP11 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP9 ADD MLOAD MLOAD PUSH2 0x2A56 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP5 AND SWAP8 DUP5 PUSH2 0x2BC4 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH32 0xCAD8C9D32507393B6508CA4A888B81979919B477510585BDE8488F153072D6F3 PUSH0 DUP1 LOG2 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP10 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x40CE SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x3FCC JUMP JUMPDEST SWAP3 PUSH2 0x4127 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP5 SWAP7 PUSH2 0x413E PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP5 PUSH32 0x38BE241D00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x490 JUMP JUMPDEST SWAP2 PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x3 NOT DUP5 DUP4 SUB ADD PUSH1 0x44 DUP6 ADD MSTORE PUSH2 0x2440 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x4181 JUMPI JUMPDEST POP ISZERO PUSH2 0x4159 JUMPI JUMP JUMPDEST PUSH32 0xF23DBC600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x419A SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3DA8 JUMPI PUSH2 0x3D9A DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x4151 JUMP JUMPDEST SWAP1 PUSH2 0x41A9 PUSH2 0x2BEF JUMP JUMPDEST POP PUSH1 0xFF PUSH1 0x1 DUP1 DUP5 DUP4 PUSH2 0x41BB PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x41C4 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND DUP2 DUP6 DUP5 PUSH2 0x41D4 PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x41DD SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x41E6 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP1 DUP3 DUP7 DUP6 PUSH2 0x41F7 PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4200 SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4209 SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4212 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP3 DUP1 DUP8 DUP7 PUSH2 0x4223 PUSH1 0xC PUSH2 0x326D JUMP JUMPDEST PUSH2 0x422C SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4235 SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x423E SWAP1 PUSH2 0x326D JUMP JUMPDEST PUSH2 0x4247 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP5 DUP2 DUP9 DUP2 DUP2 DUP5 PUSH1 0xC AND SHR AND SWAP3 PUSH1 0xC PUSH2 0x4261 SWAP1 PUSH2 0x326D JUMP JUMPDEST AND SHR AND SWAP2 PUSH2 0x426D PUSH2 0x808 JUMP JUMPDEST PUSH1 0x9 DUP11 SWAP1 SHR DUP3 AND ISZERO ISZERO DUP2 MSTORE SWAP9 PUSH1 0x8 DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0xA DUP2 SWAP1 SHR DUP3 AND ISZERO ISZERO PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0xB SHR AND ISZERO ISZERO PUSH1 0x60 DUP10 ADD MSTORE ISZERO ISZERO PUSH1 0x80 DUP9 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP8 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP7 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP6 ADD MSTORE ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE ISZERO ISZERO PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x43D9 JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x43A4 JUMPI DUP5 PUSH2 0x4322 DUP6 PUSH2 0x37A4 DUP7 PUSH2 0x37A4 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x3B2C SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x3B10 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x446C JUMPI JUMPDEST PUSH2 0x4444 JUMPI JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x443E JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP1 PUSH2 0x4487 DUP3 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x4490 DUP3 PUSH2 0x3EA JUMP JUMPDEST DUP3 SLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 SWAP1 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 SWAP1 SWAP2 AND PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHL PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND OR SWAP1 ISZERO ISZERO PUSH1 0xA8 SHL PUSH22 0xFF000000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x30C JUMPI MLOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x30C JUMPI SWAP1 JUMP JUMPDEST DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x750 JUMPI PUSH1 0x1 DUP2 ADD DUP1 DUP4 SSTORE DUP2 LT ISZERO PUSH2 0x2AC8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD SWAP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP2 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND OR DUP3 SSTORE PUSH2 0x31E SWAP3 PUSH1 0x2 SWAP2 SWAP1 PUSH1 0x40 SWAP1 PUSH2 0x4602 DUP4 PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x1 DUP8 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST ADD MLOAD AND SWAP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP5 SWAP4 SWAP2 PUSH2 0x31E SWAP4 PUSH1 0x60 SWAP3 PUSH2 0x4682 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP10 MSTORE AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x2C52 JUMP JUMPDEST SWAP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH2 0x140 SWAP2 SUB SLT PUSH2 0x30C JUMPI PUSH2 0x46C4 PUSH2 0x7FB JUMP JUMPDEST SWAP1 PUSH2 0x46CE DUP2 PUSH2 0x32CB JUMP JUMPDEST DUP3 MSTORE PUSH2 0x46DC PUSH1 0x20 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x46ED PUSH1 0x40 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x46FE PUSH1 0x60 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x470F PUSH1 0x80 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4720 PUSH1 0xA0 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x4731 PUSH1 0xC0 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x4742 PUSH1 0xE0 DUP3 ADD PUSH2 0x32CB JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 PUSH2 0x4755 DUP2 DUP4 ADD PUSH2 0x32CB JUMP JUMPDEST SWAP1 DUP4 ADD MSTORE PUSH2 0x4767 PUSH2 0x120 DUP1 SWAP3 ADD PUSH2 0x32CB JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 SWAP7 SWAP6 SWAP4 SWAP5 PUSH2 0x47D0 PUSH2 0x31E SWAP7 PUSH4 0xFFFFFFFF PUSH2 0x220 SWAP7 PUSH2 0x4798 PUSH2 0x485E SWAP7 PUSH2 0x2A0 DUP1 DUP11 MSTORE DUP10 ADD SWAP1 PUSH2 0x2C52 JUMP JUMPDEST SWAP12 PUSH1 0x20 DUP9 ADD MSTORE AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD SWAP1 DUP1 MLOAD ISZERO ISZERO DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x120 DUP1 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE PUSH2 0x140 SWAP1 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 ADD MSTORE JUMP JUMPDEST ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x48B0 PUSH2 0x48A9 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 AND SWAP1 JUMP JUMPDEST PUSH2 0x533E JUMPI DUP1 MLOAD MLOAD PUSH1 0x2 DUP2 LT PUSH2 0x5316 JUMPI PUSH1 0x8 DUP2 GT PUSH2 0x52EE JUMPI SWAP3 SWAP2 SWAP1 PUSH2 0x48D3 DUP5 PUSH2 0x2A56 JUMP JUMPDEST PUSH0 SWAP5 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x4FE1 JUMPI POP POP PUSH2 0x49A3 SWAP3 SWAP4 SWAP5 POP PUSH1 0x80 DUP3 ADD SWAP2 PUSH2 0x4911 DUP4 MLOAD PUSH2 0x490C DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4582 JUMP JUMPDEST PUSH2 0x4926 PUSH2 0x3639 PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 SWAP2 PUSH2 0x493F DUP3 DUP8 MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x494D PUSH1 0x60 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH32 0x77FF76E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x44 DUP4 ADD MSTORE SWAP1 SWAP7 DUP8 SWAP2 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 DUP3 SWAP1 PUSH1 0x64 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP6 PUSH0 SWAP2 PUSH2 0x4FAE JUMPI JUMPDEST POP PUSH2 0x4ACF PUSH1 0xC0 DUP5 ADD SWAP2 PUSH2 0x4ACA PUSH2 0x4A99 DUP5 MLOAD SWAP8 PUSH2 0x4A82 PUSH2 0x4A7C PUSH2 0x49DE DUP12 MLOAD ISZERO ISZERO PUSH1 0x4 SHL PUSH1 0x1 OR SWAP1 JUMP JUMPDEST SWAP11 PUSH1 0x60 PUSH2 0x4A4C PUSH2 0x4A1B PUSH1 0x20 SWAP15 DUP16 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF SWAP1 PUSH1 0x5 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP13 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF SWAP1 PUSH1 0x6 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F SWAP1 PUSH1 0x7 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x594E JUMP JUMPDEST SWAP1 PUSH1 0x5A SWAP2 PUSH5 0xFFFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP9 PUSH2 0x4AC5 DUP7 DUP9 ADD SWAP11 PUSH2 0x4AAF DUP13 MLOAD PUSH4 0xFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x82 SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x59CE JUMP JUMPDEST PUSH2 0x59EE JUMP JUMPDEST SWAP4 PUSH1 0xA0 DUP5 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP10 DUP8 PUSH2 0x4AF1 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST AND DUP1 PUSH2 0x4BF2 JUMPI JUMPDEST POP SWAP1 PUSH2 0x4B16 DUP2 SWAP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4B46 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x4B7E SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST DUP6 ADD SWAP5 DUP6 MLOAD PUSH2 0x4B8D SWAP1 DUP12 PUSH2 0x5A12 JUMP JUMPDEST MLOAD SWAP5 MLOAD SWAP8 MLOAD PUSH4 0xFFFFFFFF AND SWAP7 MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BB7 SWAP2 PUSH2 0x41A0 JUMP JUMPDEST SWAP2 MLOAD SWAP3 MLOAD SWAP6 DUP7 SWAP6 CALLER SWAP10 AND SWAP8 PUSH2 0x4BCC SWAP6 DUP8 PUSH2 0x476E JUMP JUMPDEST SUB PUSH32 0xBC1561EEAB9F40962E2FB827A7FF9C7CDB47A9D7C84CAEEFA4ED90E043842DAD SWAP2 LOG3 JUMP JUMPDEST PUSH2 0x4C34 SWAP2 DUP5 SWAP2 DUP10 MLOAD PUSH0 DUP10 MLOAD SWAP4 DUP12 MLOAD SWAP7 DUP8 SWAP6 DUP7 SWAP5 DUP6 SWAP4 PUSH32 0xB89F18200000000000000000000000000000000000000000000000000000000 DUP6 MSTORE CALLER PUSH1 0x4 DUP7 ADD PUSH2 0x4650 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x4F91 JUMPI JUMPDEST POP ISZERO PUSH2 0x4F7C JUMPI PUSH2 0x4C63 PUSH2 0x3639 PUSH2 0x3639 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP6 MLOAD DUP1 SWAP3 PUSH32 0xD77153A700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 PUSH1 0x4 PUSH2 0x140 SWAP6 DUP7 SWAP4 GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP4 PUSH2 0x4F4D JUMPI JUMPDEST POP POP DUP2 MLOAD ISZERO ISZERO DUP1 PUSH2 0x4F33 JUMPI JUMPDEST PUSH2 0x4EE0 JUMPI SWAP1 PUSH2 0x4EAE PUSH2 0x120 PUSH2 0x4D1A PUSH2 0x4E7B PUSH2 0x4E49 PUSH2 0x4E17 PUSH2 0x4DE5 PUSH2 0x4DB3 PUSH2 0x4D81 DUP15 PUSH2 0x4D56 PUSH2 0x4D4D DUP13 DUP16 PUSH2 0x4ED9 SWAP16 SWAP1 PUSH2 0x4D1A PUSH2 0x4D22 SWAP3 PUSH2 0x4CEF DUP6 MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF SWAP1 PUSH1 0x9 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP3 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF SWAP1 PUSH1 0x8 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 DUP13 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFF SWAP1 PUSH1 0xA SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF SWAP1 PUSH1 0xB SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFF SWAP1 PUSH1 0xC SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFF SWAP1 PUSH1 0xD SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xC0 DUP8 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF SWAP1 PUSH1 0xE SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP7 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFF SWAP1 PUSH1 0xF SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF SWAP1 PUSH1 0x10 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF SWAP1 PUSH1 0x11 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST DUP10 PUSH0 PUSH2 0x4AF8 JUMP JUMPDEST PUSH2 0x181B DUP12 PUSH2 0x4EF5 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xFA93D81400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x4 MSTORE AND PUSH1 0x24 MSTORE CALLER PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x4F47 PUSH2 0x4F42 DUP7 MLOAD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x4CB0 JUMP JUMPDEST PUSH2 0x4F6D SWAP3 SWAP4 POP DUP1 RETURNDATASIZE LT PUSH2 0x4F75 JUMPI JUMPDEST PUSH2 0x4F65 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x46B0 JUMP JUMPDEST SWAP1 PUSH0 DUP1 PUSH2 0x4CA4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F5B JUMP JUMPDEST PUSH2 0x181B DUP11 PUSH2 0x4EF5 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x4FA8 SWAP2 POP DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x3DA8 JUMPI PUSH2 0x3D9A DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x4C46 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x4FD1 SWAP3 SWAP7 POP RETURNDATASIZE DUP8 GT PUSH2 0x4FDA JUMPI JUMPDEST PUSH2 0x4FC9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x463A JUMP JUMPDEST SWAP5 SWAP1 SWAP5 PUSH0 PUSH2 0x49B6 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4FBF JUMP JUMPDEST PUSH2 0x4FEC DUP2 DUP6 MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP7 PUSH2 0x4FFF DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP2 DUP3 ISZERO DUP1 ISZERO PUSH2 0x52E3 JUMPI JUMPDEST PUSH2 0x52BB JUMPI AND DUP1 DUP3 LT PUSH2 0x5293 JUMPI DUP2 EQ PUSH2 0x525E JUMPI PUSH1 0x40 SWAP1 DUP2 DUP11 ADD SWAP10 DUP11 MLOAD PUSH2 0x5040 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 PUSH1 0x20 SWAP12 DUP13 DUP3 ADD SWAP1 DUP14 DUP3 MLOAD SWAP2 PUSH2 0x505F DUP4 PUSH2 0x3EA JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 PUSH1 0x60 ADD SWAP4 DUP5 MLOAD PUSH2 0x5079 SWAP1 ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x5082 PUSH2 0x829 JUMP JUMPDEST SWAP4 PUSH2 0x508D SWAP1 DUP6 PUSH2 0x2ACD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE ISZERO ISZERO DUP2 DUP8 ADD MSTORE DUP7 PUSH2 0x50BE DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x50D9 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x50E3 SWAP2 PUSH2 0x447A JUMP JUMPDEST DUP1 MLOAD PUSH2 0x50EE DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x50F7 DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x520F JUMPI POP DUP2 ISZERO SWAP2 PUSH2 0x5204 JUMPI JUMPDEST POP PUSH2 0x369B JUMPI DUP10 SWAP2 JUMPDEST MLOAD SWAP10 DUP11 DUP1 SWAP3 PUSH32 0x313CE56700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 SWAP13 DUP14 SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP3 PUSH2 0x51D7 JUMPI JUMPDEST POP POP PUSH1 0x12 SWAP1 PUSH1 0xFF SWAP2 DUP1 DUP4 DUP4 AND GT PUSH0 EQ PUSH2 0x5183 JUMPI DUP11 PUSH32 0x686D360700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 SWAP11 POP SWAP1 PUSH2 0x51A7 SWAP3 SWAP2 SUB AND PUSH2 0x519F DUP6 DUP9 PUSH2 0x2AB4 JUMP JUMPDEST SWAP1 PUSH1 0xFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x51CB DUP2 PUSH2 0x51C6 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x4526 JUMP JUMPDEST SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 ADD PUSH2 0x48D7 JUMP JUMPDEST PUSH2 0x51F6 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x51FD JUMPI JUMPDEST PUSH2 0x51EE DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x450D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5149 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x51E4 JUMP JUMPDEST MLOAD ISZERO ISZERO SWAP1 POP PUSH0 PUSH2 0x5104 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP MLOAD PUSH2 0x521D DUP2 PUSH2 0x3EA JUMP JUMPDEST PUSH2 0x5226 DUP2 PUSH2 0x3EA JUMP JUMPDEST SUB PUSH2 0x5236 JUMPI PUSH2 0x369B JUMPI DUP10 SWAP2 PUSH2 0x510C JUMP JUMPDEST PUSH32 0xA1E9DD9D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4F4B634E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x6E8F194700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP2 DUP10 AND DUP4 EQ PUSH2 0x5015 JUMP JUMPDEST PUSH32 0x707BDF5800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x5ED4BA8F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0xDB771C8000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 DUP3 DUP2 SLOAD SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP3 PUSH1 0x20 DUP4 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x53ED JUMPI POP POP POP PUSH2 0x31E SWAP3 POP SUB DUP4 PUSH2 0x7BE JUMP JUMPDEST DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x53D7 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x344D JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x542A JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x282B JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0x5494 JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x542A JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x344D JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0x5476 JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x54C3 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x55F1 JUMPI PUSH32 0x0 SWAP2 PUSH2 0x5533 DUP2 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST DUP3 DUP2 ADD SWAP3 DUP4 SLT PUSH0 DUP3 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x282B JUMPI DUP3 PUSH2 0x55A7 JUMPI POP PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD SWAP1 DUP2 GT PUSH2 0x282B JUMPI PUSH2 0x31E SWAP5 TSTORE PUSH2 0x5C1A JUMP JUMPDEST ISZERO PUSH2 0x55B6 JUMPI JUMPDEST PUSH2 0x31E SWAP3 PUSH2 0x5C1A JUMP JUMPDEST PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x282B JUMPI PUSH2 0x31E SWAP5 TSTORE SWAP3 POP PUSH2 0x55AD JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x564F JUMPI JUMPDEST POP PUSH2 0x5627 JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x282B JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x5612 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0x5666 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0x56D5 PUSH2 0x2AD6 SWAP5 DUP1 PUSH2 0x56B4 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MSTORE PUSH2 0x3CA2 PUSH2 0x56C6 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH2 0x3C9B DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST PUSH2 0x56EA PUSH2 0x31E SWAP3 PUSH2 0x5499 JUMP JUMPDEST SWAP1 PUSH2 0x54EE JUMP JUMPDEST PUSH2 0x570B DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP2 SLOAD PUSH3 0xF4240 SWAP1 DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x282B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SSTORE PUSH2 0x5742 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH0 DUP1 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP2 SLOAD ADD SWAP1 SSTORE AND PUSH0 DUP1 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x578C DUP2 SWAP1 PUSH3 0xF4240 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH0 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP4 DUP2 PUSH2 0x57E2 PUSH1 0x4 DUP3 ADD SWAP1 PUSH3 0xF4240 PUSH1 0x40 PUSH1 0x60 DUP5 ADD SWAP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0xB0F JUMPI PUSH2 0x57F3 JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x237B PUSH2 0x31E SWAP3 PUSH2 0x755 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0x5919 JUMPI PUSH2 0x5838 DUP4 PUSH2 0x5832 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x399B JUMP JUMPDEST PUSH2 0x5857 DUP6 PUSH2 0x37A4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0x5866 DUP2 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5881 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x58BA DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0x30C JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x57E2 JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 SWAP2 SWAP1 DUP3 JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x59C2 JUMPI PUSH2 0x5966 DUP5 DUP4 PUSH2 0x2AB4 JUMP JUMPDEST MLOAD PUSH1 0xFF SWAP2 PUSH2 0x5973 DUP7 PUSH2 0x327F JUMP JUMPDEST SWAP2 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x542A JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x282B JUMPI DUP1 DUP6 LT ISZERO PUSH2 0x59BD JUMPI POP DUP4 JUMPDEST PUSH1 0x5 SWAP1 DUP2 GT PUSH2 0x542A JUMPI DUP2 PUSH1 0x7 SWAP2 SHR AND PUSH2 0x344D JUMPI PUSH1 0x1 SWAP4 PUSH1 0x1F SWAP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP4 ADD SWAP3 PUSH2 0x5953 JUMP JUMPDEST PUSH2 0x5994 JUMP JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP3 POP POP JUMP JUMPDEST PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0x28DA JUMPI PUSH5 0x174876E800 PUSH2 0x350 SWAP3 DIV SWAP1 PUSH2 0x5410 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x28DA JUMPI PUSH2 0x350 SWAP2 PUSH5 0x174876E800 PUSH1 0x42 SWAP3 DIV SWAP1 PUSH2 0x5452 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP2 PUSH2 0x5B8F JUMPI JUMPDEST POP DUP4 LT PUSH2 0x5B67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB0F JUMPI PUSH0 SWAP3 PUSH2 0x5B4A JUMPI JUMPDEST POP POP DUP3 GT PUSH2 0x5B22 JUMPI DUP2 DUP2 PUSH2 0x5B0C PUSH2 0x5AF5 PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP6 PUSH2 0x5AEF PUSH2 0x5B1D SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x3402 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 JUMP JUMPDEST PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x5B60 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x5AA0 JUMP JUMPDEST PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x5BA6 SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0xB08 JUMPI PUSH2 0xAF9 DUP2 DUP4 PUSH2 0x7BE JUMP JUMPDEST PUSH0 PUSH2 0x5A5D JUMP JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5BBF DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x5BCF JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5C0F SWAP6 SWAP7 POP PUSH2 0x5C09 SWAP4 SWAP3 PUSH2 0x5C02 SWAP3 PUSH2 0x5BE8 SWAP3 SUB PUSH2 0x385E JUMP JUMPDEST SWAP4 PUSH1 0xA0 PUSH2 0x5BF9 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x2AB4 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3295 JUMP JUMPDEST SWAP1 PUSH2 0x33DE JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x5BC8 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E CODESIZE NOT DUP15 0xCF SHL 0x26 0xF9 0xC0 0xF7 0xD2 0xEF LOG0 0xB7 MSTORE SLOAD PUSH1 0xEF DUP8 PUSH18 0xC838C3A90520BBA7B26BCAB764736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"701:1544:88:-:0;;;;;;;;;-1:-1:-1;701:1544:88;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;-1:-1:-1;;701:1544:88;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;29973:33:67;-1:-1:-1;;;;;701:1544:88;;;:::i;:::-;3908:87:67;;;;:::i;:::-;8718:4:66;;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;29973:20:67;701:1544:88;;;-1:-1:-1;701:1544:88;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;29973:33:67;701:1544:88;1616:3:41;701:1544:88;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;22690:40:67;701:1544:88;;;;;:::i;:::-;;;:::i;:::-;;3908:87:67;;:::i;:::-;8882:4:66;;;:::i;:::-;22690:40:67;:::i;:::-;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;701:1544:88;;;;;3908:87:67;;:::i;:::-;701:1544:88;;38573:27:67;701:1544:88;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;28077:25:67;;;:::i;:::-;28186:47;28207:26;;;;28186:47;;:::i;:::-;701:1544:88;-1:-1:-1;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;28247:17:67;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;-1:-1:-1;;;;;39438:11:67;701:1544:88;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;28912:13:67;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;-1:-1:-1;701:1544:88;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;30797:32:67;701:1544:88;;;;;;;;;:::i;:::-;;;;;30797:32:67;:::i;:::-;701:1544:88;;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8882:4:66;;;:::i;:::-;701:1544:88;;26213:29:67;26110:40;;;:::i;:::-;26213:29;;701:1544:88;;26180:84:67;;;;701:1544:88;26180:84:67;;701:1544:88;;26180:84:67;;701:1544:88;;;;;;:::i;:::-;26130:19:67;701:1544:88;;;;26180:84:67;701:1544:88;-1:-1:-1;;;;;701:1544:88;;26180:84:67;;;;;;701:1544:88;26180:84:67;26282:37;26180:84;-1:-1:-1;26180:84:67;;;701:1544:88;2487:20:90;;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;2487:20:90;701:1544:88;26282:37:67;;:::i;26180:84::-;2487:20:90;26180:84:67;;;;;701:1544:88;26180:84:67;701:1544:88;26180:84:67;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;:::i;701:1544:88:-;;;;;-1:-1:-1;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;1038:1:71;701:1544:88;-1:-1:-1;701:1544:88;;7916:84:46;;;701:1544:88;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;701:1544:88;;;;;;24124:61:67;:40;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;24124:40:67:-;:61;;701:1544:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;701:1544:88;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;1012:16;701:1544;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;-1:-1:-1;701:1544:88;23313:18:67;701:1544:88;;;-1:-1:-1;701:1544:88;;23356:17:67;;-1:-1:-1;;;;;701:1544:88;;;23356:11:67;701:1544:88;;;;;;;23356:17:67;701:1544:88;:::i;:::-;;;;23438:26:67;;;;:::i;:::-;23488:24;;;;:::i;:::-;23549;;;;:::i;:::-;23589:13;-1:-1:-1;23604:13:67;;;;;;701:1544:88;;;;;;;;;;:::i;23619:3:67:-;23662:20;;701:1544:88;23662:20:67;;701:1544:88;;;;;;;;;;23662:20:67;701:1544:88;;23711:31:67;:20;23732:9;;23711:20;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;23711:20:67;23732:9;;:::i;:::-;701:1544:88;-1:-1:-1;;;;;701:1544:88;;;23732:9:67;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;23711:31:67;701:1544:88;:::i;:::-;23696:46:67;;;;:::i;:::-;;;;;;:::i;:::-;;1237:14:41;1460:31;;23756:46:67;;;;:::i;:::-;701:1544:88;1616:3:41;701:1544:88;23816:63:67;;;;:::i;:::-;701:1544:88;;23589:13:67;;701:1544:88;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;28691:13:67;701:1544:88;;;-1:-1:-1;701:1544:88;;;28691:41:67;;701:1544:88;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;7067:25:66;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;7067:25;:::i;:::-;701:1544:88;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;;:::i;:::-;;;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;1146:60;701:1544;;;-1:-1:-1;701:1544:88;;1146:60;:::i;:::-;701:1544;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;;;;;37491:23:67;701:1544:88;;;;:::i;:::-;36425:58:67;;;:::i;:::-;3908:87;;:::i;:::-;701:1544:88;;;;;;;;;;;;;37491:23:67;37492:10;;;37491:23;;;;:::i;:::-;37524:718;;;;;37492:10;37639:63;37492:10;37768:26;37492:10;;37639:63;:::i;:::-;;701:1544:88;;37768:26:67;;;;;;701:1544:88;37768:26:67;;;:::i;:::-;;;;37524:718;701:1544:88;;;;1443:21:42;1439:82;;38028:27:67;701:1544:88;1530:151:42;;;;701:1544:88;38011:44:67;38224:6;38007:110;38082:20;37491:23;38082:20;701:1544:88;37491:23:67;38082:20;1439:82:42;1487:23;37491::67;1487::42;701:1544:88;37491:23:67;1487::42;701:1544:88;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;22085:11:67;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;:::i;:::-;22179:61:67;701:1544:88;;22179:61:67;;;:::i;:::-;22263:24;;;;:::i;:::-;22303:13;-1:-1:-1;22318:13:67;;;;;;701:1544:88;;;;;;;;:::i;22333:3:67:-;701:1544:88;22381:20:67;22442:35;701:1544:88;22381:31:67;:20;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;22381:20:67;22402:9;;;;;:::i;701:1544:88:-;22442:35:67;:::i;:::-;22426:51;;;;:::i;:::-;701:1544:88;;22303:13:67;;701:1544:88;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2143:93;701:1544;;;:::i;:::-;1083:103:50;;;;;;;:::i;:::-;701:1544:88;;;;2143:93;;;;;701:1544;2143:93;;-1:-1:-1;;;;;701:1544:88;;;;2143:93;;701:1544;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;701:1544:88;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;2143:93;2158:4;-1:-1:-1;2158:4:88;2143:93;;;;;;;;701:1544;1148:1:50;;:::i;:::-;701:1544:88;2143:93;;;;;;;;;;;;;:::i;:::-;;;;;701:1544;;;;;-1:-1:-1;;701:1544:88;;;;;3908:87:67;;:::i;:::-;701:1544:88;9187:17:69;2806:53:52;701:1544:88;;;;;;;;;;;;;1237:14:41;29693:33:67;-1:-1:-1;;;;;701:1544:88;;;:::i;:::-;3908:87:67;;;;:::i;:::-;8718:4:66;;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;29693:20:67;701:1544:88;;;-1:-1:-1;701:1544:88;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;29693:33:67;701:1544:88;1460:31:41;701:1544:88;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;3908:87:67;;:::i;:::-;701:1544:88;-1:-1:-1;;;;;31246:22:67;701:1544:88;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;27132:33:67;701:1544:88;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;27132:33;:::i;:::-;701:1544:88;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;5935:11:67;701:1544:88;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;5752:26:67;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;9520:18:69;1796:196:44;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;2806:53:52;1796:196:44;;701:1544:88;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;2707:73:66;;:::i;:::-;1083:103:50;;:::i;:::-;8882:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;;;;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;17044:44:66;701:1544:88;-1:-1:-1;701:1544:88;;1192:1:71;2788:189:72;958:1:71;7916:84:46;;2788:189:72;;17044:44:66;16646:28;16642:93;;32579:24:67;;-1:-1:-1;;;;;701:1544:88;;;32579:18:67;701:1544:88;;;;;;;32579:24:67;701:1544:88;;;:::i;:::-;32769:17:67;701:1544:88;32769:17:67;;-1:-1:-1;;;;;701:1544:88;;;23356:11:67;701:1544:88;;;;;;;;32753:33:67;;;701:1544:88;32796:16:67;32867:31;701:1544:88;32796:16:67;;701:1544:88;;;;32867:31:67;:::i;:::-;32846:18;701:1544:88;32846:18:67;;:52;;;-1:-1:-1;32983:3:67;701:1544:88;;32961:20:67;;;;;33026;:36;:20;701:1544:88;33026:20:67;;701:1544:88;;;;;;;;;;33026:20:67;701:1544:88;1237:14:41;1460:31;1371:127;;33026:36:67;33002:60;:18;;;:60;:::i;:::-;701:1544:88;;32946:13:67;;32961:20;;;;;;;33099:146;33155:18;;;2487:20:90;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;2487:20:90;701:1544:88;33099:146:67;;:::i;:::-;701:1544:88;33658:31:67;701:1544:88;;33658:31:67;:::i;:::-;33631:24;701:1544:88;33631:24:67;;:58;;;33727;9851:16:69;;2806:53:52;9702:26:69;2574:386:44;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;2806:53:52;2574:386:44;;33727:58:67;701:1544:88;;33699:25:67;;;701:1544:88;;;33699:25:67;;33866:133;;32941:132;-1:-1:-1;34051:3:67;701:1544:88;;34029:20:67;;;;;34295:16;701:1544:88;;;;;;;;;;;;;;34070:207:67;;34051:3;34295:16;;;;;:::i;:::-;701:1544:88;34314:16:67;;;;:::i;:::-;701:1544:88;-1:-1:-1;34291:152:67;;34517:13;;;;34702:41;34517:13;;34702:41;34517:13;34535:16;34517;;701:1544:88;34517:13:67;34727:16;34517:13;;:16;:::i;:::-;34535;;;;:::i;:::-;701:1544:88;34535:16:67;;:::i;:::-;34727;:::i;:::-;701:1544:88;34702:18:67;;:41;;;;;:::i;:::-;701:1544:88;34702:41:67;:::i;:::-;;;:::i;:::-;701:1544:88;;34014:13:67;;34291:152;34375:13;;34411:16;34375:13;34393:16;34375:13;;:16;;:13;34357:71;34375:13;;:16;:::i;:::-;34393;;:::i;:::-;701:1544:88;34411:16:67;;:::i;:::-;701:1544:88;34357:71:67;-1:-1:-1;34357:71:67;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;34357:71:67;-1:-1:-1;34357:71:67;34070:207;34149:48;34235:27;34149:16;34215:47;34149:16;;;;;:::i;:::-;701:1544:88;34172:24:67;;701:1544:88;34149:48:67;;:::i;:::-;34119:78;:24;;;:78;:::i;:::-;701:1544:88;34235:24:67;:27;:::i;:::-;701:1544:88;34215:47:67;;;;:::i;:::-;;;;;:::i;:::-;701:1544:88;34070:207:67;;;;;;34029:20;;;;;;;;;;;35092:24;;-1:-1:-1;;;;;701:1544:88;;;32579:18:67;701:1544:88;;;;;;;35092:24:67;35132:13;-1:-1:-1;35169:3:67;701:1544:88;;35147:20:67;;;;;35205:15;35252:51;35205:15;35281:21;35205:15;;701:1544:88;35205:15:67;;701:1544:88;;;;;;;;;;35205:15:67;701:1544:88;35281:18:67;;:21;:::i;:::-;701:1544:88;35252:51:67;;:::i;:::-;35234:15;;;701:1544:88;;;;;;;;;;35234:15:67;701:1544:88;;35132:13:67;;35147:20;701:1544:88;35147:20:67;-1:-1:-1;35147:20:67;;35899:205;35147:20;;35899:205;2487:20:90;35147::67;35866:16;35147:20;35364:16;35352:10;;35364:16;;;:::i;:::-;35396:17;;:::i;:::-;35392:180;;35127:187;35866:16;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;2487:20:90;701:1544:88;36070:24:67;;701:1544:88;;;;;;;35899:205:67;;;:::i;:::-;;;;1148:1:50;;:::i;:::-;701:1544:88;;;;;;;:::i;35392:180:67:-;35544:16;;;;;:::i;:::-;35392:180;;33866:133;33938:50;:21;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;33938:21:67;701:1544:88;33938:50:67;:::i;:::-;701:1544:88;33911:24:67;;701:1544:88;33866:133:67;;16642:93:66;16697:27;;-1:-1:-1;16697:27:66;701:1544:88;;;-1:-1:-1;16697:27:66;701:1544:88;;;;;-1:-1:-1;;701:1544:88;;;;;3908:87:67;;:::i;:::-;701:1544:88;-1:-1:-1;;;;;38971:11:67;701:1544:88;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;6119:58:67;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;9851:16:69;2806:53:52;9702:26:69;2574:386:44;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;2806:53:52;2574:386:44;;6119:58:67;701:1544:88;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;30290:35:67;701:1544:88;-1:-1:-1;701:1544:88;;30290:35:67;:::i;701:1544:88:-;;;;;-1:-1:-1;;701:1544:88;;;;;3908:87:67;;:::i;:::-;701:1544:88;7916:84:46;38385:15:67;701:1544:88;7916:84:46;701:1544:88;;;;;;;;;;;;;;;:::i;:::-;3908:87:67;;;;:::i;:::-;2707:73:66;;:::i;:::-;8718:4;;;:::i;:::-;1083:103:50;;:::i;:::-;16436:4:67;;;:::i;:::-;16596:40;;;:::i;:::-;701:1544:88;16651:43:67;701:1544:88;;1038:1:71;1904:184:72;7916:84:46;;;1904:184:72;;16651:43:67;16647:109;;16785:15;;;701:1544:88;16785:15:67;;;16865:21;16785:15;18155:51;16785:15;;;;701:1544:88;;;16865:21:67;;:::i;:::-;17146:30;;;;;;17080:139;17190:19;;;;;;17080:139;;;:::i;:::-;701:1544:88;;17234:52:67;701:1544:88;;7916:84:46;2495:194:70;958:1:71;7916:84:46;;2495:194:70;;17234:52:67;17230:789;;701:1544:88;18044:96:67;;;;;;;;;;;;;:::i;:::-;701:1544:88;;;;7916:84:46;2990:192:70;958:1:71;7916:84:46;;2990:192:70;;18155:51:67;18151:303;;701:1544:88;1148:1:50;;;;:::i;18151:303:67:-;18306:21;;18429:13;18306:21;-1:-1:-1;;;;;701:1544:88;;;17376:15:67;701:1544:88;;;;;;;18306:21:67;701:1544:88;-1:-1:-1;;;;;701:1544:88;;;18306:21:67;18429:13;;:::i;:::-;18151:303;;;;;;17230:789;17376:21;17857:151;17376:21;;;;;;;18044:96;17376:21;;;;;-1:-1:-1;;;;;701:1544:88;;;17376:15:67;701:1544:88;;;;;;;17376:21:67;;;:::i;:::-;17706:19;17680:24;;-1:-1:-1;;;;;701:1544:88;;;32579:18:67;701:1544:88;;;;;;;17680:24:67;17706:19;;:::i;:::-;17927:30;17975:19;;17857:151;;;:::i;:::-;17230:789;;;;;;;;;;16647:109;16717:28;-1:-1:-1;16717:28:67;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;34357:71:67;701:1544:88;;;;;-1:-1:-1;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;1192:1:71;701:1544:88;-1:-1:-1;701:1544:88;;958:1:71;7916:84:46;;701:1544:88;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;7916:84:46;701:1544:88;-1:-1:-1;701:1544:88;;7916:84:46;701:1544:88;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;39643:10:67;8718:4:66;:::i;:::-;701:1544:88;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;39670:47:67;701:1544:88;;39643:10:67;701:1544:88;39643:10:67;-1:-1:-1;;701:1544:88;39643:10:67;701:1544:88;;;;;39670:47:67;;;;701:1544:88;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;21601:11:67;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;25833:58:67;701:1544:88;;;;;:::i;:::-;;;:::i;:::-;;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;25869:15:67;701:1544:88;;;-1:-1:-1;701:1544:88;;;25833:58:67;;:::i;:::-;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;551:66:50;2806:53:52;701:1544:88;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;3908:87:67;;:::i;:::-;701:1544:88;9342:26:69;2806:53:52;701:1544:88;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;27372:6:67;701:1544:88;;;;;:::i;:::-;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;701:1544:88;;27344:10:67;;27372:6;:::i;:::-;701:1544:88;;;27396:4:67;701:1544:88;;;;;;;;-1:-1:-1;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;;:::i;:::-;3908:87:67;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;2487:14:90;701:1544:88;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;701:1544:88;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;1083:103:50;;;;;;;:::i;:::-;1617:4:88;1602:271;;;;701:1544;;1602:271;701:1544;;;;;;;;;;;1602:271;;;;;;701:1544;1602:271;;-1:-1:-1;;;;;701:1544:88;;;;1602:271;;701:1544;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;:::i;:::-;1602:271;1617:4;;;1602:271;;;;;;;;1148:1:50;;:::i;1602:271:88:-;;;;;;:::i;:::-;;;:::i;:::-;;;;701:1544;;;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;3908:87:67;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;-1:-1:-1;701:1544:88;30543:17:67;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;;;;;:::i;:::-;;;;;;;;30543:17:67;701:1544:88;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;701:1544:88;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;3510:55:99;-1:-1:-1;701:1544:88;;;;;:::i;:::-;36425:58:67;;:::i;:::-;3908:87;;:::i;701:1544:88:-;3462:31:99;;;;;37142:10:67;;3462:31:99;;;;:::i;:::-;37142:10:67;;3510:55:99;:::i;:::-;701:1544:88;;;;;3462:31:99;701:1544:88;;3462:31:99;701:1544:88;;;;:::i;:::-;;;;;;;;:::i;:::-;3908:87:67;;;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;5562:81:66;;:::i;:::-;701:1544:88;;;;;;:::i;:::-;;;7207:400:67;;;701:1544:88;;;7207:400:67;;701:1544:88;;;7207:400:67;;;701:1544:88;7207:400:67;701:1544:88;;;;;;7207:400:67;701:1544:88;;7207:400:67;701:1544:88;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;7207:400:67;701:1544:88;;;;;;:::i;:::-;7207:400:67;701:1544:88;;;;;;;;:::i;:::-;;;;;7207:400:67;;;701:1544:88;-1:-1:-1;;;;;701:1544:88;7207:400:67;;;701:1544:88;;7207:400:67;701:1544:88;;;:::i;:::-;7207:400:67;;;701:1544:88;7207:400:67;:::i;701:1544:88:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;24355:17:67;701:1544:88;;;;;:::i;:::-;-1:-1:-1;701:1544:88;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24355:17:67;:::i;:::-;701:1544:88;;;;;;;:::i;:::-;;;;;-1:-1:-1;;701:1544:88;;;;;;2620:24:90;701:1544:88;;;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;;;;:::i;:::-;3908:87:67;;:::i;:::-;701:1544:88;-1:-1:-1;701:1544:88;2620:9:90;701:1544:88;;;-1:-1:-1;701:1544:88;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;2620:24:90;701:1544:88;;;;;;;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;-1:-1:-1;;;;;4888:6:67;701:1544:88;;;;;;;;;;;:::i;:::-;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;3908:87:67:-;8709:136:70;3908:87:67;;;:::i;:::-;8882:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;30972:50:67;701:1544:88;;;;30972:50:67;:::i;:::-;701:1544:88;;;31040:15:67;701:1544:88;;;;;;;;;;8709:136:70;;;;;;;701:1544:88;8709:136:70;;;;;;:::i;:::-;;;;;;;;;;701:1544:88;;;8709:136:70;;;3908:87:67;701:1544:88;;;8856:93:70;;19917:10:31;9153:38:70;;9149:109;;3908:87:67;:::o;9149:109:70:-;9214:33;701:1544:88;9214:33:70;8709:136;701:1544:88;9214:33:70;8856:93;8899:39;701:1544:88;8899:39:70;8709:136;701:1544:88;8899:39:70;8709:136;;;;;;;;;;-1:-1:-1;8709:136:70;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;701:1544:88;;;;;;;;;;;:::o;:::-;;;;;19596:4:67;701:1544:88;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;701:1544:88;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;701:1544:88;;;;:::i;:::-;;;-1:-1:-1;701:1544:88;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;701:1544:88;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;701:1544:88;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::o;3908:87:67:-;24408:21;3908:87;;;:::i;:::-;8718:4:66;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;24408:21:67;701:1544:88;24459:1166:67;7916:84:46;24759:35:67;;;:::i;:::-;24840:38;24459:1166;24840:38;;;:::i;:::-;24459:1166;24925:39;;;:::i;:::-;701:1544:88;9470:46:72;701:1544:88;6019:108:46;;11059:44:72;701:1544:88;11059:44:72;;701:1544:88;2895:125:71;;11059:44:72;6019:108:46;;701:1544:88;;;:::i;:::-;958:1:71;7916:84:46;;;;;3567:86:72;25319:37:67;701:1544:88;;7916:84:46;958:1:71;7916:84:46;;;;;701:1544:88;;25137:473:67;;;701:1544:88;958:1:71;7916:84:46;;;;;701:1544:88;;25137:473:67;;;701:1544:88;958:1:71;7916:84:46;;;;;701:1544:88;;25137:473:67;;;701:1544:88;;;:::i;:::-;;;;25137:473:67;24459:1166;;701:1544:88;25137:473:67;24459:1166;;701:1544:88;25137:473:67;24459:1166;;701:1544:88;;;;24459:1166:67;;701:1544:88;;24459:1166:67;701:1544:88;;24459:1166:67;;;701:1544:88;;24459:1166:67;7916:84:46;;;701:1544:88;;24459:1166:67;;;701:1544:88;7916:84:46;;;;;701:1544:88;;24459:1166:67;;;701:1544:88;958:1:71;7916:84:46;;;;;701:1544:88;;24459:1166:67;;;701:1544:88;958:1:71;7916:84:46;;701:1544:88;;24459:1166:67;;;701:1544:88;;39955:69:67;39999:18;;;;;;40301:144;40352:9;40348:69;;1019:819:94;40364:1:67;1019:819:94;;40364:1:67;1019:819:94;;39438:11:67;-1:-1:-1;;;;;39438:11:67;701:1544:88;1019:819:94;;;40364:1:67;1019:819:94;;;;;;40364:1:67;1019:819:94;;;40364:1:67;1019:819:94;4001:99:67;-1:-1:-1;;;;;4061:6:67;701:1544:88;1148:4:74;1140:31;1136:104;;4001:99:67:o;1136:104:74:-;1194:35;;;;;;8911:160:66;-1:-1:-1;;;;;701:1544:88;;9217:15:66;701:1544:88;9217:15:66;701:1544:88;;7916:84:46;701:1544:88;9217:15:66;701:1544:88;;7916:84:46;8984:24:66;8980:85;;8911:160;:::o;8980:85::-;9031:23;9217:15;9031:23;;701:1544:88;;9217:15:66;9031:23;9293:163;-1:-1:-1;;;;;701:1544:88;;9604:15:66;701:1544:88;9604:15:66;701:1544:88;;1038:1:71;701:1544:88;9604:15:66;701:1544:88;;7916:84:46;;;9367:25:66;9363:87;;9293:163;:::o;9363:87::-;9415:24;9604:15;9415:24;;701:1544:88;;9604:15:66;9415:24;12436:323;;-1:-1:-1;;;;;701:1544:88;;:::i;:::-;;;-1:-1:-1;701:1544:88;12587:18:66;701:1544:88;;;;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;12660:14:66;701:1544:88;;;-1:-1:-1;701:1544:88;;12694:11:66;701:1544:88;;;-1:-1:-1;701:1544:88;;;;;;;;;1947:15:73;;701:1544:88;;:::i;:::-;1947:24:73;;2002:26;;;:::i;:::-;1981:18;;;;:47;;;2061:24;;;:::i;:::-;2038:20;;;;:47;;;2127:24;;;:::i;:::-;2095:29;;;;;;:56;2194:74;701:1544:88;;;2194:74:73;:::i;:::-;2161:30;;;:107;2300:24;;;:::i;:::-;2278:19;;;:46;;;701:1544:88;;1038:1:71;;7916:84:46;1038:1:71;7916:84:46;;;;2365:119:73;;;;12436:323:66;2365:190:73;;;;12436:323:66;2571:13:73;-1:-1:-1;2586:13:73;;;;;;12436:323:66;;;;;;;;;;;;;:::o;2601:3:73:-;2663:15;;;;;;;2755:33;2663:15;2720:20;2663:15;701:1544:88;2649:33:73;2663:15;;:18;:15;:18;:15;;:18;:::i;701:1544:88:-;2720:20:73;701:1544:88;;;;;;;;;;2720:20:73;701:1544:88;2755:18:73;;:33;;;;;:::i;:::-;;;:::i;:::-;;2827:23;;;:::i;:::-;2802:48;:19;;;:48;:::i;:::-;701:1544:88;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;701:1544:88;;;;3059:78:73;;3800:23;;701:1544:88;;;3800:69:73;;;;2601:3;3977:660;;;;2601:3;;;;;;2571:13;701:1544:88;2571:13:73;;;;3977:660;701:1544:88;4236:195:73;701:1544:88;4157:23:73;701:1544:88;4062:56:73;701:1544:88;;4062:56:73;:::i;:::-;4157:20;;:23;:::i;:::-;701:1544:88;;;4236:195:73;;:::i;:::-;4454:30;;4450:173;;3977:660;;;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;:::i;:::-;4450:173;;;;;;3800:69;701:1544:88;;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;;3059:78;3114:8;;;;;;;;;;2365:190;701:1544:88;;;;-1:-1:-1;958:1:71;7916:84:46;1192:1:71;7916:84:46;701:1544:88;2365:190:73;;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;7222:480:66;-1:-1:-1;;;;;701:1544:88;7336:15:66;701:1544:88;7336:15:66;701:1544:88;;;7336:15:66;701:1544:88;;7916:84:46;;;958:1:71;7916:84:46;;701:1544:88;11059:44:72;;;701:1544:88;2895:125:71;;11059:44:72;6019:108:46;;7592:82:66;;;;7584:111;;7222:480;:::o;7592:82::-;7648:26;;7627:47;7648:26;7627:47;;:::i;:::-;701:1544:88;7608:15:66;:66;;7584:111;7222:480;:::o;958:1:71:-;701:1544:88;;958:1:71;701:1544:88;958:1:71;;701:1544:88;958:1:71;;;;:::o;19669:4:31:-;;701:1544:88;19669:4:31;;;;;;701:1544:88;19669:4:31;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;6731:255:72:-;6019:108:46;6731:255:72;958:1:71;6019:108:46;;19669:4:31;;;;;;;;;;;;;;;;6731:255:72;:::o;701:1544:88:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;;;;;;465:4:47;;;;;;;:::o;:::-;;;;;;;;;;1320:325;;465:4;19669::31;;;;;;;;;;;;;;;1625:13:47;;;:::i;6992:619:72:-;;19917:10:31;7292:26:72;;7288:97;;19669:4:31;465::47;;701:1544:88;19627:2:31;701:1544:88;9400:76:46;;2539:209;;701:1544:88;2539:209:46;;;;6992:619:72;:::o;9400:76:46:-;9450:15;-1:-1:-1;9450:15:46;;-1:-1:-1;9450:15:46;36489:409:67;859:9:38;36531:114:67;;701:1544:88;36679:15:67;701:1544:88;7916:84:46;36722:71:67;;701:1544:88;9187:17:69;3051:52:52;36489:409:67:o;36722:71::-;36765:17;36572:5;36765:17;;36572:5;36765:17;36531:114;36600:34;36572:5;36600:34;;36572:5;36600:34;1741:504:42;701:1544:88;;1881:21:42;:17;;2008:160;;;;;;4625:582:99;;4797:8;;-1:-1:-1;701:1544:88;;5874:21:99;:17;;6046:142;;;;;;5870:383;6225:17;5894:1;6225:17;;5894:1;6225:17;4793:408;701:1544:88;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;701:1544:88;5121:24:99;701:1544:88;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;;9628:806:72;;701:1544:88;9811:24:72;;;:::i;:::-;9470:46;701:1544:88;6019:108:46;;-1:-1:-1;9952:13:72;;;;;;10406:21;;;9628:806;:::o;9967:3::-;6019:108:46;10054:42:72;;;;:::i;:::-;6019:108:46;;3267:1:71;;;;;;701:1544:88;3267:1:71;;;10348:37:72;;;;:::i;:::-;701:1544:88;;9937:13:72;;7436:424:73;701:1544:88;;;;;:::i;:::-;;;;:::i;:::-;7589:31:73;;;7636:21;;465:4:47;7585:269:73;7436:424::o;7585:269::-;701:1544:88;;7691:19:73;701:1544:88;;:::i;:::-;7678:32:73;7691:19;;7733:22;:30;701:1544:88;7733:22:73;:32;:22;;701:1544:88;-1:-1:-1;;;;;701:1544:88;;;;-1:-1:-1;;;;;701:1544:88;;;7733:30:73;701:1544:88;;7733:32:73;;;;701:1544:88;7733:32:73;;;;;;;;;701:1544:88;7733:32:73;;;7726:39;7674:180;7436:424::o;7733:32::-;;;;:22;:32;:22;:32;;;;;;;:::i;7674:180::-;7803:40;701:1544:88;7803:40:73;;701:1544:88;7803:40:73;1192:349:50;551:66;2806:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;1316:93::-;1368:30;-1:-1:-1;1368:30:50;;-1:-1:-1;1368:30:50;1547:106;1640:5;551:66;3051:52:52;1547:106:50:o;2657:309:90:-;-1:-1:-1;;;;;701:1544:88;2657:309:90;701:1544:88;;;;;;2822:16:90;701:1544:88;;2854:24:90;;;;2861:17;2854:24;:::o;2818:142::-;2916:33;701:1544:88;2916:24:90;701:1544:88;;;;2916:11:90;701:1544:88;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;2916:24:90;701:1544:88;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;2916:33:90;701:1544:88;2909:40:90;:::o;2786:145:66:-;9187:17:69;2806:53:52;701:1544:88;2837:88:66;;2786:145::o;2837:88::-;2894:20;-1:-1:-1;2894:20:66;;-1:-1:-1;2894:20:66;4619:1444:56;;;5749:30;701:1544:88;;5749:30:56;:::i;:::-;5794:13;5806:1;5830:3;701:1544:88;;5809:19:56;;;;;6003:11;6002:44;6003:11;:25;:11;;701:1544:88;6003:11:56;;;:::i;:::-;701:1544:88;6003:25:56;:::i;:::-;6002:44;:::i;:::-;5986:60;;;;:::i;:::-;701:1544:88;;5794:13:56;;5809:19;;;;;4619:1444::o;887:427:47:-;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;;;;;;;;;;887:427;:::o;3450:119:66:-;;3544:17;3450:119;3544:17;:::i;:::-;701:1544:88;;;;;;3543:18:66;701:1544:88;-1:-1:-1;701:1544:88;3543:18:66;;:::i;1736:177:41:-;;1848:58;1736:177;1616:3;701:1544:88;1848:58:41;;:::i;8289:494:90:-;;;;;;8422:32;;;;;:::i;:::-;8488:17;8468:37;;8464:313;;8289:494;;;;;;;:::o;8464:313::-;8525:25;;;8521:132;;701:1544:88;8726:25:90;701:1544:88;;;8726:25:90;;:::i;:::-;8464:313;;;;;;;8521:132;8577:61;;-1:-1:-1;;;;;8577:61:90;;;;701:1544:88;8577:61:90;701:1544:88;;;;;;8577:61:90;;17101:159:66;859:9:38;:23;17174:79:66;;;17101:159;:::o;17174:79::-;701:1544:88;7916:84:46;17211:15:66;701:1544:88;7916:84:46;701:1544:88;17101:159:66;:::o;701:1544:88:-;;;;;;;;;;:::o;3162:428:90:-;;859:9:38;3337:114:90;;-1:-1:-1;;;;;3545:28:90;701:1544:88;;3378:5:90;701:1544:88;3545:9:90;701:1544:88;;;3378:5:90;701:1544:88;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;3545:28:90;701:1544:88;;;;;;;;;;;3162:428:90:o;5216:1180::-;;;-1:-1:-1;;;;;701:1544:88;;;5298:18:90;;;5294:80;;5409:21;:15;;;-1:-1:-1;;;;;701:1544:88;;;5409:9:90;701:1544:88;;;;;;;5409:21:90;701:1544:88;5444:23:90;;;5440:115;;701:1544:88;;;5589:21:90;:15;;;-1:-1:-1;;;;;701:1544:88;;;5409:9:90;701:1544:88;;;;;;;5589:21:90;701:1544:88;5681:29:90;:20;;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;5681:20:90;701:1544:88;5681:29:90;:::i;:::-;5751:14;;;:::i;:::-;5777:20;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;5777:20:90;701:1544:88;;6113:62:90;;;;;;701:1544:88;;;6113:62:90;;-1:-1:-1;;;;;701:1544:88;;;6113:62:90;;;701:1544:88;5314:1:90;701:1544:88;;;;;;;;;;;;5314:1:90;6349:40;;;;5314:1;701:1544:88;;;;;6113:62:90;;;;;;;;;5216:1180;-1:-1:-1;701:1544:88;;;;;;;;;;;;;6349:40:90;;;;5216:1180::o;6113:62::-;;;;;;:::i;:::-;;;;5440:115;5490:54;5314:1;5490:54;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;-1:-1:-1;34357:71:67;5294:80:90;5339:24;5314:1;5339:24;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;34357:71:67;5894:129:66;;;:::i;:::-;7067:25;;;:::i;:::-;6800:73;;;5894:129;:::o;6800:73::-;-1:-1:-1;;;;;6846:16:66;;-1:-1:-1;6846:16:66;701:1544:88;6846:16:66;701:1544:88;;-1:-1:-1;6846:16:66;1418:149:40;1500:6;1496:65;;1418:149::o;1496:65::-;1529:21;;;;;;6714:614:43;;;701:1544:88;;;;;;;1666:6:40;;;;;;:16;;;6714:614:43;1662:75:40;;;;7101:21:43;;;:::i;:::-;7138:13;7150:1;7153:10;;;;;;7299:22;;;;;6714:614;:::o;7165:3::-;7205:10;465:4:47;838:5;7205:10:43;701:1544:88;7205:10:43;;;:::i;:::-;701:1544:88;1946:22:43;7245:17;;;;:::i;:::-;701:1544:88;7264:13:43;;;;:::i;:::-;701:1544:88;1946:22:43;;:::i;:::-;838:5:47;:::i;:::-;465:4;7184:94:43;;;;:::i;:::-;701:1544:88;;7138:13:43;;1666:16:40;1676:6;;;-1:-1:-1;1666:16:40;;;;701:1544:88;;;;;;;;;;;;;:::i;20684:329:70:-;;701:1544:88;20684:329:70;701:1544:88;-1:-1:-1;;;;;;20857:66:70;20684:329;701:1544:88;;20857:66:70;;;;;;;701:1544:88;20857:66:70;;701:1544:88;20857:66:70;;;701:1544:88;;;;;;:::i;:::-;;-1:-1:-1;;701:1544:88;;;;;;;;;:::i;:::-;20857:66:70;701:1544:88;;20857:66:70;;;;;;;-1:-1:-1;20857:66:70;;;20684:329;701:1544:88;;20853:154:70;;20684:329::o;20853:154::-;20955:41;-1:-1:-1;20955:41:70;20857:66;-1:-1:-1;20955:41:70;20857:66;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;6574:856:73;6819:15;;;;;701:1544:88;7033:13:73;-1:-1:-1;7048:13:73;;;;;;6574:856;;;;;:::o;7063:3::-;16616:19:67;7120:18:73;7395:17;1237:14:41;7120:18:73;7107:35;7120:21;:18;;;;;:21;:::i;:::-;;7107:35;:::i;:::-;7082:60;:19;;;;;:60;:::i;:::-;701:1544:88;;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;;1460:31:41;7395:17:73;;;:::i;:::-;701:1544:88;7033:13:73;;18466:2486:67;;;;;;;18855:24;;-1:-1:-1;;;;;701:1544:88;;;32579:18:67;701:1544:88;;;;;;;18855:24:67;18895:13;18907:1;18938:3;18914:15;;;;701:1544:88;;18910:26:67;;;;;18978:18;;;;;:::i;:::-;19089:24;19104:9;;;;;:::i;19089:24::-;-1:-1:-1;;;;;701:1544:88;;19089:24:67;;;19085:132;;19298:17;;;701:1544:88;19298:17:67;;;;;:::i;:::-;701:1544:88;19298:17:67;;:::i;:::-;19426:80;19461:17;19480:25;19461:17;;;;;:::i;19480:25::-;701:1544:88;19426:80:67;;:::i;:::-;19408:15;;;701:1544:88;;;;;;;;;;19408:15:67;701:1544:88;;18895:13:67;;19085:132;19140:62;19169:9;;19161:18;19169:9;;;;;:::i;19161:18::-;19140:62;18907:1;19140:62;-1:-1:-1;;;;;701:1544:88;;;19140:62:67;701:1544:88;;;;;;;;;;;18910:26:67;;;;;;;;;;;19553:48;701:1544:88;;8470:156:46;;2094:277:72;8470:156:46;;2094:277:72;;19553:48:67;701:1544:88;;;19670:21:67;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;19670:21:67;701:1544:88;-1:-1:-1;;;;;701:1544:88;19788:77:67;18914:15;701:1544:88;;;;;;19788:77:67;;;;701:1544:88;19788:77:67;;;;;;:::i;:::-;;;;;;;;;;20037:42;19788:77;18907:1;19788:77;;;18890:627;19906:12;;;;:::i;:::-;20037:42;:::i;:::-;20374:13;;;;:::i;:::-;20423:12;;;;;:::i;:::-;20511:30;;;20507:119;;2487:20:90;;;;20641:210:67;;2487:20:90;20804:37:67;18914:15;2487:20:90;701:1544:88;2487:20:90;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;2487:20:90;701:1544:88;20818:15:67;;;701:1544:88;20804:37:67;:::i;:::-;701:1544:88;;;;;;;20641:210:67;;;:::i;:::-;;;;20924:21;18907:1;20924:21;;18466:2486::o;20507:119::-;20564:51;18907:1;20564:51;19788:77;701:1544:88;;;928:3:90;701:1544:88;928:3:90;-1:-1:-1;34357:71:67;19788:77;;;;18914:15;19788:77;18914:15;19788:77;;;;;;;:::i;:::-;;;;21457:370:70;;701:1544:88;-1:-1:-1;;;;;;21659:79:70;21457:370;;;701:1544:88;;;21659:79:70;;;;;;;701:1544:88;21659:79:70;;701:1544:88;21659:79:70;;;701:1544:88;;;;;;:::i;:::-;;;;;;-1:-1:-1;;701:1544:88;;;;;;;;;:::i;:::-;21659:79:70;701:1544:88;;21659:79:70;;;;;;;-1:-1:-1;21659:79:70;;;21457:370;701:1544:88;;21655:166:70;;21457:370::o;21655:166::-;21770:40;-1:-1:-1;21770:40:70;21659:79;-1:-1:-1;21770:40:70;21659:79;;;;;;;;;;;;;;:::i;:::-;;;;6940:1043;;701:1544:88;;:::i;:::-;-1:-1:-1;701:1544:88;1792:1:71;;2016:27;701:1544:88;2091:22:71;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;701:1544:88;7916:84:46;;2016:27:71;;;2091:22;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;2249:31;;;:::i;:::-;701:1544:88;7916:84:46;;;2016:27:71;;;2091:22;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;2249:31;;;:::i;:::-;2341:30;;;:::i;:::-;701:1544:88;7916:84:46;;;;2016:27:71;;2091:22;958:1;2091:22;:::i;:::-;2171:21;;;:::i;:::-;2249:31;;;:::i;:::-;2341:30;;;:::i;:::-;2431:34;;;:::i;:::-;701:1544:88;7916:84:46;;;2016:27:71;;;;;958:1;701:1544:88;7916:84:46;;;958:1:71;2091:22;;;:::i;:::-;701:1544:88;7916:84:46;;701:1544:88;;;:::i;:::-;958:1:71;7916:84:46;;;;;701:1544:88;;;;7916:84:46;958:1:71;7916:84:46;;;;;701:1544:88;;7080:896:70;;;701:1544:88;958:1:71;7916:84:46;;;;;701:1544:88;;7080:896:70;;;701:1544:88;958:1:71;7916:84:46;;701:1544:88;;7080:896:70;;;701:1544:88;;;7080:896:70;;;701:1544:88;;;7080:896:70;;;701:1544:88;;;7080:896:70;;;701:1544:88;;;7080:896:70;;;701:1544:88;;;7080:896:70;;;701:1544:88;;;7080:896:70;;;701:1544:88;-1:-1:-1;;;;;701:1544:88;7080:896:70;;;701:1544:88;;:::o;7374:909:90:-;;;;-1:-1:-1;;;;;701:1544:88;;;;7477:19:90;;;7473:84;;701:1544:88;;;7571:21:90;;;7567:87;;7664:17;:33;:17;:24;:17;;;-1:-1:-1;;;;;701:1544:88;;;7664:11:90;701:1544:88;;;;;;;7664:33:90;701:1544:88;;8004:60:90;;;;;;701:1544:88;;;8004:60:90;;-1:-1:-1;;;;;701:1544:88;;;8004:60:90;;;701:1544:88;;;;;;;;;;;;;;;8238:38:90;;;;7494:1;701:1544:88;;;;;8004:60:90;701:1544:88;7567:87:90;7615:28;7494:1;7615:28;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;34357:71:67;7473:84:90;7519:27;7494:1;7519:27;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;34357:71:67;5694:130:66;701:1544:88;6394:25:66;701:1544:88;6375:15:66;:44;;:79;;;5694:130;5751:67;;5694:130::o;5751:67::-;5794:13;-1:-1:-1;5794:13:66;;-1:-1:-1;5794:13:66;6375:79;701:1544:88;568:1:75;6423:15:66;701:1544:88;7916:84:46;;;6375:79:66;;1913:1:69;;701:1544:88;;;;;;:::i;:::-;;;;:::i;:::-;1913:1:69;;;;;701:1544:88;1913:1:69;;;;;701:1544:88;1913:1:69;;;;;;;;;;;;;;;;;;;;;701:1544:88;;;1913:1:69;;;;;;;:::o;:::-;;;;;;;;;;701:1544:88;;;1913:1:69;;;;;:::o;2080:2::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;2080:2:69;701:1544:88;;2080:2:69;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;701:1544:88;;;2080:2:69;;;;;;;701:1544:88;2080:2:69;;;;;;;;701:1544:88;2080:2:69;;;;-1:-1:-1;;;;;701:1544:88;2080:2:69;;;;;;;;;;;701:1544:88;2080:2:69;;;-1:-1:-1;;;;;701:1544:88;2080:2:69;;;;;;;;;;;;;;;;;;;701:1544:88;;2080:2:69;;701:1544:88;2080:2:69;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;;2080:2:69;;;701:1544:88;2080:2:69;;;;;;;;;;:::i;:::-;;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2080:2:69;;;;;;;;;;;:::i;:::-;701:1544:88;;;;:::i;:::-;2080:2:69;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;;701:1544:88;2080:2:69;;;701:1544:88;:::i;:::-;2080:2:69;;;;701:1544:88;2080:2:69;;;;701:1544:88;:::i;:::-;2080:2:69;;;;;:::o;:::-;;;;;;;;;701:1544:88;2080:2:69;;;;;;;;;;;;;:::i;:::-;;;;;701:1544:88;;2080:2:69;;;701:1544:88;2080:2:69;;;;701:1544:88;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;2080:2:69;;;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;;;;2080:2:69;;;701:1544:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7951:7863:67;;9255:25:66;9217:21;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;9217:21:66;701:1544:88;7916:84:46;;1435:182:72;;9255:25:66;8098:88:67;;8216:18;;701:1544:88;1746:1:69;8255:23:67;;8251:72;;1913:1:69;8336:23:67;;8332:72;;8449:22;;;;;;:::i;:::-;9217:15:66;8517:13:67;9217:15:66;8532:13:67;;;;;;10645:19;;10970:117;10645:19;;;;;;;;2080:2:69;10645:19:67;;10619:23;;-1:-1:-1;;;;;701:1544:88;;;10619:17:67;701:1544:88;;;;;;;10619:23:67;2080:2:69;:::i;:::-;10970:52:67;701:1544:88;10970:22:67;701:1544:88;-1:-1:-1;;;;;701:1544:88;;;10970:52:67;9210:22;11029:19;;:31;:19;;;:31;-1:-1:-1;;;;;701:1544:88;;;;;11029:31:67;11062:24;701:1544:88;9451:23:67;11062:24;;701:1544:88;;;;;;;;;10970:117:67;;-1:-1:-1;;;;;701:1544:88;;;9276:14:67;10970:117;;701:1544:88;;;;2080:2:69;;;701:1544:88;;;2080:2:69;;;701:1544:88;;;;;-1:-1:-1;701:1544:88;;9217:15:66;;701:1544:88;;2080:2:69;;;;;10970:117:67;;;;;;;;;9217:15:66;;;10970:117:67;;;8512:2038;11250:26;12041:74;11250:26;;;;11938:72;11724:89;11250:26;;701:1544:88;11760:52:67;6379:89:72;11188:129:67;701:1544:88;;;;958:1:71;8470:156:46;10619:17:67;8470:156:46;3899:414:72;;11188:129:67;9345:19;9451:23;5826:175:72;4964:169;9345:19:67;11385:51;;;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;4964:169:72;11525:54:67;;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;5826:175:72;11651:41:67;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;6379:89:72;11760:52:67;;:::i;:::-;11724:89;701:1544:88;;;;;;2539:209:46;;;;;;;10440:413:72;;11724:89:67;11881:25;11844:63;11881:25;;;2080:2:69;;;;701:1544:88;;;;2080:2:69;11844:63:67;701:1544:88;;;;;;2539:209:46;;;;;;;11205:402:72;;11844:63:67;11938:72;:::i;:::-;12041:74;:::i;:::-;12134:24;;;;701:1544:88;-1:-1:-1;;;;;2080:2:69;;;;;;-1:-1:-1;;;;;701:1544:88;;;2080:2:69;701:1544:88;12134:38:67;12130:2933;;8512:2038;15077:21;;;;;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;15077:21:67;701:1544:88;2080:2:69;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;;;;;701:1544:88;15129:21:67;;-1:-1:-1;;;;;701:1544:88;;;17376:15:67;701:1544:88;;;;;;;15129:21:67;:56;;;2080:2:69;-1:-1:-1;;;;;701:1544:88;2080:2:69;;;;;;;;15129:56:67;15345:24;;701:1544:88;;;15345:24:67;;;;:::i;:::-;15553:18;701:1544:88;;2080:2:69;;701:1544:88;;15662:19:67;;2080:2:69;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;;;;;701:1544:88;15695:62:67;;;:::i;:::-;15771:26;;701:1544:88;;15529:10:67;;;;701:1544:88;;15483:324:67;;;;;:::i;:::-;;;;;7951:7863::o;12130:2933::-;12311:227;12446:18;;;;;9217:15:66;12490:26:67;;701:1544:88;;;12311:227:67;;;;;;;701:1544:88;12311:227:67;;12380:10;9276:14;12311:227;;;:::i;:::-;;;;;;;;;;9217:15:66;12311:227:67;;;12130:2933;701:1544:88;;12286:394:67;;12904:45;:32;2080:2:69;;;-1:-1:-1;;;;;701:1544:88;;;12904:45:67;701:1544:88;;;12904:47:67;;701:1544:88;12904:47:67;;;9276:14;12904:47;;;;;;;;;;;9217:15:66;12904:47:67;;;12130:2933;-1:-1:-1;;701:1544:88;;;;13512:121:67;;;12130:2933;13487:279;;701:1544:88;;14990:40:67;6283:95:70;5748:91;5246:92;4764:82;4338:83;3891:88;3366;701:1544:88;;2874:89:70;701:1544:88;;6819:94:70;701:1544:88;;2368:100:70;701:1544:88;;;;;;;;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;2368:100:70;13955:36:67;;701:1544:88;;;;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;2874:89:70;14071:35:67;;;701:1544:88;;;;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;3366:88:70;9451:23:67;14213:41;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;3891:88:70;10645:19:67;14346:30;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;4338:83:70;12134:24:67;14450:29;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;4764:82:70;11250:26:67;14562:38;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;5246:92:70;701:1544:88;14682:37:67;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;5748:91:70;14826:41:67;;;701:1544:88;;;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;701:1544:88;8470:156:46;8160:472;701:1544:88;8470:156:46;;;;8160:472;;6819:94:70;12130:2933:67;;;;13487:279;13681:66;2080:2:69;;;;-1:-1:-1;;;;;701:1544:88;;;2080:2:69;13681:66:67;9217:15:66;13681:66:67;-1:-1:-1;;;;;701:1544:88;;;19140:62:67;701:1544:88;;;;12380:10:67;701:1544:88;;;;;13512:121:67;13571:26;:62;:53;:26;;701:1544:88;;;;;13571:53:67;701:1544:88;;;;13571:62:67;;13512:121;;12904:47;;;;;;;-1:-1:-1;12904:47:67;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;12286:394;12595:66;2080:2:69;;;;-1:-1:-1;;;;;701:1544:88;;;12311:227:67;;;;;;;;;;;;;;:::i;:::-;;;;10970:117;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;8547:3;8597:21;:18;;;:21;:::i;:::-;;701:1544:88;;;;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;8736:28:67;;;:54;;;;8547:3;8732:114;;701:1544:88;8969:21:67;;;8965:97;;9080:22;;9076:97;;9210:22;;;;;701:1544:88;;;;;-1:-1:-1;;;;;701:1544:88;;;;-1:-1:-1;;;;;701:1544:88;9210:51:67;9345:19;;;;;;701:1544:88;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;701:1544:88;9451:23:67;;;701:1544:88;;;;;;;;;;;;;:::i;:::-;9306:183:67;;;;;:::i;:::-;-1:-1:-1;;;;;701:1544:88;;;9306:183:67;;;701:1544:88;;;9306:183:67;;;701:1544:88;9276:20:67;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;9276:20:67;:27;;;701:1544:88;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;9276:27:67;1913:1:69;;;;:::i;:::-;701:1544:88;;;;;:::i;:::-;;;;:::i;:::-;9508:41:67;;9210:51;;;9573:42;;;9504:457;9569:123;;;9504:457;;;701:1544:88;10099:41:67;;;;701:1544:88;10099:41:67;;9276:14;10099:41;;;;;;;;;;9217:15:66;10099:41:67;;;9504:457;2080:2:69;;;701:1544:88;;;;;;;10159:35:67;10155:250;2080:2:69;;;10221:22:67;;9217:15:66;10221:22:67;9217:15:66;10221:22:67;10155:250;701:1544:88;2080:2:69;;;;;;;;;10314:58:67;2080:2:69;;;701:1544:88;10314:58:67;;;;:::i;:::-;2080:2:69;701:1544:88;;2080:2:69;;;10314:58:67;10475:29;:17;;;-1:-1:-1;;;;;701:1544:88;;;23356:11:67;701:1544:88;;;;;;;10475:17:67;:29;:::i;:::-;8547:3;8517:13;;;;;701:1544:88;8517:13:67;;10099:41;;;;;;-1:-1:-1;10099:41:67;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;9573:42;701:1544:88;;;;-1:-1:-1;9573:42:67;;;9504:457;701:1544:88;;;;;;;:::i;:::-;;;;:::i;:::-;9716:42:67;701:1544:88;;9778:105:67;;9712:249;;9504:457;;9712:249;9928:18;9217:15:66;9928:18:67;9276:14;9217:15:66;9928:18:67;9076:97;9129:29;9217:15:66;9129:29:67;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;34357:71:67;8965:97;9017:30;9217:15:66;9017:30:67;9276:14;9217:15:66;9017:30:67;8732:114;8817:14;9217:15:66;8817:14:67;9276;9217:15:66;8817:14:67;8736:54;701:1544:88;;;;8768:22:67;;8736:54;;8332:72;8382:11;9217:15:66;8382:11:67;;9217:15:66;8382:11:67;8251:72;8301:11;9217:15:66;8301:11:67;;9217:15:66;8301:11:67;8098:88;8148:27;9217:15:66;8148:27:67;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;34357:71:67;7617:261:72;6019:108:46;7617:261:72;701:1544:88;6019:108:46;;19669:4:31;;;;;;;;;;;;;;;;7617:261:72;:::o;8442:263::-;6019:108:46;;701:1544:88;6019:108:46;;19669:4:31;;;;;;;;;;;;;;;;8442:263:72;:::o;701:1544:88:-;;;;;;;;;;;;;;;;;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;-1:-1:-1;701:1544:88;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;-1:-1:-1;701:1544:88;;;;;;;;;;2097:657:46;;701:1544:88;19627:2:31;701:1544:88;9400:76:46;;701:1544:88;2539:209:46;;;701:1544:88;2539:209:46;;;;2097:657;:::o;9180:112::-;9268:13;9186:14;9268:13;;9186:14;9268:13;2097:657;;8966:3;8956:13;;;;8952:64;;701:1544:88;;;;;;;;2641:5:110;9226:3:46;2641:5:110;:13;:5;;;:13;9226:3:46;2641:13:110;19627:2:31;9204:40:46;9180:112;;701:1544:88;19627:2:31;701:1544:88;9400:76:46;;2539:209;;;;;;;;;2097:657;:::o;2641:13:110:-;;;34375:314:111;34568:16;34552:33;;34548:105;;34375:314;:::o;34548:105::-;34608:34;;;;701:1544:88;;34608:34:111;;4346:904:66;;4485:10;;4481:23;;9520:18:69;4589:26:66;;;;1796:196:44;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;2806:53:52;1796:196:44;;4589:26:66;701:1544:88;;;;;;4494:1:66;701:1544:88;;;;;;;;;;;;;4738:9:66;;;9342:26:69;;3831:53:52;;;701:1544:88;;;;;;;;5238:4:66;3051:52:52;;5238:4:66;:::i;4734:423::-;4944:12;4940:217;;4734:423;5238:4;4734:423;5238:4;:::i;4940:217::-;9342:26:69;3831:53:52;;;6806:1:44;701:1544:88;;;;;;;5238:4:66;3051:52:52;;4940:217:66;;;;4481:23;4497:7;;:::o;2311:281:41:-;;1237:14;2426:25;;;:58;;;;;2311:281;2422:113;;;3080:3;2080:2:69;701:1544:88;;;;;;;;2311:281:41;:::o;2422:113::-;2507:17;;;;;;2426:58;2455:29;;;;2426:58;;;4358:211:90;928:3;4449:43;;4445:118;;4358:211;:::o;4445:118::-;4515:37;;;;701:1544:88;;4515:37:90;;7866:704:73;;;8372:29;465:4:47;838:5;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;701:1544:88;1946:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;701:1544:88;8522:31:73;:19;;;;;:31;:::i;838:5:47:-;465:4;8372:29:73;;;:191;:::i;3804:110:66:-;3891:15;;3804:110;3891:15;:::i;:::-;;;:::i;4575:635:90:-;4643:20;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;4643:20:90;701:1544:88;;;928:3:90;701:1544:88;;;;;;;;;-1:-1:-1;;;;;701:1544:88;;4842:15:90;;-1:-1:-1;;;;;701:1544:88;;;5409:9:90;701:1544:88;;;;;;;4842:15:90;-1:-1:-1;701:1544:88;;;;;-1:-1:-1;701:1544:88;;;;;;;;-1:-1:-1;701:1544:88;;4924:66:90;701:1544:88;;4924:66:90;;;701:1544:88;928:3:90;701:1544:88;;;;;;4924:66:90;;;;5115:88;;;;;-1:-1:-1;701:1544:88;;5115:88:90;;701:1544:88;5115:88:90;;;;;;;;;701:1544:88;928:3:90;701:1544:88;;;;;;;;;;;;;;;;5115:88:90;;;;;;;;;;;4575:635;:::o;5115:88::-;;;;;;:::i;3596:756::-;;-1:-1:-1;;;;;701:1544:88;;;3676:16:90;;;3672:78;;3785:29;:20;;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;3785:20:90;701:1544:88;3785:29:90;:::i;:::-;3963:19;:15;;;-1:-1:-1;;;;;701:1544:88;;;5409:9:90;701:1544:88;;;;;;;3963:19:90;701:1544:88;;;;;;4043:14:90;;;:::i;:::-;4069:20;;-1:-1:-1;;;;;701:1544:88;;;2487:14:90;701:1544:88;;;;;;;4069:20:90;701:1544:88;;;3690:1:90;701:1544:88;4122:38:90;701:1544:88;;4122:38:90;;;;701:1544:88;;;;;;;;4122:38:90;;;;4285:60;;;;;701:1544:88;;;4285:60:90;;3690:1;4285:60;;;701:1544:88;;;-1:-1:-1;;;;;701:1544:88;;;;;;;;;;;;;;;;;;3690:1:90;701:1544:88;;;;4285:60:90;701:1544:88;3672:78:90;3715:24;3690:1;3715:24;-1:-1:-1;;;;;701:1544:88;;;;;-1:-1:-1;34357:71:67;11721:446:72;701:1544:88;;11721:446:72;701:1544:88;11899:3:72;701:1544:88;;11869:28:72;;;;;11960:20;;;;:::i;:::-;701:1544:88;;11998:42:72;;;;:::i;:::-;8966:3:46;;8956:13;;;;8952:64;;701:1544:88;;;;;;;;2641:5:110;;;;;;:13;;;701:1544:88;9204:40:46;;;9180:112;;701:1544:88;;;;;9400:76:46;;701:1544:88;;2539:209:46;701:1544:88;;2539:209:46;;;;;;;11899:3:72;701:1544:88;11854:13:72;;;2641::110;;;11869:28:72;701:1544:88;;;-1:-1:-1;;11721:446:72:o;7884:552::-;19917:10:31;8036:26:72;;8032:97;;19669:4:31;8232:183:72;465:4:47;;8232:183:72;;:::i;8711:554::-;;19917:10:31;8864:26:72;;8860:97;;9060:184;;19669:4:31;701:1544:88;465:4:47;;9060:184:72;;:::i;14924:779:66:-;;-1:-1:-1;;;;;701:1544:88;;;;;;15152:60:66;;;;;;;;;;;;;;;;;;;;14924:779;15132:80;;;15128:143;;701:1544:88;;;15305:60:66;;;;15152;15305;;;;;;;;;15152;15305;;;14924:779;15285:80;;;;15281:144;;15564:21;;15540;15564:67;15647:49;15564:21;;15647:49;15564:21;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;15564:21:66;701:1544:88;15564:67:66;:::i;:::-;15540:21;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;-1:-1:-1;701:1544:88;;;-1:-1:-1;701:1544:88;;;15540:21:66;701:1544:88;;;;;;;;;;;;;;15647:49:66;;;;14924:779::o;15281:144::-;15388:26;15152:60;15388:26;15152:60;;15388:26;15305:60;;;;;;-1:-1:-1;15305:60:66;;;;;;:::i;:::-;;;;;15128:143;15235:25;15152:60;15235:25;15152:60;;15235:25;15152:60;;;;;;;;;;;;;;:::i;:::-;;;;8641:1623:73;;;;701:1544:88;8915:29:73;:41;:29;;;;;:41;:::i;:::-;701:1544:88;9458:36:73;;;9454:804;;8641:1623;;;;;;:::o;9454:804::-;3638:53:43;701:1544:88;;;3665:25:43;701:1544:88;;10184:31:73;701:1544:88;9669:111:73;701:1544:88;;9669:111:73;:::i;:::-;10120:30;10184:19;10120:42;:30;;;;;:42;:::i;:::-;701:1544:88;10184:19:73;;;:31;:::i;:::-;701:1544:88;3665:25:43;;:::i;:::-;3638:53;;:::i;:::-;9454:804:73;;;;;;;;1998:187:44;;-1:-1:-1;;;;;701:1544:88;-1:-1:-1;701:1544:88;;;;-1:-1:-1;701:1544:88;3051:52:52;1998:187:44:o"},"methodIdentifiers":{"allowance(address,address,address)":"927da105","approve(address,address,uint256)":"e1f21c67","balanceOf(address,address)":"f7888aec","computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))":"4d472bdd","emitAuxiliaryEvent(bytes32,bytes)":"c8088247","getAddLiquidityCalledFlag(address)":"ace9b89b","getAggregateSwapFeeAmount(address,address)":"85e0b999","getAggregateYieldFeeAmount(address,address)":"00fdfa13","getAuthorizer()":"aaabadc5","getBptRate(address)":"4f037ee7","getCurrentLiveBalances(address)":"535cfd8a","getERC4626BufferAsset(address)":"4afbaf5a","getHooksConfig(address)":"ce8630d4","getNonzeroDeltaCount()":"db817187","getPoolConfig(address)":"f29486a1","getPoolData(address)":"13d21cdf","getPoolPausedState(address)":"15e32046","getPoolRoleAccounts(address)":"e9ddeb26","getPoolTokenInfo(address)":"67e0e076","getPoolTokenRates(address)":"7e361bde","getPoolTokens(address)":"ca4f2803","getProtocolFeeController()":"85f2dbd4","getReservesOf(address)":"96787092","getStaticSwapFeePercentage(address)":"b45090f9","getTokenDelta(address)":"9e825ff5","getVaultAdmin()":"1ba0ae45","initialize(address,address,address[],uint256[],uint256,bytes)":"ba8a2be0","isERC4626BufferInitialized(address)":"6844846b","isPoolInRecoveryMode(address)":"be7d628a","isPoolInitialized(address)":"532cec7c","isPoolPaused(address)":"6c9bc732","isPoolRegistered(address)":"c673bdaf","isQueryDisabled()":"b4aef0ab","isQueryDisabledPermanently()":"13ef8a5d","isUnlocked()":"8380edb7","manualInitializePoolReentrancy(address,address,address[],uint256[],uint256,bytes)":"809846d1","manualRegisterPoolReentrancy(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"e68010c6","manuallySetSwapFee(address,uint256)":"70600089","mockExtensionHash(bytes)":"590e8145","quote(bytes)":"edfa3568","quoteAndRevert(bytes)":"757d64b3","reentrancyGuardEntered()":"d2c725e0","registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))":"eeec802f","removeLiquidityRecovery(address,address,uint256,uint256[])":"a07d6040","totalSupply(address)":"e4dc2aa4","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IVaultAdmin\",\"name\":\"vaultAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodecOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"ErrorSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"Result\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokensNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"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\":\"owner\",\"type\":\"address\"},{\"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\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"swapParams\",\"type\":\"tuple\"}],\"name\":\"computeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"emitAuxiliaryEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getAddLiquidityCalledFlag\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getBptRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getERC4626BufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getHooksConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolRoleAccounts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"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\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenRates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getReservesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getStaticSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"isERC4626BufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabledPermanently\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"manualInitializePoolReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"manualRegisterPoolReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newSwapFee\",\"type\":\"uint256\"}],\"name\":\"manuallySetSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"mockExtensionHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quoteAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"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).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"Result(bytes)\":[{\"params\":{\"result\":\"The result of the query operation\"}}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"TokensNotSorted()\":[{\"details\":\"Tokens are not sorted by address on registration. This is an optimization so that off-chain processes can predict the token order without having to query the Vault. (It is also legacy v2 behavior.)\"}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address,address)\":{\"params\":{\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\",\"token\":\"Address of the token\"},\"returns\":{\"_0\":\"Amount of tokens the spender is allowed to spend\"}},\"approve(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to approve\",\"owner\":\"Address of the owner\",\"spender\":\"Address of the spender\"},\"returns\":{\"_0\":\"True if successful, false otherwise\"}},\"balanceOf(address,address)\":{\"params\":{\"account\":\"Address of the account\",\"token\":\"Address of the token\"},\"returns\":{\"_0\":\"Token balance of the account\"}},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"details\":\"Reverts if the hook doesn't return the success flag set to `true`.\",\"params\":{\"pool\":\"The pool\",\"swapParams\":\"The swap parameters used to compute the fee\"},\"returns\":{\"dynamicSwapFeePercentage\":\"The dynamic swap fee percentage\"}},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\"}},\"getAddLiquidityCalledFlag(address)\":{\"details\":\"Taxing remove liquidity proportional whenever liquidity was added in the same `unlock` call adds an extra layer of security, discouraging operations that try to undo others for profit. Remove liquidity proportional is the only standard way to exit a position without fees, and this flag is used to enable fees in that case. It also discourages indirect swaps via unbalanced add and remove proportional, as they are expected to be worse than a simple swap for every pool type.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if liquidity has been added to this pool in the current transaction Note that there is no `sessionId` argument; it always returns the value for the current (i.e., latest) session.\"}},\"getAggregateSwapFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"_0\":\"The total amount of fees accumulated in the specified token\"}},\"getAggregateYieldFeeAmount(address,address)\":{\"params\":{\"pool\":\"The address of the pool for which aggregate fees have been collected\",\"token\":\"The address of the token in which fees have been accumulated\"},\"returns\":{\"_0\":\"The total amount of fees accumulated in the specified token\"}},\"getAuthorizer()\":{\"details\":\"The authorizer holds the permissions granted by governance. It is set on Vault deployment, and can be changed through a permissioned call.\",\"returns\":{\"_0\":\"Address of the authorizer contract\"}},\"getBptRate(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"rate\":\"BPT rate\"}},\"getCurrentLiveBalances(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getERC4626BufferAsset(address)\":{\"details\":\"To avoid malicious wrappers (e.g., that might potentially change their asset after deployment), routers should never call `wrapper.asset()` directly, at least without checking it against the asset registered with the Vault on initialization.\",\"params\":{\"wrappedToken\":\"The wrapped token specifying the buffer\"},\"returns\":{\"asset\":\"The underlying asset of the wrapped token\"}},\"getHooksConfig(address)\":{\"details\":\"The `HooksConfig` contains flags indicating which pool hooks are implemented.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"_0\":\"The hooks configuration as a `HooksConfig` struct\"}},\"getNonzeroDeltaCount()\":{\"returns\":{\"_0\":\"The current value of `_nonzeroDeltaCount`\"}},\"getPoolConfig(address)\":{\"details\":\"The `PoolConfig` contains liquidity management and other state flags, fee percentages, the pause window.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"_0\":\"The pool configuration as a `PoolConfig` struct\"}},\"getPoolData(address)\":{\"details\":\"This contains the pool configuration (flags), tokens and token types, rates, scaling factors, and balances.\",\"params\":{\"pool\":\"The address of the pool\"},\"returns\":{\"_0\":\"The `PoolData` result\"}},\"getPoolPausedState(address)\":{\"details\":\"Note that even when set to a paused state, the pool will automatically unpause at the end of the buffer period. Balancer timestamps are 32 bits.\",\"params\":{\"pool\":\"The pool whose data is requested\"},\"returns\":{\"_0\":\"True if the Pool is paused\",\"_1\":\"The timestamp of the end of the Pool's pause window\",\"_2\":\"The timestamp after which the Pool unpauses itself (if paused)\",\"_3\":\"The pause manager, or the zero address\"}},\"getPoolRoleAccounts(address)\":{\"params\":{\"pool\":\"The address of the pool whose roles are being queried\"},\"returns\":{\"_0\":\"A struct containing the role accounts for the pool (or 0 if unassigned)\"}},\"getPoolTokenInfo(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"The pool tokens, sorted in registration order\"}},\"getPoolTokenRates(address)\":{\"details\":\"This function performs external calls if tokens are yield-bearing. All returned arrays are in token registration order.\",\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"decimalScalingFactors\":\"Conversion factor used to adjust for token decimals for uniform precision in calculations. FP(1) for 18-decimal tokens\",\"tokenRates\":\"18-decimal FP values for rate tokens (e.g., yield-bearing), or FP(1) for standard tokens\"}},\"getPoolTokens(address)\":{\"params\":{\"pool\":\"Address of the pool\"},\"returns\":{\"tokens\":\"List of tokens in the pool\"}},\"getProtocolFeeController()\":{\"returns\":{\"_0\":\"Address of the ProtocolFeeController\"}},\"getReservesOf(address)\":{\"params\":{\"token\":\"The token for which to retrieve the reserve\"},\"returns\":{\"_0\":\"The amount of reserves for the given token\"}},\"getStaticSwapFeePercentage(address)\":{\"params\":{\"pool\":\"The address of the pool whose static swap fee percentage is being queried\"},\"returns\":{\"_0\":\"The current static swap fee percentage for the specified pool\"}},\"getTokenDelta(address)\":{\"details\":\"This function allows reading the value from the `_tokenDeltas` mapping.\",\"params\":{\"token\":\"The token for which the delta is being fetched\"},\"returns\":{\"_0\":\"The delta of the specified token\"}},\"getVaultAdmin()\":{\"details\":\"The VaultAdmin contract mostly implements permissioned functions.\",\"returns\":{\"_0\":\"The address of the Vault admin\"}},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"params\":{\"exactAmountsIn\":\"Exact amounts of input tokens\",\"minBptAmountOut\":\"Minimum amount of output pool tokens\",\"pool\":\"Address of the pool to initialize\",\"to\":\"Address that will receive the output BPT\",\"tokens\":\"Tokens used to seed the pool (must match the registered tokens)\",\"userData\":\"Additional (optional) data required for adding initial liquidity\"},\"returns\":{\"bptAmountOut\":\"Output pool token amount\"}},\"isERC4626BufferInitialized(address)\":{\"details\":\"An initialized buffer should have an asset registered in the Vault.\",\"params\":{\"wrappedToken\":\"Address of the wrapped token that implements IERC4626\"},\"returns\":{\"_0\":\"True if the ERC4626 buffer is initialized\"}},\"isPoolInRecoveryMode(address)\":{\"details\":\"Recovery Mode enables a safe proportional withdrawal path, with no external calls.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if the pool is in Recovery Mode, false otherwise\"}},\"isPoolInitialized(address)\":{\"details\":\"An initialized pool can be considered registered as well.\",\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if the pool is initialized, false otherwise\"}},\"isPoolPaused(address)\":{\"details\":\"If a pool is paused, all non-Recovery Mode state-changing operations will revert.\",\"params\":{\"pool\":\"The pool to be checked\"},\"returns\":{\"_0\":\"True if the pool is paused\"}},\"isPoolRegistered(address)\":{\"params\":{\"pool\":\"Address of the pool to check\"},\"returns\":{\"_0\":\"True if the pool is registered, false otherwise\"}},\"isQueryDisabled()\":{\"details\":\"If true, queries might either be disabled temporarily or permanently.\",\"returns\":{\"_0\":\"True if query functionality is reversibly disabled\"}},\"isQueryDisabledPermanently()\":{\"details\":\"This is a one-way switch. Once queries are disabled permanently, they can never be re-enabled.\",\"returns\":{\"_0\":\"True if query functionality is permanently disabled\"}},\"isUnlocked()\":{\"details\":\"The Vault must be unlocked to perform state-changing liquidity operations.\",\"returns\":{\"_0\":\"True if the Vault is unlocked, false otherwise\"}},\"quote(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}},\"quoteAndRevert(bytes)\":{\"details\":\"Used to query a set of operations on the Vault. Only off-chain eth_call are allowed, anything else will revert. Allows querying any operation on the Vault that has the `onlyWhenUnlocked` modifier. Allows the external calling of a function via the Vault contract to access Vault's functions guarded by `onlyWhenUnlocked`. `transient` modifier ensuring balances changes within the Vault are settled. This call always reverts, returning the result in the revert reason.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"}},\"reentrancyGuardEntered()\":{\"returns\":{\"_0\":\"True if the Vault is currently executing a nonReentrant function\"}},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"details\":\"A pool can opt-out of pausing by providing a zero value for the pause window, or allow pausing indefinitely by providing a large value. (Pool pause windows are not limited by the Vault maximums.) The vault defines an additional buffer period during which a paused pool will stay paused. After the buffer period passes, a paused pool will automatically unpause. Balancer timestamps are 32 bits. A pool can opt out of Balancer governance pausing by providing a custom `pauseManager`. This might be a multi-sig contract or an arbitrary smart contract with its own access controls, that forwards calls to the Vault. If the zero address is provided for the `pauseManager`, permissions for pausing the pool will default to the authorizer.\",\"params\":{\"liquidityManagement\":\"Liquidity management flags with implemented methods\",\"pauseWindowEndTime\":\"The timestamp after which it is no longer possible to pause the pool\",\"pool\":\"The address of the pool being registered\",\"poolHooksContract\":\"Contract that implements the hooks for the pool\",\"protocolFeeExempt\":\"If true, the pool's initial aggregate fees will be set to 0\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The initial static swap fee percentage of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"params\":{\"exactBptAmountIn\":\"Input pool token amount\",\"from\":\"Address of user to burn pool tokens from\",\"minAmountsOut\":\"Minimum amounts of tokens to be received, sorted in token registration order\",\"pool\":\"Address of the pool\"},\"returns\":{\"amountsOutRaw\":\"Actual calculated amounts of output tokens, sorted in token registration order\"}},\"totalSupply(address)\":{\"params\":{\"token\":\"The token address\"},\"returns\":{\"_0\":\"Total supply of the token\"}},\"vault()\":{\"details\":\"The main Vault contains the entrypoint and main liquidity operation implementations.\",\"returns\":{\"_0\":\"vault The address of the main Vault\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BalanceOverflow()\":[{\"notice\":\"One of the balances is above the maximum value that can be stored.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"CodecOverflow()\":[{\"notice\":\"Function called with an invalid value.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"ErrorSelectorNotFound()\":[{\"notice\":\"Handle the \\\"reverted without a reason\\\" case (i.e., no return data).\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotStaticCall()\":[{\"notice\":\"A state-changing transaction was initiated in a context that only allows static calls.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"OutOfBounds()\":[{\"notice\":\"Function called with an invalid bitLength or offset.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"Result(bytes)\":[{\"notice\":\"On success of the primary operation in a `quoteAndRevert`, this error is thrown with the return data.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TokensNotSorted()\":[{\"notice\":\"The tokens supplied to an array argument were not sorted in numerical order.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,address)\":{\"notice\":\"Gets the allowance of a spender for a given ERC20 token and owner.\"},\"approve(address,address,uint256)\":{\"notice\":\"Approves a spender to spend pool tokens on behalf of sender.\"},\"balanceOf(address,address)\":{\"notice\":\"Gets the balance of an account for a given ERC20 token.\"},\"computeDynamicSwapFeePercentage(address,(uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Query the current dynamic swap fee percentage of a pool, given a set of swap parameters.\"},\"emitAuxiliaryEvent(bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"getAddLiquidityCalledFlag(address)\":{\"notice\":\"This flag is used to detect and tax \\\"round-trip\\\" interactions (adding and removing liquidity in the same pool).\"},\"getAggregateSwapFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated swap fees (including aggregate fees) in `token` collected by the pool.\"},\"getAggregateYieldFeeAmount(address,address)\":{\"notice\":\"Returns the accumulated yield fees (including aggregate fees) in `token` collected by the pool.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer address.\"},\"getBptRate(address)\":{\"notice\":\"The current rate of a pool token (BPT) = invariant / totalSupply.\"},\"getCurrentLiveBalances(address)\":{\"notice\":\"Gets current live balances of a given pool (fixed-point, 18 decimals), corresponding to its tokens in registration order.\"},\"getERC4626BufferAsset(address)\":{\"notice\":\"Gets the registered asset for a given buffer.\"},\"getHooksConfig(address)\":{\"notice\":\"Gets the hooks configuration parameters of a pool.\"},\"getNonzeroDeltaCount()\":{\"notice\":\"Returns the count of non-zero deltas.\"},\"getPoolConfig(address)\":{\"notice\":\"Gets the configuration parameters of a pool.\"},\"getPoolData(address)\":{\"notice\":\"Returns comprehensive pool data for the given pool.\"},\"getPoolPausedState(address)\":{\"notice\":\"Returns the paused status, and end times of the Pool's pause window and buffer period.\"},\"getPoolRoleAccounts(address)\":{\"notice\":\"Fetches the role accounts for a given pool (pause manager, swap manager, pool creator)\"},\"getPoolTokenInfo(address)\":{\"notice\":\"Gets the raw data for a pool: tokens, raw balances, scaling factors.\"},\"getPoolTokenRates(address)\":{\"notice\":\"Gets pool token rates.\"},\"getPoolTokens(address)\":{\"notice\":\"Gets the tokens registered to a pool.\"},\"getProtocolFeeController()\":{\"notice\":\"Returns the Protocol Fee Controller address.\"},\"getReservesOf(address)\":{\"notice\":\"Retrieves the reserve (i.e., total Vault balance) of a given token.\"},\"getStaticSwapFeePercentage(address)\":{\"notice\":\"Fetches the static swap fee percentage for a given pool.\"},\"getTokenDelta(address)\":{\"notice\":\"Retrieves the token delta for a specific token.\"},\"getVaultAdmin()\":{\"notice\":\"Returns the VaultAdmin contract address.\"},\"initialize(address,address,address[],uint256[],uint256,bytes)\":{\"notice\":\"Initializes a registered pool by adding liquidity; mints BPT tokens for the first time in exchange.\"},\"isERC4626BufferInitialized(address)\":{\"notice\":\"Checks if the wrapped token has an initialized buffer in the Vault.\"},\"isPoolInRecoveryMode(address)\":{\"notice\":\"Checks whether a pool is in Recovery Mode.\"},\"isPoolInitialized(address)\":{\"notice\":\"Checks whether a pool is initialized.\"},\"isPoolPaused(address)\":{\"notice\":\"Indicates whether a pool is paused.\"},\"isPoolRegistered(address)\":{\"notice\":\"Checks whether a pool is registered.\"},\"isQueryDisabled()\":{\"notice\":\"Returns true if queries are disabled on the Vault.\"},\"isQueryDisabledPermanently()\":{\"notice\":\"Returns true if queries are disabled permanently; false if they are enabled.\"},\"isUnlocked()\":{\"notice\":\"Returns whether the Vault is unlocked (i.e., executing an operation).\"},\"quote(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"quoteAndRevert(bytes)\":{\"notice\":\"Performs a callback on msg.sender with arguments provided in `data`.\"},\"reentrancyGuardEntered()\":{\"notice\":\"Expose the state of the Vault's reentrancy guard.\"},\"registerPool(address,(address,uint8,address,bool)[],uint256,uint32,bool,(address,address,address),address,(bool,bool,bool,bool))\":{\"notice\":\"Registers a pool, associating it with its factory and the tokens it manages.\"},\"removeLiquidityRecovery(address,address,uint256,uint256[])\":{\"notice\":\"Remove liquidity from a pool specifying exact pool tokens in, with proportional token amounts out. The request is implemented by the Vault without any interaction with the pool, ensuring that it works the same for all pools, and cannot be disabled by a new pool type.\"},\"totalSupply(address)\":{\"notice\":\"Gets the total supply of a given ERC20 token.\"},\"vault()\":{\"notice\":\"Returns the main Vault address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol\":\"VaultExtensionMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultExtensionMock.sol\":{\"keccak256\":\"0x18c434c91bbcd260bd305f2cdc01684a3040bc633c1b185f95cb323a336ac76c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://270260ba29c81dc6d862a0830ccbbdcd81b4543bd9c9b54228493a92568532d4\",\"dweb:/ipfs/QmTHp7v5dGwLujPRaWkoEM22Loy3MuspodMGcm4syAPUvk\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":{\"keccak256\":\"0x28078c6fa4d55418c25505d4683642cb51fe55b2155ef7418db6c70631a30d6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://864b91fdc2b69725bcc07f06d9adebe87117561582fa58f1e4410d8928cd205c\",\"dweb:/ipfs/QmWCDsbTxtmEMLhorqfGF1LDMHMqqVnV9sk9mUTPR7eog8\"]},\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":{\"keccak256\":\"0xad949728097754fb91dd82f46a4f3430f0caf092fe719f04c030325e623c59cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6ba4635b64181a08098f2b4bde9bc6ceb8580d24654ec39c3d38ac2c8082317\",\"dweb:/ipfs/QmbthXemuT8Qvs2jdTADdyzbcPuZaKWfZjRn7j8dWuwffs\"]},\"@balancer-labs/v3-vault/contracts/VaultExtension.sol\":{\"keccak256\":\"0x40490c1c492b44a3fbc04a9642abb41c86b124a0e510aedbee2886040058a5a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b7d969f2f08bb32524e3678ef1b9cbdd3d9630b0cee495527a42a0ca640cd94\",\"dweb:/ipfs/QmSpqFru9X2V1SD3cE63jcdNiHLZdTvXXGw6suCbzHnqxM\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol\":{\"keccak256\":\"0xaf3a7b4bbc1427ffb36b89cab5e485494afbddaff7195e0533f9c29a88c217b3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c653115b697d1c2a340a485e37a1d1a7b18bd3da4304ef12480bf9dcb8f61dc8\",\"dweb:/ipfs/QmfPNVqSeuG6gJr2x4y41czE5ivBz8vLpZ3R97VVnbK1uT\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol\":{\"keccak256\":\"0xf17a6fb82ff8eac940260544aa041e2cf8b826c0f7e205b4d52a4c5394a7ee38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c88893eba6593f2f7ef05e3ffeb61416b6cc630eaad2efa90e77262f3282ab81\",\"dweb:/ipfs/QmX9XhQix9yKT7buiT77igy8Bf1jvwwYGxpmTr4e5mWnQD\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@balancer-labs/v3-vault/contracts/test/VaultExtensionMock.sol\":{\"keccak256\":\"0x69c5ff432827489da6bfc986184ad2dd74cbad083f923c6ec8a8f18caf78ffec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6f2dfca43dd921000fa2bc4d49a59e6c154250ee723ab5ccc7883939e65f8a71\",\"dweb:/ipfs/QmSjTTmY7brYWCyqHzjHULcfqBxLtKSAEPGwfKrHoRGqwn\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/test/VaultMock.sol":{"VaultMock":{"abi":[{"inputs":[{"internalType":"contract IVaultExtension","name":"vaultExtension","type":"address"},{"internalType":"contract IAuthorizer","name":"authorizer","type":"address"},{"internalType":"contract IProtocolFeeController","name":"protocolFeeController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"AfterAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterInitializeHookFailed","type":"error"},{"inputs":[],"name":"AfterRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"AfterSwapHookFailed","type":"error"},{"inputs":[],"name":"AllZeroInputs","type":"error"},{"inputs":[],"name":"AmountGivenZero","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"AmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"AmountOutBelowMin","type":"error"},{"inputs":[],"name":"BalanceNotSettled","type":"error"},{"inputs":[],"name":"BalanceOverflow","type":"error"},{"inputs":[],"name":"BeforeAddLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeInitializeHookFailed","type":"error"},{"inputs":[],"name":"BeforeRemoveLiquidityHookFailed","type":"error"},{"inputs":[],"name":"BeforeSwapHookFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"BptAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"BptAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"BufferNotInitialized","type":"error"},{"inputs":[],"name":"BufferSharesInvalidOwner","type":"error"},{"inputs":[],"name":"BufferSharesInvalidReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BufferTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"CannotReceiveEth","type":"error"},{"inputs":[],"name":"CannotSwapSameToken","type":"error"},{"inputs":[],"name":"CodecOverflow","type":"error"},{"inputs":[],"name":"DoesNotSupportAddLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportDonation","type":"error"},{"inputs":[],"name":"DoesNotSupportRemoveLiquidityCustom","type":"error"},{"inputs":[],"name":"DoesNotSupportUnbalancedLiquidity","type":"error"},{"inputs":[],"name":"DynamicSwapFeeHookFailed","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":"FailedInnerCall","type":"error"},{"inputs":[],"name":"FeePrecisionTooHigh","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"maxAmountIn","type":"uint256"}],"name":"HookAdjustedAmountInAboveMax","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"name":"HookAdjustedAmountOutBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"HookAdjustedSwapLimit","type":"error"},{"inputs":[{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"poolFactory","type":"address"}],"name":"HookRegistrationFailed","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[],"name":"InvalidAddLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidRemoveLiquidityKind","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"InvalidTokenConfiguration","type":"error"},{"inputs":[],"name":"InvalidTokenDecimals","type":"error"},{"inputs":[],"name":"InvalidTokenType","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"InvalidUnderlyingToken","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"maxInvariantRatio","type":"uint256"}],"name":"InvariantRatioAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"minInvariantRatio","type":"uint256"}],"name":"InvariantRatioBelowMin","type":"error"},{"inputs":[{"internalType":"uint256","name":"issuedShares","type":"uint256"},{"internalType":"uint256","name":"minIssuedShares","type":"uint256"}],"name":"IssuedSharesBelowMin","type":"error"},{"inputs":[],"name":"MaxTokens","type":"error"},{"inputs":[],"name":"MinTokens","type":"error"},{"inputs":[],"name":"MultipleNonZeroInputs","type":"error"},{"inputs":[],"name":"NotEnoughBufferShares","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedUnderlyingAmount","type":"uint256"},{"internalType":"uint256","name":"actualUnderlyingAmount","type":"uint256"}],"name":"NotEnoughUnderlying","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"expectedWrappedAmount","type":"uint256"},{"internalType":"uint256","name":"actualWrappedAmount","type":"uint256"}],"name":"NotEnoughWrapped","type":"error"},{"inputs":[],"name":"NotStaticCall","type":"error"},{"inputs":[],"name":"NotVaultDelegateCall","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"},{"inputs":[],"name":"PauseBufferPeriodDurationTooLarge","type":"error"},{"inputs":[],"name":"PercentageAboveMax","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInRecoveryMode","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotInitialized","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotPaused","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPauseWindowExpired","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"PoolPaused","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"inputs":[],"name":"ProtocolFeesExceedTotalCollected","type":"error"},{"inputs":[],"name":"QueriesDisabled","type":"error"},{"inputs":[],"name":"QueriesDisabledPermanently","type":"error"},{"inputs":[],"name":"QuoteResultSpoofed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"RouterNotTrusted","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooHigh","type":"error"},{"inputs":[],"name":"SwapFeePercentageTooLow","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"SwapLimit","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"expectedToken","type":"address"},{"internalType":"address","name":"actualToken","type":"address"}],"name":"TokensMismatch","type":"error"},{"inputs":[],"name":"TradeAmountTooSmall","type":"error"},{"inputs":[],"name":"VaultBuffersArePaused","type":"error"},{"inputs":[],"name":"VaultIsNotUnlocked","type":"error"},{"inputs":[],"name":"VaultNotPaused","type":"error"},{"inputs":[],"name":"VaultPauseWindowDurationTooLarge","type":"error"},{"inputs":[],"name":"VaultPauseWindowExpired","type":"error"},{"inputs":[],"name":"VaultPaused","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"WrapAmountTooSmall","type":"error"},{"inputs":[],"name":"WrongProtocolFeeControllerDeployment","type":"error"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"WrongUnderlyingToken","type":"error"},{"inputs":[],"name":"WrongVaultAdminDeployment","type":"error"},{"inputs":[],"name":"WrongVaultExtensionDeployment","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"}],"name":"AggregateSwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"AggregateYieldFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"}],"name":"BufferSharesBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"issuedShares","type":"uint256"}],"name":"BufferSharesMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsAddedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityAddedToBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":true,"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"amountsRemovedRaw","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"swapFeeAmountsRaw","type":"uint256[]"}],"name":"LiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWrapped","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"LiquidityRemovedFromBuffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PoolPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bool","name":"recoveryMode","type":"bool"}],"name":"PoolRecoveryModeStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"indexed":false,"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"indexed":false,"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"indexed":false,"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"},{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"indexed":false,"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IProtocolFeeController","name":"newProtocolFeeController","type":"address"}],"name":"ProtocolFeeControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","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":"swapFeePercentage","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapFeeAmount","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawnUnderlying","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Unwrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"bytes32","name":"eventKey","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"eventData","type":"bytes"}],"name":"VaultAuxiliary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultBuffersPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"VaultPausedStateChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesDisabled","type":"event"},{"anonymous":false,"inputs":[],"name":"VaultQueriesEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"depositedUnderlying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedShares","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bufferBalances","type":"bytes32"}],"name":"Wrap","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"accountDelta","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"}],"name":"addLiquidity","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"enum TokenType[]","name":"tokenTypes","type":"uint8[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"},{"internalType":"bool[]","name":"yieldFeeFlags","type":"bool[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"},{"internalType":"bool[]","name":"yieldFeeFlags","type":"bool[]"}],"name":"buildTokenConfig","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"lastLiveBalance","type":"uint256"},{"internalType":"uint256","name":"tokenIndex","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"name":"computeYieldFeesDue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"ensurePoolNotPaused","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"ensureUnpausedAndGetVaultState","outputs":[{"components":[{"internalType":"bool","name":"isQueryDisabled","type":"bool"},{"internalType":"bool","name":"isVaultPaused","type":"bool"},{"internalType":"bool","name":"areBuffersPaused","type":"bool"}],"internalType":"struct VaultState","name":"vaultState","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradeAmount","type":"uint256"}],"name":"ensureValidSwapAmount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradeAmount","type":"uint256"}],"name":"ensureValidTradeAmount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"erc4626BufferWrapOrUnwrap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceUnlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"getBufferTokenBalancesBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getLastLiveBalances","outputs":[{"internalType":"uint256[]","name":"lastBalancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolFactoryMock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenCountAndIndexOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"getRawBalances","outputs":[{"internalType":"uint256[]","name":"balancesRaw","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultExtension","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardedCheckEntered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"internalGetBufferUnderlyingImbalance","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"}],"name":"internalGetBufferWrappedImbalance","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"loadPoolDataUpdatingBalancesAndYieldFees","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"}],"name":"manualAddLiquidity","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"updatedPoolData","type":"tuple"},{"internalType":"uint256[]","name":"amountsInRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsInScaled18","type":"uint256[]"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualBuildPoolSwapParams","outputs":[{"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":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"totalSwapFeeAmountScaled18","type":"uint256"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"manualComputeAndChargeAggregateSwapFees","outputs":[{"internalType":"uint256","name":"totalSwapFeeAmountRaw","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeeAmountRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"enum WrappingDirection","name":"direction","type":"uint8"},{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"}],"internalType":"struct BufferWrapOrUnwrapParams","name":"params","type":"tuple"}],"name":"manualErc4626BufferWrapOrUnwrapReentrancy","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountInRaw","type":"uint256"},{"internalType":"uint256","name":"amountOutRaw","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualFindTokenIndex","outputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"sessionId","type":"uint256"}],"name":"manualGetAddLiquidityCalledFlagBySession","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualGetAggregateSwapFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualGetAggregateYieldFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetCurrentUnlockSessionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetIsUnlocked","outputs":[{"internalType":"StorageSlotExtension.BooleanSlotType","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetNonzeroDeltaCount","outputs":[{"internalType":"StorageSlotExtension.Uint256SlotType","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"manualGetPoolConfigBits","outputs":[{"internalType":"PoolConfigBits","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualGetTokenDeltas","outputs":[{"internalType":"TokenDeltaMappingSlotType","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualInternalSwap","outputs":[{"internalType":"uint256","name":"amountCalculatedRaw","type":"uint256"},{"internalType":"uint256","name":"amountCalculatedScaled18","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"uint256","name":"minBptAmountOut","type":"uint256"},{"internalType":"enum AddLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct AddLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"maxAmountsInScaled18","type":"uint256[]"}],"name":"manualReentrancyAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"}],"name":"manualReentrancyRemoveLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"},{"components":[{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"internalType":"struct SwapState","name":"state","type":"tuple"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualReentrancySwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualRegisterPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint32","name":"timestamp","type":"uint32"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"}],"name":"manualRegisterPoolAtTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualRegisterPoolPassThruTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"manualRegisterPoolWithSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"},{"internalType":"uint256[]","name":"minAmountsOutScaled18","type":"uint256[]"}],"name":"manualRemoveLiquidity","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"updatedPoolData","type":"tuple"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOutRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsOutScaled18","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSendToReentrancy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"manualSetAccountDelta","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manualSetAddLiquidityCalledFlag","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateSwapFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateYieldFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetAggregateYieldFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"underlyingToken","type":"address"}],"name":"manualSetBufferAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"},{"internalType":"uint256","name":"wrappedAmount","type":"uint256"}],"name":"manualSetBufferBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"manualSetBufferOwnerShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"manualSetBufferTotalShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"bool","name":"enableHookAdjustedAmounts","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallAfterInitialize","type":"bool"},{"internalType":"bool","name":"shouldCallComputeDynamicSwapFee","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeSwap","type":"bool"},{"internalType":"bool","name":"shouldCallAfterSwap","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterAddLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallBeforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"shouldCallAfterRemoveLiquidity","type":"bool"},{"internalType":"address","name":"hooksContract","type":"address"}],"internalType":"struct HooksConfig","name":"hooksConfig","type":"tuple"}],"name":"manualSetHooksConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"}],"name":"manualSetInitializedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deltaCount","type":"uint256"}],"name":"manualSetNonZeroDeltaCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256[]","name":"tokenBalanceRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenBalanceLiveScaled18","type":"uint256[]"}],"name":"manualSetPoolBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"},{"internalType":"uint40","name":"tokenDecimalDiffs","type":"uint40"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"},{"internalType":"bool","name":"isPoolRegistered","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct PoolConfig","name":"config","type":"tuple"}],"name":"manualSetPoolConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"PoolConfigBits","name":"config","type":"bytes32"}],"name":"manualSetPoolConfigBits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"newPoolCreator","type":"address"}],"name":"manualSetPoolCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint32","name":"pauseWindowEndTime","type":"uint32"}],"name":"manualSetPoolPauseWindowEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"isPoolPaused","type":"bool"}],"name":"manualSetPoolPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manualSetPoolRegistered","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"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[]"}],"name":"manualSetPoolTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokenConfig","type":"tuple[]"}],"name":"manualSetPoolTokenInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"manualSetPoolTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"tokenBalanceRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenBalanceLiveScaled18","type":"uint256[]"}],"name":"manualSetPoolTokensAndBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"manualSetReservesOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualSetStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isVaultPaused","type":"bool"}],"name":"manualSetVaultPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isVaultPaused","type":"bool"},{"internalType":"bool","name":"isQueryDisabled","type":"bool"}],"name":"manualSetVaultState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"manualSettleReentrancy","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"contract IERC20","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingHint","type":"uint256"},{"internalType":"uint256","name":"wrappedHint","type":"uint256"}],"name":"manualSettleUnwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"contract IERC20","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"underlyingHint","type":"uint256"},{"internalType":"uint256","name":"wrappedHint","type":"uint256"}],"name":"manualSettleWrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manualUnsafeSetStaticSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"newAggregateSwapFeePercentage","type":"uint256"}],"name":"manualUpdateAggregateSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"}],"name":"manualUpdatePoolDataLiveBalancesAndRates","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"}],"name":"manualWritePoolBalancesToStorage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mockIsUnlocked","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"mockWithInitializedPool","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountInUnderlying","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"amountOutWrapped","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountOutWrapped","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"amountInUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountInWrapped","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"amountOutUnderlying","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrapper","type":"address"},{"internalType":"uint256","name":"amountOutUnderlying","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"amountInWrapped","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"recoveryModeExit","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reentrancyGuardEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"maxBptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"enum RemoveLiquidityKind","name":"kind","type":"uint8"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct RemoveLiquidityParams","name":"params","type":"tuple"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountHint","type":"uint256"}],"name":"settle","outputs":[{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"credit","type":"uint256"}],"name":"supplyCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountGivenRaw","type":"uint256"},{"internalType":"uint256","name":"limitRaw","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct VaultSwapParams","name":"vaultSwapParams","type":"tuple"}],"name":"swap","outputs":[{"internalType":"uint256","name":"amountCalculated","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"debt","type":"uint256"}],"name":"takeDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"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":"spender","type":"address"},{"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":"unguardedCheckNotEntered","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"poolData","type":"tuple"},{"internalType":"uint256","name":"newRawBalance","type":"uint256"},{"internalType":"enum Rounding","name":"roundingDirection","type":"uint8"},{"internalType":"uint256","name":"tokenIndex","type":"uint256"}],"name":"updateLiveTokenBalanceInPoolData","outputs":[{"components":[{"internalType":"PoolConfigBits","name":"poolConfigBits","type":"bytes32"},{"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":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"}],"internalType":"struct PoolData","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_contract_IVault_fromMemory":{"entryPoint":1800,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint32_fromMemory":{"entryPoint":1772,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":1737,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_6597":{"entryPoint":1690,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateVaultStorageSlot":{"entryPoint":1831,"id":27922,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"61022060408181523461056a5760608262011d76803803809161002282856106c9565b83398101031261056a5781516001600160a01b0391908281169081810361056a576020948581015190858216820361056a578401519480861680960361056a5761008b85516100708161069a565b600a8152691a5cd55b9b1bd8dad95960b21b89820152610727565b60c0526100be855161009c8161069a565b60118152701b9bdb96995c9bd1195b1d1850dbdd5b9d607a1b89820152610727565b60e0526100eb85516100cf8161069a565b600b81526a746f6b656e44656c74617360a81b89820152610727565b9661010097885261012386516101008161069a565b6012815271185919131a5c5d5a591a5d1e50d85b1b195960721b83820152610727565b9661012097885261015287516101388161069a565b60098152681cd95cdcda5bdb925960ba1b84820152610727565b9061014091825287519363fbfa77cf60e01b90818652600495858188818d5afa90811561053a575f9161067d575b50813091160361066f57895191825284828781865afa918215610511575f92610640575b5030911603610632576101c0958652600a80546001600160a01b0319169190911790558651634546891d60e11b808252909290818486818b5afa938415610628575f94610609575b506101609384528851631060fdbd60e11b8082529096838888818d5afa97881561053a575f986105e2575b506101a09788528a5163cd51c12f60e01b81529693929190838886818e5afa9788156105d8578c8c915f9a6105b3575b50610180998a5251630716585d60e51b81529085908290889082905afa908115610575578c8e889388935f9161057f575b50608052516329cab55160e11b815292839182905afa908115610575575f91610544575b5060a05260098054610100600160a81b03191660089290921b610100600160a81b03169190911790558a51918252828285818d5afa91821561053a579083915f9361051b575b50848c51809c819382525afa988915610511575f996104e2575b5063ffffffff80809a169116038881116104cf57895191614898998a84019260018060401b039b8585108d8611176104bc57918593918e95936200d4de863930845216908201520301905ff09687156104b2576101e097885288519161071f90818401928484109084111761049f57509082916200cdbf833903905ff096871561049657610200978852519761c5c4998a620007fb8b396080518a61ad95015260a0518a61966b015260c0518a818161391e015281816139b5015281816144e301528181615a66015261780f015260e0518a81816113590152818161359b01528181615aa70152818161ac47015261ac8c015251898181611a5f01528181614b21015261abff015251888181612cf50152818161324f01528181614f7e01526182ce01525187818161321b01528181613a9201528181614f5a01528181615ad3015261829a015251865050518561681f015251846167e501525183818161459e0152616744015251828181611ae40152818161293001528181613ba201528181613cbc015261535e0152518181816136da01526159390152f35b513d5f823e3d90fd5b604190634e487b7160e01b5f525260245ffd5b88513d5f823e3d90fd5b604187634e487b7160e01b5f525260245ffd5b601183634e487b7160e01b5f525260245ffd5b610503919950823d841161050a575b6104fb81836106c9565b8101906106ec565b975f6102fc565b503d6104f1565b8a513d5f823e3d90fd5b610533919350823d841161050a576104fb81836106c9565b915f6102e2565b8b513d5f823e3d90fd5b90508481813d831161056e575b61055b81836106c9565b8101031261056a57515f61029c565b5f80fd5b503d610551565b8d513d5f823e3d90fd5b945050505081813d83116105ac575b61059881836106c9565b8101031261056a57848c8e8893515f610278565b503d61058e565b86919a50916105cf8893833d851161050a576104fb81836106c9565b9a915091610247565b8c513d5f823e3d90fd5b8493929198506105ff9088953d861161050a576104fb81836106c9565b9790919293610217565b610621919450823d841161050a576104fb81836106c9565b925f6101ec565b89513d5f823e3d90fd5b83631bbe95c760e01b5f525ffd5b610661919250853d8711610668575b61065981836106c9565b810190610708565b905f6101a4565b503d61064f565b856301ab9d9d60e41b5f525ffd5b6106949150863d88116106685761065981836106c9565b5f610180565b604081019081106001600160401b038211176106b557604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176106b557604052565b9081602091031261056a575163ffffffff8116810361056a5790565b9081602091031261056a57516001600160a01b038116810361056a5790565b604051906107348261069a565b600c82526107b5603a602084016b5661756c7453746f7261676560a01b81526020604051948592828401977f62616c616e6365722d6c6162732e76332e73746f726167652e000000000000008952518091603986015e830190601760f91b60398301528051928391018583015e015f8382015203601a8101845201826106c9565b5190205f1981019081116107e6576040519060208201908152602082526107db8261069a565b9051902060ff191690565b634e487b7160e01b5f52601160045260245ffdfe60806040526004361015610018575b3661672d57616705565b5f3560e01c8062d7aadb146106a657806302e1a4aa146106a15780630362a5131461069c5780630790de461461069757806308bade29146106925780630c87409b1461068d5780630ee4cdd8146106885780630f619655146106835780630f682ba01461067e57806310c1dc4114610679578063155075e61461067457806315afd4091461066f57806315dacbea1461066a57806316a573c214610665578063195aaef91461066057806319a24bcb1461065b5780631c4e1e23146106565780631d27af68146106515780631f4475c51461064c5780631f495f7914610647578063214578971461064257806324e7176b1461063d57806325b6a844146106385780632606a4de1461063357806328121e271461062e5780632b766278146106295780632bfb780c146106245780632cbbf1981461061f5780632d1c3beb1461061a57806332333ce614610615578063352339ee1461061057806336918d6e1461060b578063370bc8da146106065780633cb5b2af146106015780633cce2585146105fc5780633e262ba3146105f7578063420f4a45146105f257806343583be5146105ed57806344ea8763146105e857806347c07e88146105e357806348c89491146105de5780634af29ec4146105d9578063557dba68146105d45780635c1c1c81146105cf5780635e3e00fa146105ca5780635eeae6eb146105c55780635f70f542146105c0578063608256f7146105bb57806362691e5f146105b6578063692407ae146105b15780636d4908c4146105ac5780637004b0f1146105a75780637965c967146105a257806379a2c0ac1461059d57806380047e261461059857806381e4b7e91461059357806382ea17491461058e578063851c65a31461058957806387a530f81461058457806387a76c591461057f5780638f5aeb4b1461057a578063920af0661461057557806396e74a2714610570578063a03b23ef1461056b578063a408f31214610566578063a40f959214610561578063aa01edb31461055c578063ab62c2b614610557578063ac00485514610552578063ae6393291461054d578063b1740c2d14610548578063b246949914610543578063b4eb0bf91461053e578063b6f680f414610539578063b8caceee14610534578063b8f82b261461052f578063b9a8effa1461052a578063bb14e46614610525578063bbc6f1dc14610520578063be6b4d2a1461051b578063beabacc814610516578063c1fdcd6214610511578063c9c1661b1461050c578063cbde2b6814610507578063cbe52ae314610502578063cecc95a7146104fd578063cfcc2209146104f8578063d01a3269146104f3578063d0643b8c146104ee578063d1f810a5146104e9578063d2c725e0146104e4578063d64bc25d146104df578063d86c3fef146104da578063d8f4cf3c146104d5578063dab50579146104d0578063dc4402ed146104cb578063df138458146104c6578063e2ddce11146104c1578063e460a8a9146104bc578063e5948689146104b7578063e5b08ffb146104b2578063ebfeb0a1146104ad578063eeda9991146104a8578063f1320097146104a35763ff44deab0361000e576152c9565b61521e565b6151ff565b6151b7565b61517b565b615032565b614fb1565b614f49565b614f11565b614eac565b614dbc565b614cca565b614be7565b614bae565b614b70565b614b45565b614b0d565b614a65565b6149e6565b6149ae565b614983565b614931565b614896565b6147ac565b614794565b614728565b6146fd565b6145c2565b61457f565b614554565b61453c565b614522565b614506565b6144cc565b6144a3565b6143c8565b6143ae565b61430a565b614228565b6141ec565b6141a7565b614162565b613d66565b613d29565b613ce0565b613c9d565b613c33565b613b75565b613aba565b613a7e565b613a6d565b6139d7565b6139a1565b613940565b61390b565b6138bd565b613898565b6137a6565b6135bd565b613585565b613533565b613465565b61339a565b6131b6565b61312a565b613102565b61308a565b612d36565b612cce565b612c9d565b612c16565b612bdd565b612af8565b612a34565b6129c1565b6128b6565b6127da565b6127b6565b612520565b6124e3565b61249b565b61241a565b611fb8565b611e9b565b611c6b565b611a82565b611a48565b611a31565b611931565b6118a1565b6116d7565b6116a0565b61149d565b61137c565b611342565b6112d9565b61129a565b61121d565b6111d8565b61116b565b61111c565b611044565b6109cb565b6107b0565b610707565b6001600160a01b038116036106bc57565b5f80fd5b35906106cb826106ab565b565b61016435906106cb826106ab565b60031960609101126106bc576004356106f3816106ab565b90602435610700816106ab565b9060443590565b346106bc57610770602061071a366106db565b91905f6001600160a01b036040518097819682957fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b0393165af180156107ab5761078157005b6107a29060203d6020116107a4575b61079a818361086f565b810190615324565b005b503d610790565b615339565b346106bc5760206003193601126106bc576107a26004356107d0816106ab565b616777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761081e57604052565b6107d5565b6080810190811067ffffffffffffffff82111761081e57604052565b67ffffffffffffffff811161081e57604052565b60e0810190811067ffffffffffffffff82111761081e57604052565b90601f601f19910116810190811067ffffffffffffffff82111761081e57604052565b604051906106cb82610853565b6040519060c0820182811067ffffffffffffffff82111761081e57604052565b60405190610140820182811067ffffffffffffffff82111761081e57604052565b60405190610160820182811067ffffffffffffffff82111761081e57604052565b60405190610180820182811067ffffffffffffffff82111761081e57604052565b67ffffffffffffffff811161081e5760051b60200190565b9080601f830112156106bc57602090823561095481610922565b93610962604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b82821061098b575050505090565b8380918335610999816106ab565b81520191019061097d565b6044359063ffffffff821682036106bc57565b610124359063ffffffff821682036106bc57565b346106bc5760c06003193601126106bc576004356109e8816106ab565b60243567ffffffffffffffff81116106bc57610a0890369060040161093a565b90610a116109a4565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126106bc576107a29260405192610a4c84610802565b606435610a58816106ab565b8452608435610a66816106ab565b602085015260a435610a77816106ab565b6040850152615344565b600211156106bc57565b35906106cb82610a81565b801515036106bc57565b61014435906106cb82610a96565b61016435906106cb82610a96565b61018435906106cb82610a96565b6101a435906106cb82610a96565b602435906106cb82610a96565b604435906106cb82610a96565b606435906106cb82610a96565b608435906106cb82610a96565b60a435906106cb82610a96565b60c435906106cb82610a96565b60e435906106cb82610a96565b61010435906106cb82610a96565b61012435906106cb82610a96565b81601f820112156106bc578035906020610b6883610922565b936040610b78604051968761086f565b84865282860191836060809702860101948186116106bc578401925b858410610ba5575050505050505090565b86848303126106bc578487918451610bbc81610802565b8635610bc781610a81565b815282870135610bd6816106ab565b8382015285870135610be781610a96565b86820152815201930192610b94565b9080601f830112156106bc576020908235610c1081610922565b93610c1e604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b828210610c47575050505090565b81358152908301908301610c39565b91909160e0818403126106bc57610c6b610892565b813581529267ffffffffffffffff60208301358181116106bc5782610c9191850161093a565b602086015260408301358181116106bc5782610cae918501610b4f565b604086015260608301358181116106bc5782610ccb918501610bf6565b606086015260808301358181116106bc5782610ce8918501610bf6565b608086015260a08301358181116106bc5782610d05918501610bf6565b60a086015260c08301359081116106bc57610d209201610bf6565b60c0830152565b359060058210156106bc57565b67ffffffffffffffff811161081e57601f01601f191660200190565b929192610d5c82610d34565b91610d6a604051938461086f565b8294818452818301116106bc578281602093845f960137010152565b9080601f830112156106bc57816020610da193359101610d50565b90565b91909160c0818403126106bc57610db961089f565b92610dc3826106c0565b8452610dd1602083016106c0565b602085015267ffffffffffffffff60408301358181116106bc5782610df7918501610bf6565b604086015260608301356060860152610e1260808401610d27565b608086015260a08301359081116106bc57610e2d9201610d86565b60a0830152565b60606003198201126106bc5767ffffffffffffffff916004358381116106bc5782610e6191600401610c56565b926024358181116106bc5783610e7991600401610da4565b926044359182116106bc57610da191600401610bf6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60021115610ec757565b610e90565b9081518082526020808093019301915f5b828110610eeb575050505090565b9091929382606060019287518051610f0281610ebd565b8252808401516001600160a01b03168483015260409081015115159082015201950193929101610edd565b9081518082526020808093019301915f5b828110610f4c575050505090565b835185529381019392810192600101610f3e565b91909160e0830192815181526020808301519460e060208401528551809152602061010084019601915f5b828110611002575050505060c0610ff1610fdf610fcd610fbb610da1979860408801518782036040890152610ecc565b60608701518682036060880152610f2d565b60808601518582036080870152610f2d565b60a085015184820360a0860152610f2d565b9201519060c0818403910152610f2d565b83516001600160a01b031688529681019692810192600101610f8b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b346106bc576110e96111056111186110d561105e36610e34565b9291949061106a615478565b506110f7604051946110a3602087018761108486836154c6565b0397611098601f19998a810183528261086f565b51902091848a616a3f565b979293919590986110cc60405191826110c06020820195866154c6565b0390810183528261086f565b51902014615536565b60405198899860a08a5260a08a0190610f60565b9088820360208a0152610f2d565b908682036040880152610f2d565b916060850152838203608085015261101f565b0390f35b346106bc5760806003193601126106bc5760043567ffffffffffffffff81116106bc576111636111526020923690600401610c56565b606435906044359060243590616faf565b604051908152f35b346106bc5760406003193601126106bc57600435611188816106ab565b6024359063ffffffff821682036106bc576001600160a01b036111c8911691825f525f60205260405f205460829163ffffffff908116831b921b19161790565b905f525f60205260405f20555f80f35b346106bc5760606003193601126106bc576004356111f5816106ab565b6001600160a01b0361120b604435602435617032565b91165f52600b60205260405f20555f80f35b346106bc5760406003193601126106bc5760043561123a816106ab565b6024359067ffffffffffffffff82116106bc5761125e6107a2923690600401610c56565b90617096565b60031960409101126106bc5760043561127c816106ab565b90602435610da181610a81565b906020610da1928181520190610f60565b346106bc576111186112c56112ae36611264565b906112b7615478565b506112c0615478565b6170f9565b604051918291602083526020830190610f60565b346106bc576003196040813601126106bc576004356112f781610a96565b6024359161130483610a96565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6007549260011b16911617176007555f80f35b5f9103126106bc57565b346106bc575f6003193601126106bc5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346106bc5760406003193601126106bc57600435611399816106ab565b6024356113a4617793565b6113ac61780d565b6001600160a01b0382165f818152600860209081526040918290205491517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919492829060249082905afa9384156107ab5761111894611438925f9161146e575b5080611432856001600160a01b03165f52600860205260405f2090565b556155e5565b91808311611464575b508161144c9161785e565b6114546177e8565b6040519081529081906020820190565b915061144c611441565b611490915060203d602011611496575b611488818361086f565b81019061559b565b5f611415565b503d61147e565b346106bc5760806003193601126106bc576114eb6004356114bd816106ab565b6024356114c9816106ab565b604435906114d6826106ab565b6114e56064358094833361789c565b33617a79565b602060405160018152f35b91909160e0818403126106bc5761150b610892565b9261151582610a8b565b8452611523602083016106c0565b6020850152611534604083016106c0565b6040850152611545606083016106c0565b60608501526080820135608085015260a082013560a085015260c082013567ffffffffffffffff81116106bc57610d209201610d86565b60c06003198201126106bc5767ffffffffffffffff916004358381116106bc57826115a9916004016114f6565b9260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8401126106bc576040516115e081610823565b60243581526044356020820152606435604082015260843560608201529260a4359182116106bc57610da191600401610c56565b9061161e82610ebd565b52565b610da191815161163081610ebd565b81526020820151602082015260c0611657604084015160e0604085015260e0840190610f2d565b9260608101516060840152608081015160808401526001600160a01b0360a08201511660a084015201519060c081840391015261101f565b906020610da1928181520190611621565b346106bc576111186116c36116b43661157c565b916116bd6155f2565b50617c45565b604051918291602083526020830190611621565b346106bc5760406003193601126106bc576004356116f4816106ab565b6024356001600160a01b038216916040517fce20ece70000000000000000000000000000000000000000000000000000000081526020908181600481885afa9081156107ab575f91611873575b50831061184b576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481885afa9182156107ab575f9261182e575b505082116118065781816117f06117d97f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1956117d3611801966001600160a01b03165f525f60205260405f2090565b54618f8a565b916001600160a01b03165f525f60205260405f2090565b556040519081529081906020820190565b0390a2005b7f7f47834b000000000000000000000000000000000000000000000000000000005f5260045ffd5b6118449250803d1061149657611488818361086f565b5f80611784565b7fbfb20688000000000000000000000000000000000000000000000000000000005f5260045ffd5b61188a9150823d841161149657611488818361086f565b5f611741565b906020610da1928181520190610f2d565b346106bc576020806003193601126106bc576001600160a01b036004356118c7816106ab565b165f5260056020526040805f2090600360205260405f2054916118e983615628565b935f5b84811061190157604051806111188882611890565b806001915f528383526fffffffffffffffffffffffffffffffff855f20541661192a8289615659565b52016118ec565b346106bc5760606003193601126106bc5760043561194e816106ab565b67ffffffffffffffff6024358181116106bc5761196f903690600401610bf6565b6044359182116106bc576119ea61198d6119b2933690600401610bf6565b936001600160a01b0381165f5260036020526119b960405f206040519586809261569a565b038561086f565b6119c684518451146156de565b6119d384518651146156de565b6001600160a01b03165f52600560205260405f2090565b905f5b83518110156107a25780611a18611a0660019385615659565b51611a118389615659565b5190617032565b611a2a8286905f5260205260405f2090565b55016119ed565b346106bc576107a2611a42366106db565b91617cae565b346106bc575f6003193601126106bc5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346106bc5760606003193601126106bc57600435611a9f816106ab565b60243567ffffffffffffffff81116106bc57611abf90369060040161093a565b90611ac8616818565b611ad0616884565b91600183526001600160a01b0390611b0a827f000000000000000000000000000000000000000000000000000000000000000016916158b3565b91813b156106bc575f8094611b6296611ba1604051988997889687957fed05beaf0000000000000000000000000000000000000000000000000000000087521660048601526101006024860152610104850190611e1b565b91604435604485015284606485015260848401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03925af180156107ab57611bb157005b80611bbe6107a29261083f565b80611338565b359060048210156106bc57565b91909160c0818403126106bc57611be661089f565b92611bf0826106c0565b8452611bfe602083016106c0565b602085015260408201356040850152606082013567ffffffffffffffff908181116106bc5782611c2f918501610bf6565b6060860152610e1260808401611bc4565b91611c5d90610da194928452606060208501526060840190610f2d565b91604081840391015261101f565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc57611c9c903690600401611bd1565b611ca461780d565b611cb76001600160a01b03825116617e19565b611cd0611ccb82516001600160a01b031690565b617e66565b611ce9611ce482516001600160a01b031690565b61735b565b611d3c602082015151611d03606085019182515190617e72565b805160c0840190611d1d82519160a0870192835191617ea1565b92611d2d865160019060101c1690565b611dc3575b5050508383618219565b929390919485611d51835160019060111c1690565b611d66575b60405180611118878a8a84611c40565b6111189496509085611db9949392611daf611da2611d8b85516001600160a01b031690565b6001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b94845133906188fb565b92905f8080611d56565b611deb611e13948789611de3611da2611d8b83516001600160a01b031690565b923390617f78565b611e08611e026119d389516001600160a01b031690565b87618052565b519151905191617ea1565b5f8080611d32565b9081518082526020808093019301915f5b828110611e3a575050505090565b9091929382608060019287516001600160a01b0380825116835284820151611e6181610ebd565b838601526040828101519091169083015260609081015115159082015201950193929101611e2c565b906020610da1928181520190611e1b565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc57611ed7611ed261111892369060040161093a565b6158b3565b604051918291602083526020830190611e1b565b939460c091610da19896611faa95611f8195610140938952602089015260408801526060870152806080870152815190611f2482610ebd565b86015260208101516001600160a01b03908116610160870152604082015181166101808701526060820151166101a086015260808101516101c086015260a08101516101e0860152015160e061020085015261022084019061101f565b845160a0840152602085015160c0840152604085015160e0840152606090940151610100830152565b610120818403910152610f60565b346106bc5760c05f611fc93661157c565b906040928351611fd881610853565b8581526020908682820152868682015260609781888a809401528860808201528860a08201520152612008615769565b50612011615478565b5061201d848484617c45565b94612026617793565b61202e615980565b91835161203a81610ebd565b61204381610ebd565b156123f4575b808701612056815161ad93565b816120b6818701996120816120756120758d516001600160a01b031690565b6001600160a01b031690565b9086519c8d809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161168f565b03925af19889156107ab575f996123d5575b50886120d38161ad93565b85516120de81610ebd565b6120e781610ebd565b61235b575082860151905261212b60c087015161212461211e61210f858a0193845190615659565b519260a08b0151905190615659565b5161be9e565b908a61b663565b9660808501519388949a60a0870151808b1061232857509085915b8c8689019481865161215e906001600160a01b031690565b9061216891619606565b828a019685885161217f906001600160a01b031690565b906121899161785e565b8b8d8651845161219f906001600160a01b031690565b8a516001600160a01b03168451916121b7938561ae28565b93908c828a019901948552885282518783019487828751906121d891615659565b51906121e391616a07565b90516121ee916155e5565b6121f8918461b55f565b8201928351898183519061220b91615659565b5190612216916155e5565b612220918461b55f565b84516001600160a01b03165f908152600560205260409020928151815161224691615659565b5192608001928351825161225991615659565b5161226391617032565b90516122779085905f5260205260405f2090565b5551835161228491615659565b519051835161229291615659565b5161229c91617032565b91516122af91905f5260205260405f2090565b555194519551918a0151925187519182526020820194909452604081019290925260608201929092526001600160a01b039182169382169291909116907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a461231a6177e8565b519687966111189688611eeb565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f5260048b905260245260445ffd5b5ffd5b905061238a9198506123818a870151670de0b6b3a764000081810390821002908361be7e565b90818552616a07565b966123b761239e60c0880151875190615659565b516123af60a0890151885190615659565b51908a61b54b565b96608085015193889a60a0870151808b116123285750908591612146565b6123ed919950823d841161149657611488818361086f565b975f6120c8565b80870161241361240982518c8901519061b641565b80865282516155e5565b9052612049565b346106bc5760206003193601126106bc57602061116360043561243c816106ab565b6001600160a01b0381165f52600b835260405f2054618eb8565b60606003198201126106bc5767ffffffffffffffff916004358381116106bc578261248391600401610c56565b926024358181116106bc5783610e7991600401611bd1565b346106bc576124ba6124ac36612456565b916124b5617793565b618219565b505050505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b346106bc5760406003193601126106bc576001600160a01b03600435612508816106ab565b16805f525f6020526111c860243560405f2054618f8a565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc576125519036906004016114f6565b61255961780d565b602081016001600160a01b0361257181835116617e19565b612585611ccb83516001600160a01b031690565b60808301511561278e5760408301516001600160a01b0316906125b561207560608601516001600160a01b031690565b911614612766576125d0611ce482516001600160a01b031690565b916125db8382618ffd565b906125e7848383617c45565b8451600c1c6001166126eb575b845161260e9190600b1c6001166126aa575b858484618aad565b96919694909683966126258451600190600d1c1690565b612675575b50505050505161263981610ebd565b61264281610ebd565b6126695750611118815b604051938493846040919493926060820195825260208201520152565b9150611118819261264c565b85975090612694611da2611d8b61269f9894516001600160a01b031690565b94845191339261937d565b915f8080808061262a565b84516001600160a01b03166126e4606086019182516126dd611da2836001600160a01b03165f52600260205260405f2090565b91856191d2565b9052612606565b6127249061270085516001600160a01b031690565b61271e611da2826001600160a01b03165f52600260205260405f2090565b91619062565b61274161273b6119d385516001600160a01b031690565b85618052565b61274c82858361911b565b604083015261260e61275f858484617c45565b90506125f4565b7fa54b181d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f57a456b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc5760206003193601126106bc57600435806127d157005b6107a29061ad93565b346106bc5760206003193601126106bc576004356127f7816106ab565b6127ff617793565b6001600160a01b03604051917f15afd4090000000000000000000000000000000000000000000000000000000083521660048201525f60248201526020816044815f305af180156107ab57611118915f9161285e575b506114546177e8565b612877915060203d60201161149657611488818361086f565b5f612855565b9060406003198301126106bc57600435612896816106ab565b916024359067ffffffffffffffff82116106bc57610da19160040161093a565b346106bc576128c43661287d565b906128cf825161578d565b916128d8615980565b915f5b8251811015612923578061291d6129046128f760019487615659565b516001600160a01b031690565b61290e8389615659565b51906001600160a01b03169052565b016128db565b8482856001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612958616884565b93813b156106bc575f8094611ba1604051978896879586947fd396a6660000000000000000000000000000000000000000000000000000000086526004860161599e565b60031960409101126106bc576004356129b4816106ab565b90602435610da181610a96565b346106bc576001600160a01b036129d73661299c565b91165f525f60205260405f20907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8254161790555f80f35b60031960409101126106bc57600435612a27816106ab565b90602435610da1816106ab565b346106bc5760206fffffffffffffffffffffffffffffffff612a826001600160a01b03612a6036612a0f565b91165f526006845260405f20906001600160a01b03165f5260205260405f2090565b5416604051908152f35b60031960a09101126106bc5760405160a0810181811067ffffffffffffffff82111761081e57604052600435612ac181610a81565b8152602435612acf81610a81565b6020820152604435612ae0816106ab565b60408201526064356060820152608435608082015290565b346106bc57612b0636612a8c565b612b0e617793565b6080604051917f43583be50000000000000000000000000000000000000000000000000000000083528051612b4281610ebd565b60048401526020810151612b5581610ebd565b60248401526001600160a01b036040820151166044840152606081015160648401520151608482015260608160a4815f305af180156107ab575f905f925f91612ba6575b506111189061264c6177e8565b90506111189250612bcf915060603d606011612bd6575b612bc7818361086f565b810190615a2b565b9092612b99565b503d612bbd565b346106bc5760406003193601126106bc576001600160a01b03600435612c02816106ab565b165f52600d60205260243560405f20555f80f35b346106bc576020806003193601126106bc576001600160a01b03600435612c3c816106ab565b165f5260056020526040805f2090600360205260405f205491612c5e83615628565b935f5b848110612c7657604051806111188882611890565b806001915f52838352612c8c855f205460801c90565b612c968289615659565b5201612c61565b346106bc5760406003193601126106bc576107a2600435612cbd816106ab565b612cc860243561b8a2565b9061abf6565b346106bc5760406003193601126106bc576020612d2c600435612cf0816106ab565b6024357f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b6040519015158152f35b346106bc57612d4436612a8c565b612d4c61780d565b60075460021c60011661306257604090818101916001600160a01b03928381511693845f52600e60205280835f205416156130365760049450612d8d617793565b6020612da361207584516001600160a01b031690565b8451968780927f38d52e0f0000000000000000000000000000000000000000000000000000000082525afa80156107ab576080955f91613007575b5016612dfa81612df584516001600160a01b031690565b619612565b81516001600160a01b031690612e166060860192835190619668565b60016020860151612e2681610ebd565b612e2f81610ebd565b03612f9c57612e5791855191612e4483610ebd565b84516001600160a01b031691519261a353565b7feeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c08296929793979688612eb4612e9761207589516001600160a01b031690565b948951938493846040919493926060820195825260208201520152565b0390a25b8051612ec381610ebd565b612ecc81610ebd565b612f4d570151808410612f1d575051611118918391612efa9083906001600160a01b0316619668565b619668565b612f026177e8565b51938493846040919493926060820195825260208201520152565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b0151808511612f6c57509161111891612efa612ef594869586916128f7565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600485905260245260445ffd5b612fbf91855191612fac83610ebd565b84516001600160a01b0316915192619baf565b7f3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b8296929793979688612fff612e9761207589516001600160a01b031690565b0390a2612eb8565b613029915060203d60201161302f575b613021818361086f565b810190615a46565b5f612dde565b503d613017565b847f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc576130dd6130ff6001600160a01b036130a6366106db565b94919290921693845f5260066020526130d38360405f20906001600160a01b03165f5260205260405f2090565b5460801c90617032565b925f52600660205260405f20906001600160a01b03165f5260205260405f2090565b55005b346106bc576107a2613113366106db565b9161a678565b906020610da192818152019061101f565b346106bc5760206003193601126106bc5767ffffffffffffffff6004358181116106bc57366023820112156106bc5780600401359182116106bc5736602483830101116106bc576111189160246131819201615a5b565b60405191829182613119565b6131a3610da19492606083526060830190610f2d565b926020820152604081840391015261101f565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc576131e7903690600401610da4565b6131ef61780d565b6132026001600160a01b03825116617e19565b613216611ccb82516001600160a01b031690565b6132737f00000000000000000000000000000000000000000000000000000000000000005c61324c83516001600160a01b031690565b907f000000000000000000000000000000000000000000000000000000000000000061a7d7565b61328c61328782516001600160a01b031690565b617587565b6132df6020820151516132a6604085019182515190617e72565b805160c08401906132c082519160a087019283519161a7f0565b926132d08651600190600e1c1690565b613343575b5050508383616a3f565b91909492938493866132f68351600190600f1c1690565b61330c575b85611118866040519384938461318d565b6111189550613337949661332d611da2611d8b85516001600160a01b031690565b948451339061a9fc565b9050815f8080866132fb565b61336a613392948789613363611da2611d8b83516001600160a01b031690565b923361a8b7565b6133876133816119d389516001600160a01b031690565b876180f6565b51915190519161a7f0565b5f80806132d5565b346106bc5760206003193601126106bc576001600160a01b036004356133bf816106ab565b165f525f602052602060405f2054604051908152f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc60809101126106bc576040519061340c82610823565b8160243561341981610a96565b815260443561342781610a96565b602082015260643561343881610a96565b604082015260606084359161344c83610a96565b0152565b610104359064ffffffffff821682036106bc57565b346106bc576101c06003193601126106bc57600435613483816106ab565b6101a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126106bc576107a2906134ba6108bf565b906134c4366133d5565b825260a435602083015260c435604083015260e43560608301526134e6613450565b60808301526134f36109b7565b60a0830152613500610aa0565b60c083015261350d610aae565b60e083015261351a610abc565b610100830152613528610aca565b610120830152615b28565b346106bc576001600160a01b036135493661299c565b91165f525f60205260405f20907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8254169060011b1790555f80f35b346106bc5760206003193601126106bc576004357f00000000000000000000000000000000000000000000000000000000000000005d005b346106bc576040806003193601126106bc5767ffffffffffffffff6004358181116106bc576135f090369060040161093a565b906024359081116106bc5761360990369060040161093a565b613613825161578d565b925f5b835181101561369857806136326129046128f760019488615659565b61365d6136426128f78387615659565b8461364d848a615659565b5101906001600160a01b03169052565b61366d6120756128f78387615659565b61368f576136895f5b6020613682848a615659565b5101615db4565b01613616565b61368982613676565b6040517fbb4ad7d50000000000000000000000000000000000000000000000000000000081525f81806136ce8960048301611e8a565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156107ab57611118915f9161371a575b5060405191829182611e8a565b61373691503d805f833e61372e818361086f565b8101906157db565b8261370d565b9080601f830112156106bc57602090823561375681610922565b93613764604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b82821061378d575050505090565b838091833561379b81610a96565b81520191019061377f565b346106bc5760806003193601126106bc5767ffffffffffffffff6004358181116106bc576137d890369060040161093a565b90602435918183116106bc57366023840112156106bc5782600401356137fd81610922565b9361380b604051958661086f565b8185526020916024602087019160051b830101913683116106bc57602401905b82821061387f57505050506044358281116106bc5761384e90369060040161093a565b6064359283116106bc576111189361386d61387394369060040161373c565b92615dc7565b60405191829182611e8a565b838091833561388d81610a81565b81520191019061382b565b346106bc5760206003193601126106bc576107a26004356138b8816106ab565b617e19565b346106bc5760206003193601126106bc576004356138da81610a96565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd600754169060011b176007555f80f35b346106bc575f6003193601126106bc575f7f00000000000000000000000000000000000000000000000000000000000000005d005b346106bc576130dd6130ff6001600160a01b0361395c366106db565b94919290921693845f5260066020526fffffffffffffffffffffffffffffffff61399a8460405f20906001600160a01b03165f5260205260405f2090565b5416617032565b346106bc575f6003193601126106bc5760017f00000000000000000000000000000000000000000000000000000000000000005d005b346106bc5760406003193601126106bc576107a26004356139f7816106ab565b6001600160a01b0360243591613a0c836106ab565b165f526001602052600260405f2001906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60031960409101126106bc57600435613a66816106ab565b9060243590565b346106bc576107a2612cc836613a4e565b346106bc575f6003193601126106bc5760207f00000000000000000000000000000000000000000000000000000000000000005c604051908152f35b346106bc576001600160a01b03613ad03661287d565b91165f52602090600360205260405f2081519167ffffffffffffffff831161081e5768010000000000000000831161081e578154838355808410613b4f575b506020613b219101915f5260205f2090565b925f5b838110613b2d57005b60019082613b4285516001600160a01b031690565b9401938187015501613b24565b825f528360205f2091820191015b818110613b6a5750613b0f565b5f8155600101613b5d565b346106bc57613b833661287d565b90613b8c616818565b613b94615980565b90613bc86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016936158b3565b915f93613bd3616884565b93813b156106bc575f8094613c17604051978896879586947fd396a6660000000000000000000000000000000000000000000000000000000086526004860161599e565b03925af180156107ab57613c29575080f35b6107a2915061083f565b346106bc5760206003193601126106bc576001600160a01b03600435613c58816106ab565b16805f525f602052600160405f205460031c1615613c7257005b7fef029adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346106bc575f6003193601126106bc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346106bc576020613d1d6001600160a01b03613cfb36612a0f565b91165f526006835260405f20906001600160a01b03165f5260205260405f2090565b5460801c604051908152f35b346106bc5760406003193601126106bc576001600160a01b03600435613d4e816106ab565b16805f525f6020526111c860243560405f205461abb6565b346106bc57613d743661157c565b613d7f929192617793565b613d8a818484617c45565b92613d93617793565b613d9b615980565b908351613da781610ebd565b613db081610ebd565b1561413a575b6020945f868201613dc7815161ad93565b87613e1c81890194613de661207561207588516001600160a01b031690565b906040519586809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161168f565b03925af19182156107ab575f9261411b575b50613e388261ad93565b8651613e4381610ebd565b613e4c81610ebd565b6140a75790613e8b916040850151905260c0860151613e8561211e613e768b880193845190615659565b519260a08a0151905190615659565b9161b663565b9060808601519482959260a0880151908181106140795750505b6040870196838851613ebd906001600160a01b031690565b90613ec791619606565b60600197868951613ede906001600160a01b031690565b90613ee89161785e565b855183516001600160a01b031689516001600160a01b0316875191613f0d938661ae28565b9190818801976040019283528752855160608401928682855190613f3091615659565b5190613f3b91616a07565b9051613f46916155e5565b613f50918561b55f565b85019182518881845190613f6391615659565b5190613f6e916155e5565b613f78918361b55f565b83516001600160a01b03165f9081526005602052604090209180518751613f9e91615659565b51916080019182518851613fb191615659565b51613fbb91617032565b8751613fcf9085905f5260205260405f2090565b55518351613fdc91615659565b5190518351613fea91615659565b51613ff491617032565b915161400791905f5260205260405f2090565b555194519551606092830151935160408051938452602084019690965294820193909352908101929092526001600160a01b039081169381169216907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a46140716177e8565b6107a26177e8565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b506140d76140ff916140ce6060860151670de0b6b3a764000081810390821002908361be7e565b90818752616a07565b6140e760c0870151855190615659565b516140f860a0880151865190615659565b519161b54b565b906080860151948260a088015190818111614079575050613ea5565b614133919250883d8a1161149657611488818361086f565b905f613e2e565b6020850161415b614151825160608501519061b641565b80855282516155e5565b9052613db6565b346106bc5760406003193601126106bc576001600160a01b03600435614187816106ab565b16805f525f6020526111c860405f205464174876e800602435049061b692565b346106bc575f6003193601126106bc576141bf617793565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c156106bc575f905d005b346106bc5760206003193601126106bc57602061116360043561420e816106ab565b6001600160a01b0381165f52600b835260405f205461acb9565b346106bc5760806003193601126106bc5760043567ffffffffffffffff81116106bc5761425c611118913690600401610c56565b6142f560243560443561426e81610a81565b6064359061427a615478565b508261428a836060880151615659565b5261429481610ebd565b614302576002915b6142ee60c08601926142e6816142b3818751615659565b51956142d160a08b01976142c8848a51615659565b5190888b61c52a565b6142df8360808d0151615659565b5251615659565b519351615659565b519261c52a565b5060405191829182611289565b60019161429c565b346106bc5760406003193601126106bc576107a260043561432a816106ab565b6001600160a01b036024359161433f836106ab565b165f52600e60205260405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60031960809101126106bc57600435614396816106ab565b906024356143a3816106ab565b906044359060643590565b346106bc576107a26143bf3661437e565b9291909161ad4e565b346106bc576143d6366106db565b90916143e0617793565b6143e861780d565b6143fa6143f48361b8a2565b8261abf6565b6001600160a01b0381165f52600860205260405f2080549383850394851161449e579390556040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039093166024840152604480840192909252908252614479919061447460648361086f565b61c22f565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b6155aa565b346106bc5760406003193601126106bc576107a26004356144c3816106ab565b6024359061785e565b346106bc575f6003193601126106bc5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346106bc5760206003193601126106bc576107a260043561ad93565b346106bc576107a26145333661437e565b9291909161ade3565b346106bc575f6003193601126106bc576107a261780d565b346106bc5760406003193601126106bc576020611163600435614576816106ab565b60243590615f52565b346106bc575f6003193601126106bc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346106bc5760606003193601126106bc57600480356145e0816106ab565b67ffffffffffffffff916024358381116106bc5761460290369060040161093a565b926044359081116106bc5761461b903690600401610b4f565b916001600160a01b039081165f5b85518110156107a2578061463f60019287615659565b51835f526020908682526040906146758a8861465e87865f2093615659565b51166001600160a01b03165f5260205260405f2090565b927fffffffffffffffffffff0000000000000000000000000000000000000000000060ff75ff0000000000000000000000000000000000000000008451956146bc87610ebd565b6146c587610ebd565b74ffffffffffffffffffffffffffffffffffffffff0088549587015160081b16950151151560a81b1694169116171717905501614629565b346106bc5760406003193601126106bc57602061116360043561471f816106ab565b602435906160f9565b346106bc5760a06003193601126106bc5760043567ffffffffffffffff81116106bc5761475c614782913690600401610c56565b604435614768816106ab565b60643590614775826106ab565b608435926024359061ae28565b60408051928352602083019190915290f35b346106bc576114eb6147a5366106db565b9133617a79565b346106bc576101806003193601126106bc576004356147ca816106ab565b6101607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126106bc576107a2906148016108e0565b9061480a610ad8565b8252614814610ae5565b6020830152614821610af2565b604083015261482e610aff565b606083015261483b610b0c565b6080830152614848610b19565b60a0830152614855610b26565b60c0830152614862610b33565b60e083015261486f610b41565b61010083015261487d610aa0565b61012083015261488b6106cd565b610140830152616176565b346106bc576001600160a01b036148ac36612a0f565b911690815f525f602052600160405f20541615614905576148f2906148e5925f5260036020526148ec60405f206040519485809261569a565b038461086f565b8261af4c565b9051604080519182526020820192909252f35b507f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346106bc576001600160a01b036149473661299c565b91165f525f60205260405f20907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb8254169060021b1790555f80f35b346106bc5760406003193601126106bc5760206111636004356149a5816106ab565b60243590616427565b346106bc575f6003193601126106bc577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6106bc57005b346106bc5760406003193601126106bc57600435614a03816106ab565b6001600160a01b03602435911690815f525f60205260405f2054670de0b5cad2bef0008211614a3d5764174876e8006111c892049061b692565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc57614a73366106db565b9091614a7d617793565b303b156106bc57604051927fae6393290000000000000000000000000000000000000000000000000000000084526001600160a01b03809216600485015216602483015260448201525f8160648183305af180156107ab57614afe575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b614b079061083f565b5f614479565b346106bc576107a2614b1e36613a4e565b907f000000000000000000000000000000000000000000000000000000000000000061afb2565b346106bc5760406003193601126106bc576020611163600435614b67816106ab565b6024359061652f565b346106bc575f6003193601126106bc5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b346106bc5760406003193601126106bc576001600160a01b03600435614bd3816106ab565b165f52600860205260243560405f20555f80f35b346106bc5760606003193601126106bc57600435614c04816106ab565b60243567ffffffffffffffff81116106bc57614c24903690600401610c56565b906001600160a01b0360443591614c3a83610a81565b614c42615478565b50165f5260209060056020526040805f20602085015151935f6040870160a08801915b878110614c7a57604051806111188b82611289565b80614c91614c8b6001938551615659565b5161b99a565b614c9c828651615659565b52805f52858552614cc4886fffffffffffffffffffffffffffffffff895f205416838d61b5ef565b01614c65565b346106bc5760806003193601126106bc57600435614ce7816106ab565b67ffffffffffffffff6024358181116106bc57614d0890369060040161093a565b6044358281116106bc57614d20903690600401610bf6565b916064359081116106bc57614d416001600160a01b03913690600401610bf6565b93614d4f83518551146156de565b614d5c83518651146156de565b1691825f52602091600560205260409160405f20915f5b8151811015614da75780614d97614d8c60019386615659565b51611a11838c615659565b815f52858852865f205501614d73565b6107a282885f52600360205260405f20615eb7565b346106bc576040806003193601126106bc57600435614dda816106ab565b6024359067ffffffffffffffff82116106bc57366023830112156106bc57816004013591614e0783610922565b92614e15604051948561086f565b8084526020906024602086019160071b840101923684116106bc57602401905b838210614e46576107a286866165a7565b6080823603126106bc57826080918851614e5f81610823565b8435614e6a816106ab565b815282850135614e7981610a81565b8382015289850135614e8a816106ab565b8a82015260608086013590614e9e82610a96565b820152815201910190614e35565b346106bc57611118614eda614ec036611264565b90614ec9615478565b50614ed2617793565b6112c0615478565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190610f60565b346106bc5760406003193601126106bc576001600160a01b03600435614f36816106ab565b165f525f60205260243560405f20555f80f35b346106bc57614f573661299c565b907f00000000000000000000000000000000000000000000000000000000000000005c5f527f000000000000000000000000000000000000000000000000000000000000000060205260405f20905f5260205260405f205d005b346106bc5760206003193601126106bc57614fe2600435614fd1816106ab565b614fd9615980565b506107d0616818565b606060075460405190614ff482610802565b600181161515918281526001604060208301928285811c1615158452019260021c161515825260405192835251151560208301525115156040820152f35b346106bc576060806003193601126106bc5767ffffffffffffffff906004358281116106bc5761506690369060040161093a565b906024358381116106bc5761507f90369060040161093a565b926044359081116106bc5761509890369060040161373c565b6150a2835161578d565b935f5b845181101561514557806150cb6150c16128f760019489615659565b61290e838a615659565b6150e76150db6128f78386615659565b604061364d848b615659565b6150f76120756128f78386615659565b61513c5761510c5f5b6020613682848b615659565b61513661512261511c8387615659565b51151590565b8661512d848b615659565b51019015159052565b016150a5565b61510c82615100565b6040517fbb4ad7d50000000000000000000000000000000000000000000000000000000081525f81806136ce8a60048301611e8a565b346106bc5760206003193601126106bc576001600160a01b036004356151a0816106ab565b165f52600b602052602060405f2054604051908152f35b346106bc5760406003193601126106bc5760043567ffffffffffffffff81116106bc576111636151ed602092369060040161093a565b602435906151fa826106ab565b61af4c565b346106bc576124ba61521036610e34565b91615219617793565b616a3f565b346106bc5761529a6152ad6111186110d56152bb61523b36612456565b61524796919296615478565b506040519261527d602085018561525e84836166a9565b0395615272601f199788810183528261086f565b51902092828a618219565b989294919390966110cc60405191826110c06020820195866166a9565b9160208901528782036040890152610f2d565b908582036060870152610f2d565b90838203608085015261101f565b346106bc5760606003193601126106bc576004356152e6816106ab565b6001600160a01b03602435916152fb836106ab565b165f52600c6020526130ff6044359160405f20906001600160a01b03165f5260205260405f2090565b908160209103126106bc5751610da181610a96565b6040513d5f823e3d90fd5b90929192615350616818565b6001600160a01b03615384817f000000000000000000000000000000000000000000000000000000000000000016926158b3565b9261538d616884565b90833b156106bc576153ef9661545a5f9793615422899563ffffffff6040519c8d9b8c9a8b997f0e0677ab000000000000000000000000000000000000000000000000000000008b521660048a015261016060248a0152610164890190611e1b565b9516604487015280516001600160a01b0390811660648801526020820151811660848801526040909101511660a4860152565b60c484018590528051151560e48501526020810151151561010485015260408101511515610124850152606001511515610144840152565b03925af180156107ab5761546b5750565b80611bbe6106cb9261083f565b6040519061548582610853565b815f815260c060609182602082015282604082015282808201528260808201528260a08201520152565b60051115610ec757565b906005821015610ec75752565b90610da191602081526001600160a01b03808351166020830152602083015116604082015260a0615506604084015160c0606085015260e0840190610f2d565b92606081015160808401526155226080820151838501906154b9565b01519060c0601f198285030191015261101f565b1561553d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e70757420706172616d65746572732068617665206368616e6765640000006044820152fd5b908160209103126106bc575190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b905f19820191821161449e57565b9190820391821161449e57565b604051906155ff82610853565b606060c0835f81525f60208201528260408201525f838201525f60808201525f60a08201520152565b9061563282610922565b61563f604051918261086f565b828152601f1961564f8294610922565b0190602036910137565b805182101561566d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9081548082526020809201925f5260205f20915f905b8282106156be575050505090565b83546001600160a01b0316855293840193600193840193909101906156b0565b156156e557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5661756c744d6f636b3a20544f4b454e535f4c454e4754485f4d49534d41544360448201527f48000000000000000000000000000000000000000000000000000000000000006064820152fd5b6040519061577682610823565b5f6060838281528260208201528260408201520152565b9061579782610922565b6157a4604051918261086f565b828152601f196157b48294610922565b01905f5b8281106157c457505050565b6020906157cf615769565b828285010152016157b8565b9060209182818303126106bc5780519067ffffffffffffffff82116106bc570181601f820112156106bc5780519261581284610922565b93604093615823604051968761086f565b818652828087019260071b850101938185116106bc578301915b84831061584d5750505050505090565b6080838303126106bc5783608091875161586681610823565b8551615871816106ab565b81528286015161588081610a81565b8382015288860151615891816106ab565b89820152606080870151906158a582610a96565b82015281520192019161583d565b6158bd815161578d565b905f5b81518110156158f357806158ed6001600160a01b036158e160019486615659565b511661290e8387615659565b016158c0565b50505f61592d91604051809381927fbb4ad7d500000000000000000000000000000000000000000000000000000000835260048301611e8a565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156107ab575f9161596c575090565b610da191503d805f833e61372e818361086f565b6040519061598d82610802565b5f6040838281528260208201520152565b6159f86159cb6106cb9597969460c0946001600160a01b0361014091168552806020860152840190611e1b565b966040830190604090816001600160a01b0391828151168552826020820151166020860152015116910152565b5f60a082015201906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b908160609103126106bc578051916040602083015192015190565b908160209103126106bc5751610da1816106ab565b919091615a9d615a977f000000000000000000000000000000000000000000000000000000000000000092835c159586615b1f575b3691610d50565b3361c08d565b92615aa55750565b7f00000000000000000000000000000000000000000000000000000000000000005c615af7575f905d6106cb7f000000000000000000000000000000000000000000000000000000000000000061a7c6565b7f20f1d86d000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001855d615a90565b906117d9816060615d81615d4f615d1d615ceb615ca3615c5f615c55615c4a615c3f615c0c615db19d8f610120615bd9615ba7615b78615be1946001600160a01b03165f525f60205260405f2090565b5460c08601511515907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe161790565b60e085015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9060011b91161790565b920151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff79060031b91161790565b6101008c015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb9060021b91161790565b60208b015190618f8a565b60408a01519061aba5565b878901519061abb6565b6080880151605a1b7003fffffffffc0000000000000000000000167ffffffffffffffffffffffffffffffffc0000000003ffffffffffffffffffffff919091161790565b60a087015160821b7403fffffffc00000000000000000000000000000000167ffffffffffffffffffffffffc00000003ffffffffffffffffffffffffffffffff919091161790565b945194855115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef9060041b91161790565b602085015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf9060051b91161790565b604084015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9060061b91161790565b91015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f9060071b91161790565b55565b61161e82610ebd565b51610da181610ebd565b9190939293615dd6835161578d565b925f5b8151811015615e485780615df56129046128f760019486615659565b615e0a613676615e058387615659565b615dbd565b615e26615e1a6128f78388615659565b604061364d848a615659565b615e42615e3661511c838b615659565b606061512d848a615659565b01615dd9565b5050505061592d9192505f90604051809381927fbb4ad7d500000000000000000000000000000000000000000000000000000000835260048301611e8a565b90670de0b6b3a76400009182810292818404149015171561449e57565b8181029291811591840414171561449e57565b81519167ffffffffffffffff831161081e5768010000000000000000831161081e578154838355808410615f2c575b50615ef96020809201925f5260205f2090565b905f5b848110615f0a575050505050565b60019082615f1f86516001600160a01b031690565b9501948185015501615efc565b825f528360205f2091820191015b818110615f475750615ee6565b5f8155600101615f3a565b9080158015615fdd575b615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57615fb2945f91615fb8575b50166196e2565b50905090565b615fd1915060203d60201161302f57613021818361086f565b5f615fab565b50505f90565b506160246020615fec836155d7565b604051809381927fef8b30f7000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa9081156107ab575f91616047575b5015615f5c565b616060915060203d60201161149657611488818361086f565b5f616040565b9080519061607382610ebd565b61607c82610ebd565b82546020820151604092909201517fffffffffffffffffffff0000000000000000000000000000000000000000000090911660ff939093169290921760089190911b74ffffffffffffffffffffffffffffffffffffffff00161790151560a81b75ff00000000000000000000000000000000000000000016179055565b908015615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57616152945f91616157575b5016619f91565b505090565b616170915060203d60201161302f57613021818361086f565b5f61614b565b6163f46163dc6120756101406106cb956163b361638061634d61631b6162e96162b76162856162536162216161ef8f6161bf906001600160a01b03165f525f60205260405f2090565b548b5115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff9060091b91161790565b60208b015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff9060081b91161790565b60408a015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff90600a1b91161790565b606089015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff90600b1b91161790565b608088015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefff90600c1b91161790565b60a087015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff90600d1b91161790565b60c086015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfff90600e1b91161790565b60e085015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff90600f1b91161790565b61010084015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff9060101b91161790565b61012083015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff9060111b91161790565b6163cd876001600160a01b03165f525f60205260405f2090565b5501516001600160a01b031690565b916001600160a01b03165f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90801580156164a6575b615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57615fb2945f91616487575b501661a199565b6164a0915060203d60201161302f57613021818361086f565b5f616480565b506164ed60206164b5836155d7565b604051809381927f4cdad506000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa9081156107ab575f91616510575b5015616431565b616529915060203d60201161149657611488818361086f565b5f616509565b908015615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57616152945f91616588575b501661994c565b6165a1915060203d60201161302f57613021818361086f565b5f616581565b91905f5b815181101561668c576001906166866020616633816165ca8588615659565b510151916165d783610ebd565b604061662a6001600160a01b03826165ef898c615659565b5101511660606165ff898c615659565b51015115159361661a84519761661489610802565b88615db4565b8601906001600160a01b03169052565b83019015159052565b616681616651886001600160a01b03165f52600460205260405f2090565b61666c61665e8689615659565b51516001600160a01b031690565b6001600160a01b03165f5260205260405f2090565b616066565b016165ab565b50509050565b60041115610ec757565b906004821015610ec75752565b90610da191602081526001600160a01b0380835116602083015260208301511660408201526040820151606082015260a06166f3606084015160c0608085015260e0840190610f2d565b9261552260808201518385019061669c565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461670557365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e15616773573d5ff35b3d5ffd5b6001600160a01b0316805f525f60205260405f205460018160021c169063ffffffff80916167a3608290565b1c16826167df575b50506167b45750565b7fd971f597000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161449e57164211155f806167ab565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642111580616876575b61684e57565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c16616848565b61688c615769565b50616895615769565b600160208201526001604082015290565b9080601f830112156106bc578151906020916168c181610922565b936168cf604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b8282106168f8575050505090565b815181529083019083016168ea565b81601f820112156106bc5780519061691e82610d34565b9261692c604051948561086f565b828452602083830101116106bc57815f9260208093018386015e8301015290565b916080838303126106bc5782519067ffffffffffffffff918281116106bc57836169789186016168a6565b9360208101519360408201518481116106bc57816169979184016168a6565b9360608301519081116106bc57610da19201616907565b936169d86169eb936001600160a01b03610da198969416875260a0602088015260a0870190610f2d565b9160408601528482036060860152610f2d565b91608081840391015261101f565b906001820180921161449e57565b9190820180921161449e57565b91616a3190610da194928452606060208501526060840190610f2d565b916040818403910152610f2d565b9190616a49617793565b6060616a53615980565b9160208501616a66815151808652615628565b60808301958651616a76816154af565b616a7f816154af565b616d5f57506060830151616a938651615628565b94616acf8260808b0151616ac9616ab189516001600160a01b031690565b6001600160a01b03165f52601160205260405f205490565b9061b504565b995b6060860151808410616d2f5750616aea839998996195f5565b60208901975f5b8c8b51821015616c4a5781616b0591615659565b51616b0f816195f5565b616b198288615659565b51616c3957616b40908d6140f88460a0616b378260c0860151615659565b51930151615659565b80616b4b8389615659565b525b616b5b6128f7838a51615659565b60408a01616b6a848251615659565b518311616bed57508d83616be18e616bd98f968f97616bc486616bbc818b60019e9d616b9988616be79f619606565b616bb5616ba68489615659565b5191516001600160a01b031690565b908d61ae28565b875292615659565b52616bd3856060880151615659565b51616a07565b9051906155e5565b9161b55f565b01616af1565b91616bfc846123589451615659565b517f8eda85e4000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b50616c448187615659565b51616b4d565b5050939694509650965096616c6f90616c6a85516001600160a01b031690565b617096565b7fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871616ca184516001600160a01b031690565b92616cc2896020870195616cbc87516001600160a01b031690565b9061a678565b616cf6616ab1616cea616cdc88516001600160a01b031690565b96516001600160a01b031690565b9451966128f7886154af565b92616d1e6001600160a01b0392616d0c886154af565b88846040519586951698169684616a14565b0390a4616d296177e8565b93929190565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b60038751616d6c816154af565b616d75816154af565b03616d9757616d84885161b4cf565b616d8e8151615628565b945f9199616ad1565b9760018751616da5816154af565b616dae816154af565b03616e1657616dbd885161affd565b616e0e89616dcf84604088015161b230565b60808a015190616de9616ab188516001600160a01b031690565b616df38c5161b0c0565b91616e086120758a516001600160a01b031690565b9361b27f565b959091616ad1565b979360028751616e25816154af565b616e2e816154af565b03616eaf57978798616e40895161affd565b606085015191616e4f8761b031565b616ea9616e9f60408b0192808452898b9f88608082015193616e99612075616e8b616e84616ab188516001600160a01b031690565b955161b0c0565b95516001600160a01b031690565b9461b105565b9092519099615659565b52616ad1565b5060048651616ebd816154af565b616ec6816154af565b03616f8757616ed5875161afc8565b5f616eed61207561207586516001600160a01b031690565b60608501519060808a0151918360a088015198616f3a6040519a8b96879586947fe4c4366300000000000000000000000000000000000000000000000000000000865233600487016169ae565b03925af19384156107ab575f905f955f915f91616f5c575b5090959199616ad1565b92505050616f7d9194503d805f833e616f75818361086f565b81019061694d565b919592915f616f52565b7f6c02b395000000000000000000000000000000000000000000000000000000005f5260045ffd5b9093925f94616fc2846080850151615659565b51818111616fd2575b5050505050565b616fff95965091616fe791616ff8930361b641565b9260a0616b378260c0860151615659565b519161b663565b905f80808080616fcb565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b906fffffffffffffffffffffffffffffffff80831190811561708c575b506170645760801b90810180911161449e5790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f61704f565b6001600160a01b0390929192165f52602060056020526040805f205f5b606086015180518210156170f057906170e06170d182600194615659565b51611a118360808b0151615659565b815f52838652845f2055016170b3565b50505050509050565b91617102617793565b6001600160a01b0382165f526005602052604090815f20915f602052805f2054916004602052815f206003602052825f20948554948852617146602089019661b6f3565b86526171518561b70e565b9380890194855261716186615628565b9260608a0193845261717287615628565b60808b0152617182878b5161c356565b60c08b015261719087615628565b60a08b019081528a5191600199600184811c169384617347575b5083617335575b5f5b8d8b82106172125750505050505050505050505050806172026171ea617209936001600160a01b03165f52600560205260405f2090565b916001600160a01b03165f52600660205260405f2090565b908361b79b565b906106cb6177e8565b908a8a8e938a61725d856172498161723b6172368d61666c6128f78f869051615659565b61b75c565b94905f5260205260405f2090565b549551836172578383615659565b52615659565b506172678161b99a565b617272868b51615659565b52617291836fffffffffffffffffffffffffffffffff8616878561b5ef565b891561732c57856172a48c830151151590565b918261730e575b50506172bc575b5050505b016171b3565b836172e28d826172d7816172d0875161c3b2565b9351615659565b519660801c85616faf565b93846172f0575b50506172b2565b617303946172fd916155e5565b9161b5ef565b5f8f8b9083836172e9565b9091505161731b81610ebd565b61732481610ebd565b14855f6172ab565b505050506172b6565b8c5190935060031c60011615926171b1565b61735291945061c3b2565b1515925f6171aa565b617363615478565b9061736c617793565b6001600160a01b0381165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f209384549387526173af602088019561b6f3565b85526173ba8461b70e565b918188019283526173ca85615628565b91606089019283526173db86615628565b9460809560808b01526173ef878b5161c356565b60c08b01526173fd87615628565b60a08b019081528a5191600199600184811c169384617573575b5083617561575b5f5b8d8b821061745f5750505050505050505050505050806172026171ea617457936001600160a01b03165f52600560205260405f2090565b610da16177e8565b908a8d92828c8c8c617493846174858161723b6172368f8f6128f78561666c9251615659565b549451836172578383615659565b5061749d8161b99a565b6174a8858d51615659565b526174c66fffffffffffffffffffffffffffffffff8416858761b55f565b878d8d156175545782015115159182617536575b50506174ed575b50505050505b01617420565b826175109261750782617500885161c3b2565b9451615659565b51961c85616faf565b9283617520575b8e93508c6174e1565b61752d93616be1916155e5565b5f8f8282617517565b9091505161754381610ebd565b61754c81610ebd565b14875f6174da565b50505050505050506174e7565b8c5190935060031c600116159261741e565b61757e91945061c3b2565b1515925f617417565b61758f615478565b90617598617793565b6001600160a01b0381165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f209384549387526175db602088019561b6f3565b85526175e68461b70e565b918188019283526175f685615628565b916060890192835261760786615628565b9460809560808b015261761b878b5161c356565b60c08b015261762987615628565b60a08b019081528a5191600199600184811c16938461777f575b508361776d575b5f5b8d8b82106176835750505050505050505050505050806172026171ea617457936001600160a01b03165f52600560205260405f2090565b908a8d92828c8c8c6176a9846174858161723b6172368f8f6128f78561666c9251615659565b506176b38161b99a565b6176be858d51615659565b526176dc6fffffffffffffffffffffffffffffffff8416858761b5ac565b878d8d156177605782015115159182617742575b5050617703575b50505050505b0161764c565b826177169261750782617500885161c3b2565b9283617726575b8e93508c6176f7565b61773993617733916155e5565b9161b5ac565b5f8f828261771d565b9091505161774f81610ebd565b61775881610ebd565b14875f6176f0565b50505050505050506176fd565b8c5190935060031c600116159261764a565b61778a91945061c3b2565b1515925f617643565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6177c0576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b7f00000000000000000000000000000000000000000000000000000000000000005c1561783657565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b906178689061b8a2565b907f8000000000000000000000000000000000000000000000000000000000000000821461449e576106cb915f039061abf6565b929190916178ab82848661b8f7565b5f1981036178ba575050505050565b808211617a3e5703906001600160a01b0392838116938415617a09578083169586156179d4578461791a8561790486617904866001600160a01b03165f52601060205260405f2090565b906001600160a01b03165f5260205260405f2090565b551692833b156106bc576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61916179b4915f8180606481015b038183895af16179c1575b506040519081529081906020820190565b0390a45f80808080616fcb565b80611bbe6179ce9261083f565b5f6179a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b6001600160a01b03837ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b929091926001600160a01b0390818416918215617c1057808616918215617bdb57617ab986617904836001600160a01b03165f52600f60205260405f2090565b54808611617b9e57859003617ae387617904846001600160a01b03165f52600f60205260405f2090565b55617b0387617904836001600160a01b03165f52600f60205260405f2090565b8581540190551691827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f60405180617b4088829190602083019252565b0390a4803b156106bc576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f9082908183816064810161545a565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038716600452602452604485905260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03871660045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b919091617c506155f2565b50805192617c5d84610ebd565b6080604082015193015160c0602083519301519301519360405195617c8187610853565b617c8a81610ebd565b865260208601526040850152606084015260808301523360a083015260c082015290565b90916001600160a01b03808416928315617c1057617ce185617904836001600160a01b03165f52600f60205260405f2090565b54808411617ddc57839003617d0b86617904846001600160a01b03165f52600f60205260405f2090565b55617d3183617d2b836001600160a01b03165f52601160205260405f2090565b546155e5565b617d3a8161b943565b617d55826001600160a01b03165f52601160205260405f2090565b551690813b156106bc576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f91617dd79186818060648101617998565b0390a4565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615617e3b5750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6106cb906107d0616818565b03617e7957565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190825191617eb482518251908561b97b565b617ebd83615628565b935f5b848110617ecf57505050505090565b80617f04617edf60019385615659565b51617eff617eed8489615659565b51617ef88589615659565b5192615ea4565b61b641565b617f0e8289615659565b5201617ec0565b959293617f46617f6a95610da1999793617f5c956001600160a01b038092168b521660208a0152604089019061669c565b606087015260e0608087015260e0860190610f2d565b9084820360a0860152610f2d565b9160c081840391015261101f565b5f6001600160a01b036020959693617ff0617f9a87516001600160a01b031690565b94608088015197617faa89616692565b60a0608060408301519c0151910151916040519b8c9a8b998a977fba5f9f4000000000000000000000000000000000000000000000000000000000895260048901617f15565b0393165af19081156107ab575f91618033575b501561800b57565b7f2aaf8866000000000000000000000000000000000000000000000000000000005f5260045ffd5b61804c915060203d6020116107a45761079a818361086f565b5f618003565b60208082015151925f5b84811061806a575050505050565b6001906180e160406fffffffffffffffffffffffffffffffff618093614c8b85848b0151615659565b9160a08901926180a4868551615659565b52845f528688525f20541690816180bf8560608b0151615659565b526180da846180d28160c08c0151615659565b519251615659565b519161c505565b6180ef826080880151615659565b520161805c565b60208082015151925f5b84811061810e575050505050565b60019061817d60406fffffffffffffffffffffffffffffffff618137614c8b85848b0151615659565b9160a0890192618148868551615659565b52845f528688525f20541690816181638560608b0151615659565b52618176846180d28160c08c0151615659565b519161c51c565b61818b826080880151615659565b5201618100565b6080818303126106bc5780519260208201519167ffffffffffffffff928381116106bc57846181c29183016168a6565b9360408201518481116106bc57816169979184016168a6565b9390610da195936169eb936001600160a01b0361820b93168752602087015260a0604087015260a0860190610f2d565b908482036060860152610f2d565b92618222617793565b60609161822d615980565b926020860190618241825151808752615628565b906080840196875161825281616692565b61825b81616692565b61861957506040840151906182708751615628565b956182948360808c015161828e616ab18a516001600160a01b031690565b9061bd54565b926183057f00000000000000000000000000000000000000000000000000000000000000005c6182cb89516001600160a01b031690565b907f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b61859c575b604087015180821161856b5750618323819a999a6195f5565b60208a01985f5b8b5181101561844a578c61833e8288615659565b51618348816195f5565b618352838a615659565b516184385781616ff88460a0616b378260c061836f980151615659565b8061837a838a615659565b525b61838a6128f7838b51615659565b60608b01618399848251615659565b5183106183ec57508e83616be18f8f8f966183e0916183c886616bbc818b60019e9d616b99886183e69f61785e565b526183d7856060880151615659565b51925190616a07565b906155e5565b0161832a565b916183fb846123589451615659565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b50506184448188615659565b5161837c565b5093995095945095929861846b919750616c6a85516001600160a01b031690565b7ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a561849d84516001600160a01b031690565b926184bf8660208701956184b887516001600160a01b031690565b339161789c565b6184c761bda5565b618540575b6184f2866184e187516001600160a01b031690565b86516001600160a01b031690617cae565b618518616ab161850c616cdc88516001600160a01b031690565b9451966128f788616692565b92616d1e6001600160a01b039261852e88616692565b8c846040519586951698169684616a14565b6185668661855587516001600160a01b031690565b86516001600160a01b03169061bdba565b6184cc565b7f31d38e0b000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b9894916185af8b97949995929b5161b0c0565b9a5f5b865181101561860957808b6186028f936185fc6185eb8f83906185e16001996185db848a615659565b5161b641565b6172578383615659565b516185f68386615659565b516155e5565b92615659565b52016185b2565b5091949893969a5091949861830a565b94906001885161862881616692565b61863181616692565b036186a057618640895161affd565b60408501519186928a61869a6186908b8a6040618660606083015161b031565b9201948286528660808201519361868a612075616e8b616e84616ab188516001600160a01b031690565b9461bca7565b909251909a615659565b5261830a565b600288969296516186b081616692565b6186b981616692565b0361874c576186c8895161affd565b6187458260608701906186ec6186de835161b031565b60408c019381855251615659565b516186f8835188615659565b528b61870b608082015193518093615659565b5161872a618723616ab18c516001600160a01b031690565b925161b0c0565b9261873f6120758c516001600160a01b031690565b9461ba9f565b969061830a565b50936003875161875b81616692565b61876481616692565b0361882557618773885161ba6a565b5f61878b61207561207587516001600160a01b031690565b9560408601519660808b0151918360a0890151996187d96040519b8c96879586947fab68e28c00000000000000000000000000000000000000000000000000000000865233600487016181db565b03925af19485156107ab575f915f965f925f916187fa575b5091969261830a565b925050955061881b91503d805f833e618813818361086f565b810190618192565b919690915f6187f1565b7f137a9a39000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190916040818403126106bc57805161886581610a96565b92602082015167ffffffffffffffff81116106bc57610da192016168a6565b969394610da19896926188ed966188be6188df966188d195610100948d6001600160a01b0380931690521660208d015260408c019061669c565b60608a01528060808a0152880190610f2d565b9086820360a0880152610f2d565b9084820360c0860152610f2d565b9160e081840391015261101f565b949395929691908451618914906001600160a01b031690565b9060808601519261892484616692565b60808601518a60a0890151926040519b8c9788977f2754888d000000000000000000000000000000000000000000000000000000008952600489019761896998618884565b03916001600160a01b031691815a5f948591f19384156107ab575f905f95618a86575b50158015618a7a575b618a52576001809360091c16156189b35792935090915f835b6189ba575b5050505090565b8451811015618a4d576189cd8186615659565b5160608401906189de838351615659565b51116189ed57508301836189ae565b618a10826180d281618a0a6128f78b9760206123589a0151615659565b95615659565b517ffbd8a724000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b6189b3565b7f1d3391d8000000000000000000000000000000000000000000000000000000005f5260045ffd5b50835185511415618995565b9050618aa59194503d805f833e618a9d818361086f565b81019061884d565b93905f61898c565b5f9491939293618abb617793565b618ac3615980565b918051618acf81610ebd565b618ad881610ebd565b15618e55575b602091828601618aee815161ad93565b83618b4381850198618b0d6120756120758c516001600160a01b031690565b906040519c8d809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161168f565b03925af19889156107ab575f99618e36575b5088618b608161ad93565b8351618b6b81610ebd565b618b7481610ebd565b618dc6575060408201519052618bac60c088015161212461211e618b9d87860193845190615659565b519260a08c0151905190615659565b9360808301519685979860a0850151808810618d9657505b60408501948a8651618bdc906001600160a01b031690565b90618be691619606565b60600195898751618bfd906001600160a01b031690565b90618c079161785e565b835183516001600160a01b031687516001600160a01b0316875191618c2c938661ae28565b9190818601956040019283528552855160608401928d82855190618c4f91615659565b5190618c5a91616a07565b9051618c65916155e5565b618c6f918561b55f565b85019182518b81845190618c8291615659565b5190618c8d916155e5565b618c97918361b55f565b83516001600160a01b03165f9081526005602052604090209180518751618cbd91615659565b51916080019182518851618cd091615659565b51618cda91617032565b8751618cee9085905f5260205260405f2090565b55518351618cfb91615659565b5190518351618d0991615659565b51618d1391617032565b9151618d2691905f5260205260405f2090565b5551925193516060928301519151604080518b8152602081018b905290810193909352928201929092526001600160a01b039182169382169291909116907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a4939291906106cb6177e8565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600488905260245260445ffd5b9050819850618ded6060618df6930151670de0b6b3a764000081810390821002908361be7e565b90818652616a07565b96618e1b618e0a60c0890151835190615659565b516123af60a08a0151845190615659565b93608083015196859860a0850151808811618d965750618bc4565b618e4e919950843d861161149657611488818361086f565b975f618b55565b60208501618e6c612409825160608601519061b641565b9052618ade565b81810392915f13801582851316918412161761449e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90618ed46fffffffffffffffffffffffffffffffff831661b8a2565b905f9260801c80618ef2575b5050600291618eee91618e73565b0590565b6001600160a01b03935090602460209260405195869384927fb3d7f6b90000000000000000000000000000000000000000000000000000000084526004840152165afa9081156107ab57618f53618eee926002945f91618f5c575b5061b8a2565b92819250618ee0565b618f75915060203d60201161149657611488818361086f565b5f618f4d565b8115618f85570490565b618e8b565b90670de0b5cad2bef0008111614a3d5764174876e80090048060181c618fd5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff9060121b91161790565b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b8161905061905b92949394619010615769565b958691619046602083018051906190366001600160a01b0392836040870151169061af4c565b865251906060840151169061af4c565b602084015261911b565b60408501525161b0c0565b6060830152565b602091926190b25f6001600160a01b038094604051978896879586937f5211fa77000000000000000000000000000000000000000000000000000000008552604060048601526044850190611621565b911660248301520393165af19081156107ab575f916190fc575b50156190d457565b7fe91e17e7000000000000000000000000000000000000000000000000000000005f5260045ffd5b619115915060203d6020116107a45761079a818361086f565b5f6190cc565b919091805161912981610ebd565b61913281610ebd565b619177579061916e670de0b6b3a764000093617ef860806191739501519360a061916260c0850151835190615659565b51930151905190615659565b615ea4565b0490565b610da1926191ad61211e6080617eff9401519460a06191a1602060c0870151930192835190615659565b51940151905190615659565b92615ea4565b91908260409103126106bc57602082516191cc81610a96565b92015190565b9092619223604093946001600160a01b039384918651978896879586947fa0e8f5ac000000000000000000000000000000000000000000000000000000008652606060048701526064860190611621565b9216602484015260448301520392165afa9081156107ab575f905f92619284575b501561925c57670de0b5cad2bef0008111614a3d5790565b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506192a8915060403d6040116192af575b6192a0818361086f565b8101906191b3565b905f619244565b503d619296565b6101a0610da192602083526192cf602084018251611614565b60208101516001600160a01b0316604084015260408101516001600160a01b0316606084015260608101516080840152608081015160a084015260a081015160c084015260c081015160e084015260e08101516101009081850152810151610120908185015281015161935061014091828601906001600160a01b03169052565b8101519061936c61016092838601906001600160a01b03169052565b01519161018080820152019061101f565b939590919492865161938e81610ebd565b61939781610ebd565b6195e65786604085015191845b8251946193b086610ebd565b6040978897888601516193c9906001600160a01b031690565b9660608701516193df906001600160a01b031690565b9360800192835181516193f191615659565b519351906020015161940291615659565b51936020880151619419906001600160a01b031690565b9760c0015198619427610901565b9a619432908c615db4565b6001600160a01b031660208b01526001600160a01b0316898b01526060890152608088015260a087015260c086015260e085015261010084018890526001600160a01b03166101208401526001600160a01b0316610140830152610160820152815196878080937f18b6eb5500000000000000000000000000000000000000000000000000000000825260048201906194ca916192b6565b03916001600160a01b03165a905f91f19485156107ab575f915f966195c2575b50501561959a5760091c600116156195945750805161950881610ebd565b61951181610ebd565b1580619587575b801561955c575b619527575090565b60a001517fcc0e4a99000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b506001815161956a81610ebd565b61957381610ebd565b14801561951f575060a0810151821161951f565b5060a08101518210619518565b91505090565b7f15a29dec000000000000000000000000000000000000000000000000000000005f5260045ffd5b6195dd93965080919250903d106192af576192a0818361086f565b93905f806194ea565b866040850151918492946193a4565b806195fd5750565b6106cb9061ad93565b612cc86106cb9261b8a2565b6001600160a01b0380911690815f52600e6020528060405f205416921680920361963a575050565b7f36b18d09000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b907f0000000000000000000000000000000000000000000000000000000000000000116196925750565b6001600160a01b03907f18fe7385000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9190915f838201938412911290801582169115161761449e57565b92619737936001600160a01b038316926196fb856155d7565b604051907fef8b30f700000000000000000000000000000000000000000000000000000000825281806020998a93600483019190602083019252565b0381885afa80156107ab57619753915f9161992f575b506155d7565b948096619771836001600160a01b03165f52600b60205260405f2090565b549161977b61bda5565b61992557509181889388959360801c90868210155f146197f5575050926197ea96926197f0926197d0866197cb856fffffffffffffffffffffffffffffffff8b6106cb9c9b60801c039316616a07565b617032565b9889916001600160a01b03165f52600b60205260405f2090565b55619606565b61785e565b919294509692945061982061981b61980d8685618eb8565b6198168c61b8a2565b6196c7565b61bec2565b9461982c86858361c00f565b6040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018790523060248201529482866044815f895af180156107ab576197ea996198da8c6198cf8f976197d0956106cb9d8a6197f09c869f8f95908d915f966198e0575b50506198cf92916198c9868689856198c46198d49b9c6fffffffffffffffffffffffffffffffff9861bef7565b61ad4e565b16616a07565b6155e5565b94616a07565b90617032565b6198d496506fffffffffffffffffffffffffffffffff92866199176198cf979694846198c995903d1061149657611488818361086f565b985050925081939450619897565b9750909450505050565b6199469150883d8a1161149657611488818361086f565b5f61974d565b926199a392936001600160a01b03831692619966866169f9565b6040517fb3d7f6b9000000000000000000000000000000000000000000000000000000009182825281806020998a93600483019190602083019252565b0381895afa80156107ab576199bf915f91619b92575b506169f9565b90879682986199df856001600160a01b03165f52600b60205260405f2090565b54936199e961bda5565b619b85575050918893918895938260801c91878310155f14619a3c57505050926197ea96926197f0926197d0866197cb856fffffffffffffffffffffffffffffffff8b6106cb9c9b60801c039316616a07565b9295509295509692619a6261981b619a54888861acb9565b619a5d8c61b8a2565b618e73565b60405192835260048301819052918381602481885afa80156107ab57619a91915f91619b68575b50858361c00f565b6040517f94bf804d000000000000000000000000000000000000000000000000000000008152600481018390523060248201529583876044815f895af19586156107ab576197ea996198da8c6198cf8f976198d48b849d6106cb9f6197d099856197f09f8f938f915f96619b29575b50506fffffffffffffffffffffffffffffffff92918587836198c46198cf999a6198c99661bef7565b6198cf965091619b5c6fffffffffffffffffffffffffffffffff959492846198c995903d1061149657611488818361086f565b96509181939450619b00565b619b7f9150853d871161149657611488818361086f565b5f619a89565b9950975091955050505050565b619ba99150883d8a1161149657611488818361086f565b5f6199b9565b939091619bbb85610ebd565b84158015619f0857619bd16020615fec876155d7565b03816001600160a01b0387165afa80156107ab57619bf5915f91619eef57506155d7565b94955b619c13836001600160a01b03165f52600b60205260405f2090565b5491619c1d61bda5565b619ee757869288929091608083901c91858310619c905750505092619c8a82619c6d866197cb6001600160a01b03966fffffffffffffffffffffffffffffffff896106cb9b60801c039316616a07565b97886197ea856001600160a01b03165f52600b60205260405f2090565b1661785e565b90929350619c9f919450610ebd565b15619d9457619cbd61981b619cb48584618eb8565b6198168a61b8a2565b926001600160a01b03811693619cd481868961c00f565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526004810182905230602482015294602090869060449082905f905af180156107ab57619c6d89956198da876198cf6001600160a01b038f96888f896106cb9f859e6198c98f619c8a9f6198cf966198d4996fffffffffffffffffffffffffffffffff965f91619d75575b509a8b935b16906198c4828261bef7565b619d8e915060203d60201161149657611488818361086f565b5f619d64565b9091619daf61981b619da6838561acb9565b619a5d8961b8a2565b6040517fb3d7f6b9000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b038316936020939290918481602481895afa80156107ab57619e0e915f91619eca575b50868a61c00f565b6040517f94bf804d00000000000000000000000000000000000000000000000000000000815260048101829052306024820152948490869060449082905f905af19182156107ab576106cb966198da8b6198cf858f966001600160a01b038f896fffffffffffffffffffffffffffffffff879f9a849f8f96619c8a9f976198cf96619c6d9f996198d49a6198c9955f92619ead575b5050988992619d69565b619ec39250803d1061149657611488818361086f565b5f80619ea3565b619ee19150863d881161149657611488818361086f565b5f619e06565b509093505050565b619946915060203d60201161149657611488818361086f565b619f4e6020619f16876169f9565b604051809381927fb3d7f6b9000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa80156107ab57619f72915f91619f7857506169f9565b95619bf8565b619ba9915060203d60201161149657611488818361086f565b9092619fe892936001600160a01b03811690619fac866169f9565b604051907f0a28a47700000000000000000000000000000000000000000000000000000000825281806020988993600483019190602083019252565b0381865afa80156107ab5761a003915f9161a18257506169f9565b8695819761a022846001600160a01b03165f52600b60205260405f2090565b549261a02c61bda5565b61a1765750509186939188936fffffffffffffffffffffffffffffffff9081831690878210155f1461a083575050926197f0926197d083886197ea9b9761a07b8a6106cb9c9b9860801c616a07565b921603617032565b929894965094505061a0a461981b61a09b848a618eb8565b619a5d8b61b8a2565b6040517fb460af9400000000000000000000000000000000000000000000000000000000815260048101829052306024820181905260448201529095909282846064815f865af19384156107ab576197ea996198da846197f0978f8f6106cb9d819d8d6197d099859d5f9761a13d575b5050916198cf9161a12f87836198cf999a61a134989761ade3565b616a07565b9460801c616a07565b6198cf9750849261a134969561a1676198cf96948461a12f95903d1061149657611488818361086f565b9950509294955081935061a114565b98509650909450505050565b619ba99150873d891161149657611488818361086f565b9261a1f0939291926001600160a01b03841661a1b4846155d7565b604051907f4cdad50600000000000000000000000000000000000000000000000000000000825281806020998a93600483019190602083019252565b0381855afa80156107ab5761a20b915f9161992f57506155d7565b94849661a229826001600160a01b03165f52600b60205260405f2090565b549561a23361bda5565b61a34b5750869392889290916fffffffffffffffffffffffffffffffff9088821687811061a27e5750509183916197d089886197f09661a07b6106cb9b9a996197ea9e60801c616a07565b929650929493505061a29661981b61980d878a61acb9565b6040517fba08765200000000000000000000000000000000000000000000000000000000815260048101829052306024820181905260448201529590949083876064815f865af19283156107ab576197ea996198da886198cf8f8f9b8c6198cf6106cb9f9b6197d0998f946197f09f879f968f919761a134985f9661a324575b505061a12f9291859161ade3565b61a12f94939650908161a34292903d1061149657611488818361086f565b9491925f61a316565b975050505050565b939061a35e85610ebd565b841594851561a5fa5761a37560206164b5876155d7565b03816001600160a01b0389165afa80156107ab5761a399915f91619eef57506155d7565b94955b61a3b7856001600160a01b03165f52600b60205260405f2090565b549161a3c161bda5565b619ee75787938793909290916fffffffffffffffffffffffffffffffff918284169186831061a43457505050936001600160a01b0361a40f83866106cb9861a07b866197f09860801c616a07565b978861a42c826001600160a01b03165f52600b60205260405f2090565b555b16619606565b91965092945061a4449150610ebd565b1561a5345761a45961981b619cb4878561acb9565b6040517fba087652000000000000000000000000000000000000000000000000000000008152600481018290523060248201819052604482015293906020856064815f6001600160a01b038c165af180156107ab5761a4f289956198da846198cf8e61a1348b8f6001600160a01b036106cb9f9c61a12f8f9d6197f09f94889f859f6198cf975f9161a515575b509586925b169061ade3565b978861a50f826001600160a01b03165f52600b60205260405f2090565b5561a42e565b61a52e915060203d60201161149657611488818361086f565b5f61a4e6565b61a54461981b619da68785618eb8565b6040517fb460af940000000000000000000000000000000000000000000000000000000081526004810182905230602482018190526044820152906020826064815f6001600160a01b038c165af19182156107ab5761a4f289956198da6001600160a01b036198cf8e61a1348b8f8a6106cb9f61a12f8f936197f09f9e889f958b9f966198cf975f9161a5db575b509b8c9361a4eb565b61a5f4915060203d60201161149657611488818361086f565b5f61a5d2565b61a640602061a608876169f9565b604051809381927f0a28a477000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0389165afa80156107ab5761a664915f91619f7857506169f9565b9561a39c565b90610da19160801c90617032565b916001600160a01b0380831693841561a7915761a6b08361a6aa836001600160a01b03165f52601160205260405f2090565b54616a07565b61a6cf85617904846001600160a01b03165f52600f60205260405f2090565b84815401905561a6de8161b943565b61a6f9826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f6040518061a73287829190602083019252565b0390a4823b156106bc576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b03909316602482015260448101919091529182908183816064810161545a565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b805c906001820180921161449e575d565b905f5260205260405f20905f52602052600160405f205d565b919082519161a80382518251908561b97b565b61a80c83615628565b935f5b84811061a81e57505050505090565b80670de0b6b3a764000061a85061a83760019486615659565b5161916e61a845858a615659565b51617ef8868a615659565b0461a85b8289615659565b520161a80f565b95919361a893610da198969461a8a493617f6a976001600160a01b038092168b521660208a015260408901906154b9565b60e0606088015260e0870190610f2d565b91608086015284820360a0860152610f2d565b925f6001600160a01b0360209596939661a93161a8db87516001600160a01b031690565b9460808801519761a8eb896154af565b60a060806060830151930151910151916040519b8c9a8b998a977f45421ec70000000000000000000000000000000000000000000000000000000089526004890161a862565b0393165af19081156107ab575f9161a974575b501561a94c57565b7f0b2eb652000000000000000000000000000000000000000000000000000000005f5260045ffd5b61a98d915060203d6020116107a45761079a818361086f565b5f61a944565b9692610da198969461a9e99361a9cd61a9db936188ed9995610100938d6001600160a01b0380931690521660208d015260408c01906154b9565b8060608b0152890190610f2d565b908782036080890152610f2d565b9160a086015284820360c0860152610f2d565b94939195929690845161aa15906001600160a01b031690565b60808601519161aa24836154af565b608086015160a0880151906040968c6040519c8d9788977f976907cc000000000000000000000000000000000000000000000000000000008952600489019761aa6c9861a993565b03916001600160a01b031691815a5f948591f19485156107ab575f905f9661ab86575b5015801561ab7a575b61ab52576001809460091c161561aab857909192809495505f905b61aac0575b505050505090565b855181101561ab4d5761aad38187615659565b518285019061aae3838351615659565b511061aaf2575084018461aab3565b869061ab10836180d281618a0a6128f76123589860208c0151615659565b517fcefa3afa000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b61aab8565b7fe1249165000000000000000000000000000000000000000000000000000000005f5260045ffd5b5084518651141561aa98565b905061ab9d9195503d805f833e618a9d818361086f565b94905f61aa8f565b64174876e800610da192049061b692565b90670de0b5cad2bef0008111614a3d57610da19164174876e800604292049061b6ac565b906fffffffffffffffffffffffffffffffff610da19216617032565b90801561acb5577f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0381165f528260205261ac3e60405f205c92836196c7565b918261ac7e57507f000000000000000000000000000000000000000000000000000000000000000092835c5f19810190811161449e576106cb945d61afb2565b926106cb9361afb25761acb07f000000000000000000000000000000000000000000000000000000000000000061a7c6565b61afb2565b5050565b9061acc68260801c61b8a2565b906fffffffffffffffffffffffffffffffff5f93168061acee575050600291618eee91618e73565b6001600160a01b03935090602460209260405195869384927f0a28a4770000000000000000000000000000000000000000000000000000000084526004840152165afa9081156107ab57618f53618eee926002945f91618f5c575061b8a2565b9291906001600160a01b038085165f52600860205260405f205492830392831161449e5781165f52600860205260405f205492830180931161449e576106cb9361c0ab565b7f00000000000000000000000000000000000000000000000000000000000000001161adbb57565b7f1ed4d118000000000000000000000000000000000000000000000000000000005f5260045ffd5b9291906001600160a01b038085165f52600860205260405f205492830180931161449e5781165f52600860205260405f205492830392831161449e576106cb9361c0ab565b91949290945f955f958161ae3d575050505050565b849750616ff861ae568260c061ae629697980151615659565b519160a08a0151615659565b945160018160031c161561ae78575b8080616fcb565b62ffffff91929450602a1c1664174876e8009081810291818304149015171561449e5761aeae670de0b6b3a76400009186615ea4565b049284841161af24578061790461af0361aee061af1b94617904876001600160a01b03165f52600660205260405f2090565b5461aefd886fffffffffffffffffffffffffffffffff8316616a07565b9061a66a565b936001600160a01b03165f52600660205260405f2090565b555f808061ae71565b7f4c69ac5d000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f5b825181101561af7d576001600160a01b038061af6b8386615659565b5116908316146195945760010161af4f565b6001600160a01b03827fddef98d7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b906001600160a01b03165f5260205260405f205d565b60051c6001161561afd557565b7f4876c0bc000000000000000000000000000000000000000000000000000000005f5260045ffd5b60041c60011661b00957565b7fd4f5779c000000000000000000000000000000000000000000000000000000005f5260045ffd5b80519081905f5b82811061b07357505081101561b04b5790565b7f7e46bddc000000000000000000000000000000000000000000000000000000005f5260045ffd5b61b07d8183615659565b5161b08b575b60010161b038565b92820361b098578261b083565b7f6b8c3be5000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff9060121c1664174876e8009081810291818304149015171561449e5790565b61b0fb60409295949395606083526060830190610f2d565b9460208201520152565b909491602061b16b61b11f866001600160a01b0394616a07565b9461b12a878761be25565b61b134818361c2b2565b6040519485809481937f16a0b3e00000000000000000000000000000000000000000000000000000000083528d8a6004850161b0e3565b0392165afa80156107ab5761b1f6956198cf61b1ca8561b1e09461b1e9998c998a61b1f0995f9461b1f9575b509061b1be61b1b761b1b061b1c5946183e09798615659565b51876155e5565b9c8c615659565b5190615ea4565b618f7b565b91670de0b6b3a76400008181039110028261be25565b93849251615628565b9586615659565b52616a07565b91565b6183e0945061b1b761b1b061b1c5949361b22461b1be9460203d60201161149657611488818361086f565b9750939450505061b197565b90602080835161b241845182617e72565b60051b930191015e565b9190602061b2625f92604086526040860190610f2d565b930152565b9190602061b262600192604086526040860190610f2d565b92919093835161b28e81615628565b9161b29882615628565b965f5b83811061b4945750506001600160a01b03811691604051957f984de9e8000000000000000000000000000000000000000000000000000000009283885260209889898061b2eb846004830161b24b565b0381895afa9889156107ab575f9961b475575b506040518581528a818061b3158b6004830161b267565b03818a5afa9081156107ab578a61b1c561b3509361b349938f5f9261b458575b9b999d9c9a98979695949392919050615e87565b809361c2b2565b5f5b89811061b3bf575050505061b376955060405180968194829383526004830161b267565b03915afa9182156107ab578361b1c59361b39c9261b1f6975f9261b3a2575b50506155e5565b90615ea4565b61b3b89250803d1061149657611488818361086f565b5f8061b395565b869899959750838d83949596988361b3e361b3dc82600198615659565b518961c29f565b8061b3ee8385615659565b511161b40a575b505050505001908a969498979593929161b352565b818361b42b61b4439761b4359461b4248561b43c99615659565b510361b641565b6172578388615659565b5192615659565b51906155e5565b61b44d828b615659565b52848d8a835f61b3f5565b61b46e9250803d1061149657611488818361086f565b5f8f61b335565b61b48d9199508a3d8c1161149657611488818361086f565b975f61b2fe565b8061b4be61b4b961b4a76001948c615659565b5161b4b28487615659565b5190616a07565b6155d7565b61b4c88288615659565b520161b29b565b60071c6001161561b4dc57565b7fefe0265d000000000000000000000000000000000000000000000000000000005f5260045ffd5b929161b5108451615628565b935f5b815181101561b545578061b534858561b52e60019587615659565b5161be7e565b61b53e8289615659565b520161b513565b50505050565b90610da19261b55991615ea4565b9061be25565b91906080670de0b6b3a764000061b5a361161e948061b5828660608a0151615659565b5261916e61b5948660c08a0151615659565b51617ef88760a08b0151615659565b04930151615659565b9190608061b5e761161e938061b5c6856060890151615659565b52617eff61b5d88560c0890151615659565b51617ef88660a08a0151615659565b930151615659565b9261b5e761161e936080928161b6098660608a0151615659565b5261b61381610ebd565b61b639576002905b61b6298560c0890151615659565b51906142ee8660a08a0151615659565b60019061b61b565b9061b64b91615ea4565b6001670de0b6b3a76400005f19830104019015150290565b9161b66d91615ea4565b90670de0b6b3a76400009081810291818304149015171561449e578115618f85570490565b908060181c618fd557602a1b9062ffffff602a1b19161790565b906101008084101561700a5783810390811161449e578060ff105f1461b6ee575060ff5b60181161700a578060181c618fd55762ffffff90831b921b19161790565b61b6d0565b906106cb61b707926040519384809261569a565b038361086f565b9061b71882610922565b61b725604051918261086f565b828152601f1961b7358294610922565b01905f5b82811061b74557505050565b60209061b750615980565b8282850101520161b739565b9060405161b76981610802565b604060ff82945481811661b77c81610ebd565b84526001600160a01b038160081c16602085015260a81c161515910152565b60608101805151935f5b85811061b7b457505050505050565b8061b7c86128f76001936020880151615659565b61b7f361b7dd8389905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b61b7fe838751615659565b51811161b83e575b505061b82561b816828651615659565b51611a11836080890151615659565b61b8378288905f5260205260405f2090565b550161b7a5565b61b88261b89a9161b87c61b87361b866868a906001600160a01b03165f5260205260405f2090565b549261b43c888c51615659565b8260801c616a07565b9061abda565b9185906001600160a01b03165f5260205260405f2090565b555f8061b806565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161b8cc5790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b0392918381168484160361b91557505050505f1990565b61b93f9361790492165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b5490565b620f4240811061b9505750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8114801592919061b98f575b5050617e7957565b141590505f8061b987565b805161b9a581610ebd565b61b9ae81610ebd565b8061b9c1575050670de0b6b3a764000090565b8061b9cd600192610ebd565b0361ba4257602061b9ec6120758260049401516001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa9081156107ab575f9161ba29575090565b610da1915060203d60201161149657611488818361086f565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b60061c6001161561ba7757565b7fcf0a95c0000000000000000000000000000000000000000000000000000000005f5260045ffd5b909492919281519461bab086615628565b945f5b87811061bc80575061bac9906185f68988615659565b61bad38887615659565b52604051947f984de9e800000000000000000000000000000000000000000000000000000000928387526020878061bb0e886004830161b24b565b03816001600160a01b0385165afa9687156107ab575f9761bc5f575b50604051948486526020868061bb43866004830161b24b565b03816001600160a01b0386165afa9384156107ab576198cf61b1ca8c61b43c61bb9e61bba59661bb978f61bb8761bbdb9f9160209e88935f9161bc40575b5061be25565b9261bb92848d61c3d5565b615659565b519061b641565b9188615659565b9361bbb4856185f68c86615659565b61bbbe8b85615659565b526001600160a01b0360405180978195829483526004830161b267565b0392165afa9081156107ab5761b1f69561bc11935f9361bc17575b5061bc0361bc0a91615628565b9788615659565b52836155e5565b9061be7e565b61bc0a91935061bc3861bc039160203d60201161149657611488818361086f565b93915061bbf6565b602061bc5992503d60201161149657611488818361086f565b5f61bb81565b61bc7991975060203d60201161149657611488818361086f565b955f61bb2a565b8061bc9661bc9060019388615659565b516155d7565b61bca0828a615659565b520161bab3565b90949183039183831161449e57602061bcd66001600160a01b039261bccc878761be25565b61b134818361c3d5565b0392165afa80156107ab5761b1f695617eff8861b1e09361b1e99861bd21965f9261bd27575b5061bd0f826185f66198cf94958b615659565b9861bd1a8d8a615659565b519061be7e565b526155e5565b6198cf92506185f69361bd4b61bd0f9260203d60201161149657611488818361086f565b9350935061bcfc565b90929161bd618251615628565b915f5b815181101561bd9e5761bd818361bd7b8385615659565b51615ea4565b908615618f8557866001920461bd978287615659565b520161bd64565b5050509150565b32158061bdaf5790565b506001600754161590565b903261bdfd576001600160a01b0361bdee92165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b805491820180921161449e5755565b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b90801561be5657670de0b6b3a76400009182810292818404149015171561449e576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b821561be565760019161be9091615ea4565b915f19830104019015150290565b670de0b6b3a764000080820402810361beb45790565b6001810180911161449e5790565b5f811261becc5790565b7fa8ce4432000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b03851660248401525f6044840152909391929183606481015b039161bf56601f199384810187528661086f565b5f806001600160a01b0386169287519082855af19061bf7361c05e565b8261bfdd575b508161bfd2575b501561bf8d575050505050565b60405160208101959095526001600160a01b031660248501525f604485015261bfc8936144749161bfc29082606481016110c0565b8261c22f565b5f80808080616fcb565b90503b15155f61bf80565b8051919250811591821561bff5575b5050905f61bf79565b61c0089250602080918301019101615324565b5f8061bfec565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b03851660248401526044830195909552939092836064810161bf42565b3d1561c088573d9061c06f82610d34565b9161c07d604051938461086f565b82523d5f602084013e565b606090565b5f80610da19360208151910182855af161c0a561c05e565b9161c479565b6040517f70a0823100000000000000000000000000000000000000000000000000000000808252306004830152602095939490926001600160a01b03929187836024818786165afa9283156107ab575f9361c210575b5080831061c1cb575061c125906001600160a01b03165f52600860205260405f2090565b556040519182523060048301528316908481602481855afa9485156107ab575f9561c1ac575b505081841061c171575050615db1906001600160a01b03165f52600860205260405f2090565b7f1149424d000000000000000000000000000000000000000000000000000000005f526001600160a01b03166004526024525060445260645ffd5b61c1c3929550803d1061149657611488818361086f565b925f8061c14b565b905061235892867f1c6a5375000000000000000000000000000000000000000000000000000000005f52169291906001600160a01b0360649416600452602452604452565b61c228919350883d8a1161149657611488818361086f565b915f61c101565b6001600160a01b0361c2439116918261c08d565b805190811515918261c284575b505061c2595750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61c2979250602080918301019101615324565b155f8061c250565b670de0b6b3a76400009161917391615ea4565b9060206001600160a01b03926004604051809581937f273c1adf000000000000000000000000000000000000000000000000000000008352165afa9182156107ab575f9261c335575b5081811161c307575050565b7f3e8960dc000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61c34f91925060203d60201161149657611488818361086f565b905f61c2fb565b9064ffffffffff61c36682615628565b92605a1c165f5b82811061c37a5750505090565b600580820290828204148215171561449e5782601f911c1690604d821161449e57600191600a0a61c3ab8287615659565b520161c36d565b62ffffff9060421c1664174876e8009081810291818304149015171561449e5790565b9060206001600160a01b03926004604051809581937fb677fa56000000000000000000000000000000000000000000000000000000008352165afa9182156107ab575f9261c458575b5081811061c42a575050565b7fe31c95be000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61c47291925060203d60201161149657611488818361086f565b905f61c41e565b9061c4b6575080511561c48e57805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061c4fc575b61c4c7575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561c4bf565b9161916e61917392670de0b6b3a764000094615ea4565b610da19291617eff91615ea4565b9291928060011461c5765760021461c569577f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b610da192617eff91615ea4565b509061916e670de0b6b3a76400009361917393615ea456fea2646970667358221220aad6895a1a946b9d94f349f2b7fa809136db131fd94e18929a4af654b59cc6d964736f6c634300081a003360808060405234601557610705908161001a8239f35b5f80fdfe604060808152600480361015610013575f80fd5b5f3560e01c8063136deb1c146103cd578063a3aef0b8146103215763bb4ad7d51461003c575f80fd5b3461030b57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261030b5780359267ffffffffffffffff9081851161030b573660238601121561030b57848301356024956100a461009f836105b1565b610559565b938685848152019088829460071b8401019236841161030b579497948901915b83831061028257505050505f915b8351957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96878101908111610270578410156101da575f5b610115858751610686565b8881019081116101c8578110156101ba5773ffffffffffffffffffffffffffffffffffffffff8061014683896106a7565b51511660018301918284116101a857908291610165600195948b6106a7565b51511610610175575b500161010a565b61017f81896106a7565b519061019661018e848b6106a7565b51918a6106a7565b526101a182896106a7565b525f61016e565b8b60118b634e487b7160e01b5f52525ffd5b5095506001909201916100d2565b89601189634e487b7160e01b5f52525ffd5b805182815285518184018190529092838301925f9089908c5b8584106102005787870388f35b909192939495885173ffffffffffffffffffffffffffffffffffffffff80825116835287820151600281101561025e5788840152848201511684830152606090810151151590820152978501976080019594936001019291906101f3565b84602188634e487b7160e01b5f52525ffd5b88601188634e487b7160e01b5f52525ffd5b608098959890818436031261030b5786519182018281108482111761030f5787526102ac846105c9565b825289840135600281101561030b578a8301528684013573ffffffffffffffffffffffffffffffffffffffff8116810361030b57878301526060908185013592831515840361030b576080938c938201528152019201919794976100c4565b5f80fd5b8b60418b634e487b7160e01b5f52525ffd5b503461030b57610330366105ea565b8051156103ba5773ffffffffffffffffffffffffffffffffffffffff918260208301511690600180936001915b61036357005b80518210156103b85785938461037984846106a7565b5116968791161161039157848096920191939561035d565b827f6e8f1947000000000000000000000000000000000000000000000000000000005f525ffd5b005b603282634e487b7160e01b5f525260245ffd5b50903461030b576103dd366105ea565b915f5b8351927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848101908111610546578210156104eb575f5b610423838751610686565b8581019081116104d8578110156104cd5773ffffffffffffffffffffffffffffffffffffffff8061045483896106a7565b511660018301908184116104ba5790829160019493610473838c6106a7565b511610610483575b505001610418565b6104a782610491838c6106a7565b51169261049e858c6106a7565b5116918a6106a7565b526104b282896106a7565b525f8061047b565b601187634e487b7160e01b5f525260245ffd5b5092506001016103e0565b601185634e487b7160e01b5f525260245ffd5b84908051918291602090602080850191818652845180935285019301915f5b82811061051957505050500390f35b835173ffffffffffffffffffffffffffffffffffffffff168552869550938101939281019260010161050a565b601184634e487b7160e01b5f525260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761059d57604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161059d5760051b60200190565b359073ffffffffffffffffffffffffffffffffffffffff8216820361030b57565b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261030b576004359167ffffffffffffffff831161030b578060238401121561030b57826004013561064461009f826105b1565b936024602086848152019260051b82010192831161030b57602401905b82821061066f575050505090565b83809161067b846105c9565b815201910190610661565b9190820391821161069357565b634e487b7160e01b5f52601160045260245ffd5b80518210156106bb5760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122037f5aad753306e2d728751a97041c71608d77cf33fbd4d553153a231a29a004464736f6c634300081a00336101203461012757601f61489838819003918201601f19168301916001600160401b0383118484101761012b578084926040948552833981010312610127578051906001600160a01b0382168203610127576020015163ffffffff9081811680820361012757306080528360a052420190814211610113578282116101045760c0521660e052610100908152604051614758918261014083396080518261179b015260a0518281816107a10152611818015260c05182610a76015260e051828181610324015261189301525181818161019c0152818161046601528181610605015281816107360152818161090501528181610b1a01528181610d0f01526111830152f35b6368755a1160e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe604060808152600480361015610013575f80fd5b5f915f358060e01c9081630e0677ab1461107e5781632f2770db14610f0a5750806344f6fec714610e1357806353a72f7e14610dfe5780635ea81a3214610c855780636634b75314610c3d578063673a2a1f1461075f57838163675d605014610abe575080636c57f5a914610a9a57806378da80cb14610a595780637a0b2e8d14610816578063851c1bb3146107c55780638d928af8146107745780638eec5d701461075f57838163a7a4b711146106c357508063aaabadc51461069157838163c7c90a51146105a257508063d396a66614610376578063db035ebc1461034c578063e9d56e19146103075763ed05beaf1461010d575f80fd5b3461030357610100600319360112610303576101276112c0565b9060243567ffffffffffffffff81116102ff5761014790369085016113e3565b61014f611306565b9360807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102fb57610182611692565b9473ffffffffffffffffffffffffffffffffffffffff91827f000000000000000000000000000000000000000000000000000000000000000016966101c5611891565b94883b156102f75761021963ffffffff9161026794878a519b7feeec802f000000000000000000000000000000000000000000000000000000008d5216908b01526101a060248b01526101a48a0190611542565b9560443560448a01521660648801525f608488015260a48701906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b166101048401526084358015158091036102f35761012484015260a4358015158091036102f35761014484015260c4358015158091036102f35761016484015260e435908115158092036102f35785948486818094829661018483015203925af19081156102ea57506102d75750f35b6102e090611329565b6102e75780f35b80fd5b513d84823e3d90fd5b5f80fd5b8980fd5b8580fd5b8480fd5b8280fd5b8382346103485781600319360112610348576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b83823461034857816003193601126103485760209063ffffffff61036e611891565b915191168152f35b503461030357610140600319360112610303576103916112c0565b9060243567ffffffffffffffff81116102ff576103b190369085016113e3565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc3601126102f35781516103e681611386565b73ffffffffffffffffffffffffffffffffffffffff9160443583811681036102f357825260643583811681036102f357602083015260843583811681036102f3578483015260a435918383168093036102f35760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261059e57837f0000000000000000000000000000000000000000000000000000000000000000169661048f611891565b94883b156102f75761052f9363ffffffff926104e39289519a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b945f60448901521660648701525f608487015260a48601906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b61010490818501526101249060c4358015158091036102f3578286015260e4358015158091036102f357610144860152358015158091036102f35761016485015235908115158092036102f35785948486818094829661018483015203925af19081156102ea57506102d75750f35b8780fd5b8084843461068d57606060031936011261068d576105be6112c0565b60243567ffffffffffffffff81116102ff576105dd90369085016113e3565b6105e56112e3565b6105ed611692565b9273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169161062e611891565b96610637611920565b95843b156102f7578996879361067a928a519b8c998a9889977feeec802f00000000000000000000000000000000000000000000000000000000895288016116b0565b03925af19081156102ea57506102d75750f35b5050fd5b83823461034857816003193601126103485760209073ffffffffffffffffffffffffffffffffffffffff61036e6117d5565b8084843461068d57608060031936011261068d576106df6112c0565b60243567ffffffffffffffff81116102ff576106fe90369085016113e3565b6107066112e3565b61070e611306565b92610717611692565b9373ffffffffffffffffffffffffffffffffffffffff809116868601527f0000000000000000000000000000000000000000000000000000000000000000169161062e611891565b83346102e75780600319360112156115f15780fd5b8382346103485781600319360112610348576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5090346103035760206003193601126103035735917fffffffff00000000000000000000000000000000000000000000000000000000831683036102e7575061080f602092611770565b9051908152f35b5082903461034857610120600319360112610348576108336112c0565b9060243567ffffffffffffffff8111610a555761085390369086016113e3565b916064359463ffffffff958681168091036102f357608435928315158094036102f35760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c3601126102f3578451976108ac89611386565b73ffffffffffffffffffffffffffffffffffffffff9160a43583811681036102f3578a5260c43583811681036102f35760208b015260e43583811681036102f357878b0152610104998a35908482168092036102f357847f000000000000000000000000000000000000000000000000000000000000000016958442160191848311610a29578b9c61093c611920565b92883b15610a25578d9a8b978d519e8f9c8d9b8c9a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a0152602489016101a090526101a4890161099091611542565b9660443560448a0152166064880152608487015260a486016109e0916040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b840152805115156101248401526020810151151561014484015288810151151561016484015260600151151561018483015203925af19081156102ea57506102d75750f35b8d80fd5b60248c60118a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8380fd5b8382346103485781600319360112610348576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b83823461034857816003193601126103485760209060ff6001541690519015158152f35b8084843461068d578060031936011261068d57610ad96112c0565b60243567ffffffffffffffff81116102ff57610af890369085016113e3565b92610b01611692565b9173ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691610b43611891565b90610b4c611920565b91843b156102f75760608a9793610bf6899563ffffffff610baa8d519e8f9c8d9b8c9a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b955f60448901521660648701525f608487015260a48601906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b5f61010485015280511515610124850152602081015115156101448501528981015115156101648501520151151561018483015203925af19081156102ea57506102d75750f35b8382346103485760206003193601126103485760ff8160209373ffffffffffffffffffffffffffffffffffffffff610c736112c0565b16815280855220541690519015158152f35b50903461030357816003193601126103035767ffffffffffffffff9080358281116102ff57610cb79036908301611524565b916024358181116102fb57610ccf9036908401611524565b73ffffffffffffffffffffffffffffffffffffffff93855193612de0908186019486861090861117610dd2575091610d42859492610d4f946119438739877f000000000000000000000000000000000000000000000000000000000000000016845260606020850152606084019061164f565b918781840391015261164f565b039084f08015610dc657917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc916020949316918291610d8c6118c8565b82855284865280852060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055519380a28152f35b505051903d90823e3d90fd5b8860416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83823461034857600319360112156115f15780fd5b509034610303578160031936011261030357803567ffffffffffffffff8111610a555736602382011215610a5557600b610e6d73ffffffffffffffffffffffffffffffffffffffff938360246055953693013591016114c0565b94612de095610ec560208098885194610e88838301876113a2565b818652828601916119438339828a51958693828501985180918a5e840190828201848152815193849201905e0190838201520380845201826113a2565b5190208451868101903382524687820152602435606082015260608152610eeb8161136a565b51902085519186830152868201523081520160ff815320915191168152f35b905034610a555783600319360112610a55577fffffffff00000000000000000000000000000000000000000000000000000000610f479116611770565b602073ffffffffffffffffffffffffffffffffffffffff610f666117d5565b169160648451809481937f9be2a884000000000000000000000000000000000000000000000000000000008352888301523360248301523060448301525afa9182156110755750839161103a575b50156110145750610fc36118c8565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416176001557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d508180a180f35b907f23dada53000000000000000000000000000000000000000000000000000000008152fd5b90506020813d60201161106d575b81611055602093836113a2565b8101031261030357518015158103610303575f610fb4565b3d9150611048565b513d85823e3d90fd5b5050346102f3576101606003193601126102f35761109a6112c0565b9160243567ffffffffffffffff81116102f3576110ba90369083016113e3565b906044359063ffffffff82168092036102f35760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126102f35783519061110382611386565b73ffffffffffffffffffffffffffffffffffffffff9160643583811681036102f357815260843583811681036102f357602082015260a43583811681036102f3578682015260c435928084168094036102f35760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c3601126102f357807f00000000000000000000000000000000000000000000000000000000000000001695863b156102f35761123c936111f19289519a7feeec802f000000000000000000000000000000000000000000000000000000008c5216908a01526101a060248a01526101a4890190611542565b935f604489015260648801525f608488015260a48701906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b61010490818601526101249060e4358015158091036102f3578287015235908115158092036102f3576101449182870152358015158091036102f35761016486015235918215158093036102f357845f818094829661018483015203925af19081156112b757506112ab575080f35b6112b59150611329565b005b513d5f823e3d90fd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b6064359073ffffffffffffffffffffffffffffffffffffffff821682036102f357565b67ffffffffffffffff811161133d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff82111761133d57604052565b6060810190811067ffffffffffffffff82111761133d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761133d57604052565b81601f820112156102f357803590602067ffffffffffffffff831161133d5760409260405194611418838360051b01876113a2565b818652828087019260071b850101938185116102f3578301915b8483106114425750505050505090565b6080838303126102f3578551906114588261136a565b73ffffffffffffffffffffffffffffffffffffffff843581811681036102f35783528585013560028110156102f357868401528785013590811681036102f35787830152606090818501359283151584036102f3576080938793820152815201920191611432565b92919267ffffffffffffffff821161133d576040519161150860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846113a2565b8294818452818301116102f3578281602093845f960137010152565b9080601f830112156102f35781602061153f933591016114c0565b90565b9081518082526020808093019301915f5b828110611561575050505090565b9091929384519073ffffffffffffffffffffffffffffffffffffffff90818351168152848301519060028210156115c457600193869360809385840152604090818301511690830152606080910151151590820152019501910192919092611553565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6040519061169f82611386565b5f6040838281528260208201520152565b9461173c6101809563ffffffff6116f16060979b9a966101a073ffffffffffffffffffffffffffffffffffffffff8098168c528060208d01528b0190611542565b9a5f60408b015216868901525f608089015260a08801906040908173ffffffffffffffffffffffffffffffffffffffff91828151168552826020820151166020860152015116910152565b1661010085015280511515610120850152602081015115156101408501526040810151151561016085015201511515910152565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526117cf81611386565b51902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa918215611886575f9261184d57505090565b9091506020813d60201161187e575b81611869602093836113a2565b810103126102f3575190811681036102f35790565b3d915061185c565b6040513d5f823e3d90fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81164210156118c35790565b505f90565b60ff600154166118d457565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b604051906119098261136a565b5f6060838281528260208201528260408201520152565b6119286118fc565b506119316118fc565b60016020820152600160408201529056fe6101e060408181523461048357612de0803803809161001e8286610487565b8439820190606083830312610483578251906001600160a01b03821682036104835760208481015190946001600160401b039182811161048357856100649183016104aa565b94838201518381116104835761007a92016104aa565b938251958387018781108482111761039a578452600180885281880193603160f81b85526100a7846104ff565b976101209889526100b78a610682565b956101409687528551858701209a8b60e052519020996101009a808c524660a052885190868201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528a83015260608201524660808201523060a082015260a0815260c081018181108582111761039a5789525190206080523060c0526101609488865280519183831161039a576003928354928684811c94168015610479575b88851014610465578190601f94858111610417575b5088908583116001146103b9575f926103ae575b50505f1982861b1c191690861b1783555b805193841161039a5760049586548681811c91168015610390575b8282101461037d5783811161033a575b50809285116001146102d557509383949184925f956102ca575b50501b925f19911b1c19161790555b610180913383526101a0938585526101c0958652670de0b6b3a7640000600555519561262797886107b98939608051886121c7015260a05188612293015260c05188612198015260e051886122160152518761223c015251866110560152518561108001525184818161031101528181610554015281816107e201528181610d9301528181610f84015281816114b40152818161157d015281816117430152818161190c0152818161199c015261212d01525183610ff0015251825050518181816106930152818161072a0152818161092a01528181610c6701526111920152f35b015193505f806101d9565b92919084601f198116885f52855f20955f905b898383106103205750505010610307575b50505050811b0190556101e8565b01519060f8845f19921b161c191690555f8080806102f9565b8587015189559097019694850194889350908101906102e8565b875f52815f208480880160051c820192848910610374575b0160051c019087905b8281106103695750506101bf565b5f815501879061035b565b92508192610352565b602288634e487b7160e01b5f525260245ffd5b90607f16906101af565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610183565b90889350601f19831691875f528a5f20925f5b8c82821061040157505084116103ea575b505050811b018355610194565b01515f1983881b60f8161c191690555f80806103dd565b8385015186558c979095019493840193016103cc565b909150855f52885f208580850160051c8201928b861061045c575b918a91869594930160051c01915b82811061044e57505061016f565b5f81558594508a9101610440565b92508192610432565b634e487b7160e01b5f52602260045260245ffd5b93607f169361015a565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761039a57604052565b81601f82011215610483578051906001600160401b03821161039a57604051926104de601f8401601f191660200185610487565b8284526020838301011161048357815f9260208093018386015e8301015290565b8051602090818110156105755750601f825111610537578082519201519080831061052957501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03821161039a575f54926001938481811c91168015610678575b8382101461046557601f8111610645575b5081601f84116001146105e357509282939183925f946105d8575b50501b915f199060031b1c1916175f5560ff90565b015192505f806105c3565b919083601f1981165f8052845f20945f905b8883831061062b5750505010610613575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610606565b8587015188559096019594850194879350908101906105f5565b5f805284601f845f20920160051c820191601f860160051c015b82811061066d5750506105a8565b5f815501859061065f565b90607f1690610597565b8051602090818110156106ac5750601f825111610537578082519201519080831061052957501790565b9192916001600160401b03811161039a5760019182548381811c911680156107ae575b8282101461046557601f811161077b575b5080601f831160011461071b5750819293945f92610710575b50505f19600383901b1c191690821b17905560ff90565b015190505f806106f9565b90601f19831695845f52825f20925f905b888210610764575050838596971061074c575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808061073f565b80878596829496860151815501950193019061072c565b835f5283601f835f20920160051c820191601f850160051c015b8281106107a35750506106e0565b5f8155018490610795565b90607f16906106cf56fe6080604090808252600480361015610015575f80fd5b5f9160e05f35811c91826301ffc9a714611bd25750816306fdde0314611ae2578163095ea7b314611a6457816316a0b3e0146119d557816318160ddd1461194257816323b872dd1461189a57816323de665114611868578163273c1adf1461183d57816330adf81f14611803578163313ce567146117e8578163360c340f146116ea5781633644e515146116ce5781634cfe8d1a146116b65781635687f2b814611657578163627cdcb91461162e578163641579a614611616578163654cf15d146115f4578163679aefce1461151a57816370a082311461144657816372c981861461137c5781637ecebe001461133857816381fa807c1461113557816384b0196e1461103e578163851c1bb314610fa85781638d928af814610f5857816395d89b4114610e52578163984de9e814610e04578163a9059cbb14610cfb578163aa6ca80814610c0e578163ab68e28c14610b66578163abb1dc44146108cf578163b0e2e403146107b7578163b156aa0a146106d0578163b677fa56146106cb578163ce20ece7146106cb578163d335b0cf14610638578163d505accf1461038e57508063dd62ed3e146102955763e4c43663146101d0575f80fd5b3461028d5760a060031936011261028d576101e9611c7c565b5067ffffffffffffffff6024358181116102915761020a9036908401611d4b565b9260643582811161028d576102229036908501611d4b565b5060843591821161028a5750926102786102456102869361026396369101611e69565b916102508551612004565b8151968796608088526080880190611ded565b91604435602088015286830390870152611ded565b908382036060850152611c39565b0390f35b80fd5b5080fd5b8380fd5b50913461028d578060031936011261028d5760206102b1611c7c565b60646102bb611c9f565b9573ffffffffffffffffffffffffffffffffffffffff8080988751998a9687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a575b6020925051908152f35b90506020823d60201161037b575b8161036560209383611cf2565b81010312610377576020915190610340565b5f80fd5b3d9150610358565b9051903d90823e3d90fd5b91939050346106345781600319360112610634576103aa611c7c565b916103b3611c9f565b90604435936064359160843560ff8116810361063057834211610605576104018373ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b91865160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835273ffffffffffffffffffffffffffffffffffffffff9687871695868b850152888a1660608501528b608085015260a084015260c083015260c08252810181811067ffffffffffffffff8211176105f257926104de926104d59288958b52519020610494612181565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a43592206124ac565b90929192612546565b168181036105c5575050858495969761055060209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156105bc5750610586575080f35b6020813d6020116105b4575b8161059f60209383611cf2565b8101031261028d576105b090611f4d565b5080f35b3d9150610592565b513d84823e3d90fd5b7f4b800e460000000000000000000000000000000000000000000000000000000088528852602452604486fd5b60418c634e487b7160e01b5f525260245ffd5b602488858b7f6279130200000000000000000000000000000000000000000000000000000000835252fd5b8780fd5b8280fd5b5050913461028d578160031936011261028d578051927fb45090f9000000000000000000000000000000000000000000000000000000008452309084015260208360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610383579161034a576020925051908152f35b611efb565b5050913461028d578160031936011261028d578051927f535cfd8a0000000000000000000000000000000000000000000000000000000084523090840152818360248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561038357809261076f575b81516020808252819061028690820186611ded565b9091503d8082853e6107818185611cf2565b83019260208185031261028d5780519167ffffffffffffffff831161028a5750926107b0916102869401611fa3565b905f61075a565b505082346103775760206003193601126103775773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691815192813560208501526020845261081a84611cc2565b803b15610377576108895f9491859285519687809481937fc80882470000000000000000000000000000000000000000000000000000000083527f546573744576656e740000000000000000000000000000000000000000000000898401528960248401526044830190611c39565b03925af180156108c55761089b578380f35b9091925067ffffffffffffffff83116108b2575052005b604190634e487b7160e01b5f525260245ffd5b82513d5f823e3d90fd5b828534610377575f6003193601126103775780517f67e0e076000000000000000000000000000000000000000000000000000000008152308382015273ffffffffffffffffffffffffffffffffffffffff916024905f8383817f000000000000000000000000000000000000000000000000000000000000000088165afa938415610b5c575f955f945f945f97610a08575b5050509061098095949392918151968796608088526080880190611e20565b6020878203818901528080875193848152019601925f905b8382106109c457898803868b015289806102868b6109b68c8c611ded565b908382036060850152611ded565b91849899506060869798600193959783975180516109e181611edd565b83528685820151168584015201511515898201520198019201899897969594929391610998565b94509450945094503d805f853e610a1f8185611cf2565b8301926080818503126103775780519367ffffffffffffffff948581116103775781610a4c918401612085565b936020808401518781116103775784019083601f8301121561037757815192610a7484611d33565b99610a8188519b8c611cf2565b848b52828b019183606080970286010194878611610377579b9c9b8401925b858410610ae95750505050505050828201518581116103775781610ac5918401611fa3565b94606083015190811161037757610adc9201611fa3565b9194929193868080610961565b86849d9e9d890312610377578951908782018d811183821017610b4a578b528451906002821015610377578f91835286860151918216820361037757828792838b950152610b388d8801611f4d565b8d8201528152019301929c9b9c610aa0565b83604186634e487b7160e01b5f52525ffd5b50513d5f823e3d90fd5b8285346103775760a060031936011261037757610b81611c7c565b5067ffffffffffffffff60443581811161037757610ba29036908501611d4b565b9160643582811161037757610bba9036908601611d4b565b5060843591821161037757610278610bdb610c019561028694369101611e69565b91610be68551612004565b81519687966024358852608060208901526080880190611ded565b9186830390870152611ded565b828534610377575f600319360112610377578051917fca4f280300000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f91610cae575b610286925051918291602083526020830190611e20565b90503d805f843e610cbf8184611cf2565b8201916020818403126103775780519267ffffffffffffffff84116103775761028693610cec9201612085565b90610c97565b513d5f823e3d90fd5b8285346103775780600319360112610377576020610d7992610d1b611c7c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca575b6020905160018152f35b6020823d602011610dfc575b81610de360209383611cf2565b8101031261037757610df6602092611f4d565b50610dc0565b3d9150610dd6565b84833461037757816003193601126103775780359067ffffffffffffffff821161037757610e3491369101611d4b565b906002602435101561037757610e4b602092612053565b9051908152f35b848334610377575f60031936011261037757815191825f8354610e7481611f15565b90818452602095600191876001821691825f14610f13575050600114610eb7575b5050506102869291610ea8910385611cf2565b51928284938452830190611c39565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610efb5750505082010181610ea8610286610e95565b8054848a018601528895508794909301928101610ee2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610ea891506102869050610e95565b8434610377575f600319360112610377576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8483346103775760206003193601126103775780357fffffffff00000000000000000000000000000000000000000000000000000000811680910361037757825160208101917f000000000000000000000000000000000000000000000000000000000000000083528482015260248152606081019281841067ffffffffffffffff8511176108b2575082602094525190208152f35b92505034610377575f6003193601126103775761107a7f00000000000000000000000000000000000000000000000000000000000000006122b9565b926110a47f00000000000000000000000000000000000000000000000000000000000000006123ee565b815192602084019084821067ffffffffffffffff8311176108b257509161111591610286949382525f845261110882519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611c39565b9186830390870152611c39565b904660608501523060808501525f60a085015283820360c0850152611ded565b92505034610377575f6003193601126103775782517ff29486a100000000000000000000000000000000000000000000000000000000815230828201526101a092838260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa93841561132e575f946111d9575b858560608282015191015182519182526020820152f35b909180939450813d8311611327575b6111f28183611cf2565b8101039281841261037757855194610140948587019167ffffffffffffffff918884108385111761131457608013610377576101c08801918211838310176108b25750875261124082611f4d565b815261124e60208301611f4d565b906101609182880152611262888401611f4d565b93610180948589015261127760608501611f4d565b9088015286526080820151602087015260a08201518787015260c082015160608701528382015164ffffffffff8116810361037757608087015261010090818301519063ffffffff8216820361037757611307956112fd9260a08a01526112f2610120986112e68a8801611f4d565b60c08c01528601611f4d565b908901528301611f4d565b9086015201611f4d565b908201525f8080806111c2565b604182634e487b7160e01b5f525260245ffd5b503d6111e8565b85513d5f823e3d90fd5b84346103775760206003193601126103775760209073ffffffffffffffffffffffffffffffffffffffff61136a611c7c565b165f5260028252805f20549051908152f35b84833461037757600319926020843601126103775781359367ffffffffffffffff851161037757843603011261037757828101356002811015610377576113c281611edd565b6113ec5750670de0b6b3a76400006113e36020936024600554910135612103565b04905b51908152f35b916024013560055490670de0b6b3a764000090818102918183041490151715611433578115611420576020935004906113e6565b601284634e487b7160e01b5f525260245ffd5b601184634e487b7160e01b5f525260245ffd5b84833461037757602091826003193601126103775782611464611c7c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610b5c575f926114eb575b5051908152f35b9091508281813d8311611513575b6115038183611cf2565b81010312610377575190836114e4565b503d6114f9565b828534610377575f60031936011261037757600654806115ea57508051917f4f037ee7000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610b5c575f906115b7575b602092509051908152f35b506020823d6020116115e2575b816115d160209383611cf2565b8101031261037757602091516115ac565b3d91506115c4565b60209250906113e6565b8434610377575f6003193601126103775760209051670de0b6b3a76400008152f35b82346103775760206003193601126103775735600555005b34610377575f60031936011261037757335f908152600260205260409020805460018101909155005b84346103775760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561168936611dab565b939194611694612116565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b82346103775760206003193601126103775735600655005b8434610377575f60031936011261037757602090610e4b612181565b828534610377575f600319360112610377578051917f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525f8260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161178a575b610286925051918291602083526020830190611ded565b90503d805f843e61179b8184611cf2565b82019080838303126103775782519267ffffffffffffffff9384811161037757836117c7918301611fa3565b92602082015194851161037757610286946117e29201611fa3565b50611773565b8434610377575f600319360112610377576020905160128152f35b8434610377575f60031936011261037757602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b8434610377575f6003193601126103775760209051701d6329f1c35ca4bfabb9f56100000000008152f35b84346103775760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61168936611dab565b8285346103775760205f60846118af36611dab565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610b5c57610dca576020905160018152f35b828534610377575f600319360112610377578051917fe4dc2aa4000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610cf2575f9161034a576020925051908152f35b82853461037757606060031936011261037757813567ffffffffffffffff811161037757611a069036908401611d4b565b90611a3d611a20611a1684612053565b9360243590611f5a565b51670de0b6b3a7640000611a3660443586612103565b0490611f82565b918203918211611a51576020925051908152f35b601183634e487b7160e01b5f525260245ffd5b8285346103775780600319360112610377576020610d7992611a84611c7c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b8434610377575f6003193601126103775780516003549091825f611b0584611f15565b808352602094600190866001821691825f14611b92575050600114611b37575b50506102869291610ea8910385611cf2565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611b7a5750505082010181610ea8611b25565b8054848a018601528895508794909301928101611b64565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150610ea89050611b25565b83346103775760206003193601126103775735907fffffffff000000000000000000000000000000000000000000000000000000008216809203610377577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361037757565b6040810190811067ffffffffffffffff821117611cde57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611cde57604052565b67ffffffffffffffff8111611cde5760051b60200190565b9080601f83011215610377576020908235611d6581611d33565b93611d736040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611d9c575050505090565b81358152908301908301611d8e565b60031960609101126103775773ffffffffffffffffffffffffffffffffffffffff90600435828116810361037757916024359081168103610377579060443590565b9081518082526020808093019301915f5b828110611e0c575050505090565b835185529381019392810192600101611dfe565b9081518082526020808093019301915f5b828110611e3f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611e31565b81601f820112156103775780359067ffffffffffffffff8211611cde5760405192611ebc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185611cf2565b8284526020838301011161037757815f926020809301838601378301015290565b60021115611ee757565b634e487b7160e01b5f52602160045260245ffd5b34610377575f6003193601126103775760206040515f8152f35b90600182811c92168015611f43575b6020831014611f2f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611f24565b5190811515820361037757565b8051821015611f6e5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b91908201809211611f8f57565b634e487b7160e01b5f52601160045260245ffd5b9080601f8301121561037757815190602091611fbe81611d33565b93611fcc6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b828210611ff5575050505090565b81518152908301908301611fe7565b9061200e82611d33565b61201b6040519182611cf2565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120498294611d33565b0190602036910137565b5f90815b815183101561207f576120776001916120708585611f5a565b5190611f82565b920191612057565b91505090565b9080601f83011215610377578151906020916120a081611d33565b936120ae6040519586611cf2565b81855260208086019260051b82010192831161037757602001905b8282106120d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036103775781529083019083016120c9565b81810292918115918404141715611f8f57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361215557565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612290575b156121e9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611cde5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146121c0565b60ff811461230d5760ff811690601f82116122e557604051916122db83611cc2565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f549161231f83611f15565b808352926020906001908181169081156123ab575060011461234d575b505061234a92500382611cf2565b90565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612393575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612378565b90506020935061234a9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f8061233c565b60ff81146124105760ff811690601f82116122e557604051916122db83611cc2565b506040515f8160019160015461242581611f15565b80845293602091600181169081156123ab575060011461244d57505061234a92500382611cf2565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612494575061234a9450505081016020015f8061233c565b85548785018301529485019486945092810192612479565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161253b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612530575f5173ffffffffffffffffffffffffffffffffffffffff81161561252657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b6004811015611ee75780612558575050565b60018103612588577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b600281036125bc57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146125c65750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffdfea2646970667358221220031608d4fc5bbc7ccbc38dfb1adf85e117593d892ff034148dc3f4aab1e26d9864736f6c634300081a0033a26469706673582212203c8b24882ad13941716cf9ec8211685110fd8068212bf7aef715a6365744b8ba64736f6c634300081a0033","opcodes":"PUSH2 0x220 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH2 0x56A JUMPI PUSH1 0x60 DUP3 PUSH3 0x11D76 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x22 DUP3 DUP6 PUSH2 0x6C9 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x56A JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 DUP3 DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x56A JUMPI PUSH1 0x20 SWAP5 DUP6 DUP2 ADD MLOAD SWAP1 DUP6 DUP3 AND DUP3 SUB PUSH2 0x56A JUMPI DUP5 ADD MLOAD SWAP5 DUP1 DUP7 AND DUP1 SWAP7 SUB PUSH2 0x56A JUMPI PUSH2 0x8B DUP6 MLOAD PUSH2 0x70 DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0xA DUP2 MSTORE PUSH10 0x1A5CD55B9B1BD8DAD959 PUSH1 0xB2 SHL DUP10 DUP3 ADD MSTORE PUSH2 0x727 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH2 0xBE DUP6 MLOAD PUSH2 0x9C DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0x11 DUP2 MSTORE PUSH17 0x1B9BDB96995C9BD1195B1D1850DBDD5B9D PUSH1 0x7A SHL DUP10 DUP3 ADD MSTORE PUSH2 0x727 JUMP JUMPDEST PUSH1 0xE0 MSTORE PUSH2 0xEB DUP6 MLOAD PUSH2 0xCF DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0xB DUP2 MSTORE PUSH11 0x746F6B656E44656C746173 PUSH1 0xA8 SHL DUP10 DUP3 ADD MSTORE PUSH2 0x727 JUMP JUMPDEST SWAP7 PUSH2 0x100 SWAP8 DUP9 MSTORE PUSH2 0x123 DUP7 MLOAD PUSH2 0x100 DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0x12 DUP2 MSTORE PUSH18 0x185919131A5C5D5A591A5D1E50D85B1B1959 PUSH1 0x72 SHL DUP4 DUP3 ADD MSTORE PUSH2 0x727 JUMP JUMPDEST SWAP7 PUSH2 0x120 SWAP8 DUP9 MSTORE PUSH2 0x152 DUP8 MLOAD PUSH2 0x138 DUP2 PUSH2 0x69A JUMP JUMPDEST PUSH1 0x9 DUP2 MSTORE PUSH9 0x1CD95CDCDA5BDB9259 PUSH1 0xBA SHL DUP5 DUP3 ADD MSTORE PUSH2 0x727 JUMP JUMPDEST SWAP1 PUSH2 0x140 SWAP2 DUP3 MSTORE DUP8 MLOAD SWAP4 PUSH4 0xFBFA77CF PUSH1 0xE0 SHL SWAP1 DUP2 DUP7 MSTORE PUSH1 0x4 SWAP6 DUP6 DUP2 DUP9 DUP2 DUP14 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x53A JUMPI PUSH0 SWAP2 PUSH2 0x67D JUMPI JUMPDEST POP DUP2 ADDRESS SWAP2 AND SUB PUSH2 0x66F JUMPI DUP10 MLOAD SWAP2 DUP3 MSTORE DUP5 DUP3 DUP8 DUP2 DUP7 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x511 JUMPI PUSH0 SWAP3 PUSH2 0x640 JUMPI JUMPDEST POP ADDRESS SWAP2 AND SUB PUSH2 0x632 JUMPI PUSH2 0x1C0 SWAP6 DUP7 MSTORE PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP7 MLOAD PUSH4 0x4546891D PUSH1 0xE1 SHL DUP1 DUP3 MSTORE SWAP1 SWAP3 SWAP1 DUP2 DUP5 DUP7 DUP2 DUP12 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x628 JUMPI PUSH0 SWAP5 PUSH2 0x609 JUMPI JUMPDEST POP PUSH2 0x160 SWAP4 DUP5 MSTORE DUP9 MLOAD PUSH4 0x1060FDBD PUSH1 0xE1 SHL DUP1 DUP3 MSTORE SWAP1 SWAP7 DUP4 DUP9 DUP9 DUP2 DUP14 GAS STATICCALL SWAP8 DUP9 ISZERO PUSH2 0x53A JUMPI PUSH0 SWAP9 PUSH2 0x5E2 JUMPI JUMPDEST POP PUSH2 0x1A0 SWAP8 DUP9 MSTORE DUP11 MLOAD PUSH4 0xCD51C12F PUSH1 0xE0 SHL DUP2 MSTORE SWAP7 SWAP4 SWAP3 SWAP2 SWAP1 DUP4 DUP9 DUP7 DUP2 DUP15 GAS STATICCALL SWAP8 DUP9 ISZERO PUSH2 0x5D8 JUMPI DUP13 DUP13 SWAP2 PUSH0 SWAP11 PUSH2 0x5B3 JUMPI JUMPDEST POP PUSH2 0x180 SWAP10 DUP11 MSTORE MLOAD PUSH4 0x716585D PUSH1 0xE5 SHL DUP2 MSTORE SWAP1 DUP6 SWAP1 DUP3 SWAP1 DUP9 SWAP1 DUP3 SWAP1 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x575 JUMPI DUP13 DUP15 DUP9 SWAP4 DUP9 SWAP4 PUSH0 SWAP2 PUSH2 0x57F JUMPI JUMPDEST POP PUSH1 0x80 MSTORE MLOAD PUSH4 0x29CAB551 PUSH1 0xE1 SHL DUP2 MSTORE SWAP3 DUP4 SWAP2 DUP3 SWAP1 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x575 JUMPI PUSH0 SWAP2 PUSH2 0x544 JUMPI JUMPDEST POP PUSH1 0xA0 MSTORE PUSH1 0x9 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x8 SWAP3 SWAP1 SWAP3 SHL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP11 MLOAD SWAP2 DUP3 MSTORE DUP3 DUP3 DUP6 DUP2 DUP14 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x53A JUMPI SWAP1 DUP4 SWAP2 PUSH0 SWAP4 PUSH2 0x51B JUMPI JUMPDEST POP DUP5 DUP13 MLOAD DUP1 SWAP13 DUP2 SWAP4 DUP3 MSTORE GAS STATICCALL SWAP9 DUP10 ISZERO PUSH2 0x511 JUMPI PUSH0 SWAP10 PUSH2 0x4E2 JUMPI JUMPDEST POP PUSH4 0xFFFFFFFF DUP1 DUP1 SWAP11 AND SWAP2 AND SUB DUP9 DUP2 GT PUSH2 0x4CF JUMPI DUP10 MLOAD SWAP2 PUSH2 0x4898 SWAP10 DUP11 DUP5 ADD SWAP3 PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB SWAP12 DUP6 DUP6 LT DUP14 DUP7 GT OR PUSH2 0x4BC JUMPI SWAP2 DUP6 SWAP4 SWAP2 DUP15 SWAP6 SWAP4 PUSH3 0xD4DE DUP7 CODECOPY ADDRESS DUP5 MSTORE AND SWAP1 DUP3 ADD MSTORE SUB ADD SWAP1 PUSH0 CREATE SWAP7 DUP8 ISZERO PUSH2 0x4B2 JUMPI PUSH2 0x1E0 SWAP8 DUP9 MSTORE DUP9 MLOAD SWAP2 PUSH2 0x71F SWAP1 DUP2 DUP5 ADD SWAP3 DUP5 DUP5 LT SWAP1 DUP5 GT OR PUSH2 0x49F JUMPI POP SWAP1 DUP3 SWAP2 PUSH3 0xCDBF DUP4 CODECOPY SUB SWAP1 PUSH0 CREATE SWAP7 DUP8 ISZERO PUSH2 0x496 JUMPI PUSH2 0x200 SWAP8 DUP9 MSTORE MLOAD SWAP8 PUSH2 0xC5C4 SWAP10 DUP11 PUSH3 0x7FB DUP12 CODECOPY PUSH1 0x80 MLOAD DUP11 PUSH2 0xAD95 ADD MSTORE PUSH1 0xA0 MLOAD DUP11 PUSH2 0x966B ADD MSTORE PUSH1 0xC0 MLOAD DUP11 DUP2 DUP2 PUSH2 0x391E ADD MSTORE DUP2 DUP2 PUSH2 0x39B5 ADD MSTORE DUP2 DUP2 PUSH2 0x44E3 ADD MSTORE DUP2 DUP2 PUSH2 0x5A66 ADD MSTORE PUSH2 0x780F ADD MSTORE PUSH1 0xE0 MLOAD DUP11 DUP2 DUP2 PUSH2 0x1359 ADD MSTORE DUP2 DUP2 PUSH2 0x359B ADD MSTORE DUP2 DUP2 PUSH2 0x5AA7 ADD MSTORE DUP2 DUP2 PUSH2 0xAC47 ADD MSTORE PUSH2 0xAC8C ADD MSTORE MLOAD DUP10 DUP2 DUP2 PUSH2 0x1A5F ADD MSTORE DUP2 DUP2 PUSH2 0x4B21 ADD MSTORE PUSH2 0xABFF ADD MSTORE MLOAD DUP9 DUP2 DUP2 PUSH2 0x2CF5 ADD MSTORE DUP2 DUP2 PUSH2 0x324F ADD MSTORE DUP2 DUP2 PUSH2 0x4F7E ADD MSTORE PUSH2 0x82CE ADD MSTORE MLOAD DUP8 DUP2 DUP2 PUSH2 0x321B ADD MSTORE DUP2 DUP2 PUSH2 0x3A92 ADD MSTORE DUP2 DUP2 PUSH2 0x4F5A ADD MSTORE DUP2 DUP2 PUSH2 0x5AD3 ADD MSTORE PUSH2 0x829A ADD MSTORE MLOAD DUP7 POP POP MLOAD DUP6 PUSH2 0x681F ADD MSTORE MLOAD DUP5 PUSH2 0x67E5 ADD MSTORE MLOAD DUP4 DUP2 DUP2 PUSH2 0x459E ADD MSTORE PUSH2 0x6744 ADD MSTORE MLOAD DUP3 DUP2 DUP2 PUSH2 0x1AE4 ADD MSTORE DUP2 DUP2 PUSH2 0x2930 ADD MSTORE DUP2 DUP2 PUSH2 0x3BA2 ADD MSTORE DUP2 DUP2 PUSH2 0x3CBC ADD MSTORE PUSH2 0x535E ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x36DA ADD MSTORE PUSH2 0x5939 ADD MSTORE RETURN JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP9 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x41 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x503 SWAP2 SWAP10 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x50A JUMPI JUMPDEST PUSH2 0x4FB DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6EC JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x2FC JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x4F1 JUMP JUMPDEST DUP11 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x533 SWAP2 SWAP4 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x50A JUMPI PUSH2 0x4FB DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0x2E2 JUMP JUMPDEST DUP12 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP DUP5 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x56E JUMPI JUMPDEST PUSH2 0x55B DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x56A JUMPI MLOAD PUSH0 PUSH2 0x29C JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x551 JUMP JUMPDEST DUP14 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP5 POP POP POP POP DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x5AC JUMPI JUMPDEST PUSH2 0x598 DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x56A JUMPI DUP5 DUP13 DUP15 DUP9 SWAP4 MLOAD PUSH0 PUSH2 0x278 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x58E JUMP JUMPDEST DUP7 SWAP2 SWAP11 POP SWAP2 PUSH2 0x5CF DUP9 SWAP4 DUP4 RETURNDATASIZE DUP6 GT PUSH2 0x50A JUMPI PUSH2 0x4FB DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST SWAP11 SWAP2 POP SWAP2 PUSH2 0x247 JUMP JUMPDEST DUP13 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 SWAP4 SWAP3 SWAP2 SWAP9 POP PUSH2 0x5FF SWAP1 DUP9 SWAP6 RETURNDATASIZE DUP7 GT PUSH2 0x50A JUMPI PUSH2 0x4FB DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST SWAP8 SWAP1 SWAP2 SWAP3 SWAP4 PUSH2 0x217 JUMP JUMPDEST PUSH2 0x621 SWAP2 SWAP5 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x50A JUMPI PUSH2 0x4FB DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST SWAP3 PUSH0 PUSH2 0x1EC JUMP JUMPDEST DUP10 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 PUSH4 0x1BBE95C7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH2 0x661 SWAP2 SWAP3 POP DUP6 RETURNDATASIZE DUP8 GT PUSH2 0x668 JUMPI JUMPDEST PUSH2 0x659 DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x708 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1A4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x64F JUMP JUMPDEST DUP6 PUSH4 0x1AB9D9D PUSH1 0xE4 SHL PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH2 0x694 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x668 JUMPI PUSH2 0x659 DUP2 DUP4 PUSH2 0x6C9 JUMP JUMPDEST PUSH0 PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x6B5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x6B5 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x56A JUMPI MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x56A JUMPI SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x56A JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x56A JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x734 DUP3 PUSH2 0x69A JUMP JUMPDEST PUSH1 0xC DUP3 MSTORE PUSH2 0x7B5 PUSH1 0x3A PUSH1 0x20 DUP5 ADD PUSH12 0x5661756C7453746F72616765 PUSH1 0xA0 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 DUP3 DUP5 ADD SWAP8 PUSH32 0x62616C616E6365722D6C6162732E76332E73746F726167652E00000000000000 DUP10 MSTORE MLOAD DUP1 SWAP2 PUSH1 0x39 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL PUSH1 0x39 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x1A DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x6C9 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x7E6 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 MSTORE PUSH2 0x7DB DUP3 PUSH2 0x69A JUMP JUMPDEST SWAP1 MLOAD SWAP1 KECCAK256 PUSH1 0xFF NOT AND SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x672D JUMPI PUSH2 0x6705 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xD7AADB EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0x2E1A4AA EQ PUSH2 0x6A1 JUMPI DUP1 PUSH4 0x362A513 EQ PUSH2 0x69C JUMPI DUP1 PUSH4 0x790DE46 EQ PUSH2 0x697 JUMPI DUP1 PUSH4 0x8BADE29 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xC87409B EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0xEE4CDD8 EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0xF619655 EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0xF682BA0 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x10C1DC41 EQ PUSH2 0x679 JUMPI DUP1 PUSH4 0x155075E6 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0x15AFD409 EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0x15DACBEA EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0x16A573C2 EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0x195AAEF9 EQ PUSH2 0x660 JUMPI DUP1 PUSH4 0x19A24BCB EQ PUSH2 0x65B JUMPI DUP1 PUSH4 0x1C4E1E23 EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0x1D27AF68 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0x1F4475C5 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x1F495F79 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x21457897 EQ PUSH2 0x642 JUMPI DUP1 PUSH4 0x24E7176B EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x25B6A844 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0x2606A4DE EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0x28121E27 EQ PUSH2 0x62E JUMPI DUP1 PUSH4 0x2B766278 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x2BFB780C EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x2CBBF198 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x2D1C3BEB EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x32333CE6 EQ PUSH2 0x615 JUMPI DUP1 PUSH4 0x352339EE EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x36918D6E EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0x370BC8DA EQ PUSH2 0x606 JUMPI DUP1 PUSH4 0x3CB5B2AF EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0x3CCE2585 EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x3E262BA3 EQ PUSH2 0x5F7 JUMPI DUP1 PUSH4 0x420F4A45 EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0x43583BE5 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0x44EA8763 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0x47C07E88 EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0x48C89491 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x4AF29EC4 EQ PUSH2 0x5D9 JUMPI DUP1 PUSH4 0x557DBA68 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x5C1C1C81 EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0x5E3E00FA EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x5EEAE6EB EQ PUSH2 0x5C5 JUMPI DUP1 PUSH4 0x5F70F542 EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0x608256F7 EQ PUSH2 0x5BB JUMPI DUP1 PUSH4 0x62691E5F EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0x692407AE EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x6D4908C4 EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x7004B0F1 EQ PUSH2 0x5A7 JUMPI DUP1 PUSH4 0x7965C967 EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0x79A2C0AC EQ PUSH2 0x59D JUMPI DUP1 PUSH4 0x80047E26 EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0x81E4B7E9 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x82EA1749 EQ PUSH2 0x58E JUMPI DUP1 PUSH4 0x851C65A3 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x87A530F8 EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x87A76C59 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0x8F5AEB4B EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x920AF066 EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0x96E74A27 EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0xA03B23EF EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xA408F312 EQ PUSH2 0x566 JUMPI DUP1 PUSH4 0xA40F9592 EQ PUSH2 0x561 JUMPI DUP1 PUSH4 0xAA01EDB3 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0xAB62C2B6 EQ PUSH2 0x557 JUMPI DUP1 PUSH4 0xAC004855 EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0xAE639329 EQ PUSH2 0x54D JUMPI DUP1 PUSH4 0xB1740C2D EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0xB2469499 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0xB4EB0BF9 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xB6F680F4 EQ PUSH2 0x539 JUMPI DUP1 PUSH4 0xB8CACEEE EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xB8F82B26 EQ PUSH2 0x52F JUMPI DUP1 PUSH4 0xB9A8EFFA EQ PUSH2 0x52A JUMPI DUP1 PUSH4 0xBB14E466 EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0xBBC6F1DC EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0xBE6B4D2A EQ PUSH2 0x51B JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0xC1FDCD62 EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xC9C1661B EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xCBDE2B68 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0xCBE52AE3 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0xCECC95A7 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0xCFCC2209 EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0xD01A3269 EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0xD0643B8C EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0xD1F810A5 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xD64BC25D EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0xD86C3FEF EQ PUSH2 0x4DA JUMPI DUP1 PUSH4 0xD8F4CF3C EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xDAB50579 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0xDC4402ED EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xDF138458 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0xE2DDCE11 EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0xE460A8A9 EQ PUSH2 0x4BC JUMPI DUP1 PUSH4 0xE5948689 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0xE5B08FFB EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0xEBFEB0A1 EQ PUSH2 0x4AD JUMPI DUP1 PUSH4 0xEEDA9991 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xF1320097 EQ PUSH2 0x4A3 JUMPI PUSH4 0xFF44DEAB SUB PUSH2 0xE JUMPI PUSH2 0x52C9 JUMP JUMPDEST PUSH2 0x521E JUMP JUMPDEST PUSH2 0x51FF JUMP JUMPDEST PUSH2 0x51B7 JUMP JUMPDEST PUSH2 0x517B JUMP JUMPDEST PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x4FB1 JUMP JUMPDEST PUSH2 0x4F49 JUMP JUMPDEST PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4EAC JUMP JUMPDEST PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x4CCA JUMP JUMPDEST PUSH2 0x4BE7 JUMP JUMPDEST PUSH2 0x4BAE JUMP JUMPDEST PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x4B45 JUMP JUMPDEST PUSH2 0x4B0D JUMP JUMPDEST PUSH2 0x4A65 JUMP JUMPDEST PUSH2 0x49E6 JUMP JUMPDEST PUSH2 0x49AE JUMP JUMPDEST PUSH2 0x4983 JUMP JUMPDEST PUSH2 0x4931 JUMP JUMPDEST PUSH2 0x4896 JUMP JUMPDEST PUSH2 0x47AC JUMP JUMPDEST PUSH2 0x4794 JUMP JUMPDEST PUSH2 0x4728 JUMP JUMPDEST PUSH2 0x46FD JUMP JUMPDEST PUSH2 0x45C2 JUMP JUMPDEST PUSH2 0x457F JUMP JUMPDEST PUSH2 0x4554 JUMP JUMPDEST PUSH2 0x453C JUMP JUMPDEST PUSH2 0x4522 JUMP JUMPDEST PUSH2 0x4506 JUMP JUMPDEST PUSH2 0x44CC JUMP JUMPDEST PUSH2 0x44A3 JUMP JUMPDEST PUSH2 0x43C8 JUMP JUMPDEST PUSH2 0x43AE JUMP JUMPDEST PUSH2 0x430A JUMP JUMPDEST PUSH2 0x4228 JUMP JUMPDEST PUSH2 0x41EC JUMP JUMPDEST PUSH2 0x41A7 JUMP JUMPDEST PUSH2 0x4162 JUMP JUMPDEST PUSH2 0x3D66 JUMP JUMPDEST PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x3CE0 JUMP JUMPDEST PUSH2 0x3C9D JUMP JUMPDEST PUSH2 0x3C33 JUMP JUMPDEST PUSH2 0x3B75 JUMP JUMPDEST PUSH2 0x3ABA JUMP JUMPDEST PUSH2 0x3A7E JUMP JUMPDEST PUSH2 0x3A6D JUMP JUMPDEST PUSH2 0x39D7 JUMP JUMPDEST PUSH2 0x39A1 JUMP JUMPDEST PUSH2 0x3940 JUMP JUMPDEST PUSH2 0x390B JUMP JUMPDEST PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x3898 JUMP JUMPDEST PUSH2 0x37A6 JUMP JUMPDEST PUSH2 0x35BD JUMP JUMPDEST PUSH2 0x3585 JUMP JUMPDEST PUSH2 0x3533 JUMP JUMPDEST PUSH2 0x3465 JUMP JUMPDEST PUSH2 0x339A JUMP JUMPDEST PUSH2 0x31B6 JUMP JUMPDEST PUSH2 0x312A JUMP JUMPDEST PUSH2 0x3102 JUMP JUMPDEST PUSH2 0x308A JUMP JUMPDEST PUSH2 0x2D36 JUMP JUMPDEST PUSH2 0x2CCE JUMP JUMPDEST PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x2C16 JUMP JUMPDEST PUSH2 0x2BDD JUMP JUMPDEST PUSH2 0x2AF8 JUMP JUMPDEST PUSH2 0x2A34 JUMP JUMPDEST PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x27DA JUMP JUMPDEST PUSH2 0x27B6 JUMP JUMPDEST PUSH2 0x2520 JUMP JUMPDEST PUSH2 0x24E3 JUMP JUMPDEST PUSH2 0x249B JUMP JUMPDEST PUSH2 0x241A JUMP JUMPDEST PUSH2 0x1FB8 JUMP JUMPDEST PUSH2 0x1E9B JUMP JUMPDEST PUSH2 0x1C6B JUMP JUMPDEST PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1A48 JUMP JUMPDEST PUSH2 0x1A31 JUMP JUMPDEST PUSH2 0x1931 JUMP JUMPDEST PUSH2 0x18A1 JUMP JUMPDEST PUSH2 0x16D7 JUMP JUMPDEST PUSH2 0x16A0 JUMP JUMPDEST PUSH2 0x149D JUMP JUMPDEST PUSH2 0x137C JUMP JUMPDEST PUSH2 0x1342 JUMP JUMPDEST PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x129A JUMP JUMPDEST PUSH2 0x121D JUMP JUMPDEST PUSH2 0x11D8 JUMP JUMPDEST PUSH2 0x116B JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x1044 JUMP JUMPDEST PUSH2 0x9CB JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0x6AB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x164 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x6F3 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x700 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x770 PUSH1 0x20 PUSH2 0x71A CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 SWAP1 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP7 DUP3 SWAP6 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP4 AND GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x781 JUMPI STOP JUMPDEST PUSH2 0x7A2 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI JUMPDEST PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5324 JUMP JUMPDEST STOP JUMPDEST POP RETURNDATASIZE PUSH2 0x790 JUMP JUMPDEST PUSH2 0x5339 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x7D0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x6777 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0x853 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x140 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x180 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x81E JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x954 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x962 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x98B JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x999 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x97D JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x9E8 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xA08 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH2 0xA11 PUSH2 0x9A4 JUMP JUMPDEST PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 SWAP3 PUSH1 0x40 MLOAD SWAP3 PUSH2 0xA4C DUP5 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH2 0xA58 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x84 CALLDATALOAD PUSH2 0xA66 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH2 0xA77 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5344 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA81 JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH2 0x144 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x164 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x184 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x1A4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 PUSH2 0xB68 DUP4 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH1 0x40 PUSH2 0xB78 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x86F JUMP JUMPDEST DUP5 DUP7 MSTORE DUP3 DUP7 ADD SWAP2 DUP4 PUSH1 0x60 DUP1 SWAP8 MUL DUP7 ADD ADD SWAP5 DUP2 DUP7 GT PUSH2 0x6BC JUMPI DUP5 ADD SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0xBA5 JUMPI POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP7 DUP5 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP5 DUP8 SWAP2 DUP5 MLOAD PUSH2 0xBBC DUP2 PUSH2 0x802 JUMP JUMPDEST DUP7 CALLDATALOAD PUSH2 0xBC7 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD PUSH2 0xBD6 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP6 DUP8 ADD CALLDATALOAD PUSH2 0xBE7 DUP2 PUSH2 0xA96 JUMP JUMPDEST DUP7 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0xB94 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0xC10 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0xC1E PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xC47 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xC39 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0xC6B PUSH2 0x892 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xC91 SWAP2 DUP6 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xCAE SWAP2 DUP6 ADD PUSH2 0xB4F JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xCCB SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xCE8 SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xD05 SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xD20 SWAP3 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x81E JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0xD5C DUP3 PUSH2 0xD34 JUMP JUMPDEST SWAP2 PUSH2 0xD6A PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x86F JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x6BC JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP2 PUSH1 0x20 PUSH2 0xDA1 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xD50 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0xDB9 PUSH2 0x89F JUMP JUMPDEST SWAP3 PUSH2 0xDC3 DUP3 PUSH2 0x6C0 JUMP JUMPDEST DUP5 MSTORE PUSH2 0xDD1 PUSH1 0x20 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xDF7 SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xE12 PUSH1 0x80 DUP5 ADD PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xE2D SWAP3 ADD PUSH2 0xD86 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xE61 SWAP2 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP4 PUSH2 0xE79 SWAP2 PUSH1 0x4 ADD PUSH2 0xDA4 JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP2 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0xEC7 JUMPI JUMP JUMPDEST PUSH2 0xE90 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xEEB JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x60 PUSH1 0x1 SWAP3 DUP8 MLOAD DUP1 MLOAD PUSH2 0xF02 DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP3 MSTORE DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0xEDD JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xF4C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xF3E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xE0 DUP4 ADD SWAP3 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP5 PUSH1 0xE0 PUSH1 0x20 DUP5 ADD MSTORE DUP6 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH2 0x100 DUP5 ADD SWAP7 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1002 JUMPI POP POP POP POP PUSH1 0xC0 PUSH2 0xFF1 PUSH2 0xFDF PUSH2 0xFCD PUSH2 0xFBB PUSH2 0xDA1 SWAP8 SWAP9 PUSH1 0x40 DUP9 ADD MLOAD DUP8 DUP3 SUB PUSH1 0x40 DUP10 ADD MSTORE PUSH2 0xECC JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD DUP7 DUP3 SUB PUSH1 0x60 DUP9 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 MSTORE SWAP7 DUP2 ADD SWAP7 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xF8B JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x10E9 PUSH2 0x1105 PUSH2 0x1118 PUSH2 0x10D5 PUSH2 0x105E CALLDATASIZE PUSH2 0xE34 JUMP JUMPDEST SWAP3 SWAP2 SWAP5 SWAP1 PUSH2 0x106A PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x10F7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x10A3 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x1084 DUP7 DUP4 PUSH2 0x54C6 JUMP JUMPDEST SUB SWAP8 PUSH2 0x1098 PUSH1 0x1F NOT SWAP10 DUP11 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x86F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 DUP5 DUP11 PUSH2 0x6A3F JUMP JUMPDEST SWAP8 SWAP3 SWAP4 SWAP2 SWAP6 SWAP1 SWAP9 PUSH2 0x10CC PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x10C0 PUSH1 0x20 DUP3 ADD SWAP6 DUP7 PUSH2 0x54C6 JUMP JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x86F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 EQ PUSH2 0x5536 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP9 PUSH1 0xA0 DUP11 MSTORE PUSH1 0xA0 DUP11 ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x20 DUP11 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0x40 DUP9 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1163 PUSH2 0x1152 PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x6FAF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1188 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x11C8 SWAP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x82 SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x11F5 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x120B PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH2 0x7032 JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x123A DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0x125E PUSH2 0x7A2 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP1 PUSH2 0x7096 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x127C DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xDA1 DUP2 PUSH2 0xA81 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1118 PUSH2 0x12C5 PUSH2 0x12AE CALLDATASIZE PUSH2 0x1264 JUMP JUMPDEST SWAP1 PUSH2 0x12B7 PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x12C0 PUSH2 0x5478 JUMP JUMPDEST PUSH2 0x70F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x3 NOT PUSH1 0x40 DUP2 CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x12F7 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x1304 DUP4 PUSH2 0xA96 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD SWAP3 PUSH1 0x1 SHL AND SWAP2 AND OR OR PUSH1 0x7 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1399 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x13A4 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x13AC PUSH2 0x780D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP3 DUP3 SWAP1 PUSH1 0x24 SWAP1 DUP3 SWAP1 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1118 SWAP5 PUSH2 0x1438 SWAP3 PUSH0 SWAP2 PUSH2 0x146E JUMPI JUMPDEST POP DUP1 PUSH2 0x1432 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x55E5 JUMP JUMPDEST SWAP2 DUP1 DUP4 GT PUSH2 0x1464 JUMPI JUMPDEST POP DUP2 PUSH2 0x144C SWAP2 PUSH2 0x785E JUMP JUMPDEST PUSH2 0x1454 PUSH2 0x77E8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SWAP2 POP PUSH2 0x144C PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1490 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI JUMPDEST PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x559B JUMP JUMPDEST PUSH0 PUSH2 0x1415 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x147E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x14EB PUSH1 0x4 CALLDATALOAD PUSH2 0x14BD DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x14C9 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x14D6 DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x14E5 PUSH1 0x64 CALLDATALOAD DUP1 SWAP5 DUP4 CALLER PUSH2 0x789C JUMP JUMPDEST CALLER PUSH2 0x7A79 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0x150B PUSH2 0x892 JUMP JUMPDEST SWAP3 PUSH2 0x1515 DUP3 PUSH2 0xA8B JUMP JUMPDEST DUP5 MSTORE PUSH2 0x1523 PUSH1 0x20 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x1534 PUSH1 0x40 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x1545 PUSH1 0x60 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xD20 SWAP3 ADD PUSH2 0xD86 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0x15A9 SWAP2 PUSH1 0x4 ADD PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP5 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH2 0x15E0 DUP2 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP2 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE SWAP3 PUSH1 0xA4 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP2 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP1 PUSH2 0x161E DUP3 PUSH2 0xEBD JUMP JUMPDEST MSTORE JUMP JUMPDEST PUSH2 0xDA1 SWAP2 DUP2 MLOAD PUSH2 0x1630 DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x1657 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA0 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1118 PUSH2 0x16C3 PUSH2 0x16B4 CALLDATASIZE PUSH2 0x157C JUMP JUMPDEST SWAP2 PUSH2 0x16BD PUSH2 0x55F2 JUMP JUMPDEST POP PUSH2 0x7C45 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x16F4 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x1873 JUMPI JUMPDEST POP DUP4 LT PUSH2 0x184B JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0x182E JUMPI JUMPDEST POP POP DUP3 GT PUSH2 0x1806 JUMPI DUP2 DUP2 PUSH2 0x17F0 PUSH2 0x17D9 PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP6 PUSH2 0x17D3 PUSH2 0x1801 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x8F8A JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 STOP JUMPDEST PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1844 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1784 JUMP JUMPDEST PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x188A SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x1741 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x18C7 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x18E9 DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1901 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP9 DUP3 PUSH2 0x1890 JUMP JUMPDEST DUP1 PUSH1 0x1 SWAP2 PUSH0 MSTORE DUP4 DUP4 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH0 KECCAK256 SLOAD AND PUSH2 0x192A DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x18EC JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x194E DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x196F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0x19EA PUSH2 0x198D PUSH2 0x19B2 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x19B9 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP3 PUSH2 0x569A JUMP JUMPDEST SUB DUP6 PUSH2 0x86F JUMP JUMPDEST PUSH2 0x19C6 DUP5 MLOAD DUP5 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST PUSH2 0x19D3 DUP5 MLOAD DUP7 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x7A2 JUMPI DUP1 PUSH2 0x1A18 PUSH2 0x1A06 PUSH1 0x1 SWAP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x7032 JUMP JUMPDEST PUSH2 0x1A2A DUP3 DUP7 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x19ED JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x1A42 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 PUSH2 0x7CAE JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1A9F DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1ABF SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH2 0x1AC8 PUSH2 0x6818 JUMP JUMPDEST PUSH2 0x1AD0 PUSH2 0x6884 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x1B0A DUP3 PUSH32 0x0 AND SWAP2 PUSH2 0x58B3 JUMP JUMPDEST SWAP2 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH0 DUP1 SWAP5 PUSH2 0x1B62 SWAP7 PUSH2 0x1BA1 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0xED05BEAF00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0x4 DUP7 ADD MSTORE PUSH2 0x100 PUSH1 0x24 DUP7 ADD MSTORE PUSH2 0x104 DUP6 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP6 ADD MSTORE DUP5 PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1BB1 JUMPI STOP JUMPDEST DUP1 PUSH2 0x1BBE PUSH2 0x7A2 SWAP3 PUSH2 0x83F JUMP JUMPDEST DUP1 PUSH2 0x1338 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x6BC JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0x1BE6 PUSH2 0x89F JUMP JUMPDEST SWAP3 PUSH2 0x1BF0 DUP3 PUSH2 0x6C0 JUMP JUMPDEST DUP5 MSTORE PUSH2 0x1BFE PUSH1 0x20 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0x1C2F SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xE12 PUSH1 0x80 DUP5 ADD PUSH2 0x1BC4 JUMP JUMPDEST SWAP2 PUSH2 0x1C5D SWAP1 PUSH2 0xDA1 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1C9C SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x1CA4 PUSH2 0x780D JUMP JUMPDEST PUSH2 0x1CB7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH2 0x7E19 JUMP JUMPDEST PUSH2 0x1CD0 PUSH2 0x1CCB DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7E66 JUMP JUMPDEST PUSH2 0x1CE9 PUSH2 0x1CE4 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x735B JUMP JUMPDEST PUSH2 0x1D3C PUSH1 0x20 DUP3 ADD MLOAD MLOAD PUSH2 0x1D03 PUSH1 0x60 DUP6 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x7E72 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP5 ADD SWAP1 PUSH2 0x1D1D DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP8 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0x7EA1 JUMP JUMPDEST SWAP3 PUSH2 0x1D2D DUP7 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x10 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1DC3 JUMPI JUMPDEST POP POP POP DUP4 DUP4 PUSH2 0x8219 JUMP JUMPDEST SWAP3 SWAP4 SWAP1 SWAP2 SWAP5 DUP6 PUSH2 0x1D51 DUP4 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x11 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1D66 JUMPI JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP8 DUP11 DUP11 DUP5 PUSH2 0x1C40 JUMP JUMPDEST PUSH2 0x1118 SWAP5 SWAP7 POP SWAP1 DUP6 PUSH2 0x1DB9 SWAP5 SWAP4 SWAP3 PUSH2 0x1DAF PUSH2 0x1DA2 PUSH2 0x1D8B DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0x88FB JUMP JUMPDEST SWAP3 SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1D56 JUMP JUMPDEST PUSH2 0x1DEB PUSH2 0x1E13 SWAP5 DUP8 DUP10 PUSH2 0x1DE3 PUSH2 0x1DA2 PUSH2 0x1D8B DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x7F78 JUMP JUMPDEST PUSH2 0x1E08 PUSH2 0x1E02 PUSH2 0x19D3 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x8052 JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x7EA1 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x1D32 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E3A JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP5 DUP3 ADD MLOAD PUSH2 0x1E61 DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP4 DUP7 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x1E2C JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1ED7 PUSH2 0x1ED2 PUSH2 0x1118 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH2 0x58B3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP4 SWAP5 PUSH1 0xC0 SWAP2 PUSH2 0xDA1 SWAP9 SWAP7 PUSH2 0x1FAA SWAP6 PUSH2 0x1F81 SWAP6 PUSH2 0x140 SWAP4 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP1 PUSH1 0x80 DUP8 ADD MSTORE DUP2 MLOAD SWAP1 PUSH2 0x1F24 DUP3 PUSH2 0xEBD JUMP JUMPDEST DUP7 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x160 DUP8 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 AND PUSH2 0x180 DUP8 ADD MSTORE PUSH1 0x60 DUP3 ADD MLOAD AND PUSH2 0x1A0 DUP7 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x1C0 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x1E0 DUP7 ADD MSTORE ADD MLOAD PUSH1 0xE0 PUSH2 0x200 DUP6 ADD MSTORE PUSH2 0x220 DUP5 ADD SWAP1 PUSH2 0x101F JUMP JUMPDEST DUP5 MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD PUSH2 0x100 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x120 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0xC0 PUSH0 PUSH2 0x1FC9 CALLDATASIZE PUSH2 0x157C JUMP JUMPDEST SWAP1 PUSH1 0x40 SWAP3 DUP4 MLOAD PUSH2 0x1FD8 DUP2 PUSH2 0x853 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP7 DUP3 DUP3 ADD MSTORE DUP7 DUP7 DUP3 ADD MSTORE PUSH1 0x60 SWAP8 DUP2 DUP9 DUP11 DUP1 SWAP5 ADD MSTORE DUP9 PUSH1 0x80 DUP3 ADD MSTORE DUP9 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE PUSH2 0x2008 PUSH2 0x5769 JUMP JUMPDEST POP PUSH2 0x2011 PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x201D DUP5 DUP5 DUP5 PUSH2 0x7C45 JUMP JUMPDEST SWAP5 PUSH2 0x2026 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x202E PUSH2 0x5980 JUMP JUMPDEST SWAP2 DUP4 MLOAD PUSH2 0x203A DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2043 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x23F4 JUMPI JUMPDEST DUP1 DUP8 ADD PUSH2 0x2056 DUP2 MLOAD PUSH2 0xAD93 JUMP JUMPDEST DUP2 PUSH2 0x20B6 DUP2 DUP8 ADD SWAP10 PUSH2 0x2081 PUSH2 0x2075 PUSH2 0x2075 DUP14 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP7 MLOAD SWAP13 DUP14 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x168F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP9 DUP10 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP10 PUSH2 0x23D5 JUMPI JUMPDEST POP DUP9 PUSH2 0x20D3 DUP2 PUSH2 0xAD93 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x20DE DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x20E7 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x235B JUMPI POP DUP3 DUP7 ADD MLOAD SWAP1 MSTORE PUSH2 0x212B PUSH1 0xC0 DUP8 ADD MLOAD PUSH2 0x2124 PUSH2 0x211E PUSH2 0x210F DUP6 DUP11 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP12 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xBE9E JUMP JUMPDEST SWAP1 DUP11 PUSH2 0xB663 JUMP JUMPDEST SWAP7 PUSH1 0x80 DUP6 ADD MLOAD SWAP4 DUP9 SWAP5 SWAP11 PUSH1 0xA0 DUP8 ADD MLOAD DUP1 DUP12 LT PUSH2 0x2328 JUMPI POP SWAP1 DUP6 SWAP2 JUMPDEST DUP13 DUP7 DUP10 ADD SWAP5 DUP2 DUP7 MLOAD PUSH2 0x215E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2168 SWAP2 PUSH2 0x9606 JUMP JUMPDEST DUP3 DUP11 ADD SWAP7 DUP6 DUP9 MLOAD PUSH2 0x217F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2189 SWAP2 PUSH2 0x785E JUMP JUMPDEST DUP12 DUP14 DUP7 MLOAD DUP5 MLOAD PUSH2 0x219F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MLOAD SWAP2 PUSH2 0x21B7 SWAP4 DUP6 PUSH2 0xAE28 JUMP JUMPDEST SWAP4 SWAP1 DUP13 DUP3 DUP11 ADD SWAP10 ADD SWAP5 DUP6 MSTORE DUP9 MSTORE DUP3 MLOAD DUP8 DUP4 ADD SWAP5 DUP8 DUP3 DUP8 MLOAD SWAP1 PUSH2 0x21D8 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x21E3 SWAP2 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x21EE SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x21F8 SWAP2 DUP5 PUSH2 0xB55F JUMP JUMPDEST DUP3 ADD SWAP3 DUP4 MLOAD DUP10 DUP2 DUP4 MLOAD SWAP1 PUSH2 0x220B SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2216 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x2220 SWAP2 DUP5 PUSH2 0xB55F JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 DUP2 MLOAD DUP2 MLOAD PUSH2 0x2246 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0x80 ADD SWAP3 DUP4 MLOAD DUP3 MLOAD PUSH2 0x2259 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x2263 SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x2277 SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x2284 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x2292 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x229C SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x22AF SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP5 MLOAD SWAP6 MLOAD SWAP2 DUP11 ADD MLOAD SWAP3 MLOAD DUP8 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 PUSH2 0x231A PUSH2 0x77E8 JUMP JUMPDEST MLOAD SWAP7 DUP8 SWAP7 PUSH2 0x1118 SWAP7 DUP9 PUSH2 0x1EEB JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP12 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 REVERT JUMPDEST SWAP1 POP PUSH2 0x238A SWAP2 SWAP9 POP PUSH2 0x2381 DUP11 DUP8 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0xBE7E JUMP JUMPDEST SWAP1 DUP2 DUP6 MSTORE PUSH2 0x6A07 JUMP JUMPDEST SWAP7 PUSH2 0x23B7 PUSH2 0x239E PUSH1 0xC0 DUP9 ADD MLOAD DUP8 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x23AF PUSH1 0xA0 DUP10 ADD MLOAD DUP9 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 DUP11 PUSH2 0xB54B JUMP JUMPDEST SWAP7 PUSH1 0x80 DUP6 ADD MLOAD SWAP4 DUP9 SWAP11 PUSH1 0xA0 DUP8 ADD MLOAD DUP1 DUP12 GT PUSH2 0x2328 JUMPI POP SWAP1 DUP6 SWAP2 PUSH2 0x2146 JUMP JUMPDEST PUSH2 0x23ED SWAP2 SWAP10 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x20C8 JUMP JUMPDEST DUP1 DUP8 ADD PUSH2 0x2413 PUSH2 0x2409 DUP3 MLOAD DUP13 DUP10 ADD MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST DUP1 DUP7 MSTORE DUP3 MLOAD PUSH2 0x55E5 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x2049 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x243C DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0xB DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x8EB8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0x2483 SWAP2 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP4 PUSH2 0xE79 SWAP2 PUSH1 0x4 ADD PUSH2 0x1BD1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x24BA PUSH2 0x24AC CALLDATASIZE PUSH2 0x2456 JUMP JUMPDEST SWAP2 PUSH2 0x24B5 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x8219 JUMP JUMPDEST POP POP POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x2508 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0x11C8 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x8F8A JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x2551 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x14F6 JUMP JUMPDEST PUSH2 0x2559 PUSH2 0x780D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2571 DUP2 DUP4 MLOAD AND PUSH2 0x7E19 JUMP JUMPDEST PUSH2 0x2585 PUSH2 0x1CCB DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MLOAD ISZERO PUSH2 0x278E JUMPI PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x25B5 PUSH2 0x2075 PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 AND EQ PUSH2 0x2766 JUMPI PUSH2 0x25D0 PUSH2 0x1CE4 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x25DB DUP4 DUP3 PUSH2 0x8FFD JUMP JUMPDEST SWAP1 PUSH2 0x25E7 DUP5 DUP4 DUP4 PUSH2 0x7C45 JUMP JUMPDEST DUP5 MLOAD PUSH1 0xC SHR PUSH1 0x1 AND PUSH2 0x26EB JUMPI JUMPDEST DUP5 MLOAD PUSH2 0x260E SWAP2 SWAP1 PUSH1 0xB SHR PUSH1 0x1 AND PUSH2 0x26AA JUMPI JUMPDEST DUP6 DUP5 DUP5 PUSH2 0x8AAD JUMP JUMPDEST SWAP7 SWAP2 SWAP7 SWAP5 SWAP1 SWAP7 DUP4 SWAP7 PUSH2 0x2625 DUP5 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xD SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x2675 JUMPI JUMPDEST POP POP POP POP POP MLOAD PUSH2 0x2639 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2642 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2669 JUMPI POP PUSH2 0x1118 DUP2 JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 POP PUSH2 0x1118 DUP2 SWAP3 PUSH2 0x264C JUMP JUMPDEST DUP6 SWAP8 POP SWAP1 PUSH2 0x2694 PUSH2 0x1DA2 PUSH2 0x1D8B PUSH2 0x269F SWAP9 SWAP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD SWAP2 CALLER SWAP3 PUSH2 0x937D JUMP JUMPDEST SWAP2 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x262A JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26E4 PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MLOAD PUSH2 0x26DD PUSH2 0x1DA2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP6 PUSH2 0x91D2 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x2606 JUMP JUMPDEST PUSH2 0x2724 SWAP1 PUSH2 0x2700 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x271E PUSH2 0x1DA2 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x9062 JUMP JUMPDEST PUSH2 0x2741 PUSH2 0x273B PUSH2 0x19D3 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP6 PUSH2 0x8052 JUMP JUMPDEST PUSH2 0x274C DUP3 DUP6 DUP4 PUSH2 0x911B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x260E PUSH2 0x275F DUP6 DUP5 DUP5 PUSH2 0x7C45 JUMP JUMPDEST SWAP1 POP PUSH2 0x25F4 JUMP JUMPDEST PUSH32 0xA54B181D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x57A456B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD DUP1 PUSH2 0x27D1 JUMPI STOP JUMPDEST PUSH2 0x7A2 SWAP1 PUSH2 0xAD93 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x27F7 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x27FF PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1118 SWAP2 PUSH0 SWAP2 PUSH2 0x285E JUMPI JUMPDEST POP PUSH2 0x1454 PUSH2 0x77E8 JUMP JUMPDEST PUSH2 0x2877 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x2855 JUMP JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x2896 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP2 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x28C4 CALLDATASIZE PUSH2 0x287D JUMP JUMPDEST SWAP1 PUSH2 0x28CF DUP3 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP2 PUSH2 0x28D8 PUSH2 0x5980 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2923 JUMPI DUP1 PUSH2 0x291D PUSH2 0x2904 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x290E DUP4 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD PUSH2 0x28DB JUMP JUMPDEST DUP5 DUP3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH2 0x2958 PUSH2 0x6884 JUMP JUMPDEST SWAP4 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH0 DUP1 SWAP5 PUSH2 0x1BA1 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xD396A66600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x599E JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x29B4 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xDA1 DUP2 PUSH2 0xA96 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x29D7 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x2A27 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xDA1 DUP2 PUSH2 0x6AB JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2A82 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2A60 CALLDATASIZE PUSH2 0x2A0F JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATALOAD PUSH2 0x2AC1 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH2 0x2ACF DUP2 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH2 0x2AE0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x2B06 CALLDATASIZE PUSH2 0x2A8C JUMP JUMPDEST PUSH2 0x2B0E PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP2 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP1 MLOAD PUSH2 0x2B42 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x2B55 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x64 DUP5 ADD MSTORE ADD MLOAD PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x60 DUP2 PUSH1 0xA4 DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x2BA6 JUMPI JUMPDEST POP PUSH2 0x1118 SWAP1 PUSH2 0x264C PUSH2 0x77E8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1118 SWAP3 POP PUSH2 0x2BCF SWAP2 POP PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x2BD6 JUMPI JUMPDEST PUSH2 0x2BC7 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5A2B JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x2B99 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2BBD JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x2C02 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x2C3C DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x2C5E DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x2C76 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP9 DUP3 PUSH2 0x1890 JUMP JUMPDEST DUP1 PUSH1 0x1 SWAP2 PUSH0 MSTORE DUP4 DUP4 MSTORE PUSH2 0x2C8C DUP6 PUSH0 KECCAK256 SLOAD PUSH1 0x80 SHR SWAP1 JUMP JUMPDEST PUSH2 0x2C96 DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x2C61 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2CBD DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x2CC8 PUSH1 0x24 CALLDATALOAD PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH2 0xABF6 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x2D2C PUSH1 0x4 CALLDATALOAD PUSH2 0x2CF0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x2D44 CALLDATASIZE PUSH2 0x2A8C JUMP JUMPDEST PUSH2 0x2D4C PUSH2 0x780D JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x2 SHR PUSH1 0x1 AND PUSH2 0x3062 JUMPI PUSH1 0x40 SWAP1 DUP2 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 MLOAD AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 DUP4 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x3036 JUMPI PUSH1 0x4 SWAP5 POP PUSH2 0x2D8D PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2DA3 PUSH2 0x2075 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP5 MLOAD SWAP7 DUP8 DUP1 SWAP3 PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH1 0x80 SWAP6 PUSH0 SWAP2 PUSH2 0x3007 JUMPI JUMPDEST POP AND PUSH2 0x2DFA DUP2 PUSH2 0x2DF5 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x9612 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2E16 PUSH1 0x60 DUP7 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x9668 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x2E26 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2E2F DUP2 PUSH2 0xEBD JUMP JUMPDEST SUB PUSH2 0x2F9C JUMPI PUSH2 0x2E57 SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x2E44 DUP4 PUSH2 0xEBD JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0xA353 JUMP JUMPDEST PUSH32 0xEEB740C90BF2B18C9532EB7D473137767036D893DFF3E009F32718F821B2A4C0 DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x2EB4 PUSH2 0x2E97 PUSH2 0x2075 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP10 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 JUMPDEST DUP1 MLOAD PUSH2 0x2EC3 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2ECC DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2F4D JUMPI ADD MLOAD DUP1 DUP5 LT PUSH2 0x2F1D JUMPI POP MLOAD PUSH2 0x1118 SWAP2 DUP4 SWAP2 PUSH2 0x2EFA SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9668 JUMP JUMPDEST PUSH2 0x9668 JUMP JUMPDEST PUSH2 0x2F02 PUSH2 0x77E8 JUMP JUMPDEST MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST ADD MLOAD DUP1 DUP6 GT PUSH2 0x2F6C JUMPI POP SWAP2 PUSH2 0x1118 SWAP2 PUSH2 0x2EFA PUSH2 0x2EF5 SWAP5 DUP7 SWAP6 DUP7 SWAP2 PUSH2 0x28F7 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP6 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x2FBF SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x2FAC DUP4 PUSH2 0xEBD JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0x9BAF JUMP JUMPDEST PUSH32 0x3771D13C67011E31E12031C54BB59B0BF544A80B81D280A3711E172AA8B7F47B DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x2FFF PUSH2 0x2E97 PUSH2 0x2075 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2EB8 JUMP JUMPDEST PUSH2 0x3029 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI JUMPDEST PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5A46 JUMP JUMPDEST PUSH0 PUSH2 0x2DDE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3017 JUMP JUMPDEST DUP5 PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x30DD PUSH2 0x30FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x30A6 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP5 SWAP2 SWAP3 SWAP1 SWAP3 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH2 0x30D3 DUP4 PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR SWAP1 PUSH2 0x7032 JUMP JUMPDEST SWAP3 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x3113 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 PUSH2 0xA678 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0x6BC JUMPI PUSH2 0x1118 SWAP2 PUSH1 0x24 PUSH2 0x3181 SWAP3 ADD PUSH2 0x5A5B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3119 JUMP JUMPDEST PUSH2 0x31A3 PUSH2 0xDA1 SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x31E7 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xDA4 JUMP JUMPDEST PUSH2 0x31EF PUSH2 0x780D JUMP JUMPDEST PUSH2 0x3202 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH2 0x7E19 JUMP JUMPDEST PUSH2 0x3216 PUSH2 0x1CCB DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3273 PUSH32 0x0 TLOAD PUSH2 0x324C DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0xA7D7 JUMP JUMPDEST PUSH2 0x328C PUSH2 0x3287 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7587 JUMP JUMPDEST PUSH2 0x32DF PUSH1 0x20 DUP3 ADD MLOAD MLOAD PUSH2 0x32A6 PUSH1 0x40 DUP6 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x7E72 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP5 ADD SWAP1 PUSH2 0x32C0 DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP8 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0xA7F0 JUMP JUMPDEST SWAP3 PUSH2 0x32D0 DUP7 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xE SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x3343 JUMPI JUMPDEST POP POP POP DUP4 DUP4 PUSH2 0x6A3F JUMP JUMPDEST SWAP2 SWAP1 SWAP5 SWAP3 SWAP4 DUP5 SWAP4 DUP7 PUSH2 0x32F6 DUP4 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xF SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x330C JUMPI JUMPDEST DUP6 PUSH2 0x1118 DUP7 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x318D JUMP JUMPDEST PUSH2 0x1118 SWAP6 POP PUSH2 0x3337 SWAP5 SWAP7 PUSH2 0x332D PUSH2 0x1DA2 PUSH2 0x1D8B DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0xA9FC JUMP JUMPDEST SWAP1 POP DUP2 PUSH0 DUP1 DUP1 DUP7 PUSH2 0x32FB JUMP JUMPDEST PUSH2 0x336A PUSH2 0x3392 SWAP5 DUP8 DUP10 PUSH2 0x3363 PUSH2 0x1DA2 PUSH2 0x1D8B DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER PUSH2 0xA8B7 JUMP JUMPDEST PUSH2 0x3387 PUSH2 0x3381 PUSH2 0x19D3 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x80F6 JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0xA7F0 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x32D5 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x33BF DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x340C DUP3 PUSH2 0x823 JUMP JUMPDEST DUP2 PUSH1 0x24 CALLDATALOAD PUSH2 0x3419 DUP2 PUSH2 0xA96 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x44 CALLDATALOAD PUSH2 0x3427 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH2 0x3438 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH2 0x344C DUP4 PUSH2 0xA96 JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH5 0xFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1C0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x3483 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x1A0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 SWAP1 PUSH2 0x34BA PUSH2 0x8BF JUMP JUMPDEST SWAP1 PUSH2 0x34C4 CALLDATASIZE PUSH2 0x33D5 JUMP JUMPDEST DUP3 MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x34E6 PUSH2 0x3450 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x34F3 PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3500 PUSH2 0xAA0 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x350D PUSH2 0xAAE JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x351A PUSH2 0xABC JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3528 PUSH2 0xACA JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5B28 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3549 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD DUP3 SLOAD AND SWAP1 PUSH1 0x1 SHL OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0x0 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x35F0 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x3609 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH2 0x3613 DUP3 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3698 JUMPI DUP1 PUSH2 0x3632 PUSH2 0x2904 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP9 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x365D PUSH2 0x3642 PUSH2 0x28F7 DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST DUP5 PUSH2 0x364D DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x366D PUSH2 0x2075 PUSH2 0x28F7 DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x368F JUMPI PUSH2 0x3689 PUSH0 JUMPDEST PUSH1 0x20 PUSH2 0x3682 DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD PUSH2 0x5DB4 JUMP JUMPDEST ADD PUSH2 0x3616 JUMP JUMPDEST PUSH2 0x3689 DUP3 PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 DUP1 PUSH2 0x36CE DUP10 PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1118 SWAP2 PUSH0 SWAP2 PUSH2 0x371A JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E8A JUMP JUMPDEST PUSH2 0x3736 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x372E DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x57DB JUMP JUMPDEST DUP3 PUSH2 0x370D JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x3756 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x3764 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x378D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x379B DUP2 PUSH2 0xA96 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x377F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x37D8 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 DUP2 DUP4 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x37FD DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x380B PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x24 PUSH1 0x20 DUP8 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x387F JUMPI POP POP POP POP PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x384E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH2 0x1118 SWAP4 PUSH2 0x386D PUSH2 0x3873 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x373C JUMP JUMPDEST SWAP3 PUSH2 0x5DC7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E8A JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x388D DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x382B JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x38B8 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x7E19 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x38DA DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND SWAP1 PUSH1 0x1 SHL OR PUSH1 0x7 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH0 PUSH32 0x0 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x30DD PUSH2 0x30FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x395C CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP5 SWAP2 SWAP3 SWAP1 SWAP3 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x399A DUP5 PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH2 0x7032 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH32 0x0 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x39F7 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x3A0C DUP4 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x3A66 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x2CC8 CALLDATASIZE PUSH2 0x3A4E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3AD0 CALLDATASIZE PUSH2 0x287D JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x81E JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0x81E JUMPI DUP2 SLOAD DUP4 DUP4 SSTORE DUP1 DUP5 LT PUSH2 0x3B4F JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x3B21 SWAP2 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x3B2D JUMPI STOP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH2 0x3B42 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 ADD SWAP4 DUP2 DUP8 ADD SSTORE ADD PUSH2 0x3B24 JUMP JUMPDEST DUP3 PUSH0 MSTORE DUP4 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x3B6A JUMPI POP PUSH2 0x3B0F JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3B5D JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x3B83 CALLDATASIZE PUSH2 0x287D JUMP JUMPDEST SWAP1 PUSH2 0x3B8C PUSH2 0x6818 JUMP JUMPDEST PUSH2 0x3B94 PUSH2 0x5980 JUMP JUMPDEST SWAP1 PUSH2 0x3BC8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 PUSH2 0x58B3 JUMP JUMPDEST SWAP2 PUSH0 SWAP4 PUSH2 0x3BD3 PUSH2 0x6884 JUMP JUMPDEST SWAP4 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH0 DUP1 SWAP5 PUSH2 0x3C17 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xD396A66600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x599E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x3C29 JUMPI POP DUP1 RETURN JUMPDEST PUSH2 0x7A2 SWAP2 POP PUSH2 0x83F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x3C58 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND ISZERO PUSH2 0x3C72 JUMPI STOP JUMPDEST PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x3D1D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3CFB CALLDATASIZE PUSH2 0x2A0F JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x3D4E DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0x11C8 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xABB6 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x3D74 CALLDATASIZE PUSH2 0x157C JUMP JUMPDEST PUSH2 0x3D7F SWAP3 SWAP2 SWAP3 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x3D8A DUP2 DUP5 DUP5 PUSH2 0x7C45 JUMP JUMPDEST SWAP3 PUSH2 0x3D93 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x3D9B PUSH2 0x5980 JUMP JUMPDEST SWAP1 DUP4 MLOAD PUSH2 0x3DA7 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x3DB0 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x413A JUMPI JUMPDEST PUSH1 0x20 SWAP5 PUSH0 DUP7 DUP3 ADD PUSH2 0x3DC7 DUP2 MLOAD PUSH2 0xAD93 JUMP JUMPDEST DUP8 PUSH2 0x3E1C DUP2 DUP10 ADD SWAP5 PUSH2 0x3DE6 PUSH2 0x2075 PUSH2 0x2075 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x168F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0x411B JUMPI JUMPDEST POP PUSH2 0x3E38 DUP3 PUSH2 0xAD93 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x3E43 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x3E4C DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x40A7 JUMPI SWAP1 PUSH2 0x3E8B SWAP2 PUSH1 0x40 DUP6 ADD MLOAD SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x3E85 PUSH2 0x211E PUSH2 0x3E76 DUP12 DUP9 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP11 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP2 PUSH2 0xB663 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP5 DUP3 SWAP6 SWAP3 PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 DUP2 DUP2 LT PUSH2 0x4079 JUMPI POP POP JUMPDEST PUSH1 0x40 DUP8 ADD SWAP7 DUP4 DUP9 MLOAD PUSH2 0x3EBD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3EC7 SWAP2 PUSH2 0x9606 JUMP JUMPDEST PUSH1 0x60 ADD SWAP8 DUP7 DUP10 MLOAD PUSH2 0x3EDE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3EE8 SWAP2 PUSH2 0x785E JUMP JUMPDEST DUP6 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD SWAP2 PUSH2 0x3F0D SWAP4 DUP7 PUSH2 0xAE28 JUMP JUMPDEST SWAP2 SWAP1 DUP2 DUP9 ADD SWAP8 PUSH1 0x40 ADD SWAP3 DUP4 MSTORE DUP8 MSTORE DUP6 MLOAD PUSH1 0x60 DUP5 ADD SWAP3 DUP7 DUP3 DUP6 MLOAD SWAP1 PUSH2 0x3F30 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3F3B SWAP2 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x3F46 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x3F50 SWAP2 DUP6 PUSH2 0xB55F JUMP JUMPDEST DUP6 ADD SWAP2 DUP3 MLOAD DUP9 DUP2 DUP5 MLOAD SWAP1 PUSH2 0x3F63 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3F6E SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x3F78 SWAP2 DUP4 PUSH2 0xB55F JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 DUP1 MLOAD DUP8 MLOAD PUSH2 0x3F9E SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x80 ADD SWAP2 DUP3 MLOAD DUP9 MLOAD PUSH2 0x3FB1 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x3FBB SWAP2 PUSH2 0x7032 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x3FCF SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x3FDC SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x3FEA SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x3FF4 SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x4007 SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP5 MLOAD SWAP6 MLOAD PUSH1 0x60 SWAP3 DUP4 ADD MLOAD SWAP4 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 DUP2 AND SWAP3 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 PUSH2 0x4071 PUSH2 0x77E8 JUMP JUMPDEST PUSH2 0x7A2 PUSH2 0x77E8 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH2 0x40D7 PUSH2 0x40FF SWAP2 PUSH2 0x40CE PUSH1 0x60 DUP7 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0xBE7E JUMP JUMPDEST SWAP1 DUP2 DUP8 MSTORE PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x40E7 PUSH1 0xC0 DUP8 ADD MLOAD DUP6 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x40F8 PUSH1 0xA0 DUP9 ADD MLOAD DUP7 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xB54B JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP5 DUP3 PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 DUP2 DUP2 GT PUSH2 0x4079 JUMPI POP POP PUSH2 0x3EA5 JUMP JUMPDEST PUSH2 0x4133 SWAP2 SWAP3 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x3E2E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD PUSH2 0x415B PUSH2 0x4151 DUP3 MLOAD PUSH1 0x60 DUP6 ADD MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST DUP1 DUP6 MSTORE DUP3 MLOAD PUSH2 0x55E5 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x3DB6 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x4187 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0x11C8 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH5 0x174876E800 PUSH1 0x24 CALLDATALOAD DIV SWAP1 PUSH2 0xB692 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x41BF PUSH2 0x7793 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD ISZERO PUSH2 0x6BC JUMPI PUSH0 SWAP1 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x420E DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0xB DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xACB9 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x425C PUSH2 0x1118 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST PUSH2 0x42F5 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH2 0x426E DUP2 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH2 0x427A PUSH2 0x5478 JUMP JUMPDEST POP DUP3 PUSH2 0x428A DUP4 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x4294 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x4302 JUMPI PUSH1 0x2 SWAP2 JUMPDEST PUSH2 0x42EE PUSH1 0xC0 DUP7 ADD SWAP3 PUSH2 0x42E6 DUP2 PUSH2 0x42B3 DUP2 DUP8 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP6 PUSH2 0x42D1 PUSH1 0xA0 DUP12 ADD SWAP8 PUSH2 0x42C8 DUP5 DUP11 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 DUP9 DUP12 PUSH2 0xC52A JUMP JUMPDEST PUSH2 0x42DF DUP4 PUSH1 0x80 DUP14 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0xC52A JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP2 PUSH2 0x429C JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x432A DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x433F DUP4 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4396 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x43A3 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x43BF CALLDATASIZE PUSH2 0x437E JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xAD4E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x43D6 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x43E0 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x43E8 PUSH2 0x780D JUMP JUMPDEST PUSH2 0x43FA PUSH2 0x43F4 DUP4 PUSH2 0xB8A2 JUMP JUMPDEST DUP3 PUSH2 0xABF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP4 DUP6 SUB SWAP5 DUP6 GT PUSH2 0x449E JUMPI SWAP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 MSTORE PUSH2 0x4479 SWAP2 SWAP1 PUSH2 0x4474 PUSH1 0x64 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH2 0xC22F JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x55AA JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x44C3 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x785E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0xAD93 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x4533 CALLDATASIZE PUSH2 0x437E JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xADE3 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x780D JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x4576 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x5F52 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 DUP1 CALLDATALOAD PUSH2 0x45E0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4602 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x461B SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB4F JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x7A2 JUMPI DUP1 PUSH2 0x463F PUSH1 0x1 SWAP3 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP4 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP7 DUP3 MSTORE PUSH1 0x40 SWAP1 PUSH2 0x4675 DUP11 DUP9 PUSH2 0x465E DUP8 DUP7 PUSH0 KECCAK256 SWAP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 PUSH1 0xFF PUSH22 0xFF000000000000000000000000000000000000000000 DUP5 MLOAD SWAP6 PUSH2 0x46BC DUP8 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x46C5 DUP8 PUSH2 0xEBD JUMP JUMPDEST PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP9 SLOAD SWAP6 DUP8 ADD MLOAD PUSH1 0x8 SHL AND SWAP6 ADD MLOAD ISZERO ISZERO PUSH1 0xA8 SHL AND SWAP5 AND SWAP2 AND OR OR OR SWAP1 SSTORE ADD PUSH2 0x4629 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x471F DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x60F9 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x475C PUSH2 0x4782 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH2 0x4768 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH2 0x4775 DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xAE28 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x14EB PUSH2 0x47A5 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 CALLER PUSH2 0x7A79 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x180 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x47CA DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x160 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 SWAP1 PUSH2 0x4801 PUSH2 0x8E0 JUMP JUMPDEST SWAP1 PUSH2 0x480A PUSH2 0xAD8 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x4814 PUSH2 0xAE5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4821 PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x482E PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x483B PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4848 PUSH2 0xB19 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x4855 PUSH2 0xB26 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x4862 PUSH2 0xB33 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x486F PUSH2 0xB41 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x487D PUSH2 0xAA0 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x488B PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x6176 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x48AC CALLDATASIZE PUSH2 0x2A0F JUMP JUMPDEST SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x4905 JUMPI PUSH2 0x48F2 SWAP1 PUSH2 0x48E5 SWAP3 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x48EC PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP3 PUSH2 0x569A JUMP JUMPDEST SUB DUP5 PUSH2 0x86F JUMP JUMPDEST DUP3 PUSH2 0xAF4C JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST POP PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4947 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB DUP3 SLOAD AND SWAP1 PUSH1 0x2 SHL OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x49A5 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x6427 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH2 0x6BC JUMPI STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4A03 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0x4A3D JUMPI PUSH5 0x174876E800 PUSH2 0x11C8 SWAP3 DIV SWAP1 PUSH2 0xB692 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x4A73 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x4A7D PUSH2 0x7793 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x4AFE JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x4B07 SWAP1 PUSH2 0x83F JUMP JUMPDEST PUSH0 PUSH2 0x4479 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x4B1E CALLDATASIZE PUSH2 0x3A4E JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0xAFB2 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x4B67 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x652F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x4BD3 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4C04 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4C24 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x4C3A DUP4 PUSH2 0xA81 JUMP JUMPDEST PUSH2 0x4C42 PUSH2 0x5478 JUMP JUMPDEST POP AND PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH1 0x20 DUP6 ADD MLOAD MLOAD SWAP4 PUSH0 PUSH1 0x40 DUP8 ADD PUSH1 0xA0 DUP9 ADD SWAP2 JUMPDEST DUP8 DUP2 LT PUSH2 0x4C7A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP12 DUP3 PUSH2 0x1289 JUMP JUMPDEST DUP1 PUSH2 0x4C91 PUSH2 0x4C8B PUSH1 0x1 SWAP4 DUP6 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x4C9C DUP3 DUP7 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP1 PUSH0 MSTORE DUP6 DUP6 MSTORE PUSH2 0x4CC4 DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 PUSH0 KECCAK256 SLOAD AND DUP4 DUP14 PUSH2 0xB5EF JUMP JUMPDEST ADD PUSH2 0x4C65 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4CE7 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4D08 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4D20 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4D41 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST SWAP4 PUSH2 0x4D4F DUP4 MLOAD DUP6 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST PUSH2 0x4D5C DUP4 MLOAD DUP7 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4DA7 JUMPI DUP1 PUSH2 0x4D97 PUSH2 0x4D8C PUSH1 0x1 SWAP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 DUP13 PUSH2 0x5659 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP6 DUP9 MSTORE DUP7 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x4D73 JUMP JUMPDEST PUSH2 0x7A2 DUP3 DUP9 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x5EB7 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4DDA DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x4E07 DUP4 PUSH2 0x922 JUMP JUMPDEST SWAP3 PUSH2 0x4E15 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x86F JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x24 PUSH1 0x20 DUP7 ADD SWAP2 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 CALLDATASIZE DUP5 GT PUSH2 0x6BC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x4E46 JUMPI PUSH2 0x7A2 DUP7 DUP7 PUSH2 0x65A7 JUMP JUMPDEST PUSH1 0x80 DUP3 CALLDATASIZE SUB SLT PUSH2 0x6BC JUMPI DUP3 PUSH1 0x80 SWAP2 DUP9 MLOAD PUSH2 0x4E5F DUP2 PUSH2 0x823 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4E6A DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP6 ADD CALLDATALOAD PUSH2 0x4E79 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP10 DUP6 ADD CALLDATALOAD PUSH2 0x4E8A DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD CALLDATALOAD SWAP1 PUSH2 0x4E9E DUP3 PUSH2 0xA96 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x4E35 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1118 PUSH2 0x4EDA PUSH2 0x4EC0 CALLDATASIZE PUSH2 0x1264 JUMP JUMPDEST SWAP1 PUSH2 0x4EC9 PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x4ED2 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x12C0 PUSH2 0x5478 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x4F36 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x4F57 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP1 PUSH32 0x0 TLOAD PUSH0 MSTORE PUSH32 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x4FE2 PUSH1 0x4 CALLDATALOAD PUSH2 0x4FD1 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x4FD9 PUSH2 0x5980 JUMP JUMPDEST POP PUSH2 0x7D0 PUSH2 0x6818 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD SWAP1 PUSH2 0x4FF4 DUP3 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x1 DUP2 AND ISZERO ISZERO SWAP2 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH1 0x20 DUP4 ADD SWAP3 DUP3 DUP6 DUP2 SHR AND ISZERO ISZERO DUP5 MSTORE ADD SWAP3 PUSH1 0x2 SHR AND ISZERO ISZERO DUP3 MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE MLOAD ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x5066 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x507F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x5098 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x373C JUMP JUMPDEST PUSH2 0x50A2 DUP4 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x5145 JUMPI DUP1 PUSH2 0x50CB PUSH2 0x50C1 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP10 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x290E DUP4 DUP11 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x50E7 PUSH2 0x50DB PUSH2 0x28F7 DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x40 PUSH2 0x364D DUP5 DUP12 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x50F7 PUSH2 0x2075 PUSH2 0x28F7 DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x513C JUMPI PUSH2 0x510C PUSH0 JUMPDEST PUSH1 0x20 PUSH2 0x3682 DUP5 DUP12 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5136 PUSH2 0x5122 PUSH2 0x511C DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP7 PUSH2 0x512D DUP5 DUP12 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST ADD PUSH2 0x50A5 JUMP JUMPDEST PUSH2 0x510C DUP3 PUSH2 0x5100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 DUP1 PUSH2 0x36CE DUP11 PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x51A0 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1163 PUSH2 0x51ED PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x51FA DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0xAF4C JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x24BA PUSH2 0x5210 CALLDATASIZE PUSH2 0xE34 JUMP JUMPDEST SWAP2 PUSH2 0x5219 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x6A3F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x529A PUSH2 0x52AD PUSH2 0x1118 PUSH2 0x10D5 PUSH2 0x52BB PUSH2 0x523B CALLDATASIZE PUSH2 0x2456 JUMP JUMPDEST PUSH2 0x5247 SWAP7 SWAP2 SWAP3 SWAP7 PUSH2 0x5478 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP3 PUSH2 0x527D PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x525E DUP5 DUP4 PUSH2 0x66A9 JUMP JUMPDEST SUB SWAP6 PUSH2 0x5272 PUSH1 0x1F NOT SWAP8 DUP9 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x86F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 DUP3 DUP11 PUSH2 0x8219 JUMP JUMPDEST SWAP9 SWAP3 SWAP5 SWAP2 SWAP4 SWAP1 SWAP7 PUSH2 0x10CC PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x10C0 PUSH1 0x20 DUP3 ADD SWAP6 DUP7 PUSH2 0x66A9 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP10 ADD MSTORE DUP8 DUP3 SUB PUSH1 0x40 DUP10 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x52E6 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x52FB DUP4 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH2 0x30FF PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x6BC JUMPI MLOAD PUSH2 0xDA1 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x5350 PUSH2 0x6818 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x5384 DUP2 PUSH32 0x0 AND SWAP3 PUSH2 0x58B3 JUMP JUMPDEST SWAP3 PUSH2 0x538D PUSH2 0x6884 JUMP JUMPDEST SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH2 0x53EF SWAP7 PUSH2 0x545A PUSH0 SWAP8 SWAP4 PUSH2 0x5422 DUP10 SWAP6 PUSH4 0xFFFFFFFF PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 DUP12 SWAP10 PUSH32 0xE0677AB00000000000000000000000000000000000000000000000000000000 DUP12 MSTORE AND PUSH1 0x4 DUP11 ADD MSTORE PUSH2 0x160 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x164 DUP10 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP6 AND PUSH1 0x44 DUP8 ADD MSTORE DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 AND PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD AND PUSH1 0xA4 DUP7 ADD MSTORE JUMP JUMPDEST PUSH1 0xC4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD ISZERO ISZERO PUSH1 0xE4 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x104 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x124 DUP6 ADD MSTORE PUSH1 0x60 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP5 ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x546B JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x1BBE PUSH2 0x6CB SWAP3 PUSH2 0x83F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5485 DUP3 PUSH2 0x853 JUMP JUMPDEST DUP2 PUSH0 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x60 SWAP2 DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0xEC7 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0xEC7 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x5506 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5522 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x54B9 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST ISZERO PUSH2 0x553D JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E70757420706172616D65746572732068617665206368616E676564000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x6BC JUMPI MLOAD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x55FF DUP3 PUSH2 0x853 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC0 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x5632 DUP3 PUSH2 0x922 JUMP JUMPDEST PUSH2 0x563F PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x564F DUP3 SWAP5 PUSH2 0x922 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x566D JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 SLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 SWAP3 ADD SWAP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x56BE JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP5 ADD SWAP4 PUSH1 0x1 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x56B0 JUMP JUMPDEST ISZERO PUSH2 0x56E5 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5661756C744D6F636B3A20544F4B454E535F4C454E4754485F4D49534D415443 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5776 DUP3 PUSH2 0x823 JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x5797 DUP3 PUSH2 0x922 JUMP JUMPDEST PUSH2 0x57A4 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x57B4 DUP3 SWAP5 PUSH2 0x922 JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x57C4 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x57CF PUSH2 0x5769 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x57B8 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 DUP3 DUP2 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP3 PUSH2 0x5812 DUP5 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH1 0x40 SWAP4 PUSH2 0x5823 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP1 DUP8 ADD SWAP3 PUSH1 0x7 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x6BC JUMPI DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x584D JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP4 PUSH1 0x80 SWAP2 DUP8 MLOAD PUSH2 0x5866 DUP2 PUSH2 0x823 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x5871 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP7 ADD MLOAD PUSH2 0x5880 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP9 DUP7 ADD MLOAD PUSH2 0x5891 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP10 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP8 ADD MLOAD SWAP1 PUSH2 0x58A5 DUP3 PUSH2 0xA96 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x583D JUMP JUMPDEST PUSH2 0x58BD DUP2 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x58F3 JUMPI DUP1 PUSH2 0x58ED PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x58E1 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD AND PUSH2 0x290E DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST ADD PUSH2 0x58C0 JUMP JUMPDEST POP POP PUSH0 PUSH2 0x592D SWAP2 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x596C JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x372E DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x598D DUP3 PUSH2 0x802 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x59F8 PUSH2 0x59CB PUSH2 0x6CB SWAP6 SWAP8 SWAP7 SWAP5 PUSH1 0xC0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x140 SWAP2 AND DUP6 MSTORE DUP1 PUSH1 0x20 DUP7 ADD MSTORE DUP5 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP7 PUSH1 0x40 DUP4 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x6BC JUMPI MLOAD PUSH2 0xDA1 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5A9D PUSH2 0x5A97 PUSH32 0x0 SWAP3 DUP4 TLOAD ISZERO SWAP6 DUP7 PUSH2 0x5B1F JUMPI JUMPDEST CALLDATASIZE SWAP2 PUSH2 0xD50 JUMP JUMPDEST CALLER PUSH2 0xC08D JUMP JUMPDEST SWAP3 PUSH2 0x5AA5 JUMPI POP JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH2 0x5AF7 JUMPI PUSH0 SWAP1 TSTORE PUSH2 0x6CB PUSH32 0x0 PUSH2 0xA7C6 JUMP JUMPDEST PUSH32 0x20F1D86D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP6 TSTORE PUSH2 0x5A90 JUMP JUMPDEST SWAP1 PUSH2 0x17D9 DUP2 PUSH1 0x60 PUSH2 0x5D81 PUSH2 0x5D4F PUSH2 0x5D1D PUSH2 0x5CEB PUSH2 0x5CA3 PUSH2 0x5C5F PUSH2 0x5C55 PUSH2 0x5C4A PUSH2 0x5C3F PUSH2 0x5C0C PUSH2 0x5DB1 SWAP14 DUP16 PUSH2 0x120 PUSH2 0x5BD9 PUSH2 0x5BA7 PUSH2 0x5B78 PUSH2 0x5BE1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0xC0 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD SWAP1 PUSH1 0x1 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP3 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 SWAP1 PUSH1 0x3 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP13 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB SWAP1 PUSH1 0x2 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MLOAD SWAP1 PUSH2 0x8F8A JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD SWAP1 PUSH2 0xABA5 JUMP JUMPDEST DUP8 DUP10 ADD MLOAD SWAP1 PUSH2 0xABB6 JUMP JUMPDEST PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0x5A SHL PUSH17 0x3FFFFFFFFFC0000000000000000000000 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000003FFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MLOAD PUSH1 0x82 SHL PUSH21 0x3FFFFFFFC00000000000000000000000000000000 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFC00000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP5 DUP6 MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF SWAP1 PUSH1 0x4 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF SWAP1 PUSH1 0x5 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF SWAP1 PUSH1 0x6 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F SWAP1 PUSH1 0x7 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x161E DUP3 PUSH2 0xEBD JUMP JUMPDEST MLOAD PUSH2 0xDA1 DUP2 PUSH2 0xEBD JUMP JUMPDEST SWAP2 SWAP1 SWAP4 SWAP3 SWAP4 PUSH2 0x5DD6 DUP4 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x5E48 JUMPI DUP1 PUSH2 0x5DF5 PUSH2 0x2904 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5E0A PUSH2 0x3676 PUSH2 0x5E05 DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5DBD JUMP JUMPDEST PUSH2 0x5E26 PUSH2 0x5E1A PUSH2 0x28F7 DUP4 DUP9 PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x40 PUSH2 0x364D DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5E42 PUSH2 0x5E36 PUSH2 0x511C DUP4 DUP12 PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x512D DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST ADD PUSH2 0x5DD9 JUMP JUMPDEST POP POP POP POP PUSH2 0x592D SWAP2 SWAP3 POP PUSH0 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x449E JUMPI JUMP JUMPDEST DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x81E JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0x81E JUMPI DUP2 SLOAD DUP4 DUP4 SSTORE DUP1 DUP5 LT PUSH2 0x5F2C JUMPI JUMPDEST POP PUSH2 0x5EF9 PUSH1 0x20 DUP1 SWAP3 ADD SWAP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x5F0A JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH2 0x5F1F DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 ADD SWAP5 DUP2 DUP6 ADD SSTORE ADD PUSH2 0x5EFC JUMP JUMPDEST DUP3 PUSH0 MSTORE DUP4 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x5F47 JUMPI POP PUSH2 0x5EE6 JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5F3A JUMP JUMPDEST SWAP1 DUP1 ISZERO DUP1 ISZERO PUSH2 0x5FDD JUMPI JUMPDEST PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x5FB2 SWAP5 PUSH0 SWAP2 PUSH2 0x5FB8 JUMPI JUMPDEST POP AND PUSH2 0x96E2 JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x5FD1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x5FAB JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP PUSH2 0x6024 PUSH1 0x20 PUSH2 0x5FEC DUP4 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEF8B30F700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x6047 JUMPI JUMPDEST POP ISZERO PUSH2 0x5F5C JUMP JUMPDEST PUSH2 0x6060 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6040 JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP1 PUSH2 0x6073 DUP3 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x607C DUP3 PUSH2 0xEBD JUMP JUMPDEST DUP3 SLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 SWAP1 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 SWAP1 SWAP2 AND PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHL PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND OR SWAP1 ISZERO ISZERO PUSH1 0xA8 SHL PUSH22 0xFF000000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x6152 SWAP5 PUSH0 SWAP2 PUSH2 0x6157 JUMPI JUMPDEST POP AND PUSH2 0x9F91 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH2 0x6170 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x614B JUMP JUMPDEST PUSH2 0x63F4 PUSH2 0x63DC PUSH2 0x2075 PUSH2 0x140 PUSH2 0x6CB SWAP6 PUSH2 0x63B3 PUSH2 0x6380 PUSH2 0x634D PUSH2 0x631B PUSH2 0x62E9 PUSH2 0x62B7 PUSH2 0x6285 PUSH2 0x6253 PUSH2 0x6221 PUSH2 0x61EF DUP16 PUSH2 0x61BF SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP12 MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF SWAP1 PUSH1 0x9 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF SWAP1 PUSH1 0x8 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFF SWAP1 PUSH1 0xA SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP10 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF SWAP1 PUSH1 0xB SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP9 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFF SWAP1 PUSH1 0xC SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFF SWAP1 PUSH1 0xD SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xC0 DUP7 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF SWAP1 PUSH1 0xE SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFF SWAP1 PUSH1 0xF SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF SWAP1 PUSH1 0x10 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF SWAP1 PUSH1 0x11 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x63CD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 ISZERO DUP1 ISZERO PUSH2 0x64A6 JUMPI JUMPDEST PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x5FB2 SWAP5 PUSH0 SWAP2 PUSH2 0x6487 JUMPI JUMPDEST POP AND PUSH2 0xA199 JUMP JUMPDEST PUSH2 0x64A0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6480 JUMP JUMPDEST POP PUSH2 0x64ED PUSH1 0x20 PUSH2 0x64B5 DUP4 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x6510 JUMPI JUMPDEST POP ISZERO PUSH2 0x6431 JUMP JUMPDEST PUSH2 0x6529 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6509 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x6152 SWAP5 PUSH0 SWAP2 PUSH2 0x6588 JUMPI JUMPDEST POP AND PUSH2 0x994C JUMP JUMPDEST PUSH2 0x65A1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6581 JUMP JUMPDEST SWAP2 SWAP1 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x668C JUMPI PUSH1 0x1 SWAP1 PUSH2 0x6686 PUSH1 0x20 PUSH2 0x6633 DUP2 PUSH2 0x65CA DUP6 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD MLOAD SWAP2 PUSH2 0x65D7 DUP4 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 PUSH2 0x662A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH2 0x65EF DUP10 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD MLOAD AND PUSH1 0x60 PUSH2 0x65FF DUP10 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD MLOAD ISZERO ISZERO SWAP4 PUSH2 0x661A DUP5 MLOAD SWAP8 PUSH2 0x6614 DUP10 PUSH2 0x802 JUMP JUMPDEST DUP9 PUSH2 0x5DB4 JUMP JUMPDEST DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP4 ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x6681 PUSH2 0x6651 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x666C PUSH2 0x665E DUP7 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x6066 JUMP JUMPDEST ADD PUSH2 0x65AB JUMP JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0xEC7 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0xEC7 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x66F3 PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH2 0x5522 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x669C JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6705 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x6773 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0x67A3 PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x67DF JUMPI JUMPDEST POP POP PUSH2 0x67B4 JUMPI POP JUMP JUMPDEST PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x449E JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0x67AB JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x6876 JUMPI JUMPDEST PUSH2 0x684E JUMPI JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x6848 JUMP JUMPDEST PUSH2 0x688C PUSH2 0x5769 JUMP JUMPDEST POP PUSH2 0x6895 PUSH2 0x5769 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x40 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x68C1 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x68CF PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x68F8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x68EA JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP1 PUSH2 0x691E DUP3 PUSH2 0xD34 JUMP JUMPDEST SWAP3 PUSH2 0x692C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x6BC JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP3 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 GT PUSH2 0x6BC JUMPI DUP4 PUSH2 0x6978 SWAP2 DUP7 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP2 ADD MLOAD SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x6BC JUMPI DUP2 PUSH2 0x6997 SWAP2 DUP5 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP3 ADD PUSH2 0x6907 JUMP JUMPDEST SWAP4 PUSH2 0x69D8 PUSH2 0x69EB SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xDA1 SWAP9 SWAP7 SWAP5 AND DUP8 MSTORE PUSH1 0xA0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x6A31 SWAP1 PUSH2 0xDA1 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6A49 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6A53 PUSH2 0x5980 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP6 ADD PUSH2 0x6A66 DUP2 MLOAD MLOAD DUP1 DUP7 MSTORE PUSH2 0x5628 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP6 DUP7 MLOAD PUSH2 0x6A76 DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6A7F DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6D5F JUMPI POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x6A93 DUP7 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH2 0x6ACF DUP3 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x6AC9 PUSH2 0x6AB1 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB504 JUMP JUMPDEST SWAP10 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 DUP5 LT PUSH2 0x6D2F JUMPI POP PUSH2 0x6AEA DUP4 SWAP10 SWAP9 SWAP10 PUSH2 0x95F5 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD SWAP8 PUSH0 JUMPDEST DUP13 DUP12 MLOAD DUP3 LT ISZERO PUSH2 0x6C4A JUMPI DUP2 PUSH2 0x6B05 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6B0F DUP2 PUSH2 0x95F5 JUMP JUMPDEST PUSH2 0x6B19 DUP3 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6C39 JUMPI PUSH2 0x6B40 SWAP1 DUP14 PUSH2 0x40F8 DUP5 PUSH1 0xA0 PUSH2 0x6B37 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP1 PUSH2 0x6B4B DUP4 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x6B5B PUSH2 0x28F7 DUP4 DUP11 MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD PUSH2 0x6B6A DUP5 DUP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP4 GT PUSH2 0x6BED JUMPI POP DUP14 DUP4 PUSH2 0x6BE1 DUP15 PUSH2 0x6BD9 DUP16 SWAP7 DUP16 SWAP8 PUSH2 0x6BC4 DUP7 PUSH2 0x6BBC DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x6B99 DUP9 PUSH2 0x6BE7 SWAP16 PUSH2 0x9606 JUMP JUMPDEST PUSH2 0x6BB5 PUSH2 0x6BA6 DUP5 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP14 PUSH2 0xAE28 JUMP JUMPDEST DUP8 MSTORE SWAP3 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x6BD3 DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD SWAP1 PUSH2 0x55E5 JUMP JUMPDEST SWAP2 PUSH2 0xB55F JUMP JUMPDEST ADD PUSH2 0x6AF1 JUMP JUMPDEST SWAP2 PUSH2 0x6BFC DUP5 PUSH2 0x2358 SWAP5 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x6C44 DUP2 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6B4D JUMP JUMPDEST POP POP SWAP4 SWAP7 SWAP5 POP SWAP7 POP SWAP7 POP SWAP7 PUSH2 0x6C6F SWAP1 PUSH2 0x6C6A DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7096 JUMP JUMPDEST PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 PUSH2 0x6CA1 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x6CC2 DUP10 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x6CBC DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA678 JUMP JUMPDEST PUSH2 0x6CF6 PUSH2 0x6AB1 PUSH2 0x6CEA PUSH2 0x6CDC DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x28F7 DUP9 PUSH2 0x54AF JUMP JUMPDEST SWAP3 PUSH2 0x6D1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x6D0C DUP9 PUSH2 0x54AF JUMP JUMPDEST DUP9 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x6A14 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x6D29 PUSH2 0x77E8 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x3 DUP8 MLOAD PUSH2 0x6D6C DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6D75 DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6D97 JUMPI PUSH2 0x6D84 DUP9 MLOAD PUSH2 0xB4CF JUMP JUMPDEST PUSH2 0x6D8E DUP2 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH0 SWAP2 SWAP10 PUSH2 0x6AD1 JUMP JUMPDEST SWAP8 PUSH1 0x1 DUP8 MLOAD PUSH2 0x6DA5 DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6DAE DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6E16 JUMPI PUSH2 0x6DBD DUP9 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH2 0x6E0E DUP10 PUSH2 0x6DCF DUP5 PUSH1 0x40 DUP9 ADD MLOAD PUSH2 0xB230 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD MLOAD SWAP1 PUSH2 0x6DE9 PUSH2 0x6AB1 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x6DF3 DUP13 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP2 PUSH2 0x6E08 PUSH2 0x2075 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0xB27F JUMP JUMPDEST SWAP6 SWAP1 SWAP2 PUSH2 0x6AD1 JUMP JUMPDEST SWAP8 SWAP4 PUSH1 0x2 DUP8 MLOAD PUSH2 0x6E25 DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6E2E DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6EAF JUMPI SWAP8 DUP8 SWAP9 PUSH2 0x6E40 DUP10 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP2 PUSH2 0x6E4F DUP8 PUSH2 0xB031 JUMP JUMPDEST PUSH2 0x6EA9 PUSH2 0x6E9F PUSH1 0x40 DUP12 ADD SWAP3 DUP1 DUP5 MSTORE DUP10 DUP12 SWAP16 DUP9 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x6E99 PUSH2 0x2075 PUSH2 0x6E8B PUSH2 0x6E84 PUSH2 0x6AB1 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0xB105 JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x6AD1 JUMP JUMPDEST POP PUSH1 0x4 DUP7 MLOAD PUSH2 0x6EBD DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6EC6 DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6F87 JUMPI PUSH2 0x6ED5 DUP8 MLOAD PUSH2 0xAFC8 JUMP JUMPDEST PUSH0 PUSH2 0x6EED PUSH2 0x2075 PUSH2 0x2075 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP1 PUSH1 0x80 DUP11 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP9 ADD MLOAD SWAP9 PUSH2 0x6F3A PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE4C4366300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x69AE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x6F5C JUMPI JUMPDEST POP SWAP1 SWAP6 SWAP2 SWAP10 PUSH2 0x6AD1 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x6F7D SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x6F75 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x694D JUMP JUMPDEST SWAP2 SWAP6 SWAP3 SWAP2 PUSH0 PUSH2 0x6F52 JUMP JUMPDEST PUSH32 0x6C02B39500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x6FC2 DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x6FD2 JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6FFF SWAP6 SWAP7 POP SWAP2 PUSH2 0x6FE7 SWAP2 PUSH2 0x6FF8 SWAP4 SUB PUSH2 0xB641 JUMP JUMPDEST SWAP3 PUSH1 0xA0 PUSH2 0x6B37 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xB663 JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x708C JUMPI JUMPDEST POP PUSH2 0x7064 JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x704F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 SWAP2 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x70F0 JUMPI SWAP1 PUSH2 0x70E0 PUSH2 0x70D1 DUP3 PUSH1 0x1 SWAP5 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP4 DUP7 MSTORE DUP5 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x70B3 JUMP JUMPDEST POP POP POP POP POP SWAP1 POP JUMP JUMPDEST SWAP2 PUSH2 0x7102 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 PUSH0 KECCAK256 SWAP2 PUSH0 PUSH1 0x20 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP2 PUSH1 0x4 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 PUSH1 0x3 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP5 DUP6 SLOAD SWAP5 DUP9 MSTORE PUSH2 0x7146 PUSH1 0x20 DUP10 ADD SWAP7 PUSH2 0xB6F3 JUMP JUMPDEST DUP7 MSTORE PUSH2 0x7151 DUP6 PUSH2 0xB70E JUMP JUMPDEST SWAP4 DUP1 DUP10 ADD SWAP5 DUP6 MSTORE PUSH2 0x7161 DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP11 ADD SWAP4 DUP5 MSTORE PUSH2 0x7172 DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x7182 DUP8 DUP12 MLOAD PUSH2 0xC356 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x7190 DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x7347 JUMPI JUMPDEST POP DUP4 PUSH2 0x7335 JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x7212 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x7202 PUSH2 0x71EA PUSH2 0x7209 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xB79B JUMP JUMPDEST SWAP1 PUSH2 0x6CB PUSH2 0x77E8 JUMP JUMPDEST SWAP1 DUP11 DUP11 DUP15 SWAP4 DUP11 PUSH2 0x725D DUP6 PUSH2 0x7249 DUP2 PUSH2 0x723B PUSH2 0x7236 DUP14 PUSH2 0x666C PUSH2 0x28F7 DUP16 DUP7 SWAP1 MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xB75C JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 MLOAD DUP4 PUSH2 0x7257 DUP4 DUP4 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x5659 JUMP JUMPDEST POP PUSH2 0x7267 DUP2 PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x7272 DUP7 DUP12 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x7291 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP8 DUP6 PUSH2 0xB5EF JUMP JUMPDEST DUP10 ISZERO PUSH2 0x732C JUMPI DUP6 PUSH2 0x72A4 DUP13 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x730E JUMPI JUMPDEST POP POP PUSH2 0x72BC JUMPI JUMPDEST POP POP POP JUMPDEST ADD PUSH2 0x71B3 JUMP JUMPDEST DUP4 PUSH2 0x72E2 DUP14 DUP3 PUSH2 0x72D7 DUP2 PUSH2 0x72D0 DUP8 MLOAD PUSH2 0xC3B2 JUMP JUMPDEST SWAP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP7 PUSH1 0x80 SHR DUP6 PUSH2 0x6FAF JUMP JUMPDEST SWAP4 DUP5 PUSH2 0x72F0 JUMPI JUMPDEST POP POP PUSH2 0x72B2 JUMP JUMPDEST PUSH2 0x7303 SWAP5 PUSH2 0x72FD SWAP2 PUSH2 0x55E5 JUMP JUMPDEST SWAP2 PUSH2 0xB5EF JUMP JUMPDEST PUSH0 DUP16 DUP12 SWAP1 DUP4 DUP4 PUSH2 0x72E9 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x731B DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x7324 DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP6 PUSH0 PUSH2 0x72AB JUMP JUMPDEST POP POP POP POP PUSH2 0x72B6 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x71B1 JUMP JUMPDEST PUSH2 0x7352 SWAP2 SWAP5 POP PUSH2 0xC3B2 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x71AA JUMP JUMPDEST PUSH2 0x7363 PUSH2 0x5478 JUMP JUMPDEST SWAP1 PUSH2 0x736C PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x73AF PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0xB6F3 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x73BA DUP5 PUSH2 0xB70E JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x73CA DUP6 PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x73DB DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x73EF DUP8 DUP12 MLOAD PUSH2 0xC356 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x73FD DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x7573 JUMPI JUMPDEST POP DUP4 PUSH2 0x7561 JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x745F JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x7202 PUSH2 0x71EA PUSH2 0x7457 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xDA1 PUSH2 0x77E8 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x7493 DUP5 PUSH2 0x7485 DUP2 PUSH2 0x723B PUSH2 0x7236 DUP16 DUP16 PUSH2 0x28F7 DUP6 PUSH2 0x666C SWAP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x7257 DUP4 DUP4 PUSH2 0x5659 JUMP JUMPDEST POP PUSH2 0x749D DUP2 PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x74A8 DUP6 DUP14 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x74C6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0xB55F JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x7554 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x7536 JUMPI JUMPDEST POP POP PUSH2 0x74ED JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x7420 JUMP JUMPDEST DUP3 PUSH2 0x7510 SWAP3 PUSH2 0x7507 DUP3 PUSH2 0x7500 DUP9 MLOAD PUSH2 0xC3B2 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x6FAF JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x7520 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x74E1 JUMP JUMPDEST PUSH2 0x752D SWAP4 PUSH2 0x6BE1 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x7517 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x7543 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x754C DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x74DA JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x74E7 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x741E JUMP JUMPDEST PUSH2 0x757E SWAP2 SWAP5 POP PUSH2 0xC3B2 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x7417 JUMP JUMPDEST PUSH2 0x758F PUSH2 0x5478 JUMP JUMPDEST SWAP1 PUSH2 0x7598 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x75DB PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0xB6F3 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x75E6 DUP5 PUSH2 0xB70E JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x75F6 DUP6 PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x7607 DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x761B DUP8 DUP12 MLOAD PUSH2 0xC356 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x7629 DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x777F JUMPI JUMPDEST POP DUP4 PUSH2 0x776D JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x7683 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x7202 PUSH2 0x71EA PUSH2 0x7457 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x76A9 DUP5 PUSH2 0x7485 DUP2 PUSH2 0x723B PUSH2 0x7236 DUP16 DUP16 PUSH2 0x28F7 DUP6 PUSH2 0x666C SWAP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST POP PUSH2 0x76B3 DUP2 PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x76BE DUP6 DUP14 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x76DC PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0xB5AC JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x7760 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x7742 JUMPI JUMPDEST POP POP PUSH2 0x7703 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x764C JUMP JUMPDEST DUP3 PUSH2 0x7716 SWAP3 PUSH2 0x7507 DUP3 PUSH2 0x7500 DUP9 MLOAD PUSH2 0xC3B2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x7726 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x76F7 JUMP JUMPDEST PUSH2 0x7739 SWAP4 PUSH2 0x7733 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST SWAP2 PUSH2 0xB5AC JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x771D JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x774F DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x7758 DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x76F0 JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x76FD JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x764A JUMP JUMPDEST PUSH2 0x778A SWAP2 SWAP5 POP PUSH2 0xC3B2 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x7643 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x77C0 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x7836 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x7868 SWAP1 PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP2 PUSH0 SUB SWAP1 PUSH2 0xABF6 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x78AB DUP3 DUP5 DUP7 PUSH2 0xB8F7 JUMP JUMPDEST PUSH0 NOT DUP2 SUB PUSH2 0x78BA JUMPI POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 GT PUSH2 0x7A3E JUMPI SUB SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x7A09 JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x79D4 JUMPI DUP5 PUSH2 0x791A DUP6 PUSH2 0x7904 DUP7 PUSH2 0x7904 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x79B4 SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x79C1 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST DUP1 PUSH2 0x1BBE PUSH2 0x79CE SWAP3 PUSH2 0x83F JUMP JUMPDEST PUSH0 PUSH2 0x79A3 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST SWAP3 SWAP1 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x7C10 JUMPI DUP1 DUP7 AND SWAP2 DUP3 ISZERO PUSH2 0x7BDB JUMPI PUSH2 0x7AB9 DUP7 PUSH2 0x7904 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP7 GT PUSH2 0x7B9E JUMPI DUP6 SWAP1 SUB PUSH2 0x7AE3 DUP8 PUSH2 0x7904 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x7B03 DUP8 PUSH2 0x7904 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP6 DUP2 SLOAD ADD SWAP1 SSTORE AND SWAP2 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x7B40 DUP9 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x545A JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x7C50 PUSH2 0x55F2 JUMP JUMPDEST POP DUP1 MLOAD SWAP3 PUSH2 0x7C5D DUP5 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 DUP3 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x7C81 DUP8 PUSH2 0x853 JUMP JUMPDEST PUSH2 0x7C8A DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE CALLER PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x7C10 JUMPI PUSH2 0x7CE1 DUP6 PUSH2 0x7904 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x7DDC JUMPI DUP4 SWAP1 SUB PUSH2 0x7D0B DUP7 PUSH2 0x7904 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x7D31 DUP4 PUSH2 0x7D2B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x7D3A DUP2 PUSH2 0xB943 JUMP JUMPDEST PUSH2 0x7D55 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x7DD7 SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x7998 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x7E3B JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x6CB SWAP1 PUSH2 0x7D0 PUSH2 0x6818 JUMP JUMPDEST SUB PUSH2 0x7E79 JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0x7EB4 DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0xB97B JUMP JUMPDEST PUSH2 0x7EBD DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x7ECF JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x7F04 PUSH2 0x7EDF PUSH1 0x1 SWAP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EFF PUSH2 0x7EED DUP5 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP6 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0xB641 JUMP JUMPDEST PUSH2 0x7F0E DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x7EC0 JUMP JUMPDEST SWAP6 SWAP3 SWAP4 PUSH2 0x7F46 PUSH2 0x7F6A SWAP6 PUSH2 0xDA1 SWAP10 SWAP8 SWAP4 PUSH2 0x7F5C SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x669C JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 PUSH2 0x7FF0 PUSH2 0x7F9A DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0x7FAA DUP10 PUSH2 0x6692 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x40 DUP4 ADD MLOAD SWAP13 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0xBA5F9F4000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x7F15 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x8033 JUMPI JUMPDEST POP ISZERO PUSH2 0x800B JUMPI JUMP JUMPDEST PUSH32 0x2AAF886600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x804C SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x8003 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x806A JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x80E1 PUSH1 0x40 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x8093 PUSH2 0x4C8B DUP6 DUP5 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP10 ADD SWAP3 PUSH2 0x80A4 DUP7 DUP6 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP5 PUSH0 MSTORE DUP7 DUP9 MSTORE PUSH0 KECCAK256 SLOAD AND SWAP1 DUP2 PUSH2 0x80BF DUP6 PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x80DA DUP5 PUSH2 0x80D2 DUP2 PUSH1 0xC0 DUP13 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xC505 JUMP JUMPDEST PUSH2 0x80EF DUP3 PUSH1 0x80 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x805C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x810E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x817D PUSH1 0x40 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x8137 PUSH2 0x4C8B DUP6 DUP5 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP10 ADD SWAP3 PUSH2 0x8148 DUP7 DUP6 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP5 PUSH0 MSTORE DUP7 DUP9 MSTORE PUSH0 KECCAK256 SLOAD AND SWAP1 DUP2 PUSH2 0x8163 DUP6 PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x8176 DUP5 PUSH2 0x80D2 DUP2 PUSH1 0xC0 DUP13 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xC51C JUMP JUMPDEST PUSH2 0x818B DUP3 PUSH1 0x80 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x8100 JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP5 PUSH2 0x81C2 SWAP2 DUP4 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x6BC JUMPI DUP2 PUSH2 0x6997 SWAP2 DUP5 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0xDA1 SWAP6 SWAP4 PUSH2 0x69EB SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x820B SWAP4 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH2 0x8222 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x822D PUSH2 0x5980 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x8241 DUP3 MLOAD MLOAD DUP1 DUP8 MSTORE PUSH2 0x5628 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP5 ADD SWAP7 DUP8 MLOAD PUSH2 0x8252 DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x825B DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x8619 JUMPI POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 PUSH2 0x8270 DUP8 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP6 PUSH2 0x8294 DUP4 PUSH1 0x80 DUP13 ADD MLOAD PUSH2 0x828E PUSH2 0x6AB1 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBD54 JUMP JUMPDEST SWAP3 PUSH2 0x8305 PUSH32 0x0 TLOAD PUSH2 0x82CB DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH2 0x859C JUMPI JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD DUP1 DUP3 GT PUSH2 0x856B JUMPI POP PUSH2 0x8323 DUP2 SWAP11 SWAP10 SWAP11 PUSH2 0x95F5 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD SWAP9 PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x844A JUMPI DUP13 PUSH2 0x833E DUP3 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8348 DUP2 PUSH2 0x95F5 JUMP JUMPDEST PUSH2 0x8352 DUP4 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8438 JUMPI DUP2 PUSH2 0x6FF8 DUP5 PUSH1 0xA0 PUSH2 0x6B37 DUP3 PUSH1 0xC0 PUSH2 0x836F SWAP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP1 PUSH2 0x837A DUP4 DUP11 PUSH2 0x5659 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x838A PUSH2 0x28F7 DUP4 DUP12 MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x60 DUP12 ADD PUSH2 0x8399 DUP5 DUP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP4 LT PUSH2 0x83EC JUMPI POP DUP15 DUP4 PUSH2 0x6BE1 DUP16 DUP16 DUP16 SWAP7 PUSH2 0x83E0 SWAP2 PUSH2 0x83C8 DUP7 PUSH2 0x6BBC DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x6B99 DUP9 PUSH2 0x83E6 SWAP16 PUSH2 0x785E JUMP JUMPDEST MSTORE PUSH2 0x83D7 DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP1 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0x55E5 JUMP JUMPDEST ADD PUSH2 0x832A JUMP JUMPDEST SWAP2 PUSH2 0x83FB DUP5 PUSH2 0x2358 SWAP5 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP PUSH2 0x8444 DUP2 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x837C JUMP JUMPDEST POP SWAP4 SWAP10 POP SWAP6 SWAP5 POP SWAP6 SWAP3 SWAP9 PUSH2 0x846B SWAP2 SWAP8 POP PUSH2 0x6C6A DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 PUSH2 0x849D DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x84BF DUP7 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x84B8 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP2 PUSH2 0x789C JUMP JUMPDEST PUSH2 0x84C7 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x8540 JUMPI JUMPDEST PUSH2 0x84F2 DUP7 PUSH2 0x84E1 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x7CAE JUMP JUMPDEST PUSH2 0x8518 PUSH2 0x6AB1 PUSH2 0x850C PUSH2 0x6CDC DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x28F7 DUP9 PUSH2 0x6692 JUMP JUMPDEST SWAP3 PUSH2 0x6D1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x852E DUP9 PUSH2 0x6692 JUMP JUMPDEST DUP13 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x6A14 JUMP JUMPDEST PUSH2 0x8566 DUP7 PUSH2 0x8555 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xBDBA JUMP JUMPDEST PUSH2 0x84CC JUMP JUMPDEST PUSH32 0x31D38E0B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP9 SWAP5 SWAP2 PUSH2 0x85AF DUP12 SWAP8 SWAP5 SWAP10 SWAP6 SWAP3 SWAP12 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP11 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x8609 JUMPI DUP1 DUP12 PUSH2 0x8602 DUP16 SWAP4 PUSH2 0x85FC PUSH2 0x85EB DUP16 DUP4 SWAP1 PUSH2 0x85E1 PUSH1 0x1 SWAP10 PUSH2 0x85DB DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB641 JUMP JUMPDEST PUSH2 0x7257 DUP4 DUP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x85F6 DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x55E5 JUMP JUMPDEST SWAP3 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x85B2 JUMP JUMPDEST POP SWAP2 SWAP5 SWAP9 SWAP4 SWAP7 SWAP11 POP SWAP2 SWAP5 SWAP9 PUSH2 0x830A JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x1 DUP9 MLOAD PUSH2 0x8628 DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x8631 DUP2 PUSH2 0x6692 JUMP JUMPDEST SUB PUSH2 0x86A0 JUMPI PUSH2 0x8640 DUP10 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP7 SWAP3 DUP11 PUSH2 0x869A PUSH2 0x8690 DUP12 DUP11 PUSH1 0x40 PUSH2 0x8660 PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0xB031 JUMP JUMPDEST SWAP3 ADD SWAP5 DUP3 DUP7 MSTORE DUP7 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x868A PUSH2 0x2075 PUSH2 0x6E8B PUSH2 0x6E84 PUSH2 0x6AB1 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0xBCA7 JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP11 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x830A JUMP JUMPDEST PUSH1 0x2 DUP9 SWAP7 SWAP3 SWAP7 MLOAD PUSH2 0x86B0 DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x86B9 DUP2 PUSH2 0x6692 JUMP JUMPDEST SUB PUSH2 0x874C JUMPI PUSH2 0x86C8 DUP10 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH2 0x8745 DUP3 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x86EC PUSH2 0x86DE DUP4 MLOAD PUSH2 0xB031 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD SWAP4 DUP2 DUP6 MSTORE MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x86F8 DUP4 MLOAD DUP9 PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP12 PUSH2 0x870B PUSH1 0x80 DUP3 ADD MLOAD SWAP4 MLOAD DUP1 SWAP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x872A PUSH2 0x8723 PUSH2 0x6AB1 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP3 PUSH2 0x873F PUSH2 0x2075 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0xBA9F JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x830A JUMP JUMPDEST POP SWAP4 PUSH1 0x3 DUP8 MLOAD PUSH2 0x875B DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x8764 DUP2 PUSH2 0x6692 JUMP JUMPDEST SUB PUSH2 0x8825 JUMPI PUSH2 0x8773 DUP9 MLOAD PUSH2 0xBA6A JUMP JUMPDEST PUSH0 PUSH2 0x878B PUSH2 0x2075 PUSH2 0x2075 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP7 ADD MLOAD SWAP7 PUSH1 0x80 DUP12 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP10 ADD MLOAD SWAP10 PUSH2 0x87D9 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xAB68E28C00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x81DB JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x87FA JUMPI JUMPDEST POP SWAP2 SWAP7 SWAP3 PUSH2 0x830A JUMP JUMPDEST SWAP3 POP POP SWAP6 POP PUSH2 0x881B SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8813 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x8192 JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP2 PUSH0 PUSH2 0x87F1 JUMP JUMPDEST PUSH32 0x137A9A3900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD PUSH2 0x8865 DUP2 PUSH2 0xA96 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP3 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP7 SWAP4 SWAP5 PUSH2 0xDA1 SWAP9 SWAP7 SWAP3 PUSH2 0x88ED SWAP7 PUSH2 0x88BE PUSH2 0x88DF SWAP7 PUSH2 0x88D1 SWAP6 PUSH2 0x100 SWAP5 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x669C JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MSTORE DUP1 PUSH1 0x80 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SWAP5 SWAP4 SWAP6 SWAP3 SWAP7 SWAP2 SWAP1 DUP5 MLOAD PUSH2 0x8914 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP3 PUSH2 0x8924 DUP5 PUSH2 0x6692 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP11 PUSH1 0xA0 DUP10 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP8 DUP9 SWAP8 PUSH32 0x2754888D00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0x8969 SWAP9 PUSH2 0x8884 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH2 0x8A86 JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0x8A7A JUMPI JUMPDEST PUSH2 0x8A52 JUMPI PUSH1 0x1 DUP1 SWAP4 PUSH1 0x9 SHR AND ISZERO PUSH2 0x89B3 JUMPI SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH0 DUP4 JUMPDEST PUSH2 0x89BA JUMPI JUMPDEST POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x8A4D JUMPI PUSH2 0x89CD DUP2 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x89DE DUP4 DUP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD GT PUSH2 0x89ED JUMPI POP DUP4 ADD DUP4 PUSH2 0x89AE JUMP JUMPDEST PUSH2 0x8A10 DUP3 PUSH2 0x80D2 DUP2 PUSH2 0x8A0A PUSH2 0x28F7 DUP12 SWAP8 PUSH1 0x20 PUSH2 0x2358 SWAP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0xFBD8A72400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0x89B3 JUMP JUMPDEST PUSH32 0x1D3391D800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP4 MLOAD DUP6 MLOAD EQ ISZERO PUSH2 0x8995 JUMP JUMPDEST SWAP1 POP PUSH2 0x8AA5 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8A9D DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x884D JUMP JUMPDEST SWAP4 SWAP1 PUSH0 PUSH2 0x898C JUMP JUMPDEST PUSH0 SWAP5 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x8ABB PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x8AC3 PUSH2 0x5980 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH2 0x8ACF DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x8AD8 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x8E55 JUMPI JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP7 ADD PUSH2 0x8AEE DUP2 MLOAD PUSH2 0xAD93 JUMP JUMPDEST DUP4 PUSH2 0x8B43 DUP2 DUP6 ADD SWAP9 PUSH2 0x8B0D PUSH2 0x2075 PUSH2 0x2075 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP13 DUP14 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x168F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP9 DUP10 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP10 PUSH2 0x8E36 JUMPI JUMPDEST POP DUP9 PUSH2 0x8B60 DUP2 PUSH2 0xAD93 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x8B6B DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x8B74 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x8DC6 JUMPI POP PUSH1 0x40 DUP3 ADD MLOAD SWAP1 MSTORE PUSH2 0x8BAC PUSH1 0xC0 DUP9 ADD MLOAD PUSH2 0x2124 PUSH2 0x211E PUSH2 0x8B9D DUP8 DUP7 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP13 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP8 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 LT PUSH2 0x8D96 JUMPI POP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP5 DUP11 DUP7 MLOAD PUSH2 0x8BDC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8BE6 SWAP2 PUSH2 0x9606 JUMP JUMPDEST PUSH1 0x60 ADD SWAP6 DUP10 DUP8 MLOAD PUSH2 0x8BFD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8C07 SWAP2 PUSH2 0x785E JUMP JUMPDEST DUP4 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD SWAP2 PUSH2 0x8C2C SWAP4 DUP7 PUSH2 0xAE28 JUMP JUMPDEST SWAP2 SWAP1 DUP2 DUP7 ADD SWAP6 PUSH1 0x40 ADD SWAP3 DUP4 MSTORE DUP6 MSTORE DUP6 MLOAD PUSH1 0x60 DUP5 ADD SWAP3 DUP14 DUP3 DUP6 MLOAD SWAP1 PUSH2 0x8C4F SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x8C5A SWAP2 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x8C65 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x8C6F SWAP2 DUP6 PUSH2 0xB55F JUMP JUMPDEST DUP6 ADD SWAP2 DUP3 MLOAD DUP12 DUP2 DUP5 MLOAD SWAP1 PUSH2 0x8C82 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x8C8D SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x8C97 SWAP2 DUP4 PUSH2 0xB55F JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 DUP1 MLOAD DUP8 MLOAD PUSH2 0x8CBD SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x80 ADD SWAP2 DUP3 MLOAD DUP9 MLOAD PUSH2 0x8CD0 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8CDA SWAP2 PUSH2 0x7032 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x8CEE SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x8CFB SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x8D09 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8D13 SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x8D26 SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP3 MLOAD SWAP4 MLOAD PUSH1 0x60 SWAP3 DUP4 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 DUP1 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE SWAP1 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6CB PUSH2 0x77E8 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP9 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 SWAP9 POP PUSH2 0x8DED PUSH1 0x60 PUSH2 0x8DF6 SWAP4 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0xBE7E JUMP JUMPDEST SWAP1 DUP2 DUP7 MSTORE PUSH2 0x6A07 JUMP JUMPDEST SWAP7 PUSH2 0x8E1B PUSH2 0x8E0A PUSH1 0xC0 DUP10 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x23AF PUSH1 0xA0 DUP11 ADD MLOAD DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 GT PUSH2 0x8D96 JUMPI POP PUSH2 0x8BC4 JUMP JUMPDEST PUSH2 0x8E4E SWAP2 SWAP10 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x8B55 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD PUSH2 0x8E6C PUSH2 0x2409 DUP3 MLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x8ADE JUMP JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x449E JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x8ED4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH1 0x80 SHR DUP1 PUSH2 0x8EF2 JUMPI JUMPDEST POP POP PUSH1 0x2 SWAP2 PUSH2 0x8EEE SWAP2 PUSH2 0x8E73 JUMP JUMPDEST SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x8F53 PUSH2 0x8EEE SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x8F5C JUMPI JUMPDEST POP PUSH2 0xB8A2 JUMP JUMPDEST SWAP3 DUP2 SWAP3 POP PUSH2 0x8EE0 JUMP JUMPDEST PUSH2 0x8F75 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x8F4D JUMP JUMPDEST DUP2 ISZERO PUSH2 0x8F85 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x8E8B JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x4A3D JUMPI PUSH5 0x174876E800 SWAP1 DIV DUP1 PUSH1 0x18 SHR PUSH2 0x8FD5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF SWAP1 PUSH1 0x12 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x9050 PUSH2 0x905B SWAP3 SWAP5 SWAP4 SWAP5 PUSH2 0x9010 PUSH2 0x5769 JUMP JUMPDEST SWAP6 DUP7 SWAP2 PUSH2 0x9046 PUSH1 0x20 DUP4 ADD DUP1 MLOAD SWAP1 PUSH2 0x9036 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0x40 DUP8 ADD MLOAD AND SWAP1 PUSH2 0xAF4C JUMP JUMPDEST DUP7 MSTORE MLOAD SWAP1 PUSH1 0x60 DUP5 ADD MLOAD AND SWAP1 PUSH2 0xAF4C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x911B JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE MLOAD PUSH2 0xB0C0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP3 PUSH2 0x90B2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x5211FA7700000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x90FC JUMPI JUMPDEST POP ISZERO PUSH2 0x90D4 JUMPI JUMP JUMPDEST PUSH32 0xE91E17E700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x9115 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x90CC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 MLOAD PUSH2 0x9129 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9132 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9177 JUMPI SWAP1 PUSH2 0x916E PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH2 0x7EF8 PUSH1 0x80 PUSH2 0x9173 SWAP6 ADD MLOAD SWAP4 PUSH1 0xA0 PUSH2 0x9162 PUSH1 0xC0 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5EA4 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP3 PUSH2 0x91AD PUSH2 0x211E PUSH1 0x80 PUSH2 0x7EFF SWAP5 ADD MLOAD SWAP5 PUSH1 0xA0 PUSH2 0x91A1 PUSH1 0x20 PUSH1 0xC0 DUP8 ADD MLOAD SWAP4 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP5 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP3 PUSH2 0x5EA4 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x6BC JUMPI PUSH1 0x20 DUP3 MLOAD PUSH2 0x91CC DUP2 PUSH2 0xA96 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x9223 PUSH1 0x40 SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 SWAP2 DUP7 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH2 0x9284 JUMPI JUMPDEST POP ISZERO PUSH2 0x925C JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x4A3D JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH2 0x92A8 SWAP2 POP PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x92AF JUMPI JUMPDEST PUSH2 0x92A0 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x91B3 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x9244 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x9296 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0xDA1 SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH2 0x92CF PUSH1 0x20 DUP5 ADD DUP3 MLOAD PUSH2 0x1614 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x120 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x9350 PUSH2 0x140 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP2 ADD MLOAD SWAP1 PUSH2 0x936C PUSH2 0x160 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD MLOAD SWAP2 PUSH2 0x180 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x101F JUMP JUMPDEST SWAP4 SWAP6 SWAP1 SWAP2 SWAP5 SWAP3 DUP7 MLOAD PUSH2 0x938E DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9397 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x95E6 JUMPI DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 JUMPDEST DUP3 MLOAD SWAP5 PUSH2 0x93B0 DUP7 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 SWAP8 DUP9 SWAP8 DUP9 DUP7 ADD MLOAD PUSH2 0x93C9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x93DF SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD SWAP3 DUP4 MLOAD DUP2 MLOAD PUSH2 0x93F1 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP1 PUSH1 0x20 ADD MLOAD PUSH2 0x9402 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x9419 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP8 PUSH1 0xC0 ADD MLOAD SWAP9 PUSH2 0x9427 PUSH2 0x901 JUMP JUMPDEST SWAP11 PUSH2 0x9432 SWAP1 DUP13 PUSH2 0x5DB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP12 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE DUP2 MLOAD SWAP7 DUP8 DUP1 DUP1 SWAP4 PUSH32 0x18B6EB5500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x94CA SWAP2 PUSH2 0x92B6 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH2 0x95C2 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x959A JUMPI PUSH1 0x9 SHR PUSH1 0x1 AND ISZERO PUSH2 0x9594 JUMPI POP DUP1 MLOAD PUSH2 0x9508 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9511 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO DUP1 PUSH2 0x9587 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x955C JUMPI JUMPDEST PUSH2 0x9527 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0xA0 ADD MLOAD PUSH32 0xCC0E4A9900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 DUP2 MLOAD PUSH2 0x956A DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9573 DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x951F JUMPI POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 GT PUSH2 0x951F JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 LT PUSH2 0x9518 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x15A29DEC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x95DD SWAP4 SWAP7 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x92AF JUMPI PUSH2 0x92A0 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP4 SWAP1 PUSH0 DUP1 PUSH2 0x94EA JUMP JUMPDEST DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 SWAP3 SWAP5 PUSH2 0x93A4 JUMP JUMPDEST DUP1 PUSH2 0x95FD JUMPI POP JUMP JUMPDEST PUSH2 0x6CB SWAP1 PUSH2 0xAD93 JUMP JUMPDEST PUSH2 0x2CC8 PUSH2 0x6CB SWAP3 PUSH2 0xB8A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP3 AND DUP1 SWAP3 SUB PUSH2 0x963A JUMPI POP POP JUMP JUMPDEST PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH32 0x0 GT PUSH2 0x9692 JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x18FE738500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP3 PUSH2 0x9737 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP3 PUSH2 0x96FB DUP6 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0xEF8B30F700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP10 DUP11 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP9 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9753 SWAP2 PUSH0 SWAP2 PUSH2 0x992F JUMPI JUMPDEST POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 DUP1 SWAP7 PUSH2 0x9771 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x977B PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9925 JUMPI POP SWAP2 DUP2 DUP9 SWAP4 DUP9 SWAP6 SWAP4 PUSH1 0x80 SHR SWAP1 DUP7 DUP3 LT ISZERO PUSH0 EQ PUSH2 0x97F5 JUMPI POP POP SWAP3 PUSH2 0x97EA SWAP7 SWAP3 PUSH2 0x97F0 SWAP3 PUSH2 0x97D0 DUP7 PUSH2 0x97CB DUP6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 PUSH2 0x6CB SWAP13 SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x7032 JUMP JUMPDEST SWAP9 DUP10 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x9606 JUMP JUMPDEST PUSH2 0x785E JUMP JUMPDEST SWAP2 SWAP3 SWAP5 POP SWAP7 SWAP3 SWAP5 POP PUSH2 0x9820 PUSH2 0x981B PUSH2 0x980D DUP7 DUP6 PUSH2 0x8EB8 JUMP JUMPDEST PUSH2 0x9816 DUP13 PUSH2 0xB8A2 JUMP JUMPDEST PUSH2 0x96C7 JUMP JUMPDEST PUSH2 0xBEC2 JUMP JUMPDEST SWAP5 PUSH2 0x982C DUP7 DUP6 DUP4 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP3 DUP7 PUSH1 0x44 DUP2 PUSH0 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP13 PUSH2 0x98CF DUP16 SWAP8 PUSH2 0x97D0 SWAP6 PUSH2 0x6CB SWAP14 DUP11 PUSH2 0x97F0 SWAP13 DUP7 SWAP16 DUP16 SWAP6 SWAP1 DUP14 SWAP2 PUSH0 SWAP7 PUSH2 0x98E0 JUMPI JUMPDEST POP POP PUSH2 0x98CF SWAP3 SWAP2 PUSH2 0x98C9 DUP7 DUP7 DUP10 DUP6 PUSH2 0x98C4 PUSH2 0x98D4 SWAP12 SWAP13 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP9 PUSH2 0xBEF7 JUMP JUMPDEST PUSH2 0xAD4E JUMP JUMPDEST AND PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x55E5 JUMP JUMPDEST SWAP5 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0x7032 JUMP JUMPDEST PUSH2 0x98D4 SWAP7 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP7 PUSH2 0x9917 PUSH2 0x98CF SWAP8 SWAP7 SWAP5 DUP5 PUSH2 0x98C9 SWAP6 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP9 POP POP SWAP3 POP DUP2 SWAP4 SWAP5 POP PUSH2 0x9897 JUMP JUMPDEST SWAP8 POP SWAP1 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x9946 SWAP2 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x974D JUMP JUMPDEST SWAP3 PUSH2 0x99A3 SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP3 PUSH2 0x9966 DUP7 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 SWAP2 DUP3 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP10 DUP11 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP10 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x99BF SWAP2 PUSH0 SWAP2 PUSH2 0x9B92 JUMPI JUMPDEST POP PUSH2 0x69F9 JUMP JUMPDEST SWAP1 DUP8 SWAP7 DUP3 SWAP9 PUSH2 0x99DF DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP4 PUSH2 0x99E9 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9B85 JUMPI POP POP SWAP2 DUP9 SWAP4 SWAP2 DUP9 SWAP6 SWAP4 DUP3 PUSH1 0x80 SHR SWAP2 DUP8 DUP4 LT ISZERO PUSH0 EQ PUSH2 0x9A3C JUMPI POP POP POP SWAP3 PUSH2 0x97EA SWAP7 SWAP3 PUSH2 0x97F0 SWAP3 PUSH2 0x97D0 DUP7 PUSH2 0x97CB DUP6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 PUSH2 0x6CB SWAP13 SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x6A07 JUMP JUMPDEST SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP7 SWAP3 PUSH2 0x9A62 PUSH2 0x981B PUSH2 0x9A54 DUP9 DUP9 PUSH2 0xACB9 JUMP JUMPDEST PUSH2 0x9A5D DUP13 PUSH2 0xB8A2 JUMP JUMPDEST PUSH2 0x8E73 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x4 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP4 DUP2 PUSH1 0x24 DUP2 DUP9 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9A91 SWAP2 PUSH0 SWAP2 PUSH2 0x9B68 JUMPI JUMPDEST POP DUP6 DUP4 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x94BF804D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP6 DUP4 DUP8 PUSH1 0x44 DUP2 PUSH0 DUP10 GAS CALL SWAP6 DUP7 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP13 PUSH2 0x98CF DUP16 SWAP8 PUSH2 0x98D4 DUP12 DUP5 SWAP14 PUSH2 0x6CB SWAP16 PUSH2 0x97D0 SWAP10 DUP6 PUSH2 0x97F0 SWAP16 DUP16 SWAP4 DUP16 SWAP2 PUSH0 SWAP7 PUSH2 0x9B29 JUMPI JUMPDEST POP POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP2 DUP6 DUP8 DUP4 PUSH2 0x98C4 PUSH2 0x98CF SWAP10 SWAP11 PUSH2 0x98C9 SWAP7 PUSH2 0xBEF7 JUMP JUMPDEST PUSH2 0x98CF SWAP7 POP SWAP2 PUSH2 0x9B5C PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 SWAP5 SWAP3 DUP5 PUSH2 0x98C9 SWAP6 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP7 POP SWAP2 DUP2 SWAP4 SWAP5 POP PUSH2 0x9B00 JUMP JUMPDEST PUSH2 0x9B7F SWAP2 POP DUP6 RETURNDATASIZE DUP8 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x9A89 JUMP JUMPDEST SWAP10 POP SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x9BA9 SWAP2 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x99B9 JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x9BBB DUP6 PUSH2 0xEBD JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x9F08 JUMPI PUSH2 0x9BD1 PUSH1 0x20 PUSH2 0x5FEC DUP8 PUSH2 0x55D7 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9BF5 SWAP2 PUSH0 SWAP2 PUSH2 0x9EEF JUMPI POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0x9C13 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x9C1D PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9EE7 JUMPI DUP7 SWAP3 DUP9 SWAP3 SWAP1 SWAP2 PUSH1 0x80 DUP4 SWAP1 SHR SWAP2 DUP6 DUP4 LT PUSH2 0x9C90 JUMPI POP POP POP SWAP3 PUSH2 0x9C8A DUP3 PUSH2 0x9C6D DUP7 PUSH2 0x97CB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 PUSH2 0x6CB SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x6A07 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x97EA DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST AND PUSH2 0x785E JUMP JUMPDEST SWAP1 SWAP3 SWAP4 POP PUSH2 0x9C9F SWAP2 SWAP5 POP PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x9D94 JUMPI PUSH2 0x9CBD PUSH2 0x981B PUSH2 0x9CB4 DUP6 DUP5 PUSH2 0x8EB8 JUMP JUMPDEST PUSH2 0x9816 DUP11 PUSH2 0xB8A2 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP4 PUSH2 0x9CD4 DUP2 DUP7 DUP10 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 PUSH1 0x20 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9C6D DUP10 SWAP6 PUSH2 0x98DA DUP8 PUSH2 0x98CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 SWAP7 DUP9 DUP16 DUP10 PUSH2 0x6CB SWAP16 DUP6 SWAP15 PUSH2 0x98C9 DUP16 PUSH2 0x9C8A SWAP16 PUSH2 0x98CF SWAP7 PUSH2 0x98D4 SWAP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH0 SWAP2 PUSH2 0x9D75 JUMPI JUMPDEST POP SWAP11 DUP12 SWAP4 JUMPDEST AND SWAP1 PUSH2 0x98C4 DUP3 DUP3 PUSH2 0xBEF7 JUMP JUMPDEST PUSH2 0x9D8E SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x9D64 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x9DAF PUSH2 0x981B PUSH2 0x9DA6 DUP4 DUP6 PUSH2 0xACB9 JUMP JUMPDEST PUSH2 0x9A5D DUP10 PUSH2 0xB8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP4 PUSH1 0x20 SWAP4 SWAP3 SWAP1 SWAP2 DUP5 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9E0E SWAP2 PUSH0 SWAP2 PUSH2 0x9ECA JUMPI JUMPDEST POP DUP7 DUP11 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x94BF804D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP5 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x6CB SWAP7 PUSH2 0x98DA DUP12 PUSH2 0x98CF DUP6 DUP16 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 SWAP16 SWAP11 DUP5 SWAP16 DUP16 SWAP7 PUSH2 0x9C8A SWAP16 SWAP8 PUSH2 0x98CF SWAP7 PUSH2 0x9C6D SWAP16 SWAP10 PUSH2 0x98D4 SWAP11 PUSH2 0x98C9 SWAP6 PUSH0 SWAP3 PUSH2 0x9EAD JUMPI JUMPDEST POP POP SWAP9 DUP10 SWAP3 PUSH2 0x9D69 JUMP JUMPDEST PUSH2 0x9EC3 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x9EA3 JUMP JUMPDEST PUSH2 0x9EE1 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x9E06 JUMP JUMPDEST POP SWAP1 SWAP4 POP POP POP JUMP JUMPDEST PUSH2 0x9946 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH2 0x9F4E PUSH1 0x20 PUSH2 0x9F16 DUP8 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9F72 SWAP2 PUSH0 SWAP2 PUSH2 0x9F78 JUMPI POP PUSH2 0x69F9 JUMP JUMPDEST SWAP6 PUSH2 0x9BF8 JUMP JUMPDEST PUSH2 0x9BA9 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x9FE8 SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH2 0x9FAC DUP7 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP9 DUP10 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP7 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA003 SWAP2 PUSH0 SWAP2 PUSH2 0xA182 JUMPI POP PUSH2 0x69F9 JUMP JUMPDEST DUP7 SWAP6 DUP2 SWAP8 PUSH2 0xA022 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 PUSH2 0xA02C PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0xA176 JUMPI POP POP SWAP2 DUP7 SWAP4 SWAP2 DUP9 SWAP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 AND SWAP1 DUP8 DUP3 LT ISZERO PUSH0 EQ PUSH2 0xA083 JUMPI POP POP SWAP3 PUSH2 0x97F0 SWAP3 PUSH2 0x97D0 DUP4 DUP9 PUSH2 0x97EA SWAP12 SWAP8 PUSH2 0xA07B DUP11 PUSH2 0x6CB SWAP13 SWAP12 SWAP9 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP3 AND SUB PUSH2 0x7032 JUMP JUMPDEST SWAP3 SWAP9 SWAP5 SWAP7 POP SWAP5 POP POP PUSH2 0xA0A4 PUSH2 0x981B PUSH2 0xA09B DUP5 DUP11 PUSH2 0x8EB8 JUMP JUMPDEST PUSH2 0x9A5D DUP12 PUSH2 0xB8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB460AF9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP6 SWAP1 SWAP3 DUP3 DUP5 PUSH1 0x64 DUP2 PUSH0 DUP7 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP5 PUSH2 0x97F0 SWAP8 DUP16 DUP16 PUSH2 0x6CB SWAP14 DUP2 SWAP14 DUP14 PUSH2 0x97D0 SWAP10 DUP6 SWAP14 PUSH0 SWAP8 PUSH2 0xA13D JUMPI JUMPDEST POP POP SWAP2 PUSH2 0x98CF SWAP2 PUSH2 0xA12F DUP8 DUP4 PUSH2 0x98CF SWAP10 SWAP11 PUSH2 0xA134 SWAP9 SWAP8 PUSH2 0xADE3 JUMP JUMPDEST PUSH2 0x6A07 JUMP JUMPDEST SWAP5 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x98CF SWAP8 POP DUP5 SWAP3 PUSH2 0xA134 SWAP7 SWAP6 PUSH2 0xA167 PUSH2 0x98CF SWAP7 SWAP5 DUP5 PUSH2 0xA12F SWAP6 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP10 POP POP SWAP3 SWAP5 SWAP6 POP DUP2 SWAP4 POP PUSH2 0xA114 JUMP JUMPDEST SWAP9 POP SWAP7 POP SWAP1 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x9BA9 SWAP2 POP DUP8 RETURNDATASIZE DUP10 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP3 PUSH2 0xA1F0 SWAP4 SWAP3 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA1B4 DUP5 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP10 DUP11 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP6 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA20B SWAP2 PUSH0 SWAP2 PUSH2 0x992F JUMPI POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 DUP5 SWAP7 PUSH2 0xA229 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 PUSH2 0xA233 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0xA34B JUMPI POP DUP7 SWAP4 SWAP3 DUP9 SWAP3 SWAP1 SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP9 DUP3 AND DUP8 DUP2 LT PUSH2 0xA27E JUMPI POP POP SWAP2 DUP4 SWAP2 PUSH2 0x97D0 DUP10 DUP9 PUSH2 0x97F0 SWAP7 PUSH2 0xA07B PUSH2 0x6CB SWAP12 SWAP11 SWAP10 PUSH2 0x97EA SWAP15 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP3 SWAP5 SWAP4 POP POP PUSH2 0xA296 PUSH2 0x981B PUSH2 0x980D DUP8 DUP11 PUSH2 0xACB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP6 SWAP1 SWAP5 SWAP1 DUP4 DUP8 PUSH1 0x64 DUP2 PUSH0 DUP7 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP9 PUSH2 0x98CF DUP16 DUP16 SWAP12 DUP13 PUSH2 0x98CF PUSH2 0x6CB SWAP16 SWAP12 PUSH2 0x97D0 SWAP10 DUP16 SWAP5 PUSH2 0x97F0 SWAP16 DUP8 SWAP16 SWAP7 DUP16 SWAP2 SWAP8 PUSH2 0xA134 SWAP9 PUSH0 SWAP7 PUSH2 0xA324 JUMPI JUMPDEST POP POP PUSH2 0xA12F SWAP3 SWAP2 DUP6 SWAP2 PUSH2 0xADE3 JUMP JUMPDEST PUSH2 0xA12F SWAP5 SWAP4 SWAP7 POP SWAP1 DUP2 PUSH2 0xA342 SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP5 SWAP2 SWAP3 PUSH0 PUSH2 0xA316 JUMP JUMPDEST SWAP8 POP POP POP POP POP JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0xA35E DUP6 PUSH2 0xEBD JUMP JUMPDEST DUP5 ISZERO SWAP5 DUP6 ISZERO PUSH2 0xA5FA JUMPI PUSH2 0xA375 PUSH1 0x20 PUSH2 0x64B5 DUP8 PUSH2 0x55D7 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA399 SWAP2 PUSH0 SWAP2 PUSH2 0x9EEF JUMPI POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0xA3B7 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0xA3C1 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9EE7 JUMPI DUP8 SWAP4 DUP8 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP2 DUP7 DUP4 LT PUSH2 0xA434 JUMPI POP POP POP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xA40F DUP4 DUP7 PUSH2 0x6CB SWAP9 PUSH2 0xA07B DUP7 PUSH2 0x97F0 SWAP9 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0xA42C DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE JUMPDEST AND PUSH2 0x9606 JUMP JUMPDEST SWAP2 SWAP7 POP SWAP3 SWAP5 POP PUSH2 0xA444 SWAP2 POP PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0xA534 JUMPI PUSH2 0xA459 PUSH2 0x981B PUSH2 0x9CB4 DUP8 DUP6 PUSH2 0xACB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP4 SWAP1 PUSH1 0x20 DUP6 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA4F2 DUP10 SWAP6 PUSH2 0x98DA DUP5 PUSH2 0x98CF DUP15 PUSH2 0xA134 DUP12 DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x6CB SWAP16 SWAP13 PUSH2 0xA12F DUP16 SWAP14 PUSH2 0x97F0 SWAP16 SWAP5 DUP9 SWAP16 DUP6 SWAP16 PUSH2 0x98CF SWAP8 PUSH0 SWAP2 PUSH2 0xA515 JUMPI JUMPDEST POP SWAP6 DUP7 SWAP3 JUMPDEST AND SWAP1 PUSH2 0xADE3 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0xA50F DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0xA42E JUMP JUMPDEST PUSH2 0xA52E SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xA4E6 JUMP JUMPDEST PUSH2 0xA544 PUSH2 0x981B PUSH2 0x9DA6 DUP8 DUP6 PUSH2 0x8EB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB460AF9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 PUSH1 0x20 DUP3 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA4F2 DUP10 SWAP6 PUSH2 0x98DA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x98CF DUP15 PUSH2 0xA134 DUP12 DUP16 DUP11 PUSH2 0x6CB SWAP16 PUSH2 0xA12F DUP16 SWAP4 PUSH2 0x97F0 SWAP16 SWAP15 DUP9 SWAP16 SWAP6 DUP12 SWAP16 SWAP7 PUSH2 0x98CF SWAP8 PUSH0 SWAP2 PUSH2 0xA5DB JUMPI JUMPDEST POP SWAP12 DUP13 SWAP4 PUSH2 0xA4EB JUMP JUMPDEST PUSH2 0xA5F4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xA5D2 JUMP JUMPDEST PUSH2 0xA640 PUSH1 0x20 PUSH2 0xA608 DUP8 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA664 SWAP2 PUSH0 SWAP2 PUSH2 0x9F78 JUMPI POP PUSH2 0x69F9 JUMP JUMPDEST SWAP6 PUSH2 0xA39C JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x7032 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0xA791 JUMPI PUSH2 0xA6B0 DUP4 PUSH2 0xA6AA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0xA6CF DUP6 PUSH2 0x7904 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0xA6DE DUP2 PUSH2 0xB943 JUMP JUMPDEST PUSH2 0xA6F9 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0xA732 DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x545A JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI TSTORE JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0xA803 DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0xB97B JUMP JUMPDEST PUSH2 0xA80C DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0xA81E JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0xA850 PUSH2 0xA837 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x916E PUSH2 0xA845 DUP6 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP7 DUP11 PUSH2 0x5659 JUMP JUMPDEST DIV PUSH2 0xA85B DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xA80F JUMP JUMPDEST SWAP6 SWAP2 SWAP4 PUSH2 0xA893 PUSH2 0xDA1 SWAP9 SWAP7 SWAP5 PUSH2 0xA8A4 SWAP4 PUSH2 0x7F6A SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x54B9 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 SWAP7 PUSH2 0xA931 PUSH2 0xA8DB DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0xA8EB DUP10 PUSH2 0x54AF JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x60 DUP4 ADD MLOAD SWAP4 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0x45421EC700000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0xA862 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0xA974 JUMPI JUMPDEST POP ISZERO PUSH2 0xA94C JUMPI JUMP JUMPDEST PUSH32 0xB2EB65200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0xA98D SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xA944 JUMP JUMPDEST SWAP7 SWAP3 PUSH2 0xDA1 SWAP9 SWAP7 SWAP5 PUSH2 0xA9E9 SWAP4 PUSH2 0xA9CD PUSH2 0xA9DB SWAP4 PUSH2 0x88ED SWAP10 SWAP6 PUSH2 0x100 SWAP4 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x54B9 JUMP JUMPDEST DUP1 PUSH1 0x60 DUP12 ADD MSTORE DUP10 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x80 DUP10 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP6 SWAP3 SWAP7 SWAP1 DUP5 MLOAD PUSH2 0xAA15 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD SWAP2 PUSH2 0xAA24 DUP4 PUSH2 0x54AF JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 PUSH1 0x40 SWAP7 DUP13 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP8 DUP9 SWAP8 PUSH32 0x976907CC00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0xAA6C SWAP9 PUSH2 0xA993 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP7 PUSH2 0xAB86 JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0xAB7A JUMPI JUMPDEST PUSH2 0xAB52 JUMPI PUSH1 0x1 DUP1 SWAP5 PUSH1 0x9 SHR AND ISZERO PUSH2 0xAAB8 JUMPI SWAP1 SWAP2 SWAP3 DUP1 SWAP5 SWAP6 POP PUSH0 SWAP1 JUMPDEST PUSH2 0xAAC0 JUMPI JUMPDEST POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0xAB4D JUMPI PUSH2 0xAAD3 DUP2 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP3 DUP6 ADD SWAP1 PUSH2 0xAAE3 DUP4 DUP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD LT PUSH2 0xAAF2 JUMPI POP DUP5 ADD DUP5 PUSH2 0xAAB3 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0xAB10 DUP4 PUSH2 0x80D2 DUP2 PUSH2 0x8A0A PUSH2 0x28F7 PUSH2 0x2358 SWAP9 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0xCEFA3AFA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0xAAB8 JUMP JUMPDEST PUSH32 0xE124916500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP5 MLOAD DUP7 MLOAD EQ ISZERO PUSH2 0xAA98 JUMP JUMPDEST SWAP1 POP PUSH2 0xAB9D SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8A9D DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP5 SWAP1 PUSH0 PUSH2 0xAA8F JUMP JUMPDEST PUSH5 0x174876E800 PUSH2 0xDA1 SWAP3 DIV SWAP1 PUSH2 0xB692 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x4A3D JUMPI PUSH2 0xDA1 SWAP2 PUSH5 0x174876E800 PUSH1 0x42 SWAP3 DIV SWAP1 PUSH2 0xB6AC JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xDA1 SWAP3 AND PUSH2 0x7032 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xACB5 JUMPI PUSH32 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH2 0xAC3E PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP3 DUP4 PUSH2 0x96C7 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0xAC7E JUMPI POP PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP5 TSTORE PUSH2 0xAFB2 JUMP JUMPDEST SWAP3 PUSH2 0x6CB SWAP4 PUSH2 0xAFB2 JUMPI PUSH2 0xACB0 PUSH32 0x0 PUSH2 0xA7C6 JUMP JUMPDEST PUSH2 0xAFB2 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH2 0xACC6 DUP3 PUSH1 0x80 SHR PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 SWAP4 AND DUP1 PUSH2 0xACEE JUMPI POP POP PUSH1 0x2 SWAP2 PUSH2 0x8EEE SWAP2 PUSH2 0x8E73 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x8F53 PUSH2 0x8EEE SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x8F5C JUMPI POP PUSH2 0xB8A2 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x449E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP4 PUSH2 0xC0AB JUMP JUMPDEST PUSH32 0x0 GT PUSH2 0xADBB JUMPI JUMP JUMPDEST PUSH32 0x1ED4D11800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x449E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP4 PUSH2 0xC0AB JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP1 SWAP5 PUSH0 SWAP6 PUSH0 SWAP6 DUP2 PUSH2 0xAE3D JUMPI POP POP POP POP POP JUMP JUMPDEST DUP5 SWAP8 POP PUSH2 0x6FF8 PUSH2 0xAE56 DUP3 PUSH1 0xC0 PUSH2 0xAE62 SWAP7 SWAP8 SWAP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP5 MLOAD PUSH1 0x1 DUP2 PUSH1 0x3 SHR AND ISZERO PUSH2 0xAE78 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST PUSH3 0xFFFFFF SWAP2 SWAP3 SWAP5 POP PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI PUSH2 0xAEAE PUSH8 0xDE0B6B3A7640000 SWAP2 DUP7 PUSH2 0x5EA4 JUMP JUMPDEST DIV SWAP3 DUP5 DUP5 GT PUSH2 0xAF24 JUMPI DUP1 PUSH2 0x7904 PUSH2 0xAF03 PUSH2 0xAEE0 PUSH2 0xAF1B SWAP5 PUSH2 0x7904 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xAEFD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0xA66A JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 DUP1 PUSH2 0xAE71 JUMP JUMPDEST PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xAF7D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0xAF6B DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD AND SWAP1 DUP4 AND EQ PUSH2 0x9594 JUMPI PUSH1 0x1 ADD PUSH2 0xAF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH32 0xDDEF98D700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH1 0x5 SHR PUSH1 0x1 AND ISZERO PUSH2 0xAFD5 JUMPI JUMP JUMPDEST PUSH32 0x4876C0BC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 SHR PUSH1 0x1 AND PUSH2 0xB009 JUMPI JUMP JUMPDEST PUSH32 0xD4F5779C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD SWAP1 DUP2 SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xB073 JUMPI POP POP DUP2 LT ISZERO PUSH2 0xB04B JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x7E46BDDC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0xB07D DUP2 DUP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB08B JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0xB038 JUMP JUMPDEST SWAP3 DUP3 SUB PUSH2 0xB098 JUMPI DUP3 PUSH2 0xB083 JUMP JUMPDEST PUSH32 0x6B8C3BE500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST PUSH2 0xB0FB PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 SWAP5 SWAP2 PUSH1 0x20 PUSH2 0xB16B PUSH2 0xB11F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x6A07 JUMP JUMPDEST SWAP5 PUSH2 0xB12A DUP8 DUP8 PUSH2 0xBE25 JUMP JUMPDEST PUSH2 0xB134 DUP2 DUP4 PUSH2 0xC2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP14 DUP11 PUSH1 0x4 DUP6 ADD PUSH2 0xB0E3 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xB1F6 SWAP6 PUSH2 0x98CF PUSH2 0xB1CA DUP6 PUSH2 0xB1E0 SWAP5 PUSH2 0xB1E9 SWAP10 DUP13 SWAP10 DUP11 PUSH2 0xB1F0 SWAP10 PUSH0 SWAP5 PUSH2 0xB1F9 JUMPI JUMPDEST POP SWAP1 PUSH2 0xB1BE PUSH2 0xB1B7 PUSH2 0xB1B0 PUSH2 0xB1C5 SWAP5 PUSH2 0x83E0 SWAP8 SWAP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP8 PUSH2 0x55E5 JUMP JUMPDEST SWAP13 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0x8F7B JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL DUP3 PUSH2 0xBE25 JUMP JUMPDEST SWAP4 DUP5 SWAP3 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP6 DUP7 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x6A07 JUMP JUMPDEST SWAP2 JUMP JUMPDEST PUSH2 0x83E0 SWAP5 POP PUSH2 0xB1B7 PUSH2 0xB1B0 PUSH2 0xB1C5 SWAP5 SWAP4 PUSH2 0xB224 PUSH2 0xB1BE SWAP5 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 POP SWAP4 SWAP5 POP POP POP PUSH2 0xB197 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD PUSH2 0xB241 DUP5 MLOAD DUP3 PUSH2 0x7E72 JUMP JUMPDEST PUSH1 0x5 SHL SWAP4 ADD SWAP2 ADD MCOPY JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0xB262 PUSH0 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0xB262 PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP4 DUP4 MLOAD PUSH2 0xB28E DUP2 PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH2 0xB298 DUP3 PUSH2 0x5628 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xB494 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x40 MLOAD SWAP6 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP9 MSTORE PUSH1 0x20 SWAP9 DUP10 DUP10 DUP1 PUSH2 0xB2EB DUP5 PUSH1 0x4 DUP4 ADD PUSH2 0xB24B JUMP JUMPDEST SUB DUP2 DUP10 GAS STATICCALL SWAP9 DUP10 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP10 PUSH2 0xB475 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0xB315 DUP12 PUSH1 0x4 DUP4 ADD PUSH2 0xB267 JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI DUP11 PUSH2 0xB1C5 PUSH2 0xB350 SWAP4 PUSH2 0xB349 SWAP4 DUP16 PUSH0 SWAP3 PUSH2 0xB458 JUMPI JUMPDEST SWAP12 SWAP10 SWAP14 SWAP13 SWAP11 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 POP PUSH2 0x5E87 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xC2B2 JUMP JUMPDEST PUSH0 JUMPDEST DUP10 DUP2 LT PUSH2 0xB3BF JUMPI POP POP POP POP PUSH2 0xB376 SWAP6 POP PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP5 DUP3 SWAP4 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xB267 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI DUP4 PUSH2 0xB1C5 SWAP4 PUSH2 0xB39C SWAP3 PUSH2 0xB1F6 SWAP8 PUSH0 SWAP3 PUSH2 0xB3A2 JUMPI JUMPDEST POP POP PUSH2 0x55E5 JUMP JUMPDEST SWAP1 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0xB3B8 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xB395 JUMP JUMPDEST DUP7 SWAP9 SWAP10 SWAP6 SWAP8 POP DUP4 DUP14 DUP4 SWAP5 SWAP6 SWAP7 SWAP9 DUP4 PUSH2 0xB3E3 PUSH2 0xB3DC DUP3 PUSH1 0x1 SWAP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP10 PUSH2 0xC29F JUMP JUMPDEST DUP1 PUSH2 0xB3EE DUP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD GT PUSH2 0xB40A JUMPI JUMPDEST POP POP POP POP POP ADD SWAP1 DUP11 SWAP7 SWAP5 SWAP9 SWAP8 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0xB352 JUMP JUMPDEST DUP2 DUP4 PUSH2 0xB42B PUSH2 0xB443 SWAP8 PUSH2 0xB435 SWAP5 PUSH2 0xB424 DUP6 PUSH2 0xB43C SWAP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SUB PUSH2 0xB641 JUMP JUMPDEST PUSH2 0x7257 DUP4 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0xB44D DUP3 DUP12 PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP5 DUP14 DUP11 DUP4 PUSH0 PUSH2 0xB3F5 JUMP JUMPDEST PUSH2 0xB46E SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP16 PUSH2 0xB335 JUMP JUMPDEST PUSH2 0xB48D SWAP2 SWAP10 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0xB2FE JUMP JUMPDEST DUP1 PUSH2 0xB4BE PUSH2 0xB4B9 PUSH2 0xB4A7 PUSH1 0x1 SWAP5 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB4B2 DUP5 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x55D7 JUMP JUMPDEST PUSH2 0xB4C8 DUP3 DUP9 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xB29B JUMP JUMPDEST PUSH1 0x7 SHR PUSH1 0x1 AND ISZERO PUSH2 0xB4DC JUMPI JUMP JUMPDEST PUSH32 0xEFE0265D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 PUSH2 0xB510 DUP5 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xB545 JUMPI DUP1 PUSH2 0xB534 DUP6 DUP6 PUSH2 0xB52E PUSH1 0x1 SWAP6 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xBE7E JUMP JUMPDEST PUSH2 0xB53E DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xB513 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP3 PUSH2 0xB559 SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 PUSH2 0xBE25 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB5A3 PUSH2 0x161E SWAP5 DUP1 PUSH2 0xB582 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x916E PUSH2 0xB594 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH2 0xB5E7 PUSH2 0x161E SWAP4 DUP1 PUSH2 0xB5C6 DUP6 PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x7EFF PUSH2 0xB5D8 DUP6 PUSH1 0xC0 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP7 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP3 PUSH2 0xB5E7 PUSH2 0x161E SWAP4 PUSH1 0x80 SWAP3 DUP2 PUSH2 0xB609 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0xB613 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0xB639 JUMPI PUSH1 0x2 SWAP1 JUMPDEST PUSH2 0xB629 DUP6 PUSH1 0xC0 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x42EE DUP7 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0xB61B JUMP JUMPDEST SWAP1 PUSH2 0xB64B SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0xB66D SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI DUP2 ISZERO PUSH2 0x8F85 JUMPI DIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x8FD5 JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x700A JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x449E JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0xB6EE JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x700A JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x8FD5 JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0xB6D0 JUMP JUMPDEST SWAP1 PUSH2 0x6CB PUSH2 0xB707 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x569A JUMP JUMPDEST SUB DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH2 0xB718 DUP3 PUSH2 0x922 JUMP JUMPDEST PUSH2 0xB725 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0xB735 DUP3 SWAP5 PUSH2 0x922 JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xB745 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0xB750 PUSH2 0x5980 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0xB739 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0xB769 DUP2 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0xB77C DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP1 MLOAD MLOAD SWAP4 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0xB7B4 JUMPI POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xB7C8 PUSH2 0x28F7 PUSH1 0x1 SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xB7F3 PUSH2 0xB7DD DUP4 DUP10 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB7FE DUP4 DUP8 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP2 GT PUSH2 0xB83E JUMPI JUMPDEST POP POP PUSH2 0xB825 PUSH2 0xB816 DUP3 DUP7 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xB837 DUP3 DUP9 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0xB7A5 JUMP JUMPDEST PUSH2 0xB882 PUSH2 0xB89A SWAP2 PUSH2 0xB87C PUSH2 0xB873 PUSH2 0xB866 DUP7 DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 PUSH2 0xB43C DUP9 DUP13 MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP3 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0xABDA JUMP JUMPDEST SWAP2 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 PUSH2 0xB806 JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB8CC JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0xB915 JUMPI POP POP POP POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0xB93F SWAP4 PUSH2 0x7904 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0xB950 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 EQ DUP1 ISZERO SWAP3 SWAP2 SWAP1 PUSH2 0xB98F JUMPI JUMPDEST POP POP PUSH2 0x7E79 JUMPI JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0xB987 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xB9A5 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0xB9AE DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP1 PUSH2 0xB9C1 JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xB9CD PUSH1 0x1 SWAP3 PUSH2 0xEBD JUMP JUMPDEST SUB PUSH2 0xBA42 JUMPI PUSH1 0x20 PUSH2 0xB9EC PUSH2 0x2075 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0xBA29 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x6 SHR PUSH1 0x1 AND ISZERO PUSH2 0xBA77 JUMPI JUMP JUMPDEST PUSH32 0xCF0A95C000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP5 SWAP3 SWAP2 SWAP3 DUP2 MLOAD SWAP5 PUSH2 0xBAB0 DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0xBC80 JUMPI POP PUSH2 0xBAC9 SWAP1 PUSH2 0x85F6 DUP10 DUP9 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xBAD3 DUP9 DUP8 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP5 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP8 MSTORE PUSH1 0x20 DUP8 DUP1 PUSH2 0xBB0E DUP9 PUSH1 0x4 DUP4 ADD PUSH2 0xB24B JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP8 PUSH2 0xBC5F JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP5 DUP7 MSTORE PUSH1 0x20 DUP7 DUP1 PUSH2 0xBB43 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xB24B JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x98CF PUSH2 0xB1CA DUP13 PUSH2 0xB43C PUSH2 0xBB9E PUSH2 0xBBA5 SWAP7 PUSH2 0xBB97 DUP16 PUSH2 0xBB87 PUSH2 0xBBDB SWAP16 SWAP2 PUSH1 0x20 SWAP15 DUP9 SWAP4 PUSH0 SWAP2 PUSH2 0xBC40 JUMPI JUMPDEST POP PUSH2 0xBE25 JUMP JUMPDEST SWAP3 PUSH2 0xBB92 DUP5 DUP14 PUSH2 0xC3D5 JUMP JUMPDEST PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST SWAP2 DUP9 PUSH2 0x5659 JUMP JUMPDEST SWAP4 PUSH2 0xBBB4 DUP6 PUSH2 0x85F6 DUP13 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xBBBE DUP12 DUP6 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xB267 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xB1F6 SWAP6 PUSH2 0xBC11 SWAP4 PUSH0 SWAP4 PUSH2 0xBC17 JUMPI JUMPDEST POP PUSH2 0xBC03 PUSH2 0xBC0A SWAP2 PUSH2 0x5628 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP4 PUSH2 0x55E5 JUMP JUMPDEST SWAP1 PUSH2 0xBE7E JUMP JUMPDEST PUSH2 0xBC0A SWAP2 SWAP4 POP PUSH2 0xBC38 PUSH2 0xBC03 SWAP2 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP4 SWAP2 POP PUSH2 0xBBF6 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xBC59 SWAP3 POP RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xBB81 JUMP JUMPDEST PUSH2 0xBC79 SWAP2 SWAP8 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP6 PUSH0 PUSH2 0xBB2A JUMP JUMPDEST DUP1 PUSH2 0xBC96 PUSH2 0xBC90 PUSH1 0x1 SWAP4 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x55D7 JUMP JUMPDEST PUSH2 0xBCA0 DUP3 DUP11 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xBAB3 JUMP JUMPDEST SWAP1 SWAP5 SWAP2 DUP4 SUB SWAP2 DUP4 DUP4 GT PUSH2 0x449E JUMPI PUSH1 0x20 PUSH2 0xBCD6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0xBCCC DUP8 DUP8 PUSH2 0xBE25 JUMP JUMPDEST PUSH2 0xB134 DUP2 DUP4 PUSH2 0xC3D5 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xB1F6 SWAP6 PUSH2 0x7EFF DUP9 PUSH2 0xB1E0 SWAP4 PUSH2 0xB1E9 SWAP9 PUSH2 0xBD21 SWAP7 PUSH0 SWAP3 PUSH2 0xBD27 JUMPI JUMPDEST POP PUSH2 0xBD0F DUP3 PUSH2 0x85F6 PUSH2 0x98CF SWAP5 SWAP6 DUP12 PUSH2 0x5659 JUMP JUMPDEST SWAP9 PUSH2 0xBD1A DUP14 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xBE7E JUMP JUMPDEST MSTORE PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x98CF SWAP3 POP PUSH2 0x85F6 SWAP4 PUSH2 0xBD4B PUSH2 0xBD0F SWAP3 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP4 POP SWAP4 POP PUSH2 0xBCFC JUMP JUMPDEST SWAP1 SWAP3 SWAP2 PUSH2 0xBD61 DUP3 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xBD9E JUMPI PUSH2 0xBD81 DUP4 PUSH2 0xBD7B DUP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 DUP7 ISZERO PUSH2 0x8F85 JUMPI DUP7 PUSH1 0x1 SWAP3 DIV PUSH2 0xBD97 DUP3 DUP8 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xBD64 JUMP JUMPDEST POP POP POP SWAP2 POP JUMP JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0xBDAF JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0xBDFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xBDEE SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI SSTORE JUMP JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xBE56 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 ISZERO PUSH2 0xBE56 JUMPI PUSH1 0x1 SWAP2 PUSH2 0xBE90 SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP1 DUP3 DIV MUL DUP2 SUB PUSH2 0xBEB4 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST PUSH0 DUP2 SLT PUSH2 0xBECC JUMPI SWAP1 JUMP JUMPDEST PUSH32 0xA8CE443200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH0 PUSH1 0x44 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 PUSH1 0x64 DUP2 ADD JUMPDEST SUB SWAP2 PUSH2 0xBF56 PUSH1 0x1F NOT SWAP4 DUP5 DUP2 ADD DUP8 MSTORE DUP7 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP3 DUP8 MLOAD SWAP1 DUP3 DUP6 GAS CALL SWAP1 PUSH2 0xBF73 PUSH2 0xC05E JUMP JUMPDEST DUP3 PUSH2 0xBFDD JUMPI JUMPDEST POP DUP2 PUSH2 0xBFD2 JUMPI JUMPDEST POP ISZERO PUSH2 0xBF8D JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 DUP6 ADD MSTORE PUSH0 PUSH1 0x44 DUP6 ADD MSTORE PUSH2 0xBFC8 SWAP4 PUSH2 0x4474 SWAP2 PUSH2 0xBFC2 SWAP1 DUP3 PUSH1 0x64 DUP2 ADD PUSH2 0x10C0 JUMP JUMPDEST DUP3 PUSH2 0xC22F JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST SWAP1 POP EXTCODESIZE ISZERO ISZERO PUSH0 PUSH2 0xBF80 JUMP JUMPDEST DUP1 MLOAD SWAP2 SWAP3 POP DUP2 ISZERO SWAP2 DUP3 ISZERO PUSH2 0xBFF5 JUMPI JUMPDEST POP POP SWAP1 PUSH0 PUSH2 0xBF79 JUMP JUMPDEST PUSH2 0xC008 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x5324 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xBFEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP3 DUP4 PUSH1 0x64 DUP2 ADD PUSH2 0xBF42 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xC088 JUMPI RETURNDATASIZE SWAP1 PUSH2 0xC06F DUP3 PUSH2 0xD34 JUMP JUMPDEST SWAP2 PUSH2 0xC07D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x86F JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xDA1 SWAP4 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 DUP6 GAS CALL PUSH2 0xC0A5 PUSH2 0xC05E JUMP JUMPDEST SWAP2 PUSH2 0xC479 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x20 SWAP6 SWAP4 SWAP5 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP8 DUP4 PUSH1 0x24 DUP2 DUP8 DUP7 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP4 PUSH2 0xC210 JUMPI JUMPDEST POP DUP1 DUP4 LT PUSH2 0xC1CB JUMPI POP PUSH2 0xC125 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND SWAP1 DUP5 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP6 PUSH2 0xC1AC JUMPI JUMPDEST POP POP DUP2 DUP5 LT PUSH2 0xC171 JUMPI POP POP PUSH2 0x5DB1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x1149424D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE POP PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH2 0xC1C3 SWAP3 SWAP6 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP3 PUSH0 DUP1 PUSH2 0xC14B JUMP JUMPDEST SWAP1 POP PUSH2 0x2358 SWAP3 DUP7 PUSH32 0x1C6A537500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 SWAP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE JUMP JUMPDEST PUSH2 0xC228 SWAP2 SWAP4 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0xC101 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC243 SWAP2 AND SWAP2 DUP3 PUSH2 0xC08D JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0xC284 JUMPI JUMPDEST POP POP PUSH2 0xC259 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xC297 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x5324 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0xC250 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH2 0x9173 SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x273C1ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0xC335 JUMPI JUMPDEST POP DUP2 DUP2 GT PUSH2 0xC307 JUMPI POP POP JUMP JUMPDEST PUSH32 0x3E8960DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0xC34F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0xC2FB JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0xC366 DUP3 PUSH2 0x5628 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xC37A JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP1 DUP3 MUL SWAP1 DUP3 DUP3 DIV EQ DUP3 ISZERO OR ISZERO PUSH2 0x449E JUMPI DUP3 PUSH1 0x1F SWAP2 SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x449E JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0xC3AB DUP3 DUP8 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xC36D JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xB677FA5600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0xC458 JUMPI JUMPDEST POP DUP2 DUP2 LT PUSH2 0xC42A JUMPI POP POP JUMP JUMPDEST PUSH32 0xE31C95BE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0xC472 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0xC41E JUMP JUMPDEST SWAP1 PUSH2 0xC4B6 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0xC48E JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0xC4FC JUMPI JUMPDEST PUSH2 0xC4C7 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0xC4BF JUMP JUMPDEST SWAP2 PUSH2 0x916E PUSH2 0x9173 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP5 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0xDA1 SWAP3 SWAP2 PUSH2 0x7EFF SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 DUP1 PUSH1 0x1 EQ PUSH2 0xC576 JUMPI PUSH1 0x2 EQ PUSH2 0xC569 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x51 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xDA1 SWAP3 PUSH2 0x7EFF SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST POP SWAP1 PUSH2 0x916E PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH2 0x9173 SWAP4 PUSH2 0x5EA4 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xD6 DUP10 GAS BYTE SWAP5 PUSH12 0x9D94F349F2B7FA809136DB13 0x1F 0xD9 0x4E XOR SWAP3 SWAP11 BLOBBASEFEE 0xF6 SLOAD 0xB5 SWAP13 0xC6 0xD9 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x705 SWAP1 DUP2 PUSH2 0x1A DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x136DEB1C EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0xA3AEF0B8 EQ PUSH2 0x321 JUMPI PUSH4 0xBB4AD7D5 EQ PUSH2 0x3C JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x30B JUMPI PUSH1 0x20 SWAP1 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0x30B JUMPI DUP1 CALLDATALOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP6 GT PUSH2 0x30B JUMPI CALLDATASIZE PUSH1 0x23 DUP7 ADD SLT ISZERO PUSH2 0x30B JUMPI DUP5 DUP4 ADD CALLDATALOAD PUSH1 0x24 SWAP6 PUSH2 0xA4 PUSH2 0x9F DUP4 PUSH2 0x5B1 JUMP JUMPDEST PUSH2 0x559 JUMP JUMPDEST SWAP4 DUP7 DUP6 DUP5 DUP2 MSTORE ADD SWAP1 DUP9 DUP3 SWAP5 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 CALLDATASIZE DUP5 GT PUSH2 0x30B JUMPI SWAP5 SWAP8 SWAP5 DUP10 ADD SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x282 JUMPI POP POP POP POP PUSH0 SWAP2 JUMPDEST DUP4 MLOAD SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x270 JUMPI DUP5 LT ISZERO PUSH2 0x1DA JUMPI PUSH0 JUMPDEST PUSH2 0x115 DUP6 DUP8 MLOAD PUSH2 0x686 JUMP JUMPDEST DUP9 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x1C8 JUMPI DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x146 DUP4 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD MLOAD AND PUSH1 0x1 DUP4 ADD SWAP2 DUP3 DUP5 GT PUSH2 0x1A8 JUMPI SWAP1 DUP3 SWAP2 PUSH2 0x165 PUSH1 0x1 SWAP6 SWAP5 DUP12 PUSH2 0x6A7 JUMP JUMPDEST MLOAD MLOAD AND LT PUSH2 0x175 JUMPI JUMPDEST POP ADD PUSH2 0x10A JUMP JUMPDEST PUSH2 0x17F DUP2 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x196 PUSH2 0x18E DUP5 DUP12 PUSH2 0x6A7 JUMP JUMPDEST MLOAD SWAP2 DUP11 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH2 0x1A1 DUP3 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH0 PUSH2 0x16E JUMP JUMPDEST DUP12 PUSH1 0x11 DUP12 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP SWAP6 POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 PUSH2 0xD2 JUMP JUMPDEST DUP10 PUSH1 0x11 DUP10 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 DUP2 MSTORE DUP6 MLOAD DUP2 DUP5 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP3 DUP4 DUP4 ADD SWAP3 PUSH0 SWAP1 DUP10 SWAP1 DUP13 JUMPDEST DUP6 DUP5 LT PUSH2 0x200 JUMPI DUP8 DUP8 SUB DUP9 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 DUP9 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP8 DUP3 ADD MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x25E JUMPI DUP9 DUP5 ADD MSTORE DUP5 DUP3 ADD MLOAD AND DUP5 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE SWAP8 DUP6 ADD SWAP8 PUSH1 0x80 ADD SWAP6 SWAP5 SWAP4 PUSH1 0x1 ADD SWAP3 SWAP2 SWAP1 PUSH2 0x1F3 JUMP JUMPDEST DUP5 PUSH1 0x21 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST DUP9 PUSH1 0x11 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST PUSH1 0x80 SWAP9 SWAP6 SWAP9 SWAP1 DUP2 DUP5 CALLDATASIZE SUB SLT PUSH2 0x30B JUMPI DUP7 MLOAD SWAP2 DUP3 ADD DUP3 DUP2 LT DUP5 DUP3 GT OR PUSH2 0x30F JUMPI DUP8 MSTORE PUSH2 0x2AC DUP5 PUSH2 0x5C9 JUMP JUMPDEST DUP3 MSTORE DUP10 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x30B JUMPI DUP11 DUP4 ADD MSTORE DUP7 DUP5 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x30B JUMPI DUP8 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x30B JUMPI PUSH1 0x80 SWAP4 DUP13 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 SWAP8 SWAP5 SWAP8 PUSH2 0xC4 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP12 PUSH1 0x41 DUP12 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0x30B JUMPI PUSH2 0x330 CALLDATASIZE PUSH2 0x5EA JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3BA JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH1 0x20 DUP4 ADD MLOAD AND SWAP1 PUSH1 0x1 DUP1 SWAP4 PUSH1 0x1 SWAP2 JUMPDEST PUSH2 0x363 JUMPI STOP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x3B8 JUMPI DUP6 SWAP4 DUP5 PUSH2 0x379 DUP5 DUP5 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP7 DUP8 SWAP2 AND GT PUSH2 0x391 JUMPI DUP5 DUP1 SWAP7 SWAP3 ADD SWAP2 SWAP4 SWAP6 PUSH2 0x35D JUMP JUMPDEST DUP3 PUSH32 0x6E8F194700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x32 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x30B JUMPI PUSH2 0x3DD CALLDATASIZE PUSH2 0x5EA JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP4 MLOAD SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x546 JUMPI DUP3 LT ISZERO PUSH2 0x4EB JUMPI PUSH0 JUMPDEST PUSH2 0x423 DUP4 DUP8 MLOAD PUSH2 0x686 JUMP JUMPDEST DUP6 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x4D8 JUMPI DUP2 LT ISZERO PUSH2 0x4CD JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH2 0x454 DUP4 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND PUSH1 0x1 DUP4 ADD SWAP1 DUP2 DUP5 GT PUSH2 0x4BA JUMPI SWAP1 DUP3 SWAP2 PUSH1 0x1 SWAP5 SWAP4 PUSH2 0x473 DUP4 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND LT PUSH2 0x483 JUMPI JUMPDEST POP POP ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0x4A7 DUP3 PUSH2 0x491 DUP4 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP3 PUSH2 0x49E DUP6 DUP13 PUSH2 0x6A7 JUMP JUMPDEST MLOAD AND SWAP2 DUP11 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH2 0x4B2 DUP3 DUP10 PUSH2 0x6A7 JUMP JUMPDEST MSTORE PUSH0 DUP1 PUSH2 0x47B JUMP JUMPDEST PUSH1 0x11 DUP8 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 POP PUSH1 0x1 ADD PUSH2 0x3E0 JUMP JUMPDEST PUSH1 0x11 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 SWAP1 DUP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 SWAP1 PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP2 DUP7 MSTORE DUP5 MLOAD DUP1 SWAP4 MSTORE DUP6 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x519 JUMPI POP POP POP POP SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x40 MLOAD SWAP4 ADD AND DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x59D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x59D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x30B JUMPI JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC DUP4 ADD SLT PUSH2 0x30B JUMPI PUSH1 0x4 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x30B JUMPI DUP1 PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x30B JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x644 PUSH2 0x9F DUP3 PUSH2 0x5B1 JUMP JUMPDEST SWAP4 PUSH1 0x24 PUSH1 0x20 DUP7 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x30B JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x66F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 PUSH2 0x67B DUP5 PUSH2 0x5C9 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x661 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x693 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x6BB JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY CREATE2 0xAA 0xD7 MSTORE8 ADDRESS PUSH15 0x2D728751A97041C71608D77CF33FBD 0x4D SSTORE BALANCE MSTORE8 LOG2 BALANCE LOG2 SWAP11 STOP PREVRANDAO PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER PUSH2 0x120 CALLVALUE PUSH2 0x127 JUMPI PUSH1 0x1F PUSH2 0x4898 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH2 0x12B JUMPI DUP1 DUP5 SWAP3 PUSH1 0x40 SWAP5 DUP6 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x127 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x127 JUMPI PUSH1 0x20 ADD MLOAD PUSH4 0xFFFFFFFF SWAP1 DUP2 DUP2 AND DUP1 DUP3 SUB PUSH2 0x127 JUMPI ADDRESS PUSH1 0x80 MSTORE DUP4 PUSH1 0xA0 MSTORE TIMESTAMP ADD SWAP1 DUP2 TIMESTAMP GT PUSH2 0x113 JUMPI DUP3 DUP3 GT PUSH2 0x104 JUMPI PUSH1 0xC0 MSTORE AND PUSH1 0xE0 MSTORE PUSH2 0x100 SWAP1 DUP2 MSTORE PUSH1 0x40 MLOAD PUSH2 0x4758 SWAP2 DUP3 PUSH2 0x140 DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 PUSH2 0x179B ADD MSTORE PUSH1 0xA0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x7A1 ADD MSTORE PUSH2 0x1818 ADD MSTORE PUSH1 0xC0 MLOAD DUP3 PUSH2 0xA76 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 DUP2 DUP2 PUSH2 0x324 ADD MSTORE PUSH2 0x1893 ADD MSTORE MLOAD DUP2 DUP2 DUP2 PUSH2 0x19C ADD MSTORE DUP2 DUP2 PUSH2 0x466 ADD MSTORE DUP2 DUP2 PUSH2 0x605 ADD MSTORE DUP2 DUP2 PUSH2 0x736 ADD MSTORE DUP2 DUP2 PUSH2 0x905 ADD MSTORE DUP2 DUP2 PUSH2 0xB1A ADD MSTORE DUP2 DUP2 PUSH2 0xD0F ADD MSTORE PUSH2 0x1183 ADD MSTORE RETURN JUMPDEST PUSH4 0x68755A11 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH0 CALLDATALOAD DUP1 PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0xE0677AB EQ PUSH2 0x107E JUMPI DUP2 PUSH4 0x2F2770DB EQ PUSH2 0xF0A JUMPI POP DUP1 PUSH4 0x44F6FEC7 EQ PUSH2 0xE13 JUMPI DUP1 PUSH4 0x53A72F7E EQ PUSH2 0xDFE JUMPI DUP1 PUSH4 0x5EA81A32 EQ PUSH2 0xC85 JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0xC3D JUMPI DUP1 PUSH4 0x673A2A1F EQ PUSH2 0x75F JUMPI DUP4 DUP2 PUSH4 0x675D6050 EQ PUSH2 0xABE JUMPI POP DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0xA9A JUMPI DUP1 PUSH4 0x78DA80CB EQ PUSH2 0xA59 JUMPI DUP1 PUSH4 0x7A0B2E8D EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x7C5 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x774 JUMPI DUP1 PUSH4 0x8EEC5D70 EQ PUSH2 0x75F JUMPI DUP4 DUP2 PUSH4 0xA7A4B711 EQ PUSH2 0x6C3 JUMPI POP DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x691 JUMPI DUP4 DUP2 PUSH4 0xC7C90A51 EQ PUSH2 0x5A2 JUMPI POP DUP1 PUSH4 0xD396A666 EQ PUSH2 0x376 JUMPI DUP1 PUSH4 0xDB035EBC EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xE9D56E19 EQ PUSH2 0x307 JUMPI PUSH4 0xED05BEAF EQ PUSH2 0x10D JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x303 JUMPI PUSH2 0x100 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH2 0x127 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x147 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1306 JUMP JUMPDEST SWAP4 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x2FB JUMPI PUSH2 0x182 PUSH2 0x1692 JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 PUSH32 0x0 AND SWAP7 PUSH2 0x1C5 PUSH2 0x1891 JUMP JUMPDEST SWAP5 DUP9 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH2 0x219 PUSH4 0xFFFFFFFF SWAP2 PUSH2 0x267 SWAP5 DUP8 DUP11 MLOAD SWAP12 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP14 MSTORE AND SWAP1 DUP12 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP12 ADD MSTORE PUSH2 0x1A4 DUP11 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP6 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE PUSH0 PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST AND PUSH2 0x104 DUP5 ADD MSTORE PUSH1 0x84 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x124 DUP5 ADD MSTORE PUSH1 0xA4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 DUP5 ADD MSTORE PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP5 ADD MSTORE PUSH1 0xE4 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP6 SWAP5 DUP5 DUP7 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST PUSH2 0x2E0 SWAP1 PUSH2 0x1329 JUMP JUMPDEST PUSH2 0x2E7 JUMPI DUP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP10 DUP1 REVERT JUMPDEST DUP6 DUP1 REVERT JUMPDEST DUP5 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x36E PUSH2 0x1891 JUMP JUMPDEST SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x303 JUMPI PUSH2 0x140 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH2 0x391 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x3B1 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP2 MLOAD PUSH2 0x3E6 DUP2 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x44 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP3 MSTORE PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x84 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP5 DUP4 ADD MSTORE PUSH1 0xA4 CALLDATALOAD SWAP2 DUP4 DUP4 AND DUP1 SWAP4 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C CALLDATASIZE ADD SLT PUSH2 0x59E JUMPI DUP4 PUSH32 0x0 AND SWAP7 PUSH2 0x48F PUSH2 0x1891 JUMP JUMPDEST SWAP5 DUP9 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH2 0x52F SWAP4 PUSH4 0xFFFFFFFF SWAP3 PUSH2 0x4E3 SWAP3 DUP10 MLOAD SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP5 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x104 SWAP1 DUP2 DUP6 ADD MSTORE PUSH2 0x124 SWAP1 PUSH1 0xC4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI DUP3 DUP7 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 DUP7 ADD MSTORE CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP6 ADD MSTORE CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP6 SWAP5 DUP5 DUP7 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0x5BE PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x5DD SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x5E5 PUSH2 0x12E3 JUMP JUMPDEST PUSH2 0x5ED PUSH2 0x1692 JUMP JUMPDEST SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x62E PUSH2 0x1891 JUMP JUMPDEST SWAP7 PUSH2 0x637 PUSH2 0x1920 JUMP JUMPDEST SWAP6 DUP5 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI DUP10 SWAP7 DUP8 SWAP4 PUSH2 0x67A SWAP3 DUP11 MLOAD SWAP12 DUP13 SWAP10 DUP11 SWAP9 DUP10 SWAP8 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP9 ADD PUSH2 0x16B0 JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST POP POP REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x36E PUSH2 0x17D5 JUMP JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0x6DF PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0x6FE SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST PUSH2 0x706 PUSH2 0x12E3 JUMP JUMPDEST PUSH2 0x70E PUSH2 0x1306 JUMP JUMPDEST SWAP3 PUSH2 0x717 PUSH2 0x1692 JUMP JUMPDEST SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP2 AND DUP7 DUP7 ADD MSTORE PUSH32 0x0 AND SWAP2 PUSH2 0x62E PUSH2 0x1891 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x2E7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT ISZERO PUSH2 0x15F1 JUMPI DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI CALLDATALOAD SWAP2 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND DUP4 SUB PUSH2 0x2E7 JUMPI POP PUSH2 0x80F PUSH1 0x20 SWAP3 PUSH2 0x1770 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 SWAP1 CALLVALUE PUSH2 0x348 JUMPI PUSH2 0x120 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH2 0x833 PUSH2 0x12C0 JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA55 JUMPI PUSH2 0x853 SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP5 PUSH4 0xFFFFFFFF SWAP6 DUP7 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x84 CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP1 SWAP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP5 MLOAD SWAP8 PUSH2 0x8AC DUP10 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0xA4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP11 MSTORE PUSH1 0xC4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP8 DUP12 ADD MSTORE PUSH2 0x104 SWAP10 DUP11 CALLDATALOAD SWAP1 DUP5 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI DUP5 PUSH32 0x0 AND SWAP6 DUP5 TIMESTAMP AND ADD SWAP2 DUP5 DUP4 GT PUSH2 0xA29 JUMPI DUP12 SWAP13 PUSH2 0x93C PUSH2 0x1920 JUMP JUMPDEST SWAP3 DUP9 EXTCODESIZE ISZERO PUSH2 0xA25 JUMPI DUP14 SWAP11 DUP12 SWAP8 DUP14 MLOAD SWAP15 DUP16 SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH1 0x24 DUP10 ADD PUSH2 0x1A0 SWAP1 MSTORE PUSH2 0x1A4 DUP10 ADD PUSH2 0x990 SWAP2 PUSH2 0x1542 JUMP JUMPDEST SWAP7 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD PUSH2 0x9E0 SWAP2 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST DUP5 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x124 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP5 ADD MSTORE DUP9 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x164 DUP5 ADD MSTORE PUSH1 0x60 ADD MLOAD ISZERO ISZERO PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP14 DUP1 REVERT JUMPDEST PUSH1 0x24 DUP13 PUSH1 0x11 DUP11 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0x20 SWAP1 PUSH1 0xFF PUSH1 0x1 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST DUP1 DUP5 DUP5 CALLVALUE PUSH2 0x68D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x68D JUMPI PUSH2 0xAD9 PUSH2 0x12C0 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0xAF8 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP3 PUSH2 0xB01 PUSH2 0x1692 JUMP JUMPDEST SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 PUSH32 0x0 AND SWAP2 PUSH2 0xB43 PUSH2 0x1891 JUMP JUMPDEST SWAP1 PUSH2 0xB4C PUSH2 0x1920 JUMP JUMPDEST SWAP2 DUP5 EXTCODESIZE ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x60 DUP11 SWAP8 SWAP4 PUSH2 0xBF6 DUP10 SWAP6 PUSH4 0xFFFFFFFF PUSH2 0xBAA DUP14 MLOAD SWAP15 DUP16 SWAP13 DUP14 SWAP12 DUP13 SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP6 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE AND PUSH1 0x64 DUP8 ADD MSTORE PUSH0 PUSH1 0x84 DUP8 ADD MSTORE PUSH1 0xA4 DUP7 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH2 0x104 DUP6 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x124 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP6 ADD MSTORE DUP10 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x164 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2EA JUMPI POP PUSH2 0x2D7 JUMPI POP RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x348 JUMPI PUSH1 0xFF DUP2 PUSH1 0x20 SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xC73 PUSH2 0x12C0 JUMP JUMPDEST AND DUP2 MSTORE DUP1 DUP6 MSTORE KECCAK256 SLOAD AND SWAP1 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP1 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x2FF JUMPI PUSH2 0xCB7 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1524 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x2FB JUMPI PUSH2 0xCCF SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1524 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP6 MLOAD SWAP4 PUSH2 0x2DE0 SWAP1 DUP2 DUP7 ADD SWAP5 DUP7 DUP7 LT SWAP1 DUP7 GT OR PUSH2 0xDD2 JUMPI POP SWAP2 PUSH2 0xD42 DUP6 SWAP5 SWAP3 PUSH2 0xD4F SWAP5 PUSH2 0x1943 DUP8 CODECOPY DUP8 PUSH32 0x0 AND DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x164F JUMP JUMPDEST SWAP2 DUP8 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x164F JUMP JUMPDEST SUB SWAP1 DUP5 CREATE DUP1 ISZERO PUSH2 0xDC6 JUMPI SWAP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC SWAP2 PUSH1 0x20 SWAP5 SWAP4 AND SWAP2 DUP3 SWAP2 PUSH2 0xD8C PUSH2 0x18C8 JUMP JUMPDEST DUP3 DUP6 MSTORE DUP5 DUP7 MSTORE DUP1 DUP6 KECCAK256 PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 SLOAD AND OR SWAP1 SSTORE MLOAD SWAP4 DUP1 LOG2 DUP2 MSTORE RETURN JUMPDEST POP POP MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP9 PUSH1 0x41 PUSH1 0x24 SWAP3 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x348 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT ISZERO PUSH2 0x15F1 JUMPI DUP1 REVERT JUMPDEST POP SWAP1 CALLVALUE PUSH2 0x303 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x303 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xA55 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0xA55 JUMPI PUSH1 0xB PUSH2 0xE6D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP4 PUSH1 0x24 PUSH1 0x55 SWAP6 CALLDATASIZE SWAP4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x14C0 JUMP JUMPDEST SWAP5 PUSH2 0x2DE0 SWAP6 PUSH2 0xEC5 PUSH1 0x20 DUP1 SWAP9 DUP9 MLOAD SWAP5 PUSH2 0xE88 DUP4 DUP4 ADD DUP8 PUSH2 0x13A2 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP7 ADD SWAP2 PUSH2 0x1943 DUP4 CODECOPY DUP3 DUP11 MLOAD SWAP6 DUP7 SWAP4 DUP3 DUP6 ADD SWAP9 MLOAD DUP1 SWAP2 DUP11 MCOPY DUP5 ADD SWAP1 DUP3 DUP3 ADD DUP5 DUP2 MSTORE DUP2 MLOAD SWAP4 DUP5 SWAP3 ADD SWAP1 MCOPY ADD SWAP1 DUP4 DUP3 ADD MSTORE SUB DUP1 DUP5 MSTORE ADD DUP3 PUSH2 0x13A2 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP5 MLOAD DUP7 DUP2 ADD SWAP1 CALLER DUP3 MSTORE CHAINID DUP8 DUP3 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0xEEB DUP2 PUSH2 0x136A JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP6 MLOAD SWAP2 DUP7 DUP4 ADD MSTORE DUP7 DUP3 ADD MSTORE ADDRESS DUP2 MSTORE ADD PUSH1 0xFF DUP2 MSTORE8 KECCAK256 SWAP2 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0xA55 JUMPI DUP4 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0xA55 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xF47 SWAP2 AND PUSH2 0x1770 JUMP JUMPDEST PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xF66 PUSH2 0x17D5 JUMP JUMPDEST AND SWAP2 PUSH1 0x64 DUP5 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP9 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1075 JUMPI POP DUP4 SWAP2 PUSH2 0x103A JUMPI JUMPDEST POP ISZERO PUSH2 0x1014 JUMPI POP PUSH2 0xFC3 PUSH2 0x18C8 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP2 SLOAD AND OR PUSH1 0x1 SSTORE PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 DUP2 DUP1 LOG1 DUP1 RETURN JUMPDEST SWAP1 PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x106D JUMPI JUMPDEST DUP2 PUSH2 0x1055 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x303 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x303 JUMPI PUSH0 PUSH2 0xFB4 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1048 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP6 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP CALLVALUE PUSH2 0x2F3 JUMPI PUSH2 0x160 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI PUSH2 0x109A PUSH2 0x12C0 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2F3 JUMPI PUSH2 0x10BA SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x13E3 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP4 MLOAD SWAP1 PUSH2 0x1103 DUP3 PUSH2 0x1386 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x64 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP2 MSTORE PUSH1 0x84 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD DUP4 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP7 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP3 DUP1 DUP5 AND DUP1 SWAP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C CALLDATASIZE ADD SLT PUSH2 0x2F3 JUMPI DUP1 PUSH32 0x0 AND SWAP6 DUP7 EXTCODESIZE ISZERO PUSH2 0x2F3 JUMPI PUSH2 0x123C SWAP4 PUSH2 0x11F1 SWAP3 DUP10 MLOAD SWAP11 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP13 MSTORE AND SWAP1 DUP11 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x1A4 DUP10 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP4 PUSH0 PUSH1 0x44 DUP10 ADD MSTORE PUSH1 0x64 DUP9 ADD MSTORE PUSH0 PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0xA4 DUP8 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x104 SWAP1 DUP2 DUP7 ADD MSTORE PUSH2 0x124 SWAP1 PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI DUP3 DUP8 ADD MSTORE CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP1 SWAP3 SUB PUSH2 0x2F3 JUMPI PUSH2 0x144 SWAP2 DUP3 DUP8 ADD MSTORE CALLDATALOAD DUP1 ISZERO ISZERO DUP1 SWAP2 SUB PUSH2 0x2F3 JUMPI PUSH2 0x164 DUP7 ADD MSTORE CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x2F3 JUMPI DUP5 PUSH0 DUP2 DUP1 SWAP5 DUP3 SWAP7 PUSH2 0x184 DUP4 ADD MSTORE SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x12B7 JUMPI POP PUSH2 0x12AB JUMPI POP DUP1 RETURN JUMPDEST PUSH2 0x12B5 SWAP2 POP PUSH2 0x1329 JUMP JUMPDEST STOP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x2F3 JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x133D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x2F3 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x133D JUMPI PUSH1 0x40 SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x1418 DUP4 DUP4 PUSH1 0x5 SHL ADD DUP8 PUSH2 0x13A2 JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP1 DUP8 ADD SWAP3 PUSH1 0x7 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x2F3 JUMPI DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x1442 JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x2F3 JUMPI DUP6 MLOAD SWAP1 PUSH2 0x1458 DUP3 PUSH2 0x136A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP4 MSTORE DUP6 DUP6 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI DUP7 DUP5 ADD MSTORE DUP8 DUP6 ADD CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI DUP8 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x2F3 JUMPI PUSH1 0x80 SWAP4 DUP8 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x1432 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x133D JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1508 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD DUP5 PUSH2 0x13A2 JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x2F3 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x2F3 JUMPI DUP2 PUSH1 0x20 PUSH2 0x153F SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x14C0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1561 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP5 MLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 MLOAD AND DUP2 MSTORE DUP5 DUP4 ADD MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x15C4 JUMPI PUSH1 0x1 SWAP4 DUP7 SWAP4 PUSH1 0x80 SWAP4 DUP6 DUP5 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 DUP4 ADD MLOAD AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 SWAP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP2 ADD SWAP3 SWAP2 SWAP1 SWAP3 PUSH2 0x1553 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x169F DUP3 PUSH2 0x1386 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP5 PUSH2 0x173C PUSH2 0x180 SWAP6 PUSH4 0xFFFFFFFF PUSH2 0x16F1 PUSH1 0x60 SWAP8 SWAP12 SWAP11 SWAP7 PUSH2 0x1A0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP9 AND DUP13 MSTORE DUP1 PUSH1 0x20 DUP14 ADD MSTORE DUP12 ADD SWAP1 PUSH2 0x1542 JUMP JUMPDEST SWAP11 PUSH0 PUSH1 0x40 DUP12 ADD MSTORE AND DUP7 DUP10 ADD MSTORE PUSH0 PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST AND PUSH2 0x100 DUP6 ADD MSTORE DUP1 MLOAD ISZERO ISZERO PUSH2 0x120 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x140 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x160 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x17CF DUP2 PUSH2 0x1386 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1886 JUMPI PUSH0 SWAP3 PUSH2 0x184D JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x187E JUMPI JUMPDEST DUP2 PUSH2 0x1869 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x13A2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x2F3 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x2F3 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x185C JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x18C3 JUMPI SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x1 SLOAD AND PUSH2 0x18D4 JUMPI JUMP JUMPDEST PUSH32 0x75884CDA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1909 DUP3 PUSH2 0x136A JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x1928 PUSH2 0x18FC JUMP JUMPDEST POP PUSH2 0x1931 PUSH2 0x18FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x40 DUP3 ADD MSTORE SWAP1 JUMP INVALID PUSH2 0x1E0 PUSH1 0x40 DUP2 DUP2 MSTORE CALLVALUE PUSH2 0x483 JUMPI PUSH2 0x2DE0 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1E DUP3 DUP7 PUSH2 0x487 JUMP JUMPDEST DUP5 CODECOPY DUP3 ADD SWAP1 PUSH1 0x60 DUP4 DUP4 SUB SLT PUSH2 0x483 JUMPI DUP3 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x483 JUMPI PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP3 DUP2 GT PUSH2 0x483 JUMPI DUP6 PUSH2 0x64 SWAP2 DUP4 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP5 DUP4 DUP3 ADD MLOAD DUP4 DUP2 GT PUSH2 0x483 JUMPI PUSH2 0x7A SWAP3 ADD PUSH2 0x4AA JUMP JUMPDEST SWAP4 DUP3 MLOAD SWAP6 DUP4 DUP8 ADD DUP8 DUP2 LT DUP5 DUP3 GT OR PUSH2 0x39A JUMPI DUP5 MSTORE PUSH1 0x1 DUP1 DUP9 MSTORE DUP2 DUP9 ADD SWAP4 PUSH1 0x31 PUSH1 0xF8 SHL DUP6 MSTORE PUSH2 0xA7 DUP5 PUSH2 0x4FF JUMP JUMPDEST SWAP8 PUSH2 0x120 SWAP9 DUP10 MSTORE PUSH2 0xB7 DUP11 PUSH2 0x682 JUMP JUMPDEST SWAP6 PUSH2 0x140 SWAP7 DUP8 MSTORE DUP6 MLOAD DUP6 DUP8 ADD KECCAK256 SWAP11 DUP12 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 SWAP10 PUSH2 0x100 SWAP11 DUP1 DUP13 MSTORE CHAINID PUSH1 0xA0 MSTORE DUP9 MLOAD SWAP1 DUP7 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE DUP11 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR PUSH2 0x39A JUMPI DUP10 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 SWAP5 DUP9 DUP7 MSTORE DUP1 MLOAD SWAP2 DUP4 DUP4 GT PUSH2 0x39A JUMPI PUSH1 0x3 SWAP3 DUP4 SLOAD SWAP3 DUP7 DUP5 DUP2 SHR SWAP5 AND DUP1 ISZERO PUSH2 0x479 JUMPI JUMPDEST DUP9 DUP6 LT EQ PUSH2 0x465 JUMPI DUP2 SWAP1 PUSH1 0x1F SWAP5 DUP6 DUP2 GT PUSH2 0x417 JUMPI JUMPDEST POP DUP9 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x3B9 JUMPI PUSH0 SWAP3 PUSH2 0x3AE JUMPI JUMPDEST POP POP PUSH0 NOT DUP3 DUP7 SHL SHR NOT AND SWAP1 DUP7 SHL OR DUP4 SSTORE JUMPDEST DUP1 MLOAD SWAP4 DUP5 GT PUSH2 0x39A JUMPI PUSH1 0x4 SWAP6 DUP7 SLOAD DUP7 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x390 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x37D JUMPI DUP4 DUP2 GT PUSH2 0x33A JUMPI JUMPDEST POP DUP1 SWAP3 DUP6 GT PUSH1 0x1 EQ PUSH2 0x2D5 JUMPI POP SWAP4 DUP4 SWAP5 SWAP2 DUP5 SWAP3 PUSH0 SWAP6 PUSH2 0x2CA JUMPI JUMPDEST POP POP SHL SWAP3 PUSH0 NOT SWAP2 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x180 SWAP2 CALLER DUP4 MSTORE PUSH2 0x1A0 SWAP4 DUP6 DUP6 MSTORE PUSH2 0x1C0 SWAP6 DUP7 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x5 SSTORE MLOAD SWAP6 PUSH2 0x2627 SWAP8 DUP9 PUSH2 0x7B9 DUP10 CODECOPY PUSH1 0x80 MLOAD DUP9 PUSH2 0x21C7 ADD MSTORE PUSH1 0xA0 MLOAD DUP9 PUSH2 0x2293 ADD MSTORE PUSH1 0xC0 MLOAD DUP9 PUSH2 0x2198 ADD MSTORE PUSH1 0xE0 MLOAD DUP9 PUSH2 0x2216 ADD MSTORE MLOAD DUP8 PUSH2 0x223C ADD MSTORE MLOAD DUP7 PUSH2 0x1056 ADD MSTORE MLOAD DUP6 PUSH2 0x1080 ADD MSTORE MLOAD DUP5 DUP2 DUP2 PUSH2 0x311 ADD MSTORE DUP2 DUP2 PUSH2 0x554 ADD MSTORE DUP2 DUP2 PUSH2 0x7E2 ADD MSTORE DUP2 DUP2 PUSH2 0xD93 ADD MSTORE DUP2 DUP2 PUSH2 0xF84 ADD MSTORE DUP2 DUP2 PUSH2 0x14B4 ADD MSTORE DUP2 DUP2 PUSH2 0x157D ADD MSTORE DUP2 DUP2 PUSH2 0x1743 ADD MSTORE DUP2 DUP2 PUSH2 0x190C ADD MSTORE DUP2 DUP2 PUSH2 0x199C ADD MSTORE PUSH2 0x212D ADD MSTORE MLOAD DUP4 PUSH2 0xFF0 ADD MSTORE MLOAD DUP3 POP POP MLOAD DUP2 DUP2 DUP2 PUSH2 0x693 ADD MSTORE DUP2 DUP2 PUSH2 0x72A ADD MSTORE DUP2 DUP2 PUSH2 0x92A ADD MSTORE DUP2 DUP2 PUSH2 0xC67 ADD MSTORE PUSH2 0x1192 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP4 POP PUSH0 DUP1 PUSH2 0x1D9 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1F NOT DUP2 AND DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP6 PUSH0 SWAP1 JUMPDEST DUP10 DUP4 DUP4 LT PUSH2 0x320 JUMPI POP POP POP LT PUSH2 0x307 JUMPI JUMPDEST POP POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x1E8 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xF8 DUP5 PUSH0 NOT SWAP3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x2F9 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP10 SSTORE SWAP1 SWAP8 ADD SWAP7 SWAP5 DUP6 ADD SWAP5 DUP9 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x2E8 JUMP JUMPDEST DUP8 PUSH0 MSTORE DUP2 PUSH0 KECCAK256 DUP5 DUP1 DUP9 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP5 DUP10 LT PUSH2 0x374 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 DUP8 SWAP1 JUMPDEST DUP3 DUP2 LT PUSH2 0x369 JUMPI POP POP PUSH2 0x1BF JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP8 SWAP1 PUSH2 0x35B JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x352 JUMP JUMPDEST PUSH1 0x22 DUP9 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x1AF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x183 JUMP JUMPDEST SWAP1 DUP9 SWAP4 POP PUSH1 0x1F NOT DUP4 AND SWAP2 DUP8 PUSH0 MSTORE DUP11 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP13 DUP3 DUP3 LT PUSH2 0x401 JUMPI POP POP DUP5 GT PUSH2 0x3EA JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP4 SSTORE PUSH2 0x194 JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP9 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x3DD JUMP JUMPDEST DUP4 DUP6 ADD MLOAD DUP7 SSTORE DUP13 SWAP8 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP5 ADD SWAP4 ADD PUSH2 0x3CC JUMP JUMPDEST SWAP1 SWAP2 POP DUP6 PUSH0 MSTORE DUP9 PUSH0 KECCAK256 DUP6 DUP1 DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP12 DUP7 LT PUSH2 0x45C JUMPI JUMPDEST SWAP2 DUP11 SWAP2 DUP7 SWAP6 SWAP5 SWAP4 ADD PUSH1 0x5 SHR ADD SWAP2 JUMPDEST DUP3 DUP2 LT PUSH2 0x44E JUMPI POP POP PUSH2 0x16F JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP DUP11 SWAP2 ADD PUSH2 0x440 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x432 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP4 PUSH1 0x7F AND SWAP4 PUSH2 0x15A JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x39A JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x483 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x4DE PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x487 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x483 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x575 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x39A JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x678 JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x645 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0x5E3 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0x5D8 JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0x5C3 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0x62B JUMPI POP POP POP LT PUSH2 0x613 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x606 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0x5F5 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x66D JUMPI POP POP PUSH2 0x5A8 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0x65F JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x597 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0x6AC JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x537 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x529 JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x39A JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7AE JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x465 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x77B JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x71B JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x710 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x6F9 JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0x764 JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0x74C JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x73F JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0x72C JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0x7A3 JUMPI POP POP PUSH2 0x6E0 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0x795 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x6CF JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 SWAP2 PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP2 DUP3 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BD2 JUMPI POP DUP2 PUSH4 0x6FDDE03 EQ PUSH2 0x1AE2 JUMPI DUP2 PUSH4 0x95EA7B3 EQ PUSH2 0x1A64 JUMPI DUP2 PUSH4 0x16A0B3E0 EQ PUSH2 0x19D5 JUMPI DUP2 PUSH4 0x18160DDD EQ PUSH2 0x1942 JUMPI DUP2 PUSH4 0x23B872DD EQ PUSH2 0x189A JUMPI DUP2 PUSH4 0x23DE6651 EQ PUSH2 0x1868 JUMPI DUP2 PUSH4 0x273C1ADF EQ PUSH2 0x183D JUMPI DUP2 PUSH4 0x30ADF81F EQ PUSH2 0x1803 JUMPI DUP2 PUSH4 0x313CE567 EQ PUSH2 0x17E8 JUMPI DUP2 PUSH4 0x360C340F EQ PUSH2 0x16EA JUMPI DUP2 PUSH4 0x3644E515 EQ PUSH2 0x16CE JUMPI DUP2 PUSH4 0x4CFE8D1A EQ PUSH2 0x16B6 JUMPI DUP2 PUSH4 0x5687F2B8 EQ PUSH2 0x1657 JUMPI DUP2 PUSH4 0x627CDCB9 EQ PUSH2 0x162E JUMPI DUP2 PUSH4 0x641579A6 EQ PUSH2 0x1616 JUMPI DUP2 PUSH4 0x654CF15D EQ PUSH2 0x15F4 JUMPI DUP2 PUSH4 0x679AEFCE EQ PUSH2 0x151A JUMPI DUP2 PUSH4 0x70A08231 EQ PUSH2 0x1446 JUMPI DUP2 PUSH4 0x72C98186 EQ PUSH2 0x137C JUMPI DUP2 PUSH4 0x7ECEBE00 EQ PUSH2 0x1338 JUMPI DUP2 PUSH4 0x81FA807C EQ PUSH2 0x1135 JUMPI DUP2 PUSH4 0x84B0196E EQ PUSH2 0x103E JUMPI DUP2 PUSH4 0x851C1BB3 EQ PUSH2 0xFA8 JUMPI DUP2 PUSH4 0x8D928AF8 EQ PUSH2 0xF58 JUMPI DUP2 PUSH4 0x95D89B41 EQ PUSH2 0xE52 JUMPI DUP2 PUSH4 0x984DE9E8 EQ PUSH2 0xE04 JUMPI DUP2 PUSH4 0xA9059CBB EQ PUSH2 0xCFB JUMPI DUP2 PUSH4 0xAA6CA808 EQ PUSH2 0xC0E JUMPI DUP2 PUSH4 0xAB68E28C EQ PUSH2 0xB66 JUMPI DUP2 PUSH4 0xABB1DC44 EQ PUSH2 0x8CF JUMPI DUP2 PUSH4 0xB0E2E403 EQ PUSH2 0x7B7 JUMPI DUP2 PUSH4 0xB156AA0A EQ PUSH2 0x6D0 JUMPI DUP2 PUSH4 0xB677FA56 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xCE20ECE7 EQ PUSH2 0x6CB JUMPI DUP2 PUSH4 0xD335B0CF EQ PUSH2 0x638 JUMPI DUP2 PUSH4 0xD505ACCF EQ PUSH2 0x38E JUMPI POP DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x295 JUMPI PUSH4 0xE4C43663 EQ PUSH2 0x1D0 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x28D JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH2 0x1E9 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x291 JUMPI PUSH2 0x20A SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP3 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x28D JUMPI PUSH2 0x222 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x278 PUSH2 0x245 PUSH2 0x286 SWAP4 PUSH2 0x263 SWAP7 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0x250 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP9 ADD MSTORE DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP1 REVERT JUMPDEST POP DUP1 REVERT JUMPDEST DUP4 DUP1 REVERT JUMPDEST POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI PUSH1 0x20 PUSH2 0x2B1 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x2BB PUSH2 0x1C9F JUMP JUMPDEST SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP9 DUP8 MLOAD SWAP10 DUP11 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x37B JUMPI JUMPDEST DUP2 PUSH2 0x365 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x340 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x358 JUMP JUMPDEST SWAP1 MLOAD SWAP1 RETURNDATASIZE SWAP1 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 POP CALLVALUE PUSH2 0x634 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x634 JUMPI PUSH2 0x3AA PUSH2 0x1C7C JUMP JUMPDEST SWAP2 PUSH2 0x3B3 PUSH2 0x1C9F JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH1 0x64 CALLDATALOAD SWAP2 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x630 JUMPI DUP4 TIMESTAMP GT PUSH2 0x605 JUMPI PUSH2 0x401 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP7 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 DUP8 DUP8 AND SWAP6 DUP7 DUP12 DUP6 ADD MSTORE DUP9 DUP11 AND PUSH1 0x60 DUP6 ADD MSTORE DUP12 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 MSTORE DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x5F2 JUMPI SWAP3 PUSH2 0x4DE SWAP3 PUSH2 0x4D5 SWAP3 DUP9 SWAP6 DUP12 MSTORE MLOAD SWAP1 KECCAK256 PUSH2 0x494 PUSH2 0x2181 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x24AC JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2546 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x5C5 JUMPI POP POP DUP6 DUP5 SWAP6 SWAP7 SWAP8 PUSH2 0x550 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x5BC JUMPI POP PUSH2 0x586 JUMPI POP DUP1 RETURN JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x5B4 JUMPI JUMPDEST DUP2 PUSH2 0x59F PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x28D JUMPI PUSH2 0x5B0 SWAP1 PUSH2 0x1F4D JUMP JUMPDEST POP DUP1 RETURN JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x592 JUMP JUMPDEST MLOAD RETURNDATASIZE DUP5 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 DUP9 MSTORE DUP9 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP7 REVERT JUMPDEST PUSH1 0x41 DUP13 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x24 DUP9 DUP6 DUP12 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 DUP4 MSTORE MSTORE REVERT JUMPDEST DUP8 DUP1 REVERT JUMPDEST DUP3 DUP1 REVERT JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE PUSH1 0x20 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x1EFB JUMP JUMPDEST POP POP SWAP2 CALLVALUE PUSH2 0x28D JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP3 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE ADDRESS SWAP1 DUP5 ADD MSTORE DUP2 DUP4 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x383 JUMPI DUP1 SWAP3 PUSH2 0x76F JUMPI JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x286 SWAP1 DUP3 ADD DUP7 PUSH2 0x1DED JUMP JUMPDEST SWAP1 SWAP2 POP RETURNDATASIZE DUP1 DUP3 DUP6 RETURNDATACOPY PUSH2 0x781 DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x20 DUP2 DUP6 SUB SLT PUSH2 0x28D JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x28A JUMPI POP SWAP3 PUSH2 0x7B0 SWAP2 PUSH2 0x286 SWAP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x75A JUMP JUMPDEST POP POP DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 DUP2 MLOAD SWAP3 DUP2 CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x20 DUP5 MSTORE PUSH2 0x81A DUP5 PUSH2 0x1CC2 JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO PUSH2 0x377 JUMPI PUSH2 0x889 PUSH0 SWAP5 SWAP2 DUP6 SWAP3 DUP6 MLOAD SWAP7 DUP8 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0xC808824700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH32 0x546573744576656E740000000000000000000000000000000000000000000000 DUP10 DUP5 ADD MSTORE DUP10 PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x8C5 JUMPI PUSH2 0x89B JUMPI DUP4 DUP1 RETURN JUMPDEST SWAP1 SWAP2 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x8B2 JUMPI POP MSTORE STOP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 SWAP1 PUSH0 DUP4 DUP4 DUP2 PUSH32 0x0 DUP9 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP6 PUSH0 SWAP5 PUSH0 SWAP5 PUSH0 SWAP8 PUSH2 0xA08 JUMPI JUMPDEST POP POP POP SWAP1 PUSH2 0x980 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x9C4 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x286 DUP12 PUSH2 0x9B6 DUP13 DUP13 PUSH2 0x1DED JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0x9E1 DUP2 PUSH2 0x1EDD JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0x998 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xA1F DUP2 DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xA4C SWAP2 DUP5 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP1 DUP5 ADD MLOAD DUP8 DUP2 GT PUSH2 0x377 JUMPI DUP5 ADD SWAP1 DUP4 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP3 PUSH2 0xA74 DUP5 PUSH2 0x1D33 JUMP JUMPDEST SWAP10 PUSH2 0xA81 DUP9 MLOAD SWAP12 DUP13 PUSH2 0x1CF2 JUMP JUMPDEST DUP5 DUP12 MSTORE DUP3 DUP12 ADD SWAP2 DUP4 PUSH1 0x60 DUP1 SWAP8 MUL DUP7 ADD ADD SWAP5 DUP8 DUP7 GT PUSH2 0x377 JUMPI SWAP12 SWAP13 SWAP12 DUP5 ADD SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0xAE9 JUMPI POP POP POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x377 JUMPI DUP2 PUSH2 0xAC5 SWAP2 DUP5 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xADC SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 DUP1 DUP1 PUSH2 0x961 JUMP JUMPDEST DUP7 DUP5 SWAP14 SWAP15 SWAP14 DUP10 SUB SLT PUSH2 0x377 JUMPI DUP10 MLOAD SWAP1 DUP8 DUP3 ADD DUP14 DUP2 GT DUP4 DUP3 LT OR PUSH2 0xB4A JUMPI DUP12 MSTORE DUP5 MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x377 JUMPI DUP16 SWAP2 DUP4 MSTORE DUP7 DUP7 ADD MLOAD SWAP2 DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI DUP3 DUP8 SWAP3 DUP4 DUP12 SWAP6 ADD MSTORE PUSH2 0xB38 DUP14 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST DUP14 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 SWAP13 SWAP12 SWAP13 PUSH2 0xAA0 JUMP JUMPDEST DUP4 PUSH1 0x41 DUP7 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0xB81 PUSH2 0x1C7C JUMP JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x44 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBA2 SWAP1 CALLDATASIZE SWAP1 DUP6 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x377 JUMPI PUSH2 0xBBA SWAP1 CALLDATASIZE SWAP1 DUP7 ADD PUSH2 0x1D4B JUMP JUMPDEST POP PUSH1 0x84 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x377 JUMPI PUSH2 0x278 PUSH2 0xBDB PUSH2 0xC01 SWAP6 PUSH2 0x286 SWAP5 CALLDATASIZE SWAP2 ADD PUSH2 0x1E69 JUMP JUMPDEST SWAP2 PUSH2 0xBE6 DUP6 MLOAD PUSH2 0x2004 JUMP JUMPDEST DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x24 CALLDATALOAD DUP9 MSTORE PUSH1 0x80 PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0xCAE JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E20 JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0xCBF DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP2 PUSH1 0x20 DUP2 DUP5 SUB SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP4 PUSH2 0xCEC SWAP3 ADD PUSH2 0x2085 JUMP JUMPDEST SWAP1 PUSH2 0xC97 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0xD1B PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDFC JUMPI JUMPDEST DUP2 PUSH2 0xDE3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH2 0xDF6 PUSH1 0x20 SWAP3 PUSH2 0x1F4D JUMP JUMPDEST POP PUSH2 0xDC0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDD6 JUMP JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x377 JUMPI PUSH2 0xE34 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH1 0x2 PUSH1 0x24 CALLDATALOAD LT ISZERO PUSH2 0x377 JUMPI PUSH2 0xE4B PUSH1 0x20 SWAP3 PUSH2 0x2053 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xE74 DUP2 PUSH2 0x1F15 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xF13 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xEB7 JUMPI JUMPDEST POP POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0xEFB JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x286 PUSH2 0xE95 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0xEE2 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0xEA8 SWAP2 POP PUSH2 0x286 SWAP1 POP PUSH2 0xE95 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP1 SWAP2 SUB PUSH2 0x377 JUMPI DUP3 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 PUSH32 0x0 DUP4 MSTORE DUP5 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x60 DUP2 ADD SWAP3 DUP2 DUP5 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT OR PUSH2 0x8B2 JUMPI POP DUP3 PUSH1 0x20 SWAP5 MSTORE MLOAD SWAP1 KECCAK256 DUP2 MSTORE RETURN JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH2 0x107A PUSH32 0x0 PUSH2 0x22B9 JUMP JUMPDEST SWAP3 PUSH2 0x10A4 PUSH32 0x0 PUSH2 0x23EE JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x8B2 JUMPI POP SWAP2 PUSH2 0x1115 SWAP2 PUSH2 0x286 SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x1108 DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1C39 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1C39 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1DED JUMP JUMPDEST SWAP3 POP POP CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 MLOAD PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP3 DUP4 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x132E JUMPI PUSH0 SWAP5 PUSH2 0x11D9 JUMPI JUMPDEST DUP6 DUP6 PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST SWAP1 SWAP2 DUP1 SWAP4 SWAP5 POP DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1327 JUMPI JUMPDEST PUSH2 0x11F2 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SWAP3 DUP2 DUP5 SLT PUSH2 0x377 JUMPI DUP6 MLOAD SWAP5 PUSH2 0x140 SWAP5 DUP6 DUP8 ADD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP9 DUP5 LT DUP4 DUP6 GT OR PUSH2 0x1314 JUMPI PUSH1 0x80 SGT PUSH2 0x377 JUMPI PUSH2 0x1C0 DUP9 ADD SWAP2 DUP3 GT DUP4 DUP4 LT OR PUSH2 0x8B2 JUMPI POP DUP8 MSTORE PUSH2 0x1240 DUP3 PUSH2 0x1F4D JUMP JUMPDEST DUP2 MSTORE PUSH2 0x124E PUSH1 0x20 DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 PUSH2 0x160 SWAP2 DUP3 DUP9 ADD MSTORE PUSH2 0x1262 DUP9 DUP5 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP4 PUSH2 0x180 SWAP5 DUP6 DUP10 ADD MSTORE PUSH2 0x1277 PUSH1 0x60 DUP6 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP9 ADD MSTORE DUP7 MSTORE PUSH1 0x80 DUP3 ADD MLOAD PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP8 DUP8 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x60 DUP8 ADD MSTORE DUP4 DUP3 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0x100 SWAP1 DUP2 DUP4 ADD MLOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI PUSH2 0x1307 SWAP6 PUSH2 0x12FD SWAP3 PUSH1 0xA0 DUP11 ADD MSTORE PUSH2 0x12F2 PUSH2 0x120 SWAP9 PUSH2 0x12E6 DUP11 DUP9 ADD PUSH2 0x1F4D JUMP JUMPDEST PUSH1 0xC0 DUP13 ADD MSTORE DUP7 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x1F4D JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x41 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP RETURNDATASIZE PUSH2 0x11E8 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x136A PUSH2 0x1C7C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x3 NOT SWAP3 PUSH1 0x20 DUP5 CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD SWAP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP6 GT PUSH2 0x377 JUMPI DUP5 CALLDATASIZE SUB ADD SLT PUSH2 0x377 JUMPI DUP3 DUP2 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x377 JUMPI PUSH2 0x13C2 DUP2 PUSH2 0x1EDD JUMP JUMPDEST PUSH2 0x13EC JUMPI POP PUSH8 0xDE0B6B3A7640000 PUSH2 0x13E3 PUSH1 0x20 SWAP4 PUSH1 0x24 PUSH1 0x5 SLOAD SWAP2 ADD CALLDATALOAD PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP2 PUSH1 0x24 ADD CALLDATALOAD PUSH1 0x5 SLOAD SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1433 JUMPI DUP2 ISZERO PUSH2 0x1420 JUMPI PUSH1 0x20 SWAP4 POP DIV SWAP1 PUSH2 0x13E6 JUMP JUMPDEST PUSH1 0x12 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP3 PUSH2 0x1464 PUSH2 0x1C7C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP3 PUSH2 0x14EB JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1513 JUMPI JUMPDEST PUSH2 0x1503 DUP2 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14E4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F9 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x6 SLOAD DUP1 PUSH2 0x15EA JUMPI POP DUP1 MLOAD SWAP2 PUSH32 0x4F037EE700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH0 SWAP1 PUSH2 0x15B7 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x15E2 JUMPI JUMPDEST DUP2 PUSH2 0x15D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP2 MLOAD PUSH2 0x15AC JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x15C4 JUMP JUMPDEST PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0x13E6 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x5 SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x1694 PUSH2 0x2116 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP3 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD PUSH1 0x6 SSTORE STOP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE4B PUSH2 0x2181 JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x178A JUMPI JUMPDEST PUSH2 0x286 SWAP3 POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1DED JUMP JUMPDEST SWAP1 POP RETURNDATASIZE DUP1 PUSH0 DUP5 RETURNDATACOPY PUSH2 0x179B DUP2 DUP5 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 ADD SWAP1 DUP1 DUP4 DUP4 SUB SLT PUSH2 0x377 JUMPI DUP3 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x377 JUMPI DUP4 PUSH2 0x17C7 SWAP2 DUP4 ADD PUSH2 0x1FA3 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP5 DUP6 GT PUSH2 0x377 JUMPI PUSH2 0x286 SWAP5 PUSH2 0x17E2 SWAP3 ADD PUSH2 0x1FA3 JUMP JUMPDEST POP PUSH2 0x1773 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH17 0x1D6329F1C35CA4BFABB9F5610000000000 DUP2 MSTORE RETURN JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x1689 CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x18AF CALLDATASIZE PUSH2 0x1DAB JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xB5C JUMPI PUSH2 0xDCA JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xCF2 JUMPI PUSH0 SWAP2 PUSH2 0x34A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x377 JUMPI PUSH2 0x1A06 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1D4B JUMP JUMPDEST SWAP1 PUSH2 0x1A3D PUSH2 0x1A20 PUSH2 0x1A16 DUP5 PUSH2 0x2053 JUMP JUMPDEST SWAP4 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1F5A JUMP JUMPDEST MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x1A36 PUSH1 0x44 CALLDATALOAD DUP7 PUSH2 0x2103 JUMP JUMPDEST DIV SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP2 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1A51 JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x11 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP3 DUP6 CALLVALUE PUSH2 0x377 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH2 0xD79 SWAP3 PUSH2 0x1A84 PUSH2 0x1C7C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP5 CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1B05 DUP5 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x1B92 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1B37 JUMPI JUMPDEST POP POP PUSH2 0x286 SWAP3 SWAP2 PUSH2 0xEA8 SWAP2 SUB DUP6 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1B7A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0xEA8 PUSH2 0x1B25 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1B64 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0xEA8 SWAP1 POP PUSH2 0x1B25 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x377 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1CDE JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1D65 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1D73 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1D9C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1D8E JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x377 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E0C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1DFE JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E3F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1E31 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x1CDE JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x1EBC PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND ADD DUP6 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x377 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x1EE7 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x377 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x377 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1F43 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1F2F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1F24 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x377 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1F6E JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x1FBE DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x1FCC PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1FF5 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1FE7 JUMP JUMPDEST SWAP1 PUSH2 0x200E DUP3 PUSH2 0x1D33 JUMP JUMPDEST PUSH2 0x201B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x1CF2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x2049 DUP3 SWAP5 PUSH2 0x1D33 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST PUSH0 SWAP1 DUP2 JUMPDEST DUP2 MLOAD DUP4 LT ISZERO PUSH2 0x207F JUMPI PUSH2 0x2077 PUSH1 0x1 SWAP2 PUSH2 0x2070 DUP6 DUP6 PUSH2 0x1F5A JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1F82 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x2057 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x377 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x20A0 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 PUSH2 0x20AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1CF2 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x377 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x20D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x377 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x20C9 JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1F8F JUMPI JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2155 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x2290 JUMPI JUMPDEST ISZERO PUSH2 0x21E9 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1CDE JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x21C0 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x230D JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x231F DUP4 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x234D JUMPI JUMPDEST POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2393 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2378 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x234A SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2410 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x22DB DUP4 PUSH2 0x1CC2 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2425 DUP2 PUSH2 0x1F15 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x23AB JUMPI POP PUSH1 0x1 EQ PUSH2 0x244D JUMPI POP POP PUSH2 0x234A SWAP3 POP SUB DUP3 PUSH2 0x1CF2 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2494 JUMPI POP PUSH2 0x234A SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x233C JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2479 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x253B JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x2530 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2526 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x1EE7 JUMPI DUP1 PUSH2 0x2558 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2588 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x25BC JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x25C6 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB AND ADDMOD 0xD4 0xFC JUMPDEST 0xBC PUSH29 0xCBC38DFB1ADF85E117593D892FF034148DC3F4AAB1E26D9864736F6C63 NUMBER STOP ADDMOD BYTE STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY DUP12 0x24 DUP9 0x2A 0xD1 CODECOPY COINBASE PUSH18 0x6CF9EC8211685110FD8068212BF7AEF715A6 CALLDATASIZE JUMPI PREVRANDAO 0xB8 0xBA PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"2335:29442:89:-:0;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3400:40:69;2335:29442:89;;;;;:::i;:::-;;;;-1:-1:-1;;;2335:29442:89;;;;3400:40:69;:::i;:::-;;;3501:47;2335:29442:89;;;;;:::i;:::-;;;;-1:-1:-1;;;2335:29442:89;;;;3501:47:69;:::i;:::-;;;3601:41;2335:29442:89;;;;;:::i;:::-;;;;-1:-1:-1;;;2335:29442:89;;;;3601:41:69;:::i;:::-;;;;;;3703:48;2335:29442:89;;;;;:::i;:::-;;;;-1:-1:-1;;;2335:29442:89;;;;3703:48:69;:::i;:::-;;;;;;3802:39;2335:29442:89;;;;;:::i;:::-;;;;-1:-1:-1;;;2335:29442:89;;;;3802:39:69;:::i;:::-;;;;;;2335:29442:89;;;;;;3414:22:64;;;;;;;;;;;;;;;;;;-1:-1:-1;3414:22:64;;;-1:-1:-1;3449:4:64;;;2335:29442:89;;3406:48:64;3402:117;;2335:29442:89;;3541:29:64;;;;;;;;;;;;;;;-1:-1:-1;3541:29:64;;;-1:-1:-1;3449:4:64;;2335:29442:89;;3533:55:64;3529:131;;3670:32;;;;2335:29442:89;;;-1:-1:-1;;;;;;2335:29442:89;;;;;;;;;-1:-1:-1;;;3796:60:64;;;2335:29442:89;;;;;3796:60:64;2335:29442:89;3796:60:64;;;;;;;;-1:-1:-1;3796:60:64;;;-1:-1:-1;;3769:87:64;;;;2335:29442:89;;-1:-1:-1;;;3895:62:64;;;2335:29442:89;;3895:62:64;2335:29442:89;3895:62:64;2335:29442:89;3895:62:64;;;;;;;;-1:-1:-1;3895:62:64;;;-1:-1:-1;;3866:91:64;;;;2335:29442:89;;-1:-1:-1;;;3995:61:64;;2335:29442:89;3866:91:64;;;;;2335:29442:89;3866:91:64;2335:29442:89;;3995:61:64;;;;;;;;;;-1:-1:-1;3995:61:64;;;-1:-1:-1;;3967:89:64;;;;2335:29442:89;-1:-1:-1;;;4091:60:64;;2335:29442:89;3967:89:64;;2335:29442:89;;3967:89:64;;2335:29442:89;;4091:60:64;;;;;;;;;;;;;-1:-1:-1;4091:60:64;;;-1:-1:-1;;4067:84:64;;2335:29442:89;-1:-1:-1;;;4184:59:64;;2335:29442:89;;;;;4184:59:64;;;;;;;-1:-1:-1;4184:59:64;;;-1:-1:-1;;4161:82:64;;2335:29442:89;;;-1:-1:-1;;;;;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;3100:60;;;;2335:29442;3100:60;2335:29442;3100:60;;;;;;;;;;;-1:-1:-1;3100:60:89;;;-1:-1:-1;2335:29442:89;;;;3200:62;;;;;;;;;;;;;-1:-1:-1;3200:62:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;3291:85;;;;;;;2335:29442;3291:85;;;;;;;;;;;;;;;;;;;;;;;;3449:4:64;2335:29442:89;;;;;;;3291:85;;;-1:-1:-1;3291:85:89;;;;;;3272:104;;;;2335:29442;;3406:22;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3406:22:89;;;;;;3386:42;;;;2335:29442;;;;;;;;4067:84:64;2335:29442:89;;;;;4161:82:64;2335:29442:89;;;;;3400:40:69;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;3501:47:69;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3406:22;2335:29442;;-1:-1:-1;2335:29442:89;;;;;3406:22;2335:29442;;;;;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;3291:85;2335:29442;;;-1:-1:-1;2335:29442:89;;;;;3291:85;2335:29442;;;;;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;3200:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;2335:29442;;;-1:-1:-1;2335:29442:89;;;;;3100:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;2335:29442;;;-1:-1:-1;2335:29442:89;;;;;4184:59:64;;;;;;;;;;;;;;;;:::i;:::-;;;2335:29442:89;;;;;4184:59:64;;;2335:29442:89;-1:-1:-1;2335:29442:89;;4184:59:64;;;;;;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;4091:60:64;;;;;;;;;;;;;;;;;;:::i;:::-;;;2335:29442:89;;;;;;;;;;4091:60:64;;;;;;;;3995:61;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;3895:62:64;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;3796:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;3529:131:64;3611:38;;;;-1:-1:-1;3611:38:64;-1:-1:-1;3611:38:64;3541:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;3402:117;3477:31;;;;-1:-1:-1;3477:31:64;-1:-1:-1;3477:31:64;3414:22;;;;;;;;;;;;;;:::i;:::-;;;;2335:29442:89;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;:::o;9892:177:69:-;2335:29442:89;;;;;;:::i;:::-;;;;1461:67:44;2335:29442:89;;;;-1:-1:-1;;;2335:29442:89;;;;;1461:67:44;;;;;;2335:29442:89;;;;;;;;;;;;;;-1:-1:-1;;;2335:29442:89;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;1461:67:44;;;;;;;;;:::i;:::-;2335:29442:89;1451:78:44;;-1:-1:-1;;2335:29442:89;;;;;;;;;1432:103:44;2335:29442:89;1432:103:44;;2335:29442:89;;;;1432:103:44;;;;;:::i;:::-;2335:29442:89;;1405:144:44;;-1:-1:-1;;1405:170:44;;9892:177:69:o;2335:29442:89:-;;;;-1:-1:-1;2335:29442:89;;;;;-1:-1:-1;2335:29442:89"},"deployedBytecode":{"functionDebugData":{"abi_decode":{"entryPoint":4920,"id":null,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":1741,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":23110,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_addresst_array_contract_IERC20_dyn":{"entryPoint":10365,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_addresst_bool":{"entryPoint":10652,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_addresst_contract_IERC20":{"entryPoint":10767,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_addresst_enum_Rounding":{"entryPoint":4708,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_array_bool_dyn":{"entryPoint":14140,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IERC20_dyn":{"entryPoint":2362,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_TokenConfig_dyn_fromMemory":{"entryPoint":22491,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_TokenInfo_dyn":{"entryPoint":2895,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":3062,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":26790,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_uint256t_array_uint256_dynt_bytes_fromMemory":{"entryPoint":26957,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_available_length_bytes":{"entryPoint":3408,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_bool":{"entryPoint":2828,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65616":{"entryPoint":2720,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65617":{"entryPoint":2734,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65618":{"entryPoint":2748,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65619":{"entryPoint":2762,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65655":{"entryPoint":2776,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65656":{"entryPoint":2789,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65657":{"entryPoint":2802,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65660":{"entryPoint":2841,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65661":{"entryPoint":2854,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65662":{"entryPoint":2867,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_65663":{"entryPoint":2881,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":21284,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_boolt_array_uint256_dyn_fromMemory":{"entryPoint":34893,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_boolt_uint256_fromMemory":{"entryPoint":37299,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes":{"entryPoint":3462,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":26887,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":1728,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_contract_IERC20t_addresst_uint256":{"entryPoint":1755,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_contract_IERC20t_contract_IERC20t_uint256t_uint256":{"entryPoint":17278,"id":null,"parameterSlots":1,"returnSlots":4},"abi_decode_contract_IERC20t_int256":{"entryPoint":14926,"id":null,"parameterSlots":1,"returnSlots":2},"abi_decode_enum_AddLiquidityKind":{"entryPoint":3367,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_enum_RemoveLiquidityKind":{"entryPoint":7108,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_enum_TokenType":{"entryPoint":2699,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_AddLiquidityParams":{"entryPoint":3492,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_BufferWrapOrUnwrapParams":{"entryPoint":10892,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_LiquidityManagement":{"entryPoint":13269,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_PoolData":{"entryPoint":3158,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_PoolDatat_struct_AddLiquidityParamst_array_uint256_dyn":{"entryPoint":3636,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_struct_PoolDatat_struct_RemoveLiquidityParamst_array_uint256_dyn":{"entryPoint":9302,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_struct_RemoveLiquidityParams":{"entryPoint":7121,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_VaultSwapParams":{"entryPoint":5366,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_VaultSwapParamst_struct_SwapStatet_struct_PoolData":{"entryPoint":5500,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_t_bool":{"entryPoint":2815,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint256_fromMemory":{"entryPoint":21915,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_array_uint256_dynt_array_uint256_dynt_bytes_fromMemory":{"entryPoint":33170,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_uint256t_uint256t_uint256_fromMemory":{"entryPoint":23083,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint32":{"entryPoint":2487,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint32_65524":{"entryPoint":2468,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_uint40":{"entryPoint":13392,"id":null,"parameterSlots":0,"returnSlots":1},"abi_encode_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_65891":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_address_address_enum_AddLiquidityKind_array_uint256_dyn_array_uint256_dyn_uint256_array_uint256_dyn_bytes":{"entryPoint":43411,"id":null,"parameterSlots":9,"returnSlots":1},"abi_encode_address_address_enum_AddLiquidityKind_array_uint256_dyn_uint256_array_uint256_dyn_bytes":{"entryPoint":43106,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_address_address_enum_RemoveLiquidityKind_uint256_array_uint256_dyn_array_uint256_dyn_array_uint256_dyn_bytes":{"entryPoint":34948,"id":null,"parameterSlots":9,"returnSlots":1},"abi_encode_address_address_enum_RemoveLiquidityKind_uint256_array_uint256_dyn_array_uint256_dyn_bytes":{"entryPoint":32533,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_address_address_uint256_65980":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_address_uint256_66075":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_array_struct_TokenConfig_dyn_struct_PoolRoleAccounts_address_struct_LiquidityManagement":{"entryPoint":22942,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_address_array_uint256_dyn_uint256_array_uint256_dyn_bytes":{"entryPoint":27054,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_address_uint256_107394":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_uint256_array_uint256_dyn_array_uint256_dyn_bytes":{"entryPoint":33243,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn_storage":{"entryPoint":22170,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_TokenConfig_dyn":{"entryPoint":7707,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_TokenConfig_memory_ptr_dyn_memory_ptr":{"entryPoint":7818,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_struct_TokenInfo_dyn":{"entryPoint":3788,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":6288,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_enum_Rounding":{"entryPoint":45643,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_enum_Rounding_66102":{"entryPoint":45671,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_to_array_uint256_dyn":{"entryPoint":3885,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_bytes":{"entryPoint":12685,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_uint256":{"entryPoint":45283,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_bytes":{"entryPoint":12569,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_memory_ptr":{"entryPoint":4127,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_contract_IERC20_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_enum_AddLiquidityKind":{"entryPoint":21689,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_RemoveLiquidityKind":{"entryPoint":26268,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_enum_SwapKind":{"entryPoint":5652,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_AddLiquidityParams":{"entryPoint":21702,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_AfterSwapParams":{"entryPoint":37558,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_LiquidityManagement":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_PoolData":{"entryPoint":4745,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolData_memory_ptr":{"entryPoint":3936,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolRoleAccounts":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_PoolSwapParams":{"entryPoint":5665,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_PoolSwapParams_memory_ptr":{"entryPoint":5775,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_RemoveLiquidityParams":{"entryPoint":26281,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapState":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_address":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint256_address_address":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_array_uint256_dyn":{"entryPoint":27156,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_array_uint256_dyn_bytes":{"entryPoint":7232,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_uint256_uint256_65564":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_uint256_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_uint256_uint256_uint256_uint256":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_uint256_uint256_uint256_uint256_struct_VaultSwapParams_struct_SwapState_struct_PoolData":{"entryPoint":7915,"id":null,"parameterSlots":8,"returnSlots":1},"allocate_and_zero_memory_array_array_struct_TokenConfig_dyn":{"entryPoint":22413,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_struct_TokenInfo_dyn":{"entryPoint":46862,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":22056,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_and_zero_memory_struct_struct_PoolData":{"entryPoint":21624,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_PoolRoleAccounts":{"entryPoint":22912,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_PoolSwapParams":{"entryPoint":22002,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_and_zero_memory_struct_struct_TokenConfig":{"entryPoint":22377,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory":{"entryPoint":2305,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_65529":{"entryPoint":2194,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_65530":{"entryPoint":2207,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_65609":{"entryPoint":2239,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_65654":{"entryPoint":2272,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_contract_IERC20_dyn":{"entryPoint":2338,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":3380,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_array_contract_IERC20_dyn_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_int256":{"entryPoint":38599,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256":{"entryPoint":27143,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_uint256_66053":{"entryPoint":27129,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_uint256":{"entryPoint":36731,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":24228,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_66103":{"entryPoint":24199,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_int256":{"entryPoint":36467,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256":{"entryPoint":21989,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_uint256_65873":{"entryPoint":21975,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_address":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint32":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_uint40":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"constant_AGGREGATE_YIELD_FEE_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_DECIMAL_SCALING_FACTORS_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"constant_PAUSE_WINDOW_END_TIME_OFFSET":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"copy_array_from_storage_to_memory_array_contract_IERC20_dyn_ptr":{"entryPoint":46835,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_to_storage_from_array_contract_IERC20_dyn_to_array_contract_IERC20_dyn":{"entryPoint":24247,"id":null,"parameterSlots":2,"returnSlots":0},"copy_struct_to_storage_from_struct_TokenInfo_to_struct_TokenInfo":{"entryPoint":24678,"id":null,"parameterSlots":2,"returnSlots":0},"dispatch_internal_in_out":{"entryPoint":50474,"id":null,"parameterSlots":4,"returnSlots":1},"dispatch_internal_in_out_125945":{"entryPoint":50437,"id":null,"parameterSlots":3,"returnSlots":1},"dispatch_internal_in_out_125946":{"entryPoint":50460,"id":null,"parameterSlots":3,"returnSlots":1},"external_fun_accountDelta":{"entryPoint":14957,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_addLiquidity":{"entryPoint":12726,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_buildTokenConfig":{"entryPoint":14246,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_buildTokenConfig_36535":{"entryPoint":7835,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_buildTokenConfig_36620":{"entryPoint":13757,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_buildTokenConfig_36717":{"entryPoint":20530,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_burnERC20":{"entryPoint":6705,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_computeYieldFeesDue":{"entryPoint":4380,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_ensurePoolNotPaused":{"entryPoint":1968,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_ensureUnpausedAndGetVaultState":{"entryPoint":20401,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_ensureValidSwapAmount":{"entryPoint":17670,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_ensureValidTradeAmount":{"entryPoint":10166,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_erc4626BufferWrapOrUnwrap":{"entryPoint":11574,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_forceLock":{"entryPoint":14603,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_forceUnlock":{"entryPoint":14753,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getBufferTokenBalancesBytes":{"entryPoint":20859,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getLastLiveBalances":{"entryPoint":11286,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolFactoryMock":{"entryPoint":15517,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getPoolTokenCountAndIndexOfToken":{"entryPoint":18582,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getRawBalances":{"entryPoint":6305,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_getVaultExtension":{"entryPoint":17791,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_guardedCheckEntered":{"entryPoint":16807,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_internalGetBufferUnderlyingImbalance":{"entryPoint":9242,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_internalGetBufferWrappedImbalance":{"entryPoint":16876,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_loadPoolDataUpdatingBalancesAndYieldFees":{"entryPoint":4762,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_loadPoolDataUpdatingBalancesAndYieldFeesReentrancy":{"entryPoint":20140,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualAddLiquidity":{"entryPoint":4164,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualBuildPoolSwapParams":{"entryPoint":5792,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualComputeAndChargeAggregateSwapFees":{"entryPoint":18216,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualErc4626BufferWrapOrUnwrapReentrancy":{"entryPoint":11000,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualFindTokenIndex":{"entryPoint":20919,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetAddLiquidityCalledFlagBySession":{"entryPoint":11470,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetAggregateSwapFeeAmount":{"entryPoint":10804,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetAggregateYieldFeeAmount":{"entryPoint":15584,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetCurrentUnlockSessionId":{"entryPoint":14974,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetIsUnlocked":{"entryPoint":17612,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetNonzeroDeltaCount":{"entryPoint":4930,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetPoolConfigBits":{"entryPoint":13210,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualGetTokenDeltas":{"entryPoint":6728,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualInternalSwap":{"entryPoint":8120,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualReentrancyAddLiquidity":{"entryPoint":20991,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualReentrancyRemoveLiquidity":{"entryPoint":9371,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualReentrancySwap":{"entryPoint":15718,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualRegisterPool":{"entryPoint":15221,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualRegisterPoolAtTimestamp":{"entryPoint":2507,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualRegisterPoolPassThruTokens":{"entryPoint":10422,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualRegisterPoolWithSwapFee":{"entryPoint":6786,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualRemoveLiquidity":{"entryPoint":21022,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSendToReentrancy":{"entryPoint":19045,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetAccountDelta":{"entryPoint":19213,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetAddLiquidityCalledFlag":{"entryPoint":20297,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetAggregateSwapFeeAmount":{"entryPoint":12426,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetAggregateSwapFeePercentage":{"entryPoint":18918,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetAggregateYieldFeeAmount":{"entryPoint":14656,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetAggregateYieldFeePercentage":{"entryPoint":15657,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetBufferAsset":{"entryPoint":17162,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetBufferBalances":{"entryPoint":4568,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetBufferOwnerShares":{"entryPoint":21193,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetBufferTotalShares":{"entryPoint":11229,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetHooksConfig":{"entryPoint":18348,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetInitializedPool":{"entryPoint":13619,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetNonZeroDeltaCount":{"entryPoint":13701,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolBalances":{"entryPoint":6449,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolConfig":{"entryPoint":13413,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolConfigBits":{"entryPoint":20241,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolCreator":{"entryPoint":14807,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolPauseWindowEndTime":{"entryPoint":4459,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolPaused":{"entryPoint":18737,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolRegistered":{"entryPoint":10689,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolTokenInfo":{"entryPoint":17858,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolTokenInfo_36223":{"entryPoint":19900,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolTokens":{"entryPoint":15034,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetPoolTokensAndBalances":{"entryPoint":19658,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetReservesOf":{"entryPoint":19374,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetStaticSwapFeePercentage":{"entryPoint":5847,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetVaultPaused":{"entryPoint":14525,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSetVaultState":{"entryPoint":4825,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSettleReentrancy":{"entryPoint":10202,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSettleUnwrap":{"entryPoint":17698,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualSettleWrap":{"entryPoint":17326,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualTransfer":{"entryPoint":1799,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualUnsafeSetStaticSwapFeePercentage":{"entryPoint":9443,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualUpdateAggregateSwapFeePercentage":{"entryPoint":16738,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualUpdatePoolDataLiveBalancesAndRates":{"entryPoint":19431,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_manualWritePoolBalancesToStorage":{"entryPoint":4637,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mintERC20":{"entryPoint":12546,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mockIsUnlocked":{"entryPoint":17724,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_mockWithInitializedPool":{"entryPoint":14488,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_previewDeposit":{"entryPoint":17748,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_previewMint":{"entryPoint":19269,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_previewRedeem":{"entryPoint":18819,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_previewWithdraw":{"entryPoint":18173,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_recoveryModeExit":{"entryPoint":15411,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_reentrancyGuardEntered":{"entryPoint":19312,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_removeLiquidity":{"entryPoint":7275,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_sendTo":{"entryPoint":17352,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_settle":{"entryPoint":4988,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_supplyCredit":{"entryPoint":17571,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_swap":{"entryPoint":9504,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_takeDebt":{"entryPoint":11421,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transfer":{"entryPoint":18324,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_transferFrom":{"entryPoint":5277,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unguardedCheckNotEntered":{"entryPoint":18862,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_unlock":{"entryPoint":12586,"id":null,"parameterSlots":0,"returnSlots":0},"external_fun_updateLiveTokenBalanceInPoolData":{"entryPoint":16936,"id":null,"parameterSlots":0,"returnSlots":0},"extract_returndata":{"entryPoint":49246,"id":null,"parameterSlots":0,"returnSlots":1},"finalize_allocation":{"entryPoint":2159,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_65525":{"entryPoint":2050,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_65545":{"entryPoint":2083,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_65553":{"entryPoint":2111,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_65561":{"entryPoint":2131,"id":null,"parameterSlots":1,"returnSlots":0},"fun_":{"entryPoint":26413,"id":22335,"parameterSlots":0,"returnSlots":0},"fun_22317":{"entryPoint":26373,"id":22317,"parameterSlots":0,"returnSlots":0},"fun__loadPoolDataUpdatingBalancesAndYieldFees":{"entryPoint":30087,"id":24920,"parameterSlots":1,"returnSlots":1},"fun_accountDelta":{"entryPoint":44022,"id":24503,"parameterSlots":2,"returnSlots":0},"fun_addLiquidity":{"entryPoint":27199,"id":20585,"parameterSlots":3,"returnSlots":4},"fun_allowance":{"entryPoint":47351,"id":38353,"parameterSlots":3,"returnSlots":1},"fun_areBuffersPaused":{"entryPoint":null,"id":30723,"parameterSlots":1,"returnSlots":1},"fun_buildPoolSwapParams":{"entryPoint":31813,"id":19601,"parameterSlots":3,"returnSlots":1},"fun_buildTokenConfig":{"entryPoint":22707,"id":36535,"parameterSlots":1,"returnSlots":1},"fun_buildTokenConfig_36806":{"entryPoint":24007,"id":36806,"parameterSlots":4,"returnSlots":1},"fun_burn":{"entryPoint":31918,"id":38621,"parameterSlots":3,"returnSlots":0},"fun_callAfterAddLiquidityHook":{"entryPoint":43516,"id":28795,"parameterSlots":8,"returnSlots":1},"fun_callAfterRemoveLiquidityHook":{"entryPoint":35067,"id":28955,"parameterSlots":8,"returnSlots":1},"fun_callAfterSwapHook":{"entryPoint":37757,"id":28635,"parameterSlots":8,"returnSlots":1},"fun_callBeforeAddLiquidityHook":{"entryPoint":43191,"id":28678,"parameterSlots":5,"returnSlots":0},"fun_callBeforeRemoveLiquidityHook":{"entryPoint":32632,"id":28838,"parameterSlots":5,"returnSlots":0},"fun_callBeforeSwapHook":{"entryPoint":36962,"id":28499,"parameterSlots":3,"returnSlots":0},"fun_callComputeDynamicSwapFeeHook":{"entryPoint":37330,"id":28472,"parameterSlots":4,"returnSlots":1},"fun_callOptionalReturn":{"entryPoint":49711,"id":39576,"parameterSlots":2,"returnSlots":0},"fun_computeAddLiquiditySingleTokenExactOut":{"entryPoint":45317,"id":11388,"parameterSlots":6,"returnSlots":2},"fun_computeAddLiquidityUnbalanced":{"entryPoint":45695,"id":11280,"parameterSlots":5,"returnSlots":2},"fun_computeAmountGivenScaled18":{"entryPoint":37147,"id":19654,"parameterSlots":3,"returnSlots":1},"fun_computeAndChargeAggregateSwapFees":{"entryPoint":44584,"id":21334,"parameterSlots":5,"returnSlots":2},"fun_computeProportionalAmountsIn":{"entryPoint":46340,"id":11049,"parameterSlots":3,"returnSlots":1},"fun_computeProportionalAmountsOut":{"entryPoint":48468,"id":11099,"parameterSlots":3,"returnSlots":1},"fun_computeRateRoundUp":{"entryPoint":48798,"id":6473,"parameterSlots":1,"returnSlots":1},"fun_computeRemoveLiquiditySingleTokenExactIn":{"entryPoint":48295,"id":11656,"parameterSlots":6,"returnSlots":2},"fun_computeRemoveLiquiditySingleTokenExactOut":{"entryPoint":47775,"id":11553,"parameterSlots":6,"returnSlots":2},"fun_computeYieldFeesDue":{"entryPoint":28591,"id":30569,"parameterSlots":4,"returnSlots":1},"fun_copyToArray":{"entryPoint":45616,"id":6180,"parameterSlots":2,"returnSlots":0},"fun_copyToScaled18ApplyRateRoundDownArray":{"entryPoint":42992,"id":6310,"parameterSlots":3,"returnSlots":1},"fun_copyToScaled18ApplyRateRoundUpArray":{"entryPoint":32417,"id":6440,"parameterSlots":3,"returnSlots":1},"fun_ensureCorrectBufferAsset":{"entryPoint":38418,"id":24796,"parameterSlots":2,"returnSlots":0},"fun_ensureInitializedPool":{"entryPoint":32281,"id":24722,"parameterSlots":1,"returnSlots":0},"fun_ensureInputLengthMatch":{"entryPoint":32370,"id":5611,"parameterSlots":2,"returnSlots":0},"fun_ensureInputLengthMatch_5633":{"entryPoint":47483,"id":5633,"parameterSlots":3,"returnSlots":0},"fun_ensureInvariantRatioAboveMinimumBound":{"entryPoint":50133,"id":11708,"parameterSlots":2,"returnSlots":0},"fun_ensureInvariantRatioBelowMaximumBound":{"entryPoint":49842,"id":11682,"parameterSlots":2,"returnSlots":0},"fun_ensurePoolMinimumTotalSupply":{"entryPoint":47427,"id":38473,"parameterSlots":1,"returnSlots":0},"fun_ensurePoolNotPaused":{"entryPoint":26487,"id":24569,"parameterSlots":1,"returnSlots":0},"fun_ensureUnlocked":{"entryPoint":30733,"id":24402,"parameterSlots":0,"returnSlots":0},"fun_ensureUnpaused":{"entryPoint":32358,"id":24537,"parameterSlots":1,"returnSlots":0},"fun_ensureValidSwapAmount":{"entryPoint":44435,"id":22287,"parameterSlots":1,"returnSlots":0},"fun_ensureValidTradeAmount":{"entryPoint":38389,"id":22273,"parameterSlots":1,"returnSlots":0},"fun_ensureValidWrapAmount":{"entryPoint":38504,"id":21602,"parameterSlots":2,"returnSlots":0},"fun_ensureVaultNotPaused":{"entryPoint":26648,"id":24523,"parameterSlots":0,"returnSlots":0},"fun_findTokenIndex":{"entryPoint":44876,"id":25085,"parameterSlots":2,"returnSlots":1},"fun_forceApprove":{"entryPoint":49167,"id":39534,"parameterSlots":3,"returnSlots":0},"fun_forceApprove_66059":{"entryPoint":48887,"id":39534,"parameterSlots":2,"returnSlots":0},"fun_functionCallWithValue":{"entryPoint":49293,"id":39746,"parameterSlots":2,"returnSlots":1},"fun_getAggregateYieldFeePercentage":{"entryPoint":50098,"id":29722,"parameterSlots":1,"returnSlots":1},"fun_getBalanceDerived":{"entryPoint":null,"id":5865,"parameterSlots":1,"returnSlots":1},"fun_getBalanceRaw":{"entryPoint":null,"id":5848,"parameterSlots":1,"returnSlots":1},"fun_getBufferUnderlyingImbalance":{"entryPoint":36536,"id":5389,"parameterSlots":2,"returnSlots":1},"fun_getBufferWrappedImbalance":{"entryPoint":44217,"id":5438,"parameterSlots":2,"returnSlots":1},"fun_getDecimalScalingFactors":{"entryPoint":50006,"id":29854,"parameterSlots":2,"returnSlots":1},"fun_getDefaultLiquidityManagement":{"entryPoint":26756,"id":38000,"parameterSlots":0,"returnSlots":1},"fun_getSingleInputIndex":{"entryPoint":45105,"id":5692,"parameterSlots":1,"returnSlots":1},"fun_getStaticSwapFeePercentage":{"entryPoint":45248,"id":29600,"parameterSlots":1,"returnSlots":1},"fun_getTokenRate":{"entryPoint":47514,"id":30455,"parameterSlots":1,"returnSlots":1},"fun_insertBool":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_125934":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_125957":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_143285":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_143286":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_159990":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_159991":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_176408":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_176409":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_192715":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_192716":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_208901":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_208902":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_224960":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_224961":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_240900":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertBool_240901":{"entryPoint":null,"id":7411,"parameterSlots":2,"returnSlots":1},"fun_insertUint":{"entryPoint":46764,"id":7149,"parameterSlots":3,"returnSlots":1},"fun_insertUint_272409":{"entryPoint":46738,"id":7149,"parameterSlots":2,"returnSlots":1},"fun_insertUint_272410":{"entryPoint":null,"id":7149,"parameterSlots":2,"returnSlots":1},"fun_insertUint_272411":{"entryPoint":null,"id":7149,"parameterSlots":2,"returnSlots":1},"fun_isPoolInRecoveryMode":{"entryPoint":null,"id":29305,"parameterSlots":1,"returnSlots":1},"fun_isQueryContext":{"entryPoint":48549,"id":25144,"parameterSlots":0,"returnSlots":1},"fun_loadPoolDataUpdatingBalancesAndYieldFees":{"entryPoint":29531,"id":24920,"parameterSlots":1,"returnSlots":1},"fun_loadSwapState":{"entryPoint":36861,"id":19568,"parameterSlots":2,"returnSlots":1},"fun_manualSetAggregateSwapFeePercentage":{"entryPoint":43941,"id":38084,"parameterSlots":2,"returnSlots":1},"fun_manualSetHooksConfig":{"entryPoint":24950,"id":36161,"parameterSlots":2,"returnSlots":0},"fun_manualSetPoolConfig":{"entryPoint":23336,"id":36018,"parameterSlots":2,"returnSlots":0},"fun_manualSetPoolTokenInfo":{"entryPoint":26023,"id":36223,"parameterSlots":2,"returnSlots":0},"fun_mint":{"entryPoint":42616,"id":38458,"parameterSlots":3,"returnSlots":0},"fun_mulDivUp":{"entryPoint":48766,"id":7660,"parameterSlots":3,"returnSlots":1},"fun_mulDivUp_66098":{"entryPoint":48677,"id":7660,"parameterSlots":2,"returnSlots":1},"fun_mulDown":{"entryPoint":49823,"id":7579,"parameterSlots":2,"returnSlots":1},"fun_mulUp":{"entryPoint":46657,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_nonReentrantAfter":{"entryPoint":30696,"id":9554,"parameterSlots":0,"returnSlots":0},"fun_nonReentrantBefore":{"entryPoint":30611,"id":9542,"parameterSlots":0,"returnSlots":0},"fun_previewDeposit":{"entryPoint":24402,"id":38126,"parameterSlots":2,"returnSlots":1},"fun_previewMint":{"entryPoint":25903,"id":38159,"parameterSlots":2,"returnSlots":1},"fun_previewRedeem":{"entryPoint":25639,"id":38201,"parameterSlots":2,"returnSlots":1},"fun_previewWithdraw":{"entryPoint":24825,"id":38234,"parameterSlots":2,"returnSlots":1},"fun_queryModeBalanceIncrease":{"entryPoint":48570,"id":38387,"parameterSlots":3,"returnSlots":0},"fun_reloadBalancesAndRates":{"entryPoint":33014,"id":30410,"parameterSlots":2,"returnSlots":0},"fun_reloadBalancesAndRates_65558":{"entryPoint":32850,"id":30410,"parameterSlots":2,"returnSlots":0},"fun_removeLiquidity":{"entryPoint":33305,"id":21241,"parameterSlots":3,"returnSlots":4},"fun_requireAddLiquidityCustomEnabled":{"entryPoint":45000,"id":29430,"parameterSlots":1,"returnSlots":0},"fun_requireDonationEnabled":{"entryPoint":46287,"id":29579,"parameterSlots":1,"returnSlots":0},"fun_requireRemoveLiquidityCustomEnabled":{"entryPoint":47722,"id":29492,"parameterSlots":1,"returnSlots":0},"fun_requireUnbalancedLiquidityEnabled":{"entryPoint":45053,"id":29368,"parameterSlots":1,"returnSlots":0},"fun_setAggregateYieldFeePercentage":{"entryPoint":43958,"id":29762,"parameterSlots":2,"returnSlots":1},"fun_setBalanceDerived":{"entryPoint":43994,"id":5901,"parameterSlots":2,"returnSlots":1},"fun_setBalanceRaw":{"entryPoint":42602,"id":5883,"parameterSlots":2,"returnSlots":1},"fun_setPauseWindowEndTime":{"entryPoint":null,"id":29931,"parameterSlots":2,"returnSlots":1},"fun_setPoolRegistered":{"entryPoint":null,"id":29201,"parameterSlots":2,"returnSlots":1},"fun_setStaticSwapFeePercentage":{"entryPoint":36746,"id":29640,"parameterSlots":2,"returnSlots":1},"fun_setTokenDecimalDiffs":{"entryPoint":null,"id":29881,"parameterSlots":2,"returnSlots":1},"fun_settleUnwrap":{"entryPoint":44515,"id":22179,"parameterSlots":4,"returnSlots":0},"fun_settleWrap":{"entryPoint":44366,"id":22141,"parameterSlots":4,"returnSlots":0},"fun_settleWrapUnwrap":{"entryPoint":49323,"id":22258,"parameterSlots":4,"returnSlots":0},"fun_shouldCallAfterAddLiquidity":{"entryPoint":null,"id":28261,"parameterSlots":1,"returnSlots":1},"fun_shouldCallAfterRemoveLiquidity":{"entryPoint":null,"id":28347,"parameterSlots":1,"returnSlots":1},"fun_shouldCallAfterSwap":{"entryPoint":null,"id":28175,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeAddLiquidity":{"entryPoint":null,"id":28218,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeRemoveLiquidity":{"entryPoint":null,"id":28304,"parameterSlots":1,"returnSlots":1},"fun_shouldCallBeforeSwap":{"entryPoint":null,"id":28132,"parameterSlots":1,"returnSlots":1},"fun_shouldCallComputeDynamicSwapFee":{"entryPoint":null,"id":28089,"parameterSlots":1,"returnSlots":1},"fun_spendAllowance":{"entryPoint":30876,"id":38827,"parameterSlots":4,"returnSlots":0},"fun_supplyCredit":{"entryPoint":30814,"id":24430,"parameterSlots":2,"returnSlots":0},"fun_syncPoolBalancesAndFees":{"entryPoint":47003,"id":30346,"parameterSlots":3,"returnSlots":0},"fun_tGet":{"entryPoint":null,"id":6669,"parameterSlots":3,"returnSlots":1},"fun_tIncrement":{"entryPoint":42950,"id":7050,"parameterSlots":1,"returnSlots":0},"fun_tSet":{"entryPoint":44978,"id":6593,"parameterSlots":3,"returnSlots":0},"fun_tSet_65600":{"entryPoint":42967,"id":6699,"parameterSlots":3,"returnSlots":0},"fun_takeDebt":{"entryPoint":38406,"id":24447,"parameterSlots":2,"returnSlots":0},"fun_toInt256":{"entryPoint":47266,"id":44125,"parameterSlots":1,"returnSlots":1},"fun_toPackedBalance":{"entryPoint":28722,"id":5929,"parameterSlots":2,"returnSlots":1},"fun_toRawUndoRateRoundDown":{"entryPoint":46691,"id":6135,"parameterSlots":3,"returnSlots":1},"fun_toRawUndoRateRoundUp":{"entryPoint":46411,"id":6156,"parameterSlots":3,"returnSlots":1},"fun_toUint256":{"entryPoint":48834,"id":43289,"parameterSlots":1,"returnSlots":1},"fun_totalSupply":{"entryPoint":null,"id":38305,"parameterSlots":1,"returnSlots":1},"fun_transfer":{"entryPoint":31353,"id":38711,"parameterSlots":4,"returnSlots":0},"fun_unwrapWithBuffer":{"entryPoint":41811,"id":22103,"parameterSlots":4,"returnSlots":3},"fun_unwrapWithBuffer_65875":{"entryPoint":40849,"id":22103,"parameterSlots":3,"returnSlots":3},"fun_unwrapWithBuffer_65880":{"entryPoint":41369,"id":22103,"parameterSlots":3,"returnSlots":3},"fun_updateRawAndLiveBalance":{"entryPoint":46575,"id":30517,"parameterSlots":4,"returnSlots":0},"fun_updateRawAndLiveBalance_125942":{"entryPoint":46508,"id":30517,"parameterSlots":3,"returnSlots":0},"fun_updateRawAndLiveBalance_65566":{"entryPoint":46431,"id":30517,"parameterSlots":3,"returnSlots":0},"fun_verifyCallResultFromTarget":{"entryPoint":50297,"id":39838,"parameterSlots":3,"returnSlots":1},"fun_wrapWithBuffer":{"entryPoint":39855,"id":21867,"parameterSlots":4,"returnSlots":3},"fun_wrapWithBuffer_65874":{"entryPoint":38626,"id":21867,"parameterSlots":3,"returnSlots":3},"fun_wrapWithBuffer_65885":{"entryPoint":39244,"id":21867,"parameterSlots":3,"returnSlots":3},"fun_writePoolBalancesToStorage":{"entryPoint":28822,"id":24844,"parameterSlots":2,"returnSlots":0},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65541":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65548":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65550":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65556":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65888":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65956":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65962":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65966":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_65978":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_address_userDefinedValueType_PoolConfigBits_of_address_66057":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"mapping_index_access_mapping_uint256_bytes32_of_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":22105,"id":null,"parameterSlots":2,"returnSlots":1},"modifier_nonReentrant":{"entryPoint":28921,"id":9523,"parameterSlots":3,"returnSlots":1},"modifier_nonReentrant_65576":{"entryPoint":35501,"id":9523,"parameterSlots":4,"returnSlots":4},"modifier_transient":{"entryPoint":23131,"id":19202,"parameterSlots":2,"returnSlots":1},"modifier_whenVaultNotPaused":{"entryPoint":21316,"id":24511,"parameterSlots":4,"returnSlots":0},"panic_error_0x11":{"entryPoint":21930,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":36491,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":3728,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2005,"id":null,"parameterSlots":0,"returnSlots":0},"read_from_memoryt_bool":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_memoryt_enum_TokenType":{"entryPoint":23997,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_reference_type_struct_TokenInfo":{"entryPoint":46940,"id":null,"parameterSlots":1,"returnSlots":1},"read_from_storage_split_offset_contract_IHooks":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"require_helper_stringliteral_14ed":{"entryPoint":21814,"id":null,"parameterSlots":1,"returnSlots":0},"require_helper_stringliteral_555b":{"entryPoint":22238,"id":null,"parameterSlots":1,"returnSlots":0},"revert_forward":{"entryPoint":21305,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offsett_address_to_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"validator_assert_enum_AddLiquidityKind":{"entryPoint":21679,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_enum_RemoveLiquidityKind":{"entryPoint":26258,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_enum_TokenType":{"entryPoint":3773,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":2710,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_contract_IERC20":{"entryPoint":1707,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_enum_TokenType":{"entryPoint":2689,"id":null,"parameterSlots":1,"returnSlots":0},"write_to_memory_bool":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_contract_IERC20":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"write_to_memory_enum_TokenType":{"entryPoint":23988,"id":null,"parameterSlots":2,"returnSlots":0}},"generatedSources":[],"immutableReferences":{"19040":[{"length":32,"start":17822},{"length":32,"start":26436}],"27733":[{"length":32,"start":44437}],"27735":[{"length":32,"start":38507}],"27740":[{"length":32,"start":14622},{"length":32,"start":14773},{"length":32,"start":17635},{"length":32,"start":23142},{"length":32,"start":30735}],"27745":[{"length":32,"start":4953},{"length":32,"start":13723},{"length":32,"start":23207},{"length":32,"start":44103},{"length":32,"start":44172}],"27750":[{"length":32,"start":6751},{"length":32,"start":19233},{"length":32,"start":44031}],"27755":[{"length":32,"start":11509},{"length":32,"start":12879},{"length":32,"start":20350},{"length":32,"start":33486}],"27760":[{"length":32,"start":12827},{"length":32,"start":14994},{"length":32,"start":20314},{"length":32,"start":23251},{"length":32,"start":33434}],"27806":[{"length":32,"start":26655}],"27808":[{"length":32,"start":26597}],"35502":[{"length":32,"start":6884},{"length":32,"start":10544},{"length":32,"start":15266},{"length":32,"start":15548},{"length":32,"start":21342}],"35505":[{"length":32,"start":14042},{"length":32,"start":22841}]},"linkReferences":{},"object":"60806040526004361015610018575b3661672d57616705565b5f3560e01c8062d7aadb146106a657806302e1a4aa146106a15780630362a5131461069c5780630790de461461069757806308bade29146106925780630c87409b1461068d5780630ee4cdd8146106885780630f619655146106835780630f682ba01461067e57806310c1dc4114610679578063155075e61461067457806315afd4091461066f57806315dacbea1461066a57806316a573c214610665578063195aaef91461066057806319a24bcb1461065b5780631c4e1e23146106565780631d27af68146106515780631f4475c51461064c5780631f495f7914610647578063214578971461064257806324e7176b1461063d57806325b6a844146106385780632606a4de1461063357806328121e271461062e5780632b766278146106295780632bfb780c146106245780632cbbf1981461061f5780632d1c3beb1461061a57806332333ce614610615578063352339ee1461061057806336918d6e1461060b578063370bc8da146106065780633cb5b2af146106015780633cce2585146105fc5780633e262ba3146105f7578063420f4a45146105f257806343583be5146105ed57806344ea8763146105e857806347c07e88146105e357806348c89491146105de5780634af29ec4146105d9578063557dba68146105d45780635c1c1c81146105cf5780635e3e00fa146105ca5780635eeae6eb146105c55780635f70f542146105c0578063608256f7146105bb57806362691e5f146105b6578063692407ae146105b15780636d4908c4146105ac5780637004b0f1146105a75780637965c967146105a257806379a2c0ac1461059d57806380047e261461059857806381e4b7e91461059357806382ea17491461058e578063851c65a31461058957806387a530f81461058457806387a76c591461057f5780638f5aeb4b1461057a578063920af0661461057557806396e74a2714610570578063a03b23ef1461056b578063a408f31214610566578063a40f959214610561578063aa01edb31461055c578063ab62c2b614610557578063ac00485514610552578063ae6393291461054d578063b1740c2d14610548578063b246949914610543578063b4eb0bf91461053e578063b6f680f414610539578063b8caceee14610534578063b8f82b261461052f578063b9a8effa1461052a578063bb14e46614610525578063bbc6f1dc14610520578063be6b4d2a1461051b578063beabacc814610516578063c1fdcd6214610511578063c9c1661b1461050c578063cbde2b6814610507578063cbe52ae314610502578063cecc95a7146104fd578063cfcc2209146104f8578063d01a3269146104f3578063d0643b8c146104ee578063d1f810a5146104e9578063d2c725e0146104e4578063d64bc25d146104df578063d86c3fef146104da578063d8f4cf3c146104d5578063dab50579146104d0578063dc4402ed146104cb578063df138458146104c6578063e2ddce11146104c1578063e460a8a9146104bc578063e5948689146104b7578063e5b08ffb146104b2578063ebfeb0a1146104ad578063eeda9991146104a8578063f1320097146104a35763ff44deab0361000e576152c9565b61521e565b6151ff565b6151b7565b61517b565b615032565b614fb1565b614f49565b614f11565b614eac565b614dbc565b614cca565b614be7565b614bae565b614b70565b614b45565b614b0d565b614a65565b6149e6565b6149ae565b614983565b614931565b614896565b6147ac565b614794565b614728565b6146fd565b6145c2565b61457f565b614554565b61453c565b614522565b614506565b6144cc565b6144a3565b6143c8565b6143ae565b61430a565b614228565b6141ec565b6141a7565b614162565b613d66565b613d29565b613ce0565b613c9d565b613c33565b613b75565b613aba565b613a7e565b613a6d565b6139d7565b6139a1565b613940565b61390b565b6138bd565b613898565b6137a6565b6135bd565b613585565b613533565b613465565b61339a565b6131b6565b61312a565b613102565b61308a565b612d36565b612cce565b612c9d565b612c16565b612bdd565b612af8565b612a34565b6129c1565b6128b6565b6127da565b6127b6565b612520565b6124e3565b61249b565b61241a565b611fb8565b611e9b565b611c6b565b611a82565b611a48565b611a31565b611931565b6118a1565b6116d7565b6116a0565b61149d565b61137c565b611342565b6112d9565b61129a565b61121d565b6111d8565b61116b565b61111c565b611044565b6109cb565b6107b0565b610707565b6001600160a01b038116036106bc57565b5f80fd5b35906106cb826106ab565b565b61016435906106cb826106ab565b60031960609101126106bc576004356106f3816106ab565b90602435610700816106ab565b9060443590565b346106bc57610770602061071a366106db565b91905f6001600160a01b036040518097819682957fa9059cbb00000000000000000000000000000000000000000000000000000000845260048401602090939291936001600160a01b0360408201951681520152565b0393165af180156107ab5761078157005b6107a29060203d6020116107a4575b61079a818361086f565b810190615324565b005b503d610790565b615339565b346106bc5760206003193601126106bc576107a26004356107d0816106ab565b616777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761081e57604052565b6107d5565b6080810190811067ffffffffffffffff82111761081e57604052565b67ffffffffffffffff811161081e57604052565b60e0810190811067ffffffffffffffff82111761081e57604052565b90601f601f19910116810190811067ffffffffffffffff82111761081e57604052565b604051906106cb82610853565b6040519060c0820182811067ffffffffffffffff82111761081e57604052565b60405190610140820182811067ffffffffffffffff82111761081e57604052565b60405190610160820182811067ffffffffffffffff82111761081e57604052565b60405190610180820182811067ffffffffffffffff82111761081e57604052565b67ffffffffffffffff811161081e5760051b60200190565b9080601f830112156106bc57602090823561095481610922565b93610962604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b82821061098b575050505090565b8380918335610999816106ab565b81520191019061097d565b6044359063ffffffff821682036106bc57565b610124359063ffffffff821682036106bc57565b346106bc5760c06003193601126106bc576004356109e8816106ab565b60243567ffffffffffffffff81116106bc57610a0890369060040161093a565b90610a116109a4565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126106bc576107a29260405192610a4c84610802565b606435610a58816106ab565b8452608435610a66816106ab565b602085015260a435610a77816106ab565b6040850152615344565b600211156106bc57565b35906106cb82610a81565b801515036106bc57565b61014435906106cb82610a96565b61016435906106cb82610a96565b61018435906106cb82610a96565b6101a435906106cb82610a96565b602435906106cb82610a96565b604435906106cb82610a96565b606435906106cb82610a96565b608435906106cb82610a96565b60a435906106cb82610a96565b60c435906106cb82610a96565b60e435906106cb82610a96565b61010435906106cb82610a96565b61012435906106cb82610a96565b81601f820112156106bc578035906020610b6883610922565b936040610b78604051968761086f565b84865282860191836060809702860101948186116106bc578401925b858410610ba5575050505050505090565b86848303126106bc578487918451610bbc81610802565b8635610bc781610a81565b815282870135610bd6816106ab565b8382015285870135610be781610a96565b86820152815201930192610b94565b9080601f830112156106bc576020908235610c1081610922565b93610c1e604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b828210610c47575050505090565b81358152908301908301610c39565b91909160e0818403126106bc57610c6b610892565b813581529267ffffffffffffffff60208301358181116106bc5782610c9191850161093a565b602086015260408301358181116106bc5782610cae918501610b4f565b604086015260608301358181116106bc5782610ccb918501610bf6565b606086015260808301358181116106bc5782610ce8918501610bf6565b608086015260a08301358181116106bc5782610d05918501610bf6565b60a086015260c08301359081116106bc57610d209201610bf6565b60c0830152565b359060058210156106bc57565b67ffffffffffffffff811161081e57601f01601f191660200190565b929192610d5c82610d34565b91610d6a604051938461086f565b8294818452818301116106bc578281602093845f960137010152565b9080601f830112156106bc57816020610da193359101610d50565b90565b91909160c0818403126106bc57610db961089f565b92610dc3826106c0565b8452610dd1602083016106c0565b602085015267ffffffffffffffff60408301358181116106bc5782610df7918501610bf6565b604086015260608301356060860152610e1260808401610d27565b608086015260a08301359081116106bc57610e2d9201610d86565b60a0830152565b60606003198201126106bc5767ffffffffffffffff916004358381116106bc5782610e6191600401610c56565b926024358181116106bc5783610e7991600401610da4565b926044359182116106bc57610da191600401610bf6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60021115610ec757565b610e90565b9081518082526020808093019301915f5b828110610eeb575050505090565b9091929382606060019287518051610f0281610ebd565b8252808401516001600160a01b03168483015260409081015115159082015201950193929101610edd565b9081518082526020808093019301915f5b828110610f4c575050505090565b835185529381019392810192600101610f3e565b91909160e0830192815181526020808301519460e060208401528551809152602061010084019601915f5b828110611002575050505060c0610ff1610fdf610fcd610fbb610da1979860408801518782036040890152610ecc565b60608701518682036060880152610f2d565b60808601518582036080870152610f2d565b60a085015184820360a0860152610f2d565b9201519060c0818403910152610f2d565b83516001600160a01b031688529681019692810192600101610f8b565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b346106bc576110e96111056111186110d561105e36610e34565b9291949061106a615478565b506110f7604051946110a3602087018761108486836154c6565b0397611098601f19998a810183528261086f565b51902091848a616a3f565b979293919590986110cc60405191826110c06020820195866154c6565b0390810183528261086f565b51902014615536565b60405198899860a08a5260a08a0190610f60565b9088820360208a0152610f2d565b908682036040880152610f2d565b916060850152838203608085015261101f565b0390f35b346106bc5760806003193601126106bc5760043567ffffffffffffffff81116106bc576111636111526020923690600401610c56565b606435906044359060243590616faf565b604051908152f35b346106bc5760406003193601126106bc57600435611188816106ab565b6024359063ffffffff821682036106bc576001600160a01b036111c8911691825f525f60205260405f205460829163ffffffff908116831b921b19161790565b905f525f60205260405f20555f80f35b346106bc5760606003193601126106bc576004356111f5816106ab565b6001600160a01b0361120b604435602435617032565b91165f52600b60205260405f20555f80f35b346106bc5760406003193601126106bc5760043561123a816106ab565b6024359067ffffffffffffffff82116106bc5761125e6107a2923690600401610c56565b90617096565b60031960409101126106bc5760043561127c816106ab565b90602435610da181610a81565b906020610da1928181520190610f60565b346106bc576111186112c56112ae36611264565b906112b7615478565b506112c0615478565b6170f9565b604051918291602083526020830190610f60565b346106bc576003196040813601126106bc576004356112f781610a96565b6024359161130483610a96565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6007549260011b16911617176007555f80f35b5f9103126106bc57565b346106bc575f6003193601126106bc5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346106bc5760406003193601126106bc57600435611399816106ab565b6024356113a4617793565b6113ac61780d565b6001600160a01b0382165f818152600860209081526040918290205491517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152919492829060249082905afa9384156107ab5761111894611438925f9161146e575b5080611432856001600160a01b03165f52600860205260405f2090565b556155e5565b91808311611464575b508161144c9161785e565b6114546177e8565b6040519081529081906020820190565b915061144c611441565b611490915060203d602011611496575b611488818361086f565b81019061559b565b5f611415565b503d61147e565b346106bc5760806003193601126106bc576114eb6004356114bd816106ab565b6024356114c9816106ab565b604435906114d6826106ab565b6114e56064358094833361789c565b33617a79565b602060405160018152f35b91909160e0818403126106bc5761150b610892565b9261151582610a8b565b8452611523602083016106c0565b6020850152611534604083016106c0565b6040850152611545606083016106c0565b60608501526080820135608085015260a082013560a085015260c082013567ffffffffffffffff81116106bc57610d209201610d86565b60c06003198201126106bc5767ffffffffffffffff916004358381116106bc57826115a9916004016114f6565b9260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8401126106bc576040516115e081610823565b60243581526044356020820152606435604082015260843560608201529260a4359182116106bc57610da191600401610c56565b9061161e82610ebd565b52565b610da191815161163081610ebd565b81526020820151602082015260c0611657604084015160e0604085015260e0840190610f2d565b9260608101516060840152608081015160808401526001600160a01b0360a08201511660a084015201519060c081840391015261101f565b906020610da1928181520190611621565b346106bc576111186116c36116b43661157c565b916116bd6155f2565b50617c45565b604051918291602083526020830190611621565b346106bc5760406003193601126106bc576004356116f4816106ab565b6024356001600160a01b038216916040517fce20ece70000000000000000000000000000000000000000000000000000000081526020908181600481885afa9081156107ab575f91611873575b50831061184b576040517f654cf15d0000000000000000000000000000000000000000000000000000000081528181600481885afa9182156107ab575f9261182e575b505082116118065781816117f06117d97f89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1956117d3611801966001600160a01b03165f525f60205260405f2090565b54618f8a565b916001600160a01b03165f525f60205260405f2090565b556040519081529081906020820190565b0390a2005b7f7f47834b000000000000000000000000000000000000000000000000000000005f5260045ffd5b6118449250803d1061149657611488818361086f565b5f80611784565b7fbfb20688000000000000000000000000000000000000000000000000000000005f5260045ffd5b61188a9150823d841161149657611488818361086f565b5f611741565b906020610da1928181520190610f2d565b346106bc576020806003193601126106bc576001600160a01b036004356118c7816106ab565b165f5260056020526040805f2090600360205260405f2054916118e983615628565b935f5b84811061190157604051806111188882611890565b806001915f528383526fffffffffffffffffffffffffffffffff855f20541661192a8289615659565b52016118ec565b346106bc5760606003193601126106bc5760043561194e816106ab565b67ffffffffffffffff6024358181116106bc5761196f903690600401610bf6565b6044359182116106bc576119ea61198d6119b2933690600401610bf6565b936001600160a01b0381165f5260036020526119b960405f206040519586809261569a565b038561086f565b6119c684518451146156de565b6119d384518651146156de565b6001600160a01b03165f52600560205260405f2090565b905f5b83518110156107a25780611a18611a0660019385615659565b51611a118389615659565b5190617032565b611a2a8286905f5260205260405f2090565b55016119ed565b346106bc576107a2611a42366106db565b91617cae565b346106bc575f6003193601126106bc5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346106bc5760606003193601126106bc57600435611a9f816106ab565b60243567ffffffffffffffff81116106bc57611abf90369060040161093a565b90611ac8616818565b611ad0616884565b91600183526001600160a01b0390611b0a827f000000000000000000000000000000000000000000000000000000000000000016916158b3565b91813b156106bc575f8094611b6296611ba1604051988997889687957fed05beaf0000000000000000000000000000000000000000000000000000000087521660048601526101006024860152610104850190611e1b565b91604435604485015284606485015260848401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03925af180156107ab57611bb157005b80611bbe6107a29261083f565b80611338565b359060048210156106bc57565b91909160c0818403126106bc57611be661089f565b92611bf0826106c0565b8452611bfe602083016106c0565b602085015260408201356040850152606082013567ffffffffffffffff908181116106bc5782611c2f918501610bf6565b6060860152610e1260808401611bc4565b91611c5d90610da194928452606060208501526060840190610f2d565b91604081840391015261101f565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc57611c9c903690600401611bd1565b611ca461780d565b611cb76001600160a01b03825116617e19565b611cd0611ccb82516001600160a01b031690565b617e66565b611ce9611ce482516001600160a01b031690565b61735b565b611d3c602082015151611d03606085019182515190617e72565b805160c0840190611d1d82519160a0870192835191617ea1565b92611d2d865160019060101c1690565b611dc3575b5050508383618219565b929390919485611d51835160019060111c1690565b611d66575b60405180611118878a8a84611c40565b6111189496509085611db9949392611daf611da2611d8b85516001600160a01b031690565b6001600160a01b03165f52600260205260405f2090565b546001600160a01b031690565b94845133906188fb565b92905f8080611d56565b611deb611e13948789611de3611da2611d8b83516001600160a01b031690565b923390617f78565b611e08611e026119d389516001600160a01b031690565b87618052565b519151905191617ea1565b5f8080611d32565b9081518082526020808093019301915f5b828110611e3a575050505090565b9091929382608060019287516001600160a01b0380825116835284820151611e6181610ebd565b838601526040828101519091169083015260609081015115159082015201950193929101611e2c565b906020610da1928181520190611e1b565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc57611ed7611ed261111892369060040161093a565b6158b3565b604051918291602083526020830190611e1b565b939460c091610da19896611faa95611f8195610140938952602089015260408801526060870152806080870152815190611f2482610ebd565b86015260208101516001600160a01b03908116610160870152604082015181166101808701526060820151166101a086015260808101516101c086015260a08101516101e0860152015160e061020085015261022084019061101f565b845160a0840152602085015160c0840152604085015160e0840152606090940151610100830152565b610120818403910152610f60565b346106bc5760c05f611fc93661157c565b906040928351611fd881610853565b8581526020908682820152868682015260609781888a809401528860808201528860a08201520152612008615769565b50612011615478565b5061201d848484617c45565b94612026617793565b61202e615980565b91835161203a81610ebd565b61204381610ebd565b156123f4575b808701612056815161ad93565b816120b6818701996120816120756120758d516001600160a01b031690565b6001600160a01b031690565b9086519c8d809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161168f565b03925af19889156107ab575f996123d5575b50886120d38161ad93565b85516120de81610ebd565b6120e781610ebd565b61235b575082860151905261212b60c087015161212461211e61210f858a0193845190615659565b519260a08b0151905190615659565b5161be9e565b908a61b663565b9660808501519388949a60a0870151808b1061232857509085915b8c8689019481865161215e906001600160a01b031690565b9061216891619606565b828a019685885161217f906001600160a01b031690565b906121899161785e565b8b8d8651845161219f906001600160a01b031690565b8a516001600160a01b03168451916121b7938561ae28565b93908c828a019901948552885282518783019487828751906121d891615659565b51906121e391616a07565b90516121ee916155e5565b6121f8918461b55f565b8201928351898183519061220b91615659565b5190612216916155e5565b612220918461b55f565b84516001600160a01b03165f908152600560205260409020928151815161224691615659565b5192608001928351825161225991615659565b5161226391617032565b90516122779085905f5260205260405f2090565b5551835161228491615659565b519051835161229291615659565b5161229c91617032565b91516122af91905f5260205260405f2090565b555194519551918a0151925187519182526020820194909452604081019290925260608201929092526001600160a01b039182169382169291909116907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a461231a6177e8565b519687966111189688611eeb565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f5260048b905260245260445ffd5b5ffd5b905061238a9198506123818a870151670de0b6b3a764000081810390821002908361be7e565b90818552616a07565b966123b761239e60c0880151875190615659565b516123af60a0890151885190615659565b51908a61b54b565b96608085015193889a60a0870151808b116123285750908591612146565b6123ed919950823d841161149657611488818361086f565b975f6120c8565b80870161241361240982518c8901519061b641565b80865282516155e5565b9052612049565b346106bc5760206003193601126106bc57602061116360043561243c816106ab565b6001600160a01b0381165f52600b835260405f2054618eb8565b60606003198201126106bc5767ffffffffffffffff916004358381116106bc578261248391600401610c56565b926024358181116106bc5783610e7991600401611bd1565b346106bc576124ba6124ac36612456565b916124b5617793565b618219565b505050505f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b346106bc5760406003193601126106bc576001600160a01b03600435612508816106ab565b16805f525f6020526111c860243560405f2054618f8a565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc576125519036906004016114f6565b61255961780d565b602081016001600160a01b0361257181835116617e19565b612585611ccb83516001600160a01b031690565b60808301511561278e5760408301516001600160a01b0316906125b561207560608601516001600160a01b031690565b911614612766576125d0611ce482516001600160a01b031690565b916125db8382618ffd565b906125e7848383617c45565b8451600c1c6001166126eb575b845161260e9190600b1c6001166126aa575b858484618aad565b96919694909683966126258451600190600d1c1690565b612675575b50505050505161263981610ebd565b61264281610ebd565b6126695750611118815b604051938493846040919493926060820195825260208201520152565b9150611118819261264c565b85975090612694611da2611d8b61269f9894516001600160a01b031690565b94845191339261937d565b915f8080808061262a565b84516001600160a01b03166126e4606086019182516126dd611da2836001600160a01b03165f52600260205260405f2090565b91856191d2565b9052612606565b6127249061270085516001600160a01b031690565b61271e611da2826001600160a01b03165f52600260205260405f2090565b91619062565b61274161273b6119d385516001600160a01b031690565b85618052565b61274c82858361911b565b604083015261260e61275f858484617c45565b90506125f4565b7fa54b181d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f57a456b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc5760206003193601126106bc57600435806127d157005b6107a29061ad93565b346106bc5760206003193601126106bc576004356127f7816106ab565b6127ff617793565b6001600160a01b03604051917f15afd4090000000000000000000000000000000000000000000000000000000083521660048201525f60248201526020816044815f305af180156107ab57611118915f9161285e575b506114546177e8565b612877915060203d60201161149657611488818361086f565b5f612855565b9060406003198301126106bc57600435612896816106ab565b916024359067ffffffffffffffff82116106bc57610da19160040161093a565b346106bc576128c43661287d565b906128cf825161578d565b916128d8615980565b915f5b8251811015612923578061291d6129046128f760019487615659565b516001600160a01b031690565b61290e8389615659565b51906001600160a01b03169052565b016128db565b8482856001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612958616884565b93813b156106bc575f8094611ba1604051978896879586947fd396a6660000000000000000000000000000000000000000000000000000000086526004860161599e565b60031960409101126106bc576004356129b4816106ab565b90602435610da181610a96565b346106bc576001600160a01b036129d73661299c565b91165f525f60205260405f20907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8254161790555f80f35b60031960409101126106bc57600435612a27816106ab565b90602435610da1816106ab565b346106bc5760206fffffffffffffffffffffffffffffffff612a826001600160a01b03612a6036612a0f565b91165f526006845260405f20906001600160a01b03165f5260205260405f2090565b5416604051908152f35b60031960a09101126106bc5760405160a0810181811067ffffffffffffffff82111761081e57604052600435612ac181610a81565b8152602435612acf81610a81565b6020820152604435612ae0816106ab565b60408201526064356060820152608435608082015290565b346106bc57612b0636612a8c565b612b0e617793565b6080604051917f43583be50000000000000000000000000000000000000000000000000000000083528051612b4281610ebd565b60048401526020810151612b5581610ebd565b60248401526001600160a01b036040820151166044840152606081015160648401520151608482015260608160a4815f305af180156107ab575f905f925f91612ba6575b506111189061264c6177e8565b90506111189250612bcf915060603d606011612bd6575b612bc7818361086f565b810190615a2b565b9092612b99565b503d612bbd565b346106bc5760406003193601126106bc576001600160a01b03600435612c02816106ab565b165f52600d60205260243560405f20555f80f35b346106bc576020806003193601126106bc576001600160a01b03600435612c3c816106ab565b165f5260056020526040805f2090600360205260405f205491612c5e83615628565b935f5b848110612c7657604051806111188882611890565b806001915f52838352612c8c855f205460801c90565b612c968289615659565b5201612c61565b346106bc5760406003193601126106bc576107a2600435612cbd816106ab565b612cc860243561b8a2565b9061abf6565b346106bc5760406003193601126106bc576020612d2c600435612cf0816106ab565b6024357f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b6040519015158152f35b346106bc57612d4436612a8c565b612d4c61780d565b60075460021c60011661306257604090818101916001600160a01b03928381511693845f52600e60205280835f205416156130365760049450612d8d617793565b6020612da361207584516001600160a01b031690565b8451968780927f38d52e0f0000000000000000000000000000000000000000000000000000000082525afa80156107ab576080955f91613007575b5016612dfa81612df584516001600160a01b031690565b619612565b81516001600160a01b031690612e166060860192835190619668565b60016020860151612e2681610ebd565b612e2f81610ebd565b03612f9c57612e5791855191612e4483610ebd565b84516001600160a01b031691519261a353565b7feeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c08296929793979688612eb4612e9761207589516001600160a01b031690565b948951938493846040919493926060820195825260208201520152565b0390a25b8051612ec381610ebd565b612ecc81610ebd565b612f4d570151808410612f1d575051611118918391612efa9083906001600160a01b0316619668565b619668565b612f026177e8565b51938493846040919493926060820195825260208201520152565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b0151808511612f6c57509161111891612efa612ef594869586916128f7565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600485905260245260445ffd5b612fbf91855191612fac83610ebd565b84516001600160a01b0316915192619baf565b7f3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b8296929793979688612fff612e9761207589516001600160a01b031690565b0390a2612eb8565b613029915060203d60201161302f575b613021818361086f565b810190615a46565b5f612dde565b503d613017565b847f85f41299000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f0f27df09000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc576130dd6130ff6001600160a01b036130a6366106db565b94919290921693845f5260066020526130d38360405f20906001600160a01b03165f5260205260405f2090565b5460801c90617032565b925f52600660205260405f20906001600160a01b03165f5260205260405f2090565b55005b346106bc576107a2613113366106db565b9161a678565b906020610da192818152019061101f565b346106bc5760206003193601126106bc5767ffffffffffffffff6004358181116106bc57366023820112156106bc5780600401359182116106bc5736602483830101116106bc576111189160246131819201615a5b565b60405191829182613119565b6131a3610da19492606083526060830190610f2d565b926020820152604081840391015261101f565b346106bc5760206003193601126106bc5760043567ffffffffffffffff81116106bc576131e7903690600401610da4565b6131ef61780d565b6132026001600160a01b03825116617e19565b613216611ccb82516001600160a01b031690565b6132737f00000000000000000000000000000000000000000000000000000000000000005c61324c83516001600160a01b031690565b907f000000000000000000000000000000000000000000000000000000000000000061a7d7565b61328c61328782516001600160a01b031690565b617587565b6132df6020820151516132a6604085019182515190617e72565b805160c08401906132c082519160a087019283519161a7f0565b926132d08651600190600e1c1690565b613343575b5050508383616a3f565b91909492938493866132f68351600190600f1c1690565b61330c575b85611118866040519384938461318d565b6111189550613337949661332d611da2611d8b85516001600160a01b031690565b948451339061a9fc565b9050815f8080866132fb565b61336a613392948789613363611da2611d8b83516001600160a01b031690565b923361a8b7565b6133876133816119d389516001600160a01b031690565b876180f6565b51915190519161a7f0565b5f80806132d5565b346106bc5760206003193601126106bc576001600160a01b036004356133bf816106ab565b165f525f602052602060405f2054604051908152f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc60809101126106bc576040519061340c82610823565b8160243561341981610a96565b815260443561342781610a96565b602082015260643561343881610a96565b604082015260606084359161344c83610a96565b0152565b610104359064ffffffffff821682036106bc57565b346106bc576101c06003193601126106bc57600435613483816106ab565b6101a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126106bc576107a2906134ba6108bf565b906134c4366133d5565b825260a435602083015260c435604083015260e43560608301526134e6613450565b60808301526134f36109b7565b60a0830152613500610aa0565b60c083015261350d610aae565b60e083015261351a610abc565b610100830152613528610aca565b610120830152615b28565b346106bc576001600160a01b036135493661299c565b91165f525f60205260405f20907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8254169060011b1790555f80f35b346106bc5760206003193601126106bc576004357f00000000000000000000000000000000000000000000000000000000000000005d005b346106bc576040806003193601126106bc5767ffffffffffffffff6004358181116106bc576135f090369060040161093a565b906024359081116106bc5761360990369060040161093a565b613613825161578d565b925f5b835181101561369857806136326129046128f760019488615659565b61365d6136426128f78387615659565b8461364d848a615659565b5101906001600160a01b03169052565b61366d6120756128f78387615659565b61368f576136895f5b6020613682848a615659565b5101615db4565b01613616565b61368982613676565b6040517fbb4ad7d50000000000000000000000000000000000000000000000000000000081525f81806136ce8960048301611e8a565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156107ab57611118915f9161371a575b5060405191829182611e8a565b61373691503d805f833e61372e818361086f565b8101906157db565b8261370d565b9080601f830112156106bc57602090823561375681610922565b93613764604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b82821061378d575050505090565b838091833561379b81610a96565b81520191019061377f565b346106bc5760806003193601126106bc5767ffffffffffffffff6004358181116106bc576137d890369060040161093a565b90602435918183116106bc57366023840112156106bc5782600401356137fd81610922565b9361380b604051958661086f565b8185526020916024602087019160051b830101913683116106bc57602401905b82821061387f57505050506044358281116106bc5761384e90369060040161093a565b6064359283116106bc576111189361386d61387394369060040161373c565b92615dc7565b60405191829182611e8a565b838091833561388d81610a81565b81520191019061382b565b346106bc5760206003193601126106bc576107a26004356138b8816106ab565b617e19565b346106bc5760206003193601126106bc576004356138da81610a96565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd600754169060011b176007555f80f35b346106bc575f6003193601126106bc575f7f00000000000000000000000000000000000000000000000000000000000000005d005b346106bc576130dd6130ff6001600160a01b0361395c366106db565b94919290921693845f5260066020526fffffffffffffffffffffffffffffffff61399a8460405f20906001600160a01b03165f5260205260405f2090565b5416617032565b346106bc575f6003193601126106bc5760017f00000000000000000000000000000000000000000000000000000000000000005d005b346106bc5760406003193601126106bc576107a26004356139f7816106ab565b6001600160a01b0360243591613a0c836106ab565b165f526001602052600260405f2001906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60031960409101126106bc57600435613a66816106ab565b9060243590565b346106bc576107a2612cc836613a4e565b346106bc575f6003193601126106bc5760207f00000000000000000000000000000000000000000000000000000000000000005c604051908152f35b346106bc576001600160a01b03613ad03661287d565b91165f52602090600360205260405f2081519167ffffffffffffffff831161081e5768010000000000000000831161081e578154838355808410613b4f575b506020613b219101915f5260205f2090565b925f5b838110613b2d57005b60019082613b4285516001600160a01b031690565b9401938187015501613b24565b825f528360205f2091820191015b818110613b6a5750613b0f565b5f8155600101613b5d565b346106bc57613b833661287d565b90613b8c616818565b613b94615980565b90613bc86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016936158b3565b915f93613bd3616884565b93813b156106bc575f8094613c17604051978896879586947fd396a6660000000000000000000000000000000000000000000000000000000086526004860161599e565b03925af180156107ab57613c29575080f35b6107a2915061083f565b346106bc5760206003193601126106bc576001600160a01b03600435613c58816106ab565b16805f525f602052600160405f205460031c1615613c7257005b7fef029adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346106bc575f6003193601126106bc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346106bc576020613d1d6001600160a01b03613cfb36612a0f565b91165f526006835260405f20906001600160a01b03165f5260205260405f2090565b5460801c604051908152f35b346106bc5760406003193601126106bc576001600160a01b03600435613d4e816106ab565b16805f525f6020526111c860243560405f205461abb6565b346106bc57613d743661157c565b613d7f929192617793565b613d8a818484617c45565b92613d93617793565b613d9b615980565b908351613da781610ebd565b613db081610ebd565b1561413a575b6020945f868201613dc7815161ad93565b87613e1c81890194613de661207561207588516001600160a01b031690565b906040519586809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161168f565b03925af19182156107ab575f9261411b575b50613e388261ad93565b8651613e4381610ebd565b613e4c81610ebd565b6140a75790613e8b916040850151905260c0860151613e8561211e613e768b880193845190615659565b519260a08a0151905190615659565b9161b663565b9060808601519482959260a0880151908181106140795750505b6040870196838851613ebd906001600160a01b031690565b90613ec791619606565b60600197868951613ede906001600160a01b031690565b90613ee89161785e565b855183516001600160a01b031689516001600160a01b0316875191613f0d938661ae28565b9190818801976040019283528752855160608401928682855190613f3091615659565b5190613f3b91616a07565b9051613f46916155e5565b613f50918561b55f565b85019182518881845190613f6391615659565b5190613f6e916155e5565b613f78918361b55f565b83516001600160a01b03165f9081526005602052604090209180518751613f9e91615659565b51916080019182518851613fb191615659565b51613fbb91617032565b8751613fcf9085905f5260205260405f2090565b55518351613fdc91615659565b5190518351613fea91615659565b51613ff491617032565b915161400791905f5260205260405f2090565b555194519551606092830151935160408051938452602084019690965294820193909352908101929092526001600160a01b039081169381169216907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a46140716177e8565b6107a26177e8565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b506140d76140ff916140ce6060860151670de0b6b3a764000081810390821002908361be7e565b90818752616a07565b6140e760c0870151855190615659565b516140f860a0880151865190615659565b519161b54b565b906080860151948260a088015190818111614079575050613ea5565b614133919250883d8a1161149657611488818361086f565b905f613e2e565b6020850161415b614151825160608501519061b641565b80855282516155e5565b9052613db6565b346106bc5760406003193601126106bc576001600160a01b03600435614187816106ab565b16805f525f6020526111c860405f205464174876e800602435049061b692565b346106bc575f6003193601126106bc576141bf617793565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c156106bc575f905d005b346106bc5760206003193601126106bc57602061116360043561420e816106ab565b6001600160a01b0381165f52600b835260405f205461acb9565b346106bc5760806003193601126106bc5760043567ffffffffffffffff81116106bc5761425c611118913690600401610c56565b6142f560243560443561426e81610a81565b6064359061427a615478565b508261428a836060880151615659565b5261429481610ebd565b614302576002915b6142ee60c08601926142e6816142b3818751615659565b51956142d160a08b01976142c8848a51615659565b5190888b61c52a565b6142df8360808d0151615659565b5251615659565b519351615659565b519261c52a565b5060405191829182611289565b60019161429c565b346106bc5760406003193601126106bc576107a260043561432a816106ab565b6001600160a01b036024359161433f836106ab565b165f52600e60205260405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60031960809101126106bc57600435614396816106ab565b906024356143a3816106ab565b906044359060643590565b346106bc576107a26143bf3661437e565b9291909161ad4e565b346106bc576143d6366106db565b90916143e0617793565b6143e861780d565b6143fa6143f48361b8a2565b8261abf6565b6001600160a01b0381165f52600860205260405f2080549383850394851161449e579390556040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039093166024840152604480840192909252908252614479919061447460648361086f565b61c22f565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b6155aa565b346106bc5760406003193601126106bc576107a26004356144c3816106ab565b6024359061785e565b346106bc575f6003193601126106bc5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346106bc5760206003193601126106bc576107a260043561ad93565b346106bc576107a26145333661437e565b9291909161ade3565b346106bc575f6003193601126106bc576107a261780d565b346106bc5760406003193601126106bc576020611163600435614576816106ab565b60243590615f52565b346106bc575f6003193601126106bc5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346106bc5760606003193601126106bc57600480356145e0816106ab565b67ffffffffffffffff916024358381116106bc5761460290369060040161093a565b926044359081116106bc5761461b903690600401610b4f565b916001600160a01b039081165f5b85518110156107a2578061463f60019287615659565b51835f526020908682526040906146758a8861465e87865f2093615659565b51166001600160a01b03165f5260205260405f2090565b927fffffffffffffffffffff0000000000000000000000000000000000000000000060ff75ff0000000000000000000000000000000000000000008451956146bc87610ebd565b6146c587610ebd565b74ffffffffffffffffffffffffffffffffffffffff0088549587015160081b16950151151560a81b1694169116171717905501614629565b346106bc5760406003193601126106bc57602061116360043561471f816106ab565b602435906160f9565b346106bc5760a06003193601126106bc5760043567ffffffffffffffff81116106bc5761475c614782913690600401610c56565b604435614768816106ab565b60643590614775826106ab565b608435926024359061ae28565b60408051928352602083019190915290f35b346106bc576114eb6147a5366106db565b9133617a79565b346106bc576101806003193601126106bc576004356147ca816106ab565b6101607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126106bc576107a2906148016108e0565b9061480a610ad8565b8252614814610ae5565b6020830152614821610af2565b604083015261482e610aff565b606083015261483b610b0c565b6080830152614848610b19565b60a0830152614855610b26565b60c0830152614862610b33565b60e083015261486f610b41565b61010083015261487d610aa0565b61012083015261488b6106cd565b610140830152616176565b346106bc576001600160a01b036148ac36612a0f565b911690815f525f602052600160405f20541615614905576148f2906148e5925f5260036020526148ec60405f206040519485809261569a565b038461086f565b8261af4c565b9051604080519182526020820192909252f35b507f9e51bd5c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346106bc576001600160a01b036149473661299c565b91165f525f60205260405f20907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb8254169060021b1790555f80f35b346106bc5760406003193601126106bc5760206111636004356149a5816106ab565b60243590616427565b346106bc575f6003193601126106bc577f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6106bc57005b346106bc5760406003193601126106bc57600435614a03816106ab565b6001600160a01b03602435911690815f525f60205260405f2054670de0b5cad2bef0008211614a3d5764174876e8006111c892049061b692565b7f746e5940000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc57614a73366106db565b9091614a7d617793565b303b156106bc57604051927fae6393290000000000000000000000000000000000000000000000000000000084526001600160a01b03809216600485015216602483015260448201525f8160648183305af180156107ab57614afe575f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d005b614b079061083f565b5f614479565b346106bc576107a2614b1e36613a4e565b907f000000000000000000000000000000000000000000000000000000000000000061afb2565b346106bc5760406003193601126106bc576020611163600435614b67816106ab565b6024359061652f565b346106bc575f6003193601126106bc5760207f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6040519015158152f35b346106bc5760406003193601126106bc576001600160a01b03600435614bd3816106ab565b165f52600860205260243560405f20555f80f35b346106bc5760606003193601126106bc57600435614c04816106ab565b60243567ffffffffffffffff81116106bc57614c24903690600401610c56565b906001600160a01b0360443591614c3a83610a81565b614c42615478565b50165f5260209060056020526040805f20602085015151935f6040870160a08801915b878110614c7a57604051806111188b82611289565b80614c91614c8b6001938551615659565b5161b99a565b614c9c828651615659565b52805f52858552614cc4886fffffffffffffffffffffffffffffffff895f205416838d61b5ef565b01614c65565b346106bc5760806003193601126106bc57600435614ce7816106ab565b67ffffffffffffffff6024358181116106bc57614d0890369060040161093a565b6044358281116106bc57614d20903690600401610bf6565b916064359081116106bc57614d416001600160a01b03913690600401610bf6565b93614d4f83518551146156de565b614d5c83518651146156de565b1691825f52602091600560205260409160405f20915f5b8151811015614da75780614d97614d8c60019386615659565b51611a11838c615659565b815f52858852865f205501614d73565b6107a282885f52600360205260405f20615eb7565b346106bc576040806003193601126106bc57600435614dda816106ab565b6024359067ffffffffffffffff82116106bc57366023830112156106bc57816004013591614e0783610922565b92614e15604051948561086f565b8084526020906024602086019160071b840101923684116106bc57602401905b838210614e46576107a286866165a7565b6080823603126106bc57826080918851614e5f81610823565b8435614e6a816106ab565b815282850135614e7981610a81565b8382015289850135614e8a816106ab565b8a82015260608086013590614e9e82610a96565b820152815201910190614e35565b346106bc57611118614eda614ec036611264565b90614ec9615478565b50614ed2617793565b6112c0615478565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604051918291602083526020830190610f60565b346106bc5760406003193601126106bc576001600160a01b03600435614f36816106ab565b165f525f60205260243560405f20555f80f35b346106bc57614f573661299c565b907f00000000000000000000000000000000000000000000000000000000000000005c5f527f000000000000000000000000000000000000000000000000000000000000000060205260405f20905f5260205260405f205d005b346106bc5760206003193601126106bc57614fe2600435614fd1816106ab565b614fd9615980565b506107d0616818565b606060075460405190614ff482610802565b600181161515918281526001604060208301928285811c1615158452019260021c161515825260405192835251151560208301525115156040820152f35b346106bc576060806003193601126106bc5767ffffffffffffffff906004358281116106bc5761506690369060040161093a565b906024358381116106bc5761507f90369060040161093a565b926044359081116106bc5761509890369060040161373c565b6150a2835161578d565b935f5b845181101561514557806150cb6150c16128f760019489615659565b61290e838a615659565b6150e76150db6128f78386615659565b604061364d848b615659565b6150f76120756128f78386615659565b61513c5761510c5f5b6020613682848b615659565b61513661512261511c8387615659565b51151590565b8661512d848b615659565b51019015159052565b016150a5565b61510c82615100565b6040517fbb4ad7d50000000000000000000000000000000000000000000000000000000081525f81806136ce8a60048301611e8a565b346106bc5760206003193601126106bc576001600160a01b036004356151a0816106ab565b165f52600b602052602060405f2054604051908152f35b346106bc5760406003193601126106bc5760043567ffffffffffffffff81116106bc576111636151ed602092369060040161093a565b602435906151fa826106ab565b61af4c565b346106bc576124ba61521036610e34565b91615219617793565b616a3f565b346106bc5761529a6152ad6111186110d56152bb61523b36612456565b61524796919296615478565b506040519261527d602085018561525e84836166a9565b0395615272601f199788810183528261086f565b51902092828a618219565b989294919390966110cc60405191826110c06020820195866166a9565b9160208901528782036040890152610f2d565b908582036060870152610f2d565b90838203608085015261101f565b346106bc5760606003193601126106bc576004356152e6816106ab565b6001600160a01b03602435916152fb836106ab565b165f52600c6020526130ff6044359160405f20906001600160a01b03165f5260205260405f2090565b908160209103126106bc5751610da181610a96565b6040513d5f823e3d90fd5b90929192615350616818565b6001600160a01b03615384817f000000000000000000000000000000000000000000000000000000000000000016926158b3565b9261538d616884565b90833b156106bc576153ef9661545a5f9793615422899563ffffffff6040519c8d9b8c9a8b997f0e0677ab000000000000000000000000000000000000000000000000000000008b521660048a015261016060248a0152610164890190611e1b565b9516604487015280516001600160a01b0390811660648801526020820151811660848801526040909101511660a4860152565b60c484018590528051151560e48501526020810151151561010485015260408101511515610124850152606001511515610144840152565b03925af180156107ab5761546b5750565b80611bbe6106cb9261083f565b6040519061548582610853565b815f815260c060609182602082015282604082015282808201528260808201528260a08201520152565b60051115610ec757565b906005821015610ec75752565b90610da191602081526001600160a01b03808351166020830152602083015116604082015260a0615506604084015160c0606085015260e0840190610f2d565b92606081015160808401526155226080820151838501906154b9565b01519060c0601f198285030191015261101f565b1561553d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e70757420706172616d65746572732068617665206368616e6765640000006044820152fd5b908160209103126106bc575190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b905f19820191821161449e57565b9190820391821161449e57565b604051906155ff82610853565b606060c0835f81525f60208201528260408201525f838201525f60808201525f60a08201520152565b9061563282610922565b61563f604051918261086f565b828152601f1961564f8294610922565b0190602036910137565b805182101561566d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9081548082526020809201925f5260205f20915f905b8282106156be575050505090565b83546001600160a01b0316855293840193600193840193909101906156b0565b156156e557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5661756c744d6f636b3a20544f4b454e535f4c454e4754485f4d49534d41544360448201527f48000000000000000000000000000000000000000000000000000000000000006064820152fd5b6040519061577682610823565b5f6060838281528260208201528260408201520152565b9061579782610922565b6157a4604051918261086f565b828152601f196157b48294610922565b01905f5b8281106157c457505050565b6020906157cf615769565b828285010152016157b8565b9060209182818303126106bc5780519067ffffffffffffffff82116106bc570181601f820112156106bc5780519261581284610922565b93604093615823604051968761086f565b818652828087019260071b850101938185116106bc578301915b84831061584d5750505050505090565b6080838303126106bc5783608091875161586681610823565b8551615871816106ab565b81528286015161588081610a81565b8382015288860151615891816106ab565b89820152606080870151906158a582610a96565b82015281520192019161583d565b6158bd815161578d565b905f5b81518110156158f357806158ed6001600160a01b036158e160019486615659565b511661290e8387615659565b016158c0565b50505f61592d91604051809381927fbb4ad7d500000000000000000000000000000000000000000000000000000000835260048301611e8a565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156107ab575f9161596c575090565b610da191503d805f833e61372e818361086f565b6040519061598d82610802565b5f6040838281528260208201520152565b6159f86159cb6106cb9597969460c0946001600160a01b0361014091168552806020860152840190611e1b565b966040830190604090816001600160a01b0391828151168552826020820151166020860152015116910152565b5f60a082015201906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b908160609103126106bc578051916040602083015192015190565b908160209103126106bc5751610da1816106ab565b919091615a9d615a977f000000000000000000000000000000000000000000000000000000000000000092835c159586615b1f575b3691610d50565b3361c08d565b92615aa55750565b7f00000000000000000000000000000000000000000000000000000000000000005c615af7575f905d6106cb7f000000000000000000000000000000000000000000000000000000000000000061a7c6565b7f20f1d86d000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001855d615a90565b906117d9816060615d81615d4f615d1d615ceb615ca3615c5f615c55615c4a615c3f615c0c615db19d8f610120615bd9615ba7615b78615be1946001600160a01b03165f525f60205260405f2090565b5460c08601511515907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe161790565b60e085015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9060011b91161790565b920151151590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff79060031b91161790565b6101008c015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb9060021b91161790565b60208b015190618f8a565b60408a01519061aba5565b878901519061abb6565b6080880151605a1b7003fffffffffc0000000000000000000000167ffffffffffffffffffffffffffffffffc0000000003ffffffffffffffffffffff919091161790565b60a087015160821b7403fffffffc00000000000000000000000000000000167ffffffffffffffffffffffffc00000003ffffffffffffffffffffffffffffffff919091161790565b945194855115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef9060041b91161790565b602085015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf9060051b91161790565b604084015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf9060061b91161790565b91015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f9060071b91161790565b55565b61161e82610ebd565b51610da181610ebd565b9190939293615dd6835161578d565b925f5b8151811015615e485780615df56129046128f760019486615659565b615e0a613676615e058387615659565b615dbd565b615e26615e1a6128f78388615659565b604061364d848a615659565b615e42615e3661511c838b615659565b606061512d848a615659565b01615dd9565b5050505061592d9192505f90604051809381927fbb4ad7d500000000000000000000000000000000000000000000000000000000835260048301611e8a565b90670de0b6b3a76400009182810292818404149015171561449e57565b8181029291811591840414171561449e57565b81519167ffffffffffffffff831161081e5768010000000000000000831161081e578154838355808410615f2c575b50615ef96020809201925f5260205f2090565b905f5b848110615f0a575050505050565b60019082615f1f86516001600160a01b031690565b9501948185015501615efc565b825f528360205f2091820191015b818110615f475750615ee6565b5f8155600101615f3a565b9080158015615fdd575b615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57615fb2945f91615fb8575b50166196e2565b50905090565b615fd1915060203d60201161302f57613021818361086f565b5f615fab565b50505f90565b506160246020615fec836155d7565b604051809381927fef8b30f7000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa9081156107ab575f91616047575b5015615f5c565b616060915060203d60201161149657611488818361086f565b5f616040565b9080519061607382610ebd565b61607c82610ebd565b82546020820151604092909201517fffffffffffffffffffff0000000000000000000000000000000000000000000090911660ff939093169290921760089190911b74ffffffffffffffffffffffffffffffffffffffff00161790151560a81b75ff00000000000000000000000000000000000000000016179055565b908015615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57616152945f91616157575b5016619f91565b505090565b616170915060203d60201161302f57613021818361086f565b5f61614b565b6163f46163dc6120756101406106cb956163b361638061634d61631b6162e96162b76162856162536162216161ef8f6161bf906001600160a01b03165f525f60205260405f2090565b548b5115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff9060091b91161790565b60208b015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff9060081b91161790565b60408a015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff90600a1b91161790565b606089015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff90600b1b91161790565b608088015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefff90600c1b91161790565b60a087015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff90600d1b91161790565b60c086015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfff90600e1b91161790565b60e085015115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff90600f1b91161790565b61010084015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff9060101b91161790565b61012083015115157ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff9060111b91161790565b6163cd876001600160a01b03165f525f60205260405f2090565b5501516001600160a01b031690565b916001600160a01b03165f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90801580156164a6575b615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57615fb2945f91616487575b501661a199565b6164a0915060203d60201161302f57613021818361086f565b5f616480565b506164ed60206164b5836155d7565b604051809381927f4cdad506000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa9081156107ab575f91616510575b5015616431565b616529915060203d60201161149657611488818361086f565b5f616509565b908015615fd7576040517f38d52e0f000000000000000000000000000000000000000000000000000000008152916001600160a01b036020846004818585165afa80156107ab57616152945f91616588575b501661994c565b6165a1915060203d60201161302f57613021818361086f565b5f616581565b91905f5b815181101561668c576001906166866020616633816165ca8588615659565b510151916165d783610ebd565b604061662a6001600160a01b03826165ef898c615659565b5101511660606165ff898c615659565b51015115159361661a84519761661489610802565b88615db4565b8601906001600160a01b03169052565b83019015159052565b616681616651886001600160a01b03165f52600460205260405f2090565b61666c61665e8689615659565b51516001600160a01b031690565b6001600160a01b03165f5260205260405f2090565b616066565b016165ab565b50509050565b60041115610ec757565b906004821015610ec75752565b90610da191602081526001600160a01b0380835116602083015260208301511660408201526040820151606082015260a06166f3606084015160c0608085015260e0840190610f2d565b9261552260808201518385019061669c565b7ff2238896000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461670557365f80375f8036816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af43d5f803e15616773573d5ff35b3d5ffd5b6001600160a01b0316805f525f60205260405f205460018160021c169063ffffffff80916167a3608290565b1c16826167df575b50506167b45750565b7fd971f597000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908092507f0000000000000000000000000000000000000000000000000000000000000000160181811161449e57164211155f806167ab565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642111580616876575b61684e57565b7fda9f8b34000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600754811c16616848565b61688c615769565b50616895615769565b600160208201526001604082015290565b9080601f830112156106bc578151906020916168c181610922565b936168cf604051958661086f565b81855260208086019260051b8201019283116106bc57602001905b8282106168f8575050505090565b815181529083019083016168ea565b81601f820112156106bc5780519061691e82610d34565b9261692c604051948561086f565b828452602083830101116106bc57815f9260208093018386015e8301015290565b916080838303126106bc5782519067ffffffffffffffff918281116106bc57836169789186016168a6565b9360208101519360408201518481116106bc57816169979184016168a6565b9360608301519081116106bc57610da19201616907565b936169d86169eb936001600160a01b03610da198969416875260a0602088015260a0870190610f2d565b9160408601528482036060860152610f2d565b91608081840391015261101f565b906001820180921161449e57565b9190820180921161449e57565b91616a3190610da194928452606060208501526060840190610f2d565b916040818403910152610f2d565b9190616a49617793565b6060616a53615980565b9160208501616a66815151808652615628565b60808301958651616a76816154af565b616a7f816154af565b616d5f57506060830151616a938651615628565b94616acf8260808b0151616ac9616ab189516001600160a01b031690565b6001600160a01b03165f52601160205260405f205490565b9061b504565b995b6060860151808410616d2f5750616aea839998996195f5565b60208901975f5b8c8b51821015616c4a5781616b0591615659565b51616b0f816195f5565b616b198288615659565b51616c3957616b40908d6140f88460a0616b378260c0860151615659565b51930151615659565b80616b4b8389615659565b525b616b5b6128f7838a51615659565b60408a01616b6a848251615659565b518311616bed57508d83616be18e616bd98f968f97616bc486616bbc818b60019e9d616b9988616be79f619606565b616bb5616ba68489615659565b5191516001600160a01b031690565b908d61ae28565b875292615659565b52616bd3856060880151615659565b51616a07565b9051906155e5565b9161b55f565b01616af1565b91616bfc846123589451615659565b517f8eda85e4000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b50616c448187615659565b51616b4d565b5050939694509650965096616c6f90616c6a85516001600160a01b031690565b617096565b7fa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871616ca184516001600160a01b031690565b92616cc2896020870195616cbc87516001600160a01b031690565b9061a678565b616cf6616ab1616cea616cdc88516001600160a01b031690565b96516001600160a01b031690565b9451966128f7886154af565b92616d1e6001600160a01b0392616d0c886154af565b88846040519586951698169684616a14565b0390a4616d296177e8565b93929190565b7f8d261d5d000000000000000000000000000000000000000000000000000000005f52600484905260245260445ffd5b60038751616d6c816154af565b616d75816154af565b03616d9757616d84885161b4cf565b616d8e8151615628565b945f9199616ad1565b9760018751616da5816154af565b616dae816154af565b03616e1657616dbd885161affd565b616e0e89616dcf84604088015161b230565b60808a015190616de9616ab188516001600160a01b031690565b616df38c5161b0c0565b91616e086120758a516001600160a01b031690565b9361b27f565b959091616ad1565b979360028751616e25816154af565b616e2e816154af565b03616eaf57978798616e40895161affd565b606085015191616e4f8761b031565b616ea9616e9f60408b0192808452898b9f88608082015193616e99612075616e8b616e84616ab188516001600160a01b031690565b955161b0c0565b95516001600160a01b031690565b9461b105565b9092519099615659565b52616ad1565b5060048651616ebd816154af565b616ec6816154af565b03616f8757616ed5875161afc8565b5f616eed61207561207586516001600160a01b031690565b60608501519060808a0151918360a088015198616f3a6040519a8b96879586947fe4c4366300000000000000000000000000000000000000000000000000000000865233600487016169ae565b03925af19384156107ab575f905f955f915f91616f5c575b5090959199616ad1565b92505050616f7d9194503d805f833e616f75818361086f565b81019061694d565b919592915f616f52565b7f6c02b395000000000000000000000000000000000000000000000000000000005f5260045ffd5b9093925f94616fc2846080850151615659565b51818111616fd2575b5050505050565b616fff95965091616fe791616ff8930361b641565b9260a0616b378260c0860151615659565b519161b663565b905f80808080616fcb565b7fb4120f14000000000000000000000000000000000000000000000000000000005f5260045ffd5b906fffffffffffffffffffffffffffffffff80831190811561708c575b506170645760801b90810180911161449e5790565b7f89560ca1000000000000000000000000000000000000000000000000000000005f5260045ffd5b905081115f61704f565b6001600160a01b0390929192165f52602060056020526040805f205f5b606086015180518210156170f057906170e06170d182600194615659565b51611a118360808b0151615659565b815f52838652845f2055016170b3565b50505050509050565b91617102617793565b6001600160a01b0382165f526005602052604090815f20915f602052805f2054916004602052815f206003602052825f20948554948852617146602089019661b6f3565b86526171518561b70e565b9380890194855261716186615628565b9260608a0193845261717287615628565b60808b0152617182878b5161c356565b60c08b015261719087615628565b60a08b019081528a5191600199600184811c169384617347575b5083617335575b5f5b8d8b82106172125750505050505050505050505050806172026171ea617209936001600160a01b03165f52600560205260405f2090565b916001600160a01b03165f52600660205260405f2090565b908361b79b565b906106cb6177e8565b908a8a8e938a61725d856172498161723b6172368d61666c6128f78f869051615659565b61b75c565b94905f5260205260405f2090565b549551836172578383615659565b52615659565b506172678161b99a565b617272868b51615659565b52617291836fffffffffffffffffffffffffffffffff8616878561b5ef565b891561732c57856172a48c830151151590565b918261730e575b50506172bc575b5050505b016171b3565b836172e28d826172d7816172d0875161c3b2565b9351615659565b519660801c85616faf565b93846172f0575b50506172b2565b617303946172fd916155e5565b9161b5ef565b5f8f8b9083836172e9565b9091505161731b81610ebd565b61732481610ebd565b14855f6172ab565b505050506172b6565b8c5190935060031c60011615926171b1565b61735291945061c3b2565b1515925f6171aa565b617363615478565b9061736c617793565b6001600160a01b0381165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f209384549387526173af602088019561b6f3565b85526173ba8461b70e565b918188019283526173ca85615628565b91606089019283526173db86615628565b9460809560808b01526173ef878b5161c356565b60c08b01526173fd87615628565b60a08b019081528a5191600199600184811c169384617573575b5083617561575b5f5b8d8b821061745f5750505050505050505050505050806172026171ea617457936001600160a01b03165f52600560205260405f2090565b610da16177e8565b908a8d92828c8c8c617493846174858161723b6172368f8f6128f78561666c9251615659565b549451836172578383615659565b5061749d8161b99a565b6174a8858d51615659565b526174c66fffffffffffffffffffffffffffffffff8416858761b55f565b878d8d156175545782015115159182617536575b50506174ed575b50505050505b01617420565b826175109261750782617500885161c3b2565b9451615659565b51961c85616faf565b9283617520575b8e93508c6174e1565b61752d93616be1916155e5565b5f8f8282617517565b9091505161754381610ebd565b61754c81610ebd565b14875f6174da565b50505050505050506174e7565b8c5190935060031c600116159261741e565b61757e91945061c3b2565b1515925f617417565b61758f615478565b90617598617793565b6001600160a01b0381165f5260056020526040805f205f602052815f2054906004602052825f20906003602052835f209384549387526175db602088019561b6f3565b85526175e68461b70e565b918188019283526175f685615628565b916060890192835261760786615628565b9460809560808b015261761b878b5161c356565b60c08b015261762987615628565b60a08b019081528a5191600199600184811c16938461777f575b508361776d575b5f5b8d8b82106176835750505050505050505050505050806172026171ea617457936001600160a01b03165f52600560205260405f2090565b908a8d92828c8c8c6176a9846174858161723b6172368f8f6128f78561666c9251615659565b506176b38161b99a565b6176be858d51615659565b526176dc6fffffffffffffffffffffffffffffffff8416858761b5ac565b878d8d156177605782015115159182617742575b5050617703575b50505050505b0161764c565b826177169261750782617500885161c3b2565b9283617726575b8e93508c6176f7565b61773993617733916155e5565b9161b5ac565b5f8f828261771d565b9091505161774f81610ebd565b61775881610ebd565b14875f6176f0565b50505050505050506176fd565b8c5190935060031c600116159261764a565b61778a91945061c3b2565b1515925f617643565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805c6177c0576001905d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b7f00000000000000000000000000000000000000000000000000000000000000005c1561783657565b7fc09ba736000000000000000000000000000000000000000000000000000000005f5260045ffd5b906178689061b8a2565b907f8000000000000000000000000000000000000000000000000000000000000000821461449e576106cb915f039061abf6565b929190916178ab82848661b8f7565b5f1981036178ba575050505050565b808211617a3e5703906001600160a01b0392838116938415617a09578083169586156179d4578461791a8561790486617904866001600160a01b03165f52601060205260405f2090565b906001600160a01b03165f5260205260405f2090565b551692833b156106bc576040517f5687f2b80000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152919092166024820152604481018290527fa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61916179b4915f8180606481015b038183895af16179c1575b506040519081529081906020820190565b0390a45f80808080616fcb565b80611bbe6179ce9261083f565b5f6179a3565b7f94280d62000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f526001600160a01b03821660045260245ffd5b6001600160a01b03837ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b929091926001600160a01b0390818416918215617c1057808616918215617bdb57617ab986617904836001600160a01b03165f52600f60205260405f2090565b54808611617b9e57859003617ae387617904846001600160a01b03165f52600f60205260405f2090565b55617b0387617904836001600160a01b03165f52600f60205260405f2090565b8581540190551691827fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f60405180617b4088829190602083019252565b0390a4803b156106bc576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015293909216602484015260448301525f9082908183816064810161545a565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038716600452602452604485905260645ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03871660045260245ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f526001600160a01b03851660045260245ffd5b919091617c506155f2565b50805192617c5d84610ebd565b6080604082015193015160c0602083519301519301519360405195617c8187610853565b617c8a81610ebd565b865260208601526040850152606084015260808301523360a083015260c082015290565b90916001600160a01b03808416928315617c1057617ce185617904836001600160a01b03165f52600f60205260405f2090565b54808411617ddc57839003617d0b86617904846001600160a01b03165f52600f60205260405f2090565b55617d3183617d2b836001600160a01b03165f52601160205260405f2090565b546155e5565b617d3a8161b943565b617d55826001600160a01b03165f52601160205260405f2090565b551690813b156106bc576040517f23de66510000000000000000000000000000000000000000000000000000000081526001600160a01b0390941660048501525f6024850181905260448501829052937fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f91617dd79186818060648101617998565b0390a4565b7fe450d38c000000000000000000000000000000000000000000000000000000005f526001600160a01b038616600452602452604483905260645ffd5b6001600160a01b0316805f525f602052600160405f2054811c1615617e3b5750565b7f4bdace13000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6106cb906107d0616818565b03617e7957565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190825191617eb482518251908561b97b565b617ebd83615628565b935f5b848110617ecf57505050505090565b80617f04617edf60019385615659565b51617eff617eed8489615659565b51617ef88589615659565b5192615ea4565b61b641565b617f0e8289615659565b5201617ec0565b959293617f46617f6a95610da1999793617f5c956001600160a01b038092168b521660208a0152604089019061669c565b606087015260e0608087015260e0860190610f2d565b9084820360a0860152610f2d565b9160c081840391015261101f565b5f6001600160a01b036020959693617ff0617f9a87516001600160a01b031690565b94608088015197617faa89616692565b60a0608060408301519c0151910151916040519b8c9a8b998a977fba5f9f4000000000000000000000000000000000000000000000000000000000895260048901617f15565b0393165af19081156107ab575f91618033575b501561800b57565b7f2aaf8866000000000000000000000000000000000000000000000000000000005f5260045ffd5b61804c915060203d6020116107a45761079a818361086f565b5f618003565b60208082015151925f5b84811061806a575050505050565b6001906180e160406fffffffffffffffffffffffffffffffff618093614c8b85848b0151615659565b9160a08901926180a4868551615659565b52845f528688525f20541690816180bf8560608b0151615659565b526180da846180d28160c08c0151615659565b519251615659565b519161c505565b6180ef826080880151615659565b520161805c565b60208082015151925f5b84811061810e575050505050565b60019061817d60406fffffffffffffffffffffffffffffffff618137614c8b85848b0151615659565b9160a0890192618148868551615659565b52845f528688525f20541690816181638560608b0151615659565b52618176846180d28160c08c0151615659565b519161c51c565b61818b826080880151615659565b5201618100565b6080818303126106bc5780519260208201519167ffffffffffffffff928381116106bc57846181c29183016168a6565b9360408201518481116106bc57816169979184016168a6565b9390610da195936169eb936001600160a01b0361820b93168752602087015260a0604087015260a0860190610f2d565b908482036060860152610f2d565b92618222617793565b60609161822d615980565b926020860190618241825151808752615628565b906080840196875161825281616692565b61825b81616692565b61861957506040840151906182708751615628565b956182948360808c015161828e616ab18a516001600160a01b031690565b9061bd54565b926183057f00000000000000000000000000000000000000000000000000000000000000005c6182cb89516001600160a01b031690565b907f0000000000000000000000000000000000000000000000000000000000000000905f5260205260405f20905f5260205260405f205c90565b61859c575b604087015180821161856b5750618323819a999a6195f5565b60208a01985f5b8b5181101561844a578c61833e8288615659565b51618348816195f5565b618352838a615659565b516184385781616ff88460a0616b378260c061836f980151615659565b8061837a838a615659565b525b61838a6128f7838b51615659565b60608b01618399848251615659565b5183106183ec57508e83616be18f8f8f966183e0916183c886616bbc818b60019e9d616b99886183e69f61785e565b526183d7856060880151615659565b51925190616a07565b906155e5565b0161832a565b916183fb846123589451615659565b517f2f785e46000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b50506184448188615659565b5161837c565b5093995095945095929861846b919750616c6a85516001600160a01b031690565b7ffbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a561849d84516001600160a01b031690565b926184bf8660208701956184b887516001600160a01b031690565b339161789c565b6184c761bda5565b618540575b6184f2866184e187516001600160a01b031690565b86516001600160a01b031690617cae565b618518616ab161850c616cdc88516001600160a01b031690565b9451966128f788616692565b92616d1e6001600160a01b039261852e88616692565b8c846040519586951698169684616a14565b6185668661855587516001600160a01b031690565b86516001600160a01b03169061bdba565b6184cc565b7f31d38e0b000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b9894916185af8b97949995929b5161b0c0565b9a5f5b865181101561860957808b6186028f936185fc6185eb8f83906185e16001996185db848a615659565b5161b641565b6172578383615659565b516185f68386615659565b516155e5565b92615659565b52016185b2565b5091949893969a5091949861830a565b94906001885161862881616692565b61863181616692565b036186a057618640895161affd565b60408501519186928a61869a6186908b8a6040618660606083015161b031565b9201948286528660808201519361868a612075616e8b616e84616ab188516001600160a01b031690565b9461bca7565b909251909a615659565b5261830a565b600288969296516186b081616692565b6186b981616692565b0361874c576186c8895161affd565b6187458260608701906186ec6186de835161b031565b60408c019381855251615659565b516186f8835188615659565b528b61870b608082015193518093615659565b5161872a618723616ab18c516001600160a01b031690565b925161b0c0565b9261873f6120758c516001600160a01b031690565b9461ba9f565b969061830a565b50936003875161875b81616692565b61876481616692565b0361882557618773885161ba6a565b5f61878b61207561207587516001600160a01b031690565b9560408601519660808b0151918360a0890151996187d96040519b8c96879586947fab68e28c00000000000000000000000000000000000000000000000000000000865233600487016181db565b03925af19485156107ab575f915f965f925f916187fa575b5091969261830a565b925050955061881b91503d805f833e618813818361086f565b810190618192565b919690915f6187f1565b7f137a9a39000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190916040818403126106bc57805161886581610a96565b92602082015167ffffffffffffffff81116106bc57610da192016168a6565b969394610da19896926188ed966188be6188df966188d195610100948d6001600160a01b0380931690521660208d015260408c019061669c565b60608a01528060808a0152880190610f2d565b9086820360a0880152610f2d565b9084820360c0860152610f2d565b9160e081840391015261101f565b949395929691908451618914906001600160a01b031690565b9060808601519261892484616692565b60808601518a60a0890151926040519b8c9788977f2754888d000000000000000000000000000000000000000000000000000000008952600489019761896998618884565b03916001600160a01b031691815a5f948591f19384156107ab575f905f95618a86575b50158015618a7a575b618a52576001809360091c16156189b35792935090915f835b6189ba575b5050505090565b8451811015618a4d576189cd8186615659565b5160608401906189de838351615659565b51116189ed57508301836189ae565b618a10826180d281618a0a6128f78b9760206123589a0151615659565b95615659565b517ffbd8a724000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b6189b3565b7f1d3391d8000000000000000000000000000000000000000000000000000000005f5260045ffd5b50835185511415618995565b9050618aa59194503d805f833e618a9d818361086f565b81019061884d565b93905f61898c565b5f9491939293618abb617793565b618ac3615980565b918051618acf81610ebd565b618ad881610ebd565b15618e55575b602091828601618aee815161ad93565b83618b4381850198618b0d6120756120758c516001600160a01b031690565b906040519c8d809481937f72c981860000000000000000000000000000000000000000000000000000000083526004830161168f565b03925af19889156107ab575f99618e36575b5088618b608161ad93565b8351618b6b81610ebd565b618b7481610ebd565b618dc6575060408201519052618bac60c088015161212461211e618b9d87860193845190615659565b519260a08c0151905190615659565b9360808301519685979860a0850151808810618d9657505b60408501948a8651618bdc906001600160a01b031690565b90618be691619606565b60600195898751618bfd906001600160a01b031690565b90618c079161785e565b835183516001600160a01b031687516001600160a01b0316875191618c2c938661ae28565b9190818601956040019283528552855160608401928d82855190618c4f91615659565b5190618c5a91616a07565b9051618c65916155e5565b618c6f918561b55f565b85019182518b81845190618c8291615659565b5190618c8d916155e5565b618c97918361b55f565b83516001600160a01b03165f9081526005602052604090209180518751618cbd91615659565b51916080019182518851618cd091615659565b51618cda91617032565b8751618cee9085905f5260205260405f2090565b55518351618cfb91615659565b5190518351618d0991615659565b51618d1391617032565b9151618d2691905f5260205260405f2090565b5551925193516060928301519151604080518b8152602081018b905290810193909352928201929092526001600160a01b039182169382169291909116907f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db90608090a4939291906106cb6177e8565b7fe2ea151b000000000000000000000000000000000000000000000000000000005f52600488905260245260445ffd5b9050819850618ded6060618df6930151670de0b6b3a764000081810390821002908361be7e565b90818652616a07565b96618e1b618e0a60c0890151835190615659565b516123af60a08a0151845190615659565b93608083015196859860a0850151808811618d965750618bc4565b618e4e919950843d861161149657611488818361086f565b975f618b55565b60208501618e6c612409825160608601519061b641565b9052618ade565b81810392915f13801582851316918412161761449e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b90618ed46fffffffffffffffffffffffffffffffff831661b8a2565b905f9260801c80618ef2575b5050600291618eee91618e73565b0590565b6001600160a01b03935090602460209260405195869384927fb3d7f6b90000000000000000000000000000000000000000000000000000000084526004840152165afa9081156107ab57618f53618eee926002945f91618f5c575b5061b8a2565b92819250618ee0565b618f75915060203d60201161149657611488818361086f565b5f618f4d565b8115618f85570490565b618e8b565b90670de0b5cad2bef0008111614a3d5764174876e80090048060181c618fd5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000003ffff9060121b91161790565b7fe4337c05000000000000000000000000000000000000000000000000000000005f5260045ffd5b8161905061905b92949394619010615769565b958691619046602083018051906190366001600160a01b0392836040870151169061af4c565b865251906060840151169061af4c565b602084015261911b565b60408501525161b0c0565b6060830152565b602091926190b25f6001600160a01b038094604051978896879586937f5211fa77000000000000000000000000000000000000000000000000000000008552604060048601526044850190611621565b911660248301520393165af19081156107ab575f916190fc575b50156190d457565b7fe91e17e7000000000000000000000000000000000000000000000000000000005f5260045ffd5b619115915060203d6020116107a45761079a818361086f565b5f6190cc565b919091805161912981610ebd565b61913281610ebd565b619177579061916e670de0b6b3a764000093617ef860806191739501519360a061916260c0850151835190615659565b51930151905190615659565b615ea4565b0490565b610da1926191ad61211e6080617eff9401519460a06191a1602060c0870151930192835190615659565b51940151905190615659565b92615ea4565b91908260409103126106bc57602082516191cc81610a96565b92015190565b9092619223604093946001600160a01b039384918651978896879586947fa0e8f5ac000000000000000000000000000000000000000000000000000000008652606060048701526064860190611621565b9216602484015260448301520392165afa9081156107ab575f905f92619284575b501561925c57670de0b5cad2bef0008111614a3d5790565b7f53f976d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506192a8915060403d6040116192af575b6192a0818361086f565b8101906191b3565b905f619244565b503d619296565b6101a0610da192602083526192cf602084018251611614565b60208101516001600160a01b0316604084015260408101516001600160a01b0316606084015260608101516080840152608081015160a084015260a081015160c084015260c081015160e084015260e08101516101009081850152810151610120908185015281015161935061014091828601906001600160a01b03169052565b8101519061936c61016092838601906001600160a01b03169052565b01519161018080820152019061101f565b939590919492865161938e81610ebd565b61939781610ebd565b6195e65786604085015191845b8251946193b086610ebd565b6040978897888601516193c9906001600160a01b031690565b9660608701516193df906001600160a01b031690565b9360800192835181516193f191615659565b519351906020015161940291615659565b51936020880151619419906001600160a01b031690565b9760c0015198619427610901565b9a619432908c615db4565b6001600160a01b031660208b01526001600160a01b0316898b01526060890152608088015260a087015260c086015260e085015261010084018890526001600160a01b03166101208401526001600160a01b0316610140830152610160820152815196878080937f18b6eb5500000000000000000000000000000000000000000000000000000000825260048201906194ca916192b6565b03916001600160a01b03165a905f91f19485156107ab575f915f966195c2575b50501561959a5760091c600116156195945750805161950881610ebd565b61951181610ebd565b1580619587575b801561955c575b619527575090565b60a001517fcc0e4a99000000000000000000000000000000000000000000000000000000005f5260049190915260245260445ffd5b506001815161956a81610ebd565b61957381610ebd565b14801561951f575060a0810151821161951f565b5060a08101518210619518565b91505090565b7f15a29dec000000000000000000000000000000000000000000000000000000005f5260045ffd5b6195dd93965080919250903d106192af576192a0818361086f565b93905f806194ea565b866040850151918492946193a4565b806195fd5750565b6106cb9061ad93565b612cc86106cb9261b8a2565b6001600160a01b0380911690815f52600e6020528060405f205416921680920361963a575050565b7f36b18d09000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b907f0000000000000000000000000000000000000000000000000000000000000000116196925750565b6001600160a01b03907f18fe7385000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9190915f838201938412911290801582169115161761449e57565b92619737936001600160a01b038316926196fb856155d7565b604051907fef8b30f700000000000000000000000000000000000000000000000000000000825281806020998a93600483019190602083019252565b0381885afa80156107ab57619753915f9161992f575b506155d7565b948096619771836001600160a01b03165f52600b60205260405f2090565b549161977b61bda5565b61992557509181889388959360801c90868210155f146197f5575050926197ea96926197f0926197d0866197cb856fffffffffffffffffffffffffffffffff8b6106cb9c9b60801c039316616a07565b617032565b9889916001600160a01b03165f52600b60205260405f2090565b55619606565b61785e565b919294509692945061982061981b61980d8685618eb8565b6198168c61b8a2565b6196c7565b61bec2565b9461982c86858361c00f565b6040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018790523060248201529482866044815f895af180156107ab576197ea996198da8c6198cf8f976197d0956106cb9d8a6197f09c869f8f95908d915f966198e0575b50506198cf92916198c9868689856198c46198d49b9c6fffffffffffffffffffffffffffffffff9861bef7565b61ad4e565b16616a07565b6155e5565b94616a07565b90617032565b6198d496506fffffffffffffffffffffffffffffffff92866199176198cf979694846198c995903d1061149657611488818361086f565b985050925081939450619897565b9750909450505050565b6199469150883d8a1161149657611488818361086f565b5f61974d565b926199a392936001600160a01b03831692619966866169f9565b6040517fb3d7f6b9000000000000000000000000000000000000000000000000000000009182825281806020998a93600483019190602083019252565b0381895afa80156107ab576199bf915f91619b92575b506169f9565b90879682986199df856001600160a01b03165f52600b60205260405f2090565b54936199e961bda5565b619b85575050918893918895938260801c91878310155f14619a3c57505050926197ea96926197f0926197d0866197cb856fffffffffffffffffffffffffffffffff8b6106cb9c9b60801c039316616a07565b9295509295509692619a6261981b619a54888861acb9565b619a5d8c61b8a2565b618e73565b60405192835260048301819052918381602481885afa80156107ab57619a91915f91619b68575b50858361c00f565b6040517f94bf804d000000000000000000000000000000000000000000000000000000008152600481018390523060248201529583876044815f895af19586156107ab576197ea996198da8c6198cf8f976198d48b849d6106cb9f6197d099856197f09f8f938f915f96619b29575b50506fffffffffffffffffffffffffffffffff92918587836198c46198cf999a6198c99661bef7565b6198cf965091619b5c6fffffffffffffffffffffffffffffffff959492846198c995903d1061149657611488818361086f565b96509181939450619b00565b619b7f9150853d871161149657611488818361086f565b5f619a89565b9950975091955050505050565b619ba99150883d8a1161149657611488818361086f565b5f6199b9565b939091619bbb85610ebd565b84158015619f0857619bd16020615fec876155d7565b03816001600160a01b0387165afa80156107ab57619bf5915f91619eef57506155d7565b94955b619c13836001600160a01b03165f52600b60205260405f2090565b5491619c1d61bda5565b619ee757869288929091608083901c91858310619c905750505092619c8a82619c6d866197cb6001600160a01b03966fffffffffffffffffffffffffffffffff896106cb9b60801c039316616a07565b97886197ea856001600160a01b03165f52600b60205260405f2090565b1661785e565b90929350619c9f919450610ebd565b15619d9457619cbd61981b619cb48584618eb8565b6198168a61b8a2565b926001600160a01b03811693619cd481868961c00f565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526004810182905230602482015294602090869060449082905f905af180156107ab57619c6d89956198da876198cf6001600160a01b038f96888f896106cb9f859e6198c98f619c8a9f6198cf966198d4996fffffffffffffffffffffffffffffffff965f91619d75575b509a8b935b16906198c4828261bef7565b619d8e915060203d60201161149657611488818361086f565b5f619d64565b9091619daf61981b619da6838561acb9565b619a5d8961b8a2565b6040517fb3d7f6b9000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b038316936020939290918481602481895afa80156107ab57619e0e915f91619eca575b50868a61c00f565b6040517f94bf804d00000000000000000000000000000000000000000000000000000000815260048101829052306024820152948490869060449082905f905af19182156107ab576106cb966198da8b6198cf858f966001600160a01b038f896fffffffffffffffffffffffffffffffff879f9a849f8f96619c8a9f976198cf96619c6d9f996198d49a6198c9955f92619ead575b5050988992619d69565b619ec39250803d1061149657611488818361086f565b5f80619ea3565b619ee19150863d881161149657611488818361086f565b5f619e06565b509093505050565b619946915060203d60201161149657611488818361086f565b619f4e6020619f16876169f9565b604051809381927fb3d7f6b9000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0387165afa80156107ab57619f72915f91619f7857506169f9565b95619bf8565b619ba9915060203d60201161149657611488818361086f565b9092619fe892936001600160a01b03811690619fac866169f9565b604051907f0a28a47700000000000000000000000000000000000000000000000000000000825281806020988993600483019190602083019252565b0381865afa80156107ab5761a003915f9161a18257506169f9565b8695819761a022846001600160a01b03165f52600b60205260405f2090565b549261a02c61bda5565b61a1765750509186939188936fffffffffffffffffffffffffffffffff9081831690878210155f1461a083575050926197f0926197d083886197ea9b9761a07b8a6106cb9c9b9860801c616a07565b921603617032565b929894965094505061a0a461981b61a09b848a618eb8565b619a5d8b61b8a2565b6040517fb460af9400000000000000000000000000000000000000000000000000000000815260048101829052306024820181905260448201529095909282846064815f865af19384156107ab576197ea996198da846197f0978f8f6106cb9d819d8d6197d099859d5f9761a13d575b5050916198cf9161a12f87836198cf999a61a134989761ade3565b616a07565b9460801c616a07565b6198cf9750849261a134969561a1676198cf96948461a12f95903d1061149657611488818361086f565b9950509294955081935061a114565b98509650909450505050565b619ba99150873d891161149657611488818361086f565b9261a1f0939291926001600160a01b03841661a1b4846155d7565b604051907f4cdad50600000000000000000000000000000000000000000000000000000000825281806020998a93600483019190602083019252565b0381855afa80156107ab5761a20b915f9161992f57506155d7565b94849661a229826001600160a01b03165f52600b60205260405f2090565b549561a23361bda5565b61a34b5750869392889290916fffffffffffffffffffffffffffffffff9088821687811061a27e5750509183916197d089886197f09661a07b6106cb9b9a996197ea9e60801c616a07565b929650929493505061a29661981b61980d878a61acb9565b6040517fba08765200000000000000000000000000000000000000000000000000000000815260048101829052306024820181905260448201529590949083876064815f865af19283156107ab576197ea996198da886198cf8f8f9b8c6198cf6106cb9f9b6197d0998f946197f09f879f968f919761a134985f9661a324575b505061a12f9291859161ade3565b61a12f94939650908161a34292903d1061149657611488818361086f565b9491925f61a316565b975050505050565b939061a35e85610ebd565b841594851561a5fa5761a37560206164b5876155d7565b03816001600160a01b0389165afa80156107ab5761a399915f91619eef57506155d7565b94955b61a3b7856001600160a01b03165f52600b60205260405f2090565b549161a3c161bda5565b619ee75787938793909290916fffffffffffffffffffffffffffffffff918284169186831061a43457505050936001600160a01b0361a40f83866106cb9861a07b866197f09860801c616a07565b978861a42c826001600160a01b03165f52600b60205260405f2090565b555b16619606565b91965092945061a4449150610ebd565b1561a5345761a45961981b619cb4878561acb9565b6040517fba087652000000000000000000000000000000000000000000000000000000008152600481018290523060248201819052604482015293906020856064815f6001600160a01b038c165af180156107ab5761a4f289956198da846198cf8e61a1348b8f6001600160a01b036106cb9f9c61a12f8f9d6197f09f94889f859f6198cf975f9161a515575b509586925b169061ade3565b978861a50f826001600160a01b03165f52600b60205260405f2090565b5561a42e565b61a52e915060203d60201161149657611488818361086f565b5f61a4e6565b61a54461981b619da68785618eb8565b6040517fb460af940000000000000000000000000000000000000000000000000000000081526004810182905230602482018190526044820152906020826064815f6001600160a01b038c165af19182156107ab5761a4f289956198da6001600160a01b036198cf8e61a1348b8f8a6106cb9f61a12f8f936197f09f9e889f958b9f966198cf975f9161a5db575b509b8c9361a4eb565b61a5f4915060203d60201161149657611488818361086f565b5f61a5d2565b61a640602061a608876169f9565b604051809381927f0a28a477000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b0389165afa80156107ab5761a664915f91619f7857506169f9565b9561a39c565b90610da19160801c90617032565b916001600160a01b0380831693841561a7915761a6b08361a6aa836001600160a01b03165f52601160205260405f2090565b54616a07565b61a6cf85617904846001600160a01b03165f52600f60205260405f2090565b84815401905561a6de8161b943565b61a6f9826001600160a01b03165f52601160205260405f2090565b5516925f847fd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f6040518061a73287829190602083019252565b0390a4823b156106bc576040517f23de66510000000000000000000000000000000000000000000000000000000081525f600482018190526001600160a01b03909316602482015260448101919091529182908183816064810161545a565b7fec442f05000000000000000000000000000000000000000000000000000000005f526001600160a01b03841660045260245ffd5b805c906001820180921161449e575d565b905f5260205260405f20905f52602052600160405f205d565b919082519161a80382518251908561b97b565b61a80c83615628565b935f5b84811061a81e57505050505090565b80670de0b6b3a764000061a85061a83760019486615659565b5161916e61a845858a615659565b51617ef8868a615659565b0461a85b8289615659565b520161a80f565b95919361a893610da198969461a8a493617f6a976001600160a01b038092168b521660208a015260408901906154b9565b60e0606088015260e0870190610f2d565b91608086015284820360a0860152610f2d565b925f6001600160a01b0360209596939661a93161a8db87516001600160a01b031690565b9460808801519761a8eb896154af565b60a060806060830151930151910151916040519b8c9a8b998a977f45421ec70000000000000000000000000000000000000000000000000000000089526004890161a862565b0393165af19081156107ab575f9161a974575b501561a94c57565b7f0b2eb652000000000000000000000000000000000000000000000000000000005f5260045ffd5b61a98d915060203d6020116107a45761079a818361086f565b5f61a944565b9692610da198969461a9e99361a9cd61a9db936188ed9995610100938d6001600160a01b0380931690521660208d015260408c01906154b9565b8060608b0152890190610f2d565b908782036080890152610f2d565b9160a086015284820360c0860152610f2d565b94939195929690845161aa15906001600160a01b031690565b60808601519161aa24836154af565b608086015160a0880151906040968c6040519c8d9788977f976907cc000000000000000000000000000000000000000000000000000000008952600489019761aa6c9861a993565b03916001600160a01b031691815a5f948591f19485156107ab575f905f9661ab86575b5015801561ab7a575b61ab52576001809460091c161561aab857909192809495505f905b61aac0575b505050505090565b855181101561ab4d5761aad38187615659565b518285019061aae3838351615659565b511061aaf2575084018461aab3565b869061ab10836180d281618a0a6128f76123589860208c0151615659565b517fcefa3afa000000000000000000000000000000000000000000000000000000005f526001600160a01b03909216600452602452604452606490565b61aab8565b7fe1249165000000000000000000000000000000000000000000000000000000005f5260045ffd5b5084518651141561aa98565b905061ab9d9195503d805f833e618a9d818361086f565b94905f61aa8f565b64174876e800610da192049061b692565b90670de0b5cad2bef0008111614a3d57610da19164174876e800604292049061b6ac565b906fffffffffffffffffffffffffffffffff610da19216617032565b90801561acb5577f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0381165f528260205261ac3e60405f205c92836196c7565b918261ac7e57507f000000000000000000000000000000000000000000000000000000000000000092835c5f19810190811161449e576106cb945d61afb2565b926106cb9361afb25761acb07f000000000000000000000000000000000000000000000000000000000000000061a7c6565b61afb2565b5050565b9061acc68260801c61b8a2565b906fffffffffffffffffffffffffffffffff5f93168061acee575050600291618eee91618e73565b6001600160a01b03935090602460209260405195869384927f0a28a4770000000000000000000000000000000000000000000000000000000084526004840152165afa9081156107ab57618f53618eee926002945f91618f5c575061b8a2565b9291906001600160a01b038085165f52600860205260405f205492830392831161449e5781165f52600860205260405f205492830180931161449e576106cb9361c0ab565b7f00000000000000000000000000000000000000000000000000000000000000001161adbb57565b7f1ed4d118000000000000000000000000000000000000000000000000000000005f5260045ffd5b9291906001600160a01b038085165f52600860205260405f205492830180931161449e5781165f52600860205260405f205492830392831161449e576106cb9361c0ab565b91949290945f955f958161ae3d575050505050565b849750616ff861ae568260c061ae629697980151615659565b519160a08a0151615659565b945160018160031c161561ae78575b8080616fcb565b62ffffff91929450602a1c1664174876e8009081810291818304149015171561449e5761aeae670de0b6b3a76400009186615ea4565b049284841161af24578061790461af0361aee061af1b94617904876001600160a01b03165f52600660205260405f2090565b5461aefd886fffffffffffffffffffffffffffffffff8316616a07565b9061a66a565b936001600160a01b03165f52600660205260405f2090565b555f808061ae71565b7f4c69ac5d000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f5b825181101561af7d576001600160a01b038061af6b8386615659565b5116908316146195945760010161af4f565b6001600160a01b03827fddef98d7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b906001600160a01b03165f5260205260405f205d565b60051c6001161561afd557565b7f4876c0bc000000000000000000000000000000000000000000000000000000005f5260045ffd5b60041c60011661b00957565b7fd4f5779c000000000000000000000000000000000000000000000000000000005f5260045ffd5b80519081905f5b82811061b07357505081101561b04b5790565b7f7e46bddc000000000000000000000000000000000000000000000000000000005f5260045ffd5b61b07d8183615659565b5161b08b575b60010161b038565b92820361b098578261b083565b7f6b8c3be5000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff9060121c1664174876e8009081810291818304149015171561449e5790565b61b0fb60409295949395606083526060830190610f2d565b9460208201520152565b909491602061b16b61b11f866001600160a01b0394616a07565b9461b12a878761be25565b61b134818361c2b2565b6040519485809481937f16a0b3e00000000000000000000000000000000000000000000000000000000083528d8a6004850161b0e3565b0392165afa80156107ab5761b1f6956198cf61b1ca8561b1e09461b1e9998c998a61b1f0995f9461b1f9575b509061b1be61b1b761b1b061b1c5946183e09798615659565b51876155e5565b9c8c615659565b5190615ea4565b618f7b565b91670de0b6b3a76400008181039110028261be25565b93849251615628565b9586615659565b52616a07565b91565b6183e0945061b1b761b1b061b1c5949361b22461b1be9460203d60201161149657611488818361086f565b9750939450505061b197565b90602080835161b241845182617e72565b60051b930191015e565b9190602061b2625f92604086526040860190610f2d565b930152565b9190602061b262600192604086526040860190610f2d565b92919093835161b28e81615628565b9161b29882615628565b965f5b83811061b4945750506001600160a01b03811691604051957f984de9e8000000000000000000000000000000000000000000000000000000009283885260209889898061b2eb846004830161b24b565b0381895afa9889156107ab575f9961b475575b506040518581528a818061b3158b6004830161b267565b03818a5afa9081156107ab578a61b1c561b3509361b349938f5f9261b458575b9b999d9c9a98979695949392919050615e87565b809361c2b2565b5f5b89811061b3bf575050505061b376955060405180968194829383526004830161b267565b03915afa9182156107ab578361b1c59361b39c9261b1f6975f9261b3a2575b50506155e5565b90615ea4565b61b3b89250803d1061149657611488818361086f565b5f8061b395565b869899959750838d83949596988361b3e361b3dc82600198615659565b518961c29f565b8061b3ee8385615659565b511161b40a575b505050505001908a969498979593929161b352565b818361b42b61b4439761b4359461b4248561b43c99615659565b510361b641565b6172578388615659565b5192615659565b51906155e5565b61b44d828b615659565b52848d8a835f61b3f5565b61b46e9250803d1061149657611488818361086f565b5f8f61b335565b61b48d9199508a3d8c1161149657611488818361086f565b975f61b2fe565b8061b4be61b4b961b4a76001948c615659565b5161b4b28487615659565b5190616a07565b6155d7565b61b4c88288615659565b520161b29b565b60071c6001161561b4dc57565b7fefe0265d000000000000000000000000000000000000000000000000000000005f5260045ffd5b929161b5108451615628565b935f5b815181101561b545578061b534858561b52e60019587615659565b5161be7e565b61b53e8289615659565b520161b513565b50505050565b90610da19261b55991615ea4565b9061be25565b91906080670de0b6b3a764000061b5a361161e948061b5828660608a0151615659565b5261916e61b5948660c08a0151615659565b51617ef88760a08b0151615659565b04930151615659565b9190608061b5e761161e938061b5c6856060890151615659565b52617eff61b5d88560c0890151615659565b51617ef88660a08a0151615659565b930151615659565b9261b5e761161e936080928161b6098660608a0151615659565b5261b61381610ebd565b61b639576002905b61b6298560c0890151615659565b51906142ee8660a08a0151615659565b60019061b61b565b9061b64b91615ea4565b6001670de0b6b3a76400005f19830104019015150290565b9161b66d91615ea4565b90670de0b6b3a76400009081810291818304149015171561449e578115618f85570490565b908060181c618fd557602a1b9062ffffff602a1b19161790565b906101008084101561700a5783810390811161449e578060ff105f1461b6ee575060ff5b60181161700a578060181c618fd55762ffffff90831b921b19161790565b61b6d0565b906106cb61b707926040519384809261569a565b038361086f565b9061b71882610922565b61b725604051918261086f565b828152601f1961b7358294610922565b01905f5b82811061b74557505050565b60209061b750615980565b8282850101520161b739565b9060405161b76981610802565b604060ff82945481811661b77c81610ebd565b84526001600160a01b038160081c16602085015260a81c161515910152565b60608101805151935f5b85811061b7b457505050505050565b8061b7c86128f76001936020880151615659565b61b7f361b7dd8389905f5260205260405f2090565b546fffffffffffffffffffffffffffffffff1690565b61b7fe838751615659565b51811161b83e575b505061b82561b816828651615659565b51611a11836080890151615659565b61b8378288905f5260205260405f2090565b550161b7a5565b61b88261b89a9161b87c61b87361b866868a906001600160a01b03165f5260205260405f2090565b549261b43c888c51615659565b8260801c616a07565b9061abda565b9185906001600160a01b03165f5260205260405f2090565b555f8061b806565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161b8cc5790565b7f24775e06000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001600160a01b0392918381168484160361b91557505050505f1990565b61b93f9361790492165f52601060205260405f20906001600160a01b03165f5260205260405f2090565b5490565b620f4240811061b9505750565b7fd38d20fc000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8114801592919061b98f575b5050617e7957565b141590505f8061b987565b805161b9a581610ebd565b61b9ae81610ebd565b8061b9c1575050670de0b6b3a764000090565b8061b9cd600192610ebd565b0361ba4257602061b9ec6120758260049401516001600160a01b031690565b604051928380927f679aefce0000000000000000000000000000000000000000000000000000000082525afa9081156107ab575f9161ba29575090565b610da1915060203d60201161149657611488818361086f565b7fdf450632000000000000000000000000000000000000000000000000000000005f5260045ffd5b60061c6001161561ba7757565b7fcf0a95c0000000000000000000000000000000000000000000000000000000005f5260045ffd5b909492919281519461bab086615628565b945f5b87811061bc80575061bac9906185f68988615659565b61bad38887615659565b52604051947f984de9e800000000000000000000000000000000000000000000000000000000928387526020878061bb0e886004830161b24b565b03816001600160a01b0385165afa9687156107ab575f9761bc5f575b50604051948486526020868061bb43866004830161b24b565b03816001600160a01b0386165afa9384156107ab576198cf61b1ca8c61b43c61bb9e61bba59661bb978f61bb8761bbdb9f9160209e88935f9161bc40575b5061be25565b9261bb92848d61c3d5565b615659565b519061b641565b9188615659565b9361bbb4856185f68c86615659565b61bbbe8b85615659565b526001600160a01b0360405180978195829483526004830161b267565b0392165afa9081156107ab5761b1f69561bc11935f9361bc17575b5061bc0361bc0a91615628565b9788615659565b52836155e5565b9061be7e565b61bc0a91935061bc3861bc039160203d60201161149657611488818361086f565b93915061bbf6565b602061bc5992503d60201161149657611488818361086f565b5f61bb81565b61bc7991975060203d60201161149657611488818361086f565b955f61bb2a565b8061bc9661bc9060019388615659565b516155d7565b61bca0828a615659565b520161bab3565b90949183039183831161449e57602061bcd66001600160a01b039261bccc878761be25565b61b134818361c3d5565b0392165afa80156107ab5761b1f695617eff8861b1e09361b1e99861bd21965f9261bd27575b5061bd0f826185f66198cf94958b615659565b9861bd1a8d8a615659565b519061be7e565b526155e5565b6198cf92506185f69361bd4b61bd0f9260203d60201161149657611488818361086f565b9350935061bcfc565b90929161bd618251615628565b915f5b815181101561bd9e5761bd818361bd7b8385615659565b51615ea4565b908615618f8557866001920461bd978287615659565b520161bd64565b5050509150565b32158061bdaf5790565b506001600754161590565b903261bdfd576001600160a01b0361bdee92165f52600f60205260405f20906001600160a01b03165f5260205260405f2090565b805491820180921161449e5755565b7f67f84ab2000000000000000000000000000000000000000000000000000000005f5260045ffd5b90801561be5657670de0b6b3a76400009182810292818404149015171561449e576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b821561be565760019161be9091615ea4565b915f19830104019015150290565b670de0b6b3a764000080820402810361beb45790565b6001810180911161449e5790565b5f811261becc5790565b7fa8ce4432000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b03851660248401525f6044840152909391929183606481015b039161bf56601f199384810187528661086f565b5f806001600160a01b0386169287519082855af19061bf7361c05e565b8261bfdd575b508161bfd2575b501561bf8d575050505050565b60405160208101959095526001600160a01b031660248501525f604485015261bfc8936144749161bfc29082606481016110c0565b8261c22f565b5f80808080616fcb565b90503b15155f61bf80565b8051919250811591821561bff5575b5050905f61bf79565b61c0089250602080918301019101615324565b5f8061bfec565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602082018181526001600160a01b03851660248401526044830195909552939092836064810161bf42565b3d1561c088573d9061c06f82610d34565b9161c07d604051938461086f565b82523d5f602084013e565b606090565b5f80610da19360208151910182855af161c0a561c05e565b9161c479565b6040517f70a0823100000000000000000000000000000000000000000000000000000000808252306004830152602095939490926001600160a01b03929187836024818786165afa9283156107ab575f9361c210575b5080831061c1cb575061c125906001600160a01b03165f52600860205260405f2090565b556040519182523060048301528316908481602481855afa9485156107ab575f9561c1ac575b505081841061c171575050615db1906001600160a01b03165f52600860205260405f2090565b7f1149424d000000000000000000000000000000000000000000000000000000005f526001600160a01b03166004526024525060445260645ffd5b61c1c3929550803d1061149657611488818361086f565b925f8061c14b565b905061235892867f1c6a5375000000000000000000000000000000000000000000000000000000005f52169291906001600160a01b0360649416600452602452604452565b61c228919350883d8a1161149657611488818361086f565b915f61c101565b6001600160a01b0361c2439116918261c08d565b805190811515918261c284575b505061c2595750565b7f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61c2979250602080918301019101615324565b155f8061c250565b670de0b6b3a76400009161917391615ea4565b9060206001600160a01b03926004604051809581937f273c1adf000000000000000000000000000000000000000000000000000000008352165afa9182156107ab575f9261c335575b5081811161c307575050565b7f3e8960dc000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61c34f91925060203d60201161149657611488818361086f565b905f61c2fb565b9064ffffffffff61c36682615628565b92605a1c165f5b82811061c37a5750505090565b600580820290828204148215171561449e5782601f911c1690604d821161449e57600191600a0a61c3ab8287615659565b520161c36d565b62ffffff9060421c1664174876e8009081810291818304149015171561449e5790565b9060206001600160a01b03926004604051809581937fb677fa56000000000000000000000000000000000000000000000000000000008352165afa9182156107ab575f9261c458575b5081811061c42a575050565b7fe31c95be000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61c47291925060203d60201161149657611488818361086f565b905f61c41e565b9061c4b6575080511561c48e57805190602001fd5b7f1425ea42000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061c4fc575b61c4c7575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561c4bf565b9161916e61917392670de0b6b3a764000094615ea4565b610da19291617eff91615ea4565b9291928060011461c5765760021461c569577f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b610da192617eff91615ea4565b509061916e670de0b6b3a76400009361917393615ea456fea2646970667358221220aad6895a1a946b9d94f349f2b7fa809136db131fd94e18929a4af654b59cc6d964736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x18 JUMPI JUMPDEST CALLDATASIZE PUSH2 0x672D JUMPI PUSH2 0x6705 JUMP JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0xD7AADB EQ PUSH2 0x6A6 JUMPI DUP1 PUSH4 0x2E1A4AA EQ PUSH2 0x6A1 JUMPI DUP1 PUSH4 0x362A513 EQ PUSH2 0x69C JUMPI DUP1 PUSH4 0x790DE46 EQ PUSH2 0x697 JUMPI DUP1 PUSH4 0x8BADE29 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xC87409B EQ PUSH2 0x68D JUMPI DUP1 PUSH4 0xEE4CDD8 EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0xF619655 EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0xF682BA0 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x10C1DC41 EQ PUSH2 0x679 JUMPI DUP1 PUSH4 0x155075E6 EQ PUSH2 0x674 JUMPI DUP1 PUSH4 0x15AFD409 EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0x15DACBEA EQ PUSH2 0x66A JUMPI DUP1 PUSH4 0x16A573C2 EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0x195AAEF9 EQ PUSH2 0x660 JUMPI DUP1 PUSH4 0x19A24BCB EQ PUSH2 0x65B JUMPI DUP1 PUSH4 0x1C4E1E23 EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0x1D27AF68 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0x1F4475C5 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x1F495F79 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x21457897 EQ PUSH2 0x642 JUMPI DUP1 PUSH4 0x24E7176B EQ PUSH2 0x63D JUMPI DUP1 PUSH4 0x25B6A844 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0x2606A4DE EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0x28121E27 EQ PUSH2 0x62E JUMPI DUP1 PUSH4 0x2B766278 EQ PUSH2 0x629 JUMPI DUP1 PUSH4 0x2BFB780C EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0x2CBBF198 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x2D1C3BEB EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x32333CE6 EQ PUSH2 0x615 JUMPI DUP1 PUSH4 0x352339EE EQ PUSH2 0x610 JUMPI DUP1 PUSH4 0x36918D6E EQ PUSH2 0x60B JUMPI DUP1 PUSH4 0x370BC8DA EQ PUSH2 0x606 JUMPI DUP1 PUSH4 0x3CB5B2AF EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0x3CCE2585 EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0x3E262BA3 EQ PUSH2 0x5F7 JUMPI DUP1 PUSH4 0x420F4A45 EQ PUSH2 0x5F2 JUMPI DUP1 PUSH4 0x43583BE5 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0x44EA8763 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0x47C07E88 EQ PUSH2 0x5E3 JUMPI DUP1 PUSH4 0x48C89491 EQ PUSH2 0x5DE JUMPI DUP1 PUSH4 0x4AF29EC4 EQ PUSH2 0x5D9 JUMPI DUP1 PUSH4 0x557DBA68 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0x5C1C1C81 EQ PUSH2 0x5CF JUMPI DUP1 PUSH4 0x5E3E00FA EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x5EEAE6EB EQ PUSH2 0x5C5 JUMPI DUP1 PUSH4 0x5F70F542 EQ PUSH2 0x5C0 JUMPI DUP1 PUSH4 0x608256F7 EQ PUSH2 0x5BB JUMPI DUP1 PUSH4 0x62691E5F EQ PUSH2 0x5B6 JUMPI DUP1 PUSH4 0x692407AE EQ PUSH2 0x5B1 JUMPI DUP1 PUSH4 0x6D4908C4 EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x7004B0F1 EQ PUSH2 0x5A7 JUMPI DUP1 PUSH4 0x7965C967 EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0x79A2C0AC EQ PUSH2 0x59D JUMPI DUP1 PUSH4 0x80047E26 EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0x81E4B7E9 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x82EA1749 EQ PUSH2 0x58E JUMPI DUP1 PUSH4 0x851C65A3 EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0x87A530F8 EQ PUSH2 0x584 JUMPI DUP1 PUSH4 0x87A76C59 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0x8F5AEB4B EQ PUSH2 0x57A JUMPI DUP1 PUSH4 0x920AF066 EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0x96E74A27 EQ PUSH2 0x570 JUMPI DUP1 PUSH4 0xA03B23EF EQ PUSH2 0x56B JUMPI DUP1 PUSH4 0xA408F312 EQ PUSH2 0x566 JUMPI DUP1 PUSH4 0xA40F9592 EQ PUSH2 0x561 JUMPI DUP1 PUSH4 0xAA01EDB3 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0xAB62C2B6 EQ PUSH2 0x557 JUMPI DUP1 PUSH4 0xAC004855 EQ PUSH2 0x552 JUMPI DUP1 PUSH4 0xAE639329 EQ PUSH2 0x54D JUMPI DUP1 PUSH4 0xB1740C2D EQ PUSH2 0x548 JUMPI DUP1 PUSH4 0xB2469499 EQ PUSH2 0x543 JUMPI DUP1 PUSH4 0xB4EB0BF9 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xB6F680F4 EQ PUSH2 0x539 JUMPI DUP1 PUSH4 0xB8CACEEE EQ PUSH2 0x534 JUMPI DUP1 PUSH4 0xB8F82B26 EQ PUSH2 0x52F JUMPI DUP1 PUSH4 0xB9A8EFFA EQ PUSH2 0x52A JUMPI DUP1 PUSH4 0xBB14E466 EQ PUSH2 0x525 JUMPI DUP1 PUSH4 0xBBC6F1DC EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0xBE6B4D2A EQ PUSH2 0x51B JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0x516 JUMPI DUP1 PUSH4 0xC1FDCD62 EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xC9C1661B EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xCBDE2B68 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0xCBE52AE3 EQ PUSH2 0x502 JUMPI DUP1 PUSH4 0xCECC95A7 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0xCFCC2209 EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0xD01A3269 EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0xD0643B8C EQ PUSH2 0x4EE JUMPI DUP1 PUSH4 0xD1F810A5 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xD2C725E0 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0xD64BC25D EQ PUSH2 0x4DF JUMPI DUP1 PUSH4 0xD86C3FEF EQ PUSH2 0x4DA JUMPI DUP1 PUSH4 0xD8F4CF3C EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0xDAB50579 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0xDC4402ED EQ PUSH2 0x4CB JUMPI DUP1 PUSH4 0xDF138458 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0xE2DDCE11 EQ PUSH2 0x4C1 JUMPI DUP1 PUSH4 0xE460A8A9 EQ PUSH2 0x4BC JUMPI DUP1 PUSH4 0xE5948689 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0xE5B08FFB EQ PUSH2 0x4B2 JUMPI DUP1 PUSH4 0xEBFEB0A1 EQ PUSH2 0x4AD JUMPI DUP1 PUSH4 0xEEDA9991 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0xF1320097 EQ PUSH2 0x4A3 JUMPI PUSH4 0xFF44DEAB SUB PUSH2 0xE JUMPI PUSH2 0x52C9 JUMP JUMPDEST PUSH2 0x521E JUMP JUMPDEST PUSH2 0x51FF JUMP JUMPDEST PUSH2 0x51B7 JUMP JUMPDEST PUSH2 0x517B JUMP JUMPDEST PUSH2 0x5032 JUMP JUMPDEST PUSH2 0x4FB1 JUMP JUMPDEST PUSH2 0x4F49 JUMP JUMPDEST PUSH2 0x4F11 JUMP JUMPDEST PUSH2 0x4EAC JUMP JUMPDEST PUSH2 0x4DBC JUMP JUMPDEST PUSH2 0x4CCA JUMP JUMPDEST PUSH2 0x4BE7 JUMP JUMPDEST PUSH2 0x4BAE JUMP JUMPDEST PUSH2 0x4B70 JUMP JUMPDEST PUSH2 0x4B45 JUMP JUMPDEST PUSH2 0x4B0D JUMP JUMPDEST PUSH2 0x4A65 JUMP JUMPDEST PUSH2 0x49E6 JUMP JUMPDEST PUSH2 0x49AE JUMP JUMPDEST PUSH2 0x4983 JUMP JUMPDEST PUSH2 0x4931 JUMP JUMPDEST PUSH2 0x4896 JUMP JUMPDEST PUSH2 0x47AC JUMP JUMPDEST PUSH2 0x4794 JUMP JUMPDEST PUSH2 0x4728 JUMP JUMPDEST PUSH2 0x46FD JUMP JUMPDEST PUSH2 0x45C2 JUMP JUMPDEST PUSH2 0x457F JUMP JUMPDEST PUSH2 0x4554 JUMP JUMPDEST PUSH2 0x453C JUMP JUMPDEST PUSH2 0x4522 JUMP JUMPDEST PUSH2 0x4506 JUMP JUMPDEST PUSH2 0x44CC JUMP JUMPDEST PUSH2 0x44A3 JUMP JUMPDEST PUSH2 0x43C8 JUMP JUMPDEST PUSH2 0x43AE JUMP JUMPDEST PUSH2 0x430A JUMP JUMPDEST PUSH2 0x4228 JUMP JUMPDEST PUSH2 0x41EC JUMP JUMPDEST PUSH2 0x41A7 JUMP JUMPDEST PUSH2 0x4162 JUMP JUMPDEST PUSH2 0x3D66 JUMP JUMPDEST PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x3CE0 JUMP JUMPDEST PUSH2 0x3C9D JUMP JUMPDEST PUSH2 0x3C33 JUMP JUMPDEST PUSH2 0x3B75 JUMP JUMPDEST PUSH2 0x3ABA JUMP JUMPDEST PUSH2 0x3A7E JUMP JUMPDEST PUSH2 0x3A6D JUMP JUMPDEST PUSH2 0x39D7 JUMP JUMPDEST PUSH2 0x39A1 JUMP JUMPDEST PUSH2 0x3940 JUMP JUMPDEST PUSH2 0x390B JUMP JUMPDEST PUSH2 0x38BD JUMP JUMPDEST PUSH2 0x3898 JUMP JUMPDEST PUSH2 0x37A6 JUMP JUMPDEST PUSH2 0x35BD JUMP JUMPDEST PUSH2 0x3585 JUMP JUMPDEST PUSH2 0x3533 JUMP JUMPDEST PUSH2 0x3465 JUMP JUMPDEST PUSH2 0x339A JUMP JUMPDEST PUSH2 0x31B6 JUMP JUMPDEST PUSH2 0x312A JUMP JUMPDEST PUSH2 0x3102 JUMP JUMPDEST PUSH2 0x308A JUMP JUMPDEST PUSH2 0x2D36 JUMP JUMPDEST PUSH2 0x2CCE JUMP JUMPDEST PUSH2 0x2C9D JUMP JUMPDEST PUSH2 0x2C16 JUMP JUMPDEST PUSH2 0x2BDD JUMP JUMPDEST PUSH2 0x2AF8 JUMP JUMPDEST PUSH2 0x2A34 JUMP JUMPDEST PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x28B6 JUMP JUMPDEST PUSH2 0x27DA JUMP JUMPDEST PUSH2 0x27B6 JUMP JUMPDEST PUSH2 0x2520 JUMP JUMPDEST PUSH2 0x24E3 JUMP JUMPDEST PUSH2 0x249B JUMP JUMPDEST PUSH2 0x241A JUMP JUMPDEST PUSH2 0x1FB8 JUMP JUMPDEST PUSH2 0x1E9B JUMP JUMPDEST PUSH2 0x1C6B JUMP JUMPDEST PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1A48 JUMP JUMPDEST PUSH2 0x1A31 JUMP JUMPDEST PUSH2 0x1931 JUMP JUMPDEST PUSH2 0x18A1 JUMP JUMPDEST PUSH2 0x16D7 JUMP JUMPDEST PUSH2 0x16A0 JUMP JUMPDEST PUSH2 0x149D JUMP JUMPDEST PUSH2 0x137C JUMP JUMPDEST PUSH2 0x1342 JUMP JUMPDEST PUSH2 0x12D9 JUMP JUMPDEST PUSH2 0x129A JUMP JUMPDEST PUSH2 0x121D JUMP JUMPDEST PUSH2 0x11D8 JUMP JUMPDEST PUSH2 0x116B JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x1044 JUMP JUMPDEST PUSH2 0x9CB JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0x6AB JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x164 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x6F3 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x700 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x770 PUSH1 0x20 PUSH2 0x71A CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 SWAP1 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP7 DUP3 SWAP6 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 SWAP4 SWAP3 SWAP2 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD SWAP6 AND DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP4 AND GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x781 JUMPI STOP JUMPDEST PUSH2 0x7A2 SWAP1 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI JUMPDEST PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5324 JUMP JUMPDEST STOP JUMPDEST POP RETURNDATASIZE PUSH2 0x790 JUMP JUMPDEST PUSH2 0x5339 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x7D0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x6777 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x7D5 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0x853 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0xC0 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x140 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x160 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x180 DUP3 ADD DUP3 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x81E JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x954 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x962 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x98B JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x999 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x97D JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0xC0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x9E8 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xA08 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH2 0xA11 PUSH2 0x9A4 JUMP JUMPDEST PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 SWAP3 PUSH1 0x40 MLOAD SWAP3 PUSH2 0xA4C DUP5 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH2 0xA58 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x84 CALLDATALOAD PUSH2 0xA66 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH2 0xA77 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x5344 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA81 JUMP JUMPDEST DUP1 ISZERO ISZERO SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH2 0x144 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x164 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x184 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x1A4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0xA4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0xC4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0xE4 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST PUSH2 0x124 CALLDATALOAD SWAP1 PUSH2 0x6CB DUP3 PUSH2 0xA96 JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 PUSH2 0xB68 DUP4 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH1 0x40 PUSH2 0xB78 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x86F JUMP JUMPDEST DUP5 DUP7 MSTORE DUP3 DUP7 ADD SWAP2 DUP4 PUSH1 0x60 DUP1 SWAP8 MUL DUP7 ADD ADD SWAP5 DUP2 DUP7 GT PUSH2 0x6BC JUMPI DUP5 ADD SWAP3 JUMPDEST DUP6 DUP5 LT PUSH2 0xBA5 JUMPI POP POP POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP7 DUP5 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP5 DUP8 SWAP2 DUP5 MLOAD PUSH2 0xBBC DUP2 PUSH2 0x802 JUMP JUMPDEST DUP7 CALLDATALOAD PUSH2 0xBC7 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD PUSH2 0xBD6 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP6 DUP8 ADD CALLDATALOAD PUSH2 0xBE7 DUP2 PUSH2 0xA96 JUMP JUMPDEST DUP7 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0xB94 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0xC10 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0xC1E PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xC47 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xC39 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0xC6B PUSH2 0x892 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xC91 SWAP2 DUP6 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xCAE SWAP2 DUP6 ADD PUSH2 0xB4F JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xCCB SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xCE8 SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xD05 SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD MSTORE PUSH1 0xC0 DUP4 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xD20 SWAP3 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0x6BC JUMPI JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x81E JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0xD5C DUP3 PUSH2 0xD34 JUMP JUMPDEST SWAP2 PUSH2 0xD6A PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x86F JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x6BC JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP2 PUSH1 0x20 PUSH2 0xDA1 SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0xD50 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0xDB9 PUSH2 0x89F JUMP JUMPDEST SWAP3 PUSH2 0xDC3 DUP3 PUSH2 0x6C0 JUMP JUMPDEST DUP5 MSTORE PUSH2 0xDD1 PUSH1 0x20 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xDF7 SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xE12 PUSH1 0x80 DUP5 ADD PUSH2 0xD27 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xE2D SWAP3 ADD PUSH2 0xD86 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0xE61 SWAP2 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP4 PUSH2 0xE79 SWAP2 PUSH1 0x4 ADD PUSH2 0xDA4 JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP2 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0xEC7 JUMPI JUMP JUMPDEST PUSH2 0xE90 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xEEB JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x60 PUSH1 0x1 SWAP3 DUP8 MLOAD DUP1 MLOAD PUSH2 0xF02 DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP3 MSTORE DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0xEDD JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xF4C JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xF3E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xE0 DUP4 ADD SWAP3 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP5 PUSH1 0xE0 PUSH1 0x20 DUP5 ADD MSTORE DUP6 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH2 0x100 DUP5 ADD SWAP7 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1002 JUMPI POP POP POP POP PUSH1 0xC0 PUSH2 0xFF1 PUSH2 0xFDF PUSH2 0xFCD PUSH2 0xFBB PUSH2 0xDA1 SWAP8 SWAP9 PUSH1 0x40 DUP9 ADD MLOAD DUP8 DUP3 SUB PUSH1 0x40 DUP10 ADD MSTORE PUSH2 0xECC JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD DUP7 DUP3 SUB PUSH1 0x60 DUP9 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x80 DUP8 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 MSTORE SWAP7 DUP2 ADD SWAP7 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xF8B JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x10E9 PUSH2 0x1105 PUSH2 0x1118 PUSH2 0x10D5 PUSH2 0x105E CALLDATASIZE PUSH2 0xE34 JUMP JUMPDEST SWAP3 SWAP2 SWAP5 SWAP1 PUSH2 0x106A PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x10F7 PUSH1 0x40 MLOAD SWAP5 PUSH2 0x10A3 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x1084 DUP7 DUP4 PUSH2 0x54C6 JUMP JUMPDEST SUB SWAP8 PUSH2 0x1098 PUSH1 0x1F NOT SWAP10 DUP11 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x86F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP2 DUP5 DUP11 PUSH2 0x6A3F JUMP JUMPDEST SWAP8 SWAP3 SWAP4 SWAP2 SWAP6 SWAP1 SWAP9 PUSH2 0x10CC PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x10C0 PUSH1 0x20 DUP3 ADD SWAP6 DUP7 PUSH2 0x54C6 JUMP JUMPDEST SUB SWAP1 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x86F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 EQ PUSH2 0x5536 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP9 PUSH1 0xA0 DUP11 MSTORE PUSH1 0xA0 DUP11 ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST SWAP1 DUP9 DUP3 SUB PUSH1 0x20 DUP11 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0x40 DUP9 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1163 PUSH2 0x1152 PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x6FAF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1188 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH4 0xFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x11C8 SWAP2 AND SWAP2 DUP3 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x82 SWAP2 PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x11F5 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x120B PUSH1 0x44 CALLDATALOAD PUSH1 0x24 CALLDATALOAD PUSH2 0x7032 JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x123A DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0x125E PUSH2 0x7A2 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP1 PUSH2 0x7096 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x127C DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xDA1 DUP2 PUSH2 0xA81 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1118 PUSH2 0x12C5 PUSH2 0x12AE CALLDATASIZE PUSH2 0x1264 JUMP JUMPDEST SWAP1 PUSH2 0x12B7 PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x12C0 PUSH2 0x5478 JUMP JUMPDEST PUSH2 0x70F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x3 NOT PUSH1 0x40 DUP2 CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x12F7 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x1304 DUP4 PUSH2 0xA96 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE PUSH1 0x7 SLOAD SWAP3 PUSH1 0x1 SHL AND SWAP2 AND OR OR PUSH1 0x7 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH0 SWAP2 SUB SLT PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1399 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x13A4 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x13AC PUSH2 0x780D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP5 SWAP3 DUP3 SWAP1 PUSH1 0x24 SWAP1 DUP3 SWAP1 GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1118 SWAP5 PUSH2 0x1438 SWAP3 PUSH0 SWAP2 PUSH2 0x146E JUMPI JUMPDEST POP DUP1 PUSH2 0x1432 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x55E5 JUMP JUMPDEST SWAP2 DUP1 DUP4 GT PUSH2 0x1464 JUMPI JUMPDEST POP DUP2 PUSH2 0x144C SWAP2 PUSH2 0x785E JUMP JUMPDEST PUSH2 0x1454 PUSH2 0x77E8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SWAP2 POP PUSH2 0x144C PUSH2 0x1441 JUMP JUMPDEST PUSH2 0x1490 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI JUMPDEST PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x559B JUMP JUMPDEST PUSH0 PUSH2 0x1415 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x147E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x14EB PUSH1 0x4 CALLDATALOAD PUSH2 0x14BD DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH2 0x14C9 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH2 0x14D6 DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x14E5 PUSH1 0x64 CALLDATALOAD DUP1 SWAP5 DUP4 CALLER PUSH2 0x789C JUMP JUMPDEST CALLER PUSH2 0x7A79 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0x150B PUSH2 0x892 JUMP JUMPDEST SWAP3 PUSH2 0x1515 DUP3 PUSH2 0xA8B JUMP JUMPDEST DUP5 MSTORE PUSH2 0x1523 PUSH1 0x20 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x1534 PUSH1 0x40 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x1545 PUSH1 0x60 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xD20 SWAP3 ADD PUSH2 0xD86 JUMP JUMPDEST PUSH1 0xC0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0x15A9 SWAP2 PUSH1 0x4 ADD PUSH2 0x14F6 JUMP JUMPDEST SWAP3 PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC DUP5 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH2 0x15E0 DUP2 PUSH2 0x823 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP2 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE SWAP3 PUSH1 0xA4 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP2 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP1 PUSH2 0x161E DUP3 PUSH2 0xEBD JUMP JUMPDEST MSTORE JUMP JUMPDEST PUSH2 0xDA1 SWAP2 DUP2 MLOAD PUSH2 0x1630 DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xC0 PUSH2 0x1657 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xE0 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0xA0 DUP3 ADD MLOAD AND PUSH1 0xA0 DUP5 ADD MSTORE ADD MLOAD SWAP1 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1118 PUSH2 0x16C3 PUSH2 0x16B4 CALLDATASIZE PUSH2 0x157C JUMP JUMPDEST SWAP2 PUSH2 0x16BD PUSH2 0x55F2 JUMP JUMPDEST POP PUSH2 0x7C45 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x16F4 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP2 PUSH1 0x40 MLOAD PUSH32 0xCE20ECE700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x1873 JUMPI JUMPDEST POP DUP4 LT PUSH2 0x184B JUMPI PUSH1 0x40 MLOAD PUSH32 0x654CF15D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP2 DUP2 PUSH1 0x4 DUP2 DUP9 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0x182E JUMPI JUMPDEST POP POP DUP3 GT PUSH2 0x1806 JUMPI DUP2 DUP2 PUSH2 0x17F0 PUSH2 0x17D9 PUSH32 0x89D41522342FABAC1471CA6073A5623E5CAF367B03CA6E9A001478D0CF8BE4A1 SWAP6 PUSH2 0x17D3 PUSH2 0x1801 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x8F8A JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 STOP JUMPDEST PUSH32 0x7F47834B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1844 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x1784 JUMP JUMPDEST PUSH32 0xBFB2068800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x188A SWAP2 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x1741 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x18C7 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x18E9 DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1901 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP9 DUP3 PUSH2 0x1890 JUMP JUMPDEST DUP1 PUSH1 0x1 SWAP2 PUSH0 MSTORE DUP4 DUP4 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 PUSH0 KECCAK256 SLOAD AND PUSH2 0x192A DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x18EC JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x194E DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x196F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0x19EA PUSH2 0x198D PUSH2 0x19B2 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x19B9 PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP3 PUSH2 0x569A JUMP JUMPDEST SUB DUP6 PUSH2 0x86F JUMP JUMPDEST PUSH2 0x19C6 DUP5 MLOAD DUP5 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST PUSH2 0x19D3 DUP5 MLOAD DUP7 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x7A2 JUMPI DUP1 PUSH2 0x1A18 PUSH2 0x1A06 PUSH1 0x1 SWAP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x7032 JUMP JUMPDEST PUSH2 0x1A2A DUP3 DUP7 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0x19ED JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x1A42 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 PUSH2 0x7CAE JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x1A9F DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1ABF SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH2 0x1AC8 PUSH2 0x6818 JUMP JUMPDEST PUSH2 0x1AD0 PUSH2 0x6884 JUMP JUMPDEST SWAP2 PUSH1 0x1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH2 0x1B0A DUP3 PUSH32 0x0 AND SWAP2 PUSH2 0x58B3 JUMP JUMPDEST SWAP2 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH0 DUP1 SWAP5 PUSH2 0x1B62 SWAP7 PUSH2 0x1BA1 PUSH1 0x40 MLOAD SWAP9 DUP10 SWAP8 DUP9 SWAP7 DUP8 SWAP6 PUSH32 0xED05BEAF00000000000000000000000000000000000000000000000000000000 DUP8 MSTORE AND PUSH1 0x4 DUP7 ADD MSTORE PUSH2 0x100 PUSH1 0x24 DUP7 ADD MSTORE PUSH2 0x104 DUP6 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP2 PUSH1 0x44 CALLDATALOAD PUSH1 0x44 DUP6 ADD MSTORE DUP5 PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1BB1 JUMPI STOP JUMPDEST DUP1 PUSH2 0x1BBE PUSH2 0x7A2 SWAP3 PUSH2 0x83F JUMP JUMPDEST DUP1 PUSH2 0x1338 JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x6BC JUMPI JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI PUSH2 0x1BE6 PUSH2 0x89F JUMP JUMPDEST SWAP3 PUSH2 0x1BF0 DUP3 PUSH2 0x6C0 JUMP JUMPDEST DUP5 MSTORE PUSH2 0x1BFE PUSH1 0x20 DUP4 ADD PUSH2 0x6C0 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0x1C2F SWAP2 DUP6 ADD PUSH2 0xBF6 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xE12 PUSH1 0x80 DUP5 ADD PUSH2 0x1BC4 JUMP JUMPDEST SWAP2 PUSH2 0x1C5D SWAP1 PUSH2 0xDA1 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1C9C SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x1CA4 PUSH2 0x780D JUMP JUMPDEST PUSH2 0x1CB7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH2 0x7E19 JUMP JUMPDEST PUSH2 0x1CD0 PUSH2 0x1CCB DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7E66 JUMP JUMPDEST PUSH2 0x1CE9 PUSH2 0x1CE4 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x735B JUMP JUMPDEST PUSH2 0x1D3C PUSH1 0x20 DUP3 ADD MLOAD MLOAD PUSH2 0x1D03 PUSH1 0x60 DUP6 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x7E72 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP5 ADD SWAP1 PUSH2 0x1D1D DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP8 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0x7EA1 JUMP JUMPDEST SWAP3 PUSH2 0x1D2D DUP7 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x10 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1DC3 JUMPI JUMPDEST POP POP POP DUP4 DUP4 PUSH2 0x8219 JUMP JUMPDEST SWAP3 SWAP4 SWAP1 SWAP2 SWAP5 DUP6 PUSH2 0x1D51 DUP4 MLOAD PUSH1 0x1 SWAP1 PUSH1 0x11 SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x1D66 JUMPI JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP8 DUP11 DUP11 DUP5 PUSH2 0x1C40 JUMP JUMPDEST PUSH2 0x1118 SWAP5 SWAP7 POP SWAP1 DUP6 PUSH2 0x1DB9 SWAP5 SWAP4 SWAP3 PUSH2 0x1DAF PUSH2 0x1DA2 PUSH2 0x1D8B DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0x88FB JUMP JUMPDEST SWAP3 SWAP1 PUSH0 DUP1 DUP1 PUSH2 0x1D56 JUMP JUMPDEST PUSH2 0x1DEB PUSH2 0x1E13 SWAP5 DUP8 DUP10 PUSH2 0x1DE3 PUSH2 0x1DA2 PUSH2 0x1D8B DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER SWAP1 PUSH2 0x7F78 JUMP JUMPDEST PUSH2 0x1E08 PUSH2 0x1E02 PUSH2 0x19D3 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x8052 JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0x7EA1 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x1D32 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1E3A JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP3 PUSH1 0x80 PUSH1 0x1 SWAP3 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 MLOAD AND DUP4 MSTORE DUP5 DUP3 ADD MLOAD PUSH2 0x1E61 DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP4 DUP7 ADD MSTORE PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 SWAP2 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 ADD PUSH2 0x1E2C JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1ED7 PUSH2 0x1ED2 PUSH2 0x1118 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH2 0x58B3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP4 SWAP5 PUSH1 0xC0 SWAP2 PUSH2 0xDA1 SWAP9 SWAP7 PUSH2 0x1FAA SWAP6 PUSH2 0x1F81 SWAP6 PUSH2 0x140 SWAP4 DUP10 MSTORE PUSH1 0x20 DUP10 ADD MSTORE PUSH1 0x40 DUP9 ADD MSTORE PUSH1 0x60 DUP8 ADD MSTORE DUP1 PUSH1 0x80 DUP8 ADD MSTORE DUP2 MLOAD SWAP1 PUSH2 0x1F24 DUP3 PUSH2 0xEBD JUMP JUMPDEST DUP7 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x160 DUP8 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 AND PUSH2 0x180 DUP8 ADD MSTORE PUSH1 0x60 DUP3 ADD MLOAD AND PUSH2 0x1A0 DUP7 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x1C0 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x1E0 DUP7 ADD MSTORE ADD MLOAD PUSH1 0xE0 PUSH2 0x200 DUP6 ADD MSTORE PUSH2 0x220 DUP5 ADD SWAP1 PUSH2 0x101F JUMP JUMPDEST DUP5 MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD PUSH2 0x100 DUP4 ADD MSTORE JUMP JUMPDEST PUSH2 0x120 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0xC0 PUSH0 PUSH2 0x1FC9 CALLDATASIZE PUSH2 0x157C JUMP JUMPDEST SWAP1 PUSH1 0x40 SWAP3 DUP4 MLOAD PUSH2 0x1FD8 DUP2 PUSH2 0x853 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP7 DUP3 DUP3 ADD MSTORE DUP7 DUP7 DUP3 ADD MSTORE PUSH1 0x60 SWAP8 DUP2 DUP9 DUP11 DUP1 SWAP5 ADD MSTORE DUP9 PUSH1 0x80 DUP3 ADD MSTORE DUP9 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE PUSH2 0x2008 PUSH2 0x5769 JUMP JUMPDEST POP PUSH2 0x2011 PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x201D DUP5 DUP5 DUP5 PUSH2 0x7C45 JUMP JUMPDEST SWAP5 PUSH2 0x2026 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x202E PUSH2 0x5980 JUMP JUMPDEST SWAP2 DUP4 MLOAD PUSH2 0x203A DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2043 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x23F4 JUMPI JUMPDEST DUP1 DUP8 ADD PUSH2 0x2056 DUP2 MLOAD PUSH2 0xAD93 JUMP JUMPDEST DUP2 PUSH2 0x20B6 DUP2 DUP8 ADD SWAP10 PUSH2 0x2081 PUSH2 0x2075 PUSH2 0x2075 DUP14 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP7 MLOAD SWAP13 DUP14 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x168F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP9 DUP10 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP10 PUSH2 0x23D5 JUMPI JUMPDEST POP DUP9 PUSH2 0x20D3 DUP2 PUSH2 0xAD93 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x20DE DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x20E7 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x235B JUMPI POP DUP3 DUP7 ADD MLOAD SWAP1 MSTORE PUSH2 0x212B PUSH1 0xC0 DUP8 ADD MLOAD PUSH2 0x2124 PUSH2 0x211E PUSH2 0x210F DUP6 DUP11 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP12 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xBE9E JUMP JUMPDEST SWAP1 DUP11 PUSH2 0xB663 JUMP JUMPDEST SWAP7 PUSH1 0x80 DUP6 ADD MLOAD SWAP4 DUP9 SWAP5 SWAP11 PUSH1 0xA0 DUP8 ADD MLOAD DUP1 DUP12 LT PUSH2 0x2328 JUMPI POP SWAP1 DUP6 SWAP2 JUMPDEST DUP13 DUP7 DUP10 ADD SWAP5 DUP2 DUP7 MLOAD PUSH2 0x215E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2168 SWAP2 PUSH2 0x9606 JUMP JUMPDEST DUP3 DUP11 ADD SWAP7 DUP6 DUP9 MLOAD PUSH2 0x217F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x2189 SWAP2 PUSH2 0x785E JUMP JUMPDEST DUP12 DUP14 DUP7 MLOAD DUP5 MLOAD PUSH2 0x219F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MLOAD SWAP2 PUSH2 0x21B7 SWAP4 DUP6 PUSH2 0xAE28 JUMP JUMPDEST SWAP4 SWAP1 DUP13 DUP3 DUP11 ADD SWAP10 ADD SWAP5 DUP6 MSTORE DUP9 MSTORE DUP3 MLOAD DUP8 DUP4 ADD SWAP5 DUP8 DUP3 DUP8 MLOAD SWAP1 PUSH2 0x21D8 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x21E3 SWAP2 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x21EE SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x21F8 SWAP2 DUP5 PUSH2 0xB55F JUMP JUMPDEST DUP3 ADD SWAP3 DUP4 MLOAD DUP10 DUP2 DUP4 MLOAD SWAP1 PUSH2 0x220B SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2216 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x2220 SWAP2 DUP5 PUSH2 0xB55F JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP3 DUP2 MLOAD DUP2 MLOAD PUSH2 0x2246 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0x80 ADD SWAP3 DUP4 MLOAD DUP3 MLOAD PUSH2 0x2259 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x2263 SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x2277 SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x2284 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x2292 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x229C SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x22AF SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP5 MLOAD SWAP6 MLOAD SWAP2 DUP11 ADD MLOAD SWAP3 MLOAD DUP8 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 PUSH2 0x231A PUSH2 0x77E8 JUMP JUMPDEST MLOAD SWAP7 DUP8 SWAP7 PUSH2 0x1118 SWAP7 DUP9 PUSH2 0x1EEB JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP12 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH0 REVERT JUMPDEST SWAP1 POP PUSH2 0x238A SWAP2 SWAP9 POP PUSH2 0x2381 DUP11 DUP8 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0xBE7E JUMP JUMPDEST SWAP1 DUP2 DUP6 MSTORE PUSH2 0x6A07 JUMP JUMPDEST SWAP7 PUSH2 0x23B7 PUSH2 0x239E PUSH1 0xC0 DUP9 ADD MLOAD DUP8 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x23AF PUSH1 0xA0 DUP10 ADD MLOAD DUP9 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 DUP11 PUSH2 0xB54B JUMP JUMPDEST SWAP7 PUSH1 0x80 DUP6 ADD MLOAD SWAP4 DUP9 SWAP11 PUSH1 0xA0 DUP8 ADD MLOAD DUP1 DUP12 GT PUSH2 0x2328 JUMPI POP SWAP1 DUP6 SWAP2 PUSH2 0x2146 JUMP JUMPDEST PUSH2 0x23ED SWAP2 SWAP10 POP DUP3 RETURNDATASIZE DUP5 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x20C8 JUMP JUMPDEST DUP1 DUP8 ADD PUSH2 0x2413 PUSH2 0x2409 DUP3 MLOAD DUP13 DUP10 ADD MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST DUP1 DUP7 MSTORE DUP3 MLOAD PUSH2 0x55E5 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x2049 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x243C DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0xB DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x8EB8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x4 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP3 PUSH2 0x2483 SWAP2 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP3 PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI DUP4 PUSH2 0xE79 SWAP2 PUSH1 0x4 ADD PUSH2 0x1BD1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x24BA PUSH2 0x24AC CALLDATASIZE PUSH2 0x2456 JUMP JUMPDEST SWAP2 PUSH2 0x24B5 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x8219 JUMP JUMPDEST POP POP POP POP PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x2508 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0x11C8 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x8F8A JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x2551 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x14F6 JUMP JUMPDEST PUSH2 0x2559 PUSH2 0x780D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2571 DUP2 DUP4 MLOAD AND PUSH2 0x7E19 JUMP JUMPDEST PUSH2 0x2585 PUSH2 0x1CCB DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MLOAD ISZERO PUSH2 0x278E JUMPI PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x25B5 PUSH2 0x2075 PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 AND EQ PUSH2 0x2766 JUMPI PUSH2 0x25D0 PUSH2 0x1CE4 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x25DB DUP4 DUP3 PUSH2 0x8FFD JUMP JUMPDEST SWAP1 PUSH2 0x25E7 DUP5 DUP4 DUP4 PUSH2 0x7C45 JUMP JUMPDEST DUP5 MLOAD PUSH1 0xC SHR PUSH1 0x1 AND PUSH2 0x26EB JUMPI JUMPDEST DUP5 MLOAD PUSH2 0x260E SWAP2 SWAP1 PUSH1 0xB SHR PUSH1 0x1 AND PUSH2 0x26AA JUMPI JUMPDEST DUP6 DUP5 DUP5 PUSH2 0x8AAD JUMP JUMPDEST SWAP7 SWAP2 SWAP7 SWAP5 SWAP1 SWAP7 DUP4 SWAP7 PUSH2 0x2625 DUP5 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xD SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x2675 JUMPI JUMPDEST POP POP POP POP POP MLOAD PUSH2 0x2639 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2642 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2669 JUMPI POP PUSH2 0x1118 DUP2 JUMPDEST PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 POP PUSH2 0x1118 DUP2 SWAP3 PUSH2 0x264C JUMP JUMPDEST DUP6 SWAP8 POP SWAP1 PUSH2 0x2694 PUSH2 0x1DA2 PUSH2 0x1D8B PUSH2 0x269F SWAP9 SWAP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD SWAP2 CALLER SWAP3 PUSH2 0x937D JUMP JUMPDEST SWAP2 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x262A JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26E4 PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MLOAD PUSH2 0x26DD PUSH2 0x1DA2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 DUP6 PUSH2 0x91D2 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x2606 JUMP JUMPDEST PUSH2 0x2724 SWAP1 PUSH2 0x2700 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x271E PUSH2 0x1DA2 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0x9062 JUMP JUMPDEST PUSH2 0x2741 PUSH2 0x273B PUSH2 0x19D3 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP6 PUSH2 0x8052 JUMP JUMPDEST PUSH2 0x274C DUP3 DUP6 DUP4 PUSH2 0x911B JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x260E PUSH2 0x275F DUP6 DUP5 DUP5 PUSH2 0x7C45 JUMP JUMPDEST SWAP1 POP PUSH2 0x25F4 JUMP JUMPDEST PUSH32 0xA54B181D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x57A456B700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD DUP1 PUSH2 0x27D1 JUMPI STOP JUMPDEST PUSH2 0x7A2 SWAP1 PUSH2 0xAD93 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x27F7 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x27FF PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD SWAP2 PUSH32 0x15AFD40900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1118 SWAP2 PUSH0 SWAP2 PUSH2 0x285E JUMPI JUMPDEST POP PUSH2 0x1454 PUSH2 0x77E8 JUMP JUMPDEST PUSH2 0x2877 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x2855 JUMP JUMPDEST SWAP1 PUSH1 0x40 PUSH1 0x3 NOT DUP4 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x2896 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP2 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x28C4 CALLDATASIZE PUSH2 0x287D JUMP JUMPDEST SWAP1 PUSH2 0x28CF DUP3 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP2 PUSH2 0x28D8 PUSH2 0x5980 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x2923 JUMPI DUP1 PUSH2 0x291D PUSH2 0x2904 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x290E DUP4 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD PUSH2 0x28DB JUMP JUMPDEST DUP5 DUP3 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH2 0x2958 PUSH2 0x6884 JUMP JUMPDEST SWAP4 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH0 DUP1 SWAP5 PUSH2 0x1BA1 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xD396A66600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x599E JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x29B4 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xDA1 DUP2 PUSH2 0xA96 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x29D7 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE DUP3 SLOAD AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x2A27 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0xDA1 DUP2 PUSH2 0x6AB JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x2A82 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x2A60 CALLDATASIZE PUSH2 0x2A0F JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x3 NOT PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x81E JUMPI PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATALOAD PUSH2 0x2AC1 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH2 0x2ACF DUP2 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH2 0x2AE0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x2B06 CALLDATASIZE PUSH2 0x2A8C JUMP JUMPDEST PUSH2 0x2B0E PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD SWAP2 PUSH32 0x43583BE500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP1 MLOAD PUSH2 0x2B42 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x2B55 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x64 DUP5 ADD MSTORE ADD MLOAD PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x60 DUP2 PUSH1 0xA4 DUP2 PUSH0 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x2BA6 JUMPI JUMPDEST POP PUSH2 0x1118 SWAP1 PUSH2 0x264C PUSH2 0x77E8 JUMP JUMPDEST SWAP1 POP PUSH2 0x1118 SWAP3 POP PUSH2 0x2BCF SWAP2 POP PUSH1 0x60 RETURNDATASIZE PUSH1 0x60 GT PUSH2 0x2BD6 JUMPI JUMPDEST PUSH2 0x2BC7 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5A2B JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x2B99 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2BBD JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x2C02 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xD PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x2C3C DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP2 PUSH2 0x2C5E DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x2C76 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP9 DUP3 PUSH2 0x1890 JUMP JUMPDEST DUP1 PUSH1 0x1 SWAP2 PUSH0 MSTORE DUP4 DUP4 MSTORE PUSH2 0x2C8C DUP6 PUSH0 KECCAK256 SLOAD PUSH1 0x80 SHR SWAP1 JUMP JUMPDEST PUSH2 0x2C96 DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x2C61 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2CBD DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x2CC8 PUSH1 0x24 CALLDATALOAD PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH2 0xABF6 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x2D2C PUSH1 0x4 CALLDATALOAD PUSH2 0x2CF0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x2D44 CALLDATASIZE PUSH2 0x2A8C JUMP JUMPDEST PUSH2 0x2D4C PUSH2 0x780D JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x2 SHR PUSH1 0x1 AND PUSH2 0x3062 JUMPI PUSH1 0x40 SWAP1 DUP2 DUP2 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 MLOAD AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 DUP4 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x3036 JUMPI PUSH1 0x4 SWAP5 POP PUSH2 0x2D8D PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x20 PUSH2 0x2DA3 PUSH2 0x2075 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP5 MLOAD SWAP7 DUP8 DUP1 SWAP3 PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH1 0x80 SWAP6 PUSH0 SWAP2 PUSH2 0x3007 JUMPI JUMPDEST POP AND PUSH2 0x2DFA DUP2 PUSH2 0x2DF5 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x9612 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x2E16 PUSH1 0x60 DUP7 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x9668 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x2E26 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2E2F DUP2 PUSH2 0xEBD JUMP JUMPDEST SUB PUSH2 0x2F9C JUMPI PUSH2 0x2E57 SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x2E44 DUP4 PUSH2 0xEBD JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0xA353 JUMP JUMPDEST PUSH32 0xEEB740C90BF2B18C9532EB7D473137767036D893DFF3E009F32718F821B2A4C0 DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x2EB4 PUSH2 0x2E97 PUSH2 0x2075 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP10 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP1 LOG2 JUMPDEST DUP1 MLOAD PUSH2 0x2EC3 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2ECC DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x2F4D JUMPI ADD MLOAD DUP1 DUP5 LT PUSH2 0x2F1D JUMPI POP MLOAD PUSH2 0x1118 SWAP2 DUP4 SWAP2 PUSH2 0x2EFA SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9668 JUMP JUMPDEST PUSH2 0x9668 JUMP JUMPDEST PUSH2 0x2F02 PUSH2 0x77E8 JUMP JUMPDEST MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 PUSH1 0x60 DUP3 ADD SWAP6 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST ADD MLOAD DUP1 DUP6 GT PUSH2 0x2F6C JUMPI POP SWAP2 PUSH2 0x1118 SWAP2 PUSH2 0x2EFA PUSH2 0x2EF5 SWAP5 DUP7 SWAP6 DUP7 SWAP2 PUSH2 0x28F7 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP6 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0x2FBF SWAP2 DUP6 MLOAD SWAP2 PUSH2 0x2FAC DUP4 PUSH2 0xEBD JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 MLOAD SWAP3 PUSH2 0x9BAF JUMP JUMPDEST PUSH32 0x3771D13C67011E31E12031C54BB59B0BF544A80B81D280A3711E172AA8B7F47B DUP3 SWAP7 SWAP3 SWAP8 SWAP4 SWAP8 SWAP7 DUP9 PUSH2 0x2FFF PUSH2 0x2E97 PUSH2 0x2075 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SUB SWAP1 LOG2 PUSH2 0x2EB8 JUMP JUMPDEST PUSH2 0x3029 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI JUMPDEST PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x5A46 JUMP JUMPDEST PUSH0 PUSH2 0x2DDE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3017 JUMP JUMPDEST DUP5 PUSH32 0x85F4129900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xF27DF0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x30DD PUSH2 0x30FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x30A6 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP5 SWAP2 SWAP3 SWAP1 SWAP3 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH2 0x30D3 DUP4 PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR SWAP1 PUSH2 0x7032 JUMP JUMPDEST SWAP3 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x3113 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 PUSH2 0xA678 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH2 0xDA1 SWAP3 DUP2 DUP2 MSTORE ADD SWAP1 PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x24 DUP4 DUP4 ADD ADD GT PUSH2 0x6BC JUMPI PUSH2 0x1118 SWAP2 PUSH1 0x24 PUSH2 0x3181 SWAP3 ADD PUSH2 0x5A5B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x3119 JUMP JUMPDEST PUSH2 0x31A3 PUSH2 0xDA1 SWAP5 SWAP3 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x31E7 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xDA4 JUMP JUMPDEST PUSH2 0x31EF PUSH2 0x780D JUMP JUMPDEST PUSH2 0x3202 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND PUSH2 0x7E19 JUMP JUMPDEST PUSH2 0x3216 PUSH2 0x1CCB DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3273 PUSH32 0x0 TLOAD PUSH2 0x324C DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0xA7D7 JUMP JUMPDEST PUSH2 0x328C PUSH2 0x3287 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7587 JUMP JUMPDEST PUSH2 0x32DF PUSH1 0x20 DUP3 ADD MLOAD MLOAD PUSH2 0x32A6 PUSH1 0x40 DUP6 ADD SWAP2 DUP3 MLOAD MLOAD SWAP1 PUSH2 0x7E72 JUMP JUMPDEST DUP1 MLOAD PUSH1 0xC0 DUP5 ADD SWAP1 PUSH2 0x32C0 DUP3 MLOAD SWAP2 PUSH1 0xA0 DUP8 ADD SWAP3 DUP4 MLOAD SWAP2 PUSH2 0xA7F0 JUMP JUMPDEST SWAP3 PUSH2 0x32D0 DUP7 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xE SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x3343 JUMPI JUMPDEST POP POP POP DUP4 DUP4 PUSH2 0x6A3F JUMP JUMPDEST SWAP2 SWAP1 SWAP5 SWAP3 SWAP4 DUP5 SWAP4 DUP7 PUSH2 0x32F6 DUP4 MLOAD PUSH1 0x1 SWAP1 PUSH1 0xF SHR AND SWAP1 JUMP JUMPDEST PUSH2 0x330C JUMPI JUMPDEST DUP6 PUSH2 0x1118 DUP7 PUSH1 0x40 MLOAD SWAP4 DUP5 SWAP4 DUP5 PUSH2 0x318D JUMP JUMPDEST PUSH2 0x1118 SWAP6 POP PUSH2 0x3337 SWAP5 SWAP7 PUSH2 0x332D PUSH2 0x1DA2 PUSH2 0x1D8B DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 DUP5 MLOAD CALLER SWAP1 PUSH2 0xA9FC JUMP JUMPDEST SWAP1 POP DUP2 PUSH0 DUP1 DUP1 DUP7 PUSH2 0x32FB JUMP JUMPDEST PUSH2 0x336A PUSH2 0x3392 SWAP5 DUP8 DUP10 PUSH2 0x3363 PUSH2 0x1DA2 PUSH2 0x1D8B DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 CALLER PUSH2 0xA8B7 JUMP JUMPDEST PUSH2 0x3387 PUSH2 0x3381 PUSH2 0x19D3 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP8 PUSH2 0x80F6 JUMP JUMPDEST MLOAD SWAP2 MLOAD SWAP1 MLOAD SWAP2 PUSH2 0xA7F0 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x32D5 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x33BF DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x340C DUP3 PUSH2 0x823 JUMP JUMPDEST DUP2 PUSH1 0x24 CALLDATALOAD PUSH2 0x3419 DUP2 PUSH2 0xA96 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x44 CALLDATALOAD PUSH2 0x3427 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD PUSH2 0x3438 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x84 CALLDATALOAD SWAP2 PUSH2 0x344C DUP4 PUSH2 0xA96 JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH2 0x104 CALLDATALOAD SWAP1 PUSH5 0xFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x6BC JUMPI JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1C0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x3483 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x1A0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 SWAP1 PUSH2 0x34BA PUSH2 0x8BF JUMP JUMPDEST SWAP1 PUSH2 0x34C4 CALLDATASIZE PUSH2 0x33D5 JUMP JUMPDEST DUP3 MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x34E6 PUSH2 0x3450 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x34F3 PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x3500 PUSH2 0xAA0 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x350D PUSH2 0xAAE JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x351A PUSH2 0xABC JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x3528 PUSH2 0xACA JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x5B28 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3549 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD DUP3 SLOAD AND SWAP1 PUSH1 0x1 SHL OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0x0 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x35F0 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x3609 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH2 0x3613 DUP3 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3698 JUMPI DUP1 PUSH2 0x3632 PUSH2 0x2904 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP9 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x365D PUSH2 0x3642 PUSH2 0x28F7 DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST DUP5 PUSH2 0x364D DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x366D PUSH2 0x2075 PUSH2 0x28F7 DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x368F JUMPI PUSH2 0x3689 PUSH0 JUMPDEST PUSH1 0x20 PUSH2 0x3682 DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD PUSH2 0x5DB4 JUMP JUMPDEST ADD PUSH2 0x3616 JUMP JUMPDEST PUSH2 0x3689 DUP3 PUSH2 0x3676 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 DUP1 PUSH2 0x36CE DUP10 PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x1118 SWAP2 PUSH0 SWAP2 PUSH2 0x371A JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E8A JUMP JUMPDEST PUSH2 0x3736 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x372E DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x57DB JUMP JUMPDEST DUP3 PUSH2 0x370D JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x3756 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x3764 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x378D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x379B DUP2 PUSH2 0xA96 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x377F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x37D8 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 DUP2 DUP4 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD PUSH2 0x37FD DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x380B PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x24 PUSH1 0x20 DUP8 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x387F JUMPI POP POP POP POP PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x384E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH2 0x1118 SWAP4 PUSH2 0x386D PUSH2 0x3873 SWAP5 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x373C JUMP JUMPDEST SWAP3 PUSH2 0x5DC7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1E8A JUMP JUMPDEST DUP4 DUP1 SWAP2 DUP4 CALLDATALOAD PUSH2 0x388D DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x382B JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x38B8 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x7E19 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x38DA DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD PUSH1 0x7 SLOAD AND SWAP1 PUSH1 0x1 SHL OR PUSH1 0x7 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH0 PUSH32 0x0 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x30DD PUSH2 0x30FF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x395C CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP5 SWAP2 SWAP3 SWAP1 SWAP3 AND SWAP4 DUP5 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x399A DUP5 PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD AND PUSH2 0x7032 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH32 0x0 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x39F7 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x3A0C DUP4 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x2 PUSH1 0x40 PUSH0 KECCAK256 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x40 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x3A66 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x2CC8 CALLDATASIZE PUSH2 0x3A4E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH32 0x0 TLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3AD0 CALLDATASIZE PUSH2 0x287D JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x81E JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0x81E JUMPI DUP2 SLOAD DUP4 DUP4 SSTORE DUP1 DUP5 LT PUSH2 0x3B4F JUMPI JUMPDEST POP PUSH1 0x20 PUSH2 0x3B21 SWAP2 ADD SWAP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x3B2D JUMPI STOP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH2 0x3B42 DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 ADD SWAP4 DUP2 DUP8 ADD SSTORE ADD PUSH2 0x3B24 JUMP JUMPDEST DUP3 PUSH0 MSTORE DUP4 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x3B6A JUMPI POP PUSH2 0x3B0F JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3B5D JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x3B83 CALLDATASIZE PUSH2 0x287D JUMP JUMPDEST SWAP1 PUSH2 0x3B8C PUSH2 0x6818 JUMP JUMPDEST PUSH2 0x3B94 PUSH2 0x5980 JUMP JUMPDEST SWAP1 PUSH2 0x3BC8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 PUSH2 0x58B3 JUMP JUMPDEST SWAP2 PUSH0 SWAP4 PUSH2 0x3BD3 PUSH2 0x6884 JUMP JUMPDEST SWAP4 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH0 DUP1 SWAP5 PUSH2 0x3C17 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xD396A66600000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x4 DUP7 ADD PUSH2 0x599E JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x3C29 JUMPI POP DUP1 RETURN JUMPDEST PUSH2 0x7A2 SWAP2 POP PUSH2 0x83F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x3C58 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x3 SHR AND ISZERO PUSH2 0x3C72 JUMPI STOP JUMPDEST PUSH32 0xEF029ADF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x3D1D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x3CFB CALLDATASIZE PUSH2 0x2A0F JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0x80 SHR PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x3D4E DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0x11C8 PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xABB6 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x3D74 CALLDATASIZE PUSH2 0x157C JUMP JUMPDEST PUSH2 0x3D7F SWAP3 SWAP2 SWAP3 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x3D8A DUP2 DUP5 DUP5 PUSH2 0x7C45 JUMP JUMPDEST SWAP3 PUSH2 0x3D93 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x3D9B PUSH2 0x5980 JUMP JUMPDEST SWAP1 DUP4 MLOAD PUSH2 0x3DA7 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x3DB0 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x413A JUMPI JUMPDEST PUSH1 0x20 SWAP5 PUSH0 DUP7 DUP3 ADD PUSH2 0x3DC7 DUP2 MLOAD PUSH2 0xAD93 JUMP JUMPDEST DUP8 PUSH2 0x3E1C DUP2 DUP10 ADD SWAP5 PUSH2 0x3DE6 PUSH2 0x2075 PUSH2 0x2075 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP6 DUP7 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x168F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0x411B JUMPI JUMPDEST POP PUSH2 0x3E38 DUP3 PUSH2 0xAD93 JUMP JUMPDEST DUP7 MLOAD PUSH2 0x3E43 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x3E4C DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x40A7 JUMPI SWAP1 PUSH2 0x3E8B SWAP2 PUSH1 0x40 DUP6 ADD MLOAD SWAP1 MSTORE PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x3E85 PUSH2 0x211E PUSH2 0x3E76 DUP12 DUP9 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP11 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP2 PUSH2 0xB663 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP5 DUP3 SWAP6 SWAP3 PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 DUP2 DUP2 LT PUSH2 0x4079 JUMPI POP POP JUMPDEST PUSH1 0x40 DUP8 ADD SWAP7 DUP4 DUP9 MLOAD PUSH2 0x3EBD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3EC7 SWAP2 PUSH2 0x9606 JUMP JUMPDEST PUSH1 0x60 ADD SWAP8 DUP7 DUP10 MLOAD PUSH2 0x3EDE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x3EE8 SWAP2 PUSH2 0x785E JUMP JUMPDEST DUP6 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD SWAP2 PUSH2 0x3F0D SWAP4 DUP7 PUSH2 0xAE28 JUMP JUMPDEST SWAP2 SWAP1 DUP2 DUP9 ADD SWAP8 PUSH1 0x40 ADD SWAP3 DUP4 MSTORE DUP8 MSTORE DUP6 MLOAD PUSH1 0x60 DUP5 ADD SWAP3 DUP7 DUP3 DUP6 MLOAD SWAP1 PUSH2 0x3F30 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3F3B SWAP2 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x3F46 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x3F50 SWAP2 DUP6 PUSH2 0xB55F JUMP JUMPDEST DUP6 ADD SWAP2 DUP3 MLOAD DUP9 DUP2 DUP5 MLOAD SWAP1 PUSH2 0x3F63 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x3F6E SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x3F78 SWAP2 DUP4 PUSH2 0xB55F JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 DUP1 MLOAD DUP8 MLOAD PUSH2 0x3F9E SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x80 ADD SWAP2 DUP3 MLOAD DUP9 MLOAD PUSH2 0x3FB1 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x3FBB SWAP2 PUSH2 0x7032 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x3FCF SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x3FDC SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x3FEA SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x3FF4 SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x4007 SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP5 MLOAD SWAP6 MLOAD PUSH1 0x60 SWAP3 DUP4 ADD MLOAD SWAP4 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP5 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP4 DUP2 AND SWAP3 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 PUSH2 0x4071 PUSH2 0x77E8 JUMP JUMPDEST PUSH2 0x7A2 PUSH2 0x77E8 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH2 0x40D7 PUSH2 0x40FF SWAP2 PUSH2 0x40CE PUSH1 0x60 DUP7 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0xBE7E JUMP JUMPDEST SWAP1 DUP2 DUP8 MSTORE PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x40E7 PUSH1 0xC0 DUP8 ADD MLOAD DUP6 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x40F8 PUSH1 0xA0 DUP9 ADD MLOAD DUP7 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xB54B JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP5 DUP3 PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 DUP2 DUP2 GT PUSH2 0x4079 JUMPI POP POP PUSH2 0x3EA5 JUMP JUMPDEST PUSH2 0x4133 SWAP2 SWAP3 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x3E2E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD PUSH2 0x415B PUSH2 0x4151 DUP3 MLOAD PUSH1 0x60 DUP6 ADD MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST DUP1 DUP6 MSTORE DUP3 MLOAD PUSH2 0x55E5 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x3DB6 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x4187 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH2 0x11C8 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH5 0x174876E800 PUSH1 0x24 CALLDATALOAD DIV SWAP1 PUSH2 0xB692 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x41BF PUSH2 0x7793 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD ISZERO PUSH2 0x6BC JUMPI PUSH0 SWAP1 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x420E DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0xB DUP4 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0xACB9 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x425C PUSH2 0x1118 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST PUSH2 0x42F5 PUSH1 0x24 CALLDATALOAD PUSH1 0x44 CALLDATALOAD PUSH2 0x426E DUP2 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH2 0x427A PUSH2 0x5478 JUMP JUMPDEST POP DUP3 PUSH2 0x428A DUP4 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x4294 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x4302 JUMPI PUSH1 0x2 SWAP2 JUMPDEST PUSH2 0x42EE PUSH1 0xC0 DUP7 ADD SWAP3 PUSH2 0x42E6 DUP2 PUSH2 0x42B3 DUP2 DUP8 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP6 PUSH2 0x42D1 PUSH1 0xA0 DUP12 ADD SWAP8 PUSH2 0x42C8 DUP5 DUP11 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 DUP9 DUP12 PUSH2 0xC52A JUMP JUMPDEST PUSH2 0x42DF DUP4 PUSH1 0x80 DUP14 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0xC52A JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP2 PUSH2 0x429C JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x432A DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x433F DUP4 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x80 SWAP2 ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4396 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD PUSH2 0x43A3 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x43BF CALLDATASIZE PUSH2 0x437E JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xAD4E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x43D6 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x43E0 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x43E8 PUSH2 0x780D JUMP JUMPDEST PUSH2 0x43FA PUSH2 0x43F4 DUP4 PUSH2 0xB8A2 JUMP JUMPDEST DUP3 PUSH2 0xABF6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP4 DUP4 DUP6 SUB SWAP5 DUP6 GT PUSH2 0x449E JUMPI SWAP4 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP1 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 MSTORE PUSH2 0x4479 SWAP2 SWAP1 PUSH2 0x4474 PUSH1 0x64 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH2 0xC22F JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x55AA JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0x44C3 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x785E JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0x0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH1 0x4 CALLDATALOAD PUSH2 0xAD93 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x4533 CALLDATASIZE PUSH2 0x437E JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0xADE3 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x780D JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x4576 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x5F52 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 DUP1 CALLDATALOAD PUSH2 0x45E0 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4602 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x461B SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xB4F JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x7A2 JUMPI DUP1 PUSH2 0x463F PUSH1 0x1 SWAP3 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP4 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP7 DUP3 MSTORE PUSH1 0x40 SWAP1 PUSH2 0x4675 DUP11 DUP9 PUSH2 0x465E DUP8 DUP7 PUSH0 KECCAK256 SWAP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 PUSH1 0xFF PUSH22 0xFF000000000000000000000000000000000000000000 DUP5 MLOAD SWAP6 PUSH2 0x46BC DUP8 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x46C5 DUP8 PUSH2 0xEBD JUMP JUMPDEST PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP9 SLOAD SWAP6 DUP8 ADD MLOAD PUSH1 0x8 SHL AND SWAP6 ADD MLOAD ISZERO ISZERO PUSH1 0xA8 SHL AND SWAP5 AND SWAP2 AND OR OR OR SWAP1 SSTORE ADD PUSH2 0x4629 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x471F DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x60F9 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0xA0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x475C PUSH2 0x4782 SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH2 0x4768 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP1 PUSH2 0x4775 DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD SWAP3 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0xAE28 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x14EB PUSH2 0x47A5 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP2 CALLER PUSH2 0x7A79 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x180 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x47CA DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x160 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x7A2 SWAP1 PUSH2 0x4801 PUSH2 0x8E0 JUMP JUMPDEST SWAP1 PUSH2 0x480A PUSH2 0xAD8 JUMP JUMPDEST DUP3 MSTORE PUSH2 0x4814 PUSH2 0xAE5 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4821 PUSH2 0xAF2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x482E PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x483B PUSH2 0xB0C JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x4848 PUSH2 0xB19 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x4855 PUSH2 0xB26 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x4862 PUSH2 0xB33 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x486F PUSH2 0xB41 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x487D PUSH2 0xAA0 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MSTORE PUSH2 0x488B PUSH2 0x6CD JUMP JUMPDEST PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x6176 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x48AC CALLDATASIZE PUSH2 0x2A0F JUMP JUMPDEST SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND ISZERO PUSH2 0x4905 JUMPI PUSH2 0x48F2 SWAP1 PUSH2 0x48E5 SWAP3 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH2 0x48EC PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP3 PUSH2 0x569A JUMP JUMPDEST SUB DUP5 PUSH2 0x86F JUMP JUMPDEST DUP3 PUSH2 0xAF4C JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE RETURN JUMPDEST POP PUSH32 0x9E51BD5C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x4947 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP2 AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB DUP3 SLOAD AND SWAP1 PUSH1 0x2 SHL OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x49A5 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x6427 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH2 0x6BC JUMPI STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4A03 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B5CAD2BEF000 DUP3 GT PUSH2 0x4A3D JUMPI PUSH5 0x174876E800 PUSH2 0x11C8 SWAP3 DIV SWAP1 PUSH2 0xB692 JUMP JUMPDEST PUSH32 0x746E594000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x4A73 CALLDATASIZE PUSH2 0x6DB JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x4A7D PUSH2 0x7793 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH32 0xAE63932900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND PUSH1 0x4 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x64 DUP2 DUP4 ADDRESS GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x4AFE JUMPI PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE STOP JUMPDEST PUSH2 0x4B07 SWAP1 PUSH2 0x83F JUMP JUMPDEST PUSH0 PUSH2 0x4479 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x7A2 PUSH2 0x4B1E CALLDATASIZE PUSH2 0x3A4E JUMP JUMPDEST SWAP1 PUSH32 0x0 PUSH2 0xAFB2 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH2 0x1163 PUSH1 0x4 CALLDATALOAD PUSH2 0x4B67 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x652F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TLOAD PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x4BD3 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4C04 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4C24 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xC56 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x44 CALLDATALOAD SWAP2 PUSH2 0x4C3A DUP4 PUSH2 0xA81 JUMP JUMPDEST PUSH2 0x4C42 PUSH2 0x5478 JUMP JUMPDEST POP AND PUSH0 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH1 0x20 DUP6 ADD MLOAD MLOAD SWAP4 PUSH0 PUSH1 0x40 DUP8 ADD PUSH1 0xA0 DUP9 ADD SWAP2 JUMPDEST DUP8 DUP2 LT PUSH2 0x4C7A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x1118 DUP12 DUP3 PUSH2 0x1289 JUMP JUMPDEST DUP1 PUSH2 0x4C91 PUSH2 0x4C8B PUSH1 0x1 SWAP4 DUP6 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x4C9C DUP3 DUP7 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP1 PUSH0 MSTORE DUP6 DUP6 MSTORE PUSH2 0x4CC4 DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 PUSH0 KECCAK256 SLOAD AND DUP4 DUP14 PUSH2 0xB5EF JUMP JUMPDEST ADD PUSH2 0x4C65 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4CE7 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4D08 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4D20 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST SWAP2 PUSH1 0x64 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x4D41 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xBF6 JUMP JUMPDEST SWAP4 PUSH2 0x4D4F DUP4 MLOAD DUP6 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST PUSH2 0x4D5C DUP4 MLOAD DUP7 MLOAD EQ PUSH2 0x56DE JUMP JUMPDEST AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 PUSH1 0x40 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4DA7 JUMPI DUP1 PUSH2 0x4D97 PUSH2 0x4D8C PUSH1 0x1 SWAP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 DUP13 PUSH2 0x5659 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP6 DUP9 MSTORE DUP7 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x4D73 JUMP JUMPDEST PUSH2 0x7A2 DUP3 DUP9 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x5EB7 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x4DDA DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x4E07 DUP4 PUSH2 0x922 JUMP JUMPDEST SWAP3 PUSH2 0x4E15 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x86F JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x20 SWAP1 PUSH1 0x24 PUSH1 0x20 DUP7 ADD SWAP2 PUSH1 0x7 SHL DUP5 ADD ADD SWAP3 CALLDATASIZE DUP5 GT PUSH2 0x6BC JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x4E46 JUMPI PUSH2 0x7A2 DUP7 DUP7 PUSH2 0x65A7 JUMP JUMPDEST PUSH1 0x80 DUP3 CALLDATASIZE SUB SLT PUSH2 0x6BC JUMPI DUP3 PUSH1 0x80 SWAP2 DUP9 MLOAD PUSH2 0x4E5F DUP2 PUSH2 0x823 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4E6A DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP6 ADD CALLDATALOAD PUSH2 0x4E79 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP10 DUP6 ADD CALLDATALOAD PUSH2 0x4E8A DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP7 ADD CALLDATALOAD SWAP1 PUSH2 0x4E9E DUP3 PUSH2 0xA96 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x4E35 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x1118 PUSH2 0x4EDA PUSH2 0x4EC0 CALLDATASIZE PUSH2 0x1264 JUMP JUMPDEST SWAP1 PUSH2 0x4EC9 PUSH2 0x5478 JUMP JUMPDEST POP PUSH2 0x4ED2 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x12C0 PUSH2 0x5478 JUMP JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x4F36 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 PUSH0 KECCAK256 SSTORE PUSH0 DUP1 RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x4F57 CALLDATASIZE PUSH2 0x299C JUMP JUMPDEST SWAP1 PUSH32 0x0 TLOAD PUSH0 MSTORE PUSH32 0x0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE STOP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH2 0x4FE2 PUSH1 0x4 CALLDATALOAD PUSH2 0x4FD1 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0x4FD9 PUSH2 0x5980 JUMP JUMPDEST POP PUSH2 0x7D0 PUSH2 0x6818 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD SWAP1 PUSH2 0x4FF4 DUP3 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x1 DUP2 AND ISZERO ISZERO SWAP2 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH1 0x20 DUP4 ADD SWAP3 DUP3 DUP6 DUP2 SHR AND ISZERO ISZERO DUP5 MSTORE ADD SWAP3 PUSH1 0x2 SHR AND ISZERO ISZERO DUP3 MSTORE PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE MLOAD ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x5066 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x507F SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST SWAP3 PUSH1 0x44 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x5098 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x373C JUMP JUMPDEST PUSH2 0x50A2 DUP4 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x5145 JUMPI DUP1 PUSH2 0x50CB PUSH2 0x50C1 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP10 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x290E DUP4 DUP11 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x50E7 PUSH2 0x50DB PUSH2 0x28F7 DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x40 PUSH2 0x364D DUP5 DUP12 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x50F7 PUSH2 0x2075 PUSH2 0x28F7 DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x513C JUMPI PUSH2 0x510C PUSH0 JUMPDEST PUSH1 0x20 PUSH2 0x3682 DUP5 DUP12 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5136 PUSH2 0x5122 PUSH2 0x511C DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP7 PUSH2 0x512D DUP5 DUP12 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST ADD PUSH2 0x50A5 JUMP JUMPDEST PUSH2 0x510C DUP3 PUSH2 0x5100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 DUP2 DUP1 PUSH2 0x36CE DUP11 PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x4 CALLDATALOAD PUSH2 0x51A0 DUP2 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0x1163 PUSH2 0x51ED PUSH1 0x20 SWAP3 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x93A JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x51FA DUP3 PUSH2 0x6AB JUMP JUMPDEST PUSH2 0xAF4C JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x24BA PUSH2 0x5210 CALLDATASIZE PUSH2 0xE34 JUMP JUMPDEST SWAP2 PUSH2 0x5219 PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x6A3F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH2 0x529A PUSH2 0x52AD PUSH2 0x1118 PUSH2 0x10D5 PUSH2 0x52BB PUSH2 0x523B CALLDATASIZE PUSH2 0x2456 JUMP JUMPDEST PUSH2 0x5247 SWAP7 SWAP2 SWAP3 SWAP7 PUSH2 0x5478 JUMP JUMPDEST POP PUSH1 0x40 MLOAD SWAP3 PUSH2 0x527D PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x525E DUP5 DUP4 PUSH2 0x66A9 JUMP JUMPDEST SUB SWAP6 PUSH2 0x5272 PUSH1 0x1F NOT SWAP8 DUP9 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x86F JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 DUP3 DUP11 PUSH2 0x8219 JUMP JUMPDEST SWAP9 SWAP3 SWAP5 SWAP2 SWAP4 SWAP1 SWAP7 PUSH2 0x10CC PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x10C0 PUSH1 0x20 DUP3 ADD SWAP6 DUP7 PUSH2 0x66A9 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP10 ADD MSTORE DUP8 DUP3 SUB PUSH1 0x40 DUP10 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST CALLVALUE PUSH2 0x6BC JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x6BC JUMPI PUSH1 0x4 CALLDATALOAD PUSH2 0x52E6 DUP2 PUSH2 0x6AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x24 CALLDATALOAD SWAP2 PUSH2 0x52FB DUP4 PUSH2 0x6AB JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0xC PUSH1 0x20 MSTORE PUSH2 0x30FF PUSH1 0x44 CALLDATALOAD SWAP2 PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x6BC JUMPI MLOAD PUSH2 0xDA1 DUP2 PUSH2 0xA96 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x5350 PUSH2 0x6818 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x5384 DUP2 PUSH32 0x0 AND SWAP3 PUSH2 0x58B3 JUMP JUMPDEST SWAP3 PUSH2 0x538D PUSH2 0x6884 JUMP JUMPDEST SWAP1 DUP4 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH2 0x53EF SWAP7 PUSH2 0x545A PUSH0 SWAP8 SWAP4 PUSH2 0x5422 DUP10 SWAP6 PUSH4 0xFFFFFFFF PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP12 DUP13 SWAP11 DUP12 SWAP10 PUSH32 0xE0677AB00000000000000000000000000000000000000000000000000000000 DUP12 MSTORE AND PUSH1 0x4 DUP11 ADD MSTORE PUSH2 0x160 PUSH1 0x24 DUP11 ADD MSTORE PUSH2 0x164 DUP10 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP6 AND PUSH1 0x44 DUP8 ADD MSTORE DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x64 DUP9 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 AND PUSH1 0x84 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MLOAD AND PUSH1 0xA4 DUP7 ADD MSTORE JUMP JUMPDEST PUSH1 0xC4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD ISZERO ISZERO PUSH1 0xE4 DUP6 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x104 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x124 DUP6 ADD MSTORE PUSH1 0x60 ADD MLOAD ISZERO ISZERO PUSH2 0x144 DUP5 ADD MSTORE JUMP JUMPDEST SUB SWAP3 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x546B JUMPI POP JUMP JUMPDEST DUP1 PUSH2 0x1BBE PUSH2 0x6CB SWAP3 PUSH2 0x83F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5485 DUP3 PUSH2 0x853 JUMP JUMPDEST DUP2 PUSH0 DUP2 MSTORE PUSH1 0xC0 PUSH1 0x60 SWAP2 DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP3 DUP1 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH1 0x5 GT ISZERO PUSH2 0xEC7 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x5 DUP3 LT ISZERO PUSH2 0xEC7 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x5506 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x5522 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x54B9 JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xC0 PUSH1 0x1F NOT DUP3 DUP6 SUB ADD SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST ISZERO PUSH2 0x553D JUMPI JUMP JUMPDEST PUSH1 0x64 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E70757420706172616D65746572732068617665206368616E676564000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x6BC JUMPI MLOAD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 NOT DUP3 ADD SWAP2 DUP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x55FF DUP3 PUSH2 0x853 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xC0 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x5632 DUP3 PUSH2 0x922 JUMP JUMPDEST PUSH2 0x563F PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x564F DUP3 SWAP5 PUSH2 0x922 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x566D JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP2 SLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 SWAP3 ADD SWAP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP2 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x56BE JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 MSTORE SWAP4 DUP5 ADD SWAP4 PUSH1 0x1 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x56B0 JUMP JUMPDEST ISZERO PUSH2 0x56E5 JUMPI JUMP JUMPDEST PUSH1 0x84 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5661756C744D6F636B3A20544F4B454E535F4C454E4754485F4D49534D415443 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x4800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x5776 DUP3 PUSH2 0x823 JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x5797 DUP3 PUSH2 0x922 JUMP JUMPDEST PUSH2 0x57A4 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0x57B4 DUP3 SWAP5 PUSH2 0x922 JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x57C4 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x57CF PUSH2 0x5769 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x57B8 JUMP JUMPDEST SWAP1 PUSH1 0x20 SWAP2 DUP3 DUP2 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x6BC JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP3 PUSH2 0x5812 DUP5 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH1 0x40 SWAP4 PUSH2 0x5823 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP7 MSTORE DUP3 DUP1 DUP8 ADD SWAP3 PUSH1 0x7 SHL DUP6 ADD ADD SWAP4 DUP2 DUP6 GT PUSH2 0x6BC JUMPI DUP4 ADD SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x584D JUMPI POP POP POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP4 PUSH1 0x80 SWAP2 DUP8 MLOAD PUSH2 0x5866 DUP2 PUSH2 0x823 JUMP JUMPDEST DUP6 MLOAD PUSH2 0x5871 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP2 MSTORE DUP3 DUP7 ADD MLOAD PUSH2 0x5880 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP4 DUP3 ADD MSTORE DUP9 DUP7 ADD MLOAD PUSH2 0x5891 DUP2 PUSH2 0x6AB JUMP JUMPDEST DUP10 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP8 ADD MLOAD SWAP1 PUSH2 0x58A5 DUP3 PUSH2 0xA96 JUMP JUMPDEST DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x583D JUMP JUMPDEST PUSH2 0x58BD DUP2 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x58F3 JUMPI DUP1 PUSH2 0x58ED PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x58E1 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD AND PUSH2 0x290E DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST ADD PUSH2 0x58C0 JUMP JUMPDEST POP POP PUSH0 PUSH2 0x592D SWAP2 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x596C JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x372E DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x598D DUP3 PUSH2 0x802 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST PUSH2 0x59F8 PUSH2 0x59CB PUSH2 0x6CB SWAP6 SWAP8 SWAP7 SWAP5 PUSH1 0xC0 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x140 SWAP2 AND DUP6 MSTORE DUP1 PUSH1 0x20 DUP7 ADD MSTORE DUP5 ADD SWAP1 PUSH2 0x1E1B JUMP JUMPDEST SWAP7 PUSH1 0x40 DUP4 ADD SWAP1 PUSH1 0x40 SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 DUP2 MLOAD AND DUP6 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP7 ADD MSTORE ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MLOAD SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x20 SWAP2 SUB SLT PUSH2 0x6BC JUMPI MLOAD PUSH2 0xDA1 DUP2 PUSH2 0x6AB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x5A9D PUSH2 0x5A97 PUSH32 0x0 SWAP3 DUP4 TLOAD ISZERO SWAP6 DUP7 PUSH2 0x5B1F JUMPI JUMPDEST CALLDATASIZE SWAP2 PUSH2 0xD50 JUMP JUMPDEST CALLER PUSH2 0xC08D JUMP JUMPDEST SWAP3 PUSH2 0x5AA5 JUMPI POP JUMP JUMPDEST PUSH32 0x0 TLOAD PUSH2 0x5AF7 JUMPI PUSH0 SWAP1 TSTORE PUSH2 0x6CB PUSH32 0x0 PUSH2 0xA7C6 JUMP JUMPDEST PUSH32 0x20F1D86D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP6 TSTORE PUSH2 0x5A90 JUMP JUMPDEST SWAP1 PUSH2 0x17D9 DUP2 PUSH1 0x60 PUSH2 0x5D81 PUSH2 0x5D4F PUSH2 0x5D1D PUSH2 0x5CEB PUSH2 0x5CA3 PUSH2 0x5C5F PUSH2 0x5C55 PUSH2 0x5C4A PUSH2 0x5C3F PUSH2 0x5C0C PUSH2 0x5DB1 SWAP14 DUP16 PUSH2 0x120 PUSH2 0x5BD9 PUSH2 0x5BA7 PUSH2 0x5B78 PUSH2 0x5BE1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH1 0xC0 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD SWAP1 PUSH1 0x1 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP3 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 SWAP1 PUSH1 0x3 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP13 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB SWAP1 PUSH1 0x2 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MLOAD SWAP1 PUSH2 0x8F8A JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD SWAP1 PUSH2 0xABA5 JUMP JUMPDEST DUP8 DUP10 ADD MLOAD SWAP1 PUSH2 0xABB6 JUMP JUMPDEST PUSH1 0x80 DUP9 ADD MLOAD PUSH1 0x5A SHL PUSH17 0x3FFFFFFFFFC0000000000000000000000 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000003FFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MLOAD PUSH1 0x82 SHL PUSH21 0x3FFFFFFFC00000000000000000000000000000000 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFC00000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP5 DUP6 MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF SWAP1 PUSH1 0x4 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF SWAP1 PUSH1 0x5 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF SWAP1 PUSH1 0x6 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SWAP2 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F SWAP1 PUSH1 0x7 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST SSTORE JUMP JUMPDEST PUSH2 0x161E DUP3 PUSH2 0xEBD JUMP JUMPDEST MLOAD PUSH2 0xDA1 DUP2 PUSH2 0xEBD JUMP JUMPDEST SWAP2 SWAP1 SWAP4 SWAP3 SWAP4 PUSH2 0x5DD6 DUP4 MLOAD PUSH2 0x578D JUMP JUMPDEST SWAP3 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x5E48 JUMPI DUP1 PUSH2 0x5DF5 PUSH2 0x2904 PUSH2 0x28F7 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5E0A PUSH2 0x3676 PUSH2 0x5E05 DUP4 DUP8 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5DBD JUMP JUMPDEST PUSH2 0x5E26 PUSH2 0x5E1A PUSH2 0x28F7 DUP4 DUP9 PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x40 PUSH2 0x364D DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5E42 PUSH2 0x5E36 PUSH2 0x511C DUP4 DUP12 PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x512D DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST ADD PUSH2 0x5DD9 JUMP JUMPDEST POP POP POP POP PUSH2 0x592D SWAP2 SWAP3 POP PUSH0 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xBB4AD7D500000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x1E8A JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x449E JUMPI JUMP JUMPDEST DUP2 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x81E JUMPI PUSH9 0x10000000000000000 DUP4 GT PUSH2 0x81E JUMPI DUP2 SLOAD DUP4 DUP4 SSTORE DUP1 DUP5 LT PUSH2 0x5F2C JUMPI JUMPDEST POP PUSH2 0x5EF9 PUSH1 0x20 DUP1 SWAP3 ADD SWAP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x5F0A JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP3 PUSH2 0x5F1F DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 ADD SWAP5 DUP2 DUP6 ADD SSTORE ADD PUSH2 0x5EFC JUMP JUMPDEST DUP3 PUSH0 MSTORE DUP4 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x5F47 JUMPI POP PUSH2 0x5EE6 JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5F3A JUMP JUMPDEST SWAP1 DUP1 ISZERO DUP1 ISZERO PUSH2 0x5FDD JUMPI JUMPDEST PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x5FB2 SWAP5 PUSH0 SWAP2 PUSH2 0x5FB8 JUMPI JUMPDEST POP AND PUSH2 0x96E2 JUMP JUMPDEST POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x5FD1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x5FAB JUMP JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP PUSH2 0x6024 PUSH1 0x20 PUSH2 0x5FEC DUP4 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xEF8B30F700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x6047 JUMPI JUMPDEST POP ISZERO PUSH2 0x5F5C JUMP JUMPDEST PUSH2 0x6060 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6040 JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP1 PUSH2 0x6073 DUP3 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x607C DUP3 PUSH2 0xEBD JUMP JUMPDEST DUP3 SLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP3 SWAP1 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 SWAP1 SWAP2 AND PUSH1 0xFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHL PUSH21 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND OR SWAP1 ISZERO ISZERO PUSH1 0xA8 SHL PUSH22 0xFF000000000000000000000000000000000000000000 AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x6152 SWAP5 PUSH0 SWAP2 PUSH2 0x6157 JUMPI JUMPDEST POP AND PUSH2 0x9F91 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH2 0x6170 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x614B JUMP JUMPDEST PUSH2 0x63F4 PUSH2 0x63DC PUSH2 0x2075 PUSH2 0x140 PUSH2 0x6CB SWAP6 PUSH2 0x63B3 PUSH2 0x6380 PUSH2 0x634D PUSH2 0x631B PUSH2 0x62E9 PUSH2 0x62B7 PUSH2 0x6285 PUSH2 0x6253 PUSH2 0x6221 PUSH2 0x61EF DUP16 PUSH2 0x61BF SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP12 MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFF SWAP1 PUSH1 0x9 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP12 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF SWAP1 PUSH1 0x8 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFF SWAP1 PUSH1 0xA SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP10 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF SWAP1 PUSH1 0xB SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP9 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFF SWAP1 PUSH1 0xC SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFF SWAP1 PUSH1 0xD SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xC0 DUP7 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF SWAP1 PUSH1 0xE SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP6 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFF SWAP1 PUSH1 0xF SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x100 DUP5 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFF SWAP1 PUSH1 0x10 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x120 DUP4 ADD MLOAD ISZERO ISZERO PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF SWAP1 PUSH1 0x11 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH2 0x63CD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP3 SLOAD AND OR SWAP1 SSTORE JUMP JUMPDEST SWAP1 DUP1 ISZERO DUP1 ISZERO PUSH2 0x64A6 JUMPI JUMPDEST PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x5FB2 SWAP5 PUSH0 SWAP2 PUSH2 0x6487 JUMPI JUMPDEST POP AND PUSH2 0xA199 JUMP JUMPDEST PUSH2 0x64A0 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6480 JUMP JUMPDEST POP PUSH2 0x64ED PUSH1 0x20 PUSH2 0x64B5 DUP4 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x6510 JUMPI JUMPDEST POP ISZERO PUSH2 0x6431 JUMP JUMPDEST PUSH2 0x6529 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6509 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x5FD7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38D52E0F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 DUP5 PUSH1 0x4 DUP2 DUP6 DUP6 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x6152 SWAP5 PUSH0 SWAP2 PUSH2 0x6588 JUMPI JUMPDEST POP AND PUSH2 0x994C JUMP JUMPDEST PUSH2 0x65A1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x302F JUMPI PUSH2 0x3021 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x6581 JUMP JUMPDEST SWAP2 SWAP1 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x668C JUMPI PUSH1 0x1 SWAP1 PUSH2 0x6686 PUSH1 0x20 PUSH2 0x6633 DUP2 PUSH2 0x65CA DUP6 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD MLOAD SWAP2 PUSH2 0x65D7 DUP4 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 PUSH2 0x662A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH2 0x65EF DUP10 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD MLOAD AND PUSH1 0x60 PUSH2 0x65FF DUP10 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD ADD MLOAD ISZERO ISZERO SWAP4 PUSH2 0x661A DUP5 MLOAD SWAP8 PUSH2 0x6614 DUP10 PUSH2 0x802 JUMP JUMPDEST DUP9 PUSH2 0x5DB4 JUMP JUMPDEST DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP4 ADD SWAP1 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x6681 PUSH2 0x6651 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x666C PUSH2 0x665E DUP7 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0x6066 JUMP JUMPDEST ADD PUSH2 0x65AB JUMP JUMPDEST POP POP SWAP1 POP JUMP JUMPDEST PUSH1 0x4 GT ISZERO PUSH2 0xEC7 JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0xEC7 JUMPI MSTORE JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP2 PUSH1 0x20 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x66F3 PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0xC0 PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xE0 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH2 0x5522 PUSH1 0x80 DUP3 ADD MLOAD DUP4 DUP6 ADD SWAP1 PUSH2 0x669C JUMP JUMPDEST PUSH32 0xF223889600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x6705 JUMPI CALLDATASIZE PUSH0 DUP1 CALLDATACOPY PUSH0 DUP1 CALLDATASIZE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND GAS DELEGATECALL RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY ISZERO PUSH2 0x6773 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x1 DUP2 PUSH1 0x2 SHR AND SWAP1 PUSH4 0xFFFFFFFF DUP1 SWAP2 PUSH2 0x67A3 PUSH1 0x82 SWAP1 JUMP JUMPDEST SHR AND DUP3 PUSH2 0x67DF JUMPI JUMPDEST POP POP PUSH2 0x67B4 JUMPI POP JUMP JUMPDEST PUSH32 0xD971F59700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP PUSH32 0x0 AND ADD DUP2 DUP2 GT PUSH2 0x449E JUMPI AND TIMESTAMP GT ISZERO PUSH0 DUP1 PUSH2 0x67AB JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH32 0x0 AND TIMESTAMP GT ISZERO DUP1 PUSH2 0x6876 JUMPI JUMPDEST PUSH2 0x684E JUMPI JUMP JUMPDEST PUSH32 0xDA9F8B3400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD DUP2 SHR AND PUSH2 0x6848 JUMP JUMPDEST PUSH2 0x688C PUSH2 0x5769 JUMP JUMPDEST POP PUSH2 0x6895 PUSH2 0x5769 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x40 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x68C1 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP4 PUSH2 0x68CF PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x86F JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x6BC JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x68F8 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x68EA JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP1 PUSH2 0x691E DUP3 PUSH2 0xD34 JUMP JUMPDEST SWAP3 PUSH2 0x692C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x6BC JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP4 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP3 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP2 GT PUSH2 0x6BC JUMPI DUP4 PUSH2 0x6978 SWAP2 DUP7 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP2 ADD MLOAD SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x6BC JUMPI DUP2 PUSH2 0x6997 SWAP2 DUP5 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP3 ADD PUSH2 0x6907 JUMP JUMPDEST SWAP4 PUSH2 0x69D8 PUSH2 0x69EB SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xDA1 SWAP9 SWAP7 SWAP5 AND DUP8 MSTORE PUSH1 0xA0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP2 PUSH2 0x6A31 SWAP1 PUSH2 0xDA1 SWAP5 SWAP3 DUP5 MSTORE PUSH1 0x60 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x6A49 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6A53 PUSH2 0x5980 JUMP JUMPDEST SWAP2 PUSH1 0x20 DUP6 ADD PUSH2 0x6A66 DUP2 MLOAD MLOAD DUP1 DUP7 MSTORE PUSH2 0x5628 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD SWAP6 DUP7 MLOAD PUSH2 0x6A76 DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6A7F DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6D5F JUMPI POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x6A93 DUP7 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH2 0x6ACF DUP3 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x6AC9 PUSH2 0x6AB1 DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xB504 JUMP JUMPDEST SWAP10 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 DUP5 LT PUSH2 0x6D2F JUMPI POP PUSH2 0x6AEA DUP4 SWAP10 SWAP9 SWAP10 PUSH2 0x95F5 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD SWAP8 PUSH0 JUMPDEST DUP13 DUP12 MLOAD DUP3 LT ISZERO PUSH2 0x6C4A JUMPI DUP2 PUSH2 0x6B05 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6B0F DUP2 PUSH2 0x95F5 JUMP JUMPDEST PUSH2 0x6B19 DUP3 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6C39 JUMPI PUSH2 0x6B40 SWAP1 DUP14 PUSH2 0x40F8 DUP5 PUSH1 0xA0 PUSH2 0x6B37 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP1 PUSH2 0x6B4B DUP4 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x6B5B PUSH2 0x28F7 DUP4 DUP11 MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x40 DUP11 ADD PUSH2 0x6B6A DUP5 DUP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP4 GT PUSH2 0x6BED JUMPI POP DUP14 DUP4 PUSH2 0x6BE1 DUP15 PUSH2 0x6BD9 DUP16 SWAP7 DUP16 SWAP8 PUSH2 0x6BC4 DUP7 PUSH2 0x6BBC DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x6B99 DUP9 PUSH2 0x6BE7 SWAP16 PUSH2 0x9606 JUMP JUMPDEST PUSH2 0x6BB5 PUSH2 0x6BA6 DUP5 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 DUP14 PUSH2 0xAE28 JUMP JUMPDEST DUP8 MSTORE SWAP3 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x6BD3 DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD SWAP1 PUSH2 0x55E5 JUMP JUMPDEST SWAP2 PUSH2 0xB55F JUMP JUMPDEST ADD PUSH2 0x6AF1 JUMP JUMPDEST SWAP2 PUSH2 0x6BFC DUP5 PUSH2 0x2358 SWAP5 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0x8EDA85E400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP PUSH2 0x6C44 DUP2 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x6B4D JUMP JUMPDEST POP POP SWAP4 SWAP7 SWAP5 POP SWAP7 POP SWAP7 POP SWAP7 PUSH2 0x6C6F SWAP1 PUSH2 0x6C6A DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x7096 JUMP JUMPDEST PUSH32 0xA26A52D8D53702BBA7F137907B8E1F99FF87F6D450144270CA25E72481CCA871 PUSH2 0x6CA1 DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x6CC2 DUP10 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x6CBC DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xA678 JUMP JUMPDEST PUSH2 0x6CF6 PUSH2 0x6AB1 PUSH2 0x6CEA PUSH2 0x6CDC DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x28F7 DUP9 PUSH2 0x54AF JUMP JUMPDEST SWAP3 PUSH2 0x6D1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x6D0C DUP9 PUSH2 0x54AF JUMP JUMPDEST DUP9 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x6A14 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH2 0x6D29 PUSH2 0x77E8 JUMP JUMPDEST SWAP4 SWAP3 SWAP2 SWAP1 JUMP JUMPDEST PUSH32 0x8D261D5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP5 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH1 0x3 DUP8 MLOAD PUSH2 0x6D6C DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6D75 DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6D97 JUMPI PUSH2 0x6D84 DUP9 MLOAD PUSH2 0xB4CF JUMP JUMPDEST PUSH2 0x6D8E DUP2 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH0 SWAP2 SWAP10 PUSH2 0x6AD1 JUMP JUMPDEST SWAP8 PUSH1 0x1 DUP8 MLOAD PUSH2 0x6DA5 DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6DAE DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6E16 JUMPI PUSH2 0x6DBD DUP9 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH2 0x6E0E DUP10 PUSH2 0x6DCF DUP5 PUSH1 0x40 DUP9 ADD MLOAD PUSH2 0xB230 JUMP JUMPDEST PUSH1 0x80 DUP11 ADD MLOAD SWAP1 PUSH2 0x6DE9 PUSH2 0x6AB1 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x6DF3 DUP13 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP2 PUSH2 0x6E08 PUSH2 0x2075 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH2 0xB27F JUMP JUMPDEST SWAP6 SWAP1 SWAP2 PUSH2 0x6AD1 JUMP JUMPDEST SWAP8 SWAP4 PUSH1 0x2 DUP8 MLOAD PUSH2 0x6E25 DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6E2E DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6EAF JUMPI SWAP8 DUP8 SWAP9 PUSH2 0x6E40 DUP10 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP2 PUSH2 0x6E4F DUP8 PUSH2 0xB031 JUMP JUMPDEST PUSH2 0x6EA9 PUSH2 0x6E9F PUSH1 0x40 DUP12 ADD SWAP3 DUP1 DUP5 MSTORE DUP10 DUP12 SWAP16 DUP9 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x6E99 PUSH2 0x2075 PUSH2 0x6E8B PUSH2 0x6E84 PUSH2 0x6AB1 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0xB105 JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x6AD1 JUMP JUMPDEST POP PUSH1 0x4 DUP7 MLOAD PUSH2 0x6EBD DUP2 PUSH2 0x54AF JUMP JUMPDEST PUSH2 0x6EC6 DUP2 PUSH2 0x54AF JUMP JUMPDEST SUB PUSH2 0x6F87 JUMPI PUSH2 0x6ED5 DUP8 MLOAD PUSH2 0xAFC8 JUMP JUMPDEST PUSH0 PUSH2 0x6EED PUSH2 0x2075 PUSH2 0x2075 DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD SWAP1 PUSH1 0x80 DUP11 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP9 ADD MLOAD SWAP9 PUSH2 0x6F3A PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE4C4366300000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x69AE JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH0 SWAP2 PUSH0 SWAP2 PUSH2 0x6F5C JUMPI JUMPDEST POP SWAP1 SWAP6 SWAP2 SWAP10 PUSH2 0x6AD1 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x6F7D SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x6F75 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x694D JUMP JUMPDEST SWAP2 SWAP6 SWAP3 SWAP2 PUSH0 PUSH2 0x6F52 JUMP JUMPDEST PUSH32 0x6C02B39500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP4 SWAP3 PUSH0 SWAP5 PUSH2 0x6FC2 DUP5 PUSH1 0x80 DUP6 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP2 DUP2 GT PUSH2 0x6FD2 JUMPI JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6FFF SWAP6 SWAP7 POP SWAP2 PUSH2 0x6FE7 SWAP2 PUSH2 0x6FF8 SWAP4 SUB PUSH2 0xB641 JUMP JUMPDEST SWAP3 PUSH1 0xA0 PUSH2 0x6B37 DUP3 PUSH1 0xC0 DUP7 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xB663 JUMP JUMPDEST SWAP1 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST PUSH32 0xB4120F1400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 GT SWAP1 DUP2 ISZERO PUSH2 0x708C JUMPI JUMPDEST POP PUSH2 0x7064 JUMPI PUSH1 0x80 SHL SWAP1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x89560CA100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 GT PUSH0 PUSH2 0x704F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 SWAP2 SWAP3 AND PUSH0 MSTORE PUSH1 0x20 PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x70F0 JUMPI SWAP1 PUSH2 0x70E0 PUSH2 0x70D1 DUP3 PUSH1 0x1 SWAP5 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 PUSH1 0x80 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP2 PUSH0 MSTORE DUP4 DUP7 MSTORE DUP5 PUSH0 KECCAK256 SSTORE ADD PUSH2 0x70B3 JUMP JUMPDEST POP POP POP POP POP SWAP1 POP JUMP JUMPDEST SWAP2 PUSH2 0x7102 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 PUSH0 KECCAK256 SWAP2 PUSH0 PUSH1 0x20 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP2 PUSH1 0x4 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 PUSH1 0x3 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP5 DUP6 SLOAD SWAP5 DUP9 MSTORE PUSH2 0x7146 PUSH1 0x20 DUP10 ADD SWAP7 PUSH2 0xB6F3 JUMP JUMPDEST DUP7 MSTORE PUSH2 0x7151 DUP6 PUSH2 0xB70E JUMP JUMPDEST SWAP4 DUP1 DUP10 ADD SWAP5 DUP6 MSTORE PUSH2 0x7161 DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP3 PUSH1 0x60 DUP11 ADD SWAP4 DUP5 MSTORE PUSH2 0x7172 DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x7182 DUP8 DUP12 MLOAD PUSH2 0xC356 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x7190 DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x7347 JUMPI JUMPDEST POP DUP4 PUSH2 0x7335 JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x7212 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x7202 PUSH2 0x71EA PUSH2 0x7209 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xB79B JUMP JUMPDEST SWAP1 PUSH2 0x6CB PUSH2 0x77E8 JUMP JUMPDEST SWAP1 DUP11 DUP11 DUP15 SWAP4 DUP11 PUSH2 0x725D DUP6 PUSH2 0x7249 DUP2 PUSH2 0x723B PUSH2 0x7236 DUP14 PUSH2 0x666C PUSH2 0x28F7 DUP16 DUP7 SWAP1 MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xB75C JUMP JUMPDEST SWAP5 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 MLOAD DUP4 PUSH2 0x7257 DUP4 DUP4 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x5659 JUMP JUMPDEST POP PUSH2 0x7267 DUP2 PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x7272 DUP7 DUP12 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x7291 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP8 DUP6 PUSH2 0xB5EF JUMP JUMPDEST DUP10 ISZERO PUSH2 0x732C JUMPI DUP6 PUSH2 0x72A4 DUP13 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0x730E JUMPI JUMPDEST POP POP PUSH2 0x72BC JUMPI JUMPDEST POP POP POP JUMPDEST ADD PUSH2 0x71B3 JUMP JUMPDEST DUP4 PUSH2 0x72E2 DUP14 DUP3 PUSH2 0x72D7 DUP2 PUSH2 0x72D0 DUP8 MLOAD PUSH2 0xC3B2 JUMP JUMPDEST SWAP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP7 PUSH1 0x80 SHR DUP6 PUSH2 0x6FAF JUMP JUMPDEST SWAP4 DUP5 PUSH2 0x72F0 JUMPI JUMPDEST POP POP PUSH2 0x72B2 JUMP JUMPDEST PUSH2 0x7303 SWAP5 PUSH2 0x72FD SWAP2 PUSH2 0x55E5 JUMP JUMPDEST SWAP2 PUSH2 0xB5EF JUMP JUMPDEST PUSH0 DUP16 DUP12 SWAP1 DUP4 DUP4 PUSH2 0x72E9 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x731B DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x7324 DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP6 PUSH0 PUSH2 0x72AB JUMP JUMPDEST POP POP POP POP PUSH2 0x72B6 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x71B1 JUMP JUMPDEST PUSH2 0x7352 SWAP2 SWAP5 POP PUSH2 0xC3B2 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x71AA JUMP JUMPDEST PUSH2 0x7363 PUSH2 0x5478 JUMP JUMPDEST SWAP1 PUSH2 0x736C PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x73AF PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0xB6F3 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x73BA DUP5 PUSH2 0xB70E JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x73CA DUP6 PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x73DB DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x73EF DUP8 DUP12 MLOAD PUSH2 0xC356 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x73FD DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x7573 JUMPI JUMPDEST POP DUP4 PUSH2 0x7561 JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x745F JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x7202 PUSH2 0x71EA PUSH2 0x7457 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xDA1 PUSH2 0x77E8 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x7493 DUP5 PUSH2 0x7485 DUP2 PUSH2 0x723B PUSH2 0x7236 DUP16 DUP16 PUSH2 0x28F7 DUP6 PUSH2 0x666C SWAP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST SLOAD SWAP5 MLOAD DUP4 PUSH2 0x7257 DUP4 DUP4 PUSH2 0x5659 JUMP JUMPDEST POP PUSH2 0x749D DUP2 PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x74A8 DUP6 DUP14 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x74C6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0xB55F JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x7554 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x7536 JUMPI JUMPDEST POP POP PUSH2 0x74ED JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x7420 JUMP JUMPDEST DUP3 PUSH2 0x7510 SWAP3 PUSH2 0x7507 DUP3 PUSH2 0x7500 DUP9 MLOAD PUSH2 0xC3B2 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP7 SHR DUP6 PUSH2 0x6FAF JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x7520 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x74E1 JUMP JUMPDEST PUSH2 0x752D SWAP4 PUSH2 0x6BE1 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x7517 JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x7543 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x754C DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x74DA JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x74E7 JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x741E JUMP JUMPDEST PUSH2 0x757E SWAP2 SWAP5 POP PUSH2 0xC3B2 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x7417 JUMP JUMPDEST PUSH2 0x758F PUSH2 0x5478 JUMP JUMPDEST SWAP1 PUSH2 0x7598 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 PUSH0 KECCAK256 PUSH0 PUSH1 0x20 MSTORE DUP2 PUSH0 KECCAK256 SLOAD SWAP1 PUSH1 0x4 PUSH1 0x20 MSTORE DUP3 PUSH0 KECCAK256 SWAP1 PUSH1 0x3 PUSH1 0x20 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 DUP5 SLOAD SWAP4 DUP8 MSTORE PUSH2 0x75DB PUSH1 0x20 DUP9 ADD SWAP6 PUSH2 0xB6F3 JUMP JUMPDEST DUP6 MSTORE PUSH2 0x75E6 DUP5 PUSH2 0xB70E JUMP JUMPDEST SWAP2 DUP2 DUP9 ADD SWAP3 DUP4 MSTORE PUSH2 0x75F6 DUP6 PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH1 0x60 DUP10 ADD SWAP3 DUP4 MSTORE PUSH2 0x7607 DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH1 0x80 SWAP6 PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0x761B DUP8 DUP12 MLOAD PUSH2 0xC356 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE PUSH2 0x7629 DUP8 PUSH2 0x5628 JUMP JUMPDEST PUSH1 0xA0 DUP12 ADD SWAP1 DUP2 MSTORE DUP11 MLOAD SWAP2 PUSH1 0x1 SWAP10 PUSH1 0x1 DUP5 DUP2 SHR AND SWAP4 DUP5 PUSH2 0x777F JUMPI JUMPDEST POP DUP4 PUSH2 0x776D JUMPI JUMPDEST PUSH0 JUMPDEST DUP14 DUP12 DUP3 LT PUSH2 0x7683 JUMPI POP POP POP POP POP POP POP POP POP POP POP POP POP DUP1 PUSH2 0x7202 PUSH2 0x71EA PUSH2 0x7457 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 DUP11 DUP14 SWAP3 DUP3 DUP13 DUP13 DUP13 PUSH2 0x76A9 DUP5 PUSH2 0x7485 DUP2 PUSH2 0x723B PUSH2 0x7236 DUP16 DUP16 PUSH2 0x28F7 DUP6 PUSH2 0x666C SWAP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST POP PUSH2 0x76B3 DUP2 PUSH2 0xB99A JUMP JUMPDEST PUSH2 0x76BE DUP6 DUP14 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x76DC PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP6 DUP8 PUSH2 0xB5AC JUMP JUMPDEST DUP8 DUP14 DUP14 ISZERO PUSH2 0x7760 JUMPI DUP3 ADD MLOAD ISZERO ISZERO SWAP2 DUP3 PUSH2 0x7742 JUMPI JUMPDEST POP POP PUSH2 0x7703 JUMPI JUMPDEST POP POP POP POP POP JUMPDEST ADD PUSH2 0x764C JUMP JUMPDEST DUP3 PUSH2 0x7716 SWAP3 PUSH2 0x7507 DUP3 PUSH2 0x7500 DUP9 MLOAD PUSH2 0xC3B2 JUMP JUMPDEST SWAP3 DUP4 PUSH2 0x7726 JUMPI JUMPDEST DUP15 SWAP4 POP DUP13 PUSH2 0x76F7 JUMP JUMPDEST PUSH2 0x7739 SWAP4 PUSH2 0x7733 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST SWAP2 PUSH2 0xB5AC JUMP JUMPDEST PUSH0 DUP16 DUP3 DUP3 PUSH2 0x771D JUMP JUMPDEST SWAP1 SWAP2 POP MLOAD PUSH2 0x774F DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x7758 DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP8 PUSH0 PUSH2 0x76F0 JUMP JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x76FD JUMP JUMPDEST DUP13 MLOAD SWAP1 SWAP4 POP PUSH1 0x3 SHR PUSH1 0x1 AND ISZERO SWAP3 PUSH2 0x764A JUMP JUMPDEST PUSH2 0x778A SWAP2 SWAP5 POP PUSH2 0xC3B2 JUMP JUMPDEST ISZERO ISZERO SWAP3 PUSH0 PUSH2 0x7643 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 DUP1 TLOAD PUSH2 0x77C0 JUMPI PUSH1 0x1 SWAP1 TSTORE JUMP JUMPDEST PUSH32 0x3EE5AEB500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 TSTORE JUMP JUMPDEST PUSH32 0x0 TLOAD ISZERO PUSH2 0x7836 JUMPI JUMP JUMPDEST PUSH32 0xC09BA73600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x7868 SWAP1 PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP2 PUSH0 SUB SWAP1 PUSH2 0xABF6 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP2 PUSH2 0x78AB DUP3 DUP5 DUP7 PUSH2 0xB8F7 JUMP JUMPDEST PUSH0 NOT DUP2 SUB PUSH2 0x78BA JUMPI POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 GT PUSH2 0x7A3E JUMPI SUB SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 DUP2 AND SWAP4 DUP5 ISZERO PUSH2 0x7A09 JUMPI DUP1 DUP4 AND SWAP6 DUP7 ISZERO PUSH2 0x79D4 JUMPI DUP5 PUSH2 0x791A DUP6 PUSH2 0x7904 DUP7 PUSH2 0x7904 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 DUP4 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x5687F2B800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xA0175360A15BCA328BAF7EA85C7B784D58B222A50D0CE760B10DBA336D226A61 SWAP2 PUSH2 0x79B4 SWAP2 PUSH0 DUP2 DUP1 PUSH1 0x64 DUP2 ADD JUMPDEST SUB DUP2 DUP4 DUP10 GAS CALL PUSH2 0x79C1 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 DUP2 SWAP1 PUSH1 0x20 DUP3 ADD SWAP1 JUMP JUMPDEST SUB SWAP1 LOG4 PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST DUP1 PUSH2 0x1BBE PUSH2 0x79CE SWAP3 PUSH2 0x83F JUMP JUMPDEST PUSH0 PUSH2 0x79A3 JUMP JUMPDEST PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST SWAP3 SWAP1 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 DUP5 AND SWAP2 DUP3 ISZERO PUSH2 0x7C10 JUMPI DUP1 DUP7 AND SWAP2 DUP3 ISZERO PUSH2 0x7BDB JUMPI PUSH2 0x7AB9 DUP7 PUSH2 0x7904 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP7 GT PUSH2 0x7B9E JUMPI DUP6 SWAP1 SUB PUSH2 0x7AE3 DUP8 PUSH2 0x7904 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x7B03 DUP8 PUSH2 0x7904 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP6 DUP2 SLOAD ADD SWAP1 SSTORE AND SWAP2 DUP3 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0x7B40 DUP9 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP1 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE PUSH0 SWAP1 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x545A JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH2 0x7C50 PUSH2 0x55F2 JUMP JUMPDEST POP DUP1 MLOAD SWAP3 PUSH2 0x7C5D DUP5 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 DUP3 ADD MLOAD SWAP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x20 DUP4 MLOAD SWAP4 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP6 PUSH2 0x7C81 DUP8 PUSH2 0x853 JUMP JUMPDEST PUSH2 0x7C8A DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP7 MSTORE PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE CALLER PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 DUP4 ISZERO PUSH2 0x7C10 JUMPI PUSH2 0x7CE1 DUP6 PUSH2 0x7904 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD DUP1 DUP5 GT PUSH2 0x7DDC JUMPI DUP4 SWAP1 SUB PUSH2 0x7D0B DUP7 PUSH2 0x7904 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x7D31 DUP4 PUSH2 0x7D2B DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x7D3A DUP2 PUSH2 0xB943 JUMP JUMPDEST PUSH2 0x7D55 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP1 DUP2 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x4 DUP6 ADD MSTORE PUSH0 PUSH1 0x24 DUP6 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP6 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F SWAP2 PUSH2 0x7DD7 SWAP2 DUP7 DUP2 DUP1 PUSH1 0x64 DUP2 ADD PUSH2 0x7998 JUMP JUMPDEST SUB SWAP1 LOG4 JUMP JUMPDEST PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 DUP4 SWAP1 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD DUP2 SHR AND ISZERO PUSH2 0x7E3B JUMPI POP JUMP JUMPDEST PUSH32 0x4BDACE1300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x6CB SWAP1 PUSH2 0x7D0 PUSH2 0x6818 JUMP JUMPDEST SUB PUSH2 0x7E79 JUMPI JUMP JUMPDEST PUSH32 0xAAAD13F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0x7EB4 DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0xB97B JUMP JUMPDEST PUSH2 0x7EBD DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x7ECF JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x7F04 PUSH2 0x7EDF PUSH1 0x1 SWAP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EFF PUSH2 0x7EED DUP5 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP6 DUP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0xB641 JUMP JUMPDEST PUSH2 0x7F0E DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x7EC0 JUMP JUMPDEST SWAP6 SWAP3 SWAP4 PUSH2 0x7F46 PUSH2 0x7F6A SWAP6 PUSH2 0xDA1 SWAP10 SWAP8 SWAP4 PUSH2 0x7F5C SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x669C JUMP JUMPDEST PUSH1 0x60 DUP8 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0xC0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 PUSH2 0x7FF0 PUSH2 0x7F9A DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0x7FAA DUP10 PUSH2 0x6692 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x40 DUP4 ADD MLOAD SWAP13 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0xBA5F9F4000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0x7F15 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x8033 JUMPI JUMPDEST POP ISZERO PUSH2 0x800B JUMPI JUMP JUMPDEST PUSH32 0x2AAF886600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x804C SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x8003 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x806A JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x80E1 PUSH1 0x40 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x8093 PUSH2 0x4C8B DUP6 DUP5 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP10 ADD SWAP3 PUSH2 0x80A4 DUP7 DUP6 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP5 PUSH0 MSTORE DUP7 DUP9 MSTORE PUSH0 KECCAK256 SLOAD AND SWAP1 DUP2 PUSH2 0x80BF DUP6 PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x80DA DUP5 PUSH2 0x80D2 DUP2 PUSH1 0xC0 DUP13 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xC505 JUMP JUMPDEST PUSH2 0x80EF DUP3 PUSH1 0x80 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x805C JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 ADD MLOAD MLOAD SWAP3 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x810E JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0x817D PUSH1 0x40 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x8137 PUSH2 0x4C8B DUP6 DUP5 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP10 ADD SWAP3 PUSH2 0x8148 DUP7 DUP6 MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP5 PUSH0 MSTORE DUP7 DUP9 MSTORE PUSH0 KECCAK256 SLOAD AND SWAP1 DUP2 PUSH2 0x8163 DUP6 PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x8176 DUP5 PUSH2 0x80D2 DUP2 PUSH1 0xC0 DUP13 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH2 0xC51C JUMP JUMPDEST PUSH2 0x818B DUP3 PUSH1 0x80 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x8100 JUMP JUMPDEST PUSH1 0x80 DUP2 DUP4 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD SWAP3 PUSH1 0x20 DUP3 ADD MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x6BC JUMPI DUP5 PUSH2 0x81C2 SWAP2 DUP4 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 PUSH1 0x40 DUP3 ADD MLOAD DUP5 DUP2 GT PUSH2 0x6BC JUMPI DUP2 PUSH2 0x6997 SWAP2 DUP5 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0xDA1 SWAP6 SWAP4 PUSH2 0x69EB SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x820B SWAP4 AND DUP8 MSTORE PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0xA0 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH2 0x8222 PUSH2 0x7793 JUMP JUMPDEST PUSH1 0x60 SWAP2 PUSH2 0x822D PUSH2 0x5980 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP7 ADD SWAP1 PUSH2 0x8241 DUP3 MLOAD MLOAD DUP1 DUP8 MSTORE PUSH2 0x5628 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP5 ADD SWAP7 DUP8 MLOAD PUSH2 0x8252 DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x825B DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x8619 JUMPI POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 PUSH2 0x8270 DUP8 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP6 PUSH2 0x8294 DUP4 PUSH1 0x80 DUP13 ADD MLOAD PUSH2 0x828E PUSH2 0x6AB1 DUP11 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0xBD54 JUMP JUMPDEST SWAP3 PUSH2 0x8305 PUSH32 0x0 TLOAD PUSH2 0x82CB DUP10 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH32 0x0 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP1 JUMP JUMPDEST PUSH2 0x859C JUMPI JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD DUP1 DUP3 GT PUSH2 0x856B JUMPI POP PUSH2 0x8323 DUP2 SWAP11 SWAP10 SWAP11 PUSH2 0x95F5 JUMP JUMPDEST PUSH1 0x20 DUP11 ADD SWAP9 PUSH0 JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x844A JUMPI DUP13 PUSH2 0x833E DUP3 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8348 DUP2 PUSH2 0x95F5 JUMP JUMPDEST PUSH2 0x8352 DUP4 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8438 JUMPI DUP2 PUSH2 0x6FF8 DUP5 PUSH1 0xA0 PUSH2 0x6B37 DUP3 PUSH1 0xC0 PUSH2 0x836F SWAP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP1 PUSH2 0x837A DUP4 DUP11 PUSH2 0x5659 JUMP JUMPDEST MSTORE JUMPDEST PUSH2 0x838A PUSH2 0x28F7 DUP4 DUP12 MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x60 DUP12 ADD PUSH2 0x8399 DUP5 DUP3 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP4 LT PUSH2 0x83EC JUMPI POP DUP15 DUP4 PUSH2 0x6BE1 DUP16 DUP16 DUP16 SWAP7 PUSH2 0x83E0 SWAP2 PUSH2 0x83C8 DUP7 PUSH2 0x6BBC DUP2 DUP12 PUSH1 0x1 SWAP15 SWAP14 PUSH2 0x6B99 DUP9 PUSH2 0x83E6 SWAP16 PUSH2 0x785E JUMP JUMPDEST MSTORE PUSH2 0x83D7 DUP6 PUSH1 0x60 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP1 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0x55E5 JUMP JUMPDEST ADD PUSH2 0x832A JUMP JUMPDEST SWAP2 PUSH2 0x83FB DUP5 PUSH2 0x2358 SWAP5 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0x2F785E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST POP POP PUSH2 0x8444 DUP2 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x837C JUMP JUMPDEST POP SWAP4 SWAP10 POP SWAP6 SWAP5 POP SWAP6 SWAP3 SWAP9 PUSH2 0x846B SWAP2 SWAP8 POP PUSH2 0x6C6A DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH32 0xFBE5B0D79FB94F1E81C0A92BF86AE9D3A19E9D1BF6202C0D3E75120F65D5D8A5 PUSH2 0x849D DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 PUSH2 0x84BF DUP7 PUSH1 0x20 DUP8 ADD SWAP6 PUSH2 0x84B8 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST CALLER SWAP2 PUSH2 0x789C JUMP JUMPDEST PUSH2 0x84C7 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x8540 JUMPI JUMPDEST PUSH2 0x84F2 DUP7 PUSH2 0x84E1 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x7CAE JUMP JUMPDEST PUSH2 0x8518 PUSH2 0x6AB1 PUSH2 0x850C PUSH2 0x6CDC DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 MLOAD SWAP7 PUSH2 0x28F7 DUP9 PUSH2 0x6692 JUMP JUMPDEST SWAP3 PUSH2 0x6D1E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0x852E DUP9 PUSH2 0x6692 JUMP JUMPDEST DUP13 DUP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 AND SWAP9 AND SWAP7 DUP5 PUSH2 0x6A14 JUMP JUMPDEST PUSH2 0x8566 DUP7 PUSH2 0x8555 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xBDBA JUMP JUMPDEST PUSH2 0x84CC JUMP JUMPDEST PUSH32 0x31D38E0B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP9 SWAP5 SWAP2 PUSH2 0x85AF DUP12 SWAP8 SWAP5 SWAP10 SWAP6 SWAP3 SWAP12 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP11 PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x8609 JUMPI DUP1 DUP12 PUSH2 0x8602 DUP16 SWAP4 PUSH2 0x85FC PUSH2 0x85EB DUP16 DUP4 SWAP1 PUSH2 0x85E1 PUSH1 0x1 SWAP10 PUSH2 0x85DB DUP5 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB641 JUMP JUMPDEST PUSH2 0x7257 DUP4 DUP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x85F6 DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x55E5 JUMP JUMPDEST SWAP3 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0x85B2 JUMP JUMPDEST POP SWAP2 SWAP5 SWAP9 SWAP4 SWAP7 SWAP11 POP SWAP2 SWAP5 SWAP9 PUSH2 0x830A JUMP JUMPDEST SWAP5 SWAP1 PUSH1 0x1 DUP9 MLOAD PUSH2 0x8628 DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x8631 DUP2 PUSH2 0x6692 JUMP JUMPDEST SUB PUSH2 0x86A0 JUMPI PUSH2 0x8640 DUP10 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP7 SWAP3 DUP11 PUSH2 0x869A PUSH2 0x8690 DUP12 DUP11 PUSH1 0x40 PUSH2 0x8660 PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0xB031 JUMP JUMPDEST SWAP3 ADD SWAP5 DUP3 DUP7 MSTORE DUP7 PUSH1 0x80 DUP3 ADD MLOAD SWAP4 PUSH2 0x868A PUSH2 0x2075 PUSH2 0x6E8B PUSH2 0x6E84 PUSH2 0x6AB1 DUP9 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0xBCA7 JUMP JUMPDEST SWAP1 SWAP3 MLOAD SWAP1 SWAP11 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x830A JUMP JUMPDEST PUSH1 0x2 DUP9 SWAP7 SWAP3 SWAP7 MLOAD PUSH2 0x86B0 DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x86B9 DUP2 PUSH2 0x6692 JUMP JUMPDEST SUB PUSH2 0x874C JUMPI PUSH2 0x86C8 DUP10 MLOAD PUSH2 0xAFFD JUMP JUMPDEST PUSH2 0x8745 DUP3 PUSH1 0x60 DUP8 ADD SWAP1 PUSH2 0x86EC PUSH2 0x86DE DUP4 MLOAD PUSH2 0xB031 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD SWAP4 DUP2 DUP6 MSTORE MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x86F8 DUP4 MLOAD DUP9 PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP12 PUSH2 0x870B PUSH1 0x80 DUP3 ADD MLOAD SWAP4 MLOAD DUP1 SWAP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x872A PUSH2 0x8723 PUSH2 0x6AB1 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP3 MLOAD PUSH2 0xB0C0 JUMP JUMPDEST SWAP3 PUSH2 0x873F PUSH2 0x2075 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH2 0xBA9F JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x830A JUMP JUMPDEST POP SWAP4 PUSH1 0x3 DUP8 MLOAD PUSH2 0x875B DUP2 PUSH2 0x6692 JUMP JUMPDEST PUSH2 0x8764 DUP2 PUSH2 0x6692 JUMP JUMPDEST SUB PUSH2 0x8825 JUMPI PUSH2 0x8773 DUP9 MLOAD PUSH2 0xBA6A JUMP JUMPDEST PUSH0 PUSH2 0x878B PUSH2 0x2075 PUSH2 0x2075 DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP6 PUSH1 0x40 DUP7 ADD MLOAD SWAP7 PUSH1 0x80 DUP12 ADD MLOAD SWAP2 DUP4 PUSH1 0xA0 DUP10 ADD MLOAD SWAP10 PUSH2 0x87D9 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xAB68E28C00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE CALLER PUSH1 0x4 DUP8 ADD PUSH2 0x81DB JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH0 SWAP3 PUSH0 SWAP2 PUSH2 0x87FA JUMPI JUMPDEST POP SWAP2 SWAP7 SWAP3 PUSH2 0x830A JUMP JUMPDEST SWAP3 POP POP SWAP6 POP PUSH2 0x881B SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8813 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x8192 JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP2 PUSH0 PUSH2 0x87F1 JUMP JUMPDEST PUSH32 0x137A9A3900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x6BC JUMPI DUP1 MLOAD PUSH2 0x8865 DUP2 PUSH2 0xA96 JUMP JUMPDEST SWAP3 PUSH1 0x20 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x6BC JUMPI PUSH2 0xDA1 SWAP3 ADD PUSH2 0x68A6 JUMP JUMPDEST SWAP7 SWAP4 SWAP5 PUSH2 0xDA1 SWAP9 SWAP7 SWAP3 PUSH2 0x88ED SWAP7 PUSH2 0x88BE PUSH2 0x88DF SWAP7 PUSH2 0x88D1 SWAP6 PUSH2 0x100 SWAP5 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x669C JUMP JUMPDEST PUSH1 0x60 DUP11 ADD MSTORE DUP1 PUSH1 0x80 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP7 DUP3 SUB PUSH1 0xA0 DUP9 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0xE0 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x101F JUMP JUMPDEST SWAP5 SWAP4 SWAP6 SWAP3 SWAP7 SWAP2 SWAP1 DUP5 MLOAD PUSH2 0x8914 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x80 DUP7 ADD MLOAD SWAP3 PUSH2 0x8924 DUP5 PUSH2 0x6692 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD DUP11 PUSH1 0xA0 DUP10 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP8 DUP9 SWAP8 PUSH32 0x2754888D00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0x8969 SWAP9 PUSH2 0x8884 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP6 PUSH2 0x8A86 JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0x8A7A JUMPI JUMPDEST PUSH2 0x8A52 JUMPI PUSH1 0x1 DUP1 SWAP4 PUSH1 0x9 SHR AND ISZERO PUSH2 0x89B3 JUMPI SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH0 DUP4 JUMPDEST PUSH2 0x89BA JUMPI JUMPDEST POP POP POP POP SWAP1 JUMP JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x8A4D JUMPI PUSH2 0x89CD DUP2 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH1 0x60 DUP5 ADD SWAP1 PUSH2 0x89DE DUP4 DUP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD GT PUSH2 0x89ED JUMPI POP DUP4 ADD DUP4 PUSH2 0x89AE JUMP JUMPDEST PUSH2 0x8A10 DUP3 PUSH2 0x80D2 DUP2 PUSH2 0x8A0A PUSH2 0x28F7 DUP12 SWAP8 PUSH1 0x20 PUSH2 0x2358 SWAP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0xFBD8A72400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0x89B3 JUMP JUMPDEST PUSH32 0x1D3391D800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP4 MLOAD DUP6 MLOAD EQ ISZERO PUSH2 0x8995 JUMP JUMPDEST SWAP1 POP PUSH2 0x8AA5 SWAP2 SWAP5 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8A9D DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x884D JUMP JUMPDEST SWAP4 SWAP1 PUSH0 PUSH2 0x898C JUMP JUMPDEST PUSH0 SWAP5 SWAP2 SWAP4 SWAP3 SWAP4 PUSH2 0x8ABB PUSH2 0x7793 JUMP JUMPDEST PUSH2 0x8AC3 PUSH2 0x5980 JUMP JUMPDEST SWAP2 DUP1 MLOAD PUSH2 0x8ACF DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x8AD8 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x8E55 JUMPI JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP7 ADD PUSH2 0x8AEE DUP2 MLOAD PUSH2 0xAD93 JUMP JUMPDEST DUP4 PUSH2 0x8B43 DUP2 DUP6 ADD SWAP9 PUSH2 0x8B0D PUSH2 0x2075 PUSH2 0x2075 DUP13 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP13 DUP14 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x72C9818600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0x168F JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP9 DUP10 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP10 PUSH2 0x8E36 JUMPI JUMPDEST POP DUP9 PUSH2 0x8B60 DUP2 PUSH2 0xAD93 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x8B6B DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x8B74 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x8DC6 JUMPI POP PUSH1 0x40 DUP3 ADD MLOAD SWAP1 MSTORE PUSH2 0x8BAC PUSH1 0xC0 DUP9 ADD MLOAD PUSH2 0x2124 PUSH2 0x211E PUSH2 0x8B9D DUP8 DUP7 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH1 0xA0 DUP13 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP8 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 LT PUSH2 0x8D96 JUMPI POP JUMPDEST PUSH1 0x40 DUP6 ADD SWAP5 DUP11 DUP7 MLOAD PUSH2 0x8BDC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8BE6 SWAP2 PUSH2 0x9606 JUMP JUMPDEST PUSH1 0x60 ADD SWAP6 DUP10 DUP8 MLOAD PUSH2 0x8BFD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x8C07 SWAP2 PUSH2 0x785E JUMP JUMPDEST DUP4 MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MLOAD SWAP2 PUSH2 0x8C2C SWAP4 DUP7 PUSH2 0xAE28 JUMP JUMPDEST SWAP2 SWAP1 DUP2 DUP7 ADD SWAP6 PUSH1 0x40 ADD SWAP3 DUP4 MSTORE DUP6 MSTORE DUP6 MLOAD PUSH1 0x60 DUP5 ADD SWAP3 DUP14 DUP3 DUP6 MLOAD SWAP1 PUSH2 0x8C4F SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x8C5A SWAP2 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 MLOAD PUSH2 0x8C65 SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x8C6F SWAP2 DUP6 PUSH2 0xB55F JUMP JUMPDEST DUP6 ADD SWAP2 DUP3 MLOAD DUP12 DUP2 DUP5 MLOAD SWAP1 PUSH2 0x8C82 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x8C8D SWAP2 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x8C97 SWAP2 DUP4 PUSH2 0xB55F JUMP JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 DUP1 MLOAD DUP8 MLOAD PUSH2 0x8CBD SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x80 ADD SWAP2 DUP3 MLOAD DUP9 MLOAD PUSH2 0x8CD0 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8CDA SWAP2 PUSH2 0x7032 JUMP JUMPDEST DUP8 MLOAD PUSH2 0x8CEE SWAP1 DUP6 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD DUP4 MLOAD PUSH2 0x8CFB SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 MLOAD DUP4 MLOAD PUSH2 0x8D09 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x8D13 SWAP2 PUSH2 0x7032 JUMP JUMPDEST SWAP2 MLOAD PUSH2 0x8D26 SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE MLOAD SWAP3 MLOAD SWAP4 MLOAD PUSH1 0x60 SWAP3 DUP4 ADD MLOAD SWAP2 MLOAD PUSH1 0x40 DUP1 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE SWAP1 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP4 DUP3 AND SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH32 0x874B2D545CB271CDBDA4E093020C452328B24AF12382ED62C4D00F5C26709DB SWAP1 PUSH1 0x80 SWAP1 LOG4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6CB PUSH2 0x77E8 JUMP JUMPDEST PUSH32 0xE2EA151B00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 DUP9 SWAP1 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 POP DUP2 SWAP9 POP PUSH2 0x8DED PUSH1 0x60 PUSH2 0x8DF6 SWAP4 ADD MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP1 DUP3 LT MUL SWAP1 DUP4 PUSH2 0xBE7E JUMP JUMPDEST SWAP1 DUP2 DUP7 MSTORE PUSH2 0x6A07 JUMP JUMPDEST SWAP7 PUSH2 0x8E1B PUSH2 0x8E0A PUSH1 0xC0 DUP10 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x23AF PUSH1 0xA0 DUP11 ADD MLOAD DUP5 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP4 ADD MLOAD SWAP7 DUP6 SWAP9 PUSH1 0xA0 DUP6 ADD MLOAD DUP1 DUP9 GT PUSH2 0x8D96 JUMPI POP PUSH2 0x8BC4 JUMP JUMPDEST PUSH2 0x8E4E SWAP2 SWAP10 POP DUP5 RETURNDATASIZE DUP7 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0x8B55 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD PUSH2 0x8E6C PUSH2 0x2409 DUP3 MLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST SWAP1 MSTORE PUSH2 0x8ADE JUMP JUMPDEST DUP2 DUP2 SUB SWAP3 SWAP2 PUSH0 SGT DUP1 ISZERO DUP3 DUP6 SGT AND SWAP2 DUP5 SLT AND OR PUSH2 0x449E JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH2 0x8ED4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH0 SWAP3 PUSH1 0x80 SHR DUP1 PUSH2 0x8EF2 JUMPI JUMPDEST POP POP PUSH1 0x2 SWAP2 PUSH2 0x8EEE SWAP2 PUSH2 0x8E73 JUMP JUMPDEST SDIV SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x8F53 PUSH2 0x8EEE SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x8F5C JUMPI JUMPDEST POP PUSH2 0xB8A2 JUMP JUMPDEST SWAP3 DUP2 SWAP3 POP PUSH2 0x8EE0 JUMP JUMPDEST PUSH2 0x8F75 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x8F4D JUMP JUMPDEST DUP2 ISZERO PUSH2 0x8F85 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH2 0x8E8B JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x4A3D JUMPI PUSH5 0x174876E800 SWAP1 DIV DUP1 PUSH1 0x18 SHR PUSH2 0x8FD5 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFF SWAP1 PUSH1 0x12 SHL SWAP2 AND OR SWAP1 JUMP JUMPDEST PUSH32 0xE4337C0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 PUSH2 0x9050 PUSH2 0x905B SWAP3 SWAP5 SWAP4 SWAP5 PUSH2 0x9010 PUSH2 0x5769 JUMP JUMPDEST SWAP6 DUP7 SWAP2 PUSH2 0x9046 PUSH1 0x20 DUP4 ADD DUP1 MLOAD SWAP1 PUSH2 0x9036 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 PUSH1 0x40 DUP8 ADD MLOAD AND SWAP1 PUSH2 0xAF4C JUMP JUMPDEST DUP7 MSTORE MLOAD SWAP1 PUSH1 0x60 DUP5 ADD MLOAD AND SWAP1 PUSH2 0xAF4C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x911B JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE MLOAD PUSH2 0xB0C0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP3 PUSH2 0x90B2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP5 PUSH1 0x40 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP4 PUSH32 0x5211FA7700000000000000000000000000000000000000000000000000000000 DUP6 MSTORE PUSH1 0x40 PUSH1 0x4 DUP7 ADD MSTORE PUSH1 0x44 DUP6 ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST SWAP2 AND PUSH1 0x24 DUP4 ADD MSTORE SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0x90FC JUMPI JUMPDEST POP ISZERO PUSH2 0x90D4 JUMPI JUMP JUMPDEST PUSH32 0xE91E17E700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x9115 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x90CC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 DUP1 MLOAD PUSH2 0x9129 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9132 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9177 JUMPI SWAP1 PUSH2 0x916E PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH2 0x7EF8 PUSH1 0x80 PUSH2 0x9173 SWAP6 ADD MLOAD SWAP4 PUSH1 0xA0 PUSH2 0x9162 PUSH1 0xC0 DUP6 ADD MLOAD DUP4 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0x5EA4 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP3 PUSH2 0x91AD PUSH2 0x211E PUSH1 0x80 PUSH2 0x7EFF SWAP5 ADD MLOAD SWAP5 PUSH1 0xA0 PUSH2 0x91A1 PUSH1 0x20 PUSH1 0xC0 DUP8 ADD MLOAD SWAP4 ADD SWAP3 DUP4 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP5 ADD MLOAD SWAP1 MLOAD SWAP1 PUSH2 0x5659 JUMP JUMPDEST SWAP3 PUSH2 0x5EA4 JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x40 SWAP2 SUB SLT PUSH2 0x6BC JUMPI PUSH1 0x20 DUP3 MLOAD PUSH2 0x91CC DUP2 PUSH2 0xA96 JUMP JUMPDEST SWAP3 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x9223 PUSH1 0x40 SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 SWAP2 DUP7 MLOAD SWAP8 DUP9 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xA0E8F5AC00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH1 0x60 PUSH1 0x4 DUP8 ADD MSTORE PUSH1 0x64 DUP7 ADD SWAP1 PUSH2 0x1621 JUMP JUMPDEST SWAP3 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD MSTORE SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP3 PUSH2 0x9284 JUMPI JUMPDEST POP ISZERO PUSH2 0x925C JUMPI PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x4A3D JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x53F976D400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH2 0x92A8 SWAP2 POP PUSH1 0x40 RETURNDATASIZE PUSH1 0x40 GT PUSH2 0x92AF JUMPI JUMPDEST PUSH2 0x92A0 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x91B3 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x9244 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x9296 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0xDA1 SWAP3 PUSH1 0x20 DUP4 MSTORE PUSH2 0x92CF PUSH1 0x20 DUP5 ADD DUP3 MLOAD PUSH2 0x1614 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xE0 DUP5 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x100 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x120 SWAP1 DUP2 DUP6 ADD MSTORE DUP2 ADD MLOAD PUSH2 0x9350 PUSH2 0x140 SWAP2 DUP3 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP2 ADD MLOAD SWAP1 PUSH2 0x936C PUSH2 0x160 SWAP3 DUP4 DUP7 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST ADD MLOAD SWAP2 PUSH2 0x180 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x101F JUMP JUMPDEST SWAP4 SWAP6 SWAP1 SWAP2 SWAP5 SWAP3 DUP7 MLOAD PUSH2 0x938E DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9397 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x95E6 JUMPI DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 JUMPDEST DUP3 MLOAD SWAP5 PUSH2 0x93B0 DUP7 PUSH2 0xEBD JUMP JUMPDEST PUSH1 0x40 SWAP8 DUP9 SWAP8 DUP9 DUP7 ADD MLOAD PUSH2 0x93C9 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP8 ADD MLOAD PUSH2 0x93DF SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP4 PUSH1 0x80 ADD SWAP3 DUP4 MLOAD DUP2 MLOAD PUSH2 0x93F1 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 MLOAD SWAP1 PUSH1 0x20 ADD MLOAD PUSH2 0x9402 SWAP2 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x9419 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP8 PUSH1 0xC0 ADD MLOAD SWAP9 PUSH2 0x9427 PUSH2 0x901 JUMP JUMPDEST SWAP11 PUSH2 0x9432 SWAP1 DUP13 PUSH2 0x5DB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP12 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP12 ADD MSTORE PUSH1 0x60 DUP10 ADD MSTORE PUSH1 0x80 DUP9 ADD MSTORE PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0xC0 DUP7 ADD MSTORE PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE DUP2 MLOAD SWAP7 DUP8 DUP1 DUP1 SWAP4 PUSH32 0x18B6EB5500000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH1 0x4 DUP3 ADD SWAP1 PUSH2 0x94CA SWAP2 PUSH2 0x92B6 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS SWAP1 PUSH0 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH0 SWAP7 PUSH2 0x95C2 JUMPI JUMPDEST POP POP ISZERO PUSH2 0x959A JUMPI PUSH1 0x9 SHR PUSH1 0x1 AND ISZERO PUSH2 0x9594 JUMPI POP DUP1 MLOAD PUSH2 0x9508 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9511 DUP2 PUSH2 0xEBD JUMP JUMPDEST ISZERO DUP1 PUSH2 0x9587 JUMPI JUMPDEST DUP1 ISZERO PUSH2 0x955C JUMPI JUMPDEST PUSH2 0x9527 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0xA0 ADD MLOAD PUSH32 0xCC0E4A9900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 DUP2 MLOAD PUSH2 0x956A DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0x9573 DUP2 PUSH2 0xEBD JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x951F JUMPI POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 GT PUSH2 0x951F JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD DUP3 LT PUSH2 0x9518 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0x15A29DEC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x95DD SWAP4 SWAP7 POP DUP1 SWAP2 SWAP3 POP SWAP1 RETURNDATASIZE LT PUSH2 0x92AF JUMPI PUSH2 0x92A0 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP4 SWAP1 PUSH0 DUP1 PUSH2 0x94EA JUMP JUMPDEST DUP7 PUSH1 0x40 DUP6 ADD MLOAD SWAP2 DUP5 SWAP3 SWAP5 PUSH2 0x93A4 JUMP JUMPDEST DUP1 PUSH2 0x95FD JUMPI POP JUMP JUMPDEST PUSH2 0x6CB SWAP1 PUSH2 0xAD93 JUMP JUMPDEST PUSH2 0x2CC8 PUSH2 0x6CB SWAP3 PUSH2 0xB8A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP2 AND SWAP1 DUP2 PUSH0 MSTORE PUSH1 0xE PUSH1 0x20 MSTORE DUP1 PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND SWAP3 AND DUP1 SWAP3 SUB PUSH2 0x963A JUMPI POP POP JUMP JUMPDEST PUSH32 0x36B18D0900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 PUSH32 0x0 GT PUSH2 0x9692 JUMPI POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x18FE738500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 PUSH0 DUP4 DUP3 ADD SWAP4 DUP5 SLT SWAP2 SLT SWAP1 DUP1 ISZERO DUP3 AND SWAP2 ISZERO AND OR PUSH2 0x449E JUMPI JUMP JUMPDEST SWAP3 PUSH2 0x9737 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP3 PUSH2 0x96FB DUP6 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0xEF8B30F700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP10 DUP11 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP9 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9753 SWAP2 PUSH0 SWAP2 PUSH2 0x992F JUMPI JUMPDEST POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 DUP1 SWAP7 PUSH2 0x9771 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x977B PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9925 JUMPI POP SWAP2 DUP2 DUP9 SWAP4 DUP9 SWAP6 SWAP4 PUSH1 0x80 SHR SWAP1 DUP7 DUP3 LT ISZERO PUSH0 EQ PUSH2 0x97F5 JUMPI POP POP SWAP3 PUSH2 0x97EA SWAP7 SWAP3 PUSH2 0x97F0 SWAP3 PUSH2 0x97D0 DUP7 PUSH2 0x97CB DUP6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 PUSH2 0x6CB SWAP13 SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x7032 JUMP JUMPDEST SWAP9 DUP10 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0x9606 JUMP JUMPDEST PUSH2 0x785E JUMP JUMPDEST SWAP2 SWAP3 SWAP5 POP SWAP7 SWAP3 SWAP5 POP PUSH2 0x9820 PUSH2 0x981B PUSH2 0x980D DUP7 DUP6 PUSH2 0x8EB8 JUMP JUMPDEST PUSH2 0x9816 DUP13 PUSH2 0xB8A2 JUMP JUMPDEST PUSH2 0x96C7 JUMP JUMPDEST PUSH2 0xBEC2 JUMP JUMPDEST SWAP5 PUSH2 0x982C DUP7 DUP6 DUP4 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP3 DUP7 PUSH1 0x44 DUP2 PUSH0 DUP10 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP13 PUSH2 0x98CF DUP16 SWAP8 PUSH2 0x97D0 SWAP6 PUSH2 0x6CB SWAP14 DUP11 PUSH2 0x97F0 SWAP13 DUP7 SWAP16 DUP16 SWAP6 SWAP1 DUP14 SWAP2 PUSH0 SWAP7 PUSH2 0x98E0 JUMPI JUMPDEST POP POP PUSH2 0x98CF SWAP3 SWAP2 PUSH2 0x98C9 DUP7 DUP7 DUP10 DUP6 PUSH2 0x98C4 PUSH2 0x98D4 SWAP12 SWAP13 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP9 PUSH2 0xBEF7 JUMP JUMPDEST PUSH2 0xAD4E JUMP JUMPDEST AND PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x55E5 JUMP JUMPDEST SWAP5 PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0x7032 JUMP JUMPDEST PUSH2 0x98D4 SWAP7 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP7 PUSH2 0x9917 PUSH2 0x98CF SWAP8 SWAP7 SWAP5 DUP5 PUSH2 0x98C9 SWAP6 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP9 POP POP SWAP3 POP DUP2 SWAP4 SWAP5 POP PUSH2 0x9897 JUMP JUMPDEST SWAP8 POP SWAP1 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x9946 SWAP2 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x974D JUMP JUMPDEST SWAP3 PUSH2 0x99A3 SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP3 PUSH2 0x9966 DUP7 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 SWAP2 DUP3 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP10 DUP11 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP10 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x99BF SWAP2 PUSH0 SWAP2 PUSH2 0x9B92 JUMPI JUMPDEST POP PUSH2 0x69F9 JUMP JUMPDEST SWAP1 DUP8 SWAP7 DUP3 SWAP9 PUSH2 0x99DF DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP4 PUSH2 0x99E9 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9B85 JUMPI POP POP SWAP2 DUP9 SWAP4 SWAP2 DUP9 SWAP6 SWAP4 DUP3 PUSH1 0x80 SHR SWAP2 DUP8 DUP4 LT ISZERO PUSH0 EQ PUSH2 0x9A3C JUMPI POP POP POP SWAP3 PUSH2 0x97EA SWAP7 SWAP3 PUSH2 0x97F0 SWAP3 PUSH2 0x97D0 DUP7 PUSH2 0x97CB DUP6 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 PUSH2 0x6CB SWAP13 SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x6A07 JUMP JUMPDEST SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP7 SWAP3 PUSH2 0x9A62 PUSH2 0x981B PUSH2 0x9A54 DUP9 DUP9 PUSH2 0xACB9 JUMP JUMPDEST PUSH2 0x9A5D DUP13 PUSH2 0xB8A2 JUMP JUMPDEST PUSH2 0x8E73 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x4 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP4 DUP2 PUSH1 0x24 DUP2 DUP9 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9A91 SWAP2 PUSH0 SWAP2 PUSH2 0x9B68 JUMPI JUMPDEST POP DUP6 DUP4 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x94BF804D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP6 DUP4 DUP8 PUSH1 0x44 DUP2 PUSH0 DUP10 GAS CALL SWAP6 DUP7 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP13 PUSH2 0x98CF DUP16 SWAP8 PUSH2 0x98D4 DUP12 DUP5 SWAP14 PUSH2 0x6CB SWAP16 PUSH2 0x97D0 SWAP10 DUP6 PUSH2 0x97F0 SWAP16 DUP16 SWAP4 DUP16 SWAP2 PUSH0 SWAP7 PUSH2 0x9B29 JUMPI JUMPDEST POP POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP2 DUP6 DUP8 DUP4 PUSH2 0x98C4 PUSH2 0x98CF SWAP10 SWAP11 PUSH2 0x98C9 SWAP7 PUSH2 0xBEF7 JUMP JUMPDEST PUSH2 0x98CF SWAP7 POP SWAP2 PUSH2 0x9B5C PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 SWAP5 SWAP3 DUP5 PUSH2 0x98C9 SWAP6 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP7 POP SWAP2 DUP2 SWAP4 SWAP5 POP PUSH2 0x9B00 JUMP JUMPDEST PUSH2 0x9B7F SWAP2 POP DUP6 RETURNDATASIZE DUP8 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x9A89 JUMP JUMPDEST SWAP10 POP SWAP8 POP SWAP2 SWAP6 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x9BA9 SWAP2 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x99B9 JUMP JUMPDEST SWAP4 SWAP1 SWAP2 PUSH2 0x9BBB DUP6 PUSH2 0xEBD JUMP JUMPDEST DUP5 ISZERO DUP1 ISZERO PUSH2 0x9F08 JUMPI PUSH2 0x9BD1 PUSH1 0x20 PUSH2 0x5FEC DUP8 PUSH2 0x55D7 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9BF5 SWAP2 PUSH0 SWAP2 PUSH2 0x9EEF JUMPI POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0x9C13 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0x9C1D PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9EE7 JUMPI DUP7 SWAP3 DUP9 SWAP3 SWAP1 SWAP2 PUSH1 0x80 DUP4 SWAP1 SHR SWAP2 DUP6 DUP4 LT PUSH2 0x9C90 JUMPI POP POP POP SWAP3 PUSH2 0x9C8A DUP3 PUSH2 0x9C6D DUP7 PUSH2 0x97CB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 PUSH2 0x6CB SWAP12 PUSH1 0x80 SHR SUB SWAP4 AND PUSH2 0x6A07 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x97EA DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST AND PUSH2 0x785E JUMP JUMPDEST SWAP1 SWAP3 SWAP4 POP PUSH2 0x9C9F SWAP2 SWAP5 POP PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0x9D94 JUMPI PUSH2 0x9CBD PUSH2 0x981B PUSH2 0x9CB4 DUP6 DUP5 PUSH2 0x8EB8 JUMP JUMPDEST PUSH2 0x9816 DUP11 PUSH2 0xB8A2 JUMP JUMPDEST SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP4 PUSH2 0x9CD4 DUP2 DUP7 DUP10 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 PUSH1 0x20 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9C6D DUP10 SWAP6 PUSH2 0x98DA DUP8 PUSH2 0x98CF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 SWAP7 DUP9 DUP16 DUP10 PUSH2 0x6CB SWAP16 DUP6 SWAP15 PUSH2 0x98C9 DUP16 PUSH2 0x9C8A SWAP16 PUSH2 0x98CF SWAP7 PUSH2 0x98D4 SWAP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP7 PUSH0 SWAP2 PUSH2 0x9D75 JUMPI JUMPDEST POP SWAP11 DUP12 SWAP4 JUMPDEST AND SWAP1 PUSH2 0x98C4 DUP3 DUP3 PUSH2 0xBEF7 JUMP JUMPDEST PUSH2 0x9D8E SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x9D64 JUMP JUMPDEST SWAP1 SWAP2 PUSH2 0x9DAF PUSH2 0x981B PUSH2 0x9DA6 DUP4 DUP6 PUSH2 0xACB9 JUMP JUMPDEST PUSH2 0x9A5D DUP10 PUSH2 0xB8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP4 PUSH1 0x20 SWAP4 SWAP3 SWAP1 SWAP2 DUP5 DUP2 PUSH1 0x24 DUP2 DUP10 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9E0E SWAP2 PUSH0 SWAP2 PUSH2 0x9ECA JUMPI JUMPDEST POP DUP7 DUP11 PUSH2 0xC00F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x94BF804D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP5 DUP5 SWAP1 DUP7 SWAP1 PUSH1 0x44 SWAP1 DUP3 SWAP1 PUSH0 SWAP1 GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x6CB SWAP7 PUSH2 0x98DA DUP12 PUSH2 0x98CF DUP6 DUP16 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 SWAP16 SWAP11 DUP5 SWAP16 DUP16 SWAP7 PUSH2 0x9C8A SWAP16 SWAP8 PUSH2 0x98CF SWAP7 PUSH2 0x9C6D SWAP16 SWAP10 PUSH2 0x98D4 SWAP11 PUSH2 0x98C9 SWAP6 PUSH0 SWAP3 PUSH2 0x9EAD JUMPI JUMPDEST POP POP SWAP9 DUP10 SWAP3 PUSH2 0x9D69 JUMP JUMPDEST PUSH2 0x9EC3 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x9EA3 JUMP JUMPDEST PUSH2 0x9EE1 SWAP2 POP DUP7 RETURNDATASIZE DUP9 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0x9E06 JUMP JUMPDEST POP SWAP1 SWAP4 POP POP POP JUMP JUMPDEST PUSH2 0x9946 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH2 0x9F4E PUSH1 0x20 PUSH2 0x9F16 DUP8 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xB3D7F6B900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x9F72 SWAP2 PUSH0 SWAP2 PUSH2 0x9F78 JUMPI POP PUSH2 0x69F9 JUMP JUMPDEST SWAP6 PUSH2 0x9BF8 JUMP JUMPDEST PUSH2 0x9BA9 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 SWAP3 PUSH2 0x9FE8 SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH2 0x9FAC DUP7 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP9 DUP10 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP7 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA003 SWAP2 PUSH0 SWAP2 PUSH2 0xA182 JUMPI POP PUSH2 0x69F9 JUMP JUMPDEST DUP7 SWAP6 DUP2 SWAP8 PUSH2 0xA022 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 PUSH2 0xA02C PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0xA176 JUMPI POP POP SWAP2 DUP7 SWAP4 SWAP2 DUP9 SWAP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 DUP4 AND SWAP1 DUP8 DUP3 LT ISZERO PUSH0 EQ PUSH2 0xA083 JUMPI POP POP SWAP3 PUSH2 0x97F0 SWAP3 PUSH2 0x97D0 DUP4 DUP9 PUSH2 0x97EA SWAP12 SWAP8 PUSH2 0xA07B DUP11 PUSH2 0x6CB SWAP13 SWAP12 SWAP9 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP3 AND SUB PUSH2 0x7032 JUMP JUMPDEST SWAP3 SWAP9 SWAP5 SWAP7 POP SWAP5 POP POP PUSH2 0xA0A4 PUSH2 0x981B PUSH2 0xA09B DUP5 DUP11 PUSH2 0x8EB8 JUMP JUMPDEST PUSH2 0x9A5D DUP12 PUSH2 0xB8A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB460AF9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 SWAP6 SWAP1 SWAP3 DUP3 DUP5 PUSH1 0x64 DUP2 PUSH0 DUP7 GAS CALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP5 PUSH2 0x97F0 SWAP8 DUP16 DUP16 PUSH2 0x6CB SWAP14 DUP2 SWAP14 DUP14 PUSH2 0x97D0 SWAP10 DUP6 SWAP14 PUSH0 SWAP8 PUSH2 0xA13D JUMPI JUMPDEST POP POP SWAP2 PUSH2 0x98CF SWAP2 PUSH2 0xA12F DUP8 DUP4 PUSH2 0x98CF SWAP10 SWAP11 PUSH2 0xA134 SWAP9 SWAP8 PUSH2 0xADE3 JUMP JUMPDEST PUSH2 0x6A07 JUMP JUMPDEST SWAP5 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x98CF SWAP8 POP DUP5 SWAP3 PUSH2 0xA134 SWAP7 SWAP6 PUSH2 0xA167 PUSH2 0x98CF SWAP7 SWAP5 DUP5 PUSH2 0xA12F SWAP6 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP10 POP POP SWAP3 SWAP5 SWAP6 POP DUP2 SWAP4 POP PUSH2 0xA114 JUMP JUMPDEST SWAP9 POP SWAP7 POP SWAP1 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH2 0x9BA9 SWAP2 POP DUP8 RETURNDATASIZE DUP10 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP3 PUSH2 0xA1F0 SWAP4 SWAP3 SWAP2 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA1B4 DUP5 PUSH2 0x55D7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH32 0x4CDAD50600000000000000000000000000000000000000000000000000000000 DUP3 MSTORE DUP2 DUP1 PUSH1 0x20 SWAP10 DUP11 SWAP4 PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 DUP6 GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA20B SWAP2 PUSH0 SWAP2 PUSH2 0x992F JUMPI POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 DUP5 SWAP7 PUSH2 0xA229 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP6 PUSH2 0xA233 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0xA34B JUMPI POP DUP7 SWAP4 SWAP3 DUP9 SWAP3 SWAP1 SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP9 DUP3 AND DUP8 DUP2 LT PUSH2 0xA27E JUMPI POP POP SWAP2 DUP4 SWAP2 PUSH2 0x97D0 DUP10 DUP9 PUSH2 0x97F0 SWAP7 PUSH2 0xA07B PUSH2 0x6CB SWAP12 SWAP11 SWAP10 PUSH2 0x97EA SWAP15 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP3 SWAP5 SWAP4 POP POP PUSH2 0xA296 PUSH2 0x981B PUSH2 0x980D DUP8 DUP11 PUSH2 0xACB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP6 SWAP1 SWAP5 SWAP1 DUP4 DUP8 PUSH1 0x64 DUP2 PUSH0 DUP7 GAS CALL SWAP3 DUP4 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x97EA SWAP10 PUSH2 0x98DA DUP9 PUSH2 0x98CF DUP16 DUP16 SWAP12 DUP13 PUSH2 0x98CF PUSH2 0x6CB SWAP16 SWAP12 PUSH2 0x97D0 SWAP10 DUP16 SWAP5 PUSH2 0x97F0 SWAP16 DUP8 SWAP16 SWAP7 DUP16 SWAP2 SWAP8 PUSH2 0xA134 SWAP9 PUSH0 SWAP7 PUSH2 0xA324 JUMPI JUMPDEST POP POP PUSH2 0xA12F SWAP3 SWAP2 DUP6 SWAP2 PUSH2 0xADE3 JUMP JUMPDEST PUSH2 0xA12F SWAP5 SWAP4 SWAP7 POP SWAP1 DUP2 PUSH2 0xA342 SWAP3 SWAP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP5 SWAP2 SWAP3 PUSH0 PUSH2 0xA316 JUMP JUMPDEST SWAP8 POP POP POP POP POP JUMP JUMPDEST SWAP4 SWAP1 PUSH2 0xA35E DUP6 PUSH2 0xEBD JUMP JUMPDEST DUP5 ISZERO SWAP5 DUP6 ISZERO PUSH2 0xA5FA JUMPI PUSH2 0xA375 PUSH1 0x20 PUSH2 0x64B5 DUP8 PUSH2 0x55D7 JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA399 SWAP2 PUSH0 SWAP2 PUSH2 0x9EEF JUMPI POP PUSH2 0x55D7 JUMP JUMPDEST SWAP5 SWAP6 JUMPDEST PUSH2 0xA3B7 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP2 PUSH2 0xA3C1 PUSH2 0xBDA5 JUMP JUMPDEST PUSH2 0x9EE7 JUMPI DUP8 SWAP4 DUP8 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 AND SWAP2 DUP7 DUP4 LT PUSH2 0xA434 JUMPI POP POP POP SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xA40F DUP4 DUP7 PUSH2 0x6CB SWAP9 PUSH2 0xA07B DUP7 PUSH2 0x97F0 SWAP9 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0xA42C DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE JUMPDEST AND PUSH2 0x9606 JUMP JUMPDEST SWAP2 SWAP7 POP SWAP3 SWAP5 POP PUSH2 0xA444 SWAP2 POP PUSH2 0xEBD JUMP JUMPDEST ISZERO PUSH2 0xA534 JUMPI PUSH2 0xA459 PUSH2 0x981B PUSH2 0x9CB4 DUP8 DUP6 PUSH2 0xACB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP4 SWAP1 PUSH1 0x20 DUP6 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA4F2 DUP10 SWAP6 PUSH2 0x98DA DUP5 PUSH2 0x98CF DUP15 PUSH2 0xA134 DUP12 DUP16 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x6CB SWAP16 SWAP13 PUSH2 0xA12F DUP16 SWAP14 PUSH2 0x97F0 SWAP16 SWAP5 DUP9 SWAP16 DUP6 SWAP16 PUSH2 0x98CF SWAP8 PUSH0 SWAP2 PUSH2 0xA515 JUMPI JUMPDEST POP SWAP6 DUP7 SWAP3 JUMPDEST AND SWAP1 PUSH2 0xADE3 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0xA50F DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xB PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH2 0xA42E JUMP JUMPDEST PUSH2 0xA52E SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xA4E6 JUMP JUMPDEST PUSH2 0xA544 PUSH2 0x981B PUSH2 0x9DA6 DUP8 DUP6 PUSH2 0x8EB8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB460AF9400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE ADDRESS PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 PUSH1 0x20 DUP3 PUSH1 0x64 DUP2 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND GAS CALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA4F2 DUP10 SWAP6 PUSH2 0x98DA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x98CF DUP15 PUSH2 0xA134 DUP12 DUP16 DUP11 PUSH2 0x6CB SWAP16 PUSH2 0xA12F DUP16 SWAP4 PUSH2 0x97F0 SWAP16 SWAP15 DUP9 SWAP16 SWAP6 DUP12 SWAP16 SWAP7 PUSH2 0x98CF SWAP8 PUSH0 SWAP2 PUSH2 0xA5DB JUMPI JUMPDEST POP SWAP12 DUP13 SWAP4 PUSH2 0xA4EB JUMP JUMPDEST PUSH2 0xA5F4 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xA5D2 JUMP JUMPDEST PUSH2 0xA640 PUSH1 0x20 PUSH2 0xA608 DUP8 PUSH2 0x69F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP4 DUP2 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xA664 SWAP2 PUSH0 SWAP2 PUSH2 0x9F78 JUMPI POP PUSH2 0x69F9 JUMP JUMPDEST SWAP6 PUSH2 0xA39C JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP2 PUSH1 0x80 SHR SWAP1 PUSH2 0x7032 JUMP JUMPDEST SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND SWAP4 DUP5 ISZERO PUSH2 0xA791 JUMPI PUSH2 0xA6B0 DUP4 PUSH2 0xA6AA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0xA6CF DUP6 PUSH2 0x7904 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP5 DUP2 SLOAD ADD SWAP1 SSTORE PUSH2 0xA6DE DUP2 PUSH2 0xB943 JUMP JUMPDEST PUSH2 0xA6F9 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x11 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE AND SWAP3 PUSH0 DUP5 PUSH32 0xD1398BEE19313D6BF672CCB116E51F4A1A947E91C757907F51FBB5B5E56C698F PUSH1 0x40 MLOAD DUP1 PUSH2 0xA732 DUP8 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP3 MSTORE JUMP JUMPDEST SUB SWAP1 LOG4 DUP3 EXTCODESIZE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x23DE665100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 SWAP1 DUP2 DUP4 DUP2 PUSH1 0x64 DUP2 ADD PUSH2 0x545A JUMP JUMPDEST PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 TLOAD SWAP1 PUSH1 0x1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI TSTORE JUMP JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP2 PUSH2 0xA803 DUP3 MLOAD DUP3 MLOAD SWAP1 DUP6 PUSH2 0xB97B JUMP JUMPDEST PUSH2 0xA80C DUP4 PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0xA81E JUMPI POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0xA850 PUSH2 0xA837 PUSH1 0x1 SWAP5 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x916E PUSH2 0xA845 DUP6 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP7 DUP11 PUSH2 0x5659 JUMP JUMPDEST DIV PUSH2 0xA85B DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xA80F JUMP JUMPDEST SWAP6 SWAP2 SWAP4 PUSH2 0xA893 PUSH2 0xDA1 SWAP9 SWAP7 SWAP5 PUSH2 0xA8A4 SWAP4 PUSH2 0x7F6A SWAP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP3 AND DUP12 MSTORE AND PUSH1 0x20 DUP11 ADD MSTORE PUSH1 0x40 DUP10 ADD SWAP1 PUSH2 0x54B9 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP3 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x20 SWAP6 SWAP7 SWAP4 SWAP7 PUSH2 0xA931 PUSH2 0xA8DB DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP5 PUSH1 0x80 DUP9 ADD MLOAD SWAP8 PUSH2 0xA8EB DUP10 PUSH2 0x54AF JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x80 PUSH1 0x60 DUP4 ADD MLOAD SWAP4 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x40 MLOAD SWAP12 DUP13 SWAP11 DUP12 SWAP10 DUP11 SWAP8 PUSH32 0x45421EC700000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD PUSH2 0xA862 JUMP JUMPDEST SUB SWAP4 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0xA974 JUMPI JUMPDEST POP ISZERO PUSH2 0xA94C JUMPI JUMP JUMPDEST PUSH32 0xB2EB65200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0xA98D SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x7A4 JUMPI PUSH2 0x79A DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xA944 JUMP JUMPDEST SWAP7 SWAP3 PUSH2 0xDA1 SWAP9 SWAP7 SWAP5 PUSH2 0xA9E9 SWAP4 PUSH2 0xA9CD PUSH2 0xA9DB SWAP4 PUSH2 0x88ED SWAP10 SWAP6 PUSH2 0x100 SWAP4 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 SWAP4 AND SWAP1 MSTORE AND PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x40 DUP13 ADD SWAP1 PUSH2 0x54B9 JUMP JUMPDEST DUP1 PUSH1 0x60 DUP12 ADD MSTORE DUP10 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP1 DUP8 DUP3 SUB PUSH1 0x80 DUP10 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP2 PUSH1 0xA0 DUP7 ADD MSTORE DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0xF2D JUMP JUMPDEST SWAP5 SWAP4 SWAP2 SWAP6 SWAP3 SWAP7 SWAP1 DUP5 MLOAD PUSH2 0xAA15 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD SWAP2 PUSH2 0xAA24 DUP4 PUSH2 0x54AF JUMP JUMPDEST PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD SWAP1 PUSH1 0x40 SWAP7 DUP13 PUSH1 0x40 MLOAD SWAP13 DUP14 SWAP8 DUP9 SWAP8 PUSH32 0x976907CC00000000000000000000000000000000000000000000000000000000 DUP10 MSTORE PUSH1 0x4 DUP10 ADD SWAP8 PUSH2 0xAA6C SWAP9 PUSH2 0xA993 JUMP JUMPDEST SUB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP2 GAS PUSH0 SWAP5 DUP6 SWAP2 CALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP1 PUSH0 SWAP7 PUSH2 0xAB86 JUMPI JUMPDEST POP ISZERO DUP1 ISZERO PUSH2 0xAB7A JUMPI JUMPDEST PUSH2 0xAB52 JUMPI PUSH1 0x1 DUP1 SWAP5 PUSH1 0x9 SHR AND ISZERO PUSH2 0xAAB8 JUMPI SWAP1 SWAP2 SWAP3 DUP1 SWAP5 SWAP6 POP PUSH0 SWAP1 JUMPDEST PUSH2 0xAAC0 JUMPI JUMPDEST POP POP POP POP POP SWAP1 JUMP JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0xAB4D JUMPI PUSH2 0xAAD3 DUP2 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP3 DUP6 ADD SWAP1 PUSH2 0xAAE3 DUP4 DUP4 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD LT PUSH2 0xAAF2 JUMPI POP DUP5 ADD DUP5 PUSH2 0xAAB3 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0xAB10 DUP4 PUSH2 0x80D2 DUP2 PUSH2 0x8A0A PUSH2 0x28F7 PUSH2 0x2358 SWAP9 PUSH1 0x20 DUP13 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH32 0xCEFA3AFA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 SWAP1 JUMP JUMPDEST PUSH2 0xAAB8 JUMP JUMPDEST PUSH32 0xE124916500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP DUP5 MLOAD DUP7 MLOAD EQ ISZERO PUSH2 0xAA98 JUMP JUMPDEST SWAP1 POP PUSH2 0xAB9D SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8A9D DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP5 SWAP1 PUSH0 PUSH2 0xAA8F JUMP JUMPDEST PUSH5 0x174876E800 PUSH2 0xDA1 SWAP3 DIV SWAP1 PUSH2 0xB692 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B5CAD2BEF000 DUP2 GT PUSH2 0x4A3D JUMPI PUSH2 0xDA1 SWAP2 PUSH5 0x174876E800 PUSH1 0x42 SWAP3 DIV SWAP1 PUSH2 0xB6AC JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xDA1 SWAP3 AND PUSH2 0x7032 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xACB5 JUMPI PUSH32 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH0 MSTORE DUP3 PUSH1 0x20 MSTORE PUSH2 0xAC3E PUSH1 0x40 PUSH0 KECCAK256 TLOAD SWAP3 DUP4 PUSH2 0x96C7 JUMP JUMPDEST SWAP2 DUP3 PUSH2 0xAC7E JUMPI POP PUSH32 0x0 SWAP3 DUP4 TLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP5 TSTORE PUSH2 0xAFB2 JUMP JUMPDEST SWAP3 PUSH2 0x6CB SWAP4 PUSH2 0xAFB2 JUMPI PUSH2 0xACB0 PUSH32 0x0 PUSH2 0xA7C6 JUMP JUMPDEST PUSH2 0xAFB2 JUMP JUMPDEST POP POP JUMP JUMPDEST SWAP1 PUSH2 0xACC6 DUP3 PUSH1 0x80 SHR PUSH2 0xB8A2 JUMP JUMPDEST SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 SWAP4 AND DUP1 PUSH2 0xACEE JUMPI POP POP PUSH1 0x2 SWAP2 PUSH2 0x8EEE SWAP2 PUSH2 0x8E73 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 POP SWAP1 PUSH1 0x24 PUSH1 0x20 SWAP3 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP3 PUSH32 0xA28A47700000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH1 0x4 DUP5 ADD MSTORE AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x8F53 PUSH2 0x8EEE SWAP3 PUSH1 0x2 SWAP5 PUSH0 SWAP2 PUSH2 0x8F5C JUMPI POP PUSH2 0xB8A2 JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x449E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP4 PUSH2 0xC0AB JUMP JUMPDEST PUSH32 0x0 GT PUSH2 0xADBB JUMPI JUMP JUMPDEST PUSH32 0x1ED4D11800000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 ADD DUP1 SWAP4 GT PUSH2 0x449E JUMPI DUP2 AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP3 DUP4 SUB SWAP3 DUP4 GT PUSH2 0x449E JUMPI PUSH2 0x6CB SWAP4 PUSH2 0xC0AB JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP1 SWAP5 PUSH0 SWAP6 PUSH0 SWAP6 DUP2 PUSH2 0xAE3D JUMPI POP POP POP POP POP JUMP JUMPDEST DUP5 SWAP8 POP PUSH2 0x6FF8 PUSH2 0xAE56 DUP3 PUSH1 0xC0 PUSH2 0xAE62 SWAP7 SWAP8 SWAP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP2 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP5 MLOAD PUSH1 0x1 DUP2 PUSH1 0x3 SHR AND ISZERO PUSH2 0xAE78 JUMPI JUMPDEST DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST PUSH3 0xFFFFFF SWAP2 SWAP3 SWAP5 POP PUSH1 0x2A SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI PUSH2 0xAEAE PUSH8 0xDE0B6B3A7640000 SWAP2 DUP7 PUSH2 0x5EA4 JUMP JUMPDEST DIV SWAP3 DUP5 DUP5 GT PUSH2 0xAF24 JUMPI DUP1 PUSH2 0x7904 PUSH2 0xAF03 PUSH2 0xAEE0 PUSH2 0xAF1B SWAP5 PUSH2 0x7904 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH2 0xAEFD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0xA66A JUMP JUMPDEST SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 DUP1 PUSH2 0xAE71 JUMP JUMPDEST PUSH32 0x4C69AC5D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xAF7D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 PUSH2 0xAF6B DUP4 DUP7 PUSH2 0x5659 JUMP JUMPDEST MLOAD AND SWAP1 DUP4 AND EQ PUSH2 0x9594 JUMPI PUSH1 0x1 ADD PUSH2 0xAF4F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 PUSH32 0xDDEF98D700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 TSTORE JUMP JUMPDEST PUSH1 0x5 SHR PUSH1 0x1 AND ISZERO PUSH2 0xAFD5 JUMPI JUMP JUMPDEST PUSH32 0x4876C0BC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x4 SHR PUSH1 0x1 AND PUSH2 0xB009 JUMPI JUMP JUMPDEST PUSH32 0xD4F5779C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 MLOAD SWAP1 DUP2 SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xB073 JUMPI POP POP DUP2 LT ISZERO PUSH2 0xB04B JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x7E46BDDC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0xB07D DUP2 DUP4 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB08B JUMPI JUMPDEST PUSH1 0x1 ADD PUSH2 0xB038 JUMP JUMPDEST SWAP3 DUP3 SUB PUSH2 0xB098 JUMPI DUP3 PUSH2 0xB083 JUMP JUMPDEST PUSH32 0x6B8C3BE500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x12 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST PUSH2 0xB0FB PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 SWAP5 SWAP2 PUSH1 0x20 PUSH2 0xB16B PUSH2 0xB11F DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 PUSH2 0x6A07 JUMP JUMPDEST SWAP5 PUSH2 0xB12A DUP8 DUP8 PUSH2 0xBE25 JUMP JUMPDEST PUSH2 0xB134 DUP2 DUP4 PUSH2 0xC2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP14 DUP11 PUSH1 0x4 DUP6 ADD PUSH2 0xB0E3 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xB1F6 SWAP6 PUSH2 0x98CF PUSH2 0xB1CA DUP6 PUSH2 0xB1E0 SWAP5 PUSH2 0xB1E9 SWAP10 DUP13 SWAP10 DUP11 PUSH2 0xB1F0 SWAP10 PUSH0 SWAP5 PUSH2 0xB1F9 JUMPI JUMPDEST POP SWAP1 PUSH2 0xB1BE PUSH2 0xB1B7 PUSH2 0xB1B0 PUSH2 0xB1C5 SWAP5 PUSH2 0x83E0 SWAP8 SWAP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP8 PUSH2 0x55E5 JUMP JUMPDEST SWAP13 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0x8F7B JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL DUP3 PUSH2 0xBE25 JUMP JUMPDEST SWAP4 DUP5 SWAP3 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP6 DUP7 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x6A07 JUMP JUMPDEST SWAP2 JUMP JUMPDEST PUSH2 0x83E0 SWAP5 POP PUSH2 0xB1B7 PUSH2 0xB1B0 PUSH2 0xB1C5 SWAP5 SWAP4 PUSH2 0xB224 PUSH2 0xB1BE SWAP5 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 POP SWAP4 SWAP5 POP POP POP PUSH2 0xB197 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD PUSH2 0xB241 DUP5 MLOAD DUP3 PUSH2 0x7E72 JUMP JUMPDEST PUSH1 0x5 SHL SWAP4 ADD SWAP2 ADD MCOPY JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0xB262 PUSH0 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0xB262 PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0xF2D JUMP JUMPDEST SWAP3 SWAP2 SWAP1 SWAP4 DUP4 MLOAD PUSH2 0xB28E DUP2 PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH2 0xB298 DUP3 PUSH2 0x5628 JUMP JUMPDEST SWAP7 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xB494 JUMPI POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 PUSH1 0x40 MLOAD SWAP6 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP9 MSTORE PUSH1 0x20 SWAP9 DUP10 DUP10 DUP1 PUSH2 0xB2EB DUP5 PUSH1 0x4 DUP4 ADD PUSH2 0xB24B JUMP JUMPDEST SUB DUP2 DUP10 GAS STATICCALL SWAP9 DUP10 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP10 PUSH2 0xB475 JUMPI JUMPDEST POP PUSH1 0x40 MLOAD DUP6 DUP2 MSTORE DUP11 DUP2 DUP1 PUSH2 0xB315 DUP12 PUSH1 0x4 DUP4 ADD PUSH2 0xB267 JUMP JUMPDEST SUB DUP2 DUP11 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI DUP11 PUSH2 0xB1C5 PUSH2 0xB350 SWAP4 PUSH2 0xB349 SWAP4 DUP16 PUSH0 SWAP3 PUSH2 0xB458 JUMPI JUMPDEST SWAP12 SWAP10 SWAP14 SWAP13 SWAP11 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 POP PUSH2 0x5E87 JUMP JUMPDEST DUP1 SWAP4 PUSH2 0xC2B2 JUMP JUMPDEST PUSH0 JUMPDEST DUP10 DUP2 LT PUSH2 0xB3BF JUMPI POP POP POP POP PUSH2 0xB376 SWAP6 POP PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP5 DUP3 SWAP4 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xB267 JUMP JUMPDEST SUB SWAP2 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI DUP4 PUSH2 0xB1C5 SWAP4 PUSH2 0xB39C SWAP3 PUSH2 0xB1F6 SWAP8 PUSH0 SWAP3 PUSH2 0xB3A2 JUMPI JUMPDEST POP POP PUSH2 0x55E5 JUMP JUMPDEST SWAP1 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0xB3B8 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xB395 JUMP JUMPDEST DUP7 SWAP9 SWAP10 SWAP6 SWAP8 POP DUP4 DUP14 DUP4 SWAP5 SWAP6 SWAP7 SWAP9 DUP4 PUSH2 0xB3E3 PUSH2 0xB3DC DUP3 PUSH1 0x1 SWAP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP10 PUSH2 0xC29F JUMP JUMPDEST DUP1 PUSH2 0xB3EE DUP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD GT PUSH2 0xB40A JUMPI JUMPDEST POP POP POP POP POP ADD SWAP1 DUP11 SWAP7 SWAP5 SWAP9 SWAP8 SWAP6 SWAP4 SWAP3 SWAP2 PUSH2 0xB352 JUMP JUMPDEST DUP2 DUP4 PUSH2 0xB42B PUSH2 0xB443 SWAP8 PUSH2 0xB435 SWAP5 PUSH2 0xB424 DUP6 PUSH2 0xB43C SWAP10 PUSH2 0x5659 JUMP JUMPDEST MLOAD SUB PUSH2 0xB641 JUMP JUMPDEST PUSH2 0x7257 DUP4 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0xB44D DUP3 DUP12 PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP5 DUP14 DUP11 DUP4 PUSH0 PUSH2 0xB3F5 JUMP JUMPDEST PUSH2 0xB46E SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP16 PUSH2 0xB335 JUMP JUMPDEST PUSH2 0xB48D SWAP2 SWAP10 POP DUP11 RETURNDATASIZE DUP13 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP8 PUSH0 PUSH2 0xB2FE JUMP JUMPDEST DUP1 PUSH2 0xB4BE PUSH2 0xB4B9 PUSH2 0xB4A7 PUSH1 0x1 SWAP5 DUP13 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xB4B2 DUP5 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x6A07 JUMP JUMPDEST PUSH2 0x55D7 JUMP JUMPDEST PUSH2 0xB4C8 DUP3 DUP9 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xB29B JUMP JUMPDEST PUSH1 0x7 SHR PUSH1 0x1 AND ISZERO PUSH2 0xB4DC JUMPI JUMP JUMPDEST PUSH32 0xEFE0265D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 PUSH2 0xB510 DUP5 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP4 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xB545 JUMPI DUP1 PUSH2 0xB534 DUP6 DUP6 PUSH2 0xB52E PUSH1 0x1 SWAP6 DUP8 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0xBE7E JUMP JUMPDEST PUSH2 0xB53E DUP3 DUP10 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xB513 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST SWAP1 PUSH2 0xDA1 SWAP3 PUSH2 0xB559 SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 PUSH2 0xBE25 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH8 0xDE0B6B3A7640000 PUSH2 0xB5A3 PUSH2 0x161E SWAP5 DUP1 PUSH2 0xB582 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x916E PUSH2 0xB594 DUP7 PUSH1 0xC0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP8 PUSH1 0xA0 DUP12 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST DIV SWAP4 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0x80 PUSH2 0xB5E7 PUSH2 0x161E SWAP4 DUP1 PUSH2 0xB5C6 DUP6 PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0x7EFF PUSH2 0xB5D8 DUP6 PUSH1 0xC0 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x7EF8 DUP7 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP4 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST SWAP3 PUSH2 0xB5E7 PUSH2 0x161E SWAP4 PUSH1 0x80 SWAP3 DUP2 PUSH2 0xB609 DUP7 PUSH1 0x60 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH2 0xB613 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0xB639 JUMPI PUSH1 0x2 SWAP1 JUMPDEST PUSH2 0xB629 DUP6 PUSH1 0xC0 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x42EE DUP7 PUSH1 0xA0 DUP11 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0xB61B JUMP JUMPDEST SWAP1 PUSH2 0xB64B SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP2 PUSH2 0xB66D SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI DUP2 ISZERO PUSH2 0x8F85 JUMPI DIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x18 SHR PUSH2 0x8FD5 JUMPI PUSH1 0x2A SHL SWAP1 PUSH3 0xFFFFFF PUSH1 0x2A SHL NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x100 DUP1 DUP5 LT ISZERO PUSH2 0x700A JUMPI DUP4 DUP2 SUB SWAP1 DUP2 GT PUSH2 0x449E JUMPI DUP1 PUSH1 0xFF LT PUSH0 EQ PUSH2 0xB6EE JUMPI POP PUSH1 0xFF JUMPDEST PUSH1 0x18 GT PUSH2 0x700A JUMPI DUP1 PUSH1 0x18 SHR PUSH2 0x8FD5 JUMPI PUSH3 0xFFFFFF SWAP1 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 JUMP JUMPDEST PUSH2 0xB6D0 JUMP JUMPDEST SWAP1 PUSH2 0x6CB PUSH2 0xB707 SWAP3 PUSH1 0x40 MLOAD SWAP4 DUP5 DUP1 SWAP3 PUSH2 0x569A JUMP JUMPDEST SUB DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH2 0xB718 DUP3 PUSH2 0x922 JUMP JUMPDEST PUSH2 0xB725 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x86F JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x1F NOT PUSH2 0xB735 DUP3 SWAP5 PUSH2 0x922 JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xB745 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0xB750 PUSH2 0x5980 JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0xB739 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD PUSH2 0xB769 DUP2 PUSH2 0x802 JUMP JUMPDEST PUSH1 0x40 PUSH1 0xFF DUP3 SWAP5 SLOAD DUP2 DUP2 AND PUSH2 0xB77C DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 PUSH1 0x8 SHR AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0xA8 SHR AND ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD DUP1 MLOAD MLOAD SWAP4 PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0xB7B4 JUMPI POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xB7C8 PUSH2 0x28F7 PUSH1 0x1 SWAP4 PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xB7F3 PUSH2 0xB7DD DUP4 DUP10 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB7FE DUP4 DUP8 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD DUP2 GT PUSH2 0xB83E JUMPI JUMPDEST POP POP PUSH2 0xB825 PUSH2 0xB816 DUP3 DUP7 MLOAD PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x1A11 DUP4 PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xB837 DUP3 DUP9 SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE ADD PUSH2 0xB7A5 JUMP JUMPDEST PUSH2 0xB882 PUSH2 0xB89A SWAP2 PUSH2 0xB87C PUSH2 0xB873 PUSH2 0xB866 DUP7 DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP3 PUSH2 0xB43C DUP9 DUP13 MLOAD PUSH2 0x5659 JUMP JUMPDEST DUP3 PUSH1 0x80 SHR PUSH2 0x6A07 JUMP JUMPDEST SWAP1 PUSH2 0xABDA JUMP JUMPDEST SWAP2 DUP6 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH0 DUP1 PUSH2 0xB806 JUMP JUMPDEST PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB8CC JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x24775E0600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP4 DUP2 AND DUP5 DUP5 AND SUB PUSH2 0xB915 JUMPI POP POP POP POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH2 0xB93F SWAP4 PUSH2 0x7904 SWAP3 AND PUSH0 MSTORE PUSH1 0x10 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH3 0xF4240 DUP2 LT PUSH2 0xB950 JUMPI POP JUMP JUMPDEST PUSH32 0xD38D20FC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 EQ DUP1 ISZERO SWAP3 SWAP2 SWAP1 PUSH2 0xB98F JUMPI JUMPDEST POP POP PUSH2 0x7E79 JUMPI JUMP JUMPDEST EQ ISZERO SWAP1 POP PUSH0 DUP1 PUSH2 0xB987 JUMP JUMPDEST DUP1 MLOAD PUSH2 0xB9A5 DUP2 PUSH2 0xEBD JUMP JUMPDEST PUSH2 0xB9AE DUP2 PUSH2 0xEBD JUMP JUMPDEST DUP1 PUSH2 0xB9C1 JUMPI POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xB9CD PUSH1 0x1 SWAP3 PUSH2 0xEBD JUMP JUMPDEST SUB PUSH2 0xBA42 JUMPI PUSH1 0x20 PUSH2 0xB9EC PUSH2 0x2075 DUP3 PUSH1 0x4 SWAP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP3 DUP4 DUP1 SWAP3 PUSH32 0x679AEFCE00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP2 PUSH2 0xBA29 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0xDA1 SWAP2 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH32 0xDF45063200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x6 SHR PUSH1 0x1 AND ISZERO PUSH2 0xBA77 JUMPI JUMP JUMPDEST PUSH32 0xCF0A95C000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 SWAP5 SWAP3 SWAP2 SWAP3 DUP2 MLOAD SWAP5 PUSH2 0xBAB0 DUP7 PUSH2 0x5628 JUMP JUMPDEST SWAP5 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0xBC80 JUMPI POP PUSH2 0xBAC9 SWAP1 PUSH2 0x85F6 DUP10 DUP9 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xBAD3 DUP9 DUP8 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH1 0x40 MLOAD SWAP5 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP8 MSTORE PUSH1 0x20 DUP8 DUP1 PUSH2 0xBB0E DUP9 PUSH1 0x4 DUP4 ADD PUSH2 0xB24B JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP8 PUSH2 0xBC5F JUMPI JUMPDEST POP PUSH1 0x40 MLOAD SWAP5 DUP5 DUP7 MSTORE PUSH1 0x20 DUP7 DUP1 PUSH2 0xBB43 DUP7 PUSH1 0x4 DUP4 ADD PUSH2 0xB24B JUMP JUMPDEST SUB DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND GAS STATICCALL SWAP4 DUP5 ISZERO PUSH2 0x7AB JUMPI PUSH2 0x98CF PUSH2 0xB1CA DUP13 PUSH2 0xB43C PUSH2 0xBB9E PUSH2 0xBBA5 SWAP7 PUSH2 0xBB97 DUP16 PUSH2 0xBB87 PUSH2 0xBBDB SWAP16 SWAP2 PUSH1 0x20 SWAP15 DUP9 SWAP4 PUSH0 SWAP2 PUSH2 0xBC40 JUMPI JUMPDEST POP PUSH2 0xBE25 JUMP JUMPDEST SWAP3 PUSH2 0xBB92 DUP5 DUP14 PUSH2 0xC3D5 JUMP JUMPDEST PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xB641 JUMP JUMPDEST SWAP2 DUP9 PUSH2 0x5659 JUMP JUMPDEST SWAP4 PUSH2 0xBBB4 DUP6 PUSH2 0x85F6 DUP13 DUP7 PUSH2 0x5659 JUMP JUMPDEST PUSH2 0xBBBE DUP12 DUP6 PUSH2 0x5659 JUMP JUMPDEST MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x40 MLOAD DUP1 SWAP8 DUP2 SWAP6 DUP3 SWAP5 DUP4 MSTORE PUSH1 0x4 DUP4 ADD PUSH2 0xB267 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xB1F6 SWAP6 PUSH2 0xBC11 SWAP4 PUSH0 SWAP4 PUSH2 0xBC17 JUMPI JUMPDEST POP PUSH2 0xBC03 PUSH2 0xBC0A SWAP2 PUSH2 0x5628 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0x5659 JUMP JUMPDEST MSTORE DUP4 PUSH2 0x55E5 JUMP JUMPDEST SWAP1 PUSH2 0xBE7E JUMP JUMPDEST PUSH2 0xBC0A SWAP2 SWAP4 POP PUSH2 0xBC38 PUSH2 0xBC03 SWAP2 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP4 SWAP2 POP PUSH2 0xBBF6 JUMP JUMPDEST PUSH1 0x20 PUSH2 0xBC59 SWAP3 POP RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST PUSH0 PUSH2 0xBB81 JUMP JUMPDEST PUSH2 0xBC79 SWAP2 SWAP8 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP6 PUSH0 PUSH2 0xBB2A JUMP JUMPDEST DUP1 PUSH2 0xBC96 PUSH2 0xBC90 PUSH1 0x1 SWAP4 DUP9 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x55D7 JUMP JUMPDEST PUSH2 0xBCA0 DUP3 DUP11 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xBAB3 JUMP JUMPDEST SWAP1 SWAP5 SWAP2 DUP4 SUB SWAP2 DUP4 DUP4 GT PUSH2 0x449E JUMPI PUSH1 0x20 PUSH2 0xBCD6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH2 0xBCCC DUP8 DUP8 PUSH2 0xBE25 JUMP JUMPDEST PUSH2 0xB134 DUP2 DUP4 PUSH2 0xC3D5 JUMP JUMPDEST SUB SWAP3 AND GAS STATICCALL DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH2 0xB1F6 SWAP6 PUSH2 0x7EFF DUP9 PUSH2 0xB1E0 SWAP4 PUSH2 0xB1E9 SWAP9 PUSH2 0xBD21 SWAP7 PUSH0 SWAP3 PUSH2 0xBD27 JUMPI JUMPDEST POP PUSH2 0xBD0F DUP3 PUSH2 0x85F6 PUSH2 0x98CF SWAP5 SWAP6 DUP12 PUSH2 0x5659 JUMP JUMPDEST SWAP9 PUSH2 0xBD1A DUP14 DUP11 PUSH2 0x5659 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0xBE7E JUMP JUMPDEST MSTORE PUSH2 0x55E5 JUMP JUMPDEST PUSH2 0x98CF SWAP3 POP PUSH2 0x85F6 SWAP4 PUSH2 0xBD4B PUSH2 0xBD0F SWAP3 PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP4 POP SWAP4 POP PUSH2 0xBCFC JUMP JUMPDEST SWAP1 SWAP3 SWAP2 PUSH2 0xBD61 DUP3 MLOAD PUSH2 0x5628 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xBD9E JUMPI PUSH2 0xBD81 DUP4 PUSH2 0xBD7B DUP4 DUP6 PUSH2 0x5659 JUMP JUMPDEST MLOAD PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 DUP7 ISZERO PUSH2 0x8F85 JUMPI DUP7 PUSH1 0x1 SWAP3 DIV PUSH2 0xBD97 DUP3 DUP8 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xBD64 JUMP JUMPDEST POP POP POP SWAP2 POP JUMP JUMPDEST ORIGIN ISZERO DUP1 PUSH2 0xBDAF JUMPI SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SLOAD AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 ORIGIN PUSH2 0xBDFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xBDEE SWAP3 AND PUSH0 MSTORE PUSH1 0xF PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST DUP1 SLOAD SWAP2 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x449E JUMPI SSTORE JUMP JUMPDEST PUSH32 0x67F84AB200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0xBE56 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 ISZERO PUSH2 0xBE56 JUMPI PUSH1 0x1 SWAP2 PUSH2 0xBE90 SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP1 DUP3 DIV MUL DUP2 SUB PUSH2 0xBEB4 JUMPI SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST PUSH0 DUP2 SLT PUSH2 0xBECC JUMPI SWAP1 JUMP JUMPDEST PUSH32 0xA8CE443200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH0 PUSH1 0x44 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 PUSH1 0x64 DUP2 ADD JUMPDEST SUB SWAP2 PUSH2 0xBF56 PUSH1 0x1F NOT SWAP4 DUP5 DUP2 ADD DUP8 MSTORE DUP7 PUSH2 0x86F JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP3 DUP8 MLOAD SWAP1 DUP3 DUP6 GAS CALL SWAP1 PUSH2 0xBF73 PUSH2 0xC05E JUMP JUMPDEST DUP3 PUSH2 0xBFDD JUMPI JUMPDEST POP DUP2 PUSH2 0xBFD2 JUMPI JUMPDEST POP ISZERO PUSH2 0xBF8D JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x24 DUP6 ADD MSTORE PUSH0 PUSH1 0x44 DUP6 ADD MSTORE PUSH2 0xBFC8 SWAP4 PUSH2 0x4474 SWAP2 PUSH2 0xBFC2 SWAP1 DUP3 PUSH1 0x64 DUP2 ADD PUSH2 0x10C0 JUMP JUMPDEST DUP3 PUSH2 0xC22F JUMP JUMPDEST PUSH0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6FCB JUMP JUMPDEST SWAP1 POP EXTCODESIZE ISZERO ISZERO PUSH0 PUSH2 0xBF80 JUMP JUMPDEST DUP1 MLOAD SWAP2 SWAP3 POP DUP2 ISZERO SWAP2 DUP3 ISZERO PUSH2 0xBFF5 JUMPI JUMPDEST POP POP SWAP1 PUSH0 PUSH2 0xBF79 JUMP JUMPDEST PUSH2 0xC008 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x5324 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xBFEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x44 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP3 DUP4 PUSH1 0x64 DUP2 ADD PUSH2 0xBF42 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0xC088 JUMPI RETURNDATASIZE SWAP1 PUSH2 0xC06F DUP3 PUSH2 0xD34 JUMP JUMPDEST SWAP2 PUSH2 0xC07D PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x86F JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0xDA1 SWAP4 PUSH1 0x20 DUP2 MLOAD SWAP2 ADD DUP3 DUP6 GAS CALL PUSH2 0xC0A5 PUSH2 0xC05E JUMP JUMPDEST SWAP2 PUSH2 0xC479 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP1 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x20 SWAP6 SWAP4 SWAP5 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP2 DUP8 DUP4 PUSH1 0x24 DUP2 DUP8 DUP7 AND GAS STATICCALL SWAP3 DUP4 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP4 PUSH2 0xC210 JUMPI JUMPDEST POP DUP1 DUP4 LT PUSH2 0xC1CB JUMPI POP PUSH2 0xC125 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST SSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE ADDRESS PUSH1 0x4 DUP4 ADD MSTORE DUP4 AND SWAP1 DUP5 DUP2 PUSH1 0x24 DUP2 DUP6 GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP6 PUSH2 0xC1AC JUMPI JUMPDEST POP POP DUP2 DUP5 LT PUSH2 0xC171 JUMPI POP POP PUSH2 0x5DB1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 JUMP JUMPDEST PUSH32 0x1149424D00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE POP PUSH1 0x44 MSTORE PUSH1 0x64 PUSH0 REVERT JUMPDEST PUSH2 0xC1C3 SWAP3 SWAP6 POP DUP1 RETURNDATASIZE LT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP3 PUSH0 DUP1 PUSH2 0xC14B JUMP JUMPDEST SWAP1 POP PUSH2 0x2358 SWAP3 DUP7 PUSH32 0x1C6A537500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x64 SWAP5 AND PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE JUMP JUMPDEST PUSH2 0xC228 SWAP2 SWAP4 POP DUP9 RETURNDATASIZE DUP11 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP2 PUSH0 PUSH2 0xC101 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC243 SWAP2 AND SWAP2 DUP3 PUSH2 0xC08D JUMP JUMPDEST DUP1 MLOAD SWAP1 DUP2 ISZERO ISZERO SWAP2 DUP3 PUSH2 0xC284 JUMPI JUMPDEST POP POP PUSH2 0xC259 JUMPI POP JUMP JUMPDEST PUSH32 0x5274AFE700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xC297 SWAP3 POP PUSH1 0x20 DUP1 SWAP2 DUP4 ADD ADD SWAP2 ADD PUSH2 0x5324 JUMP JUMPDEST ISZERO PUSH0 DUP1 PUSH2 0xC250 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH2 0x9173 SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x273C1ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0xC335 JUMPI JUMPDEST POP DUP2 DUP2 GT PUSH2 0xC307 JUMPI POP POP JUMP JUMPDEST PUSH32 0x3E8960DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0xC34F SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0xC2FB JUMP JUMPDEST SWAP1 PUSH5 0xFFFFFFFFFF PUSH2 0xC366 DUP3 PUSH2 0x5628 JUMP JUMPDEST SWAP3 PUSH1 0x5A SHR AND PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xC37A JUMPI POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP1 DUP3 MUL SWAP1 DUP3 DUP3 DIV EQ DUP3 ISZERO OR ISZERO PUSH2 0x449E JUMPI DUP3 PUSH1 0x1F SWAP2 SHR AND SWAP1 PUSH1 0x4D DUP3 GT PUSH2 0x449E JUMPI PUSH1 0x1 SWAP2 PUSH1 0xA EXP PUSH2 0xC3AB DUP3 DUP8 PUSH2 0x5659 JUMP JUMPDEST MSTORE ADD PUSH2 0xC36D JUMP JUMPDEST PUSH3 0xFFFFFF SWAP1 PUSH1 0x42 SHR AND PUSH5 0x174876E800 SWAP1 DUP2 DUP2 MUL SWAP2 DUP2 DUP4 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x449E JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xB677FA5600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x7AB JUMPI PUSH0 SWAP3 PUSH2 0xC458 JUMPI JUMPDEST POP DUP2 DUP2 LT PUSH2 0xC42A JUMPI POP POP JUMP JUMPDEST PUSH32 0xE31C95BE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST PUSH2 0xC472 SWAP2 SWAP3 POP PUSH1 0x20 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1496 JUMPI PUSH2 0x1488 DUP2 DUP4 PUSH2 0x86F JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0xC41E JUMP JUMPDEST SWAP1 PUSH2 0xC4B6 JUMPI POP DUP1 MLOAD ISZERO PUSH2 0xC48E JUMPI DUP1 MLOAD SWAP1 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD ISZERO DUP1 PUSH2 0xC4FC JUMPI JUMPDEST PUSH2 0xC4C7 JUMPI POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE AND PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP1 EXTCODESIZE ISZERO PUSH2 0xC4BF JUMP JUMPDEST SWAP2 PUSH2 0x916E PUSH2 0x9173 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP5 PUSH2 0x5EA4 JUMP JUMPDEST PUSH2 0xDA1 SWAP3 SWAP2 PUSH2 0x7EFF SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST SWAP3 SWAP2 SWAP3 DUP1 PUSH1 0x1 EQ PUSH2 0xC576 JUMPI PUSH1 0x2 EQ PUSH2 0xC569 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x51 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0xDA1 SWAP3 PUSH2 0x7EFF SWAP2 PUSH2 0x5EA4 JUMP JUMPDEST POP SWAP1 PUSH2 0x916E PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH2 0x9173 SWAP4 PUSH2 0x5EA4 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA 0xD6 DUP10 GAS BYTE SWAP5 PUSH12 0x9D94F349F2B7FA809136DB13 0x1F 0xD9 0x4E XOR SWAP3 SWAP11 BLOBBASEFEE 0xF6 SLOAD 0xB5 SWAP13 0xC6 0xD9 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"2335:29442:89:-:0;;;;;;;;;-1:-1:-1;2335:29442:89;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;25977:26;;2335:29442;;;:::i;:::-;;;25977:26;-1:-1:-1;;;;;2335:29442:89;;25977:26;;;;;;2335:29442;25977:26;;2335:29442;25977:26;;2335:29442;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;25977:26;;2335:29442;;25977:26;;;;;;;;2335:29442;25977:26;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;2335:29442;25977:26;;;;;;;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;12975:4;2335:29442;;;;;:::i;:::-;12975:4;:::i;2335:29442::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;5554:461;2335:29442;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;5554:461;:::i;2335:29442::-;;-1:-1:-1;2335:29442:89;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;2335:29442:89;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;:::o;:::-;;;;;;;23219:91;2335:29442;;;:::i;:::-;;;;;;;:::i;:::-;;;;;23017:18;23109:99;23017:18;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23017:18:89;;;;;;;;:::i;:::-;2335:29442;23007:29;;23109:99;;;;:::i;:::-;2335:29442;;;;;;;23257:18;2335:29442;;23257:18;;;23017;23257;;;;;:::i;:::-;;;;;;;;;:::i;:::-;2335:29442;23247:29;;23227:49;23219:91;:::i;:::-;2335:29442;;;;;;;;;;;;;:::i;:::-;;;;;23017:18;2335:29442;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;17033:100;2335:29442;;;;;;;;:::i;:::-;;;;;;;;;17033:100;;:::i;:::-;2335:29442;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6490:63:89;2335:29442;;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;2539:209:46;;;;;;;11205:402:72;;6490:63:89;2335:29442;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27366:67:89;2335:29442;;;;27366:67;:::i;:::-;2335:29442;;-1:-1:-1;2335:29442:89;27329:20;2335:29442;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;17281:8;2335:29442;;;;;;:::i;:::-;17281:8;;:::i;2335:29442::-;-1:-1:-1;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;13352:24:66;2335:29442:89;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;13352:24:66;:::i;:::-;2335:29442:89;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;8470:156:46;6980:15:89;2335:29442;8470:156:46;568:1:75;8470:156:46;;;;;;6980:15:89;2335:29442;-1:-1:-1;2335:29442:89;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;9342:26:69;2335:29442:89;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;1083:103:50;;:::i;:::-;2707:73:66;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;;;7242:11:64;2335:29442:89;;;;;;;;;;;;;7296:30:64;;7320:4;2335:29442:89;7296:30:64;;2335:29442:89;;;;;;;;;;7296:30:64;;;;;;;2335:29442:89;7296:30:64;7391:32;7296:30;-1:-1:-1;7296:30:64;;;2335:29442:89;7336:18:64;;;;-1:-1:-1;;;;;2335:29442:89;;;7242:11:64;2335:29442:89;;;;;;;7336:18:64;2335:29442:89;7391:32:64;:::i;:::-;7656:19;;;;7652:532;;2335:29442:89;8215:6:64;;;;;:::i;:::-;1148:1:50;;:::i;:::-;2335:29442:89;;;;;;;;;;;;;7652:532:64;;-1:-1:-1;8215:6:64;7652:532;;7296:30;;;;2335:29442:89;7296:30:64;2335:29442:89;7296:30:64;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;54102:6:64;2335:29442:89;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;54053:6:64;2335:29442:89;;54026:10:64;;;;54053:6;:::i;:::-;54026:10;54102:6;:::i;:::-;2335:29442:89;;;54126:4:64;2335:29442:89;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;21772:54;2335:29442;;;:::i;:::-;;;;:::i;:::-;;21772:54;:::i;:::-;2335:29442;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2335:29442:89;;;;;;15152:60:66;;2335:29442:89;15152:60:66;;;2335:29442:89;15152:60:66;;;;;;;;;-1:-1:-1;15152:60:66;;;2335:29442:89;15132:80:66;;;15128:143;;2335:29442:89;;;15305:60:66;;;;2335:29442:89;15305:60:66;;;;;;;;;-1:-1:-1;15305:60:66;;;2335:29442:89;15285:80:66;;;;15281:144;;15564:21;;15540;15564:67;15647:49;15564:21;;15647:49;15564:21;-1:-1:-1;;;;;2335:29442:89;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;15564:21:66;2335:29442:89;15564:67:66;:::i;:::-;15540:21;-1:-1:-1;;;;;2335:29442:89;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;15540:21:66;2335:29442:89;;;;;;;;;;;;;;15647:49:66;;;;2335:29442:89;15281:144:66;15388:26;-1:-1:-1;15388:26:66;2335:29442:89;-1:-1:-1;15388:26:66;15305:60;;;;;;-1:-1:-1;15305:60:66;;;;;;:::i;:::-;;;;;15128:143;15235:25;-1:-1:-1;15235:25:66;2335:29442:89;-1:-1:-1;15235:25:66;15152:60;;;;;;;;;;;;;;:::i;:::-;;;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;17490:18;2335:29442;;;;-1:-1:-1;2335:29442:89;;17545:11;2335:29442;;;-1:-1:-1;2335:29442:89;;17593:24;;;;:::i;:::-;17633:13;-1:-1:-1;17648:13:89;;;;;;2335:29442;;;;;;;:::i;17663:3::-;2335:29442;;;-1:-1:-1;2335:29442:89;;;;1237:14:41;2335:29442:89;-1:-1:-1;2335:29442:89;;1460:31:41;17682:53:89;;;;:::i;:::-;2335:29442;;17633:13;;2335:29442;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;12512:24;2335:29442;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;12198:11;2335:29442;;;;-1:-1:-1;2335:29442:89;;;;;;;;:::i;:::-;;;;:::i;:::-;12226:85;2335:29442;;;;12234:39;12226:85;:::i;:::-;12321:94;2335:29442;;;;12329:48;12321:94;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;;12512:18;2335:29442;;;;;;;12512:24;12551:13;-1:-1:-1;12585:3:89;2335:29442;;12566:17;;;;;12662:18;12627:83;12662:18;2335:29442;12662:18;;;:::i;:::-;2335:29442;12682:27;;;;:::i;:::-;2335:29442;12627:83;;:::i;:::-;12604:20;;;2335:29442;;;;;;;;;;12604:20;2335:29442;;12551:13;;2335:29442;;;;3660:6;2335:29442;;;:::i;:::-;3660:6;;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;9520:18:69;2335:29442:89;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5562:81:66;;;:::i;:::-;4676:32:89;;:::i;:::-;2335:29442;4767:4;2335:29442;;-1:-1:-1;;;;;4782:16:89;4854:24;4782:16;;2335:29442;4854:24;;:::i;:::-;4782:214;;;;;;-1:-1:-1;2335:29442:89;;;;;;;4782:214;;;;;;;2335:29442;4782:214;;2335:29442;;4782:214;;2335:29442;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4782:214;;;;;;;;;;2335:29442;4782:214;;;;;;:::i;:::-;;;:::i;2335:29442::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;:::i;:::-;2707:73:66;;:::i;:::-;8882:4;-1:-1:-1;;;;;2335:29442:89;;;8882:4:66;:::i;:::-;37889:11:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;37889:11:64;:::i;:::-;38387:75;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;38387:75:64;:::i;:::-;40511:103;2335:29442:89;38508:15:64;;;2335:29442:89;38532:27:64;2335:29442:89;38532:20:64;;;;;2335:29442:89;38532:27:64;;:::i;:::-;38893:20;;38963:30;;;;38893:143;38963:30;;39007:19;;;;;;;38893:143;;:::i;:::-;2335:29442:89;39130:57:64;2335:29442:89;;7916:84:46;5866:205:70;958:1:71;7916:84:46;;5866:205:70;;39130:57:64;39126:897;;2335:29442:89;40511:103:64;;;;;;:::i;:::-;40451:163;;;;;;40816:56;2335:29442:89;;2464:1:71;6405:203:70;958:1:71;7916:84:46;;6405:203:70;;40816:56:64;40812:495;;2335:29442:89;;;;;;;;;;:::i;40812:495:64:-;2335:29442:89;;;;;;41028:268:64;2335:29442:89;;;40972:28:64;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;39382:15:64;2335:29442:89;;;;;;;40972:28:64;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;;40972:28:64;2335:29442:89;;;41098:10:64;41028:268;;:::i;:::-;40812:495;;;;;;;39126:897;39382:28;39857:155;2335:29442:89;;;39382:28:64;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;39382:28:64;39304:10;;39382:28;;:::i;:::-;39715:19;39682:31;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;39682:31:64;39715:19;;:::i;:::-;39857:20;39931:30;;39979:19;;39857:155;;:::i;:::-;39126:897;;;;;2335:29442:89;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;2335:29442:89;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;19659:54;;;;;:::i;:::-;1083:103:50;;;:::i;:::-;2335:29442:89;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;19189:41:64;19185:325;;2335:29442:89;19543:34:64;;;;2335:29442:89;;19543:34:64;:::i;:::-;19743:20;19733:54;19743:20;;;2335:29442:89;19733:38:64;:31;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;19733:38:64;2335:29442:89;;;19733:54:64;;;;;;2335:29442:89;19733:54:64;;2335:29442:89;19733:54:64;;;:::i;:::-;;;;;;;;;;-1:-1:-1;19733:54:64;;;2335:29442:89;19706:81:64;;19821:24;;;:::i;:::-;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;20225:41:64;;20502:29;;;;2335:29442:89;;;20659:620:64;2335:29442:89;20724:30:64;;;21205:60;:39;20724:50;20755:18;;;2335:29442:89;;;20724:50:64;;:::i;:::-;2335:29442:89;21205:19:64;2335:29442:89;21205:19:64;;;2335:29442:89;;21205:39:64;;:::i;:::-;2335:29442:89;21205:60:64;:::i;:::-;20659:620;;;:::i;:::-;21325:30;2335:29442:89;21325:30:64;;2335:29442:89;21294:83:64;;;21411:24;2335:29442:89;21411:24:64;;2335:29442:89;21396:39:64;;;21392:134;;20221:2688;;;;;22993:23;;;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;23018:11:64;;;;:::i;:::-;23054:24;;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;23080:12:64;;;;:::i;:::-;2335:29442:89;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;23377:215:64;;;;;:::i;:::-;23315:28;;;;;;23345;;2335:29442:89;;;;;;;23724:20:64;;;;;;;;:39;;;;:::i;:::-;2335:29442:89;23724:53:64;;;;:::i;:::-;2335:29442:89;;23724:84:64;;;:::i;:::-;23822:19;;;;:::i;:::-;23907:18;;2335:29442:89;;;23939:20:64;;;;:40;;;;:::i;:::-;2335:29442:89;23939:55:64;;;;:::i;:::-;24008:19;;;;:::i;:::-;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;12512:18;2335:29442;;;;;24356:20:64;;;2335:29442:89;;24356:39:64;;;:::i;:::-;2335:29442:89;24409:29:64;2335:29442:89;24409:29:64;;;;2335:29442:89;;24409:48:64;;;:::i;:::-;2335:29442:89;24308:159:64;;;:::i;:::-;2335:29442:89;;24274:31:64;;;2335:29442:89;;;;;;;;;;24274:31:64;2335:29442:89;24560:20:64;2335:29442:89;;24560:40:64;;;:::i;:::-;2335:29442:89;24614:29:64;;2335:29442:89;;24614:49:64;;;:::i;:::-;2335:29442:89;24512:161:64;;;:::i;:::-;2335:29442:89;;24477:32:64;;2335:29442:89;;;;;;;;;;24477:32:64;2335:29442:89;;;;;;24899:27:64;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;24721:257:64;;2335:29442:89;;24721:257:64;1148:1:50;;:::i;:::-;2335:29442:89;;;;;;;;:::i;21392:134:64:-;21462:49;-1:-1:-1;21462:49:64;2335:29442:89;;;;;;;-1:-1:-1;21462:49:64;;-1:-1:-1;21462:49:64;20221:2688;22169:27;;22283:61;22169:27;;;22118:150;22169:27;;;2335:29442:89;5832:87:47;;;;;;;;22118:150:64;;;:::i;:::-;2335:29442:89;;;;22283:61:64;:::i;:::-;22535:30;22472:182;22535:49;2335:29442:89;22535:30:64;;;2335:29442:89;;22535:49:64;;:::i;:::-;2335:29442:89;22602:38:64;2335:29442:89;22602:19:64;;;2335:29442:89;;22602:38:64;;:::i;:::-;2335:29442:89;22472:182:64;;;:::i;:::-;22721:30;2335:29442:89;22721:30:64;;2335:29442:89;22669:83:64;;22785:24;2335:29442:89;22785:24:64;;2335:29442:89;22771:38:64;;;22767:132;;20221:2688;;;;;;19733:54;;;;;;;;;;;;;;;:::i;:::-;;;;;19185:325;19345:34;;;19428:71;19345:69;2335:29442:89;;19386:27:64;;;2335:29442:89;19345:69:64;;:::i;:::-;2335:29442:89;;;;;19428:71:64;:::i;:::-;2335:29442:89;;19185:325:64;;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;;24901:56;2335:29442;;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;24850:20;2335:29442;;;-1:-1:-1;2335:29442:89;;24901:56;:::i;2335:29442::-;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;24646:57;2335:29442;;;:::i;:::-;1083:103:50;;;:::i;:::-;24646:57:89;:::i;:::-;3051:52:52;;;;1640:5:50;551:66;3051:52:52;2335:29442:89;;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;8875:55;2335:29442;;;-1:-1:-1;2335:29442:89;;8875:55;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;:::i;:::-;2707:73:66;;:::i;:::-;2335:29442:89;10848:20:64;;-1:-1:-1;;;;;8882:4:66;2335:29442:89;;;;8882:4:66;:::i;:::-;10980:20:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;10980:20:64;11016:30;;;2335:29442:89;11016:35:64;11012:90;;11116:23;;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;11143:24:64;11116:51;2335:29442:89;11143:24:64;;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;;11116:51:64;2335:29442:89;;11116:51:64;11112:110;;11694:84;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;11694:84:64;11817:41;;;;;:::i;:::-;11907:58;;;;;;:::i;:::-;2335:29442:89;;958:1:71;7916:84:46;;;11976:992:64;;2335:29442:89;;;19097:20:64;;2335:29442:89;958:1:71;7916:84:46;1966:1:71;7916:84:46;13433:346:64;;2335:29442:89;19097:20:64;;;;:::i;:::-;14060:185;;;;;;;2335:29442:89;14488:45:64;2335:29442:89;;2112:1:71;4435:180:70;958:1:71;7916:84:46;;4435:180:70;;14488:45:64;14484:507;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;:::i;:::-;15005:41:64;;15062:28;2335:29442:89;15062:28:64;15001:158;11116:23;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;15001:158:64;15121:27;;2335:29442:89;15121:27:64;15001:158;;;14484:507;2335:29442:89;;;;14633:37:64;;2335:29442:89;14704:276:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;14633:37:64;2335:29442:89;;;14839:10:64;;14704:276;;:::i;:::-;14484:507;;;;;;;;13433:346;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;13540:228:64;11143:24;13672:27;;2335:29442:89;;;13717:37:64;;;-1:-1:-1;;;;;2335:29442:89;;;39382:15:64;2335:29442:89;;;;;;;13717:37:64;13540:228;;;:::i;:::-;2335:29442:89;;13433:346:64;;11976:992;12163:37;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;12163:37:64;;;-1:-1:-1;;;;;2335:29442:89;;;39382:15:64;2335:29442:89;;;;;;;12163:37:64;;;:::i;:::-;12617:19;12575:40;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;12575:40:64;12617:19;;:::i;:::-;12802:65;;;;;:::i;:::-;11116:23;12770:29;;2335:29442:89;19097:20:64;12899:58;;;;;:::i;:::-;11976:992;;;;11112:110;11190:21;-1:-1:-1;11190:21:64;2335:29442:89;-1:-1:-1;11190:21:64;11012:90;11074:17;-1:-1:-1;11074:17:64;2335:29442:89;-1:-1:-1;11074:17:64;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;;;79738:16:64;79734:82;;2335:29442:89;79734:82:64;79793:11;;;:::i;2335:29442:89:-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;27845:38;2335:29442;27845:38;;2335:29442;;27845:38;;2335:29442;-1:-1:-1;2335:29442:89;;;;;27860:4;2335:29442;27860:4;-1:-1:-1;27860:4:89;27845:38;;;;;;2335:29442;27845:38;-1:-1:-1;27845:38:89;;;2335:29442;1148:1:50;;;:::i;27845:38:89:-;;;;2335:29442;27845:38;2335:29442;27845:38;;;;;;;:::i;:::-;;;;2335:29442;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;5143:32;2335:29442;;5143:32;:::i;:::-;2335:29442;;;:::i;:::-;5237:13;-1:-1:-1;5271:3:89;2335:29442;;5252:17;;;;;5313:9;5290:32;5313:9;;2335:29442;5313:9;;;:::i;:::-;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;5313:9;5290:14;;;;:::i;:::-;;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;;5290:32;2335:29442;5237:13;;5252:17;;;;-1:-1:-1;;;;;5343:16:89;2335:29442;5499:32;;:::i;:::-;5343:198;;;;;;-1:-1:-1;2335:29442:89;;5343:198;2335:29442;;5343:198;;;;;;;2335:29442;5343:198;;2335:29442;5343:198;;;:::i;2335:29442::-;-1:-1:-1;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;6122:15;2335:29442;6122:15;2335:29442;;;6122:15;2335:29442;;8470:156:46;2335:29442:89;;8470:156:46;;2335:29442:89;;6122:15;2335:29442;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1237:14:41;20512:33:89;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;20512:20;2335:29442;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;20512:33;2335:29442;1460:31:41;2335:29442:89;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;1083:103:50;;:::i;:::-;2335:29442:89;;;27671:55;2335:29442;27671:55;;2335:29442;;;;;:::i;:::-;;27671:55;;2335:29442;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;27671:55;2335:29442;;;;;;;;;;;;;27671:55;27686:4;2335:29442;27686:4;-1:-1:-1;27686:4:89;27671:55;;;;;;-1:-1:-1;;;;;27671:55:89;;;2335:29442;1148:1:50;2335:29442:89;1148:1:50;;;:::i;27671:55:89:-;;;2335:29442;27671:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2335:29442;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;27151:18;2335:29442;;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;17963:18;2335:29442;;;;-1:-1:-1;2335:29442:89;;18018:11;2335:29442;;;-1:-1:-1;2335:29442:89;;18079:24;;;;:::i;:::-;18119:13;-1:-1:-1;18134:13:89;;;;;;2335:29442;;;;;;;:::i;18149:3::-;2335:29442;;;-1:-1:-1;2335:29442:89;;;;18198:40;2335:29442;-1:-1:-1;2335:29442:89;;1616:3:41;2335:29442:89;1504:138:41;;18198:40:89;18168:70;;;;:::i;:::-;2335:29442;;18119:13;;2335:29442;;;;;-1:-1:-1;;2335:29442:89;;;;;3891:15:66;2335:29442:89;;;;;:::i;:::-;3891:15:66;2335:29442:89;;3891:15:66;:::i;:::-;;;:::i;2335:29442:89:-;;;;;-1:-1:-1;;2335:29442:89;;;;;;28511:43;2335:29442;;;;;:::i;:::-;;;9702:26:69;2574:386:44;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;2806:53:52;2574:386:44;;28511:43:89;2335:29442;;;;;;;;;;;;;;;:::i;:::-;2707:73:66;;:::i;:::-;8248:15;2335:29442:89;;7916:84:46;568:1:75;7916:84:46;8244:95:66;;54593:19:64;;;;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;;;;;;-1:-1:-1;2335:29442:89;10124:13:66;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;;10124:41:66;10120:113;;2335:29442:89;1083:103:50;;;;:::i;:::-;2335:29442:89;54770:25:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;54770:25:64;2335:29442:89;;54770:27:64;;;;2335:29442:89;54770:27:64;;;;;;;;55831:15;54770:27;-1:-1:-1;54770:27:64;;;2335:29442:89;;;54855:24:64;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;54855:24:64;:::i;:::-;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;54935:21:64;;;;;2335:29442:89;;;54935:21:64;;:::i;:::-;54992:24;2335:29442:89;54972:16:64;;2335:29442:89;;;;:::i;:::-;;;;:::i;:::-;54972:44:64;54992:24;;55114:169;2335:29442:89;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2335:29442:89;;;55114:169:64;;:::i;:::-;55302:70;55068:215;;;;;;;;55302:70;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;55302:70:64;2335:29442:89;;;55302:70:64;;;;2335:29442:89;;;;;;;;;;;;;;;;;;55302:70:64;;;;54968:782;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;55764:32:64;;55831:15;2335:29442:89;55816:30:64;;;55812:116;;-1:-1:-1;2335:29442:89;;;55941:34:64;;56231:19;;55941:34;;-1:-1:-1;;;;;2335:29442:89;56231:19:64;:::i;2335:29442:89:-;56231:19:64;:::i;:::-;1148:1:50;;:::i;:::-;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;55812:116:64;55873:40;-1:-1:-1;55873:40:64;2335:29442:89;;;;;;;-1:-1:-1;21462:49:64;55760:417;56024:15;2335:29442:89;56010:29:64;;;56006:114;;56133:33;;2335:29442:89;56133:33:64;56231:19;2335:29442:89;56133:33:64;;55760:417;;;;;56006:114;56066:39;-1:-1:-1;56066:39:64;2335:29442:89;;;;;;;-1:-1:-1;21462:49:64;54968:782;55485:167;2335:29442:89;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2335:29442:89;;;55485:167:64;;:::i;:::-;55671:68;55439:213;;;;;;;;55671:68;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;55671:68:64;;;;54968:782;;54770:27;;;;2335:29442:89;54770:27:64;2335:29442:89;54770:27:64;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10120:113:66;10188:34;;-1:-1:-1;10188:34:66;2335:29442:89;;;-1:-1:-1;10188:34:66;8244:95;8305:23;-1:-1:-1;8305:23:66;2335:29442:89;-1:-1:-1;8305:23:66;2335:29442:89;;;;1848:58:41;20862:33:89;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;;;;;;;-1:-1:-1;2335:29442:89;20898:20;2335:29442;;20898:33;2335:29442;;-1:-1:-1;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;20898:33;2335:29442;1616:3:41;2335:29442:89;1848:58:41;;:::i;:::-;2335:29442:89;-1:-1:-1;2335:29442:89;20898:20;2335:29442;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;20862:33;2335:29442;;;;;;3778:6;2335:29442;;;:::i;:::-;3778:6;;:::i;2335:29442::-;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6980:19:64;2335:29442:89;;6980:19:64;:::i;:::-;2335:29442:89;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;:::i;:::-;2707:73:66;;:::i;:::-;8882:4;-1:-1:-1;;;;;2335:29442:89;;;8882:4:66;:::i;:::-;25826:11:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;25826:11:64;25914:4;9851:16:69;2806:53:52;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;9702:26:69;;25914:4:64;:::i;:::-;26413:73;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;26413:73:64;:::i;:::-;28685:99;2335:29442:89;26532:15:64;;;2335:29442:89;26556:26:64;:19;;;;;;2335:29442:89;26556:26:64;;:::i;:::-;26981:19;;27052:30;;;;26981:144;27052:30;;27096:19;;;;;;;26981:144;;:::i;:::-;2335:29442:89;27140:54:64;2335:29442:89;;7916:84:46;4860:199:70;958:1:71;7916:84:46;;4860:199:70;;27140:54:64;27136:890;;2335:29442:89;28685:99:64;;;;;;:::i;:::-;28626:158;;;;;;2335:29442:89;;28982:53:64;2335:29442:89;;2279:1:71;5365:197:70;958:1:71;7916:84:46;;5365:197:70;;28982:53:64;28978:487;;2335:29442:89;;;;26556:19:64;2335:29442:89;;;;;;:::i;28978:487:64:-;2335:29442:89;;;29190:264:64;2335:29442:89;;29135:28:64;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;29135:28:64;2335:29442:89;;;29257:10:64;29190:264;;:::i;:::-;28978:487;;;;;;;;;27136:890;27385:28;27859:156;2335:29442:89;;;27385:28:64;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;27385:28:64;27269:10;;27385:28;:::i;:::-;27721:17;27688:31;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;27688:31:64;27721:17;;:::i;:::-;27859:19;27934:30;;27982:19;;27859:156;;:::i;:::-;27136:890;;;;;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;6295:15;2335:29442;6295:15;2335:29442;;;6295:15;2335:29442;;8470:156:46;2335:29442:89;;8470:156:46;;2335:29442:89;8470:156:46;;2335:29442:89;;6295:15;2335:29442;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;9342:26:69;3051:52:52;2335:29442:89;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;13939:32;2335:29442;;13939:32;:::i;:::-;13986:13;-1:-1:-1;14020:3:89;2335:29442;;14001:17;;;;;14062:9;14039:32;14062:9;;2335:29442;14062:9;;;:::i;14039:32::-;14085:46;14115:16;;;;;:::i;:::-;14085:14;;;;;:::i;:::-;;:27;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;;14085:46;14172:45;:16;;;;;:::i;:45::-;:120;;14145:147;-1:-1:-1;14172:120:89;2335:29442;14145:14;;;;:::i;:::-;;:24;:147;:::i;:::-;2335:29442;13986:13;;14172:120;14145:147;14172:120;;;14001:17;2335:29442;;;14327:46;;-1:-1:-1;2335:29442:89;;14327:46;14001:17;2335:29442;14327:46;;;:::i;:::-;;:17;-1:-1:-1;;;;;14327:17:89;2335:29442;14327:46;;;;;;2335:29442;14327:46;-1:-1:-1;14327:46:89;;;13981:322;2335:29442;;;;;;;;:::i;14327:46::-;;;;;;-1:-1:-1;14327:46:89;;;;;;:::i;:::-;;;;;:::i;:::-;;;;2335:29442;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;8882:4:66;2335:29442:89;;;;;:::i;:::-;8882:4:66;:::i;2335:29442:89:-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;8470:156:46;6816:15:89;2335:29442;8470:156:46;;568:1:75;8470:156:46;;6816:15:89;2335:29442;-1:-1:-1;2335:29442:89;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;9187:17:69;3051:52:52;2335:29442:89;;;;;2131:58:41;21069:33:89;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;;;;;;;-1:-1:-1;2335:29442:89;21105:20;2335:29442;;1237:14:41;21105:33:89;2335:29442;;-1:-1:-1;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;21105:33;2335:29442;1460:31:41;2131:58;:::i;2335:29442:89:-;;;;;-1:-1:-1;;2335:29442:89;;;;;26077:4;9187:17:69;3051:52:52;2335:29442:89;;;;;;-1:-1:-1;;2335:29442:89;;;;;29101:52;2335:29442;;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;29101:17;2335:29442;;29101:35;2335:29442;-1:-1:-1;2335:29442:89;29101:35;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;18567:5;2335:29442;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;9851:16:69;2806:53:52;2335:29442:89;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;;;11211:11;2335:29442;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;:::i;:::-;5562:81:66;;;:::i;:::-;2335:29442:89;;:::i;:::-;4231:16;4292:24;-1:-1:-1;;;;;4231:16:89;2335:29442;4292:24;;:::i;:::-;-1:-1:-1;;4400:32:89;;;:::i;:::-;4231:211;;;;;;-1:-1:-1;2335:29442:89;;4231:211;2335:29442;;4231:211;;;;;;;2335:29442;4231:211;;2335:29442;4231:211;;;:::i;:::-;;;;;;;;;;;2335:29442;;;4231:211;;;;;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;1192:1:71;2335:29442:89;-1:-1:-1;2335:29442:89;;958:1:71;7916:84:46;;16646:28:66;16642:93;;2335:29442:89;16642:93:66;16697:27;-1:-1:-1;16697:27:66;2335:29442:89;;;-1:-1:-1;16697:27:66;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;-1:-1:-1;;;;;3528:16:89;2335:29442;;;;;;;;;20693:33;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;20693:20;2335:29442;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;20693:33;2335:29442;1616:3:41;2335:29442:89;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;21482:59;2335:29442;;;-1:-1:-1;2335:29442:89;;21482:59;:::i;2335:29442::-;;;;;;;:::i;:::-;1083:103:50;;;;;:::i;:::-;20262:54:89;;;;;:::i;:::-;1083:103:50;;;:::i;:::-;2335:29442:89;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;19189:41:64;19185:325;;2335:29442:89;19543:34:64;;-1:-1:-1;19543:34:64;;;;2335:29442:89;;19543:34:64;:::i;:::-;19743:20;19733:54;19743:20;;;2335:29442:89;19733:38:64;:31;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;19733:38:64;2335:29442:89;;;19733:54:64;;;;;;2335:29442:89;19733:54:64;;2335:29442:89;19733:54:64;;;:::i;:::-;;;;;;;;;;-1:-1:-1;19733:54:64;;;2335:29442:89;19821:24:64;;;;:::i;:::-;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;20225:41:64;;20502:29;20659:620;20502:29;2335:29442:89;20502:29:64;;2335:29442:89;;;20724:30:64;;;;21205:60;:39;20724:50;20755:18;;;2335:29442:89;;;20724:50:64;;:::i;:::-;2335:29442:89;21205:19:64;;;;;2335:29442:89;;21205:39:64;;:::i;:60::-;20659:620;;:::i;:::-;21325:30;;;;2335:29442:89;21294:83:64;;;21411:24;21205:19;21411:24;;2335:29442:89;21396:39:64;;;;21392:134;;20221:2688;;;2335:29442:89;22993:23:64;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;23018:11:64;;;;:::i;:::-;23054:24;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;23080:12:64;;;;:::i;:::-;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;23377:215:64;;;;;:::i;:::-;23315:28;;;;;23345;2335:29442:89;23345:28:64;2335:29442:89;;;;;;;23054:24:64;23724:20;;;;;;;:39;;;;:::i;:::-;2335:29442:89;23724:53:64;;;;:::i;:::-;2335:29442:89;;23724:84:64;;;:::i;:::-;23822:19;;;;:::i;:::-;23907:18;;2335:29442:89;;;23939:20:64;;;;:40;;;;:::i;:::-;2335:29442:89;23939:55:64;;;;:::i;:::-;24008:19;;;;:::i;:::-;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;12512:18;2335:29442;;;;;24356:20:64;;;2335:29442:89;;24356:39:64;;;:::i;:::-;2335:29442:89;24409:29:64;;;;;;2335:29442:89;;24409:48:64;;;:::i;:::-;2335:29442:89;24308:159:64;;;:::i;:::-;2335:29442:89;;24274:31:64;;;2335:29442:89;;;;;;;;;;24274:31:64;2335:29442:89;24560:20:64;2335:29442:89;;24560:40:64;;;:::i;:::-;2335:29442:89;24614:29:64;;2335:29442:89;;24614:49:64;;;:::i;:::-;2335:29442:89;24512:161:64;;;:::i;:::-;2335:29442:89;;24477:32:64;;2335:29442:89;;;;;;;;;;24477:32:64;2335:29442:89;;;;;;23054:24:64;24899:27;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;24721:257:64;;2335:29442:89;;24721:257:64;1148:1:50;;:::i;:::-;;;:::i;21392:134:64:-;21462:49;-1:-1:-1;21462:49:64;2335:29442:89;;;;;-1:-1:-1;21462:49:64;20221:2688;22169:27;22283:61;22472:182;22169:27;22118:150;22169:27;;;2335:29442:89;5832:87:47;;;;;;;;22118:150:64;;;:::i;:::-;2335:29442:89;;;;22283:61:64;:::i;:::-;22535:49;:30;;;;2335:29442:89;;22535:49:64;;:::i;:::-;2335:29442:89;22602:38:64;:19;;;;2335:29442:89;;22602:38:64;;:::i;:::-;2335:29442:89;22472:182:64;;:::i;:::-;22721:30;;;;2335:29442:89;22669:83:64;;22602:19;22785:24;;2335:29442:89;22771:38:64;;;;22767:132;;20221:2688;;;;19733:54;;;;;;;;;;;;;;;:::i;:::-;;;;;19185:325;19345:34;;;19428:71;19345:69;2335:29442:89;;19386:27:64;;;2335:29442:89;19345:69:64;;:::i;:::-;2335:29442:89;;;;;19428:71:64;:::i;:::-;2335:29442:89;;19185:325:64;;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;29946:183;2335:29442;-1:-1:-1;2335:29442:89;;19669:4:31;2335:29442:89;;19669:4:31;29946:183:89;;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;1083:103:50;;:::i;:::-;551:66;2806:53:52;;2335:29442:89;;;;3051:52:52;;2335:29442:89;;;;;;-1:-1:-1;;2335:29442:89;;;;;;25152:53;2335:29442;;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;25101:20;2335:29442;;;-1:-1:-1;2335:29442:89;;25152:53;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;14810:101:66;2335:29442:89;;;;;;;:::i;:::-;;;;;;:::i;:::-;;14287:20:66;:48;:20;2335:29442:89;14287:20:66;;;:48;:::i;:::-;2335:29442:89;;;;:::i;:::-;14426:50:66;;14491:41;14426:164;;14879:31;14695:30;;;;14835:42;14695:30;:42;:30;;;:42;:::i;:::-;2335:29442:89;14751:19:66;14645:147;14751:19;;;;:31;:19;;;:31;:::i;:::-;2335:29442:89;14645:147:66;;;;:::i;:::-;14601:191;:29;2335:29442:89;14601:29:66;;;:191;:::i;:::-;2335:29442:89;14835:30:66;:42;:::i;:::-;2335:29442:89;14879:19:66;;:31;:::i;:::-;2335:29442:89;14810:101:66;;:::i;:::-;;2335:29442:89;;;;;;;:::i;14426:164:66:-;14547:43;14426:164;;;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;26832:45;2335:29442;;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;26832:13;2335:29442;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;25606:11;2335:29442;;;:::i;:::-;25606:11;;;;;:::i;2335:29442::-;;;;;;;:::i;:::-;1083:103:50;;;;:::i;:::-;2707:73:66;;:::i;:::-;3891:15;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;8407:11:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;;;;1412:43:98;;;-1:-1:-1;;;;;2335:29442:89;;;1412:43:98;;;2335:29442:89;;;;;;;;;1412:43:98;;;;;2335:29442:89;1412:43:98;2335:29442:89;;1412:43:98;:::i;:::-;;:::i;:::-;-1:-1:-1;551:66:50;3051:52:52;2335:29442:89;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;18678:6;2335:29442;;;;;:::i;:::-;;;18678:6;;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;9187:17:69;2335:29442:89;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;29391:11;2335:29442;;29391:11;:::i;2335:29442::-;;;;25867:11;2335:29442;;;:::i;:::-;25867:11;;;;;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;2707:73:66;;:::i;2335:29442:89:-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;-1:-1:-1;;;;;81346:15:64;2335:29442:89;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;11005:13;-1:-1:-1;;;;;2335:29442:89;;;-1:-1:-1;11039:3:89;2335:29442;;11020:17;;;;;11092:12;;2335:29442;11092:12;;;:::i;:::-;;2335:29442;-1:-1:-1;2335:29442:89;;;;;;;;11058:31;2335:29442;;11079:9;2335:29442;;-1:-1:-1;2335:29442:89;11079:9;;:::i;:::-;2335:29442;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;11058:31;2335:29442;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:13;;2335:29442;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;22140:92;2335:29442;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;22140:92;;:::i;:::-;2335:29442;;;;;;;;;;;;;;;;;;;53823:6:64;2335:29442:89;;;:::i;:::-;53800:10:64;;53823:6;:::i;2335:29442:89:-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;7916:84:46;2335:29442:89;-1:-1:-1;2335:29442:89;;7916:84:46;8984:24:66;8980:85;;53348:34:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;53304:11:64;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;;;;;;;:::i;:::-;;;;:::i;:::-;53348:34:64;;:::i;:::-;2335:29442:89;;;;;;;;;;;;;;;;8980:85:66;9031:23;;-1:-1:-1;9031:23:66;2335:29442:89;;;-1:-1:-1;9031:23:66;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;:::i;:::-;;;6669:15;2335:29442;6669:15;2335:29442;;;6669:15;2335:29442;;8470:156:46;2335:29442:89;;8470:156:46;;2335:29442:89;8470:156:46;;2335:29442:89;;6669:15;2335:29442;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;551:66:50;2806:53:52;2335:29442:89;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;;;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;19917:10:31;8036:26:72;;8032:97;;19669:4:31;8232:183:72;19669:4:31;;8232:183:72;;:::i;8032:97::-;8085:33;-1:-1:-1;8085:33:72;2335:29442:89;-1:-1:-1;8085:33:72;2335:29442:89;;;;;;;:::i;:::-;1083:103:50;;;;:::i;:::-;28015:4:89;28000:47;;;;2335:29442;;28000:47;2335:29442;28000:47;;-1:-1:-1;;;;;2335:29442:89;;;;28000:47;;2335:29442;;;;;;;;;;28000:47;28015:4;2335:29442;28015:4;;;28000:47;;;;;;;;;551:66:50;3051:52:52;2335:29442:89;28000:47;;;;:::i;:::-;;;;2335:29442;;;;18903:5;2335:29442;;;:::i;:::-;9520:18:69;;18903:5:89;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;551:66:50;2806:53:52;2335:29442:89;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;19129:11;2335:29442;;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;2335:29442:89;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;;;22475:18;2335:29442;;;;-1:-1:-1;2335:29442:89;;6819:15:73;;;2335:29442:89;7033:13:73;-1:-1:-1;2335:29442:89;7120:18:73;;7082:19;;;7028:396;7048:13;;;;;;2335:29442:89;;;;;;;:::i;7063:3:73:-;7120:18;7107:35;7120:21;2335:29442:89;7120:18:73;;;:21;:::i;:::-;;7107:35;:::i;:::-;7082:60;:19;;;:60;:::i;:::-;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;7395:17:73;2335:29442:89;1237:14:41;2335:29442:89;-1:-1:-1;2335:29442:89;;1460:31:41;7395:17:73;;;:::i;:::-;2335:29442:89;7033:13:73;;2335:29442:89;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;:::i;:::-;;11460:85;2335:29442;;;;11468:39;11460:85;:::i;:::-;11555:94;2335:29442;;;;11563:48;11555:94;:::i;:::-;2335:29442;;;-1:-1:-1;2335:29442:89;;;11746:18;2335:29442;;;;;-1:-1:-1;2335:29442:89;11785:13;-1:-1:-1;11819:3:89;2335:29442;;11800:17;;;;;11896:18;11861:83;11896:18;2335:29442;11896:18;;;:::i;:::-;2335:29442;11916:27;;;;:::i;11861:83::-;2335:29442;-1:-1:-1;2335:29442:89;;;;;-1:-1:-1;2335:29442:89;;;11785:13;;11800:17;2335:29442;11800:17;;-1:-1:-1;2335:29442:89;11965:11;2335:29442;;;-1:-1:-1;2335:29442:89;;:::i;:::-;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;13352:24:66;2335:29442:89;;;:::i;:::-;;;;:::i;:::-;;1083:103:50;;:::i;:::-;2335:29442:89;;:::i;13352:24:66:-;-1:-1:-1;551:66:50;3051:52:52;2335:29442:89;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;;;;;;:::i;:::-;9851:16:69;;2806:53:52;-1:-1:-1;2335:29442:89;9702:26:69;2335:29442:89;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;3051:52:52;2335:29442:89;;;;;;-1:-1:-1;;2335:29442:89;;;;;6011:4:66;2335:29442:89;;;;;:::i;:::-;;;:::i;:::-;;5894:129:66;;:::i;6011:4::-;2335:29442:89;13162:15;2335:29442;;;;;;;:::i;:::-;7916:84:46;;;2335:29442:89;;;;;;7916:84:46;2335:29442:89;;13200:182;;7916:84:46;;;;;;2335:29442:89;;;;13200:182;7916:84:46;2335:29442:89;7916:84:46;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;14612:32;2335:29442;;14612:32;:::i;:::-;14659:13;-1:-1:-1;14693:3:89;2335:29442;;14674:17;;;;;14735:9;14712:32;14735:9;;2335:29442;14735:9;;;:::i;:::-;14712:14;;;;:::i;:32::-;14758:46;14788:16;;;;;:::i;:::-;2335:29442;14758:14;;;;:::i;:46::-;14845:45;:16;;;;;:::i;:45::-;:120;;14818:147;-1:-1:-1;14845:120:89;2335:29442;14818:14;;;;:::i;:147::-;14979:47;15010:16;;;;;:::i;:::-;2335:29442;;;;;15010:16;14979:14;;;;;:::i;:::-;;:28;2335:29442;;;;;;14979:47;2335:29442;14659:13;;14845:120;14818:147;14845:120;;;14674:17;2335:29442;;;15061:46;;-1:-1:-1;2335:29442:89;;15061:46;14674:17;2335:29442;15061:46;;;:::i;2335:29442::-;;;;;-1:-1:-1;;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;25327:20;2335:29442;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;;;28181:30;2335:29442;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;28181:30;:::i;2335:29442::-;;;;23559:53;2335:29442;;;:::i;:::-;1083:103:50;;;:::i;:::-;23559:53:89;:::i;2335:29442::-;;;;;;;24299:91;2335:29442;;;;:::i;:::-;;;;;;;:::i;:::-;;;;24092:18;24185:103;24092:18;;;;;;;;:::i;:::-;;;;-1:-1:-1;;24092:18:89;;;;;;;;:::i;:::-;2335:29442;24082:29;;24185:103;;;;:::i;:::-;2335:29442;;;;;;;24337:18;2335:29442;;24337:18;;;24092;24337;;;;;:::i;2335:29442::-;;24092:18;2335:29442;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;26999:15;2335:29442;;26999:36;2335:29442;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5562:81:66;;;;;;;:::i;:::-;-1:-1:-1;;;;;5835:24:89;5763:16;;2335:29442;5835:24;;:::i;:::-;5966:32;;;:::i;:::-;5763:245;;;;;;2335:29442;;;5930:1;2335:29442;;;;;;;;5763:245;;;;;;;2335:29442;5763:245;;2335:29442;5763:245;;;2335:29442;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:245;;;;;;;;;;5562:81:66;:::o;5763:245:89:-;;;;;;:::i;2335:29442::-;;;;;;;:::i;:::-;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;2335:29442:89;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;2335:29442:89;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;;;;;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;2335:29442:89;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;2335:29442:89;;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;13395:349;13524:32;2335:29442;;13524:32;:::i;:::-;13571:13;13583:1;13605:3;2335:29442;;13586:17;;;;;13647:9;13624:32;-1:-1:-1;;;;;13647:9:89;2335:29442;13647:9;;;:::i;:::-;2335:29442;;13624:14;;;;:::i;:32::-;2335:29442;13571:13;;13586:17;;;13583:1;13691:46;13586:17;2335:29442;;13691:46;;;;2335:29442;13691:46;;;;;;:::i;:::-;;:17;-1:-1:-1;;;;;13691:17:89;2335:29442;13691:46;;;;;;;13583:1;13691:46;;;13677:60;13395:349;:::o;13691:46::-;;;;;;13583:1;13691:46;;;;;;:::i;2335:29442::-;;;;;;;:::i;:::-;-1:-1:-1;2335:29442:89;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;5061:1817:64:-;;;;2811:38:99;2335:29442:89;9187:17:69;2806:53:52;;;2335:29442:89;5148:82:64;;;;5061:1817;2335:29442:89;;;:::i;:::-;7019:10:64;2811:38:99;:::i;:::-;5339:1533:64;;;5061:1817;:::o;5339:1533::-;9342:26:69;2806:53:52;5384:98:64;;-1:-1:-1;3051:52:52;;6832:27:64;9851:16:69;6832:27:64;:::i;5384:98::-;5448:19;-1:-1:-1;5448:19:64;;-1:-1:-1;5448:19:64;5148:82;2335:29442:89;3051:52:52;;5148:82:64;;7072:1538:89;;6379:89:72;7072:1538:89;7837:34;5826:175:72;4964:169;4121:171;7987:63:89;7899:61;7791:81;7677:87;7577:73;2691:83:72;3154:90;8565:21:89;7072:1538;;7446:27;2262:88:72;7239:57:89;7190:21;2335:29442;7072:1538;-1:-1:-1;;;;;2335:29442:89;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;7190:21;2335:29442;7272:23;;;2335:29442;;;7239:57;8470:156:46;;;1623:275:72;;7239:57:89;7357:24;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;2262:88:72;7446:27:89;;2335:29442;;;;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;3154:90:72;7530:19:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;2691:83:72;7619:30:89;;;2335:29442;7577:73;;:::i;:::-;7730:33;;;2335:29442;7677:87;;:::i;:::-;7837:34;;;2335:29442;7791:81;;:::i;:::-;7935:24;;;2335:29442;;2539:209:46;;;;;;;;;;10440:413:72;7899:61:89;8024:25;;;2335:29442;;2539:209:46;;;;;;;;;;11205:402:72;7987:63:89;8135:26;;2335:29442;;;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;4121:171:72;7619:30:89;8262:51;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;4964:169:72;7730:33:89;8394:54;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;5826:175:72;8512:41:89;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;8565:21:89;2335:29442;7072:1538::o;2335:29442::-;;;;:::i;:::-;;;;;:::i;15120:660::-;;;;;;15385:32;2335:29442;;15385:32;:::i;:::-;15432:13;15444:1;15466:3;2335:29442;;15447:17;;;;;15508:9;15485:32;15508:9;;2335:29442;15508:9;;;:::i;15485:32::-;15531:40;15558:13;;;;;:::i;:::-;;:::i;15531:40::-;15585:46;15615:16;;;;;:::i;:::-;15585:27;:14;;;;:::i;:46::-;15645:47;15676:16;;;;;:::i;:::-;15645:28;:14;;;;:::i;:47::-;2335:29442;15432:13;;15447:17;;;;;15727:46;15447:17;;;15444:1;15447:17;15585:27;2335:29442;15727:46;;;;2335:29442;15727:46;;;;;;:::i;2335:29442::-;;465:4:47;2335:29442:89;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;30156:429;;30284:23;;:78;;;;30156:429;30280:117;;2335:29442;;;30499:15;;2335:29442;-1:-1:-1;;;;;30499:15:89;2335:29442;30499:15;2335:29442;;;;30499:15;;;;;;30432:146;30499:15;2335:29442;30499:15;;;30156:429;2335:29442;;30432:146;:::i;:::-;30407:171;;;30156:429;:::o;30499:15::-;;;;;;;;;;;;;;:::i;:::-;;;;30280:117;30378:8;;2335:29442;30378:8;:::o;30284:78::-;30334:22;30311:46;;30334:22;;;:::i;:::-;2335:29442;;30311:46;;;;2335:29442;30311:46;;;;;2335:29442;;;;;;;;30311:46;;2335:29442;-1:-1:-1;;;;;2335:29442:89;;30311:46;;;;;;;2335:29442;30311:46;;;30284:78;30311:51;;30284:78;;30311:46;;;;;;;;;;;;;;:::i;:::-;;;;2335:29442;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31396:379::-;;31525:24;;31521:63;;2335:29442;;;31688:15;;2335:29442;-1:-1:-1;;;;;31688:15:89;2335:29442;31688:15;2335:29442;;;;31688:15;;;;;;31618:150;31688:15;2335:29442;31688:15;;;31396:379;2335:29442;;31618:150;:::i;:::-;31594:174;;31396:379;:::o;31688:15::-;;;;;;;;;;;;;;:::i;:::-;;;;8943:1378;10257:21;10281:33;2335:29442;10288:25;10257:57;8943:1378;6819:94:70;6283:95;5748:91;5246:92;4764:82;4338:83;3891:88;3366;2874:89;2368:100;8943:1378:89;9068:21;8943:1378;-1:-1:-1;;;;;2335:29442:89;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;9068:21;2335:29442;;;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;2368:100:70;9265:38:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;2874:89:70;9375:37:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;3366:88:70;9490:43:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;3891:88:70;9600:32:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;4338:83:70;9698:31:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;4764:82:70;9804:40:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;5246:92:70;9918:39:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;5748:91:70;10035:43:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;6283:95:70;10155:42:89;;;2335:29442;;;8470:156:46;8160:472;2335:29442:89;8470:156:46;;;;8160:472;;6819:94:70;10209:21:89;;-1:-1:-1;;;;;2335:29442:89;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;10209:21;2335:29442;10288:25;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;10281:33;10257:21;-1:-1:-1;;;;;2335:29442:89;;;39382:15:64;2335:29442:89;;;;;;;10257:21;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;30967:423;;31094:20;;:71;;;;30967:423;31090:110;;2335:29442;;;31307:15;;2335:29442;-1:-1:-1;;;;;31307:15:89;2335:29442;31307:15;2335:29442;;;;31307:15;;;;;;31238:145;31307:15;2335:29442;31307:15;;;30967:423;2335:29442;;31238:145;:::i;31307:15::-;;;;;;;;;;;;;;:::i;:::-;;;;31094:71;31140:19;31118:42;;31140:19;;;:::i;:::-;2335:29442;;31118:42;;;;2335:29442;31118:42;;;;;2335:29442;;;;;;;;31118:42;;2335:29442;-1:-1:-1;;;;;2335:29442:89;;31118:42;;;;;;;2335:29442;31118:42;;;31094:71;31118:47;;31094:71;;31118:42;;;;;;;;;;;;;;:::i;:::-;;;;30591:370;;30716:21;;30712:60;;2335:29442;;;30877:15;;2335:29442;-1:-1:-1;;;;;30877:15:89;2335:29442;30877:15;2335:29442;;;;30877:15;;;;;;30809:145;30877:15;2335:29442;30877:15;;;30591:370;2335:29442;;30809:145;:::i;30877:15::-;;;;;;;;;;;;;;:::i;:::-;;;;10457:420;;;10571:1;10598:3;2335:29442;;10574:22;;;;;2335:29442;10701:24;2335:29442;10701:24;10662:198;10701:14;;;;;:::i;:::-;;:24;2335:29442;;;;;:::i;:::-;10757:27;10662:198;-1:-1:-1;;;;;10757:14:89;;;;;:::i;:::-;;:27;2335:29442;;10817:28;:14;;;;:::i;:::-;;:28;2335:29442;;;;10662:198;2335:29442;;;;;;:::i;:::-;10662:198;;:::i;:::-;;;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;;10662:198;;;2335:29442;;;;;;10662:198;10617:42;:20;;-1:-1:-1;;;;;2335:29442:89;;;10617:14;2335:29442;;;;;;;10617:20;10638;:14;;;;:::i;:::-;;2335:29442;-1:-1:-1;;;;;2335:29442:89;;;10638:20;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;10617:42;2335:29442;:::i;:::-;;10559:13;;10574:22;;;;;10457:420::o;2335:29442::-;;-1:-1:-1;2335:29442:89;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;81600:69:64:-;81644:18;;;;;;81950:144;82001:9;81997:69;;1019:819:94;82013:1:64;1019:819:94;;82013:1:64;1019:819:94;;81346:15:64;-1:-1:-1;;;;;81346:15:64;2335:29442:89;1019:819:94;;;82013:1:64;1019:819:94;;;;;;82013:1:64;1019:819:94;;;82013:1:64;1019:819:94;6732:147:66;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;7916:84:46;;958:1:71;7916:84:46;;2335:29442:89;;11059:44:72;;;2335:29442:89;2895:125:71;;11059:44:72;6019:108:46;;7592:82:66;;;6732:147;6800:73;;;;6732:147;:::o;6800:73::-;6846:16;-1:-1:-1;6846:16:66;;2335:29442:89;;-1:-1:-1;6846:16:66;7592:82;7648:26;;;;;2335:29442:89;;;;;;;;7608:15:66;:66;;7592:82;;;;5694:130;2335:29442:89;6394:25:66;2335:29442:89;6375:15:66;:44;;:79;;;5694:130;5751:67;;5694:130::o;5751:67::-;5794:13;-1:-1:-1;5794:13:66;;-1:-1:-1;5794:13:66;6375:79;2335:29442:89;7916:84:46;6423:15:66;2335:29442:89;7916:84:46;;;6375:79:66;;28694:316:89;2335:29442;;:::i;:::-;;;;:::i;:::-;28899:4;28852:44;;;2335:29442;28899:4;28913:47;;;2335:29442;28694:316;:::o;2335:29442::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;58547:1:64;2335:29442:89;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;30165:6883:64:-;;;1083:103:50;;:::i;:::-;2335:29442:89;;;:::i;:::-;30616:15:64;;;;30663:31;30616:15;;2335:29442:89;;;;30663:31:64;:::i;:::-;30850:11;;;2335:29442:89;;;;;;:::i;:::-;;;;:::i;:::-;30850:44:64;;30925:22;2335:29442:89;30925:22:64;;2335:29442:89;31082:31:64;2335:29442:89;;31082:31:64;:::i;:::-;31207:29;31148:175;31207:29;30850:11;31207:29;;;31254:25;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;-1:-1:-1;2335:29442:89;2487:14:90;2335:29442:89;;;-1:-1:-1;2335:29442:89;;2402:112:90;;31254:25:64;31148:175;;:::i;:::-;30846:2980;;2335:29442:89;33915:22:64;;2335:29442:89;33900:37:64;;;33896:133;;34063:12;;;;;;;:::i;:::-;30616:15;35719:32;;;2335:29442:89;34129:3:64;2335:29442:89;;;34107:20:64;;;;;34148:19;34270:20;34148:19;34270:20;:::i;:::-;2335:29442:89;34332:16:64;;;:::i;:::-;34456:15;;;;:::i;:::-;2335:29442:89;34456:15:64;;34716:166;34779:30;;34838:22;34779:30;34838:19;34779:33;:30;;;;;:33;:::i;:::-;2335:29442:89;34838:19:64;;;:22;:::i;34716:166::-;34905:29;;;;;:::i;:::-;2335:29442:89;34452:735:64;35230:18;;:15;;;:18;:::i;:::-;35329:19;;;:22;:19;;;:22;:::i;:::-;2335:29442:89;35315:36:64;;35311:142;;35545:11;;;36311:72;35545:11;36311:37;35545:11;;;;35699:236;35545:11;35755:180;35545:11;;2335:29442:89;35545:11:64;;;;36401:19;35545:11;;:::i;:::-;2335:29442:89;35833:17:64;;;;:::i;:::-;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;35755:180:64;;;:::i;:::-;2335:29442:89;;;35699:236:64;:::i;:::-;2335:29442:89;36311:23:64;:20;2335:29442:89;36311:20:64;;;:23;:::i;:::-;2335:29442:89;36311:37:64;:::i;:::-;2335:29442:89;;36311:72:64;;:::i;:::-;36401:19;;:::i;:::-;2335:29442:89;34092:13:64;;35311:142;35415:19;:22;:19;35378:60;35415:19;;:22;:::i;:::-;2335:29442:89;35378:60:64;2335:29442:89;35378:60:64;-1:-1:-1;;;;;2335:29442:89;;;35378:60:64;2335:29442:89;;;;;;;;34452:735:64;35153:15;;;;;:::i;:::-;2335:29442:89;34452:735:64;;34107:20;;;;;;;;;;;;36545:8;34107:20;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;36545:8:64;:::i;:::-;36851:190;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;36779:9:64;36790:12;36779:9;30616:15;36779:9;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;36790:12:64;;:::i;:::-;36952:25;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;:::i;36952:25:64:-;2335:29442:89;36851:190:64;-1:-1:-1;;;;;2335:29442:89;;;;:::i;:::-;;;35329:19:64;2335:29442:89;;;;;;;36851:190:64;;;:::i;:::-;;;;1148:1:50;;:::i;:::-;30510:23:64;;;30165:6883;:::o;33896:133::-;33960:58;2335:29442:89;33960:58:64;2335:29442:89;;;;;;;-1:-1:-1;21462:49:64;30846:2980;31359:25;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;31344:40:64;31359:25;;31400:46;2335:29442:89;;31400:46:64;:::i;:::-;31480:42;2335:29442:89;;31480:42:64;:::i;:::-;31536:16;2335:29442:89;31566:40:64;31340:2486;30846:2980;;31340:2486;2335:29442:89;31642:27:64;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;31627:42:64;31642:27;;31685:57;2335:29442:89;;31685:57:64;:::i;:::-;32083:294;31759:40;32022:12;32001:19;;;;;32022:12;:::i;:::-;30850:11;32143:29;;;2335:29442:89;32228:25:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;32228:25:64;32271:52;2335:29442:89;;32271:52:64;:::i;:::-;2335:29442:89;32341:22:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;32341:22:64;32083:294;;:::i;:::-;32050:327;;31623:2203;30846:2980;;31623:2203;2335:29442:89;;32413:39:64;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;32398:54:64;32413:39;;2335:29442:89;;;32468:57:64;2335:29442:89;;32468:57:64;:::i;:::-;2335:29442:89;32557:22:64;;2335:29442:89;32613:54:64;;;;:::i;:::-;32736:432;32793:375;32593:17;;;2335:29442:89;;;;32682:40:64;;32883:29;;30850:11;32883:29;;;2335:29442:89;33128:22:64;2335:29442:89;33054:52:64;33007:25;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;33007:25:64;2335:29442:89;;33054:52:64;:::i;:::-;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;33128:22:64;32793:375;;:::i;:::-;2335:29442:89;;;32736:432:64;;;:::i;:::-;2335:29442:89;30846:2980:64;;32394:1432;2335:29442:89;33204:23:64;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;33189:38:64;33204:23;;33243:56;2335:29442:89;;33243:56:64;:::i;:::-;2335:29442:89;33463:65:64;:27;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;33463:65:64;2335:29442:89;33624:22:64;;2335:29442:89;33668:29:64;30850:11;33668:29;;;33719:15;;;;;;2335:29442:89;33463:289:64;2335:29442:89;;33463:289:64;;;;;;;2335:29442:89;33463:289:64;;33550:10;33204:23;33463:289;;;:::i;:::-;;;;;;;;;;2335:29442:89;;;;;;;33463:289:64;;;33185:641;33399:353;;;;33185:641;30846:2980;;33463:289;;;;;;;;;;;2335:29442:89;33463:289:64;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;33185:641;33790:25;2335:29442:89;33790:25:64;33204:23;2335:29442:89;33790:25:64;8641:1623:73;;;;2335:29442:89;8915:29:73;:41;:29;;;;;:41;:::i;:::-;2335:29442:89;9458:36:73;;;9454:804;;8641:1623;;;;;;:::o;9454:804::-;10044:189;2335:29442:89;;;;9669:111:73;2335:29442:89;10184:31:73;2335:29442:89;;9669:111:73;:::i;:::-;10120:30;10184:19;10120:42;:30;;;;;:42;:::i;10184:31::-;2335:29442:89;10044:189:73;;:::i;:::-;9454:804;;;;;;;;9180:112:46;9268:13;-1:-1:-1;9268:13:46;;-1:-1:-1;9268:13:46;2311:281:41;;1237:14;2426:25;;;:58;;;;;2311:281;2422:113;;;3080:3;2335:29442:89;;;;;;;;;2311:281:41;:::o;2422:113::-;2507:17;;;;;;2426:58;2455:29;;;;2426:58;;;11202:521:66;-1:-1:-1;;;;;11202:521:66;;;;2335:29442:89;-1:-1:-1;2335:29442:89;;11379:18:66;2335:29442:89;;;;-1:-1:-1;2335:29442:89;-1:-1:-1;11467:3:66;11438:20;;;;2335:29442:89;;11434:31:66;;;;;11619:23;11567:139;11619:23;;2335:29442:89;11619:23:66;;:::i;:::-;2335:29442:89;11660:32:66;:29;;;;;:32;:::i;11567:139::-;2335:29442:89;-1:-1:-1;2335:29442:89;;;;;-1:-1:-1;2335:29442:89;;;11419:13:66;;11434:31;;;;;;;;11202:521::o;1083:103:50:-;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;13497:18:66;2335:29442:89;;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;13570:14:66;2335:29442:89;;;-1:-1:-1;2335:29442:89;13604:11:66;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;1947:15:73;;2335:29442:89;;:::i;:::-;1947:24:73;;2002:26;;;:::i;:::-;1981:18;;;;:47;;;2061:24;;;:::i;:::-;2038:20;;;;:47;;;2127:24;;;:::i;:::-;2095:29;;;:56;2194:74;2335:29442:89;;;2194:74:73;:::i;:::-;2161:30;;;:107;2300:24;;;:::i;:::-;2278:19;;;:46;;;2335:29442:89;;1038:1:71;;7916:84:46;1038:1:71;7916:84:46;;;;2365:119:73;;;;1083:103:50;2365:190:73;;;;1083:103:50;-1:-1:-1;2586:13:73;;;;;;;13719:24:66;;;;;;;;;;;;;;13745:26;13719:24;13745:26;13719:24;-1:-1:-1;;;;;2335:29442:89;;;12512:18;2335:29442;;;;;;;13719:24:66;13745:26;-1:-1:-1;;;;;2335:29442:89;;;13745:20:66;2335:29442:89;;;;;;;13745:26:66;;;;:::i;:::-;1148:1:50;;;:::i;2601:3:73:-;2663:15;;;;;;2755:33;2663:15;2720:20;2663:15;2335:29442:89;2649:33:73;2663:15;:18;;:15;;;;:18;:::i;2649:33::-;2335:29442:89;:::i;:::-;2720:20:73;2335:29442:89;;;;;;;;;;2720:20:73;2335:29442:89;2755:18:73;;:33;;;;;:::i;:::-;;;:::i;:::-;;2827:23;;;:::i;:::-;2802:48;:19;;;:48;:::i;:::-;2335:29442:89;2932:17:73;1460:31:41;1237:14;1460:31;;2932:17:73;;;:::i;:::-;2335:29442:89;;3059:78:73;;3800:23;2335:29442:89;3800:23:73;;;2335:29442:89;;;;;;3800:69:73;;;;2601:3;3977:660;;;;2601:3;;;;2571:13;2335:29442:89;2571:13:73;;3977:660;2335:29442:89;4236:195:73;2335:29442:89;;4157:23:73;2335:29442:89;4062:56:73;2335:29442:89;;4062:56:73;:::i;:::-;4157:20;;:23;:::i;:::-;2335:29442:89;;2095:29:73;2335:29442:89;4236:195:73;;:::i;:::-;4454:30;;4450:173;;3977:660;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;:::i;:::-;4450:173;;;;;;;;3800:69;2335:29442:89;;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;;3059:78;3114:8;;;;;;2365:190;2335:29442:89;;;;-1:-1:-1;958:1:71;7916:84:46;1192:1:71;7916:84:46;2335:29442:89;2365:190:73;;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;13206:573:66;2335:29442:89;;:::i;:::-;1083:103:50;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;13497:18:66;2335:29442:89;;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;13570:14:66;2335:29442:89;;;-1:-1:-1;2335:29442:89;;13604:11:66;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;1947:15:73;;2335:29442:89;;:::i;:::-;1947:24:73;;2002:26;;;:::i;:::-;1981:18;;;;:47;;;2061:24;;;:::i;:::-;2038:20;;;;:47;;;2127:24;;;:::i;:::-;2095:29;;;;;;:56;2194:74;2335:29442:89;;;2194:74:73;:::i;:::-;2161:30;;;:107;2300:24;;;:::i;:::-;2278:19;;;:46;;;2335:29442:89;;38442:19:64;;7916:84:46;38442:19:64;7916:84:46;;;;2365:119:73;;;;13206:573:66;2365:190:73;;;;13206:573:66;-1:-1:-1;2586:13:73;;;;;;;13719:24:66;;;;;;;;;;;;;;13745:26;13719:24;13745:26;13719:24;-1:-1:-1;;;;;2335:29442:89;;;12512:18;2335:29442;;;;;;;13745:26:66;1148:1:50;;:::i;2601:3:73:-;2663:15;;;;;;;;2755:33;2663:15;2720:20;2663:15;2335:29442:89;2649:33:73;2663:15;;:18;:15;:18;:15;;:18;:::i;2720:20::-;2335:29442:89;2755:18:73;;:33;;;;;:::i;:::-;;2827:23;;;:::i;:::-;2802:48;:19;;;:48;:::i;:::-;2335:29442:89;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;2335:29442:89;;;;3059:78:73;;3800:23;;2335:29442:89;;;3800:69:73;;;;2601:3;3977:660;;;;2601:3;;;;;;2571:13;2335:29442:89;2571:13:73;;3977:660;2335:29442:89;4236:195:73;2335:29442:89;4157:23:73;2335:29442:89;4062:56:73;2335:29442:89;;4062:56:73;:::i;:::-;4157:20;;:23;:::i;:::-;2335:29442:89;;;4236:195:73;;:::i;:::-;4454:30;;4450:173;;3977:660;;;;;;;4450:173;4586:17;4545:39;;;;:::i;4586:17::-;4450:173;;;;;;3800:69;2335:29442:89;;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;;3059:78;3114:8;;;;;;;;;;2365:190;2335:29442:89;;;;-1:-1:-1;958:1:71;7916:84:46;1192:1:71;7916:84:46;2335:29442:89;2365:190:73;;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;13206:573:66;2335:29442:89;;:::i;:::-;1083:103:50;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;;-1:-1:-1;2335:29442:89;13497:18:66;2335:29442:89;;;;-1:-1:-1;2335:29442:89;-1:-1:-1;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;13570:14:66;2335:29442:89;;;-1:-1:-1;2335:29442:89;;13604:11:66;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;1947:15:73;;2335:29442:89;;:::i;:::-;1947:24:73;;2002:26;;;:::i;:::-;1981:18;;;;:47;;;2061:24;;;:::i;:::-;2038:20;;;;:47;;;2127:24;;;:::i;:::-;2095:29;;;;;;:56;2194:74;2335:29442:89;;;2194:74:73;:::i;:::-;2161:30;;;:107;2300:24;;;:::i;:::-;2278:19;;;:46;;;2335:29442:89;;1038:1:71;;7916:84:46;1038:1:71;7916:84:46;;;;2365:119:73;;;;13206:573:66;2365:190:73;;;;13206:573:66;-1:-1:-1;2586:13:73;;;;;;;13719:24:66;;;;;;;;;;;;;;13745:26;13719:24;13745:26;13719:24;-1:-1:-1;;;;;2335:29442:89;;;12512:18;2335:29442;;;;;;;2601:3:73;2663:15;;;;;;;;2755:33;2663:15;2720:20;2663:15;2335:29442:89;2649:33:73;2663:15;;:18;:15;:18;:15;;:18;:::i;2755:33::-;;2827:23;;;:::i;:::-;2802:48;:19;;;:48;:::i;:::-;2335:29442:89;2932:17:73;1237:14:41;1460:31;;2932:17:73;;;:::i;:::-;2335:29442:89;;;;3059:78:73;;3800:23;;2335:29442:89;;;3800:69:73;;;;2601:3;3977:660;;;;2601:3;;;;;;2571:13;2335:29442:89;2571:13:73;;3977:660;2335:29442:89;4236:195:73;2335:29442:89;4157:23:73;2335:29442:89;4062:56:73;2335:29442:89;;4062:56:73;:::i;4236:195::-;4454:30;;4450:173;;3977:660;;;;;;;4450:173;4586:17;4545:39;;;;:::i;:::-;4586:17;;:::i;:::-;4450:173;;;;;;3800:69;2335:29442:89;;;;;;;:::i;:::-;;;;:::i;:::-;3827:42:73;3800:69;;;;3059:78;3114:8;;;;;;;;;;2365:190;2335:29442:89;;;;-1:-1:-1;958:1:71;7916:84:46;1192:1:71;7916:84:46;2335:29442:89;2365:190:73;;;:119;2424:56;;;;;:::i;:::-;:60;;2365:119;;;;1192:349:50;551:66;2806:53:52;;1316:93:50;;1529:4;3051:52:52;;1192:349:50:o;1316:93::-;1368:30;-1:-1:-1;1368:30:50;;-1:-1:-1;1368:30:50;1547:106;1640:5;551:66;3051:52:52;1547:106:50:o;2786:145:66:-;9187:17:69;2806:53:52;2335:29442:89;2837:88:66;;2786:145::o;2837:88::-;2894:20;-1:-1:-1;2894:20:66;;-1:-1:-1;2894:20:66;3450:119;;3544:17;3450:119;3544:17;:::i;:::-;2335:29442:89;;;;;;3543:18:66;2335:29442:89;-1:-1:-1;2335:29442:89;3543:18:66;;:::i;8289:494:90:-;;;;;8422:32;;;;;:::i;:::-;-1:-1:-1;;8468:37:90;;8464:313;;8289:494;;;;;:::o;8464:313::-;8525:25;;;8521:132;;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;7477:19:90;;;7473:84;;2335:29442:89;;;7571:21:90;;;7567:87;;7664:17;:33;:17;:24;:17;;;-1:-1:-1;;;;;2335:29442:89;;;7664:11:90;2335:29442:89;;;;;;;7664:17:90;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;7664:33:90;2335:29442:89;;8004:60:90;;;;;;2335:29442:89;;;8004:60:90;;-1:-1:-1;;;;;2335:29442:89;;;8004:60:90;;;2335:29442:89;;;;;;;;;;;;;;;8238:38:90;;;;7494:1;2335:29442:89;;;;;8004:60:90;;;;;;;;;8464:313;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;8238:38:90;;;;8464:313;;;;;;;8004:60;;;;;;:::i;:::-;;;;7567:87;7615:28;7494:1;7615:28;-1:-1:-1;;;;;2335:29442:89;;6846:16:66;2335:29442:89;;-1:-1:-1;21462:49:64;7473:84:90;7519:27;7494:1;7519:27;-1:-1:-1;;;;;2335:29442:89;;6846:16:66;2335:29442:89;;-1:-1:-1;21462:49:64;8521:132:90;-1:-1:-1;;;;;8577:61:90;;;;2335:29442:89;8577:61:90;2335:29442:89;;;;;;8577:61:90;;6402:966;;;;;-1:-1:-1;;;;;2335:29442:89;;;;6500:18:90;;;6496:80;;2335:29442:89;;;6590:16:90;;;6586:78;;6696:21;:15;;;-1:-1:-1;;;;;2335:29442:89;;;6696:9:90;2335:29442:89;;;;;;;6696:21:90;2335:29442:89;6731:20:90;;;6727:109;;2335:29442:89;;;6870:21:90;:15;;;-1:-1:-1;;;;;2335:29442:89;;;6696:9:90;2335:29442:89;;;;;;;6870:21:90;2335:29442:89;7095:19:90;:15;;;-1:-1:-1;;;;;2335:29442:89;;;6696:9:90;2335:29442:89;;;;;;;7095:19:90;2335:29442:89;;;;;;;;;7150:32:90;2335:29442:89;;7150:32:90;;;;2335:29442:89;;;;;;;;7150:32:90;;;;7307:54;;;;;2335:29442:89;;;7307:54:90;;-1:-1:-1;;;;;2335:29442:89;;;7307:54:90;;;2335:29442:89;;;;;;;;;;;;;-1:-1:-1;;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;7307:54:90;2335:29442:89;6727:109:90;6774:51;6516:1;6774:51;-1:-1:-1;;;;;2335:29442:89;;35378:60:64;2335:29442:89;;;;;;;;-1:-1:-1;21462:49:64;6586:78:90;6629:24;6516:1;6629:24;-1:-1:-1;;;;;2335:29442:89;;6846:16:66;2335:29442:89;;-1:-1:-1;21462:49:64;6496:80:90;6541:24;6516:1;6541:24;-1:-1:-1;;;;;2335:29442:89;;6846:16:66;2335:29442:89;;-1:-1:-1;21462:49:64;15722:700;;;;2335:29442:89;;:::i;:::-;;;;;;;;:::i;:::-;16193:29:64;16128;;;2335:29442:89;16193:29:64;;;16376:24;16294:18;2335:29442:89;;16294:18:64;;2335:29442:89;16376:24:64;;;2335:29442:89;16128:29:64;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;;;16294:18:64;16030:385;;2335:29442:89;16128:29:64;16030:385;;2335:29442:89;16030:385:64;;;2335:29442:89;16193:29:64;16030:385;;2335:29442:89;16338:10:64;16030:385;;;2335:29442:89;16376:24:64;16030:385;;2335:29442:89;15722:700:64;:::o;5216:1180:90:-;;;-1:-1:-1;;;;;2335:29442:89;;;5298:18:90;;;5294:80;;5409:21;:15;;;-1:-1:-1;;;;;2335:29442:89;;;6696:9:90;2335:29442:89;;;;;;;5409:21:90;2335:29442:89;5444:23:90;;;5440:115;;2335:29442:89;;;5589:21:90;:15;;;-1:-1:-1;;;;;2335:29442:89;;;6696:9:90;2335:29442:89;;;;;;;5589:21:90;2335:29442:89;5681:29:90;:20;;;-1:-1:-1;;;;;2335:29442:89;;;5681:14:90;2335:29442:89;;;;;;;5681:20:90;2335:29442:89;5681:29:90;:::i;:::-;5751:14;;;:::i;:::-;5777:20;;-1:-1:-1;;;;;2335:29442:89;;;5681:14:90;2335:29442:89;;;;;;;5777:20:90;2335:29442:89;;6113:62:90;;;;;;2335:29442:89;;;6113:62:90;;-1:-1:-1;;;;;2335:29442:89;;;6113:62:90;;;2335:29442:89;5314:1:90;2335:29442:89;;;;;;;;;;;;5314:1:90;6349:40;;;;5314:1;2335:29442:89;;;;;6113:62:90;2335:29442:89;6349:40:90;;;;5216:1180::o;5440:115::-;5490:54;5314:1;5490:54;-1:-1:-1;;;;;2335:29442:89;;35378:60:64;2335:29442:89;;;;;;;;-1:-1:-1;21462:49:64;9293:163:66;-1:-1:-1;;;;;2335:29442:89;;9604:15:66;2335:29442:89;9604:15:66;2335:29442:89;;1038:1:71;2335:29442:89;9604:15:66;2335:29442:89;;7916:84:46;;;9367:25:66;9363:87;;9293:163;:::o;9363:87::-;9415:24;9604:15;9415:24;;2335:29442:89;;9604:15:66;9415:24;5894:129;6011:4;5894:129;;;:::i;1418:149:40:-;1500:6;1496:65;;1418:149::o;1496:65::-;1529:21;;;;;;8800:610:43;;;2335:29442:89;;;9122:17:43;2335:29442:89;;;;9122:17:43;;;:::i;:::-;9185:21;;;:::i;:::-;9222:13;9234:1;9237:10;;;;;;9381:22;;;;;8800:610;:::o;9249:3::-;9289:10;2688:41;9289:10;2335:29442:89;9289:10:43;;;:::i;:::-;2335:29442:89;2689:22:43;9327:17;;;;:::i;:::-;2335:29442:89;9346:13:43;;;;:::i;:::-;2335:29442:89;2689:22:43;;:::i;:::-;2688:41;:::i;:::-;9268:92;;;;:::i;:::-;2335:29442:89;;9222:13:43;;2335:29442:89;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;17171:657:70:-;-1:-1:-1;;;;;;17433:291:70;17171:657;;;17433:291;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;17541:11:70;;;;2335:29442:89;;;;;:::i;:::-;17695:15:70;17541:11;17570:21;;;2335:29442:89;17648:29:70;;;17695:15;;;2335:29442:89;17570:21:70;2335:29442:89;17433:291:70;;;;;;;2335:29442:89;17433:291:70;;;;;;:::i;:::-;;2335:29442:89;;17433:291:70;;;;;;;-1:-1:-1;17433:291:70;;;17171:657;2335:29442:89;;17416:406:70;;17171:657::o;17416:406::-;17765:46;-1:-1:-1;17765:46:70;17433:291;-1:-1:-1;17765:46:70;17433:291;;;;;;;;;;;;;;:::i;:::-;;;;6574:856:73;6819:15;;;;;2335:29442:89;7033:13:73;-1:-1:-1;7048:13:73;;;;;;6574:856;;;;;:::o;7063:3::-;38442:19:64;7120:18:73;8416:147;7120:18;1237:14:41;7107:35:73;7120:21;:18;;;;;:21;:::i;7107:35::-;7082:19;;;;;:60;:19;;;:60;:::i;:::-;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;1460:31:41;8058:20:73;;:48;:20;;;;;:48;:::i;:::-;2335:29442:89;8522:31:73;8466:30;:42;:30;;;;;:42;:::i;:::-;2335:29442:89;8522:19:73;;:31;:::i;:::-;2335:29442:89;8416:147:73;;:::i;:::-;8372:191;:29;;;;;:191;:::i;:::-;2335:29442:89;;7033:13:73;;6574:856;6819:15;;;;;2335:29442:89;7033:13:73;-1:-1:-1;7048:13:73;;;;;;6574:856;;;;;:::o;7063:3::-;2335:29442:89;7120:18:73;8416:147;7120:18;1237:14:41;7107:35:73;7120:21;:18;;;;;:21;:::i;7107:35::-;7082:19;;;;;:60;:19;;;:60;:::i;:::-;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;1460:31:41;8058:20:73;;:48;:20;;;;;:48;:::i;:::-;2335:29442:89;8522:31:73;8466:30;:42;:30;;;;;:42;:::i;8522:31::-;2335:29442:89;8416:147:73;;:::i;:::-;8372:191;:29;;;;;:191;:::i;:::-;2335:29442:89;;7033:13:73;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;41784:8110:64:-;;1083:103:50;;:::i;:::-;2335:29442:89;;;;:::i;:::-;42243:15:64;;;;;42291:31;42243:15;;2335:29442:89;;;;42291:31:64;:::i;:::-;42432;42478:11;;;2335:29442:89;;;;;;:::i;:::-;;;;:::i;:::-;42478:47:64;;42555:21;;;;2335:29442:89;;42607:31:64;2335:29442:89;;42607:31:64;:::i;:::-;42733:29;42673:175;42733:29;42478:11;42733:29;;;42780:25;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;42780:25:64;42673:175;;:::i;:::-;9851:16:69;43519:65:64;9851:16:69;2806:53:52;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;9702:26:69;;2574:386:44;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;2806:53:52;2574:386:44;;43519:65:64;43515:419;;42474:3712;46214:21;;;2335:29442:89;46200:35:64;;;46196:128;;46358:11;;;;;;;:::i;:::-;42243:15;48028:32;;;2335:29442:89;46423:3:64;2335:29442:89;;46401:20:64;;;;;46567:21;;;;;:::i;:::-;2335:29442:89;46630:17:64;;;:::i;:::-;46755:16;;;;:::i;:::-;2335:29442:89;46755:16:64;;47076:30;47135:22;47076:30;47135:19;47076:33;:30;;47010:169;47076:30;;;:33;:::i;47010:169::-;47201:31;;;;;:::i;:::-;2335:29442:89;46751:737:64;47531:18;;:15;;;:18;:::i;:::-;2335:29442:89;47630:20:64;;:23;:20;;;:23;:::i;:::-;2335:29442:89;47615:38:64;;47611:147;;47853:12;;;48673:75;47853:12;;;;48700:47;47853:12;48008:236;47853:12;48064:180;47853:12;;2335:29442:89;47853:12:64;;;;48766:19;47853:12;;:::i;48008:236::-;2335:29442:89;48673:23:64;:20;2335:29442:89;48673:20:64;;;:23;:::i;:::-;2335:29442:89;;;48700:47:64;;:::i;:::-;48673:75;;:::i;48766:19::-;2335:29442:89;46386:13:64;;47611:147;47719:20;:23;:20;47680:63;47719:20;;:23;:::i;:::-;2335:29442:89;47680:63:64;2335:29442:89;47680:63:64;-1:-1:-1;;;;;2335:29442:89;;;35378:60:64;2335:29442:89;;;;;;;;46751:737:64;47453:16;;;;;;:::i;:::-;2335:29442:89;46751:737:64;;46401:20;;;;;;;;;;;48910:8;46401:20;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;48910:8:64;49692:195;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;49084:11:64;49109;49084;42243:15;49084:11;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;49097:10:64;49109:11;;:::i;:::-;49136:17;;:::i;:::-;49132:189;;46381:2429;49632:11;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;49632:11:64;;:::i;:::-;49797:25;2335:29442:89;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;:::i;49797:25:64:-;2335:29442:89;49692:195:64;-1:-1:-1;;;;;2335:29442:89;;;;:::i;:::-;;;46214:21:64;2335:29442:89;;;;;;;49692:195:64;;;:::i;49132:189::-;49298:11;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;49298:11:64;;:::i;:::-;49132:189;;46196:128;46258:55;2335:29442:89;46258:55:64;2335:29442:89;;;;;;;;-1:-1:-1;21462:49:64;43515:419;2335:29442:89;;;43632:52:64;2335:29442:89;;;;;;;;43632:52:64;:::i;:::-;43707:13;2335:29442:89;43744:3:64;2335:29442:89;;43722:20:64;;;;;43791:21;;43859:42;43791:21;;43859:42;43884:17;43791:21;;;:46;2335:29442:89;43791:21:64;;;;;:::i;:::-;2335:29442:89;43791:46:64;:::i;:::-;43771:66;;;;:::i;43884:17::-;2335:29442:89;43859:42:64;;;;:::i;:::-;2335:29442:89;43859:42:64;:::i;:::-;;;:::i;:::-;2335:29442:89;;43707:13:64;;43722:20;;;;;;;;;;;;43515:419;;42474:3712;2335:29442:89;;43969:41:64;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;43954:56:64;43969:41;;44026:57;2335:29442:89;;44026:57:64;:::i;:::-;44113:21;;;2335:29442:89;44148:42:64;;44257:20;;44293:434;44351:376;44257:20;;44113:21;44224:54;2335:29442:89;44257:20:64;;;44224:54;:::i;:::-;44204:17;;2335:29442:89;;;;44443:29:64;42478:11;44443:29;;;2335:29442:89;44687:22:64;2335:29442:89;44613:52:64;44566:25;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;44687:22:64;44351:376;;:::i;:::-;2335:29442:89;;;44293:434:64;;;:::i;:::-;2335:29442:89;42474:3712:64;;43950:2236;44763:42;2335:29442:89;;;;;;;;:::i;:::-;;;;:::i;:::-;44748:57:64;44763:42;;44821:57;2335:29442:89;;44821:57:64;:::i;:::-;45159:358;44894:42;2335:29442:89;45003:20:64;;;45073:39;44970:54;45003:20;;44970:54;:::i;:::-;44950:17;;;2335:29442:89;;;;45073:20:64;:39;:::i;:::-;2335:29442:89;45038:74:64;2335:29442:89;;45038:74:64;;:::i;:::-;2335:29442:89;45231:29:64;45313:37;42478:11;45231:29;;;2335:29442:89;;45313:37:64;;;:::i;:::-;2335:29442:89;45411:52:64;45368:25;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;45368:25:64;2335:29442:89;;45411:52:64;:::i;:::-;2335:29442:89;45481:22:64;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;45481:22:64;45159:358;;:::i;:::-;45127:390;;42474:3712;;44744:1442;2335:29442:89;;45553:26:64;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;45538:41:64;45553:26;;45595:59;2335:29442:89;;45595:59:64;:::i;:::-;2335:29442:89;45817:68:64;:27;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;45817:68:64;45939:21;;;;2335:29442:89;46025:29:64;42478:11;46025:29;;;46076:15;;;;;;2335:29442:89;45817:292:64;45939:21;2335:29442:89;45817:292:64;;;;;;;2335:29442:89;45817:292:64;;45907:10;45817:292;;;;:::i;:::-;;;;;;;;;;2335:29442:89;;;;;;;45817:292:64;;;45534:652;45753:356;;;;42474:3712;;45817:292;;;;;;;;;;;2335:29442:89;45817:292:64;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;45534:652;46147:28;2335:29442:89;46147:28:64;;2335:29442:89;46147:28:64;2335:29442:89;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;18837:1504:70:-;;;;;;;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;19361:11:70;;;;2335:29442:89;;;;;:::i;:::-;19361:11:70;19470:29;;;19513:15;;;;;2335:29442:89;;;19266:272:70;;;;;2335:29442:89;19266:272:70;;;;;;;;;:::i;:::-;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;19266:272:70;;;-1:-1:-1;19266:272:70;;;;;;;;;-1:-1:-1;;;19266:272:70;;;18837:1504;2335:29442:89;;;;19553:76:70;;18837:1504;19549:159;;1792:1:71;;7916:84:46;958:1:71;7916:84:46;;2335:29442:89;19806:94:70;;19915:13;;-1:-1:-1;19915:13:70;;-1:-1:-1;19915:13:70;1792:1:71;;;19910:382:70;20302:32;;;;18837:1504;:::o;19968:3::-;2335:29442:89;;19930:36:70;;;;;19991:28;;;;:::i;:::-;2335:29442:89;;20022:20:70;;;:23;:20;;;:23;:::i;:::-;2335:29442:89;-1:-1:-1;19987:295:70;;-1:-1:-1;2335:29442:89;;19968:3:70;19915:13;;19987:295;20226:23;20136:15;20176:28;20136:15;:18;;:15;;;20072:195;20136:15;;;:18;:::i;:::-;20176:28;;:::i;20226:23::-;2335:29442:89;20072:195:70;-1:-1:-1;20072:195:70;-1:-1:-1;;;;;2335:29442:89;;;35378:60:64;2335:29442:89;;;;;;;;19930:36:70;;;19549:159;19652:45;-1:-1:-1;19652:45:70;19266:272;-1:-1:-1;19652:45:70;19553:76;2335:29442:89;;;;;19573:56:70;;19553:76;;19266:272;;;;;;;;;-1:-1:-1;19266:272:70;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;1083:103:50;-1:-1:-1;1083:103:50;;;;;;;:::i;:::-;2335:29442:89;;:::i;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;19189:41:64;19185:325;;1083:103:50;19543:34:64;;;;;;2335:29442:89;;19543:34:64;:::i;:::-;19743:20;19733:54;19743:20;;;2335:29442:89;19733:38:64;:31;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;19733:38:64;2335:29442:89;;;19733:54:64;;;;;;2335:29442:89;19733:54:64;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;19733:54:64;;;1083:103:50;19706:81:64;;19821:24;;;:::i;:::-;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;20225:41:64;;20502:29;2335:29442:89;20502:29:64;;2335:29442:89;;;20659:620:64;20724:30;;;;21205:60;:39;20724:50;20755:18;;;2335:29442:89;;;20724:50:64;;:::i;:::-;2335:29442:89;21205:19:64;;;;;2335:29442:89;;21205:39:64;;:::i;20659:620::-;21325:30;;;;2335:29442:89;21294:83:64;;;21411:24;21205:19;21411:24;;2335:29442:89;21396:39:64;;;21392:134;;20221:2688;;2335:29442:89;22993:23:64;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;23018:11:64;;;;:::i;:::-;23054:24;;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;23080:12:64;;;;:::i;:::-;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;23377:215:64;;;;;:::i;:::-;23315:28;;;;;23345;2335:29442:89;23345:28:64;2335:29442:89;;;;;;;23054:24:64;23724:20;;;;;;;:39;;;;:::i;:::-;2335:29442:89;23724:53:64;;;;:::i;:::-;2335:29442:89;;23724:84:64;;;:::i;:::-;23822:19;;;;:::i;:::-;23907:18;;2335:29442:89;;;23939:20:64;;;;:40;;;;:::i;:::-;2335:29442:89;23939:55:64;;;;:::i;:::-;24008:19;;;;:::i;:::-;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;12512:18;2335:29442;;;;;24356:20:64;;;2335:29442:89;;24356:39:64;;;:::i;:::-;2335:29442:89;24409:29:64;;;;;;2335:29442:89;;24409:48:64;;;:::i;:::-;2335:29442:89;24308:159:64;;;:::i;:::-;2335:29442:89;;24274:31:64;;;2335:29442:89;;;;;;;;;;24274:31:64;2335:29442:89;24560:20:64;2335:29442:89;;24560:40:64;;;:::i;:::-;2335:29442:89;24614:29:64;;2335:29442:89;;24614:49:64;;;:::i;:::-;2335:29442:89;24512:161:64;;;:::i;:::-;2335:29442:89;;24477:32:64;;2335:29442:89;;;;;;;;;;24477:32:64;2335:29442:89;;;;;;23054:24:64;24899:27;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;24721:257:64;;2335:29442:89;;24721:257:64;1148:1:50;;;;;;:::i;21392:134:64:-;21462:49;-1:-1:-1;21462:49:64;2335:29442:89;;;;;;;-1:-1:-1;21462:49:64;20221:2688;22169:27;;;;;22118:150;22169:27;22283:61;22169:27;;2335:29442:89;5832:87:47;;;;;;;;22118:150:64;;;:::i;:::-;2335:29442:89;;;;22283:61:64;:::i;:::-;22535:30;22472:182;22535:49;:30;;;;2335:29442:89;;22535:49:64;;:::i;:::-;2335:29442:89;22602:38:64;:19;;;;2335:29442:89;;22602:38:64;;:::i;22472:182::-;22721:30;;;;2335:29442:89;22669:83:64;;22785:24;22602:19;22785:24;;2335:29442:89;22771:38:64;;;22767:132;;20221:2688;;;19733:54;;;;;;;;;;;;;;;:::i;:::-;;;;;19185:325;19345:34;;;19428:71;19345:69;2335:29442:89;;19386:27:64;;;2335:29442:89;19345:69:64;;:::i;19428:71::-;2335:29442:89;;19185:325:64;;2335:29442:89;;;;;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1644:900:36;;1796:40;1237:14:41;1460:31;;1796:40:36;:::i;:::-;1847:37;-1:-1:-1;2335:29442:89;1616:3:41;2335:29442:89;1898:37:36;1894:474;;1644:900;2486:46;;2536:1;2486:46;;;;:::i;:::-;2335:29442:89;1644:900:36;:::o;1894:474::-;-1:-1:-1;;;;;2335:29442:89;;;;2287:59:36;2335:29442:89;;;2287:59:36;;;;;2335:29442:89;2287:59:36;;;;;2335:29442:89;;2287:59:36;;;;;;;:70;2486:46;2287:59;2536:1;2287:59;-1:-1:-1;2287:59:36;;;1894:474;2287:70;;:::i;:::-;1894:474;;;;;;2287:59;;;;;;;;;;;;;;:::i;:::-;;;;19669:4:31;;;;;;;:::o;:::-;;:::i;6992:619:72:-;;19917:10:31;7292:26:72;;7288:97;;19669:4:31;;;2335:29442:89;19627:2:31;2335:29442:89;9400:76:46;;2539:209;;2335:29442:89;2539:209:46;;;;6992:619:72;:::o;9400:76:46:-;9450:15;-1:-1:-1;9450:15:46;;-1:-1:-1;9450:15:46;15171:545:64;;15552:65;15657:52;15171:545;;;;2335:29442:89;;:::i;:::-;15379:15:64;;;15451:58;15379:15;;;;;2335:29442:89;15363:57:64;-1:-1:-1;;;;;15396:23:64;;;;;2335:29442:89;;15363:57:64;;:::i;:::-;2335:29442:89;;15467:15:64;15484:24;;;;2335:29442:89;;15451:58:64;;:::i;:::-;15379:15;15430:18;;2335:29442:89;15552:65:64;:::i;:::-;15396:23;15520:29;;2335:29442:89;;15657:52:64;:::i;:::-;15484:24;15627:27;;2335:29442:89;15171:545:64:o;9557:350:70:-;9678:44;9557:350;;2335:29442:89;-1:-1:-1;;;;;;2335:29442:89;;;;9678:44:70;;;;;;;2335:29442:89;9678:44:70;;2335:29442:89;9678:44:70;;;2335:29442:89;;;;;;:::i;:::-;;;;;;;9678:44:70;2335:29442:89;;9678:44:70;;;;;;;-1:-1:-1;9678:44:70;;;9557:350;2335:29442:89;;9674:227:70;;9557:350::o;9674:227::-;9855:35;-1:-1:-1;9855:35:70;9678:44;-1:-1:-1;9855:35:70;9678:44;;;;;;;;;;;;;;:::i;:::-;;;;16599:1317:64;;;;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;17000:41:64;;17060:30;1946:22:43;465:4:47;17060:30:64;17212:38;17060:30;838:5:47;17060:30:64;;2335:29442:89;17141:30:64;17212:19;17141:49;:30;;;;2335:29442:89;;17141:49:64;;:::i;:::-;2335:29442:89;17212:19:64;;;2335:29442:89;;17212:38:64;;:::i;1946:22:43:-;838:5:47;:::i;:::-;19669:4:31;16599:1317:64;:::o;17000:909::-;2688:41:43;17287:30:64;17831:60;:39;17287:30;2689:22:43;17287:30:64;;2335:29442:89;17366:30:64;17831:19;17366:50;17397:18;17366:30;;;;17397:18;;2335:29442:89;;;17366:50:64;;:::i;:::-;2335:29442:89;17831:19:64;;;2335:29442:89;;17831:39:64;;:::i;:60::-;2689:22:43;;:::i;2335:29442:89:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;8443:856:70:-;;;2335:29442:89;;8443:856:70;;-1:-1:-1;;;;;2335:29442:89;;;;;8709:136:70;;;;;;;2335:29442:89;8709:136:70;;2335:29442:89;8709:136:70;;;2335:29442:89;;;;;;:::i;:::-;;;;;;;;;;;8709:136:70;2335:29442:89;;8709:136:70;;;;;;;-1:-1:-1;;;8709:136:70;;;8443:856;2335:29442:89;;8856:93:70;;19917:10:31;9153:38:70;;9149:109;;8443:856;:::o;8856:93::-;8899:39;-1:-1:-1;8899:39:70;8709:136;-1:-1:-1;8899:39:70;8709:136;;;;;;2335:29442:89;8709:136:70;2335:29442:89;8709:136:70;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2335:29442:89;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;:::i;10826:2303:70:-;;;;;;;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;11281:41:70;;11338:25;;;;2335:29442:89;11281:177:70;;;2335:29442:89;;;;;;:::i;:::-;11653:23:70;;;;;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;11704:24:70;;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;11876:29:70;;;;;;2335:29442:89;;11876:44:70;;;:::i;:::-;2335:29442:89;11963:29:70;;11993:14;;;2335:29442:89;11963:45:70;;;:::i;:::-;2335:29442:89;12190:20:70;11993:14;12190:20;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;12238:24:70;;;;2335:29442:89;;;:::i;:::-;11566:711:70;;;;;:::i;:::-;-1:-1:-1;;;;;2335:29442:89;11993:14:70;11566:711;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;11566:711:70;;;2335:29442:89;11704:24:70;11566:711;;2335:29442:89;11876:29:70;11566:711;;2335:29442:89;11566:711:70;;;2335:29442:89;12238:24:70;11566:711;;2335:29442:89;11566:711:70;;;2335:29442:89;11566:711:70;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;11566:711:70;;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;11566:711:70;;;2335:29442:89;11566:711:70;;;2335:29442:89;;;11527:760:70;;;;;2335:29442:89;11527:760:70;;;;;;;;;:::i;:::-;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;11527:760:70;;2335:29442:89;11527:760:70;;;;;;;2335:29442:89;;;11527:760:70;;;11281:177;2335:29442:89;;;12298:188:70;;958:1:71;7916:84:46;1792:1:71;7916:84:46;2335:29442:89;12584:100:70;;2335:29442:89;;;;;;:::i;:::-;;;;:::i;:::-;12712:41:70;:103;;;11281:177;12711:227;;;;11281:177;12694:380;;13084:38;10826:2303;:::o;12694:380::-;11566:711;13038:24;2335:29442:89;12970:93:70;2335:29442:89;12970:93:70;2335:29442:89;;;;;;;;-1:-1:-1;21462:49:64;12711:227:70;2335:29442:89;1792:1:71;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;12833:42:70;:104;;12711:227;12833:104;12913:24;11566:711;12913:24;;2335:29442:89;12879:58:70;;12711:227;;12712:103;12791:24;11566:711;12791:24;;2335:29442:89;12757:58:70;;12712:103;;12584:100;12647:26;;;;:::o;12298:188::-;12441:34;2335:29442:89;12441:34:70;11527:760;2335:29442:89;12441:34:70;11527:760;;;;;;;;;;;-1:-1:-1;11527:760:70;;;;;;:::i;:::-;;;;;;;11281:177;11432:25;;;;2335:29442:89;11281:177:70;;;;;;79656:166:64;79738:16;79734:82;;79656:166;:::o;79734:82::-;79793:11;;;:::i;3804:110:66:-;3891:15;;3804:110;3891:15;:::i;10464:315::-;-1:-1:-1;;;;;2335:29442:89;;;;;-1:-1:-1;2335:29442:89;10575:13:66;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;;;;10575:46:66;;;10571:202;;10464:315;;:::o;10571:202::-;10711:51;-1:-1:-1;10711:51:66;;2335:29442:89;;;;-1:-1:-1;10711:51:66;56530:199:64;;56637:20;-1:-1:-1;56624:99:64;;56530:199;:::o;56624:99::-;-1:-1:-1;;;;;56680:32:64;;;;2335:29442:89;56680:32:64;2335:29442:89;;56680:32:64;;2335:29442:89;;;;;;;;;;;;;;;;;;;;;;;;:::o;57131:8001:64:-;;57942:44;57131:8001;-1:-1:-1;;;;;2335:29442:89;;57970:15:64;;;;:::i;:::-;2335:29442:89;;57942:44:64;2335:29442:89;57942:44:64;;;;;;;;;;;2335:29442:89;;;;;;;;57942:44:64;;;;;;;;;;:48;:44;2335:29442:89;57942:44:64;;;57131:8001;57942:48;;:::i;:::-;57887:104;;58605:34;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;58605:34:64;2335:29442:89;58917:17:64;;;:::i;:::-;58913:109;;2335:29442:89;;;;;;;;1616:3:41;2335:29442:89;59036:54:64;;;;;59032:5982;59036:54;;;2335:29442:89;;;59638:34:64;2335:29442:89;;65051:18:64;2335:29442:89;59472:152:64;2335:29442:89;59524:51:64;2335:29442:89;1237:14:41;2335:29442:89;65080:45:64;2335:29442:89;;1616:3:41;2335:29442:89;;1460:31:41;;59524:51:64;:::i;:::-;59472:152;:::i;:::-;59638:34;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;59638:34:64;2335:29442:89;65051:18:64;:::i;:::-;65080:45;:::i;59032:5982::-;61215:57;;;;;;;;61317:71;61318:57;61215;;;;:::i;:::-;61318:29;;;:::i;:::-;:57;:::i;:::-;61317:71;:::i;:::-;61458:24;;;;;;:::i;:::-;2335:29442:89;;;61525:61:64;;57942:44;61525:61;;2335:29442:89;;;61580:4:64;2335:29442:89;;;;;61580:4:64;2335:29442:89;;;-1:-1:-1;61525:61:64;;;;;;;64952:34;61525:61;64847:77;61525:61;64847:58;61525:61;;64699:239;61525:61;65080:45;61525:61;;65051:18;61525:61;;;;;;;;2335:29442:89;61525:61:64;;;59032:5982;63717:54;;64751:51;63717:54;;64063:21;63717:54;;;;;64751:78;63717:54;;1237:14:41;63717:54:64;;:::i;:::-;64063:21;:::i;:::-;1460:31:41;64751:51:64;:::i;:::-;:78;:::i;:::-;64847:58;;:::i;:77::-;64699:239;;:::i;61525:61::-;64751:78;61525:61;;1237:14:41;61525:61:64;;;64751:51;61525:61;;;;64063:21;61525:61;;;-1:-1:-1;61525:61:64;;;;;;:::i;:::-;;;;;;;;;;;;58913:109;58950:61;-1:-1:-1;58950:61:64;;-1:-1:-1;;;;58950:61:64:o;57942:44::-;;;;;;;;;;;;;;:::i;:::-;;;;57131:8001;;58508:41;57131:8001;;-1:-1:-1;;;;;2335:29442:89;;58533:15:64;;;;:::i;:::-;2335:29442:89;;;58508:41:64;;;;;;;;;;;;;2335:29442:89;;;;;;;;58508:41:64;;;;;;;;;;:45;:41;57383:1195;58508:41;;;57131:8001;58508:45;;:::i;:::-;58466:101;;;;58605:34;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;58605:34:64;2335:29442:89;58917:17:64;;;:::i;:::-;58913:109;;2335:29442:89;;;;;;;;;;1616:3:41;2335:29442:89;59036:54:64;;;;;59032:5982;59036:54;;;2335:29442:89;;;;59638:34:64;2335:29442:89;;65051:18:64;2335:29442:89;59472:152:64;2335:29442:89;59524:51:64;2335:29442:89;1237:14:41;2335:29442:89;65080:45:64;2335:29442:89;;1616:3:41;2335:29442:89;;1460:31:41;;59524:51:64;:::i;59032:5982::-;62502:54;;;;;;;;62598:66;62599:52;62502:54;;;;:::i;:::-;62599:27;;;:::i;:::-;:52;:::i;62598:66::-;2335:29442:89;;62917:47:64;;;58508:41;62917:47;;2335:29442:89;;;;62917:47:64;2335:29442:89;;;62917:47:64;;;;;;;63320:24;62917:47;57383:1195;62917:47;;;59032:5982;63320:24;;;;:::i;:::-;2335:29442:89;;;63391:55:64;;58508:41;63391:55;;2335:29442:89;;;63440:4:64;2335:29442:89;;;;;63440:4:64;2335:29442:89;;;-1:-1:-1;63391:55:64;;;;;;;;64952:34;63391:55;64847:77;63391:55;64847:58;63391:55;;64751:78;63391:55;;;65080:45;63391:55;64699:239;63391:55;;65051:18;63391:55;;;;;57383:1195;63391:55;;;59032:5982;63717:54;;1237:14:41;63717:54:64;;;;;;64751:51;63717:54;;64063:21;63717:54;;:::i;63391:55::-;64751:51;63391:55;;;;1237:14:41;63391:55:64;;;;64063:21;63391:55;;;-1:-1:-1;63391:55:64;;;;;;:::i;:::-;;;;;;;;;;62917:47;;;;;;;;;;;;;;:::i;:::-;;;;58913:109;58950:61;-1:-1:-1;58950:61:64;-1:-1:-1;58950:61:64;;-1:-1:-1;;;;;58950:61:64:o;58508:41::-;;;;;;;;;;;;;;:::i;:::-;;;;57131:8001;;;;2335:29442:89;;;:::i;:::-;57387:25:64;;;;;;57942:44;;57970:15;;;:::i;57942:44::-;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;57942:44:64;;;;;;:48;:44;2335:29442:89;57942:44:64;;;:48;;:::i;:::-;57887:104;57383:1195;;58605:34;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;58605:34:64;2335:29442:89;58917:17:64;;;:::i;:::-;58913:109;;2335:29442:89;;;;;;1616:3:41;2335:29442:89;;;;59036:54:64;;;;;2335:29442:89;;;;65051:18:64;2335:29442:89;59472:152:64;2335:29442:89;59524:51:64;-1:-1:-1;;;;;2335:29442:89;1237:14:41;2335:29442:89;65080:45:64;2335:29442:89;1616:3:41;2335:29442:89;;1460:31:41;;59524:51:64;:::i;59472:152::-;59638:34;;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;65051:18:64;2335:29442:89;65080:45:64;:::i;59032:5982::-;60076:32;;;;2335:29442:89;60076:32:64;;;2335:29442:89;:::i;:::-;60244:25:64;;;61317:71;61318:57;61215;;;;:::i;:::-;61318:29;;;:::i;61317:71::-;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;61458:24:64;;;;;;:::i;:::-;2335:29442:89;;;61525:61:64;;;;;2335:29442:89;;;61580:4:64;2335:29442:89;;;;;61525:61:64;;2335:29442:89;;;;;;-1:-1:-1;;61525:61:64;;;;;;64699:239;61525:61;;64847:77;61525:61;64847:58;-1:-1:-1;;;;;61525:61:64;;;;;65080:45;61525:61;;;64063:21;61525:61;65051:18;61525:61;64751:51;61525:61;64751:78;61525:61;1237:14:41;61525:61:64;2335:29442:89;61525:61:64;;;60240:3221;61501:85;60240:3221;;;;2335:29442:89;63717:54:64;;;;;:::i;61525:61::-;;;;;;;;;;;;;;:::i;:::-;;;;60240:3221;62502:54;;62598:66;62599:52;62502:54;;;;:::i;:::-;62599:27;;;:::i;62598:66::-;2335:29442:89;;;62917:47:64;;;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;62917:47:64;;2335:29442:89;;;62917:47:64;2335:29442:89;;;;62917:47:64;;;;;;63320:24;62917:47;2335:29442:89;62917:47:64;;;60240:3221;63320:24;;;;:::i;:::-;2335:29442:89;;;63391:55:64;;62917:47;63391:55;;2335:29442:89;;;63440:4:64;2335:29442:89;;;;;;;;;;;;;-1:-1:-1;;63391:55:64;;;;;;;65080:45;63391:55;64847:77;63391:55;64847:58;63391:55;;;-1:-1:-1;;;;;63391:55:64;;1237:14:41;63391:55:64;;;;;;;65051:18;63391:55;;64751:51;63391:55;64699:239;63391:55;;64751:78;63391:55;64063:21;63391:55;2335:29442:89;63391:55:64;;;60240:3221;63364:82;;60240:3221;;;;;63391:55;;;;;;-1:-1:-1;63391:55:64;;;;;;:::i;:::-;;;;;62917:47;;;;;;;;;;;;;;:::i;:::-;;;;58913:109;-1:-1:-1;58950:61:64;;-1:-1:-1;;;58950:61:64:o;57942:44::-;;;;;;;;;;;;;;:::i;57383:1195::-;58508:41;;58533:15;;;:::i;:::-;2335:29442:89;;58508:41:64;;;;2335:29442:89;58508:41:64;;;;;2335:29442:89;;;;;;;;58508:41:64;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;58508:41:64;;;;;;:45;:41;2335:29442:89;58508:41:64;;;:45;;:::i;:::-;57383:1195;;;58508:41;;;;;;;;;;;;;;:::i;65538:6987::-;;;66923:45;65538:6987;;-1:-1:-1;;;;;2335:29442:89;;66952:15:64;;;;:::i;:::-;2335:29442:89;;66923:45:64;2335:29442:89;66923:45:64;;;;;;;;;;;2335:29442:89;;;;;;;;66923:45:64;;;;;;;;;;:49;:45;65792:1205;66923:45;;;:49;;:::i;:::-;66881:105;;;67024:34;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;67024:34:64;2335:29442:89;67334:17:64;;;:::i;:::-;67330:109;;1237:14:41;;;;;;;;;1460:31;;;;67453:53:64;;;;;67449:4958;67453:53;;;2335:29442:89;;;72417:40:64;2335:29442:89;67878:149:64;2335:29442:89;;68041:34:64;2335:29442:89;;67961:52:64;2335:29442:89;72498:19:64;2335:29442:89;;;1616:3:41;2335:29442:89;67961:52:64;:::i;:::-;1460:31:41;;2335:29442:89;67878:149:64;:::i;67449:4958::-;70820:57;;;;;;;;70922:72;70923:58;70820:57;;;;:::i;:::-;70923:30;;;:::i;70922:72::-;2335:29442:89;;;71036:77:64;;66923:45;71036:77;;2335:29442:89;;;71092:4:64;2335:29442:89;;;;;;;;;;;;;;71092:4:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;71036:77:64;;;;;;;72345:34;71036:77;72241:76;71036:77;72417:40;71036:77;;;72498:19;71036:77;;;;72092:239;71036:77;;;65792:1205;71036:77;;;67449:4958;71421:21;;;72144:57;71421:21;;;;72241:52;71421:21;;72144:79;71421:21;;;:::i;:::-;72144:57;:::i;:79::-;2335:29442:89;1616:3:41;2335:29442:89;72241:52:64;:::i;71036:77::-;72241:52;71036:77;;;;72144:79;71036:77;;;72144:57;71036:77;;;71421:21;71036:77;;;-1:-1:-1;71036:77:64;;;;;;:::i;:::-;;;;;;;;;;;;;67330:109;67367:61;-1:-1:-1;67367:61:64;-1:-1:-1;67367:61:64;;-1:-1:-1;;;;67367:61:64:o;66923:45::-;;;;;;;;;;;;;;:::i;65538:6987::-;;66347:43;65538:6987;;;;-1:-1:-1;;;;;2335:29442:89;;66374:15:64;;;:::i;:::-;2335:29442:89;;66347:43:64;2335:29442:89;66347:43:64;;;;;;;;;;;2335:29442:89;;;;;;;;66347:43:64;;;;;;;;;;:47;:43;2335:29442:89;66347:43:64;;;:47;;:::i;:::-;66292:103;;67024:34;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;67024:34:64;2335:29442:89;67334:17:64;;;:::i;:::-;67330:109;;-1:-1:-1;1237:14:41;;;;;;;;;1460:31;;;67453:53:64;;;;;2335:29442:89;;;;;67878:149:64;2335:29442:89;;72417:40:64;2335:29442:89;67961:52:64;72498:19;2335:29442:89;;;68041:34:64;2335:29442:89;1616:3:41;2335:29442:89;67961:52:64;:::i;67449:4958::-;69586:54;;;;;;;;69682:65;69683:51;69586:54;;;;:::i;69682:65::-;2335:29442:89;;;69792:72:64;;66347:43;69792:72;;2335:29442:89;;;69843:4:64;2335:29442:89;;;;;;;;;;;;;;69843:4:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;69792:72:64;;;;;;;72345:34;69792:72;72241:76;69792:72;72241:52;69792:72;;;;72144:57;72498:19;69792:72;;72092:239;69792:72;;;72417:40;69792:72;;;;;;;72144:79;69792:72;2335:29442:89;69792:72:64;;;67449:4958;71421:21;;;;;;;;:::i;69792:72::-;71421:21;69792:72;;;;;;;;;;-1:-1:-1;69792:72:64;;;;;;:::i;:::-;;;;;;;67330:109;67367:61;-1:-1:-1;;;;;67367:61:64:o;65538:6987::-;;;2335:29442:89;;;:::i;:::-;65796:25:64;;;;;;;66347:43;;66374:15;;;:::i;66347:43::-;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;66347:43:64;;;;;;:47;:43;2335:29442:89;66347:43:64;;;:47;;:::i;:::-;66292:103;65792:1205;;67024:34;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;67024:34:64;2335:29442:89;67334:17:64;;;:::i;:::-;67330:109;;1237:14:41;;;;;;;;;;1460:31;;;;67453:53:64;;;;;2335:29442:89;;;;-1:-1:-1;;;;;67878:149:64;2335:29442:89;;72498:19:64;2335:29442:89;67961:52:64;2335:29442:89;72417:40:64;2335:29442:89;1616:3:41;2335:29442:89;67961:52:64;:::i;67878:149::-;68041:34;;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;68041:34:64;2335:29442:89;67449:4958:64;2335:29442:89;72417:40:64;:::i;67449:4958::-;68480:32;;;;;;2335:29442:89;68480:32:64;;2335:29442:89;:::i;:::-;68648:25:64;;;69682:65;69683:51;69586:54;;;;:::i;69682:65::-;2335:29442:89;;;69792:72:64;;;;;2335:29442:89;;;69843:4:64;2335:29442:89;;;;;;;;;;;;69792:72:64;2335:29442:89;;;-1:-1:-1;;;;;;2335:29442:89;;69792:72:64;;;;;;72092:239;69792:72;;72241:76;69792:72;72241:52;69792:72;72144:79;69792:72;;-1:-1:-1;;;;;72498:19:64;69792:72;;71421:21;69792:72;;72417:40;69792:72;;;;;;72144:57;69792:72;2335:29442:89;69792:72:64;;;68644:2484;69765:99;68644:2484;;;;2335:29442:89;71421:21:64;;:::i;72092:239::-;72345:34;;;;-1:-1:-1;;;;;2335:29442:89;;;58605:20:64;2335:29442:89;;;;;;;72345:34:64;2335:29442:89;67449:4958:64;;69792:72;;;;;;;;;;;;;;:::i;:::-;;;;68644:2484;70922:72;70923:58;70820:57;;;;:::i;70922:72::-;2335:29442:89;;;71036:77:64;;;;;2335:29442:89;;;71092:4:64;2335:29442:89;;;;;;;;;;;71036:77:64;2335:29442:89;;;-1:-1:-1;;;;;;2335:29442:89;;71036:77:64;;;;;;;72092:239;71036:77;;72241:76;-1:-1:-1;;;;;72241:52:64;71036:77;72144:79;71036:77;;;72498:19;71036:77;71421:21;71036:77;;72417:40;71036:77;;;;;;;;72144:57;71036:77;2335:29442:89;71036:77:64;;;68644:2484;71012:101;68644:2484;;;;;71036:77;;;;;;;;;;;;;;:::i;:::-;;;;65792:1205;66923:45;;66952:15;;;:::i;:::-;2335:29442:89;;66923:45:64;;;;2335:29442:89;66923:45:64;;;;;2335:29442:89;;;;;;;;66923:45:64;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;66923:45:64;;;;;;:49;:45;2335:29442:89;66923:45:64;;;:49;;:::i;:::-;65792:1205;;;1736:177:41;;1848:58;1736:177;1616:3;2335:29442:89;1848:58:41;;:::i;3596:756:90:-;;-1:-1:-1;;;;;2335:29442:89;;;3676:16:90;;;3672:78;;3785:29;:20;;;-1:-1:-1;;;;;2335:29442:89;;;5681:14:90;2335:29442:89;;;;;;;3785:20:90;2335:29442:89;3785:29:90;:::i;:::-;3963:19;:15;;;-1:-1:-1;;;;;2335:29442:89;;;6696:9:90;2335:29442:89;;;;;;;3963:19:90;2335:29442:89;;;;;;4043:14:90;;;:::i;:::-;4069:20;;-1:-1:-1;;;;;2335:29442:89;;;5681:14:90;2335:29442:89;;;;;;;4069:20:90;2335:29442:89;;;3690:1:90;2335:29442:89;4122:38:90;2335:29442:89;;4122:38:90;;;;2335:29442:89;;;;;;;;4122:38:90;;;;4285:60;;;;;2335:29442:89;;;4285:60:90;;3690:1;4285:60;;;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;;;3690:1:90;2335:29442:89;;;;4285:60:90;2335:29442:89;3672:78:90;3715:24;3690:1;3715:24;-1:-1:-1;;;;;2335:29442:89;;6846:16:66;2335:29442:89;;-1:-1:-1;21462:49:64;6697:118:44;3831:53:52;;2335:29442:89;6806:1:44;2335:29442:89;;;;;;;3051:52:52;6697:118:44:o;2966:315::-;;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;;-1:-1:-1;2335:29442:89;;;25914:4:64;2335:29442:89;-1:-1:-1;2335:29442:89;3051:52:52;2966:315:44:o;6714:614:43:-;;;2335:29442:89;;;7038:17:43;2335:29442:89;;;;7038:17:43;;;:::i;:::-;7101:21;;;:::i;:::-;7138:13;7150:1;7153:10;;;;;;7299:22;;;;;6714:614;:::o;7165:3::-;7205:10;465:4:47;838:5;7205:10:43;2335:29442:89;7205:10:43;;;:::i;:::-;2335:29442:89;1946:22:43;7245:17;;;;:::i;:::-;2335:29442:89;7264:13:43;;;;:::i;838:5:47:-;19669:4:31;7184:94:43;;;;:::i;:::-;2335:29442:89;;7138:13:43;;2335:29442:89;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;13587:644:70:-;;-1:-1:-1;;;;;;13842:288:70;13587:644;;;;13842:288;2335:29442:89;;;-1:-1:-1;;;;;2335:29442:89;;;;13947:11:70;;;;2335:29442:89;;;;;:::i;:::-;14101:15:70;13947:11;14014:22;;;2335:29442:89;14054:29:70;;;14101:15;;;2335:29442:89;;;13842:288:70;;;;;;;2335:29442:89;13842:288:70;;;;;;:::i;:::-;;2335:29442:89;;13842:288:70;;;;;;;-1:-1:-1;13842:288:70;;;13587:644;2335:29442:89;;13825:400:70;;13587:644::o;13825:400::-;14171:43;-1:-1:-1;14171:43:70;13842:288;-1:-1:-1;14171:43:70;13842:288;;;;;;;;;;;;;;:::i;:::-;;;;2335:29442:89;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;15237:1479:70:-;;;;;;;;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;;15750:11:70;;;2335:29442:89;;;;;:::i;:::-;15750:11:70;15858:29;;;15901:15;;;;2335:29442:89;;;;;;15658:268:70;;;;;2335:29442:89;15658:268:70;;;;;;;;;:::i;:::-;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;15658:268:70;;;-1:-1:-1;15658:268:70;;;;;;;;;-1:-1:-1;;;15658:268:70;;;15237:1479;2335:29442:89;;;;15941:74:70;;15237:1479;15937:154;;1792:1:71;;7916:84:46;958:1:71;7916:84:46;;2335:29442:89;16189:93:70;;16297:13;;;;;;;-1:-1:-1;16292:376:70;1792:1:71;;;16292:376:70;16678:31;;;;;15237:1479;:::o;16349:3::-;2335:29442:89;;16312:35:70;;;;;16372:27;;;;:::i;:::-;2335:29442:89;16402:19:70;;;;:22;:19;;;:22;:::i;:::-;2335:29442:89;-1:-1:-1;16368:290:70;;-1:-1:-1;2335:29442:89;;16349:3:70;16297:13;;16368:290;16514:15;;16603:22;16514:15;16554:27;16514:15;:18;;16451:192;16514:15;;;;;:18;:::i;16603:22::-;2335:29442:89;16451:192:70;-1:-1:-1;16451:192:70;-1:-1:-1;;;;;2335:29442:89;;;35378:60:64;2335:29442:89;;;;;;;;16312:35:70;;;15937:154;16038:42;-1:-1:-1;16038:42:70;15658:268;-1:-1:-1;16038:42:70;15941:74;2335:29442:89;;;;;15961:54:70;;15941:74;;15658:268;;;;;;;;;-1:-1:-1;15658:268:70;;;;;;:::i;:::-;;;;;;29697:453:89;19669:4:31;29946:183:89;29697:453;19669:4:31;29946:183:89;;:::i;8711:554:72:-;;19917:10:31;8864:26:72;;8860:97;;9060:184;;19669:4:31;2335:29442:89;19669:4:31;;9060:184:72;;:::i;2011:185:41:-;;1237:14;2131:58;2011:185;1460:31;2131:58;:::i;4346:904:66:-;;4485:10;;4481:23;;9520:18:69;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;4494:1:66;2335:29442:89;;;;4708:15:66;2335:29442:89;4494:1:66;2335:29442:89;2806:53:52;4708:15:66;;;:::i;:::-;4738:9;;;;9342:26:69;;3831:53:52;;;-1:-1:-1;;2335:29442:89;;;;;;;5238:4:66;3051:52:52;;5238:4:66;:::i;4734:423::-;4944:12;5238:4;4944:12;5238:4;4940:217;5113:31;9342:26:69;5113:31:66;:::i;:::-;5238:4;:::i;4481:23::-;4497:7;;:::o;3791:897:36:-;;3937:44;2335:29442:89;1616:3:41;2335:29442:89;3937:44:36;:::i;:::-;3992:37;1237:14:41;4028:1:36;1460:31:41;;4043:33:36;4039:476;;4633:43;;2536:1;4633:43;;;;:::i;4039:476::-;-1:-1:-1;;;;;2335:29442:89;;;;4434:59:36;2335:29442:89;;;4434:59:36;;;;;2335:29442:89;4434:59:36;;;;;2335:29442:89;;4434:59:36;;;;;;;:70;4633:43;4434:59;2536:1;4434:59;4028:1;4434:59;;;:70;;:::i;73282:870:64:-;;;;-1:-1:-1;;;;;2335:29442:89;;;-1:-1:-1;2335:29442:89;73699:11:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;-1:-1:-1;2335:29442:89;73699:11:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;74116:28:64;;;:::i;80577:177::-;80672:21;-1:-1:-1;80654:94:64;;80577:177::o;80654:94::-;80716:21;;;;;;74887:878;;;;-1:-1:-1;;;;;2335:29442:89;;;-1:-1:-1;2335:29442:89;75304:11:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;;;-1:-1:-1;2335:29442:89;75304:11:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;;;;;;;;75729:28:64;;;:::i;50494:2352::-;;;;;;2335:29442:89;50738:33:64;2335:29442:89;50869:30:64;;50865:1975;;50494:2352;;;;;:::o;50865:1975::-;51290:30;;;51345:26;51290:37;:30;;51223:162;51290:30;;;;;:37;:::i;:::-;2335:29442:89;51345:19:64;;;;;:26;:::i;51223:162::-;2335:29442:89;;1192:1:71;7916:84:46;958:1:71;7916:84:46;;2335:29442:89;51576:1254:64;;50865:1975;;;;;51576:1254;6019:108:46;;;;;2335:29442:89;6019:108:46;;19669:4:31;2335:29442:89;;;;;;;;;;;;;;;838:5:47;465:4;838:5;;;:::i;:::-;19669:4:31;52236:49:64;;;;52232:137;;52590:26;52641;52677:138;52590:33;52641;52590:26;;;-1:-1:-1;;;;;2335:29442:89;;;13745:20:66;2335:29442:89;;;;;;;52590:33:64;2335:29442:89;52733:64:64;1460:31:41;1237:14;1460:31;;52733:64:64;:::i;:::-;52677:138;;:::i;:::-;52641:26;-1:-1:-1;;;;;2335:29442:89;;;13745:20:66;2335:29442:89;;;;;;;52641:33:64;2335:29442:89;51576:1254:64;;;;;52232:137;52316:34;2335:29442:89;52316:34:64;;2335:29442:89;52316:34:64;15788:287:66;;2335:29442:89;15932:3:66;2335:29442:89;;15913:17:66;;;;;-1:-1:-1;;;;;15955:9:66;;;;;:::i;:::-;2335:29442:89;;;;;15955:18:66;15951:65;;2335:29442:89;;15898:13:66;;15913:17;-1:-1:-1;;;;;15913:17:66;16043:25;2335:29442:89;16043:25:66;2335:29442:89;16043:25:66;2335:29442:89;;;16043:25:66;1998:187:44;;-1:-1:-1;;;;;2335:29442:89;-1:-1:-1;2335:29442:89;;;;-1:-1:-1;2335:29442:89;3051:52:52;1998:187:44:o;4522:224:72:-;958:1:71;7916:84:46;1414:1:71;7916:84:46;2335:29442:89;4611:129:72;;4522:224::o;4611:129::-;4682:47;-1:-1:-1;4682:47:72;958:1:71;-1:-1:-1;4682:47:72;3666:227;958:1:71;7916:84:46;;;3756:131:72;;3666:227::o;3756:131::-;3828:48;-1:-1:-1;3828:48:72;958:1:71;-1:-1:-1;3828:48:72;1835:554:40;2335:29442:89;;1994:19:40;;2029:13;2041:1;2044:10;;;;;;2286:20;;;;;2282:73;;1835:554;:::o;2282:73::-;2329:15;2041:1;2329:15;;2041:1;2329:15;2056:3;2079:15;;;;:::i;:::-;2335:29442:89;2075:187:40;;2056:3;2335:29442:89;;2029:13:40;;2075:187;2123:20;;;2119:97;;2233:14;2075:187;;2119:97;2174:23;2041:1;2174:23;;2041:1;2174:23;6731:255:72;6019:108:46;6731:255:72;958:1:71;6019:108:46;;19669:4:31;2335:29442:89;;;;;;;;;;;;;;;6731:255:72;:::o;2335:29442:89:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;13430:2163:56:-;;;;14330:66;;13855:31;13430:2163;-1:-1:-1;;;;;13430:2163:56;13855:31;:::i;:::-;1744:19:47;;;;;:::i;:::-;14283:14:56;;;;:::i;:::-;2335:29442:89;;14330:66:56;;;;;;2335:29442:89;14330:66:56;;;;;;;;:::i;:::-;;2335:29442:89;;14330:66:56;;;;;;15572:14;14330:66;1744:19:47;15064:30:56;14330:66;15210:67;14330:66;15380:37;14330:66;;;;15427:34;14330:66;-1:-1:-1;14330:66:56;;;13430:2163;14500:29;;14849;14487:42;14500:29;14837:41;14500:29;14836:57;14500:29;;;:::i;:::-;2335:29442:89;14487:42:56;;:::i;:::-;14849:29;;;:::i;:::-;2335:29442:89;14837:41:56;;:::i;:::-;14836:57;:::i;15064:30::-;465:4:47;;5832:87;;;;;;1744:19;;:::i;15210:67:56:-;2335:29442:89;;;;15380:37:56;:::i;:::-;15427:34;;;:::i;:::-;2335:29442:89;15572:14:56;:::i;:::-;13430:2163;:::o;14330:66::-;14836:57;14330:66;;14487:42;14500:29;14837:41;14330:66;;;14849:29;14330:66;;;;;;;;;;;:::i;:::-;;;;;;;;;;4873:359:43;;5121:105;2335:29442:89;;;5044:9:43;2335:29442:89;;5044:9:43;;:::i;:::-;5121:105;;;;;;;4873:359::o;2335:29442:89:-;;;;;8755:1:56;2335:29442:89;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;8848:1:56;2335:29442:89;;;;;;;;;:::i;7248:4946:56:-;;;;;2335:29442:89;;8498:24:56;;;:::i;:::-;8623;;;;:::i;:::-;8743:13;8755:1;8758:13;;;;;;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;9134:57:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;8755:1;9134:57;;;8738:165;2335:29442:89;;;9286:55:56;;;;;;;;9134:57;9286:55;;;:::i;:::-;;;;;;;;;;;;1511:7:47;9422:14:56;9286:55;1625:13:47;9286:55:56;;8755:1;9286:55;;;8738:165;1511:7:47;;;;;;;;;;;;;;;;:::i;1625:13::-;9422:14:56;;;:::i;:::-;8755:1;9531:13;;;;;;2335:29442:89;;;;11183:55:56;2335:29442:89;;;;11183:55:56;;;;;;;;9134:57;11183:55;;;:::i;:::-;;;;;;;;;;;12108:59;11183:55;12123:43;11183:55;12107:80;11183:55;8755:1;11183:55;;;9511:1375;12123:43;;;:::i;:::-;12108:59;;:::i;11183:55::-;;;;;;-1:-1:-1;11183:55:56;;;;;;:::i;:::-;;;;;9546:3;10047:18;;;;;;;;;;;;;;10024:42;10047:18;;8848:1;10047:18;;:::i;:::-;2335:29442:89;10024:42:56;;:::i;:::-;10084:14;;;;;:::i;:::-;2335:29442:89;10084:41:56;10080:796;;9546:3;;;;;;2335:29442:89;9516:13:56;;;;;;;;;;;;10080:796;10232:14;;10374:38;10827:34;10232:14;10827;10232;;;10844:17;10232:14;;:::i;:::-;2335:29442:89;;10374:38:56;:::i;:::-;10354:58;;;;:::i;10827:14::-;2335:29442:89;10844:17:56;;:::i;:::-;2335:29442:89;10827:34:56;;:::i;:::-;10810:51;;;;:::i;:::-;2335:29442:89;10080:796:56;;;;;;;9286:55;;;;;;-1:-1:-1;9286:55:56;;;;;;:::i;:::-;;;;;9134:57;;;;;;;;;;;;;;;:::i;:::-;;;;;8773:3;8809:18;:40;:36;:18;8848:1;8809:18;;;:::i;:::-;2335:29442:89;8830:15:56;;;;:::i;:::-;2335:29442:89;8809:36:56;;:::i;:::-;:40;:::i;:::-;8792:57;;;;:::i;:::-;2335:29442:89;;8743:13:56;;6495:194:72;958:1:71;7916:84:46;1586:1:71;7916:84:46;2335:29442:89;6574:109:72;;6495:194::o;6574:109::-;6635:37;-1:-1:-1;6635:37:72;958:1:71;-1:-1:-1;6635:37:72;2420:1364:56;;;3468:30;2335:29442:89;;3468:30:56;:::i;:::-;3513:13;3525:1;3549:3;2335:29442:89;;3528:19:56;;;;;3717:11;:50;:11;;;2335:29442:89;3717:11:56;;;:::i;:::-;2335:29442:89;3717:50:56;:::i;:::-;3702:65;;;;:::i;:::-;2335:29442:89;;3513:13:56;;3528:19;;;;;2420:1364::o;4238:414:43:-;;1744:19:47;4238:414:43;4619:25;4238:414;4619:25;:::i;:::-;1744:19:47;;:::i;7866:704:73:-;;;8372:29;465:4:47;838:5;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;2335:29442:89;1946:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;2335:29442:89;8522:31:73;:19;;;;;:31;:::i;838:5:47:-;19669:4:31;8372:29:73;;;:191;:::i;7866:704::-;;;8372:29;2688:41:43;8372:191:73;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;2335:29442:89;2689:22:43;8466:42:73;:30;;;;;:42;:::i;:::-;2335:29442:89;8522:31:73;:19;;;;;:31;:::i;2688:41:43:-;8372:29:73;;;:191;:::i;7866:704::-;;8416:147;8372:191;7866:704;8372:29;7866:704;8058:20;:48;:20;;;;;:48;:::i;:::-;2335:29442:89;;;;:::i;:::-;8197:50:73;;8262:41;8197:164;;8466:42;:30;;;;;:42;:::i;:::-;2335:29442:89;8522:19:73;:31;:19;;;;;:31;:::i;8197:164::-;8318:43;8197:164;;;887:427:47;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;-1:-1:-1;;1186:122:47;;;;;;;;887:427;:::o;3280:418:43:-;;3665:25;3280:418;3665:25;:::i;:::-;465:4:47;;2335:29442:89;;;;;;;;;;;;;;;19669:4:31;;;;;3280:418:43;:::o;2097:657:46:-;;2335:29442:89;19627:2:31;2335:29442:89;9400:76:46;;2335:29442:89;2539:209:46;;;2335:29442:89;2539:209:46;;;;2097:657;:::o;:::-;;8966:3;8956:13;;;;8952:64;;2335:29442:89;;;;;;;;2641:5:110;9226:3:46;2641:5:110;:13;:5;;;:13;9226:3:46;2641:13:110;19627:2:31;9204:40:46;9180:112;;2335:29442:89;19627:2:31;2335:29442:89;9400:76:46;;2539:209;;;;;;;;;2097:657;:::o;2641:13:110:-;;;2335:29442:89;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;2335:29442:89;;;;:::i;:::-;;;-1:-1:-1;2335:29442:89;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;;;;;;;:::o;4659:1499:73:-;4963:20;;;;;2335:29442:89;5006:13:73;-1:-1:-1;5021:13:73;;;;;;4659:1499;;;;;;:::o;5036:3::-;5070:15;:18;;2335:29442:89;5070:15:73;;;;;:18;:::i;:::-;5188:30;5127:20;;;2335:29442:89;;;;;;;;;;5127:20:73;2335:29442:89;1237:14:41;1460:31;1371:127;;5188:30:73;5423:23;:20;;;:23;:::i;:::-;2335:29442:89;5404:42:73;;5400:565;;5036:3;6054:20;;6002:139;6054:23;:20;;;:23;:::i;:::-;2335:29442:89;6095:32:73;:29;;;;;:32;:::i;6002:139::-;5979:20;;;2335:29442:89;;;;;;;;;;5979:20:73;2335:29442:89;;5006:13:73;;5400:565;5777:173;5736:38;5680;5841:91;5889:42;5680:38;;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;5680:38:73;2335:29442:89;5908:20:73;:23;:20;;;:23;:::i;5889:42::-;2335:29442:89;6095:29:73;2335:29442:89;5841:91:73;:::i;:::-;5777:173;;:::i;:::-;5736:38;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;5736:38:73;2335:29442:89;5400:565:73;;;;34375:314:111;34568:16;34552:33;;34548:105;;34375:314;:::o;34548:105::-;34608:34;;;;2335:29442:89;;34608:34:111;;2657:309:90;-1:-1:-1;;;;;2335:29442:89;2657:309:90;2335:29442:89;;;;;;2822:16:90;2335:29442:89;;2854:24:90;;;;-1:-1:-1;;2854:24:90;:::o;2818:142::-;2916:33;2335:29442:89;2916:24:90;2335:29442:89;;;;2916:11:90;2335:29442:89;;;;;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;2916:33:90;2335:29442:89;2909:40:90;:::o;4358:211::-;928:3;4449:43;;4445:118;;4358:211;:::o;4445:118::-;4515:37;;;;2335:29442:89;;4515:37:90;;1573:170:40;1666:6;;;;;1573:170;;1666:16;;1573:170;1662:75;;;;1573:170::o;1666:16::-;1676:6;;;-1:-1:-1;1666:16:40;;;;7436:424:73;2335:29442:89;;;;;:::i;:::-;;;;:::i;:::-;7589:31:73;;;7636:21;;465:4:47;7585:269:73;7436:424::o;7585:269::-;2335:29442:89;;7691:19:73;2335:29442:89;;:::i;:::-;7678:32:73;7691:19;;7733:22;:30;2335:29442:89;7733:22:73;:32;:22;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;;7733:30:73;2335:29442:89;;7733:32:73;;;;2335:29442:89;7733:32:73;;;;;;;;;2335:29442:89;7733:32:73;;;7726:39;7674:180;7436:424::o;7733:32::-;;;;:22;:32;:22;:32;;;;;;;:::i;7674:180::-;7803:40;2335:29442:89;7803:40:73;;2335:29442:89;7803:40:73;5369:233:72;958:1:71;7916:84:46;;;2335:29442:89;5461:135:72;;5369:233::o;5461:135::-;5535:50;-1:-1:-1;5535:50:72;958:1:71;-1:-1:-1;5535:50:72;16306:3888:56;;;;;;2335:29442:89;;16842:24:56;;;;:::i;:::-;16930:13;16942:1;16945:13;;;;;;17136:26;:43;:26;;;;;:::i;:43::-;17107:72;;;;:::i;:::-;2335:29442:89;;;;;17730:57:56;;;;;;;;;;;;;:::i;:::-;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;17730:57:56;;;;;;;16942:1;17730:57;;;16925:104;2335:29442:89;;;18181:53:56;;;;17730:57;18181:53;;;;17730:57;18181:53;;;:::i;:::-;;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;18181:53:56;;;;;;;1744:19:47;18478:81:56;18181:53;18533:26;18478:52;18765:67;18181:53;18499:30;18181:53;1744:19:47;19124:55:56;18181:53;;17730:57;18181:53;;;16942:1;18181:53;;;16925:104;1744:19:47;;:::i;:::-;18313:14:56;;;;;:::i;:::-;18499:30;:::i;:::-;2335:29442:89;18478:52:56;;:::i;:::-;18533:26;;;:::i;18765:67::-;18921:26;:32;:26;;;;;:::i;:32::-;18892:61;;;;:::i;:::-;2335:29442:89;-1:-1:-1;;;;;2335:29442:89;;19124:55:56;;;;;;;;17730:57;19124:55;;;:::i;:::-;;2335:29442:89;;19124:55:56;;;;;;;20104:83;19124:55;20125:43;19124:55;16942:1;19124:55;;;16925:104;19282:24;;19316:35;19282:24;;:::i;:::-;19316:35;;;:::i;:::-;2335:29442:89;20125:43:56;;:::i;:::-;20104:83;;:::i;19124:55::-;19316:35;19124:55;;;;19282:24;19124:55;17730:57;19124:55;17730:57;19124:55;;;;;;;:::i;:::-;;;;;;18181:53;17730:57;18181:53;;;;17730:57;18181:53;;;;;;;:::i;:::-;;;;17730:57;;;;;;;;;;;;;;;:::i;:::-;;;;;16960:3;16996:18;:22;:18;17017:1;16996:18;;;:::i;:::-;2335:29442:89;16996:22:56;:::i;:::-;16979:39;;;;:::i;:::-;2335:29442:89;;16930:13:56;;21079:2229;;;;2335:29442:89;;;;;;;;22208:67:56;;-1:-1:-1;;;;;1744:19:47;;;;;:::i;:::-;21662:14:56;;;;:::i;22208:67::-;;2335:29442:89;;22208:67:56;;;;;;23286:15;22208:67;22859:32;22208:67;22973:38;22208:67;23114:37;22208:67;23161:35;22208:67;-1:-1:-1;22208:67:56;;;21079:2229;22367:30;:43;:30;;22648:63;22367:30;;;;:::i;:43::-;22667:30;;;;;:::i;:::-;2335:29442:89;22648:63:56;;:::i;23161:35::-;2335:29442:89;23286:15:56;:::i;22208:67::-;22648:63;22208:67;;22367:30;22208:67;;22367:43;22208:67;;;;;;;;;;;:::i;:::-;;;;;;;4619:1444;;;;5749:30;2335:29442:89;;5749:30:56;:::i;:::-;5794:13;5806:1;5830:3;2335:29442:89;;5809:19:56;;;;;6003:25;:11;;;;;:::i;:::-;2335:29442:89;6003:25:56;:::i;:::-;19669:4:31;;;;;;2335:29442:89;19669:4:31;;5986:60:56;;;;:::i;:::-;2335:29442:89;;5794:13:56;;5809:19;;;;;;4619:1444::o;17101:159:66:-;859:9:38;:23;17174:79:66;;;17101:159;:::o;17174:79::-;2335:29442:89;7916:84:46;17211:15:66;2335:29442:89;7916:84:46;2335:29442:89;17101:159:66;:::o;3162:428:90:-;;859:9:38;3337:114:90;;-1:-1:-1;;;;;3545:28:90;2335:29442:89;;3378:5:90;2335:29442:89;3545:9:90;2335:29442:89;;;3378:5:90;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;;;;;;;;;3545:28:90;2335:29442:89;;;;;;;;;;;3162:428:90:o;3337:114::-;3406:34;3378:5;3406:34;;3378:5;3406:34;1822:864:47;;2004:6;;2000:58;;465:4;2335:29442:89;;;;;;;;;;;;;;;2560:120:47;;-1:-1:-1;;2560:120:47;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;1822:864;2004:6;;2000:58;;2560:120;2153:5;;;;:::i;:::-;2560:120;-1:-1:-1;;2560:120:47;;;;;;;;1822:864;:::o;9930:461:43:-;465:4:47;19669::31;;;2335:29442:89;10347:19:43;;;;9930:461;:::o;10347:37::-;10383:1;2335:29442:89;;;;;;;9930:461:43;:::o;17166:193:111:-;17253:1;17245:9;;17241:81;;17166:193;:::o;17241:81::-;17277:34;17253:1;17277:34;;2335:29442:89;;17253:1:111;17277:34;3296:380:98;2335:29442:89;;;3411:47:98;;;;;;-1:-1:-1;;;;;2335:29442:89;;3411:47:98;;;2335:29442:89;;;;;;;;;;3411:47:98;2335:29442:89;;;;3411:47:98;;;;-1:-1:-1;;3411:47:98;;;;;;;;:::i;:::-;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;5615:25:98;;;;;;;;;;;:::i;:::-;5657:69;;;3296:380;5657:103;;;;3296:380;3473:45;;3469:201;;3296:380;;;;;:::o;3469:201::-;2335:29442:89;;3411:47:98;3561:43;;;;;;-1:-1:-1;;;;;2335:29442:89;3411:47:98;3561:43;;2335:29442:89;;;;;;3646:12:98;;3561:43;;;;2335:29442:89;;;;3561:43:98;2335:29442:89;3561:43:98;;;:::i;3646:12::-;3469:201;;;;;;;5657:103;5730:26;;;:30;;5657:103;;;:69;2335:29442:89;;;;-1:-1:-1;5669:22:98;;;:56;;;;5657:69;;;;;;;5669:56;5695:30;;;3411:47;5695:30;;;;;;;;:::i;:::-;5669:56;;;;3296:380;2335:29442:89;;;3411:47:98;;;;;;-1:-1:-1;;;;;2335:29442:89;;3411:47:98;;;2335:29442:89;;;;;;;;;;;;;;;3411:47:98;2335:29442:89;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2335:29442:89;;;;:::o;:::-;;;:::o;3180:392:99:-;5172:5:64;3180:392:99;3510:55;3180:392;3462:31;;;;;;;;;;;:::i;:::-;3510:55;;:::i;76673:2695:64:-;2335:29442:89;;;76966:40:64;;;77000:4;76966:40;;;2335:29442:89;76966:40:64;;76673:2695;;2335:29442:89;;-1:-1:-1;;;;;2335:29442:89;;76966:40:64;2335:29442:89;;;;;;76966:40:64;;;;;;;-1:-1:-1;76966:40:64;;;76673:2695;77020:57;;;;77016:892;;78081:28;;;-1:-1:-1;;;;;2335:29442:89;;;7242:11:64;2335:29442:89;;;;;;;78081:28:64;2335:29442:89;;;78225:37:64;;;77000:4;76966:40;78225:37;;2335:29442:89;;;;77000:4:64;2335:29442:89;;;;78225:37:64;;;;;;;-1:-1:-1;78225:37:64;;;76673:2695;78276:51;;;;;78272:866;;79313:25;;;;-1:-1:-1;;;;;2335:29442:89;;;7242:11:64;2335:29442:89;;;;;;;78272:866:64;78964:163;-1:-1:-1;78964:163:64;-1:-1:-1;;;;;2335:29442:89;35378:60:64;2335:29442:89;;;-1:-1:-1;2335:29442:89;;;-1:-1:-1;21462:49:64;78225:37;;;;;;;-1:-1:-1;78225:37:64;;;;;;:::i;:::-;;;;;;77016:892;77725:172;;;;;;-1:-1:-1;77725:172:64;2335:29442:89;;;;-1:-1:-1;;;;;2335:29442:89;;;35378:60:64;2335:29442:89;;;;;;76966:40:64;;;;;;;;;;;;;;;:::i;:::-;;;;;4059:629:98;-1:-1:-1;;;;;2811:38:99;4059:629:98;2335:29442:89;2811:38:99;;;:::i;:::-;2335:29442:89;;4551:22:98;;;;:57;;;;4059:629;4547:135;;;;4059:629;:::o;4547:135::-;4631:40;2847:1:99;4631:40:98;;2335:29442:89;;2847:1:99;4631:40:98;4551:57;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;;;;662:219:47;465:4;662:219;838:5;662:219;838:5;:::i;23639:315:56:-;;23778:31;-1:-1:-1;;;;;23639:315:56;23778:31;2335:29442:89;;23778:31:56;;;;2335:29442:89;23778:31:56;;2335:29442:89;23778:31:56;;;;;;;;;;;23639:315;23823:34;;;;23819:129;;23639:315;;:::o;23819:129::-;23880:57;23778:31;23880:57;23778:31;2335:29442:89;;;;23778:31:56;23880:57;23778:31;;;;;;;;;;;;;;;:::i;:::-;;;;;9628:806:72;;2335:29442:89;9811:24:72;;;:::i;:::-;9470:46;2335:29442:89;6019:108:46;;-1:-1:-1;9952:13:72;;;;;;10406:21;;;9628:806;:::o;9967:3::-;2335:29442:89;;;;;;;;;;;;;;;6019:108:46;;;;;3267:1:71;;;;;;6019:108:46;3267:1:71;;;10348:37:72;;;;:::i;:::-;2335:29442:89;;9937:13:72;;8442:263;6019:108:46;;2335:29442:89;6019:108:46;;19669:4:31;2335:29442:89;;;;;;;;;;;;;;;8442:263:72;:::o;24291:315:56:-;;24430:31;-1:-1:-1;;;;;24291:315:56;24430:31;2335:29442:89;;24430:31:56;;;;2335:29442:89;24430:31:56;;2335:29442:89;24430:31:56;;;;;;;;;;;24291:315;24475:34;;;;24471:129;;24291:315;;:::o;24471:129::-;24532:57;24430:31;24532:57;24430:31;2335:29442:89;;;;24430:31:56;24532:57;24430:31;;;;;;;;;;;;;;;:::i;:::-;;;;;4625:582:99;;4797:8;;-1:-1:-1;2335:29442:89;;5874:21:99;:17;;6046:142;;;;;;5870:383;6225:17;5894:1;6225:17;;5894:1;6225:17;4793:408;2335:29442:89;;5045:22:99;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;-1:-1:-1;;;;;5121:24:99;;5066:1;5121:24;2335:29442:89;5121:24:99;2335:29442:89;;5066:1:99;5121:24;5045:49;5071:18;;;:23;5045:49;;2335:29442:89;;1946:22:43;838:5:47;2335:29442:89;465:4:47;2335:29442:89;1946:22:43;:::i;2335:29442:89:-;2688:41:43;2335:29442:89;;2689:22:43;2335:29442:89;2689:22:43;:::i;2335:29442:89:-;;;;;;;;;;465:4:47;;;2335:29442:89;;;;;;;;;;2688:41:43;2689:22;;;;:::i;2335:29442:89:-;1946:22:43;;;465:4:47;1946:22:43;838:5:47;1946:22:43;;:::i"},"methodIdentifiers":{"accountDelta(address,int256)":"80047e26","addLiquidity((address,address,uint256[],uint256,uint8,bytes))":"4af29ec4","buildTokenConfig(address[])":"24e7176b","buildTokenConfig(address[],address[])":"5f70f542","buildTokenConfig(address[],address[],bool[])":"e5948689","buildTokenConfig(address[],uint8[],address[],bool[])":"608256f7","burnERC20(address,address,uint256)":"1d27af68","computeYieldFeesDue((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,uint256,uint256)":"08bade29","ensurePoolNotPaused(address)":"02e1a4aa","ensureUnpausedAndGetVaultState(address)":"e460a8a9","ensureValidSwapAmount(uint256)":"b4eb0bf9","ensureValidTradeAmount(uint256)":"2cbbf198","erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))":"43583be5","forceLock()":"6d4908c4","forceUnlock()":"7965c967","getBufferTokenBalancesBytes(address)":"e5b08ffb","getLastLiveBalances(address)":"3cce2585","getPoolFactoryMock()":"87a76c59","getPoolTokenCountAndIndexOfToken(address,address)":"c9c1661b","getRawBalances(address)":"19a24bcb","getVaultExtension()":"b9a8effa","guardedCheckEntered()":"a408f312","internalGetBufferUnderlyingImbalance(address)":"2606a4de","internalGetBufferWrappedImbalance(address)":"a40f9592","loadPoolDataUpdatingBalancesAndYieldFees(address,uint8)":"0f682ba0","loadPoolDataUpdatingBalancesAndYieldFeesReentrancy(address,uint8)":"dc4402ed","manualAddLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256[],uint256,uint8,bytes),uint256[])":"0790de46","manualBuildPoolSwapParams((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"16a573c2","manualComputeAndChargeAggregateSwapFees((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,address,address,uint256)":"be6b4d2a","manualErc4626BufferWrapOrUnwrapReentrancy((uint8,uint8,address,uint256,uint256))":"370bc8da","manualFindTokenIndex(address[],address)":"ebfeb0a1","manualGetAddLiquidityCalledFlagBySession(address,uint256)":"420f4a45","manualGetAggregateSwapFeeAmount(address,address)":"36918d6e","manualGetAggregateYieldFeeAmount(address,address)":"8f5aeb4b","manualGetCurrentUnlockSessionId()":"81e4b7e9","manualGetIsUnlocked()":"b2469499","manualGetNonzeroDeltaCount()":"155075e6","manualGetPoolConfigBits(address)":"557dba68","manualGetTokenDeltas()":"1f4475c5","manualInternalSwap((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"25b6a844","manualReentrancyAddLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256[],uint256,uint8,bytes),uint256[])":"eeda9991","manualReentrancyRemoveLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256,uint256[],uint8,bytes),uint256[])":"28121e27","manualReentrancySwap((uint8,address,address,address,uint256,uint256,bytes),(uint256,uint256,uint256,uint256),(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"96e74a27","manualRegisterPool(address,address[])":"851c65a3","manualRegisterPoolAtTimestamp(address,address[],uint32,(address,address,address))":"0362a513","manualRegisterPoolPassThruTokens(address,address[])":"32333ce6","manualRegisterPoolWithSwapFee(address,address[],uint256)":"1f495f79","manualRemoveLiquidity((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),(address,address,uint256,uint256[],uint8,bytes),uint256[])":"f1320097","manualSendToReentrancy(address,address,uint256)":"d01a3269","manualSetAccountDelta(address,int256)":"d0643b8c","manualSetAddLiquidityCalledFlag(address,bool)":"e2ddce11","manualSetAggregateSwapFeeAmount(address,address,uint256)":"44ea8763","manualSetAggregateSwapFeePercentage(address,uint256)":"cfcc2209","manualSetAggregateYieldFeeAmount(address,address,uint256)":"7004b0f1","manualSetAggregateYieldFeePercentage(address,uint256)":"920af066","manualSetBufferAsset(address,address)":"ab62c2b6","manualSetBufferBalances(address,uint256,uint256)":"0ee4cdd8","manualSetBufferOwnerShares(address,address,uint256)":"ff44deab","manualSetBufferTotalShares(address,uint256)":"3cb5b2af","manualSetHooksConfig(address,(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address))":"c1fdcd62","manualSetInitializedPool(address,bool)":"5e3e00fa","manualSetNonZeroDeltaCount(uint256)":"5eeae6eb","manualSetPoolBalances(address,uint256[],uint256[])":"1c4e1e23","manualSetPoolConfig(address,((bool,bool,bool,bool),uint256,uint256,uint256,uint40,uint32,bool,bool,bool,bool))":"5c1c1c81","manualSetPoolConfigBits(address,bytes32)":"df138458","manualSetPoolCreator(address,address)":"79a2c0ac","manualSetPoolPauseWindowEndTime(address,uint32)":"0c87409b","manualSetPoolPaused(address,bool)":"cbde2b68","manualSetPoolRegistered(address,bool)":"352339ee","manualSetPoolTokenInfo(address,(address,uint8,address,bool)[])":"dab50579","manualSetPoolTokenInfo(address,address[],(uint8,address,bool)[])":"bb14e466","manualSetPoolTokens(address,address[])":"82ea1749","manualSetPoolTokensAndBalances(address,address[],uint256[],uint256[])":"d8f4cf3c","manualSetReservesOf(address,uint256)":"d64bc25d","manualSetStaticSwapFeePercentage(address,uint256)":"195aaef9","manualSetVaultPaused(bool)":"692407ae","manualSetVaultState(bool,bool)":"10c1dc41","manualSettleReentrancy(address)":"2d1c3beb","manualSettleUnwrap(address,address,uint256,uint256)":"b6f680f4","manualSettleWrap(address,address,uint256,uint256)":"ac004855","manualTransfer(address,address,uint256)":"00d7aadb","manualUnsafeSetStaticSwapFeePercentage(address,uint256)":"2b766278","manualUpdateAggregateSwapFeePercentage(address,uint256)":"a03b23ef","manualUpdatePoolDataLiveBalancesAndRates(address,(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint8)":"d86c3fef","manualWritePoolBalancesToStorage(address,(bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))":"0f619655","mintERC20(address,address,uint256)":"47c07e88","mockIsUnlocked()":"b8caceee","mockWithInitializedPool(address)":"62691e5f","previewDeposit(address,uint256)":"b8f82b26","previewMint(address,uint256)":"d1f810a5","previewRedeem(address,uint256)":"cbe52ae3","previewWithdraw(address,uint256)":"bbc6f1dc","recoveryModeExit(address)":"87a530f8","reentrancyGuardEntered()":"d2c725e0","removeLiquidity((address,address,uint256,uint256[],uint8,bytes))":"21457897","sendTo(address,address,uint256)":"ae639329","settle(address,uint256)":"15afd409","supplyCredit(address,uint256)":"b1740c2d","swap((uint8,address,address,address,uint256,uint256,bytes))":"2bfb780c","takeDebt(address,uint256)":"3e262ba3","transfer(address,address,uint256)":"beabacc8","transferFrom(address,address,address,uint256)":"15dacbea","unguardedCheckNotEntered()":"cecc95a7","unlock(bytes)":"48c89491","updateLiveTokenBalanceInPoolData((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]),uint256,uint8,uint256)":"aa01edb3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVaultExtension\",\"name\":\"vaultExtension\",\"type\":\"address\"},{\"internalType\":\"contract IAuthorizer\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodecOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"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\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleNonZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"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\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"accountDelta\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"enum TokenType[]\",\"name\":\"tokenTypes\",\"type\":\"uint8[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"yieldFeeFlags\",\"type\":\"bool[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"yieldFeeFlags\",\"type\":\"bool[]\"}],\"name\":\"buildTokenConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"lastLiveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeYieldFeesDue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"ensurePoolNotPaused\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"ensureUnpausedAndGetVaultState\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isQueryDisabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isVaultPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"areBuffersPaused\",\"type\":\"bool\"}],\"internalType\":\"struct VaultState\",\"name\":\"vaultState\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tradeAmount\",\"type\":\"uint256\"}],\"name\":\"ensureValidSwapAmount\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tradeAmount\",\"type\":\"uint256\"}],\"name\":\"ensureValidTradeAmount\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"erc4626BufferWrapOrUnwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceLock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceUnlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getBufferTokenBalancesBytes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getLastLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"lastBalancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolFactoryMock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenCountAndIndexOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getRawBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardedCheckEntered\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"internalGetBufferUnderlyingImbalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"internalGetBufferWrappedImbalance\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"loadPoolDataUpdatingBalancesAndYieldFees\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"loadPoolDataUpdatingBalancesAndYieldFeesReentrancy\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualAddLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"updatedPoolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsInScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualBuildPoolSwapParams\",\"outputs\":[{\"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\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"totalSwapFeeAmountScaled18\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"manualComputeAndChargeAggregateSwapFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSwapFeeAmountRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeeAmountRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enum WrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"struct BufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"manualErc4626BufferWrapOrUnwrapReentrancy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualFindTokenIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sessionId\",\"type\":\"uint256\"}],\"name\":\"manualGetAddLiquidityCalledFlagBySession\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualGetAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualGetAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetCurrentUnlockSessionId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetIsUnlocked\",\"outputs\":[{\"internalType\":\"StorageSlotExtension.BooleanSlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"StorageSlotExtension.Uint256SlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"manualGetPoolConfigBits\",\"outputs\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manualGetTokenDeltas\",\"outputs\":[{\"internalType\":\"TokenDeltaMappingSlotType\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualInternalSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountCalculatedScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enum AddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct AddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsInScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualReentrancyAddLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualReentrancyRemoveLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapState\",\"name\":\"state\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualReentrancySwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualRegisterPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"}],\"name\":\"manualRegisterPoolAtTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualRegisterPoolPassThruTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manualRegisterPoolWithSwapFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOutScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualRemoveLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"updatedPoolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOutScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualSendToReentrancy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"manualSetAccountDelta\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"name\":\"manualSetAddLiquidityCalledFlag\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateSwapFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateYieldFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetAggregateYieldFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"manualSetBufferAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmount\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferOwnerShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"manualSetBufferTotalShares\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"internalType\":\"struct HooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"}],\"name\":\"manualSetHooksConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"}],\"name\":\"manualSetInitializedPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deltaCount\",\"type\":\"uint256\"}],\"name\":\"manualSetNonZeroDeltaCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenBalanceRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenBalanceLiveScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualSetPoolBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct PoolConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"manualSetPoolConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"PoolConfigBits\",\"name\":\"config\",\"type\":\"bytes32\"}],\"name\":\"manualSetPoolConfigBits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPoolCreator\",\"type\":\"address\"}],\"name\":\"manualSetPoolCreator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"}],\"name\":\"manualSetPoolPauseWindowEndTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"}],\"name\":\"manualSetPoolPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"manualSetPoolRegistered\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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[]\"}],\"name\":\"manualSetPoolTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"}],\"name\":\"manualSetPoolTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"manualSetPoolTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenBalanceRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenBalanceLiveScaled18\",\"type\":\"uint256[]\"}],\"name\":\"manualSetPoolTokensAndBalances\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reserves\",\"type\":\"uint256\"}],\"name\":\"manualSetReservesOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualSetStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isVaultPaused\",\"type\":\"bool\"}],\"name\":\"manualSetVaultPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isVaultPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isQueryDisabled\",\"type\":\"bool\"}],\"name\":\"manualSetVaultState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"manualSettleReentrancy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingHint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedHint\",\"type\":\"uint256\"}],\"name\":\"manualSettleUnwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"underlyingHint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wrappedHint\",\"type\":\"uint256\"}],\"name\":\"manualSettleWrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"manualTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manualUnsafeSetStaticSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newAggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"manualUpdateAggregateSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"}],\"name\":\"manualUpdatePoolDataLiveBalancesAndRates\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"}],\"name\":\"manualWritePoolBalancesToStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mockIsUnlocked\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"mockWithInitializedPool\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInUnderlying\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutWrapped\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutWrapped\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInUnderlying\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountInWrapped\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutUnderlying\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutUnderlying\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInWrapped\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"recoveryModeExit\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enum RemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct RemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountHint\",\"type\":\"uint256\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"name\":\"supplyCredit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct VaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"debt\",\"type\":\"uint256\"}],\"name\":\"takeDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"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\":\"spender\",\"type\":\"address\"},{\"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\":\"unguardedCheckNotEntered\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"poolData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"newRawBalance\",\"type\":\"uint256\"},{\"internalType\":\"enum Rounding\",\"name\":\"roundingDirection\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"tokenIndex\",\"type\":\"uint256\"}],\"name\":\"updateLiveTokenBalanceInPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"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\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"struct PoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"AllZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have one non-zero value, corresponding to the token being added or removed. This error results if all entries are zero.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total BPT amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\"}}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\"}}],\"BufferAlreadyInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferNotInitialized(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"BufferTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"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.\"}}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FeePrecisionTooHigh()\":[{\"details\":\"Primary fee percentages are 18-decimal values, stored here in 64 bits, and calculated with full 256-bit precision. However, the resulting aggregate fees are stored in the Vault with 24-bit precision, which corresponds to 0.00001% resolution (i.e., a fee can be 1%, 1.00001%, 1.00002%, but not 1.000005%). Disallow setting fees such that there would be precision loss in the Vault, leading to a discrepancy between the aggregate fee calculated here and that stored in the Vault.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"params\":{\"amountIn\":\"The total token amount in\",\"maxAmountIn\":\"The amount of the limit that has been exceeded\",\"tokenIn\":\"The incoming token\"}}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"params\":{\"amountOut\":\"The total BPT amount out\",\"minAmountOut\":\"The amount of the limit that has been exceeded\",\"tokenOut\":\"The outgoing token\"}}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"HookRegistrationFailed(address,address,address)\":[{\"params\":{\"pool\":\"Address of the rejected pool\",\"poolFactory\":\"Address of the pool factory\",\"poolHooksContract\":\"Address of the hook contract that rejected the pool registration\"}}],\"InvalidUnderlyingToken(address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might do this (e.g., in an attempt to re-initialize the buffer).\",\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"InvariantRatioAboveMax(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"maxInvariantRatio\":\"The maximum allowed invariant ratio\"}}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"minInvariantRatio\":\"The minimum allowed invariant ratio\"}}],\"IssuedSharesBelowMin(uint256,uint256)\":[{\"details\":\"Shares issued during initialization are below the requested amount.\"}],\"MultipleNonZeroInputs()\":[{\"details\":\"Input arrays for single token add/remove liquidity operations are expected to have only one non-zero value, corresponding to the token being added or removed. This error results if there are multiple non-zero entries.\"}],\"NotEnoughUnderlying(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less underlying tokens than it should.\"}],\"NotEnoughWrapped(address,uint256,uint256)\":[{\"details\":\"A wrap/unwrap operation consumed more or returned less wrapped tokens than it should.\"}],\"NotVaultDelegateCall()\":[{\"details\":\"It can only be called by the Vault via delegatecall.\"}],\"PoolAlreadyInitialized(address)\":[{\"params\":{\"pool\":\"The already initialized pool\"}}],\"PoolAlreadyRegistered(address)\":[{\"params\":{\"pool\":\"The already registered pool\"}}],\"PoolInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInRecoveryMode(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolNotInitialized(address)\":[{\"params\":{\"pool\":\"The uninitialized pool\"}}],\"PoolNotPaused(address)\":[{\"params\":{\"pool\":\"The unpaused pool\"}}],\"PoolNotRegistered(address)\":[{\"params\":{\"pool\":\"The unregistered pool\"}}],\"PoolPauseWindowExpired(address)\":[{\"params\":{\"pool\":\"The pool\"}}],\"PoolPaused(address)\":[{\"params\":{\"pool\":\"The paused pool\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}],\"ProtocolFeesExceedTotalCollected()\":[{\"details\":\"This occurs when the sum of the parts (aggregate swap or yield fee) is greater than the whole (total swap or yield fee). Also validated when the protocol fee controller updates aggregate fee percentages in the Vault.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"SwapFeePercentageTooHigh()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is above the maximum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapFeePercentageTooLow()\":[{\"details\":\"The Vault itself does not impose a universal minimum. Rather, it validates against the range specified by the `ISwapFeePercentageBounds` interface. and reverts with this error if it is below the minimum value returned by the pool. Pools with dynamic fees do not check these limits.\"}],\"SwapLimit(uint256,uint256)\":[{\"params\":{\"amount\":\"The total amount in or out\",\"limit\":\"The amount of the limit that has been exceeded\"}}],\"TokenAlreadyRegistered(address)\":[{\"params\":{\"token\":\"The duplicate token\"}}],\"TokenNotRegistered(address)\":[{\"params\":{\"token\":\"The unregistered token\"}}],\"TokensMismatch(address,address,address)\":[{\"params\":{\"actualToken\":\"The actual token found at that index\",\"expectedToken\":\"The correct token at a given index in the pool\",\"pool\":\"Address of the pool\"}}],\"WrapAmountTooSmall(address)\":[{\"params\":{\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}],\"WrongUnderlyingToken(address,address)\":[{\"details\":\"This should never happen, but a malicious wrapper contract might not return the correct address. Legitimate wrapper contracts should make the asset a constant or immutable value.\",\"params\":{\"underlyingToken\":\"The underlying token returned by `asset`\",\"wrappedToken\":\"The wrapped token corresponding to the buffer\"}}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateSwapFeePercentage\":\"The new aggregate swap fee percentage\",\"pool\":\"The pool whose aggregate swap fee percentage changed\"}},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"details\":\"The `ProtocolFeeController` will emit an event with the underlying change.\",\"params\":{\"aggregateYieldFeePercentage\":\"The new aggregate yield fee percentage\",\"pool\":\"The pool whose aggregate yield fee percentage changed\"}},\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"AuthorizerChanged(address)\":{\"params\":{\"newAuthorizer\":\"The address of the new authorizer\"}},\"BufferSharesBurned(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"burnedShares\":\"The amount of \\\"internal BPT\\\" shares burned\",\"from\":\"The owner of the burned shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"BufferSharesMinted(address,address,uint256)\":{\"details\":\"The shares are not tokenized like pool BPT, but accounted for in the Vault. `getBufferOwnerShares` retrieves the current total shares for a given buffer and address, and `getBufferTotalShares` returns the \\\"totalSupply\\\" of a buffer.\",\"params\":{\"issuedShares\":\"The amount of \\\"internal BPT\\\" shares created\",\"to\":\"The owner of the minted shares\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsAddedRaw\":\"The amount of each token that was added, sorted in token registration order\",\"kind\":\"The add liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity added\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was deposited\",\"amountWrapped\":\"The amount of the wrapped token that was deposited\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"params\":{\"amountsRemovedRaw\":\"The amount of each token that was removed, sorted in token registration order\",\"kind\":\"The remove liquidity operation type (e.g., proportional, custom)\",\"liquidityProvider\":\"The user performing the operation\",\"pool\":\"The pool with liquidity removed\",\"swapFeeAmountsRaw\":\"The total swap fees charged, sorted in token registration order\",\"totalSupply\":\"The total supply of the pool after the operation\"}},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"details\":\"The underlying token can be derived from the wrapped token, so it's not included here.\",\"params\":{\"amountUnderlying\":\"The amount of the underlying token that was withdrawn\",\"amountWrapped\":\"The amount of the wrapped token that was withdrawn\",\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"wrappedToken\":\"The wrapped token that identifies the buffer\"}},\"PoolInitialized(address)\":{\"params\":{\"pool\":\"The pool being initialized\"}},\"PoolPausedStateChanged(address,bool)\":{\"params\":{\"paused\":\"True if the pool was paused\",\"pool\":\"The pool that was just paused or unpaused\"}},\"PoolRecoveryModeStateChanged(address,bool)\":{\"params\":{\"pool\":\"The pool\",\"recoveryMode\":\"True if recovery mode was enabled\"}},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"params\":{\"factory\":\"The factory creating the pool\",\"hooksConfig\":\"Flags indicating which hooks the pool supports and address of hooks contract\",\"liquidityManagement\":\"Supported liquidity management hook flags\",\"pauseWindowEndTime\":\"The pool's pause window end time\",\"pool\":\"The pool being registered\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"The static swap fee of the pool\",\"tokenConfig\":\"An array of descriptors for the tokens the pool will manage\"}},\"ProtocolFeeControllerChanged(address)\":{\"params\":{\"newProtocolFeeController\":\"The address of the new protocol fee controller\"}},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"params\":{\"amountIn\":\"Number of tokenIn tokens\",\"amountOut\":\"Number of tokenOut tokens\",\"pool\":\"The pool with the tokens being swapped\",\"swapFeeAmount\":\"Swap fee amount paid\",\"swapFeePercentage\":\"Swap fee percentage applied (can differ if dynamic)\",\"tokenIn\":\"The token entering the Vault (balance increases)\",\"tokenOut\":\"The token leaving the Vault (balance decreases)\"}},\"SwapFeePercentageChanged(address,uint256)\":{\"params\":{\"swapFeePercentage\":\"The new swap fee percentage for the pool\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}},\"Unwrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"burnedShares\":\"Number of shares (wrapped tokens) burned\",\"withdrawnUnderlying\":\"Number of underlying tokens withdrawn\",\"wrappedToken\":\"The wrapped token address\"}},\"VaultAuxiliary(address,bytes32,bytes)\":{\"params\":{\"eventData\":\"Encoded event data\",\"eventKey\":\"Event key\",\"pool\":\"Pool address\"}},\"VaultBuffersPausedStateChanged(bool)\":{\"details\":\"If buffers all paused, all buffer operations (i.e., all calls through the Router with `isBuffer` set to true) will revert.\",\"params\":{\"paused\":\"True if the Vault buffers were paused\"}},\"VaultPausedStateChanged(bool)\":{\"params\":{\"paused\":\"True if the Vault was paused\"}},\"Wrap(address,uint256,uint256,bytes32)\":{\"params\":{\"bufferBalances\":\"The final buffer balances, packed in 128-bit words (underlying, wrapped)\",\"depositedUnderlying\":\"Number of underlying tokens deposited\",\"mintedShares\":\"Number of shares (wrapped tokens) minted\",\"wrappedToken\":\"The wrapped token address\"}}},\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"details\":\"Caution should be exercised when adding liquidity because the Vault has the capability to transfer tokens from any user, given that it holds all allowances.\",\"params\":{\"params\":\"Parameters for the add liquidity (see above for struct definition)\"},\"returns\":{\"amountsIn\":\"Actual amounts of input tokens\",\"bptAmountOut\":\"Output pool token amount\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"buildTokenConfig(address[],address[])\":{\"details\":\"Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\"},\"buildTokenConfig(address[],address[],bool[])\":{\"details\":\"Infers TokenType (STANDARD or WITH_RATE) from the presence or absence of the rate provider.\"},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"details\":\"All parameters are given in raw token decimal encoding. It requires the buffer to be initialized, and uses the internal wrapped token buffer when it has enough liquidity to avoid external calls.\",\"params\":{\"params\":\"Parameters for the wrap/unwrap operation (see struct definition)\"},\"returns\":{\"amountCalculatedRaw\":\"Calculated swap amount\",\"amountInRaw\":\"Amount of input tokens for the swap\",\"amountOutRaw\":\"Amount of output tokens from the swap\"}},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"details\":\"Reverts if the pool is not registered, or if the token does not belong to the pool.\",\"params\":{\"pool\":\"Address of the pool\",\"token\":\"Address of the token\"},\"returns\":{\"_0\":\"Number of tokens in the pool\",\"_1\":\"Index corresponding to the given token in the pool's token list\"}},\"getVaultExtension()\":{\"details\":\"Function is in the main Vault contract. The VaultExtension handles less critical or frequently used functions, since delegate calls through the Vault are more expensive than direct calls.\",\"returns\":{\"_0\":\"Address of the VaultExtension\"}},\"manualUnsafeSetStaticSwapFeePercentage(address,uint256)\":{\"details\":\"Does not check the value against any min/max limits normally enforced by the pool.\"},\"reentrancyGuardEntered()\":{\"returns\":{\"_0\":\"True if the Vault is currently executing a nonReentrant function\"}},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"details\":\"Trusted routers can burn pool tokens belonging to any user and require no prior approval from the user. Untrusted routers require prior approval from the user. This is the only function allowed to call _queryModeBalanceIncrease (and only in a query context).\",\"params\":{\"params\":\"Parameters for the remove liquidity (see above for struct definition)\"},\"returns\":{\"amountsOut\":\"Actual amounts of output tokens\",\"bptAmountIn\":\"Actual amount of BPT burned\",\"returnData\":\"Arbitrary (optional) data with an encoded response from the pool\"}},\"sendTo(address,address,uint256)\":{\"details\":\"There is no inverse operation for this function. Transfer funds to the Vault and call `settle` to cancel debts.\",\"params\":{\"amount\":\"Amount of tokens to send\",\"to\":\"Recipient address\",\"token\":\"Address of the token\"}},\"settle(address,uint256)\":{\"details\":\"Protects the caller against leftover dust in the Vault for the token being settled. The caller should know in advance how many tokens were paid to the Vault, so it can provide it as a hint to discard any excess in the Vault balance. If the given hint is equal to or higher than the difference in reserves, the difference in reserves is given as credit to the caller. If it's higher, the caller sent fewer tokens than expected, so settlement would fail. If the given hint is lower than the difference in reserves, the hint is given as credit to the caller. In this case, the excess would be absorbed by the Vault (and reflected correctly in the reserves), but would not affect settlement. The credit supplied by the Vault can be calculated as `min(reserveDifference, amountHint)`, where the reserve difference equals current balance of the token minus existing reserves of the token when the function is called.\",\"params\":{\"amountHint\":\"Amount paid as reported by the caller\",\"token\":\"Address of the token\"},\"returns\":{\"credit\":\"Credit received in return of the payment\"}},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"details\":\"All parameters are given in raw token decimal encoding.\",\"params\":{\"vaultSwapParams\":\"Parameters for the swap (see above for struct definition)\"},\"returns\":{\"amountCalculated\":\"Calculated swap amount\",\"amountIn\":\"Amount of input tokens for the swap\",\"amountOut\":\"Amount of output tokens from the swap\"}},\"transfer(address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"owner\":\"Address of the owner\",\"to\":\"Address of the recipient\"},\"returns\":{\"_0\":\"success True if successful, false otherwise\"}},\"transferFrom(address,address,address,uint256)\":{\"details\":\"Notice that the pool token address is not included in the params. This function is exclusively called by the pool contract, so msg.sender is used as the token address.\",\"params\":{\"amount\":\"Amount of tokens to transfer\",\"from\":\"Address of the sender\",\"spender\":\"Address allowed to perform the transfer\",\"to\":\"Address of the recipient\"},\"returns\":{\"_0\":\"True if successful, false otherwise\"}},\"unlock(bytes)\":{\"details\":\"Performs a callback on msg.sender with arguments provided in `data`. The Callback is `transient`, meaning all balances for the caller have to be settled at the end.\",\"params\":{\"data\":\"Contains function signature and args to be passed to the msg.sender\"},\"returns\":{\"result\":\"Resulting data from the call\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AfterAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert.\"}],\"AfterInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the afterInitialize hook, indicating the transaction should revert.\"}],\"AfterRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert.\"}],\"AfterSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the afterSwap hook, indicating the transaction should revert.\"}],\"AllZeroInputs()\":[{\"notice\":\"No valid input was given for a single token operation.\"}],\"AmountGivenZero()\":[{\"notice\":\"The user tried to swap zero tokens.\"}],\"AmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A required amountIn exceeds the maximum limit specified for the operation.\"}],\"AmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The actual amount out is below the minimum limit specified for the operation.\"}],\"BalanceNotSettled()\":[{\"notice\":\"A transient accounting operation completed with outstanding token deltas.\"}],\"BalanceOverflow()\":[{\"notice\":\"One of the balances is above the maximum value that can be stored.\"}],\"BeforeAddLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert.\"}],\"BeforeInitializeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeInitialize hook, indicating the transaction should revert.\"}],\"BeforeRemoveLiquidityHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert.\"}],\"BeforeSwapHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"BptAmountInAboveMax(uint256,uint256)\":[{\"notice\":\"The required BPT amount in exceeds the maximum limit specified for the operation.\"}],\"BptAmountOutBelowMin(uint256,uint256)\":[{\"notice\":\"The BPT amount received from adding liquidity is below the minimum specified for the operation.\"}],\"BufferAlreadyInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was already initialized.\"}],\"BufferNotInitialized(address)\":[{\"notice\":\"The buffer for the given wrapped token was not initialized.\"}],\"BufferSharesInvalidOwner()\":[{\"notice\":\"Buffer shares were burned from the zero address.\"}],\"BufferSharesInvalidReceiver()\":[{\"notice\":\"Buffer shares were minted to the zero address.\"}],\"BufferTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a buffer can't be lower than the absolute minimum.\"}],\"CannotReceiveEth()\":[{\"notice\":\"The contract should not receive ETH.\"}],\"CannotSwapSameToken()\":[{\"notice\":\"The user attempted to swap a token for itself.\"}],\"CodecOverflow()\":[{\"notice\":\"Function called with an invalid value.\"}],\"DoesNotSupportAddLiquidityCustom()\":[{\"notice\":\"Pool does not support adding liquidity with a customized input.\"}],\"DoesNotSupportDonation()\":[{\"notice\":\"Pool does not support adding liquidity through donation.\"}],\"DoesNotSupportRemoveLiquidityCustom()\":[{\"notice\":\"Pool does not support removing liquidity with a customized input.\"}],\"DoesNotSupportUnbalancedLiquidity()\":[{\"notice\":\"Pool does not support adding / removing liquidity with an unbalanced input.\"}],\"DynamicSwapFeeHookFailed()\":[{\"notice\":\"The pool has returned false to the beforeSwap hook, indicating the transaction should revert.\"}],\"FeePrecisionTooHigh()\":[{\"notice\":\"Primary fee percentages result in an aggregate fee that cannot be stored with the required precision.\"}],\"HookAdjustedAmountInAboveMax(address,uint256,uint256)\":[{\"notice\":\"A hook adjusted amountIn exceeds the maximum limit specified for the operation.\"}],\"HookAdjustedAmountOutBelowMin(address,uint256,uint256)\":[{\"notice\":\"The hook adjusted amount out is below the minimum limit specified for the operation.\"}],\"HookAdjustedSwapLimit(uint256,uint256)\":[{\"notice\":\"A hook adjusted amount in or out has exceeded the limit specified in the swap request.\"}],\"HookRegistrationFailed(address,address,address)\":[{\"notice\":\"A hook contract rejected a pool on registration.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InvalidAddLiquidityKind()\":[{\"notice\":\"Add liquidity kind not supported.\"}],\"InvalidRemoveLiquidityKind()\":[{\"notice\":\"Remove liquidity kind not supported.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"InvalidTokenConfiguration()\":[{\"notice\":\"The data in a TokenConfig struct is inconsistent or unsupported.\"}],\"InvalidTokenDecimals()\":[{\"notice\":\"Tokens with more than 18 decimals are not supported.\"}],\"InvalidTokenType()\":[{\"notice\":\"The token type given in a TokenConfig during pool registration is invalid.\"}],\"InvalidUnderlyingToken(address)\":[{\"notice\":\"A wrapped token reported the zero address as its underlying token asset.\"}],\"InvariantRatioAboveMax(uint256,uint256)\":[{\"notice\":\"An add liquidity operation increased the invariant above the limit.\"}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"notice\":\"A remove liquidity operation decreased the invariant below the limit.\"}],\"MaxTokens()\":[{\"notice\":\"The token count is above the maximum allowed.\"}],\"MinTokens()\":[{\"notice\":\"The token count is below the minimum allowed.\"}],\"MultipleNonZeroInputs()\":[{\"notice\":\"More than one non-zero value was given for a single token operation.\"}],\"NotEnoughBufferShares()\":[{\"notice\":\"The user is trying to remove more than their allocated shares from the buffer.\"}],\"NotStaticCall()\":[{\"notice\":\"A state-changing transaction was initiated in a context that only allows static calls.\"}],\"NotVaultDelegateCall()\":[{\"notice\":\"The `VaultExtension` contract was called by an account directly.\"}],\"OutOfBounds()\":[{\"notice\":\"Function called with an invalid bitLength or offset.\"}],\"PauseBufferPeriodDurationTooLarge()\":[{\"notice\":\"The caller specified a buffer period longer than the maximum.\"}],\"PercentageAboveMax()\":[{\"notice\":\"A given percentage is above the maximum (usually a value close to FixedPoint.ONE, or 1e18 wei).\"}],\"PoolAlreadyInitialized(address)\":[{\"notice\":\"A pool has already been initialized. `initialize` may only be called once.\"}],\"PoolAlreadyRegistered(address)\":[{\"notice\":\"A pool has already been registered. `registerPool` may only be called once.\"}],\"PoolInRecoveryMode(address)\":[{\"notice\":\"Cannot enable recovery mode when already enabled.\"}],\"PoolNotInRecoveryMode(address)\":[{\"notice\":\"Cannot disable recovery mode when not enabled.\"}],\"PoolNotInitialized(address)\":[{\"notice\":\"A referenced pool has not been initialized.\"}],\"PoolNotPaused(address)\":[{\"notice\":\"Governance tried to unpause the Pool when it was not paused.\"}],\"PoolNotRegistered(address)\":[{\"notice\":\"A pool has not been registered.\"}],\"PoolPauseWindowExpired(address)\":[{\"notice\":\"Governance tried to pause a Pool after the pause period expired.\"}],\"PoolPaused(address)\":[{\"notice\":\"A user tried to perform an operation involving a paused Pool.\"}],\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}],\"ProtocolFeesExceedTotalCollected()\":[{\"notice\":\"Error raised when there is an overflow in the fee calculation.\"}],\"QueriesDisabled()\":[{\"notice\":\"A user tried to execute a query operation when they were disabled.\"}],\"QueriesDisabledPermanently()\":[{\"notice\":\"An admin tried to re-enable queries, but they were disabled permanently.\"}],\"QuoteResultSpoofed()\":[{\"notice\":\"Quote reverted with a reserved error code.\"}],\"ReentrancyGuardReentrantCall()\":[{\"notice\":\"Unauthorized reentrant call.\"}],\"RouterNotTrusted()\":[{\"notice\":\"An unauthorized Router tried to call a permissioned function (i.e., using the Vault's token allowance).\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"SwapFeePercentageTooHigh()\":[{\"notice\":\"Error raised when the swap fee percentage is greater than the maximum allowed value.\"}],\"SwapFeePercentageTooLow()\":[{\"notice\":\"Error raised when the swap fee percentage is less than the minimum allowed value.\"}],\"SwapLimit(uint256,uint256)\":[{\"notice\":\"An amount in or out has exceeded the limit specified in the swap request.\"}],\"TokenAlreadyRegistered(address)\":[{\"notice\":\"A token was already registered (i.e., it is a duplicate in the pool).\"}],\"TokenNotRegistered(address)\":[{\"notice\":\"The user attempted to operate with a token that is not in the pool.\"}],\"TokensMismatch(address,address,address)\":[{\"notice\":\"The token list passed into an operation does not match the pool tokens in the pool.\"}],\"TradeAmountTooSmall()\":[{\"notice\":\"The amount given or calculated for an operation is below the minimum limit.\"}],\"VaultBuffersArePaused()\":[{\"notice\":\"Buffer operation attempted while vault buffers are paused.\"}],\"VaultIsNotUnlocked()\":[{\"notice\":\"A user called a Vault function (swap, add/remove liquidity) outside the lock context.\"}],\"VaultNotPaused()\":[{\"notice\":\"Governance tried to unpause the Vault when it was not paused.\"}],\"VaultPauseWindowDurationTooLarge()\":[{\"notice\":\"The caller specified a pause window period longer than the maximum.\"}],\"VaultPauseWindowExpired()\":[{\"notice\":\"Governance tried to pause the Vault after the pause period expired.\"}],\"VaultPaused()\":[{\"notice\":\"A user tried to perform an operation while the Vault was paused.\"}],\"WrapAmountTooSmall(address)\":[{\"notice\":\"The amount given to wrap/unwrap was too small, which can introduce rounding issues.\"}],\"WrongProtocolFeeControllerDeployment()\":[{\"notice\":\"The `ProtocolFeeController` contract was configured with an incorrect Vault address.\"}],\"WrongUnderlyingToken(address,address)\":[{\"notice\":\"The wrapped token asset does not match the underlying token.\"}],\"WrongVaultAdminDeployment()\":[{\"notice\":\"The `VaultAdmin` contract was configured with an incorrect Vault address.\"}],\"WrongVaultExtensionDeployment()\":[{\"notice\":\"The `VaultExtension` contract was configured with an incorrect Vault address.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}]},\"events\":{\"AggregateSwapFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate swap fee.\"},\"AggregateYieldFeePercentageChanged(address,uint256)\":{\"notice\":\"A protocol or pool creator fee has changed, causing an update to the aggregate yield fee.\"},\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizerChanged(address)\":{\"notice\":\"A new authorizer is set by `setAuthorizer`.\"},\"BufferSharesBurned(address,address,uint256)\":{\"notice\":\"Buffer shares were burned for an ERC4626 buffer corresponding to a given wrapped token.\"},\"BufferSharesMinted(address,address,uint256)\":{\"notice\":\"Buffer shares were minted for an ERC4626 buffer corresponding to a given wrapped token.\"},\"LiquidityAdded(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been added to a pool (including initialization).\"},\"LiquidityAddedToBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was added to an ERC4626 buffer corresponding to the given wrapped token.\"},\"LiquidityRemoved(address,address,uint8,uint256,uint256[],uint256[])\":{\"notice\":\"Liquidity has been removed from a pool.\"},\"LiquidityRemovedFromBuffer(address,uint256,uint256,bytes32)\":{\"notice\":\"Liquidity was removed from an ERC4626 buffer.\"},\"PoolInitialized(address)\":{\"notice\":\"A Pool was initialized by calling `initialize`.\"},\"PoolPausedStateChanged(address,bool)\":{\"notice\":\"A Pool's pause status has changed.\"},\"PoolRecoveryModeStateChanged(address,bool)\":{\"notice\":\"Recovery mode has been enabled or disabled for a pool.\"},\"PoolRegistered(address,address,(address,uint8,address,bool)[],uint256,uint32,(address,address,address),(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address),(bool,bool,bool,bool))\":{\"notice\":\"A Pool was registered by calling `registerPool`.\"},\"ProtocolFeeControllerChanged(address)\":{\"notice\":\"A new protocol fee controller is set by `setProtocolFeeController`.\"},\"Swap(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"A swap has occurred.\"},\"SwapFeePercentageChanged(address,uint256)\":{\"notice\":\"Emitted when the swap fee percentage of a pool is updated.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unwrap(address,uint256,uint256,bytes32)\":{\"notice\":\"An unwrap operation has occurred.\"},\"VaultAuxiliary(address,bytes32,bytes)\":{\"notice\":\"Pools can use this event to emit event data from the Vault.\"},\"VaultBuffersPausedStateChanged(bool)\":{\"notice\":\"The Vault buffers pause status has changed.\"},\"VaultPausedStateChanged(bool)\":{\"notice\":\"The Vault's pause status has changed.\"},\"VaultQueriesDisabled()\":{\"notice\":\"`disableQuery` has been called on the Vault, disabling query functionality.\"},\"VaultQueriesEnabled()\":{\"notice\":\"`enableQuery` has been called on the Vault, enabling query functionality.\"},\"Wrap(address,uint256,uint256,bytes32)\":{\"notice\":\"A wrap operation has occurred.\"}},\"kind\":\"user\",\"methods\":{\"addLiquidity((address,address,uint256[],uint256,uint8,bytes))\":{\"notice\":\"Adds liquidity to a pool.\"},\"erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256))\":{\"notice\":\"Wraps/unwraps tokens based on the parameters provided.\"},\"getPoolTokenCountAndIndexOfToken(address,address)\":{\"notice\":\"Gets the index of a token in a given pool.\"},\"getVaultExtension()\":{\"notice\":\"Returns the VaultExtension contract address.\"},\"reentrancyGuardEntered()\":{\"notice\":\"Expose the state of the Vault's reentrancy guard.\"},\"removeLiquidity((address,address,uint256,uint256[],uint8,bytes))\":{\"notice\":\"Removes liquidity from a pool.\"},\"sendTo(address,address,uint256)\":{\"notice\":\"Sends tokens to a recipient.\"},\"settle(address,uint256)\":{\"notice\":\"Settles deltas for a token; must be successful for the current lock to be released.\"},\"swap((uint8,address,address,address,uint256,uint256,bytes))\":{\"notice\":\"Swaps tokens based on provided parameters.\"},\"transfer(address,address,uint256)\":{\"notice\":\"Transfers pool token from owner to a recipient.\"},\"transferFrom(address,address,address,uint256)\":{\"notice\":\"Transfers pool token from a sender to a recipient using an allowance.\"},\"unlock(bytes)\":{\"notice\":\"Creates a context for a sequence of operations (i.e., \\\"unlocks\\\" the Vault).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/test/VaultMock.sol\":\"VaultMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/test/IVaultMainMock.sol\":{\"keccak256\":\"0x086e3fda1fa00d50747c9f88711024e107a894904b9ff996fade91f8da326baa\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8712c4f68cc951446482c289250ee6ea15c0028bb9b9d82c69d6793aa8dd1ae2\",\"dweb:/ipfs/QmSmz5XkvCDQ4NZ32evpxCvGkYnGbygCn5BP2xwvz2hQgi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\":{\"keccak256\":\"0x6f8c558b0520faae0c4576f30225b5a97821a4cd210878a0ba10c102a2f753f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b40aa7a5ee39fa2e297c684fd29ad45d866f1fc61cd997120a417b02a4d908aa\",\"dweb:/ipfs/QmYP5pQAF7SDLgy3aerqfnc4VwdmfQix2jcQUNL3o83BY9\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IPoolLiquidity.sol\":{\"keccak256\":\"0x0cdc0d3817887d0439c3c6f4c811bd37091ef75a855dd8b14c0e8f337e2799dd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ffd05df90ccdf19a35177fd6c6f78edc61ca2a37df7d0934932a3ad5a96f1e6\",\"dweb:/ipfs/QmaCmKktnMy4XXZn2FaKTjwQBGUhuXKikbxCbPX6K5PPgi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/BasePoolAuthentication.sol\":{\"keccak256\":\"0xd810b5deb6053f485a0fc6dfde4894e7a0c90e5d31db3a61144f62c399cd8a26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6cdb0e9331a4fe3320355bac37376a0698d36b10347d90d2c4224a787e065622\",\"dweb:/ipfs/QmTsu2bGVhfPyF9X6NCmhRLYyBHBpjRKndKLvTagJGUKE3\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/BufferHelpers.sol\":{\"keccak256\":\"0x528ef10b3f14bb2b1d64043ec8c7d732a502147fe9d4e4bd3339f57e40fe3ce7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9a71bd94d0c5ba098b04b2bc65a7842c1bb3b96d91dd6a95756efc468cd6dbc5\",\"dweb:/ipfs/QmPrHPMmrdpJjvny8UjWbWFJo5nWpBtmjxWGbX1zDbNx6Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9594d2dc75aa8c92bb39d30cd76d3bfbb203fe17c4ae35b6f8d882ed4ac868d4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a43d706d34c9f071bed27372100fedaeb12ec4c5c3529e150c8684444c4a619\",\"dweb:/ipfs/QmYUnJ2CtjJY2XktSzamExryTNbAYjesnymMpqTvQuXUka\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/PackedTokenBalance.sol\":{\"keccak256\":\"0xa1014b8d96cdfd149f502cda06f25e51885a6456b41061ed213086fcc1c496b4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8a96e7e176f73762c6de904de39472fe970f12f6d3631097227bc664bd0780c1\",\"dweb:/ipfs/QmXcu5bk8tJTqR6UwkdKNtsodzqYGpJsPdfjQmdJFyKZjR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/RevertCodec.sol\":{\"keccak256\":\"0xb4ee9e1543d36bdf9eeb4a9d5ab41170723239a1e27a2272f2e31de4765c019b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3b70dd5e4fa496c2c1efb6bd20368587ba3c9c0d0afac9dc3631a29ff2628f99\",\"dweb:/ipfs/QmQigXUkpDuVK5VSX67RABrAC9bashPcHMasgPRNJb4k8Z\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/ScalingHelpers.sol\":{\"keccak256\":\"0xf98fec19a1516432d7540f0cde2e967b627afbc5a361835766d57be8ba10b4e2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://94b49929bff77d1fdaab8916350356fc9816317beef4f33c3af0e6a40493d01c\",\"dweb:/ipfs/QmPPhtmpPvgedbtQaJZz7JQCmiGKKTHmfh7EGhJS1yUCia\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/TransientStorageHelpers.sol\":{\"keccak256\":\"0xb5f6b1d0ee3f295a717ce58329eaadccb1eefc2e1e02e2e7c438e377628475cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03c1b9bc73b7d14d9e1948a31c271a03a6ba4291f44d9aff17e60d300c111d0d\",\"dweb:/ipfs/QmNpW3iD3ST76N6xTncuVgYSuafSqFkXUmxNaK8uybr96G\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/WordCodec.sol\":{\"keccak256\":\"0xeb183354089582d4a3fc8ded6cc410a2937f2eac2aa47b3ab13b0f5e6ede10e5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecef18f7f0f57d749d5b0e11ab887299be15e1b6971a4bb9104d06e45705231b\",\"dweb:/ipfs/QmeYRDD5UtVKu2YFJm3SmHFriK6LUa2Tzg7EdZrneEfzNR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0986ee17e49747c89956b4d46947b65b7c2942d5854fd39d764a7cb2735ff8af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38fedef8f551d12a155f54ab1c863db60fed1226a397a321ac729e9db65f4593\",\"dweb:/ipfs/QmaxBFc45J79aehsbSoLzNWVfBhqxkkWnKpunmKrbzV1pL\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/SlotDerivation.sol\":{\"keccak256\":\"0xb5837350f4b921ad2b4f7a3863a3d5cfe64525f573ba04ee2232c498fb1005ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b641a078360ea67827036a4b2d4fdebb045519106d3888d9cbb4f9b7bf3362b2\",\"dweb:/ipfs/QmR3DQvqKzAojEMdHbYM3Pqc7WZe3YXRHTDSftMegrELQ5\"]},\"@balancer-labs/v3-solidity-utils/contracts/openzeppelin/StorageSlotExtension.sol\":{\"keccak256\":\"0xba524eab3f4f1b735008624cf11264842bec509e05ac025f93b8c843547fbfd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c539df1afd342c47fdbd96fb28a183b7b30e055c4e435cdf77140ec92e68a42\",\"dweb:/ipfs/QmZ4akawS7TKrJkBeoi4bfyGWRmQgXshtkAMupuxkgH5Ur\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":{\"keccak256\":\"0x28078c6fa4d55418c25505d4683642cb51fe55b2155ef7418db6c70631a30d6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://864b91fdc2b69725bcc07f06d9adebe87117561582fa58f1e4410d8928cd205c\",\"dweb:/ipfs/QmWCDsbTxtmEMLhorqfGF1LDMHMqqVnV9sk9mUTPR7eog8\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@balancer-labs/v3-vault/contracts/Vault.sol\":{\"keccak256\":\"0xd16a5648324b9ba577b3bdc1ef0e218dd341469972a1a08528ca1b75e659c7fc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://3afd334b8d76848ff82ad3f3d77d691ed17c09a09599a9866e95f94564d4299e\",\"dweb:/ipfs/QmbpErGaJL2hMfJxyJCFuzh5dDHxP282B4Q1384yoKV5Fs\"]},\"@balancer-labs/v3-vault/contracts/VaultCommon.sol\":{\"keccak256\":\"0xad949728097754fb91dd82f46a4f3430f0caf092fe719f04c030325e623c59cd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b6ba4635b64181a08098f2b4bde9bc6ceb8580d24654ec39c3d38ac2c8082317\",\"dweb:/ipfs/QmbthXemuT8Qvs2jdTADdyzbcPuZaKWfZjRn7j8dWuwffs\"]},\"@balancer-labs/v3-vault/contracts/VaultExtension.sol\":{\"keccak256\":\"0x40490c1c492b44a3fbc04a9642abb41c86b124a0e510aedbee2886040058a5a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b7d969f2f08bb32524e3678ef1b9cbdd3d9630b0cee495527a42a0ca640cd94\",\"dweb:/ipfs/QmSpqFru9X2V1SD3cE63jcdNiHLZdTvXXGw6suCbzHnqxM\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/VaultStorage.sol\":{\"keccak256\":\"0x283153cc86b04e7b5ded7b317a7773cd52912661922d477bccc7e3ef9c4fd332\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://30e03b35be9f4aebba5ea1f6fd1f72fb37990c916a22ef1dd4a01af809f89146\",\"dweb:/ipfs/QmNri89FgxWKFPkN67tvzAGf6kSyMuYvZd62ZW9a5MJBJH\"]},\"@balancer-labs/v3-vault/contracts/lib/HooksConfigLib.sol\":{\"keccak256\":\"0xaf3a7b4bbc1427ffb36b89cab5e485494afbddaff7195e0533f9c29a88c217b3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c653115b697d1c2a340a485e37a1d1a7b18bd3da4304ef12480bf9dcb8f61dc8\",\"dweb:/ipfs/QmfPNVqSeuG6gJr2x4y41czE5ivBz8vLpZ3R97VVnbK1uT\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigConst.sol\":{\"keccak256\":\"0xcec5acd992ba3d85194d2a66de785676e5fbd76c7ef4bd75f581582c637e9191\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://03feaba5c47de6cfa364a9f78f3d1cbc48c6e59e89348a56e773631ce3d52c4d\",\"dweb:/ipfs/QmWZmpFLKk6qEsTtbPaiKBWvTnSuYzQdbNJZX4Bng16c3F\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolConfigLib.sol\":{\"keccak256\":\"0x0df4ac214754751acdaa044f697ef2a45823689689aac22a6a102c8e543d97c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://13c1c708ac1a1f5523282a7430d7f5300120ac17b3c77a0bd103d2afe7aff979\",\"dweb:/ipfs/QmPstE7ZquJ4zMaCEXix8iCXc6hTSyNQaR9Z4aWBMTa9ys\"]},\"@balancer-labs/v3-vault/contracts/lib/PoolDataLib.sol\":{\"keccak256\":\"0x0f004ef9c126426c1391516247f90cbb699982f3c545c821c2bdc3796c93f781\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93d7b94cb4e0c9eee127258fb69e390d34c391444f337b6cc5cbe5beb702f4e7\",\"dweb:/ipfs/QmbswDz4DrsXaEh9RSvpmWKX5JCLoTavyAX2511eKr5rQd\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultExtensionsLib.sol\":{\"keccak256\":\"0xf17a6fb82ff8eac940260544aa041e2cf8b826c0f7e205b4d52a4c5394a7ee38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c88893eba6593f2f7ef05e3ffeb61416b6cc630eaad2efa90e77262f3282ab81\",\"dweb:/ipfs/QmX9XhQix9yKT7buiT77igy8Bf1jvwwYGxpmTr4e5mWnQD\"]},\"@balancer-labs/v3-vault/contracts/lib/VaultStateLib.sol\":{\"keccak256\":\"0xc40f34646f76afe536a326173d3c8cd663a655375531f65f3e6f7c63cecddeeb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a97b6d2363d70869b9cf66104a6c6bdfc84d351085c94b23b0104f2608e52ff4\",\"dweb:/ipfs/QmVPVR8F6nSxxhxTpFp5cgH9n1dE2E5UXD6cPauumtpS3e\"]},\"@balancer-labs/v3-vault/contracts/test/InputHelpersMock.sol\":{\"keccak256\":\"0xe3cff486fec0d86b1feed821a1ae1d9bd69bd5c5a0a9a61f6eb8ce238637241b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8f7338c0826abdde07c9de03ab44f2509582697b2a68062c66f20294bb9038ec\",\"dweb:/ipfs/QmNPZwFRhWqxbAGkZvp16r4qMLvignbgiDcZdUZtXC1MSm\"]},\"@balancer-labs/v3-vault/contracts/test/PoolFactoryMock.sol\":{\"keccak256\":\"0xac5944d8912e0282de68a46ae52ddff55c28f9ff7c3634161f6aa1518afd2dcf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://44ec26aa9b94ebb6e1296d8d614330d016d28386fba24bba646a53aa804b8412\",\"dweb:/ipfs/QmSzKCxR3pQQu2fTmrSYXLT1EfE1rBSCab22xjYSJyxEcv\"]},\"@balancer-labs/v3-vault/contracts/test/PoolMock.sol\":{\"keccak256\":\"0xcd2e8d9d618bfb81a9696acb2419a33d04f48f0b548402c0b32e16d2e8708c3d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01e7508e239ab908574226d9c009a0f0af5759d941e59a3d7362735ddd859980\",\"dweb:/ipfs/QmQDAS3tugJ1kRFgUsnyKJbMhEtD7464jfTqjYWZc2tQz2\"]},\"@balancer-labs/v3-vault/contracts/test/VaultMock.sol\":{\"keccak256\":\"0x5563f443a3ed5379c47789beee9584ce398fa0c6036959d3fb67ea0a018eae89\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fc846eb810e6f159d89b0f59e17152ebd4562f4ef556dc81158379ed9973a\",\"dweb:/ipfs/QmezgtCMmCKqE7G2zCNjV4ShdEYHP3acmG1h23mSJcUQiZ\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol":{"ERC20MultiToken":{"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":[{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"PoolTotalSupplyTooLow","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"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":"pool","type":"address"},{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"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\":\"pool\",\"type\":\"address\"},{\"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\"}],\"devdoc\":{\"details\":\"The ERC20MultiToken is an ERC20-focused multi-token implementation that is fully compatible with the ERC20 API on the token side. It also allows for the minting and burning of tokens on the multi-token side.\",\"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.\"}}],\"PoolTotalSupplyTooLow(uint256)\":[{\"params\":{\"totalSupply\":\"The total supply value that was below the minimum\"}}]},\"events\":{\"Approval(address,address,address,uint256)\":{\"params\":{\"owner\":\"The token holder\",\"pool\":\"The pool token receiving the allowance\",\"spender\":\"The account being authorized to spend a given amount of the token\",\"value\":\"The number of tokens spender is authorized to transfer from owner\"}},\"Transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"The token source\",\"pool\":\"The pool token being transferred\",\"to\":\"The token destination\",\"value\":\"The number of tokens\"}}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"PoolTotalSupplyTooLow(uint256)\":[{\"notice\":\"The total supply of a pool token can't be lower than the absolute minimum.\"}]},\"events\":{\"Approval(address,address,address,uint256)\":{\"notice\":\"The allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,address,uint256)\":{\"notice\":\"Pool tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Store Token data and handle accounting for pool tokens in the Vault.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":\"ERC20MultiToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IERC20MultiTokenErrors.sol\":{\"keccak256\":\"0x4994bc0f8e5905640876a9411dadb73221ea2b7b1168d22cf5fe44ee1ca16960\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://69a0a6ab9c2622426ccfcb7263deb5615e589e98b3b31ea9fcd21595bb42a13d\",\"dweb:/ipfs/QmVW6GVXGTHnVo8MGk7zdLMASR8uN7khPsrEMXwgy4NBrQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/EVMCallModeHelpers.sol\":{\"keccak256\":\"0x9dc4c8d6dd5dbc108dd377dab73a3e6c84e8c104713d2afb3cba8acc9ddf4c63\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2ef7c65fe356144f8cd720109b818e1ec6cc495ca35b55ca273ef9db45c6ae00\",\"dweb:/ipfs/QmREJgnfgoqemnYKvfYjTFJBAMsV9VAKA5AY5Woprpc1vs\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@balancer-labs/v3-vault/contracts/token/ERC20MultiToken.sol\":{\"keccak256\":\"0x49578c053271957fa9661c6a3e3ce6310a3f0690be6deca9eeb28f4e129bcfd3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e3bbd6d7baa790f6e259dfcab0ae2b0db96c08b21739dca829217af6fdbea15d\",\"dweb:/ipfs/QmVgirrgRbkHVdfthMKTJi98QeHmx9DHTT1WBNQRYogpBn\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/IERC4626.sol":{"IERC4626":{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","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":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","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":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","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"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","decimals()":"313ce567","deposit(uint256,address)":"6e553f65","maxDeposit(address)":"402d267d","maxMint(address)":"c63d75b6","maxRedeem(address)":"d905777e","maxWithdraw(address)":"ce96cb77","mint(uint256,address)":"94bf804d","name()":"06fdde03","previewDeposit(uint256)":"ef8b30f7","previewMint(uint256)":"b3d7f6b9","previewRedeem(uint256)":"4cdad506","previewWithdraw(uint256)":"0a28a477","redeem(uint256,address,address)":"ba087652","symbol()":"95d89b41","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256,address,address)":"b460af94"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"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\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalManagedAssets\",\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC4626 \\\"Tokenized Vault Standard\\\", as defined in https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].\",\"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.\"},\"asset()\":{\"details\":\"Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. - MUST be an ERC-20 token contract. - MUST NOT revert.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"convertToShares(uint256)\":{\"details\":\"Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal scenario where all the conditions are met. - MUST NOT be inclusive of any fees that are charged against assets in the Vault. - MUST NOT show any variations depending on the caller. - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. - MUST NOT revert. NOTE: This calculation MAY NOT reflect the \\u201cper-user\\u201d price-per-share, and instead should reflect the \\u201caverage-user\\u2019s\\u201d price-per-share, meaning what the average user should expect to see when exchanging to and from.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"deposit(uint256,address)\":{\"details\":\"Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the deposit execution, and are accounted for during deposit. - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"maxDeposit(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, through a deposit call. - MUST return a limited value if receiver is subject to some deposit limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. - MUST NOT revert.\"},\"maxMint(address)\":{\"details\":\"Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. - MUST return a limited value if receiver is subject to some mint limit. - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. - MUST NOT revert.\"},\"maxRedeem(address)\":{\"details\":\"Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, through a redeem call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. - MUST NOT revert.\"},\"maxWithdraw(address)\":{\"details\":\"Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the Vault, through a withdraw call. - MUST return a limited value if owner is subject to some withdrawal limit or timelock. - MUST NOT revert.\"},\"mint(uint256,address)\":{\"details\":\"Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. - MUST emit the Deposit event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint execution, and are accounted for during mint. - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not approving enough underlying tokens to the Vault contract, etc). NOTE: most implementations will require pre-approval of the Vault with the Vault\\u2019s underlying asset token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called in the same transaction. - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the deposit would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"previewMint(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the same transaction. - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint would be accepted, regardless if the user has enough tokens approved, etc. - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by minting.\"},\"previewRedeem(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, given current on-chain conditions. - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the same transaction. - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the redemption would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by redeeming.\"},\"previewWithdraw(uint256)\":{\"details\":\"Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, given current on-chain conditions. - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if called in the same transaction. - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though the withdrawal would be accepted, regardless if the user has enough shares, etc. - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. - MUST NOT revert. NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in share price or some other type of condition, meaning the depositor will lose assets by depositing.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly shares from owner and sends assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the redeem execution, and are accounted for during redeem. - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalAssets()\":{\"details\":\"Returns the total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault. - SHOULD include any compounding that occurs from yield. - MUST be inclusive of any fees that are charged against assets in the Vault. - MUST NOT revert.\"},\"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.\"},\"withdraw(uint256,address,address)\":{\"details\":\"Burns shares from owner and sends exactly assets of underlying tokens to receiver. - MUST emit the Withdraw event. - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the withdraw execution, and are accounted for during withdraw. - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner not having enough shares, etc). Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. Those methods should be performed separately.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"IERC5267":{"abi":[{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"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\"}],\"devdoc\":{\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":\"IERC5267\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]}},\"version\":1}"}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 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\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}"},"IERC20Errors":{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 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\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}"},"IERC721Errors":{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 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 EIP-20. 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\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]}},\"version\":1}"}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC20 standard as defined in the EIP.\",\"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\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"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"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC20 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\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","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":"value","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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"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\":\"value\",\"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\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {} doThing(..., value); } function doThing(..., uint256 value) public { token.safeTransferFrom(msg.sender, address(this), value); ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122049a6e94dfcb502cf35cc0744115c45d257fefb3fc77be0f45a0ba150c9c25d7b64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOBHASH 0xA6 0xE9 0x4D 0xFC 0xB5 MUL 0xCF CALLDATALOAD 0xCC SMOD PREVRANDAO GT TLOAD GASLIMIT 0xD2 JUMPI INVALID 0xFB EXTCODEHASH 0xC7 PUSH28 0xE0F45A0BA150C9C25D7B64736F6C634300081A003300000000000000 ","sourceMap":"751:5018:98:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122049a6e94dfcb502cf35cc0744115c45d257fefb3fc77be0f45a0ba150c9c25d7b64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOBHASH 0xA6 0xE9 0x4D 0xFC 0xB5 MUL 0xCF CALLDATALOAD 0xCC SMOD PREVRANDAO GT TLOAD GASLIMIT 0xD2 JUMPI INVALID 0xFB EXTCODEHASH 0xC7 PUSH28 0xE0F45A0BA150C9C25D7B64736F6C634300081A003300000000000000 ","sourceMap":"751:5018:98:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC20 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 ERC20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220f4d2aa1e5ecdcc15c86ee0f64dfbc5640cce1a0701be2e43f1d3326a049c33ad64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL 0xD2 0xAA 0x1E MCOPY 0xCD 0xCC ISZERO 0xC8 PUSH15 0xE0F64DFBC5640CCE1A0701BE2E43F1 0xD3 ORIGIN PUSH11 0x49C33AD64736F6C634300 ADDMOD BYTE STOP CALLER ","sourceMap":"195:6066:99:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea2646970667358221220f4d2aa1e5ecdcc15c86ee0f64dfbc5640cce1a0701be2e43f1d3326a049c33ad64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL 0xD2 0xAA 0x1E MCOPY 0xCD 0xCC ISZERO 0xC8 PUSH15 0xE0F64DFBC5640CCE1A0701BE2E43F1 0xD3 ORIGIN PUSH11 0x49C33AD64736F6C634300 ADDMOD BYTE STOP CALLER ","sourceMap":"195:6066:99:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"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).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Create2.sol":{"Create2":{"abi":[{"inputs":[],"name":"Create2EmptyBytecode","type":"error"},{"inputs":[],"name":"Create2FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"Create2InsufficientBalance","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212200f66103f7f57cc1596c45015821f0332c5f542a519367a570f1f4f9bfea264ba64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF PUSH7 0x103F7F57CC1596 0xC4 POP ISZERO DUP3 0x1F SUB ORIGIN 0xC5 CREATE2 TIMESTAMP 0xA5 NOT CALLDATASIZE PUSH27 0x570F1F4F9BFEA264BA64736F6C634300081A003300000000000000 ","sourceMap":"495:3877:100:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212200f66103f7f57cc1596c45015821f0332c5f542a519367a570f1f4f9bfea264ba64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF PUSH7 0x103F7F57CC1596 0xC4 POP ISZERO DUP3 0x1F SUB ORIGIN 0xC5 CREATE2 TIMESTAMP 0xA5 NOT CALLDATASIZE PUSH27 0x570F1F4F9BFEA264BA64736F6C634300081A003300000000000000 ","sourceMap":"495:3877:100:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Create2EmptyBytecode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Create2FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"Create2InsufficientBalance\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Helper to make usage of the `CREATE2` EVM opcode easier and safer. `CREATE2` can be used to compute in advance the address where a smart contract will be deployed, which allows for interesting new mechanisms known as 'counterfactual interactions'. See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more information.\",\"errors\":{\"Create2EmptyBytecode()\":[{\"details\":\"There's no code to deploy.\"}],\"Create2FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"Create2InsufficientBalance(uint256,uint256)\":[{\"details\":\"Not enough balance for performing a CREATE2 deploy.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Create2.sol\":\"Create2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Nonces.sol":{"Nonces":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"nonces(address)":"7ecebe00"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides tracking nonces for addresses. Nonces will only increment.\",\"errors\":{\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}]},\"kind\":\"dev\",\"methods\":{\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Nonces.sol\":\"Nonces\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/ShortStrings.sol":{"ShortStrings":{"abi":[{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122012fb1c93e99e6fd132eaad85c2085a93c88d57de75c26f059322f2095f73f99364736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0xFB SHR SWAP4 0xE9 SWAP15 PUSH16 0xD132EAAD85C2085A93C88D57DE75C26F SDIV SWAP4 0x22 CALLCODE MULMOD PUSH0 PUSH20 0xF99364736F6C634300081A003300000000000000 ","sourceMap":"1255:3053:102:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122012fb1c93e99e6fd132eaad85c2085a93c88d57de75c26f059322f2095f73f99364736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0xFB SHR SWAP4 0xE9 SWAP15 PUSH16 0xD132EAAD85C2085A93C88D57DE75C26F SDIV SWAP4 0x22 CALLCODE MULMOD PUSH0 PUSH20 0xF99364736F6C634300081A003300000000000000 ","sourceMap":"1255:3053:102:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides functions to convert short memory strings into a `ShortString` type that can be used as an immutable variable. Strings of arbitrary length can be optimized using this library if they are short enough (up to 31 bytes) by packing them with their length (1 byte) in a single EVM word (32 bytes). Additionally, a fallback mechanism can be used for every other case. Usage example: ```solidity contract Named { using ShortStrings for *; ShortString private immutable _name; string private _nameFallback; constructor(string memory contractName) { _name = contractName.toShortStringWithFallback(_nameFallback); } function name() external view returns (string memory) { return _name.toStringWithFallback(_nameFallback); } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":\"ShortStrings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212201ccb47dc4b967e50b686d53223f6c9a1cedbdae61a668cc018f4f885912b48f464736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xCB SELFBALANCE 0xDC 0x4B SWAP7 PUSH31 0x50B686D53223F6C9A1CEDBDAE61A668CC018F4F885912B48F464736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1245:2685:103:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212201ccb47dc4b967e50b686d53223f6c9a1cedbdae61a668cc018f4f885912b48f464736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xCB SELFBALANCE 0xDC 0x4B SWAP7 PUSH31 0x50B686D53223F6C9A1CEDBDAE61A668CC018F4F885912B48F464736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1245:2685:103:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC1967 implementation slot: ```solidity contract ERC1967 { 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; } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212201428582bea3ded577867148439d49d702ae33bc355922ca364e58804239f459b64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0x28 PC 0x2B 0xEA RETURNDATASIZE 0xED JUMPI PUSH25 0x67148439D49D702AE33BC355922CA364E58804239F459B6473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"251:2847:104:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212201428582bea3ded577867148439d49d702ae33bc355922ca364e58804239f459b64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0x28 PC 0x2B 0xEA RETURNDATASIZE 0xED JUMPI PUSH25 0x67148439D49D702AE33BC355922CA364E58804239F459B6473 PUSH16 0x6C634300081A00330000000000000000 ","sourceMap":"251:2847:104:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ECDSA":{"abi":[{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122020425a743e85f65a40bb37eea560714e9e994ef7ab4a2727ce4fdffc4ef0d7bd64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 TIMESTAMP GAS PUSH21 0x3E85F65A40BB37EEA560714E9E994EF7AB4A2727CE 0x4F 0xDF 0xFC 0x4E CREATE 0xD7 0xBD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"344:7386:105:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122020425a743e85f65a40bb37eea560714e9e994ef7ab4a2727ce4fdffc4ef0d7bd64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 TIMESTAMP GAS PUSH21 0x3E85F65A40BB37EEA560714E9E994EF7AB4A2727CE 0x4F 0xDF 0xFC 0x4E CREATE 0xD7 0xBD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"344:7386:105:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"EIP712":{"abi":[{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"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\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\",\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\",\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"MessageHashUtils":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122052861ea2893f3205aa78bf226676e6570483aecf6654e406492272092be8c97c64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE DUP7 0x1E LOG2 DUP10 EXTCODEHASH ORIGIN SDIV 0xAA PUSH25 0xBF226676E6570483AECF6654E406492272092BE8C97C64736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"521:3235:107:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122052861ea2893f3205aa78bf226676e6570483aecf6654e406492272092be8c97c64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE DUP7 0x1E LOG2 DUP10 EXTCODEHASH ORIGIN SDIV 0xAA PUSH25 0xBF226676E6570483AECF6654E406492272092BE8C97C64736F PUSH13 0x634300081A0033000000000000 ","sourceMap":"521:3235:107:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing. The library provides methods for generating a hash of a message that conforms to the https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712] specifications.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":\"MessageHashUtils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122044be3032fee2ae65b631907e67124639945b4b89384b4badb779527e637cf71d64736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO 0xBE ADDRESS ORIGIN INVALID 0xE2 0xAE PUSH6 0xB631907E6712 CHAINID CODECOPY SWAP5 JUMPDEST 0x4B DUP10 CODESIZE 0x4B 0x4B 0xAD 0xB7 PUSH26 0x527E637CF71D64736F6C634300081A0033000000000000000000 ","sourceMap":"203:14914:110:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122044be3032fee2ae65b631907e67124639945b4b89384b4badb779527e637cf71d64736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO 0xBE ADDRESS ORIGIN INVALID 0xE2 0xAE PUSH6 0xB631907E6712 CHAINID CODECOPY SWAP5 JUMPDEST 0x4B DUP10 CODESIZE 0x4B 0x4B 0xAD 0xB7 PUSH26 0x527E637CF71D64736F6C634300081A0033000000000000000000 ","sourceMap":"203:14914:110:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MathOverflowedMulDiv\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"errors\":{\"MathOverflowedMulDiv()\":[{\"details\":\"Muldiv operation overflow.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212205b7155826d6d194a35e330be5e8468e5a230eae855a9a5ff7ba552dc4d5a963464736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH18 0x55826D6D194A35E330BE5E8468E5A230EAE8 SSTORE 0xA9 0xA5 SELFDESTRUCT PUSH28 0xA552DC4D5A963464736F6C634300081A003300000000000000000000 ","sourceMap":"764:33927:111:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea26469706673582212205b7155826d6d194a35e330be5e8468e5a230eae855a9a5ff7ba552dc4d5a963464736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH18 0x55826D6D194A35E330BE5E8468E5A230EAE8 SSTORE 0xA9 0xA5 SELFDESTRUCT PUSH28 0xA552DC4D5A963464736F6C634300081A003300000000000000000000 ","sourceMap":"764:33927:111:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea264697066735822122043b610f4a07fc65dc7ae86014adf515712e21d1a4c8f096b508e5f53e04af5e764736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER 0xB6 LT DELEGATECALL LOG0 PUSH32 0xC65DC7AE86014ADF515712E21D1A4C8F096B508E5F53E04AF5E764736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"216:1047:112:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"5f80fdfea264697066735822122043b610f4a07fc65dc7ae86014adf515712e21d1a4c8f096b508e5f53e04af5e764736f6c634300081a0033","opcodes":"PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER 0xB6 LT DELEGATECALL LOG0 PUSH32 0xC65DC7AE86014ADF515712E21D1A4C8F096B508E5F53E04AF5E764736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"216:1047:112:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}"}},"contracts/WeightedPool.sol":{"WeightedPool":{"abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"numTokens","type":"uint256"},{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"},{"internalType":"string","name":"version","type":"string"}],"internalType":"struct WeightedPool.NewPoolParams","name":"params","type":"tuple"},{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BaseOutOfBounds","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":[],"name":"ExponentOutOfBounds","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidExponent","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"MaxInRatio","type":"error"},{"inputs":[],"name":"MaxOutRatio","type":"error"},{"inputs":[],"name":"MinWeight","type":"error"},{"inputs":[],"name":"NormalizedWeightInvariant","type":"error"},{"inputs":[],"name":"ProductOutOfBounds","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"inputs":[],"name":"WeightedPoolBptRateUnsupported","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"inputs":[],"name":"ZeroInvariant","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":[],"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[]"},{"internalType":"enum Rounding","name":"rounding","type":"uint8"}],"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":[],"name":"getAggregateFeePercentages","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","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":"getNormalizedWeights","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"getWeightedPoolDynamicData","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":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct WeightedPoolDynamicData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeightedPoolImmutableData","outputs":[{"components":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"}],"internalType":"struct WeightedPoolImmutableData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementNonce","outputs":[],"stateMutability":"nonpayable","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":"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"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_string_fromMemory":{"entryPoint":2366,"id":null,"parameterSlots":2,"returnSlots":1},"finalize_allocation":{"entryPoint":2331,"id":null,"parameterSlots":2,"returnSlots":0},"fun_toShortStringWithFallback":{"entryPoint":2838,"id":40208,"parameterSlots":1,"returnSlots":1},"fun_toShortStringWithFallback_9503":{"entryPoint":2451,"id":40208,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6102c08060405234610907576146c5803803809161001d828561091b565b833981016040828203126109075781516001600160401b0381116109075782019160a083830312610907576040519160a083016001600160401b038111848210176107105760405283516001600160401b038111610907578161008191860161093e565b835260208401516001600160401b03811161090757816100a291860161093e565b602084019081526040808601519085015260608501519094906001600160401b03811161090757810182601f82011215610907578051906001600160401b038211610710578160051b604051926100fc602083018561091b565b83526020808401918301019185831161090757602001905b82821061090b5750505060608501526080810151916001600160401b03831161090757602092610144920161093e565b608084018190529101516001600160a01b03811681036109075782519351604080519195919081016001600160401b03811182821017610710576040526001815260208101603160f81b815261019983610993565b610120526101a682610b16565b6101405282516020840120918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b03821117610710576040525190206080523060c0526101608290528051906001600160401b0382116107105760035490600182811c921680156108fd575b60208310146106f25781601f849311610892575b50602090601f831160011461080a575f926107ff575b50508160011b915f199060031b1c1916176003555b83516001600160401b03811161071057600454600181811c911680156107f5575b60208210146106f257601f8111610796575b506020601f821160011461072f5781929394955f92610724575b50508160011b915f199060031b1c1916176004555b610180528051906001600160401b0382116107105760055490600182811c92168015610706575b60208310146106f25781601f8493116106a4575b50602090601f831160011461061c575f92610611575b50508160011b915f199060031b1c1916176005555b60408101516101a09080825260608301515103610602575f905f5b81519260ff821693841015610494576060850151805185101561048057602090611fe08460051b1601015190662386f26fc100008210610471578181018091116103d95793806103ed57506101c0525b60ff8091169081146103d957600101610375565b634e487b7160e01b5f52601160045260245ffd5b600181036103ff57506101e0526103c5565b600281036104115750610200526103c5565b600381036104235750610220526103c5565b600481036104355750610240526103c5565b600581036104475750610260526103c5565b600681036104595750610280526103c5565b600714610467575b506103c5565b6102a0525f610461565b63bd39358360e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b670de0b6b3a76400009150036105f357604051613a789182610c4d833960805182612806015260a051826128d2015260c051826127d7015260e051826128550152610100518261287b0152610120518261112801526101405182611152015261016051828181610260015281816104880152818161065f01528181610d7e015281816110ed015281816114ae01528181611733015281816119d801528181612118015261276c01526101805182818161059d0152818161094a01528181610a1201528181610c7a0152611277015251816128fa01526101c0518181816125d2015261295101526101e0518181816125ff015261297e01526102005181818161262c01526129b701526102205181818161265901526129f00152610240518181816126860152612a2a0152610260518181816126b30152612a630152610280518181816126e00152612a9f01526102a05181818161270b0152612ad90152f35b631ce788a760e11b5f5260045ffd5b63aaad13f760e01b5f5260045ffd5b015190505f80610345565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091905b601f1984168510610689576001945083601f19811610610671575b505050811b0160055561035a565b01515f1960f88460031b161c191690555f8080610663565b81810151835560209485019460019093019290910190610648565b90915060055f5260205f20601f840160051c8101602085106106eb575b90849392915b601f830160051c820181106106dd57505061032f565b5f81558594506001016106c7565b50806106c1565b634e487b7160e01b5f52602260045260245ffd5b91607f169161031b565b634e487b7160e01b5f52604160045260245ffd5b015190505f806102df565b60045f5260205f20905f5b601f198416811061077e575060019394959683601f19811610610766575b505050811b016004556102f4565b01515f1960f88460031b161c191690555f8080610758565b9091602060018192858b01518155019301910161073a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101602084106107ee575b601f830160051c820181106107e35750506102c5565b5f81556001016107cd565b50806107cd565b90607f16906102b3565b015190505f8061027d565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510610877576001945083601f1981161061085f575b505050811b01600355610292565b01515f1960f88460031b161c191690555f8080610851565b81810151835560209485019460019093019290910190610836565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101602085106108f6575b90849392915b601f830160051c820181106108e8575050610267565b5f81558594506001016108d2565b50806108cc565b91607f1691610253565b5f80fd5b8151815260209182019101610114565b601f909101601f19168101906001600160401b0382119082101761071057604052565b81601f82011215610907578051906001600160401b0382116107105760405192610972601f8401601f19166020018561091b565b8284526020838301011161090757815f9260208093018386015e8301015290565b805160209081811015610a095750601f8251116109cb57808251920151908083106109bd57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610710575f54926001938481811c91168015610b0c575b838210146106f257601f8111610ad9575b5081601f8411600114610a7757509282939183925f94610a6c575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610a57565b919083601f1981165f8052845f20945f905b88838310610abf5750505010610aa7575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610a9a565b858701518855909601959485019487935090810190610a89565b5f805284601f845f20920160051c820191601f860160051c015b828110610b01575050610a3c565b5f8155018590610af3565b90607f1690610a2b565b805160209081811015610b405750601f8251116109cb57808251920151908083106109bd57501790565b9192916001600160401b0381116107105760019182548381811c91168015610c42575b828210146106f257601f8111610c0f575b5080601f8311600114610baf5750819293945f92610ba4575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610b8d565b90601f19831695845f52825f20925f905b888210610bf85750508385969710610be0575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f8080610bd3565b808785968294968601518155019501930190610bc0565b835f5283601f835f20920160051c820191601f850160051c015b828110610c37575050610b74565b5f8155018490610c29565b90607f1690610b6356fe6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611d905750826306fdde0314611ce1578263095ea7b314611c6357826316a0b3e014611a2a57826318160ddd14611a0e57826323b872dd1461196657826323de665114611934578263273c1adf1461191257826330adf81f146118d8578263313ce567146118bd5782633644e515146118a157826353b79bd7146116e557826354fd4d50146115f55782635687f2b814611596578263627cdcb91461156d578263654cf15d1461154b578263679aefce1461151457826370a082311461144057826372c981861461131f5782637ecebe00146112db57826381fa807c1461121a57826384b0196e146111115782638d928af8146110c157826395d89b4114610fbb578263984de9e814610df9578263a9059cbb14610ce6578263aa6ca80814610c21578263abb1dc44146109b8578263b156aa0a146108f1578263b677fa56146108cf578263c0bc6f33146105f6578263ce20ece7146105d6578263d335b0cf14610543578263d505accf146102d857508163dd62ed3e146101e5575063f89f27ed146101ae575f80fd5b346101e1575f6003193601126101e1576101dd906101ca6128f8565b9051918291602083526020830190611fa7565b0390f35b5f80fd5b82346101e157806003193601126101e1576020610200611e1c565b606461020a611e3f565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a575b6020925051908152f35b90506020823d6020116102c7575b816102b560209383611eca565b810103126101e1576020915190610290565b3d91506102a8565b513d5f823e3d90fd5b8390346101e1576003193601126101e1576102f1611e1c565b906102fa611e3f565b604435926084359060643560ff831683036101e157804211610519576103478273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9061041361040a875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103be81611e92565b5190206103c96127c0565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f35565b90929192612fc4565b168181036104ec5750505f84959661048460209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102cf57506104b857005b6020813d6020116104e4575b816104d160209383611eca565b810103126101e1576104e290612079565b005b3d91506104c4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101e1575f6003193601126101e1578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a576020925051908152f35b83346101e1575f6003193601126101e157602090516509184e72a0008152f35b9150346101e1575f6003193601126101e157825161061381611e92565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f916108ad575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f91610889575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa90811561087f575f91610852575b5089526107516120cf565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561084857928b9c926107e0926107f396955f9e9c9d9e9261081b575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190611fa7565b915190601f198b840301908b0152611fa7565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b61083a9250803d10610841575b6108328183611eca565b810190612482565b5f806107aa565b503d610828565b8c513d5f823e3d90fd5b90508a81813d8311610878575b6108698183611eca565b810103126101e157515f610746565b503d61085f565b8d513d5f823e3d90fd5b6108a591503d805f833e61089d8183611eca565b81019061228d565b90505f610703565b6108c991503d805f833e6108c18183611eca565b8101906125a4565b5f6106c0565b83346101e1575f6003193601126101e157602090516709b6e64a8ec600008152f35b8382346101e1575f6003193601126101e1578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610992575b5051918291602083526020830190611fa7565b6109a79192503d805f833e6108c18183611eca565b908361097f565b82513d5f823e3d90fd5b8382346101e1575f6003193601126101e15773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f935f925f925f95610aed575b5090610a6595949392918151968796608088526080880190611fda565b6020878203818901528080875193848152019601925f905b838210610aa957898803868b015289806101dd8b610a9b8c8c611fa7565b908382036060850152611fa7565b9184989950606086979860019395978397518051610ac681612023565b83528685820151168584015201511515898201520198019201899897969594929391610a7d565b955093509150503d805f853e610b038185611eca565b8301926080818503126101e15780519167ffffffffffffffff928381116101e15785610b30918401612185565b91602095868201518581116101e157820181601f820112156101e157805190610b5882611eed565b98610b6586519a8b611eca565b828a52808a01816060809502840101928584116101e1578201905b838210610bc5575050505050828201518581116101e15781610ba391840161222c565b9460608301519081116101e157610bba920161222c565b919492919386610a48565b84828703126101e157875190610bda82611e62565b825160028110156101e157825283830151908c821682036101e1578285928389950152610c088b8601612079565b8b820152815201910190610b80565b83513d5f823e3d90fd5b8382346101e1575f6003193601126101e1578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610cc2575b5051918291602083526020830190611fda565b610cdf9192503d805f833e610cd78183611eca565b810190612203565b9083610caf565b5082346101e157806003193601126101e1576020610d6492610d06611e1c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5575b6020905160018152f35b6020823d602011610de7575b81610dce60209383611eca565b810103126101e157610de1602092612079565b50610dab565b3d9150610dc1565b50513d5f823e3d90fd5b5082346101e157806003193601126101e157813567ffffffffffffffff81116101e157610e299036908401611f05565b60243560028110156101e157610e3e81612023565b610fb457825b610e4c6128f8565b9080600314610f5f5780600414610ed85780600114610e9557600214610e7f57605184634e487b7160e01b5f525260245ffd5b6020935090610e8d9161306f565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610ec55750602092610ebf91612b84565b90610e8f565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357610f1b600191610f15610f0387876120bb565b51610f0e888b6120bb565b5190612ba2565b90612c4c565b930192610ee7565b92509350508015610f38576020925090610e8f565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357670de0b6b3a7640000610fab600192610fa5610f9388886120bb565b51610f9e898c6120bb565b5190612e7d565b90612b71565b04930192610f6e565b6003610e44565b8382346101e1575f6003193601126101e157815191825f8354610fdd81612041565b90818452602095600191876001821691825f1461107c575050600114611020575b5050506101dd9291611011910385611eca565b51928284938452830190611df7565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061106457505050820101816110116101dd610ffe565b8054848a01860152889550879490930192810161104b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061101191506101dd9050610ffe565b83346101e1575f6003193601126101e1576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101e1575f6003193601126101e15761114c7f0000000000000000000000000000000000000000000000000000000000000000612c8d565b926111767f0000000000000000000000000000000000000000000000000000000000000000612dbf565b815192602084019084821067ffffffffffffffff8311176112075750916111e7916101dd949382525f84526111da82519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611df7565b9186830390870152611df7565b904660608501523060808501525f60a085015283820360c0850152611fa7565b604190634e487b7160e01b5f525260245ffd5b8382346101e1575f6003193601126101e1578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f926112be575b505060608282015191015182519182526020820152f35b6112d49250803d10610841576108328183611eca565b82806112a7565b83346101e15760206003193601126101e15760209073ffffffffffffffffffffffffffffffffffffffff61130d611e1c565b165f5260028252805f20549051908152f35b8382346101e15760209260031984813601126101e15782359167ffffffffffffffff918284116101e15783360301126101e15783519161135e83611e92565b8084013560028110156101e157835260248101358684015260448101358281116101e15761139190853691840101611f05565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101e15760a084015260c4810135908282116101e1570192366023850112156101e15780840135918211611207575083519061140c86601f19601f8401160183611eca565b80825236602482860101116101e15785815f926024610e8d9701838601378301015260c082015261143b612755565b6122d1565b8382346101e157602091826003193601126101e1578261145e611e1c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610def575f926114e5575b5051908152f35b9091508281813d831161150d575b6114fd8183611eca565b810103126101e1575190836114de565b503d6114f3565b50346101e1575f6003193601126101e1577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101e1575f6003193601126101e1576020905167016345785d8a00008152f35b346101e1575f6003193601126101e157335f908152600260205260409020805460018101909155005b83346101e15760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115c836611f65565b9391946115d3612755565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101e1575f6003193601126101e15780516005549091825f61161884612041565b808352602094600190866001821691825f146116a557505060011461164a575b50506101dd9291611011910385611eca565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b82841061168d5750505082010181611011611638565b8054848a018601528895508794909301928101611677565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506110119050611638565b5082346101e1575f6003193601126101e15780519061170382611e62565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561189757905f9291839161187d575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611873575f9161185a575b5081959295526117e96128f8565b84528251948086526080860192519260608288015283518091528160a088019401915f5b8281106118445788806101dd8a8a6118338b8b51601f1993848884030190880152611fa7565b915190848303016060850152611fa7565b83518a168652948101949281019260010161180d565b61186e91503d805f833e61089d8183611eca565b6117db565b84513d5f823e3d90fd5b61189191503d8085833e610cd78183611eca565b8a611798565b86513d5f823e3d90fd5b83346101e1575f6003193601126101e157602090610e8d6127c0565b83346101e1575f6003193601126101e1576020905160128152f35b83346101e1575f6003193601126101e157602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101e1575f6003193601126101e157602090516729a2241af62c00008152f35b83346101e15760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115c836611f65565b5082346101e15760205f608461197b36611f65565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5576020905160018152f35b83346101e1575f6003193601126101e157602090610e8d6120cf565b8382346101e15760606003193601126101e157803567ffffffffffffffff81116101e157611a5b9036908301611f05565b9160243592611a77611a7085604435936120bb565b51946125ca565b60019081831115611c5d5760025b80600314611be75780600414611b4e5780600114611b0c57600214611ab757605185634e487b7160e01b5f525260245ffd5b909192938115611ae65750610e8d9260209592610f15926ec097ce7bc90715b34b9f0fffffffff040190612ba2565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611b3b575092610f15610e8d926020956ec097ce7bc90715b34b9f10000000000490612ba2565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611ba7575b5050508115611b81575092610f15610e8d9260209590612ba2565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611be1579082611bd98193610f15611bcf89866120bb565b51610f0e8a612086565b950192611b61565b93611b66565b509192939080670de0b6b3a7640000935f925b611c19575050508115611b81575092610f15610e8d9260209590612ba2565b909193670de0b6b3a764000051851015611be1579082670de0b6b3a7640000611c548294610fa5611c4a8a876120bb565b51610f9e8b612086565b04950192611bfa565b81611a85565b5082346101e157806003193601126101e1576020610d6492611c83611e1c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101e1575f6003193601126101e15780516003549091825f611d0484612041565b808352602094600190866001821691825f146116a5575050600114611d355750506101dd9291611011910385611eca565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611d785750505082010181611011611638565b8054848a018601528895508794909301928101611d62565b82346101e15760206003193601126101e15735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101e1577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6060810190811067ffffffffffffffff821117611e7e57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff821117611e7e57604052565b6040810190811067ffffffffffffffff821117611e7e57604052565b90601f601f19910116810190811067ffffffffffffffff821117611e7e57604052565b67ffffffffffffffff8111611e7e5760051b60200190565b9080601f830112156101e1576020908235611f1f81611eed565b93611f2d6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b828210611f56575050505090565b81358152908301908301611f48565b60031960609101126101e15773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101e1579160243590811681036101e1579060443590565b9081518082526020808093019301915f5b828110611fc6575050505090565b835185529381019392810192600101611fb8565b9081518082526020808093019301915f5b828110611ff9575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611feb565b6002111561202d57565b634e487b7160e01b5f52602160045260245ffd5b90600182811c9216801561206f575b602083101461205b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612050565b519081151582036101e157565b670de0b6b3a7640000518110156120a75760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120a75760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561217a575f9161214b575090565b90506020813d602011612172575b8161216660209383611eca565b810103126101e1575190565b3d9150612159565b6040513d5f823e3d90fd5b9080601f830112156101e1578151906020916121a081611eed565b936121ae6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b8282106121d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101e15781529083019083016121c9565b906020828203126101e157815167ffffffffffffffff81116101e1576122299201612185565b90565b9080601f830112156101e15781519060209161224781611eed565b936122556040519586611eca565b81855260208086019260051b8201019283116101e157602001905b82821061227e575050505090565b81518152908301908301612270565b9190916040818403126101e15780519267ffffffffffffffff938481116101e157816122ba91840161222c565b9360208301519081116101e157612229920161222c565b604081019081516122e860608301918251906120bb565b519251916122fc60808201938451906120bb565b5191815161230981612023565b61231281612023565b6123d15761232c612325602092516125ca565b94516125ca565b910151670de0b6b3a7640000948561234382612b3d565b0482116123a95761235761235d9282612b30565b9061306f565b848402938085048614901517156123955761237e6123849261239195612b84565b90612ba2565b8381810391100290612b71565b0490565b634e487b7160e01b5f52601160045260245ffd5b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6123eb6123e460209295939495516125ca565b92516125ca565b920151670de0b6b3a764000061240085612b3d565b04811161245a578303908382116123955761242161237e926124279561306f565b9261306f565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123955761222991612c4c565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101e15760405192610140928385019267ffffffffffffffff9086851082861117611e7e576080136101e1576101c0860190811184821017611e7e576040526124d481612079565b83526124e260208201612079565b9261016093848701526124f760408301612079565b92610180938488015261250c60608401612079565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101e15760808601526101008082015163ffffffff811681036101e15761259d946125939160a08901526125876101209761257b898701612079565b60c08b01528501612079565b60e08901528301612079565b9086015201612079565b9082015290565b906020828203126101e157815167ffffffffffffffff81116101e157612229920161222c565b806125f457507f000000000000000000000000000000000000000000000000000000000000000090565b6001810361262157507f000000000000000000000000000000000000000000000000000000000000000090565b6002810361264e57507f000000000000000000000000000000000000000000000000000000000000000090565b6003810361267b57507f000000000000000000000000000000000000000000000000000000000000000090565b600481036126a857507f000000000000000000000000000000000000000000000000000000000000000090565b600581036126d557507f000000000000000000000000000000000000000000000000000000000000000090565b6006810361270257507f000000000000000000000000000000000000000000000000000000000000000090565b60070361272d577f000000000000000000000000000000000000000000000000000000000000000090565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361279457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128cf575b15612828577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e7e5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127ff565b7f000000000000000000000000000000000000000000000000000000000000000061292281611eed565b906129306040519283611eca565b80825261293c81611eed565b601f196020840191013682378251156120a7577f000000000000000000000000000000000000000000000000000000000000000090528151600110156120a7577f000000000000000000000000000000000000000000000000000000000000000060408301526002811115612b2c578151600210156120a7577f000000000000000000000000000000000000000000000000000000000000000060608301526003811115612b2c578151600310156120a7577f0000000000000000000000000000000000000000000000000000000000000000608083015260049081811115612b27578251821015612b14577f000000000000000000000000000000000000000000000000000000000000000060a08401526005811115612b2757825160051015612b14577f000000000000000000000000000000000000000000000000000000000000000060c08401526006811115612b2757825160061015612b14576007907f000000000000000000000000000000000000000000000000000000000000000060e085015211612acc575090565b815160071015612b0157507f000000000000000000000000000000000000000000000000000000000000000061010082015290565b603290634e487b7160e01b5f525260245ffd5b603282634e487b7160e01b5f525260245ffd5b505090565b5090565b9190820180921161239557565b90670429d069189e00009182810292818404149015171561239557565b906127109182810292818404149015171561239557565b8181029291811591840414171561239557565b8115612b8e570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612bb957505090565b671bc16d674ec800008103612bd45750508061222991612c4c565b673782dace9d9000008103612bf8575050612bf28161222992612c4c565b80612c4c565b612c02919261310b565b906001612c0e83612b5a565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116123955761222991612b30565b90612c5691612b71565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b60ff8114612ce15760ff811690601f8211612cb95760405191612caf83611eae565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612cf383612041565b80835292602090600190818116908115612d7c5750600114612d1e575b505061222992500382611eca565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612d6457506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612d49565b9050602093506122299592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612d10565b60ff8114612de15760ff811690601f8211612cb95760405191612caf83611eae565b506040515f81600191600154612df681612041565b8084529360209160018116908115612d7c5750600114612e1e57505061222992500382611eca565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612e6557506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612e4a565b670de0b6b3a764000091808303612e945750905090565b8290671bc16d674ec800008103612eb15750508061239191612b71565b673782dace9d9000008103612ed55750612ece8261239193612b71565b0480612b71565b9050612ee09161310b565b612ee981612b5a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848301040190151502906001820180831161239557811015612f30575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fb9579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561217a575f5173ffffffffffffffffffffffffffffffffffffffff811615612faf57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561202d5780612fd6575050565b60018103613006577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361303a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146130445750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156130bf57670de0b6b3a764000091828102928184041490151715612395576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612b8e576ec097ce7bc90715b34b9f10000000000590565b8115612b8e570590565b908015613a34578115613a2e578160ff1c613a0657770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156139de5781670c7d713b49da000012806139cd575b1561366a57670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906131a4908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613101565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580613657575b1561362f5781908212158061361c575b156135f4575f915f81126135e5575b506064906806f05b59d3b20000008112613582577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215613549575b6856bc75e2d63100000081121561350f575b682b5e3af16b188000008112156134d7575b6815af1d78b58c40000081121561349f575b680ad78ebc5ac6200000811215613468575b82811215613431575b6802b5e3af16b18800008112156133fa575b68015af1d78b58c400008112156133c3575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f1461222957612229906130e7565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590613344565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590613332565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613320565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613317565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613305565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906132f3565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906132e1565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016132cf565b6803782dace9d900000081126135d2577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132ba565b68056bc75e2d63100000826001926132ba565b600192505f039050606461325e565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561324f565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561323f565b81670de0b6b3a7640000925f918481126139b7575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561398c575b73011798004d755d3c8bc8e03204cf44619e00000082121561396b575b820290808302906e01855144814a7ff805980ff00840009081831215613948575b50506b02df0ab5a80a22c61ab5a70080821215613928575b50693f1fce3da636ea5cf85080821215613908575b50690127fa27722cc06cc5e2808212156138e8575b5068280e60114edb805d03808212156138c8575b50680ebc5fb41746121110808212156138b1575b506808f00f760a4b2db55d80821215613891575b506806f5f177578893793780821215613871575b506806248f33704b28660380821215613852575b506805c548670b9510e7ac80821215613833575b506137e068056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613101565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f1461382e575f035b02613213565b613828565b68056bc75e2d631000006756bc75e2d63100009202059101905f6137a4565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613790565b68056bc75e2d6310000068015af1d78b58c400009202059101905f61377c565b68056bc75e2d631000006802b5e3af16b18800009202059101905f613768565b68056bc75e2d63100000809202059101905f613754565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f613740565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61372c565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613717565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613702565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f806136ea565b906b1425982cf597cd205cef73806803782dace9d9000000910591016136c9565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b20000006136ac565b90506139c391506130e7565b600190606461367f565b50670f43fc2c04ee00008212613151565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212204b1676dd274814fed4fff49a83b5404b448d288d13e3f2848873c7c36baed2cf64736f6c634300081a0033","opcodes":"PUSH2 0x2C0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x907 JUMPI PUSH2 0x46C5 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1D DUP3 DUP6 PUSH2 0x91B JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP3 DUP3 SUB SLT PUSH2 0x907 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP3 ADD SWAP2 PUSH1 0xA0 DUP4 DUP4 SUB SLT PUSH2 0x907 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0xA0 DUP4 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP5 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 PUSH2 0x81 SWAP2 DUP7 ADD PUSH2 0x93E JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 PUSH2 0xA2 SWAP2 DUP7 ADD PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP1 SWAP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x907 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI DUP2 PUSH1 0x5 SHL PUSH1 0x40 MLOAD SWAP3 PUSH2 0xFC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x91B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x907 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x90B JUMPI POP POP POP PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x907 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x144 SWAP3 ADD PUSH2 0x93E JUMP JUMPDEST PUSH1 0x80 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x907 JUMPI DUP3 MLOAD SWAP4 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP6 SWAP2 SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE PUSH2 0x199 DUP4 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x1A6 DUP3 PUSH2 0xB16 JUMP JUMPDEST PUSH2 0x140 MSTORE DUP3 MLOAD PUSH1 0x20 DUP5 ADD KECCAK256 SWAP2 DUP3 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 DUP1 PUSH2 0x100 MSTORE CHAINID PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x3 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x8FD JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x6F2 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x892 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x80A JUMPI PUSH0 SWAP3 PUSH2 0x7FF JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x3 SSTORE JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7F5 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x796 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x72F JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH0 SWAP3 PUSH2 0x724 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST PUSH2 0x180 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x5 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x706 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x6F2 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x6A4 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x61C JUMPI PUSH0 SWAP3 PUSH2 0x611 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x5 SSTORE JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0x1A0 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x60 DUP4 ADD MLOAD MLOAD SUB PUSH2 0x602 JUMPI PUSH0 SWAP1 PUSH0 JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0xFF DUP3 AND SWAP4 DUP5 LT ISZERO PUSH2 0x494 JUMPI PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD DUP6 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x1FE0 DUP5 PUSH1 0x5 SHL AND ADD ADD MLOAD SWAP1 PUSH7 0x2386F26FC10000 DUP3 LT PUSH2 0x471 JUMPI DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x3D9 JUMPI SWAP4 DUP1 PUSH2 0x3ED JUMPI POP PUSH2 0x1C0 MSTORE JUMPDEST PUSH1 0xFF DUP1 SWAP2 AND SWAP1 DUP2 EQ PUSH2 0x3D9 JUMPI PUSH1 0x1 ADD PUSH2 0x375 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x3FF JUMPI POP PUSH2 0x1E0 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x411 JUMPI POP PUSH2 0x200 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x423 JUMPI POP PUSH2 0x220 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x435 JUMPI POP PUSH2 0x240 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x447 JUMPI POP PUSH2 0x260 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x459 JUMPI POP PUSH2 0x280 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x7 EQ PUSH2 0x467 JUMPI JUMPDEST POP PUSH2 0x3C5 JUMP JUMPDEST PUSH2 0x2A0 MSTORE PUSH0 PUSH2 0x461 JUMP JUMPDEST PUSH4 0xBD393583 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 POP SUB PUSH2 0x5F3 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3A78 SWAP2 DUP3 PUSH2 0xC4D DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 PUSH2 0x2806 ADD MSTORE PUSH1 0xA0 MLOAD DUP3 PUSH2 0x28D2 ADD MSTORE PUSH1 0xC0 MLOAD DUP3 PUSH2 0x27D7 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 PUSH2 0x2855 ADD MSTORE PUSH2 0x100 MLOAD DUP3 PUSH2 0x287B ADD MSTORE PUSH2 0x120 MLOAD DUP3 PUSH2 0x1128 ADD MSTORE PUSH2 0x140 MLOAD DUP3 PUSH2 0x1152 ADD MSTORE PUSH2 0x160 MLOAD DUP3 DUP2 DUP2 PUSH2 0x260 ADD MSTORE DUP2 DUP2 PUSH2 0x488 ADD MSTORE DUP2 DUP2 PUSH2 0x65F ADD MSTORE DUP2 DUP2 PUSH2 0xD7E ADD MSTORE DUP2 DUP2 PUSH2 0x10ED ADD MSTORE DUP2 DUP2 PUSH2 0x14AE ADD MSTORE DUP2 DUP2 PUSH2 0x1733 ADD MSTORE DUP2 DUP2 PUSH2 0x19D8 ADD MSTORE DUP2 DUP2 PUSH2 0x2118 ADD MSTORE PUSH2 0x276C ADD MSTORE PUSH2 0x180 MLOAD DUP3 DUP2 DUP2 PUSH2 0x59D ADD MSTORE DUP2 DUP2 PUSH2 0x94A ADD MSTORE DUP2 DUP2 PUSH2 0xA12 ADD MSTORE DUP2 DUP2 PUSH2 0xC7A ADD MSTORE PUSH2 0x1277 ADD MSTORE MLOAD DUP2 PUSH2 0x28FA ADD MSTORE PUSH2 0x1C0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x25D2 ADD MSTORE PUSH2 0x2951 ADD MSTORE PUSH2 0x1E0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x25FF ADD MSTORE PUSH2 0x297E ADD MSTORE PUSH2 0x200 MLOAD DUP2 DUP2 DUP2 PUSH2 0x262C ADD MSTORE PUSH2 0x29B7 ADD MSTORE PUSH2 0x220 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2659 ADD MSTORE PUSH2 0x29F0 ADD MSTORE PUSH2 0x240 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2686 ADD MSTORE PUSH2 0x2A2A ADD MSTORE PUSH2 0x260 MLOAD DUP2 DUP2 DUP2 PUSH2 0x26B3 ADD MSTORE PUSH2 0x2A63 ADD MSTORE PUSH2 0x280 MLOAD DUP2 DUP2 DUP2 PUSH2 0x26E0 ADD MSTORE PUSH2 0x2A9F ADD MSTORE PUSH2 0x2A0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x270B ADD MSTORE PUSH2 0x2AD9 ADD MSTORE RETURN JUMPDEST PUSH4 0x1CE788A7 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xAAAD13F7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x345 JUMP JUMPDEST PUSH1 0x5 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x689 JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x671 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x5 SSTORE PUSH2 0x35A JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x663 JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x648 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x5 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x6EB JUMPI JUMPDEST SWAP1 DUP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x6DD JUMPI POP POP PUSH2 0x32F JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST POP DUP1 PUSH2 0x6C1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x31B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH2 0x77E JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x766 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH2 0x2F4 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x758 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH2 0x73A JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP5 LT PUSH2 0x7EE JUMPI JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x7E3 JUMPI POP POP PUSH2 0x2C5 JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x7CD JUMP JUMPDEST POP DUP1 PUSH2 0x7CD JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x2B3 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x3 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x877 JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x85F JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH2 0x292 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x851 JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x836 JUMP JUMPDEST PUSH1 0x3 PUSH0 MSTORE SWAP1 SWAP2 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x8F6 JUMPI JUMPDEST SWAP1 DUP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x8E8 JUMPI POP POP PUSH2 0x267 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP PUSH1 0x1 ADD PUSH2 0x8D2 JUMP JUMPDEST POP DUP1 PUSH2 0x8CC JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x253 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x114 JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x907 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x972 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x91B JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x907 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xA09 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x9CB JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x9BD JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xB0C JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xAD9 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0xA77 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0xA6C JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xA57 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0xABF JUMPI POP POP POP LT PUSH2 0xAA7 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xA9A JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0xA89 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0xB01 JUMPI POP POP PUSH2 0xA3C JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0xAF3 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xA2B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xB40 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x9CB JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x9BD JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xC42 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xC0F JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xBAF JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0xBA4 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0xB8D JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0xBF8 JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0xBE0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xBD3 JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0xBC0 JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0xC37 JUMPI POP POP PUSH2 0xB74 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0xC29 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xB63 JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH4 0x1FFC9A7 EQ PUSH2 0x1D90 JUMPI POP DUP3 PUSH4 0x6FDDE03 EQ PUSH2 0x1CE1 JUMPI DUP3 PUSH4 0x95EA7B3 EQ PUSH2 0x1C63 JUMPI DUP3 PUSH4 0x16A0B3E0 EQ PUSH2 0x1A2A JUMPI DUP3 PUSH4 0x18160DDD EQ PUSH2 0x1A0E JUMPI DUP3 PUSH4 0x23B872DD EQ PUSH2 0x1966 JUMPI DUP3 PUSH4 0x23DE6651 EQ PUSH2 0x1934 JUMPI DUP3 PUSH4 0x273C1ADF EQ PUSH2 0x1912 JUMPI DUP3 PUSH4 0x30ADF81F EQ PUSH2 0x18D8 JUMPI DUP3 PUSH4 0x313CE567 EQ PUSH2 0x18BD JUMPI DUP3 PUSH4 0x3644E515 EQ PUSH2 0x18A1 JUMPI DUP3 PUSH4 0x53B79BD7 EQ PUSH2 0x16E5 JUMPI DUP3 PUSH4 0x54FD4D50 EQ PUSH2 0x15F5 JUMPI DUP3 PUSH4 0x5687F2B8 EQ PUSH2 0x1596 JUMPI DUP3 PUSH4 0x627CDCB9 EQ PUSH2 0x156D JUMPI DUP3 PUSH4 0x654CF15D EQ PUSH2 0x154B JUMPI DUP3 PUSH4 0x679AEFCE EQ PUSH2 0x1514 JUMPI DUP3 PUSH4 0x70A08231 EQ PUSH2 0x1440 JUMPI DUP3 PUSH4 0x72C98186 EQ PUSH2 0x131F JUMPI DUP3 PUSH4 0x7ECEBE00 EQ PUSH2 0x12DB JUMPI DUP3 PUSH4 0x81FA807C EQ PUSH2 0x121A JUMPI DUP3 PUSH4 0x84B0196E EQ PUSH2 0x1111 JUMPI DUP3 PUSH4 0x8D928AF8 EQ PUSH2 0x10C1 JUMPI DUP3 PUSH4 0x95D89B41 EQ PUSH2 0xFBB JUMPI DUP3 PUSH4 0x984DE9E8 EQ PUSH2 0xDF9 JUMPI DUP3 PUSH4 0xA9059CBB EQ PUSH2 0xCE6 JUMPI DUP3 PUSH4 0xAA6CA808 EQ PUSH2 0xC21 JUMPI DUP3 PUSH4 0xABB1DC44 EQ PUSH2 0x9B8 JUMPI DUP3 PUSH4 0xB156AA0A EQ PUSH2 0x8F1 JUMPI DUP3 PUSH4 0xB677FA56 EQ PUSH2 0x8CF JUMPI DUP3 PUSH4 0xC0BC6F33 EQ PUSH2 0x5F6 JUMPI DUP3 PUSH4 0xCE20ECE7 EQ PUSH2 0x5D6 JUMPI DUP3 PUSH4 0xD335B0CF EQ PUSH2 0x543 JUMPI DUP3 PUSH4 0xD505ACCF EQ PUSH2 0x2D8 JUMPI POP DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x1E5 JUMPI POP PUSH4 0xF89F27ED EQ PUSH2 0x1AE JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x1DD SWAP1 PUSH2 0x1CA PUSH2 0x28F8 JUMP JUMPDEST SWAP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0x200 PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x20A PUSH2 0x1E3F JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C7 JUMPI JUMPDEST DUP2 PUSH2 0x2B5 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x290 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2A8 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 SWAP1 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x2F1 PUSH2 0x1E1C JUMP JUMPDEST SWAP1 PUSH2 0x2FA PUSH2 0x1E3F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP4 AND DUP4 SUB PUSH2 0x1E1 JUMPI DUP1 TIMESTAMP GT PUSH2 0x519 JUMPI PUSH2 0x347 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x413 PUSH2 0x40A DUP8 MLOAD SWAP6 PUSH1 0x20 DUP8 ADD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 SWAP6 DUP7 DUP10 AND SWAP8 DUP9 DUP14 DUP5 ADD MSTORE DUP8 DUP13 AND PUSH1 0x60 DUP5 ADD MSTORE DUP14 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x3BE DUP2 PUSH2 0x1E92 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x3C9 PUSH2 0x27C0 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x2F35 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2FC4 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x4EC JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x484 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI POP PUSH2 0x4B8 JUMPI STOP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4E4 JUMPI JUMPDEST DUP2 PUSH2 0x4D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0x4E2 SWAP1 PUSH2 0x2079 JUMP JUMPDEST STOP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4C4 JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST DUP7 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH6 0x9184E72A000 DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 MLOAD PUSH2 0x613 DUP2 PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP6 DUP2 ADD SWAP3 PUSH0 DUP5 MSTORE PUSH1 0x60 DUP3 ADD PUSH0 DUP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP2 PUSH0 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 PUSH0 DUP6 MSTORE PUSH1 0xC0 DUP2 ADD SWAP6 PUSH0 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 DUP12 MLOAD PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x8AD JUMPI JUMPDEST POP DUP4 MSTORE DUP12 MLOAD PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x889 JUMPI JUMPDEST POP DUP5 MSTORE DUP12 MLOAD PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE DUP11 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x852 JUMPI JUMPDEST POP DUP10 MSTORE PUSH2 0x751 PUSH2 0x20CF JUMP JUMPDEST DUP6 MSTORE DUP12 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE DUP2 PUSH1 0x24 PUSH2 0x1A0 SWAP5 DUP6 SWAP4 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x848 JUMPI SWAP3 DUP12 SWAP13 SWAP3 PUSH2 0x7E0 SWAP3 PUSH2 0x7F3 SWAP7 SWAP6 PUSH0 SWAP15 SWAP13 SWAP14 SWAP15 SWAP3 PUSH2 0x81B JUMPI JUMPDEST POP POP DUP11 DUP2 ADD MLOAD ISZERO ISZERO DUP9 MSTORE PUSH2 0x120 PUSH2 0x100 SWAP2 DUP3 DUP2 ADD MLOAD ISZERO ISZERO DUP12 MSTORE ADD MLOAD ISZERO ISZERO DUP11 MSTORE DUP4 MLOAD SWAP14 DUP14 DUP16 SWAP15 SWAP4 DUP16 SWAP5 DUP6 MSTORE MLOAD SWAP4 ADD MSTORE DUP13 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 PUSH1 0x1F NOT DUP12 DUP5 SUB ADD SWAP1 DUP12 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x60 DUP9 ADD MSTORE MLOAD PUSH1 0x80 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH2 0x83A SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI JUMPDEST PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2482 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7AA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x828 JUMP JUMPDEST DUP13 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x878 JUMPI JUMPDEST PUSH2 0x869 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD PUSH0 PUSH2 0x746 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x85F JUMP JUMPDEST DUP14 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8A5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x228D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x8C9 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25A4 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x9B6E64A8EC60000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0x992 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST PUSH2 0x9A7 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x97F JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD SWAP2 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP4 PUSH0 SWAP3 PUSH0 SWAP3 PUSH0 SWAP6 PUSH2 0xAED JUMPI JUMPDEST POP SWAP1 PUSH2 0xA65 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xAA9 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1DD DUP12 PUSH2 0xA9B DUP13 DUP13 PUSH2 0x1FA7 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0xAC6 DUP2 PUSH2 0x2023 JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0xA7D JUMP JUMPDEST SWAP6 POP SWAP4 POP SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xB03 DUP2 DUP6 PUSH2 0x1ECA JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x1E1 JUMPI DUP6 PUSH2 0xB30 SWAP2 DUP5 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP6 DUP7 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0xB58 DUP3 PUSH2 0x1EED JUMP JUMPDEST SWAP9 PUSH2 0xB65 DUP7 MLOAD SWAP11 DUP12 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP11 MSTORE DUP1 DUP11 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x1E1 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xBC5 JUMPI POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0xBA3 SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xBBA SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 PUSH2 0xA48 JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x1E1 JUMPI DUP8 MLOAD SWAP1 PUSH2 0xBDA DUP3 PUSH2 0x1E62 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP13 DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0xC08 DUP12 DUP7 ADD PUSH2 0x2079 JUMP JUMPDEST DUP12 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xB80 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0xCC2 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0xCDF SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2203 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xCAF JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0xD06 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDE7 JUMPI JUMPDEST DUP2 PUSH2 0xDCE PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0xDE1 PUSH1 0x20 SWAP3 PUSH2 0x2079 JUMP JUMPDEST POP PUSH2 0xDAB JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDC1 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xE29 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0xE3E DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0xFB4 JUMPI DUP3 JUMPDEST PUSH2 0xE4C PUSH2 0x28F8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x3 EQ PUSH2 0xF5F JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0xED8 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0xE95 JUMPI PUSH1 0x2 EQ PUSH2 0xE7F JUMPI PUSH1 0x51 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 SWAP4 POP SWAP1 PUSH2 0xE8D SWAP2 PUSH2 0x306F JUMP JUMPDEST SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xEC5 JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xEBF SWAP2 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x11 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH2 0xF1B PUSH1 0x1 SWAP2 PUSH2 0xF15 PUSH2 0xF03 DUP8 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP9 DUP12 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xEE7 JUMP JUMPDEST SWAP3 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0xF38 JUMPI PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0xE8F JUMP JUMPDEST DUP3 PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xFAB PUSH1 0x1 SWAP3 PUSH2 0xFA5 PUSH2 0xF93 DUP9 DUP9 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP10 DUP13 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2E7D JUMP JUMPDEST SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP4 ADD SWAP3 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x3 PUSH2 0xE44 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xFDD DUP2 PUSH2 0x2041 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x107C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1020 JUMPI JUMPDEST POP POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x1064 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1DD PUSH2 0xFFE JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x104B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x1011 SWAP2 POP PUSH2 0x1DD SWAP1 POP PUSH2 0xFFE JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x114C PUSH32 0x0 PUSH2 0x2C8D JUMP JUMPDEST SWAP3 PUSH2 0x1176 PUSH32 0x0 PUSH2 0x2DBF JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x1207 JUMPI POP SWAP2 PUSH2 0x11E7 SWAP2 PUSH2 0x1DD SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x11DA DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DF7 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP3 PUSH2 0x12BE JUMPI JUMPDEST POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x12D4 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP1 PUSH2 0x12A7 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x130D PUSH2 0x1E1C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x3 NOT DUP5 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x1E1 JUMPI DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1E1 JUMPI DUP4 MLOAD SWAP2 PUSH2 0x135E DUP4 PUSH2 0x1E92 JUMP JUMPDEST DUP1 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP4 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD DUP7 DUP5 ADD MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1391 SWAP1 DUP6 CALLDATASIZE SWAP2 DUP5 ADD ADD PUSH2 0x1F05 JUMP JUMPDEST DUP6 DUP5 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 DUP3 GT PUSH2 0x1E1 JUMPI ADD SWAP3 CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 DUP5 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x1207 JUMPI POP DUP4 MLOAD SWAP1 PUSH2 0x140C DUP7 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1E1 JUMPI DUP6 DUP2 PUSH0 SWAP3 PUSH1 0x24 PUSH2 0xE8D SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x143B PUSH2 0x2755 JUMP JUMPDEST PUSH2 0x22D1 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 PUSH2 0x145E PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xDEF JUMPI PUSH0 SWAP3 PUSH2 0x14E5 JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x150D JUMPI JUMPDEST PUSH2 0x14FD DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14DE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F3 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH32 0x18E79A2000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x16345785D8A0000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x15D3 PUSH2 0x2755 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1618 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x164A JUMPI JUMPDEST POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x168D JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1677 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x1011 SWAP1 POP PUSH2 0x1638 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1703 DUP3 PUSH2 0x1E62 JUMP JUMPDEST PUSH1 0x60 DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP4 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP2 DUP5 ADD SWAP3 PUSH1 0x60 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH32 0x0 AND SWAP1 DUP5 MLOAD PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1897 JUMPI SWAP1 PUSH0 SWAP3 SWAP2 DUP4 SWAP2 PUSH2 0x187D JUMPI JUMPDEST POP DUP9 MSTORE PUSH1 0x24 DUP7 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1873 JUMPI PUSH0 SWAP2 PUSH2 0x185A JUMPI JUMPDEST POP DUP2 SWAP6 SWAP3 SWAP6 MSTORE PUSH2 0x17E9 PUSH2 0x28F8 JUMP JUMPDEST DUP5 MSTORE DUP3 MLOAD SWAP5 DUP1 DUP7 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 MLOAD SWAP3 PUSH1 0x60 DUP3 DUP9 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH1 0xA0 DUP9 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1844 JUMPI DUP9 DUP1 PUSH2 0x1DD DUP11 DUP11 PUSH2 0x1833 DUP12 DUP12 MLOAD PUSH1 0x1F NOT SWAP4 DUP5 DUP9 DUP5 SUB ADD SWAP1 DUP9 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST DUP4 MLOAD DUP11 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x180D JUMP JUMPDEST PUSH2 0x186E SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST PUSH2 0x17DB JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1891 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP11 PUSH2 0x1798 JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x27C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x29A2241AF62C0000 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x197B CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x20CF JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1A5B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1F05 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH2 0x1A77 PUSH2 0x1A70 DUP6 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP5 PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP2 DUP4 GT ISZERO PUSH2 0x1C5D JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x3 EQ PUSH2 0x1BE7 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0x1B4E JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x1B0C JUMPI PUSH1 0x2 EQ PUSH2 0x1AB7 JUMPI PUSH1 0x51 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP2 ISZERO PUSH2 0x1AE6 JUMPI POP PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0xF15 SWAP3 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP DUP1 SWAP3 SWAP4 SWAP5 SWAP2 POP ISZERO PUSH2 0x1B3B JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1BA7 JUMPI JUMPDEST POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH2 0x1BD9 DUP2 SWAP4 PUSH2 0xF15 PUSH2 0x1BCF DUP10 DUP7 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP11 PUSH2 0x2086 JUMP JUMPDEST SWAP6 ADD SWAP3 PUSH2 0x1B61 JUMP JUMPDEST SWAP4 PUSH2 0x1B66 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1C19 JUMPI POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C54 DUP3 SWAP5 PUSH2 0xFA5 PUSH2 0x1C4A DUP11 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP12 PUSH2 0x2086 JUMP JUMPDEST DIV SWAP6 ADD SWAP3 PUSH2 0x1BFA JUMP JUMPDEST DUP2 PUSH2 0x1A85 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0x1C83 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1D04 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1D35 JUMPI POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1D78 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1D62 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1E1 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E7E JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1F1F DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x1F2D PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1F56 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1F48 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FC6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FB8 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FF9 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FEB JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x202D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x206F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x205B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2050 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MLOAD DUP2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x5 SHL PUSH8 0xDE0B6B3A7640020 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x217A JUMPI PUSH0 SWAP2 PUSH2 0x214B JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2172 JUMPI JUMPDEST DUP2 PUSH2 0x2166 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2159 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x21A0 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x21AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x21D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x21C9 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2247 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x2255 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x227E JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2270 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0x22BA SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 MLOAD PUSH2 0x22E8 PUSH1 0x60 DUP4 ADD SWAP2 DUP3 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP2 PUSH2 0x22FC PUSH1 0x80 DUP3 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP2 DUP2 MLOAD PUSH2 0x2309 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x2312 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x23D1 JUMPI PUSH2 0x232C PUSH2 0x2325 PUSH1 0x20 SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP2 ADD MLOAD PUSH8 0xDE0B6B3A7640000 SWAP5 DUP6 PUSH2 0x2343 DUP3 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP3 GT PUSH2 0x23A9 JUMPI PUSH2 0x2357 PUSH2 0x235D SWAP3 DUP3 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x306F JUMP JUMPDEST DUP5 DUP5 MUL SWAP4 DUP1 DUP6 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH2 0x237E PUSH2 0x2384 SWAP3 PUSH2 0x2391 SWAP6 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x23EB PUSH2 0x23E4 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP5 SWAP6 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x2400 DUP6 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP2 GT PUSH2 0x245A JUMPI DUP4 SUB SWAP1 DUP4 DUP3 GT PUSH2 0x2395 JUMPI PUSH2 0x2421 PUSH2 0x237E SWAP3 PUSH2 0x2427 SWAP6 PUSH2 0x306F JUMP JUMPDEST SWAP3 PUSH2 0x306F JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1A0 SWAP2 DUP2 SWAP1 SUB DUP3 DUP2 SLT PUSH2 0x1E1 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x140 SWAP3 DUP4 DUP6 ADD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP7 DUP6 LT DUP3 DUP7 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x80 SGT PUSH2 0x1E1 JUMPI PUSH2 0x1C0 DUP7 ADD SWAP1 DUP2 GT DUP5 DUP3 LT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE PUSH2 0x24D4 DUP2 PUSH2 0x2079 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x24E2 PUSH1 0x20 DUP3 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x24F7 PUSH1 0x40 DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x250C PUSH1 0x60 DUP5 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH2 0x259D SWAP5 PUSH2 0x2593 SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x2587 PUSH2 0x120 SWAP8 PUSH2 0x257B DUP10 DUP8 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST DUP1 PUSH2 0x25F4 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2621 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x264E JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x267B JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x26A8 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x26D5 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x2702 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x7 SUB PUSH2 0x272D JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2794 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x28CF JUMPI JUMPDEST ISZERO PUSH2 0x2828 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x27FF JUMP JUMPDEST PUSH32 0x0 PUSH2 0x2922 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP1 PUSH2 0x2930 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH2 0x293C DUP2 PUSH2 0x1EED JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 DUP5 ADD SWAP2 ADD CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x4 SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD DUP3 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0x2B14 JUMPI PUSH1 0x7 SWAP1 PUSH32 0x0 PUSH1 0xE0 DUP6 ADD MSTORE GT PUSH2 0x2ACC JUMPI POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0x2B01 JUMPI POP PUSH32 0x0 PUSH2 0x100 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x32 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x32 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x2BB9 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2BD4 JUMPI POP POP DUP1 PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2BF8 JUMPI POP POP PUSH2 0x2BF2 DUP2 PUSH2 0x2229 SWAP3 PUSH2 0x2C4C JUMP JUMPDEST DUP1 PUSH2 0x2C4C JUMP JUMPDEST PUSH2 0x2C02 SWAP2 SWAP3 PUSH2 0x310B JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2C0E DUP4 PUSH2 0x2B5A JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x2C56 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2CE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x2CF3 DUP4 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2D1E JUMPI JUMPDEST POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2D64 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2D49 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x2229 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2DE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2DF6 DUP2 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2E1E JUMPI POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2E65 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2E4A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x2E94 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2EB1 JUMPI POP POP DUP1 PUSH2 0x2391 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2ED5 JUMPI POP PUSH2 0x2ECE DUP3 PUSH2 0x2391 SWAP4 PUSH2 0x2B71 JUMP JUMPDEST DIV DUP1 PUSH2 0x2B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EE0 SWAP2 PUSH2 0x310B JUMP JUMPDEST PUSH2 0x2EE9 DUP2 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x2395 JUMPI DUP2 LT ISZERO PUSH2 0x2F30 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x2FB9 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x217A JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2FAF JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x202D JUMPI DUP1 PUSH2 0x2FD6 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x3006 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x303A JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x3044 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x30BF JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH1 0x1 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2B8E JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x3A34 JUMPI DUP2 ISZERO PUSH2 0x3A2E JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x3A06 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x39DE JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x39CD JUMPI JUMPDEST ISZERO PUSH2 0x366A JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x31A4 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x3657 JUMPI JUMPDEST ISZERO PUSH2 0x362F JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x361C JUMPI JUMPDEST ISZERO PUSH2 0x35F4 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x35E5 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x3582 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x3549 JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x350F JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x34D7 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x349F JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x3468 JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x3431 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x33FA JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x33C3 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x2229 JUMPI PUSH2 0x2229 SWAP1 PUSH2 0x30E7 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3344 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3332 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3320 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3317 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3305 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32F3 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x32CF JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x35D2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x325E JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x324F JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x323F JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x39B7 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x398C JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x396B JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x3948 JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x3928 JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x3908 JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x38E8 JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x38C8 JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x38B1 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x3891 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x3871 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x3852 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x3833 JUMPI JUMPDEST POP PUSH2 0x37E0 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x382E JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x3213 JUMP JUMPDEST PUSH2 0x3828 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x37A4 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3790 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x377C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3768 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3754 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3740 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x372C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3717 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3702 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x36EA JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x36C9 JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x36AC JUMP JUMPDEST SWAP1 POP PUSH2 0x39C3 SWAP2 POP PUSH2 0x30E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x367F JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x3151 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B AND PUSH23 0xDD274814FED4FFF49A83B5404B448D288D13E3F2848873 0xC7 0xC3 PUSH12 0xAED2CF64736F6C634300081A STOP CALLER ","sourceMap":"1931:10089:113:-:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1931:10089:113;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;4659:11;;4672:13;;1931:10089;;;4672:13;;4659:11;1931:10089;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;;;;;;;-1:-1:-1;;;1931:10089:113;;3401:45:106;;;:::i;:::-;3393:53;;3467:51;;;:::i;:::-;3456:62;;1931:10089:113;;;;;3542:22:106;3528:36;;;;1931:10089:113;3591:25:106;;3574:42;;;3644:13;1931:10089:113;3627:30:106;1931:10089:113;;4204:80:106;1931:10089:113;4204:80:106;;2079:95;;;;1931:10089:113;2079:95:106;;;1931:10089:113;2079:95:106;;;3644:13;1931:10089:113;2079:95:106;;;4278:4;1931:10089:113;2079:95:106;;;1931:10089:113;4204:80:106;;2079:95;1931:10089:113;;;;;;;;;;;;;;;;;;4194:91:106;;1931:10089:113;3667:48:106;4278:4;2079:95;3725:27;409:14:68;;;;1931:10089:113;;;-1:-1:-1;;;;;1931:10089:113;;;;2265:18:54;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;2265:18:54;1931:10089:113;;;;;2265:18:54;1931:10089:113;;;;-1:-1:-1;;;;;1931:10089:113;;;;2293:22:54;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;2265:18:54;1931:10089:113;;;;;2293:22:54;1931:10089:113;;750:14:34;;1931:10089:113;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;2265:18:54;1931:10089:113;;;;;;;;;;;;4737:31;;;;;1931:10089;;;4828:24;1931:10089;1500:6:40;1496:65;;-1:-1:-1;4974:11:113;-1:-1:-1;5005:3:113;1931:10089;;;;;;4987:16;;;;;;1931:10089;;;5051:24;1931:10089;;;;;;;;;;;;;;;;;5097:30;3112:4;5097:30;;5093:87;;3112:4;;;;;;;;5291:6;;;;5301:37;;;5287:558;1931:10089;;;;;;;;;;;4974:11;;1931:10089;;;;-1:-1:-1;1931:10089:113;;2293:22:54;1931:10089:113;;-1:-1:-1;1931:10089:113;5287:558;1931:10089;5363:6;;1931:10089;;5373:37;;;5287:558;;5359:486;5440:1;5435:6;;5440:1;;5445:37;;;5287:558;;5431:414;2265:18:54;5507:6:113;;2265:18:54;;5517:37:113;;;5287:558;;5503:342;2293:22:54;5579:6:113;;2293:22:54;;5589:37:113;;;5287:558;;5575:270;1931:10089;5651:6;;1931:10089;;5661:37;;;5287:558;;5647:198;5728:1;5723:6;;5728:1;;5733:37;;;5287:558;;5719:126;5800:1;5795:6;5791:54;;5719:126;;5287:558;;5791:54;5805:37;;5791:54;;;5093:87;5154:11;;;-1:-1:-1;5154:11:113;2293:22:54;-1:-1:-1;5154:11:113;1931:10089;;;;-1:-1:-1;1931:10089:113;;2293:22:54;1931:10089:113;;-1:-1:-1;1931:10089:113;4987:16;465:4:47;4987:16:113;;5927:31;5923:96;;1931:10089;;;;;;;;;;;;;;;;;;;;2079:95:106;1931:10089:113;;;;;3528:36:106;1931:10089:113;;;;;3574:42:106;1931:10089:113;;;;;3393:53:106;1931:10089:113;;;;;3456:62:106;1931:10089:113;;;;;409:14:68;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;750:14:34;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5923:96;5981:27;;;-1:-1:-1;5981:27:113;2293:22:54;-1:-1:-1;5981:27:113;1496:65:40;1529:21;;;-1:-1:-1;1529:21:40;2293:22:54;-1:-1:-1;1529:21:40;1931:10089:113;;;;-1:-1:-1;1931:10089:113;;;;;;-1:-1:-1;1931:10089:113;;;-1:-1:-1;;1931:10089:113;;;;-1:-1:-1;;1931:10089:113;;;;;;;4204:80:106;;;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;2265:18:54;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;-1:-1:-1;1931:10089:113;;;;;-1:-1:-1;1931:10089:113;;;;;;;-1:-1:-1;1931:10089:113;;2293:22:54;1931:10089:113;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;2293:22:54;1931:10089:113;;-1:-1:-1;1931:10089:113;;;;;-1:-1:-1;1931:10089:113;;;;;2293:22:54;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;-1:-1:-1;;1931:10089:113;;;;;;4204:80:106;1931:10089:113;4204:80:106;;;;;;;1931:10089:113;;;;;;;;;;;;2293:22:54;1931:10089:113;;;;;;;;;;2265:18:54;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:22:54;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;2265:18:54;-1:-1:-1;1931:10089:113;;;-1:-1:-1;;1931:10089:113;;;;-1:-1:-1;;1931:10089:113;;;;;;;4204:80:106;;;;;1931:10089:113;;;;;;;;;;;;2265:18:54;1931:10089:113;;;;;;;;;;2265:18:54;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:18:54;-1:-1:-1;1931:10089:113;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;-1:-1:-1;1931:10089:113;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;4204:80:106;1931:10089:113;;-1:-1:-1;;1931:10089:113;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;:::o;2914:340:102:-;1931:10089:113;;3059:2:102;;3037:24;;;3059:2;;;1931:10089:113;1854:2:102;1931:10089:113;;1840:16:102;1836:72;;1931:10089:113;;;;;2079:95:106;1931:10089:113;;;;;;1949:36:102;;3077:27;:::o;1931:10089:113:-;;;;;;;;;;1949:36:102;3077:27;:::o;1836:72::-;1931:10089:113;;;;1879:18:102;;;;;;;;;;;;1931:10089:113;;;;;;;;;;;;;;;;3432:13:106;1931:10089:113;;;;;;1854:2:102;1931:10089:113;-1:-1:-1;;1931:10089:113;;;1879:18:102;;;;3033:215;1931:10089:113;-1:-1:-1;;;;;1931:10089:113;;;;3432:13:106;1931:10089:113;;;;;;;;;;;;;;3033:215:102;1931:10089:113;;;;;;;;;;;3033:215:102;1931:10089:113;;;;;;;;;;;;;;;;3432:13:106;1931:10089:113;;;;;;;;;;;;;;;;;3432:13:106;1931:10089:113;1390:66:102;3195:42;:::o;1931:10089:113:-;;;;-1:-1:-1;1931:10089:113;;;;;4204:80:106;;;;;1931:10089:113;;3432:13:106;1931:10089:113;;;3432:13:106;1931:10089:113;;3432:13:106;1931:10089:113;;;;;;;;;;;;;;;;;;;;;3432:13:106;1931:10089:113;1390:66:102;3195:42;:::o;1931:10089:113:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;3432:13:106;1931:10089:113;;;;;3432:13:106;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;3432:13:106;1931:10089:113;;;;;;;;;;;;;;2914:340:102;1931:10089:113;;3059:2:102;;3037:24;;;3059:2;;;1931:10089:113;1854:2:102;1931:10089:113;;1840:16:102;1836:72;;1931:10089:113;;;;;2079:95:106;1931:10089:113;;;;;;1949:36:102;;3077:27;:::o;3033:215::-;1931:10089:113;;;-1:-1:-1;;;;;1931:10089:113;;;;;;;;;;;;;;;;;;3033:215:102;1931:10089:113;;;;;;;;;;;3033:215:102;1931:10089:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1931:10089:113;;;;;;;;;;;;;1390:66:102;;3195:42::o;1931:10089:113:-;;;;-1:-1:-1;1931:10089:113;;;;;4204:80:106;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;3195:42;:::o;1931:10089:113:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":7708,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_22882":{"entryPoint":7743,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_addresst_uint256":{"entryPoint":8037,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_array_contract_IERC20_dyn_fromMemory":{"entryPoint":8707,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IERC20_dyn_memory_ptr_fromMemory":{"entryPoint":8581,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":7941,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":9636,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_memory_ptr_fromMemory":{"entryPoint":8748,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_array_uint256_dyn_fromMemory":{"entryPoint":8845,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bool_fromMemory":{"entryPoint":8313,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_PoolConfig_fromMemory":{"entryPoint":9346,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn":{"entryPoint":8154,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":8103,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":7671,"id":null,"parameterSlots":2,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":7917,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":11056,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":11140,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":11121,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_22916":{"entryPoint":11069,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256_22958":{"entryPoint":11098,"id":null,"parameterSlots":1,"returnSlots":1},"extract_byte_array_length":{"entryPoint":8257,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":7882,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_22865":{"entryPoint":7778,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_22869":{"entryPoint":7826,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_35349":{"entryPoint":7854,"id":null,"parameterSlots":1,"returnSlots":0},"fun_domainSeparatorV4":{"entryPoint":10176,"id":41103,"parameterSlots":0,"returnSlots":1},"fun_ensureOnlyVault":{"entryPoint":10069,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_getNormalizedWeight":{"entryPoint":9674,"id":44697,"parameterSlots":1,"returnSlots":1},"fun_getNormalizedWeights":{"entryPoint":10488,"id":44815,"parameterSlots":0,"returnSlots":1},"fun_mulDivUp":{"entryPoint":12399,"id":7660,"parameterSlots":2,"returnSlots":1},"fun_mulUp":{"entryPoint":11340,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_onSwap_inner":{"entryPoint":8913,"id":null,"parameterSlots":1,"returnSlots":1},"fun_pow":{"entryPoint":12555,"id":8093,"parameterSlots":2,"returnSlots":1},"fun_powDown":{"entryPoint":11901,"id":7756,"parameterSlots":2,"returnSlots":1},"fun_powUp":{"entryPoint":11170,"id":7823,"parameterSlots":2,"returnSlots":1},"fun_throwError":{"entryPoint":12228,"id":40979,"parameterSlots":2,"returnSlots":0},"fun_toStringWithFallback":{"entryPoint":11711,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_toStringWithFallback_22872":{"entryPoint":11405,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_totalSupply":{"entryPoint":8399,"id":10447,"parameterSlots":0,"returnSlots":1},"fun_tryRecover":{"entryPoint":12085,"id":40894,"parameterSlots":4,"returnSlots":3},"fun_useNonce":{"entryPoint":null,"id":40024,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":8379,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn_35342":{"entryPoint":8326,"id":null,"parameterSlots":1,"returnSlots":1},"validator_assert_enum_TokenType":{"entryPoint":8227,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_div_int256":{"entryPoint":12545,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_div_int256_22962":{"entryPoint":12519,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"5129":[{"length":32,"start":1437},{"length":32,"start":2378},{"length":32,"start":2578},{"length":32,"start":3194},{"length":32,"start":4727}],"27649":[{"length":32,"start":608},{"length":32,"start":1160},{"length":32,"start":1631},{"length":32,"start":3454},{"length":32,"start":4333},{"length":32,"start":5294},{"length":32,"start":5939},{"length":32,"start":6616},{"length":32,"start":8472},{"length":32,"start":10092}],"41001":[{"length":32,"start":10246}],"41003":[{"length":32,"start":10450}],"41005":[{"length":32,"start":10199}],"41007":[{"length":32,"start":10325}],"41009":[{"length":32,"start":10363}],"41012":[{"length":32,"start":4392}],"41015":[{"length":32,"start":4434}],"44293":[{"length":32,"start":10490}],"44295":[{"length":32,"start":9682},{"length":32,"start":10577}],"44297":[{"length":32,"start":9727},{"length":32,"start":10622}],"44299":[{"length":32,"start":9772},{"length":32,"start":10679}],"44301":[{"length":32,"start":9817},{"length":32,"start":10736}],"44303":[{"length":32,"start":9862},{"length":32,"start":10794}],"44305":[{"length":32,"start":9907},{"length":32,"start":10851}],"44307":[{"length":32,"start":9952},{"length":32,"start":10911}],"44309":[{"length":32,"start":9995},{"length":32,"start":10969}]},"linkReferences":{},"object":"6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611d905750826306fdde0314611ce1578263095ea7b314611c6357826316a0b3e014611a2a57826318160ddd14611a0e57826323b872dd1461196657826323de665114611934578263273c1adf1461191257826330adf81f146118d8578263313ce567146118bd5782633644e515146118a157826353b79bd7146116e557826354fd4d50146115f55782635687f2b814611596578263627cdcb91461156d578263654cf15d1461154b578263679aefce1461151457826370a082311461144057826372c981861461131f5782637ecebe00146112db57826381fa807c1461121a57826384b0196e146111115782638d928af8146110c157826395d89b4114610fbb578263984de9e814610df9578263a9059cbb14610ce6578263aa6ca80814610c21578263abb1dc44146109b8578263b156aa0a146108f1578263b677fa56146108cf578263c0bc6f33146105f6578263ce20ece7146105d6578263d335b0cf14610543578263d505accf146102d857508163dd62ed3e146101e5575063f89f27ed146101ae575f80fd5b346101e1575f6003193601126101e1576101dd906101ca6128f8565b9051918291602083526020830190611fa7565b0390f35b5f80fd5b82346101e157806003193601126101e1576020610200611e1c565b606461020a611e3f565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a575b6020925051908152f35b90506020823d6020116102c7575b816102b560209383611eca565b810103126101e1576020915190610290565b3d91506102a8565b513d5f823e3d90fd5b8390346101e1576003193601126101e1576102f1611e1c565b906102fa611e3f565b604435926084359060643560ff831683036101e157804211610519576103478273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9061041361040a875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103be81611e92565b5190206103c96127c0565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f35565b90929192612fc4565b168181036104ec5750505f84959661048460209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102cf57506104b857005b6020813d6020116104e4575b816104d160209383611eca565b810103126101e1576104e290612079565b005b3d91506104c4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101e1575f6003193601126101e1578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a576020925051908152f35b83346101e1575f6003193601126101e157602090516509184e72a0008152f35b9150346101e1575f6003193601126101e157825161061381611e92565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f916108ad575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f91610889575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa90811561087f575f91610852575b5089526107516120cf565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561084857928b9c926107e0926107f396955f9e9c9d9e9261081b575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190611fa7565b915190601f198b840301908b0152611fa7565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b61083a9250803d10610841575b6108328183611eca565b810190612482565b5f806107aa565b503d610828565b8c513d5f823e3d90fd5b90508a81813d8311610878575b6108698183611eca565b810103126101e157515f610746565b503d61085f565b8d513d5f823e3d90fd5b6108a591503d805f833e61089d8183611eca565b81019061228d565b90505f610703565b6108c991503d805f833e6108c18183611eca565b8101906125a4565b5f6106c0565b83346101e1575f6003193601126101e157602090516709b6e64a8ec600008152f35b8382346101e1575f6003193601126101e1578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610992575b5051918291602083526020830190611fa7565b6109a79192503d805f833e6108c18183611eca565b908361097f565b82513d5f823e3d90fd5b8382346101e1575f6003193601126101e15773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f935f925f925f95610aed575b5090610a6595949392918151968796608088526080880190611fda565b6020878203818901528080875193848152019601925f905b838210610aa957898803868b015289806101dd8b610a9b8c8c611fa7565b908382036060850152611fa7565b9184989950606086979860019395978397518051610ac681612023565b83528685820151168584015201511515898201520198019201899897969594929391610a7d565b955093509150503d805f853e610b038185611eca565b8301926080818503126101e15780519167ffffffffffffffff928381116101e15785610b30918401612185565b91602095868201518581116101e157820181601f820112156101e157805190610b5882611eed565b98610b6586519a8b611eca565b828a52808a01816060809502840101928584116101e1578201905b838210610bc5575050505050828201518581116101e15781610ba391840161222c565b9460608301519081116101e157610bba920161222c565b919492919386610a48565b84828703126101e157875190610bda82611e62565b825160028110156101e157825283830151908c821682036101e1578285928389950152610c088b8601612079565b8b820152815201910190610b80565b83513d5f823e3d90fd5b8382346101e1575f6003193601126101e1578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610cc2575b5051918291602083526020830190611fda565b610cdf9192503d805f833e610cd78183611eca565b810190612203565b9083610caf565b5082346101e157806003193601126101e1576020610d6492610d06611e1c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5575b6020905160018152f35b6020823d602011610de7575b81610dce60209383611eca565b810103126101e157610de1602092612079565b50610dab565b3d9150610dc1565b50513d5f823e3d90fd5b5082346101e157806003193601126101e157813567ffffffffffffffff81116101e157610e299036908401611f05565b60243560028110156101e157610e3e81612023565b610fb457825b610e4c6128f8565b9080600314610f5f5780600414610ed85780600114610e9557600214610e7f57605184634e487b7160e01b5f525260245ffd5b6020935090610e8d9161306f565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610ec55750602092610ebf91612b84565b90610e8f565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357610f1b600191610f15610f0387876120bb565b51610f0e888b6120bb565b5190612ba2565b90612c4c565b930192610ee7565b92509350508015610f38576020925090610e8f565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357670de0b6b3a7640000610fab600192610fa5610f9388886120bb565b51610f9e898c6120bb565b5190612e7d565b90612b71565b04930192610f6e565b6003610e44565b8382346101e1575f6003193601126101e157815191825f8354610fdd81612041565b90818452602095600191876001821691825f1461107c575050600114611020575b5050506101dd9291611011910385611eca565b51928284938452830190611df7565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061106457505050820101816110116101dd610ffe565b8054848a01860152889550879490930192810161104b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061101191506101dd9050610ffe565b83346101e1575f6003193601126101e1576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101e1575f6003193601126101e15761114c7f0000000000000000000000000000000000000000000000000000000000000000612c8d565b926111767f0000000000000000000000000000000000000000000000000000000000000000612dbf565b815192602084019084821067ffffffffffffffff8311176112075750916111e7916101dd949382525f84526111da82519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611df7565b9186830390870152611df7565b904660608501523060808501525f60a085015283820360c0850152611fa7565b604190634e487b7160e01b5f525260245ffd5b8382346101e1575f6003193601126101e1578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f926112be575b505060608282015191015182519182526020820152f35b6112d49250803d10610841576108328183611eca565b82806112a7565b83346101e15760206003193601126101e15760209073ffffffffffffffffffffffffffffffffffffffff61130d611e1c565b165f5260028252805f20549051908152f35b8382346101e15760209260031984813601126101e15782359167ffffffffffffffff918284116101e15783360301126101e15783519161135e83611e92565b8084013560028110156101e157835260248101358684015260448101358281116101e15761139190853691840101611f05565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101e15760a084015260c4810135908282116101e1570192366023850112156101e15780840135918211611207575083519061140c86601f19601f8401160183611eca565b80825236602482860101116101e15785815f926024610e8d9701838601378301015260c082015261143b612755565b6122d1565b8382346101e157602091826003193601126101e1578261145e611e1c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610def575f926114e5575b5051908152f35b9091508281813d831161150d575b6114fd8183611eca565b810103126101e1575190836114de565b503d6114f3565b50346101e1575f6003193601126101e1577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101e1575f6003193601126101e1576020905167016345785d8a00008152f35b346101e1575f6003193601126101e157335f908152600260205260409020805460018101909155005b83346101e15760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115c836611f65565b9391946115d3612755565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101e1575f6003193601126101e15780516005549091825f61161884612041565b808352602094600190866001821691825f146116a557505060011461164a575b50506101dd9291611011910385611eca565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b82841061168d5750505082010181611011611638565b8054848a018601528895508794909301928101611677565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506110119050611638565b5082346101e1575f6003193601126101e15780519061170382611e62565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561189757905f9291839161187d575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611873575f9161185a575b5081959295526117e96128f8565b84528251948086526080860192519260608288015283518091528160a088019401915f5b8281106118445788806101dd8a8a6118338b8b51601f1993848884030190880152611fa7565b915190848303016060850152611fa7565b83518a168652948101949281019260010161180d565b61186e91503d805f833e61089d8183611eca565b6117db565b84513d5f823e3d90fd5b61189191503d8085833e610cd78183611eca565b8a611798565b86513d5f823e3d90fd5b83346101e1575f6003193601126101e157602090610e8d6127c0565b83346101e1575f6003193601126101e1576020905160128152f35b83346101e1575f6003193601126101e157602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101e1575f6003193601126101e157602090516729a2241af62c00008152f35b83346101e15760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115c836611f65565b5082346101e15760205f608461197b36611f65565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5576020905160018152f35b83346101e1575f6003193601126101e157602090610e8d6120cf565b8382346101e15760606003193601126101e157803567ffffffffffffffff81116101e157611a5b9036908301611f05565b9160243592611a77611a7085604435936120bb565b51946125ca565b60019081831115611c5d5760025b80600314611be75780600414611b4e5780600114611b0c57600214611ab757605185634e487b7160e01b5f525260245ffd5b909192938115611ae65750610e8d9260209592610f15926ec097ce7bc90715b34b9f0fffffffff040190612ba2565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611b3b575092610f15610e8d926020956ec097ce7bc90715b34b9f10000000000490612ba2565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611ba7575b5050508115611b81575092610f15610e8d9260209590612ba2565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611be1579082611bd98193610f15611bcf89866120bb565b51610f0e8a612086565b950192611b61565b93611b66565b509192939080670de0b6b3a7640000935f925b611c19575050508115611b81575092610f15610e8d9260209590612ba2565b909193670de0b6b3a764000051851015611be1579082670de0b6b3a7640000611c548294610fa5611c4a8a876120bb565b51610f9e8b612086565b04950192611bfa565b81611a85565b5082346101e157806003193601126101e1576020610d6492611c83611e1c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101e1575f6003193601126101e15780516003549091825f611d0484612041565b808352602094600190866001821691825f146116a5575050600114611d355750506101dd9291611011910385611eca565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611d785750505082010181611011611638565b8054848a018601528895508794909301928101611d62565b82346101e15760206003193601126101e15735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101e1577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6060810190811067ffffffffffffffff821117611e7e57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff821117611e7e57604052565b6040810190811067ffffffffffffffff821117611e7e57604052565b90601f601f19910116810190811067ffffffffffffffff821117611e7e57604052565b67ffffffffffffffff8111611e7e5760051b60200190565b9080601f830112156101e1576020908235611f1f81611eed565b93611f2d6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b828210611f56575050505090565b81358152908301908301611f48565b60031960609101126101e15773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101e1579160243590811681036101e1579060443590565b9081518082526020808093019301915f5b828110611fc6575050505090565b835185529381019392810192600101611fb8565b9081518082526020808093019301915f5b828110611ff9575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611feb565b6002111561202d57565b634e487b7160e01b5f52602160045260245ffd5b90600182811c9216801561206f575b602083101461205b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612050565b519081151582036101e157565b670de0b6b3a7640000518110156120a75760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120a75760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561217a575f9161214b575090565b90506020813d602011612172575b8161216660209383611eca565b810103126101e1575190565b3d9150612159565b6040513d5f823e3d90fd5b9080601f830112156101e1578151906020916121a081611eed565b936121ae6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b8282106121d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101e15781529083019083016121c9565b906020828203126101e157815167ffffffffffffffff81116101e1576122299201612185565b90565b9080601f830112156101e15781519060209161224781611eed565b936122556040519586611eca565b81855260208086019260051b8201019283116101e157602001905b82821061227e575050505090565b81518152908301908301612270565b9190916040818403126101e15780519267ffffffffffffffff938481116101e157816122ba91840161222c565b9360208301519081116101e157612229920161222c565b604081019081516122e860608301918251906120bb565b519251916122fc60808201938451906120bb565b5191815161230981612023565b61231281612023565b6123d15761232c612325602092516125ca565b94516125ca565b910151670de0b6b3a7640000948561234382612b3d565b0482116123a95761235761235d9282612b30565b9061306f565b848402938085048614901517156123955761237e6123849261239195612b84565b90612ba2565b8381810391100290612b71565b0490565b634e487b7160e01b5f52601160045260245ffd5b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6123eb6123e460209295939495516125ca565b92516125ca565b920151670de0b6b3a764000061240085612b3d565b04811161245a578303908382116123955761242161237e926124279561306f565b9261306f565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123955761222991612c4c565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101e15760405192610140928385019267ffffffffffffffff9086851082861117611e7e576080136101e1576101c0860190811184821017611e7e576040526124d481612079565b83526124e260208201612079565b9261016093848701526124f760408301612079565b92610180938488015261250c60608401612079565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101e15760808601526101008082015163ffffffff811681036101e15761259d946125939160a08901526125876101209761257b898701612079565b60c08b01528501612079565b60e08901528301612079565b9086015201612079565b9082015290565b906020828203126101e157815167ffffffffffffffff81116101e157612229920161222c565b806125f457507f000000000000000000000000000000000000000000000000000000000000000090565b6001810361262157507f000000000000000000000000000000000000000000000000000000000000000090565b6002810361264e57507f000000000000000000000000000000000000000000000000000000000000000090565b6003810361267b57507f000000000000000000000000000000000000000000000000000000000000000090565b600481036126a857507f000000000000000000000000000000000000000000000000000000000000000090565b600581036126d557507f000000000000000000000000000000000000000000000000000000000000000090565b6006810361270257507f000000000000000000000000000000000000000000000000000000000000000090565b60070361272d577f000000000000000000000000000000000000000000000000000000000000000090565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361279457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128cf575b15612828577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e7e5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127ff565b7f000000000000000000000000000000000000000000000000000000000000000061292281611eed565b906129306040519283611eca565b80825261293c81611eed565b601f196020840191013682378251156120a7577f000000000000000000000000000000000000000000000000000000000000000090528151600110156120a7577f000000000000000000000000000000000000000000000000000000000000000060408301526002811115612b2c578151600210156120a7577f000000000000000000000000000000000000000000000000000000000000000060608301526003811115612b2c578151600310156120a7577f0000000000000000000000000000000000000000000000000000000000000000608083015260049081811115612b27578251821015612b14577f000000000000000000000000000000000000000000000000000000000000000060a08401526005811115612b2757825160051015612b14577f000000000000000000000000000000000000000000000000000000000000000060c08401526006811115612b2757825160061015612b14576007907f000000000000000000000000000000000000000000000000000000000000000060e085015211612acc575090565b815160071015612b0157507f000000000000000000000000000000000000000000000000000000000000000061010082015290565b603290634e487b7160e01b5f525260245ffd5b603282634e487b7160e01b5f525260245ffd5b505090565b5090565b9190820180921161239557565b90670429d069189e00009182810292818404149015171561239557565b906127109182810292818404149015171561239557565b8181029291811591840414171561239557565b8115612b8e570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612bb957505090565b671bc16d674ec800008103612bd45750508061222991612c4c565b673782dace9d9000008103612bf8575050612bf28161222992612c4c565b80612c4c565b612c02919261310b565b906001612c0e83612b5a565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116123955761222991612b30565b90612c5691612b71565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b60ff8114612ce15760ff811690601f8211612cb95760405191612caf83611eae565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612cf383612041565b80835292602090600190818116908115612d7c5750600114612d1e575b505061222992500382611eca565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612d6457506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612d49565b9050602093506122299592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612d10565b60ff8114612de15760ff811690601f8211612cb95760405191612caf83611eae565b506040515f81600191600154612df681612041565b8084529360209160018116908115612d7c5750600114612e1e57505061222992500382611eca565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612e6557506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612e4a565b670de0b6b3a764000091808303612e945750905090565b8290671bc16d674ec800008103612eb15750508061239191612b71565b673782dace9d9000008103612ed55750612ece8261239193612b71565b0480612b71565b9050612ee09161310b565b612ee981612b5a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848301040190151502906001820180831161239557811015612f30575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fb9579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561217a575f5173ffffffffffffffffffffffffffffffffffffffff811615612faf57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561202d5780612fd6575050565b60018103613006577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361303a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146130445750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156130bf57670de0b6b3a764000091828102928184041490151715612395576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612b8e576ec097ce7bc90715b34b9f10000000000590565b8115612b8e570590565b908015613a34578115613a2e578160ff1c613a0657770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156139de5781670c7d713b49da000012806139cd575b1561366a57670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906131a4908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613101565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580613657575b1561362f5781908212158061361c575b156135f4575f915f81126135e5575b506064906806f05b59d3b20000008112613582577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215613549575b6856bc75e2d63100000081121561350f575b682b5e3af16b188000008112156134d7575b6815af1d78b58c40000081121561349f575b680ad78ebc5ac6200000811215613468575b82811215613431575b6802b5e3af16b18800008112156133fa575b68015af1d78b58c400008112156133c3575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f1461222957612229906130e7565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590613344565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590613332565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613320565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613317565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613305565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906132f3565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906132e1565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016132cf565b6803782dace9d900000081126135d2577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132ba565b68056bc75e2d63100000826001926132ba565b600192505f039050606461325e565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561324f565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561323f565b81670de0b6b3a7640000925f918481126139b7575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561398c575b73011798004d755d3c8bc8e03204cf44619e00000082121561396b575b820290808302906e01855144814a7ff805980ff00840009081831215613948575b50506b02df0ab5a80a22c61ab5a70080821215613928575b50693f1fce3da636ea5cf85080821215613908575b50690127fa27722cc06cc5e2808212156138e8575b5068280e60114edb805d03808212156138c8575b50680ebc5fb41746121110808212156138b1575b506808f00f760a4b2db55d80821215613891575b506806f5f177578893793780821215613871575b506806248f33704b28660380821215613852575b506805c548670b9510e7ac80821215613833575b506137e068056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613101565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f1461382e575f035b02613213565b613828565b68056bc75e2d631000006756bc75e2d63100009202059101905f6137a4565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613790565b68056bc75e2d6310000068015af1d78b58c400009202059101905f61377c565b68056bc75e2d631000006802b5e3af16b18800009202059101905f613768565b68056bc75e2d63100000809202059101905f613754565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f613740565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61372c565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613717565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613702565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f806136ea565b906b1425982cf597cd205cef73806803782dace9d9000000910591016136c9565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b20000006136ac565b90506139c391506130e7565b600190606461367f565b50670f43fc2c04ee00008212613151565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212204b1676dd274814fed4fff49a83b5404b448d288d13e3f2848873c7c36baed2cf64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH4 0x1FFC9A7 EQ PUSH2 0x1D90 JUMPI POP DUP3 PUSH4 0x6FDDE03 EQ PUSH2 0x1CE1 JUMPI DUP3 PUSH4 0x95EA7B3 EQ PUSH2 0x1C63 JUMPI DUP3 PUSH4 0x16A0B3E0 EQ PUSH2 0x1A2A JUMPI DUP3 PUSH4 0x18160DDD EQ PUSH2 0x1A0E JUMPI DUP3 PUSH4 0x23B872DD EQ PUSH2 0x1966 JUMPI DUP3 PUSH4 0x23DE6651 EQ PUSH2 0x1934 JUMPI DUP3 PUSH4 0x273C1ADF EQ PUSH2 0x1912 JUMPI DUP3 PUSH4 0x30ADF81F EQ PUSH2 0x18D8 JUMPI DUP3 PUSH4 0x313CE567 EQ PUSH2 0x18BD JUMPI DUP3 PUSH4 0x3644E515 EQ PUSH2 0x18A1 JUMPI DUP3 PUSH4 0x53B79BD7 EQ PUSH2 0x16E5 JUMPI DUP3 PUSH4 0x54FD4D50 EQ PUSH2 0x15F5 JUMPI DUP3 PUSH4 0x5687F2B8 EQ PUSH2 0x1596 JUMPI DUP3 PUSH4 0x627CDCB9 EQ PUSH2 0x156D JUMPI DUP3 PUSH4 0x654CF15D EQ PUSH2 0x154B JUMPI DUP3 PUSH4 0x679AEFCE EQ PUSH2 0x1514 JUMPI DUP3 PUSH4 0x70A08231 EQ PUSH2 0x1440 JUMPI DUP3 PUSH4 0x72C98186 EQ PUSH2 0x131F JUMPI DUP3 PUSH4 0x7ECEBE00 EQ PUSH2 0x12DB JUMPI DUP3 PUSH4 0x81FA807C EQ PUSH2 0x121A JUMPI DUP3 PUSH4 0x84B0196E EQ PUSH2 0x1111 JUMPI DUP3 PUSH4 0x8D928AF8 EQ PUSH2 0x10C1 JUMPI DUP3 PUSH4 0x95D89B41 EQ PUSH2 0xFBB JUMPI DUP3 PUSH4 0x984DE9E8 EQ PUSH2 0xDF9 JUMPI DUP3 PUSH4 0xA9059CBB EQ PUSH2 0xCE6 JUMPI DUP3 PUSH4 0xAA6CA808 EQ PUSH2 0xC21 JUMPI DUP3 PUSH4 0xABB1DC44 EQ PUSH2 0x9B8 JUMPI DUP3 PUSH4 0xB156AA0A EQ PUSH2 0x8F1 JUMPI DUP3 PUSH4 0xB677FA56 EQ PUSH2 0x8CF JUMPI DUP3 PUSH4 0xC0BC6F33 EQ PUSH2 0x5F6 JUMPI DUP3 PUSH4 0xCE20ECE7 EQ PUSH2 0x5D6 JUMPI DUP3 PUSH4 0xD335B0CF EQ PUSH2 0x543 JUMPI DUP3 PUSH4 0xD505ACCF EQ PUSH2 0x2D8 JUMPI POP DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x1E5 JUMPI POP PUSH4 0xF89F27ED EQ PUSH2 0x1AE JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x1DD SWAP1 PUSH2 0x1CA PUSH2 0x28F8 JUMP JUMPDEST SWAP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0x200 PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x20A PUSH2 0x1E3F JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C7 JUMPI JUMPDEST DUP2 PUSH2 0x2B5 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x290 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2A8 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 SWAP1 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x2F1 PUSH2 0x1E1C JUMP JUMPDEST SWAP1 PUSH2 0x2FA PUSH2 0x1E3F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP4 AND DUP4 SUB PUSH2 0x1E1 JUMPI DUP1 TIMESTAMP GT PUSH2 0x519 JUMPI PUSH2 0x347 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x413 PUSH2 0x40A DUP8 MLOAD SWAP6 PUSH1 0x20 DUP8 ADD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 SWAP6 DUP7 DUP10 AND SWAP8 DUP9 DUP14 DUP5 ADD MSTORE DUP8 DUP13 AND PUSH1 0x60 DUP5 ADD MSTORE DUP14 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x3BE DUP2 PUSH2 0x1E92 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x3C9 PUSH2 0x27C0 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x2F35 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2FC4 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x4EC JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x484 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI POP PUSH2 0x4B8 JUMPI STOP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4E4 JUMPI JUMPDEST DUP2 PUSH2 0x4D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0x4E2 SWAP1 PUSH2 0x2079 JUMP JUMPDEST STOP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4C4 JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST DUP7 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH6 0x9184E72A000 DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 MLOAD PUSH2 0x613 DUP2 PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP6 DUP2 ADD SWAP3 PUSH0 DUP5 MSTORE PUSH1 0x60 DUP3 ADD PUSH0 DUP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP2 PUSH0 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 PUSH0 DUP6 MSTORE PUSH1 0xC0 DUP2 ADD SWAP6 PUSH0 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 DUP12 MLOAD PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x8AD JUMPI JUMPDEST POP DUP4 MSTORE DUP12 MLOAD PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x889 JUMPI JUMPDEST POP DUP5 MSTORE DUP12 MLOAD PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE DUP11 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x852 JUMPI JUMPDEST POP DUP10 MSTORE PUSH2 0x751 PUSH2 0x20CF JUMP JUMPDEST DUP6 MSTORE DUP12 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE DUP2 PUSH1 0x24 PUSH2 0x1A0 SWAP5 DUP6 SWAP4 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x848 JUMPI SWAP3 DUP12 SWAP13 SWAP3 PUSH2 0x7E0 SWAP3 PUSH2 0x7F3 SWAP7 SWAP6 PUSH0 SWAP15 SWAP13 SWAP14 SWAP15 SWAP3 PUSH2 0x81B JUMPI JUMPDEST POP POP DUP11 DUP2 ADD MLOAD ISZERO ISZERO DUP9 MSTORE PUSH2 0x120 PUSH2 0x100 SWAP2 DUP3 DUP2 ADD MLOAD ISZERO ISZERO DUP12 MSTORE ADD MLOAD ISZERO ISZERO DUP11 MSTORE DUP4 MLOAD SWAP14 DUP14 DUP16 SWAP15 SWAP4 DUP16 SWAP5 DUP6 MSTORE MLOAD SWAP4 ADD MSTORE DUP13 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 PUSH1 0x1F NOT DUP12 DUP5 SUB ADD SWAP1 DUP12 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x60 DUP9 ADD MSTORE MLOAD PUSH1 0x80 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH2 0x83A SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI JUMPDEST PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2482 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7AA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x828 JUMP JUMPDEST DUP13 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x878 JUMPI JUMPDEST PUSH2 0x869 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD PUSH0 PUSH2 0x746 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x85F JUMP JUMPDEST DUP14 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8A5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x228D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x8C9 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25A4 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x9B6E64A8EC60000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0x992 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST PUSH2 0x9A7 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x97F JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD SWAP2 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP4 PUSH0 SWAP3 PUSH0 SWAP3 PUSH0 SWAP6 PUSH2 0xAED JUMPI JUMPDEST POP SWAP1 PUSH2 0xA65 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xAA9 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1DD DUP12 PUSH2 0xA9B DUP13 DUP13 PUSH2 0x1FA7 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0xAC6 DUP2 PUSH2 0x2023 JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0xA7D JUMP JUMPDEST SWAP6 POP SWAP4 POP SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xB03 DUP2 DUP6 PUSH2 0x1ECA JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x1E1 JUMPI DUP6 PUSH2 0xB30 SWAP2 DUP5 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP6 DUP7 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0xB58 DUP3 PUSH2 0x1EED JUMP JUMPDEST SWAP9 PUSH2 0xB65 DUP7 MLOAD SWAP11 DUP12 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP11 MSTORE DUP1 DUP11 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x1E1 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xBC5 JUMPI POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0xBA3 SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xBBA SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 PUSH2 0xA48 JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x1E1 JUMPI DUP8 MLOAD SWAP1 PUSH2 0xBDA DUP3 PUSH2 0x1E62 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP13 DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0xC08 DUP12 DUP7 ADD PUSH2 0x2079 JUMP JUMPDEST DUP12 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xB80 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0xCC2 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0xCDF SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2203 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xCAF JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0xD06 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDE7 JUMPI JUMPDEST DUP2 PUSH2 0xDCE PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0xDE1 PUSH1 0x20 SWAP3 PUSH2 0x2079 JUMP JUMPDEST POP PUSH2 0xDAB JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDC1 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xE29 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0xE3E DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0xFB4 JUMPI DUP3 JUMPDEST PUSH2 0xE4C PUSH2 0x28F8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x3 EQ PUSH2 0xF5F JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0xED8 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0xE95 JUMPI PUSH1 0x2 EQ PUSH2 0xE7F JUMPI PUSH1 0x51 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 SWAP4 POP SWAP1 PUSH2 0xE8D SWAP2 PUSH2 0x306F JUMP JUMPDEST SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xEC5 JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xEBF SWAP2 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x11 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH2 0xF1B PUSH1 0x1 SWAP2 PUSH2 0xF15 PUSH2 0xF03 DUP8 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP9 DUP12 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xEE7 JUMP JUMPDEST SWAP3 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0xF38 JUMPI PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0xE8F JUMP JUMPDEST DUP3 PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xFAB PUSH1 0x1 SWAP3 PUSH2 0xFA5 PUSH2 0xF93 DUP9 DUP9 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP10 DUP13 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2E7D JUMP JUMPDEST SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP4 ADD SWAP3 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x3 PUSH2 0xE44 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xFDD DUP2 PUSH2 0x2041 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x107C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1020 JUMPI JUMPDEST POP POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x1064 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1DD PUSH2 0xFFE JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x104B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x1011 SWAP2 POP PUSH2 0x1DD SWAP1 POP PUSH2 0xFFE JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x114C PUSH32 0x0 PUSH2 0x2C8D JUMP JUMPDEST SWAP3 PUSH2 0x1176 PUSH32 0x0 PUSH2 0x2DBF JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x1207 JUMPI POP SWAP2 PUSH2 0x11E7 SWAP2 PUSH2 0x1DD SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x11DA DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DF7 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP3 PUSH2 0x12BE JUMPI JUMPDEST POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x12D4 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP1 PUSH2 0x12A7 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x130D PUSH2 0x1E1C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x3 NOT DUP5 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x1E1 JUMPI DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1E1 JUMPI DUP4 MLOAD SWAP2 PUSH2 0x135E DUP4 PUSH2 0x1E92 JUMP JUMPDEST DUP1 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP4 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD DUP7 DUP5 ADD MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1391 SWAP1 DUP6 CALLDATASIZE SWAP2 DUP5 ADD ADD PUSH2 0x1F05 JUMP JUMPDEST DUP6 DUP5 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 DUP3 GT PUSH2 0x1E1 JUMPI ADD SWAP3 CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 DUP5 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x1207 JUMPI POP DUP4 MLOAD SWAP1 PUSH2 0x140C DUP7 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1E1 JUMPI DUP6 DUP2 PUSH0 SWAP3 PUSH1 0x24 PUSH2 0xE8D SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x143B PUSH2 0x2755 JUMP JUMPDEST PUSH2 0x22D1 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 PUSH2 0x145E PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xDEF JUMPI PUSH0 SWAP3 PUSH2 0x14E5 JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x150D JUMPI JUMPDEST PUSH2 0x14FD DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14DE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F3 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH32 0x18E79A2000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x16345785D8A0000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x15D3 PUSH2 0x2755 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1618 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x164A JUMPI JUMPDEST POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x168D JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1677 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x1011 SWAP1 POP PUSH2 0x1638 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1703 DUP3 PUSH2 0x1E62 JUMP JUMPDEST PUSH1 0x60 DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP4 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP2 DUP5 ADD SWAP3 PUSH1 0x60 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH32 0x0 AND SWAP1 DUP5 MLOAD PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1897 JUMPI SWAP1 PUSH0 SWAP3 SWAP2 DUP4 SWAP2 PUSH2 0x187D JUMPI JUMPDEST POP DUP9 MSTORE PUSH1 0x24 DUP7 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1873 JUMPI PUSH0 SWAP2 PUSH2 0x185A JUMPI JUMPDEST POP DUP2 SWAP6 SWAP3 SWAP6 MSTORE PUSH2 0x17E9 PUSH2 0x28F8 JUMP JUMPDEST DUP5 MSTORE DUP3 MLOAD SWAP5 DUP1 DUP7 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 MLOAD SWAP3 PUSH1 0x60 DUP3 DUP9 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH1 0xA0 DUP9 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1844 JUMPI DUP9 DUP1 PUSH2 0x1DD DUP11 DUP11 PUSH2 0x1833 DUP12 DUP12 MLOAD PUSH1 0x1F NOT SWAP4 DUP5 DUP9 DUP5 SUB ADD SWAP1 DUP9 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST DUP4 MLOAD DUP11 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x180D JUMP JUMPDEST PUSH2 0x186E SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST PUSH2 0x17DB JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1891 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP11 PUSH2 0x1798 JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x27C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x29A2241AF62C0000 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x197B CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x20CF JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1A5B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1F05 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH2 0x1A77 PUSH2 0x1A70 DUP6 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP5 PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP2 DUP4 GT ISZERO PUSH2 0x1C5D JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x3 EQ PUSH2 0x1BE7 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0x1B4E JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x1B0C JUMPI PUSH1 0x2 EQ PUSH2 0x1AB7 JUMPI PUSH1 0x51 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP2 ISZERO PUSH2 0x1AE6 JUMPI POP PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0xF15 SWAP3 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP DUP1 SWAP3 SWAP4 SWAP5 SWAP2 POP ISZERO PUSH2 0x1B3B JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1BA7 JUMPI JUMPDEST POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH2 0x1BD9 DUP2 SWAP4 PUSH2 0xF15 PUSH2 0x1BCF DUP10 DUP7 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP11 PUSH2 0x2086 JUMP JUMPDEST SWAP6 ADD SWAP3 PUSH2 0x1B61 JUMP JUMPDEST SWAP4 PUSH2 0x1B66 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1C19 JUMPI POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C54 DUP3 SWAP5 PUSH2 0xFA5 PUSH2 0x1C4A DUP11 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP12 PUSH2 0x2086 JUMP JUMPDEST DIV SWAP6 ADD SWAP3 PUSH2 0x1BFA JUMP JUMPDEST DUP2 PUSH2 0x1A85 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0x1C83 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1D04 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1D35 JUMPI POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1D78 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1D62 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1E1 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E7E JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1F1F DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x1F2D PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1F56 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1F48 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FC6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FB8 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FF9 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FEB JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x202D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x206F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x205B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2050 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MLOAD DUP2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x5 SHL PUSH8 0xDE0B6B3A7640020 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x217A JUMPI PUSH0 SWAP2 PUSH2 0x214B JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2172 JUMPI JUMPDEST DUP2 PUSH2 0x2166 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2159 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x21A0 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x21AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x21D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x21C9 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2247 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x2255 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x227E JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2270 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0x22BA SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 MLOAD PUSH2 0x22E8 PUSH1 0x60 DUP4 ADD SWAP2 DUP3 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP2 PUSH2 0x22FC PUSH1 0x80 DUP3 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP2 DUP2 MLOAD PUSH2 0x2309 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x2312 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x23D1 JUMPI PUSH2 0x232C PUSH2 0x2325 PUSH1 0x20 SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP2 ADD MLOAD PUSH8 0xDE0B6B3A7640000 SWAP5 DUP6 PUSH2 0x2343 DUP3 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP3 GT PUSH2 0x23A9 JUMPI PUSH2 0x2357 PUSH2 0x235D SWAP3 DUP3 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x306F JUMP JUMPDEST DUP5 DUP5 MUL SWAP4 DUP1 DUP6 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH2 0x237E PUSH2 0x2384 SWAP3 PUSH2 0x2391 SWAP6 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x23EB PUSH2 0x23E4 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP5 SWAP6 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x2400 DUP6 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP2 GT PUSH2 0x245A JUMPI DUP4 SUB SWAP1 DUP4 DUP3 GT PUSH2 0x2395 JUMPI PUSH2 0x2421 PUSH2 0x237E SWAP3 PUSH2 0x2427 SWAP6 PUSH2 0x306F JUMP JUMPDEST SWAP3 PUSH2 0x306F JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1A0 SWAP2 DUP2 SWAP1 SUB DUP3 DUP2 SLT PUSH2 0x1E1 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x140 SWAP3 DUP4 DUP6 ADD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP7 DUP6 LT DUP3 DUP7 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x80 SGT PUSH2 0x1E1 JUMPI PUSH2 0x1C0 DUP7 ADD SWAP1 DUP2 GT DUP5 DUP3 LT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE PUSH2 0x24D4 DUP2 PUSH2 0x2079 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x24E2 PUSH1 0x20 DUP3 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x24F7 PUSH1 0x40 DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x250C PUSH1 0x60 DUP5 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH2 0x259D SWAP5 PUSH2 0x2593 SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x2587 PUSH2 0x120 SWAP8 PUSH2 0x257B DUP10 DUP8 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST DUP1 PUSH2 0x25F4 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2621 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x264E JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x267B JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x26A8 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x26D5 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x2702 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x7 SUB PUSH2 0x272D JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2794 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x28CF JUMPI JUMPDEST ISZERO PUSH2 0x2828 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x27FF JUMP JUMPDEST PUSH32 0x0 PUSH2 0x2922 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP1 PUSH2 0x2930 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH2 0x293C DUP2 PUSH2 0x1EED JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 DUP5 ADD SWAP2 ADD CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x4 SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD DUP3 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0x2B14 JUMPI PUSH1 0x7 SWAP1 PUSH32 0x0 PUSH1 0xE0 DUP6 ADD MSTORE GT PUSH2 0x2ACC JUMPI POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0x2B01 JUMPI POP PUSH32 0x0 PUSH2 0x100 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x32 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x32 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x2BB9 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2BD4 JUMPI POP POP DUP1 PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2BF8 JUMPI POP POP PUSH2 0x2BF2 DUP2 PUSH2 0x2229 SWAP3 PUSH2 0x2C4C JUMP JUMPDEST DUP1 PUSH2 0x2C4C JUMP JUMPDEST PUSH2 0x2C02 SWAP2 SWAP3 PUSH2 0x310B JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2C0E DUP4 PUSH2 0x2B5A JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x2C56 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2CE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x2CF3 DUP4 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2D1E JUMPI JUMPDEST POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2D64 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2D49 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x2229 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2DE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2DF6 DUP2 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2E1E JUMPI POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2E65 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2E4A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x2E94 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2EB1 JUMPI POP POP DUP1 PUSH2 0x2391 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2ED5 JUMPI POP PUSH2 0x2ECE DUP3 PUSH2 0x2391 SWAP4 PUSH2 0x2B71 JUMP JUMPDEST DIV DUP1 PUSH2 0x2B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EE0 SWAP2 PUSH2 0x310B JUMP JUMPDEST PUSH2 0x2EE9 DUP2 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x2395 JUMPI DUP2 LT ISZERO PUSH2 0x2F30 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x2FB9 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x217A JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2FAF JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x202D JUMPI DUP1 PUSH2 0x2FD6 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x3006 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x303A JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x3044 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x30BF JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH1 0x1 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2B8E JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x3A34 JUMPI DUP2 ISZERO PUSH2 0x3A2E JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x3A06 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x39DE JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x39CD JUMPI JUMPDEST ISZERO PUSH2 0x366A JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x31A4 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x3657 JUMPI JUMPDEST ISZERO PUSH2 0x362F JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x361C JUMPI JUMPDEST ISZERO PUSH2 0x35F4 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x35E5 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x3582 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x3549 JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x350F JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x34D7 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x349F JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x3468 JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x3431 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x33FA JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x33C3 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x2229 JUMPI PUSH2 0x2229 SWAP1 PUSH2 0x30E7 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3344 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3332 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3320 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3317 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3305 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32F3 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x32CF JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x35D2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x325E JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x324F JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x323F JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x39B7 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x398C JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x396B JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x3948 JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x3928 JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x3908 JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x38E8 JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x38C8 JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x38B1 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x3891 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x3871 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x3852 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x3833 JUMPI JUMPDEST POP PUSH2 0x37E0 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x382E JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x3213 JUMP JUMPDEST PUSH2 0x3828 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x37A4 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3790 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x377C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3768 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3754 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3740 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x372C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3717 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3702 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x36EA JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x36C9 JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x36AC JUMP JUMPDEST SWAP1 POP PUSH2 0x39C3 SWAP2 POP PUSH2 0x30E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x367F JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x3151 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B AND PUSH23 0xDD274814FED4FFF49A83B5404B448D288D13E3F2848873 0xC7 0xC3 PUSH12 0xAED2CF64736F6C634300081A STOP CALLER ","sourceMap":"1931:10089:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:49:54;1931:10089:113;4124:49:54;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1615:50:34;1931:10089:113;1615:50:34;;;1931:10089:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;7068:23;;;:::i;:::-;1931:10089;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;3545:47:54;;;;;1931:10089:113;3545:47:54;;3570:4;3545:47;;;1931:10089:113;;;;;;;;;;;3545:6:54;1931:10089:113;3545:47:54;;;;;;;1931:10089:113;3545:47:54;;;1931:10089:113;;;;;;;;;3545:47:54;;;1931:10089:113;3545:47:54;;1931:10089:113;3545:47:54;;;;;;1931:10089:113;3545:47:54;;;:::i;:::-;;;1931:10089:113;;;;;;;3545:47:54;;;;;;-1:-1:-1;3545:47:54;;;1931:10089:113;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;5510:15:54;;:26;5506:97;;5696:16;;1931:10089:113;;-1:-1:-1;1931:10089:113;1121:7:101;1931:10089:113;;;-1:-1:-1;1931:10089:113;;;;;;;;;759:395:101;;5696:16:54;1931:10089:113;7021:8:105;6967:25;1931:10089:113;;5644:79:54;1931:10089:113;5644:79:54;;1443:95;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5644:79:54;;;;;:::i;:::-;1931:10089:113;5634:90:54;;5053:20:106;;:::i;:::-;3515:233:107;;;;;;;;;;;;;;;1931:10089:113;;;3515:233:107;1931:10089:113;;3515:233:107;;6967:25:105;:::i;:::-;7021:8;;;;;:::i;:::-;1931:10089:113;5848:15:54;;;5844:88;;1931:10089:113;;;;;;5942:38:54;1931:10089:113;;;5942:38:54;;;;;;;1931:10089:113;5942:38:54;;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;5942:38:54;;:6;;1931:10089:113;5942:38:54;;;;;;;;;;1931:10089:113;5942:38:54;1931:10089:113;5942:38:54;;1931:10089:113;5942:38:54;;;;;;1931:10089:113;5942:38:54;;;:::i;:::-;;;1931:10089:113;;;;;;;:::i;:::-;;5942:38:54;;;-1:-1:-1;5942:38:54;;5844:88;5886:35;;1931:10089:113;5886:35:54;1931:10089:113;;;;;5886:35:54;5506:97;5559:33;;1931:10089:113;5559:33:54;1931:10089:113;;;5559:33:54;1931:10089:113;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;1615:50:34;1931:10089:113;1615:50:34;;1658:4;1615:50;;;1931:10089:113;1615:50:34;:6;1931:10089:113;1615:6:34;1931:10089:113;1615:6:34;1931:10089:113;1615:50:34;;;;;;;1931:10089:113;1615:50:34;;;;1931:10089:113;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;2778:8;1931:10089;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10999:6;1931:10089;;;;;10999:44;;11037:4;10999:44;;;1931:10089;;10999:44;1931:10089;10999:44;;;;;;;;;1931:10089;10999:44;;;1931:10089;10971:72;;;1931:10089;;;11075:39;;11037:4;11075:39;;;1931:10089;;11075:39;1931:10089;11075:39;;;;;;;;;1931:10089;11075:39;;;1931:10089;11053:61;;;1931:10089;;;11155:50;;11037:4;11155:50;;;1931:10089;11155:50;;1931:10089;11155:50;;;;;;;;;1931:10089;11155:50;;;1931:10089;;;;11234:13;;:::i;:::-;1931:10089;;;;11289:35;;;1931:10089;11289:35;;11037:4;11289:35;;;1931:10089;11289:35;1931:10089;11289:35;;;;;;;;;;;;;;;1931:10089;11289:35;1931:10089;11289:35;;1931:10089;11289:35;;;;;;;1931:10089;11359:28;;;;;1931:10089;;;;;11478:31;11417:23;;;;;1931:10089;;;;;11478:31;1931:10089;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11289:35;;;;;;-1:-1:-1;11289:35:113;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;1931:10089;;;;;;;;;11155:50;;;;;;;;;;;;;;;;:::i;:::-;;;1931:10089;;;;;11155:50;;;;;;;;;1931:10089;;;;;;;;;11075:39;;;;;;1931:10089;11075:39;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;10999:44;;;;;;1931:10089;10999:44;;;;;;:::i;:::-;;;;;:::i;:::-;;;;1931:10089;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;3167:5:49;1931:10089:113;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;1441:44:34;1931:10089:113;1441:44:34;;1479:4;1441:44;;;1931:10089:113;;1441:6:34;1931:10089:113;1441:6:34;1931:10089:113;1441:6:34;1931:10089:113;1441:44:34;;;;;;;;1931:10089:113;1441:44:34;1931:10089:113;1441:44:34;;;1931:10089:113;;;;;;;;;;;;;;:::i;1441:44:34:-;;;;;;;1931:10089:113;1441:44:34;;;;;;:::i;:::-;;;;;;1931:10089:113;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;1247:38:34;1931:10089:113;1247:38:34;;1279:4;1247:38;;;1931:10089:113;;1247:6:34;1931:10089:113;1247:6:34;;;1931:10089:113;1247:38:34;;;;;;;1931:10089:113;;;;;;;1247:38:34;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:38:34;;;;;;;;;;1931:10089:113;1247:38:34;;;;;;:::i;:::-;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1247:38:34;;;;;;;;1931:10089:113;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1247:38:34;1931:10089:113;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;892:35:34;1931:10089:113;892:35:34;;921:4;892:35;;;1931:10089:113;;892:6:34;1931:10089:113;892:6:34;1931:10089:113;892:6:34;1931:10089:113;892:35:34;;;;;;;;1931:10089:113;892:35:34;1931:10089:113;892:35:34;;;1931:10089:113;;;;;;;;;;;;;;:::i;892:35:34:-;;;;;;;1931:10089:113;892:35:34;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;1931:10089:113;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;3345:39:54;1931:10089:113;;;:::i;:::-;;;;3345:39:54;;3361:10;3345:39;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:39:54;;:6;1931:10089:113;;3345:6:54;1931:10089:113;3345:39:54;;;;;;;;1931:10089:113;;;;;;;;3345:39:54;1931:10089:113;3345:39:54;;1931:10089:113;3345:39:54;;;;;;1931:10089:113;3345:39:54;;;:::i;:::-;;;1931:10089:113;;;;;;;;:::i;:::-;3345:39:54;;;;;;-1:-1:-1;3345:39:54;;;1931:10089:113;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;6274:41;;:135;;6437:23;;:::i;:::-;6427:56;1931:10089;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1931:10089:113;;;;;;;;1744:19:47;;;;;;:::i;:::-;1931:10089:113;;;;;;;;465:4:47;;;;1931:10089:113;;;;;;;;;;;;;;;1625:13:47;1931:10089:113;1625:13:47;;;;:::i;:::-;1931:10089:113;;;;2795:5:49;;-1:-1:-1;;;1931:10089:113;2795:5:49;;1931:10089:113;;2795:5:49;1931:10089:113;-1:-1:-1;1931:10089:113;;;;465:4:47;6419:3:49;1931:10089:113;;6389:28:49;;;;;6450:56;1931:10089:113;6466:11:49;:39;:11;;;;:::i;:::-;1931:10089:113;6484:20:49;;;;:::i;:::-;1931:10089:113;6466:39:49;;:::i;:::-;6450:56;;:::i;:::-;6419:3;1931:10089:113;6374:13:49;;;6389:28;;;;;;6531:14;;6527:67;;1931:10089:113;;;;;;6527:67:49;6568:15;;1931:10089:113;6568:15:49;1931:10089:113;6568:15:49;1931:10089:113;-1:-1:-1;1931:10089:113;;;;465:4:47;4710:3:49;1931:10089:113;;4680:28:49;;;;;465:4:47;838:5;1931:10089:113;4759:11:49;:41;:11;;;;:::i;:::-;1931:10089:113;4779:20:49;;;;:::i;:::-;1931:10089:113;4759:41:49;;:::i;:::-;838:5:47;;:::i;:::-;1931:10089:113;4710:3:49;1931:10089:113;4665:13:49;;;6274:135:113;6376:33;6274:135;;1931:10089;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;2951:6:54;1931:10089:113;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;6099:41:106;:5;:41;:::i;:::-;6554:8;:47;:8;:47;:::i;:::-;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:106;;1931:10089:113;;;;5625:4:106;1931:10089:113;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;1911:35:34;1931:10089:113;1911:35:34;;1940:4;1911:35;;;1931:10089:113;1911:35:34;:6;;;1931:10089:113;1911:6:34;1931:10089:113;1911:6:34;1931:10089:113;1911:35:34;;;;;;;1931:10089:113;1911:35:34;;;1931:10089:113;1986:37:34;;2063:38;1986:37;;;1931:10089:113;2063:38:34;;1931:10089:113;;;;;;;;;;;1911:35:34;;;;;;-1:-1:-1;1911:35:34;;;;;;:::i;:::-;;;;;1931:10089:113;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;:::i;:::-;;;;624:7:101;1931:10089:113;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;495:1:68;1931:10089:113;;;;;;;;;;;;;;436:67:68;;:::i;:::-;495:1;:::i;1931:10089:113:-;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;:::i;:::-;;;;;;;3082:40:54;;;;;1931:10089:113;3082:40:54;;3107:4;3082:40;;;1931:10089:113;;;;;;3082:6:54;1931:10089:113;3082:40:54;;;;;;;1931:10089:113;3082:40:54;;;1931:10089:113;;;;;;;3082:40:54;;;;;;;;;;;;;;;;;:::i;:::-;;;1931:10089:113;;;;;3082:40:54;;;;;;;;;1931:10089:113;;;;;;-1:-1:-1;;1931:10089:113;;;;;11979:32;1931:10089;11979:32;1931:10089;11979:32;1931:10089;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;2854:5;1931:10089;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;6339:10:54;-1:-1:-1;1931:10089:113;;;1121:7:101;1931:10089:113;;;;;;;;;;;;;;;;;;;;5175:32:54;1931:10089:113;;;:::i;:::-;436:67:68;;;;;:::i;:::-;1931:10089:113;;;;;;;;;;;5175:32:54;1931:10089:113;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;991:8:45;1931:10089:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;991:8:45;1931:10089:113;;;;;;;;;;;;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;;991:8:45;1931:10089:113;;;;;;;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;;-1:-1:-1;1931:10089:113;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11682:6;;;1931:10089;;;;;11682:35;;11711:4;11682:35;;;1931:10089;;11682:35;1931:10089;11682:35;;;;;;;;;;1931:10089;11682:35;;;;;;1931:10089;11668:49;;;1931:10089;;;11760:39;;;;1931:10089;11760:39;;11711:4;11760:39;;;1931:10089;11760:39;;;;;;;1931:10089;;11760:39;;1931:10089;11727:72;;;;;;11834:23;;:::i;:::-;11809:48;;1931:10089;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11760:39;;;;;;1931:10089;11760:39;;;;;;:::i;:::-;;;;1931:10089;;;;;;;;;11682:35;;;;;;;;;;;;;:::i;:::-;;;;;1931:10089;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;6533:20:54;;;:::i;1931:10089:113:-;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;2727:2:54;1931:10089:113;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;1443:95:54;1931:10089:113;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;2979:6:49;1931:10089:113;;;;;;;;;4942:26:54;1931:10089:113;;;:::i;:::-;;;;;;4124:49:54;1931:10089:113;;;;;:::i;:::-;;;;4124:49:54;;4144:10;4124:49;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:6:54;1931:10089:113;4124:49:54;;;;;;;;;1931:10089:113;;4190:4:54;1931:10089:113;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6851:34;6799;1931:10089;;;6799:34;;:::i;:::-;1931:10089;6851:34;;:::i;:::-;1931:10089;;8697:18:49;;;1931:10089:113;;;8730:16:49;8697:82;1931:10089:113;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1931:10089:113;;;;;;;2004:6:47;;;;;;2000:58;;2560:120;8984:34:49;2560:120:47;1931:10089:113;2560:120:47;;8909:57:49;2560:120:47;;;;1931:10089:113;8909:57:49;:::i;2000:58:47:-;2033:14;1931:10089:113;2033:14:47;1931:10089:113;2033:14:47;1931:10089:113;;;;;;;;;;;;;8909:57:49;8984:34;1931:10089:113;;;;;;8909:57:49;:::i;1931:10089:113:-;;;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;6333:26:49;465:4:47;6374:13:49;1931:10089:113;6369:148:49;1931:10089:113;;;6369:148:49;6531:14;;;;;6527:67;;1931:10089:113;;8909:57:49;8984:34;1931:10089:113;;;;8909:57:49;:::i;6527:67::-;6568:15;1931:10089:113;6568:15:49;1931:10089:113;6568:15:49;6419:3;1931:10089:113;;;465:4:47;1931:10089:113;6389:28:49;;;;;6466:11;;6450:56;6466:11;;:39;:11;;;;:::i;:::-;1931:10089:113;6484:20:49;;;:::i;6450:56::-;6419:3;1931:10089:113;6374:13:49;;;6389:28;;;;1931:10089:113;;;;;;4624:26:49;465:4:47;4665:13:49;1931:10089:113;4660:152:49;1931:10089:113;;;4826:14:49;;;;;4822:67;;1931:10089:113;;8909:57:49;8984:34;1931:10089:113;;;;8909:57:49;:::i;4710:3::-;1931:10089:113;;;465:4:47;1931:10089:113;4680:28:49;;;;;4759:11;;465:4:47;838:5;4759:11:49;;:41;:11;;;;:::i;:::-;1931:10089:113;4779:20:49;;;:::i;838:5:47:-;1931:10089:113;4710:3:49;1931:10089:113;4665:13:49;;;8697:82;;;;1931:10089:113;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;3819:43:54;1931:10089:113;;;:::i;:::-;;;;3819:43:54;;3834:10;3819:43;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;2434:8:54;1931:10089:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2434:8:54;1931:10089:113;;;;;;;;;;;;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;876:25:108;1931:10089:113;861:40:108;;1931:10089:113;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;:::o;:::-;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;465:4:47;1931:10089:113;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;:::o;2769:110:54:-;1931:10089:113;;;2839:33:54;;2866:4;2839:33;;;1931:10089:113;2839:33:54;:6;1931:10089:113;2839:6:54;1931:10089:113;2839:6:54;1931:10089:113;2839:33:54;;;;;;;-1:-1:-1;2839:33:54;;;2832:40;2769:110;:::o;2839:33::-;;;;;;;;;;;;;;;;;:::i;:::-;;;1931:10089:113;;;;;2769:110:54;:::o;2839:33::-;;;-1:-1:-1;2839:33:54;;;1931:10089:113;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;7134:1187::-;7264:24;;;;;;:41;7289:15;;;1931:10089;;;7264:41;;:::i;:::-;1931:10089;7349:24;;7374:16;7349:42;7374:16;;;1931:10089;;;7349:42;;:::i;:::-;1931:10089;;;;;;;:::i;:::-;;;;:::i;:::-;7406:33;;7672:38;7576:37;7728:27;1931:10089;;7576:37;:::i;:::-;1931:10089;;7672:38;:::i;:::-;7728:27;;1931:10089;465:4:47;838:5;;;;;:::i;:::-;1931:10089:113;10982:43:49;;10978:93;;11103:20;1744:19:47;11103:20:49;;;:::i;:::-;1744:19:47;;:::i;:::-;1931:10089:113;;;;;;;;;;;;;;;1625:13:47;11258:20:49;1625:13:47;838:5;1625:13;;:::i;:::-;11258:20:49;;:::i;:::-;5832:87:47;;;;;;;838:5;;:::i;:::-;1931:10089:113;7784:24;:::o;1931:10089::-;-1:-1:-1;;;1931:10089:113;2795:5:49;;;;;1931:10089:113;2795:5:49;10978:93;11048:12;1931:10089:113;11048:12:49;;1931:10089:113;11048:12:49;7402:913:113;8055:38;7959:37;8111:27;1931:10089;;;;;;7959:37;:::i;:::-;1931:10089;;8055:38;:::i;:::-;8111:27;;1931:10089;465:4:47;838:5;;;:::i;:::-;1931:10089:113;13380:46:49;;13376:97;;2795:5;;;;;;;;1744:19:47;;;13618:20:49;1744:19:47;;:::i;:::-;;;:::i;13618:20:49:-;2795:5;;;;;;;;13884:22;;;:::i;13376:97::-;13449:13;1931:10089:113;13449:13:49;;1931:10089:113;13449:13:49;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;8327:712::-;8458:15;;;8484:18;;8477:25;:::o;8454:579::-;8537:1;8523:15;;8537:1;;8549:18;;8542:25;:::o;8519:514::-;8602:1;8588:15;;8602:1;;8614:18;;8607:25;:::o;8584:449::-;8667:1;8653:15;;8667:1;;8679:18;;8672:25;:::o;8649:384::-;8732:1;8718:15;;8732:1;;8744:18;;8737:25;:::o;8714:319::-;8797:1;8783:15;;8797:1;;8809:18;;8802:25;:::o;8779:254::-;8862:1;8848:15;;8862:1;;8874:18;;8867:25;:::o;8844:189::-;8927:1;8913:15;8927:1;;8939:18;8932:25;:::o;8909:124::-;8995:27;1931:10089;8995:27;8732:1;1931:10089;8995:27;509:165:68;1931:10089:113;586:6:68;1931:10089:113;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;1931:10089:113;;616:41:68;;3845:262:106;1931:10089:113;3938:11:106;1931:10089:113;3929:4:106;3921:28;:63;;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;1931:10089:113;;4204:80:106;;;1931:10089:113;2079:95:106;1931:10089:113;;4226:11:106;1931:10089:113;2079:95:106;;1931:10089:113;4239:14:106;2079:95;;;1931:10089:113;4255:13:106;2079:95;;;1931:10089:113;3929:4:106;2079:95;;;1931:10089:113;2079:95:106;4204:80;;2079:95;1931:10089:113;;;;;;;;;;;;;;4194:91:106;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;9045:1054:113;9159:12;1931:10089;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;;1931:10089:113;;;;;;;;;;;;;9319:18;1931:10089;;;;9369:1;1931:10089;;;;9374:18;1931:10089;;;;9424:1;9410:15;;9424:1;;;1931:10089;;9424:1;1931:10089;;;;9452:18;1931:10089;;;;9539:1;9525:15;;9539:1;;;1931:10089;;9539:1;1931:10089;;;;9567:18;1931:10089;;;;9654:1;;9640:15;;;9654:1;;;1931:10089;;;;;;;9682:18;1931:10089;;;;9769:1;9755:15;;9769:1;;;1931:10089;;9769:1;1931:10089;;;;9797:18;1931:10089;;;;9884:1;9870:15;;9884:1;;;1931:10089;;9884:1;1931:10089;;;;9999:1;9912:18;;1931:10089;;;;9985:15;9981:67;;10068:24;9045:1054;:::o;9981:67::-;1931:10089;;9999:1;1931:10089;;;;10027:18;;1931:10089;;;;9045:1054;:::o;1931:10089::-;;;-1:-1:-1;;;;1931:10089:113;;;-1:-1:-1;1931:10089:113;;;;-1:-1:-1;;;;1931:10089:113;;;-1:-1:-1;1931:10089:113;9866:102;9941:24;;;:::o;9521:102::-;9596:24;;:::o;2734:5:49:-;;;;;;;;;;:::o;1931:10089:113:-;;2795:5:49;1931:10089:113;;;;;;;;;;;;;;;:::o;:::-;;638:5:47;1931:10089:113;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;-1:-1:-1;;;1931:10089:113;;;;;;;;4760:637:47;;465:4;;4997:8;;;465:4;;5021:8;;;:::o;4993:398::-;1931:10089:113;5050:8:47;;1931:10089:113;;5081:11:47;;;;;;:::i;5046:345::-;1931:10089:113;5113:9:47;;1931:10089:113;;5155:11:47;;;;5187:21;5155:11;;:::i;:::-;5187:21;;:::i;5109:282::-;5253:20;;;;:::i;:::-;1068:5;1931:10089:113;1068:5:47;;;:::i;:::-;1186:122;;;;;;;;;;1931:10089:113;2734:5:49;;;;;;;5366:14:47;;;:::i;887:427::-;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;;;;;;;;;;887:427;:::o;3385:267:102:-;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;1931:10089:113;;;;;;:::i;:::-;2367:90:102;;2311:2;1931:10089:113;;2367:90:102;3570:22;:::o;2702:69::-;2740:20;1931:10089:113;2740:20:102;;1931:10089:113;2740:20:102;3504:142;1931:10089:113;;;-1:-1:-1;1931:10089:113;-1:-1:-1;1931:10089:113;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;;;;;;;;:::i;1931:10089:113:-;;;;-1:-1:-1;1931:10089:113;;;;-1:-1:-1;1931:10089:113;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;;;;;;;1390:66:102;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;3385:267:102;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;1931:10089:113;;;;;;:::i;3504:142:102:-;1931:10089:113;;;-1:-1:-1;6584:16:106;;1931:10089:113;6584:16:106;1931:10089:113;;;;:::i;:::-;;;;;;;6584:16:106;1931:10089:113;;;6584:16:106;;;;1931:10089:113;;;;;1390:66:102;;;;;;;;:::i;1931:10089:113:-;;;;6584:16:106;-1:-1:-1;1931:10089:113;;;-1:-1:-1;1931:10089:113;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1931:10089:113;;;;;;3736:794:47;465:4;;3975:8;;;465:4;;3999:8;;;;:::o;3971:553::-;4028:8;;1931:10089:113;4028:8:47;;1931:10089:113;;838:5:47;;;;;;:::i;4024:500::-;1931:10089:113;4093:9:47;;1931:10089:113;;838:5:47;;;;;;:::i;:::-;1931:10089:113;838:5:47;;:::i;4089:435::-;4237:20;;;;;:::i;:::-;1068:5;;;:::i;:::-;1931:10089:113;1186:122:47;;;;;;;;;;;2734:5:49;1931:10089:113;2734:5:49;;;;;;;4347:14:47;;;;;4381:8;;;1931:10089:113;4381:8:47;:::o;4343:171::-;1931:10089:113;;4460:21:47;:::o;5140:1530:105:-;;;6199:66;6186:79;;6182:164;;1931:10089:113;;;;;;;;;;;;;;;;;;;;;;;;;;6457:24:105;;;;;;;;;1931:10089:113;6457:24:105;1931:10089:113;;;6495:20:105;6491:113;;6614:49;1931:10089:113;6614:49:105;1931:10089:113;5140:1530:105;:::o;6491:113::-;6531:62;1931:10089:113;6531:62:105;6457:24;6531:62;1931:10089:113;6531:62:105;:::o;6182:164::-;6281:54;;;1931:10089:113;6281:54:105;6301:30;6281:54;;:::o;7196:532::-;1931:10089:113;;;;;;7282:29:105;;;7327:7;;:::o;7278:444::-;1931:10089:113;7378:38:105;;1931:10089:113;;7439:23:105;-1:-1:-1;7439:23:105;1931:10089:113;-1:-1:-1;7439:23:105;7374:348;7492:35;7483:44;;7492:35;;7550:46;;-1:-1:-1;7550:46:105;1931:10089:113;;;-1:-1:-1;7550:46:105;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;-1:-1:-1;7679:32:105;1931:10089:113;;;-1:-1:-1;7679:32:105;1822:864:47;;2004:6;;2000:58;;465:4;1931:10089:113;;;;;;;;;;;;;;;2560:120:47;;;;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;2648:13:48;;;;;;;;:::o;:::-;;;;;;;:::o;4496:2300::-;;4577:6;;4573:131;;4718:6;;4714:45;;1564:4;1931:10089:113;1564:4:48;5129:68;;1931:10089:113;5591:24:48;;;5587:83;;5774:28;2707:26;5774:28;:60;;;4496:2300;5770:720;;;1564:4;;1789;;21319:38;;2648:13;;2593;;;;2707:26;;2648:13;;21319:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22285:2;2648:13;;;22203:2;2648:13;;;22121:2;2648:13;;;22040:1;2648:13;;;21959:1;2648:13;;;21878:1;2648:13;;;21797:1;2648:13;;2593;;;;;;;2648;;;;;;;;;;;;;2593;1564:4;5770:720;;2648:13;2400:6;6615:36;;;;:76;;;5770:720;6613:79;6609:137;;6771:17;7080:25;;;;:54;;;5770:720;7078:57;7074:112;;1931:10089:113;7316:5:48;1931:10089:113;7316:5:48;;7312:417;;5770:720;-1:-1:-1;9497:3:48;;2789:21;9082:7;;2789:21;;2707:26;;1754:4;9134:12;2845:56;9078:252;;2648:13;9723:23;9785:7;3117:22;9785:7;;;9781:104;;9078:252;3246:22;9902:7;;;9898:104;;9078:252;3368:21;10019:7;;;10015:104;;9078:252;3486:21;10136:7;;;10132:104;;9078:252;3602:21;10253:7;;;10249:104;;9078:252;10370:7;;;;10366:104;;9078:252;3832:20;10487:7;;;10483:104;;9078:252;3947:20;10604:7;;;10600:104;;9078:252;11567:1;2648:13;;;;;;11645:1;2648:13;;;;;;11723:1;2648:13;;;;;;;11801:1;2648:13;;;;;;11879:1;2648:13;;;;;;11957:1;2648:13;;;;;;;12035:1;2648:13;;;;;;;12113:1;2648:13;;;;;;;12191:2;2648:13;;;;;;;12270:2;2648:13;;;;;;;12349:2;2648:13;;;;;;2593;;;;;;;;;;;;;2648;;;;13075:54;;;;;13094:26;;;:::i;10600:104::-;4003:21;2707:26;;;;2648:13;;;10600:104;;;10483;3888:21;2707:26;;;;2648:13;;;10483:104;;;10366;3773:21;2707:26;;;;2648:13;;;10366:104;;;10249;3658:21;2707:26;;;;2648:13;;;10249:104;;;10132;3542:22;2707:26;;;;2648:13;;;10132:104;;;10015;3424:24;2707:26;;;;2648:13;;;10015:104;;;9898;3303:27;2707:26;;;;2648:13;;;9898:104;;;9781;3174:34;;-1:-1:-1;2707:26:48;;9781:104;;9078:252;2953:20;9171:7;;2953:20;;2707:26;;1754:4;9223:12;3008:28;9167:163;9078:252;;9167:163;1754:4;9274:11;9284:1;9167:163;9078:252;;7312:417;7714:4;;-1:-1:-1;1931:10089:113;4181:19:48;;-1:-1:-1;9497:3:48;7312:417;;7074:112;7158:17;1931:10089:113;7158:17:48;;1931:10089:113;7158:17:48;7080:54;7109:25;2349:6;7109:25;;;7080:54;;6609:137;6715:20;1931:10089:113;6715:20:48;;1931:10089:113;6715:20:48;6615:76;6655:36;2349:6;6655:36;;;6615:76;;5770:720;6451:13;1564:4;6451:13;1931:10089:113;14954:10:48;;;;14950:381;;5770:720;16656:14;17116:3;16656:14;1931:10089:113;2648:13:48;16708:16;;;16704:126;;5770:720;2648:13;16848:16;;;16844:126;;5770:720;2648:13;;;;;;;3174:34;;17276:7;;;;17272:94;;5770:720;3303:27;;;17384:7;;;;17380:94;;5770:720;3424:24;;17492:7;;;;17488:94;;5770:720;3542:22;;17600:7;;;;17596:94;;5770:720;3658:21;;17708:7;;;;17704:94;;5770:720;3773:21;;17816:7;;;;17812:94;;5770:720;3888:21;;17924:7;;;;17920:94;;5770:720;4003:21;;18032:7;;;;18028:94;;5770:720;4120:21;;18140:8;;;;18136:97;;5770:720;4237:21;;18251:8;;;;18247:97;;5770:720;1754:4;18891:38;1754:4;2593:13;;2707:26;2593:13;;;2707:26;;2648:13;18891:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;19369:1;19450;19531;19612;19693:2;2648:13;;;;;;;;;;;;;;;;;;;;;;;;2593;;;;;2648;;2593;2648;20303:35;;;;;1931:10089:113;4181:19:48;20303:35;2648:13;5770:720;;20303:35;;;18247:97;1754:4;4181:19;2648:13;;;2593;;18247:97;;;;18136;1754:4;4063:20;2648:13;;;2593;;18136:97;;;;18028:94;1754:4;3947:20;2648:13;;;2593;;18028:94;;;;17920;1754:4;3832:20;2648:13;;;2593;;17920:94;;;;17812;1754:4;2648:13;;;;2593;;17812:94;;;;17704;1754:4;3602:21;2648:13;;;2593;;17704:94;;;;17596;1754:4;3486:21;2648:13;;;2593;;17596:94;;;;17488;1754:4;3368:21;2648:13;;;2593;;17488:94;;;;17380;1754:4;3246:22;2648:13;;;2593;;17380:94;;;;17272;3117:22;2648:13;;;;;2593;;17272:94;;;;;16844:126;2648:13;3008:28;2953:20;2648:13;;2593;;16844:126;;16704;2648:13;2845:56;2648:13;;2789:21;16704:126;;14950:381;15248:21;;;;;;:::i;:::-;15316:4;;17116:3;14950:381;;5774:60;5806:28;2593:13;5806:28;;5774:60;;5587:83;5638:21;1931:10089:113;5638:21:48;;1931:10089:113;5638:21:48;5129:68;5169:17;1931:10089:113;5169:17:48;;1931:10089:113;5169:17:48;4714:45;4740:8;;1931:10089:113;4740:8:48;:::o;4573:131::-;4671:22;;1564:4;4671:22;:::o"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","computeBalance(uint256[],uint256,uint256)":"16a0b3e0","computeInvariant(uint256[],uint8)":"984de9e8","decimals()":"313ce567","eip712Domain()":"84b0196e","emitApproval(address,address,uint256)":"5687f2b8","emitTransfer(address,address,uint256)":"23de6651","getAggregateFeePercentages()":"81fa807c","getCurrentLiveBalances()":"b156aa0a","getMaximumInvariantRatio()":"273c1adf","getMaximumSwapFeePercentage()":"654cf15d","getMinimumInvariantRatio()":"b677fa56","getMinimumSwapFeePercentage()":"ce20ece7","getNormalizedWeights()":"f89f27ed","getRate()":"679aefce","getStaticSwapFeePercentage()":"d335b0cf","getTokenInfo()":"abb1dc44","getTokens()":"aa6ca808","getVault()":"8d928af8","getWeightedPoolDynamicData()":"c0bc6f33","getWeightedPoolImmutableData()":"53b79bd7","incrementNonce()":"627cdcb9","name()":"06fdde03","nonces(address)":"7ecebe00","onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))":"72c98186","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"numTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"internalType\":\"struct WeightedPool.NewPoolParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseOutOfBounds\",\"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\":[],\"name\":\"ExponentOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxInRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxOutRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinWeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NormalizedWeightInvariant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProductOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WeightedPoolBptRateUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroInvariant\",\"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\":[],\"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[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"rounding\",\"type\":\"uint8\"}],\"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\":[],\"name\":\"getAggregateFeePercentages\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"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\":\"getNormalizedWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"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\":\"getWeightedPoolDynamicData\",\"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\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct WeightedPoolDynamicData\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeightedPoolImmutableData\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"}],\"internalType\":\"struct WeightedPoolImmutableData\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"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\"}],\"devdoc\":{\"details\":\"Weighted Pools are designed for uncorrelated assets, and use `WeightedMath` (from Balancer v1 and v2) to compute the price curve. There can be up to 8 tokens in a weighted pool (same as v2), and the normalized weights (expressed as 18-decimal floating point numbers), must sum to FixedPoint.ONE. Weights cannot be changed after deployment. The swap fee percentage is bounded by minimum and maximum values (same as were used in v2).\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC2612ExpiredSignature(uint256)\":[{\"params\":{\"deadline\":\"The permit deadline that expired\"}}],\"ERC2612InvalidSigner(address,address)\":[{\"params\":{\"owner\":\"The address of the owner (expected value of the signature provider)\",\"signer\":\"The address corresponding to the signature provider\"}}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"WeightedPoolBptRateUnsupported()\":[{\"details\":\"It is not safe to nest Weighted Pools as WITH_RATE tokens in other pools, where they function as their own rate provider. The default `getRate` implementation from `BalancerPoolToken` computes the BPT rate using the invariant, which has a non-trivial (and non-linear) error. Without the ability to specify a rounding direction, the rate could be manipulable. It is fine to nest Weighted Pools as STANDARD tokens, or to use them with external rate providers that are stable and have at most 1 wei of rounding error (e.g., oracle-based).\"}],\"ZeroInvariant()\":[{\"details\":\"Most commonly, this happens when a token balance is zero.\"}]},\"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.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"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`.\"},\"computeBalance(uint256[],uint256,uint256)\":{\"details\":\"Similar to V2's `_getTokenBalanceGivenInvariantAndAllOtherBalances` in StableMath. The pool must round up for the Vault to round in the protocol's favor when calling this function.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"tokenInIndex\":\"The index of the token we're computing the balance for, sorted in token registration order\"},\"returns\":{\"newBalance\":\"The new balance of the selected token, after the operation\"}},\"computeInvariant(uint256[],uint8)\":{\"details\":\"This function computes the invariant based on current balances (and potentially other pool state). The rounding direction must be respected for the Vault to round in the pool's favor when calling this function. If the invariant computation involves no precision loss (e.g. simple sum of balances), the same result can be returned for both rounding directions. You can think of the invariant as a measure of the \\\"value\\\" of the pool, which is related to the total liquidity (i.e., the \\\"BPT rate\\\" is `invariant` / `totalSupply`). Two critical properties must hold: 1) The invariant should not change due to a swap. In practice, it can *increase* due to swap fees, which effectively add liquidity after the swap - but it should never decrease. 2) The invariant must be \\\"linear\\\"; i.e., increasing the balances proportionally must increase the invariant in the same proportion: inv(a * n, b * n, c * n) = inv(a, b, c) * n Property #1 is required to prevent \\\"round trip\\\" paths that drain value from the pool (and all LP shareholders). Intuitively, an accurate pricing algorithm ensures the user gets an equal value of token out given token in, so the total value should not change. Property #2 is essential for the \\\"fungibility\\\" of LP shares. If it did not hold, then different users depositing the same total value would get a different number of LP shares. In that case, LP shares would not be interchangeable, as they must be in a fair DEX.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"rounding\":\"Rounding direction to consider when computing the invariant\"},\"returns\":{\"_0\":\"The calculated invariant of the pool, represented as a uint256\"}},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"emitApproval(address,address,uint256)\":{\"details\":\"Emit the Approval event. This function can only be called by the MultiToken.\"},\"emitTransfer(address,address,uint256)\":{\"details\":\"Emit the Transfer event. This function can only be called by the MultiToken.\"},\"getAggregateFeePercentages()\":{\"details\":\"These are determined by the current protocol and pool creator fees, set in the `ProtocolFeeController`.\",\"returns\":{\"aggregateSwapFeePercentage\":\"The aggregate percentage fee applied to swaps\",\"aggregateYieldFeePercentage\":\"The aggregate percentage fee applied to yield\"}},\"getCurrentLiveBalances()\":{\"details\":\"Note that live balances will not necessarily be accurate if the pool is in Recovery Mode. Withdrawals in Recovery Mode do not make external calls (including those necessary for updating live balances), so if there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\",\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getMaximumInvariantRatio()\":{\"returns\":{\"_0\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMaximumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"_0\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The minimum swap fee percentage for a pool\"}},\"getNormalizedWeights()\":{\"returns\":{\"_0\":\"The normalized weights, sorted in token registration order\"}},\"getRate()\":{\"details\":\"The meaning of this rate depends on the context. Note that there may be an error associated with a token rate, and the caller might require a certain rounding direction to ensure correctness. This (legacy) interface does not take a rounding direction or return an error, so great care must be taken when interpreting and using rates in downstream computations.\",\"returns\":{\"_0\":\"The current token rate\"}},\"getStaticSwapFeePercentage()\":{\"returns\":{\"_0\":\"18-decimal FP value of the static swap fee percentage\"}},\"getTokenInfo()\":{\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"Pool tokens, sorted in token registration order\"}},\"getTokens()\":{\"returns\":{\"tokens\":\"List of tokens in the pool, sorted in registration order\"}},\"getWeightedPoolDynamicData()\":{\"returns\":{\"data\":\"A struct containing all dynamic weighted pool parameters\"}},\"getWeightedPoolImmutableData()\":{\"returns\":{\"data\":\"A struct containing all immutable weighted pool parameters\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"params\":{\"params\":\"Swap parameters (see above for struct definition)\"},\"returns\":{\"_0\":\"Calculated amount for the swap operation\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"BaseOutOfBounds()\":[{\"notice\":\"This error is thrown when a base is not within an acceptable range.\"}],\"ERC2612ExpiredSignature(uint256)\":[{\"notice\":\"Operation failed due to an expired permit signature.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"notice\":\"Operation failed due to a non-matching signature.\"}],\"ExponentOutOfBounds()\":[{\"notice\":\"This error is thrown when a exponent is not within an acceptable range.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InvalidExponent()\":[{\"notice\":\"This error is thrown when an exponent used in the exp function is not within an acceptable range.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"MaxInRatio()\":[{\"notice\":\"User attempted to add a disproportionate amountIn of tokens to a pool.\"}],\"MaxOutRatio()\":[{\"notice\":\"User attempted to extract a disproportionate amountOut of tokens from a pool.\"}],\"MinWeight()\":[{\"notice\":\"Indicates that one of the pool tokens' weight is below the minimum allowed.\"}],\"NormalizedWeightInvariant()\":[{\"notice\":\"Indicates that the sum of the pool tokens' weights is not FixedPoint.ONE.\"}],\"ProductOutOfBounds()\":[{\"notice\":\"This error is thrown when the exponent * ln(base) is not within an acceptable range.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"WeightedPoolBptRateUnsupported()\":[{\"notice\":\"`getRate` from `IRateProvider` was called on a Weighted Pool.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}],\"ZeroInvariant()\":[{\"notice\":\"Error thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.\"}]},\"kind\":\"user\",\"methods\":{\"computeBalance(uint256[],uint256,uint256)\":{\"notice\":\"Computes a new token balance, given the invariant growth ratio and all other balances.\"},\"computeInvariant(uint256[],uint8)\":{\"notice\":\"Computes the pool's invariant.\"},\"getAggregateFeePercentages()\":{\"notice\":\"Gets the aggregate swap and yield fee percentages for a pool.\"},\"getCurrentLiveBalances()\":{\"notice\":\"Gets the current live balances of the pool as fixed point, 18-decimal numbers.\"},\"getNormalizedWeights()\":{\"notice\":\"Get the normalized weights.\"},\"getRate()\":{\"notice\":\"An 18 decimal fixed point number representing the exchange rate of one token to another related token.\"},\"getStaticSwapFeePercentage()\":{\"notice\":\"Fetches the static swap fee percentage for the pool.\"},\"getTokenInfo()\":{\"notice\":\"Gets the raw data for the pool: tokens, token info, raw balances, and last live balances.\"},\"getTokens()\":{\"notice\":\"Gets the tokens registered in the pool.\"},\"getWeightedPoolDynamicData()\":{\"notice\":\"Get dynamic pool data relevant to swap/add/remove calculations.\"},\"getWeightedPoolImmutableData()\":{\"notice\":\"Get immutable pool data relevant to swap/add/remove calculations.\"},\"incrementNonce()\":{\"notice\":\"Increment the sender's nonce to revoke any currently granted (but not yet executed) `permit`.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Execute a swap in the pool.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Standard Balancer Weighted Pool, with fixed weights.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/WeightedPool.sol\":\"WeightedPool\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol\":{\"keccak256\":\"0x4dbf765d0fba4be1552aa5309aadee71929f74a84818cd453bb23f873ca91bd7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://65c241e3f125e87cea6cad51b075c6d821ba89e45756d8a57590a1f0c6b0d409\",\"dweb:/ipfs/Qmdhs7Fri1yfaRN4S5mPbr76ytv4EhxDntWeYw6mspw1Xq\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":{\"keccak256\":\"0xb31be209c69a6e60f4486b793bfc57b3ab7aa25efd29f40e981d5b9c95196f7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://04a10cf9c7a408f0d617d8f25dedd1d4d8d0411ac022b26293b39fccfbf41c71\",\"dweb:/ipfs/QmaExV5EYT4dtE9EAybKaraqXnbpM4usyAfFV5DHfatkof\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/WeightedPool.sol\":{\"keccak256\":\"0x6f31c5cde7725828cd8dae2a9d79efb8980ab5e5b192ec1073aac995a741f2fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64de9af946ef860d74237133bd560e6bbad8921ede3a46ba01466cf38f8be036\",\"dweb:/ipfs/Qmc6qAAmJ6qLYRWXNTafJ1ivo48yNVJntAXf7X4LYwySWb\"]}},\"version\":1}"}},"contracts/WeightedPool8020Factory.sol":{"WeightedPool8020Factory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"uint32","name":"pauseWindowDuration","type":"uint32"},{"internalType":"string","name":"factoryVersion","type":"string"},{"internalType":"string","name":"poolVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Create2EmptyBytecode","type":"error"},{"inputs":[],"name":"Create2FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"Create2InsufficientBalance","type":"error"},{"inputs":[],"name":"Disabled","type":"error"},{"inputs":[],"name":"IndexOutOfBounds","type":"error"},{"inputs":[],"name":"PoolPauseWindowDurationOverflow","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"StandardPoolWithCreator","type":"error"},{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig","name":"highWeightTokenConfig","type":"tuple"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig","name":"lowWeightTokenConfig","type":"tuple"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"create","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disable","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":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultLiquidityManagement","outputs":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getDefaultPoolHooksContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"constructorArgs","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"getDeploymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNewPoolPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOriginalPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"highWeightToken","type":"address"},{"internalType":"contract IERC20","name":"lowWeightToken","type":"address"}],"name":"getPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getPoolsInRange","outputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_string_fromMemory":{"entryPoint":1101,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":1064,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":1238,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1182,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"610100604052346104245761649e8038038061001a81610428565b9283398101608082820312610424578151916001600160a01b038316830361042457602092838201519363ffffffff808616958681036104245760408501516001600160401b039590868111610424578761007691830161044d565b9660608201518781116104245761008d920161044d565b966146c59461009d858701610428565b95808752611dd9868801393060805260a052420190814211610410578282116104015760c0521660e05281519383851161035f576003946100de865461049e565b93601f948581116103d5575b5083908583116001146103735761011892915f9183610210575b50508160011b915f199060031b1c19161790565b85555b805184811161035f57600491610131835461049e565b858111610329575b5083908583116001146102c75761016692915f91836102105750508160011b915f199060031b1c19161790565b81555b85519384116102b45750600593610180855461049e565b838111610280575b508192841160011461021b57505081906101b793945f926102105750508160011b915f199060031b1c19161790565b90555b6040516118ec90816104ed823960805181611360015260a0518181816101fa015281816109fd01528181610b26015281816113dd01526117cf015260c0518161028d015260e051818181610129015261144d0152f35b015190505f80610104565b9091601f19841695855f52835f20935f905b88821061026857505084600196971061024f575b50505050811b0190556101ba565b01519060f8845f19921b161c191690555f808080610241565b8060018597829496860151815501960193019061022d565b6102a590865f52835f2085808801891c8201928689106102ab575b01881c01906104d6565b5f610188565b9250819261029b565b604190634e487b7160e01b5f525260245ffd5b90601f19831691845f52855f20925f5b878282106103135750509084600195949392106102fc575b505050811b018155610169565b01515f19838a1b60f8161c191690555f80806102ef565b60018596829396860151815501950193016102d7565b61035090845f52855f208780860160051c820192888710610356575b0160051c01906104d6565b5f610139565b92508192610345565b634e487b7160e01b5f52604160045260245ffd5b90601f19831691885f52855f20925f5b878282106103bf5750509084600195949392106103a8575b505050811b01855561011b565b01515f19838a1b60f8161c191690555f808061039b565b6001859682939686015181550195019301610383565b6103fb90885f52855f208780860160051c820192888710610356570160051c01906104d6565b5f6100ea565b6368755a1160e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761035f57604052565b81601f82011215610424578051906001600160401b03821161035f5761047c601f8301601f1916602001610428565b928284526020838301011161042457815f9260208093018386015e8301015290565b90600182811c921680156104cc575b60208310146104b857565b634e487b7160e01b5f52602260045260245ffd5b91607f16916104ad565b8181106104e1575050565b5f81556001016104d656fe60806040526004361015610011575f80fd5b5f80358060e01c908163193ad50f14610ef45781632f2770db14610da7575080633f819b6f14610d7857806344f6fec714610d015780634bef86d914610626578063531aa03e146105be57806353a72f7e1461049757806354fd4d50146103b85780636634b7531461036f578063673a2a1f146102d45780636c57f5a9146102b157806378da80cb14610270578063851c1bb31461021e5780638d928af8146101cd5780638eec5d70146101af578063aaabadc514610176578063db035ebc1461014d578063e9d56e191461010c5763ec888061146100ee575f80fd5b34610109578060031936011261010957602090604051908152f35b80fd5b5034610109578060031936011261010957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610109578060031936011261010957602061016861144b565b63ffffffff60405191168152f35b5034610109578060031936011261010957602061019161139a565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346101095780600319360112610109576020600154604051908152f35b5034610109578060031936011261010957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461010957602060031936011261010957600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361010957602061026883611335565b604051908152f35b5034610109578060031936011261010957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610109578060031936011261010957602060ff600254166040519015158152f35b5034610109578060031936011261010957604051600180548083528184526020808401947fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69392915b8282106103445761034086610334818a0382610fa0565b60405191829182611002565b0390f35b845473ffffffffffffffffffffffffffffffffffffffff16875295860195938301939083019061031d565b50346101095760206003193601126101095760ff604060209273ffffffffffffffffffffffffffffffffffffffff6103a5610fdf565b1681528084522054166040519015158152f35b50346101095780600319360112610109576040516004545f826103da83611077565b91828252602093600190856001821691825f1461047757505060011461041c575b5061040892500383610fa0565b610340604051928284938452830190610f43565b84915060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b905f915b85831061045f5750506104089350820101856103fb565b80548389018501528794508693909201918101610448565b60ff19168582015261040895151560051b85010192508791506103fb9050565b503461010957604060031936011261010957600435906024356001926001548082101561059657806104c984846112c6565b11610555575b506104d98261126d565b926104e76040519485610fa0565b828452601f196104f68461126d565b013660208601375b82811061051357604051806103408682611002565b8073ffffffffffffffffffffffffffffffffffffffff61053c6105378894866112c6565b611300565b90549060031b1c1661054e8287611285565b52016104fe565b90809250810390811161056957905f6104cf565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004847f4e23d035000000000000000000000000000000000000000000000000000000008152fd5b5034610109576040600319360112610109576105d8610fdf565b73ffffffffffffffffffffffffffffffffffffffff602435818116810361062257826106138261060d61061994602097611519565b9261187a565b90611218565b60405191168152f35b5f80fd5b346106225760031936016101808112610622576080136106225760405161064c81610f68565b60043573ffffffffffffffffffffffffffffffffffffffff81168103610622578152602435600281101561062257602082015260443573ffffffffffffffffffffffffffffffffffffffff81168103610622576040820152606435801515810361062257606082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610622576040516106eb81610f68565b60843573ffffffffffffffffffffffffffffffffffffffff8116810361062257815260a435600281101561062257602082015260c43573ffffffffffffffffffffffffffffffffffffffff8116810361062257604082015260e435801515810361062257606082015260607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc36011261062257604051916060830183811067ffffffffffffffff821117610b78576040526101043573ffffffffffffffffffffffffffffffffffffffff811681036106225783526101243573ffffffffffffffffffffffffffffffffffffffff811681036106225760208401526101443573ffffffffffffffffffffffffffffffffffffffff811690818103610622576040850152610cd95773ffffffffffffffffffffffffffffffffffffffff8151169073ffffffffffffffffffffffffffffffffffffffff835116906040519361085085610f84565b600285525f5b60408110610cc257506108ed92916108e2916108d06040519261087884610f84565b60028452604036602086013785881115610caa575f906702c68af0bb1400006108be60ff8060015b16941687670b1a2bc2ec5000006108b887849b611285565b52611285565b526108c9828b611285565b5288611285565b506108db8288611285565b5285611285565b5061060d8184611519565b6040519161091f836020808201936109048561118c565b90805192839101825e015f815203601f198101855284610fa0565b825115610c825773ffffffffffffffffffffffffffffffffffffffff9251905ff516908115610c5a57610950611482565b815f525f60205260405f20600160ff1982541617905560015468010000000000000000811015610b785780600161098a9201600155611300565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff85831b921b1916179055817f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc5f80a26109dd611053565b6109e561144b565b9373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b15610622579390916040519485927feeec802f0000000000000000000000000000000000000000000000000000000084526101a484018660048601526101a06024860152835180915260206101c486019401905f5b818110610bb0575050505f9473ffffffffffffffffffffffffffffffffffffffff604086959463ffffffff610b0c956101643560448a01521660648801528860848801528281511660a48801528260208201511660c488015201511660e4850152856101048501526101248401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610ba557610b5e575b602090604051908152f35b67ffffffffffffffff8211610b7857602091604052610b53565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b918097965094909293945173ffffffffffffffffffffffffffffffffffffffff81511682526020810151906002821015610c2d5782606060809260209485600197015273ffffffffffffffffffffffffffffffffffffffff6040820151166040840152015115156060820152019701910191889596949392610a73565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001906702c68af0bb1400006108be60ff805f6108a0565b602090610ccd611053565b82828901015201610856565b7f61ee1764000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106225760406003193601126106225760043567ffffffffffffffff8111610622573660238201121561062257806004013590610d3e82610fc3565b610d4b6040519182610fa0565b8281523660248484010111610622575f602084819560246101919601838601378301015260243590611218565b34610622575f60031936011261062257610340610d936110c8565b604051918291602083526020830190610f43565b34610622575f600319360112610622577fffffffff00000000000000000000000000000000000000000000000000000000610de29116611335565b602073ffffffffffffffffffffffffffffffffffffffff610e0161139a565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa908115610ba5575f91610eb9575b5015610e9157610e5e611482565b600160ff1960025416176002557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d505f80a1005b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506020813d602011610eec575b81610ed460209383610fa0565b81010312610622575180151581036106225781610e50565b3d9150610ec7565b34610622575f600319360112610622576080610f0e611053565b610f4160405180926060809180511515845260208101511515602085015260408101511515604085015201511515910152565bf35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6080810190811067ffffffffffffffff821117610b7857604052565b6060810190811067ffffffffffffffff821117610b7857604052565b90601f601f19910116810190811067ffffffffffffffff821117610b7857604052565b67ffffffffffffffff8111610b7857601f01601f191660200190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361062257565b60209060206040818301928281528551809452019301915f5b828110611029575050505090565b835173ffffffffffffffffffffffffffffffffffffffff168552938101939281019260010161101b565b6040519061106082610f68565b5f6060838281528260208201528260408201520152565b90600182811c921680156110be575b602083101461109157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691611086565b604051905f82600554916110db83611077565b808352926020906001908181169081156111675750600114611108575b505061110692500383610fa0565b565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b82841061114f57506111069450505081016020015f806110f8565b85548885018301529485019487945092810192611134565b90506020935061110695925060ff1991501682840152151560051b8201015f806110f8565b6003545f929161119b82611077565b9160019081811690811561120557506001146111b657505050565b909192935060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f915b8483106111f2575050500190565b81816020925485870152019201916111e4565b60ff191683525050811515909102019150565b605591600b9160405161124f816020808201946112348661118c565b90805192839101825e015f815203601f198101835282610fa0565b5190209060405191604083015260208201523081520160ff81532090565b67ffffffffffffffff8111610b785760051b60200190565b80518210156112995760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082018092116112d357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001548110156112995760015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905f90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f000000000000000000000000000000000000000000000000000000000000000084521660408201526024815261139481610f84565b51902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610ba5575f9261141257505090565b9091506020813d602011611443575b8161142e60209383610fa0565b81010312610622575190811681036106225790565b3d9150611421565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff811642101561147d5790565b505f90565b60ff6002541661148e57565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020818303126106225780519067ffffffffffffffff8211610622570181601f82011215610622578051906114ea82610fc3565b926114f86040519485610fa0565b8284526020838301011161062257815f9260208093018386015e8301015290565b73ffffffffffffffffffffffffffffffffffffffff908116918116808311156118715760015f915b6040928351955f876004817f95d89b4100000000000000000000000000000000000000000000000000000000948582525afa968715611867575f97611849575b505f90600486518095819382525afa91821561183f575f9261181b575b506702c68af0bb1400006115e260ff8651936115b985610f84565b60028552670b1a2bc2ec5000006115da836020998b368c8b01371687611285565b521683611285565b526116e460278551977f42616c616e636572203830200000000000000000000000000000000000000000868a0152805194868201958087602c8d015e8a01907f2032302000000000000000000000000000000000000000000000000000000000602c83015261166e60308c83518b85019581878583015e015f83820152038d601082019052018c610fa0565b88519687937f422d3830000000000000000000000000000000000000000000000000000000008a860152518091602486015e8301907f2d3230000000000000000000000000000000000000000000000000000000000060248301525180928583015e015f83820152036007810185520183610fa0565b83519560a0870187811067ffffffffffffffff821117610b78579085939291611753989697959752855285850191825282850195600287526060860191825261172b6110c8565b91608087019283526117878551998a9887858b01525160a060608b01526101008a0190610f43565b9451947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa095868a83030160808b0152610f43565b975160a08801525196838782030160c08801528180895192838152019801915f5b8281106118045750505050946117cc916118019651908683030160e0870152610f43565b917f0000000000000000000000000000000000000000000000000000000000000000169083015203601f198101835282610fa0565b90565b83518a52988101988a9850928101926001016117a8565b6118389192503d805f833e6118308183610fa0565b8101906114b6565b905f61159e565b84513d5f823e3d90fd5b5f919750611860903d8084833e6118308183610fa0565b9690611581565b85513d5f823e3d90fd5b5f600191611541565b60405190602082019246845273ffffffffffffffffffffffffffffffffffffffff80921660408401521660608201526060815261139481610f6856fea2646970667358221220a88b42459ca1c48109a0006e01cac2b893fba8ebd5abec92ff1154a51e5f012264736f6c634300081a00336102c08060405234610907576146c5803803809161001d828561091b565b833981016040828203126109075781516001600160401b0381116109075782019160a083830312610907576040519160a083016001600160401b038111848210176107105760405283516001600160401b038111610907578161008191860161093e565b835260208401516001600160401b03811161090757816100a291860161093e565b602084019081526040808601519085015260608501519094906001600160401b03811161090757810182601f82011215610907578051906001600160401b038211610710578160051b604051926100fc602083018561091b565b83526020808401918301019185831161090757602001905b82821061090b5750505060608501526080810151916001600160401b03831161090757602092610144920161093e565b608084018190529101516001600160a01b03811681036109075782519351604080519195919081016001600160401b03811182821017610710576040526001815260208101603160f81b815261019983610993565b610120526101a682610b16565b6101405282516020840120918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b03821117610710576040525190206080523060c0526101608290528051906001600160401b0382116107105760035490600182811c921680156108fd575b60208310146106f25781601f849311610892575b50602090601f831160011461080a575f926107ff575b50508160011b915f199060031b1c1916176003555b83516001600160401b03811161071057600454600181811c911680156107f5575b60208210146106f257601f8111610796575b506020601f821160011461072f5781929394955f92610724575b50508160011b915f199060031b1c1916176004555b610180528051906001600160401b0382116107105760055490600182811c92168015610706575b60208310146106f25781601f8493116106a4575b50602090601f831160011461061c575f92610611575b50508160011b915f199060031b1c1916176005555b60408101516101a09080825260608301515103610602575f905f5b81519260ff821693841015610494576060850151805185101561048057602090611fe08460051b1601015190662386f26fc100008210610471578181018091116103d95793806103ed57506101c0525b60ff8091169081146103d957600101610375565b634e487b7160e01b5f52601160045260245ffd5b600181036103ff57506101e0526103c5565b600281036104115750610200526103c5565b600381036104235750610220526103c5565b600481036104355750610240526103c5565b600581036104475750610260526103c5565b600681036104595750610280526103c5565b600714610467575b506103c5565b6102a0525f610461565b63bd39358360e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b670de0b6b3a76400009150036105f357604051613a789182610c4d833960805182612806015260a051826128d2015260c051826127d7015260e051826128550152610100518261287b0152610120518261112801526101405182611152015261016051828181610260015281816104880152818161065f01528181610d7e015281816110ed015281816114ae01528181611733015281816119d801528181612118015261276c01526101805182818161059d0152818161094a01528181610a1201528181610c7a0152611277015251816128fa01526101c0518181816125d2015261295101526101e0518181816125ff015261297e01526102005181818161262c01526129b701526102205181818161265901526129f00152610240518181816126860152612a2a0152610260518181816126b30152612a630152610280518181816126e00152612a9f01526102a05181818161270b0152612ad90152f35b631ce788a760e11b5f5260045ffd5b63aaad13f760e01b5f5260045ffd5b015190505f80610345565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091905b601f1984168510610689576001945083601f19811610610671575b505050811b0160055561035a565b01515f1960f88460031b161c191690555f8080610663565b81810151835560209485019460019093019290910190610648565b90915060055f5260205f20601f840160051c8101602085106106eb575b90849392915b601f830160051c820181106106dd57505061032f565b5f81558594506001016106c7565b50806106c1565b634e487b7160e01b5f52602260045260245ffd5b91607f169161031b565b634e487b7160e01b5f52604160045260245ffd5b015190505f806102df565b60045f5260205f20905f5b601f198416811061077e575060019394959683601f19811610610766575b505050811b016004556102f4565b01515f1960f88460031b161c191690555f8080610758565b9091602060018192858b01518155019301910161073a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101602084106107ee575b601f830160051c820181106107e35750506102c5565b5f81556001016107cd565b50806107cd565b90607f16906102b3565b015190505f8061027d565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510610877576001945083601f1981161061085f575b505050811b01600355610292565b01515f1960f88460031b161c191690555f8080610851565b81810151835560209485019460019093019290910190610836565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101602085106108f6575b90849392915b601f830160051c820181106108e8575050610267565b5f81558594506001016108d2565b50806108cc565b91607f1691610253565b5f80fd5b8151815260209182019101610114565b601f909101601f19168101906001600160401b0382119082101761071057604052565b81601f82011215610907578051906001600160401b0382116107105760405192610972601f8401601f19166020018561091b565b8284526020838301011161090757815f9260208093018386015e8301015290565b805160209081811015610a095750601f8251116109cb57808251920151908083106109bd57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610710575f54926001938481811c91168015610b0c575b838210146106f257601f8111610ad9575b5081601f8411600114610a7757509282939183925f94610a6c575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610a57565b919083601f1981165f8052845f20945f905b88838310610abf5750505010610aa7575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610a9a565b858701518855909601959485019487935090810190610a89565b5f805284601f845f20920160051c820191601f860160051c015b828110610b01575050610a3c565b5f8155018590610af3565b90607f1690610a2b565b805160209081811015610b405750601f8251116109cb57808251920151908083106109bd57501790565b9192916001600160401b0381116107105760019182548381811c91168015610c42575b828210146106f257601f8111610c0f575b5080601f8311600114610baf5750819293945f92610ba4575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610b8d565b90601f19831695845f52825f20925f905b888210610bf85750508385969710610be0575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f8080610bd3565b808785968294968601518155019501930190610bc0565b835f5283601f835f20920160051c820191601f850160051c015b828110610c37575050610b74565b5f8155018490610c29565b90607f1690610b6356fe6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611d905750826306fdde0314611ce1578263095ea7b314611c6357826316a0b3e014611a2a57826318160ddd14611a0e57826323b872dd1461196657826323de665114611934578263273c1adf1461191257826330adf81f146118d8578263313ce567146118bd5782633644e515146118a157826353b79bd7146116e557826354fd4d50146115f55782635687f2b814611596578263627cdcb91461156d578263654cf15d1461154b578263679aefce1461151457826370a082311461144057826372c981861461131f5782637ecebe00146112db57826381fa807c1461121a57826384b0196e146111115782638d928af8146110c157826395d89b4114610fbb578263984de9e814610df9578263a9059cbb14610ce6578263aa6ca80814610c21578263abb1dc44146109b8578263b156aa0a146108f1578263b677fa56146108cf578263c0bc6f33146105f6578263ce20ece7146105d6578263d335b0cf14610543578263d505accf146102d857508163dd62ed3e146101e5575063f89f27ed146101ae575f80fd5b346101e1575f6003193601126101e1576101dd906101ca6128f8565b9051918291602083526020830190611fa7565b0390f35b5f80fd5b82346101e157806003193601126101e1576020610200611e1c565b606461020a611e3f565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a575b6020925051908152f35b90506020823d6020116102c7575b816102b560209383611eca565b810103126101e1576020915190610290565b3d91506102a8565b513d5f823e3d90fd5b8390346101e1576003193601126101e1576102f1611e1c565b906102fa611e3f565b604435926084359060643560ff831683036101e157804211610519576103478273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9061041361040a875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103be81611e92565b5190206103c96127c0565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f35565b90929192612fc4565b168181036104ec5750505f84959661048460209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102cf57506104b857005b6020813d6020116104e4575b816104d160209383611eca565b810103126101e1576104e290612079565b005b3d91506104c4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101e1575f6003193601126101e1578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a576020925051908152f35b83346101e1575f6003193601126101e157602090516509184e72a0008152f35b9150346101e1575f6003193601126101e157825161061381611e92565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f916108ad575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f91610889575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa90811561087f575f91610852575b5089526107516120cf565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561084857928b9c926107e0926107f396955f9e9c9d9e9261081b575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190611fa7565b915190601f198b840301908b0152611fa7565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b61083a9250803d10610841575b6108328183611eca565b810190612482565b5f806107aa565b503d610828565b8c513d5f823e3d90fd5b90508a81813d8311610878575b6108698183611eca565b810103126101e157515f610746565b503d61085f565b8d513d5f823e3d90fd5b6108a591503d805f833e61089d8183611eca565b81019061228d565b90505f610703565b6108c991503d805f833e6108c18183611eca565b8101906125a4565b5f6106c0565b83346101e1575f6003193601126101e157602090516709b6e64a8ec600008152f35b8382346101e1575f6003193601126101e1578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610992575b5051918291602083526020830190611fa7565b6109a79192503d805f833e6108c18183611eca565b908361097f565b82513d5f823e3d90fd5b8382346101e1575f6003193601126101e15773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f935f925f925f95610aed575b5090610a6595949392918151968796608088526080880190611fda565b6020878203818901528080875193848152019601925f905b838210610aa957898803868b015289806101dd8b610a9b8c8c611fa7565b908382036060850152611fa7565b9184989950606086979860019395978397518051610ac681612023565b83528685820151168584015201511515898201520198019201899897969594929391610a7d565b955093509150503d805f853e610b038185611eca565b8301926080818503126101e15780519167ffffffffffffffff928381116101e15785610b30918401612185565b91602095868201518581116101e157820181601f820112156101e157805190610b5882611eed565b98610b6586519a8b611eca565b828a52808a01816060809502840101928584116101e1578201905b838210610bc5575050505050828201518581116101e15781610ba391840161222c565b9460608301519081116101e157610bba920161222c565b919492919386610a48565b84828703126101e157875190610bda82611e62565b825160028110156101e157825283830151908c821682036101e1578285928389950152610c088b8601612079565b8b820152815201910190610b80565b83513d5f823e3d90fd5b8382346101e1575f6003193601126101e1578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610cc2575b5051918291602083526020830190611fda565b610cdf9192503d805f833e610cd78183611eca565b810190612203565b9083610caf565b5082346101e157806003193601126101e1576020610d6492610d06611e1c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5575b6020905160018152f35b6020823d602011610de7575b81610dce60209383611eca565b810103126101e157610de1602092612079565b50610dab565b3d9150610dc1565b50513d5f823e3d90fd5b5082346101e157806003193601126101e157813567ffffffffffffffff81116101e157610e299036908401611f05565b60243560028110156101e157610e3e81612023565b610fb457825b610e4c6128f8565b9080600314610f5f5780600414610ed85780600114610e9557600214610e7f57605184634e487b7160e01b5f525260245ffd5b6020935090610e8d9161306f565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610ec55750602092610ebf91612b84565b90610e8f565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357610f1b600191610f15610f0387876120bb565b51610f0e888b6120bb565b5190612ba2565b90612c4c565b930192610ee7565b92509350508015610f38576020925090610e8f565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357670de0b6b3a7640000610fab600192610fa5610f9388886120bb565b51610f9e898c6120bb565b5190612e7d565b90612b71565b04930192610f6e565b6003610e44565b8382346101e1575f6003193601126101e157815191825f8354610fdd81612041565b90818452602095600191876001821691825f1461107c575050600114611020575b5050506101dd9291611011910385611eca565b51928284938452830190611df7565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061106457505050820101816110116101dd610ffe565b8054848a01860152889550879490930192810161104b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061101191506101dd9050610ffe565b83346101e1575f6003193601126101e1576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101e1575f6003193601126101e15761114c7f0000000000000000000000000000000000000000000000000000000000000000612c8d565b926111767f0000000000000000000000000000000000000000000000000000000000000000612dbf565b815192602084019084821067ffffffffffffffff8311176112075750916111e7916101dd949382525f84526111da82519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611df7565b9186830390870152611df7565b904660608501523060808501525f60a085015283820360c0850152611fa7565b604190634e487b7160e01b5f525260245ffd5b8382346101e1575f6003193601126101e1578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f926112be575b505060608282015191015182519182526020820152f35b6112d49250803d10610841576108328183611eca565b82806112a7565b83346101e15760206003193601126101e15760209073ffffffffffffffffffffffffffffffffffffffff61130d611e1c565b165f5260028252805f20549051908152f35b8382346101e15760209260031984813601126101e15782359167ffffffffffffffff918284116101e15783360301126101e15783519161135e83611e92565b8084013560028110156101e157835260248101358684015260448101358281116101e15761139190853691840101611f05565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101e15760a084015260c4810135908282116101e1570192366023850112156101e15780840135918211611207575083519061140c86601f19601f8401160183611eca565b80825236602482860101116101e15785815f926024610e8d9701838601378301015260c082015261143b612755565b6122d1565b8382346101e157602091826003193601126101e1578261145e611e1c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610def575f926114e5575b5051908152f35b9091508281813d831161150d575b6114fd8183611eca565b810103126101e1575190836114de565b503d6114f3565b50346101e1575f6003193601126101e1577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101e1575f6003193601126101e1576020905167016345785d8a00008152f35b346101e1575f6003193601126101e157335f908152600260205260409020805460018101909155005b83346101e15760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115c836611f65565b9391946115d3612755565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101e1575f6003193601126101e15780516005549091825f61161884612041565b808352602094600190866001821691825f146116a557505060011461164a575b50506101dd9291611011910385611eca565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b82841061168d5750505082010181611011611638565b8054848a018601528895508794909301928101611677565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506110119050611638565b5082346101e1575f6003193601126101e15780519061170382611e62565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561189757905f9291839161187d575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611873575f9161185a575b5081959295526117e96128f8565b84528251948086526080860192519260608288015283518091528160a088019401915f5b8281106118445788806101dd8a8a6118338b8b51601f1993848884030190880152611fa7565b915190848303016060850152611fa7565b83518a168652948101949281019260010161180d565b61186e91503d805f833e61089d8183611eca565b6117db565b84513d5f823e3d90fd5b61189191503d8085833e610cd78183611eca565b8a611798565b86513d5f823e3d90fd5b83346101e1575f6003193601126101e157602090610e8d6127c0565b83346101e1575f6003193601126101e1576020905160128152f35b83346101e1575f6003193601126101e157602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101e1575f6003193601126101e157602090516729a2241af62c00008152f35b83346101e15760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115c836611f65565b5082346101e15760205f608461197b36611f65565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5576020905160018152f35b83346101e1575f6003193601126101e157602090610e8d6120cf565b8382346101e15760606003193601126101e157803567ffffffffffffffff81116101e157611a5b9036908301611f05565b9160243592611a77611a7085604435936120bb565b51946125ca565b60019081831115611c5d5760025b80600314611be75780600414611b4e5780600114611b0c57600214611ab757605185634e487b7160e01b5f525260245ffd5b909192938115611ae65750610e8d9260209592610f15926ec097ce7bc90715b34b9f0fffffffff040190612ba2565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611b3b575092610f15610e8d926020956ec097ce7bc90715b34b9f10000000000490612ba2565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611ba7575b5050508115611b81575092610f15610e8d9260209590612ba2565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611be1579082611bd98193610f15611bcf89866120bb565b51610f0e8a612086565b950192611b61565b93611b66565b509192939080670de0b6b3a7640000935f925b611c19575050508115611b81575092610f15610e8d9260209590612ba2565b909193670de0b6b3a764000051851015611be1579082670de0b6b3a7640000611c548294610fa5611c4a8a876120bb565b51610f9e8b612086565b04950192611bfa565b81611a85565b5082346101e157806003193601126101e1576020610d6492611c83611e1c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101e1575f6003193601126101e15780516003549091825f611d0484612041565b808352602094600190866001821691825f146116a5575050600114611d355750506101dd9291611011910385611eca565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611d785750505082010181611011611638565b8054848a018601528895508794909301928101611d62565b82346101e15760206003193601126101e15735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101e1577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6060810190811067ffffffffffffffff821117611e7e57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff821117611e7e57604052565b6040810190811067ffffffffffffffff821117611e7e57604052565b90601f601f19910116810190811067ffffffffffffffff821117611e7e57604052565b67ffffffffffffffff8111611e7e5760051b60200190565b9080601f830112156101e1576020908235611f1f81611eed565b93611f2d6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b828210611f56575050505090565b81358152908301908301611f48565b60031960609101126101e15773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101e1579160243590811681036101e1579060443590565b9081518082526020808093019301915f5b828110611fc6575050505090565b835185529381019392810192600101611fb8565b9081518082526020808093019301915f5b828110611ff9575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611feb565b6002111561202d57565b634e487b7160e01b5f52602160045260245ffd5b90600182811c9216801561206f575b602083101461205b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612050565b519081151582036101e157565b670de0b6b3a7640000518110156120a75760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120a75760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561217a575f9161214b575090565b90506020813d602011612172575b8161216660209383611eca565b810103126101e1575190565b3d9150612159565b6040513d5f823e3d90fd5b9080601f830112156101e1578151906020916121a081611eed565b936121ae6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b8282106121d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101e15781529083019083016121c9565b906020828203126101e157815167ffffffffffffffff81116101e1576122299201612185565b90565b9080601f830112156101e15781519060209161224781611eed565b936122556040519586611eca565b81855260208086019260051b8201019283116101e157602001905b82821061227e575050505090565b81518152908301908301612270565b9190916040818403126101e15780519267ffffffffffffffff938481116101e157816122ba91840161222c565b9360208301519081116101e157612229920161222c565b604081019081516122e860608301918251906120bb565b519251916122fc60808201938451906120bb565b5191815161230981612023565b61231281612023565b6123d15761232c612325602092516125ca565b94516125ca565b910151670de0b6b3a7640000948561234382612b3d565b0482116123a95761235761235d9282612b30565b9061306f565b848402938085048614901517156123955761237e6123849261239195612b84565b90612ba2565b8381810391100290612b71565b0490565b634e487b7160e01b5f52601160045260245ffd5b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6123eb6123e460209295939495516125ca565b92516125ca565b920151670de0b6b3a764000061240085612b3d565b04811161245a578303908382116123955761242161237e926124279561306f565b9261306f565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123955761222991612c4c565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101e15760405192610140928385019267ffffffffffffffff9086851082861117611e7e576080136101e1576101c0860190811184821017611e7e576040526124d481612079565b83526124e260208201612079565b9261016093848701526124f760408301612079565b92610180938488015261250c60608401612079565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101e15760808601526101008082015163ffffffff811681036101e15761259d946125939160a08901526125876101209761257b898701612079565b60c08b01528501612079565b60e08901528301612079565b9086015201612079565b9082015290565b906020828203126101e157815167ffffffffffffffff81116101e157612229920161222c565b806125f457507f000000000000000000000000000000000000000000000000000000000000000090565b6001810361262157507f000000000000000000000000000000000000000000000000000000000000000090565b6002810361264e57507f000000000000000000000000000000000000000000000000000000000000000090565b6003810361267b57507f000000000000000000000000000000000000000000000000000000000000000090565b600481036126a857507f000000000000000000000000000000000000000000000000000000000000000090565b600581036126d557507f000000000000000000000000000000000000000000000000000000000000000090565b6006810361270257507f000000000000000000000000000000000000000000000000000000000000000090565b60070361272d577f000000000000000000000000000000000000000000000000000000000000000090565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361279457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128cf575b15612828577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e7e5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127ff565b7f000000000000000000000000000000000000000000000000000000000000000061292281611eed565b906129306040519283611eca565b80825261293c81611eed565b601f196020840191013682378251156120a7577f000000000000000000000000000000000000000000000000000000000000000090528151600110156120a7577f000000000000000000000000000000000000000000000000000000000000000060408301526002811115612b2c578151600210156120a7577f000000000000000000000000000000000000000000000000000000000000000060608301526003811115612b2c578151600310156120a7577f0000000000000000000000000000000000000000000000000000000000000000608083015260049081811115612b27578251821015612b14577f000000000000000000000000000000000000000000000000000000000000000060a08401526005811115612b2757825160051015612b14577f000000000000000000000000000000000000000000000000000000000000000060c08401526006811115612b2757825160061015612b14576007907f000000000000000000000000000000000000000000000000000000000000000060e085015211612acc575090565b815160071015612b0157507f000000000000000000000000000000000000000000000000000000000000000061010082015290565b603290634e487b7160e01b5f525260245ffd5b603282634e487b7160e01b5f525260245ffd5b505090565b5090565b9190820180921161239557565b90670429d069189e00009182810292818404149015171561239557565b906127109182810292818404149015171561239557565b8181029291811591840414171561239557565b8115612b8e570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612bb957505090565b671bc16d674ec800008103612bd45750508061222991612c4c565b673782dace9d9000008103612bf8575050612bf28161222992612c4c565b80612c4c565b612c02919261310b565b906001612c0e83612b5a565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116123955761222991612b30565b90612c5691612b71565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b60ff8114612ce15760ff811690601f8211612cb95760405191612caf83611eae565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612cf383612041565b80835292602090600190818116908115612d7c5750600114612d1e575b505061222992500382611eca565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612d6457506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612d49565b9050602093506122299592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612d10565b60ff8114612de15760ff811690601f8211612cb95760405191612caf83611eae565b506040515f81600191600154612df681612041565b8084529360209160018116908115612d7c5750600114612e1e57505061222992500382611eca565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612e6557506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612e4a565b670de0b6b3a764000091808303612e945750905090565b8290671bc16d674ec800008103612eb15750508061239191612b71565b673782dace9d9000008103612ed55750612ece8261239193612b71565b0480612b71565b9050612ee09161310b565b612ee981612b5a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848301040190151502906001820180831161239557811015612f30575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fb9579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561217a575f5173ffffffffffffffffffffffffffffffffffffffff811615612faf57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561202d5780612fd6575050565b60018103613006577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361303a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146130445750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156130bf57670de0b6b3a764000091828102928184041490151715612395576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612b8e576ec097ce7bc90715b34b9f10000000000590565b8115612b8e570590565b908015613a34578115613a2e578160ff1c613a0657770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156139de5781670c7d713b49da000012806139cd575b1561366a57670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906131a4908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613101565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580613657575b1561362f5781908212158061361c575b156135f4575f915f81126135e5575b506064906806f05b59d3b20000008112613582577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215613549575b6856bc75e2d63100000081121561350f575b682b5e3af16b188000008112156134d7575b6815af1d78b58c40000081121561349f575b680ad78ebc5ac6200000811215613468575b82811215613431575b6802b5e3af16b18800008112156133fa575b68015af1d78b58c400008112156133c3575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f1461222957612229906130e7565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590613344565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590613332565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613320565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613317565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613305565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906132f3565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906132e1565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016132cf565b6803782dace9d900000081126135d2577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132ba565b68056bc75e2d63100000826001926132ba565b600192505f039050606461325e565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561324f565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561323f565b81670de0b6b3a7640000925f918481126139b7575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561398c575b73011798004d755d3c8bc8e03204cf44619e00000082121561396b575b820290808302906e01855144814a7ff805980ff00840009081831215613948575b50506b02df0ab5a80a22c61ab5a70080821215613928575b50693f1fce3da636ea5cf85080821215613908575b50690127fa27722cc06cc5e2808212156138e8575b5068280e60114edb805d03808212156138c8575b50680ebc5fb41746121110808212156138b1575b506808f00f760a4b2db55d80821215613891575b506806f5f177578893793780821215613871575b506806248f33704b28660380821215613852575b506805c548670b9510e7ac80821215613833575b506137e068056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613101565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f1461382e575f035b02613213565b613828565b68056bc75e2d631000006756bc75e2d63100009202059101905f6137a4565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613790565b68056bc75e2d6310000068015af1d78b58c400009202059101905f61377c565b68056bc75e2d631000006802b5e3af16b18800009202059101905f613768565b68056bc75e2d63100000809202059101905f613754565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f613740565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61372c565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613717565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613702565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f806136ea565b906b1425982cf597cd205cef73806803782dace9d9000000910591016136c9565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b20000006136ac565b90506139c391506130e7565b600190606461367f565b50670f43fc2c04ee00008212613151565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212204b1676dd274814fed4fff49a83b5404b448d288d13e3f2848873c7c36baed2cf64736f6c634300081a0033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x424 JUMPI PUSH2 0x649E DUP1 CODESIZE SUB DUP1 PUSH2 0x1A DUP2 PUSH2 0x428 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD PUSH1 0x80 DUP3 DUP3 SUB SLT PUSH2 0x424 JUMPI DUP2 MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP4 SUB PUSH2 0x424 JUMPI PUSH1 0x20 SWAP3 DUP4 DUP3 ADD MLOAD SWAP4 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP6 DUP7 DUP2 SUB PUSH2 0x424 JUMPI PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP6 SWAP1 DUP7 DUP2 GT PUSH2 0x424 JUMPI DUP8 PUSH2 0x76 SWAP2 DUP4 ADD PUSH2 0x44D JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP3 ADD MLOAD DUP8 DUP2 GT PUSH2 0x424 JUMPI PUSH2 0x8D SWAP3 ADD PUSH2 0x44D JUMP JUMPDEST SWAP7 PUSH2 0x46C5 SWAP5 PUSH2 0x9D DUP6 DUP8 ADD PUSH2 0x428 JUMP JUMPDEST SWAP6 DUP1 DUP8 MSTORE PUSH2 0x1DD9 DUP7 DUP9 ADD CODECOPY ADDRESS PUSH1 0x80 MSTORE PUSH1 0xA0 MSTORE TIMESTAMP ADD SWAP1 DUP2 TIMESTAMP GT PUSH2 0x410 JUMPI DUP3 DUP3 GT PUSH2 0x401 JUMPI PUSH1 0xC0 MSTORE AND PUSH1 0xE0 MSTORE DUP2 MLOAD SWAP4 DUP4 DUP6 GT PUSH2 0x35F JUMPI PUSH1 0x3 SWAP5 PUSH2 0xDE DUP7 SLOAD PUSH2 0x49E JUMP JUMPDEST SWAP4 PUSH1 0x1F SWAP5 DUP6 DUP2 GT PUSH2 0x3D5 JUMPI JUMPDEST POP DUP4 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x373 JUMPI PUSH2 0x118 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x210 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST DUP6 SSTORE JUMPDEST DUP1 MLOAD DUP5 DUP2 GT PUSH2 0x35F JUMPI PUSH1 0x4 SWAP2 PUSH2 0x131 DUP4 SLOAD PUSH2 0x49E JUMP JUMPDEST DUP6 DUP2 GT PUSH2 0x329 JUMPI JUMPDEST POP DUP4 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x2C7 JUMPI PUSH2 0x166 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x210 JUMPI POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST DUP2 SSTORE JUMPDEST DUP6 MLOAD SWAP4 DUP5 GT PUSH2 0x2B4 JUMPI POP PUSH1 0x5 SWAP4 PUSH2 0x180 DUP6 SLOAD PUSH2 0x49E JUMP JUMPDEST DUP4 DUP2 GT PUSH2 0x280 JUMPI JUMPDEST POP DUP2 SWAP3 DUP5 GT PUSH1 0x1 EQ PUSH2 0x21B JUMPI POP POP DUP2 SWAP1 PUSH2 0x1B7 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x210 JUMPI POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18EC SWAP1 DUP2 PUSH2 0x4ED DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x1360 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1FA ADD MSTORE DUP2 DUP2 PUSH2 0x9FD ADD MSTORE DUP2 DUP2 PUSH2 0xB26 ADD MSTORE DUP2 DUP2 PUSH2 0x13DD ADD MSTORE PUSH2 0x17CF ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x28D ADD MSTORE PUSH1 0xE0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x129 ADD MSTORE PUSH2 0x144D ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1F NOT DUP5 AND SWAP6 DUP6 PUSH0 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0x268 JUMPI POP POP DUP5 PUSH1 0x1 SWAP7 SWAP8 LT PUSH2 0x24F JUMPI JUMPDEST POP POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x1BA JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xF8 DUP5 PUSH0 NOT SWAP3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x241 JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP8 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP7 ADD SWAP4 ADD SWAP1 PUSH2 0x22D JUMP JUMPDEST PUSH2 0x2A5 SWAP1 DUP7 PUSH0 MSTORE DUP4 PUSH0 KECCAK256 DUP6 DUP1 DUP9 ADD DUP10 SHR DUP3 ADD SWAP3 DUP7 DUP10 LT PUSH2 0x2AB JUMPI JUMPDEST ADD DUP9 SHR ADD SWAP1 PUSH2 0x4D6 JUMP JUMPDEST PUSH0 PUSH2 0x188 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x29B JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP2 DUP5 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP8 DUP3 DUP3 LT PUSH2 0x313 JUMPI POP POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x2FC JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP2 SSTORE PUSH2 0x169 JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP11 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP4 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x350 SWAP1 DUP5 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 DUP8 DUP1 DUP7 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP9 DUP8 LT PUSH2 0x356 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x4D6 JUMP JUMPDEST PUSH0 PUSH2 0x139 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x345 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP2 DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP8 DUP3 DUP3 LT PUSH2 0x3BF JUMPI POP POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x3A8 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP6 SSTORE PUSH2 0x11B JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP11 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x39B JUMP JUMPDEST PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP4 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x383 JUMP JUMPDEST PUSH2 0x3FB SWAP1 DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 DUP8 DUP1 DUP7 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP9 DUP8 LT PUSH2 0x356 JUMPI ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x4D6 JUMP JUMPDEST PUSH0 PUSH2 0xEA JUMP JUMPDEST PUSH4 0x68755A11 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x35F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x424 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x35F JUMPI PUSH2 0x47C PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x428 JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x424 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x4CC JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x4B8 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x4AD JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x4E1 JUMPI POP POP JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4D6 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD DUP1 PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x193AD50F EQ PUSH2 0xEF4 JUMPI DUP2 PUSH4 0x2F2770DB EQ PUSH2 0xDA7 JUMPI POP DUP1 PUSH4 0x3F819B6F EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0x44F6FEC7 EQ PUSH2 0xD01 JUMPI DUP1 PUSH4 0x4BEF86D9 EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0x531AA03E EQ PUSH2 0x5BE JUMPI DUP1 PUSH4 0x53A72F7E EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x3B8 JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x673A2A1F EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x78DA80CB EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x8EEC5D70 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0xDB035EBC EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE9D56E19 EQ PUSH2 0x10C JUMPI PUSH4 0xEC888061 EQ PUSH2 0xEE JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH2 0x168 PUSH2 0x144B JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH2 0x191 PUSH2 0x139A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x109 JUMPI PUSH1 0x20 PUSH2 0x268 DUP4 PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 DUP1 SLOAD DUP1 DUP4 MSTORE DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD SWAP5 PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 SWAP3 SWAP2 JUMPDEST DUP3 DUP3 LT PUSH2 0x344 JUMPI PUSH2 0x340 DUP7 PUSH2 0x334 DUP2 DUP11 SUB DUP3 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1002 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP7 ADD SWAP6 SWAP4 DUP4 ADD SWAP4 SWAP1 DUP4 ADD SWAP1 PUSH2 0x31D JUMP JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0xFF PUSH1 0x40 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3A5 PUSH2 0xFDF JUMP JUMPDEST AND DUP2 MSTORE DUP1 DUP5 MSTORE KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x40 MLOAD PUSH1 0x4 SLOAD PUSH0 DUP3 PUSH2 0x3DA DUP4 PUSH2 0x1077 JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP1 DUP6 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x477 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x41C JUMPI JUMPDEST POP PUSH2 0x408 SWAP3 POP SUB DUP4 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xF43 JUMP JUMPDEST DUP5 SWAP2 POP PUSH1 0x4 PUSH0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 PUSH0 SWAP2 JUMPDEST DUP6 DUP4 LT PUSH2 0x45F JUMPI POP POP PUSH2 0x408 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x3FB JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x448 JUMP JUMPDEST PUSH1 0xFF NOT AND DUP6 DUP3 ADD MSTORE PUSH2 0x408 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x3FB SWAP1 POP JUMP JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 SWAP3 PUSH1 0x1 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x596 JUMPI DUP1 PUSH2 0x4C9 DUP5 DUP5 PUSH2 0x12C6 JUMP JUMPDEST GT PUSH2 0x555 JUMPI JUMPDEST POP PUSH2 0x4D9 DUP3 PUSH2 0x126D JUMP JUMPDEST SWAP3 PUSH2 0x4E7 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xFA0 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x4F6 DUP5 PUSH2 0x126D JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY JUMPDEST DUP3 DUP2 LT PUSH2 0x513 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x340 DUP7 DUP3 PUSH2 0x1002 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x53C PUSH2 0x537 DUP9 SWAP5 DUP7 PUSH2 0x12C6 JUMP JUMPDEST PUSH2 0x1300 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR AND PUSH2 0x54E DUP3 DUP8 PUSH2 0x1285 JUMP JUMPDEST MSTORE ADD PUSH2 0x4FE JUMP JUMPDEST SWAP1 DUP1 SWAP3 POP DUP2 SUB SWAP1 DUP2 GT PUSH2 0x569 JUMPI SWAP1 PUSH0 PUSH2 0x4CF JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x4E23D03500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH2 0x5D8 PUSH2 0xFDF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP3 PUSH2 0x613 DUP3 PUSH2 0x60D PUSH2 0x619 SWAP5 PUSH1 0x20 SWAP8 PUSH2 0x1519 JUMP JUMPDEST SWAP3 PUSH2 0x187A JUMP JUMPDEST SWAP1 PUSH2 0x1218 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD PUSH2 0x180 DUP2 SLT PUSH2 0x622 JUMPI PUSH1 0x80 SGT PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD PUSH2 0x64C DUP2 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x622 JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD PUSH2 0x6EB DUP2 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP2 MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x622 JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFC CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD DUP4 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE PUSH2 0x104 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP4 MSTORE PUSH2 0x124 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x144 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xCD9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 MLOAD AND SWAP1 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x850 DUP6 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x2 DUP6 MSTORE PUSH0 JUMPDEST PUSH1 0x40 DUP2 LT PUSH2 0xCC2 JUMPI POP PUSH2 0x8ED SWAP3 SWAP2 PUSH2 0x8E2 SWAP2 PUSH2 0x8D0 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x878 DUP5 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x2 DUP5 MSTORE PUSH1 0x40 CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP6 DUP9 GT ISZERO PUSH2 0xCAA JUMPI PUSH0 SWAP1 PUSH8 0x2C68AF0BB140000 PUSH2 0x8BE PUSH1 0xFF DUP1 PUSH1 0x1 JUMPDEST AND SWAP5 AND DUP8 PUSH8 0xB1A2BC2EC500000 PUSH2 0x8B8 DUP8 DUP5 SWAP12 PUSH2 0x1285 JUMP JUMPDEST MSTORE PUSH2 0x1285 JUMP JUMPDEST MSTORE PUSH2 0x8C9 DUP3 DUP12 PUSH2 0x1285 JUMP JUMPDEST MSTORE DUP9 PUSH2 0x1285 JUMP JUMPDEST POP PUSH2 0x8DB DUP3 DUP9 PUSH2 0x1285 JUMP JUMPDEST MSTORE DUP6 PUSH2 0x1285 JUMP JUMPDEST POP PUSH2 0x60D DUP2 DUP5 PUSH2 0x1519 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH2 0x91F DUP4 PUSH1 0x20 DUP1 DUP3 ADD SWAP4 PUSH2 0x904 DUP6 PUSH2 0x118C JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP6 MSTORE DUP5 PUSH2 0xFA0 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0xC82 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 MLOAD SWAP1 PUSH0 CREATE2 AND SWAP1 DUP2 ISZERO PUSH2 0xC5A JUMPI PUSH2 0x950 PUSH2 0x1482 JUMP JUMPDEST DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0xB78 JUMPI DUP1 PUSH1 0x1 PUSH2 0x98A SWAP3 ADD PUSH1 0x1 SSTORE PUSH2 0x1300 JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE DUP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC PUSH0 DUP1 LOG2 PUSH2 0x9DD PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x9E5 PUSH2 0x144B JUMP JUMPDEST SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x622 JUMPI SWAP4 SWAP1 SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH2 0x1A4 DUP5 ADD DUP7 PUSH1 0x4 DUP7 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP7 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH2 0x1C4 DUP7 ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBB0 JUMPI POP POP POP PUSH0 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP7 SWAP6 SWAP5 PUSH4 0xFFFFFFFF PUSH2 0xB0C SWAP6 PUSH2 0x164 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE DUP9 PUSH1 0x84 DUP9 ADD MSTORE DUP3 DUP2 MLOAD AND PUSH1 0xA4 DUP9 ADD MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0xC4 DUP9 ADD MSTORE ADD MLOAD AND PUSH1 0xE4 DUP6 ADD MSTORE DUP6 PUSH2 0x104 DUP6 ADD MSTORE PUSH2 0x124 DUP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xBA5 JUMPI PUSH2 0xB5E JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xB78 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x40 MSTORE PUSH2 0xB53 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 DUP1 SWAP8 SWAP7 POP SWAP5 SWAP1 SWAP3 SWAP4 SWAP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0xC2D JUMPI DUP3 PUSH1 0x60 PUSH1 0x80 SWAP3 PUSH1 0x20 SWAP5 DUP6 PUSH1 0x1 SWAP8 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP8 ADD SWAP2 ADD SWAP2 DUP9 SWAP6 SWAP7 SWAP5 SWAP4 SWAP3 PUSH2 0xA73 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP1 PUSH8 0x2C68AF0BB140000 PUSH2 0x8BE PUSH1 0xFF DUP1 PUSH0 PUSH2 0x8A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0xCCD PUSH2 0x1053 JUMP JUMPDEST DUP3 DUP3 DUP10 ADD ADD MSTORE ADD PUSH2 0x856 JUMP JUMPDEST PUSH32 0x61EE176400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x622 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x622 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH2 0xD3E DUP3 PUSH2 0xFC3 JUMP JUMPDEST PUSH2 0xD4B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0xFA0 JUMP JUMPDEST DUP3 DUP2 MSTORE CALLDATASIZE PUSH1 0x24 DUP5 DUP5 ADD ADD GT PUSH2 0x622 JUMPI PUSH0 PUSH1 0x20 DUP5 DUP2 SWAP6 PUSH1 0x24 PUSH2 0x191 SWAP7 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1218 JUMP JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH2 0x340 PUSH2 0xD93 PUSH2 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xF43 JUMP JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xDE2 SWAP2 AND PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xE01 PUSH2 0x139A JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xBA5 JUMPI PUSH0 SWAP2 PUSH2 0xEB9 JUMPI JUMPDEST POP ISZERO PUSH2 0xE91 JUMPI PUSH2 0xE5E PUSH2 0x1482 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT PUSH1 0x2 SLOAD AND OR PUSH1 0x2 SSTORE PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 PUSH0 DUP1 LOG1 STOP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xEEC JUMPI JUMPDEST DUP2 PUSH2 0xED4 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x622 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x622 JUMPI DUP2 PUSH2 0xE50 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xEC7 JUMP JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x80 PUSH2 0xF0E PUSH2 0x1053 JUMP JUMPDEST PUSH2 0xF41 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB78 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x622 JUMPI JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1029 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x101B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1060 DUP3 PUSH2 0xF68 JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x10BE JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1091 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH0 DUP3 PUSH1 0x5 SLOAD SWAP2 PUSH2 0x10DB DUP4 PUSH2 0x1077 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1167 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1108 JUMPI JUMPDEST POP POP PUSH2 0x1106 SWAP3 POP SUB DUP4 PUSH2 0xFA0 JUMP JUMPDEST JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x114F JUMPI POP PUSH2 0x1106 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x10F8 JUMP JUMPDEST DUP6 SLOAD DUP9 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP8 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x1106 SWAP6 SWAP3 POP PUSH1 0xFF NOT SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH0 SWAP3 SWAP2 PUSH2 0x119B DUP3 PUSH2 0x1077 JUMP JUMPDEST SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1205 JUMPI POP PUSH1 0x1 EQ PUSH2 0x11B6 JUMPI POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x11F2 JUMPI POP POP POP ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP6 DUP8 ADD MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0xFF NOT AND DUP4 MSTORE POP POP DUP2 ISZERO ISZERO SWAP1 SWAP2 MUL ADD SWAP2 POP JUMP JUMPDEST PUSH1 0x55 SWAP2 PUSH1 0xB SWAP2 PUSH1 0x40 MLOAD PUSH2 0x124F DUP2 PUSH1 0x20 DUP1 DUP3 ADD SWAP5 PUSH2 0x1234 DUP7 PUSH2 0x118C JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xFA0 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADDRESS DUP2 MSTORE ADD PUSH1 0xFF DUP2 MSTORE8 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB78 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1299 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x12D3 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x1299 JUMPI PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1394 DUP2 PUSH2 0xF84 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xBA5 JUMPI PUSH0 SWAP3 PUSH2 0x1412 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1443 JUMPI JUMPDEST DUP2 PUSH2 0x142E PUSH1 0x20 SWAP4 DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x622 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1421 JUMP JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x147D JUMPI SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH2 0x148E JUMPI JUMP JUMPDEST PUSH32 0x75884CDA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x622 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x622 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x622 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x14EA DUP3 PUSH2 0xFC3 JUMP JUMPDEST SWAP3 PUSH2 0x14F8 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xFA0 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x622 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP2 AND DUP1 DUP4 GT ISZERO PUSH2 0x1871 JUMPI PUSH1 0x1 PUSH0 SWAP2 JUMPDEST PUSH1 0x40 SWAP3 DUP4 MLOAD SWAP6 PUSH0 DUP8 PUSH1 0x4 DUP2 PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 DUP3 MSTORE GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x1867 JUMPI PUSH0 SWAP8 PUSH2 0x1849 JUMPI JUMPDEST POP PUSH0 SWAP1 PUSH1 0x4 DUP7 MLOAD DUP1 SWAP6 DUP2 SWAP4 DUP3 MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x183F JUMPI PUSH0 SWAP3 PUSH2 0x181B JUMPI JUMPDEST POP PUSH8 0x2C68AF0BB140000 PUSH2 0x15E2 PUSH1 0xFF DUP7 MLOAD SWAP4 PUSH2 0x15B9 DUP6 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x2 DUP6 MSTORE PUSH8 0xB1A2BC2EC500000 PUSH2 0x15DA DUP4 PUSH1 0x20 SWAP10 DUP12 CALLDATASIZE DUP13 DUP12 ADD CALLDATACOPY AND DUP8 PUSH2 0x1285 JUMP JUMPDEST MSTORE AND DUP4 PUSH2 0x1285 JUMP JUMPDEST MSTORE PUSH2 0x16E4 PUSH1 0x27 DUP6 MLOAD SWAP8 PUSH32 0x42616C616E636572203830200000000000000000000000000000000000000000 DUP7 DUP11 ADD MSTORE DUP1 MLOAD SWAP5 DUP7 DUP3 ADD SWAP6 DUP1 DUP8 PUSH1 0x2C DUP14 ADD MCOPY DUP11 ADD SWAP1 PUSH32 0x2032302000000000000000000000000000000000000000000000000000000000 PUSH1 0x2C DUP4 ADD MSTORE PUSH2 0x166E PUSH1 0x30 DUP13 DUP4 MLOAD DUP12 DUP6 ADD SWAP6 DUP2 DUP8 DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB DUP14 PUSH1 0x10 DUP3 ADD SWAP1 MSTORE ADD DUP13 PUSH2 0xFA0 JUMP JUMPDEST DUP9 MLOAD SWAP7 DUP8 SWAP4 PUSH32 0x422D383000000000000000000000000000000000000000000000000000000000 DUP11 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 PUSH1 0x24 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH32 0x2D32300000000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP4 ADD MSTORE MLOAD DUP1 SWAP3 DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x7 DUP2 ADD DUP6 MSTORE ADD DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP4 MLOAD SWAP6 PUSH1 0xA0 DUP8 ADD DUP8 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI SWAP1 DUP6 SWAP4 SWAP3 SWAP2 PUSH2 0x1753 SWAP9 SWAP7 SWAP8 SWAP6 SWAP8 MSTORE DUP6 MSTORE DUP6 DUP6 ADD SWAP2 DUP3 MSTORE DUP3 DUP6 ADD SWAP6 PUSH1 0x2 DUP8 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MSTORE PUSH2 0x172B PUSH2 0x10C8 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP8 ADD SWAP3 DUP4 MSTORE PUSH2 0x1787 DUP6 MLOAD SWAP10 DUP11 SWAP9 DUP8 DUP6 DUP12 ADD MSTORE MLOAD PUSH1 0xA0 PUSH1 0x60 DUP12 ADD MSTORE PUSH2 0x100 DUP11 ADD SWAP1 PUSH2 0xF43 JUMP JUMPDEST SWAP5 MLOAD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 SWAP6 DUP7 DUP11 DUP4 SUB ADD PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0xF43 JUMP JUMPDEST SWAP8 MLOAD PUSH1 0xA0 DUP9 ADD MSTORE MLOAD SWAP7 DUP4 DUP8 DUP3 SUB ADD PUSH1 0xC0 DUP9 ADD MSTORE DUP2 DUP1 DUP10 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP9 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1804 JUMPI POP POP POP POP SWAP5 PUSH2 0x17CC SWAP2 PUSH2 0x1801 SWAP7 MLOAD SWAP1 DUP7 DUP4 SUB ADD PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0xF43 JUMP JUMPDEST SWAP2 PUSH32 0x0 AND SWAP1 DUP4 ADD MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xFA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP11 MSTORE SWAP9 DUP2 ADD SWAP9 DUP11 SWAP9 POP SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0x1838 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1830 DUP2 DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14B6 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x159E JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 SWAP2 SWAP8 POP PUSH2 0x1860 SWAP1 RETURNDATASIZE DUP1 DUP5 DUP4 RETURNDATACOPY PUSH2 0x1830 DUP2 DUP4 PUSH2 0xFA0 JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x1581 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 SWAP2 PUSH2 0x1541 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 CHAINID DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0x1394 DUP2 PUSH2 0xF68 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 DUP12 TIMESTAMP GASLIMIT SWAP13 LOG1 0xC4 DUP2 MULMOD LOG0 STOP PUSH15 0x1CAC2B893FBA8EBD5ABEC92FF1154 0xA5 0x1E PUSH0 ADD 0x22 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER PUSH2 0x2C0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x907 JUMPI PUSH2 0x46C5 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1D DUP3 DUP6 PUSH2 0x91B JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP3 DUP3 SUB SLT PUSH2 0x907 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP3 ADD SWAP2 PUSH1 0xA0 DUP4 DUP4 SUB SLT PUSH2 0x907 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0xA0 DUP4 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP5 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 PUSH2 0x81 SWAP2 DUP7 ADD PUSH2 0x93E JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 PUSH2 0xA2 SWAP2 DUP7 ADD PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP1 SWAP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x907 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI DUP2 PUSH1 0x5 SHL PUSH1 0x40 MLOAD SWAP3 PUSH2 0xFC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x91B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x907 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x90B JUMPI POP POP POP PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x907 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x144 SWAP3 ADD PUSH2 0x93E JUMP JUMPDEST PUSH1 0x80 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x907 JUMPI DUP3 MLOAD SWAP4 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP6 SWAP2 SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE PUSH2 0x199 DUP4 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x1A6 DUP3 PUSH2 0xB16 JUMP JUMPDEST PUSH2 0x140 MSTORE DUP3 MLOAD PUSH1 0x20 DUP5 ADD KECCAK256 SWAP2 DUP3 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 DUP1 PUSH2 0x100 MSTORE CHAINID PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x3 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x8FD JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x6F2 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x892 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x80A JUMPI PUSH0 SWAP3 PUSH2 0x7FF JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x3 SSTORE JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7F5 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x796 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x72F JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH0 SWAP3 PUSH2 0x724 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST PUSH2 0x180 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x5 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x706 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x6F2 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x6A4 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x61C JUMPI PUSH0 SWAP3 PUSH2 0x611 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x5 SSTORE JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0x1A0 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x60 DUP4 ADD MLOAD MLOAD SUB PUSH2 0x602 JUMPI PUSH0 SWAP1 PUSH0 JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0xFF DUP3 AND SWAP4 DUP5 LT ISZERO PUSH2 0x494 JUMPI PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD DUP6 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x1FE0 DUP5 PUSH1 0x5 SHL AND ADD ADD MLOAD SWAP1 PUSH7 0x2386F26FC10000 DUP3 LT PUSH2 0x471 JUMPI DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x3D9 JUMPI SWAP4 DUP1 PUSH2 0x3ED JUMPI POP PUSH2 0x1C0 MSTORE JUMPDEST PUSH1 0xFF DUP1 SWAP2 AND SWAP1 DUP2 EQ PUSH2 0x3D9 JUMPI PUSH1 0x1 ADD PUSH2 0x375 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x3FF JUMPI POP PUSH2 0x1E0 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x411 JUMPI POP PUSH2 0x200 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x423 JUMPI POP PUSH2 0x220 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x435 JUMPI POP PUSH2 0x240 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x447 JUMPI POP PUSH2 0x260 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x459 JUMPI POP PUSH2 0x280 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x7 EQ PUSH2 0x467 JUMPI JUMPDEST POP PUSH2 0x3C5 JUMP JUMPDEST PUSH2 0x2A0 MSTORE PUSH0 PUSH2 0x461 JUMP JUMPDEST PUSH4 0xBD393583 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 POP SUB PUSH2 0x5F3 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3A78 SWAP2 DUP3 PUSH2 0xC4D DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 PUSH2 0x2806 ADD MSTORE PUSH1 0xA0 MLOAD DUP3 PUSH2 0x28D2 ADD MSTORE PUSH1 0xC0 MLOAD DUP3 PUSH2 0x27D7 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 PUSH2 0x2855 ADD MSTORE PUSH2 0x100 MLOAD DUP3 PUSH2 0x287B ADD MSTORE PUSH2 0x120 MLOAD DUP3 PUSH2 0x1128 ADD MSTORE PUSH2 0x140 MLOAD DUP3 PUSH2 0x1152 ADD MSTORE PUSH2 0x160 MLOAD DUP3 DUP2 DUP2 PUSH2 0x260 ADD MSTORE DUP2 DUP2 PUSH2 0x488 ADD MSTORE DUP2 DUP2 PUSH2 0x65F ADD MSTORE DUP2 DUP2 PUSH2 0xD7E ADD MSTORE DUP2 DUP2 PUSH2 0x10ED ADD MSTORE DUP2 DUP2 PUSH2 0x14AE ADD MSTORE DUP2 DUP2 PUSH2 0x1733 ADD MSTORE DUP2 DUP2 PUSH2 0x19D8 ADD MSTORE DUP2 DUP2 PUSH2 0x2118 ADD MSTORE PUSH2 0x276C ADD MSTORE PUSH2 0x180 MLOAD DUP3 DUP2 DUP2 PUSH2 0x59D ADD MSTORE DUP2 DUP2 PUSH2 0x94A ADD MSTORE DUP2 DUP2 PUSH2 0xA12 ADD MSTORE DUP2 DUP2 PUSH2 0xC7A ADD MSTORE PUSH2 0x1277 ADD MSTORE MLOAD DUP2 PUSH2 0x28FA ADD MSTORE PUSH2 0x1C0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x25D2 ADD MSTORE PUSH2 0x2951 ADD MSTORE PUSH2 0x1E0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x25FF ADD MSTORE PUSH2 0x297E ADD MSTORE PUSH2 0x200 MLOAD DUP2 DUP2 DUP2 PUSH2 0x262C ADD MSTORE PUSH2 0x29B7 ADD MSTORE PUSH2 0x220 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2659 ADD MSTORE PUSH2 0x29F0 ADD MSTORE PUSH2 0x240 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2686 ADD MSTORE PUSH2 0x2A2A ADD MSTORE PUSH2 0x260 MLOAD DUP2 DUP2 DUP2 PUSH2 0x26B3 ADD MSTORE PUSH2 0x2A63 ADD MSTORE PUSH2 0x280 MLOAD DUP2 DUP2 DUP2 PUSH2 0x26E0 ADD MSTORE PUSH2 0x2A9F ADD MSTORE PUSH2 0x2A0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x270B ADD MSTORE PUSH2 0x2AD9 ADD MSTORE RETURN JUMPDEST PUSH4 0x1CE788A7 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xAAAD13F7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x345 JUMP JUMPDEST PUSH1 0x5 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x689 JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x671 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x5 SSTORE PUSH2 0x35A JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x663 JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x648 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x5 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x6EB JUMPI JUMPDEST SWAP1 DUP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x6DD JUMPI POP POP PUSH2 0x32F JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST POP DUP1 PUSH2 0x6C1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x31B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH2 0x77E JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x766 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH2 0x2F4 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x758 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH2 0x73A JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP5 LT PUSH2 0x7EE JUMPI JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x7E3 JUMPI POP POP PUSH2 0x2C5 JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x7CD JUMP JUMPDEST POP DUP1 PUSH2 0x7CD JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x2B3 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x3 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x877 JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x85F JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH2 0x292 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x851 JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x836 JUMP JUMPDEST PUSH1 0x3 PUSH0 MSTORE SWAP1 SWAP2 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x8F6 JUMPI JUMPDEST SWAP1 DUP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x8E8 JUMPI POP POP PUSH2 0x267 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP PUSH1 0x1 ADD PUSH2 0x8D2 JUMP JUMPDEST POP DUP1 PUSH2 0x8CC JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x253 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x114 JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x907 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x972 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x91B JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x907 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xA09 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x9CB JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x9BD JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xB0C JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xAD9 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0xA77 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0xA6C JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xA57 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0xABF JUMPI POP POP POP LT PUSH2 0xAA7 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xA9A JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0xA89 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0xB01 JUMPI POP POP PUSH2 0xA3C JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0xAF3 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xA2B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xB40 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x9CB JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x9BD JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xC42 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xC0F JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xBAF JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0xBA4 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0xB8D JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0xBF8 JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0xBE0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xBD3 JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0xBC0 JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0xC37 JUMPI POP POP PUSH2 0xB74 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0xC29 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xB63 JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH4 0x1FFC9A7 EQ PUSH2 0x1D90 JUMPI POP DUP3 PUSH4 0x6FDDE03 EQ PUSH2 0x1CE1 JUMPI DUP3 PUSH4 0x95EA7B3 EQ PUSH2 0x1C63 JUMPI DUP3 PUSH4 0x16A0B3E0 EQ PUSH2 0x1A2A JUMPI DUP3 PUSH4 0x18160DDD EQ PUSH2 0x1A0E JUMPI DUP3 PUSH4 0x23B872DD EQ PUSH2 0x1966 JUMPI DUP3 PUSH4 0x23DE6651 EQ PUSH2 0x1934 JUMPI DUP3 PUSH4 0x273C1ADF EQ PUSH2 0x1912 JUMPI DUP3 PUSH4 0x30ADF81F EQ PUSH2 0x18D8 JUMPI DUP3 PUSH4 0x313CE567 EQ PUSH2 0x18BD JUMPI DUP3 PUSH4 0x3644E515 EQ PUSH2 0x18A1 JUMPI DUP3 PUSH4 0x53B79BD7 EQ PUSH2 0x16E5 JUMPI DUP3 PUSH4 0x54FD4D50 EQ PUSH2 0x15F5 JUMPI DUP3 PUSH4 0x5687F2B8 EQ PUSH2 0x1596 JUMPI DUP3 PUSH4 0x627CDCB9 EQ PUSH2 0x156D JUMPI DUP3 PUSH4 0x654CF15D EQ PUSH2 0x154B JUMPI DUP3 PUSH4 0x679AEFCE EQ PUSH2 0x1514 JUMPI DUP3 PUSH4 0x70A08231 EQ PUSH2 0x1440 JUMPI DUP3 PUSH4 0x72C98186 EQ PUSH2 0x131F JUMPI DUP3 PUSH4 0x7ECEBE00 EQ PUSH2 0x12DB JUMPI DUP3 PUSH4 0x81FA807C EQ PUSH2 0x121A JUMPI DUP3 PUSH4 0x84B0196E EQ PUSH2 0x1111 JUMPI DUP3 PUSH4 0x8D928AF8 EQ PUSH2 0x10C1 JUMPI DUP3 PUSH4 0x95D89B41 EQ PUSH2 0xFBB JUMPI DUP3 PUSH4 0x984DE9E8 EQ PUSH2 0xDF9 JUMPI DUP3 PUSH4 0xA9059CBB EQ PUSH2 0xCE6 JUMPI DUP3 PUSH4 0xAA6CA808 EQ PUSH2 0xC21 JUMPI DUP3 PUSH4 0xABB1DC44 EQ PUSH2 0x9B8 JUMPI DUP3 PUSH4 0xB156AA0A EQ PUSH2 0x8F1 JUMPI DUP3 PUSH4 0xB677FA56 EQ PUSH2 0x8CF JUMPI DUP3 PUSH4 0xC0BC6F33 EQ PUSH2 0x5F6 JUMPI DUP3 PUSH4 0xCE20ECE7 EQ PUSH2 0x5D6 JUMPI DUP3 PUSH4 0xD335B0CF EQ PUSH2 0x543 JUMPI DUP3 PUSH4 0xD505ACCF EQ PUSH2 0x2D8 JUMPI POP DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x1E5 JUMPI POP PUSH4 0xF89F27ED EQ PUSH2 0x1AE JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x1DD SWAP1 PUSH2 0x1CA PUSH2 0x28F8 JUMP JUMPDEST SWAP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0x200 PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x20A PUSH2 0x1E3F JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C7 JUMPI JUMPDEST DUP2 PUSH2 0x2B5 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x290 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2A8 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 SWAP1 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x2F1 PUSH2 0x1E1C JUMP JUMPDEST SWAP1 PUSH2 0x2FA PUSH2 0x1E3F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP4 AND DUP4 SUB PUSH2 0x1E1 JUMPI DUP1 TIMESTAMP GT PUSH2 0x519 JUMPI PUSH2 0x347 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x413 PUSH2 0x40A DUP8 MLOAD SWAP6 PUSH1 0x20 DUP8 ADD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 SWAP6 DUP7 DUP10 AND SWAP8 DUP9 DUP14 DUP5 ADD MSTORE DUP8 DUP13 AND PUSH1 0x60 DUP5 ADD MSTORE DUP14 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x3BE DUP2 PUSH2 0x1E92 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x3C9 PUSH2 0x27C0 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x2F35 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2FC4 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x4EC JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x484 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI POP PUSH2 0x4B8 JUMPI STOP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4E4 JUMPI JUMPDEST DUP2 PUSH2 0x4D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0x4E2 SWAP1 PUSH2 0x2079 JUMP JUMPDEST STOP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4C4 JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST DUP7 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH6 0x9184E72A000 DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 MLOAD PUSH2 0x613 DUP2 PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP6 DUP2 ADD SWAP3 PUSH0 DUP5 MSTORE PUSH1 0x60 DUP3 ADD PUSH0 DUP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP2 PUSH0 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 PUSH0 DUP6 MSTORE PUSH1 0xC0 DUP2 ADD SWAP6 PUSH0 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 DUP12 MLOAD PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x8AD JUMPI JUMPDEST POP DUP4 MSTORE DUP12 MLOAD PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x889 JUMPI JUMPDEST POP DUP5 MSTORE DUP12 MLOAD PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE DUP11 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x852 JUMPI JUMPDEST POP DUP10 MSTORE PUSH2 0x751 PUSH2 0x20CF JUMP JUMPDEST DUP6 MSTORE DUP12 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE DUP2 PUSH1 0x24 PUSH2 0x1A0 SWAP5 DUP6 SWAP4 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x848 JUMPI SWAP3 DUP12 SWAP13 SWAP3 PUSH2 0x7E0 SWAP3 PUSH2 0x7F3 SWAP7 SWAP6 PUSH0 SWAP15 SWAP13 SWAP14 SWAP15 SWAP3 PUSH2 0x81B JUMPI JUMPDEST POP POP DUP11 DUP2 ADD MLOAD ISZERO ISZERO DUP9 MSTORE PUSH2 0x120 PUSH2 0x100 SWAP2 DUP3 DUP2 ADD MLOAD ISZERO ISZERO DUP12 MSTORE ADD MLOAD ISZERO ISZERO DUP11 MSTORE DUP4 MLOAD SWAP14 DUP14 DUP16 SWAP15 SWAP4 DUP16 SWAP5 DUP6 MSTORE MLOAD SWAP4 ADD MSTORE DUP13 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 PUSH1 0x1F NOT DUP12 DUP5 SUB ADD SWAP1 DUP12 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x60 DUP9 ADD MSTORE MLOAD PUSH1 0x80 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH2 0x83A SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI JUMPDEST PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2482 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7AA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x828 JUMP JUMPDEST DUP13 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x878 JUMPI JUMPDEST PUSH2 0x869 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD PUSH0 PUSH2 0x746 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x85F JUMP JUMPDEST DUP14 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8A5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x228D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x8C9 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25A4 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x9B6E64A8EC60000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0x992 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST PUSH2 0x9A7 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x97F JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD SWAP2 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP4 PUSH0 SWAP3 PUSH0 SWAP3 PUSH0 SWAP6 PUSH2 0xAED JUMPI JUMPDEST POP SWAP1 PUSH2 0xA65 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xAA9 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1DD DUP12 PUSH2 0xA9B DUP13 DUP13 PUSH2 0x1FA7 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0xAC6 DUP2 PUSH2 0x2023 JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0xA7D JUMP JUMPDEST SWAP6 POP SWAP4 POP SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xB03 DUP2 DUP6 PUSH2 0x1ECA JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x1E1 JUMPI DUP6 PUSH2 0xB30 SWAP2 DUP5 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP6 DUP7 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0xB58 DUP3 PUSH2 0x1EED JUMP JUMPDEST SWAP9 PUSH2 0xB65 DUP7 MLOAD SWAP11 DUP12 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP11 MSTORE DUP1 DUP11 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x1E1 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xBC5 JUMPI POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0xBA3 SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xBBA SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 PUSH2 0xA48 JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x1E1 JUMPI DUP8 MLOAD SWAP1 PUSH2 0xBDA DUP3 PUSH2 0x1E62 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP13 DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0xC08 DUP12 DUP7 ADD PUSH2 0x2079 JUMP JUMPDEST DUP12 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xB80 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0xCC2 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0xCDF SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2203 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xCAF JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0xD06 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDE7 JUMPI JUMPDEST DUP2 PUSH2 0xDCE PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0xDE1 PUSH1 0x20 SWAP3 PUSH2 0x2079 JUMP JUMPDEST POP PUSH2 0xDAB JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDC1 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xE29 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0xE3E DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0xFB4 JUMPI DUP3 JUMPDEST PUSH2 0xE4C PUSH2 0x28F8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x3 EQ PUSH2 0xF5F JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0xED8 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0xE95 JUMPI PUSH1 0x2 EQ PUSH2 0xE7F JUMPI PUSH1 0x51 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 SWAP4 POP SWAP1 PUSH2 0xE8D SWAP2 PUSH2 0x306F JUMP JUMPDEST SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xEC5 JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xEBF SWAP2 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x11 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH2 0xF1B PUSH1 0x1 SWAP2 PUSH2 0xF15 PUSH2 0xF03 DUP8 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP9 DUP12 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xEE7 JUMP JUMPDEST SWAP3 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0xF38 JUMPI PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0xE8F JUMP JUMPDEST DUP3 PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xFAB PUSH1 0x1 SWAP3 PUSH2 0xFA5 PUSH2 0xF93 DUP9 DUP9 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP10 DUP13 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2E7D JUMP JUMPDEST SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP4 ADD SWAP3 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x3 PUSH2 0xE44 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xFDD DUP2 PUSH2 0x2041 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x107C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1020 JUMPI JUMPDEST POP POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x1064 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1DD PUSH2 0xFFE JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x104B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x1011 SWAP2 POP PUSH2 0x1DD SWAP1 POP PUSH2 0xFFE JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x114C PUSH32 0x0 PUSH2 0x2C8D JUMP JUMPDEST SWAP3 PUSH2 0x1176 PUSH32 0x0 PUSH2 0x2DBF JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x1207 JUMPI POP SWAP2 PUSH2 0x11E7 SWAP2 PUSH2 0x1DD SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x11DA DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DF7 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP3 PUSH2 0x12BE JUMPI JUMPDEST POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x12D4 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP1 PUSH2 0x12A7 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x130D PUSH2 0x1E1C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x3 NOT DUP5 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x1E1 JUMPI DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1E1 JUMPI DUP4 MLOAD SWAP2 PUSH2 0x135E DUP4 PUSH2 0x1E92 JUMP JUMPDEST DUP1 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP4 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD DUP7 DUP5 ADD MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1391 SWAP1 DUP6 CALLDATASIZE SWAP2 DUP5 ADD ADD PUSH2 0x1F05 JUMP JUMPDEST DUP6 DUP5 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 DUP3 GT PUSH2 0x1E1 JUMPI ADD SWAP3 CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 DUP5 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x1207 JUMPI POP DUP4 MLOAD SWAP1 PUSH2 0x140C DUP7 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1E1 JUMPI DUP6 DUP2 PUSH0 SWAP3 PUSH1 0x24 PUSH2 0xE8D SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x143B PUSH2 0x2755 JUMP JUMPDEST PUSH2 0x22D1 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 PUSH2 0x145E PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xDEF JUMPI PUSH0 SWAP3 PUSH2 0x14E5 JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x150D JUMPI JUMPDEST PUSH2 0x14FD DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14DE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F3 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH32 0x18E79A2000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x16345785D8A0000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x15D3 PUSH2 0x2755 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1618 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x164A JUMPI JUMPDEST POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x168D JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1677 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x1011 SWAP1 POP PUSH2 0x1638 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1703 DUP3 PUSH2 0x1E62 JUMP JUMPDEST PUSH1 0x60 DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP4 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP2 DUP5 ADD SWAP3 PUSH1 0x60 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH32 0x0 AND SWAP1 DUP5 MLOAD PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1897 JUMPI SWAP1 PUSH0 SWAP3 SWAP2 DUP4 SWAP2 PUSH2 0x187D JUMPI JUMPDEST POP DUP9 MSTORE PUSH1 0x24 DUP7 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1873 JUMPI PUSH0 SWAP2 PUSH2 0x185A JUMPI JUMPDEST POP DUP2 SWAP6 SWAP3 SWAP6 MSTORE PUSH2 0x17E9 PUSH2 0x28F8 JUMP JUMPDEST DUP5 MSTORE DUP3 MLOAD SWAP5 DUP1 DUP7 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 MLOAD SWAP3 PUSH1 0x60 DUP3 DUP9 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH1 0xA0 DUP9 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1844 JUMPI DUP9 DUP1 PUSH2 0x1DD DUP11 DUP11 PUSH2 0x1833 DUP12 DUP12 MLOAD PUSH1 0x1F NOT SWAP4 DUP5 DUP9 DUP5 SUB ADD SWAP1 DUP9 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST DUP4 MLOAD DUP11 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x180D JUMP JUMPDEST PUSH2 0x186E SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST PUSH2 0x17DB JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1891 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP11 PUSH2 0x1798 JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x27C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x29A2241AF62C0000 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x197B CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x20CF JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1A5B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1F05 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH2 0x1A77 PUSH2 0x1A70 DUP6 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP5 PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP2 DUP4 GT ISZERO PUSH2 0x1C5D JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x3 EQ PUSH2 0x1BE7 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0x1B4E JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x1B0C JUMPI PUSH1 0x2 EQ PUSH2 0x1AB7 JUMPI PUSH1 0x51 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP2 ISZERO PUSH2 0x1AE6 JUMPI POP PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0xF15 SWAP3 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP DUP1 SWAP3 SWAP4 SWAP5 SWAP2 POP ISZERO PUSH2 0x1B3B JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1BA7 JUMPI JUMPDEST POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH2 0x1BD9 DUP2 SWAP4 PUSH2 0xF15 PUSH2 0x1BCF DUP10 DUP7 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP11 PUSH2 0x2086 JUMP JUMPDEST SWAP6 ADD SWAP3 PUSH2 0x1B61 JUMP JUMPDEST SWAP4 PUSH2 0x1B66 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1C19 JUMPI POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C54 DUP3 SWAP5 PUSH2 0xFA5 PUSH2 0x1C4A DUP11 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP12 PUSH2 0x2086 JUMP JUMPDEST DIV SWAP6 ADD SWAP3 PUSH2 0x1BFA JUMP JUMPDEST DUP2 PUSH2 0x1A85 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0x1C83 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1D04 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1D35 JUMPI POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1D78 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1D62 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1E1 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E7E JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1F1F DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x1F2D PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1F56 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1F48 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FC6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FB8 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FF9 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FEB JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x202D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x206F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x205B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2050 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MLOAD DUP2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x5 SHL PUSH8 0xDE0B6B3A7640020 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x217A JUMPI PUSH0 SWAP2 PUSH2 0x214B JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2172 JUMPI JUMPDEST DUP2 PUSH2 0x2166 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2159 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x21A0 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x21AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x21D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x21C9 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2247 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x2255 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x227E JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2270 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0x22BA SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 MLOAD PUSH2 0x22E8 PUSH1 0x60 DUP4 ADD SWAP2 DUP3 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP2 PUSH2 0x22FC PUSH1 0x80 DUP3 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP2 DUP2 MLOAD PUSH2 0x2309 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x2312 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x23D1 JUMPI PUSH2 0x232C PUSH2 0x2325 PUSH1 0x20 SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP2 ADD MLOAD PUSH8 0xDE0B6B3A7640000 SWAP5 DUP6 PUSH2 0x2343 DUP3 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP3 GT PUSH2 0x23A9 JUMPI PUSH2 0x2357 PUSH2 0x235D SWAP3 DUP3 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x306F JUMP JUMPDEST DUP5 DUP5 MUL SWAP4 DUP1 DUP6 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH2 0x237E PUSH2 0x2384 SWAP3 PUSH2 0x2391 SWAP6 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x23EB PUSH2 0x23E4 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP5 SWAP6 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x2400 DUP6 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP2 GT PUSH2 0x245A JUMPI DUP4 SUB SWAP1 DUP4 DUP3 GT PUSH2 0x2395 JUMPI PUSH2 0x2421 PUSH2 0x237E SWAP3 PUSH2 0x2427 SWAP6 PUSH2 0x306F JUMP JUMPDEST SWAP3 PUSH2 0x306F JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1A0 SWAP2 DUP2 SWAP1 SUB DUP3 DUP2 SLT PUSH2 0x1E1 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x140 SWAP3 DUP4 DUP6 ADD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP7 DUP6 LT DUP3 DUP7 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x80 SGT PUSH2 0x1E1 JUMPI PUSH2 0x1C0 DUP7 ADD SWAP1 DUP2 GT DUP5 DUP3 LT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE PUSH2 0x24D4 DUP2 PUSH2 0x2079 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x24E2 PUSH1 0x20 DUP3 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x24F7 PUSH1 0x40 DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x250C PUSH1 0x60 DUP5 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH2 0x259D SWAP5 PUSH2 0x2593 SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x2587 PUSH2 0x120 SWAP8 PUSH2 0x257B DUP10 DUP8 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST DUP1 PUSH2 0x25F4 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2621 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x264E JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x267B JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x26A8 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x26D5 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x2702 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x7 SUB PUSH2 0x272D JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2794 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x28CF JUMPI JUMPDEST ISZERO PUSH2 0x2828 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x27FF JUMP JUMPDEST PUSH32 0x0 PUSH2 0x2922 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP1 PUSH2 0x2930 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH2 0x293C DUP2 PUSH2 0x1EED JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 DUP5 ADD SWAP2 ADD CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x4 SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD DUP3 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0x2B14 JUMPI PUSH1 0x7 SWAP1 PUSH32 0x0 PUSH1 0xE0 DUP6 ADD MSTORE GT PUSH2 0x2ACC JUMPI POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0x2B01 JUMPI POP PUSH32 0x0 PUSH2 0x100 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x32 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x32 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x2BB9 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2BD4 JUMPI POP POP DUP1 PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2BF8 JUMPI POP POP PUSH2 0x2BF2 DUP2 PUSH2 0x2229 SWAP3 PUSH2 0x2C4C JUMP JUMPDEST DUP1 PUSH2 0x2C4C JUMP JUMPDEST PUSH2 0x2C02 SWAP2 SWAP3 PUSH2 0x310B JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2C0E DUP4 PUSH2 0x2B5A JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x2C56 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2CE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x2CF3 DUP4 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2D1E JUMPI JUMPDEST POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2D64 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2D49 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x2229 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2DE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2DF6 DUP2 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2E1E JUMPI POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2E65 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2E4A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x2E94 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2EB1 JUMPI POP POP DUP1 PUSH2 0x2391 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2ED5 JUMPI POP PUSH2 0x2ECE DUP3 PUSH2 0x2391 SWAP4 PUSH2 0x2B71 JUMP JUMPDEST DIV DUP1 PUSH2 0x2B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EE0 SWAP2 PUSH2 0x310B JUMP JUMPDEST PUSH2 0x2EE9 DUP2 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x2395 JUMPI DUP2 LT ISZERO PUSH2 0x2F30 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x2FB9 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x217A JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2FAF JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x202D JUMPI DUP1 PUSH2 0x2FD6 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x3006 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x303A JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x3044 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x30BF JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH1 0x1 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2B8E JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x3A34 JUMPI DUP2 ISZERO PUSH2 0x3A2E JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x3A06 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x39DE JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x39CD JUMPI JUMPDEST ISZERO PUSH2 0x366A JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x31A4 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x3657 JUMPI JUMPDEST ISZERO PUSH2 0x362F JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x361C JUMPI JUMPDEST ISZERO PUSH2 0x35F4 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x35E5 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x3582 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x3549 JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x350F JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x34D7 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x349F JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x3468 JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x3431 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x33FA JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x33C3 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x2229 JUMPI PUSH2 0x2229 SWAP1 PUSH2 0x30E7 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3344 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3332 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3320 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3317 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3305 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32F3 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x32CF JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x35D2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x325E JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x324F JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x323F JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x39B7 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x398C JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x396B JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x3948 JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x3928 JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x3908 JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x38E8 JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x38C8 JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x38B1 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x3891 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x3871 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x3852 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x3833 JUMPI JUMPDEST POP PUSH2 0x37E0 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x382E JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x3213 JUMP JUMPDEST PUSH2 0x3828 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x37A4 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3790 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x377C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3768 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3754 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3740 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x372C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3717 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3702 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x36EA JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x36C9 JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x36AC JUMP JUMPDEST SWAP1 POP PUSH2 0x39C3 SWAP2 POP PUSH2 0x30E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x367F JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x3151 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B AND PUSH23 0xDD274814FED4FFF49A83B5404B448D288D13E3F2848873 0xC7 0xC3 PUSH12 0xAED2CF64736F6C634300081A STOP CALLER ","sourceMap":"1300:5107:114:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1300:5107:114;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1715:31;;;;;;;;:::i;:::-;;;;;;;;;;978:4:63;1300:5107:114;1347:46:35;998:14:63;;1461:15:39;1300:5107:114;1461:15:39;;;1300:5107:114;;;1513:35:39;;;1509:106;;1625:42;;1300:5107:114;1735:53:39;;1300:5107:114;;;;;;;;3534:28:33;1300:5107:114;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:21:45;1300:5107:114;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:26;;1300:5107;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;998:14:63;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;1625:42:39;1300:5107:114;;;;;1735:53:39;1300:5107:114;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;-1:-1:-1;1300:5107:114;;;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;1156:21:45;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1509:106:39;1571:33;;;-1:-1:-1;1571:33:39;;-1:-1:-1;1571:33:39;1300:5107:114;;;;-1:-1:-1;1300:5107:114;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;;;-1:-1:-1;;1300:5107:114;;;-1:-1:-1;;;;;1300:5107:114;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1300:5107:114;;;;;;;;-1:-1:-1;;1300:5107:114;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_contract_IERC20":{"entryPoint":4063,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":5302,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":4098,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_storage":{"entryPoint":4492,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":3907,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_LiquidityManagement":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_struct_struct_LiquidityManagement":{"entryPoint":4179,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_TokenConfig_dyn":{"entryPoint":4717,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":4035,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":4806,"id":null,"parameterSlots":2,"returnSlots":1},"copy_array_from_storage_to_memory_string":{"entryPoint":4296,"id":null,"parameterSlots":0,"returnSlots":1},"extract_byte_array_length":{"entryPoint":4215,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":4000,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_11149":{"entryPoint":3944,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_16318":{"entryPoint":3972,"id":null,"parameterSlots":1,"returnSlots":0},"fun_calculateConstructorArgs":{"entryPoint":5401,"id":45354,"parameterSlots":2,"returnSlots":1},"fun_calculateSalt":{"entryPoint":6266,"id":45252,"parameterSlots":2,"returnSlots":1},"fun_ensureEnabled":{"entryPoint":5250,"id":4973,"parameterSlots":0,"returnSlots":0},"fun_getActionId":{"entryPoint":4917,"id":5316,"parameterSlots":1,"returnSlots":1},"fun_getAuthorizer":{"entryPoint":5018,"id":18883,"parameterSlots":0,"returnSlots":1},"fun_getDeploymentAddress":{"entryPoint":4632,"id":4945,"parameterSlots":2,"returnSlots":1},"fun_getNewPoolPauseWindowEndTime":{"entryPoint":5195,"id":5576,"parameterSlots":0,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":4741,"id":null,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_address_dyn":{"entryPoint":4864,"id":null,"parameterSlots":1,"returnSlots":2}},"generatedSources":[],"immutableReferences":{"5256":[{"length":32,"start":4960}],"5505":[{"length":32,"start":653}],"5507":[{"length":32,"start":297},{"length":32,"start":5197}],"18834":[{"length":32,"start":506},{"length":32,"start":2557},{"length":32,"start":2854},{"length":32,"start":5085},{"length":32,"start":6095}]},"linkReferences":{},"object":"60806040526004361015610011575f80fd5b5f80358060e01c908163193ad50f14610ef45781632f2770db14610da7575080633f819b6f14610d7857806344f6fec714610d015780634bef86d914610626578063531aa03e146105be57806353a72f7e1461049757806354fd4d50146103b85780636634b7531461036f578063673a2a1f146102d45780636c57f5a9146102b157806378da80cb14610270578063851c1bb31461021e5780638d928af8146101cd5780638eec5d70146101af578063aaabadc514610176578063db035ebc1461014d578063e9d56e191461010c5763ec888061146100ee575f80fd5b34610109578060031936011261010957602090604051908152f35b80fd5b5034610109578060031936011261010957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610109578060031936011261010957602061016861144b565b63ffffffff60405191168152f35b5034610109578060031936011261010957602061019161139a565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346101095780600319360112610109576020600154604051908152f35b5034610109578060031936011261010957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461010957602060031936011261010957600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361010957602061026883611335565b604051908152f35b5034610109578060031936011261010957602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610109578060031936011261010957602060ff600254166040519015158152f35b5034610109578060031936011261010957604051600180548083528184526020808401947fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69392915b8282106103445761034086610334818a0382610fa0565b60405191829182611002565b0390f35b845473ffffffffffffffffffffffffffffffffffffffff16875295860195938301939083019061031d565b50346101095760206003193601126101095760ff604060209273ffffffffffffffffffffffffffffffffffffffff6103a5610fdf565b1681528084522054166040519015158152f35b50346101095780600319360112610109576040516004545f826103da83611077565b91828252602093600190856001821691825f1461047757505060011461041c575b5061040892500383610fa0565b610340604051928284938452830190610f43565b84915060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b905f915b85831061045f5750506104089350820101856103fb565b80548389018501528794508693909201918101610448565b60ff19168582015261040895151560051b85010192508791506103fb9050565b503461010957604060031936011261010957600435906024356001926001548082101561059657806104c984846112c6565b11610555575b506104d98261126d565b926104e76040519485610fa0565b828452601f196104f68461126d565b013660208601375b82811061051357604051806103408682611002565b8073ffffffffffffffffffffffffffffffffffffffff61053c6105378894866112c6565b611300565b90549060031b1c1661054e8287611285565b52016104fe565b90809250810390811161056957905f6104cf565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6004847f4e23d035000000000000000000000000000000000000000000000000000000008152fd5b5034610109576040600319360112610109576105d8610fdf565b73ffffffffffffffffffffffffffffffffffffffff602435818116810361062257826106138261060d61061994602097611519565b9261187a565b90611218565b60405191168152f35b5f80fd5b346106225760031936016101808112610622576080136106225760405161064c81610f68565b60043573ffffffffffffffffffffffffffffffffffffffff81168103610622578152602435600281101561062257602082015260443573ffffffffffffffffffffffffffffffffffffffff81168103610622576040820152606435801515810361062257606082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610622576040516106eb81610f68565b60843573ffffffffffffffffffffffffffffffffffffffff8116810361062257815260a435600281101561062257602082015260c43573ffffffffffffffffffffffffffffffffffffffff8116810361062257604082015260e435801515810361062257606082015260607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc36011261062257604051916060830183811067ffffffffffffffff821117610b78576040526101043573ffffffffffffffffffffffffffffffffffffffff811681036106225783526101243573ffffffffffffffffffffffffffffffffffffffff811681036106225760208401526101443573ffffffffffffffffffffffffffffffffffffffff811690818103610622576040850152610cd95773ffffffffffffffffffffffffffffffffffffffff8151169073ffffffffffffffffffffffffffffffffffffffff835116906040519361085085610f84565b600285525f5b60408110610cc257506108ed92916108e2916108d06040519261087884610f84565b60028452604036602086013785881115610caa575f906702c68af0bb1400006108be60ff8060015b16941687670b1a2bc2ec5000006108b887849b611285565b52611285565b526108c9828b611285565b5288611285565b506108db8288611285565b5285611285565b5061060d8184611519565b6040519161091f836020808201936109048561118c565b90805192839101825e015f815203601f198101855284610fa0565b825115610c825773ffffffffffffffffffffffffffffffffffffffff9251905ff516908115610c5a57610950611482565b815f525f60205260405f20600160ff1982541617905560015468010000000000000000811015610b785780600161098a9201600155611300565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff85831b921b1916179055817f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc5f80a26109dd611053565b6109e561144b565b9373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b15610622579390916040519485927feeec802f0000000000000000000000000000000000000000000000000000000084526101a484018660048601526101a06024860152835180915260206101c486019401905f5b818110610bb0575050505f9473ffffffffffffffffffffffffffffffffffffffff604086959463ffffffff610b0c956101643560448a01521660648801528860848801528281511660a48801528260208201511660c488015201511660e4850152856101048501526101248401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610ba557610b5e575b602090604051908152f35b67ffffffffffffffff8211610b7857602091604052610b53565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b918097965094909293945173ffffffffffffffffffffffffffffffffffffffff81511682526020810151906002821015610c2d5782606060809260209485600197015273ffffffffffffffffffffffffffffffffffffffff6040820151166040840152015115156060820152019701910191889596949392610a73565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001906702c68af0bb1400006108be60ff805f6108a0565b602090610ccd611053565b82828901015201610856565b7f61ee1764000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106225760406003193601126106225760043567ffffffffffffffff8111610622573660238201121561062257806004013590610d3e82610fc3565b610d4b6040519182610fa0565b8281523660248484010111610622575f602084819560246101919601838601378301015260243590611218565b34610622575f60031936011261062257610340610d936110c8565b604051918291602083526020830190610f43565b34610622575f600319360112610622577fffffffff00000000000000000000000000000000000000000000000000000000610de29116611335565b602073ffffffffffffffffffffffffffffffffffffffff610e0161139a565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa908115610ba5575f91610eb9575b5015610e9157610e5e611482565b600160ff1960025416176002557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d505f80a1005b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506020813d602011610eec575b81610ed460209383610fa0565b81010312610622575180151581036106225781610e50565b3d9150610ec7565b34610622575f600319360112610622576080610f0e611053565b610f4160405180926060809180511515845260208101511515602085015260408101511515604085015201511515910152565bf35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6080810190811067ffffffffffffffff821117610b7857604052565b6060810190811067ffffffffffffffff821117610b7857604052565b90601f601f19910116810190811067ffffffffffffffff821117610b7857604052565b67ffffffffffffffff8111610b7857601f01601f191660200190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361062257565b60209060206040818301928281528551809452019301915f5b828110611029575050505090565b835173ffffffffffffffffffffffffffffffffffffffff168552938101939281019260010161101b565b6040519061106082610f68565b5f6060838281528260208201528260408201520152565b90600182811c921680156110be575b602083101461109157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691611086565b604051905f82600554916110db83611077565b808352926020906001908181169081156111675750600114611108575b505061110692500383610fa0565b565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b82841061114f57506111069450505081016020015f806110f8565b85548885018301529485019487945092810192611134565b90506020935061110695925060ff1991501682840152151560051b8201015f806110f8565b6003545f929161119b82611077565b9160019081811690811561120557506001146111b657505050565b909192935060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f915b8483106111f2575050500190565b81816020925485870152019201916111e4565b60ff191683525050811515909102019150565b605591600b9160405161124f816020808201946112348661118c565b90805192839101825e015f815203601f198101835282610fa0565b5190209060405191604083015260208201523081520160ff81532090565b67ffffffffffffffff8111610b785760051b60200190565b80518210156112995760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082018092116112d357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001548110156112995760015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905f90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f000000000000000000000000000000000000000000000000000000000000000084521660408201526024815261139481610f84565b51902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa918215610ba5575f9261141257505090565b9091506020813d602011611443575b8161142e60209383610fa0565b81010312610622575190811681036106225790565b3d9150611421565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff811642101561147d5790565b505f90565b60ff6002541661148e57565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020818303126106225780519067ffffffffffffffff8211610622570181601f82011215610622578051906114ea82610fc3565b926114f86040519485610fa0565b8284526020838301011161062257815f9260208093018386015e8301015290565b73ffffffffffffffffffffffffffffffffffffffff908116918116808311156118715760015f915b6040928351955f876004817f95d89b4100000000000000000000000000000000000000000000000000000000948582525afa968715611867575f97611849575b505f90600486518095819382525afa91821561183f575f9261181b575b506702c68af0bb1400006115e260ff8651936115b985610f84565b60028552670b1a2bc2ec5000006115da836020998b368c8b01371687611285565b521683611285565b526116e460278551977f42616c616e636572203830200000000000000000000000000000000000000000868a0152805194868201958087602c8d015e8a01907f2032302000000000000000000000000000000000000000000000000000000000602c83015261166e60308c83518b85019581878583015e015f83820152038d601082019052018c610fa0565b88519687937f422d3830000000000000000000000000000000000000000000000000000000008a860152518091602486015e8301907f2d3230000000000000000000000000000000000000000000000000000000000060248301525180928583015e015f83820152036007810185520183610fa0565b83519560a0870187811067ffffffffffffffff821117610b78579085939291611753989697959752855285850191825282850195600287526060860191825261172b6110c8565b91608087019283526117878551998a9887858b01525160a060608b01526101008a0190610f43565b9451947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa095868a83030160808b0152610f43565b975160a08801525196838782030160c08801528180895192838152019801915f5b8281106118045750505050946117cc916118019651908683030160e0870152610f43565b917f0000000000000000000000000000000000000000000000000000000000000000169083015203601f198101835282610fa0565b90565b83518a52988101988a9850928101926001016117a8565b6118389192503d805f833e6118308183610fa0565b8101906114b6565b905f61159e565b84513d5f823e3d90fd5b5f919750611860903d8084833e6118308183610fa0565b9690611581565b85513d5f823e3d90fd5b5f600191611541565b60405190602082019246845273ffffffffffffffffffffffffffffffffffffffff80921660408401521660608201526060815261139481610f6856fea2646970667358221220a88b42459ca1c48109a0006e01cac2b893fba8ebd5abec92ff1154a51e5f012264736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 CALLDATALOAD DUP1 PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x193AD50F EQ PUSH2 0xEF4 JUMPI DUP2 PUSH4 0x2F2770DB EQ PUSH2 0xDA7 JUMPI POP DUP1 PUSH4 0x3F819B6F EQ PUSH2 0xD78 JUMPI DUP1 PUSH4 0x44F6FEC7 EQ PUSH2 0xD01 JUMPI DUP1 PUSH4 0x4BEF86D9 EQ PUSH2 0x626 JUMPI DUP1 PUSH4 0x531AA03E EQ PUSH2 0x5BE JUMPI DUP1 PUSH4 0x53A72F7E EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x3B8 JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x673A2A1F EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x78DA80CB EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0x8EEC5D70 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0xDB035EBC EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE9D56E19 EQ PUSH2 0x10C JUMPI PUSH4 0xEC888061 EQ PUSH2 0xEE JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH2 0x168 PUSH2 0x144B JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH2 0x191 PUSH2 0x139A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP3 SUB PUSH2 0x109 JUMPI PUSH1 0x20 PUSH2 0x268 DUP4 PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 DUP1 SLOAD DUP1 DUP4 MSTORE DUP2 DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD SWAP5 PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 SWAP3 SWAP2 JUMPDEST DUP3 DUP3 LT PUSH2 0x344 JUMPI PUSH2 0x340 DUP7 PUSH2 0x334 DUP2 DUP11 SUB DUP3 PUSH2 0xFA0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1002 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP7 ADD SWAP6 SWAP4 DUP4 ADD SWAP4 SWAP1 DUP4 ADD SWAP1 PUSH2 0x31D JUMP JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0xFF PUSH1 0x40 PUSH1 0x20 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x3A5 PUSH2 0xFDF JUMP JUMPDEST AND DUP2 MSTORE DUP1 DUP5 MSTORE KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x40 MLOAD PUSH1 0x4 SLOAD PUSH0 DUP3 PUSH2 0x3DA DUP4 PUSH2 0x1077 JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP1 DUP6 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x477 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x41C JUMPI JUMPDEST POP PUSH2 0x408 SWAP3 POP SUB DUP4 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0xF43 JUMP JUMPDEST DUP5 SWAP2 POP PUSH1 0x4 PUSH0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 PUSH0 SWAP2 JUMPDEST DUP6 DUP4 LT PUSH2 0x45F JUMPI POP POP PUSH2 0x408 SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0x3FB JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0x448 JUMP JUMPDEST PUSH1 0xFF NOT AND DUP6 DUP3 ADD MSTORE PUSH2 0x408 SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0x3FB SWAP1 POP JUMP JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD PUSH1 0x1 SWAP3 PUSH1 0x1 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0x596 JUMPI DUP1 PUSH2 0x4C9 DUP5 DUP5 PUSH2 0x12C6 JUMP JUMPDEST GT PUSH2 0x555 JUMPI JUMPDEST POP PUSH2 0x4D9 DUP3 PUSH2 0x126D JUMP JUMPDEST SWAP3 PUSH2 0x4E7 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xFA0 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x1F NOT PUSH2 0x4F6 DUP5 PUSH2 0x126D JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY JUMPDEST DUP3 DUP2 LT PUSH2 0x513 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0x340 DUP7 DUP3 PUSH2 0x1002 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x53C PUSH2 0x537 DUP9 SWAP5 DUP7 PUSH2 0x12C6 JUMP JUMPDEST PUSH2 0x1300 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR AND PUSH2 0x54E DUP3 DUP8 PUSH2 0x1285 JUMP JUMPDEST MSTORE ADD PUSH2 0x4FE JUMP JUMPDEST SWAP1 DUP1 SWAP3 POP DUP2 SUB SWAP1 DUP2 GT PUSH2 0x569 JUMPI SWAP1 PUSH0 PUSH2 0x4CF JUMP JUMPDEST PUSH1 0x24 DUP4 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE REVERT JUMPDEST PUSH1 0x4 DUP5 PUSH32 0x4E23D03500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE REVERT JUMPDEST POP CALLVALUE PUSH2 0x109 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x109 JUMPI PUSH2 0x5D8 PUSH2 0xFDF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP3 PUSH2 0x613 DUP3 PUSH2 0x60D PUSH2 0x619 SWAP5 PUSH1 0x20 SWAP8 PUSH2 0x1519 JUMP JUMPDEST SWAP3 PUSH2 0x187A JUMP JUMPDEST SWAP1 PUSH2 0x1218 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD PUSH2 0x180 DUP2 SLT PUSH2 0x622 JUMPI PUSH1 0x80 SGT PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD PUSH2 0x64C DUP2 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP2 MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x622 JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x44 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x64 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD PUSH2 0x6EB DUP2 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x84 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP2 MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x622 JUMPI PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xE4 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFC CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x60 DUP4 ADD DUP4 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE PUSH2 0x104 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI DUP4 MSTORE PUSH2 0x124 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x144 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x622 JUMPI PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xCD9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 MLOAD AND SWAP1 PUSH1 0x40 MLOAD SWAP4 PUSH2 0x850 DUP6 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x2 DUP6 MSTORE PUSH0 JUMPDEST PUSH1 0x40 DUP2 LT PUSH2 0xCC2 JUMPI POP PUSH2 0x8ED SWAP3 SWAP2 PUSH2 0x8E2 SWAP2 PUSH2 0x8D0 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x878 DUP5 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x2 DUP5 MSTORE PUSH1 0x40 CALLDATASIZE PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP6 DUP9 GT ISZERO PUSH2 0xCAA JUMPI PUSH0 SWAP1 PUSH8 0x2C68AF0BB140000 PUSH2 0x8BE PUSH1 0xFF DUP1 PUSH1 0x1 JUMPDEST AND SWAP5 AND DUP8 PUSH8 0xB1A2BC2EC500000 PUSH2 0x8B8 DUP8 DUP5 SWAP12 PUSH2 0x1285 JUMP JUMPDEST MSTORE PUSH2 0x1285 JUMP JUMPDEST MSTORE PUSH2 0x8C9 DUP3 DUP12 PUSH2 0x1285 JUMP JUMPDEST MSTORE DUP9 PUSH2 0x1285 JUMP JUMPDEST POP PUSH2 0x8DB DUP3 DUP9 PUSH2 0x1285 JUMP JUMPDEST MSTORE DUP6 PUSH2 0x1285 JUMP JUMPDEST POP PUSH2 0x60D DUP2 DUP5 PUSH2 0x1519 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH2 0x91F DUP4 PUSH1 0x20 DUP1 DUP3 ADD SWAP4 PUSH2 0x904 DUP6 PUSH2 0x118C JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP6 MSTORE DUP5 PUSH2 0xFA0 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0xC82 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 MLOAD SWAP1 PUSH0 CREATE2 AND SWAP1 DUP2 ISZERO PUSH2 0xC5A JUMPI PUSH2 0x950 PUSH2 0x1482 JUMP JUMPDEST DUP2 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0xB78 JUMPI DUP1 PUSH1 0x1 PUSH2 0x98A SWAP3 ADD PUSH1 0x1 SSTORE PUSH2 0x1300 JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE DUP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC PUSH0 DUP1 LOG2 PUSH2 0x9DD PUSH2 0x1053 JUMP JUMPDEST PUSH2 0x9E5 PUSH2 0x144B JUMP JUMPDEST SWAP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x622 JUMPI SWAP4 SWAP1 SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 SWAP3 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP5 MSTORE PUSH2 0x1A4 DUP5 ADD DUP7 PUSH1 0x4 DUP7 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP7 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE PUSH1 0x20 PUSH2 0x1C4 DUP7 ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xBB0 JUMPI POP POP POP PUSH0 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP7 SWAP6 SWAP5 PUSH4 0xFFFFFFFF PUSH2 0xB0C SWAP6 PUSH2 0x164 CALLDATALOAD PUSH1 0x44 DUP11 ADD MSTORE AND PUSH1 0x64 DUP9 ADD MSTORE DUP9 PUSH1 0x84 DUP9 ADD MSTORE DUP3 DUP2 MLOAD AND PUSH1 0xA4 DUP9 ADD MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0xC4 DUP9 ADD MSTORE ADD MLOAD AND PUSH1 0xE4 DUP6 ADD MSTORE DUP6 PUSH2 0x104 DUP6 ADD MSTORE PUSH2 0x124 DUP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xBA5 JUMPI PUSH2 0xB5E JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0xB78 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x40 MSTORE PUSH2 0xB53 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 DUP1 SWAP8 SWAP7 POP SWAP5 SWAP1 SWAP3 SWAP4 SWAP5 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0xC2D JUMPI DUP3 PUSH1 0x60 PUSH1 0x80 SWAP3 PUSH1 0x20 SWAP5 DUP6 PUSH1 0x1 SWAP8 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP8 ADD SWAP2 ADD SWAP2 DUP9 SWAP6 SWAP7 SWAP5 SWAP4 SWAP3 PUSH2 0xA73 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x1 SWAP1 PUSH8 0x2C68AF0BB140000 PUSH2 0x8BE PUSH1 0xFF DUP1 PUSH0 PUSH2 0x8A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0xCCD PUSH2 0x1053 JUMP JUMPDEST DUP3 DUP3 DUP10 ADD ADD MSTORE ADD PUSH2 0x856 JUMP JUMPDEST PUSH32 0x61EE176400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x622 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x622 JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH2 0xD3E DUP3 PUSH2 0xFC3 JUMP JUMPDEST PUSH2 0xD4B PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0xFA0 JUMP JUMPDEST DUP3 DUP2 MSTORE CALLDATASIZE PUSH1 0x24 DUP5 DUP5 ADD ADD GT PUSH2 0x622 JUMPI PUSH0 PUSH1 0x20 DUP5 DUP2 SWAP6 PUSH1 0x24 PUSH2 0x191 SWAP7 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x24 CALLDATALOAD SWAP1 PUSH2 0x1218 JUMP JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH2 0x340 PUSH2 0xD93 PUSH2 0x10C8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xF43 JUMP JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xDE2 SWAP2 AND PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0xE01 PUSH2 0x139A JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0xBA5 JUMPI PUSH0 SWAP2 PUSH2 0xEB9 JUMPI JUMPDEST POP ISZERO PUSH2 0xE91 JUMPI PUSH2 0xE5E PUSH2 0x1482 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT PUSH1 0x2 SLOAD AND OR PUSH1 0x2 SSTORE PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 PUSH0 DUP1 LOG1 STOP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xEEC JUMPI JUMPDEST DUP2 PUSH2 0xED4 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x622 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x622 JUMPI DUP2 PUSH2 0xE50 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xEC7 JUMP JUMPDEST CALLVALUE PUSH2 0x622 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x622 JUMPI PUSH1 0x80 PUSH2 0xF0E PUSH2 0x1053 JUMP JUMPDEST PUSH2 0xF41 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB78 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x622 JUMPI JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1029 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x101B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1060 DUP3 PUSH2 0xF68 JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x10BE JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1091 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1086 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH0 DUP3 PUSH1 0x5 SLOAD SWAP2 PUSH2 0x10DB DUP4 PUSH2 0x1077 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1167 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1108 JUMPI JUMPDEST POP POP PUSH2 0x1106 SWAP3 POP SUB DUP4 PUSH2 0xFA0 JUMP JUMPDEST JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x114F JUMPI POP PUSH2 0x1106 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x10F8 JUMP JUMPDEST DUP6 SLOAD DUP9 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP8 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x1106 SWAP6 SWAP3 POP PUSH1 0xFF NOT SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x10F8 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH0 SWAP3 SWAP2 PUSH2 0x119B DUP3 PUSH2 0x1077 JUMP JUMPDEST SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x1205 JUMPI POP PUSH1 0x1 EQ PUSH2 0x11B6 JUMPI POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x11F2 JUMPI POP POP POP ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP6 DUP8 ADD MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0xFF NOT AND DUP4 MSTORE POP POP DUP2 ISZERO ISZERO SWAP1 SWAP2 MUL ADD SWAP2 POP JUMP JUMPDEST PUSH1 0x55 SWAP2 PUSH1 0xB SWAP2 PUSH1 0x40 MLOAD PUSH2 0x124F DUP2 PUSH1 0x20 DUP1 DUP3 ADD SWAP5 PUSH2 0x1234 DUP7 PUSH2 0x118C JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xFA0 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD MSTORE ADDRESS DUP2 MSTORE ADD PUSH1 0xFF DUP2 MSTORE8 KECCAK256 SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xB78 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x1299 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x12D3 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x1299 JUMPI PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH2 0x1394 DUP2 PUSH2 0xF84 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xBA5 JUMPI PUSH0 SWAP3 PUSH2 0x1412 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1443 JUMPI JUMPDEST DUP2 PUSH2 0x142E PUSH1 0x20 SWAP4 DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x622 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x622 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1421 JUMP JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x147D JUMPI SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH2 0x148E JUMPI JUMP JUMPDEST PUSH32 0x75884CDA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x622 JUMPI DUP1 MLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x622 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x622 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x14EA DUP3 PUSH2 0xFC3 JUMP JUMPDEST SWAP3 PUSH2 0x14F8 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0xFA0 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x622 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 DUP2 AND DUP1 DUP4 GT ISZERO PUSH2 0x1871 JUMPI PUSH1 0x1 PUSH0 SWAP2 JUMPDEST PUSH1 0x40 SWAP3 DUP4 MLOAD SWAP6 PUSH0 DUP8 PUSH1 0x4 DUP2 PUSH32 0x95D89B4100000000000000000000000000000000000000000000000000000000 SWAP5 DUP6 DUP3 MSTORE GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x1867 JUMPI PUSH0 SWAP8 PUSH2 0x1849 JUMPI JUMPDEST POP PUSH0 SWAP1 PUSH1 0x4 DUP7 MLOAD DUP1 SWAP6 DUP2 SWAP4 DUP3 MSTORE GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x183F JUMPI PUSH0 SWAP3 PUSH2 0x181B JUMPI JUMPDEST POP PUSH8 0x2C68AF0BB140000 PUSH2 0x15E2 PUSH1 0xFF DUP7 MLOAD SWAP4 PUSH2 0x15B9 DUP6 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x2 DUP6 MSTORE PUSH8 0xB1A2BC2EC500000 PUSH2 0x15DA DUP4 PUSH1 0x20 SWAP10 DUP12 CALLDATASIZE DUP13 DUP12 ADD CALLDATACOPY AND DUP8 PUSH2 0x1285 JUMP JUMPDEST MSTORE AND DUP4 PUSH2 0x1285 JUMP JUMPDEST MSTORE PUSH2 0x16E4 PUSH1 0x27 DUP6 MLOAD SWAP8 PUSH32 0x42616C616E636572203830200000000000000000000000000000000000000000 DUP7 DUP11 ADD MSTORE DUP1 MLOAD SWAP5 DUP7 DUP3 ADD SWAP6 DUP1 DUP8 PUSH1 0x2C DUP14 ADD MCOPY DUP11 ADD SWAP1 PUSH32 0x2032302000000000000000000000000000000000000000000000000000000000 PUSH1 0x2C DUP4 ADD MSTORE PUSH2 0x166E PUSH1 0x30 DUP13 DUP4 MLOAD DUP12 DUP6 ADD SWAP6 DUP2 DUP8 DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB DUP14 PUSH1 0x10 DUP3 ADD SWAP1 MSTORE ADD DUP13 PUSH2 0xFA0 JUMP JUMPDEST DUP9 MLOAD SWAP7 DUP8 SWAP4 PUSH32 0x422D383000000000000000000000000000000000000000000000000000000000 DUP11 DUP7 ADD MSTORE MLOAD DUP1 SWAP2 PUSH1 0x24 DUP7 ADD MCOPY DUP4 ADD SWAP1 PUSH32 0x2D32300000000000000000000000000000000000000000000000000000000000 PUSH1 0x24 DUP4 ADD MSTORE MLOAD DUP1 SWAP3 DUP6 DUP4 ADD MCOPY ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB PUSH1 0x7 DUP2 ADD DUP6 MSTORE ADD DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP4 MLOAD SWAP6 PUSH1 0xA0 DUP8 ADD DUP8 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xB78 JUMPI SWAP1 DUP6 SWAP4 SWAP3 SWAP2 PUSH2 0x1753 SWAP9 SWAP7 SWAP8 SWAP6 SWAP8 MSTORE DUP6 MSTORE DUP6 DUP6 ADD SWAP2 DUP3 MSTORE DUP3 DUP6 ADD SWAP6 PUSH1 0x2 DUP8 MSTORE PUSH1 0x60 DUP7 ADD SWAP2 DUP3 MSTORE PUSH2 0x172B PUSH2 0x10C8 JUMP JUMPDEST SWAP2 PUSH1 0x80 DUP8 ADD SWAP3 DUP4 MSTORE PUSH2 0x1787 DUP6 MLOAD SWAP10 DUP11 SWAP9 DUP8 DUP6 DUP12 ADD MSTORE MLOAD PUSH1 0xA0 PUSH1 0x60 DUP12 ADD MSTORE PUSH2 0x100 DUP11 ADD SWAP1 PUSH2 0xF43 JUMP JUMPDEST SWAP5 MLOAD SWAP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 SWAP6 DUP7 DUP11 DUP4 SUB ADD PUSH1 0x80 DUP12 ADD MSTORE PUSH2 0xF43 JUMP JUMPDEST SWAP8 MLOAD PUSH1 0xA0 DUP9 ADD MSTORE MLOAD SWAP7 DUP4 DUP8 DUP3 SUB ADD PUSH1 0xC0 DUP9 ADD MSTORE DUP2 DUP1 DUP10 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP9 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1804 JUMPI POP POP POP POP SWAP5 PUSH2 0x17CC SWAP2 PUSH2 0x1801 SWAP7 MLOAD SWAP1 DUP7 DUP4 SUB ADD PUSH1 0xE0 DUP8 ADD MSTORE PUSH2 0xF43 JUMP JUMPDEST SWAP2 PUSH32 0x0 AND SWAP1 DUP4 ADD MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0xFA0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP11 MSTORE SWAP9 DUP2 ADD SWAP9 DUP11 SWAP9 POP SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x17A8 JUMP JUMPDEST PUSH2 0x1838 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1830 DUP2 DUP4 PUSH2 0xFA0 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x14B6 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x159E JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 SWAP2 SWAP8 POP PUSH2 0x1860 SWAP1 RETURNDATASIZE DUP1 DUP5 DUP4 RETURNDATACOPY PUSH2 0x1830 DUP2 DUP4 PUSH2 0xFA0 JUMP JUMPDEST SWAP7 SWAP1 PUSH2 0x1581 JUMP JUMPDEST DUP6 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 SWAP2 PUSH2 0x1541 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 CHAINID DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0x1394 DUP2 PUSH2 0xF68 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 DUP12 TIMESTAMP GASLIMIT SWAP13 LOG1 0xC4 DUP2 MULMOD LOG0 STOP PUSH15 0x1CAC2B893FBA8EBD5ABEC92FF1154 0xA5 0x1E PUSH0 ADD 0x22 PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"1300:5107:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;2369:24:39;1300:5107:114;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;3846:6:33;1300:5107:114;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;1216:6:63;1300:5107:114;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;2073:20:39;1300:5107:114;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;4726:9:33;1300:5107:114;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;3987:6:33;1300:5107:114;;;;;;;;;;;;;;;3987:6:33;1300:5107:114;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;-1:-1:-1;1300:5107:114;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;4199:15:33;;;;4195:71;;4386:13;;;;;:::i;:::-;4413:12;4409:65;;1300:5107:114;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1300:5107:114;;;:::i;:::-;;;;;;;4542:9:33;;;;;;1300:5107:114;;;;;;;:::i;4553:3:33:-;4590:9;1300:5107:114;4583:17:33;4590:9;;;;;:::i;:::-;4583:17;:::i;:::-;1300:5107:114;;;;;;;4572:28:33;;;;:::i;:::-;1300:5107:114;;4527:13:33;;4409:65;1300:5107:114;;;;;;;;;;;4409:65:33;;;;1300:5107:114;;;;;;;;;;4195:71:33;1300:5107:114;4237:18:33;;;;;1300:5107:114;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;:::i;:::-;;;;;;;;;;;4590:58;4673:47;4590:58;;4738:43;4590:58;1300:5107;4590:58;;:::i;:::-;4673:47;;:::i;:::-;4738:43;;:::i;:::-;1300:5107;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:101;;1300:5107;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;3721:47;1300:5107;;3543:53;1300:5107;3478:55;1300:5107;;;;;;:::i;:::-;;;;;;;;;;3323:32;;;1300:5107;;;;;1469:5;3431:36;1300:5107;;;3323:50;1300:5107;;;3384:37;1416:5;3384:37;;;;;:::i;:::-;1416:5;3431:36;:::i;:::-;1416:5;3478:55;;;;:::i;:::-;;;;:::i;:::-;;3543:53;;;;:::i;:::-;;;;:::i;:::-;;3638:58;;;;:::i;3721:47::-;1300:5107;;6297:48:33;;;1300:5107:114;6297:48:33;;;1300:5107:114;;;;:::i;:::-;;;;;;;;;;;;;;6297:48:33;-1:-1:-1;;6297:48:33;;;;;;:::i;:::-;1300:5107:114;;1662:20:100;1658:80;;1300:5107:114;1790:100:100;;;1300:5107:114;1790:100:100;1300:5107:114;1903:18:100;;;1899:81;;5469:200:33;;:::i;:::-;1300:5107:114;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6314:13:33;1300:5107:114;;;;;;;;;;;;;5645:17:33;;1300:5107:114;5645:17:33;;1300:5107:114;;:::i;:::-;6937:30:33;;:::i;:::-;1216:6:63;1300:5107:114;1216:6:63;1300:5107:114;6831:267:33;;;;1300:5107:114;;;;;6831:267:33;;;1300:5107:114;6831:267:33;;1300:5107:114;;;6831:267:33;1300:5107:114;6831:267:33;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:267:33;1216:6:63;;1300:5107:114;1216:6:63;1300:5107:114;6831:267:33;;;;;;;;1300:5107:114;;;;;;;;;6831:267:33;1300:5107:114;;;;;;;;;6831:267:33;;1300:5107:114;;;;;;;;;;6831:267:33;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1899:81:100;1944:25;1300:5107:114;1944:25:100;1300:5107:114;;1944:25:100;1658:80;1705:22;1300:5107:114;1705:22:100;1300:5107:114;;1705:22:100;3323:50:114;1300:5107;;1469:5;3431:36;1300:5107;;;3323:50;;1300:5107;;;;;:::i;:::-;;;;;;;;;;2878:101;2943:25;1300:5107;2943:25;1300:5107;;2943:25;1300:5107;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1300:5107:114;;;;;1774:7:35;1762:20;1774:7;;1762:20;:::i;:::-;1592:60:63;1300:5107:114;1592:15:63;;:::i;:::-;1300:5107:114;;;;;1592:60:63;;;;1300:5107:114;1592:60:63;;1300:5107:114;1592:60:63;;1300:5107:114;1820:10:35;1300:5107:114;;;;1646:4:63;1300:5107:114;;;;1592:60:63;;;;;;;1300:5107:114;1592:60:63;;;1300:5107:114;1797:34:35;;1793:90;;5207:134:33;;:::i;:::-;5297:4;-1:-1:-1;;5285:16:33;1300:5107:114;;;5285:16:33;1300:5107:114;5317:17:33;1300:5107:114;5317:17:33;;1300:5107:114;1793:90:35;1854:18;1300:5107:114;1854:18:35;1300:5107:114;;1854:18:35;1592:60:63;;;;;;;;;;;;;;;;;:::i;:::-;;;1300:5107:114;;;;;;;;;;;;1592:60:63;;;;;;-1:-1:-1;1592:60:63;;1300:5107:114;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1300:5107:114;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;1300:5107:114;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;1935:12;1300:5107;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;1935:12;-1:-1:-1;1300:5107:114;;;-1:-1:-1;1300:5107:114;;;;;;;-1:-1:-1;1300:5107:114;;-1:-1:-1;;;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;;;;;;;1935:12;1300:5107;;;;;;;;;6314:13:33;1300:5107:114;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;6314:13:33;-1:-1:-1;1300:5107:114;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;1300:5107:114;;;-1:-1:-1;;1300:5107:114;;;;;;;;-1:-1:-1;1300:5107:114:o;4785:379:33:-;2766:1598:100;4785:379:33;2766:1598:100;4785:379:33;1300:5107:114;;4927:48:33;;;;;;1300:5107:114;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;1300:5107:114;;4927:48:33;-1:-1:-1;;4927:48:33;;;;;;:::i;:::-;1300:5107:114;5012:23:33;;2766:1598:100;1300:5107:114;2766:1598:100;;1300:5107:114;2766:1598:100;;;4927:48:33;2766:1598:100;;;2342:4;2766:1598;;;;;;;4785:379:33;:::o;1300:5107:114:-;;;;;;;;;;;:::o;1416:5::-;1300:5107;;1416:5;;;;;;;;;;;;:::o;:::-;;;;;;;;;;1300:5107;;;;;;;;;;:::o;:::-;;;;;;;;;;;5598:4:33;1300:5107:114;;;;;;5598:4:33;-1:-1:-1;1300:5107:114;;;;-1:-1:-1;1300:5107:114;:::o;1931:430:35:-;1300:5107:114;;;2303:50:35;;;2320:22;;1300:5107:114;;;;;;;2303:50:35;;;;;;:::i;:::-;1300:5107:114;2293:61:35;;1931:430;:::o;1366:109:63:-;1300:5107:114;;;1442:26:63;;1300:5107:114;1442:26:63;1300:5107:114;1442:26:63;1300:5107:114;1216:6:63;1300:5107:114;;1442:26:63;;;;;;;;;;;1435:33;;1366:109;:::o;1442:26::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;1300:5107:114;;;;;;;;;;;;1366:109:63;:::o;1442:26::-;;;-1:-1:-1;1442:26:63;;2922:332:39;3191:24;1300:5107:114;;;3173:15:39;:42;1300:5107:114;;;2922:332:39;:::o;3172:75::-;;-1:-1:-1;2922:332:39;:::o;5347:116:33:-;1300:5107:114;4726:9:33;1300:5107:114;;5397:60:33;;5347:116::o;5397:60::-;5436:10;-1:-1:-1;5436:10:33;;-1:-1:-1;5436:10:33;1300:5107:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;:::o;5001:1102::-;1300:5107;;;;;;;5259:32;;;1300:5107;;;5295:1;-1:-1:-1;5259:50:114;;1300:5107;;;;;-1:-1:-1;1300:5107:114;5358:49;1300:5107;;5358:49;;;;;;;;;;;-1:-1:-1;5358:49:114;;;5259:50;1300:5107;-1:-1:-1;1300:5107:114;5358:49;1300:5107;;5454:48;;;;;;;;;;;;;-1:-1:-1;5454:48:114;;;5259:50;1300:5107;1469:5;5613:36;1300:5107;;;;;;;:::i;:::-;5554:1;1300:5107;;1416:5;5566:37;1300:5107;;;;;;;;;;5566:37;;:::i;:::-;1416:5;1300:5107;5613:36;;:::i;:::-;1416:5;1300:5107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:5;;5702:360;;;1416:5;;;5702:360;;;1416:5;5554:1;1416:5;;1300:5107;5702:360;;1416:5;;;1300:5107;;:::i;:::-;5702:360;;;;1416:5;;;1300:5107;;;5678:418;;;;;;;1300:5107;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;5702:360;1300:5107;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;;;;;;5678:418;1300:5107;;;;;;;;;;;;:::i;:::-;1216:6:63;;1300:5107:114;;;;;5678:418;-1:-1:-1;;5678:418:114;;;;;;:::i;:::-;5001:1102;:::o;1300:5107::-;;;;;;;;;;;-1:-1:-1;1300:5107:114;;;;;;;;5454:48;;;;;;;-1:-1:-1;5454:48:114;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;1300:5107;;;-1:-1:-1;1300:5107:114;;;;;5358:49;-1:-1:-1;5358:49:114;;;;;;;;;;;;;;:::i;:::-;;;;;;1300:5107;;;-1:-1:-1;1300:5107:114;;;;;5259:50;-1:-1:-1;5307:1:114;5259:50;;;4794:201;1300:5107;;4929:58;;;;4940:13;;1300:5107;;;;;;;;;;;;;;;;4929:58;;;;;:::i"},"methodIdentifiers":{"create((address,uint8,address,bool),(address,uint8,address,bool),(address,address,address),uint256)":"4bef86d9","disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDefaultLiquidityManagement()":"193ad50f","getDefaultPoolHooksContract()":"ec888061","getDeploymentAddress(bytes,bytes32)":"44f6fec7","getNewPoolPauseWindowEndTime()":"db035ebc","getOriginalPauseWindowEndTime()":"e9d56e19","getPauseWindowDuration()":"78da80cb","getPool(address,address)":"531aa03e","getPoolCount()":"8eec5d70","getPoolVersion()":"3f819b6f","getPools()":"673a2a1f","getPoolsInRange(uint256,uint256)":"53a72f7e","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowDuration\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"factoryVersion\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"poolVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Create2EmptyBytecode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Create2FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"Create2InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Disabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolPauseWindowDurationOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StandardPoolWithCreator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig\",\"name\":\"highWeightTokenConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig\",\"name\":\"lowWeightTokenConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"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\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultLiquidityManagement\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultPoolHooksContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeploymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNewPoolPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOriginalPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"highWeightToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"lowWeightToken\",\"type\":\"address\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPoolsInRange\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These are standard Weighted Pools, but constrained to two tokens and 80/20 weights, greatly simplifying their configuration. This is an example of a customized factory, designed to deploy special-purpose pools. It does not allow hooks, and has a custom salt computation that does not consider the deployer address. See https://medium.com/balancer-protocol/the-8020-initiative-64a7a6cab976 for one use case, and https://medium.com/balancer-protocol/80-20-balancer-pools-ad7fed816c8d for a general discussion of the benefits of 80/20 pools.\",\"errors\":{\"Create2EmptyBytecode()\":[{\"details\":\"There's no code to deploy.\"}],\"Create2FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"Create2InsufficientBalance(uint256,uint256)\":[{\"details\":\"Not enough balance for performing a CREATE2 deploy.\"}]},\"events\":{\"PoolCreated(address)\":{\"params\":{\"pool\":\"The address of the new pool\"}}},\"kind\":\"dev\",\"methods\":{\"create((address,uint8,address,bool),(address,uint8,address,bool),(address,address,address),uint256)\":{\"details\":\"Since tokens must be sorted, pass in explicit 80/20 token config structs. This assumes both tokens support the `IERC20Metadata` interface with `symbol` that returns a string. Otherwise, use the regular `WeightedPoolFactory`.\",\"params\":{\"highWeightTokenConfig\":\"The token configuration of the high weight token\",\"lowWeightTokenConfig\":\"The token configuration of the low weight token\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"swapFeePercentage\":\"Initial swap fee percentage\"},\"returns\":{\"pool\":\"The pool address\"}},\"disable()\":{\"details\":\"Existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAuthorizer()\":{\"returns\":{\"_0\":\"authorizer An interface pointer to the Authorizer\"}},\"getDefaultLiquidityManagement()\":{\"details\":\"Users can call this to create a structure with all false arguments, then set the ones they need to true.\",\"returns\":{\"liquidityManagement\":\"Liquidity management flags, all initialized to false\"}},\"getDeploymentAddress(bytes,bytes32)\":{\"params\":{\"constructorArgs\":\"The arguments used to create the pool\",\"salt\":\"The salt used to deploy the pool\"},\"returns\":{\"_0\":\"The predicted address of the pool, given the salt\"}},\"getNewPoolPauseWindowEndTime()\":{\"details\":\"We intend for all pools deployed by this factory to have the same pause window end time (i.e., after this date, all future pools will be unpausable). This function will return `_poolsPauseWindowEndTime` until it passes, after which it will return 0.\",\"returns\":{\"_0\":\"pauseWindowEndTime The resolved pause window end time (0 indicating it's no longer pausable)\"}},\"getOriginalPauseWindowEndTime()\":{\"returns\":{\"_0\":\"pauseWindowEndTime The end time as a timestamp\"}},\"getPauseWindowDuration()\":{\"returns\":{\"_0\":\"pauseWindowDuration The duration in seconds\"}},\"getPool(address,address)\":{\"params\":{\"highWeightToken\":\"The token with 80% weight in the pool.\",\"lowWeightToken\":\"The token with 20% weight in the pool.\"},\"returns\":{\"pool\":\"Address of the pool\"}},\"getPoolCount()\":{\"details\":\"This can then be used to \\\"paginate\\\" calls to `getPools` to control gas costs.\",\"returns\":{\"_0\":\"The number of pools deployed by this factory\"}},\"getPoolVersion()\":{\"details\":\"This is typically only useful in complex Pool deployment schemes, where multiple subsystems need to know about each other. Note that this value will only be set at factory creation time.\",\"returns\":{\"_0\":\"A string representation of the pool version\"}},\"getPools()\":{\"returns\":{\"_0\":\"The list of pools deployed by this factory\"}},\"getPoolsInRange(uint256,uint256)\":{\"details\":\"`start` must be a valid index, but if `count` exceeds the total length, it will not revert, but simply stop at the end and return fewer results than requested.\",\"params\":{\"count\":\"The maximum number of pools to return\",\"start\":\"The index of the first pool to return\"},\"returns\":{\"pools\":\"The list of pools deployed by this factory, starting at `start` and returning up to `count` pools\"}},\"getVault()\":{\"returns\":{\"_0\":\"vault An interface pointer to the Vault\"}},\"isDisabled()\":{\"returns\":{\"_0\":\"True if this factory was disabled\"}},\"isPoolFromFactory(address)\":{\"params\":{\"pool\":\"The pool to check\"},\"returns\":{\"_0\":\"True if `pool` was created by this factory\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Disabled()\":[{\"notice\":\"Attempted pool creation after the factory was disabled.\"}],\"IndexOutOfBounds()\":[{\"notice\":\"A pool index is beyond the current bounds of the array.\"}],\"PoolPauseWindowDurationOverflow()\":[{\"notice\":\"The factory deployer gave a duration that would overflow the Unix timestamp.\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"StandardPoolWithCreator()\":[{\"notice\":\"A pool creator was specified for a pool from a Balancer core pool type.\"}]},\"events\":{\"FactoryDisabled()\":{\"notice\":\"The factory was disabled by governance.\"},\"PoolCreated(address)\":{\"notice\":\"A pool was deployed.\"}},\"kind\":\"user\",\"methods\":{\"create((address,uint8,address,bool),(address,uint8,address,bool),(address,address,address),uint256)\":{\"notice\":\"Deploys a new `WeightedPool`.\"},\"disable()\":{\"notice\":\"Disable the factory, preventing the creation of more pools.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"notice\":\"Get the address of the Authorizer.\"},\"getDefaultLiquidityManagement()\":{\"notice\":\"Convenience function for constructing a LiquidityManagement object.\"},\"getDefaultPoolHooksContract()\":{\"notice\":\"A common place to retrieve a default hooks contract. Currently set to address(0) (i.e. no hooks).\"},\"getDeploymentAddress(bytes,bytes32)\":{\"notice\":\"Return the address where a new pool will be deployed, based on the factory address and salt.\"},\"getNewPoolPauseWindowEndTime()\":{\"notice\":\"Returns the current pauseWindowEndTime that will be applied to Pools created by this factory.\"},\"getOriginalPauseWindowEndTime()\":{\"notice\":\"Returns the original factory pauseWindowEndTime, regardless of the current time.\"},\"getPauseWindowDuration()\":{\"notice\":\"Return the pause window duration. This is the time pools will be pausable after factory deployment.\"},\"getPool(address,address)\":{\"notice\":\"Gets the address of the pool with the respective tokens and weights.\"},\"getPoolCount()\":{\"notice\":\"Return the total number of pools deployed by this factory.\"},\"getPoolVersion()\":{\"notice\":\"Returns a JSON representation of the deployed pool version containing name, version number and task ID.\"},\"getPools()\":{\"notice\":\"Return the complete list of pools deployed by this factory.\"},\"getPoolsInRange(uint256,uint256)\":{\"notice\":\"Return a subset of the list of pools deployed by this factory.\"},\"getVault()\":{\"notice\":\"Get the address of the Balancer Vault.\"},\"isDisabled()\":{\"notice\":\"Check whether this factory has been disabled by governance.\"},\"isPoolFromFactory(address)\":{\"notice\":\"Check whether a pool was deployed by this factory.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"Weighted Pool factory for 80/20 pools.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/WeightedPool8020Factory.sol\":\"WeightedPool8020Factory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol\":{\"keccak256\":\"0x4dbf765d0fba4be1552aa5309aadee71929f74a84818cd453bb23f873ca91bd7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://65c241e3f125e87cea6cad51b075c6d821ba89e45756d8a57590a1f0c6b0d409\",\"dweb:/ipfs/Qmdhs7Fri1yfaRN4S5mPbr76ytv4EhxDntWeYw6mspw1Xq\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol\":{\"keccak256\":\"0xb97e44d4ebd74212195ebf10dc94cd46929e4c3dd217215945d164f02426891f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdc1656abb0e6c82640d17e2752684cce674cdd54665e01491c2b3ccb74c5d8f\",\"dweb:/ipfs/QmfFr81CMmBJa27uHe4aquqHmU2nXCTpXST1shNq6ik8PA\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\":{\"keccak256\":\"0x6f8c558b0520faae0c4576f30225b5a97821a4cd210878a0ba10c102a2f753f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b40aa7a5ee39fa2e297c684fd29ad45d866f1fc61cd997120a417b02a4d908aa\",\"dweb:/ipfs/QmYP5pQAF7SDLgy3aerqfnc4VwdmfQix2jcQUNL3o83BY9\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol\":{\"keccak256\":\"0x5888b7317d6a8f91a7665922da7e1e00ee8ef47f6690d4bd7f44d37888e21848\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://00b22e2600301568c628a652fcc8f5d79145218feab59a8963dfe300763d8763\",\"dweb:/ipfs/QmNt2BgJYNL7ywhNvR42NneXDYQ7xRyTaTunfgJ2cCVQFR\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9594d2dc75aa8c92bb39d30cd76d3bfbb203fe17c4ae35b6f8d882ed4ac868d4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a43d706d34c9f071bed27372100fedaeb12ec4c5c3529e150c8684444c4a619\",\"dweb:/ipfs/QmYUnJ2CtjJY2XktSzamExryTNbAYjesnymMpqTvQuXUka\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":{\"keccak256\":\"0xb31be209c69a6e60f4486b793bfc57b3ab7aa25efd29f40e981d5b9c95196f7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://04a10cf9c7a408f0d617d8f25dedd1d4d8d0411ac022b26293b39fccfbf41c71\",\"dweb:/ipfs/QmaExV5EYT4dtE9EAybKaraqXnbpM4usyAfFV5DHfatkof\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/WeightedPool.sol\":{\"keccak256\":\"0x6f31c5cde7725828cd8dae2a9d79efb8980ab5e5b192ec1073aac995a741f2fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64de9af946ef860d74237133bd560e6bbad8921ede3a46ba01466cf38f8be036\",\"dweb:/ipfs/Qmc6qAAmJ6qLYRWXNTafJ1ivo48yNVJntAXf7X4LYwySWb\"]},\"contracts/WeightedPool8020Factory.sol\":{\"keccak256\":\"0x410c44e8ca1ebcc8a542cb0e4fc0620b35878ee1ed0cf7d5f292b4546d3c8169\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ef35c5b67edc0d02b41f815ae914154d0f543d0da0679d7ccef3dabe183d7c43\",\"dweb:/ipfs/QmXRQbYLAyuD3dZ2ZbDGUmDHQoSX3VcUiejs5iEnBYCHV5\"]}},\"version\":1}"}},"contracts/WeightedPoolFactory.sol":{"WeightedPoolFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"uint32","name":"pauseWindowDuration","type":"uint32"},{"internalType":"string","name":"factoryVersion","type":"string"},{"internalType":"string","name":"poolVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Create2EmptyBytecode","type":"error"},{"inputs":[],"name":"Create2FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"Create2InsufficientBalance","type":"error"},{"inputs":[],"name":"Disabled","type":"error"},{"inputs":[],"name":"IndexOutOfBounds","type":"error"},{"inputs":[],"name":"PoolPauseWindowDurationOverflow","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"StandardPoolWithCreator","type":"error"},{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenConfig[]","name":"tokens","type":"tuple[]"},{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"},{"components":[{"internalType":"address","name":"pauseManager","type":"address"},{"internalType":"address","name":"swapFeeManager","type":"address"},{"internalType":"address","name":"poolCreator","type":"address"}],"internalType":"struct PoolRoleAccounts","name":"roleAccounts","type":"tuple"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"},{"internalType":"address","name":"poolHooksContract","type":"address"},{"internalType":"bool","name":"enableDonation","type":"bool"},{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"create","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disable","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":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultLiquidityManagement","outputs":[{"components":[{"internalType":"bool","name":"disableUnbalancedLiquidity","type":"bool"},{"internalType":"bool","name":"enableAddLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableRemoveLiquidityCustom","type":"bool"},{"internalType":"bool","name":"enableDonation","type":"bool"}],"internalType":"struct LiquidityManagement","name":"liquidityManagement","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getDefaultPoolHooksContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"constructorArgs","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"getDeploymentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNewPoolPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOriginalPauseWindowEndTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseWindowDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPools","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"getPoolsInRange","outputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_string_fromMemory":{"entryPoint":1101,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":1064,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_bytes1":{"entryPoint":1238,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1182,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"610100604052346104245761620d8038038061001a81610428565b9283398101608082820312610424578151916001600160a01b038316830361042457602092838201519363ffffffff808616958681036104245760408501516001600160401b039590868111610424578761007691830161044d565b9660608201518781116104245761008d920161044d565b966146c59461009d858701610428565b95808752611b48868801393060805260a052420190814211610410578282116104015760c0521660e05281519383851161035f576003946100de865461049e565b93601f948581116103d5575b5083908583116001146103735761011892915f9183610210575b50508160011b915f199060031b1c19161790565b85555b805184811161035f57600491610131835461049e565b858111610329575b5083908583116001146102c75761016692915f91836102105750508160011b915f199060031b1c19161790565b81555b85519384116102b45750600593610180855461049e565b838111610280575b508192841160011461021b57505081906101b793945f926102105750508160011b915f199060031b1c19161790565b90555b60405161165b90816104ed823960805181611495015260a051818181610478015281816105c8015281816106ed01528181610acd0152611523015260c05181610b5d015260e051818181610a0001526115930152f35b015190505f80610104565b9091601f19841695855f52835f20935f905b88821061026857505084600196971061024f575b50505050811b0190556101ba565b01519060f8845f19921b161c191690555f808080610241565b8060018597829496860151815501960193019061022d565b6102a590865f52835f2085808801891c8201928689106102ab575b01881c01906104d6565b5f610188565b9250819261029b565b604190634e487b7160e01b5f525260245ffd5b90601f19831691845f52855f20925f5b878282106103135750509084600195949392106102fc575b505050811b018155610169565b01515f19838a1b60f8161c191690555f80806102ef565b60018596829396860151815501950193016102d7565b61035090845f52855f208780860160051c820192888710610356575b0160051c01906104d6565b5f610139565b92508192610345565b634e487b7160e01b5f52604160045260245ffd5b90601f19831691885f52855f20925f5b878282106103bf5750509084600195949392106103a8575b505050811b01855561011b565b01515f19838a1b60f8161c191690555f808061039b565b6001859682939686015181550195019301610383565b6103fb90885f52855f208780860160051c820192888710610356570160051c01906104d6565b5f6100ea565b6368755a1160e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761035f57604052565b81601f82011215610424578051906001600160401b03821161035f5761047c601f8301601f1916602001610428565b928284526020838301011161042457815f9260208093018386015e8301015290565b90600182811c921680156104cc575b60208310146104b857565b634e487b7160e01b5f52602260045260245ffd5b91607f16916104ad565b8181106104e1575050565b5f81556001016104d656fe60806040526004361015610011575f80fd5b5f358060e01c908163193ad50f1461117a5781632f2770db1461102d575080633f819b6f14610f8457806344f6fec714610eca57806353a72f7e14610d6c57806354fd4d5014610c8e5780636634b75314610c42578063673a2a1f14610ba35780636c57f5a914610b8157806378da80cb14610b41578063851c1bb314610af15780638d928af814610aa15780638eec5d7014610a84578063aaabadc514610a4c578063db035ebc14610a24578063e9d56e19146109e4578063ec888061146109ca5763fed4cdda146100e2575f80fd5b34610823576101806003193601126108235760043567ffffffffffffffff8111610823576101149036906004016112c4565b60243567ffffffffffffffff8111610823576101349036906004016112c4565b906044359167ffffffffffffffff8311610823573660238401121561082357826004013590610162826112e2565b93610170604051958661120a565b82855260208501906024829460071b8201019036821161082357602401915b818310610946575050506064359067ffffffffffffffff82116108235736602383011215610823578160040135916101c6836112e2565b926101d4604051948561120a565b8084526024602085019160051b8301019136831161082357602401905b8282106109365750505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261082357604051936060850185811067ffffffffffffffff82111761073f5760405260843573ffffffffffffffffffffffffffffffffffffffff8116810361082357855260a43573ffffffffffffffffffffffffffffffffffffffff8116810361082357602086015260c4359273ffffffffffffffffffffffffffffffffffffffff841693848103610823576040870152610104359273ffffffffffffffffffffffffffffffffffffffff84168403610823576101243594851515860361082357610144359081151582036108235761090e576102fc6112fa565b951515606087015215158552875190604051938460a081011067ffffffffffffffff60a08701111761073f5760a0850160405284526020840152604083015260608201526040515f81600554916103528361131e565b80835292600181169081156108ef5750600114610890575b6103769250038261120a565b60808201526040518091604060208301526103d56103a1825160a060608601526101008501906111c9565b60208301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526111c9565b90604081015160a08401526060810151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08482030160c0850152602080845192838152019301905f5b818110610877575050509060806104619201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08483030160e08501526111c9565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604083015203906104b1601f199283810183528261120a565b6104e160405192836020808201946104c88661136f565b90805192839101825e015f81520390810184528361120a565b6104ed610164356115fc565b9082511561084f5773ffffffffffffffffffffffffffffffffffffffff9251905ff5169384156108275761051f6115c8565b845f525f60205260405f20600160ff198254161790556001546801000000000000000081101561073f578060016105599201600155611408565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff88831b921b191617905560405195857f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc5f80a26105b0611591565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561082357908794959392917feeec802f0000000000000000000000000000000000000000000000000000000086526101a48601908860048801526101a06024880152518091526101c4860194905f5b818110610777575050509473ffffffffffffffffffffffffffffffffffffffff8594938160406106d39563ffffffff5f9b60e43560448c01521660648a01528a60848a01528281511660a48a01528260208201511660c48a015201511660e4870152166101048501526101248401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561076c57610725575b602090604051908152f35b67ffffffffffffffff821161073f5760209160405261071a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b91809897509590929394955173ffffffffffffffffffffffffffffffffffffffff815116825260208101519060028210156107f65782606060809260209485600197015273ffffffffffffffffffffffffffffffffffffffff604082015116604084015201511515606082015201980191019189969795949392610639565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b825185528695506020948501949092019160010161041f565b509060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b8183106108d35750509060206103769282010161036a565b60209193508060019154838588010152019101909183926108bb565b6020925061037694915060ff191682840152151560051b82010161036a565b7f61ee1764000000000000000000000000000000000000000000000000000000005f5260045ffd5b81358152602091820191016101f1565b608083360312610823576040519061095d826111ee565b73ffffffffffffffffffffffffffffffffffffffff843581811681036108235783526020850135600281101561082357602084015260408501359081168103610823576040830152606090818501359283151584036108235760809360209382015281520192019161018f565b34610823575f6003193601126108235760206040515f8152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f600319360112610823576020610a3e611591565b63ffffffff60405191168152f35b34610823575f600319360112610823576020610a666114e0565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576020600154604051908152f35b34610823575f60031936011261082357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823576020600319360112610823576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361082357610b3960209161146a565b604051908152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f60031936011261082357602060ff600254166040519015158152f35b34610823575f60031936011261082357604051806001916001549283825260208092019360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b828210610c1757610c1386610c07818a038261120a565b60405191829182611273565b0390f35b845473ffffffffffffffffffffffffffffffffffffffff168752958601959383019390830190610bf0565b346108235760206003193601126108235760043573ffffffffffffffffffffffffffffffffffffffff8116809103610823575f525f602052602060ff60405f2054166040519015158152f35b34610823575f600319360112610823576040516004545f82610caf8361131e565b91828252602093600190856001821691825f14610d4c575050600114610cf1575b50610cdd9250038361120a565b610c136040519282849384528301906111c9565b84915060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b905f915b858310610d34575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610d1d565b60ff191685820152610cdd95151560051b8501019250879150610cd09050565b34610823576040600319360112610823576004356024803560019260015480821015610ea25780610d9d84846113fb565b11610e61575b50610dad826112e2565b92610dbb604051948561120a565b828452610dc7836112e2565b91601f19602093013660208701375f5b848110610dec5760405180610c138882611273565b610dfe610df982846113fb565b611408565b9054908751831015610e355760031b1c73ffffffffffffffffffffffffffffffffffffffff16600582901b87018501528601610dd7565b847f4e487b71000000000000000000000000000000000000000000000000000000005f5260326004525ffd5b908092508103908111610e75579084610da3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e23d035000000000000000000000000000000000000000000000000000000005f5260045ffd5b346108235760406003193601126108235760043567ffffffffffffffff81116108235736602382011215610823576055600b610f12602093369060248160040135910161122d565b604051610f42818680820194610f278661136f565b90805192839101825e015f815203601f19810183528261120a565b519020610f506024356115fc565b604051916040830152848201523081520160ff81532073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576040516005545f82610fa58361131e565b91828252602093600190856001821691825f14610d4c575050600114610fd25750610cdd9250038361120a565b84915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b858310611015575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610ffe565b34610823575f600319360112610823577fffffffff00000000000000000000000000000000000000000000000000000000611068911661146a565b602073ffffffffffffffffffffffffffffffffffffffff6110876114e0565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa90811561076c575f9161113f575b5015611117576110e46115c8565b600160ff1960025416176002557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d505f80a1005b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506020813d602011611172575b8161115a6020938361120a565b810103126108235751801515810361082357816110d6565b3d915061114d565b34610823575f6003193601126108235760806111946112fa565b6111c760405180926060809180511515845260208101511515602085015260408101511515604085015201511515910152565bf35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6080810190811067ffffffffffffffff82111761073f57604052565b90601f601f19910116810190811067ffffffffffffffff82111761073f57604052565b92919267ffffffffffffffff821161073f57604051916112576020601f19601f840116018461120a565b829481845281830111610823578281602093845f960137010152565b60209060206040818301928281528551809452019301915f5b82811061129a575050505090565b835173ffffffffffffffffffffffffffffffffffffffff168552938101939281019260010161128c565b9080601f83011215610823578160206112df9335910161122d565b90565b67ffffffffffffffff811161073f5760051b60200190565b60405190611307826111ee565b5f6060838281528260208201528260408201520152565b90600182811c92168015611365575b602083101461133857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161132d565b6003545f929161137e8261131e565b916001908181169081156113e8575060011461139957505050565b909192935060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f915b8483106113d5575050500190565b81816020925485870152019201916113c7565b60ff191683525050811515909102019150565b91908201809211610e7557565b60015481101561143d5760015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526060810181811067ffffffffffffffff82111761073f5760405251902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa91821561076c575f9261155857505090565b9091506020813d602011611589575b816115746020938361120a565b81010312610823575190811681036108235790565b3d9150611567565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81164210156115c35790565b505f90565b60ff600254166115d457565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b604051602081019133835246604083015260608201526060815261161f816111ee565b5190209056fea2646970667358221220f40127d232f8d908273c324b8db4ec8d0aa7dbff87a7e5627774e299dc68f47664736f6c634300081a00336102c08060405234610907576146c5803803809161001d828561091b565b833981016040828203126109075781516001600160401b0381116109075782019160a083830312610907576040519160a083016001600160401b038111848210176107105760405283516001600160401b038111610907578161008191860161093e565b835260208401516001600160401b03811161090757816100a291860161093e565b602084019081526040808601519085015260608501519094906001600160401b03811161090757810182601f82011215610907578051906001600160401b038211610710578160051b604051926100fc602083018561091b565b83526020808401918301019185831161090757602001905b82821061090b5750505060608501526080810151916001600160401b03831161090757602092610144920161093e565b608084018190529101516001600160a01b03811681036109075782519351604080519195919081016001600160401b03811182821017610710576040526001815260208101603160f81b815261019983610993565b610120526101a682610b16565b6101405282516020840120918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b03821117610710576040525190206080523060c0526101608290528051906001600160401b0382116107105760035490600182811c921680156108fd575b60208310146106f25781601f849311610892575b50602090601f831160011461080a575f926107ff575b50508160011b915f199060031b1c1916176003555b83516001600160401b03811161071057600454600181811c911680156107f5575b60208210146106f257601f8111610796575b506020601f821160011461072f5781929394955f92610724575b50508160011b915f199060031b1c1916176004555b610180528051906001600160401b0382116107105760055490600182811c92168015610706575b60208310146106f25781601f8493116106a4575b50602090601f831160011461061c575f92610611575b50508160011b915f199060031b1c1916176005555b60408101516101a09080825260608301515103610602575f905f5b81519260ff821693841015610494576060850151805185101561048057602090611fe08460051b1601015190662386f26fc100008210610471578181018091116103d95793806103ed57506101c0525b60ff8091169081146103d957600101610375565b634e487b7160e01b5f52601160045260245ffd5b600181036103ff57506101e0526103c5565b600281036104115750610200526103c5565b600381036104235750610220526103c5565b600481036104355750610240526103c5565b600581036104475750610260526103c5565b600681036104595750610280526103c5565b600714610467575b506103c5565b6102a0525f610461565b63bd39358360e01b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b670de0b6b3a76400009150036105f357604051613a789182610c4d833960805182612806015260a051826128d2015260c051826127d7015260e051826128550152610100518261287b0152610120518261112801526101405182611152015261016051828181610260015281816104880152818161065f01528181610d7e015281816110ed015281816114ae01528181611733015281816119d801528181612118015261276c01526101805182818161059d0152818161094a01528181610a1201528181610c7a0152611277015251816128fa01526101c0518181816125d2015261295101526101e0518181816125ff015261297e01526102005181818161262c01526129b701526102205181818161265901526129f00152610240518181816126860152612a2a0152610260518181816126b30152612a630152610280518181816126e00152612a9f01526102a05181818161270b0152612ad90152f35b631ce788a760e11b5f5260045ffd5b63aaad13f760e01b5f5260045ffd5b015190505f80610345565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091905b601f1984168510610689576001945083601f19811610610671575b505050811b0160055561035a565b01515f1960f88460031b161c191690555f8080610663565b81810151835560209485019460019093019290910190610648565b90915060055f5260205f20601f840160051c8101602085106106eb575b90849392915b601f830160051c820181106106dd57505061032f565b5f81558594506001016106c7565b50806106c1565b634e487b7160e01b5f52602260045260245ffd5b91607f169161031b565b634e487b7160e01b5f52604160045260245ffd5b015190505f806102df565b60045f5260205f20905f5b601f198416811061077e575060019394959683601f19811610610766575b505050811b016004556102f4565b01515f1960f88460031b161c191690555f8080610758565b9091602060018192858b01518155019301910161073a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101602084106107ee575b601f830160051c820181106107e35750506102c5565b5f81556001016107cd565b50806107cd565b90607f16906102b3565b015190505f8061027d565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510610877576001945083601f1981161061085f575b505050811b01600355610292565b01515f1960f88460031b161c191690555f8080610851565b81810151835560209485019460019093019290910190610836565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101602085106108f6575b90849392915b601f830160051c820181106108e8575050610267565b5f81558594506001016108d2565b50806108cc565b91607f1691610253565b5f80fd5b8151815260209182019101610114565b601f909101601f19168101906001600160401b0382119082101761071057604052565b81601f82011215610907578051906001600160401b0382116107105760405192610972601f8401601f19166020018561091b565b8284526020838301011161090757815f9260208093018386015e8301015290565b805160209081811015610a095750601f8251116109cb57808251920151908083106109bd57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610710575f54926001938481811c91168015610b0c575b838210146106f257601f8111610ad9575b5081601f8411600114610a7757509282939183925f94610a6c575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610a57565b919083601f1981165f8052845f20945f905b88838310610abf5750505010610aa7575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610a9a565b858701518855909601959485019487935090810190610a89565b5f805284601f845f20920160051c820191601f860160051c015b828110610b01575050610a3c565b5f8155018590610af3565b90607f1690610a2b565b805160209081811015610b405750601f8251116109cb57808251920151908083106109bd57501790565b9192916001600160401b0381116107105760019182548381811c91168015610c42575b828210146106f257601f8111610c0f575b5080601f8311600114610baf5750819293945f92610ba4575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610b8d565b90601f19831695845f52825f20925f905b888210610bf85750508385969710610be0575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f8080610bd3565b808785968294968601518155019501930190610bc0565b835f5283601f835f20920160051c820191601f850160051c015b828110610c37575050610b74565b5f8155018490610c29565b90607f1690610b6356fe6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611d905750826306fdde0314611ce1578263095ea7b314611c6357826316a0b3e014611a2a57826318160ddd14611a0e57826323b872dd1461196657826323de665114611934578263273c1adf1461191257826330adf81f146118d8578263313ce567146118bd5782633644e515146118a157826353b79bd7146116e557826354fd4d50146115f55782635687f2b814611596578263627cdcb91461156d578263654cf15d1461154b578263679aefce1461151457826370a082311461144057826372c981861461131f5782637ecebe00146112db57826381fa807c1461121a57826384b0196e146111115782638d928af8146110c157826395d89b4114610fbb578263984de9e814610df9578263a9059cbb14610ce6578263aa6ca80814610c21578263abb1dc44146109b8578263b156aa0a146108f1578263b677fa56146108cf578263c0bc6f33146105f6578263ce20ece7146105d6578263d335b0cf14610543578263d505accf146102d857508163dd62ed3e146101e5575063f89f27ed146101ae575f80fd5b346101e1575f6003193601126101e1576101dd906101ca6128f8565b9051918291602083526020830190611fa7565b0390f35b5f80fd5b82346101e157806003193601126101e1576020610200611e1c565b606461020a611e3f565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a575b6020925051908152f35b90506020823d6020116102c7575b816102b560209383611eca565b810103126101e1576020915190610290565b3d91506102a8565b513d5f823e3d90fd5b8390346101e1576003193601126101e1576102f1611e1c565b906102fa611e3f565b604435926084359060643560ff831683036101e157804211610519576103478273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b9061041361040a875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103be81611e92565b5190206103c96127c0565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612f35565b90929192612fc4565b168181036104ec5750505f84959661048460209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102cf57506104b857005b6020813d6020116104e4575b816104d160209383611eca565b810103126101e1576104e290612079565b005b3d91506104c4565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101e1575f6003193601126101e1578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102cf575f9161029a576020925051908152f35b83346101e1575f6003193601126101e157602090516509184e72a0008152f35b9150346101e1575f6003193601126101e157825161061381611e92565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f916108ad575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561087f575f91610889575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa90811561087f575f91610852575b5089526107516120cf565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561084857928b9c926107e0926107f396955f9e9c9d9e9261081b575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190611fa7565b915190601f198b840301908b0152611fa7565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b61083a9250803d10610841575b6108328183611eca565b810190612482565b5f806107aa565b503d610828565b8c513d5f823e3d90fd5b90508a81813d8311610878575b6108698183611eca565b810103126101e157515f610746565b503d61085f565b8d513d5f823e3d90fd5b6108a591503d805f833e61089d8183611eca565b81019061228d565b90505f610703565b6108c991503d805f833e6108c18183611eca565b8101906125a4565b5f6106c0565b83346101e1575f6003193601126101e157602090516709b6e64a8ec600008152f35b8382346101e1575f6003193601126101e1578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610992575b5051918291602083526020830190611fa7565b6109a79192503d805f833e6108c18183611eca565b908361097f565b82513d5f823e3d90fd5b8382346101e1575f6003193601126101e15773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f935f925f925f95610aed575b5090610a6595949392918151968796608088526080880190611fda565b6020878203818901528080875193848152019601925f905b838210610aa957898803868b015289806101dd8b610a9b8c8c611fa7565b908382036060850152611fa7565b9184989950606086979860019395978397518051610ac681612023565b83528685820151168584015201511515898201520198019201899897969594929391610a7d565b955093509150503d805f853e610b038185611eca565b8301926080818503126101e15780519167ffffffffffffffff928381116101e15785610b30918401612185565b91602095868201518581116101e157820181601f820112156101e157805190610b5882611eed565b98610b6586519a8b611eca565b828a52808a01816060809502840101928584116101e1578201905b838210610bc5575050505050828201518581116101e15781610ba391840161222c565b9460608301519081116101e157610bba920161222c565b919492919386610a48565b84828703126101e157875190610bda82611e62565b825160028110156101e157825283830151908c821682036101e1578285928389950152610c088b8601612079565b8b820152815201910190610b80565b83513d5f823e3d90fd5b8382346101e1575f6003193601126101e1578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109ae57916101dd925f92610cc2575b5051918291602083526020830190611fda565b610cdf9192503d805f833e610cd78183611eca565b810190612203565b9083610caf565b5082346101e157806003193601126101e1576020610d6492610d06611e1c565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5575b6020905160018152f35b6020823d602011610de7575b81610dce60209383611eca565b810103126101e157610de1602092612079565b50610dab565b3d9150610dc1565b50513d5f823e3d90fd5b5082346101e157806003193601126101e157813567ffffffffffffffff81116101e157610e299036908401611f05565b60243560028110156101e157610e3e81612023565b610fb457825b610e4c6128f8565b9080600314610f5f5780600414610ed85780600114610e9557600214610e7f57605184634e487b7160e01b5f525260245ffd5b6020935090610e8d9161306f565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610ec55750602092610ebf91612b84565b90610e8f565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357610f1b600191610f15610f0387876120bb565b51610f0e888b6120bb565b5190612ba2565b90612c4c565b930192610ee7565b92509350508015610f38576020925090610e8f565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f2357670de0b6b3a7640000610fab600192610fa5610f9388886120bb565b51610f9e898c6120bb565b5190612e7d565b90612b71565b04930192610f6e565b6003610e44565b8382346101e1575f6003193601126101e157815191825f8354610fdd81612041565b90818452602095600191876001821691825f1461107c575050600114611020575b5050506101dd9291611011910385611eca565b51928284938452830190611df7565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061106457505050820101816110116101dd610ffe565b8054848a01860152889550879490930192810161104b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061101191506101dd9050610ffe565b83346101e1575f6003193601126101e1576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101e1575f6003193601126101e15761114c7f0000000000000000000000000000000000000000000000000000000000000000612c8d565b926111767f0000000000000000000000000000000000000000000000000000000000000000612dbf565b815192602084019084821067ffffffffffffffff8311176112075750916111e7916101dd949382525f84526111da82519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611df7565b9186830390870152611df7565b904660608501523060808501525f60a085015283820360c0850152611fa7565b604190634e487b7160e01b5f525260245ffd5b8382346101e1575f6003193601126101e1578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c17575f926112be575b505060608282015191015182519182526020820152f35b6112d49250803d10610841576108328183611eca565b82806112a7565b83346101e15760206003193601126101e15760209073ffffffffffffffffffffffffffffffffffffffff61130d611e1c565b165f5260028252805f20549051908152f35b8382346101e15760209260031984813601126101e15782359167ffffffffffffffff918284116101e15783360301126101e15783519161135e83611e92565b8084013560028110156101e157835260248101358684015260448101358281116101e15761139190853691840101611f05565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101e15760a084015260c4810135908282116101e1570192366023850112156101e15780840135918211611207575083519061140c86601f19601f8401160183611eca565b80825236602482860101116101e15785815f926024610e8d9701838601378301015260c082015261143b612755565b6122d1565b8382346101e157602091826003193601126101e1578261145e611e1c565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610def575f926114e5575b5051908152f35b9091508281813d831161150d575b6114fd8183611eca565b810103126101e1575190836114de565b503d6114f3565b50346101e1575f6003193601126101e1577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101e1575f6003193601126101e1576020905167016345785d8a00008152f35b346101e1575f6003193601126101e157335f908152600260205260409020805460018101909155005b83346101e15760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115c836611f65565b9391946115d3612755565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101e1575f6003193601126101e15780516005549091825f61161884612041565b808352602094600190866001821691825f146116a557505060011461164a575b50506101dd9291611011910385611eca565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b82841061168d5750505082010181611011611638565b8054848a018601528895508794909301928101611677565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b850190920192508391506110119050611638565b5082346101e1575f6003193601126101e15780519061170382611e62565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa90811561189757905f9291839161187d575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611873575f9161185a575b5081959295526117e96128f8565b84528251948086526080860192519260608288015283518091528160a088019401915f5b8281106118445788806101dd8a8a6118338b8b51601f1993848884030190880152611fa7565b915190848303016060850152611fa7565b83518a168652948101949281019260010161180d565b61186e91503d805f833e61089d8183611eca565b6117db565b84513d5f823e3d90fd5b61189191503d8085833e610cd78183611eca565b8a611798565b86513d5f823e3d90fd5b83346101e1575f6003193601126101e157602090610e8d6127c0565b83346101e1575f6003193601126101e1576020905160128152f35b83346101e1575f6003193601126101e157602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101e1575f6003193601126101e157602090516729a2241af62c00008152f35b83346101e15760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115c836611f65565b5082346101e15760205f608461197b36611f65565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610def57610db5576020905160018152f35b83346101e1575f6003193601126101e157602090610e8d6120cf565b8382346101e15760606003193601126101e157803567ffffffffffffffff81116101e157611a5b9036908301611f05565b9160243592611a77611a7085604435936120bb565b51946125ca565b60019081831115611c5d5760025b80600314611be75780600414611b4e5780600114611b0c57600214611ab757605185634e487b7160e01b5f525260245ffd5b909192938115611ae65750610e8d9260209592610f15926ec097ce7bc90715b34b9f0fffffffff040190612ba2565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611b3b575092610f15610e8d926020956ec097ce7bc90715b34b9f10000000000490612ba2565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611ba7575b5050508115611b81575092610f15610e8d9260209590612ba2565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611be1579082611bd98193610f15611bcf89866120bb565b51610f0e8a612086565b950192611b61565b93611b66565b509192939080670de0b6b3a7640000935f925b611c19575050508115611b81575092610f15610e8d9260209590612ba2565b909193670de0b6b3a764000051851015611be1579082670de0b6b3a7640000611c548294610fa5611c4a8a876120bb565b51610f9e8b612086565b04950192611bfa565b81611a85565b5082346101e157806003193601126101e1576020610d6492611c83611e1c565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101e1575f6003193601126101e15780516003549091825f611d0484612041565b808352602094600190866001821691825f146116a5575050600114611d355750506101dd9291611011910385611eca565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611d785750505082010181611011611638565b8054848a018601528895508794909301928101611d62565b82346101e15760206003193601126101e15735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101e1577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101e157565b6060810190811067ffffffffffffffff821117611e7e57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff821117611e7e57604052565b6040810190811067ffffffffffffffff821117611e7e57604052565b90601f601f19910116810190811067ffffffffffffffff821117611e7e57604052565b67ffffffffffffffff8111611e7e5760051b60200190565b9080601f830112156101e1576020908235611f1f81611eed565b93611f2d6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b828210611f56575050505090565b81358152908301908301611f48565b60031960609101126101e15773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101e1579160243590811681036101e1579060443590565b9081518082526020808093019301915f5b828110611fc6575050505090565b835185529381019392810192600101611fb8565b9081518082526020808093019301915f5b828110611ff9575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101611feb565b6002111561202d57565b634e487b7160e01b5f52602160045260245ffd5b90600182811c9216801561206f575b602083101461205b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612050565b519081151582036101e157565b670de0b6b3a7640000518110156120a75760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156120a75760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa90811561217a575f9161214b575090565b90506020813d602011612172575b8161216660209383611eca565b810103126101e1575190565b3d9150612159565b6040513d5f823e3d90fd5b9080601f830112156101e1578151906020916121a081611eed565b936121ae6040519586611eca565b81855260208086019260051b8201019283116101e157602001905b8282106121d7575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101e15781529083019083016121c9565b906020828203126101e157815167ffffffffffffffff81116101e1576122299201612185565b90565b9080601f830112156101e15781519060209161224781611eed565b936122556040519586611eca565b81855260208086019260051b8201019283116101e157602001905b82821061227e575050505090565b81518152908301908301612270565b9190916040818403126101e15780519267ffffffffffffffff938481116101e157816122ba91840161222c565b9360208301519081116101e157612229920161222c565b604081019081516122e860608301918251906120bb565b519251916122fc60808201938451906120bb565b5191815161230981612023565b61231281612023565b6123d15761232c612325602092516125ca565b94516125ca565b910151670de0b6b3a7640000948561234382612b3d565b0482116123a95761235761235d9282612b30565b9061306f565b848402938085048614901517156123955761237e6123849261239195612b84565b90612ba2565b8381810391100290612b71565b0490565b634e487b7160e01b5f52601160045260245ffd5b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6123eb6123e460209295939495516125ca565b92516125ca565b920151670de0b6b3a764000061240085612b3d565b04811161245a578303908382116123955761242161237e926124279561306f565b9261306f565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123955761222991612c4c565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101e15760405192610140928385019267ffffffffffffffff9086851082861117611e7e576080136101e1576101c0860190811184821017611e7e576040526124d481612079565b83526124e260208201612079565b9261016093848701526124f760408301612079565b92610180938488015261250c60608401612079565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101e15760808601526101008082015163ffffffff811681036101e15761259d946125939160a08901526125876101209761257b898701612079565b60c08b01528501612079565b60e08901528301612079565b9086015201612079565b9082015290565b906020828203126101e157815167ffffffffffffffff81116101e157612229920161222c565b806125f457507f000000000000000000000000000000000000000000000000000000000000000090565b6001810361262157507f000000000000000000000000000000000000000000000000000000000000000090565b6002810361264e57507f000000000000000000000000000000000000000000000000000000000000000090565b6003810361267b57507f000000000000000000000000000000000000000000000000000000000000000090565b600481036126a857507f000000000000000000000000000000000000000000000000000000000000000090565b600581036126d557507f000000000000000000000000000000000000000000000000000000000000000090565b6006810361270257507f000000000000000000000000000000000000000000000000000000000000000090565b60070361272d577f000000000000000000000000000000000000000000000000000000000000000090565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361279457565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806128cf575b15612828577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e7e5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146127ff565b7f000000000000000000000000000000000000000000000000000000000000000061292281611eed565b906129306040519283611eca565b80825261293c81611eed565b601f196020840191013682378251156120a7577f000000000000000000000000000000000000000000000000000000000000000090528151600110156120a7577f000000000000000000000000000000000000000000000000000000000000000060408301526002811115612b2c578151600210156120a7577f000000000000000000000000000000000000000000000000000000000000000060608301526003811115612b2c578151600310156120a7577f0000000000000000000000000000000000000000000000000000000000000000608083015260049081811115612b27578251821015612b14577f000000000000000000000000000000000000000000000000000000000000000060a08401526005811115612b2757825160051015612b14577f000000000000000000000000000000000000000000000000000000000000000060c08401526006811115612b2757825160061015612b14576007907f000000000000000000000000000000000000000000000000000000000000000060e085015211612acc575090565b815160071015612b0157507f000000000000000000000000000000000000000000000000000000000000000061010082015290565b603290634e487b7160e01b5f525260245ffd5b603282634e487b7160e01b5f525260245ffd5b505090565b5090565b9190820180921161239557565b90670429d069189e00009182810292818404149015171561239557565b906127109182810292818404149015171561239557565b8181029291811591840414171561239557565b8115612b8e570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612bb957505090565b671bc16d674ec800008103612bd45750508061222991612c4c565b673782dace9d9000008103612bf8575050612bf28161222992612c4c565b80612c4c565b612c02919261310b565b906001612c0e83612b5a565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116123955761222991612b30565b90612c5691612b71565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b60ff8114612ce15760ff811690601f8211612cb95760405191612caf83611eae565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612cf383612041565b80835292602090600190818116908115612d7c5750600114612d1e575b505061222992500382611eca565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612d6457506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612d49565b9050602093506122299592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612d10565b60ff8114612de15760ff811690601f8211612cb95760405191612caf83611eae565b506040515f81600191600154612df681612041565b8084529360209160018116908115612d7c5750600114612e1e57505061222992500382611eca565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612e6557506122299450505081016020015f80612d10565b85548785018301529485019486945092810192612e4a565b670de0b6b3a764000091808303612e945750905090565b8290671bc16d674ec800008103612eb15750508061239191612b71565b673782dace9d9000008103612ed55750612ece8261239193612b71565b0480612b71565b9050612ee09161310b565b612ee981612b5a565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93848301040190151502906001820180831161239557811015612f30575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612fb9579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561217a575f5173ffffffffffffffffffffffffffffffffffffffff811615612faf57905f905f90565b505f906001905f90565b5050505f9160039190565b600481101561202d5780612fd6575050565b60018103613006577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361303a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146130445750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9080156130bf57670de0b6b3a764000091828102928184041490151715612395576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612b8e576ec097ce7bc90715b34b9f10000000000590565b8115612b8e570590565b908015613a34578115613a2e578160ff1c613a0657770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156139de5781670c7d713b49da000012806139cd575b1561366a57670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906131a4908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302613101565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580613657575b1561362f5781908212158061361c575b156135f4575f915f81126135e5575b506064906806f05b59d3b20000008112613582577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215613549575b6856bc75e2d63100000081121561350f575b682b5e3af16b188000008112156134d7575b6815af1d78b58c40000081121561349f575b680ad78ebc5ac6200000811215613468575b82811215613431575b6802b5e3af16b18800008112156133fa575b68015af1d78b58c400008112156133c3575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f1461222957612229906130e7565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590613344565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590613332565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613320565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613317565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613305565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906132f3565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906132e1565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016132cf565b6803782dace9d900000081126135d2577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926132ba565b68056bc75e2d63100000826001926132ba565b600192505f039050606461325e565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561324f565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c8000082131561323f565b81670de0b6b3a7640000925f918481126139b7575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561398c575b73011798004d755d3c8bc8e03204cf44619e00000082121561396b575b820290808302906e01855144814a7ff805980ff00840009081831215613948575b50506b02df0ab5a80a22c61ab5a70080821215613928575b50693f1fce3da636ea5cf85080821215613908575b50690127fa27722cc06cc5e2808212156138e8575b5068280e60114edb805d03808212156138c8575b50680ebc5fb41746121110808212156138b1575b506808f00f760a4b2db55d80821215613891575b506806f5f177578893793780821215613871575b506806248f33704b28660380821215613852575b506805c548670b9510e7ac80821215613833575b506137e068056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102613101565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f1461382e575f035b02613213565b613828565b68056bc75e2d631000006756bc75e2d63100009202059101905f6137a4565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613790565b68056bc75e2d6310000068015af1d78b58c400009202059101905f61377c565b68056bc75e2d631000006802b5e3af16b18800009202059101905f613768565b68056bc75e2d63100000809202059101905f613754565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f613740565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61372c565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613717565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613702565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f806136ea565b906b1425982cf597cd205cef73806803782dace9d9000000910591016136c9565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b20000006136ac565b90506139c391506130e7565b600190606461367f565b50670f43fc2c04ee00008212613151565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212204b1676dd274814fed4fff49a83b5404b448d288d13e3f2848873c7c36baed2cf64736f6c634300081a0033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x424 JUMPI PUSH2 0x620D DUP1 CODESIZE SUB DUP1 PUSH2 0x1A DUP2 PUSH2 0x428 JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD PUSH1 0x80 DUP3 DUP3 SUB SLT PUSH2 0x424 JUMPI DUP2 MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP4 SUB PUSH2 0x424 JUMPI PUSH1 0x20 SWAP3 DUP4 DUP3 ADD MLOAD SWAP4 PUSH4 0xFFFFFFFF DUP1 DUP7 AND SWAP6 DUP7 DUP2 SUB PUSH2 0x424 JUMPI PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP6 SWAP1 DUP7 DUP2 GT PUSH2 0x424 JUMPI DUP8 PUSH2 0x76 SWAP2 DUP4 ADD PUSH2 0x44D JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP3 ADD MLOAD DUP8 DUP2 GT PUSH2 0x424 JUMPI PUSH2 0x8D SWAP3 ADD PUSH2 0x44D JUMP JUMPDEST SWAP7 PUSH2 0x46C5 SWAP5 PUSH2 0x9D DUP6 DUP8 ADD PUSH2 0x428 JUMP JUMPDEST SWAP6 DUP1 DUP8 MSTORE PUSH2 0x1B48 DUP7 DUP9 ADD CODECOPY ADDRESS PUSH1 0x80 MSTORE PUSH1 0xA0 MSTORE TIMESTAMP ADD SWAP1 DUP2 TIMESTAMP GT PUSH2 0x410 JUMPI DUP3 DUP3 GT PUSH2 0x401 JUMPI PUSH1 0xC0 MSTORE AND PUSH1 0xE0 MSTORE DUP2 MLOAD SWAP4 DUP4 DUP6 GT PUSH2 0x35F JUMPI PUSH1 0x3 SWAP5 PUSH2 0xDE DUP7 SLOAD PUSH2 0x49E JUMP JUMPDEST SWAP4 PUSH1 0x1F SWAP5 DUP6 DUP2 GT PUSH2 0x3D5 JUMPI JUMPDEST POP DUP4 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x373 JUMPI PUSH2 0x118 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x210 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST DUP6 SSTORE JUMPDEST DUP1 MLOAD DUP5 DUP2 GT PUSH2 0x35F JUMPI PUSH1 0x4 SWAP2 PUSH2 0x131 DUP4 SLOAD PUSH2 0x49E JUMP JUMPDEST DUP6 DUP2 GT PUSH2 0x329 JUMPI JUMPDEST POP DUP4 SWAP1 DUP6 DUP4 GT PUSH1 0x1 EQ PUSH2 0x2C7 JUMPI PUSH2 0x166 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x210 JUMPI POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST DUP2 SSTORE JUMPDEST DUP6 MLOAD SWAP4 DUP5 GT PUSH2 0x2B4 JUMPI POP PUSH1 0x5 SWAP4 PUSH2 0x180 DUP6 SLOAD PUSH2 0x49E JUMP JUMPDEST DUP4 DUP2 GT PUSH2 0x280 JUMPI JUMPDEST POP DUP2 SWAP3 DUP5 GT PUSH1 0x1 EQ PUSH2 0x21B JUMPI POP POP DUP2 SWAP1 PUSH2 0x1B7 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x210 JUMPI POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 JUMP JUMPDEST SWAP1 SSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x165B SWAP1 DUP2 PUSH2 0x4ED DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x1495 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x478 ADD MSTORE DUP2 DUP2 PUSH2 0x5C8 ADD MSTORE DUP2 DUP2 PUSH2 0x6ED ADD MSTORE DUP2 DUP2 PUSH2 0xACD ADD MSTORE PUSH2 0x1523 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0xB5D ADD MSTORE PUSH1 0xE0 MLOAD DUP2 DUP2 DUP2 PUSH2 0xA00 ADD MSTORE PUSH2 0x1593 ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x104 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x1F NOT DUP5 AND SWAP6 DUP6 PUSH0 MSTORE DUP4 PUSH0 KECCAK256 SWAP4 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0x268 JUMPI POP POP DUP5 PUSH1 0x1 SWAP7 SWAP8 LT PUSH2 0x24F JUMPI JUMPDEST POP POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x1BA JUMP JUMPDEST ADD MLOAD SWAP1 PUSH1 0xF8 DUP5 PUSH0 NOT SWAP3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 DUP1 PUSH2 0x241 JUMP JUMPDEST DUP1 PUSH1 0x1 DUP6 SWAP8 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP7 ADD SWAP4 ADD SWAP1 PUSH2 0x22D JUMP JUMPDEST PUSH2 0x2A5 SWAP1 DUP7 PUSH0 MSTORE DUP4 PUSH0 KECCAK256 DUP6 DUP1 DUP9 ADD DUP10 SHR DUP3 ADD SWAP3 DUP7 DUP10 LT PUSH2 0x2AB JUMPI JUMPDEST ADD DUP9 SHR ADD SWAP1 PUSH2 0x4D6 JUMP JUMPDEST PUSH0 PUSH2 0x188 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x29B JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP2 DUP5 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP8 DUP3 DUP3 LT PUSH2 0x313 JUMPI POP POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x2FC JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP2 SSTORE PUSH2 0x169 JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP11 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP4 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x2D7 JUMP JUMPDEST PUSH2 0x350 SWAP1 DUP5 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 DUP8 DUP1 DUP7 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP9 DUP8 LT PUSH2 0x356 JUMPI JUMPDEST ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x4D6 JUMP JUMPDEST PUSH0 PUSH2 0x139 JUMP JUMPDEST SWAP3 POP DUP2 SWAP3 PUSH2 0x345 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP2 DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP8 DUP3 DUP3 LT PUSH2 0x3BF JUMPI POP POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x3A8 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD DUP6 SSTORE PUSH2 0x11B JUMP JUMPDEST ADD MLOAD PUSH0 NOT DUP4 DUP11 SHL PUSH1 0xF8 AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x39B JUMP JUMPDEST PUSH1 0x1 DUP6 SWAP7 DUP3 SWAP4 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x383 JUMP JUMPDEST PUSH2 0x3FB SWAP1 DUP9 PUSH0 MSTORE DUP6 PUSH0 KECCAK256 DUP8 DUP1 DUP7 ADD PUSH1 0x5 SHR DUP3 ADD SWAP3 DUP9 DUP8 LT PUSH2 0x356 JUMPI ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x4D6 JUMP JUMPDEST PUSH0 PUSH2 0xEA JUMP JUMPDEST PUSH4 0x68755A11 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x35F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x424 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x35F JUMPI PUSH2 0x47C PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x428 JUMP JUMPDEST SWAP3 DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x424 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x4CC JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x4B8 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x4AD JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0x4E1 JUMPI POP POP JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4D6 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD DUP1 PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x193AD50F EQ PUSH2 0x117A JUMPI DUP2 PUSH4 0x2F2770DB EQ PUSH2 0x102D JUMPI POP DUP1 PUSH4 0x3F819B6F EQ PUSH2 0xF84 JUMPI DUP1 PUSH4 0x44F6FEC7 EQ PUSH2 0xECA JUMPI DUP1 PUSH4 0x53A72F7E EQ PUSH2 0xD6C JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xC8E JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0xC42 JUMPI DUP1 PUSH4 0x673A2A1F EQ PUSH2 0xBA3 JUMPI DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0xB81 JUMPI DUP1 PUSH4 0x78DA80CB EQ PUSH2 0xB41 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xAF1 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0x8EEC5D70 EQ PUSH2 0xA84 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xA4C JUMPI DUP1 PUSH4 0xDB035EBC EQ PUSH2 0xA24 JUMPI DUP1 PUSH4 0xE9D56E19 EQ PUSH2 0x9E4 JUMPI DUP1 PUSH4 0xEC888061 EQ PUSH2 0x9CA JUMPI PUSH4 0xFED4CDDA EQ PUSH2 0xE2 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH2 0x180 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x823 JUMPI PUSH2 0x114 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x823 JUMPI PUSH2 0x134 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x823 JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x823 JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH2 0x162 DUP3 PUSH2 0x12E2 JUMP JUMPDEST SWAP4 PUSH2 0x170 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x120A JUMP JUMPDEST DUP3 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 PUSH1 0x24 DUP3 SWAP5 PUSH1 0x7 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0x823 JUMPI PUSH1 0x24 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x946 JUMPI POP POP POP PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x823 JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x823 JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x1C6 DUP4 PUSH2 0x12E2 JUMP JUMPDEST SWAP3 PUSH2 0x1D4 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x120A JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x24 PUSH1 0x20 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x823 JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x936 JUMPI POP POP POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD SWAP4 PUSH1 0x60 DUP6 ADD DUP6 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE PUSH1 0x84 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI DUP6 MSTORE PUSH1 0xA4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 DUP5 DUP2 SUB PUSH2 0x823 JUMPI PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x104 CALLDATALOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP5 SUB PUSH2 0x823 JUMPI PUSH2 0x124 CALLDATALOAD SWAP5 DUP6 ISZERO ISZERO DUP7 SUB PUSH2 0x823 JUMPI PUSH2 0x144 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x823 JUMPI PUSH2 0x90E JUMPI PUSH2 0x2FC PUSH2 0x12FA JUMP JUMPDEST SWAP6 ISZERO ISZERO PUSH1 0x60 DUP8 ADD MSTORE ISZERO ISZERO DUP6 MSTORE DUP8 MLOAD SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH1 0xA0 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0xA0 DUP8 ADD GT OR PUSH2 0x73F JUMPI PUSH1 0xA0 DUP6 ADD PUSH1 0x40 MSTORE DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x5 SLOAD SWAP2 PUSH2 0x352 DUP4 PUSH2 0x131E JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x8EF JUMPI POP PUSH1 0x1 EQ PUSH2 0x890 JUMPI JUMPDEST PUSH2 0x376 SWAP3 POP SUB DUP3 PUSH2 0x120A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3D5 PUSH2 0x3A1 DUP3 MLOAD PUSH1 0xA0 PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP1 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP6 DUP4 SUB ADD PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x11C9 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP5 DUP3 SUB ADD PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x20 DUP1 DUP5 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP4 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x877 JUMPI POP POP POP SWAP1 PUSH1 0x80 PUSH2 0x461 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP5 DUP4 SUB ADD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x11C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x40 DUP4 ADD MSTORE SUB SWAP1 PUSH2 0x4B1 PUSH1 0x1F NOT SWAP3 DUP4 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x120A JUMP JUMPDEST PUSH2 0x4E1 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH1 0x20 DUP1 DUP3 ADD SWAP5 PUSH2 0x4C8 DUP7 PUSH2 0x136F JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB SWAP1 DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0x120A JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x164 CALLDATALOAD PUSH2 0x15FC JUMP JUMPDEST SWAP1 DUP3 MLOAD ISZERO PUSH2 0x84F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 MLOAD SWAP1 PUSH0 CREATE2 AND SWAP4 DUP5 ISZERO PUSH2 0x827 JUMPI PUSH2 0x51F PUSH2 0x15C8 JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x73F JUMPI DUP1 PUSH1 0x1 PUSH2 0x559 SWAP3 ADD PUSH1 0x1 SSTORE PUSH2 0x1408 JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP6 DUP6 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC PUSH0 DUP1 LOG2 PUSH2 0x5B0 PUSH2 0x1591 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x823 JUMPI SWAP1 DUP8 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH2 0x1A4 DUP7 ADD SWAP1 DUP9 PUSH1 0x4 DUP9 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP9 ADD MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH2 0x1C4 DUP7 ADD SWAP5 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x777 JUMPI POP POP POP SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 SWAP5 SWAP4 DUP2 PUSH1 0x40 PUSH2 0x6D3 SWAP6 PUSH4 0xFFFFFFFF PUSH0 SWAP12 PUSH1 0xE4 CALLDATALOAD PUSH1 0x44 DUP13 ADD MSTORE AND PUSH1 0x64 DUP11 ADD MSTORE DUP11 PUSH1 0x84 DUP11 ADD MSTORE DUP3 DUP2 MLOAD AND PUSH1 0xA4 DUP11 ADD MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0xC4 DUP11 ADD MSTORE ADD MLOAD AND PUSH1 0xE4 DUP8 ADD MSTORE AND PUSH2 0x104 DUP6 ADD MSTORE PUSH2 0x124 DUP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x76C JUMPI PUSH2 0x725 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x73F JUMPI PUSH1 0x20 SWAP2 PUSH1 0x40 MSTORE PUSH2 0x71A JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 DUP1 SWAP9 SWAP8 POP SWAP6 SWAP1 SWAP3 SWAP4 SWAP5 SWAP6 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x7F6 JUMPI DUP3 PUSH1 0x60 PUSH1 0x80 SWAP3 PUSH1 0x20 SWAP5 DUP6 PUSH1 0x1 SWAP8 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP2 ADD SWAP2 DUP10 SWAP7 SWAP8 SWAP6 SWAP5 SWAP4 SWAP3 PUSH2 0x639 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 MLOAD DUP6 MSTORE DUP7 SWAP6 POP PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x41F JUMP JUMPDEST POP SWAP1 PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x8D3 JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x376 SWAP3 DUP3 ADD ADD PUSH2 0x36A JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x376 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH2 0x36A JUMP JUMPDEST PUSH32 0x61EE176400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F1 JUMP JUMPDEST PUSH1 0x80 DUP4 CALLDATASIZE SUB SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x95D DUP3 PUSH2 0x11EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI DUP4 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x823 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x823 JUMPI PUSH1 0x80 SWAP4 PUSH1 0x20 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x18F JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH2 0xA3E PUSH2 0x1591 JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH2 0xA66 PUSH2 0x14E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI PUSH2 0xB39 PUSH1 0x20 SWAP2 PUSH2 0x146A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x20 DUP1 SWAP3 ADD SWAP4 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP3 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xC17 JUMPI PUSH2 0xC13 DUP7 PUSH2 0xC07 DUP2 DUP11 SUB DUP3 PUSH2 0x120A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1273 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP7 ADD SWAP6 SWAP4 DUP4 ADD SWAP4 SWAP1 DUP4 ADD SWAP1 PUSH2 0xBF0 JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0x823 JUMPI PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD PUSH1 0x4 SLOAD PUSH0 DUP3 PUSH2 0xCAF DUP4 PUSH2 0x131E JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP1 DUP6 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xD4C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xCF1 JUMPI JUMPDEST POP PUSH2 0xCDD SWAP3 POP SUB DUP4 PUSH2 0x120A JUMP JUMPDEST PUSH2 0xC13 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x11C9 JUMP JUMPDEST DUP5 SWAP2 POP PUSH1 0x4 PUSH0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 PUSH0 SWAP2 JUMPDEST DUP6 DUP4 LT PUSH2 0xD34 JUMPI POP POP PUSH2 0xCDD SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xCD0 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xD1D JUMP JUMPDEST PUSH1 0xFF NOT AND DUP6 DUP3 ADD MSTORE PUSH2 0xCDD SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0xCD0 SWAP1 POP JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x24 DUP1 CALLDATALOAD PUSH1 0x1 SWAP3 PUSH1 0x1 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0xEA2 JUMPI DUP1 PUSH2 0xD9D DUP5 DUP5 PUSH2 0x13FB JUMP JUMPDEST GT PUSH2 0xE61 JUMPI JUMPDEST POP PUSH2 0xDAD DUP3 PUSH2 0x12E2 JUMP JUMPDEST SWAP3 PUSH2 0xDBB PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x120A JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH2 0xDC7 DUP4 PUSH2 0x12E2 JUMP JUMPDEST SWAP2 PUSH1 0x1F NOT PUSH1 0x20 SWAP4 ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0xDEC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0xC13 DUP9 DUP3 PUSH2 0x1273 JUMP JUMPDEST PUSH2 0xDFE PUSH2 0xDF9 DUP3 DUP5 PUSH2 0x13FB JUMP JUMPDEST PUSH2 0x1408 JUMP JUMPDEST SWAP1 SLOAD SWAP1 DUP8 MLOAD DUP4 LT ISZERO PUSH2 0xE35 JUMPI PUSH1 0x3 SHL SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x5 DUP3 SWAP1 SHL DUP8 ADD DUP6 ADD MSTORE DUP7 ADD PUSH2 0xDD7 JUMP JUMPDEST DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP DUP2 SUB SWAP1 DUP2 GT PUSH2 0xE75 JUMPI SWAP1 DUP5 PUSH2 0xDA3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E23D03500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x823 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x823 JUMPI PUSH1 0x55 PUSH1 0xB PUSH2 0xF12 PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x122D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF42 DUP2 DUP7 DUP1 DUP3 ADD SWAP5 PUSH2 0xF27 DUP7 PUSH2 0x136F JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x120A JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0xF50 PUSH1 0x24 CALLDATALOAD PUSH2 0x15FC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD MSTORE DUP5 DUP3 ADD MSTORE ADDRESS DUP2 MSTORE ADD PUSH1 0xFF DUP2 MSTORE8 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD PUSH1 0x5 SLOAD PUSH0 DUP3 PUSH2 0xFA5 DUP4 PUSH2 0x131E JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP1 DUP6 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xD4C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xFD2 JUMPI POP PUSH2 0xCDD SWAP3 POP SUB DUP4 PUSH2 0x120A JUMP JUMPDEST DUP5 SWAP2 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 PUSH0 SWAP2 JUMPDEST DUP6 DUP4 LT PUSH2 0x1015 JUMPI POP POP PUSH2 0xCDD SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xCD0 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xFFE JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x1068 SWAP2 AND PUSH2 0x146A JUMP JUMPDEST PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1087 PUSH2 0x14E0 JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x76C JUMPI PUSH0 SWAP2 PUSH2 0x113F JUMPI JUMPDEST POP ISZERO PUSH2 0x1117 JUMPI PUSH2 0x10E4 PUSH2 0x15C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT PUSH1 0x2 SLOAD AND OR PUSH1 0x2 SSTORE PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 PUSH0 DUP1 LOG1 STOP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1172 JUMPI JUMPDEST DUP2 PUSH2 0x115A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x120A JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x823 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x823 JUMPI DUP2 PUSH2 0x10D6 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x114D JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x80 PUSH2 0x1194 PUSH2 0x12FA JUMP JUMPDEST PUSH2 0x11C7 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1257 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP5 PUSH2 0x120A JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x823 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x129A JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x128C JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x823 JUMPI DUP2 PUSH1 0x20 PUSH2 0x12DF SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x122D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x73F JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1307 DUP3 PUSH2 0x11EE JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1365 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1338 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x132D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH0 SWAP3 SWAP2 PUSH2 0x137E DUP3 PUSH2 0x131E JUMP JUMPDEST SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x13E8 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1399 JUMPI POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x13D5 JUMPI POP POP POP ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP6 DUP8 ADD MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x13C7 JUMP JUMPDEST PUSH1 0xFF NOT AND DUP4 MSTORE POP POP DUP2 ISZERO ISZERO SWAP1 SWAP2 MUL ADD SWAP2 POP JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xE75 JUMPI JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x143D JUMPI PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x76C JUMPI PUSH0 SWAP3 PUSH2 0x1558 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1589 JUMPI JUMPDEST DUP2 PUSH2 0x1574 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x120A JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x823 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1567 JUMP JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x15C3 JUMPI SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH2 0x15D4 JUMPI JUMP JUMPDEST PUSH32 0x75884CDA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 CALLER DUP4 MSTORE CHAINID PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0x161F DUP2 PUSH2 0x11EE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL ADD 0x27 0xD2 ORIGIN 0xF8 0xD9 ADDMOD 0x27 EXTCODECOPY ORIGIN 0x4B DUP14 0xB4 0xEC DUP14 EXP 0xA7 0xDB SELFDESTRUCT DUP8 0xA7 0xE5 PUSH3 0x7774E2 SWAP10 0xDC PUSH9 0xF47664736F6C634300 ADDMOD BYTE STOP CALLER PUSH2 0x2C0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x907 JUMPI PUSH2 0x46C5 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1D DUP3 DUP6 PUSH2 0x91B JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP3 DUP3 SUB SLT PUSH2 0x907 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP3 ADD SWAP2 PUSH1 0xA0 DUP4 DUP4 SUB SLT PUSH2 0x907 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0xA0 DUP4 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP5 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 PUSH2 0x81 SWAP2 DUP7 ADD PUSH2 0x93E JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 PUSH2 0xA2 SWAP2 DUP7 ADD PUSH2 0x93E JUMP JUMPDEST PUSH1 0x20 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP1 SWAP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x907 JUMPI DUP2 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x907 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI DUP2 PUSH1 0x5 SHL PUSH1 0x40 MLOAD SWAP3 PUSH2 0xFC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x91B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x907 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x90B JUMPI POP POP POP PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x907 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x144 SWAP3 ADD PUSH2 0x93E JUMP JUMPDEST PUSH1 0x80 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x907 JUMPI DUP3 MLOAD SWAP4 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP6 SWAP2 SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE PUSH2 0x199 DUP4 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x1A6 DUP3 PUSH2 0xB16 JUMP JUMPDEST PUSH2 0x140 MSTORE DUP3 MLOAD PUSH1 0x20 DUP5 ADD KECCAK256 SWAP2 DUP3 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 DUP1 PUSH2 0x100 MSTORE CHAINID PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x3 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x8FD JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x6F2 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x892 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x80A JUMPI PUSH0 SWAP3 PUSH2 0x7FF JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x3 SSTORE JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7F5 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x796 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x72F JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH0 SWAP3 PUSH2 0x724 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST PUSH2 0x180 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x5 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x706 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x6F2 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x6A4 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x61C JUMPI PUSH0 SWAP3 PUSH2 0x611 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x5 SSTORE JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0x1A0 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x60 DUP4 ADD MLOAD MLOAD SUB PUSH2 0x602 JUMPI PUSH0 SWAP1 PUSH0 JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0xFF DUP3 AND SWAP4 DUP5 LT ISZERO PUSH2 0x494 JUMPI PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD DUP6 LT ISZERO PUSH2 0x480 JUMPI PUSH1 0x20 SWAP1 PUSH2 0x1FE0 DUP5 PUSH1 0x5 SHL AND ADD ADD MLOAD SWAP1 PUSH7 0x2386F26FC10000 DUP3 LT PUSH2 0x471 JUMPI DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x3D9 JUMPI SWAP4 DUP1 PUSH2 0x3ED JUMPI POP PUSH2 0x1C0 MSTORE JUMPDEST PUSH1 0xFF DUP1 SWAP2 AND SWAP1 DUP2 EQ PUSH2 0x3D9 JUMPI PUSH1 0x1 ADD PUSH2 0x375 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x3FF JUMPI POP PUSH2 0x1E0 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x411 JUMPI POP PUSH2 0x200 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x423 JUMPI POP PUSH2 0x220 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x435 JUMPI POP PUSH2 0x240 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x447 JUMPI POP PUSH2 0x260 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x459 JUMPI POP PUSH2 0x280 MSTORE PUSH2 0x3C5 JUMP JUMPDEST PUSH1 0x7 EQ PUSH2 0x467 JUMPI JUMPDEST POP PUSH2 0x3C5 JUMP JUMPDEST PUSH2 0x2A0 MSTORE PUSH0 PUSH2 0x461 JUMP JUMPDEST PUSH4 0xBD393583 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 POP SUB PUSH2 0x5F3 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3A78 SWAP2 DUP3 PUSH2 0xC4D DUP4 CODECOPY PUSH1 0x80 MLOAD DUP3 PUSH2 0x2806 ADD MSTORE PUSH1 0xA0 MLOAD DUP3 PUSH2 0x28D2 ADD MSTORE PUSH1 0xC0 MLOAD DUP3 PUSH2 0x27D7 ADD MSTORE PUSH1 0xE0 MLOAD DUP3 PUSH2 0x2855 ADD MSTORE PUSH2 0x100 MLOAD DUP3 PUSH2 0x287B ADD MSTORE PUSH2 0x120 MLOAD DUP3 PUSH2 0x1128 ADD MSTORE PUSH2 0x140 MLOAD DUP3 PUSH2 0x1152 ADD MSTORE PUSH2 0x160 MLOAD DUP3 DUP2 DUP2 PUSH2 0x260 ADD MSTORE DUP2 DUP2 PUSH2 0x488 ADD MSTORE DUP2 DUP2 PUSH2 0x65F ADD MSTORE DUP2 DUP2 PUSH2 0xD7E ADD MSTORE DUP2 DUP2 PUSH2 0x10ED ADD MSTORE DUP2 DUP2 PUSH2 0x14AE ADD MSTORE DUP2 DUP2 PUSH2 0x1733 ADD MSTORE DUP2 DUP2 PUSH2 0x19D8 ADD MSTORE DUP2 DUP2 PUSH2 0x2118 ADD MSTORE PUSH2 0x276C ADD MSTORE PUSH2 0x180 MLOAD DUP3 DUP2 DUP2 PUSH2 0x59D ADD MSTORE DUP2 DUP2 PUSH2 0x94A ADD MSTORE DUP2 DUP2 PUSH2 0xA12 ADD MSTORE DUP2 DUP2 PUSH2 0xC7A ADD MSTORE PUSH2 0x1277 ADD MSTORE MLOAD DUP2 PUSH2 0x28FA ADD MSTORE PUSH2 0x1C0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x25D2 ADD MSTORE PUSH2 0x2951 ADD MSTORE PUSH2 0x1E0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x25FF ADD MSTORE PUSH2 0x297E ADD MSTORE PUSH2 0x200 MLOAD DUP2 DUP2 DUP2 PUSH2 0x262C ADD MSTORE PUSH2 0x29B7 ADD MSTORE PUSH2 0x220 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2659 ADD MSTORE PUSH2 0x29F0 ADD MSTORE PUSH2 0x240 MLOAD DUP2 DUP2 DUP2 PUSH2 0x2686 ADD MSTORE PUSH2 0x2A2A ADD MSTORE PUSH2 0x260 MLOAD DUP2 DUP2 DUP2 PUSH2 0x26B3 ADD MSTORE PUSH2 0x2A63 ADD MSTORE PUSH2 0x280 MLOAD DUP2 DUP2 DUP2 PUSH2 0x26E0 ADD MSTORE PUSH2 0x2A9F ADD MSTORE PUSH2 0x2A0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x270B ADD MSTORE PUSH2 0x2AD9 ADD MSTORE RETURN JUMPDEST PUSH4 0x1CE788A7 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xAAAD13F7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x345 JUMP JUMPDEST PUSH1 0x5 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x689 JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x671 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x5 SSTORE PUSH2 0x35A JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x663 JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x648 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x5 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x6EB JUMPI JUMPDEST SWAP1 DUP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x6DD JUMPI POP POP PUSH2 0x32F JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP PUSH1 0x1 ADD PUSH2 0x6C7 JUMP JUMPDEST POP DUP1 PUSH2 0x6C1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x31B JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2DF JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH2 0x77E JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x766 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH2 0x2F4 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x758 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH2 0x73A JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP5 LT PUSH2 0x7EE JUMPI JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x7E3 JUMPI POP POP PUSH2 0x2C5 JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x7CD JUMP JUMPDEST POP DUP1 PUSH2 0x7CD JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x2B3 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x27D JUMP JUMPDEST PUSH1 0x3 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x877 JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x85F JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH2 0x292 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x851 JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x836 JUMP JUMPDEST PUSH1 0x3 PUSH0 MSTORE SWAP1 SWAP2 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x8F6 JUMPI JUMPDEST SWAP1 DUP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x8E8 JUMPI POP POP PUSH2 0x267 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP6 SWAP5 POP PUSH1 0x1 ADD PUSH2 0x8D2 JUMP JUMPDEST POP DUP1 PUSH2 0x8CC JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x253 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x114 JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x710 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x907 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x972 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x91B JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x907 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xA09 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x9CB JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x9BD JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x710 JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xB0C JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xAD9 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0xA77 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0xA6C JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xA57 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0xABF JUMPI POP POP POP LT PUSH2 0xAA7 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xA9A JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0xA89 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP5 PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0xB01 JUMPI POP POP PUSH2 0xA3C JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP6 SWAP1 PUSH2 0xAF3 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xA2B JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xB40 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0x9CB JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0x9BD JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x710 JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xC42 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x6F2 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xC0F JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xBAF JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0xBA4 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0xB8D JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0xBF8 JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0xBE0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xBD3 JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0xBC0 JUMP JUMPDEST DUP4 PUSH0 MSTORE DUP4 PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP3 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP3 DUP2 LT PUSH2 0xC37 JUMPI POP POP PUSH2 0xB74 JUMP JUMPDEST PUSH0 DUP2 SSTORE ADD DUP5 SWAP1 PUSH2 0xC29 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xB63 JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH4 0x1FFC9A7 EQ PUSH2 0x1D90 JUMPI POP DUP3 PUSH4 0x6FDDE03 EQ PUSH2 0x1CE1 JUMPI DUP3 PUSH4 0x95EA7B3 EQ PUSH2 0x1C63 JUMPI DUP3 PUSH4 0x16A0B3E0 EQ PUSH2 0x1A2A JUMPI DUP3 PUSH4 0x18160DDD EQ PUSH2 0x1A0E JUMPI DUP3 PUSH4 0x23B872DD EQ PUSH2 0x1966 JUMPI DUP3 PUSH4 0x23DE6651 EQ PUSH2 0x1934 JUMPI DUP3 PUSH4 0x273C1ADF EQ PUSH2 0x1912 JUMPI DUP3 PUSH4 0x30ADF81F EQ PUSH2 0x18D8 JUMPI DUP3 PUSH4 0x313CE567 EQ PUSH2 0x18BD JUMPI DUP3 PUSH4 0x3644E515 EQ PUSH2 0x18A1 JUMPI DUP3 PUSH4 0x53B79BD7 EQ PUSH2 0x16E5 JUMPI DUP3 PUSH4 0x54FD4D50 EQ PUSH2 0x15F5 JUMPI DUP3 PUSH4 0x5687F2B8 EQ PUSH2 0x1596 JUMPI DUP3 PUSH4 0x627CDCB9 EQ PUSH2 0x156D JUMPI DUP3 PUSH4 0x654CF15D EQ PUSH2 0x154B JUMPI DUP3 PUSH4 0x679AEFCE EQ PUSH2 0x1514 JUMPI DUP3 PUSH4 0x70A08231 EQ PUSH2 0x1440 JUMPI DUP3 PUSH4 0x72C98186 EQ PUSH2 0x131F JUMPI DUP3 PUSH4 0x7ECEBE00 EQ PUSH2 0x12DB JUMPI DUP3 PUSH4 0x81FA807C EQ PUSH2 0x121A JUMPI DUP3 PUSH4 0x84B0196E EQ PUSH2 0x1111 JUMPI DUP3 PUSH4 0x8D928AF8 EQ PUSH2 0x10C1 JUMPI DUP3 PUSH4 0x95D89B41 EQ PUSH2 0xFBB JUMPI DUP3 PUSH4 0x984DE9E8 EQ PUSH2 0xDF9 JUMPI DUP3 PUSH4 0xA9059CBB EQ PUSH2 0xCE6 JUMPI DUP3 PUSH4 0xAA6CA808 EQ PUSH2 0xC21 JUMPI DUP3 PUSH4 0xABB1DC44 EQ PUSH2 0x9B8 JUMPI DUP3 PUSH4 0xB156AA0A EQ PUSH2 0x8F1 JUMPI DUP3 PUSH4 0xB677FA56 EQ PUSH2 0x8CF JUMPI DUP3 PUSH4 0xC0BC6F33 EQ PUSH2 0x5F6 JUMPI DUP3 PUSH4 0xCE20ECE7 EQ PUSH2 0x5D6 JUMPI DUP3 PUSH4 0xD335B0CF EQ PUSH2 0x543 JUMPI DUP3 PUSH4 0xD505ACCF EQ PUSH2 0x2D8 JUMPI POP DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x1E5 JUMPI POP PUSH4 0xF89F27ED EQ PUSH2 0x1AE JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x1DD SWAP1 PUSH2 0x1CA PUSH2 0x28F8 JUMP JUMPDEST SWAP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0x200 PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x20A PUSH2 0x1E3F JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2C7 JUMPI JUMPDEST DUP2 PUSH2 0x2B5 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x290 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2A8 JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 SWAP1 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x2F1 PUSH2 0x1E1C JUMP JUMPDEST SWAP1 PUSH2 0x2FA PUSH2 0x1E3F JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP4 AND DUP4 SUB PUSH2 0x1E1 JUMPI DUP1 TIMESTAMP GT PUSH2 0x519 JUMPI PUSH2 0x347 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x413 PUSH2 0x40A DUP8 MLOAD SWAP6 PUSH1 0x20 DUP8 ADD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 SWAP6 DUP7 DUP10 AND SWAP8 DUP9 DUP14 DUP5 ADD MSTORE DUP8 DUP13 AND PUSH1 0x60 DUP5 ADD MSTORE DUP14 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x3BE DUP2 PUSH2 0x1E92 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x3C9 PUSH2 0x27C0 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x2F35 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2FC4 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x4EC JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x484 PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI POP PUSH2 0x4B8 JUMPI STOP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4E4 JUMPI JUMPDEST DUP2 PUSH2 0x4D1 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0x4E2 SWAP1 PUSH2 0x2079 JUMP JUMPDEST STOP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4C4 JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST DUP7 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2CF JUMPI PUSH0 SWAP2 PUSH2 0x29A JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH6 0x9184E72A000 DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 MLOAD PUSH2 0x613 DUP2 PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP6 DUP2 ADD SWAP3 PUSH0 DUP5 MSTORE PUSH1 0x60 DUP3 ADD PUSH0 DUP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP2 PUSH0 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 PUSH0 DUP6 MSTORE PUSH1 0xC0 DUP2 ADD SWAP6 PUSH0 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 DUP12 MLOAD PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x8AD JUMPI JUMPDEST POP DUP4 MSTORE DUP12 MLOAD PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x889 JUMPI JUMPDEST POP DUP5 MSTORE DUP12 MLOAD PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE DUP11 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x87F JUMPI PUSH0 SWAP2 PUSH2 0x852 JUMPI JUMPDEST POP DUP10 MSTORE PUSH2 0x751 PUSH2 0x20CF JUMP JUMPDEST DUP6 MSTORE DUP12 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE DUP2 PUSH1 0x24 PUSH2 0x1A0 SWAP5 DUP6 SWAP4 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x848 JUMPI SWAP3 DUP12 SWAP13 SWAP3 PUSH2 0x7E0 SWAP3 PUSH2 0x7F3 SWAP7 SWAP6 PUSH0 SWAP15 SWAP13 SWAP14 SWAP15 SWAP3 PUSH2 0x81B JUMPI JUMPDEST POP POP DUP11 DUP2 ADD MLOAD ISZERO ISZERO DUP9 MSTORE PUSH2 0x120 PUSH2 0x100 SWAP2 DUP3 DUP2 ADD MLOAD ISZERO ISZERO DUP12 MSTORE ADD MLOAD ISZERO ISZERO DUP11 MSTORE DUP4 MLOAD SWAP14 DUP14 DUP16 SWAP15 SWAP4 DUP16 SWAP5 DUP6 MSTORE MLOAD SWAP4 ADD MSTORE DUP13 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 PUSH1 0x1F NOT DUP12 DUP5 SUB ADD SWAP1 DUP12 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x60 DUP9 ADD MSTORE MLOAD PUSH1 0x80 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH2 0x83A SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI JUMPDEST PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2482 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7AA JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x828 JUMP JUMPDEST DUP13 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x878 JUMPI JUMPDEST PUSH2 0x869 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD PUSH0 PUSH2 0x746 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x85F JUMP JUMPDEST DUP14 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8A5 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x228D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x703 JUMP JUMPDEST PUSH2 0x8C9 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x25A4 JUMP JUMPDEST PUSH0 PUSH2 0x6C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x9B6E64A8EC60000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0x992 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FA7 JUMP JUMPDEST PUSH2 0x9A7 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8C1 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x97F JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD SWAP2 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP4 PUSH0 SWAP3 PUSH0 SWAP3 PUSH0 SWAP6 PUSH2 0xAED JUMPI JUMPDEST POP SWAP1 PUSH2 0xA65 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xAA9 JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1DD DUP12 PUSH2 0xA9B DUP13 DUP13 PUSH2 0x1FA7 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0xAC6 DUP2 PUSH2 0x2023 JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0xA7D JUMP JUMPDEST SWAP6 POP SWAP4 POP SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xB03 DUP2 DUP6 PUSH2 0x1ECA JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x1E1 JUMPI DUP6 PUSH2 0xB30 SWAP2 DUP5 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP6 DUP7 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0xB58 DUP3 PUSH2 0x1EED JUMP JUMPDEST SWAP9 PUSH2 0xB65 DUP7 MLOAD SWAP11 DUP12 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP11 MSTORE DUP1 DUP11 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x1E1 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xBC5 JUMPI POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0xBA3 SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xBBA SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 PUSH2 0xA48 JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x1E1 JUMPI DUP8 MLOAD SWAP1 PUSH2 0xBDA DUP3 PUSH2 0x1E62 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP13 DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0xC08 DUP12 DUP7 ADD PUSH2 0x2079 JUMP JUMPDEST DUP12 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xB80 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9AE JUMPI SWAP2 PUSH2 0x1DD SWAP3 PUSH0 SWAP3 PUSH2 0xCC2 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x1FDA JUMP JUMPDEST PUSH2 0xCDF SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2203 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xCAF JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0xD06 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDE7 JUMPI JUMPDEST DUP2 PUSH2 0xDCE PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI PUSH2 0xDE1 PUSH1 0x20 SWAP3 PUSH2 0x2079 JUMP JUMPDEST POP PUSH2 0xDAB JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDC1 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0xE29 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI PUSH2 0xE3E DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0xFB4 JUMPI DUP3 JUMPDEST PUSH2 0xE4C PUSH2 0x28F8 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x3 EQ PUSH2 0xF5F JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0xED8 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0xE95 JUMPI PUSH1 0x2 EQ PUSH2 0xE7F JUMPI PUSH1 0x51 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 SWAP4 POP SWAP1 PUSH2 0xE8D SWAP2 PUSH2 0x306F JUMP JUMPDEST SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xEC5 JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xEBF SWAP2 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x11 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH2 0xF1B PUSH1 0x1 SWAP2 PUSH2 0xF15 PUSH2 0xF03 DUP8 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP9 DUP12 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 PUSH2 0x2C4C JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xEE7 JUMP JUMPDEST SWAP3 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0xF38 JUMPI PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0xE8F JUMP JUMPDEST DUP3 PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF23 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xFAB PUSH1 0x1 SWAP3 PUSH2 0xFA5 PUSH2 0xF93 DUP9 DUP9 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP10 DUP13 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2E7D JUMP JUMPDEST SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP4 ADD SWAP3 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x3 PUSH2 0xE44 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xFDD DUP2 PUSH2 0x2041 JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x107C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1020 JUMPI JUMPDEST POP POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x1064 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1DD PUSH2 0xFFE JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x104B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x1011 SWAP2 POP PUSH2 0x1DD SWAP1 POP PUSH2 0xFFE JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH2 0x114C PUSH32 0x0 PUSH2 0x2C8D JUMP JUMPDEST SWAP3 PUSH2 0x1176 PUSH32 0x0 PUSH2 0x2DBF JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x1207 JUMPI POP SWAP2 PUSH2 0x11E7 SWAP2 PUSH2 0x1DD SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x11DA DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1DF7 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1DF7 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC17 JUMPI PUSH0 SWAP3 PUSH2 0x12BE JUMPI JUMPDEST POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x12D4 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x841 JUMPI PUSH2 0x832 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP3 DUP1 PUSH2 0x12A7 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x130D PUSH2 0x1E1C JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x3 NOT DUP5 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x1E1 JUMPI DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1E1 JUMPI DUP4 MLOAD SWAP2 PUSH2 0x135E DUP4 PUSH2 0x1E92 JUMP JUMPDEST DUP1 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1E1 JUMPI DUP4 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD DUP7 DUP5 ADD MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1391 SWAP1 DUP6 CALLDATASIZE SWAP2 DUP5 ADD ADD PUSH2 0x1F05 JUMP JUMPDEST DUP6 DUP5 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 DUP3 GT PUSH2 0x1E1 JUMPI ADD SWAP3 CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP1 DUP5 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x1207 JUMPI POP DUP4 MLOAD SWAP1 PUSH2 0x140C DUP7 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1E1 JUMPI DUP6 DUP2 PUSH0 SWAP3 PUSH1 0x24 PUSH2 0xE8D SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x143B PUSH2 0x2755 JUMP JUMPDEST PUSH2 0x22D1 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP3 PUSH2 0x145E PUSH2 0x1E1C JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xDEF JUMPI PUSH0 SWAP3 PUSH2 0x14E5 JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x150D JUMPI JUMPDEST PUSH2 0x14FD DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14DE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x14F3 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH32 0x18E79A2000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x16345785D8A0000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x15D3 PUSH2 0x2755 JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1618 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x164A JUMPI JUMPDEST POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x168D JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1677 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x1011 SWAP1 POP PUSH2 0x1638 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1703 DUP3 PUSH2 0x1E62 JUMP JUMPDEST PUSH1 0x60 DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP4 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP2 DUP5 ADD SWAP3 PUSH1 0x60 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH32 0x0 AND SWAP1 DUP5 MLOAD PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1897 JUMPI SWAP1 PUSH0 SWAP3 SWAP2 DUP4 SWAP2 PUSH2 0x187D JUMPI JUMPDEST POP DUP9 MSTORE PUSH1 0x24 DUP7 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1873 JUMPI PUSH0 SWAP2 PUSH2 0x185A JUMPI JUMPDEST POP DUP2 SWAP6 SWAP3 SWAP6 MSTORE PUSH2 0x17E9 PUSH2 0x28F8 JUMP JUMPDEST DUP5 MSTORE DUP3 MLOAD SWAP5 DUP1 DUP7 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 MLOAD SWAP3 PUSH1 0x60 DUP3 DUP9 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH1 0xA0 DUP9 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1844 JUMPI DUP9 DUP1 PUSH2 0x1DD DUP11 DUP11 PUSH2 0x1833 DUP12 DUP12 MLOAD PUSH1 0x1F NOT SWAP4 DUP5 DUP9 DUP5 SUB ADD SWAP1 DUP9 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST SWAP2 MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x1FA7 JUMP JUMPDEST DUP4 MLOAD DUP11 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x180D JUMP JUMPDEST PUSH2 0x186E SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x89D DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST PUSH2 0x17DB JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x1891 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0xCD7 DUP2 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP11 PUSH2 0x1798 JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x27C0 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x29A2241AF62C0000 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x15C8 CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x197B CALLDATASIZE PUSH2 0x1F65 JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH2 0xDB5 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xE8D PUSH2 0x20CF JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x1A5B SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x1F05 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH2 0x1A77 PUSH2 0x1A70 DUP6 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP5 PUSH2 0x25CA JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP2 DUP4 GT ISZERO PUSH2 0x1C5D JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x3 EQ PUSH2 0x1BE7 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0x1B4E JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x1B0C JUMPI PUSH1 0x2 EQ PUSH2 0x1AB7 JUMPI PUSH1 0x51 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP2 ISZERO PUSH2 0x1AE6 JUMPI POP PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0xF15 SWAP3 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP DUP1 SWAP3 SWAP4 SWAP5 SWAP2 POP ISZERO PUSH2 0x1B3B JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1BA7 JUMPI JUMPDEST POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH2 0x1BD9 DUP2 SWAP4 PUSH2 0xF15 PUSH2 0x1BCF DUP10 DUP7 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF0E DUP11 PUSH2 0x2086 JUMP JUMPDEST SWAP6 ADD SWAP3 PUSH2 0x1B61 JUMP JUMPDEST SWAP4 PUSH2 0x1B66 JUMP JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1C19 JUMPI POP POP POP DUP2 ISZERO PUSH2 0x1B81 JUMPI POP SWAP3 PUSH2 0xF15 PUSH2 0xE8D SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1BE1 JUMPI SWAP1 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C54 DUP3 SWAP5 PUSH2 0xFA5 PUSH2 0x1C4A DUP11 DUP8 PUSH2 0x20BB JUMP JUMPDEST MLOAD PUSH2 0xF9E DUP12 PUSH2 0x2086 JUMP JUMPDEST DIV SWAP6 ADD SWAP3 PUSH2 0x1BFA JUMP JUMPDEST DUP2 PUSH2 0x1A85 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1E1 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH2 0xD64 SWAP3 PUSH2 0x1C83 PUSH2 0x1E1C JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1E1 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1D04 DUP5 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16A5 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1D35 JUMPI POP POP PUSH2 0x1DD SWAP3 SWAP2 PUSH2 0x1011 SWAP2 SUB DUP6 PUSH2 0x1ECA JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1D78 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1011 PUSH2 0x1638 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1D62 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x1E1 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1E1 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1E1 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E7E JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x1F1F DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x1F2D PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1F56 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x1F48 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1E1 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FC6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FB8 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1FF9 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1FEB JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x202D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x206F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x205B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2050 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1E1 JUMPI JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MLOAD DUP2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x5 SHL PUSH8 0xDE0B6B3A7640020 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x217A JUMPI PUSH0 SWAP2 PUSH2 0x214B JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2172 JUMPI JUMPDEST DUP2 PUSH2 0x2166 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1E1 JUMPI MLOAD SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2159 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x21A0 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x21AE PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x21D7 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x21C9 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x2185 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1E1 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2247 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP4 PUSH2 0x2255 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x1ECA JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1E1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x227E JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2270 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1E1 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x1E1 JUMPI DUP2 PUSH2 0x22BA SWAP2 DUP5 ADD PUSH2 0x222C JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 MLOAD PUSH2 0x22E8 PUSH1 0x60 DUP4 ADD SWAP2 DUP3 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP2 PUSH2 0x22FC PUSH1 0x80 DUP3 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x20BB JUMP JUMPDEST MLOAD SWAP2 DUP2 MLOAD PUSH2 0x2309 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x2312 DUP2 PUSH2 0x2023 JUMP JUMPDEST PUSH2 0x23D1 JUMPI PUSH2 0x232C PUSH2 0x2325 PUSH1 0x20 SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP2 ADD MLOAD PUSH8 0xDE0B6B3A7640000 SWAP5 DUP6 PUSH2 0x2343 DUP3 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP3 GT PUSH2 0x23A9 JUMPI PUSH2 0x2357 PUSH2 0x235D SWAP3 DUP3 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x306F JUMP JUMPDEST DUP5 DUP5 MUL SWAP4 DUP1 DUP6 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH2 0x237E PUSH2 0x2384 SWAP3 PUSH2 0x2391 SWAP6 PUSH2 0x2B84 JUMP JUMPDEST SWAP1 PUSH2 0x2BA2 JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x2B71 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x23EB PUSH2 0x23E4 PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP5 SWAP6 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x25CA JUMP JUMPDEST SWAP3 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x2400 DUP6 PUSH2 0x2B3D JUMP JUMPDEST DIV DUP2 GT PUSH2 0x245A JUMPI DUP4 SUB SWAP1 DUP4 DUP3 GT PUSH2 0x2395 JUMPI PUSH2 0x2421 PUSH2 0x237E SWAP3 PUSH2 0x2427 SWAP6 PUSH2 0x306F JUMP JUMPDEST SWAP3 PUSH2 0x306F JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1A0 SWAP2 DUP2 SWAP1 SUB DUP3 DUP2 SLT PUSH2 0x1E1 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x140 SWAP3 DUP4 DUP6 ADD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP7 DUP6 LT DUP3 DUP7 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x80 SGT PUSH2 0x1E1 JUMPI PUSH2 0x1C0 DUP7 ADD SWAP1 DUP2 GT DUP5 DUP3 LT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE PUSH2 0x24D4 DUP2 PUSH2 0x2079 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x24E2 PUSH1 0x20 DUP3 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x24F7 PUSH1 0x40 DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x250C PUSH1 0x60 DUP5 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1E1 JUMPI PUSH2 0x259D SWAP5 PUSH2 0x2593 SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x2587 PUSH2 0x120 SWAP8 PUSH2 0x257B DUP10 DUP8 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x2079 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x2079 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1E1 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1E1 JUMPI PUSH2 0x2229 SWAP3 ADD PUSH2 0x222C JUMP JUMPDEST DUP1 PUSH2 0x25F4 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2621 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x264E JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP2 SUB PUSH2 0x267B JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 SUB PUSH2 0x26A8 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP2 SUB PUSH2 0x26D5 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x6 DUP2 SUB PUSH2 0x2702 JUMPI POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x7 SUB PUSH2 0x272D JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2794 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x28CF JUMPI JUMPDEST ISZERO PUSH2 0x2828 JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1E7E JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x27FF JUMP JUMPDEST PUSH32 0x0 PUSH2 0x2922 DUP2 PUSH2 0x1EED JUMP JUMPDEST SWAP1 PUSH2 0x2930 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x1ECA JUMP JUMPDEST DUP1 DUP3 MSTORE PUSH2 0x293C DUP2 PUSH2 0x1EED JUMP JUMPDEST PUSH1 0x1F NOT PUSH1 0x20 DUP5 ADD SWAP2 ADD CALLDATASIZE DUP3 CALLDATACOPY DUP3 MLOAD ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x2 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2B2C JUMPI DUP2 MLOAD PUSH1 0x3 LT ISZERO PUSH2 0x20A7 JUMPI PUSH32 0x0 PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x4 SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD DUP3 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x5 LT ISZERO PUSH2 0x2B14 JUMPI PUSH32 0x0 PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0x6 DUP2 GT ISZERO PUSH2 0x2B27 JUMPI DUP3 MLOAD PUSH1 0x6 LT ISZERO PUSH2 0x2B14 JUMPI PUSH1 0x7 SWAP1 PUSH32 0x0 PUSH1 0xE0 DUP6 ADD MSTORE GT PUSH2 0x2ACC JUMPI POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x7 LT ISZERO PUSH2 0x2B01 JUMPI POP PUSH32 0x0 PUSH2 0x100 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x32 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x32 DUP3 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP POP SWAP1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2395 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x2BB9 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2BD4 JUMPI POP POP DUP1 PUSH2 0x2229 SWAP2 PUSH2 0x2C4C JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2BF8 JUMPI POP POP PUSH2 0x2BF2 DUP2 PUSH2 0x2229 SWAP3 PUSH2 0x2C4C JUMP JUMPDEST DUP1 PUSH2 0x2C4C JUMP JUMPDEST PUSH2 0x2C02 SWAP2 SWAP3 PUSH2 0x310B JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2C0E DUP4 PUSH2 0x2B5A JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2395 JUMPI PUSH2 0x2229 SWAP2 PUSH2 0x2B30 JUMP JUMPDEST SWAP1 PUSH2 0x2C56 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2CE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x2CF3 DUP4 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2D1E JUMPI JUMPDEST POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2D64 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2D49 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x2229 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2DE1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2CB9 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2CAF DUP4 PUSH2 0x1EAE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2DF6 DUP2 PUSH2 0x2041 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2D7C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2E1E JUMPI POP POP PUSH2 0x2229 SWAP3 POP SUB DUP3 PUSH2 0x1ECA JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2E65 JUMPI POP PUSH2 0x2229 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2D10 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2E4A JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x2E94 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2EB1 JUMPI POP POP DUP1 PUSH2 0x2391 SWAP2 PUSH2 0x2B71 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2ED5 JUMPI POP PUSH2 0x2ECE DUP3 PUSH2 0x2391 SWAP4 PUSH2 0x2B71 JUMP JUMPDEST DIV DUP1 PUSH2 0x2B71 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EE0 SWAP2 PUSH2 0x310B JUMP JUMPDEST PUSH2 0x2EE9 DUP2 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x2395 JUMPI DUP2 LT ISZERO PUSH2 0x2F30 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x2FB9 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x217A JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2FAF JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x202D JUMPI DUP1 PUSH2 0x2FD6 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x3006 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x303A JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x3044 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x30BF JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2395 JUMPI PUSH1 0x1 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2B8E JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2B8E JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x3A34 JUMPI DUP2 ISZERO PUSH2 0x3A2E JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x3A06 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x39DE JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x39CD JUMPI JUMPDEST ISZERO PUSH2 0x366A JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x31A4 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x3657 JUMPI JUMPDEST ISZERO PUSH2 0x362F JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x361C JUMPI JUMPDEST ISZERO PUSH2 0x35F4 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x35E5 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x3582 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x3549 JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x350F JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x34D7 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x349F JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x3468 JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x3431 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x33FA JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x33C3 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x2229 JUMPI PUSH2 0x2229 SWAP1 PUSH2 0x30E7 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3344 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3332 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3320 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3317 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3305 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32F3 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x32E1 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x32CF JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x35D2 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x32BA JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x325E JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x324F JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x323F JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x39B7 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x398C JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x396B JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x3948 JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x3928 JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x3908 JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x38E8 JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x38C8 JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x38B1 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x3891 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x3871 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x3852 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x3833 JUMPI JUMPDEST POP PUSH2 0x37E0 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x3101 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x382E JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x3213 JUMP JUMPDEST PUSH2 0x3828 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x37A4 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3790 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x377C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3768 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3754 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3740 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x372C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3717 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3702 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x36EA JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x36C9 JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x36AC JUMP JUMPDEST SWAP1 POP PUSH2 0x39C3 SWAP2 POP PUSH2 0x30E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x367F JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x3151 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B AND PUSH23 0xDD274814FED4FFF49A83B5404B448D288D13E3F2848873 0xC7 0xC3 PUSH12 0xAED2CF64736F6C634300081A STOP CALLER ","sourceMap":"791:2984:115:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;791:2984:115;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1136:31;;;;;;;;:::i;:::-;;;;;;;;;;978:4:63;791:2984:115;1347:46:35;998:14:63;;1461:15:39;791:2984:115;1461:15:39;;;791:2984:115;;;1513:35:39;;;1509:106;;1625:42;;791:2984:115;1735:53:39;;791:2984:115;;;;;;;;3534:28:33;791:2984:115;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:21:45;791:2984:115;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1203:26;;791:2984;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;998:14:63;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;1625:42:39;791:2984:115;;;;;1735:53:39;791:2984:115;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;-1:-1:-1;791:2984:115;;;;;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;1156:21:45;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1509:106:39;1571:33;;;-1:-1:-1;1571:33:39;;-1:-1:-1;1571:33:39;791:2984:115;;;;-1:-1:-1;791:2984:115;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;;;;-1:-1:-1;;791:2984:115;;;-1:-1:-1;;;;;791:2984:115;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;791:2984:115;;;;;;;;-1:-1:-1;;791:2984:115;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_available_length_bytes":{"entryPoint":4653,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_string":{"entryPoint":4804,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_address_dyn":{"entryPoint":4723,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_bytes_storage":{"entryPoint":4975,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":4553,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_LiquidityManagement":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"allocate_and_zero_memory_struct_struct_LiquidityManagement":{"entryPoint":4858,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_array_struct_TokenConfig_dyn":{"entryPoint":4834,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":5115,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":4894,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":4618,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_11334":{"entryPoint":4590,"id":null,"parameterSlots":1,"returnSlots":0},"fun_computeFinalSalt":{"entryPoint":5628,"id":5018,"parameterSlots":1,"returnSlots":1},"fun_ensureEnabled":{"entryPoint":5576,"id":4973,"parameterSlots":0,"returnSlots":0},"fun_getActionId":{"entryPoint":5226,"id":5316,"parameterSlots":1,"returnSlots":1},"fun_getAuthorizer":{"entryPoint":5344,"id":18883,"parameterSlots":0,"returnSlots":1},"fun_getNewPoolPauseWindowEndTime":{"entryPoint":5521,"id":5576,"parameterSlots":0,"returnSlots":1},"storage_array_index_access_address_dyn":{"entryPoint":5128,"id":null,"parameterSlots":1,"returnSlots":2}},"generatedSources":[],"immutableReferences":{"5256":[{"length":32,"start":5269}],"5505":[{"length":32,"start":2909}],"5507":[{"length":32,"start":2560},{"length":32,"start":5523}],"18834":[{"length":32,"start":1144},{"length":32,"start":1480},{"length":32,"start":1773},{"length":32,"start":2765},{"length":32,"start":5411}]},"linkReferences":{},"object":"60806040526004361015610011575f80fd5b5f358060e01c908163193ad50f1461117a5781632f2770db1461102d575080633f819b6f14610f8457806344f6fec714610eca57806353a72f7e14610d6c57806354fd4d5014610c8e5780636634b75314610c42578063673a2a1f14610ba35780636c57f5a914610b8157806378da80cb14610b41578063851c1bb314610af15780638d928af814610aa15780638eec5d7014610a84578063aaabadc514610a4c578063db035ebc14610a24578063e9d56e19146109e4578063ec888061146109ca5763fed4cdda146100e2575f80fd5b34610823576101806003193601126108235760043567ffffffffffffffff8111610823576101149036906004016112c4565b60243567ffffffffffffffff8111610823576101349036906004016112c4565b906044359167ffffffffffffffff8311610823573660238401121561082357826004013590610162826112e2565b93610170604051958661120a565b82855260208501906024829460071b8201019036821161082357602401915b818310610946575050506064359067ffffffffffffffff82116108235736602383011215610823578160040135916101c6836112e2565b926101d4604051948561120a565b8084526024602085019160051b8301019136831161082357602401905b8282106109365750505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261082357604051936060850185811067ffffffffffffffff82111761073f5760405260843573ffffffffffffffffffffffffffffffffffffffff8116810361082357855260a43573ffffffffffffffffffffffffffffffffffffffff8116810361082357602086015260c4359273ffffffffffffffffffffffffffffffffffffffff841693848103610823576040870152610104359273ffffffffffffffffffffffffffffffffffffffff84168403610823576101243594851515860361082357610144359081151582036108235761090e576102fc6112fa565b951515606087015215158552875190604051938460a081011067ffffffffffffffff60a08701111761073f5760a0850160405284526020840152604083015260608201526040515f81600554916103528361131e565b80835292600181169081156108ef5750600114610890575b6103769250038261120a565b60808201526040518091604060208301526103d56103a1825160a060608601526101008501906111c9565b60208301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526111c9565b90604081015160a08401526060810151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08482030160c0850152602080845192838152019301905f5b818110610877575050509060806104619201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08483030160e08501526111c9565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604083015203906104b1601f199283810183528261120a565b6104e160405192836020808201946104c88661136f565b90805192839101825e015f81520390810184528361120a565b6104ed610164356115fc565b9082511561084f5773ffffffffffffffffffffffffffffffffffffffff9251905ff5169384156108275761051f6115c8565b845f525f60205260405f20600160ff198254161790556001546801000000000000000081101561073f578060016105599201600155611408565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff88831b921b191617905560405195857f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc5f80a26105b0611591565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163b1561082357908794959392917feeec802f0000000000000000000000000000000000000000000000000000000086526101a48601908860048801526101a06024880152518091526101c4860194905f5b818110610777575050509473ffffffffffffffffffffffffffffffffffffffff8594938160406106d39563ffffffff5f9b60e43560448c01521660648a01528a60848a01528281511660a48a01528260208201511660c48a015201511660e4870152166101048501526101248401906060809180511515845260208101511515602085015260408101511515604085015201511515910152565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561076c57610725575b602090604051908152f35b67ffffffffffffffff821161073f5760209160405261071a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040513d5f823e3d90fd5b91809897509590929394955173ffffffffffffffffffffffffffffffffffffffff815116825260208101519060028210156107f65782606060809260209485600197015273ffffffffffffffffffffffffffffffffffffffff604082015116604084015201511515606082015201980191019189969795949392610639565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f80fd5b7f741752c2000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4ca249dc000000000000000000000000000000000000000000000000000000005f5260045ffd5b825185528695506020948501949092019160010161041f565b509060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b8183106108d35750509060206103769282010161036a565b60209193508060019154838588010152019101909183926108bb565b6020925061037694915060ff191682840152151560051b82010161036a565b7f61ee1764000000000000000000000000000000000000000000000000000000005f5260045ffd5b81358152602091820191016101f1565b608083360312610823576040519061095d826111ee565b73ffffffffffffffffffffffffffffffffffffffff843581811681036108235783526020850135600281101561082357602084015260408501359081168103610823576040830152606090818501359283151584036108235760809360209382015281520192019161018f565b34610823575f6003193601126108235760206040515f8152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f600319360112610823576020610a3e611591565b63ffffffff60405191168152f35b34610823575f600319360112610823576020610a666114e0565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576020600154604051908152f35b34610823575f60031936011261082357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823576020600319360112610823576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361082357610b3960209161146a565b604051908152f35b34610823575f60031936011261082357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610823575f60031936011261082357602060ff600254166040519015158152f35b34610823575f60031936011261082357604051806001916001549283825260208092019360015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b828210610c1757610c1386610c07818a038261120a565b60405191829182611273565b0390f35b845473ffffffffffffffffffffffffffffffffffffffff168752958601959383019390830190610bf0565b346108235760206003193601126108235760043573ffffffffffffffffffffffffffffffffffffffff8116809103610823575f525f602052602060ff60405f2054166040519015158152f35b34610823575f600319360112610823576040516004545f82610caf8361131e565b91828252602093600190856001821691825f14610d4c575050600114610cf1575b50610cdd9250038361120a565b610c136040519282849384528301906111c9565b84915060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b905f915b858310610d34575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610d1d565b60ff191685820152610cdd95151560051b8501019250879150610cd09050565b34610823576040600319360112610823576004356024803560019260015480821015610ea25780610d9d84846113fb565b11610e61575b50610dad826112e2565b92610dbb604051948561120a565b828452610dc7836112e2565b91601f19602093013660208701375f5b848110610dec5760405180610c138882611273565b610dfe610df982846113fb565b611408565b9054908751831015610e355760031b1c73ffffffffffffffffffffffffffffffffffffffff16600582901b87018501528601610dd7565b847f4e487b71000000000000000000000000000000000000000000000000000000005f5260326004525ffd5b908092508103908111610e75579084610da3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e23d035000000000000000000000000000000000000000000000000000000005f5260045ffd5b346108235760406003193601126108235760043567ffffffffffffffff81116108235736602382011215610823576055600b610f12602093369060248160040135910161122d565b604051610f42818680820194610f278661136f565b90805192839101825e015f815203601f19810183528261120a565b519020610f506024356115fc565b604051916040830152848201523081520160ff81532073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610823575f600319360112610823576040516005545f82610fa58361131e565b91828252602093600190856001821691825f14610d4c575050600114610fd25750610cdd9250038361120a565b84915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b858310611015575050610cdd935082010185610cd0565b80548389018501528794508693909201918101610ffe565b34610823575f600319360112610823577fffffffff00000000000000000000000000000000000000000000000000000000611068911661146a565b602073ffffffffffffffffffffffffffffffffffffffff6110876114e0565b16916064604051809481937f9be2a88400000000000000000000000000000000000000000000000000000000835260048301523360248301523060448301525afa90811561076c575f9161113f575b5015611117576110e46115c8565b600160ff1960025416176002557f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d505f80a1005b7f23dada53000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506020813d602011611172575b8161115a6020938361120a565b810103126108235751801515810361082357816110d6565b3d915061114d565b34610823575f6003193601126108235760806111946112fa565b6111c760405180926060809180511515845260208101511515602085015260408101511515604085015201511515910152565bf35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6080810190811067ffffffffffffffff82111761073f57604052565b90601f601f19910116810190811067ffffffffffffffff82111761073f57604052565b92919267ffffffffffffffff821161073f57604051916112576020601f19601f840116018461120a565b829481845281830111610823578281602093845f960137010152565b60209060206040818301928281528551809452019301915f5b82811061129a575050505090565b835173ffffffffffffffffffffffffffffffffffffffff168552938101939281019260010161128c565b9080601f83011215610823578160206112df9335910161122d565b90565b67ffffffffffffffff811161073f5760051b60200190565b60405190611307826111ee565b5f6060838281528260208201528260408201520152565b90600182811c92168015611365575b602083101461133857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f169161132d565b6003545f929161137e8261131e565b916001908181169081156113e8575060011461139957505050565b909192935060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905f915b8483106113d5575050500190565b81816020925485870152019201916113c7565b60ff191683525050811515909102019150565b91908201809211610e7557565b60015481101561143d5760015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927f00000000000000000000000000000000000000000000000000000000000000008452166040820152602481526060810181811067ffffffffffffffff82111761073f5760405251902090565b6040517faaabadc500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff6020826004817f000000000000000000000000000000000000000000000000000000000000000085165afa91821561076c575f9261155857505090565b9091506020813d602011611589575b816115746020938361120a565b81010312610823575190811681036108235790565b3d9150611567565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81164210156115c35790565b505f90565b60ff600254166115d457565b7f75884cda000000000000000000000000000000000000000000000000000000005f5260045ffd5b604051602081019133835246604083015260608201526060815261161f816111ee565b5190209056fea2646970667358221220f40127d232f8d908273c324b8db4ec8d0aa7dbff87a7e5627774e299dc68f47664736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD DUP1 PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x193AD50F EQ PUSH2 0x117A JUMPI DUP2 PUSH4 0x2F2770DB EQ PUSH2 0x102D JUMPI POP DUP1 PUSH4 0x3F819B6F EQ PUSH2 0xF84 JUMPI DUP1 PUSH4 0x44F6FEC7 EQ PUSH2 0xECA JUMPI DUP1 PUSH4 0x53A72F7E EQ PUSH2 0xD6C JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xC8E JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0xC42 JUMPI DUP1 PUSH4 0x673A2A1F EQ PUSH2 0xBA3 JUMPI DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0xB81 JUMPI DUP1 PUSH4 0x78DA80CB EQ PUSH2 0xB41 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xAF1 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xAA1 JUMPI DUP1 PUSH4 0x8EEC5D70 EQ PUSH2 0xA84 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0xA4C JUMPI DUP1 PUSH4 0xDB035EBC EQ PUSH2 0xA24 JUMPI DUP1 PUSH4 0xE9D56E19 EQ PUSH2 0x9E4 JUMPI DUP1 PUSH4 0xEC888061 EQ PUSH2 0x9CA JUMPI PUSH4 0xFED4CDDA EQ PUSH2 0xE2 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH2 0x180 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x823 JUMPI PUSH2 0x114 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x823 JUMPI PUSH2 0x134 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0x12C4 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0x823 JUMPI CALLDATASIZE PUSH1 0x23 DUP5 ADD SLT ISZERO PUSH2 0x823 JUMPI DUP3 PUSH1 0x4 ADD CALLDATALOAD SWAP1 PUSH2 0x162 DUP3 PUSH2 0x12E2 JUMP JUMPDEST SWAP4 PUSH2 0x170 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x120A JUMP JUMPDEST DUP3 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP1 PUSH1 0x24 DUP3 SWAP5 PUSH1 0x7 SHL DUP3 ADD ADD SWAP1 CALLDATASIZE DUP3 GT PUSH2 0x823 JUMPI PUSH1 0x24 ADD SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x946 JUMPI POP POP POP PUSH1 0x64 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x823 JUMPI CALLDATASIZE PUSH1 0x23 DUP4 ADD SLT ISZERO PUSH2 0x823 JUMPI DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 PUSH2 0x1C6 DUP4 PUSH2 0x12E2 JUMP JUMPDEST SWAP3 PUSH2 0x1D4 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x120A JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH1 0x24 PUSH1 0x20 DUP6 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x823 JUMPI PUSH1 0x24 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x936 JUMPI POP POP POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD SWAP4 PUSH1 0x60 DUP6 ADD DUP6 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE PUSH1 0x84 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI DUP6 MSTORE PUSH1 0xA4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP4 DUP5 DUP2 SUB PUSH2 0x823 JUMPI PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x104 CALLDATALOAD SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP5 SUB PUSH2 0x823 JUMPI PUSH2 0x124 CALLDATALOAD SWAP5 DUP6 ISZERO ISZERO DUP7 SUB PUSH2 0x823 JUMPI PUSH2 0x144 CALLDATALOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x823 JUMPI PUSH2 0x90E JUMPI PUSH2 0x2FC PUSH2 0x12FA JUMP JUMPDEST SWAP6 ISZERO ISZERO PUSH1 0x60 DUP8 ADD MSTORE ISZERO ISZERO DUP6 MSTORE DUP8 MLOAD SWAP1 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH1 0xA0 DUP2 ADD LT PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0xA0 DUP8 ADD GT OR PUSH2 0x73F JUMPI PUSH1 0xA0 DUP6 ADD PUSH1 0x40 MSTORE DUP5 MSTORE PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x5 SLOAD SWAP2 PUSH2 0x352 DUP4 PUSH2 0x131E JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x8EF JUMPI POP PUSH1 0x1 EQ PUSH2 0x890 JUMPI JUMPDEST PUSH2 0x376 SWAP3 POP SUB DUP3 PUSH2 0x120A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x40 MLOAD DUP1 SWAP2 PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3D5 PUSH2 0x3A1 DUP3 MLOAD PUSH1 0xA0 PUSH1 0x60 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD SWAP1 PUSH2 0x11C9 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP6 DUP4 SUB ADD PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x11C9 JUMP JUMPDEST SWAP1 PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP5 DUP3 SUB ADD PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x20 DUP1 DUP5 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP4 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x877 JUMPI POP POP POP SWAP1 PUSH1 0x80 PUSH2 0x461 SWAP3 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 DUP5 DUP4 SUB ADD PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x11C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH1 0x40 DUP4 ADD MSTORE SUB SWAP1 PUSH2 0x4B1 PUSH1 0x1F NOT SWAP3 DUP4 DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x120A JUMP JUMPDEST PUSH2 0x4E1 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH1 0x20 DUP1 DUP3 ADD SWAP5 PUSH2 0x4C8 DUP7 PUSH2 0x136F JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB SWAP1 DUP2 ADD DUP5 MSTORE DUP4 PUSH2 0x120A JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x164 CALLDATALOAD PUSH2 0x15FC JUMP JUMPDEST SWAP1 DUP3 MLOAD ISZERO PUSH2 0x84F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 MLOAD SWAP1 PUSH0 CREATE2 AND SWAP4 DUP5 ISZERO PUSH2 0x827 JUMPI PUSH2 0x51F PUSH2 0x15C8 JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x1 PUSH1 0xFF NOT DUP3 SLOAD AND OR SWAP1 SSTORE PUSH1 0x1 SLOAD PUSH9 0x10000000000000000 DUP2 LT ISZERO PUSH2 0x73F JUMPI DUP1 PUSH1 0x1 PUSH2 0x559 SWAP3 ADD PUSH1 0x1 SSTORE PUSH2 0x1408 JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP6 DUP6 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC PUSH0 DUP1 LOG2 PUSH2 0x5B0 PUSH2 0x1591 JUMP JUMPDEST SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EXTCODESIZE ISZERO PUSH2 0x823 JUMPI SWAP1 DUP8 SWAP5 SWAP6 SWAP4 SWAP3 SWAP2 PUSH32 0xEEEC802F00000000000000000000000000000000000000000000000000000000 DUP7 MSTORE PUSH2 0x1A4 DUP7 ADD SWAP1 DUP9 PUSH1 0x4 DUP9 ADD MSTORE PUSH2 0x1A0 PUSH1 0x24 DUP9 ADD MSTORE MLOAD DUP1 SWAP2 MSTORE PUSH2 0x1C4 DUP7 ADD SWAP5 SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x777 JUMPI POP POP POP SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 SWAP5 SWAP4 DUP2 PUSH1 0x40 PUSH2 0x6D3 SWAP6 PUSH4 0xFFFFFFFF PUSH0 SWAP12 PUSH1 0xE4 CALLDATALOAD PUSH1 0x44 DUP13 ADD MSTORE AND PUSH1 0x64 DUP11 ADD MSTORE DUP11 PUSH1 0x84 DUP11 ADD MSTORE DUP3 DUP2 MLOAD AND PUSH1 0xA4 DUP11 ADD MSTORE DUP3 PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0xC4 DUP11 ADD MSTORE ADD MLOAD AND PUSH1 0xE4 DUP8 ADD MSTORE AND PUSH2 0x104 DUP6 ADD MSTORE PUSH2 0x124 DUP5 ADD SWAP1 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST SUB DUP2 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0x76C JUMPI PUSH2 0x725 JUMPI JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x73F JUMPI PUSH1 0x20 SWAP2 PUSH1 0x40 MSTORE PUSH2 0x71A JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP2 DUP1 SWAP9 SWAP8 POP SWAP6 SWAP1 SWAP3 SWAP4 SWAP5 SWAP6 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 MLOAD AND DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x7F6 JUMPI DUP3 PUSH1 0x60 PUSH1 0x80 SWAP3 PUSH1 0x20 SWAP5 DUP6 PUSH1 0x1 SWAP8 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP2 ADD SWAP2 DUP10 SWAP7 SWAP8 SWAP6 SWAP5 SWAP4 SWAP3 PUSH2 0x639 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH32 0x741752C200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x4CA249DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 MLOAD DUP6 MSTORE DUP7 SWAP6 POP PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x41F JUMP JUMPDEST POP SWAP1 PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x8D3 JUMPI POP POP SWAP1 PUSH1 0x20 PUSH2 0x376 SWAP3 DUP3 ADD ADD PUSH2 0x36A JUMP JUMPDEST PUSH1 0x20 SWAP2 SWAP4 POP DUP1 PUSH1 0x1 SWAP2 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP2 DUP4 SWAP3 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x20 SWAP3 POP PUSH2 0x376 SWAP5 SWAP2 POP PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH2 0x36A JUMP JUMPDEST PUSH32 0x61EE176400000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F1 JUMP JUMPDEST PUSH1 0x80 DUP4 CALLDATASIZE SUB SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x95D DUP3 PUSH2 0x11EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 CALLDATALOAD DUP2 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI DUP4 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x823 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 DUP6 ADD CALLDATALOAD SWAP3 DUP4 ISZERO ISZERO DUP5 SUB PUSH2 0x823 JUMPI PUSH1 0x80 SWAP4 PUSH1 0x20 SWAP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x18F JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH2 0xA3E PUSH2 0x1591 JUMP JUMPDEST PUSH4 0xFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH2 0xA66 PUSH2 0x14E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI PUSH2 0xB39 PUSH1 0x20 SWAP2 PUSH2 0x146A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x20 DUP1 SWAP3 ADD SWAP4 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP3 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xC17 JUMPI PUSH2 0xC13 DUP7 PUSH2 0xC07 DUP2 DUP11 SUB DUP3 PUSH2 0x120A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1273 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST DUP5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP7 ADD SWAP6 SWAP4 DUP4 ADD SWAP4 SWAP1 DUP4 ADD SWAP1 PUSH2 0xBF0 JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 SWAP2 SUB PUSH2 0x823 JUMPI PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0xFF PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD PUSH1 0x4 SLOAD PUSH0 DUP3 PUSH2 0xCAF DUP4 PUSH2 0x131E JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP1 DUP6 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xD4C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xCF1 JUMPI JUMPDEST POP PUSH2 0xCDD SWAP3 POP SUB DUP4 PUSH2 0x120A JUMP JUMPDEST PUSH2 0xC13 PUSH1 0x40 MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x11C9 JUMP JUMPDEST DUP5 SWAP2 POP PUSH1 0x4 PUSH0 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP1 PUSH0 SWAP2 JUMPDEST DUP6 DUP4 LT PUSH2 0xD34 JUMPI POP POP PUSH2 0xCDD SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xCD0 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xD1D JUMP JUMPDEST PUSH1 0xFF NOT AND DUP6 DUP3 ADD MSTORE PUSH2 0xCDD SWAP6 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD ADD SWAP3 POP DUP8 SWAP2 POP PUSH2 0xCD0 SWAP1 POP JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x24 DUP1 CALLDATALOAD PUSH1 0x1 SWAP3 PUSH1 0x1 SLOAD DUP1 DUP3 LT ISZERO PUSH2 0xEA2 JUMPI DUP1 PUSH2 0xD9D DUP5 DUP5 PUSH2 0x13FB JUMP JUMPDEST GT PUSH2 0xE61 JUMPI JUMPDEST POP PUSH2 0xDAD DUP3 PUSH2 0x12E2 JUMP JUMPDEST SWAP3 PUSH2 0xDBB PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x120A JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH2 0xDC7 DUP4 PUSH2 0x12E2 JUMP JUMPDEST SWAP2 PUSH1 0x1F NOT PUSH1 0x20 SWAP4 ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0xDEC JUMPI PUSH1 0x40 MLOAD DUP1 PUSH2 0xC13 DUP9 DUP3 PUSH2 0x1273 JUMP JUMPDEST PUSH2 0xDFE PUSH2 0xDF9 DUP3 DUP5 PUSH2 0x13FB JUMP JUMPDEST PUSH2 0x1408 JUMP JUMPDEST SWAP1 SLOAD SWAP1 DUP8 MLOAD DUP4 LT ISZERO PUSH2 0xE35 JUMPI PUSH1 0x3 SHL SHR PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x5 DUP3 SWAP1 SHL DUP8 ADD DUP6 ADD MSTORE DUP7 ADD PUSH2 0xDD7 JUMP JUMPDEST DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH0 REVERT JUMPDEST SWAP1 DUP1 SWAP3 POP DUP2 SUB SWAP1 DUP2 GT PUSH2 0xE75 JUMPI SWAP1 DUP5 PUSH2 0xDA3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH32 0x4E23D03500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH1 0x40 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x823 JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x823 JUMPI PUSH1 0x55 PUSH1 0xB PUSH2 0xF12 PUSH1 0x20 SWAP4 CALLDATASIZE SWAP1 PUSH1 0x24 DUP2 PUSH1 0x4 ADD CALLDATALOAD SWAP2 ADD PUSH2 0x122D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF42 DUP2 DUP7 DUP1 DUP3 ADD SWAP5 PUSH2 0xF27 DUP7 PUSH2 0x136F JUMP JUMPDEST SWAP1 DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD DUP3 MCOPY ADD PUSH0 DUP2 MSTORE SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x120A JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0xF50 PUSH1 0x24 CALLDATALOAD PUSH2 0x15FC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 PUSH1 0x40 DUP4 ADD MSTORE DUP5 DUP3 ADD MSTORE ADDRESS DUP2 MSTORE ADD PUSH1 0xFF DUP2 MSTORE8 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD SWAP2 AND DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x40 MLOAD PUSH1 0x5 SLOAD PUSH0 DUP3 PUSH2 0xFA5 DUP4 PUSH2 0x131E JUMP JUMPDEST SWAP2 DUP3 DUP3 MSTORE PUSH1 0x20 SWAP4 PUSH1 0x1 SWAP1 DUP6 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0xD4C JUMPI POP POP PUSH1 0x1 EQ PUSH2 0xFD2 JUMPI POP PUSH2 0xCDD SWAP3 POP SUB DUP4 PUSH2 0x120A JUMP JUMPDEST DUP5 SWAP2 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 PUSH0 SWAP2 JUMPDEST DUP6 DUP4 LT PUSH2 0x1015 JUMPI POP POP PUSH2 0xCDD SWAP4 POP DUP3 ADD ADD DUP6 PUSH2 0xCD0 JUMP JUMPDEST DUP1 SLOAD DUP4 DUP10 ADD DUP6 ADD MSTORE DUP8 SWAP5 POP DUP7 SWAP4 SWAP1 SWAP3 ADD SWAP2 DUP2 ADD PUSH2 0xFFE JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x1068 SWAP2 AND PUSH2 0x146A JUMP JUMPDEST PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1087 PUSH2 0x14E0 JUMP JUMPDEST AND SWAP2 PUSH1 0x64 PUSH1 0x40 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x9BE2A88400000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x76C JUMPI PUSH0 SWAP2 PUSH2 0x113F JUMPI JUMPDEST POP ISZERO PUSH2 0x1117 JUMPI PUSH2 0x10E4 PUSH2 0x15C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF NOT PUSH1 0x2 SLOAD AND OR PUSH1 0x2 SSTORE PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 PUSH0 DUP1 LOG1 STOP JUMPDEST PUSH32 0x23DADA5300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1172 JUMPI JUMPDEST DUP2 PUSH2 0x115A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x120A JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x823 JUMPI MLOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x823 JUMPI DUP2 PUSH2 0x10D6 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x114D JUMP JUMPDEST CALLVALUE PUSH2 0x823 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x823 JUMPI PUSH1 0x80 PUSH2 0x1194 PUSH2 0x12FA JUMP JUMPDEST PUSH2 0x11C7 PUSH1 0x40 MLOAD DUP1 SWAP3 PUSH1 0x60 DUP1 SWAP2 DUP1 MLOAD ISZERO ISZERO DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x40 DUP6 ADD MSTORE ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1257 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP5 PUSH2 0x120A JUMP JUMPDEST DUP3 SWAP5 DUP2 DUP5 MSTORE DUP2 DUP4 ADD GT PUSH2 0x823 JUMPI DUP3 DUP2 PUSH1 0x20 SWAP4 DUP5 PUSH0 SWAP7 ADD CALLDATACOPY ADD ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP6 MLOAD DUP1 SWAP5 MSTORE ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x129A JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x128C JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x823 JUMPI DUP2 PUSH1 0x20 PUSH2 0x12DF SWAP4 CALLDATALOAD SWAP2 ADD PUSH2 0x122D JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x73F JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x1307 DUP3 PUSH2 0x11EE JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP4 DUP3 DUP2 MSTORE DUP3 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x1365 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x1338 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x132D JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH0 SWAP3 SWAP2 PUSH2 0x137E DUP3 PUSH2 0x131E JUMP JUMPDEST SWAP2 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x13E8 JUMPI POP PUSH1 0x1 EQ PUSH2 0x1399 JUMPI POP POP POP JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP1 PUSH0 SWAP2 JUMPDEST DUP5 DUP4 LT PUSH2 0x13D5 JUMPI POP POP POP ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP6 DUP8 ADD MSTORE ADD SWAP3 ADD SWAP2 PUSH2 0x13C7 JUMP JUMPDEST PUSH1 0xFF NOT AND DUP4 MSTORE POP POP DUP2 ISZERO ISZERO SWAP1 SWAP2 MUL ADD SWAP2 POP JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0xE75 JUMPI JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x143D JUMPI PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x0 DUP5 MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x73F JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 PUSH1 0x4 DUP2 PUSH32 0x0 DUP6 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x76C JUMPI PUSH0 SWAP3 PUSH2 0x1558 JUMPI POP POP SWAP1 JUMP JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1589 JUMPI JUMPDEST DUP2 PUSH2 0x1574 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x120A JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x823 JUMPI MLOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x823 JUMPI SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1567 JUMP JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF DUP2 AND TIMESTAMP LT ISZERO PUSH2 0x15C3 JUMPI SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 JUMP JUMPDEST PUSH1 0xFF PUSH1 0x2 SLOAD AND PUSH2 0x15D4 JUMPI JUMP JUMPDEST PUSH32 0x75884CDA00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP2 CALLER DUP4 MSTORE CHAINID PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 DUP2 MSTORE PUSH2 0x161F DUP2 PUSH2 0x11EE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL ADD 0x27 0xD2 ORIGIN 0xF8 0xD9 ADDMOD 0x27 EXTCODECOPY ORIGIN 0x4B DUP14 0xB4 0xEC DUP14 EXP 0xA7 0xDB SELFDESTRUCT DUP8 0xA7 0xE5 PUSH3 0x7774E2 SWAP10 0xDC PUSH9 0xF47664736F6C634300 ADDMOD BYTE STOP CALLER ","sourceMap":"791:2984:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2662:101;;791:2984;;:::i;:::-;;;;;2863:34;;791:2984;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3181:261;;791:2984;;3181:261;;791:2984;;3181:261;;791:2984;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3181:261;;791:2984;;;3153:331;;791:2984;;3153:331;;791:2984;;;;;;;;;;;;;;;:::i;:::-;;3181:261;;791:2984;;;;;;;;;;;:::i;:::-;3181:261;791:2984;3181:261;;791:2984;;;;;;3181:261;;791:2984;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3181:261;;;;791:2984;;3181:261;;791:2984;;;;;;;;;;;:::i;:::-;;1216:6:63;791:2984:115;;;;;3153:331;;;-1:-1:-1;;3153:331:115;;;;;;;;:::i;:::-;6297:48:33;791:2984:115;;6297:48:33;;791:2984:115;6297:48:33;;;791:2984:115;;;;:::i;:::-;;;;3153:331;;;;791:2984;;;;;;6297:48:33;;;;;;;;:::i;:::-;6375:23;791:2984:115;;6375:23:33;:::i;:::-;791:2984:115;;;1662:20:100;1658:80;;791:2984:115;1790:100:100;;;791:2984:115;1790:100:100;791:2984:115;1903:18:100;;;1899:81;;5469:200:33;;:::i;:::-;791:2984:115;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6314:13:33;791:2984:115;;;;;;;;;;;;;;;5645:17:33;;;791:2984:115;5645:17:33;;6937:30;;:::i;:::-;1216:6:63;791:2984:115;1216:6:63;791:2984:115;6831:267:33;;;;;;;;;;;791:2984:115;6831:267:33;;791:2984:115;;;6831:267:33;;791:2984:115;6831:267:33;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:267:33;1216:6:63;;791:2984:115;1216:6:63;791:2984:115;6831:267:33;;;;;;;;791:2984:115;;;;;;;;;6831:267:33;791:2984:115;;;;;;;;;6831:267:33;;791:2984:115;;;;;;;;;;6831:267:33;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6831:267:33;791:2984:115;;;1899:81:100;1944:25;791:2984:115;1944:25:100;791:2984:115;;1944:25:100;1658:80;1705:22;791:2984:115;1705:22:100;791:2984:115;;1705:22:100;791:2984:115;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;2662:101;2727:25;791:2984;2727:25;791:2984;;2727:25;791:2984;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;2369:24:39;791:2984:115;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;3846:6:33;791:2984:115;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;1216:6:63;791:2984:115;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;2073:20:39;791:2984:115;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;4726:9:33;791:2984:115;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;3987:6:33;791:2984:115;3987:6:33;791:2984:115;;;;;;;;;;3987:6:33;791:2984:115;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;-1:-1:-1;791:2984:115;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;4199:15:33;;;;4195:71;;4386:13;;;;;:::i;:::-;4413:12;4409:65;;791:2984:115;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;-1:-1:-1;;791:2984:115;;;;;;;;;4542:9:33;;;;;;791:2984:115;;;;;;;:::i;4553:3:33:-;4583:17;4590:9;;;;:::i;:::-;4583:17;:::i;:::-;791:2984:115;;;;;;;;;;;;;;;;;;;;;;;;;;4527:13:33;;791:2984:115;;;;;;;;;;4409:65:33;791:2984:115;;;;;;;;;;;4409:65:33;;;;791:2984:115;;;;;;;;;;4195:71:33;4237:18;791:2984:115;4237:18:33;791:2984:115;;4237:18:33;791:2984:115;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;;;;2766:1598:100;;791:2984:115;;;;;;;;;;;;;:::i;:::-;;;4927:48:33;;;;;;791:2984:115;;;;:::i;:::-;;;;;;;;;;;;;;4927:48:33;-1:-1:-1;;4927:48:33;;;;;;:::i;:::-;791:2984:115;5012:23:33;;5065;791:2984:115;;5065:23:33;:::i;:::-;791:2984:115;2766:1598:100;;791:2984:115;2766:1598:100;;;;;;;2342:4;2766:1598;;;;;;;791:2984:115;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;1356:12;791:2984;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1356:12;791:2984;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;1774:7:35;1762:20;1774:7;;1762:20;:::i;:::-;1592:60:63;791:2984:115;1592:15:63;;:::i;:::-;791:2984:115;;;;;1592:60:63;;;;791:2984:115;1592:60:63;;791:2984:115;1592:60:63;;791:2984:115;1820:10:35;791:2984:115;;;;1646:4:63;791:2984:115;;;;1592:60:63;;;;;;;791:2984:115;1592:60:63;;;791:2984:115;1797:34:35;;1793:90;;5207:134:33;;:::i;:::-;5297:4;-1:-1:-1;;5285:16:33;791:2984:115;;;5285:16:33;791:2984:115;5317:17:33;791:2984:115;5317:17:33;;791:2984:115;1793:90:35;1854:18;791:2984:115;1854:18:35;791:2984:115;;1854:18:35;1592:60:63;;;;;;;;;;;;;;;;;:::i;:::-;;;791:2984:115;;;;;;;;;;;;1592:60:63;;;;;;-1:-1:-1;1592:60:63;;791:2984:115;;;;;-1:-1:-1;;791:2984:115;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;791:2984:115;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;791:2984:115;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;791:2984:115;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;4944:13:33;791:2984:115;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;4944:13:33;-1:-1:-1;791:2984:115;;;-1:-1:-1;791:2984:115;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;791:2984:115;;;-1:-1:-1;;791:2984:115;;;;;;;;-1:-1:-1;791:2984:115:o;:::-;;;;;;;;;;:::o;:::-;4172:6:33;791:2984:115;;;;;;4172:6:33;-1:-1:-1;791:2984:115;;;;-1:-1:-1;791:2984:115;:::o;:::-;;;;;;;;;;1931:430:35;791:2984:115;;;2303:50:35;;;2320:22;;791:2984:115;;;;;;;2303:50:35;;;791:2984:115;;;;;;;;;;;;;;;2293:61:35;;1931:430;:::o;1366:109:63:-;791:2984:115;;;1442:26:63;;791:2984:115;1442:26:63;791:2984:115;1442:26:63;791:2984:115;1216:6:63;791:2984:115;;1442:26:63;;;;;;;;;;;1435:33;;1366:109;:::o;1442:26::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;791:2984:115;;;;;;;;;;;;1366:109:63;:::o;1442:26::-;;;-1:-1:-1;1442:26:63;;2922:332:39;3191:24;791:2984:115;;;3173:15:39;:42;791:2984:115;;;2922:332:39;:::o;3172:75::-;;-1:-1:-1;2922:332:39;:::o;5347:116:33:-;791:2984:115;4726:9:33;791:2984:115;;5397:60:33;;5347:116::o;5397:60::-;5436:10;-1:-1:-1;5436:10:33;;-1:-1:-1;5436:10:33;6001:159;791:2984:115;;6109:43:33;;;6120:10;;791:2984:115;;6132:13:33;791:2984:115;;;;;;;;;6109:43:33;;;;;:::i;:::-;791:2984:115;6099:54:33;;6001:159;:::o"},"methodIdentifiers":{"create(string,string,(address,uint8,address,bool)[],uint256[],(address,address,address),uint256,address,bool,bool,bytes32)":"fed4cdda","disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDefaultLiquidityManagement()":"193ad50f","getDefaultPoolHooksContract()":"ec888061","getDeploymentAddress(bytes,bytes32)":"44f6fec7","getNewPoolPauseWindowEndTime()":"db035ebc","getOriginalPauseWindowEndTime()":"e9d56e19","getPauseWindowDuration()":"78da80cb","getPoolCount()":"8eec5d70","getPoolVersion()":"3f819b6f","getPools()":"673a2a1f","getPoolsInRange(uint256,uint256)":"53a72f7e","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowDuration\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"factoryVersion\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"poolVersion\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Create2EmptyBytecode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Create2FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"Create2InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Disabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolPauseWindowDurationOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SenderNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StandardPoolWithCreator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enum TokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contract IRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"struct TokenConfig[]\",\"name\":\"tokens\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"struct PoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"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\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultLiquidityManagement\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"internalType\":\"struct LiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultPoolHooksContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"constructorArgs\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeploymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNewPoolPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOriginalPauseWindowEndTime\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPauseWindowDuration\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPoolsInRange\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the most general factory, which allows up to eight tokens and arbitrary weights.\",\"errors\":{\"Create2EmptyBytecode()\":[{\"details\":\"There's no code to deploy.\"}],\"Create2FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"Create2InsufficientBalance(uint256,uint256)\":[{\"details\":\"Not enough balance for performing a CREATE2 deploy.\"}]},\"events\":{\"PoolCreated(address)\":{\"params\":{\"pool\":\"The address of the new pool\"}}},\"kind\":\"dev\",\"methods\":{\"create(string,string,(address,uint8,address,bool)[],uint256[],(address,address,address),uint256,address,bool,bool,bytes32)\":{\"details\":\"Tokens must be sorted for pool registration.\",\"params\":{\"disableUnbalancedLiquidity\":\"If true, only proportional add and remove liquidity are accepted\",\"enableDonation\":\"If true, the pool will support the donation add liquidity mechanism\",\"name\":\"The name of the pool\",\"normalizedWeights\":\"The pool weights (must add to FixedPoint.ONE)\",\"poolHooksContract\":\"Contract that implements the hooks for the pool\",\"roleAccounts\":\"Addresses the Vault will allow to change certain pool settings\",\"salt\":\"The salt value that will be passed to create2 deployment\",\"swapFeePercentage\":\"Initial swap fee percentage\",\"symbol\":\"The symbol of the pool\",\"tokens\":\"An array of descriptors for the tokens the pool will manage\"}},\"disable()\":{\"details\":\"Existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"params\":{\"selector\":\"The 4-byte selector of the permissioned function\"},\"returns\":{\"_0\":\"The computed actionId\"}},\"getAuthorizer()\":{\"returns\":{\"_0\":\"authorizer An interface pointer to the Authorizer\"}},\"getDefaultLiquidityManagement()\":{\"details\":\"Users can call this to create a structure with all false arguments, then set the ones they need to true.\",\"returns\":{\"liquidityManagement\":\"Liquidity management flags, all initialized to false\"}},\"getDeploymentAddress(bytes,bytes32)\":{\"params\":{\"constructorArgs\":\"The arguments used to create the pool\",\"salt\":\"The salt used to deploy the pool\"},\"returns\":{\"_0\":\"The predicted address of the pool, given the salt\"}},\"getNewPoolPauseWindowEndTime()\":{\"details\":\"We intend for all pools deployed by this factory to have the same pause window end time (i.e., after this date, all future pools will be unpausable). This function will return `_poolsPauseWindowEndTime` until it passes, after which it will return 0.\",\"returns\":{\"_0\":\"pauseWindowEndTime The resolved pause window end time (0 indicating it's no longer pausable)\"}},\"getOriginalPauseWindowEndTime()\":{\"returns\":{\"_0\":\"pauseWindowEndTime The end time as a timestamp\"}},\"getPauseWindowDuration()\":{\"returns\":{\"_0\":\"pauseWindowDuration The duration in seconds\"}},\"getPoolCount()\":{\"details\":\"This can then be used to \\\"paginate\\\" calls to `getPools` to control gas costs.\",\"returns\":{\"_0\":\"The number of pools deployed by this factory\"}},\"getPoolVersion()\":{\"details\":\"This is typically only useful in complex Pool deployment schemes, where multiple subsystems need to know about each other. Note that this value will only be set at factory creation time.\",\"returns\":{\"_0\":\"A string representation of the pool version\"}},\"getPools()\":{\"returns\":{\"_0\":\"The list of pools deployed by this factory\"}},\"getPoolsInRange(uint256,uint256)\":{\"details\":\"`start` must be a valid index, but if `count` exceeds the total length, it will not revert, but simply stop at the end and return fewer results than requested.\",\"params\":{\"count\":\"The maximum number of pools to return\",\"start\":\"The index of the first pool to return\"},\"returns\":{\"pools\":\"The list of pools deployed by this factory, starting at `start` and returning up to `count` pools\"}},\"getVault()\":{\"returns\":{\"_0\":\"vault An interface pointer to the Vault\"}},\"isDisabled()\":{\"returns\":{\"_0\":\"True if this factory was disabled\"}},\"isPoolFromFactory(address)\":{\"params\":{\"pool\":\"The pool to check\"},\"returns\":{\"_0\":\"True if `pool` was created by this factory\"}},\"version()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Disabled()\":[{\"notice\":\"Attempted pool creation after the factory was disabled.\"}],\"IndexOutOfBounds()\":[{\"notice\":\"A pool index is beyond the current bounds of the array.\"}],\"PoolPauseWindowDurationOverflow()\":[{\"notice\":\"The factory deployer gave a duration that would overflow the Unix timestamp.\"}],\"SenderNotAllowed()\":[{\"notice\":\"The sender does not have permission to call a function.\"}],\"StandardPoolWithCreator()\":[{\"notice\":\"A pool creator was specified for a pool from a Balancer core pool type.\"}]},\"events\":{\"FactoryDisabled()\":{\"notice\":\"The factory was disabled by governance.\"},\"PoolCreated(address)\":{\"notice\":\"A pool was deployed.\"}},\"kind\":\"user\",\"methods\":{\"create(string,string,(address,uint8,address,bool)[],uint256[],(address,address,address),uint256,address,bool,bool,bytes32)\":{\"notice\":\"Deploys a new `WeightedPool`.\"},\"disable()\":{\"notice\":\"Disable the factory, preventing the creation of more pools.\"},\"getActionId(bytes4)\":{\"notice\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"notice\":\"Get the address of the Authorizer.\"},\"getDefaultLiquidityManagement()\":{\"notice\":\"Convenience function for constructing a LiquidityManagement object.\"},\"getDefaultPoolHooksContract()\":{\"notice\":\"A common place to retrieve a default hooks contract. Currently set to address(0) (i.e. no hooks).\"},\"getDeploymentAddress(bytes,bytes32)\":{\"notice\":\"Return the address where a new pool will be deployed, based on the factory address and salt.\"},\"getNewPoolPauseWindowEndTime()\":{\"notice\":\"Returns the current pauseWindowEndTime that will be applied to Pools created by this factory.\"},\"getOriginalPauseWindowEndTime()\":{\"notice\":\"Returns the original factory pauseWindowEndTime, regardless of the current time.\"},\"getPauseWindowDuration()\":{\"notice\":\"Return the pause window duration. This is the time pools will be pausable after factory deployment.\"},\"getPoolCount()\":{\"notice\":\"Return the total number of pools deployed by this factory.\"},\"getPoolVersion()\":{\"notice\":\"Returns a JSON representation of the deployed pool version containing name, version number and task ID.\"},\"getPools()\":{\"notice\":\"Return the complete list of pools deployed by this factory.\"},\"getPoolsInRange(uint256,uint256)\":{\"notice\":\"Return a subset of the list of pools deployed by this factory.\"},\"getVault()\":{\"notice\":\"Get the address of the Balancer Vault.\"},\"isDisabled()\":{\"notice\":\"Check whether this factory has been disabled by governance.\"},\"isPoolFromFactory(address)\":{\"notice\":\"Check whether a pool was deployed by this factory.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"notice\":\"General Weighted Pool factory\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/WeightedPoolFactory.sol\":\"WeightedPoolFactory\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol\":{\"keccak256\":\"0x4dbf765d0fba4be1552aa5309aadee71929f74a84818cd453bb23f873ca91bd7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://65c241e3f125e87cea6cad51b075c6d821ba89e45756d8a57590a1f0c6b0d409\",\"dweb:/ipfs/Qmdhs7Fri1yfaRN4S5mPbr76ytv4EhxDntWeYw6mspw1Xq\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IPoolVersion.sol\":{\"keccak256\":\"0xb97e44d4ebd74212195ebf10dc94cd46929e4c3dd217215945d164f02426891f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cdc1656abb0e6c82640d17e2752684cce674cdd54665e01491c2b3ccb74c5d8f\",\"dweb:/ipfs/QmfFr81CMmBJa27uHe4aquqHmU2nXCTpXST1shNq6ik8PA\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePoolFactory.sol\":{\"keccak256\":\"0x6f8c558b0520faae0c4576f30225b5a97821a4cd210878a0ba10c102a2f753f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b40aa7a5ee39fa2e297c684fd29ad45d866f1fc61cd997120a417b02a4d908aa\",\"dweb:/ipfs/QmYP5pQAF7SDLgy3aerqfnc4VwdmfQix2jcQUNL3o83BY9\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/BasePoolFactory.sol\":{\"keccak256\":\"0x5888b7317d6a8f91a7665922da7e1e00ee8ef47f6690d4bd7f44d37888e21848\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://00b22e2600301568c628a652fcc8f5d79145218feab59a8963dfe300763d8763\",\"dweb:/ipfs/QmNt2BgJYNL7ywhNvR42NneXDYQ7xRyTaTunfgJ2cCVQFR\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x807237870f3aaa26cd815c5f600c1d0c60861a2f962fcc341d4b80942288ab52\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://90f108409488d0c38147d2ac7b9facd694dbf1001c501136a249091788c22232\",\"dweb:/ipfs/QmRCaCCGcuL4kxBEbrpq6FfENBJk4Zo8CNe8TRusatuYJ6\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/FactoryWidePauseWindow.sol\":{\"keccak256\":\"0x9594d2dc75aa8c92bb39d30cd76d3bfbb203fe17c4ae35b6f8d882ed4ac868d4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1a43d706d34c9f071bed27372100fedaeb12ec4c5c3529e150c8684444c4a619\",\"dweb:/ipfs/QmYUnJ2CtjJY2XktSzamExryTNbAYjesnymMpqTvQuXUka\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":{\"keccak256\":\"0xb31be209c69a6e60f4486b793bfc57b3ab7aa25efd29f40e981d5b9c95196f7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://04a10cf9c7a408f0d617d8f25dedd1d4d8d0411ac022b26293b39fccfbf41c71\",\"dweb:/ipfs/QmaExV5EYT4dtE9EAybKaraqXnbpM4usyAfFV5DHfatkof\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/SingletonAuthentication.sol\":{\"keccak256\":\"0x67518bf3b6bd96f5897c56867fc57f3c31bb9b97abf93cf960de145a5eb82414\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://563857d8606cbd4f727c75f09901d09ec9faa73778fe85e2af851982cdb9b6e8\",\"dweb:/ipfs/QmU7x1gWCPGPAcxA8Qq3z8hscrGRFwsc28qad4RMihZ8qB\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0x2b9807d194b92f1068d868e9587d27037264a9a067c778486f86ae21c61cbd5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22d71f40aa38a20cf466d8647452a6e3f746353474f8c8af40f03aa8cae38420\",\"dweb:/ipfs/QmQ752Hz5av7YDK8pFojzb5qgeXQvfsdkdwkHVzaXoYAZR\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/WeightedPool.sol\":{\"keccak256\":\"0x6f31c5cde7725828cd8dae2a9d79efb8980ab5e5b192ec1073aac995a741f2fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64de9af946ef860d74237133bd560e6bbad8921ede3a46ba01466cf38f8be036\",\"dweb:/ipfs/Qmc6qAAmJ6qLYRWXNTafJ1ivo48yNVJntAXf7X4LYwySWb\"]},\"contracts/WeightedPoolFactory.sol\":{\"keccak256\":\"0x43d8bcdc3933bc78bd597e55d50b91ace36733073605993ace437b2211a32dcb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a8e35026e5754c7303b9c2d91ddc840900f6d5ae6e3d07216608daae199d4906\",\"dweb:/ipfs/QmckHd4EYUK1ugMca3e4EZ6E7taxyupyY8ZjQAqk1uEhFx\"]}},\"version\":1}"}},"contracts/test/WeightedBasePoolMathMock.sol":{"WeightedBasePoolMathMock":{"abi":[{"inputs":[{"internalType":"uint256[]","name":"_weights","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BaseOutOfBounds","type":"error"},{"inputs":[],"name":"ExponentOutOfBounds","type":"error"},{"inputs":[],"name":"InvalidExponent","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"maxInvariantRatio","type":"uint256"}],"name":"InvariantRatioAboveMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"invariantRatio","type":"uint256"},{"internalType":"uint256","name":"minInvariantRatio","type":"uint256"}],"name":"InvariantRatioBelowMin","type":"error"},{"inputs":[],"name":"ProductOutOfBounds","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"inputs":[],"name":"ZeroInvariant","type":"error"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256","name":"tokenInIndex","type":"uint256"},{"internalType":"uint256","name":"exactBptAmountOut","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeAddLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"amountInWithFee","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256[]","name":"exactAmounts","type":"uint256[]"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeAddLiquidityUnbalanced","outputs":[{"internalType":"uint256","name":"bptAmountOut","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","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[]"},{"internalType":"enum Rounding","name":"rounding","type":"uint8"}],"name":"computeInvariant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"bptTotalSupply","type":"uint256"},{"internalType":"uint256","name":"bptAmountOut","type":"uint256"}],"name":"computeProportionalAmountsIn","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"bptTotalSupply","type":"uint256"},{"internalType":"uint256","name":"bptAmountIn","type":"uint256"}],"name":"computeProportionalAmountsOut","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256","name":"tokenOutIndex","type":"uint256"},{"internalType":"uint256","name":"exactBptAmountIn","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeRemoveLiquiditySingleTokenExactIn","outputs":[{"internalType":"uint256","name":"amountOutWithFee","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"currentBalances","type":"uint256[]"},{"internalType":"uint256","name":"tokenOutIndex","type":"uint256"},{"internalType":"uint256","name":"exactAmountOut","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"swapFeePercentage","type":"uint256"}],"name":"computeRemoveLiquiditySingleTokenExactOut","outputs":[{"internalType":"uint256","name":"bptAmountIn","type":"uint256"},{"internalType":"uint256[]","name":"swapFeeAmounts","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":[{"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":"","type":"tuple"}],"name":"onSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"weights","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"allocate_memory":{"entryPoint":299,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"60806040523461012757611fab803803806100198161012b565b92833981019060209182828203126101275781516001600160401b039283821161012757019080601f8301121561012757815190838211610104578160051b928561006581860161012b565b80948152018681958301019283116101275786809201905b83821061011857505050505191821161010457680100000000000000008211610104575f54825f558083106100df575b505f8052825f20925f5b8381106100cd57604051611e5a90816101518239f35b825185820155918101916001016100b7565b5f805282845f2091820191015b8181106100f957506100ad565b5f81556001016100ec565b634e487b7160e01b5f52604160045260245ffd5b8151815290820190820161007d565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176101045760405256fe604060808152600480361015610013575f80fd5b5f3560e01c90816316a0b3e014610b46578163273c1adf14610b225781633ab0591514610a1a578163654cf15d146109f857816372c981861461096b57816385d5261a14610830578163984de9e8146107df5781639a87ffbf1461052d578163b5f163ff146104f6578163b677fa56146104a0578163c548e4d8146104a5578163ce20ece7146104a0578163d9c7cc7a1461012c575063da317980146100b7575f80fd5b34610128576100c536610d5f565b6100d28392949351611096565b915f5b815181101561010f57806100fe876100f9866100f360019688610e80565b51611109565b61111c565b6101088287610e80565b52016100d5565b84516020808252819061012490820187610dd3565b0390f35b5f80fd5b82346101285760806003193601126101285767ffffffffffffffff9180358381116101285761015e9036908301610cff565b92602490602435908111610128576101799036908401610cff565b6064359285519561018987611096565b9261019388611096565b945f5b8981106104365750505085519687957f984de9e8000000000000000000000000000000000000000000000000000000009283885288858901526101dc6044890182610dd3565b5f60248a01528860209b8c920381305afa97881561042c575f986103fd575b508851908482528a82806102118a8a8301611153565b0381305afa9182156103f3575f926103c4575b50670de0b6b3a7640000918281029080820484149015171561039857906102518a8d98979695949361111c565b9061025c8230611368565b5f5b8581106102f95750505050505061027e8751948593849384528301611153565b0381305afa9081156102ef575f916102c2575b50826100f96102a6610124956102ae9461103a565b604435611109565b928080519586958652850152830190610dd3565b90508481813d83116102e8575b6102d98183610c79565b81010312610128575182610291565b503d6102cf565b84513d5f823e3d90fd5b84849596979899508b8b8385969761031d61031683600199610e80565b518a611109565b04806103298385610e80565b5111610344575b505050505001908c9796959493929161025e565b8183610365610383976103759461035e8561037c99610e80565b51036111fe565b61036f8388610e80565b52610e80565b5192610e80565b519061103a565b61038d828c610e80565b52858b8b835f610330565b6011877f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b9091508a81813d83116103ec575b6103dc8183610c79565b810103126101285751908b610224565b503d6103d2565b8a513d5f823e3d90fd5b9097508981813d8311610425575b6104158183610c79565b810103126101285751968a6101fb565b503d61040b565b89513d5f823e3d90fd5b6104556104438286610e80565b5161044e8386610e80565b51906110e5565b5f198101908111610475579060019161046e8289610e80565b5201610196565b826011877f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b610e66565b8234610128576104b436610d5f565b6104c18392949351611096565b915f5b815181101561010f57806104e587856104df60019587610e80565b51611348565b6104ef8287610e80565b52016104c4565b9050346101285760206003193601126101285735905f548210156101285761051f602092610e06565b91905490519160031b1c8152f35b82346101285761053c36610d95565b9184519461054986611096565b915f5b8781106107885750610568906105628785610e80565b5161103a565b6105728684610e80565b5286519788947f984de9e8000000000000000000000000000000000000000000000000000000009283875289838801526105af6044880182610dd3565b5f60248901528760209c8d920381305afa9687156103f3575f97610759575b5089518481528a848201528b81806105e9604482018a610dd3565b5f60248301520381305afa90811561074f57888d959493928b925f91610712575b50610663949361063761065e946106276106489561063e956112ef565b926106328430611220565b610e80565b51906111fe565b61037c8c8a610e80565b91670de0b6b3a7640000818103911002826112ef565b61103a565b92610672846105628a88610e80565b61067c8987610e80565b526106908a51958693849384528301611153565b0381305afa918215610708575f926106d1575b506102ae9392916106cb916106c46106bd61012499611096565b9788610e80565b528361103a565b90611348565b90939291508781813d8311610701575b6106eb8183610c79565b81010312610128575191929091906101246106a3565b503d6106e1565b87513d5f823e3d90fd5b969250505084819392933d8311610748575b61072e8183610c79565b810103126101285792518b9391908990899061066361060a565b503d610724565b8b513d5f823e3d90fd5b9096508a81813d8311610781575b6107718183610c79565b810103126101285751958b6105ce565b503d610767565b6107928184610e80565b515f1981019081116107b357906001916107ac8287610e80565b520161054c565b60118b7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b90503461012857816003193601126101285780359067ffffffffffffffff82116101285761080f91369101610cff565b906024359160028310156101285760209261082991610f00565b9051908152f35b9050346101285761085590602061084636610d95565b938397828298959793946110e5565b9361089e61086385876112ef565b61086d8130611368565b8b5198899485947f16a0b3e00000000000000000000000000000000000000000000000000000000086528501611074565b0381305afa9182156107085786945f9361092e575b5061090261090b9461065e61064888966108fc8b976100f9610912986108f56101249f6109189f6108e7906108ee92610e80565b518761103a565b9c8c610e80565b5190611109565b9061103a565b93849251611096565b9687610e80565b526110e5565b9183519384938452806020850152830190610dd3565b94509150936020843d602011610963575b8161094c60209383610c79565b8101031261012857925192938593916109026108b3565b3d915061093f565b905034610128576003196020813601126101285781359067ffffffffffffffff82116101285760e0913603011261012857602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b8234610128575f6003193601126101285760209051670de0b6b3a76400008152f35b905034610128576020610a3f91610a3036610d95565b9383978293829795989361103a565b93610a88610a4d85876112ef565b610a578130611220565b8b51998a9485947f16a0b3e00000000000000000000000000000000000000000000000000000000086528501611074565b0381305afa9182156107085786955f93610ae4575b888761012461091861090b838b610ade6109028d610ad98e61065e8f8f610ad2610acb856105628d8d610e80565b9a8a610e80565b5190611348565b6111fe565b5261103a565b9491925094506020843d602011610b1a575b81610b0360209383610c79565b810103126101285792518594909190610902610a9d565b3d9150610af6565b8234610128575f600319360112610128576020905169d3c21bcecceda10000008152f35b90503461012857610b6891610b6f610b5d36610d5f565b929190809691610e80565b5194610e06565b90549060031b1c600182115f14610c725760025b80600114610c1957600214610bbe576051847f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b9091928115610bf3575092610bed6108299260016020966ec097ce7bc90715b34b9f0fffffffff040190611170565b906111fe565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b509091928115610c46575092610bed610829926020956ec097ce7bc90715b34b9f10000000000490611170565b6012907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6001610b83565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610cba57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff8111610cba5760051b60200190565b9080601f83011215610128576020908235610d1981610ce7565b93610d276040519586610c79565b81855260208086019260051b82010192831161012857602001905b828210610d50575050505090565b81358152908301908301610d42565b6060600319820112610128576004359067ffffffffffffffff821161012857610d8a91600401610cff565b906024359060443590565b60a0600319820112610128576004359067ffffffffffffffff821161012857610dc091600401610cff565b9060243590604435906064359060843590565b9081518082526020808093019301915f5b828110610df2575050505090565b835185529381019392810192600101610de4565b5f54811015610e39575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b34610128575f6003193601126101285760206040515f8152f35b8051821015610e395760209160051b010190565b604051905f548083528260209160208201905f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f905b828210610ee657505050610ee492500383610c79565b565b855484526001958601958895509381019390910190610ece565b90600281101561100d576001908103610faf5780610f1c610e94565b670de0b6b3a7640000935f935b610f63575b505050508015610f3b5790565b7f26543689000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151841015610faa5782670de0b6b3a7640000610fa18697610f9b610f89859987610e80565b51610f948b89610e80565b519061142c565b90611109565b04950193610f29565b610f2e565b80610fb8610e94565b670de0b6b3a7640000935f935b610fd657505050508015610f3b5790565b8151841015610faa57826110058596610bed610ff3849886610e80565b51610ffe8a88610e80565b5190611170565b950193610fc5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9190820391821161104757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61108c60409295949395606083526060830190610dd3565b9460208201520152565b906110a082610ce7565b6110ad6040519182610c79565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110db8294610ce7565b0190602036910137565b9190820180921161104757565b906127109182810292818404149015171561104757565b8181029291811591840414171561104757565b8115611126570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190602061116b600192604086526040860190610dd3565b930152565b90670de0b6b3a76400009081810361118757505090565b671bc16d674ec8000081036111a5575050806111a2916111fe565b90565b673782dace9d90000081036111c95750506111c3816111a2926111fe565b806111fe565b6111d391926114ed565b9060016111df836110f2565b915f19830104019015150260018101809111611047576111a2916110e5565b9061120891611109565b6001670de0b6b3a76400005f19830104019015150290565b90602073ffffffffffffffffffffffffffffffffffffffff926004604051809581937fb677fa56000000000000000000000000000000000000000000000000000000008352165afa9182156112e4575f926112b0575b50818110611282575050565b7fe31c95be000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b9091506020813d6020116112dc575b816112cc60209383610c79565b810103126101285751905f611276565b3d91506112bf565b6040513d5f823e3d90fd5b90801561132057670de0b6b3a764000091828102928184041490151715611047576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b82156113205760019161135a91611109565b915f19830104019015150290565b90602073ffffffffffffffffffffffffffffffffffffffff926004604051809581937f273c1adf000000000000000000000000000000000000000000000000000000008352165afa9182156112e4575f926113f8575b508181116113ca575050565b7f3e8960dc000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b9091506020813d602011611424575b8161141460209383610c79565b810103126101285751905f6113be565b3d9150611407565b670de0b6b3a7640000918083036114435750905090565b8290671bc16d674ec8000081036114645750508061146091611109565b0490565b673782dace9d900000810361148857506114818261146093611109565b0480611109565b9050611493916114ed565b61149c816110f2565b60015f19938483010401901515029060018201808311611047578110156114c4575050505f90565b030190565b8015611126576ec097ce7bc90715b34b9f10000000000590565b8115611126570590565b908015611e16578115611e10578160ff1c611de857770bce5086492111aea88f4bb1ca6bcf584181ea8059f76532811015611dc05781670c7d713b49da00001280611daf575b15611a4c57670de0b6b3a7640000916ec097ce7bc90715b34b9f100000000090611586908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f0000000000183026114e3565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580611a39575b15611a11578190821215806119fe575b156119d6575f915f81126119c7575b506064906806f05b59d3b20000008112611964577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac6200000081121561192b575b6856bc75e2d6310000008112156118f1575b682b5e3af16b188000008112156118b9575b6815af1d78b58c400000811215611881575b680ad78ebc5ac620000081121561184a575b82811215611813575b6802b5e3af16b18800008112156117dc575b68015af1d78b58c400008112156117a5575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f146111a2576111a2906114c9565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590611726565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590611714565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590611702565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000849201920205906116f9565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00000849201920205906116e7565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906116d5565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906116c3565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016116b1565b6803782dace9d900000081126119b4577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef73809261169c565b68056bc75e2d631000008260019261169c565b600192505f0390506064611640565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315611631565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315611621565b81670de0b6b3a7640000925f91848112611d99575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c0000000000000821215611d6e575b73011798004d755d3c8bc8e03204cf44619e000000821215611d4d575b820290808302906e01855144814a7ff805980ff00840009081831215611d2a575b50506b02df0ab5a80a22c61ab5a70080821215611d0a575b50693f1fce3da636ea5cf85080821215611cea575b50690127fa27722cc06cc5e280821215611cca575b5068280e60114edb805d0380821215611caa575b50680ebc5fb4174612111080821215611c93575b506808f00f760a4b2db55d80821215611c73575b506806f5f177578893793780821215611c53575b506806248f33704b28660380821215611c34575b506805c548670b9510e7ac80821215611c15575b50611bc268056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000008183019201026114e3565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f14611c10575f035b026115f5565b611c0a565b68056bc75e2d631000006756bc75e2d63100009202059101905f611b86565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f611b72565b68056bc75e2d6310000068015af1d78b58c400009202059101905f611b5e565b68056bc75e2d631000006802b5e3af16b18800009202059101905f611b4a565b68056bc75e2d63100000809202059101905f611b36565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f611b22565b68056bc75e2d631000006815af1d78b58c4000009202059101905f611b0e565b68056bc75e2d63100000682b5e3af16b188000009202059101905f611af9565b68056bc75e2d631000006856bc75e2d6310000009202059101905f611ae4565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f80611acc565b906b1425982cf597cd205cef73806803782dace9d900000091059101611aab565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b2000000611a8e565b9050611da591506114c9565b6001906064611a61565b50670f43fc2c04ee00008212611533565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212200e0101c3e6862722aebf92ebd18c0248b9eebb1954c287ef37fa49952c03bdcd64736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x127 JUMPI PUSH2 0x1FAB DUP1 CODESIZE SUB DUP1 PUSH2 0x19 DUP2 PUSH2 0x12B JUMP JUMPDEST SWAP3 DUP4 CODECOPY DUP2 ADD SWAP1 PUSH1 0x20 SWAP2 DUP3 DUP3 DUP3 SUB SLT PUSH2 0x127 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 DUP4 DUP3 GT PUSH2 0x127 JUMPI ADD SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x127 JUMPI DUP2 MLOAD SWAP1 DUP4 DUP3 GT PUSH2 0x104 JUMPI DUP2 PUSH1 0x5 SHL SWAP3 DUP6 PUSH2 0x65 DUP2 DUP7 ADD PUSH2 0x12B JUMP JUMPDEST DUP1 SWAP5 DUP2 MSTORE ADD DUP7 DUP2 SWAP6 DUP4 ADD ADD SWAP3 DUP4 GT PUSH2 0x127 JUMPI DUP7 DUP1 SWAP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x118 JUMPI POP POP POP POP MLOAD SWAP2 DUP3 GT PUSH2 0x104 JUMPI PUSH9 0x10000000000000000 DUP3 GT PUSH2 0x104 JUMPI PUSH0 SLOAD DUP3 PUSH0 SSTORE DUP1 DUP4 LT PUSH2 0xDF JUMPI JUMPDEST POP PUSH0 DUP1 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xCD JUMPI PUSH1 0x40 MLOAD PUSH2 0x1E5A SWAP1 DUP2 PUSH2 0x151 DUP3 CODECOPY RETURN JUMPDEST DUP3 MLOAD DUP6 DUP3 ADD SSTORE SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xB7 JUMP JUMPDEST PUSH0 DUP1 MSTORE DUP3 DUP5 PUSH0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD JUMPDEST DUP2 DUP2 LT PUSH2 0xF9 JUMPI POP PUSH2 0xAD JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xEC JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP3 ADD SWAP1 DUP3 ADD PUSH2 0x7D JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP2 SWAP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP4 DUP3 LT OR PUSH2 0x104 JUMPI PUSH1 0x40 MSTORE JUMP INVALID PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x16A0B3E0 EQ PUSH2 0xB46 JUMPI DUP2 PUSH4 0x273C1ADF EQ PUSH2 0xB22 JUMPI DUP2 PUSH4 0x3AB05915 EQ PUSH2 0xA1A JUMPI DUP2 PUSH4 0x654CF15D EQ PUSH2 0x9F8 JUMPI DUP2 PUSH4 0x72C98186 EQ PUSH2 0x96B JUMPI DUP2 PUSH4 0x85D5261A EQ PUSH2 0x830 JUMPI DUP2 PUSH4 0x984DE9E8 EQ PUSH2 0x7DF JUMPI DUP2 PUSH4 0x9A87FFBF EQ PUSH2 0x52D JUMPI DUP2 PUSH4 0xB5F163FF EQ PUSH2 0x4F6 JUMPI DUP2 PUSH4 0xB677FA56 EQ PUSH2 0x4A0 JUMPI DUP2 PUSH4 0xC548E4D8 EQ PUSH2 0x4A5 JUMPI DUP2 PUSH4 0xCE20ECE7 EQ PUSH2 0x4A0 JUMPI DUP2 PUSH4 0xD9C7CC7A EQ PUSH2 0x12C JUMPI POP PUSH4 0xDA317980 EQ PUSH2 0xB7 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x128 JUMPI PUSH2 0xC5 CALLDATASIZE PUSH2 0xD5F JUMP JUMPDEST PUSH2 0xD2 DUP4 SWAP3 SWAP5 SWAP4 MLOAD PUSH2 0x1096 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x10F JUMPI DUP1 PUSH2 0xFE DUP8 PUSH2 0xF9 DUP7 PUSH2 0xF3 PUSH1 0x1 SWAP7 DUP9 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x108 DUP3 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0xD5 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x124 SWAP1 DUP3 ADD DUP8 PUSH2 0xDD3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP1 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x128 JUMPI PUSH2 0x15E SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP3 PUSH1 0x24 SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x128 JUMPI PUSH2 0x179 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP3 DUP6 MLOAD SWAP6 PUSH2 0x189 DUP8 PUSH2 0x1096 JUMP JUMPDEST SWAP3 PUSH2 0x193 DUP9 PUSH2 0x1096 JUMP JUMPDEST SWAP5 PUSH0 JUMPDEST DUP10 DUP2 LT PUSH2 0x436 JUMPI POP POP POP DUP6 MLOAD SWAP7 DUP8 SWAP6 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP9 MSTORE DUP9 DUP6 DUP10 ADD MSTORE PUSH2 0x1DC PUSH1 0x44 DUP10 ADD DUP3 PUSH2 0xDD3 JUMP JUMPDEST PUSH0 PUSH1 0x24 DUP11 ADD MSTORE DUP9 PUSH1 0x20 SWAP12 DUP13 SWAP3 SUB DUP2 ADDRESS GAS STATICCALL SWAP8 DUP9 ISZERO PUSH2 0x42C JUMPI PUSH0 SWAP9 PUSH2 0x3FD JUMPI JUMPDEST POP DUP9 MLOAD SWAP1 DUP5 DUP3 MSTORE DUP11 DUP3 DUP1 PUSH2 0x211 DUP11 DUP11 DUP4 ADD PUSH2 0x1153 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3F3 JUMPI PUSH0 SWAP3 PUSH2 0x3C4 JUMPI JUMPDEST POP PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP1 DUP1 DUP3 DIV DUP5 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x398 JUMPI SWAP1 PUSH2 0x251 DUP11 DUP14 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 PUSH2 0x111C JUMP JUMPDEST SWAP1 PUSH2 0x25C DUP3 ADDRESS PUSH2 0x1368 JUMP JUMPDEST PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x2F9 JUMPI POP POP POP POP POP POP PUSH2 0x27E DUP8 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD PUSH2 0x1153 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2EF JUMPI PUSH0 SWAP2 PUSH2 0x2C2 JUMPI JUMPDEST POP DUP3 PUSH2 0xF9 PUSH2 0x2A6 PUSH2 0x124 SWAP6 PUSH2 0x2AE SWAP5 PUSH2 0x103A JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH2 0x1109 JUMP JUMPDEST SWAP3 DUP1 DUP1 MLOAD SWAP6 DUP7 SWAP6 DUP7 MSTORE DUP6 ADD MSTORE DUP4 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP1 POP DUP5 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2E8 JUMPI JUMPDEST PUSH2 0x2D9 DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD DUP3 PUSH2 0x291 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CF JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 DUP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 POP DUP12 DUP12 DUP4 DUP6 SWAP7 SWAP8 PUSH2 0x31D PUSH2 0x316 DUP4 PUSH1 0x1 SWAP10 PUSH2 0xE80 JUMP JUMPDEST MLOAD DUP11 PUSH2 0x1109 JUMP JUMPDEST DIV DUP1 PUSH2 0x329 DUP4 DUP6 PUSH2 0xE80 JUMP JUMPDEST MLOAD GT PUSH2 0x344 JUMPI JUMPDEST POP POP POP POP POP ADD SWAP1 DUP13 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x25E JUMP JUMPDEST DUP2 DUP4 PUSH2 0x365 PUSH2 0x383 SWAP8 PUSH2 0x375 SWAP5 PUSH2 0x35E DUP6 PUSH2 0x37C SWAP10 PUSH2 0xE80 JUMP JUMPDEST MLOAD SUB PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x36F DUP4 DUP9 PUSH2 0xE80 JUMP JUMPDEST MSTORE PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x103A JUMP JUMPDEST PUSH2 0x38D DUP3 DUP13 PUSH2 0xE80 JUMP JUMPDEST MSTORE DUP6 DUP12 DUP12 DUP4 PUSH0 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x11 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3EC JUMPI JUMPDEST PUSH2 0x3DC DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP1 DUP12 PUSH2 0x224 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D2 JUMP JUMPDEST DUP11 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP8 POP DUP10 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x425 JUMPI JUMPDEST PUSH2 0x415 DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP7 DUP11 PUSH2 0x1FB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x40B JUMP JUMPDEST DUP10 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x455 PUSH2 0x443 DUP3 DUP7 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x44E DUP4 DUP7 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x10E5 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x475 JUMPI SWAP1 PUSH1 0x1 SWAP2 PUSH2 0x46E DUP3 DUP10 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0x196 JUMP JUMPDEST DUP3 PUSH1 0x11 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST PUSH2 0xE66 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH2 0x4B4 CALLDATASIZE PUSH2 0xD5F JUMP JUMPDEST PUSH2 0x4C1 DUP4 SWAP3 SWAP5 SWAP4 MLOAD PUSH2 0x1096 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x10F JUMPI DUP1 PUSH2 0x4E5 DUP8 DUP6 PUSH2 0x4DF PUSH1 0x1 SWAP6 DUP8 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x4EF DUP3 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0x4C4 JUMP JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI CALLDATALOAD SWAP1 PUSH0 SLOAD DUP3 LT ISZERO PUSH2 0x128 JUMPI PUSH2 0x51F PUSH1 0x20 SWAP3 PUSH2 0xE06 JUMP JUMPDEST SWAP2 SWAP1 SLOAD SWAP1 MLOAD SWAP2 PUSH1 0x3 SHL SHR DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH2 0x53C CALLDATASIZE PUSH2 0xD95 JUMP JUMPDEST SWAP2 DUP5 MLOAD SWAP5 PUSH2 0x549 DUP7 PUSH2 0x1096 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x788 JUMPI POP PUSH2 0x568 SWAP1 PUSH2 0x562 DUP8 DUP6 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x103A JUMP JUMPDEST PUSH2 0x572 DUP7 DUP5 PUSH2 0xE80 JUMP JUMPDEST MSTORE DUP7 MLOAD SWAP8 DUP9 SWAP5 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP8 MSTORE DUP10 DUP4 DUP9 ADD MSTORE PUSH2 0x5AF PUSH1 0x44 DUP9 ADD DUP3 PUSH2 0xDD3 JUMP JUMPDEST PUSH0 PUSH1 0x24 DUP10 ADD MSTORE DUP8 PUSH1 0x20 SWAP13 DUP14 SWAP3 SUB DUP2 ADDRESS GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x3F3 JUMPI PUSH0 SWAP8 PUSH2 0x759 JUMPI JUMPDEST POP DUP10 MLOAD DUP5 DUP2 MSTORE DUP11 DUP5 DUP3 ADD MSTORE DUP12 DUP2 DUP1 PUSH2 0x5E9 PUSH1 0x44 DUP3 ADD DUP11 PUSH2 0xDD3 JUMP JUMPDEST PUSH0 PUSH1 0x24 DUP4 ADD MSTORE SUB DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x74F JUMPI DUP9 DUP14 SWAP6 SWAP5 SWAP4 SWAP3 DUP12 SWAP3 PUSH0 SWAP2 PUSH2 0x712 JUMPI JUMPDEST POP PUSH2 0x663 SWAP5 SWAP4 PUSH2 0x637 PUSH2 0x65E SWAP5 PUSH2 0x627 PUSH2 0x648 SWAP6 PUSH2 0x63E SWAP6 PUSH2 0x12EF JUMP JUMPDEST SWAP3 PUSH2 0x632 DUP5 ADDRESS PUSH2 0x1220 JUMP JUMPDEST PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x37C DUP13 DUP11 PUSH2 0xE80 JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL DUP3 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x103A JUMP JUMPDEST SWAP3 PUSH2 0x672 DUP5 PUSH2 0x562 DUP11 DUP9 PUSH2 0xE80 JUMP JUMPDEST PUSH2 0x67C DUP10 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE PUSH2 0x690 DUP11 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD PUSH2 0x1153 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x708 JUMPI PUSH0 SWAP3 PUSH2 0x6D1 JUMPI JUMPDEST POP PUSH2 0x2AE SWAP4 SWAP3 SWAP2 PUSH2 0x6CB SWAP2 PUSH2 0x6C4 PUSH2 0x6BD PUSH2 0x124 SWAP10 PUSH2 0x1096 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0xE80 JUMP JUMPDEST MSTORE DUP4 PUSH2 0x103A JUMP JUMPDEST SWAP1 PUSH2 0x1348 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 SWAP2 POP DUP8 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x701 JUMPI JUMPDEST PUSH2 0x6EB DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x124 PUSH2 0x6A3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6E1 JUMP JUMPDEST DUP8 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP7 SWAP3 POP POP POP DUP5 DUP2 SWAP4 SWAP3 SWAP4 RETURNDATASIZE DUP4 GT PUSH2 0x748 JUMPI JUMPDEST PUSH2 0x72E DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI SWAP3 MLOAD DUP12 SWAP4 SWAP2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x663 PUSH2 0x60A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x724 JUMP JUMPDEST DUP12 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP7 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x781 JUMPI JUMPDEST PUSH2 0x771 DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP6 DUP12 PUSH2 0x5CE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x767 JUMP JUMPDEST PUSH2 0x792 DUP2 DUP5 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x7B3 JUMPI SWAP1 PUSH1 0x1 SWAP2 PUSH2 0x7AC DUP3 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0x54C JUMP JUMPDEST PUSH1 0x11 DUP12 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH2 0x80F SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x128 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x829 SWAP2 PUSH2 0xF00 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH2 0x855 SWAP1 PUSH1 0x20 PUSH2 0x846 CALLDATASIZE PUSH2 0xD95 JUMP JUMPDEST SWAP4 DUP4 SWAP8 DUP3 DUP3 SWAP9 SWAP6 SWAP8 SWAP4 SWAP5 PUSH2 0x10E5 JUMP JUMPDEST SWAP4 PUSH2 0x89E PUSH2 0x863 DUP6 DUP8 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x86D DUP2 ADDRESS PUSH2 0x1368 JUMP JUMPDEST DUP12 MLOAD SWAP9 DUP10 SWAP5 DUP6 SWAP5 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH2 0x1074 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x708 JUMPI DUP7 SWAP5 PUSH0 SWAP4 PUSH2 0x92E JUMPI JUMPDEST POP PUSH2 0x902 PUSH2 0x90B SWAP5 PUSH2 0x65E PUSH2 0x648 DUP9 SWAP7 PUSH2 0x8FC DUP12 SWAP8 PUSH2 0xF9 PUSH2 0x912 SWAP9 PUSH2 0x8F5 PUSH2 0x124 SWAP16 PUSH2 0x918 SWAP16 PUSH2 0x8E7 SWAP1 PUSH2 0x8EE SWAP3 PUSH2 0xE80 JUMP JUMPDEST MLOAD DUP8 PUSH2 0x103A JUMP JUMPDEST SWAP13 DUP13 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1109 JUMP JUMPDEST SWAP1 PUSH2 0x103A JUMP JUMPDEST SWAP4 DUP5 SWAP3 MLOAD PUSH2 0x1096 JUMP JUMPDEST SWAP7 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE PUSH2 0x10E5 JUMP JUMPDEST SWAP2 DUP4 MLOAD SWAP4 DUP5 SWAP4 DUP5 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MSTORE DUP4 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP5 POP SWAP2 POP SWAP4 PUSH1 0x20 DUP5 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x963 JUMPI JUMPDEST DUP2 PUSH2 0x94C PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI SWAP3 MLOAD SWAP3 SWAP4 DUP6 SWAP4 SWAP2 PUSH2 0x902 PUSH2 0x8B3 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x93F JUMP JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI DUP2 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH1 0xE0 SWAP2 CALLDATASIZE SUB ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 PUSH1 0x64 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x20 PUSH2 0xA3F SWAP2 PUSH2 0xA30 CALLDATASIZE PUSH2 0xD95 JUMP JUMPDEST SWAP4 DUP4 SWAP8 DUP3 SWAP4 DUP3 SWAP8 SWAP6 SWAP9 SWAP4 PUSH2 0x103A JUMP JUMPDEST SWAP4 PUSH2 0xA88 PUSH2 0xA4D DUP6 DUP8 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0xA57 DUP2 ADDRESS PUSH2 0x1220 JUMP JUMPDEST DUP12 MLOAD SWAP10 DUP11 SWAP5 DUP6 SWAP5 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH2 0x1074 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x708 JUMPI DUP7 SWAP6 PUSH0 SWAP4 PUSH2 0xAE4 JUMPI JUMPDEST DUP9 DUP8 PUSH2 0x124 PUSH2 0x918 PUSH2 0x90B DUP4 DUP12 PUSH2 0xADE PUSH2 0x902 DUP14 PUSH2 0xAD9 DUP15 PUSH2 0x65E DUP16 DUP16 PUSH2 0xAD2 PUSH2 0xACB DUP6 PUSH2 0x562 DUP14 DUP14 PUSH2 0xE80 JUMP JUMPDEST SWAP11 DUP11 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x11FE JUMP JUMPDEST MSTORE PUSH2 0x103A JUMP JUMPDEST SWAP5 SWAP2 SWAP3 POP SWAP5 POP PUSH1 0x20 DUP5 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB1A JUMPI JUMPDEST DUP2 PUSH2 0xB03 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI SWAP3 MLOAD DUP6 SWAP5 SWAP1 SWAP2 SWAP1 PUSH2 0x902 PUSH2 0xA9D JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xAF6 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH10 0xD3C21BCECCEDA1000000 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH2 0xB68 SWAP2 PUSH2 0xB6F PUSH2 0xB5D CALLDATASIZE PUSH2 0xD5F JUMP JUMPDEST SWAP3 SWAP2 SWAP1 DUP1 SWAP7 SWAP2 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP5 PUSH2 0xE06 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0x1 DUP3 GT PUSH0 EQ PUSH2 0xC72 JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x1 EQ PUSH2 0xC19 JUMPI PUSH1 0x2 EQ PUSH2 0xBBE JUMPI PUSH1 0x51 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 DUP2 ISZERO PUSH2 0xBF3 JUMPI POP SWAP3 PUSH2 0xBED PUSH2 0x829 SWAP3 PUSH1 0x1 PUSH1 0x20 SWAP7 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x1170 JUMP JUMPDEST SWAP1 PUSH2 0x11FE JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP1 SWAP2 SWAP3 DUP2 ISZERO PUSH2 0xC46 JUMPI POP SWAP3 PUSH2 0xBED PUSH2 0x829 SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH2 0xB83 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xCBA JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCBA JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x128 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0xD19 DUP2 PUSH2 0xCE7 JUMP JUMPDEST SWAP4 PUSH2 0xD27 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0xC79 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x128 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xD50 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x128 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH2 0xD8A SWAP2 PUSH1 0x4 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x128 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH2 0xDC0 SWAP2 PUSH1 0x4 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x84 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xDF2 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xDE4 JUMP JUMPDEST PUSH0 SLOAD DUP2 LT ISZERO PUSH2 0xE39 JUMPI PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x128 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xE39 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH0 SLOAD DUP1 DUP4 MSTORE DUP3 PUSH1 0x20 SWAP2 PUSH1 0x20 DUP3 ADD SWAP1 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xEE6 JUMPI POP POP POP PUSH2 0xEE4 SWAP3 POP SUB DUP4 PUSH2 0xC79 JUMP JUMPDEST JUMP JUMPDEST DUP6 SLOAD DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xECE JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x100D JUMPI PUSH1 0x1 SWAP1 DUP2 SUB PUSH2 0xFAF JUMPI DUP1 PUSH2 0xF1C PUSH2 0xE94 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0xF63 JUMPI JUMPDEST POP POP POP POP DUP1 ISZERO PUSH2 0xF3B JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0xFAA JUMPI DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0xFA1 DUP7 SWAP8 PUSH2 0xF9B PUSH2 0xF89 DUP6 SWAP10 DUP8 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0xF94 DUP12 DUP10 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x142C JUMP JUMPDEST SWAP1 PUSH2 0x1109 JUMP JUMPDEST DIV SWAP6 ADD SWAP4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xF2E JUMP JUMPDEST DUP1 PUSH2 0xFB8 PUSH2 0xE94 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0xFD6 JUMPI POP POP POP POP DUP1 ISZERO PUSH2 0xF3B JUMPI SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0xFAA JUMPI DUP3 PUSH2 0x1005 DUP6 SWAP7 PUSH2 0xBED PUSH2 0xFF3 DUP5 SWAP9 DUP7 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0xFFE DUP11 DUP9 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1170 JUMP JUMPDEST SWAP6 ADD SWAP4 PUSH2 0xFC5 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1047 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x108C PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x10A0 DUP3 PUSH2 0xCE7 JUMP JUMPDEST PUSH2 0x10AD PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0xC79 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x10DB DUP3 SWAP5 PUSH2 0xCE7 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1047 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1047 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1047 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1126 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x116B PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x1187 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x11A5 JUMPI POP POP DUP1 PUSH2 0x11A2 SWAP2 PUSH2 0x11FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x11C9 JUMPI POP POP PUSH2 0x11C3 DUP2 PUSH2 0x11A2 SWAP3 PUSH2 0x11FE JUMP JUMPDEST DUP1 PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x11D3 SWAP2 SWAP3 PUSH2 0x14ED JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x11DF DUP4 PUSH2 0x10F2 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1047 JUMPI PUSH2 0x11A2 SWAP2 PUSH2 0x10E5 JUMP JUMPDEST SWAP1 PUSH2 0x1208 SWAP2 PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xB677FA5600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x12E4 JUMPI PUSH0 SWAP3 PUSH2 0x12B0 JUMPI JUMPDEST POP DUP2 DUP2 LT PUSH2 0x1282 JUMPI POP POP JUMP JUMPDEST PUSH32 0xE31C95BE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x12DC JUMPI JUMPDEST DUP2 PUSH2 0x12CC PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP1 PUSH0 PUSH2 0x1276 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x12BF JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x1320 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1047 JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 ISZERO PUSH2 0x1320 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x135A SWAP2 PUSH2 0x1109 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x273C1ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x12E4 JUMPI PUSH0 SWAP3 PUSH2 0x13F8 JUMPI JUMPDEST POP DUP2 DUP2 GT PUSH2 0x13CA JUMPI POP POP JUMP JUMPDEST PUSH32 0x3E8960DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1424 JUMPI JUMPDEST DUP2 PUSH2 0x1414 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP1 PUSH0 PUSH2 0x13BE JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1407 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x1443 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x1464 JUMPI POP POP DUP1 PUSH2 0x1460 SWAP2 PUSH2 0x1109 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x1488 JUMPI POP PUSH2 0x1481 DUP3 PUSH2 0x1460 SWAP4 PUSH2 0x1109 JUMP JUMPDEST DIV DUP1 PUSH2 0x1109 JUMP JUMPDEST SWAP1 POP PUSH2 0x1493 SWAP2 PUSH2 0x14ED JUMP JUMPDEST PUSH2 0x149C DUP2 PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x1 PUSH0 NOT SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x1047 JUMPI DUP2 LT ISZERO PUSH2 0x14C4 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1126 JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1126 JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x1E16 JUMPI DUP2 ISZERO PUSH2 0x1E10 JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x1DE8 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x1DC0 JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x1DAF JUMPI JUMPDEST ISZERO PUSH2 0x1A4C JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x1586 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x14E3 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x1A39 JUMPI JUMPDEST ISZERO PUSH2 0x1A11 JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x19FE JUMPI JUMPDEST ISZERO PUSH2 0x19D6 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x19C7 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x1964 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x192B JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x18F1 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x18B9 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x1881 JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x184A JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x1813 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x17DC JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x17A5 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x11A2 JUMPI PUSH2 0x11A2 SWAP1 PUSH2 0x14C9 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x1726 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x1702 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16F9 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16E7 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16D5 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16C3 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x16B1 JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x19B4 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x169C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x169C JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x1640 JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x1631 JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x1621 JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x1D99 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x1D6E JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x1D4D JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x1D2A JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x1D0A JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x1CEA JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x1CCA JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x1CAA JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x1C93 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x1C73 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x1C53 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x1C34 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x1C15 JUMPI JUMPDEST POP PUSH2 0x1BC2 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x14E3 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x1C10 JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B86 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B72 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B5E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B4A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B36 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B22 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B0E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1AF9 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1AE4 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x1ACC JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x1AAB JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x1A8E JUMP JUMPDEST SWAP1 POP PUSH2 0x1DA5 SWAP2 POP PUSH2 0x14C9 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x1A61 JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x1533 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE ADD ADD 0xC3 0xE6 DUP7 0x27 0x22 0xAE 0xBF SWAP3 0xEB 0xD1 DUP13 MUL BASEFEE 0xB9 0xEE 0xBB NOT SLOAD 0xC2 DUP8 0xEF CALLDATACOPY STATICCALL BLOBHASH SWAP6 0x2C SUB 0xBD 0xCD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"453:981:117:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;453:981:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;453:981:117;;-1:-1:-1;453:981:117;;;;;;;;-1:-1:-1;453:981:117;;;-1:-1:-1;453:981:117;;-1:-1:-1;453:981:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;453:981:117;;;;-1:-1:-1;453:981:117;;;;;;;;;;;;;;;;-1:-1:-1;453:981:117;;;;;;;;;;-1:-1:-1;453:981:117;;;;;-1:-1:-1;453:981:117;;;;;;;;;;;;;;;-1:-1:-1;453:981:117;;;;;;;;;-1:-1:-1;;453:981:117;;;-1:-1:-1;;;;;453:981:117;;;;;;;;;;:::o"},"deployedBytecode":{"functionDebugData":{"abi_decode_array_uint256_dyn":{"entryPoint":3327,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_uint256t_uint256":{"entryPoint":3423,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_array_uint256_dynt_uint256t_uint256t_uint256t_uint256":{"entryPoint":3477,"id":null,"parameterSlots":1,"returnSlots":5},"abi_encode_array_uint256_dyn":{"entryPoint":3539,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_enum_Rounding":{"entryPoint":4435,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn_uint256_uint256":{"entryPoint":4212,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_and_zero_memory_array_array_uint256_dyn":{"entryPoint":4246,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":3303,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":4325,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":4380,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":4361,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_13568":{"entryPoint":4338,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_uint256":{"entryPoint":4154,"id":null,"parameterSlots":2,"returnSlots":1},"copy_array_from_storage_to_memory_array_uint256_dyn":{"entryPoint":3732,"id":null,"parameterSlots":0,"returnSlots":1},"external_fun_getMinimumInvariantRatio":{"entryPoint":3686,"id":null,"parameterSlots":0,"returnSlots":0},"finalize_allocation":{"entryPoint":3193,"id":null,"parameterSlots":2,"returnSlots":0},"fun_computeInvariant":{"entryPoint":3840,"id":45599,"parameterSlots":2,"returnSlots":1},"fun_ensureInvariantRatioAboveMinimumBound":{"entryPoint":4640,"id":11708,"parameterSlots":2,"returnSlots":0},"fun_ensureInvariantRatioBelowMaximumBound":{"entryPoint":4968,"id":11682,"parameterSlots":2,"returnSlots":0},"fun_mulDivUp":{"entryPoint":4936,"id":7660,"parameterSlots":3,"returnSlots":1},"fun_mulDivUp_13497":{"entryPoint":4847,"id":7660,"parameterSlots":2,"returnSlots":1},"fun_mulUp":{"entryPoint":4606,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_pow":{"entryPoint":5357,"id":8093,"parameterSlots":2,"returnSlots":1},"fun_powDown":{"entryPoint":5164,"id":7756,"parameterSlots":2,"returnSlots":1},"fun_powUp":{"entryPoint":4464,"id":7823,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":3712,"id":null,"parameterSlots":2,"returnSlots":1},"storage_array_index_access_uint256_dyn":{"entryPoint":3590,"id":null,"parameterSlots":1,"returnSlots":2},"wrapping_div_int256":{"entryPoint":5347,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_div_int256_13570":{"entryPoint":5321,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"604060808152600480361015610013575f80fd5b5f3560e01c90816316a0b3e014610b46578163273c1adf14610b225781633ab0591514610a1a578163654cf15d146109f857816372c981861461096b57816385d5261a14610830578163984de9e8146107df5781639a87ffbf1461052d578163b5f163ff146104f6578163b677fa56146104a0578163c548e4d8146104a5578163ce20ece7146104a0578163d9c7cc7a1461012c575063da317980146100b7575f80fd5b34610128576100c536610d5f565b6100d28392949351611096565b915f5b815181101561010f57806100fe876100f9866100f360019688610e80565b51611109565b61111c565b6101088287610e80565b52016100d5565b84516020808252819061012490820187610dd3565b0390f35b5f80fd5b82346101285760806003193601126101285767ffffffffffffffff9180358381116101285761015e9036908301610cff565b92602490602435908111610128576101799036908401610cff565b6064359285519561018987611096565b9261019388611096565b945f5b8981106104365750505085519687957f984de9e8000000000000000000000000000000000000000000000000000000009283885288858901526101dc6044890182610dd3565b5f60248a01528860209b8c920381305afa97881561042c575f986103fd575b508851908482528a82806102118a8a8301611153565b0381305afa9182156103f3575f926103c4575b50670de0b6b3a7640000918281029080820484149015171561039857906102518a8d98979695949361111c565b9061025c8230611368565b5f5b8581106102f95750505050505061027e8751948593849384528301611153565b0381305afa9081156102ef575f916102c2575b50826100f96102a6610124956102ae9461103a565b604435611109565b928080519586958652850152830190610dd3565b90508481813d83116102e8575b6102d98183610c79565b81010312610128575182610291565b503d6102cf565b84513d5f823e3d90fd5b84849596979899508b8b8385969761031d61031683600199610e80565b518a611109565b04806103298385610e80565b5111610344575b505050505001908c9796959493929161025e565b8183610365610383976103759461035e8561037c99610e80565b51036111fe565b61036f8388610e80565b52610e80565b5192610e80565b519061103a565b61038d828c610e80565b52858b8b835f610330565b6011877f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b9091508a81813d83116103ec575b6103dc8183610c79565b810103126101285751908b610224565b503d6103d2565b8a513d5f823e3d90fd5b9097508981813d8311610425575b6104158183610c79565b810103126101285751968a6101fb565b503d61040b565b89513d5f823e3d90fd5b6104556104438286610e80565b5161044e8386610e80565b51906110e5565b5f198101908111610475579060019161046e8289610e80565b5201610196565b826011877f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b610e66565b8234610128576104b436610d5f565b6104c18392949351611096565b915f5b815181101561010f57806104e587856104df60019587610e80565b51611348565b6104ef8287610e80565b52016104c4565b9050346101285760206003193601126101285735905f548210156101285761051f602092610e06565b91905490519160031b1c8152f35b82346101285761053c36610d95565b9184519461054986611096565b915f5b8781106107885750610568906105628785610e80565b5161103a565b6105728684610e80565b5286519788947f984de9e8000000000000000000000000000000000000000000000000000000009283875289838801526105af6044880182610dd3565b5f60248901528760209c8d920381305afa9687156103f3575f97610759575b5089518481528a848201528b81806105e9604482018a610dd3565b5f60248301520381305afa90811561074f57888d959493928b925f91610712575b50610663949361063761065e946106276106489561063e956112ef565b926106328430611220565b610e80565b51906111fe565b61037c8c8a610e80565b91670de0b6b3a7640000818103911002826112ef565b61103a565b92610672846105628a88610e80565b61067c8987610e80565b526106908a51958693849384528301611153565b0381305afa918215610708575f926106d1575b506102ae9392916106cb916106c46106bd61012499611096565b9788610e80565b528361103a565b90611348565b90939291508781813d8311610701575b6106eb8183610c79565b81010312610128575191929091906101246106a3565b503d6106e1565b87513d5f823e3d90fd5b969250505084819392933d8311610748575b61072e8183610c79565b810103126101285792518b9391908990899061066361060a565b503d610724565b8b513d5f823e3d90fd5b9096508a81813d8311610781575b6107718183610c79565b810103126101285751958b6105ce565b503d610767565b6107928184610e80565b515f1981019081116107b357906001916107ac8287610e80565b520161054c565b60118b7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b90503461012857816003193601126101285780359067ffffffffffffffff82116101285761080f91369101610cff565b906024359160028310156101285760209261082991610f00565b9051908152f35b9050346101285761085590602061084636610d95565b938397828298959793946110e5565b9361089e61086385876112ef565b61086d8130611368565b8b5198899485947f16a0b3e00000000000000000000000000000000000000000000000000000000086528501611074565b0381305afa9182156107085786945f9361092e575b5061090261090b9461065e61064888966108fc8b976100f9610912986108f56101249f6109189f6108e7906108ee92610e80565b518761103a565b9c8c610e80565b5190611109565b9061103a565b93849251611096565b9687610e80565b526110e5565b9183519384938452806020850152830190610dd3565b94509150936020843d602011610963575b8161094c60209383610c79565b8101031261012857925192938593916109026108b3565b3d915061093f565b905034610128576003196020813601126101285781359067ffffffffffffffff82116101285760e0913603011261012857602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600f60248201527f4e6f7420696d706c656d656e74656400000000000000000000000000000000006044820152fd5b8234610128575f6003193601126101285760209051670de0b6b3a76400008152f35b905034610128576020610a3f91610a3036610d95565b9383978293829795989361103a565b93610a88610a4d85876112ef565b610a578130611220565b8b51998a9485947f16a0b3e00000000000000000000000000000000000000000000000000000000086528501611074565b0381305afa9182156107085786955f93610ae4575b888761012461091861090b838b610ade6109028d610ad98e61065e8f8f610ad2610acb856105628d8d610e80565b9a8a610e80565b5190611348565b6111fe565b5261103a565b9491925094506020843d602011610b1a575b81610b0360209383610c79565b810103126101285792518594909190610902610a9d565b3d9150610af6565b8234610128575f600319360112610128576020905169d3c21bcecceda10000008152f35b90503461012857610b6891610b6f610b5d36610d5f565b929190809691610e80565b5194610e06565b90549060031b1c600182115f14610c725760025b80600114610c1957600214610bbe576051847f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b9091928115610bf3575092610bed6108299260016020966ec097ce7bc90715b34b9f0fffffffff040190611170565b906111fe565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b509091928115610c46575092610bed610829926020956ec097ce7bc90715b34b9f10000000000490611170565b6012907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6001610b83565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610cba57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff8111610cba5760051b60200190565b9080601f83011215610128576020908235610d1981610ce7565b93610d276040519586610c79565b81855260208086019260051b82010192831161012857602001905b828210610d50575050505090565b81358152908301908301610d42565b6060600319820112610128576004359067ffffffffffffffff821161012857610d8a91600401610cff565b906024359060443590565b60a0600319820112610128576004359067ffffffffffffffff821161012857610dc091600401610cff565b9060243590604435906064359060843590565b9081518082526020808093019301915f5b828110610df2575050505090565b835185529381019392810192600101610de4565b5f54811015610e39575f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b34610128575f6003193601126101285760206040515f8152f35b8051821015610e395760209160051b010190565b604051905f548083528260209160208201905f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f905b828210610ee657505050610ee492500383610c79565b565b855484526001958601958895509381019390910190610ece565b90600281101561100d576001908103610faf5780610f1c610e94565b670de0b6b3a7640000935f935b610f63575b505050508015610f3b5790565b7f26543689000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151841015610faa5782670de0b6b3a7640000610fa18697610f9b610f89859987610e80565b51610f948b89610e80565b519061142c565b90611109565b04950193610f29565b610f2e565b80610fb8610e94565b670de0b6b3a7640000935f935b610fd657505050508015610f3b5790565b8151841015610faa57826110058596610bed610ff3849886610e80565b51610ffe8a88610e80565b5190611170565b950193610fc5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9190820391821161104757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61108c60409295949395606083526060830190610dd3565b9460208201520152565b906110a082610ce7565b6110ad6040519182610c79565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110db8294610ce7565b0190602036910137565b9190820180921161104757565b906127109182810292818404149015171561104757565b8181029291811591840414171561104757565b8115611126570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190602061116b600192604086526040860190610dd3565b930152565b90670de0b6b3a76400009081810361118757505090565b671bc16d674ec8000081036111a5575050806111a2916111fe565b90565b673782dace9d90000081036111c95750506111c3816111a2926111fe565b806111fe565b6111d391926114ed565b9060016111df836110f2565b915f19830104019015150260018101809111611047576111a2916110e5565b9061120891611109565b6001670de0b6b3a76400005f19830104019015150290565b90602073ffffffffffffffffffffffffffffffffffffffff926004604051809581937fb677fa56000000000000000000000000000000000000000000000000000000008352165afa9182156112e4575f926112b0575b50818110611282575050565b7fe31c95be000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b9091506020813d6020116112dc575b816112cc60209383610c79565b810103126101285751905f611276565b3d91506112bf565b6040513d5f823e3d90fd5b90801561132057670de0b6b3a764000091828102928184041490151715611047576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b82156113205760019161135a91611109565b915f19830104019015150290565b90602073ffffffffffffffffffffffffffffffffffffffff926004604051809581937f273c1adf000000000000000000000000000000000000000000000000000000008352165afa9182156112e4575f926113f8575b508181116113ca575050565b7f3e8960dc000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b9091506020813d602011611424575b8161141460209383610c79565b810103126101285751905f6113be565b3d9150611407565b670de0b6b3a7640000918083036114435750905090565b8290671bc16d674ec8000081036114645750508061146091611109565b0490565b673782dace9d900000810361148857506114818261146093611109565b0480611109565b9050611493916114ed565b61149c816110f2565b60015f19938483010401901515029060018201808311611047578110156114c4575050505f90565b030190565b8015611126576ec097ce7bc90715b34b9f10000000000590565b8115611126570590565b908015611e16578115611e10578160ff1c611de857770bce5086492111aea88f4bb1ca6bcf584181ea8059f76532811015611dc05781670c7d713b49da00001280611daf575b15611a4c57670de0b6b3a7640000916ec097ce7bc90715b34b9f100000000090611586908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f0000000000183026114e3565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580611a39575b15611a11578190821215806119fe575b156119d6575f915f81126119c7575b506064906806f05b59d3b20000008112611964577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac6200000081121561192b575b6856bc75e2d6310000008112156118f1575b682b5e3af16b188000008112156118b9575b6815af1d78b58c400000811215611881575b680ad78ebc5ac620000081121561184a575b82811215611813575b6802b5e3af16b18800008112156117dc575b68015af1d78b58c400008112156117a5575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f146111a2576111a2906114c9565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590611726565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590611714565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590611702565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000849201920205906116f9565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00000849201920205906116e7565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906116d5565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906116c3565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016116b1565b6803782dace9d900000081126119b4577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef73809261169c565b68056bc75e2d631000008260019261169c565b600192505f0390506064611640565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315611631565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315611621565b81670de0b6b3a7640000925f91848112611d99575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c0000000000000821215611d6e575b73011798004d755d3c8bc8e03204cf44619e000000821215611d4d575b820290808302906e01855144814a7ff805980ff00840009081831215611d2a575b50506b02df0ab5a80a22c61ab5a70080821215611d0a575b50693f1fce3da636ea5cf85080821215611cea575b50690127fa27722cc06cc5e280821215611cca575b5068280e60114edb805d0380821215611caa575b50680ebc5fb4174612111080821215611c93575b506808f00f760a4b2db55d80821215611c73575b506806f5f177578893793780821215611c53575b506806248f33704b28660380821215611c34575b506805c548670b9510e7ac80821215611c15575b50611bc268056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000008183019201026114e3565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f14611c10575f035b026115f5565b611c0a565b68056bc75e2d631000006756bc75e2d63100009202059101905f611b86565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f611b72565b68056bc75e2d6310000068015af1d78b58c400009202059101905f611b5e565b68056bc75e2d631000006802b5e3af16b18800009202059101905f611b4a565b68056bc75e2d63100000809202059101905f611b36565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f611b22565b68056bc75e2d631000006815af1d78b58c4000009202059101905f611b0e565b68056bc75e2d63100000682b5e3af16b188000009202059101905f611af9565b68056bc75e2d631000006856bc75e2d6310000009202059101905f611ae4565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f80611acc565b906b1425982cf597cd205cef73806803782dace9d900000091059101611aab565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b2000000611a8e565b9050611da591506114c9565b6001906064611a61565b50670f43fc2c04ee00008212611533565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212200e0101c3e6862722aebf92ebd18c0248b9eebb1954c287ef37fa49952c03bdcd64736f6c634300081a0033","opcodes":"PUSH1 0x40 PUSH1 0x80 DUP2 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x13 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR SWAP1 DUP2 PUSH4 0x16A0B3E0 EQ PUSH2 0xB46 JUMPI DUP2 PUSH4 0x273C1ADF EQ PUSH2 0xB22 JUMPI DUP2 PUSH4 0x3AB05915 EQ PUSH2 0xA1A JUMPI DUP2 PUSH4 0x654CF15D EQ PUSH2 0x9F8 JUMPI DUP2 PUSH4 0x72C98186 EQ PUSH2 0x96B JUMPI DUP2 PUSH4 0x85D5261A EQ PUSH2 0x830 JUMPI DUP2 PUSH4 0x984DE9E8 EQ PUSH2 0x7DF JUMPI DUP2 PUSH4 0x9A87FFBF EQ PUSH2 0x52D JUMPI DUP2 PUSH4 0xB5F163FF EQ PUSH2 0x4F6 JUMPI DUP2 PUSH4 0xB677FA56 EQ PUSH2 0x4A0 JUMPI DUP2 PUSH4 0xC548E4D8 EQ PUSH2 0x4A5 JUMPI DUP2 PUSH4 0xCE20ECE7 EQ PUSH2 0x4A0 JUMPI DUP2 PUSH4 0xD9C7CC7A EQ PUSH2 0x12C JUMPI POP PUSH4 0xDA317980 EQ PUSH2 0xB7 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x128 JUMPI PUSH2 0xC5 CALLDATASIZE PUSH2 0xD5F JUMP JUMPDEST PUSH2 0xD2 DUP4 SWAP3 SWAP5 SWAP4 MLOAD PUSH2 0x1096 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x10F JUMPI DUP1 PUSH2 0xFE DUP8 PUSH2 0xF9 DUP7 PUSH2 0xF3 PUSH1 0x1 SWAP7 DUP9 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x1109 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x108 DUP3 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0xD5 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 SWAP1 PUSH2 0x124 SWAP1 DUP3 ADD DUP8 PUSH2 0xDD3 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x80 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP1 CALLDATALOAD DUP4 DUP2 GT PUSH2 0x128 JUMPI PUSH2 0x15E SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP3 PUSH1 0x24 SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 GT PUSH2 0x128 JUMPI PUSH2 0x179 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0xCFF JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD SWAP3 DUP6 MLOAD SWAP6 PUSH2 0x189 DUP8 PUSH2 0x1096 JUMP JUMPDEST SWAP3 PUSH2 0x193 DUP9 PUSH2 0x1096 JUMP JUMPDEST SWAP5 PUSH0 JUMPDEST DUP10 DUP2 LT PUSH2 0x436 JUMPI POP POP POP DUP6 MLOAD SWAP7 DUP8 SWAP6 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP9 MSTORE DUP9 DUP6 DUP10 ADD MSTORE PUSH2 0x1DC PUSH1 0x44 DUP10 ADD DUP3 PUSH2 0xDD3 JUMP JUMPDEST PUSH0 PUSH1 0x24 DUP11 ADD MSTORE DUP9 PUSH1 0x20 SWAP12 DUP13 SWAP3 SUB DUP2 ADDRESS GAS STATICCALL SWAP8 DUP9 ISZERO PUSH2 0x42C JUMPI PUSH0 SWAP9 PUSH2 0x3FD JUMPI JUMPDEST POP DUP9 MLOAD SWAP1 DUP5 DUP3 MSTORE DUP11 DUP3 DUP1 PUSH2 0x211 DUP11 DUP11 DUP4 ADD PUSH2 0x1153 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x3F3 JUMPI PUSH0 SWAP3 PUSH2 0x3C4 JUMPI JUMPDEST POP PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP1 DUP1 DUP3 DIV DUP5 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x398 JUMPI SWAP1 PUSH2 0x251 DUP11 DUP14 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 PUSH2 0x111C JUMP JUMPDEST SWAP1 PUSH2 0x25C DUP3 ADDRESS PUSH2 0x1368 JUMP JUMPDEST PUSH0 JUMPDEST DUP6 DUP2 LT PUSH2 0x2F9 JUMPI POP POP POP POP POP POP PUSH2 0x27E DUP8 MLOAD SWAP5 DUP6 SWAP4 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD PUSH2 0x1153 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2EF JUMPI PUSH0 SWAP2 PUSH2 0x2C2 JUMPI JUMPDEST POP DUP3 PUSH2 0xF9 PUSH2 0x2A6 PUSH2 0x124 SWAP6 PUSH2 0x2AE SWAP5 PUSH2 0x103A JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD PUSH2 0x1109 JUMP JUMPDEST SWAP3 DUP1 DUP1 MLOAD SWAP6 DUP7 SWAP6 DUP7 MSTORE DUP6 ADD MSTORE DUP4 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP1 POP DUP5 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x2E8 JUMPI JUMPDEST PUSH2 0x2D9 DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD DUP3 PUSH2 0x291 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x2CF JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP5 DUP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 POP DUP12 DUP12 DUP4 DUP6 SWAP7 SWAP8 PUSH2 0x31D PUSH2 0x316 DUP4 PUSH1 0x1 SWAP10 PUSH2 0xE80 JUMP JUMPDEST MLOAD DUP11 PUSH2 0x1109 JUMP JUMPDEST DIV DUP1 PUSH2 0x329 DUP4 DUP6 PUSH2 0xE80 JUMP JUMPDEST MLOAD GT PUSH2 0x344 JUMPI JUMPDEST POP POP POP POP POP ADD SWAP1 DUP13 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH2 0x25E JUMP JUMPDEST DUP2 DUP4 PUSH2 0x365 PUSH2 0x383 SWAP8 PUSH2 0x375 SWAP5 PUSH2 0x35E DUP6 PUSH2 0x37C SWAP10 PUSH2 0xE80 JUMP JUMPDEST MLOAD SUB PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x36F DUP4 DUP9 PUSH2 0xE80 JUMP JUMPDEST MSTORE PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP3 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x103A JUMP JUMPDEST PUSH2 0x38D DUP3 DUP13 PUSH2 0xE80 JUMP JUMPDEST MSTORE DUP6 DUP12 DUP12 DUP4 PUSH0 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x11 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x3EC JUMPI JUMPDEST PUSH2 0x3DC DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP1 DUP12 PUSH2 0x224 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x3D2 JUMP JUMPDEST DUP11 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP8 POP DUP10 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x425 JUMPI JUMPDEST PUSH2 0x415 DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP7 DUP11 PUSH2 0x1FB JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x40B JUMP JUMPDEST DUP10 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x455 PUSH2 0x443 DUP3 DUP7 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x44E DUP4 DUP7 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x10E5 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x475 JUMPI SWAP1 PUSH1 0x1 SWAP2 PUSH2 0x46E DUP3 DUP10 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0x196 JUMP JUMPDEST DUP3 PUSH1 0x11 DUP8 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH0 REVERT JUMPDEST PUSH2 0xE66 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH2 0x4B4 CALLDATASIZE PUSH2 0xD5F JUMP JUMPDEST PUSH2 0x4C1 DUP4 SWAP3 SWAP5 SWAP4 MLOAD PUSH2 0x1096 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x10F JUMPI DUP1 PUSH2 0x4E5 DUP8 DUP6 PUSH2 0x4DF PUSH1 0x1 SWAP6 DUP8 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x4EF DUP3 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0x4C4 JUMP JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI CALLDATALOAD SWAP1 PUSH0 SLOAD DUP3 LT ISZERO PUSH2 0x128 JUMPI PUSH2 0x51F PUSH1 0x20 SWAP3 PUSH2 0xE06 JUMP JUMPDEST SWAP2 SWAP1 SLOAD SWAP1 MLOAD SWAP2 PUSH1 0x3 SHL SHR DUP2 MSTORE RETURN JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH2 0x53C CALLDATASIZE PUSH2 0xD95 JUMP JUMPDEST SWAP2 DUP5 MLOAD SWAP5 PUSH2 0x549 DUP7 PUSH2 0x1096 JUMP JUMPDEST SWAP2 PUSH0 JUMPDEST DUP8 DUP2 LT PUSH2 0x788 JUMPI POP PUSH2 0x568 SWAP1 PUSH2 0x562 DUP8 DUP6 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0x103A JUMP JUMPDEST PUSH2 0x572 DUP7 DUP5 PUSH2 0xE80 JUMP JUMPDEST MSTORE DUP7 MLOAD SWAP8 DUP9 SWAP5 PUSH32 0x984DE9E800000000000000000000000000000000000000000000000000000000 SWAP3 DUP4 DUP8 MSTORE DUP10 DUP4 DUP9 ADD MSTORE PUSH2 0x5AF PUSH1 0x44 DUP9 ADD DUP3 PUSH2 0xDD3 JUMP JUMPDEST PUSH0 PUSH1 0x24 DUP10 ADD MSTORE DUP8 PUSH1 0x20 SWAP13 DUP14 SWAP3 SUB DUP2 ADDRESS GAS STATICCALL SWAP7 DUP8 ISZERO PUSH2 0x3F3 JUMPI PUSH0 SWAP8 PUSH2 0x759 JUMPI JUMPDEST POP DUP10 MLOAD DUP5 DUP2 MSTORE DUP11 DUP5 DUP3 ADD MSTORE DUP12 DUP2 DUP1 PUSH2 0x5E9 PUSH1 0x44 DUP3 ADD DUP11 PUSH2 0xDD3 JUMP JUMPDEST PUSH0 PUSH1 0x24 DUP4 ADD MSTORE SUB DUP2 ADDRESS GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x74F JUMPI DUP9 DUP14 SWAP6 SWAP5 SWAP4 SWAP3 DUP12 SWAP3 PUSH0 SWAP2 PUSH2 0x712 JUMPI JUMPDEST POP PUSH2 0x663 SWAP5 SWAP4 PUSH2 0x637 PUSH2 0x65E SWAP5 PUSH2 0x627 PUSH2 0x648 SWAP6 PUSH2 0x63E SWAP6 PUSH2 0x12EF JUMP JUMPDEST SWAP3 PUSH2 0x632 DUP5 ADDRESS PUSH2 0x1220 JUMP JUMPDEST PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x37C DUP13 DUP11 PUSH2 0xE80 JUMP JUMPDEST SWAP2 PUSH8 0xDE0B6B3A7640000 DUP2 DUP2 SUB SWAP2 LT MUL DUP3 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x103A JUMP JUMPDEST SWAP3 PUSH2 0x672 DUP5 PUSH2 0x562 DUP11 DUP9 PUSH2 0xE80 JUMP JUMPDEST PUSH2 0x67C DUP10 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE PUSH2 0x690 DUP11 MLOAD SWAP6 DUP7 SWAP4 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD PUSH2 0x1153 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x708 JUMPI PUSH0 SWAP3 PUSH2 0x6D1 JUMPI JUMPDEST POP PUSH2 0x2AE SWAP4 SWAP3 SWAP2 PUSH2 0x6CB SWAP2 PUSH2 0x6C4 PUSH2 0x6BD PUSH2 0x124 SWAP10 PUSH2 0x1096 JUMP JUMPDEST SWAP8 DUP9 PUSH2 0xE80 JUMP JUMPDEST MSTORE DUP4 PUSH2 0x103A JUMP JUMPDEST SWAP1 PUSH2 0x1348 JUMP JUMPDEST SWAP1 SWAP4 SWAP3 SWAP2 POP DUP8 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x701 JUMPI JUMPDEST PUSH2 0x6EB DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x124 PUSH2 0x6A3 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x6E1 JUMP JUMPDEST DUP8 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP7 SWAP3 POP POP POP DUP5 DUP2 SWAP4 SWAP3 SWAP4 RETURNDATASIZE DUP4 GT PUSH2 0x748 JUMPI JUMPDEST PUSH2 0x72E DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI SWAP3 MLOAD DUP12 SWAP4 SWAP2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH2 0x663 PUSH2 0x60A JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x724 JUMP JUMPDEST DUP12 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 SWAP7 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x781 JUMPI JUMPDEST PUSH2 0x771 DUP2 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP6 DUP12 PUSH2 0x5CE JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x767 JUMP JUMPDEST PUSH2 0x792 DUP2 DUP5 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH0 NOT DUP2 ADD SWAP1 DUP2 GT PUSH2 0x7B3 JUMPI SWAP1 PUSH1 0x1 SWAP2 PUSH2 0x7AC DUP3 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE ADD PUSH2 0x54C JUMP JUMPDEST PUSH1 0x11 DUP12 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH2 0x80F SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP2 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x128 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x829 SWAP2 PUSH2 0xF00 JUMP JUMPDEST SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH2 0x855 SWAP1 PUSH1 0x20 PUSH2 0x846 CALLDATASIZE PUSH2 0xD95 JUMP JUMPDEST SWAP4 DUP4 SWAP8 DUP3 DUP3 SWAP9 SWAP6 SWAP8 SWAP4 SWAP5 PUSH2 0x10E5 JUMP JUMPDEST SWAP4 PUSH2 0x89E PUSH2 0x863 DUP6 DUP8 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x86D DUP2 ADDRESS PUSH2 0x1368 JUMP JUMPDEST DUP12 MLOAD SWAP9 DUP10 SWAP5 DUP6 SWAP5 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH2 0x1074 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x708 JUMPI DUP7 SWAP5 PUSH0 SWAP4 PUSH2 0x92E JUMPI JUMPDEST POP PUSH2 0x902 PUSH2 0x90B SWAP5 PUSH2 0x65E PUSH2 0x648 DUP9 SWAP7 PUSH2 0x8FC DUP12 SWAP8 PUSH2 0xF9 PUSH2 0x912 SWAP9 PUSH2 0x8F5 PUSH2 0x124 SWAP16 PUSH2 0x918 SWAP16 PUSH2 0x8E7 SWAP1 PUSH2 0x8EE SWAP3 PUSH2 0xE80 JUMP JUMPDEST MLOAD DUP8 PUSH2 0x103A JUMP JUMPDEST SWAP13 DUP13 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1109 JUMP JUMPDEST SWAP1 PUSH2 0x103A JUMP JUMPDEST SWAP4 DUP5 SWAP3 MLOAD PUSH2 0x1096 JUMP JUMPDEST SWAP7 DUP8 PUSH2 0xE80 JUMP JUMPDEST MSTORE PUSH2 0x10E5 JUMP JUMPDEST SWAP2 DUP4 MLOAD SWAP4 DUP5 SWAP4 DUP5 MSTORE DUP1 PUSH1 0x20 DUP6 ADD MSTORE DUP4 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP5 POP SWAP2 POP SWAP4 PUSH1 0x20 DUP5 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x963 JUMPI JUMPDEST DUP2 PUSH2 0x94C PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI SWAP3 MLOAD SWAP3 SWAP4 DUP6 SWAP4 SWAP2 PUSH2 0x902 PUSH2 0x8B3 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x93F JUMP JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x3 NOT PUSH1 0x20 DUP2 CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI DUP2 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH1 0xE0 SWAP2 CALLDATASIZE SUB ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 PUSH1 0x64 SWAP3 MLOAD SWAP2 PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F7420696D706C656D656E7465640000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0xDE0B6B3A7640000 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH1 0x20 PUSH2 0xA3F SWAP2 PUSH2 0xA30 CALLDATASIZE PUSH2 0xD95 JUMP JUMPDEST SWAP4 DUP4 SWAP8 DUP3 SWAP4 DUP3 SWAP8 SWAP6 SWAP9 SWAP4 PUSH2 0x103A JUMP JUMPDEST SWAP4 PUSH2 0xA88 PUSH2 0xA4D DUP6 DUP8 PUSH2 0x12EF JUMP JUMPDEST PUSH2 0xA57 DUP2 ADDRESS PUSH2 0x1220 JUMP JUMPDEST DUP12 MLOAD SWAP10 DUP11 SWAP5 DUP6 SWAP5 PUSH32 0x16A0B3E000000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH2 0x1074 JUMP JUMPDEST SUB DUP2 ADDRESS GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x708 JUMPI DUP7 SWAP6 PUSH0 SWAP4 PUSH2 0xAE4 JUMPI JUMPDEST DUP9 DUP8 PUSH2 0x124 PUSH2 0x918 PUSH2 0x90B DUP4 DUP12 PUSH2 0xADE PUSH2 0x902 DUP14 PUSH2 0xAD9 DUP15 PUSH2 0x65E DUP16 DUP16 PUSH2 0xAD2 PUSH2 0xACB DUP6 PUSH2 0x562 DUP14 DUP14 PUSH2 0xE80 JUMP JUMPDEST SWAP11 DUP11 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1348 JUMP JUMPDEST PUSH2 0x11FE JUMP JUMPDEST MSTORE PUSH2 0x103A JUMP JUMPDEST SWAP5 SWAP2 SWAP3 POP SWAP5 POP PUSH1 0x20 DUP5 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xB1A JUMPI JUMPDEST DUP2 PUSH2 0xB03 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI SWAP3 MLOAD DUP6 SWAP5 SWAP1 SWAP2 SWAP1 PUSH2 0x902 PUSH2 0xA9D JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xAF6 JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x128 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH10 0xD3C21BCECCEDA1000000 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP CALLVALUE PUSH2 0x128 JUMPI PUSH2 0xB68 SWAP2 PUSH2 0xB6F PUSH2 0xB5D CALLDATASIZE PUSH2 0xD5F JUMP JUMPDEST SWAP3 SWAP2 SWAP1 DUP1 SWAP7 SWAP2 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP5 PUSH2 0xE06 JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR PUSH1 0x1 DUP3 GT PUSH0 EQ PUSH2 0xC72 JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x1 EQ PUSH2 0xC19 JUMPI PUSH1 0x2 EQ PUSH2 0xBBE JUMPI PUSH1 0x51 DUP5 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 DUP2 ISZERO PUSH2 0xBF3 JUMPI POP SWAP3 PUSH2 0xBED PUSH2 0x829 SWAP3 PUSH1 0x1 PUSH1 0x20 SWAP7 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x1170 JUMP JUMPDEST SWAP1 PUSH2 0x11FE JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP1 SWAP2 SWAP3 DUP2 ISZERO PUSH2 0xC46 JUMPI POP SWAP3 PUSH2 0xBED PUSH2 0x829 SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x1170 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x1 PUSH2 0xB83 JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0xCBA JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0xCBA JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x128 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0xD19 DUP2 PUSH2 0xCE7 JUMP JUMPDEST SWAP4 PUSH2 0xD27 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0xC79 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x128 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xD50 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x128 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH2 0xD8A SWAP2 PUSH1 0x4 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x3 NOT DUP3 ADD SLT PUSH2 0x128 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT PUSH2 0x128 JUMPI PUSH2 0xDC0 SWAP2 PUSH1 0x4 ADD PUSH2 0xCFF JUMP JUMPDEST SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x84 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0xDF2 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0xDE4 JUMP JUMPDEST PUSH0 SLOAD DUP2 LT ISZERO PUSH2 0xE39 JUMPI PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x128 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x128 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH0 DUP2 MSTORE RETURN JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0xE39 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH0 SLOAD DUP1 DUP4 MSTORE DUP3 PUSH1 0x20 SWAP2 PUSH1 0x20 DUP3 ADD SWAP1 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xEE6 JUMPI POP POP POP PUSH2 0xEE4 SWAP3 POP SUB DUP4 PUSH2 0xC79 JUMP JUMPDEST JUMP JUMPDEST DUP6 SLOAD DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xECE JUMP JUMPDEST SWAP1 PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x100D JUMPI PUSH1 0x1 SWAP1 DUP2 SUB PUSH2 0xFAF JUMPI DUP1 PUSH2 0xF1C PUSH2 0xE94 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0xF63 JUMPI JUMPDEST POP POP POP POP DUP1 ISZERO PUSH2 0xF3B JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0xFAA JUMPI DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0xFA1 DUP7 SWAP8 PUSH2 0xF9B PUSH2 0xF89 DUP6 SWAP10 DUP8 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0xF94 DUP12 DUP10 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x142C JUMP JUMPDEST SWAP1 PUSH2 0x1109 JUMP JUMPDEST DIV SWAP6 ADD SWAP4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xF2E JUMP JUMPDEST DUP1 PUSH2 0xFB8 PUSH2 0xE94 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0xFD6 JUMPI POP POP POP POP DUP1 ISZERO PUSH2 0xF3B JUMPI SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0xFAA JUMPI DUP3 PUSH2 0x1005 DUP6 SWAP7 PUSH2 0xBED PUSH2 0xFF3 DUP5 SWAP9 DUP7 PUSH2 0xE80 JUMP JUMPDEST MLOAD PUSH2 0xFFE DUP11 DUP9 PUSH2 0xE80 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x1170 JUMP JUMPDEST SWAP6 ADD SWAP4 PUSH2 0xFC5 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x1047 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x108C PUSH1 0x40 SWAP3 SWAP6 SWAP5 SWAP4 SWAP6 PUSH1 0x60 DUP4 MSTORE PUSH1 0x60 DUP4 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP5 PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH2 0x10A0 DUP3 PUSH2 0xCE7 JUMP JUMPDEST PUSH2 0x10AD PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0xC79 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH2 0x10DB DUP3 SWAP5 PUSH2 0xCE7 JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x1047 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1047 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x1047 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1126 JUMPI DIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH1 0x20 PUSH2 0x116B PUSH1 0x1 SWAP3 PUSH1 0x40 DUP7 MSTORE PUSH1 0x40 DUP7 ADD SWAP1 PUSH2 0xDD3 JUMP JUMPDEST SWAP4 ADD MSTORE JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x1187 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x11A5 JUMPI POP POP DUP1 PUSH2 0x11A2 SWAP2 PUSH2 0x11FE JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x11C9 JUMPI POP POP PUSH2 0x11C3 DUP2 PUSH2 0x11A2 SWAP3 PUSH2 0x11FE JUMP JUMPDEST DUP1 PUSH2 0x11FE JUMP JUMPDEST PUSH2 0x11D3 SWAP2 SWAP3 PUSH2 0x14ED JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x11DF DUP4 PUSH2 0x10F2 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x1047 JUMPI PUSH2 0x11A2 SWAP2 PUSH2 0x10E5 JUMP JUMPDEST SWAP1 PUSH2 0x1208 SWAP2 PUSH2 0x1109 JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0xB677FA5600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x12E4 JUMPI PUSH0 SWAP3 PUSH2 0x12B0 JUMPI JUMPDEST POP DUP2 DUP2 LT PUSH2 0x1282 JUMPI POP POP JUMP JUMPDEST PUSH32 0xE31C95BE00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x12DC JUMPI JUMPDEST DUP2 PUSH2 0x12CC PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP1 PUSH0 PUSH2 0x1276 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x12BF JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x1320 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x1047 JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP3 ISZERO PUSH2 0x1320 JUMPI PUSH1 0x1 SWAP2 PUSH2 0x135A SWAP2 PUSH2 0x1109 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 PUSH1 0x4 PUSH1 0x40 MLOAD DUP1 SWAP6 DUP2 SWAP4 PUSH32 0x273C1ADF00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x12E4 JUMPI PUSH0 SWAP3 PUSH2 0x13F8 JUMPI JUMPDEST POP DUP2 DUP2 GT PUSH2 0x13CA JUMPI POP POP JUMP JUMPDEST PUSH32 0x3E8960DC00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x1424 JUMPI JUMPDEST DUP2 PUSH2 0x1414 PUSH1 0x20 SWAP4 DUP4 PUSH2 0xC79 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x128 JUMPI MLOAD SWAP1 PUSH0 PUSH2 0x13BE JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x1407 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x1443 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x1464 JUMPI POP POP DUP1 PUSH2 0x1460 SWAP2 PUSH2 0x1109 JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x1488 JUMPI POP PUSH2 0x1481 DUP3 PUSH2 0x1460 SWAP4 PUSH2 0x1109 JUMP JUMPDEST DIV DUP1 PUSH2 0x1109 JUMP JUMPDEST SWAP1 POP PUSH2 0x1493 SWAP2 PUSH2 0x14ED JUMP JUMPDEST PUSH2 0x149C DUP2 PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x1 PUSH0 NOT SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x1047 JUMPI DUP2 LT ISZERO PUSH2 0x14C4 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1126 JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x1126 JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x1E16 JUMPI DUP2 ISZERO PUSH2 0x1E10 JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x1DE8 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x1DC0 JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x1DAF JUMPI JUMPDEST ISZERO PUSH2 0x1A4C JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x1586 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x14E3 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x1A39 JUMPI JUMPDEST ISZERO PUSH2 0x1A11 JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x19FE JUMPI JUMPDEST ISZERO PUSH2 0x19D6 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x19C7 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x1964 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x192B JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x18F1 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x18B9 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x1881 JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x184A JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x1813 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x17DC JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x17A5 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x11A2 JUMPI PUSH2 0x11A2 SWAP1 PUSH2 0x14C9 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x1726 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x1702 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16F9 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16E7 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16D5 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x16C3 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x16B1 JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x19B4 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x169C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x169C JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x1640 JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x1631 JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x1621 JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x1D99 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x1D6E JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x1D4D JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x1D2A JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x1D0A JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x1CEA JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x1CCA JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x1CAA JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x1C93 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x1C73 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x1C53 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x1C34 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x1C15 JUMPI JUMPDEST POP PUSH2 0x1BC2 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x14E3 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x1C10 JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B86 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B72 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B5E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B4A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B36 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B22 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1B0E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1AF9 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x1AE4 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x1ACC JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x1AAB JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x1A8E JUMP JUMPDEST SWAP1 POP PUSH2 0x1DA5 SWAP2 POP PUSH2 0x14C9 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x1A61 JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x1533 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE ADD ADD 0xC3 0xE6 DUP7 0x27 0x22 0xAE 0xBF SWAP3 0xEB 0xD1 DUP13 MUL BASEFEE 0xB9 0xEE 0xBB NOT SLOAD 0xC2 DUP8 0xEF CALLDATACOPY STATICCALL BLOBHASH SWAP6 0x2C SUB 0xBD 0xCD PUSH5 0x736F6C6343 STOP ADDMOD BYTE STOP CALLER ","sourceMap":"453:981:117:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5749:30:56;453:981:117;;;;;5749:30:56;:::i;:::-;5794:13;453:981:117;5830:3:56;453:981:117;;5809:19:56;;;;;6003:11;6002:44;6003:11;:25;:11;;453:981:117;6003:11:56;;;:::i;:::-;453:981:117;6003:25:56;:::i;:::-;6002:44;:::i;:::-;5986:60;;;;:::i;:::-;453:981:117;;5794:13:56;;5809:19;453:981:117;;;;;;;;;;;;5809:19:56;453:981:117;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;453:981:117;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;8498:24:56;;;;:::i;:::-;8623;;;;:::i;:::-;8743:13;453:981:117;8758:13:56;;;;;;453:981:117;;;;;;;;;9134:57:56;;;;;;;;453:981:117;;;;;;;:::i;:::-;;;;;;;;9134:57:56;;;;1751:4:76;;9134:57:56;;;;;;;453:981:117;9134:57:56;;;8738:165;453:981:117;;;9286:55:56;;;;;;;;;;;;;:::i;:::-;;1751:4:76;;9286:55:56;;;;;;;453:981:117;9286:55:56;;;8738:165;465:4:47;;453:981:117;;;;;;;;;;;;;;;;1625:13:47;;;;;;;;;;;:::i;:::-;1751:4:76;9422:14:56;1751:4:76;;9422:14:56;:::i;:::-;453:981:117;9531:13:56;;;;;;453:981:117;;;;;;11183:55:56;453:981:117;;11183:55:56;;;;;;;;;;:::i;:::-;;1751:4:76;;11183:55:56;;;;;;;453:981:117;11183:55:56;;;9511:1375;12123:43;;12108:59;12123:43;453:981:117;12123:43:56;12107:80;12123:43;;:::i;:::-;453:981:117;;12108:59:56;:::i;12107:80::-;453:981:117;;;;;;;;;;;;;;;;:::i;11183:55:56:-;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;;11183:55:56;;;;;;;;453:981:117;;;;;;;;;9546:3:56;10047:18;;;;;;;;;;;;;;838:5:47;10047:18:56;;453:981:117;10047:18:56;;:::i;:::-;453:981:117;838:5:47;;:::i;:::-;453:981:117;10084:14:56;;;;;:::i;:::-;453:981:117;10084:41:56;10080:796;;9546:3;;;;;;453:981:117;9516:13:56;;;;;;;;;;;10080:796;10232:14;;10374:38;10827:34;10232:14;10827;10232;;;10844:17;10232:14;;:::i;:::-;453:981:117;;10374:38:56;:::i;:::-;10354:58;;;;:::i;:::-;453:981:117;10827:14:56;:::i;:::-;453:981:117;10844:17:56;;:::i;:::-;453:981:117;10827:34:56;;:::i;:::-;10810:51;;;;:::i;:::-;453:981:117;10080:796:56;;;;;;;453:981:117;;;;;;;;;;9286:55:56;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;9286:55:56;;;;;;;;;;453:981:117;;;;;;;;;9134:57:56;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;9134:57:56;;;;;;;;;;453:981:117;;;;;;;;;8773:3:56;8809:36;:18;;;;:::i;:::-;453:981:117;8830:15:56;;;;:::i;:::-;453:981:117;8809:36:56;;:::i;:::-;-1:-1:-1;;453:981:117;;;;;;;8792:57:56;453:981:117;8792:57:56;;;;;:::i;:::-;453:981:117;;8743:13:56;;453:981:117;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;3468:30:56;453:981:117;;;;;3468:30:56;:::i;:::-;3513:13;453:981:117;3549:3:56;453:981:117;;3528:19:56;;;;;3717:11;:50;:11;;;453:981:117;3717:11:56;;;:::i;:::-;453:981:117;3717:50:56;:::i;:::-;3702:65;;;;:::i;:::-;453:981:117;;3513:13:56;;453:981:117;;;;;;;-1:-1:-1;;453:981:117;;;;;;;;;513:24;;;;;;453:981;513:24;;:::i;:::-;453:981;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16842:24:56;;;;:::i;:::-;16930:13;453:981:117;16945:13:56;;;;;;17136:26;:43;:26;;;;;:::i;:::-;453:981:117;17136:43:56;:::i;:::-;17107:72;;;;:::i;:::-;453:981:117;;;;;;;17730:57:56;;;;;;;;453:981:117;;;;;;;:::i;:::-;;;;;;17730:57:56;;;;;;2983:4:76;;17730:57:56;;;;;;;453:981:117;17730:57:56;;;16925:104;453:981:117;;;18181:53:56;;;;;;;453:981:117;;;;;;;;;;:::i;:::-;;;;;;18181:53:56;2983:4:76;;18181:53:56;;;;;;;;;;;;;;;453:981:117;18181:53:56;;;16925:104;1744:19:47;18765:67:56;1744:19:47;;18499:30:56;1744:19:47;;;18478:81:56;1744:19:47;18478:52:56;1744:19:47;;:::i;:::-;2983:4:76;18313:14:56;2983:4:76;;18313:14:56;:::i;:::-;18499:30;:::i;:::-;453:981:117;18478:52:56;;:::i;:::-;18533:26;;;;:::i;18478:81::-;465:4:47;;5832:87;;;;;;1744:19;;:::i;:::-;18765:67:56;:::i;:::-;18921:26;:32;:26;;;;;:::i;:32::-;18892:61;;;;:::i;:::-;453:981:117;19124:55:56;453:981:117;;19124:55:56;;;;;;;;;;:::i;:::-;;2983:4:76;;19124:55:56;;;;;;;453:981:117;19124:55:56;;;16925:104;19282:24;20104:83;19282:24;;;20125:43;19282:24;19316:35;19282:24;453:981:117;19282:24:56;;:::i;:::-;19316:35;;;:::i;:::-;453:981:117;20125:43:56;;:::i;:::-;20104:83;;:::i;19124:55::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;19124:55:56;;;;453:981:117;;19124:55:56;;;;;;;;453:981:117;;;;;;;;;18181:53:56;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;;;;18181:53:56;453:981:117;;;;;18765:67:56;18181:53;;;;;;;;453:981:117;;;;;;;;;17730:57:56;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;17730:57:56;;;;;;;;;16960:3;16996:18;;;;:::i;:::-;453:981:117;-1:-1:-1;;453:981:117;;;;;;;16979:39:56;17017:1;16979:39;;;;;:::i;:::-;453:981:117;;16930:13:56;;453:981:117;;;;;;;;;;;;;;;;;-1:-1:-1;;453:981:117;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13855:31:56;453:981:117;14330:66:56;453:981:117;;;:::i;:::-;13855:31:56;;;;;;;;;;;:::i;:::-;1744:19:47;14330:66:56;1744:19:47;;;;:::i;:::-;14283:14:56;2368:4:76;;14283:14:56;:::i;:::-;453:981:117;;14330:66:56;;;;;453:981:117;14330:66:56;;;;;:::i;:::-;;2368:4:76;;14330:66:56;;;;;;;;;453:981:117;14330:66:56;;;453:981:117;14500:29:56;15210:67;15380:37;14500:29;1744:19:47;15064:30:56;14500:29;;14836:57;14500:29;;14837:41;15427:34;14500:29;14849;453:981:117;14500:29:56;15572:14;14500:29;;;14487:42;14500:29;;:::i;:::-;453:981:117;14487:42:56;;:::i;:::-;14849:29;;;:::i;:::-;453:981:117;14837:41:56;;:::i;14836:57::-;15064:30;;:::i;15210:67::-;453:981:117;;;;15380:37:56;:::i;:::-;15427:34;;;:::i;:::-;453:981:117;15572:14:56;:::i;:::-;453:981:117;;;;;;;;;14330:66:56;453:981:117;;;;;;;:::i;14330:66:56:-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;;;;;;;15210:67:56;14330:66;;;;;-1:-1:-1;14330:66:56;;453:981:117;;;;;;-1:-1:-1;;453:981:117;;;;;;;;;;;;;;;;;;;;;;;;;;;4177:25:76;;;;;;453:981:117;;;;;;;;;;;4177:25:76;453:981:117;;;;;;-1:-1:-1;;453:981:117;;;;;;;;4077:4:76;453:981:117;;;;;;;;;22208:67:56;21515:30;453:981:117;;;;:::i;:::-;21515:30:56;;;;;;;;;;;:::i;:::-;1744:19:47;22208:67:56;1744:19:47;;;;:::i;:::-;21662:14:56;3605:4:76;;21662:14:56;:::i;:::-;453:981:117;;22208:67:56;;;;;453:981:117;22208:67:56;;;;;:::i;:::-;;3605:4:76;;22208:67:56;;;;;;;;;453:981:117;22208:67:56;;;453:981:117;22367:30:56;;453:981:117;23286:15:56;23114:37;22367:30;;23161:35;22973:38;22367:30;22859:32;22367:30;22648:63;22367:30;;22667;22367:43;:30;;;;;:::i;:43::-;22667:30;;;:::i;:::-;453:981:117;22648:63:56;;:::i;22859:32::-;22973:38;:::i;23161:35::-;453:981:117;23286:15:56;:::i;22208:67::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;;;;;;;22973:38:56;22208:67;;;;;-1:-1:-1;22208:67:56;;453:981:117;;;;;;-1:-1:-1;;453:981:117;;;;;;;;3840:16:76;453:981:117;;;;;;;;;1306:34;453:981;1358:21;453:981;;;:::i;:::-;1306:34;;;;;;;:::i;:::-;453:981;1358:21;;:::i;:::-;453:981;;;;;;8714:1:49;8697:18;;:82;8714:1;;;8730:16;8697:82;453:981:117;;;;;;;;;;;;;;;;;;;2004:6:47;;;;;2000:58;;2560:120;;8909:57:49;8984:34;2560:120:47;8714:1:49;453:981:117;2560:120:47;;;;453:981:117;8909:57:49;:::i;:::-;8984:34;;:::i;2000:58:47:-;2033:14;453:981:117;2033:14:47;453:981:117;2033:14:47;453:981:117;;;;;;;;;;;8909:57:49;8984:34;453:981:117;;;;;;8909:57:49;:::i;453:981:117:-;;;;;;;;;;8697:82:49;8714:1;8697:82;;453:981:117;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;;453:981:117;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;-1:-1:-1;;453:981:117;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;453:981:117;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;;453:981:117;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;-1:-1:-1;453:981:117;;;;;;;;;;624:394;;453:981;;;;;;795:19;;783:31;;795:19;;453:981;;;:::i;:::-;465:4:47;4665:13:49;453:981:117;4660:152:49;795:19:117;;;4660:152:49;4826:14;;;;;;4822:67;;830:71:117;:::o;4822:67:49:-;4863:15;453:981:117;4863:15:49;;453:981:117;4863:15:49;4710:3;453:981:117;;4680:28:49;;;;;4759:11;465:4:47;838:5;4759:11:49;;:41;:11;;;;;:::i;:::-;453:981:117;4779:20:49;;;;:::i;:::-;453:981:117;4759:41:49;;:::i;:::-;838:5:47;;:::i;:::-;453:981:117;4710:3:49;453:981:117;4665:13:49;;;4680:28;;;779:233:117;453:981;;;:::i;:::-;465:4:47;6374:13:49;453:981:117;6369:148:49;795:19:117;;;6531:14:49;;;;;;6527:67;;932:69:117;:::o;6419:3:49:-;453:981:117;;6389:28:49;;;;;6466:11;6450:56;6466:11;;:39;:11;;;;;:::i;:::-;453:981:117;6484:20:49;;;;:::i;:::-;453:981:117;6466:39:49;;:::i;6450:56::-;6419:3;453:981:117;6374:13:49;;;453:981:117;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;638:5:47;453:981:117;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;17017:1:56;453:981:117;;;;;;;;;:::i;:::-;;;;:::o;4760:637:47:-;;465:4;;4997:8;;;465:4;;5021:8;;;:::o;4993:398::-;453:981:117;5050:8:47;;453:981:117;;5081:11:47;;;;;;:::i;:::-;5074:18;:::o;5046:345::-;453:981:117;5113:9:47;;453:981:117;;5155:11:47;;;;5187:21;5155:11;;:::i;:::-;5187:21;;:::i;5109:282::-;5253:20;;;;:::i;:::-;1068:5;453:981:117;1068:5:47;;;:::i;:::-;1186:122;-1:-1:-1;;1186:122:47;;;;;;;;453:981:117;;;;;;;;5366:14:47;;;:::i;887:427::-;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;-1:-1:-1;;1186:122:47;;;;;;;;887:427;:::o;24291:315:56:-;;24430:31;453:981:117;24291:315:56;24430:31;453:981:117;;24430:31:56;;;;453:981:117;24430:31:56;;453:981:117;24430:31:56;;;;;;;;;;;24291:315;24475:34;;;;24471:129;;24291:315;;:::o;24471:129::-;24532:57;24430:31;24532:57;24430:31;453:981:117;;;;24430:31:56;24532:57;24430:31;;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;24430:31:56;;;;;;;-1:-1:-1;24430:31:56;;;453:981:117;;;24430:31:56;453:981:117;;;;;1822:864:47;;2004:6;;2000:58;;465:4;453:981:117;;;;;;;;;;;;;;;2560:120:47;;-1:-1:-1;;2560:120:47;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;1822:864;2004:6;;2000:58;;2560:120;2153:5;;;;:::i;:::-;2560:120;-1:-1:-1;;2560:120:47;;;;;;;;1822:864;:::o;23639:315:56:-;;23778:31;453:981:117;23639:315:56;23778:31;453:981:117;;23778:31:56;;;;453:981:117;23778:31:56;;453:981:117;23778:31:56;;;;;;;;;;;23639:315;23823:34;;;;23819:129;;23639:315;;:::o;23819:129::-;23880:57;23778:31;23880:57;23778:31;453:981:117;;;;23778:31:56;23880:57;23778:31;;;;;;;;;;;;;;;;;;:::i;:::-;;;453:981:117;;;;;23778:31:56;;;;;;;-1:-1:-1;23778:31:56;;3736:794:47;465:4;;3975:8;;;465:4;;3999:8;;;;:::o;3971:553::-;4028:8;;453:981:117;4028:8:47;;453:981:117;;838:5:47;;;;;;:::i;:::-;453:981:117;4052:20:47;:::o;4024:500::-;453:981:117;4093:9:47;;453:981:117;;838:5:47;;;;;;:::i;:::-;453:981:117;838:5:47;;:::i;4089:435::-;4237:20;;;;;:::i;:::-;1068:5;;;:::i;:::-;453:981:117;-1:-1:-1;;1186:122:47;;;;;;;;;;453:981:117;;;;;;;;;4347:14:47;;;;;4381:8;;;453:981:117;4381:8:47;:::o;4343:171::-;453:981:117;;4460:21:47;:::o;2648:13:48:-;;;;;;;;:::o;:::-;;;;;;;:::o;4496:2300::-;;4577:6;;4573:131;;4718:6;;4714:45;;453:981:117;1564:4:48;453:981:117;5129:68:48;;453:981:117;5591:24:48;;;5587:83;;5774:28;2707:26;5774:28;:60;;;4496:2300;5770:720;;;1564:4;;1789;;21319:38;;2648:13;;2593;;;;2707:26;;2648:13;;21319:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22285:2;2648:13;;;22203:2;2648:13;;;22121:2;2648:13;;;22040:1;2648:13;;;21959:1;2648:13;;;21878:1;2648:13;;;21797:1;2648:13;;2593;;;;;;;2648;;;;;;;;;;;;;2593;1564:4;5770:720;;2648:13;2400:6;6615:36;;;;:76;;;5770:720;6613:79;6609:137;;6771:17;7080:25;;;;:54;;;5770:720;7078:57;7074:112;;453:981:117;7316:5:48;453:981:117;7316:5:48;;7312:417;;5770:720;-1:-1:-1;9497:3:48;;2789:21;9082:7;;2789:21;;2707:26;;1754:4;9134:12;2845:56;9078:252;;2648:13;9723:23;9785:7;3117:22;9785:7;;;9781:104;;9078:252;3246:22;9902:7;;;9898:104;;9078:252;3368:21;10019:7;;;10015:104;;9078:252;3486:21;10136:7;;;10132:104;;9078:252;3602:21;10253:7;;;10249:104;;9078:252;10370:7;;;;10366:104;;9078:252;3832:20;10487:7;;;10483:104;;9078:252;3947:20;10604:7;;;10600:104;;9078:252;11567:1;2648:13;;;;;;11645:1;2648:13;;;;;;11723:1;2648:13;;;;;;;11801:1;2648:13;;;;;;11879:1;2648:13;;;;;;11957:1;2648:13;;;;;;;12035:1;2648:13;;;;;;;12113:1;2648:13;;;;;;;12191:2;2648:13;;;;;;;12270:2;2648:13;;;;;;;12349:2;2648:13;;;;;;2593;;;;;;;;;;;;;2648;;;;13075:54;;;;;13094:26;;;:::i;10600:104::-;4003:21;2707:26;;;;2648:13;;;10600:104;;;10483;3888:21;2707:26;;;;2648:13;;;10483:104;;;10366;3773:21;2707:26;;;;2648:13;;;10366:104;;;10249;3658:21;2707:26;;;;2648:13;;;10249:104;;;10132;3542:22;2707:26;;;;2648:13;;;10132:104;;;10015;3424:24;2707:26;;;;2648:13;;;10015:104;;;9898;3303:27;2707:26;;;;2648:13;;;9898:104;;;9781;3174:34;;-1:-1:-1;2707:26:48;;9781:104;;9078:252;2953:20;9171:7;;2953:20;;2707:26;;1754:4;9223:12;3008:28;9167:163;9078:252;;9167:163;1754:4;9274:11;9284:1;9167:163;9078:252;;7312:417;7714:4;;-1:-1:-1;453:981:117;4181:19:48;;-1:-1:-1;9497:3:48;7312:417;;7074:112;7158:17;453:981:117;7158:17:48;;453:981:117;7158:17:48;7080:54;7109:25;2349:6;7109:25;;;7080:54;;6609:137;6715:20;453:981:117;6715:20:48;;453:981:117;6715:20:48;6615:76;6655:36;2349:6;6655:36;;;6615:76;;5770:720;6451:13;1564:4;6451:13;453:981:117;14954:10:48;;;;14950:381;;5770:720;16656:14;17116:3;16656:14;453:981:117;2648:13:48;16708:16;;;16704:126;;5770:720;2648:13;16848:16;;;16844:126;;5770:720;2648:13;;;;;;;3174:34;;17276:7;;;;17272:94;;5770:720;3303:27;;;17384:7;;;;17380:94;;5770:720;3424:24;;17492:7;;;;17488:94;;5770:720;3542:22;;17600:7;;;;17596:94;;5770:720;3658:21;;17708:7;;;;17704:94;;5770:720;3773:21;;17816:7;;;;17812:94;;5770:720;3888:21;;17924:7;;;;17920:94;;5770:720;4003:21;;18032:7;;;;18028:94;;5770:720;4120:21;;18140:8;;;;18136:97;;5770:720;4237:21;;18251:8;;;;18247:97;;5770:720;1754:4;18891:38;1754:4;2593:13;;2707:26;2593:13;;;2707:26;;2648:13;18891:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;19369:1;19450;19531;19612;19693:2;2648:13;;;;;;;;;;;;;;;;;;;;;;;;2593;;;;;2648;;2593;2648;20303:35;;;;;453:981:117;4181:19:48;20303:35;2648:13;5770:720;;20303:35;;;18247:97;1754:4;4181:19;2648:13;;;2593;;18247:97;;;;18136;1754:4;4063:20;2648:13;;;2593;;18136:97;;;;18028:94;1754:4;3947:20;2648:13;;;2593;;18028:94;;;;17920;1754:4;3832:20;2648:13;;;2593;;17920:94;;;;17812;1754:4;2648:13;;;;2593;;17812:94;;;;17704;1754:4;3602:21;2648:13;;;2593;;17704:94;;;;17596;1754:4;3486:21;2648:13;;;2593;;17596:94;;;;17488;1754:4;3368:21;2648:13;;;2593;;17488:94;;;;17380;1754:4;3246:22;2648:13;;;2593;;17380:94;;;;17272;3117:22;2648:13;;;;;2593;;17272:94;;;;;16844:126;2648:13;3008:28;2953:20;2648:13;;2593;;16844:126;;16704;2648:13;2845:56;2648:13;;2789:21;16704:126;;14950:381;15248:21;;;;;;:::i;:::-;15316:4;;17116:3;14950:381;;5774:60;5806:28;2593:13;5806:28;;5774:60;;5587:83;5638:21;453:981:117;5638:21:48;;453:981:117;5638:21:48;5129:68;5169:17;453:981:117;5169:17:48;;453:981:117;5169:17:48;4714:45;4740:8;;453:981:117;4740:8:48;:::o;4573:131::-;4671:22;;1564:4;4671:22;:::o"},"methodIdentifiers":{"computeAddLiquiditySingleTokenExactOut(uint256[],uint256,uint256,uint256,uint256)":"85d5261a","computeAddLiquidityUnbalanced(uint256[],uint256[],uint256,uint256)":"d9c7cc7a","computeBalance(uint256[],uint256,uint256)":"16a0b3e0","computeInvariant(uint256[],uint8)":"984de9e8","computeProportionalAmountsIn(uint256[],uint256,uint256)":"c548e4d8","computeProportionalAmountsOut(uint256[],uint256,uint256)":"da317980","computeRemoveLiquiditySingleTokenExactIn(uint256[],uint256,uint256,uint256,uint256)":"3ab05915","computeRemoveLiquiditySingleTokenExactOut(uint256[],uint256,uint256,uint256,uint256)":"9a87ffbf","getMaximumInvariantRatio()":"273c1adf","getMaximumSwapFeePercentage()":"654cf15d","getMinimumInvariantRatio()":"b677fa56","getMinimumSwapFeePercentage()":"ce20ece7","onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))":"72c98186","weights(uint256)":"b5f163ff"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_weights\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExponentOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExponent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProductOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroInvariant\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeAddLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountInWithFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeAddLiquidityUnbalanced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"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[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"rounding\",\"type\":\"uint8\"}],\"name\":\"computeInvariant\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"name\":\"computeProportionalAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"}],\"name\":\"computeProportionalAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeRemoveLiquiditySingleTokenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutWithFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"currentBalances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"tokenOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exactAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"computeRemoveLiquiditySingleTokenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmounts\",\"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\":[{\"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\":\"\",\"type\":\"tuple\"}],\"name\":\"onSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"weights\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvariantRatioAboveMax(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"maxInvariantRatio\":\"The maximum allowed invariant ratio\"}}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"details\":\"This value is determined by each pool type, and depends on the specific math used to compute the price curve.\",\"params\":{\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"minInvariantRatio\":\"The minimum allowed invariant ratio\"}}],\"ZeroInvariant()\":[{\"details\":\"Most commonly, this happens when a token balance is zero.\"}]},\"kind\":\"dev\",\"methods\":{\"getMaximumInvariantRatio()\":{\"returns\":{\"_0\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMaximumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"_0\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The minimum swap fee percentage for a pool\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"BaseOutOfBounds()\":[{\"notice\":\"This error is thrown when a base is not within an acceptable range.\"}],\"ExponentOutOfBounds()\":[{\"notice\":\"This error is thrown when a exponent is not within an acceptable range.\"}],\"InvalidExponent()\":[{\"notice\":\"This error is thrown when an exponent used in the exp function is not within an acceptable range.\"}],\"InvariantRatioAboveMax(uint256,uint256)\":[{\"notice\":\"An add liquidity operation increased the invariant above the limit.\"}],\"InvariantRatioBelowMin(uint256,uint256)\":[{\"notice\":\"A remove liquidity operation decreased the invariant below the limit.\"}],\"ProductOutOfBounds()\":[{\"notice\":\"This error is thrown when the exponent * ln(base) is not within an acceptable range.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}],\"ZeroInvariant()\":[{\"notice\":\"Error thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/WeightedBasePoolMathMock.sol\":\"WeightedBasePoolMathMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":{\"keccak256\":\"0xb31be209c69a6e60f4486b793bfc57b3ab7aa25efd29f40e981d5b9c95196f7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://04a10cf9c7a408f0d617d8f25dedd1d4d8d0411ac022b26293b39fccfbf41c71\",\"dweb:/ipfs/QmaExV5EYT4dtE9EAybKaraqXnbpM4usyAfFV5DHfatkof\"]},\"@balancer-labs/v3-vault/contracts/BasePoolMath.sol\":{\"keccak256\":\"0x28078c6fa4d55418c25505d4683642cb51fe55b2155ef7418db6c70631a30d6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://864b91fdc2b69725bcc07f06d9adebe87117561582fa58f1e4410d8928cd205c\",\"dweb:/ipfs/QmWCDsbTxtmEMLhorqfGF1LDMHMqqVnV9sk9mUTPR7eog8\"]},\"@balancer-labs/v3-vault/contracts/test/BasePoolMathMock.sol\":{\"keccak256\":\"0x8d03867c2d8a32b4d3407df0b8e0bc8997eb838c6bc8339e5bbd5fd41cf82910\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://379bc567783a42259380747ad96e284f7fa9264a75bbe6dc1a277959bc9ff0ae\",\"dweb:/ipfs/QmdVAwsacp2tbXGtGdTSnd6FTHKvUYWWdpdvSnyD4zJqnq\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"contracts/test/WeightedBasePoolMathMock.sol\":{\"keccak256\":\"0x19a078ead8f1c17061bc1f5e73d71da6b5bde566505f5badeb947bec44c2e94f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5016db44ae4209e87f246d8bcfd58a1599a4a859364b6c7e8bbbd550ed15bbb4\",\"dweb:/ipfs/QmSrp6qxsxo7pRJo27arvqyqJ8QvMKriceUQcDbsr9pr4V\"]}},\"version\":1}"}},"contracts/test/WeightedMathMock.sol":{"WeightedMathMock":{"abi":[{"inputs":[],"name":"BaseOutOfBounds","type":"error"},{"inputs":[],"name":"ExponentOutOfBounds","type":"error"},{"inputs":[],"name":"InvalidExponent","type":"error"},{"inputs":[],"name":"MaxInRatio","type":"error"},{"inputs":[],"name":"MaxOutRatio","type":"error"},{"inputs":[],"name":"ProductOutOfBounds","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"inputs":[],"name":"ZeroInvariant","type":"error"},{"inputs":[{"internalType":"uint256","name":"balanceIn","type":"uint256"},{"internalType":"uint256","name":"weightIn","type":"uint256"},{"internalType":"uint256","name":"balanceOut","type":"uint256"},{"internalType":"uint256","name":"weightOut","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"computeInGivenExactOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"enum Rounding","name":"rounding","type":"uint8"}],"name":"computeInvariant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"balanceIn","type":"uint256"},{"internalType":"uint256","name":"weightIn","type":"uint256"},{"internalType":"uint256","name":"balanceOut","type":"uint256"},{"internalType":"uint256","name":"weightOut","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"computeOutGivenExactIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080806040523460155761117e908161001a8239f35b5f80fdfe6080604052600480361015610012575f80fd5b5f3560e01c8063388f6bd0146101ca5780633c42a2d6146100c55763f33d14101461003b575f80fd5b346100c15760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100c15767ffffffffffffffff81358181116100c15761008990369084016102e7565b916024359182116100c1576100a0913691016102e7565b9060443560028110156100c1576020926100b9926103ab565b604051908152f35b5f80fd5b50346100c1576100d4366102a7565b93670de0b6b3a7640000959391929594856100ee83610557565b0481116101a3579061010361010992826104dc565b90610748565b928482029180830486149015171561017757821561014b5750610142926020959261013592049061059e565b838181039110029061058b565b04604051908152f35b6012907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6011907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b847f340a4533000000000000000000000000000000000000000000000000000000005f525ffd5b50346100c1576101d9366102a7565b670de0b6b3a76400006101ee84939594610557565b0481116102805781039080821161025457916102116102179261021d9594610748565b92610748565b9061059e565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000083019283116101775760206100b9848461064b565b6011867f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b857f64590b9f000000000000000000000000000000000000000000000000000000005f525ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126100c1576004359060243590604435906064359060843590565b9080601f830112156100c15781359060209167ffffffffffffffff9384821161037e578160051b91604051957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8501168701908782109082111761037e5760405285526020808601928201019283116100c157602001905b82821061036f575050505090565b81358152908301908301610361565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b909160028110156104af576001918291820361045457670de0b6b3a7640000935f935b610408575b5050505080156103e05790565b7f26543689000000000000000000000000000000000000000000000000000000005f5260045ffd5b815184101561044f5782670de0b6b3a7640000610446869761044061042e859987610516565b516104398b89610516565b519061068c565b9061058b565b049501936103ce565b6103d3565b670de0b6b3a7640000935f935b610472575050505080156103e05790565b815184101561044f57826104a785966104a161048f849886610516565b5161049a8a88610516565b519061059e565b9061064b565b950193610461565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b919082018092116104e957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805182101561052a5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90670429d069189e0000918281029281840414901517156104e957565b90612710918281029281840414901517156104e957565b818102929181159184041417156104e957565b90670de0b6b3a7640000908181036105b557505090565b671bc16d674ec8000081036105d3575050806105d09161064b565b90565b673782dace9d90000081036105f75750506105f1816105d09261064b565b8061064b565b6106019192610811565b90600161060d83610574565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116104e9576105d0916104dc565b906106559161058b565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b670de0b6b3a7640000918083036106a35750905090565b8290671bc16d674ec8000081036106c4575050806106c09161058b565b0490565b673782dace9d90000081036106e857506106e1826106c09361058b565b048061058b565b90506106f391610811565b6106fc81610574565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384830104019015150290600182018083116104e957811015610743575050505f90565b030190565b90801561079857670de0b6b3a7640000918281029281840414901517156104e9576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b80156107da576ec097ce7bc90715b34b9f10000000000590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b81156107da570590565b90801561113a578115611134578160ff1c61110c57770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156110e45781670c7d713b49da000012806110d3575b15610d7057670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906108aa908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302610807565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580610d5d575b15610d3557819082121580610d22575b15610cfa575f915f8112610ceb575b506064906806f05b59d3b20000008112610c88577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215610c4f575b6856bc75e2d631000000811215610c15575b682b5e3af16b18800000811215610bdd575b6815af1d78b58c400000811215610ba5575b680ad78ebc5ac6200000811215610b6e575b82811215610b37575b6802b5e3af16b1880000811215610b00575b68015af1d78b58c40000811215610ac9575b60028382800205056003848383020505600485848302050560058685830205056006878683020505876007818884020505916008828985020505936009838a8702050595600a848b8902050597600b858c8b02050599600c868d8d0205059b01010101010101010101010102050205905f146105d0576105d0906107c0565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590610a4a565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590610a38565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590610a26565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590610a1d565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590610a0b565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906109f9565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906109e7565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016109d5565b6803782dace9d90000008112610cd8577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926109c0565b68056bc75e2d63100000826001926109c0565b600192505f0390506064610964565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315610955565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315610945565b81670de0b6b3a7640000925f918481126110bd575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c0000000000000821215611092575b73011798004d755d3c8bc8e03204cf44619e000000821215611071575b820290808302906e01855144814a7ff805980ff0084000908183121561104e575b50506b02df0ab5a80a22c61ab5a7008082121561102e575b50693f1fce3da636ea5cf8508082121561100e575b50690127fa27722cc06cc5e280821215610fee575b5068280e60114edb805d0380821215610fce575b50680ebc5fb4174612111080821215610fb7575b506808f00f760a4b2db55d80821215610f97575b506806f5f177578893793780821215610f77575b506806248f33704b28660380821215610f58575b506805c548670b9510e7ac80821215610f39575b50610ee668056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102610807565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f14610f34575f035b02610919565b610f2e565b68056bc75e2d631000006756bc75e2d63100009202059101905f610eaa565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f610e96565b68056bc75e2d6310000068015af1d78b58c400009202059101905f610e82565b68056bc75e2d631000006802b5e3af16b18800009202059101905f610e6e565b68056bc75e2d63100000809202059101905f610e5a565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f610e46565b68056bc75e2d631000006815af1d78b58c4000009202059101905f610e32565b68056bc75e2d63100000682b5e3af16b188000009202059101905f610e1d565b68056bc75e2d631000006856bc75e2d6310000009202059101905f610e08565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f80610df0565b906b1425982cf597cd205cef73806803782dace9d900000091059101610dcf565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b2000000610db2565b90506110c991506107c0565b6001906064610d85565b50670f43fc2c04ee00008212610857565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212209dbc3cb5ffa9d30bf07da8c4a5192ef9dab112602c4288478d0b3004e9c786a664736f6c634300081a0033","opcodes":"PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x15 JUMPI PUSH2 0x117E SWAP1 DUP2 PUSH2 0x1A DUP3 CODECOPY RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x388F6BD0 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x3C42A2D6 EQ PUSH2 0xC5 JUMPI PUSH4 0xF33D1410 EQ PUSH2 0x3B JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC1 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xC1 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 DUP2 GT PUSH2 0xC1 JUMPI PUSH2 0x89 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x2E7 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0xC1 JUMPI PUSH2 0xA0 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x2E7 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x20 SWAP3 PUSH2 0xB9 SWAP3 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xC1 JUMPI PUSH2 0xD4 CALLDATASIZE PUSH2 0x2A7 JUMP JUMPDEST SWAP4 PUSH8 0xDE0B6B3A7640000 SWAP6 SWAP4 SWAP2 SWAP3 SWAP6 SWAP5 DUP6 PUSH2 0xEE DUP4 PUSH2 0x557 JUMP JUMPDEST DIV DUP2 GT PUSH2 0x1A3 JUMPI SWAP1 PUSH2 0x103 PUSH2 0x109 SWAP3 DUP3 PUSH2 0x4DC JUMP JUMPDEST SWAP1 PUSH2 0x748 JUMP JUMPDEST SWAP3 DUP5 DUP3 MUL SWAP2 DUP1 DUP4 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x177 JUMPI DUP3 ISZERO PUSH2 0x14B JUMPI POP PUSH2 0x142 SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0x135 SWAP3 DIV SWAP1 PUSH2 0x59E JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x58B JUMP JUMPDEST DIV PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x12 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0xC1 JUMPI PUSH2 0x1D9 CALLDATASIZE PUSH2 0x2A7 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x1EE DUP5 SWAP4 SWAP6 SWAP5 PUSH2 0x557 JUMP JUMPDEST DIV DUP2 GT PUSH2 0x280 JUMPI DUP2 SUB SWAP1 DUP1 DUP3 GT PUSH2 0x254 JUMPI SWAP2 PUSH2 0x211 PUSH2 0x217 SWAP3 PUSH2 0x21D SWAP6 SWAP5 PUSH2 0x748 JUMP JUMPDEST SWAP3 PUSH2 0x748 JUMP JUMPDEST SWAP1 PUSH2 0x59E JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP4 ADD SWAP3 DUP4 GT PUSH2 0x177 JUMPI PUSH1 0x20 PUSH2 0xB9 DUP5 DUP5 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x11 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP6 PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0xC1 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x84 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xC1 JUMPI DUP2 CALLDATALOAD SWAP1 PUSH1 0x20 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP3 GT PUSH2 0x37E JUMPI DUP2 PUSH1 0x5 SHL SWAP2 PUSH1 0x40 MLOAD SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x3F DUP6 ADD AND DUP8 ADD SWAP1 DUP8 DUP3 LT SWAP1 DUP3 GT OR PUSH2 0x37E JUMPI PUSH1 0x40 MSTORE DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xC1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x36F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x361 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x1 SWAP2 DUP3 SWAP2 DUP3 SUB PUSH2 0x454 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0x408 JUMPI JUMPDEST POP POP POP POP DUP1 ISZERO PUSH2 0x3E0 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x44F JUMPI DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x446 DUP7 SWAP8 PUSH2 0x440 PUSH2 0x42E DUP6 SWAP10 DUP8 PUSH2 0x516 JUMP JUMPDEST MLOAD PUSH2 0x439 DUP12 DUP10 PUSH2 0x516 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x68C JUMP JUMPDEST SWAP1 PUSH2 0x58B JUMP JUMPDEST DIV SWAP6 ADD SWAP4 PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x3D3 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0x472 JUMPI POP POP POP POP DUP1 ISZERO PUSH2 0x3E0 JUMPI SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x44F JUMPI DUP3 PUSH2 0x4A7 DUP6 SWAP7 PUSH2 0x4A1 PUSH2 0x48F DUP5 SWAP9 DUP7 PUSH2 0x516 JUMP JUMPDEST MLOAD PUSH2 0x49A DUP11 DUP9 PUSH2 0x516 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x59E JUMP JUMPDEST SWAP1 PUSH2 0x64B JUMP JUMPDEST SWAP6 ADD SWAP4 PUSH2 0x461 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x4E9 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x52A JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x4E9 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x4E9 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x4E9 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x5B5 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x5D3 JUMPI POP POP DUP1 PUSH2 0x5D0 SWAP2 PUSH2 0x64B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x5F7 JUMPI POP POP PUSH2 0x5F1 DUP2 PUSH2 0x5D0 SWAP3 PUSH2 0x64B JUMP JUMPDEST DUP1 PUSH2 0x64B JUMP JUMPDEST PUSH2 0x601 SWAP2 SWAP3 PUSH2 0x811 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x60D DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x4E9 JUMPI PUSH2 0x5D0 SWAP2 PUSH2 0x4DC JUMP JUMPDEST SWAP1 PUSH2 0x655 SWAP2 PUSH2 0x58B JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x6A3 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x6C4 JUMPI POP POP DUP1 PUSH2 0x6C0 SWAP2 PUSH2 0x58B JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x6E8 JUMPI POP PUSH2 0x6E1 DUP3 PUSH2 0x6C0 SWAP4 PUSH2 0x58B JUMP JUMPDEST DIV DUP1 PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x6F3 SWAP2 PUSH2 0x811 JUMP JUMPDEST PUSH2 0x6FC DUP2 PUSH2 0x574 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x4E9 JUMPI DUP2 LT ISZERO PUSH2 0x743 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x798 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x1 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x7DA JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x7DA JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x113A JUMPI DUP2 ISZERO PUSH2 0x1134 JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x110C JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x10E4 JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x10D3 JUMPI JUMPDEST ISZERO PUSH2 0xD70 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x8AA SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x807 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0xD5D JUMPI JUMPDEST ISZERO PUSH2 0xD35 JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0xD22 JUMPI JUMPDEST ISZERO PUSH2 0xCFA JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0xCEB JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0xC88 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0xC4F JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0xC15 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0xBDD JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0xBA5 JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0xB6E JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0xB37 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0xB00 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0xAC9 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV PUSH1 0x5 DUP7 DUP6 DUP4 MUL SDIV SDIV PUSH1 0x6 DUP8 DUP7 DUP4 MUL SDIV SDIV DUP8 PUSH1 0x7 DUP2 DUP9 DUP5 MUL SDIV SDIV SWAP2 PUSH1 0x8 DUP3 DUP10 DUP6 MUL SDIV SDIV SWAP4 PUSH1 0x9 DUP4 DUP11 DUP8 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP5 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP6 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP7 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x5D0 JUMPI PUSH2 0x5D0 SWAP1 PUSH2 0x7C0 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA4A JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA38 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA26 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA1D JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA0B JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x9F9 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x9E7 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x9D5 JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0xCD8 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x9C0 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x9C0 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x964 JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x955 JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x945 JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x10BD JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x1092 JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x1071 JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x104E JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x102E JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x100E JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0xFEE JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0xFCE JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0xFB7 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0xF97 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0xF77 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0xF58 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0xF39 JUMPI JUMPDEST POP PUSH2 0xEE6 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x807 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0xF34 JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x919 JUMP JUMPDEST PUSH2 0xF2E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xEAA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE96 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE82 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE6E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE5A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE46 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE32 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE1D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE08 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0xDF0 JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0xDCF JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0xDB2 JUMP JUMPDEST SWAP1 POP PUSH2 0x10C9 SWAP2 POP PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0xD85 JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x857 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xBC EXTCODECOPY 0xB5 SELFDESTRUCT 0xA9 0xD3 SIGNEXTEND CREATE PUSH30 0xA8C4A5192EF9DAB112602C4288478D0B3004E9C786A664736F6C63430008 BYTE STOP CALLER ","sourceMap":"259:1097:118:-:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_array_uint256_dyn":{"entryPoint":743,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint256t_uint256t_uint256t_uint256t_uint256":{"entryPoint":679,"id":null,"parameterSlots":1,"returnSlots":5},"checked_add_uint256":{"entryPoint":1244,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":1419,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_7348":{"entryPoint":1367,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256_7370":{"entryPoint":1396,"id":null,"parameterSlots":1,"returnSlots":1},"fun_computeInvariant":{"entryPoint":939,"id":45665,"parameterSlots":3,"returnSlots":1},"fun_mulDivUp":{"entryPoint":1864,"id":7660,"parameterSlots":2,"returnSlots":1},"fun_mulUp":{"entryPoint":1611,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_pow":{"entryPoint":2065,"id":8093,"parameterSlots":2,"returnSlots":1},"fun_powDown":{"entryPoint":1676,"id":7756,"parameterSlots":2,"returnSlots":1},"fun_powUp":{"entryPoint":1438,"id":7823,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":1302,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_div_int256":{"entryPoint":2055,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_div_int256_7372":{"entryPoint":1984,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600480361015610012575f80fd5b5f3560e01c8063388f6bd0146101ca5780633c42a2d6146100c55763f33d14101461003b575f80fd5b346100c15760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100c15767ffffffffffffffff81358181116100c15761008990369084016102e7565b916024359182116100c1576100a0913691016102e7565b9060443560028110156100c1576020926100b9926103ab565b604051908152f35b5f80fd5b50346100c1576100d4366102a7565b93670de0b6b3a7640000959391929594856100ee83610557565b0481116101a3579061010361010992826104dc565b90610748565b928482029180830486149015171561017757821561014b5750610142926020959261013592049061059e565b838181039110029061058b565b04604051908152f35b6012907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6011907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b847f340a4533000000000000000000000000000000000000000000000000000000005f525ffd5b50346100c1576101d9366102a7565b670de0b6b3a76400006101ee84939594610557565b0481116102805781039080821161025457916102116102179261021d9594610748565b92610748565b9061059e565b917ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000083019283116101775760206100b9848461064b565b6011867f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b857f64590b9f000000000000000000000000000000000000000000000000000000005f525ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126100c1576004359060243590604435906064359060843590565b9080601f830112156100c15781359060209167ffffffffffffffff9384821161037e578160051b91604051957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8501168701908782109082111761037e5760405285526020808601928201019283116100c157602001905b82821061036f575050505090565b81358152908301908301610361565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b909160028110156104af576001918291820361045457670de0b6b3a7640000935f935b610408575b5050505080156103e05790565b7f26543689000000000000000000000000000000000000000000000000000000005f5260045ffd5b815184101561044f5782670de0b6b3a7640000610446869761044061042e859987610516565b516104398b89610516565b519061068c565b9061058b565b049501936103ce565b6103d3565b670de0b6b3a7640000935f935b610472575050505080156103e05790565b815184101561044f57826104a785966104a161048f849886610516565b5161049a8a88610516565b519061059e565b9061064b565b950193610461565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b919082018092116104e957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805182101561052a5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90670429d069189e0000918281029281840414901517156104e957565b90612710918281029281840414901517156104e957565b818102929181159184041417156104e957565b90670de0b6b3a7640000908181036105b557505090565b671bc16d674ec8000081036105d3575050806105d09161064b565b90565b673782dace9d90000081036105f75750506105f1816105d09261064b565b8061064b565b6106019192610811565b90600161060d83610574565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301040190151502600181018091116104e9576105d0916104dc565b906106559161058b565b6001670de0b6b3a76400007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b670de0b6b3a7640000918083036106a35750905090565b8290671bc16d674ec8000081036106c4575050806106c09161058b565b0490565b673782dace9d90000081036106e857506106e1826106c09361058b565b048061058b565b90506106f391610811565b6106fc81610574565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384830104019015150290600182018083116104e957811015610743575050505f90565b030190565b90801561079857670de0b6b3a7640000918281029281840414901517156104e9576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b80156107da576ec097ce7bc90715b34b9f10000000000590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b81156107da570590565b90801561113a578115611134578160ff1c61110c57770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156110e45781670c7d713b49da000012806110d3575b15610d7057670de0b6b3a7640000916ec097ce7bc90715b34b9f1000000000906108aa908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302610807565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008181131580610d5d575b15610d3557819082121580610d22575b15610cfa575f915f8112610ceb575b506064906806f05b59d3b20000008112610c88577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215610c4f575b6856bc75e2d631000000811215610c15575b682b5e3af16b18800000811215610bdd575b6815af1d78b58c400000811215610ba5575b680ad78ebc5ac6200000811215610b6e575b82811215610b37575b6802b5e3af16b1880000811215610b00575b68015af1d78b58c40000811215610ac9575b60028382800205056003848383020505600485848302050560058685830205056006878683020505876007818884020505916008828985020505936009838a8702050595600a848b8902050597600b858c8b02050599600c868d8d0205059b01010101010101010101010102050205905f146105d0576105d0906107c0565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590610a4a565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590610a38565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590610a26565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590610a1d565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590610a0b565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000849201920205906109f9565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000849201920205906109e7565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000016109d5565b6803782dace9d90000008112610cd8577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926109c0565b68056bc75e2d63100000826001926109c0565b600192505f0390506064610964565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315610955565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c80000821315610945565b81670de0b6b3a7640000925f918481126110bd575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c0000000000000821215611092575b73011798004d755d3c8bc8e03204cf44619e000000821215611071575b820290808302906e01855144814a7ff805980ff0084000908183121561104e575b50506b02df0ab5a80a22c61ab5a7008082121561102e575b50693f1fce3da636ea5cf8508082121561100e575b50690127fa27722cc06cc5e280821215610fee575b5068280e60114edb805d0380821215610fce575b50680ebc5fb4174612111080821215610fb7575b506808f00f760a4b2db55d80821215610f97575b506806f5f177578893793780821215610f77575b506806248f33704b28660380821215610f58575b506805c548670b9510e7ac80821215610f39575b50610ee668056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102610807565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f14610f34575f035b02610919565b610f2e565b68056bc75e2d631000006756bc75e2d63100009202059101905f610eaa565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f610e96565b68056bc75e2d6310000068015af1d78b58c400009202059101905f610e82565b68056bc75e2d631000006802b5e3af16b18800009202059101905f610e6e565b68056bc75e2d63100000809202059101905f610e5a565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f610e46565b68056bc75e2d631000006815af1d78b58c4000009202059101905f610e32565b68056bc75e2d63100000682b5e3af16b188000009202059101905f610e1d565b68056bc75e2d631000006856bc75e2d6310000009202059101905f610e08565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f80610df0565b906b1425982cf597cd205cef73806803782dace9d900000091059101610dcf565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b2000000610db2565b90506110c991506107c0565b6001906064610d85565b50670f43fc2c04ee00008212610857565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212209dbc3cb5ffa9d30bf07da8c4a5192ef9dab112602c4288478d0b3004e9c786a664736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x388F6BD0 EQ PUSH2 0x1CA JUMPI DUP1 PUSH4 0x3C42A2D6 EQ PUSH2 0xC5 JUMPI PUSH4 0xF33D1410 EQ PUSH2 0x3B JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0xC1 JUMPI PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC CALLDATASIZE ADD SLT PUSH2 0xC1 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 DUP2 GT PUSH2 0xC1 JUMPI PUSH2 0x89 SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x2E7 JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP2 DUP3 GT PUSH2 0xC1 JUMPI PUSH2 0xA0 SWAP2 CALLDATASIZE SWAP2 ADD PUSH2 0x2E7 JUMP JUMPDEST SWAP1 PUSH1 0x44 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x20 SWAP3 PUSH2 0xB9 SWAP3 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST POP CALLVALUE PUSH2 0xC1 JUMPI PUSH2 0xD4 CALLDATASIZE PUSH2 0x2A7 JUMP JUMPDEST SWAP4 PUSH8 0xDE0B6B3A7640000 SWAP6 SWAP4 SWAP2 SWAP3 SWAP6 SWAP5 DUP6 PUSH2 0xEE DUP4 PUSH2 0x557 JUMP JUMPDEST DIV DUP2 GT PUSH2 0x1A3 JUMPI SWAP1 PUSH2 0x103 PUSH2 0x109 SWAP3 DUP3 PUSH2 0x4DC JUMP JUMPDEST SWAP1 PUSH2 0x748 JUMP JUMPDEST SWAP3 DUP5 DUP3 MUL SWAP2 DUP1 DUP4 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x177 JUMPI DUP3 ISZERO PUSH2 0x14B JUMPI POP PUSH2 0x142 SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0x135 SWAP3 DIV SWAP1 PUSH2 0x59E JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x58B JUMP JUMPDEST DIV PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x12 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x11 SWAP1 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP5 PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP CALLVALUE PUSH2 0xC1 JUMPI PUSH2 0x1D9 CALLDATASIZE PUSH2 0x2A7 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x1EE DUP5 SWAP4 SWAP6 SWAP5 PUSH2 0x557 JUMP JUMPDEST DIV DUP2 GT PUSH2 0x280 JUMPI DUP2 SUB SWAP1 DUP1 DUP3 GT PUSH2 0x254 JUMPI SWAP2 PUSH2 0x211 PUSH2 0x217 SWAP3 PUSH2 0x21D SWAP6 SWAP5 PUSH2 0x748 JUMP JUMPDEST SWAP3 PUSH2 0x748 JUMP JUMPDEST SWAP1 PUSH2 0x59E JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP4 ADD SWAP3 DUP4 GT PUSH2 0x177 JUMPI PUSH1 0x20 PUSH2 0xB9 DUP5 DUP5 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x11 DUP7 PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP6 PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC PUSH1 0xA0 SWAP2 ADD SLT PUSH2 0xC1 JUMPI PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP1 PUSH1 0x84 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0xC1 JUMPI DUP2 CALLDATALOAD SWAP1 PUSH1 0x20 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP3 GT PUSH2 0x37E JUMPI DUP2 PUSH1 0x5 SHL SWAP2 PUSH1 0x40 MLOAD SWAP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x3F DUP6 ADD AND DUP8 ADD SWAP1 DUP8 DUP3 LT SWAP1 DUP3 GT OR PUSH2 0x37E JUMPI PUSH1 0x40 MSTORE DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0xC1 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x36F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x361 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x4AF JUMPI PUSH1 0x1 SWAP2 DUP3 SWAP2 DUP3 SUB PUSH2 0x454 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0x408 JUMPI JUMPDEST POP POP POP POP DUP1 ISZERO PUSH2 0x3E0 JUMPI SWAP1 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x44F JUMPI DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x446 DUP7 SWAP8 PUSH2 0x440 PUSH2 0x42E DUP6 SWAP10 DUP8 PUSH2 0x516 JUMP JUMPDEST MLOAD PUSH2 0x439 DUP12 DUP10 PUSH2 0x516 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x68C JUMP JUMPDEST SWAP1 PUSH2 0x58B JUMP JUMPDEST DIV SWAP6 ADD SWAP4 PUSH2 0x3CE JUMP JUMPDEST PUSH2 0x3D3 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP4 JUMPDEST PUSH2 0x472 JUMPI POP POP POP POP DUP1 ISZERO PUSH2 0x3E0 JUMPI SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP5 LT ISZERO PUSH2 0x44F JUMPI DUP3 PUSH2 0x4A7 DUP6 SWAP7 PUSH2 0x4A1 PUSH2 0x48F DUP5 SWAP9 DUP7 PUSH2 0x516 JUMP JUMPDEST MLOAD PUSH2 0x49A DUP11 DUP9 PUSH2 0x516 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x59E JUMP JUMPDEST SWAP1 PUSH2 0x64B JUMP JUMPDEST SWAP6 ADD SWAP4 PUSH2 0x461 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x4E9 JUMPI JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x52A JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x4E9 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x4E9 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x4E9 JUMPI JUMP JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x5B5 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x5D3 JUMPI POP POP DUP1 PUSH2 0x5D0 SWAP2 PUSH2 0x64B JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x5F7 JUMPI POP POP PUSH2 0x5F1 DUP2 PUSH2 0x5D0 SWAP3 PUSH2 0x64B JUMP JUMPDEST DUP1 PUSH2 0x64B JUMP JUMPDEST PUSH2 0x601 SWAP2 SWAP3 PUSH2 0x811 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x60D DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x4E9 JUMPI PUSH2 0x5D0 SWAP2 PUSH2 0x4DC JUMP JUMPDEST SWAP1 PUSH2 0x655 SWAP2 PUSH2 0x58B JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x6A3 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x6C4 JUMPI POP POP DUP1 PUSH2 0x6C0 SWAP2 PUSH2 0x58B JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x6E8 JUMPI POP PUSH2 0x6E1 DUP3 PUSH2 0x6C0 SWAP4 PUSH2 0x58B JUMP JUMPDEST DIV DUP1 PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x6F3 SWAP2 PUSH2 0x811 JUMP JUMPDEST PUSH2 0x6FC DUP2 PUSH2 0x574 JUMP JUMPDEST PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x4E9 JUMPI DUP2 LT ISZERO PUSH2 0x743 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x798 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x1 SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x7DA JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 ISZERO PUSH2 0x7DA JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x113A JUMPI DUP2 ISZERO PUSH2 0x1134 JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x110C JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x10E4 JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x10D3 JUMPI JUMPDEST ISZERO PUSH2 0xD70 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x8AA SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x807 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0xD5D JUMPI JUMPDEST ISZERO PUSH2 0xD35 JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0xD22 JUMPI JUMPDEST ISZERO PUSH2 0xCFA JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0xCEB JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0xC88 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0xC4F JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0xC15 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0xBDD JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0xBA5 JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0xB6E JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0xB37 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0xB00 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0xAC9 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV PUSH1 0x5 DUP7 DUP6 DUP4 MUL SDIV SDIV PUSH1 0x6 DUP8 DUP7 DUP4 MUL SDIV SDIV DUP8 PUSH1 0x7 DUP2 DUP9 DUP5 MUL SDIV SDIV SWAP2 PUSH1 0x8 DUP3 DUP10 DUP6 MUL SDIV SDIV SWAP4 PUSH1 0x9 DUP4 DUP11 DUP8 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP5 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP6 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP7 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x5D0 JUMPI PUSH2 0x5D0 SWAP1 PUSH2 0x7C0 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA4A JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA38 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA26 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA1D JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0xA0B JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x9F9 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x9E7 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x9D5 JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0xCD8 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x9C0 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x9C0 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x964 JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x955 JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x945 JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x10BD JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x1092 JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x1071 JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x104E JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x102E JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x100E JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0xFEE JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0xFCE JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0xFB7 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0xF97 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0xF77 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0xF58 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0xF39 JUMPI JUMPDEST POP PUSH2 0xEE6 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x807 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0xF34 JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x919 JUMP JUMPDEST PUSH2 0xF2E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xEAA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE96 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE82 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE6E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE5A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE46 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE32 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE1D JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0xE08 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0xDF0 JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0xDCF JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0xDB2 JUMP JUMPDEST SWAP1 POP PUSH2 0x10C9 SWAP2 POP PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0xD85 JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x857 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xBC EXTCODECOPY 0xB5 SELFDESTRUCT 0xA9 0xD3 SIGNEXTEND CREATE PUSH30 0xA8C4A5192EF9DAB112602C4288478D0B3004E9C786A664736F6C63430008 BYTE STOP CALLER ","sourceMap":"259:1097:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;465:4:47;;;;;;;838:5;;;;;:::i;:::-;259:1097:118;10982:43:49;;10978:93;;11103:20;;1744:19:47;11103:20:49;;;:::i;:::-;1744:19:47;;:::i;:::-;259:1097:118;;;;;;;;;;;;;;;;;;;;;838:5:47;259:1097:118;;;;11258:20:49;259:1097:118;;11258:20:49;;:::i;:::-;5832:87:47;;;;;;;838:5;;:::i;:::-;259:1097:118;;;;;;;;;;;;;;;;;;2795:5:49;;;259:1097:118;2795:5:49;;;259:1097:118;2795:5:49;10978:93;11048:12;;259:1097:118;11048:12:49;259:1097:118;11048:12:49;259:1097:118;;;;;;;;:::i;:::-;465:4:47;838:5;;;;;;:::i;:::-;259:1097:118;13380:46:49;;13376:97;;2795:5;;;;;;;;1744:19:47;;;;13618:20:49;1744:19:47;;;:::i;:::-;;;:::i;:::-;13618:20:49;;:::i;:::-;2795:5;;;;;;;;;259:1097:118;13884:22:49;;;;:::i;2795:5::-;;;;259:1097:118;2795:5:49;;;259:1097:118;2795:5:49;13376:97;13449:13;;259:1097:118;13449:13:49;259:1097:118;13449:13:49;259:1097:118;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;259:1097:118;;;;;-1:-1:-1;259:1097:118;291:415;;;259:1097;;;;;;487:19;;;;475:31;;487:19;;465:4:47;4665:13:49;259:1097:118;4660:152:49;487:19:118;;;4660:152:49;4826:14;;;;;;4822:67;;522:69:118;:::o;4822:67:49:-;4863:15;259:1097:118;4863:15:49;;259:1097:118;4863:15:49;4710:3;259:1097:118;;4680:28:49;;;;;4759:11;465:4:47;838:5;4759:11:49;;:41;:11;;;;;:::i;:::-;259:1097:118;4779:20:49;;;;:::i;:::-;259:1097:118;4759:41:49;;:::i;:::-;838:5:47;;:::i;:::-;259:1097:118;4710:3:49;259:1097:118;4665:13:49;;;4680:28;;;471:229:118;465:4:47;6374:13:49;259:1097:118;6369:148:49;487:19:118;;;6531:14:49;;;;;;6527:67;;622::118;:::o;6419:3:49:-;259:1097:118;;6389:28:49;;;;;6466:11;6450:56;6466:11;;:39;:11;;;;;:::i;:::-;259:1097:118;6484:20:49;;;;:::i;:::-;259:1097:118;6466:39:49;;:::i;:::-;6450:56;;:::i;:::-;6419:3;259:1097:118;6374:13:49;;;259:1097:118;;;;;;;;;;2734:5:49;;;;;;;;;;:::o;:::-;2795;;;;;;;;;259:1097:118;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;2795:5:49;259:1097:118;;;;;;;;;;;;;;;:::o;:::-;;638:5:47;259:1097:118;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;4760:637:47:-;;465:4;;4997:8;;;465:4;;5021:8;;;:::o;4993:398::-;259:1097:118;5050:8:47;;259:1097:118;;5081:11:47;;;;;;:::i;:::-;5074:18;:::o;5046:345::-;259:1097:118;5113:9:47;;259:1097:118;;5155:11:47;;;;5187:21;5155:11;;:::i;:::-;5187:21;;:::i;5109:282::-;5253:20;;;;:::i;:::-;1068:5;259:1097:118;1068:5:47;;;:::i;:::-;1186:122;;;;;;;;;;259:1097:118;2734:5:49;;;;;;;5366:14:47;;;:::i;887:427::-;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;;;;;;;;;;887:427;:::o;3736:794::-;465:4;;3975:8;;;465:4;;3999:8;;;;:::o;3971:553::-;4028:8;;259:1097:118;4028:8:47;;259:1097:118;;838:5:47;;;;;;:::i;:::-;259:1097:118;4052:20:47;:::o;4024:500::-;259:1097:118;4093:9:47;;259:1097:118;;838:5:47;;;;;;:::i;:::-;259:1097:118;838:5:47;;:::i;4089:435::-;4237:20;;;;;:::i;:::-;1068:5;;;:::i;:::-;259:1097:118;1186:122:47;;;;;;;;;;;2734:5:49;259:1097:118;2734:5:49;;;;;;;4347:14:47;;;;;4381:8;;;259:1097:118;4381:8:47;:::o;4343:171::-;259:1097:118;;4460:21:47;:::o;1822:864::-;;2004:6;;2000:58;;465:4;259:1097:118;;;;;;;;;;;;;;;2560:120:47;;;;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;2648:13:48;;;;;;;;:::o;:::-;259:1097:118;;;;;;;;;2648:13:48;;;;;;;:::o;4496:2300::-;;4577:6;;4573:131;;4718:6;;4714:45;;1564:4;;;5129:68;;259:1097:118;5591:24:48;;;5587:83;;5774:28;2707:26;5774:28;:60;;;4496:2300;5770:720;;;1564:4;;1789;;21319:38;;2648:13;;2593;;;;2707:26;;2648:13;;21319:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22285:2;2648:13;;;22203:2;2648:13;;;22121:2;2648:13;;;22040:1;2648:13;;;21959:1;2648:13;;;21878:1;2648:13;;;21797:1;2648:13;;2593;;;;;;;2648;;;;;;;;;;;;;2593;1564:4;5770:720;;2648:13;2400:6;6615:36;;;;:76;;;5770:720;6613:79;6609:137;;6771:17;7080:25;;;;:54;;;5770:720;7078:57;7074:112;;259:1097:118;7316:5:48;259:1097:118;7316:5:48;;7312:417;;5770:720;-1:-1:-1;9497:3:48;;2789:21;9082:7;;2789:21;;2707:26;;1754:4;9134:12;2845:56;9078:252;;2648:13;9723:23;9785:7;3117:22;9785:7;;;9781:104;;9078:252;3246:22;9902:7;;;9898:104;;9078:252;3368:21;10019:7;;;10015:104;;9078:252;3486:21;10136:7;;;10132:104;;9078:252;3602:21;10253:7;;;10249:104;;9078:252;10370:7;;;;10366:104;;9078:252;3832:20;10487:7;;;10483:104;;9078:252;3947:20;10604:7;;;10600:104;;9078:252;11567:1;2648:13;;;;;;11645:1;2648:13;;;;;;11723:1;2648:13;;;;;;11801:1;2648:13;;;;;;11879:1;2648:13;;;;;;;11957:1;2648:13;;;;;;;12035:1;2648:13;;;;;;;12113:1;2648:13;;;;;;;12191:2;2648:13;;;;;;;12270:2;2648:13;;;;;;;12349:2;2648:13;;;;;;2593;;;;;;;;;;;;;2648;;;;13075:54;;;;;13094:26;;;:::i;10600:104::-;4003:21;2707:26;;;;2648:13;;;10600:104;;;10483;3888:21;2707:26;;;;2648:13;;;10483:104;;;10366;3773:21;2707:26;;;;2648:13;;;10366:104;;;10249;3658:21;2707:26;;;;2648:13;;;10249:104;;;10132;3542:22;2707:26;;;;2648:13;;;10132:104;;;10015;3424:24;2707:26;;;;2648:13;;;10015:104;;;9898;3303:27;2707:26;;;;2648:13;;;9898:104;;;9781;3174:34;;-1:-1:-1;2707:26:48;;9781:104;;9078:252;2953:20;9171:7;;2953:20;;2707:26;;1754:4;9223:12;3008:28;9167:163;9078:252;;9167:163;1754:4;9274:11;9284:1;9167:163;9078:252;;7312:417;7714:4;;-1:-1:-1;259:1097:118;4181:19:48;;-1:-1:-1;9497:3:48;7312:417;;7074:112;7158:17;259:1097:118;7158:17:48;;259:1097:118;7158:17:48;7080:54;7109:25;2349:6;7109:25;;;7080:54;;6609:137;6715:20;259:1097:118;6715:20:48;;259:1097:118;6715:20:48;6615:76;6655:36;2349:6;6655:36;;;6615:76;;5770:720;6451:13;1564:4;6451:13;259:1097:118;14954:10:48;;;;14950:381;;5770:720;16656:14;17116:3;16656:14;259:1097:118;2648:13:48;16708:16;;;16704:126;;5770:720;2648:13;16848:16;;;16844:126;;5770:720;2648:13;;;;;;;3174:34;;17276:7;;;;17272:94;;5770:720;3303:27;;;17384:7;;;;17380:94;;5770:720;3424:24;;17492:7;;;;17488:94;;5770:720;3542:22;;17600:7;;;;17596:94;;5770:720;3658:21;;17708:7;;;;17704:94;;5770:720;3773:21;;17816:7;;;;17812:94;;5770:720;3888:21;;17924:7;;;;17920:94;;5770:720;4003:21;;18032:7;;;;18028:94;;5770:720;4120:21;;18140:8;;;;18136:97;;5770:720;4237:21;;18251:8;;;;18247:97;;5770:720;1754:4;18891:38;1754:4;2593:13;;2707:26;2593:13;;;2707:26;;2648:13;18891:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;19369:1;19450;19531;19612;19693:2;2648:13;;;;;;;;;;;;;;;;;;;;;;;;2593;;;;;2648;;2593;2648;20303:35;;;;;259:1097:118;4181:19:48;20303:35;2648:13;5770:720;;20303:35;;;18247:97;1754:4;4181:19;2648:13;;;2593;;18247:97;;;;18136;1754:4;4063:20;2648:13;;;2593;;18136:97;;;;18028:94;1754:4;3947:20;2648:13;;;2593;;18028:94;;;;17920;1754:4;3832:20;2648:13;;;2593;;17920:94;;;;17812;1754:4;2648:13;;;;2593;;17812:94;;;;17704;1754:4;3602:21;2648:13;;;2593;;17704:94;;;;17596;1754:4;3486:21;2648:13;;;2593;;17596:94;;;;17488;1754:4;3368:21;2648:13;;;2593;;17488:94;;;;17380;1754:4;3246:22;2648:13;;;2593;;17380:94;;;;17272;3117:22;2648:13;;;;;2593;;17272:94;;;;;16844:126;2648:13;3008:28;2953:20;2648:13;;2593;;16844:126;;16704;2648:13;2845:56;2648:13;;2789:21;16704:126;;14950:381;15248:21;;;;;;:::i;:::-;15316:4;;17116:3;14950:381;;5774:60;5806:28;2593:13;5806:28;;5774:60;;5587:83;5638:21;259:1097:118;5638:21:48;;259:1097:118;5638:21:48;5129:68;5169:17;259:1097:118;5169:17:48;;259:1097:118;5169:17:48;4714:45;4740:8;;259:1097:118;4740:8:48;:::o;4573:131::-;4671:22;;1564:4;4671:22;:::o"},"methodIdentifiers":{"computeInGivenExactOut(uint256,uint256,uint256,uint256,uint256)":"388f6bd0","computeInvariant(uint256[],uint256[],uint8)":"f33d1410","computeOutGivenExactIn(uint256,uint256,uint256,uint256,uint256)":"3c42a2d6"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BaseOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExponentOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxInRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxOutRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProductOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroInvariant\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"computeInGivenExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"rounding\",\"type\":\"uint8\"}],\"name\":\"computeInvariant\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balanceIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balanceOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"computeOutGivenExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ZeroInvariant()\":[{\"details\":\"Most commonly, this happens when a token balance is zero.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"BaseOutOfBounds()\":[{\"notice\":\"This error is thrown when a base is not within an acceptable range.\"}],\"ExponentOutOfBounds()\":[{\"notice\":\"This error is thrown when a exponent is not within an acceptable range.\"}],\"InvalidExponent()\":[{\"notice\":\"This error is thrown when an exponent used in the exp function is not within an acceptable range.\"}],\"MaxInRatio()\":[{\"notice\":\"User attempted to add a disproportionate amountIn of tokens to a pool.\"}],\"MaxOutRatio()\":[{\"notice\":\"User attempted to extract a disproportionate amountOut of tokens from a pool.\"}],\"ProductOutOfBounds()\":[{\"notice\":\"This error is thrown when the exponent * ln(base) is not within an acceptable range.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}],\"ZeroInvariant()\":[{\"notice\":\"Error thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/WeightedMathMock.sol\":\"WeightedMathMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":{\"keccak256\":\"0xb31be209c69a6e60f4486b793bfc57b3ab7aa25efd29f40e981d5b9c95196f7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://04a10cf9c7a408f0d617d8f25dedd1d4d8d0411ac022b26293b39fccfbf41c71\",\"dweb:/ipfs/QmaExV5EYT4dtE9EAybKaraqXnbpM4usyAfFV5DHfatkof\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"contracts/test/WeightedMathMock.sol\":{\"keccak256\":\"0x4c0dd20d4e3322177d589d5c2c932040966d6313c2f05a0fdf63a259e8c70eb4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d88333f97b5489b9d557276b5f0dc4aa19a82b94411f9f9937e221d47e399700\",\"dweb:/ipfs/QmSmz67NQPb7zCZ8THX2vv21zEmDYZ6CfKMcL96VkyTm1q\"]}},\"version\":1}"}},"contracts/test/WeightedPoolMock.sol":{"WeightedPoolMock":{"abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"numTokens","type":"uint256"},{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"},{"internalType":"string","name":"version","type":"string"}],"internalType":"struct WeightedPool.NewPoolParams","name":"params","type":"tuple"},{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BaseOutOfBounds","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":[],"name":"ExponentOutOfBounds","type":"error"},{"inputs":[],"name":"InputLengthMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidExponent","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"MaxInRatio","type":"error"},{"inputs":[],"name":"MaxOutRatio","type":"error"},{"inputs":[],"name":"MinWeight","type":"error"},{"inputs":[],"name":"NormalizedWeightInvariant","type":"error"},{"inputs":[],"name":"ProductOutOfBounds","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"inputs":[],"name":"WeightedPoolBptRateUnsupported","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"inputs":[],"name":"ZeroInvariant","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":[],"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[]"},{"internalType":"enum Rounding","name":"rounding","type":"uint8"}],"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":[],"name":"getAggregateFeePercentages","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","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":"getNormalizedWeights","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"getWeightedPoolDynamicData","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":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct WeightedPoolDynamicData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeightedPoolImmutableData","outputs":[{"components":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256[]","name":"normalizedWeights","type":"uint256[]"}],"internalType":"struct WeightedPoolImmutableData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementNonce","outputs":[],"stateMutability":"nonpayable","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":"tokenIndex","type":"uint256"},{"internalType":"uint256","name":"newWeight","type":"uint256"}],"name":"setNormalizedWeight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[2]","name":"newWeights","type":"uint256[2]"}],"name":"setNormalizedWeights","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"}],"evm":{"bytecode":{"functionDebugData":{"abi_decode_string_fromMemory":{"entryPoint":2443,"id":null,"parameterSlots":2,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":2528,"id":null,"parameterSlots":1,"returnSlots":1},"clear_storage_range_uint256":{"entryPoint":2551,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation":{"entryPoint":2408,"id":null,"parameterSlots":2,"returnSlots":0},"fun_toShortStringWithFallback":{"entryPoint":2968,"id":40208,"parameterSlots":1,"returnSlots":1},"fun_toShortStringWithFallback_10175":{"entryPoint":2593,"id":40208,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":2573,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6102c08060405234610954576145ad803803809161001d8285610968565b833981016040828203126109545781516001600160401b0381116109545782019160a083830312610954576040519160a083016001600160401b038111848210176106805760405283516001600160401b038111610954578161008191860161098b565b835260208401516001600160401b03811161095457816100a291860161098b565b602084019081526040808601519085015260608501519094906001600160401b03811161095457810182601f82011215610954578051906100e2826109e0565b916100f06040519384610968565b80835260208084019160051b8301019185831161095457602001905b8282106109585750505060608501526080810151916001600160401b0383116109545760209261013c920161098b565b608084018190529101516001600160a01b03811681036109545782519351604080519195919081016001600160401b03811182821017610680576040526001815260208101603160f81b815261019183610a21565b6101205261019e82610b98565b6101405282516020840120918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811060018060401b03821117610680576040525190206080523060c0526101608290528051906001600160401b0382116106805760035490600182811c9216801561094a575b60208310146107815781601f8493116108fc575b50602090601f8311600114610874575f92610869575b50508160011b915f199060031b1c1916176003555b83516001600160401b03811161068057600454600181811c9116801561085f575b602082101461078157601f8111610811575b506020601f82116001146107aa5781929394955f9261079f575b50508160011b915f199060031b1c1916176004555b610180528051906001600160401b0382116106805760055490600182811c92168015610795575b60208310146107815781601f849311610745575b50602090601f83116001146106bd575f926106b2575b50508160011b915f199060031b1c1916176005555b6040810151806101a052606082015151036106a3575f805b6101a05160ff8216101561047d5761038960ff82166060850151610a0d565b5191662386f26fc10000831061046e5782810181116103c65782019160ff82166103da576101c0525b60ff80808316146103c6571660010161036a565b634e487b7160e01b5f52601160045260245ffd5b60ff82166001036103ee576101e0526103b2565b60ff821660020361040257610200526103b2565b60ff821660030361041657610220526103b2565b60ff821660040361042a57610240526103b2565b60ff821660050361043e57610260526103b2565b60ff821660060361045257610280526103b2565b600760ff831614610464575b506103b2565b6102a0525f61045e565b63bd39358360e01b5f5260045ffd5b50670de0b6b3a764000003610694576040810151906104b461049e836109e0565b926104ac6040519485610968565b8084526109e0565b602083019290601f1901368437516001600160401b03811161068057680100000000000000008111610680576006928354828555808310610664575b50835f5260205f205f5b8381106106505785855f5b60408201518110156105515761051f816060840151610a0d565b5190835481101561053d57600191845f528160205f20015501610505565b634e487b7160e01b5f52603260045260245ffd5b6040516138ea9081610cc38239608051816128cb015260a05181612997015260c0518161289c015260e0518161291a015261010051816129400152610120518161113e015261014051816111680152610160518181816102760152818161049e0152818161067501528181610d9401528181611103015281816114c40152818161174901528181611b62015281816122e101526128310152610180518181816105b30152818161096001528181610a2801528181610c90015261128d01526101a0518150506101c0518150506101e05181505061020051815050610220518150506102405181505061026051815050610280518150506102a051815050f35b6001906020845194019381840155016104fa565b61067a90855f528360205f2091820191016109f7565b5f6104f0565b634e487b7160e01b5f52604160045260245ffd5b631ce788a760e11b5f5260045ffd5b63aaad13f760e01b5f5260045ffd5b015190505f8061033d565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091905b601f198416851061072a576001945083601f19811610610712575b505050811b01600555610352565b01515f1960f88460031b161c191690555f8080610704565b818101518355602094850194600190930192909101906106e9565b6107719060055f5260205f20601f850160051c81019160208610610777575b601f0160051c01906109f7565b5f610327565b9091508190610764565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610313565b015190505f806102d7565b60045f5260205f20905f5b601f19841681106107f9575060019394959683601f198116106107e1575b505050811b016004556102ec565b01515f1960f88460031b161c191690555f80806107d3565b9091602060018192858b0151815501930191016107b5565b60045f52610859907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101916020851061077757601f0160051c01906109f7565b5f6102bd565b90607f16906102ab565b015190505f80610275565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f19841685106108e1576001945083601f198116106108c9575b505050811b0160035561028a565b01515f1960f88460031b161c191690555f80806108bb565b818101518355602094850194600190930192909101906108a0565b60035f52610944907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f850160051c8101916020861061077757601f0160051c01906109f7565b5f61025f565b91607f169161024b565b5f80fd5b815181526020918201910161010c565b601f909101601f19168101906001600160401b0382119082101761068057604052565b81601f82011215610954578051906001600160401b03821161068057604051926109bf601f8401601f191660200185610968565b8284526020838301011161095457815f9260208093018386015e8301015290565b6001600160401b0381116106805760051b60200190565b818110610a02575050565b5f81556001016109f7565b805182101561053d5760209160051b010190565b805160209081811015610a975750601f825111610a595780825192015190808310610a4b57501790565b825f19910360031b1b161790565b60448260405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b906001600160401b038211610680575f54926001938481811c91168015610b8e575b8382101461078157601f8111610b67575b5081601f8411600114610b0557509282939183925f94610afa575b50501b915f199060031b1c1916175f5560ff90565b015192505f80610ae5565b919083601f1981165f8052845f20945f905b88838310610b4d5750505010610b35575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f8080610b28565b858701518855909601959485019487935090810190610b17565b610b88905f8052601f845f20910160051c810190601f860160051c016109f7565b5f610aca565b90607f1690610ab9565b805160209081811015610bc25750601f825111610a595780825192015190808310610a4b57501790565b9192916001600160401b0381116106805760019182548381811c91168015610cb8575b8282101461078157601f8111610c91575b5080601f8311600114610c315750819293945f92610c26575b50505f19600383901b1c191690821b17905560ff90565b015190505f80610c0f565b90601f19831695845f52825f20925f905b888210610c7a5750508385969710610c62575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f8080610c55565b808785968294968601518155019501930190610c42565b610cb290845f52601f835f20910160051c810190601f850160051c016109f7565b5f610bf6565b90607f1690610be556fe6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611f595750826306fdde0314611eaa578263095ea7b314611e2c57826316a0b3e014611bf357826318160ddd14611bd757826319f32ccd14611b9857826323b872dd14611af057826323de665114611abe578263273c1adf14611a9c57826330adf81f14611a62578263313ce56714611a475782633644e51514611a2b5782633f3353de146118b757826353b79bd7146116fb57826354fd4d501461160b5782635687f2b8146115ac578263627cdcb914611583578263654cf15d14611561578263679aefce1461152a57826370a082311461145657826372c98186146113355782637ecebe00146112f157826381fa807c1461123057826384b0196e146111275782638d928af8146110d757826395d89b4114610fd1578263984de9e814610e0f578263a9059cbb14610cfc578263aa6ca80814610c37578263abb1dc44146109ce578263b156aa0a14610907578263b677fa56146108e5578263c0bc6f331461060c578263ce20ece7146105ec578263d335b0cf14610559578263d505accf146102ee57508163dd62ed3e146101fb575063f89f27ed146101c4575f80fd5b346101f7575f6003193601126101f7576101f3906101e06129bd565b9051918291602083526020830190612170565b0390f35b5f80fd5b82346101f757806003193601126101f7576020610216611fe5565b6064610220612008565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e5575f916102b0575b6020925051908152f35b90506020823d6020116102dd575b816102cb60209383612093565b810103126101f75760209151906102a6565b3d91506102be565b513d5f823e3d90fd5b8390346101f7576003193601126101f757610307611fe5565b90610310612008565b604435926084359060643560ff831683036101f75780421161052f5761035d8273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b90610429610420875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103d48161205b565b5190206103df612885565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612dc6565b90929192612e55565b168181036105025750505f84959661049a60209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102e557506104ce57005b6020813d6020116104fa575b816104e760209383612093565b810103126101f7576104f890612242565b005b3d91506104da565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101f7575f6003193601126101f7578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e5575f916102b0576020925051908152f35b83346101f7575f6003193601126101f757602090516509184e72a0008152f35b9150346101f7575f6003193601126101f75782516106298161205b565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa908115610895575f916108c3575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa908115610895575f9161089f575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa908115610895575f91610868575b508952610767612298565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561085e57928b9c926107f69261080996955f9e9c9d9e92610831575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190612170565b915190601f198b840301908b0152612170565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b6108509250803d10610857575b6108488183612093565b81019061268d565b5f806107c0565b503d61083e565b8c513d5f823e3d90fd5b90508a81813d831161088e575b61087f8183612093565b810103126101f757515f61075c565b503d610875565b8d513d5f823e3d90fd5b6108bb91503d805f833e6108b38183612093565b8101906124ac565b90505f610719565b6108df91503d805f833e6108d78183612093565b8101906127af565b5f6106d6565b83346101f7575f6003193601126101f757602090516709b6e64a8ec600008152f35b8382346101f7575f6003193601126101f7578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109c457916101f3925f926109a8575b5051918291602083526020830190612170565b6109bd9192503d805f833e6108d78183612093565b9083610995565b82513d5f823e3d90fd5b8382346101f7575f6003193601126101f75773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c2d575f935f925f925f95610b03575b5090610a7b959493929181519687966080885260808801906121a3565b6020878203818901528080875193848152019601925f905b838210610abf57898803868b015289806101f38b610ab18c8c612170565b908382036060850152612170565b9184989950606086979860019395978397518051610adc816121ec565b83528685820151168584015201511515898201520198019201899897969594929391610a93565b955093509150503d805f853e610b198185612093565b8301926080818503126101f75780519167ffffffffffffffff928381116101f75785610b469184016123a4565b91602095868201518581116101f757820181601f820112156101f757805190610b6e826120b6565b98610b7b86519a8b612093565b828a52808a01816060809502840101928584116101f7578201905b838210610bdb575050505050828201518581116101f75781610bb991840161244b565b9460608301519081116101f757610bd0920161244b565b919492919386610a5e565b84828703126101f757875190610bf08261202b565b825160028110156101f757825283830151908c821682036101f7578285928389950152610c1e8b8601612242565b8b820152815201910190610b96565b83513d5f823e3d90fd5b8382346101f7575f6003193601126101f7578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109c457916101f3925f92610cd8575b50519182916020835260208301906121a3565b610cf59192503d805f833e610ced8183612093565b810190612422565b9083610cc5565b5082346101f757806003193601126101f7576020610d7a92610d1c611fe5565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610e0557610dcb575b6020905160018152f35b6020823d602011610dfd575b81610de460209383612093565b810103126101f757610df7602092612242565b50610dc1565b3d9150610dd7565b50513d5f823e3d90fd5b5082346101f757806003193601126101f757813567ffffffffffffffff81116101f757610e3f90369084016120ce565b60243560028110156101f757610e54816121ec565b610fca57825b610e626129bd565b9080600314610f755780600414610eee5780600114610eab57600214610e9557605184634e487b7160e01b5f525260245ffd5b6020935090610ea391612f00565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610edb5750602092610ed591612a72565b90610ea5565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f3957610f31600191610f2b610f198787612284565b51610f24888b612284565b5190612a90565b90612b1b565b930192610efd565b92509350508015610f4e576020925090610ea5565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f3957670de0b6b3a7640000610fc1600192610fbb610fa98888612284565b51610fb4898c612284565b5190612d2d565b90612a5f565b04930192610f84565b6003610e5a565b8382346101f7575f6003193601126101f757815191825f8354610ff38161220a565b90818452602095600191876001821691825f14611092575050600114611036575b5050506101f39291611027910385612093565b51928284938452830190611fc0565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061107a57505050820101816110276101f3611014565b8054848a018601528895508794909301928101611061565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061102791506101f39050611014565b83346101f7575f6003193601126101f7576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101f7575f6003193601126101f7576111627f0000000000000000000000000000000000000000000000000000000000000000612b3d565b9261118c7f0000000000000000000000000000000000000000000000000000000000000000612c6f565b815192602084019084821067ffffffffffffffff83111761121d5750916111fd916101f3949382525f84526111f082519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611fc0565b9186830390870152611fc0565b904660608501523060808501525f60a085015283820360c0850152612170565b604190634e487b7160e01b5f525260245ffd5b8382346101f7575f6003193601126101f7578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c2d575f926112d4575b505060608282015191015182519182526020820152f35b6112ea9250803d10610857576108488183612093565b82806112bd565b83346101f75760206003193601126101f75760209073ffffffffffffffffffffffffffffffffffffffff611323611fe5565b165f5260028252805f20549051908152f35b8382346101f75760209260031984813601126101f75782359167ffffffffffffffff918284116101f75783360301126101f7578351916113748361205b565b8084013560028110156101f757835260248101358684015260448101358281116101f7576113a7908536918401016120ce565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101f75760a084015260c4810135908282116101f7570192366023850112156101f7578084013591821161121d575083519061142286601f19601f8401160183612093565b80825236602482860101116101f75785815f926024610ea39701838601378301015260c082015261145161281a565b6124f0565b8382346101f757602091826003193601126101f75782611474611fe5565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610e05575f926114fb575b5051908152f35b9091508281813d8311611523575b6115138183612093565b810103126101f7575190836114f4565b503d611509565b50346101f7575f6003193601126101f7577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101f7575f6003193601126101f7576020905167016345785d8a00008152f35b346101f7575f6003193601126101f757335f908152600260205260409020805460018101909155005b83346101f75760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115de3661212e565b9391946115e961281a565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101f7575f6003193601126101f75780516005549091825f61162e8461220a565b808352602094600190866001821691825f146116bb575050600114611660575b50506101f39291611027910385612093565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b8284106116a3575050508201018161102761164e565b8054848a01860152889550879490930192810161168d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150611027905061164e565b5082346101f7575f6003193601126101f7578051906117198261202b565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa9081156118ad57905f92918391611893575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611889575f91611870575b5081959295526117ff6129bd565b84528251948086526080860192519260608288015283518091528160a088019401915f5b82811061185a5788806101f38a8a6118498b8b51601f1993848884030190880152612170565b915190848303016060850152612170565b83518a1686529481019492810192600101611823565b61188491503d805f833e6108b38183612093565b6117f1565b84513d5f823e3d90fd5b6118a791503d8085833e610ced8183612093565b8a6117ae565b86513d5f823e3d90fd5b8382346101f757816003193601126101f75736602312156101f757815182810181811067ffffffffffffffff821117611a185783526044813682116101f75783905b828210611a0857505050805192670de0b6b3a764000061191f6020840195865190612383565b036119ac575051916006549283156119995760065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5551916001101561198657507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4055005b603290634e487b7160e01b5f525260245ffd5b603283634e487b7160e01b5f525260245ffd5b517f08c379a0000000000000000000000000000000000000000000000000000000008152602081840152601560248201527f5765696768747320646f6e277420746f74616c203100000000000000000000006044820152606490fd5b81358152602091820191016118f9565b604183634e487b7160e01b5f525260245ffd5b83346101f7575f6003193601126101f757602090610ea3612885565b83346101f7575f6003193601126101f7576020905160128152f35b83346101f7575f6003193601126101f757602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101f7575f6003193601126101f757602090516729a2241af62c00008152f35b83346101f75760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115de3661212e565b5082346101f75760205f6084611b053661212e565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610e0557610dcb576020905160018152f35b5082346101f7576003193601126101f757356006548110611bb557005b611bbe9061234e565b81549060031b905f19602435831b921b19161790555f80f35b83346101f7575f6003193601126101f757602090610ea3612298565b8382346101f75760606003193601126101f757803567ffffffffffffffff81116101f757611c2490369083016120ce565b9160243592611c40611c398560443593612284565b51946127d5565b60019081831115611e265760025b80600314611db05780600414611d175780600114611cd557600214611c8057605185634e487b7160e01b5f525260245ffd5b909192938115611caf5750610ea39260209592610f2b926ec097ce7bc90715b34b9f0fffffffff040190612a90565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611d04575092610f2b610ea3926020956ec097ce7bc90715b34b9f10000000000490612a90565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611d70575b5050508115611d4a575092610f2b610ea39260209590612a90565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611daa579082611da28193610f2b611d988986612284565b51610f248a61224f565b950192611d2a565b93611d2f565b509192939080670de0b6b3a7640000935f925b611de2575050508115611d4a575092610f2b610ea39260209590612a90565b909193670de0b6b3a764000051851015611daa579082670de0b6b3a7640000611e1d8294610fbb611e138a87612284565b51610fb48b61224f565b04950192611dc3565b81611c4e565b5082346101f757806003193601126101f7576020610d7a92611e4c611fe5565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101f7575f6003193601126101f75780516003549091825f611ecd8461220a565b808352602094600190866001821691825f146116bb575050600114611efe5750506101f39291611027910385612093565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611f41575050508201018161102761164e565b8054848a018601528895508794909301928101611f2b565b82346101f75760206003193601126101f75735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101f7577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101f757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101f757565b6060810190811067ffffffffffffffff82111761204757604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761204757604052565b6040810190811067ffffffffffffffff82111761204757604052565b90601f601f19910116810190811067ffffffffffffffff82111761204757604052565b67ffffffffffffffff81116120475760051b60200190565b9080601f830112156101f75760209082356120e8816120b6565b936120f66040519586612093565b81855260208086019260051b8201019283116101f757602001905b82821061211f575050505090565b81358152908301908301612111565b60031960609101126101f75773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101f7579160243590811681036101f7579060443590565b9081518082526020808093019301915f5b82811061218f575050505090565b835185529381019392810192600101612181565b9081518082526020808093019301915f5b8281106121c2575050505090565b835173ffffffffffffffffffffffffffffffffffffffff16855293810193928101926001016121b4565b600211156121f657565b634e487b7160e01b5f52602160045260245ffd5b90600182811c92168015612238575b602083101461222457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612219565b519081151582036101f757565b670de0b6b3a7640000518110156122705760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156122705760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115612343575f91612314575090565b90506020813d60201161233b575b8161232f60209383612093565b810103126101f7575190565b3d9150612322565b6040513d5f823e3d90fd5b6006548110156122705760065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905f90565b9190820180921161239057565b634e487b7160e01b5f52601160045260245ffd5b9080601f830112156101f7578151906020916123bf816120b6565b936123cd6040519586612093565b81855260208086019260051b8201019283116101f757602001905b8282106123f6575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101f75781529083019083016123e8565b906020828203126101f757815167ffffffffffffffff81116101f75761244892016123a4565b90565b9080601f830112156101f757815190602091612466816120b6565b936124746040519586612093565b81855260208086019260051b8201019283116101f757602001905b82821061249d575050505090565b8151815290830190830161248f565b9190916040818403126101f75780519267ffffffffffffffff938481116101f757816124d991840161244b565b9360208301519081116101f757612448920161244b565b604081019081516125076060830191825190612284565b5192519161251b6080820193845190612284565b51918151612528816121ec565b612531816121ec565b6125dc5761254b612544602092516127d5565b94516127d5565b910151670de0b6b3a7640000948561256282612a2b565b0482116125b45761257661257c9282612383565b90612f00565b848402938085048614901517156123905761259d6125a3926125b095612a72565b90612a90565b8381810391100290612a5f565b0490565b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6125f66125ef60209295939495516127d5565b92516127d5565b920151670de0b6b3a764000061260b85612a2b565b048111612665578303908382116123905761262c61259d9261263295612f00565b92612f00565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123905761244891612b1b565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101f75760405192610140928385019267ffffffffffffffff9086851082861117612047576080136101f7576101c0860190811184821017612047576040526126df81612242565b83526126ed60208201612242565b92610160938487015261270260408301612242565b92610180938488015261271760608401612242565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101f75760808601526101008082015163ffffffff811681036101f7576127a89461279e9160a089015261279261012097612786898701612242565b60c08b01528501612242565b60e08901528301612242565b9086015201612242565b9082015290565b906020828203126101f757815167ffffffffffffffff81116101f757612448920161244b565b6006548110156127f2576127e89061234e565b90549060031b1c90565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361285957565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612994575b156128ed577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176120475760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146128c4565b6040519060065480835282602091602082019060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f905b828210612a1157505050612a0f92500383612093565b565b8554845260019586019588955093810193909101906129f9565b90670429d069189e00009182810292818404149015171561239057565b906127109182810292818404149015171561239057565b8181029291811591840414171561239057565b8115612a7c570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612aa757505090565b671bc16d674ec800008103612ac25750508061244891612b1b565b673782dace9d9000008103612ae6575050612ae08161244892612b1b565b80612b1b565b612af09192612f7d565b906001612afc83612a48565b915f198301040190151502600181018091116123905761244891612383565b90612b2591612a5f565b6001670de0b6b3a76400005f19830104019015150290565b60ff8114612b915760ff811690601f8211612b695760405191612b5f83612077565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612ba38361220a565b80835292602090600190818116908115612c2c5750600114612bce575b505061244892500382612093565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612c1457506124489450505081016020015f80612bc0565b85548785018301529485019486945092810192612bf9565b9050602093506124489592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612bc0565b60ff8114612c915760ff811690601f8211612b695760405191612b5f83612077565b506040515f81600191600154612ca68161220a565b8084529360209160018116908115612c2c5750600114612cce57505061244892500382612093565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612d1557506124489450505081016020015f80612bc0565b85548785018301529485019486945092810192612cfa565b670de0b6b3a764000091808303612d445750905090565b8290671bc16d674ec800008103612d61575050806125b091612a5f565b673782dace9d9000008103612d855750612d7e826125b093612a5f565b0480612a5f565b9050612d9091612f7d565b612d9981612a48565b60015f1993848301040190151502906001820180831161239057811015612dc1575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612e4a579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612343575f5173ffffffffffffffffffffffffffffffffffffffff811615612e4057905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156121f65780612e67575050565b60018103612e97577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b60028103612ecb57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600314612ed55750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908015612f3157670de0b6b3a764000091828102928184041490151715612390576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612a7c576ec097ce7bc90715b34b9f10000000000590565b8115612a7c570590565b9080156138a65781156138a0578160ff1c61387857770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156138505781670c7d713b49da0000128061383f575b156134dc57670de0b6b3a7640000916ec097ce7bc90715b34b9f100000000090613016908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302612f73565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000081811315806134c9575b156134a15781908212158061348e575b15613466575f915f8112613457575b506064906806f05b59d3b200000081126133f4577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac620000008112156133bb575b6856bc75e2d631000000811215613381575b682b5e3af16b18800000811215613349575b6815af1d78b58c400000811215613311575b680ad78ebc5ac62000008112156132da575b828112156132a3575b6802b5e3af16b188000081121561326c575b68015af1d78b58c40000811215613235575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f146124485761244890612f59565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000849201920205906131b6565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000849201920205906131a4565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613192565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613189565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613177565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000084920192020590613165565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000084920192020590613153565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000001613141565b6803782dace9d90000008112613444577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef73809261312c565b68056bc75e2d631000008260019261312c565b600192505f03905060646130d0565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c800008213156130c1565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c800008213156130b1565b81670de0b6b3a7640000925f91848112613829575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c00000000000008212156137fe575b73011798004d755d3c8bc8e03204cf44619e0000008212156137dd575b820290808302906e01855144814a7ff805980ff008400090818312156137ba575b50506b02df0ab5a80a22c61ab5a7008082121561379a575b50693f1fce3da636ea5cf8508082121561377a575b50690127fa27722cc06cc5e28082121561375a575b5068280e60114edb805d038082121561373a575b50680ebc5fb4174612111080821215613723575b506808f00f760a4b2db55d80821215613703575b506806f5f1775788937937808212156136e3575b506806248f33704b286603808212156136c4575b506805c548670b9510e7ac808212156136a5575b5061365268056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102612f73565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f146136a0575f035b02613085565b61369a565b68056bc75e2d631000006756bc75e2d63100009202059101905f613616565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613602565b68056bc75e2d6310000068015af1d78b58c400009202059101905f6135ee565b68056bc75e2d631000006802b5e3af16b18800009202059101905f6135da565b68056bc75e2d63100000809202059101905f6135c6565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f6135b2565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61359e565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613589565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613574565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f8061355c565b906b1425982cf597cd205cef73806803782dace9d90000009105910161353b565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b200000061351e565b90506138359150612f59565b60019060646134f1565b50670f43fc2c04ee00008212612fc3565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212201a85e3df47fb5d61315fec458e1145877fdab1fef7da73fcefe5233c40f2be9564736f6c634300081a0033","opcodes":"PUSH2 0x2C0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x954 JUMPI PUSH2 0x45AD DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x1D DUP3 DUP6 PUSH2 0x968 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP3 DUP3 SUB SLT PUSH2 0x954 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x954 JUMPI DUP3 ADD SWAP2 PUSH1 0xA0 DUP4 DUP4 SUB SLT PUSH2 0x954 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0xA0 DUP4 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP5 DUP3 LT OR PUSH2 0x680 JUMPI PUSH1 0x40 MSTORE DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x954 JUMPI DUP2 PUSH2 0x81 SWAP2 DUP7 ADD PUSH2 0x98B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x954 JUMPI DUP2 PUSH2 0xA2 SWAP2 DUP7 ADD PUSH2 0x98B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP1 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP1 SWAP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x954 JUMPI DUP2 ADD DUP3 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x954 JUMPI DUP1 MLOAD SWAP1 PUSH2 0xE2 DUP3 PUSH2 0x9E0 JUMP JUMPDEST SWAP2 PUSH2 0xF0 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x968 JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD SWAP2 PUSH1 0x5 SHL DUP4 ADD ADD SWAP2 DUP6 DUP4 GT PUSH2 0x954 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x958 JUMPI POP POP POP PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x80 DUP2 ADD MLOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x954 JUMPI PUSH1 0x20 SWAP3 PUSH2 0x13C SWAP3 ADD PUSH2 0x98B JUMP JUMPDEST PUSH1 0x80 DUP5 ADD DUP2 SWAP1 MSTORE SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x954 JUMPI DUP3 MLOAD SWAP4 MLOAD PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP6 SWAP2 SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR PUSH2 0x680 JUMPI PUSH1 0x40 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE PUSH2 0x191 DUP4 PUSH2 0xA21 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x19E DUP3 PUSH2 0xB98 JUMP JUMPDEST PUSH2 0x140 MSTORE DUP3 MLOAD PUSH1 0x20 DUP5 ADD KECCAK256 SWAP2 DUP3 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 DUP1 PUSH2 0x100 MSTORE CHAINID PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 DUP1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x680 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH2 0x160 DUP3 SWAP1 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x680 JUMPI PUSH1 0x3 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x94A JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x781 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x8FC JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x874 JUMPI PUSH0 SWAP3 PUSH2 0x869 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x3 SSTORE JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x680 JUMPI PUSH1 0x4 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x85F JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x781 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x811 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x7AA JUMPI DUP2 SWAP3 SWAP4 SWAP5 SWAP6 PUSH0 SWAP3 PUSH2 0x79F JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST PUSH2 0x180 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x680 JUMPI PUSH1 0x5 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x795 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x781 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x745 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x6BD JUMPI PUSH0 SWAP3 PUSH2 0x6B2 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x5 SSTORE JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD DUP1 PUSH2 0x1A0 MSTORE PUSH1 0x60 DUP3 ADD MLOAD MLOAD SUB PUSH2 0x6A3 JUMPI PUSH0 DUP1 JUMPDEST PUSH2 0x1A0 MLOAD PUSH1 0xFF DUP3 AND LT ISZERO PUSH2 0x47D JUMPI PUSH2 0x389 PUSH1 0xFF DUP3 AND PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0xA0D JUMP JUMPDEST MLOAD SWAP2 PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x46E JUMPI DUP3 DUP2 ADD DUP2 GT PUSH2 0x3C6 JUMPI DUP3 ADD SWAP2 PUSH1 0xFF DUP3 AND PUSH2 0x3DA JUMPI PUSH2 0x1C0 MSTORE JUMPDEST PUSH1 0xFF DUP1 DUP1 DUP4 AND EQ PUSH2 0x3C6 JUMPI AND PUSH1 0x1 ADD PUSH2 0x36A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x1 SUB PUSH2 0x3EE JUMPI PUSH2 0x1E0 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x2 SUB PUSH2 0x402 JUMPI PUSH2 0x200 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x3 SUB PUSH2 0x416 JUMPI PUSH2 0x220 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x4 SUB PUSH2 0x42A JUMPI PUSH2 0x240 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x5 SUB PUSH2 0x43E JUMPI PUSH2 0x260 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0xFF DUP3 AND PUSH1 0x6 SUB PUSH2 0x452 JUMPI PUSH2 0x280 MSTORE PUSH2 0x3B2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0xFF DUP4 AND EQ PUSH2 0x464 JUMPI JUMPDEST POP PUSH2 0x3B2 JUMP JUMPDEST PUSH2 0x2A0 MSTORE PUSH0 PUSH2 0x45E JUMP JUMPDEST PUSH4 0xBD393583 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH8 0xDE0B6B3A7640000 SUB PUSH2 0x694 JUMPI PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH2 0x4B4 PUSH2 0x49E DUP4 PUSH2 0x9E0 JUMP JUMPDEST SWAP3 PUSH2 0x4AC PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x968 JUMP JUMPDEST DUP1 DUP5 MSTORE PUSH2 0x9E0 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 SWAP1 PUSH1 0x1F NOT ADD CALLDATASIZE DUP5 CALLDATACOPY MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x680 JUMPI PUSH9 0x10000000000000000 DUP2 GT PUSH2 0x680 JUMPI PUSH1 0x6 SWAP3 DUP4 SLOAD DUP3 DUP6 SSTORE DUP1 DUP4 LT PUSH2 0x664 JUMPI JUMPDEST POP DUP4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x650 JUMPI DUP6 DUP6 PUSH0 JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD DUP2 LT ISZERO PUSH2 0x551 JUMPI PUSH2 0x51F DUP2 PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0xA0D JUMP JUMPDEST MLOAD SWAP1 DUP4 SLOAD DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x1 SWAP2 DUP5 PUSH0 MSTORE DUP2 PUSH1 0x20 PUSH0 KECCAK256 ADD SSTORE ADD PUSH2 0x505 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x38EA SWAP1 DUP2 PUSH2 0xCC3 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x28CB ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x2997 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x289C ADD MSTORE PUSH1 0xE0 MLOAD DUP2 PUSH2 0x291A ADD MSTORE PUSH2 0x100 MLOAD DUP2 PUSH2 0x2940 ADD MSTORE PUSH2 0x120 MLOAD DUP2 PUSH2 0x113E ADD MSTORE PUSH2 0x140 MLOAD DUP2 PUSH2 0x1168 ADD MSTORE PUSH2 0x160 MLOAD DUP2 DUP2 DUP2 PUSH2 0x276 ADD MSTORE DUP2 DUP2 PUSH2 0x49E ADD MSTORE DUP2 DUP2 PUSH2 0x675 ADD MSTORE DUP2 DUP2 PUSH2 0xD94 ADD MSTORE DUP2 DUP2 PUSH2 0x1103 ADD MSTORE DUP2 DUP2 PUSH2 0x14C4 ADD MSTORE DUP2 DUP2 PUSH2 0x1749 ADD MSTORE DUP2 DUP2 PUSH2 0x1B62 ADD MSTORE DUP2 DUP2 PUSH2 0x22E1 ADD MSTORE PUSH2 0x2831 ADD MSTORE PUSH2 0x180 MLOAD DUP2 DUP2 DUP2 PUSH2 0x5B3 ADD MSTORE DUP2 DUP2 PUSH2 0x960 ADD MSTORE DUP2 DUP2 PUSH2 0xA28 ADD MSTORE DUP2 DUP2 PUSH2 0xC90 ADD MSTORE PUSH2 0x128D ADD MSTORE PUSH2 0x1A0 MLOAD DUP2 POP POP PUSH2 0x1C0 MLOAD DUP2 POP POP PUSH2 0x1E0 MLOAD DUP2 POP POP PUSH2 0x200 MLOAD DUP2 POP POP PUSH2 0x220 MLOAD DUP2 POP POP PUSH2 0x240 MLOAD DUP2 POP POP PUSH2 0x260 MLOAD DUP2 POP POP PUSH2 0x280 MLOAD DUP2 POP POP PUSH2 0x2A0 MLOAD DUP2 POP POP RETURN JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 MLOAD SWAP5 ADD SWAP4 DUP2 DUP5 ADD SSTORE ADD PUSH2 0x4FA JUMP JUMPDEST PUSH2 0x67A SWAP1 DUP6 PUSH0 MSTORE DUP4 PUSH1 0x20 PUSH0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x9F7 JUMP JUMPDEST PUSH0 PUSH2 0x4F0 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x1CE788A7 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xAAAD13F7 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x33D JUMP JUMPDEST PUSH1 0x5 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x72A JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x712 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x5 SSTORE PUSH2 0x352 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x704 JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x771 SWAP1 PUSH1 0x5 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP7 LT PUSH2 0x777 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x9F7 JUMP JUMPDEST PUSH0 PUSH2 0x327 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x764 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x313 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2D7 JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP2 LT PUSH2 0x7F9 JUMPI POP PUSH1 0x1 SWAP4 SWAP5 SWAP6 SWAP7 DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x7E1 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH2 0x2EC JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x7D3 JUMP JUMPDEST SWAP1 SWAP2 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP6 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP4 ADD SWAP2 ADD PUSH2 0x7B5 JUMP JUMPDEST PUSH1 0x4 PUSH0 MSTORE PUSH2 0x859 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH2 0x777 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x9F7 JUMP JUMPDEST PUSH0 PUSH2 0x2BD JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x2AB JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x275 JUMP JUMPDEST PUSH1 0x3 PUSH0 SWAP1 DUP2 MSTORE SWAP4 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 SWAP1 JUMPDEST PUSH1 0x1F NOT DUP5 AND DUP6 LT PUSH2 0x8E1 JUMPI PUSH1 0x1 SWAP5 POP DUP4 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x8C9 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH2 0x28A JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x8BB JUMP JUMPDEST DUP2 DUP2 ADD MLOAD DUP4 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x8A0 JUMP JUMPDEST PUSH1 0x3 PUSH0 MSTORE PUSH2 0x944 SWAP1 PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP7 LT PUSH2 0x777 JUMPI PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 PUSH2 0x9F7 JUMP JUMPDEST PUSH0 PUSH2 0x25F JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x24B JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x10C JUMP JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x680 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x954 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x680 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x9BF PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP6 PUSH2 0x968 JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x954 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x680 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 DUP2 LT PUSH2 0xA02 JUMPI POP POP JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x9F7 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xA97 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0xA59 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0xA4B JUMPI POP OR SWAP1 JUMP JUMPDEST DUP3 PUSH0 NOT SWAP2 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 DUP3 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x680 JUMPI PUSH0 SLOAD SWAP3 PUSH1 0x1 SWAP4 DUP5 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xB8E JUMPI JUMPDEST DUP4 DUP3 LT EQ PUSH2 0x781 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xB67 JUMPI JUMPDEST POP DUP2 PUSH1 0x1F DUP5 GT PUSH1 0x1 EQ PUSH2 0xB05 JUMPI POP SWAP3 DUP3 SWAP4 SWAP2 DUP4 SWAP3 PUSH0 SWAP5 PUSH2 0xAFA JUMPI JUMPDEST POP POP SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP3 POP PUSH0 DUP1 PUSH2 0xAE5 JUMP JUMPDEST SWAP2 SWAP1 DUP4 PUSH1 0x1F NOT DUP2 AND PUSH0 DUP1 MSTORE DUP5 PUSH0 KECCAK256 SWAP5 PUSH0 SWAP1 JUMPDEST DUP9 DUP4 DUP4 LT PUSH2 0xB4D JUMPI POP POP POP LT PUSH2 0xB35 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xB28 JUMP JUMPDEST DUP6 DUP8 ADD MLOAD DUP9 SSTORE SWAP1 SWAP7 ADD SWAP6 SWAP5 DUP6 ADD SWAP5 DUP8 SWAP4 POP SWAP1 DUP2 ADD SWAP1 PUSH2 0xB17 JUMP JUMPDEST PUSH2 0xB88 SWAP1 PUSH0 DUP1 MSTORE PUSH1 0x1F DUP5 PUSH0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP7 ADD PUSH1 0x5 SHR ADD PUSH2 0x9F7 JUMP JUMPDEST PUSH0 PUSH2 0xACA JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xAB9 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP1 DUP2 DUP2 LT ISZERO PUSH2 0xBC2 JUMPI POP PUSH1 0x1F DUP3 MLOAD GT PUSH2 0xA59 JUMPI DUP1 DUP3 MLOAD SWAP3 ADD MLOAD SWAP1 DUP1 DUP4 LT PUSH2 0xA4B JUMPI POP OR SWAP1 JUMP JUMPDEST SWAP2 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x680 JUMPI PUSH1 0x1 SWAP2 DUP3 SLOAD DUP4 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0xCB8 JUMPI JUMPDEST DUP3 DUP3 LT EQ PUSH2 0x781 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0xC91 JUMPI JUMPDEST POP DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0xC31 JUMPI POP DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0xC26 JUMPI JUMPDEST POP POP PUSH0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND SWAP1 DUP3 SHL OR SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0xC0F JUMP JUMPDEST SWAP1 PUSH1 0x1F NOT DUP4 AND SWAP6 DUP5 PUSH0 MSTORE DUP3 PUSH0 KECCAK256 SWAP3 PUSH0 SWAP1 JUMPDEST DUP9 DUP3 LT PUSH2 0xC7A JUMPI POP POP DUP4 DUP6 SWAP7 SWAP8 LT PUSH2 0xC62 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0xC55 JUMP JUMPDEST DUP1 DUP8 DUP6 SWAP7 DUP3 SWAP5 SWAP7 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD SWAP1 PUSH2 0xC42 JUMP JUMPDEST PUSH2 0xCB2 SWAP1 DUP5 PUSH0 MSTORE PUSH1 0x1F DUP4 PUSH0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR ADD PUSH2 0x9F7 JUMP JUMPDEST PUSH0 PUSH2 0xBF6 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0xBE5 JUMP INVALID PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH4 0x1FFC9A7 EQ PUSH2 0x1F59 JUMPI POP DUP3 PUSH4 0x6FDDE03 EQ PUSH2 0x1EAA JUMPI DUP3 PUSH4 0x95EA7B3 EQ PUSH2 0x1E2C JUMPI DUP3 PUSH4 0x16A0B3E0 EQ PUSH2 0x1BF3 JUMPI DUP3 PUSH4 0x18160DDD EQ PUSH2 0x1BD7 JUMPI DUP3 PUSH4 0x19F32CCD EQ PUSH2 0x1B98 JUMPI DUP3 PUSH4 0x23B872DD EQ PUSH2 0x1AF0 JUMPI DUP3 PUSH4 0x23DE6651 EQ PUSH2 0x1ABE JUMPI DUP3 PUSH4 0x273C1ADF EQ PUSH2 0x1A9C JUMPI DUP3 PUSH4 0x30ADF81F EQ PUSH2 0x1A62 JUMPI DUP3 PUSH4 0x313CE567 EQ PUSH2 0x1A47 JUMPI DUP3 PUSH4 0x3644E515 EQ PUSH2 0x1A2B JUMPI DUP3 PUSH4 0x3F3353DE EQ PUSH2 0x18B7 JUMPI DUP3 PUSH4 0x53B79BD7 EQ PUSH2 0x16FB JUMPI DUP3 PUSH4 0x54FD4D50 EQ PUSH2 0x160B JUMPI DUP3 PUSH4 0x5687F2B8 EQ PUSH2 0x15AC JUMPI DUP3 PUSH4 0x627CDCB9 EQ PUSH2 0x1583 JUMPI DUP3 PUSH4 0x654CF15D EQ PUSH2 0x1561 JUMPI DUP3 PUSH4 0x679AEFCE EQ PUSH2 0x152A JUMPI DUP3 PUSH4 0x70A08231 EQ PUSH2 0x1456 JUMPI DUP3 PUSH4 0x72C98186 EQ PUSH2 0x1335 JUMPI DUP3 PUSH4 0x7ECEBE00 EQ PUSH2 0x12F1 JUMPI DUP3 PUSH4 0x81FA807C EQ PUSH2 0x1230 JUMPI DUP3 PUSH4 0x84B0196E EQ PUSH2 0x1127 JUMPI DUP3 PUSH4 0x8D928AF8 EQ PUSH2 0x10D7 JUMPI DUP3 PUSH4 0x95D89B41 EQ PUSH2 0xFD1 JUMPI DUP3 PUSH4 0x984DE9E8 EQ PUSH2 0xE0F JUMPI DUP3 PUSH4 0xA9059CBB EQ PUSH2 0xCFC JUMPI DUP3 PUSH4 0xAA6CA808 EQ PUSH2 0xC37 JUMPI DUP3 PUSH4 0xABB1DC44 EQ PUSH2 0x9CE JUMPI DUP3 PUSH4 0xB156AA0A EQ PUSH2 0x907 JUMPI DUP3 PUSH4 0xB677FA56 EQ PUSH2 0x8E5 JUMPI DUP3 PUSH4 0xC0BC6F33 EQ PUSH2 0x60C JUMPI DUP3 PUSH4 0xCE20ECE7 EQ PUSH2 0x5EC JUMPI DUP3 PUSH4 0xD335B0CF EQ PUSH2 0x559 JUMPI DUP3 PUSH4 0xD505ACCF EQ PUSH2 0x2EE JUMPI POP DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x1FB JUMPI POP PUSH4 0xF89F27ED EQ PUSH2 0x1C4 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH2 0x1F3 SWAP1 PUSH2 0x1E0 PUSH2 0x29BD JUMP JUMPDEST SWAP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2170 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH2 0x216 PUSH2 0x1FE5 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x220 PUSH2 0x2008 JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E5 JUMPI PUSH0 SWAP2 PUSH2 0x2B0 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2DD JUMPI JUMPDEST DUP2 PUSH2 0x2CB PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x2A6 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2BE JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 SWAP1 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH2 0x307 PUSH2 0x1FE5 JUMP JUMPDEST SWAP1 PUSH2 0x310 PUSH2 0x2008 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP4 AND DUP4 SUB PUSH2 0x1F7 JUMPI DUP1 TIMESTAMP GT PUSH2 0x52F JUMPI PUSH2 0x35D DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x429 PUSH2 0x420 DUP8 MLOAD SWAP6 PUSH1 0x20 DUP8 ADD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 SWAP6 DUP7 DUP10 AND SWAP8 DUP9 DUP14 DUP5 ADD MSTORE DUP8 DUP13 AND PUSH1 0x60 DUP5 ADD MSTORE DUP14 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x3D4 DUP2 PUSH2 0x205B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x3DF PUSH2 0x2885 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x2DC6 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2E55 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x502 JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x49A PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E5 JUMPI POP PUSH2 0x4CE JUMPI STOP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4FA JUMPI JUMPDEST DUP2 PUSH2 0x4E7 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI PUSH2 0x4F8 SWAP1 PUSH2 0x2242 JUMP JUMPDEST STOP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4DA JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST DUP7 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E5 JUMPI PUSH0 SWAP2 PUSH2 0x2B0 JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH6 0x9184E72A000 DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP3 MLOAD PUSH2 0x629 DUP2 PUSH2 0x205B JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP6 DUP2 ADD SWAP3 PUSH0 DUP5 MSTORE PUSH1 0x60 DUP3 ADD PUSH0 DUP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP2 PUSH0 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 PUSH0 DUP6 MSTORE PUSH1 0xC0 DUP2 ADD SWAP6 PUSH0 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 DUP12 MLOAD PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x895 JUMPI PUSH0 SWAP2 PUSH2 0x8C3 JUMPI JUMPDEST POP DUP4 MSTORE DUP12 MLOAD PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x895 JUMPI PUSH0 SWAP2 PUSH2 0x89F JUMPI JUMPDEST POP DUP5 MSTORE DUP12 MLOAD PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE DUP11 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x895 JUMPI PUSH0 SWAP2 PUSH2 0x868 JUMPI JUMPDEST POP DUP10 MSTORE PUSH2 0x767 PUSH2 0x2298 JUMP JUMPDEST DUP6 MSTORE DUP12 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE DUP2 PUSH1 0x24 PUSH2 0x1A0 SWAP5 DUP6 SWAP4 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x85E JUMPI SWAP3 DUP12 SWAP13 SWAP3 PUSH2 0x7F6 SWAP3 PUSH2 0x809 SWAP7 SWAP6 PUSH0 SWAP15 SWAP13 SWAP14 SWAP15 SWAP3 PUSH2 0x831 JUMPI JUMPDEST POP POP DUP11 DUP2 ADD MLOAD ISZERO ISZERO DUP9 MSTORE PUSH2 0x120 PUSH2 0x100 SWAP2 DUP3 DUP2 ADD MLOAD ISZERO ISZERO DUP12 MSTORE ADD MLOAD ISZERO ISZERO DUP11 MSTORE DUP4 MLOAD SWAP14 DUP14 DUP16 SWAP15 SWAP4 DUP16 SWAP5 DUP6 MSTORE MLOAD SWAP4 ADD MSTORE DUP13 ADD SWAP1 PUSH2 0x2170 JUMP JUMPDEST SWAP2 MLOAD SWAP1 PUSH1 0x1F NOT DUP12 DUP5 SUB ADD SWAP1 DUP12 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x60 DUP9 ADD MSTORE MLOAD PUSH1 0x80 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH2 0x850 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x857 JUMPI JUMPDEST PUSH2 0x848 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x268D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7C0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x83E JUMP JUMPDEST DUP13 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x88E JUMPI JUMPDEST PUSH2 0x87F DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI MLOAD PUSH0 PUSH2 0x75C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x875 JUMP JUMPDEST DUP14 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8BB SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8B3 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24AC JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x8DF SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8D7 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x27AF JUMP JUMPDEST PUSH0 PUSH2 0x6D6 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x9B6E64A8EC60000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9C4 JUMPI SWAP2 PUSH2 0x1F3 SWAP3 PUSH0 SWAP3 PUSH2 0x9A8 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2170 JUMP JUMPDEST PUSH2 0x9BD SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8D7 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x995 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD SWAP2 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC2D JUMPI PUSH0 SWAP4 PUSH0 SWAP3 PUSH0 SWAP3 PUSH0 SWAP6 PUSH2 0xB03 JUMPI JUMPDEST POP SWAP1 PUSH2 0xA7B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x21A3 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xABF JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1F3 DUP12 PUSH2 0xAB1 DUP13 DUP13 PUSH2 0x2170 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0xADC DUP2 PUSH2 0x21EC JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0xA93 JUMP JUMPDEST SWAP6 POP SWAP4 POP SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xB19 DUP2 DUP6 PUSH2 0x2093 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x1F7 JUMPI DUP6 PUSH2 0xB46 SWAP2 DUP5 ADD PUSH2 0x23A4 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP6 DUP7 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1F7 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP1 PUSH2 0xB6E DUP3 PUSH2 0x20B6 JUMP JUMPDEST SWAP9 PUSH2 0xB7B DUP7 MLOAD SWAP11 DUP12 PUSH2 0x2093 JUMP JUMPDEST DUP3 DUP11 MSTORE DUP1 DUP11 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x1F7 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xBDB JUMPI POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1F7 JUMPI DUP2 PUSH2 0xBB9 SWAP2 DUP5 ADD PUSH2 0x244B JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0xBD0 SWAP3 ADD PUSH2 0x244B JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 PUSH2 0xA5E JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x1F7 JUMPI DUP8 MLOAD SWAP1 PUSH2 0xBF0 DUP3 PUSH2 0x202B JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP13 DUP3 AND DUP3 SUB PUSH2 0x1F7 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0xC1E DUP12 DUP7 ADD PUSH2 0x2242 JUMP JUMPDEST DUP12 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xB96 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9C4 JUMPI SWAP2 PUSH2 0x1F3 SWAP3 PUSH0 SWAP3 PUSH2 0xCD8 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x21A3 JUMP JUMPDEST PUSH2 0xCF5 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xCED DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2422 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xCC5 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH2 0xD7A SWAP3 PUSH2 0xD1C PUSH2 0x1FE5 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xE05 JUMPI PUSH2 0xDCB JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDFD JUMPI JUMPDEST DUP2 PUSH2 0xDE4 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI PUSH2 0xDF7 PUSH1 0x20 SWAP3 PUSH2 0x2242 JUMP JUMPDEST POP PUSH2 0xDC1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDD7 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0xE3F SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x20CE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI PUSH2 0xE54 DUP2 PUSH2 0x21EC JUMP JUMPDEST PUSH2 0xFCA JUMPI DUP3 JUMPDEST PUSH2 0xE62 PUSH2 0x29BD JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x3 EQ PUSH2 0xF75 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0xEEE JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0xEAB JUMPI PUSH1 0x2 EQ PUSH2 0xE95 JUMPI PUSH1 0x51 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 SWAP4 POP SWAP1 PUSH2 0xEA3 SWAP2 PUSH2 0x2F00 JUMP JUMPDEST SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xEDB JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xED5 SWAP2 PUSH2 0x2A72 JUMP JUMPDEST SWAP1 PUSH2 0xEA5 JUMP JUMPDEST PUSH1 0x11 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF39 JUMPI PUSH2 0xF31 PUSH1 0x1 SWAP2 PUSH2 0xF2B PUSH2 0xF19 DUP8 DUP8 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xF24 DUP9 DUP12 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2A90 JUMP JUMPDEST SWAP1 PUSH2 0x2B1B JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xEFD JUMP JUMPDEST SWAP3 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0xF4E JUMPI PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0xEA5 JUMP JUMPDEST DUP3 PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF39 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xFC1 PUSH1 0x1 SWAP3 PUSH2 0xFBB PUSH2 0xFA9 DUP9 DUP9 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xFB4 DUP10 DUP13 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2D2D JUMP JUMPDEST SWAP1 PUSH2 0x2A5F JUMP JUMPDEST DIV SWAP4 ADD SWAP3 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x3 PUSH2 0xE5A JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xFF3 DUP2 PUSH2 0x220A JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x1092 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1036 JUMPI JUMPDEST POP POP POP PUSH2 0x1F3 SWAP3 SWAP2 PUSH2 0x1027 SWAP2 SUB DUP6 PUSH2 0x2093 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1FC0 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x107A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1027 PUSH2 0x1F3 PUSH2 0x1014 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1061 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x1027 SWAP2 POP PUSH2 0x1F3 SWAP1 POP PUSH2 0x1014 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH2 0x1162 PUSH32 0x0 PUSH2 0x2B3D JUMP JUMPDEST SWAP3 PUSH2 0x118C PUSH32 0x0 PUSH2 0x2C6F JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x121D JUMPI POP SWAP2 PUSH2 0x11FD SWAP2 PUSH2 0x1F3 SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x11F0 DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1FC0 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1FC0 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC2D JUMPI PUSH0 SWAP3 PUSH2 0x12D4 JUMPI JUMPDEST POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x12EA SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x857 JUMPI PUSH2 0x848 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP3 DUP1 PUSH2 0x12BD JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1323 PUSH2 0x1FE5 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x3 NOT DUP5 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x1F7 JUMPI DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1F7 JUMPI DUP4 MLOAD SWAP2 PUSH2 0x1374 DUP4 PUSH2 0x205B JUMP JUMPDEST DUP1 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI DUP4 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD DUP7 DUP5 ADD MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x13A7 SWAP1 DUP6 CALLDATASIZE SWAP2 DUP5 ADD ADD PUSH2 0x20CE JUMP JUMPDEST DUP6 DUP5 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 DUP3 GT PUSH2 0x1F7 JUMPI ADD SWAP3 CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP1 DUP5 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x121D JUMPI POP DUP4 MLOAD SWAP1 PUSH2 0x1422 DUP7 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP1 DUP3 MSTORE CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1F7 JUMPI DUP6 DUP2 PUSH0 SWAP3 PUSH1 0x24 PUSH2 0xEA3 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1451 PUSH2 0x281A JUMP JUMPDEST PUSH2 0x24F0 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP3 PUSH2 0x1474 PUSH2 0x1FE5 JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xE05 JUMPI PUSH0 SWAP3 PUSH2 0x14FB JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1523 JUMPI JUMPDEST PUSH2 0x1513 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14F4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1509 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH32 0x18E79A2000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x16345785D8A0000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x15DE CALLDATASIZE PUSH2 0x212E JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x15E9 PUSH2 0x281A JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x162E DUP5 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16BB JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1660 JUMPI JUMPDEST POP POP PUSH2 0x1F3 SWAP3 SWAP2 PUSH2 0x1027 SWAP2 SUB DUP6 PUSH2 0x2093 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x16A3 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1027 PUSH2 0x164E JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x168D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x1027 SWAP1 POP PUSH2 0x164E JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1719 DUP3 PUSH2 0x202B JUMP JUMPDEST PUSH1 0x60 DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP4 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP2 DUP5 ADD SWAP3 PUSH1 0x60 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH32 0x0 AND SWAP1 DUP5 MLOAD PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x18AD JUMPI SWAP1 PUSH0 SWAP3 SWAP2 DUP4 SWAP2 PUSH2 0x1893 JUMPI JUMPDEST POP DUP9 MSTORE PUSH1 0x24 DUP7 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1889 JUMPI PUSH0 SWAP2 PUSH2 0x1870 JUMPI JUMPDEST POP DUP2 SWAP6 SWAP3 SWAP6 MSTORE PUSH2 0x17FF PUSH2 0x29BD JUMP JUMPDEST DUP5 MSTORE DUP3 MLOAD SWAP5 DUP1 DUP7 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 MLOAD SWAP3 PUSH1 0x60 DUP3 DUP9 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH1 0xA0 DUP9 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x185A JUMPI DUP9 DUP1 PUSH2 0x1F3 DUP11 DUP11 PUSH2 0x1849 DUP12 DUP12 MLOAD PUSH1 0x1F NOT SWAP4 DUP5 DUP9 DUP5 SUB ADD SWAP1 DUP9 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST SWAP2 MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST DUP4 MLOAD DUP11 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x1884 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8B3 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST PUSH2 0x17F1 JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x18A7 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0xCED DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP11 PUSH2 0x17AE JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLDATASIZE PUSH1 0x23 SLT ISZERO PUSH2 0x1F7 JUMPI DUP2 MLOAD DUP3 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1A18 JUMPI DUP4 MSTORE PUSH1 0x44 DUP2 CALLDATASIZE DUP3 GT PUSH2 0x1F7 JUMPI DUP4 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1A08 JUMPI POP POP POP DUP1 MLOAD SWAP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x191F PUSH1 0x20 DUP5 ADD SWAP6 DUP7 MLOAD SWAP1 PUSH2 0x2383 JUMP JUMPDEST SUB PUSH2 0x19AC JUMPI POP MLOAD SWAP2 PUSH1 0x6 SLOAD SWAP3 DUP4 ISZERO PUSH2 0x1999 JUMPI PUSH1 0x6 PUSH0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SSTORE MLOAD SWAP2 PUSH1 0x1 LT ISZERO PUSH2 0x1986 JUMPI POP PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D40 SSTORE STOP JUMPDEST PUSH1 0x32 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x32 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 DUP2 DUP5 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5765696768747320646F6E277420746F74616C20310000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x18F9 JUMP JUMPDEST PUSH1 0x41 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xEA3 PUSH2 0x2885 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x29A2241AF62C0000 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x15DE CALLDATASIZE PUSH2 0x212E JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x1B05 CALLDATASIZE PUSH2 0x212E JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xE05 JUMPI PUSH2 0xDCB JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLDATALOAD PUSH1 0x6 SLOAD DUP2 LT PUSH2 0x1BB5 JUMPI STOP JUMPDEST PUSH2 0x1BBE SWAP1 PUSH2 0x234E JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP1 PUSH0 NOT PUSH1 0x24 CALLDATALOAD DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xEA3 PUSH2 0x2298 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x1C24 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x20CE JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH2 0x1C40 PUSH2 0x1C39 DUP6 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP5 PUSH2 0x27D5 JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP2 DUP4 GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x3 EQ PUSH2 0x1DB0 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0x1D17 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x1CD5 JUMPI PUSH1 0x2 EQ PUSH2 0x1C80 JUMPI PUSH1 0x51 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP2 ISZERO PUSH2 0x1CAF JUMPI POP PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0xF2B SWAP3 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x2A90 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP DUP1 SWAP3 SWAP4 SWAP5 SWAP2 POP ISZERO PUSH2 0x1D04 JUMPI POP SWAP3 PUSH2 0xF2B PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x2A90 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1D70 JUMPI JUMPDEST POP POP POP DUP2 ISZERO PUSH2 0x1D4A JUMPI POP SWAP3 PUSH2 0xF2B PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2A90 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1DAA JUMPI SWAP1 DUP3 PUSH2 0x1DA2 DUP2 SWAP4 PUSH2 0xF2B PUSH2 0x1D98 DUP10 DUP7 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xF24 DUP11 PUSH2 0x224F JUMP JUMPDEST SWAP6 ADD SWAP3 PUSH2 0x1D2A JUMP JUMPDEST SWAP4 PUSH2 0x1D2F JUMP JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1DE2 JUMPI POP POP POP DUP2 ISZERO PUSH2 0x1D4A JUMPI POP SWAP3 PUSH2 0xF2B PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2A90 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1DAA JUMPI SWAP1 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1E1D DUP3 SWAP5 PUSH2 0xFBB PUSH2 0x1E13 DUP11 DUP8 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xFB4 DUP12 PUSH2 0x224F JUMP JUMPDEST DIV SWAP6 ADD SWAP3 PUSH2 0x1DC3 JUMP JUMPDEST DUP2 PUSH2 0x1C4E JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH2 0xD7A SWAP3 PUSH2 0x1E4C PUSH2 0x1FE5 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1ECD DUP5 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16BB JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1EFE JUMPI POP POP PUSH2 0x1F3 SWAP3 SWAP2 PUSH2 0x1027 SWAP2 SUB DUP6 PUSH2 0x2093 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1F41 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1027 PUSH2 0x164E JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1F2B JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1F7 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1F7 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1F7 JUMPI JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2047 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x20E8 DUP2 PUSH2 0x20B6 JUMP JUMPDEST SWAP4 PUSH2 0x20F6 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2093 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1F7 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x211F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2111 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x218F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x2181 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x21C2 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x21B4 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x21F6 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x2238 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x2224 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2219 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1F7 JUMPI JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MLOAD DUP2 LT ISZERO PUSH2 0x2270 JUMPI PUSH1 0x5 SHL PUSH8 0xDE0B6B3A7640020 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2270 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2343 JUMPI PUSH0 SWAP2 PUSH2 0x2314 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x233B JUMPI JUMPDEST DUP2 PUSH2 0x232F PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI MLOAD SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2322 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x2270 JUMPI PUSH1 0x6 PUSH0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2390 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x23BF DUP2 PUSH2 0x20B6 JUMP JUMPDEST SWAP4 PUSH2 0x23CD PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2093 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1F7 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x23F6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x23E8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x2448 SWAP3 ADD PUSH2 0x23A4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2466 DUP2 PUSH2 0x20B6 JUMP JUMPDEST SWAP4 PUSH2 0x2474 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2093 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1F7 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x249D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x248F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x1F7 JUMPI DUP2 PUSH2 0x24D9 SWAP2 DUP5 ADD PUSH2 0x244B JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x2448 SWAP3 ADD PUSH2 0x244B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 MLOAD PUSH2 0x2507 PUSH1 0x60 DUP4 ADD SWAP2 DUP3 MLOAD SWAP1 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP2 PUSH2 0x251B PUSH1 0x80 DUP3 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP2 DUP2 MLOAD PUSH2 0x2528 DUP2 PUSH2 0x21EC JUMP JUMPDEST PUSH2 0x2531 DUP2 PUSH2 0x21EC JUMP JUMPDEST PUSH2 0x25DC JUMPI PUSH2 0x254B PUSH2 0x2544 PUSH1 0x20 SWAP3 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP2 ADD MLOAD PUSH8 0xDE0B6B3A7640000 SWAP5 DUP6 PUSH2 0x2562 DUP3 PUSH2 0x2A2B JUMP JUMPDEST DIV DUP3 GT PUSH2 0x25B4 JUMPI PUSH2 0x2576 PUSH2 0x257C SWAP3 DUP3 PUSH2 0x2383 JUMP JUMPDEST SWAP1 PUSH2 0x2F00 JUMP JUMPDEST DUP5 DUP5 MUL SWAP4 DUP1 DUP6 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI PUSH2 0x259D PUSH2 0x25A3 SWAP3 PUSH2 0x25B0 SWAP6 PUSH2 0x2A72 JUMP JUMPDEST SWAP1 PUSH2 0x2A90 JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x2A5F JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x25F6 PUSH2 0x25EF PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP5 SWAP6 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP3 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x260B DUP6 PUSH2 0x2A2B JUMP JUMPDEST DIV DUP2 GT PUSH2 0x2665 JUMPI DUP4 SUB SWAP1 DUP4 DUP3 GT PUSH2 0x2390 JUMPI PUSH2 0x262C PUSH2 0x259D SWAP3 PUSH2 0x2632 SWAP6 PUSH2 0x2F00 JUMP JUMPDEST SWAP3 PUSH2 0x2F00 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2390 JUMPI PUSH2 0x2448 SWAP2 PUSH2 0x2B1B JUMP JUMPDEST PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1A0 SWAP2 DUP2 SWAP1 SUB DUP3 DUP2 SLT PUSH2 0x1F7 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x140 SWAP3 DUP4 DUP6 ADD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP7 DUP6 LT DUP3 DUP7 GT OR PUSH2 0x2047 JUMPI PUSH1 0x80 SGT PUSH2 0x1F7 JUMPI PUSH2 0x1C0 DUP7 ADD SWAP1 DUP2 GT DUP5 DUP3 LT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE PUSH2 0x26DF DUP2 PUSH2 0x2242 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x26ED PUSH1 0x20 DUP3 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x2702 PUSH1 0x40 DUP4 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x2717 PUSH1 0x60 DUP5 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI PUSH2 0x27A8 SWAP5 PUSH2 0x279E SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x2792 PUSH2 0x120 SWAP8 PUSH2 0x2786 DUP10 DUP8 ADD PUSH2 0x2242 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x2242 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x2242 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x2448 SWAP3 ADD PUSH2 0x244B JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x27F2 JUMPI PUSH2 0x27E8 SWAP1 PUSH2 0x234E JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP1 JUMP JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2859 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x2994 JUMPI JUMPDEST ISZERO PUSH2 0x28ED JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x28C4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x6 SLOAD DUP1 DUP4 MSTORE DUP3 PUSH1 0x20 SWAP2 PUSH1 0x20 DUP3 ADD SWAP1 PUSH1 0x6 PUSH0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x2A11 JUMPI POP POP POP PUSH2 0x2A0F SWAP3 POP SUB DUP4 PUSH2 0x2093 JUMP JUMPDEST JUMP JUMPDEST DUP6 SLOAD DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x29F9 JUMP JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2390 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2A7C JUMPI DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x2AA7 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2AC2 JUMPI POP POP DUP1 PUSH2 0x2448 SWAP2 PUSH2 0x2B1B JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2AE6 JUMPI POP POP PUSH2 0x2AE0 DUP2 PUSH2 0x2448 SWAP3 PUSH2 0x2B1B JUMP JUMPDEST DUP1 PUSH2 0x2B1B JUMP JUMPDEST PUSH2 0x2AF0 SWAP2 SWAP3 PUSH2 0x2F7D JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2AFC DUP4 PUSH2 0x2A48 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2390 JUMPI PUSH2 0x2448 SWAP2 PUSH2 0x2383 JUMP JUMPDEST SWAP1 PUSH2 0x2B25 SWAP2 PUSH2 0x2A5F JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2B91 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2B69 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2B5F DUP4 PUSH2 0x2077 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x2BA3 DUP4 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2C2C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2BCE JUMPI JUMPDEST POP POP PUSH2 0x2448 SWAP3 POP SUB DUP3 PUSH2 0x2093 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2C14 JUMPI POP PUSH2 0x2448 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2BC0 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2BF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x2448 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x2BC0 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2C91 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2B69 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2B5F DUP4 PUSH2 0x2077 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2CA6 DUP2 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2C2C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2CCE JUMPI POP POP PUSH2 0x2448 SWAP3 POP SUB DUP3 PUSH2 0x2093 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2D15 JUMPI POP PUSH2 0x2448 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2BC0 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2CFA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x2D44 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2D61 JUMPI POP POP DUP1 PUSH2 0x25B0 SWAP2 PUSH2 0x2A5F JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2D85 JUMPI POP PUSH2 0x2D7E DUP3 PUSH2 0x25B0 SWAP4 PUSH2 0x2A5F JUMP JUMPDEST DIV DUP1 PUSH2 0x2A5F JUMP JUMPDEST SWAP1 POP PUSH2 0x2D90 SWAP2 PUSH2 0x2F7D JUMP JUMPDEST PUSH2 0x2D99 DUP2 PUSH2 0x2A48 JUMP JUMPDEST PUSH1 0x1 PUSH0 NOT SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x2390 JUMPI DUP2 LT ISZERO PUSH2 0x2DC1 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x2E4A JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x2343 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2E40 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x21F6 JUMPI DUP1 PUSH2 0x2E67 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2E97 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x2ECB JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x2ED5 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x2F31 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2A7C JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2A7C JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x38A6 JUMPI DUP2 ISZERO PUSH2 0x38A0 JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x3878 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x3850 JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x383F JUMPI JUMPDEST ISZERO PUSH2 0x34DC JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x3016 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x2F73 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x34C9 JUMPI JUMPDEST ISZERO PUSH2 0x34A1 JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x348E JUMPI JUMPDEST ISZERO PUSH2 0x3466 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x3457 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x33F4 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x33BB JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x3381 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x3349 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x3311 JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x32DA JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x32A3 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x326C JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x3235 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x2448 JUMPI PUSH2 0x2448 SWAP1 PUSH2 0x2F59 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x31B6 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x31A4 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3192 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3189 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3177 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3165 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3153 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x3141 JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x3444 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x312C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x312C JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x30D0 JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x30C1 JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x30B1 JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x3829 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x37FE JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x37DD JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x37BA JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x379A JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x377A JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x375A JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x373A JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x3723 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x3703 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x36E3 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x36C4 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x36A5 JUMPI JUMPDEST POP PUSH2 0x3652 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x2F73 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x36A0 JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x3085 JUMP JUMPDEST PUSH2 0x369A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3616 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3602 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35EE JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35DA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35C6 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35B2 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x359E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3589 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3574 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x355C JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x353B JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x351E JUMP JUMPDEST SWAP1 POP PUSH2 0x3835 SWAP2 POP PUSH2 0x2F59 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x34F1 JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x2FC3 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE DUP6 0xE3 0xDF SELFBALANCE 0xFB TSTORE PUSH2 0x315F 0xEC GASLIMIT DUP15 GT GASLIMIT DUP8 PUSH32 0xDAB1FEF7DA73FCEFE5233C40F2BE9564736F6C634300081A0033000000000000 ","sourceMap":"396:1420:119:-:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;4659:11:113;;4672:13;;396:1420:119;;;4672:13:113;;4659:11;396:1420:119;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;;;;;;;-1:-1:-1;;;396:1420:119;;3401:45:106;;;:::i;:::-;3393:53;;3467:51;;;:::i;:::-;3456:62;;396:1420:119;;;;;3542:22:106;3528:36;;;;396:1420:119;3591:25:106;;3574:42;;;3644:13;396:1420:119;3627:30:106;396:1420:119;;4204:80:106;396:1420:119;4204:80:106;;2079:95;;;;396:1420:119;2079:95:106;;;396:1420:119;2079:95:106;;;3644:13;396:1420:119;2079:95:106;;;4278:4;396:1420:119;2079:95:106;;;396:1420:119;4204:80:106;;2079:95;396:1420:119;;;;;;;;;;;;;;;;;;4194:91:106;;396:1420:119;3667:48:106;4278:4;2079:95;3725:27;409:14:68;;;;396:1420:119;;;-1:-1:-1;;;;;396:1420:119;;;;2265:18:54;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;2265:18:54;396:1420:119;;;;;2265:18:54;396:1420:119;;;;-1:-1:-1;;;;;396:1420:119;;;;2293:22:54;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;2265:18:54;396:1420:119;;;;;2293:22:54;396:1420:119;;750:14:34;;396:1420:119;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;2265:18:54;396:1420:119;;;;;;;;;;;;4737:31:113;;;396:1420:119;;;4828:24:113;396:1420:119;1500:6:40;1496:65;;-1:-1:-1;;5005:3:113;4737:31;396:1420:119;;;;4987:16:113;;;;5051:27;396:1420:119;;;;;;5051:24:113;:27;:::i;:::-;396:1420:119;5097:30:113;3112:4;5097:30;;5093:87;;3112:4;;;;;;;;;;396:1420:119;;;;;5301:37:113;;5287:558;396:1420:119;;;;;;;;;;;4974:11:113;;396:1420:119;;;;-1:-1:-1;396:1420:119;;2293:22:54;396:1420:119;;-1:-1:-1;396:1420:119;5287:558:113;396:1420:119;;;;5363:6:113;396:1420:119;;5373:37:113;;5287:558;;5359:486;396:1420:119;;;5440:1:113;5435:6;5440:1;;5445:37;;5287:558;;5431:414;396:1420:119;;;2265:18:54;5507:6:113;2265:18:54;;5517:37:113;;5287:558;;5503:342;396:1420:119;;;2293:22:54;5579:6:113;2293:22:54;;5589:37:113;;5287:558;;5575:270;396:1420:119;;;;5651:6:113;396:1420:119;;5661:37:113;;5287:558;;5647:198;396:1420:119;;;5728:1:113;5723:6;5728:1;;5733:37;;5287:558;;5719:126;5800:1;396:1420:119;;;5795:6:113;5791:54;;5719:126;;5287:558;;5791:54;5805:37;;5791:54;;;5093:87;5154:11;;;-1:-1:-1;5154:11:113;2293:22:54;-1:-1:-1;5154:11:113;4987:16;;465:4:47;5927:31:113;5923:96;;396:1420:119;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;-1:-1:-1;;396:1420:119;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;652:52;396:1420;;;;;;;;;;;4969:886:113;396:1420:119;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;-1:-1:-1;396:1420:119;;;;;;720:13;;-1:-1:-1;757:3:119;396:1420;;;;735:20;;;;;800:27;396:1420;;;;800:24;:27;:::i;:::-;396:1420;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;-1:-1:-1;396:1420:119;;;;720:13;;396:1420;;;;-1:-1:-1;396:1420:119;;2293:22:54;396:1420:119;;-1:-1:-1;396:1420:119;735:20;396:1420;;;;;;;;;;;;;;;;;;;;2079:95:106;396:1420:119;;;;;3528:36:106;396:1420:119;;;;;3574:42:106;396:1420:119;;;;;3393:53:106;396:1420:119;;;;;3456:62:106;396:1420:119;;;;;409:14:68;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;750:14:34;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;4737:31:113;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;-1:-1:-1;396:1420:119;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;396:1420:119;;2293:22:54;396:1420:119;;-1:-1:-1;396:1420:119;5923:96:113;5981:27;;;-1:-1:-1;5981:27:113;2293:22:54;-1:-1:-1;5981:27:113;1496:65:40;1529:21;;;-1:-1:-1;1529:21:40;2293:22:54;-1:-1:-1;1529:21:40;396:1420:119;;;;-1:-1:-1;396:1420:119;;;;;;-1:-1:-1;396:1420:119;;;-1:-1:-1;;396:1420:119;;;;-1:-1:-1;;396:1420:119;;;;;;;4204:80:106;;;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;2265:18:54;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;-1:-1:-1;396:1420:119;;2293:22:54;396:1420:119;;-1:-1:-1;396:1420:119;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;2293:22:54;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;-1:-1:-1;;396:1420:119;;;;;;4204:80:106;396:1420:119;4204:80:106;;;;;;;396:1420:119;;;;;;;;;;;;2293:22:54;396:1420:119;;;;;;;;;;2265:18:54;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:22:54;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;2265:18:54;-1:-1:-1;396:1420:119;;;-1:-1:-1;;396:1420:119;;;;-1:-1:-1;;396:1420:119;;;;;;;4204:80:106;;;;;396:1420:119;;;;;;;;;;;;2265:18:54;396:1420:119;;;;;;;;;;2265:18:54;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:18:54;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;4204:80:106;396:1420:119;;-1:-1:-1;;396:1420:119;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;396:1420:119;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;2914:340:102:-;396:1420:119;;3059:2:102;;3037:24;;;3059:2;;;396:1420:119;1854:2:102;396:1420:119;;1840:16:102;1836:72;;396:1420:119;;;;;2079:95:106;396:1420:119;;;;;;1949:36:102;;3077:27;:::o;396:1420:119:-;;;;;;;;;;1949:36:102;3077:27;:::o;1836:72::-;396:1420:119;;;;1879:18:102;;;;;;;;;;;;396:1420:119;;;;;;;;;;;;;;;;3432:13:106;396:1420:119;;;;;;1854:2:102;396:1420:119;-1:-1:-1;;396:1420:119;;;1879:18:102;;;;3033:215;396:1420:119;-1:-1:-1;;;;;396:1420:119;;;;3432:13:106;396:1420:119;;;;;;;;;;;;;;3033:215:102;396:1420:119;;;;;;;;;;;3033:215:102;396:1420:119;;;;;;;;;;;;;;;;3432:13:106;396:1420:119;;;;;;;;;;;;;;;;;3432:13:106;396:1420:119;1390:66:102;3195:42;:::o;396:1420:119:-;;;;-1:-1:-1;396:1420:119;;;;;4204:80:106;;;;;396:1420:119;;3432:13:106;396:1420:119;;;3432:13:106;396:1420:119;;3432:13:106;396:1420:119;;;;;;;;;;;;;;;;;;;;;3432:13:106;396:1420:119;1390:66:102;3195:42;:::o;396:1420:119:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;3432:13:106;396:1420:119;;;;3432:13:106;396:1420:119;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;2914:340:102;396:1420:119;;3059:2:102;;3037:24;;;3059:2;;;396:1420:119;1854:2:102;396:1420:119;;1840:16:102;1836:72;;396:1420:119;;;;;2079:95:106;396:1420:119;;;;;;1949:36:102;;3077:27;:::o;3033:215::-;396:1420:119;;;-1:-1:-1;;;;;396:1420:119;;;;;;;;;;;;;;;;;;3033:215:102;396:1420:119;;;;;;;;;;;3033:215:102;396:1420:119;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;396:1420:119;;;;;;;;;;;;;1390:66:102;;3195:42::o;396:1420:119:-;;;;-1:-1:-1;396:1420:119;;;;;4204:80:106;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;3195:42;:::o;396:1420:119:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":8200,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_24380":{"entryPoint":8165,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_addresst_addresst_uint256":{"entryPoint":8494,"id":null,"parameterSlots":1,"returnSlots":3},"abi_decode_array_contract_IERC20_dyn_fromMemory":{"entryPoint":9250,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IERC20_dyn_memory_ptr_fromMemory":{"entryPoint":9124,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":8398,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_fromMemory":{"entryPoint":10159,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn_memory_ptr_fromMemory":{"entryPoint":9291,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dynt_array_uint256_dyn_fromMemory":{"entryPoint":9388,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bool_fromMemory":{"entryPoint":8770,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_PoolConfig_fromMemory":{"entryPoint":9869,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address_address_uint256":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_array_contract_IERC20_dyn":{"entryPoint":8611,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_array_uint256_dyn":{"entryPoint":8560,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":8128,"id":null,"parameterSlots":2,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":8374,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_uint256":{"entryPoint":9091,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_uint256":{"entryPoint":10866,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256":{"entryPoint":10847,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_uint256_24455":{"entryPoint":10795,"id":null,"parameterSlots":1,"returnSlots":1},"checked_mul_uint256_24492":{"entryPoint":10824,"id":null,"parameterSlots":1,"returnSlots":1},"copy_array_from_storage_to_memory_array_uint256_dyn":{"entryPoint":10685,"id":null,"parameterSlots":0,"returnSlots":1},"extract_byte_array_length":{"entryPoint":8714,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":8339,"id":null,"parameterSlots":2,"returnSlots":0},"finalize_allocation_24388":{"entryPoint":8235,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_24393":{"entryPoint":8283,"id":null,"parameterSlots":1,"returnSlots":0},"finalize_allocation_38300":{"entryPoint":8311,"id":null,"parameterSlots":1,"returnSlots":0},"fun_domainSeparatorV4":{"entryPoint":10373,"id":41103,"parameterSlots":0,"returnSlots":1},"fun_ensureOnlyVault":{"entryPoint":10266,"id":27687,"parameterSlots":0,"returnSlots":0},"fun_getNormalizedWeight":{"entryPoint":10197,"id":45859,"parameterSlots":1,"returnSlots":1},"fun_mulDivUp":{"entryPoint":12032,"id":7660,"parameterSlots":2,"returnSlots":1},"fun_mulUp":{"entryPoint":11035,"id":7596,"parameterSlots":2,"returnSlots":1},"fun_onSwap_inner":{"entryPoint":9456,"id":null,"parameterSlots":1,"returnSlots":1},"fun_pow":{"entryPoint":12157,"id":8093,"parameterSlots":2,"returnSlots":1},"fun_powDown":{"entryPoint":11565,"id":7756,"parameterSlots":2,"returnSlots":1},"fun_powUp":{"entryPoint":10896,"id":7823,"parameterSlots":2,"returnSlots":1},"fun_throwError":{"entryPoint":11861,"id":40979,"parameterSlots":2,"returnSlots":0},"fun_toStringWithFallback":{"entryPoint":11069,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_toStringWithFallback_24397":{"entryPoint":11375,"id":40235,"parameterSlots":1,"returnSlots":1},"fun_totalSupply":{"entryPoint":8856,"id":10447,"parameterSlots":0,"returnSlots":1},"fun_tryRecover":{"entryPoint":11718,"id":40894,"parameterSlots":4,"returnSlots":3},"fun_useNonce":{"entryPoint":null,"id":40024,"parameterSlots":1,"returnSlots":1},"memory_array_index_access_uint256_dyn":{"entryPoint":8836,"id":null,"parameterSlots":2,"returnSlots":1},"memory_array_index_access_uint256_dyn_38291":{"entryPoint":8783,"id":null,"parameterSlots":1,"returnSlots":1},"storage_array_index_access_uint256_dyn":{"entryPoint":9038,"id":null,"parameterSlots":1,"returnSlots":2},"validator_assert_enum_TokenType":{"entryPoint":8684,"id":null,"parameterSlots":1,"returnSlots":0},"wrapping_div_int256":{"entryPoint":12147,"id":null,"parameterSlots":2,"returnSlots":1},"wrapping_div_int256_24496":{"entryPoint":12121,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"immutableReferences":{"5129":[{"length":32,"start":1459},{"length":32,"start":2400},{"length":32,"start":2600},{"length":32,"start":3216},{"length":32,"start":4749}],"27649":[{"length":32,"start":630},{"length":32,"start":1182},{"length":32,"start":1653},{"length":32,"start":3476},{"length":32,"start":4355},{"length":32,"start":5316},{"length":32,"start":5961},{"length":32,"start":7010},{"length":32,"start":8929},{"length":32,"start":10289}],"41001":[{"length":32,"start":10443}],"41003":[{"length":32,"start":10647}],"41005":[{"length":32,"start":10396}],"41007":[{"length":32,"start":10522}],"41009":[{"length":32,"start":10560}],"41012":[{"length":32,"start":4414}],"41015":[{"length":32,"start":4456}]},"linkReferences":{},"object":"6080604090808252600480361015610015575f80fd5b60e05f35811c92836301ffc9a714611f595750826306fdde0314611eaa578263095ea7b314611e2c57826316a0b3e014611bf357826318160ddd14611bd757826319f32ccd14611b9857826323b872dd14611af057826323de665114611abe578263273c1adf14611a9c57826330adf81f14611a62578263313ce56714611a475782633644e51514611a2b5782633f3353de146118b757826353b79bd7146116fb57826354fd4d501461160b5782635687f2b8146115ac578263627cdcb914611583578263654cf15d14611561578263679aefce1461152a57826370a082311461145657826372c98186146113355782637ecebe00146112f157826381fa807c1461123057826384b0196e146111275782638d928af8146110d757826395d89b4114610fd1578263984de9e814610e0f578263a9059cbb14610cfc578263aa6ca80814610c37578263abb1dc44146109ce578263b156aa0a14610907578263b677fa56146108e5578263c0bc6f331461060c578263ce20ece7146105ec578263d335b0cf14610559578263d505accf146102ee57508163dd62ed3e146101fb575063f89f27ed146101c4575f80fd5b346101f7575f6003193601126101f7576101f3906101e06129bd565b9051918291602083526020830190612170565b0390f35b5f80fd5b82346101f757806003193601126101f7576020610216611fe5565b6064610220612008565b9473ffffffffffffffffffffffffffffffffffffffff808097875198899687957f927da10500000000000000000000000000000000000000000000000000000000875230908701521660248501521660448301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e5575f916102b0575b6020925051908152f35b90506020823d6020116102dd575b816102cb60209383612093565b810103126101f75760209151906102a6565b3d91506102be565b513d5f823e3d90fd5b8390346101f7576003193601126101f757610307611fe5565b90610310612008565b604435926084359060643560ff831683036101f75780421161052f5761035d8273ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f2080549060018201905590565b90610429610420875195602087017f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9815273ffffffffffffffffffffffffffffffffffffffff97889586891697888d840152878c1660608401528d608084015260a083015260c082015260c081526103d48161205b565b5190206103df612885565b908a51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220612dc6565b90929192612e55565b168181036105025750505f84959661049a60209651988996879586947fe1f21c67000000000000000000000000000000000000000000000000000000008652850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03927f0000000000000000000000000000000000000000000000000000000000000000165af19081156102e557506104ce57005b6020813d6020116104fa575b816104e760209383612093565b810103126101f7576104f890612242565b005b3d91506104da565b877f4b800e46000000000000000000000000000000000000000000000000000000005f525260245260445ffd5b867f62791302000000000000000000000000000000000000000000000000000000005f525260245ffd5b5082346101f7575f6003193601126101f7578051917fb45090f9000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156102e5575f916102b0576020925051908152f35b83346101f7575f6003193601126101f757602090516509184e72a0008152f35b9150346101f7575f6003193601126101f75782516106298161205b565b606081526020918282019160608352858101925f8452606082015f815260808301915f835260a08401935f855260c08101955f875273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908b517f535cfd8a00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa908115610895575f916108c3575b5083528b517f7e361bde00000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa908115610895575f9161089f575b5084528b517fb45090f900000000000000000000000000000000000000000000000000000000815230828201528a81602481865afa908115610895575f91610868575b508952610767612298565b85528b519182917ff29486a100000000000000000000000000000000000000000000000000000000835230908301528160246101a09485935afa91821561085e57928b9c926107f69261080996955f9e9c9d9e92610831575b50508a81015115158852610120610100918281015115158b52015115158a5283519d8d8f9e938f948552519301528c0190612170565b915190601f198b840301908b0152612170565b9551606088015251608087015251151560a086015251151560c0850152511515908301520390f35b6108509250803d10610857575b6108488183612093565b81019061268d565b5f806107c0565b503d61083e565b8c513d5f823e3d90fd5b90508a81813d831161088e575b61087f8183612093565b810103126101f757515f61075c565b503d610875565b8d513d5f823e3d90fd5b6108bb91503d805f833e6108b38183612093565b8101906124ac565b90505f610719565b6108df91503d805f833e6108d78183612093565b8101906127af565b5f6106d6565b83346101f7575f6003193601126101f757602090516709b6e64a8ec600008152f35b8382346101f7575f6003193601126101f7578151907f535cfd8a00000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109c457916101f3925f926109a8575b5051918291602083526020830190612170565b6109bd9192503d805f833e6108d78183612093565b9083610995565b82513d5f823e3d90fd5b8382346101f7575f6003193601126101f75773ffffffffffffffffffffffffffffffffffffffff8251917f67e0e07600000000000000000000000000000000000000000000000000000000835230908301525f82602481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c2d575f935f925f925f95610b03575b5090610a7b959493929181519687966080885260808801906121a3565b6020878203818901528080875193848152019601925f905b838210610abf57898803868b015289806101f38b610ab18c8c612170565b908382036060850152612170565b9184989950606086979860019395978397518051610adc816121ec565b83528685820151168584015201511515898201520198019201899897969594929391610a93565b955093509150503d805f853e610b198185612093565b8301926080818503126101f75780519167ffffffffffffffff928381116101f75785610b469184016123a4565b91602095868201518581116101f757820181601f820112156101f757805190610b6e826120b6565b98610b7b86519a8b612093565b828a52808a01816060809502840101928584116101f7578201905b838210610bdb575050505050828201518581116101f75781610bb991840161244b565b9460608301519081116101f757610bd0920161244b565b919492919386610a5e565b84828703126101f757875190610bf08261202b565b825160028110156101f757825283830151908c821682036101f7578285928389950152610c1e8b8601612242565b8b820152815201910190610b96565b83513d5f823e3d90fd5b8382346101f7575f6003193601126101f7578151907fca4f280300000000000000000000000000000000000000000000000000000000825230908201525f8160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156109c457916101f3925f92610cd8575b50519182916020835260208301906121a3565b610cf59192503d805f833e610ced8183612093565b810190612422565b9083610cc5565b5082346101f757806003193601126101f7576020610d7a92610d1c611fe5565b83517fbeabacc80000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610e0557610dcb575b6020905160018152f35b6020823d602011610dfd575b81610de460209383612093565b810103126101f757610df7602092612242565b50610dc1565b3d9150610dd7565b50513d5f823e3d90fd5b5082346101f757806003193601126101f757813567ffffffffffffffff81116101f757610e3f90369084016120ce565b60243560028110156101f757610e54816121ec565b610fca57825b610e626129bd565b9080600314610f755780600414610eee5780600114610eab57600214610e9557605184634e487b7160e01b5f525260245ffd5b6020935090610ea391612f00565b905b51908152f35b509092670de0b6b3a764000091828102928184041490151715610edb5750602092610ed591612a72565b90610ea5565b601190634e487b7160e01b5f525260245ffd5b50925f9190670de0b6b3a76400005b8551841015610f3957610f31600191610f2b610f198787612284565b51610f24888b612284565b5190612a90565b90612b1b565b930192610efd565b92509350508015610f4e576020925090610ea5565b827f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b50925f9190670de0b6b3a76400005b8551841015610f3957670de0b6b3a7640000610fc1600192610fbb610fa98888612284565b51610fb4898c612284565b5190612d2d565b90612a5f565b04930192610f84565b6003610e5a565b8382346101f7575f6003193601126101f757815191825f8354610ff38161220a565b90818452602095600191876001821691825f14611092575050600114611036575b5050506101f39291611027910385612093565b51928284938452830190611fc0565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061107a57505050820101816110276101f3611014565b8054848a018601528895508794909301928101611061565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b8601909301935084925061102791506101f39050611014565b83346101f7575f6003193601126101f7576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9150346101f7575f6003193601126101f7576111627f0000000000000000000000000000000000000000000000000000000000000000612b3d565b9261118c7f0000000000000000000000000000000000000000000000000000000000000000612c6f565b815192602084019084821067ffffffffffffffff83111761121d5750916111fd916101f3949382525f84526111f082519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a0152880190611fc0565b9186830390870152611fc0565b904660608501523060808501525f60a085015283820360c0850152612170565b604190634e487b7160e01b5f525260245ffd5b8382346101f7575f6003193601126101f7578151907ff29486a100000000000000000000000000000000000000000000000000000000825230908201526101a090818160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa918215610c2d575f926112d4575b505060608282015191015182519182526020820152f35b6112ea9250803d10610857576108488183612093565b82806112bd565b83346101f75760206003193601126101f75760209073ffffffffffffffffffffffffffffffffffffffff611323611fe5565b165f5260028252805f20549051908152f35b8382346101f75760209260031984813601126101f75782359167ffffffffffffffff918284116101f75783360301126101f7578351916113748361205b565b8084013560028110156101f757835260248101358684015260448101358281116101f7576113a7908536918401016120ce565b85840152606481013560608401526084810135608084015260a481013573ffffffffffffffffffffffffffffffffffffffff811681036101f75760a084015260c4810135908282116101f7570192366023850112156101f7578084013591821161121d575083519061142286601f19601f8401160183612093565b80825236602482860101116101f75785815f926024610ea39701838601378301015260c082015261145161281a565b6124f0565b8382346101f757602091826003193601126101f75782611474611fe5565b604473ffffffffffffffffffffffffffffffffffffffff9485855196879485937ff7888aec00000000000000000000000000000000000000000000000000000000855230908501521660248301527f0000000000000000000000000000000000000000000000000000000000000000165afa918215610e05575f926114fb575b5051908152f35b9091508281813d8311611523575b6115138183612093565b810103126101f7575190836114f4565b503d611509565b50346101f7575f6003193601126101f7577f18e79a20000000000000000000000000000000000000000000000000000000005f525ffd5b83346101f7575f6003193601126101f7576020905167016345785d8a00008152f35b346101f7575f6003193601126101f757335f908152600260205260409020805460018101909155005b83346101f75760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256115de3661212e565b9391946115e961281a565b5193845273ffffffffffffffffffffffffffffffffffffffff908116941692a3005b83346101f7575f6003193601126101f75780516005549091825f61162e8461220a565b808352602094600190866001821691825f146116bb575050600114611660575b50506101f39291611027910385612093565b9085925060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f925b8284106116a3575050508201018161102761164e565b8054848a01860152889550879490930192810161168d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150611027905061164e565b5082346101f7575f6003193601126101f7578051906117198261202b565b606082526020908183019160608352818401926060845273ffffffffffffffffffffffffffffffffffffffff95867f0000000000000000000000000000000000000000000000000000000000000000169084517fca4f280300000000000000000000000000000000000000000000000000000000815230828201525f81602481865afa9081156118ad57905f92918391611893575b50885260248651809481937f7e361bde00000000000000000000000000000000000000000000000000000000835230908301525afa908115611889575f91611870575b5081959295526117ff6129bd565b84528251948086526080860192519260608288015283518091528160a088019401915f5b82811061185a5788806101f38a8a6118498b8b51601f1993848884030190880152612170565b915190848303016060850152612170565b83518a1686529481019492810192600101611823565b61188491503d805f833e6108b38183612093565b6117f1565b84513d5f823e3d90fd5b6118a791503d8085833e610ced8183612093565b8a6117ae565b86513d5f823e3d90fd5b8382346101f757816003193601126101f75736602312156101f757815182810181811067ffffffffffffffff821117611a185783526044813682116101f75783905b828210611a0857505050805192670de0b6b3a764000061191f6020840195865190612383565b036119ac575051916006549283156119995760065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5551916001101561198657507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4055005b603290634e487b7160e01b5f525260245ffd5b603283634e487b7160e01b5f525260245ffd5b517f08c379a0000000000000000000000000000000000000000000000000000000008152602081840152601560248201527f5765696768747320646f6e277420746f74616c203100000000000000000000006044820152606490fd5b81358152602091820191016118f9565b604183634e487b7160e01b5f525260245ffd5b83346101f7575f6003193601126101f757602090610ea3612885565b83346101f7575f6003193601126101f7576020905160128152f35b83346101f7575f6003193601126101f757602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b83346101f7575f6003193601126101f757602090516729a2241af62c00008152f35b83346101f75760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115de3661212e565b5082346101f75760205f6084611b053661212e565b86517f15dacbea000000000000000000000000000000000000000000000000000000008152339881019890985273ffffffffffffffffffffffffffffffffffffffff928316602489015290821660448801526064870152859283917f0000000000000000000000000000000000000000000000000000000000000000165af18015610e0557610dcb576020905160018152f35b5082346101f7576003193601126101f757356006548110611bb557005b611bbe9061234e565b81549060031b905f19602435831b921b19161790555f80f35b83346101f7575f6003193601126101f757602090610ea3612298565b8382346101f75760606003193601126101f757803567ffffffffffffffff81116101f757611c2490369083016120ce565b9160243592611c40611c398560443593612284565b51946127d5565b60019081831115611e265760025b80600314611db05780600414611d175780600114611cd557600214611c8057605185634e487b7160e01b5f525260245ffd5b909192938115611caf5750610ea39260209592610f2b926ec097ce7bc90715b34b9f0fffffffff040190612a90565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f525ffd5b5080929394915015611d04575092610f2b610ea3926020956ec097ce7bc90715b34b9f10000000000490612a90565b601290634e487b7160e01b5f525260245ffd5b509192939080670de0b6b3a7640000935f925b611d70575b5050508115611d4a575092610f2b610ea39260209590612a90565b7f26543689000000000000000000000000000000000000000000000000000000005f525ffd5b909193670de0b6b3a764000051851015611daa579082611da28193610f2b611d988986612284565b51610f248a61224f565b950192611d2a565b93611d2f565b509192939080670de0b6b3a7640000935f925b611de2575050508115611d4a575092610f2b610ea39260209590612a90565b909193670de0b6b3a764000051851015611daa579082670de0b6b3a7640000611e1d8294610fbb611e138a87612284565b51610fb48b61224f565b04950192611dc3565b81611c4e565b5082346101f757806003193601126101f7576020610d7a92611e4c611fe5565b83517fe1f21c670000000000000000000000000000000000000000000000000000000081523392810192835273ffffffffffffffffffffffffffffffffffffffff909116602083015260243560408301529384918291606090910190565b83346101f7575f6003193601126101f75780516003549091825f611ecd8461220a565b808352602094600190866001821691825f146116bb575050600114611efe5750506101f39291611027910385612093565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410611f41575050508201018161102761164e565b8054848a018601528895508794909301928101611f2b565b82346101f75760206003193601126101f75735907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101f7577f01ffc9a700000000000000000000000000000000000000000000000000000000602092148152f35b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101f757565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101f757565b6060810190811067ffffffffffffffff82111761204757604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761204757604052565b6040810190811067ffffffffffffffff82111761204757604052565b90601f601f19910116810190811067ffffffffffffffff82111761204757604052565b67ffffffffffffffff81116120475760051b60200190565b9080601f830112156101f75760209082356120e8816120b6565b936120f66040519586612093565b81855260208086019260051b8201019283116101f757602001905b82821061211f575050505090565b81358152908301908301612111565b60031960609101126101f75773ffffffffffffffffffffffffffffffffffffffff9060043582811681036101f7579160243590811681036101f7579060443590565b9081518082526020808093019301915f5b82811061218f575050505090565b835185529381019392810192600101612181565b9081518082526020808093019301915f5b8281106121c2575050505090565b835173ffffffffffffffffffffffffffffffffffffffff16855293810193928101926001016121b4565b600211156121f657565b634e487b7160e01b5f52602160045260245ffd5b90600182811c92168015612238575b602083101461222457565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612219565b519081151582036101f757565b670de0b6b3a7640000518110156122705760051b670de0b6b3a76400200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156122705760209160051b010190565b6040517fe4dc2aa400000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115612343575f91612314575090565b90506020813d60201161233b575b8161232f60209383612093565b810103126101f7575190565b3d9150612322565b6040513d5f823e3d90fd5b6006548110156122705760065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905f90565b9190820180921161239057565b634e487b7160e01b5f52601160045260245ffd5b9080601f830112156101f7578151906020916123bf816120b6565b936123cd6040519586612093565b81855260208086019260051b8201019283116101f757602001905b8282106123f6575050505090565b815173ffffffffffffffffffffffffffffffffffffffff811681036101f75781529083019083016123e8565b906020828203126101f757815167ffffffffffffffff81116101f75761244892016123a4565b90565b9080601f830112156101f757815190602091612466816120b6565b936124746040519586612093565b81855260208086019260051b8201019283116101f757602001905b82821061249d575050505090565b8151815290830190830161248f565b9190916040818403126101f75780519267ffffffffffffffff938481116101f757816124d991840161244b565b9360208301519081116101f757612448920161244b565b604081019081516125076060830191825190612284565b5192519161251b6080820193845190612284565b51918151612528816121ec565b612531816121ec565b6125dc5761254b612544602092516127d5565b94516127d5565b910151670de0b6b3a7640000948561256282612a2b565b0482116125b45761257661257c9282612383565b90612f00565b848402938085048614901517156123905761259d6125a3926125b095612a72565b90612a90565b8381810391100290612a5f565b0490565b7f340a4533000000000000000000000000000000000000000000000000000000005f5260045ffd5b6125f66125ef60209295939495516127d5565b92516127d5565b920151670de0b6b3a764000061260b85612a2b565b048111612665578303908382116123905761262c61259d9261263295612f00565b92612f00565b7ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000081019081116123905761244891612b1b565b7f64590b9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101a0918190038281126101f75760405192610140928385019267ffffffffffffffff9086851082861117612047576080136101f7576101c0860190811184821017612047576040526126df81612242565b83526126ed60208201612242565b92610160938487015261270260408301612242565b92610180938488015261271760608401612242565b9087015285526080810151602086015260a0810151604086015260c0810151606086015260e081015164ffffffffff811681036101f75760808601526101008082015163ffffffff811681036101f7576127a89461279e9160a089015261279261012097612786898701612242565b60c08b01528501612242565b60e08901528301612242565b9086015201612242565b9082015290565b906020828203126101f757815167ffffffffffffffff81116101f757612448920161244b565b6006548110156127f2576127e89061234e565b90549060031b1c90565b7fc1ab6dc1000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361285957565b7f089676d5000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612994575b156128ed577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176120475760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146128c4565b6040519060065480835282602091602082019060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f905b828210612a1157505050612a0f92500383612093565b565b8554845260019586019588955093810193909101906129f9565b90670429d069189e00009182810292818404149015171561239057565b906127109182810292818404149015171561239057565b8181029291811591840414171561239057565b8115612a7c570490565b634e487b7160e01b5f52601260045260245ffd5b90670de0b6b3a764000090818103612aa757505090565b671bc16d674ec800008103612ac25750508061244891612b1b565b673782dace9d9000008103612ae6575050612ae08161244892612b1b565b80612b1b565b612af09192612f7d565b906001612afc83612a48565b915f198301040190151502600181018091116123905761244891612383565b90612b2591612a5f565b6001670de0b6b3a76400005f19830104019015150290565b60ff8114612b915760ff811690601f8211612b695760405191612b5f83612077565b8252602082015290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b506040515f815f5491612ba38361220a565b80835292602090600190818116908115612c2c5750600114612bce575b505061244892500382612093565b9150925f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563935f925b828410612c1457506124489450505081016020015f80612bc0565b85548785018301529485019486945092810192612bf9565b9050602093506124489592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80612bc0565b60ff8114612c915760ff811690601f8211612b695760405191612b5f83612077565b506040515f81600191600154612ca68161220a565b8084529360209160018116908115612c2c5750600114612cce57505061244892500382612093565b91509260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6935f925b828410612d1557506124489450505081016020015f80612bc0565b85548785018301529485019486945092810192612cfa565b670de0b6b3a764000091808303612d445750905090565b8290671bc16d674ec800008103612d61575050806125b091612a5f565b673782dace9d9000008103612d855750612d7e826125b093612a5f565b0480612a5f565b9050612d9091612f7d565b612d9981612a48565b60015f1993848301040190151502906001820180831161239057811015612dc1575050505f90565b030190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612e4a579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612343575f5173ffffffffffffffffffffffffffffffffffffffff811615612e4057905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156121f65780612e67575050565b60018103612e97577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b60028103612ecb57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600314612ed55750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b908015612f3157670de0b6b3a764000091828102928184041490151715612390576001905f19830104019015150290565b7f0a0c22c7000000000000000000000000000000000000000000000000000000005f5260045ffd5b8015612a7c576ec097ce7bc90715b34b9f10000000000590565b8115612a7c570590565b9080156138a65781156138a0578160ff1c61387857770bce5086492111aea88f4bb1ca6bcf584181ea8059f765328110156138505781670c7d713b49da0000128061383f575b156134dc57670de0b6b3a7640000916ec097ce7bc90715b34b9f100000000090613016908402828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302612f73565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b918082818507020592050201670de0b6b3a7640000905b057ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000081811315806134c9575b156134a15781908212158061348e575b15613466575f915f8112613457575b506064906806f05b59d3b200000081126133f4577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac620000008112156133bb575b6856bc75e2d631000000811215613381575b682b5e3af16b18800000811215613349575b6815af1d78b58c400000811215613311575b680ad78ebc5ac62000008112156132da575b828112156132a3575b6802b5e3af16b188000081121561326c575b68015af1d78b58c40000811215613235575b60028382800205056003848383020505600485848302050585600581868402050560068287830205056007838883020505906008848984020505926009858a8602050595600a868b8902050597600b878c8b02050599600c888d8d0205059b01010101010101010101010102050205905f146124485761244890612f59565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000849201920205906131b6565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000849201920205906131a4565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590613192565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590613189565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590613177565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000084920192020590613165565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000084920192020590613153565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000001613141565b6803782dace9d90000008112613444577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef73809261312c565b68056bc75e2d631000008260019261312c565b600192505f03905060646130d0565b7fd4794efd000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c800008213156130c1565b7fa2f9f7e3000000000000000000000000000000000000000000000000000000005f5260045ffd5b5068070c1cc73b00c800008213156130b1565b81670de0b6b3a7640000925f91848112613829575b506064905f7e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c00000000000008212156137fe575b73011798004d755d3c8bc8e03204cf44619e0000008212156137dd575b820290808302906e01855144814a7ff805980ff008400090818312156137ba575b50506b02df0ab5a80a22c61ab5a7008082121561379a575b50693f1fce3da636ea5cf8508082121561377a575b50690127fa27722cc06cc5e28082121561375a575b5068280e60114edb805d038082121561373a575b50680ebc5fb4174612111080821215613723575b506808f00f760a4b2db55d80821215613703575b506806f5f1775788937937808212156136e3575b506806248f33704b286603808212156136c4575b506805c548670b9510e7ac808212156136a5575b5061365268056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102612f73565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b0105905f146136a0575f035b02613085565b61369a565b68056bc75e2d631000006756bc75e2d63100009202059101905f613616565b68056bc75e2d6310000067ad78ebc5ac6200009202059101905f613602565b68056bc75e2d6310000068015af1d78b58c400009202059101905f6135ee565b68056bc75e2d631000006802b5e3af16b18800009202059101905f6135da565b68056bc75e2d63100000809202059101905f6135c6565b68056bc75e2d63100000680ad78ebc5ac62000009202059101905f6135b2565b68056bc75e2d631000006815af1d78b58c4000009202059101905f61359e565b68056bc75e2d63100000682b5e3af16b188000009202059101905f613589565b68056bc75e2d631000006856bc75e2d6310000009202059101905f613574565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101905f8061355c565b906b1425982cf597cd205cef73806803782dace9d90000009105910161353b565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b200000061351e565b90506138359150612f59565b60019060646134f1565b50670f43fc2c04ee00008212612fc3565b7fd8317311000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f022701e0000000000000000000000000000000000000000000000000000000005f5260045ffd5b50505f90565b5050670de0b6b3a76400009056fea26469706673582212201a85e3df47fb5d61315fec458e1145877fdab1fef7da73fcefe5233c40f2be9564736f6c634300081a0033","opcodes":"PUSH1 0x80 PUSH1 0x40 SWAP1 DUP1 DUP3 MSTORE PUSH1 0x4 DUP1 CALLDATASIZE LT ISZERO PUSH2 0x15 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0xE0 PUSH0 CALLDATALOAD DUP2 SHR SWAP3 DUP4 PUSH4 0x1FFC9A7 EQ PUSH2 0x1F59 JUMPI POP DUP3 PUSH4 0x6FDDE03 EQ PUSH2 0x1EAA JUMPI DUP3 PUSH4 0x95EA7B3 EQ PUSH2 0x1E2C JUMPI DUP3 PUSH4 0x16A0B3E0 EQ PUSH2 0x1BF3 JUMPI DUP3 PUSH4 0x18160DDD EQ PUSH2 0x1BD7 JUMPI DUP3 PUSH4 0x19F32CCD EQ PUSH2 0x1B98 JUMPI DUP3 PUSH4 0x23B872DD EQ PUSH2 0x1AF0 JUMPI DUP3 PUSH4 0x23DE6651 EQ PUSH2 0x1ABE JUMPI DUP3 PUSH4 0x273C1ADF EQ PUSH2 0x1A9C JUMPI DUP3 PUSH4 0x30ADF81F EQ PUSH2 0x1A62 JUMPI DUP3 PUSH4 0x313CE567 EQ PUSH2 0x1A47 JUMPI DUP3 PUSH4 0x3644E515 EQ PUSH2 0x1A2B JUMPI DUP3 PUSH4 0x3F3353DE EQ PUSH2 0x18B7 JUMPI DUP3 PUSH4 0x53B79BD7 EQ PUSH2 0x16FB JUMPI DUP3 PUSH4 0x54FD4D50 EQ PUSH2 0x160B JUMPI DUP3 PUSH4 0x5687F2B8 EQ PUSH2 0x15AC JUMPI DUP3 PUSH4 0x627CDCB9 EQ PUSH2 0x1583 JUMPI DUP3 PUSH4 0x654CF15D EQ PUSH2 0x1561 JUMPI DUP3 PUSH4 0x679AEFCE EQ PUSH2 0x152A JUMPI DUP3 PUSH4 0x70A08231 EQ PUSH2 0x1456 JUMPI DUP3 PUSH4 0x72C98186 EQ PUSH2 0x1335 JUMPI DUP3 PUSH4 0x7ECEBE00 EQ PUSH2 0x12F1 JUMPI DUP3 PUSH4 0x81FA807C EQ PUSH2 0x1230 JUMPI DUP3 PUSH4 0x84B0196E EQ PUSH2 0x1127 JUMPI DUP3 PUSH4 0x8D928AF8 EQ PUSH2 0x10D7 JUMPI DUP3 PUSH4 0x95D89B41 EQ PUSH2 0xFD1 JUMPI DUP3 PUSH4 0x984DE9E8 EQ PUSH2 0xE0F JUMPI DUP3 PUSH4 0xA9059CBB EQ PUSH2 0xCFC JUMPI DUP3 PUSH4 0xAA6CA808 EQ PUSH2 0xC37 JUMPI DUP3 PUSH4 0xABB1DC44 EQ PUSH2 0x9CE JUMPI DUP3 PUSH4 0xB156AA0A EQ PUSH2 0x907 JUMPI DUP3 PUSH4 0xB677FA56 EQ PUSH2 0x8E5 JUMPI DUP3 PUSH4 0xC0BC6F33 EQ PUSH2 0x60C JUMPI DUP3 PUSH4 0xCE20ECE7 EQ PUSH2 0x5EC JUMPI DUP3 PUSH4 0xD335B0CF EQ PUSH2 0x559 JUMPI DUP3 PUSH4 0xD505ACCF EQ PUSH2 0x2EE JUMPI POP DUP2 PUSH4 0xDD62ED3E EQ PUSH2 0x1FB JUMPI POP PUSH4 0xF89F27ED EQ PUSH2 0x1C4 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH2 0x1F3 SWAP1 PUSH2 0x1E0 PUSH2 0x29BD JUMP JUMPDEST SWAP1 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2170 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH2 0x216 PUSH2 0x1FE5 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x220 PUSH2 0x2008 JUMP JUMPDEST SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP1 SWAP8 DUP8 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 PUSH32 0x927DA10500000000000000000000000000000000000000000000000000000000 DUP8 MSTORE ADDRESS SWAP1 DUP8 ADD MSTORE AND PUSH1 0x24 DUP6 ADD MSTORE AND PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E5 JUMPI PUSH0 SWAP2 PUSH2 0x2B0 JUMPI JUMPDEST PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 POP PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x2DD JUMPI JUMPDEST DUP2 PUSH2 0x2CB PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP2 MLOAD SWAP1 PUSH2 0x2A6 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2BE JUMP JUMPDEST MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 SWAP1 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH2 0x307 PUSH2 0x1FE5 JUMP JUMPDEST SWAP1 PUSH2 0x310 PUSH2 0x2008 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP4 AND DUP4 SUB PUSH2 0x1F7 JUMPI DUP1 TIMESTAMP GT PUSH2 0x52F JUMPI PUSH2 0x35D DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH0 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP1 SLOAD SWAP1 PUSH1 0x1 DUP3 ADD SWAP1 SSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x429 PUSH2 0x420 DUP8 MLOAD SWAP6 PUSH1 0x20 DUP8 ADD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 SWAP6 DUP7 DUP10 AND SWAP8 DUP9 DUP14 DUP5 ADD MSTORE DUP8 DUP13 AND PUSH1 0x60 DUP5 ADD MSTORE DUP14 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x3D4 DUP2 PUSH2 0x205B JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x3DF PUSH2 0x2885 JUMP JUMPDEST SWAP1 DUP11 MLOAD SWAP2 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0x2DC6 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0x2E55 JUMP JUMPDEST AND DUP2 DUP2 SUB PUSH2 0x502 JUMPI POP POP PUSH0 DUP5 SWAP6 SWAP7 PUSH2 0x49A PUSH1 0x20 SWAP7 MLOAD SWAP9 DUP10 SWAP7 DUP8 SWAP6 DUP7 SWAP5 PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP7 MSTORE DUP6 ADD PUSH1 0x40 SWAP2 SWAP5 SWAP4 SWAP3 SWAP5 PUSH1 0x60 DUP3 ADD SWAP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 SWAP3 AND DUP4 MSTORE AND PUSH1 0x20 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SUB SWAP3 PUSH32 0x0 AND GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x2E5 JUMPI POP PUSH2 0x4CE JUMPI STOP JUMPDEST PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x4FA JUMPI JUMPDEST DUP2 PUSH2 0x4E7 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI PUSH2 0x4F8 SWAP1 PUSH2 0x2242 JUMP JUMPDEST STOP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x4DA JUMP JUMPDEST DUP8 PUSH32 0x4B800E4600000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST DUP7 PUSH32 0x6279130200000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP2 PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH1 0x20 DUP3 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2E5 JUMPI PUSH0 SWAP2 PUSH2 0x2B0 JUMPI PUSH1 0x20 SWAP3 POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH6 0x9184E72A000 DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP3 MLOAD PUSH2 0x629 DUP2 PUSH2 0x205B JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 DUP3 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP6 DUP2 ADD SWAP3 PUSH0 DUP5 MSTORE PUSH1 0x60 DUP3 ADD PUSH0 DUP2 MSTORE PUSH1 0x80 DUP4 ADD SWAP2 PUSH0 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 PUSH0 DUP6 MSTORE PUSH1 0xC0 DUP2 ADD SWAP6 PUSH0 DUP8 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 DUP12 MLOAD PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x895 JUMPI PUSH0 SWAP2 PUSH2 0x8C3 JUMPI JUMPDEST POP DUP4 MSTORE DUP12 MLOAD PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x895 JUMPI PUSH0 SWAP2 PUSH2 0x89F JUMPI JUMPDEST POP DUP5 MSTORE DUP12 MLOAD PUSH32 0xB45090F900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE DUP11 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x895 JUMPI PUSH0 SWAP2 PUSH2 0x868 JUMPI JUMPDEST POP DUP10 MSTORE PUSH2 0x767 PUSH2 0x2298 JUMP JUMPDEST DUP6 MSTORE DUP12 MLOAD SWAP2 DUP3 SWAP2 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE DUP2 PUSH1 0x24 PUSH2 0x1A0 SWAP5 DUP6 SWAP4 GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x85E JUMPI SWAP3 DUP12 SWAP13 SWAP3 PUSH2 0x7F6 SWAP3 PUSH2 0x809 SWAP7 SWAP6 PUSH0 SWAP15 SWAP13 SWAP14 SWAP15 SWAP3 PUSH2 0x831 JUMPI JUMPDEST POP POP DUP11 DUP2 ADD MLOAD ISZERO ISZERO DUP9 MSTORE PUSH2 0x120 PUSH2 0x100 SWAP2 DUP3 DUP2 ADD MLOAD ISZERO ISZERO DUP12 MSTORE ADD MLOAD ISZERO ISZERO DUP11 MSTORE DUP4 MLOAD SWAP14 DUP14 DUP16 SWAP15 SWAP4 DUP16 SWAP5 DUP6 MSTORE MLOAD SWAP4 ADD MSTORE DUP13 ADD SWAP1 PUSH2 0x2170 JUMP JUMPDEST SWAP2 MLOAD SWAP1 PUSH1 0x1F NOT DUP12 DUP5 SUB ADD SWAP1 DUP12 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST SWAP6 MLOAD PUSH1 0x60 DUP9 ADD MSTORE MLOAD PUSH1 0x80 DUP8 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xA0 DUP7 ADD MSTORE MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE MLOAD ISZERO ISZERO SWAP1 DUP4 ADD MSTORE SUB SWAP1 RETURN JUMPDEST PUSH2 0x850 SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x857 JUMPI JUMPDEST PUSH2 0x848 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x268D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x7C0 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x83E JUMP JUMPDEST DUP13 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST SWAP1 POP DUP11 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x88E JUMPI JUMPDEST PUSH2 0x87F DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI MLOAD PUSH0 PUSH2 0x75C JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x875 JUMP JUMPDEST DUP14 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x8BB SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8B3 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x24AC JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x8DF SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8D7 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x27AF JUMP JUMPDEST PUSH0 PUSH2 0x6D6 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x9B6E64A8EC60000 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH32 0x535CFD8A00000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9C4 JUMPI SWAP2 PUSH2 0x1F3 SWAP3 PUSH0 SWAP3 PUSH2 0x9A8 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x2170 JUMP JUMPDEST PUSH2 0x9BD SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8D7 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0x995 JUMP JUMPDEST DUP3 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 MLOAD SWAP2 PUSH32 0x67E0E07600000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE PUSH0 DUP3 PUSH1 0x24 DUP2 DUP5 PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC2D JUMPI PUSH0 SWAP4 PUSH0 SWAP3 PUSH0 SWAP3 PUSH0 SWAP6 PUSH2 0xB03 JUMPI JUMPDEST POP SWAP1 PUSH2 0xA7B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 DUP2 MLOAD SWAP7 DUP8 SWAP7 PUSH1 0x80 DUP9 MSTORE PUSH1 0x80 DUP9 ADD SWAP1 PUSH2 0x21A3 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP3 SUB DUP2 DUP10 ADD MSTORE DUP1 DUP1 DUP8 MLOAD SWAP4 DUP5 DUP2 MSTORE ADD SWAP7 ADD SWAP3 PUSH0 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xABF JUMPI DUP10 DUP9 SUB DUP7 DUP12 ADD MSTORE DUP10 DUP1 PUSH2 0x1F3 DUP12 PUSH2 0xAB1 DUP13 DUP13 PUSH2 0x2170 JUMP JUMPDEST SWAP1 DUP4 DUP3 SUB PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST SWAP2 DUP5 SWAP9 SWAP10 POP PUSH1 0x60 DUP7 SWAP8 SWAP9 PUSH1 0x1 SWAP4 SWAP6 SWAP8 DUP4 SWAP8 MLOAD DUP1 MLOAD PUSH2 0xADC DUP2 PUSH2 0x21EC JUMP JUMPDEST DUP4 MSTORE DUP7 DUP6 DUP3 ADD MLOAD AND DUP6 DUP5 ADD MSTORE ADD MLOAD ISZERO ISZERO DUP10 DUP3 ADD MSTORE ADD SWAP9 ADD SWAP3 ADD DUP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 PUSH2 0xA93 JUMP JUMPDEST SWAP6 POP SWAP4 POP SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP6 RETURNDATACOPY PUSH2 0xB19 DUP2 DUP6 PUSH2 0x2093 JUMP JUMPDEST DUP4 ADD SWAP3 PUSH1 0x80 DUP2 DUP6 SUB SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 DUP4 DUP2 GT PUSH2 0x1F7 JUMPI DUP6 PUSH2 0xB46 SWAP2 DUP5 ADD PUSH2 0x23A4 JUMP JUMPDEST SWAP2 PUSH1 0x20 SWAP6 DUP7 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1F7 JUMPI DUP3 ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP1 PUSH2 0xB6E DUP3 PUSH2 0x20B6 JUMP JUMPDEST SWAP9 PUSH2 0xB7B DUP7 MLOAD SWAP11 DUP12 PUSH2 0x2093 JUMP JUMPDEST DUP3 DUP11 MSTORE DUP1 DUP11 ADD DUP2 PUSH1 0x60 DUP1 SWAP6 MUL DUP5 ADD ADD SWAP3 DUP6 DUP5 GT PUSH2 0x1F7 JUMPI DUP3 ADD SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0xBDB JUMPI POP POP POP POP POP DUP3 DUP3 ADD MLOAD DUP6 DUP2 GT PUSH2 0x1F7 JUMPI DUP2 PUSH2 0xBB9 SWAP2 DUP5 ADD PUSH2 0x244B JUMP JUMPDEST SWAP5 PUSH1 0x60 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0xBD0 SWAP3 ADD PUSH2 0x244B JUMP JUMPDEST SWAP2 SWAP5 SWAP3 SWAP2 SWAP4 DUP7 PUSH2 0xA5E JUMP JUMPDEST DUP5 DUP3 DUP8 SUB SLT PUSH2 0x1F7 JUMPI DUP8 MLOAD SWAP1 PUSH2 0xBF0 DUP3 PUSH2 0x202B JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI DUP3 MSTORE DUP4 DUP4 ADD MLOAD SWAP1 DUP13 DUP3 AND DUP3 SUB PUSH2 0x1F7 JUMPI DUP3 DUP6 SWAP3 DUP4 DUP10 SWAP6 ADD MSTORE PUSH2 0xC1E DUP12 DUP7 ADD PUSH2 0x2242 JUMP JUMPDEST DUP12 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xB96 JUMP JUMPDEST DUP4 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x9C4 JUMPI SWAP2 PUSH2 0x1F3 SWAP3 PUSH0 SWAP3 PUSH2 0xCD8 JUMPI JUMPDEST POP MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x21A3 JUMP JUMPDEST PUSH2 0xCF5 SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0xCED DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2422 JUMP JUMPDEST SWAP1 DUP4 PUSH2 0xCC5 JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH2 0xD7A SWAP3 PUSH2 0xD1C PUSH2 0x1FE5 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xBEABACC800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST SUB DUP2 PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xE05 JUMPI PUSH2 0xDCB JUMPI JUMPDEST PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 DUP3 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0xDFD JUMPI JUMPDEST DUP2 PUSH2 0xDE4 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI PUSH2 0xDF7 PUSH1 0x20 SWAP3 PUSH2 0x2242 JUMP JUMPDEST POP PUSH2 0xDC1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0xDD7 JUMP JUMPDEST POP MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0xE3F SWAP1 CALLDATASIZE SWAP1 DUP5 ADD PUSH2 0x20CE JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI PUSH2 0xE54 DUP2 PUSH2 0x21EC JUMP JUMPDEST PUSH2 0xFCA JUMPI DUP3 JUMPDEST PUSH2 0xE62 PUSH2 0x29BD JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x3 EQ PUSH2 0xF75 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0xEEE JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0xEAB JUMPI PUSH1 0x2 EQ PUSH2 0xE95 JUMPI PUSH1 0x51 DUP5 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x20 SWAP4 POP SWAP1 PUSH2 0xEA3 SWAP2 PUSH2 0x2F00 JUMP JUMPDEST SWAP1 JUMPDEST MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST POP SWAP1 SWAP3 PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0xEDB JUMPI POP PUSH1 0x20 SWAP3 PUSH2 0xED5 SWAP2 PUSH2 0x2A72 JUMP JUMPDEST SWAP1 PUSH2 0xEA5 JUMP JUMPDEST PUSH1 0x11 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF39 JUMPI PUSH2 0xF31 PUSH1 0x1 SWAP2 PUSH2 0xF2B PUSH2 0xF19 DUP8 DUP8 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xF24 DUP9 DUP12 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2A90 JUMP JUMPDEST SWAP1 PUSH2 0x2B1B JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xEFD JUMP JUMPDEST SWAP3 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0xF4E JUMPI PUSH1 0x20 SWAP3 POP SWAP1 PUSH2 0xEA5 JUMP JUMPDEST DUP3 PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP SWAP3 PUSH0 SWAP2 SWAP1 PUSH8 0xDE0B6B3A7640000 JUMPDEST DUP6 MLOAD DUP5 LT ISZERO PUSH2 0xF39 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0xFC1 PUSH1 0x1 SWAP3 PUSH2 0xFBB PUSH2 0xFA9 DUP9 DUP9 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xFB4 DUP10 DUP13 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP1 PUSH2 0x2D2D JUMP JUMPDEST SWAP1 PUSH2 0x2A5F JUMP JUMPDEST DIV SWAP4 ADD SWAP3 PUSH2 0xF84 JUMP JUMPDEST PUSH1 0x3 PUSH2 0xE5A JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP2 DUP3 PUSH0 DUP4 SLOAD PUSH2 0xFF3 DUP2 PUSH2 0x220A JUMP JUMPDEST SWAP1 DUP2 DUP5 MSTORE PUSH1 0x20 SWAP6 PUSH1 0x1 SWAP2 DUP8 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x1092 JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1036 JUMPI JUMPDEST POP POP POP PUSH2 0x1F3 SWAP3 SWAP2 PUSH2 0x1027 SWAP2 SUB DUP6 PUSH2 0x2093 JUMP JUMPDEST MLOAD SWAP3 DUP3 DUP5 SWAP4 DUP5 MSTORE DUP4 ADD SWAP1 PUSH2 0x1FC0 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE DUP7 SWAP4 POP SWAP2 SWAP1 PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B JUMPDEST DUP3 DUP5 LT PUSH2 0x107A JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1027 PUSH2 0x1F3 PUSH2 0x1014 JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1061 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP8 DUP3 ADD MSTORE SWAP4 ISZERO ISZERO PUSH1 0x5 SHL DUP7 ADD SWAP1 SWAP4 ADD SWAP4 POP DUP5 SWAP3 POP PUSH2 0x1027 SWAP2 POP PUSH2 0x1F3 SWAP1 POP PUSH2 0x1014 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE RETURN JUMPDEST SWAP2 POP CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH2 0x1162 PUSH32 0x0 PUSH2 0x2B3D JUMP JUMPDEST SWAP3 PUSH2 0x118C PUSH32 0x0 PUSH2 0x2C6F JUMP JUMPDEST DUP2 MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP1 DUP5 DUP3 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT OR PUSH2 0x121D JUMPI POP SWAP2 PUSH2 0x11FD SWAP2 PUSH2 0x1F3 SWAP5 SWAP4 DUP3 MSTORE PUSH0 DUP5 MSTORE PUSH2 0x11F0 DUP3 MLOAD SWAP8 DUP9 SWAP8 PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 DUP10 MSTORE DUP1 PUSH1 0x20 DUP11 ADD MSTORE DUP9 ADD SWAP1 PUSH2 0x1FC0 JUMP JUMPDEST SWAP2 DUP7 DUP4 SUB SWAP1 DUP8 ADD MSTORE PUSH2 0x1FC0 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x41 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH32 0xF29486A100000000000000000000000000000000000000000000000000000000 DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH2 0x1A0 SWAP1 DUP2 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xC2D JUMPI PUSH0 SWAP3 PUSH2 0x12D4 JUMPI JUMPDEST POP POP PUSH1 0x60 DUP3 DUP3 ADD MLOAD SWAP2 ADD MLOAD DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE RETURN JUMPDEST PUSH2 0x12EA SWAP3 POP DUP1 RETURNDATASIZE LT PUSH2 0x857 JUMPI PUSH2 0x848 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP3 DUP1 PUSH2 0x12BD JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1323 PUSH2 0x1FE5 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x2 DUP3 MSTORE DUP1 PUSH0 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP3 PUSH1 0x3 NOT DUP5 DUP2 CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 DUP5 GT PUSH2 0x1F7 JUMPI DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1F7 JUMPI DUP4 MLOAD SWAP2 PUSH2 0x1374 DUP4 PUSH2 0x205B JUMP JUMPDEST DUP1 DUP5 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT ISZERO PUSH2 0x1F7 JUMPI DUP4 MSTORE PUSH1 0x24 DUP2 ADD CALLDATALOAD DUP7 DUP5 ADD MSTORE PUSH1 0x44 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x13A7 SWAP1 DUP6 CALLDATASIZE SWAP2 DUP5 ADD ADD PUSH2 0x20CE JUMP JUMPDEST DUP6 DUP5 ADD MSTORE PUSH1 0x64 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x84 DUP2 ADD CALLDATALOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA4 DUP2 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 DUP3 GT PUSH2 0x1F7 JUMPI ADD SWAP3 CALLDATASIZE PUSH1 0x23 DUP6 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP1 DUP5 ADD CALLDATALOAD SWAP2 DUP3 GT PUSH2 0x121D JUMPI POP DUP4 MLOAD SWAP1 PUSH2 0x1422 DUP7 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP1 DUP3 MSTORE CALLDATASIZE PUSH1 0x24 DUP3 DUP7 ADD ADD GT PUSH2 0x1F7 JUMPI DUP6 DUP2 PUSH0 SWAP3 PUSH1 0x24 PUSH2 0xEA3 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1451 PUSH2 0x281A JUMP JUMPDEST PUSH2 0x24F0 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP2 DUP3 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP3 PUSH2 0x1474 PUSH2 0x1FE5 JUMP JUMPDEST PUSH1 0x44 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 DUP6 MLOAD SWAP7 DUP8 SWAP5 DUP6 SWAP4 PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP6 MSTORE ADDRESS SWAP1 DUP6 ADD MSTORE AND PUSH1 0x24 DUP4 ADD MSTORE PUSH32 0x0 AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0xE05 JUMPI PUSH0 SWAP3 PUSH2 0x14FB JUMPI JUMPDEST POP MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST SWAP1 SWAP2 POP DUP3 DUP2 DUP2 RETURNDATASIZE DUP4 GT PUSH2 0x1523 JUMPI JUMPDEST PUSH2 0x1513 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI MLOAD SWAP1 DUP4 PUSH2 0x14F4 JUMP JUMPDEST POP RETURNDATASIZE PUSH2 0x1509 JUMP JUMPDEST POP CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH32 0x18E79A2000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x16345785D8A0000 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH2 0x15DE CALLDATASIZE PUSH2 0x212E JUMP JUMPDEST SWAP4 SWAP2 SWAP5 PUSH2 0x15E9 PUSH2 0x281A JUMP JUMPDEST MLOAD SWAP4 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP5 AND SWAP3 LOG3 STOP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD PUSH1 0x5 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x162E DUP5 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16BB JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1660 JUMPI JUMPDEST POP POP PUSH2 0x1F3 SWAP3 SWAP2 PUSH2 0x1027 SWAP2 SUB DUP6 PUSH2 0x2093 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x5 PUSH0 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x16A3 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1027 PUSH2 0x164E JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x168D JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 DUP3 ADD MSTORE SWAP3 ISZERO ISZERO PUSH1 0x5 SHL DUP6 ADD SWAP1 SWAP3 ADD SWAP3 POP DUP4 SWAP2 POP PUSH2 0x1027 SWAP1 POP PUSH2 0x164E JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1719 DUP3 PUSH2 0x202B JUMP JUMPDEST PUSH1 0x60 DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 DUP4 ADD SWAP2 PUSH1 0x60 DUP4 MSTORE DUP2 DUP5 ADD SWAP3 PUSH1 0x60 DUP5 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 PUSH32 0x0 AND SWAP1 DUP5 MLOAD PUSH32 0xCA4F280300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS DUP3 DUP3 ADD MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 DUP7 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x18AD JUMPI SWAP1 PUSH0 SWAP3 SWAP2 DUP4 SWAP2 PUSH2 0x1893 JUMPI JUMPDEST POP DUP9 MSTORE PUSH1 0x24 DUP7 MLOAD DUP1 SWAP5 DUP2 SWAP4 PUSH32 0x7E361BDE00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE ADDRESS SWAP1 DUP4 ADD MSTORE GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1889 JUMPI PUSH0 SWAP2 PUSH2 0x1870 JUMPI JUMPDEST POP DUP2 SWAP6 SWAP3 SWAP6 MSTORE PUSH2 0x17FF PUSH2 0x29BD JUMP JUMPDEST DUP5 MSTORE DUP3 MLOAD SWAP5 DUP1 DUP7 MSTORE PUSH1 0x80 DUP7 ADD SWAP3 MLOAD SWAP3 PUSH1 0x60 DUP3 DUP9 ADD MSTORE DUP4 MLOAD DUP1 SWAP2 MSTORE DUP2 PUSH1 0xA0 DUP9 ADD SWAP5 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x185A JUMPI DUP9 DUP1 PUSH2 0x1F3 DUP11 DUP11 PUSH2 0x1849 DUP12 DUP12 MLOAD PUSH1 0x1F NOT SWAP4 DUP5 DUP9 DUP5 SUB ADD SWAP1 DUP9 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST SWAP2 MLOAD SWAP1 DUP5 DUP4 SUB ADD PUSH1 0x60 DUP6 ADD MSTORE PUSH2 0x2170 JUMP JUMPDEST DUP4 MLOAD DUP11 AND DUP7 MSTORE SWAP5 DUP2 ADD SWAP5 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x1884 SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x8B3 DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST PUSH2 0x17F1 JUMP JUMPDEST DUP5 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH2 0x18A7 SWAP2 POP RETURNDATASIZE DUP1 DUP6 DUP4 RETURNDATACOPY PUSH2 0xCED DUP2 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP11 PUSH2 0x17AE JUMP JUMPDEST DUP7 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP2 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLDATASIZE PUSH1 0x23 SLT ISZERO PUSH2 0x1F7 JUMPI DUP2 MLOAD DUP3 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x1A18 JUMPI DUP4 MSTORE PUSH1 0x44 DUP2 CALLDATASIZE DUP3 GT PUSH2 0x1F7 JUMPI DUP4 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x1A08 JUMPI POP POP POP DUP1 MLOAD SWAP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x191F PUSH1 0x20 DUP5 ADD SWAP6 DUP7 MLOAD SWAP1 PUSH2 0x2383 JUMP JUMPDEST SUB PUSH2 0x19AC JUMPI POP MLOAD SWAP2 PUSH1 0x6 SLOAD SWAP3 DUP4 ISZERO PUSH2 0x1999 JUMPI PUSH1 0x6 PUSH0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SSTORE MLOAD SWAP2 PUSH1 0x1 LT ISZERO PUSH2 0x1986 JUMPI POP PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D40 SSTORE STOP JUMPDEST PUSH1 0x32 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x32 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 DUP2 DUP5 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5765696768747320646F6E277420746F74616C20310000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x18F9 JUMP JUMPDEST PUSH1 0x41 DUP4 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xEA3 PUSH2 0x2885 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x12 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH8 0x29A2241AF62C0000 DUP2 MSTORE RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH2 0x15DE CALLDATASIZE PUSH2 0x212E JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH0 PUSH1 0x84 PUSH2 0x1B05 CALLDATASIZE PUSH2 0x212E JUMP JUMPDEST DUP7 MLOAD PUSH32 0x15DACBEA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP9 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP10 ADD MSTORE SWAP1 DUP3 AND PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x64 DUP8 ADD MSTORE DUP6 SWAP3 DUP4 SWAP2 PUSH32 0x0 AND GAS CALL DUP1 ISZERO PUSH2 0xE05 JUMPI PUSH2 0xDCB JUMPI PUSH1 0x20 SWAP1 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLDATALOAD PUSH1 0x6 SLOAD DUP2 LT PUSH2 0x1BB5 JUMPI STOP JUMPDEST PUSH2 0x1BBE SWAP1 PUSH2 0x234E JUMP JUMPDEST DUP2 SLOAD SWAP1 PUSH1 0x3 SHL SWAP1 PUSH0 NOT PUSH1 0x24 CALLDATALOAD DUP4 SHL SWAP3 SHL NOT AND OR SWAP1 SSTORE PUSH0 DUP1 RETURN JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 PUSH2 0xEA3 PUSH2 0x2298 JUMP JUMPDEST DUP4 DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x60 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x1C24 SWAP1 CALLDATASIZE SWAP1 DUP4 ADD PUSH2 0x20CE JUMP JUMPDEST SWAP2 PUSH1 0x24 CALLDATALOAD SWAP3 PUSH2 0x1C40 PUSH2 0x1C39 DUP6 PUSH1 0x44 CALLDATALOAD SWAP4 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP5 PUSH2 0x27D5 JUMP JUMPDEST PUSH1 0x1 SWAP1 DUP2 DUP4 GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0x2 JUMPDEST DUP1 PUSH1 0x3 EQ PUSH2 0x1DB0 JUMPI DUP1 PUSH1 0x4 EQ PUSH2 0x1D17 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x1CD5 JUMPI PUSH1 0x2 EQ PUSH2 0x1C80 JUMPI PUSH1 0x51 DUP6 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 DUP2 ISZERO PUSH2 0x1CAF JUMPI POP PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 SWAP3 PUSH2 0xF2B SWAP3 PUSH15 0xC097CE7BC90715B34B9F0FFFFFFFFF DIV ADD SWAP1 PUSH2 0x2A90 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST POP DUP1 SWAP3 SWAP4 SWAP5 SWAP2 POP ISZERO PUSH2 0x1D04 JUMPI POP SWAP3 PUSH2 0xF2B PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 PUSH15 0xC097CE7BC90715B34B9F1000000000 DIV SWAP1 PUSH2 0x2A90 JUMP JUMPDEST PUSH1 0x12 SWAP1 PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1D70 JUMPI JUMPDEST POP POP POP DUP2 ISZERO PUSH2 0x1D4A JUMPI POP SWAP3 PUSH2 0xF2B PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2A90 JUMP JUMPDEST PUSH32 0x2654368900000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH0 REVERT JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1DAA JUMPI SWAP1 DUP3 PUSH2 0x1DA2 DUP2 SWAP4 PUSH2 0xF2B PUSH2 0x1D98 DUP10 DUP7 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xF24 DUP11 PUSH2 0x224F JUMP JUMPDEST SWAP6 ADD SWAP3 PUSH2 0x1D2A JUMP JUMPDEST SWAP4 PUSH2 0x1D2F JUMP JUMPDEST POP SWAP2 SWAP3 SWAP4 SWAP1 DUP1 PUSH8 0xDE0B6B3A7640000 SWAP4 PUSH0 SWAP3 JUMPDEST PUSH2 0x1DE2 JUMPI POP POP POP DUP2 ISZERO PUSH2 0x1D4A JUMPI POP SWAP3 PUSH2 0xF2B PUSH2 0xEA3 SWAP3 PUSH1 0x20 SWAP6 SWAP1 PUSH2 0x2A90 JUMP JUMPDEST SWAP1 SWAP2 SWAP4 PUSH8 0xDE0B6B3A7640000 MLOAD DUP6 LT ISZERO PUSH2 0x1DAA JUMPI SWAP1 DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1E1D DUP3 SWAP5 PUSH2 0xFBB PUSH2 0x1E13 DUP11 DUP8 PUSH2 0x2284 JUMP JUMPDEST MLOAD PUSH2 0xFB4 DUP12 PUSH2 0x224F JUMP JUMPDEST DIV SWAP6 ADD SWAP3 PUSH2 0x1DC3 JUMP JUMPDEST DUP2 PUSH2 0x1C4E JUMP JUMPDEST POP DUP3 CALLVALUE PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH2 0xD7A SWAP3 PUSH2 0x1E4C PUSH2 0x1FE5 JUMP JUMPDEST DUP4 MLOAD PUSH32 0xE1F21C6700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x24 CALLDATALOAD PUSH1 0x40 DUP4 ADD MSTORE SWAP4 DUP5 SWAP2 DUP3 SWAP2 PUSH1 0x60 SWAP1 SWAP2 ADD SWAP1 JUMP JUMPDEST DUP4 CALLVALUE PUSH2 0x1F7 JUMPI PUSH0 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD PUSH1 0x3 SLOAD SWAP1 SWAP2 DUP3 PUSH0 PUSH2 0x1ECD DUP5 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 SWAP5 PUSH1 0x1 SWAP1 DUP7 PUSH1 0x1 DUP3 AND SWAP2 DUP3 PUSH0 EQ PUSH2 0x16BB JUMPI POP POP PUSH1 0x1 EQ PUSH2 0x1EFE JUMPI POP POP PUSH2 0x1F3 SWAP3 SWAP2 PUSH2 0x1027 SWAP2 SUB DUP6 PUSH2 0x2093 JUMP JUMPDEST SWAP1 DUP6 SWAP3 POP PUSH1 0x3 PUSH0 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP2 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x1F41 JUMPI POP POP POP DUP3 ADD ADD DUP2 PUSH2 0x1027 PUSH2 0x164E JUMP JUMPDEST DUP1 SLOAD DUP5 DUP11 ADD DUP7 ADD MSTORE DUP9 SWAP6 POP DUP8 SWAP5 SWAP1 SWAP4 ADD SWAP3 DUP2 ADD PUSH2 0x1F2B JUMP JUMPDEST DUP3 CALLVALUE PUSH2 0x1F7 JUMPI PUSH1 0x20 PUSH1 0x3 NOT CALLDATASIZE ADD SLT PUSH2 0x1F7 JUMPI CALLDATALOAD SWAP1 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND DUP1 SWAP3 SUB PUSH2 0x1F7 JUMPI PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP3 EQ DUP2 MSTORE RETURN JUMPDEST SWAP1 PUSH1 0x1F NOT PUSH1 0x1F PUSH1 0x20 DUP1 SWAP5 DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 DUP8 MSTORE ADD DUP7 DUP7 ADD MCOPY PUSH0 DUP6 DUP3 DUP7 ADD ADD MSTORE ADD AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1F7 JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP3 SUB PUSH2 0x1F7 JUMPI JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xE0 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F PUSH1 0x1F NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x2047 JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 SWAP1 DUP3 CALLDATALOAD PUSH2 0x20E8 DUP2 PUSH2 0x20B6 JUMP JUMPDEST SWAP4 PUSH2 0x20F6 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2093 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1F7 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x211F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x2111 JUMP JUMPDEST PUSH1 0x3 NOT PUSH1 0x60 SWAP2 ADD SLT PUSH2 0x1F7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 PUSH1 0x4 CALLDATALOAD DUP3 DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI SWAP2 PUSH1 0x24 CALLDATALOAD SWAP1 DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI SWAP1 PUSH1 0x44 CALLDATALOAD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x218F JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x2181 JUMP JUMPDEST SWAP1 DUP2 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP1 SWAP4 ADD SWAP4 ADD SWAP2 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x21C2 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x21B4 JUMP JUMPDEST PUSH1 0x2 GT ISZERO PUSH2 0x21F6 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x2238 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x2224 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x2219 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1F7 JUMPI JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MLOAD DUP2 LT ISZERO PUSH2 0x2270 JUMPI PUSH1 0x5 SHL PUSH8 0xDE0B6B3A7640020 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x2270 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xE4DC2AA400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP2 PUSH1 0x24 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x2343 JUMPI PUSH0 SWAP2 PUSH2 0x2314 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x233B JUMPI JUMPDEST DUP2 PUSH2 0x232F PUSH1 0x20 SWAP4 DUP4 PUSH2 0x2093 JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1F7 JUMPI MLOAD SWAP1 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x2322 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x2270 JUMPI PUSH1 0x6 PUSH0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F ADD SWAP1 PUSH0 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 ADD DUP1 SWAP3 GT PUSH2 0x2390 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x23BF DUP2 PUSH2 0x20B6 JUMP JUMPDEST SWAP4 PUSH2 0x23CD PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2093 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1F7 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x23F6 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x23E8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x2448 SWAP3 ADD PUSH2 0x23A4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 DUP1 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1F7 JUMPI DUP2 MLOAD SWAP1 PUSH1 0x20 SWAP2 PUSH2 0x2466 DUP2 PUSH2 0x20B6 JUMP JUMPDEST SWAP4 PUSH2 0x2474 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x2093 JUMP JUMPDEST DUP2 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP3 PUSH1 0x5 SHL DUP3 ADD ADD SWAP3 DUP4 GT PUSH2 0x1F7 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x249D JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 DUP4 ADD PUSH2 0x248F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x40 DUP2 DUP5 SUB SLT PUSH2 0x1F7 JUMPI DUP1 MLOAD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP4 DUP5 DUP2 GT PUSH2 0x1F7 JUMPI DUP2 PUSH2 0x24D9 SWAP2 DUP5 ADD PUSH2 0x244B JUMP JUMPDEST SWAP4 PUSH1 0x20 DUP4 ADD MLOAD SWAP1 DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x2448 SWAP3 ADD PUSH2 0x244B JUMP JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 MLOAD PUSH2 0x2507 PUSH1 0x60 DUP4 ADD SWAP2 DUP3 MLOAD SWAP1 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP3 MLOAD SWAP2 PUSH2 0x251B PUSH1 0x80 DUP3 ADD SWAP4 DUP5 MLOAD SWAP1 PUSH2 0x2284 JUMP JUMPDEST MLOAD SWAP2 DUP2 MLOAD PUSH2 0x2528 DUP2 PUSH2 0x21EC JUMP JUMPDEST PUSH2 0x2531 DUP2 PUSH2 0x21EC JUMP JUMPDEST PUSH2 0x25DC JUMPI PUSH2 0x254B PUSH2 0x2544 PUSH1 0x20 SWAP3 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP5 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP2 ADD MLOAD PUSH8 0xDE0B6B3A7640000 SWAP5 DUP6 PUSH2 0x2562 DUP3 PUSH2 0x2A2B JUMP JUMPDEST DIV DUP3 GT PUSH2 0x25B4 JUMPI PUSH2 0x2576 PUSH2 0x257C SWAP3 DUP3 PUSH2 0x2383 JUMP JUMPDEST SWAP1 PUSH2 0x2F00 JUMP JUMPDEST DUP5 DUP5 MUL SWAP4 DUP1 DUP6 DIV DUP7 EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI PUSH2 0x259D PUSH2 0x25A3 SWAP3 PUSH2 0x25B0 SWAP6 PUSH2 0x2A72 JUMP JUMPDEST SWAP1 PUSH2 0x2A90 JUMP JUMPDEST DUP4 DUP2 DUP2 SUB SWAP2 LT MUL SWAP1 PUSH2 0x2A5F JUMP JUMPDEST DIV SWAP1 JUMP JUMPDEST PUSH32 0x340A453300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x25F6 PUSH2 0x25EF PUSH1 0x20 SWAP3 SWAP6 SWAP4 SWAP5 SWAP6 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP3 MLOAD PUSH2 0x27D5 JUMP JUMPDEST SWAP3 ADD MLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x260B DUP6 PUSH2 0x2A2B JUMP JUMPDEST DIV DUP2 GT PUSH2 0x2665 JUMPI DUP4 SUB SWAP1 DUP4 DUP3 GT PUSH2 0x2390 JUMPI PUSH2 0x262C PUSH2 0x259D SWAP3 PUSH2 0x2632 SWAP6 PUSH2 0x2F00 JUMP JUMPDEST SWAP3 PUSH2 0x2F00 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F494C589C0000 DUP2 ADD SWAP1 DUP2 GT PUSH2 0x2390 JUMPI PUSH2 0x2448 SWAP2 PUSH2 0x2B1B JUMP JUMPDEST PUSH32 0x64590B9F00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1A0 SWAP2 DUP2 SWAP1 SUB DUP3 DUP2 SLT PUSH2 0x1F7 JUMPI PUSH1 0x40 MLOAD SWAP3 PUSH2 0x140 SWAP3 DUP4 DUP6 ADD SWAP3 PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP7 DUP6 LT DUP3 DUP7 GT OR PUSH2 0x2047 JUMPI PUSH1 0x80 SGT PUSH2 0x1F7 JUMPI PUSH2 0x1C0 DUP7 ADD SWAP1 DUP2 GT DUP5 DUP3 LT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE PUSH2 0x26DF DUP2 PUSH2 0x2242 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x26ED PUSH1 0x20 DUP3 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP3 PUSH2 0x160 SWAP4 DUP5 DUP8 ADD MSTORE PUSH2 0x2702 PUSH1 0x40 DUP4 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP3 PUSH2 0x180 SWAP4 DUP5 DUP9 ADD MSTORE PUSH2 0x2717 PUSH1 0x60 DUP5 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP1 DUP8 ADD MSTORE DUP6 MSTORE PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI PUSH1 0x80 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP3 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 SUB PUSH2 0x1F7 JUMPI PUSH2 0x27A8 SWAP5 PUSH2 0x279E SWAP2 PUSH1 0xA0 DUP10 ADD MSTORE PUSH2 0x2792 PUSH2 0x120 SWAP8 PUSH2 0x2786 DUP10 DUP8 ADD PUSH2 0x2242 JUMP JUMPDEST PUSH1 0xC0 DUP12 ADD MSTORE DUP6 ADD PUSH2 0x2242 JUMP JUMPDEST PUSH1 0xE0 DUP10 ADD MSTORE DUP4 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP1 DUP7 ADD MSTORE ADD PUSH2 0x2242 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 DUP3 SUB SLT PUSH2 0x1F7 JUMPI DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x1F7 JUMPI PUSH2 0x2448 SWAP3 ADD PUSH2 0x244B JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 LT ISZERO PUSH2 0x27F2 JUMPI PUSH2 0x27E8 SWAP1 PUSH2 0x234E JUMP JUMPDEST SWAP1 SLOAD SWAP1 PUSH1 0x3 SHL SHR SWAP1 JUMP JUMPDEST PUSH32 0xC1AB6DC100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND CALLER SUB PUSH2 0x2859 JUMPI JUMP JUMPDEST PUSH32 0x89676D500000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND ADDRESS EQ DUP1 PUSH2 0x2994 JUMPI JUMPDEST ISZERO PUSH2 0x28ED JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x2047 JUMPI PUSH1 0x40 MSTORE MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x28C4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH1 0x6 SLOAD DUP1 DUP4 MSTORE DUP3 PUSH1 0x20 SWAP2 PUSH1 0x20 DUP3 ADD SWAP1 PUSH1 0x6 PUSH0 MSTORE PUSH32 0xF652222313E28459528D920B65115C16C04F3EFC82AAEDC97BE59F3F377C0D3F SWAP4 PUSH0 SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0x2A11 JUMPI POP POP POP PUSH2 0x2A0F SWAP3 POP SUB DUP4 PUSH2 0x2093 JUMP JUMPDEST JUMP JUMPDEST DUP6 SLOAD DUP5 MSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 DUP9 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x29F9 JUMP JUMPDEST SWAP1 PUSH8 0x429D069189E0000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI JUMP JUMPDEST SWAP1 PUSH2 0x2710 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI JUMP JUMPDEST DUP2 DUP2 MUL SWAP3 SWAP2 DUP2 ISZERO SWAP2 DUP5 DIV EQ OR ISZERO PUSH2 0x2390 JUMPI JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2A7C JUMPI DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 DUP2 SUB PUSH2 0x2AA7 JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2AC2 JUMPI POP POP DUP1 PUSH2 0x2448 SWAP2 PUSH2 0x2B1B JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2AE6 JUMPI POP POP PUSH2 0x2AE0 DUP2 PUSH2 0x2448 SWAP3 PUSH2 0x2B1B JUMP JUMPDEST DUP1 PUSH2 0x2B1B JUMP JUMPDEST PUSH2 0x2AF0 SWAP2 SWAP3 PUSH2 0x2F7D JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH2 0x2AFC DUP4 PUSH2 0x2A48 JUMP JUMPDEST SWAP2 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL PUSH1 0x1 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2390 JUMPI PUSH2 0x2448 SWAP2 PUSH2 0x2383 JUMP JUMPDEST SWAP1 PUSH2 0x2B25 SWAP2 PUSH2 0x2A5F JUMP JUMPDEST PUSH1 0x1 PUSH8 0xDE0B6B3A7640000 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2B91 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2B69 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2B5F DUP4 PUSH2 0x2077 JUMP JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xB3512B0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH0 SLOAD SWAP2 PUSH2 0x2BA3 DUP4 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x20 SWAP1 PUSH1 0x1 SWAP1 DUP2 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2C2C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2BCE JUMPI JUMPDEST POP POP PUSH2 0x2448 SWAP3 POP SUB DUP3 PUSH2 0x2093 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH0 DUP1 MSTORE PUSH32 0x290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2C14 JUMPI POP PUSH2 0x2448 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2BC0 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2BF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 SWAP4 POP PUSH2 0x2448 SWAP6 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 SWAP2 POP AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD PUSH0 DUP1 PUSH2 0x2BC0 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x2C91 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x2B69 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x2B5F DUP4 PUSH2 0x2077 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH0 DUP2 PUSH1 0x1 SWAP2 PUSH1 0x1 SLOAD PUSH2 0x2CA6 DUP2 PUSH2 0x220A JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP4 PUSH1 0x20 SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x2C2C JUMPI POP PUSH1 0x1 EQ PUSH2 0x2CCE JUMPI POP POP PUSH2 0x2448 SWAP3 POP SUB DUP3 PUSH2 0x2093 JUMP JUMPDEST SWAP2 POP SWAP3 PUSH1 0x1 PUSH0 MSTORE PUSH32 0xB10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6 SWAP4 PUSH0 SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x2D15 JUMPI POP PUSH2 0x2448 SWAP5 POP POP POP DUP2 ADD PUSH1 0x20 ADD PUSH0 DUP1 PUSH2 0x2BC0 JUMP JUMPDEST DUP6 SLOAD DUP8 DUP6 ADD DUP4 ADD MSTORE SWAP5 DUP6 ADD SWAP5 DUP7 SWAP5 POP SWAP3 DUP2 ADD SWAP3 PUSH2 0x2CFA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP1 DUP4 SUB PUSH2 0x2D44 JUMPI POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 SWAP1 PUSH8 0x1BC16D674EC80000 DUP2 SUB PUSH2 0x2D61 JUMPI POP POP DUP1 PUSH2 0x25B0 SWAP2 PUSH2 0x2A5F JUMP JUMPDEST PUSH8 0x3782DACE9D900000 DUP2 SUB PUSH2 0x2D85 JUMPI POP PUSH2 0x2D7E DUP3 PUSH2 0x25B0 SWAP4 PUSH2 0x2A5F JUMP JUMPDEST DIV DUP1 PUSH2 0x2A5F JUMP JUMPDEST SWAP1 POP PUSH2 0x2D90 SWAP2 PUSH2 0x2F7D JUMP JUMPDEST PUSH2 0x2D99 DUP2 PUSH2 0x2A48 JUMP JUMPDEST PUSH1 0x1 PUSH0 NOT SWAP4 DUP5 DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 PUSH1 0x1 DUP3 ADD DUP1 DUP4 GT PUSH2 0x2390 JUMPI DUP2 LT ISZERO PUSH2 0x2DC1 JUMPI POP POP POP PUSH0 SWAP1 JUMP JUMPDEST SUB ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x2E4A JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x2343 JUMPI PUSH0 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x2E40 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x21F6 JUMPI DUP1 PUSH2 0x2E67 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 SUB PUSH2 0x2E97 JUMPI PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x2 DUP2 SUB PUSH2 0x2ECB JUMPI POP PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 EQ PUSH2 0x2ED5 JUMPI POP JUMP JUMPDEST PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x2F31 JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 DUP2 MUL SWAP3 DUP2 DUP5 DIV EQ SWAP1 ISZERO OR ISZERO PUSH2 0x2390 JUMPI PUSH1 0x1 SWAP1 PUSH0 NOT DUP4 ADD DIV ADD SWAP1 ISZERO ISZERO MUL SWAP1 JUMP JUMPDEST PUSH32 0xA0C22C700000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x2A7C JUMPI PUSH15 0xC097CE7BC90715B34B9F1000000000 SDIV SWAP1 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2A7C JUMPI SDIV SWAP1 JUMP JUMPDEST SWAP1 DUP1 ISZERO PUSH2 0x38A6 JUMPI DUP2 ISZERO PUSH2 0x38A0 JUMPI DUP2 PUSH1 0xFF SHR PUSH2 0x3878 JUMPI PUSH24 0xBCE5086492111AEA88F4BB1CA6BCF584181EA8059F76532 DUP2 LT ISZERO PUSH2 0x3850 JUMPI DUP2 PUSH8 0xC7D713B49DA0000 SLT DUP1 PUSH2 0x383F JUMPI JUMPDEST ISZERO PUSH2 0x34DC JUMPI PUSH8 0xDE0B6B3A7640000 SWAP2 PUSH15 0xC097CE7BC90715B34B9F1000000000 SWAP1 PUSH2 0x3016 SWAP1 DUP5 MUL DUP3 DUP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F68318436F8EA4CB460F000000000 ADD DUP4 MUL PUSH2 0x2F73 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV DUP4 DUP6 DUP3 MUL SDIV SWAP2 DUP5 DUP7 DUP5 MUL SDIV SWAP4 DUP6 DUP8 DUP7 MUL SDIV SWAP6 DUP1 DUP9 DUP9 MUL SDIV SWAP8 DUP9 MUL SDIV PUSH1 0xF SWAP1 SDIV SWAP7 PUSH1 0xD SWAP1 SDIV SWAP6 PUSH1 0xB SWAP1 SDIV SWAP5 PUSH1 0x9 SWAP1 SDIV SWAP4 PUSH1 0x7 SWAP1 SDIV SWAP3 PUSH1 0x5 SWAP1 SDIV SWAP2 PUSH1 0x3 SWAP1 SDIV ADD ADD ADD ADD ADD ADD ADD PUSH1 0x1 SHL SWAP2 DUP1 DUP3 DUP2 DUP6 SMOD MUL SDIV SWAP3 SDIV MUL ADD PUSH8 0xDE0B6B3A7640000 SWAP1 JUMPDEST SDIV PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC702BD3A30FC0000 DUP2 DUP2 SGT ISZERO DUP1 PUSH2 0x34C9 JUMPI JUMPDEST ISZERO PUSH2 0x34A1 JUMPI DUP2 SWAP1 DUP3 SLT ISZERO DUP1 PUSH2 0x348E JUMPI JUMPDEST ISZERO PUSH2 0x3466 JUMPI PUSH0 SWAP2 PUSH0 DUP2 SLT PUSH2 0x3457 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH9 0x6F05B59D3B2000000 DUP2 SLT PUSH2 0x33F4 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90FA4A62C4E000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP3 JUMPDEST MUL DUP2 SWAP1 PUSH9 0xAD78EBC5AC62000000 DUP2 SLT ISZERO PUSH2 0x33BB JUMPI JUMPDEST PUSH9 0x56BC75E2D631000000 DUP2 SLT ISZERO PUSH2 0x3381 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B18800000 DUP2 SLT ISZERO PUSH2 0x3349 JUMPI JUMPDEST PUSH9 0x15AF1D78B58C400000 DUP2 SLT ISZERO PUSH2 0x3311 JUMPI JUMPDEST PUSH9 0xAD78EBC5AC6200000 DUP2 SLT ISZERO PUSH2 0x32DA JUMPI JUMPDEST DUP3 DUP2 SLT ISZERO PUSH2 0x32A3 JUMPI JUMPDEST PUSH9 0x2B5E3AF16B1880000 DUP2 SLT ISZERO PUSH2 0x326C JUMPI JUMPDEST PUSH9 0x15AF1D78B58C40000 DUP2 SLT ISZERO PUSH2 0x3235 JUMPI JUMPDEST PUSH1 0x2 DUP4 DUP3 DUP1 MUL SDIV SDIV PUSH1 0x3 DUP5 DUP4 DUP4 MUL SDIV SDIV PUSH1 0x4 DUP6 DUP5 DUP4 MUL SDIV SDIV DUP6 PUSH1 0x5 DUP2 DUP7 DUP5 MUL SDIV SDIV PUSH1 0x6 DUP3 DUP8 DUP4 MUL SDIV SDIV PUSH1 0x7 DUP4 DUP9 DUP4 MUL SDIV SDIV SWAP1 PUSH1 0x8 DUP5 DUP10 DUP5 MUL SDIV SDIV SWAP3 PUSH1 0x9 DUP6 DUP11 DUP7 MUL SDIV SDIV SWAP6 PUSH1 0xA DUP7 DUP12 DUP10 MUL SDIV SDIV SWAP8 PUSH1 0xB DUP8 DUP13 DUP12 MUL SDIV SDIV SWAP10 PUSH1 0xC DUP9 DUP14 DUP14 MUL SDIV SDIV SWAP12 ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD MUL SDIV MUL SDIV SWAP1 PUSH0 EQ PUSH2 0x2448 JUMPI PUSH2 0x2448 SWAP1 PUSH2 0x2F59 JUMP JUMPDEST PUSH9 0x6F5F1775788937937 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C0000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x31B6 JUMP JUMPDEST PUSH9 0x8F00F760A4B2DB55D PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E780000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x31A4 JUMP JUMPDEST PUSH9 0xEBC5FB41746121110 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3192 JUMP JUMPDEST PUSH9 0x280E60114EDB805D03 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3189 JUMP JUMPDEST PUSH10 0x127FA27722CC06CC5E2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA50E2874A73C00000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3177 JUMP JUMPDEST PUSH10 0x3F1FCE3DA636EA5CF850 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A1C50E94E7800000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3165 JUMP JUMPDEST PUSH12 0x2DF0AB5A80A22C61AB5A700 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF000000 DUP5 SWAP3 ADD SWAP3 MUL SDIV SWAP1 PUSH2 0x3153 JUMP JUMPDEST PUSH15 0x1855144814A7FF805980FF0084000 SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5287143A539E000000 ADD PUSH2 0x3141 JUMP JUMPDEST PUSH9 0x3782DACE9D9000000 DUP2 SLT PUSH2 0x3444 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87D2531627000000 ADD PUSH9 0x56BC75E2D63100000 DUP3 PUSH12 0x1425982CF597CD205CEF7380 SWAP3 PUSH2 0x312C JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP3 PUSH1 0x1 SWAP3 PUSH2 0x312C JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH0 SUB SWAP1 POP PUSH1 0x64 PUSH2 0x30D0 JUMP JUMPDEST PUSH32 0xD4794EFD00000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x30C1 JUMP JUMPDEST PUSH32 0xA2F9F7E300000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH9 0x70C1CC73B00C80000 DUP3 SGT ISZERO PUSH2 0x30B1 JUMP JUMPDEST DUP2 PUSH8 0xDE0B6B3A7640000 SWAP3 PUSH0 SWAP2 DUP5 DUP2 SLT PUSH2 0x3829 JUMPI JUMPDEST POP PUSH1 0x64 SWAP1 PUSH0 PUSH31 0x1600EF3172E58D2E933EC884FDE10064C63B5372D805E203C0000000000000 DUP3 SLT ISZERO PUSH2 0x37FE JUMPI JUMPDEST PUSH20 0x11798004D755D3C8BC8E03204CF44619E000000 DUP3 SLT ISZERO PUSH2 0x37DD JUMPI JUMPDEST DUP3 MUL SWAP1 DUP1 DUP4 MUL SWAP1 PUSH15 0x1855144814A7FF805980FF0084000 SWAP1 DUP2 DUP4 SLT ISZERO PUSH2 0x37BA JUMPI JUMPDEST POP POP PUSH12 0x2DF0AB5A80A22C61AB5A700 DUP1 DUP3 SLT ISZERO PUSH2 0x379A JUMPI JUMPDEST POP PUSH10 0x3F1FCE3DA636EA5CF850 DUP1 DUP3 SLT ISZERO PUSH2 0x377A JUMPI JUMPDEST POP PUSH10 0x127FA27722CC06CC5E2 DUP1 DUP3 SLT ISZERO PUSH2 0x375A JUMPI JUMPDEST POP PUSH9 0x280E60114EDB805D03 DUP1 DUP3 SLT ISZERO PUSH2 0x373A JUMPI JUMPDEST POP PUSH9 0xEBC5FB41746121110 DUP1 DUP3 SLT ISZERO PUSH2 0x3723 JUMPI JUMPDEST POP PUSH9 0x8F00F760A4B2DB55D DUP1 DUP3 SLT ISZERO PUSH2 0x3703 JUMPI JUMPDEST POP PUSH9 0x6F5F1775788937937 DUP1 DUP3 SLT ISZERO PUSH2 0x36E3 JUMPI JUMPDEST POP PUSH9 0x6248F33704B286603 DUP1 DUP3 SLT ISZERO PUSH2 0x36C4 JUMPI JUMPDEST POP PUSH9 0x5C548670B9510E7AC DUP1 DUP3 SLT ISZERO PUSH2 0x36A5 JUMPI JUMPDEST POP PUSH2 0x3652 PUSH9 0x56BC75E2D63100000 SWAP2 DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9438A1D29CF00000 DUP2 DUP4 ADD SWAP3 ADD MUL PUSH2 0x2F73 JUMP JUMPDEST SWAP1 DUP1 DUP3 DUP1 MUL SDIV SWAP2 DUP2 DUP4 DUP3 MUL SDIV DUP3 DUP5 DUP3 MUL SDIV SWAP2 PUSH1 0x3 PUSH1 0x5 PUSH1 0x7 PUSH1 0x9 PUSH1 0xB DUP9 DUP11 DUP10 MUL SDIV SWAP9 DUP1 DUP12 DUP12 MUL SDIV SWAP11 DUP12 MUL SDIV SDIV SWAP9 SDIV SWAP7 SDIV SWAP5 SDIV SWAP3 SDIV ADD ADD ADD ADD ADD PUSH1 0x1 SHL ADD SDIV SWAP1 PUSH0 EQ PUSH2 0x36A0 JUMPI PUSH0 SUB JUMPDEST MUL PUSH2 0x3085 JUMP JUMPDEST PUSH2 0x369A JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0x56BC75E2D6310000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3616 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH8 0xAD78EBC5AC620000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3602 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C40000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35EE JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B1880000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35DA JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP1 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35C6 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0xAD78EBC5AC6200000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x35B2 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x15AF1D78B58C400000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x359E JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x2B5E3AF16B18800000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3589 JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 PUSH9 0x56BC75E2D631000000 SWAP3 MUL SDIV SWAP2 ADD SWAP1 PUSH0 PUSH2 0x3574 JUMP JUMPDEST PUSH9 0xAD78EBC5AC62000000 SWAP3 POP PUSH10 0x21E19E0C9BAB2400000 MUL SDIV SWAP2 ADD SWAP1 PUSH0 DUP1 PUSH2 0x355C JUMP JUMPDEST SWAP1 PUSH12 0x1425982CF597CD205CEF7380 PUSH9 0x3782DACE9D9000000 SWAP2 SDIV SWAP2 ADD PUSH2 0x353B JUMP JUMPDEST POP PUSH24 0x195E54C5DD42177F53A27172FA9EC630262827000000000 SWAP1 SDIV PUSH9 0x6F05B59D3B2000000 PUSH2 0x351E JUMP JUMPDEST SWAP1 POP PUSH2 0x3835 SWAP2 POP PUSH2 0x2F59 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH1 0x64 PUSH2 0x34F1 JUMP JUMPDEST POP PUSH8 0xF43FC2C04EE0000 DUP3 SLT PUSH2 0x2FC3 JUMP JUMPDEST PUSH32 0xD831731100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH32 0x22701E000000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP POP PUSH0 SWAP1 JUMP JUMPDEST POP POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE DUP6 0xE3 0xDF SELFBALANCE 0xFB TSTORE PUSH2 0x315F 0xEC GASLIMIT DUP15 GT GASLIMIT DUP8 PUSH32 0xDAB1FEF7DA73FCEFE5233C40F2BE9564736F6C634300081A0033000000000000 ","sourceMap":"396:1420:119:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:49:54;396:1420:119;4124:49:54;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1615:50:34;396:1420:119;1615:50:34;;;396:1420:119;;;;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;3545:47:54;;;;;396:1420:119;3545:47:54;;3570:4;3545:47;;;396:1420:119;;;;;;;;;;;3545:6:54;396:1420:119;3545:47:54;;;;;;;396:1420:119;3545:47:54;;;396:1420:119;;;;;;;;;3545:47:54;;;396:1420:119;3545:47:54;;396:1420:119;3545:47:54;;;;;;396:1420:119;3545:47:54;;;:::i;:::-;;;396:1420:119;;;;;;;3545:47:54;;;;;;-1:-1:-1;3545:47:54;;;396:1420:119;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;5510:15:54;;:26;5506:97;;5696:16;;396:1420:119;;-1:-1:-1;396:1420:119;1121:7:101;396:1420:119;;;-1:-1:-1;396:1420:119;;;;;;;;;759:395:101;;5696:16:54;396:1420:119;7021:8:105;6967:25;396:1420:119;;5644:79:54;396:1420:119;5644:79:54;;1443:95;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5644:79:54;;;;;:::i;:::-;396:1420:119;5634:90:54;;5053:20:106;;:::i;:::-;3515:233:107;;;;;;;;;;;;;;;396:1420:119;;;3515:233:107;396:1420:119;;3515:233:107;;6967:25:105;:::i;:::-;7021:8;;;;;:::i;:::-;396:1420:119;5848:15:54;;;5844:88;;396:1420:119;;;;;;5942:38:54;396:1420:119;;;5942:38:54;;;;;;;396:1420:119;5942:38:54;;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;5942:38:54;;:6;;396:1420:119;5942:38:54;;;;;;;;;;396:1420:119;5942:38:54;396:1420:119;5942:38:54;;396:1420:119;5942:38:54;;;;;;396:1420:119;5942:38:54;;;:::i;:::-;;;396:1420:119;;;;;;;:::i;:::-;;5942:38:54;;;-1:-1:-1;5942:38:54;;5844:88;5886:35;;396:1420:119;5886:35:54;396:1420:119;;;;;5886:35:54;5506:97;5559:33;;396:1420:119;5559:33:54;396:1420:119;;;5559:33:54;396:1420:119;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;1615:50:34;396:1420:119;1615:50:34;;1658:4;1615:50;;;396:1420:119;1615:50:34;:6;396:1420:119;1615:6:34;396:1420:119;1615:6:34;396:1420:119;1615:50:34;;;;;;;396:1420:119;1615:50:34;;;;396:1420:119;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;2778:8:113;396:1420:119;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10999:6:113;396:1420:119;;;;;10999:44:113;;11037:4;10999:44;;;396:1420:119;;10999:44:113;396:1420:119;10999:44:113;;;;;;;;;396:1420:119;10999:44:113;;;396:1420:119;10971:72:113;;;396:1420:119;;;11075:39:113;;11037:4;11075:39;;;396:1420:119;;11075:39:113;396:1420:119;11075:39:113;;;;;;;;;396:1420:119;11075:39:113;;;396:1420:119;11053:61:113;;;396:1420:119;;;11155:50:113;;11037:4;11155:50;;;396:1420:119;11155:50:113;;396:1420:119;11155:50:113;;;;;;;;;396:1420:119;11155:50:113;;;396:1420:119;;;;11234:13:113;;:::i;:::-;396:1420:119;;;;11289:35:113;;;396:1420:119;11289:35:113;;11037:4;11289:35;;;396:1420:119;11289:35:113;396:1420:119;11289:35:113;;;;;;;;;;;;;;;396:1420:119;11289:35:113;396:1420:119;11289:35:113;;396:1420:119;11289:35:113;;;;;;;396:1420:119;11359:28:113;;;;;396:1420:119;;;;;11478:31:113;11417:23;;;;;396:1420:119;;;;;11478:31:113;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;396:1420:119;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11289:35:113;;;;;;-1:-1:-1;11289:35:113;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;396:1420:119;;;;;;;;;11155:50:113;;;;;;;;;;;;;;;;:::i;:::-;;;396:1420:119;;;;;11155:50:113;;;;;;;;;396:1420:119;;;;;;;;;11075:39:113;;;;;;396:1420:119;11075:39:113;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;10999:44;;;;;;396:1420:119;10999:44:113;;;;;;:::i;:::-;;;;;:::i;:::-;;;;396:1420:119;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;3167:5:49;396:1420:119;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;1441:44:34;396:1420:119;1441:44:34;;1479:4;1441:44;;;396:1420:119;;1441:6:34;396:1420:119;1441:6:34;396:1420:119;1441:6:34;396:1420:119;1441:44:34;;;;;;;;396:1420:119;1441:44:34;396:1420:119;1441:44:34;;;396:1420:119;;;;;;;;;;;;;;:::i;1441:44:34:-;;;;;;;396:1420:119;1441:44:34;;;;;;:::i;:::-;;;;;;396:1420:119;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;1247:38:34;396:1420:119;1247:38:34;;1279:4;1247:38;;;396:1420:119;;1247:6:34;396:1420:119;1247:6:34;;;396:1420:119;1247:38:34;;;;;;;396:1420:119;;;;;;;1247:38:34;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:38:34;;;;;;;;;;396:1420:119;1247:38:34;;;;;;:::i;:::-;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;1247:38:34;;;;;;;;396:1420:119;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1247:38:34;396:1420:119;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;892:35:34;396:1420:119;892:35:34;;921:4;892:35;;;396:1420:119;;892:6:34;396:1420:119;892:6:34;396:1420:119;892:6:34;396:1420:119;892:35:34;;;;;;;;396:1420:119;892:35:34;396:1420:119;892:35:34;;;396:1420:119;;;;;;;;;;;;;;:::i;892:35:34:-;;;;;;;396:1420:119;892:35:34;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;396:1420:119;;;;;;;-1:-1:-1;;396:1420:119;;;;;;3345:39:54;396:1420:119;;;:::i;:::-;;;;3345:39:54;;3361:10;3345:39;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:39:54;;:6;396:1420:119;;3345:6:54;396:1420:119;3345:39:54;;;;;;;;396:1420:119;;;;;;;;3345:39:54;396:1420:119;3345:39:54;;396:1420:119;3345:39:54;;;;;;396:1420:119;3345:39:54;;;:::i;:::-;;;396:1420:119;;;;;;;;:::i;:::-;3345:39:54;;;;;;-1:-1:-1;3345:39:54;;;396:1420:119;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;6274:41:113;;:135;;396:1420:119;;:::i;:::-;6427:56:113;396:1420:119;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;;1744:19:47;;;;;;:::i;:::-;396:1420:119;;;;;;;;465:4:47;;;;396:1420:119;;;;;;;;;;;;;;;1625:13:47;396:1420:119;1625:13:47;;;;:::i;:::-;396:1420:119;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;-1:-1:-1;396:1420:119;;;;465:4:47;6419:3:49;396:1420:119;;6389:28:49;;;;;6450:56;396:1420:119;6466:11:49;:39;:11;;;;:::i;:::-;396:1420:119;6484:20:49;;;;:::i;:::-;396:1420:119;6466:39:49;;:::i;:::-;6450:56;;:::i;:::-;6419:3;396:1420:119;6374:13:49;;;6389:28;;;;;;6531:14;;6527:67;;396:1420:119;;;;;;6527:67:49;6568:15;;396:1420:119;6568:15:49;396:1420:119;6568:15:49;396:1420:119;-1:-1:-1;396:1420:119;;;;465:4:47;4710:3:49;396:1420:119;;4680:28:49;;;;;465:4:47;838:5;396:1420:119;4759:11:49;:41;:11;;;;:::i;:::-;396:1420:119;4779:20:49;;;;:::i;:::-;396:1420:119;4759:41:49;;:::i;:::-;838:5:47;;:::i;:::-;396:1420:119;4710:3:49;396:1420:119;4665:13:49;;;6274:135:113;6376:33;6274:135;;396:1420:119;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;2951:6:54;396:1420:119;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;6099:41:106;:5;:41;:::i;:::-;6554:8;:47;:8;:47;:::i;:::-;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5590:13:106;;396:1420:119;;;;5625:4:106;396:1420:119;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;1911:35:34;396:1420:119;1911:35:34;;1940:4;1911:35;;;396:1420:119;1911:35:34;:6;;;396:1420:119;1911:6:34;396:1420:119;1911:6:34;396:1420:119;1911:35:34;;;;;;;396:1420:119;1911:35:34;;;396:1420:119;1986:37:34;;2063:38;1986:37;;;396:1420:119;2063:38:34;;396:1420:119;;;;;;;;;;;1911:35:34;;;;;;-1:-1:-1;1911:35:34;;;;;;:::i;:::-;;;;;396:1420:119;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;:::i;:::-;;;;624:7:101;396:1420:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;495:1:68;396:1420:119;;;;;;;;;;;;;;436:67:68;;:::i;:::-;495:1;:::i;396:1420:119:-;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;:::i;:::-;;;;;;;3082:40:54;;;;;396:1420:119;3082:40:54;;3107:4;3082:40;;;396:1420:119;;;;;;3082:6:54;396:1420:119;3082:40:54;;;;;;;396:1420:119;3082:40:54;;;396:1420:119;;;;;;;3082:40:54;;;;;;;;;;;;;;;;;:::i;:::-;;;396:1420:119;;;;;3082:40:54;;;;;;;;;396:1420:119;;;;;;-1:-1:-1;;396:1420:119;;;;;11979:32:113;396:1420:119;11979:32:113;396:1420:119;11979:32:113;396:1420:119;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;2854:5:113;396:1420:119;;;;;;;;-1:-1:-1;;396:1420:119;;;;;6339:10:54;-1:-1:-1;396:1420:119;;;1121:7:101;396:1420:119;;;;;;;;;;;;;;;;;;;;5175:32:54;396:1420:119;;;:::i;:::-;436:67:68;;;;;:::i;:::-;396:1420:119;;;;;;;;;;;5175:32:54;396:1420:119;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;991:8:45;396:1420:119;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;991:8:45;396:1420:119;;;;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;;;;;991:8:45;396:1420:119;;;;;;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;;-1:-1:-1;396:1420:119;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11682:6:113;;;396:1420:119;;;;;11682:35:113;;11711:4;11682:35;;;396:1420:119;;11682:35:113;396:1420:119;11682:35:113;;;;;;;;;;396:1420:119;11682:35:113;;;;;;396:1420:119;11668:49:113;;;396:1420:119;;;11760:39:113;;;;396:1420:119;11760:39:113;;11711:4;11760:39;;;396:1420:119;11760:39:113;;;;;;;396:1420:119;;11760:39:113;;396:1420:119;11727:72:113;;;;;;396:1420:119;;:::i;:::-;11809:48:113;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11760:39:113;;;;;;396:1420:119;11760:39:113;;;;;;:::i;:::-;;;;396:1420:119;;;;;;;;;11682:35:113;;;;;;;;;;;;;:::i;:::-;;;;;396:1420:119;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;465:4:47;1224:29:119;396:1420;;;;;;1224:29;;:::i;:::-;:47;465:4:47;;396:1420:119;;;1308:18;396:1420;;;;;;1308:18;396:1420;;;;;;1251:1;396:1420;;;;-1:-1:-1;396:1420:119;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;465:4:47;396:1420:119;465:4:47;;;396:1420:119;465:4:47;;;;;;;;396:1420:119;465:4:47;396:1420:119;;;465:4:47;;;;396:1420:119;;;;;;;;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;6533:20:54;;;:::i;396:1420:119:-;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;2727:2:54;396:1420:119;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;1443:95:54;396:1420:119;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;2979:6:49;396:1420:119;;;;;;;;;4942:26:54;396:1420:119;;;:::i;:::-;;;;;;4124:49:54;396:1420:119;;;;;:::i;:::-;;;;4124:49:54;;4144:10;4124:49;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:6:54;396:1420:119;4124:49:54;;;;;;;;;396:1420:119;;4190:4:54;396:1420:119;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;954:18;396:1420;941:38;;937:111;;396:1420;937:111;995:30;;;:::i;:::-;396:1420;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;6851:34:113;6799;396:1420:119;;;6799:34:113;;:::i;:::-;396:1420:119;6851:34:113;;:::i;:::-;396:1420:119;;8697:18:49;;;396:1420:119;;;8730:16:49;8697:82;396:1420:119;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;2004:6:47;;;;;;2000:58;;2560:120;8984:34:49;2560:120:47;396:1420:119;2560:120:47;;8909:57:49;2560:120:47;;;;396:1420:119;8909:57:49;:::i;2000:58:47:-;2033:14;396:1420:119;2033:14:47;396:1420:119;2033:14:47;396:1420:119;;;;;;;;;;;;;8909:57:49;8984:34;396:1420:119;;;;;;8909:57:49;:::i;396:1420:119:-;;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;6333:26:49;465:4:47;6374:13:49;396:1420:119;6369:148:49;396:1420:119;;;6369:148:49;6531:14;;;;;6527:67;;396:1420:119;;8909:57:49;8984:34;396:1420:119;;;;8909:57:49;:::i;6527:67::-;6568:15;396:1420:119;6568:15:49;396:1420:119;6568:15:49;6419:3;396:1420:119;;;465:4:47;396:1420:119;6389:28:49;;;;;6466:11;;6450:56;6466:11;;:39;:11;;;;:::i;:::-;396:1420:119;6484:20:49;;;:::i;6450:56::-;6419:3;396:1420:119;6374:13:49;;;6389:28;;;;396:1420:119;;;;;;4624:26:49;465:4:47;4665:13:49;396:1420:119;4660:152:49;396:1420:119;;;4826:14:49;;;;;4822:67;;396:1420:119;;8909:57:49;8984:34;396:1420:119;;;;8909:57:49;:::i;4710:3::-;396:1420:119;;;465:4:47;396:1420:119;4680:28:49;;;;;4759:11;;465:4:47;838:5;4759:11:49;;:41;:11;;;;:::i;:::-;396:1420:119;4779:20:49;;;:::i;838:5:47:-;396:1420:119;4710:3:49;396:1420:119;4665:13:49;;;8697:82;;;;396:1420:119;;;;;;;-1:-1:-1;;396:1420:119;;;;;;3819:43:54;396:1420:119;;;:::i;:::-;;;;3819:43:54;;3834:10;3819:43;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;2434:8:54;396:1420:119;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2434:8:54;396:1420:119;;;;;;;;;;;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;876:25:108;396:1420:119;861:40:108;;396:1420:119;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;:::o;:::-;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;465:4:47;396:1420:119;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;:::o;2769:110:54:-;396:1420:119;;;2839:33:54;;2866:4;2839:33;;;396:1420:119;2839:33:54;:6;396:1420:119;2839:6:54;396:1420:119;2839:6:54;396:1420:119;2839:33:54;;;;;;;-1:-1:-1;2839:33:54;;;2832:40;2769:110;:::o;2839:33::-;;;;;;;;;;;;;;;;;:::i;:::-;;;396:1420:119;;;;;2769:110:54;:::o;2839:33::-;;;-1:-1:-1;2839:33:54;;;396:1420:119;;;-1:-1:-1;396:1420:119;;;;;;954:18;396:1420;;;;;;954:18;-1:-1:-1;396:1420:119;;;;-1:-1:-1;396:1420:119;:::o;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;7134:1187:113:-;7264:24;;;;;;:41;7289:15;;;396:1420:119;;;7264:41:113;;:::i;:::-;396:1420:119;7349:24:113;;7374:16;7349:42;7374:16;;;396:1420:119;;;7349:42:113;;:::i;:::-;396:1420:119;;;;;;;:::i;:::-;;;;:::i;:::-;7406:33:113;;7672:38;7576:37;7728:27;396:1420:119;;7576:37:113;:::i;:::-;396:1420:119;;7672:38:113;:::i;:::-;7728:27;;396:1420:119;465:4:47;838:5;;;;;:::i;:::-;396:1420:119;10982:43:49;;10978:93;;11103:20;1744:19:47;11103:20:49;;;:::i;:::-;1744:19:47;;:::i;:::-;396:1420:119;;;;;;;;;;;;;;;1625:13:47;11258:20:49;1625:13:47;838:5;1625:13;;:::i;:::-;11258:20:49;;:::i;:::-;5832:87:47;;;;;;;838:5;;:::i;:::-;396:1420:119;7784:24:113;:::o;10978:93:49:-;11048:12;396:1420:119;11048:12:49;;396:1420:119;11048:12:49;7402:913:113;8055:38;7959:37;8111:27;396:1420:119;;;;;;7959:37:113;:::i;:::-;396:1420:119;;8055:38:113;:::i;:::-;8111:27;;396:1420:119;465:4:47;838:5;;;:::i;:::-;396:1420:119;13380:46:49;;13376:97;;2795:5;;;;;;;;1744:19:47;;;13618:20:49;1744:19:47;;:::i;:::-;;;:::i;13618:20:49:-;2795:5;;;;;;;;13884:22;;;:::i;13376:97::-;13449:13;396:1420:119;13449:13:49;;396:1420:119;13449:13:49;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;1405:278::-;1523:18;396:1420;1510:38;;1523:18;;;1571:30;;;:::i;:::-;396:1420;;;;;;1564:37;:::o;1506:171::-;1639:27;-1:-1:-1;1639:27:119;;-1:-1:-1;1639:27:119;509:165:68;396:1420:119;586:6:68;396:1420:119;564:10:68;:29;560:108;;509:165::o;560:108::-;616:41;;;564:10;616:41;396:1420:119;;616:41:68;;3845:262:106;396:1420:119;3938:11:106;396:1420:119;3929:4:106;3921:28;:63;;;3845:262;3917:184;;;4007:22;4000:29;:::o;3917:184::-;396:1420:119;;4204:80:106;;;396:1420:119;2079:95:106;396:1420:119;;4226:11:106;396:1420:119;2079:95:106;;396:1420:119;4239:14:106;2079:95;;;396:1420:119;4255:13:106;2079:95;;;396:1420:119;3929:4:106;2079:95;;;396:1420:119;2079:95:106;4204:80;;2079:95;396:1420:119;;;;;;;;;;;;;;4194:91:106;;4060:30;:::o;3921:63::-;3970:14;;3953:13;:31;3921:63;;396:1420:119;;;;1789:18;396:1420;;;;;;;;;;;1789:18;-1:-1:-1;396:1420:119;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;2795:5:49;396:1420:119;;;;;;;;;;;;;;;:::o;:::-;;638:5:47;396:1420:119;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;-1:-1:-1;;;396:1420:119;;;;;;;;4760:637:47;;465:4;;4997:8;;;465:4;;5021:8;;;:::o;4993:398::-;396:1420:119;5050:8:47;;396:1420:119;;5081:11:47;;;;;;:::i;5046:345::-;396:1420:119;5113:9:47;;396:1420:119;;5155:11:47;;;;5187:21;5155:11;;:::i;:::-;5187:21;;:::i;5109:282::-;5253:20;;;;:::i;:::-;1068:5;396:1420:119;1068:5:47;;;:::i;:::-;1186:122;-1:-1:-1;;1186:122:47;;;;;;;;396:1420:119;;;;;;;;5366:14:47;;;:::i;887:427::-;;1068:5;887:427;1068:5;:::i;:::-;1186:122;;-1:-1:-1;;1186:122:47;;;;;;;;887:427;:::o;3385:267:102:-;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;396:1420:119;;;;;;:::i;:::-;2367:90:102;;2311:2;396:1420:119;;2367:90:102;3570:22;:::o;2702:69::-;2740:20;396:1420:119;2740:20:102;;396:1420:119;2740:20:102;3504:142;396:1420:119;;;-1:-1:-1;396:1420:119;-1:-1:-1;396:1420:119;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1390:66:102;;;;;;;;:::i;396:1420:119:-;;;;-1:-1:-1;396:1420:119;;;;-1:-1:-1;396:1420:119;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;;;;;;;1390:66:102;396:1420:119;;;;;;;;;;;;;;;;;;;;;;3385:267:102;1390:66;3508:46;;1390:66;;;2652:40;;2706:11;2715:2;2706:11;;2702:69;;396:1420:119;;;;;;:::i;3504:142:102:-;396:1420:119;;;-1:-1:-1;6584:16:106;;396:1420:119;6584:16:106;396:1420:119;;;;:::i;:::-;;;;;;;6584:16:106;396:1420:119;;;6584:16:106;;;;396:1420:119;;;;;1390:66:102;;;;;;;;:::i;396:1420:119:-;;;;6584:16:106;-1:-1:-1;396:1420:119;;;-1:-1:-1;396:1420:119;;;;;;;-1:-1:-1;1390:66:102;;-1:-1:-1;;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;396:1420:119;;;;;;3736:794:47;465:4;;3975:8;;;465:4;;3999:8;;;;:::o;3971:553::-;4028:8;;396:1420:119;4028:8:47;;396:1420:119;;838:5:47;;;;;;:::i;4024:500::-;396:1420:119;4093:9:47;;396:1420:119;;838:5:47;;;;;;:::i;:::-;396:1420:119;838:5:47;;:::i;4089:435::-;4237:20;;;;;:::i;:::-;1068:5;;;:::i;:::-;396:1420:119;-1:-1:-1;;1186:122:47;;;;;;;;;;396:1420:119;;;;;;;;;4347:14:47;;;;;4381:8;;;396:1420:119;4381:8:47;:::o;4343:171::-;396:1420:119;;4460:21:47;:::o;5140:1530:105:-;;;6199:66;6186:79;;6182:164;;396:1420:119;;;;;;;;;;;;;;;;;;;;;;;;;;6457:24:105;;;;;;;;;396:1420:119;6457:24:105;396:1420:119;;;6495:20:105;6491:113;;6614:49;396:1420:119;6614:49:105;396:1420:119;5140:1530:105;:::o;6491:113::-;6531:62;396:1420:119;6531:62:105;6457:24;6531:62;396:1420:119;6531:62:105;:::o;6182:164::-;6281:54;;;396:1420:119;6281:54:105;6301:30;6281:54;;:::o;7196:532::-;396:1420:119;;;;;;7282:29:105;;;7327:7;;:::o;7278:444::-;396:1420:119;7378:38:105;;396:1420:119;;7439:23:105;-1:-1:-1;7439:23:105;396:1420:119;-1:-1:-1;7439:23:105;7374:348;7492:35;7483:44;;7492:35;;7550:46;;-1:-1:-1;7550:46:105;396:1420:119;;;-1:-1:-1;7550:46:105;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;-1:-1:-1;7679:32:105;396:1420:119;;;-1:-1:-1;7679:32:105;1822:864:47;;2004:6;;2000:58;;465:4;396:1420:119;;;;;;;;;;;;;;;2560:120:47;;-1:-1:-1;;2560:120:47;;;;;;;;1822:864;:::o;2000:58::-;2033:14;2009:1;2033:14;;2009:1;2033:14;2648:13:48;;;;;;;;:::o;:::-;;;;;;;:::o;4496:2300::-;;4577:6;;4573:131;;4718:6;;4714:45;;396:1420:119;;;5129:68:48;;396:1420:119;5591:24:48;;;5587:83;;5774:28;2707:26;5774:28;:60;;;4496:2300;5770:720;;;1564:4;;1789;;21319:38;;2648:13;;2593;;;;2707:26;;2648:13;;21319:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22285:2;2648:13;;;22203:2;2648:13;;;22121:2;2648:13;;;22040:1;2648:13;;;21959:1;2648:13;;;21878:1;2648:13;;;21797:1;2648:13;;2593;;;;;;;2648;;;;;;;;;;;;;2593;1564:4;5770:720;;2648:13;2400:6;6615:36;;;;:76;;;5770:720;6613:79;6609:137;;6771:17;7080:25;;;;:54;;;5770:720;7078:57;7074:112;;396:1420:119;7316:5:48;396:1420:119;7316:5:48;;7312:417;;5770:720;-1:-1:-1;9497:3:48;;2789:21;9082:7;;2789:21;;2707:26;;1754:4;9134:12;2845:56;9078:252;;2648:13;9723:23;9785:7;3117:22;9785:7;;;9781:104;;9078:252;3246:22;9902:7;;;9898:104;;9078:252;3368:21;10019:7;;;10015:104;;9078:252;3486:21;10136:7;;;10132:104;;9078:252;3602:21;10253:7;;;10249:104;;9078:252;10370:7;;;;10366:104;;9078:252;3832:20;10487:7;;;10483:104;;9078:252;3947:20;10604:7;;;10600:104;;9078:252;11567:1;2648:13;;;;;;11645:1;2648:13;;;;;;11723:1;2648:13;;;;;;;11801:1;2648:13;;;;;;11879:1;2648:13;;;;;;11957:1;2648:13;;;;;;;12035:1;2648:13;;;;;;;12113:1;2648:13;;;;;;;12191:2;2648:13;;;;;;;12270:2;2648:13;;;;;;;12349:2;2648:13;;;;;;2593;;;;;;;;;;;;;2648;;;;13075:54;;;;;13094:26;;;:::i;10600:104::-;4003:21;2707:26;;;;2648:13;;;10600:104;;;10483;3888:21;2707:26;;;;2648:13;;;10483:104;;;10366;3773:21;2707:26;;;;2648:13;;;10366:104;;;10249;3658:21;2707:26;;;;2648:13;;;10249:104;;;10132;3542:22;2707:26;;;;2648:13;;;10132:104;;;10015;3424:24;2707:26;;;;2648:13;;;10015:104;;;9898;3303:27;2707:26;;;;2648:13;;;9898:104;;;9781;3174:34;;-1:-1:-1;2707:26:48;;9781:104;;9078:252;2953:20;9171:7;;2953:20;;2707:26;;1754:4;9223:12;3008:28;9167:163;9078:252;;9167:163;1754:4;9274:11;9284:1;9167:163;9078:252;;7312:417;7714:4;;-1:-1:-1;396:1420:119;4181:19:48;;-1:-1:-1;9497:3:48;7312:417;;7074:112;7158:17;396:1420:119;7158:17:48;;396:1420:119;7158:17:48;7080:54;7109:25;2349:6;7109:25;;;7080:54;;6609:137;6715:20;396:1420:119;6715:20:48;;396:1420:119;6715:20:48;6615:76;6655:36;2349:6;6655:36;;;6615:76;;5770:720;6451:13;1564:4;6451:13;396:1420:119;14954:10:48;;;;14950:381;;5770:720;16656:14;17116:3;16656:14;396:1420:119;2648:13:48;16708:16;;;16704:126;;5770:720;2648:13;16848:16;;;16844:126;;5770:720;2648:13;;;;;;;3174:34;;17276:7;;;;17272:94;;5770:720;3303:27;;;17384:7;;;;17380:94;;5770:720;3424:24;;17492:7;;;;17488:94;;5770:720;3542:22;;17600:7;;;;17596:94;;5770:720;3658:21;;17708:7;;;;17704:94;;5770:720;3773:21;;17816:7;;;;17812:94;;5770:720;3888:21;;17924:7;;;;17920:94;;5770:720;4003:21;;18032:7;;;;18028:94;;5770:720;4120:21;;18140:8;;;;18136:97;;5770:720;4237:21;;18251:8;;;;18247:97;;5770:720;1754:4;18891:38;1754:4;2593:13;;2707:26;2593:13;;;2707:26;;2648:13;18891:38;:::i;:::-;2648:13;;;;;;;;;;;;;;;;;;19369:1;19450;19531;19612;19693:2;2648:13;;;;;;;;;;;;;;;;;;;;;;;;2593;;;;;2648;;2593;2648;20303:35;;;;;396:1420:119;4181:19:48;20303:35;2648:13;5770:720;;20303:35;;;18247:97;1754:4;4181:19;2648:13;;;2593;;18247:97;;;;18136;1754:4;4063:20;2648:13;;;2593;;18136:97;;;;18028:94;1754:4;3947:20;2648:13;;;2593;;18028:94;;;;17920;1754:4;3832:20;2648:13;;;2593;;17920:94;;;;17812;1754:4;2648:13;;;;2593;;17812:94;;;;17704;1754:4;3602:21;2648:13;;;2593;;17704:94;;;;17596;1754:4;3486:21;2648:13;;;2593;;17596:94;;;;17488;1754:4;3368:21;2648:13;;;2593;;17488:94;;;;17380;1754:4;3246:22;2648:13;;;2593;;17380:94;;;;17272;3117:22;2648:13;;;;;2593;;17272:94;;;;;16844:126;2648:13;3008:28;2953:20;2648:13;;2593;;16844:126;;16704;2648:13;2845:56;2648:13;;2789:21;16704:126;;14950:381;15248:21;;;;;;:::i;:::-;15316:4;;17116:3;14950:381;;5774:60;5806:28;2593:13;5806:28;;5774:60;;5587:83;5638:21;396:1420:119;5638:21:48;;396:1420:119;5638:21:48;5129:68;5169:17;396:1420:119;5169:17:48;;396:1420:119;5169:17:48;4714:45;4740:8;;396:1420:119;4740:8:48;:::o;4573:131::-;4671:22;;1564:4;4671:22;:::o"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","computeBalance(uint256[],uint256,uint256)":"16a0b3e0","computeInvariant(uint256[],uint8)":"984de9e8","decimals()":"313ce567","eip712Domain()":"84b0196e","emitApproval(address,address,uint256)":"5687f2b8","emitTransfer(address,address,uint256)":"23de6651","getAggregateFeePercentages()":"81fa807c","getCurrentLiveBalances()":"b156aa0a","getMaximumInvariantRatio()":"273c1adf","getMaximumSwapFeePercentage()":"654cf15d","getMinimumInvariantRatio()":"b677fa56","getMinimumSwapFeePercentage()":"ce20ece7","getNormalizedWeights()":"f89f27ed","getRate()":"679aefce","getStaticSwapFeePercentage()":"d335b0cf","getTokenInfo()":"abb1dc44","getTokens()":"aa6ca808","getVault()":"8d928af8","getWeightedPoolDynamicData()":"c0bc6f33","getWeightedPoolImmutableData()":"53b79bd7","incrementNonce()":"627cdcb9","name()":"06fdde03","nonces(address)":"7ecebe00","onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))":"72c98186","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","setNormalizedWeight(uint256,uint256)":"19f32ccd","setNormalizedWeights(uint256[2])":"3f3353de","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"numTokens\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"internalType\":\"struct WeightedPool.NewPoolParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseOutOfBounds\",\"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\":[],\"name\":\"ExponentOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxInRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxOutRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinWeight\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NormalizedWeightInvariant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProductOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WeightedPoolBptRateUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroInvariant\",\"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\":[],\"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[]\"},{\"internalType\":\"enum Rounding\",\"name\":\"rounding\",\"type\":\"uint8\"}],\"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\":[],\"name\":\"getAggregateFeePercentages\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"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\":\"getNormalizedWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"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\":\"getWeightedPoolDynamicData\",\"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\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"struct WeightedPoolDynamicData\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeightedPoolImmutableData\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"normalizedWeights\",\"type\":\"uint256[]\"}],\"internalType\":\"struct WeightedPoolImmutableData\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"tokenIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newWeight\",\"type\":\"uint256\"}],\"name\":\"setNormalizedWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"newWeights\",\"type\":\"uint256[2]\"}],\"name\":\"setNormalizedWeights\",\"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\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC2612ExpiredSignature(uint256)\":[{\"params\":{\"deadline\":\"The permit deadline that expired\"}}],\"ERC2612InvalidSigner(address,address)\":[{\"params\":{\"owner\":\"The address of the owner (expected value of the signature provider)\",\"signer\":\"The address corresponding to the signature provider\"}}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"SenderIsNotVault(address)\":[{\"params\":{\"sender\":\"The account attempting to call a permissioned function\"}}],\"WeightedPoolBptRateUnsupported()\":[{\"details\":\"It is not safe to nest Weighted Pools as WITH_RATE tokens in other pools, where they function as their own rate provider. The default `getRate` implementation from `BalancerPoolToken` computes the BPT rate using the invariant, which has a non-trivial (and non-linear) error. Without the ability to specify a rounding direction, the rate could be manipulable. It is fine to nest Weighted Pools as STANDARD tokens, or to use them with external rate providers that are stable and have at most 1 wei of rounding error (e.g., oracle-based).\"}],\"ZeroInvariant()\":[{\"details\":\"Most commonly, this happens when a token balance is zero.\"}]},\"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.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"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`.\"},\"computeBalance(uint256[],uint256,uint256)\":{\"details\":\"Similar to V2's `_getTokenBalanceGivenInvariantAndAllOtherBalances` in StableMath. The pool must round up for the Vault to round in the protocol's favor when calling this function.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"invariantRatio\":\"The ratio of the new invariant (after an operation) to the old\",\"tokenInIndex\":\"The index of the token we're computing the balance for, sorted in token registration order\"},\"returns\":{\"newBalance\":\"The new balance of the selected token, after the operation\"}},\"computeInvariant(uint256[],uint8)\":{\"details\":\"This function computes the invariant based on current balances (and potentially other pool state). The rounding direction must be respected for the Vault to round in the pool's favor when calling this function. If the invariant computation involves no precision loss (e.g. simple sum of balances), the same result can be returned for both rounding directions. You can think of the invariant as a measure of the \\\"value\\\" of the pool, which is related to the total liquidity (i.e., the \\\"BPT rate\\\" is `invariant` / `totalSupply`). Two critical properties must hold: 1) The invariant should not change due to a swap. In practice, it can *increase* due to swap fees, which effectively add liquidity after the swap - but it should never decrease. 2) The invariant must be \\\"linear\\\"; i.e., increasing the balances proportionally must increase the invariant in the same proportion: inv(a * n, b * n, c * n) = inv(a, b, c) * n Property #1 is required to prevent \\\"round trip\\\" paths that drain value from the pool (and all LP shareholders). Intuitively, an accurate pricing algorithm ensures the user gets an equal value of token out given token in, so the total value should not change. Property #2 is essential for the \\\"fungibility\\\" of LP shares. If it did not hold, then different users depositing the same total value would get a different number of LP shares. In that case, LP shares would not be interchangeable, as they must be in a fair DEX.\",\"params\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\",\"rounding\":\"Rounding direction to consider when computing the invariant\"},\"returns\":{\"_0\":\"The calculated invariant of the pool, represented as a uint256\"}},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"emitApproval(address,address,uint256)\":{\"details\":\"Emit the Approval event. This function can only be called by the MultiToken.\"},\"emitTransfer(address,address,uint256)\":{\"details\":\"Emit the Transfer event. This function can only be called by the MultiToken.\"},\"getAggregateFeePercentages()\":{\"details\":\"These are determined by the current protocol and pool creator fees, set in the `ProtocolFeeController`.\",\"returns\":{\"aggregateSwapFeePercentage\":\"The aggregate percentage fee applied to swaps\",\"aggregateYieldFeePercentage\":\"The aggregate percentage fee applied to yield\"}},\"getCurrentLiveBalances()\":{\"details\":\"Note that live balances will not necessarily be accurate if the pool is in Recovery Mode. Withdrawals in Recovery Mode do not make external calls (including those necessary for updating live balances), so if there are withdrawals, raw and live balances will be out of sync until Recovery Mode is disabled.\",\"returns\":{\"balancesLiveScaled18\":\"Token balances after paying yield fees, applying decimal scaling and rates\"}},\"getMaximumInvariantRatio()\":{\"returns\":{\"_0\":\"The maximum invariant ratio for a pool during unbalanced add liquidity\"}},\"getMaximumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The maximum swap fee percentage for a pool\"}},\"getMinimumInvariantRatio()\":{\"returns\":{\"_0\":\"The minimum invariant ratio for a pool during unbalanced remove liquidity\"}},\"getMinimumSwapFeePercentage()\":{\"returns\":{\"_0\":\"The minimum swap fee percentage for a pool\"}},\"getNormalizedWeights()\":{\"returns\":{\"_0\":\"The normalized weights, sorted in token registration order\"}},\"getRate()\":{\"details\":\"The meaning of this rate depends on the context. Note that there may be an error associated with a token rate, and the caller might require a certain rounding direction to ensure correctness. This (legacy) interface does not take a rounding direction or return an error, so great care must be taken when interpreting and using rates in downstream computations.\",\"returns\":{\"_0\":\"The current token rate\"}},\"getStaticSwapFeePercentage()\":{\"returns\":{\"_0\":\"18-decimal FP value of the static swap fee percentage\"}},\"getTokenInfo()\":{\"returns\":{\"balancesRaw\":\"Current native decimal balances of the pool tokens, sorted in token registration order\",\"lastBalancesLiveScaled18\":\"Last saved live balances, sorted in token registration order\",\"tokenInfo\":\"Token info structs (type, rate provider, yield flag), sorted in token registration order\",\"tokens\":\"Pool tokens, sorted in token registration order\"}},\"getTokens()\":{\"returns\":{\"tokens\":\"List of tokens in the pool, sorted in registration order\"}},\"getWeightedPoolDynamicData()\":{\"returns\":{\"data\":\"A struct containing all dynamic weighted pool parameters\"}},\"getWeightedPoolImmutableData()\":{\"returns\":{\"data\":\"A struct containing all immutable weighted pool parameters\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"params\":{\"params\":\"Swap parameters (see above for struct definition)\"},\"returns\":{\"_0\":\"Calculated amount for the swap operation\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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()\":{\"returns\":{\"_0\":\"version The stored contract version\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"BaseOutOfBounds()\":[{\"notice\":\"This error is thrown when a base is not within an acceptable range.\"}],\"ERC2612ExpiredSignature(uint256)\":[{\"notice\":\"Operation failed due to an expired permit signature.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"notice\":\"Operation failed due to a non-matching signature.\"}],\"ExponentOutOfBounds()\":[{\"notice\":\"This error is thrown when a exponent is not within an acceptable range.\"}],\"InputLengthMismatch()\":[{\"notice\":\"Arrays passed to a function and intended to be parallel have different lengths.\"}],\"InvalidExponent()\":[{\"notice\":\"This error is thrown when an exponent used in the exp function is not within an acceptable range.\"}],\"InvalidToken()\":[{\"notice\":\"Invalid tokens (e.g., zero) cannot be registered.\"}],\"MaxInRatio()\":[{\"notice\":\"User attempted to add a disproportionate amountIn of tokens to a pool.\"}],\"MaxOutRatio()\":[{\"notice\":\"User attempted to extract a disproportionate amountOut of tokens from a pool.\"}],\"MinWeight()\":[{\"notice\":\"Indicates that one of the pool tokens' weight is below the minimum allowed.\"}],\"NormalizedWeightInvariant()\":[{\"notice\":\"Indicates that the sum of the pool tokens' weights is not FixedPoint.ONE.\"}],\"ProductOutOfBounds()\":[{\"notice\":\"This error is thrown when the exponent * ln(base) is not within an acceptable range.\"}],\"SenderIsNotVault(address)\":[{\"notice\":\"Error indicating the sender is not the Vault (e.g., someone is trying to call a permissioned function).\"}],\"WeightedPoolBptRateUnsupported()\":[{\"notice\":\"`getRate` from `IRateProvider` was called on a Weighted Pool.\"}],\"ZeroDivision()\":[{\"notice\":\"Attempted division by zero.\"}],\"ZeroInvariant()\":[{\"notice\":\"Error thrown when the calculated invariant is zero, indicating an issue with the invariant calculation.\"}]},\"kind\":\"user\",\"methods\":{\"computeBalance(uint256[],uint256,uint256)\":{\"notice\":\"Computes a new token balance, given the invariant growth ratio and all other balances.\"},\"computeInvariant(uint256[],uint8)\":{\"notice\":\"Computes the pool's invariant.\"},\"getAggregateFeePercentages()\":{\"notice\":\"Gets the aggregate swap and yield fee percentages for a pool.\"},\"getCurrentLiveBalances()\":{\"notice\":\"Gets the current live balances of the pool as fixed point, 18-decimal numbers.\"},\"getNormalizedWeights()\":{\"notice\":\"Get the normalized weights.\"},\"getRate()\":{\"notice\":\"An 18 decimal fixed point number representing the exchange rate of one token to another related token.\"},\"getStaticSwapFeePercentage()\":{\"notice\":\"Fetches the static swap fee percentage for the pool.\"},\"getTokenInfo()\":{\"notice\":\"Gets the raw data for the pool: tokens, token info, raw balances, and last live balances.\"},\"getTokens()\":{\"notice\":\"Gets the tokens registered in the pool.\"},\"getWeightedPoolDynamicData()\":{\"notice\":\"Get dynamic pool data relevant to swap/add/remove calculations.\"},\"getWeightedPoolImmutableData()\":{\"notice\":\"Get immutable pool data relevant to swap/add/remove calculations.\"},\"incrementNonce()\":{\"notice\":\"Increment the sender's nonce to revoke any currently granted (but not yet executed) `permit`.\"},\"onSwap((uint8,uint256,uint256[],uint256,uint256,address,bytes))\":{\"notice\":\"Execute a swap in the pool.\"},\"version()\":{\"notice\":\"Getter for the version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/WeightedPoolMock.sol\":\"WeightedPoolMock\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@balancer-labs/v3-interfaces/contracts/pool-utils/IPoolInfo.sol\":{\"keccak256\":\"0xa7adbaf80bc9cfa44e41776f632b5d7cb2c02c562a124c0e4cb17f06c4a54db3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4fdf59a7f3dc3b7d6bb6f466e4a0a6263b66c0fc12492baf06ec8c6fdcc2398\",\"dweb:/ipfs/QmWxLpicLjGdgGQ8GjuN9YfDyVapYWwzdgET86ucs9hmFa\"]},\"@balancer-labs/v3-interfaces/contracts/pool-weighted/IWeightedPool.sol\":{\"keccak256\":\"0x4dbf765d0fba4be1552aa5309aadee71929f74a84818cd453bb23f873ca91bd7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://65c241e3f125e87cea6cad51b075c6d821ba89e45756d8a57590a1f0c6b0d409\",\"dweb:/ipfs/Qmdhs7Fri1yfaRN4S5mPbr76ytv4EhxDntWeYw6mspw1Xq\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0xa383f78ec04a4ebadbf64ce0fcef8c14f2487f02330acf2fbab80055c54a5d74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://077fdb9728fd22008ca58ca9f63cc7ea1b86f9cec778c5ff8943d9322b812f06\",\"dweb:/ipfs/QmVCYYCeuUZK1GqAHzTZBo59cjjh9iQhNYWQvAy2AYAVoN\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IRateProvider.sol\":{\"keccak256\":\"0x3a9a626d90cdf64042441895ce981bf570d9aa56e7c188b34f8603b1d629aae3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0ac7096c0d5cd5e0c20dcc6681d24eb04ad7e14cbb61d0ebf136f96a2b9752c4\",\"dweb:/ipfs/QmWryZQqLxpxaCBwK6uEfSLKWKsGBsDL7xbdGqFMkW4Uxp\"]},\"@balancer-labs/v3-interfaces/contracts/solidity-utils/helpers/IVersion.sol\":{\"keccak256\":\"0x8993f223a501fbbe7c1a2f589a12961ea2fab1919dbc02a1eede973692d24e6e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acce7ad2eab8b257f65aa7e20b7814c71787c08d80e02335ccc7b04818ffcdc7\",\"dweb:/ipfs/QmQtDc6mwAijhvXLK5mbNfZ1JyQX7Q4nRsry5qDbcPpQVi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x288b9590b9fb743964d46f610c2b0d4eee8457bfe52b890e31be5e11661759e3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://11373e74f2bb6112ae47b709e0161c09b3a2e1a7659bd15fa4ab4bcf8eadcab0\",\"dweb:/ipfs/QmfELyCgCckJz6hPwCw9thNA5kvaoUcCw7gcoxRgWrjMg1\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x9a1d76aae6ede8baa23b2472faf991337fc0787f8a7b6e0573241060dd485a53\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://32ef0841804401494ddb68a85c7e9e97c4c0e26899a1d61c6ec9841cb5fcb800\",\"dweb:/ipfs/QmT3VTZRCJ8jFvq9VYZZHbSyuVbSnPAx8p6XEiZYppMrYQ\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IHooks.sol\":{\"keccak256\":\"0x51fabcdeaefc15a895a04c457968a7fc0ce4f4647d42a91d07a863170d812c28\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://85822ed25a050521ec4b1af2e21d48e2b85cf48828cb9be5d7e5eb104d4ade6a\",\"dweb:/ipfs/QmU4QSNMfQCEacdgQizCxgNUzfnKxdmyqAndNJgLsCQ32t\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IProtocolFeeController.sol\":{\"keccak256\":\"0x743734d3d3503d705f0a778c4b0dd61fdb067e89a07481ddbead0654e6808318\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6198f27b2d01f346fdd3d1302e9a6ddd543d2f06afd675d84919c2242bd26d8d\",\"dweb:/ipfs/QmYntQih5MwxxdGnVu2BPVLeqFuJEH761cByAesjwE6JKT\"]},\"@balancer-labs/v3-interfaces/contracts/vault/ISwapFeePercentageBounds.sol\":{\"keccak256\":\"0x5a08573f4b3cacd398cbbc119d407a176cb64b7ee522386f4f79300b2851d92d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2ff398fdc481caf40135abd58e71adc7aeacb8a79f461998fac207f59fcca33\",\"dweb:/ipfs/QmNczb9gmy4V3Kk9UjthyA6CpcntTWPbYvDu8aVtU1SW9k\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IUnbalancedLiquidityInvariantRatioBounds.sol\":{\"keccak256\":\"0xf41d8d01826abce1dc8a81f6d75663b853c718f028ce3c36d79dd3d833e7af2e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4677f0f2d6f9caed2acb70a172cf75819b4d3124258ab9b1aabf0c153381d7d8\",\"dweb:/ipfs/QmP8dzBjKzotSv8zEF4HeFZyECiBQn37T4EmegEFgwgdwi\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0xf02dcb0b4fe9b71eb46fc66e327e166091d4e479fc3987c766859c94d505fe03\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://de42ab0fa6f22010ac305d785e787a60fbb94c2d0ba17042a6e60bce33c5ed9f\",\"dweb:/ipfs/QmVonnCCZVGzA3EERuQ4PbtpTTKrtgoXxYmtJ4CqaSmc4e\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultAdmin.sol\":{\"keccak256\":\"0x9a651c10b5b352386341d65a37b63c95fbd0c4d401d4539730f3dfb4825acc18\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://26e398b4fc37c80a86327b9cbe14335e5378fa69b3fb222c2dc8cf33707c30fd\",\"dweb:/ipfs/QmY2E1b8DADLp3MStbVK93GACRJgJZxHYJpDrow1xzVhWB\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultErrors.sol\":{\"keccak256\":\"0xb2c6deaa8701201af5d31ac270fbc30ebe6b66a1f9b6b12d1d17d807f7decb66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://28d6751bc7e7c7221745742cfe906387e0d806ea0a0041b9377fb5a537146063\",\"dweb:/ipfs/QmcphjQ6ramZM6Qxv84jaJbtZ7d5FNFJ8xHWCHZwk7CdZ3\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultEvents.sol\":{\"keccak256\":\"0x0ff416b358949bb5d9553118f7cbfd42aa9aa33fa6bbe4bf470159df07cf6989\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f033bb516eb8d85554aea408a0a750bf6ccd5655035abd307cc8388a533f1c40\",\"dweb:/ipfs/QmPCjG5jrXU4FrJWsputirF7JXZsNxhopetnHZTfRAFvMn\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultExtension.sol\":{\"keccak256\":\"0xa547348926764942de6030bf7d303684ff675a4a08fab3320f98154450ca5bb8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c440d5d23034e35803f135d9336f256ece717370adb93d1f2fb992fa5ffd869\",\"dweb:/ipfs/QmbCaxRG3X9kUEbdrhRbm7JZZoK2nYp8FUXqh7Bn4wnFra\"]},\"@balancer-labs/v3-interfaces/contracts/vault/IVaultMain.sol\":{\"keccak256\":\"0x7df60e55516bf9cfa5156a03afc22e222fb87edf1bb9af48586ff0ff1be71e92\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://baf5a2e16cdb139182df24e2d103f80c72b730be20a04b2486e751af16652ac9\",\"dweb:/ipfs/Qmd6kdQmUFxPRJT1YrRJVVsUYAmpohBRvCM2qdXzVGcv5d\"]},\"@balancer-labs/v3-interfaces/contracts/vault/VaultTypes.sol\":{\"keccak256\":\"0x670a4c7cdc970ed8cc82432894318558d67a530591617177603e0fea631addbc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b240af11378ac8ce54000b7defbd63c3a78d34c8f2bd6061173e35326fb6a042\",\"dweb:/ipfs/Qmf161h2SEXEQ2oahYcwCkxRC6QZocP2GsSjSJW2K57UzR\"]},\"@balancer-labs/v3-pool-utils/contracts/PoolInfo.sol\":{\"keccak256\":\"0xa97e2a0fd95d78dcecf67fd8c554ced63bbd6da372b6f8b12f16ad526b6ec608\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d98ad2022f9e3653fd63daca8c0725c7ccbd4f63d0d27c413e90669ce7284a96\",\"dweb:/ipfs/QmZ62RpJj3qSUrrdVD3H72qEszTUuvGkFLSBXAKMhBn5nX\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/CastingHelpers.sol\":{\"keccak256\":\"0x8b468c356b40134c158695ad68193093444f1a7783966a03947d67c403c87635\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d2696338f5f2f11663a2123cd5f7df1a2bfb434d49f93f2c0d1486e9d43d6f4\",\"dweb:/ipfs/QmQihSe7BEvWh4s1EPnqSf5RKNL6fLqEBuMETn6nHouweW\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xe54f620633826cf7842c91606512a0d20414e5ce77a0b0cf5d44d10179cd7f6a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e86b797bc566f3e92392220564e457a9290e28e6af9566ec6d71bc9f3fc1548c\",\"dweb:/ipfs/QmewUN2ZTCQxuv8AqWfKNMn7joCtMmXg4wyAK3QqPtjPAw\"]},\"@balancer-labs/v3-solidity-utils/contracts/helpers/Version.sol\":{\"keccak256\":\"0xca8d6e86dafe803f864c5230e4569938d3257fe1e29e2693d6b7822d207a231d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://390de97b518c8a3f0ef6c1a2d448cfa102de6f4777dfc8e14d700b8395730ae5\",\"dweb:/ipfs/QmdmWZrdihBiuSCmwyFkdkXh9yQKNm56TEmtegUS2MPiFg\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x84bcae7004be7e91a88e76a3ac317490bc6845754a12cee88fcab76b1c5de37b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://15f903480fec5ae8042baf458e2246693b0b4a22687e65c2ed3afdf6993bff82\",\"dweb:/ipfs/QmcxsVeSbQ4qYnEZFoeFmiqaoV3rAx1oNhACCZCMZ1E6uf\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x70449e2b423b9850e39adddd7301205aa8b6e9e4ae788fd44d0968cac018eb2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce2174a3629b45dca032f9cf53df35dea240626913b8882a9e2da21610b02796\",\"dweb:/ipfs/Qmf8E4DePnZXjqb3V4A38gSobjgRK6VqavqPByuXvJxtBG\"]},\"@balancer-labs/v3-solidity-utils/contracts/math/WeightedMath.sol\":{\"keccak256\":\"0xb31be209c69a6e60f4486b793bfc57b3ab7aa25efd29f40e981d5b9c95196f7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://04a10cf9c7a408f0d617d8f25dedd1d4d8d0411ac022b26293b39fccfbf41c71\",\"dweb:/ipfs/QmaExV5EYT4dtE9EAybKaraqXnbpM4usyAfFV5DHfatkof\"]},\"@balancer-labs/v3-vault/contracts/BalancerPoolToken.sol\":{\"keccak256\":\"0x79f2ec4f7314bd1c3555368ff02bb9d382489dc8bbd7efbbf306f9a5084f3bec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a57c155451c5b1c1c59a27770754ccd9ba1be9344db6ac45b8744eba5fa4fa2f\",\"dweb:/ipfs/QmarkRwGaS3egg1FaQH6LibqjT6NocVUbD1jMPWtFxFaQV\"]},\"@balancer-labs/v3-vault/contracts/VaultGuard.sol\":{\"keccak256\":\"0x678a36266505ecef51b514707c3050baaeb970644894f64eb0a442aa4ab013ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d1514c0d27ad60f5f2d863f08258d67d937ec5e7b003d9c9f60526509d72bbef\",\"dweb:/ipfs/QmUVkCKFi1N8ZCzQ8VHD92eD1tzJciBowHmZ6fY8hEwNqF\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x207f64371bc0fcc5be86713aa5da109a870cc3a6da50e93b64ee881e369b593d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://548667cfa76683767c2c610b577f6c2f0675d0ce28f53c3f37b969c84a56b205\",\"dweb:/ipfs/QmUzA1CKC6bDdULuS44wGd7PWBNLiHb6bh7oHwJBDZSLAx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/WeightedPool.sol\":{\"keccak256\":\"0x6f31c5cde7725828cd8dae2a9d79efb8980ab5e5b192ec1073aac995a741f2fb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://64de9af946ef860d74237133bd560e6bbad8921ede3a46ba01466cf38f8be036\",\"dweb:/ipfs/Qmc6qAAmJ6qLYRWXNTafJ1ivo48yNVJntAXf7X4LYwySWb\"]},\"contracts/test/WeightedPoolMock.sol\":{\"keccak256\":\"0x1d08b9860259ee086e3a16add4290c153ab40ff7e942da5799c15510a0b10908\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5fb01c39bd825e9c2968966f4e7ff202bd42cbee91594a5f96453fe31256e70c\",\"dweb:/ipfs/QmSV3yqqhvSLREDp7zeLVJWXsKH6xzu7h7PC75qcoXTWev\"]}},\"version\":1}"}},"permit2/src/interfaces/IAllowanceTransfer.sol":{"IAllowanceTransfer":{"abi":[{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"AllowanceExpired","type":"error"},{"inputs":[],"name":"ExcessiveInvalidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"Lockdown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint48","name":"newNonce","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"oldNonce","type":"uint48"}],"name":"NonceInvalidation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"nonce","type":"uint48"}],"name":"Permit","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint48","name":"newNonce","type":"uint48"}],"name":"invalidateNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"internalType":"struct IAllowanceTransfer.TokenSpenderPair[]","name":"approvals","type":"tuple[]"}],"name":"lockdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permitBatch","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct IAllowanceTransfer.AllowanceTransferDetails[]","name":"transferDetails","type":"tuple[]"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address,address)":"927da105","approve(address,address,uint160,uint48)":"87517c45","invalidateNonces(address,address,uint48)":"65d9723c","lockdown((address,address)[])":"cc53287f","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"2a2d80d1","transferFrom((address,address,uint160,address)[])":"0d58b1db","transferFrom(address,address,uint160,address)":"36c78516"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"Lockdown\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"oldNonce\",\"type\":\"uint48\"}],\"name\":\"NonceInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"name\":\"Permit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"}],\"name\":\"invalidateNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.TokenSpenderPair[]\",\"name\":\"approvals\",\"type\":\"tuple[]\"}],\"name\":\"lockdown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.AllowanceTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Requires user's token approval on the Permit2 contract\",\"errors\":{\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}]},\"kind\":\"dev\",\"methods\":{\"allowance(address,address,address)\":{\"details\":\"The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\"},\"approve(address,address,uint160,uint48)\":{\"details\":\"The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval\",\"params\":{\"amount\":\"The approved amount of the token\",\"expiration\":\"The timestamp at which the approval is no longer valid\",\"spender\":\"The spender address to approve\",\"token\":\"The token to approve\"}},\"invalidateNonces(address,address,uint48)\":{\"details\":\"Can't invalidate more than 2**16 nonces per transaction.\",\"params\":{\"newNonce\":\"The new nonce to set. Invalidates all nonces less than it.\",\"spender\":\"The spender to invalidate nonces for\",\"token\":\"The token to invalidate nonces for\"}},\"lockdown((address,address)[])\":{\"params\":{\"approvals\":\"Array of approvals to revoke.\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitSingle\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitBatch\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"transferFrom((address,address,uint160,address)[])\":{\"details\":\"Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"transferDetails\":\"Array of owners, recipients, amounts, and tokens for the transfers\"}},\"transferFrom(address,address,uint160,address)\":{\"details\":\"Requires the from address to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"amount\":\"The amount of the token to transfer\",\"from\":\"The address to transfer from\",\"to\":\"The address of the recipient\",\"token\":\"The token address to transfer\"}}},\"title\":\"AllowanceTransfer\",\"version\":1},\"userdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"ExcessiveInvalidation()\":[{\"notice\":\"Thrown when too many nonces are invalidated.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}]},\"events\":{\"Approval(address,address,address,uint160,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions on a token for the spender.\"},\"Lockdown(address,address,address)\":{\"notice\":\"Emits an event when the owner sets the allowance back to 0 with the lockdown function.\"},\"NonceInvalidation(address,address,address,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully invalidates an ordered nonce.\"},\"Permit(address,address,address,uint160,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,address)\":{\"notice\":\"A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\"},\"approve(address,address,uint160,uint48)\":{\"notice\":\"Approves the spender to use up to amount of the specified token up until the expiration\"},\"invalidateNonces(address,address,uint48)\":{\"notice\":\"Invalidate nonces for a given (token, spender) pair\"},\"lockdown((address,address)[])\":{\"notice\":\"Enables performing a \\\"lockdown\\\" of the sender's Permit2 identity by batch revoking approvals\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\"},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\"},\"transferFrom((address,address,uint160,address)[])\":{\"notice\":\"Transfer approved tokens in a batch\"},\"transferFrom(address,address,uint160,address)\":{\"notice\":\"Transfer approved tokens from one address to another\"}},\"notice\":\"Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/interfaces/IAllowanceTransfer.sol\":\"IAllowanceTransfer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]}},\"version\":1}"}},"permit2/src/interfaces/IEIP712.sol":{"IEIP712":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/interfaces/IEIP712.sol\":\"IEIP712\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]}},\"version\":1}"}},"permit2/src/interfaces/IPermit2.sol":{"IPermit2":{"abi":[{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"AllowanceExpired","type":"error"},{"inputs":[],"name":"ExcessiveInvalidation","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"Lockdown","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint48","name":"newNonce","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"oldNonce","type":"uint48"}],"name":"NonceInvalidation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint160","name":"amount","type":"uint160"},{"indexed":false,"internalType":"uint48","name":"expiration","type":"uint48"},{"indexed":false,"internalType":"uint48","name":"nonce","type":"uint48"}],"name":"Permit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"word","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mask","type":"uint256"}],"name":"UnorderedNonceInvalidation","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint48","name":"newNonce","type":"uint48"}],"name":"invalidateNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wordPos","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"}],"name":"invalidateUnorderedNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"internalType":"struct IAllowanceTransfer.TokenSpenderPair[]","name":"approvals","type":"tuple[]"}],"name":"lockdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonceBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitBatch","name":"permitBatch","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}],"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}],"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct IAllowanceTransfer.AllowanceTransferDetails[]","name":"transferDetails","type":"tuple[]"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"address","name":"token","type":"address"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address,address)":"927da105","approve(address,address,uint160,uint48)":"87517c45","invalidateNonces(address,address,uint48)":"65d9723c","invalidateUnorderedNonces(uint256,uint256)":"3ff9dcb1","lockdown((address,address)[])":"cc53287f","nonceBitmap(address,uint256)":"4fe02b44","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"2a2d80d1","permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)":"30f28b7a","permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)":"edd9444b","permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)":"137c29fe","permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)":"fe8ec1a7","transferFrom((address,address,uint160,address)[])":"0d58b1db","transferFrom(address,address,uint160,address)":"36c78516"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"AllowanceExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExcessiveInvalidation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"Lockdown\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"oldNonce\",\"type\":\"uint48\"}],\"name\":\"NonceInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"name\":\"Permit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"newNonce\",\"type\":\"uint48\"}],\"name\":\"invalidateNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wordPos\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"invalidateUnorderedNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.TokenSpenderPair[]\",\"name\":\"approvals\",\"type\":\"tuple[]\"}],\"name\":\"lockdown\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonceBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct IAllowanceTransfer.AllowanceTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users must approve Permit2 before calling any of the transfer functions.\",\"errors\":{\"AllowanceExpired(uint256)\":[{\"params\":{\"deadline\":\"The timestamp at which the allowed amount is no longer valid\"}}],\"InsufficientAllowance(uint256)\":[{\"params\":{\"amount\":\"The maximum amount allowed\"}}],\"InvalidAmount(uint256)\":[{\"params\":{\"maxAmount\":\"The maximum amount a spender can request to transfer\"}}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}]},\"kind\":\"dev\",\"methods\":{\"allowance(address,address,address)\":{\"details\":\"The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\"},\"approve(address,address,uint160,uint48)\":{\"details\":\"The packed allowance also holds a nonce, which will stay unchanged in approveSetting amount to type(uint160).max sets an unlimited approval\",\"params\":{\"amount\":\"The approved amount of the token\",\"expiration\":\"The timestamp at which the approval is no longer valid\",\"spender\":\"The spender address to approve\",\"token\":\"The token to approve\"}},\"invalidateNonces(address,address,uint48)\":{\"details\":\"Can't invalidate more than 2**16 nonces per transaction.\",\"params\":{\"newNonce\":\"The new nonce to set. Invalidates all nonces less than it.\",\"spender\":\"The spender to invalidate nonces for\",\"token\":\"The token to invalidate nonces for\"}},\"invalidateUnorderedNonces(uint256,uint256)\":{\"details\":\"The wordPos is maxed at type(uint248).max\",\"params\":{\"mask\":\"A bitmap masked against msg.sender's current bitmap at the word position\",\"wordPos\":\"A number to index the nonceBitmap at\"}},\"lockdown((address,address)[])\":{\"params\":{\"approvals\":\"Array of approvals to revoke.\"}},\"nonceBitmap(address,uint256)\":{\"details\":\"Uses unordered nonces so that permit messages do not need to be spent in a certain orderThe mapping is indexed first by the token owner, then by an index specified in the nonceIt returns a uint256 bitmapThe index, or wordPosition is capped at type(uint248).max\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitSingle\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"May fail if the owner's nonce was invalidated in-flight by invalidateNonce\",\"params\":{\"owner\":\"The owner of the tokens being approved\",\"permitBatch\":\"Data signed over by the owner specifying the terms of approval\",\"signature\":\"The owner's signature over the permit data\"}},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"details\":\"Reverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\"}},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\"}},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definitionReverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"transferFrom((address,address,uint160,address)[])\":{\"details\":\"Requires the from addresses to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"transferDetails\":\"Array of owners, recipients, amounts, and tokens for the transfers\"}},\"transferFrom(address,address,uint160,address)\":{\"details\":\"Requires the from address to have approved at least the desired amount of tokens to msg.sender.\",\"params\":{\"amount\":\"The amount of the token to transfer\",\"from\":\"The address to transfer from\",\"to\":\"The address of the recipient\",\"token\":\"The token address to transfer\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AllowanceExpired(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has expired.\"}],\"ExcessiveInvalidation()\":[{\"notice\":\"Thrown when too many nonces are invalidated.\"}],\"InsufficientAllowance(uint256)\":[{\"notice\":\"Thrown when an allowance on a token has been depleted.\"}],\"InvalidAmount(uint256)\":[{\"notice\":\"Thrown when the requested amount for a transfer is larger than the permissioned amount\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}]},\"events\":{\"Approval(address,address,address,uint160,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions on a token for the spender.\"},\"Lockdown(address,address,address)\":{\"notice\":\"Emits an event when the owner sets the allowance back to 0 with the lockdown function.\"},\"NonceInvalidation(address,address,address,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully invalidates an ordered nonce.\"},\"Permit(address,address,address,uint160,uint48,uint48)\":{\"notice\":\"Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\"},\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,address)\":{\"notice\":\"A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\"},\"approve(address,address,uint160,uint48)\":{\"notice\":\"Approves the spender to use up to amount of the specified token up until the expiration\"},\"invalidateNonces(address,address,uint48)\":{\"notice\":\"Invalidate nonces for a given (token, spender) pair\"},\"invalidateUnorderedNonces(uint256,uint256)\":{\"notice\":\"Invalidates the bits specified in mask for the bitmap at the word position\"},\"lockdown((address,address)[])\":{\"notice\":\"Enables performing a \\\"lockdown\\\" of the sender's Permit2 identity by batch revoking approvals\"},\"nonceBitmap(address,uint256)\":{\"notice\":\"A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\"},\"permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"notice\":\"Transfers a token using a signed permit message\"},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit message\"},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"notice\":\"Transfers a token using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"transferFrom((address,address,uint160,address)[])\":{\"notice\":\"Transfer approved tokens in a batch\"},\"transferFrom(address,address,uint160,address)\":{\"notice\":\"Transfer approved tokens from one address to another\"}},\"notice\":\"Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/interfaces/IPermit2.sol\":\"IPermit2\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}},"permit2/src/interfaces/ISignatureTransfer.sol":{"ISignatureTransfer":{"abi":[{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"word","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mask","type":"uint256"}],"name":"UnorderedNonceInvalidation","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"wordPos","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"}],"name":"invalidateUnorderedNonces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonceBitmap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails","name":"transferDetails","type":"tuple"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct ISignatureTransfer.TokenPermissions[]","name":"permitted","type":"tuple[]"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ISignatureTransfer.PermitBatchTransferFrom","name":"permit","type":"tuple"},{"components":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"internalType":"struct ISignatureTransfer.SignatureTransferDetails[]","name":"transferDetails","type":"tuple[]"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"witness","type":"bytes32"},{"internalType":"string","name":"witnessTypeString","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permitWitnessTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","invalidateUnorderedNonces(uint256,uint256)":"3ff9dcb1","nonceBitmap(address,uint256)":"4fe02b44","permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)":"30f28b7a","permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)":"edd9444b","permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)":"137c29fe","permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)":"fe8ec1a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"UnorderedNonceInvalidation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wordPos\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mask\",\"type\":\"uint256\"}],\"name\":\"invalidateUnorderedNonces\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonceBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails\",\"name\":\"transferDetails\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions[]\",\"name\":\"permitted\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitBatchTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.SignatureTransferDetails[]\",\"name\":\"transferDetails\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"witness\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"witnessTypeString\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitWitnessTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Requires user's token approval on the Permit2 contract\",\"errors\":{\"InvalidAmount(uint256)\":[{\"params\":{\"maxAmount\":\"The maximum amount a spender can request to transfer\"}}],\"LengthMismatch()\":[{\"details\":\"If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\"}]},\"kind\":\"dev\",\"methods\":{\"invalidateUnorderedNonces(uint256,uint256)\":{\"details\":\"The wordPos is maxed at type(uint248).max\",\"params\":{\"mask\":\"A bitmap masked against msg.sender's current bitmap at the word position\",\"wordPos\":\"A number to index the nonceBitmap at\"}},\"nonceBitmap(address,uint256)\":{\"details\":\"Uses unordered nonces so that permit messages do not need to be spent in a certain orderThe mapping is indexed first by the token owner, then by an index specified in the nonceIt returns a uint256 bitmapThe index, or wordPosition is capped at type(uint248).max\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"details\":\"Reverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\"}},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\"}},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definitionReverts if the requested amount is greater than the permitted signed amount\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"The spender's requested transfer details for the permitted token\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"details\":\"The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\",\"params\":{\"owner\":\"The owner of the tokens to transfer\",\"permit\":\"The permit data signed over by the owner\",\"signature\":\"The signature to verify\",\"transferDetails\":\"Specifies the recipient and requested amount for the token transfer\",\"witness\":\"Extra data to include when checking the user signature\",\"witnessTypeString\":\"The EIP-712 type definition for remaining string stub of the typehash\"}}},\"title\":\"SignatureTransfer\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidAmount(uint256)\":[{\"notice\":\"Thrown when the requested amount for a transfer is larger than the permissioned amount\"}],\"LengthMismatch()\":[{\"notice\":\"Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\"}]},\"events\":{\"UnorderedNonceInvalidation(address,uint256,uint256)\":{\"notice\":\"Emits an event when the owner successfully invalidates an unordered nonce.\"}},\"kind\":\"user\",\"methods\":{\"invalidateUnorderedNonces(uint256,uint256)\":{\"notice\":\"Invalidates the bits specified in mask for the bitmap at the word position\"},\"nonceBitmap(address,uint256)\":{\"notice\":\"A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\"},\"permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)\":{\"notice\":\"Transfers a token using a signed permit message\"},\"permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit message\"},\"permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)\":{\"notice\":\"Transfers a token using a signed permit messageIncludes extra data provided by the caller to verify signature over\"},\"permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)\":{\"notice\":\"Transfers multiple tokens using a signed permit messageIncludes extra data provided by the caller to verify signature over\"}},\"notice\":\"Handles ERC20 token transfers through signature based actions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"permit2/src/interfaces/ISignatureTransfer.sol\":\"ISignatureTransfer\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf [ xa[r]EscLM cCTUtTOntnfDIul Lcul Vcul [j] Tpeul xa[rul] xa[r]cL gvif CTUca[r]LSsTFOtfDnca[r]Iulc ] jmul[jul] VcTOcul jmul : fDnTOcmu\",\"stackAllocation\":true}},\"runs\":9999},\"remappings\":[],\"viaIR\":true},\"sources\":{\"permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/v3/tasks/20241205-v3-weighted-pool/index.ts b/v3/tasks/20241205-v3-weighted-pool/index.ts new file mode 100644 index 00000000..5fe5cfe3 --- /dev/null +++ b/v3/tasks/20241205-v3-weighted-pool/index.ts @@ -0,0 +1,86 @@ +import { ZERO_ADDRESS, ZERO_BYTES32 } from '@helpers/constants'; +import { fp } from '@helpers/numbers'; +import * as expectEvent from '@helpers/expectEvent'; + +import { saveContractDeploymentTransactionHash } from '@src'; +import { Task, TaskMode, TaskRunOptions } from '@src'; +import { WeightedPoolDeployment } from './input'; + +export default async (task: Task, { force, from }: TaskRunOptions = {}): Promise => { + const input = task.input() as WeightedPoolDeployment; + + const args = [input.Vault, input.PauseWindowDuration, input.FactoryVersion, input.PoolVersion]; + const factory = await task.deployAndVerify('WeightedPoolFactory', args, from, force); + + if (task.mode === TaskMode.LIVE) { + const tokenConfig = [ + { + token: input.WETH, + tokenType: 0, + rateProvider: ZERO_ADDRESS, + paysYieldFees: false, + }, + { + token: input.BAL, + tokenType: 0, + rateProvider: ZERO_ADDRESS, + paysYieldFees: false, + }, + ].sort(function (a, b) { + return a.token.toLowerCase().localeCompare(b.token.toLowerCase()); + }); + + const newWeightedPoolParams = { + name: 'DO NOT USE - Mock Weighted Pool', + symbol: 'TEST', + tokens: tokenConfig, + normalizedWeights: [fp(0.8), fp(0.2)], + roleAccounts: { + pauseManager: ZERO_ADDRESS, + swapFeeManager: ZERO_ADDRESS, + poolCreator: ZERO_ADDRESS, + }, + swapFeePercentage: fp(0.01), + hooksAddress: ZERO_ADDRESS, + enableDonations: false, + disableUnbalancedLiquidity: false, + salt: ZERO_BYTES32, + }; + + // This mimics the logic inside task.deploy + if (force || !task.output({ ensure: false })['MockWeightedPool']) { + const poolCreationReceipt = await ( + await factory.create( + newWeightedPoolParams.name, + newWeightedPoolParams.symbol, + newWeightedPoolParams.tokens, + newWeightedPoolParams.normalizedWeights, + newWeightedPoolParams.roleAccounts, + newWeightedPoolParams.swapFeePercentage, + newWeightedPoolParams.hooksAddress, + newWeightedPoolParams.enableDonations, + newWeightedPoolParams.disableUnbalancedLiquidity, + newWeightedPoolParams.salt + ) + ).wait(); + const event = expectEvent.inReceipt(poolCreationReceipt, 'PoolCreated'); + const mockPoolAddress = event.args.pool; + + await saveContractDeploymentTransactionHash(mockPoolAddress, poolCreationReceipt.transactionHash, task.network); + await task.save({ MockWeightedPool: mockPoolAddress }); + } + + const mockPool = await task.instanceAt('WeightedPool', task.output()['MockWeightedPool']); + + const poolParams = { + name: newWeightedPoolParams.name, + symbol: newWeightedPoolParams.symbol, + numTokens: newWeightedPoolParams.tokens.length, + normalizedWeights: newWeightedPoolParams.normalizedWeights, + version: await factory.getPoolVersion(), + }; + + // We are now ready to verify the Pool + await task.verify('WeightedPool', mockPool.address, [poolParams, input.Vault]); + } +}; diff --git a/v3/tasks/20241205-v3-weighted-pool/input.ts b/v3/tasks/20241205-v3-weighted-pool/input.ts new file mode 100644 index 00000000..a3a013ac --- /dev/null +++ b/v3/tasks/20241205-v3-weighted-pool/input.ts @@ -0,0 +1,26 @@ +import { MONTH } from '@helpers/time'; +import { Task, TaskMode } from '@src'; + +export type WeightedPoolDeployment = { + Vault: string; + PauseWindowDuration: number; + WETH: string; + BAL: string; + FactoryVersion: string; + PoolVersion: string; +}; + +const Vault = new Task('20241204-v3-vault', TaskMode.READ_ONLY); +const WETH = new Task('00000000-tokens', TaskMode.READ_ONLY); +const BAL = new Task('00000000-tokens', TaskMode.READ_ONLY); + +const BaseVersion = { version: 1, deployment: '20241205-v3-weighted-pool' }; + +export default { + Vault, + PauseWindowDuration: 4 * 12 * MONTH, + WETH, + BAL, + FactoryVersion: JSON.stringify({ name: 'WeightedPoolFactory', ...BaseVersion }), + PoolVersion: JSON.stringify({ name: 'WeightedPool', ...BaseVersion }), +}; diff --git a/v3/tasks/20241205-v3-weighted-pool/readme.md b/v3/tasks/20241205-v3-weighted-pool/readme.md new file mode 100644 index 00000000..88ee410b --- /dev/null +++ b/v3/tasks/20241205-v3-weighted-pool/readme.md @@ -0,0 +1,10 @@ +# V3 Weighted pool + +Deployment of the `WeightedPoolFactory` for Balancer V3. +Pools from this factory use weighted math, which is best suited for uncorrelated assets (full price range). + +## Useful Files + +- [Code](https://github.com/balancer/balancer-v3-monorepo/commit/25d73b3d091f5dde943ad6b7d90db9569222510d). +- [`WeightedPoolFactory` artifact](./artifact/WeightedPoolFactory.json) +- [`WeightedPool` artifact](./artifact/WeightedPool.json) diff --git a/v3/tasks/20241205-v3-weighted-pool/test/task.fork.ts b/v3/tasks/20241205-v3-weighted-pool/test/task.fork.ts new file mode 100644 index 00000000..7090f488 --- /dev/null +++ b/v3/tasks/20241205-v3-weighted-pool/test/task.fork.ts @@ -0,0 +1,85 @@ +import hre from 'hardhat'; +import { expect } from 'chai'; +import { Contract } from 'ethers'; +import { describeForkTest, getForkedNetwork, Task, TaskMode } from '@src'; +import * as expectEvent from '@helpers/expectEvent'; +import { ONES_BYTES32, ZERO_ADDRESS } from '@helpers/constants'; +import { fp } from '@helpers/numbers'; +import { WeightedPoolDeployment } from '../input'; + +describeForkTest('WeightedPool-V3', 'mainnet', 21336200, function () { + let task: Task; + let factory: Contract, pool: Contract; + let input: WeightedPoolDeployment; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let tokenConfig: any[]; + + before('run task', async () => { + task = new Task('20241205-v3-weighted-pool', TaskMode.TEST, getForkedNetwork(hre)); + await task.run({ force: true }); + factory = await task.deployedInstance('WeightedPoolFactory'); + }); + + before('setup contracts and parameters', async () => { + input = task.input() as WeightedPoolDeployment; + tokenConfig = [ + { + token: input.WETH, + tokenType: 0, + rateProvider: ZERO_ADDRESS, + paysYieldFees: false, + }, + { + token: input.BAL, + tokenType: 0, + rateProvider: ZERO_ADDRESS, + paysYieldFees: false, + }, + ].sort(function (a, b) { + return a.token.toLowerCase().localeCompare(b.token.toLowerCase()); + }); + }); + + it('deploys pool', async () => { + const newWeightedPoolParams = { + name: 'Mock Weighted Pool', + symbol: 'TEST', + tokens: tokenConfig, + normalizedWeights: [fp(0.8), fp(0.2)], + roleAccounts: { + pauseManager: ZERO_ADDRESS, + swapFeeManager: ZERO_ADDRESS, + poolCreator: ZERO_ADDRESS, + }, + swapFeePercentage: fp(0.01), + hooksAddress: ZERO_ADDRESS, + enableDonations: false, + disableUnbalancedLiquidity: false, + salt: ONES_BYTES32, + }; + + const poolCreationReceipt = await ( + await factory.create( + newWeightedPoolParams.name, + newWeightedPoolParams.symbol, + newWeightedPoolParams.tokens, + newWeightedPoolParams.normalizedWeights, + newWeightedPoolParams.roleAccounts, + newWeightedPoolParams.swapFeePercentage, + newWeightedPoolParams.hooksAddress, + newWeightedPoolParams.enableDonations, + newWeightedPoolParams.disableUnbalancedLiquidity, + newWeightedPoolParams.salt + ) + ).wait(); + + const event = expectEvent.inReceipt(poolCreationReceipt, 'PoolCreated'); + pool = await task.instanceAt('WeightedPool', event.args.pool); + }); + + it('checks pool tokens', async () => { + const poolTokens = (await pool.getTokens()).map((token: string) => token.toLowerCase()); + expect(poolTokens).to.be.deep.eq(tokenConfig.map((config) => config.token.toLowerCase())); + }); +});